[
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\nindent_style = space\nindent_size = 4\ntrim_trailing_whitespace = true\n\n[*.md]\ntrim_trailing_whitespace = false\n\n[*.{yml,yaml}]\nindent_size = 2\n"
  },
  {
    "path": ".gitattributes",
    "content": "* text=auto\n*.css linguist-vendored\n*.scss linguist-vendored\n*.js linguist-vendored\nCHANGELOG.md export-ignore\n"
  },
  {
    "path": ".gitignore",
    "content": "/node_modules\n/public/hot\n/public/storage\n/public/uploads\n/storage/*.key\n/vendor\n.env\n.env.backup\n.phpunit.result.cache\nHomestead.json\nHomestead.yaml\nnpm-debug.log\nyarn-error.log\n.idea\ninstall.lock\n.env.buck\n"
  },
  {
    "path": ".styleci.yml",
    "content": "php:\n  preset: laravel\n  disabled:\n    - unused_use\n  finder:\n    not-name:\n      - index.php\n      - server.php\njs:\n  finder:\n    not-name:\n      - webpack.mix.js\ncss: true\n"
  },
  {
    "path": "Dockerfile",
    "content": "FROM webdevops/php-nginx:7.4\nCOPY . /app\nWORKDIR /app\nRUN [ \"sh\", \"-c\", \"composer install --ignore-platform-reqs\" ]\nRUN echo \"#!/bin/bash\\nphp artisan queue:work >/tmp/work.log 2>&1 &\\nsupervisord\" > /app/start.sh\nRUN [ \"sh\", \"-c\", \"chmod -R 777 /app\" ]\nCMD [ \"sh\", \"-c\",\"/app/start.sh\" ]\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2023 assimon/dujiaoka\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\"><img src=\"https://i.loli.net/2020/04/07/nAzjDJlX7oc5qEw.png\" width=\"400\"></p>\n<p align=\"center\">\n<a href=\"https://opensource.org/licenses/MIT\"><img src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"license MIT\"></a>\n<a href=\"https://github.com/assimon/dujiaoka/releases/tag/2.0.4\"><img src=\"https://img.shields.io/badge/version-2.0.4-red\" alt=\"version 2.0.4\"></a>\n<a href=\"https://www.php.net/releases/7_4_0.php\"><img src=\"https://img.shields.io/badge/PHP-7.4-lightgrey\" alt=\"php74\"></a>\n</p>\n\n<div align=\"center\">\n  <a href=\"https://www.vmrack.net/?ref_code=5iXmGUMf5f5\">\n    <img src=\"https://files.seeusercontent.com/2026/03/12/2mXf/photo_2026-03-12_10-13-12.jpg\" width=\"400\">\n  </a>\n  <p align=\"center\"><a href=\"https://www.vmrack.net/?ref_code=5iXmGUMf5f5\">vmrack.net - 全球自动化云基础设施服务商\n    提供先进的云服务器、裸金属、CDN、媒体处理、对象存储和网络解决方案，助力企业轻松上云</a></p>\n</div>\n\n## 📢停更通知2026/02/12\n\n### 项目已经停止更新和维护，请前往新版[Dujiao-Next(dujiao-next.com)](https://dujiao-next.com)\n"
  },
  {
    "path": "app/Admin/Actions/Post/BatchRestore.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Admin\\Actions\\Post;\n\n\nuse Dcat\\Admin\\Grid\\BatchAction;\nuse Illuminate\\Http\\Request;\n\nclass BatchRestore extends BatchAction\n{\n\n    protected $title;\n\n    protected $model;\n\n    // 注意构造方法的参数必须要有默认值\n    public function __construct(string $model = null)\n    {\n        $this->title = admin_trans('dujiaoka.restore');\n        $this->model = $model;\n    }\n\n    public function handle(Request $request)\n    {\n        $model = $request->get('model');\n\n        foreach ((array) $this->getKey() as $key) {\n            $model::withTrashed()->findOrFail($key)->restore();\n        }\n\n        return $this->response()->success(admin_trans('dujiaoka.restored'))->refresh();\n    }\n\n    public function confirm()\n    {\n        return [admin_trans('dujiaoka.are_you_restore_sure')];\n    }\n\n    public function parameters()\n    {\n        return [\n            'model' => $this->model,\n        ];\n    }\n\n}\n"
  },
  {
    "path": "app/Admin/Actions/Post/Restore.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Admin\\Actions\\Post;\n\n\nuse Dcat\\Admin\\Grid\\RowAction;\nuse Illuminate\\Http\\Request;\n\nclass Restore extends RowAction\n{\n\n    protected $title;\n\n    protected $model;\n\n    // 注意构造方法的参数必须要有默认值\n    public function __construct(string $model = null)\n    {\n        $this->title = admin_trans('dujiaoka.restore');\n        $this->model = $model;\n    }\n\n    public function handle(Request $request)\n    {\n        $key = $this->getKey();\n        $model = $request->get('model');\n\n        $model::withTrashed()->findOrFail($key)->restore();\n\n        return $this->response()->success(admin_trans('dujiaoka.restored'))->refresh();\n    }\n\n    public function confirm()\n    {\n        return [admin_trans('dujiaoka.are_you_restore_sure')];\n    }\n\n    public function parameters()\n    {\n        return [\n            'model' => $this->model,\n        ];\n    }\n\n}\n"
  },
  {
    "path": "app/Admin/Charts/DashBoard.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Admin\\Charts;\n\n\nuse App\\Models\\Order;\nuse Dcat\\Admin\\Widgets\\Metrics\\RadialBar;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Support\\Facades\\DB;\n\nclass DashBoard extends RadialBar\n{\n\n    /**\n     * 初始化卡片内容\n     */\n    protected function init()\n    {\n        parent::init();\n\n        $this->title(admin_trans('dujiaoka.sales_data'));\n        $this->height(400);\n        $this->chartHeight(300);\n        $this->chartLabels(admin_trans('dujiaoka.order_success_rate'));\n        $this->dropdown([\n            'today' => admin_trans('dujiaoka.last_today'),\n            'seven' => admin_trans('dujiaoka.last_seven_days'),\n            'month' => admin_trans('dujiaoka.last_month'),\n            'year' => admin_trans('dujiaoka.last_year'),\n        ]);\n    }\n\n    /**\n     * 处理请求\n     *\n     * @param Request $request\n     *\n     * @return mixed|void\n     */\n    public function handle(Request $request)\n    {\n        $endTime = Carbon::now();\n        switch ($request->get('option')) {\n            case 'seven':\n                $startTime = Carbon::now()->subDays(7);\n                break;\n            case 'month':\n                $startTime = Carbon::now()->subDays(30);\n                break;\n            case 'year':\n                $startTime = Carbon::now()->subDays(365);\n                break;\n            case 'today':\n            default:\n                $startTime = Carbon::today();\n        }\n        // 分组查询\n        $orderGroup = Order::query()\n            ->where('created_at', '>=', $startTime)\n            ->where('created_at', '<=', $endTime)\n            ->select('status', DB::raw('count(id) as num'))\n            ->groupBy('status')\n            ->pluck('num', 'status')\n            ->toArray();\n        $pending = $orderGroup[Order::STATUS_PENDING] ?? 0;\n        $processing = $orderGroup[Order::STATUS_PROCESSING] ?? 0;\n        $completed = $orderGroup[Order::STATUS_COMPLETED] ?? 0;\n        $failure = $orderGroup[Order::STATUS_FAILURE] ?? 0;\n        $abnormal = $orderGroup[Order::STATUS_ABNORMAL] ?? 0;\n        $orderCount = array_sum($orderGroup);\n        if ($orderCount == 0) {\n            $successRate = 0;\n        } else {\n            $rate = bcdiv($completed, $orderCount, 2);\n            $successRate = bcmul($rate, 100);\n        }\n        // 订单数\n        $this->withOrderCount($orderCount);\n        // 卡片底部\n        $this->withFooter($pending, $processing, $completed, $failure, $abnormal);\n        // 图表数据\n        $this->withChart($successRate);\n    }\n\n    /**\n     * 订单总数\n     *\n     * @param $count\n     * @return DashBoard\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function withOrderCount($count)\n    {\n        $title = admin_trans('dujiaoka.order_count_number');\n        return $this->content(\n            <<<HTML\n<div class=\"d-flex flex-column flex-wrap text-center\">\n    <h1 class=\"font-lg-2 mt-2 mb-0\">{$count}</h1>\n    <small>{$title}</small>\n</div>\nHTML\n        );\n    }\n\n    /**\n     * 成交率.\n     *\n     * @param int $data\n     *\n     * @return $this\n     */\n    public function withChart(int $data)\n    {\n        return $this->chart([\n            'series' => [$data],\n        ]);\n    }\n\n    /**\n     * @param $pending\n     * @param $processing\n     * @param $completed\n     * @param $failure\n     * @param $abnormal\n     * @return DashBoard\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function withFooter($pending, $processing, $completed, $failure, $abnormal)\n    {\n        $statusPendingTitle = admin_trans('dujiaoka.status_pending_number');\n        $statusProcessingNumber = admin_trans('dujiaoka.status_processing_number');\n        $statusCompletedNumber = admin_trans('dujiaoka.status_completed_number');\n        $statusFailureNumber = admin_trans('dujiaoka.status_failure_number');\n        $statusAbnormalNumber = admin_trans('dujiaoka.status_abnormal_number');\n        return $this->footer(\n            <<<HTML\n<div class=\"d-flex justify-content-between p-1\" style=\"padding-top: 0!important;\">\n    <div class=\"text-center\">\n        <p>{$statusPendingTitle}</p>\n        <span class=\"font-lg-1\">{$pending}</span>\n    </div>\n    <div class=\"text-center\">\n        <p>{$statusProcessingNumber}</p>\n        <span class=\"font-lg-1\">{$processing}</span>\n    </div>\n    <div class=\"text-center\">\n        <p>{$statusCompletedNumber}</p>\n        <span class=\"font-lg-1\">{$completed}</span>\n    </div>\n    <div class=\"text-center\">\n        <p>{$statusFailureNumber}</p>\n        <span class=\"font-lg-1\">{$failure}</span>\n    </div>\n    <div class=\"text-center\">\n        <p>{$statusAbnormalNumber}</p>\n        <span class=\"font-lg-1\">{$abnormal}</span>\n    </div>\n</div>\nHTML\n        );\n    }\n}\n"
  },
  {
    "path": "app/Admin/Charts/PayoutRateCard.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Admin\\Charts;\n\n\nuse App\\Models\\Order;\nuse Dcat\\Admin\\Admin;\nuse Dcat\\Admin\\Widgets\\Metrics\\Donut;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Carbon;\n\nclass PayoutRateCard extends Donut\n{\n\n    protected $labels;\n\n    /**\n     * 初始化卡片内容\n     */\n    protected function init()\n    {\n        parent::init();\n\n        $this->labels = [admin_trans('dujiaoka.payment_successful_number'), admin_trans('dujiaoka.unpaid_number')];\n        $color = Admin::color();\n        $colors = [$color->primary(), $color->alpha('blue2', 0.5)];\n\n        $this->title(admin_trans('dujiaoka.payment_chart'));\n        $this->chartLabels($this->labels);\n        // 设置图表颜色\n        $this->chartColors($colors);\n        $this->dropdown([\n            'seven' => admin_trans('dujiaoka.last_seven_days'),\n            'today' => admin_trans('dujiaoka.last_today'),\n            'month' => admin_trans('dujiaoka.last_month'),\n            'year' => admin_trans('dujiaoka.last_year'),\n        ]);\n    }\n\n    /**\n     * 处理请求\n     *\n     * @param Request $request\n     *\n     * @return mixed|void\n     */\n    public function handle(Request $request)\n    {\n        $endTime = Carbon::now();\n        switch ($request->get('option')) {\n            case 'seven':\n                $startTime = Carbon::now()->subDays(7);\n                break;\n            case 'month':\n                $startTime = Carbon::now()->subDays(30);\n                break;\n            case 'year':\n                $startTime = Carbon::now()->subDays(365);\n                break;\n            case 'today':\n                $startTime = Carbon::today();\n                break;\n            default:\n                $startTime =  Carbon::now()->subDays(7);\n        }\n        // 成功的数量\n        $success = Order::query()\n            ->where('created_at', '>=', $startTime)\n            ->where('created_at', '<=', $endTime)\n            ->where('status', '>', Order::STATUS_WAIT_PAY)\n            ->count();\n        // 待支付的数量\n        $unpaid = Order::query()\n            ->where('created_at', '>=', $startTime)\n            ->where('created_at', '<=', $endTime)\n            ->where('status', '<=', Order::STATUS_WAIT_PAY)\n            ->count();\n        $this->withContent($success, $unpaid);\n        // 图表数据\n        $this->withChart([$success, $unpaid]);\n    }\n\n    /**\n     * 设置图表数据.\n     *\n     * @param array $data\n     *\n     * @return $this\n     */\n    public function withChart(array $data)\n    {\n        return $this->chart([\n            'series' => $data\n        ]);\n    }\n\n    /**\n     * 设置卡片头部内容.\n     *\n     * @param mixed $success\n     * @param mixed $unpaid\n     *\n     * @return $this\n     */\n    protected function withContent($success, $unpaid)\n    {\n        $blue = Admin::color()->alpha('blue2', 0.5);\n\n        $style = 'margin-bottom: 8px';\n        $labelWidth = 120;\n\n        return $this->content(\n            <<<HTML\n<div class=\"d-flex pl-1 pr-1 pt-1\" style=\"{$style}\">\n    <div style=\"width: {$labelWidth}px\">\n        <i class=\"fa fa-circle text-primary\"></i> {$this->labels[0]}\n    </div>\n    <div>{$success}</div>\n</div>\n<div class=\"d-flex pl-1 pr-1\" style=\"{$style}\">\n    <div style=\"width: {$labelWidth}px\">\n        <i class=\"fa fa-circle\" style=\"color: $blue\"></i> {$this->labels[1]}\n    </div>\n    <div>{$unpaid}</div>\n</div>\nHTML\n        );\n    }\n\n}\n"
  },
  {
    "path": "app/Admin/Charts/SalesCard.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Admin\\Charts;\n\n\nuse App\\Models\\Order;\nuse Dcat\\Admin\\Admin;\nuse Dcat\\Admin\\Widgets\\Metrics\\Bar;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Support\\Facades\\DB;\n\nclass SalesCard extends Bar\n{\n\n    /**\n     * 初始化卡片内容\n     */\n    protected function init()\n    {\n        parent::init();\n\n        $color = Admin::color();\n\n        $dark35 = $color->dark35();\n\n        // 卡片内容宽度\n        $this->contentWidth(5, 7);\n        // 标题\n        $this->title(admin_trans('dujiaoka.sales_chart'));\n        // 设置下拉选项\n        $this->dropdown([\n            'seven' => admin_trans('dujiaoka.last_seven_days'),\n            'today' => admin_trans('dujiaoka.last_today'),\n            'month' => admin_trans('dujiaoka.last_month'),\n        ]);\n        // 设置图表颜色\n        $this->chartColors([\n            $dark35,\n            $color->primary(),\n        ]);\n    }\n\n    /**\n     * 处理请求\n     *\n     * @param Request $request\n     *\n     * @return mixed|void\n     */\n    public function handle(Request $request)\n    {\n        $endTime = Carbon::now();\n        switch ($request->get('option')) {\n            case 'seven':\n                $startTime = Carbon::now()->subDays(7);\n                break;\n            case 'month':\n                $startTime = Carbon::now()->subDays(30);\n                break;\n            case 'today':\n                $startTime = Carbon::today();\n                break;\n            default:\n                $startTime =  Carbon::now()->subDays(7);\n        }\n        // 分组查询\n        $orderGroup = Order::query()\n            ->where('created_at', '>=', $startTime)\n            ->where('created_at', '<=', $endTime)\n            ->where('status', '>', Order::STATUS_PENDING)\n            ->select(DB::raw('DATE(created_at) as date'), DB::raw('sum(actual_price) as actual_price'))\n            ->groupBy('date')\n            ->pluck('actual_price')\n            ->toArray();\n        $totalPrice = array_sum($orderGroup);\n        $this->withContent($totalPrice, '', '', $startTime, $endTime);\n        $this->withChart([\n            [\n                'name' => admin_trans('dujiaoka.sales_chart'),\n                'data' => $orderGroup,\n            ]\n        ]);\n    }\n\n    /**\n     * 设置图表数据.\n     *\n     * @param array $data\n     *\n     * @return $this\n     */\n    public function withChart(array $data)\n    {\n        return $this->chart([\n            'series' => $data,\n        ]);\n    }\n\n    /**\n     * 设置卡片内容.\n     *\n     * @param string $title\n     * @param string $value\n     * @param string $style\n     *\n     * @return $this\n     */\n    public function withContent($title, $value, $style = 'success', $startTime, $endTime)\n    {\n        $minHeight = '183px';\n        $uri = admin_route('order.index', [\n            'created_at[start]' => $startTime->format('Y-m-d H:i:s'),\n            'created_at[end]' => $endTime->format('Y-m-d H:i:s')\n        ]);\n        return $this->content(\n            <<<HTML\n<div class=\"d-flex p-1 flex-column justify-content-between\" style=\"padding-top: 0;width: 100%;height: 100%;min-height: {$minHeight}\">\n    <div class=\"text-left\">\n        <h1 class=\"font-lg-2 mt-2 mb-0\">{$title}￥</h1>\n        <h5 class=\"font-medium-2\" style=\"margin-top: 10px;\">\n            <span class=\"text-{$style}\">{$value} </span>\n        </h5>\n    </div>\n\n    <a href=\"{$uri}\" class=\"btn btn-primary shadow waves-effect waves-light\">View Details <i class=\"feather icon-chevrons-right\"></i></a>\n</div>\nHTML\n        );\n    }\n\n}\n"
  },
  {
    "path": "app/Admin/Charts/SuccessOrderCard.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Admin\\Charts;\n\n\nuse App\\Models\\Order;\nuse Dcat\\Admin\\Widgets\\Metrics\\Line;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Support\\Facades\\DB;\n\nclass SuccessOrderCard extends Line\n{\n\n    /**\n     * 初始化卡片内容\n     *\n     * @return void\n     */\n    protected function init()\n    {\n        parent::init();\n\n        $this->title(admin_trans('dujiaoka.status_completed_number'));\n        $this->dropdown([\n            'seven' => admin_trans('dujiaoka.last_seven_days'),\n            'today' => admin_trans('dujiaoka.last_today'),\n            'month' => admin_trans('dujiaoka.last_month'),\n        ]);\n    }\n\n    /**\n     * 处理请求\n     *\n     * @param Request $request\n     *\n     * @return mixed|void\n     */\n    public function handle(Request $request)\n    {\n        $endTime = Carbon::now();\n        switch ($request->get('option')) {\n            case 'seven':\n                $startTime = Carbon::now()->subDays(7);\n                break;\n            case 'month':\n                $startTime = Carbon::now()->subDays(30);\n                break;\n            case 'today':\n                $startTime = Carbon::today();\n                break;\n            default:\n                $startTime =  Carbon::now()->subDays(7);\n        }\n        // 分组查询\n        $orderGroup = Order::query()\n            ->where('created_at', '>=', $startTime)\n            ->where('created_at', '<=', $endTime)\n            ->where('status', Order::STATUS_COMPLETED)\n            ->select(DB::raw('DATE(created_at) as date'), DB::raw('count(id) as num'))\n            ->groupBy('date')\n            ->pluck('num')\n            ->toArray();\n        $successCount = array_sum($orderGroup);\n        // 卡片内容\n        $this->withContent($successCount);\n        // 图表数据\n        $this->withChart($orderGroup);\n    }\n\n    /**\n     * 设置图表数据.\n     *\n     * @param array $data\n     *\n     * @return $this\n     */\n    public function withChart(array $data)\n    {\n        return $this->chart([\n            'series' => [\n                [\n                    'name' => $this->title,\n                    'data' => $data,\n                ],\n            ],\n        ]);\n    }\n\n    /**\n     * 设置卡片内容.\n     *\n     * @param string $content\n     *\n     * @return $this\n     */\n    public function withContent($content)\n    {\n        return $this->content(\n            <<<HTML\n<div class=\"d-flex justify-content-between align-items-center mt-1\" style=\"margin-bottom: 2px\">\n    <h2 class=\"ml-1 font-lg-1\">{$content}</h2>\n    <span class=\"mb-0 mr-1 text-80\">{$this->title}</span>\n</div>\nHTML\n        );\n    }\n\n}\n"
  },
  {
    "path": "app/Admin/Controllers/AuthController.php",
    "content": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse Dcat\\Admin\\Http\\Controllers\\AuthController as BaseAuthController;\n\nclass AuthController extends BaseAuthController\n{\n}\n"
  },
  {
    "path": "app/Admin/Controllers/CarmisController.php",
    "content": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Admin\\Actions\\Post\\BatchRestore;\nuse App\\Admin\\Actions\\Post\\Restore;\nuse App\\Admin\\Forms\\ImportCarmis;\nuse App\\Admin\\Repositories\\Carmis;\nuse App\\Models\\Goods;\nuse Dcat\\Admin\\Form;\nuse Dcat\\Admin\\Grid;\nuse Dcat\\Admin\\Layout\\Content;\nuse Dcat\\Admin\\Show;\nuse Dcat\\Admin\\Http\\Controllers\\AdminController;\nuse App\\Models\\Carmis as CarmisModel;\nuse Dcat\\Admin\\Widgets\\Card;\n\nclass CarmisController extends AdminController\n{\n\n\n    /**\n     * Make a grid builder.\n     *\n     * @return Grid\n     */\n    protected function grid()\n    {\n        return Grid::make(new Carmis(['goods']), function (Grid $grid) {\n            $grid->model()->orderBy('id', 'DESC');\n            $grid->column('id')->sortable();\n            $grid->column('goods.gd_name', admin_trans('carmis.fields.goods_id'));\n            $grid->column('status')->select(CarmisModel::getStatusMap());\n            $grid->column('is_loop')->display(function($v){return $v==1?admin_trans('carmis.fields.yes'):\"\";});\n            $grid->column('carmi')->limit(20);\n            $grid->column('created_at');\n            $grid->column('updated_at')->sortable();\n            $grid->filter(function (Grid\\Filter $filter) {\n                $filter->equal('id');\n                $filter->equal('goods_id')->select(\n                    Goods::query()->where('type', Goods::AUTOMATIC_DELIVERY)->pluck('gd_name', 'id')\n                );\n                $filter->equal('status')->select(CarmisModel::getStatusMap());\n                $filter->scope(admin_trans('dujiaoka.trashed'))->onlyTrashed();\n            });\n            $grid->actions(function (Grid\\Displayers\\Actions $actions) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $actions->append(new Restore(CarmisModel::class));\n                }\n            });\n            $grid->batchActions(function (Grid\\Tools\\BatchActions $batch) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $batch->add(new BatchRestore(CarmisModel::class));\n                }\n            });\n            $grid->export()->titles(['goods.gd_name' => admin_trans('carmis.fields.goods_id'), 'carmi' => admin_trans('carmis.fields.carmi'), 'created_at' => admin_trans('admin.created_at')]);\n        });\n    }\n\n    /**\n     * Make a show builder.\n     *\n     * @param mixed $id\n     *\n     * @return Show\n     */\n    protected function detail($id)\n    {\n        return Show::make($id, new Carmis(['goods']), function (Show $show) {\n            $show->field('id');\n            $show->field('goods.gd_name', admin_trans('carmis.fields.goods_id'));\n            $show->field('status')->as(function ($type) {\n                if ($type == CarmisModel::STATUS_UNSOLD) {\n                    return admin_trans('carmis.fields.status_unsold');\n                } else {\n                    return admin_trans('carmis.fields.status_sold');\n                }\n            });\n\t\t\t$show->field('is_loop')->as(function ($v) {return $v==1?admin_trans('carmis.fields.yes'):\"\";});\n            $show->field('carmi');\n            $show->field('created_at');\n            $show->field('updated_at');\n        });\n    }\n\n    /**\n     * Make a form builder.\n     *\n     * @return Form\n     */\n    protected function form()\n    {\n        return Form::make(new Carmis(), function (Form $form) {\n            $form->display('id');\n            $form->select('goods_id')->options(\n                Goods::query()->where('type', Goods::AUTOMATIC_DELIVERY)->pluck('gd_name', 'id')\n            )->required();\n            $form->radio('status')\n                ->options(CarmisModel::getStatusMap())\n                ->default(CarmisModel::STATUS_UNSOLD);\n            $form->switch('is_loop')->default(false);\n            $form->textarea('carmi')->required();\n            $form->display('created_at');\n            $form->display('updated_at');\n        });\n    }\n\n    /**\n     * 导入卡密\n     *\n     * @param Content $content\n     * @return Content\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function importCarmis(Content $content)\n    {\n        return $content\n            ->title(admin_trans('carmis.fields.import_carmis'))\n            ->body(new Card(new ImportCarmis()));\n    }\n}\n"
  },
  {
    "path": "app/Admin/Controllers/CouponController.php",
    "content": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Admin\\Actions\\Post\\BatchRestore;\nuse App\\Admin\\Actions\\Post\\Restore;\nuse App\\Admin\\Repositories\\Coupon;\nuse App\\Models\\Goods;\nuse Dcat\\Admin\\Admin;\nuse Dcat\\Admin\\Form;\nuse Dcat\\Admin\\Grid;\nuse Dcat\\Admin\\Show;\nuse Dcat\\Admin\\Http\\Controllers\\AdminController;\nuse App\\Models\\Coupon as CouponModel;\n\nclass CouponController extends AdminController\n{\n\n    /**\n     * Make a grid builder.\n     *\n     * @return Grid\n     */\n    protected function grid()\n    {\n        return Grid::make(new Coupon(['goods']), function (Grid $grid) {\n            $grid->model()->orderBy('id', 'DESC');\n            $grid->column('id')->sortable();\n            $grid->column('discount');\n            $grid->column('is_use')->select(CouponModel::getStatusUseMap());\n            $grid->column('is_open')->switch();\n            $grid->column('coupon')->copyable();\n            $grid->column('ret');\n            $grid->column('created_at');\n            $grid->column('updated_at')->sortable();\n            $grid->actions(function (Grid\\Displayers\\Actions $actions) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $actions->append(new Restore(CouponModel::class));\n                }\n            });\n            $grid->batchActions(function (Grid\\Tools\\BatchActions $batch) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $batch->add(new BatchRestore(CouponModel::class));\n                }\n            });\n            $grid->filter(function (Grid\\Filter $filter) {\n                $filter->equal('id');\n                $filter->equal('goods.goods_id', admin_trans('coupon.fields.goods_id'))->select(\n                    Goods::query()->pluck('gd_name', 'id')\n                );\n                $filter->scope(admin_trans('dujiaoka.trashed'))->onlyTrashed();\n            });\n        });\n    }\n\n    /**\n     * Make a show builder.\n     *\n     * @param mixed $id\n     *\n     * @return Show\n     */\n    protected function detail($id)\n    {\n        return Show::make($id, new Coupon(), function (Show $show) {\n            $show->field('id');\n            $show->field('discount');\n            $show->field('is_use')->as(function ($isUse) {\n                if ($isUse == CouponModel::STATUS_UNUSED) {\n                    return admin_trans('coupon.fields.status_unused');\n                } else {\n                    return admin_trans('coupon.fields.status_use');\n                }\n            });\n            $show->field('is_open')->as(function ($isOPen) {\n                if ($isOPen == CouponModel::STATUS_OPEN) {\n                    return admin_trans('dujiaoka.status_open');\n                } else {\n                    return admin_trans('dujiaoka.status_close');\n                }\n            });\n            $show->field('coupon');\n            $show->field('ret');\n            $show->field('created_at');\n            $show->field('updated_at');\n        });\n    }\n\n    /**\n     * Make a form builder.\n     *\n     * @return Form\n     */\n    protected function form()\n    {\n        return Form::make(Coupon::with('goods'), function (Form $form) {\n            $form->display('id');\n            $form->multipleSelect('goods', admin_trans('coupon.fields.goods_id'))\n                ->options(Goods::all()->pluck('gd_name', 'id'))\n                ->customFormat(function ($v) {\n                    if (! $v) {\n                        return [];\n                    }\n                    // 从数据库中查出的二维数组中转化成ID\n                    return array_column($v, 'id');\n                });\n            $form->currency('discount')->default(0)->required();\n            $form->text('coupon')->required();\n            $form->number('ret')->default(1);\n            $form->radio('is_use')->options(CouponModel::getStatusUseMap())->default(CouponModel::STATUS_UNUSED);\n            $form->switch('is_open')->default(CouponModel::STATUS_OPEN);\n            $form->display('created_at');\n            $form->display('updated_at');\n        });\n    }\n}\n"
  },
  {
    "path": "app/Admin/Controllers/EmailTestController.php",
    "content": "<?php\r\n/**\r\n * The file was created by Assimon.\r\n *\r\n * @author    ZhangYiQiu<me@zhangyiqiu.net>\r\n * @copyright ZhangYiQiu<me@zhangyiqiu.net>\r\n * @link      http://zhangyiqiu.net/\r\n */\r\n\r\nnamespace App\\Admin\\Controllers;\r\n\r\n\r\nuse App\\Admin\\Forms\\EmailTest;\r\nuse Dcat\\Admin\\Http\\Controllers\\AdminController;\r\nuse Dcat\\Admin\\Layout\\Content;\r\nuse Dcat\\Admin\\Widgets\\Card;\r\n\r\nclass EmailTestController extends AdminController\r\n{\r\n\r\n    /**\r\n     * 系统设置\r\n     *\r\n     * @param Content $content\r\n     * @return Content\r\n     *\r\n     * @author    assimon<ashang@utf8.hk>\r\n     * @copyright assimon<ashang@utf8.hk>\r\n     * @link      http://utf8.hk/\r\n     */\r\n    public function emailTest(Content $content)\r\n    {\r\n        return $content\r\n            ->title(admin_trans('menu.titles.email_test'))\r\n            ->body(new Card(new EmailTest()));\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "app/Admin/Controllers/EmailtplController.php",
    "content": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Admin\\Actions\\Post\\BatchRestore;\nuse App\\Admin\\Actions\\Post\\Restore;\nuse App\\Admin\\Repositories\\Emailtpl;\nuse Dcat\\Admin\\Form;\nuse Dcat\\Admin\\Grid;\nuse Dcat\\Admin\\Show;\nuse Dcat\\Admin\\Http\\Controllers\\AdminController;\nuse App\\Models\\Emailtpl as EmailTplModel;\n\nclass EmailtplController extends AdminController\n{\n    /**\n     * Make a grid builder.\n     *\n     * @return Grid\n     */\n    protected function grid()\n    {\n        return Grid::make(new Emailtpl(), function (Grid $grid) {\n            $grid->column('id')->sortable();\n            $grid->column('tpl_name');\n            $grid->column('tpl_token');\n            $grid->column('created_at');\n            $grid->column('updated_at')->sortable();\n            $grid->disableViewButton();\n            $grid->disableDeleteButton();\n            $grid->filter(function (Grid\\Filter $filter) {\n                $filter->equal('id');\n                $filter->like('tpl_name');\n                $filter->like('tpl_token');\n            });\n            $grid->actions(function (Grid\\Displayers\\Actions $actions) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $actions->append(new Restore(EmailTplModel::class));\n                }\n            });\n            $grid->batchActions(function (Grid\\Tools\\BatchActions $batch) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $batch->add(new BatchRestore(EmailTplModel::class));\n                }\n            });\n        });\n    }\n\n    /**\n     * Make a show builder.\n     *\n     * @param mixed $id\n     *\n     * @return Show\n     */\n    protected function detail($id)\n    {\n        return Show::make($id, new Emailtpl(), function (Show $show) {\n            $show->field('id');\n            $show->field('tpl_name');\n            $show->field('tpl_content');\n            $show->field('tpl_token');\n            $show->field('created_at');\n            $show->field('updated_at');\n        });\n    }\n\n    /**\n     * Make a form builder.\n     *\n     * @return Form\n     */\n    protected function form()\n    {\n        return Form::make(new Emailtpl(), function (Form $form) {\n            $form->display('id');\n            $form->text('tpl_name')->required();\n            $form->editor('tpl_content')->required();\n            if ($form->isCreating()) {\n                $form->text('tpl_token')->required();\n            } else {\n                $form->text('tpl_token')->disable();\n            }\n            $form->display('created_at');\n            $form->display('updated_at');\n            $form->disableViewButton();\n            $form->disableDeleteButton();\n            $form->footer(function ($footer) {\n                // 去掉`查看`checkbox\n                $footer->disableViewCheck();\n            });\n        });\n    }\n}\n"
  },
  {
    "path": "app/Admin/Controllers/GoodsController.php",
    "content": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Admin\\Actions\\Post\\BatchRestore;\nuse App\\Admin\\Actions\\Post\\Restore;\nuse App\\Admin\\Repositories\\Goods;\nuse App\\Models\\Carmis;\nuse App\\Models\\Coupon;\nuse App\\Models\\GoodsGroup as GoodsGroupModel;\nuse Dcat\\Admin\\Admin;\nuse Dcat\\Admin\\Form;\nuse Dcat\\Admin\\Grid;\nuse Dcat\\Admin\\Show;\nuse Dcat\\Admin\\Http\\Controllers\\AdminController;\nuse App\\Models\\Goods as GoodsModel;\n\nclass GoodsController extends AdminController\n{\n\n\n    /**\n     * Make a grid builder.\n     *\n     * @return Grid\n     */\n    protected function grid()\n    {\n        return Grid::make(new Goods(['group', 'coupon']), function (Grid $grid) {\n            $grid->model()->orderBy('id', 'DESC');\n            $grid->column('id')->sortable();\n            $grid->column('picture')->image('', 100, 100);\n            $grid->column('gd_name');\n            $grid->column('gd_description');\n            $grid->column('gd_keywords');\n            $grid->column('group.gp_name', admin_trans('goods.fields.group_id'));\n            $grid->column('type')\n                ->using(GoodsModel::getGoodsTypeMap())\n                ->label([\n                    GoodsModel::AUTOMATIC_DELIVERY => Admin::color()->success(),\n                    GoodsModel::MANUAL_PROCESSING => Admin::color()->info(),\n                ]);\n            $grid->column('retail_price');\n            $grid->column('actual_price')->sortable();\n            $grid->column('in_stock')->display(function () {\n                // 如果为自动发货，则加载库存卡密\n                if ($this->type == GoodsModel::AUTOMATIC_DELIVERY) {\n                    return Carmis::query()->where('goods_id', $this->id)\n                        ->where('status', Carmis::STATUS_UNSOLD)\n                        ->count();\n                } else {\n                    return $this->in_stock;\n                }\n            });\n            $grid->column('sales_volume');\n            $grid->column('ord')->editable()->sortable();\n            $grid->column('is_open')->switch();\n            $grid->column('created_at')->sortable();\n            $grid->column('updated_at');\n            $grid->filter(function (Grid\\Filter $filter) {\n                $filter->equal('id');\n                $filter->like('gd_name');\n                $filter->equal('type')->select(GoodsModel::getGoodsTypeMap());\n                $filter->equal('group_id')->select(GoodsGroupModel::query()->pluck('gp_name', 'id'));\n                $filter->scope(admin_trans('dujiaoka.trashed'))->onlyTrashed();\n                $filter->equal('coupon.coupons_id', admin_trans('goods.fields.coupon_id'))->select(\n                    Coupon::query()->pluck('coupon', 'id')\n                );\n            });\n            $grid->actions(function (Grid\\Displayers\\Actions $actions) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $actions->append(new Restore(GoodsModel::class));\n                }\n            });\n            $grid->batchActions(function (Grid\\Tools\\BatchActions $batch) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $batch->add(new BatchRestore(GoodsModel::class));\n                }\n            });\n        });\n    }\n\n    /**\n     * Make a show builder.\n     *\n     * @param mixed $id\n     *\n     * @return Show\n     */\n    protected function detail($id)\n    {\n        return Show::make($id, new Goods(), function (Show $show) {\n            $show->id('id');\n            $show->field('gd_name');\n            $show->field('gd_description');\n            $show->field('gd_keywords');\n            $show->field('picture')->image();\n            $show->field('retail_price');\n            $show->field('actual_price');\n            $show->field('in_stock');\n            $show->field('ord');\n            $show->field('sales_volume');\n            $show->field('type')->as(function ($type) {\n                if ($type == GoodsModel::AUTOMATIC_DELIVERY) {\n                    return admin_trans('goods.fields.automatic_delivery');\n                } else {\n                    return admin_trans('goods.fields.manual_processing');\n                }\n            });\n            $show->field('is_open')->as(function ($isOpen) {\n                if ($isOpen == GoodsGroupModel::STATUS_OPEN) {\n                    return admin_trans('dujiaoka.status_open');\n                } else {\n                    return admin_trans('dujiaoka.status_close');\n                }\n            });\n            $show->wholesale_price_cnf()->unescape()->as(function ($wholesalePriceCnf) {\n                return  \"<textarea class=\\\"form-control field_wholesale_price_cnf _normal_\\\"  rows=\\\"10\\\" cols=\\\"30\\\">\" . $wholesalePriceCnf . \"</textarea>\";\n            });\n            $show->other_ipu_cnf()->unescape()->as(function ($otherIpuCnf) {\n                return  \"<textarea class=\\\"form-control field_wholesale_price_cnf _normal_\\\"  rows=\\\"10\\\" cols=\\\"30\\\">\" . $otherIpuCnf . \"</textarea>\";\n            });\n            $show->api_hook()->unescape()->as(function ($apiHook) {\n                return  \"<textarea class=\\\"form-control field_wholesale_price_cnf _normal_\\\"  rows=\\\"10\\\" cols=\\\"30\\\">\" . $apiHook . \"</textarea>\";\n            });;\n        });\n    }\n\n    /**\n     * Make a form builder.\n     *\n     * @return Form\n     */\n    protected function form()\n    {\n        return Form::make(new Goods(), function (Form $form) {\n            $form->display('id');\n            $form->text('gd_name')->required();\n            $form->text('gd_description')->required();\n            $form->text('gd_keywords')->required();\n            $form->select('group_id')->options(\n                GoodsGroupModel::query()->pluck('gp_name', 'id')\n            )->required();\n            $form->image('picture')->autoUpload()->uniqueName()->help(admin_trans('goods.helps.picture'));\n            $form->radio('type')->options(GoodsModel::getGoodsTypeMap())->default(GoodsModel::AUTOMATIC_DELIVERY)->required();\n            $form->currency('retail_price')->default(0)->help(admin_trans('goods.helps.retail_price'));\n            $form->currency('actual_price')->default(0)->required();\n            $form->number('in_stock')->help(admin_trans('goods.helps.in_stock'));\n            $form->number('sales_volume');\n            $form->number('buy_limit_num')->help(admin_trans('goods.helps.buy_limit_num'));\n            $form->editor('buy_prompt');\n            $form->editor('description');\n            $form->textarea('other_ipu_cnf')->help(admin_trans('goods.helps.other_ipu_cnf'));\n            $form->textarea('wholesale_price_cnf')->help(admin_trans('goods.helps.wholesale_price_cnf'));\n            $form->textarea('api_hook');\n            $form->number('ord')->default(1)->help(admin_trans('dujiaoka.ord'));\n            $form->switch('is_open')->default(GoodsModel::STATUS_OPEN);\n        });\n    }\n}\n"
  },
  {
    "path": "app/Admin/Controllers/GoodsGroupController.php",
    "content": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Admin\\Actions\\Post\\BatchRestore;\nuse App\\Admin\\Actions\\Post\\Restore;\nuse App\\Admin\\Repositories\\GoodsGroup;\nuse Dcat\\Admin\\Form;\nuse Dcat\\Admin\\Grid;\nuse Dcat\\Admin\\Show;\nuse Dcat\\Admin\\Http\\Controllers\\AdminController;\nuse App\\Models\\GoodsGroup as GoodsGroupModel;\n\nclass GoodsGroupController extends AdminController\n{\n\n    /**\n     * Make a grid builder.\n     *\n     * @return Grid\n     */\n    protected function grid()\n    {\n        return Grid::make(new GoodsGroup(), function (Grid $grid) {\n            $grid->model()->orderBy('id', 'DESC');\n            $grid->column('id')->sortable();\n            $grid->column('gp_name')->editable();\n            $grid->column('is_open')->switch();\n            $grid->column('ord')->editable();\n            $grid->column('created_at');\n            $grid->column('updated_at')->sortable();\n            $grid->disableViewButton();\n            $grid->filter(function (Grid\\Filter $filter) {\n                $filter->equal('id');\n                $filter->scope(admin_trans('dujiaoka.trashed'))->onlyTrashed();\n            });\n            $grid->actions(function (Grid\\Displayers\\Actions $actions) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $actions->append(new Restore(GoodsGroupModel::class));\n                }\n            });\n            $grid->batchActions(function (Grid\\Tools\\BatchActions $batch) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $batch->add(new BatchRestore(GoodsGroupModel::class));\n                }\n            });\n        });\n    }\n\n    /**\n     * Make a show builder.\n     *\n     * @param mixed $id\n     *\n     * @return Show\n     */\n    protected function detail($id)\n    {\n        return Show::make($id, new GoodsGroup(), function (Show $show) {\n            $show->field('id');\n            $show->field('gp_name');\n            $show->field('is_open')->as(function ($isOpen) {\n                if ($isOpen == GoodsGroupModel::STATUS_OPEN) {\n                    return admin_trans('dujiaoka.status_open');\n                } else {\n                    return admin_trans('dujiaoka.status_close');\n                }\n            });\n            $show->field('ord');\n            $show->field('created_at');\n            $show->field('updated_at');\n        });\n    }\n\n    /**\n     * Make a form builder.\n     *\n     * @return Form\n     */\n    protected function form()\n    {\n        return Form::make(new GoodsGroup(), function (Form $form) {\n            $form->display('id');\n            $form->text('gp_name');\n            $form->switch('is_open')->default(GoodsGroupModel::STATUS_OPEN);\n            $form->number('ord')->default(1)->help(admin_trans('dujiaoka.ord'));\n            $form->display('created_at');\n            $form->display('updated_at');\n            $form->disableViewButton();\n            $form->footer(function ($footer) {\n                // 去掉`查看`checkbox\n                $footer->disableViewCheck();\n            });\n        });\n    }\n}\n"
  },
  {
    "path": "app/Admin/Controllers/HomeController.php",
    "content": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Admin\\Charts\\DashBoard;\nuse App\\Admin\\Charts\\PayoutRateCard;\nuse App\\Admin\\Charts\\PopularGoodsCard;\nuse App\\Admin\\Charts\\SalesCard;\nuse App\\Admin\\Charts\\SuccessOrderCard;\nuse App\\Http\\Controllers\\Controller;\nuse Dcat\\Admin\\Layout\\Column;\nuse Dcat\\Admin\\Layout\\Content;\nuse Dcat\\Admin\\Layout\\Row;\n\nclass HomeController extends Controller\n{\n\n    public function index(Content $content)\n    {\n        return $content\n            ->header(admin_trans('dujiaoka.dashboard'))\n            ->description(admin_trans('dujiaoka.dashboard_description'))\n            ->body(function (Row $row) {\n                $row->column(6, function (Column $column) {\n                    $column->row(self::title());\n                    $column->row(new DashBoard());\n                });\n\n                $row->column(6, function (Column $column) {\n                    $column->row(function (Row $row) {\n                        $row->column(6, new SuccessOrderCard());\n                        $row->column(6, new PayoutRateCard());\n                    });\n\n                    $column->row(new SalesCard());\n                });\n            });\n    }\n\n    public static function title()\n    {\n        return view('admin.dashboard.title');\n    }\n}\n"
  },
  {
    "path": "app/Admin/Controllers/OrderController.php",
    "content": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Admin\\Actions\\Post\\BatchRestore;\nuse App\\Admin\\Actions\\Post\\Restore;\nuse App\\Admin\\Repositories\\Order;\nuse App\\Models\\Coupon;\nuse App\\Models\\Goods;\nuse App\\Models\\Pay;\nuse Dcat\\Admin\\Admin;\nuse Dcat\\Admin\\Form;\nuse Dcat\\Admin\\Grid;\nuse Dcat\\Admin\\Show;\nuse Dcat\\Admin\\Http\\Controllers\\AdminController;\nuse App\\Models\\Order as OrderModel;\n\nclass OrderController extends AdminController\n{\n\n\n    /**\n     * Make a grid builder.\n     *\n     * @return Grid\n     */\n    protected function grid()\n    {\n        return Grid::make(new Order(['goods', 'coupon', 'pay']), function (Grid $grid) {\n            $grid->model()->orderBy('id', 'DESC');\n            $grid->column('id')->sortable();\n            $grid->column('order_sn')->copyable();\n            $grid->column('title');\n            $grid->column('type')->using(OrderModel::getTypeMap())\n                ->label([\n                    OrderModel::AUTOMATIC_DELIVERY => Admin::color()->success(),\n                    OrderModel::MANUAL_PROCESSING => Admin::color()->info(),\n                ]);\n            $grid->column('email')->copyable();\n            $grid->column('goods.gd_name', admin_trans('order.fields.goods_id'));\n            $grid->column('goods_price');\n            $grid->column('buy_amount');\n            $grid->column('total_price');\n            $grid->column('coupon.coupon', admin_trans('order.fields.coupon_id'));\n            $grid->column('coupon_discount_price');\n            $grid->column('wholesale_discount_price');\n            $grid->column('actual_price');\n            $grid->column('pay.pay_name', admin_trans('order.fields.pay_id'));\n            $grid->column('buy_ip');\n            $grid->column('search_pwd')->copyable();\n            $grid->column('trade_no')->copyable();\n            $grid->column('status')\n                ->select(OrderModel::getStatusMap());\n            $grid->column('created_at');\n            $grid->column('updated_at')->sortable();\n            $grid->disableCreateButton();\n            $grid->filter(function (Grid\\Filter $filter) {\n                $filter->equal('order_sn');\n                $filter->like('title');\n                $filter->equal('status')->select(OrderModel::getStatusMap());\n                $filter->equal('email');\n                $filter->equal('trade_no');\n                $filter->equal('type')->select(OrderModel::getTypeMap());\n                $filter->equal('goods_id')->select(Goods::query()->pluck('gd_name', 'id'));\n                $filter->equal('coupon_id')->select(Coupon::query()->pluck('coupon', 'id'));\n                $filter->equal('pay_id')->select(Pay::query()->pluck('pay_name', 'id'));\n                $filter->whereBetween('created_at', function ($q) {\n                    $start = $this->input['start'] ?? null;\n                    $end = $this->input['end'] ?? null;\n                    $q->where('created_at', '>=', $start)\n                        ->where('created_at', '<=', $end);\n                })->datetime();\n                $filter->scope(admin_trans('dujiaoka.trashed'))->onlyTrashed();\n            });\n            $grid->actions(function (Grid\\Displayers\\Actions $actions) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $actions->append(new Restore(OrderModel::class));\n                }\n            });\n            $grid->batchActions(function (Grid\\Tools\\BatchActions $batch) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $batch->add(new BatchRestore(OrderModel::class));\n                }\n            });\n        });\n    }\n\n    /**\n     * Make a show builder.\n     *\n     * @param mixed $id\n     *\n     * @return Show\n     */\n    protected function detail($id)\n    {\n        return Show::make($id, new Order(['goods', 'coupon', 'pay']), function (Show $show) {\n            $show->field('id');\n            $show->field('order_sn');\n            $show->field('title');\n            $show->field('email');\n            $show->field('goods.gd_name', admin_trans('order.fields.goods_id'));\n            $show->field('goods_price');\n            $show->field('buy_amount');\n            $show->field('coupon.coupon', admin_trans('order.fields.coupon_id'));\n            $show->field('coupon_discount_price');\n            $show->field('wholesale_discount_price');\n            $show->field('total_price');\n            $show->field('actual_price');\n            $show->field('buy_ip');\n            $show->field('info')->unescape()->as(function ($info) {\n                return  \"<textarea class=\\\"form-control field_wholesale_price_cnf _normal_\\\"  rows=\\\"10\\\" cols=\\\"30\\\">\" . $info . \"</textarea>\";\n            });\n            $show->field('pay.pay_name', admin_trans('order.fields.pay_id'));\n            $show->field('status')->using(OrderModel::getStatusMap());\n            $show->field('search_pwd');\n            $show->field('trade_no');\n            $show->field('type')->using(OrderModel::getTypeMap());\n            $show->field('created_at');\n            $show->field('updated_at');\n            $show->disableEditButton();\n        });\n    }\n\n    /**\n     * Make a form builder.\n     *\n     * @return Form\n     */\n    protected function form()\n    {\n        return Form::make(new Order(['goods', 'coupon', 'pay']), function (Form $form) {\n            $form->display('id');\n            $form->display('order_sn');\n            $form->text('title');\n            $form->display('goods.gd_name', admin_trans('order.fields.goods_id'));\n            $form->display('goods_price');\n            $form->display('buy_amount');\n            $form->display('coupon.coupon', admin_trans('order.fields.coupon_id'));\n            $form->display('coupon_discount_price');\n            $form->display('wholesale_discount_price');\n            $form->display('total_price');\n            $form->display('actual_price');\n            $form->display('email');\n            $form->textarea('info');\n            $form->display('buy_ip');\n            $form->display('pay.pay_name', admin_trans('order.fields.pay_id'));\n            $form->radio('status')->options(OrderModel::getStatusMap());\n            $form->text('search_pwd');\n            $form->display('trade_no');\n            $form->radio('type')->options(OrderModel::getTypeMap());\n            $form->display('created_at');\n            $form->display('updated_at');\n        });\n    }\n}\n"
  },
  {
    "path": "app/Admin/Controllers/PayController.php",
    "content": "<?php\n\nnamespace App\\Admin\\Controllers;\n\nuse App\\Admin\\Actions\\Post\\BatchRestore;\nuse App\\Admin\\Actions\\Post\\Restore;\nuse App\\Admin\\Repositories\\Pay;\nuse Dcat\\Admin\\Form;\nuse Dcat\\Admin\\Grid;\nuse Dcat\\Admin\\Show;\nuse Dcat\\Admin\\Http\\Controllers\\AdminController;\nuse App\\Models\\Pay as PayModel;\n\nclass PayController extends AdminController\n{\n\n\n    /**\n     * Make a grid builder.\n     *\n     * @return Grid\n     */\n    protected function grid()\n    {\n        return Grid::make(new Pay(), function (Grid $grid) {\n            $grid->column('id')->sortable();\n            $grid->column('pay_name');\n            $grid->column('pay_check');\n            $grid->column('pay_method')->select(PayModel::getMethodMap());\n            $grid->column('merchant_id')->limit(20);\n            $grid->column('merchant_key')->limit(20);\n            $grid->column('merchant_pem')->limit(20);\n            $grid->column('pay_client')->select(PayModel::getClientMap());\n            $grid->column('pay_handleroute');\n            $grid->column('is_open')->switch();\n            $grid->column('created_at');\n            $grid->column('updated_at')->sortable();\n            $grid->disableDeleteButton();\n            $grid->filter(function (Grid\\Filter $filter) {\n                $filter->equal('id');\n                $filter->equal('pay_check');\n                $filter->like('pay_name');\n                $filter->scope(admin_trans('dujiaoka.trashed'))->onlyTrashed();\n            });\n            $grid->actions(function (Grid\\Displayers\\Actions $actions) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $actions->append(new Restore(PayModel::class));\n                }\n            });\n            $grid->batchActions(function (Grid\\Tools\\BatchActions $batch) {\n                if (request('_scope_') == admin_trans('dujiaoka.trashed')) {\n                    $batch->add(new BatchRestore(PayModel::class));\n                }\n            });\n        });\n    }\n\n    /**\n     * Make a show builder.\n     *\n     * @param mixed $id\n     *\n     * @return Show\n     */\n    protected function detail($id)\n    {\n        return Show::make($id, new Pay(), function (Show $show) {\n            $show->field('id');\n            $show->field('pay_name');\n            $show->field('merchant_id');\n            $show->field('merchant_key');\n            $show->field('merchant_pem');\n            $show->field('pay_check');\n            $show->field('pay_client')->as(function ($payClient) {\n                if ($payClient == PayModel::PAY_CLIENT_PC) {\n                    return admin_trans('pay.fields.pay_client_pc');\n                } else {\n                    return admin_trans('pay.fields.pay_client_mobile');\n                }\n            });\n            $show->field('pay_handleroute');\n            $show->field('pay_method')->as(function ($payMethod) {\n                if ($payMethod == PayModel::METHOD_JUMP) {\n                    return admin_trans('pay.fields.method_jump');\n                } else {\n                    return admin_trans('pay.fields.method_scan');\n                }\n            });\n            $show->field('is_open')->as(function ($isOpen) {\n                if ($isOpen == PayModel::STATUS_OPEN) {\n                    return admin_trans('dujiaoka.status_open');\n                } else {\n                    return admin_trans('dujiaoka.status_close');\n                }\n            });\n            $show->field('created_at');\n            $show->field('updated_at');\n        });\n    }\n\n    /**\n     * Make a form builder.\n     *\n     * @return Form\n     */\n    protected function form()\n    {\n        return Form::make(new Pay(), function (Form $form) {\n            $form->display('id');\n            $form->text('pay_name')->required();\n            $form->text('merchant_id')->required();\n            $form->textarea('merchant_key');\n            $form->textarea('merchant_pem')->required();\n            $form->text('pay_check')->required();\n            $form->radio('pay_client')\n                ->options(PayModel::getClientMap())\n                ->default(PayModel::PAY_CLIENT_PC)\n                ->required();\n            $form->radio('pay_method')\n                ->options(PayModel::getMethodMap())\n                ->default(PayModel::METHOD_JUMP)\n                ->required();\n            $form->text('pay_handleroute')->required();\n            $form->switch('is_open')->default(PayModel::STATUS_OPEN);\n            $form->display('created_at');\n            $form->display('updated_at');\n            $form->disableDeleteButton();\n        });\n    }\n}\n"
  },
  {
    "path": "app/Admin/Controllers/SystemSettingController.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Admin\\Controllers;\n\n\nuse App\\Admin\\Forms\\SystemSetting;\nuse Dcat\\Admin\\Http\\Controllers\\AdminController;\nuse Dcat\\Admin\\Layout\\Content;\nuse Dcat\\Admin\\Widgets\\Card;\n\nclass SystemSettingController extends AdminController\n{\n\n    /**\n     * 系统设置\n     *\n     * @param Content $content\n     * @return Content\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function systemSetting(Content $content)\n    {\n        return $content\n            ->title(admin_trans('menu.titles.system_setting'))\n            ->body(new Card(new SystemSetting()));\n    }\n\n}\n"
  },
  {
    "path": "app/Admin/Forms/EmailTest.php",
    "content": "<?php\r\n/**\r\n * The file was created by Assimon.\r\n *\r\n * @author    ZhangYiQiu<me@zhangyiqiu.net>\r\n * @copyright ZhangYiQiu<me@zhangyiqiu.net>\r\n * @link      http://zhangyiqiu.net/\r\n */\r\n\r\nnamespace App\\Admin\\Forms;\r\n\r\nuse App\\Models\\BaseModel;\r\nuse Dcat\\Admin\\Widgets\\Form;\r\nuse Illuminate\\Support\\Facades\\Cache;\r\nuse Illuminate\\Mail\\MailServiceProvider;\r\nuse Illuminate\\Support\\Facades\\Mail;\r\n\r\nclass EmailTest extends Form\r\n{\r\n    /**\r\n     * Handle the form request.\r\n     *\r\n     * @param array $input\r\n     *\r\n     * @return mixed\r\n     */\r\n    public function handle(array $input)\r\n    {\r\n      $to = $input['to'];\r\n      $title = $input['title'];\r\n      $body = $input['body'];\r\n      $sysConfig = cache('system-setting');\r\n      $mailConfig = [\r\n          'driver' => $sysConfig['driver'] ?? 'smtp',\r\n          'host' => $sysConfig['host'] ?? '',\r\n          'port' => $sysConfig['port'] ?? '465',\r\n          'username' => $sysConfig['username'] ?? '',\r\n          'from'      =>  [\r\n              'address'   =>   $sysConfig['from_address'] ?? '',\r\n              'name'      =>  $sysConfig['from_name'] ?? '独角发卡'\r\n          ],\r\n          'password' => $sysConfig['password'] ?? '',\r\n          'encryption' => $sysConfig['encryption'] ?? 'ssl'\r\n      ];\r\n      //  覆盖 mail 配置\r\n      config([\r\n          'mail'  =>  array_merge(config('mail'), $mailConfig)\r\n      ]);\r\n      // 重新注册驱动\r\n      (new MailServiceProvider(app()))->register();\r\n\t  try\r\n\t  {\r\n\t\t  Mail::send(['html' => 'email.mail'], ['body' => $body], function ($message) use ($to, $title){\r\n\t\t\t  $message->to($to)->subject($title);\r\n\t\t  });\r\n\t  }\r\n\t  catch(\\Exception $e)\r\n\t  {\r\n\t\t  return $this\r\n\t\t\t\t\t->response()\r\n\t\t\t\t\t->error($e->getMessage());\r\n\t  }\r\n      return $this\r\n\t\t\t\t->response()\r\n\t\t\t\t->success(admin_trans('email-test.labels.success'));\r\n    }\r\n\r\n    /**\r\n     * Build a form here.\r\n     */\r\n    public function form()\r\n    {\r\n        $this->tab(admin_trans('menu.titles.email_test'), function () {\r\n            $this->text('to', admin_trans('email-test.labels.to'))->required();\r\n            $this->text('title', admin_trans('email-test.labels.title'))->default('这是一条测试邮件')->required();\r\n            $this->editor('body', admin_trans('email-test.labels.body'))->default(\"这是一条测试邮件的正文内容<br/><br/>正文比较长<br/><br/>非常长<br/><br/>测试测试测试\")->required();\r\n        });\r\n    }\r\n\r\n    public function default()\r\n    {\r\n      \r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "app/Admin/Forms/ImportCarmis.php",
    "content": "<?php\n\nnamespace App\\Admin\\Forms;\n\nuse App\\Models\\Carmis;\nuse App\\Models\\Goods;\nuse Dcat\\Admin\\Widgets\\Form;\nuse Illuminate\\Support\\Facades\\Storage;\n\nclass ImportCarmis extends Form\n{\n\n    /**\n     * Handle the form request.\n     *\n     * @param array $input\n     *\n     * @return mixed\n     */\n    public function handle(array $input)\n    {\n        if (empty($input['carmis_list']) && empty($input['carmis_txt'])) {\n            return $this->response()->error(admin_trans('carmis.rule_messages.carmis_list_and_carmis_txt_can_not_be_empty'));\n        }\n        $carmisContent = \"\";\n        if (!empty($input['carmis_txt'])) {\n            $carmisContent = Storage::disk('public')->get($input['carmis_txt']);\n        }\n        if (!empty($input['carmis_list'])) {\n            $carmisContent = $input['carmis_list'];\n        }\n        $carmisData = [];\n        $tempList = explode(PHP_EOL, $carmisContent);\n        foreach ($tempList as $val) {\n            if (trim($val) != \"\") {\n                $carmisData[] = [\n                    'goods_id' => $input['goods_id'],\n                    'carmi' => trim($val),\n                    'status' => Carmis::STATUS_UNSOLD,\n                    'created_at' => date('Y-m-d H:i:s'),\n                    'updated_at' => date('Y-m-d H:i:s'),\n                ];\n            }\n        }\n        if ($input['remove_duplication'] == 1) {\n            $carmisData = assoc_unique($carmisData, 'carmi');\n        }\n        Carmis::query()->insert($carmisData);\n        // 删除文件\n        Storage::disk('public')->delete($input['carmis_txt']);\n        return $this\n\t\t\t\t->response()\n\t\t\t\t->success(admin_trans('carmis.rule_messages.import_carmis_success'))\n\t\t\t\t->location('/carmis');\n    }\n\n    /**\n     * Build a form here.\n     */\n    public function form()\n    {\n        $this->confirm(admin_trans('carmis.fields.are_you_import_sure'));\n        $this->select('goods_id')->options(\n            Goods::query()->where('type', Goods::AUTOMATIC_DELIVERY)->pluck('gd_name', 'id')\n        )->required();\n        $this->textarea('carmis_list')\n            ->rows(20)\n            ->help(admin_trans('carmis.helps.carmis_list'));\n        $this->file('carmis_txt')\n            ->disk('public')\n            ->uniqueName()\n            ->accept('txt')\n            ->maxSize(5120)\n            ->help(admin_trans('carmis.helps.carmis_list'));\n        $this->switch('remove_duplication');\n    }\n\n}\n"
  },
  {
    "path": "app/Admin/Forms/SystemSetting.php",
    "content": "<?php\n\nnamespace App\\Admin\\Forms;\n\nuse App\\Models\\BaseModel;\nuse Dcat\\Admin\\Widgets\\Form;\nuse Illuminate\\Support\\Facades\\Cache;\n\nclass SystemSetting extends Form\n{\n    /**\n     * Handle the form request.\n     *\n     * @param array $input\n     *\n     * @return mixed\n     */\n    public function handle(array $input)\n    {\n        Cache::put('system-setting', $input);\n        return $this\n\t\t\t\t->response()\n\t\t\t\t->success(admin_trans('system-setting.rule_messages.save_system_setting_success'));\n    }\n\n    /**\n     * Build a form here.\n     */\n    public function form()\n    {\n        $this->tab(admin_trans('system-setting.labels.base_setting'), function () {\n            $this->text('title', admin_trans('system-setting.fields.title'))->required();\n            $this->image('img_logo', admin_trans('system-setting.fields.img_logo'));\n            $this->text('text_logo', admin_trans('system-setting.fields.text_logo'));\n            $this->text('keywords', admin_trans('system-setting.fields.keywords'));\n            $this->textarea('description', admin_trans('system-setting.fields.description'));\n            $this->select('template', admin_trans('system-setting.fields.template'))\n                ->options(config('dujiaoka.templates'))\n                ->required();\n            $this->select('language', admin_trans('system-setting.fields.language'))\n                ->options(config('dujiaoka.language'))\n                ->required();\n            $this->text('manage_email', admin_trans('system-setting.fields.manage_email'));\n            $this->number('order_expire_time', admin_trans('system-setting.fields.order_expire_time'))\n                ->default(5)\n                ->required();\n            $this->switch('is_open_anti_red', admin_trans('system-setting.fields.is_open_anti_red'))\n                ->default(BaseModel::STATUS_CLOSE);\n            $this->switch('is_open_img_code', admin_trans('system-setting.fields.is_open_img_code'))\n                ->default(BaseModel::STATUS_CLOSE);\n            $this->switch('is_open_search_pwd', admin_trans('system-setting.fields.is_open_search_pwd'))\n                ->default(BaseModel::STATUS_CLOSE);\n            $this->switch('is_open_google_translate', admin_trans('system-setting.fields.is_open_google_translate'))\n                ->default(BaseModel::STATUS_CLOSE);\n            $this->editor('notice', admin_trans('system-setting.fields.notice'));\n            $this->textarea('footer', admin_trans('system-setting.fields.footer'));\n        });\n        $this->tab(admin_trans('system-setting.labels.order_push_setting'), function () {\n            $this->switch('is_open_server_jiang', admin_trans('system-setting.fields.is_open_server_jiang'))\n                ->default(BaseModel::STATUS_CLOSE);\n            $this->text('server_jiang_token', admin_trans('system-setting.fields.server_jiang_token'));\n            $this->switch('is_open_telegram_push', admin_trans('system-setting.fields.is_open_telegram_push'))\n                ->default(BaseModel::STATUS_CLOSE);\n            $this->text('telegram_bot_token', admin_trans('system-setting.fields.telegram_bot_token'));\n            $this->text('telegram_userid', admin_trans('system-setting.fields.telegram_userid'));\n            $this->switch('is_open_bark_push', admin_trans('system-setting.fields.is_open_bark_push'))\n                ->default(BaseModel::STATUS_CLOSE);\n            $this->switch('is_open_bark_push_url', admin_trans('system-setting.fields.is_open_bark_push_url'))\n                ->default(BaseModel::STATUS_CLOSE);\n            $this->text('bark_server', admin_trans('system-setting.fields.bark_server'));\n            $this->text('bark_token', admin_trans('system-setting.fields.bark_token'));\n            $this->switch('is_open_qywxbot_push', admin_trans('system-setting.fields.is_open_qywxbot_push'))\n                ->default(BaseModel::STATUS_CLOSE);\n            $this->text('qywxbot_key', admin_trans('system-setting.fields.qywxbot_key'));\n        });\n        $this->tab(admin_trans('system-setting.labels.mail_setting'), function () {\n            $this->text('driver', admin_trans('system-setting.fields.driver'))->default('smtp')->required();\n            $this->text('host', admin_trans('system-setting.fields.host'));\n            $this->text('port', admin_trans('system-setting.fields.port'))->default(587);\n            $this->text('username', admin_trans('system-setting.fields.username'));\n            $this->text('password', admin_trans('system-setting.fields.password'));\n            $this->text('encryption', admin_trans('system-setting.fields.encryption'));\n            $this->text('from_address', admin_trans('system-setting.fields.from_address'));\n            $this->text('from_name', admin_trans('system-setting.fields.from_name'));\n        });\n        $this->tab(admin_trans('system-setting.labels.geetest'), function () {\n            $this->text('geetest_id', admin_trans('system-setting.fields.geetest_id'));\n            $this->text('geetest_key', admin_trans('system-setting.fields.geetest_key'));\n            $this->switch('is_open_geetest', admin_trans('system-setting.fields.is_open_geetest'))->default(BaseModel::STATUS_CLOSE);\n        });\n        $this->confirm(\n            admin_trans('dujiaoka.warning_title'),\n            admin_trans('system-setting.rule_messages.change_reboot_php_worker')\n        );\n    }\n\n    public function default()\n    {\n        return Cache::get('system-setting');\n    }\n\n}\n"
  },
  {
    "path": "app/Admin/Repositories/Carmis.php",
    "content": "<?php\n\nnamespace App\\Admin\\Repositories;\n\nuse App\\Models\\Carmis as Model;\nuse Dcat\\Admin\\Repositories\\EloquentRepository;\n\nclass Carmis extends EloquentRepository\n{\n\n    /**\n     * Model.\n     *\n     * @var string\n     */\n    protected $eloquentClass = Model::class;\n\n}\n"
  },
  {
    "path": "app/Admin/Repositories/Coupon.php",
    "content": "<?php\n\nnamespace App\\Admin\\Repositories;\n\nuse App\\Models\\Coupon as Model;\nuse Dcat\\Admin\\Repositories\\EloquentRepository;\n\nclass Coupon extends EloquentRepository\n{\n    /**\n     * Model.\n     *\n     * @var string\n     */\n    protected $eloquentClass = Model::class;\n}\n"
  },
  {
    "path": "app/Admin/Repositories/Emailtpl.php",
    "content": "<?php\n\nnamespace App\\Admin\\Repositories;\n\nuse App\\Models\\Emailtpl as Model;\nuse Dcat\\Admin\\Repositories\\EloquentRepository;\n\nclass Emailtpl extends EloquentRepository\n{\n    /**\n     * Model.\n     *\n     * @var string\n     */\n    protected $eloquentClass = Model::class;\n}\n"
  },
  {
    "path": "app/Admin/Repositories/Goods.php",
    "content": "<?php\n\nnamespace App\\Admin\\Repositories;\n\nuse App\\Models\\Goods as Model;\nuse Dcat\\Admin\\Repositories\\EloquentRepository;\n\nclass Goods extends EloquentRepository\n{\n    /**\n     * Model.\n     *\n     * @var string\n     */\n    protected $eloquentClass = Model::class;\n}\n"
  },
  {
    "path": "app/Admin/Repositories/GoodsGroup.php",
    "content": "<?php\n\nnamespace App\\Admin\\Repositories;\n\nuse App\\Models\\GoodsGroup as Model;\nuse Dcat\\Admin\\Repositories\\EloquentRepository;\n\nclass GoodsGroup extends EloquentRepository\n{\n\n    /**\n     * Model.\n     *\n     * @var string\n     */\n    protected $eloquentClass = Model::class;\n\n}\n"
  },
  {
    "path": "app/Admin/Repositories/Order.php",
    "content": "<?php\n\nnamespace App\\Admin\\Repositories;\n\nuse App\\Models\\Order as Model;\nuse Dcat\\Admin\\Repositories\\EloquentRepository;\n\nclass Order extends EloquentRepository\n{\n    /**\n     * Model.\n     *\n     * @var string\n     */\n    protected $eloquentClass = Model::class;\n}\n"
  },
  {
    "path": "app/Admin/Repositories/Pay.php",
    "content": "<?php\n\nnamespace App\\Admin\\Repositories;\n\nuse App\\Models\\Pay as Model;\nuse Dcat\\Admin\\Repositories\\EloquentRepository;\n\nclass Pay extends EloquentRepository\n{\n    /**\n     * Model.\n     *\n     * @var string\n     */\n    protected $eloquentClass = Model::class;\n}\n"
  },
  {
    "path": "app/Admin/bootstrap.php",
    "content": "<?php\n\nuse Dcat\\Admin\\Admin;\nuse Dcat\\Admin\\Grid;\nuse Dcat\\Admin\\Form;\nuse Dcat\\Admin\\Grid\\Filter;\nuse Dcat\\Admin\\Show;\n\n/**\n * Dcat-admin - admin builder based on Laravel.\n * @author jqh <https://github.com/jqhph>\n *\n * Bootstraper for Admin.\n *\n * Here you can remove builtin form field:\n *\n * extend custom field:\n * Dcat\\Admin\\Form::extend('php', PHPEditor::class);\n * Dcat\\Admin\\Grid\\Column::extend('php', PHPEditor::class);\n * Dcat\\Admin\\Grid\\Filter::extend('php', PHPEditor::class);\n *\n * Or require js and css assets:\n * Admin::css('/packages/prettydocs/css/styles.css');\n * Admin::js('/packages/prettydocs/js/main.js');\n *\n */\n"
  },
  {
    "path": "app/Admin/routes.php",
    "content": "<?php\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Support\\Facades\\Route;\nuse Dcat\\Admin\\Admin;\n\nAdmin::routes();\n\nRoute::group([\n    'prefix'     => config('admin.route.prefix'),\n    'namespace'  => config('admin.route.namespace'),\n    'middleware' => config('admin.route.middleware'),\n], function (Router $router) {\n    $router->get('/', 'HomeController@index');\n    $router->resource('goods', 'GoodsController');\n    $router->resource('goods-group', 'GoodsGroupController');\n    $router->resource('carmis', 'CarmisController');\n    $router->resource('coupon', 'CouponController');\n    $router->resource('emailtpl', 'EmailtplController');\n    $router->resource('pay', 'PayController');\n    $router->resource('order', 'OrderController');\n    $router->get('import-carmis', 'CarmisController@importCarmis');\n    $router->get('system-setting', 'SystemSettingController@systemSetting');\n    $router->get('email-test', 'EmailTestController@emailTest');\n});\n"
  },
  {
    "path": "app/Console/Kernel.php",
    "content": "<?php\n\nnamespace App\\Console;\n\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as ConsoleKernel;\n\nclass Kernel extends ConsoleKernel\n{\n    /**\n     * The Artisan commands provided by your application.\n     *\n     * @var array\n     */\n    protected $commands = [\n        //\n    ];\n\n    /**\n     * Define the application's command schedule.\n     *\n     * @param  \\Illuminate\\Console\\Scheduling\\Schedule  $schedule\n     * @return void\n     */\n    protected function schedule(Schedule $schedule)\n    {\n        // $schedule->command('inspire')\n        //          ->hourly();\n    }\n\n    /**\n     * Register the commands for the application.\n     *\n     * @return void\n     */\n    protected function commands()\n    {\n        $this->load(__DIR__.'/Commands');\n\n        require base_path('routes/console.php');\n    }\n}\n"
  },
  {
    "path": "app/Events/GoodsDeleted.php",
    "content": "<?php\n\nnamespace App\\Events;\n\nuse App\\Models\\Goods;\nuse Illuminate\\Broadcasting\\Channel;\nuse Illuminate\\Broadcasting\\InteractsWithSockets;\nuse Illuminate\\Broadcasting\\PresenceChannel;\nuse Illuminate\\Broadcasting\\PrivateChannel;\nuse Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast;\nuse Illuminate\\Foundation\\Events\\Dispatchable;\nuse Illuminate\\Queue\\SerializesModels;\n\nclass GoodsDeleted\n{\n    use Dispatchable, InteractsWithSockets, SerializesModels;\n\n    public $goods;\n\n    /**\n     * Create a new event instance.\n     *\n     * @return void\n     */\n    public function __construct(Goods $goods)\n    {\n        $this->goods = $goods;\n    }\n\n    /**\n     * Get the channels the event should broadcast on.\n     *\n     * @return \\Illuminate\\Broadcasting\\Channel|array\n     */\n    public function broadcastOn()\n    {\n        return new PrivateChannel('channel-name');\n    }\n}\n"
  },
  {
    "path": "app/Events/GoodsGroupDeleted.php",
    "content": "<?php\n\nnamespace App\\Events;\n\nuse App\\Models\\GoodsGroup;\nuse Illuminate\\Broadcasting\\Channel;\nuse Illuminate\\Broadcasting\\InteractsWithSockets;\nuse Illuminate\\Broadcasting\\PresenceChannel;\nuse Illuminate\\Broadcasting\\PrivateChannel;\nuse Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast;\nuse Illuminate\\Foundation\\Events\\Dispatchable;\nuse Illuminate\\Queue\\SerializesModels;\n\nclass GoodsGroupDeleted\n{\n    use Dispatchable, InteractsWithSockets, SerializesModels;\n\n    public $goodsGroup;\n\n    /**\n     * Create a new event instance.\n     *\n     * @return void\n     */\n    public function __construct(GoodsGroup $goodsGroup)\n    {\n        $this->goodsGroup = $goodsGroup;\n    }\n\n    /**\n     * Get the channels the event should broadcast on.\n     *\n     * @return \\Illuminate\\Broadcasting\\Channel|array\n     */\n    public function broadcastOn()\n    {\n        return new PrivateChannel('channel-name');\n    }\n}\n"
  },
  {
    "path": "app/Events/OrderUpdated.php",
    "content": "<?php\n\nnamespace App\\Events;\n\nuse App\\Models\\Order;\nuse Illuminate\\Broadcasting\\Channel;\nuse Illuminate\\Broadcasting\\InteractsWithSockets;\nuse Illuminate\\Broadcasting\\PresenceChannel;\nuse Illuminate\\Broadcasting\\PrivateChannel;\nuse Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast;\nuse Illuminate\\Foundation\\Events\\Dispatchable;\nuse Illuminate\\Queue\\SerializesModels;\n\nclass OrderUpdated\n{\n    use Dispatchable, InteractsWithSockets, SerializesModels;\n\n    public $order;\n\n    /**\n     * Create a new event instance.\n     *\n     * @return void\n     */\n    public function __construct(Order $order)\n    {\n        $this->order = $order;\n    }\n\n    /**\n     * Get the channels the event should broadcast on.\n     *\n     * @return \\Illuminate\\Broadcasting\\Channel|array\n     */\n    public function broadcastOn()\n    {\n        return new PrivateChannel('channel-name');\n    }\n}\n"
  },
  {
    "path": "app/Exceptions/AppException.php",
    "content": "<?php\n\n\nnamespace App\\Exceptions;\n\n\nclass AppException extends \\Exception\n{\n\n    public function __construct($message = \"\", $code = 0, \\Throwable $previous = null)\n    {\n        parent::__construct($message, $code, $previous);\n    }\n\n}\n"
  },
  {
    "path": "app/Exceptions/Handler.php",
    "content": "<?php\n\nnamespace App\\Exceptions;\n\nuse Exception;\nuse Illuminate\\Foundation\\Exceptions\\Handler as ExceptionHandler;\n\nclass Handler extends ExceptionHandler\n{\n    /**\n     * A list of the exception types that are not reported.\n     *\n     * @var array\n     */\n    protected $dontReport = [\n        //\n    ];\n\n    /**\n     * A list of the inputs that are never flashed for validation exceptions.\n     *\n     * @var array\n     */\n    protected $dontFlash = [\n        'password',\n        'password_confirmation',\n    ];\n\n    /**\n     * Report or log an exception.\n     *\n     * @param  \\Exception  $exception\n     * @return void\n     *\n     * @throws \\Exception\n     */\n    public function report(Exception $exception)\n    {\n        parent::report($exception);\n    }\n\n    /**\n     * Render an exception into an HTTP response.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\Exception  $exception\n     * @return \\Symfony\\Component\\HttpFoundation\\Response\n     *\n     * @throws \\Exception\n     */\n    public function render($request, Exception $exception)\n    {\n        if ($exception instanceof AppException) {\n            $layout = dujiaoka_config_get('template', 'layui');\n            $tplPath = $layout . '/errors/error';\n            return view($tplPath, ['title' => __('dujiaoka.error_title'), 'content' => $exception->getMessage(), 'url' => \"\"]);\n        }\n        return parent::render($request, $exception);\n    }\n}\n"
  },
  {
    "path": "app/Exceptions/RuleValidationException.php",
    "content": "<?php\n\n\nnamespace App\\Exceptions;\n\n\nclass RuleValidationException extends \\Exception\n{\n\n    public function __construct($message = \"\", $code = 400, \\Throwable $previous = null)\n    {\n        parent::__construct($message, $code, $previous);\n    }\n\n}\n"
  },
  {
    "path": "app/Helpers/functions.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\n\nuse App\\Exceptions\\AppException;\nuse Illuminate\\Support\\Facades\\Cache;\nuse Illuminate\\Support\\Facades\\Storage;\n\nif (! function_exists('replace_mail_tpl')) {\n\n    /**\n     * 替换邮件模板\n     *\n     * @param array $mailtpl 模板\n     * @param array $data 内容\n     * @return array|false|mixed\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    function replace_mail_tpl($mailtpl = [], $data = [])\n    {\n        if (!$mailtpl) {\n            return false;\n        }\n        if ($data) {\n            foreach ($data as $key => $val) {\n                $title = str_replace('{' . $key . '}', $val, isset($title) ? $title : $mailtpl['tpl_name']);\n                $content = str_replace('{' . $key . '}', $val, isset($content) ? $content : $mailtpl['tpl_content']);\n            }\n            return ['tpl_name' => $title, 'tpl_content' => $content];\n        }\n        return $mailtpl;\n    }\n}\n\n\nif (! function_exists('dujiaoka_config_get')) {\n\n    /**\n     * 系统配置获取\n     *\n     * @param string $key 要获取的key\n     * @param $default 默认\n     * @return mixed|null\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    function dujiaoka_config_get(string $key, $default = null)\n    {\n       $sysConfig = Cache::get('system-setting');\n       return $sysConfig[$key] ?? $default;\n    }\n}\n\nif (! function_exists('format_wholesale_price')) {\n\n    /**\n     * 格式化批发价\n     *\n     * @param string $wholesalePriceArr 批发价配置\n     * @return array|null\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    function format_wholesale_price(string $wholesalePriceArr): ?array\n    {\n        $waitArr = explode(PHP_EOL, $wholesalePriceArr);\n        $formatData = [];\n        foreach ($waitArr as $key => $val) {\n            if ($val != \"\") {\n                $explodeFormat = explode('=', delete_html_code($val));\n                if (count($explodeFormat) != 2) {\n                    return null;\n                }\n                $formatData[$key]['number'] = $explodeFormat[0];\n                $formatData[$key]['price'] = $explodeFormat[1];\n            }\n        }\n        sort($formatData);\n        return $formatData;\n    }\n}\n\nif (! function_exists('delete_html_code')) {\n\n    /**\n     * 去除html内容\n     * @param string $str 需要去掉的字符串\n     * @return string\n     */\n    function delete_html_code(string $str): string\n    {\n        $str = trim($str); //清除字符串两边的空格\n        $str = preg_replace(\"/\\t/\", \"\", $str); //使用正则表达式替换内容，如：空格，换行，并将替换为空。\n        $str = preg_replace(\"/\\r\\n/\", \"\", $str);\n        $str = preg_replace(\"/\\r/\", \"\", $str);\n        $str = preg_replace(\"/\\n/\", \"\", $str);\n        $str = preg_replace(\"/ /\", \"\", $str);\n        $str = preg_replace(\"/  /\", \"\", $str);  //匹配html中的空格\n        return trim($str); //返回字符串\n    }\n}\n\nif (! function_exists('format_charge_input')) {\n\n    /**\n     * 格式化代充框\n     *\n     * @param string $charge\n     * @return array|null\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    function format_charge_input(string $charge): ?array\n    {\n        $inputArr = explode(PHP_EOL, $charge);\n        $formatData = [];\n        foreach ($inputArr as $key => $val) {\n            if ($val != \"\") {\n                $explodeFormat = explode('=', delete_html_code($val));\n                if (count($explodeFormat) < 3) {\n                    return null;\n                }\n                $formatData[$key]['field'] = $explodeFormat[0];\n                $formatData[$key]['desc'] = $explodeFormat[1];\n                $formatData[$key]['rule'] = filter_var($explodeFormat[2], FILTER_VALIDATE_BOOLEAN);\n                if(count($explodeFormat) > 3){\n                    $formatData[$key]['placeholder'] = $explodeFormat[3];\n                }else{\n                    $formatData[$key]['placeholder'] = $formatData[$key]['desc'];\n                }\n            }\n        }\n        return $formatData;\n    }\n}\n\nif (! function_exists('site_url')) {\n\n    /**\n     * 获取顶级域名 带协议\n     * @return string\n     */\n    function site_url()\n    {\n        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? \"https://\" : \"http://\";\n        $domainName = $_SERVER['HTTP_HOST'] . '/';\n        return $protocol . $domainName;\n    }\n}\n\nif (! function_exists('md5_signquery')) {\n\n    function md5_signquery(array $parameter, string $signKey)\n    {\n        ksort($parameter); //重新排序$data数组\n        reset($parameter); //内部指针指向数组中的第一个元素\n        $sign = '';\n        $urls = '';\n        foreach ($parameter as $key => $val) {\n            if ($val == '') continue;\n            if ($key != 'sign') {\n                if ($sign != '') {\n                    $sign .= \"&\";\n                    $urls .= \"&\";\n                }\n                $sign .= \"$key=$val\"; //拼接为url参数形式\n                $urls .= \"$key=\" . urlencode($val); //拼接为url参数形式\n            }\n        }\n        $sign = md5($sign . $signKey);//密码追加进入开始MD5签名\n        $query = $urls . '&sign=' . $sign; //创建订单所需的参数\n        return $query;\n    }\n}\n\nif (! function_exists('signquery_string')) {\n\n    function signquery_string(array $data)\n    {\n        ksort($data); //排序post参数\n        reset($data); //内部指针指向数组中的第一个元素\n        $sign = ''; //加密字符串初始化\n        foreach ($data as $key => $val) {\n            if ($val == '' || $key == 'sign') continue; //跳过这些不签名\n            if ($sign) $sign .= '&'; //第一个字符串签名不加& 其他加&连接起来参数\n            $sign .= \"$key=$val\"; //拼接为url参数形式\n        }\n        return $sign;\n    }\n}\n\nif (!function_exists('picture_ulr')) {\n\n    /**\n     * 生成前台图片链接 不存在使用默认图\n     * @param string $file 图片地址\n     * @param false $getHost 是否只获取图片前缀域名\n     * @return \\Illuminate\\Contracts\\Foundation\\Application|\\Illuminate\\Contracts\\Routing\\UrlGenerator|string\n     */\n    function picture_ulr($file, $getHost = false)\n    {\n        if ($getHost) return Storage::disk('admin')->url('');\n        return $file ? Storage::disk('admin')->url($file) : url('assets/common/images/default.jpg');\n    }\n}\n\nif (!function_exists('assoc_unique')) {\n    function assoc_unique($arr, $key)\n    {\n        $tmp_arr = array();\n        foreach ($arr as $k => $v) {\n            if (in_array($v[$key], $tmp_arr)) {//搜索$v[$key]是否在$tmp_arr数组中存在，若存在返回true\n                unset($arr[$k]);\n            } else {\n                $tmp_arr[] = $v[$key];\n            }\n        }\n        sort($arr); //sort函数对数组进行排序\n        return $arr;\n    }\n}\n"
  },
  {
    "path": "app/Http/Controllers/BaseController.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Http\\Controllers;\n\nclass BaseController extends Controller\n{\n\n    /**\n     * 渲染模板\n     *\n     * @param string $tpl 模板名称\n     * @param array $data 数据\n     * @param array $pageTitle 页面标题\n     *\n     * @return \\Illuminate\\Contracts\\Foundation\\Application|\\Illuminate\\Contracts\\View\\Factory|\\Illuminate\\View\\View\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    protected function render(string $tpl, $data = [], string $pageTitle = '')\n    {\n        $layout = dujiaoka_config_get('template', 'unicorn');\n        $tplPath = $layout . '/' .$tpl;\n        return view($tplPath, $data)->with('page_title', $pageTitle);\n    }\n\n    /**\n     * 错误提示\n     *\n     * @param string $content 提示内容\n     * @param string $jumpUri 跳转url\n     * @return \\Illuminate\\Contracts\\Foundation\\Application|\\Illuminate\\Contracts\\View\\Factory|\\Illuminate\\View\\View\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    protected function err(string $content, $jumpUri = '')\n    {\n        $layout = dujiaoka_config_get('template', 'unicorn');\n        $tplPath = $layout . '/errors/error';\n        return view($tplPath, ['title' => __('dujiaoka.error_title'), 'content' => $content, 'url' => $jumpUri])\n            ->with('page_title', __('dujiaoka.error_title'));\n    }\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/Controller.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Foundation\\Auth\\Access\\AuthorizesRequests;\nuse Illuminate\\Foundation\\Bus\\DispatchesJobs;\nuse Illuminate\\Foundation\\Validation\\ValidatesRequests;\nuse Illuminate\\Routing\\Controller as BaseController;\n\nclass Controller extends BaseController\n{\n    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;\n}\n"
  },
  {
    "path": "app/Http/Controllers/Home/HomeController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Home;\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Http\\Controllers\\BaseController;\nuse App\\Models\\Pay;\nuse Germey\\Geetest\\Geetest;\nuse Illuminate\\Database\\DatabaseServiceProvider;\nuse Illuminate\\Database\\QueryException;\nuse Illuminate\\Encryption\\Encrypter;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Auth;\nuse Illuminate\\Support\\Facades\\DB;\nuse Illuminate\\Support\\Facades\\Redis;\n\nclass HomeController extends BaseController\n{\n\n    /**\n     * 商品服务层.\n     * @var \\App\\Service\\PayService\n     */\n    private $goodsService;\n\n    /**\n     * 支付服务层\n     * @var \\App\\Service\\PayService\n     */\n    private $payService;\n\n    public function __construct()\n    {\n        $this->goodsService = app('Service\\GoodsService');\n        $this->payService = app('Service\\PayService');\n    }\n\n    /**\n     * 首页.\n     *\n     * @param Request $request\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function index(Request $request)\n    {\n        $goods = $this->goodsService->withGroup();\n        return $this->render('static_pages/home', ['data' => $goods], __('dujiaoka.page-title.home'));\n    }\n\n    /**\n     * 商品详情\n     *\n     * @param int $id\n     * @return \\Illuminate\\Contracts\\Foundation\\Application|\\Illuminate\\Contracts\\View\\Factory|\\Illuminate\\View\\View\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function buy(int $id)\n    {\n        try {\n            $goods = $this->goodsService->detail($id);\n            $this->goodsService->validatorGoodsStatus($goods);\n            // 有没有优惠码可以展示\n            if (count($goods->coupon)) {\n                $goods->open_coupon = 1;\n            }\n            $formatGoods = $this->goodsService->format($goods);\n            // 加载支付方式.\n            $client = Pay::PAY_CLIENT_PC;\n            if (app('Jenssegers\\Agent')->isMobile()) {\n                $client = Pay::PAY_CLIENT_MOBILE;\n            }\n            $formatGoods->payways = $this->payService->pays($client);\n            return $this->render('static_pages/buy', $formatGoods, $formatGoods->gd_name);\n        } catch (RuleValidationException $ruleValidationException) {\n            return $this->err($ruleValidationException->getMessage());\n        }\n\n    }\n\n    /**\n     * 极验行为验证\n     *\n     * @param Request $request\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function geetest(Request $request)\n    {\n        $data = [\n            'user_id' => @Auth::user()?@Auth::user()->id:'UnLoginUser',\n            'client_type' => 'web',\n            'ip_address' => \\Illuminate\\Support\\Facades\\Request::ip()\n        ];\n        $status = Geetest::preProcess($data);\n        session()->put('gtserver', $status);\n        session()->put('user_id', $data['user_id']);\n        return Geetest::getResponseStr();\n    }\n\n    /**\n     * 安装页面\n     *\n     * @param Request $request\n     * @return \\Illuminate\\Contracts\\Foundation\\Application|\\Illuminate\\Contracts\\View\\Factory|\\Illuminate\\View\\View\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function install(Request $request)\n    {\n        return view('common/install');\n    }\n\n    /**\n     * 执行安装\n     *\n     * @param Request $request\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function doInstall(Request $request)\n    {\n        try {\n            $dbConfig = config('database');\n            $mysqlDB = [\n                'host' => $request->input('db_host'),\n                'port' => $request->input('db_port'),\n                'database' => $request->input('db_database'),\n                'username' => $request->input('db_username'),\n                'password' => $request->input('db_password'),\n            ];\n            $dbConfig['connections']['mysql'] = array_merge($dbConfig['connections']['mysql'], $mysqlDB);\n            // Redis\n            $redisDB = [\n                'host' => $request->input('redis_host'),\n                'password' => $request->input('redis_password', 'null'),\n                'port' => $request->input('redis_port'),\n            ];\n            $dbConfig['redis']['default'] = array_merge($dbConfig['redis']['default'], $redisDB);\n            config(['database' => $dbConfig]);\n            DB::purge();\n            // db测试\n            DB::connection()->select('select 1 limit 1');\n            // redis测试\n            Redis::set('dujiaoka_com', 'ok');\n            Redis::get('dujiaoka_com');\n            // 获得文件模板\n            $envExamplePath = base_path() . DIRECTORY_SEPARATOR . '.env.example';\n            $envPath =  base_path() . DIRECTORY_SEPARATOR . '.env';\n            $installLock = base_path() . DIRECTORY_SEPARATOR . 'install.lock';\n            $installSql = database_path() . DIRECTORY_SEPARATOR . 'sql' . DIRECTORY_SEPARATOR . 'install.sql';\n            $envTemp = file_get_contents($envExamplePath);\n            $postData = $request->all();\n            // 临时写入key\n            $postData['app_key'] = 'base64:' . base64_encode(\n                    Encrypter::generateKey(config('app.cipher'))\n                );\n            foreach ($postData as $key => $item) {\n                $envTemp = str_replace('{' . $key . '}', $item, $envTemp);\n            }\n            // 写入配置\n            file_put_contents($envPath, $envTemp);\n            // 导入sql\n            DB::unprepared(file_get_contents($installSql));\n            // 写入安装锁\n            file_put_contents($installLock, 'install ok');\n            return 'success';\n        } catch (\\RedisException $exception) {\n            return 'Redis配置错误 :' . $exception->getMessage();\n        } catch (QueryException $exception) {\n            return '数据库配置错误 :' . $exception->getMessage();\n        } catch (\\Exception $exception) {\n            return $exception->getMessage();\n        }\n    }\n\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/Home/OrderController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Home;\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Http\\Controllers\\BaseController;\nuse App\\Models\\Order;\nuse App\\Service\\OrderProcessService;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Cookie;\nuse Illuminate\\Support\\Facades\\DB;\n\n\n/**\n * 订单控制器\n *\n * Class OrderController\n * @package App\\Http\\Controllers\\Home\n * @author: Assimon\n * @email: Ashang@utf8.hk\n * @blog: https://utf8.hk\n * Date: 2021/5/30\n */\nclass OrderController extends BaseController\n{\n\n\n    /**\n     * 订单服务层\n     * @var \\App\\Service\\OrderService\n     */\n    private $orderService;\n\n    /**\n     * 订单处理层.\n     * @var OrderProcessService\n     */\n    private $orderProcessService;\n\n    public function __construct()\n    {\n        $this->orderService = app('Service\\OrderService');\n        $this->orderProcessService = app('Service\\OrderProcessService');\n    }\n\n    /**\n     * 创建订单\n     *\n     * @param Request $request\n     * @return \\Illuminate\\Contracts\\Foundation\\Application|\\Illuminate\\Contracts\\View\\Factory|\\Illuminate\\View\\View\n     * @throws \\Illuminate\\Validation\\ValidationException\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function createOrder(Request $request)\n    {\n        DB::beginTransaction();\n        try {\n            $this->orderService->validatorCreateOrder($request);\n            $goods = $this->orderService->validatorGoods($request);\n            $this->orderService->validatorLoopCarmis($request);\n            // 设置商品\n            $this->orderProcessService->setGoods($goods);\n            // 优惠码\n            $coupon = $this->orderService->validatorCoupon($request);\n            // 设置优惠码\n            $this->orderProcessService->setCoupon($coupon);\n            $otherIpt = $this->orderService->validatorChargeInput($goods, $request);\n            $this->orderProcessService->setOtherIpt($otherIpt);\n            // 数量\n            $this->orderProcessService->setBuyAmount($request->input('by_amount'));\n            // 支付方式\n            $this->orderProcessService->setPayID($request->input('payway'));\n            // 下单邮箱\n            $this->orderProcessService->setEmail($request->input('email'));\n            // ip地址\n            $this->orderProcessService->setBuyIP($request->getClientIp());\n            // 查询密码\n            $this->orderProcessService->setSearchPwd($request->input('search_pwd', ''));\n            // 创建订单\n            $order = $this->orderProcessService->createOrder();\n            DB::commit();\n            // 设置订单cookie\n            $this->queueCookie($order->order_sn);\n            return redirect(url('/bill', ['orderSN' => $order->order_sn]));\n        } catch (RuleValidationException $exception) {\n            DB::rollBack();\n            return $this->err($exception->getMessage());\n        }\n    }\n\n    /**\n     * 设置订单cookie.\n     * @param string $orderSN 订单号.\n     */\n    private function queueCookie(string $orderSN) : void\n    {\n        // 设置订单cookie\n        $cookies = Cookie::get('dujiaoka_orders');\n        if (empty($cookies)) {\n            Cookie::queue('dujiaoka_orders', json_encode([$orderSN]));\n        } else {\n            $cookies = json_decode($cookies, true);\n            array_push($cookies, $orderSN);\n            Cookie::queue('dujiaoka_orders', json_encode($cookies));\n        }\n    }\n\n    /**\n     * 结账\n     *\n     * @param string $orderSN\n     * @return \\Illuminate\\Contracts\\Foundation\\Application|\\Illuminate\\Contracts\\View\\Factory|\\Illuminate\\View\\View\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function bill(string $orderSN)\n    {\n        $order = $this->orderService->detailOrderSN($orderSN);\n        if (empty($order)) {\n            return $this->err(__('dujiaoka.prompt.order_does_not_exist'));\n        }\n        if ($order->status == Order::STATUS_EXPIRED) {\n            return $this->err(__('dujiaoka.prompt.order_is_expired'));\n        }\n        return $this->render('static_pages/bill', $order, __('dujiaoka.page-title.bill'));\n    }\n\n\n    /**\n     * 订单状态监测\n     *\n     * @param string $orderSN 订单号\n     * @return \\Illuminate\\Http\\JsonResponse\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function checkOrderStatus(string $orderSN)\n    {\n        $order = $this->orderService->detailOrderSN($orderSN);\n        // 订单不存在或者已经过期\n        if (!$order || $order->status == Order::STATUS_EXPIRED) {\n            return response()->json(['msg' => 'expired', 'code' => 400001]);\n        }\n        // 订单已经支付\n        if ($order->status == Order::STATUS_WAIT_PAY) {\n            return response()->json(['msg' => 'wait....', 'code' => 400000]);\n        }\n        // 成功\n        if ($order->status > Order::STATUS_WAIT_PAY) {\n            return response()->json(['msg' => 'success', 'code' => 200]);\n        }\n    }\n\n    /**\n     * 通过订单号展示订单详情\n     *\n     * @param string $orderSN 订单号.\n     * @return \\Illuminate\\Contracts\\Foundation\\Application|\\Illuminate\\Contracts\\View\\Factory|\\Illuminate\\View\\View\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function detailOrderSN(string $orderSN)\n    {\n        $order = $this->orderService->detailOrderSN($orderSN);\n        // 订单不存在或者已经过期\n        if (!$order) {\n            return $this->err(__('dujiaoka.prompt.order_does_not_exist'));\n        }\n        return $this->render('static_pages/orderinfo', ['orders' => [$order]], __('dujiaoka.page-title.order-detail'));\n    }\n\n    /**\n     * 订单号查询\n     *\n     * @param Request $request\n     * @return \\Illuminate\\Contracts\\Foundation\\Application|\\Illuminate\\Contracts\\View\\Factory|\\Illuminate\\View\\View\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function searchOrderBySN(Request $request)\n    {\n        return $this->detailOrderSN($request->input('order_sn'));\n    }\n\n    /**\n     * 通过邮箱查询\n     *\n     * @param Request $request\n     * @return \\Illuminate\\Contracts\\Foundation\\Application|\\Illuminate\\Contracts\\View\\Factory|\\Illuminate\\View\\View\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function searchOrderByEmail(Request $request)\n    {\n        if (\n            !$request->has('email') ||\n            (\n                dujiaoka_config_get('is_open_search_pwd', \\App\\Models\\BaseModel::STATUS_CLOSE) == \\App\\Models\\BaseModel::STATUS_OPEN &&\n                !$request->has('search_pwd')\n            )\n        ) {\n            return $this->err(__('dujiaoka.prompt.server_illegal_request'));\n        }\n        $orders = $this->orderService->withEmailAndPassword($request->input('email'), $request->input('search_pwd',''));\n        if (!$orders) {\n            return $this->err(__('dujiaoka.prompt.no_related_order_found'));\n        }\n        return $this->render('static_pages/orderinfo', ['orders' => $orders], __('dujiaoka.page-title.order-detail'));\n    }\n\n    /**\n     * 通过浏览器缓存查询\n     * @param Request $request\n     * @return \\Illuminate\\Contracts\\Foundation\\Application|\\Illuminate\\Contracts\\View\\Factory|\\Illuminate\\View\\View\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function searchOrderByBrowser(Request $request)\n    {\n        $cookies = Cookie::get('dujiaoka_orders');\n        if (empty($cookies)) {\n            return $this->err(__('dujiaoka.prompt.no_related_order_found_for_cache'));\n        }\n        $orderSNS = json_decode($cookies, true);\n        $orders = $this->orderService->byOrderSNS($orderSNS);\n        return $this->render('static_pages/orderinfo', ['orders' => $orders], __('dujiaoka.page-title.order-detail'));\n    }\n\n    /**\n     * 订单查询页\n     *\n     * @param Request $request\n     * @return mixed\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function orderSearch(Request $request)\n    {\n        return $this->render('static_pages/searchOrder', [], __('dujiaoka.page-title.order-search'));\n    }\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/Pay/AlipayController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Pay;\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Http\\Controllers\\PayController;\nuse Illuminate\\Http\\Request;\nuse Yansongda\\Pay\\Pay;\n\nclass AlipayController extends PayController\n{\n\n    /**\n     * 支付宝支付网关\n     *\n     * @param string $payway\n     * @param string $orderSN\n     */\n    public function gateway(string $payway, string $orderSN)\n    {\n        try {\n            // 加载网关\n            $this->loadGateWay($orderSN, $payway);\n            $config = [\n                'app_id' => $this->payGateway->merchant_id,\n                'ali_public_key' => $this->payGateway->merchant_key,\n                'private_key' => $this->payGateway->merchant_pem,\n                'notify_url' => url($this->payGateway->pay_handleroute . '/notify_url'),\n                'return_url' => url('detail-order-sn', ['orderSN' => $this->order->order_sn]),\n                'http' => [ // optional\n                    'timeout' => 10.0,\n                    'connect_timeout' => 10.0,\n                ],\n            ];\n            $order = [\n                'out_trade_no' => $this->order->order_sn,\n                'total_amount' => (float)$this->order->actual_price,\n                'subject' => $this->order->order_sn\n            ];\n            switch ($payway){\n                case 'zfbf2f':\n                case 'alipayscan':\n                    try{\n                        $result = Pay::alipay($config)->scan($order)->toArray();\n                        $result['payname'] = $this->order->order_sn;\n                        $result['actual_price'] = (float)$this->order->actual_price;\n                        $result['orderid'] = $this->order->order_sn;\n                        $result['jump_payuri'] = $result['qr_code'];\n                        return $this->render('static_pages/qrpay', $result, __('dujiaoka.scan_qrcode_to_pay'));\n                    } catch (\\Exception $e) {\n                        return $this->err(__('dujiaoka.prompt.abnormal_payment_channel') . $e->getMessage());\n                    }\n                case 'aliweb':\n                    try{\n                        $result = Pay::alipay($config)->web($order);\n                        return $result;\n                    } catch (\\Exception $e) {\n                        return $this->err(__('dujiaoka.prompt.abnormal_payment_channel') . $e->getMessage());\n                    }\n                case 'aliwap':\n                    try{\n                        $result = Pay::alipay($config)->wap($order);\n                        return $result;\n                    } catch (\\Exception $e) {\n                        return $this->err(__('dujiaoka.prompt.abnormal_payment_channel') . $e->getMessage());\n                    }\n            }\n        } catch (RuleValidationException $exception) {\n            return $this->err($exception->getMessage());\n        }\n    }\n\n\n    /**\n     * 异步通知\n     */\n    public function notifyUrl(Request $request)\n    {\n        $orderSN = $request->input('out_trade_no');\n        $order = $this->orderService->detailOrderSN($orderSN);\n        if (!$order) {\n            return 'error';\n        }\n        $payGateway = $this->payService->detail($order->pay_id);\n        if (!$payGateway) {\n            return 'error';\n        }\n        if($payGateway->pay_handleroute != '/pay/alipay'){\n            return 'fail';\n        }\n        $config = [\n            'app_id' => $payGateway->merchant_id,\n            'ali_public_key' => $payGateway->merchant_key,\n            'private_key' => $payGateway->merchant_pem,\n        ];\n        $pay = Pay::alipay($config);\n        try{\n            // 验证签名\n            $result = $pay->verify();\n            if ($result->trade_status == 'TRADE_SUCCESS' || $result->trade_status == 'TRADE_FINISHED') {\n                $this->orderProcessService->completedOrder($result->out_trade_no, $result->total_amount, $result->trade_no);\n            }\n            return 'success';\n        } catch (\\Exception $exception) {\n            return 'fail';\n        }\n    }\n\n\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/Pay/CoinbaseController.php",
    "content": "<?php\nnamespace App\\Http\\Controllers\\Pay;\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Http\\Controllers\\PayController;\nuse Illuminate\\Http\\Request;\n\nclass CoinbaseController extends PayController\n{\n\n    public function gateway(string $payway, string $orderSN)\n    {\n        try {\n            // 加载网关\n            $this->loadGateWay($orderSN, $payway);\n            //构造要请求的参数数组，无需改动\n            switch ($payway) {\n                case 'coinbase':\n                default:\n                    try {\n                        $createOrderUrl=\"https://api.commerce.coinbase.com/charges\";\n                        $price_amount = sprintf('%.2f', (float)$this->order->actual_price);// 只取小数点后两位\n                        $fees = (double)$this->payGateway->merchant_id;//手续费费率  比如 0.05\n                        if($fees>0.00)\n                        {\n                            $price_amount =(double)$price_amount * (1.00+$fees);// 价格 * （1 + 0.05）\n                        }\n\n\n                        $redirect_url = url('detail-order-sn', ['orderSN' => $this->order->order_sn]);  //同步地址\n                        $cancel_url = url('detail-order-sn', ['orderSN' => $this->order->order_sn]);  //同步地址\n                        $config = [\n                            'name'=>$this->order->title,\n                            'description'=>$this->order->title.'需付款'.$price_amount.'元',\n                            'pricing_type' => 'fixed_price',\n                            'local_price' => [\n                                'amount' =>  $price_amount,\n                                'currency' => 'CNY'\n                            ],\n                            'metadata' => [\n                                'customer_id' =>  $this->order->order_sn,\n                                'customer_name' => $this->order->title\n                            ],\n                            'redirect_url' =>$redirect_url,\n                            'cancel_url'=> $cancel_url\n                        ];\n                        $header = array();\n                        $header[] = 'Content-Type:application/json';\n                        $header[] = 'X-CC-Api-Key:'.$this->payGateway->merchant_key; //APP key\n                        $header[] = 'X-CC-Version: 2018-03-22';\n\n                        $ch = curl_init(); //使用curl请求\n                        curl_setopt($ch, CURLOPT_URL, $createOrderUrl);\n                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n                        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);\n                        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);\n                        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($config));\n                        $coinbase_json = curl_exec($ch);\n                        curl_close($ch);\n\n                        $coinbase_date=json_decode($coinbase_json,true);\n                        if(is_array($coinbase_date))\n                        {\n                            $payment_url = $coinbase_date['data']['hosted_url'];\n                        }\n                        else\n                        {\n                            return 'fail|Coinbase支付接口请求失败';\n                        }\n                        return redirect()->away($payment_url);\n                    } catch (\\Exception $e) {\n                        throw new RuleValidationException(__('dujiaoka.prompt.abnormal_payment_channel') . $e->getMessage());\n                    }\n                    break;\n            }\n        } catch (RuleValidationException $exception) {\n            return $this->err($exception->getMessage());\n        }\n    }\n\n    public function notifyUrl(Request $request)\n    {\n        $payload = file_get_contents( 'php://input' );\n        $sig    = $_SERVER['HTTP_X_CC_WEBHOOK_SIGNATURE'];\n\t\t$data       = json_decode( $payload, true );\n\t\t$event_data = $data['event']['data'];\n\t\t$order = $this->orderService->detailOrderSN($event_data['metadata']['customer_id']);//\n\t\tif (!$order) {\n\t\t\treturn 'fail';\n\t\t}\n\t\t$payGateway = $this->payService->detail($order->pay_id);\n\t\tif (!$payGateway) {\n\t\t\treturn 'fail';\n\t\t}\n        if($payGateway->pay_handleroute != 'pay/coinbase'){\n            return 'fail';\n        }\n\t\t$secret = $payGateway->merchant_pem;//共享密钥\n\t\t$sig2 = hash_hmac( 'sha256', $payload, $secret );\n        $result_str=array(\"confirmed\",\"resolved\");//返回的结果字符串数组\n\t\tif (!empty( $payload ) && ($sig === $sig2))\n\t\t{\n\n\t\t\tforeach ($event_data['payments'] as $payment) {\n\t\t\t\t//if ((strtolower($payment['status']) === 'confirmed')||(strtolower($payment['status']) === 'resolved')) {\n                if(in_array(strtolower($payment['status']),$result_str)){\n\t\t\t\t\t$return_pay_amount = $payment['value']['local']['amount'];\n\t\t\t\t\t$return_currency=$payment['value']['local']['currency'];\n\t\t\t\t\t$return_status=strtolower($payment['status']);\n\t\t\t\t}\n\t\t\t}\n            if($return_currency !== 'CNY')\n\t\t\t{\n\t\t\t\treturn 'error|Notify: Wrong currency:'.$return_currency;\n\t\t\t}\n\n\t\t\t$bccomp = bccomp($order->actual_price, $return_pay_amount, 2); //如果订单金额 大于 实际支付金额 返回1，抛出异常\n            if ($bccomp == 1) {\n                throw new \\Exception(__('Coinbase付款金额不足'));\n            }\n            $return_merchant_order_id = $event_data['metadata']['customer_id'];//卡网订单号\n            $tradeid = $event_data['code'];//Coinbase订单号\n            //if($return_status === 'confirmed'||$return_status === 'resolved')\n            if(in_array(strtolower($payment['status']),$result_str)) {\n                $this->orderProcessService->completedOrder($return_merchant_order_id, $order->actual_price, $tradeid);// 卡网订单号，订单金额（不能传入支付金额，否则抛出订单金额不一致异常），收款平台订单号\n                return \"{\\\"status\\\": 200}\";\n            } else {\n                //不合法的数据\n                return 'fail';\n                //返回失败 继续补单\n            }\n\n        } else {\n            //不合法的数据\n            return 'fail|wrong sig';\n            //返回失败 继续补单\n        }\n\n\n    }\n\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/Pay/EpusdtController.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Http\\Controllers\\Pay;\n\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Http\\Controllers\\PayController;\nuse GuzzleHttp\\Client;\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Http\\Request;\n\nclass EpusdtController extends PayController\n{\n    public function gateway(string $payway, string $orderSN)\n    {\n        try {\n            // 加载网关\n            $this->loadGateWay($orderSN, $payway);\n            //构造要请求的参数数组，无需改动\n            $parameter = [\n                \"amount\" => (float)$this->order->actual_price,//原价\n                \"order_id\" => $this->order->order_sn, //可以是用户ID,站内商户订单号,用户名\n                'redirect_url' => route('epusdt-return', ['order_id' => $this->order->order_sn]),\n                'notify_url' => url($this->payGateway->pay_handleroute . '/notify_url'),\n            ];\n            $parameter['signature'] = $this->epusdtSign($parameter, $this->payGateway->merchant_id);\n            $client = new Client([\n                'headers' => [ 'Content-Type' => 'application/json' ]\n            ]);\n            $response = $client->post($this->payGateway->merchant_pem, ['body' => json_encode($parameter)]);\n            $body = json_decode($response->getBody()->getContents(), true);\n            if (!isset($body['status_code']) || $body['status_code'] != 200) {\n                return $this->err(__('dujiaoka.prompt.abnormal_payment_channel') . $body['message']);\n            }\n            return redirect()->away($body['data']['payment_url']);\n        } catch (RuleValidationException $exception) {\n        } catch (GuzzleException $exception) {\n            return $this->err($exception->getMessage());\n        }\n    }\n\n\n    private function epusdtSign(array $parameter, string $signKey)\n    {\n        ksort($parameter);\n        reset($parameter); //内部指针指向数组中的第一个元素\n        $sign = '';\n        $urls = '';\n        foreach ($parameter as $key => $val) {\n            if ($val == '') continue;\n            if ($key != 'signature') {\n                if ($sign != '') {\n                    $sign .= \"&\";\n                    $urls .= \"&\";\n                }\n                $sign .= \"$key=$val\"; //拼接为url参数形式\n                $urls .= \"$key=\" . urlencode($val); //拼接为url参数形式\n            }\n        }\n        $sign = md5($sign . $signKey);//密码追加进入开始MD5签名\n        return $sign;\n    }\n\n    public function notifyUrl(Request $request)\n    {\n        $data = $request->all();\n        $order = $this->orderService->detailOrderSN($data['order_id']);\n        if (!$order) {\n            return 'fail';\n        }\n        $payGateway = $this->payService->detail($order->pay_id);\n        if (!$payGateway) {\n            return 'fail';\n        }\n        if($payGateway->pay_handleroute != 'pay/epusdt'){\n            return 'fail';\n        }\n        $signature = $this->epusdtSign($data, $payGateway->merchant_id);\n        if ($data['signature'] != $signature) { //不合法的数据\n            return 'fail';  //返回失败 继续补单\n        } else {\n            //合法的数据\n            //业务处理\n            $this->orderProcessService->completedOrder($data['order_id'], $data['amount'], $data['trade_id']);\n            return 'ok';\n        }\n    }\n\n    public function returnUrl(Request $request)\n    {\n        $oid = $request->get('order_id');\n        // 异步通知还没到就跳转了，所以这里休眠2秒\n        sleep(2);\n        return redirect(url('detail-order-sn', ['orderSN' => $oid]));\n    }\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/Pay/MapayController.php",
    "content": "<?php\nnamespace App\\Http\\Controllers\\Pay;\n\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Http\\Controllers\\PayController;\nuse Illuminate\\Http\\Request;\n\nclass MapayController extends PayController\n{\n\n    public function gateway(string $payway, string $orderSN)\n    {\n        try {\n            // 加载网关\n            $this->loadGateWay($orderSN, $payway);\n            //构造要请求的参数数组，无需改动\n            $parameter = array(\n                \"id\" => (int)$this->payGateway->merchant_id,//平台ID号\n                \"price\" => (float)$this->order->actual_price,//原价\n                \"pay_id\" => $this->order->order_sn, //可以是用户ID,站内商户订单号,用户名\n                \"param\" => $this->payGateway->pay_check,//自定义参数\n                \"act\" => 0,//是否开启认证版的免挂机功能\n                \"outTime\" => 120,//二维码超时设置\n                \"page\" => 1,//付款页面展示方式\n                'return_url' => url('detail-order-sn', ['orderSN' => $this->order->order_sn]),\n                'notify_url' => url($this->payGateway->pay_handleroute . '/notify_url'),\n                \"pay_type\" => 0,//支付宝使用官方接口\n                \"chart\" => 'utf-8'//字符编码方式\n                //其他业务参数根据在线开发文档，添加参数.文档地址:https://codepay.fateqq.com/apiword/\n                //如\"参数名\"=>\"参数值\"\n            );\n            switch ($payway){\n                case 'mqq':\n                    $parameter['type'] = 2;\n                    break;\n                case 'mzfb':\n                    $parameter['type'] = 1;\n                    break;\n                case 'mwx':\n                default:\n                    $parameter['type'] = 3;\n                    break;\n            }\n            $quri = md5_signquery($parameter, $this->payGateway->merchant_pem);\n            $payurl = $this->payGateway->merchant_key . $quri; //支付页面\n            return redirect()->away($payurl);\n        } catch (RuleValidationException $exception) {\n            return $this->err($exception->getMessage());\n        }\n    }\n\n\n    public function notifyUrl(Request $request)\n    {\n        $data = $request->post();\n        $order = $this->orderService->detailOrderSN($data['pay_id']);\n        if (!$order) {\n            return 'fail';\n        }\n        $payGateway = $this->payService->detail($order->pay_id);\n        if (!$payGateway) {\n            return 'fail';\n        }\n        if($payGateway->pay_handleroute != '/pay/mapay'){\n            return 'fail';\n        }\n        $query = signquery_string($data);\n        if (!$data['pay_no'] || md5($query . $payGateway->merchant_pem ) != $data['sign']) { //不合法的数据\n            return 'fail';  //返回失败 继续补单\n        } else { //合法的数据\n            //业务处理\n            $this->orderProcessService->completedOrder($data['pay_id'], $data['money'], $data['pay_id']);\n            return 'success';\n        }\n    }\n\n\n\n\n}\n\n\n"
  },
  {
    "path": "app/Http/Controllers/Pay/PayjsController.php",
    "content": "<?php\nnamespace App\\Http\\Controllers\\Pay;\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Http\\Controllers\\PayController;\nuse Illuminate\\Http\\Request;\nuse Xhat\\Payjs\\Facades\\Payjs;\n\n\nclass PayjsController extends PayController\n{\n\n    public function gateway(string $payway, string $orderSN)\n    {\n        try {\n            // 加载网关\n            $this->loadGateWay($orderSN, $payway);\n            // 构造订单基础信息\n            $data = [\n                'body' => $this->order->order_sn,                                // 订单标题\n                'total_fee' => bcmul($this->order->actual_price, 100, 0),    // 订单金额\n                'out_trade_no' => $this->order->order_sn,                           // 订单号\n                'notify_url' => url($this->payGateway->pay_handleroute . '/notify_url'),\n            ];\n            config(['payjs.mchid' => $this->payGateway->merchant_id, 'payjs.key' => $this->payGateway->merchant_pem]);\n            switch ($payway){\n                case 'payjswescan':\n                    try{\n                        $payres = Payjs::native($data);\n                        if ($payres['return_code'] != 1) {\n                            throw new RuleValidationException($payres['return_msg']);\n                        }\n                        $result['payname'] = $this->payGateway->pay_name;\n                        $result['actual_price'] = (float)$this->order->actual_price;\n                        $result['orderid'] = $this->order->order_sn;\n                        $result['qr_code'] = $payres['code_url'];\n                        return $this->render('static_pages/qrpay', $result, __('dujiaoka.scan_qrcode_to_pay'));\n                    } catch (\\Exception $e) {\n                        throw new RuleValidationException(__('dujiaoka.prompt.abnormal_payment_channel') . $e->getMessage());\n                    }\n                    break;\n            }\n        } catch (RuleValidationException $exception) {\n            return $this->err($exception->getMessage());\n        }\n    }\n\n\n    public function notifyUrl(Request $request)\n    {\n        $orderSN = $request->input('out_trade_no');\n        $order = $this->orderService->detailOrderSN($orderSN);\n        if (!$order) {\n            return 'error';\n        }\n        $payGateway = $this->payService->detail($order->pay_id);\n        if (!$payGateway) {\n            return 'error';\n        }\n        if($payGateway->pay_handleroute != '/pay/payjs'){\n            return 'fail';\n        }\n        config(['payjs.mchid' => $payGateway->merchant_id, 'payjs.key' => $payGateway->merchant_pem]);\n        $notify_info = Payjs::notify();\n        $totalFee = bcdiv($notify_info['total_fee'], 100, 2);\n        $this->orderProcessService->completedOrder($notify_info['out_trade_no'], $totalFee, $notify_info['payjs_order_id']);\n        return 'success';\n    }\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/Pay/PaypalPayController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Pay;\n\n\nuse AmrShawky\\LaravelCurrency\\Facade\\Currency;\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Http\\Controllers\\PayController;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Log;\nuse PayPal\\Api\\Amount;\nuse PayPal\\Api\\Details;\nuse PayPal\\Api\\Item;\nuse PayPal\\Api\\ItemList;\nuse PayPal\\Api\\Payer;\nuse PayPal\\Api\\Payment;\nuse PayPal\\Api\\PaymentExecution;\nuse PayPal\\Api\\RedirectUrls;\nuse PayPal\\Api\\Transaction;\nuse PayPal\\Auth\\OAuthTokenCredential;\nuse PayPal\\Exception\\PayPalConnectionException;\nuse PayPal\\Rest\\ApiContext;\n\nclass PaypalPayController extends PayController\n{\n\n    const Currency = 'USD'; //货币单位\n\n    public function gateway(string $payway, string $orderSN)\n    {\n        try {\n            // 加载网关\n            $this->loadGateWay($orderSN, $payway);\n            $paypal = new ApiContext(\n                new OAuthTokenCredential(\n                    $this->payGateway->merchant_key,\n                    $this->payGateway->merchant_pem\n                )\n            );\n            $paypal->setConfig(['mode' => 'live']);\n            $product = $this->order->title;\n            // 得到汇率\n            $total = Currency::convert()\n                ->from('CNY')\n                ->to('USD')\n                ->amount($this->order->actual_price)\n                ->round(2)\n                ->get();\n            $shipping = 0;\n            $description = $this->order->title;\n            $payer = new Payer();\n            $payer->setPaymentMethod('paypal');\n            $item = new Item();\n            $item->setName($product)->setCurrency(self::Currency)->setQuantity(1)->setPrice($total);\n            $itemList = new ItemList();\n            $itemList->setItems([$item]);\n            $details = new Details();\n            $details->setShipping($shipping)->setSubtotal($total);\n            $amount = new Amount();\n            $amount->setCurrency(self::Currency)->setTotal($total)->setDetails($details);\n            $transaction = new Transaction();\n            $transaction->setAmount($amount)->setItemList($itemList)->setDescription($description)->setInvoiceNumber($this->order->order_sn);\n            $redirectUrls = new RedirectUrls();\n            $redirectUrls->setReturnUrl(route('paypal-return', ['success' => 'ok', 'orderSN' => $this->order->order_sn]))->setCancelUrl(route('paypal-return', ['success' => 'no', 'orderSN' => $this->order->order_sn]));\n            $payment = new Payment();\n            $payment->setIntent('sale')->setPayer($payer)->setRedirectUrls($redirectUrls)->setTransactions([$transaction]);\n            $payment->create($paypal);\n            $approvalUrl = $payment->getApprovalLink();\n            return redirect($approvalUrl);\n        } catch (PayPalConnectionException $payPalConnectionException) {\n            return $this->err($payPalConnectionException->getMessage());\n        } catch (RuleValidationException $exception) {\n            return $this->err($exception->getMessage());\n        }\n    }\n\n    /**\n     *paypal 同步回调\n     */\n    public function returnUrl(Request $request)\n    {\n        $success = $request->input('success');\n        $paymentId =  $request->input('paymentId');\n        $payerID =  $request->input('PayerID');\n        $orderSN = $request->input('orderSN');\n        if ($success == 'no' || empty($paymentId) || empty($payerID)) {\n            // 取消支付\n            redirect(url('detail-order-sn', ['orderSN' => $payerID]));\n        }\n        $order = $this->orderService->detailOrderSN($orderSN);\n        if (!$order) {\n            return 'error';\n        }\n        $payGateway = $this->payService->detail($order->pay_id);\n        if (!$payGateway) {\n            return 'error';\n        }\n        if($payGateway->pay_handleroute != '/pay/paypal'){\n            return 'error';\n        }\n        $paypal = new ApiContext(\n            new OAuthTokenCredential(\n                $payGateway->merchant_key,\n                $payGateway->merchant_pem\n            )\n        );\n        $paypal->setConfig(['mode' => 'live']);\n        $payment = Payment::get($paymentId, $paypal);\n        $execute = new PaymentExecution();\n        $execute->setPayerId($payerID);\n        try {\n            $payment->execute($execute, $paypal);\n            $this->orderProcessService->completedOrder($orderSN, $order->actual_price, $paymentId);\n            Log::info(\"paypal支付成功\",  ['支付成功，支付ID【' . $paymentId . '】,支付人ID【' . $payerID . '】']);\n        } catch (\\Exception $e) {\n            Log::error(\"paypal支付失败\", ['支付失败，支付ID【' . $paymentId . '】,支付人ID【' . $payerID . '】']);\n        }\n        return redirect(url('detail-order-sn', ['orderSN' => $orderSN]));\n    }\n\n\n    /**\n     * 异步通知\n     * TODO: 暂未实现，但是好像只实现同步回调即可。这个可以放在后面实现\n     */\n    public function notifyUrl(Request $request)\n    {\n        //获取回调结果\n        $json_data = $this->get_JsonData();\n        if(!empty($json_data)){\n            Log::debug(\"paypal notify info:\\r\\n\" . json_encode($json_data));\n        }else{\n            Log::debug(\"paypal notify fail:参加为空\");\n        }\n\n    }\n\n    private function get_JsonData()\n    {\n        $json = file_get_contents('php://input');\n        if ($json) {\n            $json = str_replace(\"'\", '', $json);\n            $json = json_decode($json,true);\n        }\n        return $json;\n    }\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/Pay/PaysapiController.php",
    "content": "<?php\nnamespace App\\Http\\Controllers\\Pay;\n\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Http\\Controllers\\PayController;\nuse Illuminate\\Http\\Request;\n\nclass PaysapiController extends PayController\n{\n\n    const PAY_URI = 'https://pay.bearsoftware.net.cn/';\n\n    public function gateway(string $payway, string $orderSN)\n    {\n        try {\n            // 加载网关\n            $this->loadGateWay($orderSN, $payway);\n            //从网页传入price:支付价格， istype:支付渠道：1-支付宝；2-微信支付\n            $price = (float)$this->order->actual_price;\n            $orderuid = $this->order->email;       //此处传入您网站用户的用户名，方便在paysapi后台查看是谁付的款，强烈建议加上。可忽略。\n            //校验传入的表单，确保价格为正常价格（整数，1位小数，2位小数都可以），支付渠道只能是1或者2，orderuid长度不要超过33个中英文字。\n            //此处就在您服务器生成新订单，并把创建的订单号传入到下面的orderid中。\n            $goodsname = $this->order->order_sn;\n            $orderid = $this->order->order_sn;    //每次有任何参数变化，订单号就变一个吧。\n            $uid = $this->payGateway->merchant_id; //\"此处填写PaysApi的uid\";\n            $token = $this->payGateway->merchant_pem; //\"此处填写PaysApi的Token\";\n            $return_url = route('paysapi-return', ['order_id' => $this->order->order_sn]);\n            $notify_url = url($this->payGateway->pay_handleroute . '/notify_url');\n            switch ($payway){\n                case 'pszfb':\n                    $istype = 1;\n                    break;\n                case 'pswx':\n                default:\n                $istype = 2;\n                    break;\n            }\n            $key = md5($goodsname. $istype . $notify_url . $orderid . $orderuid . $price . $return_url . $token . $uid);\n            //经常遇到有研发问为啥key值返回错误，大多数原因：1.参数的排列顺序不对；2.上面的参数少传了，但是这里的key值又带进去计算了，导致服务端key算出来和你的不一样。\n            $html = \"\n                <html><head>\n                    <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html; charset=utf-8\\\">\n                    <title>loading pay...</title>\n                    <style type=\\\"text/css\\\">\n                        body {margin:0;padding:0;}\n                        p {position:absolute;\n                            left:50%;top:50%;\n                            width:330px;height:30px;\n                            margin:-35px 0 0 -160px;\n                            padding:20px;font:bold 14px/30px \\\"宋体\\\", Arial;\n                            text-indent:22px;border:1px solid #c5d0dc;}\n                        #waiting {font-family:Arial;}\n                    </style>\n                <script>\n                function open_without_referrer(link){\n                document.body.appendChild(document.createElement('iframe')).src='javascript:\\\"<script>top.location.replace(\\''+link+'\\')<\\/script>\\\"';\n                }\n                </script>\n                </head>\n                <body style=\\\"\\\">\n                <form id=\\\"alipaysubmit\\\" name=\\\"alipaysubmit\\\" action=\\\"\".self::PAY_URI.\"\\\" method=\\\"post\\\">\n                <input type=\\\"hidden\\\" name=\\\"goodsname\\\" value=\\\"\".$goodsname.\"\\\">\n                <input type=\\\"hidden\\\" name=\\\"istype\\\" value=\\\"\".$istype.\"\\\">\n                <input type=\\\"hidden\\\" name=\\\"key\\\" value=\\\"\".$key.\"\\\">\n                <input type=\\\"hidden\\\" name=\\\"notify_url\\\" value=\\\"\".$notify_url.\"\\\">\n                <input type=\\\"hidden\\\" name=\\\"orderid\\\" value=\\\"\".$orderid.\"\\\">\n                <input type=\\\"hidden\\\" name=\\\"orderuid\\\" value=\\\"\".$orderuid.\"\\\">\n                <input type=\\\"hidden\\\" name=\\\"price\\\" value=\\\"\".$price.\"\\\">\n                <input type=\\\"hidden\\\" name=\\\"return_url\\\" value=\\\"\".$return_url.\"\\\">\n                <input type=\\\"hidden\\\" name=\\\"uid\\\" value=\\\"\".$uid.\"\\\">\n                <input type=\\\"submit\\\" value=\\\"正在跳转\\\">\n                </form><script>document.forms['alipaysubmit'].submit();</script></body></html>\n                \";\n            return $html;\n        } catch (RuleValidationException $exception) {\n            return $this->err($exception->getMessage());\n        }\n    }\n\n    public function notifyUrl(Request $request)\n    {\n        $data = $request->post();\n        $order = $this->orderService->detailOrderSN($data['orderid']);\n        if (!$order) {\n            return 'error';\n        }\n        $payGateway = $this->payService->detail($order->pay_id);\n        if (!$payGateway) {\n            return 'error';\n        }\n        if($payGateway->pay_handleroute != '/pay/paysapi'){\n            return 'error';\n        }\n        $temps = md5($data['orderid'] . $data['orderuid'] . $data['paysapi_id'] . $data['price'] . $data['realprice'] . $payGateway->merchant_pem);\n        if ($temps != $data['key']){\n            return 'fail';\n        }else{\n            //校验key成功，是自己人。执行自己的业务逻辑：加余额，订单付款成功，装备购买成功等等。\n            //业务处理\n            $this->orderProcessService->completedOrder($data['orderid'], $data['price'], $data['paysapi_id']);\n            return 'success';\n        }\n    }\n\n    public function returnUrl(Request $request)\n    {\n        $oid = $request->input('order_id');\n        sleep(1);\n        return redirect(url('detail-order-sn', ['orderSN' => $oid]));\n    }\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/Pay/StripeController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers\\Pay;\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Http\\Controllers\\PayController;\nuse Illuminate\\Http\\Request;\nuse GuzzleHttp\\Client;\nuse Illuminate\\Support\\Facades\\Redis;\nuse URL;\n\nclass StripeController extends PayController\n{\n\n    public function gateway(string $payway, string $orderSN)\n    {\n\n\n        // 加载网关\n        $this->loadGateWay($orderSN, $payway);\n        //构造要请求的参数数组，无需改动\n        switch ($payway) {\n            case 'wx':\n            case 'alipay':\n            default:\n                try {\n                    \\Stripe\\Stripe::setApiKey($this->payGateway->merchant_id);\n                    $amount = bcmul($this->order->actual_price, 100, 2);\n                    $price = $this->order->actual_price;\n                    $usd = bcmul($this->getUsdCurrency($this->order->actual_price), 100, 2);\n                    $orderid = $this->order->order_sn;\n                    $pk = $this->payGateway->merchant_id;\n                    $return_url = site_url() . $this->payGateway->pay_handleroute . '/return_url/?orderid=' . $this->order->order_sn;\n                    $html = \"<html class=\\\"js cssanimations\\\">\n<head lang=\\\"en\\\">\n    <meta charset=\\\"UTF-8\\\">\n    <title>收银台</title>\n    <meta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=edge\\\">\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\">\n    <meta name=\\\"format-detection\\\" content=\\\"telephone=no\\\">\n    <meta name=\\\"renderer\\\" content=\\\"webkit\\\">\n    <meta http-equiv=\\\"Cache-Control\\\" content=\\\"no-siteapp\\\">\n    <link rel=\\\"stylesheet\\\" href=\\\"https://cdn.jsdelivr.net/npm/amazeui@2.7.2/dist/css/amazeui.min.css\\\">\n    <script src=\\\"https://cdn.jsdelivr.net/npm/jquery@2.1.4/dist/jquery.min.js\\\"></script>\n    <script src=\\\"https://cdn.jsdelivr.net/npm/jquery.qrcode@1.0.3/jquery.qrcode.min.js\\\"></script>\n    <script src=\\\"https://cdn.jsdelivr.net/npm/amazeui@2.7.2/dist/js/amazeui.min.js\\\"></script>\n    <script src=\\\"https://js.stripe.com/v3/\\\"></script>\n    <style>\n        @media only screen and (min-width: 641px) {\n            .am-offcanvas {\n                display: block;\n                position: static;\n                background: none;\n            }\n\n            .am-offcanvas-bar {\n                position: static;\n                width: auto;\n                background: none;\n                -webkit-transform: translate3d(0, 0, 0);\n                -ms-transform: translate3d(0, 0, 0);\n                transform: translate3d(0, 0, 0);\n            }\n\n            .am-offcanvas-bar:after {\n                content: none;\n            }\n        }\n\n        @media only screen and (max-width: 640px) {\n            .am-offcanvas-bar .am-nav > li > a {\n                color: #ccc;\n                border-radius: 0;\n                border-top: 1px solid rgba(0, 0, 0, .3);\n                box-shadow: inset 0 1px 0 rgba(255, 255, 255, .05)\n            }\n\n            .am-offcanvas-bar .am-nav > li > a:hover {\n                background: #404040;\n                color: #fff\n            }\n\n            .am-offcanvas-bar .am-nav > li.am-nav-header {\n                color: #777;\n                background: #404040;\n                box-shadow: inset 0 1px 0 rgba(255, 255, 255, .05);\n                text-shadow: 0 1px 0 rgba(0, 0, 0, .5);\n                border-top: 1px solid rgba(0, 0, 0, .3);\n                font-weight: 400;\n                font-size: 75%\n            }\n\n            .am-offcanvas-bar .am-nav > li.am-active > a {\n                background: #1a1a1a;\n                color: #fff;\n                box-shadow: inset 0 1px 3px rgba(0, 0, 0, .3)\n            }\n\n            .am-offcanvas-bar .am-nav > li + li {\n                margin-top: 0;\n            }\n        }\n\n        .my-head {\n            margin-top: 40px;\n            text-align: center;\n        }\n\n        .am-tab-panel {\n            text-align: center;\n            margin-top: 50px;\n            margin-bottom: 50px;\n        }\n\n        .my-footer {\n            border-top: 1px solid #eeeeee;\n            padding: 10px 0;\n            margin-top: 10px;\n            text-align: center;\n        }\n\n        .panel-title {\n            display: inline;\n            font-weight: bold;\n        }\n\n        .display-table {\n            display: table;\n        }\n\n        .display-tr {\n            display: table-row;\n        }\n\n        .display-td {\n            display: table-cell;\n            vertical-align: middle;\n            width: 61%;\n        }\n\n        .StripeElement {\n            box-sizing: border-box;\n\n            height: 40px;\n\n            padding: 10px 12px;\n\n            border: 1px solid transparent;\n            border-radius: 4px;\n            background-color: white;\n\n            box-shadow: 0 1px 3px 0 #e6ebf1;\n            -webkit-transition: box-shadow 150ms ease;\n            transition: box-shadow 150ms ease;\n        }\n\n        .StripeElement--focus {\n            box-shadow: 0 1px 3px 0 #cfd7df;\n        }\n\n        .StripeElement--invalid {\n            border-color: #fa755a;\n        }\n\n        .StripeElement--webkit-autofill {\n            background-color: #fefde5 !important;\n        }\n        .form-row {\n            width: 70%;\n            float: left;\n        }\n        .wrapper {\n            width: 670px;\n            margin: 0 auto;\n        }\n        label {\n            font-weight: 500;\n            font-size: 14px;\n            display: block;\n            margin-bottom: 8px;\n        }\n        .button {\n            border: none;\n            border-radius: 4px;\n            outline: none;\n            text-decoration: none;\n            color: #fff;\n            background: #32325d;\n            white-space: nowrap;\n            display: inline-block;\n            height: 40px;\n            line-height: 40px;\n            padding: 0 14px;\n            box-shadow: 0 4px 6px rgba(50, 50, 93, .11), 0 1px 3px rgba(0, 0, 0, .08);\n            border-radius: 4px;\n            font-size: 16px;\n            font-weight: 600;\n            letter-spacing: 0.025em;\n            text-decoration: none;\n            -webkit-transition: all 150ms ease;\n            transition: all 150ms ease;\n            margin-top: 10px;\n        }\n    </style>\n</head>\n<body>\n<header class=\\\"am-g my-head\\\">\n    <div class=\\\"am-u-sm-12 am-article\\\">\n        <h1 class=\\\"am-article-title\\\">收银台</h1>\n    </div>\n</header>\n<hr class=\\\"am-article-divider\\\">\n<div class=\\\"am-container\\\">\n    <h2>付款信息\n        <div class=\\\"am-topbar-right\\\">¥{$price}</div>\n    </h2>\n    <p><small>订单编号：$orderid</small></p>\n    <div class=\\\"am-tabs\\\" data-am-tabs=\\\"\\\">\n        <ul class=\\\"am-tabs-nav am-nav am-nav-tabs\\\">\n            <li class=\\\"am-active\\\"><a href=\\\"#alipay\\\">Alipay 支付宝</a></li>\n            <li class=\\\"request-wechat-pay\\\"><a href=\\\"#wcpay\\\">微信支付</a></li>\n            <li class=\\\"request-card-pay\\\"><a href=\\\"#cardpay\\\">银行卡支付</a></li>\n        </ul>\n        <div class=\\\"am-tabs-bd am-tabs-bd-ofv\\\"\n             style=\\\"touch-action: pan-y; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\\">\n            <div class=\\\"am-tab-panel am-active\\\" id=\\\"alipay\\\">\n                <a class=\\\"am-btn am-btn-lg am-btn-warning am-btn-primary\\\" id=\\\"alipaybtn\\\" href=\\\"#\\\">进入支付宝付款</a>\n                <p></p>\n            </div>\n            <div class=\\\"am-tab-panel am-fade\\\" id=\\\"wcpay\\\">\n                <div class=\\\"text-align:center; margin:0 auto; width:60%\\\">\n                    <div class=\\\"wcpay-qrcode\\\" style=\\\"text-align: center; \\\" data-requested=\\\"0\\\">\n                        正在加载中...\n                    </div>\n                </div>\n            </div>\n            <div class=\\\"am-tab-panel am-fade\\\" id=\\\"cardpay\\\">\n                <div class=\\\"text-align:center; margin:0 auto; width:60%\\\">\n                <div class=\\\"wrapper cardpay_content\\\" style=\\\"max-width:500px\\\">\n                <div class=\\\"am-alert am-alert-danger\\\" style=\\\"display:none\\\">支付失败，请更换卡片或检查输入信息</div>\n                    <form action=\\\"/pay/stripe/charge\\\" method=\\\"post\\\" id=\\\"payment-form\\\">\n                        <div class=\\\"form-row\\\">\n                            <label for=\\\"card-element\\\">\n                                <p class='am-alert am-alert-secondary'>借记卡或信用卡</p>\n                            </label>\n                            <div id=\\\"card-element\\\">\n                                <!-- A Stripe Element will be inserted here. -->\n                            </div>\n                            <!-- Used to display form errors. -->\n                            <div id=\\\"card-errors\\\" role=\\\"alert\\\"></div>\n                        </div>\n                            <div class=\\\"form-row\\\">\n                            <button class=\\\"button\\\">支付</button>\n                        </div>\n\n                    </form>\n                </div>\n                 </div>\n            </div>\n        </div>\n    </div>\n</div>\n</div>\n<script>\n    var stripe = Stripe('$pk');\n    var source = '';\n    // Create a Stripe client.\n\n    // Create an instance of Elements.\n    var elements = stripe.elements();\n\n    // Custom styling can be passed to options when creating an Element.\n    // (Note that this demo uses a wider set of styles than the guide below.)\n    var style = {\n        base: {\n            color: '#32325d',\n            fontFamily: '\\\"Helvetica Neue\\\", Helvetica, sans-serif',\n            fontSmoothing: 'antialiased',\n            fontSize: '16px',\n            '::placeholder': {\n                color: '#aab7c4'\n            }\n        },\n        invalid: {\n            color: '#fa755a',\n            iconColor: '#fa755a'\n        }\n    };\n\n    // Create an instance of the card Element.\n    var card = elements.create('card', {style: style});\n\n    // Add an instance of the card Element into the `card-element` <div>.\n    card.mount('#card-element');\n\n    // Handle real-time validation errors from the card Element.\n    card.on('change', function (event) {\n        var displayError = document.getElementById('card-errors');\n        if (event.error) {\n            displayError.textContent = event.error.message;\n        } else {\n            displayError.textContent = '';\n        }\n    });\n\n    // Handle form submission.\n    var form = document.getElementById('payment-form');\n    form.addEventListener('submit', function (event) {\n        event.preventDefault();\n        $(\\\".button\\\").attr(\\\"disabled\\\",\\\"true\\\");\n        $(\\\".button\\\").html(\\\"请稍后\\\");\n        stripe.createToken(card).then(function (result) {\n            if (result.error) {\n                // Inform the user if there was an error.\n                var errorElement = document.getElementById('card-errors');\n                errorElement.textContent = result.error.message;\n            } else {\n                // Send the token to your server.\n                stripeTokenHandler(result.token);\n            }\n        });\n    });\n\n    // Submit the form with the token ID.\n    function stripeTokenHandler(token) {\n        // Insert the token ID into the form so it gets submitted to the server\n        var form = document.getElementById('payment-form');\n        var hiddenInput = document.createElement('input');\n        var hiddenInput1 = document.createElement('input');\n        hiddenInput.setAttribute('type', 'hidden');\n        hiddenInput.setAttribute('name', 'stripeToken');\n        hiddenInput.setAttribute('value', token.id);\n        hiddenInput1.setAttribute('type', 'hidden');\n        hiddenInput1.setAttribute('name', 'orderid');\n        hiddenInput1.setAttribute('value', '$orderid');\n        form.appendChild(hiddenInput);\n        form.appendChild(hiddenInput1);\n        // Submit the form\n        //form.submit();\n        $.ajax({\n            url: '/pay/stripe/charge/?orderid=$orderid&stripeToken=' + token.id,\n            type: 'GET',\n            success: function (result) {\n                if (result == \\\"success\\\") {\n                    $(\\\".cardpay_content\\\").html(\\\"\\\");\n                    $(\\\".cardpay_content\\\").html(\\\"<p class='am-alert am-alert-success'>支付成功，正在跳转页面</p>\\\");\n                    window.setTimeout(function () {\n                        location.href = \\\"/detail-order-sn/$orderid\\\"\n                    }, 800);\n                } else {\n                    $(\\\".am-alert\\\").show();\n                    $(\\\".button\\\").removeAttr(\\\"disabled\\\");\n                    $(\\\".button\\\").html(\\\"支付\\\");\n                    setTimeout(\\\" $('.am-alert').hide();\\\", 3000);\n                }\n            }\n        });\n    }\n\n    (function () {\n        stripe.createSource({\n            type: 'alipay',\n            amount: $amount,\n            currency: 'cny',\n            // 这里你需要渲染出一些用户的信息，不然后期没法知道是谁在付钱\n            owner: {\n                name: '$orderid',\n            },\n            redirect: {\n                return_url: '$return_url',\n            },\n        }).then(function (result) {\n            $(\\\"#alipaybtn\\\").attr(\\\"href\\\", result.source.redirect.url);\n        });\n    })();\n\n    function paymentcheck() {\n        $.ajax({\n            url: '/pay/stripe/check/?orderid=$orderid&source=' + source,\n            type: 'GET',\n            success: function (result) {\n                if (result == \\\"success\\\") {\n                    $(\\\".wcpay-qrcode\\\").html(\\\"\\\");\n                    $(\\\".wcpay-qrcode\\\").html(\\\"<p class='am-alert am-alert-success'>支付成功，正在跳转页面</p>\\\");\n                    window.setTimeout(function () {\n                        location.href = \\\"/detail-order-sn/$orderid\\\"\n                    }, 800);\n                } else {\n                    setTimeout(\\\"paymentcheck()\\\", 1000);\n                }\n            }\n        });\n    }\n\n    $(\\\".request-wechat-pay\\\").click(function () {\n        if ($(\\\".wcpay-qrcode\\\").data(\\\"requested\\\") == 0) {\n            stripe.createSource({\n                type: 'wechat',\n                amount: $usd,\n                currency: 'usd',\n                owner: {\n                    name: '$orderid'\n                },\n            }).then(function (result) {\n                if (result.source.id) {\n                    $(\\\".wcpay-qrcode\\\").html(\\\"<p class='am-alert am-alert-success'>打开微信 - 扫一扫</p>\\\");\n                    $(\\\".wcpay-qrcode\\\").qrcode(result.source.wechat.qr_code_url);\n                    $(\\\".wcpay-qrcode\\\").data(\\\"requested\\\", 1);\n                    $(\\\".wcpay-qrcode\\\").data(\\\"sid\\\", result.source.id);\n                    $(\\\".wcpay-qrcode\\\").data(\\\"scs\\\", result.source.client_secret);\n                    source = result.source.id;\n                    setTimeout(\\\"paymentcheck()\\\", 3000);\n                } else {\n                    alert(\\\"微信支付加载失败\\\");\n                    $(\\\".wcpay-qrcode\\\").html(\\\"<p class='am-alert am-alert-danger'>加载失败，请刷新页面。</p>\\\");\n                }\n                // handle result.error or result.source\n            });\n        }\n    });\n</script>\n</body>\n</html>\";\n\n                    return $html;\n                } catch (\\Exception $e) {\n                    throw new RuleValidationException(__('dujiaoka.prompt.abnormal_payment_channel') . $e->getMessage());\n                }\n                break;\n        }\n    }\n\n    public function returnUrl(Request $request)\n    {\n\n        $data = $request->all();\n        $cacheord = $this->orderService->detailOrderSN($data['orderid']);\n        if (!$cacheord) {\n            return redirect(url('detail-order-sn', ['orderSN' => $data['orderid']]));\n        }\n        $payGateway = $this->payService->detail($cacheord->pay_id);\n        \\Stripe\\Stripe::setApiKey($payGateway -> merchant_pem);\n        $source_object = \\Stripe\\Source::retrieve($data['source']);\n        //die($source_object);\n        if ($source_object->status == 'chargeable') {\n            \\Stripe\\Charge::create([\n                'amount' => $source_object->amount,\n                'currency' => $source_object->currency,\n                'source' => $data['source'],\n            ]);\n            if ($source_object->owner->name == $data['orderid']) {\n                $this->orderProcessService->completedOrder($data['orderid'], $source_object->amount / 100, $source_object->id);\n            }\n        }\n        return redirect(url('detail-order-sn', ['orderSN' => $data['orderid']]));\n    }\n\n    public function check(Request $request)\n    {\n\n        $data = $request->all();\n        $cacheord = $this->orderService->detailOrderSN($data['orderid']);\n        if (!$cacheord) {\n            //可能已异步回调成功，跳转\n            return 'fail';\n        } else {\n            $payGateway = $this->payService->detail($cacheord->pay_id);\n            \\Stripe\\Stripe::setApiKey($payGateway -> merchant_pem);\n            $source_object = \\Stripe\\Source::retrieve($data['source']);\n            if ($source_object->status == 'chargeable') {\n                \\Stripe\\Charge::create([\n                    'amount' => $source_object->amount,\n                    'currency' => $source_object->currency,\n                    'source' => $data['source'],\n                ]);\n            }\n            if ($source_object->status == 'consumed' && $source_object->owner->name == $data['orderid']) {\n                $this->orderProcessService->completedOrder($data['orderid'], $cacheord->actual_price, $source_object->id);\n                return 'success';\n            } else {\n                return 'fail';\n            }\n        }\n\n    }\n\n    public function charge(Request $request)\n    {\n        $data = $request->all();\n        $cacheord = $this->orderService->detailOrderSN($data['orderid']);\n        if (!$cacheord) {\n            //可能已异步回调成功，跳转\n            return 'fail';\n        } else {\n            try {\n                $payGateway = $this->payService->detail($cacheord->pay_id);\n                \\Stripe\\Stripe::setApiKey($payGateway -> merchant_pem);\n                $result = \\Stripe\\Charge::create([\n                    'amount' => bcmul($this->getUsdCurrency($cacheord->actual_price), 100,0),\n                    'currency' => 'usd',\n                    'source' => $data['stripeToken'],\n                ]);\n                if ($result->status == 'succeeded') {\n                    $this->orderProcessService->completedOrder($data['orderid'], $cacheord->actual_price, $data['stripeToken']);\n                    return 'success';\n                }\n                return $result;\n            } catch (\\Exception $e) {\n                return $e->getMessage();\n            }\n        }\n    }\n\n    /**\n     * 根据RMB获取美元\n     * @param $cny\n     * @return float|int\n     * @throws \\Exception\n     */\n    public function getUsdCurrency($cny)\n    {\n        $client = new Client();\n        $res = $client->get('https://m.cmbchina.com/api/rate/fx-rate');\n        $fxrate = json_decode($res->getBody(), true);\n        $data = $fxrate['body']['data'];\n        if (!isset($data)) {\n            throw new \\Exception('汇率接口异常');\n        }\n        $dfFxrate = 0.13;\n        foreach ($data as $item) {\n            if ($item['ccyNbr'] == \"美元\") {\n                $dfFxrate = bcdiv(100, $item['rtcOfr'], 2);\n                break;\n            }\n        }\n        return bcmul($cny , $dfFxrate , 2);\n    }\n\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/Pay/TokenPayController.php",
    "content": "<?php\r\n/**\r\n * The file was created by LightCountry.\r\n *\r\n * @author    https://github.com/LightCountry\r\n * @copyright https://github.com/LightCountry\r\n * @link      https://github.com/LightCountry/TokenPay\r\n */\r\n\r\nnamespace App\\Http\\Controllers\\Pay;\r\n\r\n\r\nuse App\\Exceptions\\RuleValidationException;\r\nuse App\\Http\\Controllers\\PayController;\r\nuse GuzzleHttp\\Client;\r\nuse GuzzleHttp\\Exception\\GuzzleException;\r\nuse Illuminate\\Http\\Request;\r\n\r\nclass TokenPayController extends PayController\r\n{\r\n    public function gateway(string $payway, string $orderSN)\r\n    {\r\n        try {\r\n            // 加载网关\r\n            $this->loadGateWay($orderSN, $payway);\r\n            //构造要请求的参数数组，无需改动\r\n            $parameter = [\r\n                \"ActualAmount\" => (float)$this->order->actual_price,//原价\r\n                \"OutOrderId\" => $this->order->order_sn, \r\n                \"OrderUserKey\" => $this->order->email, \r\n                \"Currency\" => $this->payGateway->merchant_id,\r\n                'RedirectUrl' => route('tokenpay-return', ['order_id' => $this->order->order_sn]),\r\n                'NotifyUrl' => url($this->payGateway->pay_handleroute . '/notify_url'),\r\n            ];\r\n            $parameter['Signature'] = $this->VerifySign($parameter, $this->payGateway->merchant_key);\r\n            $client = new Client([\r\n\t\t\t\t'headers' => [ 'Content-Type' => 'application/json' ]\r\n\t\t\t]);\r\n            $response = $client->post($this->payGateway->merchant_pem.'/CreateOrder', ['body' =>  json_encode($parameter)]);\r\n            $body = json_decode($response->getBody()->getContents(), true);\r\n            if (!isset($body['success']) || $body['success'] != true) {\r\n                return $this->err(__('dujiaoka.prompt.abnormal_payment_channel') . $body['message']);\r\n            }\r\n            return redirect()->away($body['data']);\r\n        } catch (RuleValidationException $exception) {\r\n        } catch (GuzzleException $exception) {\r\n            return $this->err($exception->getMessage());\r\n        }\r\n    }\r\n\r\n    private function VerifySign(array $parameter, string $signKey)\r\n    {\r\n        ksort($parameter);\r\n        reset($parameter); //内部指针指向数组中的第一个元素\r\n        $sign = '';\r\n        $urls = '';\r\n        foreach ($parameter as $key => $val) {\r\n            if ($key != 'Signature') {\r\n                if ($sign != '') {\r\n                    $sign .= \"&\";\r\n                    $urls .= \"&\";\r\n                }\r\n                $sign .= \"$key=$val\"; //拼接为url参数形式\r\n                $urls .= \"$key=\" . urlencode($val); //拼接为url参数形式\r\n            }\r\n        }\r\n        $sign = md5($sign . $signKey);//密码追加进入开始MD5签名\r\n        return $sign;\r\n    }\r\n\r\n    public function notifyUrl(Request $request)\r\n    {\r\n        $data = $request->all();\r\n        $order = $this->orderService->detailOrderSN($data['OutOrderId']);\r\n        if (!$order) {\r\n            return 'fail';\r\n        }\r\n        $payGateway = $this->payService->detail($order->pay_id);\r\n        if (!$payGateway) {\r\n            return 'fail';\r\n        }\r\n        if($payGateway->pay_handleroute != 'pay/tokenpay'){\r\n            return 'fail';\r\n        }\r\n        //合法的数据\r\n\t\t$signature = $this->VerifySign($data, $payGateway->merchant_key);\r\n        if ($data['Signature'] != $signature) { //不合法的数据\r\n            return 'fail';  //返回失败 继续补单\r\n        } else {\r\n            //合法的数据\r\n            //业务处理\r\n            $this->orderProcessService->completedOrder($data['OutOrderId'], $data['ActualAmount'], $data['Id']);\r\n            return 'ok';\r\n        }\r\n    }\r\n\r\n    public function returnUrl(Request $request)\r\n    {\r\n        $oid = $request->get('order_id');\r\n        // 异步通知还没到就跳转了，所以这里休眠2秒\r\n        sleep(2);\r\n        return redirect(url('detail-order-sn', ['orderSN' => $oid]));\r\n    }\r\n\r\n}\r\n"
  },
  {
    "path": "app/Http/Controllers/Pay/VpayController.php",
    "content": "<?php\n/**\n * VpayController.php\n * V免签\n * Author iLay1678\n * Created on 2020/5/1 11:59\n */\n\nnamespace App\\Http\\Controllers\\Pay;\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Http\\Controllers\\PayController;\nuse Illuminate\\Http\\Request;\n\nclass VpayController extends PayController\n{\n\n\n    public function gateway(string $payway, string $orderSN)\n    {\n        try {\n            // 加载网关\n            $this->loadGateWay($orderSN, $payway);\n\n            //构造要请求的参数数组，无需改动\n            $parameter = array(\n                \"payId\" => date('YmdHis') . rand(1, 65535),//平台ID号\n                \"price\" => (float)$this->order->actual_price,//原价\n                'param' => $this->order->order_sn,\n                'returnUrl' => route('vpay-return', ['order_id' => $this->order->order_sn]),\n                'notifyUrl' => url($this->payGateway->pay_handleroute . '/notify_url'),\n                \"isHtml\" => 1,\n            );\n            switch ($payway) {\n                case 'vzfb':\n                    $parameter['type'] = 2;\n                    break;\n                case 'vwx':\n                default:\n                    $parameter['type'] = 1;\n                    break;\n            }\n            $parameter['sign'] = md5($parameter['payId'] . $parameter['param'] . $parameter['type'] . $parameter['price'] . $this->payGateway->merchant_id);\n            $payurl = $this->payGateway->merchant_pem . 'createOrder?' . http_build_query($parameter); //支付页面\n            return redirect()->away($payurl);\n        } catch (RuleValidationException $exception) {\n            return $this->err($exception->getMessage());\n        }\n    }\n\n\n    public function notifyUrl(Request $request)\n    {\n        $data = $request->all();\n        $order = $this->orderService->detailOrderSN($data['param']);\n        if (!$order) {\n            return 'fail';\n        }\n        $payGateway = $this->payService->detail($order->pay_id);\n\n        if($payGateway->pay_handleroute != 'pay/vpay'){\n            return 'fail';\n        }\n        if (!$payGateway) {\n            return 'fail';\n        }\n\n        $key = $payGateway->merchant_id;//通讯密钥\n        $payId = $data['payId'];//商户订单号\n        $param = $data['param'];//创建订单的时候传入的参数\n        $type = $data['type'];//支付方式 ：微信支付为1 支付宝支付为2\n        $price = $data['price'];//订单金额\n        $reallyPrice = $data['reallyPrice'];//实际支付金额\n        $sign = $data['sign'];//校验签名，计算方式 = md5(payId + param + type + price + reallyPrice + 通讯密钥)\n        //开始校验签名\n        $_sign = md5($payId . $param . $type . $price . $reallyPrice . $key);\n        if ($_sign != $sign) { //不合法的数据\n            return 'fail';  //返回失败 继续补单\n        } else { //合法的数据\n            //业务处理\n            $this->orderProcessService->completedOrder($param, $price, $payId);\n            return 'success';\n        }\n    }\n\n    public function returnUrl(Request $request)\n    {\n        $oid = $request->get('order_id');\n        // 异步通知还没到就跳转了，所以这里休眠2秒\n        sleep(2);\n        return redirect(url('detail-order-sn', ['orderSN' => $oid]));\n    }\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/Pay/WepayController.php",
    "content": "<?php\nnamespace App\\Http\\Controllers\\Pay;\n\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Http\\Controllers\\PayController;\nuse Yansongda\\Pay\\Pay;\n\nclass WepayController extends PayController\n{\n\n    public function gateway(string $payway, string $orderSN)\n    {\n        try {\n            // 加载网关\n            $this->loadGateWay($orderSN, $payway);\n            $config = [\n                'app_id' => $this->payGateway->merchant_id,\n                'mch_id' => $this->payGateway->merchant_key,\n                'key' => $this->payGateway->merchant_pem,\n                'notify_url' => url($this->payGateway->pay_handleroute . '/notify_url'),\n                'return_url' => url('detail-order-sn', ['orderSN' => $this->order->order_sn]),\n                'http' => [ // optional\n                    'timeout' => 10.0,\n                    'connect_timeout' => 10.0,\n                ],\n            ];\n            $order = [\n                'out_trade_no' => $this->order->order_sn,\n                'total_fee' => bcmul($this->order->actual_price, 100, 0),\n                'body' => $this->order->order_sn\n            ];\n            switch ($payway){\n                case 'wescan':\n                    try{\n                        $result = Pay::wechat($config)->scan($order)->toArray();\n                        $result['qr_code'] = $result['code_url'];\n                        $result['payname'] =$this->payGateway->pay_name;\n                        $result['actual_price'] = (float)$this->order->actual_price;\n                        $result['orderid'] = $this->order->order_sn;\n                        return $this->render('static_pages/qrpay', $result, __('dujiaoka.scan_qrcode_to_pay'));\n                    } catch (\\Exception $e) {\n                        throw new RuleValidationException(__('dujiaoka.prompt.abnormal_payment_channel') . $e->getMessage());\n                    }\n                    break;\n\n            }\n        } catch (RuleValidationException $exception) {\n            return $this->err($exception->getMessage());\n        }\n    }\n\n    /**\n     * 异步通知\n     */\n    public function notifyUrl()\n    {\n        $xml = file_get_contents('php://input');\n        $arr = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);\n        $oid = $arr['out_trade_no'];\n        $order = $this->orderService->detailOrderSN($oid);\n        if (!$order) {\n            return 'error';\n        }\n        $payGateway = $this->payService->detail($order->pay_id);\n        if (!$payGateway) {\n            return 'error';\n        }\n        if($payGateway->pay_handleroute != '/pay/wepay'){\n            return 'error';\n        }\n        $config = [\n            'app_id' => $payGateway->merchant_id,\n            'mch_id' => $payGateway->merchant_key,\n            'key' => $payGateway->merchant_pem,\n        ];\n        $pay = Pay::wechat($config);\n        try{\n            // 验证签名\n            $result = $pay->verify();\n            $total_fee = bcdiv($result->total_fee, 100, 2);\n            $this->orderProcessService->completedOrder($result->out_trade_no, $total_fee, $result->transaction_id);\n            return 'success';\n        } catch (\\Exception $exception) {\n            return 'fail';\n        }\n    }\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/Pay/YipayController.php",
    "content": "<?php\nnamespace App\\Http\\Controllers\\Pay;\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Http\\Controllers\\PayController;\nuse Illuminate\\Http\\Request;\n\nclass YipayController extends PayController\n{\n\n    public function gateway(string $payway, string $orderSN)\n    {\n        try {\n            // 加载网关\n            $this->loadGateWay($orderSN, $payway);\n            //组装支付参数\n            $parameter = [\n                'pid' =>  $this->payGateway->merchant_id,\n                'type' => $payway,\n                'out_trade_no' => $this->order->order_sn,\n                'return_url' => route('yipay-return', ['order_id' => $this->order->order_sn]),\n                'notify_url' => url($this->payGateway->pay_handleroute . '/notify_url'),\n                'name'   => $this->order->order_sn,\n                'money'  => (float)$this->order->actual_price,\n                'sign' => $this->payGateway->merchant_pem,\n                'sign_type' =>'MD5'\n            ];\n            ksort($parameter); //重新排序$data数组\n            reset($parameter); //内部指针指向数组中的第一个元素\n            $sign = '';\n            foreach ($parameter as $key => $val) {\n                if ($key == \"sign\" || $key == \"sign_type\" || $val == \"\") continue;\n                if ($key != 'sign') {\n                    if ($sign != '') {\n                        $sign .= \"&\";\n                    }\n                    $sign .= \"$key=$val\"; //拼接为url参数形式\n                }\n            }\n\n            $sign = md5($sign . $this->payGateway->merchant_pem);//密码追加进入开始MD5签名\n            $parameter['sign'] = $sign;\n            //待请求参数数组\n            $sHtml = \"<form id='alipaysubmit' name='alipaysubmit' action='\" . $this->payGateway->merchant_key . \"' method='get'>\";\n\n            foreach($parameter as $key => $val) {\n                $sHtml.= \"<input type='hidden' name='\".$key.\"' value='\".$val.\"'/>\";\n            }\n\n            //submit按钮控件请不要含有name属性\n            $sHtml = $sHtml.\"<input type='submit' value=''></form>\";\n            $sHtml = $sHtml.\"<script>document.forms['alipaysubmit'].submit();</script>\";\n            return $sHtml;\n        } catch (RuleValidationException $exception) {\n            return $this->err($exception->getMessage());\n        }\n    }\n\n    public function notifyUrl(Request $request)\n    {\n        $data = $request->all();\n        $order = $this->orderService->detailOrderSN($data['out_trade_no']);\n        if (!$order) {\n            return 'fail';\n        }\n        $payGateway = $this->payService->detail($order->pay_id);\n        if (!$payGateway) {\n            return 'fail';\n        }\n        if($payGateway->pay_handleroute != '/pay/yipay'){\n            return 'fail';\n        }\n        ksort($data); //重新排序$data数组\n        reset($data); //内部指针指向数组中的第一个元素\n        $sign = '';\n        foreach ($data as $key => $val) {\n            if ($key == \"sign\" || $key == \"sign_type\" || $val == \"\") continue;\n            if ($key != 'sign') {\n                if ($sign != '') {\n                    $sign .= \"&\";\n                }\n                $sign .= \"$key=$val\"; //拼接为url参数形式\n            }\n        }\n        if (!$data['trade_no'] || md5($sign . $payGateway->merchant_pem) != $data['sign']) { //不合法的数据\n            return 'fail';  //返回失败 继续补单\n        } else {\n            //合法的数据\n            //业务处理\n            $this->orderProcessService->completedOrder($data['out_trade_no'], $data['money'], $data['trade_no']);\n            return 'success';\n        }\n    }\n\n    public function returnUrl(Request $request)\n    {\n        $oid = $request->get('order_id');\n        // 有些易支付太垃了，异步通知还没到就跳转了，导致订单显示待支付，其实已经支付了，所以这里休眠2秒\n        sleep(2);\n        return redirect(url('detail-order-sn', ['orderSN' => $oid]));\n    }\n\n}\n"
  },
  {
    "path": "app/Http/Controllers/PayController.php",
    "content": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Models\\Order;\nuse App\\Service\\OrderProcessService;\n\nclass PayController extends BaseController\n{\n\n    /**\n     * 支付网关\n     * @var \\App\\Models\\Pay\n     */\n    protected $payGateway;\n\n\n    /**\n     * 订单\n     * @var \\App\\Models\\Order\n     */\n    protected $order;\n\n    /**\n     * 订单服务层\n     * @var \\App\\Service\\OrderService\n     */\n    protected $orderService;\n\n    /**\n     * 支付服务层\n     * @var \\App\\Service\\PayService\n     */\n    protected $payService;\n\n    /**\n     * 订单处理层.\n     * @var OrderProcessService\n     */\n    protected $orderProcessService;\n\n\n    public function __construct()\n    {\n        $this->orderService = app('Service\\OrderService');\n        $this->payService = app('Service\\PayService');\n        $this->orderProcessService = app('Service\\OrderProcessService');\n    }\n\n    /**\n     * 订单检测\n     *\n     * @param string $orderSN\n     * @throws RuleValidationException\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function checkOrder(string $orderSN)\n    {\n        // 订单\n        $this->order = $this->orderService->detailOrderSN($orderSN);\n        if (!$this->order) {\n            throw new RuleValidationException(__('dujiaoka.prompt.order_does_not_exist'));\n        }\n        // 订单过期\n        if ($this->order->status == Order::STATUS_EXPIRED) {\n            throw new RuleValidationException(__('dujiaoka.prompt.order_is_expired'));\n        }\n        // 已经支付了\n        if ($this->order->status > Order::STATUS_WAIT_PAY) {\n            throw new RuleValidationException(__('dujiaoka.prompt.order_already_paid'));\n        }\n    }\n\n    /**\n     * 加载支付网关\n     *\n     * @param string $orderSN 订单号\n     * @param string $payCheck 支付标识\n     * @throws RuleValidationException\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function loadGateWay(string $orderSN, string $payCheck)\n    {\n        $this->checkOrder($orderSN);\n        // 支付配置\n        $this->payGateway = $this->payService->detailByCheck($payCheck);\n        if (!$this->payGateway) {\n            throw new RuleValidationException(__('dujiaoka.prompt.pay_gateway_does_not_exist'));\n        }\n        // 临时保存支付方式\n        $this->order->pay_id = $this->payGateway->id;\n        $this->order->save();\n    }\n\n    /**\n     * 网关处理.\n     *\n     * @param string $handle 跳转方法\n     * @param string $payway 支付标识\n     * @param string $orderSN 订单.\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function redirectGateway(string $handle,string $payway, string $orderSN)\n    {\n        try {\n            $this->checkOrder($orderSN);\n            $bccomp = bccomp($this->order->actual_price, 0.00, 2);\n            // 如果订单金额为0 代表无需支付，直接成功\n            if ($bccomp == 0) {\n                $this->orderProcessService->completedOrder($this->order->order_sn, 0.00);\n                return redirect(url('detail-order-sn', ['orderSN' => $this->order->order_sn]));\n            }\n            return redirect(url(urldecode($handle), ['payway' => $payway, 'orderSN' => $orderSN]));\n        } catch (RuleValidationException $exception) {\n            return $this->err($exception->getMessage());\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "app/Http/Kernel.php",
    "content": "<?php\n\nnamespace App\\Http;\n\nuse App\\Http\\Middleware\\DujiaoBoot;\nuse App\\Http\\Middleware\\InstallCheck;\nuse App\\Http\\Middleware\\PayGateWay;\nuse Illuminate\\Foundation\\Http\\Kernel as HttpKernel;\n\nclass Kernel extends HttpKernel\n{\n    /**\n     * The application's global HTTP middleware stack.\n     *\n     * These middleware are run during every request to your application.\n     *\n     * @var array\n     */\n    protected $middleware = [\n        \\App\\Http\\Middleware\\TrustProxies::class,\n        \\App\\Http\\Middleware\\CheckForMaintenanceMode::class,\n        \\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize::class,\n        \\App\\Http\\Middleware\\TrimStrings::class,\n        \\Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull::class,\n        \\App\\Http\\Middleware\\DujiaoSystem::class,\n    ];\n\n    /**\n     * The application's route middleware groups.\n     *\n     * @var array\n     */\n    protected $middlewareGroups = [\n        'web' => [\n            \\App\\Http\\Middleware\\EncryptCookies::class,\n            \\Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse::class,\n            \\Illuminate\\Session\\Middleware\\StartSession::class,\n            // \\Illuminate\\Session\\Middleware\\AuthenticateSession::class,\n            \\Illuminate\\View\\Middleware\\ShareErrorsFromSession::class,\n            \\App\\Http\\Middleware\\VerifyCsrfToken::class,\n            \\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,\n        ],\n\n        'api' => [\n            'throttle:60,1',\n            \\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,\n        ],\n    ];\n\n    /**\n     * The application's route middleware.\n     *\n     * These middleware may be assigned to groups or used individually.\n     *\n     * @var array\n     */\n    protected $routeMiddleware = [\n        'auth' => \\App\\Http\\Middleware\\Authenticate::class,\n        'auth.basic' => \\Illuminate\\Auth\\Middleware\\AuthenticateWithBasicAuth::class,\n        'bindings' => \\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,\n        'cache.headers' => \\Illuminate\\Http\\Middleware\\SetCacheHeaders::class,\n        'can' => \\Illuminate\\Auth\\Middleware\\Authorize::class,\n        'guest' => \\App\\Http\\Middleware\\RedirectIfAuthenticated::class,\n        'password.confirm' => \\Illuminate\\Auth\\Middleware\\RequirePassword::class,\n        'signed' => \\Illuminate\\Routing\\Middleware\\ValidateSignature::class,\n        'throttle' => \\Illuminate\\Routing\\Middleware\\ThrottleRequests::class,\n        'verified' => \\Illuminate\\Auth\\Middleware\\EnsureEmailIsVerified::class,\n        'dujiaoka.boot' => DujiaoBoot::class,\n        'dujiaoka.pay_gate_way' => PayGateWay::class,\n        'install.check' => InstallCheck::class,\n    ];\n\n    /**\n     * The priority-sorted list of middleware.\n     *\n     * This forces non-global middleware to always be in the given order.\n     *\n     * @var array\n     */\n    protected $middlewarePriority = [\n        \\Illuminate\\Session\\Middleware\\StartSession::class,\n        \\Illuminate\\View\\Middleware\\ShareErrorsFromSession::class,\n        \\App\\Http\\Middleware\\Authenticate::class,\n        \\Illuminate\\Routing\\Middleware\\ThrottleRequests::class,\n        \\Illuminate\\Session\\Middleware\\AuthenticateSession::class,\n        \\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,\n        \\Illuminate\\Auth\\Middleware\\Authorize::class,\n    ];\n}\n"
  },
  {
    "path": "app/Http/Middleware/Authenticate.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Auth\\Middleware\\Authenticate as Middleware;\n\nclass Authenticate extends Middleware\n{\n    /**\n     * Get the path the user should be redirected to when they are not authenticated.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @return string|null\n     */\n    protected function redirectTo($request)\n    {\n        if (! $request->expectsJson()) {\n            return route('login');\n        }\n    }\n}\n"
  },
  {
    "path": "app/Http/Middleware/CheckForMaintenanceMode.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode as Middleware;\n\nclass CheckForMaintenanceMode extends Middleware\n{\n    /**\n     * The URIs that should be reachable while maintenance mode is enabled.\n     *\n     * @var array\n     */\n    protected $except = [\n        //\n    ];\n}\n"
  },
  {
    "path": "app/Http/Middleware/DujiaoBoot.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse App\\Models\\BaseModel;\nuse Closure;\nuse Germey\\Geetest\\GeetestServiceProvider;\n\nclass DujiaoBoot\n{\n    /**\n     * Handle an incoming request.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\Closure  $next\n     * @return mixed\n     */\n    public function handle($request, Closure $next)\n    {\n        // 安装检查\n        $installLock = base_path() . DIRECTORY_SEPARATOR . 'install.lock';\n        if (!file_exists($installLock)) {\n            return redirect(url('install'));\n        }\n        // 浏览器检测\n        $userAgent = $request->header('user-agent');\n        $nowUri = site_url() . $request->path();\n        $tplPath = 'common/notencent';\n        if (\n            (strpos($userAgent, 'QQ/')\n            ||\n            strpos($userAgent, 'MicroMessenger') !== false)\n            &&\n            dujiaoka_config_get('is_open_anti_red', BaseModel::STATUS_OPEN) == BaseModel::STATUS_OPEN\n        ) {\n            return response()->view($tplPath, ['nowUri' => $nowUri]);\n        }\n        // 语言检测\n        $lang = dujiaoka_config_get('language', 'zh_CN');\n        app()->setLocale($lang);\n        // 极验\n        $geetest = dujiaoka_config_get('is_open_geetest', BaseModel::STATUS_CLOSE);\n        if ($geetest == BaseModel::STATUS_OPEN) {\n            $geetestConfig = [\n                'key' => dujiaoka_config_get('geetest_key'),\n                'id' => dujiaoka_config_get('geetest_id'),\n                'lang' => $lang\n            ];\n            // 覆盖 配置\n            config([\n                'geetest'  =>  array_merge(config('mail'), $geetestConfig)\n            ]);\n            // 重新注册服务\n            (new GeetestServiceProvider(app()))->register();\n        }\n        return $next($request);\n    }\n}\n"
  },
  {
    "path": "app/Http/Middleware/DujiaoSystem.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse App\\Providers\\AppServiceProvider;\nuse Closure;\n\nclass DujiaoSystem\n{\n    /**\n     * Handle an incoming request.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\Closure  $next\n     * @return mixed\n     */\n    public function handle($request, Closure $next)\n    {\n        // 检测https\n        if ($request->getScheme() == 'https') {\n            $httpsConfig = [\n                'https' => true\n            ];\n            config([\n                'admin'  =>  array_merge(config('admin'), $httpsConfig)\n            ]);\n            (new AppServiceProvider(app()))->register();\n        }\n        return $next($request);\n    }\n}\n"
  },
  {
    "path": "app/Http/Middleware/EncryptCookies.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Cookie\\Middleware\\EncryptCookies as Middleware;\n\nclass EncryptCookies extends Middleware\n{\n    /**\n     * The names of the cookies that should not be encrypted.\n     *\n     * @var array\n     */\n    protected $except = [\n        //\n    ];\n}\n"
  },
  {
    "path": "app/Http/Middleware/InstallCheck.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Closure;\n\nclass InstallCheck\n{\n    /**\n     * Handle an incoming request.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\Closure  $next\n     * @return mixed\n     */\n    public function handle($request, Closure $next)\n    {\n        // 安装检查\n        $installLock = base_path() . DIRECTORY_SEPARATOR . 'install.lock';\n        if (file_exists($installLock)) {\n            return redirect(url('/'));\n        }\n        return $next($request);\n    }\n}\n"
  },
  {
    "path": "app/Http/Middleware/PayGateWay.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Closure;\n\nclass PayGateWay\n{\n\n    /**\n     * Handle an incoming request.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\Closure  $next\n     * @return mixed\n     */\n    public function handle($request, Closure $next)\n    {\n        return $next($request);\n    }\n}\n"
  },
  {
    "path": "app/Http/Middleware/RedirectIfAuthenticated.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse App\\Providers\\RouteServiceProvider;\nuse Closure;\nuse Illuminate\\Support\\Facades\\Auth;\n\nclass RedirectIfAuthenticated\n{\n    /**\n     * Handle an incoming request.\n     *\n     * @param  \\Illuminate\\Http\\Request  $request\n     * @param  \\Closure  $next\n     * @param  string|null  $guard\n     * @return mixed\n     */\n    public function handle($request, Closure $next, $guard = null)\n    {\n        if (Auth::guard($guard)->check()) {\n            return redirect(RouteServiceProvider::HOME);\n        }\n\n        return $next($request);\n    }\n}\n"
  },
  {
    "path": "app/Http/Middleware/TrimStrings.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\TrimStrings as Middleware;\n\nclass TrimStrings extends Middleware\n{\n    /**\n     * The names of the attributes that should not be trimmed.\n     *\n     * @var array\n     */\n    protected $except = [\n        'password',\n        'password_confirmation',\n    ];\n}\n"
  },
  {
    "path": "app/Http/Middleware/TrustProxies.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Fideloper\\Proxy\\TrustProxies as Middleware;\nuse Illuminate\\Http\\Request;\n\nclass TrustProxies extends Middleware\n{\n    /**\n     * The trusted proxies for this application.\n     *\n     * @var array|string\n     */\n    protected $proxies;\n\n    /**\n     * The headers that should be used to detect proxies.\n     *\n     * @var int\n     */\n    protected $headers = Request::HEADER_X_FORWARDED_ALL;\n}\n"
  },
  {
    "path": "app/Http/Middleware/VerifyCsrfToken.php",
    "content": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken as Middleware;\n\nclass VerifyCsrfToken extends Middleware\n{\n    /**\n     * Indicates whether the XSRF-TOKEN cookie should be set on the response.\n     *\n     * @var bool\n     */\n    protected $addHttpCookie = true;\n\n    /**\n     * The URIs that should be excluded from CSRF verification.\n     *\n     * @var array\n     */\n    protected $except = [\n        'pay/*',\n    ];\n}\n"
  },
  {
    "path": "app/Jobs/ApiHook.php",
    "content": "<?php\n\nnamespace App\\Jobs;\n\nuse App\\Models\\Order;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Queue\\SerializesModels;\n\nclass ApiHook implements ShouldQueue\n{\n    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;\n\n    /**\n     * 任务最大尝试次数。\n     *\n     * @var int\n     */\n    public $tries = 2;\n\n    /**\n     * 任务运行的超时时间。\n     *\n     * @var int\n     */\n    public $timeout = 30;\n\n    /**\n     * @var Order\n     */\n    private $order;\n\n    /**\n     * 商品服务层.\n     * @var \\App\\Service\\PayService\n     */\n    private $goodsService;\n\n\n    /**\n     * Create a new job instance.\n     *\n     * @return void\n     */\n    public function __construct(Order $order)\n    {\n        $this->order = $order;\n        $this->goodsService = app('Service\\GoodsService');\n    }\n\n    /**\n     * Execute the job.\n     *\n     * @return void\n     */\n    public function handle()\n    {\n        $goodInfo = $this->goodsService->detail($this->order->goods_id);\n        // 判断是否有配置支付回调\n        if(empty($goodInfo->api_hook)){\n            return;\n        }\n        $postdata = [\n            'title' => $this->order->title,\n            'order_sn' => $this->order->order_sn,\n            'email' => $this->order->email,\n            'actual_price' => $this->order->actual_price,\n            'order_info' => $this->order->info,\n            'good_id' => $goodInfo->id,\n            'gd_name' => $goodInfo->gd_name\n\n        ];\n\n        \n        $opts = [\n            'http' => [\n                'method'  => 'POST',\n                'header'  => 'Content-type: application/json',\n                'content' => json_encode($postdata,JSON_UNESCAPED_UNICODE)\n            ]\n        ];\n        $context  = stream_context_create($opts);\n        file_get_contents($goodInfo->api_hook, false, $context);\n    }\n}\n"
  },
  {
    "path": "app/Jobs/BarkPush.php",
    "content": "<?php\r\n\r\nnamespace App\\Jobs;\r\n\r\nuse App\\Models\\Order;\r\nuse GuzzleHttp\\Client;\r\nuse Illuminate\\Bus\\Queueable;\r\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\r\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\r\nuse Illuminate\\Queue\\InteractsWithQueue;\r\nuse Illuminate\\Queue\\SerializesModels;\r\nuse App\\Models\\BaseModel;\r\n\r\n\r\nclass BarkPush implements ShouldQueue\r\n{\r\n    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;\r\n\r\n    /**\r\n     * 任务最大尝试次数。\r\n     *\r\n     * @var int\r\n     */\r\n    public $tries = 2;\r\n\r\n    /**\r\n     * 任务运行的超时时间。\r\n     *\r\n     * @var int\r\n     */\r\n    public $timeout = 30;\r\n\r\n    /**\r\n     * @var Order\r\n     */\r\n    private $order;\r\n\r\n    /**\r\n     * 商品服务层.\r\n     * @var \\App\\Service\\PayService\r\n     */\r\n    private $goodsService;\r\n\r\n\r\n    /**\r\n     * Create a new job instance.\r\n     *\r\n     * @return void\r\n     */\r\n    public function __construct(Order $order)\r\n    {\r\n        $this->order = $order;\r\n        $this->goodsService = app('Service\\GoodsService');\r\n    }\r\n\r\n    /**\r\n     * Execute the job.\r\n     *\r\n     * @return void\r\n     */\r\n    public function handle()\r\n    {\r\n        $goodInfo = $this->goodsService->detail($this->order->goods_id);\r\n        $client = new Client();\r\n        $apiUrl = dujiaoka_config_get('bark_server') .'/'. dujiaoka_config_get('bark_token');\r\n\t\t$params = [\r\n\t\t\t\"title\" => __('dujiaoka.prompt.new_order_push').'('.$this->order->actual_price.'元)',\r\n\t\t\t\"body\" => __('order.fields.order_id') .': '.$this->order->id.\"\\n\"\r\n\t\t\t\t. __('order.fields.order_sn') .': '.$this->order->order_sn.\"\\n\"\r\n\t\t\t\t. __('order.fields.pay_id') .': '.$this->order->pay->pay_name.\"\\n\"\r\n\t\t\t\t. __('order.fields.title') .': '.$this->order->title.\"\\n\"\r\n\t\t\t\t. __('order.fields.actual_price') .': '.$this->order->actual_price.\"\\n\"\r\n\t\t\t\t. __('order.fields.email') .': '.$this->order->email.\"\\n\"\r\n\t\t\t\t. __('goods.fields.gd_name') .': '.$goodInfo->gd_name.\"\\n\"\r\n\t\t\t\t. __('goods.fields.in_stock') .': '.$goodInfo->in_stock.\"\\n\"\r\n\t\t\t\t. __('order.fields.order_created') .': '.$this->order->created_at,\r\n\t\t\t\"icon\"=>url('assets/common/images/default.jpg'),\r\n\t\t\t\"level\"=>\"timeSensitive\",\r\n\t\t\t\"group\"=>dujiaoka_config_get('text_logo', '独角数卡')\r\n\t\t];\r\n\t\tif (dujiaoka_config_get('is_open_bark_push_url', 0) == BaseModel::STATUS_OPEN) {\r\n\t\t\t$params[\"url\"] = url('detail-order-sn/'.$this->order->order_sn);\r\n\t\t}\r\n        $client->post($apiUrl,['form_params' => $params, 'verify' => false]);\r\n    }\r\n}\r\n"
  },
  {
    "path": "app/Jobs/CouponBack.php",
    "content": "<?php\n\nnamespace App\\Jobs;\n\nuse App\\Models\\Order;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Queue\\SerializesModels;\n\nclass CouponBack implements ShouldQueue\n{\n    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;\n\n    /**\n     * 任务最大尝试次数。\n     *\n     * @var int\n     */\n    public $tries = 3;\n\n    /**\n     * 任务可以执行的最大秒数 (超时时间)。\n     *\n     * @var int\n     */\n    public $timeout = 20;\n\n    private $order;\n\n    /**\n     * Create a new job instance.\n     *\n     * @return void\n     */\n    public function __construct(Order $order)\n    {\n        $this->order = $order;\n    }\n\n    /**\n     * Execute the job.\n     *\n     * @return void\n     */\n    public function handle()\n    {\n        // 如果订单有使用优惠码\n        if ($this->order->coupon_id) {\n            // 优惠码次数+1\n            app('Service\\CouponService')->retIncrByID($this->order->coupon_id);\n            // 设置订单优惠码已回退\n            app('Service\\OrderService')->couponIsBack($this->order->order_sn);\n        }\n    }\n}\n"
  },
  {
    "path": "app/Jobs/MailSend.php",
    "content": "<?php\n\nnamespace App\\Jobs;\n\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Mail\\MailServiceProvider;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Queue\\SerializesModels;\nuse Illuminate\\Support\\Facades\\Mail;\n\nclass MailSend implements ShouldQueue\n{\n\n    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;\n\n    /**\n     * 任务最大尝试次数。\n     *\n     * @var int\n     */\n    public $tries = 2;\n\n    /**\n     * 任务运行的超时时间。\n     *\n     * @var int\n     */\n    public $timeout = 30;\n\n    private $to;\n\n    private $content;\n\n    private $title;\n\n\n    /**\n     * Create a new job instance.\n     *\n     * @return void\n     */\n    public function __construct(string $to, string $title, string $content)\n    {\n        $this->to = $to;\n        $this->title = $title;\n        $this->content = $content;\n    }\n\n    /**\n     * Execute the job.\n     *\n     * @return void\n     */\n    public function handle()\n    {\n        $body = $this->content;\n        $title = $this->title;\n        $sysConfig = cache('system-setting');\n        $mailConfig = [\n            'driver' => $sysConfig['driver'] ?? 'smtp',\n            'host' => $sysConfig['host'] ?? '',\n            'port' => $sysConfig['port'] ?? '465',\n            'username' => $sysConfig['username'] ?? '',\n            'from'      =>  [\n                'address'   =>   $sysConfig['from_address'] ?? '',\n                'name'      =>  $sysConfig['from_name'] ?? '独角发卡'\n            ],\n            'password' => $sysConfig['password'] ?? '',\n            'encryption' => $sysConfig['encryption'] ?? ''\n        ];\n        $to = $this->to;\n        //  覆盖 mail 配置\n        config([\n            'mail'  =>  array_merge(config('mail'), $mailConfig)\n        ]);\n        // 重新注册驱动\n        (new MailServiceProvider(app()))->register();\n        Mail::send(['html' => 'email.mail'], ['body' => $body], function ($message) use ($to, $title){\n            $message->to($to)->subject($title);\n        });\n    }\n}\n"
  },
  {
    "path": "app/Jobs/OrderExpired.php",
    "content": "<?php\n\nnamespace App\\Jobs;\n\nuse App\\Models\\Order;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Queue\\SerializesModels;\n\nclass OrderExpired implements ShouldQueue\n{\n\n    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;\n\n    /**\n     * 任务最大尝试次数。\n     *\n     * @var int\n     */\n    public $tries = 3;\n\n    /**\n     * 任务可以执行的最大秒数 (超时时间)。\n     *\n     * @var int\n     */\n    public $timeout = 20;\n\n    /**\n     * 订单号\n     * @var string\n     */\n    private $orderSN;\n\n\n    /**\n     * Create a new job instance.\n     *\n     * @return void\n     */\n    public function __construct(string $orderSN)\n    {\n        $this->orderSN = $orderSN;\n    }\n\n    /**\n     * Execute the job.\n     *\n     * @return void\n     */\n    public function handle()\n    {\n        // 如果x分钟后还没支付就算过期\n        $order = app('Service\\OrderService')->detailOrderSN($this->orderSN);\n        if ($order && $order->status == Order::STATUS_WAIT_PAY) {\n            app('Service\\OrderService')->expiredOrderSN($this->orderSN);\n            // 回退优惠券\n            CouponBack::dispatch($order);\n        }\n    }\n}\n"
  },
  {
    "path": "app/Jobs/ServerJiang.php",
    "content": "<?php\n\nnamespace App\\Jobs;\n\nuse App\\Models\\Order;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Queue\\SerializesModels;\n\nclass ServerJiang implements ShouldQueue\n{\n    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;\n\n    /**\n     * 任务最大尝试次数。\n     *\n     * @var int\n     */\n    public $tries = 2;\n\n    /**\n     * 任务运行的超时时间。\n     *\n     * @var int\n     */\n    public $timeout = 30;\n\n    /**\n     * @var Order\n     */\n    private $order;\n\n    /**\n     * Create a new job instance.\n     *\n     * @return void\n     */\n    public function __construct(Order $order)\n    {\n        $this->order = $order;\n    }\n\n    /**\n     * Execute the job.\n     *\n     * @return void\n     */\n    public function handle()\n    {\n        $postdata = http_build_query([\n            'text' => __('dujiaoka.prompt.new_order_push') . \":{$this->order['ord_title']}\",\n            'desp' => \"\n- \". __('order.fields.title') .\"：{$this->order->title}\n- \". __('order.fields.order_sn') .\"：{$this->order->order_sn}\n- \". __('order.fields.email') .\"：{$this->order->email}\n- \". __('order.fields.actual_price') .\"：{$this->order->actual_price}\n            \"\n        ]);\n        $opts = [\n            'http' => [\n                'method'  => 'POST',\n                'header'  => 'Content-type: application/x-www-form-urlencoded',\n                'content' => $postdata\n            ]\n        ];\n        $context  = stream_context_create($opts);\n        $apiToken = dujiaoka_config_get('server_jiang_token');\n        file_get_contents('https://sctapi.ftqq.com/' . $apiToken . '.send', false, $context);\n    }\n}\n"
  },
  {
    "path": "app/Jobs/TelegramPush.php",
    "content": "<?php\n\nnamespace App\\Jobs;\n\nuse App\\Models\\Order;\nuse GuzzleHttp\\Client;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Queue\\SerializesModels;\n\n\nclass TelegramPush implements ShouldQueue\n{\n    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;\n\n    /**\n     * 任务最大尝试次数。\n     *\n     * @var int\n     */\n    public $tries = 2;\n\n    /**\n     * 任务运行的超时时间。\n     *\n     * @var int\n     */\n    public $timeout = 30;\n\n    /**\n     * @var Order\n     */\n    private $order;\n\n    /**\n     * 商品服务层.\n     * @var \\App\\Service\\PayService\n     */\n    private $goodsService;\n\n\n    /**\n     * Create a new job instance.\n     *\n     * @return void\n     */\n    public function __construct(Order $order)\n    {\n        $this->order = $order;\n        $this->goodsService = app('Service\\GoodsService');\n    }\n\n    /**\n     * Execute the job.\n     *\n     * @return void\n     */\n    public function handle()\n    {\n        $goodInfo = $this->goodsService->detail($this->order->goods_id);\n        $formatText = '*'. __('dujiaoka.prompt.new_order_push').'('.$this->order->actual_price.'元)*%0A'\n        . __('order.fields.order_id') .': `'.$this->order->id.'`%0A'\n        . __('order.fields.order_sn') .': `'.$this->order->order_sn.'`%0A'\n        . __('order.fields.pay_id') .': `'.$this->order->pay->pay_name.'`%0A'\n        . __('order.fields.title') .': '.$this->order->title.'%0A'\n        . __('order.fields.actual_price') .': '.$this->order->actual_price.'%0A'\n        . __('order.fields.email') .': `'.$this->order->email.'`%0A'\n        . __('goods.fields.gd_name') .': `'.$goodInfo->gd_name.'`%0A'\n        . __('goods.fields.in_stock') .': `'.$goodInfo->in_stock.'`%0A'\n        . __('order.fields.order_created') .': '.$this->order->created_at;\n        $client = new Client([\n            'timeout' => 30,\n            'proxy'=> ''\n        ]);\n        $apiUrl = 'https://api.telegram.org/bot' . dujiaoka_config_get('telegram_bot_token') .\n            '/sendMessage?chat_id=' . dujiaoka_config_get('telegram_userid') . '&parse_mode=Markdown&text='.$formatText;\n        $client->post($apiUrl);\n    }\n}\n"
  },
  {
    "path": "app/Jobs/WorkWeiXinPush.php",
    "content": "<?php\r\n\r\nnamespace App\\Jobs;\r\n\r\nuse App\\Models\\Order;\r\nuse GuzzleHttp\\Client;\r\nuse Illuminate\\Bus\\Queueable;\r\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\r\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\r\nuse Illuminate\\Queue\\InteractsWithQueue;\r\nuse Illuminate\\Queue\\SerializesModels;\r\n\r\n\r\nclass WorkWeiXinPush implements ShouldQueue\r\n{\r\n    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;\r\n\r\n    /**\r\n     * 任务最大尝试次数。\r\n     *\r\n     * @var int\r\n     */\r\n    public $tries = 1;\r\n\r\n    /**\r\n     * 任务运行的超时时间。\r\n     *\r\n     * @var int\r\n     */\r\n    public $timeout = 30;\r\n\r\n    /**\r\n     * @var Order\r\n     */\r\n    private $order;\r\n\r\n    /**\r\n     * 商品服务层.\r\n     * @var \\App\\Service\\PayService\r\n     */\r\n    private $goodsService;\r\n\r\n\r\n    /**\r\n     * Create a new job instance.\r\n     *\r\n     * @return void\r\n     */\r\n    public function __construct(Order $order)\r\n    {\r\n        $this->order = $order;\r\n        $this->goodsService = app('Service\\GoodsService');\r\n    }\r\n\r\n    /**\r\n     * Execute the job.\r\n     *\r\n     * @return void\r\n     */\r\n    public function handle()\r\n    {\r\n        $goodInfo = $this->goodsService->detail($this->order->goods_id);\r\n        $client = new Client();\r\n        $apiUrl = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='. dujiaoka_config_get('qywxbot_key');\r\n\t\t$params = [\r\n\t\t\t\"msgtype\"=>\"markdown\",\r\n\t\t\t\"markdown\"=>[\r\n\t\t\t\t\"content\"=>__('dujiaoka.prompt.new_order_push').'(<font color=\"warning\">'.$this->order->actual_price.\"</font>元)\\n\"\r\n\t\t\t\t.'>'.__('order.fields.order_id') .': <font color=\"comment\">'.$this->order->id.\"</font>\\n\"\r\n\t\t\t\t.'>'.__('order.fields.order_sn') .': <font color=\"comment\">'.$this->order->order_sn.\"</font>\\n\"\r\n\t\t\t\t.'>'.__('order.fields.pay_id') .': <font color=\"comment\">'.$this->order->pay->pay_name.\"</font>\\n\"\r\n\t\t\t\t.'>'.__('order.fields.title') .': <font color=\"comment\">'.$this->order->title.\"</font>\\n\"\r\n\t\t\t\t.'>'.__('order.fields.actual_price') .': <font color=\"comment\">'.$this->order->actual_price.\"</font>\\n\"\r\n\t\t\t\t.'>'.__('order.fields.email') .': <font color=\"comment\">'.$this->order->email.\"</font>\\n\"\r\n\t\t\t\t.'>'.__('goods.fields.gd_name') .': <font color=\"comment\">'.$goodInfo->gd_name.\"</font>\\n\"\r\n\t\t\t\t.'>'.__('goods.fields.in_stock') .': <font color=\"comment\">'.$goodInfo->in_stock.\"</font>\\n\"\r\n\t\t\t\t.'>'.__('order.fields.order_created') .': <font color=\"comment\">'.$this->order->created_at.\"</font>\"\r\n\t\t\t]\r\n\t\t];\r\n        $client->post($apiUrl,['json' => $params, 'verify' => false]);\r\n    }\r\n}\r\n"
  },
  {
    "path": "app/Listeners/GoodsDeleted.php",
    "content": "<?php\n\nnamespace App\\Listeners;\n\nuse App\\Models\\Carmis;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse App\\Events\\GoodsDeleted as GoodsDeletedEvent;\n\nclass GoodsDeleted\n{\n    /**\n     * Create the event listener.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        //\n    }\n\n    /**\n     * Handle the event.\n     *\n     * @param  object  $event\n     * @return void\n     */\n    public function handle(GoodsDeletedEvent $event)\n    {\n        Carmis::query()->where('goods_id', $event->goods->id)->delete();\n    }\n}\n"
  },
  {
    "path": "app/Listeners/GoodsGroupDeleted.php",
    "content": "<?php\n\nnamespace App\\Listeners;\n\nuse App\\Models\\Goods;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse App\\Events\\GoodsGroupDeleted as GoodsGroupDeletedEvent;\n\nclass GoodsGroupDeleted\n{\n    /**\n     * Create the event listener.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        //\n    }\n\n    /**\n     * Handle the event.\n     *\n     * @param  GoodsGroupDeletedEvent  $event\n     * @return void\n     */\n    public function handle(GoodsGroupDeletedEvent $event)\n    {\n        Goods::query()->where('group_id', $event->goodsGroup->id)->delete();\n    }\n}\n"
  },
  {
    "path": "app/Listeners/OrderUpdated.php",
    "content": "<?php\n\nnamespace App\\Listeners;\n\nuse App\\Jobs\\MailSend;\nuse App\\Models\\Emailtpl;\nuse App\\Models\\Order;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse App\\Events\\OrderUpdated as OrderUpdatedEvent;\n\nclass OrderUpdated\n{\n    /**\n     * Create the event listener.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        //\n    }\n\n    /**\n     * Handle the event.\n     *\n     * @param  object  $event\n     * @return void\n     */\n    public function handle(OrderUpdatedEvent $event)\n    {\n        $sysCache = cache('system-setting');\n        // 当代充商品状态，将会对顾客进行订单内容推送\n        $order = [\n            'created_at' => date('Y-m-d H:i'),\n            'ord_title' => $event->order->title,\n            'webname' => $sysCache['text_logo'] ?? '独角数卡',\n            'weburl' => config('app.url'),\n            'order_id' => $event->order->order_sn,\n            'ord_price' => $event->order->actual_price,\n            'ord_info' => str_replace(PHP_EOL, '<br/>', $event->order->info)\n        ];\n        $to = $event->order->email;\n        // 邮件\n        if ($event->order->type == Order::MANUAL_PROCESSING) {\n            switch ($event->order->status) {\n                case Order::STATUS_PENDING:\n                    $mailtpl = Emailtpl::query()->where('tpl_token', 'pending_order')->first()->toArray();\n                    self::sendMailToOrderStatus($mailtpl, $order, $to);\n                    break;\n                case Order::STATUS_COMPLETED:\n                    $mailtpl = Emailtpl::query()->where('tpl_token', 'completed_order')->first()->toArray();\n                    self::sendMailToOrderStatus($mailtpl, $order, $to);\n                    break;\n                case Order::STATUS_FAILURE:\n                    $mailtpl = Emailtpl::query()->where('tpl_token', 'failed_order')->first()->toArray();\n                    self::sendMailToOrderStatus($mailtpl, $order, $to);\n                    break;\n            }\n        }\n    }\n\n\n    /**\n     * 邮件发送\n     *\n     * @param array $mailtpl 模板\n     * @param array $order 内容\n     * @param string $to 接受者\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    private static function sendMailToOrderStatus(array $mailtpl, array $order, string $to) :void\n    {\n        $info = replace_mail_tpl($mailtpl, $order);\n        MailSend::dispatch($to, $info['tpl_name'], $info['tpl_content']);\n    }\n}\n"
  },
  {
    "path": "app/Models/BaseModel.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass BaseModel extends Model\n{\n\n    const STATUS_OPEN = 1; // 状态开启\n    const STATUS_CLOSE = 0; // 状态关闭\n\n    const AUTOMATIC_DELIVERY = 1; // 自动发货\n    const MANUAL_PROCESSING = 2; // 人工处理\n\n    /**\n     * map\n     *\n     * @return array\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public static function getIsOpenMap()\n    {\n        return [\n            self::STATUS_OPEN => admin_trans('dujiaoka.status_open'),\n            self::STATUS_CLOSE => admin_trans('dujiaoka.status_close')\n        ];\n    }\n\n}\n"
  },
  {
    "path": "app/Models/Carmis.php",
    "content": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\n\nclass Carmis extends BaseModel\n{\n\n    use SoftDeletes;\n\n    protected $table = 'carmis';\n\n    /**\n     * 未售出\n     */\n    const STATUS_UNSOLD = 1;\n\n    /**\n     * 已售出\n     */\n    const STATUS_SOLD = 2;\n\n    /**\n     * 获取组建映射\n     *\n     * @return array\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public static function getStatusMap()\n    {\n        return [\n            self::STATUS_UNSOLD => admin_trans('carmis.fields.status_unsold'),\n            self::STATUS_SOLD => admin_trans('carmis.fields.status_sold')\n        ];\n    }\n\n    /**\n     * 关联商品\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Relations\\BelongsTo\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function goods()\n    {\n        return $this->belongsTo(Goods::class, 'goods_id');\n    }\n\n}\n"
  },
  {
    "path": "app/Models/Coupon.php",
    "content": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\n\nclass Coupon extends BaseModel\n{\n\n    use SoftDeletes;\n\n    protected $table = 'coupons';\n\n    /**\n     * 一次性使用\n     */\n    const TYPE_ONE_TIME = 1;\n\n    /**\n     * 重复使用\n     */\n    const TYPE_REPEAT = 2;\n\n    /**\n     * 未使用\n     */\n    const STATUS_UNUSED = 1;\n\n    /**\n     * 已使用\n     */\n    const STATUS_USE = 2;\n\n    /**\n     * 关联商品\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function goods()\n    {\n        return $this->belongsToMany(Goods::class, 'coupons_goods', 'coupons_id', 'goods_id');\n    }\n\n\n    public static function getStatusUseMap()\n    {\n        return [\n            self::STATUS_USE => admin_trans('coupon.fields.status_use'),\n            self::STATUS_UNUSED => admin_trans('coupon.fields.status_unused'),\n        ];\n    }\n\n\n}\n"
  },
  {
    "path": "app/Models/Emailtpl.php",
    "content": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Emailtpl extends Model\n{\n\n    use SoftDeletes;\n\n    protected $table = 'emailtpls';\n\n}\n"
  },
  {
    "path": "app/Models/Goods.php",
    "content": "<?php\n\nnamespace App\\Models;\n\n\nuse App\\Events\\GoodsDeleted;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\n\nclass Goods extends BaseModel\n{\n\n    use SoftDeletes;\n\n    protected $table = 'goods';\n\n    protected $dispatchesEvents = [\n        'deleted' => GoodsDeleted::class\n    ];\n\n    /**\n     * 关联分类\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Relations\\BelongsTo\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function group()\n    {\n        return $this->belongsTo(GoodsGroup::class, 'group_id');\n    }\n\n    /**\n     * 关联优惠券\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function coupon()\n    {\n        return $this->belongsToMany(Coupon::class, 'coupons_goods', 'goods_id', 'coupons_id');\n    }\n\n    /**\n     * 关联卡密\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Relations\\HasMany\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function carmis()\n    {\n        return $this->hasMany(Carmis::class, 'goods_id');\n    }\n\n    /**\n     * 库存读取器,将自动发货的库存更改为未出售卡密的数量\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function getInStockAttribute()\n    {\n        if (isset($this->attributes['carmis_count'])\n            &&\n            $this->attributes['type'] == self::AUTOMATIC_DELIVERY\n        ) {\n           $this->attributes['in_stock'] = $this->attributes['carmis_count'];\n        }\n        return $this->attributes['in_stock'];\n    }\n\n    /**\n     * 获取组建映射\n     *\n     * @return array\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public static function getGoodsTypeMap()\n    {\n        return [\n            self::AUTOMATIC_DELIVERY => admin_trans('goods.fields.automatic_delivery'),\n            self::MANUAL_PROCESSING => admin_trans('goods.fields.manual_processing')\n        ];\n    }\n\n}\n"
  },
  {
    "path": "app/Models/GoodsGroup.php",
    "content": "<?php\n\nnamespace App\\Models;\n\n\nuse App\\Events\\GoodsGroupDeleted;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\n\nclass GoodsGroup extends BaseModel\n{\n\n    use SoftDeletes;\n\n    protected $table = 'goods_group';\n\n    protected $dispatchesEvents = [\n        'deleted' => GoodsGroupDeleted::class\n    ];\n\n    /**\n     * 关联商品\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Relations\\HasMany\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function goods()\n    {\n        return $this->hasMany(Goods::class, 'group_id');\n    }\n\n}\n"
  },
  {
    "path": "app/Models/Order.php",
    "content": "<?php\n\nnamespace App\\Models;\n\nuse App\\Events\\OrderUpdated;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\n\nclass Order extends BaseModel\n{\n\n    use SoftDeletes;\n\n    protected $table = 'orders';\n\n    /**\n     * 待支付\n     */\n    const STATUS_WAIT_PAY = 1;\n\n    /**\n     * 待处理\n     */\n    const STATUS_PENDING = 2;\n\n    /**\n     * 处理中\n     */\n    const STATUS_PROCESSING = 3;\n\n    /**\n     * 已完成\n     */\n    const STATUS_COMPLETED = 4;\n\n    /**\n     * 失败\n     */\n    const STATUS_FAILURE = 5;\n\n    /**\n     * 过期\n     */\n    const STATUS_EXPIRED = -1;\n\n    /**\n     * 异常\n     */\n    const STATUS_ABNORMAL = 6;\n\n    /**\n     * 优惠券未回退\n     */\n    const COUPON_BACK_WAIT = 0;\n\n    /**\n     * 优惠券已回退\n     */\n    const COUPON_BACK_OK = 1;\n\n    protected $dispatchesEvents = [\n        'updated' => OrderUpdated::class\n    ];\n\n\n    /**\n     * 状态映射\n     *\n     * @return array\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public static function getStatusMap()\n    {\n        return [\n            self::STATUS_WAIT_PAY => admin_trans('order.fields.status_wait_pay'),\n            self::STATUS_PENDING => admin_trans('order.fields.status_pending'),\n            self::STATUS_PROCESSING => admin_trans('order.fields.status_processing'),\n            self::STATUS_COMPLETED => admin_trans('order.fields.status_completed'),\n            self::STATUS_FAILURE => admin_trans('order.fields.status_failure'),\n            self::STATUS_ABNORMAL => admin_trans('order.fields.status_abnormal'),\n            self::STATUS_EXPIRED => admin_trans('order.fields.status_expired')\n        ];\n    }\n\n    /**\n     * 类型映射\n     *\n     * @return array\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public static function getTypeMap()\n    {\n        return [\n            self::AUTOMATIC_DELIVERY => admin_trans('goods.fields.automatic_delivery'),\n            self::MANUAL_PROCESSING => admin_trans('goods.fields.manual_processing')\n        ];\n    }\n\n    /**\n     * 关联商品\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Relations\\BelongsTo\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function goods()\n    {\n        return $this->belongsTo(Goods::class, 'goods_id');\n    }\n\n    /**\n     * 关联优惠券\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Relations\\BelongsTo\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function coupon()\n    {\n        return $this->belongsTo(Coupon::class, 'coupon_id');\n    }\n\n    /**\n     * 关联支付\n     *\n     * @return \\Illuminate\\Database\\Eloquent\\Relations\\BelongsTo\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function pay()\n    {\n        return $this->belongsTo(Pay::class, 'pay_id');\n    }\n\n}\n"
  },
  {
    "path": "app/Models/Pay.php",
    "content": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Pay extends BaseModel\n{\n\n    use SoftDeletes;\n\n    protected $table = 'pays';\n\n    /**\n     * 跳转\n     */\n    const METHOD_JUMP = 1;\n\n    /**\n     * 扫码\n     */\n    const METHOD_SCAN = 2;\n\n    /**\n     * 电脑\n     */\n    const PAY_CLIENT_PC = 1;\n\n    /**\n     * 手机\n     */\n    const PAY_CLIENT_MOBILE = 2;\n\n    /**\n     * 通用\n     */\n    const PAY_CLIENT_ALL = 3;\n\n    public static function getMethodMap()\n    {\n        return [\n            self::METHOD_JUMP => admin_trans('pay.fields.method_jump'),\n            self::METHOD_SCAN => admin_trans('pay.fields.method_scan'),\n        ];\n    }\n\n    public static function getClientMap()\n    {\n        return [\n            self::PAY_CLIENT_PC => admin_trans('pay.fields.pay_client_pc'),\n            self::PAY_CLIENT_MOBILE => admin_trans('pay.fields.pay_client_mobile'),\n            self::PAY_CLIENT_ALL => admin_trans('pay.fields.pay_client_all'),\n        ];\n    }\n\n}\n"
  },
  {
    "path": "app/Providers/AppServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse App\\Service\\CarmisService;\nuse App\\Service\\CouponService;\nuse App\\Service\\EmailtplService;\nuse App\\Service\\GoodsService;\nuse App\\Service\\OrderProcessService;\nuse App\\Service\\OrderService;\nuse App\\Service\\PayService;\nuse Illuminate\\Support\\ServiceProvider;\nuse Jenssegers\\Agent\\Agent;\n\nclass AppServiceProvider extends ServiceProvider\n{\n    /**\n     * Register any application services.\n     *\n     * @return void\n     */\n    public function register()\n    {\n        $this->app->singleton('Service\\GoodsService', function () {\n            return $this->app->make(GoodsService::class);\n        });\n        $this->app->singleton('Service\\PayService', function () {\n            return $this->app->make(PayService::class);\n        });\n        $this->app->singleton('Service\\CarmisService', function () {\n            return $this->app->make(CarmisService::class);\n        });\n        $this->app->singleton('Service\\OrderService', function () {\n            return $this->app->make(OrderService::class);\n        });\n        $this->app->singleton('Service\\CouponService', function () {\n            return $this->app->make(CouponService::class);\n        });\n        $this->app->singleton('Service\\OrderProcessService', function () {\n            return $this->app->make(OrderProcessService::class);\n        });\n        $this->app->singleton('Service\\EmailtplService', function () {\n            return $this->app->make(EmailtplService::class);\n        });\n        $this->app->singleton('Jenssegers\\Agent', function () {\n            return $this->app->make(Agent::class);\n        });\n\n    }\n\n    /**\n     * Bootstrap any application services.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n\n    }\n}\n"
  },
  {
    "path": "app/Providers/AuthServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Foundation\\Support\\Providers\\AuthServiceProvider as ServiceProvider;\nuse Illuminate\\Support\\Facades\\Gate;\n\nclass AuthServiceProvider extends ServiceProvider\n{\n    /**\n     * The policy mappings for the application.\n     *\n     * @var array\n     */\n    protected $policies = [\n        // 'App\\Model' => 'App\\Policies\\ModelPolicy',\n    ];\n\n    /**\n     * Register any authentication / authorization services.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n        $this->registerPolicies();\n\n        //\n    }\n}\n"
  },
  {
    "path": "app/Providers/BroadcastServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\Facades\\Broadcast;\nuse Illuminate\\Support\\ServiceProvider;\n\nclass BroadcastServiceProvider extends ServiceProvider\n{\n    /**\n     * Bootstrap any application services.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n        Broadcast::routes();\n\n        require base_path('routes/channels.php');\n    }\n}\n"
  },
  {
    "path": "app/Providers/EventServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse App\\Events\\GoodsDeleted;\nuse App\\Events\\GoodsGroupDeleted;\nuse App\\Events\\OrderUpdated;\nuse Illuminate\\Auth\\Events\\Registered;\nuse Illuminate\\Auth\\Listeners\\SendEmailVerificationNotification;\nuse Illuminate\\Foundation\\Support\\Providers\\EventServiceProvider as ServiceProvider;\nuse Illuminate\\Support\\Facades\\Event;\n\nclass EventServiceProvider extends ServiceProvider\n{\n    /**\n     * The event listener mappings for the application.\n     *\n     * @var array\n     */\n    protected $listen = [\n        Registered::class => [\n            SendEmailVerificationNotification::class,\n        ],\n        GoodsGroupDeleted::class => [\n            \\App\\Listeners\\GoodsGroupDeleted::class,\n        ],\n        GoodsDeleted::class => [\n            \\App\\Listeners\\GoodsDeleted::class,\n        ],\n        OrderUpdated::class => [\n            \\App\\Listeners\\OrderUpdated::class,\n        ],\n    ];\n\n    /**\n     * Register any events for your application.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n        parent::boot();\n        //\n    }\n}\n"
  },
  {
    "path": "app/Providers/RouteServiceProvider.php",
    "content": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Foundation\\Support\\Providers\\RouteServiceProvider as ServiceProvider;\nuse Illuminate\\Support\\Facades\\Route;\n\nclass RouteServiceProvider extends ServiceProvider\n{\n    /**\n     * This namespace is applied to your controller routes.\n     *\n     * In addition, it is set as the URL generator's root namespace.\n     *\n     * @var string\n     */\n    protected $namespace = 'App\\Http\\Controllers';\n\n    /**\n     * The path to the \"home\" route for your application.\n     *\n     * @var string\n     */\n    public const HOME = '/home';\n\n    /**\n     * Define your route model bindings, pattern filters, etc.\n     *\n     * @return void\n     */\n    public function boot()\n    {\n        //\n\n        parent::boot();\n    }\n\n    /**\n     * Define the routes for the application.\n     *\n     * @return void\n     */\n    public function map()\n    {\n        $this->mapApiRoutes();\n\n        $this->mapWebRoutes();\n\n        //\n    }\n\n    /**\n     * Define the \"web\" routes for the application.\n     *\n     * These routes all receive session state, CSRF protection, etc.\n     *\n     * @return void\n     */\n    protected function mapWebRoutes()\n    {\n        Route::middleware('web')\n             ->namespace($this->namespace)\n             ->group(base_path('routes/web.php'));\n    }\n\n    /**\n     * Define the \"api\" routes for the application.\n     *\n     * These routes are typically stateless.\n     *\n     * @return void\n     */\n    protected function mapApiRoutes()\n    {\n        Route::prefix('api')\n             ->middleware('api')\n             ->namespace($this->namespace)\n             ->group(base_path('routes/api.php'));\n    }\n}\n"
  },
  {
    "path": "app/Rules/SearchPwd.php",
    "content": "<?php\n\nnamespace App\\Rules;\n\nuse App\\Models\\BaseModel;\nuse Illuminate\\Contracts\\Validation\\Rule;\n\nclass SearchPwd implements Rule\n{\n    /**\n     * Create a new rule instance.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        //\n    }\n\n    /**\n     * Determine if the validation rule passes.\n     *\n     * @param  string  $attribute\n     * @param  mixed  $value\n     * @return bool\n     */\n    public function passes($attribute, $value)\n    {\n        if (dujiaoka_config_get('is_open_search_pwd') == BaseModel::STATUS_OPEN && empty($value)) {\n            return false;\n        }\n        return true;\n    }\n\n    /**\n     * Get the validation error message.\n     *\n     * @return string\n     */\n    public function message()\n    {\n        return __('dujiaoka.prompt.search_password_can_not_be_empty');\n    }\n}\n"
  },
  {
    "path": "app/Rules/VerifyImg.php",
    "content": "<?php\n\nnamespace App\\Rules;\n\nuse App\\Models\\BaseModel;\nuse Illuminate\\Contracts\\Validation\\Rule;\n\nclass VerifyImg implements Rule\n{\n    /**\n     * Create a new rule instance.\n     *\n     * @return void\n     */\n    public function __construct()\n    {\n        //\n    }\n\n    /**\n     * Determine if the validation rule passes.\n     *\n     * @param  string  $attribute\n     * @param  mixed  $value\n     * @return bool\n     */\n    public function passes($attribute, $value)\n    {\n        if (dujiaoka_config_get('is_open_img_code') == BaseModel::STATUS_OPEN && !captcha_check($value)) {\n            return false;\n        }\n        return true;\n    }\n\n    /**\n     * Get the validation error message.\n     *\n     * @return string\n     */\n    public function message()\n    {\n        return __('dujiaoka.prompt.image_verify_code_error');\n    }\n}\n"
  },
  {
    "path": "app/Service/CarmisService.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Service;\n\n\nuse App\\Models\\Carmis;\n\nclass CarmisService\n{\n\n    /**\n     * 通过商品查询一些数量未使用的卡密\n     *\n     * @param int $goodsID 商品id\n     * @param int $byAmount 数量\n     * @return array|null\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function withGoodsByAmountAndStatusUnsold(int $goodsID, int $byAmount)\n    {\n        $carmis = Carmis::query()\n            ->where('goods_id', $goodsID)\n            ->where('status', Carmis::STATUS_UNSOLD)\n            ->take($byAmount)\n            ->get();\n        return $carmis ? $carmis->toArray() : null;\n    }\n\n    /**\n     * 通过id集合设置卡密已售出\n     *\n     * @param array $ids 卡密id集合\n     * @return bool\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function soldByIDS(array $ids): bool\n    {\n        return Carmis::query()->whereIn('id', $ids)->where('is_loop', 0)->update(['status' => Carmis::STATUS_SOLD]);\n    }\n\n}\n"
  },
  {
    "path": "app/Service/CouponService.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Service;\n\n\nuse App\\Models\\Coupon;\n\nclass CouponService\n{\n\n    /**\n     * 获得优惠码，通过商品关联\n     *\n     * @param string $coupon 优惠码\n     * @param int $goodsID 商品id\n     * @return \\Illuminate\\Database\\Eloquent\\Builder|\\Illuminate\\Database\\Eloquent\\Model|object|null\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function withHasGoods(string $coupon, int $goodsID)\n    {\n        $coupon = Coupon::query()->whereHas('goods', function ($query) use ($goodsID) {\n            $query->where('goods_id', $goodsID);\n        })->where('is_open', Coupon::STATUS_OPEN)->where('coupon', $coupon)->first();\n        return $coupon;\n    }\n\n    /**\n     * 设置优惠券已使用\n     * @param string $coupon\n     * @return bool\n     */\n    public function used(string $coupon): bool\n    {\n        return Coupon::query()\n            ->where('coupon',  $coupon)\n            ->update(['is_use' => Coupon::STATUS_USE]);\n    }\n\n    /**\n     * 设置优惠券使用次数 -1\n     * @param string $coupon\n     * @return int\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function retDecr(string $coupon)\n    {\n        return Coupon::query()\n            ->where('coupon',  $coupon)\n            ->decrement('ret', 1);\n    }\n\n    /**\n     * 设置优惠券次数+1\n     *\n     * @param int $id\n     * @return int\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function retIncrByID(int $id)\n    {\n        return Coupon::query()->where('id',  $id)->increment('ret', 1);\n    }\n\n}\n"
  },
  {
    "path": "app/Service/EmailtplService.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Service;\n\n\nuse App\\Models\\Emailtpl;\n\nclass EmailtplService\n{\n\n    /**\n     * 通过邮件标识获得邮件模板\n     *\n     * @param string $token 邮件标识\n     * @return Emailtpl\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function detailByToken(string $token): Emailtpl\n    {\n        $tpl = Emailtpl::query()->where('tpl_token', $token)->first();\n        return $tpl;\n    }\n\n}\n"
  },
  {
    "path": "app/Service/GoodsService.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Service;\n\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Models\\Carmis;\nuse App\\Models\\Goods;\nuse App\\Models\\GoodsGroup;\n\n/**\n * 商品服务层\n *\n * Class GoodsService\n * @package App\\Service\n * @author: Assimon\n * @email: Ashang@utf8.hk\n * @blog: https://utf8.hk\n * Date: 2021/5/30\n */\nclass GoodsService\n{\n\n    /**\n     * 获取所有分类并加载该分类下的商品\n     *\n     * @return array|null\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function withGroup(): ?array\n    {\n        $goods = GoodsGroup::query()\n            ->with(['goods' => function($query) {\n                $query->withCount(['carmis' => function($query) {\n                    $query->where('status', Carmis::STATUS_UNSOLD);\n                }])->where('is_open', Goods::STATUS_OPEN)->orderBy('ord', 'DESC');\n            }])\n            ->where('is_open', GoodsGroup::STATUS_OPEN)\n            ->orderBy('ord', 'DESC')\n            ->get();\n        // 将自动\n        return $goods ? $goods->toArray() : null;\n    }\n\n    /**\n     * 商品详情\n     *\n     * @param int $id 商品id\n     * @return \\Illuminate\\Database\\Eloquent\\Builder|\\Illuminate\\Database\\Eloquent\\Model|object|null\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function detail(int $id)\n    {\n        $goods = Goods::query()\n            ->with(['coupon'])\n            ->withCount(['carmis' => function($query) {\n                $query->where('status', Carmis::STATUS_UNSOLD);\n            }])->where('id', $id)->first();\n        return $goods;\n    }\n\n    /**\n     * 格式化商品信息\n     *\n     * @param Goods $goods 商品模型\n     * @return Goods\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function format(Goods $goods)\n    {\n        // 格式化批发配置以及输入框配置\n        $goods->wholesale_price_cnf = $goods->wholesale_price_cnf ?\n            format_wholesale_price($goods->wholesale_price_cnf) :\n            null;\n        // 如果存在其他配置输入框且为代充\n        $goods->other_ipu = $goods->other_ipu_cnf ?\n            format_charge_input($goods->other_ipu_cnf) :\n            null;\n        return $goods;\n    }\n\n    /**\n     * 验证商品状态\n     *\n     * @param Goods $goods\n     * @return Goods\n     * @throws RuleValidationException\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function validatorGoodsStatus(Goods $goods): Goods\n    {\n        if (empty($goods)) {\n            throw new RuleValidationException(__('dujiaoka.prompt.goods_does_not_exist'));\n        }\n        // 上架判断.\n        if ($goods->is_open != Goods::STATUS_OPEN) {\n            throw new RuleValidationException(__('dujiaoka.prompt.the_goods_is_not_on_the_shelves'));\n        }\n        return $goods;\n    }\n\n    /**\n     * 库存减去\n     *\n     * @param int $id 商品id\n     * @param int $number 出库数量\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function inStockDecr(int $id, int $number = 1): bool\n    {\n        return Goods::query()->where('id', $id)->decrement('in_stock', $number);\n    }\n\n    /**\n     * 商品销量加\n     *\n     * @param int $id 商品id\n     * @param int $number 数量\n     * @return bool\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function salesVolumeIncr(int $id, int $number = 1): bool\n    {\n        return Goods::query()->where('id', $id)->increment('sales_volume', $number);\n    }\n\n}\n"
  },
  {
    "path": "app/Service/OrderProcessService.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Service;\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Jobs\\ApiHook;\nuse App\\Jobs\\MailSend;\nuse App\\Jobs\\OrderExpired;\nuse App\\Jobs\\ServerJiang;\nuse App\\Jobs\\TelegramPush;\nuse App\\Jobs\\BarkPush;\nuse App\\Jobs\\WorkWeiXinPush;\nuse App\\Models\\BaseModel;\nuse App\\Models\\Coupon;\nuse App\\Models\\Goods;\nuse App\\Models\\Order;\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\DB;\nuse Illuminate\\Support\\Str;\n\n/**\n * 订单处理层\n *\n * Class OrderProcessService\n * @package App\\Service\n * @author: Assimon\n * @email: Ashang@utf8.hk\n * @blog: https://utf8.hk\n * Date: 2021/5/30\n */\nclass OrderProcessService\n{\n\n    const PENDING_CACHE_KEY = 'PENDING_ORDERS_LIST';\n\n    /**\n     * 优惠码服务层\n     * @var \\App\\Service\\CouponService\n     */\n    private $couponService;\n\n    /**\n     * 订单服务层\n     * @var \\App\\Service\\OrderService\n     */\n    private $orderService;\n\n    /**\n     * 卡密服务层\n     * @var \\App\\Service\\CarmisService\n     */\n    private $carmisService;\n\n    /**\n     * 邮件服务层\n     * @var \\App\\Service\\EmailtplService\n     */\n    private $emailtplService;\n\n    /**\n     * 商品服务层.\n     * @var \\App\\Service\\GoodsService\n     */\n    private $goodsService;\n\n    /**\n     * 商品\n     * @var Goods\n     */\n    private $goods;\n\n    /**\n     * 优惠码\n     * @var Coupon;\n     */\n    private $coupon;\n\n    /**\n     * 其他输入框\n     * @var string\n     */\n    private $otherIpt;\n\n    /**\n     * 购买数量\n     * @var int\n     */\n    private $buyAmount;\n\n    /**\n     * 购买邮箱\n     * @var string\n     */\n    private $email;\n\n    /**\n     * 查询密码\n     * @var string\n     */\n    private $searchPwd;\n\n    /**\n     * 下单id\n     * @var string\n     */\n    private $buyIP;\n\n    /**\n     * 支付方式\n     * @var int\n     */\n    private $payID;\n\n    public function __construct()\n    {\n        $this->couponService = app('Service\\CouponService');\n        $this->orderService = app('Service\\OrderService');\n        $this->carmisService = app('Service\\CarmisService');\n        $this->emailtplService = app('Service\\EmailtplService');\n        $this->goodsService = app('Service\\GoodsService');\n\n    }\n\n    /**\n     * 设置支付方式\n     * @param int $payID\n     */\n    public function setPayID(int $payID): void\n    {\n        $this->payID = $payID;\n    }\n\n\n\n    /**\n     * 下单ip\n     * @param mixed $buyIP\n     */\n    public function setBuyIP($buyIP): void\n    {\n        $this->buyIP = $buyIP;\n    }\n\n    /**\n     * 设置查询密码\n     * @param mixed $searchPwd\n     */\n    public function setSearchPwd($searchPwd): void\n    {\n        $this->searchPwd = $searchPwd;\n    }\n\n    /**\n     * 设置购买数量\n     * @param mixed $buyAmount\n     */\n    public function setBuyAmount($buyAmount): void\n    {\n        $this->buyAmount = $buyAmount;\n    }\n\n    /**\n     * 设置下单邮箱\n     * @param mixed $email\n     */\n    public function setEmail($email): void\n    {\n        $this->email = $email;\n    }\n\n    /**\n     * 设置商品\n     *\n     * @param Goods $goods\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function setGoods(Goods $goods)\n    {\n        $this->goods = $goods;\n    }\n\n    /**\n     * 设置优惠码.\n     *\n     * @param ?Coupon $coupon\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function setCoupon(?Coupon $coupon)\n    {\n        $this->coupon = $coupon;\n    }\n\n    /**\n     * 其他输入框设置.\n     *\n     * @param ?string $otherIpt\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function setOtherIpt(?string $otherIpt)\n    {\n        $this->otherIpt = $otherIpt;\n    }\n\n    /**\n     * 计算优惠码价格\n     *\n     * @return float\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    private function calculateTheCouponPrice(): float\n    {\n        $couponPrice = 0;\n        // 优惠码优惠价格\n        if ($this->coupon) {\n            $couponPrice =  $this->coupon->discount;\n        }\n        return $couponPrice;\n    }\n\n    /**\n     * 计算批发优惠\n     * @return float\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    private function calculateTheWholesalePrice(): float\n    {\n        $wholesalePrice = 0; // 优惠单价\n        $wholesaleTotalPrice = 0; // 优惠总价\n        if ($this->goods->wholesale_price_cnf) {\n            $formatWholesalePrice = format_wholesale_price($this->goods->wholesale_price_cnf);\n            foreach ($formatWholesalePrice as $item) {\n                if ($this->buyAmount >= $item['number']) {\n                    $wholesalePrice = $item['price'];\n                }\n            }\n        }\n        if ($wholesalePrice > 0 ) {\n            $totalPrice = $this->calculateTheTotalPrice(); // 实际原总价\n            $newTotalPrice = bcmul($wholesalePrice, $this->buyAmount, 2); // 批发价优惠后的总价\n            $wholesaleTotalPrice = bcsub($totalPrice, $newTotalPrice, 2); // 批发总优惠\n        }\n        return $wholesaleTotalPrice;\n    }\n\n    /**\n     * 订单总价\n     * @return float\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    private function calculateTheTotalPrice(): float\n    {\n        $price = $this->goods->actual_price;\n        return bcmul($price, $this->buyAmount, 2);\n    }\n\n    /**\n     * 计算实际需要支付的价格\n     *\n     * @param float $totalPrice 总价\n     * @param float $couponPrice 优惠码优惠价\n     * @param float $wholesalePrice 批发优惠\n     * @return float\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    private function calculateTheActualPrice(float $totalPrice, float $couponPrice, float $wholesalePrice): float\n    {\n        $actualPrice = bcsub($totalPrice, $couponPrice, 2);\n        $actualPrice = bcsub($actualPrice, $wholesalePrice, 2);\n        if ($actualPrice <= 0) {\n            $actualPrice = 0;\n        }\n        return $actualPrice;\n    }\n\n    /**\n     * 创建订单.\n     * @return Order\n     * @throws RuleValidationException\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function createOrder(): Order\n    {\n        try {\n            $order = new Order();\n            // 生成订单号\n            $order->order_sn = strtoupper(Str::random(16));\n            // 设置商品\n            $order->goods_id = $this->goods->id;\n            // 标题\n            $order->title = $this->goods->gd_name . ' x ' . $this->buyAmount;\n            // 订单类型\n            $order->type = $this->goods->type;\n            // 查询密码\n            $order->search_pwd = $this->searchPwd;\n            // 邮箱\n            $order->email = $this->email;\n            // 支付方式.\n            $order->pay_id = $this->payID;\n            // 商品单价\n            $order->goods_price = $this->goods->actual_price;\n            // 购买数量\n            $order->buy_amount = $this->buyAmount;\n            // 订单详情\n            $order->info = $this->otherIpt;\n            // ip地址\n            $order->buy_ip = $this->buyIP;\n            // 优惠码优惠价格\n            $order->coupon_discount_price = $this->calculateTheCouponPrice();\n            if ($this->coupon) {\n                $order->coupon_id = $this->coupon->id;\n            }\n            // 批发价\n            $order->wholesale_discount_price = $this->calculateTheWholesalePrice();\n            // 订单总价\n            $order->total_price = $this->calculateTheTotalPrice();\n            // 订单实际需要支付价格\n            $order->actual_price = $this->calculateTheActualPrice(\n                $this->calculateTheTotalPrice(),\n                $this->calculateTheCouponPrice(),\n                $this->calculateTheWholesalePrice()\n            );\n            // 保存订单\n            $order->save();\n            // 如果有用到优惠券\n            if ($this->coupon) {\n                // 设置优惠码已经使用\n                $this->couponService->used($this->coupon->coupon);\n                // 使用次数-1\n                $this->couponService->retDecr($this->coupon->coupon);\n            }\n            // 将订单加入队列 x分钟后过期\n            $expiredOrderDate = dujiaoka_config_get('order_expire_time', 5);\n            OrderExpired::dispatch($order->order_sn)->delay(Carbon::now()->addMinutes($expiredOrderDate));\n            return $order;\n        } catch (\\Exception $exception) {\n            throw new RuleValidationException($exception->getMessage());\n        }\n\n    }\n\n\n    /**\n     * 订单成功方法\n     *\n     * @param string $orderSN 订单号\n     * @param float $actualPrice 实际支付金额\n     * @param string $tradeNo 第三方订单号\n     * @return Order\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function completedOrder(string $orderSN, float $actualPrice, string $tradeNo = '')\n    {\n        DB::beginTransaction();\n        try {\n            // 得到订单详情\n            $order = $this->orderService->detailOrderSN($orderSN);\n            if (!$order) {\n                throw new \\Exception(__('dujiaoka.prompt.order_does_not_exist'));\n            }\n            // 订单已经处理\n            if ($order->status == Order::STATUS_COMPLETED) {\n                throw new \\Exception(__('dujiaoka.prompt.order_status_completed'));\n            }\n            $bccomp = bccomp($order->actual_price, $actualPrice, 2);\n            // 金额不一致\n            if ($bccomp != 0) {\n                throw new \\Exception(__('dujiaoka.prompt.order_inconsistent_amounts'));\n            }\n            $order->actual_price = $actualPrice;\n            $order->trade_no = $tradeNo;\n            // 区分订单类型\n            // 自动发货\n            if ($order->type == Order::AUTOMATIC_DELIVERY) {\n                $completedOrder = $this->processAuto($order);\n            } else {\n                $completedOrder = $this->processManual($order);\n            }\n            // 销量加上\n            $this->goodsService->salesVolumeIncr($order->goods_id, $order->buy_amount);\n            DB::commit();\n            // 如果开启了server酱\n            if (dujiaoka_config_get('is_open_server_jiang', 0) == BaseModel::STATUS_OPEN) {\n                ServerJiang::dispatch($order);\n            }\n            // 如果开启了TG推送\n            if (dujiaoka_config_get('is_open_telegram_push', 0) == BaseModel::STATUS_OPEN) {\n                TelegramPush::dispatch($order);\n            }\n            // 如果开启了Bark推送\n            if (dujiaoka_config_get('is_open_bark_push', 0) == BaseModel::STATUS_OPEN) {\n                BarkPush::dispatch($order);\n            }\n            // 如果开启了企业微信Bot推送\n            if (dujiaoka_config_get('is_open_qywxbot_push', 0) == BaseModel::STATUS_OPEN) {\n                WorkWeiXinPush::dispatch($order);\n            }\n            // 回调事件\n            ApiHook::dispatch($order);\n            return $completedOrder;\n        } catch (\\Exception $exception) {\n            DB::rollBack();\n            throw new RuleValidationException($exception->getMessage());\n        }\n    }\n\n    /**\n     * 手动处理的订单.\n     *\n     * @param Order $order 订单\n     * @return Order 订单\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function processManual(Order $order)\n    {\n        // 设置订单为待处理\n        $order->status = Order::STATUS_PENDING;\n        // 保存订单\n        $order->save();\n        // 商品库存减去\n        $this->goodsService->inStockDecr($order->goods_id, $order->buy_amount);\n        // 邮件数据\n        $mailData = [\n            'created_at' => $order->create_at,\n            'product_name' => $order->goods->gd_name,\n            'webname' => dujiaoka_config_get('text_logo', '独角数卡'),\n            'weburl' => config('app.url') ?? 'http://dujiaoka.com',\n            'ord_info' => str_replace(PHP_EOL, '<br/>', $order->info),\n            'ord_title' => $order->title,\n            'order_id' => $order->order_sn,\n            'buy_amount' => $order->buy_amount,\n            'ord_price' => $order->actual_price,\n            'created_at' => $order->created_at,\n        ];\n        $tpl = $this->emailtplService->detailByToken('manual_send_manage_mail');\n        $mailBody = replace_mail_tpl($tpl, $mailData);\n        $manageMail = dujiaoka_config_get('manage_email', '');\n        // 邮件发送\n        MailSend::dispatch($manageMail, $mailBody['tpl_name'], $mailBody['tpl_content']);\n        return $order;\n    }\n\n    /**\n     * 处理自动发货.\n     *\n     * @param Order $order 订单\n     * @return Order 订单\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function processAuto(Order $order): Order\n    {\n        // 获得卡密\n        $carmis = $this->carmisService->withGoodsByAmountAndStatusUnsold($order->goods_id, $order->buy_amount);\n        // 实际可使用的库存已经少于购买数量了\n        if (count($carmis) != $order->buy_amount) {\n            $order->info = __('dujiaoka.prompt.order_carmis_insufficient_quantity_available');\n            $order->status = Order::STATUS_ABNORMAL;\n            $order->save();\n            return $order;\n        }\n        $carmisInfo = array_column($carmis, 'carmi');\n        $ids = array_column($carmis, 'id');\n        $order->info = implode(PHP_EOL, $carmisInfo);\n        $order->status = Order::STATUS_COMPLETED;\n        $order->save();\n        // 将卡密设置为已售出\n        $this->carmisService->soldByIDS($ids);\n        // 邮件数据\n        $mailData = [\n            'created_at' => $order->create_at,\n            'product_name' => $order->goods->gd_name,\n            'webname' => dujiaoka_config_get('text_logo', '独角数卡'),\n            'weburl' => config('app.url') ?? 'http://dujiaoka.com',\n            'ord_info' => implode('<br/>', $carmisInfo),\n            'ord_title' => $order->title,\n            'order_id' => $order->order_sn,\n            'buy_amount' => $order->buy_amount,\n            'ord_price' => $order->actual_price,\n        ];\n        $tpl = $this->emailtplService->detailByToken('card_send_user_email');\n        $mailBody = replace_mail_tpl($tpl, $mailData);\n        // 邮件发送\n        MailSend::dispatch($order->email, $mailBody['tpl_name'], $mailBody['tpl_content']);\n        return $order;\n    }\n\n}\n"
  },
  {
    "path": "app/Service/OrderService.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Service;\n\n\nuse App\\Exceptions\\RuleValidationException;\nuse App\\Models\\BaseModel;\nuse App\\Models\\Coupon;\nuse App\\Models\\Goods;\nuse App\\Models\\Carmis;\nuse App\\Models\\Order;\nuse App\\Rules\\SearchPwd;\nuse App\\Rules\\VerifyImg;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Validator;\n\nclass OrderService\n{\n\n    /**\n     * 商品服务层.\n     * @var \\App\\Service\\PayService\n     */\n    private $goodsService;\n\n\n    /**\n     * 优惠码服务层\n     * @var \\App\\Service\\CouponService\n     */\n    private $couponService;\n\n    public function __construct()\n    {\n        $this->goodsService = app('Service\\GoodsService');\n        $this->couponService = app('Service\\CouponService');\n    }\n\n\n    /**\n     * 验证集合\n     *\n     * @param Request $request\n     * @throws RuleValidationException\n     * @throws \\Illuminate\\Validation\\ValidationException\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function validatorCreateOrder(Request $request): void\n    {\n        $validator = Validator::make($request->all(), [\n            'gid' => 'required' ,\n            'email' => ['required', 'email'],\n            'payway' => ['required', 'integer'],\n            'search_pwd' => [new SearchPwd()],\n            'by_amount' => ['required', 'integer', 'min:1'],\n            'img_verify_code' => [new VerifyImg()],\n        ], [\n            'by_amount.required' =>  __('dujiaoka.prompt.buy_amount_format_error'),\n            'by_amount.integer' =>  __('dujiaoka.prompt.buy_amount_format_error'),\n            'by_amount.min' =>  __('dujiaoka.prompt.buy_amount_format_error'),\n            'payway.required' =>  __('dujiaoka.prompt.please_select_mode_of_payment'),\n            'payway.integer' =>  __('dujiaoka.prompt.please_select_mode_of_payment'),\n            'email.required' =>  __('dujiaoka.prompt.email_format_error'),\n            'email.email' =>  __('dujiaoka.prompt.email_format_error'),\n            'gid.required' =>  __('dujiaoka.prompt.goods_does_not_exist'),\n        ]);\n        if ($validator->fails()) {\n            throw new RuleValidationException($validator->errors()->first());\n        }\n        // 极验验证\n        if (\n            dujiaoka_config_get('is_open_geetest') == BaseModel::STATUS_OPEN\n            &&\n            !Validator::make($request->all(),\n                ['geetest_challenge' => 'geetest',],\n                [ 'geetest' => __('dujiaoka.prompt.geetest_validate_fail')])\n\n        ) {\n            throw new RuleValidationException(__('dujiaoka.prompt.geetest_validate_fail'));\n        }\n    }\n\n    /**\n     * 得到商品详情并验证\n     *\n     * @param Request $request 请求\n     * @throws RuleValidationException\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function validatorGoods(Request $request): Goods\n    {\n        // 获得商品详情\n        $goods = $this->goodsService->detail($request->input('gid'));\n        // 商品状态验证\n        $this->goodsService->validatorGoodsStatus($goods);\n        // 如果有限购\n        if ($goods->buy_limit_num > 0 && $request->input('by_amount') > $goods->buy_limit_num) {\n            throw new RuleValidationException(__('dujiaoka.prompt.purchase_limit_exceeded'));\n        }\n        // 库存不足\n        if ($request->input('by_amount') > $goods->in_stock) {\n            throw new RuleValidationException(__('dujiaoka.prompt.inventory_shortage'));\n        }\n        return $goods;\n    }\n\t\n    /**\n     * 判断是否有循环卡密\n     *\n     * @param int $goodsID 商品id\n     * @return array|null\n     *\n     * @author    ZhangYiQiu<me@zhangyiqiu.net>\n     * @copyright ZhangYiQiu<me@zhangyiqiu.net>\n     * @link      http://zhangyiqiu.net/\n     */\n    public function validatorLoopCarmis(Request $request)\n    {\n        $carmis = Carmis::query()\n            ->where('goods_id', $request->input('gid'))\n            ->where('status', Carmis::STATUS_UNSOLD)\n            ->where('is_loop', true)\n            ->count();\n        if($carmis > 0 && $request->input('by_amount') > 1){\n\t\t\tthrow new RuleValidationException(__('dujiaoka.prompt.loop_carmis_limit'));\n\t\t}\n\t\treturn $carmis;\n    }\n\n    /**\n     * 优惠码验证\n     *\n     * @param Request $request\n     * @return Coupon|null\n     * @throws RuleValidationException\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function validatorCoupon(Request $request):? Coupon\n    {\n        // 如果提交了优惠码\n        if ($request->filled('coupon_code')) {\n            // 查询优惠码是否存在\n            $coupon = $this->couponService->withHasGoods($request->input('coupon_code'), $request->input('gid'));\n            // 此商品没有这个优惠码\n            if (empty($coupon)) {\n                throw new RuleValidationException(__('dujiaoka.prompt.coupon_does_not_exist'));\n            }\n            // 剩余次数不足\n            if ($coupon->ret <= 0) {\n                throw new RuleValidationException(__('dujiaoka.prompt.coupon_lack_of_available_opportunities'));\n            }\n            return $coupon;\n        }\n        return null;\n    }\n\n    /**\n     * 代充框验证.\n     *\n     * @param Goods $goods\n     * @param Request $request\n     * @return string\n     * @throws RuleValidationException\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function validatorChargeInput(Goods $goods, Request $request): string\n    {\n        $otherIpt = '';\n        // 代充框验证\n        if ($goods->type == Goods::MANUAL_PROCESSING && !empty($goods->other_ipu_cnf)) {\n            // 如果有其他输入框 判断其他输入框内容  然后载入信息\n            $formatIpt = format_charge_input($goods->other_ipu_cnf);\n            foreach ($formatIpt as $item) {\n                if ($item['rule'] && !$request->filled($item['field'])) {\n                    $errMessage = $item['desc'] . __('dujiaoka.prompt.can_not_be_empty');\n                    throw new RuleValidationException($errMessage);\n                }\n                $otherIpt .= $item['desc'].':'.$request->input($item['field']) . PHP_EOL;\n            }\n        }\n        return $otherIpt;\n    }\n\n    /**\n     * 通过订单号查询订单\n     * @param string $orderSN\n     * @return Order\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function detailOrderSN(string $orderSN):? Order\n    {\n        $order = Order::query()->with(['coupon', 'pay', 'goods'])->where('order_sn', $orderSN)->first();\n        return $order;\n    }\n\n    /**\n     * 根据订单号过期订单.\n     *\n     * @param string $orderSN\n     * @return bool\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function expiredOrderSN(string $orderSN): bool\n    {\n        return Order::query()->where('order_sn', $orderSN)->update(['status' => Order::STATUS_EXPIRED]);\n    }\n\n    /**\n     * 设置订单优惠码已回退\n     *\n     * @param string $orderSN\n     * @return bool\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function couponIsBack(string $orderSN): bool\n    {\n        return Order::query()->where('order_sn', $orderSN)->update(['coupon_ret_back' => Order::COUPON_BACK_OK]);\n    }\n\n    /**\n     * 通过邮箱和查询密码查询\n     *\n     * @param string $email 邮箱\n     * @param string $searchPwd 查询面面\n     * @return array|\\Illuminate\\Database\\Concerns\\BuildsQueries[]|\\Illuminate\\Database\\Eloquent\\Builder[]|\\Illuminate\\Database\\Eloquent\\Collection|\\Illuminate\\Database\\Query\\Builder[]|\\Illuminate\\Support\\Collection\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function withEmailAndPassword(string $email, string $searchPwd = '')\n    {\n        return Order::query()\n            ->where('email', $email)\n            ->when(!empty($searchPwd), function ($query) use ($searchPwd) {\n                $query->where('search_pwd', $searchPwd);\n            })\n            ->orderBy('created_at', 'DESC')\n            ->take(5)\n            ->get();\n    }\n\n    /**\n     * 通过订单号集合查询\n     *\n     * @param array $orderSNS 订单号集合\n     * @return \\Illuminate\\Database\\Eloquent\\Builder[]|\\Illuminate\\Database\\Eloquent\\Collection|\\Illuminate\\Database\\Query\\Builder[]|\\Illuminate\\Support\\Collection\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function byOrderSNS(array $orderSNS)\n    {\n        return Order::query()\n            ->whereIn('order_sn', $orderSNS)\n            ->orderBy('created_at', 'DESC')\n            ->take(5)\n            ->get();\n    }\n\n}\n"
  },
  {
    "path": "app/Service/PayService.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nnamespace App\\Service;\n\n\nuse App\\Models\\Pay;\n\nclass PayService\n{\n\n    /**\n     * 加载支付网关\n     *\n     * @param string|int $payClient 支付场景客户端\n     * @return array|null\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function pays(string $payClient = Pay::PAY_CLIENT_PC): ?array\n    {\n        $payGateway = Pay::query()\n            ->whereIn('pay_client', [$payClient, Pay::PAY_CLIENT_ALL])\n            ->where('is_open', Pay::STATUS_OPEN)\n            ->get();\n        return $payGateway ? $payGateway->toArray() : null;\n    }\n\n    /**\n     * 通过支付标识获得支付配置\n     *\n     * @param string $check 支付标识\n     * @return \\Illuminate\\Database\\Eloquent\\Builder|\\Illuminate\\Database\\Eloquent\\Model|object|null\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function detailByCheck(string $check)\n    {\n        $gateway = Pay::query()\n            ->where('pay_check', $check)\n            ->where('is_open', Pay::STATUS_OPEN)\n            ->first();\n        return $gateway;\n    }\n\n    /**\n     * 通过id查询支付网关\n     *\n     * @param int $id 支付网关id\n     * @return \\Illuminate\\Database\\Eloquent\\Builder|\\Illuminate\\Database\\Eloquent\\Model|object|null\n     *\n     * @author    assimon<ashang@utf8.hk>\n     * @copyright assimon<ashang@utf8.hk>\n     * @link      http://utf8.hk/\n     */\n    public function detail(int $id)\n    {\n        $gateway = Pay::query()\n            ->where('id', $id)\n            ->where('is_open', Pay::STATUS_OPEN)\n            ->first();\n        return $gateway;\n    }\n\n}\n"
  },
  {
    "path": "app/User.php",
    "content": "<?php\n\nnamespace App;\n\nuse Illuminate\\Contracts\\Auth\\MustVerifyEmail;\nuse Illuminate\\Foundation\\Auth\\User as Authenticatable;\nuse Illuminate\\Notifications\\Notifiable;\n\nclass User extends Authenticatable\n{\n    use Notifiable;\n\n    /**\n     * The attributes that are mass assignable.\n     *\n     * @var array\n     */\n    protected $fillable = [\n        'name', 'email', 'password',\n    ];\n\n    /**\n     * The attributes that should be hidden for arrays.\n     *\n     * @var array\n     */\n    protected $hidden = [\n        'password', 'remember_token',\n    ];\n\n    /**\n     * The attributes that should be cast to native types.\n     *\n     * @var array\n     */\n    protected $casts = [\n        'email_verified_at' => 'datetime',\n    ];\n}\n"
  },
  {
    "path": "artisan",
    "content": "#!/usr/bin/env php\n<?php\n\ndefine('LARAVEL_START', microtime(true));\n\n/*\n|--------------------------------------------------------------------------\n| Register The Auto Loader\n|--------------------------------------------------------------------------\n|\n| Composer provides a convenient, automatically generated class loader\n| for our application. We just need to utilize it! We'll require it\n| into the script here so that we do not have to worry about the\n| loading of any our classes \"manually\". Feels great to relax.\n|\n*/\n\nrequire __DIR__.'/vendor/autoload.php';\n\n$app = require_once __DIR__.'/bootstrap/app.php';\n\n/*\n|--------------------------------------------------------------------------\n| Run The Artisan Application\n|--------------------------------------------------------------------------\n|\n| When we run the console application, the current CLI command will be\n| executed in this console and the response sent back to a terminal\n| or another output device for the developers. Here goes nothing!\n|\n*/\n\n$kernel = $app->make(Illuminate\\Contracts\\Console\\Kernel::class);\n\n$status = $kernel->handle(\n    $input = new Symfony\\Component\\Console\\Input\\ArgvInput,\n    new Symfony\\Component\\Console\\Output\\ConsoleOutput\n);\n\n/*\n|--------------------------------------------------------------------------\n| Shutdown The Application\n|--------------------------------------------------------------------------\n|\n| Once Artisan has finished running, we will fire off the shutdown events\n| so that any final work may be done by the application before we shut\n| down the process. This is the last thing to happen to the request.\n|\n*/\n\n$kernel->terminate($input, $status);\n\nexit($status);\n"
  },
  {
    "path": "bootstrap/app.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Create The Application\n|--------------------------------------------------------------------------\n|\n| The first thing we will do is create a new Laravel application instance\n| which serves as the \"glue\" for all the components of Laravel, and is\n| the IoC container for the system binding all of the various parts.\n|\n*/\n\n$app = new Illuminate\\Foundation\\Application(\n    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)\n);\n\n/*\n|--------------------------------------------------------------------------\n| Bind Important Interfaces\n|--------------------------------------------------------------------------\n|\n| Next, we need to bind some important interfaces into the container so\n| we will be able to resolve them when needed. The kernels serve the\n| incoming requests to this application from both the web and CLI.\n|\n*/\n\n$app->singleton(\n    Illuminate\\Contracts\\Http\\Kernel::class,\n    App\\Http\\Kernel::class\n);\n\n$app->singleton(\n    Illuminate\\Contracts\\Console\\Kernel::class,\n    App\\Console\\Kernel::class\n);\n\n$app->singleton(\n    Illuminate\\Contracts\\Debug\\ExceptionHandler::class,\n    App\\Exceptions\\Handler::class\n);\n\n/*\n|--------------------------------------------------------------------------\n| Return The Application\n|--------------------------------------------------------------------------\n|\n| This script returns the application instance. The instance is given to\n| the calling script so we can separate the building of the instances\n| from the actual running of the application and sending responses.\n|\n*/\n\nreturn $app;\n"
  },
  {
    "path": "bootstrap/cache/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "composer.json",
    "content": "{\n    \"name\": \"laravel/laravel\",\n    \"type\": \"project\",\n    \"description\": \"The Laravel Framework.\",\n    \"keywords\": [\n        \"framework\",\n        \"laravel\"\n    ],\n    \"license\": \"MIT\",\n    \"require\": {\n        \"php\": \"^7.2.5|^8.0\",\n        \"amrshawky/laravel-currency\": \"^4.0\",\n        \"dcat/easy-excel\": \"^1.0\",\n        \"dcat/laravel-admin\": \"2.*\",\n        \"fideloper/proxy\": \"^4.4\",\n        \"germey/geetest\": \"^3.1\",\n        \"jenssegers/agent\": \"^2.6\",\n        \"laravel/framework\": \"^6.20.26\",\n        \"laravel/tinker\": \"^2.5\",\n        \"mews/captcha\": \"^3.2\",\n        \"paypal/rest-api-sdk-php\": \"^1.14\",\n        \"simplesoftwareio/simple-qrcode\": \"2.0.0\",\n        \"stripe/stripe-php\": \"^7.84\",\n        \"xhat/payjs-laravel\": \"^1.6\",\n        \"yansongda/pay\": \"^2.10\"\n    },\n    \"require-dev\": {\n        \"facade/ignition\": \"^1.16.15\",\n        \"fakerphp/faker\": \"^1.9.1\",\n        \"mockery/mockery\": \"^1.0\",\n        \"nunomaduro/collision\": \"^3.0\",\n        \"phpunit/phpunit\": \"^8.5.8|^9.3.3\"\n    },\n    \"config\": {\n        \"optimize-autoloader\": true,\n        \"preferred-install\": \"dist\",\n        \"sort-packages\": true,\n        \"platform-check\": false\n    },\n    \"extra\": {\n        \"laravel\": {\n            \"dont-discover\": []\n        }\n    },\n    \"autoload\": {\n        \"psr-4\": {\n            \"App\\\\\": \"app/\"\n        },\n        \"classmap\": [\n            \"database/seeds\",\n            \"database/factories\"\n        ],\n        \"files\":[\n            \"app/Helpers/functions.php\"\n        ]\n    },\n    \"autoload-dev\": {\n        \"psr-4\": {\n            \"Tests\\\\\": \"tests/\"\n        }\n    },\n    \"minimum-stability\": \"dev\",\n    \"prefer-stable\": true,\n    \"scripts\": {\n        \"post-autoload-dump\": [\n            \"Illuminate\\\\Foundation\\\\ComposerScripts::postAutoloadDump\",\n            \"@php artisan package:discover --ansi\"\n        ],\n        \"post-root-package-install\": [\n            \"@php -r \\\"file_exists('.env') || copy('.env.example', '.env');\\\"\"\n        ],\n        \"post-create-project-cmd\": [\n            \"@php artisan key:generate --ansi\"\n        ]\n    }\n}\n"
  },
  {
    "path": "config/admin.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | dcat-admin name\n    |--------------------------------------------------------------------------\n    |\n    | This value is the name of dcat-admin, This setting is displayed on the\n    | login page.\n    |\n    */\n    'name' => '独角数卡',\n\n    /*\n    |--------------------------------------------------------------------------\n    | dcat-admin logo\n    |--------------------------------------------------------------------------\n    |\n    | The logo of all admin pages. You can also set it as an image by using a\n    | `img` tag, eg '<img src=\"http://logo-url\" alt=\"Admin logo\">'.\n    |\n    */\n    'logo' => '<img src=\"/vendor/dujiaoka-admin/images/logo.jpg\" width=\"35\"> &nbsp;独角 数卡',\n\n    /*\n    |--------------------------------------------------------------------------\n    | dcat-admin mini logo\n    |--------------------------------------------------------------------------\n    |\n    | The logo of all admin pages when the sidebar menu is collapsed. You can\n    | also set it as an image by using a `img` tag, eg\n    | '<img src=\"http://logo-url\" alt=\"Admin logo\">'.\n    |\n    */\n    'logo-mini' => '<img src=\"/vendor/dujiaoka-admin/images/logo.jpg\">',\n\n    /*\n     |--------------------------------------------------------------------------\n     | User default avatar\n     |--------------------------------------------------------------------------\n     |\n     | Set a default avatar for newly created users.\n     |\n     */\n    'default_avatar' => '@admin/images/default-avatar.jpg',\n\n    /*\n    |--------------------------------------------------------------------------\n    | dcat-admin route settings\n    |--------------------------------------------------------------------------\n    |\n    | The routing configuration of the admin page, including the path prefix,\n    | the controller namespace, and the default middleware. If you want to\n    | access through the root path, just set the prefix to empty string.\n    |\n    */\n    'route' => [\n        'domain' => env('ADMIN_ROUTE_DOMAIN'),\n\n        'prefix' => env('ADMIN_ROUTE_PREFIX', 'admin'),\n\n        'namespace' => 'App\\\\Admin\\\\Controllers',\n\n        'middleware' => ['web', 'admin'],\n\n        'enable_session_middleware' => false,\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | dcat-admin install directory\n    |--------------------------------------------------------------------------\n    |\n    | The installation directory of the controller and routing configuration\n    | files of the administration page. The default is `app/Admin`, which must\n    | be set before running `artisan admin::install` to take effect.\n    |\n    */\n    'directory' => app_path('Admin'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | dcat-admin html title\n    |--------------------------------------------------------------------------\n    |\n    | Html title for all pages.\n    |\n    */\n    'title' => '独角数卡 - 后台控制中心',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Assets hostname\n    |--------------------------------------------------------------------------\n    |\n   */\n    'assets_server' => env('ADMIN_ASSETS_SERVER'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Access via `https`\n    |--------------------------------------------------------------------------\n    |\n    | If your page is going to be accessed via https, set it to `true`.\n    |\n    */\n    'https' => env('ADMIN_HTTPS', false),\n\n    /*\n    |--------------------------------------------------------------------------\n    | dcat-admin auth setting\n    |--------------------------------------------------------------------------\n    |\n    | Authentication settings for all admin pages. Include an authentication\n    | guard and a user provider setting of authentication driver.\n    |\n    | You can specify a controller for `login` `logout` and other auth routes.\n    |\n    */\n    'auth' => [\n        'enable' => true,\n\n        'controller' => App\\Admin\\Controllers\\AuthController::class,\n\n        'guard' => 'admin',\n\n        'guards' => [\n            'admin' => [\n                'driver'   => 'session',\n                'provider' => 'admin',\n            ],\n        ],\n\n        'providers' => [\n            'admin' => [\n                'driver' => 'eloquent',\n                'model'  => Dcat\\Admin\\Models\\Administrator::class,\n            ],\n        ],\n\n        // Add \"remember me\" to login form\n        'remember' => true,\n\n        // All method to path like: auth/users/*/edit\n        // or specific method to path like: get:auth/users.\n        'except' => [\n            'auth/login',\n            'auth/logout',\n        ],\n\n        'enable_session_middleware' => false,\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | The global Grid setting\n    |--------------------------------------------------------------------------\n    */\n    'grid' => [\n\n        // The global Grid action display class.\n        'grid_action_class' => Dcat\\Admin\\Grid\\Displayers\\DropdownActions::class,\n\n        // The global Grid batch action display class.\n        'batch_action_class' => Dcat\\Admin\\Grid\\Tools\\BatchActions::class,\n\n        // The global Grid pagination display class.\n        'paginator_class' => Dcat\\Admin\\Grid\\Tools\\Paginator::class,\n\n        'actions' => [\n            'view' => Dcat\\Admin\\Grid\\Actions\\Show::class,\n            'edit' => Dcat\\Admin\\Grid\\Actions\\Edit::class,\n            'quick_edit' => Dcat\\Admin\\Grid\\Actions\\QuickEdit::class,\n            'delete' => Dcat\\Admin\\Grid\\Actions\\Delete::class,\n            'batch_delete' => Dcat\\Admin\\Grid\\Tools\\BatchDelete::class,\n        ],\n\n        // The global Grid column selector setting.\n        'column_selector' => [\n            'store' => Dcat\\Admin\\Grid\\ColumnSelector\\SessionStore::class,\n            'store_params' => [\n                'driver' => 'file',\n            ],\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | dcat-admin helpers setting.\n    |--------------------------------------------------------------------------\n    */\n    'helpers' => [\n        'enable' => false,\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | dcat-admin permission setting\n    |--------------------------------------------------------------------------\n    |\n    | Permission settings for all admin pages.\n    |\n    */\n    'permission' => [\n        // Whether enable permission.\n        'enable' => true,\n\n        // All method to path like: auth/users/*/edit\n        // or specific method to path like: get:auth/users.\n        'except' => [\n            '/',\n            'auth/login',\n            'auth/logout',\n            'auth/setting',\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | dcat-admin menu setting\n    |--------------------------------------------------------------------------\n    |\n    */\n    'menu' => [\n        'cache' => [\n            // enable cache or not\n            'enable' => false,\n            'store'  => 'file',\n        ],\n\n        // Whether enable menu bind to a permission.\n        'bind_permission' => true,\n\n        // Whether enable role bind to menu.\n        'role_bind_menu' => true,\n\n        // Whether enable permission bind to menu.\n        'permission_bind_menu' => true,\n\n        'default_icon' => 'feather icon-circle',\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | dcat-admin upload setting\n    |--------------------------------------------------------------------------\n    |\n    | File system configuration for form upload files and images, including\n    | disk and upload path.\n    |\n    */\n    'upload' => [\n\n        // Disk in `config/filesystem.php`.\n        'disk' => 'admin',\n\n        // Image and file upload path under the disk above.\n        'directory' => [\n            'image' => 'images',\n            'file'  => 'files',\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | dcat-admin database settings\n    |--------------------------------------------------------------------------\n    |\n    | Here are database settings for dcat-admin builtin model & tables.\n    |\n    */\n    'database' => [\n\n        // Database connection for following tables.\n        'connection' => '',\n\n        // User tables and model.\n        'users_table' => 'admin_users',\n        'users_model' => Dcat\\Admin\\Models\\Administrator::class,\n\n        // Role table and model.\n        'roles_table' => 'admin_roles',\n        'roles_model' => Dcat\\Admin\\Models\\Role::class,\n\n        // Permission table and model.\n        'permissions_table' => 'admin_permissions',\n        'permissions_model' => Dcat\\Admin\\Models\\Permission::class,\n\n        // Menu table and model.\n        'menu_table' => 'admin_menu',\n        'menu_model' => Dcat\\Admin\\Models\\Menu::class,\n\n        // Pivot table for table above.\n        'role_users_table'       => 'admin_role_users',\n        'role_permissions_table' => 'admin_role_permissions',\n        'role_menu_table'        => 'admin_role_menu',\n        'permission_menu_table'  => 'admin_permission_menu',\n        'settings_table'         => 'admin_settings',\n        'extensions_table'       => 'admin_extensions',\n        'extension_histories_table' => 'admin_extension_histories',\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application layout\n    |--------------------------------------------------------------------------\n    |\n    | This value is the layout of admin pages.\n    */\n    'layout' => [\n        // default, blue, blue-light, green\n        'color' => 'default',\n\n        // sidebar-separate\n        'body_class' => [],\n\n        'horizontal_menu' => false,\n\n        'sidebar_collapsed' => false,\n\n        // light, primary, dark\n        'sidebar_style' => 'light',\n\n        'dark_mode_switch' => true,\n\n        // bg-primary, bg-info, bg-warning, bg-success, bg-danger, bg-dark\n        'navbar_color' => '',\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | The exception handler class\n    |--------------------------------------------------------------------------\n    |\n    */\n    'exception_handler' => Dcat\\Admin\\Exception\\Handler::class,\n\n    /*\n    |--------------------------------------------------------------------------\n    | Enable default breadcrumb\n    |--------------------------------------------------------------------------\n    |\n    | Whether enable default breadcrumb for every page content.\n    */\n    'enable_default_breadcrumb' => true,\n\n    /*\n    |--------------------------------------------------------------------------\n    | Extension\n    |--------------------------------------------------------------------------\n    */\n    'extension' => [\n        // When you use command `php artisan admin:ext-make` to generate extensions,\n        // the extension files will be generated in this directory.\n        'dir' => base_path('dcat-admin-extensions'),\n    ],\n];\n"
  },
  {
    "path": "config/app.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Name\n    |--------------------------------------------------------------------------\n    |\n    | This value is the name of your application. This value is used when the\n    | framework needs to place the application's name in a notification or\n    | any other location as required by the application or its packages.\n    |\n    */\n\n    'name' => env('APP_NAME', 'Laravel'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Environment\n    |--------------------------------------------------------------------------\n    |\n    | This value determines the \"environment\" your application is currently\n    | running in. This may determine how you prefer to configure various\n    | services the application utilizes. Set this in your \".env\" file.\n    |\n    */\n\n    'env' => env('APP_ENV', 'production'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Debug Mode\n    |--------------------------------------------------------------------------\n    |\n    | When your application is in debug mode, detailed error messages with\n    | stack traces will be shown on every error that occurs within your\n    | application. If disabled, a simple generic error page is shown.\n    |\n    */\n\n    'debug' => (bool) env('APP_DEBUG', false),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application URL\n    |--------------------------------------------------------------------------\n    |\n    | This URL is used by the console to properly generate URLs when using\n    | the Artisan command line tool. You should set this to the root of\n    | your application so that it is used when running Artisan tasks.\n    |\n    */\n\n    'url' => env('APP_URL', 'http://localhost'),\n\n    'asset_url' => env('ASSET_URL', null),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Timezone\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the default timezone for your application, which\n    | will be used by the PHP date and date-time functions. We have gone\n    | ahead and set this to a sensible default for you out of the box.\n    |\n    */\n\n    'timezone' => 'PRC',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Locale Configuration\n    |--------------------------------------------------------------------------\n    |\n    | The application locale determines the default locale that will be used\n    | by the translation service provider. You are free to set this value\n    | to any of the locales which will be supported by the application.\n    |\n    */\n\n    'locale' => env('DUJIAO_ADMIN_LANGUAGE', 'zh_CN'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Application Fallback Locale\n    |--------------------------------------------------------------------------\n    |\n    | The fallback locale determines the locale to use when the current one\n    | is not available. You may change the value to correspond to any of\n    | the language folders that are provided through your application.\n    |\n    */\n\n    'fallback_locale' => 'en',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Faker Locale\n    |--------------------------------------------------------------------------\n    |\n    | This locale will be used by the Faker PHP library when generating fake\n    | data for your database seeds. For example, this will be used to get\n    | localized telephone numbers, street address information and more.\n    |\n    */\n\n    'faker_locale' => 'en_US',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Encryption Key\n    |--------------------------------------------------------------------------\n    |\n    | This key is used by the Illuminate encrypter service and should be set\n    | to a random, 32 character string, otherwise these encrypted strings\n    | will not be safe. Please do this before deploying an application!\n    |\n    */\n\n    'key' => env('APP_KEY'),\n\n    'cipher' => 'AES-256-CBC',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Autoloaded Service Providers\n    |--------------------------------------------------------------------------\n    |\n    | The service providers listed here will be automatically loaded on the\n    | request to your application. Feel free to add your own services to\n    | this array to grant expanded functionality to your applications.\n    |\n    */\n\n    'providers' => [\n\n        /*\n         * Laravel Framework Service Providers...\n         */\n        Illuminate\\Auth\\AuthServiceProvider::class,\n        Illuminate\\Broadcasting\\BroadcastServiceProvider::class,\n        Illuminate\\Bus\\BusServiceProvider::class,\n        Illuminate\\Cache\\CacheServiceProvider::class,\n        Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider::class,\n        Illuminate\\Cookie\\CookieServiceProvider::class,\n        Illuminate\\Database\\DatabaseServiceProvider::class,\n        Illuminate\\Encryption\\EncryptionServiceProvider::class,\n        Illuminate\\Filesystem\\FilesystemServiceProvider::class,\n        Illuminate\\Foundation\\Providers\\FoundationServiceProvider::class,\n        Illuminate\\Hashing\\HashServiceProvider::class,\n        Illuminate\\Mail\\MailServiceProvider::class,\n        Illuminate\\Notifications\\NotificationServiceProvider::class,\n        Illuminate\\Pagination\\PaginationServiceProvider::class,\n        Illuminate\\Pipeline\\PipelineServiceProvider::class,\n        Illuminate\\Queue\\QueueServiceProvider::class,\n        Illuminate\\Redis\\RedisServiceProvider::class,\n        Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider::class,\n        Illuminate\\Session\\SessionServiceProvider::class,\n        Illuminate\\Translation\\TranslationServiceProvider::class,\n        Illuminate\\Validation\\ValidationServiceProvider::class,\n        Illuminate\\View\\ViewServiceProvider::class,\n\n        /*\n         * Package Service Providers...\n         */\n\n        /*\n         * Application Service Providers...\n         */\n        App\\Providers\\AppServiceProvider::class,\n        App\\Providers\\AuthServiceProvider::class,\n        // App\\Providers\\BroadcastServiceProvider::class,\n        App\\Providers\\EventServiceProvider::class,\n        App\\Providers\\RouteServiceProvider::class,\n\n        Jenssegers\\Agent\\AgentServiceProvider::class,\n        Germey\\Geetest\\GeetestServiceProvider::class\n\n\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Class Aliases\n    |--------------------------------------------------------------------------\n    |\n    | This array of class aliases will be registered when this application\n    | is started. However, feel free to register as many as you wish as\n    | the aliases are \"lazy\" loaded so they don't hinder performance.\n    |\n    */\n\n    'aliases' => [\n\n        'App' => Illuminate\\Support\\Facades\\App::class,\n        'Arr' => Illuminate\\Support\\Arr::class,\n        'Artisan' => Illuminate\\Support\\Facades\\Artisan::class,\n        'Auth' => Illuminate\\Support\\Facades\\Auth::class,\n        'Blade' => Illuminate\\Support\\Facades\\Blade::class,\n        'Broadcast' => Illuminate\\Support\\Facades\\Broadcast::class,\n        'Bus' => Illuminate\\Support\\Facades\\Bus::class,\n        'Cache' => Illuminate\\Support\\Facades\\Cache::class,\n        'Config' => Illuminate\\Support\\Facades\\Config::class,\n        'Cookie' => Illuminate\\Support\\Facades\\Cookie::class,\n        'Crypt' => Illuminate\\Support\\Facades\\Crypt::class,\n        'DB' => Illuminate\\Support\\Facades\\DB::class,\n        'Eloquent' => Illuminate\\Database\\Eloquent\\Model::class,\n        'Event' => Illuminate\\Support\\Facades\\Event::class,\n        'File' => Illuminate\\Support\\Facades\\File::class,\n        'Gate' => Illuminate\\Support\\Facades\\Gate::class,\n        'Hash' => Illuminate\\Support\\Facades\\Hash::class,\n        'Lang' => Illuminate\\Support\\Facades\\Lang::class,\n        'Log' => Illuminate\\Support\\Facades\\Log::class,\n        'Mail' => Illuminate\\Support\\Facades\\Mail::class,\n        'Notification' => Illuminate\\Support\\Facades\\Notification::class,\n        'Password' => Illuminate\\Support\\Facades\\Password::class,\n        'Queue' => Illuminate\\Support\\Facades\\Queue::class,\n        'Redirect' => Illuminate\\Support\\Facades\\Redirect::class,\n        'Redis' => Illuminate\\Support\\Facades\\Redis::class,\n        'Request' => Illuminate\\Support\\Facades\\Request::class,\n        'Response' => Illuminate\\Support\\Facades\\Response::class,\n        'Route' => Illuminate\\Support\\Facades\\Route::class,\n        'Schema' => Illuminate\\Support\\Facades\\Schema::class,\n        'Session' => Illuminate\\Support\\Facades\\Session::class,\n        'Storage' => Illuminate\\Support\\Facades\\Storage::class,\n        'Str' => Illuminate\\Support\\Str::class,\n        'URL' => Illuminate\\Support\\Facades\\URL::class,\n        'Validator' => Illuminate\\Support\\Facades\\Validator::class,\n        'View' => Illuminate\\Support\\Facades\\View::class,\n\n        'Agent' => Jenssegers\\Agent\\Facades\\Agent::class,\n        'Geetest' => Germey\\Geetest\\Geetest::class,\n    ],\n\n];\n"
  },
  {
    "path": "config/auth.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Authentication Defaults\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default authentication \"guard\" and password\n    | reset options for your application. You may change these defaults\n    | as required, but they're a perfect start for most applications.\n    |\n    */\n\n    'defaults' => [\n        'guard' => 'web',\n        'passwords' => 'users',\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Authentication Guards\n    |--------------------------------------------------------------------------\n    |\n    | Next, you may define every authentication guard for your application.\n    | Of course, a great default configuration has been defined for you\n    | here which uses session storage and the Eloquent user provider.\n    |\n    | All authentication drivers have a user provider. This defines how the\n    | users are actually retrieved out of your database or other storage\n    | mechanisms used by this application to persist your user's data.\n    |\n    | Supported: \"session\", \"token\"\n    |\n    */\n\n    'guards' => [\n        'web' => [\n            'driver' => 'session',\n            'provider' => 'users',\n        ],\n\n        'api' => [\n            'driver' => 'token',\n            'provider' => 'users',\n            'hash' => false,\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | User Providers\n    |--------------------------------------------------------------------------\n    |\n    | All authentication drivers have a user provider. This defines how the\n    | users are actually retrieved out of your database or other storage\n    | mechanisms used by this application to persist your user's data.\n    |\n    | If you have multiple user tables or models you may configure multiple\n    | sources which represent each model / table. These sources may then\n    | be assigned to any extra authentication guards you have defined.\n    |\n    | Supported: \"database\", \"eloquent\"\n    |\n    */\n\n    'providers' => [\n        'users' => [\n            'driver' => 'eloquent',\n            'model' => App\\User::class,\n        ],\n\n        // 'users' => [\n        //     'driver' => 'database',\n        //     'table' => 'users',\n        // ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Resetting Passwords\n    |--------------------------------------------------------------------------\n    |\n    | You may specify multiple password reset configurations if you have more\n    | than one user table or model in the application and you want to have\n    | separate password reset settings based on the specific user types.\n    |\n    | The expire time is the number of minutes that the reset token should be\n    | considered valid. This security feature keeps tokens short-lived so\n    | they have less time to be guessed. You may change this as needed.\n    |\n    */\n\n    'passwords' => [\n        'users' => [\n            'provider' => 'users',\n            'table' => 'password_resets',\n            'expire' => 60,\n            'throttle' => 60,\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Password Confirmation Timeout\n    |--------------------------------------------------------------------------\n    |\n    | Here you may define the amount of seconds before a password confirmation\n    | times out and the user is prompted to re-enter their password via the\n    | confirmation screen. By default, the timeout lasts for three hours.\n    |\n    */\n\n    'password_timeout' => 10800,\n\n];\n"
  },
  {
    "path": "config/broadcasting.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Broadcaster\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default broadcaster that will be used by the\n    | framework when an event needs to be broadcast. You may set this to\n    | any of the connections defined in the \"connections\" array below.\n    |\n    | Supported: \"pusher\", \"redis\", \"log\", \"null\"\n    |\n    */\n\n    'default' => env('BROADCAST_DRIVER', 'null'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Broadcast Connections\n    |--------------------------------------------------------------------------\n    |\n    | Here you may define all of the broadcast connections that will be used\n    | to broadcast events to other systems or over websockets. Samples of\n    | each available type of connection are provided inside this array.\n    |\n    */\n\n    'connections' => [\n\n        'pusher' => [\n            'driver' => 'pusher',\n            'key' => env('PUSHER_APP_KEY'),\n            'secret' => env('PUSHER_APP_SECRET'),\n            'app_id' => env('PUSHER_APP_ID'),\n            'options' => [\n                'cluster' => env('PUSHER_APP_CLUSTER'),\n                'useTLS' => true,\n            ],\n        ],\n\n        'redis' => [\n            'driver' => 'redis',\n            'connection' => 'default',\n        ],\n\n        'log' => [\n            'driver' => 'log',\n        ],\n\n        'null' => [\n            'driver' => 'null',\n        ],\n\n    ],\n\n];\n"
  },
  {
    "path": "config/cache.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Cache Store\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default cache connection that gets used while\n    | using this caching library. This connection is used when another is\n    | not explicitly specified when executing a given caching function.\n    |\n    | Supported: \"apc\", \"array\", \"database\", \"file\",\n    |            \"memcached\", \"redis\", \"dynamodb\"\n    |\n    */\n\n    'default' => env('CACHE_DRIVER', 'file'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Cache Stores\n    |--------------------------------------------------------------------------\n    |\n    | Here you may define all of the cache \"stores\" for your application as\n    | well as their drivers. You may even define multiple stores for the\n    | same cache driver to group types of items stored in your caches.\n    |\n    */\n\n    'stores' => [\n\n        'apc' => [\n            'driver' => 'apc',\n        ],\n\n        'array' => [\n            'driver' => 'array',\n        ],\n\n        'database' => [\n            'driver' => 'database',\n            'table' => 'cache',\n            'connection' => null,\n        ],\n\n        'file' => [\n            'driver' => 'file',\n            'path' => storage_path('framework/cache/data'),\n        ],\n\n        'memcached' => [\n            'driver' => 'memcached',\n            'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),\n            'sasl' => [\n                env('MEMCACHED_USERNAME'),\n                env('MEMCACHED_PASSWORD'),\n            ],\n            'options' => [\n                // Memcached::OPT_CONNECT_TIMEOUT => 2000,\n            ],\n            'servers' => [\n                [\n                    'host' => env('MEMCACHED_HOST', '127.0.0.1'),\n                    'port' => env('MEMCACHED_PORT', 11211),\n                    'weight' => 100,\n                ],\n            ],\n        ],\n\n        'redis' => [\n            'driver' => 'redis',\n            'connection' => 'cache',\n        ],\n\n        'dynamodb' => [\n            'driver' => 'dynamodb',\n            'key' => env('AWS_ACCESS_KEY_ID'),\n            'secret' => env('AWS_SECRET_ACCESS_KEY'),\n            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),\n            'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),\n            'endpoint' => env('DYNAMODB_ENDPOINT'),\n        ],\n\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Cache Key Prefix\n    |--------------------------------------------------------------------------\n    |\n    | When utilizing a RAM based store such as APC or Memcached, there might\n    | be other applications utilizing the same cache. So, we'll specify a\n    | value to get prefixed to all our keys so we can avoid collisions.\n    |\n    */\n\n    'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'),\n\n];\n"
  },
  {
    "path": "config/database.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Database Connection Name\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify which of the database connections below you wish\n    | to use as your default connection for all database work. Of course\n    | you may use many connections at once using the Database library.\n    |\n    */\n\n    'default' => env('DB_CONNECTION', 'mysql'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Database Connections\n    |--------------------------------------------------------------------------\n    |\n    | Here are each of the database connections setup for your application.\n    | Of course, examples of configuring each database platform that is\n    | supported by Laravel is shown below to make development simple.\n    |\n    |\n    | All database work in Laravel is done through the PHP PDO facilities\n    | so make sure you have the driver for your particular database of\n    | choice installed on your machine before you begin development.\n    |\n    */\n\n    'connections' => [\n\n        'sqlite' => [\n            'driver' => 'sqlite',\n            'url' => env('DATABASE_URL'),\n            'database' => env('DB_DATABASE', database_path('database.sqlite')),\n            'prefix' => '',\n            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),\n        ],\n\n        'mysql' => [\n            'driver' => 'mysql',\n            'url' => env('DATABASE_URL'),\n            'host' => env('DB_HOST', '127.0.0.1'),\n            'port' => env('DB_PORT', '3306'),\n            'database' => env('DB_DATABASE', 'forge'),\n            'username' => env('DB_USERNAME', 'forge'),\n            'password' => env('DB_PASSWORD', ''),\n            'unix_socket' => env('DB_SOCKET', ''),\n            'charset' => 'utf8mb4',\n            'collation' => 'utf8mb4_unicode_ci',\n            'prefix' => '',\n            'prefix_indexes' => true,\n            'strict' => true,\n            'engine' => null,\n            'options' => extension_loaded('pdo_mysql') ? array_filter([\n                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),\n            ]) : [],\n        ],\n\n        'pgsql' => [\n            'driver' => 'pgsql',\n            'url' => env('DATABASE_URL'),\n            'host' => env('DB_HOST', '127.0.0.1'),\n            'port' => env('DB_PORT', '5432'),\n            'database' => env('DB_DATABASE', 'forge'),\n            'username' => env('DB_USERNAME', 'forge'),\n            'password' => env('DB_PASSWORD', ''),\n            'charset' => 'utf8',\n            'prefix' => '',\n            'prefix_indexes' => true,\n            'schema' => 'public',\n            'sslmode' => 'prefer',\n        ],\n\n        'sqlsrv' => [\n            'driver' => 'sqlsrv',\n            'url' => env('DATABASE_URL'),\n            'host' => env('DB_HOST', 'localhost'),\n            'port' => env('DB_PORT', '1433'),\n            'database' => env('DB_DATABASE', 'forge'),\n            'username' => env('DB_USERNAME', 'forge'),\n            'password' => env('DB_PASSWORD', ''),\n            'charset' => 'utf8',\n            'prefix' => '',\n            'prefix_indexes' => true,\n        ],\n\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Migration Repository Table\n    |--------------------------------------------------------------------------\n    |\n    | This table keeps track of all the migrations that have already run for\n    | your application. Using this information, we can determine which of\n    | the migrations on disk haven't actually been run in the database.\n    |\n    */\n\n    'migrations' => 'migrations',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Redis Databases\n    |--------------------------------------------------------------------------\n    |\n    | Redis is an open source, fast, and advanced key-value store that also\n    | provides a richer body of commands than a typical key-value system\n    | such as APC or Memcached. Laravel makes it easy to dig right in.\n    |\n    */\n\n    'redis' => [\n\n        'client' => env('REDIS_CLIENT', 'phpredis'),\n\n        'options' => [\n            'cluster' => env('REDIS_CLUSTER', 'redis'),\n            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),\n        ],\n\n        'default' => [\n            'url' => env('REDIS_URL'),\n            'host' => env('REDIS_HOST', '127.0.0.1'),\n            'password' => env('REDIS_PASSWORD', null),\n            'port' => (int) env('REDIS_PORT', '6379'),\n            'database' => env('REDIS_DB', '0'),\n        ],\n\n        'cache' => [\n            'url' => env('REDIS_URL'),\n            'host' => env('REDIS_HOST', '127.0.0.1'),\n            'password' => env('REDIS_PASSWORD', null),\n            'port' => (int) env('REDIS_PORT', '6379'),\n            'database' => env('REDIS_CACHE_DB', '1'),\n        ],\n\n    ],\n\n];\n"
  },
  {
    "path": "config/dujiaoka.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nreturn [\n    'dujiaoka_version' => '2.0.6',\n    // 模板集合\n    'templates' => [\n        'unicorn' => '官方[unicorn-独角兽]',\n        'luna' => 'Luna[Julyssn]',\n        'hyper' => 'hyper[Bimoe]'\n    ],\n    // 语言\n    'language' => [\n        'zh_CN' => '简体中文',\n        'zh_TW' => '繁体中文',\n    ],\n];\n"
  },
  {
    "path": "config/filesystems.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Filesystem Disk\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the default filesystem disk that should be used\n    | by the framework. The \"local\" disk, as well as a variety of cloud\n    | based disks are available to your application. Just store away!\n    |\n    */\n\n    'default' => env('FILESYSTEM_DRIVER', 'local'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Cloud Filesystem Disk\n    |--------------------------------------------------------------------------\n    |\n    | Many applications store files both locally and in the cloud. For this\n    | reason, you may specify a default \"cloud\" driver here. This driver\n    | will be bound as the Cloud disk implementation in the container.\n    |\n    */\n\n    'cloud' => env('FILESYSTEM_CLOUD', 's3'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Filesystem Disks\n    |--------------------------------------------------------------------------\n    |\n    | Here you may configure as many filesystem \"disks\" as you wish, and you\n    | may even configure multiple disks of the same driver. Defaults have\n    | been setup for each driver as an example of the required options.\n    |\n    | Supported Drivers: \"local\", \"ftp\", \"sftp\", \"s3\"\n    |\n    */\n\n    'disks' => [\n\n        'local' => [\n            'driver' => 'local',\n            'root' => storage_path('app'),\n        ],\n\n        'public' => [\n            'driver' => 'local',\n            'root' => storage_path('app/public'),\n            'url' => env('APP_URL').'/storage',\n            'visibility' => 'public',\n        ],\n\n        's3' => [\n            'driver' => 's3',\n            'key' => env('AWS_ACCESS_KEY_ID'),\n            'secret' => env('AWS_SECRET_ACCESS_KEY'),\n            'region' => env('AWS_DEFAULT_REGION'),\n            'bucket' => env('AWS_BUCKET'),\n            'url' => env('AWS_URL'),\n            'endpoint' => env('AWS_ENDPOINT'),\n        ],\n\n        'admin' => [\n            'driver' => 'local',\n            'root' => public_path('uploads'),\n            'visibility' => 'public',\n            'url' => env('APP_URL').'/uploads',\n        ],\n    ],\n\n];\n"
  },
  {
    "path": "config/geetest.php",
    "content": "<?php\nreturn [\n\n\t/*\n\t|--------------------------------------------------------------------------\n\t| Config Language\n\t|--------------------------------------------------------------------------\n\t|\n\t| Here you can config your yunpian api key from yunpian provided.\n\t|\n\t| Options: ['zh-cn', 'zh-tw', 'en', 'ja', 'ko']\n\t|\n\t*/\n\t'lang' => 'zh-cn',\n\n\t/*\n\t|--------------------------------------------------------------------------\n\t| Config Geetest Id\n\t|--------------------------------------------------------------------------\n\t|\n\t| Here you can config your yunpian api key from yunpian provided.\n\t|\n\t*/\n\t'id' => env('GEETEST_ID'),\n\n\t/*\n\t|--------------------------------------------------------------------------\n\t| Config Geetest Key\n\t|--------------------------------------------------------------------------\n\t|\n\t| Here you can config your yunpian api key from yunpian provided.\n\t|\n\t*/\n\t'key' => env('GEETEST_KEY'),\n\n\t/*\n\t|--------------------------------------------------------------------------\n\t| Config Geetest URL\n\t|--------------------------------------------------------------------------\n\t|\n\t| Here you can config your geetest url for ajax validation.\n\t|\n\t*/\n\t'url' => '/geetest',\n\n\t/*\n\t|--------------------------------------------------------------------------\n\t| Config Geetest Protocol\n\t|--------------------------------------------------------------------------\n\t|\n\t| Here you can config your geetest url for ajax validation.\n\t| \n\t| Options: http or https\n\t|\n\t*/\n\t'protocol' => 'http',\n\n\t/*\n\t|--------------------------------------------------------------------------\n\t| Config Geetest Product\n\t|--------------------------------------------------------------------------\n\t|\n\t| Here you can config your geetest url for ajax validation.\n\t| \n\t| Options: float, popup, custom, bind\n\t|\n\t*/\n\t'product' => 'float',\n\n\t/*\n\t|--------------------------------------------------------------------------\n\t| Config Client Fail Alert Text\n\t|--------------------------------------------------------------------------\n\t|\n\t| Here you can config the alert text when it failed in client.\n\t|\n\t*/\n\t'client_fail_alert' => '请正确完成验证码操作',\n\n\t/*\n\t|--------------------------------------------------------------------------\n\t| Config Server Fail Alert\n\t|--------------------------------------------------------------------------\n\t|\n\t| Here you can config the alert text when it failed in server (two factor validation).\n\t|\n\t*/\n\t'server_fail_alert' => '验证码校验失败',\n\n\n];"
  },
  {
    "path": "config/hashing.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Hash Driver\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default hash driver that will be used to hash\n    | passwords for your application. By default, the bcrypt algorithm is\n    | used; however, you remain free to modify this option if you wish.\n    |\n    | Supported: \"bcrypt\", \"argon\", \"argon2id\"\n    |\n    */\n\n    'driver' => 'bcrypt',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Bcrypt Options\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the configuration options that should be used when\n    | passwords are hashed using the Bcrypt algorithm. This will allow you\n    | to control the amount of time it takes to hash the given password.\n    |\n    */\n\n    'bcrypt' => [\n        'rounds' => env('BCRYPT_ROUNDS', 10),\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Argon Options\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the configuration options that should be used when\n    | passwords are hashed using the Argon algorithm. These will allow you\n    | to control the amount of time it takes to hash the given password.\n    |\n    */\n\n    'argon' => [\n        'memory' => 1024,\n        'threads' => 2,\n        'time' => 2,\n    ],\n\n];\n"
  },
  {
    "path": "config/logging.php",
    "content": "<?php\n\nuse Monolog\\Handler\\NullHandler;\nuse Monolog\\Handler\\StreamHandler;\nuse Monolog\\Handler\\SyslogUdpHandler;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Log Channel\n    |--------------------------------------------------------------------------\n    |\n    | This option defines the default log channel that gets used when writing\n    | messages to the logs. The name specified in this option should match\n    | one of the channels defined in the \"channels\" configuration array.\n    |\n    */\n\n    'default' => env('LOG_CHANNEL', 'stack'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Log Channels\n    |--------------------------------------------------------------------------\n    |\n    | Here you may configure the log channels for your application. Out of\n    | the box, Laravel uses the Monolog PHP logging library. This gives\n    | you a variety of powerful log handlers / formatters to utilize.\n    |\n    | Available Drivers: \"single\", \"daily\", \"slack\", \"syslog\",\n    |                    \"errorlog\", \"monolog\",\n    |                    \"custom\", \"stack\"\n    |\n    */\n\n    'channels' => [\n        'stack' => [\n            'driver' => 'stack',\n            'channels' => ['single'],\n            'ignore_exceptions' => false,\n        ],\n\n        'single' => [\n            'driver' => 'single',\n            'path' => storage_path('logs/laravel.log'),\n            'level' => 'debug',\n        ],\n\n        'daily' => [\n            'driver' => 'daily',\n            'path' => storage_path('logs/laravel.log'),\n            'level' => 'debug',\n            'days' => 14,\n        ],\n\n        'slack' => [\n            'driver' => 'slack',\n            'url' => env('LOG_SLACK_WEBHOOK_URL'),\n            'username' => 'Laravel Log',\n            'emoji' => ':boom:',\n            'level' => 'critical',\n        ],\n\n        'papertrail' => [\n            'driver' => 'monolog',\n            'level' => 'debug',\n            'handler' => SyslogUdpHandler::class,\n            'handler_with' => [\n                'host' => env('PAPERTRAIL_URL'),\n                'port' => env('PAPERTRAIL_PORT'),\n            ],\n        ],\n\n        'stderr' => [\n            'driver' => 'monolog',\n            'handler' => StreamHandler::class,\n            'formatter' => env('LOG_STDERR_FORMATTER'),\n            'with' => [\n                'stream' => 'php://stderr',\n            ],\n        ],\n\n        'syslog' => [\n            'driver' => 'syslog',\n            'level' => 'debug',\n        ],\n\n        'errorlog' => [\n            'driver' => 'errorlog',\n            'level' => 'debug',\n        ],\n\n        'null' => [\n            'driver' => 'monolog',\n            'handler' => NullHandler::class,\n        ],\n\n        'emergency' => [\n            'path' => storage_path('logs/laravel.log'),\n        ],\n    ],\n\n];\n"
  },
  {
    "path": "config/mail.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Mail Driver\n    |--------------------------------------------------------------------------\n    |\n    | Laravel supports both SMTP and PHP's \"mail\" function as drivers for the\n    | sending of e-mail. You may specify which one you're using throughout\n    | your application here. By default, Laravel is setup for SMTP mail.\n    |\n    | Supported: \"smtp\", \"sendmail\", \"mailgun\", \"ses\",\n    |            \"postmark\", \"log\", \"array\"\n    |\n    */\n\n    'driver' => env('MAIL_DRIVER', 'smtp'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | SMTP Host Address\n    |--------------------------------------------------------------------------\n    |\n    | Here you may provide the host address of the SMTP server used by your\n    | applications. A default option is provided that is compatible with\n    | the Mailgun mail service which will provide reliable deliveries.\n    |\n    */\n\n    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | SMTP Host Port\n    |--------------------------------------------------------------------------\n    |\n    | This is the SMTP port used by your application to deliver e-mails to\n    | users of the application. Like the host we have set this value to\n    | stay compatible with the Mailgun e-mail application by default.\n    |\n    */\n\n    'port' => env('MAIL_PORT', 587),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Global \"From\" Address\n    |--------------------------------------------------------------------------\n    |\n    | You may wish for all e-mails sent by your application to be sent from\n    | the same address. Here, you may specify a name and address that is\n    | used globally for all e-mails that are sent by your application.\n    |\n    */\n\n    'from' => [\n        'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),\n        'name' => env('MAIL_FROM_NAME', 'Example'),\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | E-Mail Encryption Protocol\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the encryption protocol that should be used when\n    | the application send e-mail messages. A sensible default using the\n    | transport layer security protocol should provide great security.\n    |\n    */\n\n    'encryption' => env('MAIL_ENCRYPTION', 'tls'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | SMTP Server Username\n    |--------------------------------------------------------------------------\n    |\n    | If your SMTP server requires a username for authentication, you should\n    | set it here. This will get used to authenticate with your server on\n    | connection. You may also set the \"password\" value below this one.\n    |\n    */\n\n    'username' => env('MAIL_USERNAME'),\n\n    'password' => env('MAIL_PASSWORD'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Sendmail System Path\n    |--------------------------------------------------------------------------\n    |\n    | When using the \"sendmail\" driver to send e-mails, we will need to know\n    | the path to where Sendmail lives on this server. A default path has\n    | been provided here, which will work well on most of your systems.\n    |\n    */\n\n    'sendmail' => '/usr/sbin/sendmail -bs',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Markdown Mail Settings\n    |--------------------------------------------------------------------------\n    |\n    | If you are using Markdown based email rendering, you may configure your\n    | theme and component paths here, allowing you to customize the design\n    | of the emails. Or, you may simply stick with the Laravel defaults!\n    |\n    */\n\n    'markdown' => [\n        'theme' => 'default',\n\n        'paths' => [\n            resource_path('views/vendor/mail'),\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Log Channel\n    |--------------------------------------------------------------------------\n    |\n    | If you are using the \"log\" driver, you may specify the logging channel\n    | if you prefer to keep mail messages separate from other log entries\n    | for simpler reading. Otherwise, the default channel will be used.\n    |\n    */\n\n    'log_channel' => env('MAIL_LOG_CHANNEL'),\n\n];\n"
  },
  {
    "path": "config/queue.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Queue Connection Name\n    |--------------------------------------------------------------------------\n    |\n    | Laravel's queue API supports an assortment of back-ends via a single\n    | API, giving you convenient access to each back-end using the same\n    | syntax for every one. Here you may define a default connection.\n    |\n    */\n\n    'default' => env('QUEUE_CONNECTION', 'sync'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Queue Connections\n    |--------------------------------------------------------------------------\n    |\n    | Here you may configure the connection information for each server that\n    | is used by your application. A default configuration has been added\n    | for each back-end shipped with Laravel. You are free to add more.\n    |\n    | Drivers: \"sync\", \"database\", \"beanstalkd\", \"sqs\", \"redis\", \"null\"\n    |\n    */\n\n    'connections' => [\n\n        'sync' => [\n            'driver' => 'sync',\n        ],\n\n        'database' => [\n            'driver' => 'database',\n            'table' => 'jobs',\n            'queue' => 'default',\n            'retry_after' => 90,\n        ],\n\n        'beanstalkd' => [\n            'driver' => 'beanstalkd',\n            'host' => 'localhost',\n            'queue' => 'default',\n            'retry_after' => 90,\n            'block_for' => 0,\n        ],\n\n        'sqs' => [\n            'driver' => 'sqs',\n            'key' => env('AWS_ACCESS_KEY_ID'),\n            'secret' => env('AWS_SECRET_ACCESS_KEY'),\n            'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),\n            'queue' => env('SQS_QUEUE', 'your-queue-name'),\n            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),\n        ],\n\n        'redis' => [\n            'driver' => 'redis',\n            'connection' => 'default',\n            'queue' => env('REDIS_QUEUE', 'default'),\n            'retry_after' => 90,\n            'block_for' => null,\n        ],\n\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Failed Queue Jobs\n    |--------------------------------------------------------------------------\n    |\n    | These options configure the behavior of failed queue job logging so you\n    | can control which database and table are used to store the jobs that\n    | have failed. You may change them to any database / table you wish.\n    |\n    */\n\n    'failed' => [\n        'driver' => env('QUEUE_FAILED_DRIVER', 'database'),\n        'database' => env('DB_CONNECTION', 'mysql'),\n        'table' => 'failed_jobs',\n    ],\n\n];\n"
  },
  {
    "path": "config/services.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Third Party Services\n    |--------------------------------------------------------------------------\n    |\n    | This file is for storing the credentials for third party services such\n    | as Mailgun, Postmark, AWS and more. This file provides the de facto\n    | location for this type of information, allowing packages to have\n    | a conventional file to locate the various service credentials.\n    |\n    */\n\n    'mailgun' => [\n        'domain' => env('MAILGUN_DOMAIN'),\n        'secret' => env('MAILGUN_SECRET'),\n        'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),\n    ],\n\n    'postmark' => [\n        'token' => env('POSTMARK_TOKEN'),\n    ],\n\n    'ses' => [\n        'key' => env('AWS_ACCESS_KEY_ID'),\n        'secret' => env('AWS_SECRET_ACCESS_KEY'),\n        'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),\n    ],\n\n];\n"
  },
  {
    "path": "config/session.php",
    "content": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Session Driver\n    |--------------------------------------------------------------------------\n    |\n    | This option controls the default session \"driver\" that will be used on\n    | requests. By default, we will use the lightweight native driver but\n    | you may specify any of the other wonderful drivers provided here.\n    |\n    | Supported: \"file\", \"cookie\", \"database\", \"apc\",\n    |            \"memcached\", \"redis\", \"dynamodb\", \"array\"\n    |\n    */\n\n    'driver' => env('SESSION_DRIVER', 'file'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Lifetime\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify the number of minutes that you wish the session\n    | to be allowed to remain idle before it expires. If you want them\n    | to immediately expire on the browser closing, set that option.\n    |\n    */\n\n    'lifetime' => env('SESSION_LIFETIME', 120),\n\n    'expire_on_close' => false,\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Encryption\n    |--------------------------------------------------------------------------\n    |\n    | This option allows you to easily specify that all of your session data\n    | should be encrypted before it is stored. All encryption will be run\n    | automatically by Laravel and you can use the Session like normal.\n    |\n    */\n\n    'encrypt' => false,\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session File Location\n    |--------------------------------------------------------------------------\n    |\n    | When using the native session driver, we need a location where session\n    | files may be stored. A default has been set for you but a different\n    | location may be specified. This is only needed for file sessions.\n    |\n    */\n\n    'files' => storage_path('framework/sessions'),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Database Connection\n    |--------------------------------------------------------------------------\n    |\n    | When using the \"database\" or \"redis\" session drivers, you may specify a\n    | connection that should be used to manage these sessions. This should\n    | correspond to a connection in your database configuration options.\n    |\n    */\n\n    'connection' => env('SESSION_CONNECTION', null),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Database Table\n    |--------------------------------------------------------------------------\n    |\n    | When using the \"database\" session driver, you may specify the table we\n    | should use to manage the sessions. Of course, a sensible default is\n    | provided for you; however, you are free to change this as needed.\n    |\n    */\n\n    'table' => 'sessions',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Cache Store\n    |--------------------------------------------------------------------------\n    |\n    | When using the \"apc\", \"memcached\", or \"dynamodb\" session drivers you may\n    | list a cache store that should be used for these sessions. This value\n    | must match with one of the application's configured cache \"stores\".\n    |\n    */\n\n    'store' => env('SESSION_STORE', null),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Sweeping Lottery\n    |--------------------------------------------------------------------------\n    |\n    | Some session drivers must manually sweep their storage location to get\n    | rid of old sessions from storage. Here are the chances that it will\n    | happen on a given request. By default, the odds are 2 out of 100.\n    |\n    */\n\n    'lottery' => [2, 100],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Cookie Name\n    |--------------------------------------------------------------------------\n    |\n    | Here you may change the name of the cookie used to identify a session\n    | instance by ID. The name specified here will get used every time a\n    | new session cookie is created by the framework for every driver.\n    |\n    */\n\n    'cookie' => env(\n        'SESSION_COOKIE',\n        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'\n    ),\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Cookie Path\n    |--------------------------------------------------------------------------\n    |\n    | The session cookie path determines the path for which the cookie will\n    | be regarded as available. Typically, this will be the root path of\n    | your application but you are free to change this when necessary.\n    |\n    */\n\n    'path' => '/',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Session Cookie Domain\n    |--------------------------------------------------------------------------\n    |\n    | Here you may change the domain of the cookie used to identify a session\n    | in your application. This will determine which domains the cookie is\n    | available to in your application. A sensible default has been set.\n    |\n    */\n\n    'domain' => env('SESSION_DOMAIN', null),\n\n    /*\n    |--------------------------------------------------------------------------\n    | HTTPS Only Cookies\n    |--------------------------------------------------------------------------\n    |\n    | By setting this option to true, session cookies will only be sent back\n    | to the server if the browser has a HTTPS connection. This will keep\n    | the cookie from being sent to you if it can not be done securely.\n    |\n    */\n\n    'secure' => env('SESSION_SECURE_COOKIE', false),\n\n    /*\n    |--------------------------------------------------------------------------\n    | HTTP Access Only\n    |--------------------------------------------------------------------------\n    |\n    | Setting this value to true will prevent JavaScript from accessing the\n    | value of the cookie and the cookie will only be accessible through\n    | the HTTP protocol. You are free to modify this option if needed.\n    |\n    */\n\n    'http_only' => true,\n\n    /*\n    |--------------------------------------------------------------------------\n    | Same-Site Cookies\n    |--------------------------------------------------------------------------\n    |\n    | This option determines how your cookies behave when cross-site requests\n    | take place, and can be used to mitigate CSRF attacks. By default, we\n    | do not enable this as other CSRF protection services are in place.\n    |\n    | Supported: \"lax\", \"strict\", \"none\"\n    |\n    */\n\n    'same_site' => null,\n\n];\n"
  },
  {
    "path": "config/view.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | View Storage Paths\n    |--------------------------------------------------------------------------\n    |\n    | Most templating systems load templates from disk. Here you may specify\n    | an array of paths that should be checked for your views. Of course\n    | the usual Laravel view path has already been registered for you.\n    |\n    */\n\n    'paths' => [\n        resource_path('views'),\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Compiled View Path\n    |--------------------------------------------------------------------------\n    |\n    | This option determines where all the compiled Blade templates will be\n    | stored for your application. Typically, this is within the storage\n    | directory. However, as usual, you are free to change this value.\n    |\n    */\n\n    'compiled' => env(\n        'VIEW_COMPILED_PATH',\n        realpath(storage_path('framework/views'))\n    ),\n\n];\n"
  },
  {
    "path": "database/.gitignore",
    "content": "*.sqlite\n*.sqlite-journal\n"
  },
  {
    "path": "database/factories/OrderFactory.php",
    "content": "<?php\n\n/** @var \\Illuminate\\Database\\Eloquent\\Factory $factory */\n\nuse App\\Model;\nuse Faker\\Generator as Faker;\nuse Illuminate\\Support\\Str;\n\n$factory->define(\\App\\Models\\Order::class, function (Faker $faker) {\n    return [\n        'order_sn' => strtoupper(Str::random(12)),\n        'goods_id' => rand(1, 3),\n        'coupon_id' => rand(1, 3),\n        'title' => $faker->words(3, true),\n        'type' => rand(1,2),\n        'goods_price' => $faker->randomFloat(2, 10, 100),\n        'buy_amount' => rand(1, 10),\n        'coupon_discount_price' => $faker->randomFloat(2, 0, 100),\n        'wholesale_discount_price' => $faker->randomFloat(2, 0, 100),\n        'total_price' => $faker->randomFloat(2, 10, 100),\n        'actual_price' => $faker->randomFloat(2, 10, 100),\n        'search_pwd' => $faker->password(6, 10),\n        'email' => $faker->email,\n        'info' => $faker->words(3, true),\n        'pay_id' => rand(1, 20),\n        'buy_ip' => $faker->ipv4,\n        'trade_no' => strtoupper(Str::random(12)),\n        'status' => rand(1, 5),\n        'created_at' => $faker->dateTimeBetween('-7 days', 'now', 'PRC'),\n        'updated_at' => $faker->dateTimeBetween('-7 days', 'now', 'PRC'),\n    ];\n});\n"
  },
  {
    "path": "database/seeds/DatabaseSeeder.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass DatabaseSeeder extends Seeder\n{\n    /**\n     * Seed the application's database.\n     *\n     * @return void\n     */\n    public function run()\n    {\n        $this->call(OrderTableSeeder::class);\n    }\n}\n"
  },
  {
    "path": "database/seeds/OrderTableSeeder.php",
    "content": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass OrderTableSeeder extends Seeder\n{\n    /**\n     * Run the database seeds.\n     *\n     * @return void\n     */\n    public function run()\n    {\n        factory(\\App\\Models\\Order::class, 50)->create();\n    }\n}\n"
  },
  {
    "path": "database/sql/install.sql",
    "content": "SET NAMES utf8mb4;\nSET FOREIGN_KEY_CHECKS = 0;\n\n-- ----------------------------\n-- Table structure for admin_menu\n-- ----------------------------\nDROP TABLE IF EXISTS `admin_menu`;\nCREATE TABLE `admin_menu` (\n  `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n  `parent_id` bigint NOT NULL DEFAULT '0',\n  `order` int NOT NULL DEFAULT '0',\n  `title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `icon` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `uri` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `extension` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',\n  `show` tinyint NOT NULL DEFAULT '1',\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- ----------------------------\n-- Records of admin_menu\n-- ----------------------------\nBEGIN;\nINSERT INTO `admin_menu` VALUES (1, 0, 1, 'Index', 'feather icon-bar-chart-2', '/', '', 1, '2021-05-16 02:06:08', NULL);\nINSERT INTO `admin_menu` VALUES (2, 0, 2, 'Admin', 'feather icon-settings', '', '', 1, '2021-05-16 02:06:08', NULL);\nINSERT INTO `admin_menu` VALUES (3, 2, 3, 'Users', '', 'auth/users', '', 1, '2021-05-16 02:06:08', NULL);\nINSERT INTO `admin_menu` VALUES (4, 2, 4, 'Roles', '', 'auth/roles', '', 1, '2021-05-16 02:06:08', NULL);\nINSERT INTO `admin_menu` VALUES (5, 2, 5, 'Permission', '', 'auth/permissions', '', 1, '2021-05-16 02:06:08', NULL);\nINSERT INTO `admin_menu` VALUES (6, 2, 6, 'Menu', '', 'auth/menu', '', 1, '2021-05-16 02:06:08', NULL);\nINSERT INTO `admin_menu` VALUES (7, 2, 7, 'Extensions', '', 'auth/extensions', '', 1, '2021-05-16 02:06:08', NULL);\nINSERT INTO `admin_menu` VALUES (11, 0, 9, 'Goods_Manage', 'fa-shopping-bag', NULL, '', 1, '2021-05-16 11:39:55', '2021-05-23 20:44:20');\nINSERT INTO `admin_menu` VALUES (12, 11, 11, 'Goods', 'fa-shopping-bag', '/goods', '', 1, '2021-05-16 11:44:35', '2021-05-23 20:44:20');\nINSERT INTO `admin_menu` VALUES (13, 11, 10, 'Goods_Group', 'fa-star-half-o', '/goods-group', '', 1, '2021-05-16 17:08:43', '2021-05-23 20:44:20');\nINSERT INTO `admin_menu` VALUES (14, 0, 12, 'Carmis_Manage', 'fa-credit-card-alt', NULL, '', 1, '2021-05-17 21:29:50', '2021-05-23 20:44:20');\nINSERT INTO `admin_menu` VALUES (15, 14, 13, 'Carmis', 'fa-credit-card', '/carmis', '', 1, '2021-05-17 21:37:59', '2021-05-23 20:44:20');\nINSERT INTO `admin_menu` VALUES (16, 14, 14, 'Import_Carmis', 'fa-plus-circle', '/import-carmis', '', 1, '2021-05-18 14:46:35', '2021-05-23 20:44:20');\nINSERT INTO `admin_menu` VALUES (17, 18, 16, 'Coupon', 'fa-dollar', '/coupon', '', 1, '2021-05-18 17:29:53', '2021-05-23 20:44:20');\nINSERT INTO `admin_menu` VALUES (18, 0, 15, 'Coupon_Manage', 'fa-diamond', NULL, '', 1, '2021-05-18 17:32:03', '2021-05-18 17:32:03');\nINSERT INTO `admin_menu` VALUES (19, 0, 17, 'Configuration', 'fa-wrench', NULL, '', 1, '2021-05-20 20:06:47', '2021-05-23 20:44:20');\nINSERT INTO `admin_menu` VALUES (20, 19, 18, 'Email_Template_Configuration', 'fa-envelope', '/emailtpl', '', 1, '2021-05-20 20:17:07', '2021-05-23 20:44:20');\nINSERT INTO `admin_menu` VALUES (21, 19, 19, 'Pay_Configuration', 'fa-cc-visa', '/pay', '', 1, '2021-05-20 20:41:24', '2021-05-23 20:44:20');\nINSERT INTO `admin_menu` VALUES (22, 0, 8, 'Order_Manage', 'fa-table', NULL, '', 1, '2021-05-23 20:43:43', '2021-05-23 20:44:20');\nINSERT INTO `admin_menu` VALUES (23, 22, 20, 'Order', 'fa-heart', '/order', '', 1, '2021-05-23 20:46:13', '2021-05-23 20:47:16');\nINSERT INTO `admin_menu` VALUES (24, 19, 21, 'System_Setting', 'fa-cogs', '/system-setting', '', 1, '2021-05-26 10:26:34', '2021-05-26 10:26:34');\nINSERT INTO `admin_menu` VALUES (25, 19, 22, 'Email_Test', 'fa-envelope', '/email-test', '', 1, '2022-07-26 12:09:34', '2022-07-26 12:17:21');\n\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for admin_permission_menu\n-- ----------------------------\nDROP TABLE IF EXISTS `admin_permission_menu`;\nCREATE TABLE `admin_permission_menu` (\n  `permission_id` bigint NOT NULL,\n  `menu_id` bigint NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  UNIQUE KEY `admin_permission_menu_permission_id_menu_id_unique` (`permission_id`,`menu_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- ----------------------------\n-- Records of admin_permission_menu\n-- ----------------------------\nBEGIN;\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for admin_permissions\n-- ----------------------------\nDROP TABLE IF EXISTS `admin_permissions`;\nCREATE TABLE `admin_permissions` (\n  `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `slug` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `http_method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `http_path` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,\n  `order` int NOT NULL DEFAULT '0',\n  `parent_id` bigint NOT NULL DEFAULT '0',\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `admin_permissions_slug_unique` (`slug`)\n) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- ----------------------------\n-- Records of admin_permissions\n-- ----------------------------\nBEGIN;\nINSERT INTO `admin_permissions` VALUES (1, 'Auth management', 'auth-management', '', '', 1, 0, '2021-05-16 02:06:08', NULL);\nINSERT INTO `admin_permissions` VALUES (2, 'Users', 'users', '', '/auth/users*', 2, 1, '2021-05-16 02:06:08', NULL);\nINSERT INTO `admin_permissions` VALUES (3, 'Roles', 'roles', '', '/auth/roles*', 3, 1, '2021-05-16 02:06:08', NULL);\nINSERT INTO `admin_permissions` VALUES (4, 'Permissions', 'permissions', '', '/auth/permissions*', 4, 1, '2021-05-16 02:06:08', NULL);\nINSERT INTO `admin_permissions` VALUES (5, 'Menu', 'menu', '', '/auth/menu*', 5, 1, '2021-05-16 02:06:08', NULL);\nINSERT INTO `admin_permissions` VALUES (6, 'Extension', 'extension', '', '/auth/extensions*', 6, 1, '2021-05-16 02:06:08', NULL);\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for admin_role_menu\n-- ----------------------------\nDROP TABLE IF EXISTS `admin_role_menu`;\nCREATE TABLE `admin_role_menu` (\n  `role_id` bigint NOT NULL,\n  `menu_id` bigint NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  UNIQUE KEY `admin_role_menu_role_id_menu_id_unique` (`role_id`,`menu_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- ----------------------------\n-- Records of admin_role_menu\n-- ----------------------------\nBEGIN;\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for admin_role_permissions\n-- ----------------------------\nDROP TABLE IF EXISTS `admin_role_permissions`;\nCREATE TABLE `admin_role_permissions` (\n  `role_id` bigint NOT NULL,\n  `permission_id` bigint NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  UNIQUE KEY `admin_role_permissions_role_id_permission_id_unique` (`role_id`,`permission_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- ----------------------------\n-- Records of admin_role_permissions\n-- ----------------------------\nBEGIN;\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for admin_role_users\n-- ----------------------------\nDROP TABLE IF EXISTS `admin_role_users`;\nCREATE TABLE `admin_role_users` (\n  `role_id` bigint NOT NULL,\n  `user_id` bigint NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  UNIQUE KEY `admin_role_users_role_id_user_id_unique` (`role_id`,`user_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- ----------------------------\n-- Records of admin_role_users\n-- ----------------------------\nBEGIN;\nINSERT INTO `admin_role_users` VALUES (1, 1, '2021-05-16 02:06:08', '2021-05-16 02:06:08');\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for admin_roles\n-- ----------------------------\nDROP TABLE IF EXISTS `admin_roles`;\nCREATE TABLE `admin_roles` (\n  `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `slug` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `admin_roles_slug_unique` (`slug`)\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- ----------------------------\n-- Records of admin_roles\n-- ----------------------------\nBEGIN;\nINSERT INTO `admin_roles` VALUES (1, 'Administrator', 'administrator', '2021-05-16 02:06:08', '2021-05-16 02:06:08');\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for admin_settings\n-- ----------------------------\nDROP TABLE IF EXISTS `admin_settings`;\nCREATE TABLE `admin_settings` (\n  `slug` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  PRIMARY KEY (`slug`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- ----------------------------\n-- Records of admin_settings\n-- ----------------------------\nBEGIN;\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for admin_users\n-- ----------------------------\nDROP TABLE IF EXISTS `admin_users`;\nCREATE TABLE `admin_users` (\n  `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n  `username` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `password` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `remember_token` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `admin_users_username_unique` (`username`)\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- ----------------------------\n-- Records of admin_users\n-- ----------------------------\nBEGIN;\nINSERT INTO `admin_users` VALUES (1, 'admin', '$2y$10$e7z99Mhxm9BOHL55xHZTx.QcNTZJC6ftRXHCR/ZkBja/jBeasVeBy', 'Administrator', NULL, '4UAXF2BEw9EL1Tr2aGmwkv5DKwxqRF6djOMAHSiBMSOrPfPNHYrjCCQMtnTC', '2021-05-16 02:06:08', '2021-05-16 02:06:08');\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for carmis\n-- ----------------------------\nDROP TABLE IF EXISTS `carmis`;\nCREATE TABLE `carmis` (\n  `id` bigint NOT NULL AUTO_INCREMENT,\n  `goods_id` int NOT NULL COMMENT '所属商品',\n  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 1未售出 2已售出',\n  `is_loop` tinyint(1) NOT NULL DEFAULT '0' COMMENT '循环卡密 1是 0否',\n  `carmi` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '卡密',\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  `deleted_at` timestamp NULL DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  KEY `idx_goods_id` (`goods_id`) USING BTREE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci COMMENT='卡密表';\n\n-- ----------------------------\n-- Records of carmis\n-- ----------------------------\nBEGIN;\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for coupons\n-- ----------------------------\nDROP TABLE IF EXISTS `coupons`;\nCREATE TABLE `coupons` (\n  `id` int NOT NULL AUTO_INCREMENT,\n  `discount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '优惠金额',\n  `is_use` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否已经使用 1未使用 2已使用',\n  `is_open` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用 1是 0否',\n  `coupon` varchar(150) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '优惠码',\n  `ret` int NOT NULL DEFAULT '0' COMMENT '剩余使用次数',\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  `deleted_at` timestamp NULL DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_coupon` (`coupon`) USING BTREE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci COMMENT='优惠码表';\n\n-- ----------------------------\n-- Records of coupons\n-- ----------------------------\nBEGIN;\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for coupons_goods\n-- ----------------------------\nDROP TABLE IF EXISTS `coupons_goods`;\nCREATE TABLE `coupons_goods` (\n  `id` int NOT NULL AUTO_INCREMENT,\n  `goods_id` int NOT NULL COMMENT '商品id',\n  `coupons_id` int NOT NULL COMMENT '优惠码id',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci COMMENT='优惠码关联商品表';\n\n-- ----------------------------\n-- Records of coupons_goods\n-- ----------------------------\nBEGIN;\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for emailtpls\n-- ----------------------------\nDROP TABLE IF EXISTS `emailtpls`;\nCREATE TABLE `emailtpls` (\n  `id` int NOT NULL AUTO_INCREMENT,\n  `tpl_name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮件标题',\n  `tpl_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮件内容',\n  `tpl_token` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮件标识',\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  `deleted_at` timestamp NULL DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `mail_token` (`tpl_token`) USING BTREE\n) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- ----------------------------\n-- Records of emailtpls\n-- ----------------------------\nBEGIN;\nINSERT INTO `emailtpls` VALUES (2, '【{webname}】感谢您的购买，请查收您的收据', '<!DOCTYPE html>\\r\\n<html\\r\\n    style=\\\"font-family: \\'Helvetica Neue\\', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<head>\\r\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width\\\"/>\\r\\n    <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html; charset=UTF-8\\\"/>\\r\\n    <title>Billing e.g. invoices and receipts</title>\\r\\n\\r\\n    <style type=\\\"text/css\\\">\\r\\n        img {\\r\\n            max-width: 100%;\\r\\n        }\\r\\n\\r\\n        body {\\r\\n            -webkit-font-smoothing: antialiased;\\r\\n            -webkit-text-size-adjust: none;\\r\\n            width: 100% !important;\\r\\n            height: 100%;\\r\\n            line-height: 1.6em;\\r\\n        }\\r\\n\\r\\n        body {\\r\\n            background-color: #f6f6f6;\\r\\n        }\\r\\n\\r\\n        @media only screen and (max-width: 640px) {\\r\\n            body {\\r\\n                padding: 0 !important;\\r\\n            }\\r\\n\\r\\n            h1 {\\r\\n                font-weight: 800 !important;\\r\\n                margin: 20px 0 5px !important;\\r\\n            }\\r\\n\\r\\n            h2 {\\r\\n                font-weight: 800 !important;\\r\\n                margin: 20px 0 5px !important;\\r\\n            }\\r\\n\\r\\n            h3 {\\r\\n                font-weight: 800 !important;\\r\\n                margin: 20px 0 5px !important;\\r\\n            }\\r\\n\\r\\n            h4 {\\r\\n                font-weight: 800 !important;\\r\\n                margin: 20px 0 5px !important;\\r\\n            }\\r\\n\\r\\n            h1 {\\r\\n                font-size: 22px !important;\\r\\n            }\\r\\n\\r\\n            h2 {\\r\\n                font-size: 18px !important;\\r\\n            }\\r\\n\\r\\n            h3 {\\r\\n                font-size: 16px !important;\\r\\n            }\\r\\n\\r\\n            .container {\\r\\n                padding: 0 !important;\\r\\n                width: 100% !important;\\r\\n            }\\r\\n\\r\\n            .content {\\r\\n                padding: 0 !important;\\r\\n            }\\r\\n\\r\\n            .content-wrap {\\r\\n                padding: 10px !important;\\r\\n            }\\r\\n\\r\\n            .invoice {\\r\\n                width: 100% !important;\\r\\n            }\\r\\n        }\\r\\n    </style>\\r\\n</head>\\r\\n\\r\\n<body itemscope itemtype=\\\"http://schema.org/EmailMessage\\\"\\r\\n      style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; line-height: 1.6em; background-color: #f6f6f6; margin: 0;\\\"\\r\\n      bgcolor=\\\"#f6f6f6\\\">\\r\\n\\r\\n<table class=\\\"body-wrap\\\"\\r\\n       style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; background-color: #f6f6f6; margin: 0;\\\"\\r\\n       bgcolor=\\\"#f6f6f6\\\">\\r\\n    <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n        <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;\\\"\\r\\n            valign=\\\"top\\\"></td>\\r\\n        <td class=\\\"container\\\" width=\\\"600\\\"\\r\\n            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; display: block !important; max-width: 600px !important; clear: both !important; margin: 0 auto;\\\"\\r\\n            valign=\\\"top\\\">\\r\\n            <div class=\\\"content\\\"\\r\\n                 style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; max-width: 600px; display: block; margin: 0 auto; padding: 20px;\\\">\\r\\n                <table class=\\\"main\\\" width=\\\"100%\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\"\\r\\n                       style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; border-radius: 3px; background-color: #fff; margin: 0; border: 1px solid #e9e9e9;\\\"\\r\\n                       bgcolor=\\\"#fff\\\">\\r\\n                    <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                        <td class=\\\"content-wrap aligncenter\\\"\\r\\n                            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 20px;\\\"\\r\\n                            align=\\\"center\\\" valign=\\\"top\\\">\\r\\n                            <table width=\\\"100%\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\"\\r\\n                                   style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        valign=\\\"top\\\">\\r\\n                                        <h1 class=\\\"aligncenter\\\"\\r\\n                                            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,\\'Lucida Grande\\',sans-serif; box-sizing: border-box; font-size: 32px; color: #000; line-height: 1.2em; font-weight: 500; text-align: center; margin: 40px 0 0;\\\"\\r\\n                                            align=\\\"center\\\"> {ord_title} </h1>\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        valign=\\\"top\\\">\\r\\n                                        <h2 class=\\\"aligncenter\\\"\\r\\n                                            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,\\'Lucida Grande\\',sans-serif; box-sizing: border-box; font-size: 24px; color: #000; line-height: 1.2em; font-weight: 400; text-align: center; margin: 40px 0 0;\\\"\\r\\n                                            align=\\\"center\\\">感谢您的购买。</h2>\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block aligncenter\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        align=\\\"center\\\" valign=\\\"top\\\">\\r\\n                                        <table class=\\\"invoice\\\"\\r\\n                                               style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; text-align: left; width: 80%; margin: 40px auto;\\\">\\r\\n                                            <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                                <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 5px 0;\\\" valign=\\\"top\\\">\\r\\n                                                    订单号: {order_id}<br style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\"/>\\r\\n                                                    {created_at}<br style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\"/>\\r\\n                                                    以下是您的卡密信息：<br style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\"/>\\r\\n                                                    {ord_info}\\r\\n                                                </td>\\r\\n                                            </tr>\\r\\n                                            <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                                <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 5px 0;\\\"\\r\\n                                                    valign=\\\"top\\\">\\r\\n                                                    <table class=\\\"invoice-items\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\"\\r\\n                                                           style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; margin: 0;\\\">\\r\\n                                                        <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                                            <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;\\\"\\r\\n                                                                valign=\\\"top\\\">{product_name}\\r\\n                                                            </td>\\r\\n                                                            <td class=\\\"alignright\\\"\\r\\n                                                                style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;\\\"\\r\\n                                                                align=\\\"right\\\" valign=\\\"top\\\">x {buy_amount}\\r\\n                                                            </td>\\r\\n                                                        </tr>\\r\\n\\r\\n                                                        <tr class=\\\"total\\\"\\r\\n                                                            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                                            <td class=\\\"alignright\\\" width=\\\"80%\\\"\\r\\n                                                                style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 2px; border-top-color: #333; border-top-style: solid; border-bottom-color: #333; border-bottom-width: 2px; border-bottom-style: solid; font-weight: 700; margin: 0; padding: 5px 0;\\\"\\r\\n                                                                align=\\\"right\\\" valign=\\\"top\\\">总价\\r\\n                                                            </td>\\r\\n                                                            <td class=\\\"alignright\\\"\\r\\n                                                                style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 2px; border-top-color: #333; border-top-style: solid; border-bottom-color: #333; border-bottom-width: 2px; border-bottom-style: solid; font-weight: 700; margin: 0; padding: 5px 0;\\\"\\r\\n                                                                align=\\\"right\\\" valign=\\\"top\\\">{ord_price} ¥\\r\\n                                                            </td>\\r\\n                                                        </tr>\\r\\n                                                    </table>\\r\\n                                                </td>\\r\\n                                            </tr>\\r\\n                                        </table>\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block aligncenter\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        align=\\\"center\\\" valign=\\\"top\\\">\\r\\n                                        <a href=\\\"{weburl}\\\"\\r\\n                                           style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; color: #348eda; text-decoration: underline; margin: 0;\\\">{webname}</a>\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block aligncenter\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        align=\\\"center\\\" valign=\\\"top\\\">\\r\\n                                        {webname} Inc. {created_at}\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                            </table>\\r\\n                        </td>\\r\\n                    </tr>\\r\\n                </table>\\r\\n                <div class=\\\"footer\\\"\\r\\n                     style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; clear: both; color: #999; margin: 0; padding: 20px;\\\">\\r\\n                    <table width=\\\"100%\\\"\\r\\n                           style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                        <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n\\r\\n                        </tr>\\r\\n                    </table>\\r\\n                </div>\\r\\n            </div>\\r\\n        </td>\\r\\n        <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;\\\"\\r\\n            valign=\\\"top\\\"></td>\\r\\n    </tr>\\r\\n</table>\\r\\n</body>\\r\\n</html>', 'card_send_user_email', '2020-04-06 13:27:56', '2021-05-20 20:24:42', NULL);\nINSERT INTO `emailtpls` VALUES (3, '【{webname}】新订单等待处理！', '<p><span style=\\\"\\\">尊敬的管理员：</span></p><p><span style=\\\"\\\">客户购买的商品：<span style=\\\"\\\"><span style=\\\"\\\">【{product_name}】</span></span> 已支付成功，请及时处理。</span></p><p>订单号：{order_id}<br></p><p>数量：{buy_amount}<br></p><p>金额：{ord_price}<br></p><p>时间：<span style=\\\"\\\">{created_at}</span><br></p><hr><p>{ord_info}</p><hr><p style=\\\"margin-left: 40px;\\\"><b>来自{webname} -{weburl}</b></p>', 'manual_send_manage_mail', '2020-04-06 13:32:03', '2020-04-06 13:32:18', NULL);\nINSERT INTO `emailtpls` VALUES (4, '【{webname}】订单处理失败！', '<!DOCTYPE html>\\r\\n<html\\r\\n    style=\\\"font-family: \\'Helvetica Neue\\', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<head>\\r\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width\\\"/>\\r\\n    <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html; charset=UTF-8\\\"/>\\r\\n    <title>Billing e.g. invoices and receipts</title>\\r\\n\\r\\n    <style type=\\\"text/css\\\">\\r\\n        img {\\r\\n            max-width: 100%;\\r\\n        }\\r\\n\\r\\n        body {\\r\\n            -webkit-font-smoothing: antialiased;\\r\\n            -webkit-text-size-adjust: none;\\r\\n            width: 100% !important;\\r\\n            height: 100%;\\r\\n            line-height: 1.6em;\\r\\n        }\\r\\n\\r\\n        body {\\r\\n            background-color: #f6f6f6;\\r\\n        }\\r\\n\\r\\n        @media only screen and (max-width: 640px) {\\r\\n            body {\\r\\n                padding: 0 !important;\\r\\n            }\\r\\n\\r\\n            h1 {\\r\\n                font-weight: 800 !important;\\r\\n                margin: 20px 0 5px !important;\\r\\n            }\\r\\n\\r\\n            h2 {\\r\\n                font-weight: 800 !important;\\r\\n                margin: 20px 0 5px !important;\\r\\n            }\\r\\n\\r\\n            h3 {\\r\\n                font-weight: 800 !important;\\r\\n                margin: 20px 0 5px !important;\\r\\n            }\\r\\n\\r\\n            h4 {\\r\\n                font-weight: 800 !important;\\r\\n                margin: 20px 0 5px !important;\\r\\n            }\\r\\n\\r\\n            h1 {\\r\\n                font-size: 22px !important;\\r\\n            }\\r\\n\\r\\n            h2 {\\r\\n                font-size: 18px !important;\\r\\n            }\\r\\n\\r\\n            h3 {\\r\\n                font-size: 16px !important;\\r\\n            }\\r\\n\\r\\n            .container {\\r\\n                padding: 0 !important;\\r\\n                width: 100% !important;\\r\\n            }\\r\\n\\r\\n            .content {\\r\\n                padding: 0 !important;\\r\\n            }\\r\\n\\r\\n            .content-wrap {\\r\\n                padding: 10px !important;\\r\\n            }\\r\\n\\r\\n            .invoice {\\r\\n                width: 100% !important;\\r\\n            }\\r\\n        }\\r\\n    </style>\\r\\n</head>\\r\\n\\r\\n<body itemscope itemtype=\\\"http://schema.org/EmailMessage\\\"\\r\\n      style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; line-height: 1.6em; background-color: #f6f6f6; margin: 0;\\\"\\r\\n      bgcolor=\\\"#f6f6f6\\\">\\r\\n\\r\\n<table class=\\\"body-wrap\\\"\\r\\n       style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; background-color: #f6f6f6; margin: 0;\\\"\\r\\n       bgcolor=\\\"#f6f6f6\\\">\\r\\n    <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n        <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;\\\"\\r\\n            valign=\\\"top\\\"></td>\\r\\n        <td class=\\\"container\\\" width=\\\"600\\\"\\r\\n            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; display: block !important; max-width: 600px !important; clear: both !important; margin: 0 auto;\\\"\\r\\n            valign=\\\"top\\\">\\r\\n            <div class=\\\"content\\\"\\r\\n                 style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; max-width: 600px; display: block; margin: 0 auto; padding: 20px;\\\">\\r\\n                <table class=\\\"main\\\" width=\\\"100%\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\"\\r\\n                       style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; border-radius: 3px; background-color: #fff; margin: 0; border: 1px solid #e9e9e9;\\\"\\r\\n                       bgcolor=\\\"#fff\\\">\\r\\n                    <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                        <td class=\\\"content-wrap aligncenter\\\"\\r\\n                            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 20px;\\\"\\r\\n                            align=\\\"center\\\" valign=\\\"top\\\">\\r\\n                            <table width=\\\"100%\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\"\\r\\n                                   style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        valign=\\\"top\\\">\\r\\n                                        <h1 class=\\\"aligncenter\\\"\\r\\n                                            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,\\'Lucida Grande\\',sans-serif; box-sizing: border-box; font-size: 32px; color: #000; line-height: 1.2em; font-weight: 500; text-align: center; margin: 40px 0 0;\\\"\\r\\n                                            align=\\\"center\\\"> {ord_title} </h1>\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        valign=\\\"top\\\">\\r\\n                                        <h2 class=\\\"aligncenter\\\"\\r\\n                                            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,\\'Lucida Grande\\',sans-serif; box-sizing: border-box; font-size: 24px; color: #000; line-height: 1.2em; font-weight: 400; text-align: center; margin: 40px 0 0;\\\"\\r\\n                                            align=\\\"center\\\">非常遗憾，您的订单处理失败(╥﹏╥).</h2>\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block aligncenter\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        align=\\\"center\\\" valign=\\\"top\\\">\\r\\n                                        <table class=\\\"invoice\\\"\\r\\n                                               style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; text-align: left; width: 80%; margin: 40px auto;\\\">\\r\\n                                            <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                                <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 5px 0;\\\" valign=\\\"top\\\">\\r\\n                                                    订单号: {order_id}<br style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\"/>\\r\\n                                                    {created_at}<br style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\"/>\\r\\n                                                    尊敬的客户，十分抱歉，订单处理失败，请联系网站工作人员核查原因。\\r\\n                                                </td>\\r\\n                                            </tr>\\r\\n                                            <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                                <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 5px 0;\\\"\\r\\n                                                    valign=\\\"top\\\">\\r\\n                                                    <table class=\\\"invoice-items\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\"\\r\\n                                                           style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; margin: 0;\\\">\\r\\n                                                        <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                                            <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;\\\"\\r\\n                                                                valign=\\\"top\\\">{ord_title}\\r\\n                                                            </td>\\r\\n                                                            <td class=\\\"alignright\\\"\\r\\n                                                                style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;\\\"\\r\\n                                                                align=\\\"right\\\" valign=\\\"top\\\">\\r\\n                                                            </td>\\r\\n                                                        </tr>\\r\\n\\r\\n                                                        <tr class=\\\"total\\\"\\r\\n                                                            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                                            <td class=\\\"alignright\\\" width=\\\"80%\\\"\\r\\n                                                                style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 2px; border-top-color: #333; border-top-style: solid; border-bottom-color: #333; border-bottom-width: 2px; border-bottom-style: solid; font-weight: 700; margin: 0; padding: 5px 0;\\\"\\r\\n                                                                align=\\\"right\\\" valign=\\\"top\\\">总价\\r\\n                                                            </td>\\r\\n                                                            <td class=\\\"alignright\\\"\\r\\n                                                                style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 2px; border-top-color: #333; border-top-style: solid; border-bottom-color: #333; border-bottom-width: 2px; border-bottom-style: solid; font-weight: 700; margin: 0; padding: 5px 0;\\\"\\r\\n                                                                align=\\\"right\\\" valign=\\\"top\\\">{ord_price} ¥\\r\\n                                                            </td>\\r\\n                                                        </tr>\\r\\n                                                    </table>\\r\\n                                                </td>\\r\\n                                            </tr>\\r\\n                                        </table>\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block aligncenter\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        align=\\\"center\\\" valign=\\\"top\\\">\\r\\n                                        <a href=\\\"{weburl}\\\"\\r\\n                                           style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; color: #348eda; text-decoration: underline; margin: 0;\\\">{webname}</a>\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block aligncenter\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        align=\\\"center\\\" valign=\\\"top\\\">\\r\\n                                        {webname} Inc. {created_at}\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                            </table>\\r\\n                        </td>\\r\\n                    </tr>\\r\\n                </table>\\r\\n                <div class=\\\"footer\\\"\\r\\n                     style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; clear: both; color: #999; margin: 0; padding: 20px;\\\">\\r\\n                    <table width=\\\"100%\\\"\\r\\n                           style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                        <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n\\r\\n                        </tr>\\r\\n                    </table>\\r\\n                </div>\\r\\n            </div>\\r\\n        </td>\\r\\n        <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;\\\"\\r\\n            valign=\\\"top\\\"></td>\\r\\n    </tr>\\r\\n</table>\\r\\n</body>\\r\\n</html>', 'failed_order', '2020-06-30 09:54:58', '2020-06-30 10:47:21', NULL);\nINSERT INTO `emailtpls` VALUES (5, '【{webname}】您的订单已经处理完成！', '<p>&nbsp;</p>\\r\\n<p>&nbsp;</p>\\r\\n<table class=\\\"body-wrap\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; background-color: #f6f6f6; margin: 0;\\\" bgcolor=\\\"#f6f6f6\\\">\\r\\n<tbody>\\r\\n<tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;\\\" valign=\\\"top\\\">&nbsp;</td>\\r\\n<td class=\\\"container\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; display: block !important; max-width: 600px !important; clear: both !important; margin: 0 auto;\\\" valign=\\\"top\\\" width=\\\"600\\\">\\r\\n<div class=\\\"content\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; max-width: 600px; display: block; margin: 0 auto; padding: 20px;\\\">\\r\\n<table class=\\\"main\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; border-radius: 3px; background-color: #fff; margin: 0; border: 1px solid #e9e9e9;\\\" width=\\\"100%\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\" bgcolor=\\\"#fff\\\">\\r\\n<tbody>\\r\\n<tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<td class=\\\"content-wrap aligncenter\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 20px;\\\" align=\\\"center\\\" valign=\\\"top\\\">\\r\\n<table style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\" width=\\\"100%\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\\r\\n<tbody>\\r\\n<tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<td class=\\\"content-block\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;\\\" valign=\\\"top\\\">\\r\\n<h1 class=\\\"aligncenter\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,\\'Lucida Grande\\',sans-serif; box-sizing: border-box; font-size: 32px; color: #000; line-height: 1.2em; font-weight: 500; text-align: center; margin: 40px 0 0;\\\" align=\\\"center\\\">{ord_title}</h1>\\r\\n</td>\\r\\n</tr>\\r\\n<tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<td class=\\\"content-block\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;\\\" valign=\\\"top\\\">\\r\\n<h2 class=\\\"aligncenter\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,\\'Lucida Grande\\',sans-serif; box-sizing: border-box; font-size: 24px; color: #000; line-height: 1.2em; font-weight: 400; text-align: center; margin: 40px 0 0;\\\" align=\\\"center\\\">您的订单已完成。</h2>\\r\\n</td>\\r\\n</tr>\\r\\n<tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<td class=\\\"content-block aligncenter\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;\\\" align=\\\"center\\\" valign=\\\"top\\\">\\r\\n<table class=\\\"invoice\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; text-align: left; width: 80%; margin: 40px auto;\\\">\\r\\n<tbody>\\r\\n<tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 5px 0;\\\" valign=\\\"top\\\">订单号: {order_id}<br style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\" />{created_at}<br style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\" />尊敬的客户，您的订单已经处理完毕，请及时前往网站核对处理结果，如有疑问请联系网站工作人员！</td>\\r\\n</tr>\\r\\n<tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 5px 0;\\\" valign=\\\"top\\\">\\r\\n<table class=\\\"invoice-items\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; margin: 0;\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\\r\\n<tbody>\\r\\n<tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;\\\" valign=\\\"top\\\"><span style=\\\"font-size: 14pt;\\\">{ord_title}</span></td>\\r\\n<td class=\\\"alignright\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;\\\" align=\\\"right\\\" valign=\\\"top\\\">&nbsp;</td>\\r\\n</tr>\\r\\n<tr>\\r\\n<td style=\\\"font-family: \\'Helvetica Neue\\', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; border-top: 1px solid #eeeeee; margin: 0px; padding: 5px 0px;\\\">{ord_info}</td>\\r\\n<td style=\\\"font-family: \\'Helvetica Neue\\', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top: 1px solid #eeeeee; margin: 0px; padding: 5px 0px;\\\">&nbsp;</td>\\r\\n</tr>\\r\\n<tr class=\\\"total\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<td class=\\\"alignright\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 2px; border-top-color: #333; border-top-style: solid; border-bottom-color: #333; border-bottom-width: 2px; border-bottom-style: solid; font-weight: bold; margin: 0; padding: 5px 0;\\\" align=\\\"right\\\" valign=\\\"top\\\" width=\\\"80%\\\">总价</td>\\r\\n<td class=\\\"alignright\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 2px; border-top-color: #333; border-top-style: solid; border-bottom-color: #333; border-bottom-width: 2px; border-bottom-style: solid; font-weight: bold; margin: 0; padding: 5px 0;\\\" align=\\\"right\\\" valign=\\\"top\\\">{ord_price} &yen;</td>\\r\\n</tr>\\r\\n</tbody>\\r\\n</table>\\r\\n</td>\\r\\n</tr>\\r\\n</tbody>\\r\\n</table>\\r\\n</td>\\r\\n</tr>\\r\\n<tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<td class=\\\"content-block aligncenter\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;\\\" align=\\\"center\\\" valign=\\\"top\\\"><a style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; color: #348eda; text-decoration: underline; margin: 0;\\\" href=\\\"{weburl}\\\">{webname}</a></td>\\r\\n</tr>\\r\\n<tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<td class=\\\"content-block aligncenter\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;\\\" align=\\\"center\\\" valign=\\\"top\\\">{webname} Inc. {created_at}</td>\\r\\n</tr>\\r\\n</tbody>\\r\\n</table>\\r\\n</td>\\r\\n</tr>\\r\\n</tbody>\\r\\n</table>\\r\\n<div class=\\\"footer\\\" style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; clear: both; color: #999; margin: 0; padding: 20px;\\\">&nbsp;</div>\\r\\n</div>\\r\\n</td>\\r\\n<td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;\\\" valign=\\\"top\\\">&nbsp;</td>\\r\\n</tr>\\r\\n</tbody>\\r\\n</table>', 'completed_order', '2022-05-08 15:41:49', '2022-05-08 15:47:26', NULL);\nINSERT INTO `emailtpls` VALUES (6, '【{webname}】已收到您的订单，请等候处理', '<!DOCTYPE html>\\r\\n<html\\r\\n    style=\\\"font-family: \\'Helvetica Neue\\', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n<head>\\r\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width\\\"/>\\r\\n    <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html; charset=UTF-8\\\"/>\\r\\n    <title>Billing e.g. invoices and receipts</title>\\r\\n\\r\\n    <style type=\\\"text/css\\\">\\r\\n        img {\\r\\n            max-width: 100%;\\r\\n        }\\r\\n\\r\\n        body {\\r\\n            -webkit-font-smoothing: antialiased;\\r\\n            -webkit-text-size-adjust: none;\\r\\n            width: 100% !important;\\r\\n            height: 100%;\\r\\n            line-height: 1.6em;\\r\\n        }\\r\\n\\r\\n        body {\\r\\n            background-color: #f6f6f6;\\r\\n        }\\r\\n\\r\\n        @media only screen and (max-width: 640px) {\\r\\n            body {\\r\\n                padding: 0 !important;\\r\\n            }\\r\\n\\r\\n            h1 {\\r\\n                font-weight: 800 !important;\\r\\n                margin: 20px 0 5px !important;\\r\\n            }\\r\\n\\r\\n            h2 {\\r\\n                font-weight: 800 !important;\\r\\n                margin: 20px 0 5px !important;\\r\\n            }\\r\\n\\r\\n            h3 {\\r\\n                font-weight: 800 !important;\\r\\n                margin: 20px 0 5px !important;\\r\\n            }\\r\\n\\r\\n            h4 {\\r\\n                font-weight: 800 !important;\\r\\n                margin: 20px 0 5px !important;\\r\\n            }\\r\\n\\r\\n            h1 {\\r\\n                font-size: 22px !important;\\r\\n            }\\r\\n\\r\\n            h2 {\\r\\n                font-size: 18px !important;\\r\\n            }\\r\\n\\r\\n            h3 {\\r\\n                font-size: 16px !important;\\r\\n            }\\r\\n\\r\\n            .container {\\r\\n                padding: 0 !important;\\r\\n                width: 100% !important;\\r\\n            }\\r\\n\\r\\n            .content {\\r\\n                padding: 0 !important;\\r\\n            }\\r\\n\\r\\n            .content-wrap {\\r\\n                padding: 10px !important;\\r\\n            }\\r\\n\\r\\n            .invoice {\\r\\n                width: 100% !important;\\r\\n            }\\r\\n        }\\r\\n    </style>\\r\\n</head>\\r\\n\\r\\n<body itemscope itemtype=\\\"http://schema.org/EmailMessage\\\"\\r\\n      style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; line-height: 1.6em; background-color: #f6f6f6; margin: 0;\\\"\\r\\n      bgcolor=\\\"#f6f6f6\\\">\\r\\n\\r\\n<table class=\\\"body-wrap\\\"\\r\\n       style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; background-color: #f6f6f6; margin: 0;\\\"\\r\\n       bgcolor=\\\"#f6f6f6\\\">\\r\\n    <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n        <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;\\\"\\r\\n            valign=\\\"top\\\"></td>\\r\\n        <td class=\\\"container\\\" width=\\\"600\\\"\\r\\n            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; display: block !important; max-width: 600px !important; clear: both !important; margin: 0 auto;\\\"\\r\\n            valign=\\\"top\\\">\\r\\n            <div class=\\\"content\\\"\\r\\n                 style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; max-width: 600px; display: block; margin: 0 auto; padding: 20px;\\\">\\r\\n                <table class=\\\"main\\\" width=\\\"100%\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\"\\r\\n                       style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; border-radius: 3px; background-color: #fff; margin: 0; border: 1px solid #e9e9e9;\\\"\\r\\n                       bgcolor=\\\"#fff\\\">\\r\\n                    <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                        <td class=\\\"content-wrap aligncenter\\\"\\r\\n                            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 20px;\\\"\\r\\n                            align=\\\"center\\\" valign=\\\"top\\\">\\r\\n                            <table width=\\\"100%\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\"\\r\\n                                   style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        valign=\\\"top\\\">\\r\\n                                        <h1 class=\\\"aligncenter\\\"\\r\\n                                            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,\\'Lucida Grande\\',sans-serif; box-sizing: border-box; font-size: 32px; color: #000; line-height: 1.2em; font-weight: 500; text-align: center; margin: 40px 0 0;\\\"\\r\\n                                            align=\\\"center\\\"> {ord_title} </h1>\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        valign=\\\"top\\\">\\r\\n                                        <h2 class=\\\"aligncenter\\\"\\r\\n                                            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,\\'Lucida Grande\\',sans-serif; box-sizing: border-box; font-size: 24px; color: #000; line-height: 1.2em; font-weight: 400; text-align: center; margin: 40px 0 0;\\\"\\r\\n                                            align=\\\"center\\\">感谢您的惠顾。</h2>\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block aligncenter\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        align=\\\"center\\\" valign=\\\"top\\\">\\r\\n                                        <table class=\\\"invoice\\\"\\r\\n                                               style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; text-align: left; width: 80%; margin: 40px auto;\\\">\\r\\n                                            <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                                <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 5px 0;\\\" valign=\\\"top\\\">\\r\\n                                                    订单号: {order_id}<br style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\"/>\\r\\n                                                    {created_at}<br style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\"/>\\r\\n                                                    系统已向工作人员发送订单通知，代充类商品需要工作人员手动处理，请耐心等待通知！\\r\\n                                                </td>\\r\\n                                            </tr>\\r\\n                                            <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                                <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 5px 0;\\\"\\r\\n                                                    valign=\\\"top\\\">\\r\\n                                                    <table class=\\\"invoice-items\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\"\\r\\n                                                           style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; margin: 0;\\\">\\r\\n                                                        <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                                            <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;\\\"\\r\\n                                                                valign=\\\"top\\\">{ord_title}\\r\\n                                                            </td>\\r\\n                                                            <td class=\\\"alignright\\\"\\r\\n                                                                style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;\\\"\\r\\n                                                                align=\\\"right\\\" valign=\\\"top\\\">\\r\\n                                                            </td>\\r\\n                                                        </tr>\\r\\n\\r\\n                                                        <tr class=\\\"total\\\"\\r\\n                                                            style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                                            <td class=\\\"alignright\\\" width=\\\"80%\\\"\\r\\n                                                                style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 2px; border-top-color: #333; border-top-style: solid; border-bottom-color: #333; border-bottom-width: 2px; border-bottom-style: solid; font-weight: 700; margin: 0; padding: 5px 0;\\\"\\r\\n                                                                align=\\\"right\\\" valign=\\\"top\\\">总价\\r\\n                                                            </td>\\r\\n                                                            <td class=\\\"alignright\\\"\\r\\n                                                                style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 2px; border-top-color: #333; border-top-style: solid; border-bottom-color: #333; border-bottom-width: 2px; border-bottom-style: solid; font-weight: 700; margin: 0; padding: 5px 0;\\\"\\r\\n                                                                align=\\\"right\\\" valign=\\\"top\\\">{ord_price} ¥\\r\\n                                                            </td>\\r\\n                                                        </tr>\\r\\n                                                    </table>\\r\\n                                                </td>\\r\\n                                            </tr>\\r\\n                                        </table>\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block aligncenter\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        align=\\\"center\\\" valign=\\\"top\\\">\\r\\n                                        <a href=\\\"{weburl}\\\"\\r\\n                                           style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; color: #348eda; text-decoration: underline; margin: 0;\\\">{webname}</a>\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                                <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                                    <td class=\\\"content-block aligncenter\\\"\\r\\n                                        style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;\\\"\\r\\n                                        align=\\\"center\\\" valign=\\\"top\\\">\\r\\n                                        {webname} Inc. {created_at}\\r\\n                                    </td>\\r\\n                                </tr>\\r\\n                            </table>\\r\\n                        </td>\\r\\n                    </tr>\\r\\n                </table>\\r\\n                <div class=\\\"footer\\\"\\r\\n                     style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; clear: both; color: #999; margin: 0; padding: 20px;\\\">\\r\\n                    <table width=\\\"100%\\\"\\r\\n                           style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n                        <tr style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;\\\">\\r\\n\\r\\n                        </tr>\\r\\n                    </table>\\r\\n                </div>\\r\\n            </div>\\r\\n        </td>\\r\\n        <td style=\\\"font-family: \\'Helvetica Neue\\',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;\\\"\\r\\n            valign=\\\"top\\\"></td>\\r\\n    </tr>\\r\\n</table>\\r\\n</body>\\r\\n</html>', 'pending_order', '2020-06-30 09:55:55', '2020-06-30 10:45:40', NULL);\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for failed_jobs\n-- ----------------------------\nDROP TABLE IF EXISTS `failed_jobs`;\nCREATE TABLE `failed_jobs` (\n  `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n  `connection` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `queue` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `exception` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- ----------------------------\n-- Records of failed_jobs\n-- ----------------------------\nBEGIN;\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for goods\n-- ----------------------------\nDROP TABLE IF EXISTS `goods`;\nCREATE TABLE `goods` (\n  `id` int NOT NULL AUTO_INCREMENT,\n  `group_id` int NOT NULL COMMENT '所属分类id',\n  `gd_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品名称',\n  `gd_description` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品描述',\n  `gd_keywords` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品关键字',\n  `picture` text CHARACTER SET utf8 COLLATE utf8_unicode_ci COMMENT '商品图片',\n  `retail_price` decimal(10,2) DEFAULT '0.00' COMMENT '零售价',\n  `actual_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '实际售价',\n  `in_stock` int NOT NULL DEFAULT '0' COMMENT '库存',\n  `sales_volume` int DEFAULT '0' COMMENT '销量',\n  `ord` int DEFAULT '1' COMMENT '排序权重 越大越靠前',\n  `buy_limit_num` int NOT NULL DEFAULT '0' COMMENT '限制单次购买最大数量，0为不限制',\n  `buy_prompt` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '购买提示',\n  `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '商品描述',\n  `type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '商品类型  1自动发货 2人工处理',\n  `wholesale_price_cnf` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '批发价配置',\n  `other_ipu_cnf` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '其他输入框配置',\n  `api_hook` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '回调事件',\n  `is_open` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用，1是 0否',\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  `deleted_at` timestamp NULL DEFAULT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci COMMENT='商品表';\n\n-- ----------------------------\n-- Records of goods\n-- ----------------------------\nBEGIN;\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for goods_group\n-- ----------------------------\nDROP TABLE IF EXISTS `goods_group`;\nCREATE TABLE `goods_group` (\n  `id` int NOT NULL AUTO_INCREMENT,\n  `gp_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '分类名称',\n  `is_open` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用，1是 0否',\n  `ord` int NOT NULL DEFAULT '1' COMMENT '排序权重 越大越靠前',\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  `deleted_at` timestamp NULL DEFAULT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci COMMENT='商品分类表';\n\n-- ----------------------------\n-- Records of goods_group\n-- ----------------------------\nBEGIN;\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for migrations\n-- ----------------------------\nDROP TABLE IF EXISTS `migrations`;\nCREATE TABLE `migrations` (\n  `id` int unsigned NOT NULL AUTO_INCREMENT,\n  `migration` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n  `batch` int NOT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- ----------------------------\n-- Records of migrations\n-- ----------------------------\nBEGIN;\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for orders\n-- ----------------------------\nDROP TABLE IF EXISTS `orders`;\nCREATE TABLE `orders` (\n  `id` bigint NOT NULL AUTO_INCREMENT,\n  `order_sn` varchar(150) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '订单号',\n  `goods_id` int NOT NULL COMMENT '关联商品id',\n  `coupon_id` int DEFAULT '0' COMMENT '关联优惠码id',\n  `title` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '订单名称',\n  `type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1自动发货 2人工处理',\n  `goods_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '商品单价',\n  `buy_amount` int NOT NULL DEFAULT '1' COMMENT '购买数量',\n  `coupon_discount_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '优惠码优惠价格',\n  `wholesale_discount_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '批发价优惠',\n  `total_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '订单总价',\n  `actual_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '实际支付价格',\n  `search_pwd` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT '' COMMENT '查询密码',\n  `email` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '下单邮箱',\n  `info` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '订单详情',\n  `pay_id` int DEFAULT NULL COMMENT '支付通道id',\n  `buy_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '购买者下单IP地址',\n  `trade_no` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT '' COMMENT '第三方支付订单号',\n  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1待支付 2待处理 3处理中 4已完成 5处理失败 6异常 -1过期',\n  `coupon_ret_back` tinyint(1) NOT NULL DEFAULT '0' COMMENT '优惠码使用次数是否已经回退 0否 1是',\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  `deleted_at` timestamp NULL DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_order_sn` (`order_sn`) USING BTREE,\n  KEY `idx_goods_id` (`goods_id`) USING BTREE,\n  KEY `idex_email` (`email`) USING BTREE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci COMMENT='订单表';\n\n-- ----------------------------\n-- Records of orders\n-- ----------------------------\nBEGIN;\nCOMMIT;\n\n-- ----------------------------\n-- Table structure for pays\n-- ----------------------------\nDROP TABLE IF EXISTS `pays`;\nCREATE TABLE `pays` (\n  `id` int NOT NULL AUTO_INCREMENT,\n  `pay_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '支付名称',\n  `pay_check` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '支付标识',\n  `pay_method` tinyint(1) NOT NULL COMMENT '支付方式 1跳转 2扫码',\n  `pay_client` tinyint(1) NOT NULL DEFAULT '1' COMMENT '支付场景：1电脑pc 2手机 3全部',\n  `merchant_id` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商户 ID',\n  `merchant_key` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '商户 KEY',\n  `merchant_pem` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商户密钥',\n  `pay_handleroute` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '支付处理路由',\n  `is_open` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用 1是 0否',\n  `created_at` timestamp NULL DEFAULT NULL,\n  `updated_at` timestamp NULL DEFAULT NULL,\n  `deleted_at` timestamp NULL DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `idx_pay_check` (`pay_check`) USING BTREE\n) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- ----------------------------\n-- Records of pays\n-- ----------------------------\nBEGIN;\nINSERT INTO `pays` VALUES (1, '支付宝当面付', 'zfbf2f', 2, 3, '商户号', '支付宝公钥', '商户私钥', '/pay/alipay', 1, '2019-03-11 05:04:52', '2021-06-08 16:28:06', NULL);\nINSERT INTO `pays` VALUES (2, '支付宝 PC', 'aliweb', 1, 1, '商户号', '', '密钥', '/pay/alipay', 1, '2019-07-08 13:25:27', '2019-07-12 09:47:53', NULL);\nINSERT INTO `pays` VALUES (3, '码支付 QQ', 'mqq', 1, 1, '商户号', '', '密钥', '/pay/mapay', 1, '2019-07-11 09:05:27', '2019-07-11 12:13:11', NULL);\nINSERT INTO `pays` VALUES (4, '码支付支付宝', 'mzfb', 1, 1, '商户号', '', '密钥', '/pay/mapay', 1, '2019-07-11 09:06:02', '2019-07-11 12:12:58', NULL);\nINSERT INTO `pays` VALUES (5, '码支付微信', 'mwx', 1, 1, '商户号', '', '密钥', '/pay/mapay', 1, '2019-07-11 09:06:23', '2019-07-11 12:13:05', NULL);\nINSERT INTO `pays` VALUES (6, 'Paysapi 支付宝', 'pszfb', 1, 1, '商户号', '', '密钥', '/pay/paysapi', 1, '2019-07-11 09:31:12', '2019-07-11 09:31:12', NULL);\nINSERT INTO `pays` VALUES (7, 'Paysapi 微信', 'pswx', 1, 1, '商户号', '', '密钥', '/pay/paysapi', 1, '2019-07-11 09:31:43', '2019-07-11 09:31:43', NULL);\nINSERT INTO `pays` VALUES (8, '微信扫码', 'wescan', 2, 1, '商户号', '', '密钥', '/pay/wepay', 1, '2019-07-12 07:50:20', '2019-07-12 08:08:26', NULL);\nINSERT INTO `pays` VALUES (11, 'Payjs 微信扫码', 'payjswescan', 1, 1, '商户号', '', '密钥', '/pay/payjs', 1, '2019-07-25 07:28:42', '2019-08-20 12:17:58', NULL);\nINSERT INTO `pays` VALUES (14, '易支付-支付宝', 'alipay', 1, 1, '商户号', '', '密钥', '/pay/yipay', 2, '2020-01-10 15:22:56', '2020-01-11 06:33:07', NULL);\nINSERT INTO `pays` VALUES (15, '易支付-微信', 'wxpay', 1, 1, '商户号', NULL, '密钥', '/pay/yipay', 1, '2020-07-14 16:27:06', NULL, NULL);\nINSERT INTO `pays` VALUES (16, '易支付-QQ 钱包', 'qqpay', 1, 1, '商户号', NULL, '密钥', '/pay/yipay', 1, '2020-07-14 16:27:03', NULL, NULL);\nINSERT INTO `pays` VALUES (17, 'PayPal', 'paypal', 1, 1, '商户号', NULL, '密钥', '/pay/paypal', 1, '2020-07-14 16:25:20', NULL, NULL);\nINSERT INTO `pays` VALUES (19, 'V 免签支付宝', 'vzfb', 1, 1, 'V 免签通讯密钥', NULL, 'V 免签地址 例如 https://vpay.qq.com/    结尾必须有/', 'pay/vpay', 1, '2020-05-01 13:15:56', '2020-05-01 13:18:29', NULL);\nINSERT INTO `pays` VALUES (20, 'V 免签微信', 'vwx', 1, 1, 'V 免签通讯密钥', NULL, 'V 免签地址 例如 https://vpay.qq.com/    结尾必须有/', 'pay/vpay', 1, '2020-05-01 13:17:28', '2020-05-01 13:18:38', NULL);\nINSERT INTO `pays` VALUES (21, 'Stripe[微信支付宝]', 'stripe', 1, 1, 'pk开头的可发布密钥', NULL, 'sk开头的密钥', 'pay/stripe', 1, '2020-10-29 13:15:56', '2020-10-29 13:18:29', NULL);\nINSERT INTO `pays` VALUES (22, 'Coinbase[加密货币]', 'coinbase', 1, 3, '费率', 'API密钥', '共享密钥', 'pay/coinbase', 0, '2021-08-15 13:15:56', '2021-10-12 13:15:56', NULL);\nINSERT INTO `pays` VALUES (23, 'Epusdt[trc20]', 'epusdt', 1, 3, 'API密钥', '不填即可', 'api请求地址', 'pay/epusdt', 0, '2022-03-22 13:15:56', '2022-03-22 13:15:56', NULL);\n\nINSERT INTO `pays` VALUES (24,'TRX', 'tokenpay-trx', 1, 3, 'TRX', '你的API密钥', 'https://token-pay.xxx.com', 'pay/tokenpay', 1, now(), now(), NULL);\nINSERT INTO `pays` VALUES (25,'USDT-TRC20', 'tokenpay-usdt-trc', 1, 3, 'USDT_TRC20', '你的API密钥', 'https://token-pay.xxx.com', 'pay/tokenpay', 1, now(), now(), NULL);\nINSERT INTO `pays` VALUES (26,'ETH', 'tokenpay-eth', 1, 3, 'EVM_ETH_ETH', '你的API密钥', 'https://token-pay.xxx.com', 'pay/tokenpay', 1, now(), now(), NULL);\nINSERT INTO `pays` VALUES (27,'USDT-ERC20', 'tokenpay-usdt-eth', 1, 3, 'EVM_ETH_USDT_ERC20', '你的API密钥', 'https://token-pay.xxx.com', 'pay/tokenpay', 1, now(), now(), NULL);\nINSERT INTO `pays` VALUES (28,'USDC-ERC20', 'tokenpay-usdc-eth', 1, 3, 'EVM_ETH_USDC_ERC20', '你的API密钥', 'https://token-pay.xxx.com', 'pay/tokenpay', 1, now(), now(), NULL);\nINSERT INTO `pays` VALUES (29,'BNB', 'tokenpay-bnb', 1, 3, 'EVM_BSC_BNB', '你的API密钥', 'https://token-pay.xxx.com', 'pay/tokenpay', 1, now(), now(), NULL);\nINSERT INTO `pays` VALUES (30,'USDT-BSC', 'tokenpay-usdt-bsc', 1, 3, 'EVM_BSC_USDT_BEP20', '你的API密钥', 'https://token-pay.xxx.com', 'pay/tokenpay', 1, now(), now(), NULL);\nINSERT INTO `pays` VALUES (31,'USDC-BSC', 'tokenpay-usdc-bsc', 1, 3, 'EVM_BSC_USDC_BEP20', '你的API密钥', 'https://token-pay.xxx.com', 'pay/tokenpay', 1, now(), now(), NULL);\nINSERT INTO `pays` VALUES (32,'MATIC', 'tokenpay-matic', 1, 3, 'EVM_Polygon_MATIC', '你的API密钥', 'https://token-pay.xxx.com', 'pay/tokenpay', 1, now(), now(), NULL);\nINSERT INTO `pays` VALUES (33,'USDT-Polygon', 'tokenpay-usdt-polygon', 1, 3, 'EVM_Polygon_USDT_ERC20', '你的API密钥', 'https://token-pay.xxx.com', 'pay/tokenpay', 1, now(), now(), NULL);\nINSERT INTO `pays` VALUES (34,'USDC-Polygon', 'tokenpay-usdc-polygon', 1, 3, 'EVM_Polygon_USDC_ERC20', '你的API密钥', 'https://token-pay.xxx.com', 'pay/tokenpay', 1, now(), now(), NULL);\n\n-- ----------------------------\nCOMMIT;\n\nSET FOREIGN_KEY_CHECKS = 1;\n"
  },
  {
    "path": "dcat_admin_ide_helper.php",
    "content": "<?php\n\n/**\n * A helper file for Dcat Admin, to provide autocomplete information to your IDE\n *\n * This file should not be included in your code, only analyzed by your IDE!\n *\n * @author jqh <841324345@qq.com>\n */\nnamespace Dcat\\Admin {\n    use Illuminate\\Support\\Collection;\n\n    /**\n     * @property Grid\\Column|Collection id\n     * @property Grid\\Column|Collection wholesale_price_cnf\n     * @property Grid\\Column|Collection other_ipu_cnf\n     * @property Grid\\Column|Collection api_hook\n     * @property Grid\\Column|Collection created_at\n     * @property Grid\\Column|Collection detail\n     * @property Grid\\Column|Collection name\n     * @property Grid\\Column|Collection type\n     * @property Grid\\Column|Collection updated_at\n     * @property Grid\\Column|Collection version\n     * @property Grid\\Column|Collection is_enabled\n     * @property Grid\\Column|Collection extension\n     * @property Grid\\Column|Collection icon\n     * @property Grid\\Column|Collection order\n     * @property Grid\\Column|Collection parent_id\n     * @property Grid\\Column|Collection uri\n     * @property Grid\\Column|Collection menu_id\n     * @property Grid\\Column|Collection permission_id\n     * @property Grid\\Column|Collection http_method\n     * @property Grid\\Column|Collection http_path\n     * @property Grid\\Column|Collection slug\n     * @property Grid\\Column|Collection role_id\n     * @property Grid\\Column|Collection user_id\n     * @property Grid\\Column|Collection value\n     * @property Grid\\Column|Collection avatar\n     * @property Grid\\Column|Collection password\n     * @property Grid\\Column|Collection remember_token\n     * @property Grid\\Column|Collection username\n     * @property Grid\\Column|Collection carmi\n     * @property Grid\\Column|Collection deleted_at\n     * @property Grid\\Column|Collection goods_id\n     * @property Grid\\Column|Collection status\n     * @property Grid\\Column|Collection coupon\n     * @property Grid\\Column|Collection discount\n     * @property Grid\\Column|Collection is_open\n     * @property Grid\\Column|Collection is_use\n     * @property Grid\\Column|Collection ret\n     * @property Grid\\Column|Collection coupons_id\n     * @property Grid\\Column|Collection tpl_content\n     * @property Grid\\Column|Collection tpl_name\n     * @property Grid\\Column|Collection tpl_token\n     * @property Grid\\Column|Collection connection\n     * @property Grid\\Column|Collection exception\n     * @property Grid\\Column|Collection failed_at\n     * @property Grid\\Column|Collection payload\n     * @property Grid\\Column|Collection queue\n     * @property Grid\\Column|Collection actual_price\n     * @property Grid\\Column|Collection buy_limit_num\n     * @property Grid\\Column|Collection buy_prompt\n     * @property Grid\\Column|Collection gd_name\n     * @property Grid\\Column|Collection group_id\n     * @property Grid\\Column|Collection in_stock\n     * @property Grid\\Column|Collection ord\n     * @property Grid\\Column|Collection picture\n     * @property Grid\\Column|Collection retail_price\n     * @property Grid\\Column|Collection sales_volume\n     * @property Grid\\Column|Collection gp_name\n     * @property Grid\\Column|Collection buy_amount\n     * @property Grid\\Column|Collection buy_ip\n     * @property Grid\\Column|Collection coupon_discount_price\n     * @property Grid\\Column|Collection coupon_id\n     * @property Grid\\Column|Collection email\n     * @property Grid\\Column|Collection goods_price\n     * @property Grid\\Column|Collection info\n     * @property Grid\\Column|Collection order_sn\n     * @property Grid\\Column|Collection pay_id\n     * @property Grid\\Column|Collection search_pwd\n     * @property Grid\\Column|Collection total_price\n     * @property Grid\\Column|Collection trade_no\n     * @property Grid\\Column|Collection wholesale_discount_price\n     * @property Grid\\Column|Collection merchant_id\n     * @property Grid\\Column|Collection merchant_key\n     * @property Grid\\Column|Collection merchant_pem\n     * @property Grid\\Column|Collection pay_check\n     * @property Grid\\Column|Collection pay_client\n     * @property Grid\\Column|Collection pay_handleroute\n     * @property Grid\\Column|Collection pay_method\n     * @property Grid\\Column|Collection pay_name\n     *\n     * @method Grid\\Column|Collection id(string $label = null)\n     * @method Grid\\Column|Collection wholesale_price_cnf(string $label = null)\n     * @method Grid\\Column|Collection other_ipu_cnf(string $label = null)\n     * @method Grid\\Column|Collection api_hook(string $label = null)\n     * @method Grid\\Column|Collection created_at(string $label = null)\n     * @method Grid\\Column|Collection detail(string $label = null)\n     * @method Grid\\Column|Collection name(string $label = null)\n     * @method Grid\\Column|Collection type(string $label = null)\n     * @method Grid\\Column|Collection updated_at(string $label = null)\n     * @method Grid\\Column|Collection version(string $label = null)\n     * @method Grid\\Column|Collection is_enabled(string $label = null)\n     * @method Grid\\Column|Collection extension(string $label = null)\n     * @method Grid\\Column|Collection icon(string $label = null)\n     * @method Grid\\Column|Collection order(string $label = null)\n     * @method Grid\\Column|Collection parent_id(string $label = null)\n     * @method Grid\\Column|Collection uri(string $label = null)\n     * @method Grid\\Column|Collection menu_id(string $label = null)\n     * @method Grid\\Column|Collection permission_id(string $label = null)\n     * @method Grid\\Column|Collection http_method(string $label = null)\n     * @method Grid\\Column|Collection http_path(string $label = null)\n     * @method Grid\\Column|Collection slug(string $label = null)\n     * @method Grid\\Column|Collection role_id(string $label = null)\n     * @method Grid\\Column|Collection user_id(string $label = null)\n     * @method Grid\\Column|Collection value(string $label = null)\n     * @method Grid\\Column|Collection avatar(string $label = null)\n     * @method Grid\\Column|Collection password(string $label = null)\n     * @method Grid\\Column|Collection remember_token(string $label = null)\n     * @method Grid\\Column|Collection username(string $label = null)\n     * @method Grid\\Column|Collection carmi(string $label = null)\n     * @method Grid\\Column|Collection deleted_at(string $label = null)\n     * @method Grid\\Column|Collection goods_id(string $label = null)\n     * @method Grid\\Column|Collection status(string $label = null)\n     * @method Grid\\Column|Collection coupon(string $label = null)\n     * @method Grid\\Column|Collection discount(string $label = null)\n     * @method Grid\\Column|Collection is_open(string $label = null)\n     * @method Grid\\Column|Collection is_use(string $label = null)\n     * @method Grid\\Column|Collection ret(string $label = null)\n     * @method Grid\\Column|Collection coupons_id(string $label = null)\n     * @method Grid\\Column|Collection tpl_content(string $label = null)\n     * @method Grid\\Column|Collection tpl_name(string $label = null)\n     * @method Grid\\Column|Collection tpl_token(string $label = null)\n     * @method Grid\\Column|Collection connection(string $label = null)\n     * @method Grid\\Column|Collection exception(string $label = null)\n     * @method Grid\\Column|Collection failed_at(string $label = null)\n     * @method Grid\\Column|Collection payload(string $label = null)\n     * @method Grid\\Column|Collection queue(string $label = null)\n     * @method Grid\\Column|Collection actual_price(string $label = null)\n     * @method Grid\\Column|Collection buy_limit_num(string $label = null)\n     * @method Grid\\Column|Collection buy_prompt(string $label = null)\n     * @method Grid\\Column|Collection gd_name(string $label = null)\n     * @method Grid\\Column|Collection group_id(string $label = null)\n     * @method Grid\\Column|Collection in_stock(string $label = null)\n     * @method Grid\\Column|Collection ord(string $label = null)\n     * @method Grid\\Column|Collection picture(string $label = null)\n     * @method Grid\\Column|Collection retail_price(string $label = null)\n     * @method Grid\\Column|Collection sales_volume(string $label = null)\n     * @method Grid\\Column|Collection gp_name(string $label = null)\n     * @method Grid\\Column|Collection buy_amount(string $label = null)\n     * @method Grid\\Column|Collection buy_ip(string $label = null)\n     * @method Grid\\Column|Collection coupon_discount_price(string $label = null)\n     * @method Grid\\Column|Collection coupon_id(string $label = null)\n     * @method Grid\\Column|Collection email(string $label = null)\n     * @method Grid\\Column|Collection goods_price(string $label = null)\n     * @method Grid\\Column|Collection info(string $label = null)\n     * @method Grid\\Column|Collection order_sn(string $label = null)\n     * @method Grid\\Column|Collection pay_id(string $label = null)\n     * @method Grid\\Column|Collection search_pwd(string $label = null)\n     * @method Grid\\Column|Collection total_price(string $label = null)\n     * @method Grid\\Column|Collection trade_no(string $label = null)\n     * @method Grid\\Column|Collection wholesale_discount_price(string $label = null)\n     * @method Grid\\Column|Collection merchant_id(string $label = null)\n     * @method Grid\\Column|Collection merchant_key(string $label = null)\n     * @method Grid\\Column|Collection merchant_pem(string $label = null)\n     * @method Grid\\Column|Collection pay_check(string $label = null)\n     * @method Grid\\Column|Collection pay_client(string $label = null)\n     * @method Grid\\Column|Collection pay_handleroute(string $label = null)\n     * @method Grid\\Column|Collection pay_method(string $label = null)\n     * @method Grid\\Column|Collection pay_name(string $label = null)\n     */\n    class Grid {}\n\n    class MiniGrid extends Grid {}\n\n    /**\n     * @property Show\\Field|Collection id\n     * @property Show\\Field|Collection wholesale_price_cnf\n     * @property Show\\Field|Collection other_ipu_cnf\n     * @property Show\\Field|Collection api_hook\n     * @property Show\\Field|Collection created_at\n     * @property Show\\Field|Collection detail\n     * @property Show\\Field|Collection name\n     * @property Show\\Field|Collection type\n     * @property Show\\Field|Collection updated_at\n     * @property Show\\Field|Collection version\n     * @property Show\\Field|Collection is_enabled\n     * @property Show\\Field|Collection extension\n     * @property Show\\Field|Collection icon\n     * @property Show\\Field|Collection order\n     * @property Show\\Field|Collection parent_id\n     * @property Show\\Field|Collection uri\n     * @property Show\\Field|Collection menu_id\n     * @property Show\\Field|Collection permission_id\n     * @property Show\\Field|Collection http_method\n     * @property Show\\Field|Collection http_path\n     * @property Show\\Field|Collection slug\n     * @property Show\\Field|Collection role_id\n     * @property Show\\Field|Collection user_id\n     * @property Show\\Field|Collection value\n     * @property Show\\Field|Collection avatar\n     * @property Show\\Field|Collection password\n     * @property Show\\Field|Collection remember_token\n     * @property Show\\Field|Collection username\n     * @property Show\\Field|Collection carmi\n     * @property Show\\Field|Collection deleted_at\n     * @property Show\\Field|Collection goods_id\n     * @property Show\\Field|Collection status\n     * @property Show\\Field|Collection coupon\n     * @property Show\\Field|Collection discount\n     * @property Show\\Field|Collection is_open\n     * @property Show\\Field|Collection is_use\n     * @property Show\\Field|Collection ret\n     * @property Show\\Field|Collection coupons_id\n     * @property Show\\Field|Collection tpl_content\n     * @property Show\\Field|Collection tpl_name\n     * @property Show\\Field|Collection tpl_token\n     * @property Show\\Field|Collection connection\n     * @property Show\\Field|Collection exception\n     * @property Show\\Field|Collection failed_at\n     * @property Show\\Field|Collection payload\n     * @property Show\\Field|Collection queue\n     * @property Show\\Field|Collection actual_price\n     * @property Show\\Field|Collection buy_limit_num\n     * @property Show\\Field|Collection buy_prompt\n     * @property Show\\Field|Collection gd_name\n     * @property Show\\Field|Collection group_id\n     * @property Show\\Field|Collection in_stock\n     * @property Show\\Field|Collection ord\n     * @property Show\\Field|Collection picture\n     * @property Show\\Field|Collection retail_price\n     * @property Show\\Field|Collection sales_volume\n     * @property Show\\Field|Collection gp_name\n     * @property Show\\Field|Collection buy_amount\n     * @property Show\\Field|Collection buy_ip\n     * @property Show\\Field|Collection coupon_discount_price\n     * @property Show\\Field|Collection coupon_id\n     * @property Show\\Field|Collection email\n     * @property Show\\Field|Collection goods_price\n     * @property Show\\Field|Collection info\n     * @property Show\\Field|Collection order_sn\n     * @property Show\\Field|Collection pay_id\n     * @property Show\\Field|Collection search_pwd\n     * @property Show\\Field|Collection total_price\n     * @property Show\\Field|Collection trade_no\n     * @property Show\\Field|Collection wholesale_discount_price\n     * @property Show\\Field|Collection merchant_id\n     * @property Show\\Field|Collection merchant_key\n     * @property Show\\Field|Collection merchant_pem\n     * @property Show\\Field|Collection pay_check\n     * @property Show\\Field|Collection pay_client\n     * @property Show\\Field|Collection pay_handleroute\n     * @property Show\\Field|Collection pay_method\n     * @property Show\\Field|Collection pay_name\n     *\n     * @method Show\\Field|Collection id(string $label = null)\n     * @method Show\\Field|Collection wholesale_price_cnf(string $label = null)\n     * @method Show\\Field|Collection other_ipu_cnf(string $label = null)\n     * @method Show\\Field|Collection api_hook(string $label = null)\n     * @method Show\\Field|Collection created_at(string $label = null)\n     * @method Show\\Field|Collection detail(string $label = null)\n     * @method Show\\Field|Collection name(string $label = null)\n     * @method Show\\Field|Collection type(string $label = null)\n     * @method Show\\Field|Collection updated_at(string $label = null)\n     * @method Show\\Field|Collection version(string $label = null)\n     * @method Show\\Field|Collection is_enabled(string $label = null)\n     * @method Show\\Field|Collection extension(string $label = null)\n     * @method Show\\Field|Collection icon(string $label = null)\n     * @method Show\\Field|Collection order(string $label = null)\n     * @method Show\\Field|Collection parent_id(string $label = null)\n     * @method Show\\Field|Collection uri(string $label = null)\n     * @method Show\\Field|Collection menu_id(string $label = null)\n     * @method Show\\Field|Collection permission_id(string $label = null)\n     * @method Show\\Field|Collection http_method(string $label = null)\n     * @method Show\\Field|Collection http_path(string $label = null)\n     * @method Show\\Field|Collection slug(string $label = null)\n     * @method Show\\Field|Collection role_id(string $label = null)\n     * @method Show\\Field|Collection user_id(string $label = null)\n     * @method Show\\Field|Collection value(string $label = null)\n     * @method Show\\Field|Collection avatar(string $label = null)\n     * @method Show\\Field|Collection password(string $label = null)\n     * @method Show\\Field|Collection remember_token(string $label = null)\n     * @method Show\\Field|Collection username(string $label = null)\n     * @method Show\\Field|Collection carmi(string $label = null)\n     * @method Show\\Field|Collection deleted_at(string $label = null)\n     * @method Show\\Field|Collection goods_id(string $label = null)\n     * @method Show\\Field|Collection status(string $label = null)\n     * @method Show\\Field|Collection coupon(string $label = null)\n     * @method Show\\Field|Collection discount(string $label = null)\n     * @method Show\\Field|Collection is_open(string $label = null)\n     * @method Show\\Field|Collection is_use(string $label = null)\n     * @method Show\\Field|Collection ret(string $label = null)\n     * @method Show\\Field|Collection coupons_id(string $label = null)\n     * @method Show\\Field|Collection tpl_content(string $label = null)\n     * @method Show\\Field|Collection tpl_name(string $label = null)\n     * @method Show\\Field|Collection tpl_token(string $label = null)\n     * @method Show\\Field|Collection connection(string $label = null)\n     * @method Show\\Field|Collection exception(string $label = null)\n     * @method Show\\Field|Collection failed_at(string $label = null)\n     * @method Show\\Field|Collection payload(string $label = null)\n     * @method Show\\Field|Collection queue(string $label = null)\n     * @method Show\\Field|Collection actual_price(string $label = null)\n     * @method Show\\Field|Collection buy_limit_num(string $label = null)\n     * @method Show\\Field|Collection buy_prompt(string $label = null)\n     * @method Show\\Field|Collection gd_name(string $label = null)\n     * @method Show\\Field|Collection group_id(string $label = null)\n     * @method Show\\Field|Collection in_stock(string $label = null)\n     * @method Show\\Field|Collection ord(string $label = null)\n     * @method Show\\Field|Collection picture(string $label = null)\n     * @method Show\\Field|Collection retail_price(string $label = null)\n     * @method Show\\Field|Collection sales_volume(string $label = null)\n     * @method Show\\Field|Collection gp_name(string $label = null)\n     * @method Show\\Field|Collection buy_amount(string $label = null)\n     * @method Show\\Field|Collection buy_ip(string $label = null)\n     * @method Show\\Field|Collection coupon_discount_price(string $label = null)\n     * @method Show\\Field|Collection coupon_id(string $label = null)\n     * @method Show\\Field|Collection email(string $label = null)\n     * @method Show\\Field|Collection goods_price(string $label = null)\n     * @method Show\\Field|Collection info(string $label = null)\n     * @method Show\\Field|Collection order_sn(string $label = null)\n     * @method Show\\Field|Collection pay_id(string $label = null)\n     * @method Show\\Field|Collection search_pwd(string $label = null)\n     * @method Show\\Field|Collection total_price(string $label = null)\n     * @method Show\\Field|Collection trade_no(string $label = null)\n     * @method Show\\Field|Collection wholesale_discount_price(string $label = null)\n     * @method Show\\Field|Collection merchant_id(string $label = null)\n     * @method Show\\Field|Collection merchant_key(string $label = null)\n     * @method Show\\Field|Collection merchant_pem(string $label = null)\n     * @method Show\\Field|Collection pay_check(string $label = null)\n     * @method Show\\Field|Collection pay_client(string $label = null)\n     * @method Show\\Field|Collection pay_handleroute(string $label = null)\n     * @method Show\\Field|Collection pay_method(string $label = null)\n     * @method Show\\Field|Collection pay_name(string $label = null)\n     */\n    class Show {}\n\n    /**\n     \n     */\n    class Form {}\n\n}\n\nnamespace Dcat\\Admin\\Grid {\n    /**\n     \n     */\n    class Column {}\n\n    /**\n     \n     */\n    class Filter {}\n}\n\nnamespace Dcat\\Admin\\Show {\n    /**\n     \n     */\n    class Field {}\n}\n"
  },
  {
    "path": "debian_manual.md",
    "content": "## 写在前面\n\n- 此教程专为有洁癖的宝宝们准备。不使用任何一键安装脚本。面板党可以退散了！！\n- 本人测试环境是 Debian 11 其他的没测试。\n## 手动安装lnmp\n- 更新源\n\n```bash  \napt update  \napt upgrade\n``` \n\n- 安装Nginx\n```bash\napt install nginx\n```\n- 安装Mariadb\n```bash\napt install mariadb-server\n```\n- 配置Mariadb\n```bash\nmysql_secure_installation\n```\n根据提示操作即可。\n- 创建数据库\n```bash\nmariadb\n```\n之后会显示\n```bash\nWelcome to the MariaDB monitor.  Commands end with ; or \\g.\nYour MariaDB connection id is 74\nServer version: 10.3.15-MariaDB-1 Debian 10\nCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\nMariaDB [(none)]> \n```\n接下来输入命令 \n```sql\nCREATE DATABASE [这里替换为数据库名] ;\nGRANT ALL ON [这里替换为数据库名].* TO '[这里替换为用户名]'@'localhost' IDENTIFIED BY '[这里替换为密码]' WITH GRANT OPTION;\nFLUSH PRIVILEGES;\nEXIT\n```\n- 安装PHP7.4\n```bash\napt install php php-fpm php-mysql php-gd php-zip php-opcache php-curl php-mbstring php-intl php-dom php-bcmath php-redis php-fileinfo\n```\n- 安装redis\n```bash\napt install redis\n```\n- 启用函数\n`nano /etc/php/7.4/fpm/php.ini`,`ctrl+w` 搜索 `putenv`，`proc_open`，`pcntl_signal`，`pcntl_alarm` 在`disable_functions` 一行 有就去掉。\n之后 `/etc/init.d/php7.4-fpm reload` \n\n## 下载源代码\n```bash\ncd /var/www/dujiaoka\napt install git\ngit clone https://github.com/assimon/dujiaoka.git \nchmod 777 -R /var/www/dujiaoka\n```\n## 配置 nginx\n- 假设你的域名是：`domain.com`\n- 假设你的网站目录是：`/home/wwwroot/dujiaoka`\n- 配置文件的存放目录是：`/usr/local/nginx/conf/vhost`\n- 按下文教程配置时，注意修改演示配置中的域名和目录\n\n```bash\nnano /etc/nginx/sites-enabled/dujiaoka \n```\n你可以参考我的配置文件\n```bash\nserver\n    {\n        listen 80;\n\tlisten [::]:80;\n        server_name domain.com ;\n        return 301 https://$server_name$request_uri;\n    }\n\nserver\n    {\n        listen 443 ssl http2;\n\tlisten [::]:443 ssl http2;\n        server_name domain.com ;\n        index index.html index.htm index.php default.html default.htm default.php;\n        root  /var/www/dujiaoka/public;\n        ssl_certificate /etc/nginx/sslcert/cert.crt;\n        ssl_certificate_key /etc/nginx/sslcert/key.key;\n        # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048\n        #ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;\n\n        location / {\n    try_files $uri $uri/ /index.php?$query_string;\n}\n        #error_page   404   /404.html;\n\n        # Deny access to PHP files in specific directory\n        #location ~ /(wp-content|uploads|wp-includes|images)/.*\\.php$ { deny all; }\n\n        location ~ [^/]\\.php(/|$)\n        {\n          \n            fastcgi_pass  unix:/var/run/php/php7.4-fpm.sock;\n           \n            include snippets/fastcgi-php.conf;\n        }\n\n\n        location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf)$\n        {\n            expires      30d;\n        }\n\n        location ~ .*\\.(js|css)?$\n        {\n            expires      12h;\n        }\n\n        location ~ /.well-known {\n            allow all;\n        }\n\n        location ~ /\\.\n        {\n            deny all;\n        }\n\n        access_log off;\n    }\n\n```\n在 `/etc/nginx/sslcert/` 上传你的https证书 之后 `nginx -t` 没有报错就重启nginx `/etc/init.d/nginx restart`\n\n## composer 安装\n```bash\ncd /var/www/dujiaoka\nphp -r \"copy('https://getcomposer.org/installer', 'composer-setup.php');\"\nphp composer-setup.php\nphp -r \"unlink('composer-setup.php');\"\nmv composer.phar /usr/local/bin/composer\nadduser user\nsu user\ncomposer install\ncomposer update\nsu\n```\n## 访问安装页面\n访问你的域名，进行安装\n- MySQL 数据库名：`dujiaoka`\n- MySQl 密码：`你设置的密码`\n- Redis 密码：`无需填写`\n- 网站URL：你的域名，如 `https://domain.com`\n\n##编辑配置文件\n\n编辑 `/var/www/dujiaoka/.env`\n- 将 `APP_DEBUG=true` 改为 `APP_DEBUG=false`\n- 另起一行，添加 `ADMIN_HTTPS=true`\n- 尝试登入后台。如果提示 `0 error` ，刷新页面即可\n\n## 配置 Supervisor\n先安装\n```bash\napt install supervisor\n```\n创建配置文件\n```bash\nnano /etc/supervisor/conf.d/dujiaoka.conf\n```\n写入配置文件\n\n- 注意修改网站目录\n```bash\n[program:laravel-worker]\nprocess_name=%(program_name)s_%(process_num)02d\ncommand=php /home/wwwroot/dujiaoka/artisan queue:work\nautostart=true\nautorestart=true\nuser=www\nnumprocs=1\nredirect_stderr=true\nstdout_logfile=/home/wwwlogs/worker.log\n```\n启动\n```bash\nsupervisorctl reread\nsupervisorctl update\nsupervisorctl start laravel-worker:*\n```\n## 参考来源\nhttps://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mariadb-php-lemp-stack-on-debian-10\nhttps://github.com/assimon/dujiaoka/wiki/2.x_linux_install\n"
  },
  {
    "path": "docker-compose.yml",
    "content": "version: \"2.2\"\nservices:\n  web:\n    build: .\n    container_name: dujiaoka\n    ports:\n      - \"80:80\"\n      - \"9000:9000\"\n    volumes:\n      # 增加此行，则将环境信息进行复制到容器，请确保你存在该文件\n      - ${DATA_DIR}/dujiaoka/.env:/app/.env\n      # 增加此行，避免每次重新创建容器都需要初始化\n      - ${DATA_DIR}/dujiaoka/install.lock:/app/install.lock\n      # 增加此行，确保将上传的资源映射出来，避免容器重新创建后图片不在了\n      - ${DATA_DIR}/dujiaoka/public/uploads:/app/public/uploads\n    environment:\n      WEB_DOCUMENT_ROOT: \"/app/public\"\n      TZ: Asia/Shanghai\n    tty: true\n    restart: always\n"
  },
  {
    "path": "package.json",
    "content": "{\n    \"private\": true,\n    \"scripts\": {\n        \"dev\": \"npm run development\",\n        \"development\": \"cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --config=node_modules/laravel-mix/setup/webpack.config.js\",\n        \"watch\": \"npm run development -- --watch\",\n        \"watch-poll\": \"npm run watch -- --watch-poll\",\n        \"hot\": \"cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --disable-host-check --config=node_modules/laravel-mix/setup/webpack.config.js\",\n        \"prod\": \"npm run production\",\n        \"production\": \"cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --config=node_modules/laravel-mix/setup/webpack.config.js\"\n    },\n    \"devDependencies\": {\n        \"axios\": \"^0.19\",\n        \"cross-env\": \"^7.0\",\n        \"laravel-mix\": \"^5.0.1\",\n        \"lodash\": \"^4.17.19\",\n        \"resolve-url-loader\": \"^3.1.0\",\n        \"sass\": \"^1.15.2\",\n        \"sass-loader\": \"^8.0.0\"\n    }\n}\n"
  },
  {
    "path": "phpunit.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<phpunit xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:noNamespaceSchemaLocation=\"./vendor/phpunit/phpunit/phpunit.xsd\"\n         bootstrap=\"vendor/autoload.php\"\n         colors=\"true\">\n    <testsuites>\n        <testsuite name=\"Unit\">\n            <directory suffix=\"Test.php\">./tests/Unit</directory>\n        </testsuite>\n\n        <testsuite name=\"Feature\">\n            <directory suffix=\"Test.php\">./tests/Feature</directory>\n        </testsuite>\n    </testsuites>\n    <filter>\n        <whitelist processUncoveredFilesFromWhitelist=\"true\">\n            <directory suffix=\".php\">./app</directory>\n        </whitelist>\n    </filter>\n    <php>\n        <server name=\"APP_ENV\" value=\"testing\"/>\n        <server name=\"BCRYPT_ROUNDS\" value=\"4\"/>\n        <server name=\"CACHE_DRIVER\" value=\"array\"/>\n        <server name=\"DB_CONNECTION\" value=\"sqlite\"/>\n        <server name=\"DB_DATABASE\" value=\":memory:\"/>\n        <server name=\"MAIL_DRIVER\" value=\"array\"/>\n        <server name=\"QUEUE_CONNECTION\" value=\"sync\"/>\n        <server name=\"SESSION_DRIVER\" value=\"array\"/>\n    </php>\n</phpunit>\n"
  },
  {
    "path": "public/.htaccess",
    "content": "<IfModule mod_rewrite.c>\n    <IfModule mod_negotiation.c>\n        Options -MultiViews -Indexes\n    </IfModule>\n\n    RewriteEngine On\n\n    # Handle Authorization Header\n    RewriteCond %{HTTP:Authorization} .\n    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]\n\n    # Redirect Trailing Slashes If Not A Folder...\n    RewriteCond %{REQUEST_FILENAME} !-d\n    RewriteCond %{REQUEST_URI} (.+)/$\n    RewriteRule ^ %1 [L,R=301]\n\n    # Handle Front Controller...\n    RewriteCond %{REQUEST_FILENAME} !-d\n    RewriteCond %{REQUEST_FILENAME} !-f\n    RewriteRule ^ index.php [L]\n</IfModule>\n"
  },
  {
    "path": "public/assets/hyper/css/hyper-loading.css",
    "content": "#loading {\n\tbackground-color: #eee;\n\theight: 100%;\n\twidth: 100%;\n\tposition: fixed;\n\tz-index: 1;\n\tmargin-top: 0px;\n\ttop: 0px;\n}\n#loading-center {\n\twidth:100%;\n\theight:100%;\n\tposition:relative;\n}\n#loading-center-absolute {\n\tposition:absolute;\n\tleft:50%;\n\ttop:50%;\n\theight:150px;\n\twidth:150px;\n\tmargin-top:-75px;\n\tmargin-left:-75px;\n}\n.object {\n\twidth:20px;\n\theight:20px;\n\tbackground-color:#313a46;\n\tfloat:left;\n\tmargin-right:20px;\n\tmargin-top:65px;\n\t-moz-border-radius:50% 50% 50% 50%;\n\t-webkit-border-radius:50% 50% 50% 50%;\n\tborder-radius:50% 50% 50% 50%;\n}\n#object_one {\n\t-webkit-animation:object_one 1.5s infinite;\n\tanimation:object_one 1.5s infinite;\n}\n#object_two {\n\t-webkit-animation:object_two 1.5s infinite;\n\tanimation:object_two 1.5s infinite;\n\t-webkit-animation-delay:0.25s;\n\tanimation-delay:0.25s;\n}\n#object_three {\n\t-webkit-animation:object_three 1.5s infinite;\n\tanimation:object_three 1.5s infinite;\n\t-webkit-animation-delay:0.5s;\n\tanimation-delay:0.5s;\n}\n@-webkit-keyframes object_one {\n\t75% {\n\t-webkit-transform:scale(0);\n}\n}@keyframes object_one {\n\t75% {\n\ttransform:scale(0);\n\t-webkit-transform:scale(0);\n}\n}@-webkit-keyframes object_two {\n\t75% {\n\t-webkit-transform:scale(0);\n}\n}@keyframes object_two {\n\t75% {\n\ttransform:scale(0);\n\t-webkit-transform:scale(0);\n}\n}@-webkit-keyframes object_three {\n\t75% {\n\t-webkit-transform:scale(0);\n}\n}@keyframes object_three {\n\t75% {\n\ttransform:scale(0);\n\t-webkit-transform:scale(0);\n}\n}"
  },
  {
    "path": "public/assets/hyper/css/hyper.css",
    "content": "/* app-creative.min.css */\n.modal-header {\n    padding: 6px 12px !important;\n}\n.btn-danger:focus,\n.btn-danger:not(:disabled):not(.disabled):active:focus,\n.btn-outline-primary:focus,\n.btn-primary:focus,\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus,\n.btn-primary:not(:disabled):not(.disabled):active:focus {\n    box-shadow: none;\n}\nbody, .wrapper, .content-page {\n    overflow: visible;\n}\n\n/* header */\n.header-navbar {\n    height: 70px;\n    background-color: #fff;\n    box-shadow: 0 0 35px 0 rgb(154 161 171 / 15%);\n}\n.header-flex {\n    height: 70px;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n}\n.logo-title {\n    font-size: 24px;\n    font-weight: 700;\n    display: inline-block;\n    color: #000;\n    margin-left: 10px;\n    vertical-align: middle;\n    font-family: \"SimHei\";\n}\n\nbody {\n    background-color: #fafafa;\n    height: 100%;\n}\nbody[data-leftbar-compact-mode=condensed] {\n    min-height: 0;\n}\nbody[data-layout=topnav] .content-page {\n    padding: 0!important;\n    min-height: 0;\n}\n.content {\n    margin-bottom: 69px;\n}\n.page-title-right {\n    display: block !important;\n    float: right !important;\n    margin-top: 17px !important;\n}\n@media screen and (max-width: 380px) {\n    .app-search {\n        width: 160px;\n    }\n}\n.hyper-wrapper a {\n    color: #000;\n}\n.hyper-footer {\n    position: absolute;\n    width: 100%;\n    bottom: 0;\n    padding: 20px 0;\n    line-height: 16px;\n    border-top: 1px solid rgba(152,166,173,.2);\n    color: #98a6ad;\n}\n@media screen and (max-width: 768px) {\n    .hyper-footer {\n        text-align: center;\n    }\n}\n.hyper-footer a {\n    color: #919ca7;\n}\n@media screen and (max-width: 576px) {\n    .container {\n       padding: 0 12px; \n    }\n}\n@media screen and (min-width: 576px) {\n    .container {\n       padding: 0; \n    }\n}\n@media screen and (min-width: 992px) {\n    .hyper-sm-last {\n        -webkit-box-ordinal-group: 14;\n        -ms-flex-order: 13;\n        order: 13;\n    }\n}\n\n/* Home Page */\n\n/* modal-dialog */\n.modal-body img {\n    max-width: 100%;\n    height: auto;\n}\n@media screen and (min-width: 1367px) {\n    .modal-dialog {\n        max-width: 900px !important;\n    }\n}\n@media screen and (max-width: 1367px) {\n    .modal-dialog {\n        max-width: 700px !important;\n    }\n}\n@media screen and (max-width: 768px) {\n    .modal-dialog {\n        max-width: 500px !important;\n    }\n}\n\n/* Select Button */\n\n.nav-list {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 6px;\n    margin-bottom: 12px;\n}\n.nav-list::-webkit-scrollbar {\n    display: none; \n}\n@media screen and (min-width: 767px) {\n    .tab-link {\n        min-width: 100px;\n    }\n}\n@media screen and (max-width: 767px) {\n    .tab-link {\n        min-width: 60px;\n    }\n}\n.tab-link {\n    font-size: 1rem;\n    padding: 6px 12px;\n    border-radius: .5rem;\n    border: 1px solid #3688fc;\n    text-align: center;\n    position: relative;\n    overflow: hidden;\n}\n.tab-link.active {\n    color: #fff;\n    background: linear-gradient(-45deg, #3369ff, #3798f7);\n}\n.img-checkmark img {\n    width: 36px;\n}\n.tab-link.active .img-checkmark {\n    display: block;\n}\n.img-checkmark {\n    position: absolute;\n    opacity: 0.8;\n    right: -6px;\n    bottom: -12px;\n    display: none;\n}\n\n/* Home Card */\n\n.home-card {\n    box-shadow: 0 3px 6px 0 rgb(0 0 0 / 12%);\n    transition: all .5s;\n}\n.home-card:hover {\n    box-shadow: 1px 3px 2px 0 rgb(0 0 0 / 5%);\n}\n@media screen and (max-width: 767px) {\n    .hyper-wrapper {\n        padding-left: 0;\n        padding-right: 0;\n        display: grid;\n        grid-gap: 12px;\n        gap: 12px;\n    }\n    .home-card {\n        padding: 12px;\n        margin-bottom: 0;\n        font-size: 14px;\n        display: flex;\n        align-items: flex-start;\n    \tborder-radius: 5px;\n    \tcursor: pointer;\n        background-color: #fff;\n    \t\n    }\n    .home-img {\n        max-width: 80px;\n        margin-right: 12px;\n    }\n    .flex {\n        display: flex;\n        flex-direction: column;\n    }\n    .name {\n        font-size: 14px;\n        min-height: 42px;\n    \tdisplay: -webkit-box;\n        -webkit-line-clamp: 2;\n    \t-webkit-box-orient: vertical;\n    \toverflow: hidden;\n    \ttext-align: left;\n    }\n    .price {\n        color: #d0021b;\n    }\n    .price b {\n        font-size: 14px;\n    }\n}\n@media screen and (min-width: 768px) {\n    .hyper-wrapper {\n        padding-left: 0;\n        padding-right: 0;\n        display: grid;\n        grid-template-columns: repeat(3,minmax(0,1fr));\n        grid-gap: 12px;\n    }\n    .home-card {\n        padding: 32px 20px 14px 20px;\n        font-size: 14px;\n        display: flex;\n        flex-direction: column;\n    \tborder-radius: 5px;\n    \tcursor: pointer;\n        background-color: #fff;\n    }\n    .home-img {\n        max-width: 88%;\n        margin: 0 auto auto auto;\n    }\n    .flex {\n        display: flex;\n        flex-direction: column;\n        margin-top: 12px;\n    }\n    .name {\n        font-size: 16px;\n        min-height: 42px;\n        display: -webkit-box;\n        -webkit-line-clamp: 2;\n        -webkit-box-orient: vertical;\n        overflow: hidden;\n    }\n    .price {\n        color: #d0021b;\n        text-align: center;\n    }\n    .price b {\n        font-size: 24px;\n    }\n}\n\n@media screen and (min-width: 992px) {\n    .hyper-wrapper {\n        padding-left: 0;\n        padding-right: 0;\n        display: grid;\n        grid-template-columns: repeat(4,minmax(0,1fr));\n        grid-gap: 12px;\n    }\n    .home-card {\n        padding: 32px 20px 14px 20px;\n        font-size: 14px;\n        display: flex;\n        flex-direction: column;\n    \tborder-radius: 5px;\n    \tcursor: pointer;\n        background-color: #fff;\n    }\n    .home-img {\n        max-width: 88%;\n        margin: 0 auto auto auto;\n    }\n    .flex {\n        display: flex;\n        flex-direction: column;\n        margin-top: 12px;\n    }\n    .name {\n        font-size: 16px;\n        min-height: 42px;\n        display: -webkit-box;\n        -webkit-line-clamp: 2;\n        -webkit-box-orient: vertical;\n        overflow: hidden;\n    }\n    .price {\n        color: #d0021b;\n        text-align: center;\n    }\n    .price b {\n        font-size: 24px;\n    }\n}\n@media screen and (min-width: 1320px) {\n    .hyper-wrapper {\n        padding-left: 0;\n        padding-right: 0;\n        display: grid;\n        grid-template-columns: repeat(5,minmax(0,1fr));\n        grid-gap: 12px;\n    }\n    .home-card {\n        padding: 32px 20px 14px 20px;\n        font-size: 14px;\n        display: flex;\n        flex-direction: column;\n    \tborder-radius: 5px;\n    \tcursor: pointer;\n        background-color: #fff;\n    }\n    .home-img {\n        max-width: 88%;\n        margin: 0 auto auto auto;\n    }\n    .flex {\n        display: flex;\n        flex-direction: column;\n        margin-top: 12px;\n    }\n    .name {\n        font-size: 16px;\n        min-height: 42px;\n        display: -webkit-box;\n        -webkit-line-clamp: 2;\n        -webkit-box-orient: vertical;\n        overflow: hidden;\n    }\n    .price {\n        color: #d0021b;\n        text-align: center;\n    }\n    .price b {\n        font-size: 24px;\n    }\n}\n\n/* Buy Page*/\n.form-group h3 {\n    font-weight: 400;\n    color: #212529;\n}\n.geetest_holder.geetest_wind {\n    width: 100% !important;\n    min-width: 100% !important;\n}\n.buy-product img {\n    max-width:100%;\n    height: auto;\n    border-radius: 5px;\n    cursor: pointer;\n}\n@media screen and (min-width: 992px) {\n    .buy-grid {\n        display: grid;\n        grid-template-columns: repeat(6, minmax(0, 1fr));\n        gap: 12px;\n    }\n    .sticky {\n        position: -webkit-sticky;\n        position: sticky;\n        top: 6px;\n    }\n    .buy-shop {\n        grid-column: span 2 / span 2;\n    }\n    .buy-product {\n        grid-column: span 4 / span 4;\n    }\n}\n/* pay-type */\n@media screen and (min-width: 1367px) {\n    .pay-grid {\n        display: grid;\n        grid-template-columns: repeat(2,minmax(0,200px));\n        grid-gap: 12px;\n    }\n}\n@media screen and (min-width: 991px) and (max-width: 1367px) {\n    .pay-grid {\n        display: grid;\n        grid-template-columns: repeat(1,minmax(0,300px));\n        grid-gap: 6px;\n    }\n}\n@media screen and (min-width: 768px) and (max-width: 991px) {\n    .pay-grid {\n        display: grid;\n        grid-template-columns: repeat(4,minmax(0,200px));\n        grid-gap: 12px;\n    }\n}\n@media screen and (min-width: 576px) and (max-width: 768px) {\n    .pay-grid {\n        display: grid;\n        grid-template-columns: repeat(3,minmax(0,200px));\n        grid-gap: 12px;\n    }\n}\n@media screen and (max-width: 576px) {\n    .pay-grid {\n        display: grid;\n        grid-template-columns: repeat(2,minmax(0,200px));\n        grid-gap: 12px;\n    }\n}\n@media screen and (max-width: 380px) {\n    .pay-grid {\n        display: grid;\n        grid-template-columns: repeat(1,minmax(0,300px));\n        grid-gap: 6px;\n    }\n}\n.pay-type {\n    background-color: #fff;\n    color: #000;\n    border: 2px solid #bdcfe1;\n}\n.pay-type:hover {\n    background-color: #fff;\n    color: #000;\n}\n.pay-type.active {\n    background-color: #fff;\n    color: #3688fc;\n    border: 2px solid #3688fc;\n}\n.buy-price {\n    color: #ea5455;\n}\n\n/* Orderinfo Page */\n\n.orderinfo-grid {\n    display: grid;\n    grid-template-columns: auto;\n}\n@media screen and (min-width: 767px) {\n    .orderinfo-card-grid {\n        display: grid;\n        grid-template-columns: repeat(6,minmax(0,1fr));\n        grid-gap: 12px;\n    }\n    .orderinfo-info {\n        grid-column: span 2 / span 2;\n    }\n    .orderinfo-kami {\n        grid-column: span 4 / span 4;\n    }\n}\n@media screen and (max-width: 767px) {\n    .orderinfo-info {\n        display: grid;\n        justify-content: center;\n    }\n}\n.textarea-kami {\n    min-height: calc(100% - 48px - 38px)\n}\n.kami-btn {\n    margin-top: 6px;\n    float: right;\n}\n\n/* Footer */\n.back-to-top {\n    display: none;\n    position: fixed;\n    bottom: 120px;\n    right: 20px;\n    z-index: 99;\n}\n#back-to-top {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: 100%;\n    width: 44px;\n    height: 44px;\n}"
  },
  {
    "path": "public/assets/hyper/css/vendor/buttons.bootstrap4.css",
    "content": "@keyframes dtb-spinner {\n  100% {\n    transform: rotate(360deg);\n  }\n}\n@-o-keyframes dtb-spinner {\n  100% {\n    -o-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n@-ms-keyframes dtb-spinner {\n  100% {\n    -ms-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n@-webkit-keyframes dtb-spinner {\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n@-moz-keyframes dtb-spinner {\n  100% {\n    -moz-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\ndiv.dt-button-info {\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  width: 400px;\n  margin-top: -100px;\n  margin-left: -200px;\n  background-color: white;\n  border: 2px solid #111;\n  box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);\n  border-radius: 3px;\n  text-align: center;\n  z-index: 21;\n}\ndiv.dt-button-info h2 {\n  padding: 0.5em;\n  margin: 0;\n  font-weight: normal;\n  border-bottom: 1px solid #ddd;\n  background-color: #f3f3f3;\n}\ndiv.dt-button-info > div {\n  padding: 1em;\n}\n\ndiv.dt-button-collection-title {\n  text-align: center;\n  padding: 0.3em 0 0.5em;\n  font-size: 0.9em;\n}\n\ndiv.dt-button-collection-title:empty {\n  display: none;\n}\n\ndiv.dt-button-collection.dropdown-menu {\n  display: block;\n  z-index: 2002;\n  -webkit-column-gap: 8px;\n  -moz-column-gap: 8px;\n  -ms-column-gap: 8px;\n  -o-column-gap: 8px;\n  column-gap: 8px;\n}\ndiv.dt-button-collection.dropdown-menu.fixed {\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  margin-left: -75px;\n  border-radius: 0;\n}\ndiv.dt-button-collection.dropdown-menu.fixed.two-column {\n  margin-left: -150px;\n}\ndiv.dt-button-collection.dropdown-menu.fixed.three-column {\n  margin-left: -225px;\n}\ndiv.dt-button-collection.dropdown-menu.fixed.four-column {\n  margin-left: -300px;\n}\ndiv.dt-button-collection.dropdown-menu > * {\n  -webkit-column-break-inside: avoid;\n  break-inside: avoid;\n}\ndiv.dt-button-collection.dropdown-menu.two-column {\n  width: 300px;\n  padding-bottom: 1px;\n  -webkit-column-count: 2;\n  -moz-column-count: 2;\n  -ms-column-count: 2;\n  -o-column-count: 2;\n  column-count: 2;\n}\ndiv.dt-button-collection.dropdown-menu.three-column {\n  width: 450px;\n  padding-bottom: 1px;\n  -webkit-column-count: 3;\n  -moz-column-count: 3;\n  -ms-column-count: 3;\n  -o-column-count: 3;\n  column-count: 3;\n}\ndiv.dt-button-collection.dropdown-menu.four-column {\n  width: 600px;\n  padding-bottom: 1px;\n  -webkit-column-count: 4;\n  -moz-column-count: 4;\n  -ms-column-count: 4;\n  -o-column-count: 4;\n  column-count: 4;\n}\ndiv.dt-button-collection.dropdown-menu .dt-button {\n  border-radius: 0;\n}\n\ndiv.dt-button-collection {\n  -webkit-column-gap: 8px;\n  -moz-column-gap: 8px;\n  -ms-column-gap: 8px;\n  -o-column-gap: 8px;\n  column-gap: 8px;\n}\ndiv.dt-button-collection.fixed {\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  margin-left: -75px;\n  border-radius: 0;\n}\ndiv.dt-button-collection.fixed.two-column {\n  margin-left: -150px;\n}\ndiv.dt-button-collection.fixed.three-column {\n  margin-left: -225px;\n}\ndiv.dt-button-collection.fixed.four-column {\n  margin-left: -300px;\n}\ndiv.dt-button-collection > * {\n  -webkit-column-break-inside: avoid;\n  break-inside: avoid;\n}\ndiv.dt-button-collection.two-column {\n  width: 300px;\n  padding-bottom: 1px;\n  -webkit-column-count: 2;\n  -moz-column-count: 2;\n  -ms-column-count: 2;\n  -o-column-count: 2;\n  column-count: 2;\n}\ndiv.dt-button-collection.three-column {\n  width: 450px;\n  padding-bottom: 1px;\n  -webkit-column-count: 3;\n  -moz-column-count: 3;\n  -ms-column-count: 3;\n  -o-column-count: 3;\n  column-count: 3;\n}\ndiv.dt-button-collection.four-column {\n  width: 600px;\n  padding-bottom: 1px;\n  -webkit-column-count: 4;\n  -moz-column-count: 4;\n  -ms-column-count: 4;\n  -o-column-count: 4;\n  column-count: 4;\n}\ndiv.dt-button-collection .dt-button {\n  border-radius: 0;\n}\ndiv.dt-button-collection.fixed {\n  max-width: none;\n}\ndiv.dt-button-collection.fixed:before, div.dt-button-collection.fixed:after {\n  display: none;\n}\n\ndiv.dt-button-background {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  z-index: 999;\n}\n\n@media screen and (max-width: 767px) {\n  div.dt-buttons {\n    float: none;\n    width: 100%;\n    text-align: center;\n    margin-bottom: 0.5em;\n  }\n  div.dt-buttons a.btn {\n    float: none;\n  }\n}\ndiv.dt-buttons button.btn.processing,\ndiv.dt-buttons div.btn.processing,\ndiv.dt-buttons a.btn.processing {\n  color: rgba(0, 0, 0, 0.2);\n}\ndiv.dt-buttons button.btn.processing:after,\ndiv.dt-buttons div.btn.processing:after,\ndiv.dt-buttons a.btn.processing:after {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 16px;\n  height: 16px;\n  margin: -8px 0 0 -8px;\n  box-sizing: border-box;\n  display: block;\n  content: ' ';\n  border: 2px solid #282828;\n  border-radius: 50%;\n  border-left-color: transparent;\n  border-right-color: transparent;\n  animation: dtb-spinner 1500ms infinite linear;\n  -o-animation: dtb-spinner 1500ms infinite linear;\n  -ms-animation: dtb-spinner 1500ms infinite linear;\n  -webkit-animation: dtb-spinner 1500ms infinite linear;\n  -moz-animation: dtb-spinner 1500ms infinite linear;\n}\n"
  },
  {
    "path": "public/assets/hyper/css/vendor/dataTables.bootstrap4.css",
    "content": "table.dataTable {\n  clear: both;\n  margin-top: 6px !important;\n  margin-bottom: 6px !important;\n  max-width: none !important;\n  border-collapse: separate !important;\n  border-spacing: 0;\n}\ntable.dataTable td,\ntable.dataTable th {\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n}\ntable.dataTable td.dataTables_empty,\ntable.dataTable th.dataTables_empty {\n  text-align: center;\n}\ntable.dataTable.nowrap th,\ntable.dataTable.nowrap td {\n  white-space: nowrap;\n}\n\ndiv.dataTables_wrapper div.dataTables_length label {\n  font-weight: normal;\n  text-align: left;\n  white-space: nowrap;\n}\ndiv.dataTables_wrapper div.dataTables_length select {\n  width: auto;\n  display: inline-block;\n}\ndiv.dataTables_wrapper div.dataTables_filter {\n  text-align: right;\n}\ndiv.dataTables_wrapper div.dataTables_filter label {\n  font-weight: normal;\n  white-space: nowrap;\n  text-align: left;\n}\ndiv.dataTables_wrapper div.dataTables_filter input {\n  margin-left: 0.5em;\n  display: inline-block;\n  width: auto;\n}\ndiv.dataTables_wrapper div.dataTables_info {\n  padding-top: 0.85em;\n  white-space: nowrap;\n}\ndiv.dataTables_wrapper div.dataTables_paginate {\n  margin: 0;\n  white-space: nowrap;\n  text-align: right;\n}\ndiv.dataTables_wrapper div.dataTables_paginate ul.pagination {\n  margin: 2px 0;\n  white-space: nowrap;\n  justify-content: flex-end;\n}\ndiv.dataTables_wrapper div.dataTables_processing {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 200px;\n  margin-left: -100px;\n  margin-top: -26px;\n  text-align: center;\n  padding: 1em 0;\n}\n\ntable.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,\ntable.dataTable thead > tr > td.sorting_asc,\ntable.dataTable thead > tr > td.sorting_desc,\ntable.dataTable thead > tr > td.sorting {\n  padding-right: 30px;\n}\ntable.dataTable thead > tr > th:active,\ntable.dataTable thead > tr > td:active {\n  outline: none;\n}\ntable.dataTable thead .sorting,\ntable.dataTable thead .sorting_asc,\ntable.dataTable thead .sorting_desc,\ntable.dataTable thead .sorting_asc_disabled,\ntable.dataTable thead .sorting_desc_disabled {\n  cursor: pointer;\n  position: relative;\n}\ntable.dataTable thead .sorting:before, table.dataTable thead .sorting:after,\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_asc:after,\ntable.dataTable thead .sorting_desc:before,\ntable.dataTable thead .sorting_desc:after,\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_asc_disabled:after,\ntable.dataTable thead .sorting_desc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:after {\n  position: absolute;\n  bottom: 0.9em;\n  display: block;\n  opacity: 0.3;\n}\ntable.dataTable thead .sorting:before,\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_desc:before,\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:before {\n  right: 1em;\n  content: \"\\2191\";\n}\ntable.dataTable thead .sorting:after,\ntable.dataTable thead .sorting_asc:after,\ntable.dataTable thead .sorting_desc:after,\ntable.dataTable thead .sorting_asc_disabled:after,\ntable.dataTable thead .sorting_desc_disabled:after {\n  right: 0.5em;\n  content: \"\\2193\";\n}\ntable.dataTable thead .sorting_asc:before,\ntable.dataTable thead .sorting_desc:after {\n  opacity: 1;\n}\ntable.dataTable thead .sorting_asc_disabled:before,\ntable.dataTable thead .sorting_desc_disabled:after {\n  opacity: 0;\n}\n\ndiv.dataTables_scrollHead table.dataTable {\n  margin-bottom: 0 !important;\n}\n\ndiv.dataTables_scrollBody table {\n  border-top: none;\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\ndiv.dataTables_scrollBody table thead .sorting:before,\ndiv.dataTables_scrollBody table thead .sorting_asc:before,\ndiv.dataTables_scrollBody table thead .sorting_desc:before,\ndiv.dataTables_scrollBody table thead .sorting:after,\ndiv.dataTables_scrollBody table thead .sorting_asc:after,\ndiv.dataTables_scrollBody table thead .sorting_desc:after {\n  display: none;\n}\ndiv.dataTables_scrollBody table tbody tr:first-child th,\ndiv.dataTables_scrollBody table tbody tr:first-child td {\n  border-top: none;\n}\n\ndiv.dataTables_scrollFoot > .dataTables_scrollFootInner {\n  box-sizing: content-box;\n}\ndiv.dataTables_scrollFoot > .dataTables_scrollFootInner > table {\n  margin-top: 0 !important;\n  border-top: none;\n}\n\n@media screen and (max-width: 767px) {\n  div.dataTables_wrapper div.dataTables_length,\n  div.dataTables_wrapper div.dataTables_filter,\n  div.dataTables_wrapper div.dataTables_info,\n  div.dataTables_wrapper div.dataTables_paginate {\n    text-align: center;\n  }\n}\ntable.dataTable.table-sm > thead > tr > th {\n  padding-right: 20px;\n}\ntable.dataTable.table-sm .sorting:before,\ntable.dataTable.table-sm .sorting_asc:before,\ntable.dataTable.table-sm .sorting_desc:before {\n  top: 5px;\n  right: 0.85em;\n}\ntable.dataTable.table-sm .sorting:after,\ntable.dataTable.table-sm .sorting_asc:after,\ntable.dataTable.table-sm .sorting_desc:after {\n  top: 5px;\n}\n\ntable.table-bordered.dataTable th,\ntable.table-bordered.dataTable td {\n  border-left-width: 0;\n}\ntable.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,\ntable.table-bordered.dataTable td:last-child,\ntable.table-bordered.dataTable td:last-child {\n  border-right-width: 0;\n}\ntable.table-bordered.dataTable tbody th,\ntable.table-bordered.dataTable tbody td {\n  border-bottom-width: 0;\n}\n\ndiv.dataTables_scrollHead table.table-bordered {\n  border-bottom-width: 0;\n}\n\ndiv.table-responsive > div.dataTables_wrapper > div.row {\n  margin: 0;\n}\ndiv.table-responsive > div.dataTables_wrapper > div.row > div[class^=\"col-\"]:first-child {\n  padding-left: 0;\n}\ndiv.table-responsive > div.dataTables_wrapper > div.row > div[class^=\"col-\"]:last-child {\n  padding-right: 0;\n}\n"
  },
  {
    "path": "public/assets/hyper/css/vendor/frappe-gantt.css",
    "content": ".gantt .grid-background {\n  fill: none; }\n\n.gantt .grid-header {\n  fill: #ffffff;\n  stroke: #e0e0e0;\n  stroke-width: 1.4; }\n\n.gantt .grid-row {\n  fill: #ffffff; }\n\n.gantt .grid-row:nth-child(even) {\n  fill: #f5f5f5; }\n\n.gantt .row-line {\n  stroke: #ebeff2; }\n\n.gantt .tick {\n  stroke: #e0e0e0;\n  stroke-width: 0.2; }\n  .gantt .tick.thick {\n    stroke-width: 0.4; }\n\n.gantt .today-highlight {\n  fill: #fcf8e3;\n  opacity: 0.5; }\n\n.gantt .arrow {\n  fill: none;\n  stroke: #666;\n  stroke-width: 1.4; }\n\n.gantt .bar {\n  fill: #b8c2cc;\n  stroke: #8D99A6;\n  stroke-width: 0;\n  transition: stroke-width .3s ease;\n  user-select: none; }\n\n.gantt .bar-progress {\n  fill: #a3a3ff; }\n\n.gantt .bar-invalid {\n  fill: transparent;\n  stroke: #8D99A6;\n  stroke-width: 1;\n  stroke-dasharray: 5; }\n  .gantt .bar-invalid ~ .bar-label {\n    fill: #555; }\n\n.gantt .bar-label {\n  fill: #fff;\n  dominant-baseline: central;\n  text-anchor: middle;\n  font-size: 12px;\n  font-weight: lighter; }\n  .gantt .bar-label.big {\n    fill: #555;\n    text-anchor: start; }\n\n.gantt .handle {\n  fill: #ddd;\n  cursor: ew-resize;\n  opacity: 0;\n  visibility: hidden;\n  transition: opacity .3s ease; }\n\n.gantt .bar-wrapper {\n  cursor: pointer;\n  outline: none; }\n  .gantt .bar-wrapper:hover .bar {\n    fill: #a9b5c1; }\n  .gantt .bar-wrapper:hover .bar-progress {\n    fill: #8a8aff; }\n  .gantt .bar-wrapper:hover .handle {\n    visibility: visible;\n    opacity: 1; }\n  .gantt .bar-wrapper.active .bar {\n    fill: #a9b5c1; }\n  .gantt .bar-wrapper.active .bar-progress {\n    fill: #8a8aff; }\n\n.gantt .lower-text, .gantt .upper-text {\n  font-size: 12px;\n  text-anchor: middle; }\n\n.gantt .upper-text {\n  fill: #555; }\n\n.gantt .lower-text {\n  fill: #333; }\n\n.gantt .hide {\n  display: none; }\n\n.gantt-container {\n  position: relative;\n  overflow: auto;\n  font-size: 12px; }\n  .gantt-container .popup-wrapper {\n    position: absolute;\n    top: 0;\n    left: 0;\n    background: rgba(0, 0, 0, 0.8);\n    padding: 0;\n    color: #959da5;\n    border-radius: 3px; }\n    .gantt-container .popup-wrapper .title {\n      border-bottom: 3px solid #a3a3ff;\n      padding: 10px; }\n    .gantt-container .popup-wrapper .subtitle {\n      padding: 10px;\n      color: #dfe2e5; }\n    .gantt-container .popup-wrapper .pointer {\n      position: absolute;\n      height: 5px;\n      margin: 0 0 0 -5px;\n      border: 5px solid transparent;\n      border-top-color: rgba(0, 0, 0, 0.8); }\n"
  },
  {
    "path": "public/assets/hyper/css/vendor/jquery-jvectormap-1.2.2.css",
    "content": ".jvectormap-label {\n    position: absolute;\n    display: none;\n    border: solid 1px #CDCDCD;\n    -webkit-border-radius: 3px;\n    -moz-border-radius: 3px;\n    border-radius: 3px;\n    background: #292929;\n    color: white;\n    font-family: sans-serif, Verdana;\n    font-size: smaller;\n    padding: 3px;\n}\n\n.jvectormap-zoomin, .jvectormap-zoomout {\n    position: absolute;\n    left: 10px;\n    -webkit-border-radius: 3px;\n    -moz-border-radius: 3px;\n    background: #424242;\n    padding: 2px;\n    color: white;\n    width: 15px;\n    height: 15px;\n    cursor: pointer;\n    line-height: 10px;\n    text-align: center;\n}\n\n.jvectormap-zoomin {\n    top: 10px;\n}\n\n.jvectormap-zoomout {\n    top: 30px;\n}"
  },
  {
    "path": "public/assets/hyper/css/vendor/responsive.bootstrap4.css",
    "content": "table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,\ntable.dataTable.dtr-inline.collapsed > tbody > tr > th.child,\ntable.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {\n  cursor: default !important;\n}\ntable.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,\ntable.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,\ntable.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {\n  display: none !important;\n}\ntable.dataTable.dtr-inline.collapsed > tbody > tr[role=\"row\"] > td:first-child,\ntable.dataTable.dtr-inline.collapsed > tbody > tr[role=\"row\"] > th:first-child {\n  position: relative;\n  padding-left: 30px;\n  cursor: pointer;\n}\ntable.dataTable.dtr-inline.collapsed > tbody > tr[role=\"row\"] > td:first-child:before,\ntable.dataTable.dtr-inline.collapsed > tbody > tr[role=\"row\"] > th:first-child:before {\n  top: 12px;\n  left: 4px;\n  height: 14px;\n  width: 14px;\n  display: block;\n  position: absolute;\n  color: white;\n  border: 2px solid white;\n  border-radius: 14px;\n  box-shadow: 0 0 3px #444;\n  box-sizing: content-box;\n  text-align: center;\n  text-indent: 0 !important;\n  font-family: 'Courier New', Courier, monospace;\n  line-height: 14px;\n  content: '+';\n  background-color: #0275d8;\n}\ntable.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,\ntable.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before {\n  content: '-';\n  background-color: #d33333;\n}\ntable.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child,\ntable.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child {\n  padding-left: 27px;\n}\ntable.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before,\ntable.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before {\n  top: 5px;\n  left: 4px;\n  height: 14px;\n  width: 14px;\n  border-radius: 14px;\n  line-height: 14px;\n  text-indent: 3px;\n}\ntable.dataTable.dtr-column > tbody > tr > td.control,\ntable.dataTable.dtr-column > tbody > tr > th.control {\n  position: relative;\n  cursor: pointer;\n}\ntable.dataTable.dtr-column > tbody > tr > td.control:before,\ntable.dataTable.dtr-column > tbody > tr > th.control:before {\n  top: 50%;\n  left: 50%;\n  height: 16px;\n  width: 16px;\n  margin-top: -10px;\n  margin-left: -10px;\n  display: block;\n  position: absolute;\n  color: white;\n  border: 2px solid white;\n  border-radius: 14px;\n  box-shadow: 0 0 3px #444;\n  box-sizing: content-box;\n  text-align: center;\n  text-indent: 0 !important;\n  font-family: 'Courier New', Courier, monospace;\n  line-height: 14px;\n  content: '+';\n  background-color: #0275d8;\n}\ntable.dataTable.dtr-column > tbody > tr.parent td.control:before,\ntable.dataTable.dtr-column > tbody > tr.parent th.control:before {\n  content: '-';\n  background-color: #d33333;\n}\ntable.dataTable > tbody > tr.child {\n  padding: 0.5em 1em;\n}\ntable.dataTable > tbody > tr.child:hover {\n  background: transparent !important;\n}\ntable.dataTable > tbody > tr.child ul.dtr-details {\n  display: inline-block;\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\ntable.dataTable > tbody > tr.child ul.dtr-details > li {\n  border-bottom: 1px solid #efefef;\n  padding: 0.5em 0;\n}\ntable.dataTable > tbody > tr.child ul.dtr-details > li:first-child {\n  padding-top: 0;\n}\ntable.dataTable > tbody > tr.child ul.dtr-details > li:last-child {\n  border-bottom: none;\n}\ntable.dataTable > tbody > tr.child span.dtr-title {\n  display: inline-block;\n  min-width: 75px;\n  font-weight: bold;\n}\n\ndiv.dtr-modal {\n  position: fixed;\n  box-sizing: border-box;\n  top: 0;\n  left: 0;\n  height: 100%;\n  width: 100%;\n  z-index: 100;\n  padding: 10em 1em;\n}\ndiv.dtr-modal div.dtr-modal-display {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  width: 50%;\n  height: 50%;\n  overflow: auto;\n  margin: auto;\n  z-index: 102;\n  overflow: auto;\n  background-color: #f5f5f7;\n  border: 1px solid black;\n  border-radius: 0.5em;\n  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6);\n}\ndiv.dtr-modal div.dtr-modal-content {\n  position: relative;\n  padding: 1em;\n}\ndiv.dtr-modal div.dtr-modal-close {\n  position: absolute;\n  top: 6px;\n  right: 6px;\n  width: 22px;\n  height: 22px;\n  border: 1px solid #eaeaea;\n  background-color: #f9f9f9;\n  text-align: center;\n  border-radius: 3px;\n  cursor: pointer;\n  z-index: 12;\n}\ndiv.dtr-modal div.dtr-modal-close:hover {\n  background-color: #eaeaea;\n}\ndiv.dtr-modal div.dtr-modal-background {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  z-index: 101;\n  background: rgba(0, 0, 0, 0.6);\n}\n\n@media screen and (max-width: 767px) {\n  div.dtr-modal div.dtr-modal-display {\n    width: 95%;\n  }\n}\ndiv.dtr-bs-modal table.table tr:first-child td {\n  border-top: none;\n}\n"
  },
  {
    "path": "public/assets/hyper/css/vendor/select.bootstrap4.css",
    "content": "table.dataTable tbody > tr.selected,\ntable.dataTable tbody > tr > .selected {\n  background-color: #0275d8;\n}\ntable.dataTable.stripe tbody > tr.odd.selected,\ntable.dataTable.stripe tbody > tr.odd > .selected, table.dataTable.display tbody > tr.odd.selected,\ntable.dataTable.display tbody > tr.odd > .selected {\n  background-color: #0172d2;\n}\ntable.dataTable.hover tbody > tr.selected:hover,\ntable.dataTable.hover tbody > tr > .selected:hover, table.dataTable.display tbody > tr.selected:hover,\ntable.dataTable.display tbody > tr > .selected:hover {\n  background-color: #0170d0;\n}\ntable.dataTable.order-column tbody > tr.selected > .sorting_1,\ntable.dataTable.order-column tbody > tr.selected > .sorting_2,\ntable.dataTable.order-column tbody > tr.selected > .sorting_3,\ntable.dataTable.order-column tbody > tr > .selected, table.dataTable.display tbody > tr.selected > .sorting_1,\ntable.dataTable.display tbody > tr.selected > .sorting_2,\ntable.dataTable.display tbody > tr.selected > .sorting_3,\ntable.dataTable.display tbody > tr > .selected {\n  background-color: #0172d3;\n}\ntable.dataTable.display tbody > tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_1 {\n  background-color: #016ecc;\n}\ntable.dataTable.display tbody > tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_2 {\n  background-color: #016fcd;\n}\ntable.dataTable.display tbody > tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.odd.selected > .sorting_3 {\n  background-color: #0170cf;\n}\ntable.dataTable.display tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_1 {\n  background-color: #0172d3;\n}\ntable.dataTable.display tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_2 {\n  background-color: #0173d5;\n}\ntable.dataTable.display tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody > tr.even.selected > .sorting_3 {\n  background-color: #0174d7;\n}\ntable.dataTable.display tbody > tr.odd > .selected, table.dataTable.order-column.stripe tbody > tr.odd > .selected {\n  background-color: #016ecc;\n}\ntable.dataTable.display tbody > tr.even > .selected, table.dataTable.order-column.stripe tbody > tr.even > .selected {\n  background-color: #0172d3;\n}\ntable.dataTable.display tbody > tr.selected:hover > .sorting_1, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_1 {\n  background-color: #016bc6;\n}\ntable.dataTable.display tbody > tr.selected:hover > .sorting_2, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_2 {\n  background-color: #016cc7;\n}\ntable.dataTable.display tbody > tr.selected:hover > .sorting_3, table.dataTable.order-column.hover tbody > tr.selected:hover > .sorting_3 {\n  background-color: #016dca;\n}\ntable.dataTable.display tbody > tr:hover > .selected,\ntable.dataTable.display tbody > tr > .selected:hover, table.dataTable.order-column.hover tbody > tr:hover > .selected,\ntable.dataTable.order-column.hover tbody > tr > .selected:hover {\n  background-color: #016bc6;\n}\ntable.dataTable tbody td.select-checkbox,\ntable.dataTable tbody th.select-checkbox {\n  position: relative;\n}\ntable.dataTable tbody td.select-checkbox:before, table.dataTable tbody td.select-checkbox:after,\ntable.dataTable tbody th.select-checkbox:before,\ntable.dataTable tbody th.select-checkbox:after {\n  display: block;\n  position: absolute;\n  top: 1.2em;\n  left: 50%;\n  width: 12px;\n  height: 12px;\n  box-sizing: border-box;\n}\ntable.dataTable tbody td.select-checkbox:before,\ntable.dataTable tbody th.select-checkbox:before {\n  content: ' ';\n  margin-top: -6px;\n  margin-left: -6px;\n  border: 1px solid black;\n  border-radius: 3px;\n}\ntable.dataTable tr.selected td.select-checkbox:after,\ntable.dataTable tr.selected th.select-checkbox:after {\n  content: '\\2714';\n  margin-top: -11px;\n  margin-left: -4px;\n  text-align: center;\n  text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;\n}\n\ndiv.dataTables_wrapper span.select-info,\ndiv.dataTables_wrapper span.select-item {\n  margin-left: 0.5em;\n}\n\n@media screen and (max-width: 640px) {\n  div.dataTables_wrapper span.select-info,\n  div.dataTables_wrapper span.select-item {\n    margin-left: 0;\n    display: block;\n  }\n}\ntable.dataTable tbody tr.selected,\ntable.dataTable tbody th.selected,\ntable.dataTable tbody td.selected {\n  color: white;\n}\ntable.dataTable tbody tr.selected a,\ntable.dataTable tbody th.selected a,\ntable.dataTable tbody td.selected a {\n  color: #a2d4ed;\n}\n"
  },
  {
    "path": "public/assets/hyper/css/vendor/summernote-bs4.css",
    "content": "@font-face{font-family:\"summernote\";font-style:normal;font-weight:normal;src:url(\"https://coderthemes.com/hyper/creative/assets/css/vendor/font/summernote.eot?1d9aeaaff0a8939558a45be6cd52cd4c\");src:url(\"https://coderthemes.com/hyper/creative/assets/css/vendor/font/summernote.eot?1d9aeaaff0a8939558a45be6cd52cd4c\") format(\"embedded-opentype\"),url(\"https://coderthemes.com/hyper/creative/assets/css/vendor/font/summernote.woff?1d9aeaaff0a8939558a45be6cd52cd4c\") format(\"woff\"),url(\"https://coderthemes.com/hyper/creative/assets/css/vendor/font/summernote.ttf?1d9aeaaff0a8939558a45be6cd52cd4c\") format(\"truetype\")}[class^=\"note-icon-\"]:before,[class*=\" note-icon-\"]:before{display:inline-block;font:normal normal normal 14px summernote;font-size:inherit;-webkit-font-smoothing:antialiased;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;speak:none;-moz-osx-font-smoothing:grayscale}.note-icon-align-center:before,.note-icon-align-indent:before,.note-icon-align-justify:before,.note-icon-align-left:before,.note-icon-align-outdent:before,.note-icon-align-right:before,.note-icon-align:before,.note-icon-arrow-circle-down:before,.note-icon-arrow-circle-left:before,.note-icon-arrow-circle-right:before,.note-icon-arrow-circle-up:before,.note-icon-arrows-alt:before,.note-icon-arrows-h:before,.note-icon-arrows-v:before,.note-icon-bold:before,.note-icon-caret:before,.note-icon-chain-broken:before,.note-icon-circle:before,.note-icon-close:before,.note-icon-code:before,.note-icon-col-after:before,.note-icon-col-before:before,.note-icon-col-remove:before,.note-icon-eraser:before,.note-icon-float-left:before,.note-icon-float-none:before,.note-icon-float-right:before,.note-icon-font:before,.note-icon-frame:before,.note-icon-italic:before,.note-icon-link:before,.note-icon-magic:before,.note-icon-menu-check:before,.note-icon-minus:before,.note-icon-orderedlist:before,.note-icon-pencil:before,.note-icon-picture:before,.note-icon-question:before,.note-icon-redo:before,.note-icon-rollback:before,.note-icon-row-above:before,.note-icon-row-below:before,.note-icon-row-remove:before,.note-icon-special-character:before,.note-icon-square:before,.note-icon-strikethrough:before,.note-icon-subscript:before,.note-icon-summernote:before,.note-icon-superscript:before,.note-icon-table:before,.note-icon-text-height:before,.note-icon-trash:before,.note-icon-underline:before,.note-icon-undo:before,.note-icon-unorderedlist:before,.note-icon-video:before{display:inline-block;font-family:\"summernote\";font-style:normal;font-weight:normal;text-decoration:inherit}.note-icon-align-center:before{content:\"\\f101\"}.note-icon-align-indent:before{content:\"\\f102\"}.note-icon-align-justify:before{content:\"\\f103\"}.note-icon-align-left:before{content:\"\\f104\"}.note-icon-align-outdent:before{content:\"\\f105\"}.note-icon-align-right:before{content:\"\\f106\"}.note-icon-align:before{content:\"\\f107\"}.note-icon-arrow-circle-down:before{content:\"\\f108\"}.note-icon-arrow-circle-left:before{content:\"\\f109\"}.note-icon-arrow-circle-right:before{content:\"\\f10a\"}.note-icon-arrow-circle-up:before{content:\"\\f10b\"}.note-icon-arrows-alt:before{content:\"\\f10c\"}.note-icon-arrows-h:before{content:\"\\f10d\"}.note-icon-arrows-v:before{content:\"\\f10e\"}.note-icon-bold:before{content:\"\\f10f\"}.note-icon-caret:before{content:\"\\f110\"}.note-icon-chain-broken:before{content:\"\\f111\"}.note-icon-circle:before{content:\"\\f112\"}.note-icon-close:before{content:\"\\f113\"}.note-icon-code:before{content:\"\\f114\"}.note-icon-col-after:before{content:\"\\f115\"}.note-icon-col-before:before{content:\"\\f116\"}.note-icon-col-remove:before{content:\"\\f117\"}.note-icon-eraser:before{content:\"\\f118\"}.note-icon-float-left:before{content:\"\\f119\"}.note-icon-float-none:before{content:\"\\f11a\"}.note-icon-float-right:before{content:\"\\f11b\"}.note-icon-font:before{content:\"\\f11c\"}.note-icon-frame:before{content:\"\\f11d\"}.note-icon-italic:before{content:\"\\f11e\"}.note-icon-link:before{content:\"\\f11f\"}.note-icon-magic:before{content:\"\\f120\"}.note-icon-menu-check:before{content:\"\\f121\"}.note-icon-minus:before{content:\"\\f122\"}.note-icon-orderedlist:before{content:\"\\f123\"}.note-icon-pencil:before{content:\"\\f124\"}.note-icon-picture:before{content:\"\\f125\"}.note-icon-question:before{content:\"\\f126\"}.note-icon-redo:before{content:\"\\f127\"}.note-icon-rollback:before{content:\"\\f128\"}.note-icon-row-above:before{content:\"\\f129\"}.note-icon-row-below:before{content:\"\\f12a\"}.note-icon-row-remove:before{content:\"\\f12b\"}.note-icon-special-character:before{content:\"\\f12c\"}.note-icon-square:before{content:\"\\f12d\"}.note-icon-strikethrough:before{content:\"\\f12e\"}.note-icon-subscript:before{content:\"\\f12f\"}.note-icon-summernote:before{content:\"\\f130\"}.note-icon-superscript:before{content:\"\\f131\"}.note-icon-table:before{content:\"\\f132\"}.note-icon-text-height:before{content:\"\\f133\"}.note-icon-trash:before{content:\"\\f134\"}.note-icon-underline:before{content:\"\\f135\"}.note-icon-undo:before{content:\"\\f136\"}.note-icon-unorderedlist:before{content:\"\\f137\"}.note-icon-video:before{content:\"\\f138\"}.note-editor{position:relative}.note-editor .note-dropzone{position:absolute;z-index:100;display:none;color:#87cefa;background-color:#fff;opacity:.95}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;font-size:28px;font-weight:700;text-align:center;vertical-align:middle}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:0}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area img.note-float-left{margin-right:10px}.note-editor .note-editing-area img.note-float-right{margin-left:10px}.note-editor.note-frame{border:1px solid #a9a9a9}.note-editor.note-frame.codeview .note-editing-area .note-editable{display:none}.note-editor.note-frame.codeview .note-editing-area .note-codable{display:block}.note-editor.note-frame .note-editing-area{overflow:hidden}.note-editor.note-frame .note-editing-area .note-editable{padding:10px;overflow:auto;color:#000;word-wrap:break-word;background-color:#fff}.note-editor.note-frame .note-editing-area .note-editable[contenteditable=\"false\"]{background-color:#e5e5e5}.note-editor.note-frame .note-editing-area .note-codable{display:none;width:100%;padding:10px;margin-bottom:0;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;outline:0;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;resize:none}.note-editor.note-frame.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important}.note-editor.note-frame.fullscreen .note-editable{background-color:#fff}.note-editor.note-frame.fullscreen .note-resizebar{display:none}.note-editor.note-frame .note-status-output{display:block;width:100%;height:20px;margin-bottom:0;font-size:14px;line-height:1.42857143;color:#000;border:0;border-top:1px solid #e2e2e2}.note-editor.note-frame .note-status-output:empty{height:0;border-top:0 solid transparent}.note-editor.note-frame .note-status-output .pull-right{float:right!important}.note-editor.note-frame .note-status-output .text-muted{color:#777}.note-editor.note-frame .note-status-output .text-primary{color:#286090}.note-editor.note-frame .note-status-output .text-success{color:#3c763d}.note-editor.note-frame .note-status-output .text-info{color:#31708f}.note-editor.note-frame .note-status-output .text-warning{color:#8a6d3b}.note-editor.note-frame .note-status-output .text-danger{color:#a94442}.note-editor.note-frame .note-status-output .alert{padding:7px 10px 2px 10px;margin:-7px 0 0 0;color:#000;background-color:#f5f5f5;border-radius:0}.note-editor.note-frame .note-status-output .alert .note-icon{margin-right:5px}.note-editor.note-frame .note-status-output .alert-success{color:#3c763d!important;background-color:#dff0d8!important}.note-editor.note-frame .note-status-output .alert-info{color:#31708f!important;background-color:#d9edf7!important}.note-editor.note-frame .note-status-output .alert-warning{color:#8a6d3b!important;background-color:#fcf8e3!important}.note-editor.note-frame .note-status-output .alert-danger{color:#a94442!important;background-color:#f2dede!important}.note-editor.note-frame .note-statusbar{background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.note-editor.note-frame .note-statusbar .note-resizebar{width:100%;height:9px;padding-top:1px;cursor:ns-resize}.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid #a9a9a9}.note-editor.note-frame .note-statusbar.locked .note-resizebar{cursor:default}.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar{display:none}.note-editor.note-frame .note-placeholder{padding:10px}.note-popover.popover{display:none;max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-popover.popover .arrow{left:20px!important}.note-toolbar{position:relative;z-index:500}.note-popover .popover-content,.card-header.note-toolbar{padding:0 0 5px 5px;margin:0;background:#f5f5f5}.note-popover .popover-content>.btn-group,.card-header.note-toolbar>.btn-group{margin-top:5px;margin-right:5px;margin-left:0}.note-popover .popover-content .btn-group .note-table,.card-header.note-toolbar .btn-group .note-table{min-width:0;padding:5px}.note-popover .popover-content .btn-group .note-table .note-dimension-picker,.card-header.note-toolbar .btn-group .note-table .note-dimension-picker{font-size:18px}.note-popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.card-header.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute!important;z-index:3;width:10em;height:10em;cursor:pointer}.note-popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.card-header.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative!important;z-index:1;width:5em;height:5em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat}.note-popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.card-header.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{position:absolute!important;z-index:2;width:1em;height:1em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat}.note-popover .popover-content .note-style .dropdown-style blockquote,.card-header.note-toolbar .note-style .dropdown-style blockquote,.note-popover .popover-content .note-style .dropdown-style pre,.card-header.note-toolbar .note-style .dropdown-style pre{padding:5px 10px;margin:0}.note-popover .popover-content .note-style .dropdown-style h1,.card-header.note-toolbar .note-style .dropdown-style h1,.note-popover .popover-content .note-style .dropdown-style h2,.card-header.note-toolbar .note-style .dropdown-style h2,.note-popover .popover-content .note-style .dropdown-style h3,.card-header.note-toolbar .note-style .dropdown-style h3,.note-popover .popover-content .note-style .dropdown-style h4,.card-header.note-toolbar .note-style .dropdown-style h4,.note-popover .popover-content .note-style .dropdown-style h5,.card-header.note-toolbar .note-style .dropdown-style h5,.note-popover .popover-content .note-style .dropdown-style h6,.card-header.note-toolbar .note-style .dropdown-style h6,.note-popover .popover-content .note-style .dropdown-style p,.card-header.note-toolbar .note-style .dropdown-style p{padding:0;margin:0}.note-popover .popover-content .note-color-all .dropdown-menu,.card-header.note-toolbar .note-color-all .dropdown-menu{min-width:337px}.note-popover .popover-content .note-color .dropdown-toggle,.card-header.note-toolbar .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-popover .popover-content .note-color .dropdown-menu .note-palette,.card-header.note-toolbar .note-color .dropdown-menu .note-palette{display:inline-block;width:160px;margin:0}.note-popover .popover-content .note-color .dropdown-menu .note-palette:first-child,.card-header.note-toolbar .note-color .dropdown-menu .note-palette:first-child{margin:0 5px}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-palette-title,.card-header.note-toolbar .note-color .dropdown-menu .note-palette .note-palette-title{margin:2px 7px;font-size:12px;text-align:center;border-bottom:1px solid #eee}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-color-reset,.card-header.note-toolbar .note-color .dropdown-menu .note-palette .note-color-reset,.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-color-select,.card-header.note-toolbar .note-color .dropdown-menu .note-palette .note-color-select{width:100%;padding:0 3px;margin:3px;font-size:11px;cursor:pointer;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-color-row,.card-header.note-toolbar .note-color .dropdown-menu .note-palette .note-color-row{height:20px}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-color-reset:hover,.card-header.note-toolbar .note-color .dropdown-menu .note-palette .note-color-reset:hover{background:#eee}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-color-select-btn,.card-header.note-toolbar .note-color .dropdown-menu .note-palette .note-color-select-btn{display:none}.note-popover .popover-content .note-color .dropdown-menu .note-palette .note-holder-custom .note-color-btn,.card-header.note-toolbar .note-color .dropdown-menu .note-palette .note-holder-custom .note-color-btn{border:1px solid #eee}.note-popover .popover-content .note-para .dropdown-menu,.card-header.note-toolbar .note-para .dropdown-menu{min-width:216px;padding:5px}.note-popover .popover-content .note-para .dropdown-menu>div:first-child,.card-header.note-toolbar .note-para .dropdown-menu>div:first-child{margin-right:5px}.note-popover .popover-content .dropdown-menu,.card-header.note-toolbar .dropdown-menu{min-width:90px}.note-popover .popover-content .dropdown-menu.right,.card-header.note-toolbar .dropdown-menu.right{right:0;left:auto}.note-popover .popover-content .dropdown-menu.right::before,.card-header.note-toolbar .dropdown-menu.right::before{right:9px;left:auto!important}.note-popover .popover-content .dropdown-menu.right::after,.card-header.note-toolbar .dropdown-menu.right::after{right:10px;left:auto!important}.note-popover .popover-content .dropdown-menu.note-check a i,.card-header.note-toolbar .dropdown-menu.note-check a i{color:deepskyblue;visibility:hidden}.note-popover .popover-content .dropdown-menu.note-check a.checked i,.card-header.note-toolbar .dropdown-menu.note-check a.checked i{visibility:visible}.note-popover .popover-content .note-fontsize-10,.card-header.note-toolbar .note-fontsize-10{font-size:10px}.note-popover .popover-content .note-color-palette,.card-header.note-toolbar .note-color-palette{line-height:1}.note-popover .popover-content .note-color-palette div .note-color-btn,.card-header.note-toolbar .note-color-palette div .note-color-btn{width:20px;height:20px;padding:0;margin:0;border:1px solid #fff}.note-popover .popover-content .note-color-palette div .note-color-btn:hover,.card-header.note-toolbar .note-color-palette div .note-color-btn:hover{border:1px solid #000}.note-dialog>div{display:none}.note-dialog .form-group{margin-right:0;margin-left:0}.note-dialog .note-modal-form{margin:0}.note-dialog .note-image-dialog .note-dropzone{min-height:100px;margin-bottom:10px;font-size:30px;line-height:4;color:lightgray;text-align:center;border:4px dashed lightgray}@-moz-document url-prefix(){.note-image-input{height:auto}}.note-placeholder{position:absolute;display:none;color:gray}.note-handle .note-control-selection{position:absolute;display:none;border:1px solid black}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:black;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:alpha(opacity=30);filter:alpha(opacity=30)}.note-handle .note-control-selection .note-control-handle{width:7px;height:7px;border:1px solid black}.note-handle .note-control-selection .note-control-holder{width:7px;height:7px;border:1px solid black}.note-handle .note-control-selection .note-control-sizing{width:7px;height:7px;background-color:white;border:1px solid black}.note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:0;border-bottom:0}.note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:0;border-left:none}.note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:0;border-right:0}.note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-handle .note-control-selection .note-control-se.note-control-holder{cursor:default;border-top:0;border-left:none}.note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;font-size:12px;color:#fff;background-color:#000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:alpha(opacity=70);filter:alpha(opacity=70)}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{max-height:150px;padding:3px;overflow:auto}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block!important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{display:block;clear:both;font-weight:400;line-height:1.4;color:#fff;text-decoration:none;white-space:nowrap;cursor:pointer;background-color:#428bca;outline:0}"
  },
  {
    "path": "public/assets/hyper/js/hyper.js",
    "content": "$(function() {\n\tlet tipsSvg = '<svg style=\"vertical-align: middle;margin-right: 5px\" t=\"1602926160057\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"2429\" data-spm-anchor-id=\"a313x.7781069.0.i27\" width=\"30\" height=\"30\"><path d=\"M320.512 850.944l-71.68-40.96 60.416-104.448 34.816-21.504h478.208V254.976H201.728v347.136h-81.92V214.016l40.96-40.96h702.464l40.96 40.96v510.976l-40.96 40.96H368.64z\" fill=\"#ffffff\" p-id=\"2430\" data-spm-anchor-id=\"a313x.7781069.0.i25\" class=\"selected\"></path><path d=\"M481.28 431.104h61.44v61.44h-61.44zM284.672 431.104h61.44v61.44h-61.44zM677.888 431.104h61.44v61.44h-61.44z\" fill=\"#ffffff\" p-id=\"2431\" data-spm-anchor-id=\"a313x.7781069.0.i23\" class=\"selected\"></path></svg>';\n\tlet qrSvg = '<svg style=\"vertical-align: middle;margin-right: 5px\" t=\"1602927606509\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4167\" width=\"30\" height=\"30\"><path d=\"M146.432 336.896h-81.92V106.496l40.96-40.96h231.424v81.92H146.432zM336.896 958.464H105.472l-40.96-40.96V687.104h81.92v189.44h190.464zM956.416 336.896h-81.92V147.456H684.032v-81.92h231.424l40.96 40.96zM915.456 958.464H613.376v-81.92h261.12V659.456h81.92v258.048z\" fill=\"#ffffff\" p-id=\"4168\" data-spm-anchor-id=\"a313x.7781069.0.i59\" class=\"selected\"></path><path d=\"M326.656 334.848h61.44v98.304h-61.44zM415.744 575.488h61.44v133.12h-61.44zM265.216 575.488h61.44v114.688h-61.44zM566.272 575.488h61.44v98.304h-61.44zM706.56 575.488h61.44v154.624h-61.44zM477.184 297.984h61.44v135.168h-61.44zM627.712 329.728h61.44v103.424h-61.44z\" fill=\"#ffffff\" p-id=\"4169\" data-spm-anchor-id=\"a313x.7781069.0.i58\" class=\"selected\"></path><path d=\"M10.24 473.088h1003.52v61.44H10.24z\" fill=\"#ffffff\" p-id=\"4170\" data-spm-anchor-id=\"a313x.7781069.0.i57\" class=\"selected\"></path></svg>';\n\tlet alipaySvg = '<svg t=\"1602939269695\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1127\" width=\"32\" height=\"32\"><path d=\"M902.095 652.871l-250.96-84.392s19.287-28.87 39.874-85.472c20.59-56.606 23.539-87.689 23.539-87.689l-162.454-1.339v-55.487l196.739-1.387v-39.227H552.055v-89.29h-96.358v89.294H272.133v39.227l183.564-1.304v59.513h-147.24v31.079h303.064s-3.337 25.223-14.955 56.606c-11.615 31.38-23.58 58.862-23.58 58.862s-142.3-49.804-217.285-49.804c-74.985 0-166.182 30.123-175.024 117.55-8.8 87.383 42.481 134.716 114.728 152.139 72.256 17.513 138.962-0.173 197.04-28.607 58.087-28.391 115.081-92.933 115.081-92.933l292.486 142.041c-11.932 69.3-72.067 119.914-142.387 119.844H266.37c-79.714 0.078-144.392-64.483-144.466-144.194V266.374c-0.074-79.72 64.493-144.399 144.205-144.47h491.519c79.714-0.073 144.396 64.49 144.466 144.203v386.764z m-365.76-48.895s-91.302 115.262-198.879 115.262c-107.623 0-130.218-54.767-130.218-94.155 0-39.34 22.373-82.144 113.943-88.333 91.519-6.18 215.2 67.226 215.2 67.226h-0.047z\" fill=\"#02A9F1\" p-id=\"1128\" data-spm-anchor-id=\"a313x.7781069.0.i1\" class=\"selected\"></path></svg>';\n\tlet weChatSvg = '<svg t=\"1602939526328\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1368\" width=\"32\" height=\"32\"><path d=\"M395.846 603.585c-3.921 1.98-7.936 2.925-12.81 2.925-10.9 0-19.791-5.85-24.764-14.625l-2.006-3.864-78.106-167.913c-0.956-1.98-0.956-3.865-0.956-5.845 0-7.83 5.928-13.68 13.863-13.68 2.965 0 5.928 0.944 8.893 2.924l91.965 64.43c6.884 3.864 14.82 6.79 23.708 6.79 4.972 0 9.85-0.945 14.822-2.926L861.71 282.479c-77.149-89.804-204.684-148.384-349.135-148.384-235.371 0-427.242 157.158-427.242 351.294 0 105.368 57.361 201.017 147.323 265.447 6.88 4.905 11.852 13.68 11.852 22.45 0 2.925-0.957 5.85-2.006 8.775-6.881 26.318-18.831 69.334-18.831 71.223-0.958 2.92-2.013 6.79-2.013 10.75 0 7.83 5.929 13.68 13.865 13.68 2.963 0 5.928-0.944 7.935-2.925l92.922-53.674c6.885-3.87 14.82-6.794 22.756-6.794 3.916 0 8.889 0.944 12.81 1.98 43.496 12.644 91.012 19.53 139.48 19.53 235.372 0 427.24-157.158 427.24-351.294 0-58.58-17.78-114.143-48.467-163.003l-491.39 280.07-2.963 1.98z\" fill=\"#09BB07\" p-id=\"1369\"></path></svg>';\n\tlet qqSvg = '<svg t=\"1602939546187\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1561\" width=\"32\" height=\"32\"><path d=\"M511.09761 957.257c-80.159 0-153.737-25.019-201.11-62.386-24.057 6.702-54.831 17.489-74.252 30.864-16.617 11.439-14.546 23.106-11.55 27.816 13.15 20.689 225.583 13.211 286.912 6.767v-3.061z\" fill=\"#FAAD08\" p-id=\"1562\"></path><path d=\"M496.65061 957.257c80.157 0 153.737-25.019 201.11-62.386 24.057 6.702 54.83 17.489 74.253 30.864 16.616 11.439 14.543 23.106 11.55 27.816-13.15 20.689-225.584 13.211-286.914 6.767v-3.061z\" fill=\"#FAAD08\" p-id=\"1563\"></path><path d=\"M497.12861 474.524c131.934-0.876 237.669-25.783 273.497-35.34 8.541-2.28 13.11-6.364 13.11-6.364 0.03-1.172 0.542-20.952 0.542-31.155C784.27761 229.833 701.12561 57.173 496.64061 57.162 292.15661 57.173 209.00061 229.832 209.00061 401.665c0 10.203 0.516 29.983 0.547 31.155 0 0 3.717 3.821 10.529 5.67 33.078 8.98 140.803 35.139 276.08 36.034h0.972z\" fill=\"#000000\" p-id=\"1564\"></path><path d=\"M860.28261 619.782c-8.12-26.086-19.204-56.506-30.427-85.72 0 0-6.456-0.795-9.718 0.148-100.71 29.205-222.773 47.818-315.792 46.695h-0.962C410.88561 582.017 289.65061 563.617 189.27961 534.698 185.44461 533.595 177.87261 534.063 177.87261 534.063 166.64961 563.276 155.56661 593.696 147.44761 619.782 108.72961 744.168 121.27261 795.644 130.82461 796.798c20.496 2.474 79.78-93.637 79.78-93.637 0 97.66 88.324 247.617 290.576 248.996a718.01 718.01 0 0 1 5.367 0C708.80161 950.778 797.12261 800.822 797.12261 703.162c0 0 59.284 96.111 79.783 93.637 9.55-1.154 22.093-52.63-16.623-177.017\" fill=\"#000000\" p-id=\"1565\"></path><path d=\"M434.38261 316.917c-27.9 1.24-51.745-30.106-53.24-69.956-1.518-39.877 19.858-73.207 47.764-74.454 27.875-1.224 51.703 30.109 53.218 69.974 1.527 39.877-19.853 73.2-47.742 74.436m206.67-69.956c-1.494 39.85-25.34 71.194-53.24 69.956-27.888-1.238-49.269-34.559-47.742-74.435 1.513-39.868 25.341-71.201 53.216-69.974 27.909 1.247 49.285 34.576 47.767 74.453\" fill=\"#FFFFFF\" p-id=\"1566\"></path><path d=\"M683.94261 368.627c-7.323-17.609-81.062-37.227-172.353-37.227h-0.98c-91.29 0-165.031 19.618-172.352 37.227a6.244 6.244 0 0 0-0.535 2.505c0 1.269 0.393 2.414 1.006 3.386 6.168 9.765 88.054 58.018 171.882 58.018h0.98c83.827 0 165.71-48.25 171.881-58.016a6.352 6.352 0 0 0 1.002-3.395c0-0.897-0.2-1.736-0.531-2.498\" fill=\"#FAAD08\" p-id=\"1567\"></path><path d=\"M467.63161 256.377c1.26 15.886-7.377 30-19.266 31.542-11.907 1.544-22.569-10.083-23.836-25.978-1.243-15.895 7.381-30.008 19.25-31.538 11.927-1.549 22.607 10.088 23.852 25.974m73.097 7.935c2.533-4.118 19.827-25.77 55.62-17.886 9.401 2.07 13.75 5.116 14.668 6.316 1.355 1.77 1.726 4.29 0.352 7.684-2.722 6.725-8.338 6.542-11.454 5.226-2.01-0.85-26.94-15.889-49.905 6.553-1.579 1.545-4.405 2.074-7.085 0.242-2.678-1.834-3.786-5.553-2.196-8.135\" fill=\"#000000\" p-id=\"1568\"></path><path d=\"M504.33261 584.495h-0.967c-63.568 0.752-140.646-7.504-215.286-21.92-6.391 36.262-10.25 81.838-6.936 136.196 8.37 137.384 91.62 223.736 220.118 224.996H506.48461c128.498-1.26 211.748-87.612 220.12-224.996 3.314-54.362-0.547-99.938-6.94-136.203-74.654 14.423-151.745 22.684-215.332 21.927\" fill=\"#FFFFFF\" p-id=\"1569\"></path><path d=\"M323.27461 577.016v137.468s64.957 12.705 130.031 3.91V591.59c-41.225-2.262-85.688-7.304-130.031-14.574\" fill=\"#EB1C26\" p-id=\"1570\"></path><path d=\"M788.09761 432.536s-121.98 40.387-283.743 41.539h-0.962c-161.497-1.147-283.328-41.401-283.744-41.539l-40.854 106.952c102.186 32.31 228.837 53.135 324.598 51.926l0.96-0.002c95.768 1.216 222.4-19.61 324.6-51.924l-40.855-106.952z\" fill=\"#EB1C26\" p-id=\"1571\"></path></svg>';\n\tlet otherSvg = '<svg t=\"1624130822567\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"9818\" width=\"30\" height=\"30\"><path d=\"M630.784 686.08c6.144 8.192 8.192 18.432 4.096 28.672s-12.288 16.384-22.528 18.432c-14.336 2.048-30.72 4.096-47.104 4.096-34.816 0-90.112-4.096-149.504-26.624-32.768-12.288-61.44-43.008-88.064-71.68-16.384-20.48-47.104-53.248-59.392-53.248 0 2.048 0 6.144 4.096 18.432 22.528 59.392 122.88 161.792 184.32 161.792h296.96v-61.44c-59.392-24.576-124.928-49.152-157.696-61.44 8.192 12.288 22.528 28.672 34.816 43.008zM512 0C229.376 0 0 229.376 0 512s229.376 512 512 512 512-229.376 512-512S794.624 0 512 0z m305.152 796.672c0 16.384-12.288 28.672-28.672 28.672H458.752v-2.048c-94.208 0-208.896-120.832-239.616-198.656-16.384-45.056-4.096-69.632 10.24-81.92 10.24-10.24 24.576-14.336 38.912-14.336 36.864 0 67.584 32.768 102.4 69.632 22.528 24.576 47.104 51.2 67.584 59.392 43.008 16.384 83.968 22.528 114.688 22.528-14.336-18.432-18.432-24.576-18.432-28.672-1.536-4.096-2.56-8.192-3.072-12.288-4.096 5.12-10.24 8.192-17.408 8.192-12.288 0-22.528-10.24-22.528-22.528v-45.056h-43.008c-12.288 0-22.528-10.24-22.528-22.528 0-12.288 10.24-22.528 22.528-22.528H491.52V512h-43.008c-12.288 0-22.528-10.24-22.528-22.528 0-12.288 10.24-22.528 22.528-22.528H481.28l-49.152-49.152c-8.192-8.192-8.192-22.528 0-30.72 8.192-8.192 22.528-8.192 30.72 0l49.152 49.152 51.2-49.152c8.192-8.192 22.528-8.192 30.72 0 8.192 10.24 8.192 22.528-2.048 30.72l-51.2 49.152h34.816c12.288 0 22.528 10.24 22.528 22.528 0 12.288-10.24 22.528-22.528 22.528H532.48v22.528h47.104c12.288 0 22.528 10.24 22.528 22.528s-10.24 22.528-22.528 22.528h-43.008v33.28c1.024-2.048 2.56-4.608 4.096-6.656 10.24-14.336 26.624-22.528 43.008-22.528h8.192c8.192 2.048 28.672 8.192 61.44 20.48 38.912-36.864 61.44-88.064 61.44-143.36 0-110.592-90.112-200.704-200.704-200.704S313.344 350.208 313.344 460.8c0 8.192 0 18.432 2.048 26.624s0 14.336-6.144 20.48c-4.096 6.144-12.288 10.24-18.432 10.24H286.72c-14.336 0-26.624-10.24-28.672-24.576-2.048-10.24-2.048-22.528-2.048-32.768 0-141.312 114.688-258.048 258.048-258.048 141.312 0 258.048 114.688 258.048 258.048 0 61.44-22.528 118.784-61.44 165.888 38.912 14.336 73.728 28.672 88.064 34.816 10.24 4.096 18.432 14.336 18.432 26.624v108.544z\" fill=\"#22b6f2\" p-id=\"9819\"></path></svg>';\n\tlet paypal = '<svg t=\"1603032405616\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"973\" width=\"32\" height=\"32\"><path d=\"M241.534 764.95H188.01c-3.692 0-7.385 1.852-7.385 7.408l-22.149 138.886c0 1.852 1.846 3.704 3.692 3.704h25.842c3.692 0 7.38-1.852 7.38-7.408l7.384-38.888c0-3.705 3.692-7.41 7.384-7.41h18.458c35.066 0 57.216-18.516 62.754-51.848 1.846-14.813 0-25.927-7.384-35.184-9.227-5.556-22.15-9.26-42.452-9.26z m5.538 50c-1.846 20.367-18.456 20.367-33.221 20.367h-9.23l7.383-35.184c0-1.852 1.847-5.552 3.688-5.552h3.692c9.232 0 20.304 0 23.996 7.404 3.692 1.852 5.538 7.409 3.692 12.966z m158.73 0h-25.84c-1.846 0-3.692 1.848-3.692 3.7l-1.846 7.41-1.846-1.853c-7.381-9.256-18.458-11.109-31.376-11.109-29.53 0-53.524 22.219-57.216 53.701-1.846 14.813 0 29.628 9.23 40.74 9.226 9.257 20.303 12.962 33.222 12.962 12.918 0 25.84-3.705 35.067-14.814l-1.846 7.41c0 1.851 1.846 3.7 3.692 3.7h23.995c3.693 0 7.38-1.849 7.38-7.405l12.923-88.89c1.846-3.704 0-5.551-1.846-5.551z m-38.758 51.85c-1.847 14.812-14.765 24.074-29.534 24.074-7.38 0-12.918-1.852-18.457-7.408-3.692-3.706-3.692-11.11-3.692-18.519 1.846-14.813 14.77-24.074 29.533-24.074 7.385 0 12.919 1.853 18.457 7.41 3.693 5.556 7.385 11.108 3.693 18.516z m179.033-51.85h-25.84c-1.847 0-3.693 1.848-7.385 1.848l-35.068 53.706-14.764-51.853c0-1.853-3.692-3.7-7.385-3.7h-25.837c-1.846 0-3.692 1.847-3.692 3.7v1.852l29.529 85.184-25.837 38.889c-1.846 1.852 0 3.704 0 7.408h29.53c1.846 0 3.692-1.852 7.384-1.852l86.746-127.777c-3.692-1.852-5.535-5.557-7.38-7.404z\" fill=\"#253B80\" p-id=\"974\"></path><path d=\"M632.823 764.95h-55.37c-3.692 0-7.38 1.852-7.38 7.408l-22.15 140.738c0 1.852 1.843 3.7 3.692 3.7h29.53c1.846 0 3.692-1.848 3.692-3.7l7.38-40.74c0-3.704 3.692-7.409 7.385-7.409h18.457c35.067 0 57.216-18.517 62.754-51.849 1.846-14.817 0-25.927-7.384-35.188-9.226-9.256-22.149-12.96-40.606-12.96z m7.384 50c-1.846 20.367-18.456 20.367-33.22 20.367h-9.23l7.383-35.184c0-1.852 1.847-3.704 3.693-3.704h3.687c9.23 0 20.303 0 23.995 7.408 3.692 0 3.692 5.557 3.692 11.114z m155.04 0h-25.842c-1.842 0-3.688 1.848-3.688 3.7l-1.846 7.41-1.846-1.853c-7.384-9.256-18.456-11.109-31.38-11.109-29.528 0-53.524 22.219-57.216 53.701-1.846 14.813 0 29.628 9.23 40.74 9.227 9.257 20.304 12.962 33.222 12.962 12.918 0 25.842-3.705 35.068-14.814l-1.846 7.41c0 1.851 1.846 3.7 3.692 3.7h23.994c3.692 0 7.386-1.849 7.386-7.405l12.918-88.89c3.692-3.704 3.692-5.551-1.846-5.551z m-35.068 51.85c-1.846 14.812-14.764 24.074-29.534 24.074-7.38 0-12.918-1.852-18.456-7.408-3.688-3.706-3.688-11.11-3.688-18.519 1.842-14.813 14.764-24.074 29.53-24.074 7.384 0 12.918 1.853 18.456 7.41 3.692 5.556 3.692 11.108 3.692 18.516z m66.443-98.146l-22.145 142.59c0 1.852 1.846 3.704 3.688 3.704h22.15c3.692 0 7.384-1.852 7.384-7.408l22.148-140.738c0-1.853-1.846-3.705-3.692-3.705H832.16c-3.688 1.852-5.538 3.705-5.538 5.557z\" fill=\"#179BD7\" p-id=\"975\"></path><path d=\"M426.106 690.878l11.072-68.519H298.75l77.52-503.69c0-1.852 0-1.852 1.846-5.557 0 0 1.846-1.852 5.538-1.852h191.953c64.6 0 107.052 14.813 131.048 40.74 9.226 11.11 16.61 24.074 22.148 38.888 1.842 18.518 1.842 35.183 0 55.554v16.665l11.073 5.556c7.385 5.557 16.61 9.261 22.149 16.667 9.226 11.113 16.61 24.074 18.456 40.739 1.848 18.518 1.848 38.888-1.846 57.406-5.538 24.074-11.072 44.445-23.994 64.815-9.226 16.665-22.15 31.479-38.76 40.74-14.764 9.26-33.222 18.517-49.832 24.074-22.149 5.553-40.606 7.405-60.909 7.405h-22.15c-22.148 0-40.605 16.67-44.297 38.891v7.406L520.236 685.32v5.557s0 1.852-1.846 1.852h-1.846c0-3.704-90.438-1.852-90.438-1.852z\" fill=\"#253B80\" p-id=\"976\"></path><path d=\"M765.717 248.294c0 5.556-1.846 7.409-1.846 12.96-27.687 138.887-116.279 183.331-230.716 183.331h-59.063c-14.764 0-23.991 9.261-27.683 24.075l-29.533 192.587-7.381 55.558c-1.846 7.404 5.535 14.813 12.92 16.665h107.052c12.918 0 22.148-9.26 23.991-22.222v-5.556l20.303-125.925 1.846-7.405c1.846-12.962 12.922-22.222 23.995-22.222h14.764c101.515 0 177.189-42.593 203.03-161.108 9.226-49.997 5.537-92.59-20.303-120.369-11.072-7.408-18.458-14.813-31.376-20.37z\" fill=\"#179BD7\" p-id=\"977\"></path><path d=\"M738.03 237.185c-5.539 0-7.385-1.853-12.919-1.853-5.538 0-9.23-1.852-12.922-1.852-16.61-1.852-35.068-5.557-51.678-5.557H505.472c-12.923 0-22.15 9.262-23.995 22.223L450.1 463.103v5.557c1.846-14.814 14.765-24.075 27.683-24.075h59.063c114.433 0 204.876-46.292 230.716-183.33 0-5.552 1.842-7.405 1.842-12.961-7.38-1.852-14.764-7.409-22.144-9.257l-9.23-1.852c0 1.852 0 0 0 0z\" fill=\"#222D65\" p-id=\"978\"></path><path d=\"M481.477 251.998c1.846-12.96 12.918-22.223 23.995-22.223h155.039c16.61 0 35.067 0 51.678 5.557 5.538 0 9.23 1.853 12.922 1.853 5.534 0 7.38 1.852 12.92 1.852l5.538 1.848c7.38 1.852 14.764 5.557 22.148 9.261 7.38-49.997 0-85.185-27.687-114.812-29.53-35.183-84.904-50.001-153.193-50.001H385.5c-14.764 0-23.995 9.26-27.687 24.075l-81.211 529.616c-1.843 9.261 5.538 16.671 14.768 20.371h125.506l31.379-196.292c1.846 0 33.222-211.105 33.222-211.105z\" fill=\"#253B80\" p-id=\"979\"></path></svg>';\n\tlet coinbaseSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" version=\"1.1\" viewBox=\"0 0 32 32\"><circle style=\"opacity:0.2\" cx=\"16\" cy=\"17\" r=\"14\"/><circle style=\"fill:#f7931a\" cx=\"16\" cy=\"16\" r=\"14\"/><path style=\"opacity:0.2\" d=\"m 13,8 0,3 -3.0000007,0 0,2.000001 c 0,0 1.1456507,-0.01999 1.1273687,0 0.613377,-0.0093 0.808708,0.436058 0.872215,0.733073 l 0,6.600259 c -0.02351,0.1877 -0.0035,0.653333 -0.432202,0.666667 0.0198,0.01733 -1.5673817,0 -1.5673817,0 l 0,2 2.1688177,0 C 12.535544,22.98667 12.645729,23 13,23 l 0,3 2,0 0,-3 0.97917,0 0.04166,3 L 18,26 17.97917,23 C 20.52239,22.815365 22,21.597881 21.983179,19.5 22,17.570087 20.456651,16.506411 19.5,16.5 20.456506,16.503769 21,15.463447 21,14 21,12 19.619804,11 17.999999,11 l 0,-3 L 16,8 l 0,3 c -0.398082,0 -0.595857,-0.01467 -1,0 l 0,-3 z m 2,5.000001 C 17,13 18,13 18,14.5 18,16 17,16 15,16 Z M 15,18 c 2.666111,8.3e-5 4.000276,-0.166641 4,1.5 2.76e-4,1.666775 -1.333889,1.5 -4,1.5 z\"/><path style=\"fill:#ffffff\" d=\"m 13,7 0,2.9999995 -3.0000007,0 0,2.0000015 c 0,0 1.1456507,-0.01999 1.1273687,0 0.613377,-0.0093 0.808708,0.436058 0.872215,0.733073 l 0,6.600259 c -0.02351,0.1877 -0.0035,0.653333 -0.432202,0.666667 0.0198,0.01733 -1.5673817,0 -1.5673817,0 l 0,2 2.1688177,0 C 12.535544,21.98667 12.645729,22 13,22 l 0,3 2,0 0,-3 0.97917,0 0.04166,3 L 18,25 17.97917,22 C 20.52239,21.815365 22,20.597881 21.983179,18.5 22,16.570087 20.456651,15.506411 19.5,15.5 20.456506,15.503769 21,14.463447 21,13 21,11 19.619804,10 17.999999,10 l 0,-3 L 16,7 l 0,3 c -0.398082,0 -0.595857,-0.01467 -1,0 l 0,-3 z m 2,5.000001 C 17,12 18,12 18,13.5 18,15 17,15 15,15 Z M 15,17 c 2.666111,8.3e-5 4.000276,-0.166641 4,1.5 2.76e-4,1.666775 -1.333889,1.5 -4,1.5 z\"/><path style=\"fill:#ffffff;opacity:0.2\" d=\"M 16 2 A 14 14 0 0 0 2 16 A 14 14 0 0 0 2.0214844 16.585938 A 14 14 0 0 1 16 3 A 14 14 0 0 1 29.978516 16.414062 A 14 14 0 0 0 30 16 A 14 14 0 0 0 16 2 z\"/></svg>';\n\tlet epusdtSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 2000 2000\" width=\"32\" height=\"32\"><path d=\"M1000,0c552.26,0,1000,447.74,1000,1000S1552.24,2000,1000,2000,0,1552.38,0,1000,447.68,0,1000,0\" fill=\"#53ae94\"/><path d=\"M1123.42,866.76V718H1463.6V491.34H537.28V718H877.5V866.64C601,879.34,393.1,934.1,393.1,999.7s208,120.36,484.4,133.14v476.5h246V1132.8c276-12.74,483.48-67.46,483.48-133s-207.48-120.26-483.48-133m0,225.64v-0.12c-6.94.44-42.6,2.58-122,2.58-63.48,0-108.14-1.8-123.88-2.62v0.2C633.34,1081.66,451,1039.12,451,988.22S633.36,894.84,877.62,884V1050.1c16,1.1,61.76,3.8,124.92,3.8,75.86,0,114-3.16,121-3.8V884c243.8,10.86,425.72,53.44,425.72,104.16s-182,93.32-425.72,104.18\" fill=\"#fff\"/></svg>';\n\tlet paySvgArr = {\n\t\tzfbf2f     : alipaySvg,\n\t\taliweb     : alipaySvg,\n\t\taliwap     : alipaySvg,\n\t\tmqq        : qqSvg,\n\t\tmzfb       : alipaySvg,\n\t\tmwx        : weChatSvg,\n\t\tpszfb      : alipaySvg,\n\t\tpswx       : weChatSvg,\n\t\twescan     : weChatSvg,\n\t\tpayjswescan: weChatSvg,\n\t\talipay     : alipaySvg,\n\t\twxpay      : weChatSvg,\n\t\tqqpay      : qqSvg,\n\t\tpaypal     : paypal,\n\t\tmgcoin     : otherSvg,\n\t\tcoinbase   : coinbaseSvg,\n\t\tepusdt     : epusdtSvg,\n\t\tvzfb       : alipaySvg,\n\t\tvwx        : weChatSvg,\n\t};\n\t// 付款方式按钮\n\t$('.pay-type').each(function () {\n\t\tlet t = $(this), type = t.data('type'), name = t.data('name');\n\t\tif (paySvgArr[type] !== undefined) {\n\t\t\tt.append(paySvgArr[type] + ' ' + name);\n\t\t} else {\n\t\t\tt.append(otherSvg + ' ' + name);\n\t\t}\n\t}).click(function () {\n\t\t$('.pay-type').removeClass('active')\n\t\t$(this).toggleClass(\"active\");\n\t\t$('input[name=payway]').val($(this).data('id'));\n\t});\n\t\t$(window).scroll(function () {\n\t\tif ($(window).scrollTop() >= 100) {\n\t\t\t$(\".back-to-top\").fadeIn(600);\n\t\t} else {\n\t\t\t$(\".back-to-top\").stop(true, true).fadeOut(600);\n\t\t}\n\t});\n\t// 置顶\n\t$(\".back-to-top\").on(\"click\", function () {\n\t\t$(\"html, body\").animate({\n\t\t\tscrollTop: 0\n\t\t}, 500);\n\t});\n\t// 设置公告\n\tlet expiration = localStorage.announcement;\n\tif (new Date().getTime() > expiration || expiration == null) {\n\t\t$('#notice-modal').modal();\n\t\tlet setTime = new Date().getTime() + (1 * 60 * 60 * 1000);\n\t\tlocalStorage.setItem(\"announcement\",setTime);\n\t}\n\t// 版权\n\tconsole.group(\"Faka\");console.log(\"Name: 独角数卡\");console.log(\"Github: https://github.com/assimon/dujiaoka\");console.groupEnd();\n\tconsole.group(\"Theme\");console.log(\"Name: Hyper Theme\");console.log(\"Author: Bimoes\");console.groupEnd();\n});\n// 图片懒加载\n$(function () {\n  var imgArr = document.querySelectorAll(\"img[data-src]\");\n  for (var i = 0; i < imgArr.length; i++) {\n    imgArr[i].style.opacity = \"0\";\n  }\n  Limg();\n  window.addEventListener(\"scroll\", function () {\n    Limg();\n  });\n  function Limg() {\n    var viewHeight = document.documentElement.clientHeight\n    var limg = document.querySelectorAll(\"img[data-src]\")\n    Array.prototype.forEach.call(limg, function (item, index) {\n      var rect\n      if (item.getAttribute(\"data-src\") === \"\")\n        return\n      rect = item.getBoundingClientRect()\n      if (rect.bottom >= 0 && rect.top < viewHeight) {\n        (function () {\n          var img = new Image()\n          img.src = item.getAttribute(\"data-src\")\n          item.src = img.src\n          var j = 0\n          setInterval(function () {\n            j += 0.2\n            if (j <= 1) {\n              item.style.opacity = j\n              return\n            }\n          }, 100)\n          item.removeAttribute('data-src')\n        })()\n      }\n    })\n  }\n});\n"
  },
  {
    "path": "public/assets/luna/js/viewerjs/viewer.common.js",
    "content": "/*!\n * Viewer.js v1.7.1\n * https://fengyuanchen.github.io/viewerjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2020-09-29T13:45:20.981Z\n */\n\n'use strict';\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nvar DEFAULTS = {\n  /**\n   * Enable a modal backdrop, specify `static` for a backdrop\n   * which doesn't close the modal on click.\n   * @type {boolean}\n   */\n  backdrop: true,\n\n  /**\n   * Show the button on the top-right of the viewer.\n   * @type {boolean}\n   */\n  button: true,\n\n  /**\n   * Show the navbar.\n   * @type {boolean | number}\n   */\n  navbar: true,\n\n  /**\n   * Specify the visibility and the content of the title.\n   * @type {boolean | number | Function | Array}\n   */\n  title: true,\n\n  /**\n   * Show the toolbar.\n   * @type {boolean | number | Object}\n   */\n  toolbar: true,\n\n  /**\n   * Custom class name(s) to add to the viewer's root element.\n   * @type {string}\n   */\n  className: '',\n\n  /**\n   * Define where to put the viewer in modal mode.\n   * @type {string | Element}\n   */\n  container: 'body',\n\n  /**\n   * Filter the images for viewing. Return true if the image is viewable.\n   * @type {Function}\n   */\n  filter: null,\n\n  /**\n   * Enable to request fullscreen when play.\n   * @type {boolean}\n   */\n  fullscreen: true,\n\n  /**\n   * Define the extra attributes to inherit from the original image.\n   * @type {Array}\n   */\n  inheritedAttributes: ['crossOrigin', 'decoding', 'isMap', 'loading', 'referrerPolicy', 'sizes', 'srcset', 'useMap'],\n\n  /**\n   * Define the initial index of image for viewing.\n   * @type {number}\n   */\n  initialViewIndex: 0,\n\n  /**\n   * Enable inline mode.\n   * @type {boolean}\n   */\n  inline: false,\n\n  /**\n   * The amount of time to delay between automatically cycling an image when playing.\n   * @type {number}\n   */\n  interval: 5000,\n\n  /**\n   * Enable keyboard support.\n   * @type {boolean}\n   */\n  keyboard: true,\n\n  /**\n   * Indicate if show a loading spinner when load image or not.\n   * @type {boolean}\n   */\n  loading: true,\n\n  /**\n   * Indicate if enable loop viewing or not.\n   * @type {boolean}\n   */\n  loop: true,\n\n  /**\n   * Min width of the viewer in inline mode.\n   * @type {number}\n   */\n  minWidth: 200,\n\n  /**\n   * Min height of the viewer in inline mode.\n   * @type {number}\n   */\n  minHeight: 100,\n\n  /**\n   * Enable to move the image.\n   * @type {boolean}\n   */\n  movable: true,\n\n  /**\n   * Enable to rotate the image.\n   * @type {boolean}\n   */\n  rotatable: true,\n\n  /**\n   * Enable to scale the image.\n   * @type {boolean}\n   */\n  scalable: true,\n\n  /**\n   * Enable to zoom the image.\n   * @type {boolean}\n   */\n  zoomable: true,\n\n  /**\n   * Enable to zoom the current image by dragging on the touch screen.\n   * @type {boolean}\n   */\n  zoomOnTouch: true,\n\n  /**\n   * Enable to zoom the image by wheeling mouse.\n   * @type {boolean}\n   */\n  zoomOnWheel: true,\n\n  /**\n   * Enable to slide to the next or previous image by swiping on the touch screen.\n   * @type {boolean}\n   */\n  slideOnTouch: true,\n\n  /**\n   * Indicate if toggle the image size between its natural size\n   * and initial size when double click on the image or not.\n   * @type {boolean}\n   */\n  toggleOnDblclick: true,\n\n  /**\n   * Show the tooltip with image ratio (percentage) when zoom in or zoom out.\n   * @type {boolean}\n   */\n  tooltip: true,\n\n  /**\n   * Enable CSS3 Transition for some special elements.\n   * @type {boolean}\n   */\n  transition: true,\n\n  /**\n   * Define the CSS `z-index` value of viewer in modal mode.\n   * @type {number}\n   */\n  zIndex: 2015,\n\n  /**\n   * Define the CSS `z-index` value of viewer in inline mode.\n   * @type {number}\n   */\n  zIndexInline: 0,\n\n  /**\n   * Define the ratio when zoom the image by wheeling mouse.\n   * @type {number}\n   */\n  zoomRatio: 0.1,\n\n  /**\n   * Define the min ratio of the image when zoom out.\n   * @type {number}\n   */\n  minZoomRatio: 0.01,\n\n  /**\n   * Define the max ratio of the image when zoom in.\n   * @type {number}\n   */\n  maxZoomRatio: 100,\n\n  /**\n   * Define where to get the original image URL for viewing.\n   * @type {string | Function}\n   */\n  url: 'src',\n\n  /**\n   * Event shortcuts.\n   * @type {Function}\n   */\n  ready: null,\n  show: null,\n  shown: null,\n  hide: null,\n  hidden: null,\n  view: null,\n  viewed: null,\n  zoom: null,\n  zoomed: null,\n  play: null,\n  stop: null\n};\n\nvar TEMPLATE = '<div class=\"viewer-container\" touch-action=\"none\">' + '<div class=\"viewer-canvas\"></div>' + '<div class=\"viewer-footer\">' + '<div class=\"viewer-title\"></div>' + '<div class=\"viewer-toolbar\"></div>' + '<div class=\"viewer-navbar\">' + '<ul class=\"viewer-list\"></ul>' + '</div>' + '</div>' + '<div class=\"viewer-tooltip\"></div>' + '<div role=\"button\" class=\"viewer-button\" data-viewer-action=\"mix\"></div>' + '<div class=\"viewer-player\"></div>' + '</div>';\n\nvar IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nvar WINDOW = IS_BROWSER ? window : {};\nvar IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\nvar HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\nvar NAMESPACE = 'viewer'; // Actions\n\nvar ACTION_MOVE = 'move';\nvar ACTION_SWITCH = 'switch';\nvar ACTION_ZOOM = 'zoom'; // Classes\n\nvar CLASS_ACTIVE = \"\".concat(NAMESPACE, \"-active\");\nvar CLASS_CLOSE = \"\".concat(NAMESPACE, \"-close\");\nvar CLASS_FADE = \"\".concat(NAMESPACE, \"-fade\");\nvar CLASS_FIXED = \"\".concat(NAMESPACE, \"-fixed\");\nvar CLASS_FULLSCREEN = \"\".concat(NAMESPACE, \"-fullscreen\");\nvar CLASS_FULLSCREEN_EXIT = \"\".concat(NAMESPACE, \"-fullscreen-exit\");\nvar CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\nvar CLASS_HIDE_MD_DOWN = \"\".concat(NAMESPACE, \"-hide-md-down\");\nvar CLASS_HIDE_SM_DOWN = \"\".concat(NAMESPACE, \"-hide-sm-down\");\nvar CLASS_HIDE_XS_DOWN = \"\".concat(NAMESPACE, \"-hide-xs-down\");\nvar CLASS_IN = \"\".concat(NAMESPACE, \"-in\");\nvar CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\nvar CLASS_LOADING = \"\".concat(NAMESPACE, \"-loading\");\nvar CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\");\nvar CLASS_OPEN = \"\".concat(NAMESPACE, \"-open\");\nvar CLASS_SHOW = \"\".concat(NAMESPACE, \"-show\");\nvar CLASS_TRANSITION = \"\".concat(NAMESPACE, \"-transition\"); // Events\n\nvar EVENT_CLICK = 'click';\nvar EVENT_DBLCLICK = 'dblclick';\nvar EVENT_DRAG_START = 'dragstart';\nvar EVENT_HIDDEN = 'hidden';\nvar EVENT_HIDE = 'hide';\nvar EVENT_KEY_DOWN = 'keydown';\nvar EVENT_LOAD = 'load';\nvar EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\nvar EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\nvar EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\nvar EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\nvar EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\nvar EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\nvar EVENT_READY = 'ready';\nvar EVENT_RESIZE = 'resize';\nvar EVENT_SHOW = 'show';\nvar EVENT_SHOWN = 'shown';\nvar EVENT_TRANSITION_END = 'transitionend';\nvar EVENT_VIEW = 'view';\nvar EVENT_VIEWED = 'viewed';\nvar EVENT_WHEEL = 'wheel';\nvar EVENT_ZOOM = 'zoom';\nvar EVENT_ZOOMED = 'zoomed';\nvar EVENT_PLAY = 'play';\nvar EVENT_STOP = 'stop'; // Data keys\n\nvar DATA_ACTION = \"\".concat(NAMESPACE, \"Action\"); // RegExps\n\nvar REGEXP_SPACES = /\\s\\s*/; // Misc\n\nvar BUTTONS = ['zoom-in', 'zoom-out', 'one-to-one', 'reset', 'prev', 'play', 'next', 'rotate-left', 'rotate-right', 'flip-horizontal', 'flip-vertical'];\n\n/**\n * Check if the given value is a string.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a string, else `false`.\n */\n\nfunction isString(value) {\n  return typeof value === 'string';\n}\n/**\n * Check if the given value is not a number.\n */\n\nvar isNaN = Number.isNaN || WINDOW.isNaN;\n/**\n * Check if the given value is a number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a number, else `false`.\n */\n\nfunction isNumber(value) {\n  return typeof value === 'number' && !isNaN(value);\n}\n/**\n * Check if the given value is undefined.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\n */\n\nfunction isUndefined(value) {\n  return typeof value === 'undefined';\n}\n/**\n * Check if the given value is an object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is an object, else `false`.\n */\n\nfunction isObject(value) {\n  return _typeof(value) === 'object' && value !== null;\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Check if the given value is a plain object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\n */\n\nfunction isPlainObject(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n\n  try {\n    var _constructor = value.constructor;\n    var prototype = _constructor.prototype;\n    return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n  } catch (error) {\n    return false;\n  }\n}\n/**\n * Check if the given value is a function.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a function, else `false`.\n */\n\nfunction isFunction(value) {\n  return typeof value === 'function';\n}\n/**\n * Iterate the given data.\n * @param {*} data - The data to iterate.\n * @param {Function} callback - The process function for each element.\n * @returns {*} The original data.\n */\n\nfunction forEach(data, callback) {\n  if (data && isFunction(callback)) {\n    if (Array.isArray(data) || isNumber(data.length)\n    /* array-like */\n    ) {\n        var length = data.length;\n        var i;\n\n        for (i = 0; i < length; i += 1) {\n          if (callback.call(data, data[i], i, data) === false) {\n            break;\n          }\n        }\n      } else if (isObject(data)) {\n      Object.keys(data).forEach(function (key) {\n        callback.call(data, data[key], key, data);\n      });\n    }\n  }\n\n  return data;\n}\n/**\n * Extend the given object.\n * @param {*} obj - The object to be extended.\n * @param {*} args - The rest objects which will be merged to the first object.\n * @returns {Object} The extended object.\n */\n\nvar assign = Object.assign || function assign(obj) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  if (isObject(obj) && args.length > 0) {\n    args.forEach(function (arg) {\n      if (isObject(arg)) {\n        Object.keys(arg).forEach(function (key) {\n          obj[key] = arg[key];\n        });\n      }\n    });\n  }\n\n  return obj;\n};\nvar REGEXP_SUFFIX = /^(?:width|height|left|top|marginLeft|marginTop)$/;\n/**\n * Apply styles to the given element.\n * @param {Element} element - The target element.\n * @param {Object} styles - The styles for applying.\n */\n\nfunction setStyle(element, styles) {\n  var style = element.style;\n  forEach(styles, function (value, property) {\n    if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n      value += 'px';\n    }\n\n    style[property] = value;\n  });\n}\n/**\n * Escape a string for using in HTML.\n * @param {String} value - The string to escape.\n * @returns {String} Returns the escaped string.\n */\n\nfunction escapeHTMLEntities(value) {\n  return isString(value) ? value.replace(/&(?!amp;|quot;|#39;|lt;|gt;)/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;') : value;\n}\n/**\n * Check if the given element has a special class.\n * @param {Element} element - The element to check.\n * @param {string} value - The class to search.\n * @returns {boolean} Returns `true` if the special class was found.\n */\n\nfunction hasClass(element, value) {\n  if (!element || !value) {\n    return false;\n  }\n\n  return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n}\n/**\n * Add classes to the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be added.\n */\n\nfunction addClass(element, value) {\n  if (!element || !value) {\n    return;\n  }\n\n  if (isNumber(element.length)) {\n    forEach(element, function (elem) {\n      addClass(elem, value);\n    });\n    return;\n  }\n\n  if (element.classList) {\n    element.classList.add(value);\n    return;\n  }\n\n  var className = element.className.trim();\n\n  if (!className) {\n    element.className = value;\n  } else if (className.indexOf(value) < 0) {\n    element.className = \"\".concat(className, \" \").concat(value);\n  }\n}\n/**\n * Remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be removed.\n */\n\nfunction removeClass(element, value) {\n  if (!element || !value) {\n    return;\n  }\n\n  if (isNumber(element.length)) {\n    forEach(element, function (elem) {\n      removeClass(elem, value);\n    });\n    return;\n  }\n\n  if (element.classList) {\n    element.classList.remove(value);\n    return;\n  }\n\n  if (element.className.indexOf(value) >= 0) {\n    element.className = element.className.replace(value, '');\n  }\n}\n/**\n * Add or remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be toggled.\n * @param {boolean} added - Add only.\n */\n\nfunction toggleClass(element, value, added) {\n  if (!value) {\n    return;\n  }\n\n  if (isNumber(element.length)) {\n    forEach(element, function (elem) {\n      toggleClass(elem, value, added);\n    });\n    return;\n  } // IE10-11 doesn't support the second parameter of `classList.toggle`\n\n\n  if (added) {\n    addClass(element, value);\n  } else {\n    removeClass(element, value);\n  }\n}\nvar REGEXP_HYPHENATE = /([a-z\\d])([A-Z])/g;\n/**\n * Transform the given string from camelCase to kebab-case\n * @param {string} value - The value to transform.\n * @returns {string} The transformed value.\n */\n\nfunction hyphenate(value) {\n  return value.replace(REGEXP_HYPHENATE, '$1-$2').toLowerCase();\n}\n/**\n * Get data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to get.\n * @returns {string} The data value.\n */\n\nfunction getData(element, name) {\n  if (isObject(element[name])) {\n    return element[name];\n  }\n\n  if (element.dataset) {\n    return element.dataset[name];\n  }\n\n  return element.getAttribute(\"data-\".concat(hyphenate(name)));\n}\n/**\n * Set data to the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to set.\n * @param {string} data - The data value.\n */\n\nfunction setData(element, name, data) {\n  if (isObject(data)) {\n    element[name] = data;\n  } else if (element.dataset) {\n    element.dataset[name] = data;\n  } else {\n    element.setAttribute(\"data-\".concat(hyphenate(name)), data);\n  }\n}\n\nvar onceSupported = function () {\n  var supported = false;\n\n  if (IS_BROWSER) {\n    var once = false;\n\n    var listener = function listener() {};\n\n    var options = Object.defineProperty({}, 'once', {\n      get: function get() {\n        supported = true;\n        return once;\n      },\n\n      /**\n       * This setter can fix a `TypeError` in strict mode\n       * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\n       * @param {boolean} value - The value to set\n       */\n      set: function set(value) {\n        once = value;\n      }\n    });\n    WINDOW.addEventListener('test', listener, options);\n    WINDOW.removeEventListener('test', listener, options);\n  }\n\n  return supported;\n}();\n/**\n * Remove event listener from the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n\n\nfunction removeListener(element, type, listener) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var handler = listener;\n  type.trim().split(REGEXP_SPACES).forEach(function (event) {\n    if (!onceSupported) {\n      var listeners = element.listeners;\n\n      if (listeners && listeners[event] && listeners[event][listener]) {\n        handler = listeners[event][listener];\n        delete listeners[event][listener];\n\n        if (Object.keys(listeners[event]).length === 0) {\n          delete listeners[event];\n        }\n\n        if (Object.keys(listeners).length === 0) {\n          delete element.listeners;\n        }\n      }\n    }\n\n    element.removeEventListener(event, handler, options);\n  });\n}\n/**\n * Add event listener to the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n\nfunction addListener(element, type, listener) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var _handler = listener;\n  type.trim().split(REGEXP_SPACES).forEach(function (event) {\n    if (options.once && !onceSupported) {\n      var _element$listeners = element.listeners,\n          listeners = _element$listeners === void 0 ? {} : _element$listeners;\n\n      _handler = function handler() {\n        delete listeners[event][listener];\n        element.removeEventListener(event, _handler, options);\n\n        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n          args[_key2] = arguments[_key2];\n        }\n\n        listener.apply(element, args);\n      };\n\n      if (!listeners[event]) {\n        listeners[event] = {};\n      }\n\n      if (listeners[event][listener]) {\n        element.removeEventListener(event, listeners[event][listener], options);\n      }\n\n      listeners[event][listener] = _handler;\n      element.listeners = listeners;\n    }\n\n    element.addEventListener(event, _handler, options);\n  });\n}\n/**\n * Dispatch event on the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Object} data - The additional event data.\n * @param {Object} options - The additional event options.\n * @returns {boolean} Indicate if the event is default prevented or not.\n */\n\nfunction dispatchEvent(element, type, data, options) {\n  var event; // Event and CustomEvent on IE9-11 are global objects, not constructors\n\n  if (isFunction(Event) && isFunction(CustomEvent)) {\n    event = new CustomEvent(type, _objectSpread2({\n      bubbles: true,\n      cancelable: true,\n      detail: data\n    }, options));\n  } else {\n    event = document.createEvent('CustomEvent');\n    event.initCustomEvent(type, true, true, data);\n  }\n\n  return element.dispatchEvent(event);\n}\n/**\n * Get the offset base on the document.\n * @param {Element} element - The target element.\n * @returns {Object} The offset data.\n */\n\nfunction getOffset(element) {\n  var box = element.getBoundingClientRect();\n  return {\n    left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n    top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n  };\n}\n/**\n * Get transforms base on the given object.\n * @param {Object} obj - The target object.\n * @returns {string} A string contains transform values.\n */\n\nfunction getTransforms(_ref) {\n  var rotate = _ref.rotate,\n      scaleX = _ref.scaleX,\n      scaleY = _ref.scaleY,\n      translateX = _ref.translateX,\n      translateY = _ref.translateY;\n  var values = [];\n\n  if (isNumber(translateX) && translateX !== 0) {\n    values.push(\"translateX(\".concat(translateX, \"px)\"));\n  }\n\n  if (isNumber(translateY) && translateY !== 0) {\n    values.push(\"translateY(\".concat(translateY, \"px)\"));\n  } // Rotate should come first before scale to match orientation transform\n\n\n  if (isNumber(rotate) && rotate !== 0) {\n    values.push(\"rotate(\".concat(rotate, \"deg)\"));\n  }\n\n  if (isNumber(scaleX) && scaleX !== 1) {\n    values.push(\"scaleX(\".concat(scaleX, \")\"));\n  }\n\n  if (isNumber(scaleY) && scaleY !== 1) {\n    values.push(\"scaleY(\".concat(scaleY, \")\"));\n  }\n\n  var transform = values.length ? values.join(' ') : 'none';\n  return {\n    WebkitTransform: transform,\n    msTransform: transform,\n    transform: transform\n  };\n}\n/**\n * Get an image name from an image url.\n * @param {string} url - The target url.\n * @example\n * // picture.jpg\n * getImageNameFromURL('https://domain.com/path/to/picture.jpg?size=1280×960')\n * @returns {string} A string contains the image name.\n */\n\nfunction getImageNameFromURL(url) {\n  return isString(url) ? decodeURIComponent(url.replace(/^.*\\//, '').replace(/[?&#].*$/, '')) : '';\n}\nvar IS_SAFARI = WINDOW.navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(WINDOW.navigator.userAgent);\n/**\n * Get an image's natural sizes.\n * @param {string} image - The target image.\n * @param {Object} options - The viewer options.\n * @param {Function} callback - The callback function.\n * @returns {HTMLImageElement} The new image.\n */\n\nfunction getImageNaturalSizes(image, options, callback) {\n  var newImage = document.createElement('img'); // Modern browsers (except Safari)\n\n  if (image.naturalWidth && !IS_SAFARI) {\n    callback(image.naturalWidth, image.naturalHeight);\n    return newImage;\n  }\n\n  var body = document.body || document.documentElement;\n\n  newImage.onload = function () {\n    callback(newImage.width, newImage.height);\n\n    if (!IS_SAFARI) {\n      body.removeChild(newImage);\n    }\n  };\n\n  forEach(options.inheritedAttributes, function (name) {\n    var value = image.getAttribute(name);\n\n    if (value !== null) {\n      newImage.setAttribute(name, value);\n    }\n  });\n  newImage.src = image.src; // iOS Safari will convert the image automatically\n  // with its orientation once append it into DOM\n\n  if (!IS_SAFARI) {\n    newImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\n    body.appendChild(newImage);\n  }\n\n  return newImage;\n}\n/**\n * Get the related class name of a responsive type number.\n * @param {string} type - The responsive type.\n * @returns {string} The related class name.\n */\n\nfunction getResponsiveClass(type) {\n  switch (type) {\n    case 2:\n      return CLASS_HIDE_XS_DOWN;\n\n    case 3:\n      return CLASS_HIDE_SM_DOWN;\n\n    case 4:\n      return CLASS_HIDE_MD_DOWN;\n\n    default:\n      return '';\n  }\n}\n/**\n * Get the max ratio of a group of pointers.\n * @param {string} pointers - The target pointers.\n * @returns {number} The result ratio.\n */\n\nfunction getMaxZoomRatio(pointers) {\n  var pointers2 = _objectSpread2({}, pointers);\n\n  var ratios = [];\n  forEach(pointers, function (pointer, pointerId) {\n    delete pointers2[pointerId];\n    forEach(pointers2, function (pointer2) {\n      var x1 = Math.abs(pointer.startX - pointer2.startX);\n      var y1 = Math.abs(pointer.startY - pointer2.startY);\n      var x2 = Math.abs(pointer.endX - pointer2.endX);\n      var y2 = Math.abs(pointer.endY - pointer2.endY);\n      var z1 = Math.sqrt(x1 * x1 + y1 * y1);\n      var z2 = Math.sqrt(x2 * x2 + y2 * y2);\n      var ratio = (z2 - z1) / z1;\n      ratios.push(ratio);\n    });\n  });\n  ratios.sort(function (a, b) {\n    return Math.abs(a) < Math.abs(b);\n  });\n  return ratios[0];\n}\n/**\n * Get a pointer from an event object.\n * @param {Object} event - The target event object.\n * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\n * @returns {Object} The result pointer contains start and/or end point coordinates.\n */\n\nfunction getPointer(_ref2, endOnly) {\n  var pageX = _ref2.pageX,\n      pageY = _ref2.pageY;\n  var end = {\n    endX: pageX,\n    endY: pageY\n  };\n  return endOnly ? end : _objectSpread2({\n    timeStamp: Date.now(),\n    startX: pageX,\n    startY: pageY\n  }, end);\n}\n/**\n * Get the center point coordinate of a group of pointers.\n * @param {Object} pointers - The target pointers.\n * @returns {Object} The center point coordinate.\n */\n\nfunction getPointersCenter(pointers) {\n  var pageX = 0;\n  var pageY = 0;\n  var count = 0;\n  forEach(pointers, function (_ref3) {\n    var startX = _ref3.startX,\n        startY = _ref3.startY;\n    pageX += startX;\n    pageY += startY;\n    count += 1;\n  });\n  pageX /= count;\n  pageY /= count;\n  return {\n    pageX: pageX,\n    pageY: pageY\n  };\n}\n\nvar render = {\n  render: function render() {\n    this.initContainer();\n    this.initViewer();\n    this.initList();\n    this.renderViewer();\n  },\n  initBody: function initBody() {\n    var ownerDocument = this.element.ownerDocument;\n    var body = ownerDocument.body || ownerDocument.documentElement;\n    this.body = body;\n    this.scrollbarWidth = window.innerWidth - ownerDocument.documentElement.clientWidth;\n    this.initialBodyPaddingRight = body.style.paddingRight;\n    this.initialBodyComputedPaddingRight = window.getComputedStyle(body).paddingRight;\n  },\n  initContainer: function initContainer() {\n    this.containerData = {\n      width: window.innerWidth,\n      height: window.innerHeight\n    };\n  },\n  initViewer: function initViewer() {\n    var options = this.options,\n        parent = this.parent;\n    var viewerData;\n\n    if (options.inline) {\n      viewerData = {\n        width: Math.max(parent.offsetWidth, options.minWidth),\n        height: Math.max(parent.offsetHeight, options.minHeight)\n      };\n      this.parentData = viewerData;\n    }\n\n    if (this.fulled || !viewerData) {\n      viewerData = this.containerData;\n    }\n\n    this.viewerData = assign({}, viewerData);\n  },\n  renderViewer: function renderViewer() {\n    if (this.options.inline && !this.fulled) {\n      setStyle(this.viewer, this.viewerData);\n    }\n  },\n  initList: function initList() {\n    var _this = this;\n\n    var element = this.element,\n        options = this.options,\n        list = this.list;\n    var items = []; // initList may be called in this.update, so should keep idempotent\n\n    list.innerHTML = '';\n    forEach(this.images, function (image, index) {\n      var src = image.src;\n      var alt = image.alt || getImageNameFromURL(src);\n\n      var url = _this.getImageURL(image);\n\n      if (src || url) {\n        var item = document.createElement('li');\n        var img = document.createElement('img');\n        forEach(options.inheritedAttributes, function (name) {\n          var value = image.getAttribute(name);\n\n          if (value !== null) {\n            img.setAttribute(name, value);\n          }\n        });\n        img.src = src || url;\n        img.alt = alt;\n        img.setAttribute('data-index', index);\n        img.setAttribute('data-original-url', url || src);\n        img.setAttribute('data-viewer-action', 'view');\n        img.setAttribute('role', 'button');\n        item.appendChild(img);\n        list.appendChild(item);\n        items.push(item);\n      }\n    });\n    this.items = items;\n    forEach(items, function (item) {\n      var image = item.firstElementChild;\n      setData(image, 'filled', true);\n\n      if (options.loading) {\n        addClass(item, CLASS_LOADING);\n      }\n\n      addListener(image, EVENT_LOAD, function (event) {\n        if (options.loading) {\n          removeClass(item, CLASS_LOADING);\n        }\n\n        _this.loadImage(event);\n      }, {\n        once: true\n      });\n    });\n\n    if (options.transition) {\n      addListener(element, EVENT_VIEWED, function () {\n        addClass(list, CLASS_TRANSITION);\n      }, {\n        once: true\n      });\n    }\n  },\n  renderList: function renderList(index) {\n    var i = index || this.index;\n    var width = this.items[i].offsetWidth || 30;\n    var outerWidth = width + 1; // 1 pixel of `margin-left` width\n    // Place the active item in the center of the screen\n\n    setStyle(this.list, assign({\n      width: outerWidth * this.length\n    }, getTransforms({\n      translateX: (this.viewerData.width - width) / 2 - outerWidth * i\n    })));\n  },\n  resetList: function resetList() {\n    var list = this.list;\n    list.innerHTML = '';\n    removeClass(list, CLASS_TRANSITION);\n    setStyle(list, getTransforms({\n      translateX: 0\n    }));\n  },\n  initImage: function initImage(done) {\n    var _this2 = this;\n\n    var options = this.options,\n        image = this.image,\n        viewerData = this.viewerData;\n    var footerHeight = this.footer.offsetHeight;\n    var viewerWidth = viewerData.width;\n    var viewerHeight = Math.max(viewerData.height - footerHeight, footerHeight);\n    var oldImageData = this.imageData || {};\n    var sizingImage;\n    this.imageInitializing = {\n      abort: function abort() {\n        sizingImage.onload = null;\n      }\n    };\n    sizingImage = getImageNaturalSizes(image, options, function (naturalWidth, naturalHeight) {\n      var aspectRatio = naturalWidth / naturalHeight;\n      var width = viewerWidth;\n      var height = viewerHeight;\n      _this2.imageInitializing = false;\n\n      if (viewerHeight * aspectRatio > viewerWidth) {\n        height = viewerWidth / aspectRatio;\n      } else {\n        width = viewerHeight * aspectRatio;\n      }\n\n      width = Math.min(width * 0.9, naturalWidth);\n      height = Math.min(height * 0.9, naturalHeight);\n      var imageData = {\n        naturalWidth: naturalWidth,\n        naturalHeight: naturalHeight,\n        aspectRatio: aspectRatio,\n        ratio: width / naturalWidth,\n        width: width,\n        height: height,\n        left: (viewerWidth - width) / 2,\n        top: (viewerHeight - height) / 2\n      };\n      var initialImageData = assign({}, imageData);\n\n      if (options.rotatable) {\n        imageData.rotate = oldImageData.rotate || 0;\n        initialImageData.rotate = 0;\n      }\n\n      if (options.scalable) {\n        imageData.scaleX = oldImageData.scaleX || 1;\n        imageData.scaleY = oldImageData.scaleY || 1;\n        initialImageData.scaleX = 1;\n        initialImageData.scaleY = 1;\n      }\n\n      _this2.imageData = imageData;\n      _this2.initialImageData = initialImageData;\n\n      if (done) {\n        done();\n      }\n    });\n  },\n  renderImage: function renderImage(done) {\n    var _this3 = this;\n\n    var image = this.image,\n        imageData = this.imageData;\n    setStyle(image, assign({\n      width: imageData.width,\n      height: imageData.height,\n      // XXX: Not to use translateX/Y to avoid image shaking when zooming\n      marginLeft: imageData.left,\n      marginTop: imageData.top\n    }, getTransforms(imageData)));\n\n    if (done) {\n      if ((this.viewing || this.zooming) && this.options.transition) {\n        var onTransitionEnd = function onTransitionEnd() {\n          _this3.imageRendering = false;\n          done();\n        };\n\n        this.imageRendering = {\n          abort: function abort() {\n            removeListener(image, EVENT_TRANSITION_END, onTransitionEnd);\n          }\n        };\n        addListener(image, EVENT_TRANSITION_END, onTransitionEnd, {\n          once: true\n        });\n      } else {\n        done();\n      }\n    }\n  },\n  resetImage: function resetImage() {\n    // this.image only defined after viewed\n    if (this.viewing || this.viewed) {\n      var image = this.image;\n\n      if (this.viewing) {\n        this.viewing.abort();\n      }\n\n      image.parentNode.removeChild(image);\n      this.image = null;\n    }\n  }\n};\n\nvar events = {\n  bind: function bind() {\n    var options = this.options,\n        viewer = this.viewer,\n        canvas = this.canvas;\n    var document = this.element.ownerDocument;\n    addListener(viewer, EVENT_CLICK, this.onClick = this.click.bind(this));\n    addListener(viewer, EVENT_DRAG_START, this.onDragStart = this.dragstart.bind(this));\n    addListener(canvas, EVENT_POINTER_DOWN, this.onPointerDown = this.pointerdown.bind(this));\n    addListener(document, EVENT_POINTER_MOVE, this.onPointerMove = this.pointermove.bind(this));\n    addListener(document, EVENT_POINTER_UP, this.onPointerUp = this.pointerup.bind(this));\n    addListener(document, EVENT_KEY_DOWN, this.onKeyDown = this.keydown.bind(this));\n    addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\n\n    if (options.zoomable && options.zoomOnWheel) {\n      addListener(viewer, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\n        passive: false,\n        capture: true\n      });\n    }\n\n    if (options.toggleOnDblclick) {\n      addListener(canvas, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\n    }\n  },\n  unbind: function unbind() {\n    var options = this.options,\n        viewer = this.viewer,\n        canvas = this.canvas;\n    var document = this.element.ownerDocument;\n    removeListener(viewer, EVENT_CLICK, this.onClick);\n    removeListener(viewer, EVENT_DRAG_START, this.onDragStart);\n    removeListener(canvas, EVENT_POINTER_DOWN, this.onPointerDown);\n    removeListener(document, EVENT_POINTER_MOVE, this.onPointerMove);\n    removeListener(document, EVENT_POINTER_UP, this.onPointerUp);\n    removeListener(document, EVENT_KEY_DOWN, this.onKeyDown);\n    removeListener(window, EVENT_RESIZE, this.onResize);\n\n    if (options.zoomable && options.zoomOnWheel) {\n      removeListener(viewer, EVENT_WHEEL, this.onWheel, {\n        passive: false,\n        capture: true\n      });\n    }\n\n    if (options.toggleOnDblclick) {\n      removeListener(canvas, EVENT_DBLCLICK, this.onDblclick);\n    }\n  }\n};\n\nvar handlers = {\n  click: function click(event) {\n    var target = event.target;\n    var options = this.options,\n        imageData = this.imageData;\n    var action = getData(target, DATA_ACTION); // Cancel the emulated click when the native click event was triggered.\n\n    if (IS_TOUCH_DEVICE && event.isTrusted && target === this.canvas) {\n      clearTimeout(this.clickCanvasTimeout);\n    }\n\n    switch (action) {\n      case 'mix':\n        if (this.played) {\n          this.stop();\n        } else if (options.inline) {\n          if (this.fulled) {\n            this.exit();\n          } else {\n            this.full();\n          }\n        } else {\n          this.hide();\n        }\n\n        break;\n\n      case 'hide':\n        this.hide();\n        break;\n\n      case 'view':\n        this.view(getData(target, 'index'));\n        break;\n\n      case 'zoom-in':\n        this.zoom(0.1, true);\n        break;\n\n      case 'zoom-out':\n        this.zoom(-0.1, true);\n        break;\n\n      case 'one-to-one':\n        this.toggle();\n        break;\n\n      case 'reset':\n        this.reset();\n        break;\n\n      case 'prev':\n        this.prev(options.loop);\n        break;\n\n      case 'play':\n        this.play(options.fullscreen);\n        break;\n\n      case 'next':\n        this.next(options.loop);\n        break;\n\n      case 'rotate-left':\n        this.rotate(-90);\n        break;\n\n      case 'rotate-right':\n        this.rotate(90);\n        break;\n\n      case 'flip-horizontal':\n        this.scaleX(-imageData.scaleX || -1);\n        break;\n\n      case 'flip-vertical':\n        this.scaleY(-imageData.scaleY || -1);\n        break;\n\n      default:\n        if (this.played) {\n          this.stop();\n        }\n\n    }\n  },\n  dblclick: function dblclick(event) {\n    event.preventDefault();\n\n    if (this.viewed && event.target === this.image) {\n      // Cancel the emulated double click when the native dblclick event was triggered.\n      if (IS_TOUCH_DEVICE && event.isTrusted) {\n        clearTimeout(this.doubleClickImageTimeout);\n      }\n\n      this.toggle();\n    }\n  },\n  load: function load() {\n    var _this = this;\n\n    if (this.timeout) {\n      clearTimeout(this.timeout);\n      this.timeout = false;\n    }\n\n    var element = this.element,\n        options = this.options,\n        image = this.image,\n        index = this.index,\n        viewerData = this.viewerData;\n    removeClass(image, CLASS_INVISIBLE);\n\n    if (options.loading) {\n      removeClass(this.canvas, CLASS_LOADING);\n    }\n\n    image.style.cssText = 'height:0;' + \"margin-left:\".concat(viewerData.width / 2, \"px;\") + \"margin-top:\".concat(viewerData.height / 2, \"px;\") + 'max-width:none!important;' + 'position:absolute;' + 'width:0;';\n    this.initImage(function () {\n      toggleClass(image, CLASS_MOVE, options.movable);\n      toggleClass(image, CLASS_TRANSITION, options.transition);\n\n      _this.renderImage(function () {\n        _this.viewed = true;\n        _this.viewing = false;\n\n        if (isFunction(options.viewed)) {\n          addListener(element, EVENT_VIEWED, options.viewed, {\n            once: true\n          });\n        }\n\n        dispatchEvent(element, EVENT_VIEWED, {\n          originalImage: _this.images[index],\n          index: index,\n          image: image\n        }, {\n          cancelable: false\n        });\n      });\n    });\n  },\n  loadImage: function loadImage(event) {\n    var image = event.target;\n    var parent = image.parentNode;\n    var parentWidth = parent.offsetWidth || 30;\n    var parentHeight = parent.offsetHeight || 50;\n    var filled = !!getData(image, 'filled');\n    getImageNaturalSizes(image, this.options, function (naturalWidth, naturalHeight) {\n      var aspectRatio = naturalWidth / naturalHeight;\n      var width = parentWidth;\n      var height = parentHeight;\n\n      if (parentHeight * aspectRatio > parentWidth) {\n        if (filled) {\n          width = parentHeight * aspectRatio;\n        } else {\n          height = parentWidth / aspectRatio;\n        }\n      } else if (filled) {\n        height = parentWidth / aspectRatio;\n      } else {\n        width = parentHeight * aspectRatio;\n      }\n\n      setStyle(image, assign({\n        width: width,\n        height: height\n      }, getTransforms({\n        translateX: (parentWidth - width) / 2,\n        translateY: (parentHeight - height) / 2\n      })));\n    });\n  },\n  keydown: function keydown(event) {\n    var options = this.options;\n\n    if (!this.fulled || !options.keyboard) {\n      return;\n    }\n\n    switch (event.keyCode || event.which || event.charCode) {\n      // Escape\n      case 27:\n        if (this.played) {\n          this.stop();\n        } else if (options.inline) {\n          if (this.fulled) {\n            this.exit();\n          }\n        } else {\n          this.hide();\n        }\n\n        break;\n      // Space\n\n      case 32:\n        if (this.played) {\n          this.stop();\n        }\n\n        break;\n      // ArrowLeft\n\n      case 37:\n        this.prev(options.loop);\n        break;\n      // ArrowUp\n\n      case 38:\n        // Prevent scroll on Firefox\n        event.preventDefault(); // Zoom in\n\n        this.zoom(options.zoomRatio, true);\n        break;\n      // ArrowRight\n\n      case 39:\n        this.next(options.loop);\n        break;\n      // ArrowDown\n\n      case 40:\n        // Prevent scroll on Firefox\n        event.preventDefault(); // Zoom out\n\n        this.zoom(-options.zoomRatio, true);\n        break;\n      // Ctrl + 0\n\n      case 48: // Fall through\n      // Ctrl + 1\n      // eslint-disable-next-line no-fallthrough\n\n      case 49:\n        if (event.ctrlKey) {\n          event.preventDefault();\n          this.toggle();\n        }\n\n        break;\n    }\n  },\n  dragstart: function dragstart(event) {\n    if (event.target.tagName.toLowerCase() === 'img') {\n      event.preventDefault();\n    }\n  },\n  pointerdown: function pointerdown(event) {\n    var options = this.options,\n        pointers = this.pointers;\n    var buttons = event.buttons,\n        button = event.button;\n\n    if (!this.viewed || this.showing || this.viewing || this.hiding // Handle mouse event and pointer event and ignore touch event\n    || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && ( // No primary button (Usually the left button)\n    isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0 // Open context menu\n    || event.ctrlKey)) {\n      return;\n    } // Prevent default behaviours as page zooming in touch devices.\n\n\n    event.preventDefault();\n\n    if (event.changedTouches) {\n      forEach(event.changedTouches, function (touch) {\n        pointers[touch.identifier] = getPointer(touch);\n      });\n    } else {\n      pointers[event.pointerId || 0] = getPointer(event);\n    }\n\n    var action = options.movable ? ACTION_MOVE : false;\n\n    if (options.zoomOnTouch && options.zoomable && Object.keys(pointers).length > 1) {\n      action = ACTION_ZOOM;\n    } else if (options.slideOnTouch && (event.pointerType === 'touch' || event.type === 'touchstart') && this.isSwitchable()) {\n      action = ACTION_SWITCH;\n    }\n\n    if (options.transition && (action === ACTION_MOVE || action === ACTION_ZOOM)) {\n      removeClass(this.image, CLASS_TRANSITION);\n    }\n\n    this.action = action;\n  },\n  pointermove: function pointermove(event) {\n    var pointers = this.pointers,\n        action = this.action;\n\n    if (!this.viewed || !action) {\n      return;\n    }\n\n    event.preventDefault();\n\n    if (event.changedTouches) {\n      forEach(event.changedTouches, function (touch) {\n        assign(pointers[touch.identifier] || {}, getPointer(touch, true));\n      });\n    } else {\n      assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\n    }\n\n    this.change(event);\n  },\n  pointerup: function pointerup(event) {\n    var _this2 = this;\n\n    var options = this.options,\n        action = this.action,\n        pointers = this.pointers;\n    var pointer;\n\n    if (event.changedTouches) {\n      forEach(event.changedTouches, function (touch) {\n        pointer = pointers[touch.identifier];\n        delete pointers[touch.identifier];\n      });\n    } else {\n      pointer = pointers[event.pointerId || 0];\n      delete pointers[event.pointerId || 0];\n    }\n\n    if (!action) {\n      return;\n    }\n\n    event.preventDefault();\n\n    if (options.transition && (action === ACTION_MOVE || action === ACTION_ZOOM)) {\n      addClass(this.image, CLASS_TRANSITION);\n    }\n\n    this.action = false; // Emulate click and double click in touch devices to support backdrop and image zooming (#210).\n\n    if (IS_TOUCH_DEVICE && action !== ACTION_ZOOM && pointer && Date.now() - pointer.timeStamp < 500) {\n      clearTimeout(this.clickCanvasTimeout);\n      clearTimeout(this.doubleClickImageTimeout);\n\n      if (options.toggleOnDblclick && this.viewed && event.target === this.image) {\n        if (this.imageClicked) {\n          this.imageClicked = false; // This timeout will be cleared later when a native dblclick event is triggering\n\n          this.doubleClickImageTimeout = setTimeout(function () {\n            dispatchEvent(_this2.image, EVENT_DBLCLICK);\n          }, 50);\n        } else {\n          this.imageClicked = true; // The default timing of a double click in Windows is 500 ms\n\n          this.doubleClickImageTimeout = setTimeout(function () {\n            _this2.imageClicked = false;\n          }, 500);\n        }\n      } else {\n        this.imageClicked = false;\n\n        if (options.backdrop && options.backdrop !== 'static' && event.target === this.canvas) {\n          // This timeout will be cleared later when a native click event is triggering\n          this.clickCanvasTimeout = setTimeout(function () {\n            dispatchEvent(_this2.canvas, EVENT_CLICK);\n          }, 50);\n        }\n      }\n    }\n  },\n  resize: function resize() {\n    var _this3 = this;\n\n    if (!this.isShown || this.hiding) {\n      return;\n    }\n\n    if (this.fulled) {\n      this.close();\n      this.initBody();\n      this.open();\n    }\n\n    this.initContainer();\n    this.initViewer();\n    this.renderViewer();\n    this.renderList();\n\n    if (this.viewed) {\n      this.initImage(function () {\n        _this3.renderImage();\n      });\n    }\n\n    if (this.played) {\n      if (this.options.fullscreen && this.fulled && !(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement)) {\n        this.stop();\n        return;\n      }\n\n      forEach(this.player.getElementsByTagName('img'), function (image) {\n        addListener(image, EVENT_LOAD, _this3.loadImage.bind(_this3), {\n          once: true\n        });\n        dispatchEvent(image, EVENT_LOAD);\n      });\n    }\n  },\n  wheel: function wheel(event) {\n    var _this4 = this;\n\n    if (!this.viewed) {\n      return;\n    }\n\n    event.preventDefault(); // Limit wheel speed to prevent zoom too fast\n\n    if (this.wheeling) {\n      return;\n    }\n\n    this.wheeling = true;\n    setTimeout(function () {\n      _this4.wheeling = false;\n    }, 50);\n    var ratio = Number(this.options.zoomRatio) || 0.1;\n    var delta = 1;\n\n    if (event.deltaY) {\n      delta = event.deltaY > 0 ? 1 : -1;\n    } else if (event.wheelDelta) {\n      delta = -event.wheelDelta / 120;\n    } else if (event.detail) {\n      delta = event.detail > 0 ? 1 : -1;\n    }\n\n    this.zoom(-delta * ratio, true, event);\n  }\n};\n\nvar methods = {\n  /** Show the viewer (only available in modal mode)\n   * @param {boolean} [immediate=false] - Indicates if show the viewer immediately or not.\n   * @returns {Viewer} this\n   */\n  show: function show() {\n    var immediate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var element = this.element,\n        options = this.options;\n\n    if (options.inline || this.showing || this.isShown || this.showing) {\n      return this;\n    }\n\n    if (!this.ready) {\n      this.build();\n\n      if (this.ready) {\n        this.show(immediate);\n      }\n\n      return this;\n    }\n\n    if (isFunction(options.show)) {\n      addListener(element, EVENT_SHOW, options.show, {\n        once: true\n      });\n    }\n\n    if (dispatchEvent(element, EVENT_SHOW) === false || !this.ready) {\n      return this;\n    }\n\n    if (this.hiding) {\n      this.transitioning.abort();\n    }\n\n    this.showing = true;\n    this.open();\n    var viewer = this.viewer;\n    removeClass(viewer, CLASS_HIDE);\n\n    if (options.transition && !immediate) {\n      var shown = this.shown.bind(this);\n      this.transitioning = {\n        abort: function abort() {\n          removeListener(viewer, EVENT_TRANSITION_END, shown);\n          removeClass(viewer, CLASS_IN);\n        }\n      };\n      addClass(viewer, CLASS_TRANSITION); // Force reflow to enable CSS3 transition\n\n      viewer.initialOffsetWidth = viewer.offsetWidth;\n      addListener(viewer, EVENT_TRANSITION_END, shown, {\n        once: true\n      });\n      addClass(viewer, CLASS_IN);\n    } else {\n      addClass(viewer, CLASS_IN);\n      this.shown();\n    }\n\n    return this;\n  },\n\n  /**\n   * Hide the viewer (only available in modal mode)\n   * @param {boolean} [immediate=false] - Indicates if hide the viewer immediately or not.\n   * @returns {Viewer} this\n   */\n  hide: function hide() {\n    var _this = this;\n\n    var immediate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var element = this.element,\n        options = this.options;\n\n    if (options.inline || this.hiding || !(this.isShown || this.showing)) {\n      return this;\n    }\n\n    if (isFunction(options.hide)) {\n      addListener(element, EVENT_HIDE, options.hide, {\n        once: true\n      });\n    }\n\n    if (dispatchEvent(element, EVENT_HIDE) === false) {\n      return this;\n    }\n\n    if (this.showing) {\n      this.transitioning.abort();\n    }\n\n    this.hiding = true;\n\n    if (this.played) {\n      this.stop();\n    } else if (this.viewing) {\n      this.viewing.abort();\n    }\n\n    var viewer = this.viewer,\n        image = this.image;\n\n    var hideImmediately = function hideImmediately() {\n      removeClass(viewer, CLASS_IN);\n\n      _this.hidden();\n    };\n\n    if (options.transition && !immediate) {\n      var onViewerTransitionEnd = function onViewerTransitionEnd(event) {\n        // Ignore all propagating `transitionend` events (#275).\n        if (event && event.target === viewer) {\n          removeListener(viewer, EVENT_TRANSITION_END, onViewerTransitionEnd);\n\n          _this.hidden();\n        }\n      };\n\n      var onImageTransitionEnd = function onImageTransitionEnd() {\n        // In case of show the viewer by `viewer.show(true)` previously (#407).\n        if (hasClass(viewer, CLASS_TRANSITION)) {\n          addListener(viewer, EVENT_TRANSITION_END, onViewerTransitionEnd);\n          removeClass(viewer, CLASS_IN);\n        } else {\n          hideImmediately();\n        }\n      };\n\n      this.transitioning = {\n        abort: function abort() {\n          if (_this.viewed && hasClass(image, CLASS_TRANSITION)) {\n            removeListener(image, EVENT_TRANSITION_END, onImageTransitionEnd);\n          } else if (hasClass(viewer, CLASS_TRANSITION)) {\n            removeListener(viewer, EVENT_TRANSITION_END, onViewerTransitionEnd);\n          }\n        }\n      }; // In case of hiding the viewer when holding on the image (#255),\n      // note that the `CLASS_TRANSITION` class will be removed on pointer down.\n\n      if (this.viewed && hasClass(image, CLASS_TRANSITION)) {\n        addListener(image, EVENT_TRANSITION_END, onImageTransitionEnd, {\n          once: true\n        });\n        this.zoomTo(0, false, false, true);\n      } else {\n        onImageTransitionEnd();\n      }\n    } else {\n      hideImmediately();\n    }\n\n    return this;\n  },\n\n  /**\n   * View one of the images with image's index\n   * @param {number} index - The index of the image to view.\n   * @returns {Viewer} this\n   */\n  view: function view() {\n    var _this2 = this;\n\n    var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.options.initialViewIndex;\n    index = Number(index) || 0;\n\n    if (this.hiding || this.played || index < 0 || index >= this.length || this.viewed && index === this.index) {\n      return this;\n    }\n\n    if (!this.isShown) {\n      this.index = index;\n      return this.show();\n    }\n\n    if (this.viewing) {\n      this.viewing.abort();\n    }\n\n    var element = this.element,\n        options = this.options,\n        title = this.title,\n        canvas = this.canvas;\n    var item = this.items[index];\n    var img = item.querySelector('img');\n    var url = getData(img, 'originalUrl');\n    var alt = img.getAttribute('alt');\n    var image = document.createElement('img');\n    forEach(options.inheritedAttributes, function (name) {\n      var value = img.getAttribute(name);\n\n      if (value !== null) {\n        image.setAttribute(name, value);\n      }\n    });\n    image.src = url;\n    image.alt = alt;\n\n    if (isFunction(options.view)) {\n      addListener(element, EVENT_VIEW, options.view, {\n        once: true\n      });\n    }\n\n    if (dispatchEvent(element, EVENT_VIEW, {\n      originalImage: this.images[index],\n      index: index,\n      image: image\n    }) === false || !this.isShown || this.hiding || this.played) {\n      return this;\n    }\n\n    this.image = image;\n    removeClass(this.items[this.index], CLASS_ACTIVE);\n    addClass(item, CLASS_ACTIVE);\n    this.viewed = false;\n    this.index = index;\n    this.imageData = {};\n    addClass(image, CLASS_INVISIBLE);\n\n    if (options.loading) {\n      addClass(canvas, CLASS_LOADING);\n    }\n\n    canvas.innerHTML = '';\n    canvas.appendChild(image); // Center current item\n\n    this.renderList(); // Clear title\n\n    title.innerHTML = ''; // Generate title after viewed\n\n    var onViewed = function onViewed() {\n      var imageData = _this2.imageData;\n      var render = Array.isArray(options.title) ? options.title[1] : options.title;\n      title.innerHTML = escapeHTMLEntities(isFunction(render) ? render.call(_this2, image, imageData) : \"\".concat(alt, \" (\").concat(imageData.naturalWidth, \" \\xD7 \").concat(imageData.naturalHeight, \")\"));\n    };\n\n    var onLoad;\n    addListener(element, EVENT_VIEWED, onViewed, {\n      once: true\n    });\n    this.viewing = {\n      abort: function abort() {\n        removeListener(element, EVENT_VIEWED, onViewed);\n\n        if (image.complete) {\n          if (_this2.imageRendering) {\n            _this2.imageRendering.abort();\n          } else if (_this2.imageInitializing) {\n            _this2.imageInitializing.abort();\n          }\n        } else {\n          // Cancel download to save bandwidth.\n          image.src = '';\n          removeListener(image, EVENT_LOAD, onLoad);\n\n          if (_this2.timeout) {\n            clearTimeout(_this2.timeout);\n          }\n        }\n      }\n    };\n\n    if (image.complete) {\n      this.load();\n    } else {\n      addListener(image, EVENT_LOAD, onLoad = this.load.bind(this), {\n        once: true\n      });\n\n      if (this.timeout) {\n        clearTimeout(this.timeout);\n      } // Make the image visible if it fails to load within 1s\n\n\n      this.timeout = setTimeout(function () {\n        removeClass(image, CLASS_INVISIBLE);\n        _this2.timeout = false;\n      }, 1000);\n    }\n\n    return this;\n  },\n\n  /**\n   * View the previous image\n   * @param {boolean} [loop=false] - Indicate if view the last one\n   * when it is the first one at present.\n   * @returns {Viewer} this\n   */\n  prev: function prev() {\n    var loop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var index = this.index - 1;\n\n    if (index < 0) {\n      index = loop ? this.length - 1 : 0;\n    }\n\n    this.view(index);\n    return this;\n  },\n\n  /**\n   * View the next image\n   * @param {boolean} [loop=false] - Indicate if view the first one\n   * when it is the last one at present.\n   * @returns {Viewer} this\n   */\n  next: function next() {\n    var loop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var maxIndex = this.length - 1;\n    var index = this.index + 1;\n\n    if (index > maxIndex) {\n      index = loop ? 0 : maxIndex;\n    }\n\n    this.view(index);\n    return this;\n  },\n\n  /**\n   * Move the image with relative offsets.\n   * @param {number} offsetX - The relative offset distance on the x-axis.\n   * @param {number} offsetY - The relative offset distance on the y-axis.\n   * @returns {Viewer} this\n   */\n  move: function move(offsetX, offsetY) {\n    var imageData = this.imageData;\n    this.moveTo(isUndefined(offsetX) ? offsetX : imageData.left + Number(offsetX), isUndefined(offsetY) ? offsetY : imageData.top + Number(offsetY));\n    return this;\n  },\n\n  /**\n   * Move the image to an absolute point.\n   * @param {number} x - The x-axis coordinate.\n   * @param {number} [y=x] - The y-axis coordinate.\n   * @returns {Viewer} this\n   */\n  moveTo: function moveTo(x) {\n    var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n    var imageData = this.imageData;\n    x = Number(x);\n    y = Number(y);\n\n    if (this.viewed && !this.played && this.options.movable) {\n      var changed = false;\n\n      if (isNumber(x)) {\n        imageData.left = x;\n        changed = true;\n      }\n\n      if (isNumber(y)) {\n        imageData.top = y;\n        changed = true;\n      }\n\n      if (changed) {\n        this.renderImage();\n      }\n    }\n\n    return this;\n  },\n\n  /**\n   * Zoom the image with a relative ratio.\n   * @param {number} ratio - The target ratio.\n   * @param {boolean} [hasTooltip=false] - Indicates if it has a tooltip or not.\n   * @param {Event} [_originalEvent=null] - The original event if any.\n   * @returns {Viewer} this\n   */\n  zoom: function zoom(ratio) {\n    var hasTooltip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    var _originalEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n    var imageData = this.imageData;\n    ratio = Number(ratio);\n\n    if (ratio < 0) {\n      ratio = 1 / (1 - ratio);\n    } else {\n      ratio = 1 + ratio;\n    }\n\n    this.zoomTo(imageData.width * ratio / imageData.naturalWidth, hasTooltip, _originalEvent);\n    return this;\n  },\n\n  /**\n   * Zoom the image to an absolute ratio.\n   * @param {number} ratio - The target ratio.\n   * @param {boolean} [hasTooltip=false] - Indicates if it has a tooltip or not.\n   * @param {Event} [_originalEvent=null] - The original event if any.\n   * @param {Event} [_zoomable=false] - Indicates if the current zoom is available or not.\n   * @returns {Viewer} this\n   */\n  zoomTo: function zoomTo(ratio) {\n    var _this3 = this;\n\n    var hasTooltip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    var _originalEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n    var _zoomable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n    var element = this.element,\n        options = this.options,\n        pointers = this.pointers,\n        imageData = this.imageData;\n    var width = imageData.width,\n        height = imageData.height,\n        left = imageData.left,\n        top = imageData.top,\n        naturalWidth = imageData.naturalWidth,\n        naturalHeight = imageData.naturalHeight;\n    ratio = Math.max(0, ratio);\n\n    if (isNumber(ratio) && this.viewed && !this.played && (_zoomable || options.zoomable)) {\n      if (!_zoomable) {\n        var minZoomRatio = Math.max(0.01, options.minZoomRatio);\n        var maxZoomRatio = Math.min(100, options.maxZoomRatio);\n        ratio = Math.min(Math.max(ratio, minZoomRatio), maxZoomRatio);\n      }\n\n      if (_originalEvent && options.zoomRatio >= 0.055 && ratio > 0.95 && ratio < 1.05) {\n        ratio = 1;\n      }\n\n      var newWidth = naturalWidth * ratio;\n      var newHeight = naturalHeight * ratio;\n      var offsetWidth = newWidth - width;\n      var offsetHeight = newHeight - height;\n      var oldRatio = width / naturalWidth;\n\n      if (isFunction(options.zoom)) {\n        addListener(element, EVENT_ZOOM, options.zoom, {\n          once: true\n        });\n      }\n\n      if (dispatchEvent(element, EVENT_ZOOM, {\n        ratio: ratio,\n        oldRatio: oldRatio,\n        originalEvent: _originalEvent\n      }) === false) {\n        return this;\n      }\n\n      this.zooming = true;\n\n      if (_originalEvent) {\n        var offset = getOffset(this.viewer);\n        var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {\n          pageX: _originalEvent.pageX,\n          pageY: _originalEvent.pageY\n        }; // Zoom from the triggering point of the event\n\n        imageData.left -= offsetWidth * ((center.pageX - offset.left - left) / width);\n        imageData.top -= offsetHeight * ((center.pageY - offset.top - top) / height);\n      } else {\n        // Zoom from the center of the image\n        imageData.left -= offsetWidth / 2;\n        imageData.top -= offsetHeight / 2;\n      }\n\n      imageData.width = newWidth;\n      imageData.height = newHeight;\n      imageData.ratio = ratio;\n      this.renderImage(function () {\n        _this3.zooming = false;\n\n        if (isFunction(options.zoomed)) {\n          addListener(element, EVENT_ZOOMED, options.zoomed, {\n            once: true\n          });\n        }\n\n        dispatchEvent(element, EVENT_ZOOMED, {\n          ratio: ratio,\n          oldRatio: oldRatio,\n          originalEvent: _originalEvent\n        }, {\n          cancelable: false\n        });\n      });\n\n      if (hasTooltip) {\n        this.tooltip();\n      }\n    }\n\n    return this;\n  },\n\n  /**\n   * Rotate the image with a relative degree.\n   * @param {number} degree - The rotate degree.\n   * @returns {Viewer} this\n   */\n  rotate: function rotate(degree) {\n    this.rotateTo((this.imageData.rotate || 0) + Number(degree));\n    return this;\n  },\n\n  /**\n   * Rotate the image to an absolute degree.\n   * @param {number} degree - The rotate degree.\n   * @returns {Viewer} this\n   */\n  rotateTo: function rotateTo(degree) {\n    var imageData = this.imageData;\n    degree = Number(degree);\n\n    if (isNumber(degree) && this.viewed && !this.played && this.options.rotatable) {\n      imageData.rotate = degree;\n      this.renderImage();\n    }\n\n    return this;\n  },\n\n  /**\n   * Scale the image on the x-axis.\n   * @param {number} scaleX - The scale ratio on the x-axis.\n   * @returns {Viewer} this\n   */\n  scaleX: function scaleX(_scaleX) {\n    this.scale(_scaleX, this.imageData.scaleY);\n    return this;\n  },\n\n  /**\n   * Scale the image on the y-axis.\n   * @param {number} scaleY - The scale ratio on the y-axis.\n   * @returns {Viewer} this\n   */\n  scaleY: function scaleY(_scaleY) {\n    this.scale(this.imageData.scaleX, _scaleY);\n    return this;\n  },\n\n  /**\n   * Scale the image.\n   * @param {number} scaleX - The scale ratio on the x-axis.\n   * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\n   * @returns {Viewer} this\n   */\n  scale: function scale(scaleX) {\n    var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n    var imageData = this.imageData;\n    scaleX = Number(scaleX);\n    scaleY = Number(scaleY);\n\n    if (this.viewed && !this.played && this.options.scalable) {\n      var changed = false;\n\n      if (isNumber(scaleX)) {\n        imageData.scaleX = scaleX;\n        changed = true;\n      }\n\n      if (isNumber(scaleY)) {\n        imageData.scaleY = scaleY;\n        changed = true;\n      }\n\n      if (changed) {\n        this.renderImage();\n      }\n    }\n\n    return this;\n  },\n\n  /**\n   * Play the images\n   * @param {boolean} [fullscreen=false] - Indicate if request fullscreen or not.\n   * @returns {Viewer} this\n   */\n  play: function play() {\n    var _this4 = this;\n\n    var fullscreen = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n    if (!this.isShown || this.played) {\n      return this;\n    }\n\n    var element = this.element,\n        options = this.options;\n\n    if (isFunction(options.play)) {\n      addListener(element, EVENT_PLAY, options.play, {\n        once: true\n      });\n    }\n\n    if (dispatchEvent(element, EVENT_PLAY) === false) {\n      return this;\n    }\n\n    var player = this.player;\n    var onLoad = this.loadImage.bind(this);\n    var list = [];\n    var total = 0;\n    var index = 0;\n    this.played = true;\n    this.onLoadWhenPlay = onLoad;\n\n    if (fullscreen) {\n      this.requestFullscreen();\n    }\n\n    addClass(player, CLASS_SHOW);\n    forEach(this.items, function (item, i) {\n      var img = item.querySelector('img');\n      var image = document.createElement('img');\n      image.src = getData(img, 'originalUrl');\n      image.alt = img.getAttribute('alt');\n      image.referrerPolicy = img.referrerPolicy;\n      total += 1;\n      addClass(image, CLASS_FADE);\n      toggleClass(image, CLASS_TRANSITION, options.transition);\n\n      if (hasClass(item, CLASS_ACTIVE)) {\n        addClass(image, CLASS_IN);\n        index = i;\n      }\n\n      list.push(image);\n      addListener(image, EVENT_LOAD, onLoad, {\n        once: true\n      });\n      player.appendChild(image);\n    });\n\n    if (isNumber(options.interval) && options.interval > 0) {\n      var play = function play() {\n        _this4.playing = setTimeout(function () {\n          removeClass(list[index], CLASS_IN);\n          index += 1;\n          index = index < total ? index : 0;\n          addClass(list[index], CLASS_IN);\n          play();\n        }, options.interval);\n      };\n\n      if (total > 1) {\n        play();\n      }\n    }\n\n    return this;\n  },\n  // Stop play\n  stop: function stop() {\n    var _this5 = this;\n\n    if (!this.played) {\n      return this;\n    }\n\n    var element = this.element,\n        options = this.options;\n\n    if (isFunction(options.stop)) {\n      addListener(element, EVENT_STOP, options.stop, {\n        once: true\n      });\n    }\n\n    if (dispatchEvent(element, EVENT_STOP) === false) {\n      return this;\n    }\n\n    var player = this.player;\n    this.played = false;\n    clearTimeout(this.playing);\n    forEach(player.getElementsByTagName('img'), function (image) {\n      removeListener(image, EVENT_LOAD, _this5.onLoadWhenPlay);\n    });\n    removeClass(player, CLASS_SHOW);\n    player.innerHTML = '';\n    this.exitFullscreen();\n    return this;\n  },\n  // Enter modal mode (only available in inline mode)\n  full: function full() {\n    var _this6 = this;\n\n    var options = this.options,\n        viewer = this.viewer,\n        image = this.image,\n        list = this.list;\n\n    if (!this.isShown || this.played || this.fulled || !options.inline) {\n      return this;\n    }\n\n    this.fulled = true;\n    this.open();\n    addClass(this.button, CLASS_FULLSCREEN_EXIT);\n\n    if (options.transition) {\n      removeClass(list, CLASS_TRANSITION);\n\n      if (this.viewed) {\n        removeClass(image, CLASS_TRANSITION);\n      }\n    }\n\n    addClass(viewer, CLASS_FIXED);\n    viewer.setAttribute('style', '');\n    setStyle(viewer, {\n      zIndex: options.zIndex\n    });\n    this.initContainer();\n    this.viewerData = assign({}, this.containerData);\n    this.renderList();\n\n    if (this.viewed) {\n      this.initImage(function () {\n        _this6.renderImage(function () {\n          if (options.transition) {\n            setTimeout(function () {\n              addClass(image, CLASS_TRANSITION);\n              addClass(list, CLASS_TRANSITION);\n            }, 0);\n          }\n        });\n      });\n    }\n\n    return this;\n  },\n  // Exit modal mode (only available in inline mode)\n  exit: function exit() {\n    var _this7 = this;\n\n    var options = this.options,\n        viewer = this.viewer,\n        image = this.image,\n        list = this.list;\n\n    if (!this.isShown || this.played || !this.fulled || !options.inline) {\n      return this;\n    }\n\n    this.fulled = false;\n    this.close();\n    removeClass(this.button, CLASS_FULLSCREEN_EXIT);\n\n    if (options.transition) {\n      removeClass(list, CLASS_TRANSITION);\n\n      if (this.viewed) {\n        removeClass(image, CLASS_TRANSITION);\n      }\n    }\n\n    removeClass(viewer, CLASS_FIXED);\n    setStyle(viewer, {\n      zIndex: options.zIndexInline\n    });\n    this.viewerData = assign({}, this.parentData);\n    this.renderViewer();\n    this.renderList();\n\n    if (this.viewed) {\n      this.initImage(function () {\n        _this7.renderImage(function () {\n          if (options.transition) {\n            setTimeout(function () {\n              addClass(image, CLASS_TRANSITION);\n              addClass(list, CLASS_TRANSITION);\n            }, 0);\n          }\n        });\n      });\n    }\n\n    return this;\n  },\n  // Show the current ratio of the image with percentage\n  tooltip: function tooltip() {\n    var _this8 = this;\n\n    var options = this.options,\n        tooltipBox = this.tooltipBox,\n        imageData = this.imageData;\n\n    if (!this.viewed || this.played || !options.tooltip) {\n      return this;\n    }\n\n    tooltipBox.textContent = \"\".concat(Math.round(imageData.ratio * 100), \"%\");\n\n    if (!this.tooltipping) {\n      if (options.transition) {\n        if (this.fading) {\n          dispatchEvent(tooltipBox, EVENT_TRANSITION_END);\n        }\n\n        addClass(tooltipBox, CLASS_SHOW);\n        addClass(tooltipBox, CLASS_FADE);\n        addClass(tooltipBox, CLASS_TRANSITION); // Force reflow to enable CSS3 transition\n\n        tooltipBox.initialOffsetWidth = tooltipBox.offsetWidth;\n        addClass(tooltipBox, CLASS_IN);\n      } else {\n        addClass(tooltipBox, CLASS_SHOW);\n      }\n    } else {\n      clearTimeout(this.tooltipping);\n    }\n\n    this.tooltipping = setTimeout(function () {\n      if (options.transition) {\n        addListener(tooltipBox, EVENT_TRANSITION_END, function () {\n          removeClass(tooltipBox, CLASS_SHOW);\n          removeClass(tooltipBox, CLASS_FADE);\n          removeClass(tooltipBox, CLASS_TRANSITION);\n          _this8.fading = false;\n        }, {\n          once: true\n        });\n        removeClass(tooltipBox, CLASS_IN);\n        _this8.fading = true;\n      } else {\n        removeClass(tooltipBox, CLASS_SHOW);\n      }\n\n      _this8.tooltipping = false;\n    }, 1000);\n    return this;\n  },\n  // Toggle the image size between its natural size and initial size\n  toggle: function toggle() {\n    if (this.imageData.ratio === 1) {\n      this.zoomTo(this.initialImageData.ratio, true);\n    } else {\n      this.zoomTo(1, true);\n    }\n\n    return this;\n  },\n  // Reset the image to its initial state\n  reset: function reset() {\n    if (this.viewed && !this.played) {\n      this.imageData = assign({}, this.initialImageData);\n      this.renderImage();\n    }\n\n    return this;\n  },\n  // Update viewer when images changed\n  update: function update() {\n    var _this9 = this;\n\n    var element = this.element,\n        options = this.options,\n        isImg = this.isImg; // Destroy viewer if the target image was deleted\n\n    if (isImg && !element.parentNode) {\n      return this.destroy();\n    }\n\n    var images = [];\n    forEach(isImg ? [element] : element.querySelectorAll('img'), function (image) {\n      if (isFunction(options.filter)) {\n        if (options.filter.call(_this9, image)) {\n          images.push(image);\n        }\n      } else if (_this9.getImageURL(image)) {\n        images.push(image);\n      }\n    });\n\n    if (!images.length) {\n      return this;\n    }\n\n    this.images = images;\n    this.length = images.length;\n\n    if (this.ready) {\n      var changedIndexes = [];\n      forEach(this.items, function (item, i) {\n        var img = item.querySelector('img');\n        var image = images[i];\n\n        if (image && img) {\n          if (image.src !== img.src // Title changed (#408)\n          || image.alt !== img.alt) {\n            changedIndexes.push(i);\n          }\n        } else {\n          changedIndexes.push(i);\n        }\n      });\n      setStyle(this.list, {\n        width: 'auto'\n      });\n      this.initList();\n\n      if (this.isShown) {\n        if (this.length) {\n          if (this.viewed) {\n            var changedIndex = changedIndexes.indexOf(this.index);\n\n            if (changedIndex >= 0) {\n              this.viewed = false;\n              this.view(Math.max(Math.min(this.index - changedIndex, this.length - 1), 0));\n            } else {\n              // Reactivate the current viewing item after reset the list.\n              addClass(this.items[this.index], CLASS_ACTIVE);\n            }\n          }\n        } else {\n          this.image = null;\n          this.viewed = false;\n          this.index = 0;\n          this.imageData = {};\n          this.canvas.innerHTML = '';\n          this.title.innerHTML = '';\n        }\n      }\n    } else {\n      this.build();\n    }\n\n    return this;\n  },\n  // Destroy the viewer\n  destroy: function destroy() {\n    var element = this.element,\n        options = this.options;\n\n    if (!element[NAMESPACE]) {\n      return this;\n    }\n\n    this.destroyed = true;\n\n    if (this.ready) {\n      if (this.played) {\n        this.stop();\n      }\n\n      if (options.inline) {\n        if (this.fulled) {\n          this.exit();\n        }\n\n        this.unbind();\n      } else if (this.isShown) {\n        if (this.viewing) {\n          if (this.imageRendering) {\n            this.imageRendering.abort();\n          } else if (this.imageInitializing) {\n            this.imageInitializing.abort();\n          }\n        }\n\n        if (this.hiding) {\n          this.transitioning.abort();\n        }\n\n        this.hidden();\n      } else if (this.showing) {\n        this.transitioning.abort();\n        this.hidden();\n      }\n\n      this.ready = false;\n      this.viewer.parentNode.removeChild(this.viewer);\n    } else if (options.inline) {\n      if (this.delaying) {\n        this.delaying.abort();\n      } else if (this.initializing) {\n        this.initializing.abort();\n      }\n    }\n\n    if (!options.inline) {\n      removeListener(element, EVENT_CLICK, this.onStart);\n    }\n\n    element[NAMESPACE] = undefined;\n    return this;\n  }\n};\n\nvar others = {\n  getImageURL: function getImageURL(image) {\n    var url = this.options.url;\n\n    if (isString(url)) {\n      url = image.getAttribute(url);\n    } else if (isFunction(url)) {\n      url = url.call(this, image);\n    } else {\n      url = '';\n    }\n\n    return url;\n  },\n  open: function open() {\n    var body = this.body;\n    addClass(body, CLASS_OPEN);\n    body.style.paddingRight = \"\".concat(this.scrollbarWidth + (parseFloat(this.initialBodyComputedPaddingRight) || 0), \"px\");\n  },\n  close: function close() {\n    var body = this.body;\n    removeClass(body, CLASS_OPEN);\n    body.style.paddingRight = this.initialBodyPaddingRight;\n  },\n  shown: function shown() {\n    var element = this.element,\n        options = this.options;\n    this.fulled = true;\n    this.isShown = true;\n    this.render();\n    this.bind();\n    this.showing = false;\n\n    if (isFunction(options.shown)) {\n      addListener(element, EVENT_SHOWN, options.shown, {\n        once: true\n      });\n    }\n\n    if (dispatchEvent(element, EVENT_SHOWN) === false) {\n      return;\n    }\n\n    if (this.ready && this.isShown && !this.hiding) {\n      this.view(this.index);\n    }\n  },\n  hidden: function hidden() {\n    var element = this.element,\n        options = this.options;\n    this.fulled = false;\n    this.viewed = false;\n    this.isShown = false;\n    this.close();\n    this.unbind();\n    addClass(this.viewer, CLASS_HIDE);\n    this.resetList();\n    this.resetImage();\n    this.hiding = false;\n\n    if (!this.destroyed) {\n      if (isFunction(options.hidden)) {\n        addListener(element, EVENT_HIDDEN, options.hidden, {\n          once: true\n        });\n      }\n\n      dispatchEvent(element, EVENT_HIDDEN, null, {\n        cancelable: false\n      });\n    }\n  },\n  requestFullscreen: function requestFullscreen() {\n    var document = this.element.ownerDocument;\n\n    if (this.fulled && !(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement)) {\n      var documentElement = document.documentElement; // Element.requestFullscreen()\n\n      if (documentElement.requestFullscreen) {\n        documentElement.requestFullscreen();\n      } else if (documentElement.webkitRequestFullscreen) {\n        documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n      } else if (documentElement.mozRequestFullScreen) {\n        documentElement.mozRequestFullScreen();\n      } else if (documentElement.msRequestFullscreen) {\n        documentElement.msRequestFullscreen();\n      }\n    }\n  },\n  exitFullscreen: function exitFullscreen() {\n    var document = this.element.ownerDocument;\n\n    if (this.fulled && (document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement)) {\n      // Document.exitFullscreen()\n      if (document.exitFullscreen) {\n        document.exitFullscreen();\n      } else if (document.webkitExitFullscreen) {\n        document.webkitExitFullscreen();\n      } else if (document.mozCancelFullScreen) {\n        document.mozCancelFullScreen();\n      } else if (document.msExitFullscreen) {\n        document.msExitFullscreen();\n      }\n    }\n  },\n  change: function change(event) {\n    var options = this.options,\n        pointers = this.pointers;\n    var pointer = pointers[Object.keys(pointers)[0]];\n    var offsetX = pointer.endX - pointer.startX;\n    var offsetY = pointer.endY - pointer.startY;\n\n    switch (this.action) {\n      // Move the current image\n      case ACTION_MOVE:\n        this.move(offsetX, offsetY);\n        break;\n      // Zoom the current image\n\n      case ACTION_ZOOM:\n        this.zoom(getMaxZoomRatio(pointers), false, event);\n        break;\n\n      case ACTION_SWITCH:\n        {\n          this.action = 'switched';\n          var absoluteOffsetX = Math.abs(offsetX);\n\n          if (absoluteOffsetX > 1 && absoluteOffsetX > Math.abs(offsetY)) {\n            // Empty `pointers` as `touchend` event will not be fired after swiped in iOS browsers.\n            this.pointers = {};\n\n            if (offsetX > 1) {\n              this.prev(options.loop);\n            } else if (offsetX < -1) {\n              this.next(options.loop);\n            }\n          }\n\n          break;\n        }\n    } // Override\n\n\n    forEach(pointers, function (p) {\n      p.startX = p.endX;\n      p.startY = p.endY;\n    });\n  },\n  isSwitchable: function isSwitchable() {\n    var imageData = this.imageData,\n        viewerData = this.viewerData;\n    return this.length > 1 && imageData.left >= 0 && imageData.top >= 0 && imageData.width <= viewerData.width && imageData.height <= viewerData.height;\n  }\n};\n\nvar AnotherViewer = WINDOW.Viewer;\n\nvar Viewer = /*#__PURE__*/function () {\n  /**\n   * Create a new Viewer.\n   * @param {Element} element - The target element for viewing.\n   * @param {Object} [options={}] - The configuration options.\n   */\n  function Viewer(element) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Viewer);\n\n    if (!element || element.nodeType !== 1) {\n      throw new Error('The first argument is required and must be an element.');\n    }\n\n    this.element = element;\n    this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\n    this.action = false;\n    this.fading = false;\n    this.fulled = false;\n    this.hiding = false;\n    this.imageClicked = false;\n    this.imageData = {};\n    this.index = this.options.initialViewIndex;\n    this.isImg = false;\n    this.isShown = false;\n    this.length = 0;\n    this.played = false;\n    this.playing = false;\n    this.pointers = {};\n    this.ready = false;\n    this.showing = false;\n    this.timeout = false;\n    this.tooltipping = false;\n    this.viewed = false;\n    this.viewing = false;\n    this.wheeling = false;\n    this.zooming = false;\n    this.init();\n  }\n\n  _createClass(Viewer, [{\n    key: \"init\",\n    value: function init() {\n      var _this = this;\n\n      var element = this.element,\n          options = this.options;\n\n      if (element[NAMESPACE]) {\n        return;\n      }\n\n      element[NAMESPACE] = this;\n      var isImg = element.tagName.toLowerCase() === 'img';\n      var images = [];\n      forEach(isImg ? [element] : element.querySelectorAll('img'), function (image) {\n        if (isFunction(options.filter)) {\n          if (options.filter.call(_this, image)) {\n            images.push(image);\n          }\n        } else if (_this.getImageURL(image)) {\n          images.push(image);\n        }\n      });\n      this.isImg = isImg;\n      this.length = images.length;\n      this.images = images;\n      this.initBody(); // Override `transition` option if it is not supported\n\n      if (isUndefined(document.createElement(NAMESPACE).style.transition)) {\n        options.transition = false;\n      }\n\n      if (options.inline) {\n        var count = 0;\n\n        var progress = function progress() {\n          count += 1;\n\n          if (count === _this.length) {\n            var timeout;\n            _this.initializing = false;\n            _this.delaying = {\n              abort: function abort() {\n                clearTimeout(timeout);\n              }\n            }; // build asynchronously to keep `this.viewer` is accessible in `ready` event handler.\n\n            timeout = setTimeout(function () {\n              _this.delaying = false;\n\n              _this.build();\n            }, 0);\n          }\n        };\n\n        this.initializing = {\n          abort: function abort() {\n            forEach(images, function (image) {\n              if (!image.complete) {\n                removeListener(image, EVENT_LOAD, progress);\n              }\n            });\n          }\n        };\n        forEach(images, function (image) {\n          if (image.complete) {\n            progress();\n          } else {\n            addListener(image, EVENT_LOAD, progress, {\n              once: true\n            });\n          }\n        });\n      } else {\n        addListener(element, EVENT_CLICK, this.onStart = function (_ref) {\n          var target = _ref.target;\n\n          if (target.tagName.toLowerCase() === 'img' && (!isFunction(options.filter) || options.filter.call(_this, target))) {\n            _this.view(_this.images.indexOf(target));\n          }\n        });\n      }\n    }\n  }, {\n    key: \"build\",\n    value: function build() {\n      if (this.ready) {\n        return;\n      }\n\n      var element = this.element,\n          options = this.options;\n      var parent = element.parentNode;\n      var template = document.createElement('div');\n      template.innerHTML = TEMPLATE;\n      var viewer = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\n      var title = viewer.querySelector(\".\".concat(NAMESPACE, \"-title\"));\n      var toolbar = viewer.querySelector(\".\".concat(NAMESPACE, \"-toolbar\"));\n      var navbar = viewer.querySelector(\".\".concat(NAMESPACE, \"-navbar\"));\n      var button = viewer.querySelector(\".\".concat(NAMESPACE, \"-button\"));\n      var canvas = viewer.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\n      this.parent = parent;\n      this.viewer = viewer;\n      this.title = title;\n      this.toolbar = toolbar;\n      this.navbar = navbar;\n      this.button = button;\n      this.canvas = canvas;\n      this.footer = viewer.querySelector(\".\".concat(NAMESPACE, \"-footer\"));\n      this.tooltipBox = viewer.querySelector(\".\".concat(NAMESPACE, \"-tooltip\"));\n      this.player = viewer.querySelector(\".\".concat(NAMESPACE, \"-player\"));\n      this.list = viewer.querySelector(\".\".concat(NAMESPACE, \"-list\"));\n      addClass(title, !options.title ? CLASS_HIDE : getResponsiveClass(Array.isArray(options.title) ? options.title[0] : options.title));\n      addClass(navbar, !options.navbar ? CLASS_HIDE : getResponsiveClass(options.navbar));\n      toggleClass(button, CLASS_HIDE, !options.button);\n\n      if (options.backdrop) {\n        addClass(viewer, \"\".concat(NAMESPACE, \"-backdrop\"));\n\n        if (!options.inline && options.backdrop !== 'static') {\n          setData(canvas, DATA_ACTION, 'hide');\n        }\n      }\n\n      if (isString(options.className) && options.className) {\n        // In case there are multiple class names\n        options.className.split(REGEXP_SPACES).forEach(function (className) {\n          addClass(viewer, className);\n        });\n      }\n\n      if (options.toolbar) {\n        var list = document.createElement('ul');\n        var custom = isPlainObject(options.toolbar);\n        var zoomButtons = BUTTONS.slice(0, 3);\n        var rotateButtons = BUTTONS.slice(7, 9);\n        var scaleButtons = BUTTONS.slice(9);\n\n        if (!custom) {\n          addClass(toolbar, getResponsiveClass(options.toolbar));\n        }\n\n        forEach(custom ? options.toolbar : BUTTONS, function (value, index) {\n          var deep = custom && isPlainObject(value);\n          var name = custom ? hyphenate(index) : value;\n          var show = deep && !isUndefined(value.show) ? value.show : value;\n\n          if (!show || !options.zoomable && zoomButtons.indexOf(name) !== -1 || !options.rotatable && rotateButtons.indexOf(name) !== -1 || !options.scalable && scaleButtons.indexOf(name) !== -1) {\n            return;\n          }\n\n          var size = deep && !isUndefined(value.size) ? value.size : value;\n          var click = deep && !isUndefined(value.click) ? value.click : value;\n          var item = document.createElement('li');\n          item.setAttribute('role', 'button');\n          addClass(item, \"\".concat(NAMESPACE, \"-\").concat(name));\n\n          if (!isFunction(click)) {\n            setData(item, DATA_ACTION, name);\n          }\n\n          if (isNumber(show)) {\n            addClass(item, getResponsiveClass(show));\n          }\n\n          if (['small', 'large'].indexOf(size) !== -1) {\n            addClass(item, \"\".concat(NAMESPACE, \"-\").concat(size));\n          } else if (name === 'play') {\n            addClass(item, \"\".concat(NAMESPACE, \"-large\"));\n          }\n\n          if (isFunction(click)) {\n            addListener(item, EVENT_CLICK, click);\n          }\n\n          list.appendChild(item);\n        });\n        toolbar.appendChild(list);\n      } else {\n        addClass(toolbar, CLASS_HIDE);\n      }\n\n      if (!options.rotatable) {\n        var rotates = toolbar.querySelectorAll('li[class*=\"rotate\"]');\n        addClass(rotates, CLASS_INVISIBLE);\n        forEach(rotates, function (rotate) {\n          toolbar.appendChild(rotate);\n        });\n      }\n\n      if (options.inline) {\n        addClass(button, CLASS_FULLSCREEN);\n        setStyle(viewer, {\n          zIndex: options.zIndexInline\n        });\n\n        if (window.getComputedStyle(parent).position === 'static') {\n          setStyle(parent, {\n            position: 'relative'\n          });\n        }\n\n        parent.insertBefore(viewer, element.nextSibling);\n      } else {\n        addClass(button, CLASS_CLOSE);\n        addClass(viewer, CLASS_FIXED);\n        addClass(viewer, CLASS_FADE);\n        addClass(viewer, CLASS_HIDE);\n        setStyle(viewer, {\n          zIndex: options.zIndex\n        });\n        var container = options.container;\n\n        if (isString(container)) {\n          container = element.ownerDocument.querySelector(container);\n        }\n\n        if (!container) {\n          container = this.body;\n        }\n\n        container.appendChild(viewer);\n      }\n\n      if (options.inline) {\n        this.render();\n        this.bind();\n        this.isShown = true;\n      }\n\n      this.ready = true;\n\n      if (isFunction(options.ready)) {\n        addListener(element, EVENT_READY, options.ready, {\n          once: true\n        });\n      }\n\n      if (dispatchEvent(element, EVENT_READY) === false) {\n        this.ready = false;\n        return;\n      }\n\n      if (this.ready && options.inline) {\n        this.view(this.index);\n      }\n    }\n    /**\n     * Get the no conflict viewer class.\n     * @returns {Viewer} The viewer class.\n     */\n\n  }], [{\n    key: \"noConflict\",\n    value: function noConflict() {\n      window.Viewer = AnotherViewer;\n      return Viewer;\n    }\n    /**\n     * Change the default options.\n     * @param {Object} options - The new default options.\n     */\n\n  }, {\n    key: \"setDefaults\",\n    value: function setDefaults(options) {\n      assign(DEFAULTS, isPlainObject(options) && options);\n    }\n  }]);\n\n  return Viewer;\n}();\n\nassign(Viewer.prototype, render, events, handlers, methods, others);\n\nmodule.exports = Viewer;\n"
  },
  {
    "path": "public/assets/luna/js/viewerjs/viewer.css",
    "content": "/*!\n * Viewer.js v1.7.1\n * https://fengyuanchen.github.io/viewerjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2020-09-29T13:45:16.438Z\n */\n\n.viewer-zoom-in::before,\n.viewer-zoom-out::before,\n.viewer-one-to-one::before,\n.viewer-reset::before,\n.viewer-prev::before,\n.viewer-play::before,\n.viewer-next::before,\n.viewer-rotate-left::before,\n.viewer-rotate-right::before,\n.viewer-flip-horizontal::before,\n.viewer-flip-vertical::before,\n.viewer-fullscreen::before,\n.viewer-fullscreen-exit::before,\n.viewer-close::before {\n  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAAUCAYAAABWOyJDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAQPSURBVHic7Zs/iFxVFMa/0U2UaJGksUgnIVhYxVhpjDbZCBmLdAYECxsRFBTUamcXUiSNncgKQbSxsxH8gzAP3FU2jY0kKKJNiiiIghFlccnP4p3nPCdv3p9778vsLOcHB2bfveeb7955c3jvvNkBIMdxnD64a94GHMfZu3iBcRynN7zAOI7TG15gHCeeNUkr8zaxG2lbYDYsdgMbktBsP03jdQwljSXdtBhLOmtjowC9Mg9L+knSlcD8TNKpSA9lBpK2JF2VdDSR5n5J64m0qli399hNFMUlpshQii5jbXTbHGviB0nLNeNDSd9VO4A2UdB2fp+x0eCnaXxWXGA2X0au/3HgN9P4LFCjIANOJdrLr0zzZ+BEpNYDwKbpnQMeAw4m8HjQtM6Z9qa917zPQwFr3M5KgA6J5rTJCdFZJj9/lyvGhsDvwFNVuV2MhhjrK6b9bFiE+j1r87eBl4HDwCF7/U/k+ofAX5b/EXBv5JoLMuILzf3Ap6Z3EzgdqHMCuF7hcQf4HDgeoHnccncqdK/TvSDWffFXI/exICY/xZyqc6XLWF1UFZna4gJ7q8BsRvgd2/xXpo6P+D9dfT7PpECtA3cnWPM0GXGFZh/wgWltA+cDNC7X+AP4GzjZQe+k5dRxuYPeiuXU7e1qwLpDz7dFjXKRaSwuMLvAlG8zZlG+YmiK1HoFqT7wP2z+4Q45TfEGcMt01xLoNZEBTwRqD4BLpnMLeC1A41UmVxsXgXeBayV/Wx20rpTyrpnWRft7p6O/FdqzGrDukPNtkaMoMo3FBdBSQMOnYBCReyf05s126fU9ytfX98+mY54Kxnp7S9K3kj6U9KYdG0h6UdLbkh7poFXMfUnSOyVvL0h6VtIXHbS6nOP+s/Zm9mvyXW1uuC9ohZ72E9uDmXWLJOB1GxsH+DxPftsB8B6wlGDN02TAkxG6+4D3TWsbeC5CS8CDFce+AW500LhhOW2020TRjK3b21HEmgti9m0RonxbdMZeVzV+/4tF3cBpP7E9mKHNL5q8h5g0eYsCMQz0epq8gQrwMXAgcs0FGXGFRcB9wCemF9PkbYqM/Bas7fxLwNeJPdTdpo4itQti8lPMqTpXuozVRVXPpbHI3KkNTB1NfkL81j2mvhDp91HgV9MKuRIqrykj3WPq4rHyL+axj8/qGPmTqi6F9YDlHOvJU6oYcTsh/TYSzWmTE6JT19CtLTJt32D6CmHe0eQn1O8z5AXgT4sx4Vcu0/EQecMydB8z0hUWkTd2t4CrwNEePqMBcAR4mrBbwyXLPWJa8zrXmmLEhNBmfpkuY2102xxrih+pb+ieAb6vGhuA97UcJ5KR8gZ77K+99xxeYBzH6Q3/Z0fHcXrDC4zjOL3hBcZxnN74F+zlvXFWXF9PAAAAAElFTkSuQmCC');\n  background-repeat: no-repeat;\n  background-size: 280px;\n  color: transparent;\n  display: block;\n  font-size: 0;\n  height: 20px;\n  line-height: 0;\n  width: 20px;\n}\n\n.viewer-zoom-in::before {\n  background-position: 0 0;\n  content: 'Zoom In';\n}\n\n.viewer-zoom-out::before {\n  background-position: -20px 0;\n  content: 'Zoom Out';\n}\n\n.viewer-one-to-one::before {\n  background-position: -40px 0;\n  content: 'One to One';\n}\n\n.viewer-reset::before {\n  background-position: -60px 0;\n  content: 'Reset';\n}\n\n.viewer-prev::before {\n  background-position: -80px 0;\n  content: 'Previous';\n}\n\n.viewer-play::before {\n  background-position: -100px 0;\n  content: 'Play';\n}\n\n.viewer-next::before {\n  background-position: -120px 0;\n  content: 'Next';\n}\n\n.viewer-rotate-left::before {\n  background-position: -140px 0;\n  content: 'Rotate Left';\n}\n\n.viewer-rotate-right::before {\n  background-position: -160px 0;\n  content: 'Rotate Right';\n}\n\n.viewer-flip-horizontal::before {\n  background-position: -180px 0;\n  content: 'Flip Horizontal';\n}\n\n.viewer-flip-vertical::before {\n  background-position: -200px 0;\n  content: 'Flip Vertical';\n}\n\n.viewer-fullscreen::before {\n  background-position: -220px 0;\n  content: 'Enter Full Screen';\n}\n\n.viewer-fullscreen-exit::before {\n  background-position: -240px 0;\n  content: 'Exit Full Screen';\n}\n\n.viewer-close::before {\n  background-position: -260px 0;\n  content: 'Close';\n}\n\n.viewer-container {\n  bottom: 0;\n  direction: ltr;\n  font-size: 0;\n  left: 0;\n  line-height: 0;\n  overflow: hidden;\n  position: absolute;\n  right: 0;\n  -webkit-tap-highlight-color: transparent;\n  top: 0;\n  -ms-touch-action: none;\n  touch-action: none;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n\n.viewer-container::-moz-selection,\n.viewer-container *::-moz-selection {\n  background-color: transparent;\n}\n\n.viewer-container::selection,\n.viewer-container *::selection {\n  background-color: transparent;\n}\n\n.viewer-container img {\n  display: block;\n  height: auto;\n  max-height: none !important;\n  max-width: none !important;\n  min-height: 0 !important;\n  min-width: 0 !important;\n  width: 100%;\n}\n\n.viewer-canvas {\n  bottom: 0;\n  left: 0;\n  overflow: hidden;\n  position: absolute;\n  right: 0;\n  top: 0;\n}\n\n.viewer-canvas > img {\n  height: auto;\n  margin: 15px auto;\n  max-width: 90% !important;\n  width: auto;\n}\n\n.viewer-footer {\n  bottom: 0;\n  left: 0;\n  overflow: hidden;\n  position: absolute;\n  right: 0;\n  text-align: center;\n}\n\n.viewer-navbar {\n  background-color: rgba(0, 0, 0, 0.5);\n  overflow: hidden;\n}\n\n.viewer-list {\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 50px;\n  margin: 0;\n  overflow: hidden;\n  padding: 1px 0;\n}\n\n.viewer-list > li {\n  color: transparent;\n  cursor: pointer;\n  float: left;\n  font-size: 0;\n  height: 50px;\n  line-height: 0;\n  opacity: 0.5;\n  overflow: hidden;\n  -webkit-transition: opacity 0.15s;\n  transition: opacity 0.15s;\n  width: 30px;\n}\n\n.viewer-list > li:hover {\n  opacity: 0.75;\n}\n\n.viewer-list > li + li {\n  margin-left: 1px;\n}\n\n.viewer-list > .viewer-loading {\n  position: relative;\n}\n\n.viewer-list > .viewer-loading::after {\n  border-width: 2px;\n  height: 20px;\n  margin-left: -10px;\n  margin-top: -10px;\n  width: 20px;\n}\n\n.viewer-list > .viewer-active,\n.viewer-list > .viewer-active:hover {\n  opacity: 1;\n}\n\n.viewer-player {\n  background-color: #000;\n  bottom: 0;\n  cursor: none;\n  display: none;\n  left: 0;\n  position: absolute;\n  right: 0;\n  top: 0;\n}\n\n.viewer-player > img {\n  left: 0;\n  position: absolute;\n  top: 0;\n}\n\n.viewer-toolbar > ul {\n  display: inline-block;\n  margin: 0 auto 5px;\n  overflow: hidden;\n  padding: 3px 0;\n}\n\n.viewer-toolbar > ul > li {\n  background-color: rgba(0, 0, 0, 0.5);\n  border-radius: 50%;\n  cursor: pointer;\n  float: left;\n  height: 24px;\n  overflow: hidden;\n  -webkit-transition: background-color 0.15s;\n  transition: background-color 0.15s;\n  width: 24px;\n}\n\n.viewer-toolbar > ul > li:hover {\n  background-color: rgba(0, 0, 0, 0.8);\n}\n\n.viewer-toolbar > ul > li::before {\n  margin: 2px;\n}\n\n.viewer-toolbar > ul > li + li {\n  margin-left: 1px;\n}\n\n.viewer-toolbar > ul > .viewer-small {\n  height: 18px;\n  margin-bottom: 3px;\n  margin-top: 3px;\n  width: 18px;\n}\n\n.viewer-toolbar > ul > .viewer-small::before {\n  margin: -1px;\n}\n\n.viewer-toolbar > ul > .viewer-large {\n  height: 30px;\n  margin-bottom: -3px;\n  margin-top: -3px;\n  width: 30px;\n}\n\n.viewer-toolbar > ul > .viewer-large::before {\n  margin: 5px;\n}\n\n.viewer-tooltip {\n  background-color: rgba(0, 0, 0, 0.8);\n  border-radius: 10px;\n  color: #fff;\n  display: none;\n  font-size: 12px;\n  height: 20px;\n  left: 50%;\n  line-height: 20px;\n  margin-left: -25px;\n  margin-top: -10px;\n  position: absolute;\n  text-align: center;\n  top: 50%;\n  width: 50px;\n}\n\n.viewer-title {\n  color: #ccc;\n  display: inline-block;\n  font-size: 12px;\n  line-height: 1;\n  margin: 0 5% 5px;\n  max-width: 90%;\n  opacity: 0.8;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  -webkit-transition: opacity 0.15s;\n  transition: opacity 0.15s;\n  white-space: nowrap;\n}\n\n.viewer-title:hover {\n  opacity: 1;\n}\n\n.viewer-button {\n  background-color: rgba(0, 0, 0, 0.5);\n  border-radius: 50%;\n  cursor: pointer;\n  height: 80px;\n  overflow: hidden;\n  position: absolute;\n  right: -40px;\n  top: -40px;\n  -webkit-transition: background-color 0.15s;\n  transition: background-color 0.15s;\n  width: 80px;\n}\n\n.viewer-button:focus,\n.viewer-button:hover {\n  background-color: rgba(0, 0, 0, 0.8);\n}\n\n.viewer-button::before {\n  bottom: 15px;\n  left: 15px;\n  position: absolute;\n}\n\n.viewer-fixed {\n  position: fixed;\n}\n\n.viewer-open {\n  overflow: hidden;\n}\n\n.viewer-show {\n  display: block;\n}\n\n.viewer-hide {\n  display: none;\n}\n\n.viewer-backdrop {\n  background-color: rgba(0, 0, 0, 0.5);\n}\n\n.viewer-invisible {\n  visibility: hidden;\n}\n\n.viewer-move {\n  cursor: move;\n  cursor: -webkit-grab;\n  cursor: grab;\n}\n\n.viewer-fade {\n  opacity: 0;\n}\n\n.viewer-in {\n  opacity: 1;\n}\n\n.viewer-transition {\n  -webkit-transition: all 0.3s;\n  transition: all 0.3s;\n}\n\n@-webkit-keyframes viewer-spinner {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n\n@keyframes viewer-spinner {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n\n  100% {\n    -webkit-transform: rotate(360deg);\n    transform: rotate(360deg);\n  }\n}\n\n.viewer-loading::after {\n  -webkit-animation: viewer-spinner 1s linear infinite;\n  animation: viewer-spinner 1s linear infinite;\n  border: 4px solid rgba(255, 255, 255, 0.1);\n  border-left-color: rgba(255, 255, 255, 0.5);\n  border-radius: 50%;\n  content: '';\n  display: inline-block;\n  height: 40px;\n  left: 50%;\n  margin-left: -20px;\n  margin-top: -20px;\n  position: absolute;\n  top: 50%;\n  width: 40px;\n  z-index: 1;\n}\n\n@media (max-width: 767px) {\n  .viewer-hide-xs-down {\n    display: none;\n  }\n}\n\n@media (max-width: 991px) {\n  .viewer-hide-sm-down {\n    display: none;\n  }\n}\n\n@media (max-width: 1199px) {\n  .viewer-hide-md-down {\n    display: none;\n  }\n}\n"
  },
  {
    "path": "public/assets/luna/js/viewerjs/viewer.esm.js",
    "content": "/*!\n * Viewer.js v1.7.1\n * https://fengyuanchen.github.io/viewerjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2020-09-29T13:45:20.981Z\n */\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nvar DEFAULTS = {\n  /**\n   * Enable a modal backdrop, specify `static` for a backdrop\n   * which doesn't close the modal on click.\n   * @type {boolean}\n   */\n  backdrop: true,\n\n  /**\n   * Show the button on the top-right of the viewer.\n   * @type {boolean}\n   */\n  button: true,\n\n  /**\n   * Show the navbar.\n   * @type {boolean | number}\n   */\n  navbar: true,\n\n  /**\n   * Specify the visibility and the content of the title.\n   * @type {boolean | number | Function | Array}\n   */\n  title: true,\n\n  /**\n   * Show the toolbar.\n   * @type {boolean | number | Object}\n   */\n  toolbar: true,\n\n  /**\n   * Custom class name(s) to add to the viewer's root element.\n   * @type {string}\n   */\n  className: '',\n\n  /**\n   * Define where to put the viewer in modal mode.\n   * @type {string | Element}\n   */\n  container: 'body',\n\n  /**\n   * Filter the images for viewing. Return true if the image is viewable.\n   * @type {Function}\n   */\n  filter: null,\n\n  /**\n   * Enable to request fullscreen when play.\n   * @type {boolean}\n   */\n  fullscreen: true,\n\n  /**\n   * Define the extra attributes to inherit from the original image.\n   * @type {Array}\n   */\n  inheritedAttributes: ['crossOrigin', 'decoding', 'isMap', 'loading', 'referrerPolicy', 'sizes', 'srcset', 'useMap'],\n\n  /**\n   * Define the initial index of image for viewing.\n   * @type {number}\n   */\n  initialViewIndex: 0,\n\n  /**\n   * Enable inline mode.\n   * @type {boolean}\n   */\n  inline: false,\n\n  /**\n   * The amount of time to delay between automatically cycling an image when playing.\n   * @type {number}\n   */\n  interval: 5000,\n\n  /**\n   * Enable keyboard support.\n   * @type {boolean}\n   */\n  keyboard: true,\n\n  /**\n   * Indicate if show a loading spinner when load image or not.\n   * @type {boolean}\n   */\n  loading: true,\n\n  /**\n   * Indicate if enable loop viewing or not.\n   * @type {boolean}\n   */\n  loop: true,\n\n  /**\n   * Min width of the viewer in inline mode.\n   * @type {number}\n   */\n  minWidth: 200,\n\n  /**\n   * Min height of the viewer in inline mode.\n   * @type {number}\n   */\n  minHeight: 100,\n\n  /**\n   * Enable to move the image.\n   * @type {boolean}\n   */\n  movable: true,\n\n  /**\n   * Enable to rotate the image.\n   * @type {boolean}\n   */\n  rotatable: true,\n\n  /**\n   * Enable to scale the image.\n   * @type {boolean}\n   */\n  scalable: true,\n\n  /**\n   * Enable to zoom the image.\n   * @type {boolean}\n   */\n  zoomable: true,\n\n  /**\n   * Enable to zoom the current image by dragging on the touch screen.\n   * @type {boolean}\n   */\n  zoomOnTouch: true,\n\n  /**\n   * Enable to zoom the image by wheeling mouse.\n   * @type {boolean}\n   */\n  zoomOnWheel: true,\n\n  /**\n   * Enable to slide to the next or previous image by swiping on the touch screen.\n   * @type {boolean}\n   */\n  slideOnTouch: true,\n\n  /**\n   * Indicate if toggle the image size between its natural size\n   * and initial size when double click on the image or not.\n   * @type {boolean}\n   */\n  toggleOnDblclick: true,\n\n  /**\n   * Show the tooltip with image ratio (percentage) when zoom in or zoom out.\n   * @type {boolean}\n   */\n  tooltip: true,\n\n  /**\n   * Enable CSS3 Transition for some special elements.\n   * @type {boolean}\n   */\n  transition: true,\n\n  /**\n   * Define the CSS `z-index` value of viewer in modal mode.\n   * @type {number}\n   */\n  zIndex: 2015,\n\n  /**\n   * Define the CSS `z-index` value of viewer in inline mode.\n   * @type {number}\n   */\n  zIndexInline: 0,\n\n  /**\n   * Define the ratio when zoom the image by wheeling mouse.\n   * @type {number}\n   */\n  zoomRatio: 0.1,\n\n  /**\n   * Define the min ratio of the image when zoom out.\n   * @type {number}\n   */\n  minZoomRatio: 0.01,\n\n  /**\n   * Define the max ratio of the image when zoom in.\n   * @type {number}\n   */\n  maxZoomRatio: 100,\n\n  /**\n   * Define where to get the original image URL for viewing.\n   * @type {string | Function}\n   */\n  url: 'src',\n\n  /**\n   * Event shortcuts.\n   * @type {Function}\n   */\n  ready: null,\n  show: null,\n  shown: null,\n  hide: null,\n  hidden: null,\n  view: null,\n  viewed: null,\n  zoom: null,\n  zoomed: null,\n  play: null,\n  stop: null\n};\n\nvar TEMPLATE = '<div class=\"viewer-container\" touch-action=\"none\">' + '<div class=\"viewer-canvas\"></div>' + '<div class=\"viewer-footer\">' + '<div class=\"viewer-title\"></div>' + '<div class=\"viewer-toolbar\"></div>' + '<div class=\"viewer-navbar\">' + '<ul class=\"viewer-list\"></ul>' + '</div>' + '</div>' + '<div class=\"viewer-tooltip\"></div>' + '<div role=\"button\" class=\"viewer-button\" data-viewer-action=\"mix\"></div>' + '<div class=\"viewer-player\"></div>' + '</div>';\n\nvar IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nvar WINDOW = IS_BROWSER ? window : {};\nvar IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\nvar HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\nvar NAMESPACE = 'viewer'; // Actions\n\nvar ACTION_MOVE = 'move';\nvar ACTION_SWITCH = 'switch';\nvar ACTION_ZOOM = 'zoom'; // Classes\n\nvar CLASS_ACTIVE = \"\".concat(NAMESPACE, \"-active\");\nvar CLASS_CLOSE = \"\".concat(NAMESPACE, \"-close\");\nvar CLASS_FADE = \"\".concat(NAMESPACE, \"-fade\");\nvar CLASS_FIXED = \"\".concat(NAMESPACE, \"-fixed\");\nvar CLASS_FULLSCREEN = \"\".concat(NAMESPACE, \"-fullscreen\");\nvar CLASS_FULLSCREEN_EXIT = \"\".concat(NAMESPACE, \"-fullscreen-exit\");\nvar CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\nvar CLASS_HIDE_MD_DOWN = \"\".concat(NAMESPACE, \"-hide-md-down\");\nvar CLASS_HIDE_SM_DOWN = \"\".concat(NAMESPACE, \"-hide-sm-down\");\nvar CLASS_HIDE_XS_DOWN = \"\".concat(NAMESPACE, \"-hide-xs-down\");\nvar CLASS_IN = \"\".concat(NAMESPACE, \"-in\");\nvar CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\nvar CLASS_LOADING = \"\".concat(NAMESPACE, \"-loading\");\nvar CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\");\nvar CLASS_OPEN = \"\".concat(NAMESPACE, \"-open\");\nvar CLASS_SHOW = \"\".concat(NAMESPACE, \"-show\");\nvar CLASS_TRANSITION = \"\".concat(NAMESPACE, \"-transition\"); // Events\n\nvar EVENT_CLICK = 'click';\nvar EVENT_DBLCLICK = 'dblclick';\nvar EVENT_DRAG_START = 'dragstart';\nvar EVENT_HIDDEN = 'hidden';\nvar EVENT_HIDE = 'hide';\nvar EVENT_KEY_DOWN = 'keydown';\nvar EVENT_LOAD = 'load';\nvar EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\nvar EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\nvar EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\nvar EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\nvar EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\nvar EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\nvar EVENT_READY = 'ready';\nvar EVENT_RESIZE = 'resize';\nvar EVENT_SHOW = 'show';\nvar EVENT_SHOWN = 'shown';\nvar EVENT_TRANSITION_END = 'transitionend';\nvar EVENT_VIEW = 'view';\nvar EVENT_VIEWED = 'viewed';\nvar EVENT_WHEEL = 'wheel';\nvar EVENT_ZOOM = 'zoom';\nvar EVENT_ZOOMED = 'zoomed';\nvar EVENT_PLAY = 'play';\nvar EVENT_STOP = 'stop'; // Data keys\n\nvar DATA_ACTION = \"\".concat(NAMESPACE, \"Action\"); // RegExps\n\nvar REGEXP_SPACES = /\\s\\s*/; // Misc\n\nvar BUTTONS = ['zoom-in', 'zoom-out', 'one-to-one', 'reset', 'prev', 'play', 'next', 'rotate-left', 'rotate-right', 'flip-horizontal', 'flip-vertical'];\n\n/**\n * Check if the given value is a string.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a string, else `false`.\n */\n\nfunction isString(value) {\n  return typeof value === 'string';\n}\n/**\n * Check if the given value is not a number.\n */\n\nvar isNaN = Number.isNaN || WINDOW.isNaN;\n/**\n * Check if the given value is a number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a number, else `false`.\n */\n\nfunction isNumber(value) {\n  return typeof value === 'number' && !isNaN(value);\n}\n/**\n * Check if the given value is undefined.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\n */\n\nfunction isUndefined(value) {\n  return typeof value === 'undefined';\n}\n/**\n * Check if the given value is an object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is an object, else `false`.\n */\n\nfunction isObject(value) {\n  return _typeof(value) === 'object' && value !== null;\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Check if the given value is a plain object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\n */\n\nfunction isPlainObject(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n\n  try {\n    var _constructor = value.constructor;\n    var prototype = _constructor.prototype;\n    return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n  } catch (error) {\n    return false;\n  }\n}\n/**\n * Check if the given value is a function.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a function, else `false`.\n */\n\nfunction isFunction(value) {\n  return typeof value === 'function';\n}\n/**\n * Iterate the given data.\n * @param {*} data - The data to iterate.\n * @param {Function} callback - The process function for each element.\n * @returns {*} The original data.\n */\n\nfunction forEach(data, callback) {\n  if (data && isFunction(callback)) {\n    if (Array.isArray(data) || isNumber(data.length)\n    /* array-like */\n    ) {\n        var length = data.length;\n        var i;\n\n        for (i = 0; i < length; i += 1) {\n          if (callback.call(data, data[i], i, data) === false) {\n            break;\n          }\n        }\n      } else if (isObject(data)) {\n      Object.keys(data).forEach(function (key) {\n        callback.call(data, data[key], key, data);\n      });\n    }\n  }\n\n  return data;\n}\n/**\n * Extend the given object.\n * @param {*} obj - The object to be extended.\n * @param {*} args - The rest objects which will be merged to the first object.\n * @returns {Object} The extended object.\n */\n\nvar assign = Object.assign || function assign(obj) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n\n  if (isObject(obj) && args.length > 0) {\n    args.forEach(function (arg) {\n      if (isObject(arg)) {\n        Object.keys(arg).forEach(function (key) {\n          obj[key] = arg[key];\n        });\n      }\n    });\n  }\n\n  return obj;\n};\nvar REGEXP_SUFFIX = /^(?:width|height|left|top|marginLeft|marginTop)$/;\n/**\n * Apply styles to the given element.\n * @param {Element} element - The target element.\n * @param {Object} styles - The styles for applying.\n */\n\nfunction setStyle(element, styles) {\n  var style = element.style;\n  forEach(styles, function (value, property) {\n    if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n      value += 'px';\n    }\n\n    style[property] = value;\n  });\n}\n/**\n * Escape a string for using in HTML.\n * @param {String} value - The string to escape.\n * @returns {String} Returns the escaped string.\n */\n\nfunction escapeHTMLEntities(value) {\n  return isString(value) ? value.replace(/&(?!amp;|quot;|#39;|lt;|gt;)/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;') : value;\n}\n/**\n * Check if the given element has a special class.\n * @param {Element} element - The element to check.\n * @param {string} value - The class to search.\n * @returns {boolean} Returns `true` if the special class was found.\n */\n\nfunction hasClass(element, value) {\n  if (!element || !value) {\n    return false;\n  }\n\n  return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n}\n/**\n * Add classes to the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be added.\n */\n\nfunction addClass(element, value) {\n  if (!element || !value) {\n    return;\n  }\n\n  if (isNumber(element.length)) {\n    forEach(element, function (elem) {\n      addClass(elem, value);\n    });\n    return;\n  }\n\n  if (element.classList) {\n    element.classList.add(value);\n    return;\n  }\n\n  var className = element.className.trim();\n\n  if (!className) {\n    element.className = value;\n  } else if (className.indexOf(value) < 0) {\n    element.className = \"\".concat(className, \" \").concat(value);\n  }\n}\n/**\n * Remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be removed.\n */\n\nfunction removeClass(element, value) {\n  if (!element || !value) {\n    return;\n  }\n\n  if (isNumber(element.length)) {\n    forEach(element, function (elem) {\n      removeClass(elem, value);\n    });\n    return;\n  }\n\n  if (element.classList) {\n    element.classList.remove(value);\n    return;\n  }\n\n  if (element.className.indexOf(value) >= 0) {\n    element.className = element.className.replace(value, '');\n  }\n}\n/**\n * Add or remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be toggled.\n * @param {boolean} added - Add only.\n */\n\nfunction toggleClass(element, value, added) {\n  if (!value) {\n    return;\n  }\n\n  if (isNumber(element.length)) {\n    forEach(element, function (elem) {\n      toggleClass(elem, value, added);\n    });\n    return;\n  } // IE10-11 doesn't support the second parameter of `classList.toggle`\n\n\n  if (added) {\n    addClass(element, value);\n  } else {\n    removeClass(element, value);\n  }\n}\nvar REGEXP_HYPHENATE = /([a-z\\d])([A-Z])/g;\n/**\n * Transform the given string from camelCase to kebab-case\n * @param {string} value - The value to transform.\n * @returns {string} The transformed value.\n */\n\nfunction hyphenate(value) {\n  return value.replace(REGEXP_HYPHENATE, '$1-$2').toLowerCase();\n}\n/**\n * Get data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to get.\n * @returns {string} The data value.\n */\n\nfunction getData(element, name) {\n  if (isObject(element[name])) {\n    return element[name];\n  }\n\n  if (element.dataset) {\n    return element.dataset[name];\n  }\n\n  return element.getAttribute(\"data-\".concat(hyphenate(name)));\n}\n/**\n * Set data to the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to set.\n * @param {string} data - The data value.\n */\n\nfunction setData(element, name, data) {\n  if (isObject(data)) {\n    element[name] = data;\n  } else if (element.dataset) {\n    element.dataset[name] = data;\n  } else {\n    element.setAttribute(\"data-\".concat(hyphenate(name)), data);\n  }\n}\n\nvar onceSupported = function () {\n  var supported = false;\n\n  if (IS_BROWSER) {\n    var once = false;\n\n    var listener = function listener() {};\n\n    var options = Object.defineProperty({}, 'once', {\n      get: function get() {\n        supported = true;\n        return once;\n      },\n\n      /**\n       * This setter can fix a `TypeError` in strict mode\n       * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\n       * @param {boolean} value - The value to set\n       */\n      set: function set(value) {\n        once = value;\n      }\n    });\n    WINDOW.addEventListener('test', listener, options);\n    WINDOW.removeEventListener('test', listener, options);\n  }\n\n  return supported;\n}();\n/**\n * Remove event listener from the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n\n\nfunction removeListener(element, type, listener) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var handler = listener;\n  type.trim().split(REGEXP_SPACES).forEach(function (event) {\n    if (!onceSupported) {\n      var listeners = element.listeners;\n\n      if (listeners && listeners[event] && listeners[event][listener]) {\n        handler = listeners[event][listener];\n        delete listeners[event][listener];\n\n        if (Object.keys(listeners[event]).length === 0) {\n          delete listeners[event];\n        }\n\n        if (Object.keys(listeners).length === 0) {\n          delete element.listeners;\n        }\n      }\n    }\n\n    element.removeEventListener(event, handler, options);\n  });\n}\n/**\n * Add event listener to the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n\nfunction addListener(element, type, listener) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var _handler = listener;\n  type.trim().split(REGEXP_SPACES).forEach(function (event) {\n    if (options.once && !onceSupported) {\n      var _element$listeners = element.listeners,\n          listeners = _element$listeners === void 0 ? {} : _element$listeners;\n\n      _handler = function handler() {\n        delete listeners[event][listener];\n        element.removeEventListener(event, _handler, options);\n\n        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n          args[_key2] = arguments[_key2];\n        }\n\n        listener.apply(element, args);\n      };\n\n      if (!listeners[event]) {\n        listeners[event] = {};\n      }\n\n      if (listeners[event][listener]) {\n        element.removeEventListener(event, listeners[event][listener], options);\n      }\n\n      listeners[event][listener] = _handler;\n      element.listeners = listeners;\n    }\n\n    element.addEventListener(event, _handler, options);\n  });\n}\n/**\n * Dispatch event on the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Object} data - The additional event data.\n * @param {Object} options - The additional event options.\n * @returns {boolean} Indicate if the event is default prevented or not.\n */\n\nfunction dispatchEvent(element, type, data, options) {\n  var event; // Event and CustomEvent on IE9-11 are global objects, not constructors\n\n  if (isFunction(Event) && isFunction(CustomEvent)) {\n    event = new CustomEvent(type, _objectSpread2({\n      bubbles: true,\n      cancelable: true,\n      detail: data\n    }, options));\n  } else {\n    event = document.createEvent('CustomEvent');\n    event.initCustomEvent(type, true, true, data);\n  }\n\n  return element.dispatchEvent(event);\n}\n/**\n * Get the offset base on the document.\n * @param {Element} element - The target element.\n * @returns {Object} The offset data.\n */\n\nfunction getOffset(element) {\n  var box = element.getBoundingClientRect();\n  return {\n    left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n    top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n  };\n}\n/**\n * Get transforms base on the given object.\n * @param {Object} obj - The target object.\n * @returns {string} A string contains transform values.\n */\n\nfunction getTransforms(_ref) {\n  var rotate = _ref.rotate,\n      scaleX = _ref.scaleX,\n      scaleY = _ref.scaleY,\n      translateX = _ref.translateX,\n      translateY = _ref.translateY;\n  var values = [];\n\n  if (isNumber(translateX) && translateX !== 0) {\n    values.push(\"translateX(\".concat(translateX, \"px)\"));\n  }\n\n  if (isNumber(translateY) && translateY !== 0) {\n    values.push(\"translateY(\".concat(translateY, \"px)\"));\n  } // Rotate should come first before scale to match orientation transform\n\n\n  if (isNumber(rotate) && rotate !== 0) {\n    values.push(\"rotate(\".concat(rotate, \"deg)\"));\n  }\n\n  if (isNumber(scaleX) && scaleX !== 1) {\n    values.push(\"scaleX(\".concat(scaleX, \")\"));\n  }\n\n  if (isNumber(scaleY) && scaleY !== 1) {\n    values.push(\"scaleY(\".concat(scaleY, \")\"));\n  }\n\n  var transform = values.length ? values.join(' ') : 'none';\n  return {\n    WebkitTransform: transform,\n    msTransform: transform,\n    transform: transform\n  };\n}\n/**\n * Get an image name from an image url.\n * @param {string} url - The target url.\n * @example\n * // picture.jpg\n * getImageNameFromURL('https://domain.com/path/to/picture.jpg?size=1280×960')\n * @returns {string} A string contains the image name.\n */\n\nfunction getImageNameFromURL(url) {\n  return isString(url) ? decodeURIComponent(url.replace(/^.*\\//, '').replace(/[?&#].*$/, '')) : '';\n}\nvar IS_SAFARI = WINDOW.navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(WINDOW.navigator.userAgent);\n/**\n * Get an image's natural sizes.\n * @param {string} image - The target image.\n * @param {Object} options - The viewer options.\n * @param {Function} callback - The callback function.\n * @returns {HTMLImageElement} The new image.\n */\n\nfunction getImageNaturalSizes(image, options, callback) {\n  var newImage = document.createElement('img'); // Modern browsers (except Safari)\n\n  if (image.naturalWidth && !IS_SAFARI) {\n    callback(image.naturalWidth, image.naturalHeight);\n    return newImage;\n  }\n\n  var body = document.body || document.documentElement;\n\n  newImage.onload = function () {\n    callback(newImage.width, newImage.height);\n\n    if (!IS_SAFARI) {\n      body.removeChild(newImage);\n    }\n  };\n\n  forEach(options.inheritedAttributes, function (name) {\n    var value = image.getAttribute(name);\n\n    if (value !== null) {\n      newImage.setAttribute(name, value);\n    }\n  });\n  newImage.src = image.src; // iOS Safari will convert the image automatically\n  // with its orientation once append it into DOM\n\n  if (!IS_SAFARI) {\n    newImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\n    body.appendChild(newImage);\n  }\n\n  return newImage;\n}\n/**\n * Get the related class name of a responsive type number.\n * @param {string} type - The responsive type.\n * @returns {string} The related class name.\n */\n\nfunction getResponsiveClass(type) {\n  switch (type) {\n    case 2:\n      return CLASS_HIDE_XS_DOWN;\n\n    case 3:\n      return CLASS_HIDE_SM_DOWN;\n\n    case 4:\n      return CLASS_HIDE_MD_DOWN;\n\n    default:\n      return '';\n  }\n}\n/**\n * Get the max ratio of a group of pointers.\n * @param {string} pointers - The target pointers.\n * @returns {number} The result ratio.\n */\n\nfunction getMaxZoomRatio(pointers) {\n  var pointers2 = _objectSpread2({}, pointers);\n\n  var ratios = [];\n  forEach(pointers, function (pointer, pointerId) {\n    delete pointers2[pointerId];\n    forEach(pointers2, function (pointer2) {\n      var x1 = Math.abs(pointer.startX - pointer2.startX);\n      var y1 = Math.abs(pointer.startY - pointer2.startY);\n      var x2 = Math.abs(pointer.endX - pointer2.endX);\n      var y2 = Math.abs(pointer.endY - pointer2.endY);\n      var z1 = Math.sqrt(x1 * x1 + y1 * y1);\n      var z2 = Math.sqrt(x2 * x2 + y2 * y2);\n      var ratio = (z2 - z1) / z1;\n      ratios.push(ratio);\n    });\n  });\n  ratios.sort(function (a, b) {\n    return Math.abs(a) < Math.abs(b);\n  });\n  return ratios[0];\n}\n/**\n * Get a pointer from an event object.\n * @param {Object} event - The target event object.\n * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\n * @returns {Object} The result pointer contains start and/or end point coordinates.\n */\n\nfunction getPointer(_ref2, endOnly) {\n  var pageX = _ref2.pageX,\n      pageY = _ref2.pageY;\n  var end = {\n    endX: pageX,\n    endY: pageY\n  };\n  return endOnly ? end : _objectSpread2({\n    timeStamp: Date.now(),\n    startX: pageX,\n    startY: pageY\n  }, end);\n}\n/**\n * Get the center point coordinate of a group of pointers.\n * @param {Object} pointers - The target pointers.\n * @returns {Object} The center point coordinate.\n */\n\nfunction getPointersCenter(pointers) {\n  var pageX = 0;\n  var pageY = 0;\n  var count = 0;\n  forEach(pointers, function (_ref3) {\n    var startX = _ref3.startX,\n        startY = _ref3.startY;\n    pageX += startX;\n    pageY += startY;\n    count += 1;\n  });\n  pageX /= count;\n  pageY /= count;\n  return {\n    pageX: pageX,\n    pageY: pageY\n  };\n}\n\nvar render = {\n  render: function render() {\n    this.initContainer();\n    this.initViewer();\n    this.initList();\n    this.renderViewer();\n  },\n  initBody: function initBody() {\n    var ownerDocument = this.element.ownerDocument;\n    var body = ownerDocument.body || ownerDocument.documentElement;\n    this.body = body;\n    this.scrollbarWidth = window.innerWidth - ownerDocument.documentElement.clientWidth;\n    this.initialBodyPaddingRight = body.style.paddingRight;\n    this.initialBodyComputedPaddingRight = window.getComputedStyle(body).paddingRight;\n  },\n  initContainer: function initContainer() {\n    this.containerData = {\n      width: window.innerWidth,\n      height: window.innerHeight\n    };\n  },\n  initViewer: function initViewer() {\n    var options = this.options,\n        parent = this.parent;\n    var viewerData;\n\n    if (options.inline) {\n      viewerData = {\n        width: Math.max(parent.offsetWidth, options.minWidth),\n        height: Math.max(parent.offsetHeight, options.minHeight)\n      };\n      this.parentData = viewerData;\n    }\n\n    if (this.fulled || !viewerData) {\n      viewerData = this.containerData;\n    }\n\n    this.viewerData = assign({}, viewerData);\n  },\n  renderViewer: function renderViewer() {\n    if (this.options.inline && !this.fulled) {\n      setStyle(this.viewer, this.viewerData);\n    }\n  },\n  initList: function initList() {\n    var _this = this;\n\n    var element = this.element,\n        options = this.options,\n        list = this.list;\n    var items = []; // initList may be called in this.update, so should keep idempotent\n\n    list.innerHTML = '';\n    forEach(this.images, function (image, index) {\n      var src = image.src;\n      var alt = image.alt || getImageNameFromURL(src);\n\n      var url = _this.getImageURL(image);\n\n      if (src || url) {\n        var item = document.createElement('li');\n        var img = document.createElement('img');\n        forEach(options.inheritedAttributes, function (name) {\n          var value = image.getAttribute(name);\n\n          if (value !== null) {\n            img.setAttribute(name, value);\n          }\n        });\n        img.src = src || url;\n        img.alt = alt;\n        img.setAttribute('data-index', index);\n        img.setAttribute('data-original-url', url || src);\n        img.setAttribute('data-viewer-action', 'view');\n        img.setAttribute('role', 'button');\n        item.appendChild(img);\n        list.appendChild(item);\n        items.push(item);\n      }\n    });\n    this.items = items;\n    forEach(items, function (item) {\n      var image = item.firstElementChild;\n      setData(image, 'filled', true);\n\n      if (options.loading) {\n        addClass(item, CLASS_LOADING);\n      }\n\n      addListener(image, EVENT_LOAD, function (event) {\n        if (options.loading) {\n          removeClass(item, CLASS_LOADING);\n        }\n\n        _this.loadImage(event);\n      }, {\n        once: true\n      });\n    });\n\n    if (options.transition) {\n      addListener(element, EVENT_VIEWED, function () {\n        addClass(list, CLASS_TRANSITION);\n      }, {\n        once: true\n      });\n    }\n  },\n  renderList: function renderList(index) {\n    var i = index || this.index;\n    var width = this.items[i].offsetWidth || 30;\n    var outerWidth = width + 1; // 1 pixel of `margin-left` width\n    // Place the active item in the center of the screen\n\n    setStyle(this.list, assign({\n      width: outerWidth * this.length\n    }, getTransforms({\n      translateX: (this.viewerData.width - width) / 2 - outerWidth * i\n    })));\n  },\n  resetList: function resetList() {\n    var list = this.list;\n    list.innerHTML = '';\n    removeClass(list, CLASS_TRANSITION);\n    setStyle(list, getTransforms({\n      translateX: 0\n    }));\n  },\n  initImage: function initImage(done) {\n    var _this2 = this;\n\n    var options = this.options,\n        image = this.image,\n        viewerData = this.viewerData;\n    var footerHeight = this.footer.offsetHeight;\n    var viewerWidth = viewerData.width;\n    var viewerHeight = Math.max(viewerData.height - footerHeight, footerHeight);\n    var oldImageData = this.imageData || {};\n    var sizingImage;\n    this.imageInitializing = {\n      abort: function abort() {\n        sizingImage.onload = null;\n      }\n    };\n    sizingImage = getImageNaturalSizes(image, options, function (naturalWidth, naturalHeight) {\n      var aspectRatio = naturalWidth / naturalHeight;\n      var width = viewerWidth;\n      var height = viewerHeight;\n      _this2.imageInitializing = false;\n\n      if (viewerHeight * aspectRatio > viewerWidth) {\n        height = viewerWidth / aspectRatio;\n      } else {\n        width = viewerHeight * aspectRatio;\n      }\n\n      width = Math.min(width * 0.9, naturalWidth);\n      height = Math.min(height * 0.9, naturalHeight);\n      var imageData = {\n        naturalWidth: naturalWidth,\n        naturalHeight: naturalHeight,\n        aspectRatio: aspectRatio,\n        ratio: width / naturalWidth,\n        width: width,\n        height: height,\n        left: (viewerWidth - width) / 2,\n        top: (viewerHeight - height) / 2\n      };\n      var initialImageData = assign({}, imageData);\n\n      if (options.rotatable) {\n        imageData.rotate = oldImageData.rotate || 0;\n        initialImageData.rotate = 0;\n      }\n\n      if (options.scalable) {\n        imageData.scaleX = oldImageData.scaleX || 1;\n        imageData.scaleY = oldImageData.scaleY || 1;\n        initialImageData.scaleX = 1;\n        initialImageData.scaleY = 1;\n      }\n\n      _this2.imageData = imageData;\n      _this2.initialImageData = initialImageData;\n\n      if (done) {\n        done();\n      }\n    });\n  },\n  renderImage: function renderImage(done) {\n    var _this3 = this;\n\n    var image = this.image,\n        imageData = this.imageData;\n    setStyle(image, assign({\n      width: imageData.width,\n      height: imageData.height,\n      // XXX: Not to use translateX/Y to avoid image shaking when zooming\n      marginLeft: imageData.left,\n      marginTop: imageData.top\n    }, getTransforms(imageData)));\n\n    if (done) {\n      if ((this.viewing || this.zooming) && this.options.transition) {\n        var onTransitionEnd = function onTransitionEnd() {\n          _this3.imageRendering = false;\n          done();\n        };\n\n        this.imageRendering = {\n          abort: function abort() {\n            removeListener(image, EVENT_TRANSITION_END, onTransitionEnd);\n          }\n        };\n        addListener(image, EVENT_TRANSITION_END, onTransitionEnd, {\n          once: true\n        });\n      } else {\n        done();\n      }\n    }\n  },\n  resetImage: function resetImage() {\n    // this.image only defined after viewed\n    if (this.viewing || this.viewed) {\n      var image = this.image;\n\n      if (this.viewing) {\n        this.viewing.abort();\n      }\n\n      image.parentNode.removeChild(image);\n      this.image = null;\n    }\n  }\n};\n\nvar events = {\n  bind: function bind() {\n    var options = this.options,\n        viewer = this.viewer,\n        canvas = this.canvas;\n    var document = this.element.ownerDocument;\n    addListener(viewer, EVENT_CLICK, this.onClick = this.click.bind(this));\n    addListener(viewer, EVENT_DRAG_START, this.onDragStart = this.dragstart.bind(this));\n    addListener(canvas, EVENT_POINTER_DOWN, this.onPointerDown = this.pointerdown.bind(this));\n    addListener(document, EVENT_POINTER_MOVE, this.onPointerMove = this.pointermove.bind(this));\n    addListener(document, EVENT_POINTER_UP, this.onPointerUp = this.pointerup.bind(this));\n    addListener(document, EVENT_KEY_DOWN, this.onKeyDown = this.keydown.bind(this));\n    addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\n\n    if (options.zoomable && options.zoomOnWheel) {\n      addListener(viewer, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\n        passive: false,\n        capture: true\n      });\n    }\n\n    if (options.toggleOnDblclick) {\n      addListener(canvas, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\n    }\n  },\n  unbind: function unbind() {\n    var options = this.options,\n        viewer = this.viewer,\n        canvas = this.canvas;\n    var document = this.element.ownerDocument;\n    removeListener(viewer, EVENT_CLICK, this.onClick);\n    removeListener(viewer, EVENT_DRAG_START, this.onDragStart);\n    removeListener(canvas, EVENT_POINTER_DOWN, this.onPointerDown);\n    removeListener(document, EVENT_POINTER_MOVE, this.onPointerMove);\n    removeListener(document, EVENT_POINTER_UP, this.onPointerUp);\n    removeListener(document, EVENT_KEY_DOWN, this.onKeyDown);\n    removeListener(window, EVENT_RESIZE, this.onResize);\n\n    if (options.zoomable && options.zoomOnWheel) {\n      removeListener(viewer, EVENT_WHEEL, this.onWheel, {\n        passive: false,\n        capture: true\n      });\n    }\n\n    if (options.toggleOnDblclick) {\n      removeListener(canvas, EVENT_DBLCLICK, this.onDblclick);\n    }\n  }\n};\n\nvar handlers = {\n  click: function click(event) {\n    var target = event.target;\n    var options = this.options,\n        imageData = this.imageData;\n    var action = getData(target, DATA_ACTION); // Cancel the emulated click when the native click event was triggered.\n\n    if (IS_TOUCH_DEVICE && event.isTrusted && target === this.canvas) {\n      clearTimeout(this.clickCanvasTimeout);\n    }\n\n    switch (action) {\n      case 'mix':\n        if (this.played) {\n          this.stop();\n        } else if (options.inline) {\n          if (this.fulled) {\n            this.exit();\n          } else {\n            this.full();\n          }\n        } else {\n          this.hide();\n        }\n\n        break;\n\n      case 'hide':\n        this.hide();\n        break;\n\n      case 'view':\n        this.view(getData(target, 'index'));\n        break;\n\n      case 'zoom-in':\n        this.zoom(0.1, true);\n        break;\n\n      case 'zoom-out':\n        this.zoom(-0.1, true);\n        break;\n\n      case 'one-to-one':\n        this.toggle();\n        break;\n\n      case 'reset':\n        this.reset();\n        break;\n\n      case 'prev':\n        this.prev(options.loop);\n        break;\n\n      case 'play':\n        this.play(options.fullscreen);\n        break;\n\n      case 'next':\n        this.next(options.loop);\n        break;\n\n      case 'rotate-left':\n        this.rotate(-90);\n        break;\n\n      case 'rotate-right':\n        this.rotate(90);\n        break;\n\n      case 'flip-horizontal':\n        this.scaleX(-imageData.scaleX || -1);\n        break;\n\n      case 'flip-vertical':\n        this.scaleY(-imageData.scaleY || -1);\n        break;\n\n      default:\n        if (this.played) {\n          this.stop();\n        }\n\n    }\n  },\n  dblclick: function dblclick(event) {\n    event.preventDefault();\n\n    if (this.viewed && event.target === this.image) {\n      // Cancel the emulated double click when the native dblclick event was triggered.\n      if (IS_TOUCH_DEVICE && event.isTrusted) {\n        clearTimeout(this.doubleClickImageTimeout);\n      }\n\n      this.toggle();\n    }\n  },\n  load: function load() {\n    var _this = this;\n\n    if (this.timeout) {\n      clearTimeout(this.timeout);\n      this.timeout = false;\n    }\n\n    var element = this.element,\n        options = this.options,\n        image = this.image,\n        index = this.index,\n        viewerData = this.viewerData;\n    removeClass(image, CLASS_INVISIBLE);\n\n    if (options.loading) {\n      removeClass(this.canvas, CLASS_LOADING);\n    }\n\n    image.style.cssText = 'height:0;' + \"margin-left:\".concat(viewerData.width / 2, \"px;\") + \"margin-top:\".concat(viewerData.height / 2, \"px;\") + 'max-width:none!important;' + 'position:absolute;' + 'width:0;';\n    this.initImage(function () {\n      toggleClass(image, CLASS_MOVE, options.movable);\n      toggleClass(image, CLASS_TRANSITION, options.transition);\n\n      _this.renderImage(function () {\n        _this.viewed = true;\n        _this.viewing = false;\n\n        if (isFunction(options.viewed)) {\n          addListener(element, EVENT_VIEWED, options.viewed, {\n            once: true\n          });\n        }\n\n        dispatchEvent(element, EVENT_VIEWED, {\n          originalImage: _this.images[index],\n          index: index,\n          image: image\n        }, {\n          cancelable: false\n        });\n      });\n    });\n  },\n  loadImage: function loadImage(event) {\n    var image = event.target;\n    var parent = image.parentNode;\n    var parentWidth = parent.offsetWidth || 30;\n    var parentHeight = parent.offsetHeight || 50;\n    var filled = !!getData(image, 'filled');\n    getImageNaturalSizes(image, this.options, function (naturalWidth, naturalHeight) {\n      var aspectRatio = naturalWidth / naturalHeight;\n      var width = parentWidth;\n      var height = parentHeight;\n\n      if (parentHeight * aspectRatio > parentWidth) {\n        if (filled) {\n          width = parentHeight * aspectRatio;\n        } else {\n          height = parentWidth / aspectRatio;\n        }\n      } else if (filled) {\n        height = parentWidth / aspectRatio;\n      } else {\n        width = parentHeight * aspectRatio;\n      }\n\n      setStyle(image, assign({\n        width: width,\n        height: height\n      }, getTransforms({\n        translateX: (parentWidth - width) / 2,\n        translateY: (parentHeight - height) / 2\n      })));\n    });\n  },\n  keydown: function keydown(event) {\n    var options = this.options;\n\n    if (!this.fulled || !options.keyboard) {\n      return;\n    }\n\n    switch (event.keyCode || event.which || event.charCode) {\n      // Escape\n      case 27:\n        if (this.played) {\n          this.stop();\n        } else if (options.inline) {\n          if (this.fulled) {\n            this.exit();\n          }\n        } else {\n          this.hide();\n        }\n\n        break;\n      // Space\n\n      case 32:\n        if (this.played) {\n          this.stop();\n        }\n\n        break;\n      // ArrowLeft\n\n      case 37:\n        this.prev(options.loop);\n        break;\n      // ArrowUp\n\n      case 38:\n        // Prevent scroll on Firefox\n        event.preventDefault(); // Zoom in\n\n        this.zoom(options.zoomRatio, true);\n        break;\n      // ArrowRight\n\n      case 39:\n        this.next(options.loop);\n        break;\n      // ArrowDown\n\n      case 40:\n        // Prevent scroll on Firefox\n        event.preventDefault(); // Zoom out\n\n        this.zoom(-options.zoomRatio, true);\n        break;\n      // Ctrl + 0\n\n      case 48: // Fall through\n      // Ctrl + 1\n      // eslint-disable-next-line no-fallthrough\n\n      case 49:\n        if (event.ctrlKey) {\n          event.preventDefault();\n          this.toggle();\n        }\n\n        break;\n    }\n  },\n  dragstart: function dragstart(event) {\n    if (event.target.tagName.toLowerCase() === 'img') {\n      event.preventDefault();\n    }\n  },\n  pointerdown: function pointerdown(event) {\n    var options = this.options,\n        pointers = this.pointers;\n    var buttons = event.buttons,\n        button = event.button;\n\n    if (!this.viewed || this.showing || this.viewing || this.hiding // Handle mouse event and pointer event and ignore touch event\n    || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && ( // No primary button (Usually the left button)\n    isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0 // Open context menu\n    || event.ctrlKey)) {\n      return;\n    } // Prevent default behaviours as page zooming in touch devices.\n\n\n    event.preventDefault();\n\n    if (event.changedTouches) {\n      forEach(event.changedTouches, function (touch) {\n        pointers[touch.identifier] = getPointer(touch);\n      });\n    } else {\n      pointers[event.pointerId || 0] = getPointer(event);\n    }\n\n    var action = options.movable ? ACTION_MOVE : false;\n\n    if (options.zoomOnTouch && options.zoomable && Object.keys(pointers).length > 1) {\n      action = ACTION_ZOOM;\n    } else if (options.slideOnTouch && (event.pointerType === 'touch' || event.type === 'touchstart') && this.isSwitchable()) {\n      action = ACTION_SWITCH;\n    }\n\n    if (options.transition && (action === ACTION_MOVE || action === ACTION_ZOOM)) {\n      removeClass(this.image, CLASS_TRANSITION);\n    }\n\n    this.action = action;\n  },\n  pointermove: function pointermove(event) {\n    var pointers = this.pointers,\n        action = this.action;\n\n    if (!this.viewed || !action) {\n      return;\n    }\n\n    event.preventDefault();\n\n    if (event.changedTouches) {\n      forEach(event.changedTouches, function (touch) {\n        assign(pointers[touch.identifier] || {}, getPointer(touch, true));\n      });\n    } else {\n      assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\n    }\n\n    this.change(event);\n  },\n  pointerup: function pointerup(event) {\n    var _this2 = this;\n\n    var options = this.options,\n        action = this.action,\n        pointers = this.pointers;\n    var pointer;\n\n    if (event.changedTouches) {\n      forEach(event.changedTouches, function (touch) {\n        pointer = pointers[touch.identifier];\n        delete pointers[touch.identifier];\n      });\n    } else {\n      pointer = pointers[event.pointerId || 0];\n      delete pointers[event.pointerId || 0];\n    }\n\n    if (!action) {\n      return;\n    }\n\n    event.preventDefault();\n\n    if (options.transition && (action === ACTION_MOVE || action === ACTION_ZOOM)) {\n      addClass(this.image, CLASS_TRANSITION);\n    }\n\n    this.action = false; // Emulate click and double click in touch devices to support backdrop and image zooming (#210).\n\n    if (IS_TOUCH_DEVICE && action !== ACTION_ZOOM && pointer && Date.now() - pointer.timeStamp < 500) {\n      clearTimeout(this.clickCanvasTimeout);\n      clearTimeout(this.doubleClickImageTimeout);\n\n      if (options.toggleOnDblclick && this.viewed && event.target === this.image) {\n        if (this.imageClicked) {\n          this.imageClicked = false; // This timeout will be cleared later when a native dblclick event is triggering\n\n          this.doubleClickImageTimeout = setTimeout(function () {\n            dispatchEvent(_this2.image, EVENT_DBLCLICK);\n          }, 50);\n        } else {\n          this.imageClicked = true; // The default timing of a double click in Windows is 500 ms\n\n          this.doubleClickImageTimeout = setTimeout(function () {\n            _this2.imageClicked = false;\n          }, 500);\n        }\n      } else {\n        this.imageClicked = false;\n\n        if (options.backdrop && options.backdrop !== 'static' && event.target === this.canvas) {\n          // This timeout will be cleared later when a native click event is triggering\n          this.clickCanvasTimeout = setTimeout(function () {\n            dispatchEvent(_this2.canvas, EVENT_CLICK);\n          }, 50);\n        }\n      }\n    }\n  },\n  resize: function resize() {\n    var _this3 = this;\n\n    if (!this.isShown || this.hiding) {\n      return;\n    }\n\n    if (this.fulled) {\n      this.close();\n      this.initBody();\n      this.open();\n    }\n\n    this.initContainer();\n    this.initViewer();\n    this.renderViewer();\n    this.renderList();\n\n    if (this.viewed) {\n      this.initImage(function () {\n        _this3.renderImage();\n      });\n    }\n\n    if (this.played) {\n      if (this.options.fullscreen && this.fulled && !(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement)) {\n        this.stop();\n        return;\n      }\n\n      forEach(this.player.getElementsByTagName('img'), function (image) {\n        addListener(image, EVENT_LOAD, _this3.loadImage.bind(_this3), {\n          once: true\n        });\n        dispatchEvent(image, EVENT_LOAD);\n      });\n    }\n  },\n  wheel: function wheel(event) {\n    var _this4 = this;\n\n    if (!this.viewed) {\n      return;\n    }\n\n    event.preventDefault(); // Limit wheel speed to prevent zoom too fast\n\n    if (this.wheeling) {\n      return;\n    }\n\n    this.wheeling = true;\n    setTimeout(function () {\n      _this4.wheeling = false;\n    }, 50);\n    var ratio = Number(this.options.zoomRatio) || 0.1;\n    var delta = 1;\n\n    if (event.deltaY) {\n      delta = event.deltaY > 0 ? 1 : -1;\n    } else if (event.wheelDelta) {\n      delta = -event.wheelDelta / 120;\n    } else if (event.detail) {\n      delta = event.detail > 0 ? 1 : -1;\n    }\n\n    this.zoom(-delta * ratio, true, event);\n  }\n};\n\nvar methods = {\n  /** Show the viewer (only available in modal mode)\n   * @param {boolean} [immediate=false] - Indicates if show the viewer immediately or not.\n   * @returns {Viewer} this\n   */\n  show: function show() {\n    var immediate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var element = this.element,\n        options = this.options;\n\n    if (options.inline || this.showing || this.isShown || this.showing) {\n      return this;\n    }\n\n    if (!this.ready) {\n      this.build();\n\n      if (this.ready) {\n        this.show(immediate);\n      }\n\n      return this;\n    }\n\n    if (isFunction(options.show)) {\n      addListener(element, EVENT_SHOW, options.show, {\n        once: true\n      });\n    }\n\n    if (dispatchEvent(element, EVENT_SHOW) === false || !this.ready) {\n      return this;\n    }\n\n    if (this.hiding) {\n      this.transitioning.abort();\n    }\n\n    this.showing = true;\n    this.open();\n    var viewer = this.viewer;\n    removeClass(viewer, CLASS_HIDE);\n\n    if (options.transition && !immediate) {\n      var shown = this.shown.bind(this);\n      this.transitioning = {\n        abort: function abort() {\n          removeListener(viewer, EVENT_TRANSITION_END, shown);\n          removeClass(viewer, CLASS_IN);\n        }\n      };\n      addClass(viewer, CLASS_TRANSITION); // Force reflow to enable CSS3 transition\n\n      viewer.initialOffsetWidth = viewer.offsetWidth;\n      addListener(viewer, EVENT_TRANSITION_END, shown, {\n        once: true\n      });\n      addClass(viewer, CLASS_IN);\n    } else {\n      addClass(viewer, CLASS_IN);\n      this.shown();\n    }\n\n    return this;\n  },\n\n  /**\n   * Hide the viewer (only available in modal mode)\n   * @param {boolean} [immediate=false] - Indicates if hide the viewer immediately or not.\n   * @returns {Viewer} this\n   */\n  hide: function hide() {\n    var _this = this;\n\n    var immediate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var element = this.element,\n        options = this.options;\n\n    if (options.inline || this.hiding || !(this.isShown || this.showing)) {\n      return this;\n    }\n\n    if (isFunction(options.hide)) {\n      addListener(element, EVENT_HIDE, options.hide, {\n        once: true\n      });\n    }\n\n    if (dispatchEvent(element, EVENT_HIDE) === false) {\n      return this;\n    }\n\n    if (this.showing) {\n      this.transitioning.abort();\n    }\n\n    this.hiding = true;\n\n    if (this.played) {\n      this.stop();\n    } else if (this.viewing) {\n      this.viewing.abort();\n    }\n\n    var viewer = this.viewer,\n        image = this.image;\n\n    var hideImmediately = function hideImmediately() {\n      removeClass(viewer, CLASS_IN);\n\n      _this.hidden();\n    };\n\n    if (options.transition && !immediate) {\n      var onViewerTransitionEnd = function onViewerTransitionEnd(event) {\n        // Ignore all propagating `transitionend` events (#275).\n        if (event && event.target === viewer) {\n          removeListener(viewer, EVENT_TRANSITION_END, onViewerTransitionEnd);\n\n          _this.hidden();\n        }\n      };\n\n      var onImageTransitionEnd = function onImageTransitionEnd() {\n        // In case of show the viewer by `viewer.show(true)` previously (#407).\n        if (hasClass(viewer, CLASS_TRANSITION)) {\n          addListener(viewer, EVENT_TRANSITION_END, onViewerTransitionEnd);\n          removeClass(viewer, CLASS_IN);\n        } else {\n          hideImmediately();\n        }\n      };\n\n      this.transitioning = {\n        abort: function abort() {\n          if (_this.viewed && hasClass(image, CLASS_TRANSITION)) {\n            removeListener(image, EVENT_TRANSITION_END, onImageTransitionEnd);\n          } else if (hasClass(viewer, CLASS_TRANSITION)) {\n            removeListener(viewer, EVENT_TRANSITION_END, onViewerTransitionEnd);\n          }\n        }\n      }; // In case of hiding the viewer when holding on the image (#255),\n      // note that the `CLASS_TRANSITION` class will be removed on pointer down.\n\n      if (this.viewed && hasClass(image, CLASS_TRANSITION)) {\n        addListener(image, EVENT_TRANSITION_END, onImageTransitionEnd, {\n          once: true\n        });\n        this.zoomTo(0, false, false, true);\n      } else {\n        onImageTransitionEnd();\n      }\n    } else {\n      hideImmediately();\n    }\n\n    return this;\n  },\n\n  /**\n   * View one of the images with image's index\n   * @param {number} index - The index of the image to view.\n   * @returns {Viewer} this\n   */\n  view: function view() {\n    var _this2 = this;\n\n    var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.options.initialViewIndex;\n    index = Number(index) || 0;\n\n    if (this.hiding || this.played || index < 0 || index >= this.length || this.viewed && index === this.index) {\n      return this;\n    }\n\n    if (!this.isShown) {\n      this.index = index;\n      return this.show();\n    }\n\n    if (this.viewing) {\n      this.viewing.abort();\n    }\n\n    var element = this.element,\n        options = this.options,\n        title = this.title,\n        canvas = this.canvas;\n    var item = this.items[index];\n    var img = item.querySelector('img');\n    var url = getData(img, 'originalUrl');\n    var alt = img.getAttribute('alt');\n    var image = document.createElement('img');\n    forEach(options.inheritedAttributes, function (name) {\n      var value = img.getAttribute(name);\n\n      if (value !== null) {\n        image.setAttribute(name, value);\n      }\n    });\n    image.src = url;\n    image.alt = alt;\n\n    if (isFunction(options.view)) {\n      addListener(element, EVENT_VIEW, options.view, {\n        once: true\n      });\n    }\n\n    if (dispatchEvent(element, EVENT_VIEW, {\n      originalImage: this.images[index],\n      index: index,\n      image: image\n    }) === false || !this.isShown || this.hiding || this.played) {\n      return this;\n    }\n\n    this.image = image;\n    removeClass(this.items[this.index], CLASS_ACTIVE);\n    addClass(item, CLASS_ACTIVE);\n    this.viewed = false;\n    this.index = index;\n    this.imageData = {};\n    addClass(image, CLASS_INVISIBLE);\n\n    if (options.loading) {\n      addClass(canvas, CLASS_LOADING);\n    }\n\n    canvas.innerHTML = '';\n    canvas.appendChild(image); // Center current item\n\n    this.renderList(); // Clear title\n\n    title.innerHTML = ''; // Generate title after viewed\n\n    var onViewed = function onViewed() {\n      var imageData = _this2.imageData;\n      var render = Array.isArray(options.title) ? options.title[1] : options.title;\n      title.innerHTML = escapeHTMLEntities(isFunction(render) ? render.call(_this2, image, imageData) : \"\".concat(alt, \" (\").concat(imageData.naturalWidth, \" \\xD7 \").concat(imageData.naturalHeight, \")\"));\n    };\n\n    var onLoad;\n    addListener(element, EVENT_VIEWED, onViewed, {\n      once: true\n    });\n    this.viewing = {\n      abort: function abort() {\n        removeListener(element, EVENT_VIEWED, onViewed);\n\n        if (image.complete) {\n          if (_this2.imageRendering) {\n            _this2.imageRendering.abort();\n          } else if (_this2.imageInitializing) {\n            _this2.imageInitializing.abort();\n          }\n        } else {\n          // Cancel download to save bandwidth.\n          image.src = '';\n          removeListener(image, EVENT_LOAD, onLoad);\n\n          if (_this2.timeout) {\n            clearTimeout(_this2.timeout);\n          }\n        }\n      }\n    };\n\n    if (image.complete) {\n      this.load();\n    } else {\n      addListener(image, EVENT_LOAD, onLoad = this.load.bind(this), {\n        once: true\n      });\n\n      if (this.timeout) {\n        clearTimeout(this.timeout);\n      } // Make the image visible if it fails to load within 1s\n\n\n      this.timeout = setTimeout(function () {\n        removeClass(image, CLASS_INVISIBLE);\n        _this2.timeout = false;\n      }, 1000);\n    }\n\n    return this;\n  },\n\n  /**\n   * View the previous image\n   * @param {boolean} [loop=false] - Indicate if view the last one\n   * when it is the first one at present.\n   * @returns {Viewer} this\n   */\n  prev: function prev() {\n    var loop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var index = this.index - 1;\n\n    if (index < 0) {\n      index = loop ? this.length - 1 : 0;\n    }\n\n    this.view(index);\n    return this;\n  },\n\n  /**\n   * View the next image\n   * @param {boolean} [loop=false] - Indicate if view the first one\n   * when it is the last one at present.\n   * @returns {Viewer} this\n   */\n  next: function next() {\n    var loop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var maxIndex = this.length - 1;\n    var index = this.index + 1;\n\n    if (index > maxIndex) {\n      index = loop ? 0 : maxIndex;\n    }\n\n    this.view(index);\n    return this;\n  },\n\n  /**\n   * Move the image with relative offsets.\n   * @param {number} offsetX - The relative offset distance on the x-axis.\n   * @param {number} offsetY - The relative offset distance on the y-axis.\n   * @returns {Viewer} this\n   */\n  move: function move(offsetX, offsetY) {\n    var imageData = this.imageData;\n    this.moveTo(isUndefined(offsetX) ? offsetX : imageData.left + Number(offsetX), isUndefined(offsetY) ? offsetY : imageData.top + Number(offsetY));\n    return this;\n  },\n\n  /**\n   * Move the image to an absolute point.\n   * @param {number} x - The x-axis coordinate.\n   * @param {number} [y=x] - The y-axis coordinate.\n   * @returns {Viewer} this\n   */\n  moveTo: function moveTo(x) {\n    var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n    var imageData = this.imageData;\n    x = Number(x);\n    y = Number(y);\n\n    if (this.viewed && !this.played && this.options.movable) {\n      var changed = false;\n\n      if (isNumber(x)) {\n        imageData.left = x;\n        changed = true;\n      }\n\n      if (isNumber(y)) {\n        imageData.top = y;\n        changed = true;\n      }\n\n      if (changed) {\n        this.renderImage();\n      }\n    }\n\n    return this;\n  },\n\n  /**\n   * Zoom the image with a relative ratio.\n   * @param {number} ratio - The target ratio.\n   * @param {boolean} [hasTooltip=false] - Indicates if it has a tooltip or not.\n   * @param {Event} [_originalEvent=null] - The original event if any.\n   * @returns {Viewer} this\n   */\n  zoom: function zoom(ratio) {\n    var hasTooltip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    var _originalEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n    var imageData = this.imageData;\n    ratio = Number(ratio);\n\n    if (ratio < 0) {\n      ratio = 1 / (1 - ratio);\n    } else {\n      ratio = 1 + ratio;\n    }\n\n    this.zoomTo(imageData.width * ratio / imageData.naturalWidth, hasTooltip, _originalEvent);\n    return this;\n  },\n\n  /**\n   * Zoom the image to an absolute ratio.\n   * @param {number} ratio - The target ratio.\n   * @param {boolean} [hasTooltip=false] - Indicates if it has a tooltip or not.\n   * @param {Event} [_originalEvent=null] - The original event if any.\n   * @param {Event} [_zoomable=false] - Indicates if the current zoom is available or not.\n   * @returns {Viewer} this\n   */\n  zoomTo: function zoomTo(ratio) {\n    var _this3 = this;\n\n    var hasTooltip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n    var _originalEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n    var _zoomable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n    var element = this.element,\n        options = this.options,\n        pointers = this.pointers,\n        imageData = this.imageData;\n    var width = imageData.width,\n        height = imageData.height,\n        left = imageData.left,\n        top = imageData.top,\n        naturalWidth = imageData.naturalWidth,\n        naturalHeight = imageData.naturalHeight;\n    ratio = Math.max(0, ratio);\n\n    if (isNumber(ratio) && this.viewed && !this.played && (_zoomable || options.zoomable)) {\n      if (!_zoomable) {\n        var minZoomRatio = Math.max(0.01, options.minZoomRatio);\n        var maxZoomRatio = Math.min(100, options.maxZoomRatio);\n        ratio = Math.min(Math.max(ratio, minZoomRatio), maxZoomRatio);\n      }\n\n      if (_originalEvent && options.zoomRatio >= 0.055 && ratio > 0.95 && ratio < 1.05) {\n        ratio = 1;\n      }\n\n      var newWidth = naturalWidth * ratio;\n      var newHeight = naturalHeight * ratio;\n      var offsetWidth = newWidth - width;\n      var offsetHeight = newHeight - height;\n      var oldRatio = width / naturalWidth;\n\n      if (isFunction(options.zoom)) {\n        addListener(element, EVENT_ZOOM, options.zoom, {\n          once: true\n        });\n      }\n\n      if (dispatchEvent(element, EVENT_ZOOM, {\n        ratio: ratio,\n        oldRatio: oldRatio,\n        originalEvent: _originalEvent\n      }) === false) {\n        return this;\n      }\n\n      this.zooming = true;\n\n      if (_originalEvent) {\n        var offset = getOffset(this.viewer);\n        var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {\n          pageX: _originalEvent.pageX,\n          pageY: _originalEvent.pageY\n        }; // Zoom from the triggering point of the event\n\n        imageData.left -= offsetWidth * ((center.pageX - offset.left - left) / width);\n        imageData.top -= offsetHeight * ((center.pageY - offset.top - top) / height);\n      } else {\n        // Zoom from the center of the image\n        imageData.left -= offsetWidth / 2;\n        imageData.top -= offsetHeight / 2;\n      }\n\n      imageData.width = newWidth;\n      imageData.height = newHeight;\n      imageData.ratio = ratio;\n      this.renderImage(function () {\n        _this3.zooming = false;\n\n        if (isFunction(options.zoomed)) {\n          addListener(element, EVENT_ZOOMED, options.zoomed, {\n            once: true\n          });\n        }\n\n        dispatchEvent(element, EVENT_ZOOMED, {\n          ratio: ratio,\n          oldRatio: oldRatio,\n          originalEvent: _originalEvent\n        }, {\n          cancelable: false\n        });\n      });\n\n      if (hasTooltip) {\n        this.tooltip();\n      }\n    }\n\n    return this;\n  },\n\n  /**\n   * Rotate the image with a relative degree.\n   * @param {number} degree - The rotate degree.\n   * @returns {Viewer} this\n   */\n  rotate: function rotate(degree) {\n    this.rotateTo((this.imageData.rotate || 0) + Number(degree));\n    return this;\n  },\n\n  /**\n   * Rotate the image to an absolute degree.\n   * @param {number} degree - The rotate degree.\n   * @returns {Viewer} this\n   */\n  rotateTo: function rotateTo(degree) {\n    var imageData = this.imageData;\n    degree = Number(degree);\n\n    if (isNumber(degree) && this.viewed && !this.played && this.options.rotatable) {\n      imageData.rotate = degree;\n      this.renderImage();\n    }\n\n    return this;\n  },\n\n  /**\n   * Scale the image on the x-axis.\n   * @param {number} scaleX - The scale ratio on the x-axis.\n   * @returns {Viewer} this\n   */\n  scaleX: function scaleX(_scaleX) {\n    this.scale(_scaleX, this.imageData.scaleY);\n    return this;\n  },\n\n  /**\n   * Scale the image on the y-axis.\n   * @param {number} scaleY - The scale ratio on the y-axis.\n   * @returns {Viewer} this\n   */\n  scaleY: function scaleY(_scaleY) {\n    this.scale(this.imageData.scaleX, _scaleY);\n    return this;\n  },\n\n  /**\n   * Scale the image.\n   * @param {number} scaleX - The scale ratio on the x-axis.\n   * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\n   * @returns {Viewer} this\n   */\n  scale: function scale(scaleX) {\n    var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n    var imageData = this.imageData;\n    scaleX = Number(scaleX);\n    scaleY = Number(scaleY);\n\n    if (this.viewed && !this.played && this.options.scalable) {\n      var changed = false;\n\n      if (isNumber(scaleX)) {\n        imageData.scaleX = scaleX;\n        changed = true;\n      }\n\n      if (isNumber(scaleY)) {\n        imageData.scaleY = scaleY;\n        changed = true;\n      }\n\n      if (changed) {\n        this.renderImage();\n      }\n    }\n\n    return this;\n  },\n\n  /**\n   * Play the images\n   * @param {boolean} [fullscreen=false] - Indicate if request fullscreen or not.\n   * @returns {Viewer} this\n   */\n  play: function play() {\n    var _this4 = this;\n\n    var fullscreen = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n    if (!this.isShown || this.played) {\n      return this;\n    }\n\n    var element = this.element,\n        options = this.options;\n\n    if (isFunction(options.play)) {\n      addListener(element, EVENT_PLAY, options.play, {\n        once: true\n      });\n    }\n\n    if (dispatchEvent(element, EVENT_PLAY) === false) {\n      return this;\n    }\n\n    var player = this.player;\n    var onLoad = this.loadImage.bind(this);\n    var list = [];\n    var total = 0;\n    var index = 0;\n    this.played = true;\n    this.onLoadWhenPlay = onLoad;\n\n    if (fullscreen) {\n      this.requestFullscreen();\n    }\n\n    addClass(player, CLASS_SHOW);\n    forEach(this.items, function (item, i) {\n      var img = item.querySelector('img');\n      var image = document.createElement('img');\n      image.src = getData(img, 'originalUrl');\n      image.alt = img.getAttribute('alt');\n      image.referrerPolicy = img.referrerPolicy;\n      total += 1;\n      addClass(image, CLASS_FADE);\n      toggleClass(image, CLASS_TRANSITION, options.transition);\n\n      if (hasClass(item, CLASS_ACTIVE)) {\n        addClass(image, CLASS_IN);\n        index = i;\n      }\n\n      list.push(image);\n      addListener(image, EVENT_LOAD, onLoad, {\n        once: true\n      });\n      player.appendChild(image);\n    });\n\n    if (isNumber(options.interval) && options.interval > 0) {\n      var play = function play() {\n        _this4.playing = setTimeout(function () {\n          removeClass(list[index], CLASS_IN);\n          index += 1;\n          index = index < total ? index : 0;\n          addClass(list[index], CLASS_IN);\n          play();\n        }, options.interval);\n      };\n\n      if (total > 1) {\n        play();\n      }\n    }\n\n    return this;\n  },\n  // Stop play\n  stop: function stop() {\n    var _this5 = this;\n\n    if (!this.played) {\n      return this;\n    }\n\n    var element = this.element,\n        options = this.options;\n\n    if (isFunction(options.stop)) {\n      addListener(element, EVENT_STOP, options.stop, {\n        once: true\n      });\n    }\n\n    if (dispatchEvent(element, EVENT_STOP) === false) {\n      return this;\n    }\n\n    var player = this.player;\n    this.played = false;\n    clearTimeout(this.playing);\n    forEach(player.getElementsByTagName('img'), function (image) {\n      removeListener(image, EVENT_LOAD, _this5.onLoadWhenPlay);\n    });\n    removeClass(player, CLASS_SHOW);\n    player.innerHTML = '';\n    this.exitFullscreen();\n    return this;\n  },\n  // Enter modal mode (only available in inline mode)\n  full: function full() {\n    var _this6 = this;\n\n    var options = this.options,\n        viewer = this.viewer,\n        image = this.image,\n        list = this.list;\n\n    if (!this.isShown || this.played || this.fulled || !options.inline) {\n      return this;\n    }\n\n    this.fulled = true;\n    this.open();\n    addClass(this.button, CLASS_FULLSCREEN_EXIT);\n\n    if (options.transition) {\n      removeClass(list, CLASS_TRANSITION);\n\n      if (this.viewed) {\n        removeClass(image, CLASS_TRANSITION);\n      }\n    }\n\n    addClass(viewer, CLASS_FIXED);\n    viewer.setAttribute('style', '');\n    setStyle(viewer, {\n      zIndex: options.zIndex\n    });\n    this.initContainer();\n    this.viewerData = assign({}, this.containerData);\n    this.renderList();\n\n    if (this.viewed) {\n      this.initImage(function () {\n        _this6.renderImage(function () {\n          if (options.transition) {\n            setTimeout(function () {\n              addClass(image, CLASS_TRANSITION);\n              addClass(list, CLASS_TRANSITION);\n            }, 0);\n          }\n        });\n      });\n    }\n\n    return this;\n  },\n  // Exit modal mode (only available in inline mode)\n  exit: function exit() {\n    var _this7 = this;\n\n    var options = this.options,\n        viewer = this.viewer,\n        image = this.image,\n        list = this.list;\n\n    if (!this.isShown || this.played || !this.fulled || !options.inline) {\n      return this;\n    }\n\n    this.fulled = false;\n    this.close();\n    removeClass(this.button, CLASS_FULLSCREEN_EXIT);\n\n    if (options.transition) {\n      removeClass(list, CLASS_TRANSITION);\n\n      if (this.viewed) {\n        removeClass(image, CLASS_TRANSITION);\n      }\n    }\n\n    removeClass(viewer, CLASS_FIXED);\n    setStyle(viewer, {\n      zIndex: options.zIndexInline\n    });\n    this.viewerData = assign({}, this.parentData);\n    this.renderViewer();\n    this.renderList();\n\n    if (this.viewed) {\n      this.initImage(function () {\n        _this7.renderImage(function () {\n          if (options.transition) {\n            setTimeout(function () {\n              addClass(image, CLASS_TRANSITION);\n              addClass(list, CLASS_TRANSITION);\n            }, 0);\n          }\n        });\n      });\n    }\n\n    return this;\n  },\n  // Show the current ratio of the image with percentage\n  tooltip: function tooltip() {\n    var _this8 = this;\n\n    var options = this.options,\n        tooltipBox = this.tooltipBox,\n        imageData = this.imageData;\n\n    if (!this.viewed || this.played || !options.tooltip) {\n      return this;\n    }\n\n    tooltipBox.textContent = \"\".concat(Math.round(imageData.ratio * 100), \"%\");\n\n    if (!this.tooltipping) {\n      if (options.transition) {\n        if (this.fading) {\n          dispatchEvent(tooltipBox, EVENT_TRANSITION_END);\n        }\n\n        addClass(tooltipBox, CLASS_SHOW);\n        addClass(tooltipBox, CLASS_FADE);\n        addClass(tooltipBox, CLASS_TRANSITION); // Force reflow to enable CSS3 transition\n\n        tooltipBox.initialOffsetWidth = tooltipBox.offsetWidth;\n        addClass(tooltipBox, CLASS_IN);\n      } else {\n        addClass(tooltipBox, CLASS_SHOW);\n      }\n    } else {\n      clearTimeout(this.tooltipping);\n    }\n\n    this.tooltipping = setTimeout(function () {\n      if (options.transition) {\n        addListener(tooltipBox, EVENT_TRANSITION_END, function () {\n          removeClass(tooltipBox, CLASS_SHOW);\n          removeClass(tooltipBox, CLASS_FADE);\n          removeClass(tooltipBox, CLASS_TRANSITION);\n          _this8.fading = false;\n        }, {\n          once: true\n        });\n        removeClass(tooltipBox, CLASS_IN);\n        _this8.fading = true;\n      } else {\n        removeClass(tooltipBox, CLASS_SHOW);\n      }\n\n      _this8.tooltipping = false;\n    }, 1000);\n    return this;\n  },\n  // Toggle the image size between its natural size and initial size\n  toggle: function toggle() {\n    if (this.imageData.ratio === 1) {\n      this.zoomTo(this.initialImageData.ratio, true);\n    } else {\n      this.zoomTo(1, true);\n    }\n\n    return this;\n  },\n  // Reset the image to its initial state\n  reset: function reset() {\n    if (this.viewed && !this.played) {\n      this.imageData = assign({}, this.initialImageData);\n      this.renderImage();\n    }\n\n    return this;\n  },\n  // Update viewer when images changed\n  update: function update() {\n    var _this9 = this;\n\n    var element = this.element,\n        options = this.options,\n        isImg = this.isImg; // Destroy viewer if the target image was deleted\n\n    if (isImg && !element.parentNode) {\n      return this.destroy();\n    }\n\n    var images = [];\n    forEach(isImg ? [element] : element.querySelectorAll('img'), function (image) {\n      if (isFunction(options.filter)) {\n        if (options.filter.call(_this9, image)) {\n          images.push(image);\n        }\n      } else if (_this9.getImageURL(image)) {\n        images.push(image);\n      }\n    });\n\n    if (!images.length) {\n      return this;\n    }\n\n    this.images = images;\n    this.length = images.length;\n\n    if (this.ready) {\n      var changedIndexes = [];\n      forEach(this.items, function (item, i) {\n        var img = item.querySelector('img');\n        var image = images[i];\n\n        if (image && img) {\n          if (image.src !== img.src // Title changed (#408)\n          || image.alt !== img.alt) {\n            changedIndexes.push(i);\n          }\n        } else {\n          changedIndexes.push(i);\n        }\n      });\n      setStyle(this.list, {\n        width: 'auto'\n      });\n      this.initList();\n\n      if (this.isShown) {\n        if (this.length) {\n          if (this.viewed) {\n            var changedIndex = changedIndexes.indexOf(this.index);\n\n            if (changedIndex >= 0) {\n              this.viewed = false;\n              this.view(Math.max(Math.min(this.index - changedIndex, this.length - 1), 0));\n            } else {\n              // Reactivate the current viewing item after reset the list.\n              addClass(this.items[this.index], CLASS_ACTIVE);\n            }\n          }\n        } else {\n          this.image = null;\n          this.viewed = false;\n          this.index = 0;\n          this.imageData = {};\n          this.canvas.innerHTML = '';\n          this.title.innerHTML = '';\n        }\n      }\n    } else {\n      this.build();\n    }\n\n    return this;\n  },\n  // Destroy the viewer\n  destroy: function destroy() {\n    var element = this.element,\n        options = this.options;\n\n    if (!element[NAMESPACE]) {\n      return this;\n    }\n\n    this.destroyed = true;\n\n    if (this.ready) {\n      if (this.played) {\n        this.stop();\n      }\n\n      if (options.inline) {\n        if (this.fulled) {\n          this.exit();\n        }\n\n        this.unbind();\n      } else if (this.isShown) {\n        if (this.viewing) {\n          if (this.imageRendering) {\n            this.imageRendering.abort();\n          } else if (this.imageInitializing) {\n            this.imageInitializing.abort();\n          }\n        }\n\n        if (this.hiding) {\n          this.transitioning.abort();\n        }\n\n        this.hidden();\n      } else if (this.showing) {\n        this.transitioning.abort();\n        this.hidden();\n      }\n\n      this.ready = false;\n      this.viewer.parentNode.removeChild(this.viewer);\n    } else if (options.inline) {\n      if (this.delaying) {\n        this.delaying.abort();\n      } else if (this.initializing) {\n        this.initializing.abort();\n      }\n    }\n\n    if (!options.inline) {\n      removeListener(element, EVENT_CLICK, this.onStart);\n    }\n\n    element[NAMESPACE] = undefined;\n    return this;\n  }\n};\n\nvar others = {\n  getImageURL: function getImageURL(image) {\n    var url = this.options.url;\n\n    if (isString(url)) {\n      url = image.getAttribute(url);\n    } else if (isFunction(url)) {\n      url = url.call(this, image);\n    } else {\n      url = '';\n    }\n\n    return url;\n  },\n  open: function open() {\n    var body = this.body;\n    addClass(body, CLASS_OPEN);\n    body.style.paddingRight = \"\".concat(this.scrollbarWidth + (parseFloat(this.initialBodyComputedPaddingRight) || 0), \"px\");\n  },\n  close: function close() {\n    var body = this.body;\n    removeClass(body, CLASS_OPEN);\n    body.style.paddingRight = this.initialBodyPaddingRight;\n  },\n  shown: function shown() {\n    var element = this.element,\n        options = this.options;\n    this.fulled = true;\n    this.isShown = true;\n    this.render();\n    this.bind();\n    this.showing = false;\n\n    if (isFunction(options.shown)) {\n      addListener(element, EVENT_SHOWN, options.shown, {\n        once: true\n      });\n    }\n\n    if (dispatchEvent(element, EVENT_SHOWN) === false) {\n      return;\n    }\n\n    if (this.ready && this.isShown && !this.hiding) {\n      this.view(this.index);\n    }\n  },\n  hidden: function hidden() {\n    var element = this.element,\n        options = this.options;\n    this.fulled = false;\n    this.viewed = false;\n    this.isShown = false;\n    this.close();\n    this.unbind();\n    addClass(this.viewer, CLASS_HIDE);\n    this.resetList();\n    this.resetImage();\n    this.hiding = false;\n\n    if (!this.destroyed) {\n      if (isFunction(options.hidden)) {\n        addListener(element, EVENT_HIDDEN, options.hidden, {\n          once: true\n        });\n      }\n\n      dispatchEvent(element, EVENT_HIDDEN, null, {\n        cancelable: false\n      });\n    }\n  },\n  requestFullscreen: function requestFullscreen() {\n    var document = this.element.ownerDocument;\n\n    if (this.fulled && !(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement)) {\n      var documentElement = document.documentElement; // Element.requestFullscreen()\n\n      if (documentElement.requestFullscreen) {\n        documentElement.requestFullscreen();\n      } else if (documentElement.webkitRequestFullscreen) {\n        documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n      } else if (documentElement.mozRequestFullScreen) {\n        documentElement.mozRequestFullScreen();\n      } else if (documentElement.msRequestFullscreen) {\n        documentElement.msRequestFullscreen();\n      }\n    }\n  },\n  exitFullscreen: function exitFullscreen() {\n    var document = this.element.ownerDocument;\n\n    if (this.fulled && (document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement)) {\n      // Document.exitFullscreen()\n      if (document.exitFullscreen) {\n        document.exitFullscreen();\n      } else if (document.webkitExitFullscreen) {\n        document.webkitExitFullscreen();\n      } else if (document.mozCancelFullScreen) {\n        document.mozCancelFullScreen();\n      } else if (document.msExitFullscreen) {\n        document.msExitFullscreen();\n      }\n    }\n  },\n  change: function change(event) {\n    var options = this.options,\n        pointers = this.pointers;\n    var pointer = pointers[Object.keys(pointers)[0]];\n    var offsetX = pointer.endX - pointer.startX;\n    var offsetY = pointer.endY - pointer.startY;\n\n    switch (this.action) {\n      // Move the current image\n      case ACTION_MOVE:\n        this.move(offsetX, offsetY);\n        break;\n      // Zoom the current image\n\n      case ACTION_ZOOM:\n        this.zoom(getMaxZoomRatio(pointers), false, event);\n        break;\n\n      case ACTION_SWITCH:\n        {\n          this.action = 'switched';\n          var absoluteOffsetX = Math.abs(offsetX);\n\n          if (absoluteOffsetX > 1 && absoluteOffsetX > Math.abs(offsetY)) {\n            // Empty `pointers` as `touchend` event will not be fired after swiped in iOS browsers.\n            this.pointers = {};\n\n            if (offsetX > 1) {\n              this.prev(options.loop);\n            } else if (offsetX < -1) {\n              this.next(options.loop);\n            }\n          }\n\n          break;\n        }\n    } // Override\n\n\n    forEach(pointers, function (p) {\n      p.startX = p.endX;\n      p.startY = p.endY;\n    });\n  },\n  isSwitchable: function isSwitchable() {\n    var imageData = this.imageData,\n        viewerData = this.viewerData;\n    return this.length > 1 && imageData.left >= 0 && imageData.top >= 0 && imageData.width <= viewerData.width && imageData.height <= viewerData.height;\n  }\n};\n\nvar AnotherViewer = WINDOW.Viewer;\n\nvar Viewer = /*#__PURE__*/function () {\n  /**\n   * Create a new Viewer.\n   * @param {Element} element - The target element for viewing.\n   * @param {Object} [options={}] - The configuration options.\n   */\n  function Viewer(element) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Viewer);\n\n    if (!element || element.nodeType !== 1) {\n      throw new Error('The first argument is required and must be an element.');\n    }\n\n    this.element = element;\n    this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\n    this.action = false;\n    this.fading = false;\n    this.fulled = false;\n    this.hiding = false;\n    this.imageClicked = false;\n    this.imageData = {};\n    this.index = this.options.initialViewIndex;\n    this.isImg = false;\n    this.isShown = false;\n    this.length = 0;\n    this.played = false;\n    this.playing = false;\n    this.pointers = {};\n    this.ready = false;\n    this.showing = false;\n    this.timeout = false;\n    this.tooltipping = false;\n    this.viewed = false;\n    this.viewing = false;\n    this.wheeling = false;\n    this.zooming = false;\n    this.init();\n  }\n\n  _createClass(Viewer, [{\n    key: \"init\",\n    value: function init() {\n      var _this = this;\n\n      var element = this.element,\n          options = this.options;\n\n      if (element[NAMESPACE]) {\n        return;\n      }\n\n      element[NAMESPACE] = this;\n      var isImg = element.tagName.toLowerCase() === 'img';\n      var images = [];\n      forEach(isImg ? [element] : element.querySelectorAll('img'), function (image) {\n        if (isFunction(options.filter)) {\n          if (options.filter.call(_this, image)) {\n            images.push(image);\n          }\n        } else if (_this.getImageURL(image)) {\n          images.push(image);\n        }\n      });\n      this.isImg = isImg;\n      this.length = images.length;\n      this.images = images;\n      this.initBody(); // Override `transition` option if it is not supported\n\n      if (isUndefined(document.createElement(NAMESPACE).style.transition)) {\n        options.transition = false;\n      }\n\n      if (options.inline) {\n        var count = 0;\n\n        var progress = function progress() {\n          count += 1;\n\n          if (count === _this.length) {\n            var timeout;\n            _this.initializing = false;\n            _this.delaying = {\n              abort: function abort() {\n                clearTimeout(timeout);\n              }\n            }; // build asynchronously to keep `this.viewer` is accessible in `ready` event handler.\n\n            timeout = setTimeout(function () {\n              _this.delaying = false;\n\n              _this.build();\n            }, 0);\n          }\n        };\n\n        this.initializing = {\n          abort: function abort() {\n            forEach(images, function (image) {\n              if (!image.complete) {\n                removeListener(image, EVENT_LOAD, progress);\n              }\n            });\n          }\n        };\n        forEach(images, function (image) {\n          if (image.complete) {\n            progress();\n          } else {\n            addListener(image, EVENT_LOAD, progress, {\n              once: true\n            });\n          }\n        });\n      } else {\n        addListener(element, EVENT_CLICK, this.onStart = function (_ref) {\n          var target = _ref.target;\n\n          if (target.tagName.toLowerCase() === 'img' && (!isFunction(options.filter) || options.filter.call(_this, target))) {\n            _this.view(_this.images.indexOf(target));\n          }\n        });\n      }\n    }\n  }, {\n    key: \"build\",\n    value: function build() {\n      if (this.ready) {\n        return;\n      }\n\n      var element = this.element,\n          options = this.options;\n      var parent = element.parentNode;\n      var template = document.createElement('div');\n      template.innerHTML = TEMPLATE;\n      var viewer = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\n      var title = viewer.querySelector(\".\".concat(NAMESPACE, \"-title\"));\n      var toolbar = viewer.querySelector(\".\".concat(NAMESPACE, \"-toolbar\"));\n      var navbar = viewer.querySelector(\".\".concat(NAMESPACE, \"-navbar\"));\n      var button = viewer.querySelector(\".\".concat(NAMESPACE, \"-button\"));\n      var canvas = viewer.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\n      this.parent = parent;\n      this.viewer = viewer;\n      this.title = title;\n      this.toolbar = toolbar;\n      this.navbar = navbar;\n      this.button = button;\n      this.canvas = canvas;\n      this.footer = viewer.querySelector(\".\".concat(NAMESPACE, \"-footer\"));\n      this.tooltipBox = viewer.querySelector(\".\".concat(NAMESPACE, \"-tooltip\"));\n      this.player = viewer.querySelector(\".\".concat(NAMESPACE, \"-player\"));\n      this.list = viewer.querySelector(\".\".concat(NAMESPACE, \"-list\"));\n      addClass(title, !options.title ? CLASS_HIDE : getResponsiveClass(Array.isArray(options.title) ? options.title[0] : options.title));\n      addClass(navbar, !options.navbar ? CLASS_HIDE : getResponsiveClass(options.navbar));\n      toggleClass(button, CLASS_HIDE, !options.button);\n\n      if (options.backdrop) {\n        addClass(viewer, \"\".concat(NAMESPACE, \"-backdrop\"));\n\n        if (!options.inline && options.backdrop !== 'static') {\n          setData(canvas, DATA_ACTION, 'hide');\n        }\n      }\n\n      if (isString(options.className) && options.className) {\n        // In case there are multiple class names\n        options.className.split(REGEXP_SPACES).forEach(function (className) {\n          addClass(viewer, className);\n        });\n      }\n\n      if (options.toolbar) {\n        var list = document.createElement('ul');\n        var custom = isPlainObject(options.toolbar);\n        var zoomButtons = BUTTONS.slice(0, 3);\n        var rotateButtons = BUTTONS.slice(7, 9);\n        var scaleButtons = BUTTONS.slice(9);\n\n        if (!custom) {\n          addClass(toolbar, getResponsiveClass(options.toolbar));\n        }\n\n        forEach(custom ? options.toolbar : BUTTONS, function (value, index) {\n          var deep = custom && isPlainObject(value);\n          var name = custom ? hyphenate(index) : value;\n          var show = deep && !isUndefined(value.show) ? value.show : value;\n\n          if (!show || !options.zoomable && zoomButtons.indexOf(name) !== -1 || !options.rotatable && rotateButtons.indexOf(name) !== -1 || !options.scalable && scaleButtons.indexOf(name) !== -1) {\n            return;\n          }\n\n          var size = deep && !isUndefined(value.size) ? value.size : value;\n          var click = deep && !isUndefined(value.click) ? value.click : value;\n          var item = document.createElement('li');\n          item.setAttribute('role', 'button');\n          addClass(item, \"\".concat(NAMESPACE, \"-\").concat(name));\n\n          if (!isFunction(click)) {\n            setData(item, DATA_ACTION, name);\n          }\n\n          if (isNumber(show)) {\n            addClass(item, getResponsiveClass(show));\n          }\n\n          if (['small', 'large'].indexOf(size) !== -1) {\n            addClass(item, \"\".concat(NAMESPACE, \"-\").concat(size));\n          } else if (name === 'play') {\n            addClass(item, \"\".concat(NAMESPACE, \"-large\"));\n          }\n\n          if (isFunction(click)) {\n            addListener(item, EVENT_CLICK, click);\n          }\n\n          list.appendChild(item);\n        });\n        toolbar.appendChild(list);\n      } else {\n        addClass(toolbar, CLASS_HIDE);\n      }\n\n      if (!options.rotatable) {\n        var rotates = toolbar.querySelectorAll('li[class*=\"rotate\"]');\n        addClass(rotates, CLASS_INVISIBLE);\n        forEach(rotates, function (rotate) {\n          toolbar.appendChild(rotate);\n        });\n      }\n\n      if (options.inline) {\n        addClass(button, CLASS_FULLSCREEN);\n        setStyle(viewer, {\n          zIndex: options.zIndexInline\n        });\n\n        if (window.getComputedStyle(parent).position === 'static') {\n          setStyle(parent, {\n            position: 'relative'\n          });\n        }\n\n        parent.insertBefore(viewer, element.nextSibling);\n      } else {\n        addClass(button, CLASS_CLOSE);\n        addClass(viewer, CLASS_FIXED);\n        addClass(viewer, CLASS_FADE);\n        addClass(viewer, CLASS_HIDE);\n        setStyle(viewer, {\n          zIndex: options.zIndex\n        });\n        var container = options.container;\n\n        if (isString(container)) {\n          container = element.ownerDocument.querySelector(container);\n        }\n\n        if (!container) {\n          container = this.body;\n        }\n\n        container.appendChild(viewer);\n      }\n\n      if (options.inline) {\n        this.render();\n        this.bind();\n        this.isShown = true;\n      }\n\n      this.ready = true;\n\n      if (isFunction(options.ready)) {\n        addListener(element, EVENT_READY, options.ready, {\n          once: true\n        });\n      }\n\n      if (dispatchEvent(element, EVENT_READY) === false) {\n        this.ready = false;\n        return;\n      }\n\n      if (this.ready && options.inline) {\n        this.view(this.index);\n      }\n    }\n    /**\n     * Get the no conflict viewer class.\n     * @returns {Viewer} The viewer class.\n     */\n\n  }], [{\n    key: \"noConflict\",\n    value: function noConflict() {\n      window.Viewer = AnotherViewer;\n      return Viewer;\n    }\n    /**\n     * Change the default options.\n     * @param {Object} options - The new default options.\n     */\n\n  }, {\n    key: \"setDefaults\",\n    value: function setDefaults(options) {\n      assign(DEFAULTS, isPlainObject(options) && options);\n    }\n  }]);\n\n  return Viewer;\n}();\n\nassign(Viewer.prototype, render, events, handlers, methods, others);\n\nexport default Viewer;\n"
  },
  {
    "path": "public/assets/luna/js/viewerjs/viewer.js",
    "content": "/*!\n * Viewer.js v1.7.1\n * https://fengyuanchen.github.io/viewerjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2020-09-29T13:45:20.981Z\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Viewer = factory());\n}(this, (function () { 'use strict';\n\n  function _typeof(obj) {\n    \"@babel/helpers - typeof\";\n\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n      _typeof = function (obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function (obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  function ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(object);\n      if (enumerableOnly) symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n      keys.push.apply(keys, symbols);\n    }\n\n    return keys;\n  }\n\n  function _objectSpread2(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i] != null ? arguments[i] : {};\n\n      if (i % 2) {\n        ownKeys(Object(source), true).forEach(function (key) {\n          _defineProperty(target, key, source[key]);\n        });\n      } else if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n      } else {\n        ownKeys(Object(source)).forEach(function (key) {\n          Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n      }\n    }\n\n    return target;\n  }\n\n  var DEFAULTS = {\n    /**\n     * Enable a modal backdrop, specify `static` for a backdrop\n     * which doesn't close the modal on click.\n     * @type {boolean}\n     */\n    backdrop: true,\n\n    /**\n     * Show the button on the top-right of the viewer.\n     * @type {boolean}\n     */\n    button: true,\n\n    /**\n     * Show the navbar.\n     * @type {boolean | number}\n     */\n    navbar: true,\n\n    /**\n     * Specify the visibility and the content of the title.\n     * @type {boolean | number | Function | Array}\n     */\n    title: true,\n\n    /**\n     * Show the toolbar.\n     * @type {boolean | number | Object}\n     */\n    toolbar: true,\n\n    /**\n     * Custom class name(s) to add to the viewer's root element.\n     * @type {string}\n     */\n    className: '',\n\n    /**\n     * Define where to put the viewer in modal mode.\n     * @type {string | Element}\n     */\n    container: 'body',\n\n    /**\n     * Filter the images for viewing. Return true if the image is viewable.\n     * @type {Function}\n     */\n    filter: null,\n\n    /**\n     * Enable to request fullscreen when play.\n     * @type {boolean}\n     */\n    fullscreen: true,\n\n    /**\n     * Define the extra attributes to inherit from the original image.\n     * @type {Array}\n     */\n    inheritedAttributes: ['crossOrigin', 'decoding', 'isMap', 'loading', 'referrerPolicy', 'sizes', 'srcset', 'useMap'],\n\n    /**\n     * Define the initial index of image for viewing.\n     * @type {number}\n     */\n    initialViewIndex: 0,\n\n    /**\n     * Enable inline mode.\n     * @type {boolean}\n     */\n    inline: false,\n\n    /**\n     * The amount of time to delay between automatically cycling an image when playing.\n     * @type {number}\n     */\n    interval: 5000,\n\n    /**\n     * Enable keyboard support.\n     * @type {boolean}\n     */\n    keyboard: true,\n\n    /**\n     * Indicate if show a loading spinner when load image or not.\n     * @type {boolean}\n     */\n    loading: true,\n\n    /**\n     * Indicate if enable loop viewing or not.\n     * @type {boolean}\n     */\n    loop: true,\n\n    /**\n     * Min width of the viewer in inline mode.\n     * @type {number}\n     */\n    minWidth: 200,\n\n    /**\n     * Min height of the viewer in inline mode.\n     * @type {number}\n     */\n    minHeight: 100,\n\n    /**\n     * Enable to move the image.\n     * @type {boolean}\n     */\n    movable: true,\n\n    /**\n     * Enable to rotate the image.\n     * @type {boolean}\n     */\n    rotatable: true,\n\n    /**\n     * Enable to scale the image.\n     * @type {boolean}\n     */\n    scalable: true,\n\n    /**\n     * Enable to zoom the image.\n     * @type {boolean}\n     */\n    zoomable: true,\n\n    /**\n     * Enable to zoom the current image by dragging on the touch screen.\n     * @type {boolean}\n     */\n    zoomOnTouch: true,\n\n    /**\n     * Enable to zoom the image by wheeling mouse.\n     * @type {boolean}\n     */\n    zoomOnWheel: true,\n\n    /**\n     * Enable to slide to the next or previous image by swiping on the touch screen.\n     * @type {boolean}\n     */\n    slideOnTouch: true,\n\n    /**\n     * Indicate if toggle the image size between its natural size\n     * and initial size when double click on the image or not.\n     * @type {boolean}\n     */\n    toggleOnDblclick: true,\n\n    /**\n     * Show the tooltip with image ratio (percentage) when zoom in or zoom out.\n     * @type {boolean}\n     */\n    tooltip: true,\n\n    /**\n     * Enable CSS3 Transition for some special elements.\n     * @type {boolean}\n     */\n    transition: true,\n\n    /**\n     * Define the CSS `z-index` value of viewer in modal mode.\n     * @type {number}\n     */\n    zIndex: 2015,\n\n    /**\n     * Define the CSS `z-index` value of viewer in inline mode.\n     * @type {number}\n     */\n    zIndexInline: 0,\n\n    /**\n     * Define the ratio when zoom the image by wheeling mouse.\n     * @type {number}\n     */\n    zoomRatio: 0.1,\n\n    /**\n     * Define the min ratio of the image when zoom out.\n     * @type {number}\n     */\n    minZoomRatio: 0.01,\n\n    /**\n     * Define the max ratio of the image when zoom in.\n     * @type {number}\n     */\n    maxZoomRatio: 100,\n\n    /**\n     * Define where to get the original image URL for viewing.\n     * @type {string | Function}\n     */\n    url: 'src',\n\n    /**\n     * Event shortcuts.\n     * @type {Function}\n     */\n    ready: null,\n    show: null,\n    shown: null,\n    hide: null,\n    hidden: null,\n    view: null,\n    viewed: null,\n    zoom: null,\n    zoomed: null,\n    play: null,\n    stop: null\n  };\n\n  var TEMPLATE = '<div class=\"viewer-container\" touch-action=\"none\">' + '<div class=\"viewer-canvas\"></div>' + '<div class=\"viewer-footer\">' + '<div class=\"viewer-title\"></div>' + '<div class=\"viewer-toolbar\"></div>' + '<div class=\"viewer-navbar\">' + '<ul class=\"viewer-list\"></ul>' + '</div>' + '</div>' + '<div class=\"viewer-tooltip\"></div>' + '<div role=\"button\" class=\"viewer-button\" data-viewer-action=\"mix\"></div>' + '<div class=\"viewer-player\"></div>' + '</div>';\n\n  var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n  var WINDOW = IS_BROWSER ? window : {};\n  var IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\n  var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\n  var NAMESPACE = 'viewer'; // Actions\n\n  var ACTION_MOVE = 'move';\n  var ACTION_SWITCH = 'switch';\n  var ACTION_ZOOM = 'zoom'; // Classes\n\n  var CLASS_ACTIVE = \"\".concat(NAMESPACE, \"-active\");\n  var CLASS_CLOSE = \"\".concat(NAMESPACE, \"-close\");\n  var CLASS_FADE = \"\".concat(NAMESPACE, \"-fade\");\n  var CLASS_FIXED = \"\".concat(NAMESPACE, \"-fixed\");\n  var CLASS_FULLSCREEN = \"\".concat(NAMESPACE, \"-fullscreen\");\n  var CLASS_FULLSCREEN_EXIT = \"\".concat(NAMESPACE, \"-fullscreen-exit\");\n  var CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\n  var CLASS_HIDE_MD_DOWN = \"\".concat(NAMESPACE, \"-hide-md-down\");\n  var CLASS_HIDE_SM_DOWN = \"\".concat(NAMESPACE, \"-hide-sm-down\");\n  var CLASS_HIDE_XS_DOWN = \"\".concat(NAMESPACE, \"-hide-xs-down\");\n  var CLASS_IN = \"\".concat(NAMESPACE, \"-in\");\n  var CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\n  var CLASS_LOADING = \"\".concat(NAMESPACE, \"-loading\");\n  var CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\");\n  var CLASS_OPEN = \"\".concat(NAMESPACE, \"-open\");\n  var CLASS_SHOW = \"\".concat(NAMESPACE, \"-show\");\n  var CLASS_TRANSITION = \"\".concat(NAMESPACE, \"-transition\"); // Events\n\n  var EVENT_CLICK = 'click';\n  var EVENT_DBLCLICK = 'dblclick';\n  var EVENT_DRAG_START = 'dragstart';\n  var EVENT_HIDDEN = 'hidden';\n  var EVENT_HIDE = 'hide';\n  var EVENT_KEY_DOWN = 'keydown';\n  var EVENT_LOAD = 'load';\n  var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\n  var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\n  var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\n  var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\n  var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\n  var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\n  var EVENT_READY = 'ready';\n  var EVENT_RESIZE = 'resize';\n  var EVENT_SHOW = 'show';\n  var EVENT_SHOWN = 'shown';\n  var EVENT_TRANSITION_END = 'transitionend';\n  var EVENT_VIEW = 'view';\n  var EVENT_VIEWED = 'viewed';\n  var EVENT_WHEEL = 'wheel';\n  var EVENT_ZOOM = 'zoom';\n  var EVENT_ZOOMED = 'zoomed';\n  var EVENT_PLAY = 'play';\n  var EVENT_STOP = 'stop'; // Data keys\n\n  var DATA_ACTION = \"\".concat(NAMESPACE, \"Action\"); // RegExps\n\n  var REGEXP_SPACES = /\\s\\s*/; // Misc\n\n  var BUTTONS = ['zoom-in', 'zoom-out', 'one-to-one', 'reset', 'prev', 'play', 'next', 'rotate-left', 'rotate-right', 'flip-horizontal', 'flip-vertical'];\n\n  /**\n   * Check if the given value is a string.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a string, else `false`.\n   */\n\n  function isString(value) {\n    return typeof value === 'string';\n  }\n  /**\n   * Check if the given value is not a number.\n   */\n\n  var isNaN = Number.isNaN || WINDOW.isNaN;\n  /**\n   * Check if the given value is a number.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a number, else `false`.\n   */\n\n  function isNumber(value) {\n    return typeof value === 'number' && !isNaN(value);\n  }\n  /**\n   * Check if the given value is undefined.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\n   */\n\n  function isUndefined(value) {\n    return typeof value === 'undefined';\n  }\n  /**\n   * Check if the given value is an object.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is an object, else `false`.\n   */\n\n  function isObject(value) {\n    return _typeof(value) === 'object' && value !== null;\n  }\n  var hasOwnProperty = Object.prototype.hasOwnProperty;\n  /**\n   * Check if the given value is a plain object.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\n   */\n\n  function isPlainObject(value) {\n    if (!isObject(value)) {\n      return false;\n    }\n\n    try {\n      var _constructor = value.constructor;\n      var prototype = _constructor.prototype;\n      return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n    } catch (error) {\n      return false;\n    }\n  }\n  /**\n   * Check if the given value is a function.\n   * @param {*} value - The value to check.\n   * @returns {boolean} Returns `true` if the given value is a function, else `false`.\n   */\n\n  function isFunction(value) {\n    return typeof value === 'function';\n  }\n  /**\n   * Iterate the given data.\n   * @param {*} data - The data to iterate.\n   * @param {Function} callback - The process function for each element.\n   * @returns {*} The original data.\n   */\n\n  function forEach(data, callback) {\n    if (data && isFunction(callback)) {\n      if (Array.isArray(data) || isNumber(data.length)\n      /* array-like */\n      ) {\n          var length = data.length;\n          var i;\n\n          for (i = 0; i < length; i += 1) {\n            if (callback.call(data, data[i], i, data) === false) {\n              break;\n            }\n          }\n        } else if (isObject(data)) {\n        Object.keys(data).forEach(function (key) {\n          callback.call(data, data[key], key, data);\n        });\n      }\n    }\n\n    return data;\n  }\n  /**\n   * Extend the given object.\n   * @param {*} obj - The object to be extended.\n   * @param {*} args - The rest objects which will be merged to the first object.\n   * @returns {Object} The extended object.\n   */\n\n  var assign = Object.assign || function assign(obj) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    if (isObject(obj) && args.length > 0) {\n      args.forEach(function (arg) {\n        if (isObject(arg)) {\n          Object.keys(arg).forEach(function (key) {\n            obj[key] = arg[key];\n          });\n        }\n      });\n    }\n\n    return obj;\n  };\n  var REGEXP_SUFFIX = /^(?:width|height|left|top|marginLeft|marginTop)$/;\n  /**\n   * Apply styles to the given element.\n   * @param {Element} element - The target element.\n   * @param {Object} styles - The styles for applying.\n   */\n\n  function setStyle(element, styles) {\n    var style = element.style;\n    forEach(styles, function (value, property) {\n      if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n        value += 'px';\n      }\n\n      style[property] = value;\n    });\n  }\n  /**\n   * Escape a string for using in HTML.\n   * @param {String} value - The string to escape.\n   * @returns {String} Returns the escaped string.\n   */\n\n  function escapeHTMLEntities(value) {\n    return isString(value) ? value.replace(/&(?!amp;|quot;|#39;|lt;|gt;)/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;') : value;\n  }\n  /**\n   * Check if the given element has a special class.\n   * @param {Element} element - The element to check.\n   * @param {string} value - The class to search.\n   * @returns {boolean} Returns `true` if the special class was found.\n   */\n\n  function hasClass(element, value) {\n    if (!element || !value) {\n      return false;\n    }\n\n    return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n  }\n  /**\n   * Add classes to the given element.\n   * @param {Element} element - The target element.\n   * @param {string} value - The classes to be added.\n   */\n\n  function addClass(element, value) {\n    if (!element || !value) {\n      return;\n    }\n\n    if (isNumber(element.length)) {\n      forEach(element, function (elem) {\n        addClass(elem, value);\n      });\n      return;\n    }\n\n    if (element.classList) {\n      element.classList.add(value);\n      return;\n    }\n\n    var className = element.className.trim();\n\n    if (!className) {\n      element.className = value;\n    } else if (className.indexOf(value) < 0) {\n      element.className = \"\".concat(className, \" \").concat(value);\n    }\n  }\n  /**\n   * Remove classes from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} value - The classes to be removed.\n   */\n\n  function removeClass(element, value) {\n    if (!element || !value) {\n      return;\n    }\n\n    if (isNumber(element.length)) {\n      forEach(element, function (elem) {\n        removeClass(elem, value);\n      });\n      return;\n    }\n\n    if (element.classList) {\n      element.classList.remove(value);\n      return;\n    }\n\n    if (element.className.indexOf(value) >= 0) {\n      element.className = element.className.replace(value, '');\n    }\n  }\n  /**\n   * Add or remove classes from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} value - The classes to be toggled.\n   * @param {boolean} added - Add only.\n   */\n\n  function toggleClass(element, value, added) {\n    if (!value) {\n      return;\n    }\n\n    if (isNumber(element.length)) {\n      forEach(element, function (elem) {\n        toggleClass(elem, value, added);\n      });\n      return;\n    } // IE10-11 doesn't support the second parameter of `classList.toggle`\n\n\n    if (added) {\n      addClass(element, value);\n    } else {\n      removeClass(element, value);\n    }\n  }\n  var REGEXP_HYPHENATE = /([a-z\\d])([A-Z])/g;\n  /**\n   * Transform the given string from camelCase to kebab-case\n   * @param {string} value - The value to transform.\n   * @returns {string} The transformed value.\n   */\n\n  function hyphenate(value) {\n    return value.replace(REGEXP_HYPHENATE, '$1-$2').toLowerCase();\n  }\n  /**\n   * Get data from the given element.\n   * @param {Element} element - The target element.\n   * @param {string} name - The data key to get.\n   * @returns {string} The data value.\n   */\n\n  function getData(element, name) {\n    if (isObject(element[name])) {\n      return element[name];\n    }\n\n    if (element.dataset) {\n      return element.dataset[name];\n    }\n\n    return element.getAttribute(\"data-\".concat(hyphenate(name)));\n  }\n  /**\n   * Set data to the given element.\n   * @param {Element} element - The target element.\n   * @param {string} name - The data key to set.\n   * @param {string} data - The data value.\n   */\n\n  function setData(element, name, data) {\n    if (isObject(data)) {\n      element[name] = data;\n    } else if (element.dataset) {\n      element.dataset[name] = data;\n    } else {\n      element.setAttribute(\"data-\".concat(hyphenate(name)), data);\n    }\n  }\n\n  var onceSupported = function () {\n    var supported = false;\n\n    if (IS_BROWSER) {\n      var once = false;\n\n      var listener = function listener() {};\n\n      var options = Object.defineProperty({}, 'once', {\n        get: function get() {\n          supported = true;\n          return once;\n        },\n\n        /**\n         * This setter can fix a `TypeError` in strict mode\n         * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\n         * @param {boolean} value - The value to set\n         */\n        set: function set(value) {\n          once = value;\n        }\n      });\n      WINDOW.addEventListener('test', listener, options);\n      WINDOW.removeEventListener('test', listener, options);\n    }\n\n    return supported;\n  }();\n  /**\n   * Remove event listener from the target element.\n   * @param {Element} element - The event target.\n   * @param {string} type - The event type(s).\n   * @param {Function} listener - The event listener.\n   * @param {Object} options - The event options.\n   */\n\n\n  function removeListener(element, type, listener) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    var handler = listener;\n    type.trim().split(REGEXP_SPACES).forEach(function (event) {\n      if (!onceSupported) {\n        var listeners = element.listeners;\n\n        if (listeners && listeners[event] && listeners[event][listener]) {\n          handler = listeners[event][listener];\n          delete listeners[event][listener];\n\n          if (Object.keys(listeners[event]).length === 0) {\n            delete listeners[event];\n          }\n\n          if (Object.keys(listeners).length === 0) {\n            delete element.listeners;\n          }\n        }\n      }\n\n      element.removeEventListener(event, handler, options);\n    });\n  }\n  /**\n   * Add event listener to the target element.\n   * @param {Element} element - The event target.\n   * @param {string} type - The event type(s).\n   * @param {Function} listener - The event listener.\n   * @param {Object} options - The event options.\n   */\n\n  function addListener(element, type, listener) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    var _handler = listener;\n    type.trim().split(REGEXP_SPACES).forEach(function (event) {\n      if (options.once && !onceSupported) {\n        var _element$listeners = element.listeners,\n            listeners = _element$listeners === void 0 ? {} : _element$listeners;\n\n        _handler = function handler() {\n          delete listeners[event][listener];\n          element.removeEventListener(event, _handler, options);\n\n          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n            args[_key2] = arguments[_key2];\n          }\n\n          listener.apply(element, args);\n        };\n\n        if (!listeners[event]) {\n          listeners[event] = {};\n        }\n\n        if (listeners[event][listener]) {\n          element.removeEventListener(event, listeners[event][listener], options);\n        }\n\n        listeners[event][listener] = _handler;\n        element.listeners = listeners;\n      }\n\n      element.addEventListener(event, _handler, options);\n    });\n  }\n  /**\n   * Dispatch event on the target element.\n   * @param {Element} element - The event target.\n   * @param {string} type - The event type(s).\n   * @param {Object} data - The additional event data.\n   * @param {Object} options - The additional event options.\n   * @returns {boolean} Indicate if the event is default prevented or not.\n   */\n\n  function dispatchEvent(element, type, data, options) {\n    var event; // Event and CustomEvent on IE9-11 are global objects, not constructors\n\n    if (isFunction(Event) && isFunction(CustomEvent)) {\n      event = new CustomEvent(type, _objectSpread2({\n        bubbles: true,\n        cancelable: true,\n        detail: data\n      }, options));\n    } else {\n      event = document.createEvent('CustomEvent');\n      event.initCustomEvent(type, true, true, data);\n    }\n\n    return element.dispatchEvent(event);\n  }\n  /**\n   * Get the offset base on the document.\n   * @param {Element} element - The target element.\n   * @returns {Object} The offset data.\n   */\n\n  function getOffset(element) {\n    var box = element.getBoundingClientRect();\n    return {\n      left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n      top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n    };\n  }\n  /**\n   * Get transforms base on the given object.\n   * @param {Object} obj - The target object.\n   * @returns {string} A string contains transform values.\n   */\n\n  function getTransforms(_ref) {\n    var rotate = _ref.rotate,\n        scaleX = _ref.scaleX,\n        scaleY = _ref.scaleY,\n        translateX = _ref.translateX,\n        translateY = _ref.translateY;\n    var values = [];\n\n    if (isNumber(translateX) && translateX !== 0) {\n      values.push(\"translateX(\".concat(translateX, \"px)\"));\n    }\n\n    if (isNumber(translateY) && translateY !== 0) {\n      values.push(\"translateY(\".concat(translateY, \"px)\"));\n    } // Rotate should come first before scale to match orientation transform\n\n\n    if (isNumber(rotate) && rotate !== 0) {\n      values.push(\"rotate(\".concat(rotate, \"deg)\"));\n    }\n\n    if (isNumber(scaleX) && scaleX !== 1) {\n      values.push(\"scaleX(\".concat(scaleX, \")\"));\n    }\n\n    if (isNumber(scaleY) && scaleY !== 1) {\n      values.push(\"scaleY(\".concat(scaleY, \")\"));\n    }\n\n    var transform = values.length ? values.join(' ') : 'none';\n    return {\n      WebkitTransform: transform,\n      msTransform: transform,\n      transform: transform\n    };\n  }\n  /**\n   * Get an image name from an image url.\n   * @param {string} url - The target url.\n   * @example\n   * // picture.jpg\n   * getImageNameFromURL('https://domain.com/path/to/picture.jpg?size=1280×960')\n   * @returns {string} A string contains the image name.\n   */\n\n  function getImageNameFromURL(url) {\n    return isString(url) ? decodeURIComponent(url.replace(/^.*\\//, '').replace(/[?&#].*$/, '')) : '';\n  }\n  var IS_SAFARI = WINDOW.navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(WINDOW.navigator.userAgent);\n  /**\n   * Get an image's natural sizes.\n   * @param {string} image - The target image.\n   * @param {Object} options - The viewer options.\n   * @param {Function} callback - The callback function.\n   * @returns {HTMLImageElement} The new image.\n   */\n\n  function getImageNaturalSizes(image, options, callback) {\n    var newImage = document.createElement('img'); // Modern browsers (except Safari)\n\n    if (image.naturalWidth && !IS_SAFARI) {\n      callback(image.naturalWidth, image.naturalHeight);\n      return newImage;\n    }\n\n    var body = document.body || document.documentElement;\n\n    newImage.onload = function () {\n      callback(newImage.width, newImage.height);\n\n      if (!IS_SAFARI) {\n        body.removeChild(newImage);\n      }\n    };\n\n    forEach(options.inheritedAttributes, function (name) {\n      var value = image.getAttribute(name);\n\n      if (value !== null) {\n        newImage.setAttribute(name, value);\n      }\n    });\n    newImage.src = image.src; // iOS Safari will convert the image automatically\n    // with its orientation once append it into DOM\n\n    if (!IS_SAFARI) {\n      newImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\n      body.appendChild(newImage);\n    }\n\n    return newImage;\n  }\n  /**\n   * Get the related class name of a responsive type number.\n   * @param {string} type - The responsive type.\n   * @returns {string} The related class name.\n   */\n\n  function getResponsiveClass(type) {\n    switch (type) {\n      case 2:\n        return CLASS_HIDE_XS_DOWN;\n\n      case 3:\n        return CLASS_HIDE_SM_DOWN;\n\n      case 4:\n        return CLASS_HIDE_MD_DOWN;\n\n      default:\n        return '';\n    }\n  }\n  /**\n   * Get the max ratio of a group of pointers.\n   * @param {string} pointers - The target pointers.\n   * @returns {number} The result ratio.\n   */\n\n  function getMaxZoomRatio(pointers) {\n    var pointers2 = _objectSpread2({}, pointers);\n\n    var ratios = [];\n    forEach(pointers, function (pointer, pointerId) {\n      delete pointers2[pointerId];\n      forEach(pointers2, function (pointer2) {\n        var x1 = Math.abs(pointer.startX - pointer2.startX);\n        var y1 = Math.abs(pointer.startY - pointer2.startY);\n        var x2 = Math.abs(pointer.endX - pointer2.endX);\n        var y2 = Math.abs(pointer.endY - pointer2.endY);\n        var z1 = Math.sqrt(x1 * x1 + y1 * y1);\n        var z2 = Math.sqrt(x2 * x2 + y2 * y2);\n        var ratio = (z2 - z1) / z1;\n        ratios.push(ratio);\n      });\n    });\n    ratios.sort(function (a, b) {\n      return Math.abs(a) < Math.abs(b);\n    });\n    return ratios[0];\n  }\n  /**\n   * Get a pointer from an event object.\n   * @param {Object} event - The target event object.\n   * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\n   * @returns {Object} The result pointer contains start and/or end point coordinates.\n   */\n\n  function getPointer(_ref2, endOnly) {\n    var pageX = _ref2.pageX,\n        pageY = _ref2.pageY;\n    var end = {\n      endX: pageX,\n      endY: pageY\n    };\n    return endOnly ? end : _objectSpread2({\n      timeStamp: Date.now(),\n      startX: pageX,\n      startY: pageY\n    }, end);\n  }\n  /**\n   * Get the center point coordinate of a group of pointers.\n   * @param {Object} pointers - The target pointers.\n   * @returns {Object} The center point coordinate.\n   */\n\n  function getPointersCenter(pointers) {\n    var pageX = 0;\n    var pageY = 0;\n    var count = 0;\n    forEach(pointers, function (_ref3) {\n      var startX = _ref3.startX,\n          startY = _ref3.startY;\n      pageX += startX;\n      pageY += startY;\n      count += 1;\n    });\n    pageX /= count;\n    pageY /= count;\n    return {\n      pageX: pageX,\n      pageY: pageY\n    };\n  }\n\n  var render = {\n    render: function render() {\n      this.initContainer();\n      this.initViewer();\n      this.initList();\n      this.renderViewer();\n    },\n    initBody: function initBody() {\n      var ownerDocument = this.element.ownerDocument;\n      var body = ownerDocument.body || ownerDocument.documentElement;\n      this.body = body;\n      this.scrollbarWidth = window.innerWidth - ownerDocument.documentElement.clientWidth;\n      this.initialBodyPaddingRight = body.style.paddingRight;\n      this.initialBodyComputedPaddingRight = window.getComputedStyle(body).paddingRight;\n    },\n    initContainer: function initContainer() {\n      this.containerData = {\n        width: window.innerWidth,\n        height: window.innerHeight\n      };\n    },\n    initViewer: function initViewer() {\n      var options = this.options,\n          parent = this.parent;\n      var viewerData;\n\n      if (options.inline) {\n        viewerData = {\n          width: Math.max(parent.offsetWidth, options.minWidth),\n          height: Math.max(parent.offsetHeight, options.minHeight)\n        };\n        this.parentData = viewerData;\n      }\n\n      if (this.fulled || !viewerData) {\n        viewerData = this.containerData;\n      }\n\n      this.viewerData = assign({}, viewerData);\n    },\n    renderViewer: function renderViewer() {\n      if (this.options.inline && !this.fulled) {\n        setStyle(this.viewer, this.viewerData);\n      }\n    },\n    initList: function initList() {\n      var _this = this;\n\n      var element = this.element,\n          options = this.options,\n          list = this.list;\n      var items = []; // initList may be called in this.update, so should keep idempotent\n\n      list.innerHTML = '';\n      forEach(this.images, function (image, index) {\n        var src = image.src;\n        var alt = image.alt || getImageNameFromURL(src);\n\n        var url = _this.getImageURL(image);\n\n        if (src || url) {\n          var item = document.createElement('li');\n          var img = document.createElement('img');\n          forEach(options.inheritedAttributes, function (name) {\n            var value = image.getAttribute(name);\n\n            if (value !== null) {\n              img.setAttribute(name, value);\n            }\n          });\n          img.src = src || url;\n          img.alt = alt;\n          img.setAttribute('data-index', index);\n          img.setAttribute('data-original-url', url || src);\n          img.setAttribute('data-viewer-action', 'view');\n          img.setAttribute('role', 'button');\n          item.appendChild(img);\n          list.appendChild(item);\n          items.push(item);\n        }\n      });\n      this.items = items;\n      forEach(items, function (item) {\n        var image = item.firstElementChild;\n        setData(image, 'filled', true);\n\n        if (options.loading) {\n          addClass(item, CLASS_LOADING);\n        }\n\n        addListener(image, EVENT_LOAD, function (event) {\n          if (options.loading) {\n            removeClass(item, CLASS_LOADING);\n          }\n\n          _this.loadImage(event);\n        }, {\n          once: true\n        });\n      });\n\n      if (options.transition) {\n        addListener(element, EVENT_VIEWED, function () {\n          addClass(list, CLASS_TRANSITION);\n        }, {\n          once: true\n        });\n      }\n    },\n    renderList: function renderList(index) {\n      var i = index || this.index;\n      var width = this.items[i].offsetWidth || 30;\n      var outerWidth = width + 1; // 1 pixel of `margin-left` width\n      // Place the active item in the center of the screen\n\n      setStyle(this.list, assign({\n        width: outerWidth * this.length\n      }, getTransforms({\n        translateX: (this.viewerData.width - width) / 2 - outerWidth * i\n      })));\n    },\n    resetList: function resetList() {\n      var list = this.list;\n      list.innerHTML = '';\n      removeClass(list, CLASS_TRANSITION);\n      setStyle(list, getTransforms({\n        translateX: 0\n      }));\n    },\n    initImage: function initImage(done) {\n      var _this2 = this;\n\n      var options = this.options,\n          image = this.image,\n          viewerData = this.viewerData;\n      var footerHeight = this.footer.offsetHeight;\n      var viewerWidth = viewerData.width;\n      var viewerHeight = Math.max(viewerData.height - footerHeight, footerHeight);\n      var oldImageData = this.imageData || {};\n      var sizingImage;\n      this.imageInitializing = {\n        abort: function abort() {\n          sizingImage.onload = null;\n        }\n      };\n      sizingImage = getImageNaturalSizes(image, options, function (naturalWidth, naturalHeight) {\n        var aspectRatio = naturalWidth / naturalHeight;\n        var width = viewerWidth;\n        var height = viewerHeight;\n        _this2.imageInitializing = false;\n\n        if (viewerHeight * aspectRatio > viewerWidth) {\n          height = viewerWidth / aspectRatio;\n        } else {\n          width = viewerHeight * aspectRatio;\n        }\n\n        width = Math.min(width * 0.9, naturalWidth);\n        height = Math.min(height * 0.9, naturalHeight);\n        var imageData = {\n          naturalWidth: naturalWidth,\n          naturalHeight: naturalHeight,\n          aspectRatio: aspectRatio,\n          ratio: width / naturalWidth,\n          width: width,\n          height: height,\n          left: (viewerWidth - width) / 2,\n          top: (viewerHeight - height) / 2\n        };\n        var initialImageData = assign({}, imageData);\n\n        if (options.rotatable) {\n          imageData.rotate = oldImageData.rotate || 0;\n          initialImageData.rotate = 0;\n        }\n\n        if (options.scalable) {\n          imageData.scaleX = oldImageData.scaleX || 1;\n          imageData.scaleY = oldImageData.scaleY || 1;\n          initialImageData.scaleX = 1;\n          initialImageData.scaleY = 1;\n        }\n\n        _this2.imageData = imageData;\n        _this2.initialImageData = initialImageData;\n\n        if (done) {\n          done();\n        }\n      });\n    },\n    renderImage: function renderImage(done) {\n      var _this3 = this;\n\n      var image = this.image,\n          imageData = this.imageData;\n      setStyle(image, assign({\n        width: imageData.width,\n        height: imageData.height,\n        // XXX: Not to use translateX/Y to avoid image shaking when zooming\n        marginLeft: imageData.left,\n        marginTop: imageData.top\n      }, getTransforms(imageData)));\n\n      if (done) {\n        if ((this.viewing || this.zooming) && this.options.transition) {\n          var onTransitionEnd = function onTransitionEnd() {\n            _this3.imageRendering = false;\n            done();\n          };\n\n          this.imageRendering = {\n            abort: function abort() {\n              removeListener(image, EVENT_TRANSITION_END, onTransitionEnd);\n            }\n          };\n          addListener(image, EVENT_TRANSITION_END, onTransitionEnd, {\n            once: true\n          });\n        } else {\n          done();\n        }\n      }\n    },\n    resetImage: function resetImage() {\n      // this.image only defined after viewed\n      if (this.viewing || this.viewed) {\n        var image = this.image;\n\n        if (this.viewing) {\n          this.viewing.abort();\n        }\n\n        image.parentNode.removeChild(image);\n        this.image = null;\n      }\n    }\n  };\n\n  var events = {\n    bind: function bind() {\n      var options = this.options,\n          viewer = this.viewer,\n          canvas = this.canvas;\n      var document = this.element.ownerDocument;\n      addListener(viewer, EVENT_CLICK, this.onClick = this.click.bind(this));\n      addListener(viewer, EVENT_DRAG_START, this.onDragStart = this.dragstart.bind(this));\n      addListener(canvas, EVENT_POINTER_DOWN, this.onPointerDown = this.pointerdown.bind(this));\n      addListener(document, EVENT_POINTER_MOVE, this.onPointerMove = this.pointermove.bind(this));\n      addListener(document, EVENT_POINTER_UP, this.onPointerUp = this.pointerup.bind(this));\n      addListener(document, EVENT_KEY_DOWN, this.onKeyDown = this.keydown.bind(this));\n      addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\n\n      if (options.zoomable && options.zoomOnWheel) {\n        addListener(viewer, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\n          passive: false,\n          capture: true\n        });\n      }\n\n      if (options.toggleOnDblclick) {\n        addListener(canvas, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\n      }\n    },\n    unbind: function unbind() {\n      var options = this.options,\n          viewer = this.viewer,\n          canvas = this.canvas;\n      var document = this.element.ownerDocument;\n      removeListener(viewer, EVENT_CLICK, this.onClick);\n      removeListener(viewer, EVENT_DRAG_START, this.onDragStart);\n      removeListener(canvas, EVENT_POINTER_DOWN, this.onPointerDown);\n      removeListener(document, EVENT_POINTER_MOVE, this.onPointerMove);\n      removeListener(document, EVENT_POINTER_UP, this.onPointerUp);\n      removeListener(document, EVENT_KEY_DOWN, this.onKeyDown);\n      removeListener(window, EVENT_RESIZE, this.onResize);\n\n      if (options.zoomable && options.zoomOnWheel) {\n        removeListener(viewer, EVENT_WHEEL, this.onWheel, {\n          passive: false,\n          capture: true\n        });\n      }\n\n      if (options.toggleOnDblclick) {\n        removeListener(canvas, EVENT_DBLCLICK, this.onDblclick);\n      }\n    }\n  };\n\n  var handlers = {\n    click: function click(event) {\n      var target = event.target;\n      var options = this.options,\n          imageData = this.imageData;\n      var action = getData(target, DATA_ACTION); // Cancel the emulated click when the native click event was triggered.\n\n      if (IS_TOUCH_DEVICE && event.isTrusted && target === this.canvas) {\n        clearTimeout(this.clickCanvasTimeout);\n      }\n\n      switch (action) {\n        case 'mix':\n          if (this.played) {\n            this.stop();\n          } else if (options.inline) {\n            if (this.fulled) {\n              this.exit();\n            } else {\n              this.full();\n            }\n          } else {\n            this.hide();\n          }\n\n          break;\n\n        case 'hide':\n          this.hide();\n          break;\n\n        case 'view':\n          this.view(getData(target, 'index'));\n          break;\n\n        case 'zoom-in':\n          this.zoom(0.1, true);\n          break;\n\n        case 'zoom-out':\n          this.zoom(-0.1, true);\n          break;\n\n        case 'one-to-one':\n          this.toggle();\n          break;\n\n        case 'reset':\n          this.reset();\n          break;\n\n        case 'prev':\n          this.prev(options.loop);\n          break;\n\n        case 'play':\n          this.play(options.fullscreen);\n          break;\n\n        case 'next':\n          this.next(options.loop);\n          break;\n\n        case 'rotate-left':\n          this.rotate(-90);\n          break;\n\n        case 'rotate-right':\n          this.rotate(90);\n          break;\n\n        case 'flip-horizontal':\n          this.scaleX(-imageData.scaleX || -1);\n          break;\n\n        case 'flip-vertical':\n          this.scaleY(-imageData.scaleY || -1);\n          break;\n\n        default:\n          if (this.played) {\n            this.stop();\n          }\n\n      }\n    },\n    dblclick: function dblclick(event) {\n      event.preventDefault();\n\n      if (this.viewed && event.target === this.image) {\n        // Cancel the emulated double click when the native dblclick event was triggered.\n        if (IS_TOUCH_DEVICE && event.isTrusted) {\n          clearTimeout(this.doubleClickImageTimeout);\n        }\n\n        this.toggle();\n      }\n    },\n    load: function load() {\n      var _this = this;\n\n      if (this.timeout) {\n        clearTimeout(this.timeout);\n        this.timeout = false;\n      }\n\n      var element = this.element,\n          options = this.options,\n          image = this.image,\n          index = this.index,\n          viewerData = this.viewerData;\n      removeClass(image, CLASS_INVISIBLE);\n\n      if (options.loading) {\n        removeClass(this.canvas, CLASS_LOADING);\n      }\n\n      image.style.cssText = 'height:0;' + \"margin-left:\".concat(viewerData.width / 2, \"px;\") + \"margin-top:\".concat(viewerData.height / 2, \"px;\") + 'max-width:none!important;' + 'position:absolute;' + 'width:0;';\n      this.initImage(function () {\n        toggleClass(image, CLASS_MOVE, options.movable);\n        toggleClass(image, CLASS_TRANSITION, options.transition);\n\n        _this.renderImage(function () {\n          _this.viewed = true;\n          _this.viewing = false;\n\n          if (isFunction(options.viewed)) {\n            addListener(element, EVENT_VIEWED, options.viewed, {\n              once: true\n            });\n          }\n\n          dispatchEvent(element, EVENT_VIEWED, {\n            originalImage: _this.images[index],\n            index: index,\n            image: image\n          }, {\n            cancelable: false\n          });\n        });\n      });\n    },\n    loadImage: function loadImage(event) {\n      var image = event.target;\n      var parent = image.parentNode;\n      var parentWidth = parent.offsetWidth || 30;\n      var parentHeight = parent.offsetHeight || 50;\n      var filled = !!getData(image, 'filled');\n      getImageNaturalSizes(image, this.options, function (naturalWidth, naturalHeight) {\n        var aspectRatio = naturalWidth / naturalHeight;\n        var width = parentWidth;\n        var height = parentHeight;\n\n        if (parentHeight * aspectRatio > parentWidth) {\n          if (filled) {\n            width = parentHeight * aspectRatio;\n          } else {\n            height = parentWidth / aspectRatio;\n          }\n        } else if (filled) {\n          height = parentWidth / aspectRatio;\n        } else {\n          width = parentHeight * aspectRatio;\n        }\n\n        setStyle(image, assign({\n          width: width,\n          height: height\n        }, getTransforms({\n          translateX: (parentWidth - width) / 2,\n          translateY: (parentHeight - height) / 2\n        })));\n      });\n    },\n    keydown: function keydown(event) {\n      var options = this.options;\n\n      if (!this.fulled || !options.keyboard) {\n        return;\n      }\n\n      switch (event.keyCode || event.which || event.charCode) {\n        // Escape\n        case 27:\n          if (this.played) {\n            this.stop();\n          } else if (options.inline) {\n            if (this.fulled) {\n              this.exit();\n            }\n          } else {\n            this.hide();\n          }\n\n          break;\n        // Space\n\n        case 32:\n          if (this.played) {\n            this.stop();\n          }\n\n          break;\n        // ArrowLeft\n\n        case 37:\n          this.prev(options.loop);\n          break;\n        // ArrowUp\n\n        case 38:\n          // Prevent scroll on Firefox\n          event.preventDefault(); // Zoom in\n\n          this.zoom(options.zoomRatio, true);\n          break;\n        // ArrowRight\n\n        case 39:\n          this.next(options.loop);\n          break;\n        // ArrowDown\n\n        case 40:\n          // Prevent scroll on Firefox\n          event.preventDefault(); // Zoom out\n\n          this.zoom(-options.zoomRatio, true);\n          break;\n        // Ctrl + 0\n\n        case 48: // Fall through\n        // Ctrl + 1\n        // eslint-disable-next-line no-fallthrough\n\n        case 49:\n          if (event.ctrlKey) {\n            event.preventDefault();\n            this.toggle();\n          }\n\n          break;\n      }\n    },\n    dragstart: function dragstart(event) {\n      if (event.target.tagName.toLowerCase() === 'img') {\n        event.preventDefault();\n      }\n    },\n    pointerdown: function pointerdown(event) {\n      var options = this.options,\n          pointers = this.pointers;\n      var buttons = event.buttons,\n          button = event.button;\n\n      if (!this.viewed || this.showing || this.viewing || this.hiding // Handle mouse event and pointer event and ignore touch event\n      || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && ( // No primary button (Usually the left button)\n      isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0 // Open context menu\n      || event.ctrlKey)) {\n        return;\n      } // Prevent default behaviours as page zooming in touch devices.\n\n\n      event.preventDefault();\n\n      if (event.changedTouches) {\n        forEach(event.changedTouches, function (touch) {\n          pointers[touch.identifier] = getPointer(touch);\n        });\n      } else {\n        pointers[event.pointerId || 0] = getPointer(event);\n      }\n\n      var action = options.movable ? ACTION_MOVE : false;\n\n      if (options.zoomOnTouch && options.zoomable && Object.keys(pointers).length > 1) {\n        action = ACTION_ZOOM;\n      } else if (options.slideOnTouch && (event.pointerType === 'touch' || event.type === 'touchstart') && this.isSwitchable()) {\n        action = ACTION_SWITCH;\n      }\n\n      if (options.transition && (action === ACTION_MOVE || action === ACTION_ZOOM)) {\n        removeClass(this.image, CLASS_TRANSITION);\n      }\n\n      this.action = action;\n    },\n    pointermove: function pointermove(event) {\n      var pointers = this.pointers,\n          action = this.action;\n\n      if (!this.viewed || !action) {\n        return;\n      }\n\n      event.preventDefault();\n\n      if (event.changedTouches) {\n        forEach(event.changedTouches, function (touch) {\n          assign(pointers[touch.identifier] || {}, getPointer(touch, true));\n        });\n      } else {\n        assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\n      }\n\n      this.change(event);\n    },\n    pointerup: function pointerup(event) {\n      var _this2 = this;\n\n      var options = this.options,\n          action = this.action,\n          pointers = this.pointers;\n      var pointer;\n\n      if (event.changedTouches) {\n        forEach(event.changedTouches, function (touch) {\n          pointer = pointers[touch.identifier];\n          delete pointers[touch.identifier];\n        });\n      } else {\n        pointer = pointers[event.pointerId || 0];\n        delete pointers[event.pointerId || 0];\n      }\n\n      if (!action) {\n        return;\n      }\n\n      event.preventDefault();\n\n      if (options.transition && (action === ACTION_MOVE || action === ACTION_ZOOM)) {\n        addClass(this.image, CLASS_TRANSITION);\n      }\n\n      this.action = false; // Emulate click and double click in touch devices to support backdrop and image zooming (#210).\n\n      if (IS_TOUCH_DEVICE && action !== ACTION_ZOOM && pointer && Date.now() - pointer.timeStamp < 500) {\n        clearTimeout(this.clickCanvasTimeout);\n        clearTimeout(this.doubleClickImageTimeout);\n\n        if (options.toggleOnDblclick && this.viewed && event.target === this.image) {\n          if (this.imageClicked) {\n            this.imageClicked = false; // This timeout will be cleared later when a native dblclick event is triggering\n\n            this.doubleClickImageTimeout = setTimeout(function () {\n              dispatchEvent(_this2.image, EVENT_DBLCLICK);\n            }, 50);\n          } else {\n            this.imageClicked = true; // The default timing of a double click in Windows is 500 ms\n\n            this.doubleClickImageTimeout = setTimeout(function () {\n              _this2.imageClicked = false;\n            }, 500);\n          }\n        } else {\n          this.imageClicked = false;\n\n          if (options.backdrop && options.backdrop !== 'static' && event.target === this.canvas) {\n            // This timeout will be cleared later when a native click event is triggering\n            this.clickCanvasTimeout = setTimeout(function () {\n              dispatchEvent(_this2.canvas, EVENT_CLICK);\n            }, 50);\n          }\n        }\n      }\n    },\n    resize: function resize() {\n      var _this3 = this;\n\n      if (!this.isShown || this.hiding) {\n        return;\n      }\n\n      if (this.fulled) {\n        this.close();\n        this.initBody();\n        this.open();\n      }\n\n      this.initContainer();\n      this.initViewer();\n      this.renderViewer();\n      this.renderList();\n\n      if (this.viewed) {\n        this.initImage(function () {\n          _this3.renderImage();\n        });\n      }\n\n      if (this.played) {\n        if (this.options.fullscreen && this.fulled && !(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement)) {\n          this.stop();\n          return;\n        }\n\n        forEach(this.player.getElementsByTagName('img'), function (image) {\n          addListener(image, EVENT_LOAD, _this3.loadImage.bind(_this3), {\n            once: true\n          });\n          dispatchEvent(image, EVENT_LOAD);\n        });\n      }\n    },\n    wheel: function wheel(event) {\n      var _this4 = this;\n\n      if (!this.viewed) {\n        return;\n      }\n\n      event.preventDefault(); // Limit wheel speed to prevent zoom too fast\n\n      if (this.wheeling) {\n        return;\n      }\n\n      this.wheeling = true;\n      setTimeout(function () {\n        _this4.wheeling = false;\n      }, 50);\n      var ratio = Number(this.options.zoomRatio) || 0.1;\n      var delta = 1;\n\n      if (event.deltaY) {\n        delta = event.deltaY > 0 ? 1 : -1;\n      } else if (event.wheelDelta) {\n        delta = -event.wheelDelta / 120;\n      } else if (event.detail) {\n        delta = event.detail > 0 ? 1 : -1;\n      }\n\n      this.zoom(-delta * ratio, true, event);\n    }\n  };\n\n  var methods = {\n    /** Show the viewer (only available in modal mode)\n     * @param {boolean} [immediate=false] - Indicates if show the viewer immediately or not.\n     * @returns {Viewer} this\n     */\n    show: function show() {\n      var immediate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var element = this.element,\n          options = this.options;\n\n      if (options.inline || this.showing || this.isShown || this.showing) {\n        return this;\n      }\n\n      if (!this.ready) {\n        this.build();\n\n        if (this.ready) {\n          this.show(immediate);\n        }\n\n        return this;\n      }\n\n      if (isFunction(options.show)) {\n        addListener(element, EVENT_SHOW, options.show, {\n          once: true\n        });\n      }\n\n      if (dispatchEvent(element, EVENT_SHOW) === false || !this.ready) {\n        return this;\n      }\n\n      if (this.hiding) {\n        this.transitioning.abort();\n      }\n\n      this.showing = true;\n      this.open();\n      var viewer = this.viewer;\n      removeClass(viewer, CLASS_HIDE);\n\n      if (options.transition && !immediate) {\n        var shown = this.shown.bind(this);\n        this.transitioning = {\n          abort: function abort() {\n            removeListener(viewer, EVENT_TRANSITION_END, shown);\n            removeClass(viewer, CLASS_IN);\n          }\n        };\n        addClass(viewer, CLASS_TRANSITION); // Force reflow to enable CSS3 transition\n\n        viewer.initialOffsetWidth = viewer.offsetWidth;\n        addListener(viewer, EVENT_TRANSITION_END, shown, {\n          once: true\n        });\n        addClass(viewer, CLASS_IN);\n      } else {\n        addClass(viewer, CLASS_IN);\n        this.shown();\n      }\n\n      return this;\n    },\n\n    /**\n     * Hide the viewer (only available in modal mode)\n     * @param {boolean} [immediate=false] - Indicates if hide the viewer immediately or not.\n     * @returns {Viewer} this\n     */\n    hide: function hide() {\n      var _this = this;\n\n      var immediate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var element = this.element,\n          options = this.options;\n\n      if (options.inline || this.hiding || !(this.isShown || this.showing)) {\n        return this;\n      }\n\n      if (isFunction(options.hide)) {\n        addListener(element, EVENT_HIDE, options.hide, {\n          once: true\n        });\n      }\n\n      if (dispatchEvent(element, EVENT_HIDE) === false) {\n        return this;\n      }\n\n      if (this.showing) {\n        this.transitioning.abort();\n      }\n\n      this.hiding = true;\n\n      if (this.played) {\n        this.stop();\n      } else if (this.viewing) {\n        this.viewing.abort();\n      }\n\n      var viewer = this.viewer,\n          image = this.image;\n\n      var hideImmediately = function hideImmediately() {\n        removeClass(viewer, CLASS_IN);\n\n        _this.hidden();\n      };\n\n      if (options.transition && !immediate) {\n        var onViewerTransitionEnd = function onViewerTransitionEnd(event) {\n          // Ignore all propagating `transitionend` events (#275).\n          if (event && event.target === viewer) {\n            removeListener(viewer, EVENT_TRANSITION_END, onViewerTransitionEnd);\n\n            _this.hidden();\n          }\n        };\n\n        var onImageTransitionEnd = function onImageTransitionEnd() {\n          // In case of show the viewer by `viewer.show(true)` previously (#407).\n          if (hasClass(viewer, CLASS_TRANSITION)) {\n            addListener(viewer, EVENT_TRANSITION_END, onViewerTransitionEnd);\n            removeClass(viewer, CLASS_IN);\n          } else {\n            hideImmediately();\n          }\n        };\n\n        this.transitioning = {\n          abort: function abort() {\n            if (_this.viewed && hasClass(image, CLASS_TRANSITION)) {\n              removeListener(image, EVENT_TRANSITION_END, onImageTransitionEnd);\n            } else if (hasClass(viewer, CLASS_TRANSITION)) {\n              removeListener(viewer, EVENT_TRANSITION_END, onViewerTransitionEnd);\n            }\n          }\n        }; // In case of hiding the viewer when holding on the image (#255),\n        // note that the `CLASS_TRANSITION` class will be removed on pointer down.\n\n        if (this.viewed && hasClass(image, CLASS_TRANSITION)) {\n          addListener(image, EVENT_TRANSITION_END, onImageTransitionEnd, {\n            once: true\n          });\n          this.zoomTo(0, false, false, true);\n        } else {\n          onImageTransitionEnd();\n        }\n      } else {\n        hideImmediately();\n      }\n\n      return this;\n    },\n\n    /**\n     * View one of the images with image's index\n     * @param {number} index - The index of the image to view.\n     * @returns {Viewer} this\n     */\n    view: function view() {\n      var _this2 = this;\n\n      var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.options.initialViewIndex;\n      index = Number(index) || 0;\n\n      if (this.hiding || this.played || index < 0 || index >= this.length || this.viewed && index === this.index) {\n        return this;\n      }\n\n      if (!this.isShown) {\n        this.index = index;\n        return this.show();\n      }\n\n      if (this.viewing) {\n        this.viewing.abort();\n      }\n\n      var element = this.element,\n          options = this.options,\n          title = this.title,\n          canvas = this.canvas;\n      var item = this.items[index];\n      var img = item.querySelector('img');\n      var url = getData(img, 'originalUrl');\n      var alt = img.getAttribute('alt');\n      var image = document.createElement('img');\n      forEach(options.inheritedAttributes, function (name) {\n        var value = img.getAttribute(name);\n\n        if (value !== null) {\n          image.setAttribute(name, value);\n        }\n      });\n      image.src = url;\n      image.alt = alt;\n\n      if (isFunction(options.view)) {\n        addListener(element, EVENT_VIEW, options.view, {\n          once: true\n        });\n      }\n\n      if (dispatchEvent(element, EVENT_VIEW, {\n        originalImage: this.images[index],\n        index: index,\n        image: image\n      }) === false || !this.isShown || this.hiding || this.played) {\n        return this;\n      }\n\n      this.image = image;\n      removeClass(this.items[this.index], CLASS_ACTIVE);\n      addClass(item, CLASS_ACTIVE);\n      this.viewed = false;\n      this.index = index;\n      this.imageData = {};\n      addClass(image, CLASS_INVISIBLE);\n\n      if (options.loading) {\n        addClass(canvas, CLASS_LOADING);\n      }\n\n      canvas.innerHTML = '';\n      canvas.appendChild(image); // Center current item\n\n      this.renderList(); // Clear title\n\n      title.innerHTML = ''; // Generate title after viewed\n\n      var onViewed = function onViewed() {\n        var imageData = _this2.imageData;\n        var render = Array.isArray(options.title) ? options.title[1] : options.title;\n        title.innerHTML = escapeHTMLEntities(isFunction(render) ? render.call(_this2, image, imageData) : \"\".concat(alt, \" (\").concat(imageData.naturalWidth, \" \\xD7 \").concat(imageData.naturalHeight, \")\"));\n      };\n\n      var onLoad;\n      addListener(element, EVENT_VIEWED, onViewed, {\n        once: true\n      });\n      this.viewing = {\n        abort: function abort() {\n          removeListener(element, EVENT_VIEWED, onViewed);\n\n          if (image.complete) {\n            if (_this2.imageRendering) {\n              _this2.imageRendering.abort();\n            } else if (_this2.imageInitializing) {\n              _this2.imageInitializing.abort();\n            }\n          } else {\n            // Cancel download to save bandwidth.\n            image.src = '';\n            removeListener(image, EVENT_LOAD, onLoad);\n\n            if (_this2.timeout) {\n              clearTimeout(_this2.timeout);\n            }\n          }\n        }\n      };\n\n      if (image.complete) {\n        this.load();\n      } else {\n        addListener(image, EVENT_LOAD, onLoad = this.load.bind(this), {\n          once: true\n        });\n\n        if (this.timeout) {\n          clearTimeout(this.timeout);\n        } // Make the image visible if it fails to load within 1s\n\n\n        this.timeout = setTimeout(function () {\n          removeClass(image, CLASS_INVISIBLE);\n          _this2.timeout = false;\n        }, 1000);\n      }\n\n      return this;\n    },\n\n    /**\n     * View the previous image\n     * @param {boolean} [loop=false] - Indicate if view the last one\n     * when it is the first one at present.\n     * @returns {Viewer} this\n     */\n    prev: function prev() {\n      var loop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var index = this.index - 1;\n\n      if (index < 0) {\n        index = loop ? this.length - 1 : 0;\n      }\n\n      this.view(index);\n      return this;\n    },\n\n    /**\n     * View the next image\n     * @param {boolean} [loop=false] - Indicate if view the first one\n     * when it is the last one at present.\n     * @returns {Viewer} this\n     */\n    next: function next() {\n      var loop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      var maxIndex = this.length - 1;\n      var index = this.index + 1;\n\n      if (index > maxIndex) {\n        index = loop ? 0 : maxIndex;\n      }\n\n      this.view(index);\n      return this;\n    },\n\n    /**\n     * Move the image with relative offsets.\n     * @param {number} offsetX - The relative offset distance on the x-axis.\n     * @param {number} offsetY - The relative offset distance on the y-axis.\n     * @returns {Viewer} this\n     */\n    move: function move(offsetX, offsetY) {\n      var imageData = this.imageData;\n      this.moveTo(isUndefined(offsetX) ? offsetX : imageData.left + Number(offsetX), isUndefined(offsetY) ? offsetY : imageData.top + Number(offsetY));\n      return this;\n    },\n\n    /**\n     * Move the image to an absolute point.\n     * @param {number} x - The x-axis coordinate.\n     * @param {number} [y=x] - The y-axis coordinate.\n     * @returns {Viewer} this\n     */\n    moveTo: function moveTo(x) {\n      var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n      var imageData = this.imageData;\n      x = Number(x);\n      y = Number(y);\n\n      if (this.viewed && !this.played && this.options.movable) {\n        var changed = false;\n\n        if (isNumber(x)) {\n          imageData.left = x;\n          changed = true;\n        }\n\n        if (isNumber(y)) {\n          imageData.top = y;\n          changed = true;\n        }\n\n        if (changed) {\n          this.renderImage();\n        }\n      }\n\n      return this;\n    },\n\n    /**\n     * Zoom the image with a relative ratio.\n     * @param {number} ratio - The target ratio.\n     * @param {boolean} [hasTooltip=false] - Indicates if it has a tooltip or not.\n     * @param {Event} [_originalEvent=null] - The original event if any.\n     * @returns {Viewer} this\n     */\n    zoom: function zoom(ratio) {\n      var hasTooltip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var _originalEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n      var imageData = this.imageData;\n      ratio = Number(ratio);\n\n      if (ratio < 0) {\n        ratio = 1 / (1 - ratio);\n      } else {\n        ratio = 1 + ratio;\n      }\n\n      this.zoomTo(imageData.width * ratio / imageData.naturalWidth, hasTooltip, _originalEvent);\n      return this;\n    },\n\n    /**\n     * Zoom the image to an absolute ratio.\n     * @param {number} ratio - The target ratio.\n     * @param {boolean} [hasTooltip=false] - Indicates if it has a tooltip or not.\n     * @param {Event} [_originalEvent=null] - The original event if any.\n     * @param {Event} [_zoomable=false] - Indicates if the current zoom is available or not.\n     * @returns {Viewer} this\n     */\n    zoomTo: function zoomTo(ratio) {\n      var _this3 = this;\n\n      var hasTooltip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      var _originalEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n      var _zoomable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n      var element = this.element,\n          options = this.options,\n          pointers = this.pointers,\n          imageData = this.imageData;\n      var width = imageData.width,\n          height = imageData.height,\n          left = imageData.left,\n          top = imageData.top,\n          naturalWidth = imageData.naturalWidth,\n          naturalHeight = imageData.naturalHeight;\n      ratio = Math.max(0, ratio);\n\n      if (isNumber(ratio) && this.viewed && !this.played && (_zoomable || options.zoomable)) {\n        if (!_zoomable) {\n          var minZoomRatio = Math.max(0.01, options.minZoomRatio);\n          var maxZoomRatio = Math.min(100, options.maxZoomRatio);\n          ratio = Math.min(Math.max(ratio, minZoomRatio), maxZoomRatio);\n        }\n\n        if (_originalEvent && options.zoomRatio >= 0.055 && ratio > 0.95 && ratio < 1.05) {\n          ratio = 1;\n        }\n\n        var newWidth = naturalWidth * ratio;\n        var newHeight = naturalHeight * ratio;\n        var offsetWidth = newWidth - width;\n        var offsetHeight = newHeight - height;\n        var oldRatio = width / naturalWidth;\n\n        if (isFunction(options.zoom)) {\n          addListener(element, EVENT_ZOOM, options.zoom, {\n            once: true\n          });\n        }\n\n        if (dispatchEvent(element, EVENT_ZOOM, {\n          ratio: ratio,\n          oldRatio: oldRatio,\n          originalEvent: _originalEvent\n        }) === false) {\n          return this;\n        }\n\n        this.zooming = true;\n\n        if (_originalEvent) {\n          var offset = getOffset(this.viewer);\n          var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {\n            pageX: _originalEvent.pageX,\n            pageY: _originalEvent.pageY\n          }; // Zoom from the triggering point of the event\n\n          imageData.left -= offsetWidth * ((center.pageX - offset.left - left) / width);\n          imageData.top -= offsetHeight * ((center.pageY - offset.top - top) / height);\n        } else {\n          // Zoom from the center of the image\n          imageData.left -= offsetWidth / 2;\n          imageData.top -= offsetHeight / 2;\n        }\n\n        imageData.width = newWidth;\n        imageData.height = newHeight;\n        imageData.ratio = ratio;\n        this.renderImage(function () {\n          _this3.zooming = false;\n\n          if (isFunction(options.zoomed)) {\n            addListener(element, EVENT_ZOOMED, options.zoomed, {\n              once: true\n            });\n          }\n\n          dispatchEvent(element, EVENT_ZOOMED, {\n            ratio: ratio,\n            oldRatio: oldRatio,\n            originalEvent: _originalEvent\n          }, {\n            cancelable: false\n          });\n        });\n\n        if (hasTooltip) {\n          this.tooltip();\n        }\n      }\n\n      return this;\n    },\n\n    /**\n     * Rotate the image with a relative degree.\n     * @param {number} degree - The rotate degree.\n     * @returns {Viewer} this\n     */\n    rotate: function rotate(degree) {\n      this.rotateTo((this.imageData.rotate || 0) + Number(degree));\n      return this;\n    },\n\n    /**\n     * Rotate the image to an absolute degree.\n     * @param {number} degree - The rotate degree.\n     * @returns {Viewer} this\n     */\n    rotateTo: function rotateTo(degree) {\n      var imageData = this.imageData;\n      degree = Number(degree);\n\n      if (isNumber(degree) && this.viewed && !this.played && this.options.rotatable) {\n        imageData.rotate = degree;\n        this.renderImage();\n      }\n\n      return this;\n    },\n\n    /**\n     * Scale the image on the x-axis.\n     * @param {number} scaleX - The scale ratio on the x-axis.\n     * @returns {Viewer} this\n     */\n    scaleX: function scaleX(_scaleX) {\n      this.scale(_scaleX, this.imageData.scaleY);\n      return this;\n    },\n\n    /**\n     * Scale the image on the y-axis.\n     * @param {number} scaleY - The scale ratio on the y-axis.\n     * @returns {Viewer} this\n     */\n    scaleY: function scaleY(_scaleY) {\n      this.scale(this.imageData.scaleX, _scaleY);\n      return this;\n    },\n\n    /**\n     * Scale the image.\n     * @param {number} scaleX - The scale ratio on the x-axis.\n     * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\n     * @returns {Viewer} this\n     */\n    scale: function scale(scaleX) {\n      var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n      var imageData = this.imageData;\n      scaleX = Number(scaleX);\n      scaleY = Number(scaleY);\n\n      if (this.viewed && !this.played && this.options.scalable) {\n        var changed = false;\n\n        if (isNumber(scaleX)) {\n          imageData.scaleX = scaleX;\n          changed = true;\n        }\n\n        if (isNumber(scaleY)) {\n          imageData.scaleY = scaleY;\n          changed = true;\n        }\n\n        if (changed) {\n          this.renderImage();\n        }\n      }\n\n      return this;\n    },\n\n    /**\n     * Play the images\n     * @param {boolean} [fullscreen=false] - Indicate if request fullscreen or not.\n     * @returns {Viewer} this\n     */\n    play: function play() {\n      var _this4 = this;\n\n      var fullscreen = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (!this.isShown || this.played) {\n        return this;\n      }\n\n      var element = this.element,\n          options = this.options;\n\n      if (isFunction(options.play)) {\n        addListener(element, EVENT_PLAY, options.play, {\n          once: true\n        });\n      }\n\n      if (dispatchEvent(element, EVENT_PLAY) === false) {\n        return this;\n      }\n\n      var player = this.player;\n      var onLoad = this.loadImage.bind(this);\n      var list = [];\n      var total = 0;\n      var index = 0;\n      this.played = true;\n      this.onLoadWhenPlay = onLoad;\n\n      if (fullscreen) {\n        this.requestFullscreen();\n      }\n\n      addClass(player, CLASS_SHOW);\n      forEach(this.items, function (item, i) {\n        var img = item.querySelector('img');\n        var image = document.createElement('img');\n        image.src = getData(img, 'originalUrl');\n        image.alt = img.getAttribute('alt');\n        image.referrerPolicy = img.referrerPolicy;\n        total += 1;\n        addClass(image, CLASS_FADE);\n        toggleClass(image, CLASS_TRANSITION, options.transition);\n\n        if (hasClass(item, CLASS_ACTIVE)) {\n          addClass(image, CLASS_IN);\n          index = i;\n        }\n\n        list.push(image);\n        addListener(image, EVENT_LOAD, onLoad, {\n          once: true\n        });\n        player.appendChild(image);\n      });\n\n      if (isNumber(options.interval) && options.interval > 0) {\n        var play = function play() {\n          _this4.playing = setTimeout(function () {\n            removeClass(list[index], CLASS_IN);\n            index += 1;\n            index = index < total ? index : 0;\n            addClass(list[index], CLASS_IN);\n            play();\n          }, options.interval);\n        };\n\n        if (total > 1) {\n          play();\n        }\n      }\n\n      return this;\n    },\n    // Stop play\n    stop: function stop() {\n      var _this5 = this;\n\n      if (!this.played) {\n        return this;\n      }\n\n      var element = this.element,\n          options = this.options;\n\n      if (isFunction(options.stop)) {\n        addListener(element, EVENT_STOP, options.stop, {\n          once: true\n        });\n      }\n\n      if (dispatchEvent(element, EVENT_STOP) === false) {\n        return this;\n      }\n\n      var player = this.player;\n      this.played = false;\n      clearTimeout(this.playing);\n      forEach(player.getElementsByTagName('img'), function (image) {\n        removeListener(image, EVENT_LOAD, _this5.onLoadWhenPlay);\n      });\n      removeClass(player, CLASS_SHOW);\n      player.innerHTML = '';\n      this.exitFullscreen();\n      return this;\n    },\n    // Enter modal mode (only available in inline mode)\n    full: function full() {\n      var _this6 = this;\n\n      var options = this.options,\n          viewer = this.viewer,\n          image = this.image,\n          list = this.list;\n\n      if (!this.isShown || this.played || this.fulled || !options.inline) {\n        return this;\n      }\n\n      this.fulled = true;\n      this.open();\n      addClass(this.button, CLASS_FULLSCREEN_EXIT);\n\n      if (options.transition) {\n        removeClass(list, CLASS_TRANSITION);\n\n        if (this.viewed) {\n          removeClass(image, CLASS_TRANSITION);\n        }\n      }\n\n      addClass(viewer, CLASS_FIXED);\n      viewer.setAttribute('style', '');\n      setStyle(viewer, {\n        zIndex: options.zIndex\n      });\n      this.initContainer();\n      this.viewerData = assign({}, this.containerData);\n      this.renderList();\n\n      if (this.viewed) {\n        this.initImage(function () {\n          _this6.renderImage(function () {\n            if (options.transition) {\n              setTimeout(function () {\n                addClass(image, CLASS_TRANSITION);\n                addClass(list, CLASS_TRANSITION);\n              }, 0);\n            }\n          });\n        });\n      }\n\n      return this;\n    },\n    // Exit modal mode (only available in inline mode)\n    exit: function exit() {\n      var _this7 = this;\n\n      var options = this.options,\n          viewer = this.viewer,\n          image = this.image,\n          list = this.list;\n\n      if (!this.isShown || this.played || !this.fulled || !options.inline) {\n        return this;\n      }\n\n      this.fulled = false;\n      this.close();\n      removeClass(this.button, CLASS_FULLSCREEN_EXIT);\n\n      if (options.transition) {\n        removeClass(list, CLASS_TRANSITION);\n\n        if (this.viewed) {\n          removeClass(image, CLASS_TRANSITION);\n        }\n      }\n\n      removeClass(viewer, CLASS_FIXED);\n      setStyle(viewer, {\n        zIndex: options.zIndexInline\n      });\n      this.viewerData = assign({}, this.parentData);\n      this.renderViewer();\n      this.renderList();\n\n      if (this.viewed) {\n        this.initImage(function () {\n          _this7.renderImage(function () {\n            if (options.transition) {\n              setTimeout(function () {\n                addClass(image, CLASS_TRANSITION);\n                addClass(list, CLASS_TRANSITION);\n              }, 0);\n            }\n          });\n        });\n      }\n\n      return this;\n    },\n    // Show the current ratio of the image with percentage\n    tooltip: function tooltip() {\n      var _this8 = this;\n\n      var options = this.options,\n          tooltipBox = this.tooltipBox,\n          imageData = this.imageData;\n\n      if (!this.viewed || this.played || !options.tooltip) {\n        return this;\n      }\n\n      tooltipBox.textContent = \"\".concat(Math.round(imageData.ratio * 100), \"%\");\n\n      if (!this.tooltipping) {\n        if (options.transition) {\n          if (this.fading) {\n            dispatchEvent(tooltipBox, EVENT_TRANSITION_END);\n          }\n\n          addClass(tooltipBox, CLASS_SHOW);\n          addClass(tooltipBox, CLASS_FADE);\n          addClass(tooltipBox, CLASS_TRANSITION); // Force reflow to enable CSS3 transition\n\n          tooltipBox.initialOffsetWidth = tooltipBox.offsetWidth;\n          addClass(tooltipBox, CLASS_IN);\n        } else {\n          addClass(tooltipBox, CLASS_SHOW);\n        }\n      } else {\n        clearTimeout(this.tooltipping);\n      }\n\n      this.tooltipping = setTimeout(function () {\n        if (options.transition) {\n          addListener(tooltipBox, EVENT_TRANSITION_END, function () {\n            removeClass(tooltipBox, CLASS_SHOW);\n            removeClass(tooltipBox, CLASS_FADE);\n            removeClass(tooltipBox, CLASS_TRANSITION);\n            _this8.fading = false;\n          }, {\n            once: true\n          });\n          removeClass(tooltipBox, CLASS_IN);\n          _this8.fading = true;\n        } else {\n          removeClass(tooltipBox, CLASS_SHOW);\n        }\n\n        _this8.tooltipping = false;\n      }, 1000);\n      return this;\n    },\n    // Toggle the image size between its natural size and initial size\n    toggle: function toggle() {\n      if (this.imageData.ratio === 1) {\n        this.zoomTo(this.initialImageData.ratio, true);\n      } else {\n        this.zoomTo(1, true);\n      }\n\n      return this;\n    },\n    // Reset the image to its initial state\n    reset: function reset() {\n      if (this.viewed && !this.played) {\n        this.imageData = assign({}, this.initialImageData);\n        this.renderImage();\n      }\n\n      return this;\n    },\n    // Update viewer when images changed\n    update: function update() {\n      var _this9 = this;\n\n      var element = this.element,\n          options = this.options,\n          isImg = this.isImg; // Destroy viewer if the target image was deleted\n\n      if (isImg && !element.parentNode) {\n        return this.destroy();\n      }\n\n      var images = [];\n      forEach(isImg ? [element] : element.querySelectorAll('img'), function (image) {\n        if (isFunction(options.filter)) {\n          if (options.filter.call(_this9, image)) {\n            images.push(image);\n          }\n        } else if (_this9.getImageURL(image)) {\n          images.push(image);\n        }\n      });\n\n      if (!images.length) {\n        return this;\n      }\n\n      this.images = images;\n      this.length = images.length;\n\n      if (this.ready) {\n        var changedIndexes = [];\n        forEach(this.items, function (item, i) {\n          var img = item.querySelector('img');\n          var image = images[i];\n\n          if (image && img) {\n            if (image.src !== img.src // Title changed (#408)\n            || image.alt !== img.alt) {\n              changedIndexes.push(i);\n            }\n          } else {\n            changedIndexes.push(i);\n          }\n        });\n        setStyle(this.list, {\n          width: 'auto'\n        });\n        this.initList();\n\n        if (this.isShown) {\n          if (this.length) {\n            if (this.viewed) {\n              var changedIndex = changedIndexes.indexOf(this.index);\n\n              if (changedIndex >= 0) {\n                this.viewed = false;\n                this.view(Math.max(Math.min(this.index - changedIndex, this.length - 1), 0));\n              } else {\n                // Reactivate the current viewing item after reset the list.\n                addClass(this.items[this.index], CLASS_ACTIVE);\n              }\n            }\n          } else {\n            this.image = null;\n            this.viewed = false;\n            this.index = 0;\n            this.imageData = {};\n            this.canvas.innerHTML = '';\n            this.title.innerHTML = '';\n          }\n        }\n      } else {\n        this.build();\n      }\n\n      return this;\n    },\n    // Destroy the viewer\n    destroy: function destroy() {\n      var element = this.element,\n          options = this.options;\n\n      if (!element[NAMESPACE]) {\n        return this;\n      }\n\n      this.destroyed = true;\n\n      if (this.ready) {\n        if (this.played) {\n          this.stop();\n        }\n\n        if (options.inline) {\n          if (this.fulled) {\n            this.exit();\n          }\n\n          this.unbind();\n        } else if (this.isShown) {\n          if (this.viewing) {\n            if (this.imageRendering) {\n              this.imageRendering.abort();\n            } else if (this.imageInitializing) {\n              this.imageInitializing.abort();\n            }\n          }\n\n          if (this.hiding) {\n            this.transitioning.abort();\n          }\n\n          this.hidden();\n        } else if (this.showing) {\n          this.transitioning.abort();\n          this.hidden();\n        }\n\n        this.ready = false;\n        this.viewer.parentNode.removeChild(this.viewer);\n      } else if (options.inline) {\n        if (this.delaying) {\n          this.delaying.abort();\n        } else if (this.initializing) {\n          this.initializing.abort();\n        }\n      }\n\n      if (!options.inline) {\n        removeListener(element, EVENT_CLICK, this.onStart);\n      }\n\n      element[NAMESPACE] = undefined;\n      return this;\n    }\n  };\n\n  var others = {\n    getImageURL: function getImageURL(image) {\n      var url = this.options.url;\n\n      if (isString(url)) {\n        url = image.getAttribute(url);\n      } else if (isFunction(url)) {\n        url = url.call(this, image);\n      } else {\n        url = '';\n      }\n\n      return url;\n    },\n    open: function open() {\n      var body = this.body;\n      addClass(body, CLASS_OPEN);\n      body.style.paddingRight = \"\".concat(this.scrollbarWidth + (parseFloat(this.initialBodyComputedPaddingRight) || 0), \"px\");\n    },\n    close: function close() {\n      var body = this.body;\n      removeClass(body, CLASS_OPEN);\n      body.style.paddingRight = this.initialBodyPaddingRight;\n    },\n    shown: function shown() {\n      var element = this.element,\n          options = this.options;\n      this.fulled = true;\n      this.isShown = true;\n      this.render();\n      this.bind();\n      this.showing = false;\n\n      if (isFunction(options.shown)) {\n        addListener(element, EVENT_SHOWN, options.shown, {\n          once: true\n        });\n      }\n\n      if (dispatchEvent(element, EVENT_SHOWN) === false) {\n        return;\n      }\n\n      if (this.ready && this.isShown && !this.hiding) {\n        this.view(this.index);\n      }\n    },\n    hidden: function hidden() {\n      var element = this.element,\n          options = this.options;\n      this.fulled = false;\n      this.viewed = false;\n      this.isShown = false;\n      this.close();\n      this.unbind();\n      addClass(this.viewer, CLASS_HIDE);\n      this.resetList();\n      this.resetImage();\n      this.hiding = false;\n\n      if (!this.destroyed) {\n        if (isFunction(options.hidden)) {\n          addListener(element, EVENT_HIDDEN, options.hidden, {\n            once: true\n          });\n        }\n\n        dispatchEvent(element, EVENT_HIDDEN, null, {\n          cancelable: false\n        });\n      }\n    },\n    requestFullscreen: function requestFullscreen() {\n      var document = this.element.ownerDocument;\n\n      if (this.fulled && !(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement)) {\n        var documentElement = document.documentElement; // Element.requestFullscreen()\n\n        if (documentElement.requestFullscreen) {\n          documentElement.requestFullscreen();\n        } else if (documentElement.webkitRequestFullscreen) {\n          documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n        } else if (documentElement.mozRequestFullScreen) {\n          documentElement.mozRequestFullScreen();\n        } else if (documentElement.msRequestFullscreen) {\n          documentElement.msRequestFullscreen();\n        }\n      }\n    },\n    exitFullscreen: function exitFullscreen() {\n      var document = this.element.ownerDocument;\n\n      if (this.fulled && (document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement)) {\n        // Document.exitFullscreen()\n        if (document.exitFullscreen) {\n          document.exitFullscreen();\n        } else if (document.webkitExitFullscreen) {\n          document.webkitExitFullscreen();\n        } else if (document.mozCancelFullScreen) {\n          document.mozCancelFullScreen();\n        } else if (document.msExitFullscreen) {\n          document.msExitFullscreen();\n        }\n      }\n    },\n    change: function change(event) {\n      var options = this.options,\n          pointers = this.pointers;\n      var pointer = pointers[Object.keys(pointers)[0]];\n      var offsetX = pointer.endX - pointer.startX;\n      var offsetY = pointer.endY - pointer.startY;\n\n      switch (this.action) {\n        // Move the current image\n        case ACTION_MOVE:\n          this.move(offsetX, offsetY);\n          break;\n        // Zoom the current image\n\n        case ACTION_ZOOM:\n          this.zoom(getMaxZoomRatio(pointers), false, event);\n          break;\n\n        case ACTION_SWITCH:\n          {\n            this.action = 'switched';\n            var absoluteOffsetX = Math.abs(offsetX);\n\n            if (absoluteOffsetX > 1 && absoluteOffsetX > Math.abs(offsetY)) {\n              // Empty `pointers` as `touchend` event will not be fired after swiped in iOS browsers.\n              this.pointers = {};\n\n              if (offsetX > 1) {\n                this.prev(options.loop);\n              } else if (offsetX < -1) {\n                this.next(options.loop);\n              }\n            }\n\n            break;\n          }\n      } // Override\n\n\n      forEach(pointers, function (p) {\n        p.startX = p.endX;\n        p.startY = p.endY;\n      });\n    },\n    isSwitchable: function isSwitchable() {\n      var imageData = this.imageData,\n          viewerData = this.viewerData;\n      return this.length > 1 && imageData.left >= 0 && imageData.top >= 0 && imageData.width <= viewerData.width && imageData.height <= viewerData.height;\n    }\n  };\n\n  var AnotherViewer = WINDOW.Viewer;\n\n  var Viewer = /*#__PURE__*/function () {\n    /**\n     * Create a new Viewer.\n     * @param {Element} element - The target element for viewing.\n     * @param {Object} [options={}] - The configuration options.\n     */\n    function Viewer(element) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      _classCallCheck(this, Viewer);\n\n      if (!element || element.nodeType !== 1) {\n        throw new Error('The first argument is required and must be an element.');\n      }\n\n      this.element = element;\n      this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\n      this.action = false;\n      this.fading = false;\n      this.fulled = false;\n      this.hiding = false;\n      this.imageClicked = false;\n      this.imageData = {};\n      this.index = this.options.initialViewIndex;\n      this.isImg = false;\n      this.isShown = false;\n      this.length = 0;\n      this.played = false;\n      this.playing = false;\n      this.pointers = {};\n      this.ready = false;\n      this.showing = false;\n      this.timeout = false;\n      this.tooltipping = false;\n      this.viewed = false;\n      this.viewing = false;\n      this.wheeling = false;\n      this.zooming = false;\n      this.init();\n    }\n\n    _createClass(Viewer, [{\n      key: \"init\",\n      value: function init() {\n        var _this = this;\n\n        var element = this.element,\n            options = this.options;\n\n        if (element[NAMESPACE]) {\n          return;\n        }\n\n        element[NAMESPACE] = this;\n        var isImg = element.tagName.toLowerCase() === 'img';\n        var images = [];\n        forEach(isImg ? [element] : element.querySelectorAll('img'), function (image) {\n          if (isFunction(options.filter)) {\n            if (options.filter.call(_this, image)) {\n              images.push(image);\n            }\n          } else if (_this.getImageURL(image)) {\n            images.push(image);\n          }\n        });\n        this.isImg = isImg;\n        this.length = images.length;\n        this.images = images;\n        this.initBody(); // Override `transition` option if it is not supported\n\n        if (isUndefined(document.createElement(NAMESPACE).style.transition)) {\n          options.transition = false;\n        }\n\n        if (options.inline) {\n          var count = 0;\n\n          var progress = function progress() {\n            count += 1;\n\n            if (count === _this.length) {\n              var timeout;\n              _this.initializing = false;\n              _this.delaying = {\n                abort: function abort() {\n                  clearTimeout(timeout);\n                }\n              }; // build asynchronously to keep `this.viewer` is accessible in `ready` event handler.\n\n              timeout = setTimeout(function () {\n                _this.delaying = false;\n\n                _this.build();\n              }, 0);\n            }\n          };\n\n          this.initializing = {\n            abort: function abort() {\n              forEach(images, function (image) {\n                if (!image.complete) {\n                  removeListener(image, EVENT_LOAD, progress);\n                }\n              });\n            }\n          };\n          forEach(images, function (image) {\n            if (image.complete) {\n              progress();\n            } else {\n              addListener(image, EVENT_LOAD, progress, {\n                once: true\n              });\n            }\n          });\n        } else {\n          addListener(element, EVENT_CLICK, this.onStart = function (_ref) {\n            var target = _ref.target;\n\n            if (target.tagName.toLowerCase() === 'img' && (!isFunction(options.filter) || options.filter.call(_this, target))) {\n              _this.view(_this.images.indexOf(target));\n            }\n          });\n        }\n      }\n    }, {\n      key: \"build\",\n      value: function build() {\n        if (this.ready) {\n          return;\n        }\n\n        var element = this.element,\n            options = this.options;\n        var parent = element.parentNode;\n        var template = document.createElement('div');\n        template.innerHTML = TEMPLATE;\n        var viewer = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\n        var title = viewer.querySelector(\".\".concat(NAMESPACE, \"-title\"));\n        var toolbar = viewer.querySelector(\".\".concat(NAMESPACE, \"-toolbar\"));\n        var navbar = viewer.querySelector(\".\".concat(NAMESPACE, \"-navbar\"));\n        var button = viewer.querySelector(\".\".concat(NAMESPACE, \"-button\"));\n        var canvas = viewer.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\n        this.parent = parent;\n        this.viewer = viewer;\n        this.title = title;\n        this.toolbar = toolbar;\n        this.navbar = navbar;\n        this.button = button;\n        this.canvas = canvas;\n        this.footer = viewer.querySelector(\".\".concat(NAMESPACE, \"-footer\"));\n        this.tooltipBox = viewer.querySelector(\".\".concat(NAMESPACE, \"-tooltip\"));\n        this.player = viewer.querySelector(\".\".concat(NAMESPACE, \"-player\"));\n        this.list = viewer.querySelector(\".\".concat(NAMESPACE, \"-list\"));\n        addClass(title, !options.title ? CLASS_HIDE : getResponsiveClass(Array.isArray(options.title) ? options.title[0] : options.title));\n        addClass(navbar, !options.navbar ? CLASS_HIDE : getResponsiveClass(options.navbar));\n        toggleClass(button, CLASS_HIDE, !options.button);\n\n        if (options.backdrop) {\n          addClass(viewer, \"\".concat(NAMESPACE, \"-backdrop\"));\n\n          if (!options.inline && options.backdrop !== 'static') {\n            setData(canvas, DATA_ACTION, 'hide');\n          }\n        }\n\n        if (isString(options.className) && options.className) {\n          // In case there are multiple class names\n          options.className.split(REGEXP_SPACES).forEach(function (className) {\n            addClass(viewer, className);\n          });\n        }\n\n        if (options.toolbar) {\n          var list = document.createElement('ul');\n          var custom = isPlainObject(options.toolbar);\n          var zoomButtons = BUTTONS.slice(0, 3);\n          var rotateButtons = BUTTONS.slice(7, 9);\n          var scaleButtons = BUTTONS.slice(9);\n\n          if (!custom) {\n            addClass(toolbar, getResponsiveClass(options.toolbar));\n          }\n\n          forEach(custom ? options.toolbar : BUTTONS, function (value, index) {\n            var deep = custom && isPlainObject(value);\n            var name = custom ? hyphenate(index) : value;\n            var show = deep && !isUndefined(value.show) ? value.show : value;\n\n            if (!show || !options.zoomable && zoomButtons.indexOf(name) !== -1 || !options.rotatable && rotateButtons.indexOf(name) !== -1 || !options.scalable && scaleButtons.indexOf(name) !== -1) {\n              return;\n            }\n\n            var size = deep && !isUndefined(value.size) ? value.size : value;\n            var click = deep && !isUndefined(value.click) ? value.click : value;\n            var item = document.createElement('li');\n            item.setAttribute('role', 'button');\n            addClass(item, \"\".concat(NAMESPACE, \"-\").concat(name));\n\n            if (!isFunction(click)) {\n              setData(item, DATA_ACTION, name);\n            }\n\n            if (isNumber(show)) {\n              addClass(item, getResponsiveClass(show));\n            }\n\n            if (['small', 'large'].indexOf(size) !== -1) {\n              addClass(item, \"\".concat(NAMESPACE, \"-\").concat(size));\n            } else if (name === 'play') {\n              addClass(item, \"\".concat(NAMESPACE, \"-large\"));\n            }\n\n            if (isFunction(click)) {\n              addListener(item, EVENT_CLICK, click);\n            }\n\n            list.appendChild(item);\n          });\n          toolbar.appendChild(list);\n        } else {\n          addClass(toolbar, CLASS_HIDE);\n        }\n\n        if (!options.rotatable) {\n          var rotates = toolbar.querySelectorAll('li[class*=\"rotate\"]');\n          addClass(rotates, CLASS_INVISIBLE);\n          forEach(rotates, function (rotate) {\n            toolbar.appendChild(rotate);\n          });\n        }\n\n        if (options.inline) {\n          addClass(button, CLASS_FULLSCREEN);\n          setStyle(viewer, {\n            zIndex: options.zIndexInline\n          });\n\n          if (window.getComputedStyle(parent).position === 'static') {\n            setStyle(parent, {\n              position: 'relative'\n            });\n          }\n\n          parent.insertBefore(viewer, element.nextSibling);\n        } else {\n          addClass(button, CLASS_CLOSE);\n          addClass(viewer, CLASS_FIXED);\n          addClass(viewer, CLASS_FADE);\n          addClass(viewer, CLASS_HIDE);\n          setStyle(viewer, {\n            zIndex: options.zIndex\n          });\n          var container = options.container;\n\n          if (isString(container)) {\n            container = element.ownerDocument.querySelector(container);\n          }\n\n          if (!container) {\n            container = this.body;\n          }\n\n          container.appendChild(viewer);\n        }\n\n        if (options.inline) {\n          this.render();\n          this.bind();\n          this.isShown = true;\n        }\n\n        this.ready = true;\n\n        if (isFunction(options.ready)) {\n          addListener(element, EVENT_READY, options.ready, {\n            once: true\n          });\n        }\n\n        if (dispatchEvent(element, EVENT_READY) === false) {\n          this.ready = false;\n          return;\n        }\n\n        if (this.ready && options.inline) {\n          this.view(this.index);\n        }\n      }\n      /**\n       * Get the no conflict viewer class.\n       * @returns {Viewer} The viewer class.\n       */\n\n    }], [{\n      key: \"noConflict\",\n      value: function noConflict() {\n        window.Viewer = AnotherViewer;\n        return Viewer;\n      }\n      /**\n       * Change the default options.\n       * @param {Object} options - The new default options.\n       */\n\n    }, {\n      key: \"setDefaults\",\n      value: function setDefaults(options) {\n        assign(DEFAULTS, isPlainObject(options) && options);\n      }\n    }]);\n\n    return Viewer;\n  }();\n\n  assign(Viewer.prototype, render, events, handlers, methods, others);\n\n  return Viewer;\n\n})));\n"
  },
  {
    "path": "public/assets/luna/layui/css/layui.css",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n .layui-inline,img{display:inline-block;vertical-align:middle}h1,h2,h3,h4,h5,h6{font-weight:400}.layui-edge,.layui-header,.layui-inline,.layui-main{position:relative}.layui-body,.layui-edge,.layui-elip{overflow:hidden}.layui-btn,.layui-edge,.layui-inline,img{vertical-align:middle}.layui-btn,.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-elip,.layui-form-checkbox span,.layui-form-pane .layui-form-label{text-overflow:ellipsis;white-space:nowrap}.layui-breadcrumb,.layui-tree-btnGroup{visibility:hidden}blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{border:none}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h4,h5,h6{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:24px;font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:1px;margin:10px 0;border:0;clear:both}a{color:#333;text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\\20';clear:both;*zoom:1;display:block;height:0}.layui-inline{*display:inline;*zoom:1}.layui-edge{display:inline-block;width:0;height:0;border-width:6px;border-style:dashed;border-color:transparent}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=256);src:url(../font/iconfont.eot?v=256#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=256) format('woff2'),url(../font/iconfont.woff?v=256) format('woff'),url(../font/iconfont.ttf?v=256) format('truetype'),url(../font/iconfont.svg?v=256#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-reply-fill:before{content:\"\\e611\"}.layui-icon-set-fill:before{content:\"\\e614\"}.layui-icon-menu-fill:before{content:\"\\e60f\"}.layui-icon-search:before{content:\"\\e615\"}.layui-icon-share:before{content:\"\\e641\"}.layui-icon-set-sm:before{content:\"\\e620\"}.layui-icon-engine:before{content:\"\\e628\"}.layui-icon-close:before{content:\"\\1006\"}.layui-icon-close-fill:before{content:\"\\1007\"}.layui-icon-chart-screen:before{content:\"\\e629\"}.layui-icon-star:before{content:\"\\e600\"}.layui-icon-circle-dot:before{content:\"\\e617\"}.layui-icon-chat:before{content:\"\\e606\"}.layui-icon-release:before{content:\"\\e609\"}.layui-icon-list:before{content:\"\\e60a\"}.layui-icon-chart:before{content:\"\\e62c\"}.layui-icon-ok-circle:before{content:\"\\1005\"}.layui-icon-layim-theme:before{content:\"\\e61b\"}.layui-icon-table:before{content:\"\\e62d\"}.layui-icon-right:before{content:\"\\e602\"}.layui-icon-left:before{content:\"\\e603\"}.layui-icon-cart-simple:before{content:\"\\e698\"}.layui-icon-face-cry:before{content:\"\\e69c\"}.layui-icon-face-smile:before{content:\"\\e6af\"}.layui-icon-survey:before{content:\"\\e6b2\"}.layui-icon-tree:before{content:\"\\e62e\"}.layui-icon-ie:before{content:\"\\e7bb\"}.layui-icon-upload-circle:before{content:\"\\e62f\"}.layui-icon-add-circle:before{content:\"\\e61f\"}.layui-icon-download-circle:before{content:\"\\e601\"}.layui-icon-templeate-1:before{content:\"\\e630\"}.layui-icon-util:before{content:\"\\e631\"}.layui-icon-face-surprised:before{content:\"\\e664\"}.layui-icon-edit:before{content:\"\\e642\"}.layui-icon-speaker:before{content:\"\\e645\"}.layui-icon-down:before{content:\"\\e61a\"}.layui-icon-file:before{content:\"\\e621\"}.layui-icon-layouts:before{content:\"\\e632\"}.layui-icon-rate-half:before{content:\"\\e6c9\"}.layui-icon-add-circle-fine:before{content:\"\\e608\"}.layui-icon-prev-circle:before{content:\"\\e633\"}.layui-icon-read:before{content:\"\\e705\"}.layui-icon-404:before{content:\"\\e61c\"}.layui-icon-carousel:before{content:\"\\e634\"}.layui-icon-help:before{content:\"\\e607\"}.layui-icon-code-circle:before{content:\"\\e635\"}.layui-icon-windows:before{content:\"\\e67f\"}.layui-icon-water:before{content:\"\\e636\"}.layui-icon-username:before{content:\"\\e66f\"}.layui-icon-find-fill:before{content:\"\\e670\"}.layui-icon-about:before{content:\"\\e60b\"}.layui-icon-location:before{content:\"\\e715\"}.layui-icon-up:before{content:\"\\e619\"}.layui-icon-pause:before{content:\"\\e651\"}.layui-icon-date:before{content:\"\\e637\"}.layui-icon-layim-uploadfile:before{content:\"\\e61d\"}.layui-icon-delete:before{content:\"\\e640\"}.layui-icon-play:before{content:\"\\e652\"}.layui-icon-top:before{content:\"\\e604\"}.layui-icon-firefox:before{content:\"\\e686\"}.layui-icon-friends:before{content:\"\\e612\"}.layui-icon-refresh-3:before{content:\"\\e9aa\"}.layui-icon-ok:before{content:\"\\e605\"}.layui-icon-layer:before{content:\"\\e638\"}.layui-icon-face-smile-fine:before{content:\"\\e60c\"}.layui-icon-dollar:before{content:\"\\e659\"}.layui-icon-group:before{content:\"\\e613\"}.layui-icon-layim-download:before{content:\"\\e61e\"}.layui-icon-picture-fine:before{content:\"\\e60d\"}.layui-icon-link:before{content:\"\\e64c\"}.layui-icon-diamond:before{content:\"\\e735\"}.layui-icon-log:before{content:\"\\e60e\"}.layui-icon-key:before{content:\"\\e683\"}.layui-icon-rate-solid:before{content:\"\\e67a\"}.layui-icon-fonts-del:before{content:\"\\e64f\"}.layui-icon-unlink:before{content:\"\\e64d\"}.layui-icon-fonts-clear:before{content:\"\\e639\"}.layui-icon-triangle-r:before{content:\"\\e623\"}.layui-icon-circle:before{content:\"\\e63f\"}.layui-icon-radio:before{content:\"\\e643\"}.layui-icon-align-center:before{content:\"\\e647\"}.layui-icon-align-right:before{content:\"\\e648\"}.layui-icon-align-left:before{content:\"\\e649\"}.layui-icon-loading-1:before{content:\"\\e63e\"}.layui-icon-return:before{content:\"\\e65c\"}.layui-icon-fonts-strong:before{content:\"\\e62b\"}.layui-icon-upload:before{content:\"\\e67c\"}.layui-icon-dialogue:before{content:\"\\e63a\"}.layui-icon-video:before{content:\"\\e6ed\"}.layui-icon-headset:before{content:\"\\e6fc\"}.layui-icon-cellphone-fine:before{content:\"\\e63b\"}.layui-icon-add-1:before{content:\"\\e654\"}.layui-icon-face-smile-b:before{content:\"\\e650\"}.layui-icon-fonts-html:before{content:\"\\e64b\"}.layui-icon-screen-full:before{content:\"\\e622\"}.layui-icon-form:before{content:\"\\e63c\"}.layui-icon-cart:before{content:\"\\e657\"}.layui-icon-camera-fill:before{content:\"\\e65d\"}.layui-icon-tabs:before{content:\"\\e62a\"}.layui-icon-heart-fill:before{content:\"\\e68f\"}.layui-icon-fonts-code:before{content:\"\\e64e\"}.layui-icon-ios:before{content:\"\\e680\"}.layui-icon-at:before{content:\"\\e687\"}.layui-icon-fire:before{content:\"\\e756\"}.layui-icon-set:before{content:\"\\e716\"}.layui-icon-fonts-u:before{content:\"\\e646\"}.layui-icon-triangle-d:before{content:\"\\e625\"}.layui-icon-tips:before{content:\"\\e702\"}.layui-icon-picture:before{content:\"\\e64a\"}.layui-icon-more-vertical:before{content:\"\\e671\"}.layui-icon-bluetooth:before{content:\"\\e689\"}.layui-icon-flag:before{content:\"\\e66c\"}.layui-icon-loading:before{content:\"\\e63d\"}.layui-icon-fonts-i:before{content:\"\\e644\"}.layui-icon-refresh-1:before{content:\"\\e666\"}.layui-icon-rmb:before{content:\"\\e65e\"}.layui-icon-addition:before{content:\"\\e624\"}.layui-icon-home:before{content:\"\\e68e\"}.layui-icon-time:before{content:\"\\e68d\"}.layui-icon-user:before{content:\"\\e770\"}.layui-icon-notice:before{content:\"\\e667\"}.layui-icon-chrome:before{content:\"\\e68a\"}.layui-icon-edge:before{content:\"\\e68b\"}.layui-icon-login-weibo:before{content:\"\\e675\"}.layui-icon-voice:before{content:\"\\e688\"}.layui-icon-upload-drag:before{content:\"\\e681\"}.layui-icon-login-qq:before{content:\"\\e676\"}.layui-icon-snowflake:before{content:\"\\e6b1\"}.layui-icon-heart:before{content:\"\\e68c\"}.layui-icon-logout:before{content:\"\\e682\"}.layui-icon-file-b:before{content:\"\\e655\"}.layui-icon-template:before{content:\"\\e663\"}.layui-icon-transfer:before{content:\"\\e691\"}.layui-icon-auz:before{content:\"\\e672\"}.layui-icon-console:before{content:\"\\e665\"}.layui-icon-app:before{content:\"\\e653\"}.layui-icon-prev:before{content:\"\\e65a\"}.layui-icon-website:before{content:\"\\e7ae\"}.layui-icon-next:before{content:\"\\e65b\"}.layui-icon-component:before{content:\"\\e857\"}.layui-icon-android:before{content:\"\\e684\"}.layui-icon-more:before{content:\"\\e65f\"}.layui-icon-login-wechat:before{content:\"\\e677\"}.layui-icon-shrink-right:before{content:\"\\e668\"}.layui-icon-spread-left:before{content:\"\\e66b\"}.layui-icon-camera:before{content:\"\\e660\"}.layui-icon-note:before{content:\"\\e66e\"}.layui-icon-refresh:before{content:\"\\e669\"}.layui-icon-female:before{content:\"\\e661\"}.layui-icon-male:before{content:\"\\e662\"}.layui-icon-screen-restore:before{content:\"\\e758\"}.layui-icon-password:before{content:\"\\e673\"}.layui-icon-senior:before{content:\"\\e674\"}.layui-icon-theme:before{content:\"\\e66a\"}.layui-icon-tread:before{content:\"\\e6c5\"}.layui-icon-praise:before{content:\"\\e6c6\"}.layui-icon-star-fill:before{content:\"\\e658\"}.layui-icon-rate:before{content:\"\\e67b\"}.layui-icon-template-1:before{content:\"\\e656\"}.layui-icon-vercode:before{content:\"\\e679\"}.layui-icon-service:before{content:\"\\e626\"}.layui-icon-cellphone:before{content:\"\\e678\"}.layui-icon-print:before{content:\"\\e66d\"}.layui-icon-cols:before{content:\"\\e610\"}.layui-icon-wifi:before{content:\"\\e7e0\"}.layui-icon-export:before{content:\"\\e67d\"}.layui-icon-rss:before{content:\"\\e808\"}.layui-icon-slider:before{content:\"\\e714\"}.layui-icon-email:before{content:\"\\e618\"}.layui-icon-subtraction:before{content:\"\\e67e\"}.layui-icon-mike:before{content:\"\\e6dc\"}.layui-icon-light:before{content:\"\\e748\"}.layui-icon-gift:before{content:\"\\e627\"}.layui-icon-mute:before{content:\"\\e685\"}.layui-icon-reduce-circle:before{content:\"\\e616\"}.layui-icon-music:before{content:\"\\e690\"}.layui-main{width:1140px;margin:0 auto}.layui-header{z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:absolute;left:200px;right:0;top:0;bottom:0;z-index:998;width:auto;overflow-y:auto;box-sizing:border-box}.layui-layout-body{overflow:hidden}.layui-layout-admin .layui-header{background-color:#23262E}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:fixed;top:60px;bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;height:44px;line-height:44px;padding:0 15px;background-color:#eee}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#009688;font-size:16px}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;padding:0 15px;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:'';display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:768px){.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:750px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:970px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1170px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:22px;border-left:5px solid #009688;border-radius:0 2px 2px 0;background-color:#f2f2f2}.layui-quote-nm{border-style:solid;border-width:1px 1px 1px 5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px;font-weight:300}.layui-field-title{margin:10px 0 20px;border-width:1px 0 0}.layui-field-box{padding:10px 15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#e2e2e2}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#5FB878;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#666}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#f2f2f2;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:22px;color:#666}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f6f6f6;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-bg-black,.layui-bg-blue,.layui-bg-cyan,.layui-bg-green,.layui-bg-orange,.layui-bg-red{color:#fff!important}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #E6E6E6;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-form-label,.layui-form-mid,.layui-form-select,.layui-input-block,.layui-input-inline,.layui-textarea{position:relative}.layui-bg-red{background-color:#FF5722!important}.layui-bg-orange{background-color:#FFB800!important}.layui-bg-green{background-color:#009688!important}.layui-bg-cyan{background-color:#2F4056!important}.layui-bg-blue{background-color:#1E9FFF!important}.layui-bg-black{background-color:#393D49!important}.layui-bg-gray{background-color:#eee!important;color:#666!important}.layui-badge-rim,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-layedit,.layui-layedit-tool,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#e6e6e6}.layui-timeline-item:before,hr{background-color:#e6e6e6}.layui-text{line-height:22px;font-size:14px;color:#666}.layui-text h1,.layui-text h2,.layui-text h3{font-weight:500;color:#333}.layui-text h1{font-size:30px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text a:not(.layui-btn){color:#01AAED}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text ul{padding:5px 0 5px 15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text em,.layui-word-aux{color:#999!important;padding:0 5px!important}.layui-btn{display:inline-block;height:38px;line-height:38px;padding:0 18px;background-color:#009688;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border:none;border-radius:2px;cursor:pointer}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{font-size:0}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{margin-right:3px;font-size:18px;vertical-align:bottom;vertical-align:middle\\9}.layui-btn-primary{border:1px solid #C9C9C9;background-color:#fff;color:#555}.layui-btn-primary:hover{border-color:#009688;color:#333}.layui-btn-normal{background-color:#1E9FFF}.layui-btn-warm{background-color:#FFB800}.layui-btn-danger{background-color:#FF5722}.layui-btn-checked{background-color:#5FB878}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border:1px solid #e6e6e6;background-color:#FBFBFB;color:#C9C9C9;cursor:not-allowed;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-sm i{font-size:16px!important}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:14px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#C9C9C9;color:#009688}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #c9c9c9}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\\9;border-width:1px;border-style:solid;background-color:#fff;border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#D2D2D2!important}.layui-input:focus,.layui-textarea:focus{border-color:#C9C9C9!important}.layui-textarea{min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#FF5722!important}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #d2d2d2;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f2f2f2;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#5FB878;color:#fff}.layui-form-checkbox,.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-checkbox,.layui-form-checkbox *,.layui-form-switch{display:inline-block;vertical-align:middle}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg);margin-top:-3px\\9}:root .layui-form-selected .layui-edge{margin-top:-9px\\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;height:30px;line-height:30px;margin-right:10px;padding-right:30px;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox span{padding:0 10px;height:100%;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden}.layui-form-checkbox:hover span{background-color:#c2c2c2}.layui-form-checkbox i{position:absolute;right:0;top:0;width:30px;height:28px;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;font-size:20px;text-align:center}.layui-form-checkbox:hover i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#5FB878}.layui-form-checked span,.layui-form-checked:hover span{background-color:#5FB878}.layui-form-checked i,.layui-form-checked:hover i{color:#5FB878}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:28px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary] span{padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#666}.layui-form-checkbox[lay-skin=primary] i{right:auto;left:0;width:16px;height:16px;line-height:16px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover i{border-color:#5FB878;color:#fff}.layui-form-checked[lay-skin=primary] i{border-color:#5FB878!important;background-color:#5FB878;color:#fff}.layui-checkbox-disbaled[lay-skin=primary] span{background:0 0!important;color:#c2c2c2}.layui-checkbox-disbaled[lay-skin=primary]:hover i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-switch{position:relative;height:22px;line-height:22px;min-width:35px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch em{position:relative;top:0;width:25px;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#5FB878;background-color:#5FB878}.layui-checkbox-disbaled,.layui-checkbox-disbaled i{border-color:#e2e2e2!important}.layui-form-onswitch i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch em{margin-left:5px;margin-right:21px;color:#fff!important}.layui-checkbox-disbaled span{background-color:#e2e2e2!important}.layui-checkbox-disbaled:hover i{color:#fff!important}[lay-radio]{display:none}.layui-form-radio,.layui-form-radio *{display:inline-block;vertical-align:middle}.layui-form-radio{line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio *{font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio>i:hover,.layui-form-radioed>i{color:#5FB878}.layui-radio-disbaled>i{color:#e2e2e2!important}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#FBFBFB;overflow:hidden;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0 1px 0 0}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-layedit{border-width:1px;border-style:solid;border-radius:2px}.layui-layedit-tool{padding:3px 5px;border-bottom-width:1px;border-bottom-style:solid;font-size:0}.layedit-tool-fixed{position:fixed;top:0;border-top:1px solid #e2e2e2}.layui-layedit-tool .layedit-tool-mid,.layui-layedit-tool .layui-icon{display:inline-block;vertical-align:middle;text-align:center;font-size:14px}.layui-layedit-tool .layui-icon{position:relative;width:32px;height:30px;line-height:30px;margin:3px 5px;color:#777;cursor:pointer;border-radius:2px}.layui-layedit-tool .layui-icon:hover{color:#393D49}.layui-layedit-tool .layui-icon:active{color:#000}.layui-layedit-tool .layedit-tool-active{background-color:#e2e2e2;color:#000}.layui-layedit-tool .layui-disabled,.layui-layedit-tool .layui-disabled:hover{color:#d2d2d2;cursor:not-allowed}.layui-layedit-tool .layedit-tool-mid{width:1px;height:18px;margin:0 10px;background-color:#d2d2d2}.layedit-tool-html{width:50px!important;font-size:30px!important}.layedit-tool-b,.layedit-tool-code,.layedit-tool-help{font-size:16px!important}.layedit-tool-d,.layedit-tool-face,.layedit-tool-image,.layedit-tool-unlink{font-size:18px!important}.layedit-tool-image input{position:absolute;font-size:0;left:0;top:0;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-layedit-iframe iframe{display:block;width:100%}#LAY_layedit_code{overflow:hidden}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #e2e2e2}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-flow-more a *,.layui-laypage input,.layui-table-view select[lay-ignore]{display:inline-block}.layui-laypage a:hover{color:#009688}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage a{text-decoration:none}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#009688}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#009688!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-table,.layui-table-view{margin:10px 0}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;background-color:#fff;color:#666}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:400}.layui-table tbody tr:hover,.layui-table thead tr,.layui-table-click,.layui-table-header,.layui-table-hover,.layui-table-mend,.layui-table-patch,.layui-table-tool,.layui-table-total,.layui-table-total tr,.layui-table[lay-even] tr:nth-child(even){background-color:#f2f2f2}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#e6e6e6}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0 0 1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0 1px 0 0}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding:15px 30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:40px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{font-size:12px;padding:5px 10px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:20px;line-height:20px}.layui-table[lay-data]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view .layui-table{position:relative;width:auto;margin:0}.layui-table-view .layui-table[lay-skin=line]{border-width:0 1px 0 0}.layui-table-view .layui-table[lay-skin=row]{border-width:0 0 1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:5px 0;border-top:none;border-left:none}.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td{cursor:default}.layui-table-view .layui-table td[data-edit=text]{cursor:text}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:110}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0 0 1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;padding:5px 0;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-cell,.layui-table-tool-panel li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layui-table-tool-panel li{padding:0 10px;line-height:30px;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%;padding-left:28px}.layui-table-tool-panel li:hover{background-color:#f2f2f2}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0 0 0 1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#666}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#666}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:28px;line-height:28px;padding:0 15px;position:relative;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-table-link{color:#01AAED}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{padding:0;text-align:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:0 -1px 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0 0 0 1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px}.layui-table-tool{position:relative;z-index:890;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0 0 1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-page,.layui-table-total{border-width:1px 0 0;margin-bottom:-1px;overflow:hidden}.layui-table-page{position:relative;width:100%;padding:7px 7px 0;height:41px;font-size:12px;white-space:nowrap}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-7px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;width:100%;height:100%;padding:0 14px 1px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15)}.layui-table-edit:focus{border-color:#5FB878!important}select.layui-table-edit{padding:0 0 0 10px;border-color:#C9C9C9}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0;box-sizing:content-box}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:26px;height:100%;padding:5px 0;border-width:0 0 0 1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px}.layui-table-grid-down:hover{background-color:#fbfbfb}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-44px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#666}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#666;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-drag,.layui-upload-form,.layui-upload-wrap{display:inline-block}.layui-upload-list{margin:10px 0}.layui-upload-choose{padding:0 10px;color:#999}.layui-upload-drag{position:relative;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#009688}.layui-upload-drag[lay-over]{border-color:#009688}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-transfer-active,.layui-transfer-box{display:inline-block;vertical-align:middle}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#e6e6e6}.layui-transfer-box{position:relative;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 10px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:10px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;margin-top:-8px;color:#666}.layui-transfer-active{margin:0 15px}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#5FB878;border-color:#5FB878;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#FBFBFB;border-color:#e6e6e6;color:#C9C9C9}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;padding:0 10px}.layui-transfer-data li:hover{background-color:#f2f2f2;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 10px;text-align:center;color:#999}.layui-nav{position:relative;padding:0 20px;background-color:#393D49;color:#fff;border-radius:2px;font-size:0;box-sizing:border-box}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar,.layui-nav-tree .layui-nav-itemed:after{position:absolute;left:0;top:0;width:0;height:5px;background-color:#5FB878;transition:all .2s;-webkit-transition:all .2s}.layui-nav-bar{z-index:1000}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff}.layui-nav .layui-this:after{content:'';top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{content:'';width:0;height:0;border-style:solid dashed dashed;border-color:#fff transparent transparent;overflow:hidden;cursor:pointer;transition:all .2s;-webkit-transition:all .2s;position:absolute;top:50%;right:3px;margin-top:-3px;border-width:6px;border-top-color:rgba(255,255,255,.7)}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{margin-top:-9px;border-style:dashed dashed solid;border-color:transparent transparent #fff}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #d2d2d2;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap}.layui-nav .layui-nav-child a{color:#333}.layui-nav .layui-nav-child a:hover{background-color:#f2f2f2;color:#000}.layui-nav-child dd{position:relative}.layui-nav .layui-nav-child dd.layui-this a,.layui-nav-child dd.layui-this{background-color:#5FB878;color:#fff}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:45px}.layui-nav-tree .layui-nav-item a{position:relative;height:45px;line-height:45px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item a:hover{background-color:#4E5465}.layui-nav-tree .layui-nav-bar{width:5px;height:0;background-color:#009688}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#009688;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;box-shadow:none}.layui-nav-tree .layui-nav-child a{height:40px;line-height:40px;color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-tree .layui-nav-more{right:10px}.layui-nav-itemed>.layui-nav-child{display:block;padding:0;background-color:rgba(0,0,0,.3)!important}.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-bg-blue .layui-nav-bar,.layui-bg-blue .layui-nav-itemed:after,.layui-bg-blue .layui-this:after{background-color:#93D1FF}.layui-bg-blue .layui-nav-child dd.layui-this{background-color:#1E9FFF}.layui-bg-blue .layui-nav-itemed>a,.layui-nav-tree.layui-bg-blue .layui-nav-title a,.layui-nav-tree.layui-bg-blue .layui-nav-title a:hover{background-color:#007DDB!important}.layui-breadcrumb{font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#5FB878!important}.layui-breadcrumb a cite{color:#666;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s;position:relative;line-height:40px;min-width:65px;padding:0 15px;text-align:center;cursor:pointer}.layui-tab-title li a{display:block}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:'';width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#e2e2e2;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\\9;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\\0/IE9}.layui-tab-content{padding:10px}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#FF5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#009688}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #5FB878}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#f2f2f2}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#5FB878}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#5FB878;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#FF5722}.layui-timeline-item:before{content:'';position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:last-child:before{display:none}.layui-timeline-item:first-child:before{display:block}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#FF5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#666}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-8px 6px 0}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\\9;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add],.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\\9;opacity:1;left:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#e2e2e2;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown]>[carousel-item]>*,.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:15px;bottom:15px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9F9F9F;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#666;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #D9D9D9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{position:relative;margin:10px 0;padding:15px;line-height:20px;border:1px solid #ddd;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New;font-size:12px}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:10px 5px 10px 0;font-size:0}.layui-rate li i.layui-icon{font-size:20px;color:#FFB800;margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:26px;height:26px;border:1px solid #e6e6e6;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:34px;height:34px;line-height:32px}.layui-colorpicker.layui-colorpicker-sm{width:24px;height:24px;line-height:22px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:20px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#FFF;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;z-index:66666666;width:280px;padding:7px;background:#FFF;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#FFF,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #FFF;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#FF0,#0F0,#0FF,#00F,#F0F,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#666}.layui-slider{height:4px;background:#e2e2e2;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#FFF;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#FFF;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:\"\";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:66666666;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#FFF;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:'';position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #e6e6e6;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-15px}.layui-slider-input-btn{display:none;position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #d2d2d2}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #d2d2d2}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none}.layui-slider-input-btn i:hover{color:#009688}.layui-slider-vertical{width:4px;margin-left:34px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \\0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-iconClick,.layui-tree-main{display:inline-block;vertical-align:middle}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:'';position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:20px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:'';position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:12px;line-height:12px;width:12px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#666}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:'';position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-btnGroup,.layui-tree-editInput{position:relative;vertical-align:middle;display:inline-block}.layui-tree-spread>.layui-tree-entry>.layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#666}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{height:20px;line-height:20px;padding:0 3px;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .3s;-webkit-transition:all .3s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,30px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,30px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout}"
  },
  {
    "path": "public/assets/luna/layui/css/layui.mobile.css",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,legend,li,ol,p,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}html{font:12px 'Helvetica Neue','PingFang SC',STHeitiSC-Light,Helvetica,Arial,sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}a,button,input{-webkit-tap-highlight-color:rgba(255,0,0,0)}a{text-decoration:none;background:0 0}a:active,a:hover{outline:0}table{border-collapse:collapse;border-spacing:0}li{list-style:none}b,strong{font-weight:700}h1,h2,h3,h4,h5,h6{font-weight:500}address,cite,dfn,em,var{font-style:normal}dfn{font-style:italic}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}img{border:0;vertical-align:bottom}.layui-inline,input,label{vertical-align:middle}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;outline:0}button,select{text-transform:none}select{-webkit-appearance:none;border:none}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=1.0.7);src:url(../font/iconfont.eot?v=1.0.7#iefix) format('embedded-opentype'),url(../font/iconfont.woff?v=1.0.7) format('woff'),url(../font/iconfont.ttf?v=1.0.7) format('truetype'),url(../font/iconfont.svg?v=1.0.7#iconfont) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-box,.layui-box *{-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important}.layui-border-box,.layui-border-box *{-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1}.layui-edge,.layui-upload-iframe{position:absolute;width:0;height:0}.layui-edge{border-style:dashed;border-color:transparent;overflow:hidden}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:active{background-color:#d2d2d2!important;color:#fff!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-upload-iframe{border:0;visibility:hidden}.layui-upload-enter{border:1px solid #009E94;background-color:#009E94;color:#fff;-webkit-transform:scale(1.1);transform:scale(1.1)}@-webkit-keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.layui-m-anim-scale{animation-name:layui-m-anim-scale;-webkit-animation-name:layui-m-anim-scale}@-webkit-keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.layui-m-anim-up{-webkit-animation-name:layui-m-anim-up;animation-name:layui-m-anim-up}@-webkit-keyframes layui-m-anim-left{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes layui-m-anim-left{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.layui-m-anim-left{-webkit-animation-name:layui-m-anim-left;animation-name:layui-m-anim-left}@-webkit-keyframes layui-m-anim-right{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes layui-m-anim-right{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.layui-m-anim-right{-webkit-animation-name:layui-m-anim-right;animation-name:layui-m-anim-right}@-webkit-keyframes layui-m-anim-lout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes layui-m-anim-lout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}.layui-m-anim-lout{-webkit-animation-name:layui-m-anim-lout;animation-name:layui-m-anim-lout}@-webkit-keyframes layui-m-anim-rout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes layui-m-anim-rout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}.layui-m-anim-rout{-webkit-animation-name:layui-m-anim-rout;animation-name:layui-m-anim-rout}.layui-m-layer{position:relative;z-index:19891014}.layui-m-layer *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.layui-m-layermain,.layui-m-layershade{position:fixed;left:0;top:0;width:100%;height:100%}.layui-m-layershade{background-color:rgba(0,0,0,.7);pointer-events:auto}.layui-m-layermain{display:table;font-family:Helvetica,arial,sans-serif;pointer-events:none}.layui-m-layermain .layui-m-layersection{display:table-cell;vertical-align:middle;text-align:center}.layui-m-layerchild{position:relative;display:inline-block;text-align:left;background-color:#fff;font-size:14px;border-radius:5px;box-shadow:0 0 8px rgba(0,0,0,.1);pointer-events:auto;-webkit-overflow-scrolling:touch;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}.layui-m-layer0 .layui-m-layerchild{width:90%;max-width:640px}.layui-m-layer1 .layui-m-layerchild{border:none;border-radius:0}.layui-m-layer2 .layui-m-layerchild{width:auto;max-width:260px;min-width:40px;border:none;background:0 0;box-shadow:none;color:#fff}.layui-m-layerchild h3{padding:0 10px;height:60px;line-height:60px;font-size:16px;font-weight:400;border-radius:5px 5px 0 0;text-align:center}.layui-m-layerbtn span,.layui-m-layerchild h3{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-m-layercont{padding:50px 30px;line-height:22px;text-align:center}.layui-m-layer1 .layui-m-layercont{padding:0;text-align:left}.layui-m-layer2 .layui-m-layercont{text-align:center;padding:0;line-height:0}.layui-m-layer2 .layui-m-layercont i{width:25px;height:25px;margin-left:8px;display:inline-block;background-color:#fff;border-radius:100%;-webkit-animation:layui-m-anim-loading 1.4s infinite ease-in-out;animation:layui-m-anim-loading 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-m-layerbtn,.layui-m-layerbtn span{position:relative;text-align:center;border-radius:0 0 5px 5px}.layui-m-layer2 .layui-m-layercont p{margin-top:20px}@-webkit-keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}@keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.layui-m-layer2 .layui-m-layercont i:first-child{margin-left:0;-webkit-animation-delay:-.32s;animation-delay:-.32s}.layui-m-layer2 .layui-m-layercont i.layui-m-layerload{-webkit-animation-delay:-.16s;animation-delay:-.16s}.layui-m-layer2 .layui-m-layercont>div{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40AFFE}.layui-m-layerbtn span[no]{border-right:1px solid #D0D0D0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#FD482C;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;bottom:-150px;background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px}"
  },
  {
    "path": "public/assets/luna/layui/css/modules/code.css",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}"
  },
  {
    "path": "public/assets/luna/layui/css/modules/laydate/default/laydate.css",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n .laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate-list{box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:laydate-upbit;animation-name:laydate-upbit}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}@-webkit-keyframes laydate-upbit{from{-webkit-transform:translate3d(0,20px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes laydate-upbit{from{transform:translate3d(0,20px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon,.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.laydate-set-ym span,.layui-laydate-header i{padding:0 5px;cursor:pointer}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;color:#999;font-size:18px}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:5px;text-align:center}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;height:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px 20px}.layui-laydate-footer span{margin-right:15px;display:inline-block;cursor:pointer;font-size:12px}.layui-laydate-footer span:hover{color:#5FB878}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{height:26px;line-height:26px;margin:0 0 0 -1px;padding:0 10px;border:1px solid #C9C9C9;background-color:#fff;white-space:nowrap;vertical-align:top;border-radius:2px}.layui-laydate-list>li,.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle}.layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;background-color:#fff}.layui-laydate-list>li{position:relative;width:33.3%;height:36px;line-height:36px;margin:3px 0;text-align:center;cursor:pointer}.laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.laydate-time-list p{position:relative;top:-4px;line-height:29px}.laydate-time-list ol{height:181px;overflow:hidden}.laydate-time-list>li:hover ol{overflow-y:auto}.laydate-time-list ol li{width:130%;padding-left:33px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px}.layui-laydate-range{width:546px}.layui-laydate-range .laydate-main-list-0 .laydate-next-m,.layui-laydate-range .laydate-main-list-0 .laydate-next-y,.layui-laydate-range .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left:1px solid #e2e2e2}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#666}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#5FB878}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{font-weight:400;color:#333}.layui-laydate-content td{color:#666}.layui-laydate-content td.laydate-selected{background-color:#00F7DE}.laydate-selected:hover{background-color:#00F7DE!important}.layui-laydate-content td:hover,.layui-laydate-list li:hover{background-color:#eaeaea;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.laydate-selected.laydate-day-next,.laydate-selected.laydate-day-prev{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#FF5722}.laydate-day-mark::after{background-color:#5FB878}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#5FB878}.layui-laydate .layui-this{background-color:#009688!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#009688}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead,.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-selected,.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#009688!important}.laydate-theme-grid .laydate-selected.laydate-day-next,.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}"
  },
  {
    "path": "public/assets/luna/layui/css/modules/layer/default/layer.css",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n .layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .layui-layer-title span,.layui-layer-title{text-overflow:ellipsis;white-space:nowrap}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+\"px\")}.layui-layer{-webkit-overflow-scrolling:touch;top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-load{background:url(loading-1.gif) center center no-repeat #eee}.layui-layer-ico{background:url(icon.png) no-repeat}.layui-layer-btn a,.layui-layer-dialog .layui-layer-ico,.layui-layer-setwin a{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-layer-title{padding:0 80px 0 20px;height:42px;line-height:42px;border-bottom:1px solid #eee;font-size:14px;color:#333;overflow:hidden;background-color:#F8F8F8;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:15px;font-size:0;line-height:initial}.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:10px;font-size:12px;_overflow:hidden}.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#2E2D3C;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA}.layui-layer-setwin .layui-layer-max{background-position:-32px -40px}.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px}.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px}.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px}.layui-layer-setwin .layui-layer-close1{background-position:1px -40px;cursor:pointer}.layui-layer-setwin .layui-layer-close1:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px;margin-left:0;background-position:-149px -31px;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{background-position:-180px -31px}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#1E9FFF;background-color:#1E9FFF;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:260px}.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:16px;left:15px;_left:-40px;width:30px;height:30px}.layui-layer-ico1{background-position:-30px 0}.layui-layer-ico2{background-position:-60px 0}.layui-layer-ico3{background-position:-90px 0}.layui-layer-ico4{background-position:-120px 0}.layui-layer-ico5{background-position:-150px 0}.layui-layer-ico6{background-position:-180px 0}.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:20px 20px 20px 55px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(loading-2.gif) no-repeat}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan[type=dialog]{min-width:280px}.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;border-top:1px solid #E9E7E7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#E9E7E7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1}.layui-layer-iconext{background:url(icon-ext.png) no-repeat}.layui-layer-prompt .layui-layer-input{display:block;width:230px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:20px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:260px;padding:0 20px;text-align:center;overflow:hidden;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:43px;border-left:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{-webkit-animation-duration:.8s;animation-duration:.8s}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgbar,.layui-layer-imguide{display:none}.layui-layer-imgnext,.layui-layer-imgprev{position:absolute;top:50%;width:27px;_width:44px;height:44px;margin-top:-22px;outline:0;blr:expression(this.onFocus=this.blur())}.layui-layer-imgprev{left:10px;background-position:-5px -5px;_background-position:-70px -5px}.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px}.layui-layer-imgnext{right:10px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px}.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px}.layui-layer-imgbar{position:absolute;left:0;bottom:0;width:100%;height:32px;line-height:32px;background-color:rgba(0,0,0,.8);background-color:#000\\9;filter:Alpha(opacity=80);color:#fff;overflow:hidden;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px}.layui-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{padding-left:10px;font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}}"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/carousel.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t=\"carousel\",a=\"layui-this\",l=\">*[carousel-item]>*\",o=\"layui-carousel-left\",r=\"layui-carousel-right\",d=\"layui-carousel-prev\",s=\"layui-carousel-next\",u=\"layui-carousel-arrow\",c=\"layui-carousel-ind\",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:\"600px\",height:\"280px\",full:!1,arrow:\"hover\",indicator:\"inside\",autoplay:!0,interval:3e3,anim:\"\",trigger:\"click\",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:\"fixed\",width:\"100%\",height:\"100%\",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr(\"lay-anim\",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['<button class=\"layui-icon '+u+'\" lay-type=\"sub\">'+(\"updown\"===n.anim?\"&#xe619;\":\"&#xe603;\")+\"</button>\",'<button class=\"layui-icon '+u+'\" lay-type=\"add\">'+(\"updown\"===n.anim?\"&#xe61a;\":\"&#xe602;\")+\"</button>\"].join(\"\"));n.elem.attr(\"lay-arrow\",n.arrow),n.elem.find(\".\"+u)[0]&&n.elem.find(\".\"+u).remove(),n.elem.append(t),t.on(\"click\",function(){var n=i(this),t=n.attr(\"lay-type\");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['<div class=\"'+c+'\"><ul>',function(){var i=[];return layui.each(e.elemItem,function(e){i.push(\"<li\"+(n.index===e?' class=\"layui-this\"':\"\")+\"></li>\")}),i.join(\"\")}(),\"</ul></div>\"].join(\"\"));n.elem.attr(\"lay-indicator\",n.indicator),n.elem.find(\".\"+c)[0]&&n.elem.find(\".\"+c).remove(),n.elem.append(t),\"updown\"===n.anim&&t.css(\"margin-top\",-(t.height()/2)),t.find(\"li\").on(\"hover\"===n.trigger?\"mouseover\":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide(\"add\",a-n.index):a<n.index&&e.slide(\"sub\",n.index-a)})},m.prototype.slide=function(e,i){var n=this,l=n.elemItem,u=n.config,c=u.index,m=u.elem.attr(\"lay-filter\");n.haveSlide||(\"sub\"===e?(n.subIndex(i),l.eq(u.index).addClass(d),setTimeout(function(){l.eq(c).addClass(r),l.eq(u.index).addClass(r)},50)):(n.addIndex(i),l.eq(u.index).addClass(s),setTimeout(function(){l.eq(c).addClass(o),l.eq(u.index).addClass(o)},50)),setTimeout(function(){l.removeClass(a+\" \"+d+\" \"+s+\" \"+o+\" \"+r),l.eq(u.index).addClass(a),n.haveSlide=!1},300),n.elemInd.find(\"li\").eq(u.index).addClass(a).siblings().removeClass(a),n.haveSlide=!0,layui.event.call(this,t,\"change(\"+m+\")\",{index:u.index,prevIndex:c,item:l.eq(u.index)}))},m.prototype.events=function(){var e=this,i=e.config;i.elem.data(\"haveEvents\")||(i.elem.on(\"mouseenter\",function(){clearInterval(e.timer)}).on(\"mouseleave\",function(){e.autoplay()}),i.elem.data(\"haveEvents\",!0))},n.render=function(e){var i=new m(e);return i},e(t,n)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/code.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var a=layui.$,l=\"http://www.layui.com/doc/modules/code.html\";e(\"code\",function(e){var t=[];e=e||{},e.elem=a(e.elem||\".layui-code\"),e.about=!(\"about\"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr(\"lay-encode\")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/'/g,\"&#39;\").replace(/\"/g,\"&quot;\")),c.html('<ol class=\"layui-code-ol\"><li>'+o.replace(/[\\r\\t\\n]+/g,\"</li><li>\")+\"</li></ol>\"),c.find(\">.layui-code-h3\")[0]||c.prepend('<h3 class=\"layui-code-h3\">'+(c.attr(\"lay-title\")||e.title||\"code\")+(e.about?'<a href=\"'+l+'\" target=\"_blank\">layui.code</a>':\"\")+\"</h3>\");var d=c.find(\">.layui-code-ol\");c.addClass(\"layui-box layui-code-view\"),(c.attr(\"lay-skin\")||e.skin)&&c.addClass(\"layui-code-\"+(c.attr(\"lay-skin\")||e.skin)),(d.find(\"li\").length/100|0)>0&&d.css(\"margin-left\",(d.find(\"li\").length/100|0)+\"px\"),(c.attr(\"lay-height\")||e.height)&&d.css(\"max-height\",c.attr(\"lay-height\")||e.height)})})}).addcss(\"modules/code.css\",\"skincodecss\");"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/colorpicker.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var i=layui.jquery,o={config:{},index:layui.colorpicker?layui.colorpicker.index+1e4:0,set:function(e){var o=this;return o.config=i.extend({},o.config,e),o},on:function(e,i){return layui.onevent.call(this,\"colorpicker\",e,i)}},r=function(){var e=this,i=e.config;return{config:i}},t=\"colorpicker\",n=\"layui-show\",l=\"layui-colorpicker\",c=\".layui-colorpicker-main\",a=\"layui-icon-down\",s=\"layui-icon-close\",f=\"layui-colorpicker-trigger-span\",d=\"layui-colorpicker-trigger-i\",u=\"layui-colorpicker-side\",p=\"layui-colorpicker-side-slider\",g=\"layui-colorpicker-basis\",v=\"layui-colorpicker-alpha-bgcolor\",h=\"layui-colorpicker-alpha-slider\",m=\"layui-colorpicker-basis-cursor\",b=\"layui-colorpicker-main-input\",k=function(e){var i={h:0,s:0,b:0},o=Math.min(e.r,e.g,e.b),r=Math.max(e.r,e.g,e.b),t=r-o;return i.b=r,i.s=0!=r?255*t/r:0,0!=i.s?e.r==r?i.h=(e.g-e.b)/t:e.g==r?i.h=2+(e.b-e.r)/t:i.h=4+(e.r-e.g)/t:i.h=-1,r==o&&(i.h=0),i.h*=60,i.h<0&&(i.h+=360),i.s*=100/255,i.b*=100/255,i},y=function(e){var e=e.indexOf(\"#\")>-1?e.substring(1):e;if(3==e.length){var i=e.split(\"\");e=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]}e=parseInt(e,16);var o={r:e>>16,g:(65280&e)>>8,b:255&e};return k(o)},x=function(e){var i={},o=e.h,r=255*e.s/100,t=255*e.b/100;if(0==r)i.r=i.g=i.b=t;else{var n=t,l=(255-r)*t/255,c=(n-l)*(o%60)/60;360==o&&(o=0),o<60?(i.r=n,i.b=l,i.g=l+c):o<120?(i.g=n,i.b=l,i.r=n-c):o<180?(i.g=n,i.r=l,i.b=l+c):o<240?(i.b=n,i.r=l,i.g=n-c):o<300?(i.b=n,i.g=l,i.r=l+c):o<360?(i.r=n,i.g=l,i.b=n-c):(i.r=0,i.g=0,i.b=0)}return{r:Math.round(i.r),g:Math.round(i.g),b:Math.round(i.b)}},C=function(e){var o=x(e),r=[o.r.toString(16),o.g.toString(16),o.b.toString(16)];return i.each(r,function(e,i){1==i.length&&(r[e]=\"0\"+i)}),r.join(\"\")},P=function(e){var i=/[0-9]{1,3}/g,o=e.match(i)||[];return{r:o[0],g:o[1],b:o[2]}},B=i(window),w=i(document),D=function(e){var r=this;r.index=++o.index,r.config=i.extend({},r.config,o.config,e),r.render()};D.prototype.config={color:\"\",size:null,alpha:!1,format:\"hex\",predefine:!1,colors:[\"#009688\",\"#5FB878\",\"#1E9FFF\",\"#FF5722\",\"#FFB800\",\"#01AAED\",\"#999\",\"#c00\",\"#ff8c00\",\"#ffd700\",\"#90ee90\",\"#00ced1\",\"#1e90ff\",\"#c71585\",\"rgb(0, 186, 189)\",\"rgb(255, 120, 0)\",\"rgb(250, 212, 0)\",\"#393D49\",\"rgba(0,0,0,.5)\",\"rgba(255, 69, 0, 0.68)\",\"rgba(144, 240, 144, 0.5)\",\"rgba(31, 147, 255, 0.73)\"]},D.prototype.render=function(){var e=this,o=e.config,r=i(['<div class=\"layui-unselect layui-colorpicker\">',\"<span \"+(\"rgb\"==o.format&&o.alpha?'class=\"layui-colorpicker-trigger-bgcolor\"':\"\")+\">\",'<span class=\"layui-colorpicker-trigger-span\" ','lay-type=\"'+(\"rgb\"==o.format?o.alpha?\"rgba\":\"torgb\":\"\")+'\" ','style=\"'+function(){var e=\"\";return o.color?(e=o.color,(o.color.match(/[0-9]{1,3}/g)||[]).length>3&&(o.alpha&&\"rgb\"==o.format||(e=\"#\"+C(k(P(o.color))))),\"background: \"+e):e}()+'\">','<i class=\"layui-icon layui-colorpicker-trigger-i '+(o.color?a:s)+'\"></i>',\"</span>\",\"</span>\",\"</div>\"].join(\"\")),t=i(o.elem);o.size&&r.addClass(\"layui-colorpicker-\"+o.size),t.addClass(\"layui-inline\").html(e.elemColorBox=r),e.color=e.elemColorBox.find(\".\"+f)[0].style.background,e.events()},D.prototype.renderPicker=function(){var e=this,o=e.config,r=e.elemColorBox[0],t=e.elemPicker=i(['<div id=\"layui-colorpicker'+e.index+'\" data-index=\"'+e.index+'\" class=\"layui-anim layui-anim-upbit layui-colorpicker-main\">','<div class=\"layui-colorpicker-main-wrapper\">','<div class=\"layui-colorpicker-basis\">','<div class=\"layui-colorpicker-basis-white\"></div>','<div class=\"layui-colorpicker-basis-black\"></div>','<div class=\"layui-colorpicker-basis-cursor\"></div>',\"</div>\",'<div class=\"layui-colorpicker-side\">','<div class=\"layui-colorpicker-side-slider\"></div>',\"</div>\",\"</div>\",'<div class=\"layui-colorpicker-main-alpha '+(o.alpha?n:\"\")+'\">','<div class=\"layui-colorpicker-alpha-bgcolor\">','<div class=\"layui-colorpicker-alpha-slider\"></div>',\"</div>\",\"</div>\",function(){if(o.predefine){var e=['<div class=\"layui-colorpicker-main-pre\">'];return layui.each(o.colors,function(i,o){e.push(['<div class=\"layui-colorpicker-pre'+((o.match(/[0-9]{1,3}/g)||[]).length>3?\" layui-colorpicker-pre-isalpha\":\"\")+'\">','<div style=\"background:'+o+'\"></div>',\"</div>\"].join(\"\"))}),e.push(\"</div>\"),e.join(\"\")}return\"\"}(),'<div class=\"layui-colorpicker-main-input\">','<div class=\"layui-inline\">','<input type=\"text\" class=\"layui-input\">',\"</div>\",'<div class=\"layui-btn-container\">','<button class=\"layui-btn layui-btn-primary layui-btn-sm\" colorpicker-events=\"clear\">清空</button>','<button class=\"layui-btn layui-btn-sm\" colorpicker-events=\"confirm\">确定</button>',\"</div\",\"</div>\",\"</div>\"].join(\"\"));e.elemColorBox.find(\".\"+f)[0];i(c)[0]&&i(c).data(\"index\")==e.index?e.removePicker(D.thisElemInd):(e.removePicker(D.thisElemInd),i(\"body\").append(t)),D.thisElemInd=e.index,D.thisColor=r.style.background,e.position(),e.pickerEvents()},D.prototype.removePicker=function(e){var o=this;o.config;return i(\"#layui-colorpicker\"+(e||o.index)).remove(),o},D.prototype.position=function(){var e=this,i=e.config,o=e.bindElem||e.elemColorBox[0],r=e.elemPicker[0],t=o.getBoundingClientRect(),n=r.offsetWidth,l=r.offsetHeight,c=function(e){return e=e?\"scrollLeft\":\"scrollTop\",document.body[e]|document.documentElement[e]},a=function(e){return document.documentElement[e?\"clientWidth\":\"clientHeight\"]},s=5,f=t.left,d=t.bottom;f-=(n-o.offsetWidth)/2,d+=s,f+n+s>a(\"width\")?f=a(\"width\")-n-s:f<s&&(f=s),d+l+s>a()&&(d=t.top>l?t.top-l:a()-l,d-=2*s),i.position&&(r.style.position=i.position),r.style.left=f+(\"fixed\"===i.position?0:c(1))+\"px\",r.style.top=d+(\"fixed\"===i.position?0:c())+\"px\"},D.prototype.val=function(){var e=this,i=(e.config,e.elemColorBox.find(\".\"+f)),o=e.elemPicker.find(\".\"+b),r=i[0],t=r.style.backgroundColor;if(t){var n=k(P(t)),l=i.attr(\"lay-type\");if(e.select(n.h,n.s,n.b),\"torgb\"===l&&o.find(\"input\").val(t),\"rgba\"===l){var c=P(t);if(3==(t.match(/[0-9]{1,3}/g)||[]).length)o.find(\"input\").val(\"rgba(\"+c.r+\", \"+c.g+\", \"+c.b+\", 1)\"),e.elemPicker.find(\".\"+h).css(\"left\",280);else{o.find(\"input\").val(t);var a=280*t.slice(t.lastIndexOf(\",\")+1,t.length-1);e.elemPicker.find(\".\"+h).css(\"left\",a)}e.elemPicker.find(\".\"+v)[0].style.background=\"linear-gradient(to right, rgba(\"+c.r+\", \"+c.g+\", \"+c.b+\", 0), rgb(\"+c.r+\", \"+c.g+\", \"+c.b+\"))\"}}else e.select(0,100,100),o.find(\"input\").val(\"\"),e.elemPicker.find(\".\"+v)[0].style.background=\"\",e.elemPicker.find(\".\"+h).css(\"left\",280)},D.prototype.side=function(){var e=this,o=e.config,r=e.elemColorBox.find(\".\"+f),t=r.attr(\"lay-type\"),n=e.elemPicker.find(\".\"+u),l=e.elemPicker.find(\".\"+p),c=e.elemPicker.find(\".\"+g),y=e.elemPicker.find(\".\"+m),C=e.elemPicker.find(\".\"+v),w=e.elemPicker.find(\".\"+h),D=l[0].offsetTop/180*360,E=100-(y[0].offsetTop+3)/180*100,H=(y[0].offsetLeft+3)/260*100,W=Math.round(w[0].offsetLeft/280*100)/100,j=e.elemColorBox.find(\".\"+d),F=e.elemPicker.find(\".layui-colorpicker-pre\").children(\"div\"),L=function(i,n,l,c){e.select(i,n,l);var f=x({h:i,s:n,b:l});if(j.addClass(a).removeClass(s),r[0].style.background=\"rgb(\"+f.r+\", \"+f.g+\", \"+f.b+\")\",\"torgb\"===t&&e.elemPicker.find(\".\"+b).find(\"input\").val(\"rgb(\"+f.r+\", \"+f.g+\", \"+f.b+\")\"),\"rgba\"===t){var d=0;d=280*c,w.css(\"left\",d),e.elemPicker.find(\".\"+b).find(\"input\").val(\"rgba(\"+f.r+\", \"+f.g+\", \"+f.b+\", \"+c+\")\"),r[0].style.background=\"rgba(\"+f.r+\", \"+f.g+\", \"+f.b+\", \"+c+\")\",C[0].style.background=\"linear-gradient(to right, rgba(\"+f.r+\", \"+f.g+\", \"+f.b+\", 0), rgb(\"+f.r+\", \"+f.g+\", \"+f.b+\"))\"}o.change&&o.change(e.elemPicker.find(\".\"+b).find(\"input\").val())},M=i(['<div class=\"layui-auxiliar-moving\" id=\"LAY-colorpicker-moving\"></div'].join(\"\")),Y=function(e){i(\"#LAY-colorpicker-moving\")[0]||i(\"body\").append(M),M.on(\"mousemove\",e),M.on(\"mouseup\",function(){M.remove()}).on(\"mouseleave\",function(){M.remove()})};l.on(\"mousedown\",function(e){var i=this.offsetTop,o=e.clientY,r=function(e){var r=i+(e.clientY-o),t=n[0].offsetHeight;r<0&&(r=0),r>t&&(r=t);var l=r/180*360;D=l,L(l,H,E,W),e.preventDefault()};Y(r),e.preventDefault()}),n.on(\"click\",function(e){var o=e.clientY-i(this).offset().top;o<0&&(o=0),o>this.offsetHeight&&(o=this.offsetHeight);var r=o/180*360;D=r,L(r,H,E,W),e.preventDefault()}),y.on(\"mousedown\",function(e){var i=this.offsetTop,o=this.offsetLeft,r=e.clientY,t=e.clientX,n=function(e){var n=i+(e.clientY-r),l=o+(e.clientX-t),a=c[0].offsetHeight-3,s=c[0].offsetWidth-3;n<-3&&(n=-3),n>a&&(n=a),l<-3&&(l=-3),l>s&&(l=s);var f=(l+3)/260*100,d=100-(n+3)/180*100;E=d,H=f,L(D,f,d,W),e.preventDefault()};layui.stope(e),Y(n),e.preventDefault()}),c.on(\"mousedown\",function(e){var o=e.clientY-i(this).offset().top-3+B.scrollTop(),r=e.clientX-i(this).offset().left-3+B.scrollLeft();o<-3&&(o=-3),o>this.offsetHeight-3&&(o=this.offsetHeight-3),r<-3&&(r=-3),r>this.offsetWidth-3&&(r=this.offsetWidth-3);var t=(r+3)/260*100,n=100-(o+3)/180*100;E=n,H=t,L(D,t,n,W),e.preventDefault(),y.trigger(e,\"mousedown\")}),w.on(\"mousedown\",function(e){var i=this.offsetLeft,o=e.clientX,r=function(e){var r=i+(e.clientX-o),t=C[0].offsetWidth;r<0&&(r=0),r>t&&(r=t);var n=Math.round(r/280*100)/100;W=n,L(D,H,E,n),e.preventDefault()};Y(r),e.preventDefault()}),C.on(\"click\",function(e){var o=e.clientX-i(this).offset().left;o<0&&(o=0),o>this.offsetWidth&&(o=this.offsetWidth);var r=Math.round(o/280*100)/100;W=r,L(D,H,E,r),e.preventDefault()}),F.each(function(){i(this).on(\"click\",function(){i(this).parent(\".layui-colorpicker-pre\").addClass(\"selected\").siblings().removeClass(\"selected\");var e,o=this.style.backgroundColor,r=k(P(o)),t=o.slice(o.lastIndexOf(\",\")+1,o.length-1);D=r.h,H=r.s,E=r.b,3==(o.match(/[0-9]{1,3}/g)||[]).length&&(t=1),W=t,e=280*t,L(r.h,r.s,r.b,t)})})},D.prototype.select=function(e,i,o,r){var t=this,n=(t.config,C({h:e,s:100,b:100})),l=C({h:e,s:i,b:o}),c=e/360*180,a=180-o/100*180-3,s=i/100*260-3;t.elemPicker.find(\".\"+p).css(\"top\",c),t.elemPicker.find(\".\"+g)[0].style.background=\"#\"+n,t.elemPicker.find(\".\"+m).css({top:a,left:s}),\"change\"!==r&&t.elemPicker.find(\".\"+b).find(\"input\").val(\"#\"+l)},D.prototype.pickerEvents=function(){var e=this,o=e.config,r=e.elemColorBox.find(\".\"+f),t=e.elemPicker.find(\".\"+b+\" input\"),n={clear:function(i){r[0].style.background=\"\",e.elemColorBox.find(\".\"+d).removeClass(a).addClass(s),e.color=\"\",o.done&&o.done(\"\"),e.removePicker()},confirm:function(i,n){var l=t.val(),c=l,f={};if(l.indexOf(\",\")>-1){if(f=k(P(l)),e.select(f.h,f.s,f.b),r[0].style.background=c=\"#\"+C(f),(l.match(/[0-9]{1,3}/g)||[]).length>3&&\"rgba\"===r.attr(\"lay-type\")){var u=280*l.slice(l.lastIndexOf(\",\")+1,l.length-1);e.elemPicker.find(\".\"+h).css(\"left\",u),r[0].style.background=l,c=l}}else f=y(l),r[0].style.background=c=\"#\"+C(f),e.elemColorBox.find(\".\"+d).removeClass(s).addClass(a);return\"change\"===n?(e.select(f.h,f.s,f.b,n),void(o.change&&o.change(c))):(e.color=l,o.done&&o.done(l),void e.removePicker())}};e.elemPicker.on(\"click\",\"*[colorpicker-events]\",function(){var e=i(this),o=e.attr(\"colorpicker-events\");n[o]&&n[o].call(this,e)}),t.on(\"keyup\",function(e){var o=i(this);n.confirm.call(this,o,13===e.keyCode?null:\"change\")})},D.prototype.events=function(){var e=this,o=e.config,r=e.elemColorBox.find(\".\"+f);e.elemColorBox.on(\"click\",function(){e.renderPicker(),i(c)[0]&&(e.val(),e.side())}),o.elem[0]&&!e.elemColorBox[0].eventHandler&&(w.on(\"click\",function(o){if(!i(o.target).hasClass(l)&&!i(o.target).parents(\".\"+l)[0]&&!i(o.target).hasClass(c.replace(/\\./g,\"\"))&&!i(o.target).parents(c)[0]&&e.elemPicker){if(e.color){var t=k(P(e.color));e.select(t.h,t.s,t.b)}else e.elemColorBox.find(\".\"+d).removeClass(a).addClass(s);r[0].style.background=e.color||\"\",e.removePicker()}}),B.on(\"resize\",function(){return!(!e.elemPicker||!i(c)[0])&&void e.position()}),e.elemColorBox[0].eventHandler=!0)},o.render=function(e){var i=new D(e);return r.call(i)},e(t,o)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/element.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(t){\"use strict\";var a=layui.$,i=(layui.hint(),layui.device()),e=\"element\",l=\"layui-this\",n=\"layui-show\",s=function(){this.config={}};s.prototype.set=function(t){var i=this;return a.extend(!0,i.config,t),i},s.prototype.on=function(t,a){return layui.onevent.call(this,e,t,a)},s.prototype.tabAdd=function(t,i){var e=\".layui-tab-title\",l=a(\".layui-tab[lay-filter=\"+t+\"]\"),n=l.children(e),s=n.children(\".layui-tab-bar\"),o=l.children(\".layui-tab-content\"),r='<li lay-id=\"'+(i.id||\"\")+'\"'+(i.attr?' lay-attr=\"'+i.attr+'\"':\"\")+\">\"+(i.title||\"unnaming\")+\"</li>\";return s[0]?s.before(r):n.append(r),o.append('<div class=\"layui-tab-item\">'+(i.content||\"\")+\"</div>\"),f.hideTabMore(!0),f.tabAuto(),this},s.prototype.tabDelete=function(t,i){var e=\".layui-tab-title\",l=a(\".layui-tab[lay-filter=\"+t+\"]\"),n=l.children(e),s=n.find('>li[lay-id=\"'+i+'\"]');return f.tabDelete(null,s),this},s.prototype.tabChange=function(t,i){var e=\".layui-tab-title\",l=a(\".layui-tab[lay-filter=\"+t+\"]\"),n=l.children(e),s=n.find('>li[lay-id=\"'+i+'\"]');return f.tabClick.call(s[0],null,null,s),this},s.prototype.tab=function(t){t=t||{},b.on(\"click\",t.headerElem,function(i){var e=a(this).index();f.tabClick.call(this,i,e,null,t)})},s.prototype.progress=function(t,i){var e=\"layui-progress\",l=a(\".\"+e+\"[lay-filter=\"+t+\"]\"),n=l.find(\".\"+e+\"-bar\"),s=n.find(\".\"+e+\"-text\");return n.css(\"width\",i),s.text(i),this};var o=\".layui-nav\",r=\"layui-nav-item\",c=\"layui-nav-bar\",u=\"layui-nav-tree\",d=\"layui-nav-child\",y=\"layui-nav-more\",h=\"layui-anim layui-anim-upbit\",f={tabClick:function(t,i,s,o){o=o||{};var r=s||a(this),i=i||r.parent().children(\"li\").index(r),c=o.headerElem?r.parent():r.parents(\".layui-tab\").eq(0),u=o.bodyElem?a(o.bodyElem):c.children(\".layui-tab-content\").children(\".layui-tab-item\"),d=r.find(\"a\"),y=c.attr(\"lay-filter\");\"javascript:;\"!==d.attr(\"href\")&&\"_blank\"===d.attr(\"target\")||(r.addClass(l).siblings().removeClass(l),u.eq(i).addClass(n).siblings().removeClass(n)),layui.event.call(this,e,\"tab(\"+y+\")\",{elem:c,index:i})},tabDelete:function(t,i){var n=i||a(this).parent(),s=n.index(),o=n.parents(\".layui-tab\").eq(0),r=o.children(\".layui-tab-content\").children(\".layui-tab-item\"),c=o.attr(\"lay-filter\");n.hasClass(l)&&(n.next()[0]?f.tabClick.call(n.next()[0],null,s+1):n.prev()[0]&&f.tabClick.call(n.prev()[0],null,s-1)),n.remove(),r.eq(s).remove(),setTimeout(function(){f.tabAuto()},50),layui.event.call(this,e,\"tabDelete(\"+c+\")\",{elem:o,index:s})},tabAuto:function(){var t=\"layui-tab-more\",e=\"layui-tab-bar\",l=\"layui-tab-close\",n=this;a(\".layui-tab\").each(function(){var s=a(this),o=s.children(\".layui-tab-title\"),r=(s.children(\".layui-tab-content\").children(\".layui-tab-item\"),'lay-stope=\"tabmore\"'),c=a('<span class=\"layui-unselect layui-tab-bar\" '+r+\"><i \"+r+' class=\"layui-icon\">&#xe61a;</i></span>');if(n===window&&8!=i.ie&&f.hideTabMore(!0),s.attr(\"lay-allowClose\")&&o.find(\"li\").each(function(){var t=a(this);if(!t.find(\".\"+l)[0]){var i=a('<i class=\"layui-icon layui-unselect '+l+'\">&#x1006;</i>');i.on(\"click\",f.tabDelete),t.append(i)}}),\"string\"!=typeof s.attr(\"lay-unauto\"))if(o.prop(\"scrollWidth\")>o.outerWidth()+1){if(o.find(\".\"+e)[0])return;o.append(c),s.attr(\"overflow\",\"\"),c.on(\"click\",function(a){o[this.title?\"removeClass\":\"addClass\"](t),this.title=this.title?\"\":\"收缩\"})}else o.find(\".\"+e).remove(),s.removeAttr(\"overflow\")})},hideTabMore:function(t){var i=a(\".layui-tab-title\");t!==!0&&\"tabmore\"===a(t.target).attr(\"lay-stope\")||(i.removeClass(\"layui-tab-more\"),i.find(\".layui-tab-bar\").attr(\"title\",\"\"))},clickThis:function(){var t=a(this),i=t.parents(o),n=i.attr(\"lay-filter\"),s=t.parent(),c=t.siblings(\".\"+d),y=\"string\"==typeof s.attr(\"lay-unselect\");\"javascript:;\"!==t.attr(\"href\")&&\"_blank\"===t.attr(\"target\")||y||c[0]||(i.find(\".\"+l).removeClass(l),s.addClass(l)),i.hasClass(u)&&(c.removeClass(h),c[0]&&(s[\"none\"===c.css(\"display\")?\"addClass\":\"removeClass\"](r+\"ed\"),\"all\"===i.attr(\"lay-shrink\")&&s.siblings().removeClass(r+\"ed\"))),layui.event.call(this,e,\"nav(\"+n+\")\",t)},collapse:function(){var t=a(this),i=t.find(\".layui-colla-icon\"),l=t.siblings(\".layui-colla-content\"),s=t.parents(\".layui-collapse\").eq(0),o=s.attr(\"lay-filter\"),r=\"none\"===l.css(\"display\");if(\"string\"==typeof s.attr(\"lay-accordion\")){var c=s.children(\".layui-colla-item\").children(\".\"+n);c.siblings(\".layui-colla-title\").children(\".layui-colla-icon\").html(\"&#xe602;\"),c.removeClass(n)}l[r?\"addClass\":\"removeClass\"](n),i.html(r?\"&#xe61a;\":\"&#xe602;\"),layui.event.call(this,e,\"collapse(\"+o+\")\",{title:t,content:l,show:r})}};s.prototype.init=function(t,e){var l=function(){return e?'[lay-filter=\"'+e+'\"]':\"\"}(),s={tab:function(){f.tabAuto.call({})},nav:function(){var t=200,e={},s={},p={},b=function(l,o,r){var c=a(this),f=c.find(\".\"+d);o.hasClass(u)?l.css({top:c.position().top,height:c.children(\"a\").outerHeight(),opacity:1}):(f.addClass(h),l.css({left:c.position().left+parseFloat(c.css(\"marginLeft\")),top:c.position().top+c.height()-l.height()}),e[r]=setTimeout(function(){l.css({width:c.width(),opacity:1})},i.ie&&i.ie<10?0:t),clearTimeout(p[r]),\"block\"===f.css(\"display\")&&clearTimeout(s[r]),s[r]=setTimeout(function(){f.addClass(n),c.find(\".\"+y).addClass(y+\"d\")},300))};a(o+l).each(function(i){var l=a(this),o=a('<span class=\"'+c+'\"></span>'),h=l.find(\".\"+r);l.find(\".\"+c)[0]||(l.append(o),h.on(\"mouseenter\",function(){b.call(this,o,l,i)}).on(\"mouseleave\",function(){l.hasClass(u)||(clearTimeout(s[i]),s[i]=setTimeout(function(){l.find(\".\"+d).removeClass(n),l.find(\".\"+y).removeClass(y+\"d\")},300))}),l.on(\"mouseleave\",function(){clearTimeout(e[i]),p[i]=setTimeout(function(){l.hasClass(u)?o.css({height:0,top:o.position().top+o.height()/2,opacity:0}):o.css({width:0,left:o.position().left+o.width()/2,opacity:0})},t)})),h.find(\"a\").each(function(){var t=a(this),i=(t.parent(),t.siblings(\".\"+d));i[0]&&!t.children(\".\"+y)[0]&&t.append('<span class=\"'+y+'\"></span>'),t.off(\"click\",f.clickThis).on(\"click\",f.clickThis)})})},breadcrumb:function(){var t=\".layui-breadcrumb\";a(t+l).each(function(){var t=a(this),i=\"lay-separator\",e=t.attr(i)||\"/\",l=t.find(\"a\");l.next(\"span[\"+i+\"]\")[0]||(l.each(function(t){t!==l.length-1&&a(this).after(\"<span \"+i+\">\"+e+\"</span>\")}),t.css(\"visibility\",\"visible\"))})},progress:function(){var t=\"layui-progress\";a(\".\"+t+l).each(function(){var i=a(this),e=i.find(\".layui-progress-bar\"),l=e.attr(\"lay-percent\");e.css(\"width\",function(){return/^.+\\/.+$/.test(l)?100*new Function(\"return \"+l)()+\"%\":l}()),i.attr(\"lay-showPercent\")&&setTimeout(function(){e.html('<span class=\"'+t+'-text\">'+l+\"</span>\")},350)})},collapse:function(){var t=\"layui-collapse\";a(\".\"+t+l).each(function(){var t=a(this).find(\".layui-colla-item\");t.each(function(){var t=a(this),i=t.find(\".layui-colla-title\"),e=t.find(\".layui-colla-content\"),l=\"none\"===e.css(\"display\");i.find(\".layui-colla-icon\").remove(),i.append('<i class=\"layui-icon layui-colla-icon\">'+(l?\"&#xe602;\":\"&#xe61a;\")+\"</i>\"),i.off(\"click\",f.collapse).on(\"click\",f.collapse)})})}};return s[t]?s[t]():layui.each(s,function(t,a){a()})},s.prototype.render=s.prototype.init;var p=new s,b=a(document);p.render();var v=\".layui-tab-title li\";b.on(\"click\",v,f.tabClick),b.on(\"click\",f.hideTabMore),a(window).on(\"resize\",f.tabAuto),t(e,p)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/flow.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var l=layui.$,o=function(e){},t='<i class=\"layui-anim layui-anim-rotate layui-anim-loop layui-icon \">&#xe63e;</i>';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!(\"isAuto\"in e)||e.isAuto,v=e.end||\"没有更多了\",y=e.scrollElem&&e.scrollElem!==document,d=\"<cite>加载更多</cite>\",h=l('<div class=\"layui-flow-more\"><a href=\"javascript:;\">'+d+\"</a></div>\");f.find(\".layui-flow-more\")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find(\"a\").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find(\"a\").html(t),\"function\"==typeof e.done&&e.done(++c,p)};if(g(),h.find(\"a\").on(\"click\",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+\" img\",scrollElem:e.scrollElem});return s?(m.on(\"scroll\",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),!i&&f.width()&&(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop(\"scrollHeight\"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||\"img\",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr(\"src\")){var m=e.attr(\"lay-src\");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr(\"src\",m).removeAttr(\"lay-src\"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;s<t.lazyimg.elem.length;s++){var v=t.lazyimg.elem.eq(s),y=a?function(){return v.offset().top-n.offset().top+m}():v.offset().top;if(c(v,f),i=s,y>u)break}};if(f(),!o){var m;n.on(\"scroll\",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e(\"flow\",new o)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/form.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(\"layer\",function(e){\"use strict\";var t=layui.$,i=layui.layer,a=layui.hint(),n=layui.device(),l=\"form\",r=\".layui-form\",s=\"layui-this\",o=\"layui-hide\",c=\"layui-disabled\",u=function(){this.config={verify:{required:[/[\\S]+/,\"必填项不能为空\"],phone:[/^1\\d{10}$/,\"请输入正确的手机号\"],email:[/^([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+$/,\"邮箱格式不正确\"],url:[/(^#)|(^http(s*):\\/\\/[^\\s]+\\.[^\\s]+)/,\"链接格式不正确\"],number:function(e){if(!e||isNaN(e))return\"只能填写数字\"},date:[/^(\\d{4})[-\\/](\\d{1}|0\\d{1}|1[0-2])([-\\/](\\d{1}|0\\d{1}|[1-2][0-9]|3[0-1]))*$/,\"日期格式不正确\"],identity:[/(^\\d{15}$)|(^\\d{17}(x|X|\\d)$)/,\"请输入正确的身份证号\"]}}};u.prototype.set=function(e){var i=this;return t.extend(!0,i.config,e),i},u.prototype.verify=function(e){var i=this;return t.extend(!0,i.config.verify,e),i},u.prototype.on=function(e,t){return layui.onevent.call(this,l,e,t)},u.prototype.val=function(e,i){var a=this,n=t(r+'[lay-filter=\"'+e+'\"]');return n.each(function(e,a){var n=t(this);layui.each(i,function(e,t){var i,a=n.find('[name=\"'+e+'\"]');a[0]&&(i=a[0].type,\"checkbox\"===i?a[0].checked=t:\"radio\"===i?a.each(function(){this.value==t&&(this.checked=!0)}):a.val(t))})}),f.render(null,e),a.getValue(e)},u.prototype.getValue=function(e,i){i=i||t(r+'[lay-filter=\"'+e+'\"]').eq(0);var a={},n={},l=i.find(\"input,select,textarea\");return layui.each(l,function(e,t){if(t.name=(t.name||\"\").replace(/^\\s*|\\s*&/,\"\"),t.name){if(/^.*\\[\\]$/.test(t.name)){var i=t.name.match(/^(.*)\\[\\]$/g)[0];a[i]=0|a[i],t.name=t.name.replace(/^(.*)\\[\\]$/,\"$1[\"+a[i]++ +\"]\")}/^checkbox|radio$/.test(t.type)&&!t.checked||(n[t.name]=t.value)}}),n},u.prototype.render=function(e,i){var n=this,u=t(r+function(){return i?'[lay-filter=\"'+i+'\"]':\"\"}()),d={select:function(){var e,i=\"请选择\",a=\"layui-form-select\",n=\"layui-select-title\",r=\"layui-select-none\",d=\"\",f=u.find(\"select\"),v=function(i,l){t(i.target).parent().hasClass(n)&&!l||(t(\".\"+a).removeClass(a+\"ed \"+a+\"up\"),e&&d&&e.val(d)),e=null},y=function(i,u,f){var y,p=t(this),m=i.find(\".\"+n),k=m.find(\"input\"),g=i.find(\"dl\"),x=g.children(\"dd\"),b=this.selectedIndex;if(!u){var C=function(){var e=i.offset().top+i.outerHeight()+5-h.scrollTop(),t=g.outerHeight();b=p[0].selectedIndex,i.addClass(a+\"ed\"),x.removeClass(o),y=null,x.eq(b).addClass(s).siblings().removeClass(s),e+t>h.height()&&e>=t&&i.addClass(a+\"up\"),T()},w=function(e){i.removeClass(a+\"ed \"+a+\"up\"),k.blur(),y=null,e||$(k.val(),function(e){var i=p[0].selectedIndex;e&&(d=t(p[0].options[i]).html(),0===i&&d===k.attr(\"placeholder\")&&(d=\"\"),k.val(d||\"\"))})},T=function(){var e=g.children(\"dd.\"+s);if(e[0]){var t=e.position().top,i=g.height(),a=e.height();t>i&&g.scrollTop(t+g.scrollTop()-i+a-5),t<0&&g.scrollTop(t+g.scrollTop()-5)}};m.on(\"click\",function(e){i.hasClass(a+\"ed\")?w():(v(e,!0),C()),g.find(\".\"+r).remove()}),m.find(\".layui-edge\").on(\"click\",function(){k.focus()}),k.on(\"keyup\",function(e){var t=e.keyCode;9===t&&C()}).on(\"keydown\",function(e){var t=e.keyCode;9===t&&w();var i=function(t,a){var n,l;e.preventDefault();var r=function(){var e=g.children(\"dd.\"+s);if(g.children(\"dd.\"+o)[0]&&\"next\"===t){var i=g.children(\"dd:not(.\"+o+\",.\"+c+\")\"),n=i.eq(0).index();if(n>=0&&n<e.index()&&!i.hasClass(s))return i.eq(0).prev()[0]?i.eq(0).prev():g.children(\":last\")}return a&&a[0]?a:y&&y[0]?y:e}();return l=r[t](),n=r[t](\"dd:not(.\"+o+\")\"),l[0]?(y=r[t](),n[0]&&!n.hasClass(c)||!y[0]?(n.addClass(s).siblings().removeClass(s),void T()):i(t,y)):y=null};38===t&&i(\"prev\"),40===t&&i(\"next\"),13===t&&(e.preventDefault(),g.children(\"dd.\"+s).trigger(\"click\"))});var $=function(e,i,a){var n=0;layui.each(x,function(){var i=t(this),l=i.text(),r=l.indexOf(e)===-1;(\"\"===e||\"blur\"===a?e!==l:r)&&n++,\"keyup\"===a&&i[r?\"addClass\":\"removeClass\"](o)});var l=n===x.length;return i(l),l},q=function(e){var t=this.value,i=e.keyCode;return 9!==i&&13!==i&&37!==i&&38!==i&&39!==i&&40!==i&&($(t,function(e){e?g.find(\".\"+r)[0]||g.append('<p class=\"'+r+'\">无匹配项</p>'):g.find(\".\"+r).remove()},\"keyup\"),\"\"===t&&g.find(\".\"+r).remove(),void T())};f&&k.on(\"keyup\",q).on(\"blur\",function(i){var a=p[0].selectedIndex;e=k,d=t(p[0].options[a]).html(),0===a&&d===k.attr(\"placeholder\")&&(d=\"\"),setTimeout(function(){$(k.val(),function(e){d||k.val(\"\")},\"blur\")},200)}),x.on(\"click\",function(){var e=t(this),a=e.attr(\"lay-value\"),n=p.attr(\"lay-filter\");return!e.hasClass(c)&&(e.hasClass(\"layui-select-tips\")?k.val(\"\"):(k.val(e.text()),e.addClass(s)),e.siblings().removeClass(s),p.val(a).removeClass(\"layui-form-danger\"),layui.event.call(this,l,\"select(\"+n+\")\",{elem:p[0],value:a,othis:i}),w(!0),!1)}),i.find(\"dl>dt\").on(\"click\",function(e){return!1}),t(document).off(\"click\",v).on(\"click\",v)}};f.each(function(e,l){var r=t(this),o=r.next(\".\"+a),u=this.disabled,d=l.value,f=t(l.options[l.selectedIndex]),v=l.options[0];if(\"string\"==typeof r.attr(\"lay-ignore\"))return r.show();var h=\"string\"==typeof r.attr(\"lay-search\"),p=v?v.value?i:v.innerHTML||i:i,m=t(['<div class=\"'+(h?\"\":\"layui-unselect \")+a,(u?\" layui-select-disabled\":\"\")+'\">','<div class=\"'+n+'\">','<input type=\"text\" placeholder=\"'+p+'\" '+('value=\"'+(d?f.html():\"\")+'\"')+(!u&&h?\"\":\" readonly\")+' class=\"layui-input'+(h?\"\":\" layui-unselect\")+(u?\" \"+c:\"\")+'\">','<i class=\"layui-edge\"></i></div>','<dl class=\"layui-anim layui-anim-upbit'+(r.find(\"optgroup\")[0]?\" layui-select-group\":\"\")+'\">',function(e){var t=[];return layui.each(e,function(e,a){0!==e||a.value?\"optgroup\"===a.tagName.toLowerCase()?t.push(\"<dt>\"+a.label+\"</dt>\"):t.push('<dd lay-value=\"'+a.value+'\" class=\"'+(d===a.value?s:\"\")+(a.disabled?\" \"+c:\"\")+'\">'+a.innerHTML+\"</dd>\"):t.push('<dd lay-value=\"\" class=\"layui-select-tips\">'+(a.innerHTML||i)+\"</dd>\")}),0===t.length&&t.push('<dd lay-value=\"\" class=\"'+c+'\">没有选项</dd>'),t.join(\"\")}(r.find(\"*\"))+\"</dl>\",\"</div>\"].join(\"\"));o[0]&&o.remove(),r.after(m),y.call(this,m,u,h)})},checkbox:function(){var e={checkbox:[\"layui-form-checkbox\",\"layui-form-checked\",\"checkbox\"],_switch:[\"layui-form-switch\",\"layui-form-onswitch\",\"switch\"]},i=u.find(\"input[type=checkbox]\"),a=function(e,i){var a=t(this);e.on(\"click\",function(){var t=a.attr(\"lay-filter\"),n=(a.attr(\"lay-text\")||\"\").split(\"|\");a[0].disabled||(a[0].checked?(a[0].checked=!1,e.removeClass(i[1]).find(\"em\").text(n[1])):(a[0].checked=!0,e.addClass(i[1]).find(\"em\").text(n[0])),layui.event.call(a[0],l,i[2]+\"(\"+t+\")\",{elem:a[0],value:a[0].value,othis:e}))})};i.each(function(i,n){var l=t(this),r=l.attr(\"lay-skin\"),s=(l.attr(\"lay-text\")||\"\").split(\"|\"),o=this.disabled;\"switch\"===r&&(r=\"_\"+r);var u=e[r]||e.checkbox;if(\"string\"==typeof l.attr(\"lay-ignore\"))return l.show();var d=l.next(\".\"+u[0]),f=t(['<div class=\"layui-unselect '+u[0],n.checked?\" \"+u[1]:\"\",o?\" layui-checkbox-disbaled \"+c:\"\",'\"',r?' lay-skin=\"'+r+'\"':\"\",\">\",function(){var e=n.title.replace(/\\s/g,\"\"),t={checkbox:[e?\"<span>\"+n.title+\"</span>\":\"\",'<i class=\"layui-icon layui-icon-ok\"></i>'].join(\"\"),_switch:\"<em>\"+((n.checked?s[0]:s[1])||\"\")+\"</em><i></i>\"};return t[r]||t.checkbox}(),\"</div>\"].join(\"\"));d[0]&&d.remove(),l.after(f),a.call(this,f,u)})},radio:function(){var e=\"layui-form-radio\",i=[\"&#xe643;\",\"&#xe63f;\"],a=u.find(\"input[type=radio]\"),n=function(a){var n=t(this),s=\"layui-anim-scaleSpring\";a.on(\"click\",function(){var o=n[0].name,c=n.parents(r),u=n.attr(\"lay-filter\"),d=c.find(\"input[name=\"+o.replace(/(\\.|#|\\[|\\])/g,\"\\\\$1\")+\"]\");n[0].disabled||(layui.each(d,function(){var a=t(this).next(\".\"+e);this.checked=!1,a.removeClass(e+\"ed\"),a.find(\".layui-icon\").removeClass(s).html(i[1])}),n[0].checked=!0,a.addClass(e+\"ed\"),a.find(\".layui-icon\").addClass(s).html(i[0]),layui.event.call(n[0],l,\"radio(\"+u+\")\",{elem:n[0],value:n[0].value,othis:a}))})};a.each(function(a,l){var r=t(this),s=r.next(\".\"+e),o=this.disabled;if(\"string\"==typeof r.attr(\"lay-ignore\"))return r.show();s[0]&&s.remove();var u=t(['<div class=\"layui-unselect '+e,l.checked?\" \"+e+\"ed\":\"\",(o?\" layui-radio-disbaled \"+c:\"\")+'\">','<i class=\"layui-anim layui-icon\">'+i[l.checked?0:1]+\"</i>\",\"<div>\"+function(){var e=l.title||\"\";return\"string\"==typeof r.next().attr(\"lay-radio\")&&(e=r.next().html(),r.next().remove()),e}()+\"</div>\",\"</div>\"].join(\"\"));r.after(u),n.call(this,u)})}};return e?d[e]?d[e]():a.error(\"不支持的\"+e+\"表单渲染\"):layui.each(d,function(e,t){t()}),n};var d=function(){var e=null,a=f.config.verify,s=\"layui-form-danger\",o={},c=t(this),u=c.parents(r),d=u.find(\"*[lay-verify]\"),v=c.parents(\"form\")[0],h=c.attr(\"lay-filter\");return layui.each(d,function(l,r){var o=t(this),c=o.attr(\"lay-verify\").split(\"|\"),u=o.attr(\"lay-verType\"),d=o.val();if(o.removeClass(s),layui.each(c,function(t,l){var c,f=\"\",v=\"function\"==typeof a[l];if(a[l]){var c=v?f=a[l](d,r):!a[l][0].test(d);if(f=f||a[l][1],\"required\"===l&&(f=o.attr(\"lay-reqText\")||f),c)return\"tips\"===u?i.tips(f,function(){return\"string\"==typeof o.attr(\"lay-ignore\")||\"select\"!==r.tagName.toLowerCase()&&!/^checkbox|radio$/.test(r.type)?o:o.next()}(),{tips:1}):\"alert\"===u?i.alert(f,{title:\"提示\",shadeClose:!0}):i.msg(f,{icon:5,shift:6}),n.android||n.ios||setTimeout(function(){r.focus()},7),o.addClass(s),e=!0}}),e)return e}),!e&&(o=f.getValue(null,u),layui.event.call(this,l,\"submit(\"+h+\")\",{elem:this,form:v,field:o}))},f=new u,v=t(document),h=t(window);f.render(),v.on(\"reset\",r,function(){var e=t(this).attr(\"lay-filter\");setTimeout(function(){f.render(null,e)},50)}),v.on(\"submit\",r,d).on(\"click\",\"*[lay-submit]\",d),e(l,f)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/jquery.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;!function(e,t){\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(e,t){function n(e){var t=!!e&&\"length\"in e&&e.length,n=pe.type(e);return\"function\"!==n&&!pe.isWindow(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&t>0&&t-1 in e)}function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if(\"string\"==typeof t){if(Ce.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]=!0}),t}function a(){re.addEventListener?(re.removeEventListener(\"DOMContentLoaded\",s),e.removeEventListener(\"load\",s)):(re.detachEvent(\"onreadystatechange\",s),e.detachEvent(\"onload\",s))}function s(){(re.addEventListener||\"load\"===e.event.type||\"complete\"===re.readyState)&&(a(),pe.ready())}function u(e,t,n){if(void 0===n&&1===e.nodeType){var r=\"data-\"+t.replace(_e,\"-$1\").toLowerCase();if(n=e.getAttribute(r),\"string\"==typeof n){try{n=\"true\"===n||\"false\"!==n&&(\"null\"===n?null:+n+\"\"===n?+n:qe.test(n)?pe.parseJSON(n):n)}catch(i){}pe.data(e,t,n)}else n=void 0}return n}function l(e){var t;for(t in e)if((\"data\"!==t||!pe.isEmptyObject(e[t]))&&\"toJSON\"!==t)return!1;return!0}function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.cache:e,l=s?e[a]:e[a]&&a;if(l&&u[l]&&(r||u[l].data)||void 0!==n||\"string\"!=typeof t)return l||(l=s?e[a]=ne.pop()||pe.guid++:a),u[l]||(u[l]=s?{}:{toJSON:pe.noop}),\"object\"!=typeof t&&\"function\"!=typeof t||(r?u[l]=pe.extend(u[l],t):u[l].data=pe.extend(u[l].data,t)),o=u[l],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),\"string\"==typeof t?(i=o[t],null==i&&(i=o[pe.camelCase(t)])):i=o,i}}function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in r?t=[t]:(t=pe.camelCase(t),t=t in r?[t]:t.split(\" \")),i=t.length;for(;i--;)delete r[t[i]];if(n?!l(r):!pe.isEmptyObject(r))return}(n||(delete a[s].data,l(a[s])))&&(o?pe.cleanData([e],!0):fe.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return pe.css(e,t,\"\")},u=s(),l=n&&n[3]||(pe.cssNumber[t]?\"\":\"px\"),c=(pe.cssNumber[t]||\"px\"!==l&&+u)&&Me.exec(pe.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do o=o||\".5\",c/=o,pe.style(e,t,c+l);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function p(e){var t=ze.split(\"|\"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,r,i=0,o=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||pe.nodeName(r,t)?o.push(r):pe.merge(o,h(r,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,\"globalEval\",!t||pe._data(t[r],\"globalEval\"))}function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x<d;x++)if(a=e[x],a||0===a)if(\"object\"===pe.type(a))pe.merge(v,a.nodeType?[a]:a);else if(Ue.test(a)){for(u=u||y.appendChild(t.createElement(\"div\")),l=(We.exec(a)||[\"\",\"\"])[1].toLowerCase(),f=Xe[l]||Xe._default,u.innerHTML=f[1]+pe.htmlPrefilter(a)+f[2],o=f[0];o--;)u=u.lastChild;if(!fe.leadingWhitespace&&$e.test(a)&&v.push(t.createTextNode($e.exec(a)[0])),!fe.tbody)for(a=\"table\"!==l||Ve.test(a)?\"<table>\"!==f[1]||Ve.test(a)?0:u:u.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],\"tbody\")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(v,u.childNodes),u.textContent=\"\";u.firstChild;)u.removeChild(u.firstChild);u=y.lastChild}else v.push(t.createTextNode(a));for(u&&y.removeChild(u),fe.appendChecked||pe.grep(h(v,\"input\"),m),x=0;a=v[x++];)if(r&&pe.inArray(a,r)>-1)i&&i.push(a);else if(s=pe.contains(a.ownerDocument,a),u=h(y.appendChild(a),\"script\"),s&&g(u),n)for(o=0;a=u[o++];)Ie.test(a.type||\"\")&&n.push(a);return u=null,y}function v(){return!0}function x(){return!1}function b(){try{return re.activeElement}catch(e){}}function w(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){\"string\"!=typeof n&&(r=r||n,n=void 0);for(s in t)w(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=x;else if(!i)return e;return 1===o&&(a=i,i=function(e){return pe().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,i,r,n)})}function T(e,t){return pe.nodeName(e,\"table\")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,\"tr\")?e.getElementsByTagName(\"tbody\")[0]||e.appendChild(e.ownerDocument.createElement(\"tbody\")):e}function C(e){return e.type=(null!==pe.find.attr(e,\"type\"))+\"/\"+e.type,e}function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribute(\"type\"),e}function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;r<i;r++)pe.event.add(t,n,s[n][r])}a.data&&(a.data=pe.extend({},a.data))}}function k(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!fe.noCloneEvent&&t[pe.expando]){i=pe._data(t);for(r in i.events)pe.removeEvent(t,r,i.handle);t.removeAttribute(pe.expando)}\"script\"===n&&t.text!==e.text?(C(t).text=e.text,E(t)):\"object\"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),fe.html5Clone&&e.innerHTML&&!pe.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):\"input\"===n&&Be.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):\"option\"===n?t.defaultSelected=t.selected=e.defaultSelected:\"input\"!==n&&\"textarea\"!==n||(t.defaultValue=e.defaultValue)}}function S(e,t,n,r){t=oe.apply([],t);var i,o,a,s,u,l,c=0,f=e.length,d=f-1,p=t[0],g=pe.isFunction(p);if(g||f>1&&\"string\"==typeof p&&!fe.checkClone&&rt.test(p))return e.each(function(i){var o=e.eq(i);g&&(t[0]=p.call(this,i,o.html())),S(o,t,n,r)});if(f&&(l=y(t,e[0].ownerDocument,!1,e,r),i=l.firstChild,1===l.childNodes.length&&(l=i),i||r)){for(s=pe.map(h(l,\"script\"),C),a=s.length;c<f;c++)o=l,c!==d&&(o=pe.clone(o,!0,!0),a&&pe.merge(s,h(o,\"script\"))),n.call(e[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,pe.map(s,E),c=0;c<a;c++)o=s[c],Ie.test(o.type||\"\")&&!pe._data(o,\"globalEval\")&&pe.contains(u,o)&&(o.src?pe._evalUrl&&pe._evalUrl(o.src):pe.globalEval((o.text||o.textContent||o.innerHTML||\"\").replace(ot,\"\")));l=i=null}return e}function A(e,t,n){for(var r,i=t?pe.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||pe.cleanData(h(r)),r.parentNode&&(n&&pe.contains(r.ownerDocument,r)&&g(h(r,\"script\")),r.parentNode.removeChild(r));return e}function D(e,t){var n=pe(t.createElement(e)).appendTo(t.body),r=pe.css(n[0],\"display\");return n.detach(),r}function j(e){var t=re,n=lt[e];return n||(n=D(e,t),\"none\"!==n&&n||(ut=(ut||pe(\"<iframe frameborder='0' width='0' height='0'/>\")).appendTo(t.documentElement),t=(ut[0].contentWindow||ut[0].contentDocument).document,t.write(),t.close(),n=D(e,t),ut.detach()),lt[e]=n),n}function L(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Ct.length;n--;)if(e=Ct[n]+t,e in Et)return e}function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a<s;a++)r=e[a],r.style&&(o[a]=pe._data(r,\"olddisplay\"),n=r.style.display,t?(o[a]||\"none\"!==n||(r.style.display=\"\"),\"\"===r.style.display&&Re(r)&&(o[a]=pe._data(r,\"olddisplay\",j(r.nodeName)))):(i=Re(r),(n&&\"none\"!==n||!i)&&pe._data(r,\"olddisplay\",i?n:pe.css(r,\"display\"))));for(a=0;a<s;a++)r=e[a],r.style&&(t&&\"none\"!==r.style.display&&\"\"!==r.style.display||(r.style.display=t?o[a]||\"\":\"none\"));return e}function _(e,t,n){var r=bt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||\"px\"):t}function F(e,t,n,r,i){for(var o=n===(r?\"border\":\"content\")?4:\"width\"===t?1:0,a=0;o<4;o+=2)\"margin\"===n&&(a+=pe.css(e,n+Oe[o],!0,i)),r?(\"content\"===n&&(a-=pe.css(e,\"padding\"+Oe[o],!0,i)),\"margin\"!==n&&(a-=pe.css(e,\"border\"+Oe[o]+\"Width\",!0,i))):(a+=pe.css(e,\"padding\"+Oe[o],!0,i),\"padding\"!==n&&(a+=pe.css(e,\"border\"+Oe[o]+\"Width\",!0,i)));return a}function M(t,n,r){var i=!0,o=\"width\"===n?t.offsetWidth:t.offsetHeight,a=ht(t),s=fe.boxSizing&&\"border-box\"===pe.css(t,\"boxSizing\",!1,a);if(re.msFullscreenElement&&e.top!==e&&t.getClientRects().length&&(o=Math.round(100*t.getBoundingClientRect()[n])),o<=0||null==o){if(o=gt(t,n,a),(o<0||null==o)&&(o=t.style[n]),ft.test(o))return o;i=s&&(fe.boxSizingReliable()||o===t.style[n]),o=parseFloat(o)||0}return o+F(t,n,r||(s?\"border\":\"content\"),i,a)+\"px\"}function O(e,t,n,r,i){return new O.prototype.init(e,t,n,r,i)}function R(){return e.setTimeout(function(){Nt=void 0}),Nt=pe.now()}function P(e,t){var n,r={height:e},i=0;for(t=t?1:0;i<4;i+=2-t)n=Oe[i],r[\"margin\"+n]=r[\"padding\"+n]=e;return t&&(r.opacity=r.width=e),r}function B(e,t,n){for(var r,i=($.tweeners[t]||[]).concat($.tweeners[\"*\"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function W(e,t,n){var r,i,o,a,s,u,l,c,f=this,d={},p=e.style,h=e.nodeType&&Re(e),g=pe._data(e,\"fxshow\");n.queue||(s=pe._queueHooks(e,\"fx\"),null==s.unqueued&&(s.unqueued=0,u=s.empty.fire,s.empty.fire=function(){s.unqueued||u()}),s.unqueued++,f.always(function(){f.always(function(){s.unqueued--,pe.queue(e,\"fx\").length||s.empty.fire()})})),1===e.nodeType&&(\"height\"in t||\"width\"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],l=pe.css(e,\"display\"),c=\"none\"===l?pe._data(e,\"olddisplay\")||j(e.nodeName):l,\"inline\"===c&&\"none\"===pe.css(e,\"float\")&&(fe.inlineBlockNeedsLayout&&\"inline\"!==j(e.nodeName)?p.zoom=1:p.display=\"inline-block\")),n.overflow&&(p.overflow=\"hidden\",fe.shrinkWrapBlocks()||f.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],St.exec(i)){if(delete t[r],o=o||\"toggle\"===i,i===(h?\"hide\":\"show\")){if(\"show\"!==i||!g||void 0===g[r])continue;h=!0}d[r]=g&&g[r]||pe.style(e,r)}else l=void 0;if(pe.isEmptyObject(d))\"inline\"===(\"none\"===l?j(e.nodeName):l)&&(p.display=l);else{g?\"hidden\"in g&&(h=g.hidden):g=pe._data(e,\"fxshow\",{}),o&&(g.hidden=!h),h?pe(e).show():f.done(function(){pe(e).hide()}),f.done(function(){var t;pe._removeData(e,\"fxshow\");for(t in d)pe.style(e,t,d[t])});for(r in d)a=B(h?g[r]:0,r,f),r in g||(g[r]=a.start,h&&(a.end=a.start,a.start=\"width\"===r||\"height\"===r?1:0))}}function I(e,t){var n,r,i,o,a;for(n in e)if(r=pe.camelCase(n),i=t[r],o=e[n],pe.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=pe.cssHooks[r],a&&\"expand\"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function $(e,t,n){var r,i,o=0,a=$.prefilters.length,s=pe.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=Nt||R(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;a<u;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),o<1&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:pe.extend({},t),opts:pe.extend(!0,{specialEasing:{},easing:pe.easing._default},n),originalProperties:t,originalOptions:n,startTime:Nt||R(),duration:n.duration,tweens:[],createTween:function(t,n){var r=pe.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(I(c,l.opts.specialEasing);o<a;o++)if(r=$.prefilters[o].call(l,e,c,l.opts))return pe.isFunction(r.stop)&&(pe._queueHooks(l.elem,l.opts.queue).stop=pe.proxy(r.stop,r)),r;return pe.map(c,B,l),pe.isFunction(l.opts.start)&&l.opts.start.call(e,l),pe.fx.timer(pe.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function z(e){return pe.attr(e,\"class\")||\"\"}function X(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(De)||[];if(pe.isFunction(n))for(;r=o[i++];)\"+\"===r.charAt(0)?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function U(e,t,n,r){function i(s){var u;return o[s]=!0,pe.each(e[s]||[],function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||a||o[l]?a?!(u=l):void 0:(t.dataTypes.unshift(l),i(l),!1)}),u}var o={},a=e===Qt;return i(t.dataTypes[0])||!o[\"*\"]&&i(\"*\")}function V(e,t){var n,r,i=pe.ajaxSettings.flatOptions||{};for(r in t)void 0!==t[r]&&((i[r]?e:n||(n={}))[r]=t[r]);return n&&pe.extend(!0,e,n),e}function Y(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(i)for(a in s)if(s[a]&&s[a].test(i)){u.unshift(a);break}if(u[0]in n)o=u[0];else{for(a in n){if(!u[0]||e.converters[a+\" \"+u[0]]){o=a;break}r||(r=a)}o=o||r}if(o)return o!==u[0]&&u.unshift(o),n[o]}function J(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(a=l[u+\" \"+o]||l[\"* \"+o],!a)for(i in l)if(s=i.split(\" \"),s[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){a===!0?a=l[i]:l[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e[\"throws\"])t=a(t);else try{t=a(t)}catch(f){return{state:\"parsererror\",error:a?f:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}function G(e){return e.style&&e.style.display||pe.css(e,\"display\")}function K(e){for(;e&&1===e.nodeType;){if(\"none\"===G(e)||\"hidden\"===e.type)return!0;e=e.parentNode}return!1}function Q(e,t,n,r){var i;if(pe.isArray(t))pe.each(t,function(t,i){n||rn.test(e)?r(e,i):Q(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)});else if(n||\"object\"!==pe.type(t))r(e,t);else for(i in t)Q(e+\"[\"+i+\"]\",t[i],n,r)}function Z(){try{return new e.XMLHttpRequest}catch(t){}}function ee(){try{return new e.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(t){}}function te(e){return pe.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e.parentWindow)}var ne=[],re=e.document,ie=ne.slice,oe=ne.concat,ae=ne.push,se=ne.indexOf,ue={},le=ue.toString,ce=ue.hasOwnProperty,fe={},de=\"1.12.3\",pe=function(e,t){return new pe.fn.init(e,t)},he=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,ge=/^-ms-/,me=/-([\\da-z])/gi,ye=function(e,t){return t.toUpperCase()};pe.fn=pe.prototype={jquery:de,constructor:pe,selector:\"\",length:0,toArray:function(){return ie.call(this)},get:function(e){return null!=e?e<0?this[e+this.length]:this[e]:ie.call(this)},pushStack:function(e){var t=pe.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return pe.each(this,e)},map:function(e){return this.pushStack(pe.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(ie.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ae,sort:ne.sort,splice:ne.splice},pe.extend=pe.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for(\"boolean\"==typeof a&&(l=a,a=arguments[s]||{},s++),\"object\"==typeof a||pe.isFunction(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(i=arguments[s]))for(r in i)e=a[r],n=i[r],a!==n&&(l&&n&&(pe.isPlainObject(n)||(t=pe.isArray(n)))?(t?(t=!1,o=e&&pe.isArray(e)?e:[]):o=e&&pe.isPlainObject(e)?e:{},a[r]=pe.extend(l,o,n)):void 0!==n&&(a[r]=n));return a},pe.extend({expando:\"jQuery\"+(de+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return\"function\"===pe.type(e)},isArray:Array.isArray||function(e){return\"array\"===pe.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){var t=e&&e.toString();return!pe.isArray(e)&&t-parseFloat(t)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||\"object\"!==pe.type(e)||e.nodeType||pe.isWindow(e))return!1;try{if(e.constructor&&!ce.call(e,\"constructor\")&&!ce.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(n){return!1}if(!fe.ownFirst)for(t in e)return ce.call(e,t);for(t in e);return void 0===t||ce.call(e,t)},type:function(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?ue[le.call(e)]||\"object\":typeof e},globalEval:function(t){t&&pe.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(ge,\"ms-\").replace(me,ye)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var r,i=0;if(n(e))for(r=e.length;i<r&&t.call(e[i],i,e[i])!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i])===!1)break;return e},trim:function(e){return null==e?\"\":(e+\"\").replace(he,\"\")},makeArray:function(e,t){var r=t||[];return null!=e&&(n(Object(e))?pe.merge(r,\"string\"==typeof e?[e]:e):ae.call(r,e)),r},inArray:function(e,t,n){var r;if(t){if(se)return se.call(t,e,n);for(r=t.length,n=n?n<0?Math.max(0,r+n):n:0;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;)e[i++]=t[r++];if(n!==n)for(;void 0!==t[r];)e[i++]=t[r++];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)r=!t(e[o],o),r!==s&&i.push(e[o]);return i},map:function(e,t,r){var i,o,a=0,s=[];if(n(e))for(i=e.length;a<i;a++)o=t(e[a],a,r),null!=o&&s.push(o);else for(a in e)o=t(e[a],a,r),null!=o&&s.push(o);return oe.apply([],s)},guid:1,proxy:function(e,t){var n,r,i;if(\"string\"==typeof t&&(i=e[t],t=e,e=i),pe.isFunction(e))return n=ie.call(arguments,2),r=function(){return e.apply(t||this,n.concat(ie.call(arguments)))},r.guid=e.guid=e.guid||pe.guid++,r},now:function(){return+new Date},support:fe}),\"function\"==typeof Symbol&&(pe.fn[Symbol.iterator]=ne[Symbol.iterator]),pe.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(e,t){ue[\"[object \"+t+\"]\"]=t.toLowerCase()});var ve=function(e){function t(e,t,n,r){var i,o,a,s,u,l,f,p,h=t&&t.ownerDocument,g=t?t.nodeType:9;if(n=n||[],\"string\"!=typeof e||!e||1!==g&&9!==g&&11!==g)return n;if(!r&&((t?t.ownerDocument||t:B)!==H&&L(t),t=t||H,_)){if(11!==g&&(l=ye.exec(e)))if(i=l[1]){if(9===g){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(h&&(a=h.getElementById(i))&&R(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&w.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(i)),n}if(w.qsa&&!X[e+\" \"]&&(!F||!F.test(e))){if(1!==g)h=t,p=e;else if(\"object\"!==t.nodeName.toLowerCase()){for((s=t.getAttribute(\"id\"))?s=s.replace(xe,\"\\\\$&\"):t.setAttribute(\"id\",s=P),f=N(e),o=f.length,u=de.test(s)?\"#\"+s:\"[id='\"+s+\"']\";o--;)f[o]=u+\" \"+d(f[o]);p=f.join(\",\"),h=ve.test(e)&&c(t.parentNode)||t}if(p)try{return Q.apply(n,h.querySelectorAll(p)),n}catch(m){}finally{s===P&&t.removeAttribute(\"id\")}}}return S(e.replace(se,\"$1\"),t,n,r)}function n(){function e(n,r){return t.push(n+\" \")>T.cacheLength&&delete e[t.shift()],e[n+\" \"]=r}var t=[];return e}function r(e){return e[P]=!0,e}function i(e){var t=H.createElement(\"div\");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split(\"|\"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||V)-(~e.sourceIndex||V);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return\"input\"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}function f(){}function d(e){for(var t=0,n=e.length,r=\"\";t<n;t++)r+=e[t].value;return r}function p(e,t,n){var r=t.dir,i=n&&\"parentNode\"===r,o=I++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,u,l,c=[W,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(l=t[P]||(t[P]={}),u=l[t.uniqueID]||(l[t.uniqueID]={}),(s=u[r])&&s[0]===W&&s[1]===o)return c[2]=s[2];if(u[r]=c,c[2]=e(t,n,a))return!0}}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}function m(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function y(e,t,n,i,o,a){return i&&!i[P]&&(i=y(i)),o&&!o[P]&&(o=y(o,a)),r(function(r,a,s,u){var l,c,f,d=[],p=[],h=a.length,y=r||g(t||\"*\",s.nodeType?[s]:s,[]),v=!e||!r&&t?y:m(y,d,e,s,u),x=n?o||(r?e:h||i)?[]:a:v;if(n&&n(v,x,s,u),i)for(l=m(x,p),i(l,[],s,u),c=l.length;c--;)(f=l[c])&&(x[p[c]]=!(v[p[c]]=f));if(r){if(o||e){if(o){for(l=[],c=x.length;c--;)(f=x[c])&&l.push(v[c]=f);o(null,x=[],l,u)}for(c=x.length;c--;)(f=x[c])&&(l=o?ee(r,f):d[c])>-1&&(r[l]=!(a[l]=f))}}else x=m(x===a?x.splice(h,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[\" \"],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s<i;s++)if(n=T.relative[e[s].type])c=[p(h(c),n)];else{if(n=T.filter[e[s].type].apply(null,e[s].matches),n[P]){for(r=++s;r<i&&!T.relative[e[r].type];r++);return y(s>1&&h(c),s>1&&d(e.slice(0,s-1).concat({value:\" \"===e[s-2].type?\"*\":\"\"})).replace(se,\"$1\"),n,s<r&&v(e.slice(s,r)),r<i&&v(e=e.slice(r)),r<i&&d(e))}c.push(n)}return h(c)}function x(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,u,l){var c,f,d,p=0,h=\"0\",g=r&&[],y=[],v=A,x=r||o&&T.find.TAG(\"*\",l),b=W+=null==v?1:Math.random()||.1,w=x.length;for(l&&(A=a===H||a||l);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===H||(L(c),s=!_);d=e[f++];)if(d(c,a||H,s)){u.push(c);break}l&&(W=b)}i&&((c=!d&&c)&&p--,r&&g.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(g,y,a,s);if(r){if(p>0)for(;h--;)g[h]||y[h]||(y[h]=G.call(u));y=m(y)}Q.apply(u,y),l&&!r&&y.length>0&&p+n.length>1&&t.uniqueSort(u)}return l&&(W=b,A=v),g};return i?r(a):a}var b,w,T,C,E,N,k,S,A,D,j,L,H,q,_,F,M,O,R,P=\"sizzle\"+1*new Date,B=e.document,W=0,I=0,$=n(),z=n(),X=n(),U=function(e,t){return e===t&&(j=!0),0},V=1<<31,Y={}.hasOwnProperty,J=[],G=J.pop,K=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},te=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",ne=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",re=\"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",ie=\"\\\\[\"+ne+\"*(\"+re+\")(?:\"+ne+\"*([*^$|!~]?=)\"+ne+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+re+\"))|)\"+ne+\"*\\\\]\",oe=\":(\"+re+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+ie+\")*)|.*)\\\\)|)\",ae=new RegExp(ne+\"+\",\"g\"),se=new RegExp(\"^\"+ne+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+ne+\"+$\",\"g\"),ue=new RegExp(\"^\"+ne+\"*,\"+ne+\"*\"),le=new RegExp(\"^\"+ne+\"*([>+~]|\"+ne+\")\"+ne+\"*\"),ce=new RegExp(\"=\"+ne+\"*([^\\\\]'\\\"]*?)\"+ne+\"*\\\\]\",\"g\"),fe=new RegExp(oe),de=new RegExp(\"^\"+re+\"$\"),pe={ID:new RegExp(\"^#(\"+re+\")\"),CLASS:new RegExp(\"^\\\\.(\"+re+\")\"),TAG:new RegExp(\"^(\"+re+\"|[*])\"),ATTR:new RegExp(\"^\"+ie),PSEUDO:new RegExp(\"^\"+oe),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+ne+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+ne+\"*(?:([+-]|)\"+ne+\"*(\\\\d+)|))\"+ne+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+te+\")$\",\"i\"),needsContext:new RegExp(\"^\"+ne+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+ne+\"*((?:-\\\\d)?\\\\d*)\"+ne+\"*\\\\)|)(?=[^-]|$)\",\"i\")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\\d$/i,me=/^[^{]+\\{\\s*\\[native \\w/,ye=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ve=/[+~]/,xe=/'|\\\\/g,be=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+ne+\"?|(\"+ne+\")|.)\",\"ig\"),we=function(e,t,n){var r=\"0x\"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=function(){L()};try{Q.apply(J=Z.call(B.childNodes),B.childNodes),J[B.childNodes.length].nodeType}catch(Ce){Q={apply:J.length?function(e,t){K.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&\"HTML\"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:B;return r!==H&&9===r.nodeType&&r.documentElement?(H=r,q=H.documentElement,_=!E(H),(n=H.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\"unload\",Te,!1):n.attachEvent&&n.attachEvent(\"onunload\",Te)),w.attributes=i(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),w.getElementsByTagName=i(function(e){return e.appendChild(H.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),w.getElementsByClassName=me.test(H.getElementsByClassName),w.getById=i(function(e){return q.appendChild(e).id=P,!H.getElementsByName||!H.getElementsByName(P).length}),w.getById?(T.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&_){var n=t.getElementById(e);return n?[n]:[]}},T.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute(\"id\")===t}}):(delete T.find.ID,T.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}}),T.find.TAG=w.getElementsByTagName?function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=w.getElementsByClassName&&function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&_)return t.getElementsByClassName(e)},M=[],F=[],(w.qsa=me.test(H.querySelectorAll))&&(i(function(e){q.appendChild(e).innerHTML=\"<a id='\"+P+\"'></a><select id='\"+P+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",e.querySelectorAll(\"[msallowcapture^='']\").length&&F.push(\"[*^$]=\"+ne+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||F.push(\"\\\\[\"+ne+\"*(?:value|\"+te+\")\"),e.querySelectorAll(\"[id~=\"+P+\"-]\").length||F.push(\"~=\"),e.querySelectorAll(\":checked\").length||F.push(\":checked\"),e.querySelectorAll(\"a#\"+P+\"+*\").length||F.push(\".#.+[+~]\")}),i(function(e){var t=H.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&F.push(\"name\"+ne+\"*[*^$|!~]?=\"),e.querySelectorAll(\":enabled\").length||F.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),F.push(\",.*:\")})),(w.matchesSelector=me.test(O=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&i(function(e){w.disconnectedMatch=O.call(e,\"div\"),O.call(e,\"[s!='']:x\"),M.push(\"!=\",oe)}),F=F.length&&new RegExp(F.join(\"|\")),M=M.length&&new RegExp(M.join(\"|\")),t=me.test(q.compareDocumentPosition),R=t||me.test(q.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===H||e.ownerDocument===B&&R(B,e)?-1:t===H||t.ownerDocument===B&&R(B,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===H?-1:t===H?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===B?-1:u[r]===B?1:0},H):H},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==H&&L(e),n=n.replace(ce,\"='$1']\"),w.matchesSelector&&_&&!X[n+\" \"]&&(!M||!M.test(n))&&(!F||!F.test(n)))try{var r=O.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,H,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==H&&L(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==H&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!_):void 0;return void 0!==r?r:w.attributes||!_?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(U),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},C=t.getText=function(e){var t,n=\"\",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||\"\").replace(be,we),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&fe.test(n)&&(t=N(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,we).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=$[e+\" \"];return t||(t=new RegExp(\"(^|\"+ne+\")\"+e+\"(\"+ne+\"|$)\"))&&$(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?\"!=\"===n:!n||(o+=\"\",\"=\"===n?o===r:\"!=\"===n?o!==r:\"^=\"===n?r&&0===o.indexOf(r):\"*=\"===n?r&&o.indexOf(r)>-1:\"$=\"===n?r&&o.slice(-r.length)===r:\"~=\"===n?(\" \"+o.replace(ae,\" \")+\" \").indexOf(r)>-1:\"|=\"===n&&(o===r||o.slice(0,r.length+1)===r+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,d,p,h,g=o!==a?\"nextSibling\":\"previousSibling\",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s,x=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(d=m,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),\nl=c[e]||[],p=l[0]===W&&l[1],x=p&&l[2],d=p&&m.childNodes[p];d=++p&&d&&d[g]||(x=p=0)||h.pop();)if(1===d.nodeType&&++x&&d===t){c[e]=[W,p,x];break}}else if(v&&(d=t,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p),x===!1)for(;(d=++p&&d&&d[g]||(x=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==y:1!==d.nodeType)||!++x||(v&&(f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[W,x]),d!==t)););return x-=i,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error(\"unsupported pseudo: \"+e);return o[P]?o(n):o.length>1?(i=[e,e,\"\",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(se,\"$1\"));return i[P]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,we),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||\"\")||t.error(\"unsupported lang: \"+e),e=e.replace(be,we).toLowerCase(),function(t){var n;do if(n=_?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+\"-\");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===q},focus:function(e){return e===H.activeElement&&(!H.hasFocus||H.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:l(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:l(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},T.pseudos.nth=T.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})T.pseudos[b]=s(b);for(b in{submit:!0,reset:!0})T.pseudos[b]=u(b);return f.prototype=T.filters=T.pseudos,T.setFilters=new f,N=t.tokenize=function(e,n){var r,i,o,a,s,u,l,c=z[e+\" \"];if(c)return n?0:c.slice(0);for(s=e,u=[],l=T.preFilter;s;){r&&!(i=ue.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),r=!1,(i=le.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(se,\" \")}),s=s.slice(r.length));for(a in T.filter)!(i=pe[a].exec(s))||l[a]&&!(i=l[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?t.error(e):z(e,u).slice(0)},k=t.compile=function(e,t){var n,r=[],i=[],o=X[e+\" \"];if(!o){for(t||(t=N(e)),n=t.length;n--;)o=v(t[n]),o[P]?r.push(o):i.push(o);o=X(e,x(i,r)),o.selector=e}return o},S=t.select=function(e,t,n,r){var i,o,a,s,u,l=\"function\"==typeof e&&e,f=!r&&N(e=l.selector||e);if(n=n||[],1===f.length){if(o=f[0]=f[0].slice(0),o.length>2&&\"ID\"===(a=o[0]).type&&w.getById&&9===t.nodeType&&_&&T.relative[o[1].type]){if(t=(T.find.ID(a.matches[0].replace(be,we),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!T.relative[s=a.type]);)if((u=T.find[s])&&(r=u(a.matches[0].replace(be,we),ve.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&d(o),!e)return Q.apply(n,r),n;break}}return(l||k(e,f))(r,t,!_,n,!t||ve.test(e)&&c(t.parentNode)||t),n},w.sortStable=P.split(\"\").sort(U).join(\"\")===P,w.detectDuplicates=!!j,L(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(H.createElement(\"div\"))}),i(function(e){return e.innerHTML=\"<a href='#'></a>\",\"#\"===e.firstChild.getAttribute(\"href\")})||o(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML=\"<input/>\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||o(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute(\"disabled\")})||o(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);pe.find=ve,pe.expr=ve.selectors,pe.expr[\":\"]=pe.expr.pseudos,pe.uniqueSort=pe.unique=ve.uniqueSort,pe.text=ve.getText,pe.isXMLDoc=ve.isXML,pe.contains=ve.contains;var xe=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&pe(e).is(n))break;r.push(e)}return r},be=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},we=pe.expr.match.needsContext,Te=/^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/,Ce=/^.[^:#\\[\\.,]*$/;pe.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?pe.find.matchesSelector(r,e)?[r]:[]:pe.find.matches(e,pe.grep(t,function(e){return 1===e.nodeType}))},pe.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if(\"string\"!=typeof e)return this.pushStack(pe(e).filter(function(){for(t=0;t<i;t++)if(pe.contains(r[t],this))return!0}));for(t=0;t<i;t++)pe.find(e,r[t],n);return n=this.pushStack(i>1?pe.unique(n):n),n.selector=this.selector?this.selector+\" \"+e:e,n},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,\"string\"==typeof e&&we.test(e)?pe(e):e||[],!1).length}});var Ee,Ne=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,ke=pe.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Ee,\"string\"==typeof e){if(r=\"<\"===e.charAt(0)&&\">\"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof pe?t[0]:t,pe.merge(this,pe.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:re,!0)),Te.test(r[1])&&pe.isPlainObject(t))for(r in t)pe.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if(i=re.getElementById(r[2]),i&&i.parentNode){if(i.id!==r[2])return Ee.find(e);this.length=1,this[0]=i}return this.context=re,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):pe.isFunction(e)?\"undefined\"!=typeof n.ready?n.ready(e):e(pe):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),pe.makeArray(e,this))};ke.prototype=pe.fn,Ee=pe(re);var Se=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};pe.fn.extend({has:function(e){var t,n=pe(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(pe.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=we.test(e)||\"string\"!=typeof e?pe(e,t||this.context):0;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&pe.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?pe.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?pe.inArray(this[0],pe(e)):pe.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(pe.uniqueSort(pe.merge(this.get(),pe(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),pe.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xe(e,\"parentNode\")},parentsUntil:function(e,t,n){return xe(e,\"parentNode\",n)},next:function(e){return i(e,\"nextSibling\")},prev:function(e){return i(e,\"previousSibling\")},nextAll:function(e){return xe(e,\"nextSibling\")},prevAll:function(e){return xe(e,\"previousSibling\")},nextUntil:function(e,t,n){return xe(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return xe(e,\"previousSibling\",n)},siblings:function(e){return be((e.parentNode||{}).firstChild,e)},children:function(e){return be(e.firstChild)},contents:function(e){return pe.nodeName(e,\"iframe\")?e.contentDocument||e.contentWindow.document:pe.merge([],e.childNodes)}},function(e,t){pe.fn[e]=function(n,r){var i=pe.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=pe.filter(r,i)),this.length>1&&(Ae[e]||(i=pe.uniqueSort(i)),Se.test(e)&&(i=i.reverse())),this.pushStack(i)}});var De=/\\S+/g;pe.Callbacks=function(e){e=\"string\"==typeof e?o(e):pe.extend({},e);var t,n,r,i,a=[],s=[],u=-1,l=function(){for(i=e.once,r=t=!0;s.length;u=-1)for(n=s.shift();++u<a.length;)a[u].apply(n[0],n[1])===!1&&e.stopOnFalse&&(u=a.length,n=!1);e.memory||(n=!1),t=!1,i&&(a=n?[]:\"\")},c={add:function(){return a&&(n&&!t&&(u=a.length-1,s.push(n)),function r(t){pe.each(t,function(t,n){pe.isFunction(n)?e.unique&&c.has(n)||a.push(n):n&&n.length&&\"string\"!==pe.type(n)&&r(n)})}(arguments),n&&!t&&l()),this},remove:function(){return pe.each(arguments,function(e,t){for(var n;(n=pe.inArray(t,a,n))>-1;)a.splice(n,1),n<=u&&u--}),this},has:function(e){return e?pe.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return i=s=[],a=n=\"\",this},disabled:function(){return!a},lock:function(){return i=!0,n||c.disable(),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},pe.extend({Deferred:function(e){var t=[[\"resolve\",\"done\",pe.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",pe.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",pe.Callbacks(\"memory\")]],n=\"pending\",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return pe.Deferred(function(n){pe.each(t,function(t,o){var a=pe.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&pe.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+\"With\"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?pe.extend(e,r):r}},i={};return r.pipe=r.then,pe.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+\"With\"](this===i?r:this,arguments),this},i[o[0]+\"With\"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=ie.call(arguments),a=o.length,s=1!==a||e&&pe.isFunction(e.promise)?a:0,u=1===s?e:pe.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?ie.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);i<a;i++)o[i]&&pe.isFunction(o[i].promise)?o[i].promise().progress(l(i,n,t)).done(l(i,r,o)).fail(u.reject):--s;return s||u.resolveWith(r,o),u.promise()}});var je;pe.fn.ready=function(e){return pe.ready.promise().done(e),this},pe.extend({isReady:!1,readyWait:1,holdReady:function(e){e?pe.readyWait++:pe.ready(!0)},ready:function(e){(e===!0?--pe.readyWait:pe.isReady)||(pe.isReady=!0,e!==!0&&--pe.readyWait>0||(je.resolveWith(re,[pe]),pe.fn.triggerHandler&&(pe(re).triggerHandler(\"ready\"),pe(re).off(\"ready\"))))}}),pe.ready.promise=function(t){if(!je)if(je=pe.Deferred(),\"complete\"===re.readyState||\"loading\"!==re.readyState&&!re.documentElement.doScroll)e.setTimeout(pe.ready);else if(re.addEventListener)re.addEventListener(\"DOMContentLoaded\",s),e.addEventListener(\"load\",s);else{re.attachEvent(\"onreadystatechange\",s),e.attachEvent(\"onload\",s);var n=!1;try{n=null==e.frameElement&&re.documentElement}catch(r){}n&&n.doScroll&&!function i(){if(!pe.isReady){try{n.doScroll(\"left\")}catch(t){return e.setTimeout(i,50)}a(),pe.ready()}}()}return je.promise(t)},pe.ready.promise();var Le;for(Le in pe(fe))break;fe.ownFirst=\"0\"===Le,fe.inlineBlockNeedsLayout=!1,pe(function(){var e,t,n,r;n=re.getElementsByTagName(\"body\")[0],n&&n.style&&(t=re.createElement(\"div\"),r=re.createElement(\"div\"),r.style.cssText=\"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\",n.appendChild(r).appendChild(t),\"undefined\"!=typeof t.style.zoom&&(t.style.cssText=\"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\",fe.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=re.createElement(\"div\");fe.deleteExpando=!0;try{delete e.test}catch(t){fe.deleteExpando=!1}e=null}();var He=function(e){var t=pe.noData[(e.nodeName+\" \").toLowerCase()],n=+e.nodeType||1;return(1===n||9===n)&&(!t||t!==!0&&e.getAttribute(\"classid\")===t)},qe=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,_e=/([A-Z])/g;pe.extend({cache:{},noData:{\"applet \":!0,\"embed \":!0,\"object \":\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"},hasData:function(e){return e=e.nodeType?pe.cache[e[pe.expando]]:e[pe.expando],!!e&&!l(e)},data:function(e,t,n){return c(e,t,n)},removeData:function(e,t){return f(e,t)},_data:function(e,t,n){return c(e,t,n,!0)},_removeData:function(e,t){return f(e,t,!0)}}),pe.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=pe.data(o),1===o.nodeType&&!pe._data(o,\"parsedAttrs\"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf(\"data-\")&&(r=pe.camelCase(r.slice(5)),u(o,r,i[r])));pe._data(o,\"parsedAttrs\",!0)}return i}return\"object\"==typeof e?this.each(function(){pe.data(this,e)}):arguments.length>1?this.each(function(){pe.data(this,e,t)}):o?u(o,e,pe.data(o,e)):void 0},removeData:function(e){return this.each(function(){pe.removeData(this,e)})}}),pe.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=pe._data(e,t),n&&(!r||pe.isArray(n)?r=pe._data(e,t,pe.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=pe.queue(e,t),r=n.length,i=n.shift(),o=pe._queueHooks(e,t),a=function(){pe.dequeue(e,t)};\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return pe._data(e,n)||pe._data(e,n,{empty:pe.Callbacks(\"once memory\").add(function(){pe._removeData(e,t+\"queue\"),pe._removeData(e,n)})})}}),pe.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length<n?pe.queue(this[0],e):void 0===t?this:this.each(function(){var n=pe.queue(this,e,t);pe._queueHooks(this,e),\"fx\"===e&&\"inprogress\"!==n[0]&&pe.dequeue(this,e)})},dequeue:function(e){return this.each(function(){pe.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=pe.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};for(\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";a--;)n=pe._data(o[a],e+\"queueHooks\"),n&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}}),function(){var e;fe.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,r;return n=re.getElementsByTagName(\"body\")[0],n&&n.style?(t=re.createElement(\"div\"),r=re.createElement(\"div\"),r.style.cssText=\"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\",n.appendChild(r).appendChild(t),\"undefined\"!=typeof t.style.zoom&&(t.style.cssText=\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1\",t.appendChild(re.createElement(\"div\")).style.width=\"5px\",e=3!==t.offsetWidth),n.removeChild(r),e):void 0}}();var Fe=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,Me=new RegExp(\"^(?:([+-])=|)(\"+Fe+\")([a-z%]*)$\",\"i\"),Oe=[\"Top\",\"Right\",\"Bottom\",\"Left\"],Re=function(e,t){return e=t||e,\"none\"===pe.css(e,\"display\")||!pe.contains(e.ownerDocument,e)},Pe=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===pe.type(n)){i=!0;for(s in n)Pe(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,pe.isFunction(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(pe(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},Be=/^(?:checkbox|radio)$/i,We=/<([\\w:-]+)/,Ie=/^$|\\/(?:java|ecma)script/i,$e=/^\\s+/,ze=\"abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video\";!function(){var e=re.createElement(\"div\"),t=re.createDocumentFragment(),n=re.createElement(\"input\");e.innerHTML=\"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\",fe.leadingWhitespace=3===e.firstChild.nodeType,fe.tbody=!e.getElementsByTagName(\"tbody\").length,fe.htmlSerialize=!!e.getElementsByTagName(\"link\").length,fe.html5Clone=\"<:nav></:nav>\"!==re.createElement(\"nav\").cloneNode(!0).outerHTML,n.type=\"checkbox\",n.checked=!0,t.appendChild(n),fe.appendChecked=n.checked,e.innerHTML=\"<textarea>x</textarea>\",fe.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=re.createElement(\"input\"),n.setAttribute(\"type\",\"radio\"),n.setAttribute(\"checked\",\"checked\"),n.setAttribute(\"name\",\"t\"),e.appendChild(n),fe.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.noCloneEvent=!!e.addEventListener,e[pe.expando]=1,fe.attributes=!e.getAttribute(pe.expando)}();var Xe={option:[1,\"<select multiple='multiple'>\",\"</select>\"],legend:[1,\"<fieldset>\",\"</fieldset>\"],area:[1,\"<map>\",\"</map>\"],param:[1,\"<object>\",\"</object>\"],thead:[1,\"<table>\",\"</table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],col:[2,\"<table><tbody></tbody><colgroup>\",\"</colgroup></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:fe.htmlSerialize?[0,\"\",\"\"]:[1,\"X<div>\",\"</div>\"]};Xe.optgroup=Xe.option,Xe.tbody=Xe.tfoot=Xe.colgroup=Xe.caption=Xe.thead,Xe.th=Xe.td;var Ue=/<|&#?\\w+;/,Ve=/<tbody/i;!function(){var t,n,r=re.createElement(\"div\");for(t in{submit:!0,change:!0,focusin:!0})n=\"on\"+t,(fe[t]=n in e)||(r.setAttribute(n,\"t\"),fe[t]=r.attributes[n].expando===!1);r=null}();var Ye=/^(?:input|select|textarea)$/i,Je=/^key/,Ge=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ke=/^(?:focusinfocus|focusoutblur)$/,Qe=/^([^.]*)(?:\\.(.+)|)/;pe.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,m=pe._data(e);if(m){for(n.handler&&(u=n,n=u.handler,i=u.selector),n.guid||(n.guid=pe.guid++),(a=m.events)||(a=m.events={}),(c=m.handle)||(c=m.handle=function(e){return\"undefined\"==typeof pe||e&&pe.event.triggered===e.type?void 0:pe.event.dispatch.apply(c.elem,arguments)},c.elem=e),t=(t||\"\").match(De)||[\"\"],s=t.length;s--;)o=Qe.exec(t[s])||[],p=g=o[1],h=(o[2]||\"\").split(\".\").sort(),p&&(l=pe.event.special[p]||{},p=(i?l.delegateType:l.bindType)||p,l=pe.event.special[p]||{},f=pe.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&pe.expr.match.needsContext.test(i),namespace:h.join(\".\")},u),(d=a[p])||(d=a[p]=[],d.delegateCount=0,l.setup&&l.setup.call(e,r,h,c)!==!1||(e.addEventListener?e.addEventListener(p,c,!1):e.attachEvent&&e.attachEvent(\"on\"+p,c))),l.add&&(l.add.call(e,f),f.handler.guid||(f.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,f):d.push(f),pe.event.global[p]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,m=pe.hasData(e)&&pe._data(e);if(m&&(c=m.events)){for(t=(t||\"\").match(De)||[\"\"],l=t.length;l--;)if(s=Qe.exec(t[l])||[],p=g=s[1],h=(s[2]||\"\").split(\".\").sort(),p){for(f=pe.event.special[p]||{},p=(r?f.delegateType:f.bindType)||p,d=c[p]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),u=o=d.length;o--;)a=d[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&(\"**\"!==r||!a.selector)||(d.splice(o,1),a.selector&&d.delegateCount--,f.remove&&f.remove.call(e,a));u&&!d.length&&(f.teardown&&f.teardown.call(e,h,m.handle)!==!1||pe.removeEvent(e,p,m.handle),delete c[p])}else for(p in c)pe.event.remove(e,p+t[l],n,r,!0);pe.isEmptyObject(c)&&(delete m.handle,pe._removeData(e,\"events\"))}},trigger:function(t,n,r,i){var o,a,s,u,l,c,f,d=[r||re],p=ce.call(t,\"type\")?t.type:t,h=ce.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(s=c=r=r||re,3!==r.nodeType&&8!==r.nodeType&&!Ke.test(p+pe.event.triggered)&&(p.indexOf(\".\")>-1&&(h=p.split(\".\"),p=h.shift(),h.sort()),a=p.indexOf(\":\")<0&&\"on\"+p,t=t[pe.expando]?t:new pe.Event(p,\"object\"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:pe.makeArray(n,[t]),l=pe.event.special[p]||{},i||!l.trigger||l.trigger.apply(r,n)!==!1)){if(!i&&!l.noBubble&&!pe.isWindow(r)){for(u=l.delegateType||p,Ke.test(u+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),c=s;c===(r.ownerDocument||re)&&d.push(c.defaultView||c.parentWindow||e)}for(f=0;(s=d[f++])&&!t.isPropagationStopped();)t.type=f>1?u:l.bindType||p,o=(pe._data(s,\"events\")||{})[t.type]&&pe._data(s,\"handle\"),o&&o.apply(s,n),o=a&&s[a],o&&o.apply&&He(s)&&(t.result=o.apply(s,n),t.result===!1&&t.preventDefault());if(t.type=p,!i&&!t.isDefaultPrevented()&&(!l._default||l._default.apply(d.pop(),n)===!1)&&He(r)&&a&&r[p]&&!pe.isWindow(r)){c=r[a],c&&(r[a]=null),pe.event.triggered=p;try{r[p]()}catch(g){}pe.event.triggered=void 0,c&&(r[a]=c)}return t.result}},dispatch:function(e){e=pe.event.fix(e);var t,n,r,i,o,a=[],s=ie.call(arguments),u=(pe._data(this,\"events\")||{})[e.type]||[],l=pe.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(a=pe.event.handlers.call(this,e,u),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((pe.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&(\"click\"!==e.type||isNaN(e.button)||e.button<1))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||\"click\"!==e.type)){for(r=[],n=0;n<s;n++)o=t[n],i=o.selector+\" \",void 0===r[i]&&(r[i]=o.needsContext?pe(i,this).index(u)>-1:pe.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[pe.expando])return e;var t,n,r,i=e.type,o=e,a=this.fixHooks[i];for(a||(this.fixHooks[i]=a=Ge.test(i)?this.mouseHooks:Je.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new pe.Event(o),t=r.length;t--;)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||re),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,o):e},props:\"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(e,t){var n,r,i,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(r=e.target.ownerDocument||re,i=r.documentElement,n=r.body,e.pageX=t.clientX+(i&&i.scrollLeft||n&&n.scrollLeft||0)-(i&&i.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(i&&i.scrollTop||n&&n.scrollTop||0)-(i&&i.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==b()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:\"focusin\"},blur:{trigger:function(){if(this===b()&&this.blur)return this.blur(),!1},delegateType:\"focusout\"},click:{trigger:function(){if(pe.nodeName(this,\"input\")&&\"checkbox\"===this.type&&this.click)return this.click(),!1},_default:function(e){return pe.nodeName(e.target,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n){var r=pe.extend(new pe.Event,n,{type:e,isSimulated:!0});pe.event.trigger(r,null,t),r.isDefaultPrevented()&&n.preventDefault()}},pe.removeEvent=re.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)}:function(e,t,n){var r=\"on\"+t;e.detachEvent&&(\"undefined\"==typeof e[r]&&(e[r]=null),e.detachEvent(r,n))},pe.Event=function(e,t){return this instanceof pe.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?v:x):this.type=e,t&&pe.extend(this,t),this.timeStamp=e&&e.timeStamp||pe.now(),void(this[pe.expando]=!0)):new pe.Event(e,t)},pe.Event.prototype={constructor:pe.Event,isDefaultPrevented:x,isPropagationStopped:x,isImmediatePropagationStopped:x,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=v,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=v,e&&!this.isSimulated&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=v,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},pe.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(e,t){pe.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||pe.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),fe.submit||(pe.event.special.submit={setup:function(){return!pe.nodeName(this,\"form\")&&void pe.event.add(this,\"click._submit keypress._submit\",function(e){var t=e.target,n=pe.nodeName(t,\"input\")||pe.nodeName(t,\"button\")?pe.prop(t,\"form\"):void 0;n&&!pe._data(n,\"submit\")&&(pe.event.add(n,\"submit._submit\",function(e){e._submitBubble=!0}),pe._data(n,\"submit\",!0))})},postDispatch:function(e){e._submitBubble&&(delete e._submitBubble,this.parentNode&&!e.isTrigger&&pe.event.simulate(\"submit\",this.parentNode,e))},teardown:function(){return!pe.nodeName(this,\"form\")&&void pe.event.remove(this,\"._submit\")}}),fe.change||(pe.event.special.change={setup:function(){return Ye.test(this.nodeName)?(\"checkbox\"!==this.type&&\"radio\"!==this.type||(pe.event.add(this,\"propertychange._change\",function(e){\"checked\"===e.originalEvent.propertyName&&(this._justChanged=!0)}),pe.event.add(this,\"click._change\",function(e){this._justChanged&&!e.isTrigger&&(this._justChanged=!1),pe.event.simulate(\"change\",this,e)})),!1):void pe.event.add(this,\"beforeactivate._change\",function(e){var t=e.target;Ye.test(t.nodeName)&&!pe._data(t,\"change\")&&(pe.event.add(t,\"change._change\",function(e){!this.parentNode||e.isSimulated||e.isTrigger||pe.event.simulate(\"change\",this.parentNode,e)}),pe._data(t,\"change\",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||\"radio\"!==t.type&&\"checkbox\"!==t.type)return e.handleObj.handler.apply(this,arguments)},teardown:function(){return pe.event.remove(this,\"._change\"),!Ye.test(this.nodeName)}}),fe.focusin||pe.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){var n=function(e){pe.event.simulate(t,e.target,pe.event.fix(e))};pe.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=pe._data(r,t);i||r.addEventListener(e,n,!0),pe._data(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=pe._data(r,t)-1;i?pe._data(r,t,i):(r.removeEventListener(e,n,!0),pe._removeData(r,t))}}}),pe.fn.extend({on:function(e,t,n,r){return w(this,e,t,n,r)},one:function(e,t,n,r){return w(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,pe(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return t!==!1&&\"function\"!=typeof t||(n=t,t=void 0),n===!1&&(n=x),this.each(function(){pe.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){pe.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return pe.event.trigger(e,t,n,!0)}});var Ze=/ jQuery\\d+=\"(?:null|\\d+)\"/g,et=new RegExp(\"<(?:\"+ze+\")[\\\\s/>]\",\"i\"),tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,nt=/<script|<style|<link/i,rt=/checked\\s*(?:[^=]|=\\s*.checked.)/i,it=/^true\\/(.*)/,ot=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,at=p(re),st=at.appendChild(re.createElement(\"div\"));pe.extend({htmlPrefilter:function(e){return e.replace(tt,\"<$1></$2>\")},clone:function(e,t,n){var r,i,o,a,s,u=pe.contains(e.ownerDocument,e);if(fe.html5Clone||pe.isXMLDoc(e)||!et.test(\"<\"+e.nodeName+\">\")?o=e.cloneNode(!0):(st.innerHTML=e.outerHTML,st.removeChild(o=st.firstChild)),!(fe.noCloneEvent&&fe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||pe.isXMLDoc(e)))for(r=h(o),s=h(e),a=0;null!=(i=s[a]);++a)r[a]&&k(i,r[a]);if(t)if(n)for(s=s||h(e),r=r||h(o),a=0;null!=(i=s[a]);a++)N(i,r[a]);else N(e,o);return r=h(o,\"script\"),r.length>0&&g(r,!u&&h(e,\"script\")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=pe.expando,u=pe.cache,l=fe.attributes,c=pe.event.special;null!=(n=e[a]);a++)if((t||He(n))&&(i=n[s],o=i&&u[i])){if(o.events)for(r in o.events)c[r]?pe.event.remove(n,r):pe.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||\"undefined\"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ne.push(i))}}}),pe.fn.extend({domManip:S,detach:function(e){return A(this,e,!0)},remove:function(e){return A(this,e)},text:function(e){return Pe(this,function(e){return void 0===e?pe.text(this):this.empty().append((this[0]&&this[0].ownerDocument||re).createTextNode(e))},null,e,arguments.length)},append:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.appendChild(e)}})},prepend:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&pe.cleanData(h(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&pe.nodeName(e,\"select\")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return pe.clone(this,e,t)})},html:function(e){return Pe(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Ze,\"\"):void 0;if(\"string\"==typeof e&&!nt.test(e)&&(fe.htmlSerialize||!et.test(e))&&(fe.leadingWhitespace||!$e.test(e))&&!Xe[(We.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=pe.htmlPrefilter(e);try{for(;n<r;n++)t=this[n]||{},1===t.nodeType&&(pe.cleanData(h(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return S(this,arguments,function(t){var n=this.parentNode;pe.inArray(this,e)<0&&(pe.cleanData(h(this)),\nn&&n.replaceChild(t,this))},e)}}),pe.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,t){pe.fn[e]=function(e){for(var n,r=0,i=[],o=pe(e),a=o.length-1;r<=a;r++)n=r===a?this:this.clone(!0),pe(o[r])[t](n),ae.apply(i,n.get());return this.pushStack(i)}});var ut,lt={HTML:\"block\",BODY:\"block\"},ct=/^margin/,ft=new RegExp(\"^(\"+Fe+\")(?!px)[a-z%]+$\",\"i\"),dt=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i},pt=re.documentElement;!function(){function t(){var t,c,f=re.documentElement;f.appendChild(u),l.style.cssText=\"-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%\",n=i=s=!1,r=a=!0,e.getComputedStyle&&(c=e.getComputedStyle(l),n=\"1%\"!==(c||{}).top,s=\"2px\"===(c||{}).marginLeft,i=\"4px\"===(c||{width:\"4px\"}).width,l.style.marginRight=\"50%\",r=\"4px\"===(c||{marginRight:\"4px\"}).marginRight,t=l.appendChild(re.createElement(\"div\")),t.style.cssText=l.style.cssText=\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0\",t.style.marginRight=t.style.width=\"0\",l.style.width=\"1px\",a=!parseFloat((e.getComputedStyle(t)||{}).marginRight),l.removeChild(t)),l.style.display=\"none\",o=0===l.getClientRects().length,o&&(l.style.display=\"\",l.innerHTML=\"<table><tr><td></td><td>t</td></tr></table>\",t=l.getElementsByTagName(\"td\"),t[0].style.cssText=\"margin:0;border:0;padding:0;display:none\",o=0===t[0].offsetHeight,o&&(t[0].style.display=\"\",t[1].style.display=\"none\",o=0===t[0].offsetHeight)),f.removeChild(u)}var n,r,i,o,a,s,u=re.createElement(\"div\"),l=re.createElement(\"div\");l.style&&(l.style.cssText=\"float:left;opacity:.5\",fe.opacity=\"0.5\"===l.style.opacity,fe.cssFloat=!!l.style.cssFloat,l.style.backgroundClip=\"content-box\",l.cloneNode(!0).style.backgroundClip=\"\",fe.clearCloneStyle=\"content-box\"===l.style.backgroundClip,u=re.createElement(\"div\"),u.style.cssText=\"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute\",l.innerHTML=\"\",u.appendChild(l),fe.boxSizing=\"\"===l.style.boxSizing||\"\"===l.style.MozBoxSizing||\"\"===l.style.WebkitBoxSizing,pe.extend(fe,{reliableHiddenOffsets:function(){return null==n&&t(),o},boxSizingReliable:function(){return null==n&&t(),i},pixelMarginRight:function(){return null==n&&t(),r},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),a},reliableMarginLeft:function(){return null==n&&t(),s}}))}();var ht,gt,mt=/^(top|right|bottom|left)$/;e.getComputedStyle?(ht=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n.getPropertyValue(t)||n[t]:void 0,\"\"!==a&&void 0!==a||pe.contains(e.ownerDocument,e)||(a=pe.style(e,t)),n&&!fe.pixelMarginRight()&&ft.test(a)&&ct.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o),void 0===a?a:a+\"\"}):pt.currentStyle&&(ht=function(e){return e.currentStyle},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),ft.test(a)&&!mt.test(t)&&(r=s.left,i=e.runtimeStyle,o=i&&i.left,o&&(i.left=e.currentStyle.left),s.left=\"fontSize\"===t?\"1em\":a,a=s.pixelLeft+\"px\",s.left=r,o&&(i.left=o)),void 0===a?a:a+\"\"||\"auto\"});var yt=/alpha\\([^)]*\\)/i,vt=/opacity\\s*=\\s*([^)]*)/i,xt=/^(none|table(?!-c[ea]).+)/,bt=new RegExp(\"^(\"+Fe+\")(.*)$\",\"i\"),wt={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Tt={letterSpacing:\"0\",fontWeight:\"400\"},Ct=[\"Webkit\",\"O\",\"Moz\",\"ms\"],Et=re.createElement(\"div\").style;pe.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=gt(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":fe.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=pe.camelCase(t),u=e.style;if(t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:u[t];if(o=typeof n,\"string\"===o&&(i=Me.exec(n))&&i[1]&&(n=d(e,t,i),o=\"number\"),null!=n&&n===n&&(\"number\"===o&&(n+=i&&i[3]||(pe.cssNumber[s]?\"\":\"px\")),fe.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(u[t]=\"inherit\"),!(a&&\"set\"in a&&void 0===(n=a.set(e,n,r)))))try{u[t]=n}catch(l){}}},css:function(e,t,n,r){var i,o,a,s=pe.camelCase(t);return t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],a&&\"get\"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=gt(e,t,r)),\"normal\"===o&&t in Tt&&(o=Tt[t]),\"\"===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),pe.each([\"height\",\"width\"],function(e,t){pe.cssHooks[t]={get:function(e,n,r){if(n)return xt.test(pe.css(e,\"display\"))&&0===e.offsetWidth?dt(e,wt,function(){return M(e,t,r)}):M(e,t,r)},set:function(e,n,r){var i=r&&ht(e);return _(e,n,r?F(e,t,r,fe.boxSizing&&\"border-box\"===pe.css(e,\"boxSizing\",!1,i),i):0)}}}),fe.opacity||(pe.cssHooks.opacity={get:function(e,t){return vt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||\"\")?.01*parseFloat(RegExp.$1)+\"\":t?\"1\":\"\"},set:function(e,t){var n=e.style,r=e.currentStyle,i=pe.isNumeric(t)?\"alpha(opacity=\"+100*t+\")\":\"\",o=r&&r.filter||n.filter||\"\";n.zoom=1,(t>=1||\"\"===t)&&\"\"===pe.trim(o.replace(yt,\"\"))&&n.removeAttribute&&(n.removeAttribute(\"filter\"),\"\"===t||r&&!r.filter)||(n.filter=yt.test(o)?o.replace(yt,i):o+\" \"+i)}}),pe.cssHooks.marginRight=L(fe.reliableMarginRight,function(e,t){if(t)return dt(e,{display:\"inline-block\"},gt,[e,\"marginRight\"])}),pe.cssHooks.marginLeft=L(fe.reliableMarginLeft,function(e,t){if(t)return(parseFloat(gt(e,\"marginLeft\"))||(pe.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-dt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+\"px\"}),pe.each({margin:\"\",padding:\"\",border:\"Width\"},function(e,t){pe.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+Oe[r]+t]=o[r]||o[r-2]||o[0];return i}},ct.test(e)||(pe.cssHooks[e+t].set=_)}),pe.fn.extend({css:function(e,t){return Pe(this,function(e,t,n){var r,i,o={},a=0;if(pe.isArray(t)){for(r=ht(e),i=t.length;a<i;a++)o[t[a]]=pe.css(e,t[a],!1,r);return o}return void 0!==n?pe.style(e,t,n):pe.css(e,t)},e,t,arguments.length>1)},show:function(){return q(this,!0)},hide:function(){return q(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){Re(this)?pe(this).show():pe(this).hide()})}}),pe.Tween=O,O.prototype={constructor:O,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||pe.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(pe.cssNumber[n]?\"\":\"px\")},cur:function(){var e=O.propHooks[this.prop];return e&&e.get?e.get(this):O.propHooks._default.get(this)},run:function(e){var t,n=O.propHooks[this.prop];return this.options.duration?this.pos=t=pe.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):O.propHooks._default.set(this),this}},O.prototype.init.prototype=O.prototype,O.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=pe.css(e.elem,e.prop,\"\"),t&&\"auto\"!==t?t:0)},set:function(e){pe.fx.step[e.prop]?pe.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[pe.cssProps[e.prop]]&&!pe.cssHooks[e.prop]?e.elem[e.prop]=e.now:pe.style(e.elem,e.prop,e.now+e.unit)}}},O.propHooks.scrollTop=O.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},pe.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},pe.fx=O.prototype.init,pe.fx.step={};var Nt,kt,St=/^(?:toggle|show|hide)$/,At=/queueHooks$/;pe.Animation=pe.extend($,{tweeners:{\"*\":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,Me.exec(t),n),n}]},tweener:function(e,t){pe.isFunction(e)?(t=e,e=[\"*\"]):e=e.match(De);for(var n,r=0,i=e.length;r<i;r++)n=e[r],$.tweeners[n]=$.tweeners[n]||[],$.tweeners[n].unshift(t)},prefilters:[W],prefilter:function(e,t){t?$.prefilters.unshift(e):$.prefilters.push(e)}}),pe.speed=function(e,t,n){var r=e&&\"object\"==typeof e?pe.extend({},e):{complete:n||!n&&t||pe.isFunction(e)&&e,duration:e,easing:n&&t||t&&!pe.isFunction(t)&&t};return r.duration=pe.fx.off?0:\"number\"==typeof r.duration?r.duration:r.duration in pe.fx.speeds?pe.fx.speeds[r.duration]:pe.fx.speeds._default,null!=r.queue&&r.queue!==!0||(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){pe.isFunction(r.old)&&r.old.call(this),r.queue&&pe.dequeue(this,r.queue)},r},pe.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Re).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=pe.isEmptyObject(e),o=pe.speed(t,n,r),a=function(){var t=$(this,pe.extend({},e),o);(i||pe._data(this,\"finish\"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return\"string\"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||\"fx\",[]),this.each(function(){var t=!0,i=null!=e&&e+\"queueHooks\",o=pe.timers,a=pe._data(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&At.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||pe.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||\"fx\"),this.each(function(){var t,n=pe._data(this),r=n[e+\"queue\"],i=n[e+\"queueHooks\"],o=pe.timers,a=r?r.length:0;for(n.finish=!0,pe.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),pe.each([\"toggle\",\"show\",\"hide\"],function(e,t){var n=pe.fn[t];pe.fn[t]=function(e,r,i){return null==e||\"boolean\"==typeof e?n.apply(this,arguments):this.animate(P(t,!0),e,r,i)}}),pe.each({slideDown:P(\"show\"),slideUp:P(\"hide\"),slideToggle:P(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,t){pe.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),pe.timers=[],pe.fx.tick=function(){var e,t=pe.timers,n=0;for(Nt=pe.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||pe.fx.stop(),Nt=void 0},pe.fx.timer=function(e){pe.timers.push(e),e()?pe.fx.start():pe.timers.pop()},pe.fx.interval=13,pe.fx.start=function(){kt||(kt=e.setInterval(pe.fx.tick,pe.fx.interval))},pe.fx.stop=function(){e.clearInterval(kt),kt=null},pe.fx.speeds={slow:600,fast:200,_default:400},pe.fn.delay=function(t,n){return t=pe.fx?pe.fx.speeds[t]||t:t,n=n||\"fx\",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e,t=re.createElement(\"input\"),n=re.createElement(\"div\"),r=re.createElement(\"select\"),i=r.appendChild(re.createElement(\"option\"));n=re.createElement(\"div\"),n.setAttribute(\"className\",\"t\"),n.innerHTML=\"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\",e=n.getElementsByTagName(\"a\")[0],t.setAttribute(\"type\",\"checkbox\"),n.appendChild(t),e=n.getElementsByTagName(\"a\")[0],e.style.cssText=\"top:1px\",fe.getSetAttribute=\"t\"!==n.className,fe.style=/top/.test(e.getAttribute(\"style\")),fe.hrefNormalized=\"/a\"===e.getAttribute(\"href\"),fe.checkOn=!!t.value,fe.optSelected=i.selected,fe.enctype=!!re.createElement(\"form\").enctype,r.disabled=!0,fe.optDisabled=!i.disabled,t=re.createElement(\"input\"),t.setAttribute(\"value\",\"\"),fe.input=\"\"===t.getAttribute(\"value\"),t.value=\"t\",t.setAttribute(\"type\",\"radio\"),fe.radioValue=\"t\"===t.value}();var Dt=/\\r/g,jt=/[\\x20\\t\\r\\n\\f]+/g;pe.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=pe.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,pe(this).val()):e,null==i?i=\"\":\"number\"==typeof i?i+=\"\":pe.isArray(i)&&(i=pe.map(i,function(e){return null==e?\"\":e+\"\"})),t=pe.valHooks[this.type]||pe.valHooks[this.nodeName.toLowerCase()],t&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))});if(i)return t=pe.valHooks[i.type]||pe.valHooks[i.nodeName.toLowerCase()],t&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:(n=i.value,\"string\"==typeof n?n.replace(Dt,\"\"):null==n?\"\":n)}}}),pe.extend({valHooks:{option:{get:function(e){var t=pe.find.attr(e,\"value\");return null!=t?t:pe.trim(pe.text(e)).replace(jt,\" \")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o=\"select-one\"===e.type||i<0,a=o?null:[],s=o?i+1:r.length,u=i<0?s:o?i:0;u<s;u++)if(n=r[u],(n.selected||u===i)&&(fe.optDisabled?!n.disabled:null===n.getAttribute(\"disabled\"))&&(!n.parentNode.disabled||!pe.nodeName(n.parentNode,\"optgroup\"))){if(t=pe(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,r,i=e.options,o=pe.makeArray(t),a=i.length;a--;)if(r=i[a],pe.inArray(pe.valHooks.option.get(r),o)>-1)try{r.selected=n=!0}catch(s){r.scrollHeight}else r.selected=!1;return n||(e.selectedIndex=-1),i}}}}),pe.each([\"radio\",\"checkbox\"],function(){pe.valHooks[this]={set:function(e,t){if(pe.isArray(t))return e.checked=pe.inArray(pe(e).val(),t)>-1}},fe.checkOn||(pe.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})});var Lt,Ht,qt=pe.expr.attrHandle,_t=/^(?:checked|selected)$/i,Ft=fe.getSetAttribute,Mt=fe.input;pe.fn.extend({attr:function(e,t){return Pe(this,pe.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){pe.removeAttr(this,e)})}}),pe.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return\"undefined\"==typeof e.getAttribute?pe.prop(e,t,n):(1===o&&pe.isXMLDoc(e)||(t=t.toLowerCase(),i=pe.attrHooks[t]||(pe.expr.match.bool.test(t)?Ht:Lt)),void 0!==n?null===n?void pe.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:(r=pe.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!fe.radioValue&&\"radio\"===t&&pe.nodeName(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(De);if(o&&1===e.nodeType)for(;n=o[i++];)r=pe.propFix[n]||n,pe.expr.match.bool.test(n)?Mt&&Ft||!_t.test(n)?e[r]=!1:e[pe.camelCase(\"default-\"+n)]=e[r]=!1:pe.attr(e,n,\"\"),e.removeAttribute(Ft?n:r)}}),Ht={set:function(e,t,n){return t===!1?pe.removeAttr(e,n):Mt&&Ft||!_t.test(n)?e.setAttribute(!Ft&&pe.propFix[n]||n,n):e[pe.camelCase(\"default-\"+n)]=e[n]=!0,n}},pe.each(pe.expr.match.bool.source.match(/\\w+/g),function(e,t){var n=qt[t]||pe.find.attr;Mt&&Ft||!_t.test(t)?qt[t]=function(e,t,r){var i,o;return r||(o=qt[t],qt[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,qt[t]=o),i}:qt[t]=function(e,t,n){if(!n)return e[pe.camelCase(\"default-\"+t)]?t.toLowerCase():null}}),Mt&&Ft||(pe.attrHooks.value={set:function(e,t,n){return pe.nodeName(e,\"input\")?void(e.defaultValue=t):Lt&&Lt.set(e,t,n)}}),Ft||(Lt={set:function(e,t,n){var r=e.getAttributeNode(n);if(r||e.setAttributeNode(r=e.ownerDocument.createAttribute(n)),r.value=t+=\"\",\"value\"===n||t===e.getAttribute(n))return t}},qt.id=qt.name=qt.coords=function(e,t,n){var r;if(!n)return(r=e.getAttributeNode(t))&&\"\"!==r.value?r.value:null},pe.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);if(n&&n.specified)return n.value},set:Lt.set},pe.attrHooks.contenteditable={set:function(e,t,n){Lt.set(e,\"\"!==t&&t,n)}},pe.each([\"width\",\"height\"],function(e,t){pe.attrHooks[t]={set:function(e,n){if(\"\"===n)return e.setAttribute(t,\"auto\"),n}}})),fe.style||(pe.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+\"\"}});var Ot=/^(?:input|select|textarea|button|object)$/i,Rt=/^(?:a|area)$/i;pe.fn.extend({prop:function(e,t){return Pe(this,pe.prop,e,t,arguments.length>1)},removeProp:function(e){return e=pe.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),pe.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&pe.isXMLDoc(e)||(t=pe.propFix[t]||t,i=pe.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=pe.find.attr(e,\"tabindex\");return t?parseInt(t,10):Ot.test(e.nodeName)||Rt.test(e.nodeName)&&e.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),fe.hrefNormalized||pe.each([\"href\",\"src\"],function(e,t){pe.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),fe.optSelected||(pe.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),pe.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){pe.propFix[this.toLowerCase()]=this}),fe.enctype||(pe.propFix.enctype=\"encoding\");var Pt=/[\\t\\r\\n\\f]/g;pe.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).addClass(e.call(this,t,z(this)))});if(\"string\"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(\" \"+i+\" \").replace(Pt,\" \")){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");s=pe.trim(r),i!==s&&pe.attr(n,\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).removeClass(e.call(this,t,z(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if(\"string\"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(\" \"+i+\" \").replace(Pt,\" \")){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");s=pe.trim(r),i!==s&&pe.attr(n,\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e;return\"boolean\"==typeof t&&\"string\"===n?t?this.addClass(e):this.removeClass(e):pe.isFunction(e)?this.each(function(n){pe(this).toggleClass(e.call(this,n,z(this),t),t)}):this.each(function(){var t,r,i,o;if(\"string\"===n)for(r=0,i=pe(this),o=e.match(De)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&\"boolean\"!==n||(t=z(this),t&&pe._data(this,\"__className__\",t),pe.attr(this,\"class\",t||e===!1?\"\":pe._data(this,\"__className__\")||\"\"))})},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+z(n)+\" \").replace(Pt,\" \").indexOf(t)>-1)return!0;return!1}}),pe.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(e,t){pe.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),pe.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Bt=e.location,Wt=pe.now(),It=/\\?/,$t=/(,)|(\\[|{)|(}|])|\"(?:[^\"\\\\\\r\\n]|\\\\[\"\\\\\\/bfnrt]|\\\\u[\\da-fA-F]{4})*\"\\s*:?|true|false|null|-?(?!0\\d)\\d+(?:\\.\\d+|)(?:[eE][+-]?\\d+|)/g;pe.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+\"\");var n,r=null,i=pe.trim(t+\"\");return i&&!pe.trim(i.replace($t,function(e,t,i,o){return n&&t&&(r=0),0===r?e:(n=i||t,r+=!o-!i,\"\")}))?Function(\"return \"+i)():pe.error(\"Invalid JSON: \"+t)},pe.parseXML=function(t){var n,r;if(!t||\"string\"!=typeof t)return null;try{e.DOMParser?(r=new e.DOMParser,n=r.parseFromString(t,\"text/xml\")):(n=new e.ActiveXObject(\"Microsoft.XMLDOM\"),n.async=\"false\",n.loadXML(t))}catch(i){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName(\"parsererror\").length||pe.error(\"Invalid XML: \"+t),n};var zt=/#.*$/,Xt=/([?&])_=[^&]*/,Ut=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/gm,Vt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Yt=/^(?:GET|HEAD)$/,Jt=/^\\/\\//,Gt=/^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,Kt={},Qt={},Zt=\"*/\".concat(\"*\"),en=Bt.href,tn=Gt.exec(en.toLowerCase())||[];pe.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:en,type:\"GET\",isLocal:Vt.test(tn[1]),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Zt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":pe.parseJSON,\"text xml\":pe.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?V(V(e,pe.ajaxSettings),t):V(pe.ajaxSettings,e)},ajaxPrefilter:X(Kt),ajaxTransport:X(Qt),ajax:function(t,n){function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c=void 0,s=i||\"\",T.readyState=t>0?4:0,o=t>=200&&t<300||304===t,r&&(x=Y(d,T,r)),x=J(d,x,T,o),o?(d.ifModified&&(w=T.getResponseHeader(\"Last-Modified\"),w&&(pe.lastModified[a]=w),w=T.getResponseHeader(\"etag\"),w&&(pe.etag[a]=w)),204===t||\"HEAD\"===d.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=x.state,f=x.data,v=x.error,o=!v)):(v=C,!t&&C||(C=\"error\",t<0&&(t=0))),T.status=t,T.statusText=(n||C)+\"\",o?g.resolveWith(p,[f,C,T]):g.rejectWith(p,[T,C,v]),T.statusCode(y),y=void 0,l&&h.trigger(o?\"ajaxSuccess\":\"ajaxError\",[T,d,o?f:v]),m.fireWith(p,[T,C]),l&&(h.trigger(\"ajaxComplete\",[T,d]),--pe.active||pe.event.trigger(\"ajaxStop\")))}\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,d=pe.ajaxSetup({},n),p=d.context||d,h=d.context&&(p.nodeType||p.jquery)?pe(p):pe.event,g=pe.Deferred(),m=pe.Callbacks(\"once memory\"),y=d.statusCode||{},v={},x={},b=0,w=\"canceled\",T={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!f)for(f={};t=Ut.exec(s);)f[t[1].toLowerCase()]=t[2];t=f[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=x[n]=x[n]||e,v[e]=t),this},overrideMimeType:function(e){return b||(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(b<2)for(t in e)y[t]=[y[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||w;return c&&c.abort(t),r(0,t),this}};if(g.promise(T).complete=m.add,T.success=T.done,T.error=T.fail,d.url=((t||d.url||en)+\"\").replace(zt,\"\").replace(Jt,tn[1]+\"//\"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=pe.trim(d.dataType||\"*\").toLowerCase().match(De)||[\"\"],null==d.crossDomain&&(i=Gt.exec(d.url.toLowerCase()),d.crossDomain=!(!i||i[1]===tn[1]&&i[2]===tn[2]&&(i[3]||(\"http:\"===i[1]?\"80\":\"443\"))===(tn[3]||(\"http:\"===tn[1]?\"80\":\"443\")))),d.data&&d.processData&&\"string\"!=typeof d.data&&(d.data=pe.param(d.data,d.traditional)),U(Kt,d,n,T),2===b)return T;l=pe.event&&d.global,l&&0===pe.active++&&pe.event.trigger(\"ajaxStart\"),d.type=d.type.toUpperCase(),d.hasContent=!Yt.test(d.type),a=d.url,d.hasContent||(d.data&&(a=d.url+=(It.test(a)?\"&\":\"?\")+d.data,delete d.data),d.cache===!1&&(d.url=Xt.test(a)?a.replace(Xt,\"$1_=\"+Wt++):a+(It.test(a)?\"&\":\"?\")+\"_=\"+Wt++)),d.ifModified&&(pe.lastModified[a]&&T.setRequestHeader(\"If-Modified-Since\",pe.lastModified[a]),pe.etag[a]&&T.setRequestHeader(\"If-None-Match\",pe.etag[a])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&T.setRequestHeader(\"Content-Type\",d.contentType),T.setRequestHeader(\"Accept\",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(\"*\"!==d.dataTypes[0]?\", \"+Zt+\"; q=0.01\":\"\"):d.accepts[\"*\"]);for(o in d.headers)T.setRequestHeader(o,d.headers[o]);if(d.beforeSend&&(d.beforeSend.call(p,T,d)===!1||2===b))return T.abort();w=\"abort\";for(o in{success:1,error:1,complete:1})T[o](d[o]);if(c=U(Qt,d,n,T)){if(T.readyState=1,l&&h.trigger(\"ajaxSend\",[T,d]),2===b)return T;d.async&&d.timeout>0&&(u=e.setTimeout(function(){T.abort(\"timeout\")},d.timeout));try{b=1,c.send(v,r)}catch(C){if(!(b<2))throw C;r(-1,C)}}else r(-1,\"No Transport\");return T},getJSON:function(e,t,n){return pe.get(e,t,n,\"json\")},getScript:function(e,t){return pe.get(e,void 0,t,\"script\")}}),pe.each([\"get\",\"post\"],function(e,t){pe[t]=function(e,n,r,i){return pe.isFunction(n)&&(i=i||r,r=n,n=void 0),pe.ajax(pe.extend({url:e,type:t,dataType:i,data:n,success:r},pe.isPlainObject(e)&&e))}}),pe._evalUrl=function(e){return pe.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,\"throws\":!0})},pe.fn.extend({wrapAll:function(e){if(pe.isFunction(e))return this.each(function(t){pe(this).wrapAll(e.call(this,t))});if(this[0]){var t=pe(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return pe.isFunction(e)?this.each(function(t){pe(this).wrapInner(e.call(this,t))}):this.each(function(){var t=pe(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=pe.isFunction(e);return this.each(function(n){pe(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){pe.nodeName(this,\"body\")||pe(this).replaceWith(this.childNodes)}).end()}}),pe.expr.filters.hidden=function(e){return fe.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:K(e)},pe.expr.filters.visible=function(e){return!pe.expr.filters.hidden(e)};var nn=/%20/g,rn=/\\[\\]$/,on=/\\r?\\n/g,an=/^(?:submit|button|image|reset|file)$/i,sn=/^(?:input|select|textarea|keygen)/i;pe.param=function(e,t){var n,r=[],i=function(e,t){t=pe.isFunction(t)?t():null==t?\"\":t,r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(t)};if(void 0===t&&(t=pe.ajaxSettings&&pe.ajaxSettings.traditional),pe.isArray(e)||e.jquery&&!pe.isPlainObject(e))pe.each(e,function(){i(this.name,this.value)});else for(n in e)Q(n,e[n],t,i);return r.join(\"&\").replace(nn,\"+\")},pe.fn.extend({serialize:function(){return pe.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=pe.prop(this,\"elements\");return e?pe.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!pe(this).is(\":disabled\")&&sn.test(this.nodeName)&&!an.test(e)&&(this.checked||!Be.test(e))}).map(function(e,t){var n=pe(this).val();return null==n?null:pe.isArray(n)?pe.map(n,function(e){return{name:t.name,value:e.replace(on,\"\\r\\n\")}}):{name:t.name,value:n.replace(on,\"\\r\\n\")}}).get()}}),pe.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return this.isLocal?ee():re.documentMode>8?Z():/^(get|post|head|put|delete|options)$/i.test(this.type)&&Z()||ee()}:Z;var un=0,ln={},cn=pe.ajaxSettings.xhr();e.attachEvent&&e.attachEvent(\"onunload\",function(){for(var e in ln)ln[e](void 0,!0)}),fe.cors=!!cn&&\"withCredentials\"in cn,cn=fe.ajax=!!cn,cn&&pe.ajaxTransport(function(t){if(!t.crossDomain||fe.cors){var n;return{send:function(r,i){var o,a=t.xhr(),s=++un;if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(o in t.xhrFields)a[o]=t.xhrFields[o];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||r[\"X-Requested-With\"]||(r[\"X-Requested-With\"]=\"XMLHttpRequest\");for(o in r)void 0!==r[o]&&a.setRequestHeader(o,r[o]+\"\");a.send(t.hasContent&&t.data||null),n=function(e,r){var o,u,l;if(n&&(r||4===a.readyState))if(delete ln[s],n=void 0,a.onreadystatechange=pe.noop,r)4!==a.readyState&&a.abort();else{l={},o=a.status,\"string\"==typeof a.responseText&&(l.text=a.responseText);try{u=a.statusText}catch(c){u=\"\"}o||!t.isLocal||t.crossDomain?1223===o&&(o=204):o=l.text?200:404}l&&i(o,u,l,a.getAllResponseHeaders())},t.async?4===a.readyState?e.setTimeout(n):a.onreadystatechange=ln[s]=n:n()},abort:function(){n&&n(void 0,!0)}}}}),pe.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return pe.globalEval(e),e}}}),pe.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\",e.global=!1)}),pe.ajaxTransport(\"script\",function(e){if(e.crossDomain){var t,n=re.head||pe(\"head\")[0]||re.documentElement;return{send:function(r,i){t=re.createElement(\"script\"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||i(200,\"success\"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var fn=[],dn=/(=)\\?(?=&|$)|\\?\\?/;pe.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=fn.pop()||pe.expando+\"_\"+Wt++;return this[e]=!0,e}}),pe.ajaxPrefilter(\"json jsonp\",function(t,n,r){var i,o,a,s=t.jsonp!==!1&&(dn.test(t.url)?\"url\":\"string\"==typeof t.data&&0===(t.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&dn.test(t.data)&&\"data\");if(s||\"jsonp\"===t.dataTypes[0])return i=t.jsonpCallback=pe.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(dn,\"$1\"+i):t.jsonp!==!1&&(t.url+=(It.test(t.url)?\"&\":\"?\")+t.jsonp+\"=\"+i),t.converters[\"script json\"]=function(){return a||pe.error(i+\" was not called\"),a[0]},t.dataTypes[0]=\"json\",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?pe(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,fn.push(i)),a&&pe.isFunction(o)&&o(a[0]),a=o=void 0}),\"script\"}),pe.parseHTML=function(e,t,n){if(!e||\"string\"!=typeof e)return null;\"boolean\"==typeof t&&(n=t,t=!1),t=t||re;var r=Te.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=y([e],t,i),i&&i.length&&pe(i).remove(),pe.merge([],r.childNodes))};var pn=pe.fn.load;return pe.fn.load=function(e,t,n){if(\"string\"!=typeof e&&pn)return pn.apply(this,arguments);var r,i,o,a=this,s=e.indexOf(\" \");return s>-1&&(r=pe.trim(e.slice(s,e.length)),e=e.slice(0,s)),pe.isFunction(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(i=\"POST\"),a.length>0&&pe.ajax({url:e,type:i||\"GET\",dataType:\"html\",data:t}).done(function(e){o=arguments,a.html(r?pe(\"<div>\").append(pe.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},pe.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){pe.fn[t]=function(e){return this.on(t,e)}}),pe.expr.filters.animated=function(e){return pe.grep(pe.timers,function(t){return e===t.elem}).length},pe.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=pe.css(e,\"position\"),f=pe(e),d={};\"static\"===c&&(e.style.position=\"relative\"),s=f.offset(),o=pe.css(e,\"top\"),u=pe.css(e,\"left\"),l=(\"absolute\"===c||\"fixed\"===c)&&pe.inArray(\"auto\",[o,u])>-1,l?(r=f.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),pe.isFunction(t)&&(t=t.call(e,n,pe.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+i),\"using\"in t?t.using.call(e,d):f.css(d)}},pe.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){pe.offset.setOffset(this,e,t)});var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(o)return t=o.documentElement,pe.contains(t,i)?(\"undefined\"!=typeof i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=te(o),{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):r},position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return\"fixed\"===pe.css(r,\"position\")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),pe.nodeName(e[0],\"html\")||(n=e.offset()),n.top+=pe.css(e[0],\"borderTopWidth\",!0),n.left+=pe.css(e[0],\"borderLeftWidth\",!0)),{top:t.top-n.top-pe.css(r,\"marginTop\",!0),left:t.left-n.left-pe.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){\nfor(var e=this.offsetParent;e&&!pe.nodeName(e,\"html\")&&\"static\"===pe.css(e,\"position\");)e=e.offsetParent;return e||pt})}}),pe.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(e,t){var n=/Y/.test(t);pe.fn[e]=function(r){return Pe(this,function(e,r,i){var o=te(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[r]:e[r]:void(o?o.scrollTo(n?pe(o).scrollLeft():i,n?i:pe(o).scrollTop()):e[r]=i)},e,r,arguments.length,null)}}),pe.each([\"top\",\"left\"],function(e,t){pe.cssHooks[t]=L(fe.pixelPosition,function(e,n){if(n)return n=gt(e,t),ft.test(n)?pe(e).position()[t]+\"px\":n})}),pe.each({Height:\"height\",Width:\"width\"},function(e,t){pe.each({padding:\"inner\"+e,content:t,\"\":\"outer\"+e},function(n,r){pe.fn[r]=function(r,i){var o=arguments.length&&(n||\"boolean\"!=typeof r),a=n||(r===!0||i===!0?\"margin\":\"border\");return Pe(this,function(t,n,r){var i;return pe.isWindow(t)?t.document.documentElement[\"client\"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body[\"scroll\"+e],i[\"scroll\"+e],t.body[\"offset\"+e],i[\"offset\"+e],i[\"client\"+e])):void 0===r?pe.css(t,n,a):pe.style(t,n,r,a)},t,o?r:void 0,o,null)}})}),pe.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)}}),pe.fn.size=function(){return this.length},pe.fn.andSelf=pe.fn.addBack,layui.define(function(e){layui.$=pe,e(\"jquery\",pe)}),pe});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/laydate.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;!function(){\"use strict\";var e=window.layui&&layui.define,t={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,n=t.length-1,a=n;a>0;a--)if(\"interactive\"===t[a].readyState){e=t[a].src;break}return e||t[n].src}();return e.substring(0,e.lastIndexOf(\"/\")+1)}(),getStyle:function(e,t){var n=e.currentStyle?e.currentStyle:window.getComputedStyle(e,null);return n[n.getPropertyValue?\"getPropertyValue\":\"getAttribute\"](t)},link:function(e,a,i){if(n.path){var r=document.getElementsByTagName(\"head\")[0],o=document.createElement(\"link\");\"string\"==typeof a&&(i=a);var s=(i||e).replace(/\\.|\\//g,\"\"),l=\"layuicss-\"+s,d=0;o.rel=\"stylesheet\",o.href=n.path+e,o.id=l,document.getElementById(l)||r.appendChild(o),\"function\"==typeof a&&!function c(){return++d>80?window.console&&console.error(\"laydate.css: Invalid\"):void(1989===parseInt(t.getStyle(document.getElementById(l),\"width\"))?a():setTimeout(c,100))}()}}},n={v:\"5.0.9\",config:{},index:window.laydate&&window.laydate.v?1e5:0,path:t.getPath,set:function(e){var t=this;return t.config=w.extend({},t.config,e),t},ready:function(a){var i=\"laydate\",r=\"\",o=(e?\"modules/laydate/\":\"theme/\")+\"default/laydate.css?v=\"+n.v+r;return e?layui.addcss(o,a,i):t.link(o,a,i),this}},a=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i=\"laydate\",r=\".layui-laydate\",o=\"layui-this\",s=\"laydate-disabled\",l=\"开始日期超出了结束日期<br>建议重新选择\",d=[100,2e5],c=\"layui-laydate-static\",m=\"layui-laydate-list\",u=\"laydate-selected\",h=\"layui-laydate-hint\",y=\"laydate-day-prev\",f=\"laydate-day-next\",p=\"layui-laydate-footer\",g=\".laydate-btns-confirm\",v=\"laydate-time-text\",D=\".laydate-btns-time\",T=function(e){var t=this;t.index=++n.index,t.config=w.extend({},t.config,n.config,e),n.ready(function(){t.init()})},w=function(e){return new C(e)},C=function(e){for(var t=0,n=\"object\"==typeof e?[e]:(this.selector=e,document.querySelectorAll(e||null));t<n.length;t++)this.push(n[t])};C.prototype=[],C.prototype.constructor=C,w.extend=function(){var e=1,t=arguments,n=function(e,t){e=e||(t.constructor===Array?[]:{});for(var a in t)e[a]=t[a]&&t[a].constructor===Object?n(e[a],t[a]):t[a];return e};for(t[0]=\"object\"==typeof t[0]?t[0]:{};e<t.length;e++)\"object\"==typeof t[e]&&n(t[0],t[e]);return t[0]},w.ie=function(){var e=navigator.userAgent.toLowerCase();return!!(window.ActiveXObject||\"ActiveXObject\"in window)&&((e.match(/msie\\s(\\d+)/)||[])[1]||\"11\")}(),w.stope=function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},w.each=function(e,t){var n,a=this;if(\"function\"!=typeof t)return a;if(e=e||[],e.constructor===Object){for(n in e)if(t.call(e[n],n,e[n]))break}else for(n=0;n<e.length&&!t.call(e[n],n,e[n]);n++);return a},w.digit=function(e,t,n){var a=\"\";e=String(e),t=t||2;for(var i=e.length;i<t;i++)a+=\"0\";return e<Math.pow(10,t)?a+(0|e):e},w.elem=function(e,t){var n=document.createElement(e);return w.each(t||{},function(e,t){n.setAttribute(e,t)}),n},C.addStr=function(e,t){return e=e.replace(/\\s+/,\" \"),t=t.replace(/\\s+/,\" \").split(\" \"),w.each(t,function(t,n){new RegExp(\"\\\\b\"+n+\"\\\\b\").test(e)||(e=e+\" \"+n)}),e.replace(/^\\s|\\s$/,\"\")},C.removeStr=function(e,t){return e=e.replace(/\\s+/,\" \"),t=t.replace(/\\s+/,\" \").split(\" \"),w.each(t,function(t,n){var a=new RegExp(\"\\\\b\"+n+\"\\\\b\");a.test(e)&&(e=e.replace(a,\"\"))}),e.replace(/\\s+/,\" \").replace(/^\\s|\\s$/,\"\")},C.prototype.find=function(e){var t=this,n=0,a=[],i=\"object\"==typeof e;return this.each(function(r,o){for(var s=i?[e]:o.querySelectorAll(e||null);n<s.length;n++)a.push(s[n]);t.shift()}),i||(t.selector=(t.selector?t.selector+\" \":\"\")+e),w.each(a,function(e,n){t.push(n)}),t},C.prototype.each=function(e){return w.each.call(this,this,e)},C.prototype.addClass=function(e,t){return this.each(function(n,a){a.className=C[t?\"removeStr\":\"addStr\"](a.className,e)})},C.prototype.removeClass=function(e){return this.addClass(e,!0)},C.prototype.hasClass=function(e){var t=!1;return this.each(function(n,a){new RegExp(\"\\\\b\"+e+\"\\\\b\").test(a.className)&&(t=!0)}),t},C.prototype.attr=function(e,t){var n=this;return void 0===t?function(){if(n.length>0)return n[0].getAttribute(e)}():n.each(function(n,a){a.setAttribute(e,t)})},C.prototype.removeAttr=function(e){return this.each(function(t,n){n.removeAttribute(e)})},C.prototype.html=function(e){return this.each(function(t,n){n.innerHTML=e})},C.prototype.val=function(e){return this.each(function(t,n){n.value=e})},C.prototype.append=function(e){return this.each(function(t,n){\"object\"==typeof e?n.appendChild(e):n.innerHTML=n.innerHTML+e})},C.prototype.remove=function(e){return this.each(function(t,n){e?n.removeChild(e):n.parentNode.removeChild(n)})},C.prototype.on=function(e,t){return this.each(function(n,a){a.attachEvent?a.attachEvent(\"on\"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1)})},C.prototype.off=function(e,t){return this.each(function(n,a){a.detachEvent?a.detachEvent(\"on\"+e,t):a.removeEventListener(e,t,!1)})},T.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},T.prototype.config={type:\"date\",range:!1,format:\"yyyy-MM-dd\",value:null,isInitValue:!0,min:\"1900-1-1\",max:\"2099-12-31\",trigger:\"focus\",show:!1,showBottom:!0,btns:[\"clear\",\"now\",\"confirm\"],lang:\"cn\",theme:\"default\",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},T.prototype.lang=function(){var e=this,t=e.config,n={cn:{weeks:[\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\"],time:[\"时\",\"分\",\"秒\"],timeTips:\"选择时间\",startTime:\"开始时间\",endTime:\"结束时间\",dateTips:\"返回日期\",month:[\"一\",\"二\",\"三\",\"四\",\"五\",\"六\",\"七\",\"八\",\"九\",\"十\",\"十一\",\"十二\"],tools:{confirm:\"确定\",clear:\"清空\",now:\"现在\"}},en:{weeks:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],time:[\"Hours\",\"Minutes\",\"Seconds\"],timeTips:\"Select Time\",startTime:\"Start Time\",endTime:\"End Time\",dateTips:\"Select Date\",month:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],tools:{confirm:\"Confirm\",clear:\"Clear\",now:\"Now\"}}};return n[t.lang]||n.cn},T.prototype.init=function(){var e=this,t=e.config,n=\"yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s\",a=\"static\"===t.position,i={year:\"yyyy\",month:\"yyyy-MM\",date:\"yyyy-MM-dd\",time:\"HH:mm:ss\",datetime:\"yyyy-MM-dd HH:mm:ss\"};t.elem=w(t.elem),t.eventElem=w(t.eventElem),t.elem[0]&&(t.range===!0&&(t.range=\"-\"),t.format===i.date&&(t.format=i[t.type]),e.format=t.format.match(new RegExp(n+\"|.\",\"g\"))||[],e.EXP_IF=\"\",e.EXP_SPLIT=\"\",w.each(e.format,function(t,a){var i=new RegExp(n).test(a)?\"\\\\d{\"+function(){return new RegExp(n).test(e.format[0===t?t+1:t-1]||\"\")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?\"1,4\":/^y$/.test(a)?\"1,308\":\"1,2\"}()+\"}\":\"\\\\\"+a;e.EXP_IF=e.EXP_IF+i,e.EXP_SPLIT=e.EXP_SPLIT+\"(\"+i+\")\"}),e.EXP_IF=new RegExp(\"^\"+(t.range?e.EXP_IF+\"\\\\s\\\\\"+t.range+\"\\\\s\"+e.EXP_IF:e.EXP_IF)+\"$\"),e.EXP_SPLIT=new RegExp(\"^\"+e.EXP_SPLIT+\"$\",\"\"),e.isInput(t.elem[0])||\"focus\"===t.trigger&&(t.trigger=\"click\"),t.elem.attr(\"lay-key\")||(t.elem.attr(\"lay-key\",e.index),t.eventElem.attr(\"lay-key\",e.index)),t.mark=w.extend({},t.calendar&&\"cn\"===t.lang?{\"0-1-1\":\"元旦\",\"0-2-14\":\"情人\",\"0-3-8\":\"妇女\",\"0-3-12\":\"植树\",\"0-4-1\":\"愚人\",\"0-5-1\":\"劳动\",\"0-5-4\":\"青年\",\"0-6-1\":\"儿童\",\"0-9-10\":\"教师\",\"0-9-18\":\"国耻\",\"0-10-1\":\"国庆\",\"0-12-25\":\"圣诞\"}:{},t.mark),w.each([\"min\",\"max\"],function(e,n){var a=[],i=[];if(\"number\"==typeof t[n]){var r=t[n],o=(new Date).getTime(),s=864e5,l=new Date(r?r<s?o+r*s:r:o);a=[l.getFullYear(),l.getMonth()+1,l.getDate()],r<s||(i=[l.getHours(),l.getMinutes(),l.getSeconds()])}else a=(t[n].match(/\\d+-\\d+-\\d+/)||[\"\"])[0].split(\"-\"),i=(t[n].match(/\\d+:\\d+:\\d+/)||[\"\"])[0].split(\":\");t[n]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|i[0],minutes:0|i[1],seconds:0|i[2]}}),e.elemID=\"layui-laydate\"+t.elem.attr(\"lay-key\"),(t.show||a)&&e.render(),a||e.events(),t.value&&t.isInitValue&&(t.value.constructor===Date?e.setValue(e.parse(0,e.systemDate(t.value))):e.setValue(t.value)))},T.prototype.render=function(){var e=this,t=e.config,n=e.lang(),a=\"static\"===t.position,i=e.elem=w.elem(\"div\",{id:e.elemID,\"class\":[\"layui-laydate\",t.range?\" layui-laydate-range\":\"\",a?\" \"+c:\"\",t.theme&&\"default\"!==t.theme&&!/^#/.test(t.theme)?\" laydate-theme-\"+t.theme:\"\"].join(\"\")}),r=e.elemMain=[],o=e.elemHeader=[],s=e.elemCont=[],l=e.table=[],d=e.footer=w.elem(\"div\",{\"class\":p});if(t.zIndex&&(i.style.zIndex=t.zIndex),w.each(new Array(2),function(e){if(!t.range&&e>0)return!0;var a=w.elem(\"div\",{\"class\":\"layui-laydate-header\"}),i=[function(){var e=w.elem(\"i\",{\"class\":\"layui-icon laydate-icon laydate-prev-y\"});return e.innerHTML=\"&#xe65a;\",e}(),function(){var e=w.elem(\"i\",{\"class\":\"layui-icon laydate-icon laydate-prev-m\"});return e.innerHTML=\"&#xe603;\",e}(),function(){var e=w.elem(\"div\",{\"class\":\"laydate-set-ym\"}),t=w.elem(\"span\"),n=w.elem(\"span\");return e.appendChild(t),e.appendChild(n),e}(),function(){var e=w.elem(\"i\",{\"class\":\"layui-icon laydate-icon laydate-next-m\"});return e.innerHTML=\"&#xe602;\",e}(),function(){var e=w.elem(\"i\",{\"class\":\"layui-icon laydate-icon laydate-next-y\"});return e.innerHTML=\"&#xe65b;\",e}()],d=w.elem(\"div\",{\"class\":\"layui-laydate-content\"}),c=w.elem(\"table\"),m=w.elem(\"thead\"),u=w.elem(\"tr\");w.each(i,function(e,t){a.appendChild(t)}),m.appendChild(u),w.each(new Array(6),function(e){var t=c.insertRow(0);w.each(new Array(7),function(a){if(0===e){var i=w.elem(\"th\");i.innerHTML=n.weeks[a],u.appendChild(i)}t.insertCell(a)})}),c.insertBefore(m,c.children[0]),d.appendChild(c),r[e]=w.elem(\"div\",{\"class\":\"layui-laydate-main laydate-main-list-\"+e}),r[e].appendChild(a),r[e].appendChild(d),o.push(i),s.push(d),l.push(c)}),w(d).html(function(){var e=[],i=[];return\"datetime\"===t.type&&e.push('<span lay-type=\"datetime\" class=\"laydate-btns-time\">'+n.timeTips+\"</span>\"),w.each(t.btns,function(e,r){var o=n.tools[r]||\"btn\";t.range&&\"now\"===r||(a&&\"clear\"===r&&(o=\"cn\"===t.lang?\"重置\":\"Reset\"),i.push('<span lay-type=\"'+r+'\" class=\"laydate-btns-'+r+'\">'+o+\"</span>\"))}),e.push('<div class=\"laydate-footer-btns\">'+i.join(\"\")+\"</div>\"),e.join(\"\")}()),w.each(r,function(e,t){i.appendChild(t)}),t.showBottom&&i.appendChild(d),/^#/.test(t.theme)){var m=w.elem(\"style\"),u=[\"#{{id}} .layui-laydate-header{background-color:{{theme}};}\",\"#{{id}} .layui-this{background-color:{{theme}} !important;}\"].join(\"\").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);\"styleSheet\"in m?(m.setAttribute(\"type\",\"text/css\"),m.styleSheet.cssText=u):m.innerHTML=u,w(i).addClass(\"laydate-theme-molv\"),i.appendChild(m)}e.remove(T.thisElemDate),a?t.elem.append(i):(document.body.appendChild(i),e.position()),e.checkDate().calendar(),e.changeEvent(),T.thisElemDate=e.elemID,\"function\"==typeof t.ready&&t.ready(w.extend({},t.dateTime,{month:t.dateTime.month+1}))},T.prototype.remove=function(e){var t=this,n=(t.config,w(\"#\"+(e||t.elemID)));return n.hasClass(c)||t.checkDate(function(){n.remove()}),t},T.prototype.position=function(){var e=this,t=e.config,n=e.bindElem||t.elem[0],a=n.getBoundingClientRect(),i=e.elem.offsetWidth,r=e.elem.offsetHeight,o=function(e){return e=e?\"scrollLeft\":\"scrollTop\",document.body[e]|document.documentElement[e]},s=function(e){return document.documentElement[e?\"clientWidth\":\"clientHeight\"]},l=5,d=a.left,c=a.bottom;d+i+l>s(\"width\")&&(d=s(\"width\")-i-l),c+r+l>s()&&(c=a.top>r?a.top-r:s()-r,c-=2*l),t.position&&(e.elem.style.position=t.position),e.elem.style.left=d+(\"fixed\"===t.position?0:o(1))+\"px\",e.elem.style.top=c+(\"fixed\"===t.position?0:o())+\"px\"},T.prototype.hint=function(e){var t=this,n=(t.config,w.elem(\"div\",{\"class\":h}));t.elem&&(n.innerHTML=e||\"\",w(t.elem).find(\".\"+h).remove(),t.elem.appendChild(n),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){w(t.elem).find(\".\"+h).remove()},3e3))},T.prototype.getAsYM=function(e,t,n){return n?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},T.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},T.prototype.checkDate=function(e){var t,a,i=this,r=(new Date,i.config),o=r.dateTime=r.dateTime||i.systemDate(),s=i.bindElem||r.elem[0],l=(i.isInput(s)?\"val\":\"html\",i.isInput(s)?s.value:\"static\"===r.position?\"\":s.innerHTML),c=function(e){e.year>d[1]&&(e.year=d[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},m=function(e,t,n){var o=[\"startTime\",\"endTime\"];t=(t.match(i.EXP_SPLIT)||[]).slice(1),n=n||0,r.range&&(i[o[n]]=i[o[n]]||{}),w.each(i.format,function(s,l){var c=parseFloat(t[s]);t[s].length<l.length&&(a=!0),/yyyy|y/.test(l)?(c<d[0]&&(c=d[0],a=!0),e.year=c):/MM|M/.test(l)?(c<1&&(c=1,a=!0),e.month=c-1):/dd|d/.test(l)?(c<1&&(c=1,a=!0),e.date=c):/HH|H/.test(l)?(c<1&&(c=0,a=!0),e.hours=c,r.range&&(i[o[n]].hours=c)):/mm|m/.test(l)?(c<1&&(c=0,a=!0),e.minutes=c,r.range&&(i[o[n]].minutes=c)):/ss|s/.test(l)&&(c<1&&(c=0,a=!0),e.seconds=c,r.range&&(i[o[n]].seconds=c))}),c(e)};return\"limit\"===e?(c(o),i):(l=l||r.value,\"string\"==typeof l&&(l=l.replace(/\\s+/g,\" \").replace(/^\\s|\\s$/g,\"\")),i.startState&&!i.endState&&(delete i.startState,i.endState=!0),\"string\"==typeof l&&l?i.EXP_IF.test(l)?r.range?(l=l.split(\" \"+r.range+\" \"),i.startDate=i.startDate||i.systemDate(),i.endDate=i.endDate||i.systemDate(),r.dateTime=w.extend({},i.startDate),w.each([i.startDate,i.endDate],function(e,t){m(t,l[e],e)})):m(o,l):(i.hint(\"日期格式不合法<br>必须遵循下述格式：<br>\"+(r.range?r.format+\" \"+r.range+\" \"+r.format:r.format)+\"<br>已为你重置\"),a=!0):l&&l.constructor===Date?r.dateTime=i.systemDate(l):(r.dateTime=i.systemDate(),delete i.startState,delete i.endState,delete i.startDate,delete i.endDate,delete i.startTime,delete i.endTime),c(o),a&&l&&i.setValue(r.range?i.endDate?i.parse():\"\":i.parse()),e&&e(),i)},T.prototype.mark=function(e,t){var n,a=this,i=a.config;return w.each(i.mark,function(e,a){var i=e.split(\"-\");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(n=a||t[2])}),n&&e.html('<span class=\"laydate-day-mark\">'+n+\"</span>\"),a},T.prototype.limit=function(e,t,n,a){var i,r=this,o=r.config,l={},d=o[n>41?\"endDate\":\"dateTime\"],c=w.extend({},d,t||{});return w.each({now:c,min:o.min,max:o.max},function(e,t){l[e]=r.newDate(w.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return w.each(a,function(n,a){e[a]=t[a]}),e}())).getTime()}),i=l.now<l.min||l.now>l.max,e&&e[i?\"addClass\":\"removeClass\"](s),i},T.prototype.calendar=function(e){var t,a,i,r=this,s=r.config,l=e||s.dateTime,c=new Date,m=r.lang(),u=\"date\"!==s.type&&\"datetime\"!==s.type,h=e?1:0,y=w(r.table[h]).find(\"td\"),f=w(r.elemHeader[h][2]).find(\"span\");if(l.year<d[0]&&(l.year=d[0],r.hint(\"最低只能支持到公元\"+d[0]+\"年\")),l.year>d[1]&&(l.year=d[1],r.hint(\"最高只能支持到公元\"+d[1]+\"年\")),r.firstDate||(r.firstDate=w.extend({},l)),c.setFullYear(l.year,l.month,1),t=c.getDay(),a=n.getEndDate(l.month||12,l.year),i=n.getEndDate(l.month+1,l.year),w.each(y,function(e,n){var d=[l.year,l.month],c=0;n=w(n),n.removeAttr(\"class\"),e<t?(c=a-t+e,n.addClass(\"laydate-day-prev\"),d=r.getAsYM(l.year,l.month,\"sub\")):e>=t&&e<i+t?(c=e-t,s.range||c+1===l.date&&n.addClass(o)):(c=e-i-t,n.addClass(\"laydate-day-next\"),d=r.getAsYM(l.year,l.month)),d[1]++,d[2]=c+1,n.attr(\"lay-ymd\",d.join(\"-\")).html(d[2]),r.mark(n,d).limit(n,{year:d[0],month:d[1]-1,date:d[2]},e)}),w(f[0]).attr(\"lay-ym\",l.year+\"-\"+(l.month+1)),w(f[1]).attr(\"lay-ym\",l.year+\"-\"+(l.month+1)),\"cn\"===s.lang?(w(f[0]).attr(\"lay-type\",\"year\").html(l.year+\"年\"),w(f[1]).attr(\"lay-type\",\"month\").html(l.month+1+\"月\")):(w(f[0]).attr(\"lay-type\",\"month\").html(m.month[l.month]),w(f[1]).attr(\"lay-type\",\"year\").html(l.year)),u&&(s.range&&(e?r.endDate=r.endDate||{year:l.year+(\"year\"===s.type?1:0),month:l.month+(\"month\"===s.type?0:-1)}:r.startDate=r.startDate||{year:l.year,month:l.month},e&&(r.listYM=[[r.startDate.year,r.startDate.month+1],[r.endDate.year,r.endDate.month+1]],r.list(s.type,0).list(s.type,1),\"time\"===s.type?r.setBtnStatus(\"时间\",w.extend({},r.systemDate(),r.startTime),w.extend({},r.systemDate(),r.endTime)):r.setBtnStatus(!0))),s.range||(r.listYM=[[l.year,l.month+1]],r.list(s.type,0))),s.range&&!e){var p=r.getAsYM(l.year,l.month);r.calendar(w.extend({},l,{year:p[0],month:p[1]}))}return s.range||r.limit(w(r.footer).find(g),null,0,[\"hours\",\"minutes\",\"seconds\"]),s.range&&e&&!u&&r.stampRange(),r},T.prototype.list=function(e,t){var n=this,a=n.config,i=a.dateTime,r=n.lang(),l=a.range&&\"date\"!==a.type&&\"datetime\"!==a.type,d=w.elem(\"ul\",{\"class\":m+\" \"+{year:\"laydate-year-list\",month:\"laydate-month-list\",time:\"laydate-time-list\"}[e]}),c=n.elemHeader[t],u=w(c[2]).find(\"span\"),h=n.elemCont[t||0],y=w(h).find(\".\"+m)[0],f=\"cn\"===a.lang,p=f?\"年\":\"\",T=n.listYM[t]||{},C=[\"hours\",\"minutes\",\"seconds\"],x=[\"startTime\",\"endTime\"][t];if(T[0]<1&&(T[0]=1),\"year\"===e){var M,b=M=T[0]-7;b<1&&(b=M=1),w.each(new Array(15),function(e){var i=w.elem(\"li\",{\"lay-ym\":M}),r={year:M};M==T[0]&&w(i).addClass(o),i.innerHTML=M+p,d.appendChild(i),M<n.firstDate.year?(r.month=a.min.month,r.date=a.min.date):M>=n.firstDate.year&&(r.month=a.max.month,r.date=a.max.date),n.limit(w(i),r,t),M++}),w(u[f?0:1]).attr(\"lay-ym\",M-8+\"-\"+T[1]).html(b+p+\" - \"+(M-1+p))}else if(\"month\"===e)w.each(new Array(12),function(e){var i=w.elem(\"li\",{\"lay-ym\":e}),s={year:T[0],month:e};e+1==T[1]&&w(i).addClass(o),i.innerHTML=r.month[e]+(f?\"月\":\"\"),d.appendChild(i),T[0]<n.firstDate.year?s.date=a.min.date:T[0]>=n.firstDate.year&&(s.date=a.max.date),n.limit(w(i),s,t)}),w(u[f?0:1]).attr(\"lay-ym\",T[0]+\"-\"+T[1]).html(T[0]+p);else if(\"time\"===e){var E=function(){w(d).find(\"ol\").each(function(e,a){w(a).find(\"li\").each(function(a,i){n.limit(w(i),[{hours:a},{hours:n[x].hours,minutes:a},{hours:n[x].hours,minutes:n[x].minutes,seconds:a}][e],t,[[\"hours\"],[\"hours\",\"minutes\"],[\"hours\",\"minutes\",\"seconds\"]][e])})}),a.range||n.limit(w(n.footer).find(g),n[x],0,[\"hours\",\"minutes\",\"seconds\"])};a.range?n[x]||(n[x]={hours:0,minutes:0,seconds:0}):n[x]=i,w.each([24,60,60],function(e,t){var a=w.elem(\"li\"),i=[\"<p>\"+r.time[e]+\"</p><ol>\"];w.each(new Array(t),function(t){i.push(\"<li\"+(n[x][C[e]]===t?' class=\"'+o+'\"':\"\")+\">\"+w.digit(t,2)+\"</li>\")}),a.innerHTML=i.join(\"\")+\"</ol>\",d.appendChild(a)}),E()}if(y&&h.removeChild(y),h.appendChild(d),\"year\"===e||\"month\"===e)w(n.elemMain[t]).addClass(\"laydate-ym-show\"),w(d).find(\"li\").on(\"click\",function(){var r=0|w(this).attr(\"lay-ym\");if(!w(this).hasClass(s)){if(0===t)i[e]=r,l&&(n.startDate[e]=r),n.limit(w(n.footer).find(g),null,0);else if(l)n.endDate[e]=r;else{var c=\"year\"===e?n.getAsYM(r,T[1]-1,\"sub\"):n.getAsYM(T[0],r,\"sub\");w.extend(i,{year:c[0],month:c[1]})}\"year\"===a.type||\"month\"===a.type?(w(d).find(\".\"+o).removeClass(o),w(this).addClass(o),\"month\"===a.type&&\"year\"===e&&(n.listYM[t][0]=r,l&&(n[[\"startDate\",\"endDate\"][t]].year=r),n.list(\"month\",t))):(n.checkDate(\"limit\").calendar(),n.closeList()),n.setBtnStatus(),a.range||n.done(null,\"change\"),w(n.footer).find(D).removeClass(s)}});else{var S=w.elem(\"span\",{\"class\":v}),k=function(){w(d).find(\"ol\").each(function(e){var t=this,a=w(t).find(\"li\");t.scrollTop=30*(n[x][C[e]]-2),t.scrollTop<=0&&a.each(function(e,n){if(!w(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=w(c[2]).find(\".\"+v);k(),S.innerHTML=a.range?[r.startTime,r.endTime][t]:r.timeTips,w(n.elemMain[t]).addClass(\"laydate-time-show\"),H[0]&&H.remove(),c[2].appendChild(S),w(d).find(\"ol\").each(function(e){var t=this;w(t).find(\"li\").on(\"click\",function(){var r=0|this.innerHTML;w(this).hasClass(s)||(a.range?n[x][C[e]]=r:i[C[e]]=r,w(t).find(\".\"+o).removeClass(o),w(this).addClass(o),E(),k(),(n.endDate||\"time\"===a.type)&&n.done(null,\"change\"),n.setBtnStatus())})})}return n},T.prototype.listYM=[],T.prototype.closeList=function(){var e=this;e.config;w.each(e.elemCont,function(t,n){w(this).find(\".\"+m).remove(),w(e.elemMain[t]).removeClass(\"laydate-ym-show laydate-time-show\")}),w(e.elem).find(\".\"+v).remove()},T.prototype.setBtnStatus=function(e,t,n){var a,i=this,r=i.config,o=w(i.footer).find(g),d=r.range&&\"date\"!==r.type&&\"time\"!==r.type;d&&(t=t||i.startDate,n=n||i.endDate,a=i.newDate(t).getTime()>i.newDate(n).getTime(),i.limit(null,t)||i.limit(null,n)?o.addClass(s):o[a?\"addClass\":\"removeClass\"](s),e&&a&&i.hint(\"string\"==typeof e?l.replace(/日期/g,e):l))},T.prototype.parse=function(e,t){var n=this,a=n.config,i=t||(e?w.extend({},n.endDate,n.endTime):a.range?w.extend({},n.startDate,n.startTime):a.dateTime),r=n.format.concat();return w.each(r,function(e,t){/yyyy|y/.test(t)?r[e]=w.digit(i.year,t.length):/MM|M/.test(t)?r[e]=w.digit(i.month+1,t.length):/dd|d/.test(t)?r[e]=w.digit(i.date,t.length):/HH|H/.test(t)?r[e]=w.digit(i.hours,t.length):/mm|m/.test(t)?r[e]=w.digit(i.minutes,t.length):/ss|s/.test(t)&&(r[e]=w.digit(i.seconds,t.length))}),a.range&&!e?r.join(\"\")+\" \"+a.range+\" \"+n.parse(1):r.join(\"\")},T.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},T.prototype.setValue=function(e){var t=this,n=t.config,a=t.bindElem||n.elem[0],i=t.isInput(a)?\"val\":\"html\";return\"static\"===n.position||w(a)[i](e||\"\"),this},T.prototype.stampRange=function(){var e,t,n=this,a=n.config,i=w(n.elem).find(\"td\");if(a.range&&!n.endDate&&w(n.footer).find(g).addClass(s),n.endDate)return e=n.newDate({year:n.startDate.year,month:n.startDate.month,date:n.startDate.date}).getTime(),t=n.newDate({year:n.endDate.year,month:n.endDate.month,date:n.endDate.date}).getTime(),e>t?n.hint(l):void w.each(i,function(a,i){var r=w(i).attr(\"lay-ymd\").split(\"-\"),s=n.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();w(i).removeClass(u+\" \"+o),s!==e&&s!==t||w(i).addClass(w(i).hasClass(y)||w(i).hasClass(f)?u:o),s>e&&s<t&&w(i).addClass(u)})},T.prototype.done=function(e,t){var n=this,a=n.config,i=w.extend({},n.startDate?w.extend(n.startDate,n.startTime):a.dateTime),r=w.extend({},w.extend(n.endDate,n.endTime));return w.each([i,r],function(e,t){\"month\"in t&&w.extend(t,{month:t.month+1})}),e=e||[n.parse(),i,r],\"function\"==typeof a[t||\"done\"]&&a[t||\"done\"].apply(a,e),n},T.prototype.choose=function(e){var t=this,n=t.config,a=n.dateTime,i=w(t.elem).find(\"td\"),r=e.attr(\"lay-ymd\").split(\"-\"),l=function(e){new Date;e&&w.extend(a,r),n.range&&(t.startDate?w.extend(t.startDate,r):t.startDate=w.extend({},r,t.startTime),t.startYMD=r)};if(r={year:0|r[0],month:(0|r[1])-1,date:0|r[2]},!e.hasClass(s))if(n.range){if(w.each([\"startTime\",\"endTime\"],function(e,n){t[n]=t[n]||{hours:0,minutes:0,seconds:0}}),t.endState)l(),delete t.endState,delete t.endDate,t.startState=!0,i.removeClass(o+\" \"+u),e.addClass(o);else if(t.startState){if(e.addClass(o),t.endDate?w.extend(t.endDate,r):t.endDate=w.extend({},r,t.endTime),t.newDate(r).getTime()<t.newDate(t.startYMD).getTime()){var d=w.extend({},t.endDate,{hours:t.startDate.hours,minutes:t.startDate.minutes,seconds:t.startDate.seconds});w.extend(t.endDate,t.startDate,{hours:t.endDate.hours,minutes:t.endDate.minutes,seconds:t.endDate.seconds}),t.startDate=d}n.showBottom||t.done(),t.stampRange(),t.endState=!0,t.done(null,\"change\")}else e.addClass(o),l(),t.startState=!0;w(t.footer).find(g)[t.endDate?\"removeClass\":\"addClass\"](s)}else\"static\"===n.position?(l(!0),t.calendar().done().done(null,\"change\")):\"date\"===n.type?(l(!0),t.setValue(t.parse()).remove().done()):\"datetime\"===n.type&&(l(!0),t.calendar().done(null,\"change\"))},T.prototype.tool=function(e,t){var n=this,a=n.config,i=a.dateTime,r=\"static\"===a.position,o={datetime:function(){w(e).hasClass(s)||(n.list(\"time\",0),a.range&&n.list(\"time\",1),w(e).attr(\"lay-type\",\"date\").html(n.lang().dateTips))},date:function(){n.closeList(),w(e).attr(\"lay-type\",\"datetime\").html(n.lang().timeTips)},clear:function(){n.setValue(\"\").remove(),r&&(w.extend(i,n.firstDate),n.calendar()),a.range&&(delete n.startState,delete n.endState,delete n.endDate,delete n.startTime,delete n.endTime),n.done([\"\",{},{}])},now:function(){var e=new Date;w.extend(i,n.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),n.setValue(n.parse()).remove(),r&&n.calendar(),n.done()},confirm:function(){if(a.range){if(!n.endDate)return n.hint(\"请先选择日期范围\");if(w(e).hasClass(s))return n.hint(\"time\"===a.type?l.replace(/日期/g,\"时间\"):l)}else if(w(e).hasClass(s))return n.hint(\"不在有效日期或时间范围内\");n.done(),n.setValue(n.parse()).remove()}};o[t]&&o[t]()},T.prototype.change=function(e){var t=this,n=t.config,a=n.dateTime,i=n.range&&(\"year\"===n.type||\"month\"===n.type),r=t.elemCont[e||0],o=t.listYM[e],s=function(s){var l=[\"startDate\",\"endDate\"][e],d=w(r).find(\".laydate-year-list\")[0],c=w(r).find(\".laydate-month-list\")[0];return d&&(o[0]=s?o[0]-15:o[0]+15,t.list(\"year\",e)),c&&(s?o[0]--:o[0]++,t.list(\"month\",e)),(d||c)&&(w.extend(a,{year:o[0]}),i&&(t[l].year=o[0]),n.range||t.done(null,\"change\"),t.setBtnStatus(),n.range||t.limit(w(t.footer).find(g),{year:o[0]})),d||c};return{prevYear:function(){s(\"sub\")||(a.year--,t.checkDate(\"limit\").calendar(),n.range||t.done(null,\"change\"))},prevMonth:function(){var e=t.getAsYM(a.year,a.month,\"sub\");w.extend(a,{year:e[0],month:e[1]}),t.checkDate(\"limit\").calendar(),n.range||t.done(null,\"change\")},nextMonth:function(){var e=t.getAsYM(a.year,a.month);w.extend(a,{year:e[0],month:e[1]}),t.checkDate(\"limit\").calendar(),n.range||t.done(null,\"change\")},nextYear:function(){s()||(a.year++,t.checkDate(\"limit\").calendar(),n.range||t.done(null,\"change\"))}}},T.prototype.changeEvent=function(){var e=this;e.config;w(e.elem).on(\"click\",function(e){w.stope(e)}),w.each(e.elemHeader,function(t,n){w(n[0]).on(\"click\",function(n){e.change(t).prevYear()}),w(n[1]).on(\"click\",function(n){e.change(t).prevMonth()}),w(n[2]).find(\"span\").on(\"click\",function(n){var a=w(this),i=a.attr(\"lay-ym\"),r=a.attr(\"lay-type\");i&&(i=i.split(\"-\"),e.listYM[t]=[0|i[0],0|i[1]],e.list(r,t),w(e.footer).find(D).addClass(s))}),w(n[3]).on(\"click\",function(n){e.change(t).nextMonth()}),w(n[4]).on(\"click\",function(n){e.change(t).nextYear()})}),w.each(e.table,function(t,n){var a=w(n).find(\"td\");a.on(\"click\",function(){e.choose(w(this))})}),w(e.footer).find(\"span\").on(\"click\",function(){var t=w(this).attr(\"lay-type\");e.tool(this,t)})},T.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())},T.prototype.events=function(){var e=this,t=e.config,n=function(n,a){n.on(t.trigger,function(){a&&(e.bindElem=this),e.render()})};t.elem[0]&&!t.elem[0].eventHandler&&(n(t.elem,\"bind\"),n(t.eventElem),w(document).on(\"click\",function(n){n.target!==t.elem[0]&&n.target!==t.eventElem[0]&&n.target!==w(t.closeStop)[0]&&e.remove()}).on(\"keydown\",function(t){13===t.keyCode&&w(\"#\"+e.elemID)[0]&&e.elemID===T.thisElem&&(t.preventDefault(),w(e.footer).find(g)[0].click())}),w(window).on(\"resize\",function(){return!(!e.elem||!w(r)[0])&&void e.position()}),t.elem[0].eventHandler=!0)},n.render=function(e){var t=new T(e);return a.call(t)},n.getEndDate=function(e,t){var n=new Date;return n.setFullYear(t||n.getFullYear(),e||n.getMonth()+1,1),new Date(n.getTime()-864e5).getDate()},window.lay=window.lay||w,e?(n.ready(),layui.define(function(e){n.path=layui.cache.dir,e(i,n)})):\"function\"==typeof define&&define.amd?define(function(){return n}):function(){n.ready(),window.laydate=n}()}();"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/layedit.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define([\"layer\",\"form\"],function(t){\"use strict\";var e=layui.$,i=layui.layer,a=layui.form,l=(layui.hint(),layui.device()),n=\"layedit\",o=\"layui-show\",r=\"layui-disabled\",c=function(){var t=this;t.index=0,t.config={tool:[\"strong\",\"italic\",\"underline\",\"del\",\"|\",\"left\",\"center\",\"right\",\"|\",\"link\",\"unlink\",\"face\",\"image\"],hideTool:[],height:280}};c.prototype.set=function(t){var i=this;return e.extend(!0,i.config,t),i},c.prototype.on=function(t,e){return layui.onevent(n,t,e)},c.prototype.build=function(t,i){i=i||{};var a=this,n=a.config,r=\"layui-layedit\",c=e(\"string\"==typeof t?\"#\"+t:t),u=\"LAY_layedit_\"+ ++a.index,d=c.next(\".\"+r),y=e.extend({},n,i),f=function(){var t=[],e={};return layui.each(y.hideTool,function(t,i){e[i]=!0}),layui.each(y.tool,function(i,a){C[a]&&!e[a]&&t.push(C[a])}),t.join(\"\")}(),m=e(['<div class=\"'+r+'\">','<div class=\"layui-unselect layui-layedit-tool\">'+f+\"</div>\",'<div class=\"layui-layedit-iframe\">','<iframe id=\"'+u+'\" name=\"'+u+'\" textarea=\"'+t+'\" frameborder=\"0\"></iframe>',\"</div>\",\"</div>\"].join(\"\"));return l.ie&&l.ie<8?c.removeClass(\"layui-hide\").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass(\"layui-hide\").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e(\"#\"+i[1].attr(\"textarea\"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find(\"iframe\");n.css({height:a.height}).on(\"load\",function(){var o=n.contents(),r=n.prop(\"contentWindow\"),c=o.find(\"head\"),s=e([\"<style>\",\"*{margin: 0; padding: 0;}\",\"body{padding: 10px; line-height: 20px; overflow-x: hidden; word-wrap: break-word; font: 14px Helvetica Neue,Helvetica,PingFang SC,Microsoft YaHei,Tahoma,Arial,sans-serif; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important;}\",\"a{color:#01AAED; text-decoration:none;}a:hover{color:#c00}\",\"p{margin-bottom: 10px;}\",\"img{display: inline-block; border: none; vertical-align: middle;}\",\"pre{margin: 10px 0; padding: 10px; line-height: 20px; border: 1px solid #ddd; border-left-width: 6px; background-color: #F2F2F2; color: #333; font-family: Courier New; font-size: 12px;}\",\"</style>\"].join(\"\")),u=o.find(\"body\");c.append(s),u.attr(\"contenteditable\",\"true\").css({\"min-height\":a.height}).html(i.value||\"\"),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e(\"#LAY_layedit_\"+t),a=i.prop(\"contentWindow\");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on(\"keydown\",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if(\"pre\"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg(\"请暂时用shift+enter\"),!1}r.execCommand(\"formatBlock\",!1,\"<p>\")}}),e(n).parents(\"form\").on(\"submit\",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on(\"paste\",function(e){r.execCommand(\"formatBlock\",!1,\"<p>\"),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find(\"*[style]\").each(function(){var t=this.style.textAlign;this.removeAttribute(\"style\"),e(this).css({\"text-align\":t||\"\"})}),t.find(\"table\").addClass(\"layui-table\"),t.find(\"script,link\").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute(\"text\"),l.selection){var r=a.text||i.text;if(\"a\"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop(\"outerHTML\")),a.select()}else{var r=a.toString()||i.text;if(\"a\"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l=\"layedit-tool-active\",n=p(m(a)),o=function(e){return t.find(\".layedit-tool-\"+e)};i&&i[i.hasClass(l)?\"removeClass\":\"addClass\"](l),t.find(\">i\").removeClass(l),o(\"unlink\").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;\"b\"!==t&&\"strong\"!==t||o(\"b\").addClass(l),\"i\"!==t&&\"em\"!==t||o(\"i\").addClass(l),\"u\"===t&&o(\"u\").addClass(l),\"strike\"===t&&o(\"d\").addClass(l),\"p\"===t&&(\"center\"===e?o(\"center\").addClass(l):\"right\"===e?o(\"right\").addClass(l):o(\"left\").addClass(l)),\"a\"===t&&(o(\"link\").addClass(l),o(\"unlink\").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr(\"href\"),target:l.attr(\"target\")},function(e){var a=l[0];\"A\"===a.tagName?a.href=e.url:v.call(t,\"a\",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand(\"unlink\")},face:function(e){x.call(this,function(i){v.call(t,\"img\",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use(\"upload\",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find(\"input\")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,\"img\",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||\"上传失败\")}})})},code:function(e){k.call(o,function(i){v.call(t,\"pre\",{text:i.code,\"lay-lang\":i.lang},e)})},help:function(){i.open({type:2,title:\"帮助\",area:[\"600px\",\"380px\"],shadeClose:!0,shade:.1,skin:\"layui-layer-msg\",content:[\"http://www.layui.com/about/layedit/help.html\",\"no\"]})}},s=a.find(\".layui-layedit-tool\"),u=function(){var i=e(this),a=i.attr(\"layedit-event\"),l=i.attr(\"lay-command\");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand(\"formatBlock\",!1,\"<p>\"),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(\">i\").on(\"mousedown\",function(){var t=e(this),i=t.attr(\"layedit-event\");d.test(i)||u.call(this)}).on(\"click\",function(){var t=e(this),i=t.attr(\"layedit-event\");d.test(i)&&u.call(this)}),o.on(\"click\",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:\"LAY_layedit_link\",area:\"350px\",shade:.05,shadeClose:!0,moveType:1,title:\"超链接\",skin:\"layui-layer-msg\",content:['<ul class=\"layui-form\" style=\"margin: 15px;\">','<li class=\"layui-form-item\">','<label class=\"layui-form-label\" style=\"width: 60px;\">URL</label>','<div class=\"layui-input-block\" style=\"margin-left: 90px\">','<input name=\"url\" lay-verify=\"url\" value=\"'+(t.href||\"\")+'\" autofocus=\"true\" autocomplete=\"off\" class=\"layui-input\">',\"</div>\",\"</li>\",'<li class=\"layui-form-item\">','<label class=\"layui-form-label\" style=\"width: 60px;\">打开方式</label>','<div class=\"layui-input-block\" style=\"margin-left: 90px\">','<input type=\"radio\" name=\"target\" value=\"_self\" class=\"layui-input\" title=\"当前窗口\"'+(\"_self\"!==t.target&&t.target?\"\":\"checked\")+\">\",'<input type=\"radio\" name=\"target\" value=\"_blank\" class=\"layui-input\" title=\"新窗口\" '+(\"_blank\"===t.target?\"checked\":\"\")+\">\",\"</div>\",\"</li>\",'<li class=\"layui-form-item\" style=\"text-align: center;\">','<button type=\"button\" lay-submit lay-filter=\"layedit-link-yes\" class=\"layui-btn\"> 确定 </button>','<button style=\"margin-left: 20px;\" type=\"button\" class=\"layui-btn layui-btn-primary\"> 取消 </button>',\"</li>\",\"</ul>\"].join(\"\"),success:function(t,n){var o=\"submit(layedit-link-yes)\";a.render(\"radio\"),t.find(\".layui-btn-primary\").on(\"click\",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=[\"[微笑]\",\"[嘻嘻]\",\"[哈哈]\",\"[可爱]\",\"[可怜]\",\"[挖鼻]\",\"[吃惊]\",\"[害羞]\",\"[挤眼]\",\"[闭嘴]\",\"[鄙视]\",\"[爱你]\",\"[泪]\",\"[偷笑]\",\"[亲亲]\",\"[生病]\",\"[太开心]\",\"[白眼]\",\"[右哼哼]\",\"[左哼哼]\",\"[嘘]\",\"[衰]\",\"[委屈]\",\"[吐]\",\"[哈欠]\",\"[抱抱]\",\"[怒]\",\"[疑问]\",\"[馋嘴]\",\"[拜拜]\",\"[思考]\",\"[汗]\",\"[困]\",\"[睡]\",\"[钱]\",\"[失望]\",\"[酷]\",\"[色]\",\"[哼]\",\"[鼓掌]\",\"[晕]\",\"[悲伤]\",\"[抓狂]\",\"[黑线]\",\"[阴险]\",\"[怒骂]\",\"[互粉]\",\"[心]\",\"[伤心]\",\"[猪头]\",\"[熊猫]\",\"[兔子]\",\"[ok]\",\"[耶]\",\"[good]\",\"[NO]\",\"[赞]\",\"[来]\",\"[弱]\",\"[草泥马]\",\"[神马]\",\"[囧]\",\"[浮云]\",\"[给力]\",\"[围观]\",\"[威武]\",\"[奥特曼]\",\"[礼物]\",\"[钟]\",\"[话筒]\",\"[蜡烛]\",\"[蛋糕]\"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+\"images/face/\"+t+\".gif\"}),e}();return x.hide=x.hide||function(t){\"face\"!==e(t.target).attr(\"layedit-event\")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('<li title=\"'+e+'\"><img src=\"'+i+'\" alt=\"'+e+'\"></li>')}),'<ul class=\"layui-clear\">'+t.join(\"\")+\"</ul>\"}(),this,{tips:1,time:0,skin:\"layui-box layui-util-face\",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(\".layui-clear>li\").on(\"click\",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off(\"click\",x.hide).on(\"click\",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:\"LAY_layedit_code\",area:\"550px\",shade:.05,shadeClose:!0,moveType:1,title:\"插入代码\",skin:\"layui-layer-msg\",content:['<ul class=\"layui-form layui-form-pane\" style=\"margin: 15px;\">','<li class=\"layui-form-item\">','<label class=\"layui-form-label\">请选择语言</label>','<div class=\"layui-input-block\">','<select name=\"lang\">','<option value=\"JavaScript\">JavaScript</option>','<option value=\"HTML\">HTML</option>','<option value=\"CSS\">CSS</option>','<option value=\"Java\">Java</option>','<option value=\"PHP\">PHP</option>','<option value=\"C#\">C#</option>','<option value=\"Python\">Python</option>','<option value=\"Ruby\">Ruby</option>','<option value=\"Go\">Go</option>',\"</select>\",\"</div>\",\"</li>\",'<li class=\"layui-form-item layui-form-text\">','<label class=\"layui-form-label\">代码</label>','<div class=\"layui-input-block\">','<textarea name=\"code\" lay-verify=\"required\" autofocus=\"true\" class=\"layui-textarea\" style=\"height: 200px;\"></textarea>',\"</div>\",\"</li>\",'<li class=\"layui-form-item\" style=\"text-align: center;\">','<button type=\"button\" lay-submit lay-filter=\"layedit-code-yes\" class=\"layui-btn\"> 确定 </button>','<button style=\"margin-left: 20px;\" type=\"button\" class=\"layui-btn layui-btn-primary\"> 取消 </button>',\"</li>\",\"</ul>\"].join(\"\"),success:function(l,n){var o=\"submit(layedit-code-yes)\";a.render(\"select\"),l.find(\".layui-btn-primary\").on(\"click\",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'<i class=\"layui-icon layedit-tool-html\" title=\"HTML源代码\" lay-command=\"html\" layedit-event=\"html\"\">&#xe64b;</i><span class=\"layedit-tool-mid\"></span>',strong:'<i class=\"layui-icon layedit-tool-b\" title=\"加粗\" lay-command=\"Bold\" layedit-event=\"b\"\">&#xe62b;</i>',italic:'<i class=\"layui-icon layedit-tool-i\" title=\"斜体\" lay-command=\"italic\" layedit-event=\"i\"\">&#xe644;</i>',underline:'<i class=\"layui-icon layedit-tool-u\" title=\"下划线\" lay-command=\"underline\" layedit-event=\"u\"\">&#xe646;</i>',del:'<i class=\"layui-icon layedit-tool-d\" title=\"删除线\" lay-command=\"strikeThrough\" layedit-event=\"d\"\">&#xe64f;</i>',\"|\":'<span class=\"layedit-tool-mid\"></span>',left:'<i class=\"layui-icon layedit-tool-left\" title=\"左对齐\" lay-command=\"justifyLeft\" layedit-event=\"left\"\">&#xe649;</i>',center:'<i class=\"layui-icon layedit-tool-center\" title=\"居中对齐\" lay-command=\"justifyCenter\" layedit-event=\"center\"\">&#xe647;</i>',right:'<i class=\"layui-icon layedit-tool-right\" title=\"右对齐\" lay-command=\"justifyRight\" layedit-event=\"right\"\">&#xe648;</i>',link:'<i class=\"layui-icon layedit-tool-link\" title=\"插入链接\" layedit-event=\"link\"\">&#xe64c;</i>',unlink:'<i class=\"layui-icon layedit-tool-unlink layui-disabled\" title=\"清除链接\" lay-command=\"unlink\" layedit-event=\"unlink\"\">&#xe64d;</i>',face:'<i class=\"layui-icon layedit-tool-face\" title=\"表情\" layedit-event=\"face\"\">&#xe650;</i>',image:'<i class=\"layui-icon layedit-tool-image\" title=\"图片\" layedit-event=\"image\">&#xe64a;<input type=\"file\" name=\"file\"></i>',code:'<i class=\"layui-icon layedit-tool-code\" title=\"插入代码\" layedit-event=\"code\">&#xe64e;</i>',help:'<i class=\"layui-icon layedit-tool-help\" title=\"帮助\" layedit-event=\"help\">&#xe607;</i>'},w=new c;t(n,w)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/layer.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;!function(e,t){\"use strict\";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if(\"interactive\"===t[n].readyState){e=t[n].src;break}return e||t[i].src}();return e.substring(0,e.lastIndexOf(\"/\")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:[\"&#x786E;&#x5B9A;\",\"&#x53D6;&#x6D88;\"],type:[\"dialog\",\"page\",\"iframe\",\"loading\",\"tips\"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?\"getPropertyValue\":\"getAttribute\"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName(\"head\")[0],s=document.createElement(\"link\");\"string\"==typeof i&&(n=i);var l=(n||t).replace(/\\.|\\//g,\"\"),f=\"layuicss-\"+l,c=0;s.rel=\"stylesheet\",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),\"function\"==typeof i&&!function u(){return++c>80?e.console&&console.error(\"layer.css: Invalid\"):void(1989===parseInt(o.getStyle(document.getElementById(f),\"width\"))?i():setTimeout(u,100))}()}}},r={v:\"3.1.1\",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||\"ActiveXObject\"in e)&&((t.match(/msie\\s(\\d+)/)||[])[1]||\"11\")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,\"string\"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss(\"modules/layer/\"+e.extend):o.link(\"theme/\"+e.extend),this):this},ready:function(e){var t=\"layer\",i=\"\",n=(a?\"modules/layer/\":\"theme/\")+\"default/layer.css?v=\"+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a=\"function\"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s=\"function\"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s=\"function\"==typeof n,f=o.config.skin,c=(f?f+\" \"+f+\"-msg\":\"\")||\"layui-layer-msg\",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+\" layui-layer-hui\",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+\" \"+(n.skin||\"layui-layer-hui\")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=[\"layui-layer\",\".layui-layer-title\",\".layui-layer-main\",\".layui-layer-dialog\",\"layui-layer-iframe\",\"layui-layer-content\",\"layui-layer-btn\",\"layui-layer-close\"];l.anim=[\"layer-anim-00\",\"layer-anim-01\",\"layer-anim-02\",\"layer-anim-03\",\"layer-anim-04\",\"layer-anim-05\",\"layer-anim-06\"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:\"&#x4FE1;&#x606F;\",offset:\"auto\",area:\"auto\",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f=\"object\"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'<div class=\"layui-layer-title\" style=\"'+(f?r.title[1]:\"\")+'\">'+(f?r.title[0]:r.title)+\"</div>\":\"\";return r.zIndex=s,t([r.shade?'<div class=\"layui-layer-shade\" id=\"layui-layer-shade'+a+'\" times=\"'+a+'\" style=\"'+(\"z-index:\"+(s-1)+\"; \")+'\"></div>':\"\",'<div class=\"'+l[0]+(\" layui-layer-\"+o.type[r.type])+(0!=r.type&&2!=r.type||r.shade?\"\":\" layui-layer-border\")+\" \"+(r.skin||\"\")+'\" id=\"'+l[0]+a+'\" type=\"'+o.type[r.type]+'\" times=\"'+a+'\" showtime=\"'+r.time+'\" conType=\"'+(e?\"object\":\"string\")+'\" style=\"z-index: '+s+\"; width:\"+r.area[0]+\";height:\"+r.area[1]+(r.fixed?\"\":\";position:absolute;\")+'\">'+(e&&2!=r.type?\"\":u)+'<div id=\"'+(r.id||\"\")+'\" class=\"layui-layer-content'+(0==r.type&&r.icon!==-1?\" layui-layer-padding\":\"\")+(3==r.type?\" layui-layer-loading\"+r.icon:\"\")+'\">'+(0==r.type&&r.icon!==-1?'<i class=\"layui-layer-ico layui-layer-ico'+r.icon+'\"></i>':\"\")+(1==r.type&&e?\"\":r.content||\"\")+'</div><span class=\"layui-layer-setwin\">'+function(){var e=c?'<a class=\"layui-layer-min\" href=\"javascript:;\"><cite></cite></a><a class=\"layui-layer-ico layui-layer-max\" href=\"javascript:;\"></a>':\"\";return r.closeBtn&&(e+='<a class=\"layui-layer-ico '+l[7]+\" \"+l[7]+(r.title?r.closeBtn:4==r.type?\"1\":\"2\")+'\" href=\"javascript:;\"></a>'),e}()+\"</span>\"+(r.btn?function(){var e=\"\";\"string\"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t<i;t++)e+='<a class=\"'+l[6]+t+'\">'+r.btn[t]+\"</a>\";return'<div class=\"'+l[6]+\" layui-layer-btn-\"+(r.btnAlign||\"\")+'\">'+e+\"</div>\"}():\"\")+(r.resize?'<span class=\"layui-layer-resize\"></span>':\"\")+\"</div>\"],u,i('<div class=\"layui-layer-move\"></div>')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f=\"object\"==typeof s,c=i(\"body\");if(!t.id||!i(\"#\"+t.id)[0]){switch(\"string\"==typeof t.area&&(t.area=\"auto\"===t.area?[\"\",\"\"]:[t.area,\"\"]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn=\"btn\"in t?t.btn:o.btn[0],r.closeAll(\"dialog\");break;case 2:var s=t.content=f?t.content:[t.content||\"\",\"auto\"];t.content='<iframe scrolling=\"'+(t.content[1]||\"auto\")+'\" allowtransparency=\"true\" id=\"'+l[4]+a+'\" name=\"'+l[4]+a+'\" onload=\"this.className=\\'\\';\" class=\"layui-layer-load\" frameborder=\"0\" src=\"'+t.content[0]+'\"></iframe>';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll(\"loading\");break;case 4:f||(t.content=[t.content,\"body\"]),t.follow=t.content[1],t.content=t.content[0]+'<i class=\"layui-layer-TipsG\"></i>',delete t.title,t.tips=\"object\"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll(\"tips\")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i(\"body\").append(n[1])}():function(){s.parents(\".\"+l[0])[0]||(s.data(\"display\",s.css(\"display\")).show().addClass(\"layui-layer-wrap\").wrap(n[1]),i(\"#\"+l[0]+a).find(\".\"+l[5]).before(r))}()}():c.append(n[1]),i(\".layui-layer-move\")[0]||c.append(o.moveElem=u),e.layero=i(\"#\"+l[0]+a),t.scrollbar||l.html.css(\"overflow\",\"hidden\").attr(\"layer-full\",a)}).auto(a),i(\"#layui-layer-shade\"+e.index).css({\"background-color\":t.shade[1]||\"#000\",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find(\"iframe\").attr(\"src\",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on(\"resize\",function(){e.offset(),(/^\\d+%$/.test(t.area[0])||/^\\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u=\"layer-anim \"+l.anim[t.anim];e.layero.addClass(u).one(\"webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend\",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data(\"isOutAnim\",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i(\"#\"+l[0]+e);\"\"===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find(\".\"+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css(\"padding-top\"))))};switch(a.type){case 2:u(\"iframe\");break;default:\"\"===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u(\".\"+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u(\".\"+l[5])):u(\".\"+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o=\"object\"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):\"auto\"!==t.offset&&(\"t\"===t.offset?e.offsetTop=0:\"r\"===t.offset?e.offsetLeft=n.width()-a[0]:\"b\"===t.offset?e.offsetTop=n.height()-a[1]:\"l\"===t.offset?e.offsetLeft=0:\"lt\"===t.offset?(e.offsetTop=0,e.offsetLeft=0):\"lb\"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):\"rt\"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):\"rb\"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr(\"minLeft\")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css(\"left\")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i(\"body\"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(\".layui-layer-TipsG\"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:\"auto\"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass(\"layui-layer-TipsB\").addClass(\"layui-layer-TipsT\").css(\"border-right-color\",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass(\"layui-layer-TipsL\").addClass(\"layui-layer-TipsR\").css(\"border-bottom-color\",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass(\"layui-layer-TipsT\").addClass(\"layui-layer-TipsB\").css(\"border-right-color\",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass(\"layui-layer-TipsR\").addClass(\"layui-layer-TipsL\").css(\"border-bottom-color\",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find(\".\"+l[5]).css({\"background-color\":t.tips[1],\"padding-right\":t.closeBtn?\"30px\":\"\"}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(\".layui-layer-resize\"),c={};return t.move&&l.css(\"cursor\",\"move\"),l.on(\"mousedown\",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css(\"left\")),e.clientY-parseFloat(s.css(\"top\"))],o.moveElem.css(\"cursor\",\"move\").show())}),f.on(\"mousedown\",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css(\"cursor\",\"se-resize\").show()}),a.on(\"mousemove\",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l=\"fixed\"===s.css(\"position\");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;a<c.stX&&(a=c.stX),a>f&&(a=f),o<c.stY&&(o=c.stY),o>u&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on(\"mouseup\",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find(\"iframe\").on(\"load\",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find(\".\"+l[6]).children(\"a\").on(\"click\",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a[\"btn\"+(e+1)]&&a[\"btn\"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find(\".\"+l[7]).on(\"click\",e),a.shadeClose&&i(\"#layui-layer-shade\"+t.index).on(\"click\",function(){r.close(t.index)}),n.find(\".layui-layer-min\").on(\"click\",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(\".layui-layer-max\").on(\"click\",function(){i(this).hasClass(\"layui-layer-maxmin\")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i(\"select\"),function(e,t){var n=i(this);n.parents(\".\"+l[0])[0]||1==n.attr(\"layer\")&&i(\".\"+l[0]).length<1&&n.removeAttr(\"layer\").show(),n=null})},s.pt.IE6=function(e){i(\"select\").each(function(e,t){var n=i(this);n.parents(\".\"+l[0])[0]||\"none\"===n.css(\"display\")||n.attr({layer:\"1\"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css(\"z-index\",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on(\"mousedown\",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css(\"margin-left\"))];e.find(\".layui-layer-max\").addClass(\"layui-layer-maxmin\"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr(\"layer-full\")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty(\"overflow\"):l.html[0].style.removeAttribute(\"overflow\"),l.html.removeAttr(\"layer-full\"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i(\".\"+l[4]).attr(\"times\"),i(\"#\"+l[0]+t).find(\"iframe\").contents().find(e)},r.getFrameIndex=function(e){return i(\"#\"+e).parents(\".\"+l[4]).attr(\"times\")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame(\"html\",e).outerHeight(),n=i(\"#\"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find(\".\"+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find(\"iframe\").css({height:t})}},r.iframeSrc=function(e,t){i(\"#\"+l[0]+e).find(\"iframe\").attr(\"src\",t)},r.style=function(e,t,n){var a=i(\"#\"+l[0]+e),r=a.find(\".layui-layer-content\"),s=a.attr(\"type\"),f=a.find(l[1]).outerHeight()||0,c=a.find(\".\"+l[6]).outerHeight()||0;a.attr(\"minLeft\");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find(\".\"+l[6]).outerHeight(),s===o.type[2]?a.find(\"iframe\").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css(\"padding-top\"))-parseFloat(r.css(\"padding-bottom\"))}))},r.min=function(e,t){var a=i(\"#\"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr(\"minLeft\")||181*o.minIndex+\"px\",c=a.css(\"position\");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr(\"position\",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:\"fixed\",overflow:\"hidden\"},!0),a.find(\".layui-layer-min\").hide(),\"page\"===a.attr(\"type\")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr(\"minLeft\")||o.minIndex++,a.attr(\"minLeft\",f)},r.restore=function(e){var t=i(\"#\"+l[0]+e),n=t.attr(\"area\").split(\",\");t.attr(\"type\");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr(\"position\"),overflow:\"visible\"},!0),t.find(\".layui-layer-max\").removeClass(\"layui-layer-maxmin\"),t.find(\".layui-layer-min\").show(),\"page\"===t.attr(\"type\")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i(\"#\"+l[0]+e);o.record(a),l.html.attr(\"layer-full\")||l.html.css(\"overflow\",\"hidden\").attr(\"layer-full\",e),clearTimeout(t),t=setTimeout(function(){var t=\"fixed\"===a.css(\"position\");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(\".layui-layer-min\").hide()},100)},r.title=function(e,t){var n=i(\"#\"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i(\"#\"+l[0]+e),n=t.attr(\"type\"),a=\"layer-anim-close\";if(t[0]){var s=\"layui-layer-wrap\",f=function(){if(n===o.type[1]&&\"object\"===t.attr(\"conType\")){t.children(\":not(.\"+l[5]+\")\").remove();for(var a=t.find(\".\"+s),r=0;r<2;r++)a.unwrap();a.css(\"display\",a.data(\"display\")).removeClass(s)}else{if(n===o.type[2])try{var f=i(\"#\"+l[4]+e)[0];f.contentWindow.document.write(\"\"),f.contentWindow.close(),t.find(\".\"+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML=\"\",t.remove()}\"function\"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data(\"isOutAnim\")&&t.addClass(\"layer-anim \"+a),i(\"#layui-layer-moves, #layui-layer-shade\"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr(\"minLeft\")&&(o.minIndex--,o.minLeft.push(t.attr(\"minLeft\"))),r.ie&&r.ie<10||!t.data(\"isOutAnim\")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i(\".\"+l[0]),function(){var t=i(this),n=e?t.attr(\"type\")===e:1;n&&r.close(t.attr(\"times\")),n=null})};var f=r.cache||{},c=function(e){return f.skin?\" \"+f.skin+\" \"+f.skin+\"-\"+e:\"\"};r.prompt=function(e,t){var a=\"\";if(e=e||{},\"function\"==typeof e&&(t=e),e.area){var o=e.area;a='style=\"width: '+o[0]+\"; height: \"+o[1]+';\"',delete e.area}var s,l=2==e.formType?'<textarea class=\"layui-layer-input\"'+a+\"></textarea>\":function(){return'<input type=\"'+(1==e.formType?\"password\":\"text\")+'\" class=\"layui-layer-input\">'}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:[\"&#x786E;&#x5B9A;\",\"&#x53D6;&#x6D88;\"],content:l,skin:\"layui-layer-prompt\"+c(\"prompt\"),maxWidth:n.width(),success:function(t){s=t.find(\".layui-layer-input\"),s.val(e.value||\"\").focus(),\"function\"==typeof f&&f(t)},resize:!1,yes:function(i){var n=s.val();\"\"===n?s.focus():n.length>(e.maxlength||500)?r.tips(\"&#x6700;&#x591A;&#x8F93;&#x5165;\"+(e.maxlength||500)+\"&#x4E2A;&#x5B57;&#x6570;\",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n=\"layui-this\",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:\"layui-layer-tab\"+c(\"tab\"),resize:!1,title:function(){var e=t.length,i=1,a=\"\";if(e>0)for(a='<span class=\"'+n+'\">'+t[0].title+\"</span>\";i<e;i++)a+=\"<span>\"+t[i].title+\"</span>\";return a}(),content:'<ul class=\"layui-layer-tabmain\">'+function(){var e=t.length,i=1,a=\"\";if(e>0)for(a='<li class=\"layui-layer-tabli '+n+'\">'+(t[0].content||\"no content\")+\"</li>\";i<e;i++)a+='<li class=\"layui-layer-tabli\">'+(t[i].content||\"no  content\")+\"</li>\";return a}()+\"</ul>\",success:function(t){var o=t.find(\".layui-layer-title\").children(),r=t.find(\".layui-layer-tabmain\").children();o.on(\"mousedown\",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),\"function\"==typeof e.change&&e.change(o)}),\"function\"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||\"img\";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg(\"&#x6CA1;&#x6709;&#x56FE;&#x7247;\")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr(\"layer-index\",e),u.push({alt:t.attr(\"alt\"),pid:t.attr(\"layer-pid\"),src:t.attr(\"layer-src\")||t.attr(\"src\"),thumb:t.attr(\"src\")})})};if(h(),0===u.length)return;if(n||p.on(\"click\",t.img,function(){var e=i(this),n=e.attr(\"layer-index\");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(\".layui-layer-imgprev\").on(\"click\",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(\".layui-layer-imgnext\").on(\"click\",function(e){e.preventDefault(),s.imgnext()}),i(document).on(\"keyup\",s.keyup)},s.loadi=r.load(1,{shade:!(\"shade\"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:\"layui-layer-photos\",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]<r[1]&&(a[0]=a[0]/r[1],a[1]=a[1]/r[1])}return[a[0]+\"px\",a[1]+\"px\"]}(),title:!1,shade:.9,shadeClose:!0,closeBtn:!1,move:\".layui-layer-phimg img\",moveType:1,scrollbar:!1,moveOut:!0,isOutAnim:!1,skin:\"layui-layer-photos\"+c(\"photos\"),content:'<div class=\"layui-layer-phimg\"><img src=\"'+u[d].src+'\" alt=\"'+(u[d].alt||\"\")+'\" layer-pid=\"'+u[d].pid+'\"><div class=\"layui-layer-imgsee\">'+(u.length>1?'<span class=\"layui-layer-imguide\"><a href=\"javascript:;\" class=\"layui-layer-iconext layui-layer-imgprev\"></a><a href=\"javascript:;\" class=\"layui-layer-iconext layui-layer-imgnext\"></a></span>':\"\")+'<div class=\"layui-layer-imgbar\" style=\"display:'+(a?\"block\":\"\")+'\"><span class=\"layui-layer-imgtit\"><a href=\"javascript:;\">'+(u[d].alt||\"\")+\"</a><em>\"+s.imgIndex+\"/\"+u.length+\"</em></span></div></div></div>\",success:function(e,i){s.bigimg=e.find(\".layui-layer-phimg\"),s.imgsee=e.find(\".layui-layer-imguide,.layui-layer-imgbar\"),s.event(e),t.tab&&t.tab(u[d],e),\"function\"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off(\"keyup\",s.keyup)}},t))},function(){r.close(s.loadi),r.msg(\"&#x5F53;&#x524D;&#x56FE;&#x7247;&#x5730;&#x5740;&#x5F02;&#x5E38;<br>&#x662F;&#x5426;&#x7EE7;&#x7EED;&#x67E5;&#x770B;&#x4E0B;&#x4E00;&#x5F20;&#xFF1F;\",{time:3e4,btn:[\"&#x4E0B;&#x4E00;&#x5F20;\",\"&#x4E0D;&#x770B;&#x4E86;\"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i(\"html\"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define(\"jquery\",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t(\"layer\",r)})):\"function\"==typeof define&&define.amd?define([\"jquery\"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window);"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/laypage.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(function(e){\"use strict\";var a=document,t=\"getElementById\",n=\"getElementsByTagName\",i=\"laypage\",r=\"layui-disabled\",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if(\"object\"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups=\"groups\"in a?0|a.groups:5;a.layout=\"object\"==typeof a.layout?a.layout:[\"prev\",\"page\",\"next\"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits=\"object\"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev=\"prev\"in a?a.prev:\"&#x4E0A;&#x4E00;&#x9875;\",a.next=\"next\"in a?a.next:\"&#x4E0B;&#x4E00;&#x9875;\";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?'<a href=\"javascript:;\" class=\"layui-laypage-prev'+(1==a.curr?\" \"+r:\"\")+'\" data-page=\"'+(a.curr-1)+'\">'+a.prev+\"</a>\":\"\"}(),page:function(){var e=[];if(a.count<1)return\"\";n>1&&a.first!==!1&&0!==t&&e.push('<a href=\"javascript:;\" class=\"layui-laypage-first\" data-page=\"1\"  title=\"&#x9996;&#x9875;\">'+(a.first||1)+\"</a>\");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r<t-1&&(r=u-t+1),a.first!==!1&&r>2&&e.push('<span class=\"layui-laypage-spr\">&#x2026;</span>');r<=u;r++)r===a.curr?e.push('<span class=\"layui-laypage-curr\"><em class=\"layui-laypage-em\" '+(/^#/.test(a.theme)?'style=\"background-color:'+a.theme+';\"':\"\")+\"></em><em>\"+r+\"</em></span>\"):e.push('<a href=\"javascript:;\" data-page=\"'+r+'\">'+r+\"</a>\");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1<a.pages&&e.push('<span class=\"layui-laypage-spr\">&#x2026;</span>'),0!==t&&e.push('<a href=\"javascript:;\" class=\"layui-laypage-last\" title=\"&#x5C3E;&#x9875;\"  data-page=\"'+a.pages+'\">'+(a.last||a.pages)+\"</a>\")),e.join(\"\")}(),next:function(){return a.next?'<a href=\"javascript:;\" class=\"layui-laypage-next'+(a.curr==a.pages?\" \"+r:\"\")+'\" data-page=\"'+(a.curr+1)+'\">'+a.next+\"</a>\":\"\"}(),count:'<span class=\"layui-laypage-count\">共 '+a.count+\" 条</span>\",limit:function(){var e=['<span class=\"layui-laypage-limits\"><select lay-ignore>'];return layui.each(a.limits,function(t,n){e.push('<option value=\"'+n+'\"'+(n===a.limit?\"selected\":\"\")+\">\"+n+\" 条/页</option>\")}),e.join(\"\")+\"</select></span>\"}(),refresh:['<a href=\"javascript:;\" data-page=\"'+a.curr+'\" class=\"layui-laypage-refresh\">','<i class=\"layui-icon layui-icon-refresh\"></i>',\"</a>\"].join(\"\"),skip:function(){return['<span class=\"layui-laypage-skip\">&#x5230;&#x7B2C;','<input type=\"text\" min=\"1\" value=\"'+a.curr+'\" class=\"layui-input\">','&#x9875;<button type=\"button\" class=\"layui-laypage-btn\">&#x786e;&#x5b9a;</button>',\"</span>\"].join(\"\")}()};return['<div class=\"layui-box layui-laypage layui-laypage-'+(a.theme?/^#/.test(a.theme)?\"molv\":a.theme:\"default\")+'\" id=\"layui-laypage-'+a.index+'\">',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join(\"\")}(),\"</div>\"].join(\"\")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n](\"button\")[0],l=e[n](\"input\")[0],p=e[n](\"select\")[0],c=function(){var e=0|l.value.replace(/\\s|\\D/g,\"\");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;o<y;o++)\"a\"===r[o].nodeName.toLowerCase()&&s.on(r[o],\"click\",function(){var e=0|this.getAttribute(\"data-page\");e<1||e>i.pages||(i.curr=e,t.render())});p&&s.on(p,\"change\",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,\"click\",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n](\"input\")[0];t&&s.on(t,\"keyup\",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\\D/.test(n)&&(this.value=n.replace(/\\D/,\"\")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t](\"layui-laypage-\"+i.index);n.jump(s),i.hash&&!e&&(location.hash=\"!\"+i.hash+\"=\"+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent(\"on\"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/laytpl.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(function(e){\"use strict\";var r={open:\"{{\",close:\"}}\"},c={exp:function(e){return new RegExp(e,\"g\")},query:function(e,c,t){var o=[\"#([\\\\s\\\\S])+?\",\"([^{#}])*?\"][e||0];return n((c||\"\")+r.open+o+r.close+(t||\"\"))},escape:function(e){return String(e||\"\").replace(/&(?!#?[a-zA-Z0-9]+;)/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/'/g,\"&#39;\").replace(/\"/g,\"&quot;\")},error:function(e,r){var c=\"Laytpl Error：\";return\"object\"==typeof console&&console.error(c+e+\"\\n\"+(r||\"\")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n(\"^\"+r.open+\"#\",\"\"),l=n(r.close+\"$\",\"\");e=e.replace(/\\s+|\\r|\\t|\\n/g,\" \").replace(n(r.open+\"#\"),r.open+\"# \").replace(n(r.close+\"}\"),\"} \"+r.close).replace(/\\\\/g,\"\\\\\\\\\").replace(n(r.open+\"!(.+?)!\"+r.close),function(e){return e=e.replace(n(\"^\"+r.open+\"!\"),\"\").replace(n(\"!\"+r.close),\"\").replace(n(r.open+\"|\"+r.close),function(e){return e.replace(/(.)/g,\"\\\\$1\")})}).replace(/(?=\"|')/g,\"\\\\\").replace(c.query(),function(e){return e=e.replace(a,\"\").replace(l,\"\"),'\";'+e.replace(/\\\\/g,\"\")+';view+=\"'}).replace(c.query(1),function(e){var c='\"+(';return e.replace(/\\s/g,\"\")===r.open+r.close?\"\":(e=e.replace(n(r.open+\"|\"+r.close),\"\"),/^=/.test(e)&&(e=e.replace(/^=/,\"\"),c='\"+_escape_('),c+e.replace(/\\\\/g,\"\")+')+\"')}),e='\"use strict\";var view = \"'+e+'\";return view;';try{return o.cache=e=new Function(\"d, _escape_\",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error(\"no data\")};var o=function(e){return\"string\"!=typeof e?c.error(\"Template not found\"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v=\"1.2.0\",e(\"laytpl\",o)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/mobile.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(function(i){i(\"layui.mobile\",layui.v)});layui.define(function(e){\"use strict\";var r={open:\"{{\",close:\"}}\"},c={exp:function(e){return new RegExp(e,\"g\")},query:function(e,c,t){var o=[\"#([\\\\s\\\\S])+?\",\"([^{#}])*?\"][e||0];return n((c||\"\")+r.open+o+r.close+(t||\"\"))},escape:function(e){return String(e||\"\").replace(/&(?!#?[a-zA-Z0-9]+;)/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/'/g,\"&#39;\").replace(/\"/g,\"&quot;\")},error:function(e,r){var c=\"Laytpl Error：\";return\"object\"==typeof console&&console.error(c+e+\"\\n\"+(r||\"\")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n(\"^\"+r.open+\"#\",\"\"),l=n(r.close+\"$\",\"\");e=e.replace(/\\s+|\\r|\\t|\\n/g,\" \").replace(n(r.open+\"#\"),r.open+\"# \").replace(n(r.close+\"}\"),\"} \"+r.close).replace(/\\\\/g,\"\\\\\\\\\").replace(n(r.open+\"!(.+?)!\"+r.close),function(e){return e=e.replace(n(\"^\"+r.open+\"!\"),\"\").replace(n(\"!\"+r.close),\"\").replace(n(r.open+\"|\"+r.close),function(e){return e.replace(/(.)/g,\"\\\\$1\")})}).replace(/(?=\"|')/g,\"\\\\\").replace(c.query(),function(e){return e=e.replace(a,\"\").replace(l,\"\"),'\";'+e.replace(/\\\\/g,\"\")+';view+=\"'}).replace(c.query(1),function(e){var c='\"+(';return e.replace(/\\s/g,\"\")===r.open+r.close?\"\":(e=e.replace(n(r.open+\"|\"+r.close),\"\"),/^=/.test(e)&&(e=e.replace(/^=/,\"\"),c='\"+_escape_('),c+e.replace(/\\\\/g,\"\")+')+\"')}),e='\"use strict\";var view = \"'+e+'\";return view;';try{return o.cache=e=new Function(\"d, _escape_\",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error(\"no data\")};var o=function(e){return\"string\"!=typeof e?c.error(\"Template not found\"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v=\"1.2.0\",e(\"laytpl\",o)});layui.define(function(e){\"use strict\";var t=(window,document),i=\"querySelectorAll\",n=\"getElementsByClassName\",a=function(e){return t[i](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:\"scale\"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var i in e)t[i]=e[i];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener(\"click\",function(e){t.call(this,e)},!1)};var o=0,r=[\"layui-m-layer\"],d=function(e){var t=this;t.config=l.extend(e),t.view()};d.prototype.view=function(){var e=this,i=e.config,s=t.createElement(\"div\");e.id=s.id=r[0]+o,s.setAttribute(\"class\",r[0]+\" \"+r[0]+(i.type||0)),s.setAttribute(\"index\",o);var l=function(){var e=\"object\"==typeof i.title;return i.title?'<h3 style=\"'+(e?i.title[1]:\"\")+'\">'+(e?i.title[0]:i.title)+\"</h3>\":\"\"}(),d=function(){\"string\"==typeof i.btn&&(i.btn=[i.btn]);var e,t=(i.btn||[]).length;return 0!==t&&i.btn?(e='<span yes type=\"1\">'+i.btn[0]+\"</span>\",2===t&&(e='<span no type=\"0\">'+i.btn[1]+\"</span>\"+e),'<div class=\"layui-m-layerbtn\">'+e+\"</div>\"):\"\"}();if(i.fixed||(i.top=i.hasOwnProperty(\"top\")?i.top:100,i.style=i.style||\"\",i.style+=\" top:\"+(t.body.scrollTop+i.top)+\"px\"),2===i.type&&(i.content='<i></i><i class=\"layui-m-layerload\"></i><i></i><p>'+(i.content||\"\")+\"</p>\"),i.skin&&(i.anim=\"up\"),\"msg\"===i.skin&&(i.shade=!1),s.innerHTML=(i.shade?\"<div \"+(\"string\"==typeof i.shade?'style=\"'+i.shade+'\"':\"\")+' class=\"layui-m-layershade\"></div>':\"\")+'<div class=\"layui-m-layermain\" '+(i.fixed?\"\":'style=\"position:static;\"')+'><div class=\"layui-m-layersection\"><div class=\"layui-m-layerchild '+(i.skin?\"layui-m-layer-\"+i.skin+\" \":\"\")+(i.className?i.className:\"\")+\" \"+(i.anim?\"layui-m-anim-\"+i.anim:\"\")+'\" '+(i.style?'style=\"'+i.style+'\"':\"\")+\">\"+l+'<div class=\"layui-m-layercont\">'+i.content+\"</div>\"+d+\"</div></div></div>\",!i.type||2===i.type){var y=t[n](r[0]+i.type),u=y.length;u>=1&&c.close(y[0].getAttribute(\"index\"))}document.body.appendChild(s);var m=e.elem=a(\"#\"+e.id)[0];i.success&&i.success(m),e.index=o++,e.action(i,m)},d.prototype.action=function(e,t){var i=this;e.time&&(l.timer[i.index]=setTimeout(function(){c.close(i.index)},1e3*e.time));var a=function(){var t=this.getAttribute(\"type\");0==t?(e.no&&e.no(),c.close(i.index)):e.yes?e.yes(i.index):c.close(i.index)};if(e.btn)for(var s=t[n](\"layui-m-layerbtn\")[0].children,o=s.length,r=0;r<o;r++)l.touch(s[r],a);if(e.shade&&e.shadeClose){var d=t[n](\"layui-m-layershade\")[0];l.touch(d,function(){c.close(i.index,e.end)})}e.end&&(l.end[i.index]=e.end)};var c={v:\"2.0 m\",index:o,open:function(e){var t=new d(e||{});return t.index},close:function(e){var i=a(\"#\"+r[0]+e)[0];i&&(i.innerHTML=\"\",t.body.removeChild(i),clearTimeout(l.timer[e]),delete l.timer[e],\"function\"==typeof l.end[e]&&l.end[e](),delete l.end[e])},closeAll:function(){for(var e=t[n](r[0]),i=0,a=e.length;i<a;i++)c.close(0|e[0].getAttribute(\"index\"))}};e(\"layer-mobile\",c)});layui.define(function(t){var e=function(){function t(t){return null==t?String(t):J[W.call(t)]||\"object\"}function e(e){return\"function\"==t(e)}function n(t){return null!=t&&t==t.window}function r(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function i(e){return\"object\"==t(e)}function o(t){return i(t)&&!n(t)&&Object.getPrototypeOf(t)==Object.prototype}function a(t){var e=!!t&&\"length\"in t&&t.length,r=T.type(t);return\"function\"!=r&&!n(t)&&(\"array\"==r||0===e||\"number\"==typeof e&&e>0&&e-1 in t)}function s(t){return A.call(t,function(t){return null!=t})}function u(t){return t.length>0?T.fn.concat.apply([],t):t}function c(t){return t.replace(/::/g,\"/\").replace(/([A-Z]+)([A-Z][a-z])/g,\"$1_$2\").replace(/([a-z\\d])([A-Z])/g,\"$1_$2\").replace(/_/g,\"-\").toLowerCase()}function l(t){return t in F?F[t]:F[t]=new RegExp(\"(^|\\\\s)\"+t+\"(\\\\s|$)\")}function f(t,e){return\"number\"!=typeof e||k[c(t)]?e:e+\"px\"}function h(t){var e,n;return $[t]||(e=L.createElement(t),L.body.appendChild(e),n=getComputedStyle(e,\"\").getPropertyValue(\"display\"),e.parentNode.removeChild(e),\"none\"==n&&(n=\"block\"),$[t]=n),$[t]}function p(t){return\"children\"in t?D.call(t.children):T.map(t.childNodes,function(t){if(1==t.nodeType)return t})}function d(t,e){var n,r=t?t.length:0;for(n=0;n<r;n++)this[n]=t[n];this.length=r,this.selector=e||\"\"}function m(t,e,n){for(j in e)n&&(o(e[j])||Q(e[j]))?(o(e[j])&&!o(t[j])&&(t[j]={}),Q(e[j])&&!Q(t[j])&&(t[j]=[]),m(t[j],e[j],n)):e[j]!==E&&(t[j]=e[j])}function v(t,e){return null==e?T(t):T(t).filter(e)}function g(t,n,r,i){return e(n)?n.call(t,r,i):n}function y(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function x(t,e){var n=t.className||\"\",r=n&&n.baseVal!==E;return e===E?r?n.baseVal:n:void(r?n.baseVal=e:t.className=e)}function b(t){try{return t?\"true\"==t||\"false\"!=t&&(\"null\"==t?null:+t+\"\"==t?+t:/^[\\[\\{]/.test(t)?T.parseJSON(t):t):t}catch(e){return t}}function w(t,e){e(t);for(var n=0,r=t.childNodes.length;n<r;n++)w(t.childNodes[n],e)}var E,j,T,S,C,N,O=[],P=O.concat,A=O.filter,D=O.slice,L=window.document,$={},F={},k={\"column-count\":1,columns:1,\"font-weight\":1,\"line-height\":1,opacity:1,\"z-index\":1,zoom:1},M=/^\\s*<(\\w+|!)[^>]*>/,R=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,Z=/^(?:body|html)$/i,q=/([A-Z])/g,H=[\"val\",\"css\",\"html\",\"text\",\"data\",\"width\",\"height\",\"offset\"],I=[\"after\",\"prepend\",\"before\",\"append\"],V=L.createElement(\"table\"),_=L.createElement(\"tr\"),B={tr:L.createElement(\"tbody\"),tbody:V,thead:V,tfoot:V,td:_,th:_,\"*\":L.createElement(\"div\")},U=/complete|loaded|interactive/,X=/^[\\w-]*$/,J={},W=J.toString,Y={},G=L.createElement(\"div\"),K={tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},Q=Array.isArray||function(t){return t instanceof Array};return Y.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=G).appendChild(t),r=~Y.qsa(i,e).indexOf(t),o&&G.removeChild(t),r},C=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():\"\"})},N=function(t){return A.call(t,function(e,n){return t.indexOf(e)==n})},Y.fragment=function(t,e,n){var r,i,a;return R.test(t)&&(r=T(L.createElement(RegExp.$1))),r||(t.replace&&(t=t.replace(z,\"<$1></$2>\")),e===E&&(e=M.test(t)&&RegExp.$1),e in B||(e=\"*\"),a=B[e],a.innerHTML=\"\"+t,r=T.each(D.call(a.childNodes),function(){a.removeChild(this)})),o(n)&&(i=T(r),T.each(n,function(t,e){H.indexOf(t)>-1?i[t](e):i.attr(t,e)})),r},Y.Z=function(t,e){return new d(t,e)},Y.isZ=function(t){return t instanceof Y.Z},Y.init=function(t,n){var r;if(!t)return Y.Z();if(\"string\"==typeof t)if(t=t.trim(),\"<\"==t[0]&&M.test(t))r=Y.fragment(t,RegExp.$1,n),t=null;else{if(n!==E)return T(n).find(t);r=Y.qsa(L,t)}else{if(e(t))return T(L).ready(t);if(Y.isZ(t))return t;if(Q(t))r=s(t);else if(i(t))r=[t],t=null;else if(M.test(t))r=Y.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==E)return T(n).find(t);r=Y.qsa(L,t)}}return Y.Z(r,t)},T=function(t,e){return Y.init(t,e)},T.extend=function(t){var e,n=D.call(arguments,1);return\"boolean\"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){m(t,n,e)}),t},Y.qsa=function(t,e){var n,r=\"#\"==e[0],i=!r&&\".\"==e[0],o=r||i?e.slice(1):e,a=X.test(o);return t.getElementById&&a&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:D.call(a&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},T.contains=L.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},T.type=t,T.isFunction=e,T.isWindow=n,T.isArray=Q,T.isPlainObject=o,T.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},T.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&\"boolean\"!=n&&(\"string\"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},T.inArray=function(t,e,n){return O.indexOf.call(e,t,n)},T.camelCase=C,T.trim=function(t){return null==t?\"\":String.prototype.trim.call(t)},T.uuid=0,T.support={},T.expr={},T.noop=function(){},T.map=function(t,e){var n,r,i,o=[];if(a(t))for(r=0;r<t.length;r++)n=e(t[r],r),null!=n&&o.push(n);else for(i in t)n=e(t[i],i),null!=n&&o.push(n);return u(o)},T.each=function(t,e){var n,r;if(a(t)){for(n=0;n<t.length;n++)if(e.call(t[n],n,t[n])===!1)return t}else for(r in t)if(e.call(t[r],r,t[r])===!1)return t;return t},T.grep=function(t,e){return A.call(t,e)},window.JSON&&(T.parseJSON=JSON.parse),T.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),function(t,e){J[\"[object \"+e+\"]\"]=e.toLowerCase()}),T.fn={constructor:Y.Z,length:0,forEach:O.forEach,reduce:O.reduce,push:O.push,sort:O.sort,splice:O.splice,indexOf:O.indexOf,concat:function(){var t,e,n=[];for(t=0;t<arguments.length;t++)e=arguments[t],n[t]=Y.isZ(e)?e.toArray():e;return P.apply(Y.isZ(this)?this.toArray():this,n)},map:function(t){return T(T.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return T(D.apply(this,arguments))},ready:function(t){return U.test(L.readyState)&&L.body?t(T):L.addEventListener(\"DOMContentLoaded\",function(){t(T)},!1),this},get:function(t){return t===E?D.call(this):this[t>=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return O.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return e(t)?this.not(this.not(t)):T(A.call(this,function(e){return Y.matches(e,t)}))},add:function(t,e){return T(N(this.concat(T(t,e))))},is:function(t){return this.length>0&&Y.matches(this[0],t)},not:function(t){var n=[];if(e(t)&&t.call!==E)this.each(function(e){t.call(this,e)||n.push(this)});else{var r=\"string\"==typeof t?this.filter(t):a(t)&&e(t.item)?D.call(t):T(t);this.forEach(function(t){r.indexOf(t)<0&&n.push(t)})}return T(n)},has:function(t){return this.filter(function(){return i(t)?T.contains(this,t):T(this).find(t).size()})},eq:function(t){return t===-1?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!i(t)?t:T(t)},last:function(){var t=this[this.length-1];return t&&!i(t)?t:T(t)},find:function(t){var e,n=this;return e=t?\"object\"==typeof t?T(t).filter(function(){var t=this;return O.some.call(n,function(e){return T.contains(e,t)})}):1==this.length?T(Y.qsa(this[0],t)):this.map(function(){return Y.qsa(this,t)}):T()},closest:function(t,e){var n=[],i=\"object\"==typeof t&&T(t);return this.each(function(o,a){for(;a&&!(i?i.indexOf(a)>=0:Y.matches(a,t));)a=a!==e&&!r(a)&&a.parentNode;a&&n.indexOf(a)<0&&n.push(a)}),T(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=T.map(n,function(t){if((t=t.parentNode)&&!r(t)&&e.indexOf(t)<0)return e.push(t),t});return v(e,t)},parent:function(t){return v(N(this.pluck(\"parentNode\")),t)},children:function(t){return v(this.map(function(){return p(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||D.call(this.childNodes)})},siblings:function(t){return v(this.map(function(t,e){return A.call(p(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=\"\"})},pluck:function(t){return T.map(this,function(e){return e[t]})},show:function(){return this.each(function(){\"none\"==this.style.display&&(this.style.display=\"\"),\"none\"==getComputedStyle(this,\"\").getPropertyValue(\"display\")&&(this.style.display=h(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var n=e(t);if(this[0]&&!n)var r=T(t).get(0),i=r.parentNode||this.length>1;return this.each(function(e){T(this).wrapAll(n?t.call(this,e):i?r.cloneNode(!0):r)})},wrapAll:function(t){if(this[0]){T(this[0]).before(t=T(t));for(var e;(e=t.children()).length;)t=e.first();T(t).append(this)}return this},wrapInner:function(t){var n=e(t);return this.each(function(e){var r=T(this),i=r.contents(),o=n?t.call(this,e):t;i.length?i.wrapAll(o):r.append(o)})},unwrap:function(){return this.parent().each(function(){T(this).replaceWith(T(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css(\"display\",\"none\")},toggle:function(t){return this.each(function(){var e=T(this);(t===E?\"none\"==e.css(\"display\"):t)?e.show():e.hide()})},prev:function(t){return T(this.pluck(\"previousElementSibling\")).filter(t||\"*\")},next:function(t){return T(this.pluck(\"nextElementSibling\")).filter(t||\"*\")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;T(this).empty().append(g(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=g(this,t,e,this.textContent);this.textContent=null==n?\"\":\"\"+n}):0 in this?this.pluck(\"textContent\").join(\"\"):null},attr:function(t,e){var n;return\"string\"!=typeof t||1 in arguments?this.each(function(n){if(1===this.nodeType)if(i(t))for(j in t)y(this,j,t[j]);else y(this,t,g(this,e,n,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(n=this[0].getAttribute(t))?n:E},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(\" \").forEach(function(t){y(this,t)},this)})},prop:function(t,e){return t=K[t]||t,1 in arguments?this.each(function(n){this[t]=g(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=K[t]||t,this.each(function(){delete this[t]})},data:function(t,e){var n=\"data-\"+t.replace(q,\"-$1\").toLowerCase(),r=1 in arguments?this.attr(n,e):this.attr(n);return null!==r?b(r):E},val:function(t){return 0 in arguments?(null==t&&(t=\"\"),this.each(function(e){this.value=g(this,t,e,this.value)})):this[0]&&(this[0].multiple?T(this[0]).find(\"option\").filter(function(){return this.selected}).pluck(\"value\"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var n=T(this),r=g(this,t,e,n.offset()),i=n.offsetParent().offset(),o={top:r.top-i.top,left:r.left-i.left};\"static\"==n.css(\"position\")&&(o.position=\"relative\"),n.css(o)});if(!this.length)return null;if(L.documentElement!==this[0]&&!T.contains(L.documentElement,this[0]))return{top:0,left:0};var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(e,n){if(arguments.length<2){var r=this[0];if(\"string\"==typeof e){if(!r)return;return r.style[C(e)]||getComputedStyle(r,\"\").getPropertyValue(e)}if(Q(e)){if(!r)return;var i={},o=getComputedStyle(r,\"\");return T.each(e,function(t,e){i[e]=r.style[C(e)]||o.getPropertyValue(e)}),i}}var a=\"\";if(\"string\"==t(e))n||0===n?a=c(e)+\":\"+f(e,n):this.each(function(){this.style.removeProperty(c(e))});else for(j in e)e[j]||0===e[j]?a+=c(j)+\":\"+f(j,e[j])+\";\":this.each(function(){this.style.removeProperty(c(j))});return this.each(function(){this.style.cssText+=\";\"+a})},index:function(t){return t?this.indexOf(T(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&O.some.call(this,function(t){return this.test(x(t))},l(t))},addClass:function(t){return t?this.each(function(e){if(\"className\"in this){S=[];var n=x(this),r=g(this,t,e,n);r.split(/\\s+/g).forEach(function(t){T(this).hasClass(t)||S.push(t)},this),S.length&&x(this,n+(n?\" \":\"\")+S.join(\" \"))}}):this},removeClass:function(t){return this.each(function(e){if(\"className\"in this){if(t===E)return x(this,\"\");S=x(this),g(this,t,e,S).split(/\\s+/g).forEach(function(t){S=S.replace(l(t),\" \")}),x(this,S.trim())}})},toggleClass:function(t,e){return t?this.each(function(n){var r=T(this),i=g(this,t,n,x(this));i.split(/\\s+/g).forEach(function(t){(e===E?!r.hasClass(t):e)?r.addClass(t):r.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var e=\"scrollTop\"in this[0];return t===E?e?this[0].scrollTop:this[0].pageYOffset:this.each(e?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var e=\"scrollLeft\"in this[0];return t===E?e?this[0].scrollLeft:this[0].pageXOffset:this.each(e?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),r=Z.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(T(t).css(\"margin-top\"))||0,n.left-=parseFloat(T(t).css(\"margin-left\"))||0,r.top+=parseFloat(T(e[0]).css(\"border-top-width\"))||0,r.left+=parseFloat(T(e[0]).css(\"border-left-width\"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||L.body;t&&!Z.test(t.nodeName)&&\"static\"==T(t).css(\"position\");)t=t.offsetParent;return t})}},T.fn.detach=T.fn.remove,[\"width\",\"height\"].forEach(function(t){var e=t.replace(/./,function(t){return t[0].toUpperCase()});T.fn[t]=function(i){var o,a=this[0];return i===E?n(a)?a[\"inner\"+e]:r(a)?a.documentElement[\"scroll\"+e]:(o=this.offset())&&o[t]:this.each(function(e){a=T(this),a.css(t,g(this,i,e,a[t]()))})}}),I.forEach(function(e,n){var r=n%2;T.fn[e]=function(){var e,i,o=T.map(arguments,function(n){var r=[];return e=t(n),\"array\"==e?(n.forEach(function(t){return t.nodeType!==E?r.push(t):T.zepto.isZ(t)?r=r.concat(t.get()):void(r=r.concat(Y.fragment(t)))}),r):\"object\"==e||null==n?n:Y.fragment(n)}),a=this.length>1;return o.length<1?this:this.each(function(t,e){i=r?e:e.parentNode,e=0==n?e.nextSibling:1==n?e.firstChild:2==n?e:null;var s=T.contains(L.documentElement,i);o.forEach(function(t){if(a)t=t.cloneNode(!0);else if(!i)return T(t).remove();i.insertBefore(t,e),s&&w(t,function(t){if(!(null==t.nodeName||\"SCRIPT\"!==t.nodeName.toUpperCase()||t.type&&\"text/javascript\"!==t.type||t.src)){var e=t.ownerDocument?t.ownerDocument.defaultView:window;e.eval.call(e,t.innerHTML)}})})})},T.fn[r?e+\"To\":\"insert\"+(n?\"Before\":\"After\")]=function(t){return T(t)[e](this),this}}),Y.Z.prototype=d.prototype=T.fn,Y.uniq=N,Y.deserializeValue=b,T.zepto=Y,T}();!function(t){function e(t){return t._zid||(t._zid=h++)}function n(t,n,o,a){if(n=r(n),n.ns)var s=i(n.ns);return(v[e(t)]||[]).filter(function(t){return t&&(!n.e||t.e==n.e)&&(!n.ns||s.test(t.ns))&&(!o||e(t.fn)===e(o))&&(!a||t.sel==a)})}function r(t){var e=(\"\"+t).split(\".\");return{e:e[0],ns:e.slice(1).sort().join(\" \")}}function i(t){return new RegExp(\"(?:^| )\"+t.replace(\" \",\" .* ?\")+\"(?: |$)\")}function o(t,e){return t.del&&!y&&t.e in x||!!e}function a(t){return b[t]||y&&x[t]||t}function s(n,i,s,u,l,h,p){var d=e(n),m=v[d]||(v[d]=[]);i.split(/\\s/).forEach(function(e){if(\"ready\"==e)return t(document).ready(s);var i=r(e);i.fn=s,i.sel=l,i.e in b&&(s=function(e){var n=e.relatedTarget;if(!n||n!==this&&!t.contains(this,n))return i.fn.apply(this,arguments)}),i.del=h;var d=h||s;i.proxy=function(t){if(t=c(t),!t.isImmediatePropagationStopped()){t.data=u;var e=d.apply(n,t._args==f?[t]:[t].concat(t._args));return e===!1&&(t.preventDefault(),t.stopPropagation()),e}},i.i=m.length,m.push(i),\"addEventListener\"in n&&n.addEventListener(a(i.e),i.proxy,o(i,p))})}function u(t,r,i,s,u){var c=e(t);(r||\"\").split(/\\s/).forEach(function(e){n(t,e,i,s).forEach(function(e){delete v[c][e.i],\"removeEventListener\"in t&&t.removeEventListener(a(e.e),e.proxy,o(e,u))})})}function c(e,n){return!n&&e.isDefaultPrevented||(n||(n=e),t.each(T,function(t,r){var i=n[t];e[t]=function(){return this[r]=w,i&&i.apply(n,arguments)},e[r]=E}),e.timeStamp||(e.timeStamp=Date.now()),(n.defaultPrevented!==f?n.defaultPrevented:\"returnValue\"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(e.isDefaultPrevented=w)),e}function l(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===f||(n[e]=t[e]);return c(n,t)}var f,h=1,p=Array.prototype.slice,d=t.isFunction,m=function(t){return\"string\"==typeof t},v={},g={},y=\"onfocusin\"in window,x={focus:\"focusin\",blur:\"focusout\"},b={mouseenter:\"mouseover\",mouseleave:\"mouseout\"};g.click=g.mousedown=g.mouseup=g.mousemove=\"MouseEvents\",t.event={add:s,remove:u},t.proxy=function(n,r){var i=2 in arguments&&p.call(arguments,2);if(d(n)){var o=function(){return n.apply(r,i?i.concat(p.call(arguments)):arguments)};return o._zid=e(n),o}if(m(r))return i?(i.unshift(n[r],n),t.proxy.apply(null,i)):t.proxy(n[r],n);throw new TypeError(\"expected function\")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var w=function(){return!0},E=function(){return!1},j=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,T={preventDefault:\"isDefaultPrevented\",stopImmediatePropagation:\"isImmediatePropagationStopped\",stopPropagation:\"isPropagationStopped\"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,n,r,i,o){var a,c,h=this;return e&&!m(e)?(t.each(e,function(t,e){h.on(t,n,r,e,o)}),h):(m(n)||d(i)||i===!1||(i=r,r=n,n=f),i!==f&&r!==!1||(i=r,r=f),i===!1&&(i=E),h.each(function(f,h){o&&(a=function(t){return u(h,t.type,i),i.apply(this,arguments)}),n&&(c=function(e){var r,o=t(e.target).closest(n,h).get(0);if(o&&o!==h)return r=t.extend(l(e),{currentTarget:o,liveFired:h}),(a||i).apply(o,[r].concat(p.call(arguments,1)))}),s(h,e,i,r,n,c||a)}))},t.fn.off=function(e,n,r){var i=this;return e&&!m(e)?(t.each(e,function(t,e){i.off(t,n,e)}),i):(m(n)||d(r)||r===!1||(r=n,n=f),r===!1&&(r=E),i.each(function(){u(this,e,r,n)}))},t.fn.trigger=function(e,n){return e=m(e)||t.isPlainObject(e)?t.Event(e):c(e),e._args=n,this.each(function(){e.type in x&&\"function\"==typeof this[e.type]?this[e.type]():\"dispatchEvent\"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,r){var i,o;return this.each(function(a,s){i=l(m(e)?t.Event(e):e),i._args=r,i.target=s,t.each(n(s,e.type||e),function(t,e){if(o=e.proxy(i),i.isImmediatePropagationStopped())return!1})}),o},\"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error\".split(\" \").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(t,e){m(t)||(e=t,t=e.type);var n=document.createEvent(g[t]||\"Events\"),r=!0;if(e)for(var i in e)\"bubbles\"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),c(n)}}(e),function(t){function e(e,n,r){var i=t.Event(n);return t(e).trigger(i,r),!i.isDefaultPrevented()}function n(t,n,r,i){if(t.global)return e(n||x,r,i)}function r(e){e.global&&0===t.active++&&n(e,null,\"ajaxStart\")}function i(e){e.global&&!--t.active&&n(e,null,\"ajaxStop\")}function o(t,e){var r=e.context;return e.beforeSend.call(r,t,e)!==!1&&n(e,r,\"ajaxBeforeSend\",[t,e])!==!1&&void n(e,r,\"ajaxSend\",[t,e])}function a(t,e,r,i){var o=r.context,a=\"success\";r.success.call(o,t,a,e),i&&i.resolveWith(o,[t,a,e]),n(r,o,\"ajaxSuccess\",[e,r,t]),u(a,e,r)}function s(t,e,r,i,o){var a=i.context;i.error.call(a,r,e,t),o&&o.rejectWith(a,[r,e,t]),n(i,a,\"ajaxError\",[r,i,t||e]),u(e,r,i)}function u(t,e,r){var o=r.context;r.complete.call(o,e,t),n(r,o,\"ajaxComplete\",[e,r]),i(r)}function c(t,e,n){if(n.dataFilter==l)return t;var r=n.context;return n.dataFilter.call(r,t,e)}function l(){}function f(t){return t&&(t=t.split(\";\",2)[0]),t&&(t==T?\"html\":t==j?\"json\":w.test(t)?\"script\":E.test(t)&&\"xml\")||\"text\"}function h(t,e){return\"\"==e?t:(t+\"&\"+e).replace(/[&?]{1,2}/,\"?\")}function p(e){e.processData&&e.data&&\"string\"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&\"GET\"!=e.type.toUpperCase()&&\"jsonp\"!=e.dataType||(e.url=h(e.url,e.data),e.data=void 0)}function d(e,n,r,i){return t.isFunction(n)&&(i=r,r=n,n=void 0),t.isFunction(r)||(i=r,r=void 0),{url:e,data:n,success:r,dataType:i}}function m(e,n,r,i){var o,a=t.isArray(n),s=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),i&&(n=r?i:i+\"[\"+(s||\"object\"==o||\"array\"==o?n:\"\")+\"]\"),!i&&a?e.add(u.name,u.value):\"array\"==o||!r&&\"object\"==o?m(e,u,r,n):e.add(n,u)})}var v,g,y=+new Date,x=window.document,b=/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,w=/^(?:text|application)\\/javascript/i,E=/^(?:text|application)\\/xml/i,j=\"application/json\",T=\"text/html\",S=/^\\s*$/,C=x.createElement(\"a\");C.href=window.location.href,t.active=0,t.ajaxJSONP=function(e,n){if(!(\"type\"in e))return t.ajax(e);var r,i,u=e.jsonpCallback,c=(t.isFunction(u)?u():u)||\"Zepto\"+y++,l=x.createElement(\"script\"),f=window[c],h=function(e){t(l).triggerHandler(\"error\",e||\"abort\")},p={abort:h};return n&&n.promise(p),t(l).on(\"load error\",function(o,u){clearTimeout(i),t(l).off().remove(),\"error\"!=o.type&&r?a(r[0],p,e,n):s(null,u||\"error\",p,e,n),window[c]=f,r&&t.isFunction(f)&&f(r[0]),f=r=void 0}),o(p,e)===!1?(h(\"abort\"),p):(window[c]=function(){r=arguments},l.src=e.url.replace(/\\?(.+)=\\?/,\"?$1=\"+c),x.head.appendChild(l),e.timeout>0&&(i=setTimeout(function(){h(\"timeout\")},e.timeout)),p)},t.ajaxSettings={type:\"GET\",beforeSend:l,success:l,error:l,complete:l,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:\"text/javascript, application/javascript, application/x-javascript\",json:j,xml:\"application/xml, text/xml\",html:T,text:\"text/plain\"},crossDomain:!1,timeout:0,processData:!0,cache:!0,dataFilter:l},t.ajax=function(e){var n,i,u=t.extend({},e||{}),d=t.Deferred&&t.Deferred();for(v in t.ajaxSettings)void 0===u[v]&&(u[v]=t.ajaxSettings[v]);r(u),u.crossDomain||(n=x.createElement(\"a\"),n.href=u.url,n.href=n.href,u.crossDomain=C.protocol+\"//\"+C.host!=n.protocol+\"//\"+n.host),u.url||(u.url=window.location.toString()),(i=u.url.indexOf(\"#\"))>-1&&(u.url=u.url.slice(0,i)),p(u);var m=u.dataType,y=/\\?.+=\\?/.test(u.url);if(y&&(m=\"jsonp\"),u.cache!==!1&&(e&&e.cache===!0||\"script\"!=m&&\"jsonp\"!=m)||(u.url=h(u.url,\"_=\"+Date.now())),\"jsonp\"==m)return y||(u.url=h(u.url,u.jsonp?u.jsonp+\"=?\":u.jsonp===!1?\"\":\"callback=?\")),t.ajaxJSONP(u,d);var b,w=u.accepts[m],E={},j=function(t,e){E[t.toLowerCase()]=[t,e]},T=/^([\\w-]+:)\\/\\//.test(u.url)?RegExp.$1:window.location.protocol,N=u.xhr(),O=N.setRequestHeader;if(d&&d.promise(N),u.crossDomain||j(\"X-Requested-With\",\"XMLHttpRequest\"),j(\"Accept\",w||\"*/*\"),(w=u.mimeType||w)&&(w.indexOf(\",\")>-1&&(w=w.split(\",\",2)[0]),N.overrideMimeType&&N.overrideMimeType(w)),(u.contentType||u.contentType!==!1&&u.data&&\"GET\"!=u.type.toUpperCase())&&j(\"Content-Type\",u.contentType||\"application/x-www-form-urlencoded\"),u.headers)for(g in u.headers)j(g,u.headers[g]);if(N.setRequestHeader=j,N.onreadystatechange=function(){if(4==N.readyState){N.onreadystatechange=l,clearTimeout(b);var e,n=!1;if(N.status>=200&&N.status<300||304==N.status||0==N.status&&\"file:\"==T){if(m=m||f(u.mimeType||N.getResponseHeader(\"content-type\")),\"arraybuffer\"==N.responseType||\"blob\"==N.responseType)e=N.response;else{e=N.responseText;try{e=c(e,m,u),\"script\"==m?(0,eval)(e):\"xml\"==m?e=N.responseXML:\"json\"==m&&(e=S.test(e)?null:t.parseJSON(e))}catch(r){n=r}if(n)return s(n,\"parsererror\",N,u,d)}a(e,N,u,d)}else s(N.statusText||null,N.status?\"error\":\"abort\",N,u,d)}},o(N,u)===!1)return N.abort(),s(null,\"abort\",N,u,d),N;var P=!(\"async\"in u)||u.async;if(N.open(u.type,u.url,P,u.username,u.password),u.xhrFields)for(g in u.xhrFields)N[g]=u.xhrFields[g];for(g in E)O.apply(N,E[g]);return u.timeout>0&&(b=setTimeout(function(){N.onreadystatechange=l,N.abort(),s(null,\"timeout\",N,u,d)},u.timeout)),N.send(u.data?u.data:null),N},t.get=function(){return t.ajax(d.apply(null,arguments))},t.post=function(){var e=d.apply(null,arguments);return e.type=\"POST\",t.ajax(e)},t.getJSON=function(){var e=d.apply(null,arguments);return e.dataType=\"json\",t.ajax(e)},t.fn.load=function(e,n,r){if(!this.length)return this;var i,o=this,a=e.split(/\\s/),s=d(e,n,r),u=s.success;return a.length>1&&(s.url=a[0],i=a[1]),s.success=function(e){o.html(i?t(\"<div>\").html(e.replace(b,\"\")).find(i):e),u&&u.apply(o,arguments)},t.ajax(s),this};var N=encodeURIComponent;t.param=function(e,n){var r=[];return r.add=function(e,n){t.isFunction(n)&&(n=n()),null==n&&(n=\"\"),this.push(N(e)+\"=\"+N(n))},m(r,e,n),r.join(\"&\").replace(/%20/g,\"+\")}}(e),function(t){t.fn.serializeArray=function(){var e,n,r=[],i=function(t){return t.forEach?t.forEach(i):void r.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(r,o){n=o.type,e=o.name,e&&\"fieldset\"!=o.nodeName.toLowerCase()&&!o.disabled&&\"submit\"!=n&&\"reset\"!=n&&\"button\"!=n&&\"file\"!=n&&(\"radio\"!=n&&\"checkbox\"!=n||o.checked)&&i(t(o).val())}),r},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+\"=\"+encodeURIComponent(e.value))}),t.join(\"&\")},t.fn.submit=function(e){if(0 in arguments)this.bind(\"submit\",e);else if(this.length){var n=t.Event(\"submit\");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(e),function(){try{getComputedStyle(void 0)}catch(t){var e=getComputedStyle;window.getComputedStyle=function(t,n){try{return e(t,n)}catch(r){return null}}}}(),t(\"zepto\",e)});layui.define(function(i){i(\"layim-mobile\",layui.v)});layui[\"layui.mobile\"]||layui.config({base:layui.cache.dir+\"lay/modules/mobile/\"}).extend({\"layer-mobile\":\"layer-mobile\",zepto:\"zepto\",\"upload-mobile\":\"upload-mobile\",\"layim-mobile\":\"layim-mobile\"}),layui.define([\"layer-mobile\",\"zepto\",\"layim-mobile\"],function(l){l(\"mobile\",{layer:layui[\"layer-mobile\"],layim:layui[\"layim-mobile\"]})});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/rate.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var a=layui.jquery,i={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,a){return layui.onevent.call(this,n,e,a)}},l=function(){var e=this,a=e.config;return{setvalue:function(a){e.setvalue.call(e,a)},config:a}},n=\"rate\",t=\"layui-rate\",o=\"layui-icon-rate\",s=\"layui-icon-rate-solid\",u=\"layui-icon-rate-half\",r=\"layui-icon-rate-solid layui-icon-rate-half\",c=\"layui-icon-rate-solid layui-icon-rate\",f=\"layui-icon-rate layui-icon-rate-half\",v=function(e){var l=this;l.index=++i.index,l.config=a.extend({},l.config,i.config,e),l.render()};v.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:\"\"},v.prototype.render=function(){var e=this,i=e.config,l=i.theme?'style=\"color: '+i.theme+';\"':\"\";i.elem=a(i.elem),parseInt(i.value)!==i.value&&(i.half||(i.value=Math.ceil(i.value)-i.value<.5?Math.ceil(i.value):Math.floor(i.value)));for(var n='<ul class=\"layui-rate\" '+(i.readonly?\"readonly\":\"\")+\">\",u=1;u<=i.length;u++){var r='<li class=\"layui-inline\"><i class=\"layui-icon '+(u>Math.floor(i.value)?o:s)+'\" '+l+\"></i></li>\";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'<li><i class=\"layui-icon layui-icon-rate-half\" '+l+\"></i></li>\":n+=r}n+=\"</ul>\"+(i.text?'<span class=\"layui-inline\">'+i.value+\"星\":\"\")+\"</span>\";var c=i.elem,f=c.next(\".\"+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next(\"span\"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass(\"layui-inline\"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find(\"i\").width();l.children(\"li\").each(function(e){var t=e+1,v=a(this);v.on(\"click\",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next(\"span\").text(i.value+\"星\"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on(\"mousemove\",function(e){if(l.find(\"i\").each(function(){a(this).addClass(o).removeClass(r)}),l.find(\"i:lt(\"+t+\")\").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children(\"i\").addClass(u).removeClass(s)}}),v.on(\"mouseleave\",function(){l.find(\"i\").each(function(){a(this).addClass(o).removeClass(r)}),l.find(\"i:lt(\"+Math.floor(i.value)+\")\").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children(\"li:eq(\"+Math.floor(i.value)+\")\").children(\"i\").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/slider.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var i=layui.jquery,t={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,n,e,i)}},a=function(){var e=this,i=e.config;return{setValue:function(i,t){return e.slide(\"set\",i,t||0)},config:i}},n=\"slider\",l=\"layui-disabled\",s=\"layui-slider\",r=\"layui-slider-bar\",o=\"layui-slider-wrap\",u=\"layui-slider-wrap-btn\",d=\"layui-slider-tips\",v=\"layui-slider-input\",c=\"layui-slider-input-txt\",m=\"layui-slider-input-btn\",p=\"layui-slider-hover\",f=function(e){var a=this;a.index=++t.index,a.config=i.extend({},a.config,t.config,e),a.render()};f.prototype.config={type:\"default\",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:\"#009688\"},f.prototype.render=function(){var e=this,t=e.config;if(t.step<1&&(t.step=1),t.max<t.min&&(t.max=t.min+t.step),t.range){t.value=\"object\"==typeof t.value?t.value:[t.min,t.value];var a=Math.min(t.value[0],t.value[1]),n=Math.max(t.value[0],t.value[1]);t.value[0]=a>t.min?a:t.min,t.value[1]=n>t.min?n:t.min,t.value[0]=t.value[0]>t.max?t.max:t.value[0],t.value[1]=t.value[1]>t.max?t.max:t.value[1];var r=Math.floor((t.value[0]-t.min)/(t.max-t.min)*100),v=Math.floor((t.value[1]-t.min)/(t.max-t.min)*100),m=v-r+\"%\";r+=\"%\",v+=\"%\"}else{\"object\"==typeof t.value&&(t.value=Math.min.apply(null,t.value)),t.value<t.min&&(t.value=t.min),t.value>t.max&&(t.value=t.max);var m=Math.floor((t.value-t.min)/(t.max-t.min)*100)+\"%\"}var p=t.disabled?\"#c2c2c2\":t.theme,f='<div class=\"layui-slider '+(\"vertical\"===t.type?\"layui-slider-vertical\":\"\")+'\">'+(t.tips?'<div class=\"layui-slider-tips\"></div>':\"\")+'<div class=\"layui-slider-bar\" style=\"background:'+p+\"; \"+(\"vertical\"===t.type?\"height\":\"width\")+\":\"+m+\";\"+(\"vertical\"===t.type?\"bottom\":\"left\")+\":\"+(r||0)+';\"></div><div class=\"layui-slider-wrap\" style=\"'+(\"vertical\"===t.type?\"bottom\":\"left\")+\":\"+(r||m)+';\"><div class=\"layui-slider-wrap-btn\" style=\"border: 2px solid '+p+';\"></div></div>'+(t.range?'<div class=\"layui-slider-wrap\" style=\"'+(\"vertical\"===t.type?\"bottom\":\"left\")+\":\"+v+';\"><div class=\"layui-slider-wrap-btn\" style=\"border: 2px solid '+p+';\"></div></div>':\"\")+\"</div>\",h=i(t.elem),y=h.next(\".\"+s);if(y[0]&&y.remove(),e.elemTemp=i(f),t.range?(e.elemTemp.find(\".\"+o).eq(0).data(\"value\",t.value[0]),e.elemTemp.find(\".\"+o).eq(1).data(\"value\",t.value[1])):e.elemTemp.find(\".\"+o).data(\"value\",t.value),h.html(e.elemTemp),\"vertical\"===t.type&&e.elemTemp.height(t.height+\"px\"),t.showstep){for(var g=(t.max-t.min)/t.step,b=\"\",x=1;x<g+1;x++){var T=100*x/g;T<100&&(b+='<div class=\"layui-slider-step\" style=\"'+(\"vertical\"===t.type?\"bottom\":\"left\")+\":\"+T+'%\"></div>')}e.elemTemp.append(b)}if(t.input&&!t.range){var w=i('<div class=\"layui-slider-input layui-input\"><div class=\"layui-slider-input-txt\"><input type=\"text\" class=\"layui-input\"></div><div class=\"layui-slider-input-btn\"><i class=\"layui-icon layui-icon-up\"></i><i class=\"layui-icon layui-icon-down\"></i></div></div>');h.css(\"position\",\"relative\"),h.append(w),h.find(\".\"+c).children(\"input\").val(t.value),\"vertical\"===t.type?w.css({left:0,top:-48}):e.elemTemp.css(\"margin-right\",w.outerWidth()+15)}t.disabled?(e.elemTemp.addClass(l),e.elemTemp.find(\".\"+u).addClass(l)):e.slide(),e.elemTemp.find(\".\"+u).on(\"mouseover\",function(){var a=\"vertical\"===t.type?t.height:e.elemTemp[0].offsetWidth,n=e.elemTemp.find(\".\"+o),l=\"vertical\"===t.type?a-i(this).parent()[0].offsetTop-n.height():i(this).parent()[0].offsetLeft,s=l/a*100,r=i(this).parent().data(\"value\"),u=t.setTips?t.setTips(r):r;e.elemTemp.find(\".\"+d).html(u),\"vertical\"===t.type?e.elemTemp.find(\".\"+d).css({bottom:s+\"%\",\"margin-bottom\":\"20px\",display:\"inline-block\"}):e.elemTemp.find(\".\"+d).css({left:s+\"%\",display:\"inline-block\"})}).on(\"mouseout\",function(){e.elemTemp.find(\".\"+d).css(\"display\",\"none\")})},f.prototype.slide=function(e,t,a){var n=this,l=n.config,s=n.elemTemp,f=function(){return\"vertical\"===l.type?l.height:s[0].offsetWidth},h=s.find(\".\"+o),y=s.next(\".\"+v),g=y.children(\".\"+c).children(\"input\").val(),b=100/((l.max-l.min)/Math.ceil(l.step)),x=function(e,i){e=Math.ceil(e)*b>100?Math.ceil(e)*b:Math.round(e)*b,e=e>100?100:e,h.eq(i).css(\"vertical\"===l.type?\"bottom\":\"left\",e+\"%\");var t=T(h[0].offsetLeft),a=l.range?T(h[1].offsetLeft):0;\"vertical\"===l.type?(s.find(\".\"+d).css({bottom:e+\"%\",\"margin-bottom\":\"20px\"}),t=T(f()-h[0].offsetTop-h.height()),a=l.range?T(f()-h[1].offsetTop-h.height()):0):s.find(\".\"+d).css(\"left\",e+\"%\"),t=t>100?100:t,a=a>100?100:a;var n=Math.min(t,a),o=Math.abs(t-a);\"vertical\"===l.type?s.find(\".\"+r).css({height:o+\"%\",bottom:n+\"%\"}):s.find(\".\"+r).css({width:o+\"%\",left:n+\"%\"});var u=l.min+Math.round((l.max-l.min)*e/100);if(g=u,y.children(\".\"+c).children(\"input\").val(g),h.eq(i).data(\"value\",u),u=l.setTips?l.setTips(u):u,s.find(\".\"+d).html(u),l.range){var v=[h.eq(0).data(\"value\"),h.eq(1).data(\"value\")];v[0]>v[1]&&v.reverse()}l.change&&l.change(l.range?v:u)},T=function(e){var i=e/f()*100/b,t=Math.round(i)*b;return e==f()&&(t=Math.ceil(i)*b),t},w=i(['<div class=\"layui-auxiliar-moving\" id=\"LAY-slider-moving\"></div'].join(\"\")),M=function(e,t){var a=function(){t&&t(),w.remove()};i(\"#LAY-slider-moving\")[0]||i(\"body\").append(w),w.on(\"mousemove\",e),w.on(\"mouseup\",a).on(\"mouseleave\",a)};if(\"set\"===e)return x(t,a);s.find(\".\"+u).each(function(e){var t=i(this);t.on(\"mousedown\",function(i){i=i||window.event;var a=t.parent()[0].offsetLeft,n=i.clientX;\"vertical\"===l.type&&(a=f()-t.parent()[0].offsetTop-h.height(),n=i.clientY);var r=function(i){i=i||window.event;var r=a+(\"vertical\"===l.type?n-i.clientY:i.clientX-n);r<0&&(r=0),r>f()&&(r=f());var o=r/f()*100/b;x(o,e),t.addClass(p),s.find(\".\"+d).show(),i.preventDefault()},o=function(){t.removeClass(p),s.find(\".\"+d).hide()};M(r,o)})}),s.on(\"click\",function(e){var t=i(\".\"+u);if(!t.is(event.target)&&0===t.has(event.target).length&&t.length){var a,n=\"vertical\"===l.type?f()-e.clientY+i(this).offset().top:e.clientX-i(this).offset().left;n<0&&(n=0),n>f()&&(n=f());var s=n/f()*100/b;a=l.range?\"vertical\"===l.type?Math.abs(n-parseInt(i(h[0]).css(\"bottom\")))>Math.abs(n-parseInt(i(h[1]).css(\"bottom\")))?1:0:Math.abs(n-h[0].offsetLeft)>Math.abs(n-h[1].offsetLeft)?1:0:0,x(s,a),e.preventDefault()}}),y.hover(function(){var e=i(this);e.children(\".\"+m).fadeIn(\"fast\")},function(){var e=i(this);e.children(\".\"+m).fadeOut(\"fast\")}),y.children(\".\"+m).children(\"i\").each(function(e){i(this).on(\"click\",function(){g=1==e?g-l.step<l.min?l.min:Number(g)-l.step:Number(g)+l.step>l.max?l.max:Number(g)+l.step;var i=(g-l.min)/(l.max-l.min)*100/b;x(i,0)})});var q=function(){var e=this.value;e=isNaN(e)?0:e,e=e<l.min?l.min:e,e=e>l.max?l.max:e,this.value=e;var i=(e-l.min)/(l.max-l.min)*100/b;x(i,0)};y.children(\".\"+c).children(\"input\").on(\"keydown\",function(e){13===e.keyCode&&(e.preventDefault(),q.call(this))}).on(\"change\",q)},f.prototype.events=function(){var e=this;e.config},t.render=function(e){var i=new f(e);return a.call(i)},e(n,t)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/table.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define([\"laytpl\",\"laypage\",\"layer\",\"form\",\"util\"],function(e){\"use strict\";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,o=(layui.util,layui.hint()),r=layui.device(),d={config:{checkName:\"LAY_CHECKED\",indexName:\"LAY_TABLE_INDEX\"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,y,e,t)}},c=function(){var e=this,t=e.config,i=t.id||t.index;return i&&(c.that[i]=e,c.config[i]=t),{config:t,reload:function(t){e.reload.call(e,t)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)}}},s=function(e){var t=c.config[e];return t||o.error(\"The ID option was not found in the table instance\"),t||null},u=function(e,a,l,n){var o=e.templet?function(){return\"function\"==typeof e.templet?e.templet(l):i(t(e.templet).html()||String(a)).render(l)}():a;return n?t(\"<div>\"+o+\"</div>\").text():o},y=\"table\",h=\".layui-table\",f=\"layui-hide\",p=\"layui-none\",v=\"layui-table-view\",m=\".layui-table-tool\",g=\".layui-table-box\",b=\".layui-table-init\",x=\".layui-table-header\",k=\".layui-table-body\",C=\".layui-table-main\",w=\".layui-table-fixed\",T=\".layui-table-fixed-l\",A=\".layui-table-fixed-r\",L=\".layui-table-total\",N=\".layui-table-page\",S=\".layui-table-sort\",R=\"layui-table-edit\",W=\"layui-table-hover\",_=function(e){var t='{{#if(item2.colspan){}} colspan=\"{{item2.colspan}}\"{{#} if(item2.rowspan){}} rowspan=\"{{item2.rowspan}}\"{{#}}}';return e=e||{},['<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"layui-table\" ','{{# if(d.data.skin){ }}lay-skin=\"{{d.data.skin}}\"{{# } }} {{# if(d.data.size){ }}lay-size=\"{{d.data.size}}\"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>',\"<thead>\",\"{{# layui.each(d.data.cols, function(i1, item1){ }}\",\"<tr>\",\"{{# layui.each(item1, function(i2, item2){ }}\",'{{# if(item2.fixed && item2.fixed !== \"right\"){ left = true; } }}','{{# if(item2.fixed === \"right\"){ right = true; } }}',function(){return e.fixed&&\"right\"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== \"right\"){ }}':\"right\"===e.fixed?'{{# if(item2.fixed === \"right\"){ }}':\"\"}(),\"{{# var isSort = !(item2.colGroup) && item2.sort; }}\",'<th data-field=\"{{ item2.field||i2 }}\" data-key=\"{{d.index}}-{{i1}}-{{i2}}\" {{# if( item2.parentKey){ }}data-parentkey=\"{{ item2.parentKey }}\"{{# } }} {{# if(item2.minWidth){ }}data-minwidth=\"{{item2.minWidth}}\"{{# } }} '+t+' {{# if(item2.unresize || item2.colGroup){ }}data-unresize=\"true\"{{# } }} class=\"{{# if(item2.hide){ }}layui-hide{{# } }}{{# if(isSort){ }} layui-unselect{{# } }}{{# if(!item2.field){ }} layui-table-col-special{{# } }}\">','<div class=\"layui-table-cell laytable-cell-',\"{{# if(item2.colGroup){ }}\",\"group\",\"{{# } else { }}\",\"{{d.index}}-{{i1}}-{{i2}}\",'{{# if(item2.type !== \"normal\"){ }}',\" laytable-cell-{{ item2.type }}\",\"{{# } }}\",\"{{# } }}\",'\" {{#if(item2.align){}}align=\"{{item2.align}}\"{{#}}}>','{{# if(item2.type === \"checkbox\"){ }}','<input type=\"checkbox\" name=\"layTableCheckbox\" lay-skin=\"primary\" lay-filter=\"layTableAllChoose\" {{# if(item2[d.data.checkName]){ }}checked{{# }; }}>',\"{{# } else { }}\",'<span>{{item2.title||\"\"}}</span>',\"{{# if(isSort){ }}\",'<span class=\"layui-table-sort layui-inline\"><i class=\"layui-edge layui-table-sort-asc\" title=\"升序\"></i><i class=\"layui-edge layui-table-sort-desc\" title=\"降序\"></i></span>',\"{{# } }}\",\"{{# } }}\",\"</div>\",\"</th>\",e.fixed?\"{{# }; }}\":\"\",\"{{# }); }}\",\"</tr>\",\"{{# }); }}\",\"</thead>\",\"</table>\"].join(\"\")},E=['<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"layui-table\" ','{{# if(d.data.skin){ }}lay-skin=\"{{d.data.skin}}\"{{# } }} {{# if(d.data.size){ }}lay-size=\"{{d.data.size}}\"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>',\"<tbody></tbody>\",\"</table>\"].join(\"\"),z=['<div class=\"layui-form layui-border-box {{d.VIEW_CLASS}}\" lay-filter=\"LAY-table-{{d.index}}\" lay-id=\"{{ d.data.id }}\" style=\"{{# if(d.data.width){ }}width:{{d.data.width}}px;{{# } }} {{# if(d.data.height){ }}height:{{d.data.height}}px;{{# } }}\">',\"{{# if(d.data.toolbar){ }}\",'<div class=\"layui-table-tool\">','<div class=\"layui-table-tool-temp\"></div>','<div class=\"layui-table-tool-self\"></div>',\"</div>\",\"{{# } }}\",'<div class=\"layui-table-box\">',\"{{# if(d.data.loading){ }}\",'<div class=\"layui-table-init\" style=\"background-color: #fff;\">','<i class=\"layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop\"></i>',\"</div>\",\"{{# } }}\",\"{{# var left, right; }}\",'<div class=\"layui-table-header\">',_(),\"</div>\",'<div class=\"layui-table-body layui-table-main\">',E,\"</div>\",\"{{# if(left){ }}\",'<div class=\"layui-table-fixed layui-table-fixed-l\">','<div class=\"layui-table-header\">',_({fixed:!0}),\"</div>\",'<div class=\"layui-table-body\">',E,\"</div>\",\"</div>\",\"{{# }; }}\",\"{{# if(right){ }}\",'<div class=\"layui-table-fixed layui-table-fixed-r\">','<div class=\"layui-table-header\">',_({fixed:\"right\"}),'<div class=\"layui-table-mend\"></div>',\"</div>\",'<div class=\"layui-table-body\">',E,\"</div>\",\"</div>\",\"{{# }; }}\",\"</div>\",\"{{# if(d.data.totalRow){ }}\",'<div class=\"layui-table-total\">','<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" class=\"layui-table\" ','{{# if(d.data.skin){ }}lay-skin=\"{{d.data.skin}}\"{{# } }} {{# if(d.data.size){ }}lay-size=\"{{d.data.size}}\"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>','<tbody><tr><td><div class=\"layui-table-cell\" style=\"visibility: hidden;\">Total</div></td></tr></tbody>',\"</table>\",\"</div>\",\"{{# } }}\",\"{{# if(d.data.page){ }}\",'<div class=\"layui-table-page\">','<div id=\"layui-table-page{{d.index}}\"></div>',\"</div>\",\"{{# } }}\",\"<style>\",\"{{# layui.each(d.data.cols, function(i1, item1){\",\"layui.each(item1, function(i2, item2){ }}\",\".laytable-cell-{{d.index}}-{{i1}}-{{i2}}{ \",\"{{# if(item2.width){ }}\",\"width: {{item2.width}}px;\",\"{{# } }}\",\" }\",\"{{# });\",\"}); }}\",\"</style>\",\"</div>\"].join(\"\"),H=t(window),j=t(document),F=function(e){var i=this;i.index=++d.index,i.config=t.extend({},i.config,d.config,e),i.render()};F.prototype.config={limit:10,loading:!0,cellMinWidth:60,defaultToolbar:[\"filter\",\"exports\",\"print\"],autoSort:!0,text:{none:\"无数据\"}},F.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},a.id=a.id||a.elem.attr(\"id\")||e.index,a.request=t.extend({pageName:\"page\",limitName:\"limit\"},a.request),a.response=t.extend({statusName:\"code\",statusCode:0,msgName:\"msg\",dataName:\"data\",totalRowName:\"totalRow\",countName:\"count\"},a.response),\"object\"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,e.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return e;a.height&&/^full-\\d+$/.test(a.height)&&(e.fullHeightGap=a.height.split(\"-\")[1],a.height=H.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next(\".\"+v),o=e.elem=t(i(z).render({VIEW_CLASS:v,data:a,index:e.index}));if(a.index=e.index,e.key=a.id||a.index,n[0]&&n.remove(),l.after(o),e.layTool=o.find(m),e.layBox=o.find(g),e.layHeader=o.find(x),e.layMain=o.find(C),e.layBody=o.find(k),e.layFixed=o.find(w),e.layFixLeft=o.find(T),e.layFixRight=o.find(A),e.layTotal=o.find(L),e.layPage=o.find(N),e.renderToolbar(),e.fullSize(),a.cols.length>1){var r=e.layFixed.find(x).find(\"th\");r.height(e.layHeader.height()-1-parseFloat(r.css(\"padding-top\"))-parseFloat(r.css(\"padding-bottom\")))}e.pullData(e.page),e.events()},F.prototype.initOpts=function(e){var t=this,i=(t.config,{checkbox:48,radio:48,space:15,numbers:40});e.checkbox&&(e.type=\"checkbox\"),e.space&&(e.type=\"space\"),e.type||(e.type=\"normal\"),\"normal\"!==e.type&&(e.unresize=!0,e.width=e.width||i[e.type])},F.prototype.setInit=function(e){var t=this,i=t.config;return i.clientWidth=i.width||function(){var e=function(t){var a,l;t=t||i.elem.parent(),a=t.width();try{l=\"none\"===t.css(\"display\")}catch(n){}return!t[0]||a&&!l?a:e(t.parent())};return e()}(),\"width\"===e?i.clientWidth:void layui.each(i.cols,function(e,a){layui.each(a,function(l,n){if(!n)return void a.splice(l,1);if(n.key=e+\"-\"+l,n.hide=n.hide||!1,n.colGroup||n.colspan>1){var o=0;layui.each(i.cols[e+1],function(t,i){i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+\"-\"+l,o+=parseInt(i.colspan>1?i.colspan:1))}),n.colGroup=!0}t.initOpts(n)})})},F.prototype.renderToolbar=function(){var e=this,a=e.config,l=['<div class=\"layui-inline\" lay-event=\"add\"><i class=\"layui-icon layui-icon-add-1\"></i></div>','<div class=\"layui-inline\" lay-event=\"update\"><i class=\"layui-icon layui-icon-edit\"></i></div>','<div class=\"layui-inline\" lay-event=\"delete\"><i class=\"layui-icon layui-icon-delete\"></i></div>'].join(\"\"),n=e.layTool.find(\".layui-table-tool-temp\");if(\"default\"===a.toolbar)n.html(l);else if(\"string\"==typeof a.toolbar){var o=t(a.toolbar).html()||\"\";o&&n.html(i(o).render(a))}var r={filter:{title:\"筛选列\",layEvent:\"LAYTABLE_COLS\",icon:\"layui-icon-cols\"},exports:{title:\"导出\",layEvent:\"LAYTABLE_EXPORT\",icon:\"layui-icon-export\"},print:{title:\"打印\",layEvent:\"LAYTABLE_PRINT\",icon:\"layui-icon-print\"}},d=[];\"object\"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i=\"string\"==typeof t?r[t]:t;i&&d.push('<div class=\"layui-inline\" title=\"'+i.title+'\" lay-event=\"'+i.layEvent+'\"><i class=\"layui-icon '+i.icon+'\"></i></div>')}),e.layTool.find(\".layui-table-tool-self\").html(d.join(\"\"))},F.prototype.setParentCol=function(e,t){var i=this,a=i.config,l=i.layHeader.find('th[data-key=\"'+a.index+\"-\"+t+'\"]'),n=parseInt(l.attr(\"colspan\"))||0;if(l[0]){var o=t.split(\"-\"),r=a.cols[o[0]][o[1]];e?n--:n++,l.attr(\"colspan\",n),l[n<1?\"addClass\":\"removeClass\"](f),r.colspan=n,r.hide=n<1;var d=l.data(\"parentkey\");d&&i.setParentCol(e,d)}},F.prototype.setColsPatch=function(){var e=this,t=e.config;layui.each(t.cols,function(t,i){layui.each(i,function(t,i){i.hide&&e.setParentCol(i.hide,i.parentKey)})})},F.prototype.setColsWidth=function(){var e=this,t=e.config,i=0,a=0,l=0,n=0,o=e.setInit(\"width\");e.eachCols(function(e,t){t.hide||i++}),o=o-function(){return\"line\"===t.skin||\"nob\"===t.skin?2:i+1}()-e.getScrollWidth(e.layMain[0])-1;var r=function(e){layui.each(t.cols,function(i,r){layui.each(r,function(i,d){var c=0,s=d.minWidth||t.cellMinWidth;return d?void(d.colGroup||d.hide||(e?l&&l<s&&(a--,c=s):(c=d.width||0,/\\d+%$/.test(c)?(c=Math.floor(parseFloat(c)/100*o),c<s&&(c=s)):c||(d.width=c=0,a++)),d.hide&&(c=0),n+=c)):void r.splice(i,1)})}),o>n&&a&&(l=(o-n)/a)};r(),r(!0),e.autoColNums=a,e.eachCols(function(i,a){var n=a.minWidth||t.cellMinWidth;a.colGroup||a.hide||(0===a.width?e.getCssRule(t.index+\"-\"+a.key,function(e){e.style.width=Math.floor(l>=n?l:n)+\"px\"}):/\\d+%$/.test(a.width)&&e.getCssRule(t.index+\"-\"+a.key,function(e){e.style.width=Math.floor(parseFloat(a.width)/100*o)+\"px\"}))});var d=e.layMain.width()-e.getScrollWidth(e.layMain[0])-e.layMain.children(\"table\").outerWidth();if(e.autoColNums&&d>=-i&&d<=i){var c=function(t){var i;return t=t||e.layHeader.eq(0).find(\"thead th:last-child\"),i=t.data(\"field\"),!i&&t.prev()[0]?c(t.prev()):t},s=c(),u=s.data(\"key\");e.getCssRule(u,function(t){var i=t.style.width||s.outerWidth();t.style.width=parseFloat(i)+d+\"px\",e.layMain.height()-e.layMain.prop(\"clientHeight\")>0&&(t.style.width=parseFloat(t.style.width)-1+\"px\")})}e.loading(!0)},F.prototype.resize=function(){var e=this;e.fullSize(),e.setColsWidth(),e.scrollPatch()},F.prototype.reload=function(e){var i=this;e=e||{},delete i.haveInit,e.data&&e.data.constructor===Array&&delete i.config.data,i.config=t.extend(!0,{},i.config,e),i.render()},F.prototype.errorView=function(e){var i=this,a=i.layMain.find(\".\"+p),l=t('<div class=\"'+p+'\">'+(e||\"Error\")+\"</div>\");a[0]&&(i.layNone.remove(),a.remove()),i.layFixed.addClass(f),i.layMain.find(\"tbody\").html(\"\"),i.layMain.append(i.layNone=l),d.cache[i.key]=[]},F.prototype.page=1,F.prototype.pullData=function(e){var i=this,a=i.config,l=a.request,n=a.response,o=function(){\"object\"==typeof a.initSort&&i.sort(a.initSort.field,a.initSort.type)};if(i.startTime=(new Date).getTime(),a.url){var r={};r[l.pageName]=e,r[l.limitName]=a.limit;var d=t.extend(r,a.where);a.contentType&&0==a.contentType.indexOf(\"application/json\")&&(d=JSON.stringify(d)),i.loading(),t.ajax({type:a.method||\"get\",url:a.url,contentType:a.contentType,data:d,dataType:\"json\",headers:a.headers||{},success:function(t){\"function\"==typeof a.parseData&&(t=a.parseData(t)||t),t[n.statusName]!=n.statusCode?(i.renderForm(),i.errorView(t[n.msgName]||'返回的数据不符合规范，正确的成功状态码应为：\"'+n.statusName+'\": '+n.statusCode)):(i.renderData(t,e,t[n.countName]),o(),a.time=(new Date).getTime()-i.startTime+\" ms\"),i.setColsWidth(),\"function\"==typeof a.done&&a.done(t,e,t[n.countName])},error:function(e,t){i.errorView(\"数据接口请求异常：\"+t),i.renderForm(),i.setColsWidth()}})}else if(a.data&&a.data.constructor===Array){var c={},s=e*a.limit-a.limit;c[n.dataName]=a.data.concat().splice(s,a.limit),c[n.countName]=a.data.length,\"object\"==typeof a.totalRow&&(c[n.totalRowName]=t.extend({},a.totalRow)),i.renderData(c,e,c[n.countName]),o(),i.setColsWidth(),\"function\"==typeof a.done&&a.done(c,e,c[n.countName])}},F.prototype.eachCols=function(e){var t=this;return d.eachCols(null,e,t.config.cols),t},F.prototype.renderData=function(e,n,o,r){var c=this,s=c.config,y=e[s.response.dataName]||[],h=e[s.response.totalRowName],v=[],m=[],g=[],b=function(){var e;return!r&&c.sortKey?c.sort(c.sortKey.field,c.sortKey.sort,!0):(layui.each(y,function(a,l){var o=[],y=[],h=[],p=a+s.limit*(n-1)+1;0!==l.length&&(r||(l[d.config.indexName]=a),c.eachCols(function(n,r){var c=r.field||n,v=s.index+\"-\"+r.key,m=l[c];if(void 0!==m&&null!==m||(m=\"\"),!r.colGroup){var g=['<td data-field=\"'+c+'\" data-key=\"'+v+'\" '+function(){var e=[];return r.edit&&e.push('data-edit=\"'+r.edit+'\"'),r.align&&e.push('align=\"'+r.align+'\"'),r.templet&&e.push('data-content=\"'+m+'\"'),r.toolbar&&e.push('data-off=\"true\"'),r.event&&e.push('lay-event=\"'+r.event+'\"'),r.style&&e.push('style=\"'+r.style+'\"'),r.minWidth&&e.push('data-minwidth=\"'+r.minWidth+'\"'),e.join(\" \")}()+' class=\"'+function(){var e=[];return r.hide&&e.push(f),r.field||e.push(\"layui-table-col-special\"),e.join(\" \")}()+'\">','<div class=\"layui-table-cell laytable-cell-'+function(){return\"normal\"===r.type?v:v+\" laytable-cell-\"+r.type}()+'\">'+function(){var n=t.extend(!0,{LAY_INDEX:p},l),o=d.config.checkName;switch(r.type){case\"checkbox\":return'<input type=\"checkbox\" name=\"layTableCheckbox\" lay-skin=\"primary\" '+function(){return r[o]?(l[o]=r[o],r[o]?\"checked\":\"\"):n[o]?\"checked\":\"\"}()+\">\";case\"radio\":return n[o]&&(e=a),'<input type=\"radio\" name=\"layTableRadio_'+s.index+'\" '+(n[o]?\"checked\":\"\")+' lay-type=\"layTableRadio\">';case\"numbers\":return p}return r.toolbar?i(t(r.toolbar).html()||\"\").render(n):u(r,m,n)}(),\"</div></td>\"].join(\"\");o.push(g),r.fixed&&\"right\"!==r.fixed&&y.push(g),\"right\"===r.fixed&&h.push(g)}}),v.push('<tr data-index=\"'+a+'\">'+o.join(\"\")+\"</tr>\"),m.push('<tr data-index=\"'+a+'\">'+y.join(\"\")+\"</tr>\"),g.push('<tr data-index=\"'+a+'\">'+h.join(\"\")+\"</tr>\"))}),c.layBody.scrollTop(0),c.layMain.find(\".\"+p).remove(),c.layMain.find(\"tbody\").html(v.join(\"\")),c.layFixLeft.find(\"tbody\").html(m.join(\"\")),c.layFixRight.find(\"tbody\").html(g.join(\"\")),c.renderForm(),\"number\"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return d.cache[c.key]=y,c.layPage[0==o||0===y.length&&1==n?\"addClass\":\"removeClass\"](f),r?b():0===y.length?(c.renderForm(),c.errorView(s.text.none)):(c.layFixed.removeClass(f),b(),c.renderTotal(y,h),void(s.page&&(s.page=t.extend({elem:\"layui-table-page\"+s.index,count:o,limit:s.limit,limits:s.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:[\"prev\",\"page\",\"next\",\"skip\",\"count\",\"limit\"],prev:'<i class=\"layui-icon\">&#xe603;</i>',next:'<i class=\"layui-icon\">&#xe602;</i>',jump:function(e,t){t||(c.page=e.curr,s.limit=e.limit,c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page))))},F.prototype.renderTotal=function(e,t){var i=this,a=i.config,l={};if(a.totalRow){layui.each(e,function(e,t){0!==t.length&&i.eachCols(function(e,i){var a=i.field||e,n=t[a];i.totalRow&&(l[a]=(l[a]||0)+(parseFloat(n)||0))})}),i.dataTotal={};var n=[];i.eachCols(function(e,o){var r=o.field||e,d=function(){var e=o.totalRowText||\"\",i=parseFloat(l[r]).toFixed(2),a={};return a[r]=i,i=u(o,i,a),t?t[o.field]||e:o.totalRow?i||e:e}(),c=['<td data-field=\"'+r+'\" data-key=\"'+a.index+\"-\"+o.key+'\" '+function(){var e=[];return o.align&&e.push('align=\"'+o.align+'\"'),o.style&&e.push('style=\"'+o.style+'\"'),o.minWidth&&e.push('data-minwidth=\"'+o.minWidth+'\"'),e.join(\" \")}()+' class=\"'+function(){var e=[];return o.hide&&e.push(f),o.field||e.push(\"layui-table-col-special\"),e.join(\" \")}()+'\">','<div class=\"layui-table-cell laytable-cell-'+function(){var e=a.index+\"-\"+o.key;return\"normal\"===o.type?e:e+\" laytable-cell-\"+o.type}()+'\">'+d,\"</div></td>\"].join(\"\");o.field&&(i.dataTotal[r]=d),n.push(c)}),i.layTotal.find(\"tbody\").html(\"<tr>\"+n.join(\"\")+\"</tr>\")}},F.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(\".laytable-cell-\"+(a.index+\"-\"+t)+\":eq(0)\")},F.prototype.renderForm=function(e){n.render(e,\"LAY-table-\"+this.index)},F.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,\"layui-table-click\"),a=t.layBody.find('tr[data-index=\"'+e+'\"]');a.addClass(i).siblings(\"tr\").removeClass(i)},F.prototype.sort=function(e,i,a,l){var n,r,c=this,s={},u=c.config,h=u.elem.attr(\"lay-filter\"),f=d.cache[c.key];\"string\"==typeof e&&c.layHeader.find(\"th\").each(function(i,a){var l=t(this),o=l.data(\"field\");if(o===e)return e=l,n=o,!1});try{var n=n||e.data(\"field\"),p=e.data(\"key\");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find(\"th .laytable-cell-\"+p).find(S);c.layHeader.find(\"th\").find(S).removeAttr(\"lay-sort\"),v.attr(\"lay-sort\",i||null),c.layFixed.find(\"th\")}catch(m){return o.error(\"Table modules: Did not match to field\")}c.sortKey={field:n,sort:i},u.autoSort&&(\"asc\"===i?r=layui.sort(f,n):\"desc\"===i?r=layui.sort(f,n,!0):(r=layui.sort(f,d.config.indexName),delete c.sortKey)),s[u.response.dataName]=r||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,y,\"sort(\"+h+\")\",{field:n,type:i})},F.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(b).remove()):(i.layInit=t(['<div class=\"layui-table-init\">','<i class=\"layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop\"></i>',\"</div>\"].join(\"\")),i.layBox.append(i.layInit)))},F.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&l[e].constructor!==Array&&(l[e][a.checkName]=t)},F.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name=\"layTableCheckbox\"]'),a=function(i){return e.eachCols(function(e,a){\"checkbox\"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop(\"checked\",!0),e.renderForm(\"checkbox\")),a(!0)):(i[0].checked&&(i.prop(\"checked\",!1),e.renderForm(\"checkbox\")),a(!1)))},F.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find(\"style\")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===\".laytable-cell-\"+e)return t(a),!0})},F.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=H.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css(\"height\",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e-=t.layPage.outerHeight()||41),t.layMain.css(\"height\",e-2))},F.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement(\"div\"),e.style.width=\"100px\",e.style.height=\"100px\",e.style.overflowY=\"scroll\",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},F.prototype.scrollPatch=function(){var e=this,i=e.layMain.children(\"table\"),a=e.layMain.width()-e.layMain.prop(\"clientWidth\"),l=e.layMain.height()-e.layMain.prop(\"clientHeight\"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(\".layui-table-patch\")[0]){var i=t('<th class=\"layui-table-patch\"><div class=\"layui-table-cell\"></div></th>');i.find(\"div\").css({width:a}),e.find(\"tr\").append(i)}}else e.find(\".layui-table-patch\").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),d=r-l;e.layFixed.find(k).css(\"height\",i.height()>=d?d:\"auto\"),e.layFixRight[n>0?\"removeClass\":\"addClass\"](f),e.layFixRight.css(\"right\",a-1)},F.prototype.events=function(){var e,i=this,a=i.config,o=t(\"body\"),c={},s=i.layHeader.find(\"th\"),h=\".layui-table-cell\",p=a.elem.attr(\"lay-filter\");i.layTool.on(\"click\",\"*[lay-event]\",function(e){var o=t(this),c=o.attr(\"lay-event\"),s=function(e){var l=t(e.list),n=t('<ul class=\"layui-table-tool-panel\"></ul>');n.html(l),a.height&&n.css(\"max-height\",a.height-(i.layTool.outerHeight()||50)),o.find(\".layui-table-tool-panel\")[0]||o.append(n),i.renderForm(),n.on(\"click\",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),j.trigger(\"table.tool.panel.remove\"),l.close(i.tipsIndex),c){case\"LAYTABLE_COLS\":s({list:function(){var e=[];return i.eachCols(function(t,i){i.field&&\"normal\"==i.type&&e.push('<li><input type=\"checkbox\" name=\"'+i.field+'\" data-key=\"'+i.key+'\" data-parentkey=\"'+(i.parentKey||\"\")+'\" lay-skin=\"primary\" '+(i.hide?\"\":\"checked\")+' title=\"'+(i.title||i.field)+'\" lay-filter=\"LAY_TABLE_TOOL_COLS\"></li>')}),e.join(\"\")}(),done:function(){n.on(\"checkbox(LAY_TABLE_TOOL_COLS)\",function(e){var l=t(e.elem),n=this.checked,o=l.data(\"key\"),r=l.data(\"parentkey\");layui.each(a.cols,function(e,t){layui.each(t,function(t,l){if(e+\"-\"+t===o){var d=l.hide;l.hide=!n,i.elem.find('*[data-key=\"'+a.index+\"-\"+o+'\"]')[n?\"removeClass\":\"addClass\"](f),d!=l.hide&&i.setParentCol(!n,r),i.resize()}})})})}});break;case\"LAYTABLE_EXPORT\":r.ie?l.tips(\"导出功能不支持 IE，请用 Chrome 等高级浏览器导出\",this,{tips:3}):s({list:function(){return['<li data-type=\"csv\">导出到 Csv 文件</li>','<li data-type=\"xls\">导出到 Excel 文件</li>'].join(\"\")}(),done:function(e,l){l.on(\"click\",function(){var e=t(this).data(\"type\");d.exportFile.call(i,a.id,null,e)})}});break;case\"LAYTABLE_PRINT\":var u=window.open(\"打印窗口\",\"_blank\"),h=[\"<style>\",\"body{font-size: 12px; color: #666;}\",\"table{width: 100%; border-collapse: collapse; border-spacing: 0;}\",\"th,td{line-height: 20px; padding: 9px 15px; border: 1px solid #ccc; text-align: left; font-size: 12px; color: #666;}\",\"a{color: #666; text-decoration:none;}\",\"*.layui-hide{display: none}\",\"</style>\"].join(\"\"),v=t(i.layHeader.html());v.append(i.layMain.find(\"table\").html()),v.append(i.layTotal.find(\"table\").html()),v.find(\"th.layui-table-patch\").remove(),v.find(\".layui-table-col-special\").remove(),u.document.write(h+v.prop(\"outerHTML\")),u.document.close(),u.print(),u.close()}layui.event.call(this,y,\"toolbar(\"+p+\")\",t.extend({event:c,config:a},{}))}),s.on(\"mousemove\",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data(\"unresize\")||c.resizeStart||(c.allowResize=i.width()-l<=10,o.css(\"cursor\",c.allowResize?\"col-resize\":\"\"))}).on(\"mouseleave\",function(){t(this);c.resizeStart||o.css(\"cursor\",\"\")}).on(\"mousedown\",function(e){var l=t(this);if(c.allowResize){var n=l.data(\"key\");e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],i.getCssRule(n,function(e){var t=e.style.width||l.outerWidth();c.rule=e,c.ruleWidth=parseFloat(t),c.minWidth=l.data(\"minwidth\")||a.cellMinWidth})}}),j.on(\"mousemove\",function(t){if(c.resizeStart){if(t.preventDefault(),c.rule){var a=c.ruleWidth+t.clientX-c.offset[0];a<c.minWidth&&(a=c.minWidth),c.rule.style.width=a+\"px\",l.close(i.tipsIndex)}e=1}}).on(\"mouseup\",function(t){c.resizeStart&&(c={},o.css(\"cursor\",\"\"),i.scrollPatch()),2===e&&(e=null)}),s.on(\"click\",function(a){var l,n=t(this),o=n.find(S),r=o.attr(\"lay-sort\");return o[0]&&1!==e?(l=\"asc\"===r?\"desc\":\"desc\"===r?null:\"asc\",void i.sort(n,l,null,!0)):e=2}).find(S+\" .layui-edge \").on(\"click\",function(e){var a=t(this),l=a.index(),n=a.parents(\"th\").eq(0).data(\"field\");layui.stope(e),0===l?i.sort(n,\"asc\",null,!0):i.sort(n,\"desc\",null,!0)});var v=function(e){var a=t(this),l=a.parents(\"tr\").eq(0).data(\"index\"),n=i.layBody.find('tr[data-index=\"'+l+'\"]'),o=d.cache[i.key]||[];return o=o[l]||{},t.extend({tr:n,data:d.clearCacheKey(o),del:function(){d.cache[i.key][l]=[],n.remove(),i.scrollPatch()},update:function(e){e=e||{},layui.each(e,function(e,t){if(e in o){var a,l=n.children('td[data-field=\"'+e+'\"]');o[e]=t,i.eachCols(function(t,i){i.field==e&&i.templet&&(a=i.templet)}),l.children(h).html(u({templet:a},t,o)),l.data(\"content\",t)}})}},e)};i.elem.on(\"click\",'input[name=\"layTableCheckbox\"]+',function(){var e=t(this).prev(),a=i.layBody.find('input[name=\"layTableCheckbox\"]'),l=e.parents(\"tr\").eq(0).data(\"index\"),n=e[0].checked,o=\"layTableAllChoose\"===e.attr(\"lay-filter\");o?(a.each(function(e,t){t.checked=n,i.setCheckData(e,n)}),i.syncCheckAll(),i.renderForm(\"checkbox\")):(i.setCheckData(l,n),i.syncCheckAll()),layui.event.call(e[0],y,\"checkbox(\"+p+\")\",v.call(e[0],{checked:n,type:o?\"all\":\"one\"}))}),i.elem.on(\"click\",'input[lay-type=\"layTableRadio\"]+',function(){var e=t(this).prev(),a=e[0].checked,l=d.cache[i.key],n=e.parents(\"tr\").eq(0).data(\"index\");layui.each(l,function(e,t){n===e?t.LAY_CHECKED=!0:delete t.LAY_CHECKED}),i.setThisRowChecked(n),layui.event.call(this,y,\"radio(\"+p+\")\",v.call(this,{checked:a}))}),i.layBody.on(\"mouseenter\",\"tr\",function(){var e=t(this),a=e.index();e.data(\"off\")||i.layBody.find(\"tr:eq(\"+a+\")\").addClass(W)}).on(\"mouseleave\",\"tr\",function(){var e=t(this),a=e.index();e.data(\"off\")||i.layBody.find(\"tr:eq(\"+a+\")\").removeClass(W)}).on(\"click\",\"tr\",function(){m.call(this,\"row\")}).on(\"dblclick\",\"tr\",function(){m.call(this,\"rowDouble\")});var m=function(e){var i=t(this);i.data(\"off\")||layui.event.call(this,y,e+\"(\"+p+\")\",v.call(i.children(\"td\")[0]))};i.layBody.on(\"change\",\".\"+R,function(){var e=t(this),a=this.value,l=e.parent().data(\"field\"),n=e.parents(\"tr\").eq(0).data(\"index\"),o=d.cache[i.key][n];o[l]=a,layui.event.call(this,y,\"edit(\"+p+\")\",v.call(this,{value:a,field:l}))}).on(\"blur\",\".\"+R,function(){var e,a=t(this),l=this,n=a.parent().data(\"field\"),o=a.parents(\"tr\").eq(0).data(\"index\"),r=d.cache[i.key][o];i.eachCols(function(t,i){i.field==n&&i.templet&&(e=i.templet)}),a.siblings(h).html(function(t){return u({templet:e},t,r)}(l.value)),a.parent().data(\"content\",l.value),a.remove()}),i.layBody.on(\"click\",\"td\",function(e){var i=t(this),a=(i.data(\"field\"),i.data(\"edit\")),l=i.children(h);if(!i.data(\"off\")&&a){var n=t('<input class=\"layui-input '+R+'\">');return n[0].value=i.data(\"content\")||l.text(),i.find(\".\"+R)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on(\"mouseenter\",\"td\",function(){b.call(this)}).on(\"mouseleave\",\"td\",function(){b.call(this,\"hide\")});var g=\"layui-table-grid-down\",b=function(e){var i=t(this),a=i.children(h);if(!i.data(\"off\"))if(e)i.find(\".layui-table-grid-down\").remove();else if(a.prop(\"scrollWidth\")>a.outerWidth()){if(a.find(\".\"+g)[0])return;i.append('<div class=\"'+g+'\"><i class=\"layui-icon layui-icon-down\"></i></div>')}};i.layBody.on(\"click\",\".\"+g,function(e){var n=t(this),o=n.parent(),d=o.children(h);i.tipsIndex=l.tips(['<div class=\"layui-table-tips-main\" style=\"margin-top: -'+(d.height()+16)+\"px;\"+function(){return\"sm\"===a.size?\"padding: 4px 15px; font-size: 12px;\":\"lg\"===a.size?\"padding: 14px 15px;\":\"\"}()+'\">',d.html(),\"</div>\",'<i class=\"layui-icon layui-table-tips-c layui-icon-close\"></i>'].join(\"\"),d[0],{tips:[3,\"\"],time:-1,anim:-1,maxWidth:r.ios||r.android?300:i.elem.width()/2,isOutAnim:!1,skin:\"layui-table-tips\",success:function(e,t){e.find(\".layui-table-tips-c\").on(\"click\",function(){l.close(t)})}}),layui.stope(e)}),i.layBody.on(\"click\",\"*[lay-event]\",function(){var e=t(this),a=e.parents(\"tr\").eq(0).data(\"index\");layui.event.call(this,y,\"tool(\"+p+\")\",v.call(this,{event:e.attr(\"lay-event\")})),i.setThisRowChecked(a)}),i.layMain.on(\"scroll\",function(){var e=t(this),a=e.scrollLeft(),n=e.scrollTop();i.layHeader.scrollLeft(a),i.layTotal.scrollLeft(a),i.layFixed.find(k).scrollTop(n),l.close(i.tipsIndex)}),H.on(\"resize\",function(){i.resize()})},function(){j.on(\"click\",function(){j.trigger(\"table.remove.tool.panel\")}),j.on(\"table.remove.tool.panel\",function(){t(\".layui-table-tool-panel\").remove()})}(),d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter=\"'+e+'\"]':h+\"[lay-data]\"),n=\"Table element property lay-data configuration item has a syntax error: \";return l.each(function(){var a=t(this),l=a.attr(\"lay-data\");try{l=new Function(\"return \"+l)()}catch(r){o.error(n+l)}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr(\"lay-skin\"),size:a.attr(\"lay-size\"),even:\"string\"==typeof a.attr(\"lay-even\")},d.config,i,l);e&&a.hide(),a.find(\"thead>tr\").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr(\"lay-data\");try{l=new Function(\"return \"+l)()}catch(r){return o.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr(\"colspan\")||0,rowspan:a.attr(\"rowspan\")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find(\"tbody>tr\").each(function(e){var i=t(this),a={};i.children(\"td\").each(function(e,i){var l=t(this),n=l.data(\"field\");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children(\"td\").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},c.that={},c.config={},d.eachCols=function(e,i,a){var l=c.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void(\"function\"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return l.constructor===Array?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.exportFile=function(e,t,i){var a=this;t=t||d.clearCacheKey(d.cache[e]),i=i||\"csv\";var l=c.config[e]||{},n={csv:\"text/csv\",xls:\"application/vnd.ms-excel\"}[i],s=document.createElement(\"a\");return r.ie?o.error(\"IE_NOT_SUPPORT_EXPORTS\"):(s.href=\"data:\"+n+\";charset=utf-8,\\ufeff\"+encodeURIComponent(function(){var i=[],l=[],n=[];return layui.each(t,function(t,a){var n=[];\"object\"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||\"\")}),layui.each(d.clearCacheKey(a),function(e,t){n.push('\"'+(t||\"\")+'\"')})):d.eachCols(e,function(e,l){if(l.field&&\"normal\"==l.type&&!l.hide){var o=a[l.field];void 0!==o&&null!==o||(o=\"\"),0==t&&i.push(l.title||\"\"),n.push('\"'+u(l,o,a,\"text\")+'\"')}}),l.push(n.join(\",\"))}),layui.each(a.dataTotal,function(e,t){n.push(t)}),i.join(\",\")+\"\\r\\n\"+l.join(\"\\r\\n\")+\"\\r\\n\"+n.join(\",\")}()),s.download=(l.title||\"table_\"+(l.index||\"\"))+\".\"+i,document.body.appendChild(s),s.click(),void document.body.removeChild(s))},d.resize=function(e){if(e){var t=s(e);if(!t)return;c.that[e].resize()}else layui.each(c.that,function(){this.resize()})},d.reload=function(e,t){var i=s(e);if(i){var a=c.that[e];return a.reload(t),c.call(a)}},d.render=function(e){var t=new F(e);return c.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},d.init(),e(y,d)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/transfer.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define([\"laytpl\",\"form\"],function(e){\"use strict\";var a=layui.$,t=layui.laytpl,n=layui.form,i=\"transfer\",l={config:{},index:layui[i]?layui[i].index+1e4:0,set:function(e){var t=this;return t.config=a.extend({},t.config,e),t},on:function(e,a){return layui.onevent.call(this,i,e,a)}},r=function(){var e=this,a=e.config,t=a.id||e.index;return r.that[t]=e,r.config[t]=a,{config:a,reload:function(a){e.reload.call(e,a)},getData:function(){return e.getData.call(e)}}},c=\"layui-hide\",o=\"layui-btn-disabled\",d=\"layui-none\",s=\"layui-transfer-box\",u=\"layui-transfer-header\",h=\"layui-transfer-search\",f=\"layui-transfer-active\",y=\"layui-transfer-data\",p=function(e){return e=e||{},['<div class=\"layui-transfer-box\" data-index=\"'+e.index+'\">','<div class=\"layui-transfer-header\">','<input type=\"checkbox\" name=\"'+e.checkAllName+'\" lay-filter=\"layTransferCheckbox\" lay-type=\"all\" lay-skin=\"primary\" title=\"{{ d.data.title['+e.index+\"] || 'list\"+(e.index+1)+\"' }}\\\">\",\"</div>\",\"{{# if(d.data.showSearch){ }}\",'<div class=\"layui-transfer-search\">','<i class=\"layui-icon layui-icon-search\"></i>','<input type=\"input\" class=\"layui-input\" placeholder=\"关键词搜索\">',\"</div>\",\"{{# } }}\",'<ul class=\"layui-transfer-data\"></ul>',\"</div>\"].join(\"\")},v=['<div class=\"layui-transfer layui-form layui-border-box\" lay-filter=\"LAY-transfer-{{ d.index }}\">',p({index:0,checkAllName:\"layTransferLeftCheckAll\"}),'<div class=\"layui-transfer-active\">','<button type=\"button\" class=\"layui-btn layui-btn-sm layui-btn-primary layui-btn-disabled\" data-index=\"0\">','<i class=\"layui-icon layui-icon-next\"></i>',\"</button>\",'<button type=\"button\" class=\"layui-btn layui-btn-sm layui-btn-primary layui-btn-disabled\" data-index=\"1\">','<i class=\"layui-icon layui-icon-prev\"></i>',\"</button>\",\"</div>\",p({index:1,checkAllName:\"layTransferRightCheckAll\"}),\"</div>\"].join(\"\"),x=function(e){var t=this;t.index=++l.index,t.config=a.extend({},t.config,l.config,e),t.render()};x.prototype.config={title:[\"列表一\",\"列表二\"],width:200,height:360,data:[],value:[],showSearch:!1,id:\"\",text:{none:\"无数据\",searchNone:\"无匹配数据\"}},x.prototype.reload=function(e){var t=this;layui.each(e,function(e,a){a.constructor===Array&&delete t.config[e]}),t.config=a.extend(!0,{},t.config,e),t.render()},x.prototype.render=function(){var e=this,n=e.config,i=e.elem=a(t(v).render({data:n,index:e.index})),l=n.elem=a(n.elem);l[0]&&(n.data=n.data||[],n.value=n.value||[],e.key=n.id||e.index,l.html(e.elem),e.layBox=e.elem.find(\".\"+s),e.layHeader=e.elem.find(\".\"+u),e.laySearch=e.elem.find(\".\"+h),e.layData=i.find(\".\"+y),e.layBtn=i.find(\".\"+f+\" .layui-btn\"),e.layBox.css({width:n.width,height:n.height}),e.layData.css({height:function(){return n.height-e.layHeader.outerHeight()-e.laySearch.outerHeight()-2}()}),e.renderData(),e.events())},x.prototype.renderData=function(){var e=this,a=(e.config,[{checkName:\"layTransferLeftCheck\",views:[]},{checkName:\"layTransferRightCheck\",views:[]}]);e.parseData(function(e){var t=e.selected?1:0,n=[\"<li>\",'<input type=\"checkbox\" name=\"'+a[t].checkName+'\" lay-skin=\"primary\" lay-filter=\"layTransferCheckbox\" title=\"'+e.title+'\"'+(e.disabled?\" disabled\":\"\")+(e.checked?\" checked\":\"\")+' value=\"'+e.value+'\">',\"</li>\"].join(\"\");a[t].views.push(n),delete e.selected}),e.layData.eq(0).html(a[0].views.join(\"\")),e.layData.eq(1).html(a[1].views.join(\"\")),e.renderCheckBtn()},x.prototype.renderForm=function(e){n.render(e,\"LAY-transfer-\"+this.index)},x.prototype.renderCheckBtn=function(e){var t=this,n=t.config;e=e||{},t.layBox.each(function(i){var l=a(this),r=l.find(\".\"+y),d=l.find(\".\"+u).find('input[type=\"checkbox\"]'),s=r.find('input[type=\"checkbox\"]'),h=0,f=!1;if(s.each(function(){var e=a(this).data(\"hide\");(this.checked||this.disabled||e)&&h++,this.checked&&!e&&(f=!0)}),d.prop(\"checked\",f&&h===s.length),t.layBtn.eq(i)[f?\"removeClass\":\"addClass\"](o),!e.stopNone){var p=r.children(\"li:not(.\"+c+\")\").length;t.noneView(r,p?\"\":n.text.none)}}),t.renderForm(\"checkbox\")},x.prototype.noneView=function(e,t){var n=a('<p class=\"layui-none\">'+(t||\"\")+\"</p>\");e.find(\".\"+d)[0]&&e.find(\".\"+d).remove(),t.replace(/\\s/g,\"\")&&e.append(n)},x.prototype.setValue=function(){var e=this,t=e.config,n=[];return e.layBox.eq(1).find(\".\"+y+' input[type=\"checkbox\"]').each(function(){var e=a(this).data(\"hide\");e||n.push(this.value)}),t.value=n,e},x.prototype.parseData=function(e){var t=this,n=t.config,i=[];return layui.each(n.data,function(t,l){l=(\"function\"==typeof n.parseData?n.parseData(l):l)||l,i.push(l=a.extend({},l)),layui.each(n.value,function(e,a){a==l.value&&(l.selected=!0)}),e&&e(l)}),n.data=i,t},x.prototype.getData=function(e){var a=this,t=a.config,n=[];return a.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&n.push(t)})}),n},x.prototype.events=function(){var e=this,t=e.config;e.elem.on(\"click\",'input[lay-filter=\"layTransferCheckbox\"]+',function(){var t=a(this).prev(),n=t[0].checked,i=t.parents(\".\"+s).eq(0).find(\".\"+y);t[0].disabled||(\"all\"===t.attr(\"lay-type\")&&i.find('input[type=\"checkbox\"]').each(function(){this.disabled||(this.checked=n)}),e.renderCheckBtn({stopNone:!0}))}),e.layBtn.on(\"click\",function(){var n=a(this),i=n.data(\"index\"),l=e.layBox.eq(i),r=[];if(!n.hasClass(o)){e.layBox.eq(i).each(function(t){var n=a(this),i=n.find(\".\"+y);i.children(\"li\").each(function(){var t=a(this),n=t.find('input[type=\"checkbox\"]'),i=n.data(\"hide\");n[0].checked&&!i&&(n[0].checked=!1,l.siblings(\".\"+s).find(\".\"+y).append(t.clone()),t.remove(),r.push(n[0].value)),e.setValue()})}),e.renderCheckBtn();var c=l.siblings(\".\"+s).find(\".\"+h+\" input\");\"\"===c.val()||c.trigger(\"keyup\"),t.onchange&&t.onchange(e.getData(r),i)}}),e.laySearch.find(\"input\").on(\"keyup\",function(){var n=this.value,i=a(this).parents(\".\"+h).eq(0).siblings(\".\"+y),l=i.children(\"li\");l.each(function(){var e=a(this),t=e.find('input[type=\"checkbox\"]'),i=t[0].title.indexOf(n)!==-1;e[i?\"removeClass\":\"addClass\"](c),t.data(\"hide\",!i)}),e.renderCheckBtn();var r=l.length===i.children(\"li.\"+c).length;e.noneView(i,r?t.text.searchNone:\"\")})},r.that={},r.config={},l.reload=function(e,a){var t=r.that[e];return t.reload(a),r.call(t)},l.getData=function(e){var a=r.that[e];return a.getData()},l.render=function(e){var a=new x(e);return r.call(a)},e(i,l)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/tree.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(\"form\",function(e){\"use strict\";var i=layui.$,a=layui.form,n=layui.layer,t=\"tree\",r={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var a=this;return a.config=i.extend({},a.config,e),a},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var e=this,i=e.config,a=i.id||e.index;return l.that[a]=e,l.config[a]=i,{config:i,reload:function(i){e.reload.call(e,i)},getChecked:function(){return e.getChecked.call(e)},setChecked:function(i){return e.setChecked.call(e,i)}}},c=\"layui-hide\",d=\"layui-disabled\",s=\"layui-tree-set\",o=\"layui-tree-iconClick\",h=\"layui-icon-addition\",u=\"layui-icon-subtraction\",p=\"layui-tree-entry\",f=\"layui-tree-main\",y=\"layui-tree-txt\",v=\"layui-tree-pack\",C=\"layui-tree-spread\",k=\"layui-tree-setLineShort\",m=\"layui-tree-showLine\",x=\"layui-tree-lineExtend\",b=function(e){var a=this;a.index=++r.index,a.config=i.extend({},a.config,r.config,e),a.render()};b.prototype.config={data:[],showCheckbox:!1,showLine:!0,accordion:!1,onlyIconControl:!1,isJump:!1,edit:!1,text:{defaultNodeName:\"未命名\",none:\"无数据\"}},b.prototype.reload=function(e){var a=this;layui.each(e,function(e,i){i.constructor===Array&&delete a.config[e]}),a.config=i.extend(!0,{},a.config,e),a.render()},b.prototype.render=function(){var e=this,a=e.config;e.checkids=[];var n=i('<div class=\"layui-tree'+(a.showCheckbox?\" layui-form\":\"\")+(a.showLine?\" layui-tree-line\":\"\")+'\" lay-filter=\"LAY-tree-'+e.index+'\"></div>');e.tree(n);var t=a.elem=i(a.elem);if(t[0]){if(e.key=a.id||e.index,e.elem=n,e.elemNone=i('<div class=\"layui-tree-emptyText\">'+a.text.none+\"</div>\"),t.html(e.elem),0==e.elem.find(\".layui-tree-set\").length)return e.elem.append(e.elemNone);a.showCheckbox&&e.renderForm(\"checkbox\"),e.elem.find(\".layui-tree-set\").each(function(){var e=i(this);e.parent(\".layui-tree-pack\")[0]||e.addClass(\"layui-tree-setHide\"),!e.next()[0]&&e.parents(\".layui-tree-pack\").eq(1).hasClass(\"layui-tree-lineExtend\")&&e.addClass(k),e.next()[0]||e.parents(\".layui-tree-set\").eq(0).next()[0]||e.addClass(k)}),e.events()}},b.prototype.renderForm=function(e){a.render(e,\"LAY-tree-\"+this.index)},b.prototype.tree=function(e,a){var n=this,t=n.config,r=a||t.data;layui.each(r,function(a,r){var l=r.children&&r.children.length>0,o=i('<div class=\"layui-tree-pack\" '+(r.spread?'style=\"display: block;\"':\"\")+'\"></div>'),h=i(['<div data-id=\"'+r.id+'\" class=\"layui-tree-set'+(r.spread?\" layui-tree-spread\":\"\")+(r.checked?\" layui-tree-checkedFirst\":\"\")+'\">','<div class=\"layui-tree-entry\">','<div class=\"layui-tree-main\">',function(){return t.showLine?l?'<span class=\"layui-tree-iconClick layui-tree-icon\"><i class=\"layui-icon '+(r.spread?\"layui-icon-subtraction\":\"layui-icon-addition\")+'\"></i></span>':'<span class=\"layui-tree-iconClick\"><i class=\"layui-icon layui-icon-file\"></i></span>':'<span class=\"layui-tree-iconClick\"><i class=\"layui-tree-iconArrow '+(l?\"\":c)+'\"></i></span>'}(),function(){return t.showCheckbox?'<input type=\"checkbox\" name=\"'+(r.field||\"layuiTreeCheck_\"+r.id)+'\" same=\"layuiTreeCheck\" lay-skin=\"primary\" '+(r.disabled?\"disabled\":\"\")+' value=\"'+r.id+'\">':\"\"}(),function(){return t.isJump&&r.href?'<a href=\"'+r.href+'\" target=\"_blank\" class=\"'+y+'\">'+(r.title||r.label||t.text.defaultNodeName)+\"</a>\":'<span class=\"'+y+(r.disabled?\" \"+d:\"\")+'\">'+(r.title||r.label||t.text.defaultNodeName)+\"</span>\"}(),\"</div>\",function(){if(!t.edit)return\"\";var e={add:'<i class=\"layui-icon layui-icon-add-1\"  data-type=\"add\"></i>',update:'<i class=\"layui-icon layui-icon-edit\" data-type=\"update\"></i>',del:'<i class=\"layui-icon layui-icon-delete\" data-type=\"del\"></i>'},i=['<div class=\"layui-btn-group layui-tree-btnGroup\">'];return t.edit===!0&&(t.edit=[\"update\",\"del\"]),\"object\"==typeof t.edit?(layui.each(t.edit,function(a,n){i.push(e[n]||\"\")}),i.join(\"\")+\"</div>\"):void 0}(),\"</div></div>\"].join(\"\"));l&&(h.append(o),n.tree(o,r.children)),e.append(h),h.prev(\".\"+s)[0]&&h.prev().children(\".layui-tree-pack\").addClass(\"layui-tree-showLine\"),l||h.parent(\".layui-tree-pack\").addClass(\"layui-tree-lineExtend\"),n.spread(h,r),t.showCheckbox&&(r.checked&&n.checkids.push(r.id),n.checkClick(h,r)),t.edit&&n.operate(h,r)})},b.prototype.spread=function(e,a){var n=this,t=n.config,r=e.children(\".\"+p),l=r.children(\".\"+f),c=r.find(\".\"+o),k=r.find(\".\"+y),m=t.onlyIconControl?c:l,x=\"\";m.on(\"click\",function(i){var a=e.children(\".\"+v),n=m.children(\".layui-icon\")[0]?m.children(\".layui-icon\"):m.find(\".layui-tree-icon\").children(\".layui-icon\");if(a[0]){if(e.hasClass(C))e.removeClass(C),a.slideUp(200),n.removeClass(u).addClass(h);else if(e.addClass(C),a.slideDown(200),n.addClass(u).removeClass(h),t.accordion){var r=e.siblings(\".\"+s);r.removeClass(C),r.children(\".\"+v).slideUp(200),r.find(\".layui-tree-icon\").children(\".layui-icon\").removeClass(u).addClass(h)}}else x=\"normal\"}),k.on(\"click\",function(){var n=i(this);n.hasClass(d)||(x=e.hasClass(C)?t.onlyIconControl?\"open\":\"close\":t.onlyIconControl?\"close\":\"open\",t.click&&t.click({elem:e,state:x,data:a}))})},b.prototype.setCheckbox=function(e,i,a){var n=this,t=(n.config,a.prop(\"checked\"));if(!a.prop(\"disabled\")){if(\"object\"==typeof i.children||e.find(\".\"+v)[0]){var r=e.find(\".\"+v).find('input[same=\"layuiTreeCheck\"]');r.each(function(){this.disabled||(this.checked=t)})}var l=function(e){if(e.parents(\".\"+s)[0]){var i,a=e.parent(\".\"+v),n=a.parent(),r=a.prev().find('input[same=\"layuiTreeCheck\"]');t?r.prop(\"checked\",t):(a.find('input[same=\"layuiTreeCheck\"]').each(function(){this.checked&&(i=!0)}),i||r.prop(\"checked\",!1)),l(n)}};l(e),n.renderForm(\"checkbox\")}},b.prototype.checkClick=function(e,a){var n=this,t=n.config,r=e.children(\".\"+p),l=r.children(\".\"+f);l.on(\"click\",'input[same=\"layuiTreeCheck\"]+',function(r){layui.stope(r);var l=i(this).prev(),c=l.prop(\"checked\");l.prop(\"disabled\")||(n.setCheckbox(e,a,l),t.oncheck&&t.oncheck({elem:e,checked:c,data:a}))})},b.prototype.operate=function(e,a){var t=this,r=t.config,l=e.children(\".\"+p),d=l.children(\".\"+f);l.children(\".layui-tree-btnGroup\").on(\"click\",\".layui-icon\",function(l){layui.stope(l);var f=i(this).data(\"type\"),b=e.children(\".\"+v),g={data:a,type:f,elem:e};if(\"add\"==f){b[0]||(r.showLine?(d.find(\".\"+o).addClass(\"layui-tree-icon\"),d.find(\".\"+o).children(\".layui-icon\").addClass(h).removeClass(\"layui-icon-file\")):d.find(\".layui-tree-iconArrow\").removeClass(c),e.append('<div class=\"layui-tree-pack\"></div>'));var w=r.operate&&r.operate(g),N={};if(N.title=r.text.defaultNodeName,N.id=w,t.tree(e.children(\".\"+v),[N]),r.showLine)if(b[0])b.hasClass(x)||b.addClass(x),e.find(\".\"+v).each(function(){i(this).children(\".\"+s).last().addClass(k)}),b.children(\".\"+s).last().prev().hasClass(k)?b.children(\".\"+s).last().prev().removeClass(k):b.children(\".\"+s).last().removeClass(k),!e.parent(\".\"+v)[0]&&e.next()[0]&&b.children(\".\"+s).last().removeClass(k);else{var T=e.siblings(\".\"+s),L=1,A=e.parent(\".\"+v);layui.each(T,function(e,a){i(a).children(\".\"+v)[0]||(L=0)}),1==L?(T.children(\".\"+v).addClass(m),T.children(\".\"+v).children(\".\"+s).removeClass(k),e.children(\".\"+v).addClass(m),A.removeClass(x),A.children(\".\"+s).last().children(\".\"+v).children(\".\"+s).last().addClass(k)):e.children(\".\"+v).children(\".\"+s).addClass(k)}if(!r.showCheckbox)return;if(d.find('input[same=\"layuiTreeCheck\"]')[0].checked){var I=e.children(\".\"+v).children(\".\"+s).last();I.find('input[same=\"layuiTreeCheck\"]')[0].checked=!0}t.renderForm(\"checkbox\")}else if(\"update\"==f){var F=d.children(\".\"+y).html();d.children(\".\"+y).html(\"\"),d.append('<input type=\"text\" class=\"layui-tree-editInput\">'),d.children(\".layui-tree-editInput\").val(F).focus();var j=function(e){var i=e.val().trim();i=i?i:r.text.defaultNodeName,e.remove(),d.children(\".\"+y).html(i),g.data.title=i,r.operate&&r.operate(g)};d.children(\".layui-tree-editInput\").blur(function(){j(i(this))}),d.children(\".layui-tree-editInput\").on(\"keydown\",function(e){13===e.keyCode&&(e.preventDefault(),j(i(this)))})}else n.confirm('确认删除该节点 \"<span style=\"color: #999;\">'+(a.title||\"\")+'</span>\" 吗？',function(a){if(r.operate&&r.operate(g),g.status=\"remove\",n.close(a),!e.prev(\".\"+s)[0]&&!e.next(\".\"+s)[0]&&!e.parent(\".\"+v)[0])return e.remove(),void t.elem.append(t.elemNone);if(e.siblings(\".\"+s).children(\".\"+p)[0]){if(r.showCheckbox){var l=function(e){if(e.parents(\".\"+s)[0]){var a=e.siblings(\".\"+s).children(\".\"+p),n=e.parent(\".\"+v).prev(),r=n.find('input[same=\"layuiTreeCheck\"]')[0],c=1,d=0;0==r.checked&&(a.each(function(e,a){var n=i(a).find('input[same=\"layuiTreeCheck\"]')[0];0!=n.checked||n.disabled||(c=0),n.disabled||(d=1)}),1==c&&1==d&&(r.checked=!0,t.renderForm(\"checkbox\"),l(n.parent(\".\"+s))))}};l(e)}if(r.showLine){var d=e.siblings(\".\"+s),h=1,f=e.parent(\".\"+v);layui.each(d,function(e,a){i(a).children(\".\"+v)[0]||(h=0)}),1==h?(b[0]||(f.removeClass(x),d.children(\".\"+v).addClass(m),d.children(\".\"+v).children(\".\"+s).removeClass(k)),e.next()[0]?f.children(\".\"+s).last().children(\".\"+v).children(\".\"+s).last().addClass(k):e.prev().children(\".\"+v).children(\".\"+s).last().addClass(k),e.next()[0]||e.parents(\".\"+s)[1]||e.parents(\".\"+s).eq(0).next()[0]||e.prev(\".\"+s).addClass(k)):!e.next()[0]&&e.hasClass(k)&&e.prev().addClass(k)}}else{var y=e.parent(\".\"+v).prev();if(r.showLine){y.find(\".\"+o).removeClass(\"layui-tree-icon\"),y.find(\".\"+o).children(\".layui-icon\").removeClass(u).addClass(\"layui-icon-file\");var w=y.parents(\".\"+v).eq(0);w.addClass(x),w.children(\".\"+s).each(function(){i(this).children(\".\"+v).children(\".\"+s).last().addClass(k)})}else y.find(\".layui-tree-iconArrow\").addClass(c);e.parents(\".\"+s).eq(0).removeClass(C),e.parent(\".\"+v).remove()}e.remove()})})},b.prototype.events=function(){var e=this,a=e.config;e.elem.find(\".layui-tree-checkedFirst\");e.setChecked(e.checkids),e.elem.find(\".layui-tree-search\").on(\"keyup\",function(){var n=i(this),t=n.val(),r=n.nextAll(),l=[];r.find(\".\"+y).each(function(){var e=i(this).parents(\".\"+p);if(i(this).html().indexOf(t)!=-1){l.push(i(this).parent());var a=function(e){e.addClass(\"layui-tree-searchShow\"),e.parent(\".\"+v)[0]&&a(e.parent(\".\"+v).parent(\".\"+s))};a(e.parent(\".\"+s))}}),r.find(\".\"+p).each(function(){var e=i(this).parent(\".\"+s);e.hasClass(\"layui-tree-searchShow\")||e.addClass(c)}),0==r.find(\".layui-tree-searchShow\").length&&e.elem.append(e.elemNone),a.onsearch&&a.onsearch({elem:l})}),e.elem.find(\".layui-tree-search\").on(\"keydown\",function(){i(this).nextAll().find(\".\"+p).each(function(){var e=i(this).parent(\".\"+s);e.removeClass(\"layui-tree-searchShow \"+c)}),i(\".layui-tree-emptyText\")[0]&&i(\".layui-tree-emptyText\").remove()})},b.prototype.getChecked=function(){var e=this,a=e.config,n=[],t=[];e.elem.find(\".layui-form-checked\").each(function(){n.push(i(this).prev()[0].value)});var r=function(e,a){layui.each(e,function(e,t){layui.each(n,function(e,n){if(t.id==n){var l=i.extend({},t);return delete l.children,a.push(l),t.children&&(l.children=[],r(t.children,l.children)),!0}})})};return r(i.extend({},a.data),t),t},b.prototype.setChecked=function(e){var a=this;a.config;a.elem.find(\".\"+s).each(function(a,n){var t=i(this).data(\"id\"),r=i(n).children(\".\"+p).find('input[same=\"layuiTreeCheck\"]'),l=r.next();if(\"number\"==typeof e){if(t==e)return r[0].checked||l.click(),!1}else\"object\"==typeof e&&layui.each(e,function(e,i){if(i==t&&!r[0].checked)return l.click(),!0})})},l.that={},l.config={},r.reload=function(e,i){var a=l.that[e];return a.reload(i),l.call(a)},r.getChecked=function(e){var i=l.that[e];return i.getChecked()},r.setChecked=function(e,i){var a=l.that[e];return a.setChecked(i)},r.render=function(e){var i=new b(e);return l.call(i)},e(t,r)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/upload.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(\"layer\",function(e){\"use strict\";var t=layui.$,i=layui.layer,n=layui.hint(),o=layui.device(),a={config:{},set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,r,e,t)}},l=function(){var e=this;return{upload:function(t){e.upload.call(e,t)},reload:function(t){e.reload.call(e,t)},config:e.config}},r=\"upload\",u=\"layui-upload-file\",c=\"layui-upload-form\",f=\"layui-upload-iframe\",s=\"layui-upload-choose\",p=function(e){var i=this;i.config=t.extend({},i.config,a.config,e),i.render()};p.prototype.config={accept:\"images\",exts:\"\",auto:!0,bindAction:\"\",url:\"\",field:\"file\",acceptMime:\"\",method:\"post\",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var i=this,e=i.config;e.elem=t(e.elem),e.bindAction=t(e.bindAction),i.file(),i.events()},p.prototype.file=function(){var e=this,i=e.config,n=e.elemFile=t(['<input class=\"'+u+'\" type=\"file\" accept=\"'+i.acceptMime+'\" name=\"'+i.field+'\"',i.multiple?\" multiple\":\"\",\">\"].join(\"\")),a=i.elem.next();(a.hasClass(u)||a.hasClass(c))&&a.remove(),o.ie&&o.ie<10&&i.elem.wrap('<div class=\"layui-upload-wrap\"></div>'),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(n),o.ie&&o.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,i=e.config,n=t('<iframe id=\"'+f+'\" class=\"'+f+'\" name=\"'+f+'\" frameborder=\"0\"></iframe>'),o=t(['<form target=\"'+f+'\" class=\"'+c+'\" method=\"post\" key=\"set-mine\" enctype=\"multipart/form-data\" action=\"'+i.url+'\">',\"</form>\"].join(\"\"));t(\"#\"+f)[0]||t(\"body\").append(n),i.elem.next().hasClass(c)||(e.elemFile.wrap(o),i.elem.next(\".\"+c).append(function(){var e=[];return layui.each(i.data,function(t,i){i=\"function\"==typeof i?i():i,e.push('<input type=\"hidden\" name=\"'+t+'\" value=\"'+i+'\">')}),e.join(\"\")}()))},p.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return\"input\"===e.tagName.toLocaleLowerCase()&&\"file\"===e.type},p.prototype.preview=function(e){var t=this;window.FileReader&&layui.each(t.chooseFiles,function(t,i){var n=new FileReader;n.readAsDataURL(i),n.onload=function(){e&&e(t,i,this.result)}})},p.prototype.upload=function(e,i){var n,a=this,l=a.config,r=a.elemFile[0],u=function(){var i=0,n=0,o=e||a.files||a.chooseFiles||r.files,u=function(){l.multiple&&i+n===a.fileLength&&\"function\"==typeof l.allDone&&l.allDone({total:a.fileLength,successful:i,aborted:n})};layui.each(o,function(e,o){var r=new FormData;r.append(l.field,o),layui.each(l.data,function(e,t){t=\"function\"==typeof t?t():t,r.append(e,t)});var c={url:l.url,type:\"post\",data:r,contentType:!1,processData:!1,dataType:\"json\",headers:l.headers||{},success:function(t){i++,d(e,t),u()},error:function(){n++,a.msg(\"请求上传接口出现异常\"),m(e),u()}};\"function\"==typeof l.progress&&(c.xhr=function(){var e=t.ajaxSettings.xhr();return e.upload.addEventListener(\"progress\",function(e){if(e.lengthComputable){var t=Math.floor(e.loaded/e.total*100);l.progress(t,l.item[0],e)}}),e}),t.ajax(c)})},c=function(){var e=t(\"#\"+f);a.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var t,i=e.contents().find(\"body\");try{t=i.text()}catch(n){a.msg(\"获取上传后的响应信息出现异常\"),clearInterval(p.timer),m()}t&&(clearInterval(p.timer),i.html(\"\"),d(0,t))},30)},d=function(e,t){if(a.elemFile.next(\".\"+s).remove(),r.value=\"\",\"object\"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},a.msg(\"请对上传接口返回有效JSON\")}\"function\"==typeof l.done&&l.done(t,e||0,function(e){a.upload(e)})},m=function(e){l.auto&&(r.value=\"\"),\"function\"==typeof l.error&&l.error(e||0,function(e){a.upload(e)})},h=l.exts,v=function(){var t=[];return layui.each(e||a.chooseFiles,function(e,i){t.push(i.name)}),t}(),g={preview:function(e){a.preview(e)},upload:function(e,t){var i={};i[e]=t,a.upload(i)},pushFile:function(){return a.files=a.files||{},layui.each(a.chooseFiles,function(e,t){a.files[e]=t}),a.files},resetFile:function(e,t,i){var n=new File([t],i);a.files=a.files||{},a.files[e]=n}},y=function(){if(\"choose\"!==i&&!l.auto||(l.choose&&l.choose(g),\"choose\"!==i))return l.before&&l.before(g),o.ie?o.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\\/\\\\]+\\..+/g)||[]||\"\":v,0!==v.length){switch(l.accept){case\"file\":if(h&&!RegExp(\"\\\\w\\\\.(\"+h+\")$\",\"i\").test(escape(v)))return a.msg(\"选择的文件中包含不支持的格式\"),r.value=\"\";break;case\"video\":if(!RegExp(\"\\\\w\\\\.(\"+(h||\"avi|mp4|wma|rmvb|rm|flash|3gp|flv\")+\")$\",\"i\").test(escape(v)))return a.msg(\"选择的视频中包含不支持的格式\"),r.value=\"\";break;case\"audio\":if(!RegExp(\"\\\\w\\\\.(\"+(h||\"mp3|wav|mid\")+\")$\",\"i\").test(escape(v)))return a.msg(\"选择的音频中包含不支持的格式\"),r.value=\"\";break;default:if(layui.each(v,function(e,t){RegExp(\"\\\\w\\\\.(\"+(h||\"jpg|png|gif|bmp|jpeg$\")+\")\",\"i\").test(escape(t))||(n=!0)}),n)return a.msg(\"选择的图片中包含不支持的格式\"),r.value=\"\"}if(a.fileLength=function(){var t=0,i=e||a.files||a.chooseFiles||r.files;return layui.each(i,function(){t++}),t}(),l.number&&a.fileLength>l.number)return a.msg(\"同时最多只能上传的数量为：\"+l.number);if(l.size>0&&!(o.ie&&o.ie<10)){var F;if(layui.each(a.chooseFiles,function(e,t){if(t.size>1024*l.size){var i=l.size/1024;i=i>=1?i.toFixed(2)+\"MB\":l.size+\"KB\",r.value=\"\",F=i}}),F)return a.msg(\"文件不能超过\"+F)}y()}},p.prototype.reload=function(e){e=e||{},delete e.elem,delete e.bindAction;var i=this,e=i.config=t.extend({},i.config,a.config,e),n=e.elem.next();n.attr({name:e.name,accept:e.acceptMime,multiple:e.multiple})},p.prototype.events=function(){var e=this,i=e.config,a=function(t){e.chooseFiles={},layui.each(t,function(t,i){var n=(new Date).getTime();e.chooseFiles[n+\"-\"+t]=i})},l=function(t,n){var o=e.elemFile,a=t.length>1?t.length+\"个文件\":(t[0]||{}).name||o[0].value.match(/[^\\/\\\\]+\\..+/g)||[]||\"\";o.next().hasClass(s)&&o.next().remove(),e.upload(null,\"choose\"),e.isFile()||i.choose||o.after('<span class=\"layui-inline '+s+'\">'+a+\"</span>\")};i.elem.off(\"upload.start\").on(\"upload.start\",function(){var o=t(this),a=o.attr(\"lay-data\");if(a)try{a=new Function(\"return \"+a)(),e.config=t.extend({},i,a)}catch(l){n.error(\"Upload element property lay-data configuration item has a syntax error: \"+a)}e.config.item=o,e.elemFile[0].click()}),o.ie&&o.ie<10||i.elem.off(\"upload.over\").on(\"upload.over\",function(){var e=t(this);e.attr(\"lay-over\",\"\")}).off(\"upload.leave\").on(\"upload.leave\",function(){var e=t(this);e.removeAttr(\"lay-over\")}).off(\"upload.drop\").on(\"upload.drop\",function(n,o){var r=t(this),u=o.originalEvent.dataTransfer.files||[];r.removeAttr(\"lay-over\"),a(u),i.auto?e.upload(u):l(u)}),e.elemFile.off(\"upload.change\").on(\"upload.change\",function(){var t=this.files||[];a(t),i.auto?e.upload():l(t)}),i.bindAction.off(\"upload.action\").on(\"upload.action\",function(){e.upload()}),i.elem.data(\"haveEvents\")||(e.elemFile.on(\"change\",function(){t(this).trigger(\"upload.change\")}),i.elem.on(\"click\",function(){e.isFile()||t(this).trigger(\"upload.start\")}),i.drag&&i.elem.on(\"dragover\",function(e){e.preventDefault(),t(this).trigger(\"upload.over\")}).on(\"dragleave\",function(e){t(this).trigger(\"upload.leave\")}).on(\"drop\",function(e){e.preventDefault(),t(this).trigger(\"upload.drop\",e)}),i.bindAction.on(\"click\",function(){t(this).trigger(\"upload.action\")}),i.elem.data(\"haveEvents\",!0))},a.render=function(e){var t=new p(e);return l.call(t)},e(r,a)});"
  },
  {
    "path": "public/assets/luna/layui/lay/modules/util.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;layui.define(\"jquery\",function(e){\"use strict\";var t=layui.$,i={fixbar:function(e){var i,n,a=\"layui-fixbar\",o=\"layui-fixbar-top\",r=t(document),l=t(\"body\");e=t.extend({showHeight:200},e),e.bar1=e.bar1===!0?\"&#xe606;\":e.bar1,e.bar2=e.bar2===!0?\"&#xe607;\":e.bar2,e.bgcolor=e.bgcolor?\"background-color:\"+e.bgcolor:\"\";var c=[e.bar1,e.bar2,\"&#xe604;\"],u=t(['<ul class=\"'+a+'\">',e.bar1?'<li class=\"layui-icon\" lay-type=\"bar1\" style=\"'+e.bgcolor+'\">'+c[0]+\"</li>\":\"\",e.bar2?'<li class=\"layui-icon\" lay-type=\"bar2\" style=\"'+e.bgcolor+'\">'+c[1]+\"</li>\":\"\",'<li class=\"layui-icon '+o+'\" lay-type=\"top\" style=\"'+e.bgcolor+'\">'+c[2]+\"</li>\",\"</ul>\"].join(\"\")),g=u.find(\".\"+o),s=function(){var t=r.scrollTop();t>=e.showHeight?i||(g.show(),i=1):i&&(g.hide(),i=0)};t(\".\"+a)[0]||(\"object\"==typeof e.css&&u.css(e.css),l.append(u),s(),u.find(\"li\").on(\"click\",function(){var i=t(this),n=i.attr(\"lay-type\");\"top\"===n&&t(\"html,body\").animate({scrollTop:0},200),e.click&&e.click.call(this,n)}),r.on(\"scroll\",function(){clearTimeout(n),n=setTimeout(function(){s()},100)}))},countdown:function(e,t,i){var n=this,a=\"function\"==typeof t,o=new Date(e).getTime(),r=new Date(!t||a?(new Date).getTime():t).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];a&&(i=t);var u=setTimeout(function(){n.countdown(e,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],t,u),l<=0&&clearTimeout(u),u},timeAgo:function(e,t){var i=this,n=[[],[]],a=(new Date).getTime()-new Date(e).getTime();return a>26784e5?(a=new Date(e),n[0][0]=i.digit(a.getFullYear(),4),n[0][1]=i.digit(a.getMonth()+1),n[0][2]=i.digit(a.getDate()),t||(n[1][0]=i.digit(a.getHours()),n[1][1]=i.digit(a.getMinutes()),n[1][2]=i.digit(a.getSeconds())),n[0].join(\"-\")+\" \"+n[1].join(\":\")):a>=864e5?(a/1e3/60/60/24|0)+\"天前\":a>=36e5?(a/1e3/60/60|0)+\"小时前\":a>=18e4?(a/1e3/60|0)+\"分钟前\":a<0?\"未来\":\"刚刚\"},digit:function(e,t){var i=\"\";e=String(e),t=t||2;for(var n=e.length;n<t;n++)i+=\"0\";return e<Math.pow(10,t)?i+(0|e):e},toDateString:function(e,t){var i=this,n=new Date(e||new Date),a=[i.digit(n.getFullYear(),4),i.digit(n.getMonth()+1),i.digit(n.getDate())],o=[i.digit(n.getHours()),i.digit(n.getMinutes()),i.digit(n.getSeconds())];return t=t||\"yyyy-MM-dd HH:mm:ss\",t.replace(/yyyy/g,a[0]).replace(/MM/g,a[1]).replace(/dd/g,a[2]).replace(/HH/g,o[0]).replace(/mm/g,o[1]).replace(/ss/g,o[2])},escape:function(e){return String(e||\"\").replace(/&(?!#?[a-zA-Z0-9]+;)/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/'/g,\"&#39;\").replace(/\"/g,\"&quot;\")},event:function(e,n,a){var o=t(\"body\");return a=a||\"click\",n=i.event[e]=t.extend(!0,i.event[e],n)||{},i.event.UTIL_EVENT_CALLBACK=i.event.UTIL_EVENT_CALLBACK||{},o.off(a,\"*[\"+e+\"]\",i.event.UTIL_EVENT_CALLBACK[e]),i.event.UTIL_EVENT_CALLBACK[e]=function(){var i=t(this),a=i.attr(e);\"function\"==typeof n[a]&&n[a].call(this,i)},o.on(a,\"*[\"+e+\"]\",i.event.UTIL_EVENT_CALLBACK[e]),n}};!function(e,t,i){\"$:nomunge\";function n(){a=t[l](function(){o.each(function(){var t=e(this),i=t.width(),n=t.height(),a=e.data(this,u);(i!==a.w||n!==a.h)&&t.trigger(c,[a.w=i,a.h=n])}),n()},r[g])}var a,o=e([]),r=e.resize=e.extend(e.resize,{}),l=\"setTimeout\",c=\"resize\",u=c+\"-special-event\",g=\"delay\",s=\"throttleWindow\";r[g]=250,r[s]=!0,e.event.special[c]={setup:function(){if(!r[s]&&this[l])return!1;var t=e(this);o=o.add(t),e.data(this,u,{w:t.width(),h:t.height()}),1===o.length&&n()},teardown:function(){if(!r[s]&&this[l])return!1;var t=e(this);o=o.not(t),t.removeData(u),o.length||clearTimeout(a)},add:function(t){function n(t,n,o){var r=e(this),l=e.data(this,u)||{};l.w=n!==i?n:r.width(),l.h=o!==i?o:r.height(),a.apply(this,arguments)}if(!r[s]&&this[l])return!1;var a;return e.isFunction(t)?(a=t,n):(a=t.handler,void(t.handler=n))}}}(t,window),e(\"util\",i)});"
  },
  {
    "path": "public/assets/luna/layui/layui.js",
    "content": "/** layui-v2.5.6 MIT License By https://www.layui.com */\n ;!function(e){\"use strict\";var t=document,n={modules:{},status:{},timeout:10,event:{}},r=function(){this.v=\"2.5.6\"},o=function(){var e=t.currentScript?t.currentScript.src:function(){for(var e,n=t.scripts,r=n.length-1,o=r;o>0;o--)if(\"interactive\"===n[o].readyState){e=n[o].src;break}return e||n[r].src}();return e.substring(0,e.lastIndexOf(\"/\")+1)}(),a=function(t){e.console&&console.error&&console.error(\"Layui hint: \"+t)},i=\"undefined\"!=typeof opera&&\"[object Opera]\"===opera.toString(),u={layer:\"modules/layer\",laydate:\"modules/laydate\",laypage:\"modules/laypage\",laytpl:\"modules/laytpl\",layim:\"modules/layim\",layedit:\"modules/layedit\",form:\"modules/form\",upload:\"modules/upload\",transfer:\"modules/transfer\",tree:\"modules/tree\",table:\"modules/table\",element:\"modules/element\",rate:\"modules/rate\",colorpicker:\"modules/colorpicker\",slider:\"modules/slider\",carousel:\"modules/carousel\",flow:\"modules/flow\",util:\"modules/util\",code:\"modules/code\",jquery:\"modules/jquery\",mobile:\"modules/mobile\",\"layui.all\":\"../layui.all\"};r.prototype.cache=n,r.prototype.define=function(e,t){var r=this,o=\"function\"==typeof e,a=function(){var e=function(e,t){layui[e]=t,n.status[e]=!0};return\"function\"==typeof t&&t(function(r,o){e(r,o),n.callback[r]=function(){t(e)}}),this};return o&&(t=e,e=[]),!layui[\"layui.all\"]&&layui[\"layui.mobile\"]?a.call(r):(r.use(e,a),r)},r.prototype.use=function(e,r,l){function c(e,t){var r=\"PLaySTATION 3\"===navigator.platform?/^complete$/:/^(complete|loaded)$/;(\"load\"===e.type||r.test((e.currentTarget||e.srcElement).readyState))&&(n.modules[d]=t,y.removeChild(h),function o(){return++m>1e3*n.timeout/4?a(d+\" is not a valid module\"):void(n.status[d]?s():setTimeout(o,4))}())}function s(){l.push(layui[d]),e.length>1?p.use(e.slice(1),r,l):\"function\"==typeof r&&r.apply(layui,l)}var p=this,f=n.dir=n.dir?n.dir:o,y=t.getElementsByTagName(\"head\")[0];e=\"string\"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(p.each(e,function(t,n){\"jquery\"===n&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var d=e[0],m=0;if(l=l||[],n.host=n.host||(f.match(/\\/\\/([\\s\\S]+?)\\//)||[\"//\"+location.host+\"/\"])[0],0===e.length||layui[\"layui.all\"]&&u[d]||!layui[\"layui.all\"]&&layui[\"layui.mobile\"]&&u[d])return s(),p;var v=(u[d]?f+\"lay/\":/^\\{\\/\\}/.test(p.modules[d])?\"\":n.base||\"\")+(p.modules[d]||d)+\".js\";if(v=v.replace(/^\\{\\/\\}/,\"\"),!n.modules[d]&&layui[d]&&(n.modules[d]=v),n.modules[d])!function g(){return++m>1e3*n.timeout/4?a(d+\" is not a valid module\"):void(\"string\"==typeof n.modules[d]&&n.status[d]?s():setTimeout(g,4))}();else{var h=t.createElement(\"script\");h.async=!0,h.charset=\"utf-8\",h.src=v+function(){var e=n.version===!0?n.v||(new Date).getTime():n.version||\"\";return e?\"?v=\"+e:\"\"}(),y.appendChild(h),!h.attachEvent||h.attachEvent.toString&&h.attachEvent.toString().indexOf(\"[native code\")<0||i?h.addEventListener(\"load\",function(e){c(e,v)},!1):h.attachEvent(\"onreadystatechange\",function(e){c(e,v)}),n.modules[d]=v}return p},r.prototype.getStyle=function(t,n){var r=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return r[r.getPropertyValue?\"getPropertyValue\":\"getAttribute\"](n)},r.prototype.link=function(e,r,o){var i=this,u=t.createElement(\"link\"),l=t.getElementsByTagName(\"head\")[0];\"string\"==typeof r&&(o=r);var c=(o||e).replace(/\\.|\\//g,\"\"),s=u.id=\"layuicss-\"+c,p=0;return u.rel=\"stylesheet\",u.href=e+(n.debug?\"?v=\"+(new Date).getTime():\"\"),u.media=\"all\",t.getElementById(s)||l.appendChild(u),\"function\"!=typeof r?i:(function f(){return++p>1e3*n.timeout/100?a(e+\" timeout\"):void(1989===parseInt(i.getStyle(t.getElementById(s),\"width\"))?function(){r()}():setTimeout(f,100))}(),i)},n.callback={},r.prototype.factory=function(e){if(layui[e])return\"function\"==typeof n.callback[e]?n.callback[e]:null},r.prototype.addcss=function(e,t,r){return layui.link(n.dir+\"css/\"+e,t,r)},r.prototype.img=function(e,t,n){var r=new Image;return r.src=e,r.complete?t(r):(r.onload=function(){r.onload=null,\"function\"==typeof t&&t(r)},void(r.onerror=function(e){r.onerror=null,\"function\"==typeof n&&n(e)}))},r.prototype.config=function(e){e=e||{};for(var t in e)n[t]=e[t];return this},r.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),r.prototype.extend=function(e){var t=this;e=e||{};for(var n in e)t[n]||t.modules[n]?a(\"模块名 \"+n+\" 已被占用\"):t.modules[n]=e[n];return t},r.prototype.router=function(e){var t=this,e=e||location.hash,n={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||\"\"};return/^#\\//.test(e)?(e=e.replace(/^#\\//,\"\"),n.href=\"/\"+e,e=e.replace(/([^#])(#.*$)/,\"$1\").split(\"/\")||[],t.each(e,function(e,t){/^\\w+=/.test(t)?function(){t=t.split(\"=\"),n.search[t[0]]=t[1]}():n.path.push(t)}),n):n},r.prototype.url=function(e){var t=this,n={pathname:function(){var t=e?function(){var t=(e.match(/\\.[^.]+?\\/.+/)||[])[0]||\"\";return t.replace(/^[^\\/]+/,\"\").replace(/\\?.+/,\"\")}():location.pathname;return t.replace(/^\\//,\"\").split(\"/\")}(),search:function(){var n={},r=(e?function(){var t=(e.match(/\\?.+/)||[])[0]||\"\";return t.replace(/\\#.+/,\"\")}():location.search).replace(/^\\?+/,\"\").split(\"&\");return t.each(r,function(e,t){var r=t.indexOf(\"=\"),o=function(){return r<0?t.substr(0,t.length):0!==r&&t.substr(0,r)}();o&&(n[o]=r>0?t.substr(r+1):null)}),n}(),hash:t.router(function(){return e?(e.match(/#.+/)||[])[0]||\"\":location.hash}())};return n},r.prototype.data=function(t,n,r){if(t=t||\"layui\",r=r||localStorage,e.JSON&&e.JSON.parse){if(null===n)return delete r[t];n=\"object\"==typeof n?n:{key:n};try{var o=JSON.parse(r[t])}catch(a){var o={}}return\"value\"in n&&(o[n.key]=n.value),n.remove&&delete o[n.key],r[t]=JSON.stringify(o),n.key?o[n.key]:o}},r.prototype.sessionData=function(e,t){return this.data(e,t,sessionStorage)},r.prototype.device=function(t){var n=navigator.userAgent.toLowerCase(),r=function(e){var t=new RegExp(e+\"/([^\\\\s\\\\_\\\\-]+)\");return e=(n.match(t)||[])[1],e||!1},o={os:function(){return/windows/.test(n)?\"windows\":/linux/.test(n)?\"linux\":/iphone|ipod|ipad|ios/.test(n)?\"ios\":/mac/.test(n)?\"mac\":void 0}(),ie:function(){return!!(e.ActiveXObject||\"ActiveXObject\"in e)&&((n.match(/msie\\s(\\d+)/)||[])[1]||\"11\")}(),weixin:r(\"micromessenger\")};return t&&!o[t]&&(o[t]=r(t)),o.android=/android/.test(n),o.ios=\"ios\"===o.os,o.mobile=!(!o.android&&!o.ios),o},r.prototype.hint=function(){return{error:a}},r.prototype.each=function(e,t){var n,r=this;if(\"function\"!=typeof t)return r;if(e=e||[],e.constructor===Object){for(n in e)if(t.call(e[n],n,e[n]))break}else for(n=0;n<e.length&&!t.call(e[n],n,e[n]);n++);return r},r.prototype.sort=function(e,t,n){var r=JSON.parse(JSON.stringify(e||[]));return t?(r.sort(function(e,n){var r=/^-?\\d+$/,o=e[t],a=n[t];return r.test(o)&&(o=parseFloat(o)),r.test(a)&&(a=parseFloat(a)),o&&!a?1:!o&&a?-1:o>a?1:o<a?-1:0}),n&&r.reverse(),r):r},r.prototype.stope=function(t){t=t||e.event;try{t.stopPropagation()}catch(n){t.cancelBubble=!0}},r.prototype.onevent=function(e,t,n){return\"string\"!=typeof e||\"function\"!=typeof n?this:r.event(e,t,null,n)},r.prototype.event=r.event=function(e,t,r,o){var a=this,i=null,u=t.match(/\\((.*)\\)$/)||[],l=(e+\".\"+t).replace(u[0],\"\"),c=u[1]||\"\",s=function(e,t){var n=t&&t.call(a,r);n===!1&&null===i&&(i=!1)};return o?(n.event[l]=n.event[l]||{},n.event[l][c]=[o],this):(layui.each(n.event[l],function(e,t){return\"{*}\"===c?void layui.each(t,s):(\"\"===e&&layui.each(t,s),void(c&&e===c&&layui.each(t,s)))}),i)},e.layui=new r}(window);"
  },
  {
    "path": "public/assets/luna/main.css",
    "content": ".background{\n    position:fixed;\n    top: 0;\n    left: 0;\n    width:100%;\n    height:100%;\n    min-width: 1000px;\n    z-index:-10;\n    zoom: 1;\n    background-color: #fff;\n    background: url(/assets/luna/img/background.png) no-repeat;\n    background-size: cover;\n    -webkit-background-size: cover;\n    -o-background-size: cover;\n    background-position: center 0;\n}\n\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n    -webkit-appearance: none;\n}\n\ninput[type=\"number\"] {\n    -moz-appearance: textfield;\n}\n\n.noML {\n    margin-left: initial !important;\n}\n\n.hide {\n    display: none;\n}\n\n.layui-tab-title .layui-this:after {\n    border-radius: 5px 5px 0 0;\n\n}\n\n.layui-tab-title .layui-this {\n    color: #737373;\n}\n\n.layui-tab-title li {\n    color: #737373;\n}\n\n\n/*极验*/\n.geetest_holder.geetest_wind {\n    display: inline-block;\n    vertical-align: middle;\n}\n\n.notSelection {\n    -moz-user-select: none; /*火狐*/\n    -webkit-user-select: none; /*webkit浏览器*/\n    -ms-user-select: none; /*IE10*/\n    -khtml-user-select: none; /*早期浏览器*/\n    user-select: none;\n    -webkit-touch-callout: none;\n    -webkit-user-select: none;\n    -khtml-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n}\n\n/*滚动条重置*/\n::-webkit-scrollbar {\n    width: 7px;\n    height: 7px;\n    background-color: #F5F5F5;\n}\n\n::-webkit-scrollbar-track {\n    background-color: #fff;\n    border-radius: 10px;\n}\n\n::-webkit-scrollbar-thumb { /*border-radius: 10px;*/\n    background-color: #AAA;\n}\n\n.layui-row {\n    margin: 0 10px;\n}\n\n.header .header-box {\n    padding-top: 15px;\n}\n\n.header .header-box img {\n    max-width: 150px;\n    max-height: 45px;\n}\n\n.header .header-box .info {\n    font-size: 16px;\n    font-weight: 700;\n    color: #545454;\n    display: inline-block;\n    margin-left: 10px;\n    vertical-align: middle;\n}\n\n.header .header-box .query {\n    display: inline-block;\n    float: right;\n}\n\n.header .header-box .query a {\n    color: #fff;\n    display: inline-block;\n    width: 119px;\n    line-height: 35px;\n    border-radius: 19px;\n    cursor: pointer;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    box-shadow: 0 5px 6px 0 rgba(73, 105, 230, .22);\n    background-image: linear-gradient(135deg, #3C8CE7 10%, #00EAFF 100%);\n}\n\n.header .header-box .query a svg {\n    margin-left: 18px;\n    margin-right: 5px;\n    vertical-align: middle;\n}\n\n.header .header-box .notice {\n    margin-top: 20px;\n    padding: 0 15px;\n}\n\n.header .header-box .notice .tit {\n    color: #545454;\n    font-size: 14px;\n    font-weight: 700;\n}\n\n.header .header-box .notice .tips {\n    margin-top: 5px;\n    color: #515a6e;\n    font-size: 12px;\n    line-height: 1.5;\n}\n\n\n/*主体*/\n.main .main-box {\n    margin-top: 20px;\n    background: #fff;\n    -webkit-box-shadow: 0 7px 29px 0 rgba(18, 52, 91, .11);\n    box-shadow: 0 7px 29px 0 rgba(18, 52, 91, .11);\n    border-radius: 6px;\n    padding-top: 14px;\n    padding-bottom: 20px;\n}\n\n.main-box:after { /*伪元素是行内元素 正常浏览器清除浮动方法*/\n    content: \"\";\n    display: block;\n    height: 0;\n    clear: both;\n    visibility: hidden;\n}\n\n.main .title, .main .cate, .main .goods {\n    margin: 0 20px;\n}\n\n.main .title {\n    font-size: 18px;\n    font-weight: 600;\n    color: #545454;\n}\n\n.main .title svg, .main .title img {\n    vertical-align: middle;\n}\n\n.main .cate {\n    padding-top: 20px;\n    margin: 0 10px;\n    font-size: 0;\n}\n\n.main .cate .cate-box {\n    overflow: hidden;\n    display: inline-block;\n    vertical-align: middle;\n    min-width: 130px;\n    background: #f1f1f1;\n    border-radius: 10px;\n    height: 67px;\n    padding: 0 20px;\n    margin: 0 10px;\n    cursor: pointer;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    position: relative;\n    margin-bottom: 10px;\n}\n\n.main .cate .cate-box-select {\n    background-image: linear-gradient(135deg, #3C8CE7 10%, #00EAFF 100%);\n    -webkit-box-shadow: 0 7px 10px 0 rgba(54, 144, 248, .23);\n    box-shadow: 0 7px 10px 0 rgba(54, 144, 248, .23);\n}\n\n.main .cate .cate-box-select img {\n    position: absolute;\n    right: -6px;\n    bottom: -19px;\n}\n\n.main .cate .cate-box p {\n    font-weight: 400;\n    font-size: 12px;\n    color: #545454;\n    margin-top: 12px;\n}\n\n.main .cate .cate-box-select p {\n    color: #fff;\n}\n\n.main .cate .cate-box div {\n    opacity: .76;\n    color: #999;\n    font-size: 12px;\n    margin-top: 7px;\n}\n\n.main .cate .cate-box-select div {\n    color: #fff;\n}\n\n\n.main .goods {\n    margin-top: 10px;\n    border-top: 1px solid #f7f7f7;\n    padding-top: 10px;\n}\n\n.main .title-2 {\n    margin-bottom: 10px;\n    color: #545454;\n}\n\n.main .title-2 svg, .main .title-2 span {\n    vertical-align: middle;\n}\n\n.main .goods .goods-box {\n    padding: 18px;\n    vertical-align: middle;\n    min-width: 185px;\n    min-height: 80px;\n    background: #fff;\n    border: 2px solid #f1f4fb;\n    -webkit-box-shadow: 0 4px 10px 0 rgba(135, 142, 154, .14);\n    box-shadow: 0 4px 10px 0 rgba(135, 142, 154, .14);\n    border-radius: 10px;\n    margin-right: 11px;\n    margin-bottom: 10px;\n    cursor: pointer;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    position: relative;\n    display: inline-flex\n}\n\n.main .goods .picture {\n    vertical-align: top;\n    margin-right: 10px;\n    display: inline-block;\n    min-width: 80px;\n    width: 80px;\n    height: 80px;\n\n}\n\n.main .goods .picture img {\n    width: 100%;\n    height: 100%;\n    border-radius: 10px;\n    object-fit: cover;\n}\n\n.main .goods .msg {\n    vertical-align: top;\n    display: inline-block;\n}\n\n.main .goods .msg .goods-name {\n    margin-bottom: 10px;\n    color: #545454;\n    font-size: 12px;\n    font-weight: 400;\n    margin-top: 5px;\n}\n\n.main .goods .msg .goods-price {\n    color: #3C8CE7;\n    font-size: 14px;\n    font-weight: 700;\n}\n\n.main .goods .msg .goods-price span {\n    font-size: 12px;\n    vertical-align: bottom;\n}\n\n.main .goods .msg .goods-price div {\n    display: inline-block;\n    background: #ffebe8;\n    color: #fb636b;\n    padding: 1px 3px;\n    border-radius: 3px;\n    font-size: 12px;\n    margin-right: 5px;\n}\n\n.main .goods .msg .goods-num {\n    margin-top: 3px;\n}\n\n.main .goods .msg .goods-num div {\n    display: inline-block;\n    width: 53px;\n    height: 5px;\n    background: #f3f3f3;\n    position: relative;\n    border-radius: 3px;\n}\n\n.main .goods .msg .goods-num div p {\n    display: inline-block;\n    position: absolute;\n    width: 40%;\n    height: 100%;\n    background: linear-gradient(55deg, #65d69e, #31dd92);\n    border-radius: 3px;\n}\n\n.main .goods .msg .goods-num span {\n    color: #0db26a;\n    font-size: 12px;\n    margin-left: 10px;\n    margin-right: 18px;\n}\n\n/*手机端查单*/\n.query-m {\n    display: none;\n    position: fixed;\n    width: 60px;\n    height: 60px;\n    background-image: linear-gradient(135deg, #3C8CE7 10%, #00EAFF 100%);\n    border-radius: 50%;\n    right: 20px;\n    bottom: 20%;\n    box-shadow: 0 5px 6px 0 rgba(73, 105, 230, .22);\n}\n\n.query-m a {\n    width: 60px;\n    height: 60px;\n    display: inline-block;\n}\n\n.query-m svg {\n    margin-left: 15px;\n    margin-top: 6px;\n}\n\n.query-m span {\n    color: #fff;\n    display: block;\n    text-align: center;\n    margin-top: -5px;\n    font-weight: 700;\n}\n\n\n/*扫码下单*/\n.order-m {\n    cursor: pointer;\n    position: fixed;\n    width: 70px;\n    height: 70px;\n    background-image: linear-gradient(135deg, #3C8CE7 10%, #00EAFF 100%);\n    border-radius: 50%;\n    right: 100px;\n    bottom: 20%;\n    box-shadow: 0 5px 6px 0 rgba(73, 105, 230, .22);\n}\n\n.order-m a {\n    width: 70px;\n    height: 70px;\n    display: inline-block;\n}\n\n.order-m svg {\n    margin-left: 17.5px;\n    margin-top: 6px;\n}\n\n.order-m span {\n    color: #fff;\n    display: block;\n    text-align: center;\n    margin-top: -4px;\n    font-weight: 700;\n}\n\n.buy {\n    text-align: center;\n    margin-top: 10px;\n}\n\n.buy button {\n    border: initial;\n    color: #fff;\n    display: inline-block;\n    width: 170px;\n    font-size: 18px;\n    font-weight: 700;\n    line-height: 45px;\n    border-radius: 100px;\n    cursor: pointer;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    box-shadow: 0 5px 6px 0 rgba(73, 105, 230, .22);\n    background-image: linear-gradient(135deg, #3C8CE7 10%, #00EAFF 100%);\n}\n\n.intro {\n    padding: 10px 20px;\n    color: #444444;\n    font-size: 14px;\n    line-height: 2.2;\n    letter-spacing: .5px;\n    font-weight: 700;\n}\n\n/*底部*/\n.footer {\n    margin-top: 50px;\n    margin-bottom: 15px;\n    text-align: center;\n    color: #9a9a9a;\n}\n\n\n/*首页提示框*/\n.home-tips {\n    border-radius: 12px !important;\n}\n\n.home-tips .layui-layer-title {\n    background-image: linear-gradient(135deg, #3C8CE7 10%, #00EAFF 100%);\n    color: #fff !important;\n    height: 40px;\n    line-height: 40px;\n    border-radius: 10px 10px 0 0;\n    background-color: initial;\n    border-bottom: initial;\n    font-size: 16px;\n    font-weight: 700;\n    text-align: center;\n    padding: initial;\n    overflow: hidden;\n\n}\n\n.home-tips .layui-layer-setwin {\n    color: #fff;\n    position: absolute;\n    top: initial;\n    bottom: -50px;\n    left: 50%;\n    transform: translate(-50%, 0);\n    width: 30px;\n    height: 30px;\n}\n\n.home-tips .layui-layer-setwin a {\n    position: initial;\n}\n\n.home-tips .layui-layer-content {\n    padding: 10px 20px;\n    color: #444444;\n    font-size: 14px;\n    line-height: 2.2;\n    letter-spacing: .5px;\n    font-weight: 700;\n    word-wrap: break-word;\n    word-break: normal;\n}\n\n/*扫码*/\n.qr {\n    text-align: center;\n    position: relative;\n}\n\n.qr svg {\n    display: block;\n    margin: 0 auto;\n}\n\n.qr img {\n    height: 300px;\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n}\n\n\n/*购买页*/\n.main-box .goods-img {\n    margin-left: 20px;\n    margin-right: 10px;\n    margin-top: 10px;\n    width: calc(100% - 30px);\n    height: 0;\n    position: relative;\n    padding-bottom: calc(100% - 40px);\n}\n\n.main-box .goods-msg {\n    margin-right: 20px;\n    margin-left: 10px;\n    margin-top: 20px;\n}\n\n.main-box .goods-img img {\n    width: calc(100% - 10px);\n    box-shadow: 0 5px 6px 0 rgba(73, 105, 230, .22);\n    border-radius: 5px;\n    margin-top: 5px;\n    /*padding: 5px;*/\n    height: 100%;\n    position: absolute;\n    object-fit: cover;\n}\n\n.main-box .goods-msg .goods-name {\n    font-weight: 700;\n    font-size: 18px;\n    color: #545454;\n    border-bottom: 1px solid #f7f7f7;\n    padding-bottom: 5px;\n}\n\n.layui-form-select dl dd.layui-this {\n    /*修改下拉框的颜色*/\n    background-color: #22b6f2;\n}\n\n/*tips*/\n.small-tips {\n    display: inline-block;\n    padding: 1px 5px;\n    border-radius: 3px;\n    font-size: 11px;\n    margin-left: 5px;\n    line-height: initial;\n}\n\n.tips-cyan {\n    background: #ccdcf6;\n    color: #2F4056;\n}\n\n.tips-pink {\n    background: #ffebe8;\n    color: #fb636b;\n}\n\n.tips-green {\n    background: #dff7ea;\n    color: #28C76F;\n}\n\n.tips-yellow {\n    background: #fbf7da;\n    color: #d6b900;\n}\n\n.tips-blue {\n    background: #cadbff;\n    color: #3C8CE7;\n}\n\n.tips-red {\n    background: #ffd3d3;\n    color: #FA016D;\n}\n\n.tips-black {\n    background: #262626;\n    color: #ffffff\n}\n\n.pay {\n    margin-top: 20px;\n    border-top: 1px solid #f7f7f7;\n    padding-top: 10px;\n}\n\n.pay-type {\n    display: inline-block;\n    text-align: center;\n    background: #f7f7f7;\n    border: 2px solid #e7e7e7;\n    border-radius: 5px;\n    position: relative;\n    padding: 7px 10px;\n    margin-right: 10px;\n    margin-bottom: 10px;\n    cursor: pointer;\n}\n\n.pay-type svg {\n    vertical-align: middle;\n}\n\n.pay-select {\n    border: 2px solid rgb(51, 105, 255);\n    background: rgb(248, 250, 255);\n    color: rgb(51, 105, 255);\n}\n\n.sale {\n    margin-top: 5px;\n    margin-left: -5px;\n}\n\n.sale .small-tips {\n    margin-bottom: 5px;\n}\n\n.l-msg {\n    color: #999;\n    width: 72px;\n    display: inline-block;\n    vertical-align: middle;\n}\n\n.price {\n    margin-top: 5px;\n}\n\n.price .price-sign {\n    color: #e4393c;\n    font-size: 16px;\n}\n\n.price .price-num {\n    color: #e4393c;\n    font-size: 22px;\n}\n\n.price .price-c {\n    margin-left: 5px;\n    color: #666;\n    font: 12px/150% tahoma, arial, Microsoft YaHei, Hiragino Sans GB, \"\\u5b8b\\u4f53\", sans-serif;\n}\n\n.entry {\n    margin-top: 15px;\n}\n\n.pay-num {\n    width: 50px !important;\n    text-align: center;\n    font-size: 20px !important;\n}\n\n.sub svg, .add svg {\n    vertical-align: middle;\n    margin-top: -7px;\n    cursor: pointer;\n}\n\n.input input {\n    display: inline-block;\n    padding: 0 5px;\n    height: 35px;\n    width: 300px;\n    font-weight: 500;\n    font-size: 14px;\n    color: #999;\n    background: #fff;\n    border: 1px solid #f0f0f0;\n    -webkit-box-shadow: 0 4px 10px 0 rgba(135, 142, 154, .07);\n    box-shadow: 0 4px 10px 0 rgba(135, 142, 154, .07);\n    border-radius: 4px;\n    overflow: hidden;\n}\n\n.code img {\n    height: 35px;\n    border-radius: 4px;\n    border: 1px solid #f0f0f0;\n    vertical-align: middle;\n    margin-top: -3px;\n}\n\n.code input {\n    width: 178px !important;\n}\n\n#wait-geetest-captcha {\n    color: #999;\n}\n\n.err_title {\n    color: #545454;\n    font-size: 20px;\n    font-weight: 700;\n    margin-top: 20px;\n}\n\n.err_content {\n    margin-top: 30px;\n    margin-bottom: 30px;\n    color: #737373;\n}\n\n.err_but {\n    padding-bottom: 100px;\n}\n\n.btn a, .btn button {\n    border: initial;\n    text-align: center;\n    font-size: 18px;\n    font-weight: 700;\n    color: #fff;\n    display: inline-block;\n    width: 160px;\n    line-height: 45px;\n    margin-top: 15px;\n    border-radius: 100px;\n    cursor: pointer;\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    box-shadow: 0 5px 6px 0 rgba(73, 105, 230, .22);\n    background-image: linear-gradient(135deg, #3C8CE7 10%, #00EAFF 100%);\n}\n\n.pay-title {\n    color: #737373;\n    font-weight: 700;\n    font-size: 20px;\n    margin: 0 15px;\n}\n\n.order-list {\n    margin-left: initial;\n    margin-right: initial;\n    margin-top: 10px;\n    border-bottom: 1px solid #f7f7f7;\n    padding-bottom: 5px;\n}\n\n.info-ui {\n    color: #737373;\n}\n\n.info-ui strong {\n    width: 30%;\n    margin-bottom: 3px;\n    text-align: right;\n    display: inline-block;\n}\n\n.order-info {\n    width: calc(100% - 12px);\n    height: 75px;\n    overflow-wrap: break-word;\n    padding: 5px;\n    overflow: auto;\n    resize: none !important;\n    border: 1px solid #f0f0f0;\n    -webkit-box-shadow: 0 4px 10px 0 rgba(135, 142, 154, .07);\n    box-shadow: 0 4px 10px 0 rgba(135, 142, 154, .07);\n    border-radius: 4px;\n}\n\n/*手机端适应*/\n@media (max-width: 768px) {\n    body {\n        background: initial;\n    }\n    .header {\n        background-image: linear-gradient(135deg, #3C8CE7 10%, #00EAFF 100%);\n        color: #fff;\n        height: 205px;\n        margin-bottom: -145px;\n        border-radius: 0 0 10px 10px;\n    }\n\n    .header .info {\n        color: #fff !important;\n    }\n\n    .query-m {\n        display: initial;\n    }\n\n    .order-m {\n        display: none;\n    }\n\n    .input input {\n        width: calc(100% - 95px);\n    }\n\n    .code input {\n        width: calc(100% - 219px) !important;\n    }\n\n    .main-box .goods-msg {\n        margin-left: 20px;\n    }\n\n    .main .goods .goods-price div {\n        margin-bottom: 5px;\n    }\n\n    .geetest_holder.geetest_wind {\n        margin-top: 10px;\n    }\n\n    .order-info {\n        margin-top: 10px;\n    }\n}\n\n@media (max-width: 425px) {\n    .main .cate .cate-box {\n        min-width: calc(50% - 60px);\n    }\n}\n"
  },
  {
    "path": "public/assets/luna/main.js",
    "content": "!function (w) {\n    w.clientWidth = document.body.clientWidth;\n    w.clientHeight = document.body.clientHeight;\n    let tipsSvg = '<svg style=\"vertical-align: middle;margin-right: 5px\" t=\"1602926160057\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"2429\" data-spm-anchor-id=\"a313x.7781069.0.i27\" width=\"30\" height=\"30\"><path d=\"M320.512 850.944l-71.68-40.96 60.416-104.448 34.816-21.504h478.208V254.976H201.728v347.136h-81.92V214.016l40.96-40.96h702.464l40.96 40.96v510.976l-40.96 40.96H368.64z\" fill=\"#ffffff\" p-id=\"2430\" data-spm-anchor-id=\"a313x.7781069.0.i25\" class=\"selected\"></path><path d=\"M481.28 431.104h61.44v61.44h-61.44zM284.672 431.104h61.44v61.44h-61.44zM677.888 431.104h61.44v61.44h-61.44z\" fill=\"#ffffff\" p-id=\"2431\" data-spm-anchor-id=\"a313x.7781069.0.i23\" class=\"selected\"></path></svg>';\n    let qrSvg = '<svg style=\"vertical-align: middle;margin-right: 5px\" t=\"1602927606509\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4167\" width=\"30\" height=\"30\"><path d=\"M146.432 336.896h-81.92V106.496l40.96-40.96h231.424v81.92H146.432zM336.896 958.464H105.472l-40.96-40.96V687.104h81.92v189.44h190.464zM956.416 336.896h-81.92V147.456H684.032v-81.92h231.424l40.96 40.96zM915.456 958.464H613.376v-81.92h261.12V659.456h81.92v258.048z\" fill=\"#ffffff\" p-id=\"4168\" data-spm-anchor-id=\"a313x.7781069.0.i59\" class=\"selected\"></path><path d=\"M326.656 334.848h61.44v98.304h-61.44zM415.744 575.488h61.44v133.12h-61.44zM265.216 575.488h61.44v114.688h-61.44zM566.272 575.488h61.44v98.304h-61.44zM706.56 575.488h61.44v154.624h-61.44zM477.184 297.984h61.44v135.168h-61.44zM627.712 329.728h61.44v103.424h-61.44z\" fill=\"#ffffff\" p-id=\"4169\" data-spm-anchor-id=\"a313x.7781069.0.i58\" class=\"selected\"></path><path d=\"M10.24 473.088h1003.52v61.44H10.24z\" fill=\"#ffffff\" p-id=\"4170\" data-spm-anchor-id=\"a313x.7781069.0.i57\" class=\"selected\"></path></svg>';\n    let alipaySvg = '<svg t=\"1602939269695\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1127\" width=\"32\" height=\"32\"><path d=\"M902.095 652.871l-250.96-84.392s19.287-28.87 39.874-85.472c20.59-56.606 23.539-87.689 23.539-87.689l-162.454-1.339v-55.487l196.739-1.387v-39.227H552.055v-89.29h-96.358v89.294H272.133v39.227l183.564-1.304v59.513h-147.24v31.079h303.064s-3.337 25.223-14.955 56.606c-11.615 31.38-23.58 58.862-23.58 58.862s-142.3-49.804-217.285-49.804c-74.985 0-166.182 30.123-175.024 117.55-8.8 87.383 42.481 134.716 114.728 152.139 72.256 17.513 138.962-0.173 197.04-28.607 58.087-28.391 115.081-92.933 115.081-92.933l292.486 142.041c-11.932 69.3-72.067 119.914-142.387 119.844H266.37c-79.714 0.078-144.392-64.483-144.466-144.194V266.374c-0.074-79.72 64.493-144.399 144.205-144.47h491.519c79.714-0.073 144.396 64.49 144.466 144.203v386.764z m-365.76-48.895s-91.302 115.262-198.879 115.262c-107.623 0-130.218-54.767-130.218-94.155 0-39.34 22.373-82.144 113.943-88.333 91.519-6.18 215.2 67.226 215.2 67.226h-0.047z\" fill=\"#02A9F1\" p-id=\"1128\" data-spm-anchor-id=\"a313x.7781069.0.i1\" class=\"selected\"></path></svg>';\n    let weChatSvg = '<svg t=\"1602939526328\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1368\" width=\"32\" height=\"32\"><path d=\"M395.846 603.585c-3.921 1.98-7.936 2.925-12.81 2.925-10.9 0-19.791-5.85-24.764-14.625l-2.006-3.864-78.106-167.913c-0.956-1.98-0.956-3.865-0.956-5.845 0-7.83 5.928-13.68 13.863-13.68 2.965 0 5.928 0.944 8.893 2.924l91.965 64.43c6.884 3.864 14.82 6.79 23.708 6.79 4.972 0 9.85-0.945 14.822-2.926L861.71 282.479c-77.149-89.804-204.684-148.384-349.135-148.384-235.371 0-427.242 157.158-427.242 351.294 0 105.368 57.361 201.017 147.323 265.447 6.88 4.905 11.852 13.68 11.852 22.45 0 2.925-0.957 5.85-2.006 8.775-6.881 26.318-18.831 69.334-18.831 71.223-0.958 2.92-2.013 6.79-2.013 10.75 0 7.83 5.929 13.68 13.865 13.68 2.963 0 5.928-0.944 7.935-2.925l92.922-53.674c6.885-3.87 14.82-6.794 22.756-6.794 3.916 0 8.889 0.944 12.81 1.98 43.496 12.644 91.012 19.53 139.48 19.53 235.372 0 427.24-157.158 427.24-351.294 0-58.58-17.78-114.143-48.467-163.003l-491.39 280.07-2.963 1.98z\" fill=\"#09BB07\" p-id=\"1369\"></path></svg>';\n    let qqSvg = '<svg t=\"1602939546187\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1561\" width=\"32\" height=\"32\"><path d=\"M511.09761 957.257c-80.159 0-153.737-25.019-201.11-62.386-24.057 6.702-54.831 17.489-74.252 30.864-16.617 11.439-14.546 23.106-11.55 27.816 13.15 20.689 225.583 13.211 286.912 6.767v-3.061z\" fill=\"#FAAD08\" p-id=\"1562\"></path><path d=\"M496.65061 957.257c80.157 0 153.737-25.019 201.11-62.386 24.057 6.702 54.83 17.489 74.253 30.864 16.616 11.439 14.543 23.106 11.55 27.816-13.15 20.689-225.584 13.211-286.914 6.767v-3.061z\" fill=\"#FAAD08\" p-id=\"1563\"></path><path d=\"M497.12861 474.524c131.934-0.876 237.669-25.783 273.497-35.34 8.541-2.28 13.11-6.364 13.11-6.364 0.03-1.172 0.542-20.952 0.542-31.155C784.27761 229.833 701.12561 57.173 496.64061 57.162 292.15661 57.173 209.00061 229.832 209.00061 401.665c0 10.203 0.516 29.983 0.547 31.155 0 0 3.717 3.821 10.529 5.67 33.078 8.98 140.803 35.139 276.08 36.034h0.972z\" fill=\"#000000\" p-id=\"1564\"></path><path d=\"M860.28261 619.782c-8.12-26.086-19.204-56.506-30.427-85.72 0 0-6.456-0.795-9.718 0.148-100.71 29.205-222.773 47.818-315.792 46.695h-0.962C410.88561 582.017 289.65061 563.617 189.27961 534.698 185.44461 533.595 177.87261 534.063 177.87261 534.063 166.64961 563.276 155.56661 593.696 147.44761 619.782 108.72961 744.168 121.27261 795.644 130.82461 796.798c20.496 2.474 79.78-93.637 79.78-93.637 0 97.66 88.324 247.617 290.576 248.996a718.01 718.01 0 0 1 5.367 0C708.80161 950.778 797.12261 800.822 797.12261 703.162c0 0 59.284 96.111 79.783 93.637 9.55-1.154 22.093-52.63-16.623-177.017\" fill=\"#000000\" p-id=\"1565\"></path><path d=\"M434.38261 316.917c-27.9 1.24-51.745-30.106-53.24-69.956-1.518-39.877 19.858-73.207 47.764-74.454 27.875-1.224 51.703 30.109 53.218 69.974 1.527 39.877-19.853 73.2-47.742 74.436m206.67-69.956c-1.494 39.85-25.34 71.194-53.24 69.956-27.888-1.238-49.269-34.559-47.742-74.435 1.513-39.868 25.341-71.201 53.216-69.974 27.909 1.247 49.285 34.576 47.767 74.453\" fill=\"#FFFFFF\" p-id=\"1566\"></path><path d=\"M683.94261 368.627c-7.323-17.609-81.062-37.227-172.353-37.227h-0.98c-91.29 0-165.031 19.618-172.352 37.227a6.244 6.244 0 0 0-0.535 2.505c0 1.269 0.393 2.414 1.006 3.386 6.168 9.765 88.054 58.018 171.882 58.018h0.98c83.827 0 165.71-48.25 171.881-58.016a6.352 6.352 0 0 0 1.002-3.395c0-0.897-0.2-1.736-0.531-2.498\" fill=\"#FAAD08\" p-id=\"1567\"></path><path d=\"M467.63161 256.377c1.26 15.886-7.377 30-19.266 31.542-11.907 1.544-22.569-10.083-23.836-25.978-1.243-15.895 7.381-30.008 19.25-31.538 11.927-1.549 22.607 10.088 23.852 25.974m73.097 7.935c2.533-4.118 19.827-25.77 55.62-17.886 9.401 2.07 13.75 5.116 14.668 6.316 1.355 1.77 1.726 4.29 0.352 7.684-2.722 6.725-8.338 6.542-11.454 5.226-2.01-0.85-26.94-15.889-49.905 6.553-1.579 1.545-4.405 2.074-7.085 0.242-2.678-1.834-3.786-5.553-2.196-8.135\" fill=\"#000000\" p-id=\"1568\"></path><path d=\"M504.33261 584.495h-0.967c-63.568 0.752-140.646-7.504-215.286-21.92-6.391 36.262-10.25 81.838-6.936 136.196 8.37 137.384 91.62 223.736 220.118 224.996H506.48461c128.498-1.26 211.748-87.612 220.12-224.996 3.314-54.362-0.547-99.938-6.94-136.203-74.654 14.423-151.745 22.684-215.332 21.927\" fill=\"#FFFFFF\" p-id=\"1569\"></path><path d=\"M323.27461 577.016v137.468s64.957 12.705 130.031 3.91V591.59c-41.225-2.262-85.688-7.304-130.031-14.574\" fill=\"#EB1C26\" p-id=\"1570\"></path><path d=\"M788.09761 432.536s-121.98 40.387-283.743 41.539h-0.962c-161.497-1.147-283.328-41.401-283.744-41.539l-40.854 106.952c102.186 32.31 228.837 53.135 324.598 51.926l0.96-0.002c95.768 1.216 222.4-19.61 324.6-51.924l-40.855-106.952z\" fill=\"#EB1C26\" p-id=\"1571\"></path></svg>';\n    let otherSvg = '<svg t=\"1624130822567\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"9818\" width=\"30\" height=\"30\"><path d=\"M630.784 686.08c6.144 8.192 8.192 18.432 4.096 28.672s-12.288 16.384-22.528 18.432c-14.336 2.048-30.72 4.096-47.104 4.096-34.816 0-90.112-4.096-149.504-26.624-32.768-12.288-61.44-43.008-88.064-71.68-16.384-20.48-47.104-53.248-59.392-53.248 0 2.048 0 6.144 4.096 18.432 22.528 59.392 122.88 161.792 184.32 161.792h296.96v-61.44c-59.392-24.576-124.928-49.152-157.696-61.44 8.192 12.288 22.528 28.672 34.816 43.008zM512 0C229.376 0 0 229.376 0 512s229.376 512 512 512 512-229.376 512-512S794.624 0 512 0z m305.152 796.672c0 16.384-12.288 28.672-28.672 28.672H458.752v-2.048c-94.208 0-208.896-120.832-239.616-198.656-16.384-45.056-4.096-69.632 10.24-81.92 10.24-10.24 24.576-14.336 38.912-14.336 36.864 0 67.584 32.768 102.4 69.632 22.528 24.576 47.104 51.2 67.584 59.392 43.008 16.384 83.968 22.528 114.688 22.528-14.336-18.432-18.432-24.576-18.432-28.672-1.536-4.096-2.56-8.192-3.072-12.288-4.096 5.12-10.24 8.192-17.408 8.192-12.288 0-22.528-10.24-22.528-22.528v-45.056h-43.008c-12.288 0-22.528-10.24-22.528-22.528 0-12.288 10.24-22.528 22.528-22.528H491.52V512h-43.008c-12.288 0-22.528-10.24-22.528-22.528 0-12.288 10.24-22.528 22.528-22.528H481.28l-49.152-49.152c-8.192-8.192-8.192-22.528 0-30.72 8.192-8.192 22.528-8.192 30.72 0l49.152 49.152 51.2-49.152c8.192-8.192 22.528-8.192 30.72 0 8.192 10.24 8.192 22.528-2.048 30.72l-51.2 49.152h34.816c12.288 0 22.528 10.24 22.528 22.528 0 12.288-10.24 22.528-22.528 22.528H532.48v22.528h47.104c12.288 0 22.528 10.24 22.528 22.528s-10.24 22.528-22.528 22.528h-43.008v33.28c1.024-2.048 2.56-4.608 4.096-6.656 10.24-14.336 26.624-22.528 43.008-22.528h8.192c8.192 2.048 28.672 8.192 61.44 20.48 38.912-36.864 61.44-88.064 61.44-143.36 0-110.592-90.112-200.704-200.704-200.704S313.344 350.208 313.344 460.8c0 8.192 0 18.432 2.048 26.624s0 14.336-6.144 20.48c-4.096 6.144-12.288 10.24-18.432 10.24H286.72c-14.336 0-26.624-10.24-28.672-24.576-2.048-10.24-2.048-22.528-2.048-32.768 0-141.312 114.688-258.048 258.048-258.048 141.312 0 258.048 114.688 258.048 258.048 0 61.44-22.528 118.784-61.44 165.888 38.912 14.336 73.728 28.672 88.064 34.816 10.24 4.096 18.432 14.336 18.432 26.624v108.544z\" fill=\"#22b6f2\" p-id=\"9819\"></path></svg>';\n    let paypal = '<svg t=\"1603032405616\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"973\" width=\"32\" height=\"32\"><path d=\"M241.534 764.95H188.01c-3.692 0-7.385 1.852-7.385 7.408l-22.149 138.886c0 1.852 1.846 3.704 3.692 3.704h25.842c3.692 0 7.38-1.852 7.38-7.408l7.384-38.888c0-3.705 3.692-7.41 7.384-7.41h18.458c35.066 0 57.216-18.516 62.754-51.848 1.846-14.813 0-25.927-7.384-35.184-9.227-5.556-22.15-9.26-42.452-9.26z m5.538 50c-1.846 20.367-18.456 20.367-33.221 20.367h-9.23l7.383-35.184c0-1.852 1.847-5.552 3.688-5.552h3.692c9.232 0 20.304 0 23.996 7.404 3.692 1.852 5.538 7.409 3.692 12.966z m158.73 0h-25.84c-1.846 0-3.692 1.848-3.692 3.7l-1.846 7.41-1.846-1.853c-7.381-9.256-18.458-11.109-31.376-11.109-29.53 0-53.524 22.219-57.216 53.701-1.846 14.813 0 29.628 9.23 40.74 9.226 9.257 20.303 12.962 33.222 12.962 12.918 0 25.84-3.705 35.067-14.814l-1.846 7.41c0 1.851 1.846 3.7 3.692 3.7h23.995c3.693 0 7.38-1.849 7.38-7.405l12.923-88.89c1.846-3.704 0-5.551-1.846-5.551z m-38.758 51.85c-1.847 14.812-14.765 24.074-29.534 24.074-7.38 0-12.918-1.852-18.457-7.408-3.692-3.706-3.692-11.11-3.692-18.519 1.846-14.813 14.77-24.074 29.533-24.074 7.385 0 12.919 1.853 18.457 7.41 3.693 5.556 7.385 11.108 3.693 18.516z m179.033-51.85h-25.84c-1.847 0-3.693 1.848-7.385 1.848l-35.068 53.706-14.764-51.853c0-1.853-3.692-3.7-7.385-3.7h-25.837c-1.846 0-3.692 1.847-3.692 3.7v1.852l29.529 85.184-25.837 38.889c-1.846 1.852 0 3.704 0 7.408h29.53c1.846 0 3.692-1.852 7.384-1.852l86.746-127.777c-3.692-1.852-5.535-5.557-7.38-7.404z\" fill=\"#253B80\" p-id=\"974\"></path><path d=\"M632.823 764.95h-55.37c-3.692 0-7.38 1.852-7.38 7.408l-22.15 140.738c0 1.852 1.843 3.7 3.692 3.7h29.53c1.846 0 3.692-1.848 3.692-3.7l7.38-40.74c0-3.704 3.692-7.409 7.385-7.409h18.457c35.067 0 57.216-18.517 62.754-51.849 1.846-14.817 0-25.927-7.384-35.188-9.226-9.256-22.149-12.96-40.606-12.96z m7.384 50c-1.846 20.367-18.456 20.367-33.22 20.367h-9.23l7.383-35.184c0-1.852 1.847-3.704 3.693-3.704h3.687c9.23 0 20.303 0 23.995 7.408 3.692 0 3.692 5.557 3.692 11.114z m155.04 0h-25.842c-1.842 0-3.688 1.848-3.688 3.7l-1.846 7.41-1.846-1.853c-7.384-9.256-18.456-11.109-31.38-11.109-29.528 0-53.524 22.219-57.216 53.701-1.846 14.813 0 29.628 9.23 40.74 9.227 9.257 20.304 12.962 33.222 12.962 12.918 0 25.842-3.705 35.068-14.814l-1.846 7.41c0 1.851 1.846 3.7 3.692 3.7h23.994c3.692 0 7.386-1.849 7.386-7.405l12.918-88.89c3.692-3.704 3.692-5.551-1.846-5.551z m-35.068 51.85c-1.846 14.812-14.764 24.074-29.534 24.074-7.38 0-12.918-1.852-18.456-7.408-3.688-3.706-3.688-11.11-3.688-18.519 1.842-14.813 14.764-24.074 29.53-24.074 7.384 0 12.918 1.853 18.456 7.41 3.692 5.556 3.692 11.108 3.692 18.516z m66.443-98.146l-22.145 142.59c0 1.852 1.846 3.704 3.688 3.704h22.15c3.692 0 7.384-1.852 7.384-7.408l22.148-140.738c0-1.853-1.846-3.705-3.692-3.705H832.16c-3.688 1.852-5.538 3.705-5.538 5.557z\" fill=\"#179BD7\" p-id=\"975\"></path><path d=\"M426.106 690.878l11.072-68.519H298.75l77.52-503.69c0-1.852 0-1.852 1.846-5.557 0 0 1.846-1.852 5.538-1.852h191.953c64.6 0 107.052 14.813 131.048 40.74 9.226 11.11 16.61 24.074 22.148 38.888 1.842 18.518 1.842 35.183 0 55.554v16.665l11.073 5.556c7.385 5.557 16.61 9.261 22.149 16.667 9.226 11.113 16.61 24.074 18.456 40.739 1.848 18.518 1.848 38.888-1.846 57.406-5.538 24.074-11.072 44.445-23.994 64.815-9.226 16.665-22.15 31.479-38.76 40.74-14.764 9.26-33.222 18.517-49.832 24.074-22.149 5.553-40.606 7.405-60.909 7.405h-22.15c-22.148 0-40.605 16.67-44.297 38.891v7.406L520.236 685.32v5.557s0 1.852-1.846 1.852h-1.846c0-3.704-90.438-1.852-90.438-1.852z\" fill=\"#253B80\" p-id=\"976\"></path><path d=\"M765.717 248.294c0 5.556-1.846 7.409-1.846 12.96-27.687 138.887-116.279 183.331-230.716 183.331h-59.063c-14.764 0-23.991 9.261-27.683 24.075l-29.533 192.587-7.381 55.558c-1.846 7.404 5.535 14.813 12.92 16.665h107.052c12.918 0 22.148-9.26 23.991-22.222v-5.556l20.303-125.925 1.846-7.405c1.846-12.962 12.922-22.222 23.995-22.222h14.764c101.515 0 177.189-42.593 203.03-161.108 9.226-49.997 5.537-92.59-20.303-120.369-11.072-7.408-18.458-14.813-31.376-20.37z\" fill=\"#179BD7\" p-id=\"977\"></path><path d=\"M738.03 237.185c-5.539 0-7.385-1.853-12.919-1.853-5.538 0-9.23-1.852-12.922-1.852-16.61-1.852-35.068-5.557-51.678-5.557H505.472c-12.923 0-22.15 9.262-23.995 22.223L450.1 463.103v5.557c1.846-14.814 14.765-24.075 27.683-24.075h59.063c114.433 0 204.876-46.292 230.716-183.33 0-5.552 1.842-7.405 1.842-12.961-7.38-1.852-14.764-7.409-22.144-9.257l-9.23-1.852c0 1.852 0 0 0 0z\" fill=\"#222D65\" p-id=\"978\"></path><path d=\"M481.477 251.998c1.846-12.96 12.918-22.223 23.995-22.223h155.039c16.61 0 35.067 0 51.678 5.557 5.538 0 9.23 1.853 12.922 1.853 5.534 0 7.38 1.852 12.92 1.852l5.538 1.848c7.38 1.852 14.764 5.557 22.148 9.261 7.38-49.997 0-85.185-27.687-114.812-29.53-35.183-84.904-50.001-153.193-50.001H385.5c-14.764 0-23.995 9.26-27.687 24.075l-81.211 529.616c-1.843 9.261 5.538 16.671 14.768 20.371h125.506l31.379-196.292c1.846 0 33.222-211.105 33.222-211.105z\" fill=\"#253B80\" p-id=\"979\"></path></svg>';\n\tlet coinbaseSvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" version=\"1.1\" viewBox=\"0 0 32 32\"><circle style=\"opacity:0.2\" cx=\"16\" cy=\"17\" r=\"14\"/><circle style=\"fill:#f7931a\" cx=\"16\" cy=\"16\" r=\"14\"/><path style=\"opacity:0.2\" d=\"m 13,8 0,3 -3.0000007,0 0,2.000001 c 0,0 1.1456507,-0.01999 1.1273687,0 0.613377,-0.0093 0.808708,0.436058 0.872215,0.733073 l 0,6.600259 c -0.02351,0.1877 -0.0035,0.653333 -0.432202,0.666667 0.0198,0.01733 -1.5673817,0 -1.5673817,0 l 0,2 2.1688177,0 C 12.535544,22.98667 12.645729,23 13,23 l 0,3 2,0 0,-3 0.97917,0 0.04166,3 L 18,26 17.97917,23 C 20.52239,22.815365 22,21.597881 21.983179,19.5 22,17.570087 20.456651,16.506411 19.5,16.5 20.456506,16.503769 21,15.463447 21,14 21,12 19.619804,11 17.999999,11 l 0,-3 L 16,8 l 0,3 c -0.398082,0 -0.595857,-0.01467 -1,0 l 0,-3 z m 2,5.000001 C 17,13 18,13 18,14.5 18,16 17,16 15,16 Z M 15,18 c 2.666111,8.3e-5 4.000276,-0.166641 4,1.5 2.76e-4,1.666775 -1.333889,1.5 -4,1.5 z\"/><path style=\"fill:#ffffff\" d=\"m 13,7 0,2.9999995 -3.0000007,0 0,2.0000015 c 0,0 1.1456507,-0.01999 1.1273687,0 0.613377,-0.0093 0.808708,0.436058 0.872215,0.733073 l 0,6.600259 c -0.02351,0.1877 -0.0035,0.653333 -0.432202,0.666667 0.0198,0.01733 -1.5673817,0 -1.5673817,0 l 0,2 2.1688177,0 C 12.535544,21.98667 12.645729,22 13,22 l 0,3 2,0 0,-3 0.97917,0 0.04166,3 L 18,25 17.97917,22 C 20.52239,21.815365 22,20.597881 21.983179,18.5 22,16.570087 20.456651,15.506411 19.5,15.5 20.456506,15.503769 21,14.463447 21,13 21,11 19.619804,10 17.999999,10 l 0,-3 L 16,7 l 0,3 c -0.398082,0 -0.595857,-0.01467 -1,0 l 0,-3 z m 2,5.000001 C 17,12 18,12 18,13.5 18,15 17,15 15,15 Z M 15,17 c 2.666111,8.3e-5 4.000276,-0.166641 4,1.5 2.76e-4,1.666775 -1.333889,1.5 -4,1.5 z\"/><path style=\"fill:#ffffff;opacity:0.2\" d=\"M 16 2 A 14 14 0 0 0 2 16 A 14 14 0 0 0 2.0214844 16.585938 A 14 14 0 0 1 16 3 A 14 14 0 0 1 29.978516 16.414062 A 14 14 0 0 0 30 16 A 14 14 0 0 0 16 2 z\"/></svg>';\n\n    let paySvgArr = {\n        zfbf2f     : alipaySvg,\n        aliweb     : alipaySvg,\n        aliwap     : alipaySvg,\n        mqq        : qqSvg,\n        mzfb       : alipaySvg,\n        mwx        : weChatSvg,\n        pszfb      : alipaySvg,\n        pswx       : weChatSvg,\n        wescan     : weChatSvg,\n        payjswescan: weChatSvg,\n        alipay     : alipaySvg,\n        wxpay      : weChatSvg,\n        qqpay      : qqSvg,\n        paypal     : paypal,\n        mgcoin     : otherSvg,\n        coinbase   : coinbaseSvg,\n        vzfb       : alipaySvg,\n        vwx        : weChatSvg,\n    };\n\n    let msgArea = w.clientWidth <= 768 ? ['85%'] : ['50%'];\n    layui.use(['form', 'laytpl'], function () {\n        let laytpl = layui.laytpl;\n        laytpl.config({open: '<<', close: '>>'});\n\n        if (w.clientWidth <= 768 && typeof tipsCon !== 'undefined' && tipsCon !== '') {\n            layer.open({\n                type    : 1,\n                title   : tipsSvg + title,\n                closeBtn: 2,\n                area    : msgArea,\n                skin    : 'home-tips',\n                anim    : 5,\n                shade   : 0.7,\n                content : tipsCon\n            });\n        }\n        //渲染首页商品\n        if (typeof goodsMsg !== 'undefined' && goodsMsg !== '') {\n            let cateTpl = document.getElementById('cateTpl').innerHTML, cateHtml = '';\n            let goodsTpl = document.getElementById('goodsTpl').innerHTML, goodsHtml;\n            let changeCate = function (key) {\n                goodsHtml = '';\n                goodsMsg[key].goods.forEach(function (i) {\n                    if (i.wholesale_price_cnf != \"\" && i.wholesale_price_cnf != null) {\n                        i.wholesale_price_arr = i.wholesale_price_cnf.split(\"\\r\\n\");\n                        i.wholesale_price_arr.forEach(function (ii, k) {\n                            i.wholesale_price_arr[k] = ii.split(\"=\");\n                        })\n                    }\n                    i.proportion =  i.in_stock ? (i.in_stock / (i.in_stock + i.sales_volume)) * 100 : 0;\n                    laytpl(goodsTpl).render(i, function (html) {\n                        goodsHtml += html;\n                    });\n                });\n                $('.goods-list').empty().append(goodsHtml)\n                $('.cate-box').removeClass('cate-box-select').eq(key).addClass('cate-box-select');\n            };\n\n            goodsMsg.forEach(function (i, k) {\n                i.key = k;\n                laytpl(cateTpl).render(i, function (html) {\n                    cateHtml += html;\n                });\n            });\n            $('.cate').empty().append(cateHtml).on('click', '.cate-box', function () {\n                changeCate($(this).data('key'));\n            });\n            changeCate(0);\n        }\n\n\n    });\n\n    //页面操作\n    $('.pay-type').each(function () {\n        let t = $(this), type = t.data('type'), name = t.data('name');\n        if (paySvgArr[type] !== undefined) {\n            t.append(paySvgArr[type] + ' ' + name);\n        } else {\n            t.append(otherSvg + ' ' + name);\n        }\n    }).click(function () {\n        $('.pay-type').removeClass('pay-select')\n        $(this).toggleClass(\"pay-select\");\n        $('input[name=payway]').val($(this).data('id'));\n    });\n\n\n    //加减商品数量\n    let orderNumber = 1;\n    let numDoc = $(\"#orderNumber\");\n    $('.sub').click(function () {\n        if (orderNumber <= 1) return layer.msg(tipsMsg.least_one);\n        orderNumber--;\n        numDoc.val(orderNumber);\n    })\n    $('.add').click(function () {\n        if (limitNum > 0 && stock > limitNum) {\n            if (orderNumber >= limitNum) return layer.msg(tipsMsg.exceeds_limit);\n        } else {\n            if (orderNumber >= stock) return layer.msg(tipsMsg.exceeds);\n        }\n        orderNumber++;\n        numDoc.val(orderNumber + '');\n    })\n    numDoc.change(function () {\n        let val = parseInt($(this).val());\n        if (val <= 0) {\n            $(this).val(1);\n            orderNumber = 1;\n            return layer.msg(tipsMsg.least_one);\n        }\n        if (limitNum > 0 && stock > limitNum) {\n            if (val > limitNum) {\n                $(this).val(limitNum);\n                orderNumber = limitNum;\n                return layer.msg(tipsMsg.exceeds_limit);\n            }\n        } else {\n            if (val > stock) {\n                $(this).val(stock);\n                orderNumber = stock;\n                return layer.msg(tipsMsg.exceeds);\n            }\n        }\n        orderNumber = val;\n    })\n\n\n    //方法定义\n    w.showQrcode = function (imgUrl) {\n        let html = '<div class=\"qr\" style=\"\">' +\n            '<svg t=\"1602929622714\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"7733\" data-spm-anchor-id=\"a313x.7781069.0.i25\" width=\"400\" height=\"400\"><path d=\"M985.3 307.5c-21.4 0-38.7-17.3-38.7-38.7V156.9c0-43.8-35.6-79.4-79.4-79.4H765.7c-21.4 0-38.7-17.3-38.7-38.7S744.3 0 765.7 0h101.4C953.6 0 1024 70.4 1024 156.9v111.9c0 21.4-17.3 38.7-38.7 38.7zM258.3 1024H156.9C70.4 1024 0 953.6 0 867.1V766.5c0-21.4 17.3-38.7 38.7-38.7s38.7 17.3 38.7 38.7v100.6c0 43.8 35.6 79.4 79.4 79.4h101.4c21.4 0 38.7 17.3 38.7 38.7s-17.2 38.8-38.6 38.8zM38.7 296.2C17.3 296.2 0 278.9 0 257.5V156.9C0 70.4 70.4 0 156.9 0h101.4C279.7 0 297 17.3 297 38.7s-17.3 38.7-38.7 38.7H156.9c-43.8 0-79.4 35.6-79.4 79.4v100.6c-0.1 21.5-17.4 38.8-38.8 38.8zM867.1 1024H766.5c-21.4 0-38.7-17.3-38.7-38.7s17.3-38.7 38.7-38.7h100.6c43.8 0 79.4-35.6 79.4-79.4V765.7c0-21.4 17.3-38.7 38.7-38.7s38.7 17.3 38.7 38.7v101.4c0.1 86.5-70.3 156.9-156.8 156.9z\" p-id=\"7734\" data-spm-anchor-id=\"a313x.7781069.0.i26\" class=\"selected\" fill=\"#515151\"></path><path d=\"M779.9 550.7H244.1c-21.4 0-38.7-17.3-38.7-38.7s17.3-38.7 38.7-38.7h535.7c21.4 0 38.7 17.3 38.7 38.7s-17.2 38.7-38.6 38.7z\" p-id=\"7735\" data-spm-anchor-id=\"a313x.7781069.0.i27\" class=\"selected\" fill=\"#515151\"></path></svg>' +\n            '<img src=\"' + imgUrl + '\" alt=\"\"></div>';\n        layer.open({\n            type    : 1,\n            title   : qrSvg + tipsMsg.mobile_order,\n            closeBtn: 2,\n            area    : msgArea,\n            skin    : 'home-tips',\n            anim    : 5,\n            shade   : 0.7,\n            content : html\n        });\n    }\n    w.tipsMsg = function (title, content) {\n        layer.open({\n            type    : 1,\n            title   : tipsSvg + title,\n            closeBtn: 2,\n            area    : msgArea,\n            skin    : 'home-tips',\n            anim    : 5,\n            shade   : 0.7,\n            content : content\n        });\n    }\n}(window);\n"
  },
  {
    "path": "public/assets/style/js/clipboard/clipboard.js",
    "content": "/*!\n * clipboard.js v2.0.6\n * https://clipboardjs.com/\n * \n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 6);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nfunction select(element) {\n    var selectedText;\n\n    if (element.nodeName === 'SELECT') {\n        element.focus();\n\n        selectedText = element.value;\n    }\n    else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n        var isReadOnly = element.hasAttribute('readonly');\n\n        if (!isReadOnly) {\n            element.setAttribute('readonly', '');\n        }\n\n        element.select();\n        element.setSelectionRange(0, element.value.length);\n\n        if (!isReadOnly) {\n            element.removeAttribute('readonly');\n        }\n\n        selectedText = element.value;\n    }\n    else {\n        if (element.hasAttribute('contenteditable')) {\n            element.focus();\n        }\n\n        var selection = window.getSelection();\n        var range = document.createRange();\n\n        range.selectNodeContents(element);\n        selection.removeAllRanges();\n        selection.addRange(range);\n\n        selectedText = selection.toString();\n    }\n\n    return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nfunction E () {\n  // Keep this empty so it's easier to inherit from\n  // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n  on: function (name, callback, ctx) {\n    var e = this.e || (this.e = {});\n\n    (e[name] || (e[name] = [])).push({\n      fn: callback,\n      ctx: ctx\n    });\n\n    return this;\n  },\n\n  once: function (name, callback, ctx) {\n    var self = this;\n    function listener () {\n      self.off(name, listener);\n      callback.apply(ctx, arguments);\n    };\n\n    listener._ = callback\n    return this.on(name, listener, ctx);\n  },\n\n  emit: function (name) {\n    var data = [].slice.call(arguments, 1);\n    var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n    var i = 0;\n    var len = evtArr.length;\n\n    for (i; i < len; i++) {\n      evtArr[i].fn.apply(evtArr[i].ctx, data);\n    }\n\n    return this;\n  },\n\n  off: function (name, callback) {\n    var e = this.e || (this.e = {});\n    var evts = e[name];\n    var liveEvents = [];\n\n    if (evts && callback) {\n      for (var i = 0, len = evts.length; i < len; i++) {\n        if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n          liveEvents.push(evts[i]);\n      }\n    }\n\n    // Remove event from queue to prevent memory leak\n    // Suggested by https://github.com/lazd\n    // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n    (liveEvents.length)\n      ? e[name] = liveEvents\n      : delete e[name];\n\n    return this;\n  }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar is = __webpack_require__(3);\nvar delegate = __webpack_require__(4);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n    if (!target && !type && !callback) {\n        throw new Error('Missing required arguments');\n    }\n\n    if (!is.string(type)) {\n        throw new TypeError('Second argument must be a String');\n    }\n\n    if (!is.fn(callback)) {\n        throw new TypeError('Third argument must be a Function');\n    }\n\n    if (is.node(target)) {\n        return listenNode(target, type, callback);\n    }\n    else if (is.nodeList(target)) {\n        return listenNodeList(target, type, callback);\n    }\n    else if (is.string(target)) {\n        return listenSelector(target, type, callback);\n    }\n    else {\n        throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n    }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n    node.addEventListener(type, callback);\n\n    return {\n        destroy: function() {\n            node.removeEventListener(type, callback);\n        }\n    }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n    Array.prototype.forEach.call(nodeList, function(node) {\n        node.addEventListener(type, callback);\n    });\n\n    return {\n        destroy: function() {\n            Array.prototype.forEach.call(nodeList, function(node) {\n                node.removeEventListener(type, callback);\n            });\n        }\n    }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n    return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n    return value !== undefined\n        && value instanceof HTMLElement\n        && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return value !== undefined\n        && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n        && ('length' in value)\n        && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n    return typeof value === 'string'\n        || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return type === '[object Function]';\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar closest = __webpack_require__(5);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n    var listenerFn = listener.apply(this, arguments);\n\n    element.addEventListener(type, listenerFn, useCapture);\n\n    return {\n        destroy: function() {\n            element.removeEventListener(type, listenerFn, useCapture);\n        }\n    }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n    // Handle the regular Element usage\n    if (typeof elements.addEventListener === 'function') {\n        return _delegate.apply(null, arguments);\n    }\n\n    // Handle Element-less usage, it defaults to global delegation\n    if (typeof type === 'function') {\n        // Use `document` as the first parameter, then apply arguments\n        // This is a short way to .unshift `arguments` without running into deoptimizations\n        return _delegate.bind(null, document).apply(null, arguments);\n    }\n\n    // Handle Selector-based usage\n    if (typeof elements === 'string') {\n        elements = document.querySelectorAll(elements);\n    }\n\n    // Handle Array-like based usage\n    return Array.prototype.map.call(elements, function (element) {\n        return _delegate(element, selector, type, callback, useCapture);\n    });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n    return function(e) {\n        e.delegateTarget = closest(e.target, selector);\n\n        if (e.delegateTarget) {\n            callback.call(element, e);\n        }\n    }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n    var proto = Element.prototype;\n\n    proto.matches = proto.matchesSelector ||\n                    proto.mozMatchesSelector ||\n                    proto.msMatchesSelector ||\n                    proto.oMatchesSelector ||\n                    proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n    while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n        if (typeof element.matches === 'function' &&\n            element.matches(selector)) {\n          return element;\n        }\n        element = element.parentNode;\n    }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(0);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n\n// CONCATENATED MODULE: ./src/clipboard-action.js\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n/**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\n\nvar clipboard_action_ClipboardAction = function () {\n    /**\n     * @param {Object} options\n     */\n    function ClipboardAction(options) {\n        _classCallCheck(this, ClipboardAction);\n\n        this.resolveOptions(options);\n        this.initSelection();\n    }\n\n    /**\n     * Defines base properties passed from constructor.\n     * @param {Object} options\n     */\n\n\n    _createClass(ClipboardAction, [{\n        key: 'resolveOptions',\n        value: function resolveOptions() {\n            var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n            this.action = options.action;\n            this.container = options.container;\n            this.emitter = options.emitter;\n            this.target = options.target;\n            this.text = options.text;\n            this.trigger = options.trigger;\n\n            this.selectedText = '';\n        }\n\n        /**\n         * Decides which selection strategy is going to be applied based\n         * on the existence of `text` and `target` properties.\n         */\n\n    }, {\n        key: 'initSelection',\n        value: function initSelection() {\n            if (this.text) {\n                this.selectFake();\n            } else if (this.target) {\n                this.selectTarget();\n            }\n        }\n\n        /**\n         * Creates a fake textarea element, sets its value from `text` property,\n         * and makes a selection on it.\n         */\n\n    }, {\n        key: 'selectFake',\n        value: function selectFake() {\n            var _this = this;\n\n            var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n\n            this.removeFake();\n\n            this.fakeHandlerCallback = function () {\n                return _this.removeFake();\n            };\n            this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n\n            this.fakeElem = document.createElement('textarea');\n            // Prevent zooming on iOS\n            this.fakeElem.style.fontSize = '12pt';\n            // Reset box model\n            this.fakeElem.style.border = '0';\n            this.fakeElem.style.padding = '0';\n            this.fakeElem.style.margin = '0';\n            // Move element out of screen horizontally\n            this.fakeElem.style.position = 'absolute';\n            this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\n            // Move element to the same position vertically\n            var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n            this.fakeElem.style.top = yPosition + 'px';\n\n            this.fakeElem.setAttribute('readonly', '');\n            this.fakeElem.value = this.text;\n\n            this.container.appendChild(this.fakeElem);\n\n            this.selectedText = select_default()(this.fakeElem);\n            this.copyText();\n        }\n\n        /**\n         * Only removes the fake element after another click event, that way\n         * a user can hit `Ctrl+C` to copy because selection still exists.\n         */\n\n    }, {\n        key: 'removeFake',\n        value: function removeFake() {\n            if (this.fakeHandler) {\n                this.container.removeEventListener('click', this.fakeHandlerCallback);\n                this.fakeHandler = null;\n                this.fakeHandlerCallback = null;\n            }\n\n            if (this.fakeElem) {\n                this.container.removeChild(this.fakeElem);\n                this.fakeElem = null;\n            }\n        }\n\n        /**\n         * Selects the content from element passed on `target` property.\n         */\n\n    }, {\n        key: 'selectTarget',\n        value: function selectTarget() {\n            this.selectedText = select_default()(this.target);\n            this.copyText();\n        }\n\n        /**\n         * Executes the copy operation based on the current selection.\n         */\n\n    }, {\n        key: 'copyText',\n        value: function copyText() {\n            var succeeded = void 0;\n\n            try {\n                succeeded = document.execCommand(this.action);\n            } catch (err) {\n                succeeded = false;\n            }\n\n            this.handleResult(succeeded);\n        }\n\n        /**\n         * Fires an event based on the copy operation result.\n         * @param {Boolean} succeeded\n         */\n\n    }, {\n        key: 'handleResult',\n        value: function handleResult(succeeded) {\n            this.emitter.emit(succeeded ? 'success' : 'error', {\n                action: this.action,\n                text: this.selectedText,\n                trigger: this.trigger,\n                clearSelection: this.clearSelection.bind(this)\n            });\n        }\n\n        /**\n         * Moves focus away from `target` and back to the trigger, removes current selection.\n         */\n\n    }, {\n        key: 'clearSelection',\n        value: function clearSelection() {\n            if (this.trigger) {\n                this.trigger.focus();\n            }\n            document.activeElement.blur();\n            window.getSelection().removeAllRanges();\n        }\n\n        /**\n         * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n         * @param {String} action\n         */\n\n    }, {\n        key: 'destroy',\n\n\n        /**\n         * Destroy lifecycle.\n         */\n        value: function destroy() {\n            this.removeFake();\n        }\n    }, {\n        key: 'action',\n        set: function set() {\n            var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n\n            this._action = action;\n\n            if (this._action !== 'copy' && this._action !== 'cut') {\n                throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n            }\n        }\n\n        /**\n         * Gets the `action` property.\n         * @return {String}\n         */\n        ,\n        get: function get() {\n            return this._action;\n        }\n\n        /**\n         * Sets the `target` property using an element\n         * that will be have its content copied.\n         * @param {Element} target\n         */\n\n    }, {\n        key: 'target',\n        set: function set(target) {\n            if (target !== undefined) {\n                if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\n                    if (this.action === 'copy' && target.hasAttribute('disabled')) {\n                        throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n                    }\n\n                    if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n                        throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n                    }\n\n                    this._target = target;\n                } else {\n                    throw new Error('Invalid \"target\" value, use a valid Element');\n                }\n            }\n        }\n\n        /**\n         * Gets the `target` property.\n         * @return {String|HTMLElement}\n         */\n        ,\n        get: function get() {\n            return this._target;\n        }\n    }]);\n\n    return ClipboardAction;\n}();\n\n/* harmony default export */ var clipboard_action = (clipboard_action_ClipboardAction);\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(1);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(2);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n\n// CONCATENATED MODULE: ./src/clipboard.js\nvar clipboard_typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clipboard_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\nvar clipboard_Clipboard = function (_Emitter) {\n    _inherits(Clipboard, _Emitter);\n\n    /**\n     * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n     * @param {Object} options\n     */\n    function Clipboard(trigger, options) {\n        clipboard_classCallCheck(this, Clipboard);\n\n        var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));\n\n        _this.resolveOptions(options);\n        _this.listenClick(trigger);\n        return _this;\n    }\n\n    /**\n     * Defines if attributes would be resolved using internal setter functions\n     * or custom functions that were passed in the constructor.\n     * @param {Object} options\n     */\n\n\n    clipboard_createClass(Clipboard, [{\n        key: 'resolveOptions',\n        value: function resolveOptions() {\n            var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n            this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n            this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n            this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n            this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n        }\n\n        /**\n         * Adds a click event listener to the passed trigger.\n         * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n         */\n\n    }, {\n        key: 'listenClick',\n        value: function listenClick(trigger) {\n            var _this2 = this;\n\n            this.listener = listen_default()(trigger, 'click', function (e) {\n                return _this2.onClick(e);\n            });\n        }\n\n        /**\n         * Defines a new `ClipboardAction` on each click event.\n         * @param {Event} e\n         */\n\n    }, {\n        key: 'onClick',\n        value: function onClick(e) {\n            var trigger = e.delegateTarget || e.currentTarget;\n\n            if (this.clipboardAction) {\n                this.clipboardAction = null;\n            }\n\n            this.clipboardAction = new clipboard_action({\n                action: this.action(trigger),\n                target: this.target(trigger),\n                text: this.text(trigger),\n                container: this.container,\n                trigger: trigger,\n                emitter: this\n            });\n        }\n\n        /**\n         * Default `action` lookup function.\n         * @param {Element} trigger\n         */\n\n    }, {\n        key: 'defaultAction',\n        value: function defaultAction(trigger) {\n            return getAttributeValue('action', trigger);\n        }\n\n        /**\n         * Default `target` lookup function.\n         * @param {Element} trigger\n         */\n\n    }, {\n        key: 'defaultTarget',\n        value: function defaultTarget(trigger) {\n            var selector = getAttributeValue('target', trigger);\n\n            if (selector) {\n                return document.querySelector(selector);\n            }\n        }\n\n        /**\n         * Returns the support of the given action, or all actions if no action is\n         * given.\n         * @param {String} [action]\n         */\n\n    }, {\n        key: 'defaultText',\n\n\n        /**\n         * Default `text` lookup function.\n         * @param {Element} trigger\n         */\n        value: function defaultText(trigger) {\n            return getAttributeValue('text', trigger);\n        }\n\n        /**\n         * Destroy lifecycle.\n         */\n\n    }, {\n        key: 'destroy',\n        value: function destroy() {\n            this.listener.destroy();\n\n            if (this.clipboardAction) {\n                this.clipboardAction.destroy();\n                this.clipboardAction = null;\n            }\n        }\n    }], [{\n        key: 'isSupported',\n        value: function isSupported() {\n            var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n\n            var actions = typeof action === 'string' ? [action] : action;\n            var support = !!document.queryCommandSupported;\n\n            actions.forEach(function (action) {\n                support = support && !!document.queryCommandSupported(action);\n            });\n\n            return support;\n        }\n    }]);\n\n    return Clipboard;\n}(tiny_emitter_default.a);\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\n\nfunction getAttributeValue(suffix, element) {\n    var attribute = 'data-clipboard-' + suffix;\n\n    if (!element.hasAttribute(attribute)) {\n        return;\n    }\n\n    return element.getAttribute(attribute);\n}\n\n/* harmony default export */ var clipboard = __webpack_exports__[\"default\"] = (clipboard_Clipboard);\n\n/***/ })\n/******/ ])[\"default\"];\n});"
  },
  {
    "path": "public/assets/style/main.css",
    "content": "* {\n    margin: 0;\n    padding: 0;\n}\nbody {\n    background-color: #F2F2F2;\n}\n\n.cardcon {\n    margin-top: 20px;\n}\n\n.logo {\n    pointer-events: none;\n}\n\n.footer-wrap {\n    text-align: center;\n    color: #909399;\n    font-size: 15px;\n\n}\n.product-info {\n    background-color:#e2e2e2;\n    padding: 10px;\n    margin-bottom: 5px;\n    padding-left: 35px;\n}\n\n.product-price {\n    color: #1E9FFF;\n    font-size: 20px;\n    font-weight: 500;\n}\n.product-pay-price{\n    margin-top: 10px;\n    color: #F40;\n    font-size: 20px;\n    font-weight: 500;\n}\n\n.ws-price {\n    color: #01AAED;\n    font-size: 14px;\n    font-weight: 500;\n}\n\n.product-price-cost-price {\n    text-decoration: line-through;\n    padding-left: 10px;\n}\n\n\n.buy-prompt{\n    padding: 20px;\n}\n\n.errpanl {\n    margin-top: 20px;\n}\n\n.order-info {\n    height: 75px;\n    border: 1px solid #ccc;\n    overflow-wrap: break-word;\n    padding: 5px;\n    border-radius: 2px 2px 0 0;\n    overflow:auto;\n}\n\n.info-box {\n    border-top: 2px solid #fd7f83;\n    padding-top: 20px;\n}\n\n.info-ui {\n    font-size: 15px;\n}\n.info-ui strong {\n    font-size: 16px;\n    color: #666;\n    font-weight: bold;\n}\n\nul {\n    display: block;\n    list-style-type: disc;\n    margin-block-start: 1em;\n    margin-block-end: 1em;\n    margin-inline-start: 0px;\n    margin-inline-end: 0px;\n    padding-inline-start: 10px;\n}\n\n.product-box {\n    padding: 10px;\n}\n\n.product-panl{\n    border: 1px solid #dddddd;\n}\n\n.product-box-info{\n    padding: 10px;\n}\n.product-box-price{\n    display: inline-block;\n    color: #1E9FFF;\n    font-size: 15px;\n    font-weight: 500;\n}\n\n.product-title{\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    font-size: 14px;\n    line-height: 20px;\n    width: 100%;\n    overflow: hidden;\n    color: #666;\n}\n\n.product-class span{\n    height: 20px;\n    line-height: 20px;\n    border-radius: 2px;\n}\n\n.product-volume {\n    float: right;\n    font-size: 10px;\n    color: #666;\n    font-weight: 500;\n}\n\n.product-content img {\n    max-width: 100%;\n    height: auto;\n}\n\n\n\n"
  },
  {
    "path": "public/assets/unicorn/css/base.css",
    "content": "\n* {\n    margin: 0;\n    padding: 0;\n    /* css3盒子模型 */\n    box-sizing: border-box;\n}\n\nem,\ni {\n    font-style: normal\n}\n\n\n\nli {\n    list-style: none\n}\n\nimg {\n    /* border 0 照顾低版本浏览器 如果 图片外面包含了链接会有边框的问题 */\n    border: 0;\n\n    vertical-align: middle\n}\n\nbutton {\n\n    cursor: pointer\n}\n\na {\n    color: #666;\n    text-decoration: none\n}\n\nbutton,\ninput {\n    font-family: Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, \"\\5B8B\\4F53\", sans-serif;\n    border: 0; \n    outline: none;\n}\n\nbody {\n    -webkit-font-smoothing: antialiased;\n    background-color: #fff;\n    font: 14px/1.5 Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, \"\\5B8B\\4F53\", sans-serif;\n}\n\n.hide,\n.none {\n    display: none\n}\n"
  },
  {
    "path": "public/assets/unicorn/css/common.css",
    "content": "@font-face {\n    font-family: 'iconfont';\n    src: url('../fonts/iconfont.woff2?t=1631608872177') format('woff2'),\n    url('../fonts/iconfont.woff?t=1631608872177') format('woff'),\n    url('../fonts/iconfont.ttf?t=1631608872177') format('truetype');\n}\n.ali-icon {\n    font-family: \"iconfont\" !important;\n    font-style: normal;\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n}\n\n.fl {\n    float: left;\n}\n.fr {\n    float: right;\n}\n\n/* 页面装载 */\n.page-wrapper {\n    background-color: #fff;\n}\n\n.header-top {\n    background-color: #f1f1f1;\n    border-bottom: 1px solid #dadada;\n    -webkit-box-shadow: 0 -1px 3px rgb(0 0 0 / 3%) inset;\n    box-shadow: 0 -1px 3px rgb(0 0 0 / 3%) inset;\n    font-size: 14px;\n}\n\n.header-top-right-btns {\n    float: right;\n    text-align: center;\n    font-size: 0;\n}\n\n.header-top-right-btns .btn-group>button {\n    padding: 8px 10px;\n    margin: 0;\n    text-align: center;\n    color: #999;\n    font-size: 14px;\n    border-right: 1px solid #e3e3e3;\n    border-left: 1px solid transparent;\n}\n\n.btn-group>button:hover {\n    color: #e84c3d;\n    background-color: #fafafa;\n    border-right-color: #e3e3e3;\n}\n\n.header-top-right-btns .btn-group:last-child>button {\n    border-right-color: transparent;\n}\n\n.header {\n    padding: 20px 0;\n    border-bottom: 1px solid #eaeaea;\n    background: #fff;\n}\n\n.logo img {\n    height: 52px;\n}\n\n.footer {\n    background-color:transparent;\n}\n"
  },
  {
    "path": "public/assets/unicorn/css/index.css",
    "content": ".recommend p {\n    font-size: 14px;\n}\n\n.category {\n    padding: 40px 0;\n}\n\n.separator {\n    display: block;\n    width: 60px;\n    height: 5px;\n    margin: 15px auto 15px;\n    background-color: #cccccc;\n    position: relative;\n    border: 1px solid #cccccc;\n}\n\n.separator:after {\n    width: 30px;\n    height: 5px;\n    background: #333333;\n    position: absolute;\n    top: -1px;\n    left: -1px;\n    content: \"\";\n}\n\n.category-menus li {\n    display: inline-block;\n    margin: 4px;\n}\n\n.goods-buy {\n    line-height: 40px;\n    font-size: 13px;\n}\n\n\n.goods-introduction-cate {\n    display: -webkit-box;\n    overflow: hidden;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n}\n\n\n\n.buy-form label {\n    font-size: 16px;\n}"
  },
  {
    "path": "public/assets/unicorn/js/bootstrap-input-spinner.js",
    "content": "/**\n * Author and copyright: Stefan Haack (https://shaack.com)\n * Repository: https://github.com/shaack/bootstrap-input-spinner\n * License: MIT, see file 'LICENSE'\n */\n\n;(function ($) {\n    \"use strict\"\n\n    // the default editor for parsing and rendering\n    var I18nEditor = function (props, element) {\n        var locale = props.locale || \"en-US\"\n\n        this.parse = function (customFormat) {\n            var numberFormat = new Intl.NumberFormat(locale)\n            var thousandSeparator = numberFormat.format(11111).replace(/1/g, '') || '.'\n            var decimalSeparator = numberFormat.format(1.1).replace(/1/g, '')\n            return parseFloat(customFormat\n                .replace(new RegExp(' ', 'g'), '')\n                .replace(new RegExp('\\\\' + thousandSeparator, 'g'), '')\n                .replace(new RegExp('\\\\' + decimalSeparator), '.')\n            )\n        }\n\n        this.render = function (number) {\n            var decimals = parseInt(element.getAttribute(\"data-decimals\")) || 0\n            var digitGrouping = !(element.getAttribute(\"data-digit-grouping\") === \"false\")\n            var numberFormat = new Intl.NumberFormat(locale, {\n                minimumFractionDigits: decimals,\n                maximumFractionDigits: decimals,\n                useGrouping: digitGrouping\n            })\n            return numberFormat.format(number)\n        }\n    }\n\n    var triggerKeyPressed = false\n    var originalVal = $.fn.val\n    $.fn.val = function (value) {\n        if (arguments.length >= 1) {\n            for (var i = 0; i < this.length; i++) {\n                if (this[i][\"bootstrap-input-spinner\"] && this[i].setValue) {\n                    this[i].setValue(value)\n                }\n            }\n        }\n        return originalVal.apply(this, arguments)\n    }\n\n    $.fn.inputSpinner = function (methodOrProps) {\n\n        if (methodOrProps === \"destroy\") {\n            this.each(function () {\n                if (this[\"bootstrap-input-spinner\"]) {\n                    this.destroyInputSpinner()\n                } else {\n                    console.warn(\"element\", this, \"is no bootstrap-input-spinner\")\n                }\n            })\n            return this\n        }\n\n        var props = {\n            decrementButton: \"<strong>&minus;</strong>\", // button text\n            incrementButton: \"<strong>&plus;</strong>\", // ..\n            groupClass: \"\", // css class of the resulting input-group\n            buttonsClass: \"btn-outline-secondary\",\n            buttonsWidth: \"2.5rem\",\n            textAlign: \"center\", // alignment of the entered number\n            autoDelay: 500, // ms threshold before auto value change\n            autoInterval: 50, // speed of auto value change\n            buttonsOnly: false, // set this `true` to disable the possibility to enter or paste the number via keyboard\n            keyboardStepping: true, // set this to `false` to disallow the use of the up and down arrow keys to step\n            locale: navigator.language, // the locale, per default detected automatically from the browser\n            editor: I18nEditor, // the editor (parsing and rendering of the input)\n            template: // the template of the input\n                '<div class=\"input-group ${groupClass}\">' +\n                '<button style=\"min-width: ${buttonsWidth}\" class=\"btn btn-decrement ${buttonsClass} btn-minus\" type=\"button\">${decrementButton}</button>' +\n                '<input type=\"text\" inputmode=\"decimal\" style=\"text-align: ${textAlign}\" class=\"form-control form-control-text-input\"/>' +\n                '<button style=\"min-width: ${buttonsWidth}\" class=\"btn btn-increment ${buttonsClass} btn-plus\" type=\"button\">${incrementButton}</button>' +\n                '</div>'\n        }\n\n        for (var option in methodOrProps) {\n            // noinspection JSUnfilteredForInLoop\n            props[option] = methodOrProps[option]\n        }\n\n        var html = props.template\n            .replace(/\\${groupClass}/g, props.groupClass)\n            .replace(/\\${buttonsWidth}/g, props.buttonsWidth)\n            .replace(/\\${buttonsClass}/g, props.buttonsClass)\n            .replace(/\\${decrementButton}/g, props.decrementButton)\n            .replace(/\\${incrementButton}/g, props.incrementButton)\n            .replace(/\\${textAlign}/g, props.textAlign)\n\n        this.each(function () {\n\n            if (this[\"bootstrap-input-spinner\"]) {\n                console.warn(\"element\", this, \"is already a bootstrap-input-spinner\")\n            } else {\n\n                var $original = $(this)\n                $original[0][\"bootstrap-input-spinner\"] = true\n                $original.hide()\n                $original[0].inputSpinnerEditor = new props.editor(props, this)\n\n                var autoDelayHandler = null\n                var autoIntervalHandler = null\n\n                var $inputGroup = $(html)\n                var $buttonDecrement = $inputGroup.find(\".btn-decrement\")\n                var $buttonIncrement = $inputGroup.find(\".btn-increment\")\n                var $input = $inputGroup.find(\"input\")\n                var $label = $(\"label[for='\" + $original.attr(\"id\") + \"']\")\n                if (!$label[0]) {\n                    $label = $original.closest(\"label\")\n                }\n\n                var min = null\n                var max = null\n                var step = null\n\n                updateAttributes()\n\n                var value = parseFloat($original[0].value)\n\n                var prefix = $original.attr(\"data-prefix\") || \"\"\n                var suffix = $original.attr(\"data-suffix\") || \"\"\n\n                if (prefix) {\n                    var prefixElement = $('<span class=\"input-group-text\">' + prefix + '</span>')\n                    $inputGroup.find(\"input\").before(prefixElement)\n                }\n                if (suffix) {\n                    var suffixElement = $('<span class=\"input-group-text\">' + suffix + '</span>')\n                    $inputGroup.find(\"input\").after(suffixElement)\n                }\n\n                $original[0].setValue = function (newValue) {\n                    setValue(newValue)\n                }\n                $original[0].destroyInputSpinner = function () {\n                    destroy()\n                }\n\n                var observer = new MutationObserver(function () {\n                    updateAttributes()\n                    setValue(value, true)\n                })\n                observer.observe($original[0], {attributes: true})\n\n                $original.after($inputGroup)\n\n                setValue(value)\n\n                $input.on(\"paste input change focusout\", function (event) {\n                    var newValue = $input[0].value\n                    var focusOut = event.type === \"focusout\"\n                    newValue = $original[0].inputSpinnerEditor.parse(newValue)\n                    setValue(newValue, focusOut)\n                    dispatchEvent($original, event.type)\n                }).on(\"keydown\", function (event) {\n                    if (props.keyboardStepping) {\n                        if (event.which === 38) { // up arrow pressed\n                            event.preventDefault()\n                            if (!$buttonDecrement.prop(\"disabled\")) {\n                                stepHandling(step)\n                            }\n                        } else if (event.which === 40) { // down arrow pressed\n                            event.preventDefault()\n                            if (!$buttonIncrement.prop(\"disabled\")) {\n                                stepHandling(-step)\n                            }\n                        }\n                    }\n                }).on(\"keyup\", function (event) {\n                    // up/down arrow released\n                    if (props.keyboardStepping && (event.which === 38 || event.which === 40)) {\n                        event.preventDefault()\n                        resetTimer()\n                    }\n                })\n\n                onPointerDown($buttonDecrement[0], function () {\n                    if (!$buttonDecrement.prop(\"disabled\")) {\n                        stepHandling(-step)\n                    }\n                })\n                onPointerDown($buttonIncrement[0], function () {\n                    if (!$buttonIncrement.prop(\"disabled\")) {\n                        stepHandling(step)\n                    }\n                })\n                onPointerUp(document.body, function () {\n                    resetTimer()\n                })\n            }\n\n            function setValue(newValue, updateInput) {\n                if (updateInput === undefined) {\n                    updateInput = true\n                }\n                if (isNaN(newValue) || newValue === \"\") {\n                    $original[0].value = \"\"\n                    if (updateInput) {\n                        $input[0].value = \"\"\n                    }\n                    value = NaN\n                } else {\n                    newValue = parseFloat(newValue)\n                    newValue = Math.min(Math.max(newValue, min), max)\n                    // newValue = Math.round(newValue * Math.pow(10, decimals)) / Math.pow(10, decimals)\n                    $original[0].value = newValue\n                    if (updateInput) {\n                        // $input[0].value = numberFormat.format(newValue)\n                        $input[0].value = $original[0].inputSpinnerEditor.render(newValue)\n                    }\n                    value = newValue\n                }\n            }\n\n            function destroy() {\n                $original.prop(\"required\", $input.prop(\"required\"))\n                observer.disconnect()\n                resetTimer()\n                $input.off(\"paste input change focusout\")\n                $inputGroup.remove()\n                $original.show()\n                $original[0][\"bootstrap-input-spinner\"] = undefined\n                if ($label[0]) {\n                    $label.attr(\"for\", $original.attr(\"id\"))\n                }\n            }\n\n            function dispatchEvent($element, type) {\n                if (type) {\n                    setTimeout(function () {\n                        var event\n                        if (typeof (Event) === 'function') {\n                            event = new Event(type, {bubbles: true})\n                        } else { // IE\n                            event = document.createEvent('Event')\n                            event.initEvent(type, true, true)\n                        }\n                        $element[0].dispatchEvent(event)\n                    })\n                }\n            }\n\n            function stepHandling(step) {\n                calcStep(step)\n                resetTimer()\n                autoDelayHandler = setTimeout(function () {\n                    autoIntervalHandler = setInterval(function () {\n                        calcStep(step)\n                    }, props.autoInterval)\n                }, props.autoDelay)\n            }\n\n            function calcStep(step) {\n                if (isNaN(value)) {\n                    value = 0\n                }\n                setValue(Math.round(value / step) * step + step)\n                dispatchEvent($original, \"input\")\n                dispatchEvent($original, \"change\")\n            }\n\n            function resetTimer() {\n                clearTimeout(autoDelayHandler)\n                clearTimeout(autoIntervalHandler)\n            }\n\n            function updateAttributes() {\n                // copy properties from original to the new input\n                if ($original.prop(\"required\")) {\n                    $input.prop(\"required\", $original.prop(\"required\"))\n                    $original.removeAttr('required')\n                }\n                $input.prop(\"placeholder\", $original.prop(\"placeholder\"))\n                $input.attr(\"inputmode\", $original.attr(\"inputmode\") || \"decimal\")\n                var disabled = $original.prop(\"disabled\")\n                var readonly = $original.prop(\"readonly\")\n                $input.prop(\"disabled\", disabled)\n                $input.prop(\"readonly\", readonly || props.buttonsOnly)\n                $buttonIncrement.prop(\"disabled\", disabled || readonly)\n                $buttonDecrement.prop(\"disabled\", disabled || readonly)\n                if (disabled || readonly) {\n                    resetTimer()\n                }\n                var originalClass = $original.prop(\"class\")\n                var groupClass = \"\"\n                // sizing\n                if (/form-control-sm/g.test(originalClass)) {\n                    groupClass = \"input-group-sm\"\n                } else if (/form-control-lg/g.test(originalClass)) {\n                    groupClass = \"input-group-lg\"\n                }\n                var inputClass = originalClass.replace(/form-control(-(sm|lg))?/g, \"\")\n                $inputGroup.prop(\"class\", \"input-group \" + groupClass + \" \" + props.groupClass)\n                $input.prop(\"class\", \"form-control \" + inputClass)\n\n                // update the main attributes\n                min = isNaN($original.prop(\"min\")) || $original.prop(\"min\") === \"\" ? -Infinity : parseFloat($original.prop(\"min\"))\n                max = isNaN($original.prop(\"max\")) || $original.prop(\"max\") === \"\" ? Infinity : parseFloat($original.prop(\"max\"))\n                step = parseFloat($original.prop(\"step\")) || 1\n                if ($original.attr(\"hidden\")) {\n                    $inputGroup.attr(\"hidden\", $original.attr(\"hidden\"))\n                } else {\n                    $inputGroup.removeAttr(\"hidden\")\n                }\n                if ($original.attr(\"id\")) {\n                    $input.attr(\"id\", $original.attr(\"id\") + \"_MP_cBdLN29i2\")\n                    if ($label[0]) {\n                        $label.attr(\"for\", $input.attr(\"id\"))\n                    }\n                }\n            }\n        })\n\n        return this\n    }\n\n    function onPointerUp(element, callback) {\n        element.addEventListener(\"mouseup\", function (e) {\n            callback(e)\n        })\n        element.addEventListener(\"touchend\", function (e) {\n            callback(e)\n        })\n        element.addEventListener(\"keyup\", function (e) {\n            if ((e.keyCode === 32 || e.keyCode === 13)) {\n                triggerKeyPressed = false\n                callback(e)\n            }\n        })\n    }\n\n    function onPointerDown(element, callback) {\n        element.addEventListener(\"mousedown\", function (e) {\n            if (e.button === 0) {\n                e.preventDefault()\n                callback(e)\n            }\n        })\n        element.addEventListener(\"touchstart\", function (e) {\n            if (e.cancelable) {\n                e.preventDefault()\n            }\n            callback(e)\n        })\n        element.addEventListener(\"keydown\", function (e) {\n            if ((e.keyCode === 32 || e.keyCode === 13) && !triggerKeyPressed) {\n                triggerKeyPressed = true\n                callback(e)\n            }\n        })\n    }\n\n}(jQuery))\n"
  },
  {
    "path": "public/index.php",
    "content": "<?php\n\n/**\n * Laravel - A PHP Framework For Web Artisans\n *\n * @package  Laravel\n * @author   Taylor Otwell <taylor@laravel.com>\n */\n\ndefine('LARAVEL_START', microtime(true));\n\n/*\n|--------------------------------------------------------------------------\n| Register The Auto Loader\n|--------------------------------------------------------------------------\n|\n| Composer provides a convenient, automatically generated class loader for\n| our application. We just need to utilize it! We'll simply require it\n| into the script here so that we don't have to worry about manual\n| loading any of our classes later on. It feels great to relax.\n|\n*/\n\nrequire __DIR__.'/../vendor/autoload.php';\n\n/*\n|--------------------------------------------------------------------------\n| Turn On The Lights\n|--------------------------------------------------------------------------\n|\n| We need to illuminate PHP development, so let us turn on the lights.\n| This bootstraps the framework and gets it ready for use, then it\n| will load up this application so that we can run it and send\n| the responses back to the browser and delight our users.\n|\n*/\n\n$app = require_once __DIR__.'/../bootstrap/app.php';\n\n/*\n|--------------------------------------------------------------------------\n| Run The Application\n|--------------------------------------------------------------------------\n|\n| Once we have the application, we can handle the incoming request\n| through the kernel, and send the associated response back to\n| the client's browser allowing them to enjoy the creative\n| and wonderful application we have prepared for them.\n|\n*/\n\n$kernel = $app->make(Illuminate\\Contracts\\Http\\Kernel::class);\n\n$response = $kernel->handle(\n    $request = Illuminate\\Http\\Request::capture()\n);\n\n$response->send();\n\n$kernel->terminate($request, $response);\n"
  },
  {
    "path": "public/robots.txt",
    "content": "User-agent: *\nDisallow:\n"
  },
  {
    "path": "public/vendor/dcat-admin/adminlte/adminlte-blue-light.css",
    "content": "/*!\n *   AdminLTE v3.0.4\n *   Author: Colorlib\n *   Website: AdminLTE.io <http://adminlte.io>\n *   License: Open source - MIT <http://opensource.org/licenses/MIT>\n */\n\n/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */:root{--blue:#3085d6;--indigo:#5c6bc6;--purple:#6f42c1;--pink:#ff8acc;--red:#ea5455;--orange:#dda451;--yellow:#edc30e;--green:#21b978;--teal:#20c997;--cyan:#7367f0;--white:#fff;--gray:#b8c2cc;--gray-dark:#1e1e1e;--primary:#62a8ea;--secondary:#b8c2cc;--success:#21b978;--info:#4277cf;--warning:#dda451;--danger:#ea5455;--light:#f7f7f9;--dark:#22292f;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:\"Montserrat\",Helvetica,Arial,serif;--font-family-monospace:\"Montserrat\",Helvetica,Arial,serif}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(34,41,47,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Montserrat,Helvetica,Arial,serif;font-size:1rem;font-weight:400;line-height:1.45;color:#626262;text-align:left;background-color:#eff1f7}[tabindex=\"-1\"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#4c9ce7;background-color:transparent}a,a:hover{text-decoration:none}a:hover{color:#1f83e1}a:not([href]):not([tabindex]),a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:Montserrat,Helvetica,Arial,serif;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#b8c2cc;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:#2c2c2c}.h1,h1{font-size:2rem}.h2,h2{font-size:1.74rem}.h3,h3{font-size:1.51rem}.h4,h4{font-size:1.32rem}.h5,h5{font-size:1.14rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(34,41,47,.1)}.small,small{font-size:smaller;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:smaller;color:#b8c2cc}.blockquote-footer:before{content:\"\\2014\\A0\"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#eff1f7;border:1px solid #dae1e7;border-radius:.5rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#b8c2cc}code{word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:90%;color:#fff;background-color:#eee;border-radius:.25rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:90%;color:#2a2e30}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:14px;padding-left:14px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:14px;padding-left:14px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-14px;margin-left:-14px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:14px;padding-left:14px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width:576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width:768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width:992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;margin-bottom:1rem;color:#626262}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #eff1f7}.table thead th{vertical-align:bottom;border-bottom:2px solid #eff1f7}.table tbody+tbody{border-top:2px solid #eff1f7}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #eff1f7}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(34,41,47,.05)}.table-hover tbody tr:hover{color:#626262;background-color:rgba(34,41,47,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#d3e7f9}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#add2f4}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#bddbf6}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#ebeef1}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#dadfe4}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#dce1e7}.table-success,.table-success>td,.table-success>th{background-color:#c1ebd9}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8cdbb9}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#aee5cd}.table-info,.table-info>td,.table-info>th{background-color:#cad9f2}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#9db8e6}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#b6caed}.table-warning,.table-warning>td,.table-warning>th{background-color:#f5e6ce}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#edd0a5}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#f1dbb9}.table-danger,.table-danger>td,.table-danger>th{background-color:#f9cfcf}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#f4a6a7}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f6b8b8}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfd}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfbfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#f0f0f0}.table-dark,.table-dark>td,.table-dark>th{background-color:#c1c3c5}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#8c9093}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b4b6b9}.table-active,.table-active>td,.table-active>th{background-color:rgba(34,41,47,.075)}.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(23,28,32,.075)}.table .thead-dark th{color:#fff;background-color:#1e1e1e;border-color:#313131}.table .thead-light th{color:#4e5154;background-color:#ededed;border-color:#eff1f7}.table-dark{color:#fff;background-color:#1e1e1e}.table-dark td,.table-dark th,.table-dark thead th{border-color:#313131}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:34px;padding:.7rem;font-size:.96rem;font-weight:400;line-height:1.25;color:#4e5154;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#4e5154;background-color:#fff;border-color:#62a8ea;outline:0;box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.form-control::-moz-placeholder{color:rgba(0,0,0,.5);opacity:1}.form-control:-ms-input-placeholder{color:rgba(0,0,0,.5);opacity:1}.form-control::placeholder{color:rgba(0,0,0,.5);opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#f5f5f1;opacity:1}select.form-control:focus::-ms-value{color:#4e5154;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.7rem + 1px);padding-bottom:calc(.7rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.25}.col-form-label-lg{padding-top:calc(1rem + 1px);padding-bottom:calc(1rem + 1px);font-size:1.25rem;line-height:1.25}.col-form-label-sm{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:.7rem;line-height:1}.form-control-plaintext{display:block;width:100%;padding-top:.7rem;padding-bottom:.7rem;margin-bottom:0;line-height:1.25;color:#adb5bd;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:2rem;padding:.5rem 1.5rem;font-size:.7rem;line-height:1;border-radius:4px}.form-control-lg{height:calc(1.25em + 2rem + 2px);padding:1rem 2.5rem;font-size:1.25rem;line-height:1.25;border-radius:6px}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#b8c2cc}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:smaller;color:#21b978}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:1rem;line-height:1.45;color:#fff;background-color:rgba(33,185,120,.9);border-radius:.5rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#21b978;padding-right:calc(1.25em + 1.4rem);background-repeat:no-repeat;background-position:100% calc(.3125em + .35rem);background-size:calc(.625em + .7rem) calc(.625em + .7rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#21b978;box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.25em + 1.4rem);background-position:top calc(.3125em + .35rem) right calc(.3125em + .35rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#21b978;padding-right:calc(.75em + 2.75rem);background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%231e1e1e' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .7rem center/8px 10px,url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%2321b978' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E\") #fff no-repeat center right 1.7rem/calc(.625em + .7rem) calc(.625em + .7rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#21b978;box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#21b978}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#21b978}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#21b978}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#32db93;background-color:#32db93}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#21b978}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#21b978;box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:smaller;color:#ea5455}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:1rem;line-height:1.45;color:#fff;background-color:rgba(234,84,85,.9);border-radius:.5rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#ea5455;padding-right:calc(1.25em + 1.4rem);background-repeat:no-repeat;background-position:100% calc(.3125em + .35rem);background-size:calc(.625em + .7rem) calc(.625em + .7rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#ea5455;box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.25em + 1.4rem);background-position:top calc(.3125em + .35rem) right calc(.3125em + .35rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#ea5455;padding-right:calc(.75em + 2.75rem);background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%231e1e1e' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .7rem center/8px 10px,url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ea5455' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23ea5455' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E\") #fff no-repeat center right 1.7rem/calc(.625em + .7rem) calc(.625em + .7rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#ea5455;box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#ea5455}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#ea5455}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#ea5455}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#f08182;background-color:#f08182}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#ea5455}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#ea5455;box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#626262;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0 solid transparent;padding:.9rem 2rem;font-size:1rem;line-height:1;border-radius:.42rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#626262;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(98,168,234,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#2a2e30;background-color:#62a8ea;border-color:#62a8ea}.btn-primary:hover{color:#fff;background-color:#529fe8;border-color:#529fe8}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(90,150,206,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#2a2e30;background-color:#62a8ea;border-color:#62a8ea}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#4c9ce7;border-color:#4c9ce7}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(90,150,206,.5)}.btn-secondary{color:#2a2e30;background-color:#b8c2cc;border-color:#b8c2cc}.btn-secondary:hover{color:#2a2e30;background-color:#aeb9c5;border-color:#aeb9c5}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(163,172,181,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#2a2e30;background-color:#b8c2cc;border-color:#b8c2cc}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#2a2e30;background-color:#a9b5c1;border-color:#a9b5c1}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(163,172,181,.5)}.btn-success{color:#fff;background-color:#21b978;border-color:#21b978}.btn-success:hover{color:#fff;background-color:#1eaa6e;border-color:#1eaa6e}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(66,196,140,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#21b978;border-color:#21b978}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1da36a;border-color:#1da36a}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(66,196,140,.5)}.btn-info{color:#fff;background-color:#4277cf;border-color:#4277cf}.btn-info:hover{color:#fff;background-color:#346dcb;border-color:#346dcb}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(94,139,214,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#4277cf;border-color:#4277cf}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#3269c5;border-color:#3269c5}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(94,139,214,.5)}.btn-warning{color:#2a2e30;background-color:#dda451;border-color:#dda451}.btn-warning:hover{color:#2a2e30;background-color:#da9c42;border-color:#da9c42}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(194,146,76,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#2a2e30;background-color:#dda451;border-color:#dda451}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#2a2e30;background-color:#d9993c;border-color:#d9993c}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(194,146,76,.5)}.btn-danger{color:#fff;background-color:#ea5455;border-color:#ea5455}.btn-danger:hover{color:#fff;background-color:#e84445;border-color:#e84445}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(237,110,111,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#ea5455;border-color:#ea5455}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#e73d3e;border-color:#e73d3e}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(237,110,111,.5)}.btn-light{color:#2a2e30;background-color:#f7f7f9;border-color:#f7f7f9}.btn-light:hover{color:#2a2e30;background-color:#ededf1;border-color:#ededf1}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#2a2e30;background-color:#f7f7f9;border-color:#f7f7f9}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#2a2e30;background-color:#e8e8ee;border-color:#e8e8ee}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#22292f;border-color:#22292f}.btn-dark:hover{color:#fff;background-color:#1b2025;border-color:#1b2025}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(67,73,78,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#22292f;border-color:#22292f}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#171c20;border-color:#171c20}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(67,73,78,.5)}.btn-outline-primary,.btn-outline-primary:hover{color:#62a8ea;border-color:#62a8ea}.btn-outline-primary:hover{background-color:rgba(98,168,234,.1)}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(98,168,234,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#62a8ea;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#2a2e30;background-color:#62a8ea;border-color:#62a8ea}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(98,168,234,.5)}.btn-outline-secondary,.btn-outline-secondary:hover{color:#b8c2cc;border-color:#b8c2cc}.btn-outline-secondary:hover{background-color:rgba(184,194,204,.1)}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(184,194,204,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#b8c2cc;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#2a2e30;background-color:#b8c2cc;border-color:#b8c2cc}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(184,194,204,.5)}.btn-outline-success,.btn-outline-success:hover{color:#21b978;border-color:#21b978}.btn-outline-success:hover{background-color:rgba(33,185,120,.1)}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(33,185,120,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#21b978;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#21b978;border-color:#21b978}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(33,185,120,.5)}.btn-outline-info,.btn-outline-info:hover{color:#4277cf;border-color:#4277cf}.btn-outline-info:hover{background-color:rgba(66,119,207,.1)}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(66,119,207,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#4277cf;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#4277cf;border-color:#4277cf}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(66,119,207,.5)}.btn-outline-warning,.btn-outline-warning:hover{color:#dda451;border-color:#dda451}.btn-outline-warning:hover{background-color:rgba(221,164,81,.1)}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(221,164,81,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#dda451;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#2a2e30;background-color:#dda451;border-color:#dda451}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(221,164,81,.5)}.btn-outline-danger,.btn-outline-danger:hover{color:#ea5455;border-color:#ea5455}.btn-outline-danger:hover{background-color:rgba(234,84,85,.1)}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(234,84,85,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#ea5455;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#ea5455;border-color:#ea5455}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(234,84,85,.5)}.btn-outline-light,.btn-outline-light:hover{color:#f7f7f9;border-color:#f7f7f9}.btn-outline-light:hover{background-color:rgba(247,247,249,.1)}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(247,247,249,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f7f7f9;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#2a2e30;background-color:#f7f7f9;border-color:#f7f7f9}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(247,247,249,.5)}.btn-outline-dark,.btn-outline-dark:hover{color:#22292f;border-color:#22292f}.btn-outline-dark:hover{background-color:rgba(34,41,47,.1)}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(34,41,47,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#22292f;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#22292f;border-color:#22292f}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(34,41,47,.5)}.btn-link{font-weight:400;color:#4c9ce7;text-decoration:none}.btn-link:hover{color:#1f83e1;text-decoration:none}.btn-link.focus,.btn-link:focus{text-decoration:none;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#b8c2cc;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:1rem 2.5rem;font-size:1.25rem;line-height:1.25;border-radius:.4285rem}.btn-group-sm>.btn,.btn-sm{padding:.5rem 1.5rem;font-size:.7rem;line-height:1;border-radius:.4285rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:10;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.5rem 0 0;font-size:.9375rem;color:#626262;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(34,41,47,.15);border-radius:5px}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.5rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.5rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.5rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.08)}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#2a2e30;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2122;text-decoration:none;background-color:#eff1f7}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#62a8ea}.dropdown-item.disabled,.dropdown-item:disabled{color:#b8c2cc;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:1rem;color:#b8c2cc;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#2a2e30}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:1.5rem;padding-left:1.5rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:1.875rem;padding-left:1.875rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.7rem;margin-bottom:0;font-size:.96rem;font-weight:400;line-height:1.25;color:#4e5154;text-align:center;white-space:nowrap;background-color:#ededed;border:1px solid rgba(0,0,0,.2);border-radius:5px}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.25em + 2rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:1rem 2.5rem;font-size:1.25rem;line-height:1.25;border-radius:6px}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:2rem}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.5rem 1.5rem;font-size:.7rem;line-height:1;border-radius:4px}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.7rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.45rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#62a8ea;background-color:#62a8ea}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#62a8ea}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#fff;border-color:#fff}.custom-control-input:disabled~.custom-control-label{color:#b8c2cc}.custom-control-input:disabled~.custom-control-label:before{background-color:#f5f5f1}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.225rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:\"\"}.custom-control-label:after{background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#62a8ea;background-color:#62a8ea}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(98,168,234,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(98,168,234,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(98,168,234,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.225rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(98,168,234,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.25em + 1.4rem + 1px);padding:.7rem 1.7rem .7rem .7rem;font-size:.96rem;font-weight:400;line-height:1.25;color:#4e5154;vertical-align:middle;background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%231e1e1e' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .7rem center/8px 10px;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:5px;appearance:none}.custom-select:focus{border-color:#62a8ea;outline:0;box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.custom-select:focus::-ms-value{color:#4e5154;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size=\"1\"]){height:auto;padding-right:.7rem;background-image:none}.custom-select:disabled{color:#b8c2cc;background-color:#ededed}.custom-select::-ms-expand{display:none}.custom-select-sm{height:2rem;padding-top:.5rem;padding-bottom:.5rem;padding-left:1.5rem;font-size:.7rem}.custom-select-lg{height:calc(1.25em + 2rem + 2px);padding-top:1rem;padding-bottom:1rem;padding-left:2.5rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.25em + 1.4rem + 1px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#62a8ea;box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.custom-file-input:disabled~.custom-file-label{background-color:#f5f5f1}.custom-file-input:lang(en)~.custom-file-label:after{content:\"Browse\"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.25em + 1.4rem + 1px);font-weight:400;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:5px}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.7rem;line-height:1.5rem;color:#4e5154}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.25em + 1.4rem);content:\"Browse\";background-color:#ededed;border-left:inherit;border-radius:0 5px 5px 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 3px 10px 0 rgba(0,0,0,.15)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 3px 10px 0 rgba(0,0,0,.15)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 3px 10px 0 rgba(0,0,0,.15)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#62a8ea;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#fff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dae1e7;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#62a8ea;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#fff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dae1e7;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#62a8ea;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#fff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dae1e7;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.357rem .5rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#b8c2cc;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dae1e7}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#ededed #ededed #dae1e7}.nav-tabs .nav-link.disabled{color:#b8c2cc;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#4e5154;background-color:#eff1f7;border-color:#dae1e7 #dae1e7 #eff1f7}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.5rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#62a8ea}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:-.368rem;padding-bottom:-.368rem;margin-right:1rem;font-size:2rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.357rem;padding-bottom:.357rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:2rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.42rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:\"\";background:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(34,41,47,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(34,41,47,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(34,41,47,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(34,41,47,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(34,41,47,.9)}.navbar-light .navbar-toggler{color:rgba(34,41,47,.5);border-color:rgba(34,41,47,.1)}.navbar-light .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(34, 41, 47, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-light .navbar-text{color:rgba(34,41,47,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(34,41,47,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(34,41,47,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{margin-bottom:0;background-color:rgba(34,41,47,.03);border-bottom:1px solid rgba(34,41,47,.125)}.card-header:first-child{border-radius:calc(.5rem - 1px) calc(.5rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(34,41,47,.03);border-top:1px solid rgba(34,41,47,.125)}.card-footer:last-child{border-radius:0 0 calc(.5rem - 1px) calc(.5rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.5rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.5rem - 1px);border-bottom-left-radius:calc(.5rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:14px}@media (min-width:576px){.card-deck{flex-flow:row wrap;margin-right:-14px;margin-left:-14px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:14px;margin-bottom:0;margin-left:14px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:14px}@media (min-width:576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-moz-column-count:3;column-count:3;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#ededed;border-radius:.5rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;color:#b8c2cc;content:\"/\"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#b8c2cc}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.5rem}.page-link{position:relative;display:block;padding:.65rem .911rem;margin-left:-1px;line-height:1.25;color:#4c9ce7;background-color:#fff;border:1px solid #dae1e7}.page-link:hover{z-index:2;color:#1f83e1;text-decoration:none;background-color:#ededed;border-color:#dae1e7}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(98,168,234,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.page-item:last-child .page-link{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#62a8ea;border-color:#62a8ea}.page-item.disabled .page-link{color:#b8c2cc;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dae1e7}.pagination-lg .page-link{padding:.5rem 1rem;font-size:2rem;line-height:1.25}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.6rem;border-bottom-left-radius:.6rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.6rem;border-bottom-right-radius:.6rem}.pagination-sm .page-link{padding:.5rem .75rem;font-size:1rem;line-height:1}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.5rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#2a2e30;background-color:#62a8ea}a.badge-primary:focus,a.badge-primary:hover{color:#2a2e30;background-color:#358fe4}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(98,168,234,.5)}.badge-secondary{color:#2a2e30;background-color:#b8c2cc}a.badge-secondary:focus,a.badge-secondary:hover{color:#2a2e30;background-color:#9aa9b7}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(184,194,204,.5)}.badge-success{color:#fff;background-color:#21b978}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#198e5c}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(33,185,120,.5)}.badge-info{color:#fff;background-color:#4277cf}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#2d5fb1}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(66,119,207,.5)}.badge-warning{color:#2a2e30;background-color:#dda451}a.badge-warning:focus,a.badge-warning:hover{color:#2a2e30;background-color:#d28d29}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(221,164,81,.5)}.badge-danger{color:#fff;background-color:#ea5455}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#e42728}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(234,84,85,.5)}.badge-light{color:#2a2e30;background-color:#f7f7f9}a.badge-light:focus,a.badge-light:hover{color:#2a2e30;background-color:#dadae3}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(247,247,249,.5)}.badge-dark{color:#fff;background-color:#22292f}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#0d0f11}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(34,41,47,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#ededed;border-radius:.6rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.5rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close,.alert-dismissible .mailbox-attachment-close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#436b90;background-color:#e0eefb;border-color:#d3e7f9}.alert-primary hr{border-top-color:#bddbf6}.alert-primary .alert-link{color:#33516d}.alert-secondary{color:#707981;background-color:#f1f3f5;border-color:#ebeef1}.alert-secondary hr{border-top-color:#dce1e7}.alert-secondary .alert-link{color:#585f66}.alert-success{color:#217455;background-color:#d3f1e4;border-color:#c1ebd9}.alert-success hr{border-top-color:#aee5cd}.alert-success .alert-link{color:#164c38}.alert-info{color:#335282;background-color:#d9e4f5;border-color:#cad9f2}.alert-info hr{border-top-color:#b6caed}.alert-info .alert-link{color:#253b5d}.alert-warning{color:#836941;background-color:#f8eddc;border-color:#f5e6ce}.alert-warning hr{border-top-color:#f1dbb9}.alert-warning .alert-link{color:#614e30}.alert-danger{color:#8a3f43;background-color:#fbdddd;border-color:#f9cfcf}.alert-danger hr{border-top-color:#f6b8b8}.alert-danger .alert-link{color:#672f32}.alert-light{color:#919498;background-color:#fdfdfe;border-color:#fdfdfd}.alert-light hr{border-top-color:#f0f0f0}.alert-light .alert-link{color:#777a7f}.alert-dark{color:#22292f;background-color:#d3d4d5;border-color:#c1c3c5}.alert-dark hr{border-top-color:#b4b6b9}.alert-dark .alert-link{color:#0d0f11}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#ededed;border-radius:.5rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#62a8ea;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#4e5154;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#4e5154;text-decoration:none;background-color:#babfc7}.list-group-item-action:active{color:#626262;background-color:#ededed}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(34,41,47,.125)}.list-group-item:first-child{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.list-group-item.disabled,.list-group-item:disabled{color:#b8c2cc;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#62a8ea;border-color:#62a8ea}.list-group-horizontal{flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#436b90;background-color:#d3e7f9}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#436b90;background-color:#bddbf6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#436b90;border-color:#436b90}.list-group-item-secondary{color:#707981;background-color:#ebeef1}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#707981;background-color:#dce1e7}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#707981;border-color:#707981}.list-group-item-success{color:#217455;background-color:#c1ebd9}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#217455;background-color:#aee5cd}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#217455;border-color:#217455}.list-group-item-info{color:#335282;background-color:#cad9f2}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#335282;background-color:#b6caed}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#335282;border-color:#335282}.list-group-item-warning{color:#836941;background-color:#f5e6ce}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#836941;background-color:#f1dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#836941;border-color:#836941}.list-group-item-danger{color:#8a3f43;background-color:#f9cfcf}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#8a3f43;background-color:#f6b8b8}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#8a3f43;border-color:#8a3f43}.list-group-item-light{color:#919498;background-color:#fdfdfd}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#919498;background-color:#f0f0f0}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#919498;border-color:#919498}.list-group-item-dark{color:#22292f;background-color:#c1c3c5}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#22292f;background-color:#b4b6b9}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#22292f;border-color:#22292f}.close,.mailbox-attachment-close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#22292f;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.mailbox-attachment-close:hover{color:#22292f;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover,.mailbox-attachment-close:not(:disabled):not(.disabled):focus,.mailbox-attachment-close:not(:disabled):not(.disabled):hover{opacity:.75}button.close,button.mailbox-attachment-close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled,a.disabled.mailbox-attachment-close{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(34,41,47,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#b8c2cc;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);content:\"\"}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(34,41,47,.2);border-radius:.6rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#22292f}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #ededed;border-top-left-radius:.6rem;border-top-right-radius:.6rem}.modal-header .close,.modal-header .mailbox-attachment-close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.45}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #ededed;border-bottom-right-radius:.6rem;border-bottom-left-radius:.6rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:Montserrat,Helvetica,Arial,serif;font-style:normal;font-weight:400;line-height:1.45;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:1rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#22292f}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#22292f}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#22292f}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#22292f}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#22292f;border-radius:.5rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:Montserrat,Helvetica,Arial,serif;font-style:normal;font-weight:400;line-height:1.45;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:1rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(34,41,47,.2);border-radius:.6rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .6rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.6rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.6rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:#2c2c2c;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.6rem - 1px);border-top-right-radius:calc(.6rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#626262}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:\"\"}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E\")}.carousel-control-next-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E\")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{transform:rotate(1turn)}}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid;border-right:.25em solid transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#358fe4!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#9aa9b7!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#198e5c!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#2d5fb1!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d28d29!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#e42728!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dadae3!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#0d0f11!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #ededed!important}.border-top{border-top:1px solid #ededed!important}.border-right{border-right:1px solid #ededed!important}.border-bottom{border-bottom:1px solid #ededed!important}.border-left{border-left:1px solid #ededed!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#62a8ea!important}.border-secondary{border-color:#b8c2cc!important}.border-success{border-color:#21b978!important}.border-info{border-color:#4277cf!important}.border-warning{border-color:#dda451!important}.border-danger{border-color:#ea5455!important}.border-light{border-color:#f7f7f9!important}.border-dark{border-color:#22292f!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.25rem!important}.rounded{border-radius:.5rem!important}.rounded-top{border-top-left-radius:.5rem!important}.rounded-right,.rounded-top{border-top-right-radius:.5rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.5rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.5rem!important}.rounded-left{border-top-left-radius:.5rem!important}.rounded-lg{border-radius:.6rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:\"\"}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:\"\"}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.8571428571%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{top:0}.fixed-footer .footer,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-footer .footer{bottom:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(34,41,47,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(34,41,47,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(34,41,47,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:\"\";background-color:transparent}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:1rem!important}.mt-1,.my-1{margin-top:1rem!important}.mr-1,.mx-1{margin-right:1rem!important}.mb-1,.my-1{margin-bottom:1rem!important}.ml-1,.mx-1{margin-left:1rem!important}.m-2{margin:1.5rem!important}.mt-2,.my-2{margin-top:1.5rem!important}.mr-2,.mx-2{margin-right:1.5rem!important}.mb-2,.my-2{margin-bottom:1.5rem!important}.ml-2,.mx-2{margin-left:1.5rem!important}.m-3{margin:3rem!important}.mt-3,.my-3{margin-top:3rem!important}.mr-3,.mx-3{margin-right:3rem!important}.mb-3,.my-3{margin-bottom:3rem!important}.ml-3,.mx-3{margin-left:3rem!important}.m-4{margin:3.5rem!important}.mt-4,.my-4{margin-top:3.5rem!important}.mr-4,.mx-4{margin-right:3.5rem!important}.mb-4,.my-4{margin-bottom:3.5rem!important}.ml-4,.mx-4{margin-left:3.5rem!important}.m-5{margin:4rem!important}.mt-5,.my-5{margin-top:4rem!important}.mr-5,.mx-5{margin-right:4rem!important}.mb-5,.my-5{margin-bottom:4rem!important}.ml-5,.mx-5{margin-left:4rem!important}.m-25{margin:.25rem!important}.mt-25,.my-25{margin-top:.25rem!important}.mr-25,.mx-25{margin-right:.25rem!important}.mb-25,.my-25{margin-bottom:.25rem!important}.ml-25,.mx-25{margin-left:.25rem!important}.m-50{margin:.5rem!important}.mt-50,.my-50{margin-top:.5rem!important}.mr-50,.mx-50{margin-right:.5rem!important}.mb-50,.my-50{margin-bottom:.5rem!important}.ml-50,.mx-50{margin-left:.5rem!important}.m-75{margin:.75rem!important}.mt-75,.my-75{margin-top:.75rem!important}.mr-75,.mx-75{margin-right:.75rem!important}.mb-75,.my-75{margin-bottom:.75rem!important}.ml-75,.mx-75{margin-left:.75rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:1rem!important}.pt-1,.py-1{padding-top:1rem!important}.pr-1,.px-1{padding-right:1rem!important}.pb-1,.py-1{padding-bottom:1rem!important}.pl-1,.px-1{padding-left:1rem!important}.p-2{padding:1.5rem!important}.pt-2,.py-2{padding-top:1.5rem!important}.pr-2,.px-2{padding-right:1.5rem!important}.pb-2,.py-2{padding-bottom:1.5rem!important}.pl-2,.px-2{padding-left:1.5rem!important}.p-3{padding:3rem!important}.pt-3,.py-3{padding-top:3rem!important}.pr-3,.px-3{padding-right:3rem!important}.pb-3,.py-3{padding-bottom:3rem!important}.pl-3,.px-3{padding-left:3rem!important}.p-4{padding:3.5rem!important}.pt-4,.py-4{padding-top:3.5rem!important}.pr-4,.px-4{padding-right:3.5rem!important}.pb-4,.py-4{padding-bottom:3.5rem!important}.pl-4,.px-4{padding-left:3.5rem!important}.p-5{padding:4rem!important}.pt-5,.py-5{padding-top:4rem!important}.pr-5,.px-5{padding-right:4rem!important}.pb-5,.py-5{padding-bottom:4rem!important}.pl-5,.px-5{padding-left:4rem!important}.p-25{padding:.25rem!important}.pt-25,.py-25{padding-top:.25rem!important}.pr-25,.px-25{padding-right:.25rem!important}.pb-25,.py-25{padding-bottom:.25rem!important}.pl-25,.px-25{padding-left:.25rem!important}.p-50{padding:.5rem!important}.pt-50,.py-50{padding-top:.5rem!important}.pr-50,.px-50{padding-right:.5rem!important}.pb-50,.py-50{padding-bottom:.5rem!important}.pl-50,.px-50{padding-left:.5rem!important}.p-75{padding:.75rem!important}.pt-75,.py-75{padding-top:.75rem!important}.pr-75,.px-75{padding-right:.75rem!important}.pb-75,.py-75{padding-bottom:.75rem!important}.pl-75,.px-75{padding-left:.75rem!important}.m-n1{margin:-1rem!important}.mt-n1,.my-n1{margin-top:-1rem!important}.mr-n1,.mx-n1{margin-right:-1rem!important}.mb-n1,.my-n1{margin-bottom:-1rem!important}.ml-n1,.mx-n1{margin-left:-1rem!important}.m-n2{margin:-1.5rem!important}.mt-n2,.my-n2{margin-top:-1.5rem!important}.mr-n2,.mx-n2{margin-right:-1.5rem!important}.mb-n2,.my-n2{margin-bottom:-1.5rem!important}.ml-n2,.mx-n2{margin-left:-1.5rem!important}.m-n3{margin:-3rem!important}.mt-n3,.my-n3{margin-top:-3rem!important}.mr-n3,.mx-n3{margin-right:-3rem!important}.mb-n3,.my-n3{margin-bottom:-3rem!important}.ml-n3,.mx-n3{margin-left:-3rem!important}.m-n4{margin:-3.5rem!important}.mt-n4,.my-n4{margin-top:-3.5rem!important}.mr-n4,.mx-n4{margin-right:-3.5rem!important}.mb-n4,.my-n4{margin-bottom:-3.5rem!important}.ml-n4,.mx-n4{margin-left:-3.5rem!important}.m-n5{margin:-4rem!important}.mt-n5,.my-n5{margin-top:-4rem!important}.mr-n5,.mx-n5{margin-right:-4rem!important}.mb-n5,.my-n5{margin-bottom:-4rem!important}.ml-n5,.mx-n5{margin-left:-4rem!important}.m-n25{margin:-.25rem!important}.mt-n25,.my-n25{margin-top:-.25rem!important}.mr-n25,.mx-n25{margin-right:-.25rem!important}.mb-n25,.my-n25{margin-bottom:-.25rem!important}.ml-n25,.mx-n25{margin-left:-.25rem!important}.m-n50{margin:-.5rem!important}.mt-n50,.my-n50{margin-top:-.5rem!important}.mr-n50,.mx-n50{margin-right:-.5rem!important}.mb-n50,.my-n50{margin-bottom:-.5rem!important}.ml-n50,.mx-n50{margin-left:-.5rem!important}.m-n75{margin:-.75rem!important}.mt-n75,.my-n75{margin-top:-.75rem!important}.mr-n75,.mx-n75{margin-right:-.75rem!important}.mb-n75,.my-n75{margin-bottom:-.75rem!important}.ml-n75,.mx-n75{margin-left:-.75rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:1rem!important}.mt-sm-1,.my-sm-1{margin-top:1rem!important}.mr-sm-1,.mx-sm-1{margin-right:1rem!important}.mb-sm-1,.my-sm-1{margin-bottom:1rem!important}.ml-sm-1,.mx-sm-1{margin-left:1rem!important}.m-sm-2{margin:1.5rem!important}.mt-sm-2,.my-sm-2{margin-top:1.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:1.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:1.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:1.5rem!important}.m-sm-3{margin:3rem!important}.mt-sm-3,.my-sm-3{margin-top:3rem!important}.mr-sm-3,.mx-sm-3{margin-right:3rem!important}.mb-sm-3,.my-sm-3{margin-bottom:3rem!important}.ml-sm-3,.mx-sm-3{margin-left:3rem!important}.m-sm-4{margin:3.5rem!important}.mt-sm-4,.my-sm-4{margin-top:3.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:3.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:3.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:3.5rem!important}.m-sm-5{margin:4rem!important}.mt-sm-5,.my-sm-5{margin-top:4rem!important}.mr-sm-5,.mx-sm-5{margin-right:4rem!important}.mb-sm-5,.my-sm-5{margin-bottom:4rem!important}.ml-sm-5,.mx-sm-5{margin-left:4rem!important}.m-sm-25{margin:.25rem!important}.mt-sm-25,.my-sm-25{margin-top:.25rem!important}.mr-sm-25,.mx-sm-25{margin-right:.25rem!important}.mb-sm-25,.my-sm-25{margin-bottom:.25rem!important}.ml-sm-25,.mx-sm-25{margin-left:.25rem!important}.m-sm-50{margin:.5rem!important}.mt-sm-50,.my-sm-50{margin-top:.5rem!important}.mr-sm-50,.mx-sm-50{margin-right:.5rem!important}.mb-sm-50,.my-sm-50{margin-bottom:.5rem!important}.ml-sm-50,.mx-sm-50{margin-left:.5rem!important}.m-sm-75{margin:.75rem!important}.mt-sm-75,.my-sm-75{margin-top:.75rem!important}.mr-sm-75,.mx-sm-75{margin-right:.75rem!important}.mb-sm-75,.my-sm-75{margin-bottom:.75rem!important}.ml-sm-75,.mx-sm-75{margin-left:.75rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:1rem!important}.pt-sm-1,.py-sm-1{padding-top:1rem!important}.pr-sm-1,.px-sm-1{padding-right:1rem!important}.pb-sm-1,.py-sm-1{padding-bottom:1rem!important}.pl-sm-1,.px-sm-1{padding-left:1rem!important}.p-sm-2{padding:1.5rem!important}.pt-sm-2,.py-sm-2{padding-top:1.5rem!important}.pr-sm-2,.px-sm-2{padding-right:1.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:1.5rem!important}.pl-sm-2,.px-sm-2{padding-left:1.5rem!important}.p-sm-3{padding:3rem!important}.pt-sm-3,.py-sm-3{padding-top:3rem!important}.pr-sm-3,.px-sm-3{padding-right:3rem!important}.pb-sm-3,.py-sm-3{padding-bottom:3rem!important}.pl-sm-3,.px-sm-3{padding-left:3rem!important}.p-sm-4{padding:3.5rem!important}.pt-sm-4,.py-sm-4{padding-top:3.5rem!important}.pr-sm-4,.px-sm-4{padding-right:3.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:3.5rem!important}.pl-sm-4,.px-sm-4{padding-left:3.5rem!important}.p-sm-5{padding:4rem!important}.pt-sm-5,.py-sm-5{padding-top:4rem!important}.pr-sm-5,.px-sm-5{padding-right:4rem!important}.pb-sm-5,.py-sm-5{padding-bottom:4rem!important}.pl-sm-5,.px-sm-5{padding-left:4rem!important}.p-sm-25{padding:.25rem!important}.pt-sm-25,.py-sm-25{padding-top:.25rem!important}.pr-sm-25,.px-sm-25{padding-right:.25rem!important}.pb-sm-25,.py-sm-25{padding-bottom:.25rem!important}.pl-sm-25,.px-sm-25{padding-left:.25rem!important}.p-sm-50{padding:.5rem!important}.pt-sm-50,.py-sm-50{padding-top:.5rem!important}.pr-sm-50,.px-sm-50{padding-right:.5rem!important}.pb-sm-50,.py-sm-50{padding-bottom:.5rem!important}.pl-sm-50,.px-sm-50{padding-left:.5rem!important}.p-sm-75{padding:.75rem!important}.pt-sm-75,.py-sm-75{padding-top:.75rem!important}.pr-sm-75,.px-sm-75{padding-right:.75rem!important}.pb-sm-75,.py-sm-75{padding-bottom:.75rem!important}.pl-sm-75,.px-sm-75{padding-left:.75rem!important}.m-sm-n1{margin:-1rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-1rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-1rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-1rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-1rem!important}.m-sm-n2{margin:-1.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-1.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-1.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-1.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-1.5rem!important}.m-sm-n3{margin:-3rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-3rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-3rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-3rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-3rem!important}.m-sm-n4{margin:-3.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-3.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-3.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-3.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-3.5rem!important}.m-sm-n5{margin:-4rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-4rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-4rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-4rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-4rem!important}.m-sm-n25{margin:-.25rem!important}.mt-sm-n25,.my-sm-n25{margin-top:-.25rem!important}.mr-sm-n25,.mx-sm-n25{margin-right:-.25rem!important}.mb-sm-n25,.my-sm-n25{margin-bottom:-.25rem!important}.ml-sm-n25,.mx-sm-n25{margin-left:-.25rem!important}.m-sm-n50{margin:-.5rem!important}.mt-sm-n50,.my-sm-n50{margin-top:-.5rem!important}.mr-sm-n50,.mx-sm-n50{margin-right:-.5rem!important}.mb-sm-n50,.my-sm-n50{margin-bottom:-.5rem!important}.ml-sm-n50,.mx-sm-n50{margin-left:-.5rem!important}.m-sm-n75{margin:-.75rem!important}.mt-sm-n75,.my-sm-n75{margin-top:-.75rem!important}.mr-sm-n75,.mx-sm-n75{margin-right:-.75rem!important}.mb-sm-n75,.my-sm-n75{margin-bottom:-.75rem!important}.ml-sm-n75,.mx-sm-n75{margin-left:-.75rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:1rem!important}.mt-md-1,.my-md-1{margin-top:1rem!important}.mr-md-1,.mx-md-1{margin-right:1rem!important}.mb-md-1,.my-md-1{margin-bottom:1rem!important}.ml-md-1,.mx-md-1{margin-left:1rem!important}.m-md-2{margin:1.5rem!important}.mt-md-2,.my-md-2{margin-top:1.5rem!important}.mr-md-2,.mx-md-2{margin-right:1.5rem!important}.mb-md-2,.my-md-2{margin-bottom:1.5rem!important}.ml-md-2,.mx-md-2{margin-left:1.5rem!important}.m-md-3{margin:3rem!important}.mt-md-3,.my-md-3{margin-top:3rem!important}.mr-md-3,.mx-md-3{margin-right:3rem!important}.mb-md-3,.my-md-3{margin-bottom:3rem!important}.ml-md-3,.mx-md-3{margin-left:3rem!important}.m-md-4{margin:3.5rem!important}.mt-md-4,.my-md-4{margin-top:3.5rem!important}.mr-md-4,.mx-md-4{margin-right:3.5rem!important}.mb-md-4,.my-md-4{margin-bottom:3.5rem!important}.ml-md-4,.mx-md-4{margin-left:3.5rem!important}.m-md-5{margin:4rem!important}.mt-md-5,.my-md-5{margin-top:4rem!important}.mr-md-5,.mx-md-5{margin-right:4rem!important}.mb-md-5,.my-md-5{margin-bottom:4rem!important}.ml-md-5,.mx-md-5{margin-left:4rem!important}.m-md-25{margin:.25rem!important}.mt-md-25,.my-md-25{margin-top:.25rem!important}.mr-md-25,.mx-md-25{margin-right:.25rem!important}.mb-md-25,.my-md-25{margin-bottom:.25rem!important}.ml-md-25,.mx-md-25{margin-left:.25rem!important}.m-md-50{margin:.5rem!important}.mt-md-50,.my-md-50{margin-top:.5rem!important}.mr-md-50,.mx-md-50{margin-right:.5rem!important}.mb-md-50,.my-md-50{margin-bottom:.5rem!important}.ml-md-50,.mx-md-50{margin-left:.5rem!important}.m-md-75{margin:.75rem!important}.mt-md-75,.my-md-75{margin-top:.75rem!important}.mr-md-75,.mx-md-75{margin-right:.75rem!important}.mb-md-75,.my-md-75{margin-bottom:.75rem!important}.ml-md-75,.mx-md-75{margin-left:.75rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:1rem!important}.pt-md-1,.py-md-1{padding-top:1rem!important}.pr-md-1,.px-md-1{padding-right:1rem!important}.pb-md-1,.py-md-1{padding-bottom:1rem!important}.pl-md-1,.px-md-1{padding-left:1rem!important}.p-md-2{padding:1.5rem!important}.pt-md-2,.py-md-2{padding-top:1.5rem!important}.pr-md-2,.px-md-2{padding-right:1.5rem!important}.pb-md-2,.py-md-2{padding-bottom:1.5rem!important}.pl-md-2,.px-md-2{padding-left:1.5rem!important}.p-md-3{padding:3rem!important}.pt-md-3,.py-md-3{padding-top:3rem!important}.pr-md-3,.px-md-3{padding-right:3rem!important}.pb-md-3,.py-md-3{padding-bottom:3rem!important}.pl-md-3,.px-md-3{padding-left:3rem!important}.p-md-4{padding:3.5rem!important}.pt-md-4,.py-md-4{padding-top:3.5rem!important}.pr-md-4,.px-md-4{padding-right:3.5rem!important}.pb-md-4,.py-md-4{padding-bottom:3.5rem!important}.pl-md-4,.px-md-4{padding-left:3.5rem!important}.p-md-5{padding:4rem!important}.pt-md-5,.py-md-5{padding-top:4rem!important}.pr-md-5,.px-md-5{padding-right:4rem!important}.pb-md-5,.py-md-5{padding-bottom:4rem!important}.pl-md-5,.px-md-5{padding-left:4rem!important}.p-md-25{padding:.25rem!important}.pt-md-25,.py-md-25{padding-top:.25rem!important}.pr-md-25,.px-md-25{padding-right:.25rem!important}.pb-md-25,.py-md-25{padding-bottom:.25rem!important}.pl-md-25,.px-md-25{padding-left:.25rem!important}.p-md-50{padding:.5rem!important}.pt-md-50,.py-md-50{padding-top:.5rem!important}.pr-md-50,.px-md-50{padding-right:.5rem!important}.pb-md-50,.py-md-50{padding-bottom:.5rem!important}.pl-md-50,.px-md-50{padding-left:.5rem!important}.p-md-75{padding:.75rem!important}.pt-md-75,.py-md-75{padding-top:.75rem!important}.pr-md-75,.px-md-75{padding-right:.75rem!important}.pb-md-75,.py-md-75{padding-bottom:.75rem!important}.pl-md-75,.px-md-75{padding-left:.75rem!important}.m-md-n1{margin:-1rem!important}.mt-md-n1,.my-md-n1{margin-top:-1rem!important}.mr-md-n1,.mx-md-n1{margin-right:-1rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-1rem!important}.ml-md-n1,.mx-md-n1{margin-left:-1rem!important}.m-md-n2{margin:-1.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-1.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-1.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-1.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-1.5rem!important}.m-md-n3{margin:-3rem!important}.mt-md-n3,.my-md-n3{margin-top:-3rem!important}.mr-md-n3,.mx-md-n3{margin-right:-3rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-3rem!important}.ml-md-n3,.mx-md-n3{margin-left:-3rem!important}.m-md-n4{margin:-3.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-3.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-3.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-3.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-3.5rem!important}.m-md-n5{margin:-4rem!important}.mt-md-n5,.my-md-n5{margin-top:-4rem!important}.mr-md-n5,.mx-md-n5{margin-right:-4rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-4rem!important}.ml-md-n5,.mx-md-n5{margin-left:-4rem!important}.m-md-n25{margin:-.25rem!important}.mt-md-n25,.my-md-n25{margin-top:-.25rem!important}.mr-md-n25,.mx-md-n25{margin-right:-.25rem!important}.mb-md-n25,.my-md-n25{margin-bottom:-.25rem!important}.ml-md-n25,.mx-md-n25{margin-left:-.25rem!important}.m-md-n50{margin:-.5rem!important}.mt-md-n50,.my-md-n50{margin-top:-.5rem!important}.mr-md-n50,.mx-md-n50{margin-right:-.5rem!important}.mb-md-n50,.my-md-n50{margin-bottom:-.5rem!important}.ml-md-n50,.mx-md-n50{margin-left:-.5rem!important}.m-md-n75{margin:-.75rem!important}.mt-md-n75,.my-md-n75{margin-top:-.75rem!important}.mr-md-n75,.mx-md-n75{margin-right:-.75rem!important}.mb-md-n75,.my-md-n75{margin-bottom:-.75rem!important}.ml-md-n75,.mx-md-n75{margin-left:-.75rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:1rem!important}.mt-lg-1,.my-lg-1{margin-top:1rem!important}.mr-lg-1,.mx-lg-1{margin-right:1rem!important}.mb-lg-1,.my-lg-1{margin-bottom:1rem!important}.ml-lg-1,.mx-lg-1{margin-left:1rem!important}.m-lg-2{margin:1.5rem!important}.mt-lg-2,.my-lg-2{margin-top:1.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:1.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:1.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:1.5rem!important}.m-lg-3{margin:3rem!important}.mt-lg-3,.my-lg-3{margin-top:3rem!important}.mr-lg-3,.mx-lg-3{margin-right:3rem!important}.mb-lg-3,.my-lg-3{margin-bottom:3rem!important}.ml-lg-3,.mx-lg-3{margin-left:3rem!important}.m-lg-4{margin:3.5rem!important}.mt-lg-4,.my-lg-4{margin-top:3.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:3.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:3.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:3.5rem!important}.m-lg-5{margin:4rem!important}.mt-lg-5,.my-lg-5{margin-top:4rem!important}.mr-lg-5,.mx-lg-5{margin-right:4rem!important}.mb-lg-5,.my-lg-5{margin-bottom:4rem!important}.ml-lg-5,.mx-lg-5{margin-left:4rem!important}.m-lg-25{margin:.25rem!important}.mt-lg-25,.my-lg-25{margin-top:.25rem!important}.mr-lg-25,.mx-lg-25{margin-right:.25rem!important}.mb-lg-25,.my-lg-25{margin-bottom:.25rem!important}.ml-lg-25,.mx-lg-25{margin-left:.25rem!important}.m-lg-50{margin:.5rem!important}.mt-lg-50,.my-lg-50{margin-top:.5rem!important}.mr-lg-50,.mx-lg-50{margin-right:.5rem!important}.mb-lg-50,.my-lg-50{margin-bottom:.5rem!important}.ml-lg-50,.mx-lg-50{margin-left:.5rem!important}.m-lg-75{margin:.75rem!important}.mt-lg-75,.my-lg-75{margin-top:.75rem!important}.mr-lg-75,.mx-lg-75{margin-right:.75rem!important}.mb-lg-75,.my-lg-75{margin-bottom:.75rem!important}.ml-lg-75,.mx-lg-75{margin-left:.75rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:1rem!important}.pt-lg-1,.py-lg-1{padding-top:1rem!important}.pr-lg-1,.px-lg-1{padding-right:1rem!important}.pb-lg-1,.py-lg-1{padding-bottom:1rem!important}.pl-lg-1,.px-lg-1{padding-left:1rem!important}.p-lg-2{padding:1.5rem!important}.pt-lg-2,.py-lg-2{padding-top:1.5rem!important}.pr-lg-2,.px-lg-2{padding-right:1.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:1.5rem!important}.pl-lg-2,.px-lg-2{padding-left:1.5rem!important}.p-lg-3{padding:3rem!important}.pt-lg-3,.py-lg-3{padding-top:3rem!important}.pr-lg-3,.px-lg-3{padding-right:3rem!important}.pb-lg-3,.py-lg-3{padding-bottom:3rem!important}.pl-lg-3,.px-lg-3{padding-left:3rem!important}.p-lg-4{padding:3.5rem!important}.pt-lg-4,.py-lg-4{padding-top:3.5rem!important}.pr-lg-4,.px-lg-4{padding-right:3.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:3.5rem!important}.pl-lg-4,.px-lg-4{padding-left:3.5rem!important}.p-lg-5{padding:4rem!important}.pt-lg-5,.py-lg-5{padding-top:4rem!important}.pr-lg-5,.px-lg-5{padding-right:4rem!important}.pb-lg-5,.py-lg-5{padding-bottom:4rem!important}.pl-lg-5,.px-lg-5{padding-left:4rem!important}.p-lg-25{padding:.25rem!important}.pt-lg-25,.py-lg-25{padding-top:.25rem!important}.pr-lg-25,.px-lg-25{padding-right:.25rem!important}.pb-lg-25,.py-lg-25{padding-bottom:.25rem!important}.pl-lg-25,.px-lg-25{padding-left:.25rem!important}.p-lg-50{padding:.5rem!important}.pt-lg-50,.py-lg-50{padding-top:.5rem!important}.pr-lg-50,.px-lg-50{padding-right:.5rem!important}.pb-lg-50,.py-lg-50{padding-bottom:.5rem!important}.pl-lg-50,.px-lg-50{padding-left:.5rem!important}.p-lg-75{padding:.75rem!important}.pt-lg-75,.py-lg-75{padding-top:.75rem!important}.pr-lg-75,.px-lg-75{padding-right:.75rem!important}.pb-lg-75,.py-lg-75{padding-bottom:.75rem!important}.pl-lg-75,.px-lg-75{padding-left:.75rem!important}.m-lg-n1{margin:-1rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-1rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-1rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-1rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-1rem!important}.m-lg-n2{margin:-1.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-1.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-1.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-1.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-1.5rem!important}.m-lg-n3{margin:-3rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-3rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-3rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-3rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-3rem!important}.m-lg-n4{margin:-3.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-3.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-3.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-3.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-3.5rem!important}.m-lg-n5{margin:-4rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-4rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-4rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-4rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-4rem!important}.m-lg-n25{margin:-.25rem!important}.mt-lg-n25,.my-lg-n25{margin-top:-.25rem!important}.mr-lg-n25,.mx-lg-n25{margin-right:-.25rem!important}.mb-lg-n25,.my-lg-n25{margin-bottom:-.25rem!important}.ml-lg-n25,.mx-lg-n25{margin-left:-.25rem!important}.m-lg-n50{margin:-.5rem!important}.mt-lg-n50,.my-lg-n50{margin-top:-.5rem!important}.mr-lg-n50,.mx-lg-n50{margin-right:-.5rem!important}.mb-lg-n50,.my-lg-n50{margin-bottom:-.5rem!important}.ml-lg-n50,.mx-lg-n50{margin-left:-.5rem!important}.m-lg-n75{margin:-.75rem!important}.mt-lg-n75,.my-lg-n75{margin-top:-.75rem!important}.mr-lg-n75,.mx-lg-n75{margin-right:-.75rem!important}.mb-lg-n75,.my-lg-n75{margin-bottom:-.75rem!important}.ml-lg-n75,.mx-lg-n75{margin-left:-.75rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:1rem!important}.mt-xl-1,.my-xl-1{margin-top:1rem!important}.mr-xl-1,.mx-xl-1{margin-right:1rem!important}.mb-xl-1,.my-xl-1{margin-bottom:1rem!important}.ml-xl-1,.mx-xl-1{margin-left:1rem!important}.m-xl-2{margin:1.5rem!important}.mt-xl-2,.my-xl-2{margin-top:1.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:1.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:1.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:1.5rem!important}.m-xl-3{margin:3rem!important}.mt-xl-3,.my-xl-3{margin-top:3rem!important}.mr-xl-3,.mx-xl-3{margin-right:3rem!important}.mb-xl-3,.my-xl-3{margin-bottom:3rem!important}.ml-xl-3,.mx-xl-3{margin-left:3rem!important}.m-xl-4{margin:3.5rem!important}.mt-xl-4,.my-xl-4{margin-top:3.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:3.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:3.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:3.5rem!important}.m-xl-5{margin:4rem!important}.mt-xl-5,.my-xl-5{margin-top:4rem!important}.mr-xl-5,.mx-xl-5{margin-right:4rem!important}.mb-xl-5,.my-xl-5{margin-bottom:4rem!important}.ml-xl-5,.mx-xl-5{margin-left:4rem!important}.m-xl-25{margin:.25rem!important}.mt-xl-25,.my-xl-25{margin-top:.25rem!important}.mr-xl-25,.mx-xl-25{margin-right:.25rem!important}.mb-xl-25,.my-xl-25{margin-bottom:.25rem!important}.ml-xl-25,.mx-xl-25{margin-left:.25rem!important}.m-xl-50{margin:.5rem!important}.mt-xl-50,.my-xl-50{margin-top:.5rem!important}.mr-xl-50,.mx-xl-50{margin-right:.5rem!important}.mb-xl-50,.my-xl-50{margin-bottom:.5rem!important}.ml-xl-50,.mx-xl-50{margin-left:.5rem!important}.m-xl-75{margin:.75rem!important}.mt-xl-75,.my-xl-75{margin-top:.75rem!important}.mr-xl-75,.mx-xl-75{margin-right:.75rem!important}.mb-xl-75,.my-xl-75{margin-bottom:.75rem!important}.ml-xl-75,.mx-xl-75{margin-left:.75rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:1rem!important}.pt-xl-1,.py-xl-1{padding-top:1rem!important}.pr-xl-1,.px-xl-1{padding-right:1rem!important}.pb-xl-1,.py-xl-1{padding-bottom:1rem!important}.pl-xl-1,.px-xl-1{padding-left:1rem!important}.p-xl-2{padding:1.5rem!important}.pt-xl-2,.py-xl-2{padding-top:1.5rem!important}.pr-xl-2,.px-xl-2{padding-right:1.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:1.5rem!important}.pl-xl-2,.px-xl-2{padding-left:1.5rem!important}.p-xl-3{padding:3rem!important}.pt-xl-3,.py-xl-3{padding-top:3rem!important}.pr-xl-3,.px-xl-3{padding-right:3rem!important}.pb-xl-3,.py-xl-3{padding-bottom:3rem!important}.pl-xl-3,.px-xl-3{padding-left:3rem!important}.p-xl-4{padding:3.5rem!important}.pt-xl-4,.py-xl-4{padding-top:3.5rem!important}.pr-xl-4,.px-xl-4{padding-right:3.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:3.5rem!important}.pl-xl-4,.px-xl-4{padding-left:3.5rem!important}.p-xl-5{padding:4rem!important}.pt-xl-5,.py-xl-5{padding-top:4rem!important}.pr-xl-5,.px-xl-5{padding-right:4rem!important}.pb-xl-5,.py-xl-5{padding-bottom:4rem!important}.pl-xl-5,.px-xl-5{padding-left:4rem!important}.p-xl-25{padding:.25rem!important}.pt-xl-25,.py-xl-25{padding-top:.25rem!important}.pr-xl-25,.px-xl-25{padding-right:.25rem!important}.pb-xl-25,.py-xl-25{padding-bottom:.25rem!important}.pl-xl-25,.px-xl-25{padding-left:.25rem!important}.p-xl-50{padding:.5rem!important}.pt-xl-50,.py-xl-50{padding-top:.5rem!important}.pr-xl-50,.px-xl-50{padding-right:.5rem!important}.pb-xl-50,.py-xl-50{padding-bottom:.5rem!important}.pl-xl-50,.px-xl-50{padding-left:.5rem!important}.p-xl-75{padding:.75rem!important}.pt-xl-75,.py-xl-75{padding-top:.75rem!important}.pr-xl-75,.px-xl-75{padding-right:.75rem!important}.pb-xl-75,.py-xl-75{padding-bottom:.75rem!important}.pl-xl-75,.px-xl-75{padding-left:.75rem!important}.m-xl-n1{margin:-1rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-1rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-1rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-1rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-1rem!important}.m-xl-n2{margin:-1.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-1.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-1.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-1.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-1.5rem!important}.m-xl-n3{margin:-3rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-3rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-3rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-3rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-3rem!important}.m-xl-n4{margin:-3.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-3.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-3.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-3.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-3.5rem!important}.m-xl-n5{margin:-4rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-4rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-4rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-4rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-4rem!important}.m-xl-n25{margin:-.25rem!important}.mt-xl-n25,.my-xl-n25{margin-top:-.25rem!important}.mr-xl-n25,.mx-xl-n25{margin-right:-.25rem!important}.mb-xl-n25,.my-xl-n25{margin-bottom:-.25rem!important}.ml-xl-n25,.mx-xl-n25{margin-left:-.25rem!important}.m-xl-n50{margin:-.5rem!important}.mt-xl-n50,.my-xl-n50{margin-top:-.5rem!important}.mr-xl-n50,.mx-xl-n50{margin-right:-.5rem!important}.mb-xl-n50,.my-xl-n50{margin-bottom:-.5rem!important}.ml-xl-n50,.mx-xl-n50{margin-left:-.5rem!important}.m-xl-n75{margin:-.75rem!important}.mt-xl-n75,.my-xl-n75{margin-top:-.75rem!important}.mr-xl-n75,.mx-xl-n75{margin-right:-.75rem!important}.mb-xl-n75,.my-xl-n75{margin-bottom:-.75rem!important}.ml-xl-n75,.mx-xl-n75{margin-left:-.75rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:Montserrat,Helvetica,Arial,serif!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#62a8ea!important}a.text-primary:focus,a.text-primary:hover{color:#1f83e1!important}.text-secondary{color:#b8c2cc!important}a.text-secondary:focus,a.text-secondary:hover{color:#8b9cac!important}.text-success{color:#21b978!important}a.text-success:focus,a.text-success:hover{color:#15784e!important}.text-info{color:#4277cf!important}a.text-info:focus,a.text-info:hover{color:#28549d!important}.text-warning{color:#dda451!important}a.text-warning:focus,a.text-warning:hover{color:#bd7f25!important}.text-danger{color:#ea5455!important}a.text-danger:focus,a.text-danger:hover{color:#d71a1c!important}.text-light{color:#f7f7f9!important}a.text-light:focus,a.text-light:hover{color:#cbcbd8!important}.text-dark{color:#22292f!important}a.text-dark:focus,a.text-dark:hover{color:#020203!important}.text-body{color:#626262!important}.text-muted{color:#b8c2cc!important}.text-black-50{color:rgba(34,41,47,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:\" (\" attr(title) \")\"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #22292f}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dae1e7!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#eff1f7}.table .thead-dark th{color:inherit;border-color:#eff1f7}}code{padding:.1rem .4rem;font-size:90%;color:#ff8acc;background-color:#eee;border-radius:.25rem}pre{background-color:#f7f7f9}pre code{background-color:transparent!important}.form-control::-moz-placeholder{font-size:.85rem;color:rgba(34,41,47,.4);-moz-transition:all .2s ease;transition:all .2s ease}.form-control:-ms-input-placeholder{font-size:.85rem;color:rgba(34,41,47,.4);-ms-transition:all .2s ease;transition:all .2s ease}.form-control::placeholder{font-size:.85rem;color:rgba(34,41,47,.4);transition:all .2s ease}.form-control:-ms-input-placeholder{color:#abb6d5}.form-control:focus::-moz-placeholder{transform:translate(5px);-moz-transition:all .2s ease;transition:all .2s ease}.form-control:focus:-ms-input-placeholder{transform:translate(5px);-ms-transition:all .2s ease;transition:all .2s ease}.form-control:focus::placeholder{transform:translate(5px);transition:all .2s ease}.form-control:focus~.form-control-position i{color:#62a8ea}label{color:#2b3656;font-size:.85rem;margin-bottom:0;padding-left:.2rem}textarea.form-control{line-height:1.6rem;font-size:1rem}.form-group{margin-bottom:1.5rem}.form-control{border:1px solid #c6cde3;color:#3c4b78}.form-section{color:#b8c2cc;line-height:3rem;margin-bottom:20px;border-bottom:1px solid #b8c2cc}.form-section i{font-size:20px;margin-left:5px;margin-right:10px}.form-actions{border-top:1px solid #cdd3e6;padding:20px 0;margin-top:20px}.form-actions.filled{background-color:#eff1f7}.form-actions.center{text-align:center}.form-actions.right{text-align:right}.form-actions.top{border-top:0;border-bottom:1px solid #cdd3e6;margin-top:0;margin-bottom:20px}@media (max-width:767.98px){.form-actions .buttons-group{float:left!important;margin-bottom:10px}}@media (min-width:576px){.form-horizontal .form-group .label-control{text-align:right}}.form-control.form-control-lg{padding:1rem}.form-control.form-control-lg::-moz-placeholder{font-size:1.25rem}.form-control.form-control-lg:-ms-input-placeholder{font-size:1.25rem}.form-control.form-control-lg::placeholder{font-size:1.25rem}.form-control.form-control-sm{padding:.6rem}.form-control.form-control-sm::-moz-placeholder{font-size:.7rem}.form-control.form-control-sm:-ms-input-placeholder{font-size:.7rem}.form-control.form-control-sm::placeholder{font-size:.7rem}.custom-file-label{padding:.4rem .7rem}.custom-file-label:after{padding:.4rem .7rem;height:auto}select.form-control:not([multiple=multiple]){background-position:calc(100% - 12px) 13px,calc(100% - 20px) 13px,100% 0;background-size:12px 12px,10px 10px;background-repeat:no-repeat;-webkit-appearance:none;-moz-appearance:none;padding-right:1.5rem}.custom-select{-moz-appearance:none;-webkit-appearance:none}.input-group-addon{background-color:#eceff1;border-color:#babfc7}.custom-control-label:after,.custom-control-label:before{width:1.143rem;height:1.143rem;top:.08rem}.custom-control-input:not(:disabled):active~.custom-control-label:before{background-color:#62a8ea;border-color:#62a8ea}.form-label-group{position:relative;margin-bottom:1.5rem}.form-label-group .form-control-lg~label{font-size:1.25rem;padding:1rem}.form-label-group .form-control-sm~label{font-size:.7rem}.form-label-group>label{position:absolute;top:0;left:0;display:block;transition:all .25s ease-in-out;padding:.6rem;pointer-events:none;cursor:text;color:rgba(34,41,47,.4);font-size:.85rem;opacity:0}.form-label-group>input,.form-label-group textarea{padding:.6rem}.form-label-group>input:focus:not(:-moz-placeholder-shown)~label,.form-label-group>input:not(:active):not(:-moz-placeholder-shown)~label,.form-label-group textarea:focus:not(:-moz-placeholder-shown)~label,.form-label-group textarea:not(:active):not(:-moz-placeholder-shown)~label{color:#62a8ea!important;-moz-transition:all .25s ease-in-out;transition:all .25s ease-in-out;opacity:1}.form-label-group>input:focus:not(:-ms-input-placeholder)~label,.form-label-group>input:not(:active):not(:-ms-input-placeholder)~label,.form-label-group textarea:focus:not(:-ms-input-placeholder)~label,.form-label-group textarea:not(:active):not(:-ms-input-placeholder)~label{color:#62a8ea!important;-ms-transition:all .25s ease-in-out;transition:all .25s ease-in-out;opacity:1}.form-label-group>input:focus:not(:placeholder-shown)~label,.form-label-group>input:not(:active):not(:placeholder-shown)~label,.form-label-group textarea:focus:not(:placeholder-shown)~label,.form-label-group textarea:not(:active):not(:placeholder-shown)~label{color:#62a8ea!important;transition:all .25s ease-in-out;opacity:1}.form-label-group>input:not(:focus):not(:-moz-placeholder-shown)~label,.form-label-group textarea:not(:focus):not(:-moz-placeholder-shown)~label{color:rgba(34,41,47,.4)!important}.form-label-group>input:not(:focus):not(:-ms-input-placeholder)~label,.form-label-group textarea:not(:focus):not(:-ms-input-placeholder)~label{color:rgba(34,41,47,.4)!important}.form-label-group>input:not(:focus):not(:placeholder-shown)~label,.form-label-group textarea:not(:focus):not(:placeholder-shown)~label{color:rgba(34,41,47,.4)!important}.form-label-group>input:not(:-moz-placeholder-shown)~label,.form-label-group textarea:not(:-moz-placeholder-shown)~label{padding:.25rem 0;font-size:.7rem;top:-20px;left:3px}.form-label-group>input:not(:-ms-input-placeholder)~label,.form-label-group textarea:not(:-ms-input-placeholder)~label{padding:.25rem 0;font-size:.7rem;top:-20px;left:3px}.form-label-group>input:not(:placeholder-shown)~label,.form-label-group textarea:not(:placeholder-shown)~label{padding:.25rem 0;font-size:.7rem;top:-20px;left:3px}.form-label-group.has-icon-left>label{left:36px}.vs-checkbox-con{position:relative;display:flex;align-items:center;justify-content:flex-start;margin:.25rem 0}.vs-checkbox-con input{position:absolute;width:100%;height:100%;opacity:0;z-index:200;cursor:pointer;top:0}.vs-checkbox-con input:checked~.vs-checkbox{transform:rotate(0deg);border-color:#62a8ea}.vs-checkbox-con input:checked~.vs-checkbox .vs-checkbox--check{transform:translate(0);background-color:#62a8ea}.vs-checkbox-con input:checked~.vs-checkbox .vs-checkbox--check .vs-icon{transform:translate(0);line-height:1.2;opacity:1}.vs-checkbox-con input:checked~.vs-checkbox.vs-checkbox-sm .vs-checkbox--check .vs-icon{font-size:.75rem}.vs-checkbox-con input:checked~.vs-checkbox.vs-checkbox-lg .vs-checkbox--check .vs-icon{font-size:1.2rem}.vs-checkbox-con input:active:checked+.vs-checkbox .vs-checkbox--check{transform:translate(3px);background-color:#62a8ea}.vs-checkbox-con input:active:checked+.vs-checkbox .vs-checkbox--check .vs-icon{opacity:1;transform:translate(6px)}.vs-checkbox-con input:disabled{cursor:default;pointer-events:none}.vs-checkbox-con input:disabled+.vs-checkbox{cursor:default;opacity:.5}.vs-checkbox-con .vs-checkbox{cursor:pointer;position:relative;width:20px;height:20px;border:2px solid #b8c2cc;border-radius:2px;transform:rotate(-90deg);transition:all .2s ease;overflow:hidden;margin-right:.5rem}.vs-checkbox-con .vs-checkbox.vs-checkbox-sm{width:15px;height:15px}.vs-checkbox-con .vs-checkbox.vs-checkbox-lg{width:24px;height:24px}.vs-checkbox-con .vs-checkbox .vs-checkbox--check{width:100%;height:100%;position:absolute;left:0;transform:translate(100%);transform-origin:right;transition:all .2s ease;z-index:10}.vs-checkbox-con .vs-checkbox .vs-checkbox--check .vs-icon{display:flex;justify-content:center;align-items:center;color:#fff}.vs-radio-con{position:relative;display:flex;align-items:center;justify-content:flex-start;margin:.25rem 0}.vs-radio-con input{position:absolute;width:100%;height:100%;opacity:0;z-index:200;cursor:pointer}.vs-radio-con input:checked~.vs-radio{transform:rotate(0deg);outline:0}.vs-radio-con input:checked~.vs-radio .vs-radio--circle{background:#62a8ea;box-shadow:0 3px 12px 0 rgba(98,168,234,.4);opacity:1;transform:scale(1)}.vs-radio-con input:checked~.vs-radio .vs-radio--border{opacity:0;transform:scale(.3)}.vs-radio-con input:disabled{cursor:default;pointer-events:none}.vs-radio-con input:disabled+.vs-radio{cursor:default;opacity:.5}.vs-radio-con input:active~.vs-radio{transform:scale(1.1)}.vs-radio-con .vs-radio{cursor:pointer;position:relative;width:18px;height:18px;transition:all .2s ease;margin-right:.5rem}.vs-radio-con .vs-radio.vs-radio-sm{width:13px;height:13px}.vs-radio-con .vs-radio.vs-radio-lg{width:22px;height:22px}.vs-radio-con .vs-radio .vs-radio--border,.vs-radio-con .vs-radio .vs-radio--circle{width:100%;height:100%;position:absolute;left:0;transition:all .25s ease;top:0;border-radius:50%}.vs-radio-con .vs-radio .vs-radio--border{background:transparent;border:2px solid #b8c2cc}.vs-radio-con .vs-radio .vs-radio--circle{opacity:0;transform:scale(.1)}.counter-value{background-color:#62a8ea;color:#fff;padding:1px 6px;font-size:.6rem;border-radius:0 0 5px 5px;margin-right:1rem}.form-group.input-divider-left .form-control-position i{padding:.2rem .5rem;border-right:1px solid #c6cde3}.form-group.input-divider-right .form-control-position i{padding:.2rem .5rem;border-left:1px solid #c6cde3}.input-group-lg .form-control,.input-group-sm .form-control{padding:.7rem}.bootstrap-touchspin.input-group{width:8.4rem;align-items:center}.bootstrap-touchspin.input-group .form-control{padding:5px;height:auto;border:0;background-color:#eff1f7;border-radius:5px!important;text-align:center;font-weight:500}.bootstrap-touchspin.input-group .form-control:focus{z-index:1;box-shadow:none}.bootstrap-touchspin .bootstrap-touchspin-injected{margin:0!important}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-down,.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-up{padding:0;min-width:22px;min-height:22px;border-radius:5px!important;position:relative}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-down i,.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-up i{font-size:.8rem;position:relative;top:-1px}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-down{left:12px}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-up{right:12px}.bootstrap-touchspin.disabled-touchspin .bootstrap-touchspin-down,.bootstrap-touchspin.disabled-touchspin .bootstrap-touchspin-up{background-color:rgba(0,0,0,.5)!important;cursor:default;opacity:.5}.bootstrap-touchspin.input-group-lg{width:9.375rem}.bootstrap-touchspin.input-group-lg .touchspin.form-control{height:auto!important}.bootstrap-touchspin.input-group-lg .bootstrap-touchspin-down i,.bootstrap-touchspin.input-group-lg .bootstrap-touchspin-up i{font-size:1rem}.bootstrap-touchspin.input-group-sm{width:6.25rem}.bootstrap-touchspin.input-group-sm .touchspin.form-control{height:auto!important}.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-down,.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-up{min-width:16px;min-height:16px;padding-top:2.2px}.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-down i,.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-up i{font-size:.6rem}.btn.disabled-max-min{background-color:rgba(0,0,0,.5)!important;cursor:default}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}.bootstrap-touchspin.input-group input[type=number]{-moz-appearance:textfield}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.form-label-group label{display:none}select.form-control:not([multiple=multiple]){background:none}.custom-file-label:after{padding:1.34rem .7rem 1.25rem}}.picker__input.form-control{background-color:#fff}.input-group .form-control{height:auto}.input-group .input-group-append .dropdown-toggle:after,.input-group .input-group-prepend .dropdown-toggle:after{left:0}.input-group .input-group-append .vs-checkbox,.input-group .input-group-append .vs-checkbox-con,.input-group .input-group-append .vs-radio,.input-group .input-group-append .vs-radio-con,.input-group .input-group-prepend .vs-checkbox,.input-group .input-group-prepend .vs-checkbox-con,.input-group .input-group-prepend .vs-radio,.input-group .input-group-prepend .vs-radio-con{margin:0}.input-group.input-group-lg .form-control::-moz-placeholder{font-size:1.25rem}.input-group.input-group-lg .form-control:-ms-input-placeholder{font-size:1.25rem}.input-group.input-group-lg .form-control::placeholder{font-size:1.25rem}.input-group.input-group-lg .input-group-append .btn,.input-group.input-group-lg .input-group-prepend .btn{line-height:1.3;font-size:1.3rem}.input-group.input-group-sm .form-control::-moz-placeholder{font-size:.7rem}.input-group.input-group-sm .form-control:-ms-input-placeholder{font-size:.7rem}.input-group.input-group-sm .form-control::placeholder{font-size:.7rem}.btn:disabled{cursor:default}.btn.btn-white{background-color:#fff;color:#626262}.btn.btn-white:active,.btn.btn-white:focus,.btn.btn-white:hover{color:#626262!important}.btn.btn-white.btn-primary{background-color:#62a8ea}.btn[class*=bg-gradient-]:hover{box-shadow:0 8px 25px -8px #aaa}.btn.btn-secondary{color:#fff}.btn.btn-secondary:hover{box-shadow:0 8px 25px -8px #b8c2cc}.btn.btn-dark:hover{box-shadow:0 8px 25px -8px #22292f}.btn.btn-light:hover{box-shadow:0 8px 25px -8px #f7f7f9}.btn.btn-outline-dark,.btn.btn-outline-light,.btn.btn-outline-secondary{border:1px solid}.btn[class*=btn-outline-]{padding-top:calc(.9rem - 1px);padding-bottom:calc(.9rem - 1px)}.btn-group-sm>.btn[class*=btn-outline-],.btn[class*=btn-outline-].btn-sm{padding-top:calc(.5rem - 1px);padding-bottom:calc(.5rem - 1px)}.btn.btn-icon{padding:.715rem .736rem}.btn-group-sm>.btn.btn-icon,.btn.btn-sm.btn-icon{padding:.5rem}.btn-group-lg>.btn.btn-icon,.btn.btn-lg.btn-icon{padding:1rem}.btn.btn-round{border-radius:2rem}.btn.active,.btn.focus,.btn:active,.btn:focus{outline:none;box-shadow:none!important}.btn.btn-icon i{font-size:1.1rem}.btn-white:hover,.btn.btn-outline-white:hover{color:#22292f!important}[type=reset],[type=submit],button,html [type=button]{cursor:pointer}.waves-button-input{padding:unset}.dropdown.show .btn-outline-light.dropdown-toggle,.dropdown.show .btn-outline-warning.dropdown-toggle{color:#fff}.dropdown .btn:not(.btn-sm):not(.btn-lg),.dropdown .btn:not(.btn-sm):not(.btn-lg).dropdown-toggle{padding:.85rem 1.5rem}.dropdown .btn:not(.btn-sm):not(.btn-lg).btn-round,.dropdown .btn:not(.btn-sm):not(.btn-lg).dropdown-toggle.btn-round{border-radius:2rem}.dropdown .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem;border-left-color:hsla(0,0%,100%,.2)!important;border-top-left-radius:0;border-bottom-left-radius:0}.dropdown [class*=btn-outline-].dropdown-toggle.dropdown-toggle-split{border-left:0!important}.dropdown [class*=btn-outline-].dropdown-toggle.dropdown-toggle-split:active{color:#fff}.dropdown .dropdown-menu{border:1px solid rgba(86,86,86,.05);border-radius:5px;transform:scaleY(0);box-shadow:0 5px 25px rgba(86,86,86,.1);min-width:8rem}.dropdown .dropdown-menu:before{content:\"\";position:absolute;top:-1px;left:1.2rem;width:.75rem;height:.75rem;display:block;background:#fff;transform:rotate(45deg) translate(-7px);border-top:1px solid rgba(86,86,86,.1);border-left:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropdown .dropdown-menu.dropdown-menu-right:before{right:.6rem;left:auto}.dropdown .dropdown-menu .dropdown-header{padding:.714rem 1.428rem;margin-top:.714rem}.dropdown .dropdown-menu .dropdown-item{padding:.5rem 1rem;color:#626262;width:auto;cursor:pointer}.dropdown .dropdown-menu .dropdown-item:hover{background-color:#eff1f7;color:#62a8ea}.dropdown .dropdown-menu .dropdown-item.active{color:#fff}.dropdown .dropdown-menu .dropdown-item:active{background-color:transparent;color:#626262}.dropdown i{margin-right:.5rem}.dropdown.no-arrow .dropdown-toggle:after{display:none}.dropdown.no-arrow .dropdown-toggle i{margin-right:0}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown .dropdown-menu .dropdown-item,.dropleft .dropdown-menu .dropdown-item,.dropright .dropdown-menu .dropdown-item,.dropup .dropdown-menu .dropdown-item{padding:.714rem 1.428rem}.show>.dropdown-menu{transform:scale(1);opacity:1;display:block}.dropdown-toggle:after{border:none!important;font-family:feather;content:\"\\E842\"!important;position:relative;top:1px;right:0;left:.714rem;padding:0;margin:0;vertical-align:0}.dropdown-toggle.dropdown-toggle-split{border-left:1px solid hsla(0,0%,100%,.2)}.dropdown-toggle.dropdown-toggle-split:after{left:0}.dropdown-toggle.nav-hide-arrow:after{display:none}.dropdown-toggle:focus{outline:0}.btn-secondary~.dropdown-menu .dropdown-item.active,.btn-secondary~.dropdown-menu .dropdown-item:hover{background-color:#ccc}.dropup{position:relative}.dropup .btn,.dropup .btn.dropdown-toggle{padding:.85rem 1.5rem}.dropup .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem;border-color:hsla(0,0%,100%,.2)!important}.dropup .dropdown-toggle:after{content:\"\\E845\"!important;vertical-align:.05rem}.dropup .dropdown-menu:before{content:\"\";position:absolute;bottom:-.714rem;left:1.214rem;width:.714rem;height:.714rem;display:block;background:#fff;transform:rotate(45deg) translate(-7px);border-bottom:1px solid rgba(86,86,86,.1);border-right:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropup .dropdown-menu.dropdown-menu-right:before{left:auto;right:.714rem}.dropup .dropdown-submenu .dropdown-menu{bottom:auto;top:0}.dropleft .btn,.dropleft .btn.dropdown-toggle{padding:.85rem 1.5rem}.dropleft .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem}.dropleft .dropdown-toggle:before{border:none!important;font-family:feather;content:\"\\E843\"!important}.dropleft .dropdown-menu:before{content:\"\";position:absolute;top:1.285rem;right:0;width:.714rem;height:.714rem;display:block;background:#fff;transform:rotate(130deg) translate(-8px);border-top:1px solid rgba(86,86,86,.1);border-left:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropright .btn,.dropright .btn.dropdown-toggle{padding:.85rem 1.5rem}.dropright .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem}.dropright .dropdown-toggle:after{border:none!important;font-family:feather;content:\"\\E844\"!important}.dropright .dropdown-menu:before{content:\"\";position:absolute;top:1.285rem;left:-.9rem;width:.714rem;height:.714rem;display:block;background:#fff;transform:rotate(140deg) translate(-9px);border-bottom:1px solid rgba(86,86,86,.1);border-right:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropdown.dropdown-icon-wrapper .dropdown-toggle:after,.dropup.dropdown-icon-wrapper .dropdown-toggle:after{display:none}.dropdown.dropdown-icon-wrapper .dropdown-menu,.dropup.dropdown-icon-wrapper .dropdown-menu{min-width:auto}.dropdown.dropdown-icon-wrapper .dropdown-menu .dropdown-item,.dropup.dropdown-icon-wrapper .dropdown-menu .dropdown-item{padding:.5rem 1.1rem;cursor:pointer}.dropdown.dropdown-icon-wrapper .dropdown-menu .dropdown-item i,.dropup.dropdown-icon-wrapper .dropdown-menu .dropdown-item i{font-size:1.3rem;color:#626262}.dropdown.dropdown-icon-wrapper .dropdown-menu .dropdown-item:hover,.dropup.dropdown-icon-wrapper .dropdown-menu .dropdown-item:hover{color:#fff}.btn.btn-white~.dropdown-menu .dropdown-item:not(.acitve):hover{color:#626262!important}.btn.btn-white~.dropdown-menu .dropdown-item.active{color:#626262}.header-navbar .dropdown-menu,.horizontal-menu-wrapper .dropdown-menu{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:slideIn;animation-name:slideIn}@-webkit-keyframes slideIn{to{transform:translateY(0);opacity:1}0%{transform:translateY(1rem);opacity:0}}@keyframes slideIn{to{transform:translateY(0);opacity:1}0%{transform:translateY(1rem);opacity:0}}.navbar-dark .hamburger-inner,.navbar-dark .hamburger-inner:after,.navbar-dark .hamburger-inner:before{background-color:#fff}.header-navbar-shadow{display:none}.navbar-floating .header-navbar-shadow{display:block;background:linear-gradient(180deg,hsla(0,0%,97.3%,.95) 44%,hsla(0,0%,97.3%,.46) 73%,hsla(0,0%,100%,0));padding-top:2.2rem;background-repeat:repeat;width:100%;height:102px;position:fixed;top:0;z-index:11}.header-navbar{padding:0;min-height:3.8rem;font-family:Montserrat,Helvetica,Arial,serif;transition:all .3s ease;background:linear-gradient(180deg,hsla(0,0%,97.3%,.95) 44%,hsla(0,0%,97.3%,.46) 73%,hsla(0,0%,100%,0));z-index:997}.header-navbar.fixed-top{left:260px}.header-navbar[class*=bg-] .navbar-nav .nav-item>a,.header-navbar[class*=bg-] .navbar-nav .nav-item>a i,.header-navbar[class*=bg-] .navbar-nav .nav-item>a span{color:#fff!important}.header-navbar[class*=bg-] .navbar-nav .nav-item .dropdown-menu i{color:inherit!important}.header-navbar[class*=bg-] .navbar-nav .search-input .input,.header-navbar[class*=bg-] .navbar-nav .search-input .search-list .auto-suggestion span{color:#626262!important}.header-navbar.floating-nav{margin:1.3rem 2.2rem 0;border-radius:.5rem;position:fixed;width:calc(100% - 4.4rem - 260px);z-index:12;right:0}.header-navbar.navbar-static-top{background:transparent;box-shadow:none!important;top:0;right:0;left:260px;width:calc(100% - 260px)}.header-navbar .navbar-wrapper{width:100%}.header-navbar.navbar-border{border-bottom:1px solid #e4e7ed}.header-navbar.navbar-dark.navbar-border{border-bottom:1px solid #8596b5}.header-navbar.navbar-shadow{box-shadow:0 4px 20px 0 rgba(0,0,0,.05)}.header-navbar:not(.navbar-horizontal) .nav-link.dropdown-toggle:after{display:none}.header-navbar .navbar-container ul.nav li.dropdown-language{padding-right:0}.header-navbar .navbar-container ul.nav li.dropdown-language .selected-language{font-size:.97rem;letter-spacing:-.25px;font-weight:500}.header-navbar .navbar-container{padding-left:1rem;transition:all .3s ease;background:inherit;margin-left:0}.header-navbar .navbar-container .bookmark-wrapper ul.nav li>a.nav-link{padding:1.4rem .5rem 1.35rem}.header-navbar .navbar-container .bookmark-wrapper ul.nav li>a.nav-link i:hover{color:#62a8ea}.header-navbar .navbar-container .bookmark-input{z-index:1}.header-navbar .navbar-container ul.nav li.dropdown .dropdown-menu{top:48px}.header-navbar .navbar-container ul.nav li .badge{padding:.42em .6em .25rem}.header-navbar .navbar-container ul.nav li .badge.badge-up{position:absolute;top:12px;right:-2px}.header-navbar .navbar-container ul.nav li.dropdown-language>a.nav-link{padding:1.65rem .5rem}.header-navbar .navbar-container ul.nav li>a.nav-link{color:#626262;padding:1.6rem .5rem 1.35rem 1rem}.header-navbar .navbar-container ul.nav li>a.nav-link i.flag-icon{margin-right:.5rem}.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right{right:12px;left:auto;padding:.5rem}.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right .dropdown-item{padding:10px}.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right .dropdown-item:active,.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right .dropdown-item:hover{background:#62a8ea;color:#fff!important}.header-navbar .navbar-container ul.nav li a.dropdown-user-link{padding:.7rem 1rem;display:flex;align-items:center}.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-name{display:inline-block;margin-bottom:.435rem;margin-left:.2rem}.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-status{font-size:smaller}.header-navbar .navbar-container ul.nav li a.dropdown-user-link img{box-shadow:0 4px 8px 0 rgba(0,0,0,.12),0 2px 4px 0 rgba(0,0,0,.08)}.header-navbar .navbar-container ul.nav li a.menu-toggle{padding:1.34rem .22rem 1.35rem 0}.header-navbar .navbar-container ul.nav li a.menu-toggle i{font-size:1.4rem}.header-navbar .navbar-container ul.nav li a.nav-link-label{padding:1.6rem 0 1.35rem .8rem}.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-nav{display:flex;flex-direction:column;align-items:flex-end;float:left;margin-right:.8rem}.header-navbar .navbar-container ul.nav li div.input-group{padding:.7rem 1rem}.header-navbar .navbar-container ul.nav li i.ficon{font-size:1.5rem;color:#626262}.header-navbar .navbar-container ul.nav li i.ficon:hover{color:#62a8ea}.header-navbar .navbar-container ul.nav li .media-list{max-height:18.2rem}.header-navbar .navbar-container ul.nav li .scrollable-container{position:relative}.header-navbar .navbar-container .dropdown-menu-media{width:26rem}.header-navbar .navbar-container .dropdown-menu-media .media-list .media{padding:1rem;border:none;border-bottom:1px solid #dae1e7}.header-navbar .navbar-container .dropdown-menu-media .media-list .media:hover{background:#eff1f7}.header-navbar .navbar-container .dropdown-menu-media .media-list .media .media-meta{color:#626262}.header-navbar .navbar-container .dropdown-menu-media .media-list a:last-of-type .media{border-bottom:none}.header-navbar .navbar-container .dropdown-menu-media .dropdown-menu-header{border-bottom:1px solid #dae1e7}.header-navbar .navbar-container .dropdown-menu-media .dropdown-menu-footer a{padding:.3rem;border-top:1px solid #dae1e7}.header-navbar .nav-item+.nav-item,.header-navbar.navbar-without-menu .navbar-container{margin-left:0}@media (max-width:767.98px){.header-navbar .navbar-header{width:100%!important;padding:.5rem 1rem;position:relative}.header-navbar .navbar-header .menu-toggle{top:2px;position:relative}.header-navbar .navbar-header .open-navbar-container i{font-size:1.8rem}.header-navbar .navbar-header .navbar-brand{position:absolute;left:50%;top:0;transform:translate(-50%)}.header-navbar.navbar-with-menu .navbar-container{width:100%;display:table;margin:0;height:auto}}@media (max-width:991.98px){[data-menu=vertical-menu-modern] .header-navbar .navbar-header{width:100%!important;padding:.5rem 1rem;position:relative}[data-menu=vertical-menu-modern] .header-navbar .navbar-header .menu-toggle{top:2px;position:relative}[data-menu=vertical-menu-modern] .header-navbar .navbar-header .open-navbar-container i{font-size:1.8rem}[data-menu=vertical-menu-modern] .header-navbar .navbar-header .navbar-brand{position:absolute;left:50%;top:0;transform:translate(-50%)}[data-menu=vertical-menu-modern] .header-navbar.navbar-with-menu .navbar-container{width:100%;display:table;margin:0;height:auto}[data-menu=vertical-menu-modern] .navbar-dark .navbar-header .navbar-nav .nav-link,[data-menu=vertical-menu-modern] .navbar-semi-dark .navbar-header .navbar-nav .nav-link{color:#fff}[data-menu=vertical-menu-modern] .navbar-dark .navbar-container .navbar-nav .nav-link,[data-menu=vertical-menu-modern] .navbar-light .navbar-header .navbar-nav .nav-link,[data-menu=vertical-menu-modern] .navbar-semi-dark .navbar-container .navbar-nav .nav-link{color:#b8c2cc}}.navbar-light,.navbar-light.navbar-horizontal{background:#fff}.navbar-light .navbar-nav li{line-height:1}.navbar-light .navbar-nav .active.nav-link{background-color:rgba(0,0,0,.03)}.navbar-light .navbar-nav .disabled.nav-link{color:#b8c2cc}.navbar-dark{background:#b8c2cc}.navbar-dark .navbar-brand{color:#fff!important}.navbar-dark.navbar-horizontal{background:#b8c2cc}.navbar-dark .nav-search .btn-secondary,.navbar-dark .nav-search .form-control{color:#fff;background:#b8c2cc}.navbar-dark .navbar-nav li{line-height:1}.navbar-dark .navbar-nav .active.nav-link{background-color:hsla(0,0%,100%,.05)}.navbar-dark .navbar-nav .disabled.nav-link{color:#dae1e7}.navbar-semi-dark{background:#fff}.navbar-semi-dark .navbar-header{background:#b8c2cc}.navbar-semi-dark .navbar-header .brand-text{color:#fff}.navbar-semi-dark .navbar-nav li{line-height:1}.navbar-semi-dark .navbar-nav .nav-link{color:#b8c2cc}.navbar-semi-dark .navbar-nav .active.nav-link{background-color:rgba(0,0,0,.03)}.navbar-semi-dark .navbar-nav .disabled.nav-link{color:#b8c2cc}.navbar-semi-light{background:#b8c2cc}.navbar-semi-light .navbar-header{background:#fff}.navbar-semi-light .navbar-header .brand-text{color:#b8c2cc}.navbar-semi-light .navbar-nav li{line-height:1}.navbar-semi-light .navbar-nav .nav-link{color:#fff}.navbar-semi-light .navbar-nav .active.nav-link{background-color:rgba(0,0,0,.03)}.navbar-semi-light .navbar-nav .disabled.nav-link{color:#b8c2cc}@-moz-document url-prefix(){ul li a .children-in{position:relative;right:3px;top:-14px}}.navbar-menu-icon span{display:block;position:absolute;height:2px;width:100%;background:#b8c2cc;border-radius:9px;opacity:1;left:0;transform:rotate(0deg);transition:.25s ease-in-out}.navbar-menu-icon span:first-child{top:0}.navbar-menu-icon span:nth-child(2){top:10px}.navbar-menu-icon span:nth-child(3){top:20px}.navbar-menu-icon.show span:first-child{top:10px;transform:rotate(135deg)}.navbar-menu-icon.show span:nth-child(2){opacity:0;left:-60px}.navbar-menu-icon.show span:nth-child(3){top:10px;transform:rotate(-135deg)}@media (max-width:767.98px){.header-navbar .navbar-nav .show{position:static}.header-navbar .navbar-nav .open-navbar-container{padding-top:.625rem}.header-navbar .navbar-container .show .dropdown-menu{right:0;left:0!important;float:none;width:auto;margin-top:0;max-height:400px;overflow-x:hidden}.header-navbar .navbar-container .dropdown-user .dropdown-menu-right{right:0!important}.header-navbar .navbar-container ul.nav li.nav-item i{margin-right:.2rem}.header-navbar .navbar-container ul.nav li a.dropdown-user-link{padding:.8rem .6rem}.header-navbar .navbar-container ul.nav li .dropdown-toggle:after{margin-right:0;margin-left:-2px}.navbar-dark .hamburger-inner,.navbar-dark .hamburger-inner:after,.navbar-dark .hamburger-inner:before,.navbar-semi-dark .hamburger-inner,.navbar-semi-dark .hamburger-inner:after,.navbar-semi-dark .hamburger-inner:before{background-color:#fff}.navbar-dark .navbar-header .navbar-nav .nav-link,.navbar-semi-dark .navbar-header .navbar-nav .nav-link{color:#fff}.navbar-dark .navbar-container .navbar-nav .nav-link,.navbar-light .navbar-container .navbar-nav .nav-link,.navbar-light .navbar-header .navbar-nav .nav-link,.navbar-semi-dark .navbar-container .navbar-nav .nav-link,.navbar-semi-light .navbar-container .navbar-nav .nav-link,.navbar-semi-light .navbar-header .navbar-nav .nav-link{color:#b8c2cc}}.headroom{will-change:transform;transition:transform .2s linear}.headroom--pinned-top{transform:translateY(0)}.headroom--unpinned-top{transform:translateY(-100%)}.headroom--pinned-bottom{transform:translateY(0)}.headroom--unpinned-bottom{transform:translateY(100%)}@media (max-width:575.98px){.header-navbar .navbar-container ul.nav li .selected-language{display:none}}body[data-col=\"1-column\"] .header-navbar.floating-nav{width:calc(100% - 4.4rem)}@media (-ms-high-contrast:none),(min-width:1200px) and (-ms-high-contrast:active){body:not([data-col=\"1-columns\"]) .header-navbar.floating-nav{width:calc(100% - 320px)}}@media (max-width:1199.98px){.header-navbar .navbar-container ul.nav li a.dropdown-user-link{padding:.7rem 1.23rem}.header-navbar .navbar-container ul.nav li .dropdown-toggle:after{margin-right:0;margin-left:-2px}.header-navbar.navbar-static-top{left:0;width:100%}}@media (max-width:767px){#navbar-mobile.navbar-collapse .navbar-nav{margin:0;flex-flow:row wrap}#navbar-mobile.navbar-collapse .navbar-nav .dropdown-menu{position:absolute}#navbar-mobile.navbar-collapse .navbar-nav .nav-item{float:left}}@media (max-width:991.98px){#navbar-mobile.navbar-collapse .navbar-nav{margin:0;flex-flow:row wrap}#navbar-mobile.navbar-collapse .navbar-nav .dropdown-menu{position:absolute}#navbar-mobile.navbar-collapse .navbar-nav .nav-item{float:left}}@media only screen and (min-device-width:26.78em) and (max-device-width:47.64em) and (-webkit-min-device-pixel-ratio:2) and (orientation:landscape){.header-navbar .navbar-container .show .dropdown-menu{max-height:180px}}@media only screen and (min-device-width:29.57em) and (max-device-width:52.57em) and (-webkit-min-device-pixel-ratio:3) and (orientation:landscape){.header-navbar .navbar-container .show .dropdown-menu{max-height:280px}}#navbar-component .navbar{z-index:auto!important}#navbar-component .navbar.floating-nav{border-radius:.5rem}#navbar-component .navbar .navbar-nav .nav-item a{color:inherit}#navbar-component .navbar.header-navbar.navbar-dark .navbar-nav .nav-link,#navbar-component .navbar.header-navbar.navbar-dark .navbar-nav .nav-link i{color:#fff}#navbar-component .navbar .navbar-nav .dropdown-language.show,#navbar-component .navbar .navbar-nav .dropdown-notification.show,#navbar-component .navbar .navbar-nav .dropdown-user.show{position:relative}#navbar-component .navbar .navbar-nav .dropdown-language .dropdown-menu.show,#navbar-component .navbar .navbar-nav .dropdown-notification .dropdown-menu.show,#navbar-component .navbar .navbar-nav .dropdown-user .dropdown-menu.show{position:absolute;right:0;left:auto!important}#navbar-component .navbar.navbar-dark .navbar-toggler,#navbar-component .navbar.navbar-light .navbar-toggler{font-size:1.2rem}#navbar-component .navbar.navbar-dark .navbar-toggler:focus,#navbar-component .navbar.navbar-light .navbar-toggler:focus{outline:0}#navbar-component #navbar-collapsed .navbar{border-radius:0}@media (min-width:992px){#navbar-component .navbar .navbar-container{background:inherit}#navbar-component .nav .dropdown-language{float:right}}@media (max-width:992px){#navbar-component .navbar .navbar-container{background:inherit}#navbar-component .navbar .navbar-container .navbar-nav{flex-direction:row}}@media (max-width:1201px){.header-navbar.fixed-top{left:0}.horizontal-layout .header-navbar .navbar-container{padding-left:1.5rem;padding-right:1.2rem}}@media (max-width:1199px){.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-name{margin-bottom:0}}@media (max-width:768px){#navbar-component .navbar .navbar-nav .dropdown-notification.show{position:static}}@media (max-width:575.98px){.header-navbar.floating-nav{width:calc(100% - 2.4rem)!important;margin-left:1.2rem;margin-right:1.2rem}.content.app-content .content-area-wrapper{margin-left:1.2rem!important;margin-right:1.2rem!important}.header-navbar .navbar-container{padding-left:1rem!important;padding-right:0!important}}@media (max-width:992px){.navbar-container #navbar-mobile .nav-back{margin-top:5px}}.nav{border-radius:.25rem}.nav.wrap-border{border:1px solid #ddd}.nav.wrap-border li.nav-header{margin:0 .5rem}.nav.wrap-border div,.nav.wrap-border li.nav-item{padding:2px .714rem}.nav.square-border,.nav.square-border .nav-item .nav-link.active{border-radius:0}.nav .modern-nav-toggle{padding:1.571rem 0}.nav.nav-pills{margin-bottom:1rem}.nav.nav-pills .nav-item .nav-link{border-radius:.357rem;padding:.3rem 1rem .2rem;margin-right:.5rem}.nav.nav-pills .nav-item .nav-link.active{color:#fff}.nav.nav-pills .nav-item .nav-link.disabled{color:#b8c2cc}.nav.nav-pills .nav-item .nav-link.dropdown-toggle:after{top:1px;left:1px}.nav.nav-pills .nav-item.dropdown.show .nav-link{color:#fff}.nav.nav-pills .nav-item.dropdown.show .dropdown-item.active:hover{color:#62a8ea}.nav.nav-pills.nav-justified{width:100%}.nav.nav-pills.nav-justified .nav-item{float:none}.nav.nav-pills.nav-justified .nav-link{text-align:center;margin-bottom:5px}.nav.nav-pills.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:576px){.nav.nav-pills.nav-justified .nav-item{display:block;width:1%}.nav.nav-pills.nav-justified .nav-link{margin-bottom:0}}.nav.nav-pills.nav-justified .nav-link{margin-right:0;border-radius:.5rem}@media (min-width:576px){.nav.nav-pills.nav-justified .nav-link.active,.nav.nav-pills.nav-justified .nav-link.active:focus,.nav.nav-pills.nav-justified .nav-link.active:hover{border-bottom-color:transparent}}.nav.nav-pills.nav-justified .nav-link{display:block}.nav.nav-pills.nav-justified .nav-link.active,.nav.nav-pills.nav-justified .nav-link.active:focus,.nav.nav-pills.nav-justified .nav-link.active:hover{border:none}.nav.nav-pills.nav-active-bordered-pill .nav-item a.nav-link.active{border:1px solid #62a8ea;border-radius:.25rem;color:#62a8ea;background-color:#fff}.nav.nav-tabs{border:none;margin-bottom:1rem;border-radius:0}.nav.nav-tabs,.nav.nav-tabs .nav-item{position:relative}.nav.nav-tabs .nav-item .nav-link{color:#626262;font-size:.95rem;border:none;min-width:auto;font-weight:450;padding:.61rem .635rem;border-radius:0}.nav.nav-tabs .nav-item .nav-link.active{border:none;position:relative;color:#62a8ea;transition:all .2s ease;background-color:transparent}.nav.nav-tabs .nav-item .nav-link.active:after{content:attr(data-before);height:2px;width:100%;left:0;position:absolute;bottom:0;top:100%;background:linear-gradient(30deg,#62a8ea,rgba(98,168,234,.5))!important;box-shadow:0 0 8px 0 rgba(98,168,234,.5)!important;transform:translateY(0);transition:all .2s linear}.nav.nav-tabs .nav-item .nav-link.dropdown-toggle:after{top:1px;left:1px}.nav.nav-tabs .nav-item .nav-link.disabled{color:#b8c2cc}.nav.nav-tabs.nav-justified{width:100%}.nav.nav-tabs.nav-justified .nav-item{float:none}.nav.nav-tabs.nav-justified .nav-link{text-align:center;margin-bottom:5px}.nav.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:576px){.nav.nav-tabs.nav-justified .nav-item{display:block;width:1%}.nav.nav-tabs.nav-justified .nav-link{margin-bottom:0}}.nav.nav-tabs.nav-justified .nav-link{margin-right:0;border-radius:.5rem}@media (min-width:576px){.nav.nav-tabs.nav-justified .nav-link.active,.nav.nav-tabs.nav-justified .nav-link.active:focus,.nav.nav-tabs.nav-justified .nav-link.active:hover{border-bottom-color:transparent}}.nav.nav-tabs.nav-justified .nav-item a.nav-link{display:block;border-radius:0}.nav.nav-tabs.nav-justified .nav-item a.nav-link.active{border:none;background-color:#fff}.nav.nav-tabs.nav-justified .nav-item a.nav-link:hover{border-color:transparent}.nav-vertical{overflow:hidden}.nav-vertical .nav.nav-tabs .nav-item .nav-link{border:none;margin-bottom:0}.nav-vertical .nav.nav-tabs .nav-item .nav-link.active{border:none;border-radius:0}.nav-vertical .nav.nav-tabs .nav-item .nav-link.active:after{transform:rotate(90deg);left:auto;right:-1.5rem;bottom:100%;top:1.25rem;width:2.14rem}.nav-vertical .nav.nav-tabs .nav-item .nav-link:hover{border-right:none}.nav-vertical .nav.nav-tabs.nav-left{float:left;display:table;margin-right:1rem}.nav-vertical .nav.nav-tabs.nav-left~.tab-content .tab-pane{display:none;background-color:#fff;overflow-y:auto}.nav-vertical .nav.nav-tabs.nav-left~.tab-content .tab-pane.active{display:block}.nav-vertical .nav.nav-tabs.nav-right{float:right;display:table;margin-left:1rem}.nav-vertical .nav.nav-tabs.nav-right .nav-item .nav-link.active:after{left:-1.5rem}.nav-vertical .nav.nav-tabs.nav-right~.tab-content .tab-pane{display:none;background-color:#fff;overflow-y:auto;padding-right:1rem}.nav-vertical .nav.nav-tabs.nav-right~.tab-content .tab-pane.active{display:block}@media (max-width:576px){.nav-vertical .nav.nav-tabs .nav-item .nav-link.active:after{height:0}}.toast-bs-container{z-index:1040;position:fixed;top:0;left:0;width:100%}.toast-bs-container .toast-position{position:relative;top:0;right:0;display:flex;flex-direction:column;flex-wrap:wrap-reverse}.toast-bs-container .toast-position .toast.show{opacity:1;z-index:1030}.toast-placement{position:static;top:0}.toast-placement .toast{position:fixed;top:0;z-index:1030}.toast{display:none;background-color:#fff;margin-top:.75rem}.toast .toast-header .close:active,.toast .toast-header .close:focus,.toast .toast-header .mailbox-attachment-close:active,.toast .toast-header .mailbox-attachment-close:focus{outline:none}.toast.show.toast-wrapper{position:static}.toast.toast-translucent{opacity:1;display:block}.toast-header img{width:35px;height:24px}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.toast-bs-container{position:fixed!important;left:74%!important}}.toast-bs-container,_:-ms-lang(x){position:fixed!important;left:74%!important}.pagination .page-item{border-radius:5rem}.pagination .page-item.first .page-link,.pagination .page-item.last .page-link,.pagination .page-item.next-item .page-link,.pagination .page-item.prev-item .page-link{color:#62a8ea}.pagination .page-item.first.disabled .page-link,.pagination .page-item.last.disabled .page-link,.pagination .page-item.next-item.disabled .page-link,.pagination .page-item.prev-item.disabled .page-link{color:#b8c2cc}.pagination .page-item:not(.active) .page-link,.pagination .page-item:not(.first) .page-link,.pagination .page-item:not(.last) .page-link,.pagination .page-item:not(.next-item) .page-link,.pagination .page-item:not(.prev-item) .page-link{line-height:1.3}.pagination .page-item.prev-item{margin-right:.3571rem}.pagination .page-item.prev-item .page-link{background-color:#f0f0f0;padding:.572rem .651rem;border-radius:50%}.pagination .page-item.prev-item .page-link:before{content:\"\\E843\";font-family:feather}.pagination .page-item.prev-item .page-link:hover{background:#62a8ea;color:#fff}.pagination .page-item.prev-item~.page-item:nth-child(2){border-top-left-radius:5rem;border-bottom-left-radius:5rem}.pagination .page-item.prev-item~.page-item:nth-child(2) .page-link{border-top-left-radius:5rem!important;border-bottom-left-radius:5rem!important}.pagination .page-item.prev-item~.page-item:nth-last-child(2){border-top-right-radius:5rem;border-bottom-right-radius:5rem}.pagination .page-item.prev-item~.page-item:nth-last-child(2) .page-link{border-top-right-radius:5rem!important;border-bottom-right-radius:5rem!important}.pagination .page-item.next-item{margin-left:.3571rem}.pagination .page-item.next-item .page-link{background-color:#f0f0f0;padding:.572rem .651rem;border-radius:50%}.pagination .page-item.next-item .page-link:after{content:\"\\E844\";font-family:feather}.pagination .page-item.next-item .page-link:hover{background:#62a8ea;color:#fff}.pagination .page-item.prev .page-link:before,.pagination .page-item.previous .page-link:before{content:\"\\E843\";font-family:feather}.pagination .page-item.next .page-link:after{content:\"\\E844\";font-family:feather}.pagination .page-item .page-link{border:none;color:rgba(86,86,86,.9);background-color:#f0f0f0;margin:0;font-size:1rem;font-weight:700}.pagination .page-item .page-link i{position:relative;top:1px}.pagination .page-item .page-link:focus{box-shadow:none}.pagination .page-item .page-link:hover{color:#62a8ea}.pagination .page-item.active{background-color:#f0f0f0;border-radius:0}.pagination .page-item.active .page-link{z-index:3;border-radius:5rem;background-color:#62a8ea;color:#fff;transform:scale(1.05)}.pagination .page-item:first-child:not(.prev-item).active{border-top-left-radius:1.428rem;border-bottom-left-radius:1.428rem}.pagination .page-item:first-child:not(.prev-item).active .page-link{border-radius:5rem}.pagination .page-item:first-child:not(.prev-item) .page-link{border-top-left-radius:1.428rem;border-bottom-left-radius:1.428rem}.pagination .page-item:last-child:not(.next-item).active{border-top-right-radius:1.428rem;border-bottom-right-radius:1.428rem}.pagination .page-item:last-child:not(.next-item).active .page-link{border-radius:5rem}.pagination .page-item:last-child:not(.next-item) .page-link{border-top-right-radius:1.428rem;border-bottom-right-radius:1.428rem}.pagination.pagination-lg .page-item .page-link{font-size:1.5rem;transform:scale(1)}html.scroll-smooth{scroll-behavior:smooth}.wrapper,body,html{min-height:100%}.wrapper{position:relative}.wrapper .content-wrapper{min-height:calc(100vh - 6.614rem - 1px)}.layout-boxed .wrapper,.layout-boxed .wrapper:before{margin:0 auto;max-width:1250px}.layout-boxed .wrapper .main-sidebar{left:inherit}@supports not (-webkit-touch-callout:none){.layout-fixed .wrapper .sidebar{height:calc(100vh - 3.164rem - 1px)}.layout-fixed.text-sm .wrapper .sidebar{height:calc(100vh - 2.62475rem - 1px)}}.layout-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed.sidebar-mini-md.sidebar-collapse .wrapper .brand-link,.layout-navbar-fixed.sidebar-mini.sidebar-collapse .wrapper .brand-link{height:calc(3.164rem + 1px);width:5.4rem}.layout-navbar-fixed.sidebar-mini-md.sidebar-collapse.text-sm .wrapper .brand-link,.layout-navbar-fixed.sidebar-mini-md.sidebar-collapse .wrapper .brand-link.text-sm,.layout-navbar-fixed.sidebar-mini.sidebar-collapse.text-sm .wrapper .brand-link,.layout-navbar-fixed.sidebar-mini.sidebar-collapse .wrapper .brand-link.text-sm{height:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .main-header{z-index:1033}.layout-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .control-sidebar{top:0}.layout-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .brand-link,.layout-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;z-index:1035}.layout-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-not-fixed .wrapper .brand-link{position:static}.layout-navbar-not-fixed .wrapper .content-wrapper,.layout-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-navbar-not-fixed .wrapper .main-header{position:static}.layout-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}@media (min-width:576px){.layout-sm-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-sm-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-sm-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-sm-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-sm-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed .wrapper .control-sidebar{top:0}.layout-sm-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-sm-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-sm-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-sm-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-sm-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-sm-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-sm-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-sm-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-sm-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-sm-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-not-fixed .wrapper .brand-link{position:static}.layout-sm-navbar-not-fixed .wrapper .content-wrapper,.layout-sm-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-sm-navbar-not-fixed .wrapper .main-header{position:static}.layout-sm-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}@media (min-width:768px){.layout-md-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-md-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-md-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-md-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-md-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed .wrapper .control-sidebar{top:0}.layout-md-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-md-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-md-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-md-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-md-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-md-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-md-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-md-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-md-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-md-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-md-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-not-fixed .wrapper .brand-link{position:static}.layout-md-navbar-not-fixed .wrapper .content-wrapper,.layout-md-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-md-navbar-not-fixed .wrapper .main-header{position:static}.layout-md-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}@media (min-width:992px){.layout-lg-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-lg-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-lg-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-lg-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-lg-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed .wrapper .control-sidebar{top:0}.layout-lg-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-lg-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-lg-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-lg-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-lg-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-lg-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-lg-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-lg-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-lg-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-lg-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-not-fixed .wrapper .brand-link{position:static}.layout-lg-navbar-not-fixed .wrapper .content-wrapper,.layout-lg-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-lg-navbar-not-fixed .wrapper .main-header{position:static}.layout-lg-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}@media (min-width:1200px){.layout-xl-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-xl-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-xl-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-xl-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-xl-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed .wrapper .control-sidebar{top:0}.layout-xl-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-xl-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-xl-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-xl-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-xl-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-xl-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-xl-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-xl-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-xl-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-xl-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-not-fixed .wrapper .brand-link{position:static}.layout-xl-navbar-not-fixed .wrapper .content-wrapper,.layout-xl-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-xl-navbar-not-fixed .wrapper .main-header{position:static}.layout-xl-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}.layout-footer-not-fixed .wrapper .content-wrapper{margin-bottom:0}.layout-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-footer-not-fixed .wrapper .main-footer{position:static}@media (min-width:576px){.layout-sm-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-sm-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-sm-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-sm-footer-not-fixed .wrapper .main-footer{position:static}}@media (min-width:768px){.layout-md-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-md-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-md-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-md-footer-not-fixed .wrapper .main-footer{position:static}}@media (min-width:992px){.layout-lg-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-lg-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-lg-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-lg-footer-not-fixed .wrapper .main-footer{position:static}}@media (min-width:1200px){.layout-xl-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-xl-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-xl-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-xl-footer-not-fixed .wrapper .main-footer{position:static}}.layout-top-nav .wrapper{margin-left:0}.layout-top-nav .wrapper .main-header .brand-image{margin-top:-.5rem;margin-right:.2rem;height:33px}.layout-top-nav .wrapper .main-sidebar{bottom:inherit;height:inherit}.layout-top-nav .wrapper .content-wrapper,.layout-top-nav .wrapper .main-footer,.layout-top-nav .wrapper .main-header,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .content-wrapper,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .content-wrapper:before,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-footer,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-footer:before,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-header,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-header:before{margin-left:0}@media (min-width:768px){body:not(.sidebar-mini-md) .content-wrapper,body:not(.sidebar-mini-md) .main-footer,body:not(.sidebar-mini-md) .main-header{transition:margin-left .3s ease-in-out;margin-left:260px}}@media (min-width:768px) and (prefers-reduced-motion:reduce){body:not(.sidebar-mini-md) .content-wrapper,body:not(.sidebar-mini-md) .main-footer,body:not(.sidebar-mini-md) .main-header{transition:none}}@media (min-width:768px){.sidebar-collapse body:not(.sidebar-mini-md) .content-wrapper,.sidebar-collapse body:not(.sidebar-mini-md) .main-footer,.sidebar-collapse body:not(.sidebar-mini-md) .main-header{margin-left:0}}@media (max-width:991.98px){body:not(.sidebar-mini-md) .content-wrapper,body:not(.sidebar-mini-md) .content-wrapper:before,body:not(.sidebar-mini-md) .main-footer,body:not(.sidebar-mini-md) .main-footer:before,body:not(.sidebar-mini-md) .main-header,body:not(.sidebar-mini-md) .main-header:before{margin-left:0}}@media (min-width:768px){.sidebar-mini-md .content-wrapper,.sidebar-mini-md .main-footer,.sidebar-mini-md .main-header{transition:margin-left .3s ease-in-out;margin-left:260px}}@media (min-width:768px) and (prefers-reduced-motion:reduce){.sidebar-mini-md .content-wrapper,.sidebar-mini-md .main-footer,.sidebar-mini-md .main-header{transition:none}}@media (min-width:768px){.sidebar-collapse .sidebar-mini-md .content-wrapper,.sidebar-collapse .sidebar-mini-md .main-footer,.sidebar-collapse .sidebar-mini-md .main-header{margin-left:5.4rem}}@media (max-width:991.98px){.sidebar-mini-md .content-wrapper,.sidebar-mini-md .content-wrapper:before,.sidebar-mini-md .main-footer,.sidebar-mini-md .main-footer:before,.sidebar-mini-md .main-header,.sidebar-mini-md .main-header:before{margin-left:5.4rem}}.content-wrapper{background:#f4f6f9}.content-wrapper>.content{padding:0 1rem}.main-sidebar,.main-sidebar:before{transition:margin-left .3s ease-in-out,width .3s ease-in-out;width:260px}@media (prefers-reduced-motion:reduce){.main-sidebar,.main-sidebar:before{transition:none}}.sidebar-collapse:not(.sidebar-mini):not(.sidebar-mini-md) .main-sidebar,.sidebar-collapse:not(.sidebar-mini):not(.sidebar-mini-md) .main-sidebar:before{box-shadow:none!important}.sidebar-collapse .main-sidebar,.sidebar-collapse .main-sidebar:before{margin-left:-260px}.sidebar-collapse .main-sidebar .nav-sidebar.nav-child-indent .nav-treeview{padding:0}@media (max-width:767.98px){.main-sidebar,.main-sidebar:before{box-shadow:none!important;margin-left:-260px}.sidebar-open .main-sidebar,.sidebar-open .main-sidebar:before{margin-left:0}}:not(.layout-fixed) .main-sidebar{height:inherit;min-height:100%;position:absolute;top:0}.layout-fixed .brand-link{width:260px}.layout-fixed .main-sidebar{left:0}.layout-fixed .control-sidebar,.layout-fixed .main-sidebar{bottom:0;float:none;height:100vh;position:fixed;top:0}.layout-fixed .control-sidebar .control-sidebar-content{height:calc(100vh - 3.164rem - 1px)}@supports (-webkit-touch-callout:none){.layout-fixed .main-sidebar{height:inherit}}.main-footer{background:transparent;border-top:0 solid #dae1e7;padding:.5rem 1rem;font-size:90%}.main-footer.text-sm,.text-sm .main-footer{padding:.812rem}.content-header{padding:15px 1rem}.text-sm .content-header{padding:10px 1rem}.content-header h1{font-size:1.8rem;margin:0}.text-sm .content-header h1{font-size:1.5rem}.content-header .breadcrumb{background:transparent;line-height:1.8rem;margin-bottom:0;padding:0;font-size:97%}.text-sm .content-header .breadcrumb{line-height:1.5rem}.hold-transition .content-wrapper,.hold-transition .control-sidebar,.hold-transition .control-sidebar *,.hold-transition .main-footer,.hold-transition .main-header,.hold-transition .main-sidebar,.hold-transition .main-sidebar *{transition:none!important}.main-header{border-bottom:1px solid #dae1e7;z-index:1034}.main-header .nav-link{height:2.164rem;position:relative}.main-header.text-sm .nav-link,.text-sm .main-header .nav-link{height:1.62475rem;padding:.35rem .5rem}.main-header.text-sm .nav-link>.fa,.main-header.text-sm .nav-link>.fab,.main-header.text-sm .nav-link>.far,.main-header.text-sm .nav-link>.fas,.main-header.text-sm .nav-link>.glyphicon,.main-header.text-sm .nav-link>.ion,.text-sm .main-header .nav-link>.fa,.text-sm .main-header .nav-link>.fab,.text-sm .main-header .nav-link>.far,.text-sm .main-header .nav-link>.fas,.text-sm .main-header .nav-link>.glyphicon,.text-sm .main-header .nav-link>.ion{font-size:1rem}.main-header .navbar-nav .nav-item{margin:0}.main-header .navbar-nav[class*=-right] .dropdown-menu{left:auto;margin-top:-3px;right:0}@media (max-width:575.98px){.main-header .navbar-nav[class*=-right] .dropdown-menu{left:0;right:auto}}.navbar-img{height:calc(3.164rem + 1px)/2;width:auto}.navbar-badge{font-size:.6rem;font-weight:300;padding:2px 4px;position:absolute;right:5px;top:9px}.btn-navbar{background-color:transparent;border-left-width:0}.form-control-navbar{border-right-width:0}.form-control-navbar+.input-group-append{margin-left:0}.btn-navbar,.form-control-navbar{transition:none}.navbar-dark .btn-navbar,.navbar-dark .form-control-navbar{background-color:hsla(0,0%,100%,.2);border:0}.navbar-dark .form-control-navbar::-moz-placeholder{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar:-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar::placeholder{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar+.input-group-append>.btn-navbar{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar:focus,.navbar-dark .form-control-navbar:focus+.input-group-append .btn-navbar{background-color:hsla(0,0%,100%,.6);border:0!important;color:#1e1e1e}.navbar-light .btn-navbar,.navbar-light .form-control-navbar{background-color:#b4bac2;border:0}.navbar-light .form-control-navbar::-moz-placeholder{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar:-ms-input-placeholder{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar::placeholder{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar+.input-group-append>.btn-navbar{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar:focus,.navbar-light .form-control-navbar:focus+.input-group-append .btn-navbar{background-color:#ededed;border:0!important;color:#1e1e1e}.brand-link{display:block;font-size:2rem;line-height:1.25;padding:.132rem .5rem;transition:width .3s ease-in-out;white-space:nowrap}.brand-link:hover{color:#fff;text-decoration:none}.text-sm .brand-link{font-size:inherit}[class*=sidebar-dark] .brand-link{border-bottom:0;color:hsla(0,0%,100%,.8)}[class*=sidebar-light] .brand-link{border-bottom:0;color:rgba(34,41,47,.8)}.brand-link .brand-image{float:left;line-height:.8;margin-left:.8rem;margin-right:.5rem;margin-top:-3px;max-height:33px;width:auto}.brand-link .brand-image-xs{float:left;line-height:.8;margin-top:-.1rem;max-height:33px;width:auto}.brand-link .brand-image-xl{line-height:.8;max-height:40px;width:auto}.brand-link.text-sm .brand-image,.text-sm .brand-link .brand-image{height:29px;margin-bottom:-.25rem;margin-left:.95rem;margin-top:-.25rem}.brand-link.text-sm .brand-image-xs,.text-sm .brand-link .brand-image-xs{margin-top:-.2rem;max-height:29px}.brand-link.text-sm .brand-image-xl,.text-sm .brand-link .brand-image-xl{margin-top:-.225rem;max-height:38px}.main-sidebar{height:100vh;overflow-y:hidden;z-index:1038}.main-sidebar a:-moz-focusring{border:0;outline:none}.main-sidebar .nav .nav-item .nav-link{padding:10px 10px 10px 25px!important}.main-sidebar .nav-treeview.nav .nav-item .nav-link{padding:5px 10px 7px 25px!important}.sidebar{height:calc(100% - 3.164rem - 1px);overflow-y:auto;padding:0 .5rem}.user-panel{position:relative}[class*=sidebar-dark] .user-panel{border-bottom:1px solid #3c4853}[class*=sidebar-light] .user-panel{border-bottom:1px solid #dae1e7}.user-panel,.user-panel .info{overflow:hidden;white-space:nowrap}.user-panel .image{display:inline-block;padding-left:.3rem}.user-panel img{height:auto;width:2.5666666667rem}.user-panel .info{display:inline-block;padding:5px 5px 5px 10px}.user-panel .dropdown-menu,.user-panel .status{font-size:1rem}.nav-sidebar .nav-item>.nav-link{margin-bottom:.2rem}.nav-sidebar .nav-item>.nav-link .right{transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-sidebar .nav-item>.nav-link .right{transition:none}}.nav-sidebar .nav-link>.right,.nav-sidebar .nav-link>p>.right{position:absolute;right:1rem;top:.9rem}.nav-sidebar .nav-link>.right i,.nav-sidebar .nav-link>.right span,.nav-sidebar .nav-link>p>.right i,.nav-sidebar .nav-link>p>.right span{margin-left:.5rem}.nav-sidebar .nav-link>.right:nth-child(2),.nav-sidebar .nav-link>p>.right:nth-child(2){right:2.2rem}.nav-sidebar .menu-open>.nav-treeview{display:block;border-radius:0}.nav-sidebar .menu-open>.nav-link i.right{transform:rotate(-90deg)}.nav-sidebar>.nav-item{margin-bottom:0}.nav-sidebar>.nav-item .nav-icon{margin-left:.05rem;font-size:1.2rem;margin-right:.2rem;text-align:center;width:2.4rem}.nav-sidebar>.nav-item .nav-icon.fa,.nav-sidebar>.nav-item .nav-icon.fab,.nav-sidebar>.nav-item .nav-icon.far,.nav-sidebar>.nav-item .nav-icon.fas,.nav-sidebar>.nav-item .nav-icon.glyphicon,.nav-sidebar>.nav-item .nav-icon.ion{font-size:1.1rem}.nav-sidebar>.nav-item .float-right{margin-top:3px}.nav-sidebar .nav-treeview{display:none;list-style:none;padding:0}.nav-sidebar .nav-treeview>.nav-item>.nav-link>.nav-icon{width:2.4rem}.nav-sidebar.nav-child-indent .nav-treeview{transition:padding .3s ease-in-out;padding-left:1rem}.text-sm .nav-sidebar.nav-child-indent .nav-treeview{padding-left:.5rem}.nav-sidebar.nav-child-indent.nav-legacy .nav-treeview .nav-treeview{padding-left:2rem;margin-left:-1rem}.text-sm .nav-sidebar.nav-child-indent.nav-legacy .nav-treeview .nav-treeview{padding-left:1rem;margin-left:-.5rem}.nav-sidebar .nav-header{font-size:.9rem;padding:.357rem}.nav-sidebar .nav-header:not(:first-of-type){padding:1.7rem 1rem .5rem}.nav-sidebar .nav-link p{display:inline-block;margin:0}#sidebar-overlay{background-color:rgba(34,41,47,.1);bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:1037}@media (max-width:991.98px){.sidebar-open #sidebar-overlay{display:block}}[class*=sidebar-light-]{background-color:#fff}[class*=sidebar-light-] .user-panel a:hover{color:#555}[class*=sidebar-light-] .user-panel .status,[class*=sidebar-light-] .user-panel .status:active,[class*=sidebar-light-] .user-panel .status:focus,[class*=sidebar-light-] .user-panel .status:hover{background:transparent;color:#555}[class*=sidebar-light-] .user-panel .dropdown-menu{border-color:transparent}[class*=sidebar-light-] .user-panel .dropdown-item{color:#626262}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link:active,[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link:focus{color:#555}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link i{margin-right:.75rem;font-size:1.2rem}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link p i{margin-right:0;margin-top:1px}[class*=sidebar-light-] .nav-sidebar>.nav-item.menu-open>.nav-link,[class*=sidebar-light-] .nav-sidebar>.nav-item:hover>.nav-link{background-color:transparent;color:#555}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link.active{color:#fff}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-treeview{background:transparent}[class*=sidebar-light-] .nav-header{background:inherit;color:#484848}[class*=sidebar-light-] .sidebar a{color:#555}[class*=sidebar-light-] .sidebar a:hover{text-decoration:none}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link{color:#555}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link i{margin-right:.75rem;margin-left:3px}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link p i{margin-right:0}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active:hover{background-color:transparent!important;background-image:linear-gradient(118deg,rgba(98,168,234,.95),rgba(98,168,234,.7));color:#fff;box-shadow:0 0 8px 1px rgba(98,168,234,.7)}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link:hover{background-color:transparent}[class*=sidebar-light-] .nav-flat .nav-item .nav-treeview .nav-treeview,[class*=sidebar-light-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link,[class*=sidebar-light-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link.active{border-color:linear-gradient(118deg,#62a8ea,rgba(98,168,234,.7))}[class*=sidebar-dark-]{background-image:linear-gradient(0deg,#77889f,#3e4958)}[class*=sidebar-dark-] .nav-treeview.nav .nav-item .nav-link{font-size:1rem!important;margin-bottom:0}[class*=sidebar-dark-] .nav-sidebar .nav-link>p>.right{right:.5rem}[class*=sidebar-dark-] .user-panel a:hover{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .user-panel .status,[class*=sidebar-dark-] .user-panel .status:active,[class*=sidebar-dark-] .user-panel .status:focus,[class*=sidebar-dark-] .user-panel .status:hover{background:transparent;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .user-panel .dropdown-menu{border-color:transparent}[class*=sidebar-dark-] .user-panel .dropdown-item{color:#626262}[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:active{color:#fff;font-weight:700}[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:hover{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-sidebar>.nav-item i{margin-right:.75rem;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-sidebar>.nav-item.menu-open>.nav-link,[class*=sidebar-dark-] .nav-sidebar>.nav-item:hover>.nav-link,[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:focus{background-color:transparent;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link.active{color:#fff;background:transparent;font-weight:700}[class*=sidebar-dark-] .nav-header{background:inherit;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .sidebar a{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .sidebar a:focus,[class*=sidebar-dark-] .sidebar a:hover{text-decoration:none}[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:focus,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:hover,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link:focus,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link:hover{background-color:transparent;color:#fff;font-weight:700}[class*=sidebar-dark-] .nav-flat .nav-item .nav-treeview .nav-treeview,[class*=sidebar-dark-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link,[class*=sidebar-dark-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link.active{border-color:transparent}.sidebar-light-primary .nav-item>.nav-link.active{background-color:transparent!important;background-image:linear-gradient(118deg,rgba(98,168,234,.95),rgba(98,168,234,.7));color:#fff;box-shadow:0 0 8px 1px rgba(98,168,234,.7)}.sidebar-light-primary .active-bg-light .nav-item>.nav-link.active{background-color:rgba(98,168,234,.15)!important;color:#62a8ea!important;font-weight:700;box-shadow:0 0 8px 1px rgba(98,168,234,.15)}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand) .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini .main-sidebar.sidebar-focused .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini .main-sidebar:not(.sidebar-no-expand) .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview{padding-left:1rem;margin-left:-.5rem}.nav-flat{margin:-.25rem -.5rem 0}.nav-flat .nav-item>.nav-link{border-radius:0;margin-bottom:0}.nav-flat .nav-item>.nav-link>.nav-icon{margin-left:.55rem}.nav-flat:not(.nav-child-indent) .nav-treeview .nav-item>.nav-link>.nav-icon{margin-left:.4rem}.nav-flat.nav-child-indent .nav-treeview{padding-left:0}.nav-flat.nav-child-indent .nav-treeview .nav-icon{margin-left:.85rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview{border-left:.2rem solid}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-icon{margin-left:1.15rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.45rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.75rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:2.05rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-icon{margin-left:.55rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-link{padding-left:.3rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-icon{margin-left:.35rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:.15rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:-.15rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:-.35rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon{margin-left:.4rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon{margin-left:.85rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon{margin-left:1.15rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.45rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.75rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:2.05rem}.nav-flat .nav-icon{transition:margin-left .3s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-flat .nav-icon{transition:none}}.nav-flat .nav-treeview .nav-icon{margin-left:-.2rem}.nav-flat.nav-sidebar>.nav-item .nav-treeview,.nav-flat.nav-sidebar>.nav-item>.nav-treeview{background:hsla(0,0%,100%,.05)}.nav-flat.nav-sidebar>.nav-item .nav-treeview .nav-item>.nav-link,.nav-flat.nav-sidebar>.nav-item>.nav-treeview .nav-item>.nav-link{border-left:.2rem solid}.nav-legacy{margin:-.25rem -.5rem 0}.nav-legacy.nav-sidebar .nav-item>.nav-link{border-radius:0;margin-bottom:0}.nav-legacy.nav-sidebar .nav-item>.nav-link>.nav-icon{margin-left:.55rem}.text-sm .nav-legacy.nav-sidebar .nav-item>.nav-link>.nav-icon{margin-left:.75rem}.nav-legacy.nav-sidebar>.nav-item>.nav-link.active{background:inherit;border-left:3px solid transparent;box-shadow:none}.nav-legacy.nav-sidebar>.nav-item>.nav-link.active>.nav-icon{margin-left:calc(.55rem - 3px)}.text-sm .nav-legacy.nav-sidebar.nav-flat .nav-treeview .nav-item>.nav-link>.nav-icon,.text-sm .nav-legacy.nav-sidebar>.nav-item>.nav-link.active>.nav-icon{margin-left:calc(.75rem - 3px)}.sidebar-mini-md .nav-legacy>.nav-item .nav-link .nav-icon,.sidebar-mini .nav-legacy>.nav-item .nav-link .nav-icon{transition:margin-left .3s ease-in-out;margin-left:.75rem}@media (prefers-reduced-motion:reduce){.sidebar-mini-md .nav-legacy>.nav-item .nav-link .nav-icon,.sidebar-mini .nav-legacy>.nav-item .nav-link .nav-icon{transition:none}}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview{padding-left:1rem}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview{padding-left:2rem;margin-left:-1rem}.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview{padding-left:.5rem}.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview{padding-left:1rem;margin-left:-.5rem}.sidebar-mini-md.sidebar-collapse .nav-legacy>.nav-item>.nav-link .nav-icon,.sidebar-mini.sidebar-collapse .nav-legacy>.nav-item>.nav-link .nav-icon{margin-left:.55rem}.sidebar-mini-md.sidebar-collapse .nav-legacy>.nav-item>.nav-link.active>.nav-icon,.sidebar-mini.sidebar-collapse .nav-legacy>.nav-item>.nav-link.active>.nav-icon{margin-left:.36rem}.sidebar-mini-md.sidebar-collapse .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse .nav-legacy.nav-child-indent .nav-treeview .nav-treeview{padding-left:0;margin-left:0}.sidebar-mini-md.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link .nav-icon,.sidebar-mini.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link .nav-icon{margin-left:.75rem}.sidebar-mini-md.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link.active>.nav-icon,.sidebar-mini.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link.active>.nav-icon{margin-left:calc(.75rem - 3px)}[class*=sidebar-dark] .nav-legacy.nav-sidebar>.nav-item .nav-treeview,[class*=sidebar-dark] .nav-legacy.nav-sidebar>.nav-item>.nav-treeview{background:hsla(0,0%,100%,.05)}[class*=sidebar-dark] .nav-legacy.nav-sidebar>.nav-item>.nav-link.active{color:#fff}[class*=sidebar-dark] .nav-legacy .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-dark] .nav-legacy .nav-treeview>.nav-item>.nav-link:focus,[class*=sidebar-dark] .nav-legacy .nav-treeview>.nav-item>.nav-link:hover{background:none;color:#fff}[class*=sidebar-light] .nav-legacy.nav-sidebar>.nav-item .nav-treeview,[class*=sidebar-light] .nav-legacy.nav-sidebar>.nav-item>.nav-treeview{background:rgba(34,41,47,.05)}[class*=sidebar-light] .nav-legacy.nav-sidebar>.nav-item>.nav-link.active{color:#fff}[class*=sidebar-light] .nav-legacy .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-light] .nav-legacy .nav-treeview>.nav-item>.nav-link:focus,[class*=sidebar-light] .nav-legacy .nav-treeview>.nav-item>.nav-link:hover{background:none;color:#fff}.nav-collapse-hide-child .menu-open>.nav-treeview{max-height:-webkit-min-content;max-height:-moz-min-content;max-height:min-content;opacity:1}.sidebar-collapse .nav-collapse-hide-child .menu-open>.nav-treeview{max-height:0;opacity:0}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-collapse-hide-child .menu-open>.nav-treeview,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-collapse-hide-child .menu-open>.nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-collapse-hide-child .menu-open>.nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-collapse-hide-child .menu-open>.nav-treeview{max-height:-webkit-min-content;max-height:-moz-min-content;max-height:min-content;opacity:1}.nav-compact .nav-header,.nav-compact .nav-link{padding-top:.1785rem;padding-bottom:.1785rem}.nav-compact .nav-header:not(:first-of-type){padding-top:.5355rem;padding-bottom:.1785rem}.nav-compact .nav-link>.right,.nav-compact .nav-link>p>.right{top:.465rem}.text-sm .nav-compact .nav-link>.right,.text-sm .nav-compact .nav-link>p>.right{top:.7rem}[class*=sidebar-dark] .btn-sidebar,[class*=sidebar-dark] .form-control-sidebar{background:#495567;border:1px solid #5e6e85;color:#fff}[class*=sidebar-dark] .btn-sidebar:focus,[class*=sidebar-dark] .form-control-sidebar:focus{border:1px solid #8695a9}[class*=sidebar-dark] .btn-sidebar:hover{background:#4e5c6e}[class*=sidebar-dark] .btn-sidebar:focus{background:#536276}[class*=sidebar-light] .btn-sidebar,[class*=sidebar-light] .form-control-sidebar{background:#f2f2f2;border:1px solid #d9d9d9;color:#2a2e30}[class*=sidebar-light] .btn-sidebar:focus,[class*=sidebar-light] .form-control-sidebar:focus{border:1px solid #b3b3b3}[class*=sidebar-light] .btn-sidebar:hover{background:#ececec}[class*=sidebar-light] .btn-sidebar:focus{background:#e6e6e6}.logo-xl,.logo-xs{opacity:1;position:absolute;visibility:visible}.logo-xl.brand-image-xs,.logo-xs.brand-image-xs{left:18px;top:12px}.logo-xl.brand-image-xl,.logo-xs.brand-image-xl{left:12px;top:6px}.logo-xs{opacity:0;visibility:hidden}.logo-xs.brand-image-xl{left:16px;top:8px}.brand-link.logo-switch:before{content:\"\\A0\"}@media (min-width:992px){.sidebar-mini .nav-sidebar,.sidebar-mini .nav-sidebar .nav-link,.sidebar-mini .nav-sidebar>.nav-header{white-space:nowrap;overflow:hidden}.sidebar-mini.sidebar-collapse .d-hidden-mini{display:none}.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .main-footer,.sidebar-mini.sidebar-collapse .main-header{margin-left:5.4rem!important}.sidebar-mini.sidebar-collapse .nav-sidebar .nav-header{display:none}.sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p{width:0}.sidebar-mini.sidebar-collapse .brand-text,.sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p,.sidebar-mini.sidebar-collapse .sidebar .user-panel>.info{margin-left:-10px;opacity:0;visibility:hidden}.sidebar-mini.sidebar-collapse .logo-xl{opacity:0;visibility:hidden}.sidebar-mini.sidebar-collapse .logo-xs{display:inline-block;opacity:1;visibility:visible}.sidebar-mini.sidebar-collapse .main-sidebar{overflow-x:hidden}.sidebar-mini.sidebar-collapse .main-sidebar,.sidebar-mini.sidebar-collapse .main-sidebar:before{margin-left:0;width:5.4rem}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel .image{float:none}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-link,.sidebar-mini.sidebar-collapse .main-sidebar:hover,.sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-link{width:260px}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel{text-align:left}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel .image,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel .image{float:left}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-text,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .logo-xl,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar .nav-link p,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-text,.sidebar-mini.sidebar-collapse .main-sidebar:hover .logo-xl,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar .nav-link p,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:inline-block;margin-left:0;opacity:1;visibility:visible}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .logo-xs,.sidebar-mini.sidebar-collapse .main-sidebar:hover .logo-xs{opacity:0;visibility:hidden}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-image,.sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-image{margin-right:.5rem}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .sidebar-form,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini.sidebar-collapse .main-sidebar:hover .sidebar-form,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:block!important;-webkit-transform:translateZ(0)}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar>.nav-item>.nav-link>span,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar>.nav-item>.nav-link>span{display:inline-block!important}.sidebar-mini.sidebar-collapse .visible-sidebar-mini{display:block!important}.sidebar-mini.sidebar-collapse.layout-fixed .main-sidebar:hover .brand-link{width:260px}.sidebar-mini.sidebar-collapse.layout-fixed .brand-link{width:5.4rem}}@media (max-width:991.98px){.sidebar-mini.sidebar-collapse .main-sidebar{box-shadow:none!important}}@media (min-width:768px){.sidebar-mini-md .nav-sidebar,.sidebar-mini-md .nav-sidebar .nav-link,.sidebar-mini-md .nav-sidebar>.nav-header{white-space:nowrap;overflow:hidden}.sidebar-mini-md.sidebar-collapse .d-hidden-mini{display:none}.sidebar-mini-md.sidebar-collapse .content-wrapper,.sidebar-mini-md.sidebar-collapse .main-footer,.sidebar-mini-md.sidebar-collapse .main-header{margin-left:5.4rem!important}.sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-header{display:none}.sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-link p{width:0}.sidebar-mini-md.sidebar-collapse .brand-text,.sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-link p,.sidebar-mini-md.sidebar-collapse .sidebar .user-panel>.info{margin-left:-10px;opacity:0;visibility:hidden}.sidebar-mini-md.sidebar-collapse .logo-xl{opacity:0;visibility:hidden}.sidebar-mini-md.sidebar-collapse .logo-xs{display:inline-block;opacity:1;visibility:visible}.sidebar-mini-md.sidebar-collapse .main-sidebar{overflow-x:hidden}.sidebar-mini-md.sidebar-collapse .main-sidebar,.sidebar-mini-md.sidebar-collapse .main-sidebar:before{margin-left:0;width:5.4rem}.sidebar-mini-md.sidebar-collapse .main-sidebar .user-panel .image{float:none}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-link,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-link{width:260px}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel{text-align:left}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel .image,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel .image{float:left}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-text,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .logo-xl,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar .nav-link p,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-text,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .logo-xl,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar .nav-link p,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:inline-block;margin-left:0;opacity:1;visibility:visible}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .logo-xs,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .logo-xs{opacity:0;visibility:hidden}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-image,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-image{margin-right:.5rem}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .sidebar-form,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .sidebar-form,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:block!important;-webkit-transform:translateZ(0)}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar>.nav-item>.nav-link>span,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar>.nav-item>.nav-link>span{display:inline-block!important}.sidebar-mini-md.sidebar-collapse .visible-sidebar-mini{display:block!important}.sidebar-mini-md.sidebar-collapse.layout-fixed .main-sidebar:hover .brand-link{width:260px}.sidebar-mini-md.sidebar-collapse.layout-fixed .brand-link{width:5.4rem}}.sidebar-collapse .main-sidebar.sidebar-focused .nav-header,.sidebar-collapse .main-sidebar:hover .nav-header{display:inline-block}.sidebar-collapse .main-sidebar.sidebar-focused .nav .menu-open .nav-treeview,.sidebar-collapse .main-sidebar:hover .nav .menu-open .nav-treeview{display:block!important}.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar>.nav-item>.nav-link i,.sidebar-collapse .main-sidebar:hover .nav-sidebar>.nav-item>.nav-link i{font-size:1.2rem}.sidebar-collapse .main-sidebar .nav .nav-item .nav-link{padding:10px 21px!important}.sidebar-collapse .main-sidebar .nav .menu-open .nav-treeview{display:none!important}.sidebar-collapse .header-navbar.floating-nav{width:calc(100% - 70px - 5.4rem)}.sidebar-collapse .header-navbar.fixed-top{left:5.4rem}.sidebar-collapse .nav-sidebar>.nav-item>.nav-link i{font-size:1.3rem}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover{width:5.4rem}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-header,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-header{display:none}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .brand-link,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .brand-link{width:5.4rem!important}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .user-panel .image,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .user-panel .image{float:none!important}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .logo-xs,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .logo-xs{opacity:1;visibility:visible}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .logo-xl,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .logo-xl{opacity:0;visibility:hidden}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar.nav-child-indent .nav-treeview,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar.nav-child-indent .nav-treeview{padding-left:0}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .brand-text,.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar .nav-link p,.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .user-panel>.info,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .brand-text,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar .nav-link p,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .user-panel>.info{margin-left:-10px;opacity:0;visibility:hidden;width:0}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar>.nav-item .nav-icon,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar>.nav-item .nav-icon{margin-right:0}.nav-sidebar{position:relative}.nav-sidebar:hover{overflow:visible}.nav-sidebar>.nav-header,.sidebar-form{overflow:hidden;text-overflow:clip}.nav-sidebar .nav-item>.nav-link{position:relative}.nav-sidebar .nav-item>.nav-link>.float-right{margin-top:-7px;position:absolute;right:10px;top:50%}@media (max-width:767.98px){.sidebar-mini-md.sidebar-collapse .main-sidebar{box-shadow:none!important}.sidebar-collapse .header-navbar.fixed-top{left:0}}@media (max-width:1201px){.sidebar-collapse .header-navbar.fixed-top{left:0}}.main-sidebar .brand-text,.main-sidebar .logo-xl,.main-sidebar .logo-xs,.sidebar .nav-link p,.sidebar .user-panel .info{transition:margin-left .3s linear,opacity .3s ease,visibility .3s ease}@media (prefers-reduced-motion:reduce){.main-sidebar .brand-text,.main-sidebar .logo-xl,.main-sidebar .logo-xs,.sidebar .nav-link p,.sidebar .user-panel .info{transition:none}}html.control-sidebar-animate{overflow-x:hidden}.control-sidebar{bottom:3.45rem;position:absolute;top:calc(3.164rem + 1px);z-index:1031}.control-sidebar,.control-sidebar:before{bottom:3.45rem;display:none;right:-260px;width:260px;transition:right .3s ease-in-out,display .3s ease-in-out}@media (prefers-reduced-motion:reduce){.control-sidebar,.control-sidebar:before{transition:none}}.control-sidebar:before{content:\"\";display:block;position:fixed;top:0;z-index:-1}body.text-sm .control-sidebar{bottom:3.074rem;top:calc(2.62475rem + 1px)}.main-header.text-sm~.control-sidebar{top:calc(2.62475rem + 1px)}.main-footer.text-sm~.control-sidebar{bottom:3.074rem}.control-sidebar-push-slide .content-wrapper,.control-sidebar-push-slide .main-footer{transition:margin-right .3s ease-in-out}@media (prefers-reduced-motion:reduce){.control-sidebar-push-slide .content-wrapper,.control-sidebar-push-slide .main-footer{transition:none}}.control-sidebar-open .control-sidebar{display:block}.control-sidebar-open .control-sidebar,.control-sidebar-open .control-sidebar:before{right:0}.control-sidebar-open.control-sidebar-push-slide .content-wrapper,.control-sidebar-open.control-sidebar-push-slide .main-footer,.control-sidebar-open.control-sidebar-push .content-wrapper,.control-sidebar-open.control-sidebar-push .main-footer{margin-right:260px}.control-sidebar-slide-open .control-sidebar{display:block}.control-sidebar-slide-open .control-sidebar,.control-sidebar-slide-open .control-sidebar:before{right:0;transition:right .3s ease-in-out,display .3s ease-in-out}@media (prefers-reduced-motion:reduce){.control-sidebar-slide-open .control-sidebar,.control-sidebar-slide-open .control-sidebar:before{transition:none}}.control-sidebar-slide-open.control-sidebar-push-slide .content-wrapper,.control-sidebar-slide-open.control-sidebar-push-slide .main-footer,.control-sidebar-slide-open.control-sidebar-push .content-wrapper,.control-sidebar-slide-open.control-sidebar-push .main-footer{margin-right:260px}.control-sidebar-dark,.control-sidebar-dark .nav-link,.control-sidebar-dark a{color:hsla(0,0%,100%,.95)}.control-sidebar-dark{background:#3e4958}.control-sidebar-dark a:hover,.control-sidebar-dark h1,.control-sidebar-dark h2,.control-sidebar-dark h3,.control-sidebar-dark h4,.control-sidebar-dark h5,.control-sidebar-dark h6,.control-sidebar-dark label{color:hsla(0,0%,100%,.95)}.control-sidebar-dark .nav-tabs{background-color:transparent;border-bottom:0;margin-bottom:5px}.control-sidebar-dark .nav-tabs .nav-item{margin:0}.control-sidebar-dark .nav-tabs .nav-link{border-radius:0;padding:10px 20px;position:relative;text-align:center}.control-sidebar-dark .nav-tabs .nav-link,.control-sidebar-dark .nav-tabs .nav-link.active,.control-sidebar-dark .nav-tabs .nav-link:active,.control-sidebar-dark .nav-tabs .nav-link:focus,.control-sidebar-dark .nav-tabs .nav-link:hover{border:0}.control-sidebar-dark .nav-tabs .nav-link.active,.control-sidebar-dark .nav-tabs .nav-link:active,.control-sidebar-dark .nav-tabs .nav-link:focus,.control-sidebar-dark .nav-tabs .nav-link:hover{border-bottom-color:transparent;border-left-color:transparent;border-top-color:transparent;color:hsla(0,0%,100%,.95)}.control-sidebar-dark .nav-tabs .nav-link.active{background-color:#3e4958}.control-sidebar-dark .tab-pane{padding:10px 15px}.control-sidebar-light{color:#6f6f6f;background:#fff;border-left:1px solid #dae1e7}.text-sm .dropdown-menu{font-size:1rem!important}.text-sm .dropdown-toggle:after{vertical-align:.2rem}.dropdown-item-title{font-size:1rem;margin:0}.dropdown-icon:after{margin-left:0}.dropdown-menu-lg{max-width:300px;min-width:280px;padding:0}.dropdown-menu-lg .dropdown-divider{margin:0}.dropdown-menu-lg .dropdown-item{padding:.5rem 1.5rem}.dropdown-menu-lg p{margin:0;white-space:normal}.dropdown-submenu{position:relative}.dropdown-submenu>a:after{border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid;float:right;margin-left:.5rem;margin-top:.5rem}.dropdown-submenu>.dropdown-menu{left:100%;margin-left:0;margin-top:0;top:0}.dropdown-hover.dropdown-submenu:hover>.dropdown-menu,.dropdown-hover .dropdown-submenu:hover>.dropdown-menu,.dropdown-hover.nav-item.dropdown:hover>.dropdown-menu,.dropdown-hover:hover>.dropdown-menu{display:block}.dropdown-menu-xl{max-width:420px;min-width:360px;padding:0}.dropdown-menu-xl .dropdown-divider{margin:0}.dropdown-menu-xl .dropdown-item{padding:.5rem 1.5rem}.dropdown-menu-xl p{margin:0;white-space:normal}.dropdown-footer,.dropdown-header{display:block;font-size:1rem;padding:.5rem 1.5rem;text-align:center}.open:not(.dropup)>.animated-dropdown-menu{-webkit-animation:flipInX .7s both;animation:flipInX .7s both;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}.navbar-custom-menu>.navbar-nav>li{position:relative}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:0;left:auto}@media (max-width:767.98px){.navbar-custom-menu>.navbar-nav{float:right}.navbar-custom-menu>.navbar-nav>li{position:static}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:5%;left:auto;border:1px solid #ddd;background:#fff}}.navbar-nav>.user-menu>.nav-link:after{content:none}.navbar-nav>.user-menu>.dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;padding:0;width:280px}.navbar-nav>.user-menu>.dropdown-menu,.navbar-nav>.user-menu>.dropdown-menu>.user-body{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header{height:175px;padding:10px;text-align:center}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>img{z-index:5;height:90px;width:90px;border:3px solid hsla(0,0%,100%,.2)}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p{z-index:5;font-size:17px;margin-top:10px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p>small{display:block;font-size:12px}.navbar-nav>.user-menu>.dropdown-menu>.user-body{border-bottom:1px solid #4e5154;border-top:1px solid #dae1e7;padding:15px}.navbar-nav>.user-menu>.dropdown-menu>.user-body:after{display:block;clear:both;content:\"\"}@media (min-width:576px){.navbar-nav>.user-menu>.dropdown-menu>.user-body a{background:#fff!important;color:#4e5154!important}}.navbar-nav>.user-menu>.dropdown-menu>.user-footer{background-color:#babfc7;padding:10px}.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{display:block;clear:both;content:\"\"}.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default{color:#b8c2cc}@media (min-width:576px){.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default:hover{background-color:#babfc7}}.navbar-nav>.user-menu .user-image{border-radius:50%;float:left;height:2.5666666667rem;margin-right:10px;margin-top:-2px;width:2.5666666667rem}@media (min-width:576px){.navbar-nav>.user-menu .user-image{float:none;line-height:10px;margin-right:.4rem;margin-top:-8px}}.nav-pills .nav-link{color:#b8c2cc}.nav-pills .nav-link:not(.active):hover{color:#62a8ea}.nav-pills .nav-item.dropdown.show .nav-link:hover{color:#fff}.nav-tabs.flex-column{border-bottom:0;border-right:1px solid #dae1e7}.nav-tabs.flex-column .nav-link{border-bottom-left-radius:.5rem;border-top-right-radius:0;margin-right:-1px}.nav-tabs.flex-column .nav-link:focus,.nav-tabs.flex-column .nav-link:hover{border-color:#ededed transparent #ededed #ededed}.nav-tabs.flex-column .nav-item.show .nav-link,.nav-tabs.flex-column .nav-link.active{border-color:#dae1e7 transparent #dae1e7 #dae1e7}.nav-tabs.flex-column.nav-tabs-right{border-left:1px solid #dae1e7;border-right:0}.nav-tabs.flex-column.nav-tabs-right .nav-link{border-bottom-left-radius:0;border-bottom-right-radius:.5rem;border-top-left-radius:0;border-top-right-radius:.5rem;margin-left:-1px}.nav-tabs.flex-column.nav-tabs-right .nav-link:focus,.nav-tabs.flex-column.nav-tabs-right .nav-link:hover{border-color:#ededed #ededed #ededed transparent}.nav-tabs.flex-column.nav-tabs-right .nav-item.show .nav-link,.nav-tabs.flex-column.nav-tabs-right .nav-link.active{border-color:#dae1e7 #dae1e7 #dae1e7 transparent}.navbar-no-expand{flex-direction:row}.navbar-no-expand .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-no-expand .dropdown-menu{position:absolute}.navbar-light{background-color:#f7f7f9}.navbar-dark{background-color:#22292f}.navbar-primary{background-color:#62a8ea}.navbar-secondary{background-color:#b8c2cc}.navbar-success{background-color:#21b978}.navbar-info{background-color:#4277cf}.navbar-warning{background-color:#dda451}.navbar-danger{background-color:#ea5455}.navbar-lightblue{background-color:#3c8dbc}.navbar-navy{background-color:#001f3f}.navbar-olive{background-color:#3d9970}.navbar-lime{background-color:#01ff70}.navbar-fuchsia{background-color:#f012be}.navbar-maroon{background-color:#d81b60}.navbar-blue{background-color:#3085d6}.navbar-indigo{background-color:#5c6bc6}.navbar-purple{background-color:#6f42c1}.navbar-pink{background-color:#ff8acc}.navbar-red{background-color:#ea5455}.navbar-orange{background-color:#dda451}.navbar-yellow{background-color:#edc30e}.navbar-green{background-color:#21b978}.navbar-teal{background-color:#20c997}.navbar-cyan{background-color:#7367f0}.navbar-white{background-color:#fff}.navbar-gray{background-color:#b8c2cc}.navbar-gray-dark{background-color:#1e1e1e}.form-group.has-icon{position:relative}.form-group.has-icon .form-control{padding-right:35px}.form-group.has-icon .form-icon{background-color:transparent;border:0;cursor:pointer;font-size:1rem;padding:.75rem 2rem;position:absolute;right:3px;top:0}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0}.form-control-feedback.fa,.form-control-feedback.fab,.form-control-feedback.far,.form-control-feedback.fas,.form-control-feedback.glyphicon,.form-control-feedback.ion{line-height:34px}.form-group-lg .form-control+.form-control-feedback.fa,.form-group-lg .form-control+.form-control-feedback.fab,.form-group-lg .form-control+.form-control-feedback.far,.form-group-lg .form-control+.form-control-feedback.fas,.form-group-lg .form-control+.form-control-feedback.glyphicon,.form-group-lg .form-control+.form-control-feedback.ion,.input-group-lg+.form-control-feedback.fa,.input-group-lg+.form-control-feedback.fab,.input-group-lg+.form-control-feedback.far,.input-group-lg+.form-control-feedback.fas,.input-group-lg+.form-control-feedback.glyphicon,.input-group-lg+.form-control-feedback.ion,.input-lg+.form-control-feedback.fa,.input-lg+.form-control-feedback.fab,.input-lg+.form-control-feedback.far,.input-lg+.form-control-feedback.fas,.input-lg+.form-control-feedback.glyphicon,.input-lg+.form-control-feedback.ion{line-height:calc(1.25em + 2rem + 2px)}.form-group-sm .form-control+.form-control-feedback.fa,.form-group-sm .form-control+.form-control-feedback.fab,.form-group-sm .form-control+.form-control-feedback.far,.form-group-sm .form-control+.form-control-feedback.fas,.form-group-sm .form-control+.form-control-feedback.glyphicon,.form-group-sm .form-control+.form-control-feedback.ion,.input-group-sm+.form-control-feedback.fa,.input-group-sm+.form-control-feedback.fab,.input-group-sm+.form-control-feedback.far,.input-group-sm+.form-control-feedback.fas,.input-group-sm+.form-control-feedback.glyphicon,.input-group-sm+.form-control-feedback.ion,.input-sm+.form-control-feedback.fa,.input-sm+.form-control-feedback.fab,.input-sm+.form-control-feedback.far,.input-sm+.form-control-feedback.fas,.input-sm+.form-control-feedback.glyphicon,.input-sm+.form-control-feedback.ion{line-height:2rem}.warning-feedback{font-size:smaller;color:#dda451;display:none;margin-top:.25rem;width:100%}.warning-tooltip{border-radius:.5rem;font-size:1rem;background-color:rgba(221,164,81,.9);color:#2a2e30;display:none;line-height:1.45;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.form-control.is-warning{border-color:#dda451}.form-control.is-warning:focus{border-color:#dda451;box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.form-control.is-warning~.warning-feedback,.form-control.is-warning~.warning-tooltip{display:block}textarea.form-control.is-warning{padding-right:calc(1.25em + 1.4rem);background-position:top calc(.3125em + .35rem) right calc(.3125em + .35rem)}.custom-select.is-warning{border-color:#dda451}.custom-select.is-warning:focus{border-color:#dda451;box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.custom-select.is-warning~.warning-feedback,.custom-select.is-warning~.warning-tooltip,.form-control-file.is-warning~.warning-feedback,.form-control-file.is-warning~.warning-tooltip{display:block}.form-check-input.is-warning~.form-check-label{color:#dda451}.form-check-input.is-warning~.warning-feedback,.form-check-input.is-warning~.warning-tooltip{display:block}.custom-control-input.is-warning~.custom-control-label{color:#dda451}.custom-control-input.is-warning~.custom-control-label:before{border-color:#dda451}.custom-control-input.is-warning~.warning-feedback,.custom-control-input.is-warning~.warning-tooltip{display:block}.custom-control-input.is-warning:checked~.custom-control-label:before{background-color:#e5ba7c;border-color:#e5ba7c}.custom-control-input.is-warning:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.custom-control-input.is-warning:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-warning~.custom-file-label{border-color:#dda451}.custom-file-input.is-warning~.warning-feedback,.custom-file-input.is-warning~.warning-tooltip{display:block}.custom-file-input.is-warning:focus~.custom-file-label{border-color:#dda451;box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.custom-switch.custom-switch-off-primary .custom-control-input~.custom-control-label:before{background:#62a8ea;border-color:#1b76cb}.custom-switch.custom-switch-off-primary .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(98,168,234,.25)}.custom-switch.custom-switch-off-primary .custom-control-input~.custom-control-label:after{background:#1869b4}.custom-switch.custom-switch-on-primary .custom-control-input:checked~.custom-control-label:before{background:#62a8ea;border-color:#1b76cb}.custom-switch.custom-switch-on-primary .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(98,168,234,.25)}.custom-switch.custom-switch-on-primary .custom-control-input:checked~.custom-control-label:after{background:#e9f3fc}.custom-switch.custom-switch-off-secondary .custom-control-input~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-off-secondary .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-off-secondary .custom-control-input~.custom-control-label:after{background:#6e8297}.custom-switch.custom-switch-on-secondary .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-on-secondary .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-on-secondary .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-success .custom-control-input~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-off-success .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-off-success .custom-control-input~.custom-control-label:after{background:#0e4d32}.custom-switch.custom-switch-on-success .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-on-success .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-on-success .custom-control-input:checked~.custom-control-label:after{background:#89eac1}.custom-switch.custom-switch-off-info .custom-control-input~.custom-control-label:before{background:#4277cf;border-color:#234988}.custom-switch.custom-switch-off-info .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-switch.custom-switch-off-info .custom-control-input~.custom-control-label:after{background:#1d3e74}.custom-switch.custom-switch-on-info .custom-control-input:checked~.custom-control-label:before{background:#4277cf;border-color:#234988}.custom-switch.custom-switch-on-info .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-switch.custom-switch-on-info .custom-control-input:checked~.custom-control-label:after{background:#bccfee}.custom-switch.custom-switch-off-warning .custom-control-input~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-off-warning .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-off-warning .custom-control-input~.custom-control-label:after{background:#92621d}.custom-switch.custom-switch-on-warning .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-on-warning .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-on-warning .custom-control-input:checked~.custom-control-label:after{background:#f6e7d1}.custom-switch.custom-switch-off-danger .custom-control-input~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-off-danger .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-off-danger .custom-control-input~.custom-control-label:after{background:#aa1516}.custom-switch.custom-switch-on-danger .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-on-danger .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-on-danger .custom-control-input:checked~.custom-control-label:after{background:#fbdcdc}.custom-switch.custom-switch-off-light .custom-control-input~.custom-control-label:before{background:#f7f7f9;border-color:#bdbdcd}.custom-switch.custom-switch-off-light .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-switch.custom-switch-off-light .custom-control-input~.custom-control-label:after{background:#aeaec2}.custom-switch.custom-switch-on-light .custom-control-input:checked~.custom-control-label:before{background:#f7f7f9;border-color:#bdbdcd}.custom-switch.custom-switch-on-light .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-switch.custom-switch-on-light .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-dark .custom-control-input~.custom-control-label:before{background:#22292f;border-color:#000}.custom-switch.custom-switch-off-dark .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-switch.custom-switch-off-dark .custom-control-input~.custom-control-label:after{background:#000}.custom-switch.custom-switch-on-dark .custom-control-input:checked~.custom-control-label:before{background:#22292f;border-color:#000}.custom-switch.custom-switch-on-dark .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-switch.custom-switch-on-dark .custom-control-input:checked~.custom-control-label:after{background:#627688}.custom-switch.custom-switch-off-lightblue .custom-control-input~.custom-control-label:before{background:#3c8dbc;border-color:#23536f}.custom-switch.custom-switch-off-lightblue .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-switch.custom-switch-off-lightblue .custom-control-input~.custom-control-label:after{background:#1d455b}.custom-switch.custom-switch-on-lightblue .custom-control-input:checked~.custom-control-label:before{background:#3c8dbc;border-color:#23536f}.custom-switch.custom-switch-on-lightblue .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-switch.custom-switch-on-lightblue .custom-control-input:checked~.custom-control-label:after{background:#acd0e5}.custom-switch.custom-switch-off-navy .custom-control-input~.custom-control-label:before{background:#001f3f;border-color:#000}.custom-switch.custom-switch-off-navy .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-switch.custom-switch-off-navy .custom-control-input~.custom-control-label:after{background:#000}.custom-switch.custom-switch-on-navy .custom-control-input:checked~.custom-control-label:before{background:#001f3f;border-color:#000}.custom-switch.custom-switch-on-navy .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-switch.custom-switch-on-navy .custom-control-input:checked~.custom-control-label:after{background:#006ad8}.custom-switch.custom-switch-off-olive .custom-control-input~.custom-control-label:before{background:#3d9970;border-color:#20503b}.custom-switch.custom-switch-off-olive .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-switch.custom-switch-off-olive .custom-control-input~.custom-control-label:after{background:#193e2d}.custom-switch.custom-switch-on-olive .custom-control-input:checked~.custom-control-label:before{background:#3d9970;border-color:#20503b}.custom-switch.custom-switch-on-olive .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-switch.custom-switch-on-olive .custom-control-input:checked~.custom-control-label:after{background:#99d6bb}.custom-switch.custom-switch-off-lime .custom-control-input~.custom-control-label:before{background:#01ff70;border-color:#009a43}.custom-switch.custom-switch-off-lime .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-switch.custom-switch-off-lime .custom-control-input~.custom-control-label:after{background:#008138}.custom-switch.custom-switch-on-lime .custom-control-input:checked~.custom-control-label:before{background:#01ff70;border-color:#009a43}.custom-switch.custom-switch-on-lime .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-switch.custom-switch-on-lime .custom-control-input:checked~.custom-control-label:after{background:#9affc6}.custom-switch.custom-switch-off-fuchsia .custom-control-input~.custom-control-label:before{background:#f012be;border-color:#930974}.custom-switch.custom-switch-off-fuchsia .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-switch.custom-switch-off-fuchsia .custom-control-input~.custom-control-label:after{background:#7b0861}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked~.custom-control-label:before{background:#f012be;border-color:#930974}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked~.custom-control-label:after{background:#f9a2e5}.custom-switch.custom-switch-off-maroon .custom-control-input~.custom-control-label:before{background:#d81b60;border-color:#7d1038}.custom-switch.custom-switch-off-maroon .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-switch.custom-switch-off-maroon .custom-control-input~.custom-control-label:after{background:#670d2e}.custom-switch.custom-switch-on-maroon .custom-control-input:checked~.custom-control-label:before{background:#d81b60;border-color:#7d1038}.custom-switch.custom-switch-on-maroon .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-switch.custom-switch-on-maroon .custom-control-input:checked~.custom-control-label:after{background:#f29aba}.custom-switch.custom-switch-off-blue .custom-control-input~.custom-control-label:before{background:#3085d6;border-color:#1a5186}.custom-switch.custom-switch-off-blue .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-switch.custom-switch-off-blue .custom-control-input~.custom-control-label:after{background:#164470}.custom-switch.custom-switch-on-blue .custom-control-input:checked~.custom-control-label:before{background:#3085d6;border-color:#1a5186}.custom-switch.custom-switch-on-blue .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-switch.custom-switch-on-blue .custom-control-input:checked~.custom-control-label:after{background:#b0d0ef}.custom-switch.custom-switch-off-indigo .custom-control-input~.custom-control-label:before{background:#5c6bc6;border-color:#313e8b}.custom-switch.custom-switch-off-indigo .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-switch.custom-switch-off-indigo .custom-control-input~.custom-control-label:after{background:#2a3578}.custom-switch.custom-switch-on-indigo .custom-control-input:checked~.custom-control-label:before{background:#5c6bc6;border-color:#313e8b}.custom-switch.custom-switch-on-indigo .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-switch.custom-switch-on-indigo .custom-control-input:checked~.custom-control-label:after{background:#cdd2ee}.custom-switch.custom-switch-off-purple .custom-control-input~.custom-control-label:before{background:#6f42c1;border-color:#432776}.custom-switch.custom-switch-off-purple .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-switch.custom-switch-off-purple .custom-control-input~.custom-control-label:after{background:#382063}.custom-switch.custom-switch-on-purple .custom-control-input:checked~.custom-control-label:before{background:#6f42c1;border-color:#432776}.custom-switch.custom-switch-on-purple .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-switch.custom-switch-on-purple .custom-control-input:checked~.custom-control-label:after{background:#c7b5e7}.custom-switch.custom-switch-off-pink .custom-control-input~.custom-control-label:before{background:#ff8acc;border-color:#ff24a0}.custom-switch.custom-switch-off-pink .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-switch.custom-switch-off-pink .custom-control-input~.custom-control-label:after{background:#ff0b94}.custom-switch.custom-switch-on-pink .custom-control-input:checked~.custom-control-label:before{background:#ff8acc;border-color:#ff24a0}.custom-switch.custom-switch-on-pink .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-switch.custom-switch-on-pink .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-red .custom-control-input~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-off-red .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-off-red .custom-control-input~.custom-control-label:after{background:#aa1516}.custom-switch.custom-switch-on-red .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-on-red .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-on-red .custom-control-input:checked~.custom-control-label:after{background:#fbdcdc}.custom-switch.custom-switch-off-orange .custom-control-input~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-off-orange .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-off-orange .custom-control-input~.custom-control-label:after{background:#92621d}.custom-switch.custom-switch-on-orange .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-on-orange .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-on-orange .custom-control-input:checked~.custom-control-label:after{background:#f6e7d1}.custom-switch.custom-switch-off-yellow .custom-control-input~.custom-control-label:before{background:#edc30e;border-color:#8d7408}.custom-switch.custom-switch-off-yellow .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-switch.custom-switch-off-yellow .custom-control-input~.custom-control-label:after{background:#756007}.custom-switch.custom-switch-on-yellow .custom-control-input:checked~.custom-control-label:before{background:#edc30e;border-color:#8d7408}.custom-switch.custom-switch-on-yellow .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-switch.custom-switch-on-yellow .custom-control-input:checked~.custom-control-label:after{background:#f9e79b}.custom-switch.custom-switch-off-green .custom-control-input~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-off-green .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-off-green .custom-control-input~.custom-control-label:after{background:#0e4d32}.custom-switch.custom-switch-on-green .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-on-green .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-on-green .custom-control-input:checked~.custom-control-label:after{background:#89eac1}.custom-switch.custom-switch-off-teal .custom-control-input~.custom-control-label:before{background:#20c997;border-color:#127155}.custom-switch.custom-switch-off-teal .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-switch.custom-switch-off-teal .custom-control-input~.custom-control-label:after{background:#0e5b44}.custom-switch.custom-switch-on-teal .custom-control-input:checked~.custom-control-label:before{background:#20c997;border-color:#127155}.custom-switch.custom-switch-on-teal .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-switch.custom-switch-on-teal .custom-control-input:checked~.custom-control-label:after{background:#94eed3}.custom-switch.custom-switch-off-cyan .custom-control-input~.custom-control-label:before{background:#7367f0;border-color:#2716db}.custom-switch.custom-switch-off-cyan .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-switch.custom-switch-off-cyan .custom-control-input~.custom-control-label:after{background:#2313c4}.custom-switch.custom-switch-on-cyan .custom-control-input:checked~.custom-control-label:before{background:#7367f0;border-color:#2716db}.custom-switch.custom-switch-on-cyan .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-switch.custom-switch-on-cyan .custom-control-input:checked~.custom-control-label:after{background:#f3f2fe}.custom-switch.custom-switch-off-white .custom-control-input~.custom-control-label:before{background:#fff;border-color:#ccc}.custom-switch.custom-switch-off-white .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-switch.custom-switch-off-white .custom-control-input~.custom-control-label:after{background:#bfbfbf}.custom-switch.custom-switch-on-white .custom-control-input:checked~.custom-control-label:before{background:#fff;border-color:#ccc}.custom-switch.custom-switch-on-white .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-switch.custom-switch-on-white .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-gray .custom-control-input~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-off-gray .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-off-gray .custom-control-input~.custom-control-label:after{background:#6e8297}.custom-switch.custom-switch-on-gray .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-on-gray .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-on-gray .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-gray-dark .custom-control-input~.custom-control-label:before{background:#1e1e1e;border-color:#000}.custom-switch.custom-switch-off-gray-dark .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-switch.custom-switch-off-gray-dark .custom-control-input~.custom-control-label:after{background:#000}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked~.custom-control-label:before{background:#1e1e1e;border-color:#000}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked~.custom-control-label:after{background:#6b6b6b}.custom-range.custom-range-primary:focus{outline:none}.custom-range.custom-range-primary:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(98,168,234,.25)}.custom-range.custom-range-primary:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(98,168,234,.25)}.custom-range.custom-range-primary:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(98,168,234,.25)}.custom-range.custom-range-primary::-webkit-slider-thumb{background-color:#62a8ea}.custom-range.custom-range-primary::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-primary::-moz-range-thumb{background-color:#62a8ea}.custom-range.custom-range-primary::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-primary::-ms-thumb{background-color:#62a8ea}.custom-range.custom-range-primary::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-secondary:focus{outline:none}.custom-range.custom-range-secondary:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-secondary:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-secondary:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-secondary::-webkit-slider-thumb{background-color:#b8c2cc}.custom-range.custom-range-secondary::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-secondary::-moz-range-thumb{background-color:#b8c2cc}.custom-range.custom-range-secondary::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-secondary::-ms-thumb{background-color:#b8c2cc}.custom-range.custom-range-secondary::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-success:focus{outline:none}.custom-range.custom-range-success:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-success:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-success:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-success::-webkit-slider-thumb{background-color:#21b978}.custom-range.custom-range-success::-webkit-slider-thumb:active{background-color:#9feecc}.custom-range.custom-range-success::-moz-range-thumb{background-color:#21b978}.custom-range.custom-range-success::-moz-range-thumb:active{background-color:#9feecc}.custom-range.custom-range-success::-ms-thumb{background-color:#21b978}.custom-range.custom-range-success::-ms-thumb:active{background-color:#9feecc}.custom-range.custom-range-info:focus{outline:none}.custom-range.custom-range-info:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-range.custom-range-info:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-range.custom-range-info:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-range.custom-range-info::-webkit-slider-thumb{background-color:#4277cf}.custom-range.custom-range-info::-webkit-slider-thumb:active{background-color:#d0ddf3}.custom-range.custom-range-info::-moz-range-thumb{background-color:#4277cf}.custom-range.custom-range-info::-moz-range-thumb:active{background-color:#d0ddf3}.custom-range.custom-range-info::-ms-thumb{background-color:#4277cf}.custom-range.custom-range-info::-ms-thumb:active{background-color:#d0ddf3}.custom-range.custom-range-warning:focus{outline:none}.custom-range.custom-range-warning:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-warning:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-warning:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-warning::-webkit-slider-thumb{background-color:#dda451}.custom-range.custom-range-warning::-webkit-slider-thumb:active{background-color:#faf2e6}.custom-range.custom-range-warning::-moz-range-thumb{background-color:#dda451}.custom-range.custom-range-warning::-moz-range-thumb:active{background-color:#faf2e6}.custom-range.custom-range-warning::-ms-thumb{background-color:#dda451}.custom-range.custom-range-warning::-ms-thumb:active{background-color:#faf2e6}.custom-range.custom-range-danger:focus{outline:none}.custom-range.custom-range-danger:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-danger:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-danger:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-danger::-webkit-slider-thumb{background-color:#ea5455}.custom-range.custom-range-danger::-webkit-slider-thumb:active{background-color:#fef3f3}.custom-range.custom-range-danger::-moz-range-thumb{background-color:#ea5455}.custom-range.custom-range-danger::-moz-range-thumb:active{background-color:#fef3f3}.custom-range.custom-range-danger::-ms-thumb{background-color:#ea5455}.custom-range.custom-range-danger::-ms-thumb:active{background-color:#fef3f3}.custom-range.custom-range-light:focus{outline:none}.custom-range.custom-range-light:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-range.custom-range-light:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-range.custom-range-light:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-range.custom-range-light::-webkit-slider-thumb{background-color:#f7f7f9}.custom-range.custom-range-light::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-light::-moz-range-thumb{background-color:#f7f7f9}.custom-range.custom-range-light::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-light::-ms-thumb{background-color:#f7f7f9}.custom-range.custom-range-light::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-dark:focus{outline:none}.custom-range.custom-range-dark:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-range.custom-range-dark:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-range.custom-range-dark:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-range.custom-range-dark::-webkit-slider-thumb{background-color:#22292f}.custom-range.custom-range-dark::-webkit-slider-thumb:active{background-color:#6e8396}.custom-range.custom-range-dark::-moz-range-thumb{background-color:#22292f}.custom-range.custom-range-dark::-moz-range-thumb:active{background-color:#6e8396}.custom-range.custom-range-dark::-ms-thumb{background-color:#22292f}.custom-range.custom-range-dark::-ms-thumb:active{background-color:#6e8396}.custom-range.custom-range-lightblue:focus{outline:none}.custom-range.custom-range-lightblue:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-range.custom-range-lightblue:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-range.custom-range-lightblue:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-range.custom-range-lightblue::-webkit-slider-thumb{background-color:#3c8dbc}.custom-range.custom-range-lightblue::-webkit-slider-thumb:active{background-color:#c0dbeb}.custom-range.custom-range-lightblue::-moz-range-thumb{background-color:#3c8dbc}.custom-range.custom-range-lightblue::-moz-range-thumb:active{background-color:#c0dbeb}.custom-range.custom-range-lightblue::-ms-thumb{background-color:#3c8dbc}.custom-range.custom-range-lightblue::-ms-thumb:active{background-color:#c0dbeb}.custom-range.custom-range-navy:focus{outline:none}.custom-range.custom-range-navy:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy::-webkit-slider-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-webkit-slider-thumb:active{background-color:#0077f2}.custom-range.custom-range-navy::-moz-range-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-moz-range-thumb:active{background-color:#0077f2}.custom-range.custom-range-navy::-ms-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-ms-thumb:active{background-color:#0077f2}.custom-range.custom-range-olive:focus{outline:none}.custom-range.custom-range-olive:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive::-webkit-slider-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-webkit-slider-thumb:active{background-color:#abdec7}.custom-range.custom-range-olive::-moz-range-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-moz-range-thumb:active{background-color:#abdec7}.custom-range.custom-range-olive::-ms-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-ms-thumb:active{background-color:#abdec7}.custom-range.custom-range-lime:focus{outline:none}.custom-range.custom-range-lime:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime::-webkit-slider-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-webkit-slider-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-lime::-moz-range-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-moz-range-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-lime::-ms-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-ms-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-fuchsia:focus{outline:none}.custom-range.custom-range-fuchsia:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia::-webkit-slider-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-webkit-slider-thumb:active{background-color:#fbbaec}.custom-range.custom-range-fuchsia::-moz-range-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-moz-range-thumb:active{background-color:#fbbaec}.custom-range.custom-range-fuchsia::-ms-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-ms-thumb:active{background-color:#fbbaec}.custom-range.custom-range-maroon:focus{outline:none}.custom-range.custom-range-maroon:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon::-webkit-slider-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-webkit-slider-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-maroon::-moz-range-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-moz-range-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-maroon::-ms-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-ms-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-blue:focus{outline:none}.custom-range.custom-range-blue:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-range.custom-range-blue:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-range.custom-range-blue:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-range.custom-range-blue::-webkit-slider-thumb{background-color:#3085d6}.custom-range.custom-range-blue::-webkit-slider-thumb:active{background-color:#c5ddf4}.custom-range.custom-range-blue::-moz-range-thumb{background-color:#3085d6}.custom-range.custom-range-blue::-moz-range-thumb:active{background-color:#c5ddf4}.custom-range.custom-range-blue::-ms-thumb{background-color:#3085d6}.custom-range.custom-range-blue::-ms-thumb:active{background-color:#c5ddf4}.custom-range.custom-range-indigo:focus{outline:none}.custom-range.custom-range-indigo:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-range.custom-range-indigo:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-range.custom-range-indigo:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-range.custom-range-indigo::-webkit-slider-thumb{background-color:#5c6bc6}.custom-range.custom-range-indigo::-webkit-slider-thumb:active{background-color:#e0e3f4}.custom-range.custom-range-indigo::-moz-range-thumb{background-color:#5c6bc6}.custom-range.custom-range-indigo::-moz-range-thumb:active{background-color:#e0e3f4}.custom-range.custom-range-indigo::-ms-thumb{background-color:#5c6bc6}.custom-range.custom-range-indigo::-ms-thumb:active{background-color:#e0e3f4}.custom-range.custom-range-purple:focus{outline:none}.custom-range.custom-range-purple:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple::-webkit-slider-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-webkit-slider-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-purple::-moz-range-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-moz-range-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-purple::-ms-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-ms-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-pink:focus{outline:none}.custom-range.custom-range-pink:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-range.custom-range-pink:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-range.custom-range-pink:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-range.custom-range-pink::-webkit-slider-thumb{background-color:#ff8acc}.custom-range.custom-range-pink::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-pink::-moz-range-thumb{background-color:#ff8acc}.custom-range.custom-range-pink::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-pink::-ms-thumb{background-color:#ff8acc}.custom-range.custom-range-pink::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-red:focus{outline:none}.custom-range.custom-range-red:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-red:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-red:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-red::-webkit-slider-thumb{background-color:#ea5455}.custom-range.custom-range-red::-webkit-slider-thumb:active{background-color:#fef3f3}.custom-range.custom-range-red::-moz-range-thumb{background-color:#ea5455}.custom-range.custom-range-red::-moz-range-thumb:active{background-color:#fef3f3}.custom-range.custom-range-red::-ms-thumb{background-color:#ea5455}.custom-range.custom-range-red::-ms-thumb:active{background-color:#fef3f3}.custom-range.custom-range-orange:focus{outline:none}.custom-range.custom-range-orange:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-orange:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-orange:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-orange::-webkit-slider-thumb{background-color:#dda451}.custom-range.custom-range-orange::-webkit-slider-thumb:active{background-color:#faf2e6}.custom-range.custom-range-orange::-moz-range-thumb{background-color:#dda451}.custom-range.custom-range-orange::-moz-range-thumb:active{background-color:#faf2e6}.custom-range.custom-range-orange::-ms-thumb{background-color:#dda451}.custom-range.custom-range-orange::-ms-thumb:active{background-color:#faf2e6}.custom-range.custom-range-yellow:focus{outline:none}.custom-range.custom-range-yellow:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-range.custom-range-yellow:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-range.custom-range-yellow:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-range.custom-range-yellow::-webkit-slider-thumb{background-color:#edc30e}.custom-range.custom-range-yellow::-webkit-slider-thumb:active{background-color:#fbedb3}.custom-range.custom-range-yellow::-moz-range-thumb{background-color:#edc30e}.custom-range.custom-range-yellow::-moz-range-thumb:active{background-color:#fbedb3}.custom-range.custom-range-yellow::-ms-thumb{background-color:#edc30e}.custom-range.custom-range-yellow::-ms-thumb:active{background-color:#fbedb3}.custom-range.custom-range-green:focus{outline:none}.custom-range.custom-range-green:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-green:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-green:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-green::-webkit-slider-thumb{background-color:#21b978}.custom-range.custom-range-green::-webkit-slider-thumb:active{background-color:#9feecc}.custom-range.custom-range-green::-moz-range-thumb{background-color:#21b978}.custom-range.custom-range-green::-moz-range-thumb:active{background-color:#9feecc}.custom-range.custom-range-green::-ms-thumb{background-color:#21b978}.custom-range.custom-range-green::-ms-thumb:active{background-color:#9feecc}.custom-range.custom-range-teal:focus{outline:none}.custom-range.custom-range-teal:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal::-webkit-slider-thumb{background-color:#20c997}.custom-range.custom-range-teal::-webkit-slider-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-teal::-moz-range-thumb{background-color:#20c997}.custom-range.custom-range-teal::-moz-range-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-teal::-ms-thumb{background-color:#20c997}.custom-range.custom-range-teal::-ms-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-cyan:focus{outline:none}.custom-range.custom-range-cyan:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-range.custom-range-cyan:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-range.custom-range-cyan:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-range.custom-range-cyan::-webkit-slider-thumb{background-color:#7367f0}.custom-range.custom-range-cyan::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-cyan::-moz-range-thumb{background-color:#7367f0}.custom-range.custom-range-cyan::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-cyan::-ms-thumb{background-color:#7367f0}.custom-range.custom-range-cyan::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-white:focus{outline:none}.custom-range.custom-range-white:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-range.custom-range-white:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-range.custom-range-white:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-range.custom-range-white::-webkit-slider-thumb,.custom-range.custom-range-white::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-white::-moz-range-thumb,.custom-range.custom-range-white::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-white::-ms-thumb,.custom-range.custom-range-white::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-gray:focus{outline:none}.custom-range.custom-range-gray:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-gray:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-gray:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-gray::-webkit-slider-thumb{background-color:#b8c2cc}.custom-range.custom-range-gray::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-gray::-moz-range-thumb{background-color:#b8c2cc}.custom-range.custom-range-gray::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-gray::-ms-thumb{background-color:#b8c2cc}.custom-range.custom-range-gray::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-gray-dark:focus{outline:none}.custom-range.custom-range-gray-dark:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-range.custom-range-gray-dark:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-range.custom-range-gray-dark:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-range.custom-range-gray-dark::-webkit-slider-thumb{background-color:#1e1e1e}.custom-range.custom-range-gray-dark::-webkit-slider-thumb:active{background-color:#777}.custom-range.custom-range-gray-dark::-moz-range-thumb{background-color:#1e1e1e}.custom-range.custom-range-gray-dark::-moz-range-thumb:active{background-color:#777}.custom-range.custom-range-gray-dark::-ms-thumb{background-color:#1e1e1e}.custom-range.custom-range-gray-dark::-ms-thumb:active{background-color:#777}.progress{border-radius:1px}.progress.vertical{display:inline-block;height:200px;margin-right:10px;position:relative;width:30px}.progress.vertical>.progress-bar{bottom:0;position:absolute;width:100%}.progress.vertical.progress-sm,.progress.vertical.sm{width:20px}.progress.vertical.progress-xs,.progress.vertical.xs{width:10px}.progress.vertical.progress-xxs,.progress.vertical.xxs{width:3px}.progress-group{margin-bottom:1.5rem}.progress-sm{height:10px}.progress-xs{height:7px}.progress-xxs{height:3px}.table tr>td .progress{margin:0}.card-primary:not(.card-outline)>.card-header{background-color:#62a8ea}.card-primary:not(.card-outline)>.card-header,.card-primary:not(.card-outline)>.card-header a,.card-primary:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-primary.card-outline{border-top:3px solid #62a8ea}.card-primary.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-primary.card-outline-tabs>.card-header a.active{border-top:3px solid #62a8ea}.bg-gradient-primary .btn-tool,.bg-primary .btn-tool,.card-primary:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-primary .btn-tool:hover,.bg-primary .btn-tool:hover,.card-primary:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table th,.card.bg-primary .bootstrap-datetimepicker-widget .table td,.card.bg-primary .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#3e94e5;color:#2a2e30}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.today:before,.card.bg-primary .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.active,.card.bg-primary .bootstrap-datetimepicker-widget table td.active:hover{background:#8fc1f0;color:#2a2e30}.card-secondary:not(.card-outline)>.card-header{background-color:#b8c2cc}.card-secondary:not(.card-outline)>.card-header,.card-secondary:not(.card-outline)>.card-header a,.card-secondary:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-secondary.card-outline{border-top:3px solid #b8c2cc}.card-secondary.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-secondary.card-outline-tabs>.card-header a.active{border-top:3px solid #b8c2cc}.bg-gradient-secondary .btn-tool,.bg-secondary .btn-tool,.card-secondary:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-secondary .btn-tool:hover,.bg-secondary .btn-tool:hover,.card-secondary:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table th,.card.bg-secondary .bootstrap-datetimepicker-widget .table td,.card.bg-secondary .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#a0aebb;color:#2a2e30}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.today:before,.card.bg-secondary .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.active,.card.bg-secondary .bootstrap-datetimepicker-widget table td.active:hover{background:#d6dce1;color:#2a2e30}.card-success:not(.card-outline)>.card-header{background-color:#21b978}.card-success:not(.card-outline)>.card-header,.card-success:not(.card-outline)>.card-header a{color:#fff}.card-success:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-success.card-outline{border-top:3px solid #21b978}.card-success.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-success.card-outline-tabs>.card-header a.active{border-top:3px solid #21b978}.bg-gradient-success .btn-tool,.bg-success .btn-tool,.card-success:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-success .btn-tool:hover,.bg-success .btn-tool:hover,.card-success:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-success .bootstrap-datetimepicker-widget .table th,.card.bg-success .bootstrap-datetimepicker-widget .table td,.card.bg-success .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#1b9662;color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.today:before,.card.bg-success .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.active,.card.bg-success .bootstrap-datetimepicker-widget table td.active:hover{background:#32db93;color:#fff}.card-info:not(.card-outline)>.card-header{background-color:#4277cf}.card-info:not(.card-outline)>.card-header,.card-info:not(.card-outline)>.card-header a{color:#fff}.card-info:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-info.card-outline{border-top:3px solid #4277cf}.card-info.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-info.card-outline-tabs>.card-header a.active{border-top:3px solid #4277cf}.bg-gradient-info .btn-tool,.bg-info .btn-tool,.card-info:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-info .btn-tool:hover,.bg-info .btn-tool:hover,.card-info:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-info .bootstrap-datetimepicker-widget .table th,.card.bg-info .bootstrap-datetimepicker-widget .table td,.card.bg-info .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#2f63b9;color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.today:before,.card.bg-info .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.active,.card.bg-info .bootstrap-datetimepicker-widget table td.active:hover{background:#6b94d9;color:#fff}.card-warning:not(.card-outline)>.card-header{background-color:#dda451}.card-warning:not(.card-outline)>.card-header,.card-warning:not(.card-outline)>.card-header a,.card-warning:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-warning.card-outline{border-top:3px solid #dda451}.card-warning.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-warning.card-outline-tabs>.card-header a.active{border-top:3px solid #dda451}.bg-gradient-warning .btn-tool,.bg-warning .btn-tool,.card-warning:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-warning .btn-tool:hover,.bg-warning .btn-tool:hover,.card-warning:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table th,.card.bg-warning .bootstrap-datetimepicker-widget .table td,.card.bg-warning .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#d6922f;color:#2a2e30}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.today:before,.card.bg-warning .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.active,.card.bg-warning .bootstrap-datetimepicker-widget table td.active:hover{background:#e5ba7c;color:#2a2e30}.card-danger:not(.card-outline)>.card-header{background-color:#ea5455}.card-danger:not(.card-outline)>.card-header,.card-danger:not(.card-outline)>.card-header a{color:#fff}.card-danger:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-danger.card-outline{border-top:3px solid #ea5455}.card-danger.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-danger.card-outline-tabs>.card-header a.active{border-top:3px solid #ea5455}.bg-danger .btn-tool,.bg-gradient-danger .btn-tool,.card-danger:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-danger .btn-tool:hover,.bg-gradient-danger .btn-tool:hover,.card-danger:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget .table td,.card.bg-danger .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-danger .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e63031;color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget table td.active,.card.bg-danger .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active:hover{background:#f08182;color:#fff}.card-light:not(.card-outline)>.card-header{background-color:#f7f7f9}.card-light:not(.card-outline)>.card-header,.card-light:not(.card-outline)>.card-header a,.card-light:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-light.card-outline{border-top:3px solid #f7f7f9}.card-light.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-light.card-outline-tabs>.card-header a.active{border-top:3px solid #f7f7f9}.bg-gradient-light .btn-tool,.bg-light .btn-tool,.card-light:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-light .btn-tool:hover,.bg-light .btn-tool:hover,.card-light:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-light .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-light .bootstrap-datetimepicker-widget .table th,.card.bg-light .bootstrap-datetimepicker-widget .table td,.card.bg-light .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e0e0e8;color:#2a2e30}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.today:before,.card.bg-light .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.active,.card.bg-light .bootstrap-datetimepicker-widget table td.active:hover{background:#fff;color:#2a2e30}.card-dark:not(.card-outline)>.card-header{background-color:#22292f}.card-dark:not(.card-outline)>.card-header,.card-dark:not(.card-outline)>.card-header a{color:#fff}.card-dark:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-dark.card-outline{border-top:3px solid #22292f}.card-dark.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-dark.card-outline-tabs>.card-header a.active{border-top:3px solid #22292f}.bg-dark .btn-tool,.bg-gradient-dark .btn-tool,.card-dark:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-dark .btn-tool:hover,.bg-gradient-dark .btn-tool:hover,.card-dark:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget .table td,.card.bg-dark .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#111417;color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-dark .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active:hover{background:#37434d;color:#fff}.card-lightblue:not(.card-outline)>.card-header{background-color:#3c8dbc}.card-lightblue:not(.card-outline)>.card-header,.card-lightblue:not(.card-outline)>.card-header a{color:#fff}.card-lightblue:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-lightblue.card-outline{border-top:3px solid #3c8dbc}.card-lightblue.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-lightblue.card-outline-tabs>.card-header a.active{border-top:3px solid #3c8dbc}.bg-gradient-lightblue .btn-tool,.bg-lightblue .btn-tool,.card-lightblue:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-lightblue .btn-tool:hover,.bg-lightblue .btn-tool:hover,.card-lightblue:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget .table th,.card.bg-lightblue .bootstrap-datetimepicker-widget .table td,.card.bg-lightblue .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#32769d;color:#fff}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.today:before,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.active,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.active:hover{background:#5fa4cc;color:#fff}.card-navy:not(.card-outline)>.card-header{background-color:#001f3f}.card-navy:not(.card-outline)>.card-header,.card-navy:not(.card-outline)>.card-header a{color:#fff}.card-navy:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-navy.card-outline{border-top:3px solid #001f3f}.card-navy.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-navy.card-outline-tabs>.card-header a.active{border-top:3px solid #001f3f}.bg-gradient-navy .btn-tool,.bg-navy .btn-tool,.card-navy:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-navy .btn-tool:hover,.bg-navy .btn-tool:hover,.card-navy:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table th,.card.bg-navy .bootstrap-datetimepicker-widget .table td,.card.bg-navy .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#000b16;color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.today:before,.card.bg-navy .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.active,.card.bg-navy .bootstrap-datetimepicker-widget table td.active:hover{background:#003872;color:#fff}.card-olive:not(.card-outline)>.card-header{background-color:#3d9970}.card-olive:not(.card-outline)>.card-header,.card-olive:not(.card-outline)>.card-header a{color:#fff}.card-olive:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-olive.card-outline{border-top:3px solid #3d9970}.card-olive.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-olive.card-outline-tabs>.card-header a.active{border-top:3px solid #3d9970}.bg-gradient-olive .btn-tool,.bg-olive .btn-tool,.card-olive:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-olive .btn-tool:hover,.bg-olive .btn-tool:hover,.card-olive:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table th,.card.bg-olive .bootstrap-datetimepicker-widget .table td,.card.bg-olive .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#317c5b;color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.today:before,.card.bg-olive .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.active,.card.bg-olive .bootstrap-datetimepicker-widget table td.active:hover{background:#50b98a;color:#fff}.card-lime:not(.card-outline)>.card-header{background-color:#01ff70}.card-lime:not(.card-outline)>.card-header,.card-lime:not(.card-outline)>.card-header a,.card-lime:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-lime.card-outline{border-top:3px solid #01ff70}.card-lime.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-lime.card-outline-tabs>.card-header a.active{border-top:3px solid #01ff70}.bg-gradient-lime .btn-tool,.bg-lime .btn-tool,.card-lime:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-lime .btn-tool:hover,.bg-lime .btn-tool:hover,.card-lime:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table th,.card.bg-lime .bootstrap-datetimepicker-widget .table td,.card.bg-lime .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#00d75e;color:#2a2e30}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.today:before,.card.bg-lime .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.active,.card.bg-lime .bootstrap-datetimepicker-widget table td.active:hover{background:#34ff8d;color:#2a2e30}.card-fuchsia:not(.card-outline)>.card-header{background-color:#f012be}.card-fuchsia:not(.card-outline)>.card-header,.card-fuchsia:not(.card-outline)>.card-header a{color:#fff}.card-fuchsia:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-fuchsia.card-outline{border-top:3px solid #f012be}.card-fuchsia.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-fuchsia.card-outline-tabs>.card-header a.active{border-top:3px solid #f012be}.bg-fuchsia .btn-tool,.bg-gradient-fuchsia .btn-tool,.card-fuchsia:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-fuchsia .btn-tool:hover,.bg-gradient-fuchsia .btn-tool:hover,.card-fuchsia:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget .table td,.card.bg-fuchsia .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#cc0da1;color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active:hover{background:#f342cb;color:#fff}.card-maroon:not(.card-outline)>.card-header{background-color:#d81b60}.card-maroon:not(.card-outline)>.card-header,.card-maroon:not(.card-outline)>.card-header a{color:#fff}.card-maroon:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-maroon.card-outline{border-top:3px solid #d81b60}.card-maroon.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-maroon.card-outline-tabs>.card-header a.active{border-top:3px solid #d81b60}.bg-gradient-maroon .btn-tool,.bg-maroon .btn-tool,.card-maroon:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-maroon .btn-tool:hover,.bg-maroon .btn-tool:hover,.card-maroon:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table th,.card.bg-maroon .bootstrap-datetimepicker-widget .table td,.card.bg-maroon .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#b41650;color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.today:before,.card.bg-maroon .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.active,.card.bg-maroon .bootstrap-datetimepicker-widget table td.active:hover{background:#e73f7c;color:#fff}.card-blue:not(.card-outline)>.card-header{background-color:#3085d6}.card-blue:not(.card-outline)>.card-header,.card-blue:not(.card-outline)>.card-header a{color:#fff}.card-blue:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-blue.card-outline{border-top:3px solid #3085d6}.card-blue.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-blue.card-outline-tabs>.card-header a.active{border-top:3px solid #3085d6}.bg-blue .btn-tool,.bg-gradient-blue .btn-tool,.card-blue:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-blue .btn-tool:hover,.bg-gradient-blue .btn-tool:hover,.card-blue:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget .table td,.card.bg-blue .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-blue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#2570b9;color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget table td.active,.card.bg-blue .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active:hover{background:#5b9ede;color:#fff}.card-indigo:not(.card-outline)>.card-header{background-color:#5c6bc6}.card-indigo:not(.card-outline)>.card-header,.card-indigo:not(.card-outline)>.card-header a{color:#fff}.card-indigo:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-indigo.card-outline{border-top:3px solid #5c6bc6}.card-indigo.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-indigo.card-outline-tabs>.card-header a.active{border-top:3px solid #5c6bc6}.bg-gradient-indigo .btn-tool,.bg-indigo .btn-tool,.card-indigo:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-indigo .btn-tool:hover,.bg-indigo .btn-tool:hover,.card-indigo:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table th,.card.bg-indigo .bootstrap-datetimepicker-widget .table td,.card.bg-indigo .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#4152b9;color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.today:before,.card.bg-indigo .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.active,.card.bg-indigo .bootstrap-datetimepicker-widget table td.active:hover{background:#828dd3;color:#fff}.card-purple:not(.card-outline)>.card-header{background-color:#6f42c1}.card-purple:not(.card-outline)>.card-header,.card-purple:not(.card-outline)>.card-header a{color:#fff}.card-purple:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-purple.card-outline{border-top:3px solid #6f42c1}.card-purple.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-purple.card-outline-tabs>.card-header a.active{border-top:3px solid #6f42c1}.bg-gradient-purple .btn-tool,.bg-purple .btn-tool,.card-purple:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-purple .btn-tool:hover,.bg-purple .btn-tool:hover,.card-purple:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table th,.card.bg-purple .bootstrap-datetimepicker-widget .table td,.card.bg-purple .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#5d36a4;color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.today:before,.card.bg-purple .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.active,.card.bg-purple .bootstrap-datetimepicker-widget table td.active:hover{background:#8c68ce;color:#fff}.card-pink:not(.card-outline)>.card-header{background-color:#ff8acc}.card-pink:not(.card-outline)>.card-header,.card-pink:not(.card-outline)>.card-header a,.card-pink:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-pink.card-outline{border-top:3px solid #ff8acc}.card-pink.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-pink.card-outline-tabs>.card-header a.active{border-top:3px solid #ff8acc}.bg-gradient-pink .btn-tool,.bg-pink .btn-tool,.card-pink:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-pink .btn-tool:hover,.bg-pink .btn-tool:hover,.card-pink:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table th,.card.bg-pink .bootstrap-datetimepicker-widget .table td,.card.bg-pink .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#ff61ba;color:#2a2e30}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.today:before,.card.bg-pink .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.active,.card.bg-pink .bootstrap-datetimepicker-widget table td.active:hover{background:#ffbde2;color:#2a2e30}.card-red:not(.card-outline)>.card-header{background-color:#ea5455}.card-red:not(.card-outline)>.card-header,.card-red:not(.card-outline)>.card-header a{color:#fff}.card-red:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-red.card-outline{border-top:3px solid #ea5455}.card-red.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-red.card-outline-tabs>.card-header a.active{border-top:3px solid #ea5455}.bg-gradient-red .btn-tool,.bg-red .btn-tool,.card-red:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-red .btn-tool:hover,.bg-red .btn-tool:hover,.card-red:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-red .bootstrap-datetimepicker-widget .table th,.card.bg-red .bootstrap-datetimepicker-widget .table td,.card.bg-red .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e63031;color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.today:before,.card.bg-red .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.active,.card.bg-red .bootstrap-datetimepicker-widget table td.active:hover{background:#f08182;color:#fff}.card-orange:not(.card-outline)>.card-header{background-color:#dda451}.card-orange:not(.card-outline)>.card-header,.card-orange:not(.card-outline)>.card-header a,.card-orange:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-orange.card-outline{border-top:3px solid #dda451}.card-orange.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-orange.card-outline-tabs>.card-header a.active{border-top:3px solid #dda451}.bg-gradient-orange .btn-tool,.bg-orange .btn-tool,.card-orange:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-orange .btn-tool:hover,.bg-orange .btn-tool:hover,.card-orange:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table th,.card.bg-orange .bootstrap-datetimepicker-widget .table td,.card.bg-orange .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#d6922f;color:#2a2e30}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.today:before,.card.bg-orange .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.active,.card.bg-orange .bootstrap-datetimepicker-widget table td.active:hover{background:#e5ba7c;color:#2a2e30}.card-yellow:not(.card-outline)>.card-header{background-color:#edc30e}.card-yellow:not(.card-outline)>.card-header,.card-yellow:not(.card-outline)>.card-header a,.card-yellow:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-yellow.card-outline{border-top:3px solid #edc30e}.card-yellow.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-yellow.card-outline-tabs>.card-header a.active{border-top:3px solid #edc30e}.bg-gradient-yellow .btn-tool,.bg-yellow .btn-tool,.card-yellow:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-yellow .btn-tool:hover,.bg-yellow .btn-tool:hover,.card-yellow:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table th,.card.bg-yellow .bootstrap-datetimepicker-widget .table td,.card.bg-yellow .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#c6a30c;color:#2a2e30}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.today:before,.card.bg-yellow .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.active,.card.bg-yellow .bootstrap-datetimepicker-widget table td.active:hover{background:#f3d13b;color:#2a2e30}.card-green:not(.card-outline)>.card-header{background-color:#21b978}.card-green:not(.card-outline)>.card-header,.card-green:not(.card-outline)>.card-header a{color:#fff}.card-green:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-green.card-outline{border-top:3px solid #21b978}.card-green.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-green.card-outline-tabs>.card-header a.active{border-top:3px solid #21b978}.bg-gradient-green .btn-tool,.bg-green .btn-tool,.card-green:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-green .btn-tool:hover,.bg-green .btn-tool:hover,.card-green:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-green .bootstrap-datetimepicker-widget .table th,.card.bg-green .bootstrap-datetimepicker-widget .table td,.card.bg-green .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#1b9662;color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.today:before,.card.bg-green .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.active,.card.bg-green .bootstrap-datetimepicker-widget table td.active:hover{background:#32db93;color:#fff}.card-teal:not(.card-outline)>.card-header{background-color:#20c997}.card-teal:not(.card-outline)>.card-header,.card-teal:not(.card-outline)>.card-header a{color:#fff}.card-teal:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-teal.card-outline{border-top:3px solid #20c997}.card-teal.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-teal.card-outline-tabs>.card-header a.active{border-top:3px solid #20c997}.bg-gradient-teal .btn-tool,.bg-teal .btn-tool,.card-teal:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-teal .btn-tool:hover,.bg-teal .btn-tool:hover,.card-teal:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table th,.card.bg-teal .bootstrap-datetimepicker-widget .table td,.card.bg-teal .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#1aa67d;color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.today:before,.card.bg-teal .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.active,.card.bg-teal .bootstrap-datetimepicker-widget table td.active:hover{background:#3ce0af;color:#fff}.card-cyan:not(.card-outline)>.card-header{background-color:#7367f0}.card-cyan:not(.card-outline)>.card-header,.card-cyan:not(.card-outline)>.card-header a{color:#fff}.card-cyan:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-cyan.card-outline{border-top:3px solid #7367f0}.card-cyan.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-cyan.card-outline-tabs>.card-header a.active{border-top:3px solid #7367f0}.bg-cyan .btn-tool,.bg-gradient-cyan .btn-tool,.card-cyan:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-cyan .btn-tool:hover,.bg-gradient-cyan .btn-tool:hover,.card-cyan:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget .table td,.card.bg-cyan .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-cyan .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#5142ec;color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget table td.active,.card.bg-cyan .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active:hover{background:#9e95f5;color:#fff}.card-white:not(.card-outline)>.card-header{background-color:#fff}.card-white:not(.card-outline)>.card-header,.card-white:not(.card-outline)>.card-header a,.card-white:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-white.card-outline{border-top:3px solid #fff}.card-white.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-white.card-outline-tabs>.card-header a.active{border-top:3px solid #fff}.bg-gradient-white .btn-tool,.bg-white .btn-tool,.card-white:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-white .btn-tool:hover,.bg-white .btn-tool:hover,.card-white:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-white .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-white .bootstrap-datetimepicker-widget .table th,.card.bg-white .bootstrap-datetimepicker-widget .table td,.card.bg-white .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#ebebeb;color:#2a2e30}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.today:before,.card.bg-white .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.active,.card.bg-white .bootstrap-datetimepicker-widget table td.active:hover{background:#fff;color:#2a2e30}.card-gray:not(.card-outline)>.card-header{background-color:#b8c2cc}.card-gray:not(.card-outline)>.card-header,.card-gray:not(.card-outline)>.card-header a,.card-gray:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-gray.card-outline{border-top:3px solid #b8c2cc}.card-gray.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-gray.card-outline-tabs>.card-header a.active{border-top:3px solid #b8c2cc}.bg-gradient-gray .btn-tool,.bg-gray .btn-tool,.card-gray:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-gray .btn-tool:hover,.bg-gray .btn-tool:hover,.card-gray:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table th,.card.bg-gray .bootstrap-datetimepicker-widget .table td,.card.bg-gray .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#a0aebb;color:#2a2e30}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gray .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.active,.card.bg-gray .bootstrap-datetimepicker-widget table td.active:hover{background:#d6dce1;color:#2a2e30}.card-gray-dark:not(.card-outline)>.card-header{background-color:#1e1e1e}.card-gray-dark:not(.card-outline)>.card-header,.card-gray-dark:not(.card-outline)>.card-header a{color:#fff}.card-gray-dark:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-gray-dark.card-outline{border-top:3px solid #1e1e1e}.card-gray-dark.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-gray-dark.card-outline-tabs>.card-header a.active{border-top:3px solid #1e1e1e}.bg-gradient-gray-dark .btn-tool,.bg-gray-dark .btn-tool,.card-gray-dark:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-gray-dark .btn-tool:hover,.bg-gray-dark .btn-tool:hover,.card-gray-dark:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table th,.card.bg-gray-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gray-dark .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#0a0a0a;color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active:hover{background:#383838;color:#fff}.card{margin-bottom:3rem;border:0}.card.bg-dark .card-header{border-color:#42484b}.card.bg-dark,.card.bg-dark .card-body{color:#fff}.card.maximized-card{height:100%!important;left:0;max-height:100%!important;max-width:100%!important;position:fixed;top:0;width:100%!important;z-index:9999}.card.maximized-card.was-collapsed .card-body{display:block!important}.card.maximized-card [data-widget=collapse]{display:none}.card.maximized-card .card-footer,.card.maximized-card .card-header{border-radius:0!important}.card.collapsed-card .card-body,.card.collapsed-card .card-footer{display:none}.card .nav.flex-column>li{border-bottom:1px solid rgba(34,41,47,.125);margin:0}.card .nav.flex-column>li:last-of-type{border-bottom:0}.card.height-control .card-body{max-height:300px;overflow:auto}.card .border-right{border-right:1px solid rgba(34,41,47,.125)}.card .border-left{border-left:1px solid rgba(34,41,47,.125)}.card.card-tabs:not(.card-outline)>.card-header{border-bottom:0}.card.card-tabs:not(.card-outline)>.card-header .nav-item:first-child .nav-link{margin-left:-1px}.card.card-tabs.card-outline .nav-item{border-bottom:0}.card.card-tabs.card-outline .nav-item:first-child .nav-link{border-left:0;margin-left:0}.card.card-tabs .card-tools{margin:.3rem .5rem}.card.card-tabs:not(.expanding-card).collapsed-card .card-header,.card.card-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs{border-bottom:0}.card.card-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs .nav-item{margin-bottom:0}.card.card-tabs.expanding-card .card-header .nav-tabs .nav-item{margin-bottom:-1px}.card.card-outline-tabs{border-top:0}.card.card-outline-tabs .card-header .nav-item:first-child .nav-link{border-left:0;margin-left:0}.card.card-outline-tabs .card-header a{border-top:3px solid transparent}.card.card-outline-tabs .card-header a:hover{border-top:3px solid #dae1e7}.card.card-outline-tabs .card-header a.active:hover{margin-top:0}.card.card-outline-tabs .card-tools{margin:.5rem .5rem .3rem}.card.card-outline-tabs:not(.expanding-card).collapsed-card .card-header,.card.card-outline-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs{border-bottom:0}.card.card-outline-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs .nav-item{margin-bottom:0}.card.card-outline-tabs.expanding-card .card-header .nav-tabs .nav-item{margin-bottom:-1px}html.maximized-card{overflow:hidden}.card-header{background-color:transparent;border-bottom:0;padding:.75rem 1.25rem;position:relative;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.collapsed-card .card-header{border-bottom:0}.card-header>.card-tools{float:right;margin-right:-.625rem}.card-header>.card-tools .input-group,.card-header>.card-tools .nav,.card-header>.card-tools .pagination{margin-bottom:-.3rem;margin-top:-.3rem}.card-header>.card-tools [data-toggle=tooltip]{position:relative}.card-title{float:left;font-size:1.1rem;font-weight:400;margin:0}.card-text{clear:both}.btn-tool{background:transparent;color:#adb5bd;font-size:1rem;margin:-.75rem 0;padding:.25rem .5rem}.btn-group.show .btn-tool,.btn-tool:hover{color:#4e5154}.btn-tool:focus,.show .btn-tool{box-shadow:none!important}.text-sm .card-title{font-size:1rem}.text-sm .nav-link{padding:.4rem .8rem}.card-body>.table{margin-bottom:0}.card-body>.table>thead>tr>td,.card-body>.table>thead>tr>th{border-top-width:0}.card-body .fc{margin-top:5px}.card-body .full-width-chart{margin:-19px}.card-body.p-0 .full-width-chart{margin:-9px}.chart-legend{padding-left:0;list-style:none;margin:10px 0}@media (max-width:576px){.chart-legend>li{float:left;margin-right:10px}}.card-comments{background:#babfc7}.card-comments .card-comment{border-bottom:1px solid #ededed;padding:8px 0}.card-comments .card-comment:after{display:block;clear:both;content:\"\"}.card-comments .card-comment:last-of-type{border-bottom:0}.card-comments .card-comment:first-of-type{padding-top:0}.card-comments .card-comment img{height:1.875rem;width:1.875rem;float:left}.card-comments .comment-text{color:#7f8489;margin-left:40px}.card-comments .username{color:#4e5154;display:block;font-weight:600}.card-comments .text-muted{font-size:12px;font-weight:400}.todo-list{list-style:none;margin:0;overflow:auto;padding:0}.todo-list>li{border-radius:2px;background:#babfc7;border-left:2px solid #ededed;color:#4e5154;margin-bottom:2px;padding:10px}.todo-list>li:last-of-type{margin-bottom:0}.todo-list>li>input[type=checkbox]{margin:0 10px 0 5px}.todo-list>li .text{display:inline-block;font-weight:600;margin-left:5px}.todo-list>li .badge{font-size:.7rem;margin-left:10px}.todo-list>li .tools{color:#ea5455;display:none;float:right}.todo-list>li .tools>.fa,.todo-list>li .tools>.fab,.todo-list>li .tools>.far,.todo-list>li .tools>.fas,.todo-list>li .tools>.glyphicon,.todo-list>li .tools>.ion{cursor:pointer;margin-right:5px}.todo-list>li:hover .tools{display:inline-block}.todo-list>li.done{color:#697582}.todo-list>li.done .text{font-weight:500;text-decoration:line-through}.todo-list>li.done .badge{background:#adb5bd!important}.todo-list .primary{border-left-color:#62a8ea}.todo-list .secondary{border-left-color:#b8c2cc}.todo-list .success{border-left-color:#21b978}.todo-list .info{border-left-color:#4277cf}.todo-list .warning{border-left-color:#dda451}.todo-list .danger{border-left-color:#ea5455}.todo-list .light{border-left-color:#f7f7f9}.todo-list .dark{border-left-color:#22292f}.todo-list .lightblue{border-left-color:#3c8dbc}.todo-list .navy{border-left-color:#001f3f}.todo-list .olive{border-left-color:#3d9970}.todo-list .lime{border-left-color:#01ff70}.todo-list .fuchsia{border-left-color:#f012be}.todo-list .maroon{border-left-color:#d81b60}.todo-list .blue{border-left-color:#3085d6}.todo-list .indigo{border-left-color:#5c6bc6}.todo-list .purple{border-left-color:#6f42c1}.todo-list .pink{border-left-color:#ff8acc}.todo-list .red{border-left-color:#ea5455}.todo-list .orange{border-left-color:#dda451}.todo-list .yellow{border-left-color:#edc30e}.todo-list .green{border-left-color:#21b978}.todo-list .teal{border-left-color:#20c997}.todo-list .cyan{border-left-color:#7367f0}.todo-list .white{border-left-color:#fff}.todo-list .gray{border-left-color:#b8c2cc}.todo-list .gray-dark{border-left-color:#1e1e1e}.todo-list .handle{cursor:move;display:inline-block;margin:0 5px}.card-input{max-width:200px}.card-default .nav-item:first-child .nav-link{border-left:0}.modal-dialog .overlay{background-color:#22292f;display:block;height:100%;left:0;opacity:.7;position:absolute;top:0;width:100%;z-index:1052}.modal-content.bg-warning .modal-footer,.modal-content.bg-warning .modal-header{border-color:#1e1e1e}.modal-content.bg-danger .close,.modal-content.bg-danger .mailbox-attachment-close,.modal-content.bg-info .close,.modal-content.bg-info .mailbox-attachment-close,.modal-content.bg-primary .close,.modal-content.bg-primary .mailbox-attachment-close,.modal-content.bg-secondary .close,.modal-content.bg-secondary .mailbox-attachment-close,.modal-content.bg-success .close,.modal-content.bg-success .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toasts-top-right{position:absolute;right:0;top:0;z-index:1040}.toasts-top-right.fixed{position:fixed}.toasts-top-left{left:0;position:absolute;top:0;z-index:1040}.toasts-top-left.fixed{position:fixed}.toasts-bottom-right{bottom:0;position:absolute;right:0;z-index:1040}.toasts-bottom-right.fixed{position:fixed}.toasts-bottom-left{bottom:0;left:0;position:absolute;z-index:1040}.toasts-bottom-left.fixed{position:fixed}.toast.bg-primary{background:rgba(98,168,234,.9)!important}.toast.bg-primary .toast-header{background:rgba(98,168,234,.85);color:#2a2e30}.toast.bg-secondary{background:rgba(184,194,204,.9)!important}.toast.bg-secondary .toast-header{background:rgba(184,194,204,.85);color:#2a2e30}.toast.bg-success{background:rgba(33,185,120,.9)!important}.toast.bg-success .close,.toast.bg-success .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-success .toast-header{background:rgba(33,185,120,.85);color:#fff}.toast.bg-info{background:rgba(66,119,207,.9)!important}.toast.bg-info .close,.toast.bg-info .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-info .toast-header{background:rgba(66,119,207,.85);color:#fff}.toast.bg-warning{background:rgba(221,164,81,.9)!important}.toast.bg-warning .toast-header{background:rgba(221,164,81,.85);color:#2a2e30}.toast.bg-danger{background:rgba(234,84,85,.9)!important}.toast.bg-danger .close,.toast.bg-danger .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-danger .toast-header{background:rgba(234,84,85,.85);color:#fff}.toast.bg-light{background:rgba(247,247,249,.9)!important}.toast.bg-light .toast-header{background:rgba(247,247,249,.85);color:#2a2e30}.toast.bg-dark{background:rgba(34,41,47,.9)!important}.toast.bg-dark .close,.toast.bg-dark .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-dark .toast-header{background:rgba(34,41,47,.85);color:#fff}.toast.bg-lightblue{background:rgba(60,141,188,.9)!important}.toast.bg-lightblue .close,.toast.bg-lightblue .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-lightblue .toast-header{background:rgba(60,141,188,.85);color:#fff}.toast.bg-navy{background:rgba(0,31,63,.9)!important}.toast.bg-navy .close,.toast.bg-navy .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-navy .toast-header{background:rgba(0,31,63,.85);color:#fff}.toast.bg-olive{background:rgba(61,153,112,.9)!important}.toast.bg-olive .close,.toast.bg-olive .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-olive .toast-header{background:rgba(61,153,112,.85);color:#fff}.toast.bg-lime{background:rgba(1,255,112,.9)!important}.toast.bg-lime .toast-header{background:rgba(1,255,112,.85);color:#2a2e30}.toast.bg-fuchsia{background:rgba(240,18,190,.9)!important}.toast.bg-fuchsia .close,.toast.bg-fuchsia .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-fuchsia .toast-header{background:rgba(240,18,190,.85);color:#fff}.toast.bg-maroon{background:rgba(216,27,96,.9)!important}.toast.bg-maroon .close,.toast.bg-maroon .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-maroon .toast-header{background:rgba(216,27,96,.85);color:#fff}.toast.bg-blue{background:rgba(48,133,214,.9)!important}.toast.bg-blue .close,.toast.bg-blue .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-blue .toast-header{background:rgba(48,133,214,.85);color:#fff}.toast.bg-indigo{background:rgba(92,107,198,.9)!important}.toast.bg-indigo .close,.toast.bg-indigo .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-indigo .toast-header{background:rgba(92,107,198,.85);color:#fff}.toast.bg-purple{background:rgba(111,66,193,.9)!important}.toast.bg-purple .close,.toast.bg-purple .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-purple .toast-header{background:rgba(111,66,193,.85);color:#fff}.toast.bg-pink{background:rgba(255,138,204,.9)!important}.toast.bg-pink .toast-header{background:rgba(255,138,204,.85);color:#2a2e30}.toast.bg-red{background:rgba(234,84,85,.9)!important}.toast.bg-red .close,.toast.bg-red .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-red .toast-header{background:rgba(234,84,85,.85);color:#fff}.toast.bg-orange{background:rgba(221,164,81,.9)!important}.toast.bg-orange .toast-header{background:rgba(221,164,81,.85);color:#2a2e30}.toast.bg-yellow{background:rgba(237,195,14,.9)!important}.toast.bg-yellow .toast-header{background:rgba(237,195,14,.85);color:#2a2e30}.toast.bg-green{background:rgba(33,185,120,.9)!important}.toast.bg-green .close,.toast.bg-green .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-green .toast-header{background:rgba(33,185,120,.85);color:#fff}.toast.bg-teal{background:rgba(32,201,151,.9)!important}.toast.bg-teal .close,.toast.bg-teal .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-teal .toast-header{background:rgba(32,201,151,.85);color:#fff}.toast.bg-cyan{background:rgba(115,103,240,.9)!important}.toast.bg-cyan .close,.toast.bg-cyan .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-cyan .toast-header{background:rgba(115,103,240,.85);color:#fff}.toast.bg-white{background:hsla(0,0%,100%,.9)!important}.toast.bg-white .toast-header{background:hsla(0,0%,100%,.85);color:#2a2e30}.toast.bg-gray{background:rgba(184,194,204,.9)!important}.toast.bg-gray .toast-header{background:rgba(184,194,204,.85);color:#2a2e30}.toast.bg-gray-dark{background:rgba(30,30,30,.9)!important}.toast.bg-gray-dark .close,.toast.bg-gray-dark .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-gray-dark .toast-header{background:rgba(30,30,30,.85);color:#fff}.btn{border-width:1px}.btn.disabled,.btn:disabled{cursor:not-allowed}.btn.btn-flat{border-radius:0;border-width:1px;box-shadow:none}.btn.btn-file{overflow:hidden;position:relative}.btn.btn-file>input[type=file]{background:#fff;cursor:inherit;display:block;font-size:100px;min-height:100%;min-width:100%;opacity:0;outline:none;position:absolute;right:0;text-align:right;top:0}.text-sm .btn{font-size:1rem!important}.btn-default{background-color:#babfc7;border-color:#babfc7;color:#444}.btn-default.hover,.btn-default:active,.btn-default:hover{background-color:#acb2bc;color:#2b2b2b}.btn-app{border-radius:3px;background-color:#babfc7;border:1px solid #ddd;color:#b8c2cc;font-size:12px;height:60px;margin:0 0 10px 10px;min-width:80px;padding:15px 5px;position:relative;text-align:center}.btn-app>.fa,.btn-app>.fab,.btn-app>.far,.btn-app>.fas,.btn-app>.glyphicon,.btn-app>.ion{display:block;font-size:20px}.btn-app:hover{background:#babfc7;border-color:#aaa;color:#444}.btn-app>.badge{font-size:10px;font-weight:400;position:absolute;right:-10px;top:-3px}.btn-xs{padding:.125rem .25rem;font-size:.75rem;border-radius:.15rem}.callout{border-radius:.5rem;background-color:#fff;border:1px solid #dae1e7;border-left:5px solid #ededed;margin-bottom:3rem;padding:1rem}.callout a{color:#4e5154;text-decoration:underline}.callout a:hover{color:#ededed}.callout p:last-child{margin-bottom:0}.callout.callout-danger{border-left-color:#e42728}.callout.callout-warning{border-left-color:#d28d29}.callout.callout-info{border-left-color:#2d5fb1}.callout.callout-success{border-left-color:#198e5c}.alert .icon{margin-right:10px}.alert .close,.alert .mailbox-attachment-close{color:#22292f;opacity:.2}.alert .close:hover,.alert .mailbox-attachment-close:hover{opacity:.5}.alert a{color:#fff;text-decoration:underline}.alert-primary{color:#2a2e30;background:#62a8ea;border-color:#4c9ce7}.alert-default-primary{color:#436b90;background-color:#e0eefb;border-color:#d3e7f9}.alert-default-primary hr{border-top-color:#bddbf6}.alert-default-primary .alert-link{color:#33516d}.alert-secondary{color:#2a2e30;background:#b8c2cc;border-color:#a9b5c1}.alert-default-secondary{color:#707981;background-color:#f1f3f5;border-color:#ebeef1}.alert-default-secondary hr{border-top-color:#dce1e7}.alert-default-secondary .alert-link{color:#585f66}.alert-success{color:#fff;background:#21b978;border-color:#1da36a}.alert-default-success{color:#217455;background-color:#d3f1e4;border-color:#c1ebd9}.alert-default-success hr{border-top-color:#aee5cd}.alert-default-success .alert-link{color:#164c38}.alert-info{color:#fff;background:#4277cf;border-color:#3269c5}.alert-default-info{color:#335282;background-color:#d9e4f5;border-color:#cad9f2}.alert-default-info hr{border-top-color:#b6caed}.alert-default-info .alert-link{color:#253b5d}.alert-warning{color:#2a2e30;background:#dda451;border-color:#d9993c}.alert-default-warning{color:#836941;background-color:#f8eddc;border-color:#f5e6ce}.alert-default-warning hr{border-top-color:#f1dbb9}.alert-default-warning .alert-link{color:#614e30}.alert-danger{color:#fff;background:#ea5455;border-color:#e73d3e}.alert-default-danger{color:#8a3f43;background-color:#fbdddd;border-color:#f9cfcf}.alert-default-danger hr{border-top-color:#f6b8b8}.alert-default-danger .alert-link{color:#672f32}.alert-light{color:#2a2e30;background:#f7f7f9;border-color:#e8e8ee}.alert-default-light{color:#919498;background-color:#fdfdfe;border-color:#fdfdfd}.alert-default-light hr{border-top-color:#f0f0f0}.alert-default-light .alert-link{color:#777a7f}.alert-dark{color:#fff;background:#22292f;border-color:#171c20}.alert-default-dark{color:#22292f;background-color:#d3d4d5;border-color:#c1c3c5}.alert-default-dark hr{border-top-color:#b4b6b9}.alert-default-dark .alert-link{color:#0d0f11}.table:not(.table-dark){color:inherit}.table.table-head-fixed thead tr:first-child th{background-color:#fff;border-bottom:0;box-shadow:inset 0 1px 0 #eff1f7,inset 0 -1px 0 #eff1f7;position:-webkit-sticky;position:sticky;top:0;z-index:10}.table.table-head-fixed.table-dark thead tr:first-child th{background-color:#1e1e1e;box-shadow:inset 0 1px 0 #313131,inset 0 -1px 0 #313131}.table.no-border,.table.no-border td,.table.no-border th{border:0}.table.text-center,.table.text-center td,.table.text-center th{text-align:center}.table.table-valign-middle tbody>tr>td,.table.table-valign-middle tbody>tr>th,.table.table-valign-middle thead>tr>td,.table.table-valign-middle thead>tr>th{vertical-align:middle}.card-body.p-0 .table tbody>tr>td:first-of-type,.card-body.p-0 .table tbody>tr>th:first-of-type,.card-body.p-0 .table thead>tr>td:first-of-type,.card-body.p-0 .table thead>tr>th:first-of-type{padding-left:3.5rem}.card-body.p-0 .table tbody>tr>td:last-of-type,.card-body.p-0 .table tbody>tr>th:last-of-type,.card-body.p-0 .table thead>tr>td:last-of-type,.card-body.p-0 .table thead>tr>th:last-of-type{padding-right:3.5rem}.carousel-control.left,.carousel-control.right{background-image:none}.carousel-control>.fa,.carousel-control>.fab,.carousel-control>.far,.carousel-control>.fas,.carousel-control>.glyphicon,.carousel-control>.ion{display:inline-block;font-size:40px;margin-top:-20px;position:absolute;top:50%;z-index:5}.small-box{border-radius:.5rem;display:block;margin-bottom:20px;position:relative}.small-box>.inner{padding:10px}.small-box>.small-box-footer{background:rgba(34,41,47,.1);color:hsla(0,0%,100%,.8);display:block;padding:3px 0;position:relative;text-align:center;text-decoration:none;z-index:10}.small-box>.small-box-footer:hover{background:rgba(34,41,47,.15);color:#fff}.small-box h3{font-size:2.2rem;font-weight:700;margin:0 0 10px;padding:0;white-space:nowrap}@media (min-width:992px){.col-lg-2 .small-box h3,.col-lg-3 .small-box h3,.col-md-2 .small-box h3,.col-md-3 .small-box h3,.col-xl-2 .small-box h3,.col-xl-3 .small-box h3{font-size:1.6rem}}@media (min-width:1200px){.col-lg-2 .small-box h3,.col-lg-3 .small-box h3,.col-md-2 .small-box h3,.col-md-3 .small-box h3,.col-xl-2 .small-box h3,.col-xl-3 .small-box h3{font-size:2.2rem}}.small-box p{font-size:1rem}.small-box p>small{color:#babfc7;display:block;font-size:.9rem;margin-top:5px}.small-box h3,.small-box p{z-index:5}.small-box .icon{color:rgba(34,41,47,.15);z-index:0}.small-box .icon>i{font-size:90px;position:absolute;right:15px;top:15px;transition:all .3s linear}.small-box .icon>i.fa,.small-box .icon>i.fab,.small-box .icon>i.far,.small-box .icon>i.fas,.small-box .icon>i.glyphicon,.small-box .icon>i.ion{font-size:70px;top:20px}.small-box:hover{text-decoration:none}.small-box:hover .icon>i{font-size:95px}.small-box:hover .icon>i.fa,.small-box:hover .icon>i.fab,.small-box:hover .icon>i.far,.small-box:hover .icon>i.fas,.small-box:hover .icon>i.glyphicon,.small-box:hover .icon>i.ion{font-size:75px}@media (max-width:767.98px){.small-box{text-align:center}.small-box .icon{display:none}.small-box p{font-size:12px}}.info-box{border-radius:.5rem;background:#fff;display:flex;margin-bottom:3rem;min-height:80px;padding:.5rem;position:relative}.info-box .progress{background-color:rgba(34,41,47,.125);height:2px;margin:5px 0}.info-box .progress .progress-bar{background-color:#fff}.info-box .info-box-icon{border-radius:.5rem;align-items:center;display:flex;font-size:1.875rem;justify-content:center;text-align:center;width:70px}.info-box .info-box-icon>img{max-width:100%}.info-box .info-box-content{flex:1;padding:5px 10px}.info-box .info-box-number{display:block;font-weight:700}.info-box .info-box-text,.info-box .progress-description{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-box .info-box .bg-gradient-primary,.info-box .info-box .bg-primary{color:#2a2e30}.info-box .info-box .bg-gradient-primary .progress-bar,.info-box .info-box .bg-primary .progress-bar{background-color:#2a2e30}.info-box .info-box .bg-gradient-secondary,.info-box .info-box .bg-secondary{color:#2a2e30}.info-box .info-box .bg-gradient-secondary .progress-bar,.info-box .info-box .bg-secondary .progress-bar{background-color:#2a2e30}.info-box .info-box .bg-gradient-success,.info-box .info-box .bg-success{color:#fff}.info-box .info-box .bg-gradient-success .progress-bar,.info-box .info-box .bg-success .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-info,.info-box .info-box .bg-info{color:#fff}.info-box .info-box .bg-gradient-info .progress-bar,.info-box .info-box .bg-info .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-warning,.info-box .info-box .bg-warning{color:#2a2e30}.info-box .info-box .bg-gradient-warning .progress-bar,.info-box .info-box .bg-warning .progress-bar{background-color:#2a2e30}.info-box .info-box .bg-danger,.info-box .info-box .bg-gradient-danger{color:#fff}.info-box .info-box .bg-danger .progress-bar,.info-box .info-box .bg-gradient-danger .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-light,.info-box .info-box .bg-light{color:#2a2e30}.info-box .info-box .bg-gradient-light .progress-bar,.info-box .info-box .bg-light .progress-bar{background-color:#2a2e30}.info-box .info-box .bg-dark,.info-box .info-box .bg-gradient-dark{color:#fff}.info-box .info-box .bg-dark .progress-bar,.info-box .info-box .bg-gradient-dark .progress-bar{background-color:#fff}.info-box .info-box-more{display:block}.info-box .progress-description{margin:0}@media (min-width:768px){.col-lg-2 .info-box .progress-description,.col-lg-3 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-2 .info-box .progress-description,.col-xl-3 .info-box .progress-description{display:none}}@media (min-width:992px){.col-lg-2 .info-box .progress-description,.col-lg-3 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-2 .info-box .progress-description,.col-xl-3 .info-box .progress-description{font-size:.75rem;display:block}}@media (min-width:1200px){.col-lg-2 .info-box .progress-description,.col-lg-3 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-2 .info-box .progress-description,.col-xl-3 .info-box .progress-description{font-size:1rem;display:block}}.timeline{margin:0 0 45px;padding:0;position:relative}.timeline:before{border-radius:.5rem;background:#dae1e7;bottom:0;content:\"\";left:31px;margin:0;position:absolute;top:0;width:4px}.timeline>div{margin-bottom:15px;margin-right:10px;position:relative}.timeline>div:after,.timeline>div:before{content:\"\";display:table}.timeline>div>.timeline-item{border-radius:.5rem;background:#fff;color:#4e5154;margin-left:60px;margin-right:15px;margin-top:0;padding:0;position:relative}.timeline>div>.timeline-item>.time{color:#999;float:right;font-size:12px;padding:10px}.timeline>div>.timeline-item>.timeline-header{border-bottom:1px solid rgba(34,41,47,.125);color:#4e5154;font-size:16px;line-height:1.1;margin:0;padding:10px}.timeline>div>.timeline-item>.timeline-header>a{font-weight:600}.timeline>div>.timeline-item>.timeline-body,.timeline>div>.timeline-item>.timeline-footer{padding:10px}.timeline>div>.timeline-item>.timeline-body>img{margin:10px}.timeline>div>.timeline-item>.timeline-body>dl,.timeline>div>.timeline-item>.timeline-body ol,.timeline>div>.timeline-item>.timeline-body ul{margin:0}.timeline>div>.timeline-item>.timeline-footer>a{color:#fff}.timeline>div>.fa,.timeline>div>.fab,.timeline>div>.far,.timeline>div>.fas,.timeline>div>.glyphicon,.timeline>div>.ion{background:#adb5bd;border-radius:50%;font-size:15px;height:30px;left:18px;line-height:30px;position:absolute;text-align:center;top:0;width:30px}.timeline>.time-label>span{border-radius:4px;background-color:#fff;display:inline-block;font-weight:600;padding:5px}.timeline-inverse>div>.timeline-item{background:#babfc7;border:1px solid #dae1e7}.timeline-inverse>div>.timeline-item>.timeline-header{border-bottom-color:#dae1e7}.products-list{list-style:none;margin:0;padding:0}.products-list>.item{border-radius:.5rem;background:#fff;padding:10px 0}.products-list>.item:after{display:block;clear:both;content:\"\"}.products-list .product-img{float:left}.products-list .product-img img{height:50px;width:50px}.products-list .product-info{margin-left:60px}.products-list .product-title{font-weight:600}.products-list .product-description{color:#b8c2cc;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.product-list-in-card>.item{border-radius:0;border-bottom:1px solid rgba(34,41,47,.125)}.product-list-in-card>.item:last-of-type{border-bottom-width:0}.direct-chat .card-body{overflow-x:hidden;padding:0;position:relative}.direct-chat.chat-pane-open .direct-chat-contacts{transform:translate(0)}.direct-chat.timestamp-light .direct-chat-timestamp{color:#42484b}.direct-chat.timestamp-dark .direct-chat-timestamp{color:#ccc}.direct-chat-messages{transform:translate(0);height:250px;overflow:auto;padding:10px}.direct-chat-msg,.direct-chat-text{display:block}.direct-chat-msg{margin-bottom:10px}.direct-chat-msg:after{display:block;clear:both;content:\"\"}.direct-chat-contacts,.direct-chat-messages{transition:transform .5s ease-in-out}.direct-chat-text{border-radius:.6rem;background:#d2d6de;border:1px solid #d2d6de;color:#444;margin:5px 0 0 50px;padding:5px 10px;position:relative}.direct-chat-text:after,.direct-chat-text:before{border:solid transparent;border-right:solid #d2d6de;content:\" \";height:0;pointer-events:none;position:absolute;right:100%;top:15px;width:0}.direct-chat-text:after{border-width:5px;margin-top:-5px}.direct-chat-text:before{border-width:6px;margin-top:-6px}.right .direct-chat-text{margin-left:0;margin-right:50px}.right .direct-chat-text:after,.right .direct-chat-text:before{border-left-color:#d2d6de;border-right-color:transparent;left:100%;right:auto}.direct-chat-img{border-radius:50%;float:left;height:40px;width:40px}.right .direct-chat-img{float:right}.direct-chat-infos{display:block;font-size:1rem;margin-bottom:2px}.direct-chat-name{font-weight:600}.direct-chat-timestamp{color:#697582}.direct-chat-contacts-open .direct-chat-contacts{transform:translate(0)}.direct-chat-contacts{transform:translate(101%);background:#22292f;bottom:0;color:#fff;height:250px;overflow:auto;position:absolute;top:0;width:100%}.direct-chat-contacts-light{background:#f7f7f9}.direct-chat-contacts-light .contacts-list-name{color:#4e5154}.direct-chat-contacts-light .contacts-list-date{color:#b8c2cc}.direct-chat-contacts-light .contacts-list-msg{color:#9aa9b7}.contacts-list{padding-left:0;list-style:none}.contacts-list>li{border-bottom:1px solid rgba(34,41,47,.2);margin:0;padding:10px}.contacts-list>li:after{display:block;clear:both;content:\"\"}.contacts-list>li:last-of-type{border-bottom:0}.contacts-list-img{border-radius:50%;float:left;width:40px}.contacts-list-info{color:#fff;margin-left:45px}.contacts-list-name,.contacts-list-status{display:block}.contacts-list-name{font-weight:600}.contacts-list-status{font-size:1rem}.contacts-list-date{color:#636363;font-weight:400}.contacts-list-msg{color:#4a4a4a}.direct-chat-primary .right>.direct-chat-text{background:#62a8ea;border-color:#62a8ea;color:#2a2e30}.direct-chat-primary .right>.direct-chat-text:after,.direct-chat-primary .right>.direct-chat-text:before{border-left-color:#62a8ea}.direct-chat-secondary .right>.direct-chat-text{background:#b8c2cc;border-color:#b8c2cc;color:#2a2e30}.direct-chat-secondary .right>.direct-chat-text:after,.direct-chat-secondary .right>.direct-chat-text:before{border-left-color:#b8c2cc}.direct-chat-success .right>.direct-chat-text{background:#21b978;border-color:#21b978;color:#fff}.direct-chat-success .right>.direct-chat-text:after,.direct-chat-success .right>.direct-chat-text:before{border-left-color:#21b978}.direct-chat-info .right>.direct-chat-text{background:#4277cf;border-color:#4277cf;color:#fff}.direct-chat-info .right>.direct-chat-text:after,.direct-chat-info .right>.direct-chat-text:before{border-left-color:#4277cf}.direct-chat-warning .right>.direct-chat-text{background:#dda451;border-color:#dda451;color:#2a2e30}.direct-chat-warning .right>.direct-chat-text:after,.direct-chat-warning .right>.direct-chat-text:before{border-left-color:#dda451}.direct-chat-danger .right>.direct-chat-text{background:#ea5455;border-color:#ea5455;color:#fff}.direct-chat-danger .right>.direct-chat-text:after,.direct-chat-danger .right>.direct-chat-text:before{border-left-color:#ea5455}.direct-chat-light .right>.direct-chat-text{background:#f7f7f9;border-color:#f7f7f9;color:#2a2e30}.direct-chat-light .right>.direct-chat-text:after,.direct-chat-light .right>.direct-chat-text:before{border-left-color:#f7f7f9}.direct-chat-dark .right>.direct-chat-text{background:#22292f;border-color:#22292f;color:#fff}.direct-chat-dark .right>.direct-chat-text:after,.direct-chat-dark .right>.direct-chat-text:before{border-left-color:#22292f}.direct-chat-lightblue .right>.direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff}.direct-chat-lightblue .right>.direct-chat-text:after,.direct-chat-lightblue .right>.direct-chat-text:before{border-left-color:#3c8dbc}.direct-chat-navy .right>.direct-chat-text{background:#001f3f;border-color:#001f3f;color:#fff}.direct-chat-navy .right>.direct-chat-text:after,.direct-chat-navy .right>.direct-chat-text:before{border-left-color:#001f3f}.direct-chat-olive .right>.direct-chat-text{background:#3d9970;border-color:#3d9970;color:#fff}.direct-chat-olive .right>.direct-chat-text:after,.direct-chat-olive .right>.direct-chat-text:before{border-left-color:#3d9970}.direct-chat-lime .right>.direct-chat-text{background:#01ff70;border-color:#01ff70;color:#2a2e30}.direct-chat-lime .right>.direct-chat-text:after,.direct-chat-lime .right>.direct-chat-text:before{border-left-color:#01ff70}.direct-chat-fuchsia .right>.direct-chat-text{background:#f012be;border-color:#f012be;color:#fff}.direct-chat-fuchsia .right>.direct-chat-text:after,.direct-chat-fuchsia .right>.direct-chat-text:before{border-left-color:#f012be}.direct-chat-maroon .right>.direct-chat-text{background:#d81b60;border-color:#d81b60;color:#fff}.direct-chat-maroon .right>.direct-chat-text:after,.direct-chat-maroon .right>.direct-chat-text:before{border-left-color:#d81b60}.direct-chat-blue .right>.direct-chat-text{background:#3085d6;border-color:#3085d6;color:#fff}.direct-chat-blue .right>.direct-chat-text:after,.direct-chat-blue .right>.direct-chat-text:before{border-left-color:#3085d6}.direct-chat-indigo .right>.direct-chat-text{background:#5c6bc6;border-color:#5c6bc6;color:#fff}.direct-chat-indigo .right>.direct-chat-text:after,.direct-chat-indigo .right>.direct-chat-text:before{border-left-color:#5c6bc6}.direct-chat-purple .right>.direct-chat-text{background:#6f42c1;border-color:#6f42c1;color:#fff}.direct-chat-purple .right>.direct-chat-text:after,.direct-chat-purple .right>.direct-chat-text:before{border-left-color:#6f42c1}.direct-chat-pink .right>.direct-chat-text{background:#ff8acc;border-color:#ff8acc;color:#2a2e30}.direct-chat-pink .right>.direct-chat-text:after,.direct-chat-pink .right>.direct-chat-text:before{border-left-color:#ff8acc}.direct-chat-red .right>.direct-chat-text{background:#ea5455;border-color:#ea5455;color:#fff}.direct-chat-red .right>.direct-chat-text:after,.direct-chat-red .right>.direct-chat-text:before{border-left-color:#ea5455}.direct-chat-orange .right>.direct-chat-text{background:#dda451;border-color:#dda451;color:#2a2e30}.direct-chat-orange .right>.direct-chat-text:after,.direct-chat-orange .right>.direct-chat-text:before{border-left-color:#dda451}.direct-chat-yellow .right>.direct-chat-text{background:#edc30e;border-color:#edc30e;color:#2a2e30}.direct-chat-yellow .right>.direct-chat-text:after,.direct-chat-yellow .right>.direct-chat-text:before{border-left-color:#edc30e}.direct-chat-green .right>.direct-chat-text{background:#21b978;border-color:#21b978;color:#fff}.direct-chat-green .right>.direct-chat-text:after,.direct-chat-green .right>.direct-chat-text:before{border-left-color:#21b978}.direct-chat-teal .right>.direct-chat-text{background:#20c997;border-color:#20c997;color:#fff}.direct-chat-teal .right>.direct-chat-text:after,.direct-chat-teal .right>.direct-chat-text:before{border-left-color:#20c997}.direct-chat-cyan .right>.direct-chat-text{background:#7367f0;border-color:#7367f0;color:#fff}.direct-chat-cyan .right>.direct-chat-text:after,.direct-chat-cyan .right>.direct-chat-text:before{border-left-color:#7367f0}.direct-chat-white .right>.direct-chat-text{background:#fff;border-color:#fff;color:#2a2e30}.direct-chat-white .right>.direct-chat-text:after,.direct-chat-white .right>.direct-chat-text:before{border-left-color:#fff}.direct-chat-gray .right>.direct-chat-text{background:#b8c2cc;border-color:#b8c2cc;color:#2a2e30}.direct-chat-gray .right>.direct-chat-text:after,.direct-chat-gray .right>.direct-chat-text:before{border-left-color:#b8c2cc}.direct-chat-gray-dark .right>.direct-chat-text{background:#1e1e1e;border-color:#1e1e1e;color:#fff}.direct-chat-gray-dark .right>.direct-chat-text:after,.direct-chat-gray-dark .right>.direct-chat-text:before{border-left-color:#1e1e1e}.users-list{padding-left:0;list-style:none}.users-list>li{float:left;padding:10px;text-align:center;width:25%}.users-list>li img{border-radius:50%;height:auto;max-width:100%}.users-list>li>a:hover,.users-list>li>a:hover .users-list-name{color:#999}.users-list-date,.users-list-name{display:block}.users-list-name{color:#4e5154;font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.users-list-date{color:#748290;font-size:12px}.card-widget{border:0;position:relative}.widget-user .widget-user-header{border-top-left-radius:.5rem;border-top-right-radius:.5rem;height:135px;padding:1rem;text-align:center}.widget-user .widget-user-username{font-size:25px;font-weight:300;margin-bottom:0;margin-top:0;text-shadow:0 1px 1px rgba(34,41,47,.2)}.widget-user .widget-user-desc{margin-top:0}.widget-user .widget-user-image{left:50%;margin-left:-45px;position:absolute;top:80px}.widget-user .widget-user-image>img{border:3px solid #fff;height:auto;width:90px}.widget-user .card-footer{padding-top:50px}.widget-user-2 .widget-user-header{border-top-left-radius:.5rem;border-top-right-radius:.5rem;padding:1rem}.widget-user-2 .widget-user-username{font-size:25px;font-weight:300;margin-bottom:5px;margin-top:5px}.widget-user-2 .widget-user-desc{margin-top:0}.widget-user-2 .widget-user-desc,.widget-user-2 .widget-user-username{margin-left:75px}.widget-user-2 .widget-user-image>img{float:left;height:auto;width:65px}.mailbox-messages>.table{margin:0}.mailbox-controls{padding:5px}.mailbox-controls.with-border,.mailbox-read-info{border-bottom:1px solid rgba(34,41,47,.125)}.mailbox-read-info{padding:10px}.mailbox-read-info h3{font-size:20px;margin:0}.mailbox-read-info h5{margin:0;padding:5px 0 0}.mailbox-read-time{color:#999;font-size:13px}.mailbox-read-message{padding:10px}.mailbox-attachments{padding-left:0;list-style:none}.mailbox-attachments li{border:1px solid #eee;float:left;margin-bottom:10px;margin-right:10px;width:200px}.mailbox-attachment-name{color:#666;font-weight:700}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block}.mailbox-attachment-info{background:#babfc7;padding:10px}.mailbox-attachment-size{color:#999;font-size:12px}.mailbox-attachment-size>span{display:inline-block;padding-top:.75rem}.mailbox-attachment-icon{color:#666;font-size:65px;max-height:132.5px;padding:20px 10px;text-align:center}.mailbox-attachment-icon.has-img{padding:0}.mailbox-attachment-icon.has-img>img{height:auto;max-width:100%}.lockscreen{background:#ededed}.lockscreen .lockscreen-name{font-weight:600;text-align:center}.lockscreen-logo{font-size:35px;font-weight:300;margin-bottom:25px;text-align:center}.lockscreen-logo a{color:#4e5154}.lockscreen-wrapper{margin:10% auto 0;max-width:400px}.lockscreen-item{border-radius:4px;background:#fff;margin:10px auto 30px;padding:0;position:relative;width:290px}.lockscreen-image{border-radius:50%;background:#fff;left:-10px;padding:5px;position:absolute;top:-25px;z-index:10}.lockscreen-image>img{border-radius:50%;height:70px;width:70px}.lockscreen-credentials{margin-left:70px}.lockscreen-credentials .form-control{border:0}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px}.lockscreen-footer{margin-top:10px}.login-logo,.register-logo{font-size:2.1rem;font-weight:300;margin-bottom:.9rem;text-align:center}.login-logo a,.register-logo a{color:#4e5154}.login-page,.register-page{align-items:center;background:#ededed;display:flex;flex-direction:column;height:100vh;justify-content:center}.login-box,.register-box{width:360px}@media (max-width:576px){.login-box,.register-box{margin-top:.5rem;width:90%}}.login-card-body,.register-card-body{background:#fff;border-top:0;color:#666;padding:20px}.login-card-body .input-group .form-control,.register-card-body .input-group .form-control{border-right:0}.login-card-body .input-group .form-control:focus,.register-card-body .input-group .form-control:focus{box-shadow:none}.login-card-body .input-group .form-control:focus~.input-group-append .input-group-text,.register-card-body .input-group .form-control:focus~.input-group-append .input-group-text{border-color:#62a8ea}.login-card-body .input-group .form-control.is-valid:focus,.register-card-body .input-group .form-control.is-valid:focus{box-shadow:none}.login-card-body .input-group .form-control.is-valid~.input-group-append .input-group-text,.register-card-body .input-group .form-control.is-valid~.input-group-append .input-group-text{border-color:#21b978}.login-card-body .input-group .form-control.is-invalid:focus,.register-card-body .input-group .form-control.is-invalid:focus{box-shadow:none}.login-card-body .input-group .form-control.is-invalid~.input-group-append .input-group-text,.register-card-body .input-group .form-control.is-invalid~.input-group-append .input-group-text{border-color:#ea5455}.login-card-body .input-group .input-group-text,.register-card-body .input-group .input-group-text{background-color:transparent;border-bottom-right-radius:.5rem;border-left:0;border-top-right-radius:.5rem;color:#777;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.login-box-msg,.register-box-msg{margin:0;padding:0 20px 20px;text-align:center}.social-auth-links{margin:10px 0}.error-page{margin:20px auto 0;width:600px}@media (max-width:767.98px){.error-page{width:100%}}.error-page>.headline{float:left;font-size:100px;font-weight:300}@media (max-width:767.98px){.error-page>.headline{float:none;text-align:center}}.error-page>.error-content{display:block;margin-left:190px}@media (max-width:767.98px){.error-page>.error-content{margin-left:0}}.error-page>.error-content>h3{font-size:25px;font-weight:300}@media (max-width:767.98px){.error-page>.error-content>h3{text-align:center}}.invoice{background:#fff;border:1px solid rgba(34,41,47,.125);position:relative}.invoice-title{margin-top:0}.profile-user-img{border:3px solid #adb5bd;margin:0 auto;padding:3px;width:100px}.profile-username{font-size:21px;margin-top:5px}.post{border-bottom:1px solid #adb5bd;color:#666;margin-bottom:15px;padding-bottom:15px}.post:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0}.post .user-block{margin-bottom:15px;width:100%}.post .row{width:100%}.product-image{max-width:100%;height:auto;width:100%}.product-image-thumbs{align-items:stretch;display:flex;margin-top:2rem}.product-image-thumb{border-radius:.5rem;background-color:#eff1f7;border:1px solid #dae1e7;display:flex;margin-right:1rem;max-width:7rem;padding:.5rem}.product-image-thumb img{max-width:100%;height:auto;align-self:center}.product-image-thumb:hover{opacity:.5}.product-share a{margin-right:.5rem}.projects td{vertical-align:middle}.projects .list-inline{margin-bottom:0}.projects .table-avatar img,.projects img.table-avatar{border-radius:50%;display:inline;width:2.5rem}.projects .project-state{text-align:center}.fc-button{background:#babfc7;background-image:none;border-color:#ddd;color:#4e5154}.fc-button.hover,.fc-button:active,.fc-button:hover{background-color:#e9e9e9}.fc-header-title h2{color:#666;font-size:15px;line-height:1.6em;margin-left:10px}.fc-header-right{padding-right:10px}.fc-header-left{padding-left:10px}.fc-widget-header{background:#fafafa}.fc-grid{border:0;width:100%}.fc-widget-content:first-of-type,.fc-widget-header:first-of-type{border-left:0;border-right:0}.fc-widget-content:last-of-type,.fc-widget-header:last-of-type{border-right:0}.fc-toolbar,.fc-toolbar.fc-header-toolbar{margin:0;padding:1rem}@media (max-width:575.98px){.fc-toolbar{flex-direction:column}.fc-toolbar .fc-left{order:1;margin-bottom:.5rem}.fc-toolbar .fc-center{order:0;margin-bottom:.375rem}.fc-toolbar .fc-right{order:2}}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px}.fc-color-picker{list-style:none;margin:0;padding:0}.fc-color-picker>li{float:left;font-size:30px;line-height:30px;margin-right:5px}.fc-color-picker>li .fa,.fc-color-picker>li .fab,.fc-color-picker>li .far,.fc-color-picker>li .fas,.fc-color-picker>li .glyphicon,.fc-color-picker>li .ion{transition:transform .3s linear}.fc-color-picker>li .fa:hover,.fc-color-picker>li .fab:hover,.fc-color-picker>li .far:hover,.fc-color-picker>li .fas:hover,.fc-color-picker>li .glyphicon:hover,.fc-color-picker>li .ion:hover{transform:rotate(30deg)}#add-new-event{transition:all .3s linear}.external-event{border-radius:.5rem;cursor:move;font-weight:700;margin-bottom:4px;padding:5px 10px}.select2-container--default .select2-selection--single{border:1px solid rgba(0,0,0,.2);padding:.875rem .7rem;height:34px}.select2-container--default.select2-container--open .select2-selection--single{border-color:#d2e6f9}.select2-container--default .select2-dropdown{border:1px solid rgba(0,0,0,.2)}.select2-container--default .select2-results__option{padding:6px 12px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container--default .select2-selection--single .select2-selection__rendered{padding-left:0;height:auto;margin-top:-3px}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:31px;right:6px}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0}.select2-container--default .select2-dropdown .select2-search__field,.select2-container--default .select2-search--inline .select2-search__field{border:1px solid rgba(0,0,0,.2)}.select2-container--default .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-search--inline .select2-search__field:focus{outline:none;border:1px solid #62a8ea}.select2-container--default .select2-dropdown.select2-dropdown--below{border-top:0}.select2-container--default .select2-dropdown.select2-dropdown--above{border-bottom:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#b8c2cc}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#dae1e7}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#2a2e30}.select2-container--default .select2-results__option--highlighted{background-color:#62a8ea;color:#2a2e30}.select2-container--default .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#55a1e8;color:#fff}.select2-container--default .select2-selection--multiple{border:1px solid rgba(0,0,0,.2);min-height:34px}.select2-container--default .select2-selection--multiple:focus{border-color:#62a8ea}.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .35rem .7rem;margin-bottom:-.35rem}.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline{width:100%;margin-left:.35rem}.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline .select2-search__field{width:100%!important}.select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field{border:0;margin-top:6px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#62a8ea;border-color:#4c9ce7;color:#2a2e30;padding:0 10px;margin-top:.31rem}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7);float:right;margin-left:5px;margin-right:-2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-selection--multiple.text-sm .select2-search.select2-search--inline .select2-search__field,.text-sm .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline .select2-search__field{margin-top:8px}.select2-container--default .select2-selection--multiple.text-sm .select2-selection__choice,.text-sm .select2-container--default .select2-selection--multiple .select2-selection__choice{margin-top:.4rem}.select2-container--default.select2-container--focus .select2-selection--multiple,.select2-container--default.select2-container--focus .select2-selection--single{border-color:#62a8ea}.select2-container--default.select2-container--focus .select2-search__field{border:0}.select2-container--default .select2-selection--single .select2-selection__rendered li{padding-right:10px}.input-group-prepend~.select2-container--default .select2-selection{border-bottom-left-radius:0;border-top-left-radius:0}.input-group>.select2-container--default:not(:last-child) .select2-selection{border-bottom-right-radius:0;border-top-right-radius:0}.select2-container--bootstrap4.select2-container--focus .select2-selection{box-shadow:none}select.form-control-sm~.select2-container--default{font-size:1rem}.text-sm .select2-container--default .select2-selection--single,select.form-control-sm~.select2-container--default .select2-selection--single{height:2rem}.text-sm .select2-container--default .select2-selection--single .select2-selection__rendered,select.form-control-sm~.select2-container--default .select2-selection--single .select2-selection__rendered{margin-top:-.4rem}.text-sm .select2-container--default .select2-selection--single .select2-selection__arrow,select.form-control-sm~.select2-container--default .select2-selection--single .select2-selection__arrow{top:-.12rem}.text-sm .select2-container--default .select2-selection--multiple,select.form-control-sm~.select2-container--default .select2-selection--multiple{min-height:2rem}.text-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered,select.form-control-sm~.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .75rem .5rem;margin-top:-.3rem}.text-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline,select.form-control-sm~.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline{margin-left:.75rem}.text-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field,select.form-control-sm~.select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field{margin-top:6px}.select2-primary+.select2-container--default.select2-container--focus .select2-selection--single,.select2-primary+.select2-container--default.select2-container--open .select2-selection--single{border-color:#d2e6f9}.select2-container--default .select2-primary.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-primary .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-primary .select2-search--inline .select2-search__field:focus,.select2-primary .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-primary .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-primary .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #d2e6f9}.select2-container--default .select2-primary .select2-results__option--highlighted,.select2-primary .select2-container--default .select2-results__option--highlighted{background-color:#62a8ea;color:#2a2e30}.select2-container--default .select2-primary .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-primary .select2-results__option--highlighted[aria-selected]:hover,.select2-primary .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-primary .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#55a1e8;color:#fff}.select2-container--default .select2-primary .select2-selection--multiple:focus,.select2-primary .select2-container--default .select2-selection--multiple:focus{border-color:#d2e6f9}.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice,.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#62a8ea;border-color:#4c9ce7;color:#2a2e30}.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice__remove,.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-primary.select2-container--focus .select2-selection--multiple,.select2-primary .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#d2e6f9}.select2-secondary+.select2-container--default.select2-container--focus .select2-selection--single,.select2-secondary+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-secondary.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-secondary .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-secondary .select2-search--inline .select2-search__field:focus,.select2-secondary .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-secondary .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-secondary .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-secondary .select2-results__option--highlighted,.select2-secondary .select2-container--default .select2-results__option--highlighted{background-color:#b8c2cc;color:#2a2e30}.select2-container--default .select2-secondary .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-secondary .select2-results__option--highlighted[aria-selected]:hover,.select2-secondary .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-secondary .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#afbac6;color:#2a2e30}.select2-container--default .select2-secondary .select2-selection--multiple:focus,.select2-secondary .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice,.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#b8c2cc;border-color:#a9b5c1;color:#2a2e30}.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice__remove,.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-secondary.select2-container--focus .select2-selection--multiple,.select2-secondary .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-success+.select2-container--default.select2-container--focus .select2-selection--single,.select2-success+.select2-container--default.select2-container--open .select2-selection--single{border-color:#73e6b5}.select2-container--default .select2-success.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-success .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-success .select2-search--inline .select2-search__field:focus,.select2-success .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-success .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-success .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #73e6b5}.select2-container--default .select2-success .select2-results__option--highlighted,.select2-success .select2-container--default .select2-results__option--highlighted{background-color:#21b978;color:#fff}.select2-container--default .select2-success .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-success .select2-results__option--highlighted[aria-selected]:hover,.select2-success .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-success .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1fac70;color:#fff}.select2-container--default .select2-success .select2-selection--multiple:focus,.select2-success .select2-container--default .select2-selection--multiple:focus{border-color:#73e6b5}.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice,.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#21b978;border-color:#1da36a;color:#fff}.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice__remove,.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-success.select2-container--focus .select2-selection--multiple,.select2-success .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#73e6b5}.select2-info+.select2-container--default.select2-container--focus .select2-selection--single,.select2-info+.select2-container--default.select2-container--open .select2-selection--single{border-color:#a8c0e9}.select2-container--default .select2-info.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-info .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-info .select2-search--inline .select2-search__field:focus,.select2-info .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-info .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-info .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #a8c0e9}.select2-container--default .select2-info .select2-results__option--highlighted,.select2-info .select2-container--default .select2-results__option--highlighted{background-color:#4277cf;color:#fff}.select2-container--default .select2-info .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-info .select2-results__option--highlighted[aria-selected]:hover,.select2-info .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-info .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#366ecc;color:#fff}.select2-container--default .select2-info .select2-selection--multiple:focus,.select2-info .select2-container--default .select2-selection--multiple:focus{border-color:#a8c0e9}.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice,.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#4277cf;border-color:#3269c5;color:#fff}.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice__remove,.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-info.select2-container--focus .select2-selection--multiple,.select2-info .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#a8c0e9}.select2-warning+.select2-container--default.select2-container--focus .select2-selection--single,.select2-warning+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f2dcbc}.select2-container--default .select2-warning.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-warning .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-warning .select2-search--inline .select2-search__field:focus,.select2-warning .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-warning .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-warning .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f2dcbc}.select2-container--default .select2-warning .select2-results__option--highlighted,.select2-warning .select2-container--default .select2-results__option--highlighted{background-color:#dda451;color:#2a2e30}.select2-container--default .select2-warning .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-warning .select2-results__option--highlighted[aria-selected]:hover,.select2-warning .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-warning .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#da9d44;color:#2a2e30}.select2-container--default .select2-warning .select2-selection--multiple:focus,.select2-warning .select2-container--default .select2-selection--multiple:focus{border-color:#f2dcbc}.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice,.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#dda451;border-color:#d9993c;color:#2a2e30}.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice__remove,.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-warning.select2-container--focus .select2-selection--multiple,.select2-warning .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f2dcbc}.select2-danger+.select2-container--default.select2-container--focus .select2-selection--single,.select2-danger+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f8c6c6}.select2-container--default .select2-danger.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-danger .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-danger .select2-search--inline .select2-search__field:focus,.select2-danger .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-danger .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-danger .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f8c6c6}.select2-container--default .select2-danger .select2-results__option--highlighted,.select2-danger .select2-container--default .select2-results__option--highlighted{background-color:#ea5455;color:#fff}.select2-container--default .select2-danger .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-danger .select2-results__option--highlighted[aria-selected]:hover,.select2-danger .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-danger .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#e84647;color:#fff}.select2-container--default .select2-danger .select2-selection--multiple:focus,.select2-danger .select2-container--default .select2-selection--multiple:focus{border-color:#f8c6c6}.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice,.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ea5455;border-color:#e73d3e;color:#fff}.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice__remove,.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-danger.select2-container--focus .select2-selection--multiple,.select2-danger .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f8c6c6}.select2-light+.select2-container--default.select2-container--focus .select2-selection--single,.select2-light+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-light.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-light .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-light .select2-search--inline .select2-search__field:focus,.select2-light .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-light .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-light .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-light .select2-results__option--highlighted,.select2-light .select2-container--default .select2-results__option--highlighted{background-color:#f7f7f9;color:#2a2e30}.select2-container--default .select2-light .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-light .select2-results__option--highlighted[aria-selected]:hover,.select2-light .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-light .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#eeeef2;color:#2a2e30}.select2-container--default .select2-light .select2-selection--multiple:focus,.select2-light .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice,.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#f7f7f9;border-color:#e8e8ee;color:#2a2e30}.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice__remove,.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-light.select2-container--focus .select2-selection--multiple,.select2-light .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-dark+.select2-container--default.select2-container--focus .select2-selection--single,.select2-dark+.select2-container--default.select2-container--open .select2-selection--single{border-color:#586a79}.select2-container--default .select2-dark.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-dark .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-dark .select2-search--inline .select2-search__field:focus,.select2-dark .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-dark .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-dark .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #586a79}.select2-container--default .select2-dark .select2-results__option--highlighted,.select2-dark .select2-container--default .select2-results__option--highlighted{background-color:#22292f;color:#fff}.select2-container--default .select2-dark .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-dark .select2-results__option--highlighted[aria-selected]:hover,.select2-dark .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-dark .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1c2126;color:#fff}.select2-container--default .select2-dark .select2-selection--multiple:focus,.select2-dark .select2-container--default .select2-selection--multiple:focus{border-color:#586a79}.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice,.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#22292f;border-color:#171c20;color:#fff}.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice__remove,.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-dark.select2-container--focus .select2-selection--multiple,.select2-dark .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#586a79}.select2-lightblue+.select2-container--default.select2-container--focus .select2-selection--single,.select2-lightblue+.select2-container--default.select2-container--open .select2-selection--single{border-color:#99c5de}.select2-container--default .select2-lightblue.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lightblue .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lightblue .select2-search--inline .select2-search__field:focus,.select2-lightblue .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-lightblue .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-lightblue .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #99c5de}.select2-container--default .select2-lightblue .select2-results__option--highlighted,.select2-lightblue .select2-container--default .select2-results__option--highlighted{background-color:#3c8dbc;color:#fff}.select2-container--default .select2-lightblue .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-lightblue .select2-results__option--highlighted[aria-selected]:hover,.select2-lightblue .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-lightblue .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#3884b0;color:#fff}.select2-container--default .select2-lightblue .select2-selection--multiple:focus,.select2-lightblue .select2-container--default .select2-selection--multiple:focus{border-color:#99c5de}.select2-container--default .select2-lightblue .select2-selection--multiple .select2-selection__choice,.select2-lightblue .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;color:#fff}.select2-container--default .select2-lightblue .select2-selection--multiple .select2-selection__choice__remove,.select2-lightblue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-lightblue .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-lightblue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-lightblue.select2-container--focus .select2-selection--multiple,.select2-lightblue .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#99c5de}.select2-navy+.select2-container--default.select2-container--focus .select2-selection--single,.select2-navy+.select2-container--default.select2-container--open .select2-selection--single{border-color:#005ebf}.select2-container--default .select2-navy.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-navy .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-navy .select2-search--inline .select2-search__field:focus,.select2-navy .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-navy .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-navy .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #005ebf}.select2-container--default .select2-navy .select2-results__option--highlighted,.select2-navy .select2-container--default .select2-results__option--highlighted{background-color:#001f3f;color:#fff}.select2-container--default .select2-navy .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-navy .select2-results__option--highlighted[aria-selected]:hover,.select2-navy .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-navy .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#001730;color:#fff}.select2-container--default .select2-navy .select2-selection--multiple:focus,.select2-navy .select2-container--default .select2-selection--multiple:focus{border-color:#005ebf}.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice,.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#001f3f;border-color:#001226;color:#fff}.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice__remove,.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-navy.select2-container--focus .select2-selection--multiple,.select2-navy .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#005ebf}.select2-olive+.select2-container--default.select2-container--focus .select2-selection--single,.select2-olive+.select2-container--default.select2-container--open .select2-selection--single{border-color:#87cfaf}.select2-container--default .select2-olive.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-olive .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-olive .select2-search--inline .select2-search__field:focus,.select2-olive .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-olive .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-olive .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #87cfaf}.select2-container--default .select2-olive .select2-results__option--highlighted,.select2-olive .select2-container--default .select2-results__option--highlighted{background-color:#3d9970;color:#fff}.select2-container--default .select2-olive .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-olive .select2-results__option--highlighted[aria-selected]:hover,.select2-olive .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-olive .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#398e68;color:#fff}.select2-container--default .select2-olive .select2-selection--multiple:focus,.select2-olive .select2-container--default .select2-selection--multiple:focus{border-color:#87cfaf}.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice,.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3d9970;border-color:#368763;color:#fff}.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice__remove,.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-olive.select2-container--focus .select2-selection--multiple,.select2-olive .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#87cfaf}.select2-lime+.select2-container--default.select2-container--focus .select2-selection--single,.select2-lime+.select2-container--default.select2-container--open .select2-selection--single{border-color:#81ffb8}.select2-container--default .select2-lime.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lime .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lime .select2-search--inline .select2-search__field:focus,.select2-lime .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-lime .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-lime .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #81ffb8}.select2-container--default .select2-lime .select2-results__option--highlighted,.select2-lime .select2-container--default .select2-results__option--highlighted{background-color:#01ff70;color:#2a2e30}.select2-container--default .select2-lime .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-lime .select2-results__option--highlighted[aria-selected]:hover,.select2-lime .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-lime .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#00f169;color:#2a2e30}.select2-container--default .select2-lime .select2-selection--multiple:focus,.select2-lime .select2-container--default .select2-selection--multiple:focus{border-color:#81ffb8}.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice,.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#01ff70;border-color:#00e765;color:#2a2e30}.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice__remove,.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-lime.select2-container--focus .select2-selection--multiple,.select2-lime .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#81ffb8}.select2-fuchsia+.select2-container--default.select2-container--focus .select2-selection--single,.select2-fuchsia+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f88adf}.select2-container--default .select2-fuchsia.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-fuchsia .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-fuchsia .select2-search--inline .select2-search__field:focus,.select2-fuchsia .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-fuchsia .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-fuchsia .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f88adf}.select2-container--default .select2-fuchsia .select2-results__option--highlighted,.select2-fuchsia .select2-container--default .select2-results__option--highlighted{background-color:#f012be;color:#fff}.select2-container--default .select2-fuchsia .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-fuchsia .select2-results__option--highlighted[aria-selected]:hover,.select2-fuchsia .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-fuchsia .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#e40eb4;color:#fff}.select2-container--default .select2-fuchsia .select2-selection--multiple:focus,.select2-fuchsia .select2-container--default .select2-selection--multiple:focus{border-color:#f88adf}.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice,.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#f012be;border-color:#db0ead;color:#fff}.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice__remove,.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-fuchsia.select2-container--focus .select2-selection--multiple,.select2-fuchsia .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f88adf}.select2-maroon+.select2-container--default.select2-container--focus .select2-selection--single,.select2-maroon+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f083ab}.select2-container--default .select2-maroon.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-maroon .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-maroon .select2-search--inline .select2-search__field:focus,.select2-maroon .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-maroon .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-maroon .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f083ab}.select2-container--default .select2-maroon .select2-results__option--highlighted,.select2-maroon .select2-container--default .select2-results__option--highlighted{background-color:#d81b60;color:#fff}.select2-container--default .select2-maroon .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-maroon .select2-results__option--highlighted[aria-selected]:hover,.select2-maroon .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-maroon .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#ca195a;color:#fff}.select2-container--default .select2-maroon .select2-selection--multiple:focus,.select2-maroon .select2-container--default .select2-selection--multiple:focus{border-color:#f083ab}.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice,.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#d81b60;border-color:#c11856;color:#fff}.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice__remove,.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-maroon.select2-container--focus .select2-selection--multiple,.select2-maroon .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f083ab}.select2-blue+.select2-container--default.select2-container--focus .select2-selection--single,.select2-blue+.select2-container--default.select2-container--open .select2-selection--single{border-color:#9ac4eb}.select2-blue .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-blue .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-blue .select2-container--default .select2-search--inline .select2-search__field:focus,.select2-container--default .select2-blue.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-blue .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-blue .select2-search--inline .select2-search__field:focus{border:1px solid #9ac4eb}.select2-blue .select2-container--default .select2-results__option--highlighted,.select2-container--default .select2-blue .select2-results__option--highlighted{background-color:#3085d6;color:#fff}.select2-blue .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-blue .select2-container--default .select2-results__option--highlighted[aria-selected]:hover,.select2-container--default .select2-blue .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-blue .select2-results__option--highlighted[aria-selected]:hover{background-color:#297dce;color:#fff}.select2-blue .select2-container--default .select2-selection--multiple:focus,.select2-container--default .select2-blue .select2-selection--multiple:focus{border-color:#9ac4eb}.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice,.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice{background-color:#3085d6;border-color:#2778c5;color:#fff}.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove,.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-blue .select2-container--default.select2-container--focus .select2-selection--multiple,.select2-container--default .select2-blue.select2-container--focus .select2-selection--multiple{border-color:#9ac4eb}.select2-indigo+.select2-container--default.select2-container--focus .select2-selection--single,.select2-indigo+.select2-container--default.select2-container--open .select2-selection--single{border-color:#bac1e7}.select2-container--default .select2-indigo.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-indigo .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-indigo .select2-search--inline .select2-search__field:focus,.select2-indigo .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-indigo .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-indigo .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #bac1e7}.select2-container--default .select2-indigo .select2-results__option--highlighted,.select2-indigo .select2-container--default .select2-results__option--highlighted{background-color:#5c6bc6;color:#fff}.select2-container--default .select2-indigo .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-indigo .select2-results__option--highlighted[aria-selected]:hover,.select2-indigo .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-indigo .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#5161c2;color:#fff}.select2-container--default .select2-indigo .select2-selection--multiple:focus,.select2-indigo .select2-container--default .select2-selection--multiple:focus{border-color:#bac1e7}.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice,.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#5c6bc6;border-color:#495abf;color:#fff}.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice__remove,.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-indigo.select2-container--focus .select2-selection--multiple,.select2-indigo .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#bac1e7}.select2-purple+.select2-container--default.select2-container--focus .select2-selection--single,.select2-purple+.select2-container--default.select2-container--open .select2-selection--single{border-color:#b8a2e0}.select2-container--default .select2-purple.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-purple .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-purple .select2-search--inline .select2-search__field:focus,.select2-purple .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-purple .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-purple .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #b8a2e0}.select2-container--default .select2-purple .select2-results__option--highlighted,.select2-purple .select2-container--default .select2-results__option--highlighted{background-color:#6f42c1;color:#fff}.select2-container--default .select2-purple .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-purple .select2-results__option--highlighted[aria-selected]:hover,.select2-purple .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-purple .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#683cb8;color:#fff}.select2-container--default .select2-purple .select2-selection--multiple:focus,.select2-purple .select2-container--default .select2-selection--multiple:focus{border-color:#b8a2e0}.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice,.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#6f42c1;border-color:#643ab0;color:#fff}.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice__remove,.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-purple.select2-container--focus .select2-selection--multiple,.select2-purple .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#b8a2e0}.select2-pink+.select2-container--default.select2-container--focus .select2-selection--single,.select2-pink+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-pink.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-pink .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-pink .select2-search--inline .select2-search__field:focus,.select2-pink .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-pink .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-pink .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-pink .select2-results__option--highlighted,.select2-pink .select2-container--default .select2-results__option--highlighted{background-color:#ff8acc;color:#2a2e30}.select2-container--default .select2-pink .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-pink .select2-results__option--highlighted[aria-selected]:hover,.select2-pink .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-pink .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#ff7bc5;color:#2a2e30}.select2-container--default .select2-pink .select2-selection--multiple:focus,.select2-pink .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice,.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ff8acc;border-color:#ff71c1;color:#2a2e30}.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice__remove,.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-pink.select2-container--focus .select2-selection--multiple,.select2-pink .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-red+.select2-container--default.select2-container--focus .select2-selection--single,.select2-red+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f8c6c6}.select2-container--default .select2-red.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-red .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-red .select2-search--inline .select2-search__field:focus,.select2-red .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-red .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-red .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f8c6c6}.select2-container--default .select2-red .select2-results__option--highlighted,.select2-red .select2-container--default .select2-results__option--highlighted{background-color:#ea5455;color:#fff}.select2-container--default .select2-red .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-red .select2-results__option--highlighted[aria-selected]:hover,.select2-red .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-red .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#e84647;color:#fff}.select2-container--default .select2-red .select2-selection--multiple:focus,.select2-red .select2-container--default .select2-selection--multiple:focus{border-color:#f8c6c6}.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice,.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ea5455;border-color:#e73d3e;color:#fff}.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice__remove,.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-red.select2-container--focus .select2-selection--multiple,.select2-red .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f8c6c6}.select2-orange+.select2-container--default.select2-container--focus .select2-selection--single,.select2-orange+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f2dcbc}.select2-container--default .select2-orange.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-orange .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-orange .select2-search--inline .select2-search__field:focus,.select2-orange .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-orange .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-orange .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f2dcbc}.select2-container--default .select2-orange .select2-results__option--highlighted,.select2-orange .select2-container--default .select2-results__option--highlighted{background-color:#dda451;color:#2a2e30}.select2-container--default .select2-orange .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-orange .select2-results__option--highlighted[aria-selected]:hover,.select2-orange .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-orange .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#da9d44;color:#2a2e30}.select2-container--default .select2-orange .select2-selection--multiple:focus,.select2-orange .select2-container--default .select2-selection--multiple:focus{border-color:#f2dcbc}.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice,.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#dda451;border-color:#d9993c;color:#2a2e30}.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice__remove,.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-orange.select2-container--focus .select2-selection--multiple,.select2-orange .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f2dcbc}.select2-yellow+.select2-container--default.select2-container--focus .select2-selection--single,.select2-yellow+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f8e283}.select2-container--default .select2-yellow.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-yellow .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-yellow .select2-search--inline .select2-search__field:focus,.select2-yellow .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-yellow .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-yellow .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f8e283}.select2-container--default .select2-yellow .select2-results__option--highlighted,.select2-yellow .select2-container--default .select2-results__option--highlighted{background-color:#edc30e;color:#2a2e30}.select2-container--default .select2-yellow .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-yellow .select2-results__option--highlighted[aria-selected]:hover,.select2-yellow .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-yellow .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#dfb70d;color:#2a2e30}.select2-container--default .select2-yellow .select2-selection--multiple:focus,.select2-yellow .select2-container--default .select2-selection--multiple:focus{border-color:#f8e283}.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice,.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#edc30e;border-color:#d5af0d;color:#2a2e30}.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice__remove,.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-yellow.select2-container--focus .select2-selection--multiple,.select2-yellow .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f8e283}.select2-green+.select2-container--default.select2-container--focus .select2-selection--single,.select2-green+.select2-container--default.select2-container--open .select2-selection--single{border-color:#73e6b5}.select2-container--default .select2-green.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-green .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-green .select2-search--inline .select2-search__field:focus,.select2-green .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-green .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-green .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #73e6b5}.select2-container--default .select2-green .select2-results__option--highlighted,.select2-green .select2-container--default .select2-results__option--highlighted{background-color:#21b978;color:#fff}.select2-container--default .select2-green .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-green .select2-results__option--highlighted[aria-selected]:hover,.select2-green .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-green .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1fac70;color:#fff}.select2-container--default .select2-green .select2-selection--multiple:focus,.select2-green .select2-container--default .select2-selection--multiple:focus{border-color:#73e6b5}.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice,.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#21b978;border-color:#1da36a;color:#fff}.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice__remove,.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-green.select2-container--focus .select2-selection--multiple,.select2-green .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#73e6b5}.select2-teal+.select2-container--default.select2-container--focus .select2-selection--single,.select2-teal+.select2-container--default.select2-container--open .select2-selection--single{border-color:#7eeaca}.select2-container--default .select2-teal.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-teal .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-teal .select2-search--inline .select2-search__field:focus,.select2-teal .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-teal .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-teal .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #7eeaca}.select2-container--default .select2-teal .select2-results__option--highlighted,.select2-teal .select2-container--default .select2-results__option--highlighted{background-color:#20c997;color:#fff}.select2-container--default .select2-teal .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-teal .select2-results__option--highlighted[aria-selected]:hover,.select2-teal .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-teal .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1ebc8d;color:#fff}.select2-container--default .select2-teal .select2-selection--multiple:focus,.select2-teal .select2-container--default .select2-selection--multiple:focus{border-color:#7eeaca}.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice,.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#20c997;border-color:#1cb386;color:#fff}.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice__remove,.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-teal.select2-container--focus .select2-selection--multiple,.select2-teal .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#7eeaca}.select2-cyan+.select2-container--default.select2-container--focus .select2-selection--single,.select2-cyan+.select2-container--default.select2-container--open .select2-selection--single{border-color:#dedbfb}.select2-container--default .select2-cyan.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-cyan .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-cyan .select2-search--inline .select2-search__field:focus,.select2-cyan .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-cyan .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-cyan .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #dedbfb}.select2-container--default .select2-cyan .select2-results__option--highlighted,.select2-cyan .select2-container--default .select2-results__option--highlighted{background-color:#7367f0;color:#fff}.select2-container--default .select2-cyan .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-cyan .select2-results__option--highlighted[aria-selected]:hover,.select2-cyan .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-cyan .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#6659ef;color:#fff}.select2-container--default .select2-cyan .select2-selection--multiple:focus,.select2-cyan .select2-container--default .select2-selection--multiple:focus{border-color:#dedbfb}.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice,.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#7367f0;border-color:#5e50ee;color:#fff}.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice__remove,.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-cyan.select2-container--focus .select2-selection--multiple,.select2-cyan .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#dedbfb}.select2-white+.select2-container--default.select2-container--focus .select2-selection--single,.select2-white+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-white.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-white .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-white .select2-search--inline .select2-search__field:focus,.select2-white .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-white .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-white .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-white .select2-results__option--highlighted,.select2-white .select2-container--default .select2-results__option--highlighted{background-color:#fff;color:#2a2e30}.select2-container--default .select2-white .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-white .select2-results__option--highlighted[aria-selected]:hover,.select2-white .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-white .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#f7f7f7;color:#2a2e30}.select2-container--default .select2-white .select2-selection--multiple:focus,.select2-white .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice,.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#fff;border-color:#f2f2f2;color:#2a2e30}.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice__remove,.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-white.select2-container--focus .select2-selection--multiple,.select2-gray+.select2-container--default.select2-container--focus .select2-selection--single,.select2-gray+.select2-container--default.select2-container--open .select2-selection--single,.select2-white .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-container--default .select2-gray.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray .select2-search--inline .select2-search__field:focus,.select2-gray .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-gray .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-gray .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-gray .select2-results__option--highlighted,.select2-gray .select2-container--default .select2-results__option--highlighted{background-color:#b8c2cc;color:#2a2e30}.select2-container--default .select2-gray .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-gray .select2-results__option--highlighted[aria-selected]:hover,.select2-gray .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-gray .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#afbac6;color:#2a2e30}.select2-container--default .select2-gray .select2-selection--multiple:focus,.select2-gray .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice,.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#b8c2cc;border-color:#a9b5c1;color:#2a2e30}.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice__remove,.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-gray.select2-container--focus .select2-selection--multiple,.select2-gray .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-gray-dark+.select2-container--default.select2-container--focus .select2-selection--single,.select2-gray-dark+.select2-container--default.select2-container--open .select2-selection--single{border-color:#5e5e5e}.select2-container--default .select2-gray-dark.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray-dark .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray-dark .select2-search--inline .select2-search__field:focus,.select2-gray-dark .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-gray-dark .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-gray-dark .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #5e5e5e}.select2-container--default .select2-gray-dark .select2-results__option--highlighted,.select2-gray-dark .select2-container--default .select2-results__option--highlighted{background-color:#1e1e1e;color:#fff}.select2-container--default .select2-gray-dark .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-gray-dark .select2-results__option--highlighted[aria-selected]:hover,.select2-gray-dark .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-gray-dark .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#161616;color:#fff}.select2-container--default .select2-gray-dark .select2-selection--multiple:focus,.select2-gray-dark .select2-container--default .select2-selection--multiple:focus{border-color:#5e5e5e}.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice,.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#1e1e1e;border-color:#111;color:#fff}.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice__remove,.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-gray-dark.select2-container--focus .select2-selection--multiple,.select2-gray-dark .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#5e5e5e}.slider .tooltip.in{opacity:.9}.slider.slider-vertical{height:100%}.slider.slider-horizontal{width:100%}.slider-primary .slider .slider-selection{background:#62a8ea}.slider-secondary .slider .slider-selection{background:#b8c2cc}.slider-success .slider .slider-selection{background:#21b978}.slider-info .slider .slider-selection{background:#4277cf}.slider-warning .slider .slider-selection{background:#dda451}.slider-danger .slider .slider-selection{background:#ea5455}.slider-light .slider .slider-selection{background:#f7f7f9}.slider-dark .slider .slider-selection{background:#22292f}.slider-lightblue .slider .slider-selection{background:#3c8dbc}.slider-navy .slider .slider-selection{background:#001f3f}.slider-olive .slider .slider-selection{background:#3d9970}.slider-lime .slider .slider-selection{background:#01ff70}.slider-fuchsia .slider .slider-selection{background:#f012be}.slider-maroon .slider .slider-selection{background:#d81b60}.slider-blue .slider .slider-selection{background:#3085d6}.slider-indigo .slider .slider-selection{background:#5c6bc6}.slider-purple .slider .slider-selection{background:#6f42c1}.slider-pink .slider .slider-selection{background:#ff8acc}.slider-red .slider .slider-selection{background:#ea5455}.slider-orange .slider .slider-selection{background:#dda451}.slider-yellow .slider .slider-selection{background:#edc30e}.slider-green .slider .slider-selection{background:#21b978}.slider-teal .slider .slider-selection{background:#20c997}.slider-cyan .slider .slider-selection{background:#7367f0}.slider-white .slider .slider-selection{background:#fff}.slider-gray .slider .slider-selection{background:#b8c2cc}.slider-gray-dark .slider .slider-selection{background:#1e1e1e}.mapael .map{position:relative}.mapael .mapTooltip{font-family:Montserrat,Helvetica,Arial,serif;font-style:normal;font-weight:400;line-height:1.45;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;border-radius:.5rem;font-size:1rem;background-color:#22292f;color:#fff;display:block;max-width:200px;padding:.25rem .5rem;position:absolute;text-align:center;word-wrap:break-word;z-index:1070}.mapael .myLegend{background-color:#babfc7;border:1px solid #adb5bd;padding:10px;width:600px}.mapael .zoomButton{background-color:#babfc7;border:1px solid #ddd;border-radius:.42rem;color:#444;cursor:pointer;font-weight:700;height:16px;left:10px;line-height:14px;padding-left:1px;position:absolute;text-align:center;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:16px}.mapael .zoomButton.hover,.mapael .zoomButton:active,.mapael .zoomButton:hover{background-color:#acb2bc;color:#2b2b2b}.mapael .zoomReset{line-height:12px;top:10px}.mapael .zoomIn{top:30px}.mapael .zoomOut{top:50px}.jqvmap-zoomin,.jqvmap-zoomout{background-color:#babfc7;border:1px solid #ddd;border-radius:.42rem;color:#444;height:15px;width:15px}.jqvmap-zoomin.hover,.jqvmap-zoomin:active,.jqvmap-zoomin:hover,.jqvmap-zoomout.hover,.jqvmap-zoomout:active,.jqvmap-zoomout:hover{background-color:#acb2bc;color:#2b2b2b}.pace{z-index:1048}.pace .pace-progress{z-index:1049}.pace .pace-activity{z-index:1050}.pace-primary .pace .pace-progress{background:#62a8ea}.pace-barber-shop-primary .pace{background:#2a2e30}.pace-barber-shop-primary .pace .pace-progress{background:#62a8ea}.pace-barber-shop-primary .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-primary .pace .pace-progress:after{color:rgba(98,168,234,.2)}.pace-bounce-primary .pace .pace-activity{background:#62a8ea}.pace-center-atom-primary .pace-progress{height:100px;width:80px}.pace-center-atom-primary .pace-progress:before{background:#62a8ea;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-primary .pace-activity,.pace-center-atom-primary .pace-activity:after,.pace-center-atom-primary .pace-activity:before{border-color:#62a8ea}.pace-center-circle-primary .pace .pace-progress{background:rgba(98,168,234,.8);color:#2a2e30}.pace-center-radar-primary .pace .pace-activity,.pace-center-radar-primary .pace .pace-activity:before{border-color:#62a8ea transparent transparent}.pace-center-simple-primary .pace{background:#2a2e30;border-color:#62a8ea}.pace-center-simple-primary .pace .pace-progress{background:#62a8ea}.pace-material-primary .pace{color:#62a8ea}.pace-corner-indicator-primary .pace .pace-activity{background:#62a8ea}.pace-corner-indicator-primary .pace .pace-activity:after,.pace-corner-indicator-primary .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-primary .pace .pace-activity:before{border-right-color:rgba(98,168,234,.2);border-left-color:rgba(98,168,234,.2)}.pace-corner-indicator-primary .pace .pace-activity:after{border-top-color:rgba(98,168,234,.2);border-bottom-color:rgba(98,168,234,.2)}.pace-fill-left-primary .pace .pace-progress{background-color:rgba(98,168,234,.2)}.pace-flash-primary .pace .pace-progress{background:#62a8ea}.pace-flash-primary .pace .pace-progress-inner{box-shadow:0 0 10px #62a8ea,0 0 5px #62a8ea}.pace-flash-primary .pace .pace-activity{border-top-color:#62a8ea;border-left-color:#62a8ea}.pace-loading-bar-primary .pace .pace-progress{background:#62a8ea;color:#62a8ea;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-primary .pace .pace-activity{box-shadow:inset 0 0 0 2px #62a8ea,inset 0 0 0 7px #2a2e30}.pace-mac-osx-primary .pace .pace-progress{background-color:#62a8ea;box-shadow:inset -1px 0 #62a8ea,inset 0 -1px #62a8ea,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-primary .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-primary .pace-progress{color:#62a8ea}.pace-secondary .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-secondary .pace{background:#2a2e30}.pace-barber-shop-secondary .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-secondary .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-secondary .pace .pace-progress:after{color:rgba(184,194,204,.2)}.pace-bounce-secondary .pace .pace-activity{background:#b8c2cc}.pace-center-atom-secondary .pace-progress{height:100px;width:80px}.pace-center-atom-secondary .pace-progress:before{background:#b8c2cc;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-secondary .pace-activity,.pace-center-atom-secondary .pace-activity:after,.pace-center-atom-secondary .pace-activity:before{border-color:#b8c2cc}.pace-center-circle-secondary .pace .pace-progress{background:rgba(184,194,204,.8);color:#2a2e30}.pace-center-radar-secondary .pace .pace-activity,.pace-center-radar-secondary .pace .pace-activity:before{border-color:#b8c2cc transparent transparent}.pace-center-simple-secondary .pace{background:#2a2e30;border-color:#b8c2cc}.pace-center-simple-secondary .pace .pace-progress{background:#b8c2cc}.pace-material-secondary .pace{color:#b8c2cc}.pace-corner-indicator-secondary .pace .pace-activity{background:#b8c2cc}.pace-corner-indicator-secondary .pace .pace-activity:after,.pace-corner-indicator-secondary .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-secondary .pace .pace-activity:before{border-right-color:rgba(184,194,204,.2);border-left-color:rgba(184,194,204,.2)}.pace-corner-indicator-secondary .pace .pace-activity:after{border-top-color:rgba(184,194,204,.2);border-bottom-color:rgba(184,194,204,.2)}.pace-fill-left-secondary .pace .pace-progress{background-color:rgba(184,194,204,.2)}.pace-flash-secondary .pace .pace-progress{background:#b8c2cc}.pace-flash-secondary .pace .pace-progress-inner{box-shadow:0 0 10px #b8c2cc,0 0 5px #b8c2cc}.pace-flash-secondary .pace .pace-activity{border-top-color:#b8c2cc;border-left-color:#b8c2cc}.pace-loading-bar-secondary .pace .pace-progress{background:#b8c2cc;color:#b8c2cc;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-secondary .pace .pace-activity{box-shadow:inset 0 0 0 2px #b8c2cc,inset 0 0 0 7px #2a2e30}.pace-mac-osx-secondary .pace .pace-progress{background-color:#b8c2cc;box-shadow:inset -1px 0 #b8c2cc,inset 0 -1px #b8c2cc,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-secondary .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-secondary .pace-progress{color:#b8c2cc}.pace-success .pace .pace-progress{background:#21b978}.pace-barber-shop-success .pace{background:#fff}.pace-barber-shop-success .pace .pace-progress{background:#21b978}.pace-barber-shop-success .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-success .pace .pace-progress:after{color:rgba(33,185,120,.2)}.pace-bounce-success .pace .pace-activity{background:#21b978}.pace-center-atom-success .pace-progress{height:100px;width:80px}.pace-center-atom-success .pace-progress:before{background:#21b978;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-success .pace-activity,.pace-center-atom-success .pace-activity:after,.pace-center-atom-success .pace-activity:before{border-color:#21b978}.pace-center-circle-success .pace .pace-progress{background:rgba(33,185,120,.8);color:#fff}.pace-center-radar-success .pace .pace-activity,.pace-center-radar-success .pace .pace-activity:before{border-color:#21b978 transparent transparent}.pace-center-simple-success .pace{background:#fff;border-color:#21b978}.pace-center-simple-success .pace .pace-progress{background:#21b978}.pace-material-success .pace{color:#21b978}.pace-corner-indicator-success .pace .pace-activity{background:#21b978}.pace-corner-indicator-success .pace .pace-activity:after,.pace-corner-indicator-success .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-success .pace .pace-activity:before{border-right-color:rgba(33,185,120,.2);border-left-color:rgba(33,185,120,.2)}.pace-corner-indicator-success .pace .pace-activity:after{border-top-color:rgba(33,185,120,.2);border-bottom-color:rgba(33,185,120,.2)}.pace-fill-left-success .pace .pace-progress{background-color:rgba(33,185,120,.2)}.pace-flash-success .pace .pace-progress{background:#21b978}.pace-flash-success .pace .pace-progress-inner{box-shadow:0 0 10px #21b978,0 0 5px #21b978}.pace-flash-success .pace .pace-activity{border-top-color:#21b978;border-left-color:#21b978}.pace-loading-bar-success .pace .pace-progress{background:#21b978;color:#21b978;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-success .pace .pace-activity{box-shadow:inset 0 0 0 2px #21b978,inset 0 0 0 7px #fff}.pace-mac-osx-success .pace .pace-progress{background-color:#21b978;box-shadow:inset -1px 0 #21b978,inset 0 -1px #21b978,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-success .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-success .pace-progress{color:#21b978}.pace-info .pace .pace-progress{background:#4277cf}.pace-barber-shop-info .pace{background:#fff}.pace-barber-shop-info .pace .pace-progress{background:#4277cf}.pace-barber-shop-info .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-info .pace .pace-progress:after{color:rgba(66,119,207,.2)}.pace-bounce-info .pace .pace-activity{background:#4277cf}.pace-center-atom-info .pace-progress{height:100px;width:80px}.pace-center-atom-info .pace-progress:before{background:#4277cf;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-info .pace-activity,.pace-center-atom-info .pace-activity:after,.pace-center-atom-info .pace-activity:before{border-color:#4277cf}.pace-center-circle-info .pace .pace-progress{background:rgba(66,119,207,.8);color:#fff}.pace-center-radar-info .pace .pace-activity,.pace-center-radar-info .pace .pace-activity:before{border-color:#4277cf transparent transparent}.pace-center-simple-info .pace{background:#fff;border-color:#4277cf}.pace-center-simple-info .pace .pace-progress{background:#4277cf}.pace-material-info .pace{color:#4277cf}.pace-corner-indicator-info .pace .pace-activity{background:#4277cf}.pace-corner-indicator-info .pace .pace-activity:after,.pace-corner-indicator-info .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-info .pace .pace-activity:before{border-right-color:rgba(66,119,207,.2);border-left-color:rgba(66,119,207,.2)}.pace-corner-indicator-info .pace .pace-activity:after{border-top-color:rgba(66,119,207,.2);border-bottom-color:rgba(66,119,207,.2)}.pace-fill-left-info .pace .pace-progress{background-color:rgba(66,119,207,.2)}.pace-flash-info .pace .pace-progress{background:#4277cf}.pace-flash-info .pace .pace-progress-inner{box-shadow:0 0 10px #4277cf,0 0 5px #4277cf}.pace-flash-info .pace .pace-activity{border-top-color:#4277cf;border-left-color:#4277cf}.pace-loading-bar-info .pace .pace-progress{background:#4277cf;color:#4277cf;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-info .pace .pace-activity{box-shadow:inset 0 0 0 2px #4277cf,inset 0 0 0 7px #fff}.pace-mac-osx-info .pace .pace-progress{background-color:#4277cf;box-shadow:inset -1px 0 #4277cf,inset 0 -1px #4277cf,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-info .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-info .pace-progress{color:#4277cf}.pace-warning .pace .pace-progress{background:#dda451}.pace-barber-shop-warning .pace{background:#2a2e30}.pace-barber-shop-warning .pace .pace-progress{background:#dda451}.pace-barber-shop-warning .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-warning .pace .pace-progress:after{color:rgba(221,164,81,.2)}.pace-bounce-warning .pace .pace-activity{background:#dda451}.pace-center-atom-warning .pace-progress{height:100px;width:80px}.pace-center-atom-warning .pace-progress:before{background:#dda451;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-warning .pace-activity,.pace-center-atom-warning .pace-activity:after,.pace-center-atom-warning .pace-activity:before{border-color:#dda451}.pace-center-circle-warning .pace .pace-progress{background:rgba(221,164,81,.8);color:#2a2e30}.pace-center-radar-warning .pace .pace-activity,.pace-center-radar-warning .pace .pace-activity:before{border-color:#dda451 transparent transparent}.pace-center-simple-warning .pace{background:#2a2e30;border-color:#dda451}.pace-center-simple-warning .pace .pace-progress{background:#dda451}.pace-material-warning .pace{color:#dda451}.pace-corner-indicator-warning .pace .pace-activity{background:#dda451}.pace-corner-indicator-warning .pace .pace-activity:after,.pace-corner-indicator-warning .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-warning .pace .pace-activity:before{border-right-color:rgba(221,164,81,.2);border-left-color:rgba(221,164,81,.2)}.pace-corner-indicator-warning .pace .pace-activity:after{border-top-color:rgba(221,164,81,.2);border-bottom-color:rgba(221,164,81,.2)}.pace-fill-left-warning .pace .pace-progress{background-color:rgba(221,164,81,.2)}.pace-flash-warning .pace .pace-progress{background:#dda451}.pace-flash-warning .pace .pace-progress-inner{box-shadow:0 0 10px #dda451,0 0 5px #dda451}.pace-flash-warning .pace .pace-activity{border-top-color:#dda451;border-left-color:#dda451}.pace-loading-bar-warning .pace .pace-progress{background:#dda451;color:#dda451;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-warning .pace .pace-activity{box-shadow:inset 0 0 0 2px #dda451,inset 0 0 0 7px #2a2e30}.pace-mac-osx-warning .pace .pace-progress{background-color:#dda451;box-shadow:inset -1px 0 #dda451,inset 0 -1px #dda451,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-warning .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-warning .pace-progress{color:#dda451}.pace-danger .pace .pace-progress{background:#ea5455}.pace-barber-shop-danger .pace{background:#fff}.pace-barber-shop-danger .pace .pace-progress{background:#ea5455}.pace-barber-shop-danger .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-danger .pace .pace-progress:after{color:rgba(234,84,85,.2)}.pace-bounce-danger .pace .pace-activity{background:#ea5455}.pace-center-atom-danger .pace-progress{height:100px;width:80px}.pace-center-atom-danger .pace-progress:before{background:#ea5455;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-danger .pace-activity,.pace-center-atom-danger .pace-activity:after,.pace-center-atom-danger .pace-activity:before{border-color:#ea5455}.pace-center-circle-danger .pace .pace-progress{background:rgba(234,84,85,.8);color:#fff}.pace-center-radar-danger .pace .pace-activity,.pace-center-radar-danger .pace .pace-activity:before{border-color:#ea5455 transparent transparent}.pace-center-simple-danger .pace{background:#fff;border-color:#ea5455}.pace-center-simple-danger .pace .pace-progress{background:#ea5455}.pace-material-danger .pace{color:#ea5455}.pace-corner-indicator-danger .pace .pace-activity{background:#ea5455}.pace-corner-indicator-danger .pace .pace-activity:after,.pace-corner-indicator-danger .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-danger .pace .pace-activity:before{border-right-color:rgba(234,84,85,.2);border-left-color:rgba(234,84,85,.2)}.pace-corner-indicator-danger .pace .pace-activity:after{border-top-color:rgba(234,84,85,.2);border-bottom-color:rgba(234,84,85,.2)}.pace-fill-left-danger .pace .pace-progress{background-color:rgba(234,84,85,.2)}.pace-flash-danger .pace .pace-progress{background:#ea5455}.pace-flash-danger .pace .pace-progress-inner{box-shadow:0 0 10px #ea5455,0 0 5px #ea5455}.pace-flash-danger .pace .pace-activity{border-top-color:#ea5455;border-left-color:#ea5455}.pace-loading-bar-danger .pace .pace-progress{background:#ea5455;color:#ea5455;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-danger .pace .pace-activity{box-shadow:inset 0 0 0 2px #ea5455,inset 0 0 0 7px #fff}.pace-mac-osx-danger .pace .pace-progress{background-color:#ea5455;box-shadow:inset -1px 0 #ea5455,inset 0 -1px #ea5455,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-danger .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-danger .pace-progress{color:#ea5455}.pace-light .pace .pace-progress{background:#f7f7f9}.pace-barber-shop-light .pace{background:#2a2e30}.pace-barber-shop-light .pace .pace-progress{background:#f7f7f9}.pace-barber-shop-light .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-light .pace .pace-progress:after{color:rgba(247,247,249,.2)}.pace-bounce-light .pace .pace-activity{background:#f7f7f9}.pace-center-atom-light .pace-progress{height:100px;width:80px}.pace-center-atom-light .pace-progress:before{background:#f7f7f9;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-light .pace-activity,.pace-center-atom-light .pace-activity:after,.pace-center-atom-light .pace-activity:before{border-color:#f7f7f9}.pace-center-circle-light .pace .pace-progress{background:rgba(247,247,249,.8);color:#2a2e30}.pace-center-radar-light .pace .pace-activity,.pace-center-radar-light .pace .pace-activity:before{border-color:#f7f7f9 transparent transparent}.pace-center-simple-light .pace{background:#2a2e30;border-color:#f7f7f9}.pace-center-simple-light .pace .pace-progress{background:#f7f7f9}.pace-material-light .pace{color:#f7f7f9}.pace-corner-indicator-light .pace .pace-activity{background:#f7f7f9}.pace-corner-indicator-light .pace .pace-activity:after,.pace-corner-indicator-light .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-light .pace .pace-activity:before{border-right-color:rgba(247,247,249,.2);border-left-color:rgba(247,247,249,.2)}.pace-corner-indicator-light .pace .pace-activity:after{border-top-color:rgba(247,247,249,.2);border-bottom-color:rgba(247,247,249,.2)}.pace-fill-left-light .pace .pace-progress{background-color:rgba(247,247,249,.2)}.pace-flash-light .pace .pace-progress{background:#f7f7f9}.pace-flash-light .pace .pace-progress-inner{box-shadow:0 0 10px #f7f7f9,0 0 5px #f7f7f9}.pace-flash-light .pace .pace-activity{border-top-color:#f7f7f9;border-left-color:#f7f7f9}.pace-loading-bar-light .pace .pace-progress{background:#f7f7f9;color:#f7f7f9;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-light .pace .pace-activity{box-shadow:inset 0 0 0 2px #f7f7f9,inset 0 0 0 7px #2a2e30}.pace-mac-osx-light .pace .pace-progress{background-color:#f7f7f9;box-shadow:inset -1px 0 #f7f7f9,inset 0 -1px #f7f7f9,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-light .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-light .pace-progress{color:#f7f7f9}.pace-dark .pace .pace-progress{background:#22292f}.pace-barber-shop-dark .pace{background:#fff}.pace-barber-shop-dark .pace .pace-progress{background:#22292f}.pace-barber-shop-dark .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-dark .pace .pace-progress:after{color:rgba(34,41,47,.2)}.pace-bounce-dark .pace .pace-activity{background:#22292f}.pace-center-atom-dark .pace-progress{height:100px;width:80px}.pace-center-atom-dark .pace-progress:before{background:#22292f;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-dark .pace-activity,.pace-center-atom-dark .pace-activity:after,.pace-center-atom-dark .pace-activity:before{border-color:#22292f}.pace-center-circle-dark .pace .pace-progress{background:rgba(34,41,47,.8);color:#fff}.pace-center-radar-dark .pace .pace-activity,.pace-center-radar-dark .pace .pace-activity:before{border-color:#22292f transparent transparent}.pace-center-simple-dark .pace{background:#fff;border-color:#22292f}.pace-center-simple-dark .pace .pace-progress{background:#22292f}.pace-material-dark .pace{color:#22292f}.pace-corner-indicator-dark .pace .pace-activity{background:#22292f}.pace-corner-indicator-dark .pace .pace-activity:after,.pace-corner-indicator-dark .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-dark .pace .pace-activity:before{border-right-color:rgba(34,41,47,.2);border-left-color:rgba(34,41,47,.2)}.pace-corner-indicator-dark .pace .pace-activity:after{border-top-color:rgba(34,41,47,.2);border-bottom-color:rgba(34,41,47,.2)}.pace-fill-left-dark .pace .pace-progress{background-color:rgba(34,41,47,.2)}.pace-flash-dark .pace .pace-progress{background:#22292f}.pace-flash-dark .pace .pace-progress-inner{box-shadow:0 0 10px #22292f,0 0 5px #22292f}.pace-flash-dark .pace .pace-activity{border-top-color:#22292f;border-left-color:#22292f}.pace-loading-bar-dark .pace .pace-progress{background:#22292f;color:#22292f;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-dark .pace .pace-activity{box-shadow:inset 0 0 0 2px #22292f,inset 0 0 0 7px #fff}.pace-mac-osx-dark .pace .pace-progress{background-color:#22292f;box-shadow:inset -1px 0 #22292f,inset 0 -1px #22292f,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-dark .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-dark .pace-progress{color:#22292f}.pace-lightblue .pace .pace-progress{background:#3c8dbc}.pace-barber-shop-lightblue .pace{background:#fff}.pace-barber-shop-lightblue .pace .pace-progress{background:#3c8dbc}.pace-barber-shop-lightblue .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-lightblue .pace .pace-progress:after{color:rgba(60,141,188,.2)}.pace-bounce-lightblue .pace .pace-activity{background:#3c8dbc}.pace-center-atom-lightblue .pace-progress{height:100px;width:80px}.pace-center-atom-lightblue .pace-progress:before{background:#3c8dbc;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-lightblue .pace-activity,.pace-center-atom-lightblue .pace-activity:after,.pace-center-atom-lightblue .pace-activity:before{border-color:#3c8dbc}.pace-center-circle-lightblue .pace .pace-progress{background:rgba(60,141,188,.8);color:#fff}.pace-center-radar-lightblue .pace .pace-activity,.pace-center-radar-lightblue .pace .pace-activity:before{border-color:#3c8dbc transparent transparent}.pace-center-simple-lightblue .pace{background:#fff;border-color:#3c8dbc}.pace-center-simple-lightblue .pace .pace-progress{background:#3c8dbc}.pace-material-lightblue .pace{color:#3c8dbc}.pace-corner-indicator-lightblue .pace .pace-activity{background:#3c8dbc}.pace-corner-indicator-lightblue .pace .pace-activity:after,.pace-corner-indicator-lightblue .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-lightblue .pace .pace-activity:before{border-right-color:rgba(60,141,188,.2);border-left-color:rgba(60,141,188,.2)}.pace-corner-indicator-lightblue .pace .pace-activity:after{border-top-color:rgba(60,141,188,.2);border-bottom-color:rgba(60,141,188,.2)}.pace-fill-left-lightblue .pace .pace-progress{background-color:rgba(60,141,188,.2)}.pace-flash-lightblue .pace .pace-progress{background:#3c8dbc}.pace-flash-lightblue .pace .pace-progress-inner{box-shadow:0 0 10px #3c8dbc,0 0 5px #3c8dbc}.pace-flash-lightblue .pace .pace-activity{border-top-color:#3c8dbc;border-left-color:#3c8dbc}.pace-loading-bar-lightblue .pace .pace-progress{background:#3c8dbc;color:#3c8dbc;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-lightblue .pace .pace-activity{box-shadow:inset 0 0 0 2px #3c8dbc,inset 0 0 0 7px #fff}.pace-mac-osx-lightblue .pace .pace-progress{background-color:#3c8dbc;box-shadow:inset -1px 0 #3c8dbc,inset 0 -1px #3c8dbc,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-lightblue .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-lightblue .pace-progress{color:#3c8dbc}.pace-navy .pace .pace-progress{background:#001f3f}.pace-barber-shop-navy .pace{background:#fff}.pace-barber-shop-navy .pace .pace-progress{background:#001f3f}.pace-barber-shop-navy .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-navy .pace .pace-progress:after{color:rgba(0,31,63,.2)}.pace-bounce-navy .pace .pace-activity{background:#001f3f}.pace-center-atom-navy .pace-progress{height:100px;width:80px}.pace-center-atom-navy .pace-progress:before{background:#001f3f;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-navy .pace-activity,.pace-center-atom-navy .pace-activity:after,.pace-center-atom-navy .pace-activity:before{border-color:#001f3f}.pace-center-circle-navy .pace .pace-progress{background:rgba(0,31,63,.8);color:#fff}.pace-center-radar-navy .pace .pace-activity,.pace-center-radar-navy .pace .pace-activity:before{border-color:#001f3f transparent transparent}.pace-center-simple-navy .pace{background:#fff;border-color:#001f3f}.pace-center-simple-navy .pace .pace-progress{background:#001f3f}.pace-material-navy .pace{color:#001f3f}.pace-corner-indicator-navy .pace .pace-activity{background:#001f3f}.pace-corner-indicator-navy .pace .pace-activity:after,.pace-corner-indicator-navy .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-navy .pace .pace-activity:before{border-right-color:rgba(0,31,63,.2);border-left-color:rgba(0,31,63,.2)}.pace-corner-indicator-navy .pace .pace-activity:after{border-top-color:rgba(0,31,63,.2);border-bottom-color:rgba(0,31,63,.2)}.pace-fill-left-navy .pace .pace-progress{background-color:rgba(0,31,63,.2)}.pace-flash-navy .pace .pace-progress{background:#001f3f}.pace-flash-navy .pace .pace-progress-inner{box-shadow:0 0 10px #001f3f,0 0 5px #001f3f}.pace-flash-navy .pace .pace-activity{border-top-color:#001f3f;border-left-color:#001f3f}.pace-loading-bar-navy .pace .pace-progress{background:#001f3f;color:#001f3f;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-navy .pace .pace-activity{box-shadow:inset 0 0 0 2px #001f3f,inset 0 0 0 7px #fff}.pace-mac-osx-navy .pace .pace-progress{background-color:#001f3f;box-shadow:inset -1px 0 #001f3f,inset 0 -1px #001f3f,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-navy .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-navy .pace-progress{color:#001f3f}.pace-olive .pace .pace-progress{background:#3d9970}.pace-barber-shop-olive .pace{background:#fff}.pace-barber-shop-olive .pace .pace-progress{background:#3d9970}.pace-barber-shop-olive .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-olive .pace .pace-progress:after{color:rgba(61,153,112,.2)}.pace-bounce-olive .pace .pace-activity{background:#3d9970}.pace-center-atom-olive .pace-progress{height:100px;width:80px}.pace-center-atom-olive .pace-progress:before{background:#3d9970;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-olive .pace-activity,.pace-center-atom-olive .pace-activity:after,.pace-center-atom-olive .pace-activity:before{border-color:#3d9970}.pace-center-circle-olive .pace .pace-progress{background:rgba(61,153,112,.8);color:#fff}.pace-center-radar-olive .pace .pace-activity,.pace-center-radar-olive .pace .pace-activity:before{border-color:#3d9970 transparent transparent}.pace-center-simple-olive .pace{background:#fff;border-color:#3d9970}.pace-center-simple-olive .pace .pace-progress{background:#3d9970}.pace-material-olive .pace{color:#3d9970}.pace-corner-indicator-olive .pace .pace-activity{background:#3d9970}.pace-corner-indicator-olive .pace .pace-activity:after,.pace-corner-indicator-olive .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-olive .pace .pace-activity:before{border-right-color:rgba(61,153,112,.2);border-left-color:rgba(61,153,112,.2)}.pace-corner-indicator-olive .pace .pace-activity:after{border-top-color:rgba(61,153,112,.2);border-bottom-color:rgba(61,153,112,.2)}.pace-fill-left-olive .pace .pace-progress{background-color:rgba(61,153,112,.2)}.pace-flash-olive .pace .pace-progress{background:#3d9970}.pace-flash-olive .pace .pace-progress-inner{box-shadow:0 0 10px #3d9970,0 0 5px #3d9970}.pace-flash-olive .pace .pace-activity{border-top-color:#3d9970;border-left-color:#3d9970}.pace-loading-bar-olive .pace .pace-progress{background:#3d9970;color:#3d9970;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-olive .pace .pace-activity{box-shadow:inset 0 0 0 2px #3d9970,inset 0 0 0 7px #fff}.pace-mac-osx-olive .pace .pace-progress{background-color:#3d9970;box-shadow:inset -1px 0 #3d9970,inset 0 -1px #3d9970,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-olive .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-olive .pace-progress{color:#3d9970}.pace-lime .pace .pace-progress{background:#01ff70}.pace-barber-shop-lime .pace{background:#2a2e30}.pace-barber-shop-lime .pace .pace-progress{background:#01ff70}.pace-barber-shop-lime .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-lime .pace .pace-progress:after{color:rgba(1,255,112,.2)}.pace-bounce-lime .pace .pace-activity{background:#01ff70}.pace-center-atom-lime .pace-progress{height:100px;width:80px}.pace-center-atom-lime .pace-progress:before{background:#01ff70;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-lime .pace-activity,.pace-center-atom-lime .pace-activity:after,.pace-center-atom-lime .pace-activity:before{border-color:#01ff70}.pace-center-circle-lime .pace .pace-progress{background:rgba(1,255,112,.8);color:#2a2e30}.pace-center-radar-lime .pace .pace-activity,.pace-center-radar-lime .pace .pace-activity:before{border-color:#01ff70 transparent transparent}.pace-center-simple-lime .pace{background:#2a2e30;border-color:#01ff70}.pace-center-simple-lime .pace .pace-progress{background:#01ff70}.pace-material-lime .pace{color:#01ff70}.pace-corner-indicator-lime .pace .pace-activity{background:#01ff70}.pace-corner-indicator-lime .pace .pace-activity:after,.pace-corner-indicator-lime .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-lime .pace .pace-activity:before{border-right-color:rgba(1,255,112,.2);border-left-color:rgba(1,255,112,.2)}.pace-corner-indicator-lime .pace .pace-activity:after{border-top-color:rgba(1,255,112,.2);border-bottom-color:rgba(1,255,112,.2)}.pace-fill-left-lime .pace .pace-progress{background-color:rgba(1,255,112,.2)}.pace-flash-lime .pace .pace-progress{background:#01ff70}.pace-flash-lime .pace .pace-progress-inner{box-shadow:0 0 10px #01ff70,0 0 5px #01ff70}.pace-flash-lime .pace .pace-activity{border-top-color:#01ff70;border-left-color:#01ff70}.pace-loading-bar-lime .pace .pace-progress{background:#01ff70;color:#01ff70;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-lime .pace .pace-activity{box-shadow:inset 0 0 0 2px #01ff70,inset 0 0 0 7px #2a2e30}.pace-mac-osx-lime .pace .pace-progress{background-color:#01ff70;box-shadow:inset -1px 0 #01ff70,inset 0 -1px #01ff70,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-lime .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-lime .pace-progress{color:#01ff70}.pace-fuchsia .pace .pace-progress{background:#f012be}.pace-barber-shop-fuchsia .pace{background:#fff}.pace-barber-shop-fuchsia .pace .pace-progress{background:#f012be}.pace-barber-shop-fuchsia .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-fuchsia .pace .pace-progress:after{color:rgba(240,18,190,.2)}.pace-bounce-fuchsia .pace .pace-activity{background:#f012be}.pace-center-atom-fuchsia .pace-progress{height:100px;width:80px}.pace-center-atom-fuchsia .pace-progress:before{background:#f012be;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-fuchsia .pace-activity,.pace-center-atom-fuchsia .pace-activity:after,.pace-center-atom-fuchsia .pace-activity:before{border-color:#f012be}.pace-center-circle-fuchsia .pace .pace-progress{background:rgba(240,18,190,.8);color:#fff}.pace-center-radar-fuchsia .pace .pace-activity,.pace-center-radar-fuchsia .pace .pace-activity:before{border-color:#f012be transparent transparent}.pace-center-simple-fuchsia .pace{background:#fff;border-color:#f012be}.pace-center-simple-fuchsia .pace .pace-progress{background:#f012be}.pace-material-fuchsia .pace{color:#f012be}.pace-corner-indicator-fuchsia .pace .pace-activity{background:#f012be}.pace-corner-indicator-fuchsia .pace .pace-activity:after,.pace-corner-indicator-fuchsia .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-fuchsia .pace .pace-activity:before{border-right-color:rgba(240,18,190,.2);border-left-color:rgba(240,18,190,.2)}.pace-corner-indicator-fuchsia .pace .pace-activity:after{border-top-color:rgba(240,18,190,.2);border-bottom-color:rgba(240,18,190,.2)}.pace-fill-left-fuchsia .pace .pace-progress{background-color:rgba(240,18,190,.2)}.pace-flash-fuchsia .pace .pace-progress{background:#f012be}.pace-flash-fuchsia .pace .pace-progress-inner{box-shadow:0 0 10px #f012be,0 0 5px #f012be}.pace-flash-fuchsia .pace .pace-activity{border-top-color:#f012be;border-left-color:#f012be}.pace-loading-bar-fuchsia .pace .pace-progress{background:#f012be;color:#f012be;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-fuchsia .pace .pace-activity{box-shadow:inset 0 0 0 2px #f012be,inset 0 0 0 7px #fff}.pace-mac-osx-fuchsia .pace .pace-progress{background-color:#f012be;box-shadow:inset -1px 0 #f012be,inset 0 -1px #f012be,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-fuchsia .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-fuchsia .pace-progress{color:#f012be}.pace-maroon .pace .pace-progress{background:#d81b60}.pace-barber-shop-maroon .pace{background:#fff}.pace-barber-shop-maroon .pace .pace-progress{background:#d81b60}.pace-barber-shop-maroon .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-maroon .pace .pace-progress:after{color:rgba(216,27,96,.2)}.pace-bounce-maroon .pace .pace-activity{background:#d81b60}.pace-center-atom-maroon .pace-progress{height:100px;width:80px}.pace-center-atom-maroon .pace-progress:before{background:#d81b60;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-maroon .pace-activity,.pace-center-atom-maroon .pace-activity:after,.pace-center-atom-maroon .pace-activity:before{border-color:#d81b60}.pace-center-circle-maroon .pace .pace-progress{background:rgba(216,27,96,.8);color:#fff}.pace-center-radar-maroon .pace .pace-activity,.pace-center-radar-maroon .pace .pace-activity:before{border-color:#d81b60 transparent transparent}.pace-center-simple-maroon .pace{background:#fff;border-color:#d81b60}.pace-center-simple-maroon .pace .pace-progress{background:#d81b60}.pace-material-maroon .pace{color:#d81b60}.pace-corner-indicator-maroon .pace .pace-activity{background:#d81b60}.pace-corner-indicator-maroon .pace .pace-activity:after,.pace-corner-indicator-maroon .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-maroon .pace .pace-activity:before{border-right-color:rgba(216,27,96,.2);border-left-color:rgba(216,27,96,.2)}.pace-corner-indicator-maroon .pace .pace-activity:after{border-top-color:rgba(216,27,96,.2);border-bottom-color:rgba(216,27,96,.2)}.pace-fill-left-maroon .pace .pace-progress{background-color:rgba(216,27,96,.2)}.pace-flash-maroon .pace .pace-progress{background:#d81b60}.pace-flash-maroon .pace .pace-progress-inner{box-shadow:0 0 10px #d81b60,0 0 5px #d81b60}.pace-flash-maroon .pace .pace-activity{border-top-color:#d81b60;border-left-color:#d81b60}.pace-loading-bar-maroon .pace .pace-progress{background:#d81b60;color:#d81b60;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-maroon .pace .pace-activity{box-shadow:inset 0 0 0 2px #d81b60,inset 0 0 0 7px #fff}.pace-mac-osx-maroon .pace .pace-progress{background-color:#d81b60;box-shadow:inset -1px 0 #d81b60,inset 0 -1px #d81b60,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-maroon .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-maroon .pace-progress{color:#d81b60}.pace-blue .pace .pace-progress{background:#3085d6}.pace-barber-shop-blue .pace{background:#fff}.pace-barber-shop-blue .pace .pace-progress{background:#3085d6}.pace-barber-shop-blue .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-blue .pace .pace-progress:after{color:rgba(48,133,214,.2)}.pace-bounce-blue .pace .pace-activity{background:#3085d6}.pace-center-atom-blue .pace-progress{height:100px;width:80px}.pace-center-atom-blue .pace-progress:before{background:#3085d6;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-blue .pace-activity,.pace-center-atom-blue .pace-activity:after,.pace-center-atom-blue .pace-activity:before{border-color:#3085d6}.pace-center-circle-blue .pace .pace-progress{background:rgba(48,133,214,.8);color:#fff}.pace-center-radar-blue .pace .pace-activity,.pace-center-radar-blue .pace .pace-activity:before{border-color:#3085d6 transparent transparent}.pace-center-simple-blue .pace{background:#fff;border-color:#3085d6}.pace-center-simple-blue .pace .pace-progress{background:#3085d6}.pace-material-blue .pace{color:#3085d6}.pace-corner-indicator-blue .pace .pace-activity{background:#3085d6}.pace-corner-indicator-blue .pace .pace-activity:after,.pace-corner-indicator-blue .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-blue .pace .pace-activity:before{border-right-color:rgba(48,133,214,.2);border-left-color:rgba(48,133,214,.2)}.pace-corner-indicator-blue .pace .pace-activity:after{border-top-color:rgba(48,133,214,.2);border-bottom-color:rgba(48,133,214,.2)}.pace-fill-left-blue .pace .pace-progress{background-color:rgba(48,133,214,.2)}.pace-flash-blue .pace .pace-progress{background:#3085d6}.pace-flash-blue .pace .pace-progress-inner{box-shadow:0 0 10px #3085d6,0 0 5px #3085d6}.pace-flash-blue .pace .pace-activity{border-top-color:#3085d6;border-left-color:#3085d6}.pace-loading-bar-blue .pace .pace-progress{background:#3085d6;color:#3085d6;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-blue .pace .pace-activity{box-shadow:inset 0 0 0 2px #3085d6,inset 0 0 0 7px #fff}.pace-mac-osx-blue .pace .pace-progress{background-color:#3085d6;box-shadow:inset -1px 0 #3085d6,inset 0 -1px #3085d6,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-blue .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-blue .pace-progress{color:#3085d6}.pace-indigo .pace .pace-progress{background:#5c6bc6}.pace-barber-shop-indigo .pace{background:#fff}.pace-barber-shop-indigo .pace .pace-progress{background:#5c6bc6}.pace-barber-shop-indigo .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-indigo .pace .pace-progress:after{color:rgba(92,107,198,.2)}.pace-bounce-indigo .pace .pace-activity{background:#5c6bc6}.pace-center-atom-indigo .pace-progress{height:100px;width:80px}.pace-center-atom-indigo .pace-progress:before{background:#5c6bc6;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-indigo .pace-activity,.pace-center-atom-indigo .pace-activity:after,.pace-center-atom-indigo .pace-activity:before{border-color:#5c6bc6}.pace-center-circle-indigo .pace .pace-progress{background:rgba(92,107,198,.8);color:#fff}.pace-center-radar-indigo .pace .pace-activity,.pace-center-radar-indigo .pace .pace-activity:before{border-color:#5c6bc6 transparent transparent}.pace-center-simple-indigo .pace{background:#fff;border-color:#5c6bc6}.pace-center-simple-indigo .pace .pace-progress{background:#5c6bc6}.pace-material-indigo .pace{color:#5c6bc6}.pace-corner-indicator-indigo .pace .pace-activity{background:#5c6bc6}.pace-corner-indicator-indigo .pace .pace-activity:after,.pace-corner-indicator-indigo .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-indigo .pace .pace-activity:before{border-right-color:rgba(92,107,198,.2);border-left-color:rgba(92,107,198,.2)}.pace-corner-indicator-indigo .pace .pace-activity:after{border-top-color:rgba(92,107,198,.2);border-bottom-color:rgba(92,107,198,.2)}.pace-fill-left-indigo .pace .pace-progress{background-color:rgba(92,107,198,.2)}.pace-flash-indigo .pace .pace-progress{background:#5c6bc6}.pace-flash-indigo .pace .pace-progress-inner{box-shadow:0 0 10px #5c6bc6,0 0 5px #5c6bc6}.pace-flash-indigo .pace .pace-activity{border-top-color:#5c6bc6;border-left-color:#5c6bc6}.pace-loading-bar-indigo .pace .pace-progress{background:#5c6bc6;color:#5c6bc6;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-indigo .pace .pace-activity{box-shadow:inset 0 0 0 2px #5c6bc6,inset 0 0 0 7px #fff}.pace-mac-osx-indigo .pace .pace-progress{background-color:#5c6bc6;box-shadow:inset -1px 0 #5c6bc6,inset 0 -1px #5c6bc6,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-indigo .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-indigo .pace-progress{color:#5c6bc6}.pace-purple .pace .pace-progress{background:#6f42c1}.pace-barber-shop-purple .pace{background:#fff}.pace-barber-shop-purple .pace .pace-progress{background:#6f42c1}.pace-barber-shop-purple .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-purple .pace .pace-progress:after{color:rgba(111,66,193,.2)}.pace-bounce-purple .pace .pace-activity{background:#6f42c1}.pace-center-atom-purple .pace-progress{height:100px;width:80px}.pace-center-atom-purple .pace-progress:before{background:#6f42c1;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-purple .pace-activity,.pace-center-atom-purple .pace-activity:after,.pace-center-atom-purple .pace-activity:before{border-color:#6f42c1}.pace-center-circle-purple .pace .pace-progress{background:rgba(111,66,193,.8);color:#fff}.pace-center-radar-purple .pace .pace-activity,.pace-center-radar-purple .pace .pace-activity:before{border-color:#6f42c1 transparent transparent}.pace-center-simple-purple .pace{background:#fff;border-color:#6f42c1}.pace-center-simple-purple .pace .pace-progress{background:#6f42c1}.pace-material-purple .pace{color:#6f42c1}.pace-corner-indicator-purple .pace .pace-activity{background:#6f42c1}.pace-corner-indicator-purple .pace .pace-activity:after,.pace-corner-indicator-purple .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-purple .pace .pace-activity:before{border-right-color:rgba(111,66,193,.2);border-left-color:rgba(111,66,193,.2)}.pace-corner-indicator-purple .pace .pace-activity:after{border-top-color:rgba(111,66,193,.2);border-bottom-color:rgba(111,66,193,.2)}.pace-fill-left-purple .pace .pace-progress{background-color:rgba(111,66,193,.2)}.pace-flash-purple .pace .pace-progress{background:#6f42c1}.pace-flash-purple .pace .pace-progress-inner{box-shadow:0 0 10px #6f42c1,0 0 5px #6f42c1}.pace-flash-purple .pace .pace-activity{border-top-color:#6f42c1;border-left-color:#6f42c1}.pace-loading-bar-purple .pace .pace-progress{background:#6f42c1;color:#6f42c1;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-purple .pace .pace-activity{box-shadow:inset 0 0 0 2px #6f42c1,inset 0 0 0 7px #fff}.pace-mac-osx-purple .pace .pace-progress{background-color:#6f42c1;box-shadow:inset -1px 0 #6f42c1,inset 0 -1px #6f42c1,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-purple .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-purple .pace-progress{color:#6f42c1}.pace-pink .pace .pace-progress{background:#ff8acc}.pace-barber-shop-pink .pace{background:#2a2e30}.pace-barber-shop-pink .pace .pace-progress{background:#ff8acc}.pace-barber-shop-pink .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-pink .pace .pace-progress:after{color:rgba(255,138,204,.2)}.pace-bounce-pink .pace .pace-activity{background:#ff8acc}.pace-center-atom-pink .pace-progress{height:100px;width:80px}.pace-center-atom-pink .pace-progress:before{background:#ff8acc;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-pink .pace-activity,.pace-center-atom-pink .pace-activity:after,.pace-center-atom-pink .pace-activity:before{border-color:#ff8acc}.pace-center-circle-pink .pace .pace-progress{background:rgba(255,138,204,.8);color:#2a2e30}.pace-center-radar-pink .pace .pace-activity,.pace-center-radar-pink .pace .pace-activity:before{border-color:#ff8acc transparent transparent}.pace-center-simple-pink .pace{background:#2a2e30;border-color:#ff8acc}.pace-center-simple-pink .pace .pace-progress{background:#ff8acc}.pace-material-pink .pace{color:#ff8acc}.pace-corner-indicator-pink .pace .pace-activity{background:#ff8acc}.pace-corner-indicator-pink .pace .pace-activity:after,.pace-corner-indicator-pink .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-pink .pace .pace-activity:before{border-right-color:rgba(255,138,204,.2);border-left-color:rgba(255,138,204,.2)}.pace-corner-indicator-pink .pace .pace-activity:after{border-top-color:rgba(255,138,204,.2);border-bottom-color:rgba(255,138,204,.2)}.pace-fill-left-pink .pace .pace-progress{background-color:rgba(255,138,204,.2)}.pace-flash-pink .pace .pace-progress{background:#ff8acc}.pace-flash-pink .pace .pace-progress-inner{box-shadow:0 0 10px #ff8acc,0 0 5px #ff8acc}.pace-flash-pink .pace .pace-activity{border-top-color:#ff8acc;border-left-color:#ff8acc}.pace-loading-bar-pink .pace .pace-progress{background:#ff8acc;color:#ff8acc;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-pink .pace .pace-activity{box-shadow:inset 0 0 0 2px #ff8acc,inset 0 0 0 7px #2a2e30}.pace-mac-osx-pink .pace .pace-progress{background-color:#ff8acc;box-shadow:inset -1px 0 #ff8acc,inset 0 -1px #ff8acc,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-pink .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-pink .pace-progress{color:#ff8acc}.pace-red .pace .pace-progress{background:#ea5455}.pace-barber-shop-red .pace{background:#fff}.pace-barber-shop-red .pace .pace-progress{background:#ea5455}.pace-barber-shop-red .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-red .pace .pace-progress:after{color:rgba(234,84,85,.2)}.pace-bounce-red .pace .pace-activity{background:#ea5455}.pace-center-atom-red .pace-progress{height:100px;width:80px}.pace-center-atom-red .pace-progress:before{background:#ea5455;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-red .pace-activity,.pace-center-atom-red .pace-activity:after,.pace-center-atom-red .pace-activity:before{border-color:#ea5455}.pace-center-circle-red .pace .pace-progress{background:rgba(234,84,85,.8);color:#fff}.pace-center-radar-red .pace .pace-activity,.pace-center-radar-red .pace .pace-activity:before{border-color:#ea5455 transparent transparent}.pace-center-simple-red .pace{background:#fff;border-color:#ea5455}.pace-center-simple-red .pace .pace-progress{background:#ea5455}.pace-material-red .pace{color:#ea5455}.pace-corner-indicator-red .pace .pace-activity{background:#ea5455}.pace-corner-indicator-red .pace .pace-activity:after,.pace-corner-indicator-red .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-red .pace .pace-activity:before{border-right-color:rgba(234,84,85,.2);border-left-color:rgba(234,84,85,.2)}.pace-corner-indicator-red .pace .pace-activity:after{border-top-color:rgba(234,84,85,.2);border-bottom-color:rgba(234,84,85,.2)}.pace-fill-left-red .pace .pace-progress{background-color:rgba(234,84,85,.2)}.pace-flash-red .pace .pace-progress{background:#ea5455}.pace-flash-red .pace .pace-progress-inner{box-shadow:0 0 10px #ea5455,0 0 5px #ea5455}.pace-flash-red .pace .pace-activity{border-top-color:#ea5455;border-left-color:#ea5455}.pace-loading-bar-red .pace .pace-progress{background:#ea5455;color:#ea5455;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-red .pace .pace-activity{box-shadow:inset 0 0 0 2px #ea5455,inset 0 0 0 7px #fff}.pace-mac-osx-red .pace .pace-progress{background-color:#ea5455;box-shadow:inset -1px 0 #ea5455,inset 0 -1px #ea5455,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-red .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-red .pace-progress{color:#ea5455}.pace-orange .pace .pace-progress{background:#dda451}.pace-barber-shop-orange .pace{background:#2a2e30}.pace-barber-shop-orange .pace .pace-progress{background:#dda451}.pace-barber-shop-orange .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-orange .pace .pace-progress:after{color:rgba(221,164,81,.2)}.pace-bounce-orange .pace .pace-activity{background:#dda451}.pace-center-atom-orange .pace-progress{height:100px;width:80px}.pace-center-atom-orange .pace-progress:before{background:#dda451;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-orange .pace-activity,.pace-center-atom-orange .pace-activity:after,.pace-center-atom-orange .pace-activity:before{border-color:#dda451}.pace-center-circle-orange .pace .pace-progress{background:rgba(221,164,81,.8);color:#2a2e30}.pace-center-radar-orange .pace .pace-activity,.pace-center-radar-orange .pace .pace-activity:before{border-color:#dda451 transparent transparent}.pace-center-simple-orange .pace{background:#2a2e30;border-color:#dda451}.pace-center-simple-orange .pace .pace-progress{background:#dda451}.pace-material-orange .pace{color:#dda451}.pace-corner-indicator-orange .pace .pace-activity{background:#dda451}.pace-corner-indicator-orange .pace .pace-activity:after,.pace-corner-indicator-orange .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-orange .pace .pace-activity:before{border-right-color:rgba(221,164,81,.2);border-left-color:rgba(221,164,81,.2)}.pace-corner-indicator-orange .pace .pace-activity:after{border-top-color:rgba(221,164,81,.2);border-bottom-color:rgba(221,164,81,.2)}.pace-fill-left-orange .pace .pace-progress{background-color:rgba(221,164,81,.2)}.pace-flash-orange .pace .pace-progress{background:#dda451}.pace-flash-orange .pace .pace-progress-inner{box-shadow:0 0 10px #dda451,0 0 5px #dda451}.pace-flash-orange .pace .pace-activity{border-top-color:#dda451;border-left-color:#dda451}.pace-loading-bar-orange .pace .pace-progress{background:#dda451;color:#dda451;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-orange .pace .pace-activity{box-shadow:inset 0 0 0 2px #dda451,inset 0 0 0 7px #2a2e30}.pace-mac-osx-orange .pace .pace-progress{background-color:#dda451;box-shadow:inset -1px 0 #dda451,inset 0 -1px #dda451,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-orange .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-orange .pace-progress{color:#dda451}.pace-yellow .pace .pace-progress{background:#edc30e}.pace-barber-shop-yellow .pace{background:#2a2e30}.pace-barber-shop-yellow .pace .pace-progress{background:#edc30e}.pace-barber-shop-yellow .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-yellow .pace .pace-progress:after{color:rgba(237,195,14,.2)}.pace-bounce-yellow .pace .pace-activity{background:#edc30e}.pace-center-atom-yellow .pace-progress{height:100px;width:80px}.pace-center-atom-yellow .pace-progress:before{background:#edc30e;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-yellow .pace-activity,.pace-center-atom-yellow .pace-activity:after,.pace-center-atom-yellow .pace-activity:before{border-color:#edc30e}.pace-center-circle-yellow .pace .pace-progress{background:rgba(237,195,14,.8);color:#2a2e30}.pace-center-radar-yellow .pace .pace-activity,.pace-center-radar-yellow .pace .pace-activity:before{border-color:#edc30e transparent transparent}.pace-center-simple-yellow .pace{background:#2a2e30;border-color:#edc30e}.pace-center-simple-yellow .pace .pace-progress{background:#edc30e}.pace-material-yellow .pace{color:#edc30e}.pace-corner-indicator-yellow .pace .pace-activity{background:#edc30e}.pace-corner-indicator-yellow .pace .pace-activity:after,.pace-corner-indicator-yellow .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-yellow .pace .pace-activity:before{border-right-color:rgba(237,195,14,.2);border-left-color:rgba(237,195,14,.2)}.pace-corner-indicator-yellow .pace .pace-activity:after{border-top-color:rgba(237,195,14,.2);border-bottom-color:rgba(237,195,14,.2)}.pace-fill-left-yellow .pace .pace-progress{background-color:rgba(237,195,14,.2)}.pace-flash-yellow .pace .pace-progress{background:#edc30e}.pace-flash-yellow .pace .pace-progress-inner{box-shadow:0 0 10px #edc30e,0 0 5px #edc30e}.pace-flash-yellow .pace .pace-activity{border-top-color:#edc30e;border-left-color:#edc30e}.pace-loading-bar-yellow .pace .pace-progress{background:#edc30e;color:#edc30e;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-yellow .pace .pace-activity{box-shadow:inset 0 0 0 2px #edc30e,inset 0 0 0 7px #2a2e30}.pace-mac-osx-yellow .pace .pace-progress{background-color:#edc30e;box-shadow:inset -1px 0 #edc30e,inset 0 -1px #edc30e,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-yellow .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-yellow .pace-progress{color:#edc30e}.pace-green .pace .pace-progress{background:#21b978}.pace-barber-shop-green .pace{background:#fff}.pace-barber-shop-green .pace .pace-progress{background:#21b978}.pace-barber-shop-green .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-green .pace .pace-progress:after{color:rgba(33,185,120,.2)}.pace-bounce-green .pace .pace-activity{background:#21b978}.pace-center-atom-green .pace-progress{height:100px;width:80px}.pace-center-atom-green .pace-progress:before{background:#21b978;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-green .pace-activity,.pace-center-atom-green .pace-activity:after,.pace-center-atom-green .pace-activity:before{border-color:#21b978}.pace-center-circle-green .pace .pace-progress{background:rgba(33,185,120,.8);color:#fff}.pace-center-radar-green .pace .pace-activity,.pace-center-radar-green .pace .pace-activity:before{border-color:#21b978 transparent transparent}.pace-center-simple-green .pace{background:#fff;border-color:#21b978}.pace-center-simple-green .pace .pace-progress{background:#21b978}.pace-material-green .pace{color:#21b978}.pace-corner-indicator-green .pace .pace-activity{background:#21b978}.pace-corner-indicator-green .pace .pace-activity:after,.pace-corner-indicator-green .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-green .pace .pace-activity:before{border-right-color:rgba(33,185,120,.2);border-left-color:rgba(33,185,120,.2)}.pace-corner-indicator-green .pace .pace-activity:after{border-top-color:rgba(33,185,120,.2);border-bottom-color:rgba(33,185,120,.2)}.pace-fill-left-green .pace .pace-progress{background-color:rgba(33,185,120,.2)}.pace-flash-green .pace .pace-progress{background:#21b978}.pace-flash-green .pace .pace-progress-inner{box-shadow:0 0 10px #21b978,0 0 5px #21b978}.pace-flash-green .pace .pace-activity{border-top-color:#21b978;border-left-color:#21b978}.pace-loading-bar-green .pace .pace-progress{background:#21b978;color:#21b978;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-green .pace .pace-activity{box-shadow:inset 0 0 0 2px #21b978,inset 0 0 0 7px #fff}.pace-mac-osx-green .pace .pace-progress{background-color:#21b978;box-shadow:inset -1px 0 #21b978,inset 0 -1px #21b978,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-green .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-green .pace-progress{color:#21b978}.pace-teal .pace .pace-progress{background:#20c997}.pace-barber-shop-teal .pace{background:#fff}.pace-barber-shop-teal .pace .pace-progress{background:#20c997}.pace-barber-shop-teal .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-teal .pace .pace-progress:after{color:rgba(32,201,151,.2)}.pace-bounce-teal .pace .pace-activity{background:#20c997}.pace-center-atom-teal .pace-progress{height:100px;width:80px}.pace-center-atom-teal .pace-progress:before{background:#20c997;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-teal .pace-activity,.pace-center-atom-teal .pace-activity:after,.pace-center-atom-teal .pace-activity:before{border-color:#20c997}.pace-center-circle-teal .pace .pace-progress{background:rgba(32,201,151,.8);color:#fff}.pace-center-radar-teal .pace .pace-activity,.pace-center-radar-teal .pace .pace-activity:before{border-color:#20c997 transparent transparent}.pace-center-simple-teal .pace{background:#fff;border-color:#20c997}.pace-center-simple-teal .pace .pace-progress{background:#20c997}.pace-material-teal .pace{color:#20c997}.pace-corner-indicator-teal .pace .pace-activity{background:#20c997}.pace-corner-indicator-teal .pace .pace-activity:after,.pace-corner-indicator-teal .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-teal .pace .pace-activity:before{border-right-color:rgba(32,201,151,.2);border-left-color:rgba(32,201,151,.2)}.pace-corner-indicator-teal .pace .pace-activity:after{border-top-color:rgba(32,201,151,.2);border-bottom-color:rgba(32,201,151,.2)}.pace-fill-left-teal .pace .pace-progress{background-color:rgba(32,201,151,.2)}.pace-flash-teal .pace .pace-progress{background:#20c997}.pace-flash-teal .pace .pace-progress-inner{box-shadow:0 0 10px #20c997,0 0 5px #20c997}.pace-flash-teal .pace .pace-activity{border-top-color:#20c997;border-left-color:#20c997}.pace-loading-bar-teal .pace .pace-progress{background:#20c997;color:#20c997;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-teal .pace .pace-activity{box-shadow:inset 0 0 0 2px #20c997,inset 0 0 0 7px #fff}.pace-mac-osx-teal .pace .pace-progress{background-color:#20c997;box-shadow:inset -1px 0 #20c997,inset 0 -1px #20c997,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-teal .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-teal .pace-progress{color:#20c997}.pace-cyan .pace .pace-progress{background:#7367f0}.pace-barber-shop-cyan .pace{background:#fff}.pace-barber-shop-cyan .pace .pace-progress{background:#7367f0}.pace-barber-shop-cyan .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-cyan .pace .pace-progress:after{color:rgba(115,103,240,.2)}.pace-bounce-cyan .pace .pace-activity{background:#7367f0}.pace-center-atom-cyan .pace-progress{height:100px;width:80px}.pace-center-atom-cyan .pace-progress:before{background:#7367f0;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-cyan .pace-activity,.pace-center-atom-cyan .pace-activity:after,.pace-center-atom-cyan .pace-activity:before{border-color:#7367f0}.pace-center-circle-cyan .pace .pace-progress{background:rgba(115,103,240,.8);color:#fff}.pace-center-radar-cyan .pace .pace-activity,.pace-center-radar-cyan .pace .pace-activity:before{border-color:#7367f0 transparent transparent}.pace-center-simple-cyan .pace{background:#fff;border-color:#7367f0}.pace-center-simple-cyan .pace .pace-progress{background:#7367f0}.pace-material-cyan .pace{color:#7367f0}.pace-corner-indicator-cyan .pace .pace-activity{background:#7367f0}.pace-corner-indicator-cyan .pace .pace-activity:after,.pace-corner-indicator-cyan .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-cyan .pace .pace-activity:before{border-right-color:rgba(115,103,240,.2);border-left-color:rgba(115,103,240,.2)}.pace-corner-indicator-cyan .pace .pace-activity:after{border-top-color:rgba(115,103,240,.2);border-bottom-color:rgba(115,103,240,.2)}.pace-fill-left-cyan .pace .pace-progress{background-color:rgba(115,103,240,.2)}.pace-flash-cyan .pace .pace-progress{background:#7367f0}.pace-flash-cyan .pace .pace-progress-inner{box-shadow:0 0 10px #7367f0,0 0 5px #7367f0}.pace-flash-cyan .pace .pace-activity{border-top-color:#7367f0;border-left-color:#7367f0}.pace-loading-bar-cyan .pace .pace-progress{background:#7367f0;color:#7367f0;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-cyan .pace .pace-activity{box-shadow:inset 0 0 0 2px #7367f0,inset 0 0 0 7px #fff}.pace-mac-osx-cyan .pace .pace-progress{background-color:#7367f0;box-shadow:inset -1px 0 #7367f0,inset 0 -1px #7367f0,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-cyan .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-cyan .pace-progress{color:#7367f0}.pace-white .pace .pace-progress{background:#fff}.pace-barber-shop-white .pace{background:#2a2e30}.pace-barber-shop-white .pace .pace-progress{background:#fff}.pace-barber-shop-white .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-white .pace .pace-progress:after{color:hsla(0,0%,100%,.2)}.pace-bounce-white .pace .pace-activity{background:#fff}.pace-center-atom-white .pace-progress{height:100px;width:80px}.pace-center-atom-white .pace-progress:before{background:#fff;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-white .pace-activity,.pace-center-atom-white .pace-activity:after,.pace-center-atom-white .pace-activity:before{border-color:#fff}.pace-center-circle-white .pace .pace-progress{background:hsla(0,0%,100%,.8);color:#2a2e30}.pace-center-radar-white .pace .pace-activity,.pace-center-radar-white .pace .pace-activity:before{border-color:#fff transparent transparent}.pace-center-simple-white .pace{background:#2a2e30;border-color:#fff}.pace-center-simple-white .pace .pace-progress{background:#fff}.pace-material-white .pace{color:#fff}.pace-corner-indicator-white .pace .pace-activity{background:#fff}.pace-corner-indicator-white .pace .pace-activity:after,.pace-corner-indicator-white .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-white .pace .pace-activity:before{border-right-color:hsla(0,0%,100%,.2);border-left-color:hsla(0,0%,100%,.2)}.pace-corner-indicator-white .pace .pace-activity:after{border-top-color:hsla(0,0%,100%,.2);border-bottom-color:hsla(0,0%,100%,.2)}.pace-fill-left-white .pace .pace-progress{background-color:hsla(0,0%,100%,.2)}.pace-flash-white .pace .pace-progress{background:#fff}.pace-flash-white .pace .pace-progress-inner{box-shadow:0 0 10px #fff,0 0 5px #fff}.pace-flash-white .pace .pace-activity{border-top-color:#fff;border-left-color:#fff}.pace-loading-bar-white .pace .pace-progress{background:#fff;color:#fff;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-white .pace .pace-activity{box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 7px #2a2e30}.pace-mac-osx-white .pace .pace-progress{background-color:#fff;box-shadow:inset -1px 0 #fff,inset 0 -1px #fff,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-white .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-white .pace-progress{color:#fff}.pace-gray .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-gray .pace{background:#2a2e30}.pace-barber-shop-gray .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-gray .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-gray .pace .pace-progress:after{color:rgba(184,194,204,.2)}.pace-bounce-gray .pace .pace-activity{background:#b8c2cc}.pace-center-atom-gray .pace-progress{height:100px;width:80px}.pace-center-atom-gray .pace-progress:before{background:#b8c2cc;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-gray .pace-activity,.pace-center-atom-gray .pace-activity:after,.pace-center-atom-gray .pace-activity:before{border-color:#b8c2cc}.pace-center-circle-gray .pace .pace-progress{background:rgba(184,194,204,.8);color:#2a2e30}.pace-center-radar-gray .pace .pace-activity,.pace-center-radar-gray .pace .pace-activity:before{border-color:#b8c2cc transparent transparent}.pace-center-simple-gray .pace{background:#2a2e30;border-color:#b8c2cc}.pace-center-simple-gray .pace .pace-progress{background:#b8c2cc}.pace-material-gray .pace{color:#b8c2cc}.pace-corner-indicator-gray .pace .pace-activity{background:#b8c2cc}.pace-corner-indicator-gray .pace .pace-activity:after,.pace-corner-indicator-gray .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-gray .pace .pace-activity:before{border-right-color:rgba(184,194,204,.2);border-left-color:rgba(184,194,204,.2)}.pace-corner-indicator-gray .pace .pace-activity:after{border-top-color:rgba(184,194,204,.2);border-bottom-color:rgba(184,194,204,.2)}.pace-fill-left-gray .pace .pace-progress{background-color:rgba(184,194,204,.2)}.pace-flash-gray .pace .pace-progress{background:#b8c2cc}.pace-flash-gray .pace .pace-progress-inner{box-shadow:0 0 10px #b8c2cc,0 0 5px #b8c2cc}.pace-flash-gray .pace .pace-activity{border-top-color:#b8c2cc;border-left-color:#b8c2cc}.pace-loading-bar-gray .pace .pace-progress{background:#b8c2cc;color:#b8c2cc;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-gray .pace .pace-activity{box-shadow:inset 0 0 0 2px #b8c2cc,inset 0 0 0 7px #2a2e30}.pace-mac-osx-gray .pace .pace-progress{background-color:#b8c2cc;box-shadow:inset -1px 0 #b8c2cc,inset 0 -1px #b8c2cc,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-gray .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-gray .pace-progress{color:#b8c2cc}.pace-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-barber-shop-gray-dark .pace{background:#fff}.pace-barber-shop-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-barber-shop-gray-dark .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-gray-dark .pace .pace-progress:after{color:rgba(30,30,30,.2)}.pace-bounce-gray-dark .pace .pace-activity{background:#1e1e1e}.pace-center-atom-gray-dark .pace-progress{height:100px;width:80px}.pace-center-atom-gray-dark .pace-progress:before{background:#1e1e1e;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-gray-dark .pace-activity,.pace-center-atom-gray-dark .pace-activity:after,.pace-center-atom-gray-dark .pace-activity:before{border-color:#1e1e1e}.pace-center-circle-gray-dark .pace .pace-progress{background:rgba(30,30,30,.8);color:#fff}.pace-center-radar-gray-dark .pace .pace-activity,.pace-center-radar-gray-dark .pace .pace-activity:before{border-color:#1e1e1e transparent transparent}.pace-center-simple-gray-dark .pace{background:#fff;border-color:#1e1e1e}.pace-center-simple-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-material-gray-dark .pace{color:#1e1e1e}.pace-corner-indicator-gray-dark .pace .pace-activity{background:#1e1e1e}.pace-corner-indicator-gray-dark .pace .pace-activity:after,.pace-corner-indicator-gray-dark .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-gray-dark .pace .pace-activity:before{border-right-color:rgba(30,30,30,.2);border-left-color:rgba(30,30,30,.2)}.pace-corner-indicator-gray-dark .pace .pace-activity:after{border-top-color:rgba(30,30,30,.2);border-bottom-color:rgba(30,30,30,.2)}.pace-fill-left-gray-dark .pace .pace-progress{background-color:rgba(30,30,30,.2)}.pace-flash-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-flash-gray-dark .pace .pace-progress-inner{box-shadow:0 0 10px #1e1e1e,0 0 5px #1e1e1e}.pace-flash-gray-dark .pace .pace-activity{border-top-color:#1e1e1e;border-left-color:#1e1e1e}.pace-loading-bar-gray-dark .pace .pace-progress{background:#1e1e1e;color:#1e1e1e;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-gray-dark .pace .pace-activity{box-shadow:inset 0 0 0 2px #1e1e1e,inset 0 0 0 7px #fff}.pace-mac-osx-gray-dark .pace .pace-progress{background-color:#1e1e1e;box-shadow:inset -1px 0 #1e1e1e,inset 0 -1px #1e1e1e,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-gray-dark .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-gray-dark .pace-progress{color:#1e1e1e}.jqstooltip{height:auto!important;padding:5px!important;width:auto!important}.connectedSortable{min-height:100px}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sort-highlight{background:#babfc7;border:1px dashed #dae1e7;margin-bottom:10px}.chart{overflow:hidden;position:relative}.border-transparent{border-color:transparent!important}.description-block{display:block;margin:10px 0;text-align:center}.description-block.margin-bottom{margin-bottom:25px}.description-block>.description-header{font-size:16px;font-weight:600;margin:0;padding:0}.description-block>.description-text{text-transform:uppercase}.description-block .description-icon{font-size:16px}.list-group-unbordered>.list-group-item{border-left:0;border-radius:0;border-right:0;padding-left:0;padding-right:0}.list-header{color:#b8c2cc;font-size:15px;font-weight:700;padding:10px 4px}.list-seperator{background:rgba(34,41,47,.125);height:1px;margin:15px 0 9px}.list-link>a{color:#b8c2cc;padding:4px}.list-link>a:hover{color:#2a2e30}.user-block{float:left}.user-block img{float:left;height:40px;width:40px}.user-block .comment,.user-block .description,.user-block .username{display:block;margin-left:50px}.user-block .username{font-size:16px;font-weight:600;margin-top:-1px}.user-block .description{color:#b8c2cc;font-size:13px;margin-top:-3px}.user-block.user-block-sm img{width:1.875rem;height:1.875rem}.user-block.user-block-sm .comment,.user-block.user-block-sm .description,.user-block.user-block-sm .username{margin-left:40px}.user-block.user-block-sm .username{font-size:14px}.img-lg,.img-md,.img-sm{float:left}.img-sm{height:1.875rem;width:1.875rem}.img-sm+.img-push{margin-left:2.5rem}.img-md{width:3.75rem;height:3.75rem}.img-md+.img-push{margin-left:4.375rem}.img-lg{width:6.25rem;height:6.25rem}.img-lg+.img-push{margin-left:6.875rem}.img-bordered{border:3px solid #adb5bd;padding:3px}.img-bordered-sm{border:2px solid #adb5bd;padding:2px}.img-rounded{border-radius:.5rem}.img-circle{border-radius:50%}.img-size-32,.img-size-50,.img-size-64{height:auto}.img-size-64{width:64px}.img-size-50{width:50px}.img-size-32{width:32px}.size-32,.size-40,.size-50{display:block;text-align:center}.size-32{height:32px;line-height:32px;width:32px}.size-40{height:40px;line-height:40px;width:40px}.size-50{height:50px;line-height:50px;width:50px}.attachment-block{background:#babfc7;border:1px solid rgba(34,41,47,.125);margin-bottom:10px;padding:5px}.attachment-block .attachment-img{float:left;height:auto;max-height:100px;max-width:100px}.attachment-block .attachment-pushed{margin-left:110px}.attachment-block .attachment-heading{margin:0}.attachment-block .attachment-text{color:#4e5154}.card>.loading-img,.card>.overlay,.info-box>.loading-img,.info-box>.overlay,.overlay-wrapper>.loading-img,.overlay-wrapper>.overlay,.small-box>.loading-img,.small-box>.overlay{height:100%;left:0;position:absolute;top:0;width:100%}.card .overlay,.info-box .overlay,.overlay-wrapper .overlay,.small-box .overlay{border-radius:.5rem;align-items:center;background:hsla(0,0%,100%,.7);display:flex;justify-content:center;z-index:50}.card .overlay>.fa,.card .overlay>.fab,.card .overlay>.far,.card .overlay>.fas,.card .overlay>.glyphicon,.card .overlay>.ion,.info-box .overlay>.fa,.info-box .overlay>.fab,.info-box .overlay>.far,.info-box .overlay>.fas,.info-box .overlay>.glyphicon,.info-box .overlay>.ion,.overlay-wrapper .overlay>.fa,.overlay-wrapper .overlay>.fab,.overlay-wrapper .overlay>.far,.overlay-wrapper .overlay>.fas,.overlay-wrapper .overlay>.glyphicon,.overlay-wrapper .overlay>.ion,.small-box .overlay>.fa,.small-box .overlay>.fab,.small-box .overlay>.far,.small-box .overlay>.fas,.small-box .overlay>.glyphicon,.small-box .overlay>.ion{color:#1e1e1e}.card .overlay.dark,.info-box .overlay.dark,.overlay-wrapper .overlay.dark,.small-box .overlay.dark{background:rgba(34,41,47,.5)}.card .overlay.dark>.fa,.card .overlay.dark>.fab,.card .overlay.dark>.far,.card .overlay.dark>.fas,.card .overlay.dark>.glyphicon,.card .overlay.dark>.ion,.info-box .overlay.dark>.fa,.info-box .overlay.dark>.fab,.info-box .overlay.dark>.far,.info-box .overlay.dark>.fas,.info-box .overlay.dark>.glyphicon,.info-box .overlay.dark>.ion,.overlay-wrapper .overlay.dark>.fa,.overlay-wrapper .overlay.dark>.fab,.overlay-wrapper .overlay.dark>.far,.overlay-wrapper .overlay.dark>.fas,.overlay-wrapper .overlay.dark>.glyphicon,.overlay-wrapper .overlay.dark>.ion,.small-box .overlay.dark>.fa,.small-box .overlay.dark>.fab,.small-box .overlay.dark>.far,.small-box .overlay.dark>.fas,.small-box .overlay.dark>.glyphicon,.small-box .overlay.dark>.ion{color:#636363}.tab-pane>.overlay-wrapper{position:relative}.tab-pane>.overlay-wrapper>.overlay{border-top-left-radius:0;border-top-right-radius:0;flex-direction:column;margin-top:-1.25rem;margin-left:-1.25rem;height:calc(100% + 2.5rem);width:calc(100% + 2.5rem)}.tab-pane>.overlay-wrapper>.overlay.dark{color:#fff}.ribbon-wrapper{height:70px;overflow:hidden;position:absolute;right:-2px;top:-2px;width:70px;z-index:10}.ribbon-wrapper.ribbon-lg{height:120px;width:120px}.ribbon-wrapper.ribbon-lg .ribbon{right:0;top:26px;width:160px}.ribbon-wrapper.ribbon-xl{height:180px;width:180px}.ribbon-wrapper.ribbon-xl .ribbon{right:4px;top:47px;width:240px}.ribbon-wrapper .ribbon{box-shadow:0 0 3px rgba(34,41,47,.3);font-size:.8rem;line-height:100%;padding:.375rem 0;position:relative;right:-2px;text-align:center;text-shadow:0 -1px 0 rgba(34,41,47,.4);text-transform:uppercase;top:10px;transform:rotate(45deg);width:90px}.ribbon-wrapper .ribbon:after,.ribbon-wrapper .ribbon:before{border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #9e9e9e;bottom:-3px;content:\"\";position:absolute}.ribbon-wrapper .ribbon:before{left:0}.ribbon-wrapper .ribbon:after{right:0}.back-to-top{bottom:1.25rem;position:fixed;right:1.25rem;z-index:1032}.back-to-top:focus{box-shadow:none}pre{padding:.75rem}blockquote{background:#fff;border-left:.7rem solid #62a8ea;margin:1.5em .7rem;padding:.5em .7rem}.box blockquote{background:#ededed}blockquote p:last-child{margin-bottom:0}blockquote h1,blockquote h2,blockquote h3,blockquote h4,blockquote h5,blockquote h6{color:#62a8ea;font-size:1.25rem;font-weight:600}blockquote.quote-primary{border-color:#62a8ea}blockquote.quote-primary h1,blockquote.quote-primary h2,blockquote.quote-primary h3,blockquote.quote-primary h4,blockquote.quote-primary h5,blockquote.quote-primary h6{color:#62a8ea}blockquote.quote-secondary{border-color:#b8c2cc}blockquote.quote-secondary h1,blockquote.quote-secondary h2,blockquote.quote-secondary h3,blockquote.quote-secondary h4,blockquote.quote-secondary h5,blockquote.quote-secondary h6{color:#b8c2cc}blockquote.quote-success{border-color:#21b978}blockquote.quote-success h1,blockquote.quote-success h2,blockquote.quote-success h3,blockquote.quote-success h4,blockquote.quote-success h5,blockquote.quote-success h6{color:#21b978}blockquote.quote-info{border-color:#4277cf}blockquote.quote-info h1,blockquote.quote-info h2,blockquote.quote-info h3,blockquote.quote-info h4,blockquote.quote-info h5,blockquote.quote-info h6{color:#4277cf}blockquote.quote-warning{border-color:#dda451}blockquote.quote-warning h1,blockquote.quote-warning h2,blockquote.quote-warning h3,blockquote.quote-warning h4,blockquote.quote-warning h5,blockquote.quote-warning h6{color:#dda451}blockquote.quote-danger{border-color:#ea5455}blockquote.quote-danger h1,blockquote.quote-danger h2,blockquote.quote-danger h3,blockquote.quote-danger h4,blockquote.quote-danger h5,blockquote.quote-danger h6{color:#ea5455}blockquote.quote-light{border-color:#f7f7f9}blockquote.quote-light h1,blockquote.quote-light h2,blockquote.quote-light h3,blockquote.quote-light h4,blockquote.quote-light h5,blockquote.quote-light h6{color:#f7f7f9}blockquote.quote-dark{border-color:#22292f}blockquote.quote-dark h1,blockquote.quote-dark h2,blockquote.quote-dark h3,blockquote.quote-dark h4,blockquote.quote-dark h5,blockquote.quote-dark h6{color:#22292f}blockquote.quote-lightblue{border-color:#3c8dbc}blockquote.quote-lightblue h1,blockquote.quote-lightblue h2,blockquote.quote-lightblue h3,blockquote.quote-lightblue h4,blockquote.quote-lightblue h5,blockquote.quote-lightblue h6{color:#3c8dbc}blockquote.quote-navy{border-color:#001f3f}blockquote.quote-navy h1,blockquote.quote-navy h2,blockquote.quote-navy h3,blockquote.quote-navy h4,blockquote.quote-navy h5,blockquote.quote-navy h6{color:#001f3f}blockquote.quote-olive{border-color:#3d9970}blockquote.quote-olive h1,blockquote.quote-olive h2,blockquote.quote-olive h3,blockquote.quote-olive h4,blockquote.quote-olive h5,blockquote.quote-olive h6{color:#3d9970}blockquote.quote-lime{border-color:#01ff70}blockquote.quote-lime h1,blockquote.quote-lime h2,blockquote.quote-lime h3,blockquote.quote-lime h4,blockquote.quote-lime h5,blockquote.quote-lime h6{color:#01ff70}blockquote.quote-fuchsia{border-color:#f012be}blockquote.quote-fuchsia h1,blockquote.quote-fuchsia h2,blockquote.quote-fuchsia h3,blockquote.quote-fuchsia h4,blockquote.quote-fuchsia h5,blockquote.quote-fuchsia h6{color:#f012be}blockquote.quote-maroon{border-color:#d81b60}blockquote.quote-maroon h1,blockquote.quote-maroon h2,blockquote.quote-maroon h3,blockquote.quote-maroon h4,blockquote.quote-maroon h5,blockquote.quote-maroon h6{color:#d81b60}blockquote.quote-blue{border-color:#3085d6}blockquote.quote-blue h1,blockquote.quote-blue h2,blockquote.quote-blue h3,blockquote.quote-blue h4,blockquote.quote-blue h5,blockquote.quote-blue h6{color:#3085d6}blockquote.quote-indigo{border-color:#5c6bc6}blockquote.quote-indigo h1,blockquote.quote-indigo h2,blockquote.quote-indigo h3,blockquote.quote-indigo h4,blockquote.quote-indigo h5,blockquote.quote-indigo h6{color:#5c6bc6}blockquote.quote-purple{border-color:#6f42c1}blockquote.quote-purple h1,blockquote.quote-purple h2,blockquote.quote-purple h3,blockquote.quote-purple h4,blockquote.quote-purple h5,blockquote.quote-purple h6{color:#6f42c1}blockquote.quote-pink{border-color:#ff8acc}blockquote.quote-pink h1,blockquote.quote-pink h2,blockquote.quote-pink h3,blockquote.quote-pink h4,blockquote.quote-pink h5,blockquote.quote-pink h6{color:#ff8acc}blockquote.quote-red{border-color:#ea5455}blockquote.quote-red h1,blockquote.quote-red h2,blockquote.quote-red h3,blockquote.quote-red h4,blockquote.quote-red h5,blockquote.quote-red h6{color:#ea5455}blockquote.quote-orange{border-color:#dda451}blockquote.quote-orange h1,blockquote.quote-orange h2,blockquote.quote-orange h3,blockquote.quote-orange h4,blockquote.quote-orange h5,blockquote.quote-orange h6{color:#dda451}blockquote.quote-yellow{border-color:#edc30e}blockquote.quote-yellow h1,blockquote.quote-yellow h2,blockquote.quote-yellow h3,blockquote.quote-yellow h4,blockquote.quote-yellow h5,blockquote.quote-yellow h6{color:#edc30e}blockquote.quote-green{border-color:#21b978}blockquote.quote-green h1,blockquote.quote-green h2,blockquote.quote-green h3,blockquote.quote-green h4,blockquote.quote-green h5,blockquote.quote-green h6{color:#21b978}blockquote.quote-teal{border-color:#20c997}blockquote.quote-teal h1,blockquote.quote-teal h2,blockquote.quote-teal h3,blockquote.quote-teal h4,blockquote.quote-teal h5,blockquote.quote-teal h6{color:#20c997}blockquote.quote-cyan{border-color:#7367f0}blockquote.quote-cyan h1,blockquote.quote-cyan h2,blockquote.quote-cyan h3,blockquote.quote-cyan h4,blockquote.quote-cyan h5,blockquote.quote-cyan h6{color:#7367f0}blockquote.quote-white{border-color:#fff}blockquote.quote-white h1,blockquote.quote-white h2,blockquote.quote-white h3,blockquote.quote-white h4,blockquote.quote-white h5,blockquote.quote-white h6{color:#fff}blockquote.quote-gray{border-color:#b8c2cc}blockquote.quote-gray h1,blockquote.quote-gray h2,blockquote.quote-gray h3,blockquote.quote-gray h4,blockquote.quote-gray h5,blockquote.quote-gray h6{color:#b8c2cc}blockquote.quote-gray-dark{border-color:#1e1e1e}blockquote.quote-gray-dark h1,blockquote.quote-gray-dark h2,blockquote.quote-gray-dark h3,blockquote.quote-gray-dark h4,blockquote.quote-gray-dark h5,blockquote.quote-gray-dark h6{color:#1e1e1e}.tab-custom-content{border-top:1px solid #dae1e7;margin-top:.5rem;padding-top:.5rem}.nav+.tab-custom-content{border-top:none;border-bottom:1px solid #dae1e7;margin-top:0;margin-bottom:.5rem;padding-bottom:.5rem}.badge-btn{border-radius:.15rem;font-size:.75rem;font-weight:400;padding:.25rem .5rem}.badge-btn.badge-pill{padding:.375rem .6rem}@media print{.content-header,.main-header,.main-sidebar,.no-print{display:none!important}.content-wrapper,.main-footer{transform:translate(0);margin-left:0!important;min-height:0!important}.layout-fixed .content-wrapper{padding-top:0!important}.invoice{border:0;margin:0;padding:0;width:100%}.invoice-col{float:left;width:33.3333333%}.table-responsive{overflow:auto}.table-responsive>.table tr td,.table-responsive>.table tr th{white-space:normal!important}}.text-bold,.text-bold.table td,.text-bold.table th{font-weight:700}.text-xs{font-size:.75rem!important}.text-md,.text-sm{font-size:1rem!important}.text-lg{font-size:2rem!important}.text-xl{font-size:1.5rem!important}.text-lightblue{color:#3c8dbc}.text-navy{color:#001f3f}.text-olive{color:#3d9970}.text-lime{color:#01ff70}.text-fuchsia{color:#f012be}.text-maroon{color:#d81b60}.text-blue{color:#3085d6}.text-indigo{color:#5c6bc6}.text-purple{color:#6f42c1}.text-pink{color:#ff8acc}.text-red{color:#ea5455}.text-orange{color:#dda451}.text-yellow{color:#edc30e}.text-green{color:#21b978}.text-teal{color:#20c997}.text-cyan{color:#7367f0}.text-white{color:#fff}.text-gray{color:#b8c2cc}.text-gray-dark{color:#1e1e1e}.elevation-0{box-shadow:none!important}.elevation-1{box-shadow:0 1px 3px rgba(34,41,47,.12),0 1px 2px rgba(34,41,47,.24)!important}.elevation-2{box-shadow:0 3px 6px rgba(34,41,47,.16),0 3px 6px rgba(34,41,47,.23)!important}.elevation-3{box-shadow:0 10px 20px rgba(34,41,47,.19),0 6px 6px rgba(34,41,47,.23)!important}.elevation-4{box-shadow:0 14px 28px rgba(34,41,47,.25),0 10px 10px rgba(34,41,47,.22)!important}.elevation-5{box-shadow:0 19px 38px rgba(34,41,47,.3),0 15px 12px rgba(34,41,47,.22)!important}.bg-primary{background-color:#62a8ea!important}.bg-primary,.bg-primary>a{color:#2a2e30!important}.bg-primary.btn:hover{border-color:#358fe4;color:#181a1c}.bg-primary.btn.active,.bg-primary.btn:active,.bg-primary.btn:not(:disabled):not(.disabled).active,.bg-primary.btn:not(:disabled):not(.disabled):active{background-color:#358fe4!important;border-color:#2a89e2;color:#fff}.bg-secondary{background-color:#b8c2cc!important}.bg-secondary,.bg-secondary>a{color:#2a2e30!important}.bg-secondary.btn:hover{border-color:#9aa9b7;color:#181a1c}.bg-secondary.btn.active,.bg-secondary.btn:active,.bg-secondary.btn:not(:disabled):not(.disabled).active,.bg-secondary.btn:not(:disabled):not(.disabled):active{background-color:#9aa9b7!important;border-color:#93a2b1;color:#2a2e30}.bg-success{background-color:#21b978!important}.bg-success,.bg-success>a{color:#fff!important}.bg-success.btn:hover{border-color:#198e5c;color:#ececec}.bg-success.btn.active,.bg-success.btn:active,.bg-success.btn:not(:disabled):not(.disabled).active,.bg-success.btn:not(:disabled):not(.disabled):active{background-color:#198e5c!important;border-color:#178355;color:#fff}.bg-info{background-color:#4277cf!important}.bg-info,.bg-info>a{color:#fff!important}.bg-info.btn:hover{border-color:#2d5fb1;color:#ececec}.bg-info.btn.active,.bg-info.btn:active,.bg-info.btn:not(:disabled):not(.disabled).active,.bg-info.btn:not(:disabled):not(.disabled):active{background-color:#2d5fb1!important;border-color:#2a59a7;color:#fff}.bg-warning{background-color:#dda451!important}.bg-warning,.bg-warning>a{color:#2a2e30!important}.bg-warning.btn:hover{border-color:#d28d29;color:#181a1c}.bg-warning.btn.active,.bg-warning.btn:active,.bg-warning.btn:not(:disabled):not(.disabled).active,.bg-warning.btn:not(:disabled):not(.disabled):active{background-color:#d28d29!important;border-color:#c78627;color:#2a2e30}.bg-danger{background-color:#ea5455!important}.bg-danger,.bg-danger>a{color:#fff!important}.bg-danger.btn:hover{border-color:#e42728;color:#ececec}.bg-danger.btn.active,.bg-danger.btn:active,.bg-danger.btn:not(:disabled):not(.disabled).active,.bg-danger.btn:not(:disabled):not(.disabled):active{background-color:#e42728!important;border-color:#e21c1d;color:#fff}.bg-light{background-color:#f7f7f9!important}.bg-light,.bg-light>a{color:#2a2e30!important}.bg-light.btn:hover{border-color:#dadae3;color:#181a1c}.bg-light.btn.active,.bg-light.btn:active,.bg-light.btn:not(:disabled):not(.disabled).active,.bg-light.btn:not(:disabled):not(.disabled):active{background-color:#dadae3!important;border-color:#d3d3de;color:#2a2e30}.bg-dark{background-color:#22292f!important}.bg-dark,.bg-dark>a{color:#fff!important}.bg-dark.btn:hover{border-color:#0d0f11;color:#ececec}.bg-dark.btn.active,.bg-dark.btn:active,.bg-dark.btn:not(:disabled):not(.disabled).active,.bg-dark.btn:not(:disabled):not(.disabled):active{background-color:#0d0f11!important;border-color:#07090a;color:#fff}.bg-lightblue{background-color:#3c8dbc!important}.bg-lightblue,.bg-lightblue>a{color:#fff!important}.bg-lightblue.btn:hover{border-color:#307095;color:#ececec}.bg-lightblue.btn.active,.bg-lightblue.btn:active,.bg-lightblue.btn:not(:disabled):not(.disabled).active,.bg-lightblue.btn:not(:disabled):not(.disabled):active{background-color:#307095!important;border-color:#2d698c;color:#fff}.bg-navy{background-color:#001f3f!important}.bg-navy,.bg-navy>a{color:#fff!important}.bg-navy.btn:hover{border-color:#00060c;color:#ececec}.bg-navy.btn.active,.bg-navy.btn:active,.bg-navy.btn:not(:disabled):not(.disabled).active,.bg-navy.btn:not(:disabled):not(.disabled):active{background-color:#00060c!important;border-color:#000;color:#fff}.bg-olive{background-color:#3d9970!important}.bg-olive,.bg-olive>a{color:#fff!important}.bg-olive.btn:hover{border-color:#2e7555;color:#ececec}.bg-olive.btn.active,.bg-olive.btn:active,.bg-olive.btn:not(:disabled):not(.disabled).active,.bg-olive.btn:not(:disabled):not(.disabled):active{background-color:#2e7555!important;border-color:#2b6b4f;color:#fff}.bg-lime{background-color:#01ff70!important}.bg-lime,.bg-lime>a{color:#2a2e30!important}.bg-lime.btn:hover{border-color:#00cd5a;color:#181a1c}.bg-lime.btn.active,.bg-lime.btn:active,.bg-lime.btn:not(:disabled):not(.disabled).active,.bg-lime.btn:not(:disabled):not(.disabled):active{background-color:#00cd5a!important;border-color:#00c054;color:#fff}.bg-fuchsia{background-color:#f012be!important}.bg-fuchsia,.bg-fuchsia>a{color:#fff!important}.bg-fuchsia.btn:hover{border-color:#c30c9a;color:#ececec}.bg-fuchsia.btn.active,.bg-fuchsia.btn:active,.bg-fuchsia.btn:not(:disabled):not(.disabled).active,.bg-fuchsia.btn:not(:disabled):not(.disabled):active{background-color:#c30c9a!important;border-color:#b70c90;color:#fff}.bg-maroon{background-color:#d81b60!important}.bg-maroon,.bg-maroon>a{color:#fff!important}.bg-maroon.btn:hover{border-color:#ab154c;color:#ececec}.bg-maroon.btn.active,.bg-maroon.btn:active,.bg-maroon.btn:not(:disabled):not(.disabled).active,.bg-maroon.btn:not(:disabled):not(.disabled):active{background-color:#ab154c!important;border-color:#9f1447;color:#fff}.bg-blue{background-color:#3085d6!important}.bg-blue,.bg-blue>a{color:#fff!important}.bg-blue.btn:hover{border-color:#236bb0;color:#ececec}.bg-blue.btn.active,.bg-blue.btn:active,.bg-blue.btn:not(:disabled):not(.disabled).active,.bg-blue.btn:not(:disabled):not(.disabled):active{background-color:#236bb0!important;border-color:#2165a5;color:#fff}.bg-indigo{background-color:#5c6bc6!important}.bg-indigo,.bg-indigo>a{color:#fff!important}.bg-indigo.btn:hover{border-color:#3e4eb1;color:#ececec}.bg-indigo.btn.active,.bg-indigo.btn:active,.bg-indigo.btn:not(:disabled):not(.disabled).active,.bg-indigo.btn:not(:disabled):not(.disabled):active{background-color:#3e4eb1!important;border-color:#3b4aa8;color:#fff}.bg-purple{background-color:#6f42c1!important}.bg-purple,.bg-purple>a{color:#fff!important}.bg-purple.btn:hover{border-color:#59339d;color:#ececec}.bg-purple.btn.active,.bg-purple.btn:active,.bg-purple.btn:not(:disabled):not(.disabled).active,.bg-purple.btn:not(:disabled):not(.disabled):active{background-color:#59339d!important;border-color:#533093;color:#fff}.bg-pink{background-color:#ff8acc!important}.bg-pink,.bg-pink>a{color:#2a2e30!important}.bg-pink.btn:hover{border-color:#ff57b6;color:#181a1c}.bg-pink.btn.active,.bg-pink.btn:active,.bg-pink.btn:not(:disabled):not(.disabled).active,.bg-pink.btn:not(:disabled):not(.disabled):active{background-color:#ff57b6!important;border-color:#ff4ab0;color:#fff}.bg-red{background-color:#ea5455!important}.bg-red,.bg-red>a{color:#fff!important}.bg-red.btn:hover{border-color:#e42728;color:#ececec}.bg-red.btn.active,.bg-red.btn:active,.bg-red.btn:not(:disabled):not(.disabled).active,.bg-red.btn:not(:disabled):not(.disabled):active{background-color:#e42728!important;border-color:#e21c1d;color:#fff}.bg-orange{background-color:#dda451!important}.bg-orange,.bg-orange>a{color:#2a2e30!important}.bg-orange.btn:hover{border-color:#d28d29;color:#181a1c}.bg-orange.btn.active,.bg-orange.btn:active,.bg-orange.btn:not(:disabled):not(.disabled).active,.bg-orange.btn:not(:disabled):not(.disabled):active{background-color:#d28d29!important;border-color:#c78627;color:#2a2e30}.bg-yellow{background-color:#edc30e!important}.bg-yellow,.bg-yellow>a{color:#2a2e30!important}.bg-yellow.btn:hover{border-color:#bd9b0b;color:#181a1c}.bg-yellow.btn.active,.bg-yellow.btn:active,.bg-yellow.btn:not(:disabled):not(.disabled).active,.bg-yellow.btn:not(:disabled):not(.disabled):active{background-color:#bd9b0b!important;border-color:#b1910a;color:#fff}.bg-green{background-color:#21b978!important}.bg-green,.bg-green>a{color:#fff!important}.bg-green.btn:hover{border-color:#198e5c;color:#ececec}.bg-green.btn.active,.bg-green.btn:active,.bg-green.btn:not(:disabled):not(.disabled).active,.bg-green.btn:not(:disabled):not(.disabled):active{background-color:#198e5c!important;border-color:#178355;color:#fff}.bg-teal{background-color:#20c997!important}.bg-teal,.bg-teal>a{color:#fff!important}.bg-teal.btn:hover{border-color:#199d76;color:#ececec}.bg-teal.btn.active,.bg-teal.btn:active,.bg-teal.btn:not(:disabled):not(.disabled).active,.bg-teal.btn:not(:disabled):not(.disabled):active{background-color:#199d76!important;border-color:#17926e;color:#fff}.bg-cyan{background-color:#7367f0!important}.bg-cyan,.bg-cyan>a{color:#fff!important}.bg-cyan.btn:hover{border-color:#4839eb;color:#ececec}.bg-cyan.btn.active,.bg-cyan.btn:active,.bg-cyan.btn:not(:disabled):not(.disabled).active,.bg-cyan.btn:not(:disabled):not(.disabled):active{background-color:#4839eb!important;border-color:#3e2dea;color:#fff}.bg-white{background-color:#fff!important}.bg-white,.bg-white>a{color:#2a2e30!important}.bg-white.btn:hover{border-color:#e6e6e6;color:#181a1c}.bg-white.btn.active,.bg-white.btn:active,.bg-white.btn:not(:disabled):not(.disabled).active,.bg-white.btn:not(:disabled):not(.disabled):active{background-color:#e6e6e6!important;border-color:#dfdfdf;color:#2a2e30}.bg-gray{background-color:#b8c2cc!important}.bg-gray,.bg-gray>a{color:#2a2e30!important}.bg-gray.btn:hover{border-color:#9aa9b7;color:#181a1c}.bg-gray.btn.active,.bg-gray.btn:active,.bg-gray.btn:not(:disabled):not(.disabled).active,.bg-gray.btn:not(:disabled):not(.disabled):active{background-color:#9aa9b7!important;border-color:#93a2b1;color:#2a2e30}.bg-gray-dark{background-color:#1e1e1e!important}.bg-gray-dark,.bg-gray-dark>a{color:#fff!important}.bg-gray-dark.btn:hover{border-color:#050505;color:#ececec}.bg-gray-dark.btn.active,.bg-gray-dark.btn:active,.bg-gray-dark.btn:not(:disabled):not(.disabled).active,.bg-gray-dark.btn:not(:disabled):not(.disabled):active{background-color:#050505!important;border-color:#000;color:#fff}.bg-gray{background-color:#adb5bd;color:#2a2e30}.bg-gray-light{background-color:#f5f5f5;color:#2a2e30!important}.bg-black{background-color:#22292f;color:#fff!important}.bg-white{background-color:#fff;color:#2a2e30!important}.bg-gradient-primary{color:#2a2e30;background:#62a8ea linear-gradient(180deg,#77b3ec,#62a8ea) repeat-x!important}.bg-gradient-primary.btn.disabled,.bg-gradient-primary.btn:disabled,.bg-gradient-primary.btn:not(:disabled):not(.disabled).active,.bg-gradient-primary.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-primary.btn.dropdown-toggle{background-image:none!important}.bg-gradient-primary.btn:hover{border-color:#358fe4;color:#181a1c;background:#4095e5 linear-gradient(180deg,#5aa3e8,#4095e5) repeat-x!important}.bg-gradient-primary.btn.active,.bg-gradient-primary.btn:active,.bg-gradient-primary.btn:not(:disabled):not(.disabled).active,.bg-gradient-primary.btn:not(:disabled):not(.disabled):active{border-color:#2a89e2;color:#fff;background:#358fe4 linear-gradient(180deg,#519ee7,#358fe4) repeat-x!important}.bg-gradient-secondary{color:#2a2e30;background:#b8c2cc linear-gradient(180deg,#c0c9d2,#b8c2cc) repeat-x!important}.bg-gradient-secondary.btn.disabled,.bg-gradient-secondary.btn:disabled,.bg-gradient-secondary.btn:not(:disabled):not(.disabled).active,.bg-gradient-secondary.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-secondary.btn.dropdown-toggle{background-image:none!important}.bg-gradient-secondary.btn:hover{border-color:#9aa9b7;color:#181a1c;background:#a2afbc linear-gradient(180deg,#aeb9c5,#a2afbc) repeat-x!important}.bg-gradient-secondary.btn.active,.bg-gradient-secondary.btn:active,.bg-gradient-secondary.btn:not(:disabled):not(.disabled).active,.bg-gradient-secondary.btn:not(:disabled):not(.disabled):active{border-color:#93a2b1;color:#2a2e30;background:#9aa9b7 linear-gradient(180deg,#a7b4c1,#9aa9b7) repeat-x!important}.bg-gradient-success{color:#fff;background:#21b978 linear-gradient(180deg,#40c18b,#21b978) repeat-x!important}.bg-gradient-success.btn.disabled,.bg-gradient-success.btn:disabled,.bg-gradient-success.btn:not(:disabled):not(.disabled).active,.bg-gradient-success.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-success.btn.dropdown-toggle{background-image:none!important}.bg-gradient-success.btn:hover{border-color:#198e5c;color:#ececec;background:#1b9963 linear-gradient(180deg,#3ba679,#1b9963) repeat-x!important}.bg-gradient-success.btn.active,.bg-gradient-success.btn:active,.bg-gradient-success.btn:not(:disabled):not(.disabled).active,.bg-gradient-success.btn:not(:disabled):not(.disabled):active{border-color:#178355;color:#fff;background:#198e5c linear-gradient(180deg,#399d73,#198e5c) repeat-x!important}.bg-gradient-info{color:#fff;background:#4277cf linear-gradient(180deg,#5c89d5,#4277cf) repeat-x!important}.bg-gradient-info.btn.disabled,.bg-gradient-info.btn:disabled,.bg-gradient-info.btn:not(:disabled):not(.disabled).active,.bg-gradient-info.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-info.btn.dropdown-toggle{background-image:none!important}.bg-gradient-info.btn:hover{border-color:#2d5fb1;color:#ececec;background:#3064bb linear-gradient(180deg,#4d79c4,#3064bb) repeat-x!important}.bg-gradient-info.btn.active,.bg-gradient-info.btn:active,.bg-gradient-info.btn:not(:disabled):not(.disabled).active,.bg-gradient-info.btn:not(:disabled):not(.disabled):active{border-color:#2a59a7;color:#fff;background:#2d5fb1 linear-gradient(180deg,#4a75bc,#2d5fb1) repeat-x!important}.bg-gradient-warning{color:#2a2e30;background:#dda451 linear-gradient(180deg,#e0b06a,#dda451) repeat-x!important}.bg-gradient-warning.btn.disabled,.bg-gradient-warning.btn:disabled,.bg-gradient-warning.btn:not(:disabled):not(.disabled).active,.bg-gradient-warning.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-warning.btn.dropdown-toggle{background-image:none!important}.bg-gradient-warning.btn:hover{border-color:#d28d29;color:#181a1c;background:#d79331 linear-gradient(180deg,#dba14f,#d79331) repeat-x!important}.bg-gradient-warning.btn.active,.bg-gradient-warning.btn:active,.bg-gradient-warning.btn:not(:disabled):not(.disabled).active,.bg-gradient-warning.btn:not(:disabled):not(.disabled):active{border-color:#c78627;color:#2a2e30;background:#d28d29 linear-gradient(180deg,#d69c48,#d28d29) repeat-x!important}.bg-gradient-danger{color:#fff;background:#ea5455 linear-gradient(180deg,#eb6c6d,#ea5455) repeat-x!important}.bg-gradient-danger.btn.disabled,.bg-gradient-danger.btn:disabled,.bg-gradient-danger.btn:not(:disabled):not(.disabled).active,.bg-gradient-danger.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-danger.btn.dropdown-toggle{background-image:none!important}.bg-gradient-danger.btn:hover{border-color:#e42728;color:#ececec;background:#e63233 linear-gradient(180deg,#e74f50,#e63233) repeat-x!important}.bg-gradient-danger.btn.active,.bg-gradient-danger.btn:active,.bg-gradient-danger.btn:not(:disabled):not(.disabled).active,.bg-gradient-danger.btn:not(:disabled):not(.disabled):active{border-color:#e21c1d;color:#fff;background:#e42728 linear-gradient(180deg,#e64547,#e42728) repeat-x!important}.bg-gradient-light{color:#2a2e30;background:#f7f7f9 linear-gradient(180deg,#f6f6f9,#f7f7f9) repeat-x!important}.bg-gradient-light.btn.disabled,.bg-gradient-light.btn:disabled,.bg-gradient-light.btn:not(:disabled):not(.disabled).active,.bg-gradient-light.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-light.btn.dropdown-toggle{background-image:none!important}.bg-gradient-light.btn:hover{border-color:#dadae3;color:#181a1c;background:#e1e1e9 linear-gradient(180deg,#e3e3eb,#e1e1e9) repeat-x!important}.bg-gradient-light.btn.active,.bg-gradient-light.btn:active,.bg-gradient-light.btn:not(:disabled):not(.disabled).active,.bg-gradient-light.btn:not(:disabled):not(.disabled):active{border-color:#d3d3de;color:#2a2e30;background:#dadae3 linear-gradient(180deg,#dddde6,#dadae3) repeat-x!important}.bg-gradient-dark{color:#fff;background:#22292f linear-gradient(180deg,#41474d,#22292f) repeat-x!important}.bg-gradient-dark.btn.disabled,.bg-gradient-dark.btn:disabled,.bg-gradient-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-dark.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-dark.btn.dropdown-toggle{background-image:none!important}.bg-gradient-dark.btn:hover{border-color:#0d0f11;color:#ececec;background:#121619 linear-gradient(180deg,#33373a,#121619) repeat-x!important}.bg-gradient-dark.btn.active,.bg-gradient-dark.btn:active,.bg-gradient-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-dark.btn:not(:disabled):not(.disabled):active{border-color:#07090a;color:#fff;background:#0d0f11 linear-gradient(180deg,#2f3134,#0d0f11) repeat-x!important}.bg-gradient-lightblue{color:#fff;background:#3c8dbc linear-gradient(180deg,#579cc5,#3c8dbc) repeat-x!important}.bg-gradient-lightblue.btn.disabled,.bg-gradient-lightblue.btn:disabled,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled).active,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-lightblue.btn.dropdown-toggle{background-image:none!important}.bg-gradient-lightblue.btn:hover{border-color:#307095;color:#ececec;background:#33779f linear-gradient(180deg,#4f89ac,#33779f) repeat-x!important}.bg-gradient-lightblue.btn.active,.bg-gradient-lightblue.btn:active,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled).active,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled):active{border-color:#2d698c;color:#fff;background:#307095 linear-gradient(180deg,#4d83a4,#307095) repeat-x!important}.bg-gradient-navy{color:#fff;background:#001f3f linear-gradient(180deg,#243f5b,#001f3f) repeat-x!important}.bg-gradient-navy.btn.disabled,.bg-gradient-navy.btn:disabled,.bg-gradient-navy.btn:not(:disabled):not(.disabled).active,.bg-gradient-navy.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-navy.btn.dropdown-toggle{background-image:none!important}.bg-gradient-navy.btn:hover{border-color:#00060c;color:#ececec;background:#000c19 linear-gradient(180deg,#242e3a,#000c19) repeat-x!important}.bg-gradient-navy.btn.active,.bg-gradient-navy.btn:active,.bg-gradient-navy.btn:not(:disabled):not(.disabled).active,.bg-gradient-navy.btn:not(:disabled):not(.disabled):active{border-color:#000;color:#fff;background:#00060c linear-gradient(180deg,#24292f,#00060c) repeat-x!important}.bg-gradient-olive{color:#fff;background:#3d9970 linear-gradient(180deg,#58a684,#3d9970) repeat-x!important}.bg-gradient-olive.btn.disabled,.bg-gradient-olive.btn:disabled,.bg-gradient-olive.btn:not(:disabled):not(.disabled).active,.bg-gradient-olive.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-olive.btn.dropdown-toggle{background-image:none!important}.bg-gradient-olive.btn:hover{border-color:#2e7555;color:#ececec;background:#327e5c linear-gradient(180deg,#4e8f73,#327e5c) repeat-x!important}.bg-gradient-olive.btn.active,.bg-gradient-olive.btn:active,.bg-gradient-olive.btn:not(:disabled):not(.disabled).active,.bg-gradient-olive.btn:not(:disabled):not(.disabled):active{border-color:#2b6b4f;color:#fff;background:#2e7555 linear-gradient(180deg,#4b886d,#2e7555) repeat-x!important}.bg-gradient-lime{color:#2a2e30;background:#01ff70 linear-gradient(180deg,#25fd84,#01ff70) repeat-x!important}.bg-gradient-lime.btn.disabled,.bg-gradient-lime.btn:disabled,.bg-gradient-lime.btn:not(:disabled):not(.disabled).active,.bg-gradient-lime.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-lime.btn.dropdown-toggle{background-image:none!important}.bg-gradient-lime.btn:hover{border-color:#00cd5a;color:#181a1c;background:#00da5f linear-gradient(180deg,#24dd76,#00da5f) repeat-x!important}.bg-gradient-lime.btn.active,.bg-gradient-lime.btn:active,.bg-gradient-lime.btn:not(:disabled):not(.disabled).active,.bg-gradient-lime.btn:not(:disabled):not(.disabled):active{border-color:#00c054;color:#fff;background:#00cd5a linear-gradient(180deg,#24d272,#00cd5a) repeat-x!important}.bg-gradient-fuchsia{color:#fff;background:#f012be linear-gradient(180deg,#f033c7,#f012be) repeat-x!important}.bg-gradient-fuchsia.btn.disabled,.bg-gradient-fuchsia.btn:disabled,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-fuchsia.btn.dropdown-toggle{background-image:none!important}.bg-gradient-fuchsia.btn:hover{border-color:#c30c9a;color:#ececec;background:#cf0da3 linear-gradient(180deg,#d42fb0,#cf0da3) repeat-x!important}.bg-gradient-fuchsia.btn.active,.bg-gradient-fuchsia.btn:active,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active{border-color:#b70c90;color:#fff;background:#c30c9a linear-gradient(180deg,#ca2ea8,#c30c9a) repeat-x!important}.bg-gradient-maroon{color:#fff;background:#d81b60 linear-gradient(180deg,#db3b77,#d81b60) repeat-x!important}.bg-gradient-maroon.btn.disabled,.bg-gradient-maroon.btn:disabled,.bg-gradient-maroon.btn:not(:disabled):not(.disabled).active,.bg-gradient-maroon.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-maroon.btn.dropdown-toggle{background-image:none!important}.bg-gradient-maroon.btn:hover{border-color:#ab154c;color:#ececec;background:#b61751 linear-gradient(180deg,#bf386a,#b61751) repeat-x!important}.bg-gradient-maroon.btn.active,.bg-gradient-maroon.btn:active,.bg-gradient-maroon.btn:not(:disabled):not(.disabled).active,.bg-gradient-maroon.btn:not(:disabled):not(.disabled):active{border-color:#9f1447;color:#fff;background:#ab154c linear-gradient(180deg,#b53666,#ab154c) repeat-x!important}.bg-gradient-blue{color:#fff;background:#3085d6 linear-gradient(180deg,#4d95db,#3085d6) repeat-x!important}.bg-gradient-blue.btn.disabled,.bg-gradient-blue.btn:disabled,.bg-gradient-blue.btn:not(:disabled):not(.disabled).active,.bg-gradient-blue.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-blue.btn.dropdown-toggle{background-image:none!important}.bg-gradient-blue.btn:hover{border-color:#236bb0;color:#ececec;background:#2572bb linear-gradient(180deg,#4385c4,#2572bb) repeat-x!important}.bg-gradient-blue.btn.active,.bg-gradient-blue.btn:active,.bg-gradient-blue.btn:not(:disabled):not(.disabled).active,.bg-gradient-blue.btn:not(:disabled):not(.disabled):active{border-color:#2165a5;color:#fff;background:#236bb0 linear-gradient(180deg,#427fbb,#236bb0) repeat-x!important}.bg-gradient-indigo{color:#fff;background:#5c6bc6 linear-gradient(180deg,#727fcd,#5c6bc6) repeat-x!important}.bg-gradient-indigo.btn.disabled,.bg-gradient-indigo.btn:disabled,.bg-gradient-indigo.btn:not(:disabled):not(.disabled).active,.bg-gradient-indigo.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-indigo.btn.dropdown-toggle{background-image:none!important}.bg-gradient-indigo.btn:hover{border-color:#3e4eb1;color:#ececec;background:#4152bb linear-gradient(180deg,#5b6ac4,#4152bb) repeat-x!important}.bg-gradient-indigo.btn.active,.bg-gradient-indigo.btn:active,.bg-gradient-indigo.btn:not(:disabled):not(.disabled).active,.bg-gradient-indigo.btn:not(:disabled):not(.disabled):active{border-color:#3b4aa8;color:#fff;background:#3e4eb1 linear-gradient(180deg,#5966bc,#3e4eb1) repeat-x!important}.bg-gradient-purple{color:#fff;background:#6f42c1 linear-gradient(180deg,#825cc9,#6f42c1) repeat-x!important}.bg-gradient-purple.btn.disabled,.bg-gradient-purple.btn:disabled,.bg-gradient-purple.btn:not(:disabled):not(.disabled).active,.bg-gradient-purple.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-purple.btn.dropdown-toggle{background-image:none!important}.bg-gradient-purple.btn:hover{border-color:#59339d;color:#ececec;background:#5e37a6 linear-gradient(180deg,#7453b2,#5e37a6) repeat-x!important}.bg-gradient-purple.btn.active,.bg-gradient-purple.btn:active,.bg-gradient-purple.btn:not(:disabled):not(.disabled).active,.bg-gradient-purple.btn:not(:disabled):not(.disabled):active{border-color:#533093;color:#fff;background:#59339d linear-gradient(180deg,#7050ab,#59339d) repeat-x!important}.bg-gradient-pink{color:#2a2e30;background:#ff8acc linear-gradient(180deg,#fd99d2,#ff8acc) repeat-x!important}.bg-gradient-pink.btn.disabled,.bg-gradient-pink.btn:disabled,.bg-gradient-pink.btn:not(:disabled):not(.disabled).active,.bg-gradient-pink.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-pink.btn.dropdown-toggle{background-image:none!important}.bg-gradient-pink.btn:hover{border-color:#ff57b6;color:#181a1c;background:#ff64bb linear-gradient(180deg,#fd79c4,#ff64bb) repeat-x!important}.bg-gradient-pink.btn.active,.bg-gradient-pink.btn:active,.bg-gradient-pink.btn:not(:disabled):not(.disabled).active,.bg-gradient-pink.btn:not(:disabled):not(.disabled):active{border-color:#ff4ab0;color:#fff;background:#ff57b6 linear-gradient(180deg,#fd6ec0,#ff57b6) repeat-x!important}.bg-gradient-red{color:#fff;background:#ea5455 linear-gradient(180deg,#eb6c6d,#ea5455) repeat-x!important}.bg-gradient-red.btn.disabled,.bg-gradient-red.btn:disabled,.bg-gradient-red.btn:not(:disabled):not(.disabled).active,.bg-gradient-red.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-red.btn.dropdown-toggle{background-image:none!important}.bg-gradient-red.btn:hover{border-color:#e42728;color:#ececec;background:#e63233 linear-gradient(180deg,#e74f50,#e63233) repeat-x!important}.bg-gradient-red.btn.active,.bg-gradient-red.btn:active,.bg-gradient-red.btn:not(:disabled):not(.disabled).active,.bg-gradient-red.btn:not(:disabled):not(.disabled):active{border-color:#e21c1d;color:#fff;background:#e42728 linear-gradient(180deg,#e64547,#e42728) repeat-x!important}.bg-gradient-orange{color:#2a2e30;background:#dda451 linear-gradient(180deg,#e0b06a,#dda451) repeat-x!important}.bg-gradient-orange.btn.disabled,.bg-gradient-orange.btn:disabled,.bg-gradient-orange.btn:not(:disabled):not(.disabled).active,.bg-gradient-orange.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-orange.btn.dropdown-toggle{background-image:none!important}.bg-gradient-orange.btn:hover{border-color:#d28d29;color:#181a1c;background:#d79331 linear-gradient(180deg,#dba14f,#d79331) repeat-x!important}.bg-gradient-orange.btn.active,.bg-gradient-orange.btn:active,.bg-gradient-orange.btn:not(:disabled):not(.disabled).active,.bg-gradient-orange.btn:not(:disabled):not(.disabled):active{border-color:#c78627;color:#2a2e30;background:#d28d29 linear-gradient(180deg,#d69c48,#d28d29) repeat-x!important}.bg-gradient-yellow{color:#2a2e30;background:#edc30e linear-gradient(180deg,#edca31,#edc30e) repeat-x!important}.bg-gradient-yellow.btn.disabled,.bg-gradient-yellow.btn:disabled,.bg-gradient-yellow.btn:not(:disabled):not(.disabled).active,.bg-gradient-yellow.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-yellow.btn.dropdown-toggle{background-image:none!important}.bg-gradient-yellow.btn:hover{border-color:#bd9b0b;color:#181a1c;background:#c9a50c linear-gradient(180deg,#cfb02f,#c9a50c) repeat-x!important}.bg-gradient-yellow.btn.active,.bg-gradient-yellow.btn:active,.bg-gradient-yellow.btn:not(:disabled):not(.disabled).active,.bg-gradient-yellow.btn:not(:disabled):not(.disabled):active{border-color:#b1910a;color:#fff;background:#bd9b0b linear-gradient(180deg,#c5a82e,#bd9b0b) repeat-x!important}.bg-gradient-green{color:#fff;background:#21b978 linear-gradient(180deg,#40c18b,#21b978) repeat-x!important}.bg-gradient-green.btn.disabled,.bg-gradient-green.btn:disabled,.bg-gradient-green.btn:not(:disabled):not(.disabled).active,.bg-gradient-green.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-green.btn.dropdown-toggle{background-image:none!important}.bg-gradient-green.btn:hover{border-color:#198e5c;color:#ececec;background:#1b9963 linear-gradient(180deg,#3ba679,#1b9963) repeat-x!important}.bg-gradient-green.btn.active,.bg-gradient-green.btn:active,.bg-gradient-green.btn:not(:disabled):not(.disabled).active,.bg-gradient-green.btn:not(:disabled):not(.disabled):active{border-color:#178355;color:#fff;background:#198e5c linear-gradient(180deg,#399d73,#198e5c) repeat-x!important}.bg-gradient-teal{color:#fff;background:#20c997 linear-gradient(180deg,#3fcfa5,#20c997) repeat-x!important}.bg-gradient-teal.btn.disabled,.bg-gradient-teal.btn:disabled,.bg-gradient-teal.btn:not(:disabled):not(.disabled).active,.bg-gradient-teal.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-teal.btn.dropdown-toggle{background-image:none!important}.bg-gradient-teal.btn:hover{border-color:#199d76;color:#ececec;background:#1ba87e linear-gradient(180deg,#3bb390,#1ba87e) repeat-x!important}.bg-gradient-teal.btn.active,.bg-gradient-teal.btn:active,.bg-gradient-teal.btn:not(:disabled):not(.disabled).active,.bg-gradient-teal.btn:not(:disabled):not(.disabled):active{border-color:#17926e;color:#fff;background:#199d76 linear-gradient(180deg,#39aa89,#199d76) repeat-x!important}.bg-gradient-cyan{color:#fff;background:#7367f0 linear-gradient(180deg,#867cf1,#7367f0) repeat-x!important}.bg-gradient-cyan.btn.disabled,.bg-gradient-cyan.btn:disabled,.bg-gradient-cyan.btn:not(:disabled):not(.disabled).active,.bg-gradient-cyan.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-cyan.btn.dropdown-toggle{background-image:none!important}.bg-gradient-cyan.btn:hover{border-color:#4839eb;color:#ececec;background:#5344ed linear-gradient(180deg,#6a5eef,#5344ed) repeat-x!important}.bg-gradient-cyan.btn.active,.bg-gradient-cyan.btn:active,.bg-gradient-cyan.btn:not(:disabled):not(.disabled).active,.bg-gradient-cyan.btn:not(:disabled):not(.disabled):active{border-color:#3e2dea;color:#fff;background:#4839eb linear-gradient(180deg,#6155ed,#4839eb) repeat-x!important}.bg-gradient-white{color:#2a2e30;background:#fff linear-gradient(180deg,#fdfdfe,#fff) repeat-x!important}.bg-gradient-white.btn.disabled,.bg-gradient-white.btn:disabled,.bg-gradient-white.btn:not(:disabled):not(.disabled).active,.bg-gradient-white.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-white.btn.dropdown-toggle{background-image:none!important}.bg-gradient-white.btn:hover{border-color:#e6e6e6;color:#181a1c;background:#ececec linear-gradient(180deg,#ecedee,#ececec) repeat-x!important}.bg-gradient-white.btn.active,.bg-gradient-white.btn:active,.bg-gradient-white.btn:not(:disabled):not(.disabled).active,.bg-gradient-white.btn:not(:disabled):not(.disabled):active{border-color:#dfdfdf;color:#2a2e30;background:#e6e6e6 linear-gradient(180deg,#e7e8e9,#e6e6e6) repeat-x!important}.bg-gradient-gray{color:#2a2e30;background:#b8c2cc linear-gradient(180deg,#c0c9d2,#b8c2cc) repeat-x!important}.bg-gradient-gray.btn.disabled,.bg-gradient-gray.btn:disabled,.bg-gradient-gray.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-gray.btn.dropdown-toggle{background-image:none!important}.bg-gradient-gray.btn:hover{border-color:#9aa9b7;color:#181a1c;background:#a2afbc linear-gradient(180deg,#aeb9c5,#a2afbc) repeat-x!important}.bg-gradient-gray.btn.active,.bg-gradient-gray.btn:active,.bg-gradient-gray.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray.btn:not(:disabled):not(.disabled):active{border-color:#93a2b1;color:#2a2e30;background:#9aa9b7 linear-gradient(180deg,#a7b4c1,#9aa9b7) repeat-x!important}.bg-gradient-gray-dark{color:#fff;background:#1e1e1e linear-gradient(180deg,#3d3e3f,#1e1e1e) repeat-x!important}.bg-gradient-gray-dark.btn.disabled,.bg-gradient-gray-dark.btn:disabled,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-gray-dark.btn.dropdown-toggle{background-image:none!important}.bg-gradient-gray-dark.btn:hover{border-color:#050505;color:#ececec;background:#0b0b0b linear-gradient(180deg,#2d2e2e,#0b0b0b) repeat-x!important}.bg-gradient-gray-dark.btn.active,.bg-gradient-gray-dark.btn:active,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active{border-color:#000;color:#fff;background:#050505 linear-gradient(180deg,#282829,#050505) repeat-x!important}[class^=bg-].disabled{opacity:.65}a.text-muted:hover{color:#62a8ea!important}.link-muted{color:#5d6974}.link-muted:focus,.link-muted:hover{color:#464f58}.link-black{color:#b8c2cc}.link-black:focus,.link-black:hover{color:#e6e8ea}.accent-primary .btn-link,.accent-primary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#62a8ea}.accent-primary .btn-link:hover,.accent-primary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#1f83e1}.accent-primary .dropdown-item.active,.accent-primary .dropdown-item:active{background:#62a8ea;color:#2a2e30}.accent-primary .custom-control-input:checked~.custom-control-label:before{background:#62a8ea;border-color:#1b76cb}.accent-primary .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-primary .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-primary .custom-file-input:focus~.custom-file-label,.accent-primary .custom-select:focus,.accent-primary .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#d2e6f9}.accent-primary .page-item .page-link{color:#62a8ea}.accent-primary .page-item.active .page-link,.accent-primary .page-item.active a{background-color:#62a8ea;border-color:#62a8ea;color:#fff}.accent-primary .page-item.disabled .page-link,.accent-primary .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-primary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-primary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-primary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-primary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-secondary .btn-link,.accent-secondary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#b8c2cc}.accent-secondary .btn-link:hover,.accent-secondary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#8b9cac}.accent-secondary .dropdown-item.active,.accent-secondary .dropdown-item:active{background:#b8c2cc;color:#2a2e30}.accent-secondary .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.accent-secondary .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-secondary .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-secondary .custom-file-input:focus~.custom-file-label,.accent-secondary .custom-select:focus,.accent-secondary .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-secondary .page-item .page-link{color:#b8c2cc}.accent-secondary .page-item.active .page-link,.accent-secondary .page-item.active a{background-color:#b8c2cc;border-color:#b8c2cc;color:#fff}.accent-secondary .page-item.disabled .page-link,.accent-secondary .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-secondary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-secondary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-secondary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-secondary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-success .btn-link,.accent-success a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#21b978}.accent-success .btn-link:hover,.accent-success a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#15784e}.accent-success .dropdown-item.active,.accent-success .dropdown-item:active{background:#21b978;color:#fff}.accent-success .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.accent-success .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-success .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-success .custom-file-input:focus~.custom-file-label,.accent-success .custom-select:focus,.accent-success .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#73e6b5}.accent-success .page-item .page-link{color:#21b978}.accent-success .page-item.active .page-link,.accent-success .page-item.active a{background-color:#21b978;border-color:#21b978;color:#fff}.accent-success .page-item.disabled .page-link,.accent-success .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-success [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-success [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-success [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-success [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-info .btn-link,.accent-info a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#4277cf}.accent-info .btn-link:hover,.accent-info a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#28549d}.accent-info .dropdown-item.active,.accent-info .dropdown-item:active{background:#4277cf;color:#fff}.accent-info .custom-control-input:checked~.custom-control-label:before{background:#4277cf;border-color:#234988}.accent-info .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-info .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-info .custom-file-input:focus~.custom-file-label,.accent-info .custom-select:focus,.accent-info .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#a8c0e9}.accent-info .page-item .page-link{color:#4277cf}.accent-info .page-item.active .page-link,.accent-info .page-item.active a{background-color:#4277cf;border-color:#4277cf;color:#fff}.accent-info .page-item.disabled .page-link,.accent-info .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-info [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-info [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-info [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-info [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-warning .btn-link,.accent-warning a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#dda451}.accent-warning .btn-link:hover,.accent-warning a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#bd7f25}.accent-warning .dropdown-item.active,.accent-warning .dropdown-item:active{background:#dda451;color:#2a2e30}.accent-warning .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.accent-warning .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-warning .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-warning .custom-file-input:focus~.custom-file-label,.accent-warning .custom-select:focus,.accent-warning .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f2dcbc}.accent-warning .page-item .page-link{color:#dda451}.accent-warning .page-item.active .page-link,.accent-warning .page-item.active a{background-color:#dda451;border-color:#dda451;color:#fff}.accent-warning .page-item.disabled .page-link,.accent-warning .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-warning [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-warning [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-warning [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-warning [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-danger .btn-link,.accent-danger a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#ea5455}.accent-danger .btn-link:hover,.accent-danger a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#d71a1c}.accent-danger .dropdown-item.active,.accent-danger .dropdown-item:active{background:#ea5455;color:#fff}.accent-danger .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.accent-danger .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-danger .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-danger .custom-file-input:focus~.custom-file-label,.accent-danger .custom-select:focus,.accent-danger .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f8c6c6}.accent-danger .page-item .page-link{color:#ea5455}.accent-danger .page-item.active .page-link,.accent-danger .page-item.active a{background-color:#ea5455;border-color:#ea5455;color:#fff}.accent-danger .page-item.disabled .page-link,.accent-danger .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-danger [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-danger [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-danger [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-danger [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-light .btn-link,.accent-light a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#f7f7f9}.accent-light .btn-link:hover,.accent-light a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#cbcbd8}.accent-light .dropdown-item.active,.accent-light .dropdown-item:active{background:#f7f7f9;color:#2a2e30}.accent-light .custom-control-input:checked~.custom-control-label:before{background:#f7f7f9;border-color:#bdbdcd}.accent-light .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-light .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-light .custom-file-input:focus~.custom-file-label,.accent-light .custom-select:focus,.accent-light .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-light .page-item .page-link{color:#f7f7f9}.accent-light .page-item.active .page-link,.accent-light .page-item.active a{background-color:#f7f7f9;border-color:#f7f7f9;color:#fff}.accent-light .page-item.disabled .page-link,.accent-light .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-light [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-light [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-light [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-light [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-dark .btn-link,.accent-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#22292f}.accent-dark .btn-link:hover,.accent-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#020203}.accent-dark .dropdown-item.active,.accent-dark .dropdown-item:active{background:#22292f;color:#fff}.accent-dark .custom-control-input:checked~.custom-control-label:before{background:#22292f;border-color:#000}.accent-dark .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-dark .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-dark .custom-file-input:focus~.custom-file-label,.accent-dark .custom-select:focus,.accent-dark .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#586a79}.accent-dark .page-item .page-link{color:#22292f}.accent-dark .page-item.active .page-link,.accent-dark .page-item.active a{background-color:#22292f;border-color:#22292f;color:#fff}.accent-dark .page-item.disabled .page-link,.accent-dark .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-lightblue .btn-link,.accent-lightblue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#3c8dbc}.accent-lightblue .btn-link:hover,.accent-lightblue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#296282}.accent-lightblue .dropdown-item.active,.accent-lightblue .dropdown-item:active{background:#3c8dbc;color:#fff}.accent-lightblue .custom-control-input:checked~.custom-control-label:before{background:#3c8dbc;border-color:#23536f}.accent-lightblue .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-lightblue .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-lightblue .custom-file-input:focus~.custom-file-label,.accent-lightblue .custom-select:focus,.accent-lightblue .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#99c5de}.accent-lightblue .page-item .page-link{color:#3c8dbc}.accent-lightblue .page-item.active .page-link,.accent-lightblue .page-item.active a{background-color:#3c8dbc;border-color:#3c8dbc;color:#fff}.accent-lightblue .page-item.disabled .page-link,.accent-lightblue .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-lightblue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lightblue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-lightblue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lightblue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-navy .btn-link,.accent-navy a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#001f3f}.accent-navy .btn-link:hover,.accent-navy a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#000}.accent-navy .dropdown-item.active,.accent-navy .dropdown-item:active{background:#001f3f;color:#fff}.accent-navy .custom-control-input:checked~.custom-control-label:before{background:#001f3f;border-color:#000}.accent-navy .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-navy .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-navy .custom-file-input:focus~.custom-file-label,.accent-navy .custom-select:focus,.accent-navy .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#005ebf}.accent-navy .page-item .page-link{color:#001f3f}.accent-navy .page-item.active .page-link,.accent-navy .page-item.active a{background-color:#001f3f;border-color:#001f3f;color:#fff}.accent-navy .page-item.disabled .page-link,.accent-navy .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-navy [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-navy [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-navy [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-navy [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-olive .btn-link,.accent-olive a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#3d9970}.accent-olive .btn-link:hover,.accent-olive a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#276248}.accent-olive .dropdown-item.active,.accent-olive .dropdown-item:active{background:#3d9970;color:#fff}.accent-olive .custom-control-input:checked~.custom-control-label:before{background:#3d9970;border-color:#20503b}.accent-olive .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-olive .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-olive .custom-file-input:focus~.custom-file-label,.accent-olive .custom-select:focus,.accent-olive .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#87cfaf}.accent-olive .page-item .page-link{color:#3d9970}.accent-olive .page-item.active .page-link,.accent-olive .page-item.active a{background-color:#3d9970;border-color:#3d9970;color:#fff}.accent-olive .page-item.disabled .page-link,.accent-olive .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-olive [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-olive [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-olive [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-olive [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-lime .btn-link,.accent-lime a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#01ff70}.accent-lime .btn-link:hover,.accent-lime a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#00b44e}.accent-lime .dropdown-item.active,.accent-lime .dropdown-item:active{background:#01ff70;color:#2a2e30}.accent-lime .custom-control-input:checked~.custom-control-label:before{background:#01ff70;border-color:#009a43}.accent-lime .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-lime .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-lime .custom-file-input:focus~.custom-file-label,.accent-lime .custom-select:focus,.accent-lime .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#81ffb8}.accent-lime .page-item .page-link{color:#01ff70}.accent-lime .page-item.active .page-link,.accent-lime .page-item.active a{background-color:#01ff70;border-color:#01ff70;color:#fff}.accent-lime .page-item.disabled .page-link,.accent-lime .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-lime [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lime [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-lime [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lime [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-fuchsia .btn-link,.accent-fuchsia a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#f012be}.accent-fuchsia .btn-link:hover,.accent-fuchsia a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#ab0b87}.accent-fuchsia .dropdown-item.active,.accent-fuchsia .dropdown-item:active{background:#f012be;color:#fff}.accent-fuchsia .custom-control-input:checked~.custom-control-label:before{background:#f012be;border-color:#930974}.accent-fuchsia .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-fuchsia .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-fuchsia .custom-file-input:focus~.custom-file-label,.accent-fuchsia .custom-select:focus,.accent-fuchsia .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f88adf}.accent-fuchsia .page-item .page-link{color:#f012be}.accent-fuchsia .page-item.active .page-link,.accent-fuchsia .page-item.active a{background-color:#f012be;border-color:#f012be;color:#fff}.accent-fuchsia .page-item.disabled .page-link,.accent-fuchsia .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-fuchsia [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-fuchsia [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-fuchsia [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-fuchsia [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-maroon .btn-link,.accent-maroon a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#d81b60}.accent-maroon .btn-link:hover,.accent-maroon a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#941342}.accent-maroon .dropdown-item.active,.accent-maroon .dropdown-item:active{background:#d81b60;color:#fff}.accent-maroon .custom-control-input:checked~.custom-control-label:before{background:#d81b60;border-color:#7d1038}.accent-maroon .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-maroon .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-maroon .custom-file-input:focus~.custom-file-label,.accent-maroon .custom-select:focus,.accent-maroon .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f083ab}.accent-maroon .page-item .page-link{color:#d81b60}.accent-maroon .page-item.active .page-link,.accent-maroon .page-item.active a{background-color:#d81b60;border-color:#d81b60;color:#fff}.accent-maroon .page-item.disabled .page-link,.accent-maroon .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-maroon [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-maroon [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-maroon [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-maroon [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-blue .btn-link,.accent-blue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#3085d6}.accent-blue .btn-link:hover,.accent-blue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#1f5e9b}.accent-blue .dropdown-item.active,.accent-blue .dropdown-item:active{background:#3085d6;color:#fff}.accent-blue .custom-control-input:checked~.custom-control-label:before{background:#3085d6;border-color:#1a5186}.accent-blue .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-blue .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-blue .custom-file-input:focus~.custom-file-label,.accent-blue .custom-select:focus,.accent-blue .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#9ac4eb}.accent-blue .page-item .page-link{color:#3085d6}.accent-blue .page-item.active .page-link,.accent-blue .page-item.active a{background-color:#3085d6;border-color:#3085d6;color:#fff}.accent-blue .page-item.disabled .page-link,.accent-blue .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-blue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-blue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-blue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-blue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-indigo .btn-link,.accent-indigo a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#5c6bc6}.accent-indigo .btn-link:hover,.accent-indigo a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#37469e}.accent-indigo .dropdown-item.active,.accent-indigo .dropdown-item:active{background:#5c6bc6;color:#fff}.accent-indigo .custom-control-input:checked~.custom-control-label:before{background:#5c6bc6;border-color:#313e8b}.accent-indigo .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-indigo .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-indigo .custom-file-input:focus~.custom-file-label,.accent-indigo .custom-select:focus,.accent-indigo .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#bac1e7}.accent-indigo .page-item .page-link{color:#5c6bc6}.accent-indigo .page-item.active .page-link,.accent-indigo .page-item.active a{background-color:#5c6bc6;border-color:#5c6bc6;color:#fff}.accent-indigo .page-item.disabled .page-link,.accent-indigo .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-indigo [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-indigo [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-indigo [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-indigo [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-purple .btn-link,.accent-purple a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#6f42c1}.accent-purple .btn-link:hover,.accent-purple a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#4e2d89}.accent-purple .dropdown-item.active,.accent-purple .dropdown-item:active{background:#6f42c1;color:#fff}.accent-purple .custom-control-input:checked~.custom-control-label:before{background:#6f42c1;border-color:#432776}.accent-purple .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-purple .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-purple .custom-file-input:focus~.custom-file-label,.accent-purple .custom-select:focus,.accent-purple .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#b8a2e0}.accent-purple .page-item .page-link{color:#6f42c1}.accent-purple .page-item.active .page-link,.accent-purple .page-item.active a{background-color:#6f42c1;border-color:#6f42c1;color:#fff}.accent-purple .page-item.disabled .page-link,.accent-purple .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-purple [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-purple [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-purple [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-purple [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-pink .btn-link,.accent-pink a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#ff8acc}.accent-pink .btn-link:hover,.accent-pink a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#ff3eab}.accent-pink .dropdown-item.active,.accent-pink .dropdown-item:active{background:#ff8acc;color:#2a2e30}.accent-pink .custom-control-input:checked~.custom-control-label:before{background:#ff8acc;border-color:#ff24a0}.accent-pink .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-pink .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-pink .custom-file-input:focus~.custom-file-label,.accent-pink .custom-select:focus,.accent-pink .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-pink .page-item .page-link{color:#ff8acc}.accent-pink .page-item.active .page-link,.accent-pink .page-item.active a{background-color:#ff8acc;border-color:#ff8acc;color:#fff}.accent-pink .page-item.disabled .page-link,.accent-pink .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-pink [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-pink [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-pink [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-pink [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-red .btn-link,.accent-red a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#ea5455}.accent-red .btn-link:hover,.accent-red a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#d71a1c}.accent-red .dropdown-item.active,.accent-red .dropdown-item:active{background:#ea5455;color:#fff}.accent-red .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.accent-red .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-red .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-red .custom-file-input:focus~.custom-file-label,.accent-red .custom-select:focus,.accent-red .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f8c6c6}.accent-red .page-item .page-link{color:#ea5455}.accent-red .page-item.active .page-link,.accent-red .page-item.active a{background-color:#ea5455;border-color:#ea5455;color:#fff}.accent-red .page-item.disabled .page-link,.accent-red .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-red [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-red [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-red [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-red [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-orange .btn-link,.accent-orange a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#dda451}.accent-orange .btn-link:hover,.accent-orange a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#bd7f25}.accent-orange .dropdown-item.active,.accent-orange .dropdown-item:active{background:#dda451;color:#2a2e30}.accent-orange .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.accent-orange .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-orange .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-orange .custom-file-input:focus~.custom-file-label,.accent-orange .custom-select:focus,.accent-orange .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f2dcbc}.accent-orange .page-item .page-link{color:#dda451}.accent-orange .page-item.active .page-link,.accent-orange .page-item.active a{background-color:#dda451;border-color:#dda451;color:#fff}.accent-orange .page-item.disabled .page-link,.accent-orange .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-orange [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-orange [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-orange [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-orange [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-yellow .btn-link,.accent-yellow a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#edc30e}.accent-yellow .btn-link:hover,.accent-yellow a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#a5880a}.accent-yellow .dropdown-item.active,.accent-yellow .dropdown-item:active{background:#edc30e;color:#2a2e30}.accent-yellow .custom-control-input:checked~.custom-control-label:before{background:#edc30e;border-color:#8d7408}.accent-yellow .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-yellow .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-yellow .custom-file-input:focus~.custom-file-label,.accent-yellow .custom-select:focus,.accent-yellow .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f8e283}.accent-yellow .page-item .page-link{color:#edc30e}.accent-yellow .page-item.active .page-link,.accent-yellow .page-item.active a{background-color:#edc30e;border-color:#edc30e;color:#fff}.accent-yellow .page-item.disabled .page-link,.accent-yellow .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-yellow [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-yellow [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-yellow [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-yellow [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-green .btn-link,.accent-green a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#21b978}.accent-green .btn-link:hover,.accent-green a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#15784e}.accent-green .dropdown-item.active,.accent-green .dropdown-item:active{background:#21b978;color:#fff}.accent-green .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.accent-green .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-green .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-green .custom-file-input:focus~.custom-file-label,.accent-green .custom-select:focus,.accent-green .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#73e6b5}.accent-green .page-item .page-link{color:#21b978}.accent-green .page-item.active .page-link,.accent-green .page-item.active a{background-color:#21b978;border-color:#21b978;color:#fff}.accent-green .page-item.disabled .page-link,.accent-green .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-green [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-green [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-green [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-green [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-teal .btn-link,.accent-teal a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#20c997}.accent-teal .btn-link:hover,.accent-teal a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#158765}.accent-teal .dropdown-item.active,.accent-teal .dropdown-item:active{background:#20c997;color:#fff}.accent-teal .custom-control-input:checked~.custom-control-label:before{background:#20c997;border-color:#127155}.accent-teal .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-teal .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-teal .custom-file-input:focus~.custom-file-label,.accent-teal .custom-select:focus,.accent-teal .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#7eeaca}.accent-teal .page-item .page-link{color:#20c997}.accent-teal .page-item.active .page-link,.accent-teal .page-item.active a{background-color:#20c997;border-color:#20c997;color:#fff}.accent-teal .page-item.disabled .page-link,.accent-teal .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-teal [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-teal [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-teal [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-teal [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-cyan .btn-link,.accent-cyan a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#7367f0}.accent-cyan .btn-link:hover,.accent-cyan a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#3321e9}.accent-cyan .dropdown-item.active,.accent-cyan .dropdown-item:active{background:#7367f0;color:#fff}.accent-cyan .custom-control-input:checked~.custom-control-label:before{background:#7367f0;border-color:#2716db}.accent-cyan .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-cyan .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-cyan .custom-file-input:focus~.custom-file-label,.accent-cyan .custom-select:focus,.accent-cyan .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#dedbfb}.accent-cyan .page-item .page-link{color:#7367f0}.accent-cyan .page-item.active .page-link,.accent-cyan .page-item.active a{background-color:#7367f0;border-color:#7367f0;color:#fff}.accent-cyan .page-item.disabled .page-link,.accent-cyan .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-cyan [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-cyan [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-cyan [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-cyan [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-white .btn-link,.accent-white a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#fff}.accent-white .btn-link:hover,.accent-white a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#d9d9d9}.accent-white .dropdown-item.active,.accent-white .dropdown-item:active{background:#fff;color:#2a2e30}.accent-white .custom-control-input:checked~.custom-control-label:before{background:#fff;border-color:#ccc}.accent-white .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-white .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-white .custom-file-input:focus~.custom-file-label,.accent-white .custom-select:focus,.accent-white .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-white .page-item .page-link{color:#fff}.accent-white .page-item.active .page-link,.accent-white .page-item.active a{background-color:#fff;border-color:#fff;color:#fff}.accent-white .page-item.disabled .page-link,.accent-white .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-white [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-white [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-white [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-white [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-gray .btn-link,.accent-gray a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#b8c2cc}.accent-gray .btn-link:hover,.accent-gray a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#8b9cac}.accent-gray .dropdown-item.active,.accent-gray .dropdown-item:active{background:#b8c2cc;color:#2a2e30}.accent-gray .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.accent-gray .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-gray .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-gray .custom-file-input:focus~.custom-file-label,.accent-gray .custom-select:focus,.accent-gray .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-gray .page-item .page-link{color:#b8c2cc}.accent-gray .page-item.active .page-link,.accent-gray .page-item.active a{background-color:#b8c2cc;border-color:#b8c2cc;color:#fff}.accent-gray .page-item.disabled .page-link,.accent-gray .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-gray [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-gray [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-gray-dark .btn-link,.accent-gray-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#1e1e1e}.accent-gray-dark .btn-link:hover,.accent-gray-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#000}.accent-gray-dark .dropdown-item.active,.accent-gray-dark .dropdown-item:active{background:#1e1e1e;color:#fff}.accent-gray-dark .custom-control-input:checked~.custom-control-label:before{background:#1e1e1e;border-color:#000}.accent-gray-dark .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-gray-dark .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-gray-dark .custom-file-input:focus~.custom-file-label,.accent-gray-dark .custom-select:focus,.accent-gray-dark .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#5e5e5e}.accent-gray-dark .page-item .page-link{color:#1e1e1e}.accent-gray-dark .page-item.active .page-link,.accent-gray-dark .page-item.active a{background-color:#1e1e1e;border-color:#1e1e1e;color:#fff}.accent-gray-dark .page-item.disabled .page-link,.accent-gray-dark .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-gray-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-gray-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}[class*=accent-] a.btn-primary,[class*=accent-] a.btn-secondary{color:#2a2e30}[class*=accent-] a.btn-info,[class*=accent-] a.btn-success{color:#fff}[class*=accent-] a.btn-warning{color:#2a2e30}[class*=accent-] a.btn-danger{color:#fff}[class*=accent-] a.btn-light{color:#2a2e30}[class*=accent-] a.btn-dark{color:#fff}"
  },
  {
    "path": "public/vendor/dcat-admin/adminlte/adminlte-blue.css",
    "content": "/*!\n *   AdminLTE v3.0.4\n *   Author: Colorlib\n *   Website: AdminLTE.io <http://adminlte.io>\n *   License: Open source - MIT <http://opensource.org/licenses/MIT>\n */\n\n/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */:root{--blue:#3085d6;--indigo:#5c6bc6;--purple:#6f42c1;--pink:#ff8acc;--red:#ea5455;--orange:#dda451;--yellow:#edc30e;--green:#21b978;--teal:#20c997;--cyan:#7367f0;--white:#fff;--gray:#b8c2cc;--gray-dark:#1e1e1e;--primary:#6d8be6;--secondary:#b8c2cc;--success:#21b978;--info:#4277cf;--warning:#dda451;--danger:#ea5455;--light:#f7f7f9;--dark:#22292f;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:\"Montserrat\",Helvetica,Arial,serif;--font-family-monospace:\"Montserrat\",Helvetica,Arial,serif}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(34,41,47,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Montserrat,Helvetica,Arial,serif;font-size:1rem;font-weight:400;line-height:1.45;color:#626262;text-align:left;background-color:#eff1f7}[tabindex=\"-1\"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#577ae2;background-color:transparent}a,a:hover{text-decoration:none}a:hover{color:#2c57db}a:not([href]):not([tabindex]),a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:Montserrat,Helvetica,Arial,serif;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#b8c2cc;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:#2c2c2c}.h1,h1{font-size:2rem}.h2,h2{font-size:1.74rem}.h3,h3{font-size:1.51rem}.h4,h4{font-size:1.32rem}.h5,h5{font-size:1.14rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(34,41,47,.1)}.small,small{font-size:smaller;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:smaller;color:#b8c2cc}.blockquote-footer:before{content:\"\\2014\\A0\"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#eff1f7;border:1px solid #dae1e7;border-radius:.5rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#b8c2cc}code{word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:90%;color:#fff;background-color:#eee;border-radius:.25rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:90%;color:#2a2e30}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:14px;padding-left:14px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:14px;padding-left:14px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-14px;margin-left:-14px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:14px;padding-left:14px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width:576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width:768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width:992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;margin-bottom:1rem;color:#626262}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #eff1f7}.table thead th{vertical-align:bottom;border-bottom:2px solid #eff1f7}.table tbody+tbody{border-top:2px solid #eff1f7}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #eff1f7}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(34,41,47,.05)}.table-hover tbody tr:hover{color:#626262;background-color:rgba(34,41,47,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#d6dff8}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#b3c3f2}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#c0cef4}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#ebeef1}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#dadfe4}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#dce1e7}.table-success,.table-success>td,.table-success>th{background-color:#c1ebd9}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8cdbb9}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#aee5cd}.table-info,.table-info>td,.table-info>th{background-color:#cad9f2}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#9db8e6}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#b6caed}.table-warning,.table-warning>td,.table-warning>th{background-color:#f5e6ce}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#edd0a5}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#f1dbb9}.table-danger,.table-danger>td,.table-danger>th{background-color:#f9cfcf}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#f4a6a7}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f6b8b8}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfd}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfbfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#f0f0f0}.table-dark,.table-dark>td,.table-dark>th{background-color:#c1c3c5}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#8c9093}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b4b6b9}.table-active,.table-active>td,.table-active>th{background-color:rgba(34,41,47,.075)}.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(23,28,32,.075)}.table .thead-dark th{color:#fff;background-color:#1e1e1e;border-color:#313131}.table .thead-light th{color:#4e5154;background-color:#ededed;border-color:#eff1f7}.table-dark{color:#fff;background-color:#1e1e1e}.table-dark td,.table-dark th,.table-dark thead th{border-color:#313131}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:34px;padding:.7rem;font-size:.96rem;font-weight:400;line-height:1.25;color:#4e5154;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#4e5154;background-color:#fff;border-color:#6d8be6;outline:0;box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.form-control::-moz-placeholder{color:rgba(0,0,0,.5);opacity:1}.form-control:-ms-input-placeholder{color:rgba(0,0,0,.5);opacity:1}.form-control::placeholder{color:rgba(0,0,0,.5);opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#f5f5f1;opacity:1}select.form-control:focus::-ms-value{color:#4e5154;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.7rem + 1px);padding-bottom:calc(.7rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.25}.col-form-label-lg{padding-top:calc(1rem + 1px);padding-bottom:calc(1rem + 1px);font-size:1.25rem;line-height:1.25}.col-form-label-sm{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:.7rem;line-height:1}.form-control-plaintext{display:block;width:100%;padding-top:.7rem;padding-bottom:.7rem;margin-bottom:0;line-height:1.25;color:#adb5bd;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:2rem;padding:.5rem 1.5rem;font-size:.7rem;line-height:1;border-radius:4px}.form-control-lg{height:calc(1.25em + 2rem + 2px);padding:1rem 2.5rem;font-size:1.25rem;line-height:1.25;border-radius:6px}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#b8c2cc}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:smaller;color:#21b978}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:1rem;line-height:1.45;color:#fff;background-color:rgba(33,185,120,.9);border-radius:.5rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#21b978;padding-right:calc(1.25em + 1.4rem);background-repeat:no-repeat;background-position:100% calc(.3125em + .35rem);background-size:calc(.625em + .7rem) calc(.625em + .7rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#21b978;box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.25em + 1.4rem);background-position:top calc(.3125em + .35rem) right calc(.3125em + .35rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#21b978;padding-right:calc(.75em + 2.75rem);background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%231e1e1e' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .7rem center/8px 10px,url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%2321b978' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E\") #fff no-repeat center right 1.7rem/calc(.625em + .7rem) calc(.625em + .7rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#21b978;box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#21b978}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#21b978}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#21b978}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#32db93;background-color:#32db93}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#21b978}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#21b978;box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:smaller;color:#ea5455}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:1rem;line-height:1.45;color:#fff;background-color:rgba(234,84,85,.9);border-radius:.5rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#ea5455;padding-right:calc(1.25em + 1.4rem);background-repeat:no-repeat;background-position:100% calc(.3125em + .35rem);background-size:calc(.625em + .7rem) calc(.625em + .7rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#ea5455;box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.25em + 1.4rem);background-position:top calc(.3125em + .35rem) right calc(.3125em + .35rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#ea5455;padding-right:calc(.75em + 2.75rem);background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%231e1e1e' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .7rem center/8px 10px,url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ea5455' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23ea5455' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E\") #fff no-repeat center right 1.7rem/calc(.625em + .7rem) calc(.625em + .7rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#ea5455;box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#ea5455}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#ea5455}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#ea5455}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#f08182;background-color:#f08182}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#ea5455}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#ea5455;box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#626262;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0 solid transparent;padding:.9rem 2rem;font-size:1rem;line-height:1;border-radius:.42rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#626262;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(109,139,230,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#6d8be6;border-color:#6d8be6}.btn-primary:hover{color:#fff;background-color:#5e7fe3;border-color:#5e7fe3}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(131,156,234,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#6d8be6;border-color:#6d8be6}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#577ae2;border-color:#577ae2}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(131,156,234,.5)}.btn-secondary{color:#2a2e30;background-color:#b8c2cc;border-color:#b8c2cc}.btn-secondary:hover{color:#2a2e30;background-color:#aeb9c5;border-color:#aeb9c5}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(163,172,181,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#2a2e30;background-color:#b8c2cc;border-color:#b8c2cc}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#2a2e30;background-color:#a9b5c1;border-color:#a9b5c1}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(163,172,181,.5)}.btn-success{color:#fff;background-color:#21b978;border-color:#21b978}.btn-success:hover{color:#fff;background-color:#1eaa6e;border-color:#1eaa6e}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(66,196,140,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#21b978;border-color:#21b978}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1da36a;border-color:#1da36a}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(66,196,140,.5)}.btn-info{color:#fff;background-color:#4277cf;border-color:#4277cf}.btn-info:hover{color:#fff;background-color:#346dcb;border-color:#346dcb}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(94,139,214,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#4277cf;border-color:#4277cf}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#3269c5;border-color:#3269c5}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(94,139,214,.5)}.btn-warning{color:#2a2e30;background-color:#dda451;border-color:#dda451}.btn-warning:hover{color:#2a2e30;background-color:#da9c42;border-color:#da9c42}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(194,146,76,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#2a2e30;background-color:#dda451;border-color:#dda451}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#2a2e30;background-color:#d9993c;border-color:#d9993c}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(194,146,76,.5)}.btn-danger{color:#fff;background-color:#ea5455;border-color:#ea5455}.btn-danger:hover{color:#fff;background-color:#e84445;border-color:#e84445}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(237,110,111,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#ea5455;border-color:#ea5455}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#e73d3e;border-color:#e73d3e}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(237,110,111,.5)}.btn-light{color:#2a2e30;background-color:#f7f7f9;border-color:#f7f7f9}.btn-light:hover{color:#2a2e30;background-color:#ededf1;border-color:#ededf1}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#2a2e30;background-color:#f7f7f9;border-color:#f7f7f9}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#2a2e30;background-color:#e8e8ee;border-color:#e8e8ee}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#22292f;border-color:#22292f}.btn-dark:hover{color:#fff;background-color:#1b2025;border-color:#1b2025}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(67,73,78,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#22292f;border-color:#22292f}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#171c20;border-color:#171c20}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(67,73,78,.5)}.btn-outline-primary,.btn-outline-primary:hover{color:#6d8be6;border-color:#6d8be6}.btn-outline-primary:hover{background-color:rgba(109,139,230,.1)}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(109,139,230,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#6d8be6;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#6d8be6;border-color:#6d8be6}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(109,139,230,.5)}.btn-outline-secondary,.btn-outline-secondary:hover{color:#b8c2cc;border-color:#b8c2cc}.btn-outline-secondary:hover{background-color:rgba(184,194,204,.1)}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(184,194,204,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#b8c2cc;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#2a2e30;background-color:#b8c2cc;border-color:#b8c2cc}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(184,194,204,.5)}.btn-outline-success,.btn-outline-success:hover{color:#21b978;border-color:#21b978}.btn-outline-success:hover{background-color:rgba(33,185,120,.1)}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(33,185,120,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#21b978;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#21b978;border-color:#21b978}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(33,185,120,.5)}.btn-outline-info,.btn-outline-info:hover{color:#4277cf;border-color:#4277cf}.btn-outline-info:hover{background-color:rgba(66,119,207,.1)}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(66,119,207,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#4277cf;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#4277cf;border-color:#4277cf}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(66,119,207,.5)}.btn-outline-warning,.btn-outline-warning:hover{color:#dda451;border-color:#dda451}.btn-outline-warning:hover{background-color:rgba(221,164,81,.1)}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(221,164,81,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#dda451;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#2a2e30;background-color:#dda451;border-color:#dda451}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(221,164,81,.5)}.btn-outline-danger,.btn-outline-danger:hover{color:#ea5455;border-color:#ea5455}.btn-outline-danger:hover{background-color:rgba(234,84,85,.1)}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(234,84,85,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#ea5455;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#ea5455;border-color:#ea5455}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(234,84,85,.5)}.btn-outline-light,.btn-outline-light:hover{color:#f7f7f9;border-color:#f7f7f9}.btn-outline-light:hover{background-color:rgba(247,247,249,.1)}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(247,247,249,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f7f7f9;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#2a2e30;background-color:#f7f7f9;border-color:#f7f7f9}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(247,247,249,.5)}.btn-outline-dark,.btn-outline-dark:hover{color:#22292f;border-color:#22292f}.btn-outline-dark:hover{background-color:rgba(34,41,47,.1)}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(34,41,47,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#22292f;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#22292f;border-color:#22292f}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(34,41,47,.5)}.btn-link{font-weight:400;color:#577ae2;text-decoration:none}.btn-link:hover{color:#2c57db;text-decoration:none}.btn-link.focus,.btn-link:focus{text-decoration:none;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#b8c2cc;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:1rem 2.5rem;font-size:1.25rem;line-height:1.25;border-radius:.4285rem}.btn-group-sm>.btn,.btn-sm{padding:.5rem 1.5rem;font-size:.7rem;line-height:1;border-radius:.4285rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:10;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.5rem 0 0;font-size:.9375rem;color:#626262;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(34,41,47,.15);border-radius:5px}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.5rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.5rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.5rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.08)}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#2a2e30;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2122;text-decoration:none;background-color:#eff1f7}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#6d8be6}.dropdown-item.disabled,.dropdown-item:disabled{color:#b8c2cc;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:1rem;color:#b8c2cc;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#2a2e30}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:1.5rem;padding-left:1.5rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:1.875rem;padding-left:1.875rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.7rem;margin-bottom:0;font-size:.96rem;font-weight:400;line-height:1.25;color:#4e5154;text-align:center;white-space:nowrap;background-color:#ededed;border:1px solid rgba(0,0,0,.2);border-radius:5px}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.25em + 2rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:1rem 2.5rem;font-size:1.25rem;line-height:1.25;border-radius:6px}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:2rem}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.5rem 1.5rem;font-size:.7rem;line-height:1;border-radius:4px}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.7rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.45rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#6d8be6;background-color:#6d8be6}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#6d8be6}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#fff;border-color:#fff}.custom-control-input:disabled~.custom-control-label{color:#b8c2cc}.custom-control-input:disabled~.custom-control-label:before{background-color:#f5f5f1}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.225rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:\"\"}.custom-control-label:after{background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#6d8be6;background-color:#6d8be6}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(109,139,230,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(109,139,230,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(109,139,230,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.225rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(109,139,230,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.25em + 1.4rem + 1px);padding:.7rem 1.7rem .7rem .7rem;font-size:.96rem;font-weight:400;line-height:1.25;color:#4e5154;vertical-align:middle;background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%231e1e1e' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .7rem center/8px 10px;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:5px;appearance:none}.custom-select:focus{border-color:#6d8be6;outline:0;box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.custom-select:focus::-ms-value{color:#4e5154;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size=\"1\"]){height:auto;padding-right:.7rem;background-image:none}.custom-select:disabled{color:#b8c2cc;background-color:#ededed}.custom-select::-ms-expand{display:none}.custom-select-sm{height:2rem;padding-top:.5rem;padding-bottom:.5rem;padding-left:1.5rem;font-size:.7rem}.custom-select-lg{height:calc(1.25em + 2rem + 2px);padding-top:1rem;padding-bottom:1rem;padding-left:2.5rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.25em + 1.4rem + 1px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#6d8be6;box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.custom-file-input:disabled~.custom-file-label{background-color:#f5f5f1}.custom-file-input:lang(en)~.custom-file-label:after{content:\"Browse\"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.25em + 1.4rem + 1px);font-weight:400;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:5px}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.7rem;line-height:1.5rem;color:#4e5154}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.25em + 1.4rem);content:\"Browse\";background-color:#ededed;border-left:inherit;border-radius:0 5px 5px 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 3px 10px 0 rgba(0,0,0,.15)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 3px 10px 0 rgba(0,0,0,.15)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 3px 10px 0 rgba(0,0,0,.15)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#6d8be6;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#fff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dae1e7;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#6d8be6;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#fff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dae1e7;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#6d8be6;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#fff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dae1e7;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.357rem .5rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#b8c2cc;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dae1e7}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#ededed #ededed #dae1e7}.nav-tabs .nav-link.disabled{color:#b8c2cc;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#4e5154;background-color:#eff1f7;border-color:#dae1e7 #dae1e7 #eff1f7}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.5rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#6d8be6}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:-.368rem;padding-bottom:-.368rem;margin-right:1rem;font-size:2rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.357rem;padding-bottom:.357rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:2rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.42rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:\"\";background:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(34,41,47,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(34,41,47,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(34,41,47,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(34,41,47,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(34,41,47,.9)}.navbar-light .navbar-toggler{color:rgba(34,41,47,.5);border-color:rgba(34,41,47,.1)}.navbar-light .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(34, 41, 47, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-light .navbar-text{color:rgba(34,41,47,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(34,41,47,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(34,41,47,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{margin-bottom:0;background-color:rgba(34,41,47,.03);border-bottom:1px solid rgba(34,41,47,.125)}.card-header:first-child{border-radius:calc(.5rem - 1px) calc(.5rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(34,41,47,.03);border-top:1px solid rgba(34,41,47,.125)}.card-footer:last-child{border-radius:0 0 calc(.5rem - 1px) calc(.5rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.5rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.5rem - 1px);border-bottom-left-radius:calc(.5rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:14px}@media (min-width:576px){.card-deck{flex-flow:row wrap;margin-right:-14px;margin-left:-14px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:14px;margin-bottom:0;margin-left:14px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:14px}@media (min-width:576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-moz-column-count:3;column-count:3;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#ededed;border-radius:.5rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;color:#b8c2cc;content:\"/\"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#b8c2cc}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.5rem}.page-link{position:relative;display:block;padding:.65rem .911rem;margin-left:-1px;line-height:1.25;color:#577ae2;background-color:#fff;border:1px solid #dae1e7}.page-link:hover{z-index:2;color:#2c57db;text-decoration:none;background-color:#ededed;border-color:#dae1e7}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(109,139,230,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.page-item:last-child .page-link{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#6d8be6;border-color:#6d8be6}.page-item.disabled .page-link{color:#b8c2cc;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dae1e7}.pagination-lg .page-link{padding:.5rem 1rem;font-size:2rem;line-height:1.25}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.6rem;border-bottom-left-radius:.6rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.6rem;border-bottom-right-radius:.6rem}.pagination-sm .page-link{padding:.5rem .75rem;font-size:1rem;line-height:1}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.5rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#6d8be6}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#4168df}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(109,139,230,.5)}.badge-secondary{color:#2a2e30;background-color:#b8c2cc}a.badge-secondary:focus,a.badge-secondary:hover{color:#2a2e30;background-color:#9aa9b7}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(184,194,204,.5)}.badge-success{color:#fff;background-color:#21b978}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#198e5c}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(33,185,120,.5)}.badge-info{color:#fff;background-color:#4277cf}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#2d5fb1}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(66,119,207,.5)}.badge-warning{color:#2a2e30;background-color:#dda451}a.badge-warning:focus,a.badge-warning:hover{color:#2a2e30;background-color:#d28d29}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(221,164,81,.5)}.badge-danger{color:#fff;background-color:#ea5455}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#e42728}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(234,84,85,.5)}.badge-light{color:#2a2e30;background-color:#f7f7f9}a.badge-light:focus,a.badge-light:hover{color:#2a2e30;background-color:#dadae3}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(247,247,249,.5)}.badge-dark{color:#fff;background-color:#22292f}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#0d0f11}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(34,41,47,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#ededed;border-radius:.6rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.5rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close,.alert-dismissible .mailbox-attachment-close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#495c8e;background-color:#e2e8fa;border-color:#d6dff8}.alert-primary hr{border-top-color:#c0cef4}.alert-primary .alert-link{color:#38466c}.alert-secondary{color:#707981;background-color:#f1f3f5;border-color:#ebeef1}.alert-secondary hr{border-top-color:#dce1e7}.alert-secondary .alert-link{color:#585f66}.alert-success{color:#217455;background-color:#d3f1e4;border-color:#c1ebd9}.alert-success hr{border-top-color:#aee5cd}.alert-success .alert-link{color:#164c38}.alert-info{color:#335282;background-color:#d9e4f5;border-color:#cad9f2}.alert-info hr{border-top-color:#b6caed}.alert-info .alert-link{color:#253b5d}.alert-warning{color:#836941;background-color:#f8eddc;border-color:#f5e6ce}.alert-warning hr{border-top-color:#f1dbb9}.alert-warning .alert-link{color:#614e30}.alert-danger{color:#8a3f43;background-color:#fbdddd;border-color:#f9cfcf}.alert-danger hr{border-top-color:#f6b8b8}.alert-danger .alert-link{color:#672f32}.alert-light{color:#919498;background-color:#fdfdfe;border-color:#fdfdfd}.alert-light hr{border-top-color:#f0f0f0}.alert-light .alert-link{color:#777a7f}.alert-dark{color:#22292f;background-color:#d3d4d5;border-color:#c1c3c5}.alert-dark hr{border-top-color:#b4b6b9}.alert-dark .alert-link{color:#0d0f11}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#ededed;border-radius:.5rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#6d8be6;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#4e5154;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#4e5154;text-decoration:none;background-color:#babfc7}.list-group-item-action:active{color:#626262;background-color:#ededed}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(34,41,47,.125)}.list-group-item:first-child{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.list-group-item.disabled,.list-group-item:disabled{color:#b8c2cc;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#6d8be6;border-color:#6d8be6}.list-group-horizontal{flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#495c8e;background-color:#d6dff8}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#495c8e;background-color:#c0cef4}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#495c8e;border-color:#495c8e}.list-group-item-secondary{color:#707981;background-color:#ebeef1}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#707981;background-color:#dce1e7}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#707981;border-color:#707981}.list-group-item-success{color:#217455;background-color:#c1ebd9}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#217455;background-color:#aee5cd}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#217455;border-color:#217455}.list-group-item-info{color:#335282;background-color:#cad9f2}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#335282;background-color:#b6caed}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#335282;border-color:#335282}.list-group-item-warning{color:#836941;background-color:#f5e6ce}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#836941;background-color:#f1dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#836941;border-color:#836941}.list-group-item-danger{color:#8a3f43;background-color:#f9cfcf}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#8a3f43;background-color:#f6b8b8}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#8a3f43;border-color:#8a3f43}.list-group-item-light{color:#919498;background-color:#fdfdfd}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#919498;background-color:#f0f0f0}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#919498;border-color:#919498}.list-group-item-dark{color:#22292f;background-color:#c1c3c5}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#22292f;background-color:#b4b6b9}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#22292f;border-color:#22292f}.close,.mailbox-attachment-close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#22292f;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.mailbox-attachment-close:hover{color:#22292f;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover,.mailbox-attachment-close:not(:disabled):not(.disabled):focus,.mailbox-attachment-close:not(:disabled):not(.disabled):hover{opacity:.75}button.close,button.mailbox-attachment-close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled,a.disabled.mailbox-attachment-close{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(34,41,47,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#b8c2cc;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);content:\"\"}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(34,41,47,.2);border-radius:.6rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#22292f}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #ededed;border-top-left-radius:.6rem;border-top-right-radius:.6rem}.modal-header .close,.modal-header .mailbox-attachment-close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.45}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #ededed;border-bottom-right-radius:.6rem;border-bottom-left-radius:.6rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:Montserrat,Helvetica,Arial,serif;font-style:normal;font-weight:400;line-height:1.45;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:1rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#22292f}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#22292f}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#22292f}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#22292f}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#22292f;border-radius:.5rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:Montserrat,Helvetica,Arial,serif;font-style:normal;font-weight:400;line-height:1.45;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:1rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(34,41,47,.2);border-radius:.6rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .6rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.6rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.6rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:#2c2c2c;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.6rem - 1px);border-top-right-radius:calc(.6rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#626262}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:\"\"}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E\")}.carousel-control-next-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E\")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{transform:rotate(1turn)}}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid;border-right:.25em solid transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#4168df!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#9aa9b7!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#198e5c!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#2d5fb1!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d28d29!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#e42728!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dadae3!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#0d0f11!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #ededed!important}.border-top{border-top:1px solid #ededed!important}.border-right{border-right:1px solid #ededed!important}.border-bottom{border-bottom:1px solid #ededed!important}.border-left{border-left:1px solid #ededed!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#6d8be6!important}.border-secondary{border-color:#b8c2cc!important}.border-success{border-color:#21b978!important}.border-info{border-color:#4277cf!important}.border-warning{border-color:#dda451!important}.border-danger{border-color:#ea5455!important}.border-light{border-color:#f7f7f9!important}.border-dark{border-color:#22292f!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.25rem!important}.rounded{border-radius:.5rem!important}.rounded-top{border-top-left-radius:.5rem!important}.rounded-right,.rounded-top{border-top-right-radius:.5rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.5rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.5rem!important}.rounded-left{border-top-left-radius:.5rem!important}.rounded-lg{border-radius:.6rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:\"\"}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:\"\"}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.8571428571%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{top:0}.fixed-footer .footer,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-footer .footer{bottom:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(34,41,47,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(34,41,47,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(34,41,47,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:\"\";background-color:transparent}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:1rem!important}.mt-1,.my-1{margin-top:1rem!important}.mr-1,.mx-1{margin-right:1rem!important}.mb-1,.my-1{margin-bottom:1rem!important}.ml-1,.mx-1{margin-left:1rem!important}.m-2{margin:1.5rem!important}.mt-2,.my-2{margin-top:1.5rem!important}.mr-2,.mx-2{margin-right:1.5rem!important}.mb-2,.my-2{margin-bottom:1.5rem!important}.ml-2,.mx-2{margin-left:1.5rem!important}.m-3{margin:3rem!important}.mt-3,.my-3{margin-top:3rem!important}.mr-3,.mx-3{margin-right:3rem!important}.mb-3,.my-3{margin-bottom:3rem!important}.ml-3,.mx-3{margin-left:3rem!important}.m-4{margin:3.5rem!important}.mt-4,.my-4{margin-top:3.5rem!important}.mr-4,.mx-4{margin-right:3.5rem!important}.mb-4,.my-4{margin-bottom:3.5rem!important}.ml-4,.mx-4{margin-left:3.5rem!important}.m-5{margin:4rem!important}.mt-5,.my-5{margin-top:4rem!important}.mr-5,.mx-5{margin-right:4rem!important}.mb-5,.my-5{margin-bottom:4rem!important}.ml-5,.mx-5{margin-left:4rem!important}.m-25{margin:.25rem!important}.mt-25,.my-25{margin-top:.25rem!important}.mr-25,.mx-25{margin-right:.25rem!important}.mb-25,.my-25{margin-bottom:.25rem!important}.ml-25,.mx-25{margin-left:.25rem!important}.m-50{margin:.5rem!important}.mt-50,.my-50{margin-top:.5rem!important}.mr-50,.mx-50{margin-right:.5rem!important}.mb-50,.my-50{margin-bottom:.5rem!important}.ml-50,.mx-50{margin-left:.5rem!important}.m-75{margin:.75rem!important}.mt-75,.my-75{margin-top:.75rem!important}.mr-75,.mx-75{margin-right:.75rem!important}.mb-75,.my-75{margin-bottom:.75rem!important}.ml-75,.mx-75{margin-left:.75rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:1rem!important}.pt-1,.py-1{padding-top:1rem!important}.pr-1,.px-1{padding-right:1rem!important}.pb-1,.py-1{padding-bottom:1rem!important}.pl-1,.px-1{padding-left:1rem!important}.p-2{padding:1.5rem!important}.pt-2,.py-2{padding-top:1.5rem!important}.pr-2,.px-2{padding-right:1.5rem!important}.pb-2,.py-2{padding-bottom:1.5rem!important}.pl-2,.px-2{padding-left:1.5rem!important}.p-3{padding:3rem!important}.pt-3,.py-3{padding-top:3rem!important}.pr-3,.px-3{padding-right:3rem!important}.pb-3,.py-3{padding-bottom:3rem!important}.pl-3,.px-3{padding-left:3rem!important}.p-4{padding:3.5rem!important}.pt-4,.py-4{padding-top:3.5rem!important}.pr-4,.px-4{padding-right:3.5rem!important}.pb-4,.py-4{padding-bottom:3.5rem!important}.pl-4,.px-4{padding-left:3.5rem!important}.p-5{padding:4rem!important}.pt-5,.py-5{padding-top:4rem!important}.pr-5,.px-5{padding-right:4rem!important}.pb-5,.py-5{padding-bottom:4rem!important}.pl-5,.px-5{padding-left:4rem!important}.p-25{padding:.25rem!important}.pt-25,.py-25{padding-top:.25rem!important}.pr-25,.px-25{padding-right:.25rem!important}.pb-25,.py-25{padding-bottom:.25rem!important}.pl-25,.px-25{padding-left:.25rem!important}.p-50{padding:.5rem!important}.pt-50,.py-50{padding-top:.5rem!important}.pr-50,.px-50{padding-right:.5rem!important}.pb-50,.py-50{padding-bottom:.5rem!important}.pl-50,.px-50{padding-left:.5rem!important}.p-75{padding:.75rem!important}.pt-75,.py-75{padding-top:.75rem!important}.pr-75,.px-75{padding-right:.75rem!important}.pb-75,.py-75{padding-bottom:.75rem!important}.pl-75,.px-75{padding-left:.75rem!important}.m-n1{margin:-1rem!important}.mt-n1,.my-n1{margin-top:-1rem!important}.mr-n1,.mx-n1{margin-right:-1rem!important}.mb-n1,.my-n1{margin-bottom:-1rem!important}.ml-n1,.mx-n1{margin-left:-1rem!important}.m-n2{margin:-1.5rem!important}.mt-n2,.my-n2{margin-top:-1.5rem!important}.mr-n2,.mx-n2{margin-right:-1.5rem!important}.mb-n2,.my-n2{margin-bottom:-1.5rem!important}.ml-n2,.mx-n2{margin-left:-1.5rem!important}.m-n3{margin:-3rem!important}.mt-n3,.my-n3{margin-top:-3rem!important}.mr-n3,.mx-n3{margin-right:-3rem!important}.mb-n3,.my-n3{margin-bottom:-3rem!important}.ml-n3,.mx-n3{margin-left:-3rem!important}.m-n4{margin:-3.5rem!important}.mt-n4,.my-n4{margin-top:-3.5rem!important}.mr-n4,.mx-n4{margin-right:-3.5rem!important}.mb-n4,.my-n4{margin-bottom:-3.5rem!important}.ml-n4,.mx-n4{margin-left:-3.5rem!important}.m-n5{margin:-4rem!important}.mt-n5,.my-n5{margin-top:-4rem!important}.mr-n5,.mx-n5{margin-right:-4rem!important}.mb-n5,.my-n5{margin-bottom:-4rem!important}.ml-n5,.mx-n5{margin-left:-4rem!important}.m-n25{margin:-.25rem!important}.mt-n25,.my-n25{margin-top:-.25rem!important}.mr-n25,.mx-n25{margin-right:-.25rem!important}.mb-n25,.my-n25{margin-bottom:-.25rem!important}.ml-n25,.mx-n25{margin-left:-.25rem!important}.m-n50{margin:-.5rem!important}.mt-n50,.my-n50{margin-top:-.5rem!important}.mr-n50,.mx-n50{margin-right:-.5rem!important}.mb-n50,.my-n50{margin-bottom:-.5rem!important}.ml-n50,.mx-n50{margin-left:-.5rem!important}.m-n75{margin:-.75rem!important}.mt-n75,.my-n75{margin-top:-.75rem!important}.mr-n75,.mx-n75{margin-right:-.75rem!important}.mb-n75,.my-n75{margin-bottom:-.75rem!important}.ml-n75,.mx-n75{margin-left:-.75rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:1rem!important}.mt-sm-1,.my-sm-1{margin-top:1rem!important}.mr-sm-1,.mx-sm-1{margin-right:1rem!important}.mb-sm-1,.my-sm-1{margin-bottom:1rem!important}.ml-sm-1,.mx-sm-1{margin-left:1rem!important}.m-sm-2{margin:1.5rem!important}.mt-sm-2,.my-sm-2{margin-top:1.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:1.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:1.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:1.5rem!important}.m-sm-3{margin:3rem!important}.mt-sm-3,.my-sm-3{margin-top:3rem!important}.mr-sm-3,.mx-sm-3{margin-right:3rem!important}.mb-sm-3,.my-sm-3{margin-bottom:3rem!important}.ml-sm-3,.mx-sm-3{margin-left:3rem!important}.m-sm-4{margin:3.5rem!important}.mt-sm-4,.my-sm-4{margin-top:3.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:3.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:3.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:3.5rem!important}.m-sm-5{margin:4rem!important}.mt-sm-5,.my-sm-5{margin-top:4rem!important}.mr-sm-5,.mx-sm-5{margin-right:4rem!important}.mb-sm-5,.my-sm-5{margin-bottom:4rem!important}.ml-sm-5,.mx-sm-5{margin-left:4rem!important}.m-sm-25{margin:.25rem!important}.mt-sm-25,.my-sm-25{margin-top:.25rem!important}.mr-sm-25,.mx-sm-25{margin-right:.25rem!important}.mb-sm-25,.my-sm-25{margin-bottom:.25rem!important}.ml-sm-25,.mx-sm-25{margin-left:.25rem!important}.m-sm-50{margin:.5rem!important}.mt-sm-50,.my-sm-50{margin-top:.5rem!important}.mr-sm-50,.mx-sm-50{margin-right:.5rem!important}.mb-sm-50,.my-sm-50{margin-bottom:.5rem!important}.ml-sm-50,.mx-sm-50{margin-left:.5rem!important}.m-sm-75{margin:.75rem!important}.mt-sm-75,.my-sm-75{margin-top:.75rem!important}.mr-sm-75,.mx-sm-75{margin-right:.75rem!important}.mb-sm-75,.my-sm-75{margin-bottom:.75rem!important}.ml-sm-75,.mx-sm-75{margin-left:.75rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:1rem!important}.pt-sm-1,.py-sm-1{padding-top:1rem!important}.pr-sm-1,.px-sm-1{padding-right:1rem!important}.pb-sm-1,.py-sm-1{padding-bottom:1rem!important}.pl-sm-1,.px-sm-1{padding-left:1rem!important}.p-sm-2{padding:1.5rem!important}.pt-sm-2,.py-sm-2{padding-top:1.5rem!important}.pr-sm-2,.px-sm-2{padding-right:1.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:1.5rem!important}.pl-sm-2,.px-sm-2{padding-left:1.5rem!important}.p-sm-3{padding:3rem!important}.pt-sm-3,.py-sm-3{padding-top:3rem!important}.pr-sm-3,.px-sm-3{padding-right:3rem!important}.pb-sm-3,.py-sm-3{padding-bottom:3rem!important}.pl-sm-3,.px-sm-3{padding-left:3rem!important}.p-sm-4{padding:3.5rem!important}.pt-sm-4,.py-sm-4{padding-top:3.5rem!important}.pr-sm-4,.px-sm-4{padding-right:3.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:3.5rem!important}.pl-sm-4,.px-sm-4{padding-left:3.5rem!important}.p-sm-5{padding:4rem!important}.pt-sm-5,.py-sm-5{padding-top:4rem!important}.pr-sm-5,.px-sm-5{padding-right:4rem!important}.pb-sm-5,.py-sm-5{padding-bottom:4rem!important}.pl-sm-5,.px-sm-5{padding-left:4rem!important}.p-sm-25{padding:.25rem!important}.pt-sm-25,.py-sm-25{padding-top:.25rem!important}.pr-sm-25,.px-sm-25{padding-right:.25rem!important}.pb-sm-25,.py-sm-25{padding-bottom:.25rem!important}.pl-sm-25,.px-sm-25{padding-left:.25rem!important}.p-sm-50{padding:.5rem!important}.pt-sm-50,.py-sm-50{padding-top:.5rem!important}.pr-sm-50,.px-sm-50{padding-right:.5rem!important}.pb-sm-50,.py-sm-50{padding-bottom:.5rem!important}.pl-sm-50,.px-sm-50{padding-left:.5rem!important}.p-sm-75{padding:.75rem!important}.pt-sm-75,.py-sm-75{padding-top:.75rem!important}.pr-sm-75,.px-sm-75{padding-right:.75rem!important}.pb-sm-75,.py-sm-75{padding-bottom:.75rem!important}.pl-sm-75,.px-sm-75{padding-left:.75rem!important}.m-sm-n1{margin:-1rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-1rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-1rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-1rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-1rem!important}.m-sm-n2{margin:-1.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-1.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-1.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-1.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-1.5rem!important}.m-sm-n3{margin:-3rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-3rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-3rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-3rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-3rem!important}.m-sm-n4{margin:-3.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-3.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-3.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-3.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-3.5rem!important}.m-sm-n5{margin:-4rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-4rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-4rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-4rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-4rem!important}.m-sm-n25{margin:-.25rem!important}.mt-sm-n25,.my-sm-n25{margin-top:-.25rem!important}.mr-sm-n25,.mx-sm-n25{margin-right:-.25rem!important}.mb-sm-n25,.my-sm-n25{margin-bottom:-.25rem!important}.ml-sm-n25,.mx-sm-n25{margin-left:-.25rem!important}.m-sm-n50{margin:-.5rem!important}.mt-sm-n50,.my-sm-n50{margin-top:-.5rem!important}.mr-sm-n50,.mx-sm-n50{margin-right:-.5rem!important}.mb-sm-n50,.my-sm-n50{margin-bottom:-.5rem!important}.ml-sm-n50,.mx-sm-n50{margin-left:-.5rem!important}.m-sm-n75{margin:-.75rem!important}.mt-sm-n75,.my-sm-n75{margin-top:-.75rem!important}.mr-sm-n75,.mx-sm-n75{margin-right:-.75rem!important}.mb-sm-n75,.my-sm-n75{margin-bottom:-.75rem!important}.ml-sm-n75,.mx-sm-n75{margin-left:-.75rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:1rem!important}.mt-md-1,.my-md-1{margin-top:1rem!important}.mr-md-1,.mx-md-1{margin-right:1rem!important}.mb-md-1,.my-md-1{margin-bottom:1rem!important}.ml-md-1,.mx-md-1{margin-left:1rem!important}.m-md-2{margin:1.5rem!important}.mt-md-2,.my-md-2{margin-top:1.5rem!important}.mr-md-2,.mx-md-2{margin-right:1.5rem!important}.mb-md-2,.my-md-2{margin-bottom:1.5rem!important}.ml-md-2,.mx-md-2{margin-left:1.5rem!important}.m-md-3{margin:3rem!important}.mt-md-3,.my-md-3{margin-top:3rem!important}.mr-md-3,.mx-md-3{margin-right:3rem!important}.mb-md-3,.my-md-3{margin-bottom:3rem!important}.ml-md-3,.mx-md-3{margin-left:3rem!important}.m-md-4{margin:3.5rem!important}.mt-md-4,.my-md-4{margin-top:3.5rem!important}.mr-md-4,.mx-md-4{margin-right:3.5rem!important}.mb-md-4,.my-md-4{margin-bottom:3.5rem!important}.ml-md-4,.mx-md-4{margin-left:3.5rem!important}.m-md-5{margin:4rem!important}.mt-md-5,.my-md-5{margin-top:4rem!important}.mr-md-5,.mx-md-5{margin-right:4rem!important}.mb-md-5,.my-md-5{margin-bottom:4rem!important}.ml-md-5,.mx-md-5{margin-left:4rem!important}.m-md-25{margin:.25rem!important}.mt-md-25,.my-md-25{margin-top:.25rem!important}.mr-md-25,.mx-md-25{margin-right:.25rem!important}.mb-md-25,.my-md-25{margin-bottom:.25rem!important}.ml-md-25,.mx-md-25{margin-left:.25rem!important}.m-md-50{margin:.5rem!important}.mt-md-50,.my-md-50{margin-top:.5rem!important}.mr-md-50,.mx-md-50{margin-right:.5rem!important}.mb-md-50,.my-md-50{margin-bottom:.5rem!important}.ml-md-50,.mx-md-50{margin-left:.5rem!important}.m-md-75{margin:.75rem!important}.mt-md-75,.my-md-75{margin-top:.75rem!important}.mr-md-75,.mx-md-75{margin-right:.75rem!important}.mb-md-75,.my-md-75{margin-bottom:.75rem!important}.ml-md-75,.mx-md-75{margin-left:.75rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:1rem!important}.pt-md-1,.py-md-1{padding-top:1rem!important}.pr-md-1,.px-md-1{padding-right:1rem!important}.pb-md-1,.py-md-1{padding-bottom:1rem!important}.pl-md-1,.px-md-1{padding-left:1rem!important}.p-md-2{padding:1.5rem!important}.pt-md-2,.py-md-2{padding-top:1.5rem!important}.pr-md-2,.px-md-2{padding-right:1.5rem!important}.pb-md-2,.py-md-2{padding-bottom:1.5rem!important}.pl-md-2,.px-md-2{padding-left:1.5rem!important}.p-md-3{padding:3rem!important}.pt-md-3,.py-md-3{padding-top:3rem!important}.pr-md-3,.px-md-3{padding-right:3rem!important}.pb-md-3,.py-md-3{padding-bottom:3rem!important}.pl-md-3,.px-md-3{padding-left:3rem!important}.p-md-4{padding:3.5rem!important}.pt-md-4,.py-md-4{padding-top:3.5rem!important}.pr-md-4,.px-md-4{padding-right:3.5rem!important}.pb-md-4,.py-md-4{padding-bottom:3.5rem!important}.pl-md-4,.px-md-4{padding-left:3.5rem!important}.p-md-5{padding:4rem!important}.pt-md-5,.py-md-5{padding-top:4rem!important}.pr-md-5,.px-md-5{padding-right:4rem!important}.pb-md-5,.py-md-5{padding-bottom:4rem!important}.pl-md-5,.px-md-5{padding-left:4rem!important}.p-md-25{padding:.25rem!important}.pt-md-25,.py-md-25{padding-top:.25rem!important}.pr-md-25,.px-md-25{padding-right:.25rem!important}.pb-md-25,.py-md-25{padding-bottom:.25rem!important}.pl-md-25,.px-md-25{padding-left:.25rem!important}.p-md-50{padding:.5rem!important}.pt-md-50,.py-md-50{padding-top:.5rem!important}.pr-md-50,.px-md-50{padding-right:.5rem!important}.pb-md-50,.py-md-50{padding-bottom:.5rem!important}.pl-md-50,.px-md-50{padding-left:.5rem!important}.p-md-75{padding:.75rem!important}.pt-md-75,.py-md-75{padding-top:.75rem!important}.pr-md-75,.px-md-75{padding-right:.75rem!important}.pb-md-75,.py-md-75{padding-bottom:.75rem!important}.pl-md-75,.px-md-75{padding-left:.75rem!important}.m-md-n1{margin:-1rem!important}.mt-md-n1,.my-md-n1{margin-top:-1rem!important}.mr-md-n1,.mx-md-n1{margin-right:-1rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-1rem!important}.ml-md-n1,.mx-md-n1{margin-left:-1rem!important}.m-md-n2{margin:-1.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-1.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-1.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-1.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-1.5rem!important}.m-md-n3{margin:-3rem!important}.mt-md-n3,.my-md-n3{margin-top:-3rem!important}.mr-md-n3,.mx-md-n3{margin-right:-3rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-3rem!important}.ml-md-n3,.mx-md-n3{margin-left:-3rem!important}.m-md-n4{margin:-3.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-3.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-3.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-3.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-3.5rem!important}.m-md-n5{margin:-4rem!important}.mt-md-n5,.my-md-n5{margin-top:-4rem!important}.mr-md-n5,.mx-md-n5{margin-right:-4rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-4rem!important}.ml-md-n5,.mx-md-n5{margin-left:-4rem!important}.m-md-n25{margin:-.25rem!important}.mt-md-n25,.my-md-n25{margin-top:-.25rem!important}.mr-md-n25,.mx-md-n25{margin-right:-.25rem!important}.mb-md-n25,.my-md-n25{margin-bottom:-.25rem!important}.ml-md-n25,.mx-md-n25{margin-left:-.25rem!important}.m-md-n50{margin:-.5rem!important}.mt-md-n50,.my-md-n50{margin-top:-.5rem!important}.mr-md-n50,.mx-md-n50{margin-right:-.5rem!important}.mb-md-n50,.my-md-n50{margin-bottom:-.5rem!important}.ml-md-n50,.mx-md-n50{margin-left:-.5rem!important}.m-md-n75{margin:-.75rem!important}.mt-md-n75,.my-md-n75{margin-top:-.75rem!important}.mr-md-n75,.mx-md-n75{margin-right:-.75rem!important}.mb-md-n75,.my-md-n75{margin-bottom:-.75rem!important}.ml-md-n75,.mx-md-n75{margin-left:-.75rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:1rem!important}.mt-lg-1,.my-lg-1{margin-top:1rem!important}.mr-lg-1,.mx-lg-1{margin-right:1rem!important}.mb-lg-1,.my-lg-1{margin-bottom:1rem!important}.ml-lg-1,.mx-lg-1{margin-left:1rem!important}.m-lg-2{margin:1.5rem!important}.mt-lg-2,.my-lg-2{margin-top:1.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:1.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:1.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:1.5rem!important}.m-lg-3{margin:3rem!important}.mt-lg-3,.my-lg-3{margin-top:3rem!important}.mr-lg-3,.mx-lg-3{margin-right:3rem!important}.mb-lg-3,.my-lg-3{margin-bottom:3rem!important}.ml-lg-3,.mx-lg-3{margin-left:3rem!important}.m-lg-4{margin:3.5rem!important}.mt-lg-4,.my-lg-4{margin-top:3.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:3.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:3.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:3.5rem!important}.m-lg-5{margin:4rem!important}.mt-lg-5,.my-lg-5{margin-top:4rem!important}.mr-lg-5,.mx-lg-5{margin-right:4rem!important}.mb-lg-5,.my-lg-5{margin-bottom:4rem!important}.ml-lg-5,.mx-lg-5{margin-left:4rem!important}.m-lg-25{margin:.25rem!important}.mt-lg-25,.my-lg-25{margin-top:.25rem!important}.mr-lg-25,.mx-lg-25{margin-right:.25rem!important}.mb-lg-25,.my-lg-25{margin-bottom:.25rem!important}.ml-lg-25,.mx-lg-25{margin-left:.25rem!important}.m-lg-50{margin:.5rem!important}.mt-lg-50,.my-lg-50{margin-top:.5rem!important}.mr-lg-50,.mx-lg-50{margin-right:.5rem!important}.mb-lg-50,.my-lg-50{margin-bottom:.5rem!important}.ml-lg-50,.mx-lg-50{margin-left:.5rem!important}.m-lg-75{margin:.75rem!important}.mt-lg-75,.my-lg-75{margin-top:.75rem!important}.mr-lg-75,.mx-lg-75{margin-right:.75rem!important}.mb-lg-75,.my-lg-75{margin-bottom:.75rem!important}.ml-lg-75,.mx-lg-75{margin-left:.75rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:1rem!important}.pt-lg-1,.py-lg-1{padding-top:1rem!important}.pr-lg-1,.px-lg-1{padding-right:1rem!important}.pb-lg-1,.py-lg-1{padding-bottom:1rem!important}.pl-lg-1,.px-lg-1{padding-left:1rem!important}.p-lg-2{padding:1.5rem!important}.pt-lg-2,.py-lg-2{padding-top:1.5rem!important}.pr-lg-2,.px-lg-2{padding-right:1.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:1.5rem!important}.pl-lg-2,.px-lg-2{padding-left:1.5rem!important}.p-lg-3{padding:3rem!important}.pt-lg-3,.py-lg-3{padding-top:3rem!important}.pr-lg-3,.px-lg-3{padding-right:3rem!important}.pb-lg-3,.py-lg-3{padding-bottom:3rem!important}.pl-lg-3,.px-lg-3{padding-left:3rem!important}.p-lg-4{padding:3.5rem!important}.pt-lg-4,.py-lg-4{padding-top:3.5rem!important}.pr-lg-4,.px-lg-4{padding-right:3.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:3.5rem!important}.pl-lg-4,.px-lg-4{padding-left:3.5rem!important}.p-lg-5{padding:4rem!important}.pt-lg-5,.py-lg-5{padding-top:4rem!important}.pr-lg-5,.px-lg-5{padding-right:4rem!important}.pb-lg-5,.py-lg-5{padding-bottom:4rem!important}.pl-lg-5,.px-lg-5{padding-left:4rem!important}.p-lg-25{padding:.25rem!important}.pt-lg-25,.py-lg-25{padding-top:.25rem!important}.pr-lg-25,.px-lg-25{padding-right:.25rem!important}.pb-lg-25,.py-lg-25{padding-bottom:.25rem!important}.pl-lg-25,.px-lg-25{padding-left:.25rem!important}.p-lg-50{padding:.5rem!important}.pt-lg-50,.py-lg-50{padding-top:.5rem!important}.pr-lg-50,.px-lg-50{padding-right:.5rem!important}.pb-lg-50,.py-lg-50{padding-bottom:.5rem!important}.pl-lg-50,.px-lg-50{padding-left:.5rem!important}.p-lg-75{padding:.75rem!important}.pt-lg-75,.py-lg-75{padding-top:.75rem!important}.pr-lg-75,.px-lg-75{padding-right:.75rem!important}.pb-lg-75,.py-lg-75{padding-bottom:.75rem!important}.pl-lg-75,.px-lg-75{padding-left:.75rem!important}.m-lg-n1{margin:-1rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-1rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-1rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-1rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-1rem!important}.m-lg-n2{margin:-1.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-1.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-1.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-1.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-1.5rem!important}.m-lg-n3{margin:-3rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-3rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-3rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-3rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-3rem!important}.m-lg-n4{margin:-3.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-3.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-3.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-3.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-3.5rem!important}.m-lg-n5{margin:-4rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-4rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-4rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-4rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-4rem!important}.m-lg-n25{margin:-.25rem!important}.mt-lg-n25,.my-lg-n25{margin-top:-.25rem!important}.mr-lg-n25,.mx-lg-n25{margin-right:-.25rem!important}.mb-lg-n25,.my-lg-n25{margin-bottom:-.25rem!important}.ml-lg-n25,.mx-lg-n25{margin-left:-.25rem!important}.m-lg-n50{margin:-.5rem!important}.mt-lg-n50,.my-lg-n50{margin-top:-.5rem!important}.mr-lg-n50,.mx-lg-n50{margin-right:-.5rem!important}.mb-lg-n50,.my-lg-n50{margin-bottom:-.5rem!important}.ml-lg-n50,.mx-lg-n50{margin-left:-.5rem!important}.m-lg-n75{margin:-.75rem!important}.mt-lg-n75,.my-lg-n75{margin-top:-.75rem!important}.mr-lg-n75,.mx-lg-n75{margin-right:-.75rem!important}.mb-lg-n75,.my-lg-n75{margin-bottom:-.75rem!important}.ml-lg-n75,.mx-lg-n75{margin-left:-.75rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:1rem!important}.mt-xl-1,.my-xl-1{margin-top:1rem!important}.mr-xl-1,.mx-xl-1{margin-right:1rem!important}.mb-xl-1,.my-xl-1{margin-bottom:1rem!important}.ml-xl-1,.mx-xl-1{margin-left:1rem!important}.m-xl-2{margin:1.5rem!important}.mt-xl-2,.my-xl-2{margin-top:1.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:1.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:1.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:1.5rem!important}.m-xl-3{margin:3rem!important}.mt-xl-3,.my-xl-3{margin-top:3rem!important}.mr-xl-3,.mx-xl-3{margin-right:3rem!important}.mb-xl-3,.my-xl-3{margin-bottom:3rem!important}.ml-xl-3,.mx-xl-3{margin-left:3rem!important}.m-xl-4{margin:3.5rem!important}.mt-xl-4,.my-xl-4{margin-top:3.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:3.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:3.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:3.5rem!important}.m-xl-5{margin:4rem!important}.mt-xl-5,.my-xl-5{margin-top:4rem!important}.mr-xl-5,.mx-xl-5{margin-right:4rem!important}.mb-xl-5,.my-xl-5{margin-bottom:4rem!important}.ml-xl-5,.mx-xl-5{margin-left:4rem!important}.m-xl-25{margin:.25rem!important}.mt-xl-25,.my-xl-25{margin-top:.25rem!important}.mr-xl-25,.mx-xl-25{margin-right:.25rem!important}.mb-xl-25,.my-xl-25{margin-bottom:.25rem!important}.ml-xl-25,.mx-xl-25{margin-left:.25rem!important}.m-xl-50{margin:.5rem!important}.mt-xl-50,.my-xl-50{margin-top:.5rem!important}.mr-xl-50,.mx-xl-50{margin-right:.5rem!important}.mb-xl-50,.my-xl-50{margin-bottom:.5rem!important}.ml-xl-50,.mx-xl-50{margin-left:.5rem!important}.m-xl-75{margin:.75rem!important}.mt-xl-75,.my-xl-75{margin-top:.75rem!important}.mr-xl-75,.mx-xl-75{margin-right:.75rem!important}.mb-xl-75,.my-xl-75{margin-bottom:.75rem!important}.ml-xl-75,.mx-xl-75{margin-left:.75rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:1rem!important}.pt-xl-1,.py-xl-1{padding-top:1rem!important}.pr-xl-1,.px-xl-1{padding-right:1rem!important}.pb-xl-1,.py-xl-1{padding-bottom:1rem!important}.pl-xl-1,.px-xl-1{padding-left:1rem!important}.p-xl-2{padding:1.5rem!important}.pt-xl-2,.py-xl-2{padding-top:1.5rem!important}.pr-xl-2,.px-xl-2{padding-right:1.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:1.5rem!important}.pl-xl-2,.px-xl-2{padding-left:1.5rem!important}.p-xl-3{padding:3rem!important}.pt-xl-3,.py-xl-3{padding-top:3rem!important}.pr-xl-3,.px-xl-3{padding-right:3rem!important}.pb-xl-3,.py-xl-3{padding-bottom:3rem!important}.pl-xl-3,.px-xl-3{padding-left:3rem!important}.p-xl-4{padding:3.5rem!important}.pt-xl-4,.py-xl-4{padding-top:3.5rem!important}.pr-xl-4,.px-xl-4{padding-right:3.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:3.5rem!important}.pl-xl-4,.px-xl-4{padding-left:3.5rem!important}.p-xl-5{padding:4rem!important}.pt-xl-5,.py-xl-5{padding-top:4rem!important}.pr-xl-5,.px-xl-5{padding-right:4rem!important}.pb-xl-5,.py-xl-5{padding-bottom:4rem!important}.pl-xl-5,.px-xl-5{padding-left:4rem!important}.p-xl-25{padding:.25rem!important}.pt-xl-25,.py-xl-25{padding-top:.25rem!important}.pr-xl-25,.px-xl-25{padding-right:.25rem!important}.pb-xl-25,.py-xl-25{padding-bottom:.25rem!important}.pl-xl-25,.px-xl-25{padding-left:.25rem!important}.p-xl-50{padding:.5rem!important}.pt-xl-50,.py-xl-50{padding-top:.5rem!important}.pr-xl-50,.px-xl-50{padding-right:.5rem!important}.pb-xl-50,.py-xl-50{padding-bottom:.5rem!important}.pl-xl-50,.px-xl-50{padding-left:.5rem!important}.p-xl-75{padding:.75rem!important}.pt-xl-75,.py-xl-75{padding-top:.75rem!important}.pr-xl-75,.px-xl-75{padding-right:.75rem!important}.pb-xl-75,.py-xl-75{padding-bottom:.75rem!important}.pl-xl-75,.px-xl-75{padding-left:.75rem!important}.m-xl-n1{margin:-1rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-1rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-1rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-1rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-1rem!important}.m-xl-n2{margin:-1.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-1.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-1.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-1.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-1.5rem!important}.m-xl-n3{margin:-3rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-3rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-3rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-3rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-3rem!important}.m-xl-n4{margin:-3.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-3.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-3.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-3.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-3.5rem!important}.m-xl-n5{margin:-4rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-4rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-4rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-4rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-4rem!important}.m-xl-n25{margin:-.25rem!important}.mt-xl-n25,.my-xl-n25{margin-top:-.25rem!important}.mr-xl-n25,.mx-xl-n25{margin-right:-.25rem!important}.mb-xl-n25,.my-xl-n25{margin-bottom:-.25rem!important}.ml-xl-n25,.mx-xl-n25{margin-left:-.25rem!important}.m-xl-n50{margin:-.5rem!important}.mt-xl-n50,.my-xl-n50{margin-top:-.5rem!important}.mr-xl-n50,.mx-xl-n50{margin-right:-.5rem!important}.mb-xl-n50,.my-xl-n50{margin-bottom:-.5rem!important}.ml-xl-n50,.mx-xl-n50{margin-left:-.5rem!important}.m-xl-n75{margin:-.75rem!important}.mt-xl-n75,.my-xl-n75{margin-top:-.75rem!important}.mr-xl-n75,.mx-xl-n75{margin-right:-.75rem!important}.mb-xl-n75,.my-xl-n75{margin-bottom:-.75rem!important}.ml-xl-n75,.mx-xl-n75{margin-left:-.75rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:Montserrat,Helvetica,Arial,serif!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#6d8be6!important}a.text-primary:focus,a.text-primary:hover{color:#2c57db!important}.text-secondary{color:#b8c2cc!important}a.text-secondary:focus,a.text-secondary:hover{color:#8b9cac!important}.text-success{color:#21b978!important}a.text-success:focus,a.text-success:hover{color:#15784e!important}.text-info{color:#4277cf!important}a.text-info:focus,a.text-info:hover{color:#28549d!important}.text-warning{color:#dda451!important}a.text-warning:focus,a.text-warning:hover{color:#bd7f25!important}.text-danger{color:#ea5455!important}a.text-danger:focus,a.text-danger:hover{color:#d71a1c!important}.text-light{color:#f7f7f9!important}a.text-light:focus,a.text-light:hover{color:#cbcbd8!important}.text-dark{color:#22292f!important}a.text-dark:focus,a.text-dark:hover{color:#020203!important}.text-body{color:#626262!important}.text-muted{color:#b8c2cc!important}.text-black-50{color:rgba(34,41,47,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:\" (\" attr(title) \")\"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #22292f}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dae1e7!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#eff1f7}.table .thead-dark th{color:inherit;border-color:#eff1f7}}code{padding:.1rem .4rem;font-size:90%;color:#ff8acc;background-color:#eee;border-radius:.25rem}pre{background-color:#f7f7f9}pre code{background-color:transparent!important}.form-control::-moz-placeholder{font-size:.85rem;color:rgba(34,41,47,.4);-moz-transition:all .2s ease;transition:all .2s ease}.form-control:-ms-input-placeholder{font-size:.85rem;color:rgba(34,41,47,.4);-ms-transition:all .2s ease;transition:all .2s ease}.form-control::placeholder{font-size:.85rem;color:rgba(34,41,47,.4);transition:all .2s ease}.form-control:-ms-input-placeholder{color:#abb6d5}.form-control:focus::-moz-placeholder{transform:translate(5px);-moz-transition:all .2s ease;transition:all .2s ease}.form-control:focus:-ms-input-placeholder{transform:translate(5px);-ms-transition:all .2s ease;transition:all .2s ease}.form-control:focus::placeholder{transform:translate(5px);transition:all .2s ease}.form-control:focus~.form-control-position i{color:#6d8be6}label{color:#2b3656;font-size:.85rem;margin-bottom:0;padding-left:.2rem}textarea.form-control{line-height:1.6rem;font-size:1rem}.form-group{margin-bottom:1.5rem}.form-control{border:1px solid #c6cde3;color:#3c4b78}.form-section{color:#b8c2cc;line-height:3rem;margin-bottom:20px;border-bottom:1px solid #b8c2cc}.form-section i{font-size:20px;margin-left:5px;margin-right:10px}.form-actions{border-top:1px solid #cdd3e6;padding:20px 0;margin-top:20px}.form-actions.filled{background-color:#eff1f7}.form-actions.center{text-align:center}.form-actions.right{text-align:right}.form-actions.top{border-top:0;border-bottom:1px solid #cdd3e6;margin-top:0;margin-bottom:20px}@media (max-width:767.98px){.form-actions .buttons-group{float:left!important;margin-bottom:10px}}@media (min-width:576px){.form-horizontal .form-group .label-control{text-align:right}}.form-control.form-control-lg{padding:1rem}.form-control.form-control-lg::-moz-placeholder{font-size:1.25rem}.form-control.form-control-lg:-ms-input-placeholder{font-size:1.25rem}.form-control.form-control-lg::placeholder{font-size:1.25rem}.form-control.form-control-sm{padding:.6rem}.form-control.form-control-sm::-moz-placeholder{font-size:.7rem}.form-control.form-control-sm:-ms-input-placeholder{font-size:.7rem}.form-control.form-control-sm::placeholder{font-size:.7rem}.custom-file-label{padding:.4rem .7rem}.custom-file-label:after{padding:.4rem .7rem;height:auto}select.form-control:not([multiple=multiple]){background-position:calc(100% - 12px) 13px,calc(100% - 20px) 13px,100% 0;background-size:12px 12px,10px 10px;background-repeat:no-repeat;-webkit-appearance:none;-moz-appearance:none;padding-right:1.5rem}.custom-select{-moz-appearance:none;-webkit-appearance:none}.input-group-addon{background-color:#eceff1;border-color:#babfc7}.custom-control-label:after,.custom-control-label:before{width:1.143rem;height:1.143rem;top:.08rem}.custom-control-input:not(:disabled):active~.custom-control-label:before{background-color:#6d8be6;border-color:#6d8be6}.form-label-group{position:relative;margin-bottom:1.5rem}.form-label-group .form-control-lg~label{font-size:1.25rem;padding:1rem}.form-label-group .form-control-sm~label{font-size:.7rem}.form-label-group>label{position:absolute;top:0;left:0;display:block;transition:all .25s ease-in-out;padding:.6rem;pointer-events:none;cursor:text;color:rgba(34,41,47,.4);font-size:.85rem;opacity:0}.form-label-group>input,.form-label-group textarea{padding:.6rem}.form-label-group>input:focus:not(:-moz-placeholder-shown)~label,.form-label-group>input:not(:active):not(:-moz-placeholder-shown)~label,.form-label-group textarea:focus:not(:-moz-placeholder-shown)~label,.form-label-group textarea:not(:active):not(:-moz-placeholder-shown)~label{color:#6d8be6!important;-moz-transition:all .25s ease-in-out;transition:all .25s ease-in-out;opacity:1}.form-label-group>input:focus:not(:-ms-input-placeholder)~label,.form-label-group>input:not(:active):not(:-ms-input-placeholder)~label,.form-label-group textarea:focus:not(:-ms-input-placeholder)~label,.form-label-group textarea:not(:active):not(:-ms-input-placeholder)~label{color:#6d8be6!important;-ms-transition:all .25s ease-in-out;transition:all .25s ease-in-out;opacity:1}.form-label-group>input:focus:not(:placeholder-shown)~label,.form-label-group>input:not(:active):not(:placeholder-shown)~label,.form-label-group textarea:focus:not(:placeholder-shown)~label,.form-label-group textarea:not(:active):not(:placeholder-shown)~label{color:#6d8be6!important;transition:all .25s ease-in-out;opacity:1}.form-label-group>input:not(:focus):not(:-moz-placeholder-shown)~label,.form-label-group textarea:not(:focus):not(:-moz-placeholder-shown)~label{color:rgba(34,41,47,.4)!important}.form-label-group>input:not(:focus):not(:-ms-input-placeholder)~label,.form-label-group textarea:not(:focus):not(:-ms-input-placeholder)~label{color:rgba(34,41,47,.4)!important}.form-label-group>input:not(:focus):not(:placeholder-shown)~label,.form-label-group textarea:not(:focus):not(:placeholder-shown)~label{color:rgba(34,41,47,.4)!important}.form-label-group>input:not(:-moz-placeholder-shown)~label,.form-label-group textarea:not(:-moz-placeholder-shown)~label{padding:.25rem 0;font-size:.7rem;top:-20px;left:3px}.form-label-group>input:not(:-ms-input-placeholder)~label,.form-label-group textarea:not(:-ms-input-placeholder)~label{padding:.25rem 0;font-size:.7rem;top:-20px;left:3px}.form-label-group>input:not(:placeholder-shown)~label,.form-label-group textarea:not(:placeholder-shown)~label{padding:.25rem 0;font-size:.7rem;top:-20px;left:3px}.form-label-group.has-icon-left>label{left:36px}.vs-checkbox-con{position:relative;display:flex;align-items:center;justify-content:flex-start;margin:.25rem 0}.vs-checkbox-con input{position:absolute;width:100%;height:100%;opacity:0;z-index:200;cursor:pointer;top:0}.vs-checkbox-con input:checked~.vs-checkbox{transform:rotate(0deg);border-color:#6d8be6}.vs-checkbox-con input:checked~.vs-checkbox .vs-checkbox--check{transform:translate(0);background-color:#6d8be6}.vs-checkbox-con input:checked~.vs-checkbox .vs-checkbox--check .vs-icon{transform:translate(0);line-height:1.2;opacity:1}.vs-checkbox-con input:checked~.vs-checkbox.vs-checkbox-sm .vs-checkbox--check .vs-icon{font-size:.75rem}.vs-checkbox-con input:checked~.vs-checkbox.vs-checkbox-lg .vs-checkbox--check .vs-icon{font-size:1.2rem}.vs-checkbox-con input:active:checked+.vs-checkbox .vs-checkbox--check{transform:translate(3px);background-color:#6d8be6}.vs-checkbox-con input:active:checked+.vs-checkbox .vs-checkbox--check .vs-icon{opacity:1;transform:translate(6px)}.vs-checkbox-con input:disabled{cursor:default;pointer-events:none}.vs-checkbox-con input:disabled+.vs-checkbox{cursor:default;opacity:.5}.vs-checkbox-con .vs-checkbox{cursor:pointer;position:relative;width:20px;height:20px;border:2px solid #b8c2cc;border-radius:2px;transform:rotate(-90deg);transition:all .2s ease;overflow:hidden;margin-right:.5rem}.vs-checkbox-con .vs-checkbox.vs-checkbox-sm{width:15px;height:15px}.vs-checkbox-con .vs-checkbox.vs-checkbox-lg{width:24px;height:24px}.vs-checkbox-con .vs-checkbox .vs-checkbox--check{width:100%;height:100%;position:absolute;left:0;transform:translate(100%);transform-origin:right;transition:all .2s ease;z-index:10}.vs-checkbox-con .vs-checkbox .vs-checkbox--check .vs-icon{display:flex;justify-content:center;align-items:center;color:#fff}.vs-radio-con{position:relative;display:flex;align-items:center;justify-content:flex-start;margin:.25rem 0}.vs-radio-con input{position:absolute;width:100%;height:100%;opacity:0;z-index:200;cursor:pointer}.vs-radio-con input:checked~.vs-radio{transform:rotate(0deg);outline:0}.vs-radio-con input:checked~.vs-radio .vs-radio--circle{background:#6d8be6;box-shadow:0 3px 12px 0 rgba(109,139,230,.4);opacity:1;transform:scale(1)}.vs-radio-con input:checked~.vs-radio .vs-radio--border{opacity:0;transform:scale(.3)}.vs-radio-con input:disabled{cursor:default;pointer-events:none}.vs-radio-con input:disabled+.vs-radio{cursor:default;opacity:.5}.vs-radio-con input:active~.vs-radio{transform:scale(1.1)}.vs-radio-con .vs-radio{cursor:pointer;position:relative;width:18px;height:18px;transition:all .2s ease;margin-right:.5rem}.vs-radio-con .vs-radio.vs-radio-sm{width:13px;height:13px}.vs-radio-con .vs-radio.vs-radio-lg{width:22px;height:22px}.vs-radio-con .vs-radio .vs-radio--border,.vs-radio-con .vs-radio .vs-radio--circle{width:100%;height:100%;position:absolute;left:0;transition:all .25s ease;top:0;border-radius:50%}.vs-radio-con .vs-radio .vs-radio--border{background:transparent;border:2px solid #b8c2cc}.vs-radio-con .vs-radio .vs-radio--circle{opacity:0;transform:scale(.1)}.counter-value{background-color:#6d8be6;color:#fff;padding:1px 6px;font-size:.6rem;border-radius:0 0 5px 5px;margin-right:1rem}.form-group.input-divider-left .form-control-position i{padding:.2rem .5rem;border-right:1px solid #c6cde3}.form-group.input-divider-right .form-control-position i{padding:.2rem .5rem;border-left:1px solid #c6cde3}.input-group-lg .form-control,.input-group-sm .form-control{padding:.7rem}.bootstrap-touchspin.input-group{width:8.4rem;align-items:center}.bootstrap-touchspin.input-group .form-control{padding:5px;height:auto;border:0;background-color:#eff1f7;border-radius:5px!important;text-align:center;font-weight:500}.bootstrap-touchspin.input-group .form-control:focus{z-index:1;box-shadow:none}.bootstrap-touchspin .bootstrap-touchspin-injected{margin:0!important}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-down,.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-up{padding:0;min-width:22px;min-height:22px;border-radius:5px!important;position:relative}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-down i,.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-up i{font-size:.8rem;position:relative;top:-1px}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-down{left:12px}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-up{right:12px}.bootstrap-touchspin.disabled-touchspin .bootstrap-touchspin-down,.bootstrap-touchspin.disabled-touchspin .bootstrap-touchspin-up{background-color:rgba(0,0,0,.5)!important;cursor:default;opacity:.5}.bootstrap-touchspin.input-group-lg{width:9.375rem}.bootstrap-touchspin.input-group-lg .touchspin.form-control{height:auto!important}.bootstrap-touchspin.input-group-lg .bootstrap-touchspin-down i,.bootstrap-touchspin.input-group-lg .bootstrap-touchspin-up i{font-size:1rem}.bootstrap-touchspin.input-group-sm{width:6.25rem}.bootstrap-touchspin.input-group-sm .touchspin.form-control{height:auto!important}.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-down,.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-up{min-width:16px;min-height:16px;padding-top:2.2px}.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-down i,.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-up i{font-size:.6rem}.btn.disabled-max-min{background-color:rgba(0,0,0,.5)!important;cursor:default}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}.bootstrap-touchspin.input-group input[type=number]{-moz-appearance:textfield}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.form-label-group label{display:none}select.form-control:not([multiple=multiple]){background:none}.custom-file-label:after{padding:1.34rem .7rem 1.25rem}}.picker__input.form-control{background-color:#fff}.input-group .form-control{height:auto}.input-group .input-group-append .dropdown-toggle:after,.input-group .input-group-prepend .dropdown-toggle:after{left:0}.input-group .input-group-append .vs-checkbox,.input-group .input-group-append .vs-checkbox-con,.input-group .input-group-append .vs-radio,.input-group .input-group-append .vs-radio-con,.input-group .input-group-prepend .vs-checkbox,.input-group .input-group-prepend .vs-checkbox-con,.input-group .input-group-prepend .vs-radio,.input-group .input-group-prepend .vs-radio-con{margin:0}.input-group.input-group-lg .form-control::-moz-placeholder{font-size:1.25rem}.input-group.input-group-lg .form-control:-ms-input-placeholder{font-size:1.25rem}.input-group.input-group-lg .form-control::placeholder{font-size:1.25rem}.input-group.input-group-lg .input-group-append .btn,.input-group.input-group-lg .input-group-prepend .btn{line-height:1.3;font-size:1.3rem}.input-group.input-group-sm .form-control::-moz-placeholder{font-size:.7rem}.input-group.input-group-sm .form-control:-ms-input-placeholder{font-size:.7rem}.input-group.input-group-sm .form-control::placeholder{font-size:.7rem}.btn:disabled{cursor:default}.btn.btn-white{background-color:#fff;color:#626262}.btn.btn-white:active,.btn.btn-white:focus,.btn.btn-white:hover{color:#626262!important}.btn.btn-white.btn-primary{background-color:#6d8be6}.btn[class*=bg-gradient-]:hover{box-shadow:0 8px 25px -8px #aaa}.btn.btn-secondary{color:#fff}.btn.btn-secondary:hover{box-shadow:0 8px 25px -8px #b8c2cc}.btn.btn-dark:hover{box-shadow:0 8px 25px -8px #22292f}.btn.btn-light:hover{box-shadow:0 8px 25px -8px #f7f7f9}.btn.btn-outline-dark,.btn.btn-outline-light,.btn.btn-outline-secondary{border:1px solid}.btn[class*=btn-outline-]{padding-top:calc(.9rem - 1px);padding-bottom:calc(.9rem - 1px)}.btn-group-sm>.btn[class*=btn-outline-],.btn[class*=btn-outline-].btn-sm{padding-top:calc(.5rem - 1px);padding-bottom:calc(.5rem - 1px)}.btn.btn-icon{padding:.715rem .736rem}.btn-group-sm>.btn.btn-icon,.btn.btn-sm.btn-icon{padding:.5rem}.btn-group-lg>.btn.btn-icon,.btn.btn-lg.btn-icon{padding:1rem}.btn.btn-round{border-radius:2rem}.btn.active,.btn.focus,.btn:active,.btn:focus{outline:none;box-shadow:none!important}.btn.btn-icon i{font-size:1.1rem}.btn-white:hover,.btn.btn-outline-white:hover{color:#22292f!important}[type=reset],[type=submit],button,html [type=button]{cursor:pointer}.waves-button-input{padding:unset}.dropdown.show .btn-outline-light.dropdown-toggle,.dropdown.show .btn-outline-warning.dropdown-toggle{color:#fff}.dropdown .btn:not(.btn-sm):not(.btn-lg),.dropdown .btn:not(.btn-sm):not(.btn-lg).dropdown-toggle{padding:.85rem 1.5rem}.dropdown .btn:not(.btn-sm):not(.btn-lg).btn-round,.dropdown .btn:not(.btn-sm):not(.btn-lg).dropdown-toggle.btn-round{border-radius:2rem}.dropdown .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem;border-left-color:hsla(0,0%,100%,.2)!important;border-top-left-radius:0;border-bottom-left-radius:0}.dropdown [class*=btn-outline-].dropdown-toggle.dropdown-toggle-split{border-left:0!important}.dropdown [class*=btn-outline-].dropdown-toggle.dropdown-toggle-split:active{color:#fff}.dropdown .dropdown-menu{border:1px solid rgba(86,86,86,.05);border-radius:5px;transform:scaleY(0);box-shadow:0 5px 25px rgba(86,86,86,.1);min-width:8rem}.dropdown .dropdown-menu:before{content:\"\";position:absolute;top:-1px;left:1.2rem;width:.75rem;height:.75rem;display:block;background:#fff;transform:rotate(45deg) translate(-7px);border-top:1px solid rgba(86,86,86,.1);border-left:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropdown .dropdown-menu.dropdown-menu-right:before{right:.6rem;left:auto}.dropdown .dropdown-menu .dropdown-header{padding:.714rem 1.428rem;margin-top:.714rem}.dropdown .dropdown-menu .dropdown-item{padding:.5rem 1rem;color:#626262;width:auto;cursor:pointer}.dropdown .dropdown-menu .dropdown-item:hover{background-color:#eff1f7;color:#6d8be6}.dropdown .dropdown-menu .dropdown-item.active{color:#fff}.dropdown .dropdown-menu .dropdown-item:active{background-color:transparent;color:#626262}.dropdown i{margin-right:.5rem}.dropdown.no-arrow .dropdown-toggle:after{display:none}.dropdown.no-arrow .dropdown-toggle i{margin-right:0}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown .dropdown-menu .dropdown-item,.dropleft .dropdown-menu .dropdown-item,.dropright .dropdown-menu .dropdown-item,.dropup .dropdown-menu .dropdown-item{padding:.714rem 1.428rem}.show>.dropdown-menu{transform:scale(1);opacity:1;display:block}.dropdown-toggle:after{border:none!important;font-family:feather;content:\"\\E842\"!important;position:relative;top:1px;right:0;left:.714rem;padding:0;margin:0;vertical-align:0}.dropdown-toggle.dropdown-toggle-split{border-left:1px solid hsla(0,0%,100%,.2)}.dropdown-toggle.dropdown-toggle-split:after{left:0}.dropdown-toggle.nav-hide-arrow:after{display:none}.dropdown-toggle:focus{outline:0}.btn-secondary~.dropdown-menu .dropdown-item.active,.btn-secondary~.dropdown-menu .dropdown-item:hover{background-color:#ccc}.dropup{position:relative}.dropup .btn,.dropup .btn.dropdown-toggle{padding:.85rem 1.5rem}.dropup .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem;border-color:hsla(0,0%,100%,.2)!important}.dropup .dropdown-toggle:after{content:\"\\E845\"!important;vertical-align:.05rem}.dropup .dropdown-menu:before{content:\"\";position:absolute;bottom:-.714rem;left:1.214rem;width:.714rem;height:.714rem;display:block;background:#fff;transform:rotate(45deg) translate(-7px);border-bottom:1px solid rgba(86,86,86,.1);border-right:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropup .dropdown-menu.dropdown-menu-right:before{left:auto;right:.714rem}.dropup .dropdown-submenu .dropdown-menu{bottom:auto;top:0}.dropleft .btn,.dropleft .btn.dropdown-toggle{padding:.85rem 1.5rem}.dropleft .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem}.dropleft .dropdown-toggle:before{border:none!important;font-family:feather;content:\"\\E843\"!important}.dropleft .dropdown-menu:before{content:\"\";position:absolute;top:1.285rem;right:0;width:.714rem;height:.714rem;display:block;background:#fff;transform:rotate(130deg) translate(-8px);border-top:1px solid rgba(86,86,86,.1);border-left:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropright .btn,.dropright .btn.dropdown-toggle{padding:.85rem 1.5rem}.dropright .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem}.dropright .dropdown-toggle:after{border:none!important;font-family:feather;content:\"\\E844\"!important}.dropright .dropdown-menu:before{content:\"\";position:absolute;top:1.285rem;left:-.9rem;width:.714rem;height:.714rem;display:block;background:#fff;transform:rotate(140deg) translate(-9px);border-bottom:1px solid rgba(86,86,86,.1);border-right:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropdown.dropdown-icon-wrapper .dropdown-toggle:after,.dropup.dropdown-icon-wrapper .dropdown-toggle:after{display:none}.dropdown.dropdown-icon-wrapper .dropdown-menu,.dropup.dropdown-icon-wrapper .dropdown-menu{min-width:auto}.dropdown.dropdown-icon-wrapper .dropdown-menu .dropdown-item,.dropup.dropdown-icon-wrapper .dropdown-menu .dropdown-item{padding:.5rem 1.1rem;cursor:pointer}.dropdown.dropdown-icon-wrapper .dropdown-menu .dropdown-item i,.dropup.dropdown-icon-wrapper .dropdown-menu .dropdown-item i{font-size:1.3rem;color:#626262}.dropdown.dropdown-icon-wrapper .dropdown-menu .dropdown-item:hover,.dropup.dropdown-icon-wrapper .dropdown-menu .dropdown-item:hover{color:#fff}.btn.btn-white~.dropdown-menu .dropdown-item:not(.acitve):hover{color:#626262!important}.btn.btn-white~.dropdown-menu .dropdown-item.active{color:#626262}.header-navbar .dropdown-menu,.horizontal-menu-wrapper .dropdown-menu{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:slideIn;animation-name:slideIn}@-webkit-keyframes slideIn{to{transform:translateY(0);opacity:1}0%{transform:translateY(1rem);opacity:0}}@keyframes slideIn{to{transform:translateY(0);opacity:1}0%{transform:translateY(1rem);opacity:0}}.navbar-dark .hamburger-inner,.navbar-dark .hamburger-inner:after,.navbar-dark .hamburger-inner:before{background-color:#fff}.header-navbar-shadow{display:none}.navbar-floating .header-navbar-shadow{display:block;background:linear-gradient(180deg,hsla(0,0%,97.3%,.95) 44%,hsla(0,0%,97.3%,.46) 73%,hsla(0,0%,100%,0));padding-top:2.2rem;background-repeat:repeat;width:100%;height:102px;position:fixed;top:0;z-index:11}.header-navbar{padding:0;min-height:3.8rem;font-family:Montserrat,Helvetica,Arial,serif;transition:all .3s ease;background:linear-gradient(180deg,hsla(0,0%,97.3%,.95) 44%,hsla(0,0%,97.3%,.46) 73%,hsla(0,0%,100%,0));z-index:997}.header-navbar.fixed-top{left:260px}.header-navbar[class*=bg-] .navbar-nav .nav-item>a,.header-navbar[class*=bg-] .navbar-nav .nav-item>a i,.header-navbar[class*=bg-] .navbar-nav .nav-item>a span{color:#fff!important}.header-navbar[class*=bg-] .navbar-nav .nav-item .dropdown-menu i{color:inherit!important}.header-navbar[class*=bg-] .navbar-nav .search-input .input,.header-navbar[class*=bg-] .navbar-nav .search-input .search-list .auto-suggestion span{color:#626262!important}.header-navbar.floating-nav{margin:1.3rem 2.2rem 0;border-radius:.5rem;position:fixed;width:calc(100% - 4.4rem - 260px);z-index:12;right:0}.header-navbar.navbar-static-top{background:transparent;box-shadow:none!important;top:0;right:0;left:260px;width:calc(100% - 260px)}.header-navbar .navbar-wrapper{width:100%}.header-navbar.navbar-border{border-bottom:1px solid #e4e7ed}.header-navbar.navbar-dark.navbar-border{border-bottom:1px solid #8596b5}.header-navbar.navbar-shadow{box-shadow:0 4px 20px 0 rgba(0,0,0,.05)}.header-navbar:not(.navbar-horizontal) .nav-link.dropdown-toggle:after{display:none}.header-navbar .navbar-container ul.nav li.dropdown-language{padding-right:0}.header-navbar .navbar-container ul.nav li.dropdown-language .selected-language{font-size:.97rem;letter-spacing:-.25px;font-weight:500}.header-navbar .navbar-container{padding-left:1rem;transition:all .3s ease;background:inherit;margin-left:0}.header-navbar .navbar-container .bookmark-wrapper ul.nav li>a.nav-link{padding:1.4rem .5rem 1.35rem}.header-navbar .navbar-container .bookmark-wrapper ul.nav li>a.nav-link i:hover{color:#6d8be6}.header-navbar .navbar-container .bookmark-input{z-index:1}.header-navbar .navbar-container ul.nav li.dropdown .dropdown-menu{top:48px}.header-navbar .navbar-container ul.nav li .badge{padding:.42em .6em .25rem}.header-navbar .navbar-container ul.nav li .badge.badge-up{position:absolute;top:12px;right:-2px}.header-navbar .navbar-container ul.nav li.dropdown-language>a.nav-link{padding:1.65rem .5rem}.header-navbar .navbar-container ul.nav li>a.nav-link{color:#626262;padding:1.6rem .5rem 1.35rem 1rem}.header-navbar .navbar-container ul.nav li>a.nav-link i.flag-icon{margin-right:.5rem}.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right{right:12px;left:auto;padding:.5rem}.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right .dropdown-item{padding:10px}.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right .dropdown-item:active,.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right .dropdown-item:hover{background:#6d8be6;color:#fff!important}.header-navbar .navbar-container ul.nav li a.dropdown-user-link{padding:.7rem 1rem;display:flex;align-items:center}.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-name{display:inline-block;margin-bottom:.435rem;margin-left:.2rem}.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-status{font-size:smaller}.header-navbar .navbar-container ul.nav li a.dropdown-user-link img{box-shadow:0 4px 8px 0 rgba(0,0,0,.12),0 2px 4px 0 rgba(0,0,0,.08)}.header-navbar .navbar-container ul.nav li a.menu-toggle{padding:1.34rem .22rem 1.35rem 0}.header-navbar .navbar-container ul.nav li a.menu-toggle i{font-size:1.4rem}.header-navbar .navbar-container ul.nav li a.nav-link-label{padding:1.6rem 0 1.35rem .8rem}.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-nav{display:flex;flex-direction:column;align-items:flex-end;float:left;margin-right:.8rem}.header-navbar .navbar-container ul.nav li div.input-group{padding:.7rem 1rem}.header-navbar .navbar-container ul.nav li i.ficon{font-size:1.5rem;color:#626262}.header-navbar .navbar-container ul.nav li i.ficon:hover{color:#6d8be6}.header-navbar .navbar-container ul.nav li .media-list{max-height:18.2rem}.header-navbar .navbar-container ul.nav li .scrollable-container{position:relative}.header-navbar .navbar-container .dropdown-menu-media{width:26rem}.header-navbar .navbar-container .dropdown-menu-media .media-list .media{padding:1rem;border:none;border-bottom:1px solid #dae1e7}.header-navbar .navbar-container .dropdown-menu-media .media-list .media:hover{background:#eff1f7}.header-navbar .navbar-container .dropdown-menu-media .media-list .media .media-meta{color:#626262}.header-navbar .navbar-container .dropdown-menu-media .media-list a:last-of-type .media{border-bottom:none}.header-navbar .navbar-container .dropdown-menu-media .dropdown-menu-header{border-bottom:1px solid #dae1e7}.header-navbar .navbar-container .dropdown-menu-media .dropdown-menu-footer a{padding:.3rem;border-top:1px solid #dae1e7}.header-navbar .nav-item+.nav-item,.header-navbar.navbar-without-menu .navbar-container{margin-left:0}@media (max-width:767.98px){.header-navbar .navbar-header{width:100%!important;padding:.5rem 1rem;position:relative}.header-navbar .navbar-header .menu-toggle{top:2px;position:relative}.header-navbar .navbar-header .open-navbar-container i{font-size:1.8rem}.header-navbar .navbar-header .navbar-brand{position:absolute;left:50%;top:0;transform:translate(-50%)}.header-navbar.navbar-with-menu .navbar-container{width:100%;display:table;margin:0;height:auto}}@media (max-width:991.98px){[data-menu=vertical-menu-modern] .header-navbar .navbar-header{width:100%!important;padding:.5rem 1rem;position:relative}[data-menu=vertical-menu-modern] .header-navbar .navbar-header .menu-toggle{top:2px;position:relative}[data-menu=vertical-menu-modern] .header-navbar .navbar-header .open-navbar-container i{font-size:1.8rem}[data-menu=vertical-menu-modern] .header-navbar .navbar-header .navbar-brand{position:absolute;left:50%;top:0;transform:translate(-50%)}[data-menu=vertical-menu-modern] .header-navbar.navbar-with-menu .navbar-container{width:100%;display:table;margin:0;height:auto}[data-menu=vertical-menu-modern] .navbar-dark .navbar-header .navbar-nav .nav-link,[data-menu=vertical-menu-modern] .navbar-semi-dark .navbar-header .navbar-nav .nav-link{color:#fff}[data-menu=vertical-menu-modern] .navbar-dark .navbar-container .navbar-nav .nav-link,[data-menu=vertical-menu-modern] .navbar-light .navbar-header .navbar-nav .nav-link,[data-menu=vertical-menu-modern] .navbar-semi-dark .navbar-container .navbar-nav .nav-link{color:#b8c2cc}}.navbar-light,.navbar-light.navbar-horizontal{background:#fff}.navbar-light .navbar-nav li{line-height:1}.navbar-light .navbar-nav .active.nav-link{background-color:rgba(0,0,0,.03)}.navbar-light .navbar-nav .disabled.nav-link{color:#b8c2cc}.navbar-dark{background:#b8c2cc}.navbar-dark .navbar-brand{color:#fff!important}.navbar-dark.navbar-horizontal{background:#b8c2cc}.navbar-dark .nav-search .btn-secondary,.navbar-dark .nav-search .form-control{color:#fff;background:#b8c2cc}.navbar-dark .navbar-nav li{line-height:1}.navbar-dark .navbar-nav .active.nav-link{background-color:hsla(0,0%,100%,.05)}.navbar-dark .navbar-nav .disabled.nav-link{color:#dae1e7}.navbar-semi-dark{background:#fff}.navbar-semi-dark .navbar-header{background:#b8c2cc}.navbar-semi-dark .navbar-header .brand-text{color:#fff}.navbar-semi-dark .navbar-nav li{line-height:1}.navbar-semi-dark .navbar-nav .nav-link{color:#b8c2cc}.navbar-semi-dark .navbar-nav .active.nav-link{background-color:rgba(0,0,0,.03)}.navbar-semi-dark .navbar-nav .disabled.nav-link{color:#b8c2cc}.navbar-semi-light{background:#b8c2cc}.navbar-semi-light .navbar-header{background:#fff}.navbar-semi-light .navbar-header .brand-text{color:#b8c2cc}.navbar-semi-light .navbar-nav li{line-height:1}.navbar-semi-light .navbar-nav .nav-link{color:#fff}.navbar-semi-light .navbar-nav .active.nav-link{background-color:rgba(0,0,0,.03)}.navbar-semi-light .navbar-nav .disabled.nav-link{color:#b8c2cc}@-moz-document url-prefix(){ul li a .children-in{position:relative;right:3px;top:-14px}}.navbar-menu-icon span{display:block;position:absolute;height:2px;width:100%;background:#b8c2cc;border-radius:9px;opacity:1;left:0;transform:rotate(0deg);transition:.25s ease-in-out}.navbar-menu-icon span:first-child{top:0}.navbar-menu-icon span:nth-child(2){top:10px}.navbar-menu-icon span:nth-child(3){top:20px}.navbar-menu-icon.show span:first-child{top:10px;transform:rotate(135deg)}.navbar-menu-icon.show span:nth-child(2){opacity:0;left:-60px}.navbar-menu-icon.show span:nth-child(3){top:10px;transform:rotate(-135deg)}@media (max-width:767.98px){.header-navbar .navbar-nav .show{position:static}.header-navbar .navbar-nav .open-navbar-container{padding-top:.625rem}.header-navbar .navbar-container .show .dropdown-menu{right:0;left:0!important;float:none;width:auto;margin-top:0;max-height:400px;overflow-x:hidden}.header-navbar .navbar-container .dropdown-user .dropdown-menu-right{right:0!important}.header-navbar .navbar-container ul.nav li.nav-item i{margin-right:.2rem}.header-navbar .navbar-container ul.nav li a.dropdown-user-link{padding:.8rem .6rem}.header-navbar .navbar-container ul.nav li .dropdown-toggle:after{margin-right:0;margin-left:-2px}.navbar-dark .hamburger-inner,.navbar-dark .hamburger-inner:after,.navbar-dark .hamburger-inner:before,.navbar-semi-dark .hamburger-inner,.navbar-semi-dark .hamburger-inner:after,.navbar-semi-dark .hamburger-inner:before{background-color:#fff}.navbar-dark .navbar-header .navbar-nav .nav-link,.navbar-semi-dark .navbar-header .navbar-nav .nav-link{color:#fff}.navbar-dark .navbar-container .navbar-nav .nav-link,.navbar-light .navbar-container .navbar-nav .nav-link,.navbar-light .navbar-header .navbar-nav .nav-link,.navbar-semi-dark .navbar-container .navbar-nav .nav-link,.navbar-semi-light .navbar-container .navbar-nav .nav-link,.navbar-semi-light .navbar-header .navbar-nav .nav-link{color:#b8c2cc}}.headroom{will-change:transform;transition:transform .2s linear}.headroom--pinned-top{transform:translateY(0)}.headroom--unpinned-top{transform:translateY(-100%)}.headroom--pinned-bottom{transform:translateY(0)}.headroom--unpinned-bottom{transform:translateY(100%)}@media (max-width:575.98px){.header-navbar .navbar-container ul.nav li .selected-language{display:none}}body[data-col=\"1-column\"] .header-navbar.floating-nav{width:calc(100% - 4.4rem)}@media (-ms-high-contrast:none),(min-width:1200px) and (-ms-high-contrast:active){body:not([data-col=\"1-columns\"]) .header-navbar.floating-nav{width:calc(100% - 320px)}}@media (max-width:1199.98px){.header-navbar .navbar-container ul.nav li a.dropdown-user-link{padding:.7rem 1.23rem}.header-navbar .navbar-container ul.nav li .dropdown-toggle:after{margin-right:0;margin-left:-2px}.header-navbar.navbar-static-top{left:0;width:100%}}@media (max-width:767px){#navbar-mobile.navbar-collapse .navbar-nav{margin:0;flex-flow:row wrap}#navbar-mobile.navbar-collapse .navbar-nav .dropdown-menu{position:absolute}#navbar-mobile.navbar-collapse .navbar-nav .nav-item{float:left}}@media (max-width:991.98px){#navbar-mobile.navbar-collapse .navbar-nav{margin:0;flex-flow:row wrap}#navbar-mobile.navbar-collapse .navbar-nav .dropdown-menu{position:absolute}#navbar-mobile.navbar-collapse .navbar-nav .nav-item{float:left}}@media only screen and (min-device-width:26.78em) and (max-device-width:47.64em) and (-webkit-min-device-pixel-ratio:2) and (orientation:landscape){.header-navbar .navbar-container .show .dropdown-menu{max-height:180px}}@media only screen and (min-device-width:29.57em) and (max-device-width:52.57em) and (-webkit-min-device-pixel-ratio:3) and (orientation:landscape){.header-navbar .navbar-container .show .dropdown-menu{max-height:280px}}#navbar-component .navbar{z-index:auto!important}#navbar-component .navbar.floating-nav{border-radius:.5rem}#navbar-component .navbar .navbar-nav .nav-item a{color:inherit}#navbar-component .navbar.header-navbar.navbar-dark .navbar-nav .nav-link,#navbar-component .navbar.header-navbar.navbar-dark .navbar-nav .nav-link i{color:#fff}#navbar-component .navbar .navbar-nav .dropdown-language.show,#navbar-component .navbar .navbar-nav .dropdown-notification.show,#navbar-component .navbar .navbar-nav .dropdown-user.show{position:relative}#navbar-component .navbar .navbar-nav .dropdown-language .dropdown-menu.show,#navbar-component .navbar .navbar-nav .dropdown-notification .dropdown-menu.show,#navbar-component .navbar .navbar-nav .dropdown-user .dropdown-menu.show{position:absolute;right:0;left:auto!important}#navbar-component .navbar.navbar-dark .navbar-toggler,#navbar-component .navbar.navbar-light .navbar-toggler{font-size:1.2rem}#navbar-component .navbar.navbar-dark .navbar-toggler:focus,#navbar-component .navbar.navbar-light .navbar-toggler:focus{outline:0}#navbar-component #navbar-collapsed .navbar{border-radius:0}@media (min-width:992px){#navbar-component .navbar .navbar-container{background:inherit}#navbar-component .nav .dropdown-language{float:right}}@media (max-width:992px){#navbar-component .navbar .navbar-container{background:inherit}#navbar-component .navbar .navbar-container .navbar-nav{flex-direction:row}}@media (max-width:1201px){.header-navbar.fixed-top{left:0}.horizontal-layout .header-navbar .navbar-container{padding-left:1.5rem;padding-right:1.2rem}}@media (max-width:1199px){.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-name{margin-bottom:0}}@media (max-width:768px){#navbar-component .navbar .navbar-nav .dropdown-notification.show{position:static}}@media (max-width:575.98px){.header-navbar.floating-nav{width:calc(100% - 2.4rem)!important;margin-left:1.2rem;margin-right:1.2rem}.content.app-content .content-area-wrapper{margin-left:1.2rem!important;margin-right:1.2rem!important}.header-navbar .navbar-container{padding-left:1rem!important;padding-right:0!important}}@media (max-width:992px){.navbar-container #navbar-mobile .nav-back{margin-top:5px}}.nav{border-radius:.25rem}.nav.wrap-border{border:1px solid #ddd}.nav.wrap-border li.nav-header{margin:0 .5rem}.nav.wrap-border div,.nav.wrap-border li.nav-item{padding:2px .714rem}.nav.square-border,.nav.square-border .nav-item .nav-link.active{border-radius:0}.nav .modern-nav-toggle{padding:1.571rem 0}.nav.nav-pills{margin-bottom:1rem}.nav.nav-pills .nav-item .nav-link{border-radius:.357rem;padding:.3rem 1rem .2rem;margin-right:.5rem}.nav.nav-pills .nav-item .nav-link.active{color:#fff}.nav.nav-pills .nav-item .nav-link.disabled{color:#b8c2cc}.nav.nav-pills .nav-item .nav-link.dropdown-toggle:after{top:1px;left:1px}.nav.nav-pills .nav-item.dropdown.show .nav-link{color:#fff}.nav.nav-pills .nav-item.dropdown.show .dropdown-item.active:hover{color:#6d8be6}.nav.nav-pills.nav-justified{width:100%}.nav.nav-pills.nav-justified .nav-item{float:none}.nav.nav-pills.nav-justified .nav-link{text-align:center;margin-bottom:5px}.nav.nav-pills.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:576px){.nav.nav-pills.nav-justified .nav-item{display:block;width:1%}.nav.nav-pills.nav-justified .nav-link{margin-bottom:0}}.nav.nav-pills.nav-justified .nav-link{margin-right:0;border-radius:.5rem}@media (min-width:576px){.nav.nav-pills.nav-justified .nav-link.active,.nav.nav-pills.nav-justified .nav-link.active:focus,.nav.nav-pills.nav-justified .nav-link.active:hover{border-bottom-color:transparent}}.nav.nav-pills.nav-justified .nav-link{display:block}.nav.nav-pills.nav-justified .nav-link.active,.nav.nav-pills.nav-justified .nav-link.active:focus,.nav.nav-pills.nav-justified .nav-link.active:hover{border:none}.nav.nav-pills.nav-active-bordered-pill .nav-item a.nav-link.active{border:1px solid #6d8be6;border-radius:.25rem;color:#6d8be6;background-color:#fff}.nav.nav-tabs{border:none;margin-bottom:1rem;border-radius:0}.nav.nav-tabs,.nav.nav-tabs .nav-item{position:relative}.nav.nav-tabs .nav-item .nav-link{color:#626262;font-size:.95rem;border:none;min-width:auto;font-weight:450;padding:.61rem .635rem;border-radius:0}.nav.nav-tabs .nav-item .nav-link.active{border:none;position:relative;color:#6d8be6;transition:all .2s ease;background-color:transparent}.nav.nav-tabs .nav-item .nav-link.active:after{content:attr(data-before);height:2px;width:100%;left:0;position:absolute;bottom:0;top:100%;background:linear-gradient(30deg,#6d8be6,rgba(109,139,230,.5))!important;box-shadow:0 0 8px 0 rgba(109,139,230,.5)!important;transform:translateY(0);transition:all .2s linear}.nav.nav-tabs .nav-item .nav-link.dropdown-toggle:after{top:1px;left:1px}.nav.nav-tabs .nav-item .nav-link.disabled{color:#b8c2cc}.nav.nav-tabs.nav-justified{width:100%}.nav.nav-tabs.nav-justified .nav-item{float:none}.nav.nav-tabs.nav-justified .nav-link{text-align:center;margin-bottom:5px}.nav.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:576px){.nav.nav-tabs.nav-justified .nav-item{display:block;width:1%}.nav.nav-tabs.nav-justified .nav-link{margin-bottom:0}}.nav.nav-tabs.nav-justified .nav-link{margin-right:0;border-radius:.5rem}@media (min-width:576px){.nav.nav-tabs.nav-justified .nav-link.active,.nav.nav-tabs.nav-justified .nav-link.active:focus,.nav.nav-tabs.nav-justified .nav-link.active:hover{border-bottom-color:transparent}}.nav.nav-tabs.nav-justified .nav-item a.nav-link{display:block;border-radius:0}.nav.nav-tabs.nav-justified .nav-item a.nav-link.active{border:none;background-color:#fff}.nav.nav-tabs.nav-justified .nav-item a.nav-link:hover{border-color:transparent}.nav-vertical{overflow:hidden}.nav-vertical .nav.nav-tabs .nav-item .nav-link{border:none;margin-bottom:0}.nav-vertical .nav.nav-tabs .nav-item .nav-link.active{border:none;border-radius:0}.nav-vertical .nav.nav-tabs .nav-item .nav-link.active:after{transform:rotate(90deg);left:auto;right:-1.5rem;bottom:100%;top:1.25rem;width:2.14rem}.nav-vertical .nav.nav-tabs .nav-item .nav-link:hover{border-right:none}.nav-vertical .nav.nav-tabs.nav-left{float:left;display:table;margin-right:1rem}.nav-vertical .nav.nav-tabs.nav-left~.tab-content .tab-pane{display:none;background-color:#fff;overflow-y:auto}.nav-vertical .nav.nav-tabs.nav-left~.tab-content .tab-pane.active{display:block}.nav-vertical .nav.nav-tabs.nav-right{float:right;display:table;margin-left:1rem}.nav-vertical .nav.nav-tabs.nav-right .nav-item .nav-link.active:after{left:-1.5rem}.nav-vertical .nav.nav-tabs.nav-right~.tab-content .tab-pane{display:none;background-color:#fff;overflow-y:auto;padding-right:1rem}.nav-vertical .nav.nav-tabs.nav-right~.tab-content .tab-pane.active{display:block}@media (max-width:576px){.nav-vertical .nav.nav-tabs .nav-item .nav-link.active:after{height:0}}.toast-bs-container{z-index:1040;position:fixed;top:0;left:0;width:100%}.toast-bs-container .toast-position{position:relative;top:0;right:0;display:flex;flex-direction:column;flex-wrap:wrap-reverse}.toast-bs-container .toast-position .toast.show{opacity:1;z-index:1030}.toast-placement{position:static;top:0}.toast-placement .toast{position:fixed;top:0;z-index:1030}.toast{display:none;background-color:#fff;margin-top:.75rem}.toast .toast-header .close:active,.toast .toast-header .close:focus,.toast .toast-header .mailbox-attachment-close:active,.toast .toast-header .mailbox-attachment-close:focus{outline:none}.toast.show.toast-wrapper{position:static}.toast.toast-translucent{opacity:1;display:block}.toast-header img{width:35px;height:24px}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.toast-bs-container{position:fixed!important;left:74%!important}}.toast-bs-container,_:-ms-lang(x){position:fixed!important;left:74%!important}.pagination .page-item{border-radius:5rem}.pagination .page-item.first .page-link,.pagination .page-item.last .page-link,.pagination .page-item.next-item .page-link,.pagination .page-item.prev-item .page-link{color:#6d8be6}.pagination .page-item.first.disabled .page-link,.pagination .page-item.last.disabled .page-link,.pagination .page-item.next-item.disabled .page-link,.pagination .page-item.prev-item.disabled .page-link{color:#b8c2cc}.pagination .page-item:not(.active) .page-link,.pagination .page-item:not(.first) .page-link,.pagination .page-item:not(.last) .page-link,.pagination .page-item:not(.next-item) .page-link,.pagination .page-item:not(.prev-item) .page-link{line-height:1.3}.pagination .page-item.prev-item{margin-right:.3571rem}.pagination .page-item.prev-item .page-link{background-color:#f0f0f0;padding:.572rem .651rem;border-radius:50%}.pagination .page-item.prev-item .page-link:before{content:\"\\E843\";font-family:feather}.pagination .page-item.prev-item .page-link:hover{background:#6d8be6;color:#fff}.pagination .page-item.prev-item~.page-item:nth-child(2){border-top-left-radius:5rem;border-bottom-left-radius:5rem}.pagination .page-item.prev-item~.page-item:nth-child(2) .page-link{border-top-left-radius:5rem!important;border-bottom-left-radius:5rem!important}.pagination .page-item.prev-item~.page-item:nth-last-child(2){border-top-right-radius:5rem;border-bottom-right-radius:5rem}.pagination .page-item.prev-item~.page-item:nth-last-child(2) .page-link{border-top-right-radius:5rem!important;border-bottom-right-radius:5rem!important}.pagination .page-item.next-item{margin-left:.3571rem}.pagination .page-item.next-item .page-link{background-color:#f0f0f0;padding:.572rem .651rem;border-radius:50%}.pagination .page-item.next-item .page-link:after{content:\"\\E844\";font-family:feather}.pagination .page-item.next-item .page-link:hover{background:#6d8be6;color:#fff}.pagination .page-item.prev .page-link:before,.pagination .page-item.previous .page-link:before{content:\"\\E843\";font-family:feather}.pagination .page-item.next .page-link:after{content:\"\\E844\";font-family:feather}.pagination .page-item .page-link{border:none;color:rgba(86,86,86,.9);background-color:#f0f0f0;margin:0;font-size:1rem;font-weight:700}.pagination .page-item .page-link i{position:relative;top:1px}.pagination .page-item .page-link:focus{box-shadow:none}.pagination .page-item .page-link:hover{color:#6d8be6}.pagination .page-item.active{background-color:#f0f0f0;border-radius:0}.pagination .page-item.active .page-link{z-index:3;border-radius:5rem;background-color:#6d8be6;color:#fff;transform:scale(1.05)}.pagination .page-item:first-child:not(.prev-item).active{border-top-left-radius:1.428rem;border-bottom-left-radius:1.428rem}.pagination .page-item:first-child:not(.prev-item).active .page-link{border-radius:5rem}.pagination .page-item:first-child:not(.prev-item) .page-link{border-top-left-radius:1.428rem;border-bottom-left-radius:1.428rem}.pagination .page-item:last-child:not(.next-item).active{border-top-right-radius:1.428rem;border-bottom-right-radius:1.428rem}.pagination .page-item:last-child:not(.next-item).active .page-link{border-radius:5rem}.pagination .page-item:last-child:not(.next-item) .page-link{border-top-right-radius:1.428rem;border-bottom-right-radius:1.428rem}.pagination.pagination-lg .page-item .page-link{font-size:1.5rem;transform:scale(1)}html.scroll-smooth{scroll-behavior:smooth}.wrapper,body,html{min-height:100%}.wrapper{position:relative}.wrapper .content-wrapper{min-height:calc(100vh - 6.614rem - 1px)}.layout-boxed .wrapper,.layout-boxed .wrapper:before{margin:0 auto;max-width:1250px}.layout-boxed .wrapper .main-sidebar{left:inherit}@supports not (-webkit-touch-callout:none){.layout-fixed .wrapper .sidebar{height:calc(100vh - 3.164rem - 1px)}.layout-fixed.text-sm .wrapper .sidebar{height:calc(100vh - 2.62475rem - 1px)}}.layout-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed.sidebar-mini-md.sidebar-collapse .wrapper .brand-link,.layout-navbar-fixed.sidebar-mini.sidebar-collapse .wrapper .brand-link{height:calc(3.164rem + 1px);width:5.4rem}.layout-navbar-fixed.sidebar-mini-md.sidebar-collapse.text-sm .wrapper .brand-link,.layout-navbar-fixed.sidebar-mini-md.sidebar-collapse .wrapper .brand-link.text-sm,.layout-navbar-fixed.sidebar-mini.sidebar-collapse.text-sm .wrapper .brand-link,.layout-navbar-fixed.sidebar-mini.sidebar-collapse .wrapper .brand-link.text-sm{height:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .main-header{z-index:1033}.layout-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .control-sidebar{top:0}.layout-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .brand-link,.layout-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;z-index:1035}.layout-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-not-fixed .wrapper .brand-link{position:static}.layout-navbar-not-fixed .wrapper .content-wrapper,.layout-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-navbar-not-fixed .wrapper .main-header{position:static}.layout-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}@media (min-width:576px){.layout-sm-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-sm-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-sm-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-sm-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-sm-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed .wrapper .control-sidebar{top:0}.layout-sm-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-sm-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-sm-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-sm-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-sm-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-sm-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-sm-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-sm-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-sm-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-sm-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-not-fixed .wrapper .brand-link{position:static}.layout-sm-navbar-not-fixed .wrapper .content-wrapper,.layout-sm-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-sm-navbar-not-fixed .wrapper .main-header{position:static}.layout-sm-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}@media (min-width:768px){.layout-md-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-md-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-md-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-md-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-md-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed .wrapper .control-sidebar{top:0}.layout-md-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-md-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-md-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-md-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-md-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-md-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-md-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-md-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-md-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-md-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-md-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-not-fixed .wrapper .brand-link{position:static}.layout-md-navbar-not-fixed .wrapper .content-wrapper,.layout-md-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-md-navbar-not-fixed .wrapper .main-header{position:static}.layout-md-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}@media (min-width:992px){.layout-lg-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-lg-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-lg-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-lg-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-lg-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed .wrapper .control-sidebar{top:0}.layout-lg-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-lg-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-lg-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-lg-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-lg-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-lg-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-lg-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-lg-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-lg-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-lg-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-not-fixed .wrapper .brand-link{position:static}.layout-lg-navbar-not-fixed .wrapper .content-wrapper,.layout-lg-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-lg-navbar-not-fixed .wrapper .main-header{position:static}.layout-lg-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}@media (min-width:1200px){.layout-xl-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-xl-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-xl-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-xl-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-xl-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed .wrapper .control-sidebar{top:0}.layout-xl-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-xl-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-xl-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-xl-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-xl-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-xl-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-xl-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-xl-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-xl-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-xl-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-not-fixed .wrapper .brand-link{position:static}.layout-xl-navbar-not-fixed .wrapper .content-wrapper,.layout-xl-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-xl-navbar-not-fixed .wrapper .main-header{position:static}.layout-xl-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}.layout-footer-not-fixed .wrapper .content-wrapper{margin-bottom:0}.layout-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-footer-not-fixed .wrapper .main-footer{position:static}@media (min-width:576px){.layout-sm-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-sm-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-sm-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-sm-footer-not-fixed .wrapper .main-footer{position:static}}@media (min-width:768px){.layout-md-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-md-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-md-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-md-footer-not-fixed .wrapper .main-footer{position:static}}@media (min-width:992px){.layout-lg-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-lg-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-lg-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-lg-footer-not-fixed .wrapper .main-footer{position:static}}@media (min-width:1200px){.layout-xl-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-xl-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-xl-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-xl-footer-not-fixed .wrapper .main-footer{position:static}}.layout-top-nav .wrapper{margin-left:0}.layout-top-nav .wrapper .main-header .brand-image{margin-top:-.5rem;margin-right:.2rem;height:33px}.layout-top-nav .wrapper .main-sidebar{bottom:inherit;height:inherit}.layout-top-nav .wrapper .content-wrapper,.layout-top-nav .wrapper .main-footer,.layout-top-nav .wrapper .main-header,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .content-wrapper,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .content-wrapper:before,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-footer,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-footer:before,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-header,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-header:before{margin-left:0}@media (min-width:768px){body:not(.sidebar-mini-md) .content-wrapper,body:not(.sidebar-mini-md) .main-footer,body:not(.sidebar-mini-md) .main-header{transition:margin-left .3s ease-in-out;margin-left:260px}}@media (min-width:768px) and (prefers-reduced-motion:reduce){body:not(.sidebar-mini-md) .content-wrapper,body:not(.sidebar-mini-md) .main-footer,body:not(.sidebar-mini-md) .main-header{transition:none}}@media (min-width:768px){.sidebar-collapse body:not(.sidebar-mini-md) .content-wrapper,.sidebar-collapse body:not(.sidebar-mini-md) .main-footer,.sidebar-collapse body:not(.sidebar-mini-md) .main-header{margin-left:0}}@media (max-width:991.98px){body:not(.sidebar-mini-md) .content-wrapper,body:not(.sidebar-mini-md) .content-wrapper:before,body:not(.sidebar-mini-md) .main-footer,body:not(.sidebar-mini-md) .main-footer:before,body:not(.sidebar-mini-md) .main-header,body:not(.sidebar-mini-md) .main-header:before{margin-left:0}}@media (min-width:768px){.sidebar-mini-md .content-wrapper,.sidebar-mini-md .main-footer,.sidebar-mini-md .main-header{transition:margin-left .3s ease-in-out;margin-left:260px}}@media (min-width:768px) and (prefers-reduced-motion:reduce){.sidebar-mini-md .content-wrapper,.sidebar-mini-md .main-footer,.sidebar-mini-md .main-header{transition:none}}@media (min-width:768px){.sidebar-collapse .sidebar-mini-md .content-wrapper,.sidebar-collapse .sidebar-mini-md .main-footer,.sidebar-collapse .sidebar-mini-md .main-header{margin-left:5.4rem}}@media (max-width:991.98px){.sidebar-mini-md .content-wrapper,.sidebar-mini-md .content-wrapper:before,.sidebar-mini-md .main-footer,.sidebar-mini-md .main-footer:before,.sidebar-mini-md .main-header,.sidebar-mini-md .main-header:before{margin-left:5.4rem}}.content-wrapper{background:#f4f6f9}.content-wrapper>.content{padding:0 1rem}.main-sidebar,.main-sidebar:before{transition:margin-left .3s ease-in-out,width .3s ease-in-out;width:260px}@media (prefers-reduced-motion:reduce){.main-sidebar,.main-sidebar:before{transition:none}}.sidebar-collapse:not(.sidebar-mini):not(.sidebar-mini-md) .main-sidebar,.sidebar-collapse:not(.sidebar-mini):not(.sidebar-mini-md) .main-sidebar:before{box-shadow:none!important}.sidebar-collapse .main-sidebar,.sidebar-collapse .main-sidebar:before{margin-left:-260px}.sidebar-collapse .main-sidebar .nav-sidebar.nav-child-indent .nav-treeview{padding:0}@media (max-width:767.98px){.main-sidebar,.main-sidebar:before{box-shadow:none!important;margin-left:-260px}.sidebar-open .main-sidebar,.sidebar-open .main-sidebar:before{margin-left:0}}:not(.layout-fixed) .main-sidebar{height:inherit;min-height:100%;position:absolute;top:0}.layout-fixed .brand-link{width:260px}.layout-fixed .main-sidebar{left:0}.layout-fixed .control-sidebar,.layout-fixed .main-sidebar{bottom:0;float:none;height:100vh;position:fixed;top:0}.layout-fixed .control-sidebar .control-sidebar-content{height:calc(100vh - 3.164rem - 1px)}@supports (-webkit-touch-callout:none){.layout-fixed .main-sidebar{height:inherit}}.main-footer{background:transparent;border-top:0 solid #dae1e7;padding:.5rem 1rem;font-size:90%}.main-footer.text-sm,.text-sm .main-footer{padding:.812rem}.content-header{padding:15px 1rem}.text-sm .content-header{padding:10px 1rem}.content-header h1{font-size:1.8rem;margin:0}.text-sm .content-header h1{font-size:1.5rem}.content-header .breadcrumb{background:transparent;line-height:1.8rem;margin-bottom:0;padding:0;font-size:97%}.text-sm .content-header .breadcrumb{line-height:1.5rem}.hold-transition .content-wrapper,.hold-transition .control-sidebar,.hold-transition .control-sidebar *,.hold-transition .main-footer,.hold-transition .main-header,.hold-transition .main-sidebar,.hold-transition .main-sidebar *{transition:none!important}.main-header{border-bottom:1px solid #dae1e7;z-index:1034}.main-header .nav-link{height:2.164rem;position:relative}.main-header.text-sm .nav-link,.text-sm .main-header .nav-link{height:1.62475rem;padding:.35rem .5rem}.main-header.text-sm .nav-link>.fa,.main-header.text-sm .nav-link>.fab,.main-header.text-sm .nav-link>.far,.main-header.text-sm .nav-link>.fas,.main-header.text-sm .nav-link>.glyphicon,.main-header.text-sm .nav-link>.ion,.text-sm .main-header .nav-link>.fa,.text-sm .main-header .nav-link>.fab,.text-sm .main-header .nav-link>.far,.text-sm .main-header .nav-link>.fas,.text-sm .main-header .nav-link>.glyphicon,.text-sm .main-header .nav-link>.ion{font-size:1rem}.main-header .navbar-nav .nav-item{margin:0}.main-header .navbar-nav[class*=-right] .dropdown-menu{left:auto;margin-top:-3px;right:0}@media (max-width:575.98px){.main-header .navbar-nav[class*=-right] .dropdown-menu{left:0;right:auto}}.navbar-img{height:calc(3.164rem + 1px)/2;width:auto}.navbar-badge{font-size:.6rem;font-weight:300;padding:2px 4px;position:absolute;right:5px;top:9px}.btn-navbar{background-color:transparent;border-left-width:0}.form-control-navbar{border-right-width:0}.form-control-navbar+.input-group-append{margin-left:0}.btn-navbar,.form-control-navbar{transition:none}.navbar-dark .btn-navbar,.navbar-dark .form-control-navbar{background-color:hsla(0,0%,100%,.2);border:0}.navbar-dark .form-control-navbar::-moz-placeholder{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar:-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar::placeholder{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar+.input-group-append>.btn-navbar{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar:focus,.navbar-dark .form-control-navbar:focus+.input-group-append .btn-navbar{background-color:hsla(0,0%,100%,.6);border:0!important;color:#1e1e1e}.navbar-light .btn-navbar,.navbar-light .form-control-navbar{background-color:#b4bac2;border:0}.navbar-light .form-control-navbar::-moz-placeholder{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar:-ms-input-placeholder{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar::placeholder{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar+.input-group-append>.btn-navbar{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar:focus,.navbar-light .form-control-navbar:focus+.input-group-append .btn-navbar{background-color:#ededed;border:0!important;color:#1e1e1e}.brand-link{display:block;font-size:2rem;line-height:1.25;padding:.132rem .5rem;transition:width .3s ease-in-out;white-space:nowrap}.brand-link:hover{color:#fff;text-decoration:none}.text-sm .brand-link{font-size:inherit}[class*=sidebar-dark] .brand-link{border-bottom:0;color:hsla(0,0%,100%,.8)}[class*=sidebar-light] .brand-link{border-bottom:0;color:rgba(34,41,47,.8)}.brand-link .brand-image{float:left;line-height:.8;margin-left:.8rem;margin-right:.5rem;margin-top:-3px;max-height:33px;width:auto}.brand-link .brand-image-xs{float:left;line-height:.8;margin-top:-.1rem;max-height:33px;width:auto}.brand-link .brand-image-xl{line-height:.8;max-height:40px;width:auto}.brand-link.text-sm .brand-image,.text-sm .brand-link .brand-image{height:29px;margin-bottom:-.25rem;margin-left:.95rem;margin-top:-.25rem}.brand-link.text-sm .brand-image-xs,.text-sm .brand-link .brand-image-xs{margin-top:-.2rem;max-height:29px}.brand-link.text-sm .brand-image-xl,.text-sm .brand-link .brand-image-xl{margin-top:-.225rem;max-height:38px}.main-sidebar{height:100vh;overflow-y:hidden;z-index:1038}.main-sidebar a:-moz-focusring{border:0;outline:none}.main-sidebar .nav .nav-item .nav-link{padding:10px 10px 10px 25px!important}.main-sidebar .nav-treeview.nav .nav-item .nav-link{padding:5px 10px 7px 25px!important}.sidebar{height:calc(100% - 3.164rem - 1px);overflow-y:auto;padding:0 .5rem}.user-panel{position:relative}[class*=sidebar-dark] .user-panel{border-bottom:1px solid #3c4853}[class*=sidebar-light] .user-panel{border-bottom:1px solid #dae1e7}.user-panel,.user-panel .info{overflow:hidden;white-space:nowrap}.user-panel .image{display:inline-block;padding-left:.3rem}.user-panel img{height:auto;width:2.5666666667rem}.user-panel .info{display:inline-block;padding:5px 5px 5px 10px}.user-panel .dropdown-menu,.user-panel .status{font-size:1rem}.nav-sidebar .nav-item>.nav-link{margin-bottom:.2rem}.nav-sidebar .nav-item>.nav-link .right{transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-sidebar .nav-item>.nav-link .right{transition:none}}.nav-sidebar .nav-link>.right,.nav-sidebar .nav-link>p>.right{position:absolute;right:1rem;top:.9rem}.nav-sidebar .nav-link>.right i,.nav-sidebar .nav-link>.right span,.nav-sidebar .nav-link>p>.right i,.nav-sidebar .nav-link>p>.right span{margin-left:.5rem}.nav-sidebar .nav-link>.right:nth-child(2),.nav-sidebar .nav-link>p>.right:nth-child(2){right:2.2rem}.nav-sidebar .menu-open>.nav-treeview{display:block;border-radius:0}.nav-sidebar .menu-open>.nav-link i.right{transform:rotate(-90deg)}.nav-sidebar>.nav-item{margin-bottom:0}.nav-sidebar>.nav-item .nav-icon{margin-left:.05rem;font-size:1.2rem;margin-right:.2rem;text-align:center;width:2.4rem}.nav-sidebar>.nav-item .nav-icon.fa,.nav-sidebar>.nav-item .nav-icon.fab,.nav-sidebar>.nav-item .nav-icon.far,.nav-sidebar>.nav-item .nav-icon.fas,.nav-sidebar>.nav-item .nav-icon.glyphicon,.nav-sidebar>.nav-item .nav-icon.ion{font-size:1.1rem}.nav-sidebar>.nav-item .float-right{margin-top:3px}.nav-sidebar .nav-treeview{display:none;list-style:none;padding:0}.nav-sidebar .nav-treeview>.nav-item>.nav-link>.nav-icon{width:2.4rem}.nav-sidebar.nav-child-indent .nav-treeview{transition:padding .3s ease-in-out;padding-left:1rem}.text-sm .nav-sidebar.nav-child-indent .nav-treeview{padding-left:.5rem}.nav-sidebar.nav-child-indent.nav-legacy .nav-treeview .nav-treeview{padding-left:2rem;margin-left:-1rem}.text-sm .nav-sidebar.nav-child-indent.nav-legacy .nav-treeview .nav-treeview{padding-left:1rem;margin-left:-.5rem}.nav-sidebar .nav-header{font-size:.9rem;padding:.357rem}.nav-sidebar .nav-header:not(:first-of-type){padding:1.7rem 1rem .5rem}.nav-sidebar .nav-link p{display:inline-block;margin:0}#sidebar-overlay{background-color:rgba(34,41,47,.1);bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:1037}@media (max-width:991.98px){.sidebar-open #sidebar-overlay{display:block}}[class*=sidebar-light-]{background-color:#fff}[class*=sidebar-light-] .user-panel a:hover{color:#555}[class*=sidebar-light-] .user-panel .status,[class*=sidebar-light-] .user-panel .status:active,[class*=sidebar-light-] .user-panel .status:focus,[class*=sidebar-light-] .user-panel .status:hover{background:transparent;color:#555}[class*=sidebar-light-] .user-panel .dropdown-menu{border-color:transparent}[class*=sidebar-light-] .user-panel .dropdown-item{color:#626262}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link:active,[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link:focus{color:#555}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link i{margin-right:.75rem;font-size:1.2rem}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link p i{margin-right:0;margin-top:1px}[class*=sidebar-light-] .nav-sidebar>.nav-item.menu-open>.nav-link,[class*=sidebar-light-] .nav-sidebar>.nav-item:hover>.nav-link{background-color:transparent;color:#555}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link.active{color:#fff}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-treeview{background:transparent}[class*=sidebar-light-] .nav-header{background:inherit;color:#484848}[class*=sidebar-light-] .sidebar a{color:#555}[class*=sidebar-light-] .sidebar a:hover{text-decoration:none}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link{color:#555}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link i{margin-right:.75rem;margin-left:3px}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link p i{margin-right:0}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active:hover{background-color:transparent!important;background-image:linear-gradient(118deg,rgba(109,139,230,.95),rgba(109,139,230,.7));color:#fff;box-shadow:0 0 8px 1px rgba(109,139,230,.7)}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link:hover{background-color:transparent}[class*=sidebar-light-] .nav-flat .nav-item .nav-treeview .nav-treeview,[class*=sidebar-light-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link,[class*=sidebar-light-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link.active{border-color:linear-gradient(118deg,#6d8be6,rgba(109,139,230,.7))}[class*=sidebar-dark-]{background-image:linear-gradient(0deg,#77889f,#3e4958)}[class*=sidebar-dark-] .nav-treeview.nav .nav-item .nav-link{font-size:1rem!important;margin-bottom:0}[class*=sidebar-dark-] .nav-sidebar .nav-link>p>.right{right:.5rem}[class*=sidebar-dark-] .user-panel a:hover{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .user-panel .status,[class*=sidebar-dark-] .user-panel .status:active,[class*=sidebar-dark-] .user-panel .status:focus,[class*=sidebar-dark-] .user-panel .status:hover{background:transparent;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .user-panel .dropdown-menu{border-color:transparent}[class*=sidebar-dark-] .user-panel .dropdown-item{color:#626262}[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:active{color:#fff;font-weight:700}[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:hover{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-sidebar>.nav-item i{margin-right:.75rem;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-sidebar>.nav-item.menu-open>.nav-link,[class*=sidebar-dark-] .nav-sidebar>.nav-item:hover>.nav-link,[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:focus{background-color:transparent;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link.active{color:#fff;background:transparent;font-weight:700}[class*=sidebar-dark-] .nav-header{background:inherit;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .sidebar a{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .sidebar a:focus,[class*=sidebar-dark-] .sidebar a:hover{text-decoration:none}[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:focus,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:hover,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link:focus,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link:hover{background-color:transparent;color:#fff;font-weight:700}[class*=sidebar-dark-] .nav-flat .nav-item .nav-treeview .nav-treeview,[class*=sidebar-dark-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link,[class*=sidebar-dark-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link.active{border-color:transparent}.sidebar-light-primary .nav-item>.nav-link.active{background-color:transparent!important;background-image:linear-gradient(118deg,rgba(109,139,230,.95),rgba(109,139,230,.7));color:#fff;box-shadow:0 0 8px 1px rgba(109,139,230,.7)}.sidebar-light-primary .active-bg-light .nav-item>.nav-link.active{background-color:rgba(109,139,230,.15)!important;color:#6d8be6!important;font-weight:700;box-shadow:0 0 8px 1px rgba(109,139,230,.15)}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand) .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini .main-sidebar.sidebar-focused .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini .main-sidebar:not(.sidebar-no-expand) .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview{padding-left:1rem;margin-left:-.5rem}.nav-flat{margin:-.25rem -.5rem 0}.nav-flat .nav-item>.nav-link{border-radius:0;margin-bottom:0}.nav-flat .nav-item>.nav-link>.nav-icon{margin-left:.55rem}.nav-flat:not(.nav-child-indent) .nav-treeview .nav-item>.nav-link>.nav-icon{margin-left:.4rem}.nav-flat.nav-child-indent .nav-treeview{padding-left:0}.nav-flat.nav-child-indent .nav-treeview .nav-icon{margin-left:.85rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview{border-left:.2rem solid}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-icon{margin-left:1.15rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.45rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.75rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:2.05rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-icon{margin-left:.55rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-link{padding-left:.3rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-icon{margin-left:.35rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:.15rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:-.15rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:-.35rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon{margin-left:.4rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon{margin-left:.85rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon{margin-left:1.15rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.45rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.75rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:2.05rem}.nav-flat .nav-icon{transition:margin-left .3s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-flat .nav-icon{transition:none}}.nav-flat .nav-treeview .nav-icon{margin-left:-.2rem}.nav-flat.nav-sidebar>.nav-item .nav-treeview,.nav-flat.nav-sidebar>.nav-item>.nav-treeview{background:hsla(0,0%,100%,.05)}.nav-flat.nav-sidebar>.nav-item .nav-treeview .nav-item>.nav-link,.nav-flat.nav-sidebar>.nav-item>.nav-treeview .nav-item>.nav-link{border-left:.2rem solid}.nav-legacy{margin:-.25rem -.5rem 0}.nav-legacy.nav-sidebar .nav-item>.nav-link{border-radius:0;margin-bottom:0}.nav-legacy.nav-sidebar .nav-item>.nav-link>.nav-icon{margin-left:.55rem}.text-sm .nav-legacy.nav-sidebar .nav-item>.nav-link>.nav-icon{margin-left:.75rem}.nav-legacy.nav-sidebar>.nav-item>.nav-link.active{background:inherit;border-left:3px solid transparent;box-shadow:none}.nav-legacy.nav-sidebar>.nav-item>.nav-link.active>.nav-icon{margin-left:calc(.55rem - 3px)}.text-sm .nav-legacy.nav-sidebar.nav-flat .nav-treeview .nav-item>.nav-link>.nav-icon,.text-sm .nav-legacy.nav-sidebar>.nav-item>.nav-link.active>.nav-icon{margin-left:calc(.75rem - 3px)}.sidebar-mini-md .nav-legacy>.nav-item .nav-link .nav-icon,.sidebar-mini .nav-legacy>.nav-item .nav-link .nav-icon{transition:margin-left .3s ease-in-out;margin-left:.75rem}@media (prefers-reduced-motion:reduce){.sidebar-mini-md .nav-legacy>.nav-item .nav-link .nav-icon,.sidebar-mini .nav-legacy>.nav-item .nav-link .nav-icon{transition:none}}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview{padding-left:1rem}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview{padding-left:2rem;margin-left:-1rem}.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview{padding-left:.5rem}.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview{padding-left:1rem;margin-left:-.5rem}.sidebar-mini-md.sidebar-collapse .nav-legacy>.nav-item>.nav-link .nav-icon,.sidebar-mini.sidebar-collapse .nav-legacy>.nav-item>.nav-link .nav-icon{margin-left:.55rem}.sidebar-mini-md.sidebar-collapse .nav-legacy>.nav-item>.nav-link.active>.nav-icon,.sidebar-mini.sidebar-collapse .nav-legacy>.nav-item>.nav-link.active>.nav-icon{margin-left:.36rem}.sidebar-mini-md.sidebar-collapse .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse .nav-legacy.nav-child-indent .nav-treeview .nav-treeview{padding-left:0;margin-left:0}.sidebar-mini-md.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link .nav-icon,.sidebar-mini.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link .nav-icon{margin-left:.75rem}.sidebar-mini-md.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link.active>.nav-icon,.sidebar-mini.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link.active>.nav-icon{margin-left:calc(.75rem - 3px)}[class*=sidebar-dark] .nav-legacy.nav-sidebar>.nav-item .nav-treeview,[class*=sidebar-dark] .nav-legacy.nav-sidebar>.nav-item>.nav-treeview{background:hsla(0,0%,100%,.05)}[class*=sidebar-dark] .nav-legacy.nav-sidebar>.nav-item>.nav-link.active{color:#fff}[class*=sidebar-dark] .nav-legacy .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-dark] .nav-legacy .nav-treeview>.nav-item>.nav-link:focus,[class*=sidebar-dark] .nav-legacy .nav-treeview>.nav-item>.nav-link:hover{background:none;color:#fff}[class*=sidebar-light] .nav-legacy.nav-sidebar>.nav-item .nav-treeview,[class*=sidebar-light] .nav-legacy.nav-sidebar>.nav-item>.nav-treeview{background:rgba(34,41,47,.05)}[class*=sidebar-light] .nav-legacy.nav-sidebar>.nav-item>.nav-link.active{color:#fff}[class*=sidebar-light] .nav-legacy .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-light] .nav-legacy .nav-treeview>.nav-item>.nav-link:focus,[class*=sidebar-light] .nav-legacy .nav-treeview>.nav-item>.nav-link:hover{background:none;color:#fff}.nav-collapse-hide-child .menu-open>.nav-treeview{max-height:-webkit-min-content;max-height:-moz-min-content;max-height:min-content;opacity:1}.sidebar-collapse .nav-collapse-hide-child .menu-open>.nav-treeview{max-height:0;opacity:0}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-collapse-hide-child .menu-open>.nav-treeview,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-collapse-hide-child .menu-open>.nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-collapse-hide-child .menu-open>.nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-collapse-hide-child .menu-open>.nav-treeview{max-height:-webkit-min-content;max-height:-moz-min-content;max-height:min-content;opacity:1}.nav-compact .nav-header,.nav-compact .nav-link{padding-top:.1785rem;padding-bottom:.1785rem}.nav-compact .nav-header:not(:first-of-type){padding-top:.5355rem;padding-bottom:.1785rem}.nav-compact .nav-link>.right,.nav-compact .nav-link>p>.right{top:.465rem}.text-sm .nav-compact .nav-link>.right,.text-sm .nav-compact .nav-link>p>.right{top:.7rem}[class*=sidebar-dark] .btn-sidebar,[class*=sidebar-dark] .form-control-sidebar{background:#495567;border:1px solid #5e6e85;color:#fff}[class*=sidebar-dark] .btn-sidebar:focus,[class*=sidebar-dark] .form-control-sidebar:focus{border:1px solid #8695a9}[class*=sidebar-dark] .btn-sidebar:hover{background:#4e5c6e}[class*=sidebar-dark] .btn-sidebar:focus{background:#536276}[class*=sidebar-light] .btn-sidebar,[class*=sidebar-light] .form-control-sidebar{background:#f2f2f2;border:1px solid #d9d9d9;color:#2a2e30}[class*=sidebar-light] .btn-sidebar:focus,[class*=sidebar-light] .form-control-sidebar:focus{border:1px solid #b3b3b3}[class*=sidebar-light] .btn-sidebar:hover{background:#ececec}[class*=sidebar-light] .btn-sidebar:focus{background:#e6e6e6}.logo-xl,.logo-xs{opacity:1;position:absolute;visibility:visible}.logo-xl.brand-image-xs,.logo-xs.brand-image-xs{left:18px;top:12px}.logo-xl.brand-image-xl,.logo-xs.brand-image-xl{left:12px;top:6px}.logo-xs{opacity:0;visibility:hidden}.logo-xs.brand-image-xl{left:16px;top:8px}.brand-link.logo-switch:before{content:\"\\A0\"}@media (min-width:992px){.sidebar-mini .nav-sidebar,.sidebar-mini .nav-sidebar .nav-link,.sidebar-mini .nav-sidebar>.nav-header{white-space:nowrap;overflow:hidden}.sidebar-mini.sidebar-collapse .d-hidden-mini{display:none}.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .main-footer,.sidebar-mini.sidebar-collapse .main-header{margin-left:5.4rem!important}.sidebar-mini.sidebar-collapse .nav-sidebar .nav-header{display:none}.sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p{width:0}.sidebar-mini.sidebar-collapse .brand-text,.sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p,.sidebar-mini.sidebar-collapse .sidebar .user-panel>.info{margin-left:-10px;opacity:0;visibility:hidden}.sidebar-mini.sidebar-collapse .logo-xl{opacity:0;visibility:hidden}.sidebar-mini.sidebar-collapse .logo-xs{display:inline-block;opacity:1;visibility:visible}.sidebar-mini.sidebar-collapse .main-sidebar{overflow-x:hidden}.sidebar-mini.sidebar-collapse .main-sidebar,.sidebar-mini.sidebar-collapse .main-sidebar:before{margin-left:0;width:5.4rem}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel .image{float:none}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-link,.sidebar-mini.sidebar-collapse .main-sidebar:hover,.sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-link{width:260px}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel{text-align:left}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel .image,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel .image{float:left}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-text,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .logo-xl,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar .nav-link p,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-text,.sidebar-mini.sidebar-collapse .main-sidebar:hover .logo-xl,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar .nav-link p,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:inline-block;margin-left:0;opacity:1;visibility:visible}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .logo-xs,.sidebar-mini.sidebar-collapse .main-sidebar:hover .logo-xs{opacity:0;visibility:hidden}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-image,.sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-image{margin-right:.5rem}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .sidebar-form,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini.sidebar-collapse .main-sidebar:hover .sidebar-form,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:block!important;-webkit-transform:translateZ(0)}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar>.nav-item>.nav-link>span,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar>.nav-item>.nav-link>span{display:inline-block!important}.sidebar-mini.sidebar-collapse .visible-sidebar-mini{display:block!important}.sidebar-mini.sidebar-collapse.layout-fixed .main-sidebar:hover .brand-link{width:260px}.sidebar-mini.sidebar-collapse.layout-fixed .brand-link{width:5.4rem}}@media (max-width:991.98px){.sidebar-mini.sidebar-collapse .main-sidebar{box-shadow:none!important}}@media (min-width:768px){.sidebar-mini-md .nav-sidebar,.sidebar-mini-md .nav-sidebar .nav-link,.sidebar-mini-md .nav-sidebar>.nav-header{white-space:nowrap;overflow:hidden}.sidebar-mini-md.sidebar-collapse .d-hidden-mini{display:none}.sidebar-mini-md.sidebar-collapse .content-wrapper,.sidebar-mini-md.sidebar-collapse .main-footer,.sidebar-mini-md.sidebar-collapse .main-header{margin-left:5.4rem!important}.sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-header{display:none}.sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-link p{width:0}.sidebar-mini-md.sidebar-collapse .brand-text,.sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-link p,.sidebar-mini-md.sidebar-collapse .sidebar .user-panel>.info{margin-left:-10px;opacity:0;visibility:hidden}.sidebar-mini-md.sidebar-collapse .logo-xl{opacity:0;visibility:hidden}.sidebar-mini-md.sidebar-collapse .logo-xs{display:inline-block;opacity:1;visibility:visible}.sidebar-mini-md.sidebar-collapse .main-sidebar{overflow-x:hidden}.sidebar-mini-md.sidebar-collapse .main-sidebar,.sidebar-mini-md.sidebar-collapse .main-sidebar:before{margin-left:0;width:5.4rem}.sidebar-mini-md.sidebar-collapse .main-sidebar .user-panel .image{float:none}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-link,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-link{width:260px}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel{text-align:left}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel .image,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel .image{float:left}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-text,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .logo-xl,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar .nav-link p,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-text,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .logo-xl,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar .nav-link p,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:inline-block;margin-left:0;opacity:1;visibility:visible}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .logo-xs,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .logo-xs{opacity:0;visibility:hidden}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-image,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-image{margin-right:.5rem}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .sidebar-form,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .sidebar-form,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:block!important;-webkit-transform:translateZ(0)}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar>.nav-item>.nav-link>span,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar>.nav-item>.nav-link>span{display:inline-block!important}.sidebar-mini-md.sidebar-collapse .visible-sidebar-mini{display:block!important}.sidebar-mini-md.sidebar-collapse.layout-fixed .main-sidebar:hover .brand-link{width:260px}.sidebar-mini-md.sidebar-collapse.layout-fixed .brand-link{width:5.4rem}}.sidebar-collapse .main-sidebar.sidebar-focused .nav-header,.sidebar-collapse .main-sidebar:hover .nav-header{display:inline-block}.sidebar-collapse .main-sidebar.sidebar-focused .nav .menu-open .nav-treeview,.sidebar-collapse .main-sidebar:hover .nav .menu-open .nav-treeview{display:block!important}.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar>.nav-item>.nav-link i,.sidebar-collapse .main-sidebar:hover .nav-sidebar>.nav-item>.nav-link i{font-size:1.2rem}.sidebar-collapse .main-sidebar .nav .nav-item .nav-link{padding:10px 21px!important}.sidebar-collapse .main-sidebar .nav .menu-open .nav-treeview{display:none!important}.sidebar-collapse .header-navbar.floating-nav{width:calc(100% - 70px - 5.4rem)}.sidebar-collapse .header-navbar.fixed-top{left:5.4rem}.sidebar-collapse .nav-sidebar>.nav-item>.nav-link i{font-size:1.3rem}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover{width:5.4rem}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-header,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-header{display:none}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .brand-link,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .brand-link{width:5.4rem!important}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .user-panel .image,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .user-panel .image{float:none!important}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .logo-xs,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .logo-xs{opacity:1;visibility:visible}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .logo-xl,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .logo-xl{opacity:0;visibility:hidden}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar.nav-child-indent .nav-treeview,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar.nav-child-indent .nav-treeview{padding-left:0}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .brand-text,.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar .nav-link p,.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .user-panel>.info,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .brand-text,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar .nav-link p,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .user-panel>.info{margin-left:-10px;opacity:0;visibility:hidden;width:0}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar>.nav-item .nav-icon,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar>.nav-item .nav-icon{margin-right:0}.nav-sidebar{position:relative}.nav-sidebar:hover{overflow:visible}.nav-sidebar>.nav-header,.sidebar-form{overflow:hidden;text-overflow:clip}.nav-sidebar .nav-item>.nav-link{position:relative}.nav-sidebar .nav-item>.nav-link>.float-right{margin-top:-7px;position:absolute;right:10px;top:50%}@media (max-width:767.98px){.sidebar-mini-md.sidebar-collapse .main-sidebar{box-shadow:none!important}.sidebar-collapse .header-navbar.fixed-top{left:0}}@media (max-width:1201px){.sidebar-collapse .header-navbar.fixed-top{left:0}}.main-sidebar .brand-text,.main-sidebar .logo-xl,.main-sidebar .logo-xs,.sidebar .nav-link p,.sidebar .user-panel .info{transition:margin-left .3s linear,opacity .3s ease,visibility .3s ease}@media (prefers-reduced-motion:reduce){.main-sidebar .brand-text,.main-sidebar .logo-xl,.main-sidebar .logo-xs,.sidebar .nav-link p,.sidebar .user-panel .info{transition:none}}html.control-sidebar-animate{overflow-x:hidden}.control-sidebar{bottom:3.45rem;position:absolute;top:calc(3.164rem + 1px);z-index:1031}.control-sidebar,.control-sidebar:before{bottom:3.45rem;display:none;right:-260px;width:260px;transition:right .3s ease-in-out,display .3s ease-in-out}@media (prefers-reduced-motion:reduce){.control-sidebar,.control-sidebar:before{transition:none}}.control-sidebar:before{content:\"\";display:block;position:fixed;top:0;z-index:-1}body.text-sm .control-sidebar{bottom:3.074rem;top:calc(2.62475rem + 1px)}.main-header.text-sm~.control-sidebar{top:calc(2.62475rem + 1px)}.main-footer.text-sm~.control-sidebar{bottom:3.074rem}.control-sidebar-push-slide .content-wrapper,.control-sidebar-push-slide .main-footer{transition:margin-right .3s ease-in-out}@media (prefers-reduced-motion:reduce){.control-sidebar-push-slide .content-wrapper,.control-sidebar-push-slide .main-footer{transition:none}}.control-sidebar-open .control-sidebar{display:block}.control-sidebar-open .control-sidebar,.control-sidebar-open .control-sidebar:before{right:0}.control-sidebar-open.control-sidebar-push-slide .content-wrapper,.control-sidebar-open.control-sidebar-push-slide .main-footer,.control-sidebar-open.control-sidebar-push .content-wrapper,.control-sidebar-open.control-sidebar-push .main-footer{margin-right:260px}.control-sidebar-slide-open .control-sidebar{display:block}.control-sidebar-slide-open .control-sidebar,.control-sidebar-slide-open .control-sidebar:before{right:0;transition:right .3s ease-in-out,display .3s ease-in-out}@media (prefers-reduced-motion:reduce){.control-sidebar-slide-open .control-sidebar,.control-sidebar-slide-open .control-sidebar:before{transition:none}}.control-sidebar-slide-open.control-sidebar-push-slide .content-wrapper,.control-sidebar-slide-open.control-sidebar-push-slide .main-footer,.control-sidebar-slide-open.control-sidebar-push .content-wrapper,.control-sidebar-slide-open.control-sidebar-push .main-footer{margin-right:260px}.control-sidebar-dark,.control-sidebar-dark .nav-link,.control-sidebar-dark a{color:hsla(0,0%,100%,.95)}.control-sidebar-dark{background:#3e4958}.control-sidebar-dark a:hover,.control-sidebar-dark h1,.control-sidebar-dark h2,.control-sidebar-dark h3,.control-sidebar-dark h4,.control-sidebar-dark h5,.control-sidebar-dark h6,.control-sidebar-dark label{color:hsla(0,0%,100%,.95)}.control-sidebar-dark .nav-tabs{background-color:transparent;border-bottom:0;margin-bottom:5px}.control-sidebar-dark .nav-tabs .nav-item{margin:0}.control-sidebar-dark .nav-tabs .nav-link{border-radius:0;padding:10px 20px;position:relative;text-align:center}.control-sidebar-dark .nav-tabs .nav-link,.control-sidebar-dark .nav-tabs .nav-link.active,.control-sidebar-dark .nav-tabs .nav-link:active,.control-sidebar-dark .nav-tabs .nav-link:focus,.control-sidebar-dark .nav-tabs .nav-link:hover{border:0}.control-sidebar-dark .nav-tabs .nav-link.active,.control-sidebar-dark .nav-tabs .nav-link:active,.control-sidebar-dark .nav-tabs .nav-link:focus,.control-sidebar-dark .nav-tabs .nav-link:hover{border-bottom-color:transparent;border-left-color:transparent;border-top-color:transparent;color:hsla(0,0%,100%,.95)}.control-sidebar-dark .nav-tabs .nav-link.active{background-color:#3e4958}.control-sidebar-dark .tab-pane{padding:10px 15px}.control-sidebar-light{color:#6f6f6f;background:#fff;border-left:1px solid #dae1e7}.text-sm .dropdown-menu{font-size:1rem!important}.text-sm .dropdown-toggle:after{vertical-align:.2rem}.dropdown-item-title{font-size:1rem;margin:0}.dropdown-icon:after{margin-left:0}.dropdown-menu-lg{max-width:300px;min-width:280px;padding:0}.dropdown-menu-lg .dropdown-divider{margin:0}.dropdown-menu-lg .dropdown-item{padding:.5rem 1.5rem}.dropdown-menu-lg p{margin:0;white-space:normal}.dropdown-submenu{position:relative}.dropdown-submenu>a:after{border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid;float:right;margin-left:.5rem;margin-top:.5rem}.dropdown-submenu>.dropdown-menu{left:100%;margin-left:0;margin-top:0;top:0}.dropdown-hover.dropdown-submenu:hover>.dropdown-menu,.dropdown-hover .dropdown-submenu:hover>.dropdown-menu,.dropdown-hover.nav-item.dropdown:hover>.dropdown-menu,.dropdown-hover:hover>.dropdown-menu{display:block}.dropdown-menu-xl{max-width:420px;min-width:360px;padding:0}.dropdown-menu-xl .dropdown-divider{margin:0}.dropdown-menu-xl .dropdown-item{padding:.5rem 1.5rem}.dropdown-menu-xl p{margin:0;white-space:normal}.dropdown-footer,.dropdown-header{display:block;font-size:1rem;padding:.5rem 1.5rem;text-align:center}.open:not(.dropup)>.animated-dropdown-menu{-webkit-animation:flipInX .7s both;animation:flipInX .7s both;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}.navbar-custom-menu>.navbar-nav>li{position:relative}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:0;left:auto}@media (max-width:767.98px){.navbar-custom-menu>.navbar-nav{float:right}.navbar-custom-menu>.navbar-nav>li{position:static}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:5%;left:auto;border:1px solid #ddd;background:#fff}}.navbar-nav>.user-menu>.nav-link:after{content:none}.navbar-nav>.user-menu>.dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;padding:0;width:280px}.navbar-nav>.user-menu>.dropdown-menu,.navbar-nav>.user-menu>.dropdown-menu>.user-body{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header{height:175px;padding:10px;text-align:center}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>img{z-index:5;height:90px;width:90px;border:3px solid hsla(0,0%,100%,.2)}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p{z-index:5;font-size:17px;margin-top:10px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p>small{display:block;font-size:12px}.navbar-nav>.user-menu>.dropdown-menu>.user-body{border-bottom:1px solid #4e5154;border-top:1px solid #dae1e7;padding:15px}.navbar-nav>.user-menu>.dropdown-menu>.user-body:after{display:block;clear:both;content:\"\"}@media (min-width:576px){.navbar-nav>.user-menu>.dropdown-menu>.user-body a{background:#fff!important;color:#4e5154!important}}.navbar-nav>.user-menu>.dropdown-menu>.user-footer{background-color:#babfc7;padding:10px}.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{display:block;clear:both;content:\"\"}.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default{color:#b8c2cc}@media (min-width:576px){.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default:hover{background-color:#babfc7}}.navbar-nav>.user-menu .user-image{border-radius:50%;float:left;height:2.5666666667rem;margin-right:10px;margin-top:-2px;width:2.5666666667rem}@media (min-width:576px){.navbar-nav>.user-menu .user-image{float:none;line-height:10px;margin-right:.4rem;margin-top:-8px}}.nav-pills .nav-link{color:#b8c2cc}.nav-pills .nav-link:not(.active):hover{color:#6d8be6}.nav-pills .nav-item.dropdown.show .nav-link:hover{color:#fff}.nav-tabs.flex-column{border-bottom:0;border-right:1px solid #dae1e7}.nav-tabs.flex-column .nav-link{border-bottom-left-radius:.5rem;border-top-right-radius:0;margin-right:-1px}.nav-tabs.flex-column .nav-link:focus,.nav-tabs.flex-column .nav-link:hover{border-color:#ededed transparent #ededed #ededed}.nav-tabs.flex-column .nav-item.show .nav-link,.nav-tabs.flex-column .nav-link.active{border-color:#dae1e7 transparent #dae1e7 #dae1e7}.nav-tabs.flex-column.nav-tabs-right{border-left:1px solid #dae1e7;border-right:0}.nav-tabs.flex-column.nav-tabs-right .nav-link{border-bottom-left-radius:0;border-bottom-right-radius:.5rem;border-top-left-radius:0;border-top-right-radius:.5rem;margin-left:-1px}.nav-tabs.flex-column.nav-tabs-right .nav-link:focus,.nav-tabs.flex-column.nav-tabs-right .nav-link:hover{border-color:#ededed #ededed #ededed transparent}.nav-tabs.flex-column.nav-tabs-right .nav-item.show .nav-link,.nav-tabs.flex-column.nav-tabs-right .nav-link.active{border-color:#dae1e7 #dae1e7 #dae1e7 transparent}.navbar-no-expand{flex-direction:row}.navbar-no-expand .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-no-expand .dropdown-menu{position:absolute}.navbar-light{background-color:#f7f7f9}.navbar-dark{background-color:#22292f}.navbar-primary{background-color:#6d8be6}.navbar-secondary{background-color:#b8c2cc}.navbar-success{background-color:#21b978}.navbar-info{background-color:#4277cf}.navbar-warning{background-color:#dda451}.navbar-danger{background-color:#ea5455}.navbar-lightblue{background-color:#3c8dbc}.navbar-navy{background-color:#001f3f}.navbar-olive{background-color:#3d9970}.navbar-lime{background-color:#01ff70}.navbar-fuchsia{background-color:#f012be}.navbar-maroon{background-color:#d81b60}.navbar-blue{background-color:#3085d6}.navbar-indigo{background-color:#5c6bc6}.navbar-purple{background-color:#6f42c1}.navbar-pink{background-color:#ff8acc}.navbar-red{background-color:#ea5455}.navbar-orange{background-color:#dda451}.navbar-yellow{background-color:#edc30e}.navbar-green{background-color:#21b978}.navbar-teal{background-color:#20c997}.navbar-cyan{background-color:#7367f0}.navbar-white{background-color:#fff}.navbar-gray{background-color:#b8c2cc}.navbar-gray-dark{background-color:#1e1e1e}.form-group.has-icon{position:relative}.form-group.has-icon .form-control{padding-right:35px}.form-group.has-icon .form-icon{background-color:transparent;border:0;cursor:pointer;font-size:1rem;padding:.75rem 2rem;position:absolute;right:3px;top:0}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0}.form-control-feedback.fa,.form-control-feedback.fab,.form-control-feedback.far,.form-control-feedback.fas,.form-control-feedback.glyphicon,.form-control-feedback.ion{line-height:34px}.form-group-lg .form-control+.form-control-feedback.fa,.form-group-lg .form-control+.form-control-feedback.fab,.form-group-lg .form-control+.form-control-feedback.far,.form-group-lg .form-control+.form-control-feedback.fas,.form-group-lg .form-control+.form-control-feedback.glyphicon,.form-group-lg .form-control+.form-control-feedback.ion,.input-group-lg+.form-control-feedback.fa,.input-group-lg+.form-control-feedback.fab,.input-group-lg+.form-control-feedback.far,.input-group-lg+.form-control-feedback.fas,.input-group-lg+.form-control-feedback.glyphicon,.input-group-lg+.form-control-feedback.ion,.input-lg+.form-control-feedback.fa,.input-lg+.form-control-feedback.fab,.input-lg+.form-control-feedback.far,.input-lg+.form-control-feedback.fas,.input-lg+.form-control-feedback.glyphicon,.input-lg+.form-control-feedback.ion{line-height:calc(1.25em + 2rem + 2px)}.form-group-sm .form-control+.form-control-feedback.fa,.form-group-sm .form-control+.form-control-feedback.fab,.form-group-sm .form-control+.form-control-feedback.far,.form-group-sm .form-control+.form-control-feedback.fas,.form-group-sm .form-control+.form-control-feedback.glyphicon,.form-group-sm .form-control+.form-control-feedback.ion,.input-group-sm+.form-control-feedback.fa,.input-group-sm+.form-control-feedback.fab,.input-group-sm+.form-control-feedback.far,.input-group-sm+.form-control-feedback.fas,.input-group-sm+.form-control-feedback.glyphicon,.input-group-sm+.form-control-feedback.ion,.input-sm+.form-control-feedback.fa,.input-sm+.form-control-feedback.fab,.input-sm+.form-control-feedback.far,.input-sm+.form-control-feedback.fas,.input-sm+.form-control-feedback.glyphicon,.input-sm+.form-control-feedback.ion{line-height:2rem}.warning-feedback{font-size:smaller;color:#dda451;display:none;margin-top:.25rem;width:100%}.warning-tooltip{border-radius:.5rem;font-size:1rem;background-color:rgba(221,164,81,.9);color:#2a2e30;display:none;line-height:1.45;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.form-control.is-warning{border-color:#dda451}.form-control.is-warning:focus{border-color:#dda451;box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.form-control.is-warning~.warning-feedback,.form-control.is-warning~.warning-tooltip{display:block}textarea.form-control.is-warning{padding-right:calc(1.25em + 1.4rem);background-position:top calc(.3125em + .35rem) right calc(.3125em + .35rem)}.custom-select.is-warning{border-color:#dda451}.custom-select.is-warning:focus{border-color:#dda451;box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.custom-select.is-warning~.warning-feedback,.custom-select.is-warning~.warning-tooltip,.form-control-file.is-warning~.warning-feedback,.form-control-file.is-warning~.warning-tooltip{display:block}.form-check-input.is-warning~.form-check-label{color:#dda451}.form-check-input.is-warning~.warning-feedback,.form-check-input.is-warning~.warning-tooltip{display:block}.custom-control-input.is-warning~.custom-control-label{color:#dda451}.custom-control-input.is-warning~.custom-control-label:before{border-color:#dda451}.custom-control-input.is-warning~.warning-feedback,.custom-control-input.is-warning~.warning-tooltip{display:block}.custom-control-input.is-warning:checked~.custom-control-label:before{background-color:#e5ba7c;border-color:#e5ba7c}.custom-control-input.is-warning:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.custom-control-input.is-warning:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-warning~.custom-file-label{border-color:#dda451}.custom-file-input.is-warning~.warning-feedback,.custom-file-input.is-warning~.warning-tooltip{display:block}.custom-file-input.is-warning:focus~.custom-file-label{border-color:#dda451;box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.custom-switch.custom-switch-off-primary .custom-control-input~.custom-control-label:before{background:#6d8be6;border-color:#234cca}.custom-switch.custom-switch-off-primary .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(109,139,230,.25)}.custom-switch.custom-switch-off-primary .custom-control-input~.custom-control-label:after{background:#1f44b5}.custom-switch.custom-switch-on-primary .custom-control-input:checked~.custom-control-label:before{background:#6d8be6;border-color:#234cca}.custom-switch.custom-switch-on-primary .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(109,139,230,.25)}.custom-switch.custom-switch-on-primary .custom-control-input:checked~.custom-control-label:after{background:#f0f3fc}.custom-switch.custom-switch-off-secondary .custom-control-input~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-off-secondary .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-off-secondary .custom-control-input~.custom-control-label:after{background:#6e8297}.custom-switch.custom-switch-on-secondary .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-on-secondary .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-on-secondary .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-success .custom-control-input~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-off-success .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-off-success .custom-control-input~.custom-control-label:after{background:#0e4d32}.custom-switch.custom-switch-on-success .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-on-success .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-on-success .custom-control-input:checked~.custom-control-label:after{background:#89eac1}.custom-switch.custom-switch-off-info .custom-control-input~.custom-control-label:before{background:#4277cf;border-color:#234988}.custom-switch.custom-switch-off-info .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-switch.custom-switch-off-info .custom-control-input~.custom-control-label:after{background:#1d3e74}.custom-switch.custom-switch-on-info .custom-control-input:checked~.custom-control-label:before{background:#4277cf;border-color:#234988}.custom-switch.custom-switch-on-info .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-switch.custom-switch-on-info .custom-control-input:checked~.custom-control-label:after{background:#bccfee}.custom-switch.custom-switch-off-warning .custom-control-input~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-off-warning .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-off-warning .custom-control-input~.custom-control-label:after{background:#92621d}.custom-switch.custom-switch-on-warning .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-on-warning .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-on-warning .custom-control-input:checked~.custom-control-label:after{background:#f6e7d1}.custom-switch.custom-switch-off-danger .custom-control-input~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-off-danger .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-off-danger .custom-control-input~.custom-control-label:after{background:#aa1516}.custom-switch.custom-switch-on-danger .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-on-danger .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-on-danger .custom-control-input:checked~.custom-control-label:after{background:#fbdcdc}.custom-switch.custom-switch-off-light .custom-control-input~.custom-control-label:before{background:#f7f7f9;border-color:#bdbdcd}.custom-switch.custom-switch-off-light .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-switch.custom-switch-off-light .custom-control-input~.custom-control-label:after{background:#aeaec2}.custom-switch.custom-switch-on-light .custom-control-input:checked~.custom-control-label:before{background:#f7f7f9;border-color:#bdbdcd}.custom-switch.custom-switch-on-light .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-switch.custom-switch-on-light .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-dark .custom-control-input~.custom-control-label:before{background:#22292f;border-color:#000}.custom-switch.custom-switch-off-dark .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-switch.custom-switch-off-dark .custom-control-input~.custom-control-label:after{background:#000}.custom-switch.custom-switch-on-dark .custom-control-input:checked~.custom-control-label:before{background:#22292f;border-color:#000}.custom-switch.custom-switch-on-dark .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-switch.custom-switch-on-dark .custom-control-input:checked~.custom-control-label:after{background:#627688}.custom-switch.custom-switch-off-lightblue .custom-control-input~.custom-control-label:before{background:#3c8dbc;border-color:#23536f}.custom-switch.custom-switch-off-lightblue .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-switch.custom-switch-off-lightblue .custom-control-input~.custom-control-label:after{background:#1d455b}.custom-switch.custom-switch-on-lightblue .custom-control-input:checked~.custom-control-label:before{background:#3c8dbc;border-color:#23536f}.custom-switch.custom-switch-on-lightblue .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-switch.custom-switch-on-lightblue .custom-control-input:checked~.custom-control-label:after{background:#acd0e5}.custom-switch.custom-switch-off-navy .custom-control-input~.custom-control-label:before{background:#001f3f;border-color:#000}.custom-switch.custom-switch-off-navy .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-switch.custom-switch-off-navy .custom-control-input~.custom-control-label:after{background:#000}.custom-switch.custom-switch-on-navy .custom-control-input:checked~.custom-control-label:before{background:#001f3f;border-color:#000}.custom-switch.custom-switch-on-navy .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-switch.custom-switch-on-navy .custom-control-input:checked~.custom-control-label:after{background:#006ad8}.custom-switch.custom-switch-off-olive .custom-control-input~.custom-control-label:before{background:#3d9970;border-color:#20503b}.custom-switch.custom-switch-off-olive .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-switch.custom-switch-off-olive .custom-control-input~.custom-control-label:after{background:#193e2d}.custom-switch.custom-switch-on-olive .custom-control-input:checked~.custom-control-label:before{background:#3d9970;border-color:#20503b}.custom-switch.custom-switch-on-olive .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-switch.custom-switch-on-olive .custom-control-input:checked~.custom-control-label:after{background:#99d6bb}.custom-switch.custom-switch-off-lime .custom-control-input~.custom-control-label:before{background:#01ff70;border-color:#009a43}.custom-switch.custom-switch-off-lime .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-switch.custom-switch-off-lime .custom-control-input~.custom-control-label:after{background:#008138}.custom-switch.custom-switch-on-lime .custom-control-input:checked~.custom-control-label:before{background:#01ff70;border-color:#009a43}.custom-switch.custom-switch-on-lime .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-switch.custom-switch-on-lime .custom-control-input:checked~.custom-control-label:after{background:#9affc6}.custom-switch.custom-switch-off-fuchsia .custom-control-input~.custom-control-label:before{background:#f012be;border-color:#930974}.custom-switch.custom-switch-off-fuchsia .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-switch.custom-switch-off-fuchsia .custom-control-input~.custom-control-label:after{background:#7b0861}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked~.custom-control-label:before{background:#f012be;border-color:#930974}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked~.custom-control-label:after{background:#f9a2e5}.custom-switch.custom-switch-off-maroon .custom-control-input~.custom-control-label:before{background:#d81b60;border-color:#7d1038}.custom-switch.custom-switch-off-maroon .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-switch.custom-switch-off-maroon .custom-control-input~.custom-control-label:after{background:#670d2e}.custom-switch.custom-switch-on-maroon .custom-control-input:checked~.custom-control-label:before{background:#d81b60;border-color:#7d1038}.custom-switch.custom-switch-on-maroon .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-switch.custom-switch-on-maroon .custom-control-input:checked~.custom-control-label:after{background:#f29aba}.custom-switch.custom-switch-off-blue .custom-control-input~.custom-control-label:before{background:#3085d6;border-color:#1a5186}.custom-switch.custom-switch-off-blue .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-switch.custom-switch-off-blue .custom-control-input~.custom-control-label:after{background:#164470}.custom-switch.custom-switch-on-blue .custom-control-input:checked~.custom-control-label:before{background:#3085d6;border-color:#1a5186}.custom-switch.custom-switch-on-blue .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-switch.custom-switch-on-blue .custom-control-input:checked~.custom-control-label:after{background:#b0d0ef}.custom-switch.custom-switch-off-indigo .custom-control-input~.custom-control-label:before{background:#5c6bc6;border-color:#313e8b}.custom-switch.custom-switch-off-indigo .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-switch.custom-switch-off-indigo .custom-control-input~.custom-control-label:after{background:#2a3578}.custom-switch.custom-switch-on-indigo .custom-control-input:checked~.custom-control-label:before{background:#5c6bc6;border-color:#313e8b}.custom-switch.custom-switch-on-indigo .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-switch.custom-switch-on-indigo .custom-control-input:checked~.custom-control-label:after{background:#cdd2ee}.custom-switch.custom-switch-off-purple .custom-control-input~.custom-control-label:before{background:#6f42c1;border-color:#432776}.custom-switch.custom-switch-off-purple .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-switch.custom-switch-off-purple .custom-control-input~.custom-control-label:after{background:#382063}.custom-switch.custom-switch-on-purple .custom-control-input:checked~.custom-control-label:before{background:#6f42c1;border-color:#432776}.custom-switch.custom-switch-on-purple .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-switch.custom-switch-on-purple .custom-control-input:checked~.custom-control-label:after{background:#c7b5e7}.custom-switch.custom-switch-off-pink .custom-control-input~.custom-control-label:before{background:#ff8acc;border-color:#ff24a0}.custom-switch.custom-switch-off-pink .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-switch.custom-switch-off-pink .custom-control-input~.custom-control-label:after{background:#ff0b94}.custom-switch.custom-switch-on-pink .custom-control-input:checked~.custom-control-label:before{background:#ff8acc;border-color:#ff24a0}.custom-switch.custom-switch-on-pink .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-switch.custom-switch-on-pink .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-red .custom-control-input~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-off-red .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-off-red .custom-control-input~.custom-control-label:after{background:#aa1516}.custom-switch.custom-switch-on-red .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-on-red .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-on-red .custom-control-input:checked~.custom-control-label:after{background:#fbdcdc}.custom-switch.custom-switch-off-orange .custom-control-input~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-off-orange .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-off-orange .custom-control-input~.custom-control-label:after{background:#92621d}.custom-switch.custom-switch-on-orange .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-on-orange .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-on-orange .custom-control-input:checked~.custom-control-label:after{background:#f6e7d1}.custom-switch.custom-switch-off-yellow .custom-control-input~.custom-control-label:before{background:#edc30e;border-color:#8d7408}.custom-switch.custom-switch-off-yellow .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-switch.custom-switch-off-yellow .custom-control-input~.custom-control-label:after{background:#756007}.custom-switch.custom-switch-on-yellow .custom-control-input:checked~.custom-control-label:before{background:#edc30e;border-color:#8d7408}.custom-switch.custom-switch-on-yellow .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-switch.custom-switch-on-yellow .custom-control-input:checked~.custom-control-label:after{background:#f9e79b}.custom-switch.custom-switch-off-green .custom-control-input~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-off-green .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-off-green .custom-control-input~.custom-control-label:after{background:#0e4d32}.custom-switch.custom-switch-on-green .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-on-green .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-on-green .custom-control-input:checked~.custom-control-label:after{background:#89eac1}.custom-switch.custom-switch-off-teal .custom-control-input~.custom-control-label:before{background:#20c997;border-color:#127155}.custom-switch.custom-switch-off-teal .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-switch.custom-switch-off-teal .custom-control-input~.custom-control-label:after{background:#0e5b44}.custom-switch.custom-switch-on-teal .custom-control-input:checked~.custom-control-label:before{background:#20c997;border-color:#127155}.custom-switch.custom-switch-on-teal .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-switch.custom-switch-on-teal .custom-control-input:checked~.custom-control-label:after{background:#94eed3}.custom-switch.custom-switch-off-cyan .custom-control-input~.custom-control-label:before{background:#7367f0;border-color:#2716db}.custom-switch.custom-switch-off-cyan .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-switch.custom-switch-off-cyan .custom-control-input~.custom-control-label:after{background:#2313c4}.custom-switch.custom-switch-on-cyan .custom-control-input:checked~.custom-control-label:before{background:#7367f0;border-color:#2716db}.custom-switch.custom-switch-on-cyan .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-switch.custom-switch-on-cyan .custom-control-input:checked~.custom-control-label:after{background:#f3f2fe}.custom-switch.custom-switch-off-white .custom-control-input~.custom-control-label:before{background:#fff;border-color:#ccc}.custom-switch.custom-switch-off-white .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-switch.custom-switch-off-white .custom-control-input~.custom-control-label:after{background:#bfbfbf}.custom-switch.custom-switch-on-white .custom-control-input:checked~.custom-control-label:before{background:#fff;border-color:#ccc}.custom-switch.custom-switch-on-white .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-switch.custom-switch-on-white .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-gray .custom-control-input~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-off-gray .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-off-gray .custom-control-input~.custom-control-label:after{background:#6e8297}.custom-switch.custom-switch-on-gray .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-on-gray .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-on-gray .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-gray-dark .custom-control-input~.custom-control-label:before{background:#1e1e1e;border-color:#000}.custom-switch.custom-switch-off-gray-dark .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-switch.custom-switch-off-gray-dark .custom-control-input~.custom-control-label:after{background:#000}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked~.custom-control-label:before{background:#1e1e1e;border-color:#000}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked~.custom-control-label:after{background:#6b6b6b}.custom-range.custom-range-primary:focus{outline:none}.custom-range.custom-range-primary:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(109,139,230,.25)}.custom-range.custom-range-primary:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(109,139,230,.25)}.custom-range.custom-range-primary:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(109,139,230,.25)}.custom-range.custom-range-primary::-webkit-slider-thumb{background-color:#6d8be6}.custom-range.custom-range-primary::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-primary::-moz-range-thumb{background-color:#6d8be6}.custom-range.custom-range-primary::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-primary::-ms-thumb{background-color:#6d8be6}.custom-range.custom-range-primary::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-secondary:focus{outline:none}.custom-range.custom-range-secondary:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-secondary:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-secondary:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-secondary::-webkit-slider-thumb{background-color:#b8c2cc}.custom-range.custom-range-secondary::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-secondary::-moz-range-thumb{background-color:#b8c2cc}.custom-range.custom-range-secondary::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-secondary::-ms-thumb{background-color:#b8c2cc}.custom-range.custom-range-secondary::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-success:focus{outline:none}.custom-range.custom-range-success:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-success:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-success:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-success::-webkit-slider-thumb{background-color:#21b978}.custom-range.custom-range-success::-webkit-slider-thumb:active{background-color:#9feecc}.custom-range.custom-range-success::-moz-range-thumb{background-color:#21b978}.custom-range.custom-range-success::-moz-range-thumb:active{background-color:#9feecc}.custom-range.custom-range-success::-ms-thumb{background-color:#21b978}.custom-range.custom-range-success::-ms-thumb:active{background-color:#9feecc}.custom-range.custom-range-info:focus{outline:none}.custom-range.custom-range-info:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-range.custom-range-info:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-range.custom-range-info:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-range.custom-range-info::-webkit-slider-thumb{background-color:#4277cf}.custom-range.custom-range-info::-webkit-slider-thumb:active{background-color:#d0ddf3}.custom-range.custom-range-info::-moz-range-thumb{background-color:#4277cf}.custom-range.custom-range-info::-moz-range-thumb:active{background-color:#d0ddf3}.custom-range.custom-range-info::-ms-thumb{background-color:#4277cf}.custom-range.custom-range-info::-ms-thumb:active{background-color:#d0ddf3}.custom-range.custom-range-warning:focus{outline:none}.custom-range.custom-range-warning:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-warning:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-warning:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-warning::-webkit-slider-thumb{background-color:#dda451}.custom-range.custom-range-warning::-webkit-slider-thumb:active{background-color:#faf2e6}.custom-range.custom-range-warning::-moz-range-thumb{background-color:#dda451}.custom-range.custom-range-warning::-moz-range-thumb:active{background-color:#faf2e6}.custom-range.custom-range-warning::-ms-thumb{background-color:#dda451}.custom-range.custom-range-warning::-ms-thumb:active{background-color:#faf2e6}.custom-range.custom-range-danger:focus{outline:none}.custom-range.custom-range-danger:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-danger:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-danger:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-danger::-webkit-slider-thumb{background-color:#ea5455}.custom-range.custom-range-danger::-webkit-slider-thumb:active{background-color:#fef3f3}.custom-range.custom-range-danger::-moz-range-thumb{background-color:#ea5455}.custom-range.custom-range-danger::-moz-range-thumb:active{background-color:#fef3f3}.custom-range.custom-range-danger::-ms-thumb{background-color:#ea5455}.custom-range.custom-range-danger::-ms-thumb:active{background-color:#fef3f3}.custom-range.custom-range-light:focus{outline:none}.custom-range.custom-range-light:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-range.custom-range-light:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-range.custom-range-light:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-range.custom-range-light::-webkit-slider-thumb{background-color:#f7f7f9}.custom-range.custom-range-light::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-light::-moz-range-thumb{background-color:#f7f7f9}.custom-range.custom-range-light::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-light::-ms-thumb{background-color:#f7f7f9}.custom-range.custom-range-light::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-dark:focus{outline:none}.custom-range.custom-range-dark:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-range.custom-range-dark:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-range.custom-range-dark:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-range.custom-range-dark::-webkit-slider-thumb{background-color:#22292f}.custom-range.custom-range-dark::-webkit-slider-thumb:active{background-color:#6e8396}.custom-range.custom-range-dark::-moz-range-thumb{background-color:#22292f}.custom-range.custom-range-dark::-moz-range-thumb:active{background-color:#6e8396}.custom-range.custom-range-dark::-ms-thumb{background-color:#22292f}.custom-range.custom-range-dark::-ms-thumb:active{background-color:#6e8396}.custom-range.custom-range-lightblue:focus{outline:none}.custom-range.custom-range-lightblue:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-range.custom-range-lightblue:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-range.custom-range-lightblue:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-range.custom-range-lightblue::-webkit-slider-thumb{background-color:#3c8dbc}.custom-range.custom-range-lightblue::-webkit-slider-thumb:active{background-color:#c0dbeb}.custom-range.custom-range-lightblue::-moz-range-thumb{background-color:#3c8dbc}.custom-range.custom-range-lightblue::-moz-range-thumb:active{background-color:#c0dbeb}.custom-range.custom-range-lightblue::-ms-thumb{background-color:#3c8dbc}.custom-range.custom-range-lightblue::-ms-thumb:active{background-color:#c0dbeb}.custom-range.custom-range-navy:focus{outline:none}.custom-range.custom-range-navy:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy::-webkit-slider-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-webkit-slider-thumb:active{background-color:#0077f2}.custom-range.custom-range-navy::-moz-range-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-moz-range-thumb:active{background-color:#0077f2}.custom-range.custom-range-navy::-ms-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-ms-thumb:active{background-color:#0077f2}.custom-range.custom-range-olive:focus{outline:none}.custom-range.custom-range-olive:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive::-webkit-slider-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-webkit-slider-thumb:active{background-color:#abdec7}.custom-range.custom-range-olive::-moz-range-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-moz-range-thumb:active{background-color:#abdec7}.custom-range.custom-range-olive::-ms-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-ms-thumb:active{background-color:#abdec7}.custom-range.custom-range-lime:focus{outline:none}.custom-range.custom-range-lime:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime::-webkit-slider-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-webkit-slider-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-lime::-moz-range-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-moz-range-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-lime::-ms-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-ms-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-fuchsia:focus{outline:none}.custom-range.custom-range-fuchsia:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia::-webkit-slider-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-webkit-slider-thumb:active{background-color:#fbbaec}.custom-range.custom-range-fuchsia::-moz-range-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-moz-range-thumb:active{background-color:#fbbaec}.custom-range.custom-range-fuchsia::-ms-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-ms-thumb:active{background-color:#fbbaec}.custom-range.custom-range-maroon:focus{outline:none}.custom-range.custom-range-maroon:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon::-webkit-slider-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-webkit-slider-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-maroon::-moz-range-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-moz-range-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-maroon::-ms-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-ms-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-blue:focus{outline:none}.custom-range.custom-range-blue:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-range.custom-range-blue:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-range.custom-range-blue:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-range.custom-range-blue::-webkit-slider-thumb{background-color:#3085d6}.custom-range.custom-range-blue::-webkit-slider-thumb:active{background-color:#c5ddf4}.custom-range.custom-range-blue::-moz-range-thumb{background-color:#3085d6}.custom-range.custom-range-blue::-moz-range-thumb:active{background-color:#c5ddf4}.custom-range.custom-range-blue::-ms-thumb{background-color:#3085d6}.custom-range.custom-range-blue::-ms-thumb:active{background-color:#c5ddf4}.custom-range.custom-range-indigo:focus{outline:none}.custom-range.custom-range-indigo:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-range.custom-range-indigo:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-range.custom-range-indigo:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-range.custom-range-indigo::-webkit-slider-thumb{background-color:#5c6bc6}.custom-range.custom-range-indigo::-webkit-slider-thumb:active{background-color:#e0e3f4}.custom-range.custom-range-indigo::-moz-range-thumb{background-color:#5c6bc6}.custom-range.custom-range-indigo::-moz-range-thumb:active{background-color:#e0e3f4}.custom-range.custom-range-indigo::-ms-thumb{background-color:#5c6bc6}.custom-range.custom-range-indigo::-ms-thumb:active{background-color:#e0e3f4}.custom-range.custom-range-purple:focus{outline:none}.custom-range.custom-range-purple:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple::-webkit-slider-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-webkit-slider-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-purple::-moz-range-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-moz-range-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-purple::-ms-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-ms-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-pink:focus{outline:none}.custom-range.custom-range-pink:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-range.custom-range-pink:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-range.custom-range-pink:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-range.custom-range-pink::-webkit-slider-thumb{background-color:#ff8acc}.custom-range.custom-range-pink::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-pink::-moz-range-thumb{background-color:#ff8acc}.custom-range.custom-range-pink::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-pink::-ms-thumb{background-color:#ff8acc}.custom-range.custom-range-pink::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-red:focus{outline:none}.custom-range.custom-range-red:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-red:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-red:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-red::-webkit-slider-thumb{background-color:#ea5455}.custom-range.custom-range-red::-webkit-slider-thumb:active{background-color:#fef3f3}.custom-range.custom-range-red::-moz-range-thumb{background-color:#ea5455}.custom-range.custom-range-red::-moz-range-thumb:active{background-color:#fef3f3}.custom-range.custom-range-red::-ms-thumb{background-color:#ea5455}.custom-range.custom-range-red::-ms-thumb:active{background-color:#fef3f3}.custom-range.custom-range-orange:focus{outline:none}.custom-range.custom-range-orange:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-orange:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-orange:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-orange::-webkit-slider-thumb{background-color:#dda451}.custom-range.custom-range-orange::-webkit-slider-thumb:active{background-color:#faf2e6}.custom-range.custom-range-orange::-moz-range-thumb{background-color:#dda451}.custom-range.custom-range-orange::-moz-range-thumb:active{background-color:#faf2e6}.custom-range.custom-range-orange::-ms-thumb{background-color:#dda451}.custom-range.custom-range-orange::-ms-thumb:active{background-color:#faf2e6}.custom-range.custom-range-yellow:focus{outline:none}.custom-range.custom-range-yellow:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-range.custom-range-yellow:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-range.custom-range-yellow:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-range.custom-range-yellow::-webkit-slider-thumb{background-color:#edc30e}.custom-range.custom-range-yellow::-webkit-slider-thumb:active{background-color:#fbedb3}.custom-range.custom-range-yellow::-moz-range-thumb{background-color:#edc30e}.custom-range.custom-range-yellow::-moz-range-thumb:active{background-color:#fbedb3}.custom-range.custom-range-yellow::-ms-thumb{background-color:#edc30e}.custom-range.custom-range-yellow::-ms-thumb:active{background-color:#fbedb3}.custom-range.custom-range-green:focus{outline:none}.custom-range.custom-range-green:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-green:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-green:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-green::-webkit-slider-thumb{background-color:#21b978}.custom-range.custom-range-green::-webkit-slider-thumb:active{background-color:#9feecc}.custom-range.custom-range-green::-moz-range-thumb{background-color:#21b978}.custom-range.custom-range-green::-moz-range-thumb:active{background-color:#9feecc}.custom-range.custom-range-green::-ms-thumb{background-color:#21b978}.custom-range.custom-range-green::-ms-thumb:active{background-color:#9feecc}.custom-range.custom-range-teal:focus{outline:none}.custom-range.custom-range-teal:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal::-webkit-slider-thumb{background-color:#20c997}.custom-range.custom-range-teal::-webkit-slider-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-teal::-moz-range-thumb{background-color:#20c997}.custom-range.custom-range-teal::-moz-range-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-teal::-ms-thumb{background-color:#20c997}.custom-range.custom-range-teal::-ms-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-cyan:focus{outline:none}.custom-range.custom-range-cyan:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-range.custom-range-cyan:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-range.custom-range-cyan:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-range.custom-range-cyan::-webkit-slider-thumb{background-color:#7367f0}.custom-range.custom-range-cyan::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-cyan::-moz-range-thumb{background-color:#7367f0}.custom-range.custom-range-cyan::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-cyan::-ms-thumb{background-color:#7367f0}.custom-range.custom-range-cyan::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-white:focus{outline:none}.custom-range.custom-range-white:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-range.custom-range-white:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-range.custom-range-white:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-range.custom-range-white::-webkit-slider-thumb,.custom-range.custom-range-white::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-white::-moz-range-thumb,.custom-range.custom-range-white::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-white::-ms-thumb,.custom-range.custom-range-white::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-gray:focus{outline:none}.custom-range.custom-range-gray:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-gray:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-gray:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-gray::-webkit-slider-thumb{background-color:#b8c2cc}.custom-range.custom-range-gray::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-gray::-moz-range-thumb{background-color:#b8c2cc}.custom-range.custom-range-gray::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-gray::-ms-thumb{background-color:#b8c2cc}.custom-range.custom-range-gray::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-gray-dark:focus{outline:none}.custom-range.custom-range-gray-dark:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-range.custom-range-gray-dark:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-range.custom-range-gray-dark:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-range.custom-range-gray-dark::-webkit-slider-thumb{background-color:#1e1e1e}.custom-range.custom-range-gray-dark::-webkit-slider-thumb:active{background-color:#777}.custom-range.custom-range-gray-dark::-moz-range-thumb{background-color:#1e1e1e}.custom-range.custom-range-gray-dark::-moz-range-thumb:active{background-color:#777}.custom-range.custom-range-gray-dark::-ms-thumb{background-color:#1e1e1e}.custom-range.custom-range-gray-dark::-ms-thumb:active{background-color:#777}.progress{border-radius:1px}.progress.vertical{display:inline-block;height:200px;margin-right:10px;position:relative;width:30px}.progress.vertical>.progress-bar{bottom:0;position:absolute;width:100%}.progress.vertical.progress-sm,.progress.vertical.sm{width:20px}.progress.vertical.progress-xs,.progress.vertical.xs{width:10px}.progress.vertical.progress-xxs,.progress.vertical.xxs{width:3px}.progress-group{margin-bottom:1.5rem}.progress-sm{height:10px}.progress-xs{height:7px}.progress-xxs{height:3px}.table tr>td .progress{margin:0}.card-primary:not(.card-outline)>.card-header{background-color:#6d8be6}.card-primary:not(.card-outline)>.card-header,.card-primary:not(.card-outline)>.card-header a{color:#fff}.card-primary:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-primary.card-outline{border-top:3px solid #6d8be6}.card-primary.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-primary.card-outline-tabs>.card-header a.active{border-top:3px solid #6d8be6}.bg-gradient-primary .btn-tool,.bg-primary .btn-tool,.card-primary:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-primary .btn-tool:hover,.bg-primary .btn-tool:hover,.card-primary:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table th,.card.bg-primary .bootstrap-datetimepicker-widget .table td,.card.bg-primary .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#4a6fe0;color:#fff}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.today:before,.card.bg-primary .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.active,.card.bg-primary .bootstrap-datetimepicker-widget table td.active:hover{background:#99aeed;color:#fff}.card-secondary:not(.card-outline)>.card-header{background-color:#b8c2cc}.card-secondary:not(.card-outline)>.card-header,.card-secondary:not(.card-outline)>.card-header a,.card-secondary:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-secondary.card-outline{border-top:3px solid #b8c2cc}.card-secondary.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-secondary.card-outline-tabs>.card-header a.active{border-top:3px solid #b8c2cc}.bg-gradient-secondary .btn-tool,.bg-secondary .btn-tool,.card-secondary:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-secondary .btn-tool:hover,.bg-secondary .btn-tool:hover,.card-secondary:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table th,.card.bg-secondary .bootstrap-datetimepicker-widget .table td,.card.bg-secondary .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#a0aebb;color:#2a2e30}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.today:before,.card.bg-secondary .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.active,.card.bg-secondary .bootstrap-datetimepicker-widget table td.active:hover{background:#d6dce1;color:#2a2e30}.card-success:not(.card-outline)>.card-header{background-color:#21b978}.card-success:not(.card-outline)>.card-header,.card-success:not(.card-outline)>.card-header a{color:#fff}.card-success:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-success.card-outline{border-top:3px solid #21b978}.card-success.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-success.card-outline-tabs>.card-header a.active{border-top:3px solid #21b978}.bg-gradient-success .btn-tool,.bg-success .btn-tool,.card-success:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-success .btn-tool:hover,.bg-success .btn-tool:hover,.card-success:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-success .bootstrap-datetimepicker-widget .table th,.card.bg-success .bootstrap-datetimepicker-widget .table td,.card.bg-success .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#1b9662;color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.today:before,.card.bg-success .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.active,.card.bg-success .bootstrap-datetimepicker-widget table td.active:hover{background:#32db93;color:#fff}.card-info:not(.card-outline)>.card-header{background-color:#4277cf}.card-info:not(.card-outline)>.card-header,.card-info:not(.card-outline)>.card-header a{color:#fff}.card-info:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-info.card-outline{border-top:3px solid #4277cf}.card-info.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-info.card-outline-tabs>.card-header a.active{border-top:3px solid #4277cf}.bg-gradient-info .btn-tool,.bg-info .btn-tool,.card-info:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-info .btn-tool:hover,.bg-info .btn-tool:hover,.card-info:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-info .bootstrap-datetimepicker-widget .table th,.card.bg-info .bootstrap-datetimepicker-widget .table td,.card.bg-info .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#2f63b9;color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.today:before,.card.bg-info .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.active,.card.bg-info .bootstrap-datetimepicker-widget table td.active:hover{background:#6b94d9;color:#fff}.card-warning:not(.card-outline)>.card-header{background-color:#dda451}.card-warning:not(.card-outline)>.card-header,.card-warning:not(.card-outline)>.card-header a,.card-warning:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-warning.card-outline{border-top:3px solid #dda451}.card-warning.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-warning.card-outline-tabs>.card-header a.active{border-top:3px solid #dda451}.bg-gradient-warning .btn-tool,.bg-warning .btn-tool,.card-warning:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-warning .btn-tool:hover,.bg-warning .btn-tool:hover,.card-warning:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table th,.card.bg-warning .bootstrap-datetimepicker-widget .table td,.card.bg-warning .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#d6922f;color:#2a2e30}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.today:before,.card.bg-warning .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.active,.card.bg-warning .bootstrap-datetimepicker-widget table td.active:hover{background:#e5ba7c;color:#2a2e30}.card-danger:not(.card-outline)>.card-header{background-color:#ea5455}.card-danger:not(.card-outline)>.card-header,.card-danger:not(.card-outline)>.card-header a{color:#fff}.card-danger:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-danger.card-outline{border-top:3px solid #ea5455}.card-danger.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-danger.card-outline-tabs>.card-header a.active{border-top:3px solid #ea5455}.bg-danger .btn-tool,.bg-gradient-danger .btn-tool,.card-danger:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-danger .btn-tool:hover,.bg-gradient-danger .btn-tool:hover,.card-danger:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget .table td,.card.bg-danger .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-danger .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e63031;color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget table td.active,.card.bg-danger .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active:hover{background:#f08182;color:#fff}.card-light:not(.card-outline)>.card-header{background-color:#f7f7f9}.card-light:not(.card-outline)>.card-header,.card-light:not(.card-outline)>.card-header a,.card-light:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-light.card-outline{border-top:3px solid #f7f7f9}.card-light.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-light.card-outline-tabs>.card-header a.active{border-top:3px solid #f7f7f9}.bg-gradient-light .btn-tool,.bg-light .btn-tool,.card-light:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-light .btn-tool:hover,.bg-light .btn-tool:hover,.card-light:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-light .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-light .bootstrap-datetimepicker-widget .table th,.card.bg-light .bootstrap-datetimepicker-widget .table td,.card.bg-light .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e0e0e8;color:#2a2e30}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.today:before,.card.bg-light .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.active,.card.bg-light .bootstrap-datetimepicker-widget table td.active:hover{background:#fff;color:#2a2e30}.card-dark:not(.card-outline)>.card-header{background-color:#22292f}.card-dark:not(.card-outline)>.card-header,.card-dark:not(.card-outline)>.card-header a{color:#fff}.card-dark:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-dark.card-outline{border-top:3px solid #22292f}.card-dark.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-dark.card-outline-tabs>.card-header a.active{border-top:3px solid #22292f}.bg-dark .btn-tool,.bg-gradient-dark .btn-tool,.card-dark:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-dark .btn-tool:hover,.bg-gradient-dark .btn-tool:hover,.card-dark:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget .table td,.card.bg-dark .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#111417;color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-dark .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active:hover{background:#37434d;color:#fff}.card-lightblue:not(.card-outline)>.card-header{background-color:#3c8dbc}.card-lightblue:not(.card-outline)>.card-header,.card-lightblue:not(.card-outline)>.card-header a{color:#fff}.card-lightblue:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-lightblue.card-outline{border-top:3px solid #3c8dbc}.card-lightblue.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-lightblue.card-outline-tabs>.card-header a.active{border-top:3px solid #3c8dbc}.bg-gradient-lightblue .btn-tool,.bg-lightblue .btn-tool,.card-lightblue:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-lightblue .btn-tool:hover,.bg-lightblue .btn-tool:hover,.card-lightblue:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget .table th,.card.bg-lightblue .bootstrap-datetimepicker-widget .table td,.card.bg-lightblue .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#32769d;color:#fff}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.today:before,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.active,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.active:hover{background:#5fa4cc;color:#fff}.card-navy:not(.card-outline)>.card-header{background-color:#001f3f}.card-navy:not(.card-outline)>.card-header,.card-navy:not(.card-outline)>.card-header a{color:#fff}.card-navy:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-navy.card-outline{border-top:3px solid #001f3f}.card-navy.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-navy.card-outline-tabs>.card-header a.active{border-top:3px solid #001f3f}.bg-gradient-navy .btn-tool,.bg-navy .btn-tool,.card-navy:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-navy .btn-tool:hover,.bg-navy .btn-tool:hover,.card-navy:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table th,.card.bg-navy .bootstrap-datetimepicker-widget .table td,.card.bg-navy .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#000b16;color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.today:before,.card.bg-navy .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.active,.card.bg-navy .bootstrap-datetimepicker-widget table td.active:hover{background:#003872;color:#fff}.card-olive:not(.card-outline)>.card-header{background-color:#3d9970}.card-olive:not(.card-outline)>.card-header,.card-olive:not(.card-outline)>.card-header a{color:#fff}.card-olive:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-olive.card-outline{border-top:3px solid #3d9970}.card-olive.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-olive.card-outline-tabs>.card-header a.active{border-top:3px solid #3d9970}.bg-gradient-olive .btn-tool,.bg-olive .btn-tool,.card-olive:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-olive .btn-tool:hover,.bg-olive .btn-tool:hover,.card-olive:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table th,.card.bg-olive .bootstrap-datetimepicker-widget .table td,.card.bg-olive .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#317c5b;color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.today:before,.card.bg-olive .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.active,.card.bg-olive .bootstrap-datetimepicker-widget table td.active:hover{background:#50b98a;color:#fff}.card-lime:not(.card-outline)>.card-header{background-color:#01ff70}.card-lime:not(.card-outline)>.card-header,.card-lime:not(.card-outline)>.card-header a,.card-lime:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-lime.card-outline{border-top:3px solid #01ff70}.card-lime.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-lime.card-outline-tabs>.card-header a.active{border-top:3px solid #01ff70}.bg-gradient-lime .btn-tool,.bg-lime .btn-tool,.card-lime:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-lime .btn-tool:hover,.bg-lime .btn-tool:hover,.card-lime:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table th,.card.bg-lime .bootstrap-datetimepicker-widget .table td,.card.bg-lime .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#00d75e;color:#2a2e30}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.today:before,.card.bg-lime .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.active,.card.bg-lime .bootstrap-datetimepicker-widget table td.active:hover{background:#34ff8d;color:#2a2e30}.card-fuchsia:not(.card-outline)>.card-header{background-color:#f012be}.card-fuchsia:not(.card-outline)>.card-header,.card-fuchsia:not(.card-outline)>.card-header a{color:#fff}.card-fuchsia:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-fuchsia.card-outline{border-top:3px solid #f012be}.card-fuchsia.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-fuchsia.card-outline-tabs>.card-header a.active{border-top:3px solid #f012be}.bg-fuchsia .btn-tool,.bg-gradient-fuchsia .btn-tool,.card-fuchsia:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-fuchsia .btn-tool:hover,.bg-gradient-fuchsia .btn-tool:hover,.card-fuchsia:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget .table td,.card.bg-fuchsia .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#cc0da1;color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active:hover{background:#f342cb;color:#fff}.card-maroon:not(.card-outline)>.card-header{background-color:#d81b60}.card-maroon:not(.card-outline)>.card-header,.card-maroon:not(.card-outline)>.card-header a{color:#fff}.card-maroon:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-maroon.card-outline{border-top:3px solid #d81b60}.card-maroon.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-maroon.card-outline-tabs>.card-header a.active{border-top:3px solid #d81b60}.bg-gradient-maroon .btn-tool,.bg-maroon .btn-tool,.card-maroon:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-maroon .btn-tool:hover,.bg-maroon .btn-tool:hover,.card-maroon:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table th,.card.bg-maroon .bootstrap-datetimepicker-widget .table td,.card.bg-maroon .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#b41650;color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.today:before,.card.bg-maroon .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.active,.card.bg-maroon .bootstrap-datetimepicker-widget table td.active:hover{background:#e73f7c;color:#fff}.card-blue:not(.card-outline)>.card-header{background-color:#3085d6}.card-blue:not(.card-outline)>.card-header,.card-blue:not(.card-outline)>.card-header a{color:#fff}.card-blue:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-blue.card-outline{border-top:3px solid #3085d6}.card-blue.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-blue.card-outline-tabs>.card-header a.active{border-top:3px solid #3085d6}.bg-blue .btn-tool,.bg-gradient-blue .btn-tool,.card-blue:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-blue .btn-tool:hover,.bg-gradient-blue .btn-tool:hover,.card-blue:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget .table td,.card.bg-blue .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-blue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#2570b9;color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget table td.active,.card.bg-blue .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active:hover{background:#5b9ede;color:#fff}.card-indigo:not(.card-outline)>.card-header{background-color:#5c6bc6}.card-indigo:not(.card-outline)>.card-header,.card-indigo:not(.card-outline)>.card-header a{color:#fff}.card-indigo:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-indigo.card-outline{border-top:3px solid #5c6bc6}.card-indigo.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-indigo.card-outline-tabs>.card-header a.active{border-top:3px solid #5c6bc6}.bg-gradient-indigo .btn-tool,.bg-indigo .btn-tool,.card-indigo:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-indigo .btn-tool:hover,.bg-indigo .btn-tool:hover,.card-indigo:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table th,.card.bg-indigo .bootstrap-datetimepicker-widget .table td,.card.bg-indigo .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#4152b9;color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.today:before,.card.bg-indigo .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.active,.card.bg-indigo .bootstrap-datetimepicker-widget table td.active:hover{background:#828dd3;color:#fff}.card-purple:not(.card-outline)>.card-header{background-color:#6f42c1}.card-purple:not(.card-outline)>.card-header,.card-purple:not(.card-outline)>.card-header a{color:#fff}.card-purple:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-purple.card-outline{border-top:3px solid #6f42c1}.card-purple.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-purple.card-outline-tabs>.card-header a.active{border-top:3px solid #6f42c1}.bg-gradient-purple .btn-tool,.bg-purple .btn-tool,.card-purple:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-purple .btn-tool:hover,.bg-purple .btn-tool:hover,.card-purple:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table th,.card.bg-purple .bootstrap-datetimepicker-widget .table td,.card.bg-purple .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#5d36a4;color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.today:before,.card.bg-purple .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.active,.card.bg-purple .bootstrap-datetimepicker-widget table td.active:hover{background:#8c68ce;color:#fff}.card-pink:not(.card-outline)>.card-header{background-color:#ff8acc}.card-pink:not(.card-outline)>.card-header,.card-pink:not(.card-outline)>.card-header a,.card-pink:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-pink.card-outline{border-top:3px solid #ff8acc}.card-pink.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-pink.card-outline-tabs>.card-header a.active{border-top:3px solid #ff8acc}.bg-gradient-pink .btn-tool,.bg-pink .btn-tool,.card-pink:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-pink .btn-tool:hover,.bg-pink .btn-tool:hover,.card-pink:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table th,.card.bg-pink .bootstrap-datetimepicker-widget .table td,.card.bg-pink .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#ff61ba;color:#2a2e30}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.today:before,.card.bg-pink .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.active,.card.bg-pink .bootstrap-datetimepicker-widget table td.active:hover{background:#ffbde2;color:#2a2e30}.card-red:not(.card-outline)>.card-header{background-color:#ea5455}.card-red:not(.card-outline)>.card-header,.card-red:not(.card-outline)>.card-header a{color:#fff}.card-red:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-red.card-outline{border-top:3px solid #ea5455}.card-red.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-red.card-outline-tabs>.card-header a.active{border-top:3px solid #ea5455}.bg-gradient-red .btn-tool,.bg-red .btn-tool,.card-red:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-red .btn-tool:hover,.bg-red .btn-tool:hover,.card-red:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-red .bootstrap-datetimepicker-widget .table th,.card.bg-red .bootstrap-datetimepicker-widget .table td,.card.bg-red .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e63031;color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.today:before,.card.bg-red .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.active,.card.bg-red .bootstrap-datetimepicker-widget table td.active:hover{background:#f08182;color:#fff}.card-orange:not(.card-outline)>.card-header{background-color:#dda451}.card-orange:not(.card-outline)>.card-header,.card-orange:not(.card-outline)>.card-header a,.card-orange:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-orange.card-outline{border-top:3px solid #dda451}.card-orange.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-orange.card-outline-tabs>.card-header a.active{border-top:3px solid #dda451}.bg-gradient-orange .btn-tool,.bg-orange .btn-tool,.card-orange:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-orange .btn-tool:hover,.bg-orange .btn-tool:hover,.card-orange:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table th,.card.bg-orange .bootstrap-datetimepicker-widget .table td,.card.bg-orange .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#d6922f;color:#2a2e30}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.today:before,.card.bg-orange .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.active,.card.bg-orange .bootstrap-datetimepicker-widget table td.active:hover{background:#e5ba7c;color:#2a2e30}.card-yellow:not(.card-outline)>.card-header{background-color:#edc30e}.card-yellow:not(.card-outline)>.card-header,.card-yellow:not(.card-outline)>.card-header a,.card-yellow:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-yellow.card-outline{border-top:3px solid #edc30e}.card-yellow.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-yellow.card-outline-tabs>.card-header a.active{border-top:3px solid #edc30e}.bg-gradient-yellow .btn-tool,.bg-yellow .btn-tool,.card-yellow:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-yellow .btn-tool:hover,.bg-yellow .btn-tool:hover,.card-yellow:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table th,.card.bg-yellow .bootstrap-datetimepicker-widget .table td,.card.bg-yellow .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#c6a30c;color:#2a2e30}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.today:before,.card.bg-yellow .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.active,.card.bg-yellow .bootstrap-datetimepicker-widget table td.active:hover{background:#f3d13b;color:#2a2e30}.card-green:not(.card-outline)>.card-header{background-color:#21b978}.card-green:not(.card-outline)>.card-header,.card-green:not(.card-outline)>.card-header a{color:#fff}.card-green:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-green.card-outline{border-top:3px solid #21b978}.card-green.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-green.card-outline-tabs>.card-header a.active{border-top:3px solid #21b978}.bg-gradient-green .btn-tool,.bg-green .btn-tool,.card-green:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-green .btn-tool:hover,.bg-green .btn-tool:hover,.card-green:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-green .bootstrap-datetimepicker-widget .table th,.card.bg-green .bootstrap-datetimepicker-widget .table td,.card.bg-green .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#1b9662;color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.today:before,.card.bg-green .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.active,.card.bg-green .bootstrap-datetimepicker-widget table td.active:hover{background:#32db93;color:#fff}.card-teal:not(.card-outline)>.card-header{background-color:#20c997}.card-teal:not(.card-outline)>.card-header,.card-teal:not(.card-outline)>.card-header a{color:#fff}.card-teal:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-teal.card-outline{border-top:3px solid #20c997}.card-teal.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-teal.card-outline-tabs>.card-header a.active{border-top:3px solid #20c997}.bg-gradient-teal .btn-tool,.bg-teal .btn-tool,.card-teal:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-teal .btn-tool:hover,.bg-teal .btn-tool:hover,.card-teal:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table th,.card.bg-teal .bootstrap-datetimepicker-widget .table td,.card.bg-teal .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#1aa67d;color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.today:before,.card.bg-teal .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.active,.card.bg-teal .bootstrap-datetimepicker-widget table td.active:hover{background:#3ce0af;color:#fff}.card-cyan:not(.card-outline)>.card-header{background-color:#7367f0}.card-cyan:not(.card-outline)>.card-header,.card-cyan:not(.card-outline)>.card-header a{color:#fff}.card-cyan:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-cyan.card-outline{border-top:3px solid #7367f0}.card-cyan.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-cyan.card-outline-tabs>.card-header a.active{border-top:3px solid #7367f0}.bg-cyan .btn-tool,.bg-gradient-cyan .btn-tool,.card-cyan:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-cyan .btn-tool:hover,.bg-gradient-cyan .btn-tool:hover,.card-cyan:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget .table td,.card.bg-cyan .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-cyan .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#5142ec;color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget table td.active,.card.bg-cyan .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active:hover{background:#9e95f5;color:#fff}.card-white:not(.card-outline)>.card-header{background-color:#fff}.card-white:not(.card-outline)>.card-header,.card-white:not(.card-outline)>.card-header a,.card-white:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-white.card-outline{border-top:3px solid #fff}.card-white.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-white.card-outline-tabs>.card-header a.active{border-top:3px solid #fff}.bg-gradient-white .btn-tool,.bg-white .btn-tool,.card-white:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-white .btn-tool:hover,.bg-white .btn-tool:hover,.card-white:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-white .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-white .bootstrap-datetimepicker-widget .table th,.card.bg-white .bootstrap-datetimepicker-widget .table td,.card.bg-white .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#ebebeb;color:#2a2e30}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.today:before,.card.bg-white .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.active,.card.bg-white .bootstrap-datetimepicker-widget table td.active:hover{background:#fff;color:#2a2e30}.card-gray:not(.card-outline)>.card-header{background-color:#b8c2cc}.card-gray:not(.card-outline)>.card-header,.card-gray:not(.card-outline)>.card-header a,.card-gray:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-gray.card-outline{border-top:3px solid #b8c2cc}.card-gray.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-gray.card-outline-tabs>.card-header a.active{border-top:3px solid #b8c2cc}.bg-gradient-gray .btn-tool,.bg-gray .btn-tool,.card-gray:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-gray .btn-tool:hover,.bg-gray .btn-tool:hover,.card-gray:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table th,.card.bg-gray .bootstrap-datetimepicker-widget .table td,.card.bg-gray .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#a0aebb;color:#2a2e30}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gray .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.active,.card.bg-gray .bootstrap-datetimepicker-widget table td.active:hover{background:#d6dce1;color:#2a2e30}.card-gray-dark:not(.card-outline)>.card-header{background-color:#1e1e1e}.card-gray-dark:not(.card-outline)>.card-header,.card-gray-dark:not(.card-outline)>.card-header a{color:#fff}.card-gray-dark:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-gray-dark.card-outline{border-top:3px solid #1e1e1e}.card-gray-dark.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-gray-dark.card-outline-tabs>.card-header a.active{border-top:3px solid #1e1e1e}.bg-gradient-gray-dark .btn-tool,.bg-gray-dark .btn-tool,.card-gray-dark:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-gray-dark .btn-tool:hover,.bg-gray-dark .btn-tool:hover,.card-gray-dark:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table th,.card.bg-gray-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gray-dark .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#0a0a0a;color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active:hover{background:#383838;color:#fff}.card{margin-bottom:3rem;border:0}.card.bg-dark .card-header{border-color:#42484b}.card.bg-dark,.card.bg-dark .card-body{color:#fff}.card.maximized-card{height:100%!important;left:0;max-height:100%!important;max-width:100%!important;position:fixed;top:0;width:100%!important;z-index:9999}.card.maximized-card.was-collapsed .card-body{display:block!important}.card.maximized-card [data-widget=collapse]{display:none}.card.maximized-card .card-footer,.card.maximized-card .card-header{border-radius:0!important}.card.collapsed-card .card-body,.card.collapsed-card .card-footer{display:none}.card .nav.flex-column>li{border-bottom:1px solid rgba(34,41,47,.125);margin:0}.card .nav.flex-column>li:last-of-type{border-bottom:0}.card.height-control .card-body{max-height:300px;overflow:auto}.card .border-right{border-right:1px solid rgba(34,41,47,.125)}.card .border-left{border-left:1px solid rgba(34,41,47,.125)}.card.card-tabs:not(.card-outline)>.card-header{border-bottom:0}.card.card-tabs:not(.card-outline)>.card-header .nav-item:first-child .nav-link{margin-left:-1px}.card.card-tabs.card-outline .nav-item{border-bottom:0}.card.card-tabs.card-outline .nav-item:first-child .nav-link{border-left:0;margin-left:0}.card.card-tabs .card-tools{margin:.3rem .5rem}.card.card-tabs:not(.expanding-card).collapsed-card .card-header,.card.card-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs{border-bottom:0}.card.card-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs .nav-item{margin-bottom:0}.card.card-tabs.expanding-card .card-header .nav-tabs .nav-item{margin-bottom:-1px}.card.card-outline-tabs{border-top:0}.card.card-outline-tabs .card-header .nav-item:first-child .nav-link{border-left:0;margin-left:0}.card.card-outline-tabs .card-header a{border-top:3px solid transparent}.card.card-outline-tabs .card-header a:hover{border-top:3px solid #dae1e7}.card.card-outline-tabs .card-header a.active:hover{margin-top:0}.card.card-outline-tabs .card-tools{margin:.5rem .5rem .3rem}.card.card-outline-tabs:not(.expanding-card).collapsed-card .card-header,.card.card-outline-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs{border-bottom:0}.card.card-outline-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs .nav-item{margin-bottom:0}.card.card-outline-tabs.expanding-card .card-header .nav-tabs .nav-item{margin-bottom:-1px}html.maximized-card{overflow:hidden}.card-header{background-color:transparent;border-bottom:0;padding:.75rem 1.25rem;position:relative;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.collapsed-card .card-header{border-bottom:0}.card-header>.card-tools{float:right;margin-right:-.625rem}.card-header>.card-tools .input-group,.card-header>.card-tools .nav,.card-header>.card-tools .pagination{margin-bottom:-.3rem;margin-top:-.3rem}.card-header>.card-tools [data-toggle=tooltip]{position:relative}.card-title{float:left;font-size:1.1rem;font-weight:400;margin:0}.card-text{clear:both}.btn-tool{background:transparent;color:#adb5bd;font-size:1rem;margin:-.75rem 0;padding:.25rem .5rem}.btn-group.show .btn-tool,.btn-tool:hover{color:#4e5154}.btn-tool:focus,.show .btn-tool{box-shadow:none!important}.text-sm .card-title{font-size:1rem}.text-sm .nav-link{padding:.4rem .8rem}.card-body>.table{margin-bottom:0}.card-body>.table>thead>tr>td,.card-body>.table>thead>tr>th{border-top-width:0}.card-body .fc{margin-top:5px}.card-body .full-width-chart{margin:-19px}.card-body.p-0 .full-width-chart{margin:-9px}.chart-legend{padding-left:0;list-style:none;margin:10px 0}@media (max-width:576px){.chart-legend>li{float:left;margin-right:10px}}.card-comments{background:#babfc7}.card-comments .card-comment{border-bottom:1px solid #ededed;padding:8px 0}.card-comments .card-comment:after{display:block;clear:both;content:\"\"}.card-comments .card-comment:last-of-type{border-bottom:0}.card-comments .card-comment:first-of-type{padding-top:0}.card-comments .card-comment img{height:1.875rem;width:1.875rem;float:left}.card-comments .comment-text{color:#7f8489;margin-left:40px}.card-comments .username{color:#4e5154;display:block;font-weight:600}.card-comments .text-muted{font-size:12px;font-weight:400}.todo-list{list-style:none;margin:0;overflow:auto;padding:0}.todo-list>li{border-radius:2px;background:#babfc7;border-left:2px solid #ededed;color:#4e5154;margin-bottom:2px;padding:10px}.todo-list>li:last-of-type{margin-bottom:0}.todo-list>li>input[type=checkbox]{margin:0 10px 0 5px}.todo-list>li .text{display:inline-block;font-weight:600;margin-left:5px}.todo-list>li .badge{font-size:.7rem;margin-left:10px}.todo-list>li .tools{color:#ea5455;display:none;float:right}.todo-list>li .tools>.fa,.todo-list>li .tools>.fab,.todo-list>li .tools>.far,.todo-list>li .tools>.fas,.todo-list>li .tools>.glyphicon,.todo-list>li .tools>.ion{cursor:pointer;margin-right:5px}.todo-list>li:hover .tools{display:inline-block}.todo-list>li.done{color:#697582}.todo-list>li.done .text{font-weight:500;text-decoration:line-through}.todo-list>li.done .badge{background:#adb5bd!important}.todo-list .primary{border-left-color:#6d8be6}.todo-list .secondary{border-left-color:#b8c2cc}.todo-list .success{border-left-color:#21b978}.todo-list .info{border-left-color:#4277cf}.todo-list .warning{border-left-color:#dda451}.todo-list .danger{border-left-color:#ea5455}.todo-list .light{border-left-color:#f7f7f9}.todo-list .dark{border-left-color:#22292f}.todo-list .lightblue{border-left-color:#3c8dbc}.todo-list .navy{border-left-color:#001f3f}.todo-list .olive{border-left-color:#3d9970}.todo-list .lime{border-left-color:#01ff70}.todo-list .fuchsia{border-left-color:#f012be}.todo-list .maroon{border-left-color:#d81b60}.todo-list .blue{border-left-color:#3085d6}.todo-list .indigo{border-left-color:#5c6bc6}.todo-list .purple{border-left-color:#6f42c1}.todo-list .pink{border-left-color:#ff8acc}.todo-list .red{border-left-color:#ea5455}.todo-list .orange{border-left-color:#dda451}.todo-list .yellow{border-left-color:#edc30e}.todo-list .green{border-left-color:#21b978}.todo-list .teal{border-left-color:#20c997}.todo-list .cyan{border-left-color:#7367f0}.todo-list .white{border-left-color:#fff}.todo-list .gray{border-left-color:#b8c2cc}.todo-list .gray-dark{border-left-color:#1e1e1e}.todo-list .handle{cursor:move;display:inline-block;margin:0 5px}.card-input{max-width:200px}.card-default .nav-item:first-child .nav-link{border-left:0}.modal-dialog .overlay{background-color:#22292f;display:block;height:100%;left:0;opacity:.7;position:absolute;top:0;width:100%;z-index:1052}.modal-content.bg-warning .modal-footer,.modal-content.bg-warning .modal-header{border-color:#1e1e1e}.modal-content.bg-danger .close,.modal-content.bg-danger .mailbox-attachment-close,.modal-content.bg-info .close,.modal-content.bg-info .mailbox-attachment-close,.modal-content.bg-primary .close,.modal-content.bg-primary .mailbox-attachment-close,.modal-content.bg-secondary .close,.modal-content.bg-secondary .mailbox-attachment-close,.modal-content.bg-success .close,.modal-content.bg-success .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toasts-top-right{position:absolute;right:0;top:0;z-index:1040}.toasts-top-right.fixed{position:fixed}.toasts-top-left{left:0;position:absolute;top:0;z-index:1040}.toasts-top-left.fixed{position:fixed}.toasts-bottom-right{bottom:0;position:absolute;right:0;z-index:1040}.toasts-bottom-right.fixed{position:fixed}.toasts-bottom-left{bottom:0;left:0;position:absolute;z-index:1040}.toasts-bottom-left.fixed{position:fixed}.toast.bg-primary{background:rgba(109,139,230,.9)!important}.toast.bg-primary .close,.toast.bg-primary .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-primary .toast-header{background:rgba(109,139,230,.85);color:#fff}.toast.bg-secondary{background:rgba(184,194,204,.9)!important}.toast.bg-secondary .toast-header{background:rgba(184,194,204,.85);color:#2a2e30}.toast.bg-success{background:rgba(33,185,120,.9)!important}.toast.bg-success .close,.toast.bg-success .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-success .toast-header{background:rgba(33,185,120,.85);color:#fff}.toast.bg-info{background:rgba(66,119,207,.9)!important}.toast.bg-info .close,.toast.bg-info .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-info .toast-header{background:rgba(66,119,207,.85);color:#fff}.toast.bg-warning{background:rgba(221,164,81,.9)!important}.toast.bg-warning .toast-header{background:rgba(221,164,81,.85);color:#2a2e30}.toast.bg-danger{background:rgba(234,84,85,.9)!important}.toast.bg-danger .close,.toast.bg-danger .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-danger .toast-header{background:rgba(234,84,85,.85);color:#fff}.toast.bg-light{background:rgba(247,247,249,.9)!important}.toast.bg-light .toast-header{background:rgba(247,247,249,.85);color:#2a2e30}.toast.bg-dark{background:rgba(34,41,47,.9)!important}.toast.bg-dark .close,.toast.bg-dark .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-dark .toast-header{background:rgba(34,41,47,.85);color:#fff}.toast.bg-lightblue{background:rgba(60,141,188,.9)!important}.toast.bg-lightblue .close,.toast.bg-lightblue .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-lightblue .toast-header{background:rgba(60,141,188,.85);color:#fff}.toast.bg-navy{background:rgba(0,31,63,.9)!important}.toast.bg-navy .close,.toast.bg-navy .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-navy .toast-header{background:rgba(0,31,63,.85);color:#fff}.toast.bg-olive{background:rgba(61,153,112,.9)!important}.toast.bg-olive .close,.toast.bg-olive .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-olive .toast-header{background:rgba(61,153,112,.85);color:#fff}.toast.bg-lime{background:rgba(1,255,112,.9)!important}.toast.bg-lime .toast-header{background:rgba(1,255,112,.85);color:#2a2e30}.toast.bg-fuchsia{background:rgba(240,18,190,.9)!important}.toast.bg-fuchsia .close,.toast.bg-fuchsia .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-fuchsia .toast-header{background:rgba(240,18,190,.85);color:#fff}.toast.bg-maroon{background:rgba(216,27,96,.9)!important}.toast.bg-maroon .close,.toast.bg-maroon .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-maroon .toast-header{background:rgba(216,27,96,.85);color:#fff}.toast.bg-blue{background:rgba(48,133,214,.9)!important}.toast.bg-blue .close,.toast.bg-blue .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-blue .toast-header{background:rgba(48,133,214,.85);color:#fff}.toast.bg-indigo{background:rgba(92,107,198,.9)!important}.toast.bg-indigo .close,.toast.bg-indigo .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-indigo .toast-header{background:rgba(92,107,198,.85);color:#fff}.toast.bg-purple{background:rgba(111,66,193,.9)!important}.toast.bg-purple .close,.toast.bg-purple .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-purple .toast-header{background:rgba(111,66,193,.85);color:#fff}.toast.bg-pink{background:rgba(255,138,204,.9)!important}.toast.bg-pink .toast-header{background:rgba(255,138,204,.85);color:#2a2e30}.toast.bg-red{background:rgba(234,84,85,.9)!important}.toast.bg-red .close,.toast.bg-red .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-red .toast-header{background:rgba(234,84,85,.85);color:#fff}.toast.bg-orange{background:rgba(221,164,81,.9)!important}.toast.bg-orange .toast-header{background:rgba(221,164,81,.85);color:#2a2e30}.toast.bg-yellow{background:rgba(237,195,14,.9)!important}.toast.bg-yellow .toast-header{background:rgba(237,195,14,.85);color:#2a2e30}.toast.bg-green{background:rgba(33,185,120,.9)!important}.toast.bg-green .close,.toast.bg-green .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-green .toast-header{background:rgba(33,185,120,.85);color:#fff}.toast.bg-teal{background:rgba(32,201,151,.9)!important}.toast.bg-teal .close,.toast.bg-teal .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-teal .toast-header{background:rgba(32,201,151,.85);color:#fff}.toast.bg-cyan{background:rgba(115,103,240,.9)!important}.toast.bg-cyan .close,.toast.bg-cyan .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-cyan .toast-header{background:rgba(115,103,240,.85);color:#fff}.toast.bg-white{background:hsla(0,0%,100%,.9)!important}.toast.bg-white .toast-header{background:hsla(0,0%,100%,.85);color:#2a2e30}.toast.bg-gray{background:rgba(184,194,204,.9)!important}.toast.bg-gray .toast-header{background:rgba(184,194,204,.85);color:#2a2e30}.toast.bg-gray-dark{background:rgba(30,30,30,.9)!important}.toast.bg-gray-dark .close,.toast.bg-gray-dark .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-gray-dark .toast-header{background:rgba(30,30,30,.85);color:#fff}.btn{border-width:1px}.btn.disabled,.btn:disabled{cursor:not-allowed}.btn.btn-flat{border-radius:0;border-width:1px;box-shadow:none}.btn.btn-file{overflow:hidden;position:relative}.btn.btn-file>input[type=file]{background:#fff;cursor:inherit;display:block;font-size:100px;min-height:100%;min-width:100%;opacity:0;outline:none;position:absolute;right:0;text-align:right;top:0}.text-sm .btn{font-size:1rem!important}.btn-default{background-color:#babfc7;border-color:#babfc7;color:#444}.btn-default.hover,.btn-default:active,.btn-default:hover{background-color:#acb2bc;color:#2b2b2b}.btn-app{border-radius:3px;background-color:#babfc7;border:1px solid #ddd;color:#b8c2cc;font-size:12px;height:60px;margin:0 0 10px 10px;min-width:80px;padding:15px 5px;position:relative;text-align:center}.btn-app>.fa,.btn-app>.fab,.btn-app>.far,.btn-app>.fas,.btn-app>.glyphicon,.btn-app>.ion{display:block;font-size:20px}.btn-app:hover{background:#babfc7;border-color:#aaa;color:#444}.btn-app>.badge{font-size:10px;font-weight:400;position:absolute;right:-10px;top:-3px}.btn-xs{padding:.125rem .25rem;font-size:.75rem;border-radius:.15rem}.callout{border-radius:.5rem;background-color:#fff;border:1px solid #dae1e7;border-left:5px solid #ededed;margin-bottom:3rem;padding:1rem}.callout a{color:#4e5154;text-decoration:underline}.callout a:hover{color:#ededed}.callout p:last-child{margin-bottom:0}.callout.callout-danger{border-left-color:#e42728}.callout.callout-warning{border-left-color:#d28d29}.callout.callout-info{border-left-color:#2d5fb1}.callout.callout-success{border-left-color:#198e5c}.alert .icon{margin-right:10px}.alert .close,.alert .mailbox-attachment-close{color:#22292f;opacity:.2}.alert .close:hover,.alert .mailbox-attachment-close:hover{opacity:.5}.alert a{color:#fff;text-decoration:underline}.alert-primary{color:#fff;background:#6d8be6;border-color:#577ae2}.alert-default-primary{color:#495c8e;background-color:#e2e8fa;border-color:#d6dff8}.alert-default-primary hr{border-top-color:#c0cef4}.alert-default-primary .alert-link{color:#38466c}.alert-secondary{color:#2a2e30;background:#b8c2cc;border-color:#a9b5c1}.alert-default-secondary{color:#707981;background-color:#f1f3f5;border-color:#ebeef1}.alert-default-secondary hr{border-top-color:#dce1e7}.alert-default-secondary .alert-link{color:#585f66}.alert-success{color:#fff;background:#21b978;border-color:#1da36a}.alert-default-success{color:#217455;background-color:#d3f1e4;border-color:#c1ebd9}.alert-default-success hr{border-top-color:#aee5cd}.alert-default-success .alert-link{color:#164c38}.alert-info{color:#fff;background:#4277cf;border-color:#3269c5}.alert-default-info{color:#335282;background-color:#d9e4f5;border-color:#cad9f2}.alert-default-info hr{border-top-color:#b6caed}.alert-default-info .alert-link{color:#253b5d}.alert-warning{color:#2a2e30;background:#dda451;border-color:#d9993c}.alert-default-warning{color:#836941;background-color:#f8eddc;border-color:#f5e6ce}.alert-default-warning hr{border-top-color:#f1dbb9}.alert-default-warning .alert-link{color:#614e30}.alert-danger{color:#fff;background:#ea5455;border-color:#e73d3e}.alert-default-danger{color:#8a3f43;background-color:#fbdddd;border-color:#f9cfcf}.alert-default-danger hr{border-top-color:#f6b8b8}.alert-default-danger .alert-link{color:#672f32}.alert-light{color:#2a2e30;background:#f7f7f9;border-color:#e8e8ee}.alert-default-light{color:#919498;background-color:#fdfdfe;border-color:#fdfdfd}.alert-default-light hr{border-top-color:#f0f0f0}.alert-default-light .alert-link{color:#777a7f}.alert-dark{color:#fff;background:#22292f;border-color:#171c20}.alert-default-dark{color:#22292f;background-color:#d3d4d5;border-color:#c1c3c5}.alert-default-dark hr{border-top-color:#b4b6b9}.alert-default-dark .alert-link{color:#0d0f11}.table:not(.table-dark){color:inherit}.table.table-head-fixed thead tr:first-child th{background-color:#fff;border-bottom:0;box-shadow:inset 0 1px 0 #eff1f7,inset 0 -1px 0 #eff1f7;position:-webkit-sticky;position:sticky;top:0;z-index:10}.table.table-head-fixed.table-dark thead tr:first-child th{background-color:#1e1e1e;box-shadow:inset 0 1px 0 #313131,inset 0 -1px 0 #313131}.table.no-border,.table.no-border td,.table.no-border th{border:0}.table.text-center,.table.text-center td,.table.text-center th{text-align:center}.table.table-valign-middle tbody>tr>td,.table.table-valign-middle tbody>tr>th,.table.table-valign-middle thead>tr>td,.table.table-valign-middle thead>tr>th{vertical-align:middle}.card-body.p-0 .table tbody>tr>td:first-of-type,.card-body.p-0 .table tbody>tr>th:first-of-type,.card-body.p-0 .table thead>tr>td:first-of-type,.card-body.p-0 .table thead>tr>th:first-of-type{padding-left:3.5rem}.card-body.p-0 .table tbody>tr>td:last-of-type,.card-body.p-0 .table tbody>tr>th:last-of-type,.card-body.p-0 .table thead>tr>td:last-of-type,.card-body.p-0 .table thead>tr>th:last-of-type{padding-right:3.5rem}.carousel-control.left,.carousel-control.right{background-image:none}.carousel-control>.fa,.carousel-control>.fab,.carousel-control>.far,.carousel-control>.fas,.carousel-control>.glyphicon,.carousel-control>.ion{display:inline-block;font-size:40px;margin-top:-20px;position:absolute;top:50%;z-index:5}.small-box{border-radius:.5rem;display:block;margin-bottom:20px;position:relative}.small-box>.inner{padding:10px}.small-box>.small-box-footer{background:rgba(34,41,47,.1);color:hsla(0,0%,100%,.8);display:block;padding:3px 0;position:relative;text-align:center;text-decoration:none;z-index:10}.small-box>.small-box-footer:hover{background:rgba(34,41,47,.15);color:#fff}.small-box h3{font-size:2.2rem;font-weight:700;margin:0 0 10px;padding:0;white-space:nowrap}@media (min-width:992px){.col-lg-2 .small-box h3,.col-lg-3 .small-box h3,.col-md-2 .small-box h3,.col-md-3 .small-box h3,.col-xl-2 .small-box h3,.col-xl-3 .small-box h3{font-size:1.6rem}}@media (min-width:1200px){.col-lg-2 .small-box h3,.col-lg-3 .small-box h3,.col-md-2 .small-box h3,.col-md-3 .small-box h3,.col-xl-2 .small-box h3,.col-xl-3 .small-box h3{font-size:2.2rem}}.small-box p{font-size:1rem}.small-box p>small{color:#babfc7;display:block;font-size:.9rem;margin-top:5px}.small-box h3,.small-box p{z-index:5}.small-box .icon{color:rgba(34,41,47,.15);z-index:0}.small-box .icon>i{font-size:90px;position:absolute;right:15px;top:15px;transition:all .3s linear}.small-box .icon>i.fa,.small-box .icon>i.fab,.small-box .icon>i.far,.small-box .icon>i.fas,.small-box .icon>i.glyphicon,.small-box .icon>i.ion{font-size:70px;top:20px}.small-box:hover{text-decoration:none}.small-box:hover .icon>i{font-size:95px}.small-box:hover .icon>i.fa,.small-box:hover .icon>i.fab,.small-box:hover .icon>i.far,.small-box:hover .icon>i.fas,.small-box:hover .icon>i.glyphicon,.small-box:hover .icon>i.ion{font-size:75px}@media (max-width:767.98px){.small-box{text-align:center}.small-box .icon{display:none}.small-box p{font-size:12px}}.info-box{border-radius:.5rem;background:#fff;display:flex;margin-bottom:3rem;min-height:80px;padding:.5rem;position:relative}.info-box .progress{background-color:rgba(34,41,47,.125);height:2px;margin:5px 0}.info-box .progress .progress-bar{background-color:#fff}.info-box .info-box-icon{border-radius:.5rem;align-items:center;display:flex;font-size:1.875rem;justify-content:center;text-align:center;width:70px}.info-box .info-box-icon>img{max-width:100%}.info-box .info-box-content{flex:1;padding:5px 10px}.info-box .info-box-number{display:block;font-weight:700}.info-box .info-box-text,.info-box .progress-description{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-box .info-box .bg-gradient-primary,.info-box .info-box .bg-primary{color:#fff}.info-box .info-box .bg-gradient-primary .progress-bar,.info-box .info-box .bg-primary .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-secondary,.info-box .info-box .bg-secondary{color:#2a2e30}.info-box .info-box .bg-gradient-secondary .progress-bar,.info-box .info-box .bg-secondary .progress-bar{background-color:#2a2e30}.info-box .info-box .bg-gradient-success,.info-box .info-box .bg-success{color:#fff}.info-box .info-box .bg-gradient-success .progress-bar,.info-box .info-box .bg-success .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-info,.info-box .info-box .bg-info{color:#fff}.info-box .info-box .bg-gradient-info .progress-bar,.info-box .info-box .bg-info .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-warning,.info-box .info-box .bg-warning{color:#2a2e30}.info-box .info-box .bg-gradient-warning .progress-bar,.info-box .info-box .bg-warning .progress-bar{background-color:#2a2e30}.info-box .info-box .bg-danger,.info-box .info-box .bg-gradient-danger{color:#fff}.info-box .info-box .bg-danger .progress-bar,.info-box .info-box .bg-gradient-danger .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-light,.info-box .info-box .bg-light{color:#2a2e30}.info-box .info-box .bg-gradient-light .progress-bar,.info-box .info-box .bg-light .progress-bar{background-color:#2a2e30}.info-box .info-box .bg-dark,.info-box .info-box .bg-gradient-dark{color:#fff}.info-box .info-box .bg-dark .progress-bar,.info-box .info-box .bg-gradient-dark .progress-bar{background-color:#fff}.info-box .info-box-more{display:block}.info-box .progress-description{margin:0}@media (min-width:768px){.col-lg-2 .info-box .progress-description,.col-lg-3 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-2 .info-box .progress-description,.col-xl-3 .info-box .progress-description{display:none}}@media (min-width:992px){.col-lg-2 .info-box .progress-description,.col-lg-3 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-2 .info-box .progress-description,.col-xl-3 .info-box .progress-description{font-size:.75rem;display:block}}@media (min-width:1200px){.col-lg-2 .info-box .progress-description,.col-lg-3 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-2 .info-box .progress-description,.col-xl-3 .info-box .progress-description{font-size:1rem;display:block}}.timeline{margin:0 0 45px;padding:0;position:relative}.timeline:before{border-radius:.5rem;background:#dae1e7;bottom:0;content:\"\";left:31px;margin:0;position:absolute;top:0;width:4px}.timeline>div{margin-bottom:15px;margin-right:10px;position:relative}.timeline>div:after,.timeline>div:before{content:\"\";display:table}.timeline>div>.timeline-item{border-radius:.5rem;background:#fff;color:#4e5154;margin-left:60px;margin-right:15px;margin-top:0;padding:0;position:relative}.timeline>div>.timeline-item>.time{color:#999;float:right;font-size:12px;padding:10px}.timeline>div>.timeline-item>.timeline-header{border-bottom:1px solid rgba(34,41,47,.125);color:#4e5154;font-size:16px;line-height:1.1;margin:0;padding:10px}.timeline>div>.timeline-item>.timeline-header>a{font-weight:600}.timeline>div>.timeline-item>.timeline-body,.timeline>div>.timeline-item>.timeline-footer{padding:10px}.timeline>div>.timeline-item>.timeline-body>img{margin:10px}.timeline>div>.timeline-item>.timeline-body>dl,.timeline>div>.timeline-item>.timeline-body ol,.timeline>div>.timeline-item>.timeline-body ul{margin:0}.timeline>div>.timeline-item>.timeline-footer>a{color:#fff}.timeline>div>.fa,.timeline>div>.fab,.timeline>div>.far,.timeline>div>.fas,.timeline>div>.glyphicon,.timeline>div>.ion{background:#adb5bd;border-radius:50%;font-size:15px;height:30px;left:18px;line-height:30px;position:absolute;text-align:center;top:0;width:30px}.timeline>.time-label>span{border-radius:4px;background-color:#fff;display:inline-block;font-weight:600;padding:5px}.timeline-inverse>div>.timeline-item{background:#babfc7;border:1px solid #dae1e7}.timeline-inverse>div>.timeline-item>.timeline-header{border-bottom-color:#dae1e7}.products-list{list-style:none;margin:0;padding:0}.products-list>.item{border-radius:.5rem;background:#fff;padding:10px 0}.products-list>.item:after{display:block;clear:both;content:\"\"}.products-list .product-img{float:left}.products-list .product-img img{height:50px;width:50px}.products-list .product-info{margin-left:60px}.products-list .product-title{font-weight:600}.products-list .product-description{color:#b8c2cc;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.product-list-in-card>.item{border-radius:0;border-bottom:1px solid rgba(34,41,47,.125)}.product-list-in-card>.item:last-of-type{border-bottom-width:0}.direct-chat .card-body{overflow-x:hidden;padding:0;position:relative}.direct-chat.chat-pane-open .direct-chat-contacts{transform:translate(0)}.direct-chat.timestamp-light .direct-chat-timestamp{color:#42484b}.direct-chat.timestamp-dark .direct-chat-timestamp{color:#ccc}.direct-chat-messages{transform:translate(0);height:250px;overflow:auto;padding:10px}.direct-chat-msg,.direct-chat-text{display:block}.direct-chat-msg{margin-bottom:10px}.direct-chat-msg:after{display:block;clear:both;content:\"\"}.direct-chat-contacts,.direct-chat-messages{transition:transform .5s ease-in-out}.direct-chat-text{border-radius:.6rem;background:#d2d6de;border:1px solid #d2d6de;color:#444;margin:5px 0 0 50px;padding:5px 10px;position:relative}.direct-chat-text:after,.direct-chat-text:before{border:solid transparent;border-right:solid #d2d6de;content:\" \";height:0;pointer-events:none;position:absolute;right:100%;top:15px;width:0}.direct-chat-text:after{border-width:5px;margin-top:-5px}.direct-chat-text:before{border-width:6px;margin-top:-6px}.right .direct-chat-text{margin-left:0;margin-right:50px}.right .direct-chat-text:after,.right .direct-chat-text:before{border-left-color:#d2d6de;border-right-color:transparent;left:100%;right:auto}.direct-chat-img{border-radius:50%;float:left;height:40px;width:40px}.right .direct-chat-img{float:right}.direct-chat-infos{display:block;font-size:1rem;margin-bottom:2px}.direct-chat-name{font-weight:600}.direct-chat-timestamp{color:#697582}.direct-chat-contacts-open .direct-chat-contacts{transform:translate(0)}.direct-chat-contacts{transform:translate(101%);background:#22292f;bottom:0;color:#fff;height:250px;overflow:auto;position:absolute;top:0;width:100%}.direct-chat-contacts-light{background:#f7f7f9}.direct-chat-contacts-light .contacts-list-name{color:#4e5154}.direct-chat-contacts-light .contacts-list-date{color:#b8c2cc}.direct-chat-contacts-light .contacts-list-msg{color:#9aa9b7}.contacts-list{padding-left:0;list-style:none}.contacts-list>li{border-bottom:1px solid rgba(34,41,47,.2);margin:0;padding:10px}.contacts-list>li:after{display:block;clear:both;content:\"\"}.contacts-list>li:last-of-type{border-bottom:0}.contacts-list-img{border-radius:50%;float:left;width:40px}.contacts-list-info{color:#fff;margin-left:45px}.contacts-list-name,.contacts-list-status{display:block}.contacts-list-name{font-weight:600}.contacts-list-status{font-size:1rem}.contacts-list-date{color:#636363;font-weight:400}.contacts-list-msg{color:#4a4a4a}.direct-chat-primary .right>.direct-chat-text{background:#6d8be6;border-color:#6d8be6;color:#fff}.direct-chat-primary .right>.direct-chat-text:after,.direct-chat-primary .right>.direct-chat-text:before{border-left-color:#6d8be6}.direct-chat-secondary .right>.direct-chat-text{background:#b8c2cc;border-color:#b8c2cc;color:#2a2e30}.direct-chat-secondary .right>.direct-chat-text:after,.direct-chat-secondary .right>.direct-chat-text:before{border-left-color:#b8c2cc}.direct-chat-success .right>.direct-chat-text{background:#21b978;border-color:#21b978;color:#fff}.direct-chat-success .right>.direct-chat-text:after,.direct-chat-success .right>.direct-chat-text:before{border-left-color:#21b978}.direct-chat-info .right>.direct-chat-text{background:#4277cf;border-color:#4277cf;color:#fff}.direct-chat-info .right>.direct-chat-text:after,.direct-chat-info .right>.direct-chat-text:before{border-left-color:#4277cf}.direct-chat-warning .right>.direct-chat-text{background:#dda451;border-color:#dda451;color:#2a2e30}.direct-chat-warning .right>.direct-chat-text:after,.direct-chat-warning .right>.direct-chat-text:before{border-left-color:#dda451}.direct-chat-danger .right>.direct-chat-text{background:#ea5455;border-color:#ea5455;color:#fff}.direct-chat-danger .right>.direct-chat-text:after,.direct-chat-danger .right>.direct-chat-text:before{border-left-color:#ea5455}.direct-chat-light .right>.direct-chat-text{background:#f7f7f9;border-color:#f7f7f9;color:#2a2e30}.direct-chat-light .right>.direct-chat-text:after,.direct-chat-light .right>.direct-chat-text:before{border-left-color:#f7f7f9}.direct-chat-dark .right>.direct-chat-text{background:#22292f;border-color:#22292f;color:#fff}.direct-chat-dark .right>.direct-chat-text:after,.direct-chat-dark .right>.direct-chat-text:before{border-left-color:#22292f}.direct-chat-lightblue .right>.direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff}.direct-chat-lightblue .right>.direct-chat-text:after,.direct-chat-lightblue .right>.direct-chat-text:before{border-left-color:#3c8dbc}.direct-chat-navy .right>.direct-chat-text{background:#001f3f;border-color:#001f3f;color:#fff}.direct-chat-navy .right>.direct-chat-text:after,.direct-chat-navy .right>.direct-chat-text:before{border-left-color:#001f3f}.direct-chat-olive .right>.direct-chat-text{background:#3d9970;border-color:#3d9970;color:#fff}.direct-chat-olive .right>.direct-chat-text:after,.direct-chat-olive .right>.direct-chat-text:before{border-left-color:#3d9970}.direct-chat-lime .right>.direct-chat-text{background:#01ff70;border-color:#01ff70;color:#2a2e30}.direct-chat-lime .right>.direct-chat-text:after,.direct-chat-lime .right>.direct-chat-text:before{border-left-color:#01ff70}.direct-chat-fuchsia .right>.direct-chat-text{background:#f012be;border-color:#f012be;color:#fff}.direct-chat-fuchsia .right>.direct-chat-text:after,.direct-chat-fuchsia .right>.direct-chat-text:before{border-left-color:#f012be}.direct-chat-maroon .right>.direct-chat-text{background:#d81b60;border-color:#d81b60;color:#fff}.direct-chat-maroon .right>.direct-chat-text:after,.direct-chat-maroon .right>.direct-chat-text:before{border-left-color:#d81b60}.direct-chat-blue .right>.direct-chat-text{background:#3085d6;border-color:#3085d6;color:#fff}.direct-chat-blue .right>.direct-chat-text:after,.direct-chat-blue .right>.direct-chat-text:before{border-left-color:#3085d6}.direct-chat-indigo .right>.direct-chat-text{background:#5c6bc6;border-color:#5c6bc6;color:#fff}.direct-chat-indigo .right>.direct-chat-text:after,.direct-chat-indigo .right>.direct-chat-text:before{border-left-color:#5c6bc6}.direct-chat-purple .right>.direct-chat-text{background:#6f42c1;border-color:#6f42c1;color:#fff}.direct-chat-purple .right>.direct-chat-text:after,.direct-chat-purple .right>.direct-chat-text:before{border-left-color:#6f42c1}.direct-chat-pink .right>.direct-chat-text{background:#ff8acc;border-color:#ff8acc;color:#2a2e30}.direct-chat-pink .right>.direct-chat-text:after,.direct-chat-pink .right>.direct-chat-text:before{border-left-color:#ff8acc}.direct-chat-red .right>.direct-chat-text{background:#ea5455;border-color:#ea5455;color:#fff}.direct-chat-red .right>.direct-chat-text:after,.direct-chat-red .right>.direct-chat-text:before{border-left-color:#ea5455}.direct-chat-orange .right>.direct-chat-text{background:#dda451;border-color:#dda451;color:#2a2e30}.direct-chat-orange .right>.direct-chat-text:after,.direct-chat-orange .right>.direct-chat-text:before{border-left-color:#dda451}.direct-chat-yellow .right>.direct-chat-text{background:#edc30e;border-color:#edc30e;color:#2a2e30}.direct-chat-yellow .right>.direct-chat-text:after,.direct-chat-yellow .right>.direct-chat-text:before{border-left-color:#edc30e}.direct-chat-green .right>.direct-chat-text{background:#21b978;border-color:#21b978;color:#fff}.direct-chat-green .right>.direct-chat-text:after,.direct-chat-green .right>.direct-chat-text:before{border-left-color:#21b978}.direct-chat-teal .right>.direct-chat-text{background:#20c997;border-color:#20c997;color:#fff}.direct-chat-teal .right>.direct-chat-text:after,.direct-chat-teal .right>.direct-chat-text:before{border-left-color:#20c997}.direct-chat-cyan .right>.direct-chat-text{background:#7367f0;border-color:#7367f0;color:#fff}.direct-chat-cyan .right>.direct-chat-text:after,.direct-chat-cyan .right>.direct-chat-text:before{border-left-color:#7367f0}.direct-chat-white .right>.direct-chat-text{background:#fff;border-color:#fff;color:#2a2e30}.direct-chat-white .right>.direct-chat-text:after,.direct-chat-white .right>.direct-chat-text:before{border-left-color:#fff}.direct-chat-gray .right>.direct-chat-text{background:#b8c2cc;border-color:#b8c2cc;color:#2a2e30}.direct-chat-gray .right>.direct-chat-text:after,.direct-chat-gray .right>.direct-chat-text:before{border-left-color:#b8c2cc}.direct-chat-gray-dark .right>.direct-chat-text{background:#1e1e1e;border-color:#1e1e1e;color:#fff}.direct-chat-gray-dark .right>.direct-chat-text:after,.direct-chat-gray-dark .right>.direct-chat-text:before{border-left-color:#1e1e1e}.users-list{padding-left:0;list-style:none}.users-list>li{float:left;padding:10px;text-align:center;width:25%}.users-list>li img{border-radius:50%;height:auto;max-width:100%}.users-list>li>a:hover,.users-list>li>a:hover .users-list-name{color:#999}.users-list-date,.users-list-name{display:block}.users-list-name{color:#4e5154;font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.users-list-date{color:#748290;font-size:12px}.card-widget{border:0;position:relative}.widget-user .widget-user-header{border-top-left-radius:.5rem;border-top-right-radius:.5rem;height:135px;padding:1rem;text-align:center}.widget-user .widget-user-username{font-size:25px;font-weight:300;margin-bottom:0;margin-top:0;text-shadow:0 1px 1px rgba(34,41,47,.2)}.widget-user .widget-user-desc{margin-top:0}.widget-user .widget-user-image{left:50%;margin-left:-45px;position:absolute;top:80px}.widget-user .widget-user-image>img{border:3px solid #fff;height:auto;width:90px}.widget-user .card-footer{padding-top:50px}.widget-user-2 .widget-user-header{border-top-left-radius:.5rem;border-top-right-radius:.5rem;padding:1rem}.widget-user-2 .widget-user-username{font-size:25px;font-weight:300;margin-bottom:5px;margin-top:5px}.widget-user-2 .widget-user-desc{margin-top:0}.widget-user-2 .widget-user-desc,.widget-user-2 .widget-user-username{margin-left:75px}.widget-user-2 .widget-user-image>img{float:left;height:auto;width:65px}.mailbox-messages>.table{margin:0}.mailbox-controls{padding:5px}.mailbox-controls.with-border,.mailbox-read-info{border-bottom:1px solid rgba(34,41,47,.125)}.mailbox-read-info{padding:10px}.mailbox-read-info h3{font-size:20px;margin:0}.mailbox-read-info h5{margin:0;padding:5px 0 0}.mailbox-read-time{color:#999;font-size:13px}.mailbox-read-message{padding:10px}.mailbox-attachments{padding-left:0;list-style:none}.mailbox-attachments li{border:1px solid #eee;float:left;margin-bottom:10px;margin-right:10px;width:200px}.mailbox-attachment-name{color:#666;font-weight:700}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block}.mailbox-attachment-info{background:#babfc7;padding:10px}.mailbox-attachment-size{color:#999;font-size:12px}.mailbox-attachment-size>span{display:inline-block;padding-top:.75rem}.mailbox-attachment-icon{color:#666;font-size:65px;max-height:132.5px;padding:20px 10px;text-align:center}.mailbox-attachment-icon.has-img{padding:0}.mailbox-attachment-icon.has-img>img{height:auto;max-width:100%}.lockscreen{background:#ededed}.lockscreen .lockscreen-name{font-weight:600;text-align:center}.lockscreen-logo{font-size:35px;font-weight:300;margin-bottom:25px;text-align:center}.lockscreen-logo a{color:#4e5154}.lockscreen-wrapper{margin:10% auto 0;max-width:400px}.lockscreen-item{border-radius:4px;background:#fff;margin:10px auto 30px;padding:0;position:relative;width:290px}.lockscreen-image{border-radius:50%;background:#fff;left:-10px;padding:5px;position:absolute;top:-25px;z-index:10}.lockscreen-image>img{border-radius:50%;height:70px;width:70px}.lockscreen-credentials{margin-left:70px}.lockscreen-credentials .form-control{border:0}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px}.lockscreen-footer{margin-top:10px}.login-logo,.register-logo{font-size:2.1rem;font-weight:300;margin-bottom:.9rem;text-align:center}.login-logo a,.register-logo a{color:#4e5154}.login-page,.register-page{align-items:center;background:#ededed;display:flex;flex-direction:column;height:100vh;justify-content:center}.login-box,.register-box{width:360px}@media (max-width:576px){.login-box,.register-box{margin-top:.5rem;width:90%}}.login-card-body,.register-card-body{background:#fff;border-top:0;color:#666;padding:20px}.login-card-body .input-group .form-control,.register-card-body .input-group .form-control{border-right:0}.login-card-body .input-group .form-control:focus,.register-card-body .input-group .form-control:focus{box-shadow:none}.login-card-body .input-group .form-control:focus~.input-group-append .input-group-text,.register-card-body .input-group .form-control:focus~.input-group-append .input-group-text{border-color:#6d8be6}.login-card-body .input-group .form-control.is-valid:focus,.register-card-body .input-group .form-control.is-valid:focus{box-shadow:none}.login-card-body .input-group .form-control.is-valid~.input-group-append .input-group-text,.register-card-body .input-group .form-control.is-valid~.input-group-append .input-group-text{border-color:#21b978}.login-card-body .input-group .form-control.is-invalid:focus,.register-card-body .input-group .form-control.is-invalid:focus{box-shadow:none}.login-card-body .input-group .form-control.is-invalid~.input-group-append .input-group-text,.register-card-body .input-group .form-control.is-invalid~.input-group-append .input-group-text{border-color:#ea5455}.login-card-body .input-group .input-group-text,.register-card-body .input-group .input-group-text{background-color:transparent;border-bottom-right-radius:.5rem;border-left:0;border-top-right-radius:.5rem;color:#777;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.login-box-msg,.register-box-msg{margin:0;padding:0 20px 20px;text-align:center}.social-auth-links{margin:10px 0}.error-page{margin:20px auto 0;width:600px}@media (max-width:767.98px){.error-page{width:100%}}.error-page>.headline{float:left;font-size:100px;font-weight:300}@media (max-width:767.98px){.error-page>.headline{float:none;text-align:center}}.error-page>.error-content{display:block;margin-left:190px}@media (max-width:767.98px){.error-page>.error-content{margin-left:0}}.error-page>.error-content>h3{font-size:25px;font-weight:300}@media (max-width:767.98px){.error-page>.error-content>h3{text-align:center}}.invoice{background:#fff;border:1px solid rgba(34,41,47,.125);position:relative}.invoice-title{margin-top:0}.profile-user-img{border:3px solid #adb5bd;margin:0 auto;padding:3px;width:100px}.profile-username{font-size:21px;margin-top:5px}.post{border-bottom:1px solid #adb5bd;color:#666;margin-bottom:15px;padding-bottom:15px}.post:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0}.post .user-block{margin-bottom:15px;width:100%}.post .row{width:100%}.product-image{max-width:100%;height:auto;width:100%}.product-image-thumbs{align-items:stretch;display:flex;margin-top:2rem}.product-image-thumb{border-radius:.5rem;background-color:#eff1f7;border:1px solid #dae1e7;display:flex;margin-right:1rem;max-width:7rem;padding:.5rem}.product-image-thumb img{max-width:100%;height:auto;align-self:center}.product-image-thumb:hover{opacity:.5}.product-share a{margin-right:.5rem}.projects td{vertical-align:middle}.projects .list-inline{margin-bottom:0}.projects .table-avatar img,.projects img.table-avatar{border-radius:50%;display:inline;width:2.5rem}.projects .project-state{text-align:center}.fc-button{background:#babfc7;background-image:none;border-color:#ddd;color:#4e5154}.fc-button.hover,.fc-button:active,.fc-button:hover{background-color:#e9e9e9}.fc-header-title h2{color:#666;font-size:15px;line-height:1.6em;margin-left:10px}.fc-header-right{padding-right:10px}.fc-header-left{padding-left:10px}.fc-widget-header{background:#fafafa}.fc-grid{border:0;width:100%}.fc-widget-content:first-of-type,.fc-widget-header:first-of-type{border-left:0;border-right:0}.fc-widget-content:last-of-type,.fc-widget-header:last-of-type{border-right:0}.fc-toolbar,.fc-toolbar.fc-header-toolbar{margin:0;padding:1rem}@media (max-width:575.98px){.fc-toolbar{flex-direction:column}.fc-toolbar .fc-left{order:1;margin-bottom:.5rem}.fc-toolbar .fc-center{order:0;margin-bottom:.375rem}.fc-toolbar .fc-right{order:2}}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px}.fc-color-picker{list-style:none;margin:0;padding:0}.fc-color-picker>li{float:left;font-size:30px;line-height:30px;margin-right:5px}.fc-color-picker>li .fa,.fc-color-picker>li .fab,.fc-color-picker>li .far,.fc-color-picker>li .fas,.fc-color-picker>li .glyphicon,.fc-color-picker>li .ion{transition:transform .3s linear}.fc-color-picker>li .fa:hover,.fc-color-picker>li .fab:hover,.fc-color-picker>li .far:hover,.fc-color-picker>li .fas:hover,.fc-color-picker>li .glyphicon:hover,.fc-color-picker>li .ion:hover{transform:rotate(30deg)}#add-new-event{transition:all .3s linear}.external-event{border-radius:.5rem;cursor:move;font-weight:700;margin-bottom:4px;padding:5px 10px}.select2-container--default .select2-selection--single{border:1px solid rgba(0,0,0,.2);padding:.875rem .7rem;height:34px}.select2-container--default.select2-container--open .select2-selection--single{border-color:#dae1f9}.select2-container--default .select2-dropdown{border:1px solid rgba(0,0,0,.2)}.select2-container--default .select2-results__option{padding:6px 12px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container--default .select2-selection--single .select2-selection__rendered{padding-left:0;height:auto;margin-top:-3px}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:31px;right:6px}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0}.select2-container--default .select2-dropdown .select2-search__field,.select2-container--default .select2-search--inline .select2-search__field{border:1px solid rgba(0,0,0,.2)}.select2-container--default .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-search--inline .select2-search__field:focus{outline:none;border:1px solid #6d8be6}.select2-container--default .select2-dropdown.select2-dropdown--below{border-top:0}.select2-container--default .select2-dropdown.select2-dropdown--above{border-bottom:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#b8c2cc}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#dae1e7}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#2a2e30}.select2-container--default .select2-results__option--highlighted{background-color:#6d8be6;color:#fff}.select2-container--default .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#6081e4;color:#fff}.select2-container--default .select2-selection--multiple{border:1px solid rgba(0,0,0,.2);min-height:34px}.select2-container--default .select2-selection--multiple:focus{border-color:#6d8be6}.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .35rem .7rem;margin-bottom:-.35rem}.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline{width:100%;margin-left:.35rem}.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline .select2-search__field{width:100%!important}.select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field{border:0;margin-top:6px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#6d8be6;border-color:#577ae2;color:#fff;padding:0 10px;margin-top:.31rem}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7);float:right;margin-left:5px;margin-right:-2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-selection--multiple.text-sm .select2-search.select2-search--inline .select2-search__field,.text-sm .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline .select2-search__field{margin-top:8px}.select2-container--default .select2-selection--multiple.text-sm .select2-selection__choice,.text-sm .select2-container--default .select2-selection--multiple .select2-selection__choice{margin-top:.4rem}.select2-container--default.select2-container--focus .select2-selection--multiple,.select2-container--default.select2-container--focus .select2-selection--single{border-color:#6d8be6}.select2-container--default.select2-container--focus .select2-search__field{border:0}.select2-container--default .select2-selection--single .select2-selection__rendered li{padding-right:10px}.input-group-prepend~.select2-container--default .select2-selection{border-bottom-left-radius:0;border-top-left-radius:0}.input-group>.select2-container--default:not(:last-child) .select2-selection{border-bottom-right-radius:0;border-top-right-radius:0}.select2-container--bootstrap4.select2-container--focus .select2-selection{box-shadow:none}select.form-control-sm~.select2-container--default{font-size:1rem}.text-sm .select2-container--default .select2-selection--single,select.form-control-sm~.select2-container--default .select2-selection--single{height:2rem}.text-sm .select2-container--default .select2-selection--single .select2-selection__rendered,select.form-control-sm~.select2-container--default .select2-selection--single .select2-selection__rendered{margin-top:-.4rem}.text-sm .select2-container--default .select2-selection--single .select2-selection__arrow,select.form-control-sm~.select2-container--default .select2-selection--single .select2-selection__arrow{top:-.12rem}.text-sm .select2-container--default .select2-selection--multiple,select.form-control-sm~.select2-container--default .select2-selection--multiple{min-height:2rem}.text-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered,select.form-control-sm~.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .75rem .5rem;margin-top:-.3rem}.text-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline,select.form-control-sm~.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline{margin-left:.75rem}.text-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field,select.form-control-sm~.select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field{margin-top:6px}.select2-primary+.select2-container--default.select2-container--focus .select2-selection--single,.select2-primary+.select2-container--default.select2-container--open .select2-selection--single{border-color:#dae1f9}.select2-container--default .select2-primary.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-primary .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-primary .select2-search--inline .select2-search__field:focus,.select2-primary .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-primary .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-primary .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #dae1f9}.select2-container--default .select2-primary .select2-results__option--highlighted,.select2-primary .select2-container--default .select2-results__option--highlighted{background-color:#6d8be6;color:#fff}.select2-container--default .select2-primary .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-primary .select2-results__option--highlighted[aria-selected]:hover,.select2-primary .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-primary .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#6081e4;color:#fff}.select2-container--default .select2-primary .select2-selection--multiple:focus,.select2-primary .select2-container--default .select2-selection--multiple:focus{border-color:#dae1f9}.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice,.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#6d8be6;border-color:#577ae2;color:#fff}.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice__remove,.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-primary.select2-container--focus .select2-selection--multiple,.select2-primary .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#dae1f9}.select2-secondary+.select2-container--default.select2-container--focus .select2-selection--single,.select2-secondary+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-secondary.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-secondary .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-secondary .select2-search--inline .select2-search__field:focus,.select2-secondary .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-secondary .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-secondary .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-secondary .select2-results__option--highlighted,.select2-secondary .select2-container--default .select2-results__option--highlighted{background-color:#b8c2cc;color:#2a2e30}.select2-container--default .select2-secondary .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-secondary .select2-results__option--highlighted[aria-selected]:hover,.select2-secondary .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-secondary .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#afbac6;color:#2a2e30}.select2-container--default .select2-secondary .select2-selection--multiple:focus,.select2-secondary .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice,.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#b8c2cc;border-color:#a9b5c1;color:#2a2e30}.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice__remove,.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-secondary.select2-container--focus .select2-selection--multiple,.select2-secondary .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-success+.select2-container--default.select2-container--focus .select2-selection--single,.select2-success+.select2-container--default.select2-container--open .select2-selection--single{border-color:#73e6b5}.select2-container--default .select2-success.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-success .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-success .select2-search--inline .select2-search__field:focus,.select2-success .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-success .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-success .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #73e6b5}.select2-container--default .select2-success .select2-results__option--highlighted,.select2-success .select2-container--default .select2-results__option--highlighted{background-color:#21b978;color:#fff}.select2-container--default .select2-success .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-success .select2-results__option--highlighted[aria-selected]:hover,.select2-success .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-success .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1fac70;color:#fff}.select2-container--default .select2-success .select2-selection--multiple:focus,.select2-success .select2-container--default .select2-selection--multiple:focus{border-color:#73e6b5}.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice,.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#21b978;border-color:#1da36a;color:#fff}.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice__remove,.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-success.select2-container--focus .select2-selection--multiple,.select2-success .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#73e6b5}.select2-info+.select2-container--default.select2-container--focus .select2-selection--single,.select2-info+.select2-container--default.select2-container--open .select2-selection--single{border-color:#a8c0e9}.select2-container--default .select2-info.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-info .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-info .select2-search--inline .select2-search__field:focus,.select2-info .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-info .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-info .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #a8c0e9}.select2-container--default .select2-info .select2-results__option--highlighted,.select2-info .select2-container--default .select2-results__option--highlighted{background-color:#4277cf;color:#fff}.select2-container--default .select2-info .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-info .select2-results__option--highlighted[aria-selected]:hover,.select2-info .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-info .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#366ecc;color:#fff}.select2-container--default .select2-info .select2-selection--multiple:focus,.select2-info .select2-container--default .select2-selection--multiple:focus{border-color:#a8c0e9}.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice,.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#4277cf;border-color:#3269c5;color:#fff}.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice__remove,.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-info.select2-container--focus .select2-selection--multiple,.select2-info .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#a8c0e9}.select2-warning+.select2-container--default.select2-container--focus .select2-selection--single,.select2-warning+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f2dcbc}.select2-container--default .select2-warning.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-warning .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-warning .select2-search--inline .select2-search__field:focus,.select2-warning .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-warning .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-warning .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f2dcbc}.select2-container--default .select2-warning .select2-results__option--highlighted,.select2-warning .select2-container--default .select2-results__option--highlighted{background-color:#dda451;color:#2a2e30}.select2-container--default .select2-warning .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-warning .select2-results__option--highlighted[aria-selected]:hover,.select2-warning .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-warning .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#da9d44;color:#2a2e30}.select2-container--default .select2-warning .select2-selection--multiple:focus,.select2-warning .select2-container--default .select2-selection--multiple:focus{border-color:#f2dcbc}.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice,.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#dda451;border-color:#d9993c;color:#2a2e30}.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice__remove,.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-warning.select2-container--focus .select2-selection--multiple,.select2-warning .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f2dcbc}.select2-danger+.select2-container--default.select2-container--focus .select2-selection--single,.select2-danger+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f8c6c6}.select2-container--default .select2-danger.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-danger .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-danger .select2-search--inline .select2-search__field:focus,.select2-danger .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-danger .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-danger .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f8c6c6}.select2-container--default .select2-danger .select2-results__option--highlighted,.select2-danger .select2-container--default .select2-results__option--highlighted{background-color:#ea5455;color:#fff}.select2-container--default .select2-danger .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-danger .select2-results__option--highlighted[aria-selected]:hover,.select2-danger .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-danger .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#e84647;color:#fff}.select2-container--default .select2-danger .select2-selection--multiple:focus,.select2-danger .select2-container--default .select2-selection--multiple:focus{border-color:#f8c6c6}.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice,.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ea5455;border-color:#e73d3e;color:#fff}.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice__remove,.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-danger.select2-container--focus .select2-selection--multiple,.select2-danger .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f8c6c6}.select2-light+.select2-container--default.select2-container--focus .select2-selection--single,.select2-light+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-light.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-light .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-light .select2-search--inline .select2-search__field:focus,.select2-light .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-light .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-light .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-light .select2-results__option--highlighted,.select2-light .select2-container--default .select2-results__option--highlighted{background-color:#f7f7f9;color:#2a2e30}.select2-container--default .select2-light .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-light .select2-results__option--highlighted[aria-selected]:hover,.select2-light .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-light .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#eeeef2;color:#2a2e30}.select2-container--default .select2-light .select2-selection--multiple:focus,.select2-light .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice,.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#f7f7f9;border-color:#e8e8ee;color:#2a2e30}.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice__remove,.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-light.select2-container--focus .select2-selection--multiple,.select2-light .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-dark+.select2-container--default.select2-container--focus .select2-selection--single,.select2-dark+.select2-container--default.select2-container--open .select2-selection--single{border-color:#586a79}.select2-container--default .select2-dark.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-dark .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-dark .select2-search--inline .select2-search__field:focus,.select2-dark .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-dark .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-dark .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #586a79}.select2-container--default .select2-dark .select2-results__option--highlighted,.select2-dark .select2-container--default .select2-results__option--highlighted{background-color:#22292f;color:#fff}.select2-container--default .select2-dark .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-dark .select2-results__option--highlighted[aria-selected]:hover,.select2-dark .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-dark .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1c2126;color:#fff}.select2-container--default .select2-dark .select2-selection--multiple:focus,.select2-dark .select2-container--default .select2-selection--multiple:focus{border-color:#586a79}.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice,.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#22292f;border-color:#171c20;color:#fff}.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice__remove,.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-dark.select2-container--focus .select2-selection--multiple,.select2-dark .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#586a79}.select2-lightblue+.select2-container--default.select2-container--focus .select2-selection--single,.select2-lightblue+.select2-container--default.select2-container--open .select2-selection--single{border-color:#99c5de}.select2-container--default .select2-lightblue.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lightblue .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lightblue .select2-search--inline .select2-search__field:focus,.select2-lightblue .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-lightblue .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-lightblue .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #99c5de}.select2-container--default .select2-lightblue .select2-results__option--highlighted,.select2-lightblue .select2-container--default .select2-results__option--highlighted{background-color:#3c8dbc;color:#fff}.select2-container--default .select2-lightblue .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-lightblue .select2-results__option--highlighted[aria-selected]:hover,.select2-lightblue .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-lightblue .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#3884b0;color:#fff}.select2-container--default .select2-lightblue .select2-selection--multiple:focus,.select2-lightblue .select2-container--default .select2-selection--multiple:focus{border-color:#99c5de}.select2-container--default .select2-lightblue .select2-selection--multiple .select2-selection__choice,.select2-lightblue .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;color:#fff}.select2-container--default .select2-lightblue .select2-selection--multiple .select2-selection__choice__remove,.select2-lightblue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-lightblue .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-lightblue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-lightblue.select2-container--focus .select2-selection--multiple,.select2-lightblue .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#99c5de}.select2-navy+.select2-container--default.select2-container--focus .select2-selection--single,.select2-navy+.select2-container--default.select2-container--open .select2-selection--single{border-color:#005ebf}.select2-container--default .select2-navy.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-navy .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-navy .select2-search--inline .select2-search__field:focus,.select2-navy .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-navy .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-navy .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #005ebf}.select2-container--default .select2-navy .select2-results__option--highlighted,.select2-navy .select2-container--default .select2-results__option--highlighted{background-color:#001f3f;color:#fff}.select2-container--default .select2-navy .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-navy .select2-results__option--highlighted[aria-selected]:hover,.select2-navy .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-navy .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#001730;color:#fff}.select2-container--default .select2-navy .select2-selection--multiple:focus,.select2-navy .select2-container--default .select2-selection--multiple:focus{border-color:#005ebf}.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice,.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#001f3f;border-color:#001226;color:#fff}.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice__remove,.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-navy.select2-container--focus .select2-selection--multiple,.select2-navy .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#005ebf}.select2-olive+.select2-container--default.select2-container--focus .select2-selection--single,.select2-olive+.select2-container--default.select2-container--open .select2-selection--single{border-color:#87cfaf}.select2-container--default .select2-olive.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-olive .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-olive .select2-search--inline .select2-search__field:focus,.select2-olive .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-olive .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-olive .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #87cfaf}.select2-container--default .select2-olive .select2-results__option--highlighted,.select2-olive .select2-container--default .select2-results__option--highlighted{background-color:#3d9970;color:#fff}.select2-container--default .select2-olive .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-olive .select2-results__option--highlighted[aria-selected]:hover,.select2-olive .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-olive .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#398e68;color:#fff}.select2-container--default .select2-olive .select2-selection--multiple:focus,.select2-olive .select2-container--default .select2-selection--multiple:focus{border-color:#87cfaf}.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice,.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3d9970;border-color:#368763;color:#fff}.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice__remove,.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-olive.select2-container--focus .select2-selection--multiple,.select2-olive .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#87cfaf}.select2-lime+.select2-container--default.select2-container--focus .select2-selection--single,.select2-lime+.select2-container--default.select2-container--open .select2-selection--single{border-color:#81ffb8}.select2-container--default .select2-lime.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lime .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lime .select2-search--inline .select2-search__field:focus,.select2-lime .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-lime .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-lime .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #81ffb8}.select2-container--default .select2-lime .select2-results__option--highlighted,.select2-lime .select2-container--default .select2-results__option--highlighted{background-color:#01ff70;color:#2a2e30}.select2-container--default .select2-lime .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-lime .select2-results__option--highlighted[aria-selected]:hover,.select2-lime .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-lime .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#00f169;color:#2a2e30}.select2-container--default .select2-lime .select2-selection--multiple:focus,.select2-lime .select2-container--default .select2-selection--multiple:focus{border-color:#81ffb8}.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice,.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#01ff70;border-color:#00e765;color:#2a2e30}.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice__remove,.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-lime.select2-container--focus .select2-selection--multiple,.select2-lime .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#81ffb8}.select2-fuchsia+.select2-container--default.select2-container--focus .select2-selection--single,.select2-fuchsia+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f88adf}.select2-container--default .select2-fuchsia.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-fuchsia .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-fuchsia .select2-search--inline .select2-search__field:focus,.select2-fuchsia .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-fuchsia .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-fuchsia .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f88adf}.select2-container--default .select2-fuchsia .select2-results__option--highlighted,.select2-fuchsia .select2-container--default .select2-results__option--highlighted{background-color:#f012be;color:#fff}.select2-container--default .select2-fuchsia .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-fuchsia .select2-results__option--highlighted[aria-selected]:hover,.select2-fuchsia .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-fuchsia .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#e40eb4;color:#fff}.select2-container--default .select2-fuchsia .select2-selection--multiple:focus,.select2-fuchsia .select2-container--default .select2-selection--multiple:focus{border-color:#f88adf}.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice,.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#f012be;border-color:#db0ead;color:#fff}.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice__remove,.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-fuchsia.select2-container--focus .select2-selection--multiple,.select2-fuchsia .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f88adf}.select2-maroon+.select2-container--default.select2-container--focus .select2-selection--single,.select2-maroon+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f083ab}.select2-container--default .select2-maroon.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-maroon .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-maroon .select2-search--inline .select2-search__field:focus,.select2-maroon .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-maroon .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-maroon .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f083ab}.select2-container--default .select2-maroon .select2-results__option--highlighted,.select2-maroon .select2-container--default .select2-results__option--highlighted{background-color:#d81b60;color:#fff}.select2-container--default .select2-maroon .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-maroon .select2-results__option--highlighted[aria-selected]:hover,.select2-maroon .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-maroon .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#ca195a;color:#fff}.select2-container--default .select2-maroon .select2-selection--multiple:focus,.select2-maroon .select2-container--default .select2-selection--multiple:focus{border-color:#f083ab}.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice,.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#d81b60;border-color:#c11856;color:#fff}.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice__remove,.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-maroon.select2-container--focus .select2-selection--multiple,.select2-maroon .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f083ab}.select2-blue+.select2-container--default.select2-container--focus .select2-selection--single,.select2-blue+.select2-container--default.select2-container--open .select2-selection--single{border-color:#9ac4eb}.select2-blue .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-blue .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-blue .select2-container--default .select2-search--inline .select2-search__field:focus,.select2-container--default .select2-blue.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-blue .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-blue .select2-search--inline .select2-search__field:focus{border:1px solid #9ac4eb}.select2-blue .select2-container--default .select2-results__option--highlighted,.select2-container--default .select2-blue .select2-results__option--highlighted{background-color:#3085d6;color:#fff}.select2-blue .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-blue .select2-container--default .select2-results__option--highlighted[aria-selected]:hover,.select2-container--default .select2-blue .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-blue .select2-results__option--highlighted[aria-selected]:hover{background-color:#297dce;color:#fff}.select2-blue .select2-container--default .select2-selection--multiple:focus,.select2-container--default .select2-blue .select2-selection--multiple:focus{border-color:#9ac4eb}.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice,.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice{background-color:#3085d6;border-color:#2778c5;color:#fff}.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove,.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-blue .select2-container--default.select2-container--focus .select2-selection--multiple,.select2-container--default .select2-blue.select2-container--focus .select2-selection--multiple{border-color:#9ac4eb}.select2-indigo+.select2-container--default.select2-container--focus .select2-selection--single,.select2-indigo+.select2-container--default.select2-container--open .select2-selection--single{border-color:#bac1e7}.select2-container--default .select2-indigo.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-indigo .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-indigo .select2-search--inline .select2-search__field:focus,.select2-indigo .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-indigo .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-indigo .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #bac1e7}.select2-container--default .select2-indigo .select2-results__option--highlighted,.select2-indigo .select2-container--default .select2-results__option--highlighted{background-color:#5c6bc6;color:#fff}.select2-container--default .select2-indigo .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-indigo .select2-results__option--highlighted[aria-selected]:hover,.select2-indigo .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-indigo .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#5161c2;color:#fff}.select2-container--default .select2-indigo .select2-selection--multiple:focus,.select2-indigo .select2-container--default .select2-selection--multiple:focus{border-color:#bac1e7}.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice,.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#5c6bc6;border-color:#495abf;color:#fff}.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice__remove,.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-indigo.select2-container--focus .select2-selection--multiple,.select2-indigo .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#bac1e7}.select2-purple+.select2-container--default.select2-container--focus .select2-selection--single,.select2-purple+.select2-container--default.select2-container--open .select2-selection--single{border-color:#b8a2e0}.select2-container--default .select2-purple.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-purple .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-purple .select2-search--inline .select2-search__field:focus,.select2-purple .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-purple .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-purple .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #b8a2e0}.select2-container--default .select2-purple .select2-results__option--highlighted,.select2-purple .select2-container--default .select2-results__option--highlighted{background-color:#6f42c1;color:#fff}.select2-container--default .select2-purple .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-purple .select2-results__option--highlighted[aria-selected]:hover,.select2-purple .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-purple .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#683cb8;color:#fff}.select2-container--default .select2-purple .select2-selection--multiple:focus,.select2-purple .select2-container--default .select2-selection--multiple:focus{border-color:#b8a2e0}.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice,.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#6f42c1;border-color:#643ab0;color:#fff}.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice__remove,.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-purple.select2-container--focus .select2-selection--multiple,.select2-purple .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#b8a2e0}.select2-pink+.select2-container--default.select2-container--focus .select2-selection--single,.select2-pink+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-pink.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-pink .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-pink .select2-search--inline .select2-search__field:focus,.select2-pink .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-pink .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-pink .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-pink .select2-results__option--highlighted,.select2-pink .select2-container--default .select2-results__option--highlighted{background-color:#ff8acc;color:#2a2e30}.select2-container--default .select2-pink .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-pink .select2-results__option--highlighted[aria-selected]:hover,.select2-pink .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-pink .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#ff7bc5;color:#2a2e30}.select2-container--default .select2-pink .select2-selection--multiple:focus,.select2-pink .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice,.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ff8acc;border-color:#ff71c1;color:#2a2e30}.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice__remove,.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-pink.select2-container--focus .select2-selection--multiple,.select2-pink .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-red+.select2-container--default.select2-container--focus .select2-selection--single,.select2-red+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f8c6c6}.select2-container--default .select2-red.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-red .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-red .select2-search--inline .select2-search__field:focus,.select2-red .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-red .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-red .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f8c6c6}.select2-container--default .select2-red .select2-results__option--highlighted,.select2-red .select2-container--default .select2-results__option--highlighted{background-color:#ea5455;color:#fff}.select2-container--default .select2-red .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-red .select2-results__option--highlighted[aria-selected]:hover,.select2-red .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-red .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#e84647;color:#fff}.select2-container--default .select2-red .select2-selection--multiple:focus,.select2-red .select2-container--default .select2-selection--multiple:focus{border-color:#f8c6c6}.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice,.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ea5455;border-color:#e73d3e;color:#fff}.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice__remove,.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-red.select2-container--focus .select2-selection--multiple,.select2-red .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f8c6c6}.select2-orange+.select2-container--default.select2-container--focus .select2-selection--single,.select2-orange+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f2dcbc}.select2-container--default .select2-orange.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-orange .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-orange .select2-search--inline .select2-search__field:focus,.select2-orange .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-orange .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-orange .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f2dcbc}.select2-container--default .select2-orange .select2-results__option--highlighted,.select2-orange .select2-container--default .select2-results__option--highlighted{background-color:#dda451;color:#2a2e30}.select2-container--default .select2-orange .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-orange .select2-results__option--highlighted[aria-selected]:hover,.select2-orange .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-orange .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#da9d44;color:#2a2e30}.select2-container--default .select2-orange .select2-selection--multiple:focus,.select2-orange .select2-container--default .select2-selection--multiple:focus{border-color:#f2dcbc}.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice,.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#dda451;border-color:#d9993c;color:#2a2e30}.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice__remove,.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-orange.select2-container--focus .select2-selection--multiple,.select2-orange .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f2dcbc}.select2-yellow+.select2-container--default.select2-container--focus .select2-selection--single,.select2-yellow+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f8e283}.select2-container--default .select2-yellow.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-yellow .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-yellow .select2-search--inline .select2-search__field:focus,.select2-yellow .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-yellow .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-yellow .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f8e283}.select2-container--default .select2-yellow .select2-results__option--highlighted,.select2-yellow .select2-container--default .select2-results__option--highlighted{background-color:#edc30e;color:#2a2e30}.select2-container--default .select2-yellow .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-yellow .select2-results__option--highlighted[aria-selected]:hover,.select2-yellow .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-yellow .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#dfb70d;color:#2a2e30}.select2-container--default .select2-yellow .select2-selection--multiple:focus,.select2-yellow .select2-container--default .select2-selection--multiple:focus{border-color:#f8e283}.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice,.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#edc30e;border-color:#d5af0d;color:#2a2e30}.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice__remove,.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-yellow.select2-container--focus .select2-selection--multiple,.select2-yellow .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f8e283}.select2-green+.select2-container--default.select2-container--focus .select2-selection--single,.select2-green+.select2-container--default.select2-container--open .select2-selection--single{border-color:#73e6b5}.select2-container--default .select2-green.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-green .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-green .select2-search--inline .select2-search__field:focus,.select2-green .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-green .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-green .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #73e6b5}.select2-container--default .select2-green .select2-results__option--highlighted,.select2-green .select2-container--default .select2-results__option--highlighted{background-color:#21b978;color:#fff}.select2-container--default .select2-green .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-green .select2-results__option--highlighted[aria-selected]:hover,.select2-green .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-green .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1fac70;color:#fff}.select2-container--default .select2-green .select2-selection--multiple:focus,.select2-green .select2-container--default .select2-selection--multiple:focus{border-color:#73e6b5}.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice,.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#21b978;border-color:#1da36a;color:#fff}.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice__remove,.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-green.select2-container--focus .select2-selection--multiple,.select2-green .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#73e6b5}.select2-teal+.select2-container--default.select2-container--focus .select2-selection--single,.select2-teal+.select2-container--default.select2-container--open .select2-selection--single{border-color:#7eeaca}.select2-container--default .select2-teal.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-teal .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-teal .select2-search--inline .select2-search__field:focus,.select2-teal .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-teal .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-teal .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #7eeaca}.select2-container--default .select2-teal .select2-results__option--highlighted,.select2-teal .select2-container--default .select2-results__option--highlighted{background-color:#20c997;color:#fff}.select2-container--default .select2-teal .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-teal .select2-results__option--highlighted[aria-selected]:hover,.select2-teal .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-teal .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1ebc8d;color:#fff}.select2-container--default .select2-teal .select2-selection--multiple:focus,.select2-teal .select2-container--default .select2-selection--multiple:focus{border-color:#7eeaca}.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice,.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#20c997;border-color:#1cb386;color:#fff}.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice__remove,.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-teal.select2-container--focus .select2-selection--multiple,.select2-teal .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#7eeaca}.select2-cyan+.select2-container--default.select2-container--focus .select2-selection--single,.select2-cyan+.select2-container--default.select2-container--open .select2-selection--single{border-color:#dedbfb}.select2-container--default .select2-cyan.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-cyan .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-cyan .select2-search--inline .select2-search__field:focus,.select2-cyan .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-cyan .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-cyan .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #dedbfb}.select2-container--default .select2-cyan .select2-results__option--highlighted,.select2-cyan .select2-container--default .select2-results__option--highlighted{background-color:#7367f0;color:#fff}.select2-container--default .select2-cyan .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-cyan .select2-results__option--highlighted[aria-selected]:hover,.select2-cyan .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-cyan .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#6659ef;color:#fff}.select2-container--default .select2-cyan .select2-selection--multiple:focus,.select2-cyan .select2-container--default .select2-selection--multiple:focus{border-color:#dedbfb}.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice,.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#7367f0;border-color:#5e50ee;color:#fff}.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice__remove,.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-cyan.select2-container--focus .select2-selection--multiple,.select2-cyan .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#dedbfb}.select2-white+.select2-container--default.select2-container--focus .select2-selection--single,.select2-white+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-white.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-white .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-white .select2-search--inline .select2-search__field:focus,.select2-white .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-white .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-white .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-white .select2-results__option--highlighted,.select2-white .select2-container--default .select2-results__option--highlighted{background-color:#fff;color:#2a2e30}.select2-container--default .select2-white .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-white .select2-results__option--highlighted[aria-selected]:hover,.select2-white .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-white .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#f7f7f7;color:#2a2e30}.select2-container--default .select2-white .select2-selection--multiple:focus,.select2-white .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice,.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#fff;border-color:#f2f2f2;color:#2a2e30}.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice__remove,.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-white.select2-container--focus .select2-selection--multiple,.select2-gray+.select2-container--default.select2-container--focus .select2-selection--single,.select2-gray+.select2-container--default.select2-container--open .select2-selection--single,.select2-white .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-container--default .select2-gray.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray .select2-search--inline .select2-search__field:focus,.select2-gray .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-gray .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-gray .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-gray .select2-results__option--highlighted,.select2-gray .select2-container--default .select2-results__option--highlighted{background-color:#b8c2cc;color:#2a2e30}.select2-container--default .select2-gray .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-gray .select2-results__option--highlighted[aria-selected]:hover,.select2-gray .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-gray .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#afbac6;color:#2a2e30}.select2-container--default .select2-gray .select2-selection--multiple:focus,.select2-gray .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice,.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#b8c2cc;border-color:#a9b5c1;color:#2a2e30}.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice__remove,.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-gray.select2-container--focus .select2-selection--multiple,.select2-gray .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-gray-dark+.select2-container--default.select2-container--focus .select2-selection--single,.select2-gray-dark+.select2-container--default.select2-container--open .select2-selection--single{border-color:#5e5e5e}.select2-container--default .select2-gray-dark.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray-dark .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray-dark .select2-search--inline .select2-search__field:focus,.select2-gray-dark .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-gray-dark .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-gray-dark .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #5e5e5e}.select2-container--default .select2-gray-dark .select2-results__option--highlighted,.select2-gray-dark .select2-container--default .select2-results__option--highlighted{background-color:#1e1e1e;color:#fff}.select2-container--default .select2-gray-dark .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-gray-dark .select2-results__option--highlighted[aria-selected]:hover,.select2-gray-dark .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-gray-dark .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#161616;color:#fff}.select2-container--default .select2-gray-dark .select2-selection--multiple:focus,.select2-gray-dark .select2-container--default .select2-selection--multiple:focus{border-color:#5e5e5e}.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice,.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#1e1e1e;border-color:#111;color:#fff}.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice__remove,.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-gray-dark.select2-container--focus .select2-selection--multiple,.select2-gray-dark .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#5e5e5e}.slider .tooltip.in{opacity:.9}.slider.slider-vertical{height:100%}.slider.slider-horizontal{width:100%}.slider-primary .slider .slider-selection{background:#6d8be6}.slider-secondary .slider .slider-selection{background:#b8c2cc}.slider-success .slider .slider-selection{background:#21b978}.slider-info .slider .slider-selection{background:#4277cf}.slider-warning .slider .slider-selection{background:#dda451}.slider-danger .slider .slider-selection{background:#ea5455}.slider-light .slider .slider-selection{background:#f7f7f9}.slider-dark .slider .slider-selection{background:#22292f}.slider-lightblue .slider .slider-selection{background:#3c8dbc}.slider-navy .slider .slider-selection{background:#001f3f}.slider-olive .slider .slider-selection{background:#3d9970}.slider-lime .slider .slider-selection{background:#01ff70}.slider-fuchsia .slider .slider-selection{background:#f012be}.slider-maroon .slider .slider-selection{background:#d81b60}.slider-blue .slider .slider-selection{background:#3085d6}.slider-indigo .slider .slider-selection{background:#5c6bc6}.slider-purple .slider .slider-selection{background:#6f42c1}.slider-pink .slider .slider-selection{background:#ff8acc}.slider-red .slider .slider-selection{background:#ea5455}.slider-orange .slider .slider-selection{background:#dda451}.slider-yellow .slider .slider-selection{background:#edc30e}.slider-green .slider .slider-selection{background:#21b978}.slider-teal .slider .slider-selection{background:#20c997}.slider-cyan .slider .slider-selection{background:#7367f0}.slider-white .slider .slider-selection{background:#fff}.slider-gray .slider .slider-selection{background:#b8c2cc}.slider-gray-dark .slider .slider-selection{background:#1e1e1e}.mapael .map{position:relative}.mapael .mapTooltip{font-family:Montserrat,Helvetica,Arial,serif;font-style:normal;font-weight:400;line-height:1.45;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;border-radius:.5rem;font-size:1rem;background-color:#22292f;color:#fff;display:block;max-width:200px;padding:.25rem .5rem;position:absolute;text-align:center;word-wrap:break-word;z-index:1070}.mapael .myLegend{background-color:#babfc7;border:1px solid #adb5bd;padding:10px;width:600px}.mapael .zoomButton{background-color:#babfc7;border:1px solid #ddd;border-radius:.42rem;color:#444;cursor:pointer;font-weight:700;height:16px;left:10px;line-height:14px;padding-left:1px;position:absolute;text-align:center;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:16px}.mapael .zoomButton.hover,.mapael .zoomButton:active,.mapael .zoomButton:hover{background-color:#acb2bc;color:#2b2b2b}.mapael .zoomReset{line-height:12px;top:10px}.mapael .zoomIn{top:30px}.mapael .zoomOut{top:50px}.jqvmap-zoomin,.jqvmap-zoomout{background-color:#babfc7;border:1px solid #ddd;border-radius:.42rem;color:#444;height:15px;width:15px}.jqvmap-zoomin.hover,.jqvmap-zoomin:active,.jqvmap-zoomin:hover,.jqvmap-zoomout.hover,.jqvmap-zoomout:active,.jqvmap-zoomout:hover{background-color:#acb2bc;color:#2b2b2b}.pace{z-index:1048}.pace .pace-progress{z-index:1049}.pace .pace-activity{z-index:1050}.pace-primary .pace .pace-progress{background:#6d8be6}.pace-barber-shop-primary .pace{background:#fff}.pace-barber-shop-primary .pace .pace-progress{background:#6d8be6}.pace-barber-shop-primary .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-primary .pace .pace-progress:after{color:rgba(109,139,230,.2)}.pace-bounce-primary .pace .pace-activity{background:#6d8be6}.pace-center-atom-primary .pace-progress{height:100px;width:80px}.pace-center-atom-primary .pace-progress:before{background:#6d8be6;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-primary .pace-activity,.pace-center-atom-primary .pace-activity:after,.pace-center-atom-primary .pace-activity:before{border-color:#6d8be6}.pace-center-circle-primary .pace .pace-progress{background:rgba(109,139,230,.8);color:#fff}.pace-center-radar-primary .pace .pace-activity,.pace-center-radar-primary .pace .pace-activity:before{border-color:#6d8be6 transparent transparent}.pace-center-simple-primary .pace{background:#fff;border-color:#6d8be6}.pace-center-simple-primary .pace .pace-progress{background:#6d8be6}.pace-material-primary .pace{color:#6d8be6}.pace-corner-indicator-primary .pace .pace-activity{background:#6d8be6}.pace-corner-indicator-primary .pace .pace-activity:after,.pace-corner-indicator-primary .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-primary .pace .pace-activity:before{border-right-color:rgba(109,139,230,.2);border-left-color:rgba(109,139,230,.2)}.pace-corner-indicator-primary .pace .pace-activity:after{border-top-color:rgba(109,139,230,.2);border-bottom-color:rgba(109,139,230,.2)}.pace-fill-left-primary .pace .pace-progress{background-color:rgba(109,139,230,.2)}.pace-flash-primary .pace .pace-progress{background:#6d8be6}.pace-flash-primary .pace .pace-progress-inner{box-shadow:0 0 10px #6d8be6,0 0 5px #6d8be6}.pace-flash-primary .pace .pace-activity{border-top-color:#6d8be6;border-left-color:#6d8be6}.pace-loading-bar-primary .pace .pace-progress{background:#6d8be6;color:#6d8be6;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-primary .pace .pace-activity{box-shadow:inset 0 0 0 2px #6d8be6,inset 0 0 0 7px #fff}.pace-mac-osx-primary .pace .pace-progress{background-color:#6d8be6;box-shadow:inset -1px 0 #6d8be6,inset 0 -1px #6d8be6,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-primary .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-primary .pace-progress{color:#6d8be6}.pace-secondary .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-secondary .pace{background:#2a2e30}.pace-barber-shop-secondary .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-secondary .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-secondary .pace .pace-progress:after{color:rgba(184,194,204,.2)}.pace-bounce-secondary .pace .pace-activity{background:#b8c2cc}.pace-center-atom-secondary .pace-progress{height:100px;width:80px}.pace-center-atom-secondary .pace-progress:before{background:#b8c2cc;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-secondary .pace-activity,.pace-center-atom-secondary .pace-activity:after,.pace-center-atom-secondary .pace-activity:before{border-color:#b8c2cc}.pace-center-circle-secondary .pace .pace-progress{background:rgba(184,194,204,.8);color:#2a2e30}.pace-center-radar-secondary .pace .pace-activity,.pace-center-radar-secondary .pace .pace-activity:before{border-color:#b8c2cc transparent transparent}.pace-center-simple-secondary .pace{background:#2a2e30;border-color:#b8c2cc}.pace-center-simple-secondary .pace .pace-progress{background:#b8c2cc}.pace-material-secondary .pace{color:#b8c2cc}.pace-corner-indicator-secondary .pace .pace-activity{background:#b8c2cc}.pace-corner-indicator-secondary .pace .pace-activity:after,.pace-corner-indicator-secondary .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-secondary .pace .pace-activity:before{border-right-color:rgba(184,194,204,.2);border-left-color:rgba(184,194,204,.2)}.pace-corner-indicator-secondary .pace .pace-activity:after{border-top-color:rgba(184,194,204,.2);border-bottom-color:rgba(184,194,204,.2)}.pace-fill-left-secondary .pace .pace-progress{background-color:rgba(184,194,204,.2)}.pace-flash-secondary .pace .pace-progress{background:#b8c2cc}.pace-flash-secondary .pace .pace-progress-inner{box-shadow:0 0 10px #b8c2cc,0 0 5px #b8c2cc}.pace-flash-secondary .pace .pace-activity{border-top-color:#b8c2cc;border-left-color:#b8c2cc}.pace-loading-bar-secondary .pace .pace-progress{background:#b8c2cc;color:#b8c2cc;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-secondary .pace .pace-activity{box-shadow:inset 0 0 0 2px #b8c2cc,inset 0 0 0 7px #2a2e30}.pace-mac-osx-secondary .pace .pace-progress{background-color:#b8c2cc;box-shadow:inset -1px 0 #b8c2cc,inset 0 -1px #b8c2cc,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-secondary .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-secondary .pace-progress{color:#b8c2cc}.pace-success .pace .pace-progress{background:#21b978}.pace-barber-shop-success .pace{background:#fff}.pace-barber-shop-success .pace .pace-progress{background:#21b978}.pace-barber-shop-success .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-success .pace .pace-progress:after{color:rgba(33,185,120,.2)}.pace-bounce-success .pace .pace-activity{background:#21b978}.pace-center-atom-success .pace-progress{height:100px;width:80px}.pace-center-atom-success .pace-progress:before{background:#21b978;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-success .pace-activity,.pace-center-atom-success .pace-activity:after,.pace-center-atom-success .pace-activity:before{border-color:#21b978}.pace-center-circle-success .pace .pace-progress{background:rgba(33,185,120,.8);color:#fff}.pace-center-radar-success .pace .pace-activity,.pace-center-radar-success .pace .pace-activity:before{border-color:#21b978 transparent transparent}.pace-center-simple-success .pace{background:#fff;border-color:#21b978}.pace-center-simple-success .pace .pace-progress{background:#21b978}.pace-material-success .pace{color:#21b978}.pace-corner-indicator-success .pace .pace-activity{background:#21b978}.pace-corner-indicator-success .pace .pace-activity:after,.pace-corner-indicator-success .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-success .pace .pace-activity:before{border-right-color:rgba(33,185,120,.2);border-left-color:rgba(33,185,120,.2)}.pace-corner-indicator-success .pace .pace-activity:after{border-top-color:rgba(33,185,120,.2);border-bottom-color:rgba(33,185,120,.2)}.pace-fill-left-success .pace .pace-progress{background-color:rgba(33,185,120,.2)}.pace-flash-success .pace .pace-progress{background:#21b978}.pace-flash-success .pace .pace-progress-inner{box-shadow:0 0 10px #21b978,0 0 5px #21b978}.pace-flash-success .pace .pace-activity{border-top-color:#21b978;border-left-color:#21b978}.pace-loading-bar-success .pace .pace-progress{background:#21b978;color:#21b978;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-success .pace .pace-activity{box-shadow:inset 0 0 0 2px #21b978,inset 0 0 0 7px #fff}.pace-mac-osx-success .pace .pace-progress{background-color:#21b978;box-shadow:inset -1px 0 #21b978,inset 0 -1px #21b978,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-success .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-success .pace-progress{color:#21b978}.pace-info .pace .pace-progress{background:#4277cf}.pace-barber-shop-info .pace{background:#fff}.pace-barber-shop-info .pace .pace-progress{background:#4277cf}.pace-barber-shop-info .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-info .pace .pace-progress:after{color:rgba(66,119,207,.2)}.pace-bounce-info .pace .pace-activity{background:#4277cf}.pace-center-atom-info .pace-progress{height:100px;width:80px}.pace-center-atom-info .pace-progress:before{background:#4277cf;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-info .pace-activity,.pace-center-atom-info .pace-activity:after,.pace-center-atom-info .pace-activity:before{border-color:#4277cf}.pace-center-circle-info .pace .pace-progress{background:rgba(66,119,207,.8);color:#fff}.pace-center-radar-info .pace .pace-activity,.pace-center-radar-info .pace .pace-activity:before{border-color:#4277cf transparent transparent}.pace-center-simple-info .pace{background:#fff;border-color:#4277cf}.pace-center-simple-info .pace .pace-progress{background:#4277cf}.pace-material-info .pace{color:#4277cf}.pace-corner-indicator-info .pace .pace-activity{background:#4277cf}.pace-corner-indicator-info .pace .pace-activity:after,.pace-corner-indicator-info .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-info .pace .pace-activity:before{border-right-color:rgba(66,119,207,.2);border-left-color:rgba(66,119,207,.2)}.pace-corner-indicator-info .pace .pace-activity:after{border-top-color:rgba(66,119,207,.2);border-bottom-color:rgba(66,119,207,.2)}.pace-fill-left-info .pace .pace-progress{background-color:rgba(66,119,207,.2)}.pace-flash-info .pace .pace-progress{background:#4277cf}.pace-flash-info .pace .pace-progress-inner{box-shadow:0 0 10px #4277cf,0 0 5px #4277cf}.pace-flash-info .pace .pace-activity{border-top-color:#4277cf;border-left-color:#4277cf}.pace-loading-bar-info .pace .pace-progress{background:#4277cf;color:#4277cf;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-info .pace .pace-activity{box-shadow:inset 0 0 0 2px #4277cf,inset 0 0 0 7px #fff}.pace-mac-osx-info .pace .pace-progress{background-color:#4277cf;box-shadow:inset -1px 0 #4277cf,inset 0 -1px #4277cf,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-info .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-info .pace-progress{color:#4277cf}.pace-warning .pace .pace-progress{background:#dda451}.pace-barber-shop-warning .pace{background:#2a2e30}.pace-barber-shop-warning .pace .pace-progress{background:#dda451}.pace-barber-shop-warning .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-warning .pace .pace-progress:after{color:rgba(221,164,81,.2)}.pace-bounce-warning .pace .pace-activity{background:#dda451}.pace-center-atom-warning .pace-progress{height:100px;width:80px}.pace-center-atom-warning .pace-progress:before{background:#dda451;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-warning .pace-activity,.pace-center-atom-warning .pace-activity:after,.pace-center-atom-warning .pace-activity:before{border-color:#dda451}.pace-center-circle-warning .pace .pace-progress{background:rgba(221,164,81,.8);color:#2a2e30}.pace-center-radar-warning .pace .pace-activity,.pace-center-radar-warning .pace .pace-activity:before{border-color:#dda451 transparent transparent}.pace-center-simple-warning .pace{background:#2a2e30;border-color:#dda451}.pace-center-simple-warning .pace .pace-progress{background:#dda451}.pace-material-warning .pace{color:#dda451}.pace-corner-indicator-warning .pace .pace-activity{background:#dda451}.pace-corner-indicator-warning .pace .pace-activity:after,.pace-corner-indicator-warning .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-warning .pace .pace-activity:before{border-right-color:rgba(221,164,81,.2);border-left-color:rgba(221,164,81,.2)}.pace-corner-indicator-warning .pace .pace-activity:after{border-top-color:rgba(221,164,81,.2);border-bottom-color:rgba(221,164,81,.2)}.pace-fill-left-warning .pace .pace-progress{background-color:rgba(221,164,81,.2)}.pace-flash-warning .pace .pace-progress{background:#dda451}.pace-flash-warning .pace .pace-progress-inner{box-shadow:0 0 10px #dda451,0 0 5px #dda451}.pace-flash-warning .pace .pace-activity{border-top-color:#dda451;border-left-color:#dda451}.pace-loading-bar-warning .pace .pace-progress{background:#dda451;color:#dda451;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-warning .pace .pace-activity{box-shadow:inset 0 0 0 2px #dda451,inset 0 0 0 7px #2a2e30}.pace-mac-osx-warning .pace .pace-progress{background-color:#dda451;box-shadow:inset -1px 0 #dda451,inset 0 -1px #dda451,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-warning .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-warning .pace-progress{color:#dda451}.pace-danger .pace .pace-progress{background:#ea5455}.pace-barber-shop-danger .pace{background:#fff}.pace-barber-shop-danger .pace .pace-progress{background:#ea5455}.pace-barber-shop-danger .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-danger .pace .pace-progress:after{color:rgba(234,84,85,.2)}.pace-bounce-danger .pace .pace-activity{background:#ea5455}.pace-center-atom-danger .pace-progress{height:100px;width:80px}.pace-center-atom-danger .pace-progress:before{background:#ea5455;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-danger .pace-activity,.pace-center-atom-danger .pace-activity:after,.pace-center-atom-danger .pace-activity:before{border-color:#ea5455}.pace-center-circle-danger .pace .pace-progress{background:rgba(234,84,85,.8);color:#fff}.pace-center-radar-danger .pace .pace-activity,.pace-center-radar-danger .pace .pace-activity:before{border-color:#ea5455 transparent transparent}.pace-center-simple-danger .pace{background:#fff;border-color:#ea5455}.pace-center-simple-danger .pace .pace-progress{background:#ea5455}.pace-material-danger .pace{color:#ea5455}.pace-corner-indicator-danger .pace .pace-activity{background:#ea5455}.pace-corner-indicator-danger .pace .pace-activity:after,.pace-corner-indicator-danger .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-danger .pace .pace-activity:before{border-right-color:rgba(234,84,85,.2);border-left-color:rgba(234,84,85,.2)}.pace-corner-indicator-danger .pace .pace-activity:after{border-top-color:rgba(234,84,85,.2);border-bottom-color:rgba(234,84,85,.2)}.pace-fill-left-danger .pace .pace-progress{background-color:rgba(234,84,85,.2)}.pace-flash-danger .pace .pace-progress{background:#ea5455}.pace-flash-danger .pace .pace-progress-inner{box-shadow:0 0 10px #ea5455,0 0 5px #ea5455}.pace-flash-danger .pace .pace-activity{border-top-color:#ea5455;border-left-color:#ea5455}.pace-loading-bar-danger .pace .pace-progress{background:#ea5455;color:#ea5455;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-danger .pace .pace-activity{box-shadow:inset 0 0 0 2px #ea5455,inset 0 0 0 7px #fff}.pace-mac-osx-danger .pace .pace-progress{background-color:#ea5455;box-shadow:inset -1px 0 #ea5455,inset 0 -1px #ea5455,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-danger .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-danger .pace-progress{color:#ea5455}.pace-light .pace .pace-progress{background:#f7f7f9}.pace-barber-shop-light .pace{background:#2a2e30}.pace-barber-shop-light .pace .pace-progress{background:#f7f7f9}.pace-barber-shop-light .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-light .pace .pace-progress:after{color:rgba(247,247,249,.2)}.pace-bounce-light .pace .pace-activity{background:#f7f7f9}.pace-center-atom-light .pace-progress{height:100px;width:80px}.pace-center-atom-light .pace-progress:before{background:#f7f7f9;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-light .pace-activity,.pace-center-atom-light .pace-activity:after,.pace-center-atom-light .pace-activity:before{border-color:#f7f7f9}.pace-center-circle-light .pace .pace-progress{background:rgba(247,247,249,.8);color:#2a2e30}.pace-center-radar-light .pace .pace-activity,.pace-center-radar-light .pace .pace-activity:before{border-color:#f7f7f9 transparent transparent}.pace-center-simple-light .pace{background:#2a2e30;border-color:#f7f7f9}.pace-center-simple-light .pace .pace-progress{background:#f7f7f9}.pace-material-light .pace{color:#f7f7f9}.pace-corner-indicator-light .pace .pace-activity{background:#f7f7f9}.pace-corner-indicator-light .pace .pace-activity:after,.pace-corner-indicator-light .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-light .pace .pace-activity:before{border-right-color:rgba(247,247,249,.2);border-left-color:rgba(247,247,249,.2)}.pace-corner-indicator-light .pace .pace-activity:after{border-top-color:rgba(247,247,249,.2);border-bottom-color:rgba(247,247,249,.2)}.pace-fill-left-light .pace .pace-progress{background-color:rgba(247,247,249,.2)}.pace-flash-light .pace .pace-progress{background:#f7f7f9}.pace-flash-light .pace .pace-progress-inner{box-shadow:0 0 10px #f7f7f9,0 0 5px #f7f7f9}.pace-flash-light .pace .pace-activity{border-top-color:#f7f7f9;border-left-color:#f7f7f9}.pace-loading-bar-light .pace .pace-progress{background:#f7f7f9;color:#f7f7f9;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-light .pace .pace-activity{box-shadow:inset 0 0 0 2px #f7f7f9,inset 0 0 0 7px #2a2e30}.pace-mac-osx-light .pace .pace-progress{background-color:#f7f7f9;box-shadow:inset -1px 0 #f7f7f9,inset 0 -1px #f7f7f9,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-light .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-light .pace-progress{color:#f7f7f9}.pace-dark .pace .pace-progress{background:#22292f}.pace-barber-shop-dark .pace{background:#fff}.pace-barber-shop-dark .pace .pace-progress{background:#22292f}.pace-barber-shop-dark .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-dark .pace .pace-progress:after{color:rgba(34,41,47,.2)}.pace-bounce-dark .pace .pace-activity{background:#22292f}.pace-center-atom-dark .pace-progress{height:100px;width:80px}.pace-center-atom-dark .pace-progress:before{background:#22292f;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-dark .pace-activity,.pace-center-atom-dark .pace-activity:after,.pace-center-atom-dark .pace-activity:before{border-color:#22292f}.pace-center-circle-dark .pace .pace-progress{background:rgba(34,41,47,.8);color:#fff}.pace-center-radar-dark .pace .pace-activity,.pace-center-radar-dark .pace .pace-activity:before{border-color:#22292f transparent transparent}.pace-center-simple-dark .pace{background:#fff;border-color:#22292f}.pace-center-simple-dark .pace .pace-progress{background:#22292f}.pace-material-dark .pace{color:#22292f}.pace-corner-indicator-dark .pace .pace-activity{background:#22292f}.pace-corner-indicator-dark .pace .pace-activity:after,.pace-corner-indicator-dark .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-dark .pace .pace-activity:before{border-right-color:rgba(34,41,47,.2);border-left-color:rgba(34,41,47,.2)}.pace-corner-indicator-dark .pace .pace-activity:after{border-top-color:rgba(34,41,47,.2);border-bottom-color:rgba(34,41,47,.2)}.pace-fill-left-dark .pace .pace-progress{background-color:rgba(34,41,47,.2)}.pace-flash-dark .pace .pace-progress{background:#22292f}.pace-flash-dark .pace .pace-progress-inner{box-shadow:0 0 10px #22292f,0 0 5px #22292f}.pace-flash-dark .pace .pace-activity{border-top-color:#22292f;border-left-color:#22292f}.pace-loading-bar-dark .pace .pace-progress{background:#22292f;color:#22292f;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-dark .pace .pace-activity{box-shadow:inset 0 0 0 2px #22292f,inset 0 0 0 7px #fff}.pace-mac-osx-dark .pace .pace-progress{background-color:#22292f;box-shadow:inset -1px 0 #22292f,inset 0 -1px #22292f,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-dark .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-dark .pace-progress{color:#22292f}.pace-lightblue .pace .pace-progress{background:#3c8dbc}.pace-barber-shop-lightblue .pace{background:#fff}.pace-barber-shop-lightblue .pace .pace-progress{background:#3c8dbc}.pace-barber-shop-lightblue .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-lightblue .pace .pace-progress:after{color:rgba(60,141,188,.2)}.pace-bounce-lightblue .pace .pace-activity{background:#3c8dbc}.pace-center-atom-lightblue .pace-progress{height:100px;width:80px}.pace-center-atom-lightblue .pace-progress:before{background:#3c8dbc;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-lightblue .pace-activity,.pace-center-atom-lightblue .pace-activity:after,.pace-center-atom-lightblue .pace-activity:before{border-color:#3c8dbc}.pace-center-circle-lightblue .pace .pace-progress{background:rgba(60,141,188,.8);color:#fff}.pace-center-radar-lightblue .pace .pace-activity,.pace-center-radar-lightblue .pace .pace-activity:before{border-color:#3c8dbc transparent transparent}.pace-center-simple-lightblue .pace{background:#fff;border-color:#3c8dbc}.pace-center-simple-lightblue .pace .pace-progress{background:#3c8dbc}.pace-material-lightblue .pace{color:#3c8dbc}.pace-corner-indicator-lightblue .pace .pace-activity{background:#3c8dbc}.pace-corner-indicator-lightblue .pace .pace-activity:after,.pace-corner-indicator-lightblue .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-lightblue .pace .pace-activity:before{border-right-color:rgba(60,141,188,.2);border-left-color:rgba(60,141,188,.2)}.pace-corner-indicator-lightblue .pace .pace-activity:after{border-top-color:rgba(60,141,188,.2);border-bottom-color:rgba(60,141,188,.2)}.pace-fill-left-lightblue .pace .pace-progress{background-color:rgba(60,141,188,.2)}.pace-flash-lightblue .pace .pace-progress{background:#3c8dbc}.pace-flash-lightblue .pace .pace-progress-inner{box-shadow:0 0 10px #3c8dbc,0 0 5px #3c8dbc}.pace-flash-lightblue .pace .pace-activity{border-top-color:#3c8dbc;border-left-color:#3c8dbc}.pace-loading-bar-lightblue .pace .pace-progress{background:#3c8dbc;color:#3c8dbc;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-lightblue .pace .pace-activity{box-shadow:inset 0 0 0 2px #3c8dbc,inset 0 0 0 7px #fff}.pace-mac-osx-lightblue .pace .pace-progress{background-color:#3c8dbc;box-shadow:inset -1px 0 #3c8dbc,inset 0 -1px #3c8dbc,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-lightblue .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-lightblue .pace-progress{color:#3c8dbc}.pace-navy .pace .pace-progress{background:#001f3f}.pace-barber-shop-navy .pace{background:#fff}.pace-barber-shop-navy .pace .pace-progress{background:#001f3f}.pace-barber-shop-navy .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-navy .pace .pace-progress:after{color:rgba(0,31,63,.2)}.pace-bounce-navy .pace .pace-activity{background:#001f3f}.pace-center-atom-navy .pace-progress{height:100px;width:80px}.pace-center-atom-navy .pace-progress:before{background:#001f3f;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-navy .pace-activity,.pace-center-atom-navy .pace-activity:after,.pace-center-atom-navy .pace-activity:before{border-color:#001f3f}.pace-center-circle-navy .pace .pace-progress{background:rgba(0,31,63,.8);color:#fff}.pace-center-radar-navy .pace .pace-activity,.pace-center-radar-navy .pace .pace-activity:before{border-color:#001f3f transparent transparent}.pace-center-simple-navy .pace{background:#fff;border-color:#001f3f}.pace-center-simple-navy .pace .pace-progress{background:#001f3f}.pace-material-navy .pace{color:#001f3f}.pace-corner-indicator-navy .pace .pace-activity{background:#001f3f}.pace-corner-indicator-navy .pace .pace-activity:after,.pace-corner-indicator-navy .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-navy .pace .pace-activity:before{border-right-color:rgba(0,31,63,.2);border-left-color:rgba(0,31,63,.2)}.pace-corner-indicator-navy .pace .pace-activity:after{border-top-color:rgba(0,31,63,.2);border-bottom-color:rgba(0,31,63,.2)}.pace-fill-left-navy .pace .pace-progress{background-color:rgba(0,31,63,.2)}.pace-flash-navy .pace .pace-progress{background:#001f3f}.pace-flash-navy .pace .pace-progress-inner{box-shadow:0 0 10px #001f3f,0 0 5px #001f3f}.pace-flash-navy .pace .pace-activity{border-top-color:#001f3f;border-left-color:#001f3f}.pace-loading-bar-navy .pace .pace-progress{background:#001f3f;color:#001f3f;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-navy .pace .pace-activity{box-shadow:inset 0 0 0 2px #001f3f,inset 0 0 0 7px #fff}.pace-mac-osx-navy .pace .pace-progress{background-color:#001f3f;box-shadow:inset -1px 0 #001f3f,inset 0 -1px #001f3f,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-navy .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-navy .pace-progress{color:#001f3f}.pace-olive .pace .pace-progress{background:#3d9970}.pace-barber-shop-olive .pace{background:#fff}.pace-barber-shop-olive .pace .pace-progress{background:#3d9970}.pace-barber-shop-olive .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-olive .pace .pace-progress:after{color:rgba(61,153,112,.2)}.pace-bounce-olive .pace .pace-activity{background:#3d9970}.pace-center-atom-olive .pace-progress{height:100px;width:80px}.pace-center-atom-olive .pace-progress:before{background:#3d9970;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-olive .pace-activity,.pace-center-atom-olive .pace-activity:after,.pace-center-atom-olive .pace-activity:before{border-color:#3d9970}.pace-center-circle-olive .pace .pace-progress{background:rgba(61,153,112,.8);color:#fff}.pace-center-radar-olive .pace .pace-activity,.pace-center-radar-olive .pace .pace-activity:before{border-color:#3d9970 transparent transparent}.pace-center-simple-olive .pace{background:#fff;border-color:#3d9970}.pace-center-simple-olive .pace .pace-progress{background:#3d9970}.pace-material-olive .pace{color:#3d9970}.pace-corner-indicator-olive .pace .pace-activity{background:#3d9970}.pace-corner-indicator-olive .pace .pace-activity:after,.pace-corner-indicator-olive .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-olive .pace .pace-activity:before{border-right-color:rgba(61,153,112,.2);border-left-color:rgba(61,153,112,.2)}.pace-corner-indicator-olive .pace .pace-activity:after{border-top-color:rgba(61,153,112,.2);border-bottom-color:rgba(61,153,112,.2)}.pace-fill-left-olive .pace .pace-progress{background-color:rgba(61,153,112,.2)}.pace-flash-olive .pace .pace-progress{background:#3d9970}.pace-flash-olive .pace .pace-progress-inner{box-shadow:0 0 10px #3d9970,0 0 5px #3d9970}.pace-flash-olive .pace .pace-activity{border-top-color:#3d9970;border-left-color:#3d9970}.pace-loading-bar-olive .pace .pace-progress{background:#3d9970;color:#3d9970;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-olive .pace .pace-activity{box-shadow:inset 0 0 0 2px #3d9970,inset 0 0 0 7px #fff}.pace-mac-osx-olive .pace .pace-progress{background-color:#3d9970;box-shadow:inset -1px 0 #3d9970,inset 0 -1px #3d9970,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-olive .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-olive .pace-progress{color:#3d9970}.pace-lime .pace .pace-progress{background:#01ff70}.pace-barber-shop-lime .pace{background:#2a2e30}.pace-barber-shop-lime .pace .pace-progress{background:#01ff70}.pace-barber-shop-lime .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-lime .pace .pace-progress:after{color:rgba(1,255,112,.2)}.pace-bounce-lime .pace .pace-activity{background:#01ff70}.pace-center-atom-lime .pace-progress{height:100px;width:80px}.pace-center-atom-lime .pace-progress:before{background:#01ff70;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-lime .pace-activity,.pace-center-atom-lime .pace-activity:after,.pace-center-atom-lime .pace-activity:before{border-color:#01ff70}.pace-center-circle-lime .pace .pace-progress{background:rgba(1,255,112,.8);color:#2a2e30}.pace-center-radar-lime .pace .pace-activity,.pace-center-radar-lime .pace .pace-activity:before{border-color:#01ff70 transparent transparent}.pace-center-simple-lime .pace{background:#2a2e30;border-color:#01ff70}.pace-center-simple-lime .pace .pace-progress{background:#01ff70}.pace-material-lime .pace{color:#01ff70}.pace-corner-indicator-lime .pace .pace-activity{background:#01ff70}.pace-corner-indicator-lime .pace .pace-activity:after,.pace-corner-indicator-lime .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-lime .pace .pace-activity:before{border-right-color:rgba(1,255,112,.2);border-left-color:rgba(1,255,112,.2)}.pace-corner-indicator-lime .pace .pace-activity:after{border-top-color:rgba(1,255,112,.2);border-bottom-color:rgba(1,255,112,.2)}.pace-fill-left-lime .pace .pace-progress{background-color:rgba(1,255,112,.2)}.pace-flash-lime .pace .pace-progress{background:#01ff70}.pace-flash-lime .pace .pace-progress-inner{box-shadow:0 0 10px #01ff70,0 0 5px #01ff70}.pace-flash-lime .pace .pace-activity{border-top-color:#01ff70;border-left-color:#01ff70}.pace-loading-bar-lime .pace .pace-progress{background:#01ff70;color:#01ff70;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-lime .pace .pace-activity{box-shadow:inset 0 0 0 2px #01ff70,inset 0 0 0 7px #2a2e30}.pace-mac-osx-lime .pace .pace-progress{background-color:#01ff70;box-shadow:inset -1px 0 #01ff70,inset 0 -1px #01ff70,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-lime .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-lime .pace-progress{color:#01ff70}.pace-fuchsia .pace .pace-progress{background:#f012be}.pace-barber-shop-fuchsia .pace{background:#fff}.pace-barber-shop-fuchsia .pace .pace-progress{background:#f012be}.pace-barber-shop-fuchsia .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-fuchsia .pace .pace-progress:after{color:rgba(240,18,190,.2)}.pace-bounce-fuchsia .pace .pace-activity{background:#f012be}.pace-center-atom-fuchsia .pace-progress{height:100px;width:80px}.pace-center-atom-fuchsia .pace-progress:before{background:#f012be;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-fuchsia .pace-activity,.pace-center-atom-fuchsia .pace-activity:after,.pace-center-atom-fuchsia .pace-activity:before{border-color:#f012be}.pace-center-circle-fuchsia .pace .pace-progress{background:rgba(240,18,190,.8);color:#fff}.pace-center-radar-fuchsia .pace .pace-activity,.pace-center-radar-fuchsia .pace .pace-activity:before{border-color:#f012be transparent transparent}.pace-center-simple-fuchsia .pace{background:#fff;border-color:#f012be}.pace-center-simple-fuchsia .pace .pace-progress{background:#f012be}.pace-material-fuchsia .pace{color:#f012be}.pace-corner-indicator-fuchsia .pace .pace-activity{background:#f012be}.pace-corner-indicator-fuchsia .pace .pace-activity:after,.pace-corner-indicator-fuchsia .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-fuchsia .pace .pace-activity:before{border-right-color:rgba(240,18,190,.2);border-left-color:rgba(240,18,190,.2)}.pace-corner-indicator-fuchsia .pace .pace-activity:after{border-top-color:rgba(240,18,190,.2);border-bottom-color:rgba(240,18,190,.2)}.pace-fill-left-fuchsia .pace .pace-progress{background-color:rgba(240,18,190,.2)}.pace-flash-fuchsia .pace .pace-progress{background:#f012be}.pace-flash-fuchsia .pace .pace-progress-inner{box-shadow:0 0 10px #f012be,0 0 5px #f012be}.pace-flash-fuchsia .pace .pace-activity{border-top-color:#f012be;border-left-color:#f012be}.pace-loading-bar-fuchsia .pace .pace-progress{background:#f012be;color:#f012be;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-fuchsia .pace .pace-activity{box-shadow:inset 0 0 0 2px #f012be,inset 0 0 0 7px #fff}.pace-mac-osx-fuchsia .pace .pace-progress{background-color:#f012be;box-shadow:inset -1px 0 #f012be,inset 0 -1px #f012be,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-fuchsia .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-fuchsia .pace-progress{color:#f012be}.pace-maroon .pace .pace-progress{background:#d81b60}.pace-barber-shop-maroon .pace{background:#fff}.pace-barber-shop-maroon .pace .pace-progress{background:#d81b60}.pace-barber-shop-maroon .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-maroon .pace .pace-progress:after{color:rgba(216,27,96,.2)}.pace-bounce-maroon .pace .pace-activity{background:#d81b60}.pace-center-atom-maroon .pace-progress{height:100px;width:80px}.pace-center-atom-maroon .pace-progress:before{background:#d81b60;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-maroon .pace-activity,.pace-center-atom-maroon .pace-activity:after,.pace-center-atom-maroon .pace-activity:before{border-color:#d81b60}.pace-center-circle-maroon .pace .pace-progress{background:rgba(216,27,96,.8);color:#fff}.pace-center-radar-maroon .pace .pace-activity,.pace-center-radar-maroon .pace .pace-activity:before{border-color:#d81b60 transparent transparent}.pace-center-simple-maroon .pace{background:#fff;border-color:#d81b60}.pace-center-simple-maroon .pace .pace-progress{background:#d81b60}.pace-material-maroon .pace{color:#d81b60}.pace-corner-indicator-maroon .pace .pace-activity{background:#d81b60}.pace-corner-indicator-maroon .pace .pace-activity:after,.pace-corner-indicator-maroon .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-maroon .pace .pace-activity:before{border-right-color:rgba(216,27,96,.2);border-left-color:rgba(216,27,96,.2)}.pace-corner-indicator-maroon .pace .pace-activity:after{border-top-color:rgba(216,27,96,.2);border-bottom-color:rgba(216,27,96,.2)}.pace-fill-left-maroon .pace .pace-progress{background-color:rgba(216,27,96,.2)}.pace-flash-maroon .pace .pace-progress{background:#d81b60}.pace-flash-maroon .pace .pace-progress-inner{box-shadow:0 0 10px #d81b60,0 0 5px #d81b60}.pace-flash-maroon .pace .pace-activity{border-top-color:#d81b60;border-left-color:#d81b60}.pace-loading-bar-maroon .pace .pace-progress{background:#d81b60;color:#d81b60;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-maroon .pace .pace-activity{box-shadow:inset 0 0 0 2px #d81b60,inset 0 0 0 7px #fff}.pace-mac-osx-maroon .pace .pace-progress{background-color:#d81b60;box-shadow:inset -1px 0 #d81b60,inset 0 -1px #d81b60,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-maroon .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-maroon .pace-progress{color:#d81b60}.pace-blue .pace .pace-progress{background:#3085d6}.pace-barber-shop-blue .pace{background:#fff}.pace-barber-shop-blue .pace .pace-progress{background:#3085d6}.pace-barber-shop-blue .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-blue .pace .pace-progress:after{color:rgba(48,133,214,.2)}.pace-bounce-blue .pace .pace-activity{background:#3085d6}.pace-center-atom-blue .pace-progress{height:100px;width:80px}.pace-center-atom-blue .pace-progress:before{background:#3085d6;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-blue .pace-activity,.pace-center-atom-blue .pace-activity:after,.pace-center-atom-blue .pace-activity:before{border-color:#3085d6}.pace-center-circle-blue .pace .pace-progress{background:rgba(48,133,214,.8);color:#fff}.pace-center-radar-blue .pace .pace-activity,.pace-center-radar-blue .pace .pace-activity:before{border-color:#3085d6 transparent transparent}.pace-center-simple-blue .pace{background:#fff;border-color:#3085d6}.pace-center-simple-blue .pace .pace-progress{background:#3085d6}.pace-material-blue .pace{color:#3085d6}.pace-corner-indicator-blue .pace .pace-activity{background:#3085d6}.pace-corner-indicator-blue .pace .pace-activity:after,.pace-corner-indicator-blue .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-blue .pace .pace-activity:before{border-right-color:rgba(48,133,214,.2);border-left-color:rgba(48,133,214,.2)}.pace-corner-indicator-blue .pace .pace-activity:after{border-top-color:rgba(48,133,214,.2);border-bottom-color:rgba(48,133,214,.2)}.pace-fill-left-blue .pace .pace-progress{background-color:rgba(48,133,214,.2)}.pace-flash-blue .pace .pace-progress{background:#3085d6}.pace-flash-blue .pace .pace-progress-inner{box-shadow:0 0 10px #3085d6,0 0 5px #3085d6}.pace-flash-blue .pace .pace-activity{border-top-color:#3085d6;border-left-color:#3085d6}.pace-loading-bar-blue .pace .pace-progress{background:#3085d6;color:#3085d6;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-blue .pace .pace-activity{box-shadow:inset 0 0 0 2px #3085d6,inset 0 0 0 7px #fff}.pace-mac-osx-blue .pace .pace-progress{background-color:#3085d6;box-shadow:inset -1px 0 #3085d6,inset 0 -1px #3085d6,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-blue .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-blue .pace-progress{color:#3085d6}.pace-indigo .pace .pace-progress{background:#5c6bc6}.pace-barber-shop-indigo .pace{background:#fff}.pace-barber-shop-indigo .pace .pace-progress{background:#5c6bc6}.pace-barber-shop-indigo .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-indigo .pace .pace-progress:after{color:rgba(92,107,198,.2)}.pace-bounce-indigo .pace .pace-activity{background:#5c6bc6}.pace-center-atom-indigo .pace-progress{height:100px;width:80px}.pace-center-atom-indigo .pace-progress:before{background:#5c6bc6;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-indigo .pace-activity,.pace-center-atom-indigo .pace-activity:after,.pace-center-atom-indigo .pace-activity:before{border-color:#5c6bc6}.pace-center-circle-indigo .pace .pace-progress{background:rgba(92,107,198,.8);color:#fff}.pace-center-radar-indigo .pace .pace-activity,.pace-center-radar-indigo .pace .pace-activity:before{border-color:#5c6bc6 transparent transparent}.pace-center-simple-indigo .pace{background:#fff;border-color:#5c6bc6}.pace-center-simple-indigo .pace .pace-progress{background:#5c6bc6}.pace-material-indigo .pace{color:#5c6bc6}.pace-corner-indicator-indigo .pace .pace-activity{background:#5c6bc6}.pace-corner-indicator-indigo .pace .pace-activity:after,.pace-corner-indicator-indigo .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-indigo .pace .pace-activity:before{border-right-color:rgba(92,107,198,.2);border-left-color:rgba(92,107,198,.2)}.pace-corner-indicator-indigo .pace .pace-activity:after{border-top-color:rgba(92,107,198,.2);border-bottom-color:rgba(92,107,198,.2)}.pace-fill-left-indigo .pace .pace-progress{background-color:rgba(92,107,198,.2)}.pace-flash-indigo .pace .pace-progress{background:#5c6bc6}.pace-flash-indigo .pace .pace-progress-inner{box-shadow:0 0 10px #5c6bc6,0 0 5px #5c6bc6}.pace-flash-indigo .pace .pace-activity{border-top-color:#5c6bc6;border-left-color:#5c6bc6}.pace-loading-bar-indigo .pace .pace-progress{background:#5c6bc6;color:#5c6bc6;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-indigo .pace .pace-activity{box-shadow:inset 0 0 0 2px #5c6bc6,inset 0 0 0 7px #fff}.pace-mac-osx-indigo .pace .pace-progress{background-color:#5c6bc6;box-shadow:inset -1px 0 #5c6bc6,inset 0 -1px #5c6bc6,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-indigo .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-indigo .pace-progress{color:#5c6bc6}.pace-purple .pace .pace-progress{background:#6f42c1}.pace-barber-shop-purple .pace{background:#fff}.pace-barber-shop-purple .pace .pace-progress{background:#6f42c1}.pace-barber-shop-purple .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-purple .pace .pace-progress:after{color:rgba(111,66,193,.2)}.pace-bounce-purple .pace .pace-activity{background:#6f42c1}.pace-center-atom-purple .pace-progress{height:100px;width:80px}.pace-center-atom-purple .pace-progress:before{background:#6f42c1;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-purple .pace-activity,.pace-center-atom-purple .pace-activity:after,.pace-center-atom-purple .pace-activity:before{border-color:#6f42c1}.pace-center-circle-purple .pace .pace-progress{background:rgba(111,66,193,.8);color:#fff}.pace-center-radar-purple .pace .pace-activity,.pace-center-radar-purple .pace .pace-activity:before{border-color:#6f42c1 transparent transparent}.pace-center-simple-purple .pace{background:#fff;border-color:#6f42c1}.pace-center-simple-purple .pace .pace-progress{background:#6f42c1}.pace-material-purple .pace{color:#6f42c1}.pace-corner-indicator-purple .pace .pace-activity{background:#6f42c1}.pace-corner-indicator-purple .pace .pace-activity:after,.pace-corner-indicator-purple .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-purple .pace .pace-activity:before{border-right-color:rgba(111,66,193,.2);border-left-color:rgba(111,66,193,.2)}.pace-corner-indicator-purple .pace .pace-activity:after{border-top-color:rgba(111,66,193,.2);border-bottom-color:rgba(111,66,193,.2)}.pace-fill-left-purple .pace .pace-progress{background-color:rgba(111,66,193,.2)}.pace-flash-purple .pace .pace-progress{background:#6f42c1}.pace-flash-purple .pace .pace-progress-inner{box-shadow:0 0 10px #6f42c1,0 0 5px #6f42c1}.pace-flash-purple .pace .pace-activity{border-top-color:#6f42c1;border-left-color:#6f42c1}.pace-loading-bar-purple .pace .pace-progress{background:#6f42c1;color:#6f42c1;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-purple .pace .pace-activity{box-shadow:inset 0 0 0 2px #6f42c1,inset 0 0 0 7px #fff}.pace-mac-osx-purple .pace .pace-progress{background-color:#6f42c1;box-shadow:inset -1px 0 #6f42c1,inset 0 -1px #6f42c1,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-purple .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-purple .pace-progress{color:#6f42c1}.pace-pink .pace .pace-progress{background:#ff8acc}.pace-barber-shop-pink .pace{background:#2a2e30}.pace-barber-shop-pink .pace .pace-progress{background:#ff8acc}.pace-barber-shop-pink .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-pink .pace .pace-progress:after{color:rgba(255,138,204,.2)}.pace-bounce-pink .pace .pace-activity{background:#ff8acc}.pace-center-atom-pink .pace-progress{height:100px;width:80px}.pace-center-atom-pink .pace-progress:before{background:#ff8acc;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-pink .pace-activity,.pace-center-atom-pink .pace-activity:after,.pace-center-atom-pink .pace-activity:before{border-color:#ff8acc}.pace-center-circle-pink .pace .pace-progress{background:rgba(255,138,204,.8);color:#2a2e30}.pace-center-radar-pink .pace .pace-activity,.pace-center-radar-pink .pace .pace-activity:before{border-color:#ff8acc transparent transparent}.pace-center-simple-pink .pace{background:#2a2e30;border-color:#ff8acc}.pace-center-simple-pink .pace .pace-progress{background:#ff8acc}.pace-material-pink .pace{color:#ff8acc}.pace-corner-indicator-pink .pace .pace-activity{background:#ff8acc}.pace-corner-indicator-pink .pace .pace-activity:after,.pace-corner-indicator-pink .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-pink .pace .pace-activity:before{border-right-color:rgba(255,138,204,.2);border-left-color:rgba(255,138,204,.2)}.pace-corner-indicator-pink .pace .pace-activity:after{border-top-color:rgba(255,138,204,.2);border-bottom-color:rgba(255,138,204,.2)}.pace-fill-left-pink .pace .pace-progress{background-color:rgba(255,138,204,.2)}.pace-flash-pink .pace .pace-progress{background:#ff8acc}.pace-flash-pink .pace .pace-progress-inner{box-shadow:0 0 10px #ff8acc,0 0 5px #ff8acc}.pace-flash-pink .pace .pace-activity{border-top-color:#ff8acc;border-left-color:#ff8acc}.pace-loading-bar-pink .pace .pace-progress{background:#ff8acc;color:#ff8acc;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-pink .pace .pace-activity{box-shadow:inset 0 0 0 2px #ff8acc,inset 0 0 0 7px #2a2e30}.pace-mac-osx-pink .pace .pace-progress{background-color:#ff8acc;box-shadow:inset -1px 0 #ff8acc,inset 0 -1px #ff8acc,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-pink .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-pink .pace-progress{color:#ff8acc}.pace-red .pace .pace-progress{background:#ea5455}.pace-barber-shop-red .pace{background:#fff}.pace-barber-shop-red .pace .pace-progress{background:#ea5455}.pace-barber-shop-red .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-red .pace .pace-progress:after{color:rgba(234,84,85,.2)}.pace-bounce-red .pace .pace-activity{background:#ea5455}.pace-center-atom-red .pace-progress{height:100px;width:80px}.pace-center-atom-red .pace-progress:before{background:#ea5455;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-red .pace-activity,.pace-center-atom-red .pace-activity:after,.pace-center-atom-red .pace-activity:before{border-color:#ea5455}.pace-center-circle-red .pace .pace-progress{background:rgba(234,84,85,.8);color:#fff}.pace-center-radar-red .pace .pace-activity,.pace-center-radar-red .pace .pace-activity:before{border-color:#ea5455 transparent transparent}.pace-center-simple-red .pace{background:#fff;border-color:#ea5455}.pace-center-simple-red .pace .pace-progress{background:#ea5455}.pace-material-red .pace{color:#ea5455}.pace-corner-indicator-red .pace .pace-activity{background:#ea5455}.pace-corner-indicator-red .pace .pace-activity:after,.pace-corner-indicator-red .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-red .pace .pace-activity:before{border-right-color:rgba(234,84,85,.2);border-left-color:rgba(234,84,85,.2)}.pace-corner-indicator-red .pace .pace-activity:after{border-top-color:rgba(234,84,85,.2);border-bottom-color:rgba(234,84,85,.2)}.pace-fill-left-red .pace .pace-progress{background-color:rgba(234,84,85,.2)}.pace-flash-red .pace .pace-progress{background:#ea5455}.pace-flash-red .pace .pace-progress-inner{box-shadow:0 0 10px #ea5455,0 0 5px #ea5455}.pace-flash-red .pace .pace-activity{border-top-color:#ea5455;border-left-color:#ea5455}.pace-loading-bar-red .pace .pace-progress{background:#ea5455;color:#ea5455;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-red .pace .pace-activity{box-shadow:inset 0 0 0 2px #ea5455,inset 0 0 0 7px #fff}.pace-mac-osx-red .pace .pace-progress{background-color:#ea5455;box-shadow:inset -1px 0 #ea5455,inset 0 -1px #ea5455,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-red .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-red .pace-progress{color:#ea5455}.pace-orange .pace .pace-progress{background:#dda451}.pace-barber-shop-orange .pace{background:#2a2e30}.pace-barber-shop-orange .pace .pace-progress{background:#dda451}.pace-barber-shop-orange .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-orange .pace .pace-progress:after{color:rgba(221,164,81,.2)}.pace-bounce-orange .pace .pace-activity{background:#dda451}.pace-center-atom-orange .pace-progress{height:100px;width:80px}.pace-center-atom-orange .pace-progress:before{background:#dda451;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-orange .pace-activity,.pace-center-atom-orange .pace-activity:after,.pace-center-atom-orange .pace-activity:before{border-color:#dda451}.pace-center-circle-orange .pace .pace-progress{background:rgba(221,164,81,.8);color:#2a2e30}.pace-center-radar-orange .pace .pace-activity,.pace-center-radar-orange .pace .pace-activity:before{border-color:#dda451 transparent transparent}.pace-center-simple-orange .pace{background:#2a2e30;border-color:#dda451}.pace-center-simple-orange .pace .pace-progress{background:#dda451}.pace-material-orange .pace{color:#dda451}.pace-corner-indicator-orange .pace .pace-activity{background:#dda451}.pace-corner-indicator-orange .pace .pace-activity:after,.pace-corner-indicator-orange .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-orange .pace .pace-activity:before{border-right-color:rgba(221,164,81,.2);border-left-color:rgba(221,164,81,.2)}.pace-corner-indicator-orange .pace .pace-activity:after{border-top-color:rgba(221,164,81,.2);border-bottom-color:rgba(221,164,81,.2)}.pace-fill-left-orange .pace .pace-progress{background-color:rgba(221,164,81,.2)}.pace-flash-orange .pace .pace-progress{background:#dda451}.pace-flash-orange .pace .pace-progress-inner{box-shadow:0 0 10px #dda451,0 0 5px #dda451}.pace-flash-orange .pace .pace-activity{border-top-color:#dda451;border-left-color:#dda451}.pace-loading-bar-orange .pace .pace-progress{background:#dda451;color:#dda451;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-orange .pace .pace-activity{box-shadow:inset 0 0 0 2px #dda451,inset 0 0 0 7px #2a2e30}.pace-mac-osx-orange .pace .pace-progress{background-color:#dda451;box-shadow:inset -1px 0 #dda451,inset 0 -1px #dda451,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-orange .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-orange .pace-progress{color:#dda451}.pace-yellow .pace .pace-progress{background:#edc30e}.pace-barber-shop-yellow .pace{background:#2a2e30}.pace-barber-shop-yellow .pace .pace-progress{background:#edc30e}.pace-barber-shop-yellow .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-yellow .pace .pace-progress:after{color:rgba(237,195,14,.2)}.pace-bounce-yellow .pace .pace-activity{background:#edc30e}.pace-center-atom-yellow .pace-progress{height:100px;width:80px}.pace-center-atom-yellow .pace-progress:before{background:#edc30e;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-yellow .pace-activity,.pace-center-atom-yellow .pace-activity:after,.pace-center-atom-yellow .pace-activity:before{border-color:#edc30e}.pace-center-circle-yellow .pace .pace-progress{background:rgba(237,195,14,.8);color:#2a2e30}.pace-center-radar-yellow .pace .pace-activity,.pace-center-radar-yellow .pace .pace-activity:before{border-color:#edc30e transparent transparent}.pace-center-simple-yellow .pace{background:#2a2e30;border-color:#edc30e}.pace-center-simple-yellow .pace .pace-progress{background:#edc30e}.pace-material-yellow .pace{color:#edc30e}.pace-corner-indicator-yellow .pace .pace-activity{background:#edc30e}.pace-corner-indicator-yellow .pace .pace-activity:after,.pace-corner-indicator-yellow .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-yellow .pace .pace-activity:before{border-right-color:rgba(237,195,14,.2);border-left-color:rgba(237,195,14,.2)}.pace-corner-indicator-yellow .pace .pace-activity:after{border-top-color:rgba(237,195,14,.2);border-bottom-color:rgba(237,195,14,.2)}.pace-fill-left-yellow .pace .pace-progress{background-color:rgba(237,195,14,.2)}.pace-flash-yellow .pace .pace-progress{background:#edc30e}.pace-flash-yellow .pace .pace-progress-inner{box-shadow:0 0 10px #edc30e,0 0 5px #edc30e}.pace-flash-yellow .pace .pace-activity{border-top-color:#edc30e;border-left-color:#edc30e}.pace-loading-bar-yellow .pace .pace-progress{background:#edc30e;color:#edc30e;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-yellow .pace .pace-activity{box-shadow:inset 0 0 0 2px #edc30e,inset 0 0 0 7px #2a2e30}.pace-mac-osx-yellow .pace .pace-progress{background-color:#edc30e;box-shadow:inset -1px 0 #edc30e,inset 0 -1px #edc30e,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-yellow .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-yellow .pace-progress{color:#edc30e}.pace-green .pace .pace-progress{background:#21b978}.pace-barber-shop-green .pace{background:#fff}.pace-barber-shop-green .pace .pace-progress{background:#21b978}.pace-barber-shop-green .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-green .pace .pace-progress:after{color:rgba(33,185,120,.2)}.pace-bounce-green .pace .pace-activity{background:#21b978}.pace-center-atom-green .pace-progress{height:100px;width:80px}.pace-center-atom-green .pace-progress:before{background:#21b978;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-green .pace-activity,.pace-center-atom-green .pace-activity:after,.pace-center-atom-green .pace-activity:before{border-color:#21b978}.pace-center-circle-green .pace .pace-progress{background:rgba(33,185,120,.8);color:#fff}.pace-center-radar-green .pace .pace-activity,.pace-center-radar-green .pace .pace-activity:before{border-color:#21b978 transparent transparent}.pace-center-simple-green .pace{background:#fff;border-color:#21b978}.pace-center-simple-green .pace .pace-progress{background:#21b978}.pace-material-green .pace{color:#21b978}.pace-corner-indicator-green .pace .pace-activity{background:#21b978}.pace-corner-indicator-green .pace .pace-activity:after,.pace-corner-indicator-green .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-green .pace .pace-activity:before{border-right-color:rgba(33,185,120,.2);border-left-color:rgba(33,185,120,.2)}.pace-corner-indicator-green .pace .pace-activity:after{border-top-color:rgba(33,185,120,.2);border-bottom-color:rgba(33,185,120,.2)}.pace-fill-left-green .pace .pace-progress{background-color:rgba(33,185,120,.2)}.pace-flash-green .pace .pace-progress{background:#21b978}.pace-flash-green .pace .pace-progress-inner{box-shadow:0 0 10px #21b978,0 0 5px #21b978}.pace-flash-green .pace .pace-activity{border-top-color:#21b978;border-left-color:#21b978}.pace-loading-bar-green .pace .pace-progress{background:#21b978;color:#21b978;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-green .pace .pace-activity{box-shadow:inset 0 0 0 2px #21b978,inset 0 0 0 7px #fff}.pace-mac-osx-green .pace .pace-progress{background-color:#21b978;box-shadow:inset -1px 0 #21b978,inset 0 -1px #21b978,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-green .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-green .pace-progress{color:#21b978}.pace-teal .pace .pace-progress{background:#20c997}.pace-barber-shop-teal .pace{background:#fff}.pace-barber-shop-teal .pace .pace-progress{background:#20c997}.pace-barber-shop-teal .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-teal .pace .pace-progress:after{color:rgba(32,201,151,.2)}.pace-bounce-teal .pace .pace-activity{background:#20c997}.pace-center-atom-teal .pace-progress{height:100px;width:80px}.pace-center-atom-teal .pace-progress:before{background:#20c997;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-teal .pace-activity,.pace-center-atom-teal .pace-activity:after,.pace-center-atom-teal .pace-activity:before{border-color:#20c997}.pace-center-circle-teal .pace .pace-progress{background:rgba(32,201,151,.8);color:#fff}.pace-center-radar-teal .pace .pace-activity,.pace-center-radar-teal .pace .pace-activity:before{border-color:#20c997 transparent transparent}.pace-center-simple-teal .pace{background:#fff;border-color:#20c997}.pace-center-simple-teal .pace .pace-progress{background:#20c997}.pace-material-teal .pace{color:#20c997}.pace-corner-indicator-teal .pace .pace-activity{background:#20c997}.pace-corner-indicator-teal .pace .pace-activity:after,.pace-corner-indicator-teal .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-teal .pace .pace-activity:before{border-right-color:rgba(32,201,151,.2);border-left-color:rgba(32,201,151,.2)}.pace-corner-indicator-teal .pace .pace-activity:after{border-top-color:rgba(32,201,151,.2);border-bottom-color:rgba(32,201,151,.2)}.pace-fill-left-teal .pace .pace-progress{background-color:rgba(32,201,151,.2)}.pace-flash-teal .pace .pace-progress{background:#20c997}.pace-flash-teal .pace .pace-progress-inner{box-shadow:0 0 10px #20c997,0 0 5px #20c997}.pace-flash-teal .pace .pace-activity{border-top-color:#20c997;border-left-color:#20c997}.pace-loading-bar-teal .pace .pace-progress{background:#20c997;color:#20c997;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-teal .pace .pace-activity{box-shadow:inset 0 0 0 2px #20c997,inset 0 0 0 7px #fff}.pace-mac-osx-teal .pace .pace-progress{background-color:#20c997;box-shadow:inset -1px 0 #20c997,inset 0 -1px #20c997,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-teal .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-teal .pace-progress{color:#20c997}.pace-cyan .pace .pace-progress{background:#7367f0}.pace-barber-shop-cyan .pace{background:#fff}.pace-barber-shop-cyan .pace .pace-progress{background:#7367f0}.pace-barber-shop-cyan .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-cyan .pace .pace-progress:after{color:rgba(115,103,240,.2)}.pace-bounce-cyan .pace .pace-activity{background:#7367f0}.pace-center-atom-cyan .pace-progress{height:100px;width:80px}.pace-center-atom-cyan .pace-progress:before{background:#7367f0;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-cyan .pace-activity,.pace-center-atom-cyan .pace-activity:after,.pace-center-atom-cyan .pace-activity:before{border-color:#7367f0}.pace-center-circle-cyan .pace .pace-progress{background:rgba(115,103,240,.8);color:#fff}.pace-center-radar-cyan .pace .pace-activity,.pace-center-radar-cyan .pace .pace-activity:before{border-color:#7367f0 transparent transparent}.pace-center-simple-cyan .pace{background:#fff;border-color:#7367f0}.pace-center-simple-cyan .pace .pace-progress{background:#7367f0}.pace-material-cyan .pace{color:#7367f0}.pace-corner-indicator-cyan .pace .pace-activity{background:#7367f0}.pace-corner-indicator-cyan .pace .pace-activity:after,.pace-corner-indicator-cyan .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-cyan .pace .pace-activity:before{border-right-color:rgba(115,103,240,.2);border-left-color:rgba(115,103,240,.2)}.pace-corner-indicator-cyan .pace .pace-activity:after{border-top-color:rgba(115,103,240,.2);border-bottom-color:rgba(115,103,240,.2)}.pace-fill-left-cyan .pace .pace-progress{background-color:rgba(115,103,240,.2)}.pace-flash-cyan .pace .pace-progress{background:#7367f0}.pace-flash-cyan .pace .pace-progress-inner{box-shadow:0 0 10px #7367f0,0 0 5px #7367f0}.pace-flash-cyan .pace .pace-activity{border-top-color:#7367f0;border-left-color:#7367f0}.pace-loading-bar-cyan .pace .pace-progress{background:#7367f0;color:#7367f0;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-cyan .pace .pace-activity{box-shadow:inset 0 0 0 2px #7367f0,inset 0 0 0 7px #fff}.pace-mac-osx-cyan .pace .pace-progress{background-color:#7367f0;box-shadow:inset -1px 0 #7367f0,inset 0 -1px #7367f0,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-cyan .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-cyan .pace-progress{color:#7367f0}.pace-white .pace .pace-progress{background:#fff}.pace-barber-shop-white .pace{background:#2a2e30}.pace-barber-shop-white .pace .pace-progress{background:#fff}.pace-barber-shop-white .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-white .pace .pace-progress:after{color:hsla(0,0%,100%,.2)}.pace-bounce-white .pace .pace-activity{background:#fff}.pace-center-atom-white .pace-progress{height:100px;width:80px}.pace-center-atom-white .pace-progress:before{background:#fff;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-white .pace-activity,.pace-center-atom-white .pace-activity:after,.pace-center-atom-white .pace-activity:before{border-color:#fff}.pace-center-circle-white .pace .pace-progress{background:hsla(0,0%,100%,.8);color:#2a2e30}.pace-center-radar-white .pace .pace-activity,.pace-center-radar-white .pace .pace-activity:before{border-color:#fff transparent transparent}.pace-center-simple-white .pace{background:#2a2e30;border-color:#fff}.pace-center-simple-white .pace .pace-progress{background:#fff}.pace-material-white .pace{color:#fff}.pace-corner-indicator-white .pace .pace-activity{background:#fff}.pace-corner-indicator-white .pace .pace-activity:after,.pace-corner-indicator-white .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-white .pace .pace-activity:before{border-right-color:hsla(0,0%,100%,.2);border-left-color:hsla(0,0%,100%,.2)}.pace-corner-indicator-white .pace .pace-activity:after{border-top-color:hsla(0,0%,100%,.2);border-bottom-color:hsla(0,0%,100%,.2)}.pace-fill-left-white .pace .pace-progress{background-color:hsla(0,0%,100%,.2)}.pace-flash-white .pace .pace-progress{background:#fff}.pace-flash-white .pace .pace-progress-inner{box-shadow:0 0 10px #fff,0 0 5px #fff}.pace-flash-white .pace .pace-activity{border-top-color:#fff;border-left-color:#fff}.pace-loading-bar-white .pace .pace-progress{background:#fff;color:#fff;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-white .pace .pace-activity{box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 7px #2a2e30}.pace-mac-osx-white .pace .pace-progress{background-color:#fff;box-shadow:inset -1px 0 #fff,inset 0 -1px #fff,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-white .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-white .pace-progress{color:#fff}.pace-gray .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-gray .pace{background:#2a2e30}.pace-barber-shop-gray .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-gray .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-gray .pace .pace-progress:after{color:rgba(184,194,204,.2)}.pace-bounce-gray .pace .pace-activity{background:#b8c2cc}.pace-center-atom-gray .pace-progress{height:100px;width:80px}.pace-center-atom-gray .pace-progress:before{background:#b8c2cc;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-gray .pace-activity,.pace-center-atom-gray .pace-activity:after,.pace-center-atom-gray .pace-activity:before{border-color:#b8c2cc}.pace-center-circle-gray .pace .pace-progress{background:rgba(184,194,204,.8);color:#2a2e30}.pace-center-radar-gray .pace .pace-activity,.pace-center-radar-gray .pace .pace-activity:before{border-color:#b8c2cc transparent transparent}.pace-center-simple-gray .pace{background:#2a2e30;border-color:#b8c2cc}.pace-center-simple-gray .pace .pace-progress{background:#b8c2cc}.pace-material-gray .pace{color:#b8c2cc}.pace-corner-indicator-gray .pace .pace-activity{background:#b8c2cc}.pace-corner-indicator-gray .pace .pace-activity:after,.pace-corner-indicator-gray .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-gray .pace .pace-activity:before{border-right-color:rgba(184,194,204,.2);border-left-color:rgba(184,194,204,.2)}.pace-corner-indicator-gray .pace .pace-activity:after{border-top-color:rgba(184,194,204,.2);border-bottom-color:rgba(184,194,204,.2)}.pace-fill-left-gray .pace .pace-progress{background-color:rgba(184,194,204,.2)}.pace-flash-gray .pace .pace-progress{background:#b8c2cc}.pace-flash-gray .pace .pace-progress-inner{box-shadow:0 0 10px #b8c2cc,0 0 5px #b8c2cc}.pace-flash-gray .pace .pace-activity{border-top-color:#b8c2cc;border-left-color:#b8c2cc}.pace-loading-bar-gray .pace .pace-progress{background:#b8c2cc;color:#b8c2cc;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-gray .pace .pace-activity{box-shadow:inset 0 0 0 2px #b8c2cc,inset 0 0 0 7px #2a2e30}.pace-mac-osx-gray .pace .pace-progress{background-color:#b8c2cc;box-shadow:inset -1px 0 #b8c2cc,inset 0 -1px #b8c2cc,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-gray .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-gray .pace-progress{color:#b8c2cc}.pace-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-barber-shop-gray-dark .pace{background:#fff}.pace-barber-shop-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-barber-shop-gray-dark .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-gray-dark .pace .pace-progress:after{color:rgba(30,30,30,.2)}.pace-bounce-gray-dark .pace .pace-activity{background:#1e1e1e}.pace-center-atom-gray-dark .pace-progress{height:100px;width:80px}.pace-center-atom-gray-dark .pace-progress:before{background:#1e1e1e;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-gray-dark .pace-activity,.pace-center-atom-gray-dark .pace-activity:after,.pace-center-atom-gray-dark .pace-activity:before{border-color:#1e1e1e}.pace-center-circle-gray-dark .pace .pace-progress{background:rgba(30,30,30,.8);color:#fff}.pace-center-radar-gray-dark .pace .pace-activity,.pace-center-radar-gray-dark .pace .pace-activity:before{border-color:#1e1e1e transparent transparent}.pace-center-simple-gray-dark .pace{background:#fff;border-color:#1e1e1e}.pace-center-simple-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-material-gray-dark .pace{color:#1e1e1e}.pace-corner-indicator-gray-dark .pace .pace-activity{background:#1e1e1e}.pace-corner-indicator-gray-dark .pace .pace-activity:after,.pace-corner-indicator-gray-dark .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-gray-dark .pace .pace-activity:before{border-right-color:rgba(30,30,30,.2);border-left-color:rgba(30,30,30,.2)}.pace-corner-indicator-gray-dark .pace .pace-activity:after{border-top-color:rgba(30,30,30,.2);border-bottom-color:rgba(30,30,30,.2)}.pace-fill-left-gray-dark .pace .pace-progress{background-color:rgba(30,30,30,.2)}.pace-flash-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-flash-gray-dark .pace .pace-progress-inner{box-shadow:0 0 10px #1e1e1e,0 0 5px #1e1e1e}.pace-flash-gray-dark .pace .pace-activity{border-top-color:#1e1e1e;border-left-color:#1e1e1e}.pace-loading-bar-gray-dark .pace .pace-progress{background:#1e1e1e;color:#1e1e1e;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-gray-dark .pace .pace-activity{box-shadow:inset 0 0 0 2px #1e1e1e,inset 0 0 0 7px #fff}.pace-mac-osx-gray-dark .pace .pace-progress{background-color:#1e1e1e;box-shadow:inset -1px 0 #1e1e1e,inset 0 -1px #1e1e1e,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-gray-dark .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-gray-dark .pace-progress{color:#1e1e1e}.jqstooltip{height:auto!important;padding:5px!important;width:auto!important}.connectedSortable{min-height:100px}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sort-highlight{background:#babfc7;border:1px dashed #dae1e7;margin-bottom:10px}.chart{overflow:hidden;position:relative}.border-transparent{border-color:transparent!important}.description-block{display:block;margin:10px 0;text-align:center}.description-block.margin-bottom{margin-bottom:25px}.description-block>.description-header{font-size:16px;font-weight:600;margin:0;padding:0}.description-block>.description-text{text-transform:uppercase}.description-block .description-icon{font-size:16px}.list-group-unbordered>.list-group-item{border-left:0;border-radius:0;border-right:0;padding-left:0;padding-right:0}.list-header{color:#b8c2cc;font-size:15px;font-weight:700;padding:10px 4px}.list-seperator{background:rgba(34,41,47,.125);height:1px;margin:15px 0 9px}.list-link>a{color:#b8c2cc;padding:4px}.list-link>a:hover{color:#2a2e30}.user-block{float:left}.user-block img{float:left;height:40px;width:40px}.user-block .comment,.user-block .description,.user-block .username{display:block;margin-left:50px}.user-block .username{font-size:16px;font-weight:600;margin-top:-1px}.user-block .description{color:#b8c2cc;font-size:13px;margin-top:-3px}.user-block.user-block-sm img{width:1.875rem;height:1.875rem}.user-block.user-block-sm .comment,.user-block.user-block-sm .description,.user-block.user-block-sm .username{margin-left:40px}.user-block.user-block-sm .username{font-size:14px}.img-lg,.img-md,.img-sm{float:left}.img-sm{height:1.875rem;width:1.875rem}.img-sm+.img-push{margin-left:2.5rem}.img-md{width:3.75rem;height:3.75rem}.img-md+.img-push{margin-left:4.375rem}.img-lg{width:6.25rem;height:6.25rem}.img-lg+.img-push{margin-left:6.875rem}.img-bordered{border:3px solid #adb5bd;padding:3px}.img-bordered-sm{border:2px solid #adb5bd;padding:2px}.img-rounded{border-radius:.5rem}.img-circle{border-radius:50%}.img-size-32,.img-size-50,.img-size-64{height:auto}.img-size-64{width:64px}.img-size-50{width:50px}.img-size-32{width:32px}.size-32,.size-40,.size-50{display:block;text-align:center}.size-32{height:32px;line-height:32px;width:32px}.size-40{height:40px;line-height:40px;width:40px}.size-50{height:50px;line-height:50px;width:50px}.attachment-block{background:#babfc7;border:1px solid rgba(34,41,47,.125);margin-bottom:10px;padding:5px}.attachment-block .attachment-img{float:left;height:auto;max-height:100px;max-width:100px}.attachment-block .attachment-pushed{margin-left:110px}.attachment-block .attachment-heading{margin:0}.attachment-block .attachment-text{color:#4e5154}.card>.loading-img,.card>.overlay,.info-box>.loading-img,.info-box>.overlay,.overlay-wrapper>.loading-img,.overlay-wrapper>.overlay,.small-box>.loading-img,.small-box>.overlay{height:100%;left:0;position:absolute;top:0;width:100%}.card .overlay,.info-box .overlay,.overlay-wrapper .overlay,.small-box .overlay{border-radius:.5rem;align-items:center;background:hsla(0,0%,100%,.7);display:flex;justify-content:center;z-index:50}.card .overlay>.fa,.card .overlay>.fab,.card .overlay>.far,.card .overlay>.fas,.card .overlay>.glyphicon,.card .overlay>.ion,.info-box .overlay>.fa,.info-box .overlay>.fab,.info-box .overlay>.far,.info-box .overlay>.fas,.info-box .overlay>.glyphicon,.info-box .overlay>.ion,.overlay-wrapper .overlay>.fa,.overlay-wrapper .overlay>.fab,.overlay-wrapper .overlay>.far,.overlay-wrapper .overlay>.fas,.overlay-wrapper .overlay>.glyphicon,.overlay-wrapper .overlay>.ion,.small-box .overlay>.fa,.small-box .overlay>.fab,.small-box .overlay>.far,.small-box .overlay>.fas,.small-box .overlay>.glyphicon,.small-box .overlay>.ion{color:#1e1e1e}.card .overlay.dark,.info-box .overlay.dark,.overlay-wrapper .overlay.dark,.small-box .overlay.dark{background:rgba(34,41,47,.5)}.card .overlay.dark>.fa,.card .overlay.dark>.fab,.card .overlay.dark>.far,.card .overlay.dark>.fas,.card .overlay.dark>.glyphicon,.card .overlay.dark>.ion,.info-box .overlay.dark>.fa,.info-box .overlay.dark>.fab,.info-box .overlay.dark>.far,.info-box .overlay.dark>.fas,.info-box .overlay.dark>.glyphicon,.info-box .overlay.dark>.ion,.overlay-wrapper .overlay.dark>.fa,.overlay-wrapper .overlay.dark>.fab,.overlay-wrapper .overlay.dark>.far,.overlay-wrapper .overlay.dark>.fas,.overlay-wrapper .overlay.dark>.glyphicon,.overlay-wrapper .overlay.dark>.ion,.small-box .overlay.dark>.fa,.small-box .overlay.dark>.fab,.small-box .overlay.dark>.far,.small-box .overlay.dark>.fas,.small-box .overlay.dark>.glyphicon,.small-box .overlay.dark>.ion{color:#636363}.tab-pane>.overlay-wrapper{position:relative}.tab-pane>.overlay-wrapper>.overlay{border-top-left-radius:0;border-top-right-radius:0;flex-direction:column;margin-top:-1.25rem;margin-left:-1.25rem;height:calc(100% + 2.5rem);width:calc(100% + 2.5rem)}.tab-pane>.overlay-wrapper>.overlay.dark{color:#fff}.ribbon-wrapper{height:70px;overflow:hidden;position:absolute;right:-2px;top:-2px;width:70px;z-index:10}.ribbon-wrapper.ribbon-lg{height:120px;width:120px}.ribbon-wrapper.ribbon-lg .ribbon{right:0;top:26px;width:160px}.ribbon-wrapper.ribbon-xl{height:180px;width:180px}.ribbon-wrapper.ribbon-xl .ribbon{right:4px;top:47px;width:240px}.ribbon-wrapper .ribbon{box-shadow:0 0 3px rgba(34,41,47,.3);font-size:.8rem;line-height:100%;padding:.375rem 0;position:relative;right:-2px;text-align:center;text-shadow:0 -1px 0 rgba(34,41,47,.4);text-transform:uppercase;top:10px;transform:rotate(45deg);width:90px}.ribbon-wrapper .ribbon:after,.ribbon-wrapper .ribbon:before{border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #9e9e9e;bottom:-3px;content:\"\";position:absolute}.ribbon-wrapper .ribbon:before{left:0}.ribbon-wrapper .ribbon:after{right:0}.back-to-top{bottom:1.25rem;position:fixed;right:1.25rem;z-index:1032}.back-to-top:focus{box-shadow:none}pre{padding:.75rem}blockquote{background:#fff;border-left:.7rem solid #6d8be6;margin:1.5em .7rem;padding:.5em .7rem}.box blockquote{background:#ededed}blockquote p:last-child{margin-bottom:0}blockquote h1,blockquote h2,blockquote h3,blockquote h4,blockquote h5,blockquote h6{color:#6d8be6;font-size:1.25rem;font-weight:600}blockquote.quote-primary{border-color:#6d8be6}blockquote.quote-primary h1,blockquote.quote-primary h2,blockquote.quote-primary h3,blockquote.quote-primary h4,blockquote.quote-primary h5,blockquote.quote-primary h6{color:#6d8be6}blockquote.quote-secondary{border-color:#b8c2cc}blockquote.quote-secondary h1,blockquote.quote-secondary h2,blockquote.quote-secondary h3,blockquote.quote-secondary h4,blockquote.quote-secondary h5,blockquote.quote-secondary h6{color:#b8c2cc}blockquote.quote-success{border-color:#21b978}blockquote.quote-success h1,blockquote.quote-success h2,blockquote.quote-success h3,blockquote.quote-success h4,blockquote.quote-success h5,blockquote.quote-success h6{color:#21b978}blockquote.quote-info{border-color:#4277cf}blockquote.quote-info h1,blockquote.quote-info h2,blockquote.quote-info h3,blockquote.quote-info h4,blockquote.quote-info h5,blockquote.quote-info h6{color:#4277cf}blockquote.quote-warning{border-color:#dda451}blockquote.quote-warning h1,blockquote.quote-warning h2,blockquote.quote-warning h3,blockquote.quote-warning h4,blockquote.quote-warning h5,blockquote.quote-warning h6{color:#dda451}blockquote.quote-danger{border-color:#ea5455}blockquote.quote-danger h1,blockquote.quote-danger h2,blockquote.quote-danger h3,blockquote.quote-danger h4,blockquote.quote-danger h5,blockquote.quote-danger h6{color:#ea5455}blockquote.quote-light{border-color:#f7f7f9}blockquote.quote-light h1,blockquote.quote-light h2,blockquote.quote-light h3,blockquote.quote-light h4,blockquote.quote-light h5,blockquote.quote-light h6{color:#f7f7f9}blockquote.quote-dark{border-color:#22292f}blockquote.quote-dark h1,blockquote.quote-dark h2,blockquote.quote-dark h3,blockquote.quote-dark h4,blockquote.quote-dark h5,blockquote.quote-dark h6{color:#22292f}blockquote.quote-lightblue{border-color:#3c8dbc}blockquote.quote-lightblue h1,blockquote.quote-lightblue h2,blockquote.quote-lightblue h3,blockquote.quote-lightblue h4,blockquote.quote-lightblue h5,blockquote.quote-lightblue h6{color:#3c8dbc}blockquote.quote-navy{border-color:#001f3f}blockquote.quote-navy h1,blockquote.quote-navy h2,blockquote.quote-navy h3,blockquote.quote-navy h4,blockquote.quote-navy h5,blockquote.quote-navy h6{color:#001f3f}blockquote.quote-olive{border-color:#3d9970}blockquote.quote-olive h1,blockquote.quote-olive h2,blockquote.quote-olive h3,blockquote.quote-olive h4,blockquote.quote-olive h5,blockquote.quote-olive h6{color:#3d9970}blockquote.quote-lime{border-color:#01ff70}blockquote.quote-lime h1,blockquote.quote-lime h2,blockquote.quote-lime h3,blockquote.quote-lime h4,blockquote.quote-lime h5,blockquote.quote-lime h6{color:#01ff70}blockquote.quote-fuchsia{border-color:#f012be}blockquote.quote-fuchsia h1,blockquote.quote-fuchsia h2,blockquote.quote-fuchsia h3,blockquote.quote-fuchsia h4,blockquote.quote-fuchsia h5,blockquote.quote-fuchsia h6{color:#f012be}blockquote.quote-maroon{border-color:#d81b60}blockquote.quote-maroon h1,blockquote.quote-maroon h2,blockquote.quote-maroon h3,blockquote.quote-maroon h4,blockquote.quote-maroon h5,blockquote.quote-maroon h6{color:#d81b60}blockquote.quote-blue{border-color:#3085d6}blockquote.quote-blue h1,blockquote.quote-blue h2,blockquote.quote-blue h3,blockquote.quote-blue h4,blockquote.quote-blue h5,blockquote.quote-blue h6{color:#3085d6}blockquote.quote-indigo{border-color:#5c6bc6}blockquote.quote-indigo h1,blockquote.quote-indigo h2,blockquote.quote-indigo h3,blockquote.quote-indigo h4,blockquote.quote-indigo h5,blockquote.quote-indigo h6{color:#5c6bc6}blockquote.quote-purple{border-color:#6f42c1}blockquote.quote-purple h1,blockquote.quote-purple h2,blockquote.quote-purple h3,blockquote.quote-purple h4,blockquote.quote-purple h5,blockquote.quote-purple h6{color:#6f42c1}blockquote.quote-pink{border-color:#ff8acc}blockquote.quote-pink h1,blockquote.quote-pink h2,blockquote.quote-pink h3,blockquote.quote-pink h4,blockquote.quote-pink h5,blockquote.quote-pink h6{color:#ff8acc}blockquote.quote-red{border-color:#ea5455}blockquote.quote-red h1,blockquote.quote-red h2,blockquote.quote-red h3,blockquote.quote-red h4,blockquote.quote-red h5,blockquote.quote-red h6{color:#ea5455}blockquote.quote-orange{border-color:#dda451}blockquote.quote-orange h1,blockquote.quote-orange h2,blockquote.quote-orange h3,blockquote.quote-orange h4,blockquote.quote-orange h5,blockquote.quote-orange h6{color:#dda451}blockquote.quote-yellow{border-color:#edc30e}blockquote.quote-yellow h1,blockquote.quote-yellow h2,blockquote.quote-yellow h3,blockquote.quote-yellow h4,blockquote.quote-yellow h5,blockquote.quote-yellow h6{color:#edc30e}blockquote.quote-green{border-color:#21b978}blockquote.quote-green h1,blockquote.quote-green h2,blockquote.quote-green h3,blockquote.quote-green h4,blockquote.quote-green h5,blockquote.quote-green h6{color:#21b978}blockquote.quote-teal{border-color:#20c997}blockquote.quote-teal h1,blockquote.quote-teal h2,blockquote.quote-teal h3,blockquote.quote-teal h4,blockquote.quote-teal h5,blockquote.quote-teal h6{color:#20c997}blockquote.quote-cyan{border-color:#7367f0}blockquote.quote-cyan h1,blockquote.quote-cyan h2,blockquote.quote-cyan h3,blockquote.quote-cyan h4,blockquote.quote-cyan h5,blockquote.quote-cyan h6{color:#7367f0}blockquote.quote-white{border-color:#fff}blockquote.quote-white h1,blockquote.quote-white h2,blockquote.quote-white h3,blockquote.quote-white h4,blockquote.quote-white h5,blockquote.quote-white h6{color:#fff}blockquote.quote-gray{border-color:#b8c2cc}blockquote.quote-gray h1,blockquote.quote-gray h2,blockquote.quote-gray h3,blockquote.quote-gray h4,blockquote.quote-gray h5,blockquote.quote-gray h6{color:#b8c2cc}blockquote.quote-gray-dark{border-color:#1e1e1e}blockquote.quote-gray-dark h1,blockquote.quote-gray-dark h2,blockquote.quote-gray-dark h3,blockquote.quote-gray-dark h4,blockquote.quote-gray-dark h5,blockquote.quote-gray-dark h6{color:#1e1e1e}.tab-custom-content{border-top:1px solid #dae1e7;margin-top:.5rem;padding-top:.5rem}.nav+.tab-custom-content{border-top:none;border-bottom:1px solid #dae1e7;margin-top:0;margin-bottom:.5rem;padding-bottom:.5rem}.badge-btn{border-radius:.15rem;font-size:.75rem;font-weight:400;padding:.25rem .5rem}.badge-btn.badge-pill{padding:.375rem .6rem}@media print{.content-header,.main-header,.main-sidebar,.no-print{display:none!important}.content-wrapper,.main-footer{transform:translate(0);margin-left:0!important;min-height:0!important}.layout-fixed .content-wrapper{padding-top:0!important}.invoice{border:0;margin:0;padding:0;width:100%}.invoice-col{float:left;width:33.3333333%}.table-responsive{overflow:auto}.table-responsive>.table tr td,.table-responsive>.table tr th{white-space:normal!important}}.text-bold,.text-bold.table td,.text-bold.table th{font-weight:700}.text-xs{font-size:.75rem!important}.text-md,.text-sm{font-size:1rem!important}.text-lg{font-size:2rem!important}.text-xl{font-size:1.5rem!important}.text-lightblue{color:#3c8dbc}.text-navy{color:#001f3f}.text-olive{color:#3d9970}.text-lime{color:#01ff70}.text-fuchsia{color:#f012be}.text-maroon{color:#d81b60}.text-blue{color:#3085d6}.text-indigo{color:#5c6bc6}.text-purple{color:#6f42c1}.text-pink{color:#ff8acc}.text-red{color:#ea5455}.text-orange{color:#dda451}.text-yellow{color:#edc30e}.text-green{color:#21b978}.text-teal{color:#20c997}.text-cyan{color:#7367f0}.text-white{color:#fff}.text-gray{color:#b8c2cc}.text-gray-dark{color:#1e1e1e}.elevation-0{box-shadow:none!important}.elevation-1{box-shadow:0 1px 3px rgba(34,41,47,.12),0 1px 2px rgba(34,41,47,.24)!important}.elevation-2{box-shadow:0 3px 6px rgba(34,41,47,.16),0 3px 6px rgba(34,41,47,.23)!important}.elevation-3{box-shadow:0 10px 20px rgba(34,41,47,.19),0 6px 6px rgba(34,41,47,.23)!important}.elevation-4{box-shadow:0 14px 28px rgba(34,41,47,.25),0 10px 10px rgba(34,41,47,.22)!important}.elevation-5{box-shadow:0 19px 38px rgba(34,41,47,.3),0 15px 12px rgba(34,41,47,.22)!important}.bg-primary{background-color:#6d8be6!important}.bg-primary,.bg-primary>a{color:#fff!important}.bg-primary.btn:hover{border-color:#4168df;color:#ececec}.bg-primary.btn.active,.bg-primary.btn:active,.bg-primary.btn:not(:disabled):not(.disabled).active,.bg-primary.btn:not(:disabled):not(.disabled):active{background-color:#4168df!important;border-color:#3760dd;color:#fff}.bg-secondary{background-color:#b8c2cc!important}.bg-secondary,.bg-secondary>a{color:#2a2e30!important}.bg-secondary.btn:hover{border-color:#9aa9b7;color:#181a1c}.bg-secondary.btn.active,.bg-secondary.btn:active,.bg-secondary.btn:not(:disabled):not(.disabled).active,.bg-secondary.btn:not(:disabled):not(.disabled):active{background-color:#9aa9b7!important;border-color:#93a2b1;color:#2a2e30}.bg-success{background-color:#21b978!important}.bg-success,.bg-success>a{color:#fff!important}.bg-success.btn:hover{border-color:#198e5c;color:#ececec}.bg-success.btn.active,.bg-success.btn:active,.bg-success.btn:not(:disabled):not(.disabled).active,.bg-success.btn:not(:disabled):not(.disabled):active{background-color:#198e5c!important;border-color:#178355;color:#fff}.bg-info{background-color:#4277cf!important}.bg-info,.bg-info>a{color:#fff!important}.bg-info.btn:hover{border-color:#2d5fb1;color:#ececec}.bg-info.btn.active,.bg-info.btn:active,.bg-info.btn:not(:disabled):not(.disabled).active,.bg-info.btn:not(:disabled):not(.disabled):active{background-color:#2d5fb1!important;border-color:#2a59a7;color:#fff}.bg-warning{background-color:#dda451!important}.bg-warning,.bg-warning>a{color:#2a2e30!important}.bg-warning.btn:hover{border-color:#d28d29;color:#181a1c}.bg-warning.btn.active,.bg-warning.btn:active,.bg-warning.btn:not(:disabled):not(.disabled).active,.bg-warning.btn:not(:disabled):not(.disabled):active{background-color:#d28d29!important;border-color:#c78627;color:#2a2e30}.bg-danger{background-color:#ea5455!important}.bg-danger,.bg-danger>a{color:#fff!important}.bg-danger.btn:hover{border-color:#e42728;color:#ececec}.bg-danger.btn.active,.bg-danger.btn:active,.bg-danger.btn:not(:disabled):not(.disabled).active,.bg-danger.btn:not(:disabled):not(.disabled):active{background-color:#e42728!important;border-color:#e21c1d;color:#fff}.bg-light{background-color:#f7f7f9!important}.bg-light,.bg-light>a{color:#2a2e30!important}.bg-light.btn:hover{border-color:#dadae3;color:#181a1c}.bg-light.btn.active,.bg-light.btn:active,.bg-light.btn:not(:disabled):not(.disabled).active,.bg-light.btn:not(:disabled):not(.disabled):active{background-color:#dadae3!important;border-color:#d3d3de;color:#2a2e30}.bg-dark{background-color:#22292f!important}.bg-dark,.bg-dark>a{color:#fff!important}.bg-dark.btn:hover{border-color:#0d0f11;color:#ececec}.bg-dark.btn.active,.bg-dark.btn:active,.bg-dark.btn:not(:disabled):not(.disabled).active,.bg-dark.btn:not(:disabled):not(.disabled):active{background-color:#0d0f11!important;border-color:#07090a;color:#fff}.bg-lightblue{background-color:#3c8dbc!important}.bg-lightblue,.bg-lightblue>a{color:#fff!important}.bg-lightblue.btn:hover{border-color:#307095;color:#ececec}.bg-lightblue.btn.active,.bg-lightblue.btn:active,.bg-lightblue.btn:not(:disabled):not(.disabled).active,.bg-lightblue.btn:not(:disabled):not(.disabled):active{background-color:#307095!important;border-color:#2d698c;color:#fff}.bg-navy{background-color:#001f3f!important}.bg-navy,.bg-navy>a{color:#fff!important}.bg-navy.btn:hover{border-color:#00060c;color:#ececec}.bg-navy.btn.active,.bg-navy.btn:active,.bg-navy.btn:not(:disabled):not(.disabled).active,.bg-navy.btn:not(:disabled):not(.disabled):active{background-color:#00060c!important;border-color:#000;color:#fff}.bg-olive{background-color:#3d9970!important}.bg-olive,.bg-olive>a{color:#fff!important}.bg-olive.btn:hover{border-color:#2e7555;color:#ececec}.bg-olive.btn.active,.bg-olive.btn:active,.bg-olive.btn:not(:disabled):not(.disabled).active,.bg-olive.btn:not(:disabled):not(.disabled):active{background-color:#2e7555!important;border-color:#2b6b4f;color:#fff}.bg-lime{background-color:#01ff70!important}.bg-lime,.bg-lime>a{color:#2a2e30!important}.bg-lime.btn:hover{border-color:#00cd5a;color:#181a1c}.bg-lime.btn.active,.bg-lime.btn:active,.bg-lime.btn:not(:disabled):not(.disabled).active,.bg-lime.btn:not(:disabled):not(.disabled):active{background-color:#00cd5a!important;border-color:#00c054;color:#fff}.bg-fuchsia{background-color:#f012be!important}.bg-fuchsia,.bg-fuchsia>a{color:#fff!important}.bg-fuchsia.btn:hover{border-color:#c30c9a;color:#ececec}.bg-fuchsia.btn.active,.bg-fuchsia.btn:active,.bg-fuchsia.btn:not(:disabled):not(.disabled).active,.bg-fuchsia.btn:not(:disabled):not(.disabled):active{background-color:#c30c9a!important;border-color:#b70c90;color:#fff}.bg-maroon{background-color:#d81b60!important}.bg-maroon,.bg-maroon>a{color:#fff!important}.bg-maroon.btn:hover{border-color:#ab154c;color:#ececec}.bg-maroon.btn.active,.bg-maroon.btn:active,.bg-maroon.btn:not(:disabled):not(.disabled).active,.bg-maroon.btn:not(:disabled):not(.disabled):active{background-color:#ab154c!important;border-color:#9f1447;color:#fff}.bg-blue{background-color:#3085d6!important}.bg-blue,.bg-blue>a{color:#fff!important}.bg-blue.btn:hover{border-color:#236bb0;color:#ececec}.bg-blue.btn.active,.bg-blue.btn:active,.bg-blue.btn:not(:disabled):not(.disabled).active,.bg-blue.btn:not(:disabled):not(.disabled):active{background-color:#236bb0!important;border-color:#2165a5;color:#fff}.bg-indigo{background-color:#5c6bc6!important}.bg-indigo,.bg-indigo>a{color:#fff!important}.bg-indigo.btn:hover{border-color:#3e4eb1;color:#ececec}.bg-indigo.btn.active,.bg-indigo.btn:active,.bg-indigo.btn:not(:disabled):not(.disabled).active,.bg-indigo.btn:not(:disabled):not(.disabled):active{background-color:#3e4eb1!important;border-color:#3b4aa8;color:#fff}.bg-purple{background-color:#6f42c1!important}.bg-purple,.bg-purple>a{color:#fff!important}.bg-purple.btn:hover{border-color:#59339d;color:#ececec}.bg-purple.btn.active,.bg-purple.btn:active,.bg-purple.btn:not(:disabled):not(.disabled).active,.bg-purple.btn:not(:disabled):not(.disabled):active{background-color:#59339d!important;border-color:#533093;color:#fff}.bg-pink{background-color:#ff8acc!important}.bg-pink,.bg-pink>a{color:#2a2e30!important}.bg-pink.btn:hover{border-color:#ff57b6;color:#181a1c}.bg-pink.btn.active,.bg-pink.btn:active,.bg-pink.btn:not(:disabled):not(.disabled).active,.bg-pink.btn:not(:disabled):not(.disabled):active{background-color:#ff57b6!important;border-color:#ff4ab0;color:#fff}.bg-red{background-color:#ea5455!important}.bg-red,.bg-red>a{color:#fff!important}.bg-red.btn:hover{border-color:#e42728;color:#ececec}.bg-red.btn.active,.bg-red.btn:active,.bg-red.btn:not(:disabled):not(.disabled).active,.bg-red.btn:not(:disabled):not(.disabled):active{background-color:#e42728!important;border-color:#e21c1d;color:#fff}.bg-orange{background-color:#dda451!important}.bg-orange,.bg-orange>a{color:#2a2e30!important}.bg-orange.btn:hover{border-color:#d28d29;color:#181a1c}.bg-orange.btn.active,.bg-orange.btn:active,.bg-orange.btn:not(:disabled):not(.disabled).active,.bg-orange.btn:not(:disabled):not(.disabled):active{background-color:#d28d29!important;border-color:#c78627;color:#2a2e30}.bg-yellow{background-color:#edc30e!important}.bg-yellow,.bg-yellow>a{color:#2a2e30!important}.bg-yellow.btn:hover{border-color:#bd9b0b;color:#181a1c}.bg-yellow.btn.active,.bg-yellow.btn:active,.bg-yellow.btn:not(:disabled):not(.disabled).active,.bg-yellow.btn:not(:disabled):not(.disabled):active{background-color:#bd9b0b!important;border-color:#b1910a;color:#fff}.bg-green{background-color:#21b978!important}.bg-green,.bg-green>a{color:#fff!important}.bg-green.btn:hover{border-color:#198e5c;color:#ececec}.bg-green.btn.active,.bg-green.btn:active,.bg-green.btn:not(:disabled):not(.disabled).active,.bg-green.btn:not(:disabled):not(.disabled):active{background-color:#198e5c!important;border-color:#178355;color:#fff}.bg-teal{background-color:#20c997!important}.bg-teal,.bg-teal>a{color:#fff!important}.bg-teal.btn:hover{border-color:#199d76;color:#ececec}.bg-teal.btn.active,.bg-teal.btn:active,.bg-teal.btn:not(:disabled):not(.disabled).active,.bg-teal.btn:not(:disabled):not(.disabled):active{background-color:#199d76!important;border-color:#17926e;color:#fff}.bg-cyan{background-color:#7367f0!important}.bg-cyan,.bg-cyan>a{color:#fff!important}.bg-cyan.btn:hover{border-color:#4839eb;color:#ececec}.bg-cyan.btn.active,.bg-cyan.btn:active,.bg-cyan.btn:not(:disabled):not(.disabled).active,.bg-cyan.btn:not(:disabled):not(.disabled):active{background-color:#4839eb!important;border-color:#3e2dea;color:#fff}.bg-white{background-color:#fff!important}.bg-white,.bg-white>a{color:#2a2e30!important}.bg-white.btn:hover{border-color:#e6e6e6;color:#181a1c}.bg-white.btn.active,.bg-white.btn:active,.bg-white.btn:not(:disabled):not(.disabled).active,.bg-white.btn:not(:disabled):not(.disabled):active{background-color:#e6e6e6!important;border-color:#dfdfdf;color:#2a2e30}.bg-gray{background-color:#b8c2cc!important}.bg-gray,.bg-gray>a{color:#2a2e30!important}.bg-gray.btn:hover{border-color:#9aa9b7;color:#181a1c}.bg-gray.btn.active,.bg-gray.btn:active,.bg-gray.btn:not(:disabled):not(.disabled).active,.bg-gray.btn:not(:disabled):not(.disabled):active{background-color:#9aa9b7!important;border-color:#93a2b1;color:#2a2e30}.bg-gray-dark{background-color:#1e1e1e!important}.bg-gray-dark,.bg-gray-dark>a{color:#fff!important}.bg-gray-dark.btn:hover{border-color:#050505;color:#ececec}.bg-gray-dark.btn.active,.bg-gray-dark.btn:active,.bg-gray-dark.btn:not(:disabled):not(.disabled).active,.bg-gray-dark.btn:not(:disabled):not(.disabled):active{background-color:#050505!important;border-color:#000;color:#fff}.bg-gray{background-color:#adb5bd;color:#2a2e30}.bg-gray-light{background-color:#f5f5f5;color:#2a2e30!important}.bg-black{background-color:#22292f;color:#fff!important}.bg-white{background-color:#fff;color:#2a2e30!important}.bg-gradient-primary{color:#fff;background:#6d8be6 linear-gradient(180deg,#819ae9,#6d8be6) repeat-x!important}.bg-gradient-primary.btn.disabled,.bg-gradient-primary.btn:disabled,.bg-gradient-primary.btn:not(:disabled):not(.disabled).active,.bg-gradient-primary.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-primary.btn.dropdown-toggle{background-image:none!important}.bg-gradient-primary.btn:hover{border-color:#4168df;color:#ececec;background:#4c71e0 linear-gradient(180deg,#6484e3,#4c71e0) repeat-x!important}.bg-gradient-primary.btn.active,.bg-gradient-primary.btn:active,.bg-gradient-primary.btn:not(:disabled):not(.disabled).active,.bg-gradient-primary.btn:not(:disabled):not(.disabled):active{border-color:#3760dd;color:#fff;background:#4168df linear-gradient(180deg,#5b7de3,#4168df) repeat-x!important}.bg-gradient-secondary{color:#2a2e30;background:#b8c2cc linear-gradient(180deg,#c0c9d2,#b8c2cc) repeat-x!important}.bg-gradient-secondary.btn.disabled,.bg-gradient-secondary.btn:disabled,.bg-gradient-secondary.btn:not(:disabled):not(.disabled).active,.bg-gradient-secondary.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-secondary.btn.dropdown-toggle{background-image:none!important}.bg-gradient-secondary.btn:hover{border-color:#9aa9b7;color:#181a1c;background:#a2afbc linear-gradient(180deg,#aeb9c5,#a2afbc) repeat-x!important}.bg-gradient-secondary.btn.active,.bg-gradient-secondary.btn:active,.bg-gradient-secondary.btn:not(:disabled):not(.disabled).active,.bg-gradient-secondary.btn:not(:disabled):not(.disabled):active{border-color:#93a2b1;color:#2a2e30;background:#9aa9b7 linear-gradient(180deg,#a7b4c1,#9aa9b7) repeat-x!important}.bg-gradient-success{color:#fff;background:#21b978 linear-gradient(180deg,#40c18b,#21b978) repeat-x!important}.bg-gradient-success.btn.disabled,.bg-gradient-success.btn:disabled,.bg-gradient-success.btn:not(:disabled):not(.disabled).active,.bg-gradient-success.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-success.btn.dropdown-toggle{background-image:none!important}.bg-gradient-success.btn:hover{border-color:#198e5c;color:#ececec;background:#1b9963 linear-gradient(180deg,#3ba679,#1b9963) repeat-x!important}.bg-gradient-success.btn.active,.bg-gradient-success.btn:active,.bg-gradient-success.btn:not(:disabled):not(.disabled).active,.bg-gradient-success.btn:not(:disabled):not(.disabled):active{border-color:#178355;color:#fff;background:#198e5c linear-gradient(180deg,#399d73,#198e5c) repeat-x!important}.bg-gradient-info{color:#fff;background:#4277cf linear-gradient(180deg,#5c89d5,#4277cf) repeat-x!important}.bg-gradient-info.btn.disabled,.bg-gradient-info.btn:disabled,.bg-gradient-info.btn:not(:disabled):not(.disabled).active,.bg-gradient-info.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-info.btn.dropdown-toggle{background-image:none!important}.bg-gradient-info.btn:hover{border-color:#2d5fb1;color:#ececec;background:#3064bb linear-gradient(180deg,#4d79c4,#3064bb) repeat-x!important}.bg-gradient-info.btn.active,.bg-gradient-info.btn:active,.bg-gradient-info.btn:not(:disabled):not(.disabled).active,.bg-gradient-info.btn:not(:disabled):not(.disabled):active{border-color:#2a59a7;color:#fff;background:#2d5fb1 linear-gradient(180deg,#4a75bc,#2d5fb1) repeat-x!important}.bg-gradient-warning{color:#2a2e30;background:#dda451 linear-gradient(180deg,#e0b06a,#dda451) repeat-x!important}.bg-gradient-warning.btn.disabled,.bg-gradient-warning.btn:disabled,.bg-gradient-warning.btn:not(:disabled):not(.disabled).active,.bg-gradient-warning.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-warning.btn.dropdown-toggle{background-image:none!important}.bg-gradient-warning.btn:hover{border-color:#d28d29;color:#181a1c;background:#d79331 linear-gradient(180deg,#dba14f,#d79331) repeat-x!important}.bg-gradient-warning.btn.active,.bg-gradient-warning.btn:active,.bg-gradient-warning.btn:not(:disabled):not(.disabled).active,.bg-gradient-warning.btn:not(:disabled):not(.disabled):active{border-color:#c78627;color:#2a2e30;background:#d28d29 linear-gradient(180deg,#d69c48,#d28d29) repeat-x!important}.bg-gradient-danger{color:#fff;background:#ea5455 linear-gradient(180deg,#eb6c6d,#ea5455) repeat-x!important}.bg-gradient-danger.btn.disabled,.bg-gradient-danger.btn:disabled,.bg-gradient-danger.btn:not(:disabled):not(.disabled).active,.bg-gradient-danger.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-danger.btn.dropdown-toggle{background-image:none!important}.bg-gradient-danger.btn:hover{border-color:#e42728;color:#ececec;background:#e63233 linear-gradient(180deg,#e74f50,#e63233) repeat-x!important}.bg-gradient-danger.btn.active,.bg-gradient-danger.btn:active,.bg-gradient-danger.btn:not(:disabled):not(.disabled).active,.bg-gradient-danger.btn:not(:disabled):not(.disabled):active{border-color:#e21c1d;color:#fff;background:#e42728 linear-gradient(180deg,#e64547,#e42728) repeat-x!important}.bg-gradient-light{color:#2a2e30;background:#f7f7f9 linear-gradient(180deg,#f6f6f9,#f7f7f9) repeat-x!important}.bg-gradient-light.btn.disabled,.bg-gradient-light.btn:disabled,.bg-gradient-light.btn:not(:disabled):not(.disabled).active,.bg-gradient-light.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-light.btn.dropdown-toggle{background-image:none!important}.bg-gradient-light.btn:hover{border-color:#dadae3;color:#181a1c;background:#e1e1e9 linear-gradient(180deg,#e3e3eb,#e1e1e9) repeat-x!important}.bg-gradient-light.btn.active,.bg-gradient-light.btn:active,.bg-gradient-light.btn:not(:disabled):not(.disabled).active,.bg-gradient-light.btn:not(:disabled):not(.disabled):active{border-color:#d3d3de;color:#2a2e30;background:#dadae3 linear-gradient(180deg,#dddde6,#dadae3) repeat-x!important}.bg-gradient-dark{color:#fff;background:#22292f linear-gradient(180deg,#41474d,#22292f) repeat-x!important}.bg-gradient-dark.btn.disabled,.bg-gradient-dark.btn:disabled,.bg-gradient-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-dark.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-dark.btn.dropdown-toggle{background-image:none!important}.bg-gradient-dark.btn:hover{border-color:#0d0f11;color:#ececec;background:#121619 linear-gradient(180deg,#33373a,#121619) repeat-x!important}.bg-gradient-dark.btn.active,.bg-gradient-dark.btn:active,.bg-gradient-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-dark.btn:not(:disabled):not(.disabled):active{border-color:#07090a;color:#fff;background:#0d0f11 linear-gradient(180deg,#2f3134,#0d0f11) repeat-x!important}.bg-gradient-lightblue{color:#fff;background:#3c8dbc linear-gradient(180deg,#579cc5,#3c8dbc) repeat-x!important}.bg-gradient-lightblue.btn.disabled,.bg-gradient-lightblue.btn:disabled,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled).active,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-lightblue.btn.dropdown-toggle{background-image:none!important}.bg-gradient-lightblue.btn:hover{border-color:#307095;color:#ececec;background:#33779f linear-gradient(180deg,#4f89ac,#33779f) repeat-x!important}.bg-gradient-lightblue.btn.active,.bg-gradient-lightblue.btn:active,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled).active,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled):active{border-color:#2d698c;color:#fff;background:#307095 linear-gradient(180deg,#4d83a4,#307095) repeat-x!important}.bg-gradient-navy{color:#fff;background:#001f3f linear-gradient(180deg,#243f5b,#001f3f) repeat-x!important}.bg-gradient-navy.btn.disabled,.bg-gradient-navy.btn:disabled,.bg-gradient-navy.btn:not(:disabled):not(.disabled).active,.bg-gradient-navy.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-navy.btn.dropdown-toggle{background-image:none!important}.bg-gradient-navy.btn:hover{border-color:#00060c;color:#ececec;background:#000c19 linear-gradient(180deg,#242e3a,#000c19) repeat-x!important}.bg-gradient-navy.btn.active,.bg-gradient-navy.btn:active,.bg-gradient-navy.btn:not(:disabled):not(.disabled).active,.bg-gradient-navy.btn:not(:disabled):not(.disabled):active{border-color:#000;color:#fff;background:#00060c linear-gradient(180deg,#24292f,#00060c) repeat-x!important}.bg-gradient-olive{color:#fff;background:#3d9970 linear-gradient(180deg,#58a684,#3d9970) repeat-x!important}.bg-gradient-olive.btn.disabled,.bg-gradient-olive.btn:disabled,.bg-gradient-olive.btn:not(:disabled):not(.disabled).active,.bg-gradient-olive.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-olive.btn.dropdown-toggle{background-image:none!important}.bg-gradient-olive.btn:hover{border-color:#2e7555;color:#ececec;background:#327e5c linear-gradient(180deg,#4e8f73,#327e5c) repeat-x!important}.bg-gradient-olive.btn.active,.bg-gradient-olive.btn:active,.bg-gradient-olive.btn:not(:disabled):not(.disabled).active,.bg-gradient-olive.btn:not(:disabled):not(.disabled):active{border-color:#2b6b4f;color:#fff;background:#2e7555 linear-gradient(180deg,#4b886d,#2e7555) repeat-x!important}.bg-gradient-lime{color:#2a2e30;background:#01ff70 linear-gradient(180deg,#25fd84,#01ff70) repeat-x!important}.bg-gradient-lime.btn.disabled,.bg-gradient-lime.btn:disabled,.bg-gradient-lime.btn:not(:disabled):not(.disabled).active,.bg-gradient-lime.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-lime.btn.dropdown-toggle{background-image:none!important}.bg-gradient-lime.btn:hover{border-color:#00cd5a;color:#181a1c;background:#00da5f linear-gradient(180deg,#24dd76,#00da5f) repeat-x!important}.bg-gradient-lime.btn.active,.bg-gradient-lime.btn:active,.bg-gradient-lime.btn:not(:disabled):not(.disabled).active,.bg-gradient-lime.btn:not(:disabled):not(.disabled):active{border-color:#00c054;color:#fff;background:#00cd5a linear-gradient(180deg,#24d272,#00cd5a) repeat-x!important}.bg-gradient-fuchsia{color:#fff;background:#f012be linear-gradient(180deg,#f033c7,#f012be) repeat-x!important}.bg-gradient-fuchsia.btn.disabled,.bg-gradient-fuchsia.btn:disabled,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-fuchsia.btn.dropdown-toggle{background-image:none!important}.bg-gradient-fuchsia.btn:hover{border-color:#c30c9a;color:#ececec;background:#cf0da3 linear-gradient(180deg,#d42fb0,#cf0da3) repeat-x!important}.bg-gradient-fuchsia.btn.active,.bg-gradient-fuchsia.btn:active,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active{border-color:#b70c90;color:#fff;background:#c30c9a linear-gradient(180deg,#ca2ea8,#c30c9a) repeat-x!important}.bg-gradient-maroon{color:#fff;background:#d81b60 linear-gradient(180deg,#db3b77,#d81b60) repeat-x!important}.bg-gradient-maroon.btn.disabled,.bg-gradient-maroon.btn:disabled,.bg-gradient-maroon.btn:not(:disabled):not(.disabled).active,.bg-gradient-maroon.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-maroon.btn.dropdown-toggle{background-image:none!important}.bg-gradient-maroon.btn:hover{border-color:#ab154c;color:#ececec;background:#b61751 linear-gradient(180deg,#bf386a,#b61751) repeat-x!important}.bg-gradient-maroon.btn.active,.bg-gradient-maroon.btn:active,.bg-gradient-maroon.btn:not(:disabled):not(.disabled).active,.bg-gradient-maroon.btn:not(:disabled):not(.disabled):active{border-color:#9f1447;color:#fff;background:#ab154c linear-gradient(180deg,#b53666,#ab154c) repeat-x!important}.bg-gradient-blue{color:#fff;background:#3085d6 linear-gradient(180deg,#4d95db,#3085d6) repeat-x!important}.bg-gradient-blue.btn.disabled,.bg-gradient-blue.btn:disabled,.bg-gradient-blue.btn:not(:disabled):not(.disabled).active,.bg-gradient-blue.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-blue.btn.dropdown-toggle{background-image:none!important}.bg-gradient-blue.btn:hover{border-color:#236bb0;color:#ececec;background:#2572bb linear-gradient(180deg,#4385c4,#2572bb) repeat-x!important}.bg-gradient-blue.btn.active,.bg-gradient-blue.btn:active,.bg-gradient-blue.btn:not(:disabled):not(.disabled).active,.bg-gradient-blue.btn:not(:disabled):not(.disabled):active{border-color:#2165a5;color:#fff;background:#236bb0 linear-gradient(180deg,#427fbb,#236bb0) repeat-x!important}.bg-gradient-indigo{color:#fff;background:#5c6bc6 linear-gradient(180deg,#727fcd,#5c6bc6) repeat-x!important}.bg-gradient-indigo.btn.disabled,.bg-gradient-indigo.btn:disabled,.bg-gradient-indigo.btn:not(:disabled):not(.disabled).active,.bg-gradient-indigo.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-indigo.btn.dropdown-toggle{background-image:none!important}.bg-gradient-indigo.btn:hover{border-color:#3e4eb1;color:#ececec;background:#4152bb linear-gradient(180deg,#5b6ac4,#4152bb) repeat-x!important}.bg-gradient-indigo.btn.active,.bg-gradient-indigo.btn:active,.bg-gradient-indigo.btn:not(:disabled):not(.disabled).active,.bg-gradient-indigo.btn:not(:disabled):not(.disabled):active{border-color:#3b4aa8;color:#fff;background:#3e4eb1 linear-gradient(180deg,#5966bc,#3e4eb1) repeat-x!important}.bg-gradient-purple{color:#fff;background:#6f42c1 linear-gradient(180deg,#825cc9,#6f42c1) repeat-x!important}.bg-gradient-purple.btn.disabled,.bg-gradient-purple.btn:disabled,.bg-gradient-purple.btn:not(:disabled):not(.disabled).active,.bg-gradient-purple.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-purple.btn.dropdown-toggle{background-image:none!important}.bg-gradient-purple.btn:hover{border-color:#59339d;color:#ececec;background:#5e37a6 linear-gradient(180deg,#7453b2,#5e37a6) repeat-x!important}.bg-gradient-purple.btn.active,.bg-gradient-purple.btn:active,.bg-gradient-purple.btn:not(:disabled):not(.disabled).active,.bg-gradient-purple.btn:not(:disabled):not(.disabled):active{border-color:#533093;color:#fff;background:#59339d linear-gradient(180deg,#7050ab,#59339d) repeat-x!important}.bg-gradient-pink{color:#2a2e30;background:#ff8acc linear-gradient(180deg,#fd99d2,#ff8acc) repeat-x!important}.bg-gradient-pink.btn.disabled,.bg-gradient-pink.btn:disabled,.bg-gradient-pink.btn:not(:disabled):not(.disabled).active,.bg-gradient-pink.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-pink.btn.dropdown-toggle{background-image:none!important}.bg-gradient-pink.btn:hover{border-color:#ff57b6;color:#181a1c;background:#ff64bb linear-gradient(180deg,#fd79c4,#ff64bb) repeat-x!important}.bg-gradient-pink.btn.active,.bg-gradient-pink.btn:active,.bg-gradient-pink.btn:not(:disabled):not(.disabled).active,.bg-gradient-pink.btn:not(:disabled):not(.disabled):active{border-color:#ff4ab0;color:#fff;background:#ff57b6 linear-gradient(180deg,#fd6ec0,#ff57b6) repeat-x!important}.bg-gradient-red{color:#fff;background:#ea5455 linear-gradient(180deg,#eb6c6d,#ea5455) repeat-x!important}.bg-gradient-red.btn.disabled,.bg-gradient-red.btn:disabled,.bg-gradient-red.btn:not(:disabled):not(.disabled).active,.bg-gradient-red.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-red.btn.dropdown-toggle{background-image:none!important}.bg-gradient-red.btn:hover{border-color:#e42728;color:#ececec;background:#e63233 linear-gradient(180deg,#e74f50,#e63233) repeat-x!important}.bg-gradient-red.btn.active,.bg-gradient-red.btn:active,.bg-gradient-red.btn:not(:disabled):not(.disabled).active,.bg-gradient-red.btn:not(:disabled):not(.disabled):active{border-color:#e21c1d;color:#fff;background:#e42728 linear-gradient(180deg,#e64547,#e42728) repeat-x!important}.bg-gradient-orange{color:#2a2e30;background:#dda451 linear-gradient(180deg,#e0b06a,#dda451) repeat-x!important}.bg-gradient-orange.btn.disabled,.bg-gradient-orange.btn:disabled,.bg-gradient-orange.btn:not(:disabled):not(.disabled).active,.bg-gradient-orange.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-orange.btn.dropdown-toggle{background-image:none!important}.bg-gradient-orange.btn:hover{border-color:#d28d29;color:#181a1c;background:#d79331 linear-gradient(180deg,#dba14f,#d79331) repeat-x!important}.bg-gradient-orange.btn.active,.bg-gradient-orange.btn:active,.bg-gradient-orange.btn:not(:disabled):not(.disabled).active,.bg-gradient-orange.btn:not(:disabled):not(.disabled):active{border-color:#c78627;color:#2a2e30;background:#d28d29 linear-gradient(180deg,#d69c48,#d28d29) repeat-x!important}.bg-gradient-yellow{color:#2a2e30;background:#edc30e linear-gradient(180deg,#edca31,#edc30e) repeat-x!important}.bg-gradient-yellow.btn.disabled,.bg-gradient-yellow.btn:disabled,.bg-gradient-yellow.btn:not(:disabled):not(.disabled).active,.bg-gradient-yellow.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-yellow.btn.dropdown-toggle{background-image:none!important}.bg-gradient-yellow.btn:hover{border-color:#bd9b0b;color:#181a1c;background:#c9a50c linear-gradient(180deg,#cfb02f,#c9a50c) repeat-x!important}.bg-gradient-yellow.btn.active,.bg-gradient-yellow.btn:active,.bg-gradient-yellow.btn:not(:disabled):not(.disabled).active,.bg-gradient-yellow.btn:not(:disabled):not(.disabled):active{border-color:#b1910a;color:#fff;background:#bd9b0b linear-gradient(180deg,#c5a82e,#bd9b0b) repeat-x!important}.bg-gradient-green{color:#fff;background:#21b978 linear-gradient(180deg,#40c18b,#21b978) repeat-x!important}.bg-gradient-green.btn.disabled,.bg-gradient-green.btn:disabled,.bg-gradient-green.btn:not(:disabled):not(.disabled).active,.bg-gradient-green.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-green.btn.dropdown-toggle{background-image:none!important}.bg-gradient-green.btn:hover{border-color:#198e5c;color:#ececec;background:#1b9963 linear-gradient(180deg,#3ba679,#1b9963) repeat-x!important}.bg-gradient-green.btn.active,.bg-gradient-green.btn:active,.bg-gradient-green.btn:not(:disabled):not(.disabled).active,.bg-gradient-green.btn:not(:disabled):not(.disabled):active{border-color:#178355;color:#fff;background:#198e5c linear-gradient(180deg,#399d73,#198e5c) repeat-x!important}.bg-gradient-teal{color:#fff;background:#20c997 linear-gradient(180deg,#3fcfa5,#20c997) repeat-x!important}.bg-gradient-teal.btn.disabled,.bg-gradient-teal.btn:disabled,.bg-gradient-teal.btn:not(:disabled):not(.disabled).active,.bg-gradient-teal.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-teal.btn.dropdown-toggle{background-image:none!important}.bg-gradient-teal.btn:hover{border-color:#199d76;color:#ececec;background:#1ba87e linear-gradient(180deg,#3bb390,#1ba87e) repeat-x!important}.bg-gradient-teal.btn.active,.bg-gradient-teal.btn:active,.bg-gradient-teal.btn:not(:disabled):not(.disabled).active,.bg-gradient-teal.btn:not(:disabled):not(.disabled):active{border-color:#17926e;color:#fff;background:#199d76 linear-gradient(180deg,#39aa89,#199d76) repeat-x!important}.bg-gradient-cyan{color:#fff;background:#7367f0 linear-gradient(180deg,#867cf1,#7367f0) repeat-x!important}.bg-gradient-cyan.btn.disabled,.bg-gradient-cyan.btn:disabled,.bg-gradient-cyan.btn:not(:disabled):not(.disabled).active,.bg-gradient-cyan.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-cyan.btn.dropdown-toggle{background-image:none!important}.bg-gradient-cyan.btn:hover{border-color:#4839eb;color:#ececec;background:#5344ed linear-gradient(180deg,#6a5eef,#5344ed) repeat-x!important}.bg-gradient-cyan.btn.active,.bg-gradient-cyan.btn:active,.bg-gradient-cyan.btn:not(:disabled):not(.disabled).active,.bg-gradient-cyan.btn:not(:disabled):not(.disabled):active{border-color:#3e2dea;color:#fff;background:#4839eb linear-gradient(180deg,#6155ed,#4839eb) repeat-x!important}.bg-gradient-white{color:#2a2e30;background:#fff linear-gradient(180deg,#fdfdfe,#fff) repeat-x!important}.bg-gradient-white.btn.disabled,.bg-gradient-white.btn:disabled,.bg-gradient-white.btn:not(:disabled):not(.disabled).active,.bg-gradient-white.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-white.btn.dropdown-toggle{background-image:none!important}.bg-gradient-white.btn:hover{border-color:#e6e6e6;color:#181a1c;background:#ececec linear-gradient(180deg,#ecedee,#ececec) repeat-x!important}.bg-gradient-white.btn.active,.bg-gradient-white.btn:active,.bg-gradient-white.btn:not(:disabled):not(.disabled).active,.bg-gradient-white.btn:not(:disabled):not(.disabled):active{border-color:#dfdfdf;color:#2a2e30;background:#e6e6e6 linear-gradient(180deg,#e7e8e9,#e6e6e6) repeat-x!important}.bg-gradient-gray{color:#2a2e30;background:#b8c2cc linear-gradient(180deg,#c0c9d2,#b8c2cc) repeat-x!important}.bg-gradient-gray.btn.disabled,.bg-gradient-gray.btn:disabled,.bg-gradient-gray.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-gray.btn.dropdown-toggle{background-image:none!important}.bg-gradient-gray.btn:hover{border-color:#9aa9b7;color:#181a1c;background:#a2afbc linear-gradient(180deg,#aeb9c5,#a2afbc) repeat-x!important}.bg-gradient-gray.btn.active,.bg-gradient-gray.btn:active,.bg-gradient-gray.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray.btn:not(:disabled):not(.disabled):active{border-color:#93a2b1;color:#2a2e30;background:#9aa9b7 linear-gradient(180deg,#a7b4c1,#9aa9b7) repeat-x!important}.bg-gradient-gray-dark{color:#fff;background:#1e1e1e linear-gradient(180deg,#3d3e3f,#1e1e1e) repeat-x!important}.bg-gradient-gray-dark.btn.disabled,.bg-gradient-gray-dark.btn:disabled,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-gray-dark.btn.dropdown-toggle{background-image:none!important}.bg-gradient-gray-dark.btn:hover{border-color:#050505;color:#ececec;background:#0b0b0b linear-gradient(180deg,#2d2e2e,#0b0b0b) repeat-x!important}.bg-gradient-gray-dark.btn.active,.bg-gradient-gray-dark.btn:active,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active{border-color:#000;color:#fff;background:#050505 linear-gradient(180deg,#282829,#050505) repeat-x!important}[class^=bg-].disabled{opacity:.65}a.text-muted:hover{color:#6d8be6!important}.link-muted{color:#5d6974}.link-muted:focus,.link-muted:hover{color:#464f58}.link-black{color:#b8c2cc}.link-black:focus,.link-black:hover{color:#e6e8ea}.accent-primary .btn-link,.accent-primary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#6d8be6}.accent-primary .btn-link:hover,.accent-primary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#2c57db}.accent-primary .dropdown-item.active,.accent-primary .dropdown-item:active{background:#6d8be6;color:#fff}.accent-primary .custom-control-input:checked~.custom-control-label:before{background:#6d8be6;border-color:#234cca}.accent-primary .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-primary .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-primary .custom-file-input:focus~.custom-file-label,.accent-primary .custom-select:focus,.accent-primary .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#dae1f9}.accent-primary .page-item .page-link{color:#6d8be6}.accent-primary .page-item.active .page-link,.accent-primary .page-item.active a{background-color:#6d8be6;border-color:#6d8be6;color:#fff}.accent-primary .page-item.disabled .page-link,.accent-primary .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-primary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-primary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-primary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-primary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-secondary .btn-link,.accent-secondary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#b8c2cc}.accent-secondary .btn-link:hover,.accent-secondary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#8b9cac}.accent-secondary .dropdown-item.active,.accent-secondary .dropdown-item:active{background:#b8c2cc;color:#2a2e30}.accent-secondary .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.accent-secondary .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-secondary .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-secondary .custom-file-input:focus~.custom-file-label,.accent-secondary .custom-select:focus,.accent-secondary .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-secondary .page-item .page-link{color:#b8c2cc}.accent-secondary .page-item.active .page-link,.accent-secondary .page-item.active a{background-color:#b8c2cc;border-color:#b8c2cc;color:#fff}.accent-secondary .page-item.disabled .page-link,.accent-secondary .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-secondary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-secondary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-secondary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-secondary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-success .btn-link,.accent-success a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#21b978}.accent-success .btn-link:hover,.accent-success a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#15784e}.accent-success .dropdown-item.active,.accent-success .dropdown-item:active{background:#21b978;color:#fff}.accent-success .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.accent-success .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-success .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-success .custom-file-input:focus~.custom-file-label,.accent-success .custom-select:focus,.accent-success .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#73e6b5}.accent-success .page-item .page-link{color:#21b978}.accent-success .page-item.active .page-link,.accent-success .page-item.active a{background-color:#21b978;border-color:#21b978;color:#fff}.accent-success .page-item.disabled .page-link,.accent-success .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-success [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-success [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-success [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-success [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-info .btn-link,.accent-info a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#4277cf}.accent-info .btn-link:hover,.accent-info a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#28549d}.accent-info .dropdown-item.active,.accent-info .dropdown-item:active{background:#4277cf;color:#fff}.accent-info .custom-control-input:checked~.custom-control-label:before{background:#4277cf;border-color:#234988}.accent-info .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-info .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-info .custom-file-input:focus~.custom-file-label,.accent-info .custom-select:focus,.accent-info .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#a8c0e9}.accent-info .page-item .page-link{color:#4277cf}.accent-info .page-item.active .page-link,.accent-info .page-item.active a{background-color:#4277cf;border-color:#4277cf;color:#fff}.accent-info .page-item.disabled .page-link,.accent-info .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-info [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-info [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-info [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-info [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-warning .btn-link,.accent-warning a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#dda451}.accent-warning .btn-link:hover,.accent-warning a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#bd7f25}.accent-warning .dropdown-item.active,.accent-warning .dropdown-item:active{background:#dda451;color:#2a2e30}.accent-warning .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.accent-warning .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-warning .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-warning .custom-file-input:focus~.custom-file-label,.accent-warning .custom-select:focus,.accent-warning .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f2dcbc}.accent-warning .page-item .page-link{color:#dda451}.accent-warning .page-item.active .page-link,.accent-warning .page-item.active a{background-color:#dda451;border-color:#dda451;color:#fff}.accent-warning .page-item.disabled .page-link,.accent-warning .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-warning [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-warning [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-warning [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-warning [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-danger .btn-link,.accent-danger a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#ea5455}.accent-danger .btn-link:hover,.accent-danger a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#d71a1c}.accent-danger .dropdown-item.active,.accent-danger .dropdown-item:active{background:#ea5455;color:#fff}.accent-danger .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.accent-danger .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-danger .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-danger .custom-file-input:focus~.custom-file-label,.accent-danger .custom-select:focus,.accent-danger .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f8c6c6}.accent-danger .page-item .page-link{color:#ea5455}.accent-danger .page-item.active .page-link,.accent-danger .page-item.active a{background-color:#ea5455;border-color:#ea5455;color:#fff}.accent-danger .page-item.disabled .page-link,.accent-danger .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-danger [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-danger [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-danger [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-danger [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-light .btn-link,.accent-light a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#f7f7f9}.accent-light .btn-link:hover,.accent-light a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#cbcbd8}.accent-light .dropdown-item.active,.accent-light .dropdown-item:active{background:#f7f7f9;color:#2a2e30}.accent-light .custom-control-input:checked~.custom-control-label:before{background:#f7f7f9;border-color:#bdbdcd}.accent-light .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-light .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-light .custom-file-input:focus~.custom-file-label,.accent-light .custom-select:focus,.accent-light .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-light .page-item .page-link{color:#f7f7f9}.accent-light .page-item.active .page-link,.accent-light .page-item.active a{background-color:#f7f7f9;border-color:#f7f7f9;color:#fff}.accent-light .page-item.disabled .page-link,.accent-light .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-light [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-light [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-light [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-light [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-dark .btn-link,.accent-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#22292f}.accent-dark .btn-link:hover,.accent-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#020203}.accent-dark .dropdown-item.active,.accent-dark .dropdown-item:active{background:#22292f;color:#fff}.accent-dark .custom-control-input:checked~.custom-control-label:before{background:#22292f;border-color:#000}.accent-dark .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-dark .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-dark .custom-file-input:focus~.custom-file-label,.accent-dark .custom-select:focus,.accent-dark .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#586a79}.accent-dark .page-item .page-link{color:#22292f}.accent-dark .page-item.active .page-link,.accent-dark .page-item.active a{background-color:#22292f;border-color:#22292f;color:#fff}.accent-dark .page-item.disabled .page-link,.accent-dark .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-lightblue .btn-link,.accent-lightblue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#3c8dbc}.accent-lightblue .btn-link:hover,.accent-lightblue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#296282}.accent-lightblue .dropdown-item.active,.accent-lightblue .dropdown-item:active{background:#3c8dbc;color:#fff}.accent-lightblue .custom-control-input:checked~.custom-control-label:before{background:#3c8dbc;border-color:#23536f}.accent-lightblue .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-lightblue .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-lightblue .custom-file-input:focus~.custom-file-label,.accent-lightblue .custom-select:focus,.accent-lightblue .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#99c5de}.accent-lightblue .page-item .page-link{color:#3c8dbc}.accent-lightblue .page-item.active .page-link,.accent-lightblue .page-item.active a{background-color:#3c8dbc;border-color:#3c8dbc;color:#fff}.accent-lightblue .page-item.disabled .page-link,.accent-lightblue .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-lightblue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lightblue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-lightblue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lightblue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-navy .btn-link,.accent-navy a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#001f3f}.accent-navy .btn-link:hover,.accent-navy a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#000}.accent-navy .dropdown-item.active,.accent-navy .dropdown-item:active{background:#001f3f;color:#fff}.accent-navy .custom-control-input:checked~.custom-control-label:before{background:#001f3f;border-color:#000}.accent-navy .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-navy .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-navy .custom-file-input:focus~.custom-file-label,.accent-navy .custom-select:focus,.accent-navy .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#005ebf}.accent-navy .page-item .page-link{color:#001f3f}.accent-navy .page-item.active .page-link,.accent-navy .page-item.active a{background-color:#001f3f;border-color:#001f3f;color:#fff}.accent-navy .page-item.disabled .page-link,.accent-navy .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-navy [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-navy [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-navy [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-navy [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-olive .btn-link,.accent-olive a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#3d9970}.accent-olive .btn-link:hover,.accent-olive a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#276248}.accent-olive .dropdown-item.active,.accent-olive .dropdown-item:active{background:#3d9970;color:#fff}.accent-olive .custom-control-input:checked~.custom-control-label:before{background:#3d9970;border-color:#20503b}.accent-olive .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-olive .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-olive .custom-file-input:focus~.custom-file-label,.accent-olive .custom-select:focus,.accent-olive .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#87cfaf}.accent-olive .page-item .page-link{color:#3d9970}.accent-olive .page-item.active .page-link,.accent-olive .page-item.active a{background-color:#3d9970;border-color:#3d9970;color:#fff}.accent-olive .page-item.disabled .page-link,.accent-olive .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-olive [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-olive [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-olive [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-olive [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-lime .btn-link,.accent-lime a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#01ff70}.accent-lime .btn-link:hover,.accent-lime a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#00b44e}.accent-lime .dropdown-item.active,.accent-lime .dropdown-item:active{background:#01ff70;color:#2a2e30}.accent-lime .custom-control-input:checked~.custom-control-label:before{background:#01ff70;border-color:#009a43}.accent-lime .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-lime .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-lime .custom-file-input:focus~.custom-file-label,.accent-lime .custom-select:focus,.accent-lime .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#81ffb8}.accent-lime .page-item .page-link{color:#01ff70}.accent-lime .page-item.active .page-link,.accent-lime .page-item.active a{background-color:#01ff70;border-color:#01ff70;color:#fff}.accent-lime .page-item.disabled .page-link,.accent-lime .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-lime [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lime [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-lime [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lime [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-fuchsia .btn-link,.accent-fuchsia a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#f012be}.accent-fuchsia .btn-link:hover,.accent-fuchsia a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#ab0b87}.accent-fuchsia .dropdown-item.active,.accent-fuchsia .dropdown-item:active{background:#f012be;color:#fff}.accent-fuchsia .custom-control-input:checked~.custom-control-label:before{background:#f012be;border-color:#930974}.accent-fuchsia .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-fuchsia .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-fuchsia .custom-file-input:focus~.custom-file-label,.accent-fuchsia .custom-select:focus,.accent-fuchsia .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f88adf}.accent-fuchsia .page-item .page-link{color:#f012be}.accent-fuchsia .page-item.active .page-link,.accent-fuchsia .page-item.active a{background-color:#f012be;border-color:#f012be;color:#fff}.accent-fuchsia .page-item.disabled .page-link,.accent-fuchsia .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-fuchsia [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-fuchsia [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-fuchsia [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-fuchsia [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-maroon .btn-link,.accent-maroon a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#d81b60}.accent-maroon .btn-link:hover,.accent-maroon a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#941342}.accent-maroon .dropdown-item.active,.accent-maroon .dropdown-item:active{background:#d81b60;color:#fff}.accent-maroon .custom-control-input:checked~.custom-control-label:before{background:#d81b60;border-color:#7d1038}.accent-maroon .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-maroon .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-maroon .custom-file-input:focus~.custom-file-label,.accent-maroon .custom-select:focus,.accent-maroon .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f083ab}.accent-maroon .page-item .page-link{color:#d81b60}.accent-maroon .page-item.active .page-link,.accent-maroon .page-item.active a{background-color:#d81b60;border-color:#d81b60;color:#fff}.accent-maroon .page-item.disabled .page-link,.accent-maroon .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-maroon [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-maroon [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-maroon [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-maroon [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-blue .btn-link,.accent-blue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#3085d6}.accent-blue .btn-link:hover,.accent-blue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#1f5e9b}.accent-blue .dropdown-item.active,.accent-blue .dropdown-item:active{background:#3085d6;color:#fff}.accent-blue .custom-control-input:checked~.custom-control-label:before{background:#3085d6;border-color:#1a5186}.accent-blue .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-blue .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-blue .custom-file-input:focus~.custom-file-label,.accent-blue .custom-select:focus,.accent-blue .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#9ac4eb}.accent-blue .page-item .page-link{color:#3085d6}.accent-blue .page-item.active .page-link,.accent-blue .page-item.active a{background-color:#3085d6;border-color:#3085d6;color:#fff}.accent-blue .page-item.disabled .page-link,.accent-blue .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-blue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-blue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-blue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-blue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-indigo .btn-link,.accent-indigo a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#5c6bc6}.accent-indigo .btn-link:hover,.accent-indigo a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#37469e}.accent-indigo .dropdown-item.active,.accent-indigo .dropdown-item:active{background:#5c6bc6;color:#fff}.accent-indigo .custom-control-input:checked~.custom-control-label:before{background:#5c6bc6;border-color:#313e8b}.accent-indigo .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-indigo .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-indigo .custom-file-input:focus~.custom-file-label,.accent-indigo .custom-select:focus,.accent-indigo .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#bac1e7}.accent-indigo .page-item .page-link{color:#5c6bc6}.accent-indigo .page-item.active .page-link,.accent-indigo .page-item.active a{background-color:#5c6bc6;border-color:#5c6bc6;color:#fff}.accent-indigo .page-item.disabled .page-link,.accent-indigo .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-indigo [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-indigo [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-indigo [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-indigo [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-purple .btn-link,.accent-purple a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#6f42c1}.accent-purple .btn-link:hover,.accent-purple a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#4e2d89}.accent-purple .dropdown-item.active,.accent-purple .dropdown-item:active{background:#6f42c1;color:#fff}.accent-purple .custom-control-input:checked~.custom-control-label:before{background:#6f42c1;border-color:#432776}.accent-purple .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-purple .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-purple .custom-file-input:focus~.custom-file-label,.accent-purple .custom-select:focus,.accent-purple .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#b8a2e0}.accent-purple .page-item .page-link{color:#6f42c1}.accent-purple .page-item.active .page-link,.accent-purple .page-item.active a{background-color:#6f42c1;border-color:#6f42c1;color:#fff}.accent-purple .page-item.disabled .page-link,.accent-purple .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-purple [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-purple [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-purple [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-purple [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-pink .btn-link,.accent-pink a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#ff8acc}.accent-pink .btn-link:hover,.accent-pink a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#ff3eab}.accent-pink .dropdown-item.active,.accent-pink .dropdown-item:active{background:#ff8acc;color:#2a2e30}.accent-pink .custom-control-input:checked~.custom-control-label:before{background:#ff8acc;border-color:#ff24a0}.accent-pink .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-pink .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-pink .custom-file-input:focus~.custom-file-label,.accent-pink .custom-select:focus,.accent-pink .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-pink .page-item .page-link{color:#ff8acc}.accent-pink .page-item.active .page-link,.accent-pink .page-item.active a{background-color:#ff8acc;border-color:#ff8acc;color:#fff}.accent-pink .page-item.disabled .page-link,.accent-pink .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-pink [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-pink [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-pink [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-pink [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-red .btn-link,.accent-red a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#ea5455}.accent-red .btn-link:hover,.accent-red a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#d71a1c}.accent-red .dropdown-item.active,.accent-red .dropdown-item:active{background:#ea5455;color:#fff}.accent-red .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.accent-red .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-red .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-red .custom-file-input:focus~.custom-file-label,.accent-red .custom-select:focus,.accent-red .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f8c6c6}.accent-red .page-item .page-link{color:#ea5455}.accent-red .page-item.active .page-link,.accent-red .page-item.active a{background-color:#ea5455;border-color:#ea5455;color:#fff}.accent-red .page-item.disabled .page-link,.accent-red .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-red [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-red [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-red [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-red [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-orange .btn-link,.accent-orange a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#dda451}.accent-orange .btn-link:hover,.accent-orange a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#bd7f25}.accent-orange .dropdown-item.active,.accent-orange .dropdown-item:active{background:#dda451;color:#2a2e30}.accent-orange .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.accent-orange .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-orange .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-orange .custom-file-input:focus~.custom-file-label,.accent-orange .custom-select:focus,.accent-orange .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f2dcbc}.accent-orange .page-item .page-link{color:#dda451}.accent-orange .page-item.active .page-link,.accent-orange .page-item.active a{background-color:#dda451;border-color:#dda451;color:#fff}.accent-orange .page-item.disabled .page-link,.accent-orange .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-orange [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-orange [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-orange [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-orange [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-yellow .btn-link,.accent-yellow a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#edc30e}.accent-yellow .btn-link:hover,.accent-yellow a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#a5880a}.accent-yellow .dropdown-item.active,.accent-yellow .dropdown-item:active{background:#edc30e;color:#2a2e30}.accent-yellow .custom-control-input:checked~.custom-control-label:before{background:#edc30e;border-color:#8d7408}.accent-yellow .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-yellow .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-yellow .custom-file-input:focus~.custom-file-label,.accent-yellow .custom-select:focus,.accent-yellow .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f8e283}.accent-yellow .page-item .page-link{color:#edc30e}.accent-yellow .page-item.active .page-link,.accent-yellow .page-item.active a{background-color:#edc30e;border-color:#edc30e;color:#fff}.accent-yellow .page-item.disabled .page-link,.accent-yellow .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-yellow [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-yellow [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-yellow [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-yellow [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-green .btn-link,.accent-green a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#21b978}.accent-green .btn-link:hover,.accent-green a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#15784e}.accent-green .dropdown-item.active,.accent-green .dropdown-item:active{background:#21b978;color:#fff}.accent-green .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.accent-green .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-green .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-green .custom-file-input:focus~.custom-file-label,.accent-green .custom-select:focus,.accent-green .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#73e6b5}.accent-green .page-item .page-link{color:#21b978}.accent-green .page-item.active .page-link,.accent-green .page-item.active a{background-color:#21b978;border-color:#21b978;color:#fff}.accent-green .page-item.disabled .page-link,.accent-green .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-green [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-green [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-green [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-green [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-teal .btn-link,.accent-teal a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#20c997}.accent-teal .btn-link:hover,.accent-teal a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#158765}.accent-teal .dropdown-item.active,.accent-teal .dropdown-item:active{background:#20c997;color:#fff}.accent-teal .custom-control-input:checked~.custom-control-label:before{background:#20c997;border-color:#127155}.accent-teal .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-teal .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-teal .custom-file-input:focus~.custom-file-label,.accent-teal .custom-select:focus,.accent-teal .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#7eeaca}.accent-teal .page-item .page-link{color:#20c997}.accent-teal .page-item.active .page-link,.accent-teal .page-item.active a{background-color:#20c997;border-color:#20c997;color:#fff}.accent-teal .page-item.disabled .page-link,.accent-teal .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-teal [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-teal [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-teal [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-teal [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-cyan .btn-link,.accent-cyan a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#7367f0}.accent-cyan .btn-link:hover,.accent-cyan a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#3321e9}.accent-cyan .dropdown-item.active,.accent-cyan .dropdown-item:active{background:#7367f0;color:#fff}.accent-cyan .custom-control-input:checked~.custom-control-label:before{background:#7367f0;border-color:#2716db}.accent-cyan .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-cyan .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-cyan .custom-file-input:focus~.custom-file-label,.accent-cyan .custom-select:focus,.accent-cyan .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#dedbfb}.accent-cyan .page-item .page-link{color:#7367f0}.accent-cyan .page-item.active .page-link,.accent-cyan .page-item.active a{background-color:#7367f0;border-color:#7367f0;color:#fff}.accent-cyan .page-item.disabled .page-link,.accent-cyan .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-cyan [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-cyan [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-cyan [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-cyan [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-white .btn-link,.accent-white a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#fff}.accent-white .btn-link:hover,.accent-white a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#d9d9d9}.accent-white .dropdown-item.active,.accent-white .dropdown-item:active{background:#fff;color:#2a2e30}.accent-white .custom-control-input:checked~.custom-control-label:before{background:#fff;border-color:#ccc}.accent-white .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-white .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-white .custom-file-input:focus~.custom-file-label,.accent-white .custom-select:focus,.accent-white .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-white .page-item .page-link{color:#fff}.accent-white .page-item.active .page-link,.accent-white .page-item.active a{background-color:#fff;border-color:#fff;color:#fff}.accent-white .page-item.disabled .page-link,.accent-white .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-white [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-white [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-white [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-white [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-gray .btn-link,.accent-gray a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#b8c2cc}.accent-gray .btn-link:hover,.accent-gray a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#8b9cac}.accent-gray .dropdown-item.active,.accent-gray .dropdown-item:active{background:#b8c2cc;color:#2a2e30}.accent-gray .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.accent-gray .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-gray .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-gray .custom-file-input:focus~.custom-file-label,.accent-gray .custom-select:focus,.accent-gray .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-gray .page-item .page-link{color:#b8c2cc}.accent-gray .page-item.active .page-link,.accent-gray .page-item.active a{background-color:#b8c2cc;border-color:#b8c2cc;color:#fff}.accent-gray .page-item.disabled .page-link,.accent-gray .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-gray [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-gray [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-gray-dark .btn-link,.accent-gray-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#1e1e1e}.accent-gray-dark .btn-link:hover,.accent-gray-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#000}.accent-gray-dark .dropdown-item.active,.accent-gray-dark .dropdown-item:active{background:#1e1e1e;color:#fff}.accent-gray-dark .custom-control-input:checked~.custom-control-label:before{background:#1e1e1e;border-color:#000}.accent-gray-dark .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-gray-dark .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-gray-dark .custom-file-input:focus~.custom-file-label,.accent-gray-dark .custom-select:focus,.accent-gray-dark .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#5e5e5e}.accent-gray-dark .page-item .page-link{color:#1e1e1e}.accent-gray-dark .page-item.active .page-link,.accent-gray-dark .page-item.active a{background-color:#1e1e1e;border-color:#1e1e1e;color:#fff}.accent-gray-dark .page-item.disabled .page-link,.accent-gray-dark .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-gray-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-gray-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}[class*=accent-] a.btn-primary{color:#fff}[class*=accent-] a.btn-secondary{color:#2a2e30}[class*=accent-] a.btn-info,[class*=accent-] a.btn-success{color:#fff}[class*=accent-] a.btn-warning{color:#2a2e30}[class*=accent-] a.btn-danger{color:#fff}[class*=accent-] a.btn-light{color:#2a2e30}[class*=accent-] a.btn-dark{color:#fff}"
  },
  {
    "path": "public/vendor/dcat-admin/adminlte/adminlte-green.css",
    "content": "/*!\n *   AdminLTE v3.0.4\n *   Author: Colorlib\n *   Website: AdminLTE.io <http://adminlte.io>\n *   License: Open source - MIT <http://opensource.org/licenses/MIT>\n */\n\n/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */:root{--blue:#3085d6;--indigo:#5c6bc6;--purple:#6f42c1;--pink:#ff8acc;--red:#ea5455;--orange:#dda451;--yellow:#edc30e;--green:#21b978;--teal:#20c997;--cyan:#7367f0;--white:#fff;--gray:#b8c2cc;--gray-dark:#1e1e1e;--primary:#4e9876;--secondary:#b8c2cc;--success:#21b978;--info:#4277cf;--warning:#dda451;--danger:#ea5455;--light:#f7f7f9;--dark:#22292f;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:\"Montserrat\",Helvetica,Arial,serif;--font-family-monospace:\"Montserrat\",Helvetica,Arial,serif}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(34,41,47,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Montserrat,Helvetica,Arial,serif;font-size:1rem;font-weight:400;line-height:1.45;color:#626262;text-align:left;background-color:#eff1f7}[tabindex=\"-1\"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#458769;background-color:transparent}a,a:hover{text-decoration:none}a:hover{color:#34654f}a:not([href]):not([tabindex]),a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:Montserrat,Helvetica,Arial,serif;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#b8c2cc;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:#2c2c2c}.h1,h1{font-size:2rem}.h2,h2{font-size:1.74rem}.h3,h3{font-size:1.51rem}.h4,h4{font-size:1.32rem}.h5,h5{font-size:1.14rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(34,41,47,.1)}.small,small{font-size:smaller;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:smaller;color:#b8c2cc}.blockquote-footer:before{content:\"\\2014\\A0\"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#eff1f7;border:1px solid #dae1e7;border-radius:.5rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#b8c2cc}code{word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:90%;color:#fff;background-color:#eee;border-radius:.25rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:90%;color:#2a2e30}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:14px;padding-left:14px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:14px;padding-left:14px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-14px;margin-left:-14px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:14px;padding-left:14px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width:576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width:768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width:992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;margin-bottom:1rem;color:#626262}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #eff1f7}.table thead th{vertical-align:bottom;border-bottom:2px solid #eff1f7}.table tbody+tbody{border-top:2px solid #eff1f7}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #eff1f7}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(34,41,47,.05)}.table-hover tbody tr:hover{color:#626262;background-color:rgba(34,41,47,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#cde2d9}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#a3c9b8}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#bdd9cd}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#ebeef1}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#dadfe4}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#dce1e7}.table-success,.table-success>td,.table-success>th{background-color:#c1ebd9}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8cdbb9}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#aee5cd}.table-info,.table-info>td,.table-info>th{background-color:#cad9f2}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#9db8e6}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#b6caed}.table-warning,.table-warning>td,.table-warning>th{background-color:#f5e6ce}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#edd0a5}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#f1dbb9}.table-danger,.table-danger>td,.table-danger>th{background-color:#f9cfcf}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#f4a6a7}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f6b8b8}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfd}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfbfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#f0f0f0}.table-dark,.table-dark>td,.table-dark>th{background-color:#c1c3c5}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#8c9093}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b4b6b9}.table-active,.table-active>td,.table-active>th{background-color:rgba(34,41,47,.075)}.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(23,28,32,.075)}.table .thead-dark th{color:#fff;background-color:#1e1e1e;border-color:#313131}.table .thead-light th{color:#4e5154;background-color:#ededed;border-color:#eff1f7}.table-dark{color:#fff;background-color:#1e1e1e}.table-dark td,.table-dark th,.table-dark thead th{border-color:#313131}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:34px;padding:.7rem;font-size:.96rem;font-weight:400;line-height:1.25;color:#4e5154;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#4e5154;background-color:#fff;border-color:#4e9876;outline:0;box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.form-control::-moz-placeholder{color:rgba(0,0,0,.5);opacity:1}.form-control:-ms-input-placeholder{color:rgba(0,0,0,.5);opacity:1}.form-control::placeholder{color:rgba(0,0,0,.5);opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#f5f5f1;opacity:1}select.form-control:focus::-ms-value{color:#4e5154;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.7rem + 1px);padding-bottom:calc(.7rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.25}.col-form-label-lg{padding-top:calc(1rem + 1px);padding-bottom:calc(1rem + 1px);font-size:1.25rem;line-height:1.25}.col-form-label-sm{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:.7rem;line-height:1}.form-control-plaintext{display:block;width:100%;padding-top:.7rem;padding-bottom:.7rem;margin-bottom:0;line-height:1.25;color:#adb5bd;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:2rem;padding:.5rem 1.5rem;font-size:.7rem;line-height:1;border-radius:4px}.form-control-lg{height:calc(1.25em + 2rem + 2px);padding:1rem 2.5rem;font-size:1.25rem;line-height:1.25;border-radius:6px}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#b8c2cc}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:smaller;color:#21b978}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:1rem;line-height:1.45;color:#fff;background-color:rgba(33,185,120,.9);border-radius:.5rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#21b978;padding-right:calc(1.25em + 1.4rem);background-repeat:no-repeat;background-position:100% calc(.3125em + .35rem);background-size:calc(.625em + .7rem) calc(.625em + .7rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#21b978;box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.25em + 1.4rem);background-position:top calc(.3125em + .35rem) right calc(.3125em + .35rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#21b978;padding-right:calc(.75em + 2.75rem);background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%231e1e1e' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .7rem center/8px 10px,url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%2321b978' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E\") #fff no-repeat center right 1.7rem/calc(.625em + .7rem) calc(.625em + .7rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#21b978;box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#21b978}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#21b978}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#21b978}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#32db93;background-color:#32db93}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#21b978}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#21b978;box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:smaller;color:#ea5455}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:1rem;line-height:1.45;color:#fff;background-color:rgba(234,84,85,.9);border-radius:.5rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#ea5455;padding-right:calc(1.25em + 1.4rem);background-repeat:no-repeat;background-position:100% calc(.3125em + .35rem);background-size:calc(.625em + .7rem) calc(.625em + .7rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#ea5455;box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.25em + 1.4rem);background-position:top calc(.3125em + .35rem) right calc(.3125em + .35rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#ea5455;padding-right:calc(.75em + 2.75rem);background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%231e1e1e' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .7rem center/8px 10px,url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ea5455' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23ea5455' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E\") #fff no-repeat center right 1.7rem/calc(.625em + .7rem) calc(.625em + .7rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#ea5455;box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#ea5455}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#ea5455}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#ea5455}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#f08182;background-color:#f08182}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#ea5455}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#ea5455;box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#626262;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0 solid transparent;padding:.9rem 2rem;font-size:1rem;line-height:1;border-radius:.42rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#626262;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(78,152,118,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#4e9876;border-color:#4e9876}.btn-primary:hover{color:#fff;background-color:#488c6d;border-color:#488c6d}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(105,167,139,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#4e9876;border-color:#4e9876}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#458769;border-color:#458769}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(105,167,139,.5)}.btn-secondary{color:#2a2e30;background-color:#b8c2cc;border-color:#b8c2cc}.btn-secondary:hover{color:#2a2e30;background-color:#aeb9c5;border-color:#aeb9c5}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(163,172,181,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#2a2e30;background-color:#b8c2cc;border-color:#b8c2cc}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#2a2e30;background-color:#a9b5c1;border-color:#a9b5c1}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(163,172,181,.5)}.btn-success{color:#fff;background-color:#21b978;border-color:#21b978}.btn-success:hover{color:#fff;background-color:#1eaa6e;border-color:#1eaa6e}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(66,196,140,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#21b978;border-color:#21b978}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1da36a;border-color:#1da36a}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(66,196,140,.5)}.btn-info{color:#fff;background-color:#4277cf;border-color:#4277cf}.btn-info:hover{color:#fff;background-color:#346dcb;border-color:#346dcb}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(94,139,214,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#4277cf;border-color:#4277cf}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#3269c5;border-color:#3269c5}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(94,139,214,.5)}.btn-warning{color:#2a2e30;background-color:#dda451;border-color:#dda451}.btn-warning:hover{color:#2a2e30;background-color:#da9c42;border-color:#da9c42}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(194,146,76,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#2a2e30;background-color:#dda451;border-color:#dda451}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#2a2e30;background-color:#d9993c;border-color:#d9993c}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(194,146,76,.5)}.btn-danger{color:#fff;background-color:#ea5455;border-color:#ea5455}.btn-danger:hover{color:#fff;background-color:#e84445;border-color:#e84445}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(237,110,111,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#ea5455;border-color:#ea5455}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#e73d3e;border-color:#e73d3e}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(237,110,111,.5)}.btn-light{color:#2a2e30;background-color:#f7f7f9;border-color:#f7f7f9}.btn-light:hover{color:#2a2e30;background-color:#ededf1;border-color:#ededf1}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#2a2e30;background-color:#f7f7f9;border-color:#f7f7f9}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#2a2e30;background-color:#e8e8ee;border-color:#e8e8ee}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#22292f;border-color:#22292f}.btn-dark:hover{color:#fff;background-color:#1b2025;border-color:#1b2025}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(67,73,78,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#22292f;border-color:#22292f}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#171c20;border-color:#171c20}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(67,73,78,.5)}.btn-outline-primary,.btn-outline-primary:hover{color:#4e9876;border-color:#4e9876}.btn-outline-primary:hover{background-color:rgba(78,152,118,.1)}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(78,152,118,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#4e9876;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#4e9876;border-color:#4e9876}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(78,152,118,.5)}.btn-outline-secondary,.btn-outline-secondary:hover{color:#b8c2cc;border-color:#b8c2cc}.btn-outline-secondary:hover{background-color:rgba(184,194,204,.1)}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(184,194,204,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#b8c2cc;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#2a2e30;background-color:#b8c2cc;border-color:#b8c2cc}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(184,194,204,.5)}.btn-outline-success,.btn-outline-success:hover{color:#21b978;border-color:#21b978}.btn-outline-success:hover{background-color:rgba(33,185,120,.1)}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(33,185,120,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#21b978;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#21b978;border-color:#21b978}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(33,185,120,.5)}.btn-outline-info,.btn-outline-info:hover{color:#4277cf;border-color:#4277cf}.btn-outline-info:hover{background-color:rgba(66,119,207,.1)}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(66,119,207,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#4277cf;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#4277cf;border-color:#4277cf}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(66,119,207,.5)}.btn-outline-warning,.btn-outline-warning:hover{color:#dda451;border-color:#dda451}.btn-outline-warning:hover{background-color:rgba(221,164,81,.1)}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(221,164,81,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#dda451;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#2a2e30;background-color:#dda451;border-color:#dda451}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(221,164,81,.5)}.btn-outline-danger,.btn-outline-danger:hover{color:#ea5455;border-color:#ea5455}.btn-outline-danger:hover{background-color:rgba(234,84,85,.1)}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(234,84,85,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#ea5455;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#ea5455;border-color:#ea5455}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(234,84,85,.5)}.btn-outline-light,.btn-outline-light:hover{color:#f7f7f9;border-color:#f7f7f9}.btn-outline-light:hover{background-color:rgba(247,247,249,.1)}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(247,247,249,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f7f7f9;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#2a2e30;background-color:#f7f7f9;border-color:#f7f7f9}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(247,247,249,.5)}.btn-outline-dark,.btn-outline-dark:hover{color:#22292f;border-color:#22292f}.btn-outline-dark:hover{background-color:rgba(34,41,47,.1)}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(34,41,47,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#22292f;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#22292f;border-color:#22292f}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(34,41,47,.5)}.btn-link{font-weight:400;color:#458769;text-decoration:none}.btn-link:hover{color:#34654f;text-decoration:none}.btn-link.focus,.btn-link:focus{text-decoration:none;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#b8c2cc;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:1rem 2.5rem;font-size:1.25rem;line-height:1.25;border-radius:.4285rem}.btn-group-sm>.btn,.btn-sm{padding:.5rem 1.5rem;font-size:.7rem;line-height:1;border-radius:.4285rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:10;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.5rem 0 0;font-size:.9375rem;color:#626262;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(34,41,47,.15);border-radius:5px}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.5rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.5rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.5rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.08)}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#2a2e30;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2122;text-decoration:none;background-color:#eff1f7}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#4e9876}.dropdown-item.disabled,.dropdown-item:disabled{color:#b8c2cc;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:1rem;color:#b8c2cc;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#2a2e30}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:1.5rem;padding-left:1.5rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:1.875rem;padding-left:1.875rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.7rem;margin-bottom:0;font-size:.96rem;font-weight:400;line-height:1.25;color:#4e5154;text-align:center;white-space:nowrap;background-color:#ededed;border:1px solid rgba(0,0,0,.2);border-radius:5px}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.25em + 2rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:1rem 2.5rem;font-size:1.25rem;line-height:1.25;border-radius:6px}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:2rem}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.5rem 1.5rem;font-size:.7rem;line-height:1;border-radius:4px}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.7rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.45rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#4e9876;background-color:#4e9876}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#4e9876}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#bcddce;border-color:#bcddce}.custom-control-input:disabled~.custom-control-label{color:#b8c2cc}.custom-control-input:disabled~.custom-control-label:before{background-color:#f5f5f1}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.225rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:\"\"}.custom-control-label:after{background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#4e9876;background-color:#4e9876}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(78,152,118,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(78,152,118,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(78,152,118,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.225rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(78,152,118,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.25em + 1.4rem + 1px);padding:.7rem 1.7rem .7rem .7rem;font-size:.96rem;font-weight:400;line-height:1.25;color:#4e5154;vertical-align:middle;background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%231e1e1e' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .7rem center/8px 10px;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:5px;appearance:none}.custom-select:focus{border-color:#4e9876;outline:0;box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.custom-select:focus::-ms-value{color:#4e5154;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size=\"1\"]){height:auto;padding-right:.7rem;background-image:none}.custom-select:disabled{color:#b8c2cc;background-color:#ededed}.custom-select::-ms-expand{display:none}.custom-select-sm{height:2rem;padding-top:.5rem;padding-bottom:.5rem;padding-left:1.5rem;font-size:.7rem}.custom-select-lg{height:calc(1.25em + 2rem + 2px);padding-top:1rem;padding-bottom:1rem;padding-left:2.5rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.25em + 1.4rem + 1px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#4e9876;box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.custom-file-input:disabled~.custom-file-label{background-color:#f5f5f1}.custom-file-input:lang(en)~.custom-file-label:after{content:\"Browse\"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.25em + 1.4rem + 1px);font-weight:400;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:5px}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.7rem;line-height:1.5rem;color:#4e5154}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.25em + 1.4rem);content:\"Browse\";background-color:#ededed;border-left:inherit;border-radius:0 5px 5px 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 3px 10px 0 rgba(0,0,0,.15)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 3px 10px 0 rgba(0,0,0,.15)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 3px 10px 0 rgba(0,0,0,.15)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#4e9876;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#bcddce}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dae1e7;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#4e9876;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#bcddce}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dae1e7;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#4e9876;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#bcddce}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dae1e7;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.357rem .5rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#b8c2cc;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dae1e7}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#ededed #ededed #dae1e7}.nav-tabs .nav-link.disabled{color:#b8c2cc;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#4e5154;background-color:#eff1f7;border-color:#dae1e7 #dae1e7 #eff1f7}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.5rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#4e9876}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:-.368rem;padding-bottom:-.368rem;margin-right:1rem;font-size:2rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.357rem;padding-bottom:.357rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:2rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.42rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:\"\";background:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(34,41,47,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(34,41,47,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(34,41,47,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(34,41,47,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(34,41,47,.9)}.navbar-light .navbar-toggler{color:rgba(34,41,47,.5);border-color:rgba(34,41,47,.1)}.navbar-light .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(34, 41, 47, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-light .navbar-text{color:rgba(34,41,47,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(34,41,47,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(34,41,47,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{margin-bottom:0;background-color:rgba(34,41,47,.03);border-bottom:1px solid rgba(34,41,47,.125)}.card-header:first-child{border-radius:calc(.5rem - 1px) calc(.5rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(34,41,47,.03);border-top:1px solid rgba(34,41,47,.125)}.card-footer:last-child{border-radius:0 0 calc(.5rem - 1px) calc(.5rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.5rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.5rem - 1px);border-bottom-left-radius:calc(.5rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:14px}@media (min-width:576px){.card-deck{flex-flow:row wrap;margin-right:-14px;margin-left:-14px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:14px;margin-bottom:0;margin-left:14px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:14px}@media (min-width:576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-moz-column-count:3;column-count:3;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#ededed;border-radius:.5rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;color:#b8c2cc;content:\"/\"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#b8c2cc}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.5rem}.page-link{position:relative;display:block;padding:.65rem .911rem;margin-left:-1px;line-height:1.25;color:#458769;background-color:#fff;border:1px solid #dae1e7}.page-link:hover{z-index:2;color:#34654f;text-decoration:none;background-color:#ededed;border-color:#dae1e7}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(78,152,118,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.page-item:last-child .page-link{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#4e9876;border-color:#4e9876}.page-item.disabled .page-link{color:#b8c2cc;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dae1e7}.pagination-lg .page-link{padding:.5rem 1rem;font-size:2rem;line-height:1.25}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.6rem;border-bottom-left-radius:.6rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.6rem;border-bottom-right-radius:.6rem}.pagination-sm .page-link{padding:.5rem .75rem;font-size:1rem;line-height:1}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.5rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#4e9876}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#3d765c}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(78,152,118,.5)}.badge-secondary{color:#2a2e30;background-color:#b8c2cc}a.badge-secondary:focus,a.badge-secondary:hover{color:#2a2e30;background-color:#9aa9b7}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(184,194,204,.5)}.badge-success{color:#fff;background-color:#21b978}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#198e5c}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(33,185,120,.5)}.badge-info{color:#fff;background-color:#4277cf}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#2d5fb1}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(66,119,207,.5)}.badge-warning{color:#2a2e30;background-color:#dda451}a.badge-warning:focus,a.badge-warning:hover{color:#2a2e30;background-color:#d28d29}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(221,164,81,.5)}.badge-danger{color:#fff;background-color:#ea5455}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#e42728}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(234,84,85,.5)}.badge-light{color:#2a2e30;background-color:#f7f7f9}a.badge-light:focus,a.badge-light:hover{color:#2a2e30;background-color:#dadae3}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(247,247,249,.5)}.badge-dark{color:#fff;background-color:#22292f}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#0d0f11}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(34,41,47,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#ededed;border-radius:.6rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.5rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close,.alert-dismissible .mailbox-attachment-close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#396354;background-color:#dceae4;border-color:#cde2d9}.alert-primary hr{border-top-color:#bdd9cd}.alert-primary .alert-link{color:#264339}.alert-secondary{color:#707981;background-color:#f1f3f5;border-color:#ebeef1}.alert-secondary hr{border-top-color:#dce1e7}.alert-secondary .alert-link{color:#585f66}.alert-success{color:#217455;background-color:#d3f1e4;border-color:#c1ebd9}.alert-success hr{border-top-color:#aee5cd}.alert-success .alert-link{color:#164c38}.alert-info{color:#335282;background-color:#d9e4f5;border-color:#cad9f2}.alert-info hr{border-top-color:#b6caed}.alert-info .alert-link{color:#253b5d}.alert-warning{color:#836941;background-color:#f8eddc;border-color:#f5e6ce}.alert-warning hr{border-top-color:#f1dbb9}.alert-warning .alert-link{color:#614e30}.alert-danger{color:#8a3f43;background-color:#fbdddd;border-color:#f9cfcf}.alert-danger hr{border-top-color:#f6b8b8}.alert-danger .alert-link{color:#672f32}.alert-light{color:#919498;background-color:#fdfdfe;border-color:#fdfdfd}.alert-light hr{border-top-color:#f0f0f0}.alert-light .alert-link{color:#777a7f}.alert-dark{color:#22292f;background-color:#d3d4d5;border-color:#c1c3c5}.alert-dark hr{border-top-color:#b4b6b9}.alert-dark .alert-link{color:#0d0f11}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#ededed;border-radius:.5rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#4e9876;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#4e5154;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#4e5154;text-decoration:none;background-color:#babfc7}.list-group-item-action:active{color:#626262;background-color:#ededed}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(34,41,47,.125)}.list-group-item:first-child{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.list-group-item.disabled,.list-group-item:disabled{color:#b8c2cc;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#4e9876;border-color:#4e9876}.list-group-horizontal{flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#396354;background-color:#cde2d9}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#396354;background-color:#bdd9cd}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#396354;border-color:#396354}.list-group-item-secondary{color:#707981;background-color:#ebeef1}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#707981;background-color:#dce1e7}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#707981;border-color:#707981}.list-group-item-success{color:#217455;background-color:#c1ebd9}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#217455;background-color:#aee5cd}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#217455;border-color:#217455}.list-group-item-info{color:#335282;background-color:#cad9f2}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#335282;background-color:#b6caed}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#335282;border-color:#335282}.list-group-item-warning{color:#836941;background-color:#f5e6ce}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#836941;background-color:#f1dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#836941;border-color:#836941}.list-group-item-danger{color:#8a3f43;background-color:#f9cfcf}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#8a3f43;background-color:#f6b8b8}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#8a3f43;border-color:#8a3f43}.list-group-item-light{color:#919498;background-color:#fdfdfd}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#919498;background-color:#f0f0f0}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#919498;border-color:#919498}.list-group-item-dark{color:#22292f;background-color:#c1c3c5}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#22292f;background-color:#b4b6b9}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#22292f;border-color:#22292f}.close,.mailbox-attachment-close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#22292f;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.mailbox-attachment-close:hover{color:#22292f;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover,.mailbox-attachment-close:not(:disabled):not(.disabled):focus,.mailbox-attachment-close:not(:disabled):not(.disabled):hover{opacity:.75}button.close,button.mailbox-attachment-close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled,a.disabled.mailbox-attachment-close{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(34,41,47,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#b8c2cc;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);content:\"\"}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(34,41,47,.2);border-radius:.6rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#22292f}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #ededed;border-top-left-radius:.6rem;border-top-right-radius:.6rem}.modal-header .close,.modal-header .mailbox-attachment-close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.45}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #ededed;border-bottom-right-radius:.6rem;border-bottom-left-radius:.6rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:Montserrat,Helvetica,Arial,serif;font-style:normal;font-weight:400;line-height:1.45;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:1rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#22292f}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#22292f}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#22292f}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#22292f}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#22292f;border-radius:.5rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:Montserrat,Helvetica,Arial,serif;font-style:normal;font-weight:400;line-height:1.45;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:1rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(34,41,47,.2);border-radius:.6rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .6rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.6rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.6rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:#2c2c2c;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.6rem - 1px);border-top-right-radius:calc(.6rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#626262}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:\"\"}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E\")}.carousel-control-next-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E\")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{transform:rotate(1turn)}}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid;border-right:.25em solid transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#3d765c!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#9aa9b7!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#198e5c!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#2d5fb1!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d28d29!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#e42728!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dadae3!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#0d0f11!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #ededed!important}.border-top{border-top:1px solid #ededed!important}.border-right{border-right:1px solid #ededed!important}.border-bottom{border-bottom:1px solid #ededed!important}.border-left{border-left:1px solid #ededed!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#4e9876!important}.border-secondary{border-color:#b8c2cc!important}.border-success{border-color:#21b978!important}.border-info{border-color:#4277cf!important}.border-warning{border-color:#dda451!important}.border-danger{border-color:#ea5455!important}.border-light{border-color:#f7f7f9!important}.border-dark{border-color:#22292f!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.25rem!important}.rounded{border-radius:.5rem!important}.rounded-top{border-top-left-radius:.5rem!important}.rounded-right,.rounded-top{border-top-right-radius:.5rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.5rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.5rem!important}.rounded-left{border-top-left-radius:.5rem!important}.rounded-lg{border-radius:.6rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:\"\"}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:\"\"}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.8571428571%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{top:0}.fixed-footer .footer,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-footer .footer{bottom:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(34,41,47,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(34,41,47,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(34,41,47,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:\"\";background-color:transparent}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:1rem!important}.mt-1,.my-1{margin-top:1rem!important}.mr-1,.mx-1{margin-right:1rem!important}.mb-1,.my-1{margin-bottom:1rem!important}.ml-1,.mx-1{margin-left:1rem!important}.m-2{margin:1.5rem!important}.mt-2,.my-2{margin-top:1.5rem!important}.mr-2,.mx-2{margin-right:1.5rem!important}.mb-2,.my-2{margin-bottom:1.5rem!important}.ml-2,.mx-2{margin-left:1.5rem!important}.m-3{margin:3rem!important}.mt-3,.my-3{margin-top:3rem!important}.mr-3,.mx-3{margin-right:3rem!important}.mb-3,.my-3{margin-bottom:3rem!important}.ml-3,.mx-3{margin-left:3rem!important}.m-4{margin:3.5rem!important}.mt-4,.my-4{margin-top:3.5rem!important}.mr-4,.mx-4{margin-right:3.5rem!important}.mb-4,.my-4{margin-bottom:3.5rem!important}.ml-4,.mx-4{margin-left:3.5rem!important}.m-5{margin:4rem!important}.mt-5,.my-5{margin-top:4rem!important}.mr-5,.mx-5{margin-right:4rem!important}.mb-5,.my-5{margin-bottom:4rem!important}.ml-5,.mx-5{margin-left:4rem!important}.m-25{margin:.25rem!important}.mt-25,.my-25{margin-top:.25rem!important}.mr-25,.mx-25{margin-right:.25rem!important}.mb-25,.my-25{margin-bottom:.25rem!important}.ml-25,.mx-25{margin-left:.25rem!important}.m-50{margin:.5rem!important}.mt-50,.my-50{margin-top:.5rem!important}.mr-50,.mx-50{margin-right:.5rem!important}.mb-50,.my-50{margin-bottom:.5rem!important}.ml-50,.mx-50{margin-left:.5rem!important}.m-75{margin:.75rem!important}.mt-75,.my-75{margin-top:.75rem!important}.mr-75,.mx-75{margin-right:.75rem!important}.mb-75,.my-75{margin-bottom:.75rem!important}.ml-75,.mx-75{margin-left:.75rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:1rem!important}.pt-1,.py-1{padding-top:1rem!important}.pr-1,.px-1{padding-right:1rem!important}.pb-1,.py-1{padding-bottom:1rem!important}.pl-1,.px-1{padding-left:1rem!important}.p-2{padding:1.5rem!important}.pt-2,.py-2{padding-top:1.5rem!important}.pr-2,.px-2{padding-right:1.5rem!important}.pb-2,.py-2{padding-bottom:1.5rem!important}.pl-2,.px-2{padding-left:1.5rem!important}.p-3{padding:3rem!important}.pt-3,.py-3{padding-top:3rem!important}.pr-3,.px-3{padding-right:3rem!important}.pb-3,.py-3{padding-bottom:3rem!important}.pl-3,.px-3{padding-left:3rem!important}.p-4{padding:3.5rem!important}.pt-4,.py-4{padding-top:3.5rem!important}.pr-4,.px-4{padding-right:3.5rem!important}.pb-4,.py-4{padding-bottom:3.5rem!important}.pl-4,.px-4{padding-left:3.5rem!important}.p-5{padding:4rem!important}.pt-5,.py-5{padding-top:4rem!important}.pr-5,.px-5{padding-right:4rem!important}.pb-5,.py-5{padding-bottom:4rem!important}.pl-5,.px-5{padding-left:4rem!important}.p-25{padding:.25rem!important}.pt-25,.py-25{padding-top:.25rem!important}.pr-25,.px-25{padding-right:.25rem!important}.pb-25,.py-25{padding-bottom:.25rem!important}.pl-25,.px-25{padding-left:.25rem!important}.p-50{padding:.5rem!important}.pt-50,.py-50{padding-top:.5rem!important}.pr-50,.px-50{padding-right:.5rem!important}.pb-50,.py-50{padding-bottom:.5rem!important}.pl-50,.px-50{padding-left:.5rem!important}.p-75{padding:.75rem!important}.pt-75,.py-75{padding-top:.75rem!important}.pr-75,.px-75{padding-right:.75rem!important}.pb-75,.py-75{padding-bottom:.75rem!important}.pl-75,.px-75{padding-left:.75rem!important}.m-n1{margin:-1rem!important}.mt-n1,.my-n1{margin-top:-1rem!important}.mr-n1,.mx-n1{margin-right:-1rem!important}.mb-n1,.my-n1{margin-bottom:-1rem!important}.ml-n1,.mx-n1{margin-left:-1rem!important}.m-n2{margin:-1.5rem!important}.mt-n2,.my-n2{margin-top:-1.5rem!important}.mr-n2,.mx-n2{margin-right:-1.5rem!important}.mb-n2,.my-n2{margin-bottom:-1.5rem!important}.ml-n2,.mx-n2{margin-left:-1.5rem!important}.m-n3{margin:-3rem!important}.mt-n3,.my-n3{margin-top:-3rem!important}.mr-n3,.mx-n3{margin-right:-3rem!important}.mb-n3,.my-n3{margin-bottom:-3rem!important}.ml-n3,.mx-n3{margin-left:-3rem!important}.m-n4{margin:-3.5rem!important}.mt-n4,.my-n4{margin-top:-3.5rem!important}.mr-n4,.mx-n4{margin-right:-3.5rem!important}.mb-n4,.my-n4{margin-bottom:-3.5rem!important}.ml-n4,.mx-n4{margin-left:-3.5rem!important}.m-n5{margin:-4rem!important}.mt-n5,.my-n5{margin-top:-4rem!important}.mr-n5,.mx-n5{margin-right:-4rem!important}.mb-n5,.my-n5{margin-bottom:-4rem!important}.ml-n5,.mx-n5{margin-left:-4rem!important}.m-n25{margin:-.25rem!important}.mt-n25,.my-n25{margin-top:-.25rem!important}.mr-n25,.mx-n25{margin-right:-.25rem!important}.mb-n25,.my-n25{margin-bottom:-.25rem!important}.ml-n25,.mx-n25{margin-left:-.25rem!important}.m-n50{margin:-.5rem!important}.mt-n50,.my-n50{margin-top:-.5rem!important}.mr-n50,.mx-n50{margin-right:-.5rem!important}.mb-n50,.my-n50{margin-bottom:-.5rem!important}.ml-n50,.mx-n50{margin-left:-.5rem!important}.m-n75{margin:-.75rem!important}.mt-n75,.my-n75{margin-top:-.75rem!important}.mr-n75,.mx-n75{margin-right:-.75rem!important}.mb-n75,.my-n75{margin-bottom:-.75rem!important}.ml-n75,.mx-n75{margin-left:-.75rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:1rem!important}.mt-sm-1,.my-sm-1{margin-top:1rem!important}.mr-sm-1,.mx-sm-1{margin-right:1rem!important}.mb-sm-1,.my-sm-1{margin-bottom:1rem!important}.ml-sm-1,.mx-sm-1{margin-left:1rem!important}.m-sm-2{margin:1.5rem!important}.mt-sm-2,.my-sm-2{margin-top:1.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:1.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:1.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:1.5rem!important}.m-sm-3{margin:3rem!important}.mt-sm-3,.my-sm-3{margin-top:3rem!important}.mr-sm-3,.mx-sm-3{margin-right:3rem!important}.mb-sm-3,.my-sm-3{margin-bottom:3rem!important}.ml-sm-3,.mx-sm-3{margin-left:3rem!important}.m-sm-4{margin:3.5rem!important}.mt-sm-4,.my-sm-4{margin-top:3.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:3.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:3.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:3.5rem!important}.m-sm-5{margin:4rem!important}.mt-sm-5,.my-sm-5{margin-top:4rem!important}.mr-sm-5,.mx-sm-5{margin-right:4rem!important}.mb-sm-5,.my-sm-5{margin-bottom:4rem!important}.ml-sm-5,.mx-sm-5{margin-left:4rem!important}.m-sm-25{margin:.25rem!important}.mt-sm-25,.my-sm-25{margin-top:.25rem!important}.mr-sm-25,.mx-sm-25{margin-right:.25rem!important}.mb-sm-25,.my-sm-25{margin-bottom:.25rem!important}.ml-sm-25,.mx-sm-25{margin-left:.25rem!important}.m-sm-50{margin:.5rem!important}.mt-sm-50,.my-sm-50{margin-top:.5rem!important}.mr-sm-50,.mx-sm-50{margin-right:.5rem!important}.mb-sm-50,.my-sm-50{margin-bottom:.5rem!important}.ml-sm-50,.mx-sm-50{margin-left:.5rem!important}.m-sm-75{margin:.75rem!important}.mt-sm-75,.my-sm-75{margin-top:.75rem!important}.mr-sm-75,.mx-sm-75{margin-right:.75rem!important}.mb-sm-75,.my-sm-75{margin-bottom:.75rem!important}.ml-sm-75,.mx-sm-75{margin-left:.75rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:1rem!important}.pt-sm-1,.py-sm-1{padding-top:1rem!important}.pr-sm-1,.px-sm-1{padding-right:1rem!important}.pb-sm-1,.py-sm-1{padding-bottom:1rem!important}.pl-sm-1,.px-sm-1{padding-left:1rem!important}.p-sm-2{padding:1.5rem!important}.pt-sm-2,.py-sm-2{padding-top:1.5rem!important}.pr-sm-2,.px-sm-2{padding-right:1.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:1.5rem!important}.pl-sm-2,.px-sm-2{padding-left:1.5rem!important}.p-sm-3{padding:3rem!important}.pt-sm-3,.py-sm-3{padding-top:3rem!important}.pr-sm-3,.px-sm-3{padding-right:3rem!important}.pb-sm-3,.py-sm-3{padding-bottom:3rem!important}.pl-sm-3,.px-sm-3{padding-left:3rem!important}.p-sm-4{padding:3.5rem!important}.pt-sm-4,.py-sm-4{padding-top:3.5rem!important}.pr-sm-4,.px-sm-4{padding-right:3.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:3.5rem!important}.pl-sm-4,.px-sm-4{padding-left:3.5rem!important}.p-sm-5{padding:4rem!important}.pt-sm-5,.py-sm-5{padding-top:4rem!important}.pr-sm-5,.px-sm-5{padding-right:4rem!important}.pb-sm-5,.py-sm-5{padding-bottom:4rem!important}.pl-sm-5,.px-sm-5{padding-left:4rem!important}.p-sm-25{padding:.25rem!important}.pt-sm-25,.py-sm-25{padding-top:.25rem!important}.pr-sm-25,.px-sm-25{padding-right:.25rem!important}.pb-sm-25,.py-sm-25{padding-bottom:.25rem!important}.pl-sm-25,.px-sm-25{padding-left:.25rem!important}.p-sm-50{padding:.5rem!important}.pt-sm-50,.py-sm-50{padding-top:.5rem!important}.pr-sm-50,.px-sm-50{padding-right:.5rem!important}.pb-sm-50,.py-sm-50{padding-bottom:.5rem!important}.pl-sm-50,.px-sm-50{padding-left:.5rem!important}.p-sm-75{padding:.75rem!important}.pt-sm-75,.py-sm-75{padding-top:.75rem!important}.pr-sm-75,.px-sm-75{padding-right:.75rem!important}.pb-sm-75,.py-sm-75{padding-bottom:.75rem!important}.pl-sm-75,.px-sm-75{padding-left:.75rem!important}.m-sm-n1{margin:-1rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-1rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-1rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-1rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-1rem!important}.m-sm-n2{margin:-1.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-1.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-1.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-1.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-1.5rem!important}.m-sm-n3{margin:-3rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-3rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-3rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-3rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-3rem!important}.m-sm-n4{margin:-3.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-3.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-3.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-3.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-3.5rem!important}.m-sm-n5{margin:-4rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-4rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-4rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-4rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-4rem!important}.m-sm-n25{margin:-.25rem!important}.mt-sm-n25,.my-sm-n25{margin-top:-.25rem!important}.mr-sm-n25,.mx-sm-n25{margin-right:-.25rem!important}.mb-sm-n25,.my-sm-n25{margin-bottom:-.25rem!important}.ml-sm-n25,.mx-sm-n25{margin-left:-.25rem!important}.m-sm-n50{margin:-.5rem!important}.mt-sm-n50,.my-sm-n50{margin-top:-.5rem!important}.mr-sm-n50,.mx-sm-n50{margin-right:-.5rem!important}.mb-sm-n50,.my-sm-n50{margin-bottom:-.5rem!important}.ml-sm-n50,.mx-sm-n50{margin-left:-.5rem!important}.m-sm-n75{margin:-.75rem!important}.mt-sm-n75,.my-sm-n75{margin-top:-.75rem!important}.mr-sm-n75,.mx-sm-n75{margin-right:-.75rem!important}.mb-sm-n75,.my-sm-n75{margin-bottom:-.75rem!important}.ml-sm-n75,.mx-sm-n75{margin-left:-.75rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:1rem!important}.mt-md-1,.my-md-1{margin-top:1rem!important}.mr-md-1,.mx-md-1{margin-right:1rem!important}.mb-md-1,.my-md-1{margin-bottom:1rem!important}.ml-md-1,.mx-md-1{margin-left:1rem!important}.m-md-2{margin:1.5rem!important}.mt-md-2,.my-md-2{margin-top:1.5rem!important}.mr-md-2,.mx-md-2{margin-right:1.5rem!important}.mb-md-2,.my-md-2{margin-bottom:1.5rem!important}.ml-md-2,.mx-md-2{margin-left:1.5rem!important}.m-md-3{margin:3rem!important}.mt-md-3,.my-md-3{margin-top:3rem!important}.mr-md-3,.mx-md-3{margin-right:3rem!important}.mb-md-3,.my-md-3{margin-bottom:3rem!important}.ml-md-3,.mx-md-3{margin-left:3rem!important}.m-md-4{margin:3.5rem!important}.mt-md-4,.my-md-4{margin-top:3.5rem!important}.mr-md-4,.mx-md-4{margin-right:3.5rem!important}.mb-md-4,.my-md-4{margin-bottom:3.5rem!important}.ml-md-4,.mx-md-4{margin-left:3.5rem!important}.m-md-5{margin:4rem!important}.mt-md-5,.my-md-5{margin-top:4rem!important}.mr-md-5,.mx-md-5{margin-right:4rem!important}.mb-md-5,.my-md-5{margin-bottom:4rem!important}.ml-md-5,.mx-md-5{margin-left:4rem!important}.m-md-25{margin:.25rem!important}.mt-md-25,.my-md-25{margin-top:.25rem!important}.mr-md-25,.mx-md-25{margin-right:.25rem!important}.mb-md-25,.my-md-25{margin-bottom:.25rem!important}.ml-md-25,.mx-md-25{margin-left:.25rem!important}.m-md-50{margin:.5rem!important}.mt-md-50,.my-md-50{margin-top:.5rem!important}.mr-md-50,.mx-md-50{margin-right:.5rem!important}.mb-md-50,.my-md-50{margin-bottom:.5rem!important}.ml-md-50,.mx-md-50{margin-left:.5rem!important}.m-md-75{margin:.75rem!important}.mt-md-75,.my-md-75{margin-top:.75rem!important}.mr-md-75,.mx-md-75{margin-right:.75rem!important}.mb-md-75,.my-md-75{margin-bottom:.75rem!important}.ml-md-75,.mx-md-75{margin-left:.75rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:1rem!important}.pt-md-1,.py-md-1{padding-top:1rem!important}.pr-md-1,.px-md-1{padding-right:1rem!important}.pb-md-1,.py-md-1{padding-bottom:1rem!important}.pl-md-1,.px-md-1{padding-left:1rem!important}.p-md-2{padding:1.5rem!important}.pt-md-2,.py-md-2{padding-top:1.5rem!important}.pr-md-2,.px-md-2{padding-right:1.5rem!important}.pb-md-2,.py-md-2{padding-bottom:1.5rem!important}.pl-md-2,.px-md-2{padding-left:1.5rem!important}.p-md-3{padding:3rem!important}.pt-md-3,.py-md-3{padding-top:3rem!important}.pr-md-3,.px-md-3{padding-right:3rem!important}.pb-md-3,.py-md-3{padding-bottom:3rem!important}.pl-md-3,.px-md-3{padding-left:3rem!important}.p-md-4{padding:3.5rem!important}.pt-md-4,.py-md-4{padding-top:3.5rem!important}.pr-md-4,.px-md-4{padding-right:3.5rem!important}.pb-md-4,.py-md-4{padding-bottom:3.5rem!important}.pl-md-4,.px-md-4{padding-left:3.5rem!important}.p-md-5{padding:4rem!important}.pt-md-5,.py-md-5{padding-top:4rem!important}.pr-md-5,.px-md-5{padding-right:4rem!important}.pb-md-5,.py-md-5{padding-bottom:4rem!important}.pl-md-5,.px-md-5{padding-left:4rem!important}.p-md-25{padding:.25rem!important}.pt-md-25,.py-md-25{padding-top:.25rem!important}.pr-md-25,.px-md-25{padding-right:.25rem!important}.pb-md-25,.py-md-25{padding-bottom:.25rem!important}.pl-md-25,.px-md-25{padding-left:.25rem!important}.p-md-50{padding:.5rem!important}.pt-md-50,.py-md-50{padding-top:.5rem!important}.pr-md-50,.px-md-50{padding-right:.5rem!important}.pb-md-50,.py-md-50{padding-bottom:.5rem!important}.pl-md-50,.px-md-50{padding-left:.5rem!important}.p-md-75{padding:.75rem!important}.pt-md-75,.py-md-75{padding-top:.75rem!important}.pr-md-75,.px-md-75{padding-right:.75rem!important}.pb-md-75,.py-md-75{padding-bottom:.75rem!important}.pl-md-75,.px-md-75{padding-left:.75rem!important}.m-md-n1{margin:-1rem!important}.mt-md-n1,.my-md-n1{margin-top:-1rem!important}.mr-md-n1,.mx-md-n1{margin-right:-1rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-1rem!important}.ml-md-n1,.mx-md-n1{margin-left:-1rem!important}.m-md-n2{margin:-1.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-1.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-1.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-1.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-1.5rem!important}.m-md-n3{margin:-3rem!important}.mt-md-n3,.my-md-n3{margin-top:-3rem!important}.mr-md-n3,.mx-md-n3{margin-right:-3rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-3rem!important}.ml-md-n3,.mx-md-n3{margin-left:-3rem!important}.m-md-n4{margin:-3.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-3.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-3.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-3.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-3.5rem!important}.m-md-n5{margin:-4rem!important}.mt-md-n5,.my-md-n5{margin-top:-4rem!important}.mr-md-n5,.mx-md-n5{margin-right:-4rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-4rem!important}.ml-md-n5,.mx-md-n5{margin-left:-4rem!important}.m-md-n25{margin:-.25rem!important}.mt-md-n25,.my-md-n25{margin-top:-.25rem!important}.mr-md-n25,.mx-md-n25{margin-right:-.25rem!important}.mb-md-n25,.my-md-n25{margin-bottom:-.25rem!important}.ml-md-n25,.mx-md-n25{margin-left:-.25rem!important}.m-md-n50{margin:-.5rem!important}.mt-md-n50,.my-md-n50{margin-top:-.5rem!important}.mr-md-n50,.mx-md-n50{margin-right:-.5rem!important}.mb-md-n50,.my-md-n50{margin-bottom:-.5rem!important}.ml-md-n50,.mx-md-n50{margin-left:-.5rem!important}.m-md-n75{margin:-.75rem!important}.mt-md-n75,.my-md-n75{margin-top:-.75rem!important}.mr-md-n75,.mx-md-n75{margin-right:-.75rem!important}.mb-md-n75,.my-md-n75{margin-bottom:-.75rem!important}.ml-md-n75,.mx-md-n75{margin-left:-.75rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:1rem!important}.mt-lg-1,.my-lg-1{margin-top:1rem!important}.mr-lg-1,.mx-lg-1{margin-right:1rem!important}.mb-lg-1,.my-lg-1{margin-bottom:1rem!important}.ml-lg-1,.mx-lg-1{margin-left:1rem!important}.m-lg-2{margin:1.5rem!important}.mt-lg-2,.my-lg-2{margin-top:1.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:1.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:1.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:1.5rem!important}.m-lg-3{margin:3rem!important}.mt-lg-3,.my-lg-3{margin-top:3rem!important}.mr-lg-3,.mx-lg-3{margin-right:3rem!important}.mb-lg-3,.my-lg-3{margin-bottom:3rem!important}.ml-lg-3,.mx-lg-3{margin-left:3rem!important}.m-lg-4{margin:3.5rem!important}.mt-lg-4,.my-lg-4{margin-top:3.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:3.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:3.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:3.5rem!important}.m-lg-5{margin:4rem!important}.mt-lg-5,.my-lg-5{margin-top:4rem!important}.mr-lg-5,.mx-lg-5{margin-right:4rem!important}.mb-lg-5,.my-lg-5{margin-bottom:4rem!important}.ml-lg-5,.mx-lg-5{margin-left:4rem!important}.m-lg-25{margin:.25rem!important}.mt-lg-25,.my-lg-25{margin-top:.25rem!important}.mr-lg-25,.mx-lg-25{margin-right:.25rem!important}.mb-lg-25,.my-lg-25{margin-bottom:.25rem!important}.ml-lg-25,.mx-lg-25{margin-left:.25rem!important}.m-lg-50{margin:.5rem!important}.mt-lg-50,.my-lg-50{margin-top:.5rem!important}.mr-lg-50,.mx-lg-50{margin-right:.5rem!important}.mb-lg-50,.my-lg-50{margin-bottom:.5rem!important}.ml-lg-50,.mx-lg-50{margin-left:.5rem!important}.m-lg-75{margin:.75rem!important}.mt-lg-75,.my-lg-75{margin-top:.75rem!important}.mr-lg-75,.mx-lg-75{margin-right:.75rem!important}.mb-lg-75,.my-lg-75{margin-bottom:.75rem!important}.ml-lg-75,.mx-lg-75{margin-left:.75rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:1rem!important}.pt-lg-1,.py-lg-1{padding-top:1rem!important}.pr-lg-1,.px-lg-1{padding-right:1rem!important}.pb-lg-1,.py-lg-1{padding-bottom:1rem!important}.pl-lg-1,.px-lg-1{padding-left:1rem!important}.p-lg-2{padding:1.5rem!important}.pt-lg-2,.py-lg-2{padding-top:1.5rem!important}.pr-lg-2,.px-lg-2{padding-right:1.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:1.5rem!important}.pl-lg-2,.px-lg-2{padding-left:1.5rem!important}.p-lg-3{padding:3rem!important}.pt-lg-3,.py-lg-3{padding-top:3rem!important}.pr-lg-3,.px-lg-3{padding-right:3rem!important}.pb-lg-3,.py-lg-3{padding-bottom:3rem!important}.pl-lg-3,.px-lg-3{padding-left:3rem!important}.p-lg-4{padding:3.5rem!important}.pt-lg-4,.py-lg-4{padding-top:3.5rem!important}.pr-lg-4,.px-lg-4{padding-right:3.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:3.5rem!important}.pl-lg-4,.px-lg-4{padding-left:3.5rem!important}.p-lg-5{padding:4rem!important}.pt-lg-5,.py-lg-5{padding-top:4rem!important}.pr-lg-5,.px-lg-5{padding-right:4rem!important}.pb-lg-5,.py-lg-5{padding-bottom:4rem!important}.pl-lg-5,.px-lg-5{padding-left:4rem!important}.p-lg-25{padding:.25rem!important}.pt-lg-25,.py-lg-25{padding-top:.25rem!important}.pr-lg-25,.px-lg-25{padding-right:.25rem!important}.pb-lg-25,.py-lg-25{padding-bottom:.25rem!important}.pl-lg-25,.px-lg-25{padding-left:.25rem!important}.p-lg-50{padding:.5rem!important}.pt-lg-50,.py-lg-50{padding-top:.5rem!important}.pr-lg-50,.px-lg-50{padding-right:.5rem!important}.pb-lg-50,.py-lg-50{padding-bottom:.5rem!important}.pl-lg-50,.px-lg-50{padding-left:.5rem!important}.p-lg-75{padding:.75rem!important}.pt-lg-75,.py-lg-75{padding-top:.75rem!important}.pr-lg-75,.px-lg-75{padding-right:.75rem!important}.pb-lg-75,.py-lg-75{padding-bottom:.75rem!important}.pl-lg-75,.px-lg-75{padding-left:.75rem!important}.m-lg-n1{margin:-1rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-1rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-1rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-1rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-1rem!important}.m-lg-n2{margin:-1.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-1.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-1.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-1.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-1.5rem!important}.m-lg-n3{margin:-3rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-3rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-3rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-3rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-3rem!important}.m-lg-n4{margin:-3.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-3.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-3.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-3.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-3.5rem!important}.m-lg-n5{margin:-4rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-4rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-4rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-4rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-4rem!important}.m-lg-n25{margin:-.25rem!important}.mt-lg-n25,.my-lg-n25{margin-top:-.25rem!important}.mr-lg-n25,.mx-lg-n25{margin-right:-.25rem!important}.mb-lg-n25,.my-lg-n25{margin-bottom:-.25rem!important}.ml-lg-n25,.mx-lg-n25{margin-left:-.25rem!important}.m-lg-n50{margin:-.5rem!important}.mt-lg-n50,.my-lg-n50{margin-top:-.5rem!important}.mr-lg-n50,.mx-lg-n50{margin-right:-.5rem!important}.mb-lg-n50,.my-lg-n50{margin-bottom:-.5rem!important}.ml-lg-n50,.mx-lg-n50{margin-left:-.5rem!important}.m-lg-n75{margin:-.75rem!important}.mt-lg-n75,.my-lg-n75{margin-top:-.75rem!important}.mr-lg-n75,.mx-lg-n75{margin-right:-.75rem!important}.mb-lg-n75,.my-lg-n75{margin-bottom:-.75rem!important}.ml-lg-n75,.mx-lg-n75{margin-left:-.75rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:1rem!important}.mt-xl-1,.my-xl-1{margin-top:1rem!important}.mr-xl-1,.mx-xl-1{margin-right:1rem!important}.mb-xl-1,.my-xl-1{margin-bottom:1rem!important}.ml-xl-1,.mx-xl-1{margin-left:1rem!important}.m-xl-2{margin:1.5rem!important}.mt-xl-2,.my-xl-2{margin-top:1.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:1.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:1.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:1.5rem!important}.m-xl-3{margin:3rem!important}.mt-xl-3,.my-xl-3{margin-top:3rem!important}.mr-xl-3,.mx-xl-3{margin-right:3rem!important}.mb-xl-3,.my-xl-3{margin-bottom:3rem!important}.ml-xl-3,.mx-xl-3{margin-left:3rem!important}.m-xl-4{margin:3.5rem!important}.mt-xl-4,.my-xl-4{margin-top:3.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:3.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:3.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:3.5rem!important}.m-xl-5{margin:4rem!important}.mt-xl-5,.my-xl-5{margin-top:4rem!important}.mr-xl-5,.mx-xl-5{margin-right:4rem!important}.mb-xl-5,.my-xl-5{margin-bottom:4rem!important}.ml-xl-5,.mx-xl-5{margin-left:4rem!important}.m-xl-25{margin:.25rem!important}.mt-xl-25,.my-xl-25{margin-top:.25rem!important}.mr-xl-25,.mx-xl-25{margin-right:.25rem!important}.mb-xl-25,.my-xl-25{margin-bottom:.25rem!important}.ml-xl-25,.mx-xl-25{margin-left:.25rem!important}.m-xl-50{margin:.5rem!important}.mt-xl-50,.my-xl-50{margin-top:.5rem!important}.mr-xl-50,.mx-xl-50{margin-right:.5rem!important}.mb-xl-50,.my-xl-50{margin-bottom:.5rem!important}.ml-xl-50,.mx-xl-50{margin-left:.5rem!important}.m-xl-75{margin:.75rem!important}.mt-xl-75,.my-xl-75{margin-top:.75rem!important}.mr-xl-75,.mx-xl-75{margin-right:.75rem!important}.mb-xl-75,.my-xl-75{margin-bottom:.75rem!important}.ml-xl-75,.mx-xl-75{margin-left:.75rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:1rem!important}.pt-xl-1,.py-xl-1{padding-top:1rem!important}.pr-xl-1,.px-xl-1{padding-right:1rem!important}.pb-xl-1,.py-xl-1{padding-bottom:1rem!important}.pl-xl-1,.px-xl-1{padding-left:1rem!important}.p-xl-2{padding:1.5rem!important}.pt-xl-2,.py-xl-2{padding-top:1.5rem!important}.pr-xl-2,.px-xl-2{padding-right:1.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:1.5rem!important}.pl-xl-2,.px-xl-2{padding-left:1.5rem!important}.p-xl-3{padding:3rem!important}.pt-xl-3,.py-xl-3{padding-top:3rem!important}.pr-xl-3,.px-xl-3{padding-right:3rem!important}.pb-xl-3,.py-xl-3{padding-bottom:3rem!important}.pl-xl-3,.px-xl-3{padding-left:3rem!important}.p-xl-4{padding:3.5rem!important}.pt-xl-4,.py-xl-4{padding-top:3.5rem!important}.pr-xl-4,.px-xl-4{padding-right:3.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:3.5rem!important}.pl-xl-4,.px-xl-4{padding-left:3.5rem!important}.p-xl-5{padding:4rem!important}.pt-xl-5,.py-xl-5{padding-top:4rem!important}.pr-xl-5,.px-xl-5{padding-right:4rem!important}.pb-xl-5,.py-xl-5{padding-bottom:4rem!important}.pl-xl-5,.px-xl-5{padding-left:4rem!important}.p-xl-25{padding:.25rem!important}.pt-xl-25,.py-xl-25{padding-top:.25rem!important}.pr-xl-25,.px-xl-25{padding-right:.25rem!important}.pb-xl-25,.py-xl-25{padding-bottom:.25rem!important}.pl-xl-25,.px-xl-25{padding-left:.25rem!important}.p-xl-50{padding:.5rem!important}.pt-xl-50,.py-xl-50{padding-top:.5rem!important}.pr-xl-50,.px-xl-50{padding-right:.5rem!important}.pb-xl-50,.py-xl-50{padding-bottom:.5rem!important}.pl-xl-50,.px-xl-50{padding-left:.5rem!important}.p-xl-75{padding:.75rem!important}.pt-xl-75,.py-xl-75{padding-top:.75rem!important}.pr-xl-75,.px-xl-75{padding-right:.75rem!important}.pb-xl-75,.py-xl-75{padding-bottom:.75rem!important}.pl-xl-75,.px-xl-75{padding-left:.75rem!important}.m-xl-n1{margin:-1rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-1rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-1rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-1rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-1rem!important}.m-xl-n2{margin:-1.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-1.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-1.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-1.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-1.5rem!important}.m-xl-n3{margin:-3rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-3rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-3rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-3rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-3rem!important}.m-xl-n4{margin:-3.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-3.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-3.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-3.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-3.5rem!important}.m-xl-n5{margin:-4rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-4rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-4rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-4rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-4rem!important}.m-xl-n25{margin:-.25rem!important}.mt-xl-n25,.my-xl-n25{margin-top:-.25rem!important}.mr-xl-n25,.mx-xl-n25{margin-right:-.25rem!important}.mb-xl-n25,.my-xl-n25{margin-bottom:-.25rem!important}.ml-xl-n25,.mx-xl-n25{margin-left:-.25rem!important}.m-xl-n50{margin:-.5rem!important}.mt-xl-n50,.my-xl-n50{margin-top:-.5rem!important}.mr-xl-n50,.mx-xl-n50{margin-right:-.5rem!important}.mb-xl-n50,.my-xl-n50{margin-bottom:-.5rem!important}.ml-xl-n50,.mx-xl-n50{margin-left:-.5rem!important}.m-xl-n75{margin:-.75rem!important}.mt-xl-n75,.my-xl-n75{margin-top:-.75rem!important}.mr-xl-n75,.mx-xl-n75{margin-right:-.75rem!important}.mb-xl-n75,.my-xl-n75{margin-bottom:-.75rem!important}.ml-xl-n75,.mx-xl-n75{margin-left:-.75rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:Montserrat,Helvetica,Arial,serif!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#4e9876!important}a.text-primary:focus,a.text-primary:hover{color:#34654f!important}.text-secondary{color:#b8c2cc!important}a.text-secondary:focus,a.text-secondary:hover{color:#8b9cac!important}.text-success{color:#21b978!important}a.text-success:focus,a.text-success:hover{color:#15784e!important}.text-info{color:#4277cf!important}a.text-info:focus,a.text-info:hover{color:#28549d!important}.text-warning{color:#dda451!important}a.text-warning:focus,a.text-warning:hover{color:#bd7f25!important}.text-danger{color:#ea5455!important}a.text-danger:focus,a.text-danger:hover{color:#d71a1c!important}.text-light{color:#f7f7f9!important}a.text-light:focus,a.text-light:hover{color:#cbcbd8!important}.text-dark{color:#22292f!important}a.text-dark:focus,a.text-dark:hover{color:#020203!important}.text-body{color:#626262!important}.text-muted{color:#b8c2cc!important}.text-black-50{color:rgba(34,41,47,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:\" (\" attr(title) \")\"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #22292f}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dae1e7!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#eff1f7}.table .thead-dark th{color:inherit;border-color:#eff1f7}}code{padding:.1rem .4rem;font-size:90%;color:#ff8acc;background-color:#eee;border-radius:.25rem}pre{background-color:#f7f7f9}pre code{background-color:transparent!important}.form-control::-moz-placeholder{font-size:.85rem;color:rgba(34,41,47,.4);-moz-transition:all .2s ease;transition:all .2s ease}.form-control:-ms-input-placeholder{font-size:.85rem;color:rgba(34,41,47,.4);-ms-transition:all .2s ease;transition:all .2s ease}.form-control::placeholder{font-size:.85rem;color:rgba(34,41,47,.4);transition:all .2s ease}.form-control:-ms-input-placeholder{color:#abb6d5}.form-control:focus::-moz-placeholder{transform:translate(5px);-moz-transition:all .2s ease;transition:all .2s ease}.form-control:focus:-ms-input-placeholder{transform:translate(5px);-ms-transition:all .2s ease;transition:all .2s ease}.form-control:focus::placeholder{transform:translate(5px);transition:all .2s ease}.form-control:focus~.form-control-position i{color:#4e9876}label{color:#2b3656;font-size:.85rem;margin-bottom:0;padding-left:.2rem}textarea.form-control{line-height:1.6rem;font-size:1rem}.form-group{margin-bottom:1.5rem}.form-control{border:1px solid #c6cde3;color:#3c4b78}.form-section{color:#b8c2cc;line-height:3rem;margin-bottom:20px;border-bottom:1px solid #b8c2cc}.form-section i{font-size:20px;margin-left:5px;margin-right:10px}.form-actions{border-top:1px solid #cdd3e6;padding:20px 0;margin-top:20px}.form-actions.filled{background-color:#eff1f7}.form-actions.center{text-align:center}.form-actions.right{text-align:right}.form-actions.top{border-top:0;border-bottom:1px solid #cdd3e6;margin-top:0;margin-bottom:20px}@media (max-width:767.98px){.form-actions .buttons-group{float:left!important;margin-bottom:10px}}@media (min-width:576px){.form-horizontal .form-group .label-control{text-align:right}}.form-control.form-control-lg{padding:1rem}.form-control.form-control-lg::-moz-placeholder{font-size:1.25rem}.form-control.form-control-lg:-ms-input-placeholder{font-size:1.25rem}.form-control.form-control-lg::placeholder{font-size:1.25rem}.form-control.form-control-sm{padding:.6rem}.form-control.form-control-sm::-moz-placeholder{font-size:.7rem}.form-control.form-control-sm:-ms-input-placeholder{font-size:.7rem}.form-control.form-control-sm::placeholder{font-size:.7rem}.custom-file-label{padding:.4rem .7rem}.custom-file-label:after{padding:.4rem .7rem;height:auto}select.form-control:not([multiple=multiple]){background-position:calc(100% - 12px) 13px,calc(100% - 20px) 13px,100% 0;background-size:12px 12px,10px 10px;background-repeat:no-repeat;-webkit-appearance:none;-moz-appearance:none;padding-right:1.5rem}.custom-select{-moz-appearance:none;-webkit-appearance:none}.input-group-addon{background-color:#eceff1;border-color:#babfc7}.custom-control-label:after,.custom-control-label:before{width:1.143rem;height:1.143rem;top:.08rem}.custom-control-input:not(:disabled):active~.custom-control-label:before{background-color:#4e9876;border-color:#4e9876}.form-label-group{position:relative;margin-bottom:1.5rem}.form-label-group .form-control-lg~label{font-size:1.25rem;padding:1rem}.form-label-group .form-control-sm~label{font-size:.7rem}.form-label-group>label{position:absolute;top:0;left:0;display:block;transition:all .25s ease-in-out;padding:.6rem;pointer-events:none;cursor:text;color:rgba(34,41,47,.4);font-size:.85rem;opacity:0}.form-label-group>input,.form-label-group textarea{padding:.6rem}.form-label-group>input:focus:not(:-moz-placeholder-shown)~label,.form-label-group>input:not(:active):not(:-moz-placeholder-shown)~label,.form-label-group textarea:focus:not(:-moz-placeholder-shown)~label,.form-label-group textarea:not(:active):not(:-moz-placeholder-shown)~label{color:#4e9876!important;-moz-transition:all .25s ease-in-out;transition:all .25s ease-in-out;opacity:1}.form-label-group>input:focus:not(:-ms-input-placeholder)~label,.form-label-group>input:not(:active):not(:-ms-input-placeholder)~label,.form-label-group textarea:focus:not(:-ms-input-placeholder)~label,.form-label-group textarea:not(:active):not(:-ms-input-placeholder)~label{color:#4e9876!important;-ms-transition:all .25s ease-in-out;transition:all .25s ease-in-out;opacity:1}.form-label-group>input:focus:not(:placeholder-shown)~label,.form-label-group>input:not(:active):not(:placeholder-shown)~label,.form-label-group textarea:focus:not(:placeholder-shown)~label,.form-label-group textarea:not(:active):not(:placeholder-shown)~label{color:#4e9876!important;transition:all .25s ease-in-out;opacity:1}.form-label-group>input:not(:focus):not(:-moz-placeholder-shown)~label,.form-label-group textarea:not(:focus):not(:-moz-placeholder-shown)~label{color:rgba(34,41,47,.4)!important}.form-label-group>input:not(:focus):not(:-ms-input-placeholder)~label,.form-label-group textarea:not(:focus):not(:-ms-input-placeholder)~label{color:rgba(34,41,47,.4)!important}.form-label-group>input:not(:focus):not(:placeholder-shown)~label,.form-label-group textarea:not(:focus):not(:placeholder-shown)~label{color:rgba(34,41,47,.4)!important}.form-label-group>input:not(:-moz-placeholder-shown)~label,.form-label-group textarea:not(:-moz-placeholder-shown)~label{padding:.25rem 0;font-size:.7rem;top:-20px;left:3px}.form-label-group>input:not(:-ms-input-placeholder)~label,.form-label-group textarea:not(:-ms-input-placeholder)~label{padding:.25rem 0;font-size:.7rem;top:-20px;left:3px}.form-label-group>input:not(:placeholder-shown)~label,.form-label-group textarea:not(:placeholder-shown)~label{padding:.25rem 0;font-size:.7rem;top:-20px;left:3px}.form-label-group.has-icon-left>label{left:36px}.vs-checkbox-con{position:relative;display:flex;align-items:center;justify-content:flex-start;margin:.25rem 0}.vs-checkbox-con input{position:absolute;width:100%;height:100%;opacity:0;z-index:200;cursor:pointer;top:0}.vs-checkbox-con input:checked~.vs-checkbox{transform:rotate(0deg);border-color:#4e9876}.vs-checkbox-con input:checked~.vs-checkbox .vs-checkbox--check{transform:translate(0);background-color:#4e9876}.vs-checkbox-con input:checked~.vs-checkbox .vs-checkbox--check .vs-icon{transform:translate(0);line-height:1.2;opacity:1}.vs-checkbox-con input:checked~.vs-checkbox.vs-checkbox-sm .vs-checkbox--check .vs-icon{font-size:.75rem}.vs-checkbox-con input:checked~.vs-checkbox.vs-checkbox-lg .vs-checkbox--check .vs-icon{font-size:1.2rem}.vs-checkbox-con input:active:checked+.vs-checkbox .vs-checkbox--check{transform:translate(3px);background-color:#4e9876}.vs-checkbox-con input:active:checked+.vs-checkbox .vs-checkbox--check .vs-icon{opacity:1;transform:translate(6px)}.vs-checkbox-con input:disabled{cursor:default;pointer-events:none}.vs-checkbox-con input:disabled+.vs-checkbox{cursor:default;opacity:.5}.vs-checkbox-con .vs-checkbox{cursor:pointer;position:relative;width:20px;height:20px;border:2px solid #b8c2cc;border-radius:2px;transform:rotate(-90deg);transition:all .2s ease;overflow:hidden;margin-right:.5rem}.vs-checkbox-con .vs-checkbox.vs-checkbox-sm{width:15px;height:15px}.vs-checkbox-con .vs-checkbox.vs-checkbox-lg{width:24px;height:24px}.vs-checkbox-con .vs-checkbox .vs-checkbox--check{width:100%;height:100%;position:absolute;left:0;transform:translate(100%);transform-origin:right;transition:all .2s ease;z-index:10}.vs-checkbox-con .vs-checkbox .vs-checkbox--check .vs-icon{display:flex;justify-content:center;align-items:center;color:#fff}.vs-radio-con{position:relative;display:flex;align-items:center;justify-content:flex-start;margin:.25rem 0}.vs-radio-con input{position:absolute;width:100%;height:100%;opacity:0;z-index:200;cursor:pointer}.vs-radio-con input:checked~.vs-radio{transform:rotate(0deg);outline:0}.vs-radio-con input:checked~.vs-radio .vs-radio--circle{background:#4e9876;box-shadow:0 3px 12px 0 rgba(78,152,118,.4);opacity:1;transform:scale(1)}.vs-radio-con input:checked~.vs-radio .vs-radio--border{opacity:0;transform:scale(.3)}.vs-radio-con input:disabled{cursor:default;pointer-events:none}.vs-radio-con input:disabled+.vs-radio{cursor:default;opacity:.5}.vs-radio-con input:active~.vs-radio{transform:scale(1.1)}.vs-radio-con .vs-radio{cursor:pointer;position:relative;width:18px;height:18px;transition:all .2s ease;margin-right:.5rem}.vs-radio-con .vs-radio.vs-radio-sm{width:13px;height:13px}.vs-radio-con .vs-radio.vs-radio-lg{width:22px;height:22px}.vs-radio-con .vs-radio .vs-radio--border,.vs-radio-con .vs-radio .vs-radio--circle{width:100%;height:100%;position:absolute;left:0;transition:all .25s ease;top:0;border-radius:50%}.vs-radio-con .vs-radio .vs-radio--border{background:transparent;border:2px solid #b8c2cc}.vs-radio-con .vs-radio .vs-radio--circle{opacity:0;transform:scale(.1)}.counter-value{background-color:#4e9876;color:#fff;padding:1px 6px;font-size:.6rem;border-radius:0 0 5px 5px;margin-right:1rem}.form-group.input-divider-left .form-control-position i{padding:.2rem .5rem;border-right:1px solid #c6cde3}.form-group.input-divider-right .form-control-position i{padding:.2rem .5rem;border-left:1px solid #c6cde3}.input-group-lg .form-control,.input-group-sm .form-control{padding:.7rem}.bootstrap-touchspin.input-group{width:8.4rem;align-items:center}.bootstrap-touchspin.input-group .form-control{padding:5px;height:auto;border:0;background-color:#eff1f7;border-radius:5px!important;text-align:center;font-weight:500}.bootstrap-touchspin.input-group .form-control:focus{z-index:1;box-shadow:none}.bootstrap-touchspin .bootstrap-touchspin-injected{margin:0!important}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-down,.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-up{padding:0;min-width:22px;min-height:22px;border-radius:5px!important;position:relative}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-down i,.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-up i{font-size:.8rem;position:relative;top:-1px}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-down{left:12px}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-up{right:12px}.bootstrap-touchspin.disabled-touchspin .bootstrap-touchspin-down,.bootstrap-touchspin.disabled-touchspin .bootstrap-touchspin-up{background-color:rgba(0,0,0,.5)!important;cursor:default;opacity:.5}.bootstrap-touchspin.input-group-lg{width:9.375rem}.bootstrap-touchspin.input-group-lg .touchspin.form-control{height:auto!important}.bootstrap-touchspin.input-group-lg .bootstrap-touchspin-down i,.bootstrap-touchspin.input-group-lg .bootstrap-touchspin-up i{font-size:1rem}.bootstrap-touchspin.input-group-sm{width:6.25rem}.bootstrap-touchspin.input-group-sm .touchspin.form-control{height:auto!important}.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-down,.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-up{min-width:16px;min-height:16px;padding-top:2.2px}.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-down i,.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-up i{font-size:.6rem}.btn.disabled-max-min{background-color:rgba(0,0,0,.5)!important;cursor:default}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}.bootstrap-touchspin.input-group input[type=number]{-moz-appearance:textfield}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.form-label-group label{display:none}select.form-control:not([multiple=multiple]){background:none}.custom-file-label:after{padding:1.34rem .7rem 1.25rem}}.picker__input.form-control{background-color:#fff}.input-group .form-control{height:auto}.input-group .input-group-append .dropdown-toggle:after,.input-group .input-group-prepend .dropdown-toggle:after{left:0}.input-group .input-group-append .vs-checkbox,.input-group .input-group-append .vs-checkbox-con,.input-group .input-group-append .vs-radio,.input-group .input-group-append .vs-radio-con,.input-group .input-group-prepend .vs-checkbox,.input-group .input-group-prepend .vs-checkbox-con,.input-group .input-group-prepend .vs-radio,.input-group .input-group-prepend .vs-radio-con{margin:0}.input-group.input-group-lg .form-control::-moz-placeholder{font-size:1.25rem}.input-group.input-group-lg .form-control:-ms-input-placeholder{font-size:1.25rem}.input-group.input-group-lg .form-control::placeholder{font-size:1.25rem}.input-group.input-group-lg .input-group-append .btn,.input-group.input-group-lg .input-group-prepend .btn{line-height:1.3;font-size:1.3rem}.input-group.input-group-sm .form-control::-moz-placeholder{font-size:.7rem}.input-group.input-group-sm .form-control:-ms-input-placeholder{font-size:.7rem}.input-group.input-group-sm .form-control::placeholder{font-size:.7rem}.btn:disabled{cursor:default}.btn.btn-white{background-color:#fff;color:#626262}.btn.btn-white:active,.btn.btn-white:focus,.btn.btn-white:hover{color:#626262!important}.btn.btn-white.btn-primary{background-color:#4e9876}.btn[class*=bg-gradient-]:hover{box-shadow:0 8px 25px -8px #aaa}.btn.btn-secondary{color:#fff}.btn.btn-secondary:hover{box-shadow:0 8px 25px -8px #b8c2cc}.btn.btn-dark:hover{box-shadow:0 8px 25px -8px #22292f}.btn.btn-light:hover{box-shadow:0 8px 25px -8px #f7f7f9}.btn.btn-outline-dark,.btn.btn-outline-light,.btn.btn-outline-secondary{border:1px solid}.btn[class*=btn-outline-]{padding-top:calc(.9rem - 1px);padding-bottom:calc(.9rem - 1px)}.btn-group-sm>.btn[class*=btn-outline-],.btn[class*=btn-outline-].btn-sm{padding-top:calc(.5rem - 1px);padding-bottom:calc(.5rem - 1px)}.btn.btn-icon{padding:.715rem .736rem}.btn-group-sm>.btn.btn-icon,.btn.btn-sm.btn-icon{padding:.5rem}.btn-group-lg>.btn.btn-icon,.btn.btn-lg.btn-icon{padding:1rem}.btn.btn-round{border-radius:2rem}.btn.active,.btn.focus,.btn:active,.btn:focus{outline:none;box-shadow:none!important}.btn.btn-icon i{font-size:1.1rem}.btn-white:hover,.btn.btn-outline-white:hover{color:#22292f!important}[type=reset],[type=submit],button,html [type=button]{cursor:pointer}.waves-button-input{padding:unset}.dropdown.show .btn-outline-light.dropdown-toggle,.dropdown.show .btn-outline-warning.dropdown-toggle{color:#fff}.dropdown .btn:not(.btn-sm):not(.btn-lg),.dropdown .btn:not(.btn-sm):not(.btn-lg).dropdown-toggle{padding:.85rem 1.5rem}.dropdown .btn:not(.btn-sm):not(.btn-lg).btn-round,.dropdown .btn:not(.btn-sm):not(.btn-lg).dropdown-toggle.btn-round{border-radius:2rem}.dropdown .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem;border-left-color:hsla(0,0%,100%,.2)!important;border-top-left-radius:0;border-bottom-left-radius:0}.dropdown [class*=btn-outline-].dropdown-toggle.dropdown-toggle-split{border-left:0!important}.dropdown [class*=btn-outline-].dropdown-toggle.dropdown-toggle-split:active{color:#fff}.dropdown .dropdown-menu{border:1px solid rgba(86,86,86,.05);border-radius:5px;transform:scaleY(0);box-shadow:0 5px 25px rgba(86,86,86,.1);min-width:8rem}.dropdown .dropdown-menu:before{content:\"\";position:absolute;top:-1px;left:1.2rem;width:.75rem;height:.75rem;display:block;background:#fff;transform:rotate(45deg) translate(-7px);border-top:1px solid rgba(86,86,86,.1);border-left:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropdown .dropdown-menu.dropdown-menu-right:before{right:.6rem;left:auto}.dropdown .dropdown-menu .dropdown-header{padding:.714rem 1.428rem;margin-top:.714rem}.dropdown .dropdown-menu .dropdown-item{padding:.5rem 1rem;color:#626262;width:auto;cursor:pointer}.dropdown .dropdown-menu .dropdown-item:hover{background-color:#eff1f7;color:#4e9876}.dropdown .dropdown-menu .dropdown-item.active{color:#fff}.dropdown .dropdown-menu .dropdown-item:active{background-color:transparent;color:#626262}.dropdown i{margin-right:.5rem}.dropdown.no-arrow .dropdown-toggle:after{display:none}.dropdown.no-arrow .dropdown-toggle i{margin-right:0}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown .dropdown-menu .dropdown-item,.dropleft .dropdown-menu .dropdown-item,.dropright .dropdown-menu .dropdown-item,.dropup .dropdown-menu .dropdown-item{padding:.714rem 1.428rem}.show>.dropdown-menu{transform:scale(1);opacity:1;display:block}.dropdown-toggle:after{border:none!important;font-family:feather;content:\"\\E842\"!important;position:relative;top:1px;right:0;left:.714rem;padding:0;margin:0;vertical-align:0}.dropdown-toggle.dropdown-toggle-split{border-left:1px solid hsla(0,0%,100%,.2)}.dropdown-toggle.dropdown-toggle-split:after{left:0}.dropdown-toggle.nav-hide-arrow:after{display:none}.dropdown-toggle:focus{outline:0}.btn-secondary~.dropdown-menu .dropdown-item.active,.btn-secondary~.dropdown-menu .dropdown-item:hover{background-color:#ccc}.dropup{position:relative}.dropup .btn,.dropup .btn.dropdown-toggle{padding:.85rem 1.5rem}.dropup .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem;border-color:hsla(0,0%,100%,.2)!important}.dropup .dropdown-toggle:after{content:\"\\E845\"!important;vertical-align:.05rem}.dropup .dropdown-menu:before{content:\"\";position:absolute;bottom:-.714rem;left:1.214rem;width:.714rem;height:.714rem;display:block;background:#fff;transform:rotate(45deg) translate(-7px);border-bottom:1px solid rgba(86,86,86,.1);border-right:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropup .dropdown-menu.dropdown-menu-right:before{left:auto;right:.714rem}.dropup .dropdown-submenu .dropdown-menu{bottom:auto;top:0}.dropleft .btn,.dropleft .btn.dropdown-toggle{padding:.85rem 1.5rem}.dropleft .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem}.dropleft .dropdown-toggle:before{border:none!important;font-family:feather;content:\"\\E843\"!important}.dropleft .dropdown-menu:before{content:\"\";position:absolute;top:1.285rem;right:0;width:.714rem;height:.714rem;display:block;background:#fff;transform:rotate(130deg) translate(-8px);border-top:1px solid rgba(86,86,86,.1);border-left:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropright .btn,.dropright .btn.dropdown-toggle{padding:.85rem 1.5rem}.dropright .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem}.dropright .dropdown-toggle:after{border:none!important;font-family:feather;content:\"\\E844\"!important}.dropright .dropdown-menu:before{content:\"\";position:absolute;top:1.285rem;left:-.9rem;width:.714rem;height:.714rem;display:block;background:#fff;transform:rotate(140deg) translate(-9px);border-bottom:1px solid rgba(86,86,86,.1);border-right:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropdown.dropdown-icon-wrapper .dropdown-toggle:after,.dropup.dropdown-icon-wrapper .dropdown-toggle:after{display:none}.dropdown.dropdown-icon-wrapper .dropdown-menu,.dropup.dropdown-icon-wrapper .dropdown-menu{min-width:auto}.dropdown.dropdown-icon-wrapper .dropdown-menu .dropdown-item,.dropup.dropdown-icon-wrapper .dropdown-menu .dropdown-item{padding:.5rem 1.1rem;cursor:pointer}.dropdown.dropdown-icon-wrapper .dropdown-menu .dropdown-item i,.dropup.dropdown-icon-wrapper .dropdown-menu .dropdown-item i{font-size:1.3rem;color:#626262}.dropdown.dropdown-icon-wrapper .dropdown-menu .dropdown-item:hover,.dropup.dropdown-icon-wrapper .dropdown-menu .dropdown-item:hover{color:#fff}.btn.btn-white~.dropdown-menu .dropdown-item:not(.acitve):hover{color:#626262!important}.btn.btn-white~.dropdown-menu .dropdown-item.active{color:#626262}.header-navbar .dropdown-menu,.horizontal-menu-wrapper .dropdown-menu{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:slideIn;animation-name:slideIn}@-webkit-keyframes slideIn{to{transform:translateY(0);opacity:1}0%{transform:translateY(1rem);opacity:0}}@keyframes slideIn{to{transform:translateY(0);opacity:1}0%{transform:translateY(1rem);opacity:0}}.navbar-dark .hamburger-inner,.navbar-dark .hamburger-inner:after,.navbar-dark .hamburger-inner:before{background-color:#fff}.header-navbar-shadow{display:none}.navbar-floating .header-navbar-shadow{display:block;background:linear-gradient(180deg,hsla(0,0%,97.3%,.95) 44%,hsla(0,0%,97.3%,.46) 73%,hsla(0,0%,100%,0));padding-top:2.2rem;background-repeat:repeat;width:100%;height:102px;position:fixed;top:0;z-index:11}.header-navbar{padding:0;min-height:3.8rem;font-family:Montserrat,Helvetica,Arial,serif;transition:all .3s ease;background:linear-gradient(180deg,hsla(0,0%,97.3%,.95) 44%,hsla(0,0%,97.3%,.46) 73%,hsla(0,0%,100%,0));z-index:997}.header-navbar.fixed-top{left:260px}.header-navbar[class*=bg-] .navbar-nav .nav-item>a,.header-navbar[class*=bg-] .navbar-nav .nav-item>a i,.header-navbar[class*=bg-] .navbar-nav .nav-item>a span{color:#fff!important}.header-navbar[class*=bg-] .navbar-nav .nav-item .dropdown-menu i{color:inherit!important}.header-navbar[class*=bg-] .navbar-nav .search-input .input,.header-navbar[class*=bg-] .navbar-nav .search-input .search-list .auto-suggestion span{color:#626262!important}.header-navbar.floating-nav{margin:1.3rem 2.2rem 0;border-radius:.5rem;position:fixed;width:calc(100% - 4.4rem - 260px);z-index:12;right:0}.header-navbar.navbar-static-top{background:transparent;box-shadow:none!important;top:0;right:0;left:260px;width:calc(100% - 260px)}.header-navbar .navbar-wrapper{width:100%}.header-navbar.navbar-border{border-bottom:1px solid #e4e7ed}.header-navbar.navbar-dark.navbar-border{border-bottom:1px solid #8596b5}.header-navbar.navbar-shadow{box-shadow:0 4px 20px 0 rgba(0,0,0,.05)}.header-navbar:not(.navbar-horizontal) .nav-link.dropdown-toggle:after{display:none}.header-navbar .navbar-container ul.nav li.dropdown-language{padding-right:0}.header-navbar .navbar-container ul.nav li.dropdown-language .selected-language{font-size:.97rem;letter-spacing:-.25px;font-weight:500}.header-navbar .navbar-container{padding-left:1rem;transition:all .3s ease;background:inherit;margin-left:0}.header-navbar .navbar-container .bookmark-wrapper ul.nav li>a.nav-link{padding:1.4rem .5rem 1.35rem}.header-navbar .navbar-container .bookmark-wrapper ul.nav li>a.nav-link i:hover{color:#4e9876}.header-navbar .navbar-container .bookmark-input{z-index:1}.header-navbar .navbar-container ul.nav li.dropdown .dropdown-menu{top:48px}.header-navbar .navbar-container ul.nav li .badge{padding:.42em .6em .25rem}.header-navbar .navbar-container ul.nav li .badge.badge-up{position:absolute;top:12px;right:-2px}.header-navbar .navbar-container ul.nav li.dropdown-language>a.nav-link{padding:1.65rem .5rem}.header-navbar .navbar-container ul.nav li>a.nav-link{color:#626262;padding:1.6rem .5rem 1.35rem 1rem}.header-navbar .navbar-container ul.nav li>a.nav-link i.flag-icon{margin-right:.5rem}.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right{right:12px;left:auto;padding:.5rem}.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right .dropdown-item{padding:10px}.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right .dropdown-item:active,.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right .dropdown-item:hover{background:#4e9876;color:#fff!important}.header-navbar .navbar-container ul.nav li a.dropdown-user-link{padding:.7rem 1rem;display:flex;align-items:center}.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-name{display:inline-block;margin-bottom:.435rem;margin-left:.2rem}.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-status{font-size:smaller}.header-navbar .navbar-container ul.nav li a.dropdown-user-link img{box-shadow:0 4px 8px 0 rgba(0,0,0,.12),0 2px 4px 0 rgba(0,0,0,.08)}.header-navbar .navbar-container ul.nav li a.menu-toggle{padding:1.34rem .22rem 1.35rem 0}.header-navbar .navbar-container ul.nav li a.menu-toggle i{font-size:1.4rem}.header-navbar .navbar-container ul.nav li a.nav-link-label{padding:1.6rem 0 1.35rem .8rem}.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-nav{display:flex;flex-direction:column;align-items:flex-end;float:left;margin-right:.8rem}.header-navbar .navbar-container ul.nav li div.input-group{padding:.7rem 1rem}.header-navbar .navbar-container ul.nav li i.ficon{font-size:1.5rem;color:#626262}.header-navbar .navbar-container ul.nav li i.ficon:hover{color:#4e9876}.header-navbar .navbar-container ul.nav li .media-list{max-height:18.2rem}.header-navbar .navbar-container ul.nav li .scrollable-container{position:relative}.header-navbar .navbar-container .dropdown-menu-media{width:26rem}.header-navbar .navbar-container .dropdown-menu-media .media-list .media{padding:1rem;border:none;border-bottom:1px solid #dae1e7}.header-navbar .navbar-container .dropdown-menu-media .media-list .media:hover{background:#eff1f7}.header-navbar .navbar-container .dropdown-menu-media .media-list .media .media-meta{color:#626262}.header-navbar .navbar-container .dropdown-menu-media .media-list a:last-of-type .media{border-bottom:none}.header-navbar .navbar-container .dropdown-menu-media .dropdown-menu-header{border-bottom:1px solid #dae1e7}.header-navbar .navbar-container .dropdown-menu-media .dropdown-menu-footer a{padding:.3rem;border-top:1px solid #dae1e7}.header-navbar .nav-item+.nav-item,.header-navbar.navbar-without-menu .navbar-container{margin-left:0}@media (max-width:767.98px){.header-navbar .navbar-header{width:100%!important;padding:.5rem 1rem;position:relative}.header-navbar .navbar-header .menu-toggle{top:2px;position:relative}.header-navbar .navbar-header .open-navbar-container i{font-size:1.8rem}.header-navbar .navbar-header .navbar-brand{position:absolute;left:50%;top:0;transform:translate(-50%)}.header-navbar.navbar-with-menu .navbar-container{width:100%;display:table;margin:0;height:auto}}@media (max-width:991.98px){[data-menu=vertical-menu-modern] .header-navbar .navbar-header{width:100%!important;padding:.5rem 1rem;position:relative}[data-menu=vertical-menu-modern] .header-navbar .navbar-header .menu-toggle{top:2px;position:relative}[data-menu=vertical-menu-modern] .header-navbar .navbar-header .open-navbar-container i{font-size:1.8rem}[data-menu=vertical-menu-modern] .header-navbar .navbar-header .navbar-brand{position:absolute;left:50%;top:0;transform:translate(-50%)}[data-menu=vertical-menu-modern] .header-navbar.navbar-with-menu .navbar-container{width:100%;display:table;margin:0;height:auto}[data-menu=vertical-menu-modern] .navbar-dark .navbar-header .navbar-nav .nav-link,[data-menu=vertical-menu-modern] .navbar-semi-dark .navbar-header .navbar-nav .nav-link{color:#fff}[data-menu=vertical-menu-modern] .navbar-dark .navbar-container .navbar-nav .nav-link,[data-menu=vertical-menu-modern] .navbar-light .navbar-header .navbar-nav .nav-link,[data-menu=vertical-menu-modern] .navbar-semi-dark .navbar-container .navbar-nav .nav-link{color:#b8c2cc}}.navbar-light,.navbar-light.navbar-horizontal{background:#fff}.navbar-light .navbar-nav li{line-height:1}.navbar-light .navbar-nav .active.nav-link{background-color:rgba(0,0,0,.03)}.navbar-light .navbar-nav .disabled.nav-link{color:#b8c2cc}.navbar-dark{background:#b8c2cc}.navbar-dark .navbar-brand{color:#fff!important}.navbar-dark.navbar-horizontal{background:#b8c2cc}.navbar-dark .nav-search .btn-secondary,.navbar-dark .nav-search .form-control{color:#fff;background:#b8c2cc}.navbar-dark .navbar-nav li{line-height:1}.navbar-dark .navbar-nav .active.nav-link{background-color:hsla(0,0%,100%,.05)}.navbar-dark .navbar-nav .disabled.nav-link{color:#dae1e7}.navbar-semi-dark{background:#fff}.navbar-semi-dark .navbar-header{background:#b8c2cc}.navbar-semi-dark .navbar-header .brand-text{color:#fff}.navbar-semi-dark .navbar-nav li{line-height:1}.navbar-semi-dark .navbar-nav .nav-link{color:#b8c2cc}.navbar-semi-dark .navbar-nav .active.nav-link{background-color:rgba(0,0,0,.03)}.navbar-semi-dark .navbar-nav .disabled.nav-link{color:#b8c2cc}.navbar-semi-light{background:#b8c2cc}.navbar-semi-light .navbar-header{background:#fff}.navbar-semi-light .navbar-header .brand-text{color:#b8c2cc}.navbar-semi-light .navbar-nav li{line-height:1}.navbar-semi-light .navbar-nav .nav-link{color:#fff}.navbar-semi-light .navbar-nav .active.nav-link{background-color:rgba(0,0,0,.03)}.navbar-semi-light .navbar-nav .disabled.nav-link{color:#b8c2cc}@-moz-document url-prefix(){ul li a .children-in{position:relative;right:3px;top:-14px}}.navbar-menu-icon span{display:block;position:absolute;height:2px;width:100%;background:#b8c2cc;border-radius:9px;opacity:1;left:0;transform:rotate(0deg);transition:.25s ease-in-out}.navbar-menu-icon span:first-child{top:0}.navbar-menu-icon span:nth-child(2){top:10px}.navbar-menu-icon span:nth-child(3){top:20px}.navbar-menu-icon.show span:first-child{top:10px;transform:rotate(135deg)}.navbar-menu-icon.show span:nth-child(2){opacity:0;left:-60px}.navbar-menu-icon.show span:nth-child(3){top:10px;transform:rotate(-135deg)}@media (max-width:767.98px){.header-navbar .navbar-nav .show{position:static}.header-navbar .navbar-nav .open-navbar-container{padding-top:.625rem}.header-navbar .navbar-container .show .dropdown-menu{right:0;left:0!important;float:none;width:auto;margin-top:0;max-height:400px;overflow-x:hidden}.header-navbar .navbar-container .dropdown-user .dropdown-menu-right{right:0!important}.header-navbar .navbar-container ul.nav li.nav-item i{margin-right:.2rem}.header-navbar .navbar-container ul.nav li a.dropdown-user-link{padding:.8rem .6rem}.header-navbar .navbar-container ul.nav li .dropdown-toggle:after{margin-right:0;margin-left:-2px}.navbar-dark .hamburger-inner,.navbar-dark .hamburger-inner:after,.navbar-dark .hamburger-inner:before,.navbar-semi-dark .hamburger-inner,.navbar-semi-dark .hamburger-inner:after,.navbar-semi-dark .hamburger-inner:before{background-color:#fff}.navbar-dark .navbar-header .navbar-nav .nav-link,.navbar-semi-dark .navbar-header .navbar-nav .nav-link{color:#fff}.navbar-dark .navbar-container .navbar-nav .nav-link,.navbar-light .navbar-container .navbar-nav .nav-link,.navbar-light .navbar-header .navbar-nav .nav-link,.navbar-semi-dark .navbar-container .navbar-nav .nav-link,.navbar-semi-light .navbar-container .navbar-nav .nav-link,.navbar-semi-light .navbar-header .navbar-nav .nav-link{color:#b8c2cc}}.headroom{will-change:transform;transition:transform .2s linear}.headroom--pinned-top{transform:translateY(0)}.headroom--unpinned-top{transform:translateY(-100%)}.headroom--pinned-bottom{transform:translateY(0)}.headroom--unpinned-bottom{transform:translateY(100%)}@media (max-width:575.98px){.header-navbar .navbar-container ul.nav li .selected-language{display:none}}body[data-col=\"1-column\"] .header-navbar.floating-nav{width:calc(100% - 4.4rem)}@media (-ms-high-contrast:none),(min-width:1200px) and (-ms-high-contrast:active){body:not([data-col=\"1-columns\"]) .header-navbar.floating-nav{width:calc(100% - 320px)}}@media (max-width:1199.98px){.header-navbar .navbar-container ul.nav li a.dropdown-user-link{padding:.7rem 1.23rem}.header-navbar .navbar-container ul.nav li .dropdown-toggle:after{margin-right:0;margin-left:-2px}.header-navbar.navbar-static-top{left:0;width:100%}}@media (max-width:767px){#navbar-mobile.navbar-collapse .navbar-nav{margin:0;flex-flow:row wrap}#navbar-mobile.navbar-collapse .navbar-nav .dropdown-menu{position:absolute}#navbar-mobile.navbar-collapse .navbar-nav .nav-item{float:left}}@media (max-width:991.98px){#navbar-mobile.navbar-collapse .navbar-nav{margin:0;flex-flow:row wrap}#navbar-mobile.navbar-collapse .navbar-nav .dropdown-menu{position:absolute}#navbar-mobile.navbar-collapse .navbar-nav .nav-item{float:left}}@media only screen and (min-device-width:26.78em) and (max-device-width:47.64em) and (-webkit-min-device-pixel-ratio:2) and (orientation:landscape){.header-navbar .navbar-container .show .dropdown-menu{max-height:180px}}@media only screen and (min-device-width:29.57em) and (max-device-width:52.57em) and (-webkit-min-device-pixel-ratio:3) and (orientation:landscape){.header-navbar .navbar-container .show .dropdown-menu{max-height:280px}}#navbar-component .navbar{z-index:auto!important}#navbar-component .navbar.floating-nav{border-radius:.5rem}#navbar-component .navbar .navbar-nav .nav-item a{color:inherit}#navbar-component .navbar.header-navbar.navbar-dark .navbar-nav .nav-link,#navbar-component .navbar.header-navbar.navbar-dark .navbar-nav .nav-link i{color:#fff}#navbar-component .navbar .navbar-nav .dropdown-language.show,#navbar-component .navbar .navbar-nav .dropdown-notification.show,#navbar-component .navbar .navbar-nav .dropdown-user.show{position:relative}#navbar-component .navbar .navbar-nav .dropdown-language .dropdown-menu.show,#navbar-component .navbar .navbar-nav .dropdown-notification .dropdown-menu.show,#navbar-component .navbar .navbar-nav .dropdown-user .dropdown-menu.show{position:absolute;right:0;left:auto!important}#navbar-component .navbar.navbar-dark .navbar-toggler,#navbar-component .navbar.navbar-light .navbar-toggler{font-size:1.2rem}#navbar-component .navbar.navbar-dark .navbar-toggler:focus,#navbar-component .navbar.navbar-light .navbar-toggler:focus{outline:0}#navbar-component #navbar-collapsed .navbar{border-radius:0}@media (min-width:992px){#navbar-component .navbar .navbar-container{background:inherit}#navbar-component .nav .dropdown-language{float:right}}@media (max-width:992px){#navbar-component .navbar .navbar-container{background:inherit}#navbar-component .navbar .navbar-container .navbar-nav{flex-direction:row}}@media (max-width:1201px){.header-navbar.fixed-top{left:0}.horizontal-layout .header-navbar .navbar-container{padding-left:1.5rem;padding-right:1.2rem}}@media (max-width:1199px){.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-name{margin-bottom:0}}@media (max-width:768px){#navbar-component .navbar .navbar-nav .dropdown-notification.show{position:static}}@media (max-width:575.98px){.header-navbar.floating-nav{width:calc(100% - 2.4rem)!important;margin-left:1.2rem;margin-right:1.2rem}.content.app-content .content-area-wrapper{margin-left:1.2rem!important;margin-right:1.2rem!important}.header-navbar .navbar-container{padding-left:1rem!important;padding-right:0!important}}@media (max-width:992px){.navbar-container #navbar-mobile .nav-back{margin-top:5px}}.nav{border-radius:.25rem}.nav.wrap-border{border:1px solid #ddd}.nav.wrap-border li.nav-header{margin:0 .5rem}.nav.wrap-border div,.nav.wrap-border li.nav-item{padding:2px .714rem}.nav.square-border,.nav.square-border .nav-item .nav-link.active{border-radius:0}.nav .modern-nav-toggle{padding:1.571rem 0}.nav.nav-pills{margin-bottom:1rem}.nav.nav-pills .nav-item .nav-link{border-radius:.357rem;padding:.3rem 1rem .2rem;margin-right:.5rem}.nav.nav-pills .nav-item .nav-link.active{color:#fff}.nav.nav-pills .nav-item .nav-link.disabled{color:#b8c2cc}.nav.nav-pills .nav-item .nav-link.dropdown-toggle:after{top:1px;left:1px}.nav.nav-pills .nav-item.dropdown.show .nav-link{color:#fff}.nav.nav-pills .nav-item.dropdown.show .dropdown-item.active:hover{color:#4e9876}.nav.nav-pills.nav-justified{width:100%}.nav.nav-pills.nav-justified .nav-item{float:none}.nav.nav-pills.nav-justified .nav-link{text-align:center;margin-bottom:5px}.nav.nav-pills.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:576px){.nav.nav-pills.nav-justified .nav-item{display:block;width:1%}.nav.nav-pills.nav-justified .nav-link{margin-bottom:0}}.nav.nav-pills.nav-justified .nav-link{margin-right:0;border-radius:.5rem}@media (min-width:576px){.nav.nav-pills.nav-justified .nav-link.active,.nav.nav-pills.nav-justified .nav-link.active:focus,.nav.nav-pills.nav-justified .nav-link.active:hover{border-bottom-color:transparent}}.nav.nav-pills.nav-justified .nav-link{display:block}.nav.nav-pills.nav-justified .nav-link.active,.nav.nav-pills.nav-justified .nav-link.active:focus,.nav.nav-pills.nav-justified .nav-link.active:hover{border:none}.nav.nav-pills.nav-active-bordered-pill .nav-item a.nav-link.active{border:1px solid #4e9876;border-radius:.25rem;color:#4e9876;background-color:#fff}.nav.nav-tabs{border:none;margin-bottom:1rem;border-radius:0}.nav.nav-tabs,.nav.nav-tabs .nav-item{position:relative}.nav.nav-tabs .nav-item .nav-link{color:#626262;font-size:.95rem;border:none;min-width:auto;font-weight:450;padding:.61rem .635rem;border-radius:0}.nav.nav-tabs .nav-item .nav-link.active{border:none;position:relative;color:#4e9876;transition:all .2s ease;background-color:transparent}.nav.nav-tabs .nav-item .nav-link.active:after{content:attr(data-before);height:2px;width:100%;left:0;position:absolute;bottom:0;top:100%;background:linear-gradient(30deg,#4e9876,rgba(78,152,118,.5))!important;box-shadow:0 0 8px 0 rgba(78,152,118,.5)!important;transform:translateY(0);transition:all .2s linear}.nav.nav-tabs .nav-item .nav-link.dropdown-toggle:after{top:1px;left:1px}.nav.nav-tabs .nav-item .nav-link.disabled{color:#b8c2cc}.nav.nav-tabs.nav-justified{width:100%}.nav.nav-tabs.nav-justified .nav-item{float:none}.nav.nav-tabs.nav-justified .nav-link{text-align:center;margin-bottom:5px}.nav.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:576px){.nav.nav-tabs.nav-justified .nav-item{display:block;width:1%}.nav.nav-tabs.nav-justified .nav-link{margin-bottom:0}}.nav.nav-tabs.nav-justified .nav-link{margin-right:0;border-radius:.5rem}@media (min-width:576px){.nav.nav-tabs.nav-justified .nav-link.active,.nav.nav-tabs.nav-justified .nav-link.active:focus,.nav.nav-tabs.nav-justified .nav-link.active:hover{border-bottom-color:transparent}}.nav.nav-tabs.nav-justified .nav-item a.nav-link{display:block;border-radius:0}.nav.nav-tabs.nav-justified .nav-item a.nav-link.active{border:none;background-color:#fff}.nav.nav-tabs.nav-justified .nav-item a.nav-link:hover{border-color:transparent}.nav-vertical{overflow:hidden}.nav-vertical .nav.nav-tabs .nav-item .nav-link{border:none;margin-bottom:0}.nav-vertical .nav.nav-tabs .nav-item .nav-link.active{border:none;border-radius:0}.nav-vertical .nav.nav-tabs .nav-item .nav-link.active:after{transform:rotate(90deg);left:auto;right:-1.5rem;bottom:100%;top:1.25rem;width:2.14rem}.nav-vertical .nav.nav-tabs .nav-item .nav-link:hover{border-right:none}.nav-vertical .nav.nav-tabs.nav-left{float:left;display:table;margin-right:1rem}.nav-vertical .nav.nav-tabs.nav-left~.tab-content .tab-pane{display:none;background-color:#fff;overflow-y:auto}.nav-vertical .nav.nav-tabs.nav-left~.tab-content .tab-pane.active{display:block}.nav-vertical .nav.nav-tabs.nav-right{float:right;display:table;margin-left:1rem}.nav-vertical .nav.nav-tabs.nav-right .nav-item .nav-link.active:after{left:-1.5rem}.nav-vertical .nav.nav-tabs.nav-right~.tab-content .tab-pane{display:none;background-color:#fff;overflow-y:auto;padding-right:1rem}.nav-vertical .nav.nav-tabs.nav-right~.tab-content .tab-pane.active{display:block}@media (max-width:576px){.nav-vertical .nav.nav-tabs .nav-item .nav-link.active:after{height:0}}.toast-bs-container{z-index:1040;position:fixed;top:0;left:0;width:100%}.toast-bs-container .toast-position{position:relative;top:0;right:0;display:flex;flex-direction:column;flex-wrap:wrap-reverse}.toast-bs-container .toast-position .toast.show{opacity:1;z-index:1030}.toast-placement{position:static;top:0}.toast-placement .toast{position:fixed;top:0;z-index:1030}.toast{display:none;background-color:#fff;margin-top:.75rem}.toast .toast-header .close:active,.toast .toast-header .close:focus,.toast .toast-header .mailbox-attachment-close:active,.toast .toast-header .mailbox-attachment-close:focus{outline:none}.toast.show.toast-wrapper{position:static}.toast.toast-translucent{opacity:1;display:block}.toast-header img{width:35px;height:24px}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.toast-bs-container{position:fixed!important;left:74%!important}}.toast-bs-container,_:-ms-lang(x){position:fixed!important;left:74%!important}.pagination .page-item{border-radius:5rem}.pagination .page-item.first .page-link,.pagination .page-item.last .page-link,.pagination .page-item.next-item .page-link,.pagination .page-item.prev-item .page-link{color:#4e9876}.pagination .page-item.first.disabled .page-link,.pagination .page-item.last.disabled .page-link,.pagination .page-item.next-item.disabled .page-link,.pagination .page-item.prev-item.disabled .page-link{color:#b8c2cc}.pagination .page-item:not(.active) .page-link,.pagination .page-item:not(.first) .page-link,.pagination .page-item:not(.last) .page-link,.pagination .page-item:not(.next-item) .page-link,.pagination .page-item:not(.prev-item) .page-link{line-height:1.3}.pagination .page-item.prev-item{margin-right:.3571rem}.pagination .page-item.prev-item .page-link{background-color:#f0f0f0;padding:.572rem .651rem;border-radius:50%}.pagination .page-item.prev-item .page-link:before{content:\"\\E843\";font-family:feather}.pagination .page-item.prev-item .page-link:hover{background:#4e9876;color:#fff}.pagination .page-item.prev-item~.page-item:nth-child(2){border-top-left-radius:5rem;border-bottom-left-radius:5rem}.pagination .page-item.prev-item~.page-item:nth-child(2) .page-link{border-top-left-radius:5rem!important;border-bottom-left-radius:5rem!important}.pagination .page-item.prev-item~.page-item:nth-last-child(2){border-top-right-radius:5rem;border-bottom-right-radius:5rem}.pagination .page-item.prev-item~.page-item:nth-last-child(2) .page-link{border-top-right-radius:5rem!important;border-bottom-right-radius:5rem!important}.pagination .page-item.next-item{margin-left:.3571rem}.pagination .page-item.next-item .page-link{background-color:#f0f0f0;padding:.572rem .651rem;border-radius:50%}.pagination .page-item.next-item .page-link:after{content:\"\\E844\";font-family:feather}.pagination .page-item.next-item .page-link:hover{background:#4e9876;color:#fff}.pagination .page-item.prev .page-link:before,.pagination .page-item.previous .page-link:before{content:\"\\E843\";font-family:feather}.pagination .page-item.next .page-link:after{content:\"\\E844\";font-family:feather}.pagination .page-item .page-link{border:none;color:rgba(86,86,86,.9);background-color:#f0f0f0;margin:0;font-size:1rem;font-weight:700}.pagination .page-item .page-link i{position:relative;top:1px}.pagination .page-item .page-link:focus{box-shadow:none}.pagination .page-item .page-link:hover{color:#4e9876}.pagination .page-item.active{background-color:#f0f0f0;border-radius:0}.pagination .page-item.active .page-link{z-index:3;border-radius:5rem;background-color:#4e9876;color:#fff;transform:scale(1.05)}.pagination .page-item:first-child:not(.prev-item).active{border-top-left-radius:1.428rem;border-bottom-left-radius:1.428rem}.pagination .page-item:first-child:not(.prev-item).active .page-link{border-radius:5rem}.pagination .page-item:first-child:not(.prev-item) .page-link{border-top-left-radius:1.428rem;border-bottom-left-radius:1.428rem}.pagination .page-item:last-child:not(.next-item).active{border-top-right-radius:1.428rem;border-bottom-right-radius:1.428rem}.pagination .page-item:last-child:not(.next-item).active .page-link{border-radius:5rem}.pagination .page-item:last-child:not(.next-item) .page-link{border-top-right-radius:1.428rem;border-bottom-right-radius:1.428rem}.pagination.pagination-lg .page-item .page-link{font-size:1.5rem;transform:scale(1)}html.scroll-smooth{scroll-behavior:smooth}.wrapper,body,html{min-height:100%}.wrapper{position:relative}.wrapper .content-wrapper{min-height:calc(100vh - 6.614rem - 1px)}.layout-boxed .wrapper,.layout-boxed .wrapper:before{margin:0 auto;max-width:1250px}.layout-boxed .wrapper .main-sidebar{left:inherit}@supports not (-webkit-touch-callout:none){.layout-fixed .wrapper .sidebar{height:calc(100vh - 3.164rem - 1px)}.layout-fixed.text-sm .wrapper .sidebar{height:calc(100vh - 2.62475rem - 1px)}}.layout-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed.sidebar-mini-md.sidebar-collapse .wrapper .brand-link,.layout-navbar-fixed.sidebar-mini.sidebar-collapse .wrapper .brand-link{height:calc(3.164rem + 1px);width:5.4rem}.layout-navbar-fixed.sidebar-mini-md.sidebar-collapse.text-sm .wrapper .brand-link,.layout-navbar-fixed.sidebar-mini-md.sidebar-collapse .wrapper .brand-link.text-sm,.layout-navbar-fixed.sidebar-mini.sidebar-collapse.text-sm .wrapper .brand-link,.layout-navbar-fixed.sidebar-mini.sidebar-collapse .wrapper .brand-link.text-sm{height:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .main-header{z-index:1033}.layout-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .control-sidebar{top:0}.layout-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .brand-link,.layout-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;z-index:1035}.layout-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-not-fixed .wrapper .brand-link{position:static}.layout-navbar-not-fixed .wrapper .content-wrapper,.layout-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-navbar-not-fixed .wrapper .main-header{position:static}.layout-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}@media (min-width:576px){.layout-sm-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-sm-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-sm-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-sm-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-sm-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed .wrapper .control-sidebar{top:0}.layout-sm-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-sm-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-sm-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-sm-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-sm-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-sm-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-sm-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-sm-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-sm-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-sm-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-not-fixed .wrapper .brand-link{position:static}.layout-sm-navbar-not-fixed .wrapper .content-wrapper,.layout-sm-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-sm-navbar-not-fixed .wrapper .main-header{position:static}.layout-sm-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}@media (min-width:768px){.layout-md-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-md-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-md-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-md-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-md-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed .wrapper .control-sidebar{top:0}.layout-md-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-md-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-md-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-md-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-md-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-md-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-md-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-md-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-md-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-md-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-md-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-not-fixed .wrapper .brand-link{position:static}.layout-md-navbar-not-fixed .wrapper .content-wrapper,.layout-md-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-md-navbar-not-fixed .wrapper .main-header{position:static}.layout-md-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}@media (min-width:992px){.layout-lg-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-lg-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-lg-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-lg-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-lg-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed .wrapper .control-sidebar{top:0}.layout-lg-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-lg-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-lg-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-lg-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-lg-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-lg-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-lg-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-lg-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-lg-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-lg-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-not-fixed .wrapper .brand-link{position:static}.layout-lg-navbar-not-fixed .wrapper .content-wrapper,.layout-lg-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-lg-navbar-not-fixed .wrapper .main-header{position:static}.layout-lg-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}@media (min-width:1200px){.layout-xl-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-xl-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-xl-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-xl-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-xl-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed .wrapper .control-sidebar{top:0}.layout-xl-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-xl-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-xl-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-xl-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-xl-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-xl-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-xl-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-xl-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-xl-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-xl-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-not-fixed .wrapper .brand-link{position:static}.layout-xl-navbar-not-fixed .wrapper .content-wrapper,.layout-xl-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-xl-navbar-not-fixed .wrapper .main-header{position:static}.layout-xl-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}.layout-footer-not-fixed .wrapper .content-wrapper{margin-bottom:0}.layout-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-footer-not-fixed .wrapper .main-footer{position:static}@media (min-width:576px){.layout-sm-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-sm-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-sm-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-sm-footer-not-fixed .wrapper .main-footer{position:static}}@media (min-width:768px){.layout-md-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-md-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-md-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-md-footer-not-fixed .wrapper .main-footer{position:static}}@media (min-width:992px){.layout-lg-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-lg-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-lg-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-lg-footer-not-fixed .wrapper .main-footer{position:static}}@media (min-width:1200px){.layout-xl-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-xl-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-xl-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-xl-footer-not-fixed .wrapper .main-footer{position:static}}.layout-top-nav .wrapper{margin-left:0}.layout-top-nav .wrapper .main-header .brand-image{margin-top:-.5rem;margin-right:.2rem;height:33px}.layout-top-nav .wrapper .main-sidebar{bottom:inherit;height:inherit}.layout-top-nav .wrapper .content-wrapper,.layout-top-nav .wrapper .main-footer,.layout-top-nav .wrapper .main-header,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .content-wrapper,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .content-wrapper:before,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-footer,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-footer:before,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-header,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-header:before{margin-left:0}@media (min-width:768px){body:not(.sidebar-mini-md) .content-wrapper,body:not(.sidebar-mini-md) .main-footer,body:not(.sidebar-mini-md) .main-header{transition:margin-left .3s ease-in-out;margin-left:260px}}@media (min-width:768px) and (prefers-reduced-motion:reduce){body:not(.sidebar-mini-md) .content-wrapper,body:not(.sidebar-mini-md) .main-footer,body:not(.sidebar-mini-md) .main-header{transition:none}}@media (min-width:768px){.sidebar-collapse body:not(.sidebar-mini-md) .content-wrapper,.sidebar-collapse body:not(.sidebar-mini-md) .main-footer,.sidebar-collapse body:not(.sidebar-mini-md) .main-header{margin-left:0}}@media (max-width:991.98px){body:not(.sidebar-mini-md) .content-wrapper,body:not(.sidebar-mini-md) .content-wrapper:before,body:not(.sidebar-mini-md) .main-footer,body:not(.sidebar-mini-md) .main-footer:before,body:not(.sidebar-mini-md) .main-header,body:not(.sidebar-mini-md) .main-header:before{margin-left:0}}@media (min-width:768px){.sidebar-mini-md .content-wrapper,.sidebar-mini-md .main-footer,.sidebar-mini-md .main-header{transition:margin-left .3s ease-in-out;margin-left:260px}}@media (min-width:768px) and (prefers-reduced-motion:reduce){.sidebar-mini-md .content-wrapper,.sidebar-mini-md .main-footer,.sidebar-mini-md .main-header{transition:none}}@media (min-width:768px){.sidebar-collapse .sidebar-mini-md .content-wrapper,.sidebar-collapse .sidebar-mini-md .main-footer,.sidebar-collapse .sidebar-mini-md .main-header{margin-left:5.4rem}}@media (max-width:991.98px){.sidebar-mini-md .content-wrapper,.sidebar-mini-md .content-wrapper:before,.sidebar-mini-md .main-footer,.sidebar-mini-md .main-footer:before,.sidebar-mini-md .main-header,.sidebar-mini-md .main-header:before{margin-left:5.4rem}}.content-wrapper{background:#f4f6f9}.content-wrapper>.content{padding:0 1rem}.main-sidebar,.main-sidebar:before{transition:margin-left .3s ease-in-out,width .3s ease-in-out;width:260px}@media (prefers-reduced-motion:reduce){.main-sidebar,.main-sidebar:before{transition:none}}.sidebar-collapse:not(.sidebar-mini):not(.sidebar-mini-md) .main-sidebar,.sidebar-collapse:not(.sidebar-mini):not(.sidebar-mini-md) .main-sidebar:before{box-shadow:none!important}.sidebar-collapse .main-sidebar,.sidebar-collapse .main-sidebar:before{margin-left:-260px}.sidebar-collapse .main-sidebar .nav-sidebar.nav-child-indent .nav-treeview{padding:0}@media (max-width:767.98px){.main-sidebar,.main-sidebar:before{box-shadow:none!important;margin-left:-260px}.sidebar-open .main-sidebar,.sidebar-open .main-sidebar:before{margin-left:0}}:not(.layout-fixed) .main-sidebar{height:inherit;min-height:100%;position:absolute;top:0}.layout-fixed .brand-link{width:260px}.layout-fixed .main-sidebar{left:0}.layout-fixed .control-sidebar,.layout-fixed .main-sidebar{bottom:0;float:none;height:100vh;position:fixed;top:0}.layout-fixed .control-sidebar .control-sidebar-content{height:calc(100vh - 3.164rem - 1px)}@supports (-webkit-touch-callout:none){.layout-fixed .main-sidebar{height:inherit}}.main-footer{background:transparent;border-top:0 solid #dae1e7;padding:.5rem 1rem;font-size:90%}.main-footer.text-sm,.text-sm .main-footer{padding:.812rem}.content-header{padding:15px 1rem}.text-sm .content-header{padding:10px 1rem}.content-header h1{font-size:1.8rem;margin:0}.text-sm .content-header h1{font-size:1.5rem}.content-header .breadcrumb{background:transparent;line-height:1.8rem;margin-bottom:0;padding:0;font-size:97%}.text-sm .content-header .breadcrumb{line-height:1.5rem}.hold-transition .content-wrapper,.hold-transition .control-sidebar,.hold-transition .control-sidebar *,.hold-transition .main-footer,.hold-transition .main-header,.hold-transition .main-sidebar,.hold-transition .main-sidebar *{transition:none!important}.main-header{border-bottom:1px solid #dae1e7;z-index:1034}.main-header .nav-link{height:2.164rem;position:relative}.main-header.text-sm .nav-link,.text-sm .main-header .nav-link{height:1.62475rem;padding:.35rem .5rem}.main-header.text-sm .nav-link>.fa,.main-header.text-sm .nav-link>.fab,.main-header.text-sm .nav-link>.far,.main-header.text-sm .nav-link>.fas,.main-header.text-sm .nav-link>.glyphicon,.main-header.text-sm .nav-link>.ion,.text-sm .main-header .nav-link>.fa,.text-sm .main-header .nav-link>.fab,.text-sm .main-header .nav-link>.far,.text-sm .main-header .nav-link>.fas,.text-sm .main-header .nav-link>.glyphicon,.text-sm .main-header .nav-link>.ion{font-size:1rem}.main-header .navbar-nav .nav-item{margin:0}.main-header .navbar-nav[class*=-right] .dropdown-menu{left:auto;margin-top:-3px;right:0}@media (max-width:575.98px){.main-header .navbar-nav[class*=-right] .dropdown-menu{left:0;right:auto}}.navbar-img{height:calc(3.164rem + 1px)/2;width:auto}.navbar-badge{font-size:.6rem;font-weight:300;padding:2px 4px;position:absolute;right:5px;top:9px}.btn-navbar{background-color:transparent;border-left-width:0}.form-control-navbar{border-right-width:0}.form-control-navbar+.input-group-append{margin-left:0}.btn-navbar,.form-control-navbar{transition:none}.navbar-dark .btn-navbar,.navbar-dark .form-control-navbar{background-color:hsla(0,0%,100%,.2);border:0}.navbar-dark .form-control-navbar::-moz-placeholder{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar:-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar::placeholder{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar+.input-group-append>.btn-navbar{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar:focus,.navbar-dark .form-control-navbar:focus+.input-group-append .btn-navbar{background-color:hsla(0,0%,100%,.6);border:0!important;color:#1e1e1e}.navbar-light .btn-navbar,.navbar-light .form-control-navbar{background-color:#b4bac2;border:0}.navbar-light .form-control-navbar::-moz-placeholder{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar:-ms-input-placeholder{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar::placeholder{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar+.input-group-append>.btn-navbar{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar:focus,.navbar-light .form-control-navbar:focus+.input-group-append .btn-navbar{background-color:#ededed;border:0!important;color:#1e1e1e}.brand-link{display:block;font-size:2rem;line-height:1.25;padding:.132rem .5rem;transition:width .3s ease-in-out;white-space:nowrap}.brand-link:hover{color:#fff;text-decoration:none}.text-sm .brand-link{font-size:inherit}[class*=sidebar-dark] .brand-link{border-bottom:0;color:hsla(0,0%,100%,.8)}[class*=sidebar-light] .brand-link{border-bottom:0;color:rgba(34,41,47,.8)}.brand-link .brand-image{float:left;line-height:.8;margin-left:.8rem;margin-right:.5rem;margin-top:-3px;max-height:33px;width:auto}.brand-link .brand-image-xs{float:left;line-height:.8;margin-top:-.1rem;max-height:33px;width:auto}.brand-link .brand-image-xl{line-height:.8;max-height:40px;width:auto}.brand-link.text-sm .brand-image,.text-sm .brand-link .brand-image{height:29px;margin-bottom:-.25rem;margin-left:.95rem;margin-top:-.25rem}.brand-link.text-sm .brand-image-xs,.text-sm .brand-link .brand-image-xs{margin-top:-.2rem;max-height:29px}.brand-link.text-sm .brand-image-xl,.text-sm .brand-link .brand-image-xl{margin-top:-.225rem;max-height:38px}.main-sidebar{height:100vh;overflow-y:hidden;z-index:1038}.main-sidebar a:-moz-focusring{border:0;outline:none}.main-sidebar .nav .nav-item .nav-link{padding:10px 10px 10px 25px!important}.main-sidebar .nav-treeview.nav .nav-item .nav-link{padding:5px 10px 7px 25px!important}.sidebar{height:calc(100% - 3.164rem - 1px);overflow-y:auto;padding:0 .5rem}.user-panel{position:relative}[class*=sidebar-dark] .user-panel{border-bottom:1px solid #3c4853}[class*=sidebar-light] .user-panel{border-bottom:1px solid #dae1e7}.user-panel,.user-panel .info{overflow:hidden;white-space:nowrap}.user-panel .image{display:inline-block;padding-left:.3rem}.user-panel img{height:auto;width:2.5666666667rem}.user-panel .info{display:inline-block;padding:5px 5px 5px 10px}.user-panel .dropdown-menu,.user-panel .status{font-size:1rem}.nav-sidebar .nav-item>.nav-link{margin-bottom:.2rem}.nav-sidebar .nav-item>.nav-link .right{transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-sidebar .nav-item>.nav-link .right{transition:none}}.nav-sidebar .nav-link>.right,.nav-sidebar .nav-link>p>.right{position:absolute;right:1rem;top:.9rem}.nav-sidebar .nav-link>.right i,.nav-sidebar .nav-link>.right span,.nav-sidebar .nav-link>p>.right i,.nav-sidebar .nav-link>p>.right span{margin-left:.5rem}.nav-sidebar .nav-link>.right:nth-child(2),.nav-sidebar .nav-link>p>.right:nth-child(2){right:2.2rem}.nav-sidebar .menu-open>.nav-treeview{display:block;border-radius:0}.nav-sidebar .menu-open>.nav-link i.right{transform:rotate(-90deg)}.nav-sidebar>.nav-item{margin-bottom:0}.nav-sidebar>.nav-item .nav-icon{margin-left:.05rem;font-size:1.2rem;margin-right:.2rem;text-align:center;width:2.4rem}.nav-sidebar>.nav-item .nav-icon.fa,.nav-sidebar>.nav-item .nav-icon.fab,.nav-sidebar>.nav-item .nav-icon.far,.nav-sidebar>.nav-item .nav-icon.fas,.nav-sidebar>.nav-item .nav-icon.glyphicon,.nav-sidebar>.nav-item .nav-icon.ion{font-size:1.1rem}.nav-sidebar>.nav-item .float-right{margin-top:3px}.nav-sidebar .nav-treeview{display:none;list-style:none;padding:0}.nav-sidebar .nav-treeview>.nav-item>.nav-link>.nav-icon{width:2.4rem}.nav-sidebar.nav-child-indent .nav-treeview{transition:padding .3s ease-in-out;padding-left:1rem}.text-sm .nav-sidebar.nav-child-indent .nav-treeview{padding-left:.5rem}.nav-sidebar.nav-child-indent.nav-legacy .nav-treeview .nav-treeview{padding-left:2rem;margin-left:-1rem}.text-sm .nav-sidebar.nav-child-indent.nav-legacy .nav-treeview .nav-treeview{padding-left:1rem;margin-left:-.5rem}.nav-sidebar .nav-header{font-size:.9rem;padding:.357rem}.nav-sidebar .nav-header:not(:first-of-type){padding:1.7rem 1rem .5rem}.nav-sidebar .nav-link p{display:inline-block;margin:0}#sidebar-overlay{background-color:rgba(34,41,47,.1);bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:1037}@media (max-width:991.98px){.sidebar-open #sidebar-overlay{display:block}}[class*=sidebar-light-]{background-color:#fff}[class*=sidebar-light-] .user-panel a:hover{color:#555}[class*=sidebar-light-] .user-panel .status,[class*=sidebar-light-] .user-panel .status:active,[class*=sidebar-light-] .user-panel .status:focus,[class*=sidebar-light-] .user-panel .status:hover{background:transparent;color:#555}[class*=sidebar-light-] .user-panel .dropdown-menu{border-color:transparent}[class*=sidebar-light-] .user-panel .dropdown-item{color:#626262}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link:active,[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link:focus{color:#555}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link i{margin-right:.75rem;font-size:1.2rem}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link p i{margin-right:0;margin-top:1px}[class*=sidebar-light-] .nav-sidebar>.nav-item.menu-open>.nav-link,[class*=sidebar-light-] .nav-sidebar>.nav-item:hover>.nav-link{background-color:transparent;color:#555}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link.active{color:#fff}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-treeview{background:transparent}[class*=sidebar-light-] .nav-header{background:inherit;color:#484848}[class*=sidebar-light-] .sidebar a{color:#555}[class*=sidebar-light-] .sidebar a:hover{text-decoration:none}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link{color:#555}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link i{margin-right:.75rem;margin-left:3px}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link p i{margin-right:0}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active:hover{background-color:transparent!important;background-image:linear-gradient(118deg,rgba(78,152,118,.95),rgba(78,152,118,.7));color:#fff;box-shadow:0 0 8px 1px rgba(78,152,118,.7)}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link:hover{background-color:transparent}[class*=sidebar-light-] .nav-flat .nav-item .nav-treeview .nav-treeview,[class*=sidebar-light-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link,[class*=sidebar-light-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link.active{border-color:linear-gradient(118deg,#4e9876,rgba(78,152,118,.7))}[class*=sidebar-dark-]{background-image:linear-gradient(0deg,#77889f,#3e4958)}[class*=sidebar-dark-] .nav-treeview.nav .nav-item .nav-link{font-size:1rem!important;margin-bottom:0}[class*=sidebar-dark-] .nav-sidebar .nav-link>p>.right{right:.5rem}[class*=sidebar-dark-] .user-panel a:hover{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .user-panel .status,[class*=sidebar-dark-] .user-panel .status:active,[class*=sidebar-dark-] .user-panel .status:focus,[class*=sidebar-dark-] .user-panel .status:hover{background:transparent;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .user-panel .dropdown-menu{border-color:transparent}[class*=sidebar-dark-] .user-panel .dropdown-item{color:#626262}[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:active{color:#fff;font-weight:700}[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:hover{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-sidebar>.nav-item i{margin-right:.75rem;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-sidebar>.nav-item.menu-open>.nav-link,[class*=sidebar-dark-] .nav-sidebar>.nav-item:hover>.nav-link,[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:focus{background-color:transparent;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link.active{color:#fff;background:transparent;font-weight:700}[class*=sidebar-dark-] .nav-header{background:inherit;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .sidebar a{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .sidebar a:focus,[class*=sidebar-dark-] .sidebar a:hover{text-decoration:none}[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:focus,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:hover,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link:focus,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link:hover{background-color:transparent;color:#fff;font-weight:700}[class*=sidebar-dark-] .nav-flat .nav-item .nav-treeview .nav-treeview,[class*=sidebar-dark-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link,[class*=sidebar-dark-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link.active{border-color:transparent}.sidebar-light-primary .nav-item>.nav-link.active{background-color:transparent!important;background-image:linear-gradient(118deg,rgba(78,152,118,.95),rgba(78,152,118,.7));color:#fff;box-shadow:0 0 8px 1px rgba(78,152,118,.7)}.sidebar-light-primary .active-bg-light .nav-item>.nav-link.active{background-color:rgba(78,152,118,.15)!important;color:#4e9876!important;font-weight:700;box-shadow:0 0 8px 1px rgba(78,152,118,.15)}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand) .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini .main-sidebar.sidebar-focused .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini .main-sidebar:not(.sidebar-no-expand) .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview{padding-left:1rem;margin-left:-.5rem}.nav-flat{margin:-.25rem -.5rem 0}.nav-flat .nav-item>.nav-link{border-radius:0;margin-bottom:0}.nav-flat .nav-item>.nav-link>.nav-icon{margin-left:.55rem}.nav-flat:not(.nav-child-indent) .nav-treeview .nav-item>.nav-link>.nav-icon{margin-left:.4rem}.nav-flat.nav-child-indent .nav-treeview{padding-left:0}.nav-flat.nav-child-indent .nav-treeview .nav-icon{margin-left:.85rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview{border-left:.2rem solid}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-icon{margin-left:1.15rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.45rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.75rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:2.05rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-icon{margin-left:.55rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-link{padding-left:.3rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-icon{margin-left:.35rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:.15rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:-.15rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:-.35rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon{margin-left:.4rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon{margin-left:.85rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon{margin-left:1.15rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.45rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.75rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:2.05rem}.nav-flat .nav-icon{transition:margin-left .3s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-flat .nav-icon{transition:none}}.nav-flat .nav-treeview .nav-icon{margin-left:-.2rem}.nav-flat.nav-sidebar>.nav-item .nav-treeview,.nav-flat.nav-sidebar>.nav-item>.nav-treeview{background:hsla(0,0%,100%,.05)}.nav-flat.nav-sidebar>.nav-item .nav-treeview .nav-item>.nav-link,.nav-flat.nav-sidebar>.nav-item>.nav-treeview .nav-item>.nav-link{border-left:.2rem solid}.nav-legacy{margin:-.25rem -.5rem 0}.nav-legacy.nav-sidebar .nav-item>.nav-link{border-radius:0;margin-bottom:0}.nav-legacy.nav-sidebar .nav-item>.nav-link>.nav-icon{margin-left:.55rem}.text-sm .nav-legacy.nav-sidebar .nav-item>.nav-link>.nav-icon{margin-left:.75rem}.nav-legacy.nav-sidebar>.nav-item>.nav-link.active{background:inherit;border-left:3px solid transparent;box-shadow:none}.nav-legacy.nav-sidebar>.nav-item>.nav-link.active>.nav-icon{margin-left:calc(.55rem - 3px)}.text-sm .nav-legacy.nav-sidebar.nav-flat .nav-treeview .nav-item>.nav-link>.nav-icon,.text-sm .nav-legacy.nav-sidebar>.nav-item>.nav-link.active>.nav-icon{margin-left:calc(.75rem - 3px)}.sidebar-mini-md .nav-legacy>.nav-item .nav-link .nav-icon,.sidebar-mini .nav-legacy>.nav-item .nav-link .nav-icon{transition:margin-left .3s ease-in-out;margin-left:.75rem}@media (prefers-reduced-motion:reduce){.sidebar-mini-md .nav-legacy>.nav-item .nav-link .nav-icon,.sidebar-mini .nav-legacy>.nav-item .nav-link .nav-icon{transition:none}}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview{padding-left:1rem}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview{padding-left:2rem;margin-left:-1rem}.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview{padding-left:.5rem}.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview{padding-left:1rem;margin-left:-.5rem}.sidebar-mini-md.sidebar-collapse .nav-legacy>.nav-item>.nav-link .nav-icon,.sidebar-mini.sidebar-collapse .nav-legacy>.nav-item>.nav-link .nav-icon{margin-left:.55rem}.sidebar-mini-md.sidebar-collapse .nav-legacy>.nav-item>.nav-link.active>.nav-icon,.sidebar-mini.sidebar-collapse .nav-legacy>.nav-item>.nav-link.active>.nav-icon{margin-left:.36rem}.sidebar-mini-md.sidebar-collapse .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse .nav-legacy.nav-child-indent .nav-treeview .nav-treeview{padding-left:0;margin-left:0}.sidebar-mini-md.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link .nav-icon,.sidebar-mini.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link .nav-icon{margin-left:.75rem}.sidebar-mini-md.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link.active>.nav-icon,.sidebar-mini.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link.active>.nav-icon{margin-left:calc(.75rem - 3px)}[class*=sidebar-dark] .nav-legacy.nav-sidebar>.nav-item .nav-treeview,[class*=sidebar-dark] .nav-legacy.nav-sidebar>.nav-item>.nav-treeview{background:hsla(0,0%,100%,.05)}[class*=sidebar-dark] .nav-legacy.nav-sidebar>.nav-item>.nav-link.active{color:#fff}[class*=sidebar-dark] .nav-legacy .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-dark] .nav-legacy .nav-treeview>.nav-item>.nav-link:focus,[class*=sidebar-dark] .nav-legacy .nav-treeview>.nav-item>.nav-link:hover{background:none;color:#fff}[class*=sidebar-light] .nav-legacy.nav-sidebar>.nav-item .nav-treeview,[class*=sidebar-light] .nav-legacy.nav-sidebar>.nav-item>.nav-treeview{background:rgba(34,41,47,.05)}[class*=sidebar-light] .nav-legacy.nav-sidebar>.nav-item>.nav-link.active{color:#fff}[class*=sidebar-light] .nav-legacy .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-light] .nav-legacy .nav-treeview>.nav-item>.nav-link:focus,[class*=sidebar-light] .nav-legacy .nav-treeview>.nav-item>.nav-link:hover{background:none;color:#fff}.nav-collapse-hide-child .menu-open>.nav-treeview{max-height:-webkit-min-content;max-height:-moz-min-content;max-height:min-content;opacity:1}.sidebar-collapse .nav-collapse-hide-child .menu-open>.nav-treeview{max-height:0;opacity:0}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-collapse-hide-child .menu-open>.nav-treeview,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-collapse-hide-child .menu-open>.nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-collapse-hide-child .menu-open>.nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-collapse-hide-child .menu-open>.nav-treeview{max-height:-webkit-min-content;max-height:-moz-min-content;max-height:min-content;opacity:1}.nav-compact .nav-header,.nav-compact .nav-link{padding-top:.1785rem;padding-bottom:.1785rem}.nav-compact .nav-header:not(:first-of-type){padding-top:.5355rem;padding-bottom:.1785rem}.nav-compact .nav-link>.right,.nav-compact .nav-link>p>.right{top:.465rem}.text-sm .nav-compact .nav-link>.right,.text-sm .nav-compact .nav-link>p>.right{top:.7rem}[class*=sidebar-dark] .btn-sidebar,[class*=sidebar-dark] .form-control-sidebar{background:#495567;border:1px solid #5e6e85;color:#fff}[class*=sidebar-dark] .btn-sidebar:focus,[class*=sidebar-dark] .form-control-sidebar:focus{border:1px solid #8695a9}[class*=sidebar-dark] .btn-sidebar:hover{background:#4e5c6e}[class*=sidebar-dark] .btn-sidebar:focus{background:#536276}[class*=sidebar-light] .btn-sidebar,[class*=sidebar-light] .form-control-sidebar{background:#f2f2f2;border:1px solid #d9d9d9;color:#2a2e30}[class*=sidebar-light] .btn-sidebar:focus,[class*=sidebar-light] .form-control-sidebar:focus{border:1px solid #b3b3b3}[class*=sidebar-light] .btn-sidebar:hover{background:#ececec}[class*=sidebar-light] .btn-sidebar:focus{background:#e6e6e6}.logo-xl,.logo-xs{opacity:1;position:absolute;visibility:visible}.logo-xl.brand-image-xs,.logo-xs.brand-image-xs{left:18px;top:12px}.logo-xl.brand-image-xl,.logo-xs.brand-image-xl{left:12px;top:6px}.logo-xs{opacity:0;visibility:hidden}.logo-xs.brand-image-xl{left:16px;top:8px}.brand-link.logo-switch:before{content:\"\\A0\"}@media (min-width:992px){.sidebar-mini .nav-sidebar,.sidebar-mini .nav-sidebar .nav-link,.sidebar-mini .nav-sidebar>.nav-header{white-space:nowrap;overflow:hidden}.sidebar-mini.sidebar-collapse .d-hidden-mini{display:none}.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .main-footer,.sidebar-mini.sidebar-collapse .main-header{margin-left:5.4rem!important}.sidebar-mini.sidebar-collapse .nav-sidebar .nav-header{display:none}.sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p{width:0}.sidebar-mini.sidebar-collapse .brand-text,.sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p,.sidebar-mini.sidebar-collapse .sidebar .user-panel>.info{margin-left:-10px;opacity:0;visibility:hidden}.sidebar-mini.sidebar-collapse .logo-xl{opacity:0;visibility:hidden}.sidebar-mini.sidebar-collapse .logo-xs{display:inline-block;opacity:1;visibility:visible}.sidebar-mini.sidebar-collapse .main-sidebar{overflow-x:hidden}.sidebar-mini.sidebar-collapse .main-sidebar,.sidebar-mini.sidebar-collapse .main-sidebar:before{margin-left:0;width:5.4rem}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel .image{float:none}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-link,.sidebar-mini.sidebar-collapse .main-sidebar:hover,.sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-link{width:260px}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel{text-align:left}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel .image,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel .image{float:left}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-text,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .logo-xl,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar .nav-link p,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-text,.sidebar-mini.sidebar-collapse .main-sidebar:hover .logo-xl,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar .nav-link p,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:inline-block;margin-left:0;opacity:1;visibility:visible}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .logo-xs,.sidebar-mini.sidebar-collapse .main-sidebar:hover .logo-xs{opacity:0;visibility:hidden}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-image,.sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-image{margin-right:.5rem}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .sidebar-form,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini.sidebar-collapse .main-sidebar:hover .sidebar-form,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:block!important;-webkit-transform:translateZ(0)}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar>.nav-item>.nav-link>span,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar>.nav-item>.nav-link>span{display:inline-block!important}.sidebar-mini.sidebar-collapse .visible-sidebar-mini{display:block!important}.sidebar-mini.sidebar-collapse.layout-fixed .main-sidebar:hover .brand-link{width:260px}.sidebar-mini.sidebar-collapse.layout-fixed .brand-link{width:5.4rem}}@media (max-width:991.98px){.sidebar-mini.sidebar-collapse .main-sidebar{box-shadow:none!important}}@media (min-width:768px){.sidebar-mini-md .nav-sidebar,.sidebar-mini-md .nav-sidebar .nav-link,.sidebar-mini-md .nav-sidebar>.nav-header{white-space:nowrap;overflow:hidden}.sidebar-mini-md.sidebar-collapse .d-hidden-mini{display:none}.sidebar-mini-md.sidebar-collapse .content-wrapper,.sidebar-mini-md.sidebar-collapse .main-footer,.sidebar-mini-md.sidebar-collapse .main-header{margin-left:5.4rem!important}.sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-header{display:none}.sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-link p{width:0}.sidebar-mini-md.sidebar-collapse .brand-text,.sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-link p,.sidebar-mini-md.sidebar-collapse .sidebar .user-panel>.info{margin-left:-10px;opacity:0;visibility:hidden}.sidebar-mini-md.sidebar-collapse .logo-xl{opacity:0;visibility:hidden}.sidebar-mini-md.sidebar-collapse .logo-xs{display:inline-block;opacity:1;visibility:visible}.sidebar-mini-md.sidebar-collapse .main-sidebar{overflow-x:hidden}.sidebar-mini-md.sidebar-collapse .main-sidebar,.sidebar-mini-md.sidebar-collapse .main-sidebar:before{margin-left:0;width:5.4rem}.sidebar-mini-md.sidebar-collapse .main-sidebar .user-panel .image{float:none}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-link,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-link{width:260px}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel{text-align:left}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel .image,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel .image{float:left}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-text,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .logo-xl,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar .nav-link p,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-text,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .logo-xl,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar .nav-link p,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:inline-block;margin-left:0;opacity:1;visibility:visible}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .logo-xs,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .logo-xs{opacity:0;visibility:hidden}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-image,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-image{margin-right:.5rem}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .sidebar-form,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .sidebar-form,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:block!important;-webkit-transform:translateZ(0)}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar>.nav-item>.nav-link>span,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar>.nav-item>.nav-link>span{display:inline-block!important}.sidebar-mini-md.sidebar-collapse .visible-sidebar-mini{display:block!important}.sidebar-mini-md.sidebar-collapse.layout-fixed .main-sidebar:hover .brand-link{width:260px}.sidebar-mini-md.sidebar-collapse.layout-fixed .brand-link{width:5.4rem}}.sidebar-collapse .main-sidebar.sidebar-focused .nav-header,.sidebar-collapse .main-sidebar:hover .nav-header{display:inline-block}.sidebar-collapse .main-sidebar.sidebar-focused .nav .menu-open .nav-treeview,.sidebar-collapse .main-sidebar:hover .nav .menu-open .nav-treeview{display:block!important}.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar>.nav-item>.nav-link i,.sidebar-collapse .main-sidebar:hover .nav-sidebar>.nav-item>.nav-link i{font-size:1.2rem}.sidebar-collapse .main-sidebar .nav .nav-item .nav-link{padding:10px 21px!important}.sidebar-collapse .main-sidebar .nav .menu-open .nav-treeview{display:none!important}.sidebar-collapse .header-navbar.floating-nav{width:calc(100% - 70px - 5.4rem)}.sidebar-collapse .header-navbar.fixed-top{left:5.4rem}.sidebar-collapse .nav-sidebar>.nav-item>.nav-link i{font-size:1.3rem}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover{width:5.4rem}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-header,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-header{display:none}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .brand-link,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .brand-link{width:5.4rem!important}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .user-panel .image,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .user-panel .image{float:none!important}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .logo-xs,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .logo-xs{opacity:1;visibility:visible}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .logo-xl,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .logo-xl{opacity:0;visibility:hidden}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar.nav-child-indent .nav-treeview,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar.nav-child-indent .nav-treeview{padding-left:0}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .brand-text,.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar .nav-link p,.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .user-panel>.info,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .brand-text,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar .nav-link p,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .user-panel>.info{margin-left:-10px;opacity:0;visibility:hidden;width:0}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar>.nav-item .nav-icon,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar>.nav-item .nav-icon{margin-right:0}.nav-sidebar{position:relative}.nav-sidebar:hover{overflow:visible}.nav-sidebar>.nav-header,.sidebar-form{overflow:hidden;text-overflow:clip}.nav-sidebar .nav-item>.nav-link{position:relative}.nav-sidebar .nav-item>.nav-link>.float-right{margin-top:-7px;position:absolute;right:10px;top:50%}@media (max-width:767.98px){.sidebar-mini-md.sidebar-collapse .main-sidebar{box-shadow:none!important}.sidebar-collapse .header-navbar.fixed-top{left:0}}@media (max-width:1201px){.sidebar-collapse .header-navbar.fixed-top{left:0}}.main-sidebar .brand-text,.main-sidebar .logo-xl,.main-sidebar .logo-xs,.sidebar .nav-link p,.sidebar .user-panel .info{transition:margin-left .3s linear,opacity .3s ease,visibility .3s ease}@media (prefers-reduced-motion:reduce){.main-sidebar .brand-text,.main-sidebar .logo-xl,.main-sidebar .logo-xs,.sidebar .nav-link p,.sidebar .user-panel .info{transition:none}}html.control-sidebar-animate{overflow-x:hidden}.control-sidebar{bottom:3.45rem;position:absolute;top:calc(3.164rem + 1px);z-index:1031}.control-sidebar,.control-sidebar:before{bottom:3.45rem;display:none;right:-260px;width:260px;transition:right .3s ease-in-out,display .3s ease-in-out}@media (prefers-reduced-motion:reduce){.control-sidebar,.control-sidebar:before{transition:none}}.control-sidebar:before{content:\"\";display:block;position:fixed;top:0;z-index:-1}body.text-sm .control-sidebar{bottom:3.074rem;top:calc(2.62475rem + 1px)}.main-header.text-sm~.control-sidebar{top:calc(2.62475rem + 1px)}.main-footer.text-sm~.control-sidebar{bottom:3.074rem}.control-sidebar-push-slide .content-wrapper,.control-sidebar-push-slide .main-footer{transition:margin-right .3s ease-in-out}@media (prefers-reduced-motion:reduce){.control-sidebar-push-slide .content-wrapper,.control-sidebar-push-slide .main-footer{transition:none}}.control-sidebar-open .control-sidebar{display:block}.control-sidebar-open .control-sidebar,.control-sidebar-open .control-sidebar:before{right:0}.control-sidebar-open.control-sidebar-push-slide .content-wrapper,.control-sidebar-open.control-sidebar-push-slide .main-footer,.control-sidebar-open.control-sidebar-push .content-wrapper,.control-sidebar-open.control-sidebar-push .main-footer{margin-right:260px}.control-sidebar-slide-open .control-sidebar{display:block}.control-sidebar-slide-open .control-sidebar,.control-sidebar-slide-open .control-sidebar:before{right:0;transition:right .3s ease-in-out,display .3s ease-in-out}@media (prefers-reduced-motion:reduce){.control-sidebar-slide-open .control-sidebar,.control-sidebar-slide-open .control-sidebar:before{transition:none}}.control-sidebar-slide-open.control-sidebar-push-slide .content-wrapper,.control-sidebar-slide-open.control-sidebar-push-slide .main-footer,.control-sidebar-slide-open.control-sidebar-push .content-wrapper,.control-sidebar-slide-open.control-sidebar-push .main-footer{margin-right:260px}.control-sidebar-dark,.control-sidebar-dark .nav-link,.control-sidebar-dark a{color:hsla(0,0%,100%,.95)}.control-sidebar-dark{background:#3e4958}.control-sidebar-dark a:hover,.control-sidebar-dark h1,.control-sidebar-dark h2,.control-sidebar-dark h3,.control-sidebar-dark h4,.control-sidebar-dark h5,.control-sidebar-dark h6,.control-sidebar-dark label{color:hsla(0,0%,100%,.95)}.control-sidebar-dark .nav-tabs{background-color:transparent;border-bottom:0;margin-bottom:5px}.control-sidebar-dark .nav-tabs .nav-item{margin:0}.control-sidebar-dark .nav-tabs .nav-link{border-radius:0;padding:10px 20px;position:relative;text-align:center}.control-sidebar-dark .nav-tabs .nav-link,.control-sidebar-dark .nav-tabs .nav-link.active,.control-sidebar-dark .nav-tabs .nav-link:active,.control-sidebar-dark .nav-tabs .nav-link:focus,.control-sidebar-dark .nav-tabs .nav-link:hover{border:0}.control-sidebar-dark .nav-tabs .nav-link.active,.control-sidebar-dark .nav-tabs .nav-link:active,.control-sidebar-dark .nav-tabs .nav-link:focus,.control-sidebar-dark .nav-tabs .nav-link:hover{border-bottom-color:transparent;border-left-color:transparent;border-top-color:transparent;color:hsla(0,0%,100%,.95)}.control-sidebar-dark .nav-tabs .nav-link.active{background-color:#3e4958}.control-sidebar-dark .tab-pane{padding:10px 15px}.control-sidebar-light{color:#6f6f6f;background:#fff;border-left:1px solid #dae1e7}.text-sm .dropdown-menu{font-size:1rem!important}.text-sm .dropdown-toggle:after{vertical-align:.2rem}.dropdown-item-title{font-size:1rem;margin:0}.dropdown-icon:after{margin-left:0}.dropdown-menu-lg{max-width:300px;min-width:280px;padding:0}.dropdown-menu-lg .dropdown-divider{margin:0}.dropdown-menu-lg .dropdown-item{padding:.5rem 1.5rem}.dropdown-menu-lg p{margin:0;white-space:normal}.dropdown-submenu{position:relative}.dropdown-submenu>a:after{border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid;float:right;margin-left:.5rem;margin-top:.5rem}.dropdown-submenu>.dropdown-menu{left:100%;margin-left:0;margin-top:0;top:0}.dropdown-hover.dropdown-submenu:hover>.dropdown-menu,.dropdown-hover .dropdown-submenu:hover>.dropdown-menu,.dropdown-hover.nav-item.dropdown:hover>.dropdown-menu,.dropdown-hover:hover>.dropdown-menu{display:block}.dropdown-menu-xl{max-width:420px;min-width:360px;padding:0}.dropdown-menu-xl .dropdown-divider{margin:0}.dropdown-menu-xl .dropdown-item{padding:.5rem 1.5rem}.dropdown-menu-xl p{margin:0;white-space:normal}.dropdown-footer,.dropdown-header{display:block;font-size:1rem;padding:.5rem 1.5rem;text-align:center}.open:not(.dropup)>.animated-dropdown-menu{-webkit-animation:flipInX .7s both;animation:flipInX .7s both;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}.navbar-custom-menu>.navbar-nav>li{position:relative}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:0;left:auto}@media (max-width:767.98px){.navbar-custom-menu>.navbar-nav{float:right}.navbar-custom-menu>.navbar-nav>li{position:static}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:5%;left:auto;border:1px solid #ddd;background:#fff}}.navbar-nav>.user-menu>.nav-link:after{content:none}.navbar-nav>.user-menu>.dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;padding:0;width:280px}.navbar-nav>.user-menu>.dropdown-menu,.navbar-nav>.user-menu>.dropdown-menu>.user-body{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header{height:175px;padding:10px;text-align:center}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>img{z-index:5;height:90px;width:90px;border:3px solid hsla(0,0%,100%,.2)}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p{z-index:5;font-size:17px;margin-top:10px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p>small{display:block;font-size:12px}.navbar-nav>.user-menu>.dropdown-menu>.user-body{border-bottom:1px solid #4e5154;border-top:1px solid #dae1e7;padding:15px}.navbar-nav>.user-menu>.dropdown-menu>.user-body:after{display:block;clear:both;content:\"\"}@media (min-width:576px){.navbar-nav>.user-menu>.dropdown-menu>.user-body a{background:#fff!important;color:#4e5154!important}}.navbar-nav>.user-menu>.dropdown-menu>.user-footer{background-color:#babfc7;padding:10px}.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{display:block;clear:both;content:\"\"}.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default{color:#b8c2cc}@media (min-width:576px){.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default:hover{background-color:#babfc7}}.navbar-nav>.user-menu .user-image{border-radius:50%;float:left;height:2.5666666667rem;margin-right:10px;margin-top:-2px;width:2.5666666667rem}@media (min-width:576px){.navbar-nav>.user-menu .user-image{float:none;line-height:10px;margin-right:.4rem;margin-top:-8px}}.nav-pills .nav-link{color:#b8c2cc}.nav-pills .nav-link:not(.active):hover{color:#4e9876}.nav-pills .nav-item.dropdown.show .nav-link:hover{color:#fff}.nav-tabs.flex-column{border-bottom:0;border-right:1px solid #dae1e7}.nav-tabs.flex-column .nav-link{border-bottom-left-radius:.5rem;border-top-right-radius:0;margin-right:-1px}.nav-tabs.flex-column .nav-link:focus,.nav-tabs.flex-column .nav-link:hover{border-color:#ededed transparent #ededed #ededed}.nav-tabs.flex-column .nav-item.show .nav-link,.nav-tabs.flex-column .nav-link.active{border-color:#dae1e7 transparent #dae1e7 #dae1e7}.nav-tabs.flex-column.nav-tabs-right{border-left:1px solid #dae1e7;border-right:0}.nav-tabs.flex-column.nav-tabs-right .nav-link{border-bottom-left-radius:0;border-bottom-right-radius:.5rem;border-top-left-radius:0;border-top-right-radius:.5rem;margin-left:-1px}.nav-tabs.flex-column.nav-tabs-right .nav-link:focus,.nav-tabs.flex-column.nav-tabs-right .nav-link:hover{border-color:#ededed #ededed #ededed transparent}.nav-tabs.flex-column.nav-tabs-right .nav-item.show .nav-link,.nav-tabs.flex-column.nav-tabs-right .nav-link.active{border-color:#dae1e7 #dae1e7 #dae1e7 transparent}.navbar-no-expand{flex-direction:row}.navbar-no-expand .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-no-expand .dropdown-menu{position:absolute}.navbar-light{background-color:#f7f7f9}.navbar-dark{background-color:#22292f}.navbar-primary{background-color:#4e9876}.navbar-secondary{background-color:#b8c2cc}.navbar-success{background-color:#21b978}.navbar-info{background-color:#4277cf}.navbar-warning{background-color:#dda451}.navbar-danger{background-color:#ea5455}.navbar-lightblue{background-color:#3c8dbc}.navbar-navy{background-color:#001f3f}.navbar-olive{background-color:#3d9970}.navbar-lime{background-color:#01ff70}.navbar-fuchsia{background-color:#f012be}.navbar-maroon{background-color:#d81b60}.navbar-blue{background-color:#3085d6}.navbar-indigo{background-color:#5c6bc6}.navbar-purple{background-color:#6f42c1}.navbar-pink{background-color:#ff8acc}.navbar-red{background-color:#ea5455}.navbar-orange{background-color:#dda451}.navbar-yellow{background-color:#edc30e}.navbar-green{background-color:#21b978}.navbar-teal{background-color:#20c997}.navbar-cyan{background-color:#7367f0}.navbar-white{background-color:#fff}.navbar-gray{background-color:#b8c2cc}.navbar-gray-dark{background-color:#1e1e1e}.form-group.has-icon{position:relative}.form-group.has-icon .form-control{padding-right:35px}.form-group.has-icon .form-icon{background-color:transparent;border:0;cursor:pointer;font-size:1rem;padding:.75rem 2rem;position:absolute;right:3px;top:0}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0}.form-control-feedback.fa,.form-control-feedback.fab,.form-control-feedback.far,.form-control-feedback.fas,.form-control-feedback.glyphicon,.form-control-feedback.ion{line-height:34px}.form-group-lg .form-control+.form-control-feedback.fa,.form-group-lg .form-control+.form-control-feedback.fab,.form-group-lg .form-control+.form-control-feedback.far,.form-group-lg .form-control+.form-control-feedback.fas,.form-group-lg .form-control+.form-control-feedback.glyphicon,.form-group-lg .form-control+.form-control-feedback.ion,.input-group-lg+.form-control-feedback.fa,.input-group-lg+.form-control-feedback.fab,.input-group-lg+.form-control-feedback.far,.input-group-lg+.form-control-feedback.fas,.input-group-lg+.form-control-feedback.glyphicon,.input-group-lg+.form-control-feedback.ion,.input-lg+.form-control-feedback.fa,.input-lg+.form-control-feedback.fab,.input-lg+.form-control-feedback.far,.input-lg+.form-control-feedback.fas,.input-lg+.form-control-feedback.glyphicon,.input-lg+.form-control-feedback.ion{line-height:calc(1.25em + 2rem + 2px)}.form-group-sm .form-control+.form-control-feedback.fa,.form-group-sm .form-control+.form-control-feedback.fab,.form-group-sm .form-control+.form-control-feedback.far,.form-group-sm .form-control+.form-control-feedback.fas,.form-group-sm .form-control+.form-control-feedback.glyphicon,.form-group-sm .form-control+.form-control-feedback.ion,.input-group-sm+.form-control-feedback.fa,.input-group-sm+.form-control-feedback.fab,.input-group-sm+.form-control-feedback.far,.input-group-sm+.form-control-feedback.fas,.input-group-sm+.form-control-feedback.glyphicon,.input-group-sm+.form-control-feedback.ion,.input-sm+.form-control-feedback.fa,.input-sm+.form-control-feedback.fab,.input-sm+.form-control-feedback.far,.input-sm+.form-control-feedback.fas,.input-sm+.form-control-feedback.glyphicon,.input-sm+.form-control-feedback.ion{line-height:2rem}.warning-feedback{font-size:smaller;color:#dda451;display:none;margin-top:.25rem;width:100%}.warning-tooltip{border-radius:.5rem;font-size:1rem;background-color:rgba(221,164,81,.9);color:#2a2e30;display:none;line-height:1.45;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.form-control.is-warning{border-color:#dda451}.form-control.is-warning:focus{border-color:#dda451;box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.form-control.is-warning~.warning-feedback,.form-control.is-warning~.warning-tooltip{display:block}textarea.form-control.is-warning{padding-right:calc(1.25em + 1.4rem);background-position:top calc(.3125em + .35rem) right calc(.3125em + .35rem)}.custom-select.is-warning{border-color:#dda451}.custom-select.is-warning:focus{border-color:#dda451;box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.custom-select.is-warning~.warning-feedback,.custom-select.is-warning~.warning-tooltip,.form-control-file.is-warning~.warning-feedback,.form-control-file.is-warning~.warning-tooltip{display:block}.form-check-input.is-warning~.form-check-label{color:#dda451}.form-check-input.is-warning~.warning-feedback,.form-check-input.is-warning~.warning-tooltip{display:block}.custom-control-input.is-warning~.custom-control-label{color:#dda451}.custom-control-input.is-warning~.custom-control-label:before{border-color:#dda451}.custom-control-input.is-warning~.warning-feedback,.custom-control-input.is-warning~.warning-tooltip{display:block}.custom-control-input.is-warning:checked~.custom-control-label:before{background-color:#e5ba7c;border-color:#e5ba7c}.custom-control-input.is-warning:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.custom-control-input.is-warning:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-warning~.custom-file-label{border-color:#dda451}.custom-file-input.is-warning~.warning-feedback,.custom-file-input.is-warning~.warning-tooltip{display:block}.custom-file-input.is-warning:focus~.custom-file-label{border-color:#dda451;box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.custom-switch.custom-switch-off-primary .custom-control-input~.custom-control-label:before{background:#4e9876;border-color:#2b5542}.custom-switch.custom-switch-off-primary .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(78,152,118,.25)}.custom-switch.custom-switch-off-primary .custom-control-input~.custom-control-label:after{background:#234435}.custom-switch.custom-switch-on-primary .custom-control-input:checked~.custom-control-label:before{background:#4e9876;border-color:#2b5542}.custom-switch.custom-switch-on-primary .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(78,152,118,.25)}.custom-switch.custom-switch-on-primary .custom-control-input:checked~.custom-control-label:after{background:#abd4c1}.custom-switch.custom-switch-off-secondary .custom-control-input~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-off-secondary .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-off-secondary .custom-control-input~.custom-control-label:after{background:#6e8297}.custom-switch.custom-switch-on-secondary .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-on-secondary .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-on-secondary .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-success .custom-control-input~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-off-success .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-off-success .custom-control-input~.custom-control-label:after{background:#0e4d32}.custom-switch.custom-switch-on-success .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-on-success .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-on-success .custom-control-input:checked~.custom-control-label:after{background:#89eac1}.custom-switch.custom-switch-off-info .custom-control-input~.custom-control-label:before{background:#4277cf;border-color:#234988}.custom-switch.custom-switch-off-info .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-switch.custom-switch-off-info .custom-control-input~.custom-control-label:after{background:#1d3e74}.custom-switch.custom-switch-on-info .custom-control-input:checked~.custom-control-label:before{background:#4277cf;border-color:#234988}.custom-switch.custom-switch-on-info .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-switch.custom-switch-on-info .custom-control-input:checked~.custom-control-label:after{background:#bccfee}.custom-switch.custom-switch-off-warning .custom-control-input~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-off-warning .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-off-warning .custom-control-input~.custom-control-label:after{background:#92621d}.custom-switch.custom-switch-on-warning .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-on-warning .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-on-warning .custom-control-input:checked~.custom-control-label:after{background:#f6e7d1}.custom-switch.custom-switch-off-danger .custom-control-input~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-off-danger .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-off-danger .custom-control-input~.custom-control-label:after{background:#aa1516}.custom-switch.custom-switch-on-danger .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-on-danger .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-on-danger .custom-control-input:checked~.custom-control-label:after{background:#fbdcdc}.custom-switch.custom-switch-off-light .custom-control-input~.custom-control-label:before{background:#f7f7f9;border-color:#bdbdcd}.custom-switch.custom-switch-off-light .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-switch.custom-switch-off-light .custom-control-input~.custom-control-label:after{background:#aeaec2}.custom-switch.custom-switch-on-light .custom-control-input:checked~.custom-control-label:before{background:#f7f7f9;border-color:#bdbdcd}.custom-switch.custom-switch-on-light .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-switch.custom-switch-on-light .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-dark .custom-control-input~.custom-control-label:before{background:#22292f;border-color:#000}.custom-switch.custom-switch-off-dark .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-switch.custom-switch-off-dark .custom-control-input~.custom-control-label:after{background:#000}.custom-switch.custom-switch-on-dark .custom-control-input:checked~.custom-control-label:before{background:#22292f;border-color:#000}.custom-switch.custom-switch-on-dark .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-switch.custom-switch-on-dark .custom-control-input:checked~.custom-control-label:after{background:#627688}.custom-switch.custom-switch-off-lightblue .custom-control-input~.custom-control-label:before{background:#3c8dbc;border-color:#23536f}.custom-switch.custom-switch-off-lightblue .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-switch.custom-switch-off-lightblue .custom-control-input~.custom-control-label:after{background:#1d455b}.custom-switch.custom-switch-on-lightblue .custom-control-input:checked~.custom-control-label:before{background:#3c8dbc;border-color:#23536f}.custom-switch.custom-switch-on-lightblue .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-switch.custom-switch-on-lightblue .custom-control-input:checked~.custom-control-label:after{background:#acd0e5}.custom-switch.custom-switch-off-navy .custom-control-input~.custom-control-label:before{background:#001f3f;border-color:#000}.custom-switch.custom-switch-off-navy .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-switch.custom-switch-off-navy .custom-control-input~.custom-control-label:after{background:#000}.custom-switch.custom-switch-on-navy .custom-control-input:checked~.custom-control-label:before{background:#001f3f;border-color:#000}.custom-switch.custom-switch-on-navy .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-switch.custom-switch-on-navy .custom-control-input:checked~.custom-control-label:after{background:#006ad8}.custom-switch.custom-switch-off-olive .custom-control-input~.custom-control-label:before{background:#3d9970;border-color:#20503b}.custom-switch.custom-switch-off-olive .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-switch.custom-switch-off-olive .custom-control-input~.custom-control-label:after{background:#193e2d}.custom-switch.custom-switch-on-olive .custom-control-input:checked~.custom-control-label:before{background:#3d9970;border-color:#20503b}.custom-switch.custom-switch-on-olive .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-switch.custom-switch-on-olive .custom-control-input:checked~.custom-control-label:after{background:#99d6bb}.custom-switch.custom-switch-off-lime .custom-control-input~.custom-control-label:before{background:#01ff70;border-color:#009a43}.custom-switch.custom-switch-off-lime .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-switch.custom-switch-off-lime .custom-control-input~.custom-control-label:after{background:#008138}.custom-switch.custom-switch-on-lime .custom-control-input:checked~.custom-control-label:before{background:#01ff70;border-color:#009a43}.custom-switch.custom-switch-on-lime .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-switch.custom-switch-on-lime .custom-control-input:checked~.custom-control-label:after{background:#9affc6}.custom-switch.custom-switch-off-fuchsia .custom-control-input~.custom-control-label:before{background:#f012be;border-color:#930974}.custom-switch.custom-switch-off-fuchsia .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-switch.custom-switch-off-fuchsia .custom-control-input~.custom-control-label:after{background:#7b0861}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked~.custom-control-label:before{background:#f012be;border-color:#930974}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked~.custom-control-label:after{background:#f9a2e5}.custom-switch.custom-switch-off-maroon .custom-control-input~.custom-control-label:before{background:#d81b60;border-color:#7d1038}.custom-switch.custom-switch-off-maroon .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-switch.custom-switch-off-maroon .custom-control-input~.custom-control-label:after{background:#670d2e}.custom-switch.custom-switch-on-maroon .custom-control-input:checked~.custom-control-label:before{background:#d81b60;border-color:#7d1038}.custom-switch.custom-switch-on-maroon .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-switch.custom-switch-on-maroon .custom-control-input:checked~.custom-control-label:after{background:#f29aba}.custom-switch.custom-switch-off-blue .custom-control-input~.custom-control-label:before{background:#3085d6;border-color:#1a5186}.custom-switch.custom-switch-off-blue .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-switch.custom-switch-off-blue .custom-control-input~.custom-control-label:after{background:#164470}.custom-switch.custom-switch-on-blue .custom-control-input:checked~.custom-control-label:before{background:#3085d6;border-color:#1a5186}.custom-switch.custom-switch-on-blue .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-switch.custom-switch-on-blue .custom-control-input:checked~.custom-control-label:after{background:#b0d0ef}.custom-switch.custom-switch-off-indigo .custom-control-input~.custom-control-label:before{background:#5c6bc6;border-color:#313e8b}.custom-switch.custom-switch-off-indigo .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-switch.custom-switch-off-indigo .custom-control-input~.custom-control-label:after{background:#2a3578}.custom-switch.custom-switch-on-indigo .custom-control-input:checked~.custom-control-label:before{background:#5c6bc6;border-color:#313e8b}.custom-switch.custom-switch-on-indigo .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-switch.custom-switch-on-indigo .custom-control-input:checked~.custom-control-label:after{background:#cdd2ee}.custom-switch.custom-switch-off-purple .custom-control-input~.custom-control-label:before{background:#6f42c1;border-color:#432776}.custom-switch.custom-switch-off-purple .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-switch.custom-switch-off-purple .custom-control-input~.custom-control-label:after{background:#382063}.custom-switch.custom-switch-on-purple .custom-control-input:checked~.custom-control-label:before{background:#6f42c1;border-color:#432776}.custom-switch.custom-switch-on-purple .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-switch.custom-switch-on-purple .custom-control-input:checked~.custom-control-label:after{background:#c7b5e7}.custom-switch.custom-switch-off-pink .custom-control-input~.custom-control-label:before{background:#ff8acc;border-color:#ff24a0}.custom-switch.custom-switch-off-pink .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-switch.custom-switch-off-pink .custom-control-input~.custom-control-label:after{background:#ff0b94}.custom-switch.custom-switch-on-pink .custom-control-input:checked~.custom-control-label:before{background:#ff8acc;border-color:#ff24a0}.custom-switch.custom-switch-on-pink .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-switch.custom-switch-on-pink .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-red .custom-control-input~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-off-red .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-off-red .custom-control-input~.custom-control-label:after{background:#aa1516}.custom-switch.custom-switch-on-red .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-on-red .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-on-red .custom-control-input:checked~.custom-control-label:after{background:#fbdcdc}.custom-switch.custom-switch-off-orange .custom-control-input~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-off-orange .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-off-orange .custom-control-input~.custom-control-label:after{background:#92621d}.custom-switch.custom-switch-on-orange .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-on-orange .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-on-orange .custom-control-input:checked~.custom-control-label:after{background:#f6e7d1}.custom-switch.custom-switch-off-yellow .custom-control-input~.custom-control-label:before{background:#edc30e;border-color:#8d7408}.custom-switch.custom-switch-off-yellow .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-switch.custom-switch-off-yellow .custom-control-input~.custom-control-label:after{background:#756007}.custom-switch.custom-switch-on-yellow .custom-control-input:checked~.custom-control-label:before{background:#edc30e;border-color:#8d7408}.custom-switch.custom-switch-on-yellow .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-switch.custom-switch-on-yellow .custom-control-input:checked~.custom-control-label:after{background:#f9e79b}.custom-switch.custom-switch-off-green .custom-control-input~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-off-green .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-off-green .custom-control-input~.custom-control-label:after{background:#0e4d32}.custom-switch.custom-switch-on-green .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-on-green .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-on-green .custom-control-input:checked~.custom-control-label:after{background:#89eac1}.custom-switch.custom-switch-off-teal .custom-control-input~.custom-control-label:before{background:#20c997;border-color:#127155}.custom-switch.custom-switch-off-teal .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-switch.custom-switch-off-teal .custom-control-input~.custom-control-label:after{background:#0e5b44}.custom-switch.custom-switch-on-teal .custom-control-input:checked~.custom-control-label:before{background:#20c997;border-color:#127155}.custom-switch.custom-switch-on-teal .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-switch.custom-switch-on-teal .custom-control-input:checked~.custom-control-label:after{background:#94eed3}.custom-switch.custom-switch-off-cyan .custom-control-input~.custom-control-label:before{background:#7367f0;border-color:#2716db}.custom-switch.custom-switch-off-cyan .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-switch.custom-switch-off-cyan .custom-control-input~.custom-control-label:after{background:#2313c4}.custom-switch.custom-switch-on-cyan .custom-control-input:checked~.custom-control-label:before{background:#7367f0;border-color:#2716db}.custom-switch.custom-switch-on-cyan .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-switch.custom-switch-on-cyan .custom-control-input:checked~.custom-control-label:after{background:#f3f2fe}.custom-switch.custom-switch-off-white .custom-control-input~.custom-control-label:before{background:#fff;border-color:#ccc}.custom-switch.custom-switch-off-white .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-switch.custom-switch-off-white .custom-control-input~.custom-control-label:after{background:#bfbfbf}.custom-switch.custom-switch-on-white .custom-control-input:checked~.custom-control-label:before{background:#fff;border-color:#ccc}.custom-switch.custom-switch-on-white .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-switch.custom-switch-on-white .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-gray .custom-control-input~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-off-gray .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-off-gray .custom-control-input~.custom-control-label:after{background:#6e8297}.custom-switch.custom-switch-on-gray .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-on-gray .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-on-gray .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-gray-dark .custom-control-input~.custom-control-label:before{background:#1e1e1e;border-color:#000}.custom-switch.custom-switch-off-gray-dark .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-switch.custom-switch-off-gray-dark .custom-control-input~.custom-control-label:after{background:#000}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked~.custom-control-label:before{background:#1e1e1e;border-color:#000}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked~.custom-control-label:after{background:#6b6b6b}.custom-range.custom-range-primary:focus{outline:none}.custom-range.custom-range-primary:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(78,152,118,.25)}.custom-range.custom-range-primary:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(78,152,118,.25)}.custom-range.custom-range-primary:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(78,152,118,.25)}.custom-range.custom-range-primary::-webkit-slider-thumb{background-color:#4e9876}.custom-range.custom-range-primary::-webkit-slider-thumb:active{background-color:#bcddce}.custom-range.custom-range-primary::-moz-range-thumb{background-color:#4e9876}.custom-range.custom-range-primary::-moz-range-thumb:active{background-color:#bcddce}.custom-range.custom-range-primary::-ms-thumb{background-color:#4e9876}.custom-range.custom-range-primary::-ms-thumb:active{background-color:#bcddce}.custom-range.custom-range-secondary:focus{outline:none}.custom-range.custom-range-secondary:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-secondary:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-secondary:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-secondary::-webkit-slider-thumb{background-color:#b8c2cc}.custom-range.custom-range-secondary::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-secondary::-moz-range-thumb{background-color:#b8c2cc}.custom-range.custom-range-secondary::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-secondary::-ms-thumb{background-color:#b8c2cc}.custom-range.custom-range-secondary::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-success:focus{outline:none}.custom-range.custom-range-success:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-success:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-success:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-success::-webkit-slider-thumb{background-color:#21b978}.custom-range.custom-range-success::-webkit-slider-thumb:active{background-color:#9feecc}.custom-range.custom-range-success::-moz-range-thumb{background-color:#21b978}.custom-range.custom-range-success::-moz-range-thumb:active{background-color:#9feecc}.custom-range.custom-range-success::-ms-thumb{background-color:#21b978}.custom-range.custom-range-success::-ms-thumb:active{background-color:#9feecc}.custom-range.custom-range-info:focus{outline:none}.custom-range.custom-range-info:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-range.custom-range-info:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-range.custom-range-info:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-range.custom-range-info::-webkit-slider-thumb{background-color:#4277cf}.custom-range.custom-range-info::-webkit-slider-thumb:active{background-color:#d0ddf3}.custom-range.custom-range-info::-moz-range-thumb{background-color:#4277cf}.custom-range.custom-range-info::-moz-range-thumb:active{background-color:#d0ddf3}.custom-range.custom-range-info::-ms-thumb{background-color:#4277cf}.custom-range.custom-range-info::-ms-thumb:active{background-color:#d0ddf3}.custom-range.custom-range-warning:focus{outline:none}.custom-range.custom-range-warning:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-warning:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-warning:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-warning::-webkit-slider-thumb{background-color:#dda451}.custom-range.custom-range-warning::-webkit-slider-thumb:active{background-color:#faf2e6}.custom-range.custom-range-warning::-moz-range-thumb{background-color:#dda451}.custom-range.custom-range-warning::-moz-range-thumb:active{background-color:#faf2e6}.custom-range.custom-range-warning::-ms-thumb{background-color:#dda451}.custom-range.custom-range-warning::-ms-thumb:active{background-color:#faf2e6}.custom-range.custom-range-danger:focus{outline:none}.custom-range.custom-range-danger:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-danger:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-danger:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-danger::-webkit-slider-thumb{background-color:#ea5455}.custom-range.custom-range-danger::-webkit-slider-thumb:active{background-color:#fef3f3}.custom-range.custom-range-danger::-moz-range-thumb{background-color:#ea5455}.custom-range.custom-range-danger::-moz-range-thumb:active{background-color:#fef3f3}.custom-range.custom-range-danger::-ms-thumb{background-color:#ea5455}.custom-range.custom-range-danger::-ms-thumb:active{background-color:#fef3f3}.custom-range.custom-range-light:focus{outline:none}.custom-range.custom-range-light:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-range.custom-range-light:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-range.custom-range-light:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-range.custom-range-light::-webkit-slider-thumb{background-color:#f7f7f9}.custom-range.custom-range-light::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-light::-moz-range-thumb{background-color:#f7f7f9}.custom-range.custom-range-light::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-light::-ms-thumb{background-color:#f7f7f9}.custom-range.custom-range-light::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-dark:focus{outline:none}.custom-range.custom-range-dark:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-range.custom-range-dark:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-range.custom-range-dark:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-range.custom-range-dark::-webkit-slider-thumb{background-color:#22292f}.custom-range.custom-range-dark::-webkit-slider-thumb:active{background-color:#6e8396}.custom-range.custom-range-dark::-moz-range-thumb{background-color:#22292f}.custom-range.custom-range-dark::-moz-range-thumb:active{background-color:#6e8396}.custom-range.custom-range-dark::-ms-thumb{background-color:#22292f}.custom-range.custom-range-dark::-ms-thumb:active{background-color:#6e8396}.custom-range.custom-range-lightblue:focus{outline:none}.custom-range.custom-range-lightblue:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-range.custom-range-lightblue:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-range.custom-range-lightblue:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-range.custom-range-lightblue::-webkit-slider-thumb{background-color:#3c8dbc}.custom-range.custom-range-lightblue::-webkit-slider-thumb:active{background-color:#c0dbeb}.custom-range.custom-range-lightblue::-moz-range-thumb{background-color:#3c8dbc}.custom-range.custom-range-lightblue::-moz-range-thumb:active{background-color:#c0dbeb}.custom-range.custom-range-lightblue::-ms-thumb{background-color:#3c8dbc}.custom-range.custom-range-lightblue::-ms-thumb:active{background-color:#c0dbeb}.custom-range.custom-range-navy:focus{outline:none}.custom-range.custom-range-navy:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy::-webkit-slider-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-webkit-slider-thumb:active{background-color:#0077f2}.custom-range.custom-range-navy::-moz-range-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-moz-range-thumb:active{background-color:#0077f2}.custom-range.custom-range-navy::-ms-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-ms-thumb:active{background-color:#0077f2}.custom-range.custom-range-olive:focus{outline:none}.custom-range.custom-range-olive:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive::-webkit-slider-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-webkit-slider-thumb:active{background-color:#abdec7}.custom-range.custom-range-olive::-moz-range-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-moz-range-thumb:active{background-color:#abdec7}.custom-range.custom-range-olive::-ms-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-ms-thumb:active{background-color:#abdec7}.custom-range.custom-range-lime:focus{outline:none}.custom-range.custom-range-lime:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime::-webkit-slider-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-webkit-slider-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-lime::-moz-range-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-moz-range-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-lime::-ms-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-ms-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-fuchsia:focus{outline:none}.custom-range.custom-range-fuchsia:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia::-webkit-slider-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-webkit-slider-thumb:active{background-color:#fbbaec}.custom-range.custom-range-fuchsia::-moz-range-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-moz-range-thumb:active{background-color:#fbbaec}.custom-range.custom-range-fuchsia::-ms-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-ms-thumb:active{background-color:#fbbaec}.custom-range.custom-range-maroon:focus{outline:none}.custom-range.custom-range-maroon:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon::-webkit-slider-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-webkit-slider-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-maroon::-moz-range-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-moz-range-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-maroon::-ms-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-ms-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-blue:focus{outline:none}.custom-range.custom-range-blue:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-range.custom-range-blue:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-range.custom-range-blue:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-range.custom-range-blue::-webkit-slider-thumb{background-color:#3085d6}.custom-range.custom-range-blue::-webkit-slider-thumb:active{background-color:#c5ddf4}.custom-range.custom-range-blue::-moz-range-thumb{background-color:#3085d6}.custom-range.custom-range-blue::-moz-range-thumb:active{background-color:#c5ddf4}.custom-range.custom-range-blue::-ms-thumb{background-color:#3085d6}.custom-range.custom-range-blue::-ms-thumb:active{background-color:#c5ddf4}.custom-range.custom-range-indigo:focus{outline:none}.custom-range.custom-range-indigo:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-range.custom-range-indigo:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-range.custom-range-indigo:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-range.custom-range-indigo::-webkit-slider-thumb{background-color:#5c6bc6}.custom-range.custom-range-indigo::-webkit-slider-thumb:active{background-color:#e0e3f4}.custom-range.custom-range-indigo::-moz-range-thumb{background-color:#5c6bc6}.custom-range.custom-range-indigo::-moz-range-thumb:active{background-color:#e0e3f4}.custom-range.custom-range-indigo::-ms-thumb{background-color:#5c6bc6}.custom-range.custom-range-indigo::-ms-thumb:active{background-color:#e0e3f4}.custom-range.custom-range-purple:focus{outline:none}.custom-range.custom-range-purple:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple::-webkit-slider-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-webkit-slider-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-purple::-moz-range-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-moz-range-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-purple::-ms-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-ms-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-pink:focus{outline:none}.custom-range.custom-range-pink:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-range.custom-range-pink:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-range.custom-range-pink:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-range.custom-range-pink::-webkit-slider-thumb{background-color:#ff8acc}.custom-range.custom-range-pink::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-pink::-moz-range-thumb{background-color:#ff8acc}.custom-range.custom-range-pink::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-pink::-ms-thumb{background-color:#ff8acc}.custom-range.custom-range-pink::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-red:focus{outline:none}.custom-range.custom-range-red:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-red:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-red:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-red::-webkit-slider-thumb{background-color:#ea5455}.custom-range.custom-range-red::-webkit-slider-thumb:active{background-color:#fef3f3}.custom-range.custom-range-red::-moz-range-thumb{background-color:#ea5455}.custom-range.custom-range-red::-moz-range-thumb:active{background-color:#fef3f3}.custom-range.custom-range-red::-ms-thumb{background-color:#ea5455}.custom-range.custom-range-red::-ms-thumb:active{background-color:#fef3f3}.custom-range.custom-range-orange:focus{outline:none}.custom-range.custom-range-orange:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-orange:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-orange:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-orange::-webkit-slider-thumb{background-color:#dda451}.custom-range.custom-range-orange::-webkit-slider-thumb:active{background-color:#faf2e6}.custom-range.custom-range-orange::-moz-range-thumb{background-color:#dda451}.custom-range.custom-range-orange::-moz-range-thumb:active{background-color:#faf2e6}.custom-range.custom-range-orange::-ms-thumb{background-color:#dda451}.custom-range.custom-range-orange::-ms-thumb:active{background-color:#faf2e6}.custom-range.custom-range-yellow:focus{outline:none}.custom-range.custom-range-yellow:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-range.custom-range-yellow:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-range.custom-range-yellow:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-range.custom-range-yellow::-webkit-slider-thumb{background-color:#edc30e}.custom-range.custom-range-yellow::-webkit-slider-thumb:active{background-color:#fbedb3}.custom-range.custom-range-yellow::-moz-range-thumb{background-color:#edc30e}.custom-range.custom-range-yellow::-moz-range-thumb:active{background-color:#fbedb3}.custom-range.custom-range-yellow::-ms-thumb{background-color:#edc30e}.custom-range.custom-range-yellow::-ms-thumb:active{background-color:#fbedb3}.custom-range.custom-range-green:focus{outline:none}.custom-range.custom-range-green:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-green:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-green:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-green::-webkit-slider-thumb{background-color:#21b978}.custom-range.custom-range-green::-webkit-slider-thumb:active{background-color:#9feecc}.custom-range.custom-range-green::-moz-range-thumb{background-color:#21b978}.custom-range.custom-range-green::-moz-range-thumb:active{background-color:#9feecc}.custom-range.custom-range-green::-ms-thumb{background-color:#21b978}.custom-range.custom-range-green::-ms-thumb:active{background-color:#9feecc}.custom-range.custom-range-teal:focus{outline:none}.custom-range.custom-range-teal:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal::-webkit-slider-thumb{background-color:#20c997}.custom-range.custom-range-teal::-webkit-slider-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-teal::-moz-range-thumb{background-color:#20c997}.custom-range.custom-range-teal::-moz-range-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-teal::-ms-thumb{background-color:#20c997}.custom-range.custom-range-teal::-ms-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-cyan:focus{outline:none}.custom-range.custom-range-cyan:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-range.custom-range-cyan:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-range.custom-range-cyan:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-range.custom-range-cyan::-webkit-slider-thumb{background-color:#7367f0}.custom-range.custom-range-cyan::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-cyan::-moz-range-thumb{background-color:#7367f0}.custom-range.custom-range-cyan::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-cyan::-ms-thumb{background-color:#7367f0}.custom-range.custom-range-cyan::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-white:focus{outline:none}.custom-range.custom-range-white:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-range.custom-range-white:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-range.custom-range-white:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-range.custom-range-white::-webkit-slider-thumb,.custom-range.custom-range-white::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-white::-moz-range-thumb,.custom-range.custom-range-white::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-white::-ms-thumb,.custom-range.custom-range-white::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-gray:focus{outline:none}.custom-range.custom-range-gray:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-gray:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-gray:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-gray::-webkit-slider-thumb{background-color:#b8c2cc}.custom-range.custom-range-gray::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-gray::-moz-range-thumb{background-color:#b8c2cc}.custom-range.custom-range-gray::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-gray::-ms-thumb{background-color:#b8c2cc}.custom-range.custom-range-gray::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-gray-dark:focus{outline:none}.custom-range.custom-range-gray-dark:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-range.custom-range-gray-dark:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-range.custom-range-gray-dark:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-range.custom-range-gray-dark::-webkit-slider-thumb{background-color:#1e1e1e}.custom-range.custom-range-gray-dark::-webkit-slider-thumb:active{background-color:#777}.custom-range.custom-range-gray-dark::-moz-range-thumb{background-color:#1e1e1e}.custom-range.custom-range-gray-dark::-moz-range-thumb:active{background-color:#777}.custom-range.custom-range-gray-dark::-ms-thumb{background-color:#1e1e1e}.custom-range.custom-range-gray-dark::-ms-thumb:active{background-color:#777}.progress{border-radius:1px}.progress.vertical{display:inline-block;height:200px;margin-right:10px;position:relative;width:30px}.progress.vertical>.progress-bar{bottom:0;position:absolute;width:100%}.progress.vertical.progress-sm,.progress.vertical.sm{width:20px}.progress.vertical.progress-xs,.progress.vertical.xs{width:10px}.progress.vertical.progress-xxs,.progress.vertical.xxs{width:3px}.progress-group{margin-bottom:1.5rem}.progress-sm{height:10px}.progress-xs{height:7px}.progress-xxs{height:3px}.table tr>td .progress{margin:0}.card-primary:not(.card-outline)>.card-header{background-color:#4e9876}.card-primary:not(.card-outline)>.card-header,.card-primary:not(.card-outline)>.card-header a{color:#fff}.card-primary:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-primary.card-outline{border-top:3px solid #4e9876}.card-primary.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-primary.card-outline-tabs>.card-header a.active{border-top:3px solid #4e9876}.bg-gradient-primary .btn-tool,.bg-primary .btn-tool,.card-primary:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-primary .btn-tool:hover,.bg-primary .btn-tool:hover,.card-primary:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table th,.card.bg-primary .bootstrap-datetimepicker-widget .table td,.card.bg-primary .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#407d61;color:#fff}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.today:before,.card.bg-primary .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.active,.card.bg-primary .bootstrap-datetimepicker-widget table td.active:hover{background:#68b18f;color:#fff}.card-secondary:not(.card-outline)>.card-header{background-color:#b8c2cc}.card-secondary:not(.card-outline)>.card-header,.card-secondary:not(.card-outline)>.card-header a,.card-secondary:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-secondary.card-outline{border-top:3px solid #b8c2cc}.card-secondary.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-secondary.card-outline-tabs>.card-header a.active{border-top:3px solid #b8c2cc}.bg-gradient-secondary .btn-tool,.bg-secondary .btn-tool,.card-secondary:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-secondary .btn-tool:hover,.bg-secondary .btn-tool:hover,.card-secondary:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table th,.card.bg-secondary .bootstrap-datetimepicker-widget .table td,.card.bg-secondary .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#a0aebb;color:#2a2e30}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.today:before,.card.bg-secondary .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.active,.card.bg-secondary .bootstrap-datetimepicker-widget table td.active:hover{background:#d6dce1;color:#2a2e30}.card-success:not(.card-outline)>.card-header{background-color:#21b978}.card-success:not(.card-outline)>.card-header,.card-success:not(.card-outline)>.card-header a{color:#fff}.card-success:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-success.card-outline{border-top:3px solid #21b978}.card-success.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-success.card-outline-tabs>.card-header a.active{border-top:3px solid #21b978}.bg-gradient-success .btn-tool,.bg-success .btn-tool,.card-success:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-success .btn-tool:hover,.bg-success .btn-tool:hover,.card-success:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-success .bootstrap-datetimepicker-widget .table th,.card.bg-success .bootstrap-datetimepicker-widget .table td,.card.bg-success .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#1b9662;color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.today:before,.card.bg-success .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.active,.card.bg-success .bootstrap-datetimepicker-widget table td.active:hover{background:#32db93;color:#fff}.card-info:not(.card-outline)>.card-header{background-color:#4277cf}.card-info:not(.card-outline)>.card-header,.card-info:not(.card-outline)>.card-header a{color:#fff}.card-info:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-info.card-outline{border-top:3px solid #4277cf}.card-info.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-info.card-outline-tabs>.card-header a.active{border-top:3px solid #4277cf}.bg-gradient-info .btn-tool,.bg-info .btn-tool,.card-info:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-info .btn-tool:hover,.bg-info .btn-tool:hover,.card-info:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-info .bootstrap-datetimepicker-widget .table th,.card.bg-info .bootstrap-datetimepicker-widget .table td,.card.bg-info .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#2f63b9;color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.today:before,.card.bg-info .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.active,.card.bg-info .bootstrap-datetimepicker-widget table td.active:hover{background:#6b94d9;color:#fff}.card-warning:not(.card-outline)>.card-header{background-color:#dda451}.card-warning:not(.card-outline)>.card-header,.card-warning:not(.card-outline)>.card-header a,.card-warning:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-warning.card-outline{border-top:3px solid #dda451}.card-warning.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-warning.card-outline-tabs>.card-header a.active{border-top:3px solid #dda451}.bg-gradient-warning .btn-tool,.bg-warning .btn-tool,.card-warning:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-warning .btn-tool:hover,.bg-warning .btn-tool:hover,.card-warning:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table th,.card.bg-warning .bootstrap-datetimepicker-widget .table td,.card.bg-warning .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#d6922f;color:#2a2e30}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.today:before,.card.bg-warning .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.active,.card.bg-warning .bootstrap-datetimepicker-widget table td.active:hover{background:#e5ba7c;color:#2a2e30}.card-danger:not(.card-outline)>.card-header{background-color:#ea5455}.card-danger:not(.card-outline)>.card-header,.card-danger:not(.card-outline)>.card-header a{color:#fff}.card-danger:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-danger.card-outline{border-top:3px solid #ea5455}.card-danger.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-danger.card-outline-tabs>.card-header a.active{border-top:3px solid #ea5455}.bg-danger .btn-tool,.bg-gradient-danger .btn-tool,.card-danger:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-danger .btn-tool:hover,.bg-gradient-danger .btn-tool:hover,.card-danger:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget .table td,.card.bg-danger .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-danger .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e63031;color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget table td.active,.card.bg-danger .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active:hover{background:#f08182;color:#fff}.card-light:not(.card-outline)>.card-header{background-color:#f7f7f9}.card-light:not(.card-outline)>.card-header,.card-light:not(.card-outline)>.card-header a,.card-light:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-light.card-outline{border-top:3px solid #f7f7f9}.card-light.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-light.card-outline-tabs>.card-header a.active{border-top:3px solid #f7f7f9}.bg-gradient-light .btn-tool,.bg-light .btn-tool,.card-light:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-light .btn-tool:hover,.bg-light .btn-tool:hover,.card-light:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-light .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-light .bootstrap-datetimepicker-widget .table th,.card.bg-light .bootstrap-datetimepicker-widget .table td,.card.bg-light .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e0e0e8;color:#2a2e30}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.today:before,.card.bg-light .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.active,.card.bg-light .bootstrap-datetimepicker-widget table td.active:hover{background:#fff;color:#2a2e30}.card-dark:not(.card-outline)>.card-header{background-color:#22292f}.card-dark:not(.card-outline)>.card-header,.card-dark:not(.card-outline)>.card-header a{color:#fff}.card-dark:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-dark.card-outline{border-top:3px solid #22292f}.card-dark.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-dark.card-outline-tabs>.card-header a.active{border-top:3px solid #22292f}.bg-dark .btn-tool,.bg-gradient-dark .btn-tool,.card-dark:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-dark .btn-tool:hover,.bg-gradient-dark .btn-tool:hover,.card-dark:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget .table td,.card.bg-dark .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#111417;color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-dark .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active:hover{background:#37434d;color:#fff}.card-lightblue:not(.card-outline)>.card-header{background-color:#3c8dbc}.card-lightblue:not(.card-outline)>.card-header,.card-lightblue:not(.card-outline)>.card-header a{color:#fff}.card-lightblue:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-lightblue.card-outline{border-top:3px solid #3c8dbc}.card-lightblue.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-lightblue.card-outline-tabs>.card-header a.active{border-top:3px solid #3c8dbc}.bg-gradient-lightblue .btn-tool,.bg-lightblue .btn-tool,.card-lightblue:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-lightblue .btn-tool:hover,.bg-lightblue .btn-tool:hover,.card-lightblue:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget .table th,.card.bg-lightblue .bootstrap-datetimepicker-widget .table td,.card.bg-lightblue .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#32769d;color:#fff}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.today:before,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.active,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.active:hover{background:#5fa4cc;color:#fff}.card-navy:not(.card-outline)>.card-header{background-color:#001f3f}.card-navy:not(.card-outline)>.card-header,.card-navy:not(.card-outline)>.card-header a{color:#fff}.card-navy:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-navy.card-outline{border-top:3px solid #001f3f}.card-navy.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-navy.card-outline-tabs>.card-header a.active{border-top:3px solid #001f3f}.bg-gradient-navy .btn-tool,.bg-navy .btn-tool,.card-navy:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-navy .btn-tool:hover,.bg-navy .btn-tool:hover,.card-navy:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table th,.card.bg-navy .bootstrap-datetimepicker-widget .table td,.card.bg-navy .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#000b16;color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.today:before,.card.bg-navy .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.active,.card.bg-navy .bootstrap-datetimepicker-widget table td.active:hover{background:#003872;color:#fff}.card-olive:not(.card-outline)>.card-header{background-color:#3d9970}.card-olive:not(.card-outline)>.card-header,.card-olive:not(.card-outline)>.card-header a{color:#fff}.card-olive:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-olive.card-outline{border-top:3px solid #3d9970}.card-olive.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-olive.card-outline-tabs>.card-header a.active{border-top:3px solid #3d9970}.bg-gradient-olive .btn-tool,.bg-olive .btn-tool,.card-olive:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-olive .btn-tool:hover,.bg-olive .btn-tool:hover,.card-olive:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table th,.card.bg-olive .bootstrap-datetimepicker-widget .table td,.card.bg-olive .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#317c5b;color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.today:before,.card.bg-olive .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.active,.card.bg-olive .bootstrap-datetimepicker-widget table td.active:hover{background:#50b98a;color:#fff}.card-lime:not(.card-outline)>.card-header{background-color:#01ff70}.card-lime:not(.card-outline)>.card-header,.card-lime:not(.card-outline)>.card-header a,.card-lime:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-lime.card-outline{border-top:3px solid #01ff70}.card-lime.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-lime.card-outline-tabs>.card-header a.active{border-top:3px solid #01ff70}.bg-gradient-lime .btn-tool,.bg-lime .btn-tool,.card-lime:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-lime .btn-tool:hover,.bg-lime .btn-tool:hover,.card-lime:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table th,.card.bg-lime .bootstrap-datetimepicker-widget .table td,.card.bg-lime .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#00d75e;color:#2a2e30}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.today:before,.card.bg-lime .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.active,.card.bg-lime .bootstrap-datetimepicker-widget table td.active:hover{background:#34ff8d;color:#2a2e30}.card-fuchsia:not(.card-outline)>.card-header{background-color:#f012be}.card-fuchsia:not(.card-outline)>.card-header,.card-fuchsia:not(.card-outline)>.card-header a{color:#fff}.card-fuchsia:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-fuchsia.card-outline{border-top:3px solid #f012be}.card-fuchsia.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-fuchsia.card-outline-tabs>.card-header a.active{border-top:3px solid #f012be}.bg-fuchsia .btn-tool,.bg-gradient-fuchsia .btn-tool,.card-fuchsia:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-fuchsia .btn-tool:hover,.bg-gradient-fuchsia .btn-tool:hover,.card-fuchsia:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget .table td,.card.bg-fuchsia .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#cc0da1;color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active:hover{background:#f342cb;color:#fff}.card-maroon:not(.card-outline)>.card-header{background-color:#d81b60}.card-maroon:not(.card-outline)>.card-header,.card-maroon:not(.card-outline)>.card-header a{color:#fff}.card-maroon:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-maroon.card-outline{border-top:3px solid #d81b60}.card-maroon.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-maroon.card-outline-tabs>.card-header a.active{border-top:3px solid #d81b60}.bg-gradient-maroon .btn-tool,.bg-maroon .btn-tool,.card-maroon:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-maroon .btn-tool:hover,.bg-maroon .btn-tool:hover,.card-maroon:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table th,.card.bg-maroon .bootstrap-datetimepicker-widget .table td,.card.bg-maroon .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#b41650;color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.today:before,.card.bg-maroon .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.active,.card.bg-maroon .bootstrap-datetimepicker-widget table td.active:hover{background:#e73f7c;color:#fff}.card-blue:not(.card-outline)>.card-header{background-color:#3085d6}.card-blue:not(.card-outline)>.card-header,.card-blue:not(.card-outline)>.card-header a{color:#fff}.card-blue:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-blue.card-outline{border-top:3px solid #3085d6}.card-blue.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-blue.card-outline-tabs>.card-header a.active{border-top:3px solid #3085d6}.bg-blue .btn-tool,.bg-gradient-blue .btn-tool,.card-blue:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-blue .btn-tool:hover,.bg-gradient-blue .btn-tool:hover,.card-blue:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget .table td,.card.bg-blue .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-blue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#2570b9;color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget table td.active,.card.bg-blue .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active:hover{background:#5b9ede;color:#fff}.card-indigo:not(.card-outline)>.card-header{background-color:#5c6bc6}.card-indigo:not(.card-outline)>.card-header,.card-indigo:not(.card-outline)>.card-header a{color:#fff}.card-indigo:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-indigo.card-outline{border-top:3px solid #5c6bc6}.card-indigo.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-indigo.card-outline-tabs>.card-header a.active{border-top:3px solid #5c6bc6}.bg-gradient-indigo .btn-tool,.bg-indigo .btn-tool,.card-indigo:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-indigo .btn-tool:hover,.bg-indigo .btn-tool:hover,.card-indigo:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table th,.card.bg-indigo .bootstrap-datetimepicker-widget .table td,.card.bg-indigo .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#4152b9;color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.today:before,.card.bg-indigo .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.active,.card.bg-indigo .bootstrap-datetimepicker-widget table td.active:hover{background:#828dd3;color:#fff}.card-purple:not(.card-outline)>.card-header{background-color:#6f42c1}.card-purple:not(.card-outline)>.card-header,.card-purple:not(.card-outline)>.card-header a{color:#fff}.card-purple:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-purple.card-outline{border-top:3px solid #6f42c1}.card-purple.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-purple.card-outline-tabs>.card-header a.active{border-top:3px solid #6f42c1}.bg-gradient-purple .btn-tool,.bg-purple .btn-tool,.card-purple:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-purple .btn-tool:hover,.bg-purple .btn-tool:hover,.card-purple:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table th,.card.bg-purple .bootstrap-datetimepicker-widget .table td,.card.bg-purple .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#5d36a4;color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.today:before,.card.bg-purple .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.active,.card.bg-purple .bootstrap-datetimepicker-widget table td.active:hover{background:#8c68ce;color:#fff}.card-pink:not(.card-outline)>.card-header{background-color:#ff8acc}.card-pink:not(.card-outline)>.card-header,.card-pink:not(.card-outline)>.card-header a,.card-pink:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-pink.card-outline{border-top:3px solid #ff8acc}.card-pink.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-pink.card-outline-tabs>.card-header a.active{border-top:3px solid #ff8acc}.bg-gradient-pink .btn-tool,.bg-pink .btn-tool,.card-pink:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-pink .btn-tool:hover,.bg-pink .btn-tool:hover,.card-pink:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table th,.card.bg-pink .bootstrap-datetimepicker-widget .table td,.card.bg-pink .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#ff61ba;color:#2a2e30}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.today:before,.card.bg-pink .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.active,.card.bg-pink .bootstrap-datetimepicker-widget table td.active:hover{background:#ffbde2;color:#2a2e30}.card-red:not(.card-outline)>.card-header{background-color:#ea5455}.card-red:not(.card-outline)>.card-header,.card-red:not(.card-outline)>.card-header a{color:#fff}.card-red:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-red.card-outline{border-top:3px solid #ea5455}.card-red.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-red.card-outline-tabs>.card-header a.active{border-top:3px solid #ea5455}.bg-gradient-red .btn-tool,.bg-red .btn-tool,.card-red:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-red .btn-tool:hover,.bg-red .btn-tool:hover,.card-red:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-red .bootstrap-datetimepicker-widget .table th,.card.bg-red .bootstrap-datetimepicker-widget .table td,.card.bg-red .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e63031;color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.today:before,.card.bg-red .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.active,.card.bg-red .bootstrap-datetimepicker-widget table td.active:hover{background:#f08182;color:#fff}.card-orange:not(.card-outline)>.card-header{background-color:#dda451}.card-orange:not(.card-outline)>.card-header,.card-orange:not(.card-outline)>.card-header a,.card-orange:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-orange.card-outline{border-top:3px solid #dda451}.card-orange.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-orange.card-outline-tabs>.card-header a.active{border-top:3px solid #dda451}.bg-gradient-orange .btn-tool,.bg-orange .btn-tool,.card-orange:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-orange .btn-tool:hover,.bg-orange .btn-tool:hover,.card-orange:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table th,.card.bg-orange .bootstrap-datetimepicker-widget .table td,.card.bg-orange .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#d6922f;color:#2a2e30}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.today:before,.card.bg-orange .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.active,.card.bg-orange .bootstrap-datetimepicker-widget table td.active:hover{background:#e5ba7c;color:#2a2e30}.card-yellow:not(.card-outline)>.card-header{background-color:#edc30e}.card-yellow:not(.card-outline)>.card-header,.card-yellow:not(.card-outline)>.card-header a,.card-yellow:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-yellow.card-outline{border-top:3px solid #edc30e}.card-yellow.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-yellow.card-outline-tabs>.card-header a.active{border-top:3px solid #edc30e}.bg-gradient-yellow .btn-tool,.bg-yellow .btn-tool,.card-yellow:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-yellow .btn-tool:hover,.bg-yellow .btn-tool:hover,.card-yellow:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table th,.card.bg-yellow .bootstrap-datetimepicker-widget .table td,.card.bg-yellow .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#c6a30c;color:#2a2e30}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.today:before,.card.bg-yellow .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.active,.card.bg-yellow .bootstrap-datetimepicker-widget table td.active:hover{background:#f3d13b;color:#2a2e30}.card-green:not(.card-outline)>.card-header{background-color:#21b978}.card-green:not(.card-outline)>.card-header,.card-green:not(.card-outline)>.card-header a{color:#fff}.card-green:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-green.card-outline{border-top:3px solid #21b978}.card-green.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-green.card-outline-tabs>.card-header a.active{border-top:3px solid #21b978}.bg-gradient-green .btn-tool,.bg-green .btn-tool,.card-green:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-green .btn-tool:hover,.bg-green .btn-tool:hover,.card-green:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-green .bootstrap-datetimepicker-widget .table th,.card.bg-green .bootstrap-datetimepicker-widget .table td,.card.bg-green .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#1b9662;color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.today:before,.card.bg-green .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.active,.card.bg-green .bootstrap-datetimepicker-widget table td.active:hover{background:#32db93;color:#fff}.card-teal:not(.card-outline)>.card-header{background-color:#20c997}.card-teal:not(.card-outline)>.card-header,.card-teal:not(.card-outline)>.card-header a{color:#fff}.card-teal:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-teal.card-outline{border-top:3px solid #20c997}.card-teal.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-teal.card-outline-tabs>.card-header a.active{border-top:3px solid #20c997}.bg-gradient-teal .btn-tool,.bg-teal .btn-tool,.card-teal:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-teal .btn-tool:hover,.bg-teal .btn-tool:hover,.card-teal:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table th,.card.bg-teal .bootstrap-datetimepicker-widget .table td,.card.bg-teal .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#1aa67d;color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.today:before,.card.bg-teal .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.active,.card.bg-teal .bootstrap-datetimepicker-widget table td.active:hover{background:#3ce0af;color:#fff}.card-cyan:not(.card-outline)>.card-header{background-color:#7367f0}.card-cyan:not(.card-outline)>.card-header,.card-cyan:not(.card-outline)>.card-header a{color:#fff}.card-cyan:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-cyan.card-outline{border-top:3px solid #7367f0}.card-cyan.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-cyan.card-outline-tabs>.card-header a.active{border-top:3px solid #7367f0}.bg-cyan .btn-tool,.bg-gradient-cyan .btn-tool,.card-cyan:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-cyan .btn-tool:hover,.bg-gradient-cyan .btn-tool:hover,.card-cyan:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget .table td,.card.bg-cyan .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-cyan .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#5142ec;color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget table td.active,.card.bg-cyan .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active:hover{background:#9e95f5;color:#fff}.card-white:not(.card-outline)>.card-header{background-color:#fff}.card-white:not(.card-outline)>.card-header,.card-white:not(.card-outline)>.card-header a,.card-white:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-white.card-outline{border-top:3px solid #fff}.card-white.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-white.card-outline-tabs>.card-header a.active{border-top:3px solid #fff}.bg-gradient-white .btn-tool,.bg-white .btn-tool,.card-white:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-white .btn-tool:hover,.bg-white .btn-tool:hover,.card-white:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-white .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-white .bootstrap-datetimepicker-widget .table th,.card.bg-white .bootstrap-datetimepicker-widget .table td,.card.bg-white .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#ebebeb;color:#2a2e30}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.today:before,.card.bg-white .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.active,.card.bg-white .bootstrap-datetimepicker-widget table td.active:hover{background:#fff;color:#2a2e30}.card-gray:not(.card-outline)>.card-header{background-color:#b8c2cc}.card-gray:not(.card-outline)>.card-header,.card-gray:not(.card-outline)>.card-header a,.card-gray:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-gray.card-outline{border-top:3px solid #b8c2cc}.card-gray.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-gray.card-outline-tabs>.card-header a.active{border-top:3px solid #b8c2cc}.bg-gradient-gray .btn-tool,.bg-gray .btn-tool,.card-gray:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-gray .btn-tool:hover,.bg-gray .btn-tool:hover,.card-gray:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table th,.card.bg-gray .bootstrap-datetimepicker-widget .table td,.card.bg-gray .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#a0aebb;color:#2a2e30}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gray .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.active,.card.bg-gray .bootstrap-datetimepicker-widget table td.active:hover{background:#d6dce1;color:#2a2e30}.card-gray-dark:not(.card-outline)>.card-header{background-color:#1e1e1e}.card-gray-dark:not(.card-outline)>.card-header,.card-gray-dark:not(.card-outline)>.card-header a{color:#fff}.card-gray-dark:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-gray-dark.card-outline{border-top:3px solid #1e1e1e}.card-gray-dark.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-gray-dark.card-outline-tabs>.card-header a.active{border-top:3px solid #1e1e1e}.bg-gradient-gray-dark .btn-tool,.bg-gray-dark .btn-tool,.card-gray-dark:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-gray-dark .btn-tool:hover,.bg-gray-dark .btn-tool:hover,.card-gray-dark:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table th,.card.bg-gray-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gray-dark .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#0a0a0a;color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active:hover{background:#383838;color:#fff}.card{margin-bottom:3rem;border:0}.card.bg-dark .card-header{border-color:#42484b}.card.bg-dark,.card.bg-dark .card-body{color:#fff}.card.maximized-card{height:100%!important;left:0;max-height:100%!important;max-width:100%!important;position:fixed;top:0;width:100%!important;z-index:9999}.card.maximized-card.was-collapsed .card-body{display:block!important}.card.maximized-card [data-widget=collapse]{display:none}.card.maximized-card .card-footer,.card.maximized-card .card-header{border-radius:0!important}.card.collapsed-card .card-body,.card.collapsed-card .card-footer{display:none}.card .nav.flex-column>li{border-bottom:1px solid rgba(34,41,47,.125);margin:0}.card .nav.flex-column>li:last-of-type{border-bottom:0}.card.height-control .card-body{max-height:300px;overflow:auto}.card .border-right{border-right:1px solid rgba(34,41,47,.125)}.card .border-left{border-left:1px solid rgba(34,41,47,.125)}.card.card-tabs:not(.card-outline)>.card-header{border-bottom:0}.card.card-tabs:not(.card-outline)>.card-header .nav-item:first-child .nav-link{margin-left:-1px}.card.card-tabs.card-outline .nav-item{border-bottom:0}.card.card-tabs.card-outline .nav-item:first-child .nav-link{border-left:0;margin-left:0}.card.card-tabs .card-tools{margin:.3rem .5rem}.card.card-tabs:not(.expanding-card).collapsed-card .card-header,.card.card-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs{border-bottom:0}.card.card-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs .nav-item{margin-bottom:0}.card.card-tabs.expanding-card .card-header .nav-tabs .nav-item{margin-bottom:-1px}.card.card-outline-tabs{border-top:0}.card.card-outline-tabs .card-header .nav-item:first-child .nav-link{border-left:0;margin-left:0}.card.card-outline-tabs .card-header a{border-top:3px solid transparent}.card.card-outline-tabs .card-header a:hover{border-top:3px solid #dae1e7}.card.card-outline-tabs .card-header a.active:hover{margin-top:0}.card.card-outline-tabs .card-tools{margin:.5rem .5rem .3rem}.card.card-outline-tabs:not(.expanding-card).collapsed-card .card-header,.card.card-outline-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs{border-bottom:0}.card.card-outline-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs .nav-item{margin-bottom:0}.card.card-outline-tabs.expanding-card .card-header .nav-tabs .nav-item{margin-bottom:-1px}html.maximized-card{overflow:hidden}.card-header{background-color:transparent;border-bottom:0;padding:.75rem 1.25rem;position:relative;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.collapsed-card .card-header{border-bottom:0}.card-header>.card-tools{float:right;margin-right:-.625rem}.card-header>.card-tools .input-group,.card-header>.card-tools .nav,.card-header>.card-tools .pagination{margin-bottom:-.3rem;margin-top:-.3rem}.card-header>.card-tools [data-toggle=tooltip]{position:relative}.card-title{float:left;font-size:1.1rem;font-weight:400;margin:0}.card-text{clear:both}.btn-tool{background:transparent;color:#adb5bd;font-size:1rem;margin:-.75rem 0;padding:.25rem .5rem}.btn-group.show .btn-tool,.btn-tool:hover{color:#4e5154}.btn-tool:focus,.show .btn-tool{box-shadow:none!important}.text-sm .card-title{font-size:1rem}.text-sm .nav-link{padding:.4rem .8rem}.card-body>.table{margin-bottom:0}.card-body>.table>thead>tr>td,.card-body>.table>thead>tr>th{border-top-width:0}.card-body .fc{margin-top:5px}.card-body .full-width-chart{margin:-19px}.card-body.p-0 .full-width-chart{margin:-9px}.chart-legend{padding-left:0;list-style:none;margin:10px 0}@media (max-width:576px){.chart-legend>li{float:left;margin-right:10px}}.card-comments{background:#babfc7}.card-comments .card-comment{border-bottom:1px solid #ededed;padding:8px 0}.card-comments .card-comment:after{display:block;clear:both;content:\"\"}.card-comments .card-comment:last-of-type{border-bottom:0}.card-comments .card-comment:first-of-type{padding-top:0}.card-comments .card-comment img{height:1.875rem;width:1.875rem;float:left}.card-comments .comment-text{color:#7f8489;margin-left:40px}.card-comments .username{color:#4e5154;display:block;font-weight:600}.card-comments .text-muted{font-size:12px;font-weight:400}.todo-list{list-style:none;margin:0;overflow:auto;padding:0}.todo-list>li{border-radius:2px;background:#babfc7;border-left:2px solid #ededed;color:#4e5154;margin-bottom:2px;padding:10px}.todo-list>li:last-of-type{margin-bottom:0}.todo-list>li>input[type=checkbox]{margin:0 10px 0 5px}.todo-list>li .text{display:inline-block;font-weight:600;margin-left:5px}.todo-list>li .badge{font-size:.7rem;margin-left:10px}.todo-list>li .tools{color:#ea5455;display:none;float:right}.todo-list>li .tools>.fa,.todo-list>li .tools>.fab,.todo-list>li .tools>.far,.todo-list>li .tools>.fas,.todo-list>li .tools>.glyphicon,.todo-list>li .tools>.ion{cursor:pointer;margin-right:5px}.todo-list>li:hover .tools{display:inline-block}.todo-list>li.done{color:#697582}.todo-list>li.done .text{font-weight:500;text-decoration:line-through}.todo-list>li.done .badge{background:#adb5bd!important}.todo-list .primary{border-left-color:#4e9876}.todo-list .secondary{border-left-color:#b8c2cc}.todo-list .success{border-left-color:#21b978}.todo-list .info{border-left-color:#4277cf}.todo-list .warning{border-left-color:#dda451}.todo-list .danger{border-left-color:#ea5455}.todo-list .light{border-left-color:#f7f7f9}.todo-list .dark{border-left-color:#22292f}.todo-list .lightblue{border-left-color:#3c8dbc}.todo-list .navy{border-left-color:#001f3f}.todo-list .olive{border-left-color:#3d9970}.todo-list .lime{border-left-color:#01ff70}.todo-list .fuchsia{border-left-color:#f012be}.todo-list .maroon{border-left-color:#d81b60}.todo-list .blue{border-left-color:#3085d6}.todo-list .indigo{border-left-color:#5c6bc6}.todo-list .purple{border-left-color:#6f42c1}.todo-list .pink{border-left-color:#ff8acc}.todo-list .red{border-left-color:#ea5455}.todo-list .orange{border-left-color:#dda451}.todo-list .yellow{border-left-color:#edc30e}.todo-list .green{border-left-color:#21b978}.todo-list .teal{border-left-color:#20c997}.todo-list .cyan{border-left-color:#7367f0}.todo-list .white{border-left-color:#fff}.todo-list .gray{border-left-color:#b8c2cc}.todo-list .gray-dark{border-left-color:#1e1e1e}.todo-list .handle{cursor:move;display:inline-block;margin:0 5px}.card-input{max-width:200px}.card-default .nav-item:first-child .nav-link{border-left:0}.modal-dialog .overlay{background-color:#22292f;display:block;height:100%;left:0;opacity:.7;position:absolute;top:0;width:100%;z-index:1052}.modal-content.bg-warning .modal-footer,.modal-content.bg-warning .modal-header{border-color:#1e1e1e}.modal-content.bg-danger .close,.modal-content.bg-danger .mailbox-attachment-close,.modal-content.bg-info .close,.modal-content.bg-info .mailbox-attachment-close,.modal-content.bg-primary .close,.modal-content.bg-primary .mailbox-attachment-close,.modal-content.bg-secondary .close,.modal-content.bg-secondary .mailbox-attachment-close,.modal-content.bg-success .close,.modal-content.bg-success .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toasts-top-right{position:absolute;right:0;top:0;z-index:1040}.toasts-top-right.fixed{position:fixed}.toasts-top-left{left:0;position:absolute;top:0;z-index:1040}.toasts-top-left.fixed{position:fixed}.toasts-bottom-right{bottom:0;position:absolute;right:0;z-index:1040}.toasts-bottom-right.fixed{position:fixed}.toasts-bottom-left{bottom:0;left:0;position:absolute;z-index:1040}.toasts-bottom-left.fixed{position:fixed}.toast.bg-primary{background:rgba(78,152,118,.9)!important}.toast.bg-primary .close,.toast.bg-primary .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-primary .toast-header{background:rgba(78,152,118,.85);color:#fff}.toast.bg-secondary{background:rgba(184,194,204,.9)!important}.toast.bg-secondary .toast-header{background:rgba(184,194,204,.85);color:#2a2e30}.toast.bg-success{background:rgba(33,185,120,.9)!important}.toast.bg-success .close,.toast.bg-success .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-success .toast-header{background:rgba(33,185,120,.85);color:#fff}.toast.bg-info{background:rgba(66,119,207,.9)!important}.toast.bg-info .close,.toast.bg-info .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-info .toast-header{background:rgba(66,119,207,.85);color:#fff}.toast.bg-warning{background:rgba(221,164,81,.9)!important}.toast.bg-warning .toast-header{background:rgba(221,164,81,.85);color:#2a2e30}.toast.bg-danger{background:rgba(234,84,85,.9)!important}.toast.bg-danger .close,.toast.bg-danger .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-danger .toast-header{background:rgba(234,84,85,.85);color:#fff}.toast.bg-light{background:rgba(247,247,249,.9)!important}.toast.bg-light .toast-header{background:rgba(247,247,249,.85);color:#2a2e30}.toast.bg-dark{background:rgba(34,41,47,.9)!important}.toast.bg-dark .close,.toast.bg-dark .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-dark .toast-header{background:rgba(34,41,47,.85);color:#fff}.toast.bg-lightblue{background:rgba(60,141,188,.9)!important}.toast.bg-lightblue .close,.toast.bg-lightblue .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-lightblue .toast-header{background:rgba(60,141,188,.85);color:#fff}.toast.bg-navy{background:rgba(0,31,63,.9)!important}.toast.bg-navy .close,.toast.bg-navy .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-navy .toast-header{background:rgba(0,31,63,.85);color:#fff}.toast.bg-olive{background:rgba(61,153,112,.9)!important}.toast.bg-olive .close,.toast.bg-olive .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-olive .toast-header{background:rgba(61,153,112,.85);color:#fff}.toast.bg-lime{background:rgba(1,255,112,.9)!important}.toast.bg-lime .toast-header{background:rgba(1,255,112,.85);color:#2a2e30}.toast.bg-fuchsia{background:rgba(240,18,190,.9)!important}.toast.bg-fuchsia .close,.toast.bg-fuchsia .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-fuchsia .toast-header{background:rgba(240,18,190,.85);color:#fff}.toast.bg-maroon{background:rgba(216,27,96,.9)!important}.toast.bg-maroon .close,.toast.bg-maroon .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-maroon .toast-header{background:rgba(216,27,96,.85);color:#fff}.toast.bg-blue{background:rgba(48,133,214,.9)!important}.toast.bg-blue .close,.toast.bg-blue .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-blue .toast-header{background:rgba(48,133,214,.85);color:#fff}.toast.bg-indigo{background:rgba(92,107,198,.9)!important}.toast.bg-indigo .close,.toast.bg-indigo .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-indigo .toast-header{background:rgba(92,107,198,.85);color:#fff}.toast.bg-purple{background:rgba(111,66,193,.9)!important}.toast.bg-purple .close,.toast.bg-purple .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-purple .toast-header{background:rgba(111,66,193,.85);color:#fff}.toast.bg-pink{background:rgba(255,138,204,.9)!important}.toast.bg-pink .toast-header{background:rgba(255,138,204,.85);color:#2a2e30}.toast.bg-red{background:rgba(234,84,85,.9)!important}.toast.bg-red .close,.toast.bg-red .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-red .toast-header{background:rgba(234,84,85,.85);color:#fff}.toast.bg-orange{background:rgba(221,164,81,.9)!important}.toast.bg-orange .toast-header{background:rgba(221,164,81,.85);color:#2a2e30}.toast.bg-yellow{background:rgba(237,195,14,.9)!important}.toast.bg-yellow .toast-header{background:rgba(237,195,14,.85);color:#2a2e30}.toast.bg-green{background:rgba(33,185,120,.9)!important}.toast.bg-green .close,.toast.bg-green .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-green .toast-header{background:rgba(33,185,120,.85);color:#fff}.toast.bg-teal{background:rgba(32,201,151,.9)!important}.toast.bg-teal .close,.toast.bg-teal .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-teal .toast-header{background:rgba(32,201,151,.85);color:#fff}.toast.bg-cyan{background:rgba(115,103,240,.9)!important}.toast.bg-cyan .close,.toast.bg-cyan .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-cyan .toast-header{background:rgba(115,103,240,.85);color:#fff}.toast.bg-white{background:hsla(0,0%,100%,.9)!important}.toast.bg-white .toast-header{background:hsla(0,0%,100%,.85);color:#2a2e30}.toast.bg-gray{background:rgba(184,194,204,.9)!important}.toast.bg-gray .toast-header{background:rgba(184,194,204,.85);color:#2a2e30}.toast.bg-gray-dark{background:rgba(30,30,30,.9)!important}.toast.bg-gray-dark .close,.toast.bg-gray-dark .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-gray-dark .toast-header{background:rgba(30,30,30,.85);color:#fff}.btn{border-width:1px}.btn.disabled,.btn:disabled{cursor:not-allowed}.btn.btn-flat{border-radius:0;border-width:1px;box-shadow:none}.btn.btn-file{overflow:hidden;position:relative}.btn.btn-file>input[type=file]{background:#fff;cursor:inherit;display:block;font-size:100px;min-height:100%;min-width:100%;opacity:0;outline:none;position:absolute;right:0;text-align:right;top:0}.text-sm .btn{font-size:1rem!important}.btn-default{background-color:#babfc7;border-color:#babfc7;color:#444}.btn-default.hover,.btn-default:active,.btn-default:hover{background-color:#acb2bc;color:#2b2b2b}.btn-app{border-radius:3px;background-color:#babfc7;border:1px solid #ddd;color:#b8c2cc;font-size:12px;height:60px;margin:0 0 10px 10px;min-width:80px;padding:15px 5px;position:relative;text-align:center}.btn-app>.fa,.btn-app>.fab,.btn-app>.far,.btn-app>.fas,.btn-app>.glyphicon,.btn-app>.ion{display:block;font-size:20px}.btn-app:hover{background:#babfc7;border-color:#aaa;color:#444}.btn-app>.badge{font-size:10px;font-weight:400;position:absolute;right:-10px;top:-3px}.btn-xs{padding:.125rem .25rem;font-size:.75rem;border-radius:.15rem}.callout{border-radius:.5rem;background-color:#fff;border:1px solid #dae1e7;border-left:5px solid #ededed;margin-bottom:3rem;padding:1rem}.callout a{color:#4e5154;text-decoration:underline}.callout a:hover{color:#ededed}.callout p:last-child{margin-bottom:0}.callout.callout-danger{border-left-color:#e42728}.callout.callout-warning{border-left-color:#d28d29}.callout.callout-info{border-left-color:#2d5fb1}.callout.callout-success{border-left-color:#198e5c}.alert .icon{margin-right:10px}.alert .close,.alert .mailbox-attachment-close{color:#22292f;opacity:.2}.alert .close:hover,.alert .mailbox-attachment-close:hover{opacity:.5}.alert a{color:#fff;text-decoration:underline}.alert-primary{color:#fff;background:#4e9876;border-color:#458769}.alert-default-primary{color:#396354;background-color:#dceae4;border-color:#cde2d9}.alert-default-primary hr{border-top-color:#bdd9cd}.alert-default-primary .alert-link{color:#264339}.alert-secondary{color:#2a2e30;background:#b8c2cc;border-color:#a9b5c1}.alert-default-secondary{color:#707981;background-color:#f1f3f5;border-color:#ebeef1}.alert-default-secondary hr{border-top-color:#dce1e7}.alert-default-secondary .alert-link{color:#585f66}.alert-success{color:#fff;background:#21b978;border-color:#1da36a}.alert-default-success{color:#217455;background-color:#d3f1e4;border-color:#c1ebd9}.alert-default-success hr{border-top-color:#aee5cd}.alert-default-success .alert-link{color:#164c38}.alert-info{color:#fff;background:#4277cf;border-color:#3269c5}.alert-default-info{color:#335282;background-color:#d9e4f5;border-color:#cad9f2}.alert-default-info hr{border-top-color:#b6caed}.alert-default-info .alert-link{color:#253b5d}.alert-warning{color:#2a2e30;background:#dda451;border-color:#d9993c}.alert-default-warning{color:#836941;background-color:#f8eddc;border-color:#f5e6ce}.alert-default-warning hr{border-top-color:#f1dbb9}.alert-default-warning .alert-link{color:#614e30}.alert-danger{color:#fff;background:#ea5455;border-color:#e73d3e}.alert-default-danger{color:#8a3f43;background-color:#fbdddd;border-color:#f9cfcf}.alert-default-danger hr{border-top-color:#f6b8b8}.alert-default-danger .alert-link{color:#672f32}.alert-light{color:#2a2e30;background:#f7f7f9;border-color:#e8e8ee}.alert-default-light{color:#919498;background-color:#fdfdfe;border-color:#fdfdfd}.alert-default-light hr{border-top-color:#f0f0f0}.alert-default-light .alert-link{color:#777a7f}.alert-dark{color:#fff;background:#22292f;border-color:#171c20}.alert-default-dark{color:#22292f;background-color:#d3d4d5;border-color:#c1c3c5}.alert-default-dark hr{border-top-color:#b4b6b9}.alert-default-dark .alert-link{color:#0d0f11}.table:not(.table-dark){color:inherit}.table.table-head-fixed thead tr:first-child th{background-color:#fff;border-bottom:0;box-shadow:inset 0 1px 0 #eff1f7,inset 0 -1px 0 #eff1f7;position:-webkit-sticky;position:sticky;top:0;z-index:10}.table.table-head-fixed.table-dark thead tr:first-child th{background-color:#1e1e1e;box-shadow:inset 0 1px 0 #313131,inset 0 -1px 0 #313131}.table.no-border,.table.no-border td,.table.no-border th{border:0}.table.text-center,.table.text-center td,.table.text-center th{text-align:center}.table.table-valign-middle tbody>tr>td,.table.table-valign-middle tbody>tr>th,.table.table-valign-middle thead>tr>td,.table.table-valign-middle thead>tr>th{vertical-align:middle}.card-body.p-0 .table tbody>tr>td:first-of-type,.card-body.p-0 .table tbody>tr>th:first-of-type,.card-body.p-0 .table thead>tr>td:first-of-type,.card-body.p-0 .table thead>tr>th:first-of-type{padding-left:3.5rem}.card-body.p-0 .table tbody>tr>td:last-of-type,.card-body.p-0 .table tbody>tr>th:last-of-type,.card-body.p-0 .table thead>tr>td:last-of-type,.card-body.p-0 .table thead>tr>th:last-of-type{padding-right:3.5rem}.carousel-control.left,.carousel-control.right{background-image:none}.carousel-control>.fa,.carousel-control>.fab,.carousel-control>.far,.carousel-control>.fas,.carousel-control>.glyphicon,.carousel-control>.ion{display:inline-block;font-size:40px;margin-top:-20px;position:absolute;top:50%;z-index:5}.small-box{border-radius:.5rem;display:block;margin-bottom:20px;position:relative}.small-box>.inner{padding:10px}.small-box>.small-box-footer{background:rgba(34,41,47,.1);color:hsla(0,0%,100%,.8);display:block;padding:3px 0;position:relative;text-align:center;text-decoration:none;z-index:10}.small-box>.small-box-footer:hover{background:rgba(34,41,47,.15);color:#fff}.small-box h3{font-size:2.2rem;font-weight:700;margin:0 0 10px;padding:0;white-space:nowrap}@media (min-width:992px){.col-lg-2 .small-box h3,.col-lg-3 .small-box h3,.col-md-2 .small-box h3,.col-md-3 .small-box h3,.col-xl-2 .small-box h3,.col-xl-3 .small-box h3{font-size:1.6rem}}@media (min-width:1200px){.col-lg-2 .small-box h3,.col-lg-3 .small-box h3,.col-md-2 .small-box h3,.col-md-3 .small-box h3,.col-xl-2 .small-box h3,.col-xl-3 .small-box h3{font-size:2.2rem}}.small-box p{font-size:1rem}.small-box p>small{color:#babfc7;display:block;font-size:.9rem;margin-top:5px}.small-box h3,.small-box p{z-index:5}.small-box .icon{color:rgba(34,41,47,.15);z-index:0}.small-box .icon>i{font-size:90px;position:absolute;right:15px;top:15px;transition:all .3s linear}.small-box .icon>i.fa,.small-box .icon>i.fab,.small-box .icon>i.far,.small-box .icon>i.fas,.small-box .icon>i.glyphicon,.small-box .icon>i.ion{font-size:70px;top:20px}.small-box:hover{text-decoration:none}.small-box:hover .icon>i{font-size:95px}.small-box:hover .icon>i.fa,.small-box:hover .icon>i.fab,.small-box:hover .icon>i.far,.small-box:hover .icon>i.fas,.small-box:hover .icon>i.glyphicon,.small-box:hover .icon>i.ion{font-size:75px}@media (max-width:767.98px){.small-box{text-align:center}.small-box .icon{display:none}.small-box p{font-size:12px}}.info-box{border-radius:.5rem;background:#fff;display:flex;margin-bottom:3rem;min-height:80px;padding:.5rem;position:relative}.info-box .progress{background-color:rgba(34,41,47,.125);height:2px;margin:5px 0}.info-box .progress .progress-bar{background-color:#fff}.info-box .info-box-icon{border-radius:.5rem;align-items:center;display:flex;font-size:1.875rem;justify-content:center;text-align:center;width:70px}.info-box .info-box-icon>img{max-width:100%}.info-box .info-box-content{flex:1;padding:5px 10px}.info-box .info-box-number{display:block;font-weight:700}.info-box .info-box-text,.info-box .progress-description{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-box .info-box .bg-gradient-primary,.info-box .info-box .bg-primary{color:#fff}.info-box .info-box .bg-gradient-primary .progress-bar,.info-box .info-box .bg-primary .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-secondary,.info-box .info-box .bg-secondary{color:#2a2e30}.info-box .info-box .bg-gradient-secondary .progress-bar,.info-box .info-box .bg-secondary .progress-bar{background-color:#2a2e30}.info-box .info-box .bg-gradient-success,.info-box .info-box .bg-success{color:#fff}.info-box .info-box .bg-gradient-success .progress-bar,.info-box .info-box .bg-success .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-info,.info-box .info-box .bg-info{color:#fff}.info-box .info-box .bg-gradient-info .progress-bar,.info-box .info-box .bg-info .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-warning,.info-box .info-box .bg-warning{color:#2a2e30}.info-box .info-box .bg-gradient-warning .progress-bar,.info-box .info-box .bg-warning .progress-bar{background-color:#2a2e30}.info-box .info-box .bg-danger,.info-box .info-box .bg-gradient-danger{color:#fff}.info-box .info-box .bg-danger .progress-bar,.info-box .info-box .bg-gradient-danger .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-light,.info-box .info-box .bg-light{color:#2a2e30}.info-box .info-box .bg-gradient-light .progress-bar,.info-box .info-box .bg-light .progress-bar{background-color:#2a2e30}.info-box .info-box .bg-dark,.info-box .info-box .bg-gradient-dark{color:#fff}.info-box .info-box .bg-dark .progress-bar,.info-box .info-box .bg-gradient-dark .progress-bar{background-color:#fff}.info-box .info-box-more{display:block}.info-box .progress-description{margin:0}@media (min-width:768px){.col-lg-2 .info-box .progress-description,.col-lg-3 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-2 .info-box .progress-description,.col-xl-3 .info-box .progress-description{display:none}}@media (min-width:992px){.col-lg-2 .info-box .progress-description,.col-lg-3 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-2 .info-box .progress-description,.col-xl-3 .info-box .progress-description{font-size:.75rem;display:block}}@media (min-width:1200px){.col-lg-2 .info-box .progress-description,.col-lg-3 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-2 .info-box .progress-description,.col-xl-3 .info-box .progress-description{font-size:1rem;display:block}}.timeline{margin:0 0 45px;padding:0;position:relative}.timeline:before{border-radius:.5rem;background:#dae1e7;bottom:0;content:\"\";left:31px;margin:0;position:absolute;top:0;width:4px}.timeline>div{margin-bottom:15px;margin-right:10px;position:relative}.timeline>div:after,.timeline>div:before{content:\"\";display:table}.timeline>div>.timeline-item{border-radius:.5rem;background:#fff;color:#4e5154;margin-left:60px;margin-right:15px;margin-top:0;padding:0;position:relative}.timeline>div>.timeline-item>.time{color:#999;float:right;font-size:12px;padding:10px}.timeline>div>.timeline-item>.timeline-header{border-bottom:1px solid rgba(34,41,47,.125);color:#4e5154;font-size:16px;line-height:1.1;margin:0;padding:10px}.timeline>div>.timeline-item>.timeline-header>a{font-weight:600}.timeline>div>.timeline-item>.timeline-body,.timeline>div>.timeline-item>.timeline-footer{padding:10px}.timeline>div>.timeline-item>.timeline-body>img{margin:10px}.timeline>div>.timeline-item>.timeline-body>dl,.timeline>div>.timeline-item>.timeline-body ol,.timeline>div>.timeline-item>.timeline-body ul{margin:0}.timeline>div>.timeline-item>.timeline-footer>a{color:#fff}.timeline>div>.fa,.timeline>div>.fab,.timeline>div>.far,.timeline>div>.fas,.timeline>div>.glyphicon,.timeline>div>.ion{background:#adb5bd;border-radius:50%;font-size:15px;height:30px;left:18px;line-height:30px;position:absolute;text-align:center;top:0;width:30px}.timeline>.time-label>span{border-radius:4px;background-color:#fff;display:inline-block;font-weight:600;padding:5px}.timeline-inverse>div>.timeline-item{background:#babfc7;border:1px solid #dae1e7}.timeline-inverse>div>.timeline-item>.timeline-header{border-bottom-color:#dae1e7}.products-list{list-style:none;margin:0;padding:0}.products-list>.item{border-radius:.5rem;background:#fff;padding:10px 0}.products-list>.item:after{display:block;clear:both;content:\"\"}.products-list .product-img{float:left}.products-list .product-img img{height:50px;width:50px}.products-list .product-info{margin-left:60px}.products-list .product-title{font-weight:600}.products-list .product-description{color:#b8c2cc;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.product-list-in-card>.item{border-radius:0;border-bottom:1px solid rgba(34,41,47,.125)}.product-list-in-card>.item:last-of-type{border-bottom-width:0}.direct-chat .card-body{overflow-x:hidden;padding:0;position:relative}.direct-chat.chat-pane-open .direct-chat-contacts{transform:translate(0)}.direct-chat.timestamp-light .direct-chat-timestamp{color:#42484b}.direct-chat.timestamp-dark .direct-chat-timestamp{color:#ccc}.direct-chat-messages{transform:translate(0);height:250px;overflow:auto;padding:10px}.direct-chat-msg,.direct-chat-text{display:block}.direct-chat-msg{margin-bottom:10px}.direct-chat-msg:after{display:block;clear:both;content:\"\"}.direct-chat-contacts,.direct-chat-messages{transition:transform .5s ease-in-out}.direct-chat-text{border-radius:.6rem;background:#d2d6de;border:1px solid #d2d6de;color:#444;margin:5px 0 0 50px;padding:5px 10px;position:relative}.direct-chat-text:after,.direct-chat-text:before{border:solid transparent;border-right:solid #d2d6de;content:\" \";height:0;pointer-events:none;position:absolute;right:100%;top:15px;width:0}.direct-chat-text:after{border-width:5px;margin-top:-5px}.direct-chat-text:before{border-width:6px;margin-top:-6px}.right .direct-chat-text{margin-left:0;margin-right:50px}.right .direct-chat-text:after,.right .direct-chat-text:before{border-left-color:#d2d6de;border-right-color:transparent;left:100%;right:auto}.direct-chat-img{border-radius:50%;float:left;height:40px;width:40px}.right .direct-chat-img{float:right}.direct-chat-infos{display:block;font-size:1rem;margin-bottom:2px}.direct-chat-name{font-weight:600}.direct-chat-timestamp{color:#697582}.direct-chat-contacts-open .direct-chat-contacts{transform:translate(0)}.direct-chat-contacts{transform:translate(101%);background:#22292f;bottom:0;color:#fff;height:250px;overflow:auto;position:absolute;top:0;width:100%}.direct-chat-contacts-light{background:#f7f7f9}.direct-chat-contacts-light .contacts-list-name{color:#4e5154}.direct-chat-contacts-light .contacts-list-date{color:#b8c2cc}.direct-chat-contacts-light .contacts-list-msg{color:#9aa9b7}.contacts-list{padding-left:0;list-style:none}.contacts-list>li{border-bottom:1px solid rgba(34,41,47,.2);margin:0;padding:10px}.contacts-list>li:after{display:block;clear:both;content:\"\"}.contacts-list>li:last-of-type{border-bottom:0}.contacts-list-img{border-radius:50%;float:left;width:40px}.contacts-list-info{color:#fff;margin-left:45px}.contacts-list-name,.contacts-list-status{display:block}.contacts-list-name{font-weight:600}.contacts-list-status{font-size:1rem}.contacts-list-date{color:#636363;font-weight:400}.contacts-list-msg{color:#4a4a4a}.direct-chat-primary .right>.direct-chat-text{background:#4e9876;border-color:#4e9876;color:#fff}.direct-chat-primary .right>.direct-chat-text:after,.direct-chat-primary .right>.direct-chat-text:before{border-left-color:#4e9876}.direct-chat-secondary .right>.direct-chat-text{background:#b8c2cc;border-color:#b8c2cc;color:#2a2e30}.direct-chat-secondary .right>.direct-chat-text:after,.direct-chat-secondary .right>.direct-chat-text:before{border-left-color:#b8c2cc}.direct-chat-success .right>.direct-chat-text{background:#21b978;border-color:#21b978;color:#fff}.direct-chat-success .right>.direct-chat-text:after,.direct-chat-success .right>.direct-chat-text:before{border-left-color:#21b978}.direct-chat-info .right>.direct-chat-text{background:#4277cf;border-color:#4277cf;color:#fff}.direct-chat-info .right>.direct-chat-text:after,.direct-chat-info .right>.direct-chat-text:before{border-left-color:#4277cf}.direct-chat-warning .right>.direct-chat-text{background:#dda451;border-color:#dda451;color:#2a2e30}.direct-chat-warning .right>.direct-chat-text:after,.direct-chat-warning .right>.direct-chat-text:before{border-left-color:#dda451}.direct-chat-danger .right>.direct-chat-text{background:#ea5455;border-color:#ea5455;color:#fff}.direct-chat-danger .right>.direct-chat-text:after,.direct-chat-danger .right>.direct-chat-text:before{border-left-color:#ea5455}.direct-chat-light .right>.direct-chat-text{background:#f7f7f9;border-color:#f7f7f9;color:#2a2e30}.direct-chat-light .right>.direct-chat-text:after,.direct-chat-light .right>.direct-chat-text:before{border-left-color:#f7f7f9}.direct-chat-dark .right>.direct-chat-text{background:#22292f;border-color:#22292f;color:#fff}.direct-chat-dark .right>.direct-chat-text:after,.direct-chat-dark .right>.direct-chat-text:before{border-left-color:#22292f}.direct-chat-lightblue .right>.direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff}.direct-chat-lightblue .right>.direct-chat-text:after,.direct-chat-lightblue .right>.direct-chat-text:before{border-left-color:#3c8dbc}.direct-chat-navy .right>.direct-chat-text{background:#001f3f;border-color:#001f3f;color:#fff}.direct-chat-navy .right>.direct-chat-text:after,.direct-chat-navy .right>.direct-chat-text:before{border-left-color:#001f3f}.direct-chat-olive .right>.direct-chat-text{background:#3d9970;border-color:#3d9970;color:#fff}.direct-chat-olive .right>.direct-chat-text:after,.direct-chat-olive .right>.direct-chat-text:before{border-left-color:#3d9970}.direct-chat-lime .right>.direct-chat-text{background:#01ff70;border-color:#01ff70;color:#2a2e30}.direct-chat-lime .right>.direct-chat-text:after,.direct-chat-lime .right>.direct-chat-text:before{border-left-color:#01ff70}.direct-chat-fuchsia .right>.direct-chat-text{background:#f012be;border-color:#f012be;color:#fff}.direct-chat-fuchsia .right>.direct-chat-text:after,.direct-chat-fuchsia .right>.direct-chat-text:before{border-left-color:#f012be}.direct-chat-maroon .right>.direct-chat-text{background:#d81b60;border-color:#d81b60;color:#fff}.direct-chat-maroon .right>.direct-chat-text:after,.direct-chat-maroon .right>.direct-chat-text:before{border-left-color:#d81b60}.direct-chat-blue .right>.direct-chat-text{background:#3085d6;border-color:#3085d6;color:#fff}.direct-chat-blue .right>.direct-chat-text:after,.direct-chat-blue .right>.direct-chat-text:before{border-left-color:#3085d6}.direct-chat-indigo .right>.direct-chat-text{background:#5c6bc6;border-color:#5c6bc6;color:#fff}.direct-chat-indigo .right>.direct-chat-text:after,.direct-chat-indigo .right>.direct-chat-text:before{border-left-color:#5c6bc6}.direct-chat-purple .right>.direct-chat-text{background:#6f42c1;border-color:#6f42c1;color:#fff}.direct-chat-purple .right>.direct-chat-text:after,.direct-chat-purple .right>.direct-chat-text:before{border-left-color:#6f42c1}.direct-chat-pink .right>.direct-chat-text{background:#ff8acc;border-color:#ff8acc;color:#2a2e30}.direct-chat-pink .right>.direct-chat-text:after,.direct-chat-pink .right>.direct-chat-text:before{border-left-color:#ff8acc}.direct-chat-red .right>.direct-chat-text{background:#ea5455;border-color:#ea5455;color:#fff}.direct-chat-red .right>.direct-chat-text:after,.direct-chat-red .right>.direct-chat-text:before{border-left-color:#ea5455}.direct-chat-orange .right>.direct-chat-text{background:#dda451;border-color:#dda451;color:#2a2e30}.direct-chat-orange .right>.direct-chat-text:after,.direct-chat-orange .right>.direct-chat-text:before{border-left-color:#dda451}.direct-chat-yellow .right>.direct-chat-text{background:#edc30e;border-color:#edc30e;color:#2a2e30}.direct-chat-yellow .right>.direct-chat-text:after,.direct-chat-yellow .right>.direct-chat-text:before{border-left-color:#edc30e}.direct-chat-green .right>.direct-chat-text{background:#21b978;border-color:#21b978;color:#fff}.direct-chat-green .right>.direct-chat-text:after,.direct-chat-green .right>.direct-chat-text:before{border-left-color:#21b978}.direct-chat-teal .right>.direct-chat-text{background:#20c997;border-color:#20c997;color:#fff}.direct-chat-teal .right>.direct-chat-text:after,.direct-chat-teal .right>.direct-chat-text:before{border-left-color:#20c997}.direct-chat-cyan .right>.direct-chat-text{background:#7367f0;border-color:#7367f0;color:#fff}.direct-chat-cyan .right>.direct-chat-text:after,.direct-chat-cyan .right>.direct-chat-text:before{border-left-color:#7367f0}.direct-chat-white .right>.direct-chat-text{background:#fff;border-color:#fff;color:#2a2e30}.direct-chat-white .right>.direct-chat-text:after,.direct-chat-white .right>.direct-chat-text:before{border-left-color:#fff}.direct-chat-gray .right>.direct-chat-text{background:#b8c2cc;border-color:#b8c2cc;color:#2a2e30}.direct-chat-gray .right>.direct-chat-text:after,.direct-chat-gray .right>.direct-chat-text:before{border-left-color:#b8c2cc}.direct-chat-gray-dark .right>.direct-chat-text{background:#1e1e1e;border-color:#1e1e1e;color:#fff}.direct-chat-gray-dark .right>.direct-chat-text:after,.direct-chat-gray-dark .right>.direct-chat-text:before{border-left-color:#1e1e1e}.users-list{padding-left:0;list-style:none}.users-list>li{float:left;padding:10px;text-align:center;width:25%}.users-list>li img{border-radius:50%;height:auto;max-width:100%}.users-list>li>a:hover,.users-list>li>a:hover .users-list-name{color:#999}.users-list-date,.users-list-name{display:block}.users-list-name{color:#4e5154;font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.users-list-date{color:#748290;font-size:12px}.card-widget{border:0;position:relative}.widget-user .widget-user-header{border-top-left-radius:.5rem;border-top-right-radius:.5rem;height:135px;padding:1rem;text-align:center}.widget-user .widget-user-username{font-size:25px;font-weight:300;margin-bottom:0;margin-top:0;text-shadow:0 1px 1px rgba(34,41,47,.2)}.widget-user .widget-user-desc{margin-top:0}.widget-user .widget-user-image{left:50%;margin-left:-45px;position:absolute;top:80px}.widget-user .widget-user-image>img{border:3px solid #fff;height:auto;width:90px}.widget-user .card-footer{padding-top:50px}.widget-user-2 .widget-user-header{border-top-left-radius:.5rem;border-top-right-radius:.5rem;padding:1rem}.widget-user-2 .widget-user-username{font-size:25px;font-weight:300;margin-bottom:5px;margin-top:5px}.widget-user-2 .widget-user-desc{margin-top:0}.widget-user-2 .widget-user-desc,.widget-user-2 .widget-user-username{margin-left:75px}.widget-user-2 .widget-user-image>img{float:left;height:auto;width:65px}.mailbox-messages>.table{margin:0}.mailbox-controls{padding:5px}.mailbox-controls.with-border,.mailbox-read-info{border-bottom:1px solid rgba(34,41,47,.125)}.mailbox-read-info{padding:10px}.mailbox-read-info h3{font-size:20px;margin:0}.mailbox-read-info h5{margin:0;padding:5px 0 0}.mailbox-read-time{color:#999;font-size:13px}.mailbox-read-message{padding:10px}.mailbox-attachments{padding-left:0;list-style:none}.mailbox-attachments li{border:1px solid #eee;float:left;margin-bottom:10px;margin-right:10px;width:200px}.mailbox-attachment-name{color:#666;font-weight:700}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block}.mailbox-attachment-info{background:#babfc7;padding:10px}.mailbox-attachment-size{color:#999;font-size:12px}.mailbox-attachment-size>span{display:inline-block;padding-top:.75rem}.mailbox-attachment-icon{color:#666;font-size:65px;max-height:132.5px;padding:20px 10px;text-align:center}.mailbox-attachment-icon.has-img{padding:0}.mailbox-attachment-icon.has-img>img{height:auto;max-width:100%}.lockscreen{background:#ededed}.lockscreen .lockscreen-name{font-weight:600;text-align:center}.lockscreen-logo{font-size:35px;font-weight:300;margin-bottom:25px;text-align:center}.lockscreen-logo a{color:#4e5154}.lockscreen-wrapper{margin:10% auto 0;max-width:400px}.lockscreen-item{border-radius:4px;background:#fff;margin:10px auto 30px;padding:0;position:relative;width:290px}.lockscreen-image{border-radius:50%;background:#fff;left:-10px;padding:5px;position:absolute;top:-25px;z-index:10}.lockscreen-image>img{border-radius:50%;height:70px;width:70px}.lockscreen-credentials{margin-left:70px}.lockscreen-credentials .form-control{border:0}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px}.lockscreen-footer{margin-top:10px}.login-logo,.register-logo{font-size:2.1rem;font-weight:300;margin-bottom:.9rem;text-align:center}.login-logo a,.register-logo a{color:#4e5154}.login-page,.register-page{align-items:center;background:#ededed;display:flex;flex-direction:column;height:100vh;justify-content:center}.login-box,.register-box{width:360px}@media (max-width:576px){.login-box,.register-box{margin-top:.5rem;width:90%}}.login-card-body,.register-card-body{background:#fff;border-top:0;color:#666;padding:20px}.login-card-body .input-group .form-control,.register-card-body .input-group .form-control{border-right:0}.login-card-body .input-group .form-control:focus,.register-card-body .input-group .form-control:focus{box-shadow:none}.login-card-body .input-group .form-control:focus~.input-group-append .input-group-text,.register-card-body .input-group .form-control:focus~.input-group-append .input-group-text{border-color:#4e9876}.login-card-body .input-group .form-control.is-valid:focus,.register-card-body .input-group .form-control.is-valid:focus{box-shadow:none}.login-card-body .input-group .form-control.is-valid~.input-group-append .input-group-text,.register-card-body .input-group .form-control.is-valid~.input-group-append .input-group-text{border-color:#21b978}.login-card-body .input-group .form-control.is-invalid:focus,.register-card-body .input-group .form-control.is-invalid:focus{box-shadow:none}.login-card-body .input-group .form-control.is-invalid~.input-group-append .input-group-text,.register-card-body .input-group .form-control.is-invalid~.input-group-append .input-group-text{border-color:#ea5455}.login-card-body .input-group .input-group-text,.register-card-body .input-group .input-group-text{background-color:transparent;border-bottom-right-radius:.5rem;border-left:0;border-top-right-radius:.5rem;color:#777;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.login-box-msg,.register-box-msg{margin:0;padding:0 20px 20px;text-align:center}.social-auth-links{margin:10px 0}.error-page{margin:20px auto 0;width:600px}@media (max-width:767.98px){.error-page{width:100%}}.error-page>.headline{float:left;font-size:100px;font-weight:300}@media (max-width:767.98px){.error-page>.headline{float:none;text-align:center}}.error-page>.error-content{display:block;margin-left:190px}@media (max-width:767.98px){.error-page>.error-content{margin-left:0}}.error-page>.error-content>h3{font-size:25px;font-weight:300}@media (max-width:767.98px){.error-page>.error-content>h3{text-align:center}}.invoice{background:#fff;border:1px solid rgba(34,41,47,.125);position:relative}.invoice-title{margin-top:0}.profile-user-img{border:3px solid #adb5bd;margin:0 auto;padding:3px;width:100px}.profile-username{font-size:21px;margin-top:5px}.post{border-bottom:1px solid #adb5bd;color:#666;margin-bottom:15px;padding-bottom:15px}.post:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0}.post .user-block{margin-bottom:15px;width:100%}.post .row{width:100%}.product-image{max-width:100%;height:auto;width:100%}.product-image-thumbs{align-items:stretch;display:flex;margin-top:2rem}.product-image-thumb{border-radius:.5rem;background-color:#eff1f7;border:1px solid #dae1e7;display:flex;margin-right:1rem;max-width:7rem;padding:.5rem}.product-image-thumb img{max-width:100%;height:auto;align-self:center}.product-image-thumb:hover{opacity:.5}.product-share a{margin-right:.5rem}.projects td{vertical-align:middle}.projects .list-inline{margin-bottom:0}.projects .table-avatar img,.projects img.table-avatar{border-radius:50%;display:inline;width:2.5rem}.projects .project-state{text-align:center}.fc-button{background:#babfc7;background-image:none;border-color:#ddd;color:#4e5154}.fc-button.hover,.fc-button:active,.fc-button:hover{background-color:#e9e9e9}.fc-header-title h2{color:#666;font-size:15px;line-height:1.6em;margin-left:10px}.fc-header-right{padding-right:10px}.fc-header-left{padding-left:10px}.fc-widget-header{background:#fafafa}.fc-grid{border:0;width:100%}.fc-widget-content:first-of-type,.fc-widget-header:first-of-type{border-left:0;border-right:0}.fc-widget-content:last-of-type,.fc-widget-header:last-of-type{border-right:0}.fc-toolbar,.fc-toolbar.fc-header-toolbar{margin:0;padding:1rem}@media (max-width:575.98px){.fc-toolbar{flex-direction:column}.fc-toolbar .fc-left{order:1;margin-bottom:.5rem}.fc-toolbar .fc-center{order:0;margin-bottom:.375rem}.fc-toolbar .fc-right{order:2}}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px}.fc-color-picker{list-style:none;margin:0;padding:0}.fc-color-picker>li{float:left;font-size:30px;line-height:30px;margin-right:5px}.fc-color-picker>li .fa,.fc-color-picker>li .fab,.fc-color-picker>li .far,.fc-color-picker>li .fas,.fc-color-picker>li .glyphicon,.fc-color-picker>li .ion{transition:transform .3s linear}.fc-color-picker>li .fa:hover,.fc-color-picker>li .fab:hover,.fc-color-picker>li .far:hover,.fc-color-picker>li .fas:hover,.fc-color-picker>li .glyphicon:hover,.fc-color-picker>li .ion:hover{transform:rotate(30deg)}#add-new-event{transition:all .3s linear}.external-event{border-radius:.5rem;cursor:move;font-weight:700;margin-bottom:4px;padding:5px 10px}.select2-container--default .select2-selection--single{border:1px solid rgba(0,0,0,.2);padding:.875rem .7rem;height:34px}.select2-container--default.select2-container--open .select2-selection--single{border-color:#9acbb5}.select2-container--default .select2-dropdown{border:1px solid rgba(0,0,0,.2)}.select2-container--default .select2-results__option{padding:6px 12px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container--default .select2-selection--single .select2-selection__rendered{padding-left:0;height:auto;margin-top:-3px}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:31px;right:6px}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0}.select2-container--default .select2-dropdown .select2-search__field,.select2-container--default .select2-search--inline .select2-search__field{border:1px solid rgba(0,0,0,.2)}.select2-container--default .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-search--inline .select2-search__field:focus{outline:none;border:1px solid #4e9876}.select2-container--default .select2-dropdown.select2-dropdown--below{border-top:0}.select2-container--default .select2-dropdown.select2-dropdown--above{border-bottom:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#b8c2cc}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#dae1e7}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#2a2e30}.select2-container--default .select2-results__option--highlighted{background-color:#4e9876;color:#fff}.select2-container--default .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#498e6e;color:#fff}.select2-container--default .select2-selection--multiple{border:1px solid rgba(0,0,0,.2);min-height:34px}.select2-container--default .select2-selection--multiple:focus{border-color:#4e9876}.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .35rem .7rem;margin-bottom:-.35rem}.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline{width:100%;margin-left:.35rem}.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline .select2-search__field{width:100%!important}.select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field{border:0;margin-top:6px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#4e9876;border-color:#458769;color:#fff;padding:0 10px;margin-top:.31rem}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7);float:right;margin-left:5px;margin-right:-2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-selection--multiple.text-sm .select2-search.select2-search--inline .select2-search__field,.text-sm .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline .select2-search__field{margin-top:8px}.select2-container--default .select2-selection--multiple.text-sm .select2-selection__choice,.text-sm .select2-container--default .select2-selection--multiple .select2-selection__choice{margin-top:.4rem}.select2-container--default.select2-container--focus .select2-selection--multiple,.select2-container--default.select2-container--focus .select2-selection--single{border-color:#4e9876}.select2-container--default.select2-container--focus .select2-search__field{border:0}.select2-container--default .select2-selection--single .select2-selection__rendered li{padding-right:10px}.input-group-prepend~.select2-container--default .select2-selection{border-bottom-left-radius:0;border-top-left-radius:0}.input-group>.select2-container--default:not(:last-child) .select2-selection{border-bottom-right-radius:0;border-top-right-radius:0}.select2-container--bootstrap4.select2-container--focus .select2-selection{box-shadow:none}select.form-control-sm~.select2-container--default{font-size:1rem}.text-sm .select2-container--default .select2-selection--single,select.form-control-sm~.select2-container--default .select2-selection--single{height:2rem}.text-sm .select2-container--default .select2-selection--single .select2-selection__rendered,select.form-control-sm~.select2-container--default .select2-selection--single .select2-selection__rendered{margin-top:-.4rem}.text-sm .select2-container--default .select2-selection--single .select2-selection__arrow,select.form-control-sm~.select2-container--default .select2-selection--single .select2-selection__arrow{top:-.12rem}.text-sm .select2-container--default .select2-selection--multiple,select.form-control-sm~.select2-container--default .select2-selection--multiple{min-height:2rem}.text-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered,select.form-control-sm~.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .75rem .5rem;margin-top:-.3rem}.text-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline,select.form-control-sm~.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline{margin-left:.75rem}.text-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field,select.form-control-sm~.select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field{margin-top:6px}.select2-primary+.select2-container--default.select2-container--focus .select2-selection--single,.select2-primary+.select2-container--default.select2-container--open .select2-selection--single{border-color:#9acbb5}.select2-container--default .select2-primary.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-primary .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-primary .select2-search--inline .select2-search__field:focus,.select2-primary .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-primary .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-primary .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #9acbb5}.select2-container--default .select2-primary .select2-results__option--highlighted,.select2-primary .select2-container--default .select2-results__option--highlighted{background-color:#4e9876;color:#fff}.select2-container--default .select2-primary .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-primary .select2-results__option--highlighted[aria-selected]:hover,.select2-primary .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-primary .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#498e6e;color:#fff}.select2-container--default .select2-primary .select2-selection--multiple:focus,.select2-primary .select2-container--default .select2-selection--multiple:focus{border-color:#9acbb5}.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice,.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#4e9876;border-color:#458769;color:#fff}.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice__remove,.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-primary.select2-container--focus .select2-selection--multiple,.select2-primary .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#9acbb5}.select2-secondary+.select2-container--default.select2-container--focus .select2-selection--single,.select2-secondary+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-secondary.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-secondary .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-secondary .select2-search--inline .select2-search__field:focus,.select2-secondary .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-secondary .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-secondary .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-secondary .select2-results__option--highlighted,.select2-secondary .select2-container--default .select2-results__option--highlighted{background-color:#b8c2cc;color:#2a2e30}.select2-container--default .select2-secondary .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-secondary .select2-results__option--highlighted[aria-selected]:hover,.select2-secondary .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-secondary .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#afbac6;color:#2a2e30}.select2-container--default .select2-secondary .select2-selection--multiple:focus,.select2-secondary .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice,.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#b8c2cc;border-color:#a9b5c1;color:#2a2e30}.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice__remove,.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-secondary.select2-container--focus .select2-selection--multiple,.select2-secondary .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-success+.select2-container--default.select2-container--focus .select2-selection--single,.select2-success+.select2-container--default.select2-container--open .select2-selection--single{border-color:#73e6b5}.select2-container--default .select2-success.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-success .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-success .select2-search--inline .select2-search__field:focus,.select2-success .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-success .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-success .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #73e6b5}.select2-container--default .select2-success .select2-results__option--highlighted,.select2-success .select2-container--default .select2-results__option--highlighted{background-color:#21b978;color:#fff}.select2-container--default .select2-success .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-success .select2-results__option--highlighted[aria-selected]:hover,.select2-success .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-success .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1fac70;color:#fff}.select2-container--default .select2-success .select2-selection--multiple:focus,.select2-success .select2-container--default .select2-selection--multiple:focus{border-color:#73e6b5}.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice,.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#21b978;border-color:#1da36a;color:#fff}.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice__remove,.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-success.select2-container--focus .select2-selection--multiple,.select2-success .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#73e6b5}.select2-info+.select2-container--default.select2-container--focus .select2-selection--single,.select2-info+.select2-container--default.select2-container--open .select2-selection--single{border-color:#a8c0e9}.select2-container--default .select2-info.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-info .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-info .select2-search--inline .select2-search__field:focus,.select2-info .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-info .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-info .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #a8c0e9}.select2-container--default .select2-info .select2-results__option--highlighted,.select2-info .select2-container--default .select2-results__option--highlighted{background-color:#4277cf;color:#fff}.select2-container--default .select2-info .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-info .select2-results__option--highlighted[aria-selected]:hover,.select2-info .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-info .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#366ecc;color:#fff}.select2-container--default .select2-info .select2-selection--multiple:focus,.select2-info .select2-container--default .select2-selection--multiple:focus{border-color:#a8c0e9}.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice,.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#4277cf;border-color:#3269c5;color:#fff}.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice__remove,.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-info.select2-container--focus .select2-selection--multiple,.select2-info .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#a8c0e9}.select2-warning+.select2-container--default.select2-container--focus .select2-selection--single,.select2-warning+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f2dcbc}.select2-container--default .select2-warning.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-warning .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-warning .select2-search--inline .select2-search__field:focus,.select2-warning .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-warning .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-warning .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f2dcbc}.select2-container--default .select2-warning .select2-results__option--highlighted,.select2-warning .select2-container--default .select2-results__option--highlighted{background-color:#dda451;color:#2a2e30}.select2-container--default .select2-warning .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-warning .select2-results__option--highlighted[aria-selected]:hover,.select2-warning .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-warning .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#da9d44;color:#2a2e30}.select2-container--default .select2-warning .select2-selection--multiple:focus,.select2-warning .select2-container--default .select2-selection--multiple:focus{border-color:#f2dcbc}.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice,.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#dda451;border-color:#d9993c;color:#2a2e30}.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice__remove,.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-warning.select2-container--focus .select2-selection--multiple,.select2-warning .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f2dcbc}.select2-danger+.select2-container--default.select2-container--focus .select2-selection--single,.select2-danger+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f8c6c6}.select2-container--default .select2-danger.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-danger .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-danger .select2-search--inline .select2-search__field:focus,.select2-danger .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-danger .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-danger .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f8c6c6}.select2-container--default .select2-danger .select2-results__option--highlighted,.select2-danger .select2-container--default .select2-results__option--highlighted{background-color:#ea5455;color:#fff}.select2-container--default .select2-danger .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-danger .select2-results__option--highlighted[aria-selected]:hover,.select2-danger .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-danger .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#e84647;color:#fff}.select2-container--default .select2-danger .select2-selection--multiple:focus,.select2-danger .select2-container--default .select2-selection--multiple:focus{border-color:#f8c6c6}.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice,.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ea5455;border-color:#e73d3e;color:#fff}.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice__remove,.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-danger.select2-container--focus .select2-selection--multiple,.select2-danger .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f8c6c6}.select2-light+.select2-container--default.select2-container--focus .select2-selection--single,.select2-light+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-light.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-light .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-light .select2-search--inline .select2-search__field:focus,.select2-light .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-light .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-light .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-light .select2-results__option--highlighted,.select2-light .select2-container--default .select2-results__option--highlighted{background-color:#f7f7f9;color:#2a2e30}.select2-container--default .select2-light .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-light .select2-results__option--highlighted[aria-selected]:hover,.select2-light .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-light .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#eeeef2;color:#2a2e30}.select2-container--default .select2-light .select2-selection--multiple:focus,.select2-light .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice,.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#f7f7f9;border-color:#e8e8ee;color:#2a2e30}.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice__remove,.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-light.select2-container--focus .select2-selection--multiple,.select2-light .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-dark+.select2-container--default.select2-container--focus .select2-selection--single,.select2-dark+.select2-container--default.select2-container--open .select2-selection--single{border-color:#586a79}.select2-container--default .select2-dark.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-dark .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-dark .select2-search--inline .select2-search__field:focus,.select2-dark .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-dark .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-dark .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #586a79}.select2-container--default .select2-dark .select2-results__option--highlighted,.select2-dark .select2-container--default .select2-results__option--highlighted{background-color:#22292f;color:#fff}.select2-container--default .select2-dark .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-dark .select2-results__option--highlighted[aria-selected]:hover,.select2-dark .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-dark .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1c2126;color:#fff}.select2-container--default .select2-dark .select2-selection--multiple:focus,.select2-dark .select2-container--default .select2-selection--multiple:focus{border-color:#586a79}.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice,.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#22292f;border-color:#171c20;color:#fff}.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice__remove,.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-dark.select2-container--focus .select2-selection--multiple,.select2-dark .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#586a79}.select2-lightblue+.select2-container--default.select2-container--focus .select2-selection--single,.select2-lightblue+.select2-container--default.select2-container--open .select2-selection--single{border-color:#99c5de}.select2-container--default .select2-lightblue.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lightblue .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lightblue .select2-search--inline .select2-search__field:focus,.select2-lightblue .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-lightblue .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-lightblue .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #99c5de}.select2-container--default .select2-lightblue .select2-results__option--highlighted,.select2-lightblue .select2-container--default .select2-results__option--highlighted{background-color:#3c8dbc;color:#fff}.select2-container--default .select2-lightblue .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-lightblue .select2-results__option--highlighted[aria-selected]:hover,.select2-lightblue .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-lightblue .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#3884b0;color:#fff}.select2-container--default .select2-lightblue .select2-selection--multiple:focus,.select2-lightblue .select2-container--default .select2-selection--multiple:focus{border-color:#99c5de}.select2-container--default .select2-lightblue .select2-selection--multiple .select2-selection__choice,.select2-lightblue .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;color:#fff}.select2-container--default .select2-lightblue .select2-selection--multiple .select2-selection__choice__remove,.select2-lightblue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-lightblue .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-lightblue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-lightblue.select2-container--focus .select2-selection--multiple,.select2-lightblue .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#99c5de}.select2-navy+.select2-container--default.select2-container--focus .select2-selection--single,.select2-navy+.select2-container--default.select2-container--open .select2-selection--single{border-color:#005ebf}.select2-container--default .select2-navy.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-navy .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-navy .select2-search--inline .select2-search__field:focus,.select2-navy .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-navy .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-navy .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #005ebf}.select2-container--default .select2-navy .select2-results__option--highlighted,.select2-navy .select2-container--default .select2-results__option--highlighted{background-color:#001f3f;color:#fff}.select2-container--default .select2-navy .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-navy .select2-results__option--highlighted[aria-selected]:hover,.select2-navy .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-navy .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#001730;color:#fff}.select2-container--default .select2-navy .select2-selection--multiple:focus,.select2-navy .select2-container--default .select2-selection--multiple:focus{border-color:#005ebf}.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice,.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#001f3f;border-color:#001226;color:#fff}.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice__remove,.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-navy.select2-container--focus .select2-selection--multiple,.select2-navy .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#005ebf}.select2-olive+.select2-container--default.select2-container--focus .select2-selection--single,.select2-olive+.select2-container--default.select2-container--open .select2-selection--single{border-color:#87cfaf}.select2-container--default .select2-olive.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-olive .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-olive .select2-search--inline .select2-search__field:focus,.select2-olive .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-olive .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-olive .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #87cfaf}.select2-container--default .select2-olive .select2-results__option--highlighted,.select2-olive .select2-container--default .select2-results__option--highlighted{background-color:#3d9970;color:#fff}.select2-container--default .select2-olive .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-olive .select2-results__option--highlighted[aria-selected]:hover,.select2-olive .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-olive .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#398e68;color:#fff}.select2-container--default .select2-olive .select2-selection--multiple:focus,.select2-olive .select2-container--default .select2-selection--multiple:focus{border-color:#87cfaf}.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice,.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3d9970;border-color:#368763;color:#fff}.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice__remove,.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-olive.select2-container--focus .select2-selection--multiple,.select2-olive .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#87cfaf}.select2-lime+.select2-container--default.select2-container--focus .select2-selection--single,.select2-lime+.select2-container--default.select2-container--open .select2-selection--single{border-color:#81ffb8}.select2-container--default .select2-lime.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lime .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lime .select2-search--inline .select2-search__field:focus,.select2-lime .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-lime .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-lime .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #81ffb8}.select2-container--default .select2-lime .select2-results__option--highlighted,.select2-lime .select2-container--default .select2-results__option--highlighted{background-color:#01ff70;color:#2a2e30}.select2-container--default .select2-lime .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-lime .select2-results__option--highlighted[aria-selected]:hover,.select2-lime .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-lime .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#00f169;color:#2a2e30}.select2-container--default .select2-lime .select2-selection--multiple:focus,.select2-lime .select2-container--default .select2-selection--multiple:focus{border-color:#81ffb8}.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice,.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#01ff70;border-color:#00e765;color:#2a2e30}.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice__remove,.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-lime.select2-container--focus .select2-selection--multiple,.select2-lime .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#81ffb8}.select2-fuchsia+.select2-container--default.select2-container--focus .select2-selection--single,.select2-fuchsia+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f88adf}.select2-container--default .select2-fuchsia.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-fuchsia .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-fuchsia .select2-search--inline .select2-search__field:focus,.select2-fuchsia .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-fuchsia .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-fuchsia .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f88adf}.select2-container--default .select2-fuchsia .select2-results__option--highlighted,.select2-fuchsia .select2-container--default .select2-results__option--highlighted{background-color:#f012be;color:#fff}.select2-container--default .select2-fuchsia .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-fuchsia .select2-results__option--highlighted[aria-selected]:hover,.select2-fuchsia .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-fuchsia .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#e40eb4;color:#fff}.select2-container--default .select2-fuchsia .select2-selection--multiple:focus,.select2-fuchsia .select2-container--default .select2-selection--multiple:focus{border-color:#f88adf}.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice,.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#f012be;border-color:#db0ead;color:#fff}.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice__remove,.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-fuchsia.select2-container--focus .select2-selection--multiple,.select2-fuchsia .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f88adf}.select2-maroon+.select2-container--default.select2-container--focus .select2-selection--single,.select2-maroon+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f083ab}.select2-container--default .select2-maroon.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-maroon .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-maroon .select2-search--inline .select2-search__field:focus,.select2-maroon .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-maroon .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-maroon .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f083ab}.select2-container--default .select2-maroon .select2-results__option--highlighted,.select2-maroon .select2-container--default .select2-results__option--highlighted{background-color:#d81b60;color:#fff}.select2-container--default .select2-maroon .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-maroon .select2-results__option--highlighted[aria-selected]:hover,.select2-maroon .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-maroon .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#ca195a;color:#fff}.select2-container--default .select2-maroon .select2-selection--multiple:focus,.select2-maroon .select2-container--default .select2-selection--multiple:focus{border-color:#f083ab}.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice,.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#d81b60;border-color:#c11856;color:#fff}.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice__remove,.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-maroon.select2-container--focus .select2-selection--multiple,.select2-maroon .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f083ab}.select2-blue+.select2-container--default.select2-container--focus .select2-selection--single,.select2-blue+.select2-container--default.select2-container--open .select2-selection--single{border-color:#9ac4eb}.select2-blue .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-blue .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-blue .select2-container--default .select2-search--inline .select2-search__field:focus,.select2-container--default .select2-blue.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-blue .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-blue .select2-search--inline .select2-search__field:focus{border:1px solid #9ac4eb}.select2-blue .select2-container--default .select2-results__option--highlighted,.select2-container--default .select2-blue .select2-results__option--highlighted{background-color:#3085d6;color:#fff}.select2-blue .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-blue .select2-container--default .select2-results__option--highlighted[aria-selected]:hover,.select2-container--default .select2-blue .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-blue .select2-results__option--highlighted[aria-selected]:hover{background-color:#297dce;color:#fff}.select2-blue .select2-container--default .select2-selection--multiple:focus,.select2-container--default .select2-blue .select2-selection--multiple:focus{border-color:#9ac4eb}.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice,.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice{background-color:#3085d6;border-color:#2778c5;color:#fff}.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove,.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-blue .select2-container--default.select2-container--focus .select2-selection--multiple,.select2-container--default .select2-blue.select2-container--focus .select2-selection--multiple{border-color:#9ac4eb}.select2-indigo+.select2-container--default.select2-container--focus .select2-selection--single,.select2-indigo+.select2-container--default.select2-container--open .select2-selection--single{border-color:#bac1e7}.select2-container--default .select2-indigo.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-indigo .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-indigo .select2-search--inline .select2-search__field:focus,.select2-indigo .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-indigo .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-indigo .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #bac1e7}.select2-container--default .select2-indigo .select2-results__option--highlighted,.select2-indigo .select2-container--default .select2-results__option--highlighted{background-color:#5c6bc6;color:#fff}.select2-container--default .select2-indigo .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-indigo .select2-results__option--highlighted[aria-selected]:hover,.select2-indigo .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-indigo .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#5161c2;color:#fff}.select2-container--default .select2-indigo .select2-selection--multiple:focus,.select2-indigo .select2-container--default .select2-selection--multiple:focus{border-color:#bac1e7}.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice,.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#5c6bc6;border-color:#495abf;color:#fff}.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice__remove,.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-indigo.select2-container--focus .select2-selection--multiple,.select2-indigo .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#bac1e7}.select2-purple+.select2-container--default.select2-container--focus .select2-selection--single,.select2-purple+.select2-container--default.select2-container--open .select2-selection--single{border-color:#b8a2e0}.select2-container--default .select2-purple.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-purple .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-purple .select2-search--inline .select2-search__field:focus,.select2-purple .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-purple .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-purple .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #b8a2e0}.select2-container--default .select2-purple .select2-results__option--highlighted,.select2-purple .select2-container--default .select2-results__option--highlighted{background-color:#6f42c1;color:#fff}.select2-container--default .select2-purple .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-purple .select2-results__option--highlighted[aria-selected]:hover,.select2-purple .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-purple .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#683cb8;color:#fff}.select2-container--default .select2-purple .select2-selection--multiple:focus,.select2-purple .select2-container--default .select2-selection--multiple:focus{border-color:#b8a2e0}.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice,.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#6f42c1;border-color:#643ab0;color:#fff}.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice__remove,.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-purple.select2-container--focus .select2-selection--multiple,.select2-purple .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#b8a2e0}.select2-pink+.select2-container--default.select2-container--focus .select2-selection--single,.select2-pink+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-pink.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-pink .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-pink .select2-search--inline .select2-search__field:focus,.select2-pink .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-pink .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-pink .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-pink .select2-results__option--highlighted,.select2-pink .select2-container--default .select2-results__option--highlighted{background-color:#ff8acc;color:#2a2e30}.select2-container--default .select2-pink .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-pink .select2-results__option--highlighted[aria-selected]:hover,.select2-pink .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-pink .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#ff7bc5;color:#2a2e30}.select2-container--default .select2-pink .select2-selection--multiple:focus,.select2-pink .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice,.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ff8acc;border-color:#ff71c1;color:#2a2e30}.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice__remove,.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-pink.select2-container--focus .select2-selection--multiple,.select2-pink .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-red+.select2-container--default.select2-container--focus .select2-selection--single,.select2-red+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f8c6c6}.select2-container--default .select2-red.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-red .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-red .select2-search--inline .select2-search__field:focus,.select2-red .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-red .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-red .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f8c6c6}.select2-container--default .select2-red .select2-results__option--highlighted,.select2-red .select2-container--default .select2-results__option--highlighted{background-color:#ea5455;color:#fff}.select2-container--default .select2-red .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-red .select2-results__option--highlighted[aria-selected]:hover,.select2-red .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-red .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#e84647;color:#fff}.select2-container--default .select2-red .select2-selection--multiple:focus,.select2-red .select2-container--default .select2-selection--multiple:focus{border-color:#f8c6c6}.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice,.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ea5455;border-color:#e73d3e;color:#fff}.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice__remove,.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-red.select2-container--focus .select2-selection--multiple,.select2-red .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f8c6c6}.select2-orange+.select2-container--default.select2-container--focus .select2-selection--single,.select2-orange+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f2dcbc}.select2-container--default .select2-orange.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-orange .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-orange .select2-search--inline .select2-search__field:focus,.select2-orange .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-orange .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-orange .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f2dcbc}.select2-container--default .select2-orange .select2-results__option--highlighted,.select2-orange .select2-container--default .select2-results__option--highlighted{background-color:#dda451;color:#2a2e30}.select2-container--default .select2-orange .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-orange .select2-results__option--highlighted[aria-selected]:hover,.select2-orange .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-orange .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#da9d44;color:#2a2e30}.select2-container--default .select2-orange .select2-selection--multiple:focus,.select2-orange .select2-container--default .select2-selection--multiple:focus{border-color:#f2dcbc}.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice,.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#dda451;border-color:#d9993c;color:#2a2e30}.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice__remove,.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-orange.select2-container--focus .select2-selection--multiple,.select2-orange .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f2dcbc}.select2-yellow+.select2-container--default.select2-container--focus .select2-selection--single,.select2-yellow+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f8e283}.select2-container--default .select2-yellow.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-yellow .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-yellow .select2-search--inline .select2-search__field:focus,.select2-yellow .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-yellow .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-yellow .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f8e283}.select2-container--default .select2-yellow .select2-results__option--highlighted,.select2-yellow .select2-container--default .select2-results__option--highlighted{background-color:#edc30e;color:#2a2e30}.select2-container--default .select2-yellow .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-yellow .select2-results__option--highlighted[aria-selected]:hover,.select2-yellow .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-yellow .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#dfb70d;color:#2a2e30}.select2-container--default .select2-yellow .select2-selection--multiple:focus,.select2-yellow .select2-container--default .select2-selection--multiple:focus{border-color:#f8e283}.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice,.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#edc30e;border-color:#d5af0d;color:#2a2e30}.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice__remove,.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-yellow.select2-container--focus .select2-selection--multiple,.select2-yellow .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f8e283}.select2-green+.select2-container--default.select2-container--focus .select2-selection--single,.select2-green+.select2-container--default.select2-container--open .select2-selection--single{border-color:#73e6b5}.select2-container--default .select2-green.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-green .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-green .select2-search--inline .select2-search__field:focus,.select2-green .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-green .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-green .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #73e6b5}.select2-container--default .select2-green .select2-results__option--highlighted,.select2-green .select2-container--default .select2-results__option--highlighted{background-color:#21b978;color:#fff}.select2-container--default .select2-green .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-green .select2-results__option--highlighted[aria-selected]:hover,.select2-green .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-green .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1fac70;color:#fff}.select2-container--default .select2-green .select2-selection--multiple:focus,.select2-green .select2-container--default .select2-selection--multiple:focus{border-color:#73e6b5}.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice,.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#21b978;border-color:#1da36a;color:#fff}.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice__remove,.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-green.select2-container--focus .select2-selection--multiple,.select2-green .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#73e6b5}.select2-teal+.select2-container--default.select2-container--focus .select2-selection--single,.select2-teal+.select2-container--default.select2-container--open .select2-selection--single{border-color:#7eeaca}.select2-container--default .select2-teal.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-teal .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-teal .select2-search--inline .select2-search__field:focus,.select2-teal .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-teal .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-teal .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #7eeaca}.select2-container--default .select2-teal .select2-results__option--highlighted,.select2-teal .select2-container--default .select2-results__option--highlighted{background-color:#20c997;color:#fff}.select2-container--default .select2-teal .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-teal .select2-results__option--highlighted[aria-selected]:hover,.select2-teal .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-teal .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1ebc8d;color:#fff}.select2-container--default .select2-teal .select2-selection--multiple:focus,.select2-teal .select2-container--default .select2-selection--multiple:focus{border-color:#7eeaca}.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice,.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#20c997;border-color:#1cb386;color:#fff}.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice__remove,.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-teal.select2-container--focus .select2-selection--multiple,.select2-teal .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#7eeaca}.select2-cyan+.select2-container--default.select2-container--focus .select2-selection--single,.select2-cyan+.select2-container--default.select2-container--open .select2-selection--single{border-color:#dedbfb}.select2-container--default .select2-cyan.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-cyan .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-cyan .select2-search--inline .select2-search__field:focus,.select2-cyan .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-cyan .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-cyan .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #dedbfb}.select2-container--default .select2-cyan .select2-results__option--highlighted,.select2-cyan .select2-container--default .select2-results__option--highlighted{background-color:#7367f0;color:#fff}.select2-container--default .select2-cyan .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-cyan .select2-results__option--highlighted[aria-selected]:hover,.select2-cyan .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-cyan .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#6659ef;color:#fff}.select2-container--default .select2-cyan .select2-selection--multiple:focus,.select2-cyan .select2-container--default .select2-selection--multiple:focus{border-color:#dedbfb}.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice,.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#7367f0;border-color:#5e50ee;color:#fff}.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice__remove,.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-cyan.select2-container--focus .select2-selection--multiple,.select2-cyan .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#dedbfb}.select2-white+.select2-container--default.select2-container--focus .select2-selection--single,.select2-white+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-white.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-white .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-white .select2-search--inline .select2-search__field:focus,.select2-white .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-white .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-white .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-white .select2-results__option--highlighted,.select2-white .select2-container--default .select2-results__option--highlighted{background-color:#fff;color:#2a2e30}.select2-container--default .select2-white .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-white .select2-results__option--highlighted[aria-selected]:hover,.select2-white .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-white .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#f7f7f7;color:#2a2e30}.select2-container--default .select2-white .select2-selection--multiple:focus,.select2-white .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice,.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#fff;border-color:#f2f2f2;color:#2a2e30}.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice__remove,.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-white.select2-container--focus .select2-selection--multiple,.select2-gray+.select2-container--default.select2-container--focus .select2-selection--single,.select2-gray+.select2-container--default.select2-container--open .select2-selection--single,.select2-white .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-container--default .select2-gray.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray .select2-search--inline .select2-search__field:focus,.select2-gray .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-gray .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-gray .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-gray .select2-results__option--highlighted,.select2-gray .select2-container--default .select2-results__option--highlighted{background-color:#b8c2cc;color:#2a2e30}.select2-container--default .select2-gray .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-gray .select2-results__option--highlighted[aria-selected]:hover,.select2-gray .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-gray .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#afbac6;color:#2a2e30}.select2-container--default .select2-gray .select2-selection--multiple:focus,.select2-gray .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice,.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#b8c2cc;border-color:#a9b5c1;color:#2a2e30}.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice__remove,.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-gray.select2-container--focus .select2-selection--multiple,.select2-gray .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-gray-dark+.select2-container--default.select2-container--focus .select2-selection--single,.select2-gray-dark+.select2-container--default.select2-container--open .select2-selection--single{border-color:#5e5e5e}.select2-container--default .select2-gray-dark.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray-dark .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray-dark .select2-search--inline .select2-search__field:focus,.select2-gray-dark .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-gray-dark .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-gray-dark .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #5e5e5e}.select2-container--default .select2-gray-dark .select2-results__option--highlighted,.select2-gray-dark .select2-container--default .select2-results__option--highlighted{background-color:#1e1e1e;color:#fff}.select2-container--default .select2-gray-dark .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-gray-dark .select2-results__option--highlighted[aria-selected]:hover,.select2-gray-dark .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-gray-dark .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#161616;color:#fff}.select2-container--default .select2-gray-dark .select2-selection--multiple:focus,.select2-gray-dark .select2-container--default .select2-selection--multiple:focus{border-color:#5e5e5e}.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice,.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#1e1e1e;border-color:#111;color:#fff}.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice__remove,.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-gray-dark.select2-container--focus .select2-selection--multiple,.select2-gray-dark .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#5e5e5e}.slider .tooltip.in{opacity:.9}.slider.slider-vertical{height:100%}.slider.slider-horizontal{width:100%}.slider-primary .slider .slider-selection{background:#4e9876}.slider-secondary .slider .slider-selection{background:#b8c2cc}.slider-success .slider .slider-selection{background:#21b978}.slider-info .slider .slider-selection{background:#4277cf}.slider-warning .slider .slider-selection{background:#dda451}.slider-danger .slider .slider-selection{background:#ea5455}.slider-light .slider .slider-selection{background:#f7f7f9}.slider-dark .slider .slider-selection{background:#22292f}.slider-lightblue .slider .slider-selection{background:#3c8dbc}.slider-navy .slider .slider-selection{background:#001f3f}.slider-olive .slider .slider-selection{background:#3d9970}.slider-lime .slider .slider-selection{background:#01ff70}.slider-fuchsia .slider .slider-selection{background:#f012be}.slider-maroon .slider .slider-selection{background:#d81b60}.slider-blue .slider .slider-selection{background:#3085d6}.slider-indigo .slider .slider-selection{background:#5c6bc6}.slider-purple .slider .slider-selection{background:#6f42c1}.slider-pink .slider .slider-selection{background:#ff8acc}.slider-red .slider .slider-selection{background:#ea5455}.slider-orange .slider .slider-selection{background:#dda451}.slider-yellow .slider .slider-selection{background:#edc30e}.slider-green .slider .slider-selection{background:#21b978}.slider-teal .slider .slider-selection{background:#20c997}.slider-cyan .slider .slider-selection{background:#7367f0}.slider-white .slider .slider-selection{background:#fff}.slider-gray .slider .slider-selection{background:#b8c2cc}.slider-gray-dark .slider .slider-selection{background:#1e1e1e}.mapael .map{position:relative}.mapael .mapTooltip{font-family:Montserrat,Helvetica,Arial,serif;font-style:normal;font-weight:400;line-height:1.45;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;border-radius:.5rem;font-size:1rem;background-color:#22292f;color:#fff;display:block;max-width:200px;padding:.25rem .5rem;position:absolute;text-align:center;word-wrap:break-word;z-index:1070}.mapael .myLegend{background-color:#babfc7;border:1px solid #adb5bd;padding:10px;width:600px}.mapael .zoomButton{background-color:#babfc7;border:1px solid #ddd;border-radius:.42rem;color:#444;cursor:pointer;font-weight:700;height:16px;left:10px;line-height:14px;padding-left:1px;position:absolute;text-align:center;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:16px}.mapael .zoomButton.hover,.mapael .zoomButton:active,.mapael .zoomButton:hover{background-color:#acb2bc;color:#2b2b2b}.mapael .zoomReset{line-height:12px;top:10px}.mapael .zoomIn{top:30px}.mapael .zoomOut{top:50px}.jqvmap-zoomin,.jqvmap-zoomout{background-color:#babfc7;border:1px solid #ddd;border-radius:.42rem;color:#444;height:15px;width:15px}.jqvmap-zoomin.hover,.jqvmap-zoomin:active,.jqvmap-zoomin:hover,.jqvmap-zoomout.hover,.jqvmap-zoomout:active,.jqvmap-zoomout:hover{background-color:#acb2bc;color:#2b2b2b}.pace{z-index:1048}.pace .pace-progress{z-index:1049}.pace .pace-activity{z-index:1050}.pace-primary .pace .pace-progress{background:#4e9876}.pace-barber-shop-primary .pace{background:#fff}.pace-barber-shop-primary .pace .pace-progress{background:#4e9876}.pace-barber-shop-primary .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-primary .pace .pace-progress:after{color:rgba(78,152,118,.2)}.pace-bounce-primary .pace .pace-activity{background:#4e9876}.pace-center-atom-primary .pace-progress{height:100px;width:80px}.pace-center-atom-primary .pace-progress:before{background:#4e9876;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-primary .pace-activity,.pace-center-atom-primary .pace-activity:after,.pace-center-atom-primary .pace-activity:before{border-color:#4e9876}.pace-center-circle-primary .pace .pace-progress{background:rgba(78,152,118,.8);color:#fff}.pace-center-radar-primary .pace .pace-activity,.pace-center-radar-primary .pace .pace-activity:before{border-color:#4e9876 transparent transparent}.pace-center-simple-primary .pace{background:#fff;border-color:#4e9876}.pace-center-simple-primary .pace .pace-progress{background:#4e9876}.pace-material-primary .pace{color:#4e9876}.pace-corner-indicator-primary .pace .pace-activity{background:#4e9876}.pace-corner-indicator-primary .pace .pace-activity:after,.pace-corner-indicator-primary .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-primary .pace .pace-activity:before{border-right-color:rgba(78,152,118,.2);border-left-color:rgba(78,152,118,.2)}.pace-corner-indicator-primary .pace .pace-activity:after{border-top-color:rgba(78,152,118,.2);border-bottom-color:rgba(78,152,118,.2)}.pace-fill-left-primary .pace .pace-progress{background-color:rgba(78,152,118,.2)}.pace-flash-primary .pace .pace-progress{background:#4e9876}.pace-flash-primary .pace .pace-progress-inner{box-shadow:0 0 10px #4e9876,0 0 5px #4e9876}.pace-flash-primary .pace .pace-activity{border-top-color:#4e9876;border-left-color:#4e9876}.pace-loading-bar-primary .pace .pace-progress{background:#4e9876;color:#4e9876;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-primary .pace .pace-activity{box-shadow:inset 0 0 0 2px #4e9876,inset 0 0 0 7px #fff}.pace-mac-osx-primary .pace .pace-progress{background-color:#4e9876;box-shadow:inset -1px 0 #4e9876,inset 0 -1px #4e9876,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-primary .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-primary .pace-progress{color:#4e9876}.pace-secondary .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-secondary .pace{background:#2a2e30}.pace-barber-shop-secondary .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-secondary .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-secondary .pace .pace-progress:after{color:rgba(184,194,204,.2)}.pace-bounce-secondary .pace .pace-activity{background:#b8c2cc}.pace-center-atom-secondary .pace-progress{height:100px;width:80px}.pace-center-atom-secondary .pace-progress:before{background:#b8c2cc;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-secondary .pace-activity,.pace-center-atom-secondary .pace-activity:after,.pace-center-atom-secondary .pace-activity:before{border-color:#b8c2cc}.pace-center-circle-secondary .pace .pace-progress{background:rgba(184,194,204,.8);color:#2a2e30}.pace-center-radar-secondary .pace .pace-activity,.pace-center-radar-secondary .pace .pace-activity:before{border-color:#b8c2cc transparent transparent}.pace-center-simple-secondary .pace{background:#2a2e30;border-color:#b8c2cc}.pace-center-simple-secondary .pace .pace-progress{background:#b8c2cc}.pace-material-secondary .pace{color:#b8c2cc}.pace-corner-indicator-secondary .pace .pace-activity{background:#b8c2cc}.pace-corner-indicator-secondary .pace .pace-activity:after,.pace-corner-indicator-secondary .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-secondary .pace .pace-activity:before{border-right-color:rgba(184,194,204,.2);border-left-color:rgba(184,194,204,.2)}.pace-corner-indicator-secondary .pace .pace-activity:after{border-top-color:rgba(184,194,204,.2);border-bottom-color:rgba(184,194,204,.2)}.pace-fill-left-secondary .pace .pace-progress{background-color:rgba(184,194,204,.2)}.pace-flash-secondary .pace .pace-progress{background:#b8c2cc}.pace-flash-secondary .pace .pace-progress-inner{box-shadow:0 0 10px #b8c2cc,0 0 5px #b8c2cc}.pace-flash-secondary .pace .pace-activity{border-top-color:#b8c2cc;border-left-color:#b8c2cc}.pace-loading-bar-secondary .pace .pace-progress{background:#b8c2cc;color:#b8c2cc;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-secondary .pace .pace-activity{box-shadow:inset 0 0 0 2px #b8c2cc,inset 0 0 0 7px #2a2e30}.pace-mac-osx-secondary .pace .pace-progress{background-color:#b8c2cc;box-shadow:inset -1px 0 #b8c2cc,inset 0 -1px #b8c2cc,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-secondary .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-secondary .pace-progress{color:#b8c2cc}.pace-success .pace .pace-progress{background:#21b978}.pace-barber-shop-success .pace{background:#fff}.pace-barber-shop-success .pace .pace-progress{background:#21b978}.pace-barber-shop-success .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-success .pace .pace-progress:after{color:rgba(33,185,120,.2)}.pace-bounce-success .pace .pace-activity{background:#21b978}.pace-center-atom-success .pace-progress{height:100px;width:80px}.pace-center-atom-success .pace-progress:before{background:#21b978;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-success .pace-activity,.pace-center-atom-success .pace-activity:after,.pace-center-atom-success .pace-activity:before{border-color:#21b978}.pace-center-circle-success .pace .pace-progress{background:rgba(33,185,120,.8);color:#fff}.pace-center-radar-success .pace .pace-activity,.pace-center-radar-success .pace .pace-activity:before{border-color:#21b978 transparent transparent}.pace-center-simple-success .pace{background:#fff;border-color:#21b978}.pace-center-simple-success .pace .pace-progress{background:#21b978}.pace-material-success .pace{color:#21b978}.pace-corner-indicator-success .pace .pace-activity{background:#21b978}.pace-corner-indicator-success .pace .pace-activity:after,.pace-corner-indicator-success .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-success .pace .pace-activity:before{border-right-color:rgba(33,185,120,.2);border-left-color:rgba(33,185,120,.2)}.pace-corner-indicator-success .pace .pace-activity:after{border-top-color:rgba(33,185,120,.2);border-bottom-color:rgba(33,185,120,.2)}.pace-fill-left-success .pace .pace-progress{background-color:rgba(33,185,120,.2)}.pace-flash-success .pace .pace-progress{background:#21b978}.pace-flash-success .pace .pace-progress-inner{box-shadow:0 0 10px #21b978,0 0 5px #21b978}.pace-flash-success .pace .pace-activity{border-top-color:#21b978;border-left-color:#21b978}.pace-loading-bar-success .pace .pace-progress{background:#21b978;color:#21b978;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-success .pace .pace-activity{box-shadow:inset 0 0 0 2px #21b978,inset 0 0 0 7px #fff}.pace-mac-osx-success .pace .pace-progress{background-color:#21b978;box-shadow:inset -1px 0 #21b978,inset 0 -1px #21b978,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-success .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-success .pace-progress{color:#21b978}.pace-info .pace .pace-progress{background:#4277cf}.pace-barber-shop-info .pace{background:#fff}.pace-barber-shop-info .pace .pace-progress{background:#4277cf}.pace-barber-shop-info .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-info .pace .pace-progress:after{color:rgba(66,119,207,.2)}.pace-bounce-info .pace .pace-activity{background:#4277cf}.pace-center-atom-info .pace-progress{height:100px;width:80px}.pace-center-atom-info .pace-progress:before{background:#4277cf;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-info .pace-activity,.pace-center-atom-info .pace-activity:after,.pace-center-atom-info .pace-activity:before{border-color:#4277cf}.pace-center-circle-info .pace .pace-progress{background:rgba(66,119,207,.8);color:#fff}.pace-center-radar-info .pace .pace-activity,.pace-center-radar-info .pace .pace-activity:before{border-color:#4277cf transparent transparent}.pace-center-simple-info .pace{background:#fff;border-color:#4277cf}.pace-center-simple-info .pace .pace-progress{background:#4277cf}.pace-material-info .pace{color:#4277cf}.pace-corner-indicator-info .pace .pace-activity{background:#4277cf}.pace-corner-indicator-info .pace .pace-activity:after,.pace-corner-indicator-info .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-info .pace .pace-activity:before{border-right-color:rgba(66,119,207,.2);border-left-color:rgba(66,119,207,.2)}.pace-corner-indicator-info .pace .pace-activity:after{border-top-color:rgba(66,119,207,.2);border-bottom-color:rgba(66,119,207,.2)}.pace-fill-left-info .pace .pace-progress{background-color:rgba(66,119,207,.2)}.pace-flash-info .pace .pace-progress{background:#4277cf}.pace-flash-info .pace .pace-progress-inner{box-shadow:0 0 10px #4277cf,0 0 5px #4277cf}.pace-flash-info .pace .pace-activity{border-top-color:#4277cf;border-left-color:#4277cf}.pace-loading-bar-info .pace .pace-progress{background:#4277cf;color:#4277cf;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-info .pace .pace-activity{box-shadow:inset 0 0 0 2px #4277cf,inset 0 0 0 7px #fff}.pace-mac-osx-info .pace .pace-progress{background-color:#4277cf;box-shadow:inset -1px 0 #4277cf,inset 0 -1px #4277cf,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-info .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-info .pace-progress{color:#4277cf}.pace-warning .pace .pace-progress{background:#dda451}.pace-barber-shop-warning .pace{background:#2a2e30}.pace-barber-shop-warning .pace .pace-progress{background:#dda451}.pace-barber-shop-warning .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-warning .pace .pace-progress:after{color:rgba(221,164,81,.2)}.pace-bounce-warning .pace .pace-activity{background:#dda451}.pace-center-atom-warning .pace-progress{height:100px;width:80px}.pace-center-atom-warning .pace-progress:before{background:#dda451;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-warning .pace-activity,.pace-center-atom-warning .pace-activity:after,.pace-center-atom-warning .pace-activity:before{border-color:#dda451}.pace-center-circle-warning .pace .pace-progress{background:rgba(221,164,81,.8);color:#2a2e30}.pace-center-radar-warning .pace .pace-activity,.pace-center-radar-warning .pace .pace-activity:before{border-color:#dda451 transparent transparent}.pace-center-simple-warning .pace{background:#2a2e30;border-color:#dda451}.pace-center-simple-warning .pace .pace-progress{background:#dda451}.pace-material-warning .pace{color:#dda451}.pace-corner-indicator-warning .pace .pace-activity{background:#dda451}.pace-corner-indicator-warning .pace .pace-activity:after,.pace-corner-indicator-warning .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-warning .pace .pace-activity:before{border-right-color:rgba(221,164,81,.2);border-left-color:rgba(221,164,81,.2)}.pace-corner-indicator-warning .pace .pace-activity:after{border-top-color:rgba(221,164,81,.2);border-bottom-color:rgba(221,164,81,.2)}.pace-fill-left-warning .pace .pace-progress{background-color:rgba(221,164,81,.2)}.pace-flash-warning .pace .pace-progress{background:#dda451}.pace-flash-warning .pace .pace-progress-inner{box-shadow:0 0 10px #dda451,0 0 5px #dda451}.pace-flash-warning .pace .pace-activity{border-top-color:#dda451;border-left-color:#dda451}.pace-loading-bar-warning .pace .pace-progress{background:#dda451;color:#dda451;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-warning .pace .pace-activity{box-shadow:inset 0 0 0 2px #dda451,inset 0 0 0 7px #2a2e30}.pace-mac-osx-warning .pace .pace-progress{background-color:#dda451;box-shadow:inset -1px 0 #dda451,inset 0 -1px #dda451,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-warning .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-warning .pace-progress{color:#dda451}.pace-danger .pace .pace-progress{background:#ea5455}.pace-barber-shop-danger .pace{background:#fff}.pace-barber-shop-danger .pace .pace-progress{background:#ea5455}.pace-barber-shop-danger .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-danger .pace .pace-progress:after{color:rgba(234,84,85,.2)}.pace-bounce-danger .pace .pace-activity{background:#ea5455}.pace-center-atom-danger .pace-progress{height:100px;width:80px}.pace-center-atom-danger .pace-progress:before{background:#ea5455;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-danger .pace-activity,.pace-center-atom-danger .pace-activity:after,.pace-center-atom-danger .pace-activity:before{border-color:#ea5455}.pace-center-circle-danger .pace .pace-progress{background:rgba(234,84,85,.8);color:#fff}.pace-center-radar-danger .pace .pace-activity,.pace-center-radar-danger .pace .pace-activity:before{border-color:#ea5455 transparent transparent}.pace-center-simple-danger .pace{background:#fff;border-color:#ea5455}.pace-center-simple-danger .pace .pace-progress{background:#ea5455}.pace-material-danger .pace{color:#ea5455}.pace-corner-indicator-danger .pace .pace-activity{background:#ea5455}.pace-corner-indicator-danger .pace .pace-activity:after,.pace-corner-indicator-danger .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-danger .pace .pace-activity:before{border-right-color:rgba(234,84,85,.2);border-left-color:rgba(234,84,85,.2)}.pace-corner-indicator-danger .pace .pace-activity:after{border-top-color:rgba(234,84,85,.2);border-bottom-color:rgba(234,84,85,.2)}.pace-fill-left-danger .pace .pace-progress{background-color:rgba(234,84,85,.2)}.pace-flash-danger .pace .pace-progress{background:#ea5455}.pace-flash-danger .pace .pace-progress-inner{box-shadow:0 0 10px #ea5455,0 0 5px #ea5455}.pace-flash-danger .pace .pace-activity{border-top-color:#ea5455;border-left-color:#ea5455}.pace-loading-bar-danger .pace .pace-progress{background:#ea5455;color:#ea5455;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-danger .pace .pace-activity{box-shadow:inset 0 0 0 2px #ea5455,inset 0 0 0 7px #fff}.pace-mac-osx-danger .pace .pace-progress{background-color:#ea5455;box-shadow:inset -1px 0 #ea5455,inset 0 -1px #ea5455,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-danger .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-danger .pace-progress{color:#ea5455}.pace-light .pace .pace-progress{background:#f7f7f9}.pace-barber-shop-light .pace{background:#2a2e30}.pace-barber-shop-light .pace .pace-progress{background:#f7f7f9}.pace-barber-shop-light .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-light .pace .pace-progress:after{color:rgba(247,247,249,.2)}.pace-bounce-light .pace .pace-activity{background:#f7f7f9}.pace-center-atom-light .pace-progress{height:100px;width:80px}.pace-center-atom-light .pace-progress:before{background:#f7f7f9;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-light .pace-activity,.pace-center-atom-light .pace-activity:after,.pace-center-atom-light .pace-activity:before{border-color:#f7f7f9}.pace-center-circle-light .pace .pace-progress{background:rgba(247,247,249,.8);color:#2a2e30}.pace-center-radar-light .pace .pace-activity,.pace-center-radar-light .pace .pace-activity:before{border-color:#f7f7f9 transparent transparent}.pace-center-simple-light .pace{background:#2a2e30;border-color:#f7f7f9}.pace-center-simple-light .pace .pace-progress{background:#f7f7f9}.pace-material-light .pace{color:#f7f7f9}.pace-corner-indicator-light .pace .pace-activity{background:#f7f7f9}.pace-corner-indicator-light .pace .pace-activity:after,.pace-corner-indicator-light .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-light .pace .pace-activity:before{border-right-color:rgba(247,247,249,.2);border-left-color:rgba(247,247,249,.2)}.pace-corner-indicator-light .pace .pace-activity:after{border-top-color:rgba(247,247,249,.2);border-bottom-color:rgba(247,247,249,.2)}.pace-fill-left-light .pace .pace-progress{background-color:rgba(247,247,249,.2)}.pace-flash-light .pace .pace-progress{background:#f7f7f9}.pace-flash-light .pace .pace-progress-inner{box-shadow:0 0 10px #f7f7f9,0 0 5px #f7f7f9}.pace-flash-light .pace .pace-activity{border-top-color:#f7f7f9;border-left-color:#f7f7f9}.pace-loading-bar-light .pace .pace-progress{background:#f7f7f9;color:#f7f7f9;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-light .pace .pace-activity{box-shadow:inset 0 0 0 2px #f7f7f9,inset 0 0 0 7px #2a2e30}.pace-mac-osx-light .pace .pace-progress{background-color:#f7f7f9;box-shadow:inset -1px 0 #f7f7f9,inset 0 -1px #f7f7f9,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-light .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-light .pace-progress{color:#f7f7f9}.pace-dark .pace .pace-progress{background:#22292f}.pace-barber-shop-dark .pace{background:#fff}.pace-barber-shop-dark .pace .pace-progress{background:#22292f}.pace-barber-shop-dark .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-dark .pace .pace-progress:after{color:rgba(34,41,47,.2)}.pace-bounce-dark .pace .pace-activity{background:#22292f}.pace-center-atom-dark .pace-progress{height:100px;width:80px}.pace-center-atom-dark .pace-progress:before{background:#22292f;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-dark .pace-activity,.pace-center-atom-dark .pace-activity:after,.pace-center-atom-dark .pace-activity:before{border-color:#22292f}.pace-center-circle-dark .pace .pace-progress{background:rgba(34,41,47,.8);color:#fff}.pace-center-radar-dark .pace .pace-activity,.pace-center-radar-dark .pace .pace-activity:before{border-color:#22292f transparent transparent}.pace-center-simple-dark .pace{background:#fff;border-color:#22292f}.pace-center-simple-dark .pace .pace-progress{background:#22292f}.pace-material-dark .pace{color:#22292f}.pace-corner-indicator-dark .pace .pace-activity{background:#22292f}.pace-corner-indicator-dark .pace .pace-activity:after,.pace-corner-indicator-dark .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-dark .pace .pace-activity:before{border-right-color:rgba(34,41,47,.2);border-left-color:rgba(34,41,47,.2)}.pace-corner-indicator-dark .pace .pace-activity:after{border-top-color:rgba(34,41,47,.2);border-bottom-color:rgba(34,41,47,.2)}.pace-fill-left-dark .pace .pace-progress{background-color:rgba(34,41,47,.2)}.pace-flash-dark .pace .pace-progress{background:#22292f}.pace-flash-dark .pace .pace-progress-inner{box-shadow:0 0 10px #22292f,0 0 5px #22292f}.pace-flash-dark .pace .pace-activity{border-top-color:#22292f;border-left-color:#22292f}.pace-loading-bar-dark .pace .pace-progress{background:#22292f;color:#22292f;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-dark .pace .pace-activity{box-shadow:inset 0 0 0 2px #22292f,inset 0 0 0 7px #fff}.pace-mac-osx-dark .pace .pace-progress{background-color:#22292f;box-shadow:inset -1px 0 #22292f,inset 0 -1px #22292f,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-dark .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-dark .pace-progress{color:#22292f}.pace-lightblue .pace .pace-progress{background:#3c8dbc}.pace-barber-shop-lightblue .pace{background:#fff}.pace-barber-shop-lightblue .pace .pace-progress{background:#3c8dbc}.pace-barber-shop-lightblue .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-lightblue .pace .pace-progress:after{color:rgba(60,141,188,.2)}.pace-bounce-lightblue .pace .pace-activity{background:#3c8dbc}.pace-center-atom-lightblue .pace-progress{height:100px;width:80px}.pace-center-atom-lightblue .pace-progress:before{background:#3c8dbc;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-lightblue .pace-activity,.pace-center-atom-lightblue .pace-activity:after,.pace-center-atom-lightblue .pace-activity:before{border-color:#3c8dbc}.pace-center-circle-lightblue .pace .pace-progress{background:rgba(60,141,188,.8);color:#fff}.pace-center-radar-lightblue .pace .pace-activity,.pace-center-radar-lightblue .pace .pace-activity:before{border-color:#3c8dbc transparent transparent}.pace-center-simple-lightblue .pace{background:#fff;border-color:#3c8dbc}.pace-center-simple-lightblue .pace .pace-progress{background:#3c8dbc}.pace-material-lightblue .pace{color:#3c8dbc}.pace-corner-indicator-lightblue .pace .pace-activity{background:#3c8dbc}.pace-corner-indicator-lightblue .pace .pace-activity:after,.pace-corner-indicator-lightblue .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-lightblue .pace .pace-activity:before{border-right-color:rgba(60,141,188,.2);border-left-color:rgba(60,141,188,.2)}.pace-corner-indicator-lightblue .pace .pace-activity:after{border-top-color:rgba(60,141,188,.2);border-bottom-color:rgba(60,141,188,.2)}.pace-fill-left-lightblue .pace .pace-progress{background-color:rgba(60,141,188,.2)}.pace-flash-lightblue .pace .pace-progress{background:#3c8dbc}.pace-flash-lightblue .pace .pace-progress-inner{box-shadow:0 0 10px #3c8dbc,0 0 5px #3c8dbc}.pace-flash-lightblue .pace .pace-activity{border-top-color:#3c8dbc;border-left-color:#3c8dbc}.pace-loading-bar-lightblue .pace .pace-progress{background:#3c8dbc;color:#3c8dbc;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-lightblue .pace .pace-activity{box-shadow:inset 0 0 0 2px #3c8dbc,inset 0 0 0 7px #fff}.pace-mac-osx-lightblue .pace .pace-progress{background-color:#3c8dbc;box-shadow:inset -1px 0 #3c8dbc,inset 0 -1px #3c8dbc,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-lightblue .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-lightblue .pace-progress{color:#3c8dbc}.pace-navy .pace .pace-progress{background:#001f3f}.pace-barber-shop-navy .pace{background:#fff}.pace-barber-shop-navy .pace .pace-progress{background:#001f3f}.pace-barber-shop-navy .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-navy .pace .pace-progress:after{color:rgba(0,31,63,.2)}.pace-bounce-navy .pace .pace-activity{background:#001f3f}.pace-center-atom-navy .pace-progress{height:100px;width:80px}.pace-center-atom-navy .pace-progress:before{background:#001f3f;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-navy .pace-activity,.pace-center-atom-navy .pace-activity:after,.pace-center-atom-navy .pace-activity:before{border-color:#001f3f}.pace-center-circle-navy .pace .pace-progress{background:rgba(0,31,63,.8);color:#fff}.pace-center-radar-navy .pace .pace-activity,.pace-center-radar-navy .pace .pace-activity:before{border-color:#001f3f transparent transparent}.pace-center-simple-navy .pace{background:#fff;border-color:#001f3f}.pace-center-simple-navy .pace .pace-progress{background:#001f3f}.pace-material-navy .pace{color:#001f3f}.pace-corner-indicator-navy .pace .pace-activity{background:#001f3f}.pace-corner-indicator-navy .pace .pace-activity:after,.pace-corner-indicator-navy .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-navy .pace .pace-activity:before{border-right-color:rgba(0,31,63,.2);border-left-color:rgba(0,31,63,.2)}.pace-corner-indicator-navy .pace .pace-activity:after{border-top-color:rgba(0,31,63,.2);border-bottom-color:rgba(0,31,63,.2)}.pace-fill-left-navy .pace .pace-progress{background-color:rgba(0,31,63,.2)}.pace-flash-navy .pace .pace-progress{background:#001f3f}.pace-flash-navy .pace .pace-progress-inner{box-shadow:0 0 10px #001f3f,0 0 5px #001f3f}.pace-flash-navy .pace .pace-activity{border-top-color:#001f3f;border-left-color:#001f3f}.pace-loading-bar-navy .pace .pace-progress{background:#001f3f;color:#001f3f;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-navy .pace .pace-activity{box-shadow:inset 0 0 0 2px #001f3f,inset 0 0 0 7px #fff}.pace-mac-osx-navy .pace .pace-progress{background-color:#001f3f;box-shadow:inset -1px 0 #001f3f,inset 0 -1px #001f3f,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-navy .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-navy .pace-progress{color:#001f3f}.pace-olive .pace .pace-progress{background:#3d9970}.pace-barber-shop-olive .pace{background:#fff}.pace-barber-shop-olive .pace .pace-progress{background:#3d9970}.pace-barber-shop-olive .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-olive .pace .pace-progress:after{color:rgba(61,153,112,.2)}.pace-bounce-olive .pace .pace-activity{background:#3d9970}.pace-center-atom-olive .pace-progress{height:100px;width:80px}.pace-center-atom-olive .pace-progress:before{background:#3d9970;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-olive .pace-activity,.pace-center-atom-olive .pace-activity:after,.pace-center-atom-olive .pace-activity:before{border-color:#3d9970}.pace-center-circle-olive .pace .pace-progress{background:rgba(61,153,112,.8);color:#fff}.pace-center-radar-olive .pace .pace-activity,.pace-center-radar-olive .pace .pace-activity:before{border-color:#3d9970 transparent transparent}.pace-center-simple-olive .pace{background:#fff;border-color:#3d9970}.pace-center-simple-olive .pace .pace-progress{background:#3d9970}.pace-material-olive .pace{color:#3d9970}.pace-corner-indicator-olive .pace .pace-activity{background:#3d9970}.pace-corner-indicator-olive .pace .pace-activity:after,.pace-corner-indicator-olive .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-olive .pace .pace-activity:before{border-right-color:rgba(61,153,112,.2);border-left-color:rgba(61,153,112,.2)}.pace-corner-indicator-olive .pace .pace-activity:after{border-top-color:rgba(61,153,112,.2);border-bottom-color:rgba(61,153,112,.2)}.pace-fill-left-olive .pace .pace-progress{background-color:rgba(61,153,112,.2)}.pace-flash-olive .pace .pace-progress{background:#3d9970}.pace-flash-olive .pace .pace-progress-inner{box-shadow:0 0 10px #3d9970,0 0 5px #3d9970}.pace-flash-olive .pace .pace-activity{border-top-color:#3d9970;border-left-color:#3d9970}.pace-loading-bar-olive .pace .pace-progress{background:#3d9970;color:#3d9970;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-olive .pace .pace-activity{box-shadow:inset 0 0 0 2px #3d9970,inset 0 0 0 7px #fff}.pace-mac-osx-olive .pace .pace-progress{background-color:#3d9970;box-shadow:inset -1px 0 #3d9970,inset 0 -1px #3d9970,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-olive .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-olive .pace-progress{color:#3d9970}.pace-lime .pace .pace-progress{background:#01ff70}.pace-barber-shop-lime .pace{background:#2a2e30}.pace-barber-shop-lime .pace .pace-progress{background:#01ff70}.pace-barber-shop-lime .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-lime .pace .pace-progress:after{color:rgba(1,255,112,.2)}.pace-bounce-lime .pace .pace-activity{background:#01ff70}.pace-center-atom-lime .pace-progress{height:100px;width:80px}.pace-center-atom-lime .pace-progress:before{background:#01ff70;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-lime .pace-activity,.pace-center-atom-lime .pace-activity:after,.pace-center-atom-lime .pace-activity:before{border-color:#01ff70}.pace-center-circle-lime .pace .pace-progress{background:rgba(1,255,112,.8);color:#2a2e30}.pace-center-radar-lime .pace .pace-activity,.pace-center-radar-lime .pace .pace-activity:before{border-color:#01ff70 transparent transparent}.pace-center-simple-lime .pace{background:#2a2e30;border-color:#01ff70}.pace-center-simple-lime .pace .pace-progress{background:#01ff70}.pace-material-lime .pace{color:#01ff70}.pace-corner-indicator-lime .pace .pace-activity{background:#01ff70}.pace-corner-indicator-lime .pace .pace-activity:after,.pace-corner-indicator-lime .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-lime .pace .pace-activity:before{border-right-color:rgba(1,255,112,.2);border-left-color:rgba(1,255,112,.2)}.pace-corner-indicator-lime .pace .pace-activity:after{border-top-color:rgba(1,255,112,.2);border-bottom-color:rgba(1,255,112,.2)}.pace-fill-left-lime .pace .pace-progress{background-color:rgba(1,255,112,.2)}.pace-flash-lime .pace .pace-progress{background:#01ff70}.pace-flash-lime .pace .pace-progress-inner{box-shadow:0 0 10px #01ff70,0 0 5px #01ff70}.pace-flash-lime .pace .pace-activity{border-top-color:#01ff70;border-left-color:#01ff70}.pace-loading-bar-lime .pace .pace-progress{background:#01ff70;color:#01ff70;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-lime .pace .pace-activity{box-shadow:inset 0 0 0 2px #01ff70,inset 0 0 0 7px #2a2e30}.pace-mac-osx-lime .pace .pace-progress{background-color:#01ff70;box-shadow:inset -1px 0 #01ff70,inset 0 -1px #01ff70,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-lime .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-lime .pace-progress{color:#01ff70}.pace-fuchsia .pace .pace-progress{background:#f012be}.pace-barber-shop-fuchsia .pace{background:#fff}.pace-barber-shop-fuchsia .pace .pace-progress{background:#f012be}.pace-barber-shop-fuchsia .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-fuchsia .pace .pace-progress:after{color:rgba(240,18,190,.2)}.pace-bounce-fuchsia .pace .pace-activity{background:#f012be}.pace-center-atom-fuchsia .pace-progress{height:100px;width:80px}.pace-center-atom-fuchsia .pace-progress:before{background:#f012be;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-fuchsia .pace-activity,.pace-center-atom-fuchsia .pace-activity:after,.pace-center-atom-fuchsia .pace-activity:before{border-color:#f012be}.pace-center-circle-fuchsia .pace .pace-progress{background:rgba(240,18,190,.8);color:#fff}.pace-center-radar-fuchsia .pace .pace-activity,.pace-center-radar-fuchsia .pace .pace-activity:before{border-color:#f012be transparent transparent}.pace-center-simple-fuchsia .pace{background:#fff;border-color:#f012be}.pace-center-simple-fuchsia .pace .pace-progress{background:#f012be}.pace-material-fuchsia .pace{color:#f012be}.pace-corner-indicator-fuchsia .pace .pace-activity{background:#f012be}.pace-corner-indicator-fuchsia .pace .pace-activity:after,.pace-corner-indicator-fuchsia .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-fuchsia .pace .pace-activity:before{border-right-color:rgba(240,18,190,.2);border-left-color:rgba(240,18,190,.2)}.pace-corner-indicator-fuchsia .pace .pace-activity:after{border-top-color:rgba(240,18,190,.2);border-bottom-color:rgba(240,18,190,.2)}.pace-fill-left-fuchsia .pace .pace-progress{background-color:rgba(240,18,190,.2)}.pace-flash-fuchsia .pace .pace-progress{background:#f012be}.pace-flash-fuchsia .pace .pace-progress-inner{box-shadow:0 0 10px #f012be,0 0 5px #f012be}.pace-flash-fuchsia .pace .pace-activity{border-top-color:#f012be;border-left-color:#f012be}.pace-loading-bar-fuchsia .pace .pace-progress{background:#f012be;color:#f012be;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-fuchsia .pace .pace-activity{box-shadow:inset 0 0 0 2px #f012be,inset 0 0 0 7px #fff}.pace-mac-osx-fuchsia .pace .pace-progress{background-color:#f012be;box-shadow:inset -1px 0 #f012be,inset 0 -1px #f012be,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-fuchsia .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-fuchsia .pace-progress{color:#f012be}.pace-maroon .pace .pace-progress{background:#d81b60}.pace-barber-shop-maroon .pace{background:#fff}.pace-barber-shop-maroon .pace .pace-progress{background:#d81b60}.pace-barber-shop-maroon .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-maroon .pace .pace-progress:after{color:rgba(216,27,96,.2)}.pace-bounce-maroon .pace .pace-activity{background:#d81b60}.pace-center-atom-maroon .pace-progress{height:100px;width:80px}.pace-center-atom-maroon .pace-progress:before{background:#d81b60;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-maroon .pace-activity,.pace-center-atom-maroon .pace-activity:after,.pace-center-atom-maroon .pace-activity:before{border-color:#d81b60}.pace-center-circle-maroon .pace .pace-progress{background:rgba(216,27,96,.8);color:#fff}.pace-center-radar-maroon .pace .pace-activity,.pace-center-radar-maroon .pace .pace-activity:before{border-color:#d81b60 transparent transparent}.pace-center-simple-maroon .pace{background:#fff;border-color:#d81b60}.pace-center-simple-maroon .pace .pace-progress{background:#d81b60}.pace-material-maroon .pace{color:#d81b60}.pace-corner-indicator-maroon .pace .pace-activity{background:#d81b60}.pace-corner-indicator-maroon .pace .pace-activity:after,.pace-corner-indicator-maroon .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-maroon .pace .pace-activity:before{border-right-color:rgba(216,27,96,.2);border-left-color:rgba(216,27,96,.2)}.pace-corner-indicator-maroon .pace .pace-activity:after{border-top-color:rgba(216,27,96,.2);border-bottom-color:rgba(216,27,96,.2)}.pace-fill-left-maroon .pace .pace-progress{background-color:rgba(216,27,96,.2)}.pace-flash-maroon .pace .pace-progress{background:#d81b60}.pace-flash-maroon .pace .pace-progress-inner{box-shadow:0 0 10px #d81b60,0 0 5px #d81b60}.pace-flash-maroon .pace .pace-activity{border-top-color:#d81b60;border-left-color:#d81b60}.pace-loading-bar-maroon .pace .pace-progress{background:#d81b60;color:#d81b60;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-maroon .pace .pace-activity{box-shadow:inset 0 0 0 2px #d81b60,inset 0 0 0 7px #fff}.pace-mac-osx-maroon .pace .pace-progress{background-color:#d81b60;box-shadow:inset -1px 0 #d81b60,inset 0 -1px #d81b60,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-maroon .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-maroon .pace-progress{color:#d81b60}.pace-blue .pace .pace-progress{background:#3085d6}.pace-barber-shop-blue .pace{background:#fff}.pace-barber-shop-blue .pace .pace-progress{background:#3085d6}.pace-barber-shop-blue .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-blue .pace .pace-progress:after{color:rgba(48,133,214,.2)}.pace-bounce-blue .pace .pace-activity{background:#3085d6}.pace-center-atom-blue .pace-progress{height:100px;width:80px}.pace-center-atom-blue .pace-progress:before{background:#3085d6;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-blue .pace-activity,.pace-center-atom-blue .pace-activity:after,.pace-center-atom-blue .pace-activity:before{border-color:#3085d6}.pace-center-circle-blue .pace .pace-progress{background:rgba(48,133,214,.8);color:#fff}.pace-center-radar-blue .pace .pace-activity,.pace-center-radar-blue .pace .pace-activity:before{border-color:#3085d6 transparent transparent}.pace-center-simple-blue .pace{background:#fff;border-color:#3085d6}.pace-center-simple-blue .pace .pace-progress{background:#3085d6}.pace-material-blue .pace{color:#3085d6}.pace-corner-indicator-blue .pace .pace-activity{background:#3085d6}.pace-corner-indicator-blue .pace .pace-activity:after,.pace-corner-indicator-blue .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-blue .pace .pace-activity:before{border-right-color:rgba(48,133,214,.2);border-left-color:rgba(48,133,214,.2)}.pace-corner-indicator-blue .pace .pace-activity:after{border-top-color:rgba(48,133,214,.2);border-bottom-color:rgba(48,133,214,.2)}.pace-fill-left-blue .pace .pace-progress{background-color:rgba(48,133,214,.2)}.pace-flash-blue .pace .pace-progress{background:#3085d6}.pace-flash-blue .pace .pace-progress-inner{box-shadow:0 0 10px #3085d6,0 0 5px #3085d6}.pace-flash-blue .pace .pace-activity{border-top-color:#3085d6;border-left-color:#3085d6}.pace-loading-bar-blue .pace .pace-progress{background:#3085d6;color:#3085d6;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-blue .pace .pace-activity{box-shadow:inset 0 0 0 2px #3085d6,inset 0 0 0 7px #fff}.pace-mac-osx-blue .pace .pace-progress{background-color:#3085d6;box-shadow:inset -1px 0 #3085d6,inset 0 -1px #3085d6,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-blue .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-blue .pace-progress{color:#3085d6}.pace-indigo .pace .pace-progress{background:#5c6bc6}.pace-barber-shop-indigo .pace{background:#fff}.pace-barber-shop-indigo .pace .pace-progress{background:#5c6bc6}.pace-barber-shop-indigo .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-indigo .pace .pace-progress:after{color:rgba(92,107,198,.2)}.pace-bounce-indigo .pace .pace-activity{background:#5c6bc6}.pace-center-atom-indigo .pace-progress{height:100px;width:80px}.pace-center-atom-indigo .pace-progress:before{background:#5c6bc6;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-indigo .pace-activity,.pace-center-atom-indigo .pace-activity:after,.pace-center-atom-indigo .pace-activity:before{border-color:#5c6bc6}.pace-center-circle-indigo .pace .pace-progress{background:rgba(92,107,198,.8);color:#fff}.pace-center-radar-indigo .pace .pace-activity,.pace-center-radar-indigo .pace .pace-activity:before{border-color:#5c6bc6 transparent transparent}.pace-center-simple-indigo .pace{background:#fff;border-color:#5c6bc6}.pace-center-simple-indigo .pace .pace-progress{background:#5c6bc6}.pace-material-indigo .pace{color:#5c6bc6}.pace-corner-indicator-indigo .pace .pace-activity{background:#5c6bc6}.pace-corner-indicator-indigo .pace .pace-activity:after,.pace-corner-indicator-indigo .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-indigo .pace .pace-activity:before{border-right-color:rgba(92,107,198,.2);border-left-color:rgba(92,107,198,.2)}.pace-corner-indicator-indigo .pace .pace-activity:after{border-top-color:rgba(92,107,198,.2);border-bottom-color:rgba(92,107,198,.2)}.pace-fill-left-indigo .pace .pace-progress{background-color:rgba(92,107,198,.2)}.pace-flash-indigo .pace .pace-progress{background:#5c6bc6}.pace-flash-indigo .pace .pace-progress-inner{box-shadow:0 0 10px #5c6bc6,0 0 5px #5c6bc6}.pace-flash-indigo .pace .pace-activity{border-top-color:#5c6bc6;border-left-color:#5c6bc6}.pace-loading-bar-indigo .pace .pace-progress{background:#5c6bc6;color:#5c6bc6;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-indigo .pace .pace-activity{box-shadow:inset 0 0 0 2px #5c6bc6,inset 0 0 0 7px #fff}.pace-mac-osx-indigo .pace .pace-progress{background-color:#5c6bc6;box-shadow:inset -1px 0 #5c6bc6,inset 0 -1px #5c6bc6,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-indigo .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-indigo .pace-progress{color:#5c6bc6}.pace-purple .pace .pace-progress{background:#6f42c1}.pace-barber-shop-purple .pace{background:#fff}.pace-barber-shop-purple .pace .pace-progress{background:#6f42c1}.pace-barber-shop-purple .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-purple .pace .pace-progress:after{color:rgba(111,66,193,.2)}.pace-bounce-purple .pace .pace-activity{background:#6f42c1}.pace-center-atom-purple .pace-progress{height:100px;width:80px}.pace-center-atom-purple .pace-progress:before{background:#6f42c1;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-purple .pace-activity,.pace-center-atom-purple .pace-activity:after,.pace-center-atom-purple .pace-activity:before{border-color:#6f42c1}.pace-center-circle-purple .pace .pace-progress{background:rgba(111,66,193,.8);color:#fff}.pace-center-radar-purple .pace .pace-activity,.pace-center-radar-purple .pace .pace-activity:before{border-color:#6f42c1 transparent transparent}.pace-center-simple-purple .pace{background:#fff;border-color:#6f42c1}.pace-center-simple-purple .pace .pace-progress{background:#6f42c1}.pace-material-purple .pace{color:#6f42c1}.pace-corner-indicator-purple .pace .pace-activity{background:#6f42c1}.pace-corner-indicator-purple .pace .pace-activity:after,.pace-corner-indicator-purple .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-purple .pace .pace-activity:before{border-right-color:rgba(111,66,193,.2);border-left-color:rgba(111,66,193,.2)}.pace-corner-indicator-purple .pace .pace-activity:after{border-top-color:rgba(111,66,193,.2);border-bottom-color:rgba(111,66,193,.2)}.pace-fill-left-purple .pace .pace-progress{background-color:rgba(111,66,193,.2)}.pace-flash-purple .pace .pace-progress{background:#6f42c1}.pace-flash-purple .pace .pace-progress-inner{box-shadow:0 0 10px #6f42c1,0 0 5px #6f42c1}.pace-flash-purple .pace .pace-activity{border-top-color:#6f42c1;border-left-color:#6f42c1}.pace-loading-bar-purple .pace .pace-progress{background:#6f42c1;color:#6f42c1;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-purple .pace .pace-activity{box-shadow:inset 0 0 0 2px #6f42c1,inset 0 0 0 7px #fff}.pace-mac-osx-purple .pace .pace-progress{background-color:#6f42c1;box-shadow:inset -1px 0 #6f42c1,inset 0 -1px #6f42c1,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-purple .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-purple .pace-progress{color:#6f42c1}.pace-pink .pace .pace-progress{background:#ff8acc}.pace-barber-shop-pink .pace{background:#2a2e30}.pace-barber-shop-pink .pace .pace-progress{background:#ff8acc}.pace-barber-shop-pink .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-pink .pace .pace-progress:after{color:rgba(255,138,204,.2)}.pace-bounce-pink .pace .pace-activity{background:#ff8acc}.pace-center-atom-pink .pace-progress{height:100px;width:80px}.pace-center-atom-pink .pace-progress:before{background:#ff8acc;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-pink .pace-activity,.pace-center-atom-pink .pace-activity:after,.pace-center-atom-pink .pace-activity:before{border-color:#ff8acc}.pace-center-circle-pink .pace .pace-progress{background:rgba(255,138,204,.8);color:#2a2e30}.pace-center-radar-pink .pace .pace-activity,.pace-center-radar-pink .pace .pace-activity:before{border-color:#ff8acc transparent transparent}.pace-center-simple-pink .pace{background:#2a2e30;border-color:#ff8acc}.pace-center-simple-pink .pace .pace-progress{background:#ff8acc}.pace-material-pink .pace{color:#ff8acc}.pace-corner-indicator-pink .pace .pace-activity{background:#ff8acc}.pace-corner-indicator-pink .pace .pace-activity:after,.pace-corner-indicator-pink .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-pink .pace .pace-activity:before{border-right-color:rgba(255,138,204,.2);border-left-color:rgba(255,138,204,.2)}.pace-corner-indicator-pink .pace .pace-activity:after{border-top-color:rgba(255,138,204,.2);border-bottom-color:rgba(255,138,204,.2)}.pace-fill-left-pink .pace .pace-progress{background-color:rgba(255,138,204,.2)}.pace-flash-pink .pace .pace-progress{background:#ff8acc}.pace-flash-pink .pace .pace-progress-inner{box-shadow:0 0 10px #ff8acc,0 0 5px #ff8acc}.pace-flash-pink .pace .pace-activity{border-top-color:#ff8acc;border-left-color:#ff8acc}.pace-loading-bar-pink .pace .pace-progress{background:#ff8acc;color:#ff8acc;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-pink .pace .pace-activity{box-shadow:inset 0 0 0 2px #ff8acc,inset 0 0 0 7px #2a2e30}.pace-mac-osx-pink .pace .pace-progress{background-color:#ff8acc;box-shadow:inset -1px 0 #ff8acc,inset 0 -1px #ff8acc,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-pink .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-pink .pace-progress{color:#ff8acc}.pace-red .pace .pace-progress{background:#ea5455}.pace-barber-shop-red .pace{background:#fff}.pace-barber-shop-red .pace .pace-progress{background:#ea5455}.pace-barber-shop-red .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-red .pace .pace-progress:after{color:rgba(234,84,85,.2)}.pace-bounce-red .pace .pace-activity{background:#ea5455}.pace-center-atom-red .pace-progress{height:100px;width:80px}.pace-center-atom-red .pace-progress:before{background:#ea5455;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-red .pace-activity,.pace-center-atom-red .pace-activity:after,.pace-center-atom-red .pace-activity:before{border-color:#ea5455}.pace-center-circle-red .pace .pace-progress{background:rgba(234,84,85,.8);color:#fff}.pace-center-radar-red .pace .pace-activity,.pace-center-radar-red .pace .pace-activity:before{border-color:#ea5455 transparent transparent}.pace-center-simple-red .pace{background:#fff;border-color:#ea5455}.pace-center-simple-red .pace .pace-progress{background:#ea5455}.pace-material-red .pace{color:#ea5455}.pace-corner-indicator-red .pace .pace-activity{background:#ea5455}.pace-corner-indicator-red .pace .pace-activity:after,.pace-corner-indicator-red .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-red .pace .pace-activity:before{border-right-color:rgba(234,84,85,.2);border-left-color:rgba(234,84,85,.2)}.pace-corner-indicator-red .pace .pace-activity:after{border-top-color:rgba(234,84,85,.2);border-bottom-color:rgba(234,84,85,.2)}.pace-fill-left-red .pace .pace-progress{background-color:rgba(234,84,85,.2)}.pace-flash-red .pace .pace-progress{background:#ea5455}.pace-flash-red .pace .pace-progress-inner{box-shadow:0 0 10px #ea5455,0 0 5px #ea5455}.pace-flash-red .pace .pace-activity{border-top-color:#ea5455;border-left-color:#ea5455}.pace-loading-bar-red .pace .pace-progress{background:#ea5455;color:#ea5455;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-red .pace .pace-activity{box-shadow:inset 0 0 0 2px #ea5455,inset 0 0 0 7px #fff}.pace-mac-osx-red .pace .pace-progress{background-color:#ea5455;box-shadow:inset -1px 0 #ea5455,inset 0 -1px #ea5455,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-red .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-red .pace-progress{color:#ea5455}.pace-orange .pace .pace-progress{background:#dda451}.pace-barber-shop-orange .pace{background:#2a2e30}.pace-barber-shop-orange .pace .pace-progress{background:#dda451}.pace-barber-shop-orange .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-orange .pace .pace-progress:after{color:rgba(221,164,81,.2)}.pace-bounce-orange .pace .pace-activity{background:#dda451}.pace-center-atom-orange .pace-progress{height:100px;width:80px}.pace-center-atom-orange .pace-progress:before{background:#dda451;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-orange .pace-activity,.pace-center-atom-orange .pace-activity:after,.pace-center-atom-orange .pace-activity:before{border-color:#dda451}.pace-center-circle-orange .pace .pace-progress{background:rgba(221,164,81,.8);color:#2a2e30}.pace-center-radar-orange .pace .pace-activity,.pace-center-radar-orange .pace .pace-activity:before{border-color:#dda451 transparent transparent}.pace-center-simple-orange .pace{background:#2a2e30;border-color:#dda451}.pace-center-simple-orange .pace .pace-progress{background:#dda451}.pace-material-orange .pace{color:#dda451}.pace-corner-indicator-orange .pace .pace-activity{background:#dda451}.pace-corner-indicator-orange .pace .pace-activity:after,.pace-corner-indicator-orange .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-orange .pace .pace-activity:before{border-right-color:rgba(221,164,81,.2);border-left-color:rgba(221,164,81,.2)}.pace-corner-indicator-orange .pace .pace-activity:after{border-top-color:rgba(221,164,81,.2);border-bottom-color:rgba(221,164,81,.2)}.pace-fill-left-orange .pace .pace-progress{background-color:rgba(221,164,81,.2)}.pace-flash-orange .pace .pace-progress{background:#dda451}.pace-flash-orange .pace .pace-progress-inner{box-shadow:0 0 10px #dda451,0 0 5px #dda451}.pace-flash-orange .pace .pace-activity{border-top-color:#dda451;border-left-color:#dda451}.pace-loading-bar-orange .pace .pace-progress{background:#dda451;color:#dda451;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-orange .pace .pace-activity{box-shadow:inset 0 0 0 2px #dda451,inset 0 0 0 7px #2a2e30}.pace-mac-osx-orange .pace .pace-progress{background-color:#dda451;box-shadow:inset -1px 0 #dda451,inset 0 -1px #dda451,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-orange .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-orange .pace-progress{color:#dda451}.pace-yellow .pace .pace-progress{background:#edc30e}.pace-barber-shop-yellow .pace{background:#2a2e30}.pace-barber-shop-yellow .pace .pace-progress{background:#edc30e}.pace-barber-shop-yellow .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-yellow .pace .pace-progress:after{color:rgba(237,195,14,.2)}.pace-bounce-yellow .pace .pace-activity{background:#edc30e}.pace-center-atom-yellow .pace-progress{height:100px;width:80px}.pace-center-atom-yellow .pace-progress:before{background:#edc30e;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-yellow .pace-activity,.pace-center-atom-yellow .pace-activity:after,.pace-center-atom-yellow .pace-activity:before{border-color:#edc30e}.pace-center-circle-yellow .pace .pace-progress{background:rgba(237,195,14,.8);color:#2a2e30}.pace-center-radar-yellow .pace .pace-activity,.pace-center-radar-yellow .pace .pace-activity:before{border-color:#edc30e transparent transparent}.pace-center-simple-yellow .pace{background:#2a2e30;border-color:#edc30e}.pace-center-simple-yellow .pace .pace-progress{background:#edc30e}.pace-material-yellow .pace{color:#edc30e}.pace-corner-indicator-yellow .pace .pace-activity{background:#edc30e}.pace-corner-indicator-yellow .pace .pace-activity:after,.pace-corner-indicator-yellow .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-yellow .pace .pace-activity:before{border-right-color:rgba(237,195,14,.2);border-left-color:rgba(237,195,14,.2)}.pace-corner-indicator-yellow .pace .pace-activity:after{border-top-color:rgba(237,195,14,.2);border-bottom-color:rgba(237,195,14,.2)}.pace-fill-left-yellow .pace .pace-progress{background-color:rgba(237,195,14,.2)}.pace-flash-yellow .pace .pace-progress{background:#edc30e}.pace-flash-yellow .pace .pace-progress-inner{box-shadow:0 0 10px #edc30e,0 0 5px #edc30e}.pace-flash-yellow .pace .pace-activity{border-top-color:#edc30e;border-left-color:#edc30e}.pace-loading-bar-yellow .pace .pace-progress{background:#edc30e;color:#edc30e;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-yellow .pace .pace-activity{box-shadow:inset 0 0 0 2px #edc30e,inset 0 0 0 7px #2a2e30}.pace-mac-osx-yellow .pace .pace-progress{background-color:#edc30e;box-shadow:inset -1px 0 #edc30e,inset 0 -1px #edc30e,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-yellow .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-yellow .pace-progress{color:#edc30e}.pace-green .pace .pace-progress{background:#21b978}.pace-barber-shop-green .pace{background:#fff}.pace-barber-shop-green .pace .pace-progress{background:#21b978}.pace-barber-shop-green .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-green .pace .pace-progress:after{color:rgba(33,185,120,.2)}.pace-bounce-green .pace .pace-activity{background:#21b978}.pace-center-atom-green .pace-progress{height:100px;width:80px}.pace-center-atom-green .pace-progress:before{background:#21b978;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-green .pace-activity,.pace-center-atom-green .pace-activity:after,.pace-center-atom-green .pace-activity:before{border-color:#21b978}.pace-center-circle-green .pace .pace-progress{background:rgba(33,185,120,.8);color:#fff}.pace-center-radar-green .pace .pace-activity,.pace-center-radar-green .pace .pace-activity:before{border-color:#21b978 transparent transparent}.pace-center-simple-green .pace{background:#fff;border-color:#21b978}.pace-center-simple-green .pace .pace-progress{background:#21b978}.pace-material-green .pace{color:#21b978}.pace-corner-indicator-green .pace .pace-activity{background:#21b978}.pace-corner-indicator-green .pace .pace-activity:after,.pace-corner-indicator-green .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-green .pace .pace-activity:before{border-right-color:rgba(33,185,120,.2);border-left-color:rgba(33,185,120,.2)}.pace-corner-indicator-green .pace .pace-activity:after{border-top-color:rgba(33,185,120,.2);border-bottom-color:rgba(33,185,120,.2)}.pace-fill-left-green .pace .pace-progress{background-color:rgba(33,185,120,.2)}.pace-flash-green .pace .pace-progress{background:#21b978}.pace-flash-green .pace .pace-progress-inner{box-shadow:0 0 10px #21b978,0 0 5px #21b978}.pace-flash-green .pace .pace-activity{border-top-color:#21b978;border-left-color:#21b978}.pace-loading-bar-green .pace .pace-progress{background:#21b978;color:#21b978;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-green .pace .pace-activity{box-shadow:inset 0 0 0 2px #21b978,inset 0 0 0 7px #fff}.pace-mac-osx-green .pace .pace-progress{background-color:#21b978;box-shadow:inset -1px 0 #21b978,inset 0 -1px #21b978,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-green .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-green .pace-progress{color:#21b978}.pace-teal .pace .pace-progress{background:#20c997}.pace-barber-shop-teal .pace{background:#fff}.pace-barber-shop-teal .pace .pace-progress{background:#20c997}.pace-barber-shop-teal .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-teal .pace .pace-progress:after{color:rgba(32,201,151,.2)}.pace-bounce-teal .pace .pace-activity{background:#20c997}.pace-center-atom-teal .pace-progress{height:100px;width:80px}.pace-center-atom-teal .pace-progress:before{background:#20c997;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-teal .pace-activity,.pace-center-atom-teal .pace-activity:after,.pace-center-atom-teal .pace-activity:before{border-color:#20c997}.pace-center-circle-teal .pace .pace-progress{background:rgba(32,201,151,.8);color:#fff}.pace-center-radar-teal .pace .pace-activity,.pace-center-radar-teal .pace .pace-activity:before{border-color:#20c997 transparent transparent}.pace-center-simple-teal .pace{background:#fff;border-color:#20c997}.pace-center-simple-teal .pace .pace-progress{background:#20c997}.pace-material-teal .pace{color:#20c997}.pace-corner-indicator-teal .pace .pace-activity{background:#20c997}.pace-corner-indicator-teal .pace .pace-activity:after,.pace-corner-indicator-teal .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-teal .pace .pace-activity:before{border-right-color:rgba(32,201,151,.2);border-left-color:rgba(32,201,151,.2)}.pace-corner-indicator-teal .pace .pace-activity:after{border-top-color:rgba(32,201,151,.2);border-bottom-color:rgba(32,201,151,.2)}.pace-fill-left-teal .pace .pace-progress{background-color:rgba(32,201,151,.2)}.pace-flash-teal .pace .pace-progress{background:#20c997}.pace-flash-teal .pace .pace-progress-inner{box-shadow:0 0 10px #20c997,0 0 5px #20c997}.pace-flash-teal .pace .pace-activity{border-top-color:#20c997;border-left-color:#20c997}.pace-loading-bar-teal .pace .pace-progress{background:#20c997;color:#20c997;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-teal .pace .pace-activity{box-shadow:inset 0 0 0 2px #20c997,inset 0 0 0 7px #fff}.pace-mac-osx-teal .pace .pace-progress{background-color:#20c997;box-shadow:inset -1px 0 #20c997,inset 0 -1px #20c997,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-teal .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-teal .pace-progress{color:#20c997}.pace-cyan .pace .pace-progress{background:#7367f0}.pace-barber-shop-cyan .pace{background:#fff}.pace-barber-shop-cyan .pace .pace-progress{background:#7367f0}.pace-barber-shop-cyan .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-cyan .pace .pace-progress:after{color:rgba(115,103,240,.2)}.pace-bounce-cyan .pace .pace-activity{background:#7367f0}.pace-center-atom-cyan .pace-progress{height:100px;width:80px}.pace-center-atom-cyan .pace-progress:before{background:#7367f0;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-cyan .pace-activity,.pace-center-atom-cyan .pace-activity:after,.pace-center-atom-cyan .pace-activity:before{border-color:#7367f0}.pace-center-circle-cyan .pace .pace-progress{background:rgba(115,103,240,.8);color:#fff}.pace-center-radar-cyan .pace .pace-activity,.pace-center-radar-cyan .pace .pace-activity:before{border-color:#7367f0 transparent transparent}.pace-center-simple-cyan .pace{background:#fff;border-color:#7367f0}.pace-center-simple-cyan .pace .pace-progress{background:#7367f0}.pace-material-cyan .pace{color:#7367f0}.pace-corner-indicator-cyan .pace .pace-activity{background:#7367f0}.pace-corner-indicator-cyan .pace .pace-activity:after,.pace-corner-indicator-cyan .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-cyan .pace .pace-activity:before{border-right-color:rgba(115,103,240,.2);border-left-color:rgba(115,103,240,.2)}.pace-corner-indicator-cyan .pace .pace-activity:after{border-top-color:rgba(115,103,240,.2);border-bottom-color:rgba(115,103,240,.2)}.pace-fill-left-cyan .pace .pace-progress{background-color:rgba(115,103,240,.2)}.pace-flash-cyan .pace .pace-progress{background:#7367f0}.pace-flash-cyan .pace .pace-progress-inner{box-shadow:0 0 10px #7367f0,0 0 5px #7367f0}.pace-flash-cyan .pace .pace-activity{border-top-color:#7367f0;border-left-color:#7367f0}.pace-loading-bar-cyan .pace .pace-progress{background:#7367f0;color:#7367f0;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-cyan .pace .pace-activity{box-shadow:inset 0 0 0 2px #7367f0,inset 0 0 0 7px #fff}.pace-mac-osx-cyan .pace .pace-progress{background-color:#7367f0;box-shadow:inset -1px 0 #7367f0,inset 0 -1px #7367f0,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-cyan .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-cyan .pace-progress{color:#7367f0}.pace-white .pace .pace-progress{background:#fff}.pace-barber-shop-white .pace{background:#2a2e30}.pace-barber-shop-white .pace .pace-progress{background:#fff}.pace-barber-shop-white .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-white .pace .pace-progress:after{color:hsla(0,0%,100%,.2)}.pace-bounce-white .pace .pace-activity{background:#fff}.pace-center-atom-white .pace-progress{height:100px;width:80px}.pace-center-atom-white .pace-progress:before{background:#fff;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-white .pace-activity,.pace-center-atom-white .pace-activity:after,.pace-center-atom-white .pace-activity:before{border-color:#fff}.pace-center-circle-white .pace .pace-progress{background:hsla(0,0%,100%,.8);color:#2a2e30}.pace-center-radar-white .pace .pace-activity,.pace-center-radar-white .pace .pace-activity:before{border-color:#fff transparent transparent}.pace-center-simple-white .pace{background:#2a2e30;border-color:#fff}.pace-center-simple-white .pace .pace-progress{background:#fff}.pace-material-white .pace{color:#fff}.pace-corner-indicator-white .pace .pace-activity{background:#fff}.pace-corner-indicator-white .pace .pace-activity:after,.pace-corner-indicator-white .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-white .pace .pace-activity:before{border-right-color:hsla(0,0%,100%,.2);border-left-color:hsla(0,0%,100%,.2)}.pace-corner-indicator-white .pace .pace-activity:after{border-top-color:hsla(0,0%,100%,.2);border-bottom-color:hsla(0,0%,100%,.2)}.pace-fill-left-white .pace .pace-progress{background-color:hsla(0,0%,100%,.2)}.pace-flash-white .pace .pace-progress{background:#fff}.pace-flash-white .pace .pace-progress-inner{box-shadow:0 0 10px #fff,0 0 5px #fff}.pace-flash-white .pace .pace-activity{border-top-color:#fff;border-left-color:#fff}.pace-loading-bar-white .pace .pace-progress{background:#fff;color:#fff;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-white .pace .pace-activity{box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 7px #2a2e30}.pace-mac-osx-white .pace .pace-progress{background-color:#fff;box-shadow:inset -1px 0 #fff,inset 0 -1px #fff,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-white .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-white .pace-progress{color:#fff}.pace-gray .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-gray .pace{background:#2a2e30}.pace-barber-shop-gray .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-gray .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-gray .pace .pace-progress:after{color:rgba(184,194,204,.2)}.pace-bounce-gray .pace .pace-activity{background:#b8c2cc}.pace-center-atom-gray .pace-progress{height:100px;width:80px}.pace-center-atom-gray .pace-progress:before{background:#b8c2cc;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-gray .pace-activity,.pace-center-atom-gray .pace-activity:after,.pace-center-atom-gray .pace-activity:before{border-color:#b8c2cc}.pace-center-circle-gray .pace .pace-progress{background:rgba(184,194,204,.8);color:#2a2e30}.pace-center-radar-gray .pace .pace-activity,.pace-center-radar-gray .pace .pace-activity:before{border-color:#b8c2cc transparent transparent}.pace-center-simple-gray .pace{background:#2a2e30;border-color:#b8c2cc}.pace-center-simple-gray .pace .pace-progress{background:#b8c2cc}.pace-material-gray .pace{color:#b8c2cc}.pace-corner-indicator-gray .pace .pace-activity{background:#b8c2cc}.pace-corner-indicator-gray .pace .pace-activity:after,.pace-corner-indicator-gray .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-gray .pace .pace-activity:before{border-right-color:rgba(184,194,204,.2);border-left-color:rgba(184,194,204,.2)}.pace-corner-indicator-gray .pace .pace-activity:after{border-top-color:rgba(184,194,204,.2);border-bottom-color:rgba(184,194,204,.2)}.pace-fill-left-gray .pace .pace-progress{background-color:rgba(184,194,204,.2)}.pace-flash-gray .pace .pace-progress{background:#b8c2cc}.pace-flash-gray .pace .pace-progress-inner{box-shadow:0 0 10px #b8c2cc,0 0 5px #b8c2cc}.pace-flash-gray .pace .pace-activity{border-top-color:#b8c2cc;border-left-color:#b8c2cc}.pace-loading-bar-gray .pace .pace-progress{background:#b8c2cc;color:#b8c2cc;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-gray .pace .pace-activity{box-shadow:inset 0 0 0 2px #b8c2cc,inset 0 0 0 7px #2a2e30}.pace-mac-osx-gray .pace .pace-progress{background-color:#b8c2cc;box-shadow:inset -1px 0 #b8c2cc,inset 0 -1px #b8c2cc,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-gray .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-gray .pace-progress{color:#b8c2cc}.pace-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-barber-shop-gray-dark .pace{background:#fff}.pace-barber-shop-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-barber-shop-gray-dark .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-gray-dark .pace .pace-progress:after{color:rgba(30,30,30,.2)}.pace-bounce-gray-dark .pace .pace-activity{background:#1e1e1e}.pace-center-atom-gray-dark .pace-progress{height:100px;width:80px}.pace-center-atom-gray-dark .pace-progress:before{background:#1e1e1e;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-gray-dark .pace-activity,.pace-center-atom-gray-dark .pace-activity:after,.pace-center-atom-gray-dark .pace-activity:before{border-color:#1e1e1e}.pace-center-circle-gray-dark .pace .pace-progress{background:rgba(30,30,30,.8);color:#fff}.pace-center-radar-gray-dark .pace .pace-activity,.pace-center-radar-gray-dark .pace .pace-activity:before{border-color:#1e1e1e transparent transparent}.pace-center-simple-gray-dark .pace{background:#fff;border-color:#1e1e1e}.pace-center-simple-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-material-gray-dark .pace{color:#1e1e1e}.pace-corner-indicator-gray-dark .pace .pace-activity{background:#1e1e1e}.pace-corner-indicator-gray-dark .pace .pace-activity:after,.pace-corner-indicator-gray-dark .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-gray-dark .pace .pace-activity:before{border-right-color:rgba(30,30,30,.2);border-left-color:rgba(30,30,30,.2)}.pace-corner-indicator-gray-dark .pace .pace-activity:after{border-top-color:rgba(30,30,30,.2);border-bottom-color:rgba(30,30,30,.2)}.pace-fill-left-gray-dark .pace .pace-progress{background-color:rgba(30,30,30,.2)}.pace-flash-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-flash-gray-dark .pace .pace-progress-inner{box-shadow:0 0 10px #1e1e1e,0 0 5px #1e1e1e}.pace-flash-gray-dark .pace .pace-activity{border-top-color:#1e1e1e;border-left-color:#1e1e1e}.pace-loading-bar-gray-dark .pace .pace-progress{background:#1e1e1e;color:#1e1e1e;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-gray-dark .pace .pace-activity{box-shadow:inset 0 0 0 2px #1e1e1e,inset 0 0 0 7px #fff}.pace-mac-osx-gray-dark .pace .pace-progress{background-color:#1e1e1e;box-shadow:inset -1px 0 #1e1e1e,inset 0 -1px #1e1e1e,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-gray-dark .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-gray-dark .pace-progress{color:#1e1e1e}.jqstooltip{height:auto!important;padding:5px!important;width:auto!important}.connectedSortable{min-height:100px}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sort-highlight{background:#babfc7;border:1px dashed #dae1e7;margin-bottom:10px}.chart{overflow:hidden;position:relative}.border-transparent{border-color:transparent!important}.description-block{display:block;margin:10px 0;text-align:center}.description-block.margin-bottom{margin-bottom:25px}.description-block>.description-header{font-size:16px;font-weight:600;margin:0;padding:0}.description-block>.description-text{text-transform:uppercase}.description-block .description-icon{font-size:16px}.list-group-unbordered>.list-group-item{border-left:0;border-radius:0;border-right:0;padding-left:0;padding-right:0}.list-header{color:#b8c2cc;font-size:15px;font-weight:700;padding:10px 4px}.list-seperator{background:rgba(34,41,47,.125);height:1px;margin:15px 0 9px}.list-link>a{color:#b8c2cc;padding:4px}.list-link>a:hover{color:#2a2e30}.user-block{float:left}.user-block img{float:left;height:40px;width:40px}.user-block .comment,.user-block .description,.user-block .username{display:block;margin-left:50px}.user-block .username{font-size:16px;font-weight:600;margin-top:-1px}.user-block .description{color:#b8c2cc;font-size:13px;margin-top:-3px}.user-block.user-block-sm img{width:1.875rem;height:1.875rem}.user-block.user-block-sm .comment,.user-block.user-block-sm .description,.user-block.user-block-sm .username{margin-left:40px}.user-block.user-block-sm .username{font-size:14px}.img-lg,.img-md,.img-sm{float:left}.img-sm{height:1.875rem;width:1.875rem}.img-sm+.img-push{margin-left:2.5rem}.img-md{width:3.75rem;height:3.75rem}.img-md+.img-push{margin-left:4.375rem}.img-lg{width:6.25rem;height:6.25rem}.img-lg+.img-push{margin-left:6.875rem}.img-bordered{border:3px solid #adb5bd;padding:3px}.img-bordered-sm{border:2px solid #adb5bd;padding:2px}.img-rounded{border-radius:.5rem}.img-circle{border-radius:50%}.img-size-32,.img-size-50,.img-size-64{height:auto}.img-size-64{width:64px}.img-size-50{width:50px}.img-size-32{width:32px}.size-32,.size-40,.size-50{display:block;text-align:center}.size-32{height:32px;line-height:32px;width:32px}.size-40{height:40px;line-height:40px;width:40px}.size-50{height:50px;line-height:50px;width:50px}.attachment-block{background:#babfc7;border:1px solid rgba(34,41,47,.125);margin-bottom:10px;padding:5px}.attachment-block .attachment-img{float:left;height:auto;max-height:100px;max-width:100px}.attachment-block .attachment-pushed{margin-left:110px}.attachment-block .attachment-heading{margin:0}.attachment-block .attachment-text{color:#4e5154}.card>.loading-img,.card>.overlay,.info-box>.loading-img,.info-box>.overlay,.overlay-wrapper>.loading-img,.overlay-wrapper>.overlay,.small-box>.loading-img,.small-box>.overlay{height:100%;left:0;position:absolute;top:0;width:100%}.card .overlay,.info-box .overlay,.overlay-wrapper .overlay,.small-box .overlay{border-radius:.5rem;align-items:center;background:hsla(0,0%,100%,.7);display:flex;justify-content:center;z-index:50}.card .overlay>.fa,.card .overlay>.fab,.card .overlay>.far,.card .overlay>.fas,.card .overlay>.glyphicon,.card .overlay>.ion,.info-box .overlay>.fa,.info-box .overlay>.fab,.info-box .overlay>.far,.info-box .overlay>.fas,.info-box .overlay>.glyphicon,.info-box .overlay>.ion,.overlay-wrapper .overlay>.fa,.overlay-wrapper .overlay>.fab,.overlay-wrapper .overlay>.far,.overlay-wrapper .overlay>.fas,.overlay-wrapper .overlay>.glyphicon,.overlay-wrapper .overlay>.ion,.small-box .overlay>.fa,.small-box .overlay>.fab,.small-box .overlay>.far,.small-box .overlay>.fas,.small-box .overlay>.glyphicon,.small-box .overlay>.ion{color:#1e1e1e}.card .overlay.dark,.info-box .overlay.dark,.overlay-wrapper .overlay.dark,.small-box .overlay.dark{background:rgba(34,41,47,.5)}.card .overlay.dark>.fa,.card .overlay.dark>.fab,.card .overlay.dark>.far,.card .overlay.dark>.fas,.card .overlay.dark>.glyphicon,.card .overlay.dark>.ion,.info-box .overlay.dark>.fa,.info-box .overlay.dark>.fab,.info-box .overlay.dark>.far,.info-box .overlay.dark>.fas,.info-box .overlay.dark>.glyphicon,.info-box .overlay.dark>.ion,.overlay-wrapper .overlay.dark>.fa,.overlay-wrapper .overlay.dark>.fab,.overlay-wrapper .overlay.dark>.far,.overlay-wrapper .overlay.dark>.fas,.overlay-wrapper .overlay.dark>.glyphicon,.overlay-wrapper .overlay.dark>.ion,.small-box .overlay.dark>.fa,.small-box .overlay.dark>.fab,.small-box .overlay.dark>.far,.small-box .overlay.dark>.fas,.small-box .overlay.dark>.glyphicon,.small-box .overlay.dark>.ion{color:#636363}.tab-pane>.overlay-wrapper{position:relative}.tab-pane>.overlay-wrapper>.overlay{border-top-left-radius:0;border-top-right-radius:0;flex-direction:column;margin-top:-1.25rem;margin-left:-1.25rem;height:calc(100% + 2.5rem);width:calc(100% + 2.5rem)}.tab-pane>.overlay-wrapper>.overlay.dark{color:#fff}.ribbon-wrapper{height:70px;overflow:hidden;position:absolute;right:-2px;top:-2px;width:70px;z-index:10}.ribbon-wrapper.ribbon-lg{height:120px;width:120px}.ribbon-wrapper.ribbon-lg .ribbon{right:0;top:26px;width:160px}.ribbon-wrapper.ribbon-xl{height:180px;width:180px}.ribbon-wrapper.ribbon-xl .ribbon{right:4px;top:47px;width:240px}.ribbon-wrapper .ribbon{box-shadow:0 0 3px rgba(34,41,47,.3);font-size:.8rem;line-height:100%;padding:.375rem 0;position:relative;right:-2px;text-align:center;text-shadow:0 -1px 0 rgba(34,41,47,.4);text-transform:uppercase;top:10px;transform:rotate(45deg);width:90px}.ribbon-wrapper .ribbon:after,.ribbon-wrapper .ribbon:before{border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #9e9e9e;bottom:-3px;content:\"\";position:absolute}.ribbon-wrapper .ribbon:before{left:0}.ribbon-wrapper .ribbon:after{right:0}.back-to-top{bottom:1.25rem;position:fixed;right:1.25rem;z-index:1032}.back-to-top:focus{box-shadow:none}pre{padding:.75rem}blockquote{background:#fff;border-left:.7rem solid #4e9876;margin:1.5em .7rem;padding:.5em .7rem}.box blockquote{background:#ededed}blockquote p:last-child{margin-bottom:0}blockquote h1,blockquote h2,blockquote h3,blockquote h4,blockquote h5,blockquote h6{color:#4e9876;font-size:1.25rem;font-weight:600}blockquote.quote-primary{border-color:#4e9876}blockquote.quote-primary h1,blockquote.quote-primary h2,blockquote.quote-primary h3,blockquote.quote-primary h4,blockquote.quote-primary h5,blockquote.quote-primary h6{color:#4e9876}blockquote.quote-secondary{border-color:#b8c2cc}blockquote.quote-secondary h1,blockquote.quote-secondary h2,blockquote.quote-secondary h3,blockquote.quote-secondary h4,blockquote.quote-secondary h5,blockquote.quote-secondary h6{color:#b8c2cc}blockquote.quote-success{border-color:#21b978}blockquote.quote-success h1,blockquote.quote-success h2,blockquote.quote-success h3,blockquote.quote-success h4,blockquote.quote-success h5,blockquote.quote-success h6{color:#21b978}blockquote.quote-info{border-color:#4277cf}blockquote.quote-info h1,blockquote.quote-info h2,blockquote.quote-info h3,blockquote.quote-info h4,blockquote.quote-info h5,blockquote.quote-info h6{color:#4277cf}blockquote.quote-warning{border-color:#dda451}blockquote.quote-warning h1,blockquote.quote-warning h2,blockquote.quote-warning h3,blockquote.quote-warning h4,blockquote.quote-warning h5,blockquote.quote-warning h6{color:#dda451}blockquote.quote-danger{border-color:#ea5455}blockquote.quote-danger h1,blockquote.quote-danger h2,blockquote.quote-danger h3,blockquote.quote-danger h4,blockquote.quote-danger h5,blockquote.quote-danger h6{color:#ea5455}blockquote.quote-light{border-color:#f7f7f9}blockquote.quote-light h1,blockquote.quote-light h2,blockquote.quote-light h3,blockquote.quote-light h4,blockquote.quote-light h5,blockquote.quote-light h6{color:#f7f7f9}blockquote.quote-dark{border-color:#22292f}blockquote.quote-dark h1,blockquote.quote-dark h2,blockquote.quote-dark h3,blockquote.quote-dark h4,blockquote.quote-dark h5,blockquote.quote-dark h6{color:#22292f}blockquote.quote-lightblue{border-color:#3c8dbc}blockquote.quote-lightblue h1,blockquote.quote-lightblue h2,blockquote.quote-lightblue h3,blockquote.quote-lightblue h4,blockquote.quote-lightblue h5,blockquote.quote-lightblue h6{color:#3c8dbc}blockquote.quote-navy{border-color:#001f3f}blockquote.quote-navy h1,blockquote.quote-navy h2,blockquote.quote-navy h3,blockquote.quote-navy h4,blockquote.quote-navy h5,blockquote.quote-navy h6{color:#001f3f}blockquote.quote-olive{border-color:#3d9970}blockquote.quote-olive h1,blockquote.quote-olive h2,blockquote.quote-olive h3,blockquote.quote-olive h4,blockquote.quote-olive h5,blockquote.quote-olive h6{color:#3d9970}blockquote.quote-lime{border-color:#01ff70}blockquote.quote-lime h1,blockquote.quote-lime h2,blockquote.quote-lime h3,blockquote.quote-lime h4,blockquote.quote-lime h5,blockquote.quote-lime h6{color:#01ff70}blockquote.quote-fuchsia{border-color:#f012be}blockquote.quote-fuchsia h1,blockquote.quote-fuchsia h2,blockquote.quote-fuchsia h3,blockquote.quote-fuchsia h4,blockquote.quote-fuchsia h5,blockquote.quote-fuchsia h6{color:#f012be}blockquote.quote-maroon{border-color:#d81b60}blockquote.quote-maroon h1,blockquote.quote-maroon h2,blockquote.quote-maroon h3,blockquote.quote-maroon h4,blockquote.quote-maroon h5,blockquote.quote-maroon h6{color:#d81b60}blockquote.quote-blue{border-color:#3085d6}blockquote.quote-blue h1,blockquote.quote-blue h2,blockquote.quote-blue h3,blockquote.quote-blue h4,blockquote.quote-blue h5,blockquote.quote-blue h6{color:#3085d6}blockquote.quote-indigo{border-color:#5c6bc6}blockquote.quote-indigo h1,blockquote.quote-indigo h2,blockquote.quote-indigo h3,blockquote.quote-indigo h4,blockquote.quote-indigo h5,blockquote.quote-indigo h6{color:#5c6bc6}blockquote.quote-purple{border-color:#6f42c1}blockquote.quote-purple h1,blockquote.quote-purple h2,blockquote.quote-purple h3,blockquote.quote-purple h4,blockquote.quote-purple h5,blockquote.quote-purple h6{color:#6f42c1}blockquote.quote-pink{border-color:#ff8acc}blockquote.quote-pink h1,blockquote.quote-pink h2,blockquote.quote-pink h3,blockquote.quote-pink h4,blockquote.quote-pink h5,blockquote.quote-pink h6{color:#ff8acc}blockquote.quote-red{border-color:#ea5455}blockquote.quote-red h1,blockquote.quote-red h2,blockquote.quote-red h3,blockquote.quote-red h4,blockquote.quote-red h5,blockquote.quote-red h6{color:#ea5455}blockquote.quote-orange{border-color:#dda451}blockquote.quote-orange h1,blockquote.quote-orange h2,blockquote.quote-orange h3,blockquote.quote-orange h4,blockquote.quote-orange h5,blockquote.quote-orange h6{color:#dda451}blockquote.quote-yellow{border-color:#edc30e}blockquote.quote-yellow h1,blockquote.quote-yellow h2,blockquote.quote-yellow h3,blockquote.quote-yellow h4,blockquote.quote-yellow h5,blockquote.quote-yellow h6{color:#edc30e}blockquote.quote-green{border-color:#21b978}blockquote.quote-green h1,blockquote.quote-green h2,blockquote.quote-green h3,blockquote.quote-green h4,blockquote.quote-green h5,blockquote.quote-green h6{color:#21b978}blockquote.quote-teal{border-color:#20c997}blockquote.quote-teal h1,blockquote.quote-teal h2,blockquote.quote-teal h3,blockquote.quote-teal h4,blockquote.quote-teal h5,blockquote.quote-teal h6{color:#20c997}blockquote.quote-cyan{border-color:#7367f0}blockquote.quote-cyan h1,blockquote.quote-cyan h2,blockquote.quote-cyan h3,blockquote.quote-cyan h4,blockquote.quote-cyan h5,blockquote.quote-cyan h6{color:#7367f0}blockquote.quote-white{border-color:#fff}blockquote.quote-white h1,blockquote.quote-white h2,blockquote.quote-white h3,blockquote.quote-white h4,blockquote.quote-white h5,blockquote.quote-white h6{color:#fff}blockquote.quote-gray{border-color:#b8c2cc}blockquote.quote-gray h1,blockquote.quote-gray h2,blockquote.quote-gray h3,blockquote.quote-gray h4,blockquote.quote-gray h5,blockquote.quote-gray h6{color:#b8c2cc}blockquote.quote-gray-dark{border-color:#1e1e1e}blockquote.quote-gray-dark h1,blockquote.quote-gray-dark h2,blockquote.quote-gray-dark h3,blockquote.quote-gray-dark h4,blockquote.quote-gray-dark h5,blockquote.quote-gray-dark h6{color:#1e1e1e}.tab-custom-content{border-top:1px solid #dae1e7;margin-top:.5rem;padding-top:.5rem}.nav+.tab-custom-content{border-top:none;border-bottom:1px solid #dae1e7;margin-top:0;margin-bottom:.5rem;padding-bottom:.5rem}.badge-btn{border-radius:.15rem;font-size:.75rem;font-weight:400;padding:.25rem .5rem}.badge-btn.badge-pill{padding:.375rem .6rem}@media print{.content-header,.main-header,.main-sidebar,.no-print{display:none!important}.content-wrapper,.main-footer{transform:translate(0);margin-left:0!important;min-height:0!important}.layout-fixed .content-wrapper{padding-top:0!important}.invoice{border:0;margin:0;padding:0;width:100%}.invoice-col{float:left;width:33.3333333%}.table-responsive{overflow:auto}.table-responsive>.table tr td,.table-responsive>.table tr th{white-space:normal!important}}.text-bold,.text-bold.table td,.text-bold.table th{font-weight:700}.text-xs{font-size:.75rem!important}.text-md,.text-sm{font-size:1rem!important}.text-lg{font-size:2rem!important}.text-xl{font-size:1.5rem!important}.text-lightblue{color:#3c8dbc}.text-navy{color:#001f3f}.text-olive{color:#3d9970}.text-lime{color:#01ff70}.text-fuchsia{color:#f012be}.text-maroon{color:#d81b60}.text-blue{color:#3085d6}.text-indigo{color:#5c6bc6}.text-purple{color:#6f42c1}.text-pink{color:#ff8acc}.text-red{color:#ea5455}.text-orange{color:#dda451}.text-yellow{color:#edc30e}.text-green{color:#21b978}.text-teal{color:#20c997}.text-cyan{color:#7367f0}.text-white{color:#fff}.text-gray{color:#b8c2cc}.text-gray-dark{color:#1e1e1e}.elevation-0{box-shadow:none!important}.elevation-1{box-shadow:0 1px 3px rgba(34,41,47,.12),0 1px 2px rgba(34,41,47,.24)!important}.elevation-2{box-shadow:0 3px 6px rgba(34,41,47,.16),0 3px 6px rgba(34,41,47,.23)!important}.elevation-3{box-shadow:0 10px 20px rgba(34,41,47,.19),0 6px 6px rgba(34,41,47,.23)!important}.elevation-4{box-shadow:0 14px 28px rgba(34,41,47,.25),0 10px 10px rgba(34,41,47,.22)!important}.elevation-5{box-shadow:0 19px 38px rgba(34,41,47,.3),0 15px 12px rgba(34,41,47,.22)!important}.bg-primary{background-color:#4e9876!important}.bg-primary,.bg-primary>a{color:#fff!important}.bg-primary.btn:hover{border-color:#3d765c;color:#ececec}.bg-primary.btn.active,.bg-primary.btn:active,.bg-primary.btn:not(:disabled):not(.disabled).active,.bg-primary.btn:not(:disabled):not(.disabled):active{background-color:#3d765c!important;border-color:#386e55;color:#fff}.bg-secondary{background-color:#b8c2cc!important}.bg-secondary,.bg-secondary>a{color:#2a2e30!important}.bg-secondary.btn:hover{border-color:#9aa9b7;color:#181a1c}.bg-secondary.btn.active,.bg-secondary.btn:active,.bg-secondary.btn:not(:disabled):not(.disabled).active,.bg-secondary.btn:not(:disabled):not(.disabled):active{background-color:#9aa9b7!important;border-color:#93a2b1;color:#2a2e30}.bg-success{background-color:#21b978!important}.bg-success,.bg-success>a{color:#fff!important}.bg-success.btn:hover{border-color:#198e5c;color:#ececec}.bg-success.btn.active,.bg-success.btn:active,.bg-success.btn:not(:disabled):not(.disabled).active,.bg-success.btn:not(:disabled):not(.disabled):active{background-color:#198e5c!important;border-color:#178355;color:#fff}.bg-info{background-color:#4277cf!important}.bg-info,.bg-info>a{color:#fff!important}.bg-info.btn:hover{border-color:#2d5fb1;color:#ececec}.bg-info.btn.active,.bg-info.btn:active,.bg-info.btn:not(:disabled):not(.disabled).active,.bg-info.btn:not(:disabled):not(.disabled):active{background-color:#2d5fb1!important;border-color:#2a59a7;color:#fff}.bg-warning{background-color:#dda451!important}.bg-warning,.bg-warning>a{color:#2a2e30!important}.bg-warning.btn:hover{border-color:#d28d29;color:#181a1c}.bg-warning.btn.active,.bg-warning.btn:active,.bg-warning.btn:not(:disabled):not(.disabled).active,.bg-warning.btn:not(:disabled):not(.disabled):active{background-color:#d28d29!important;border-color:#c78627;color:#2a2e30}.bg-danger{background-color:#ea5455!important}.bg-danger,.bg-danger>a{color:#fff!important}.bg-danger.btn:hover{border-color:#e42728;color:#ececec}.bg-danger.btn.active,.bg-danger.btn:active,.bg-danger.btn:not(:disabled):not(.disabled).active,.bg-danger.btn:not(:disabled):not(.disabled):active{background-color:#e42728!important;border-color:#e21c1d;color:#fff}.bg-light{background-color:#f7f7f9!important}.bg-light,.bg-light>a{color:#2a2e30!important}.bg-light.btn:hover{border-color:#dadae3;color:#181a1c}.bg-light.btn.active,.bg-light.btn:active,.bg-light.btn:not(:disabled):not(.disabled).active,.bg-light.btn:not(:disabled):not(.disabled):active{background-color:#dadae3!important;border-color:#d3d3de;color:#2a2e30}.bg-dark{background-color:#22292f!important}.bg-dark,.bg-dark>a{color:#fff!important}.bg-dark.btn:hover{border-color:#0d0f11;color:#ececec}.bg-dark.btn.active,.bg-dark.btn:active,.bg-dark.btn:not(:disabled):not(.disabled).active,.bg-dark.btn:not(:disabled):not(.disabled):active{background-color:#0d0f11!important;border-color:#07090a;color:#fff}.bg-lightblue{background-color:#3c8dbc!important}.bg-lightblue,.bg-lightblue>a{color:#fff!important}.bg-lightblue.btn:hover{border-color:#307095;color:#ececec}.bg-lightblue.btn.active,.bg-lightblue.btn:active,.bg-lightblue.btn:not(:disabled):not(.disabled).active,.bg-lightblue.btn:not(:disabled):not(.disabled):active{background-color:#307095!important;border-color:#2d698c;color:#fff}.bg-navy{background-color:#001f3f!important}.bg-navy,.bg-navy>a{color:#fff!important}.bg-navy.btn:hover{border-color:#00060c;color:#ececec}.bg-navy.btn.active,.bg-navy.btn:active,.bg-navy.btn:not(:disabled):not(.disabled).active,.bg-navy.btn:not(:disabled):not(.disabled):active{background-color:#00060c!important;border-color:#000;color:#fff}.bg-olive{background-color:#3d9970!important}.bg-olive,.bg-olive>a{color:#fff!important}.bg-olive.btn:hover{border-color:#2e7555;color:#ececec}.bg-olive.btn.active,.bg-olive.btn:active,.bg-olive.btn:not(:disabled):not(.disabled).active,.bg-olive.btn:not(:disabled):not(.disabled):active{background-color:#2e7555!important;border-color:#2b6b4f;color:#fff}.bg-lime{background-color:#01ff70!important}.bg-lime,.bg-lime>a{color:#2a2e30!important}.bg-lime.btn:hover{border-color:#00cd5a;color:#181a1c}.bg-lime.btn.active,.bg-lime.btn:active,.bg-lime.btn:not(:disabled):not(.disabled).active,.bg-lime.btn:not(:disabled):not(.disabled):active{background-color:#00cd5a!important;border-color:#00c054;color:#fff}.bg-fuchsia{background-color:#f012be!important}.bg-fuchsia,.bg-fuchsia>a{color:#fff!important}.bg-fuchsia.btn:hover{border-color:#c30c9a;color:#ececec}.bg-fuchsia.btn.active,.bg-fuchsia.btn:active,.bg-fuchsia.btn:not(:disabled):not(.disabled).active,.bg-fuchsia.btn:not(:disabled):not(.disabled):active{background-color:#c30c9a!important;border-color:#b70c90;color:#fff}.bg-maroon{background-color:#d81b60!important}.bg-maroon,.bg-maroon>a{color:#fff!important}.bg-maroon.btn:hover{border-color:#ab154c;color:#ececec}.bg-maroon.btn.active,.bg-maroon.btn:active,.bg-maroon.btn:not(:disabled):not(.disabled).active,.bg-maroon.btn:not(:disabled):not(.disabled):active{background-color:#ab154c!important;border-color:#9f1447;color:#fff}.bg-blue{background-color:#3085d6!important}.bg-blue,.bg-blue>a{color:#fff!important}.bg-blue.btn:hover{border-color:#236bb0;color:#ececec}.bg-blue.btn.active,.bg-blue.btn:active,.bg-blue.btn:not(:disabled):not(.disabled).active,.bg-blue.btn:not(:disabled):not(.disabled):active{background-color:#236bb0!important;border-color:#2165a5;color:#fff}.bg-indigo{background-color:#5c6bc6!important}.bg-indigo,.bg-indigo>a{color:#fff!important}.bg-indigo.btn:hover{border-color:#3e4eb1;color:#ececec}.bg-indigo.btn.active,.bg-indigo.btn:active,.bg-indigo.btn:not(:disabled):not(.disabled).active,.bg-indigo.btn:not(:disabled):not(.disabled):active{background-color:#3e4eb1!important;border-color:#3b4aa8;color:#fff}.bg-purple{background-color:#6f42c1!important}.bg-purple,.bg-purple>a{color:#fff!important}.bg-purple.btn:hover{border-color:#59339d;color:#ececec}.bg-purple.btn.active,.bg-purple.btn:active,.bg-purple.btn:not(:disabled):not(.disabled).active,.bg-purple.btn:not(:disabled):not(.disabled):active{background-color:#59339d!important;border-color:#533093;color:#fff}.bg-pink{background-color:#ff8acc!important}.bg-pink,.bg-pink>a{color:#2a2e30!important}.bg-pink.btn:hover{border-color:#ff57b6;color:#181a1c}.bg-pink.btn.active,.bg-pink.btn:active,.bg-pink.btn:not(:disabled):not(.disabled).active,.bg-pink.btn:not(:disabled):not(.disabled):active{background-color:#ff57b6!important;border-color:#ff4ab0;color:#fff}.bg-red{background-color:#ea5455!important}.bg-red,.bg-red>a{color:#fff!important}.bg-red.btn:hover{border-color:#e42728;color:#ececec}.bg-red.btn.active,.bg-red.btn:active,.bg-red.btn:not(:disabled):not(.disabled).active,.bg-red.btn:not(:disabled):not(.disabled):active{background-color:#e42728!important;border-color:#e21c1d;color:#fff}.bg-orange{background-color:#dda451!important}.bg-orange,.bg-orange>a{color:#2a2e30!important}.bg-orange.btn:hover{border-color:#d28d29;color:#181a1c}.bg-orange.btn.active,.bg-orange.btn:active,.bg-orange.btn:not(:disabled):not(.disabled).active,.bg-orange.btn:not(:disabled):not(.disabled):active{background-color:#d28d29!important;border-color:#c78627;color:#2a2e30}.bg-yellow{background-color:#edc30e!important}.bg-yellow,.bg-yellow>a{color:#2a2e30!important}.bg-yellow.btn:hover{border-color:#bd9b0b;color:#181a1c}.bg-yellow.btn.active,.bg-yellow.btn:active,.bg-yellow.btn:not(:disabled):not(.disabled).active,.bg-yellow.btn:not(:disabled):not(.disabled):active{background-color:#bd9b0b!important;border-color:#b1910a;color:#fff}.bg-green{background-color:#21b978!important}.bg-green,.bg-green>a{color:#fff!important}.bg-green.btn:hover{border-color:#198e5c;color:#ececec}.bg-green.btn.active,.bg-green.btn:active,.bg-green.btn:not(:disabled):not(.disabled).active,.bg-green.btn:not(:disabled):not(.disabled):active{background-color:#198e5c!important;border-color:#178355;color:#fff}.bg-teal{background-color:#20c997!important}.bg-teal,.bg-teal>a{color:#fff!important}.bg-teal.btn:hover{border-color:#199d76;color:#ececec}.bg-teal.btn.active,.bg-teal.btn:active,.bg-teal.btn:not(:disabled):not(.disabled).active,.bg-teal.btn:not(:disabled):not(.disabled):active{background-color:#199d76!important;border-color:#17926e;color:#fff}.bg-cyan{background-color:#7367f0!important}.bg-cyan,.bg-cyan>a{color:#fff!important}.bg-cyan.btn:hover{border-color:#4839eb;color:#ececec}.bg-cyan.btn.active,.bg-cyan.btn:active,.bg-cyan.btn:not(:disabled):not(.disabled).active,.bg-cyan.btn:not(:disabled):not(.disabled):active{background-color:#4839eb!important;border-color:#3e2dea;color:#fff}.bg-white{background-color:#fff!important}.bg-white,.bg-white>a{color:#2a2e30!important}.bg-white.btn:hover{border-color:#e6e6e6;color:#181a1c}.bg-white.btn.active,.bg-white.btn:active,.bg-white.btn:not(:disabled):not(.disabled).active,.bg-white.btn:not(:disabled):not(.disabled):active{background-color:#e6e6e6!important;border-color:#dfdfdf;color:#2a2e30}.bg-gray{background-color:#b8c2cc!important}.bg-gray,.bg-gray>a{color:#2a2e30!important}.bg-gray.btn:hover{border-color:#9aa9b7;color:#181a1c}.bg-gray.btn.active,.bg-gray.btn:active,.bg-gray.btn:not(:disabled):not(.disabled).active,.bg-gray.btn:not(:disabled):not(.disabled):active{background-color:#9aa9b7!important;border-color:#93a2b1;color:#2a2e30}.bg-gray-dark{background-color:#1e1e1e!important}.bg-gray-dark,.bg-gray-dark>a{color:#fff!important}.bg-gray-dark.btn:hover{border-color:#050505;color:#ececec}.bg-gray-dark.btn.active,.bg-gray-dark.btn:active,.bg-gray-dark.btn:not(:disabled):not(.disabled).active,.bg-gray-dark.btn:not(:disabled):not(.disabled):active{background-color:#050505!important;border-color:#000;color:#fff}.bg-gray{background-color:#adb5bd;color:#2a2e30}.bg-gray-light{background-color:#f5f5f5;color:#2a2e30!important}.bg-black{background-color:#22292f;color:#fff!important}.bg-white{background-color:#fff;color:#2a2e30!important}.bg-gradient-primary{color:#fff;background:#4e9876 linear-gradient(180deg,#66a589,#4e9876) repeat-x!important}.bg-gradient-primary.btn.disabled,.bg-gradient-primary.btn:disabled,.bg-gradient-primary.btn:not(:disabled):not(.disabled).active,.bg-gradient-primary.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-primary.btn.dropdown-toggle{background-image:none!important}.bg-gradient-primary.btn:hover{border-color:#3d765c;color:#ececec;background:#417f62 linear-gradient(180deg,#5b9078,#417f62) repeat-x!important}.bg-gradient-primary.btn.active,.bg-gradient-primary.btn:active,.bg-gradient-primary.btn:not(:disabled):not(.disabled).active,.bg-gradient-primary.btn:not(:disabled):not(.disabled):active{border-color:#386e55;color:#fff;background:#3d765c linear-gradient(180deg,#588873,#3d765c) repeat-x!important}.bg-gradient-secondary{color:#2a2e30;background:#b8c2cc linear-gradient(180deg,#c0c9d2,#b8c2cc) repeat-x!important}.bg-gradient-secondary.btn.disabled,.bg-gradient-secondary.btn:disabled,.bg-gradient-secondary.btn:not(:disabled):not(.disabled).active,.bg-gradient-secondary.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-secondary.btn.dropdown-toggle{background-image:none!important}.bg-gradient-secondary.btn:hover{border-color:#9aa9b7;color:#181a1c;background:#a2afbc linear-gradient(180deg,#aeb9c5,#a2afbc) repeat-x!important}.bg-gradient-secondary.btn.active,.bg-gradient-secondary.btn:active,.bg-gradient-secondary.btn:not(:disabled):not(.disabled).active,.bg-gradient-secondary.btn:not(:disabled):not(.disabled):active{border-color:#93a2b1;color:#2a2e30;background:#9aa9b7 linear-gradient(180deg,#a7b4c1,#9aa9b7) repeat-x!important}.bg-gradient-success{color:#fff;background:#21b978 linear-gradient(180deg,#40c18b,#21b978) repeat-x!important}.bg-gradient-success.btn.disabled,.bg-gradient-success.btn:disabled,.bg-gradient-success.btn:not(:disabled):not(.disabled).active,.bg-gradient-success.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-success.btn.dropdown-toggle{background-image:none!important}.bg-gradient-success.btn:hover{border-color:#198e5c;color:#ececec;background:#1b9963 linear-gradient(180deg,#3ba679,#1b9963) repeat-x!important}.bg-gradient-success.btn.active,.bg-gradient-success.btn:active,.bg-gradient-success.btn:not(:disabled):not(.disabled).active,.bg-gradient-success.btn:not(:disabled):not(.disabled):active{border-color:#178355;color:#fff;background:#198e5c linear-gradient(180deg,#399d73,#198e5c) repeat-x!important}.bg-gradient-info{color:#fff;background:#4277cf linear-gradient(180deg,#5c89d5,#4277cf) repeat-x!important}.bg-gradient-info.btn.disabled,.bg-gradient-info.btn:disabled,.bg-gradient-info.btn:not(:disabled):not(.disabled).active,.bg-gradient-info.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-info.btn.dropdown-toggle{background-image:none!important}.bg-gradient-info.btn:hover{border-color:#2d5fb1;color:#ececec;background:#3064bb linear-gradient(180deg,#4d79c4,#3064bb) repeat-x!important}.bg-gradient-info.btn.active,.bg-gradient-info.btn:active,.bg-gradient-info.btn:not(:disabled):not(.disabled).active,.bg-gradient-info.btn:not(:disabled):not(.disabled):active{border-color:#2a59a7;color:#fff;background:#2d5fb1 linear-gradient(180deg,#4a75bc,#2d5fb1) repeat-x!important}.bg-gradient-warning{color:#2a2e30;background:#dda451 linear-gradient(180deg,#e0b06a,#dda451) repeat-x!important}.bg-gradient-warning.btn.disabled,.bg-gradient-warning.btn:disabled,.bg-gradient-warning.btn:not(:disabled):not(.disabled).active,.bg-gradient-warning.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-warning.btn.dropdown-toggle{background-image:none!important}.bg-gradient-warning.btn:hover{border-color:#d28d29;color:#181a1c;background:#d79331 linear-gradient(180deg,#dba14f,#d79331) repeat-x!important}.bg-gradient-warning.btn.active,.bg-gradient-warning.btn:active,.bg-gradient-warning.btn:not(:disabled):not(.disabled).active,.bg-gradient-warning.btn:not(:disabled):not(.disabled):active{border-color:#c78627;color:#2a2e30;background:#d28d29 linear-gradient(180deg,#d69c48,#d28d29) repeat-x!important}.bg-gradient-danger{color:#fff;background:#ea5455 linear-gradient(180deg,#eb6c6d,#ea5455) repeat-x!important}.bg-gradient-danger.btn.disabled,.bg-gradient-danger.btn:disabled,.bg-gradient-danger.btn:not(:disabled):not(.disabled).active,.bg-gradient-danger.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-danger.btn.dropdown-toggle{background-image:none!important}.bg-gradient-danger.btn:hover{border-color:#e42728;color:#ececec;background:#e63233 linear-gradient(180deg,#e74f50,#e63233) repeat-x!important}.bg-gradient-danger.btn.active,.bg-gradient-danger.btn:active,.bg-gradient-danger.btn:not(:disabled):not(.disabled).active,.bg-gradient-danger.btn:not(:disabled):not(.disabled):active{border-color:#e21c1d;color:#fff;background:#e42728 linear-gradient(180deg,#e64547,#e42728) repeat-x!important}.bg-gradient-light{color:#2a2e30;background:#f7f7f9 linear-gradient(180deg,#f6f6f9,#f7f7f9) repeat-x!important}.bg-gradient-light.btn.disabled,.bg-gradient-light.btn:disabled,.bg-gradient-light.btn:not(:disabled):not(.disabled).active,.bg-gradient-light.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-light.btn.dropdown-toggle{background-image:none!important}.bg-gradient-light.btn:hover{border-color:#dadae3;color:#181a1c;background:#e1e1e9 linear-gradient(180deg,#e3e3eb,#e1e1e9) repeat-x!important}.bg-gradient-light.btn.active,.bg-gradient-light.btn:active,.bg-gradient-light.btn:not(:disabled):not(.disabled).active,.bg-gradient-light.btn:not(:disabled):not(.disabled):active{border-color:#d3d3de;color:#2a2e30;background:#dadae3 linear-gradient(180deg,#dddde6,#dadae3) repeat-x!important}.bg-gradient-dark{color:#fff;background:#22292f linear-gradient(180deg,#41474d,#22292f) repeat-x!important}.bg-gradient-dark.btn.disabled,.bg-gradient-dark.btn:disabled,.bg-gradient-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-dark.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-dark.btn.dropdown-toggle{background-image:none!important}.bg-gradient-dark.btn:hover{border-color:#0d0f11;color:#ececec;background:#121619 linear-gradient(180deg,#33373a,#121619) repeat-x!important}.bg-gradient-dark.btn.active,.bg-gradient-dark.btn:active,.bg-gradient-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-dark.btn:not(:disabled):not(.disabled):active{border-color:#07090a;color:#fff;background:#0d0f11 linear-gradient(180deg,#2f3134,#0d0f11) repeat-x!important}.bg-gradient-lightblue{color:#fff;background:#3c8dbc linear-gradient(180deg,#579cc5,#3c8dbc) repeat-x!important}.bg-gradient-lightblue.btn.disabled,.bg-gradient-lightblue.btn:disabled,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled).active,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-lightblue.btn.dropdown-toggle{background-image:none!important}.bg-gradient-lightblue.btn:hover{border-color:#307095;color:#ececec;background:#33779f linear-gradient(180deg,#4f89ac,#33779f) repeat-x!important}.bg-gradient-lightblue.btn.active,.bg-gradient-lightblue.btn:active,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled).active,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled):active{border-color:#2d698c;color:#fff;background:#307095 linear-gradient(180deg,#4d83a4,#307095) repeat-x!important}.bg-gradient-navy{color:#fff;background:#001f3f linear-gradient(180deg,#243f5b,#001f3f) repeat-x!important}.bg-gradient-navy.btn.disabled,.bg-gradient-navy.btn:disabled,.bg-gradient-navy.btn:not(:disabled):not(.disabled).active,.bg-gradient-navy.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-navy.btn.dropdown-toggle{background-image:none!important}.bg-gradient-navy.btn:hover{border-color:#00060c;color:#ececec;background:#000c19 linear-gradient(180deg,#242e3a,#000c19) repeat-x!important}.bg-gradient-navy.btn.active,.bg-gradient-navy.btn:active,.bg-gradient-navy.btn:not(:disabled):not(.disabled).active,.bg-gradient-navy.btn:not(:disabled):not(.disabled):active{border-color:#000;color:#fff;background:#00060c linear-gradient(180deg,#24292f,#00060c) repeat-x!important}.bg-gradient-olive{color:#fff;background:#3d9970 linear-gradient(180deg,#58a684,#3d9970) repeat-x!important}.bg-gradient-olive.btn.disabled,.bg-gradient-olive.btn:disabled,.bg-gradient-olive.btn:not(:disabled):not(.disabled).active,.bg-gradient-olive.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-olive.btn.dropdown-toggle{background-image:none!important}.bg-gradient-olive.btn:hover{border-color:#2e7555;color:#ececec;background:#327e5c linear-gradient(180deg,#4e8f73,#327e5c) repeat-x!important}.bg-gradient-olive.btn.active,.bg-gradient-olive.btn:active,.bg-gradient-olive.btn:not(:disabled):not(.disabled).active,.bg-gradient-olive.btn:not(:disabled):not(.disabled):active{border-color:#2b6b4f;color:#fff;background:#2e7555 linear-gradient(180deg,#4b886d,#2e7555) repeat-x!important}.bg-gradient-lime{color:#2a2e30;background:#01ff70 linear-gradient(180deg,#25fd84,#01ff70) repeat-x!important}.bg-gradient-lime.btn.disabled,.bg-gradient-lime.btn:disabled,.bg-gradient-lime.btn:not(:disabled):not(.disabled).active,.bg-gradient-lime.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-lime.btn.dropdown-toggle{background-image:none!important}.bg-gradient-lime.btn:hover{border-color:#00cd5a;color:#181a1c;background:#00da5f linear-gradient(180deg,#24dd76,#00da5f) repeat-x!important}.bg-gradient-lime.btn.active,.bg-gradient-lime.btn:active,.bg-gradient-lime.btn:not(:disabled):not(.disabled).active,.bg-gradient-lime.btn:not(:disabled):not(.disabled):active{border-color:#00c054;color:#fff;background:#00cd5a linear-gradient(180deg,#24d272,#00cd5a) repeat-x!important}.bg-gradient-fuchsia{color:#fff;background:#f012be linear-gradient(180deg,#f033c7,#f012be) repeat-x!important}.bg-gradient-fuchsia.btn.disabled,.bg-gradient-fuchsia.btn:disabled,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-fuchsia.btn.dropdown-toggle{background-image:none!important}.bg-gradient-fuchsia.btn:hover{border-color:#c30c9a;color:#ececec;background:#cf0da3 linear-gradient(180deg,#d42fb0,#cf0da3) repeat-x!important}.bg-gradient-fuchsia.btn.active,.bg-gradient-fuchsia.btn:active,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active{border-color:#b70c90;color:#fff;background:#c30c9a linear-gradient(180deg,#ca2ea8,#c30c9a) repeat-x!important}.bg-gradient-maroon{color:#fff;background:#d81b60 linear-gradient(180deg,#db3b77,#d81b60) repeat-x!important}.bg-gradient-maroon.btn.disabled,.bg-gradient-maroon.btn:disabled,.bg-gradient-maroon.btn:not(:disabled):not(.disabled).active,.bg-gradient-maroon.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-maroon.btn.dropdown-toggle{background-image:none!important}.bg-gradient-maroon.btn:hover{border-color:#ab154c;color:#ececec;background:#b61751 linear-gradient(180deg,#bf386a,#b61751) repeat-x!important}.bg-gradient-maroon.btn.active,.bg-gradient-maroon.btn:active,.bg-gradient-maroon.btn:not(:disabled):not(.disabled).active,.bg-gradient-maroon.btn:not(:disabled):not(.disabled):active{border-color:#9f1447;color:#fff;background:#ab154c linear-gradient(180deg,#b53666,#ab154c) repeat-x!important}.bg-gradient-blue{color:#fff;background:#3085d6 linear-gradient(180deg,#4d95db,#3085d6) repeat-x!important}.bg-gradient-blue.btn.disabled,.bg-gradient-blue.btn:disabled,.bg-gradient-blue.btn:not(:disabled):not(.disabled).active,.bg-gradient-blue.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-blue.btn.dropdown-toggle{background-image:none!important}.bg-gradient-blue.btn:hover{border-color:#236bb0;color:#ececec;background:#2572bb linear-gradient(180deg,#4385c4,#2572bb) repeat-x!important}.bg-gradient-blue.btn.active,.bg-gradient-blue.btn:active,.bg-gradient-blue.btn:not(:disabled):not(.disabled).active,.bg-gradient-blue.btn:not(:disabled):not(.disabled):active{border-color:#2165a5;color:#fff;background:#236bb0 linear-gradient(180deg,#427fbb,#236bb0) repeat-x!important}.bg-gradient-indigo{color:#fff;background:#5c6bc6 linear-gradient(180deg,#727fcd,#5c6bc6) repeat-x!important}.bg-gradient-indigo.btn.disabled,.bg-gradient-indigo.btn:disabled,.bg-gradient-indigo.btn:not(:disabled):not(.disabled).active,.bg-gradient-indigo.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-indigo.btn.dropdown-toggle{background-image:none!important}.bg-gradient-indigo.btn:hover{border-color:#3e4eb1;color:#ececec;background:#4152bb linear-gradient(180deg,#5b6ac4,#4152bb) repeat-x!important}.bg-gradient-indigo.btn.active,.bg-gradient-indigo.btn:active,.bg-gradient-indigo.btn:not(:disabled):not(.disabled).active,.bg-gradient-indigo.btn:not(:disabled):not(.disabled):active{border-color:#3b4aa8;color:#fff;background:#3e4eb1 linear-gradient(180deg,#5966bc,#3e4eb1) repeat-x!important}.bg-gradient-purple{color:#fff;background:#6f42c1 linear-gradient(180deg,#825cc9,#6f42c1) repeat-x!important}.bg-gradient-purple.btn.disabled,.bg-gradient-purple.btn:disabled,.bg-gradient-purple.btn:not(:disabled):not(.disabled).active,.bg-gradient-purple.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-purple.btn.dropdown-toggle{background-image:none!important}.bg-gradient-purple.btn:hover{border-color:#59339d;color:#ececec;background:#5e37a6 linear-gradient(180deg,#7453b2,#5e37a6) repeat-x!important}.bg-gradient-purple.btn.active,.bg-gradient-purple.btn:active,.bg-gradient-purple.btn:not(:disabled):not(.disabled).active,.bg-gradient-purple.btn:not(:disabled):not(.disabled):active{border-color:#533093;color:#fff;background:#59339d linear-gradient(180deg,#7050ab,#59339d) repeat-x!important}.bg-gradient-pink{color:#2a2e30;background:#ff8acc linear-gradient(180deg,#fd99d2,#ff8acc) repeat-x!important}.bg-gradient-pink.btn.disabled,.bg-gradient-pink.btn:disabled,.bg-gradient-pink.btn:not(:disabled):not(.disabled).active,.bg-gradient-pink.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-pink.btn.dropdown-toggle{background-image:none!important}.bg-gradient-pink.btn:hover{border-color:#ff57b6;color:#181a1c;background:#ff64bb linear-gradient(180deg,#fd79c4,#ff64bb) repeat-x!important}.bg-gradient-pink.btn.active,.bg-gradient-pink.btn:active,.bg-gradient-pink.btn:not(:disabled):not(.disabled).active,.bg-gradient-pink.btn:not(:disabled):not(.disabled):active{border-color:#ff4ab0;color:#fff;background:#ff57b6 linear-gradient(180deg,#fd6ec0,#ff57b6) repeat-x!important}.bg-gradient-red{color:#fff;background:#ea5455 linear-gradient(180deg,#eb6c6d,#ea5455) repeat-x!important}.bg-gradient-red.btn.disabled,.bg-gradient-red.btn:disabled,.bg-gradient-red.btn:not(:disabled):not(.disabled).active,.bg-gradient-red.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-red.btn.dropdown-toggle{background-image:none!important}.bg-gradient-red.btn:hover{border-color:#e42728;color:#ececec;background:#e63233 linear-gradient(180deg,#e74f50,#e63233) repeat-x!important}.bg-gradient-red.btn.active,.bg-gradient-red.btn:active,.bg-gradient-red.btn:not(:disabled):not(.disabled).active,.bg-gradient-red.btn:not(:disabled):not(.disabled):active{border-color:#e21c1d;color:#fff;background:#e42728 linear-gradient(180deg,#e64547,#e42728) repeat-x!important}.bg-gradient-orange{color:#2a2e30;background:#dda451 linear-gradient(180deg,#e0b06a,#dda451) repeat-x!important}.bg-gradient-orange.btn.disabled,.bg-gradient-orange.btn:disabled,.bg-gradient-orange.btn:not(:disabled):not(.disabled).active,.bg-gradient-orange.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-orange.btn.dropdown-toggle{background-image:none!important}.bg-gradient-orange.btn:hover{border-color:#d28d29;color:#181a1c;background:#d79331 linear-gradient(180deg,#dba14f,#d79331) repeat-x!important}.bg-gradient-orange.btn.active,.bg-gradient-orange.btn:active,.bg-gradient-orange.btn:not(:disabled):not(.disabled).active,.bg-gradient-orange.btn:not(:disabled):not(.disabled):active{border-color:#c78627;color:#2a2e30;background:#d28d29 linear-gradient(180deg,#d69c48,#d28d29) repeat-x!important}.bg-gradient-yellow{color:#2a2e30;background:#edc30e linear-gradient(180deg,#edca31,#edc30e) repeat-x!important}.bg-gradient-yellow.btn.disabled,.bg-gradient-yellow.btn:disabled,.bg-gradient-yellow.btn:not(:disabled):not(.disabled).active,.bg-gradient-yellow.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-yellow.btn.dropdown-toggle{background-image:none!important}.bg-gradient-yellow.btn:hover{border-color:#bd9b0b;color:#181a1c;background:#c9a50c linear-gradient(180deg,#cfb02f,#c9a50c) repeat-x!important}.bg-gradient-yellow.btn.active,.bg-gradient-yellow.btn:active,.bg-gradient-yellow.btn:not(:disabled):not(.disabled).active,.bg-gradient-yellow.btn:not(:disabled):not(.disabled):active{border-color:#b1910a;color:#fff;background:#bd9b0b linear-gradient(180deg,#c5a82e,#bd9b0b) repeat-x!important}.bg-gradient-green{color:#fff;background:#21b978 linear-gradient(180deg,#40c18b,#21b978) repeat-x!important}.bg-gradient-green.btn.disabled,.bg-gradient-green.btn:disabled,.bg-gradient-green.btn:not(:disabled):not(.disabled).active,.bg-gradient-green.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-green.btn.dropdown-toggle{background-image:none!important}.bg-gradient-green.btn:hover{border-color:#198e5c;color:#ececec;background:#1b9963 linear-gradient(180deg,#3ba679,#1b9963) repeat-x!important}.bg-gradient-green.btn.active,.bg-gradient-green.btn:active,.bg-gradient-green.btn:not(:disabled):not(.disabled).active,.bg-gradient-green.btn:not(:disabled):not(.disabled):active{border-color:#178355;color:#fff;background:#198e5c linear-gradient(180deg,#399d73,#198e5c) repeat-x!important}.bg-gradient-teal{color:#fff;background:#20c997 linear-gradient(180deg,#3fcfa5,#20c997) repeat-x!important}.bg-gradient-teal.btn.disabled,.bg-gradient-teal.btn:disabled,.bg-gradient-teal.btn:not(:disabled):not(.disabled).active,.bg-gradient-teal.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-teal.btn.dropdown-toggle{background-image:none!important}.bg-gradient-teal.btn:hover{border-color:#199d76;color:#ececec;background:#1ba87e linear-gradient(180deg,#3bb390,#1ba87e) repeat-x!important}.bg-gradient-teal.btn.active,.bg-gradient-teal.btn:active,.bg-gradient-teal.btn:not(:disabled):not(.disabled).active,.bg-gradient-teal.btn:not(:disabled):not(.disabled):active{border-color:#17926e;color:#fff;background:#199d76 linear-gradient(180deg,#39aa89,#199d76) repeat-x!important}.bg-gradient-cyan{color:#fff;background:#7367f0 linear-gradient(180deg,#867cf1,#7367f0) repeat-x!important}.bg-gradient-cyan.btn.disabled,.bg-gradient-cyan.btn:disabled,.bg-gradient-cyan.btn:not(:disabled):not(.disabled).active,.bg-gradient-cyan.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-cyan.btn.dropdown-toggle{background-image:none!important}.bg-gradient-cyan.btn:hover{border-color:#4839eb;color:#ececec;background:#5344ed linear-gradient(180deg,#6a5eef,#5344ed) repeat-x!important}.bg-gradient-cyan.btn.active,.bg-gradient-cyan.btn:active,.bg-gradient-cyan.btn:not(:disabled):not(.disabled).active,.bg-gradient-cyan.btn:not(:disabled):not(.disabled):active{border-color:#3e2dea;color:#fff;background:#4839eb linear-gradient(180deg,#6155ed,#4839eb) repeat-x!important}.bg-gradient-white{color:#2a2e30;background:#fff linear-gradient(180deg,#fdfdfe,#fff) repeat-x!important}.bg-gradient-white.btn.disabled,.bg-gradient-white.btn:disabled,.bg-gradient-white.btn:not(:disabled):not(.disabled).active,.bg-gradient-white.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-white.btn.dropdown-toggle{background-image:none!important}.bg-gradient-white.btn:hover{border-color:#e6e6e6;color:#181a1c;background:#ececec linear-gradient(180deg,#ecedee,#ececec) repeat-x!important}.bg-gradient-white.btn.active,.bg-gradient-white.btn:active,.bg-gradient-white.btn:not(:disabled):not(.disabled).active,.bg-gradient-white.btn:not(:disabled):not(.disabled):active{border-color:#dfdfdf;color:#2a2e30;background:#e6e6e6 linear-gradient(180deg,#e7e8e9,#e6e6e6) repeat-x!important}.bg-gradient-gray{color:#2a2e30;background:#b8c2cc linear-gradient(180deg,#c0c9d2,#b8c2cc) repeat-x!important}.bg-gradient-gray.btn.disabled,.bg-gradient-gray.btn:disabled,.bg-gradient-gray.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-gray.btn.dropdown-toggle{background-image:none!important}.bg-gradient-gray.btn:hover{border-color:#9aa9b7;color:#181a1c;background:#a2afbc linear-gradient(180deg,#aeb9c5,#a2afbc) repeat-x!important}.bg-gradient-gray.btn.active,.bg-gradient-gray.btn:active,.bg-gradient-gray.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray.btn:not(:disabled):not(.disabled):active{border-color:#93a2b1;color:#2a2e30;background:#9aa9b7 linear-gradient(180deg,#a7b4c1,#9aa9b7) repeat-x!important}.bg-gradient-gray-dark{color:#fff;background:#1e1e1e linear-gradient(180deg,#3d3e3f,#1e1e1e) repeat-x!important}.bg-gradient-gray-dark.btn.disabled,.bg-gradient-gray-dark.btn:disabled,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-gray-dark.btn.dropdown-toggle{background-image:none!important}.bg-gradient-gray-dark.btn:hover{border-color:#050505;color:#ececec;background:#0b0b0b linear-gradient(180deg,#2d2e2e,#0b0b0b) repeat-x!important}.bg-gradient-gray-dark.btn.active,.bg-gradient-gray-dark.btn:active,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active{border-color:#000;color:#fff;background:#050505 linear-gradient(180deg,#282829,#050505) repeat-x!important}[class^=bg-].disabled{opacity:.65}a.text-muted:hover{color:#4e9876!important}.link-muted{color:#5d6974}.link-muted:focus,.link-muted:hover{color:#464f58}.link-black{color:#b8c2cc}.link-black:focus,.link-black:hover{color:#e6e8ea}.accent-primary .btn-link,.accent-primary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#4e9876}.accent-primary .btn-link:hover,.accent-primary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#34654f}.accent-primary .dropdown-item.active,.accent-primary .dropdown-item:active{background:#4e9876;color:#fff}.accent-primary .custom-control-input:checked~.custom-control-label:before{background:#4e9876;border-color:#2b5542}.accent-primary .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-primary .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-primary .custom-file-input:focus~.custom-file-label,.accent-primary .custom-select:focus,.accent-primary .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#9acbb5}.accent-primary .page-item .page-link{color:#4e9876}.accent-primary .page-item.active .page-link,.accent-primary .page-item.active a{background-color:#4e9876;border-color:#4e9876;color:#fff}.accent-primary .page-item.disabled .page-link,.accent-primary .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-primary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-primary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-primary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-primary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-secondary .btn-link,.accent-secondary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#b8c2cc}.accent-secondary .btn-link:hover,.accent-secondary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#8b9cac}.accent-secondary .dropdown-item.active,.accent-secondary .dropdown-item:active{background:#b8c2cc;color:#2a2e30}.accent-secondary .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.accent-secondary .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-secondary .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-secondary .custom-file-input:focus~.custom-file-label,.accent-secondary .custom-select:focus,.accent-secondary .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-secondary .page-item .page-link{color:#b8c2cc}.accent-secondary .page-item.active .page-link,.accent-secondary .page-item.active a{background-color:#b8c2cc;border-color:#b8c2cc;color:#fff}.accent-secondary .page-item.disabled .page-link,.accent-secondary .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-secondary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-secondary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-secondary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-secondary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-success .btn-link,.accent-success a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#21b978}.accent-success .btn-link:hover,.accent-success a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#15784e}.accent-success .dropdown-item.active,.accent-success .dropdown-item:active{background:#21b978;color:#fff}.accent-success .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.accent-success .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-success .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-success .custom-file-input:focus~.custom-file-label,.accent-success .custom-select:focus,.accent-success .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#73e6b5}.accent-success .page-item .page-link{color:#21b978}.accent-success .page-item.active .page-link,.accent-success .page-item.active a{background-color:#21b978;border-color:#21b978;color:#fff}.accent-success .page-item.disabled .page-link,.accent-success .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-success [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-success [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-success [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-success [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-info .btn-link,.accent-info a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#4277cf}.accent-info .btn-link:hover,.accent-info a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#28549d}.accent-info .dropdown-item.active,.accent-info .dropdown-item:active{background:#4277cf;color:#fff}.accent-info .custom-control-input:checked~.custom-control-label:before{background:#4277cf;border-color:#234988}.accent-info .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-info .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-info .custom-file-input:focus~.custom-file-label,.accent-info .custom-select:focus,.accent-info .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#a8c0e9}.accent-info .page-item .page-link{color:#4277cf}.accent-info .page-item.active .page-link,.accent-info .page-item.active a{background-color:#4277cf;border-color:#4277cf;color:#fff}.accent-info .page-item.disabled .page-link,.accent-info .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-info [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-info [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-info [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-info [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-warning .btn-link,.accent-warning a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#dda451}.accent-warning .btn-link:hover,.accent-warning a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#bd7f25}.accent-warning .dropdown-item.active,.accent-warning .dropdown-item:active{background:#dda451;color:#2a2e30}.accent-warning .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.accent-warning .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-warning .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-warning .custom-file-input:focus~.custom-file-label,.accent-warning .custom-select:focus,.accent-warning .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f2dcbc}.accent-warning .page-item .page-link{color:#dda451}.accent-warning .page-item.active .page-link,.accent-warning .page-item.active a{background-color:#dda451;border-color:#dda451;color:#fff}.accent-warning .page-item.disabled .page-link,.accent-warning .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-warning [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-warning [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-warning [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-warning [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-danger .btn-link,.accent-danger a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#ea5455}.accent-danger .btn-link:hover,.accent-danger a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#d71a1c}.accent-danger .dropdown-item.active,.accent-danger .dropdown-item:active{background:#ea5455;color:#fff}.accent-danger .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.accent-danger .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-danger .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-danger .custom-file-input:focus~.custom-file-label,.accent-danger .custom-select:focus,.accent-danger .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f8c6c6}.accent-danger .page-item .page-link{color:#ea5455}.accent-danger .page-item.active .page-link,.accent-danger .page-item.active a{background-color:#ea5455;border-color:#ea5455;color:#fff}.accent-danger .page-item.disabled .page-link,.accent-danger .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-danger [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-danger [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-danger [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-danger [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-light .btn-link,.accent-light a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#f7f7f9}.accent-light .btn-link:hover,.accent-light a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#cbcbd8}.accent-light .dropdown-item.active,.accent-light .dropdown-item:active{background:#f7f7f9;color:#2a2e30}.accent-light .custom-control-input:checked~.custom-control-label:before{background:#f7f7f9;border-color:#bdbdcd}.accent-light .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-light .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-light .custom-file-input:focus~.custom-file-label,.accent-light .custom-select:focus,.accent-light .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-light .page-item .page-link{color:#f7f7f9}.accent-light .page-item.active .page-link,.accent-light .page-item.active a{background-color:#f7f7f9;border-color:#f7f7f9;color:#fff}.accent-light .page-item.disabled .page-link,.accent-light .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-light [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-light [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-light [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-light [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-dark .btn-link,.accent-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#22292f}.accent-dark .btn-link:hover,.accent-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#020203}.accent-dark .dropdown-item.active,.accent-dark .dropdown-item:active{background:#22292f;color:#fff}.accent-dark .custom-control-input:checked~.custom-control-label:before{background:#22292f;border-color:#000}.accent-dark .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-dark .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-dark .custom-file-input:focus~.custom-file-label,.accent-dark .custom-select:focus,.accent-dark .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#586a79}.accent-dark .page-item .page-link{color:#22292f}.accent-dark .page-item.active .page-link,.accent-dark .page-item.active a{background-color:#22292f;border-color:#22292f;color:#fff}.accent-dark .page-item.disabled .page-link,.accent-dark .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-lightblue .btn-link,.accent-lightblue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#3c8dbc}.accent-lightblue .btn-link:hover,.accent-lightblue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#296282}.accent-lightblue .dropdown-item.active,.accent-lightblue .dropdown-item:active{background:#3c8dbc;color:#fff}.accent-lightblue .custom-control-input:checked~.custom-control-label:before{background:#3c8dbc;border-color:#23536f}.accent-lightblue .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-lightblue .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-lightblue .custom-file-input:focus~.custom-file-label,.accent-lightblue .custom-select:focus,.accent-lightblue .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#99c5de}.accent-lightblue .page-item .page-link{color:#3c8dbc}.accent-lightblue .page-item.active .page-link,.accent-lightblue .page-item.active a{background-color:#3c8dbc;border-color:#3c8dbc;color:#fff}.accent-lightblue .page-item.disabled .page-link,.accent-lightblue .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-lightblue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lightblue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-lightblue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lightblue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-navy .btn-link,.accent-navy a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#001f3f}.accent-navy .btn-link:hover,.accent-navy a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#000}.accent-navy .dropdown-item.active,.accent-navy .dropdown-item:active{background:#001f3f;color:#fff}.accent-navy .custom-control-input:checked~.custom-control-label:before{background:#001f3f;border-color:#000}.accent-navy .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-navy .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-navy .custom-file-input:focus~.custom-file-label,.accent-navy .custom-select:focus,.accent-navy .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#005ebf}.accent-navy .page-item .page-link{color:#001f3f}.accent-navy .page-item.active .page-link,.accent-navy .page-item.active a{background-color:#001f3f;border-color:#001f3f;color:#fff}.accent-navy .page-item.disabled .page-link,.accent-navy .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-navy [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-navy [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-navy [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-navy [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-olive .btn-link,.accent-olive a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#3d9970}.accent-olive .btn-link:hover,.accent-olive a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#276248}.accent-olive .dropdown-item.active,.accent-olive .dropdown-item:active{background:#3d9970;color:#fff}.accent-olive .custom-control-input:checked~.custom-control-label:before{background:#3d9970;border-color:#20503b}.accent-olive .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-olive .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-olive .custom-file-input:focus~.custom-file-label,.accent-olive .custom-select:focus,.accent-olive .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#87cfaf}.accent-olive .page-item .page-link{color:#3d9970}.accent-olive .page-item.active .page-link,.accent-olive .page-item.active a{background-color:#3d9970;border-color:#3d9970;color:#fff}.accent-olive .page-item.disabled .page-link,.accent-olive .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-olive [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-olive [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-olive [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-olive [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-lime .btn-link,.accent-lime a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#01ff70}.accent-lime .btn-link:hover,.accent-lime a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#00b44e}.accent-lime .dropdown-item.active,.accent-lime .dropdown-item:active{background:#01ff70;color:#2a2e30}.accent-lime .custom-control-input:checked~.custom-control-label:before{background:#01ff70;border-color:#009a43}.accent-lime .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-lime .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-lime .custom-file-input:focus~.custom-file-label,.accent-lime .custom-select:focus,.accent-lime .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#81ffb8}.accent-lime .page-item .page-link{color:#01ff70}.accent-lime .page-item.active .page-link,.accent-lime .page-item.active a{background-color:#01ff70;border-color:#01ff70;color:#fff}.accent-lime .page-item.disabled .page-link,.accent-lime .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-lime [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lime [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-lime [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lime [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-fuchsia .btn-link,.accent-fuchsia a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#f012be}.accent-fuchsia .btn-link:hover,.accent-fuchsia a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#ab0b87}.accent-fuchsia .dropdown-item.active,.accent-fuchsia .dropdown-item:active{background:#f012be;color:#fff}.accent-fuchsia .custom-control-input:checked~.custom-control-label:before{background:#f012be;border-color:#930974}.accent-fuchsia .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-fuchsia .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-fuchsia .custom-file-input:focus~.custom-file-label,.accent-fuchsia .custom-select:focus,.accent-fuchsia .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f88adf}.accent-fuchsia .page-item .page-link{color:#f012be}.accent-fuchsia .page-item.active .page-link,.accent-fuchsia .page-item.active a{background-color:#f012be;border-color:#f012be;color:#fff}.accent-fuchsia .page-item.disabled .page-link,.accent-fuchsia .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-fuchsia [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-fuchsia [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-fuchsia [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-fuchsia [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-maroon .btn-link,.accent-maroon a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#d81b60}.accent-maroon .btn-link:hover,.accent-maroon a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#941342}.accent-maroon .dropdown-item.active,.accent-maroon .dropdown-item:active{background:#d81b60;color:#fff}.accent-maroon .custom-control-input:checked~.custom-control-label:before{background:#d81b60;border-color:#7d1038}.accent-maroon .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-maroon .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-maroon .custom-file-input:focus~.custom-file-label,.accent-maroon .custom-select:focus,.accent-maroon .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f083ab}.accent-maroon .page-item .page-link{color:#d81b60}.accent-maroon .page-item.active .page-link,.accent-maroon .page-item.active a{background-color:#d81b60;border-color:#d81b60;color:#fff}.accent-maroon .page-item.disabled .page-link,.accent-maroon .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-maroon [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-maroon [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-maroon [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-maroon [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-blue .btn-link,.accent-blue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#3085d6}.accent-blue .btn-link:hover,.accent-blue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#1f5e9b}.accent-blue .dropdown-item.active,.accent-blue .dropdown-item:active{background:#3085d6;color:#fff}.accent-blue .custom-control-input:checked~.custom-control-label:before{background:#3085d6;border-color:#1a5186}.accent-blue .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-blue .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-blue .custom-file-input:focus~.custom-file-label,.accent-blue .custom-select:focus,.accent-blue .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#9ac4eb}.accent-blue .page-item .page-link{color:#3085d6}.accent-blue .page-item.active .page-link,.accent-blue .page-item.active a{background-color:#3085d6;border-color:#3085d6;color:#fff}.accent-blue .page-item.disabled .page-link,.accent-blue .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-blue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-blue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-blue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-blue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-indigo .btn-link,.accent-indigo a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#5c6bc6}.accent-indigo .btn-link:hover,.accent-indigo a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#37469e}.accent-indigo .dropdown-item.active,.accent-indigo .dropdown-item:active{background:#5c6bc6;color:#fff}.accent-indigo .custom-control-input:checked~.custom-control-label:before{background:#5c6bc6;border-color:#313e8b}.accent-indigo .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-indigo .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-indigo .custom-file-input:focus~.custom-file-label,.accent-indigo .custom-select:focus,.accent-indigo .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#bac1e7}.accent-indigo .page-item .page-link{color:#5c6bc6}.accent-indigo .page-item.active .page-link,.accent-indigo .page-item.active a{background-color:#5c6bc6;border-color:#5c6bc6;color:#fff}.accent-indigo .page-item.disabled .page-link,.accent-indigo .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-indigo [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-indigo [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-indigo [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-indigo [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-purple .btn-link,.accent-purple a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#6f42c1}.accent-purple .btn-link:hover,.accent-purple a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#4e2d89}.accent-purple .dropdown-item.active,.accent-purple .dropdown-item:active{background:#6f42c1;color:#fff}.accent-purple .custom-control-input:checked~.custom-control-label:before{background:#6f42c1;border-color:#432776}.accent-purple .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-purple .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-purple .custom-file-input:focus~.custom-file-label,.accent-purple .custom-select:focus,.accent-purple .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#b8a2e0}.accent-purple .page-item .page-link{color:#6f42c1}.accent-purple .page-item.active .page-link,.accent-purple .page-item.active a{background-color:#6f42c1;border-color:#6f42c1;color:#fff}.accent-purple .page-item.disabled .page-link,.accent-purple .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-purple [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-purple [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-purple [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-purple [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-pink .btn-link,.accent-pink a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#ff8acc}.accent-pink .btn-link:hover,.accent-pink a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#ff3eab}.accent-pink .dropdown-item.active,.accent-pink .dropdown-item:active{background:#ff8acc;color:#2a2e30}.accent-pink .custom-control-input:checked~.custom-control-label:before{background:#ff8acc;border-color:#ff24a0}.accent-pink .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-pink .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-pink .custom-file-input:focus~.custom-file-label,.accent-pink .custom-select:focus,.accent-pink .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-pink .page-item .page-link{color:#ff8acc}.accent-pink .page-item.active .page-link,.accent-pink .page-item.active a{background-color:#ff8acc;border-color:#ff8acc;color:#fff}.accent-pink .page-item.disabled .page-link,.accent-pink .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-pink [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-pink [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-pink [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-pink [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-red .btn-link,.accent-red a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#ea5455}.accent-red .btn-link:hover,.accent-red a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#d71a1c}.accent-red .dropdown-item.active,.accent-red .dropdown-item:active{background:#ea5455;color:#fff}.accent-red .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.accent-red .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-red .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-red .custom-file-input:focus~.custom-file-label,.accent-red .custom-select:focus,.accent-red .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f8c6c6}.accent-red .page-item .page-link{color:#ea5455}.accent-red .page-item.active .page-link,.accent-red .page-item.active a{background-color:#ea5455;border-color:#ea5455;color:#fff}.accent-red .page-item.disabled .page-link,.accent-red .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-red [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-red [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-red [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-red [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-orange .btn-link,.accent-orange a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#dda451}.accent-orange .btn-link:hover,.accent-orange a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#bd7f25}.accent-orange .dropdown-item.active,.accent-orange .dropdown-item:active{background:#dda451;color:#2a2e30}.accent-orange .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.accent-orange .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-orange .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-orange .custom-file-input:focus~.custom-file-label,.accent-orange .custom-select:focus,.accent-orange .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f2dcbc}.accent-orange .page-item .page-link{color:#dda451}.accent-orange .page-item.active .page-link,.accent-orange .page-item.active a{background-color:#dda451;border-color:#dda451;color:#fff}.accent-orange .page-item.disabled .page-link,.accent-orange .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-orange [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-orange [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-orange [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-orange [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-yellow .btn-link,.accent-yellow a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#edc30e}.accent-yellow .btn-link:hover,.accent-yellow a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#a5880a}.accent-yellow .dropdown-item.active,.accent-yellow .dropdown-item:active{background:#edc30e;color:#2a2e30}.accent-yellow .custom-control-input:checked~.custom-control-label:before{background:#edc30e;border-color:#8d7408}.accent-yellow .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-yellow .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-yellow .custom-file-input:focus~.custom-file-label,.accent-yellow .custom-select:focus,.accent-yellow .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f8e283}.accent-yellow .page-item .page-link{color:#edc30e}.accent-yellow .page-item.active .page-link,.accent-yellow .page-item.active a{background-color:#edc30e;border-color:#edc30e;color:#fff}.accent-yellow .page-item.disabled .page-link,.accent-yellow .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-yellow [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-yellow [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-yellow [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-yellow [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-green .btn-link,.accent-green a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#21b978}.accent-green .btn-link:hover,.accent-green a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#15784e}.accent-green .dropdown-item.active,.accent-green .dropdown-item:active{background:#21b978;color:#fff}.accent-green .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.accent-green .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-green .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-green .custom-file-input:focus~.custom-file-label,.accent-green .custom-select:focus,.accent-green .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#73e6b5}.accent-green .page-item .page-link{color:#21b978}.accent-green .page-item.active .page-link,.accent-green .page-item.active a{background-color:#21b978;border-color:#21b978;color:#fff}.accent-green .page-item.disabled .page-link,.accent-green .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-green [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-green [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-green [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-green [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-teal .btn-link,.accent-teal a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#20c997}.accent-teal .btn-link:hover,.accent-teal a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#158765}.accent-teal .dropdown-item.active,.accent-teal .dropdown-item:active{background:#20c997;color:#fff}.accent-teal .custom-control-input:checked~.custom-control-label:before{background:#20c997;border-color:#127155}.accent-teal .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-teal .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-teal .custom-file-input:focus~.custom-file-label,.accent-teal .custom-select:focus,.accent-teal .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#7eeaca}.accent-teal .page-item .page-link{color:#20c997}.accent-teal .page-item.active .page-link,.accent-teal .page-item.active a{background-color:#20c997;border-color:#20c997;color:#fff}.accent-teal .page-item.disabled .page-link,.accent-teal .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-teal [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-teal [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-teal [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-teal [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-cyan .btn-link,.accent-cyan a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#7367f0}.accent-cyan .btn-link:hover,.accent-cyan a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#3321e9}.accent-cyan .dropdown-item.active,.accent-cyan .dropdown-item:active{background:#7367f0;color:#fff}.accent-cyan .custom-control-input:checked~.custom-control-label:before{background:#7367f0;border-color:#2716db}.accent-cyan .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-cyan .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-cyan .custom-file-input:focus~.custom-file-label,.accent-cyan .custom-select:focus,.accent-cyan .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#dedbfb}.accent-cyan .page-item .page-link{color:#7367f0}.accent-cyan .page-item.active .page-link,.accent-cyan .page-item.active a{background-color:#7367f0;border-color:#7367f0;color:#fff}.accent-cyan .page-item.disabled .page-link,.accent-cyan .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-cyan [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-cyan [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-cyan [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-cyan [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-white .btn-link,.accent-white a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#fff}.accent-white .btn-link:hover,.accent-white a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#d9d9d9}.accent-white .dropdown-item.active,.accent-white .dropdown-item:active{background:#fff;color:#2a2e30}.accent-white .custom-control-input:checked~.custom-control-label:before{background:#fff;border-color:#ccc}.accent-white .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-white .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-white .custom-file-input:focus~.custom-file-label,.accent-white .custom-select:focus,.accent-white .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-white .page-item .page-link{color:#fff}.accent-white .page-item.active .page-link,.accent-white .page-item.active a{background-color:#fff;border-color:#fff;color:#fff}.accent-white .page-item.disabled .page-link,.accent-white .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-white [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-white [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-white [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-white [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-gray .btn-link,.accent-gray a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#b8c2cc}.accent-gray .btn-link:hover,.accent-gray a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#8b9cac}.accent-gray .dropdown-item.active,.accent-gray .dropdown-item:active{background:#b8c2cc;color:#2a2e30}.accent-gray .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.accent-gray .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-gray .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-gray .custom-file-input:focus~.custom-file-label,.accent-gray .custom-select:focus,.accent-gray .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-gray .page-item .page-link{color:#b8c2cc}.accent-gray .page-item.active .page-link,.accent-gray .page-item.active a{background-color:#b8c2cc;border-color:#b8c2cc;color:#fff}.accent-gray .page-item.disabled .page-link,.accent-gray .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-gray [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-gray [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-gray-dark .btn-link,.accent-gray-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#1e1e1e}.accent-gray-dark .btn-link:hover,.accent-gray-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#000}.accent-gray-dark .dropdown-item.active,.accent-gray-dark .dropdown-item:active{background:#1e1e1e;color:#fff}.accent-gray-dark .custom-control-input:checked~.custom-control-label:before{background:#1e1e1e;border-color:#000}.accent-gray-dark .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-gray-dark .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-gray-dark .custom-file-input:focus~.custom-file-label,.accent-gray-dark .custom-select:focus,.accent-gray-dark .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#5e5e5e}.accent-gray-dark .page-item .page-link{color:#1e1e1e}.accent-gray-dark .page-item.active .page-link,.accent-gray-dark .page-item.active a{background-color:#1e1e1e;border-color:#1e1e1e;color:#fff}.accent-gray-dark .page-item.disabled .page-link,.accent-gray-dark .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-gray-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-gray-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}[class*=accent-] a.btn-primary{color:#fff}[class*=accent-] a.btn-secondary{color:#2a2e30}[class*=accent-] a.btn-info,[class*=accent-] a.btn-success{color:#fff}[class*=accent-] a.btn-warning{color:#2a2e30}[class*=accent-] a.btn-danger{color:#fff}[class*=accent-] a.btn-light{color:#2a2e30}[class*=accent-] a.btn-dark{color:#fff}"
  },
  {
    "path": "public/vendor/dcat-admin/adminlte/adminlte.css",
    "content": "/*!\n *   AdminLTE v3.0.4\n *   Author: Colorlib\n *   Website: AdminLTE.io <http://adminlte.io>\n *   License: Open source - MIT <http://opensource.org/licenses/MIT>\n */\n\n/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */:root{--blue:#3085d6;--indigo:#5c6bc6;--purple:#6f42c1;--pink:#ff8acc;--red:#ea5455;--orange:#dda451;--yellow:#edc30e;--green:#21b978;--teal:#20c997;--cyan:#7367f0;--white:#fff;--gray:#b8c2cc;--gray-dark:#1e1e1e;--primary:#586cb1;--secondary:#b8c2cc;--success:#21b978;--info:#4277cf;--warning:#dda451;--danger:#ea5455;--light:#f7f7f9;--dark:#22292f;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:\"Montserrat\",Helvetica,Arial,serif;--font-family-monospace:\"Montserrat\",Helvetica,Arial,serif}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(34,41,47,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Montserrat,Helvetica,Arial,serif;font-size:1rem;font-weight:400;line-height:1.45;color:#626262;text-align:left;background-color:#eff1f7}[tabindex=\"-1\"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#4c60a3;background-color:transparent}a,a:hover{text-decoration:none}a:hover{color:#3c4b80}a:not([href]):not([tabindex]),a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:Montserrat,Helvetica,Arial,serif;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#b8c2cc;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:#2c2c2c}.h1,h1{font-size:2rem}.h2,h2{font-size:1.74rem}.h3,h3{font-size:1.51rem}.h4,h4{font-size:1.32rem}.h5,h5{font-size:1.14rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(34,41,47,.1)}.small,small{font-size:smaller;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:smaller;color:#b8c2cc}.blockquote-footer:before{content:\"\\2014\\A0\"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#eff1f7;border:1px solid #dae1e7;border-radius:.5rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#b8c2cc}code{word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:90%;color:#fff;background-color:#eee;border-radius:.25rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:90%;color:#2a2e30}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:14px;padding-left:14px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:14px;padding-left:14px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-14px;margin-left:-14px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:14px;padding-left:14px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width:576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width:768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width:992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;margin-bottom:1rem;color:#626262}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #eff1f7}.table thead th{vertical-align:bottom;border-bottom:2px solid #eff1f7}.table tbody+tbody{border-top:2px solid #eff1f7}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #eff1f7}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(34,41,47,.05)}.table-hover tbody tr:hover{color:#626262;background-color:rgba(34,41,47,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#d0d6e9}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#a8b3d6}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#bfc7e1}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#ebeef1}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#dadfe4}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#dce1e7}.table-success,.table-success>td,.table-success>th{background-color:#c1ebd9}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8cdbb9}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#aee5cd}.table-info,.table-info>td,.table-info>th{background-color:#cad9f2}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#9db8e6}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#b6caed}.table-warning,.table-warning>td,.table-warning>th{background-color:#f5e6ce}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#edd0a5}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#f1dbb9}.table-danger,.table-danger>td,.table-danger>th{background-color:#f9cfcf}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#f4a6a7}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f6b8b8}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfd}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfbfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#f0f0f0}.table-dark,.table-dark>td,.table-dark>th{background-color:#c1c3c5}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#8c9093}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b4b6b9}.table-active,.table-active>td,.table-active>th{background-color:rgba(34,41,47,.075)}.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(23,28,32,.075)}.table .thead-dark th{color:#fff;background-color:#1e1e1e;border-color:#313131}.table .thead-light th{color:#4e5154;background-color:#ededed;border-color:#eff1f7}.table-dark{color:#fff;background-color:#1e1e1e}.table-dark td,.table-dark th,.table-dark thead th{border-color:#313131}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:34px;padding:.7rem;font-size:.96rem;font-weight:400;line-height:1.25;color:#4e5154;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#4e5154;background-color:#fff;border-color:#586cb1;outline:0;box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.form-control::-moz-placeholder{color:rgba(0,0,0,.5);opacity:1}.form-control:-ms-input-placeholder{color:rgba(0,0,0,.5);opacity:1}.form-control::placeholder{color:rgba(0,0,0,.5);opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#f5f5f1;opacity:1}select.form-control:focus::-ms-value{color:#4e5154;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.7rem + 1px);padding-bottom:calc(.7rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.25}.col-form-label-lg{padding-top:calc(1rem + 1px);padding-bottom:calc(1rem + 1px);font-size:1.25rem;line-height:1.25}.col-form-label-sm{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:.7rem;line-height:1}.form-control-plaintext{display:block;width:100%;padding-top:.7rem;padding-bottom:.7rem;margin-bottom:0;line-height:1.25;color:#adb5bd;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:2rem;padding:.5rem 1.5rem;font-size:.7rem;line-height:1;border-radius:4px}.form-control-lg{height:calc(1.25em + 2rem + 2px);padding:1rem 2.5rem;font-size:1.25rem;line-height:1.25;border-radius:6px}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#b8c2cc}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:smaller;color:#21b978}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:1rem;line-height:1.45;color:#fff;background-color:rgba(33,185,120,.9);border-radius:.5rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#21b978;padding-right:calc(1.25em + 1.4rem);background-repeat:no-repeat;background-position:100% calc(.3125em + .35rem);background-size:calc(.625em + .7rem) calc(.625em + .7rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#21b978;box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.25em + 1.4rem);background-position:top calc(.3125em + .35rem) right calc(.3125em + .35rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#21b978;padding-right:calc(.75em + 2.75rem);background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%231e1e1e' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .7rem center/8px 10px,url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%2321b978' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E\") #fff no-repeat center right 1.7rem/calc(.625em + .7rem) calc(.625em + .7rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#21b978;box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#21b978}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#21b978}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#21b978}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#32db93;background-color:#32db93}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#21b978}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#21b978;box-shadow:0 0 0 .2rem rgba(33,185,120,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:smaller;color:#ea5455}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:1rem;line-height:1.45;color:#fff;background-color:rgba(234,84,85,.9);border-radius:.5rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#ea5455;padding-right:calc(1.25em + 1.4rem);background-repeat:no-repeat;background-position:100% calc(.3125em + .35rem);background-size:calc(.625em + .7rem) calc(.625em + .7rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#ea5455;box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.25em + 1.4rem);background-position:top calc(.3125em + .35rem) right calc(.3125em + .35rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#ea5455;padding-right:calc(.75em + 2.75rem);background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%231e1e1e' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .7rem center/8px 10px,url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ea5455' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23ea5455' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E\") #fff no-repeat center right 1.7rem/calc(.625em + .7rem) calc(.625em + .7rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#ea5455;box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#ea5455}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#ea5455}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#ea5455}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#f08182;background-color:#f08182}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#ea5455}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#ea5455;box-shadow:0 0 0 .2rem rgba(234,84,85,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#626262;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0 solid transparent;padding:.9rem 2rem;font-size:1rem;line-height:1;border-radius:.42rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#626262;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(88,108,177,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#586cb1;border-color:#586cb1}.btn-primary:hover{color:#fff;background-color:#4f63a8;border-color:#4f63a8}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(113,130,189,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#586cb1;border-color:#586cb1}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#4c60a3;border-color:#4c60a3}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(113,130,189,.5)}.btn-secondary{color:#2a2e30;background-color:#b8c2cc;border-color:#b8c2cc}.btn-secondary:hover{color:#2a2e30;background-color:#aeb9c5;border-color:#aeb9c5}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(163,172,181,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#2a2e30;background-color:#b8c2cc;border-color:#b8c2cc}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#2a2e30;background-color:#a9b5c1;border-color:#a9b5c1}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(163,172,181,.5)}.btn-success{color:#fff;background-color:#21b978;border-color:#21b978}.btn-success:hover{color:#fff;background-color:#1eaa6e;border-color:#1eaa6e}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(66,196,140,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#21b978;border-color:#21b978}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1da36a;border-color:#1da36a}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(66,196,140,.5)}.btn-info{color:#fff;background-color:#4277cf;border-color:#4277cf}.btn-info:hover{color:#fff;background-color:#346dcb;border-color:#346dcb}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(94,139,214,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#4277cf;border-color:#4277cf}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#3269c5;border-color:#3269c5}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(94,139,214,.5)}.btn-warning{color:#2a2e30;background-color:#dda451;border-color:#dda451}.btn-warning:hover{color:#2a2e30;background-color:#da9c42;border-color:#da9c42}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(194,146,76,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#2a2e30;background-color:#dda451;border-color:#dda451}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#2a2e30;background-color:#d9993c;border-color:#d9993c}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(194,146,76,.5)}.btn-danger{color:#fff;background-color:#ea5455;border-color:#ea5455}.btn-danger:hover{color:#fff;background-color:#e84445;border-color:#e84445}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(237,110,111,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#ea5455;border-color:#ea5455}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#e73d3e;border-color:#e73d3e}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(237,110,111,.5)}.btn-light{color:#2a2e30;background-color:#f7f7f9;border-color:#f7f7f9}.btn-light:hover{color:#2a2e30;background-color:#ededf1;border-color:#ededf1}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#2a2e30;background-color:#f7f7f9;border-color:#f7f7f9}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#2a2e30;background-color:#e8e8ee;border-color:#e8e8ee}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#22292f;border-color:#22292f}.btn-dark:hover{color:#fff;background-color:#1b2025;border-color:#1b2025}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(67,73,78,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#22292f;border-color:#22292f}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#171c20;border-color:#171c20}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(67,73,78,.5)}.btn-outline-primary,.btn-outline-primary:hover{color:#586cb1;border-color:#586cb1}.btn-outline-primary:hover{background-color:rgba(88,108,177,.1)}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(88,108,177,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#586cb1;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#586cb1;border-color:#586cb1}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(88,108,177,.5)}.btn-outline-secondary,.btn-outline-secondary:hover{color:#b8c2cc;border-color:#b8c2cc}.btn-outline-secondary:hover{background-color:rgba(184,194,204,.1)}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(184,194,204,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#b8c2cc;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#2a2e30;background-color:#b8c2cc;border-color:#b8c2cc}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(184,194,204,.5)}.btn-outline-success,.btn-outline-success:hover{color:#21b978;border-color:#21b978}.btn-outline-success:hover{background-color:rgba(33,185,120,.1)}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(33,185,120,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#21b978;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#21b978;border-color:#21b978}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(33,185,120,.5)}.btn-outline-info,.btn-outline-info:hover{color:#4277cf;border-color:#4277cf}.btn-outline-info:hover{background-color:rgba(66,119,207,.1)}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(66,119,207,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#4277cf;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#4277cf;border-color:#4277cf}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(66,119,207,.5)}.btn-outline-warning,.btn-outline-warning:hover{color:#dda451;border-color:#dda451}.btn-outline-warning:hover{background-color:rgba(221,164,81,.1)}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(221,164,81,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#dda451;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#2a2e30;background-color:#dda451;border-color:#dda451}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(221,164,81,.5)}.btn-outline-danger,.btn-outline-danger:hover{color:#ea5455;border-color:#ea5455}.btn-outline-danger:hover{background-color:rgba(234,84,85,.1)}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(234,84,85,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#ea5455;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#ea5455;border-color:#ea5455}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(234,84,85,.5)}.btn-outline-light,.btn-outline-light:hover{color:#f7f7f9;border-color:#f7f7f9}.btn-outline-light:hover{background-color:rgba(247,247,249,.1)}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(247,247,249,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f7f7f9;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#2a2e30;background-color:#f7f7f9;border-color:#f7f7f9}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(247,247,249,.5)}.btn-outline-dark,.btn-outline-dark:hover{color:#22292f;border-color:#22292f}.btn-outline-dark:hover{background-color:rgba(34,41,47,.1)}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(34,41,47,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#22292f;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#22292f;border-color:#22292f}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(34,41,47,.5)}.btn-link{font-weight:400;color:#4c60a3;text-decoration:none}.btn-link:hover{color:#3c4b80;text-decoration:none}.btn-link.focus,.btn-link:focus{text-decoration:none;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#b8c2cc;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:1rem 2.5rem;font-size:1.25rem;line-height:1.25;border-radius:.4285rem}.btn-group-sm>.btn,.btn-sm{padding:.5rem 1.5rem;font-size:.7rem;line-height:1;border-radius:.4285rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:10;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.5rem 0 0;font-size:.9375rem;color:#626262;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(34,41,47,.15);border-radius:5px}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.5rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.5rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.5rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\"\";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:\"\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.08)}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#2a2e30;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2122;text-decoration:none;background-color:#eff1f7}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#586cb1}.dropdown-item.disabled,.dropdown-item:disabled{color:#b8c2cc;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:1rem;color:#b8c2cc;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#2a2e30}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:1.5rem;padding-left:1.5rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:1.875rem;padding-left:1.875rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.7rem;margin-bottom:0;font-size:.96rem;font-weight:400;line-height:1.25;color:#4e5154;text-align:center;white-space:nowrap;background-color:#ededed;border:1px solid rgba(0,0,0,.2);border-radius:5px}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.25em + 2rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:1rem 2.5rem;font-size:1.25rem;line-height:1.25;border-radius:6px}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:2rem}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.5rem 1.5rem;font-size:.7rem;line-height:1;border-radius:4px}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.7rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.45rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#586cb1;background-color:#586cb1}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#586cb1}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#d2d7ea;border-color:#d2d7ea}.custom-control-input:disabled~.custom-control-label{color:#b8c2cc}.custom-control-input:disabled~.custom-control-label:before{background-color:#f5f5f1}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.225rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:\"\"}.custom-control-label:after{background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#586cb1;background-color:#586cb1}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(88,108,177,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(88,108,177,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(88,108,177,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.225rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(88,108,177,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.25em + 1.4rem + 1px);padding:.7rem 1.7rem .7rem .7rem;font-size:.96rem;font-weight:400;line-height:1.25;color:#4e5154;vertical-align:middle;background:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%231e1e1e' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right .7rem center/8px 10px;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:5px;appearance:none}.custom-select:focus{border-color:#586cb1;outline:0;box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.custom-select:focus::-ms-value{color:#4e5154;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size=\"1\"]){height:auto;padding-right:.7rem;background-image:none}.custom-select:disabled{color:#b8c2cc;background-color:#ededed}.custom-select::-ms-expand{display:none}.custom-select-sm{height:2rem;padding-top:.5rem;padding-bottom:.5rem;padding-left:1.5rem;font-size:.7rem}.custom-select-lg{height:calc(1.25em + 2rem + 2px);padding-top:1rem;padding-bottom:1rem;padding-left:2.5rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.25em + 1.4rem + 1px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#586cb1;box-shadow:0 3px 10px 0 rgba(0,0,0,.15)}.custom-file-input:disabled~.custom-file-label{background-color:#f5f5f1}.custom-file-input:lang(en)~.custom-file-label:after{content:\"Browse\"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.25em + 1.4rem + 1px);font-weight:400;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:5px}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.7rem;line-height:1.5rem;color:#4e5154}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.25em + 1.4rem);content:\"Browse\";background-color:#ededed;border-left:inherit;border-radius:0 5px 5px 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 3px 10px 0 rgba(0,0,0,.15)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 3px 10px 0 rgba(0,0,0,.15)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 3px 10px 0 rgba(0,0,0,.15)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#586cb1;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#d2d7ea}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dae1e7;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#586cb1;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#d2d7ea}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dae1e7;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#586cb1;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#d2d7ea}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dae1e7;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.357rem .5rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#b8c2cc;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dae1e7}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#ededed #ededed #dae1e7}.nav-tabs .nav-link.disabled{color:#b8c2cc;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#4e5154;background-color:#eff1f7;border-color:#dae1e7 #dae1e7 #eff1f7}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.5rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#586cb1}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:-.368rem;padding-bottom:-.368rem;margin-right:1rem;font-size:2rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.357rem;padding-bottom:.357rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:2rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.42rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:\"\";background:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(34,41,47,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(34,41,47,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(34,41,47,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(34,41,47,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(34,41,47,.9)}.navbar-light .navbar-toggler{color:rgba(34,41,47,.5);border-color:rgba(34,41,47,.1)}.navbar-light .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(34, 41, 47, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-light .navbar-text{color:rgba(34,41,47,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(34,41,47,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(34,41,47,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{margin-bottom:0;background-color:rgba(34,41,47,.03);border-bottom:1px solid rgba(34,41,47,.125)}.card-header:first-child{border-radius:calc(.5rem - 1px) calc(.5rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(34,41,47,.03);border-top:1px solid rgba(34,41,47,.125)}.card-footer:last-child{border-radius:0 0 calc(.5rem - 1px) calc(.5rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.5rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.5rem - 1px);border-bottom-left-radius:calc(.5rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:14px}@media (min-width:576px){.card-deck{flex-flow:row wrap;margin-right:-14px;margin-left:-14px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:14px;margin-bottom:0;margin-left:14px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:14px}@media (min-width:576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-moz-column-count:3;column-count:3;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#ededed;border-radius:.5rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;color:#b8c2cc;content:\"/\"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#b8c2cc}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.5rem}.page-link{position:relative;display:block;padding:.65rem .911rem;margin-left:-1px;line-height:1.25;color:#4c60a3;background-color:#fff;border:1px solid #dae1e7}.page-link:hover{z-index:2;color:#3c4b80;text-decoration:none;background-color:#ededed;border-color:#dae1e7}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(88,108,177,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.page-item:last-child .page-link{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#586cb1;border-color:#586cb1}.page-item.disabled .page-link{color:#b8c2cc;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dae1e7}.pagination-lg .page-link{padding:.5rem 1rem;font-size:2rem;line-height:1.25}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.6rem;border-bottom-left-radius:.6rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.6rem;border-bottom-right-radius:.6rem}.pagination-sm .page-link{padding:.5rem .75rem;font-size:1rem;line-height:1}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.5rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#586cb1}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#445692}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(88,108,177,.5)}.badge-secondary{color:#2a2e30;background-color:#b8c2cc}a.badge-secondary:focus,a.badge-secondary:hover{color:#2a2e30;background-color:#9aa9b7}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(184,194,204,.5)}.badge-success{color:#fff;background-color:#21b978}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#198e5c}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(33,185,120,.5)}.badge-info{color:#fff;background-color:#4277cf}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#2d5fb1}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(66,119,207,.5)}.badge-warning{color:#2a2e30;background-color:#dda451}a.badge-warning:focus,a.badge-warning:hover{color:#2a2e30;background-color:#d28d29}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(221,164,81,.5)}.badge-danger{color:#fff;background-color:#ea5455}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#e42728}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(234,84,85,.5)}.badge-light{color:#2a2e30;background-color:#f7f7f9}a.badge-light:focus,a.badge-light:hover{color:#2a2e30;background-color:#dadae3}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(247,247,249,.5)}.badge-dark{color:#fff;background-color:#22292f}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#0d0f11}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(34,41,47,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#ededed;border-radius:.6rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.5rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close,.alert-dismissible .mailbox-attachment-close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#3e4c73;background-color:#dee2ef;border-color:#d0d6e9}.alert-primary hr{border-top-color:#bfc7e1}.alert-primary .alert-link{color:#2c3652}.alert-secondary{color:#707981;background-color:#f1f3f5;border-color:#ebeef1}.alert-secondary hr{border-top-color:#dce1e7}.alert-secondary .alert-link{color:#585f66}.alert-success{color:#217455;background-color:#d3f1e4;border-color:#c1ebd9}.alert-success hr{border-top-color:#aee5cd}.alert-success .alert-link{color:#164c38}.alert-info{color:#335282;background-color:#d9e4f5;border-color:#cad9f2}.alert-info hr{border-top-color:#b6caed}.alert-info .alert-link{color:#253b5d}.alert-warning{color:#836941;background-color:#f8eddc;border-color:#f5e6ce}.alert-warning hr{border-top-color:#f1dbb9}.alert-warning .alert-link{color:#614e30}.alert-danger{color:#8a3f43;background-color:#fbdddd;border-color:#f9cfcf}.alert-danger hr{border-top-color:#f6b8b8}.alert-danger .alert-link{color:#672f32}.alert-light{color:#919498;background-color:#fdfdfe;border-color:#fdfdfd}.alert-light hr{border-top-color:#f0f0f0}.alert-light .alert-link{color:#777a7f}.alert-dark{color:#22292f;background-color:#d3d4d5;border-color:#c1c3c5}.alert-dark hr{border-top-color:#b4b6b9}.alert-dark .alert-link{color:#0d0f11}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#ededed;border-radius:.5rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#586cb1;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#4e5154;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#4e5154;text-decoration:none;background-color:#babfc7}.list-group-item-action:active{color:#626262;background-color:#ededed}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(34,41,47,.125)}.list-group-item:first-child{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.list-group-item.disabled,.list-group-item:disabled{color:#b8c2cc;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#586cb1;border-color:#586cb1}.list-group-horizontal{flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#3e4c73;background-color:#d0d6e9}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#3e4c73;background-color:#bfc7e1}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#3e4c73;border-color:#3e4c73}.list-group-item-secondary{color:#707981;background-color:#ebeef1}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#707981;background-color:#dce1e7}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#707981;border-color:#707981}.list-group-item-success{color:#217455;background-color:#c1ebd9}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#217455;background-color:#aee5cd}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#217455;border-color:#217455}.list-group-item-info{color:#335282;background-color:#cad9f2}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#335282;background-color:#b6caed}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#335282;border-color:#335282}.list-group-item-warning{color:#836941;background-color:#f5e6ce}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#836941;background-color:#f1dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#836941;border-color:#836941}.list-group-item-danger{color:#8a3f43;background-color:#f9cfcf}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#8a3f43;background-color:#f6b8b8}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#8a3f43;border-color:#8a3f43}.list-group-item-light{color:#919498;background-color:#fdfdfd}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#919498;background-color:#f0f0f0}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#919498;border-color:#919498}.list-group-item-dark{color:#22292f;background-color:#c1c3c5}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#22292f;background-color:#b4b6b9}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#22292f;border-color:#22292f}.close,.mailbox-attachment-close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#22292f;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.mailbox-attachment-close:hover{color:#22292f;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover,.mailbox-attachment-close:not(:disabled):not(.disabled):focus,.mailbox-attachment-close:not(:disabled):not(.disabled):hover{opacity:.75}button.close,button.mailbox-attachment-close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled,a.disabled.mailbox-attachment-close{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(34,41,47,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#b8c2cc;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);content:\"\"}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(34,41,47,.2);border-radius:.6rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#22292f}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #ededed;border-top-left-radius:.6rem;border-top-right-radius:.6rem}.modal-header .close,.modal-header .mailbox-attachment-close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.45}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #ededed;border-bottom-right-radius:.6rem;border-bottom-left-radius:.6rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:Montserrat,Helvetica,Arial,serif;font-style:normal;font-weight:400;line-height:1.45;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:1rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:\"\";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#22292f}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#22292f}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#22292f}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#22292f}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#22292f;border-radius:.5rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:Montserrat,Helvetica,Arial,serif;font-style:normal;font-weight:400;line-height:1.45;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:1rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(34,41,47,.2);border-radius:.6rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .6rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.6rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.6rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(34,41,47,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:#2c2c2c;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.6rem - 1px);border-top-right-radius:calc(.6rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#626262}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:\"\"}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E\")}.carousel-control-next-icon{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E\")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{transform:rotate(1turn)}}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid;border-right:.25em solid transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#445692!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#9aa9b7!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#198e5c!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#2d5fb1!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d28d29!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#e42728!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dadae3!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#0d0f11!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #ededed!important}.border-top{border-top:1px solid #ededed!important}.border-right{border-right:1px solid #ededed!important}.border-bottom{border-bottom:1px solid #ededed!important}.border-left{border-left:1px solid #ededed!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#586cb1!important}.border-secondary{border-color:#b8c2cc!important}.border-success{border-color:#21b978!important}.border-info{border-color:#4277cf!important}.border-warning{border-color:#dda451!important}.border-danger{border-color:#ea5455!important}.border-light{border-color:#f7f7f9!important}.border-dark{border-color:#22292f!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.25rem!important}.rounded{border-radius:.5rem!important}.rounded-top{border-top-left-radius:.5rem!important}.rounded-right,.rounded-top{border-top-right-radius:.5rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.5rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.5rem!important}.rounded-left{border-top-left-radius:.5rem!important}.rounded-lg{border-radius:.6rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:\"\"}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:\"\"}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.8571428571%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{top:0}.fixed-footer .footer,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-footer .footer{bottom:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(34,41,47,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(34,41,47,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(34,41,47,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:\"\";background-color:transparent}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:1rem!important}.mt-1,.my-1{margin-top:1rem!important}.mr-1,.mx-1{margin-right:1rem!important}.mb-1,.my-1{margin-bottom:1rem!important}.ml-1,.mx-1{margin-left:1rem!important}.m-2{margin:1.5rem!important}.mt-2,.my-2{margin-top:1.5rem!important}.mr-2,.mx-2{margin-right:1.5rem!important}.mb-2,.my-2{margin-bottom:1.5rem!important}.ml-2,.mx-2{margin-left:1.5rem!important}.m-3{margin:3rem!important}.mt-3,.my-3{margin-top:3rem!important}.mr-3,.mx-3{margin-right:3rem!important}.mb-3,.my-3{margin-bottom:3rem!important}.ml-3,.mx-3{margin-left:3rem!important}.m-4{margin:3.5rem!important}.mt-4,.my-4{margin-top:3.5rem!important}.mr-4,.mx-4{margin-right:3.5rem!important}.mb-4,.my-4{margin-bottom:3.5rem!important}.ml-4,.mx-4{margin-left:3.5rem!important}.m-5{margin:4rem!important}.mt-5,.my-5{margin-top:4rem!important}.mr-5,.mx-5{margin-right:4rem!important}.mb-5,.my-5{margin-bottom:4rem!important}.ml-5,.mx-5{margin-left:4rem!important}.m-25{margin:.25rem!important}.mt-25,.my-25{margin-top:.25rem!important}.mr-25,.mx-25{margin-right:.25rem!important}.mb-25,.my-25{margin-bottom:.25rem!important}.ml-25,.mx-25{margin-left:.25rem!important}.m-50{margin:.5rem!important}.mt-50,.my-50{margin-top:.5rem!important}.mr-50,.mx-50{margin-right:.5rem!important}.mb-50,.my-50{margin-bottom:.5rem!important}.ml-50,.mx-50{margin-left:.5rem!important}.m-75{margin:.75rem!important}.mt-75,.my-75{margin-top:.75rem!important}.mr-75,.mx-75{margin-right:.75rem!important}.mb-75,.my-75{margin-bottom:.75rem!important}.ml-75,.mx-75{margin-left:.75rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:1rem!important}.pt-1,.py-1{padding-top:1rem!important}.pr-1,.px-1{padding-right:1rem!important}.pb-1,.py-1{padding-bottom:1rem!important}.pl-1,.px-1{padding-left:1rem!important}.p-2{padding:1.5rem!important}.pt-2,.py-2{padding-top:1.5rem!important}.pr-2,.px-2{padding-right:1.5rem!important}.pb-2,.py-2{padding-bottom:1.5rem!important}.pl-2,.px-2{padding-left:1.5rem!important}.p-3{padding:3rem!important}.pt-3,.py-3{padding-top:3rem!important}.pr-3,.px-3{padding-right:3rem!important}.pb-3,.py-3{padding-bottom:3rem!important}.pl-3,.px-3{padding-left:3rem!important}.p-4{padding:3.5rem!important}.pt-4,.py-4{padding-top:3.5rem!important}.pr-4,.px-4{padding-right:3.5rem!important}.pb-4,.py-4{padding-bottom:3.5rem!important}.pl-4,.px-4{padding-left:3.5rem!important}.p-5{padding:4rem!important}.pt-5,.py-5{padding-top:4rem!important}.pr-5,.px-5{padding-right:4rem!important}.pb-5,.py-5{padding-bottom:4rem!important}.pl-5,.px-5{padding-left:4rem!important}.p-25{padding:.25rem!important}.pt-25,.py-25{padding-top:.25rem!important}.pr-25,.px-25{padding-right:.25rem!important}.pb-25,.py-25{padding-bottom:.25rem!important}.pl-25,.px-25{padding-left:.25rem!important}.p-50{padding:.5rem!important}.pt-50,.py-50{padding-top:.5rem!important}.pr-50,.px-50{padding-right:.5rem!important}.pb-50,.py-50{padding-bottom:.5rem!important}.pl-50,.px-50{padding-left:.5rem!important}.p-75{padding:.75rem!important}.pt-75,.py-75{padding-top:.75rem!important}.pr-75,.px-75{padding-right:.75rem!important}.pb-75,.py-75{padding-bottom:.75rem!important}.pl-75,.px-75{padding-left:.75rem!important}.m-n1{margin:-1rem!important}.mt-n1,.my-n1{margin-top:-1rem!important}.mr-n1,.mx-n1{margin-right:-1rem!important}.mb-n1,.my-n1{margin-bottom:-1rem!important}.ml-n1,.mx-n1{margin-left:-1rem!important}.m-n2{margin:-1.5rem!important}.mt-n2,.my-n2{margin-top:-1.5rem!important}.mr-n2,.mx-n2{margin-right:-1.5rem!important}.mb-n2,.my-n2{margin-bottom:-1.5rem!important}.ml-n2,.mx-n2{margin-left:-1.5rem!important}.m-n3{margin:-3rem!important}.mt-n3,.my-n3{margin-top:-3rem!important}.mr-n3,.mx-n3{margin-right:-3rem!important}.mb-n3,.my-n3{margin-bottom:-3rem!important}.ml-n3,.mx-n3{margin-left:-3rem!important}.m-n4{margin:-3.5rem!important}.mt-n4,.my-n4{margin-top:-3.5rem!important}.mr-n4,.mx-n4{margin-right:-3.5rem!important}.mb-n4,.my-n4{margin-bottom:-3.5rem!important}.ml-n4,.mx-n4{margin-left:-3.5rem!important}.m-n5{margin:-4rem!important}.mt-n5,.my-n5{margin-top:-4rem!important}.mr-n5,.mx-n5{margin-right:-4rem!important}.mb-n5,.my-n5{margin-bottom:-4rem!important}.ml-n5,.mx-n5{margin-left:-4rem!important}.m-n25{margin:-.25rem!important}.mt-n25,.my-n25{margin-top:-.25rem!important}.mr-n25,.mx-n25{margin-right:-.25rem!important}.mb-n25,.my-n25{margin-bottom:-.25rem!important}.ml-n25,.mx-n25{margin-left:-.25rem!important}.m-n50{margin:-.5rem!important}.mt-n50,.my-n50{margin-top:-.5rem!important}.mr-n50,.mx-n50{margin-right:-.5rem!important}.mb-n50,.my-n50{margin-bottom:-.5rem!important}.ml-n50,.mx-n50{margin-left:-.5rem!important}.m-n75{margin:-.75rem!important}.mt-n75,.my-n75{margin-top:-.75rem!important}.mr-n75,.mx-n75{margin-right:-.75rem!important}.mb-n75,.my-n75{margin-bottom:-.75rem!important}.ml-n75,.mx-n75{margin-left:-.75rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:1rem!important}.mt-sm-1,.my-sm-1{margin-top:1rem!important}.mr-sm-1,.mx-sm-1{margin-right:1rem!important}.mb-sm-1,.my-sm-1{margin-bottom:1rem!important}.ml-sm-1,.mx-sm-1{margin-left:1rem!important}.m-sm-2{margin:1.5rem!important}.mt-sm-2,.my-sm-2{margin-top:1.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:1.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:1.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:1.5rem!important}.m-sm-3{margin:3rem!important}.mt-sm-3,.my-sm-3{margin-top:3rem!important}.mr-sm-3,.mx-sm-3{margin-right:3rem!important}.mb-sm-3,.my-sm-3{margin-bottom:3rem!important}.ml-sm-3,.mx-sm-3{margin-left:3rem!important}.m-sm-4{margin:3.5rem!important}.mt-sm-4,.my-sm-4{margin-top:3.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:3.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:3.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:3.5rem!important}.m-sm-5{margin:4rem!important}.mt-sm-5,.my-sm-5{margin-top:4rem!important}.mr-sm-5,.mx-sm-5{margin-right:4rem!important}.mb-sm-5,.my-sm-5{margin-bottom:4rem!important}.ml-sm-5,.mx-sm-5{margin-left:4rem!important}.m-sm-25{margin:.25rem!important}.mt-sm-25,.my-sm-25{margin-top:.25rem!important}.mr-sm-25,.mx-sm-25{margin-right:.25rem!important}.mb-sm-25,.my-sm-25{margin-bottom:.25rem!important}.ml-sm-25,.mx-sm-25{margin-left:.25rem!important}.m-sm-50{margin:.5rem!important}.mt-sm-50,.my-sm-50{margin-top:.5rem!important}.mr-sm-50,.mx-sm-50{margin-right:.5rem!important}.mb-sm-50,.my-sm-50{margin-bottom:.5rem!important}.ml-sm-50,.mx-sm-50{margin-left:.5rem!important}.m-sm-75{margin:.75rem!important}.mt-sm-75,.my-sm-75{margin-top:.75rem!important}.mr-sm-75,.mx-sm-75{margin-right:.75rem!important}.mb-sm-75,.my-sm-75{margin-bottom:.75rem!important}.ml-sm-75,.mx-sm-75{margin-left:.75rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:1rem!important}.pt-sm-1,.py-sm-1{padding-top:1rem!important}.pr-sm-1,.px-sm-1{padding-right:1rem!important}.pb-sm-1,.py-sm-1{padding-bottom:1rem!important}.pl-sm-1,.px-sm-1{padding-left:1rem!important}.p-sm-2{padding:1.5rem!important}.pt-sm-2,.py-sm-2{padding-top:1.5rem!important}.pr-sm-2,.px-sm-2{padding-right:1.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:1.5rem!important}.pl-sm-2,.px-sm-2{padding-left:1.5rem!important}.p-sm-3{padding:3rem!important}.pt-sm-3,.py-sm-3{padding-top:3rem!important}.pr-sm-3,.px-sm-3{padding-right:3rem!important}.pb-sm-3,.py-sm-3{padding-bottom:3rem!important}.pl-sm-3,.px-sm-3{padding-left:3rem!important}.p-sm-4{padding:3.5rem!important}.pt-sm-4,.py-sm-4{padding-top:3.5rem!important}.pr-sm-4,.px-sm-4{padding-right:3.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:3.5rem!important}.pl-sm-4,.px-sm-4{padding-left:3.5rem!important}.p-sm-5{padding:4rem!important}.pt-sm-5,.py-sm-5{padding-top:4rem!important}.pr-sm-5,.px-sm-5{padding-right:4rem!important}.pb-sm-5,.py-sm-5{padding-bottom:4rem!important}.pl-sm-5,.px-sm-5{padding-left:4rem!important}.p-sm-25{padding:.25rem!important}.pt-sm-25,.py-sm-25{padding-top:.25rem!important}.pr-sm-25,.px-sm-25{padding-right:.25rem!important}.pb-sm-25,.py-sm-25{padding-bottom:.25rem!important}.pl-sm-25,.px-sm-25{padding-left:.25rem!important}.p-sm-50{padding:.5rem!important}.pt-sm-50,.py-sm-50{padding-top:.5rem!important}.pr-sm-50,.px-sm-50{padding-right:.5rem!important}.pb-sm-50,.py-sm-50{padding-bottom:.5rem!important}.pl-sm-50,.px-sm-50{padding-left:.5rem!important}.p-sm-75{padding:.75rem!important}.pt-sm-75,.py-sm-75{padding-top:.75rem!important}.pr-sm-75,.px-sm-75{padding-right:.75rem!important}.pb-sm-75,.py-sm-75{padding-bottom:.75rem!important}.pl-sm-75,.px-sm-75{padding-left:.75rem!important}.m-sm-n1{margin:-1rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-1rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-1rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-1rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-1rem!important}.m-sm-n2{margin:-1.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-1.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-1.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-1.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-1.5rem!important}.m-sm-n3{margin:-3rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-3rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-3rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-3rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-3rem!important}.m-sm-n4{margin:-3.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-3.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-3.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-3.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-3.5rem!important}.m-sm-n5{margin:-4rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-4rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-4rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-4rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-4rem!important}.m-sm-n25{margin:-.25rem!important}.mt-sm-n25,.my-sm-n25{margin-top:-.25rem!important}.mr-sm-n25,.mx-sm-n25{margin-right:-.25rem!important}.mb-sm-n25,.my-sm-n25{margin-bottom:-.25rem!important}.ml-sm-n25,.mx-sm-n25{margin-left:-.25rem!important}.m-sm-n50{margin:-.5rem!important}.mt-sm-n50,.my-sm-n50{margin-top:-.5rem!important}.mr-sm-n50,.mx-sm-n50{margin-right:-.5rem!important}.mb-sm-n50,.my-sm-n50{margin-bottom:-.5rem!important}.ml-sm-n50,.mx-sm-n50{margin-left:-.5rem!important}.m-sm-n75{margin:-.75rem!important}.mt-sm-n75,.my-sm-n75{margin-top:-.75rem!important}.mr-sm-n75,.mx-sm-n75{margin-right:-.75rem!important}.mb-sm-n75,.my-sm-n75{margin-bottom:-.75rem!important}.ml-sm-n75,.mx-sm-n75{margin-left:-.75rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:1rem!important}.mt-md-1,.my-md-1{margin-top:1rem!important}.mr-md-1,.mx-md-1{margin-right:1rem!important}.mb-md-1,.my-md-1{margin-bottom:1rem!important}.ml-md-1,.mx-md-1{margin-left:1rem!important}.m-md-2{margin:1.5rem!important}.mt-md-2,.my-md-2{margin-top:1.5rem!important}.mr-md-2,.mx-md-2{margin-right:1.5rem!important}.mb-md-2,.my-md-2{margin-bottom:1.5rem!important}.ml-md-2,.mx-md-2{margin-left:1.5rem!important}.m-md-3{margin:3rem!important}.mt-md-3,.my-md-3{margin-top:3rem!important}.mr-md-3,.mx-md-3{margin-right:3rem!important}.mb-md-3,.my-md-3{margin-bottom:3rem!important}.ml-md-3,.mx-md-3{margin-left:3rem!important}.m-md-4{margin:3.5rem!important}.mt-md-4,.my-md-4{margin-top:3.5rem!important}.mr-md-4,.mx-md-4{margin-right:3.5rem!important}.mb-md-4,.my-md-4{margin-bottom:3.5rem!important}.ml-md-4,.mx-md-4{margin-left:3.5rem!important}.m-md-5{margin:4rem!important}.mt-md-5,.my-md-5{margin-top:4rem!important}.mr-md-5,.mx-md-5{margin-right:4rem!important}.mb-md-5,.my-md-5{margin-bottom:4rem!important}.ml-md-5,.mx-md-5{margin-left:4rem!important}.m-md-25{margin:.25rem!important}.mt-md-25,.my-md-25{margin-top:.25rem!important}.mr-md-25,.mx-md-25{margin-right:.25rem!important}.mb-md-25,.my-md-25{margin-bottom:.25rem!important}.ml-md-25,.mx-md-25{margin-left:.25rem!important}.m-md-50{margin:.5rem!important}.mt-md-50,.my-md-50{margin-top:.5rem!important}.mr-md-50,.mx-md-50{margin-right:.5rem!important}.mb-md-50,.my-md-50{margin-bottom:.5rem!important}.ml-md-50,.mx-md-50{margin-left:.5rem!important}.m-md-75{margin:.75rem!important}.mt-md-75,.my-md-75{margin-top:.75rem!important}.mr-md-75,.mx-md-75{margin-right:.75rem!important}.mb-md-75,.my-md-75{margin-bottom:.75rem!important}.ml-md-75,.mx-md-75{margin-left:.75rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:1rem!important}.pt-md-1,.py-md-1{padding-top:1rem!important}.pr-md-1,.px-md-1{padding-right:1rem!important}.pb-md-1,.py-md-1{padding-bottom:1rem!important}.pl-md-1,.px-md-1{padding-left:1rem!important}.p-md-2{padding:1.5rem!important}.pt-md-2,.py-md-2{padding-top:1.5rem!important}.pr-md-2,.px-md-2{padding-right:1.5rem!important}.pb-md-2,.py-md-2{padding-bottom:1.5rem!important}.pl-md-2,.px-md-2{padding-left:1.5rem!important}.p-md-3{padding:3rem!important}.pt-md-3,.py-md-3{padding-top:3rem!important}.pr-md-3,.px-md-3{padding-right:3rem!important}.pb-md-3,.py-md-3{padding-bottom:3rem!important}.pl-md-3,.px-md-3{padding-left:3rem!important}.p-md-4{padding:3.5rem!important}.pt-md-4,.py-md-4{padding-top:3.5rem!important}.pr-md-4,.px-md-4{padding-right:3.5rem!important}.pb-md-4,.py-md-4{padding-bottom:3.5rem!important}.pl-md-4,.px-md-4{padding-left:3.5rem!important}.p-md-5{padding:4rem!important}.pt-md-5,.py-md-5{padding-top:4rem!important}.pr-md-5,.px-md-5{padding-right:4rem!important}.pb-md-5,.py-md-5{padding-bottom:4rem!important}.pl-md-5,.px-md-5{padding-left:4rem!important}.p-md-25{padding:.25rem!important}.pt-md-25,.py-md-25{padding-top:.25rem!important}.pr-md-25,.px-md-25{padding-right:.25rem!important}.pb-md-25,.py-md-25{padding-bottom:.25rem!important}.pl-md-25,.px-md-25{padding-left:.25rem!important}.p-md-50{padding:.5rem!important}.pt-md-50,.py-md-50{padding-top:.5rem!important}.pr-md-50,.px-md-50{padding-right:.5rem!important}.pb-md-50,.py-md-50{padding-bottom:.5rem!important}.pl-md-50,.px-md-50{padding-left:.5rem!important}.p-md-75{padding:.75rem!important}.pt-md-75,.py-md-75{padding-top:.75rem!important}.pr-md-75,.px-md-75{padding-right:.75rem!important}.pb-md-75,.py-md-75{padding-bottom:.75rem!important}.pl-md-75,.px-md-75{padding-left:.75rem!important}.m-md-n1{margin:-1rem!important}.mt-md-n1,.my-md-n1{margin-top:-1rem!important}.mr-md-n1,.mx-md-n1{margin-right:-1rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-1rem!important}.ml-md-n1,.mx-md-n1{margin-left:-1rem!important}.m-md-n2{margin:-1.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-1.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-1.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-1.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-1.5rem!important}.m-md-n3{margin:-3rem!important}.mt-md-n3,.my-md-n3{margin-top:-3rem!important}.mr-md-n3,.mx-md-n3{margin-right:-3rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-3rem!important}.ml-md-n3,.mx-md-n3{margin-left:-3rem!important}.m-md-n4{margin:-3.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-3.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-3.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-3.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-3.5rem!important}.m-md-n5{margin:-4rem!important}.mt-md-n5,.my-md-n5{margin-top:-4rem!important}.mr-md-n5,.mx-md-n5{margin-right:-4rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-4rem!important}.ml-md-n5,.mx-md-n5{margin-left:-4rem!important}.m-md-n25{margin:-.25rem!important}.mt-md-n25,.my-md-n25{margin-top:-.25rem!important}.mr-md-n25,.mx-md-n25{margin-right:-.25rem!important}.mb-md-n25,.my-md-n25{margin-bottom:-.25rem!important}.ml-md-n25,.mx-md-n25{margin-left:-.25rem!important}.m-md-n50{margin:-.5rem!important}.mt-md-n50,.my-md-n50{margin-top:-.5rem!important}.mr-md-n50,.mx-md-n50{margin-right:-.5rem!important}.mb-md-n50,.my-md-n50{margin-bottom:-.5rem!important}.ml-md-n50,.mx-md-n50{margin-left:-.5rem!important}.m-md-n75{margin:-.75rem!important}.mt-md-n75,.my-md-n75{margin-top:-.75rem!important}.mr-md-n75,.mx-md-n75{margin-right:-.75rem!important}.mb-md-n75,.my-md-n75{margin-bottom:-.75rem!important}.ml-md-n75,.mx-md-n75{margin-left:-.75rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:1rem!important}.mt-lg-1,.my-lg-1{margin-top:1rem!important}.mr-lg-1,.mx-lg-1{margin-right:1rem!important}.mb-lg-1,.my-lg-1{margin-bottom:1rem!important}.ml-lg-1,.mx-lg-1{margin-left:1rem!important}.m-lg-2{margin:1.5rem!important}.mt-lg-2,.my-lg-2{margin-top:1.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:1.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:1.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:1.5rem!important}.m-lg-3{margin:3rem!important}.mt-lg-3,.my-lg-3{margin-top:3rem!important}.mr-lg-3,.mx-lg-3{margin-right:3rem!important}.mb-lg-3,.my-lg-3{margin-bottom:3rem!important}.ml-lg-3,.mx-lg-3{margin-left:3rem!important}.m-lg-4{margin:3.5rem!important}.mt-lg-4,.my-lg-4{margin-top:3.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:3.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:3.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:3.5rem!important}.m-lg-5{margin:4rem!important}.mt-lg-5,.my-lg-5{margin-top:4rem!important}.mr-lg-5,.mx-lg-5{margin-right:4rem!important}.mb-lg-5,.my-lg-5{margin-bottom:4rem!important}.ml-lg-5,.mx-lg-5{margin-left:4rem!important}.m-lg-25{margin:.25rem!important}.mt-lg-25,.my-lg-25{margin-top:.25rem!important}.mr-lg-25,.mx-lg-25{margin-right:.25rem!important}.mb-lg-25,.my-lg-25{margin-bottom:.25rem!important}.ml-lg-25,.mx-lg-25{margin-left:.25rem!important}.m-lg-50{margin:.5rem!important}.mt-lg-50,.my-lg-50{margin-top:.5rem!important}.mr-lg-50,.mx-lg-50{margin-right:.5rem!important}.mb-lg-50,.my-lg-50{margin-bottom:.5rem!important}.ml-lg-50,.mx-lg-50{margin-left:.5rem!important}.m-lg-75{margin:.75rem!important}.mt-lg-75,.my-lg-75{margin-top:.75rem!important}.mr-lg-75,.mx-lg-75{margin-right:.75rem!important}.mb-lg-75,.my-lg-75{margin-bottom:.75rem!important}.ml-lg-75,.mx-lg-75{margin-left:.75rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:1rem!important}.pt-lg-1,.py-lg-1{padding-top:1rem!important}.pr-lg-1,.px-lg-1{padding-right:1rem!important}.pb-lg-1,.py-lg-1{padding-bottom:1rem!important}.pl-lg-1,.px-lg-1{padding-left:1rem!important}.p-lg-2{padding:1.5rem!important}.pt-lg-2,.py-lg-2{padding-top:1.5rem!important}.pr-lg-2,.px-lg-2{padding-right:1.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:1.5rem!important}.pl-lg-2,.px-lg-2{padding-left:1.5rem!important}.p-lg-3{padding:3rem!important}.pt-lg-3,.py-lg-3{padding-top:3rem!important}.pr-lg-3,.px-lg-3{padding-right:3rem!important}.pb-lg-3,.py-lg-3{padding-bottom:3rem!important}.pl-lg-3,.px-lg-3{padding-left:3rem!important}.p-lg-4{padding:3.5rem!important}.pt-lg-4,.py-lg-4{padding-top:3.5rem!important}.pr-lg-4,.px-lg-4{padding-right:3.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:3.5rem!important}.pl-lg-4,.px-lg-4{padding-left:3.5rem!important}.p-lg-5{padding:4rem!important}.pt-lg-5,.py-lg-5{padding-top:4rem!important}.pr-lg-5,.px-lg-5{padding-right:4rem!important}.pb-lg-5,.py-lg-5{padding-bottom:4rem!important}.pl-lg-5,.px-lg-5{padding-left:4rem!important}.p-lg-25{padding:.25rem!important}.pt-lg-25,.py-lg-25{padding-top:.25rem!important}.pr-lg-25,.px-lg-25{padding-right:.25rem!important}.pb-lg-25,.py-lg-25{padding-bottom:.25rem!important}.pl-lg-25,.px-lg-25{padding-left:.25rem!important}.p-lg-50{padding:.5rem!important}.pt-lg-50,.py-lg-50{padding-top:.5rem!important}.pr-lg-50,.px-lg-50{padding-right:.5rem!important}.pb-lg-50,.py-lg-50{padding-bottom:.5rem!important}.pl-lg-50,.px-lg-50{padding-left:.5rem!important}.p-lg-75{padding:.75rem!important}.pt-lg-75,.py-lg-75{padding-top:.75rem!important}.pr-lg-75,.px-lg-75{padding-right:.75rem!important}.pb-lg-75,.py-lg-75{padding-bottom:.75rem!important}.pl-lg-75,.px-lg-75{padding-left:.75rem!important}.m-lg-n1{margin:-1rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-1rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-1rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-1rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-1rem!important}.m-lg-n2{margin:-1.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-1.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-1.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-1.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-1.5rem!important}.m-lg-n3{margin:-3rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-3rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-3rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-3rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-3rem!important}.m-lg-n4{margin:-3.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-3.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-3.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-3.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-3.5rem!important}.m-lg-n5{margin:-4rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-4rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-4rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-4rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-4rem!important}.m-lg-n25{margin:-.25rem!important}.mt-lg-n25,.my-lg-n25{margin-top:-.25rem!important}.mr-lg-n25,.mx-lg-n25{margin-right:-.25rem!important}.mb-lg-n25,.my-lg-n25{margin-bottom:-.25rem!important}.ml-lg-n25,.mx-lg-n25{margin-left:-.25rem!important}.m-lg-n50{margin:-.5rem!important}.mt-lg-n50,.my-lg-n50{margin-top:-.5rem!important}.mr-lg-n50,.mx-lg-n50{margin-right:-.5rem!important}.mb-lg-n50,.my-lg-n50{margin-bottom:-.5rem!important}.ml-lg-n50,.mx-lg-n50{margin-left:-.5rem!important}.m-lg-n75{margin:-.75rem!important}.mt-lg-n75,.my-lg-n75{margin-top:-.75rem!important}.mr-lg-n75,.mx-lg-n75{margin-right:-.75rem!important}.mb-lg-n75,.my-lg-n75{margin-bottom:-.75rem!important}.ml-lg-n75,.mx-lg-n75{margin-left:-.75rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:1rem!important}.mt-xl-1,.my-xl-1{margin-top:1rem!important}.mr-xl-1,.mx-xl-1{margin-right:1rem!important}.mb-xl-1,.my-xl-1{margin-bottom:1rem!important}.ml-xl-1,.mx-xl-1{margin-left:1rem!important}.m-xl-2{margin:1.5rem!important}.mt-xl-2,.my-xl-2{margin-top:1.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:1.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:1.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:1.5rem!important}.m-xl-3{margin:3rem!important}.mt-xl-3,.my-xl-3{margin-top:3rem!important}.mr-xl-3,.mx-xl-3{margin-right:3rem!important}.mb-xl-3,.my-xl-3{margin-bottom:3rem!important}.ml-xl-3,.mx-xl-3{margin-left:3rem!important}.m-xl-4{margin:3.5rem!important}.mt-xl-4,.my-xl-4{margin-top:3.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:3.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:3.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:3.5rem!important}.m-xl-5{margin:4rem!important}.mt-xl-5,.my-xl-5{margin-top:4rem!important}.mr-xl-5,.mx-xl-5{margin-right:4rem!important}.mb-xl-5,.my-xl-5{margin-bottom:4rem!important}.ml-xl-5,.mx-xl-5{margin-left:4rem!important}.m-xl-25{margin:.25rem!important}.mt-xl-25,.my-xl-25{margin-top:.25rem!important}.mr-xl-25,.mx-xl-25{margin-right:.25rem!important}.mb-xl-25,.my-xl-25{margin-bottom:.25rem!important}.ml-xl-25,.mx-xl-25{margin-left:.25rem!important}.m-xl-50{margin:.5rem!important}.mt-xl-50,.my-xl-50{margin-top:.5rem!important}.mr-xl-50,.mx-xl-50{margin-right:.5rem!important}.mb-xl-50,.my-xl-50{margin-bottom:.5rem!important}.ml-xl-50,.mx-xl-50{margin-left:.5rem!important}.m-xl-75{margin:.75rem!important}.mt-xl-75,.my-xl-75{margin-top:.75rem!important}.mr-xl-75,.mx-xl-75{margin-right:.75rem!important}.mb-xl-75,.my-xl-75{margin-bottom:.75rem!important}.ml-xl-75,.mx-xl-75{margin-left:.75rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:1rem!important}.pt-xl-1,.py-xl-1{padding-top:1rem!important}.pr-xl-1,.px-xl-1{padding-right:1rem!important}.pb-xl-1,.py-xl-1{padding-bottom:1rem!important}.pl-xl-1,.px-xl-1{padding-left:1rem!important}.p-xl-2{padding:1.5rem!important}.pt-xl-2,.py-xl-2{padding-top:1.5rem!important}.pr-xl-2,.px-xl-2{padding-right:1.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:1.5rem!important}.pl-xl-2,.px-xl-2{padding-left:1.5rem!important}.p-xl-3{padding:3rem!important}.pt-xl-3,.py-xl-3{padding-top:3rem!important}.pr-xl-3,.px-xl-3{padding-right:3rem!important}.pb-xl-3,.py-xl-3{padding-bottom:3rem!important}.pl-xl-3,.px-xl-3{padding-left:3rem!important}.p-xl-4{padding:3.5rem!important}.pt-xl-4,.py-xl-4{padding-top:3.5rem!important}.pr-xl-4,.px-xl-4{padding-right:3.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:3.5rem!important}.pl-xl-4,.px-xl-4{padding-left:3.5rem!important}.p-xl-5{padding:4rem!important}.pt-xl-5,.py-xl-5{padding-top:4rem!important}.pr-xl-5,.px-xl-5{padding-right:4rem!important}.pb-xl-5,.py-xl-5{padding-bottom:4rem!important}.pl-xl-5,.px-xl-5{padding-left:4rem!important}.p-xl-25{padding:.25rem!important}.pt-xl-25,.py-xl-25{padding-top:.25rem!important}.pr-xl-25,.px-xl-25{padding-right:.25rem!important}.pb-xl-25,.py-xl-25{padding-bottom:.25rem!important}.pl-xl-25,.px-xl-25{padding-left:.25rem!important}.p-xl-50{padding:.5rem!important}.pt-xl-50,.py-xl-50{padding-top:.5rem!important}.pr-xl-50,.px-xl-50{padding-right:.5rem!important}.pb-xl-50,.py-xl-50{padding-bottom:.5rem!important}.pl-xl-50,.px-xl-50{padding-left:.5rem!important}.p-xl-75{padding:.75rem!important}.pt-xl-75,.py-xl-75{padding-top:.75rem!important}.pr-xl-75,.px-xl-75{padding-right:.75rem!important}.pb-xl-75,.py-xl-75{padding-bottom:.75rem!important}.pl-xl-75,.px-xl-75{padding-left:.75rem!important}.m-xl-n1{margin:-1rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-1rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-1rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-1rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-1rem!important}.m-xl-n2{margin:-1.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-1.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-1.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-1.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-1.5rem!important}.m-xl-n3{margin:-3rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-3rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-3rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-3rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-3rem!important}.m-xl-n4{margin:-3.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-3.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-3.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-3.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-3.5rem!important}.m-xl-n5{margin:-4rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-4rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-4rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-4rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-4rem!important}.m-xl-n25{margin:-.25rem!important}.mt-xl-n25,.my-xl-n25{margin-top:-.25rem!important}.mr-xl-n25,.mx-xl-n25{margin-right:-.25rem!important}.mb-xl-n25,.my-xl-n25{margin-bottom:-.25rem!important}.ml-xl-n25,.mx-xl-n25{margin-left:-.25rem!important}.m-xl-n50{margin:-.5rem!important}.mt-xl-n50,.my-xl-n50{margin-top:-.5rem!important}.mr-xl-n50,.mx-xl-n50{margin-right:-.5rem!important}.mb-xl-n50,.my-xl-n50{margin-bottom:-.5rem!important}.ml-xl-n50,.mx-xl-n50{margin-left:-.5rem!important}.m-xl-n75{margin:-.75rem!important}.mt-xl-n75,.my-xl-n75{margin-top:-.75rem!important}.mr-xl-n75,.mx-xl-n75{margin-right:-.75rem!important}.mb-xl-n75,.my-xl-n75{margin-bottom:-.75rem!important}.ml-xl-n75,.mx-xl-n75{margin-left:-.75rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:Montserrat,Helvetica,Arial,serif!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#586cb1!important}a.text-primary:focus,a.text-primary:hover{color:#3c4b80!important}.text-secondary{color:#b8c2cc!important}a.text-secondary:focus,a.text-secondary:hover{color:#8b9cac!important}.text-success{color:#21b978!important}a.text-success:focus,a.text-success:hover{color:#15784e!important}.text-info{color:#4277cf!important}a.text-info:focus,a.text-info:hover{color:#28549d!important}.text-warning{color:#dda451!important}a.text-warning:focus,a.text-warning:hover{color:#bd7f25!important}.text-danger{color:#ea5455!important}a.text-danger:focus,a.text-danger:hover{color:#d71a1c!important}.text-light{color:#f7f7f9!important}a.text-light:focus,a.text-light:hover{color:#cbcbd8!important}.text-dark{color:#22292f!important}a.text-dark:focus,a.text-dark:hover{color:#020203!important}.text-body{color:#626262!important}.text-muted{color:#b8c2cc!important}.text-black-50{color:rgba(34,41,47,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:\" (\" attr(title) \")\"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #22292f}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dae1e7!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#eff1f7}.table .thead-dark th{color:inherit;border-color:#eff1f7}}code{padding:.1rem .4rem;font-size:90%;color:#ff8acc;background-color:#eee;border-radius:.25rem}pre{background-color:#f7f7f9}pre code{background-color:transparent!important}.form-control::-moz-placeholder{font-size:.85rem;color:rgba(34,41,47,.4);-moz-transition:all .2s ease;transition:all .2s ease}.form-control:-ms-input-placeholder{font-size:.85rem;color:rgba(34,41,47,.4);-ms-transition:all .2s ease;transition:all .2s ease}.form-control::placeholder{font-size:.85rem;color:rgba(34,41,47,.4);transition:all .2s ease}.form-control:-ms-input-placeholder{color:#abb6d5}.form-control:focus::-moz-placeholder{transform:translate(5px);-moz-transition:all .2s ease;transition:all .2s ease}.form-control:focus:-ms-input-placeholder{transform:translate(5px);-ms-transition:all .2s ease;transition:all .2s ease}.form-control:focus::placeholder{transform:translate(5px);transition:all .2s ease}.form-control:focus~.form-control-position i{color:#586cb1}label{color:#2b3656;font-size:.85rem;margin-bottom:0;padding-left:.2rem}textarea.form-control{line-height:1.6rem;font-size:1rem}.form-group{margin-bottom:1.5rem}.form-control{border:1px solid #c6cde3;color:#3c4b78}.form-section{color:#b8c2cc;line-height:3rem;margin-bottom:20px;border-bottom:1px solid #b8c2cc}.form-section i{font-size:20px;margin-left:5px;margin-right:10px}.form-actions{border-top:1px solid #cdd3e6;padding:20px 0;margin-top:20px}.form-actions.filled{background-color:#eff1f7}.form-actions.center{text-align:center}.form-actions.right{text-align:right}.form-actions.top{border-top:0;border-bottom:1px solid #cdd3e6;margin-top:0;margin-bottom:20px}@media (max-width:767.98px){.form-actions .buttons-group{float:left!important;margin-bottom:10px}}@media (min-width:576px){.form-horizontal .form-group .label-control{text-align:right}}.form-control.form-control-lg{padding:1rem}.form-control.form-control-lg::-moz-placeholder{font-size:1.25rem}.form-control.form-control-lg:-ms-input-placeholder{font-size:1.25rem}.form-control.form-control-lg::placeholder{font-size:1.25rem}.form-control.form-control-sm{padding:.6rem}.form-control.form-control-sm::-moz-placeholder{font-size:.7rem}.form-control.form-control-sm:-ms-input-placeholder{font-size:.7rem}.form-control.form-control-sm::placeholder{font-size:.7rem}.custom-file-label{padding:.4rem .7rem}.custom-file-label:after{padding:.4rem .7rem;height:auto}select.form-control:not([multiple=multiple]){background-position:calc(100% - 12px) 13px,calc(100% - 20px) 13px,100% 0;background-size:12px 12px,10px 10px;background-repeat:no-repeat;-webkit-appearance:none;-moz-appearance:none;padding-right:1.5rem}.custom-select{-moz-appearance:none;-webkit-appearance:none}.input-group-addon{background-color:#eceff1;border-color:#babfc7}.custom-control-label:after,.custom-control-label:before{width:1.143rem;height:1.143rem;top:.08rem}.custom-control-input:not(:disabled):active~.custom-control-label:before{background-color:#586cb1;border-color:#586cb1}.form-label-group{position:relative;margin-bottom:1.5rem}.form-label-group .form-control-lg~label{font-size:1.25rem;padding:1rem}.form-label-group .form-control-sm~label{font-size:.7rem}.form-label-group>label{position:absolute;top:0;left:0;display:block;transition:all .25s ease-in-out;padding:.6rem;pointer-events:none;cursor:text;color:rgba(34,41,47,.4);font-size:.85rem;opacity:0}.form-label-group>input,.form-label-group textarea{padding:.6rem}.form-label-group>input:focus:not(:-moz-placeholder-shown)~label,.form-label-group>input:not(:active):not(:-moz-placeholder-shown)~label,.form-label-group textarea:focus:not(:-moz-placeholder-shown)~label,.form-label-group textarea:not(:active):not(:-moz-placeholder-shown)~label{color:#586cb1!important;-moz-transition:all .25s ease-in-out;transition:all .25s ease-in-out;opacity:1}.form-label-group>input:focus:not(:-ms-input-placeholder)~label,.form-label-group>input:not(:active):not(:-ms-input-placeholder)~label,.form-label-group textarea:focus:not(:-ms-input-placeholder)~label,.form-label-group textarea:not(:active):not(:-ms-input-placeholder)~label{color:#586cb1!important;-ms-transition:all .25s ease-in-out;transition:all .25s ease-in-out;opacity:1}.form-label-group>input:focus:not(:placeholder-shown)~label,.form-label-group>input:not(:active):not(:placeholder-shown)~label,.form-label-group textarea:focus:not(:placeholder-shown)~label,.form-label-group textarea:not(:active):not(:placeholder-shown)~label{color:#586cb1!important;transition:all .25s ease-in-out;opacity:1}.form-label-group>input:not(:focus):not(:-moz-placeholder-shown)~label,.form-label-group textarea:not(:focus):not(:-moz-placeholder-shown)~label{color:rgba(34,41,47,.4)!important}.form-label-group>input:not(:focus):not(:-ms-input-placeholder)~label,.form-label-group textarea:not(:focus):not(:-ms-input-placeholder)~label{color:rgba(34,41,47,.4)!important}.form-label-group>input:not(:focus):not(:placeholder-shown)~label,.form-label-group textarea:not(:focus):not(:placeholder-shown)~label{color:rgba(34,41,47,.4)!important}.form-label-group>input:not(:-moz-placeholder-shown)~label,.form-label-group textarea:not(:-moz-placeholder-shown)~label{padding:.25rem 0;font-size:.7rem;top:-20px;left:3px}.form-label-group>input:not(:-ms-input-placeholder)~label,.form-label-group textarea:not(:-ms-input-placeholder)~label{padding:.25rem 0;font-size:.7rem;top:-20px;left:3px}.form-label-group>input:not(:placeholder-shown)~label,.form-label-group textarea:not(:placeholder-shown)~label{padding:.25rem 0;font-size:.7rem;top:-20px;left:3px}.form-label-group.has-icon-left>label{left:36px}.vs-checkbox-con{position:relative;display:flex;align-items:center;justify-content:flex-start;margin:.25rem 0}.vs-checkbox-con input{position:absolute;width:100%;height:100%;opacity:0;z-index:200;cursor:pointer;top:0}.vs-checkbox-con input:checked~.vs-checkbox{transform:rotate(0deg);border-color:#586cb1}.vs-checkbox-con input:checked~.vs-checkbox .vs-checkbox--check{transform:translate(0);background-color:#586cb1}.vs-checkbox-con input:checked~.vs-checkbox .vs-checkbox--check .vs-icon{transform:translate(0);line-height:1.2;opacity:1}.vs-checkbox-con input:checked~.vs-checkbox.vs-checkbox-sm .vs-checkbox--check .vs-icon{font-size:.75rem}.vs-checkbox-con input:checked~.vs-checkbox.vs-checkbox-lg .vs-checkbox--check .vs-icon{font-size:1.2rem}.vs-checkbox-con input:active:checked+.vs-checkbox .vs-checkbox--check{transform:translate(3px);background-color:#586cb1}.vs-checkbox-con input:active:checked+.vs-checkbox .vs-checkbox--check .vs-icon{opacity:1;transform:translate(6px)}.vs-checkbox-con input:disabled{cursor:default;pointer-events:none}.vs-checkbox-con input:disabled+.vs-checkbox{cursor:default;opacity:.5}.vs-checkbox-con .vs-checkbox{cursor:pointer;position:relative;width:20px;height:20px;border:2px solid #b8c2cc;border-radius:2px;transform:rotate(-90deg);transition:all .2s ease;overflow:hidden;margin-right:.5rem}.vs-checkbox-con .vs-checkbox.vs-checkbox-sm{width:15px;height:15px}.vs-checkbox-con .vs-checkbox.vs-checkbox-lg{width:24px;height:24px}.vs-checkbox-con .vs-checkbox .vs-checkbox--check{width:100%;height:100%;position:absolute;left:0;transform:translate(100%);transform-origin:right;transition:all .2s ease;z-index:10}.vs-checkbox-con .vs-checkbox .vs-checkbox--check .vs-icon{display:flex;justify-content:center;align-items:center;color:#fff}.vs-radio-con{position:relative;display:flex;align-items:center;justify-content:flex-start;margin:.25rem 0}.vs-radio-con input{position:absolute;width:100%;height:100%;opacity:0;z-index:200;cursor:pointer}.vs-radio-con input:checked~.vs-radio{transform:rotate(0deg);outline:0}.vs-radio-con input:checked~.vs-radio .vs-radio--circle{background:#586cb1;box-shadow:0 3px 12px 0 rgba(88,108,177,.4);opacity:1;transform:scale(1)}.vs-radio-con input:checked~.vs-radio .vs-radio--border{opacity:0;transform:scale(.3)}.vs-radio-con input:disabled{cursor:default;pointer-events:none}.vs-radio-con input:disabled+.vs-radio{cursor:default;opacity:.5}.vs-radio-con input:active~.vs-radio{transform:scale(1.1)}.vs-radio-con .vs-radio{cursor:pointer;position:relative;width:18px;height:18px;transition:all .2s ease;margin-right:.5rem}.vs-radio-con .vs-radio.vs-radio-sm{width:13px;height:13px}.vs-radio-con .vs-radio.vs-radio-lg{width:22px;height:22px}.vs-radio-con .vs-radio .vs-radio--border,.vs-radio-con .vs-radio .vs-radio--circle{width:100%;height:100%;position:absolute;left:0;transition:all .25s ease;top:0;border-radius:50%}.vs-radio-con .vs-radio .vs-radio--border{background:transparent;border:2px solid #b8c2cc}.vs-radio-con .vs-radio .vs-radio--circle{opacity:0;transform:scale(.1)}.counter-value{background-color:#586cb1;color:#fff;padding:1px 6px;font-size:.6rem;border-radius:0 0 5px 5px;margin-right:1rem}.form-group.input-divider-left .form-control-position i{padding:.2rem .5rem;border-right:1px solid #c6cde3}.form-group.input-divider-right .form-control-position i{padding:.2rem .5rem;border-left:1px solid #c6cde3}.input-group-lg .form-control,.input-group-sm .form-control{padding:.7rem}.bootstrap-touchspin.input-group{width:8.4rem;align-items:center}.bootstrap-touchspin.input-group .form-control{padding:5px;height:auto;border:0;background-color:#eff1f7;border-radius:5px!important;text-align:center;font-weight:500}.bootstrap-touchspin.input-group .form-control:focus{z-index:1;box-shadow:none}.bootstrap-touchspin .bootstrap-touchspin-injected{margin:0!important}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-down,.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-up{padding:0;min-width:22px;min-height:22px;border-radius:5px!important;position:relative}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-down i,.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-up i{font-size:.8rem;position:relative;top:-1px}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-down{left:12px}.bootstrap-touchspin .bootstrap-touchspin-injected .bootstrap-touchspin-up{right:12px}.bootstrap-touchspin.disabled-touchspin .bootstrap-touchspin-down,.bootstrap-touchspin.disabled-touchspin .bootstrap-touchspin-up{background-color:rgba(0,0,0,.5)!important;cursor:default;opacity:.5}.bootstrap-touchspin.input-group-lg{width:9.375rem}.bootstrap-touchspin.input-group-lg .touchspin.form-control{height:auto!important}.bootstrap-touchspin.input-group-lg .bootstrap-touchspin-down i,.bootstrap-touchspin.input-group-lg .bootstrap-touchspin-up i{font-size:1rem}.bootstrap-touchspin.input-group-sm{width:6.25rem}.bootstrap-touchspin.input-group-sm .touchspin.form-control{height:auto!important}.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-down,.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-up{min-width:16px;min-height:16px;padding-top:2.2px}.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-down i,.bootstrap-touchspin.input-group-sm .bootstrap-touchspin-injected .bootstrap-touchspin-up i{font-size:.6rem}.btn.disabled-max-min{background-color:rgba(0,0,0,.5)!important;cursor:default}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}.bootstrap-touchspin.input-group input[type=number]{-moz-appearance:textfield}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.form-label-group label{display:none}select.form-control:not([multiple=multiple]){background:none}.custom-file-label:after{padding:1.34rem .7rem 1.25rem}}.picker__input.form-control{background-color:#fff}.input-group .form-control{height:auto}.input-group .input-group-append .dropdown-toggle:after,.input-group .input-group-prepend .dropdown-toggle:after{left:0}.input-group .input-group-append .vs-checkbox,.input-group .input-group-append .vs-checkbox-con,.input-group .input-group-append .vs-radio,.input-group .input-group-append .vs-radio-con,.input-group .input-group-prepend .vs-checkbox,.input-group .input-group-prepend .vs-checkbox-con,.input-group .input-group-prepend .vs-radio,.input-group .input-group-prepend .vs-radio-con{margin:0}.input-group.input-group-lg .form-control::-moz-placeholder{font-size:1.25rem}.input-group.input-group-lg .form-control:-ms-input-placeholder{font-size:1.25rem}.input-group.input-group-lg .form-control::placeholder{font-size:1.25rem}.input-group.input-group-lg .input-group-append .btn,.input-group.input-group-lg .input-group-prepend .btn{line-height:1.3;font-size:1.3rem}.input-group.input-group-sm .form-control::-moz-placeholder{font-size:.7rem}.input-group.input-group-sm .form-control:-ms-input-placeholder{font-size:.7rem}.input-group.input-group-sm .form-control::placeholder{font-size:.7rem}.btn:disabled{cursor:default}.btn.btn-white{background-color:#fff;color:#626262}.btn.btn-white:active,.btn.btn-white:focus,.btn.btn-white:hover{color:#626262!important}.btn.btn-white.btn-primary{background-color:#586cb1}.btn[class*=bg-gradient-]:hover{box-shadow:0 8px 25px -8px #aaa}.btn.btn-secondary{color:#fff}.btn.btn-secondary:hover{box-shadow:0 8px 25px -8px #b8c2cc}.btn.btn-dark:hover{box-shadow:0 8px 25px -8px #22292f}.btn.btn-light:hover{box-shadow:0 8px 25px -8px #f7f7f9}.btn.btn-outline-dark,.btn.btn-outline-light,.btn.btn-outline-secondary{border:1px solid}.btn[class*=btn-outline-]{padding-top:calc(.9rem - 1px);padding-bottom:calc(.9rem - 1px)}.btn-group-sm>.btn[class*=btn-outline-],.btn[class*=btn-outline-].btn-sm{padding-top:calc(.5rem - 1px);padding-bottom:calc(.5rem - 1px)}.btn.btn-icon{padding:.715rem .736rem}.btn-group-sm>.btn.btn-icon,.btn.btn-sm.btn-icon{padding:.5rem}.btn-group-lg>.btn.btn-icon,.btn.btn-lg.btn-icon{padding:1rem}.btn.btn-round{border-radius:2rem}.btn.active,.btn.focus,.btn:active,.btn:focus{outline:none;box-shadow:none!important}.btn.btn-icon i{font-size:1.1rem}.btn-white:hover,.btn.btn-outline-white:hover{color:#22292f!important}[type=reset],[type=submit],button,html [type=button]{cursor:pointer}.waves-button-input{padding:unset}.dropdown.show .btn-outline-light.dropdown-toggle,.dropdown.show .btn-outline-warning.dropdown-toggle{color:#fff}.dropdown .btn:not(.btn-sm):not(.btn-lg),.dropdown .btn:not(.btn-sm):not(.btn-lg).dropdown-toggle{padding:.85rem 1.5rem}.dropdown .btn:not(.btn-sm):not(.btn-lg).btn-round,.dropdown .btn:not(.btn-sm):not(.btn-lg).dropdown-toggle.btn-round{border-radius:2rem}.dropdown .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem;border-left-color:hsla(0,0%,100%,.2)!important;border-top-left-radius:0;border-bottom-left-radius:0}.dropdown [class*=btn-outline-].dropdown-toggle.dropdown-toggle-split{border-left:0!important}.dropdown [class*=btn-outline-].dropdown-toggle.dropdown-toggle-split:active{color:#fff}.dropdown .dropdown-menu{border:1px solid rgba(86,86,86,.05);border-radius:5px;transform:scaleY(0);box-shadow:0 5px 25px rgba(86,86,86,.1);min-width:8rem}.dropdown .dropdown-menu:before{content:\"\";position:absolute;top:-1px;left:1.2rem;width:.75rem;height:.75rem;display:block;background:#fff;transform:rotate(45deg) translate(-7px);border-top:1px solid rgba(86,86,86,.1);border-left:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropdown .dropdown-menu.dropdown-menu-right:before{right:.6rem;left:auto}.dropdown .dropdown-menu .dropdown-header{padding:.714rem 1.428rem;margin-top:.714rem}.dropdown .dropdown-menu .dropdown-item{padding:.5rem 1rem;color:#626262;width:auto;cursor:pointer}.dropdown .dropdown-menu .dropdown-item:hover{background-color:#eff1f7;color:#586cb1}.dropdown .dropdown-menu .dropdown-item.active{color:#fff}.dropdown .dropdown-menu .dropdown-item:active{background-color:transparent;color:#626262}.dropdown i{margin-right:.5rem}.dropdown.no-arrow .dropdown-toggle:after{display:none}.dropdown.no-arrow .dropdown-toggle i{margin-right:0}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown .dropdown-menu .dropdown-item,.dropleft .dropdown-menu .dropdown-item,.dropright .dropdown-menu .dropdown-item,.dropup .dropdown-menu .dropdown-item{padding:.714rem 1.428rem}.show>.dropdown-menu{transform:scale(1);opacity:1;display:block}.dropdown-toggle:after{border:none!important;font-family:feather;content:\"\\E842\"!important;position:relative;top:1px;right:0;left:.714rem;padding:0;margin:0;vertical-align:0}.dropdown-toggle.dropdown-toggle-split{border-left:1px solid hsla(0,0%,100%,.2)}.dropdown-toggle.dropdown-toggle-split:after{left:0}.dropdown-toggle.nav-hide-arrow:after{display:none}.dropdown-toggle:focus{outline:0}.btn-secondary~.dropdown-menu .dropdown-item.active,.btn-secondary~.dropdown-menu .dropdown-item:hover{background-color:#ccc}.dropup{position:relative}.dropup .btn,.dropup .btn.dropdown-toggle{padding:.85rem 1.5rem}.dropup .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem;border-color:hsla(0,0%,100%,.2)!important}.dropup .dropdown-toggle:after{content:\"\\E845\"!important;vertical-align:.05rem}.dropup .dropdown-menu:before{content:\"\";position:absolute;bottom:-.714rem;left:1.214rem;width:.714rem;height:.714rem;display:block;background:#fff;transform:rotate(45deg) translate(-7px);border-bottom:1px solid rgba(86,86,86,.1);border-right:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropup .dropdown-menu.dropdown-menu-right:before{left:auto;right:.714rem}.dropup .dropdown-submenu .dropdown-menu{bottom:auto;top:0}.dropleft .btn,.dropleft .btn.dropdown-toggle{padding:.85rem 1.5rem}.dropleft .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem}.dropleft .dropdown-toggle:before{border:none!important;font-family:feather;content:\"\\E843\"!important}.dropleft .dropdown-menu:before{content:\"\";position:absolute;top:1.285rem;right:0;width:.714rem;height:.714rem;display:block;background:#fff;transform:rotate(130deg) translate(-8px);border-top:1px solid rgba(86,86,86,.1);border-left:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropright .btn,.dropright .btn.dropdown-toggle{padding:.85rem 1.5rem}.dropright .btn.dropdown-toggle.dropdown-toggle-split{padding:.85rem 1rem}.dropright .dropdown-toggle:after{border:none!important;font-family:feather;content:\"\\E844\"!important}.dropright .dropdown-menu:before{content:\"\";position:absolute;top:1.285rem;left:-.9rem;width:.714rem;height:.714rem;display:block;background:#fff;transform:rotate(140deg) translate(-9px);border-bottom:1px solid rgba(86,86,86,.1);border-right:1px solid rgba(86,86,86,.1);z-index:10;box-sizing:border-box}.dropdown.dropdown-icon-wrapper .dropdown-toggle:after,.dropup.dropdown-icon-wrapper .dropdown-toggle:after{display:none}.dropdown.dropdown-icon-wrapper .dropdown-menu,.dropup.dropdown-icon-wrapper .dropdown-menu{min-width:auto}.dropdown.dropdown-icon-wrapper .dropdown-menu .dropdown-item,.dropup.dropdown-icon-wrapper .dropdown-menu .dropdown-item{padding:.5rem 1.1rem;cursor:pointer}.dropdown.dropdown-icon-wrapper .dropdown-menu .dropdown-item i,.dropup.dropdown-icon-wrapper .dropdown-menu .dropdown-item i{font-size:1.3rem;color:#626262}.dropdown.dropdown-icon-wrapper .dropdown-menu .dropdown-item:hover,.dropup.dropdown-icon-wrapper .dropdown-menu .dropdown-item:hover{color:#fff}.btn.btn-white~.dropdown-menu .dropdown-item:not(.acitve):hover{color:#626262!important}.btn.btn-white~.dropdown-menu .dropdown-item.active{color:#626262}.header-navbar .dropdown-menu,.horizontal-menu-wrapper .dropdown-menu{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:slideIn;animation-name:slideIn}@-webkit-keyframes slideIn{to{transform:translateY(0);opacity:1}0%{transform:translateY(1rem);opacity:0}}@keyframes slideIn{to{transform:translateY(0);opacity:1}0%{transform:translateY(1rem);opacity:0}}.navbar-dark .hamburger-inner,.navbar-dark .hamburger-inner:after,.navbar-dark .hamburger-inner:before{background-color:#fff}.header-navbar-shadow{display:none}.navbar-floating .header-navbar-shadow{display:block;background:linear-gradient(180deg,hsla(0,0%,97.3%,.95) 44%,hsla(0,0%,97.3%,.46) 73%,hsla(0,0%,100%,0));padding-top:2.2rem;background-repeat:repeat;width:100%;height:102px;position:fixed;top:0;z-index:11}.header-navbar{padding:0;min-height:3.8rem;font-family:Montserrat,Helvetica,Arial,serif;transition:all .3s ease;background:linear-gradient(180deg,hsla(0,0%,97.3%,.95) 44%,hsla(0,0%,97.3%,.46) 73%,hsla(0,0%,100%,0));z-index:997}.header-navbar.fixed-top{left:260px}.header-navbar[class*=bg-] .navbar-nav .nav-item>a,.header-navbar[class*=bg-] .navbar-nav .nav-item>a i,.header-navbar[class*=bg-] .navbar-nav .nav-item>a span{color:#fff!important}.header-navbar[class*=bg-] .navbar-nav .nav-item .dropdown-menu i{color:inherit!important}.header-navbar[class*=bg-] .navbar-nav .search-input .input,.header-navbar[class*=bg-] .navbar-nav .search-input .search-list .auto-suggestion span{color:#626262!important}.header-navbar.floating-nav{margin:1.3rem 2.2rem 0;border-radius:.5rem;position:fixed;width:calc(100% - 4.4rem - 260px);z-index:12;right:0}.header-navbar.navbar-static-top{background:transparent;box-shadow:none!important;top:0;right:0;left:260px;width:calc(100% - 260px)}.header-navbar .navbar-wrapper{width:100%}.header-navbar.navbar-border{border-bottom:1px solid #e4e7ed}.header-navbar.navbar-dark.navbar-border{border-bottom:1px solid #8596b5}.header-navbar.navbar-shadow{box-shadow:0 4px 20px 0 rgba(0,0,0,.05)}.header-navbar:not(.navbar-horizontal) .nav-link.dropdown-toggle:after{display:none}.header-navbar .navbar-container ul.nav li.dropdown-language{padding-right:0}.header-navbar .navbar-container ul.nav li.dropdown-language .selected-language{font-size:.97rem;letter-spacing:-.25px;font-weight:500}.header-navbar .navbar-container{padding-left:1rem;transition:all .3s ease;background:inherit;margin-left:0}.header-navbar .navbar-container .bookmark-wrapper ul.nav li>a.nav-link{padding:1.4rem .5rem 1.35rem}.header-navbar .navbar-container .bookmark-wrapper ul.nav li>a.nav-link i:hover{color:#586cb1}.header-navbar .navbar-container .bookmark-input{z-index:1}.header-navbar .navbar-container ul.nav li.dropdown .dropdown-menu{top:48px}.header-navbar .navbar-container ul.nav li .badge{padding:.42em .6em .25rem}.header-navbar .navbar-container ul.nav li .badge.badge-up{position:absolute;top:12px;right:-2px}.header-navbar .navbar-container ul.nav li.dropdown-language>a.nav-link{padding:1.65rem .5rem}.header-navbar .navbar-container ul.nav li>a.nav-link{color:#626262;padding:1.6rem .5rem 1.35rem 1rem}.header-navbar .navbar-container ul.nav li>a.nav-link i.flag-icon{margin-right:.5rem}.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right{right:12px;left:auto;padding:.5rem}.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right .dropdown-item{padding:10px}.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right .dropdown-item:active,.header-navbar .navbar-container ul.nav li.dropdown-user .dropdown-menu-right .dropdown-item:hover{background:#586cb1;color:#fff!important}.header-navbar .navbar-container ul.nav li a.dropdown-user-link{padding:.7rem 1rem;display:flex;align-items:center}.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-name{display:inline-block;margin-bottom:.435rem;margin-left:.2rem}.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-status{font-size:smaller}.header-navbar .navbar-container ul.nav li a.dropdown-user-link img{box-shadow:0 4px 8px 0 rgba(0,0,0,.12),0 2px 4px 0 rgba(0,0,0,.08)}.header-navbar .navbar-container ul.nav li a.menu-toggle{padding:1.34rem .22rem 1.35rem 0}.header-navbar .navbar-container ul.nav li a.menu-toggle i{font-size:1.4rem}.header-navbar .navbar-container ul.nav li a.nav-link-label{padding:1.6rem 0 1.35rem .8rem}.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-nav{display:flex;flex-direction:column;align-items:flex-end;float:left;margin-right:.8rem}.header-navbar .navbar-container ul.nav li div.input-group{padding:.7rem 1rem}.header-navbar .navbar-container ul.nav li i.ficon{font-size:1.5rem;color:#626262}.header-navbar .navbar-container ul.nav li i.ficon:hover{color:#586cb1}.header-navbar .navbar-container ul.nav li .media-list{max-height:18.2rem}.header-navbar .navbar-container ul.nav li .scrollable-container{position:relative}.header-navbar .navbar-container .dropdown-menu-media{width:26rem}.header-navbar .navbar-container .dropdown-menu-media .media-list .media{padding:1rem;border:none;border-bottom:1px solid #dae1e7}.header-navbar .navbar-container .dropdown-menu-media .media-list .media:hover{background:#eff1f7}.header-navbar .navbar-container .dropdown-menu-media .media-list .media .media-meta{color:#626262}.header-navbar .navbar-container .dropdown-menu-media .media-list a:last-of-type .media{border-bottom:none}.header-navbar .navbar-container .dropdown-menu-media .dropdown-menu-header{border-bottom:1px solid #dae1e7}.header-navbar .navbar-container .dropdown-menu-media .dropdown-menu-footer a{padding:.3rem;border-top:1px solid #dae1e7}.header-navbar .nav-item+.nav-item,.header-navbar.navbar-without-menu .navbar-container{margin-left:0}@media (max-width:767.98px){.header-navbar .navbar-header{width:100%!important;padding:.5rem 1rem;position:relative}.header-navbar .navbar-header .menu-toggle{top:2px;position:relative}.header-navbar .navbar-header .open-navbar-container i{font-size:1.8rem}.header-navbar .navbar-header .navbar-brand{position:absolute;left:50%;top:0;transform:translate(-50%)}.header-navbar.navbar-with-menu .navbar-container{width:100%;display:table;margin:0;height:auto}}@media (max-width:991.98px){[data-menu=vertical-menu-modern] .header-navbar .navbar-header{width:100%!important;padding:.5rem 1rem;position:relative}[data-menu=vertical-menu-modern] .header-navbar .navbar-header .menu-toggle{top:2px;position:relative}[data-menu=vertical-menu-modern] .header-navbar .navbar-header .open-navbar-container i{font-size:1.8rem}[data-menu=vertical-menu-modern] .header-navbar .navbar-header .navbar-brand{position:absolute;left:50%;top:0;transform:translate(-50%)}[data-menu=vertical-menu-modern] .header-navbar.navbar-with-menu .navbar-container{width:100%;display:table;margin:0;height:auto}[data-menu=vertical-menu-modern] .navbar-dark .navbar-header .navbar-nav .nav-link,[data-menu=vertical-menu-modern] .navbar-semi-dark .navbar-header .navbar-nav .nav-link{color:#fff}[data-menu=vertical-menu-modern] .navbar-dark .navbar-container .navbar-nav .nav-link,[data-menu=vertical-menu-modern] .navbar-light .navbar-header .navbar-nav .nav-link,[data-menu=vertical-menu-modern] .navbar-semi-dark .navbar-container .navbar-nav .nav-link{color:#b8c2cc}}.navbar-light,.navbar-light.navbar-horizontal{background:#fff}.navbar-light .navbar-nav li{line-height:1}.navbar-light .navbar-nav .active.nav-link{background-color:rgba(0,0,0,.03)}.navbar-light .navbar-nav .disabled.nav-link{color:#b8c2cc}.navbar-dark{background:#b8c2cc}.navbar-dark .navbar-brand{color:#fff!important}.navbar-dark.navbar-horizontal{background:#b8c2cc}.navbar-dark .nav-search .btn-secondary,.navbar-dark .nav-search .form-control{color:#fff;background:#b8c2cc}.navbar-dark .navbar-nav li{line-height:1}.navbar-dark .navbar-nav .active.nav-link{background-color:hsla(0,0%,100%,.05)}.navbar-dark .navbar-nav .disabled.nav-link{color:#dae1e7}.navbar-semi-dark{background:#fff}.navbar-semi-dark .navbar-header{background:#b8c2cc}.navbar-semi-dark .navbar-header .brand-text{color:#fff}.navbar-semi-dark .navbar-nav li{line-height:1}.navbar-semi-dark .navbar-nav .nav-link{color:#b8c2cc}.navbar-semi-dark .navbar-nav .active.nav-link{background-color:rgba(0,0,0,.03)}.navbar-semi-dark .navbar-nav .disabled.nav-link{color:#b8c2cc}.navbar-semi-light{background:#b8c2cc}.navbar-semi-light .navbar-header{background:#fff}.navbar-semi-light .navbar-header .brand-text{color:#b8c2cc}.navbar-semi-light .navbar-nav li{line-height:1}.navbar-semi-light .navbar-nav .nav-link{color:#fff}.navbar-semi-light .navbar-nav .active.nav-link{background-color:rgba(0,0,0,.03)}.navbar-semi-light .navbar-nav .disabled.nav-link{color:#b8c2cc}@-moz-document url-prefix(){ul li a .children-in{position:relative;right:3px;top:-14px}}.navbar-menu-icon span{display:block;position:absolute;height:2px;width:100%;background:#b8c2cc;border-radius:9px;opacity:1;left:0;transform:rotate(0deg);transition:.25s ease-in-out}.navbar-menu-icon span:first-child{top:0}.navbar-menu-icon span:nth-child(2){top:10px}.navbar-menu-icon span:nth-child(3){top:20px}.navbar-menu-icon.show span:first-child{top:10px;transform:rotate(135deg)}.navbar-menu-icon.show span:nth-child(2){opacity:0;left:-60px}.navbar-menu-icon.show span:nth-child(3){top:10px;transform:rotate(-135deg)}@media (max-width:767.98px){.header-navbar .navbar-nav .show{position:static}.header-navbar .navbar-nav .open-navbar-container{padding-top:.625rem}.header-navbar .navbar-container .show .dropdown-menu{right:0;left:0!important;float:none;width:auto;margin-top:0;max-height:400px;overflow-x:hidden}.header-navbar .navbar-container .dropdown-user .dropdown-menu-right{right:0!important}.header-navbar .navbar-container ul.nav li.nav-item i{margin-right:.2rem}.header-navbar .navbar-container ul.nav li a.dropdown-user-link{padding:.8rem .6rem}.header-navbar .navbar-container ul.nav li .dropdown-toggle:after{margin-right:0;margin-left:-2px}.navbar-dark .hamburger-inner,.navbar-dark .hamburger-inner:after,.navbar-dark .hamburger-inner:before,.navbar-semi-dark .hamburger-inner,.navbar-semi-dark .hamburger-inner:after,.navbar-semi-dark .hamburger-inner:before{background-color:#fff}.navbar-dark .navbar-header .navbar-nav .nav-link,.navbar-semi-dark .navbar-header .navbar-nav .nav-link{color:#fff}.navbar-dark .navbar-container .navbar-nav .nav-link,.navbar-light .navbar-container .navbar-nav .nav-link,.navbar-light .navbar-header .navbar-nav .nav-link,.navbar-semi-dark .navbar-container .navbar-nav .nav-link,.navbar-semi-light .navbar-container .navbar-nav .nav-link,.navbar-semi-light .navbar-header .navbar-nav .nav-link{color:#b8c2cc}}.headroom{will-change:transform;transition:transform .2s linear}.headroom--pinned-top{transform:translateY(0)}.headroom--unpinned-top{transform:translateY(-100%)}.headroom--pinned-bottom{transform:translateY(0)}.headroom--unpinned-bottom{transform:translateY(100%)}@media (max-width:575.98px){.header-navbar .navbar-container ul.nav li .selected-language{display:none}}body[data-col=\"1-column\"] .header-navbar.floating-nav{width:calc(100% - 4.4rem)}@media (-ms-high-contrast:none),(min-width:1200px) and (-ms-high-contrast:active){body:not([data-col=\"1-columns\"]) .header-navbar.floating-nav{width:calc(100% - 320px)}}@media (max-width:1199.98px){.header-navbar .navbar-container ul.nav li a.dropdown-user-link{padding:.7rem 1.23rem}.header-navbar .navbar-container ul.nav li .dropdown-toggle:after{margin-right:0;margin-left:-2px}.header-navbar.navbar-static-top{left:0;width:100%}}@media (max-width:767px){#navbar-mobile.navbar-collapse .navbar-nav{margin:0;flex-flow:row wrap}#navbar-mobile.navbar-collapse .navbar-nav .dropdown-menu{position:absolute}#navbar-mobile.navbar-collapse .navbar-nav .nav-item{float:left}}@media (max-width:991.98px){#navbar-mobile.navbar-collapse .navbar-nav{margin:0;flex-flow:row wrap}#navbar-mobile.navbar-collapse .navbar-nav .dropdown-menu{position:absolute}#navbar-mobile.navbar-collapse .navbar-nav .nav-item{float:left}}@media only screen and (min-device-width:26.78em) and (max-device-width:47.64em) and (-webkit-min-device-pixel-ratio:2) and (orientation:landscape){.header-navbar .navbar-container .show .dropdown-menu{max-height:180px}}@media only screen and (min-device-width:29.57em) and (max-device-width:52.57em) and (-webkit-min-device-pixel-ratio:3) and (orientation:landscape){.header-navbar .navbar-container .show .dropdown-menu{max-height:280px}}#navbar-component .navbar{z-index:auto!important}#navbar-component .navbar.floating-nav{border-radius:.5rem}#navbar-component .navbar .navbar-nav .nav-item a{color:inherit}#navbar-component .navbar.header-navbar.navbar-dark .navbar-nav .nav-link,#navbar-component .navbar.header-navbar.navbar-dark .navbar-nav .nav-link i{color:#fff}#navbar-component .navbar .navbar-nav .dropdown-language.show,#navbar-component .navbar .navbar-nav .dropdown-notification.show,#navbar-component .navbar .navbar-nav .dropdown-user.show{position:relative}#navbar-component .navbar .navbar-nav .dropdown-language .dropdown-menu.show,#navbar-component .navbar .navbar-nav .dropdown-notification .dropdown-menu.show,#navbar-component .navbar .navbar-nav .dropdown-user .dropdown-menu.show{position:absolute;right:0;left:auto!important}#navbar-component .navbar.navbar-dark .navbar-toggler,#navbar-component .navbar.navbar-light .navbar-toggler{font-size:1.2rem}#navbar-component .navbar.navbar-dark .navbar-toggler:focus,#navbar-component .navbar.navbar-light .navbar-toggler:focus{outline:0}#navbar-component #navbar-collapsed .navbar{border-radius:0}@media (min-width:992px){#navbar-component .navbar .navbar-container{background:inherit}#navbar-component .nav .dropdown-language{float:right}}@media (max-width:992px){#navbar-component .navbar .navbar-container{background:inherit}#navbar-component .navbar .navbar-container .navbar-nav{flex-direction:row}}@media (max-width:1201px){.header-navbar.fixed-top{left:0}.horizontal-layout .header-navbar .navbar-container{padding-left:1.5rem;padding-right:1.2rem}}@media (max-width:1199px){.header-navbar .navbar-container ul.nav li a.dropdown-user-link .user-name{margin-bottom:0}}@media (max-width:768px){#navbar-component .navbar .navbar-nav .dropdown-notification.show{position:static}}@media (max-width:575.98px){.header-navbar.floating-nav{width:calc(100% - 2.4rem)!important;margin-left:1.2rem;margin-right:1.2rem}.content.app-content .content-area-wrapper{margin-left:1.2rem!important;margin-right:1.2rem!important}.header-navbar .navbar-container{padding-left:1rem!important;padding-right:0!important}}@media (max-width:992px){.navbar-container #navbar-mobile .nav-back{margin-top:5px}}.nav{border-radius:.25rem}.nav.wrap-border{border:1px solid #ddd}.nav.wrap-border li.nav-header{margin:0 .5rem}.nav.wrap-border div,.nav.wrap-border li.nav-item{padding:2px .714rem}.nav.square-border,.nav.square-border .nav-item .nav-link.active{border-radius:0}.nav .modern-nav-toggle{padding:1.571rem 0}.nav.nav-pills{margin-bottom:1rem}.nav.nav-pills .nav-item .nav-link{border-radius:.357rem;padding:.3rem 1rem .2rem;margin-right:.5rem}.nav.nav-pills .nav-item .nav-link.active{color:#fff}.nav.nav-pills .nav-item .nav-link.disabled{color:#b8c2cc}.nav.nav-pills .nav-item .nav-link.dropdown-toggle:after{top:1px;left:1px}.nav.nav-pills .nav-item.dropdown.show .nav-link{color:#fff}.nav.nav-pills .nav-item.dropdown.show .dropdown-item.active:hover{color:#586cb1}.nav.nav-pills.nav-justified{width:100%}.nav.nav-pills.nav-justified .nav-item{float:none}.nav.nav-pills.nav-justified .nav-link{text-align:center;margin-bottom:5px}.nav.nav-pills.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:576px){.nav.nav-pills.nav-justified .nav-item{display:block;width:1%}.nav.nav-pills.nav-justified .nav-link{margin-bottom:0}}.nav.nav-pills.nav-justified .nav-link{margin-right:0;border-radius:.5rem}@media (min-width:576px){.nav.nav-pills.nav-justified .nav-link.active,.nav.nav-pills.nav-justified .nav-link.active:focus,.nav.nav-pills.nav-justified .nav-link.active:hover{border-bottom-color:transparent}}.nav.nav-pills.nav-justified .nav-link{display:block}.nav.nav-pills.nav-justified .nav-link.active,.nav.nav-pills.nav-justified .nav-link.active:focus,.nav.nav-pills.nav-justified .nav-link.active:hover{border:none}.nav.nav-pills.nav-active-bordered-pill .nav-item a.nav-link.active{border:1px solid #586cb1;border-radius:.25rem;color:#586cb1;background-color:#fff}.nav.nav-tabs{border:none;margin-bottom:1rem;border-radius:0}.nav.nav-tabs,.nav.nav-tabs .nav-item{position:relative}.nav.nav-tabs .nav-item .nav-link{color:#626262;font-size:.95rem;border:none;min-width:auto;font-weight:450;padding:.61rem .635rem;border-radius:0}.nav.nav-tabs .nav-item .nav-link.active{border:none;position:relative;color:#586cb1;transition:all .2s ease;background-color:transparent}.nav.nav-tabs .nav-item .nav-link.active:after{content:attr(data-before);height:2px;width:100%;left:0;position:absolute;bottom:0;top:100%;background:linear-gradient(30deg,#586cb1,rgba(88,108,177,.5))!important;box-shadow:0 0 8px 0 rgba(88,108,177,.5)!important;transform:translateY(0);transition:all .2s linear}.nav.nav-tabs .nav-item .nav-link.dropdown-toggle:after{top:1px;left:1px}.nav.nav-tabs .nav-item .nav-link.disabled{color:#b8c2cc}.nav.nav-tabs.nav-justified{width:100%}.nav.nav-tabs.nav-justified .nav-item{float:none}.nav.nav-tabs.nav-justified .nav-link{text-align:center;margin-bottom:5px}.nav.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:576px){.nav.nav-tabs.nav-justified .nav-item{display:block;width:1%}.nav.nav-tabs.nav-justified .nav-link{margin-bottom:0}}.nav.nav-tabs.nav-justified .nav-link{margin-right:0;border-radius:.5rem}@media (min-width:576px){.nav.nav-tabs.nav-justified .nav-link.active,.nav.nav-tabs.nav-justified .nav-link.active:focus,.nav.nav-tabs.nav-justified .nav-link.active:hover{border-bottom-color:transparent}}.nav.nav-tabs.nav-justified .nav-item a.nav-link{display:block;border-radius:0}.nav.nav-tabs.nav-justified .nav-item a.nav-link.active{border:none;background-color:#fff}.nav.nav-tabs.nav-justified .nav-item a.nav-link:hover{border-color:transparent}.nav-vertical{overflow:hidden}.nav-vertical .nav.nav-tabs .nav-item .nav-link{border:none;margin-bottom:0}.nav-vertical .nav.nav-tabs .nav-item .nav-link.active{border:none;border-radius:0}.nav-vertical .nav.nav-tabs .nav-item .nav-link.active:after{transform:rotate(90deg);left:auto;right:-1.5rem;bottom:100%;top:1.25rem;width:2.14rem}.nav-vertical .nav.nav-tabs .nav-item .nav-link:hover{border-right:none}.nav-vertical .nav.nav-tabs.nav-left{float:left;display:table;margin-right:1rem}.nav-vertical .nav.nav-tabs.nav-left~.tab-content .tab-pane{display:none;background-color:#fff;overflow-y:auto}.nav-vertical .nav.nav-tabs.nav-left~.tab-content .tab-pane.active{display:block}.nav-vertical .nav.nav-tabs.nav-right{float:right;display:table;margin-left:1rem}.nav-vertical .nav.nav-tabs.nav-right .nav-item .nav-link.active:after{left:-1.5rem}.nav-vertical .nav.nav-tabs.nav-right~.tab-content .tab-pane{display:none;background-color:#fff;overflow-y:auto;padding-right:1rem}.nav-vertical .nav.nav-tabs.nav-right~.tab-content .tab-pane.active{display:block}@media (max-width:576px){.nav-vertical .nav.nav-tabs .nav-item .nav-link.active:after{height:0}}.toast-bs-container{z-index:1040;position:fixed;top:0;left:0;width:100%}.toast-bs-container .toast-position{position:relative;top:0;right:0;display:flex;flex-direction:column;flex-wrap:wrap-reverse}.toast-bs-container .toast-position .toast.show{opacity:1;z-index:1030}.toast-placement{position:static;top:0}.toast-placement .toast{position:fixed;top:0;z-index:1030}.toast{display:none;background-color:#fff;margin-top:.75rem}.toast .toast-header .close:active,.toast .toast-header .close:focus,.toast .toast-header .mailbox-attachment-close:active,.toast .toast-header .mailbox-attachment-close:focus{outline:none}.toast.show.toast-wrapper{position:static}.toast.toast-translucent{opacity:1;display:block}.toast-header img{width:35px;height:24px}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.toast-bs-container{position:fixed!important;left:74%!important}}.toast-bs-container,_:-ms-lang(x){position:fixed!important;left:74%!important}.pagination .page-item{border-radius:5rem}.pagination .page-item.first .page-link,.pagination .page-item.last .page-link,.pagination .page-item.next-item .page-link,.pagination .page-item.prev-item .page-link{color:#586cb1}.pagination .page-item.first.disabled .page-link,.pagination .page-item.last.disabled .page-link,.pagination .page-item.next-item.disabled .page-link,.pagination .page-item.prev-item.disabled .page-link{color:#b8c2cc}.pagination .page-item:not(.active) .page-link,.pagination .page-item:not(.first) .page-link,.pagination .page-item:not(.last) .page-link,.pagination .page-item:not(.next-item) .page-link,.pagination .page-item:not(.prev-item) .page-link{line-height:1.3}.pagination .page-item.prev-item{margin-right:.3571rem}.pagination .page-item.prev-item .page-link{background-color:#f0f0f0;padding:.572rem .651rem;border-radius:50%}.pagination .page-item.prev-item .page-link:before{content:\"\\E843\";font-family:feather}.pagination .page-item.prev-item .page-link:hover{background:#586cb1;color:#fff}.pagination .page-item.prev-item~.page-item:nth-child(2){border-top-left-radius:5rem;border-bottom-left-radius:5rem}.pagination .page-item.prev-item~.page-item:nth-child(2) .page-link{border-top-left-radius:5rem!important;border-bottom-left-radius:5rem!important}.pagination .page-item.prev-item~.page-item:nth-last-child(2){border-top-right-radius:5rem;border-bottom-right-radius:5rem}.pagination .page-item.prev-item~.page-item:nth-last-child(2) .page-link{border-top-right-radius:5rem!important;border-bottom-right-radius:5rem!important}.pagination .page-item.next-item{margin-left:.3571rem}.pagination .page-item.next-item .page-link{background-color:#f0f0f0;padding:.572rem .651rem;border-radius:50%}.pagination .page-item.next-item .page-link:after{content:\"\\E844\";font-family:feather}.pagination .page-item.next-item .page-link:hover{background:#586cb1;color:#fff}.pagination .page-item.prev .page-link:before,.pagination .page-item.previous .page-link:before{content:\"\\E843\";font-family:feather}.pagination .page-item.next .page-link:after{content:\"\\E844\";font-family:feather}.pagination .page-item .page-link{border:none;color:rgba(86,86,86,.9);background-color:#f0f0f0;margin:0;font-size:1rem;font-weight:700}.pagination .page-item .page-link i{position:relative;top:1px}.pagination .page-item .page-link:focus{box-shadow:none}.pagination .page-item .page-link:hover{color:#586cb1}.pagination .page-item.active{background-color:#f0f0f0;border-radius:0}.pagination .page-item.active .page-link{z-index:3;border-radius:5rem;background-color:#586cb1;color:#fff;transform:scale(1.05)}.pagination .page-item:first-child:not(.prev-item).active{border-top-left-radius:1.428rem;border-bottom-left-radius:1.428rem}.pagination .page-item:first-child:not(.prev-item).active .page-link{border-radius:5rem}.pagination .page-item:first-child:not(.prev-item) .page-link{border-top-left-radius:1.428rem;border-bottom-left-radius:1.428rem}.pagination .page-item:last-child:not(.next-item).active{border-top-right-radius:1.428rem;border-bottom-right-radius:1.428rem}.pagination .page-item:last-child:not(.next-item).active .page-link{border-radius:5rem}.pagination .page-item:last-child:not(.next-item) .page-link{border-top-right-radius:1.428rem;border-bottom-right-radius:1.428rem}.pagination.pagination-lg .page-item .page-link{font-size:1.5rem;transform:scale(1)}html.scroll-smooth{scroll-behavior:smooth}.wrapper,body,html{min-height:100%}.wrapper{position:relative}.wrapper .content-wrapper{min-height:calc(100vh - 6.614rem - 1px)}.layout-boxed .wrapper,.layout-boxed .wrapper:before{margin:0 auto;max-width:1250px}.layout-boxed .wrapper .main-sidebar{left:inherit}@supports not (-webkit-touch-callout:none){.layout-fixed .wrapper .sidebar{height:calc(100vh - 3.164rem - 1px)}.layout-fixed.text-sm .wrapper .sidebar{height:calc(100vh - 2.62475rem - 1px)}}.layout-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed.sidebar-mini-md.sidebar-collapse .wrapper .brand-link,.layout-navbar-fixed.sidebar-mini.sidebar-collapse .wrapper .brand-link{height:calc(3.164rem + 1px);width:5.4rem}.layout-navbar-fixed.sidebar-mini-md.sidebar-collapse.text-sm .wrapper .brand-link,.layout-navbar-fixed.sidebar-mini-md.sidebar-collapse .wrapper .brand-link.text-sm,.layout-navbar-fixed.sidebar-mini.sidebar-collapse.text-sm .wrapper .brand-link,.layout-navbar-fixed.sidebar-mini.sidebar-collapse .wrapper .brand-link.text-sm{height:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .main-header{z-index:1033}.layout-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .control-sidebar{top:0}.layout-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .brand-link,.layout-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;z-index:1035}.layout-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-navbar-not-fixed .wrapper .brand-link{position:static}.layout-navbar-not-fixed .wrapper .content-wrapper,.layout-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-navbar-not-fixed .wrapper .main-header{position:static}.layout-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}@media (min-width:576px){.layout-sm-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-sm-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-sm-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-sm-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-sm-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed .wrapper .control-sidebar{top:0}.layout-sm-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-sm-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-sm-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-sm-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-sm-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-sm-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-sm-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-sm-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-sm-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-sm-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-sm-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-sm-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-sm-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-sm-navbar-not-fixed .wrapper .brand-link{position:static}.layout-sm-navbar-not-fixed .wrapper .content-wrapper,.layout-sm-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-sm-navbar-not-fixed .wrapper .main-header{position:static}.layout-sm-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}@media (min-width:768px){.layout-md-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-md-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-md-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-md-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-md-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed .wrapper .control-sidebar{top:0}.layout-md-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-md-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-md-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-md-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-md-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-md-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-md-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-md-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-md-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-md-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-md-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-md-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-md-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-md-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-md-navbar-not-fixed .wrapper .brand-link{position:static}.layout-md-navbar-not-fixed .wrapper .content-wrapper,.layout-md-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-md-navbar-not-fixed .wrapper .main-header{position:static}.layout-md-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}@media (min-width:992px){.layout-lg-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-lg-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-lg-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-lg-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-lg-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed .wrapper .control-sidebar{top:0}.layout-lg-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-lg-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-lg-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-lg-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-lg-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-lg-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-lg-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-lg-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-lg-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-lg-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-lg-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-lg-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-lg-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-lg-navbar-not-fixed .wrapper .brand-link{position:static}.layout-lg-navbar-not-fixed .wrapper .content-wrapper,.layout-lg-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-lg-navbar-not-fixed .wrapper .main-header{position:static}.layout-lg-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}@media (min-width:1200px){.layout-xl-navbar-fixed.layout-fixed .wrapper .control-sidebar{top:calc(3.164rem + 1px)}.layout-xl-navbar-fixed.layout-fixed .wrapper .main-header.text-sm~.control-sidebar,.text-sm .layout-xl-navbar-fixed.layout-fixed .wrapper .main-header~.control-sidebar{top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed.layout-fixed .wrapper .sidebar{margin-top:calc(3.164rem + 1px)}.layout-xl-navbar-fixed.layout-fixed .wrapper .brand-link.text-sm~.sidebar,.text-sm .layout-xl-navbar-fixed.layout-fixed .wrapper .brand-link~.sidebar{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed.layout-fixed.text-sm .wrapper .control-sidebar{top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed.layout-fixed.text-sm .wrapper .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed .wrapper .control-sidebar{top:0}.layout-xl-navbar-fixed .wrapper a.anchor{display:block;position:relative;top:calc(-4.164rem + -1px)}.layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(3.164rem + 1px);transition:width .3s ease-in-out;width:5.4rem}.layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link.text-sm,.text-sm .layout-xl-navbar-fixed .wrapper.sidebar-collapse .brand-link{height:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed .wrapper.sidebar-collapse .main-sidebar:hover .brand-link{transition:width .3s ease-in-out;width:260px}.layout-xl-navbar-fixed .wrapper .brand-link{overflow:hidden;position:fixed;top:0;transition:width .3s ease-in-out;width:260px;z-index:1035}.layout-xl-navbar-fixed .wrapper .sidebar-dark-primary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-primary .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-secondary .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-secondary .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-success .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-success .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-info .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-info .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-warning .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-warning .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-danger .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-danger .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-light .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-light .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .sidebar-dark-dark .brand-link:not([class*=navbar]){background-color:#3e4958}.layout-xl-navbar-fixed .wrapper .sidebar-light-dark .brand-link:not([class*=navbar]){background-color:#fff}.layout-xl-navbar-fixed .wrapper .content-wrapper{margin-top:calc(3.164rem + 1px)}.layout-xl-navbar-fixed .wrapper .main-header.text-sm~.content-wrapper,.text-sm .layout-xl-navbar-fixed .wrapper .main-header~.content-wrapper{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-fixed .wrapper .main-header{left:0;position:fixed;right:0;top:0;z-index:1037}.layout-xl-navbar-fixed.text-sm .wrapper .content-wrapper{margin-top:calc(2.62475rem + 1px)}body:not(.layout-fixed).layout-xl-navbar-fixed .wrapper .main-sidebar{margin-top:calc(-3.164rem + -1px)}body:not(.layout-fixed).layout-xl-navbar-fixed .wrapper .main-sidebar .sidebar{margin-top:calc(3.164rem + 1px)}body:not(.layout-fixed).layout-xl-navbar-fixed.text-sm .wrapper .main-sidebar{margin-top:calc(-2.62475rem + -1px)}body:not(.layout-fixed).layout-xl-navbar-fixed.text-sm .wrapper .main-sidebar .sidebar{margin-top:calc(2.62475rem + 1px)}.layout-xl-navbar-not-fixed .wrapper .brand-link{position:static}.layout-xl-navbar-not-fixed .wrapper .content-wrapper,.layout-xl-navbar-not-fixed .wrapper .sidebar{margin-top:0}.layout-xl-navbar-not-fixed .wrapper .main-header{position:static}.layout-xl-navbar-not-fixed.layout-fixed .wrapper .sidebar{margin-top:0}}.layout-footer-not-fixed .wrapper .content-wrapper{margin-bottom:0}.layout-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-footer-not-fixed .wrapper .main-footer{position:static}@media (min-width:576px){.layout-sm-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-sm-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-sm-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-sm-footer-not-fixed .wrapper .main-footer{position:static}}@media (min-width:768px){.layout-md-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-md-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-md-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-md-footer-not-fixed .wrapper .main-footer{position:static}}@media (min-width:992px){.layout-lg-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-lg-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-lg-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-lg-footer-not-fixed .wrapper .main-footer{position:static}}@media (min-width:1200px){.layout-xl-footer-fixed .wrapper .control-sidebar{bottom:0}.layout-xl-footer-fixed .wrapper .main-footer{bottom:0;left:0;position:fixed;right:0;z-index:1032}.layout-xl-footer-fixed .wrapper .content-wrapper{padding-bottom:3.45rem}.layout-xl-footer-not-fixed .wrapper .main-footer{position:static}}.layout-top-nav .wrapper{margin-left:0}.layout-top-nav .wrapper .main-header .brand-image{margin-top:-.5rem;margin-right:.2rem;height:33px}.layout-top-nav .wrapper .main-sidebar{bottom:inherit;height:inherit}.layout-top-nav .wrapper .content-wrapper,.layout-top-nav .wrapper .main-footer,.layout-top-nav .wrapper .main-header,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .content-wrapper,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .content-wrapper:before,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-footer,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-footer:before,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-header,body.sidebar-collapse:not(.sidebar-mini-md):not(.sidebar-mini) .main-header:before{margin-left:0}@media (min-width:768px){body:not(.sidebar-mini-md) .content-wrapper,body:not(.sidebar-mini-md) .main-footer,body:not(.sidebar-mini-md) .main-header{transition:margin-left .3s ease-in-out;margin-left:260px}}@media (min-width:768px) and (prefers-reduced-motion:reduce){body:not(.sidebar-mini-md) .content-wrapper,body:not(.sidebar-mini-md) .main-footer,body:not(.sidebar-mini-md) .main-header{transition:none}}@media (min-width:768px){.sidebar-collapse body:not(.sidebar-mini-md) .content-wrapper,.sidebar-collapse body:not(.sidebar-mini-md) .main-footer,.sidebar-collapse body:not(.sidebar-mini-md) .main-header{margin-left:0}}@media (max-width:991.98px){body:not(.sidebar-mini-md) .content-wrapper,body:not(.sidebar-mini-md) .content-wrapper:before,body:not(.sidebar-mini-md) .main-footer,body:not(.sidebar-mini-md) .main-footer:before,body:not(.sidebar-mini-md) .main-header,body:not(.sidebar-mini-md) .main-header:before{margin-left:0}}@media (min-width:768px){.sidebar-mini-md .content-wrapper,.sidebar-mini-md .main-footer,.sidebar-mini-md .main-header{transition:margin-left .3s ease-in-out;margin-left:260px}}@media (min-width:768px) and (prefers-reduced-motion:reduce){.sidebar-mini-md .content-wrapper,.sidebar-mini-md .main-footer,.sidebar-mini-md .main-header{transition:none}}@media (min-width:768px){.sidebar-collapse .sidebar-mini-md .content-wrapper,.sidebar-collapse .sidebar-mini-md .main-footer,.sidebar-collapse .sidebar-mini-md .main-header{margin-left:5.4rem}}@media (max-width:991.98px){.sidebar-mini-md .content-wrapper,.sidebar-mini-md .content-wrapper:before,.sidebar-mini-md .main-footer,.sidebar-mini-md .main-footer:before,.sidebar-mini-md .main-header,.sidebar-mini-md .main-header:before{margin-left:5.4rem}}.content-wrapper{background:#f4f6f9}.content-wrapper>.content{padding:0 1rem}.main-sidebar,.main-sidebar:before{transition:margin-left .3s ease-in-out,width .3s ease-in-out;width:260px}@media (prefers-reduced-motion:reduce){.main-sidebar,.main-sidebar:before{transition:none}}.sidebar-collapse:not(.sidebar-mini):not(.sidebar-mini-md) .main-sidebar,.sidebar-collapse:not(.sidebar-mini):not(.sidebar-mini-md) .main-sidebar:before{box-shadow:none!important}.sidebar-collapse .main-sidebar,.sidebar-collapse .main-sidebar:before{margin-left:-260px}.sidebar-collapse .main-sidebar .nav-sidebar.nav-child-indent .nav-treeview{padding:0}@media (max-width:767.98px){.main-sidebar,.main-sidebar:before{box-shadow:none!important;margin-left:-260px}.sidebar-open .main-sidebar,.sidebar-open .main-sidebar:before{margin-left:0}}:not(.layout-fixed) .main-sidebar{height:inherit;min-height:100%;position:absolute;top:0}.layout-fixed .brand-link{width:260px}.layout-fixed .main-sidebar{left:0}.layout-fixed .control-sidebar,.layout-fixed .main-sidebar{bottom:0;float:none;height:100vh;position:fixed;top:0}.layout-fixed .control-sidebar .control-sidebar-content{height:calc(100vh - 3.164rem - 1px)}@supports (-webkit-touch-callout:none){.layout-fixed .main-sidebar{height:inherit}}.main-footer{background:transparent;border-top:0 solid #dae1e7;padding:.5rem 1rem;font-size:90%}.main-footer.text-sm,.text-sm .main-footer{padding:.812rem}.content-header{padding:15px 1rem}.text-sm .content-header{padding:10px 1rem}.content-header h1{font-size:1.8rem;margin:0}.text-sm .content-header h1{font-size:1.5rem}.content-header .breadcrumb{background:transparent;line-height:1.8rem;margin-bottom:0;padding:0;font-size:97%}.text-sm .content-header .breadcrumb{line-height:1.5rem}.hold-transition .content-wrapper,.hold-transition .control-sidebar,.hold-transition .control-sidebar *,.hold-transition .main-footer,.hold-transition .main-header,.hold-transition .main-sidebar,.hold-transition .main-sidebar *{transition:none!important}.main-header{border-bottom:1px solid #dae1e7;z-index:1034}.main-header .nav-link{height:2.164rem;position:relative}.main-header.text-sm .nav-link,.text-sm .main-header .nav-link{height:1.62475rem;padding:.35rem .5rem}.main-header.text-sm .nav-link>.fa,.main-header.text-sm .nav-link>.fab,.main-header.text-sm .nav-link>.far,.main-header.text-sm .nav-link>.fas,.main-header.text-sm .nav-link>.glyphicon,.main-header.text-sm .nav-link>.ion,.text-sm .main-header .nav-link>.fa,.text-sm .main-header .nav-link>.fab,.text-sm .main-header .nav-link>.far,.text-sm .main-header .nav-link>.fas,.text-sm .main-header .nav-link>.glyphicon,.text-sm .main-header .nav-link>.ion{font-size:1rem}.main-header .navbar-nav .nav-item{margin:0}.main-header .navbar-nav[class*=-right] .dropdown-menu{left:auto;margin-top:-3px;right:0}@media (max-width:575.98px){.main-header .navbar-nav[class*=-right] .dropdown-menu{left:0;right:auto}}.navbar-img{height:calc(3.164rem + 1px)/2;width:auto}.navbar-badge{font-size:.6rem;font-weight:300;padding:2px 4px;position:absolute;right:5px;top:9px}.btn-navbar{background-color:transparent;border-left-width:0}.form-control-navbar{border-right-width:0}.form-control-navbar+.input-group-append{margin-left:0}.btn-navbar,.form-control-navbar{transition:none}.navbar-dark .btn-navbar,.navbar-dark .form-control-navbar{background-color:hsla(0,0%,100%,.2);border:0}.navbar-dark .form-control-navbar::-moz-placeholder{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar:-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar::placeholder{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar+.input-group-append>.btn-navbar{color:hsla(0,0%,100%,.6)}.navbar-dark .form-control-navbar:focus,.navbar-dark .form-control-navbar:focus+.input-group-append .btn-navbar{background-color:hsla(0,0%,100%,.6);border:0!important;color:#1e1e1e}.navbar-light .btn-navbar,.navbar-light .form-control-navbar{background-color:#b4bac2;border:0}.navbar-light .form-control-navbar::-moz-placeholder{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar:-ms-input-placeholder{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar::placeholder{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar+.input-group-append>.btn-navbar{color:rgba(0,0,0,.6)}.navbar-light .form-control-navbar:focus,.navbar-light .form-control-navbar:focus+.input-group-append .btn-navbar{background-color:#ededed;border:0!important;color:#1e1e1e}.brand-link{display:block;font-size:2rem;line-height:1.25;padding:.132rem .5rem;transition:width .3s ease-in-out;white-space:nowrap}.brand-link:hover{color:#fff;text-decoration:none}.text-sm .brand-link{font-size:inherit}[class*=sidebar-dark] .brand-link{border-bottom:0;color:hsla(0,0%,100%,.8)}[class*=sidebar-light] .brand-link{border-bottom:0;color:rgba(34,41,47,.8)}.brand-link .brand-image{float:left;line-height:.8;margin-left:.8rem;margin-right:.5rem;margin-top:-3px;max-height:33px;width:auto}.brand-link .brand-image-xs{float:left;line-height:.8;margin-top:-.1rem;max-height:33px;width:auto}.brand-link .brand-image-xl{line-height:.8;max-height:40px;width:auto}.brand-link.text-sm .brand-image,.text-sm .brand-link .brand-image{height:29px;margin-bottom:-.25rem;margin-left:.95rem;margin-top:-.25rem}.brand-link.text-sm .brand-image-xs,.text-sm .brand-link .brand-image-xs{margin-top:-.2rem;max-height:29px}.brand-link.text-sm .brand-image-xl,.text-sm .brand-link .brand-image-xl{margin-top:-.225rem;max-height:38px}.main-sidebar{height:100vh;overflow-y:hidden;z-index:1038}.main-sidebar a:-moz-focusring{border:0;outline:none}.main-sidebar .nav .nav-item .nav-link{padding:10px 10px 10px 25px!important}.main-sidebar .nav-treeview.nav .nav-item .nav-link{padding:5px 10px 7px 25px!important}.sidebar{height:calc(100% - 3.164rem - 1px);overflow-y:auto;padding:0 .5rem}.user-panel{position:relative}[class*=sidebar-dark] .user-panel{border-bottom:1px solid #3c4853}[class*=sidebar-light] .user-panel{border-bottom:1px solid #dae1e7}.user-panel,.user-panel .info{overflow:hidden;white-space:nowrap}.user-panel .image{display:inline-block;padding-left:.3rem}.user-panel img{height:auto;width:2.5666666667rem}.user-panel .info{display:inline-block;padding:5px 5px 5px 10px}.user-panel .dropdown-menu,.user-panel .status{font-size:1rem}.nav-sidebar .nav-item>.nav-link{margin-bottom:.2rem}.nav-sidebar .nav-item>.nav-link .right{transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-sidebar .nav-item>.nav-link .right{transition:none}}.nav-sidebar .nav-link>.right,.nav-sidebar .nav-link>p>.right{position:absolute;right:1rem;top:.9rem}.nav-sidebar .nav-link>.right i,.nav-sidebar .nav-link>.right span,.nav-sidebar .nav-link>p>.right i,.nav-sidebar .nav-link>p>.right span{margin-left:.5rem}.nav-sidebar .nav-link>.right:nth-child(2),.nav-sidebar .nav-link>p>.right:nth-child(2){right:2.2rem}.nav-sidebar .menu-open>.nav-treeview{display:block;border-radius:0}.nav-sidebar .menu-open>.nav-link i.right{transform:rotate(-90deg)}.nav-sidebar>.nav-item{margin-bottom:0}.nav-sidebar>.nav-item .nav-icon{margin-left:.05rem;font-size:1.2rem;margin-right:.2rem;text-align:center;width:2.4rem}.nav-sidebar>.nav-item .nav-icon.fa,.nav-sidebar>.nav-item .nav-icon.fab,.nav-sidebar>.nav-item .nav-icon.far,.nav-sidebar>.nav-item .nav-icon.fas,.nav-sidebar>.nav-item .nav-icon.glyphicon,.nav-sidebar>.nav-item .nav-icon.ion{font-size:1.1rem}.nav-sidebar>.nav-item .float-right{margin-top:3px}.nav-sidebar .nav-treeview{display:none;list-style:none;padding:0}.nav-sidebar .nav-treeview>.nav-item>.nav-link>.nav-icon{width:2.4rem}.nav-sidebar.nav-child-indent .nav-treeview{transition:padding .3s ease-in-out;padding-left:1rem}.text-sm .nav-sidebar.nav-child-indent .nav-treeview{padding-left:.5rem}.nav-sidebar.nav-child-indent.nav-legacy .nav-treeview .nav-treeview{padding-left:2rem;margin-left:-1rem}.text-sm .nav-sidebar.nav-child-indent.nav-legacy .nav-treeview .nav-treeview{padding-left:1rem;margin-left:-.5rem}.nav-sidebar .nav-header{font-size:.9rem;padding:.357rem}.nav-sidebar .nav-header:not(:first-of-type){padding:1.7rem 1rem .5rem}.nav-sidebar .nav-link p{display:inline-block;margin:0}#sidebar-overlay{background-color:rgba(34,41,47,.1);bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:1037}@media (max-width:991.98px){.sidebar-open #sidebar-overlay{display:block}}[class*=sidebar-light-]{background-color:#fff}[class*=sidebar-light-] .user-panel a:hover{color:#555}[class*=sidebar-light-] .user-panel .status,[class*=sidebar-light-] .user-panel .status:active,[class*=sidebar-light-] .user-panel .status:focus,[class*=sidebar-light-] .user-panel .status:hover{background:transparent;color:#555}[class*=sidebar-light-] .user-panel .dropdown-menu{border-color:transparent}[class*=sidebar-light-] .user-panel .dropdown-item{color:#626262}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link:active,[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link:focus{color:#555}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link i{margin-right:.75rem;font-size:1.2rem}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link p i{margin-right:0;margin-top:1px}[class*=sidebar-light-] .nav-sidebar>.nav-item.menu-open>.nav-link,[class*=sidebar-light-] .nav-sidebar>.nav-item:hover>.nav-link{background-color:transparent;color:#555}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-link.active{color:#fff}[class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-treeview{background:transparent}[class*=sidebar-light-] .nav-header{background:inherit;color:#484848}[class*=sidebar-light-] .sidebar a{color:#555}[class*=sidebar-light-] .sidebar a:hover{text-decoration:none}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link{color:#555}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link i{margin-right:.75rem;margin-left:3px}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link p i{margin-right:0}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active:hover{background-color:transparent!important;background-image:linear-gradient(118deg,rgba(88,108,177,.95),rgba(88,108,177,.7));color:#fff;box-shadow:0 0 8px 1px rgba(88,108,177,.7)}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link:hover{background-color:transparent}[class*=sidebar-light-] .nav-flat .nav-item .nav-treeview .nav-treeview,[class*=sidebar-light-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link,[class*=sidebar-light-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link.active{border-color:linear-gradient(118deg,#586cb1,rgba(88,108,177,.7))}[class*=sidebar-dark-]{background-image:linear-gradient(0deg,#77889f,#3e4958)}[class*=sidebar-dark-] .nav-treeview.nav .nav-item .nav-link{font-size:1rem!important;margin-bottom:0}[class*=sidebar-dark-] .nav-sidebar .nav-link>p>.right{right:.5rem}[class*=sidebar-dark-] .user-panel a:hover{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .user-panel .status,[class*=sidebar-dark-] .user-panel .status:active,[class*=sidebar-dark-] .user-panel .status:focus,[class*=sidebar-dark-] .user-panel .status:hover{background:transparent;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .user-panel .dropdown-menu{border-color:transparent}[class*=sidebar-dark-] .user-panel .dropdown-item{color:#626262}[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:active{color:#fff;font-weight:700}[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:hover{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-sidebar>.nav-item i{margin-right:.75rem;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-sidebar>.nav-item.menu-open>.nav-link,[class*=sidebar-dark-] .nav-sidebar>.nav-item:hover>.nav-link,[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:focus{background-color:transparent;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link.active{color:#fff;background:transparent;font-weight:700}[class*=sidebar-dark-] .nav-header{background:inherit;color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .sidebar a{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .sidebar a:focus,[class*=sidebar-dark-] .sidebar a:hover{text-decoration:none}[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link{color:hsla(0,0%,100%,.95)}[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:focus,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:hover,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link:focus,[class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link:hover{background-color:transparent;color:#fff;font-weight:700}[class*=sidebar-dark-] .nav-flat .nav-item .nav-treeview .nav-treeview,[class*=sidebar-dark-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link,[class*=sidebar-dark-] .nav-flat .nav-item .nav-treeview>.nav-item>.nav-link.active{border-color:transparent}.sidebar-light-primary .nav-item>.nav-link.active{background-color:transparent!important;background-image:linear-gradient(118deg,rgba(88,108,177,.95),rgba(88,108,177,.7));color:#fff;box-shadow:0 0 8px 1px rgba(88,108,177,.7)}.sidebar-light-primary .active-bg-light .nav-item>.nav-link.active{background-color:rgba(88,108,177,.15)!important;color:#586cb1!important;font-weight:700;box-shadow:0 0 8px 1px rgba(88,108,177,.15)}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand) .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini .main-sidebar.sidebar-focused .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini .main-sidebar:not(.sidebar-no-expand) .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-compact.nav-sidebar.nav-child-indent:not(.nav-flat) .nav-treeview{padding-left:1rem;margin-left:-.5rem}.nav-flat{margin:-.25rem -.5rem 0}.nav-flat .nav-item>.nav-link{border-radius:0;margin-bottom:0}.nav-flat .nav-item>.nav-link>.nav-icon{margin-left:.55rem}.nav-flat:not(.nav-child-indent) .nav-treeview .nav-item>.nav-link>.nav-icon{margin-left:.4rem}.nav-flat.nav-child-indent .nav-treeview{padding-left:0}.nav-flat.nav-child-indent .nav-treeview .nav-icon{margin-left:.85rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview{border-left:.2rem solid}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-icon{margin-left:1.15rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.45rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.75rem}.nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:2.05rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-icon{margin-left:.55rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-link{padding-left:.3rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-icon{margin-left:.35rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:.15rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:-.15rem}.sidebar-collapse .nav-flat.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:-.35rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-compact.nav-sidebar .nav-treeview .nav-icon{margin-left:.4rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-icon{margin-left:.85rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-icon{margin-left:1.15rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.45rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:1.75rem}.sidebar-mini-md .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini-md .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar.sidebar-focused .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon,.sidebar-mini .main-sidebar:not(.sidebar-no-expand):hover .nav-flat.nav-sidebar.nav-child-indent .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-treeview .nav-icon{margin-left:2.05rem}.nav-flat .nav-icon{transition:margin-left .3s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-flat .nav-icon{transition:none}}.nav-flat .nav-treeview .nav-icon{margin-left:-.2rem}.nav-flat.nav-sidebar>.nav-item .nav-treeview,.nav-flat.nav-sidebar>.nav-item>.nav-treeview{background:hsla(0,0%,100%,.05)}.nav-flat.nav-sidebar>.nav-item .nav-treeview .nav-item>.nav-link,.nav-flat.nav-sidebar>.nav-item>.nav-treeview .nav-item>.nav-link{border-left:.2rem solid}.nav-legacy{margin:-.25rem -.5rem 0}.nav-legacy.nav-sidebar .nav-item>.nav-link{border-radius:0;margin-bottom:0}.nav-legacy.nav-sidebar .nav-item>.nav-link>.nav-icon{margin-left:.55rem}.text-sm .nav-legacy.nav-sidebar .nav-item>.nav-link>.nav-icon{margin-left:.75rem}.nav-legacy.nav-sidebar>.nav-item>.nav-link.active{background:inherit;border-left:3px solid transparent;box-shadow:none}.nav-legacy.nav-sidebar>.nav-item>.nav-link.active>.nav-icon{margin-left:calc(.55rem - 3px)}.text-sm .nav-legacy.nav-sidebar.nav-flat .nav-treeview .nav-item>.nav-link>.nav-icon,.text-sm .nav-legacy.nav-sidebar>.nav-item>.nav-link.active>.nav-icon{margin-left:calc(.75rem - 3px)}.sidebar-mini-md .nav-legacy>.nav-item .nav-link .nav-icon,.sidebar-mini .nav-legacy>.nav-item .nav-link .nav-icon{transition:margin-left .3s ease-in-out;margin-left:.75rem}@media (prefers-reduced-motion:reduce){.sidebar-mini-md .nav-legacy>.nav-item .nav-link .nav-icon,.sidebar-mini .nav-legacy>.nav-item .nav-link .nav-icon{transition:none}}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview{padding-left:1rem}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview{padding-left:2rem;margin-left:-1rem}.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview{padding-left:.5rem}.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini-md.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar.sidebar-focused .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse.text-sm .main-sidebar:hover .nav-legacy.nav-child-indent .nav-treeview .nav-treeview{padding-left:1rem;margin-left:-.5rem}.sidebar-mini-md.sidebar-collapse .nav-legacy>.nav-item>.nav-link .nav-icon,.sidebar-mini.sidebar-collapse .nav-legacy>.nav-item>.nav-link .nav-icon{margin-left:.55rem}.sidebar-mini-md.sidebar-collapse .nav-legacy>.nav-item>.nav-link.active>.nav-icon,.sidebar-mini.sidebar-collapse .nav-legacy>.nav-item>.nav-link.active>.nav-icon{margin-left:.36rem}.sidebar-mini-md.sidebar-collapse .nav-legacy.nav-child-indent .nav-treeview .nav-treeview,.sidebar-mini.sidebar-collapse .nav-legacy.nav-child-indent .nav-treeview .nav-treeview{padding-left:0;margin-left:0}.sidebar-mini-md.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link .nav-icon,.sidebar-mini.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link .nav-icon{margin-left:.75rem}.sidebar-mini-md.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link.active>.nav-icon,.sidebar-mini.sidebar-collapse.text-sm .nav-legacy>.nav-item>.nav-link.active>.nav-icon{margin-left:calc(.75rem - 3px)}[class*=sidebar-dark] .nav-legacy.nav-sidebar>.nav-item .nav-treeview,[class*=sidebar-dark] .nav-legacy.nav-sidebar>.nav-item>.nav-treeview{background:hsla(0,0%,100%,.05)}[class*=sidebar-dark] .nav-legacy.nav-sidebar>.nav-item>.nav-link.active{color:#fff}[class*=sidebar-dark] .nav-legacy .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-dark] .nav-legacy .nav-treeview>.nav-item>.nav-link:focus,[class*=sidebar-dark] .nav-legacy .nav-treeview>.nav-item>.nav-link:hover{background:none;color:#fff}[class*=sidebar-light] .nav-legacy.nav-sidebar>.nav-item .nav-treeview,[class*=sidebar-light] .nav-legacy.nav-sidebar>.nav-item>.nav-treeview{background:rgba(34,41,47,.05)}[class*=sidebar-light] .nav-legacy.nav-sidebar>.nav-item>.nav-link.active{color:#fff}[class*=sidebar-light] .nav-legacy .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-light] .nav-legacy .nav-treeview>.nav-item>.nav-link:focus,[class*=sidebar-light] .nav-legacy .nav-treeview>.nav-item>.nav-link:hover{background:none;color:#fff}.nav-collapse-hide-child .menu-open>.nav-treeview{max-height:-webkit-min-content;max-height:-moz-min-content;max-height:min-content;opacity:1}.sidebar-collapse .nav-collapse-hide-child .menu-open>.nav-treeview{max-height:0;opacity:0}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-collapse-hide-child .menu-open>.nav-treeview,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-collapse-hide-child .menu-open>.nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-collapse-hide-child .menu-open>.nav-treeview,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-collapse-hide-child .menu-open>.nav-treeview{max-height:-webkit-min-content;max-height:-moz-min-content;max-height:min-content;opacity:1}.nav-compact .nav-header,.nav-compact .nav-link{padding-top:.1785rem;padding-bottom:.1785rem}.nav-compact .nav-header:not(:first-of-type){padding-top:.5355rem;padding-bottom:.1785rem}.nav-compact .nav-link>.right,.nav-compact .nav-link>p>.right{top:.465rem}.text-sm .nav-compact .nav-link>.right,.text-sm .nav-compact .nav-link>p>.right{top:.7rem}[class*=sidebar-dark] .btn-sidebar,[class*=sidebar-dark] .form-control-sidebar{background:#495567;border:1px solid #5e6e85;color:#fff}[class*=sidebar-dark] .btn-sidebar:focus,[class*=sidebar-dark] .form-control-sidebar:focus{border:1px solid #8695a9}[class*=sidebar-dark] .btn-sidebar:hover{background:#4e5c6e}[class*=sidebar-dark] .btn-sidebar:focus{background:#536276}[class*=sidebar-light] .btn-sidebar,[class*=sidebar-light] .form-control-sidebar{background:#f2f2f2;border:1px solid #d9d9d9;color:#2a2e30}[class*=sidebar-light] .btn-sidebar:focus,[class*=sidebar-light] .form-control-sidebar:focus{border:1px solid #b3b3b3}[class*=sidebar-light] .btn-sidebar:hover{background:#ececec}[class*=sidebar-light] .btn-sidebar:focus{background:#e6e6e6}.logo-xl,.logo-xs{opacity:1;position:absolute;visibility:visible}.logo-xl.brand-image-xs,.logo-xs.brand-image-xs{left:18px;top:12px}.logo-xl.brand-image-xl,.logo-xs.brand-image-xl{left:12px;top:6px}.logo-xs{opacity:0;visibility:hidden}.logo-xs.brand-image-xl{left:16px;top:8px}.brand-link.logo-switch:before{content:\"\\A0\"}@media (min-width:992px){.sidebar-mini .nav-sidebar,.sidebar-mini .nav-sidebar .nav-link,.sidebar-mini .nav-sidebar>.nav-header{white-space:nowrap;overflow:hidden}.sidebar-mini.sidebar-collapse .d-hidden-mini{display:none}.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .main-footer,.sidebar-mini.sidebar-collapse .main-header{margin-left:5.4rem!important}.sidebar-mini.sidebar-collapse .nav-sidebar .nav-header{display:none}.sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p{width:0}.sidebar-mini.sidebar-collapse .brand-text,.sidebar-mini.sidebar-collapse .nav-sidebar .nav-link p,.sidebar-mini.sidebar-collapse .sidebar .user-panel>.info{margin-left:-10px;opacity:0;visibility:hidden}.sidebar-mini.sidebar-collapse .logo-xl{opacity:0;visibility:hidden}.sidebar-mini.sidebar-collapse .logo-xs{display:inline-block;opacity:1;visibility:visible}.sidebar-mini.sidebar-collapse .main-sidebar{overflow-x:hidden}.sidebar-mini.sidebar-collapse .main-sidebar,.sidebar-mini.sidebar-collapse .main-sidebar:before{margin-left:0;width:5.4rem}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel .image{float:none}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-link,.sidebar-mini.sidebar-collapse .main-sidebar:hover,.sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-link{width:260px}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel{text-align:left}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel .image,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel .image{float:left}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-text,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .logo-xl,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar .nav-link p,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-text,.sidebar-mini.sidebar-collapse .main-sidebar:hover .logo-xl,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar .nav-link p,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:inline-block;margin-left:0;opacity:1;visibility:visible}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .logo-xs,.sidebar-mini.sidebar-collapse .main-sidebar:hover .logo-xs{opacity:0;visibility:hidden}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .brand-image,.sidebar-mini.sidebar-collapse .main-sidebar:hover .brand-image{margin-right:.5rem}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .sidebar-form,.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini.sidebar-collapse .main-sidebar:hover .sidebar-form,.sidebar-mini.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:block!important;-webkit-transform:translateZ(0)}.sidebar-mini.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar>.nav-item>.nav-link>span,.sidebar-mini.sidebar-collapse .main-sidebar:hover .nav-sidebar>.nav-item>.nav-link>span{display:inline-block!important}.sidebar-mini.sidebar-collapse .visible-sidebar-mini{display:block!important}.sidebar-mini.sidebar-collapse.layout-fixed .main-sidebar:hover .brand-link{width:260px}.sidebar-mini.sidebar-collapse.layout-fixed .brand-link{width:5.4rem}}@media (max-width:991.98px){.sidebar-mini.sidebar-collapse .main-sidebar{box-shadow:none!important}}@media (min-width:768px){.sidebar-mini-md .nav-sidebar,.sidebar-mini-md .nav-sidebar .nav-link,.sidebar-mini-md .nav-sidebar>.nav-header{white-space:nowrap;overflow:hidden}.sidebar-mini-md.sidebar-collapse .d-hidden-mini{display:none}.sidebar-mini-md.sidebar-collapse .content-wrapper,.sidebar-mini-md.sidebar-collapse .main-footer,.sidebar-mini-md.sidebar-collapse .main-header{margin-left:5.4rem!important}.sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-header{display:none}.sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-link p{width:0}.sidebar-mini-md.sidebar-collapse .brand-text,.sidebar-mini-md.sidebar-collapse .nav-sidebar .nav-link p,.sidebar-mini-md.sidebar-collapse .sidebar .user-panel>.info{margin-left:-10px;opacity:0;visibility:hidden}.sidebar-mini-md.sidebar-collapse .logo-xl{opacity:0;visibility:hidden}.sidebar-mini-md.sidebar-collapse .logo-xs{display:inline-block;opacity:1;visibility:visible}.sidebar-mini-md.sidebar-collapse .main-sidebar{overflow-x:hidden}.sidebar-mini-md.sidebar-collapse .main-sidebar,.sidebar-mini-md.sidebar-collapse .main-sidebar:before{margin-left:0;width:5.4rem}.sidebar-mini-md.sidebar-collapse .main-sidebar .user-panel .image{float:none}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-link,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-link{width:260px}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel{text-align:left}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel .image,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel .image{float:left}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-text,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .logo-xl,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar .nav-link p,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-text,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .logo-xl,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar .nav-link p,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:inline-block;margin-left:0;opacity:1;visibility:visible}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .logo-xs,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .logo-xs{opacity:0;visibility:hidden}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .brand-image,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .brand-image{margin-right:.5rem}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .sidebar-form,.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .user-panel>.info,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .sidebar-form,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .user-panel>.info{display:block!important;-webkit-transform:translateZ(0)}.sidebar-mini-md.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar>.nav-item>.nav-link>span,.sidebar-mini-md.sidebar-collapse .main-sidebar:hover .nav-sidebar>.nav-item>.nav-link>span{display:inline-block!important}.sidebar-mini-md.sidebar-collapse .visible-sidebar-mini{display:block!important}.sidebar-mini-md.sidebar-collapse.layout-fixed .main-sidebar:hover .brand-link{width:260px}.sidebar-mini-md.sidebar-collapse.layout-fixed .brand-link{width:5.4rem}}.sidebar-collapse .main-sidebar.sidebar-focused .nav-header,.sidebar-collapse .main-sidebar:hover .nav-header{display:inline-block}.sidebar-collapse .main-sidebar.sidebar-focused .nav .menu-open .nav-treeview,.sidebar-collapse .main-sidebar:hover .nav .menu-open .nav-treeview{display:block!important}.sidebar-collapse .main-sidebar.sidebar-focused .nav-sidebar>.nav-item>.nav-link i,.sidebar-collapse .main-sidebar:hover .nav-sidebar>.nav-item>.nav-link i{font-size:1.2rem}.sidebar-collapse .main-sidebar .nav .nav-item .nav-link{padding:10px 21px!important}.sidebar-collapse .main-sidebar .nav .menu-open .nav-treeview{display:none!important}.sidebar-collapse .header-navbar.floating-nav{width:calc(100% - 70px - 5.4rem)}.sidebar-collapse .header-navbar.fixed-top{left:5.4rem}.sidebar-collapse .nav-sidebar>.nav-item>.nav-link i{font-size:1.3rem}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover{width:5.4rem}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-header,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-header{display:none}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .brand-link,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .brand-link{width:5.4rem!important}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .user-panel .image,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .user-panel .image{float:none!important}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .logo-xs,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .logo-xs{opacity:1;visibility:visible}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .logo-xl,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .logo-xl{opacity:0;visibility:hidden}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar.nav-child-indent .nav-treeview,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar.nav-child-indent .nav-treeview{padding-left:0}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .brand-text,.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar .nav-link p,.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .user-panel>.info,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .brand-text,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar .nav-link p,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .user-panel>.info{margin-left:-10px;opacity:0;visibility:hidden;width:0}.sidebar-collapse .sidebar-no-expand.main-sidebar.sidebar-focused .nav-sidebar>.nav-item .nav-icon,.sidebar-collapse .sidebar-no-expand.main-sidebar:hover .nav-sidebar>.nav-item .nav-icon{margin-right:0}.nav-sidebar{position:relative}.nav-sidebar:hover{overflow:visible}.nav-sidebar>.nav-header,.sidebar-form{overflow:hidden;text-overflow:clip}.nav-sidebar .nav-item>.nav-link{position:relative}.nav-sidebar .nav-item>.nav-link>.float-right{margin-top:-7px;position:absolute;right:10px;top:50%}@media (max-width:767.98px){.sidebar-mini-md.sidebar-collapse .main-sidebar{box-shadow:none!important}.sidebar-collapse .header-navbar.fixed-top{left:0}}@media (max-width:1201px){.sidebar-collapse .header-navbar.fixed-top{left:0}}.main-sidebar .brand-text,.main-sidebar .logo-xl,.main-sidebar .logo-xs,.sidebar .nav-link p,.sidebar .user-panel .info{transition:margin-left .3s linear,opacity .3s ease,visibility .3s ease}@media (prefers-reduced-motion:reduce){.main-sidebar .brand-text,.main-sidebar .logo-xl,.main-sidebar .logo-xs,.sidebar .nav-link p,.sidebar .user-panel .info{transition:none}}html.control-sidebar-animate{overflow-x:hidden}.control-sidebar{bottom:3.45rem;position:absolute;top:calc(3.164rem + 1px);z-index:1031}.control-sidebar,.control-sidebar:before{bottom:3.45rem;display:none;right:-260px;width:260px;transition:right .3s ease-in-out,display .3s ease-in-out}@media (prefers-reduced-motion:reduce){.control-sidebar,.control-sidebar:before{transition:none}}.control-sidebar:before{content:\"\";display:block;position:fixed;top:0;z-index:-1}body.text-sm .control-sidebar{bottom:3.074rem;top:calc(2.62475rem + 1px)}.main-header.text-sm~.control-sidebar{top:calc(2.62475rem + 1px)}.main-footer.text-sm~.control-sidebar{bottom:3.074rem}.control-sidebar-push-slide .content-wrapper,.control-sidebar-push-slide .main-footer{transition:margin-right .3s ease-in-out}@media (prefers-reduced-motion:reduce){.control-sidebar-push-slide .content-wrapper,.control-sidebar-push-slide .main-footer{transition:none}}.control-sidebar-open .control-sidebar{display:block}.control-sidebar-open .control-sidebar,.control-sidebar-open .control-sidebar:before{right:0}.control-sidebar-open.control-sidebar-push-slide .content-wrapper,.control-sidebar-open.control-sidebar-push-slide .main-footer,.control-sidebar-open.control-sidebar-push .content-wrapper,.control-sidebar-open.control-sidebar-push .main-footer{margin-right:260px}.control-sidebar-slide-open .control-sidebar{display:block}.control-sidebar-slide-open .control-sidebar,.control-sidebar-slide-open .control-sidebar:before{right:0;transition:right .3s ease-in-out,display .3s ease-in-out}@media (prefers-reduced-motion:reduce){.control-sidebar-slide-open .control-sidebar,.control-sidebar-slide-open .control-sidebar:before{transition:none}}.control-sidebar-slide-open.control-sidebar-push-slide .content-wrapper,.control-sidebar-slide-open.control-sidebar-push-slide .main-footer,.control-sidebar-slide-open.control-sidebar-push .content-wrapper,.control-sidebar-slide-open.control-sidebar-push .main-footer{margin-right:260px}.control-sidebar-dark,.control-sidebar-dark .nav-link,.control-sidebar-dark a{color:hsla(0,0%,100%,.95)}.control-sidebar-dark{background:#3e4958}.control-sidebar-dark a:hover,.control-sidebar-dark h1,.control-sidebar-dark h2,.control-sidebar-dark h3,.control-sidebar-dark h4,.control-sidebar-dark h5,.control-sidebar-dark h6,.control-sidebar-dark label{color:hsla(0,0%,100%,.95)}.control-sidebar-dark .nav-tabs{background-color:transparent;border-bottom:0;margin-bottom:5px}.control-sidebar-dark .nav-tabs .nav-item{margin:0}.control-sidebar-dark .nav-tabs .nav-link{border-radius:0;padding:10px 20px;position:relative;text-align:center}.control-sidebar-dark .nav-tabs .nav-link,.control-sidebar-dark .nav-tabs .nav-link.active,.control-sidebar-dark .nav-tabs .nav-link:active,.control-sidebar-dark .nav-tabs .nav-link:focus,.control-sidebar-dark .nav-tabs .nav-link:hover{border:0}.control-sidebar-dark .nav-tabs .nav-link.active,.control-sidebar-dark .nav-tabs .nav-link:active,.control-sidebar-dark .nav-tabs .nav-link:focus,.control-sidebar-dark .nav-tabs .nav-link:hover{border-bottom-color:transparent;border-left-color:transparent;border-top-color:transparent;color:hsla(0,0%,100%,.95)}.control-sidebar-dark .nav-tabs .nav-link.active{background-color:#3e4958}.control-sidebar-dark .tab-pane{padding:10px 15px}.control-sidebar-light{color:#6f6f6f;background:#fff;border-left:1px solid #dae1e7}.text-sm .dropdown-menu{font-size:1rem!important}.text-sm .dropdown-toggle:after{vertical-align:.2rem}.dropdown-item-title{font-size:1rem;margin:0}.dropdown-icon:after{margin-left:0}.dropdown-menu-lg{max-width:300px;min-width:280px;padding:0}.dropdown-menu-lg .dropdown-divider{margin:0}.dropdown-menu-lg .dropdown-item{padding:.5rem 1.5rem}.dropdown-menu-lg p{margin:0;white-space:normal}.dropdown-submenu{position:relative}.dropdown-submenu>a:after{border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid;float:right;margin-left:.5rem;margin-top:.5rem}.dropdown-submenu>.dropdown-menu{left:100%;margin-left:0;margin-top:0;top:0}.dropdown-hover.dropdown-submenu:hover>.dropdown-menu,.dropdown-hover .dropdown-submenu:hover>.dropdown-menu,.dropdown-hover.nav-item.dropdown:hover>.dropdown-menu,.dropdown-hover:hover>.dropdown-menu{display:block}.dropdown-menu-xl{max-width:420px;min-width:360px;padding:0}.dropdown-menu-xl .dropdown-divider{margin:0}.dropdown-menu-xl .dropdown-item{padding:.5rem 1.5rem}.dropdown-menu-xl p{margin:0;white-space:normal}.dropdown-footer,.dropdown-header{display:block;font-size:1rem;padding:.5rem 1.5rem;text-align:center}.open:not(.dropup)>.animated-dropdown-menu{-webkit-animation:flipInX .7s both;animation:flipInX .7s both;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}.navbar-custom-menu>.navbar-nav>li{position:relative}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:0;left:auto}@media (max-width:767.98px){.navbar-custom-menu>.navbar-nav{float:right}.navbar-custom-menu>.navbar-nav>li{position:static}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:5%;left:auto;border:1px solid #ddd;background:#fff}}.navbar-nav>.user-menu>.nav-link:after{content:none}.navbar-nav>.user-menu>.dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;padding:0;width:280px}.navbar-nav>.user-menu>.dropdown-menu,.navbar-nav>.user-menu>.dropdown-menu>.user-body{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header{height:175px;padding:10px;text-align:center}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>img{z-index:5;height:90px;width:90px;border:3px solid hsla(0,0%,100%,.2)}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p{z-index:5;font-size:17px;margin-top:10px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p>small{display:block;font-size:12px}.navbar-nav>.user-menu>.dropdown-menu>.user-body{border-bottom:1px solid #4e5154;border-top:1px solid #dae1e7;padding:15px}.navbar-nav>.user-menu>.dropdown-menu>.user-body:after{display:block;clear:both;content:\"\"}@media (min-width:576px){.navbar-nav>.user-menu>.dropdown-menu>.user-body a{background:#fff!important;color:#4e5154!important}}.navbar-nav>.user-menu>.dropdown-menu>.user-footer{background-color:#babfc7;padding:10px}.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{display:block;clear:both;content:\"\"}.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default{color:#b8c2cc}@media (min-width:576px){.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default:hover{background-color:#babfc7}}.navbar-nav>.user-menu .user-image{border-radius:50%;float:left;height:2.5666666667rem;margin-right:10px;margin-top:-2px;width:2.5666666667rem}@media (min-width:576px){.navbar-nav>.user-menu .user-image{float:none;line-height:10px;margin-right:.4rem;margin-top:-8px}}.nav-pills .nav-link{color:#b8c2cc}.nav-pills .nav-link:not(.active):hover{color:#586cb1}.nav-pills .nav-item.dropdown.show .nav-link:hover{color:#fff}.nav-tabs.flex-column{border-bottom:0;border-right:1px solid #dae1e7}.nav-tabs.flex-column .nav-link{border-bottom-left-radius:.5rem;border-top-right-radius:0;margin-right:-1px}.nav-tabs.flex-column .nav-link:focus,.nav-tabs.flex-column .nav-link:hover{border-color:#ededed transparent #ededed #ededed}.nav-tabs.flex-column .nav-item.show .nav-link,.nav-tabs.flex-column .nav-link.active{border-color:#dae1e7 transparent #dae1e7 #dae1e7}.nav-tabs.flex-column.nav-tabs-right{border-left:1px solid #dae1e7;border-right:0}.nav-tabs.flex-column.nav-tabs-right .nav-link{border-bottom-left-radius:0;border-bottom-right-radius:.5rem;border-top-left-radius:0;border-top-right-radius:.5rem;margin-left:-1px}.nav-tabs.flex-column.nav-tabs-right .nav-link:focus,.nav-tabs.flex-column.nav-tabs-right .nav-link:hover{border-color:#ededed #ededed #ededed transparent}.nav-tabs.flex-column.nav-tabs-right .nav-item.show .nav-link,.nav-tabs.flex-column.nav-tabs-right .nav-link.active{border-color:#dae1e7 #dae1e7 #dae1e7 transparent}.navbar-no-expand{flex-direction:row}.navbar-no-expand .nav-link{padding-left:.5rem;padding-right:.5rem}.navbar-no-expand .dropdown-menu{position:absolute}.navbar-light{background-color:#f7f7f9}.navbar-dark{background-color:#22292f}.navbar-primary{background-color:#586cb1}.navbar-secondary{background-color:#b8c2cc}.navbar-success{background-color:#21b978}.navbar-info{background-color:#4277cf}.navbar-warning{background-color:#dda451}.navbar-danger{background-color:#ea5455}.navbar-lightblue{background-color:#3c8dbc}.navbar-navy{background-color:#001f3f}.navbar-olive{background-color:#3d9970}.navbar-lime{background-color:#01ff70}.navbar-fuchsia{background-color:#f012be}.navbar-maroon{background-color:#d81b60}.navbar-blue{background-color:#3085d6}.navbar-indigo{background-color:#5c6bc6}.navbar-purple{background-color:#6f42c1}.navbar-pink{background-color:#ff8acc}.navbar-red{background-color:#ea5455}.navbar-orange{background-color:#dda451}.navbar-yellow{background-color:#edc30e}.navbar-green{background-color:#21b978}.navbar-teal{background-color:#20c997}.navbar-cyan{background-color:#7367f0}.navbar-white{background-color:#fff}.navbar-gray{background-color:#b8c2cc}.navbar-gray-dark{background-color:#1e1e1e}.form-group.has-icon{position:relative}.form-group.has-icon .form-control{padding-right:35px}.form-group.has-icon .form-icon{background-color:transparent;border:0;cursor:pointer;font-size:1rem;padding:.75rem 2rem;position:absolute;right:3px;top:0}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0}.form-control-feedback.fa,.form-control-feedback.fab,.form-control-feedback.far,.form-control-feedback.fas,.form-control-feedback.glyphicon,.form-control-feedback.ion{line-height:34px}.form-group-lg .form-control+.form-control-feedback.fa,.form-group-lg .form-control+.form-control-feedback.fab,.form-group-lg .form-control+.form-control-feedback.far,.form-group-lg .form-control+.form-control-feedback.fas,.form-group-lg .form-control+.form-control-feedback.glyphicon,.form-group-lg .form-control+.form-control-feedback.ion,.input-group-lg+.form-control-feedback.fa,.input-group-lg+.form-control-feedback.fab,.input-group-lg+.form-control-feedback.far,.input-group-lg+.form-control-feedback.fas,.input-group-lg+.form-control-feedback.glyphicon,.input-group-lg+.form-control-feedback.ion,.input-lg+.form-control-feedback.fa,.input-lg+.form-control-feedback.fab,.input-lg+.form-control-feedback.far,.input-lg+.form-control-feedback.fas,.input-lg+.form-control-feedback.glyphicon,.input-lg+.form-control-feedback.ion{line-height:calc(1.25em + 2rem + 2px)}.form-group-sm .form-control+.form-control-feedback.fa,.form-group-sm .form-control+.form-control-feedback.fab,.form-group-sm .form-control+.form-control-feedback.far,.form-group-sm .form-control+.form-control-feedback.fas,.form-group-sm .form-control+.form-control-feedback.glyphicon,.form-group-sm .form-control+.form-control-feedback.ion,.input-group-sm+.form-control-feedback.fa,.input-group-sm+.form-control-feedback.fab,.input-group-sm+.form-control-feedback.far,.input-group-sm+.form-control-feedback.fas,.input-group-sm+.form-control-feedback.glyphicon,.input-group-sm+.form-control-feedback.ion,.input-sm+.form-control-feedback.fa,.input-sm+.form-control-feedback.fab,.input-sm+.form-control-feedback.far,.input-sm+.form-control-feedback.fas,.input-sm+.form-control-feedback.glyphicon,.input-sm+.form-control-feedback.ion{line-height:2rem}.warning-feedback{font-size:smaller;color:#dda451;display:none;margin-top:.25rem;width:100%}.warning-tooltip{border-radius:.5rem;font-size:1rem;background-color:rgba(221,164,81,.9);color:#2a2e30;display:none;line-height:1.45;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.form-control.is-warning{border-color:#dda451}.form-control.is-warning:focus{border-color:#dda451;box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.form-control.is-warning~.warning-feedback,.form-control.is-warning~.warning-tooltip{display:block}textarea.form-control.is-warning{padding-right:calc(1.25em + 1.4rem);background-position:top calc(.3125em + .35rem) right calc(.3125em + .35rem)}.custom-select.is-warning{border-color:#dda451}.custom-select.is-warning:focus{border-color:#dda451;box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.custom-select.is-warning~.warning-feedback,.custom-select.is-warning~.warning-tooltip,.form-control-file.is-warning~.warning-feedback,.form-control-file.is-warning~.warning-tooltip{display:block}.form-check-input.is-warning~.form-check-label{color:#dda451}.form-check-input.is-warning~.warning-feedback,.form-check-input.is-warning~.warning-tooltip{display:block}.custom-control-input.is-warning~.custom-control-label{color:#dda451}.custom-control-input.is-warning~.custom-control-label:before{border-color:#dda451}.custom-control-input.is-warning~.warning-feedback,.custom-control-input.is-warning~.warning-tooltip{display:block}.custom-control-input.is-warning:checked~.custom-control-label:before{background-color:#e5ba7c;border-color:#e5ba7c}.custom-control-input.is-warning:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.custom-control-input.is-warning:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-warning~.custom-file-label{border-color:#dda451}.custom-file-input.is-warning~.warning-feedback,.custom-file-input.is-warning~.warning-tooltip{display:block}.custom-file-input.is-warning:focus~.custom-file-label{border-color:#dda451;box-shadow:0 0 0 .2rem rgba(221,164,81,.25)}.custom-switch.custom-switch-off-primary .custom-control-input~.custom-control-label:before{background:#586cb1;border-color:#34416f}.custom-switch.custom-switch-off-primary .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(88,108,177,.25)}.custom-switch.custom-switch-off-primary .custom-control-input~.custom-control-label:after{background:#2c375e}.custom-switch.custom-switch-on-primary .custom-control-input:checked~.custom-control-label:before{background:#586cb1;border-color:#34416f}.custom-switch.custom-switch-on-primary .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(88,108,177,.25)}.custom-switch.custom-switch-on-primary .custom-control-input:checked~.custom-control-label:after{background:#c0c8e2}.custom-switch.custom-switch-off-secondary .custom-control-input~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-off-secondary .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-off-secondary .custom-control-input~.custom-control-label:after{background:#6e8297}.custom-switch.custom-switch-on-secondary .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-on-secondary .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-on-secondary .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-success .custom-control-input~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-off-success .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-off-success .custom-control-input~.custom-control-label:after{background:#0e4d32}.custom-switch.custom-switch-on-success .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-on-success .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-on-success .custom-control-input:checked~.custom-control-label:after{background:#89eac1}.custom-switch.custom-switch-off-info .custom-control-input~.custom-control-label:before{background:#4277cf;border-color:#234988}.custom-switch.custom-switch-off-info .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-switch.custom-switch-off-info .custom-control-input~.custom-control-label:after{background:#1d3e74}.custom-switch.custom-switch-on-info .custom-control-input:checked~.custom-control-label:before{background:#4277cf;border-color:#234988}.custom-switch.custom-switch-on-info .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-switch.custom-switch-on-info .custom-control-input:checked~.custom-control-label:after{background:#bccfee}.custom-switch.custom-switch-off-warning .custom-control-input~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-off-warning .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-off-warning .custom-control-input~.custom-control-label:after{background:#92621d}.custom-switch.custom-switch-on-warning .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-on-warning .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-on-warning .custom-control-input:checked~.custom-control-label:after{background:#f6e7d1}.custom-switch.custom-switch-off-danger .custom-control-input~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-off-danger .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-off-danger .custom-control-input~.custom-control-label:after{background:#aa1516}.custom-switch.custom-switch-on-danger .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-on-danger .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-on-danger .custom-control-input:checked~.custom-control-label:after{background:#fbdcdc}.custom-switch.custom-switch-off-light .custom-control-input~.custom-control-label:before{background:#f7f7f9;border-color:#bdbdcd}.custom-switch.custom-switch-off-light .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-switch.custom-switch-off-light .custom-control-input~.custom-control-label:after{background:#aeaec2}.custom-switch.custom-switch-on-light .custom-control-input:checked~.custom-control-label:before{background:#f7f7f9;border-color:#bdbdcd}.custom-switch.custom-switch-on-light .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-switch.custom-switch-on-light .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-dark .custom-control-input~.custom-control-label:before{background:#22292f;border-color:#000}.custom-switch.custom-switch-off-dark .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-switch.custom-switch-off-dark .custom-control-input~.custom-control-label:after{background:#000}.custom-switch.custom-switch-on-dark .custom-control-input:checked~.custom-control-label:before{background:#22292f;border-color:#000}.custom-switch.custom-switch-on-dark .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-switch.custom-switch-on-dark .custom-control-input:checked~.custom-control-label:after{background:#627688}.custom-switch.custom-switch-off-lightblue .custom-control-input~.custom-control-label:before{background:#3c8dbc;border-color:#23536f}.custom-switch.custom-switch-off-lightblue .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-switch.custom-switch-off-lightblue .custom-control-input~.custom-control-label:after{background:#1d455b}.custom-switch.custom-switch-on-lightblue .custom-control-input:checked~.custom-control-label:before{background:#3c8dbc;border-color:#23536f}.custom-switch.custom-switch-on-lightblue .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-switch.custom-switch-on-lightblue .custom-control-input:checked~.custom-control-label:after{background:#acd0e5}.custom-switch.custom-switch-off-navy .custom-control-input~.custom-control-label:before{background:#001f3f;border-color:#000}.custom-switch.custom-switch-off-navy .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-switch.custom-switch-off-navy .custom-control-input~.custom-control-label:after{background:#000}.custom-switch.custom-switch-on-navy .custom-control-input:checked~.custom-control-label:before{background:#001f3f;border-color:#000}.custom-switch.custom-switch-on-navy .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-switch.custom-switch-on-navy .custom-control-input:checked~.custom-control-label:after{background:#006ad8}.custom-switch.custom-switch-off-olive .custom-control-input~.custom-control-label:before{background:#3d9970;border-color:#20503b}.custom-switch.custom-switch-off-olive .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-switch.custom-switch-off-olive .custom-control-input~.custom-control-label:after{background:#193e2d}.custom-switch.custom-switch-on-olive .custom-control-input:checked~.custom-control-label:before{background:#3d9970;border-color:#20503b}.custom-switch.custom-switch-on-olive .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-switch.custom-switch-on-olive .custom-control-input:checked~.custom-control-label:after{background:#99d6bb}.custom-switch.custom-switch-off-lime .custom-control-input~.custom-control-label:before{background:#01ff70;border-color:#009a43}.custom-switch.custom-switch-off-lime .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-switch.custom-switch-off-lime .custom-control-input~.custom-control-label:after{background:#008138}.custom-switch.custom-switch-on-lime .custom-control-input:checked~.custom-control-label:before{background:#01ff70;border-color:#009a43}.custom-switch.custom-switch-on-lime .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-switch.custom-switch-on-lime .custom-control-input:checked~.custom-control-label:after{background:#9affc6}.custom-switch.custom-switch-off-fuchsia .custom-control-input~.custom-control-label:before{background:#f012be;border-color:#930974}.custom-switch.custom-switch-off-fuchsia .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-switch.custom-switch-off-fuchsia .custom-control-input~.custom-control-label:after{background:#7b0861}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked~.custom-control-label:before{background:#f012be;border-color:#930974}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-switch.custom-switch-on-fuchsia .custom-control-input:checked~.custom-control-label:after{background:#f9a2e5}.custom-switch.custom-switch-off-maroon .custom-control-input~.custom-control-label:before{background:#d81b60;border-color:#7d1038}.custom-switch.custom-switch-off-maroon .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-switch.custom-switch-off-maroon .custom-control-input~.custom-control-label:after{background:#670d2e}.custom-switch.custom-switch-on-maroon .custom-control-input:checked~.custom-control-label:before{background:#d81b60;border-color:#7d1038}.custom-switch.custom-switch-on-maroon .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-switch.custom-switch-on-maroon .custom-control-input:checked~.custom-control-label:after{background:#f29aba}.custom-switch.custom-switch-off-blue .custom-control-input~.custom-control-label:before{background:#3085d6;border-color:#1a5186}.custom-switch.custom-switch-off-blue .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-switch.custom-switch-off-blue .custom-control-input~.custom-control-label:after{background:#164470}.custom-switch.custom-switch-on-blue .custom-control-input:checked~.custom-control-label:before{background:#3085d6;border-color:#1a5186}.custom-switch.custom-switch-on-blue .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-switch.custom-switch-on-blue .custom-control-input:checked~.custom-control-label:after{background:#b0d0ef}.custom-switch.custom-switch-off-indigo .custom-control-input~.custom-control-label:before{background:#5c6bc6;border-color:#313e8b}.custom-switch.custom-switch-off-indigo .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-switch.custom-switch-off-indigo .custom-control-input~.custom-control-label:after{background:#2a3578}.custom-switch.custom-switch-on-indigo .custom-control-input:checked~.custom-control-label:before{background:#5c6bc6;border-color:#313e8b}.custom-switch.custom-switch-on-indigo .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-switch.custom-switch-on-indigo .custom-control-input:checked~.custom-control-label:after{background:#cdd2ee}.custom-switch.custom-switch-off-purple .custom-control-input~.custom-control-label:before{background:#6f42c1;border-color:#432776}.custom-switch.custom-switch-off-purple .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-switch.custom-switch-off-purple .custom-control-input~.custom-control-label:after{background:#382063}.custom-switch.custom-switch-on-purple .custom-control-input:checked~.custom-control-label:before{background:#6f42c1;border-color:#432776}.custom-switch.custom-switch-on-purple .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-switch.custom-switch-on-purple .custom-control-input:checked~.custom-control-label:after{background:#c7b5e7}.custom-switch.custom-switch-off-pink .custom-control-input~.custom-control-label:before{background:#ff8acc;border-color:#ff24a0}.custom-switch.custom-switch-off-pink .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-switch.custom-switch-off-pink .custom-control-input~.custom-control-label:after{background:#ff0b94}.custom-switch.custom-switch-on-pink .custom-control-input:checked~.custom-control-label:before{background:#ff8acc;border-color:#ff24a0}.custom-switch.custom-switch-on-pink .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-switch.custom-switch-on-pink .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-red .custom-control-input~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-off-red .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-off-red .custom-control-input~.custom-control-label:after{background:#aa1516}.custom-switch.custom-switch-on-red .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.custom-switch.custom-switch-on-red .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-switch.custom-switch-on-red .custom-control-input:checked~.custom-control-label:after{background:#fbdcdc}.custom-switch.custom-switch-off-orange .custom-control-input~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-off-orange .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-off-orange .custom-control-input~.custom-control-label:after{background:#92621d}.custom-switch.custom-switch-on-orange .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.custom-switch.custom-switch-on-orange .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-switch.custom-switch-on-orange .custom-control-input:checked~.custom-control-label:after{background:#f6e7d1}.custom-switch.custom-switch-off-yellow .custom-control-input~.custom-control-label:before{background:#edc30e;border-color:#8d7408}.custom-switch.custom-switch-off-yellow .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-switch.custom-switch-off-yellow .custom-control-input~.custom-control-label:after{background:#756007}.custom-switch.custom-switch-on-yellow .custom-control-input:checked~.custom-control-label:before{background:#edc30e;border-color:#8d7408}.custom-switch.custom-switch-on-yellow .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-switch.custom-switch-on-yellow .custom-control-input:checked~.custom-control-label:after{background:#f9e79b}.custom-switch.custom-switch-off-green .custom-control-input~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-off-green .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-off-green .custom-control-input~.custom-control-label:after{background:#0e4d32}.custom-switch.custom-switch-on-green .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.custom-switch.custom-switch-on-green .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-switch.custom-switch-on-green .custom-control-input:checked~.custom-control-label:after{background:#89eac1}.custom-switch.custom-switch-off-teal .custom-control-input~.custom-control-label:before{background:#20c997;border-color:#127155}.custom-switch.custom-switch-off-teal .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-switch.custom-switch-off-teal .custom-control-input~.custom-control-label:after{background:#0e5b44}.custom-switch.custom-switch-on-teal .custom-control-input:checked~.custom-control-label:before{background:#20c997;border-color:#127155}.custom-switch.custom-switch-on-teal .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-switch.custom-switch-on-teal .custom-control-input:checked~.custom-control-label:after{background:#94eed3}.custom-switch.custom-switch-off-cyan .custom-control-input~.custom-control-label:before{background:#7367f0;border-color:#2716db}.custom-switch.custom-switch-off-cyan .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-switch.custom-switch-off-cyan .custom-control-input~.custom-control-label:after{background:#2313c4}.custom-switch.custom-switch-on-cyan .custom-control-input:checked~.custom-control-label:before{background:#7367f0;border-color:#2716db}.custom-switch.custom-switch-on-cyan .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-switch.custom-switch-on-cyan .custom-control-input:checked~.custom-control-label:after{background:#f3f2fe}.custom-switch.custom-switch-off-white .custom-control-input~.custom-control-label:before{background:#fff;border-color:#ccc}.custom-switch.custom-switch-off-white .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-switch.custom-switch-off-white .custom-control-input~.custom-control-label:after{background:#bfbfbf}.custom-switch.custom-switch-on-white .custom-control-input:checked~.custom-control-label:before{background:#fff;border-color:#ccc}.custom-switch.custom-switch-on-white .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-switch.custom-switch-on-white .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-gray .custom-control-input~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-off-gray .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-off-gray .custom-control-input~.custom-control-label:after{background:#6e8297}.custom-switch.custom-switch-on-gray .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.custom-switch.custom-switch-on-gray .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-switch.custom-switch-on-gray .custom-control-input:checked~.custom-control-label:after{background:#fff}.custom-switch.custom-switch-off-gray-dark .custom-control-input~.custom-control-label:before{background:#1e1e1e;border-color:#000}.custom-switch.custom-switch-off-gray-dark .custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-switch.custom-switch-off-gray-dark .custom-control-input~.custom-control-label:after{background:#000}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked~.custom-control-label:before{background:#1e1e1e;border-color:#000}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked:focus~.custom-control-label:before{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-switch.custom-switch-on-gray-dark .custom-control-input:checked~.custom-control-label:after{background:#6b6b6b}.custom-range.custom-range-primary:focus{outline:none}.custom-range.custom-range-primary:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(88,108,177,.25)}.custom-range.custom-range-primary:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(88,108,177,.25)}.custom-range.custom-range-primary:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(88,108,177,.25)}.custom-range.custom-range-primary::-webkit-slider-thumb{background-color:#586cb1}.custom-range.custom-range-primary::-webkit-slider-thumb:active{background-color:#d2d7ea}.custom-range.custom-range-primary::-moz-range-thumb{background-color:#586cb1}.custom-range.custom-range-primary::-moz-range-thumb:active{background-color:#d2d7ea}.custom-range.custom-range-primary::-ms-thumb{background-color:#586cb1}.custom-range.custom-range-primary::-ms-thumb:active{background-color:#d2d7ea}.custom-range.custom-range-secondary:focus{outline:none}.custom-range.custom-range-secondary:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-secondary:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-secondary:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-secondary::-webkit-slider-thumb{background-color:#b8c2cc}.custom-range.custom-range-secondary::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-secondary::-moz-range-thumb{background-color:#b8c2cc}.custom-range.custom-range-secondary::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-secondary::-ms-thumb{background-color:#b8c2cc}.custom-range.custom-range-secondary::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-success:focus{outline:none}.custom-range.custom-range-success:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-success:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-success:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-success::-webkit-slider-thumb{background-color:#21b978}.custom-range.custom-range-success::-webkit-slider-thumb:active{background-color:#9feecc}.custom-range.custom-range-success::-moz-range-thumb{background-color:#21b978}.custom-range.custom-range-success::-moz-range-thumb:active{background-color:#9feecc}.custom-range.custom-range-success::-ms-thumb{background-color:#21b978}.custom-range.custom-range-success::-ms-thumb:active{background-color:#9feecc}.custom-range.custom-range-info:focus{outline:none}.custom-range.custom-range-info:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-range.custom-range-info:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-range.custom-range-info:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(66,119,207,.25)}.custom-range.custom-range-info::-webkit-slider-thumb{background-color:#4277cf}.custom-range.custom-range-info::-webkit-slider-thumb:active{background-color:#d0ddf3}.custom-range.custom-range-info::-moz-range-thumb{background-color:#4277cf}.custom-range.custom-range-info::-moz-range-thumb:active{background-color:#d0ddf3}.custom-range.custom-range-info::-ms-thumb{background-color:#4277cf}.custom-range.custom-range-info::-ms-thumb:active{background-color:#d0ddf3}.custom-range.custom-range-warning:focus{outline:none}.custom-range.custom-range-warning:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-warning:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-warning:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-warning::-webkit-slider-thumb{background-color:#dda451}.custom-range.custom-range-warning::-webkit-slider-thumb:active{background-color:#faf2e6}.custom-range.custom-range-warning::-moz-range-thumb{background-color:#dda451}.custom-range.custom-range-warning::-moz-range-thumb:active{background-color:#faf2e6}.custom-range.custom-range-warning::-ms-thumb{background-color:#dda451}.custom-range.custom-range-warning::-ms-thumb:active{background-color:#faf2e6}.custom-range.custom-range-danger:focus{outline:none}.custom-range.custom-range-danger:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-danger:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-danger:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-danger::-webkit-slider-thumb{background-color:#ea5455}.custom-range.custom-range-danger::-webkit-slider-thumb:active{background-color:#fef3f3}.custom-range.custom-range-danger::-moz-range-thumb{background-color:#ea5455}.custom-range.custom-range-danger::-moz-range-thumb:active{background-color:#fef3f3}.custom-range.custom-range-danger::-ms-thumb{background-color:#ea5455}.custom-range.custom-range-danger::-ms-thumb:active{background-color:#fef3f3}.custom-range.custom-range-light:focus{outline:none}.custom-range.custom-range-light:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-range.custom-range-light:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-range.custom-range-light:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(247,247,249,.25)}.custom-range.custom-range-light::-webkit-slider-thumb{background-color:#f7f7f9}.custom-range.custom-range-light::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-light::-moz-range-thumb{background-color:#f7f7f9}.custom-range.custom-range-light::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-light::-ms-thumb{background-color:#f7f7f9}.custom-range.custom-range-light::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-dark:focus{outline:none}.custom-range.custom-range-dark:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-range.custom-range-dark:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-range.custom-range-dark:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(34,41,47,.25)}.custom-range.custom-range-dark::-webkit-slider-thumb{background-color:#22292f}.custom-range.custom-range-dark::-webkit-slider-thumb:active{background-color:#6e8396}.custom-range.custom-range-dark::-moz-range-thumb{background-color:#22292f}.custom-range.custom-range-dark::-moz-range-thumb:active{background-color:#6e8396}.custom-range.custom-range-dark::-ms-thumb{background-color:#22292f}.custom-range.custom-range-dark::-ms-thumb:active{background-color:#6e8396}.custom-range.custom-range-lightblue:focus{outline:none}.custom-range.custom-range-lightblue:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-range.custom-range-lightblue:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-range.custom-range-lightblue:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(60,141,188,.25)}.custom-range.custom-range-lightblue::-webkit-slider-thumb{background-color:#3c8dbc}.custom-range.custom-range-lightblue::-webkit-slider-thumb:active{background-color:#c0dbeb}.custom-range.custom-range-lightblue::-moz-range-thumb{background-color:#3c8dbc}.custom-range.custom-range-lightblue::-moz-range-thumb:active{background-color:#c0dbeb}.custom-range.custom-range-lightblue::-ms-thumb{background-color:#3c8dbc}.custom-range.custom-range-lightblue::-ms-thumb:active{background-color:#c0dbeb}.custom-range.custom-range-navy:focus{outline:none}.custom-range.custom-range-navy:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(0,31,63,.25)}.custom-range.custom-range-navy::-webkit-slider-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-webkit-slider-thumb:active{background-color:#0077f2}.custom-range.custom-range-navy::-moz-range-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-moz-range-thumb:active{background-color:#0077f2}.custom-range.custom-range-navy::-ms-thumb{background-color:#001f3f}.custom-range.custom-range-navy::-ms-thumb:active{background-color:#0077f2}.custom-range.custom-range-olive:focus{outline:none}.custom-range.custom-range-olive:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(61,153,112,.25)}.custom-range.custom-range-olive::-webkit-slider-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-webkit-slider-thumb:active{background-color:#abdec7}.custom-range.custom-range-olive::-moz-range-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-moz-range-thumb:active{background-color:#abdec7}.custom-range.custom-range-olive::-ms-thumb{background-color:#3d9970}.custom-range.custom-range-olive::-ms-thumb:active{background-color:#abdec7}.custom-range.custom-range-lime:focus{outline:none}.custom-range.custom-range-lime:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(1,255,112,.25)}.custom-range.custom-range-lime::-webkit-slider-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-webkit-slider-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-lime::-moz-range-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-moz-range-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-lime::-ms-thumb{background-color:#01ff70}.custom-range.custom-range-lime::-ms-thumb:active{background-color:#b4ffd4}.custom-range.custom-range-fuchsia:focus{outline:none}.custom-range.custom-range-fuchsia:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(240,18,190,.25)}.custom-range.custom-range-fuchsia::-webkit-slider-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-webkit-slider-thumb:active{background-color:#fbbaec}.custom-range.custom-range-fuchsia::-moz-range-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-moz-range-thumb:active{background-color:#fbbaec}.custom-range.custom-range-fuchsia::-ms-thumb{background-color:#f012be}.custom-range.custom-range-fuchsia::-ms-thumb:active{background-color:#fbbaec}.custom-range.custom-range-maroon:focus{outline:none}.custom-range.custom-range-maroon:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(216,27,96,.25)}.custom-range.custom-range-maroon::-webkit-slider-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-webkit-slider-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-maroon::-moz-range-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-moz-range-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-maroon::-ms-thumb{background-color:#d81b60}.custom-range.custom-range-maroon::-ms-thumb:active{background-color:#f5b0c9}.custom-range.custom-range-blue:focus{outline:none}.custom-range.custom-range-blue:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-range.custom-range-blue:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-range.custom-range-blue:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(48,133,214,.25)}.custom-range.custom-range-blue::-webkit-slider-thumb{background-color:#3085d6}.custom-range.custom-range-blue::-webkit-slider-thumb:active{background-color:#c5ddf4}.custom-range.custom-range-blue::-moz-range-thumb{background-color:#3085d6}.custom-range.custom-range-blue::-moz-range-thumb:active{background-color:#c5ddf4}.custom-range.custom-range-blue::-ms-thumb{background-color:#3085d6}.custom-range.custom-range-blue::-ms-thumb:active{background-color:#c5ddf4}.custom-range.custom-range-indigo:focus{outline:none}.custom-range.custom-range-indigo:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-range.custom-range-indigo:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-range.custom-range-indigo:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(92,107,198,.25)}.custom-range.custom-range-indigo::-webkit-slider-thumb{background-color:#5c6bc6}.custom-range.custom-range-indigo::-webkit-slider-thumb:active{background-color:#e0e3f4}.custom-range.custom-range-indigo::-moz-range-thumb{background-color:#5c6bc6}.custom-range.custom-range-indigo::-moz-range-thumb:active{background-color:#e0e3f4}.custom-range.custom-range-indigo::-ms-thumb{background-color:#5c6bc6}.custom-range.custom-range-indigo::-ms-thumb:active{background-color:#e0e3f4}.custom-range.custom-range-purple:focus{outline:none}.custom-range.custom-range-purple:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(111,66,193,.25)}.custom-range.custom-range-purple::-webkit-slider-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-webkit-slider-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-purple::-moz-range-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-moz-range-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-purple::-ms-thumb{background-color:#6f42c1}.custom-range.custom-range-purple::-ms-thumb:active{background-color:#d5c8ed}.custom-range.custom-range-pink:focus{outline:none}.custom-range.custom-range-pink:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-range.custom-range-pink:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-range.custom-range-pink:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(255,138,204,.25)}.custom-range.custom-range-pink::-webkit-slider-thumb{background-color:#ff8acc}.custom-range.custom-range-pink::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-pink::-moz-range-thumb{background-color:#ff8acc}.custom-range.custom-range-pink::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-pink::-ms-thumb{background-color:#ff8acc}.custom-range.custom-range-pink::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-red:focus{outline:none}.custom-range.custom-range-red:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-red:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-red:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(234,84,85,.25)}.custom-range.custom-range-red::-webkit-slider-thumb{background-color:#ea5455}.custom-range.custom-range-red::-webkit-slider-thumb:active{background-color:#fef3f3}.custom-range.custom-range-red::-moz-range-thumb{background-color:#ea5455}.custom-range.custom-range-red::-moz-range-thumb:active{background-color:#fef3f3}.custom-range.custom-range-red::-ms-thumb{background-color:#ea5455}.custom-range.custom-range-red::-ms-thumb:active{background-color:#fef3f3}.custom-range.custom-range-orange:focus{outline:none}.custom-range.custom-range-orange:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-orange:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-orange:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(221,164,81,.25)}.custom-range.custom-range-orange::-webkit-slider-thumb{background-color:#dda451}.custom-range.custom-range-orange::-webkit-slider-thumb:active{background-color:#faf2e6}.custom-range.custom-range-orange::-moz-range-thumb{background-color:#dda451}.custom-range.custom-range-orange::-moz-range-thumb:active{background-color:#faf2e6}.custom-range.custom-range-orange::-ms-thumb{background-color:#dda451}.custom-range.custom-range-orange::-ms-thumb:active{background-color:#faf2e6}.custom-range.custom-range-yellow:focus{outline:none}.custom-range.custom-range-yellow:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-range.custom-range-yellow:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-range.custom-range-yellow:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(237,195,14,.25)}.custom-range.custom-range-yellow::-webkit-slider-thumb{background-color:#edc30e}.custom-range.custom-range-yellow::-webkit-slider-thumb:active{background-color:#fbedb3}.custom-range.custom-range-yellow::-moz-range-thumb{background-color:#edc30e}.custom-range.custom-range-yellow::-moz-range-thumb:active{background-color:#fbedb3}.custom-range.custom-range-yellow::-ms-thumb{background-color:#edc30e}.custom-range.custom-range-yellow::-ms-thumb:active{background-color:#fbedb3}.custom-range.custom-range-green:focus{outline:none}.custom-range.custom-range-green:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-green:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-green:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(33,185,120,.25)}.custom-range.custom-range-green::-webkit-slider-thumb{background-color:#21b978}.custom-range.custom-range-green::-webkit-slider-thumb:active{background-color:#9feecc}.custom-range.custom-range-green::-moz-range-thumb{background-color:#21b978}.custom-range.custom-range-green::-moz-range-thumb:active{background-color:#9feecc}.custom-range.custom-range-green::-ms-thumb{background-color:#21b978}.custom-range.custom-range-green::-ms-thumb:active{background-color:#9feecc}.custom-range.custom-range-teal:focus{outline:none}.custom-range.custom-range-teal:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(32,201,151,.25)}.custom-range.custom-range-teal::-webkit-slider-thumb{background-color:#20c997}.custom-range.custom-range-teal::-webkit-slider-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-teal::-moz-range-thumb{background-color:#20c997}.custom-range.custom-range-teal::-moz-range-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-teal::-ms-thumb{background-color:#20c997}.custom-range.custom-range-teal::-ms-thumb:active{background-color:#aaf1dc}.custom-range.custom-range-cyan:focus{outline:none}.custom-range.custom-range-cyan:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-range.custom-range-cyan:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-range.custom-range-cyan:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(115,103,240,.25)}.custom-range.custom-range-cyan::-webkit-slider-thumb{background-color:#7367f0}.custom-range.custom-range-cyan::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-cyan::-moz-range-thumb{background-color:#7367f0}.custom-range.custom-range-cyan::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-cyan::-ms-thumb{background-color:#7367f0}.custom-range.custom-range-cyan::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-white:focus{outline:none}.custom-range.custom-range-white:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-range.custom-range-white:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-range.custom-range-white:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px hsla(0,0%,100%,.25)}.custom-range.custom-range-white::-webkit-slider-thumb,.custom-range.custom-range-white::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-white::-moz-range-thumb,.custom-range.custom-range-white::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-white::-ms-thumb,.custom-range.custom-range-white::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-gray:focus{outline:none}.custom-range.custom-range-gray:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-gray:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-gray:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(184,194,204,.25)}.custom-range.custom-range-gray::-webkit-slider-thumb{background-color:#b8c2cc}.custom-range.custom-range-gray::-webkit-slider-thumb:active{background-color:#fff}.custom-range.custom-range-gray::-moz-range-thumb{background-color:#b8c2cc}.custom-range.custom-range-gray::-moz-range-thumb:active{background-color:#fff}.custom-range.custom-range-gray::-ms-thumb{background-color:#b8c2cc}.custom-range.custom-range-gray::-ms-thumb:active{background-color:#fff}.custom-range.custom-range-gray-dark:focus{outline:none}.custom-range.custom-range-gray-dark:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-range.custom-range-gray-dark:focus::-moz-range-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-range.custom-range-gray-dark:focus::-ms-thumb{box-shadow:0 0 0 1px #eff1f7,0 0 0 2px rgba(30,30,30,.25)}.custom-range.custom-range-gray-dark::-webkit-slider-thumb{background-color:#1e1e1e}.custom-range.custom-range-gray-dark::-webkit-slider-thumb:active{background-color:#777}.custom-range.custom-range-gray-dark::-moz-range-thumb{background-color:#1e1e1e}.custom-range.custom-range-gray-dark::-moz-range-thumb:active{background-color:#777}.custom-range.custom-range-gray-dark::-ms-thumb{background-color:#1e1e1e}.custom-range.custom-range-gray-dark::-ms-thumb:active{background-color:#777}.progress{border-radius:1px}.progress.vertical{display:inline-block;height:200px;margin-right:10px;position:relative;width:30px}.progress.vertical>.progress-bar{bottom:0;position:absolute;width:100%}.progress.vertical.progress-sm,.progress.vertical.sm{width:20px}.progress.vertical.progress-xs,.progress.vertical.xs{width:10px}.progress.vertical.progress-xxs,.progress.vertical.xxs{width:3px}.progress-group{margin-bottom:1.5rem}.progress-sm{height:10px}.progress-xs{height:7px}.progress-xxs{height:3px}.table tr>td .progress{margin:0}.card-primary:not(.card-outline)>.card-header{background-color:#586cb1}.card-primary:not(.card-outline)>.card-header,.card-primary:not(.card-outline)>.card-header a{color:#fff}.card-primary:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-primary.card-outline{border-top:3px solid #586cb1}.card-primary.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-primary.card-outline-tabs>.card-header a.active{border-top:3px solid #586cb1}.bg-gradient-primary .btn-tool,.bg-primary .btn-tool,.card-primary:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-primary .btn-tool:hover,.bg-primary .btn-tool:hover,.card-primary:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-primary .bootstrap-datetimepicker-widget .table th,.card.bg-primary .bootstrap-datetimepicker-widget .table td,.card.bg-primary .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-primary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#475a99;color:#fff}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.today:before,.card.bg-primary .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-primary .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-primary .bootstrap-datetimepicker-widget table td.active,.card.bg-primary .bootstrap-datetimepicker-widget table td.active:hover{background:#7b8bc1;color:#fff}.card-secondary:not(.card-outline)>.card-header{background-color:#b8c2cc}.card-secondary:not(.card-outline)>.card-header,.card-secondary:not(.card-outline)>.card-header a,.card-secondary:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-secondary.card-outline{border-top:3px solid #b8c2cc}.card-secondary.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-secondary.card-outline-tabs>.card-header a.active{border-top:3px solid #b8c2cc}.bg-gradient-secondary .btn-tool,.bg-secondary .btn-tool,.card-secondary:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-secondary .btn-tool:hover,.bg-secondary .btn-tool:hover,.card-secondary:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget .table th,.card.bg-secondary .bootstrap-datetimepicker-widget .table td,.card.bg-secondary .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#a0aebb;color:#2a2e30}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.today:before,.card.bg-secondary .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-secondary .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-secondary .bootstrap-datetimepicker-widget table td.active,.card.bg-secondary .bootstrap-datetimepicker-widget table td.active:hover{background:#d6dce1;color:#2a2e30}.card-success:not(.card-outline)>.card-header{background-color:#21b978}.card-success:not(.card-outline)>.card-header,.card-success:not(.card-outline)>.card-header a{color:#fff}.card-success:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-success.card-outline{border-top:3px solid #21b978}.card-success.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-success.card-outline-tabs>.card-header a.active{border-top:3px solid #21b978}.bg-gradient-success .btn-tool,.bg-success .btn-tool,.card-success:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-success .btn-tool:hover,.bg-success .btn-tool:hover,.card-success:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-success .bootstrap-datetimepicker-widget .table th,.card.bg-success .bootstrap-datetimepicker-widget .table td,.card.bg-success .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-success .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#1b9662;color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.today:before,.card.bg-success .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-success .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-success .bootstrap-datetimepicker-widget table td.active,.card.bg-success .bootstrap-datetimepicker-widget table td.active:hover{background:#32db93;color:#fff}.card-info:not(.card-outline)>.card-header{background-color:#4277cf}.card-info:not(.card-outline)>.card-header,.card-info:not(.card-outline)>.card-header a{color:#fff}.card-info:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-info.card-outline{border-top:3px solid #4277cf}.card-info.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-info.card-outline-tabs>.card-header a.active{border-top:3px solid #4277cf}.bg-gradient-info .btn-tool,.bg-info .btn-tool,.card-info:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-info .btn-tool:hover,.bg-info .btn-tool:hover,.card-info:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-info .bootstrap-datetimepicker-widget .table th,.card.bg-info .bootstrap-datetimepicker-widget .table td,.card.bg-info .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-info .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#2f63b9;color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.today:before,.card.bg-info .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-info .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-info .bootstrap-datetimepicker-widget table td.active,.card.bg-info .bootstrap-datetimepicker-widget table td.active:hover{background:#6b94d9;color:#fff}.card-warning:not(.card-outline)>.card-header{background-color:#dda451}.card-warning:not(.card-outline)>.card-header,.card-warning:not(.card-outline)>.card-header a,.card-warning:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-warning.card-outline{border-top:3px solid #dda451}.card-warning.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-warning.card-outline-tabs>.card-header a.active{border-top:3px solid #dda451}.bg-gradient-warning .btn-tool,.bg-warning .btn-tool,.card-warning:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-warning .btn-tool:hover,.bg-warning .btn-tool:hover,.card-warning:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-warning .bootstrap-datetimepicker-widget .table th,.card.bg-warning .bootstrap-datetimepicker-widget .table td,.card.bg-warning .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-warning .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#d6922f;color:#2a2e30}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.today:before,.card.bg-warning .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-warning .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-warning .bootstrap-datetimepicker-widget table td.active,.card.bg-warning .bootstrap-datetimepicker-widget table td.active:hover{background:#e5ba7c;color:#2a2e30}.card-danger:not(.card-outline)>.card-header{background-color:#ea5455}.card-danger:not(.card-outline)>.card-header,.card-danger:not(.card-outline)>.card-header a{color:#fff}.card-danger:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-danger.card-outline{border-top:3px solid #ea5455}.card-danger.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-danger.card-outline-tabs>.card-header a.active{border-top:3px solid #ea5455}.bg-danger .btn-tool,.bg-gradient-danger .btn-tool,.card-danger:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-danger .btn-tool:hover,.bg-gradient-danger .btn-tool:hover,.card-danger:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget .table td,.card.bg-danger .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-danger .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-danger .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-danger .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e63031;color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-danger .bootstrap-datetimepicker-widget table td.active,.card.bg-danger .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-danger .bootstrap-datetimepicker-widget table td.active:hover{background:#f08182;color:#fff}.card-light:not(.card-outline)>.card-header{background-color:#f7f7f9}.card-light:not(.card-outline)>.card-header,.card-light:not(.card-outline)>.card-header a,.card-light:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-light.card-outline{border-top:3px solid #f7f7f9}.card-light.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-light.card-outline-tabs>.card-header a.active{border-top:3px solid #f7f7f9}.bg-gradient-light .btn-tool,.bg-light .btn-tool,.card-light:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-light .btn-tool:hover,.bg-light .btn-tool:hover,.card-light:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-light .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-light .bootstrap-datetimepicker-widget .table th,.card.bg-light .bootstrap-datetimepicker-widget .table td,.card.bg-light .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-light .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e0e0e8;color:#2a2e30}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.today:before,.card.bg-light .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-light .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-light .bootstrap-datetimepicker-widget table td.active,.card.bg-light .bootstrap-datetimepicker-widget table td.active:hover{background:#fff;color:#2a2e30}.card-dark:not(.card-outline)>.card-header{background-color:#22292f}.card-dark:not(.card-outline)>.card-header,.card-dark:not(.card-outline)>.card-header a{color:#fff}.card-dark:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-dark.card-outline{border-top:3px solid #22292f}.card-dark.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-dark.card-outline-tabs>.card-header a.active{border-top:3px solid #22292f}.bg-dark .btn-tool,.bg-gradient-dark .btn-tool,.card-dark:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-dark .btn-tool:hover,.bg-gradient-dark .btn-tool:hover,.card-dark:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget .table td,.card.bg-dark .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-dark .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#111417;color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-dark .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-dark .bootstrap-datetimepicker-widget table td.active:hover{background:#37434d;color:#fff}.card-lightblue:not(.card-outline)>.card-header{background-color:#3c8dbc}.card-lightblue:not(.card-outline)>.card-header,.card-lightblue:not(.card-outline)>.card-header a{color:#fff}.card-lightblue:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-lightblue.card-outline{border-top:3px solid #3c8dbc}.card-lightblue.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-lightblue.card-outline-tabs>.card-header a.active{border-top:3px solid #3c8dbc}.bg-gradient-lightblue .btn-tool,.bg-lightblue .btn-tool,.card-lightblue:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-lightblue .btn-tool:hover,.bg-lightblue .btn-tool:hover,.card-lightblue:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget .table th,.card.bg-lightblue .bootstrap-datetimepicker-widget .table td,.card.bg-lightblue .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#32769d;color:#fff}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.today:before,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-lightblue .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.active,.card.bg-lightblue .bootstrap-datetimepicker-widget table td.active:hover{background:#5fa4cc;color:#fff}.card-navy:not(.card-outline)>.card-header{background-color:#001f3f}.card-navy:not(.card-outline)>.card-header,.card-navy:not(.card-outline)>.card-header a{color:#fff}.card-navy:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-navy.card-outline{border-top:3px solid #001f3f}.card-navy.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-navy.card-outline-tabs>.card-header a.active{border-top:3px solid #001f3f}.bg-gradient-navy .btn-tool,.bg-navy .btn-tool,.card-navy:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-navy .btn-tool:hover,.bg-navy .btn-tool:hover,.card-navy:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-navy .bootstrap-datetimepicker-widget .table th,.card.bg-navy .bootstrap-datetimepicker-widget .table td,.card.bg-navy .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-navy .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#000b16;color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.today:before,.card.bg-navy .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-navy .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-navy .bootstrap-datetimepicker-widget table td.active,.card.bg-navy .bootstrap-datetimepicker-widget table td.active:hover{background:#003872;color:#fff}.card-olive:not(.card-outline)>.card-header{background-color:#3d9970}.card-olive:not(.card-outline)>.card-header,.card-olive:not(.card-outline)>.card-header a{color:#fff}.card-olive:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-olive.card-outline{border-top:3px solid #3d9970}.card-olive.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-olive.card-outline-tabs>.card-header a.active{border-top:3px solid #3d9970}.bg-gradient-olive .btn-tool,.bg-olive .btn-tool,.card-olive:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-olive .btn-tool:hover,.bg-olive .btn-tool:hover,.card-olive:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-olive .bootstrap-datetimepicker-widget .table th,.card.bg-olive .bootstrap-datetimepicker-widget .table td,.card.bg-olive .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-olive .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#317c5b;color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.today:before,.card.bg-olive .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-olive .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-olive .bootstrap-datetimepicker-widget table td.active,.card.bg-olive .bootstrap-datetimepicker-widget table td.active:hover{background:#50b98a;color:#fff}.card-lime:not(.card-outline)>.card-header{background-color:#01ff70}.card-lime:not(.card-outline)>.card-header,.card-lime:not(.card-outline)>.card-header a,.card-lime:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-lime.card-outline{border-top:3px solid #01ff70}.card-lime.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-lime.card-outline-tabs>.card-header a.active{border-top:3px solid #01ff70}.bg-gradient-lime .btn-tool,.bg-lime .btn-tool,.card-lime:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-lime .btn-tool:hover,.bg-lime .btn-tool:hover,.card-lime:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-lime .bootstrap-datetimepicker-widget .table th,.card.bg-lime .bootstrap-datetimepicker-widget .table td,.card.bg-lime .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-lime .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#00d75e;color:#2a2e30}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.today:before,.card.bg-lime .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-lime .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-lime .bootstrap-datetimepicker-widget table td.active,.card.bg-lime .bootstrap-datetimepicker-widget table td.active:hover{background:#34ff8d;color:#2a2e30}.card-fuchsia:not(.card-outline)>.card-header{background-color:#f012be}.card-fuchsia:not(.card-outline)>.card-header,.card-fuchsia:not(.card-outline)>.card-header a{color:#fff}.card-fuchsia:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-fuchsia.card-outline{border-top:3px solid #f012be}.card-fuchsia.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-fuchsia.card-outline-tabs>.card-header a.active{border-top:3px solid #f012be}.bg-fuchsia .btn-tool,.bg-gradient-fuchsia .btn-tool,.card-fuchsia:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-fuchsia .btn-tool:hover,.bg-gradient-fuchsia .btn-tool:hover,.card-fuchsia:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget .table td,.card.bg-fuchsia .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#cc0da1;color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active,.card.bg-fuchsia .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-fuchsia .bootstrap-datetimepicker-widget table td.active:hover{background:#f342cb;color:#fff}.card-maroon:not(.card-outline)>.card-header{background-color:#d81b60}.card-maroon:not(.card-outline)>.card-header,.card-maroon:not(.card-outline)>.card-header a{color:#fff}.card-maroon:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-maroon.card-outline{border-top:3px solid #d81b60}.card-maroon.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-maroon.card-outline-tabs>.card-header a.active{border-top:3px solid #d81b60}.bg-gradient-maroon .btn-tool,.bg-maroon .btn-tool,.card-maroon:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-maroon .btn-tool:hover,.bg-maroon .btn-tool:hover,.card-maroon:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget .table th,.card.bg-maroon .bootstrap-datetimepicker-widget .table td,.card.bg-maroon .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#b41650;color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.today:before,.card.bg-maroon .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-maroon .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-maroon .bootstrap-datetimepicker-widget table td.active,.card.bg-maroon .bootstrap-datetimepicker-widget table td.active:hover{background:#e73f7c;color:#fff}.card-blue:not(.card-outline)>.card-header{background-color:#3085d6}.card-blue:not(.card-outline)>.card-header,.card-blue:not(.card-outline)>.card-header a{color:#fff}.card-blue:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-blue.card-outline{border-top:3px solid #3085d6}.card-blue.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-blue.card-outline-tabs>.card-header a.active{border-top:3px solid #3085d6}.bg-blue .btn-tool,.bg-gradient-blue .btn-tool,.card-blue:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-blue .btn-tool:hover,.bg-gradient-blue .btn-tool:hover,.card-blue:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget .table td,.card.bg-blue .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-blue .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-blue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-blue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#2570b9;color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-blue .bootstrap-datetimepicker-widget table td.active,.card.bg-blue .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-blue .bootstrap-datetimepicker-widget table td.active:hover{background:#5b9ede;color:#fff}.card-indigo:not(.card-outline)>.card-header{background-color:#5c6bc6}.card-indigo:not(.card-outline)>.card-header,.card-indigo:not(.card-outline)>.card-header a{color:#fff}.card-indigo:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-indigo.card-outline{border-top:3px solid #5c6bc6}.card-indigo.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-indigo.card-outline-tabs>.card-header a.active{border-top:3px solid #5c6bc6}.bg-gradient-indigo .btn-tool,.bg-indigo .btn-tool,.card-indigo:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-indigo .btn-tool:hover,.bg-indigo .btn-tool:hover,.card-indigo:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget .table th,.card.bg-indigo .bootstrap-datetimepicker-widget .table td,.card.bg-indigo .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#4152b9;color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.today:before,.card.bg-indigo .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-indigo .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-indigo .bootstrap-datetimepicker-widget table td.active,.card.bg-indigo .bootstrap-datetimepicker-widget table td.active:hover{background:#828dd3;color:#fff}.card-purple:not(.card-outline)>.card-header{background-color:#6f42c1}.card-purple:not(.card-outline)>.card-header,.card-purple:not(.card-outline)>.card-header a{color:#fff}.card-purple:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-purple.card-outline{border-top:3px solid #6f42c1}.card-purple.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-purple.card-outline-tabs>.card-header a.active{border-top:3px solid #6f42c1}.bg-gradient-purple .btn-tool,.bg-purple .btn-tool,.card-purple:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-purple .btn-tool:hover,.bg-purple .btn-tool:hover,.card-purple:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-purple .bootstrap-datetimepicker-widget .table th,.card.bg-purple .bootstrap-datetimepicker-widget .table td,.card.bg-purple .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-purple .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#5d36a4;color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.today:before,.card.bg-purple .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-purple .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-purple .bootstrap-datetimepicker-widget table td.active,.card.bg-purple .bootstrap-datetimepicker-widget table td.active:hover{background:#8c68ce;color:#fff}.card-pink:not(.card-outline)>.card-header{background-color:#ff8acc}.card-pink:not(.card-outline)>.card-header,.card-pink:not(.card-outline)>.card-header a,.card-pink:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-pink.card-outline{border-top:3px solid #ff8acc}.card-pink.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-pink.card-outline-tabs>.card-header a.active{border-top:3px solid #ff8acc}.bg-gradient-pink .btn-tool,.bg-pink .btn-tool,.card-pink:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-pink .btn-tool:hover,.bg-pink .btn-tool:hover,.card-pink:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-pink .bootstrap-datetimepicker-widget .table th,.card.bg-pink .bootstrap-datetimepicker-widget .table td,.card.bg-pink .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-pink .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#ff61ba;color:#2a2e30}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.today:before,.card.bg-pink .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-pink .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-pink .bootstrap-datetimepicker-widget table td.active,.card.bg-pink .bootstrap-datetimepicker-widget table td.active:hover{background:#ffbde2;color:#2a2e30}.card-red:not(.card-outline)>.card-header{background-color:#ea5455}.card-red:not(.card-outline)>.card-header,.card-red:not(.card-outline)>.card-header a{color:#fff}.card-red:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-red.card-outline{border-top:3px solid #ea5455}.card-red.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-red.card-outline-tabs>.card-header a.active{border-top:3px solid #ea5455}.bg-gradient-red .btn-tool,.bg-red .btn-tool,.card-red:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-red .btn-tool:hover,.bg-red .btn-tool:hover,.card-red:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-red .bootstrap-datetimepicker-widget .table th,.card.bg-red .bootstrap-datetimepicker-widget .table td,.card.bg-red .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-red .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e63031;color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.today:before,.card.bg-red .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-red .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-red .bootstrap-datetimepicker-widget table td.active,.card.bg-red .bootstrap-datetimepicker-widget table td.active:hover{background:#f08182;color:#fff}.card-orange:not(.card-outline)>.card-header{background-color:#dda451}.card-orange:not(.card-outline)>.card-header,.card-orange:not(.card-outline)>.card-header a,.card-orange:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-orange.card-outline{border-top:3px solid #dda451}.card-orange.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-orange.card-outline-tabs>.card-header a.active{border-top:3px solid #dda451}.bg-gradient-orange .btn-tool,.bg-orange .btn-tool,.card-orange:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-orange .btn-tool:hover,.bg-orange .btn-tool:hover,.card-orange:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-orange .bootstrap-datetimepicker-widget .table th,.card.bg-orange .bootstrap-datetimepicker-widget .table td,.card.bg-orange .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-orange .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#d6922f;color:#2a2e30}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.today:before,.card.bg-orange .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-orange .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-orange .bootstrap-datetimepicker-widget table td.active,.card.bg-orange .bootstrap-datetimepicker-widget table td.active:hover{background:#e5ba7c;color:#2a2e30}.card-yellow:not(.card-outline)>.card-header{background-color:#edc30e}.card-yellow:not(.card-outline)>.card-header,.card-yellow:not(.card-outline)>.card-header a,.card-yellow:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-yellow.card-outline{border-top:3px solid #edc30e}.card-yellow.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-yellow.card-outline-tabs>.card-header a.active{border-top:3px solid #edc30e}.bg-gradient-yellow .btn-tool,.bg-yellow .btn-tool,.card-yellow:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-yellow .btn-tool:hover,.bg-yellow .btn-tool:hover,.card-yellow:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget .table th,.card.bg-yellow .bootstrap-datetimepicker-widget .table td,.card.bg-yellow .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#c6a30c;color:#2a2e30}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.today:before,.card.bg-yellow .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-yellow .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-yellow .bootstrap-datetimepicker-widget table td.active,.card.bg-yellow .bootstrap-datetimepicker-widget table td.active:hover{background:#f3d13b;color:#2a2e30}.card-green:not(.card-outline)>.card-header{background-color:#21b978}.card-green:not(.card-outline)>.card-header,.card-green:not(.card-outline)>.card-header a{color:#fff}.card-green:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-green.card-outline{border-top:3px solid #21b978}.card-green.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-green.card-outline-tabs>.card-header a.active{border-top:3px solid #21b978}.bg-gradient-green .btn-tool,.bg-green .btn-tool,.card-green:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-green .btn-tool:hover,.bg-green .btn-tool:hover,.card-green:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-green .bootstrap-datetimepicker-widget .table th,.card.bg-green .bootstrap-datetimepicker-widget .table td,.card.bg-green .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-green .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#1b9662;color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.today:before,.card.bg-green .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-green .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-green .bootstrap-datetimepicker-widget table td.active,.card.bg-green .bootstrap-datetimepicker-widget table td.active:hover{background:#32db93;color:#fff}.card-teal:not(.card-outline)>.card-header{background-color:#20c997}.card-teal:not(.card-outline)>.card-header,.card-teal:not(.card-outline)>.card-header a{color:#fff}.card-teal:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-teal.card-outline{border-top:3px solid #20c997}.card-teal.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-teal.card-outline-tabs>.card-header a.active{border-top:3px solid #20c997}.bg-gradient-teal .btn-tool,.bg-teal .btn-tool,.card-teal:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-teal .btn-tool:hover,.bg-teal .btn-tool:hover,.card-teal:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-teal .bootstrap-datetimepicker-widget .table th,.card.bg-teal .bootstrap-datetimepicker-widget .table td,.card.bg-teal .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-teal .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#1aa67d;color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.today:before,.card.bg-teal .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-teal .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-teal .bootstrap-datetimepicker-widget table td.active,.card.bg-teal .bootstrap-datetimepicker-widget table td.active:hover{background:#3ce0af;color:#fff}.card-cyan:not(.card-outline)>.card-header{background-color:#7367f0}.card-cyan:not(.card-outline)>.card-header,.card-cyan:not(.card-outline)>.card-header a{color:#fff}.card-cyan:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-cyan.card-outline{border-top:3px solid #7367f0}.card-cyan.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-cyan.card-outline-tabs>.card-header a.active{border-top:3px solid #7367f0}.bg-cyan .btn-tool,.bg-gradient-cyan .btn-tool,.card-cyan:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-cyan .btn-tool:hover,.bg-gradient-cyan .btn-tool:hover,.card-cyan:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget .table td,.card.bg-cyan .bootstrap-datetimepicker-widget .table th,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-cyan .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#5142ec;color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-cyan .bootstrap-datetimepicker-widget table td.active,.card.bg-cyan .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-cyan .bootstrap-datetimepicker-widget table td.active:hover{background:#9e95f5;color:#fff}.card-white:not(.card-outline)>.card-header{background-color:#fff}.card-white:not(.card-outline)>.card-header,.card-white:not(.card-outline)>.card-header a,.card-white:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-white.card-outline{border-top:3px solid #fff}.card-white.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-white.card-outline-tabs>.card-header a.active{border-top:3px solid #fff}.bg-gradient-white .btn-tool,.bg-white .btn-tool,.card-white:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-white .btn-tool:hover,.bg-white .btn-tool:hover,.card-white:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-white .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-white .bootstrap-datetimepicker-widget .table th,.card.bg-white .bootstrap-datetimepicker-widget .table td,.card.bg-white .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-white .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#ebebeb;color:#2a2e30}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.today:before,.card.bg-white .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-white .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-white .bootstrap-datetimepicker-widget table td.active,.card.bg-white .bootstrap-datetimepicker-widget table td.active:hover{background:#fff;color:#2a2e30}.card-gray:not(.card-outline)>.card-header{background-color:#b8c2cc}.card-gray:not(.card-outline)>.card-header,.card-gray:not(.card-outline)>.card-header a,.card-gray:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-gray.card-outline{border-top:3px solid #b8c2cc}.card-gray.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-gray.card-outline-tabs>.card-header a.active{border-top:3px solid #b8c2cc}.bg-gradient-gray .btn-tool,.bg-gray .btn-tool,.card-gray:not(.card-outline) .btn-tool{color:rgba(42,46,48,.8)}.bg-gradient-gray .btn-tool:hover,.bg-gray .btn-tool:hover,.card-gray:not(.card-outline) .btn-tool:hover{color:#2a2e30}.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-gray .bootstrap-datetimepicker-widget .table th,.card.bg-gray .bootstrap-datetimepicker-widget .table td,.card.bg-gray .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gray .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#a0aebb;color:#2a2e30}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gray .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#2a2e30}.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-gray .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gray .bootstrap-datetimepicker-widget table td.active,.card.bg-gray .bootstrap-datetimepicker-widget table td.active:hover{background:#d6dce1;color:#2a2e30}.card-gray-dark:not(.card-outline)>.card-header{background-color:#1e1e1e}.card-gray-dark:not(.card-outline)>.card-header,.card-gray-dark:not(.card-outline)>.card-header a{color:#fff}.card-gray-dark:not(.card-outline)>.card-header a.active{color:#2a2e30}.card-gray-dark.card-outline{border-top:3px solid #1e1e1e}.card-gray-dark.card-outline-tabs>.card-header a:hover{border-top:3px solid #dae1e7}.card-gray-dark.card-outline-tabs>.card-header a.active{border-top:3px solid #1e1e1e}.bg-gradient-gray-dark .btn-tool,.bg-gray-dark .btn-tool,.card-gray-dark:not(.card-outline) .btn-tool{color:hsla(0,0%,100%,.8)}.bg-gradient-gray-dark .btn-tool:hover,.bg-gray-dark .btn-tool:hover,.card-gray-dark:not(.card-outline) .btn-tool:hover{color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget .table th,.card.bg-gray-dark .bootstrap-datetimepicker-widget .table td,.card.bg-gray-dark .bootstrap-datetimepicker-widget .table th{border:none}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.day:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.hour:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.minute:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.second:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#0a0a0a;color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.today:before,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.today:before{border-bottom-color:#fff}.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gradient-gray-dark .bootstrap-datetimepicker-widget table td.active:hover,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active,.card.bg-gray-dark .bootstrap-datetimepicker-widget table td.active:hover{background:#383838;color:#fff}.card{margin-bottom:3rem;border:0}.card.bg-dark .card-header{border-color:#42484b}.card.bg-dark,.card.bg-dark .card-body{color:#fff}.card.maximized-card{height:100%!important;left:0;max-height:100%!important;max-width:100%!important;position:fixed;top:0;width:100%!important;z-index:9999}.card.maximized-card.was-collapsed .card-body{display:block!important}.card.maximized-card [data-widget=collapse]{display:none}.card.maximized-card .card-footer,.card.maximized-card .card-header{border-radius:0!important}.card.collapsed-card .card-body,.card.collapsed-card .card-footer{display:none}.card .nav.flex-column>li{border-bottom:1px solid rgba(34,41,47,.125);margin:0}.card .nav.flex-column>li:last-of-type{border-bottom:0}.card.height-control .card-body{max-height:300px;overflow:auto}.card .border-right{border-right:1px solid rgba(34,41,47,.125)}.card .border-left{border-left:1px solid rgba(34,41,47,.125)}.card.card-tabs:not(.card-outline)>.card-header{border-bottom:0}.card.card-tabs:not(.card-outline)>.card-header .nav-item:first-child .nav-link{margin-left:-1px}.card.card-tabs.card-outline .nav-item{border-bottom:0}.card.card-tabs.card-outline .nav-item:first-child .nav-link{border-left:0;margin-left:0}.card.card-tabs .card-tools{margin:.3rem .5rem}.card.card-tabs:not(.expanding-card).collapsed-card .card-header,.card.card-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs{border-bottom:0}.card.card-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs .nav-item{margin-bottom:0}.card.card-tabs.expanding-card .card-header .nav-tabs .nav-item{margin-bottom:-1px}.card.card-outline-tabs{border-top:0}.card.card-outline-tabs .card-header .nav-item:first-child .nav-link{border-left:0;margin-left:0}.card.card-outline-tabs .card-header a{border-top:3px solid transparent}.card.card-outline-tabs .card-header a:hover{border-top:3px solid #dae1e7}.card.card-outline-tabs .card-header a.active:hover{margin-top:0}.card.card-outline-tabs .card-tools{margin:.5rem .5rem .3rem}.card.card-outline-tabs:not(.expanding-card).collapsed-card .card-header,.card.card-outline-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs{border-bottom:0}.card.card-outline-tabs:not(.expanding-card).collapsed-card .card-header .nav-tabs .nav-item{margin-bottom:0}.card.card-outline-tabs.expanding-card .card-header .nav-tabs .nav-item{margin-bottom:-1px}html.maximized-card{overflow:hidden}.card-header{background-color:transparent;border-bottom:0;padding:.75rem 1.25rem;position:relative;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.collapsed-card .card-header{border-bottom:0}.card-header>.card-tools{float:right;margin-right:-.625rem}.card-header>.card-tools .input-group,.card-header>.card-tools .nav,.card-header>.card-tools .pagination{margin-bottom:-.3rem;margin-top:-.3rem}.card-header>.card-tools [data-toggle=tooltip]{position:relative}.card-title{float:left;font-size:1.1rem;font-weight:400;margin:0}.card-text{clear:both}.btn-tool{background:transparent;color:#adb5bd;font-size:1rem;margin:-.75rem 0;padding:.25rem .5rem}.btn-group.show .btn-tool,.btn-tool:hover{color:#4e5154}.btn-tool:focus,.show .btn-tool{box-shadow:none!important}.text-sm .card-title{font-size:1rem}.text-sm .nav-link{padding:.4rem .8rem}.card-body>.table{margin-bottom:0}.card-body>.table>thead>tr>td,.card-body>.table>thead>tr>th{border-top-width:0}.card-body .fc{margin-top:5px}.card-body .full-width-chart{margin:-19px}.card-body.p-0 .full-width-chart{margin:-9px}.chart-legend{padding-left:0;list-style:none;margin:10px 0}@media (max-width:576px){.chart-legend>li{float:left;margin-right:10px}}.card-comments{background:#babfc7}.card-comments .card-comment{border-bottom:1px solid #ededed;padding:8px 0}.card-comments .card-comment:after{display:block;clear:both;content:\"\"}.card-comments .card-comment:last-of-type{border-bottom:0}.card-comments .card-comment:first-of-type{padding-top:0}.card-comments .card-comment img{height:1.875rem;width:1.875rem;float:left}.card-comments .comment-text{color:#7f8489;margin-left:40px}.card-comments .username{color:#4e5154;display:block;font-weight:600}.card-comments .text-muted{font-size:12px;font-weight:400}.todo-list{list-style:none;margin:0;overflow:auto;padding:0}.todo-list>li{border-radius:2px;background:#babfc7;border-left:2px solid #ededed;color:#4e5154;margin-bottom:2px;padding:10px}.todo-list>li:last-of-type{margin-bottom:0}.todo-list>li>input[type=checkbox]{margin:0 10px 0 5px}.todo-list>li .text{display:inline-block;font-weight:600;margin-left:5px}.todo-list>li .badge{font-size:.7rem;margin-left:10px}.todo-list>li .tools{color:#ea5455;display:none;float:right}.todo-list>li .tools>.fa,.todo-list>li .tools>.fab,.todo-list>li .tools>.far,.todo-list>li .tools>.fas,.todo-list>li .tools>.glyphicon,.todo-list>li .tools>.ion{cursor:pointer;margin-right:5px}.todo-list>li:hover .tools{display:inline-block}.todo-list>li.done{color:#697582}.todo-list>li.done .text{font-weight:500;text-decoration:line-through}.todo-list>li.done .badge{background:#adb5bd!important}.todo-list .primary{border-left-color:#586cb1}.todo-list .secondary{border-left-color:#b8c2cc}.todo-list .success{border-left-color:#21b978}.todo-list .info{border-left-color:#4277cf}.todo-list .warning{border-left-color:#dda451}.todo-list .danger{border-left-color:#ea5455}.todo-list .light{border-left-color:#f7f7f9}.todo-list .dark{border-left-color:#22292f}.todo-list .lightblue{border-left-color:#3c8dbc}.todo-list .navy{border-left-color:#001f3f}.todo-list .olive{border-left-color:#3d9970}.todo-list .lime{border-left-color:#01ff70}.todo-list .fuchsia{border-left-color:#f012be}.todo-list .maroon{border-left-color:#d81b60}.todo-list .blue{border-left-color:#3085d6}.todo-list .indigo{border-left-color:#5c6bc6}.todo-list .purple{border-left-color:#6f42c1}.todo-list .pink{border-left-color:#ff8acc}.todo-list .red{border-left-color:#ea5455}.todo-list .orange{border-left-color:#dda451}.todo-list .yellow{border-left-color:#edc30e}.todo-list .green{border-left-color:#21b978}.todo-list .teal{border-left-color:#20c997}.todo-list .cyan{border-left-color:#7367f0}.todo-list .white{border-left-color:#fff}.todo-list .gray{border-left-color:#b8c2cc}.todo-list .gray-dark{border-left-color:#1e1e1e}.todo-list .handle{cursor:move;display:inline-block;margin:0 5px}.card-input{max-width:200px}.card-default .nav-item:first-child .nav-link{border-left:0}.modal-dialog .overlay{background-color:#22292f;display:block;height:100%;left:0;opacity:.7;position:absolute;top:0;width:100%;z-index:1052}.modal-content.bg-warning .modal-footer,.modal-content.bg-warning .modal-header{border-color:#1e1e1e}.modal-content.bg-danger .close,.modal-content.bg-danger .mailbox-attachment-close,.modal-content.bg-info .close,.modal-content.bg-info .mailbox-attachment-close,.modal-content.bg-primary .close,.modal-content.bg-primary .mailbox-attachment-close,.modal-content.bg-secondary .close,.modal-content.bg-secondary .mailbox-attachment-close,.modal-content.bg-success .close,.modal-content.bg-success .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toasts-top-right{position:absolute;right:0;top:0;z-index:1040}.toasts-top-right.fixed{position:fixed}.toasts-top-left{left:0;position:absolute;top:0;z-index:1040}.toasts-top-left.fixed{position:fixed}.toasts-bottom-right{bottom:0;position:absolute;right:0;z-index:1040}.toasts-bottom-right.fixed{position:fixed}.toasts-bottom-left{bottom:0;left:0;position:absolute;z-index:1040}.toasts-bottom-left.fixed{position:fixed}.toast.bg-primary{background:rgba(88,108,177,.9)!important}.toast.bg-primary .close,.toast.bg-primary .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-primary .toast-header{background:rgba(88,108,177,.85);color:#fff}.toast.bg-secondary{background:rgba(184,194,204,.9)!important}.toast.bg-secondary .toast-header{background:rgba(184,194,204,.85);color:#2a2e30}.toast.bg-success{background:rgba(33,185,120,.9)!important}.toast.bg-success .close,.toast.bg-success .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-success .toast-header{background:rgba(33,185,120,.85);color:#fff}.toast.bg-info{background:rgba(66,119,207,.9)!important}.toast.bg-info .close,.toast.bg-info .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-info .toast-header{background:rgba(66,119,207,.85);color:#fff}.toast.bg-warning{background:rgba(221,164,81,.9)!important}.toast.bg-warning .toast-header{background:rgba(221,164,81,.85);color:#2a2e30}.toast.bg-danger{background:rgba(234,84,85,.9)!important}.toast.bg-danger .close,.toast.bg-danger .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-danger .toast-header{background:rgba(234,84,85,.85);color:#fff}.toast.bg-light{background:rgba(247,247,249,.9)!important}.toast.bg-light .toast-header{background:rgba(247,247,249,.85);color:#2a2e30}.toast.bg-dark{background:rgba(34,41,47,.9)!important}.toast.bg-dark .close,.toast.bg-dark .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-dark .toast-header{background:rgba(34,41,47,.85);color:#fff}.toast.bg-lightblue{background:rgba(60,141,188,.9)!important}.toast.bg-lightblue .close,.toast.bg-lightblue .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-lightblue .toast-header{background:rgba(60,141,188,.85);color:#fff}.toast.bg-navy{background:rgba(0,31,63,.9)!important}.toast.bg-navy .close,.toast.bg-navy .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-navy .toast-header{background:rgba(0,31,63,.85);color:#fff}.toast.bg-olive{background:rgba(61,153,112,.9)!important}.toast.bg-olive .close,.toast.bg-olive .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-olive .toast-header{background:rgba(61,153,112,.85);color:#fff}.toast.bg-lime{background:rgba(1,255,112,.9)!important}.toast.bg-lime .toast-header{background:rgba(1,255,112,.85);color:#2a2e30}.toast.bg-fuchsia{background:rgba(240,18,190,.9)!important}.toast.bg-fuchsia .close,.toast.bg-fuchsia .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-fuchsia .toast-header{background:rgba(240,18,190,.85);color:#fff}.toast.bg-maroon{background:rgba(216,27,96,.9)!important}.toast.bg-maroon .close,.toast.bg-maroon .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-maroon .toast-header{background:rgba(216,27,96,.85);color:#fff}.toast.bg-blue{background:rgba(48,133,214,.9)!important}.toast.bg-blue .close,.toast.bg-blue .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-blue .toast-header{background:rgba(48,133,214,.85);color:#fff}.toast.bg-indigo{background:rgba(92,107,198,.9)!important}.toast.bg-indigo .close,.toast.bg-indigo .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-indigo .toast-header{background:rgba(92,107,198,.85);color:#fff}.toast.bg-purple{background:rgba(111,66,193,.9)!important}.toast.bg-purple .close,.toast.bg-purple .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-purple .toast-header{background:rgba(111,66,193,.85);color:#fff}.toast.bg-pink{background:rgba(255,138,204,.9)!important}.toast.bg-pink .toast-header{background:rgba(255,138,204,.85);color:#2a2e30}.toast.bg-red{background:rgba(234,84,85,.9)!important}.toast.bg-red .close,.toast.bg-red .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-red .toast-header{background:rgba(234,84,85,.85);color:#fff}.toast.bg-orange{background:rgba(221,164,81,.9)!important}.toast.bg-orange .toast-header{background:rgba(221,164,81,.85);color:#2a2e30}.toast.bg-yellow{background:rgba(237,195,14,.9)!important}.toast.bg-yellow .toast-header{background:rgba(237,195,14,.85);color:#2a2e30}.toast.bg-green{background:rgba(33,185,120,.9)!important}.toast.bg-green .close,.toast.bg-green .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-green .toast-header{background:rgba(33,185,120,.85);color:#fff}.toast.bg-teal{background:rgba(32,201,151,.9)!important}.toast.bg-teal .close,.toast.bg-teal .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-teal .toast-header{background:rgba(32,201,151,.85);color:#fff}.toast.bg-cyan{background:rgba(115,103,240,.9)!important}.toast.bg-cyan .close,.toast.bg-cyan .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-cyan .toast-header{background:rgba(115,103,240,.85);color:#fff}.toast.bg-white{background:hsla(0,0%,100%,.9)!important}.toast.bg-white .toast-header{background:hsla(0,0%,100%,.85);color:#2a2e30}.toast.bg-gray{background:rgba(184,194,204,.9)!important}.toast.bg-gray .toast-header{background:rgba(184,194,204,.85);color:#2a2e30}.toast.bg-gray-dark{background:rgba(30,30,30,.9)!important}.toast.bg-gray-dark .close,.toast.bg-gray-dark .mailbox-attachment-close{color:#fff;text-shadow:0 1px 0 #000}.toast.bg-gray-dark .toast-header{background:rgba(30,30,30,.85);color:#fff}.btn{border-width:1px}.btn.disabled,.btn:disabled{cursor:not-allowed}.btn.btn-flat{border-radius:0;border-width:1px;box-shadow:none}.btn.btn-file{overflow:hidden;position:relative}.btn.btn-file>input[type=file]{background:#fff;cursor:inherit;display:block;font-size:100px;min-height:100%;min-width:100%;opacity:0;outline:none;position:absolute;right:0;text-align:right;top:0}.text-sm .btn{font-size:1rem!important}.btn-default{background-color:#babfc7;border-color:#babfc7;color:#444}.btn-default.hover,.btn-default:active,.btn-default:hover{background-color:#acb2bc;color:#2b2b2b}.btn-app{border-radius:3px;background-color:#babfc7;border:1px solid #ddd;color:#b8c2cc;font-size:12px;height:60px;margin:0 0 10px 10px;min-width:80px;padding:15px 5px;position:relative;text-align:center}.btn-app>.fa,.btn-app>.fab,.btn-app>.far,.btn-app>.fas,.btn-app>.glyphicon,.btn-app>.ion{display:block;font-size:20px}.btn-app:hover{background:#babfc7;border-color:#aaa;color:#444}.btn-app>.badge{font-size:10px;font-weight:400;position:absolute;right:-10px;top:-3px}.btn-xs{padding:.125rem .25rem;font-size:.75rem;border-radius:.15rem}.callout{border-radius:.5rem;background-color:#fff;border:1px solid #dae1e7;border-left:5px solid #ededed;margin-bottom:3rem;padding:1rem}.callout a{color:#4e5154;text-decoration:underline}.callout a:hover{color:#ededed}.callout p:last-child{margin-bottom:0}.callout.callout-danger{border-left-color:#e42728}.callout.callout-warning{border-left-color:#d28d29}.callout.callout-info{border-left-color:#2d5fb1}.callout.callout-success{border-left-color:#198e5c}.alert .icon{margin-right:10px}.alert .close,.alert .mailbox-attachment-close{color:#22292f;opacity:.2}.alert .close:hover,.alert .mailbox-attachment-close:hover{opacity:.5}.alert a{color:#fff;text-decoration:underline}.alert-primary{color:#fff;background:#586cb1;border-color:#4c60a3}.alert-default-primary{color:#3e4c73;background-color:#dee2ef;border-color:#d0d6e9}.alert-default-primary hr{border-top-color:#bfc7e1}.alert-default-primary .alert-link{color:#2c3652}.alert-secondary{color:#2a2e30;background:#b8c2cc;border-color:#a9b5c1}.alert-default-secondary{color:#707981;background-color:#f1f3f5;border-color:#ebeef1}.alert-default-secondary hr{border-top-color:#dce1e7}.alert-default-secondary .alert-link{color:#585f66}.alert-success{color:#fff;background:#21b978;border-color:#1da36a}.alert-default-success{color:#217455;background-color:#d3f1e4;border-color:#c1ebd9}.alert-default-success hr{border-top-color:#aee5cd}.alert-default-success .alert-link{color:#164c38}.alert-info{color:#fff;background:#4277cf;border-color:#3269c5}.alert-default-info{color:#335282;background-color:#d9e4f5;border-color:#cad9f2}.alert-default-info hr{border-top-color:#b6caed}.alert-default-info .alert-link{color:#253b5d}.alert-warning{color:#2a2e30;background:#dda451;border-color:#d9993c}.alert-default-warning{color:#836941;background-color:#f8eddc;border-color:#f5e6ce}.alert-default-warning hr{border-top-color:#f1dbb9}.alert-default-warning .alert-link{color:#614e30}.alert-danger{color:#fff;background:#ea5455;border-color:#e73d3e}.alert-default-danger{color:#8a3f43;background-color:#fbdddd;border-color:#f9cfcf}.alert-default-danger hr{border-top-color:#f6b8b8}.alert-default-danger .alert-link{color:#672f32}.alert-light{color:#2a2e30;background:#f7f7f9;border-color:#e8e8ee}.alert-default-light{color:#919498;background-color:#fdfdfe;border-color:#fdfdfd}.alert-default-light hr{border-top-color:#f0f0f0}.alert-default-light .alert-link{color:#777a7f}.alert-dark{color:#fff;background:#22292f;border-color:#171c20}.alert-default-dark{color:#22292f;background-color:#d3d4d5;border-color:#c1c3c5}.alert-default-dark hr{border-top-color:#b4b6b9}.alert-default-dark .alert-link{color:#0d0f11}.table:not(.table-dark){color:inherit}.table.table-head-fixed thead tr:first-child th{background-color:#fff;border-bottom:0;box-shadow:inset 0 1px 0 #eff1f7,inset 0 -1px 0 #eff1f7;position:-webkit-sticky;position:sticky;top:0;z-index:10}.table.table-head-fixed.table-dark thead tr:first-child th{background-color:#1e1e1e;box-shadow:inset 0 1px 0 #313131,inset 0 -1px 0 #313131}.table.no-border,.table.no-border td,.table.no-border th{border:0}.table.text-center,.table.text-center td,.table.text-center th{text-align:center}.table.table-valign-middle tbody>tr>td,.table.table-valign-middle tbody>tr>th,.table.table-valign-middle thead>tr>td,.table.table-valign-middle thead>tr>th{vertical-align:middle}.card-body.p-0 .table tbody>tr>td:first-of-type,.card-body.p-0 .table tbody>tr>th:first-of-type,.card-body.p-0 .table thead>tr>td:first-of-type,.card-body.p-0 .table thead>tr>th:first-of-type{padding-left:3.5rem}.card-body.p-0 .table tbody>tr>td:last-of-type,.card-body.p-0 .table tbody>tr>th:last-of-type,.card-body.p-0 .table thead>tr>td:last-of-type,.card-body.p-0 .table thead>tr>th:last-of-type{padding-right:3.5rem}.carousel-control.left,.carousel-control.right{background-image:none}.carousel-control>.fa,.carousel-control>.fab,.carousel-control>.far,.carousel-control>.fas,.carousel-control>.glyphicon,.carousel-control>.ion{display:inline-block;font-size:40px;margin-top:-20px;position:absolute;top:50%;z-index:5}.small-box{border-radius:.5rem;display:block;margin-bottom:20px;position:relative}.small-box>.inner{padding:10px}.small-box>.small-box-footer{background:rgba(34,41,47,.1);color:hsla(0,0%,100%,.8);display:block;padding:3px 0;position:relative;text-align:center;text-decoration:none;z-index:10}.small-box>.small-box-footer:hover{background:rgba(34,41,47,.15);color:#fff}.small-box h3{font-size:2.2rem;font-weight:700;margin:0 0 10px;padding:0;white-space:nowrap}@media (min-width:992px){.col-lg-2 .small-box h3,.col-lg-3 .small-box h3,.col-md-2 .small-box h3,.col-md-3 .small-box h3,.col-xl-2 .small-box h3,.col-xl-3 .small-box h3{font-size:1.6rem}}@media (min-width:1200px){.col-lg-2 .small-box h3,.col-lg-3 .small-box h3,.col-md-2 .small-box h3,.col-md-3 .small-box h3,.col-xl-2 .small-box h3,.col-xl-3 .small-box h3{font-size:2.2rem}}.small-box p{font-size:1rem}.small-box p>small{color:#babfc7;display:block;font-size:.9rem;margin-top:5px}.small-box h3,.small-box p{z-index:5}.small-box .icon{color:rgba(34,41,47,.15);z-index:0}.small-box .icon>i{font-size:90px;position:absolute;right:15px;top:15px;transition:all .3s linear}.small-box .icon>i.fa,.small-box .icon>i.fab,.small-box .icon>i.far,.small-box .icon>i.fas,.small-box .icon>i.glyphicon,.small-box .icon>i.ion{font-size:70px;top:20px}.small-box:hover{text-decoration:none}.small-box:hover .icon>i{font-size:95px}.small-box:hover .icon>i.fa,.small-box:hover .icon>i.fab,.small-box:hover .icon>i.far,.small-box:hover .icon>i.fas,.small-box:hover .icon>i.glyphicon,.small-box:hover .icon>i.ion{font-size:75px}@media (max-width:767.98px){.small-box{text-align:center}.small-box .icon{display:none}.small-box p{font-size:12px}}.info-box{border-radius:.5rem;background:#fff;display:flex;margin-bottom:3rem;min-height:80px;padding:.5rem;position:relative}.info-box .progress{background-color:rgba(34,41,47,.125);height:2px;margin:5px 0}.info-box .progress .progress-bar{background-color:#fff}.info-box .info-box-icon{border-radius:.5rem;align-items:center;display:flex;font-size:1.875rem;justify-content:center;text-align:center;width:70px}.info-box .info-box-icon>img{max-width:100%}.info-box .info-box-content{flex:1;padding:5px 10px}.info-box .info-box-number{display:block;font-weight:700}.info-box .info-box-text,.info-box .progress-description{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-box .info-box .bg-gradient-primary,.info-box .info-box .bg-primary{color:#fff}.info-box .info-box .bg-gradient-primary .progress-bar,.info-box .info-box .bg-primary .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-secondary,.info-box .info-box .bg-secondary{color:#2a2e30}.info-box .info-box .bg-gradient-secondary .progress-bar,.info-box .info-box .bg-secondary .progress-bar{background-color:#2a2e30}.info-box .info-box .bg-gradient-success,.info-box .info-box .bg-success{color:#fff}.info-box .info-box .bg-gradient-success .progress-bar,.info-box .info-box .bg-success .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-info,.info-box .info-box .bg-info{color:#fff}.info-box .info-box .bg-gradient-info .progress-bar,.info-box .info-box .bg-info .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-warning,.info-box .info-box .bg-warning{color:#2a2e30}.info-box .info-box .bg-gradient-warning .progress-bar,.info-box .info-box .bg-warning .progress-bar{background-color:#2a2e30}.info-box .info-box .bg-danger,.info-box .info-box .bg-gradient-danger{color:#fff}.info-box .info-box .bg-danger .progress-bar,.info-box .info-box .bg-gradient-danger .progress-bar{background-color:#fff}.info-box .info-box .bg-gradient-light,.info-box .info-box .bg-light{color:#2a2e30}.info-box .info-box .bg-gradient-light .progress-bar,.info-box .info-box .bg-light .progress-bar{background-color:#2a2e30}.info-box .info-box .bg-dark,.info-box .info-box .bg-gradient-dark{color:#fff}.info-box .info-box .bg-dark .progress-bar,.info-box .info-box .bg-gradient-dark .progress-bar{background-color:#fff}.info-box .info-box-more{display:block}.info-box .progress-description{margin:0}@media (min-width:768px){.col-lg-2 .info-box .progress-description,.col-lg-3 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-2 .info-box .progress-description,.col-xl-3 .info-box .progress-description{display:none}}@media (min-width:992px){.col-lg-2 .info-box .progress-description,.col-lg-3 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-2 .info-box .progress-description,.col-xl-3 .info-box .progress-description{font-size:.75rem;display:block}}@media (min-width:1200px){.col-lg-2 .info-box .progress-description,.col-lg-3 .info-box .progress-description,.col-md-2 .info-box .progress-description,.col-md-3 .info-box .progress-description,.col-xl-2 .info-box .progress-description,.col-xl-3 .info-box .progress-description{font-size:1rem;display:block}}.timeline{margin:0 0 45px;padding:0;position:relative}.timeline:before{border-radius:.5rem;background:#dae1e7;bottom:0;content:\"\";left:31px;margin:0;position:absolute;top:0;width:4px}.timeline>div{margin-bottom:15px;margin-right:10px;position:relative}.timeline>div:after,.timeline>div:before{content:\"\";display:table}.timeline>div>.timeline-item{border-radius:.5rem;background:#fff;color:#4e5154;margin-left:60px;margin-right:15px;margin-top:0;padding:0;position:relative}.timeline>div>.timeline-item>.time{color:#999;float:right;font-size:12px;padding:10px}.timeline>div>.timeline-item>.timeline-header{border-bottom:1px solid rgba(34,41,47,.125);color:#4e5154;font-size:16px;line-height:1.1;margin:0;padding:10px}.timeline>div>.timeline-item>.timeline-header>a{font-weight:600}.timeline>div>.timeline-item>.timeline-body,.timeline>div>.timeline-item>.timeline-footer{padding:10px}.timeline>div>.timeline-item>.timeline-body>img{margin:10px}.timeline>div>.timeline-item>.timeline-body>dl,.timeline>div>.timeline-item>.timeline-body ol,.timeline>div>.timeline-item>.timeline-body ul{margin:0}.timeline>div>.timeline-item>.timeline-footer>a{color:#fff}.timeline>div>.fa,.timeline>div>.fab,.timeline>div>.far,.timeline>div>.fas,.timeline>div>.glyphicon,.timeline>div>.ion{background:#adb5bd;border-radius:50%;font-size:15px;height:30px;left:18px;line-height:30px;position:absolute;text-align:center;top:0;width:30px}.timeline>.time-label>span{border-radius:4px;background-color:#fff;display:inline-block;font-weight:600;padding:5px}.timeline-inverse>div>.timeline-item{background:#babfc7;border:1px solid #dae1e7}.timeline-inverse>div>.timeline-item>.timeline-header{border-bottom-color:#dae1e7}.products-list{list-style:none;margin:0;padding:0}.products-list>.item{border-radius:.5rem;background:#fff;padding:10px 0}.products-list>.item:after{display:block;clear:both;content:\"\"}.products-list .product-img{float:left}.products-list .product-img img{height:50px;width:50px}.products-list .product-info{margin-left:60px}.products-list .product-title{font-weight:600}.products-list .product-description{color:#b8c2cc;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.product-list-in-card>.item{border-radius:0;border-bottom:1px solid rgba(34,41,47,.125)}.product-list-in-card>.item:last-of-type{border-bottom-width:0}.direct-chat .card-body{overflow-x:hidden;padding:0;position:relative}.direct-chat.chat-pane-open .direct-chat-contacts{transform:translate(0)}.direct-chat.timestamp-light .direct-chat-timestamp{color:#42484b}.direct-chat.timestamp-dark .direct-chat-timestamp{color:#ccc}.direct-chat-messages{transform:translate(0);height:250px;overflow:auto;padding:10px}.direct-chat-msg,.direct-chat-text{display:block}.direct-chat-msg{margin-bottom:10px}.direct-chat-msg:after{display:block;clear:both;content:\"\"}.direct-chat-contacts,.direct-chat-messages{transition:transform .5s ease-in-out}.direct-chat-text{border-radius:.6rem;background:#d2d6de;border:1px solid #d2d6de;color:#444;margin:5px 0 0 50px;padding:5px 10px;position:relative}.direct-chat-text:after,.direct-chat-text:before{border:solid transparent;border-right:solid #d2d6de;content:\" \";height:0;pointer-events:none;position:absolute;right:100%;top:15px;width:0}.direct-chat-text:after{border-width:5px;margin-top:-5px}.direct-chat-text:before{border-width:6px;margin-top:-6px}.right .direct-chat-text{margin-left:0;margin-right:50px}.right .direct-chat-text:after,.right .direct-chat-text:before{border-left-color:#d2d6de;border-right-color:transparent;left:100%;right:auto}.direct-chat-img{border-radius:50%;float:left;height:40px;width:40px}.right .direct-chat-img{float:right}.direct-chat-infos{display:block;font-size:1rem;margin-bottom:2px}.direct-chat-name{font-weight:600}.direct-chat-timestamp{color:#697582}.direct-chat-contacts-open .direct-chat-contacts{transform:translate(0)}.direct-chat-contacts{transform:translate(101%);background:#22292f;bottom:0;color:#fff;height:250px;overflow:auto;position:absolute;top:0;width:100%}.direct-chat-contacts-light{background:#f7f7f9}.direct-chat-contacts-light .contacts-list-name{color:#4e5154}.direct-chat-contacts-light .contacts-list-date{color:#b8c2cc}.direct-chat-contacts-light .contacts-list-msg{color:#9aa9b7}.contacts-list{padding-left:0;list-style:none}.contacts-list>li{border-bottom:1px solid rgba(34,41,47,.2);margin:0;padding:10px}.contacts-list>li:after{display:block;clear:both;content:\"\"}.contacts-list>li:last-of-type{border-bottom:0}.contacts-list-img{border-radius:50%;float:left;width:40px}.contacts-list-info{color:#fff;margin-left:45px}.contacts-list-name,.contacts-list-status{display:block}.contacts-list-name{font-weight:600}.contacts-list-status{font-size:1rem}.contacts-list-date{color:#636363;font-weight:400}.contacts-list-msg{color:#4a4a4a}.direct-chat-primary .right>.direct-chat-text{background:#586cb1;border-color:#586cb1;color:#fff}.direct-chat-primary .right>.direct-chat-text:after,.direct-chat-primary .right>.direct-chat-text:before{border-left-color:#586cb1}.direct-chat-secondary .right>.direct-chat-text{background:#b8c2cc;border-color:#b8c2cc;color:#2a2e30}.direct-chat-secondary .right>.direct-chat-text:after,.direct-chat-secondary .right>.direct-chat-text:before{border-left-color:#b8c2cc}.direct-chat-success .right>.direct-chat-text{background:#21b978;border-color:#21b978;color:#fff}.direct-chat-success .right>.direct-chat-text:after,.direct-chat-success .right>.direct-chat-text:before{border-left-color:#21b978}.direct-chat-info .right>.direct-chat-text{background:#4277cf;border-color:#4277cf;color:#fff}.direct-chat-info .right>.direct-chat-text:after,.direct-chat-info .right>.direct-chat-text:before{border-left-color:#4277cf}.direct-chat-warning .right>.direct-chat-text{background:#dda451;border-color:#dda451;color:#2a2e30}.direct-chat-warning .right>.direct-chat-text:after,.direct-chat-warning .right>.direct-chat-text:before{border-left-color:#dda451}.direct-chat-danger .right>.direct-chat-text{background:#ea5455;border-color:#ea5455;color:#fff}.direct-chat-danger .right>.direct-chat-text:after,.direct-chat-danger .right>.direct-chat-text:before{border-left-color:#ea5455}.direct-chat-light .right>.direct-chat-text{background:#f7f7f9;border-color:#f7f7f9;color:#2a2e30}.direct-chat-light .right>.direct-chat-text:after,.direct-chat-light .right>.direct-chat-text:before{border-left-color:#f7f7f9}.direct-chat-dark .right>.direct-chat-text{background:#22292f;border-color:#22292f;color:#fff}.direct-chat-dark .right>.direct-chat-text:after,.direct-chat-dark .right>.direct-chat-text:before{border-left-color:#22292f}.direct-chat-lightblue .right>.direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff}.direct-chat-lightblue .right>.direct-chat-text:after,.direct-chat-lightblue .right>.direct-chat-text:before{border-left-color:#3c8dbc}.direct-chat-navy .right>.direct-chat-text{background:#001f3f;border-color:#001f3f;color:#fff}.direct-chat-navy .right>.direct-chat-text:after,.direct-chat-navy .right>.direct-chat-text:before{border-left-color:#001f3f}.direct-chat-olive .right>.direct-chat-text{background:#3d9970;border-color:#3d9970;color:#fff}.direct-chat-olive .right>.direct-chat-text:after,.direct-chat-olive .right>.direct-chat-text:before{border-left-color:#3d9970}.direct-chat-lime .right>.direct-chat-text{background:#01ff70;border-color:#01ff70;color:#2a2e30}.direct-chat-lime .right>.direct-chat-text:after,.direct-chat-lime .right>.direct-chat-text:before{border-left-color:#01ff70}.direct-chat-fuchsia .right>.direct-chat-text{background:#f012be;border-color:#f012be;color:#fff}.direct-chat-fuchsia .right>.direct-chat-text:after,.direct-chat-fuchsia .right>.direct-chat-text:before{border-left-color:#f012be}.direct-chat-maroon .right>.direct-chat-text{background:#d81b60;border-color:#d81b60;color:#fff}.direct-chat-maroon .right>.direct-chat-text:after,.direct-chat-maroon .right>.direct-chat-text:before{border-left-color:#d81b60}.direct-chat-blue .right>.direct-chat-text{background:#3085d6;border-color:#3085d6;color:#fff}.direct-chat-blue .right>.direct-chat-text:after,.direct-chat-blue .right>.direct-chat-text:before{border-left-color:#3085d6}.direct-chat-indigo .right>.direct-chat-text{background:#5c6bc6;border-color:#5c6bc6;color:#fff}.direct-chat-indigo .right>.direct-chat-text:after,.direct-chat-indigo .right>.direct-chat-text:before{border-left-color:#5c6bc6}.direct-chat-purple .right>.direct-chat-text{background:#6f42c1;border-color:#6f42c1;color:#fff}.direct-chat-purple .right>.direct-chat-text:after,.direct-chat-purple .right>.direct-chat-text:before{border-left-color:#6f42c1}.direct-chat-pink .right>.direct-chat-text{background:#ff8acc;border-color:#ff8acc;color:#2a2e30}.direct-chat-pink .right>.direct-chat-text:after,.direct-chat-pink .right>.direct-chat-text:before{border-left-color:#ff8acc}.direct-chat-red .right>.direct-chat-text{background:#ea5455;border-color:#ea5455;color:#fff}.direct-chat-red .right>.direct-chat-text:after,.direct-chat-red .right>.direct-chat-text:before{border-left-color:#ea5455}.direct-chat-orange .right>.direct-chat-text{background:#dda451;border-color:#dda451;color:#2a2e30}.direct-chat-orange .right>.direct-chat-text:after,.direct-chat-orange .right>.direct-chat-text:before{border-left-color:#dda451}.direct-chat-yellow .right>.direct-chat-text{background:#edc30e;border-color:#edc30e;color:#2a2e30}.direct-chat-yellow .right>.direct-chat-text:after,.direct-chat-yellow .right>.direct-chat-text:before{border-left-color:#edc30e}.direct-chat-green .right>.direct-chat-text{background:#21b978;border-color:#21b978;color:#fff}.direct-chat-green .right>.direct-chat-text:after,.direct-chat-green .right>.direct-chat-text:before{border-left-color:#21b978}.direct-chat-teal .right>.direct-chat-text{background:#20c997;border-color:#20c997;color:#fff}.direct-chat-teal .right>.direct-chat-text:after,.direct-chat-teal .right>.direct-chat-text:before{border-left-color:#20c997}.direct-chat-cyan .right>.direct-chat-text{background:#7367f0;border-color:#7367f0;color:#fff}.direct-chat-cyan .right>.direct-chat-text:after,.direct-chat-cyan .right>.direct-chat-text:before{border-left-color:#7367f0}.direct-chat-white .right>.direct-chat-text{background:#fff;border-color:#fff;color:#2a2e30}.direct-chat-white .right>.direct-chat-text:after,.direct-chat-white .right>.direct-chat-text:before{border-left-color:#fff}.direct-chat-gray .right>.direct-chat-text{background:#b8c2cc;border-color:#b8c2cc;color:#2a2e30}.direct-chat-gray .right>.direct-chat-text:after,.direct-chat-gray .right>.direct-chat-text:before{border-left-color:#b8c2cc}.direct-chat-gray-dark .right>.direct-chat-text{background:#1e1e1e;border-color:#1e1e1e;color:#fff}.direct-chat-gray-dark .right>.direct-chat-text:after,.direct-chat-gray-dark .right>.direct-chat-text:before{border-left-color:#1e1e1e}.users-list{padding-left:0;list-style:none}.users-list>li{float:left;padding:10px;text-align:center;width:25%}.users-list>li img{border-radius:50%;height:auto;max-width:100%}.users-list>li>a:hover,.users-list>li>a:hover .users-list-name{color:#999}.users-list-date,.users-list-name{display:block}.users-list-name{color:#4e5154;font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.users-list-date{color:#748290;font-size:12px}.card-widget{border:0;position:relative}.widget-user .widget-user-header{border-top-left-radius:.5rem;border-top-right-radius:.5rem;height:135px;padding:1rem;text-align:center}.widget-user .widget-user-username{font-size:25px;font-weight:300;margin-bottom:0;margin-top:0;text-shadow:0 1px 1px rgba(34,41,47,.2)}.widget-user .widget-user-desc{margin-top:0}.widget-user .widget-user-image{left:50%;margin-left:-45px;position:absolute;top:80px}.widget-user .widget-user-image>img{border:3px solid #fff;height:auto;width:90px}.widget-user .card-footer{padding-top:50px}.widget-user-2 .widget-user-header{border-top-left-radius:.5rem;border-top-right-radius:.5rem;padding:1rem}.widget-user-2 .widget-user-username{font-size:25px;font-weight:300;margin-bottom:5px;margin-top:5px}.widget-user-2 .widget-user-desc{margin-top:0}.widget-user-2 .widget-user-desc,.widget-user-2 .widget-user-username{margin-left:75px}.widget-user-2 .widget-user-image>img{float:left;height:auto;width:65px}.mailbox-messages>.table{margin:0}.mailbox-controls{padding:5px}.mailbox-controls.with-border,.mailbox-read-info{border-bottom:1px solid rgba(34,41,47,.125)}.mailbox-read-info{padding:10px}.mailbox-read-info h3{font-size:20px;margin:0}.mailbox-read-info h5{margin:0;padding:5px 0 0}.mailbox-read-time{color:#999;font-size:13px}.mailbox-read-message{padding:10px}.mailbox-attachments{padding-left:0;list-style:none}.mailbox-attachments li{border:1px solid #eee;float:left;margin-bottom:10px;margin-right:10px;width:200px}.mailbox-attachment-name{color:#666;font-weight:700}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block}.mailbox-attachment-info{background:#babfc7;padding:10px}.mailbox-attachment-size{color:#999;font-size:12px}.mailbox-attachment-size>span{display:inline-block;padding-top:.75rem}.mailbox-attachment-icon{color:#666;font-size:65px;max-height:132.5px;padding:20px 10px;text-align:center}.mailbox-attachment-icon.has-img{padding:0}.mailbox-attachment-icon.has-img>img{height:auto;max-width:100%}.lockscreen{background:#ededed}.lockscreen .lockscreen-name{font-weight:600;text-align:center}.lockscreen-logo{font-size:35px;font-weight:300;margin-bottom:25px;text-align:center}.lockscreen-logo a{color:#4e5154}.lockscreen-wrapper{margin:10% auto 0;max-width:400px}.lockscreen-item{border-radius:4px;background:#fff;margin:10px auto 30px;padding:0;position:relative;width:290px}.lockscreen-image{border-radius:50%;background:#fff;left:-10px;padding:5px;position:absolute;top:-25px;z-index:10}.lockscreen-image>img{border-radius:50%;height:70px;width:70px}.lockscreen-credentials{margin-left:70px}.lockscreen-credentials .form-control{border:0}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px}.lockscreen-footer{margin-top:10px}.login-logo,.register-logo{font-size:2.1rem;font-weight:300;margin-bottom:.9rem;text-align:center}.login-logo a,.register-logo a{color:#4e5154}.login-page,.register-page{align-items:center;background:#ededed;display:flex;flex-direction:column;height:100vh;justify-content:center}.login-box,.register-box{width:360px}@media (max-width:576px){.login-box,.register-box{margin-top:.5rem;width:90%}}.login-card-body,.register-card-body{background:#fff;border-top:0;color:#666;padding:20px}.login-card-body .input-group .form-control,.register-card-body .input-group .form-control{border-right:0}.login-card-body .input-group .form-control:focus,.register-card-body .input-group .form-control:focus{box-shadow:none}.login-card-body .input-group .form-control:focus~.input-group-append .input-group-text,.register-card-body .input-group .form-control:focus~.input-group-append .input-group-text{border-color:#586cb1}.login-card-body .input-group .form-control.is-valid:focus,.register-card-body .input-group .form-control.is-valid:focus{box-shadow:none}.login-card-body .input-group .form-control.is-valid~.input-group-append .input-group-text,.register-card-body .input-group .form-control.is-valid~.input-group-append .input-group-text{border-color:#21b978}.login-card-body .input-group .form-control.is-invalid:focus,.register-card-body .input-group .form-control.is-invalid:focus{box-shadow:none}.login-card-body .input-group .form-control.is-invalid~.input-group-append .input-group-text,.register-card-body .input-group .form-control.is-invalid~.input-group-append .input-group-text{border-color:#ea5455}.login-card-body .input-group .input-group-text,.register-card-body .input-group .input-group-text{background-color:transparent;border-bottom-right-radius:.5rem;border-left:0;border-top-right-radius:.5rem;color:#777;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.login-box-msg,.register-box-msg{margin:0;padding:0 20px 20px;text-align:center}.social-auth-links{margin:10px 0}.error-page{margin:20px auto 0;width:600px}@media (max-width:767.98px){.error-page{width:100%}}.error-page>.headline{float:left;font-size:100px;font-weight:300}@media (max-width:767.98px){.error-page>.headline{float:none;text-align:center}}.error-page>.error-content{display:block;margin-left:190px}@media (max-width:767.98px){.error-page>.error-content{margin-left:0}}.error-page>.error-content>h3{font-size:25px;font-weight:300}@media (max-width:767.98px){.error-page>.error-content>h3{text-align:center}}.invoice{background:#fff;border:1px solid rgba(34,41,47,.125);position:relative}.invoice-title{margin-top:0}.profile-user-img{border:3px solid #adb5bd;margin:0 auto;padding:3px;width:100px}.profile-username{font-size:21px;margin-top:5px}.post{border-bottom:1px solid #adb5bd;color:#666;margin-bottom:15px;padding-bottom:15px}.post:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0}.post .user-block{margin-bottom:15px;width:100%}.post .row{width:100%}.product-image{max-width:100%;height:auto;width:100%}.product-image-thumbs{align-items:stretch;display:flex;margin-top:2rem}.product-image-thumb{border-radius:.5rem;background-color:#eff1f7;border:1px solid #dae1e7;display:flex;margin-right:1rem;max-width:7rem;padding:.5rem}.product-image-thumb img{max-width:100%;height:auto;align-self:center}.product-image-thumb:hover{opacity:.5}.product-share a{margin-right:.5rem}.projects td{vertical-align:middle}.projects .list-inline{margin-bottom:0}.projects .table-avatar img,.projects img.table-avatar{border-radius:50%;display:inline;width:2.5rem}.projects .project-state{text-align:center}.fc-button{background:#babfc7;background-image:none;border-color:#ddd;color:#4e5154}.fc-button.hover,.fc-button:active,.fc-button:hover{background-color:#e9e9e9}.fc-header-title h2{color:#666;font-size:15px;line-height:1.6em;margin-left:10px}.fc-header-right{padding-right:10px}.fc-header-left{padding-left:10px}.fc-widget-header{background:#fafafa}.fc-grid{border:0;width:100%}.fc-widget-content:first-of-type,.fc-widget-header:first-of-type{border-left:0;border-right:0}.fc-widget-content:last-of-type,.fc-widget-header:last-of-type{border-right:0}.fc-toolbar,.fc-toolbar.fc-header-toolbar{margin:0;padding:1rem}@media (max-width:575.98px){.fc-toolbar{flex-direction:column}.fc-toolbar .fc-left{order:1;margin-bottom:.5rem}.fc-toolbar .fc-center{order:0;margin-bottom:.375rem}.fc-toolbar .fc-right{order:2}}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px}.fc-color-picker{list-style:none;margin:0;padding:0}.fc-color-picker>li{float:left;font-size:30px;line-height:30px;margin-right:5px}.fc-color-picker>li .fa,.fc-color-picker>li .fab,.fc-color-picker>li .far,.fc-color-picker>li .fas,.fc-color-picker>li .glyphicon,.fc-color-picker>li .ion{transition:transform .3s linear}.fc-color-picker>li .fa:hover,.fc-color-picker>li .fab:hover,.fc-color-picker>li .far:hover,.fc-color-picker>li .fas:hover,.fc-color-picker>li .glyphicon:hover,.fc-color-picker>li .ion:hover{transform:rotate(30deg)}#add-new-event{transition:all .3s linear}.external-event{border-radius:.5rem;cursor:move;font-weight:700;margin-bottom:4px;padding:5px 10px}.select2-container--default .select2-selection--single{border:1px solid rgba(0,0,0,.2);padding:.875rem .7rem;height:34px}.select2-container--default.select2-container--open .select2-selection--single{border-color:#afb9da}.select2-container--default .select2-dropdown{border:1px solid rgba(0,0,0,.2)}.select2-container--default .select2-results__option{padding:6px 12px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container--default .select2-selection--single .select2-selection__rendered{padding-left:0;height:auto;margin-top:-3px}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:31px;right:6px}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0}.select2-container--default .select2-dropdown .select2-search__field,.select2-container--default .select2-search--inline .select2-search__field{border:1px solid rgba(0,0,0,.2)}.select2-container--default .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-search--inline .select2-search__field:focus{outline:none;border:1px solid #586cb1}.select2-container--default .select2-dropdown.select2-dropdown--below{border-top:0}.select2-container--default .select2-dropdown.select2-dropdown--above{border-bottom:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#b8c2cc}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#dae1e7}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#2a2e30}.select2-container--default .select2-results__option--highlighted{background-color:#586cb1;color:#fff}.select2-container--default .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#4f64aa;color:#fff}.select2-container--default .select2-selection--multiple{border:1px solid rgba(0,0,0,.2);min-height:34px}.select2-container--default .select2-selection--multiple:focus{border-color:#586cb1}.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .35rem .7rem;margin-bottom:-.35rem}.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline{width:100%;margin-left:.35rem}.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline .select2-search__field{width:100%!important}.select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field{border:0;margin-top:6px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#586cb1;border-color:#4c60a3;color:#fff;padding:0 10px;margin-top:.31rem}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7);float:right;margin-left:5px;margin-right:-2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-selection--multiple.text-sm .select2-search.select2-search--inline .select2-search__field,.text-sm .select2-container--default .select2-selection--multiple .select2-search.select2-search--inline .select2-search__field{margin-top:8px}.select2-container--default .select2-selection--multiple.text-sm .select2-selection__choice,.text-sm .select2-container--default .select2-selection--multiple .select2-selection__choice{margin-top:.4rem}.select2-container--default.select2-container--focus .select2-selection--multiple,.select2-container--default.select2-container--focus .select2-selection--single{border-color:#586cb1}.select2-container--default.select2-container--focus .select2-search__field{border:0}.select2-container--default .select2-selection--single .select2-selection__rendered li{padding-right:10px}.input-group-prepend~.select2-container--default .select2-selection{border-bottom-left-radius:0;border-top-left-radius:0}.input-group>.select2-container--default:not(:last-child) .select2-selection{border-bottom-right-radius:0;border-top-right-radius:0}.select2-container--bootstrap4.select2-container--focus .select2-selection{box-shadow:none}select.form-control-sm~.select2-container--default{font-size:1rem}.text-sm .select2-container--default .select2-selection--single,select.form-control-sm~.select2-container--default .select2-selection--single{height:2rem}.text-sm .select2-container--default .select2-selection--single .select2-selection__rendered,select.form-control-sm~.select2-container--default .select2-selection--single .select2-selection__rendered{margin-top:-.4rem}.text-sm .select2-container--default .select2-selection--single .select2-selection__arrow,select.form-control-sm~.select2-container--default .select2-selection--single .select2-selection__arrow{top:-.12rem}.text-sm .select2-container--default .select2-selection--multiple,select.form-control-sm~.select2-container--default .select2-selection--multiple{min-height:2rem}.text-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered,select.form-control-sm~.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .75rem .5rem;margin-top:-.3rem}.text-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline,select.form-control-sm~.select2-container--default .select2-selection--multiple .select2-selection__rendered li:first-child.select2-search.select2-search--inline{margin-left:.75rem}.text-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field,select.form-control-sm~.select2-container--default .select2-selection--multiple .select2-selection__rendered .select2-search.select2-search--inline .select2-search__field{margin-top:6px}.select2-primary+.select2-container--default.select2-container--focus .select2-selection--single,.select2-primary+.select2-container--default.select2-container--open .select2-selection--single{border-color:#afb9da}.select2-container--default .select2-primary.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-primary .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-primary .select2-search--inline .select2-search__field:focus,.select2-primary .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-primary .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-primary .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #afb9da}.select2-container--default .select2-primary .select2-results__option--highlighted,.select2-primary .select2-container--default .select2-results__option--highlighted{background-color:#586cb1;color:#fff}.select2-container--default .select2-primary .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-primary .select2-results__option--highlighted[aria-selected]:hover,.select2-primary .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-primary .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#4f64aa;color:#fff}.select2-container--default .select2-primary .select2-selection--multiple:focus,.select2-primary .select2-container--default .select2-selection--multiple:focus{border-color:#afb9da}.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice,.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#586cb1;border-color:#4c60a3;color:#fff}.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice__remove,.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-primary .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-primary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-primary.select2-container--focus .select2-selection--multiple,.select2-primary .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#afb9da}.select2-secondary+.select2-container--default.select2-container--focus .select2-selection--single,.select2-secondary+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-secondary.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-secondary .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-secondary .select2-search--inline .select2-search__field:focus,.select2-secondary .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-secondary .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-secondary .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-secondary .select2-results__option--highlighted,.select2-secondary .select2-container--default .select2-results__option--highlighted{background-color:#b8c2cc;color:#2a2e30}.select2-container--default .select2-secondary .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-secondary .select2-results__option--highlighted[aria-selected]:hover,.select2-secondary .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-secondary .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#afbac6;color:#2a2e30}.select2-container--default .select2-secondary .select2-selection--multiple:focus,.select2-secondary .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice,.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#b8c2cc;border-color:#a9b5c1;color:#2a2e30}.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice__remove,.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-secondary .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-secondary .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-secondary.select2-container--focus .select2-selection--multiple,.select2-secondary .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-success+.select2-container--default.select2-container--focus .select2-selection--single,.select2-success+.select2-container--default.select2-container--open .select2-selection--single{border-color:#73e6b5}.select2-container--default .select2-success.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-success .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-success .select2-search--inline .select2-search__field:focus,.select2-success .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-success .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-success .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #73e6b5}.select2-container--default .select2-success .select2-results__option--highlighted,.select2-success .select2-container--default .select2-results__option--highlighted{background-color:#21b978;color:#fff}.select2-container--default .select2-success .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-success .select2-results__option--highlighted[aria-selected]:hover,.select2-success .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-success .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1fac70;color:#fff}.select2-container--default .select2-success .select2-selection--multiple:focus,.select2-success .select2-container--default .select2-selection--multiple:focus{border-color:#73e6b5}.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice,.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#21b978;border-color:#1da36a;color:#fff}.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice__remove,.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-success .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-success .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-success.select2-container--focus .select2-selection--multiple,.select2-success .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#73e6b5}.select2-info+.select2-container--default.select2-container--focus .select2-selection--single,.select2-info+.select2-container--default.select2-container--open .select2-selection--single{border-color:#a8c0e9}.select2-container--default .select2-info.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-info .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-info .select2-search--inline .select2-search__field:focus,.select2-info .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-info .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-info .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #a8c0e9}.select2-container--default .select2-info .select2-results__option--highlighted,.select2-info .select2-container--default .select2-results__option--highlighted{background-color:#4277cf;color:#fff}.select2-container--default .select2-info .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-info .select2-results__option--highlighted[aria-selected]:hover,.select2-info .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-info .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#366ecc;color:#fff}.select2-container--default .select2-info .select2-selection--multiple:focus,.select2-info .select2-container--default .select2-selection--multiple:focus{border-color:#a8c0e9}.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice,.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#4277cf;border-color:#3269c5;color:#fff}.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice__remove,.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-info .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-info .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-info.select2-container--focus .select2-selection--multiple,.select2-info .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#a8c0e9}.select2-warning+.select2-container--default.select2-container--focus .select2-selection--single,.select2-warning+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f2dcbc}.select2-container--default .select2-warning.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-warning .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-warning .select2-search--inline .select2-search__field:focus,.select2-warning .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-warning .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-warning .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f2dcbc}.select2-container--default .select2-warning .select2-results__option--highlighted,.select2-warning .select2-container--default .select2-results__option--highlighted{background-color:#dda451;color:#2a2e30}.select2-container--default .select2-warning .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-warning .select2-results__option--highlighted[aria-selected]:hover,.select2-warning .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-warning .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#da9d44;color:#2a2e30}.select2-container--default .select2-warning .select2-selection--multiple:focus,.select2-warning .select2-container--default .select2-selection--multiple:focus{border-color:#f2dcbc}.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice,.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#dda451;border-color:#d9993c;color:#2a2e30}.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice__remove,.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-warning .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-warning .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-warning.select2-container--focus .select2-selection--multiple,.select2-warning .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f2dcbc}.select2-danger+.select2-container--default.select2-container--focus .select2-selection--single,.select2-danger+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f8c6c6}.select2-container--default .select2-danger.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-danger .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-danger .select2-search--inline .select2-search__field:focus,.select2-danger .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-danger .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-danger .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f8c6c6}.select2-container--default .select2-danger .select2-results__option--highlighted,.select2-danger .select2-container--default .select2-results__option--highlighted{background-color:#ea5455;color:#fff}.select2-container--default .select2-danger .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-danger .select2-results__option--highlighted[aria-selected]:hover,.select2-danger .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-danger .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#e84647;color:#fff}.select2-container--default .select2-danger .select2-selection--multiple:focus,.select2-danger .select2-container--default .select2-selection--multiple:focus{border-color:#f8c6c6}.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice,.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ea5455;border-color:#e73d3e;color:#fff}.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice__remove,.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-danger .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-danger .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-danger.select2-container--focus .select2-selection--multiple,.select2-danger .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f8c6c6}.select2-light+.select2-container--default.select2-container--focus .select2-selection--single,.select2-light+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-light.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-light .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-light .select2-search--inline .select2-search__field:focus,.select2-light .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-light .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-light .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-light .select2-results__option--highlighted,.select2-light .select2-container--default .select2-results__option--highlighted{background-color:#f7f7f9;color:#2a2e30}.select2-container--default .select2-light .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-light .select2-results__option--highlighted[aria-selected]:hover,.select2-light .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-light .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#eeeef2;color:#2a2e30}.select2-container--default .select2-light .select2-selection--multiple:focus,.select2-light .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice,.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#f7f7f9;border-color:#e8e8ee;color:#2a2e30}.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice__remove,.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-light .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-light .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-light.select2-container--focus .select2-selection--multiple,.select2-light .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-dark+.select2-container--default.select2-container--focus .select2-selection--single,.select2-dark+.select2-container--default.select2-container--open .select2-selection--single{border-color:#586a79}.select2-container--default .select2-dark.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-dark .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-dark .select2-search--inline .select2-search__field:focus,.select2-dark .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-dark .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-dark .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #586a79}.select2-container--default .select2-dark .select2-results__option--highlighted,.select2-dark .select2-container--default .select2-results__option--highlighted{background-color:#22292f;color:#fff}.select2-container--default .select2-dark .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-dark .select2-results__option--highlighted[aria-selected]:hover,.select2-dark .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-dark .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1c2126;color:#fff}.select2-container--default .select2-dark .select2-selection--multiple:focus,.select2-dark .select2-container--default .select2-selection--multiple:focus{border-color:#586a79}.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice,.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#22292f;border-color:#171c20;color:#fff}.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice__remove,.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-dark .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-dark.select2-container--focus .select2-selection--multiple,.select2-dark .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#586a79}.select2-lightblue+.select2-container--default.select2-container--focus .select2-selection--single,.select2-lightblue+.select2-container--default.select2-container--open .select2-selection--single{border-color:#99c5de}.select2-container--default .select2-lightblue.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lightblue .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lightblue .select2-search--inline .select2-search__field:focus,.select2-lightblue .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-lightblue .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-lightblue .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #99c5de}.select2-container--default .select2-lightblue .select2-results__option--highlighted,.select2-lightblue .select2-container--default .select2-results__option--highlighted{background-color:#3c8dbc;color:#fff}.select2-container--default .select2-lightblue .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-lightblue .select2-results__option--highlighted[aria-selected]:hover,.select2-lightblue .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-lightblue .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#3884b0;color:#fff}.select2-container--default .select2-lightblue .select2-selection--multiple:focus,.select2-lightblue .select2-container--default .select2-selection--multiple:focus{border-color:#99c5de}.select2-container--default .select2-lightblue .select2-selection--multiple .select2-selection__choice,.select2-lightblue .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;color:#fff}.select2-container--default .select2-lightblue .select2-selection--multiple .select2-selection__choice__remove,.select2-lightblue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-lightblue .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-lightblue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-lightblue.select2-container--focus .select2-selection--multiple,.select2-lightblue .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#99c5de}.select2-navy+.select2-container--default.select2-container--focus .select2-selection--single,.select2-navy+.select2-container--default.select2-container--open .select2-selection--single{border-color:#005ebf}.select2-container--default .select2-navy.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-navy .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-navy .select2-search--inline .select2-search__field:focus,.select2-navy .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-navy .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-navy .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #005ebf}.select2-container--default .select2-navy .select2-results__option--highlighted,.select2-navy .select2-container--default .select2-results__option--highlighted{background-color:#001f3f;color:#fff}.select2-container--default .select2-navy .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-navy .select2-results__option--highlighted[aria-selected]:hover,.select2-navy .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-navy .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#001730;color:#fff}.select2-container--default .select2-navy .select2-selection--multiple:focus,.select2-navy .select2-container--default .select2-selection--multiple:focus{border-color:#005ebf}.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice,.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#001f3f;border-color:#001226;color:#fff}.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice__remove,.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-navy .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-navy .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-navy.select2-container--focus .select2-selection--multiple,.select2-navy .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#005ebf}.select2-olive+.select2-container--default.select2-container--focus .select2-selection--single,.select2-olive+.select2-container--default.select2-container--open .select2-selection--single{border-color:#87cfaf}.select2-container--default .select2-olive.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-olive .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-olive .select2-search--inline .select2-search__field:focus,.select2-olive .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-olive .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-olive .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #87cfaf}.select2-container--default .select2-olive .select2-results__option--highlighted,.select2-olive .select2-container--default .select2-results__option--highlighted{background-color:#3d9970;color:#fff}.select2-container--default .select2-olive .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-olive .select2-results__option--highlighted[aria-selected]:hover,.select2-olive .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-olive .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#398e68;color:#fff}.select2-container--default .select2-olive .select2-selection--multiple:focus,.select2-olive .select2-container--default .select2-selection--multiple:focus{border-color:#87cfaf}.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice,.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3d9970;border-color:#368763;color:#fff}.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice__remove,.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-olive .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-olive .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-olive.select2-container--focus .select2-selection--multiple,.select2-olive .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#87cfaf}.select2-lime+.select2-container--default.select2-container--focus .select2-selection--single,.select2-lime+.select2-container--default.select2-container--open .select2-selection--single{border-color:#81ffb8}.select2-container--default .select2-lime.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lime .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-lime .select2-search--inline .select2-search__field:focus,.select2-lime .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-lime .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-lime .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #81ffb8}.select2-container--default .select2-lime .select2-results__option--highlighted,.select2-lime .select2-container--default .select2-results__option--highlighted{background-color:#01ff70;color:#2a2e30}.select2-container--default .select2-lime .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-lime .select2-results__option--highlighted[aria-selected]:hover,.select2-lime .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-lime .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#00f169;color:#2a2e30}.select2-container--default .select2-lime .select2-selection--multiple:focus,.select2-lime .select2-container--default .select2-selection--multiple:focus{border-color:#81ffb8}.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice,.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#01ff70;border-color:#00e765;color:#2a2e30}.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice__remove,.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-lime .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-lime .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-lime.select2-container--focus .select2-selection--multiple,.select2-lime .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#81ffb8}.select2-fuchsia+.select2-container--default.select2-container--focus .select2-selection--single,.select2-fuchsia+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f88adf}.select2-container--default .select2-fuchsia.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-fuchsia .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-fuchsia .select2-search--inline .select2-search__field:focus,.select2-fuchsia .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-fuchsia .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-fuchsia .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f88adf}.select2-container--default .select2-fuchsia .select2-results__option--highlighted,.select2-fuchsia .select2-container--default .select2-results__option--highlighted{background-color:#f012be;color:#fff}.select2-container--default .select2-fuchsia .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-fuchsia .select2-results__option--highlighted[aria-selected]:hover,.select2-fuchsia .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-fuchsia .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#e40eb4;color:#fff}.select2-container--default .select2-fuchsia .select2-selection--multiple:focus,.select2-fuchsia .select2-container--default .select2-selection--multiple:focus{border-color:#f88adf}.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice,.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#f012be;border-color:#db0ead;color:#fff}.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice__remove,.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-fuchsia .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-fuchsia .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-fuchsia.select2-container--focus .select2-selection--multiple,.select2-fuchsia .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f88adf}.select2-maroon+.select2-container--default.select2-container--focus .select2-selection--single,.select2-maroon+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f083ab}.select2-container--default .select2-maroon.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-maroon .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-maroon .select2-search--inline .select2-search__field:focus,.select2-maroon .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-maroon .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-maroon .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f083ab}.select2-container--default .select2-maroon .select2-results__option--highlighted,.select2-maroon .select2-container--default .select2-results__option--highlighted{background-color:#d81b60;color:#fff}.select2-container--default .select2-maroon .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-maroon .select2-results__option--highlighted[aria-selected]:hover,.select2-maroon .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-maroon .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#ca195a;color:#fff}.select2-container--default .select2-maroon .select2-selection--multiple:focus,.select2-maroon .select2-container--default .select2-selection--multiple:focus{border-color:#f083ab}.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice,.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#d81b60;border-color:#c11856;color:#fff}.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice__remove,.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-maroon .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-maroon .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-maroon.select2-container--focus .select2-selection--multiple,.select2-maroon .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f083ab}.select2-blue+.select2-container--default.select2-container--focus .select2-selection--single,.select2-blue+.select2-container--default.select2-container--open .select2-selection--single{border-color:#9ac4eb}.select2-blue .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-blue .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-blue .select2-container--default .select2-search--inline .select2-search__field:focus,.select2-container--default .select2-blue.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-blue .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-blue .select2-search--inline .select2-search__field:focus{border:1px solid #9ac4eb}.select2-blue .select2-container--default .select2-results__option--highlighted,.select2-container--default .select2-blue .select2-results__option--highlighted{background-color:#3085d6;color:#fff}.select2-blue .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-blue .select2-container--default .select2-results__option--highlighted[aria-selected]:hover,.select2-container--default .select2-blue .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-blue .select2-results__option--highlighted[aria-selected]:hover{background-color:#297dce;color:#fff}.select2-blue .select2-container--default .select2-selection--multiple:focus,.select2-container--default .select2-blue .select2-selection--multiple:focus{border-color:#9ac4eb}.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice,.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice{background-color:#3085d6;border-color:#2778c5;color:#fff}.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove,.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-blue .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-container--default .select2-blue .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-blue .select2-container--default.select2-container--focus .select2-selection--multiple,.select2-container--default .select2-blue.select2-container--focus .select2-selection--multiple{border-color:#9ac4eb}.select2-indigo+.select2-container--default.select2-container--focus .select2-selection--single,.select2-indigo+.select2-container--default.select2-container--open .select2-selection--single{border-color:#bac1e7}.select2-container--default .select2-indigo.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-indigo .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-indigo .select2-search--inline .select2-search__field:focus,.select2-indigo .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-indigo .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-indigo .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #bac1e7}.select2-container--default .select2-indigo .select2-results__option--highlighted,.select2-indigo .select2-container--default .select2-results__option--highlighted{background-color:#5c6bc6;color:#fff}.select2-container--default .select2-indigo .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-indigo .select2-results__option--highlighted[aria-selected]:hover,.select2-indigo .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-indigo .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#5161c2;color:#fff}.select2-container--default .select2-indigo .select2-selection--multiple:focus,.select2-indigo .select2-container--default .select2-selection--multiple:focus{border-color:#bac1e7}.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice,.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#5c6bc6;border-color:#495abf;color:#fff}.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice__remove,.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-indigo .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-indigo .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-indigo.select2-container--focus .select2-selection--multiple,.select2-indigo .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#bac1e7}.select2-purple+.select2-container--default.select2-container--focus .select2-selection--single,.select2-purple+.select2-container--default.select2-container--open .select2-selection--single{border-color:#b8a2e0}.select2-container--default .select2-purple.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-purple .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-purple .select2-search--inline .select2-search__field:focus,.select2-purple .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-purple .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-purple .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #b8a2e0}.select2-container--default .select2-purple .select2-results__option--highlighted,.select2-purple .select2-container--default .select2-results__option--highlighted{background-color:#6f42c1;color:#fff}.select2-container--default .select2-purple .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-purple .select2-results__option--highlighted[aria-selected]:hover,.select2-purple .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-purple .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#683cb8;color:#fff}.select2-container--default .select2-purple .select2-selection--multiple:focus,.select2-purple .select2-container--default .select2-selection--multiple:focus{border-color:#b8a2e0}.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice,.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#6f42c1;border-color:#643ab0;color:#fff}.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice__remove,.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-purple .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-purple .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-purple.select2-container--focus .select2-selection--multiple,.select2-purple .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#b8a2e0}.select2-pink+.select2-container--default.select2-container--focus .select2-selection--single,.select2-pink+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-pink.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-pink .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-pink .select2-search--inline .select2-search__field:focus,.select2-pink .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-pink .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-pink .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-pink .select2-results__option--highlighted,.select2-pink .select2-container--default .select2-results__option--highlighted{background-color:#ff8acc;color:#2a2e30}.select2-container--default .select2-pink .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-pink .select2-results__option--highlighted[aria-selected]:hover,.select2-pink .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-pink .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#ff7bc5;color:#2a2e30}.select2-container--default .select2-pink .select2-selection--multiple:focus,.select2-pink .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice,.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ff8acc;border-color:#ff71c1;color:#2a2e30}.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice__remove,.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-pink .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-pink .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-pink.select2-container--focus .select2-selection--multiple,.select2-pink .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-red+.select2-container--default.select2-container--focus .select2-selection--single,.select2-red+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f8c6c6}.select2-container--default .select2-red.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-red .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-red .select2-search--inline .select2-search__field:focus,.select2-red .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-red .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-red .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f8c6c6}.select2-container--default .select2-red .select2-results__option--highlighted,.select2-red .select2-container--default .select2-results__option--highlighted{background-color:#ea5455;color:#fff}.select2-container--default .select2-red .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-red .select2-results__option--highlighted[aria-selected]:hover,.select2-red .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-red .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#e84647;color:#fff}.select2-container--default .select2-red .select2-selection--multiple:focus,.select2-red .select2-container--default .select2-selection--multiple:focus{border-color:#f8c6c6}.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice,.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#ea5455;border-color:#e73d3e;color:#fff}.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice__remove,.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-red .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-red .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-red.select2-container--focus .select2-selection--multiple,.select2-red .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f8c6c6}.select2-orange+.select2-container--default.select2-container--focus .select2-selection--single,.select2-orange+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f2dcbc}.select2-container--default .select2-orange.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-orange .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-orange .select2-search--inline .select2-search__field:focus,.select2-orange .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-orange .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-orange .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f2dcbc}.select2-container--default .select2-orange .select2-results__option--highlighted,.select2-orange .select2-container--default .select2-results__option--highlighted{background-color:#dda451;color:#2a2e30}.select2-container--default .select2-orange .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-orange .select2-results__option--highlighted[aria-selected]:hover,.select2-orange .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-orange .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#da9d44;color:#2a2e30}.select2-container--default .select2-orange .select2-selection--multiple:focus,.select2-orange .select2-container--default .select2-selection--multiple:focus{border-color:#f2dcbc}.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice,.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#dda451;border-color:#d9993c;color:#2a2e30}.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice__remove,.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-orange .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-orange .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-orange.select2-container--focus .select2-selection--multiple,.select2-orange .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f2dcbc}.select2-yellow+.select2-container--default.select2-container--focus .select2-selection--single,.select2-yellow+.select2-container--default.select2-container--open .select2-selection--single{border-color:#f8e283}.select2-container--default .select2-yellow.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-yellow .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-yellow .select2-search--inline .select2-search__field:focus,.select2-yellow .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-yellow .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-yellow .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #f8e283}.select2-container--default .select2-yellow .select2-results__option--highlighted,.select2-yellow .select2-container--default .select2-results__option--highlighted{background-color:#edc30e;color:#2a2e30}.select2-container--default .select2-yellow .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-yellow .select2-results__option--highlighted[aria-selected]:hover,.select2-yellow .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-yellow .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#dfb70d;color:#2a2e30}.select2-container--default .select2-yellow .select2-selection--multiple:focus,.select2-yellow .select2-container--default .select2-selection--multiple:focus{border-color:#f8e283}.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice,.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#edc30e;border-color:#d5af0d;color:#2a2e30}.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice__remove,.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-yellow .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-yellow .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-yellow.select2-container--focus .select2-selection--multiple,.select2-yellow .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#f8e283}.select2-green+.select2-container--default.select2-container--focus .select2-selection--single,.select2-green+.select2-container--default.select2-container--open .select2-selection--single{border-color:#73e6b5}.select2-container--default .select2-green.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-green .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-green .select2-search--inline .select2-search__field:focus,.select2-green .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-green .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-green .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #73e6b5}.select2-container--default .select2-green .select2-results__option--highlighted,.select2-green .select2-container--default .select2-results__option--highlighted{background-color:#21b978;color:#fff}.select2-container--default .select2-green .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-green .select2-results__option--highlighted[aria-selected]:hover,.select2-green .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-green .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1fac70;color:#fff}.select2-container--default .select2-green .select2-selection--multiple:focus,.select2-green .select2-container--default .select2-selection--multiple:focus{border-color:#73e6b5}.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice,.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#21b978;border-color:#1da36a;color:#fff}.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice__remove,.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-green .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-green .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-green.select2-container--focus .select2-selection--multiple,.select2-green .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#73e6b5}.select2-teal+.select2-container--default.select2-container--focus .select2-selection--single,.select2-teal+.select2-container--default.select2-container--open .select2-selection--single{border-color:#7eeaca}.select2-container--default .select2-teal.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-teal .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-teal .select2-search--inline .select2-search__field:focus,.select2-teal .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-teal .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-teal .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #7eeaca}.select2-container--default .select2-teal .select2-results__option--highlighted,.select2-teal .select2-container--default .select2-results__option--highlighted{background-color:#20c997;color:#fff}.select2-container--default .select2-teal .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-teal .select2-results__option--highlighted[aria-selected]:hover,.select2-teal .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-teal .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#1ebc8d;color:#fff}.select2-container--default .select2-teal .select2-selection--multiple:focus,.select2-teal .select2-container--default .select2-selection--multiple:focus{border-color:#7eeaca}.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice,.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#20c997;border-color:#1cb386;color:#fff}.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice__remove,.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-teal .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-teal .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-teal.select2-container--focus .select2-selection--multiple,.select2-teal .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#7eeaca}.select2-cyan+.select2-container--default.select2-container--focus .select2-selection--single,.select2-cyan+.select2-container--default.select2-container--open .select2-selection--single{border-color:#dedbfb}.select2-container--default .select2-cyan.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-cyan .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-cyan .select2-search--inline .select2-search__field:focus,.select2-cyan .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-cyan .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-cyan .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #dedbfb}.select2-container--default .select2-cyan .select2-results__option--highlighted,.select2-cyan .select2-container--default .select2-results__option--highlighted{background-color:#7367f0;color:#fff}.select2-container--default .select2-cyan .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-cyan .select2-results__option--highlighted[aria-selected]:hover,.select2-cyan .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-cyan .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#6659ef;color:#fff}.select2-container--default .select2-cyan .select2-selection--multiple:focus,.select2-cyan .select2-container--default .select2-selection--multiple:focus{border-color:#dedbfb}.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice,.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#7367f0;border-color:#5e50ee;color:#fff}.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice__remove,.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-cyan .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-cyan .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-cyan.select2-container--focus .select2-selection--multiple,.select2-cyan .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#dedbfb}.select2-white+.select2-container--default.select2-container--focus .select2-selection--single,.select2-white+.select2-container--default.select2-container--open .select2-selection--single{border-color:#fff}.select2-container--default .select2-white.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-white .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-white .select2-search--inline .select2-search__field:focus,.select2-white .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-white .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-white .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-white .select2-results__option--highlighted,.select2-white .select2-container--default .select2-results__option--highlighted{background-color:#fff;color:#2a2e30}.select2-container--default .select2-white .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-white .select2-results__option--highlighted[aria-selected]:hover,.select2-white .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-white .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#f7f7f7;color:#2a2e30}.select2-container--default .select2-white .select2-selection--multiple:focus,.select2-white .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice,.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#fff;border-color:#f2f2f2;color:#2a2e30}.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice__remove,.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-white .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-white .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-white.select2-container--focus .select2-selection--multiple,.select2-gray+.select2-container--default.select2-container--focus .select2-selection--single,.select2-gray+.select2-container--default.select2-container--open .select2-selection--single,.select2-white .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-container--default .select2-gray.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray .select2-search--inline .select2-search__field:focus,.select2-gray .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-gray .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-gray .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #fff}.select2-container--default .select2-gray .select2-results__option--highlighted,.select2-gray .select2-container--default .select2-results__option--highlighted{background-color:#b8c2cc;color:#2a2e30}.select2-container--default .select2-gray .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-gray .select2-results__option--highlighted[aria-selected]:hover,.select2-gray .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-gray .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#afbac6;color:#2a2e30}.select2-container--default .select2-gray .select2-selection--multiple:focus,.select2-gray .select2-container--default .select2-selection--multiple:focus{border-color:#fff}.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice,.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#b8c2cc;border-color:#a9b5c1;color:#2a2e30}.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice__remove,.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:rgba(42,46,48,.7)}.select2-container--default .select2-gray .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-gray .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#2a2e30}.select2-container--default .select2-gray.select2-container--focus .select2-selection--multiple,.select2-gray .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#fff}.select2-gray-dark+.select2-container--default.select2-container--focus .select2-selection--single,.select2-gray-dark+.select2-container--default.select2-container--open .select2-selection--single{border-color:#5e5e5e}.select2-container--default .select2-gray-dark.select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray-dark .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-gray-dark .select2-search--inline .select2-search__field:focus,.select2-gray-dark .select2-container--default.select2-dropdown .select2-search__field:focus,.select2-gray-dark .select2-container--default .select2-dropdown .select2-search__field:focus,.select2-gray-dark .select2-container--default .select2-search--inline .select2-search__field:focus{border:1px solid #5e5e5e}.select2-container--default .select2-gray-dark .select2-results__option--highlighted,.select2-gray-dark .select2-container--default .select2-results__option--highlighted{background-color:#1e1e1e;color:#fff}.select2-container--default .select2-gray-dark .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-gray-dark .select2-results__option--highlighted[aria-selected]:hover,.select2-gray-dark .select2-container--default .select2-results__option--highlighted[aria-selected],.select2-gray-dark .select2-container--default .select2-results__option--highlighted[aria-selected]:hover{background-color:#161616;color:#fff}.select2-container--default .select2-gray-dark .select2-selection--multiple:focus,.select2-gray-dark .select2-container--default .select2-selection--multiple:focus{border-color:#5e5e5e}.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice,.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#1e1e1e;border-color:#111;color:#fff}.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice__remove,.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:hsla(0,0%,100%,.7)}.select2-container--default .select2-gray-dark .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-gray-dark .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container--default .select2-gray-dark.select2-container--focus .select2-selection--multiple,.select2-gray-dark .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#5e5e5e}.slider .tooltip.in{opacity:.9}.slider.slider-vertical{height:100%}.slider.slider-horizontal{width:100%}.slider-primary .slider .slider-selection{background:#586cb1}.slider-secondary .slider .slider-selection{background:#b8c2cc}.slider-success .slider .slider-selection{background:#21b978}.slider-info .slider .slider-selection{background:#4277cf}.slider-warning .slider .slider-selection{background:#dda451}.slider-danger .slider .slider-selection{background:#ea5455}.slider-light .slider .slider-selection{background:#f7f7f9}.slider-dark .slider .slider-selection{background:#22292f}.slider-lightblue .slider .slider-selection{background:#3c8dbc}.slider-navy .slider .slider-selection{background:#001f3f}.slider-olive .slider .slider-selection{background:#3d9970}.slider-lime .slider .slider-selection{background:#01ff70}.slider-fuchsia .slider .slider-selection{background:#f012be}.slider-maroon .slider .slider-selection{background:#d81b60}.slider-blue .slider .slider-selection{background:#3085d6}.slider-indigo .slider .slider-selection{background:#5c6bc6}.slider-purple .slider .slider-selection{background:#6f42c1}.slider-pink .slider .slider-selection{background:#ff8acc}.slider-red .slider .slider-selection{background:#ea5455}.slider-orange .slider .slider-selection{background:#dda451}.slider-yellow .slider .slider-selection{background:#edc30e}.slider-green .slider .slider-selection{background:#21b978}.slider-teal .slider .slider-selection{background:#20c997}.slider-cyan .slider .slider-selection{background:#7367f0}.slider-white .slider .slider-selection{background:#fff}.slider-gray .slider .slider-selection{background:#b8c2cc}.slider-gray-dark .slider .slider-selection{background:#1e1e1e}.mapael .map{position:relative}.mapael .mapTooltip{font-family:Montserrat,Helvetica,Arial,serif;font-style:normal;font-weight:400;line-height:1.45;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;border-radius:.5rem;font-size:1rem;background-color:#22292f;color:#fff;display:block;max-width:200px;padding:.25rem .5rem;position:absolute;text-align:center;word-wrap:break-word;z-index:1070}.mapael .myLegend{background-color:#babfc7;border:1px solid #adb5bd;padding:10px;width:600px}.mapael .zoomButton{background-color:#babfc7;border:1px solid #ddd;border-radius:.42rem;color:#444;cursor:pointer;font-weight:700;height:16px;left:10px;line-height:14px;padding-left:1px;position:absolute;text-align:center;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:16px}.mapael .zoomButton.hover,.mapael .zoomButton:active,.mapael .zoomButton:hover{background-color:#acb2bc;color:#2b2b2b}.mapael .zoomReset{line-height:12px;top:10px}.mapael .zoomIn{top:30px}.mapael .zoomOut{top:50px}.jqvmap-zoomin,.jqvmap-zoomout{background-color:#babfc7;border:1px solid #ddd;border-radius:.42rem;color:#444;height:15px;width:15px}.jqvmap-zoomin.hover,.jqvmap-zoomin:active,.jqvmap-zoomin:hover,.jqvmap-zoomout.hover,.jqvmap-zoomout:active,.jqvmap-zoomout:hover{background-color:#acb2bc;color:#2b2b2b}.pace{z-index:1048}.pace .pace-progress{z-index:1049}.pace .pace-activity{z-index:1050}.pace-primary .pace .pace-progress{background:#586cb1}.pace-barber-shop-primary .pace{background:#fff}.pace-barber-shop-primary .pace .pace-progress{background:#586cb1}.pace-barber-shop-primary .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-primary .pace .pace-progress:after{color:rgba(88,108,177,.2)}.pace-bounce-primary .pace .pace-activity{background:#586cb1}.pace-center-atom-primary .pace-progress{height:100px;width:80px}.pace-center-atom-primary .pace-progress:before{background:#586cb1;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-primary .pace-activity,.pace-center-atom-primary .pace-activity:after,.pace-center-atom-primary .pace-activity:before{border-color:#586cb1}.pace-center-circle-primary .pace .pace-progress{background:rgba(88,108,177,.8);color:#fff}.pace-center-radar-primary .pace .pace-activity,.pace-center-radar-primary .pace .pace-activity:before{border-color:#586cb1 transparent transparent}.pace-center-simple-primary .pace{background:#fff;border-color:#586cb1}.pace-center-simple-primary .pace .pace-progress{background:#586cb1}.pace-material-primary .pace{color:#586cb1}.pace-corner-indicator-primary .pace .pace-activity{background:#586cb1}.pace-corner-indicator-primary .pace .pace-activity:after,.pace-corner-indicator-primary .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-primary .pace .pace-activity:before{border-right-color:rgba(88,108,177,.2);border-left-color:rgba(88,108,177,.2)}.pace-corner-indicator-primary .pace .pace-activity:after{border-top-color:rgba(88,108,177,.2);border-bottom-color:rgba(88,108,177,.2)}.pace-fill-left-primary .pace .pace-progress{background-color:rgba(88,108,177,.2)}.pace-flash-primary .pace .pace-progress{background:#586cb1}.pace-flash-primary .pace .pace-progress-inner{box-shadow:0 0 10px #586cb1,0 0 5px #586cb1}.pace-flash-primary .pace .pace-activity{border-top-color:#586cb1;border-left-color:#586cb1}.pace-loading-bar-primary .pace .pace-progress{background:#586cb1;color:#586cb1;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-primary .pace .pace-activity{box-shadow:inset 0 0 0 2px #586cb1,inset 0 0 0 7px #fff}.pace-mac-osx-primary .pace .pace-progress{background-color:#586cb1;box-shadow:inset -1px 0 #586cb1,inset 0 -1px #586cb1,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-primary .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-primary .pace-progress{color:#586cb1}.pace-secondary .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-secondary .pace{background:#2a2e30}.pace-barber-shop-secondary .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-secondary .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-secondary .pace .pace-progress:after{color:rgba(184,194,204,.2)}.pace-bounce-secondary .pace .pace-activity{background:#b8c2cc}.pace-center-atom-secondary .pace-progress{height:100px;width:80px}.pace-center-atom-secondary .pace-progress:before{background:#b8c2cc;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-secondary .pace-activity,.pace-center-atom-secondary .pace-activity:after,.pace-center-atom-secondary .pace-activity:before{border-color:#b8c2cc}.pace-center-circle-secondary .pace .pace-progress{background:rgba(184,194,204,.8);color:#2a2e30}.pace-center-radar-secondary .pace .pace-activity,.pace-center-radar-secondary .pace .pace-activity:before{border-color:#b8c2cc transparent transparent}.pace-center-simple-secondary .pace{background:#2a2e30;border-color:#b8c2cc}.pace-center-simple-secondary .pace .pace-progress{background:#b8c2cc}.pace-material-secondary .pace{color:#b8c2cc}.pace-corner-indicator-secondary .pace .pace-activity{background:#b8c2cc}.pace-corner-indicator-secondary .pace .pace-activity:after,.pace-corner-indicator-secondary .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-secondary .pace .pace-activity:before{border-right-color:rgba(184,194,204,.2);border-left-color:rgba(184,194,204,.2)}.pace-corner-indicator-secondary .pace .pace-activity:after{border-top-color:rgba(184,194,204,.2);border-bottom-color:rgba(184,194,204,.2)}.pace-fill-left-secondary .pace .pace-progress{background-color:rgba(184,194,204,.2)}.pace-flash-secondary .pace .pace-progress{background:#b8c2cc}.pace-flash-secondary .pace .pace-progress-inner{box-shadow:0 0 10px #b8c2cc,0 0 5px #b8c2cc}.pace-flash-secondary .pace .pace-activity{border-top-color:#b8c2cc;border-left-color:#b8c2cc}.pace-loading-bar-secondary .pace .pace-progress{background:#b8c2cc;color:#b8c2cc;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-secondary .pace .pace-activity{box-shadow:inset 0 0 0 2px #b8c2cc,inset 0 0 0 7px #2a2e30}.pace-mac-osx-secondary .pace .pace-progress{background-color:#b8c2cc;box-shadow:inset -1px 0 #b8c2cc,inset 0 -1px #b8c2cc,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-secondary .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-secondary .pace-progress{color:#b8c2cc}.pace-success .pace .pace-progress{background:#21b978}.pace-barber-shop-success .pace{background:#fff}.pace-barber-shop-success .pace .pace-progress{background:#21b978}.pace-barber-shop-success .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-success .pace .pace-progress:after{color:rgba(33,185,120,.2)}.pace-bounce-success .pace .pace-activity{background:#21b978}.pace-center-atom-success .pace-progress{height:100px;width:80px}.pace-center-atom-success .pace-progress:before{background:#21b978;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-success .pace-activity,.pace-center-atom-success .pace-activity:after,.pace-center-atom-success .pace-activity:before{border-color:#21b978}.pace-center-circle-success .pace .pace-progress{background:rgba(33,185,120,.8);color:#fff}.pace-center-radar-success .pace .pace-activity,.pace-center-radar-success .pace .pace-activity:before{border-color:#21b978 transparent transparent}.pace-center-simple-success .pace{background:#fff;border-color:#21b978}.pace-center-simple-success .pace .pace-progress{background:#21b978}.pace-material-success .pace{color:#21b978}.pace-corner-indicator-success .pace .pace-activity{background:#21b978}.pace-corner-indicator-success .pace .pace-activity:after,.pace-corner-indicator-success .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-success .pace .pace-activity:before{border-right-color:rgba(33,185,120,.2);border-left-color:rgba(33,185,120,.2)}.pace-corner-indicator-success .pace .pace-activity:after{border-top-color:rgba(33,185,120,.2);border-bottom-color:rgba(33,185,120,.2)}.pace-fill-left-success .pace .pace-progress{background-color:rgba(33,185,120,.2)}.pace-flash-success .pace .pace-progress{background:#21b978}.pace-flash-success .pace .pace-progress-inner{box-shadow:0 0 10px #21b978,0 0 5px #21b978}.pace-flash-success .pace .pace-activity{border-top-color:#21b978;border-left-color:#21b978}.pace-loading-bar-success .pace .pace-progress{background:#21b978;color:#21b978;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-success .pace .pace-activity{box-shadow:inset 0 0 0 2px #21b978,inset 0 0 0 7px #fff}.pace-mac-osx-success .pace .pace-progress{background-color:#21b978;box-shadow:inset -1px 0 #21b978,inset 0 -1px #21b978,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-success .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-success .pace-progress{color:#21b978}.pace-info .pace .pace-progress{background:#4277cf}.pace-barber-shop-info .pace{background:#fff}.pace-barber-shop-info .pace .pace-progress{background:#4277cf}.pace-barber-shop-info .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-info .pace .pace-progress:after{color:rgba(66,119,207,.2)}.pace-bounce-info .pace .pace-activity{background:#4277cf}.pace-center-atom-info .pace-progress{height:100px;width:80px}.pace-center-atom-info .pace-progress:before{background:#4277cf;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-info .pace-activity,.pace-center-atom-info .pace-activity:after,.pace-center-atom-info .pace-activity:before{border-color:#4277cf}.pace-center-circle-info .pace .pace-progress{background:rgba(66,119,207,.8);color:#fff}.pace-center-radar-info .pace .pace-activity,.pace-center-radar-info .pace .pace-activity:before{border-color:#4277cf transparent transparent}.pace-center-simple-info .pace{background:#fff;border-color:#4277cf}.pace-center-simple-info .pace .pace-progress{background:#4277cf}.pace-material-info .pace{color:#4277cf}.pace-corner-indicator-info .pace .pace-activity{background:#4277cf}.pace-corner-indicator-info .pace .pace-activity:after,.pace-corner-indicator-info .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-info .pace .pace-activity:before{border-right-color:rgba(66,119,207,.2);border-left-color:rgba(66,119,207,.2)}.pace-corner-indicator-info .pace .pace-activity:after{border-top-color:rgba(66,119,207,.2);border-bottom-color:rgba(66,119,207,.2)}.pace-fill-left-info .pace .pace-progress{background-color:rgba(66,119,207,.2)}.pace-flash-info .pace .pace-progress{background:#4277cf}.pace-flash-info .pace .pace-progress-inner{box-shadow:0 0 10px #4277cf,0 0 5px #4277cf}.pace-flash-info .pace .pace-activity{border-top-color:#4277cf;border-left-color:#4277cf}.pace-loading-bar-info .pace .pace-progress{background:#4277cf;color:#4277cf;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-info .pace .pace-activity{box-shadow:inset 0 0 0 2px #4277cf,inset 0 0 0 7px #fff}.pace-mac-osx-info .pace .pace-progress{background-color:#4277cf;box-shadow:inset -1px 0 #4277cf,inset 0 -1px #4277cf,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-info .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-info .pace-progress{color:#4277cf}.pace-warning .pace .pace-progress{background:#dda451}.pace-barber-shop-warning .pace{background:#2a2e30}.pace-barber-shop-warning .pace .pace-progress{background:#dda451}.pace-barber-shop-warning .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-warning .pace .pace-progress:after{color:rgba(221,164,81,.2)}.pace-bounce-warning .pace .pace-activity{background:#dda451}.pace-center-atom-warning .pace-progress{height:100px;width:80px}.pace-center-atom-warning .pace-progress:before{background:#dda451;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-warning .pace-activity,.pace-center-atom-warning .pace-activity:after,.pace-center-atom-warning .pace-activity:before{border-color:#dda451}.pace-center-circle-warning .pace .pace-progress{background:rgba(221,164,81,.8);color:#2a2e30}.pace-center-radar-warning .pace .pace-activity,.pace-center-radar-warning .pace .pace-activity:before{border-color:#dda451 transparent transparent}.pace-center-simple-warning .pace{background:#2a2e30;border-color:#dda451}.pace-center-simple-warning .pace .pace-progress{background:#dda451}.pace-material-warning .pace{color:#dda451}.pace-corner-indicator-warning .pace .pace-activity{background:#dda451}.pace-corner-indicator-warning .pace .pace-activity:after,.pace-corner-indicator-warning .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-warning .pace .pace-activity:before{border-right-color:rgba(221,164,81,.2);border-left-color:rgba(221,164,81,.2)}.pace-corner-indicator-warning .pace .pace-activity:after{border-top-color:rgba(221,164,81,.2);border-bottom-color:rgba(221,164,81,.2)}.pace-fill-left-warning .pace .pace-progress{background-color:rgba(221,164,81,.2)}.pace-flash-warning .pace .pace-progress{background:#dda451}.pace-flash-warning .pace .pace-progress-inner{box-shadow:0 0 10px #dda451,0 0 5px #dda451}.pace-flash-warning .pace .pace-activity{border-top-color:#dda451;border-left-color:#dda451}.pace-loading-bar-warning .pace .pace-progress{background:#dda451;color:#dda451;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-warning .pace .pace-activity{box-shadow:inset 0 0 0 2px #dda451,inset 0 0 0 7px #2a2e30}.pace-mac-osx-warning .pace .pace-progress{background-color:#dda451;box-shadow:inset -1px 0 #dda451,inset 0 -1px #dda451,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-warning .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-warning .pace-progress{color:#dda451}.pace-danger .pace .pace-progress{background:#ea5455}.pace-barber-shop-danger .pace{background:#fff}.pace-barber-shop-danger .pace .pace-progress{background:#ea5455}.pace-barber-shop-danger .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-danger .pace .pace-progress:after{color:rgba(234,84,85,.2)}.pace-bounce-danger .pace .pace-activity{background:#ea5455}.pace-center-atom-danger .pace-progress{height:100px;width:80px}.pace-center-atom-danger .pace-progress:before{background:#ea5455;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-danger .pace-activity,.pace-center-atom-danger .pace-activity:after,.pace-center-atom-danger .pace-activity:before{border-color:#ea5455}.pace-center-circle-danger .pace .pace-progress{background:rgba(234,84,85,.8);color:#fff}.pace-center-radar-danger .pace .pace-activity,.pace-center-radar-danger .pace .pace-activity:before{border-color:#ea5455 transparent transparent}.pace-center-simple-danger .pace{background:#fff;border-color:#ea5455}.pace-center-simple-danger .pace .pace-progress{background:#ea5455}.pace-material-danger .pace{color:#ea5455}.pace-corner-indicator-danger .pace .pace-activity{background:#ea5455}.pace-corner-indicator-danger .pace .pace-activity:after,.pace-corner-indicator-danger .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-danger .pace .pace-activity:before{border-right-color:rgba(234,84,85,.2);border-left-color:rgba(234,84,85,.2)}.pace-corner-indicator-danger .pace .pace-activity:after{border-top-color:rgba(234,84,85,.2);border-bottom-color:rgba(234,84,85,.2)}.pace-fill-left-danger .pace .pace-progress{background-color:rgba(234,84,85,.2)}.pace-flash-danger .pace .pace-progress{background:#ea5455}.pace-flash-danger .pace .pace-progress-inner{box-shadow:0 0 10px #ea5455,0 0 5px #ea5455}.pace-flash-danger .pace .pace-activity{border-top-color:#ea5455;border-left-color:#ea5455}.pace-loading-bar-danger .pace .pace-progress{background:#ea5455;color:#ea5455;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-danger .pace .pace-activity{box-shadow:inset 0 0 0 2px #ea5455,inset 0 0 0 7px #fff}.pace-mac-osx-danger .pace .pace-progress{background-color:#ea5455;box-shadow:inset -1px 0 #ea5455,inset 0 -1px #ea5455,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-danger .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-danger .pace-progress{color:#ea5455}.pace-light .pace .pace-progress{background:#f7f7f9}.pace-barber-shop-light .pace{background:#2a2e30}.pace-barber-shop-light .pace .pace-progress{background:#f7f7f9}.pace-barber-shop-light .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-light .pace .pace-progress:after{color:rgba(247,247,249,.2)}.pace-bounce-light .pace .pace-activity{background:#f7f7f9}.pace-center-atom-light .pace-progress{height:100px;width:80px}.pace-center-atom-light .pace-progress:before{background:#f7f7f9;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-light .pace-activity,.pace-center-atom-light .pace-activity:after,.pace-center-atom-light .pace-activity:before{border-color:#f7f7f9}.pace-center-circle-light .pace .pace-progress{background:rgba(247,247,249,.8);color:#2a2e30}.pace-center-radar-light .pace .pace-activity,.pace-center-radar-light .pace .pace-activity:before{border-color:#f7f7f9 transparent transparent}.pace-center-simple-light .pace{background:#2a2e30;border-color:#f7f7f9}.pace-center-simple-light .pace .pace-progress{background:#f7f7f9}.pace-material-light .pace{color:#f7f7f9}.pace-corner-indicator-light .pace .pace-activity{background:#f7f7f9}.pace-corner-indicator-light .pace .pace-activity:after,.pace-corner-indicator-light .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-light .pace .pace-activity:before{border-right-color:rgba(247,247,249,.2);border-left-color:rgba(247,247,249,.2)}.pace-corner-indicator-light .pace .pace-activity:after{border-top-color:rgba(247,247,249,.2);border-bottom-color:rgba(247,247,249,.2)}.pace-fill-left-light .pace .pace-progress{background-color:rgba(247,247,249,.2)}.pace-flash-light .pace .pace-progress{background:#f7f7f9}.pace-flash-light .pace .pace-progress-inner{box-shadow:0 0 10px #f7f7f9,0 0 5px #f7f7f9}.pace-flash-light .pace .pace-activity{border-top-color:#f7f7f9;border-left-color:#f7f7f9}.pace-loading-bar-light .pace .pace-progress{background:#f7f7f9;color:#f7f7f9;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-light .pace .pace-activity{box-shadow:inset 0 0 0 2px #f7f7f9,inset 0 0 0 7px #2a2e30}.pace-mac-osx-light .pace .pace-progress{background-color:#f7f7f9;box-shadow:inset -1px 0 #f7f7f9,inset 0 -1px #f7f7f9,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-light .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-light .pace-progress{color:#f7f7f9}.pace-dark .pace .pace-progress{background:#22292f}.pace-barber-shop-dark .pace{background:#fff}.pace-barber-shop-dark .pace .pace-progress{background:#22292f}.pace-barber-shop-dark .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-dark .pace .pace-progress:after{color:rgba(34,41,47,.2)}.pace-bounce-dark .pace .pace-activity{background:#22292f}.pace-center-atom-dark .pace-progress{height:100px;width:80px}.pace-center-atom-dark .pace-progress:before{background:#22292f;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-dark .pace-activity,.pace-center-atom-dark .pace-activity:after,.pace-center-atom-dark .pace-activity:before{border-color:#22292f}.pace-center-circle-dark .pace .pace-progress{background:rgba(34,41,47,.8);color:#fff}.pace-center-radar-dark .pace .pace-activity,.pace-center-radar-dark .pace .pace-activity:before{border-color:#22292f transparent transparent}.pace-center-simple-dark .pace{background:#fff;border-color:#22292f}.pace-center-simple-dark .pace .pace-progress{background:#22292f}.pace-material-dark .pace{color:#22292f}.pace-corner-indicator-dark .pace .pace-activity{background:#22292f}.pace-corner-indicator-dark .pace .pace-activity:after,.pace-corner-indicator-dark .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-dark .pace .pace-activity:before{border-right-color:rgba(34,41,47,.2);border-left-color:rgba(34,41,47,.2)}.pace-corner-indicator-dark .pace .pace-activity:after{border-top-color:rgba(34,41,47,.2);border-bottom-color:rgba(34,41,47,.2)}.pace-fill-left-dark .pace .pace-progress{background-color:rgba(34,41,47,.2)}.pace-flash-dark .pace .pace-progress{background:#22292f}.pace-flash-dark .pace .pace-progress-inner{box-shadow:0 0 10px #22292f,0 0 5px #22292f}.pace-flash-dark .pace .pace-activity{border-top-color:#22292f;border-left-color:#22292f}.pace-loading-bar-dark .pace .pace-progress{background:#22292f;color:#22292f;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-dark .pace .pace-activity{box-shadow:inset 0 0 0 2px #22292f,inset 0 0 0 7px #fff}.pace-mac-osx-dark .pace .pace-progress{background-color:#22292f;box-shadow:inset -1px 0 #22292f,inset 0 -1px #22292f,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-dark .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-dark .pace-progress{color:#22292f}.pace-lightblue .pace .pace-progress{background:#3c8dbc}.pace-barber-shop-lightblue .pace{background:#fff}.pace-barber-shop-lightblue .pace .pace-progress{background:#3c8dbc}.pace-barber-shop-lightblue .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-lightblue .pace .pace-progress:after{color:rgba(60,141,188,.2)}.pace-bounce-lightblue .pace .pace-activity{background:#3c8dbc}.pace-center-atom-lightblue .pace-progress{height:100px;width:80px}.pace-center-atom-lightblue .pace-progress:before{background:#3c8dbc;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-lightblue .pace-activity,.pace-center-atom-lightblue .pace-activity:after,.pace-center-atom-lightblue .pace-activity:before{border-color:#3c8dbc}.pace-center-circle-lightblue .pace .pace-progress{background:rgba(60,141,188,.8);color:#fff}.pace-center-radar-lightblue .pace .pace-activity,.pace-center-radar-lightblue .pace .pace-activity:before{border-color:#3c8dbc transparent transparent}.pace-center-simple-lightblue .pace{background:#fff;border-color:#3c8dbc}.pace-center-simple-lightblue .pace .pace-progress{background:#3c8dbc}.pace-material-lightblue .pace{color:#3c8dbc}.pace-corner-indicator-lightblue .pace .pace-activity{background:#3c8dbc}.pace-corner-indicator-lightblue .pace .pace-activity:after,.pace-corner-indicator-lightblue .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-lightblue .pace .pace-activity:before{border-right-color:rgba(60,141,188,.2);border-left-color:rgba(60,141,188,.2)}.pace-corner-indicator-lightblue .pace .pace-activity:after{border-top-color:rgba(60,141,188,.2);border-bottom-color:rgba(60,141,188,.2)}.pace-fill-left-lightblue .pace .pace-progress{background-color:rgba(60,141,188,.2)}.pace-flash-lightblue .pace .pace-progress{background:#3c8dbc}.pace-flash-lightblue .pace .pace-progress-inner{box-shadow:0 0 10px #3c8dbc,0 0 5px #3c8dbc}.pace-flash-lightblue .pace .pace-activity{border-top-color:#3c8dbc;border-left-color:#3c8dbc}.pace-loading-bar-lightblue .pace .pace-progress{background:#3c8dbc;color:#3c8dbc;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-lightblue .pace .pace-activity{box-shadow:inset 0 0 0 2px #3c8dbc,inset 0 0 0 7px #fff}.pace-mac-osx-lightblue .pace .pace-progress{background-color:#3c8dbc;box-shadow:inset -1px 0 #3c8dbc,inset 0 -1px #3c8dbc,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-lightblue .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-lightblue .pace-progress{color:#3c8dbc}.pace-navy .pace .pace-progress{background:#001f3f}.pace-barber-shop-navy .pace{background:#fff}.pace-barber-shop-navy .pace .pace-progress{background:#001f3f}.pace-barber-shop-navy .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-navy .pace .pace-progress:after{color:rgba(0,31,63,.2)}.pace-bounce-navy .pace .pace-activity{background:#001f3f}.pace-center-atom-navy .pace-progress{height:100px;width:80px}.pace-center-atom-navy .pace-progress:before{background:#001f3f;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-navy .pace-activity,.pace-center-atom-navy .pace-activity:after,.pace-center-atom-navy .pace-activity:before{border-color:#001f3f}.pace-center-circle-navy .pace .pace-progress{background:rgba(0,31,63,.8);color:#fff}.pace-center-radar-navy .pace .pace-activity,.pace-center-radar-navy .pace .pace-activity:before{border-color:#001f3f transparent transparent}.pace-center-simple-navy .pace{background:#fff;border-color:#001f3f}.pace-center-simple-navy .pace .pace-progress{background:#001f3f}.pace-material-navy .pace{color:#001f3f}.pace-corner-indicator-navy .pace .pace-activity{background:#001f3f}.pace-corner-indicator-navy .pace .pace-activity:after,.pace-corner-indicator-navy .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-navy .pace .pace-activity:before{border-right-color:rgba(0,31,63,.2);border-left-color:rgba(0,31,63,.2)}.pace-corner-indicator-navy .pace .pace-activity:after{border-top-color:rgba(0,31,63,.2);border-bottom-color:rgba(0,31,63,.2)}.pace-fill-left-navy .pace .pace-progress{background-color:rgba(0,31,63,.2)}.pace-flash-navy .pace .pace-progress{background:#001f3f}.pace-flash-navy .pace .pace-progress-inner{box-shadow:0 0 10px #001f3f,0 0 5px #001f3f}.pace-flash-navy .pace .pace-activity{border-top-color:#001f3f;border-left-color:#001f3f}.pace-loading-bar-navy .pace .pace-progress{background:#001f3f;color:#001f3f;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-navy .pace .pace-activity{box-shadow:inset 0 0 0 2px #001f3f,inset 0 0 0 7px #fff}.pace-mac-osx-navy .pace .pace-progress{background-color:#001f3f;box-shadow:inset -1px 0 #001f3f,inset 0 -1px #001f3f,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-navy .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-navy .pace-progress{color:#001f3f}.pace-olive .pace .pace-progress{background:#3d9970}.pace-barber-shop-olive .pace{background:#fff}.pace-barber-shop-olive .pace .pace-progress{background:#3d9970}.pace-barber-shop-olive .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-olive .pace .pace-progress:after{color:rgba(61,153,112,.2)}.pace-bounce-olive .pace .pace-activity{background:#3d9970}.pace-center-atom-olive .pace-progress{height:100px;width:80px}.pace-center-atom-olive .pace-progress:before{background:#3d9970;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-olive .pace-activity,.pace-center-atom-olive .pace-activity:after,.pace-center-atom-olive .pace-activity:before{border-color:#3d9970}.pace-center-circle-olive .pace .pace-progress{background:rgba(61,153,112,.8);color:#fff}.pace-center-radar-olive .pace .pace-activity,.pace-center-radar-olive .pace .pace-activity:before{border-color:#3d9970 transparent transparent}.pace-center-simple-olive .pace{background:#fff;border-color:#3d9970}.pace-center-simple-olive .pace .pace-progress{background:#3d9970}.pace-material-olive .pace{color:#3d9970}.pace-corner-indicator-olive .pace .pace-activity{background:#3d9970}.pace-corner-indicator-olive .pace .pace-activity:after,.pace-corner-indicator-olive .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-olive .pace .pace-activity:before{border-right-color:rgba(61,153,112,.2);border-left-color:rgba(61,153,112,.2)}.pace-corner-indicator-olive .pace .pace-activity:after{border-top-color:rgba(61,153,112,.2);border-bottom-color:rgba(61,153,112,.2)}.pace-fill-left-olive .pace .pace-progress{background-color:rgba(61,153,112,.2)}.pace-flash-olive .pace .pace-progress{background:#3d9970}.pace-flash-olive .pace .pace-progress-inner{box-shadow:0 0 10px #3d9970,0 0 5px #3d9970}.pace-flash-olive .pace .pace-activity{border-top-color:#3d9970;border-left-color:#3d9970}.pace-loading-bar-olive .pace .pace-progress{background:#3d9970;color:#3d9970;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-olive .pace .pace-activity{box-shadow:inset 0 0 0 2px #3d9970,inset 0 0 0 7px #fff}.pace-mac-osx-olive .pace .pace-progress{background-color:#3d9970;box-shadow:inset -1px 0 #3d9970,inset 0 -1px #3d9970,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-olive .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-olive .pace-progress{color:#3d9970}.pace-lime .pace .pace-progress{background:#01ff70}.pace-barber-shop-lime .pace{background:#2a2e30}.pace-barber-shop-lime .pace .pace-progress{background:#01ff70}.pace-barber-shop-lime .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-lime .pace .pace-progress:after{color:rgba(1,255,112,.2)}.pace-bounce-lime .pace .pace-activity{background:#01ff70}.pace-center-atom-lime .pace-progress{height:100px;width:80px}.pace-center-atom-lime .pace-progress:before{background:#01ff70;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-lime .pace-activity,.pace-center-atom-lime .pace-activity:after,.pace-center-atom-lime .pace-activity:before{border-color:#01ff70}.pace-center-circle-lime .pace .pace-progress{background:rgba(1,255,112,.8);color:#2a2e30}.pace-center-radar-lime .pace .pace-activity,.pace-center-radar-lime .pace .pace-activity:before{border-color:#01ff70 transparent transparent}.pace-center-simple-lime .pace{background:#2a2e30;border-color:#01ff70}.pace-center-simple-lime .pace .pace-progress{background:#01ff70}.pace-material-lime .pace{color:#01ff70}.pace-corner-indicator-lime .pace .pace-activity{background:#01ff70}.pace-corner-indicator-lime .pace .pace-activity:after,.pace-corner-indicator-lime .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-lime .pace .pace-activity:before{border-right-color:rgba(1,255,112,.2);border-left-color:rgba(1,255,112,.2)}.pace-corner-indicator-lime .pace .pace-activity:after{border-top-color:rgba(1,255,112,.2);border-bottom-color:rgba(1,255,112,.2)}.pace-fill-left-lime .pace .pace-progress{background-color:rgba(1,255,112,.2)}.pace-flash-lime .pace .pace-progress{background:#01ff70}.pace-flash-lime .pace .pace-progress-inner{box-shadow:0 0 10px #01ff70,0 0 5px #01ff70}.pace-flash-lime .pace .pace-activity{border-top-color:#01ff70;border-left-color:#01ff70}.pace-loading-bar-lime .pace .pace-progress{background:#01ff70;color:#01ff70;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-lime .pace .pace-activity{box-shadow:inset 0 0 0 2px #01ff70,inset 0 0 0 7px #2a2e30}.pace-mac-osx-lime .pace .pace-progress{background-color:#01ff70;box-shadow:inset -1px 0 #01ff70,inset 0 -1px #01ff70,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-lime .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-lime .pace-progress{color:#01ff70}.pace-fuchsia .pace .pace-progress{background:#f012be}.pace-barber-shop-fuchsia .pace{background:#fff}.pace-barber-shop-fuchsia .pace .pace-progress{background:#f012be}.pace-barber-shop-fuchsia .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-fuchsia .pace .pace-progress:after{color:rgba(240,18,190,.2)}.pace-bounce-fuchsia .pace .pace-activity{background:#f012be}.pace-center-atom-fuchsia .pace-progress{height:100px;width:80px}.pace-center-atom-fuchsia .pace-progress:before{background:#f012be;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-fuchsia .pace-activity,.pace-center-atom-fuchsia .pace-activity:after,.pace-center-atom-fuchsia .pace-activity:before{border-color:#f012be}.pace-center-circle-fuchsia .pace .pace-progress{background:rgba(240,18,190,.8);color:#fff}.pace-center-radar-fuchsia .pace .pace-activity,.pace-center-radar-fuchsia .pace .pace-activity:before{border-color:#f012be transparent transparent}.pace-center-simple-fuchsia .pace{background:#fff;border-color:#f012be}.pace-center-simple-fuchsia .pace .pace-progress{background:#f012be}.pace-material-fuchsia .pace{color:#f012be}.pace-corner-indicator-fuchsia .pace .pace-activity{background:#f012be}.pace-corner-indicator-fuchsia .pace .pace-activity:after,.pace-corner-indicator-fuchsia .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-fuchsia .pace .pace-activity:before{border-right-color:rgba(240,18,190,.2);border-left-color:rgba(240,18,190,.2)}.pace-corner-indicator-fuchsia .pace .pace-activity:after{border-top-color:rgba(240,18,190,.2);border-bottom-color:rgba(240,18,190,.2)}.pace-fill-left-fuchsia .pace .pace-progress{background-color:rgba(240,18,190,.2)}.pace-flash-fuchsia .pace .pace-progress{background:#f012be}.pace-flash-fuchsia .pace .pace-progress-inner{box-shadow:0 0 10px #f012be,0 0 5px #f012be}.pace-flash-fuchsia .pace .pace-activity{border-top-color:#f012be;border-left-color:#f012be}.pace-loading-bar-fuchsia .pace .pace-progress{background:#f012be;color:#f012be;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-fuchsia .pace .pace-activity{box-shadow:inset 0 0 0 2px #f012be,inset 0 0 0 7px #fff}.pace-mac-osx-fuchsia .pace .pace-progress{background-color:#f012be;box-shadow:inset -1px 0 #f012be,inset 0 -1px #f012be,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-fuchsia .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-fuchsia .pace-progress{color:#f012be}.pace-maroon .pace .pace-progress{background:#d81b60}.pace-barber-shop-maroon .pace{background:#fff}.pace-barber-shop-maroon .pace .pace-progress{background:#d81b60}.pace-barber-shop-maroon .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-maroon .pace .pace-progress:after{color:rgba(216,27,96,.2)}.pace-bounce-maroon .pace .pace-activity{background:#d81b60}.pace-center-atom-maroon .pace-progress{height:100px;width:80px}.pace-center-atom-maroon .pace-progress:before{background:#d81b60;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-maroon .pace-activity,.pace-center-atom-maroon .pace-activity:after,.pace-center-atom-maroon .pace-activity:before{border-color:#d81b60}.pace-center-circle-maroon .pace .pace-progress{background:rgba(216,27,96,.8);color:#fff}.pace-center-radar-maroon .pace .pace-activity,.pace-center-radar-maroon .pace .pace-activity:before{border-color:#d81b60 transparent transparent}.pace-center-simple-maroon .pace{background:#fff;border-color:#d81b60}.pace-center-simple-maroon .pace .pace-progress{background:#d81b60}.pace-material-maroon .pace{color:#d81b60}.pace-corner-indicator-maroon .pace .pace-activity{background:#d81b60}.pace-corner-indicator-maroon .pace .pace-activity:after,.pace-corner-indicator-maroon .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-maroon .pace .pace-activity:before{border-right-color:rgba(216,27,96,.2);border-left-color:rgba(216,27,96,.2)}.pace-corner-indicator-maroon .pace .pace-activity:after{border-top-color:rgba(216,27,96,.2);border-bottom-color:rgba(216,27,96,.2)}.pace-fill-left-maroon .pace .pace-progress{background-color:rgba(216,27,96,.2)}.pace-flash-maroon .pace .pace-progress{background:#d81b60}.pace-flash-maroon .pace .pace-progress-inner{box-shadow:0 0 10px #d81b60,0 0 5px #d81b60}.pace-flash-maroon .pace .pace-activity{border-top-color:#d81b60;border-left-color:#d81b60}.pace-loading-bar-maroon .pace .pace-progress{background:#d81b60;color:#d81b60;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-maroon .pace .pace-activity{box-shadow:inset 0 0 0 2px #d81b60,inset 0 0 0 7px #fff}.pace-mac-osx-maroon .pace .pace-progress{background-color:#d81b60;box-shadow:inset -1px 0 #d81b60,inset 0 -1px #d81b60,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-maroon .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-maroon .pace-progress{color:#d81b60}.pace-blue .pace .pace-progress{background:#3085d6}.pace-barber-shop-blue .pace{background:#fff}.pace-barber-shop-blue .pace .pace-progress{background:#3085d6}.pace-barber-shop-blue .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-blue .pace .pace-progress:after{color:rgba(48,133,214,.2)}.pace-bounce-blue .pace .pace-activity{background:#3085d6}.pace-center-atom-blue .pace-progress{height:100px;width:80px}.pace-center-atom-blue .pace-progress:before{background:#3085d6;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-blue .pace-activity,.pace-center-atom-blue .pace-activity:after,.pace-center-atom-blue .pace-activity:before{border-color:#3085d6}.pace-center-circle-blue .pace .pace-progress{background:rgba(48,133,214,.8);color:#fff}.pace-center-radar-blue .pace .pace-activity,.pace-center-radar-blue .pace .pace-activity:before{border-color:#3085d6 transparent transparent}.pace-center-simple-blue .pace{background:#fff;border-color:#3085d6}.pace-center-simple-blue .pace .pace-progress{background:#3085d6}.pace-material-blue .pace{color:#3085d6}.pace-corner-indicator-blue .pace .pace-activity{background:#3085d6}.pace-corner-indicator-blue .pace .pace-activity:after,.pace-corner-indicator-blue .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-blue .pace .pace-activity:before{border-right-color:rgba(48,133,214,.2);border-left-color:rgba(48,133,214,.2)}.pace-corner-indicator-blue .pace .pace-activity:after{border-top-color:rgba(48,133,214,.2);border-bottom-color:rgba(48,133,214,.2)}.pace-fill-left-blue .pace .pace-progress{background-color:rgba(48,133,214,.2)}.pace-flash-blue .pace .pace-progress{background:#3085d6}.pace-flash-blue .pace .pace-progress-inner{box-shadow:0 0 10px #3085d6,0 0 5px #3085d6}.pace-flash-blue .pace .pace-activity{border-top-color:#3085d6;border-left-color:#3085d6}.pace-loading-bar-blue .pace .pace-progress{background:#3085d6;color:#3085d6;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-blue .pace .pace-activity{box-shadow:inset 0 0 0 2px #3085d6,inset 0 0 0 7px #fff}.pace-mac-osx-blue .pace .pace-progress{background-color:#3085d6;box-shadow:inset -1px 0 #3085d6,inset 0 -1px #3085d6,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-blue .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-blue .pace-progress{color:#3085d6}.pace-indigo .pace .pace-progress{background:#5c6bc6}.pace-barber-shop-indigo .pace{background:#fff}.pace-barber-shop-indigo .pace .pace-progress{background:#5c6bc6}.pace-barber-shop-indigo .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-indigo .pace .pace-progress:after{color:rgba(92,107,198,.2)}.pace-bounce-indigo .pace .pace-activity{background:#5c6bc6}.pace-center-atom-indigo .pace-progress{height:100px;width:80px}.pace-center-atom-indigo .pace-progress:before{background:#5c6bc6;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-indigo .pace-activity,.pace-center-atom-indigo .pace-activity:after,.pace-center-atom-indigo .pace-activity:before{border-color:#5c6bc6}.pace-center-circle-indigo .pace .pace-progress{background:rgba(92,107,198,.8);color:#fff}.pace-center-radar-indigo .pace .pace-activity,.pace-center-radar-indigo .pace .pace-activity:before{border-color:#5c6bc6 transparent transparent}.pace-center-simple-indigo .pace{background:#fff;border-color:#5c6bc6}.pace-center-simple-indigo .pace .pace-progress{background:#5c6bc6}.pace-material-indigo .pace{color:#5c6bc6}.pace-corner-indicator-indigo .pace .pace-activity{background:#5c6bc6}.pace-corner-indicator-indigo .pace .pace-activity:after,.pace-corner-indicator-indigo .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-indigo .pace .pace-activity:before{border-right-color:rgba(92,107,198,.2);border-left-color:rgba(92,107,198,.2)}.pace-corner-indicator-indigo .pace .pace-activity:after{border-top-color:rgba(92,107,198,.2);border-bottom-color:rgba(92,107,198,.2)}.pace-fill-left-indigo .pace .pace-progress{background-color:rgba(92,107,198,.2)}.pace-flash-indigo .pace .pace-progress{background:#5c6bc6}.pace-flash-indigo .pace .pace-progress-inner{box-shadow:0 0 10px #5c6bc6,0 0 5px #5c6bc6}.pace-flash-indigo .pace .pace-activity{border-top-color:#5c6bc6;border-left-color:#5c6bc6}.pace-loading-bar-indigo .pace .pace-progress{background:#5c6bc6;color:#5c6bc6;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-indigo .pace .pace-activity{box-shadow:inset 0 0 0 2px #5c6bc6,inset 0 0 0 7px #fff}.pace-mac-osx-indigo .pace .pace-progress{background-color:#5c6bc6;box-shadow:inset -1px 0 #5c6bc6,inset 0 -1px #5c6bc6,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-indigo .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-indigo .pace-progress{color:#5c6bc6}.pace-purple .pace .pace-progress{background:#6f42c1}.pace-barber-shop-purple .pace{background:#fff}.pace-barber-shop-purple .pace .pace-progress{background:#6f42c1}.pace-barber-shop-purple .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-purple .pace .pace-progress:after{color:rgba(111,66,193,.2)}.pace-bounce-purple .pace .pace-activity{background:#6f42c1}.pace-center-atom-purple .pace-progress{height:100px;width:80px}.pace-center-atom-purple .pace-progress:before{background:#6f42c1;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-purple .pace-activity,.pace-center-atom-purple .pace-activity:after,.pace-center-atom-purple .pace-activity:before{border-color:#6f42c1}.pace-center-circle-purple .pace .pace-progress{background:rgba(111,66,193,.8);color:#fff}.pace-center-radar-purple .pace .pace-activity,.pace-center-radar-purple .pace .pace-activity:before{border-color:#6f42c1 transparent transparent}.pace-center-simple-purple .pace{background:#fff;border-color:#6f42c1}.pace-center-simple-purple .pace .pace-progress{background:#6f42c1}.pace-material-purple .pace{color:#6f42c1}.pace-corner-indicator-purple .pace .pace-activity{background:#6f42c1}.pace-corner-indicator-purple .pace .pace-activity:after,.pace-corner-indicator-purple .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-purple .pace .pace-activity:before{border-right-color:rgba(111,66,193,.2);border-left-color:rgba(111,66,193,.2)}.pace-corner-indicator-purple .pace .pace-activity:after{border-top-color:rgba(111,66,193,.2);border-bottom-color:rgba(111,66,193,.2)}.pace-fill-left-purple .pace .pace-progress{background-color:rgba(111,66,193,.2)}.pace-flash-purple .pace .pace-progress{background:#6f42c1}.pace-flash-purple .pace .pace-progress-inner{box-shadow:0 0 10px #6f42c1,0 0 5px #6f42c1}.pace-flash-purple .pace .pace-activity{border-top-color:#6f42c1;border-left-color:#6f42c1}.pace-loading-bar-purple .pace .pace-progress{background:#6f42c1;color:#6f42c1;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-purple .pace .pace-activity{box-shadow:inset 0 0 0 2px #6f42c1,inset 0 0 0 7px #fff}.pace-mac-osx-purple .pace .pace-progress{background-color:#6f42c1;box-shadow:inset -1px 0 #6f42c1,inset 0 -1px #6f42c1,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-purple .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-purple .pace-progress{color:#6f42c1}.pace-pink .pace .pace-progress{background:#ff8acc}.pace-barber-shop-pink .pace{background:#2a2e30}.pace-barber-shop-pink .pace .pace-progress{background:#ff8acc}.pace-barber-shop-pink .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-pink .pace .pace-progress:after{color:rgba(255,138,204,.2)}.pace-bounce-pink .pace .pace-activity{background:#ff8acc}.pace-center-atom-pink .pace-progress{height:100px;width:80px}.pace-center-atom-pink .pace-progress:before{background:#ff8acc;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-pink .pace-activity,.pace-center-atom-pink .pace-activity:after,.pace-center-atom-pink .pace-activity:before{border-color:#ff8acc}.pace-center-circle-pink .pace .pace-progress{background:rgba(255,138,204,.8);color:#2a2e30}.pace-center-radar-pink .pace .pace-activity,.pace-center-radar-pink .pace .pace-activity:before{border-color:#ff8acc transparent transparent}.pace-center-simple-pink .pace{background:#2a2e30;border-color:#ff8acc}.pace-center-simple-pink .pace .pace-progress{background:#ff8acc}.pace-material-pink .pace{color:#ff8acc}.pace-corner-indicator-pink .pace .pace-activity{background:#ff8acc}.pace-corner-indicator-pink .pace .pace-activity:after,.pace-corner-indicator-pink .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-pink .pace .pace-activity:before{border-right-color:rgba(255,138,204,.2);border-left-color:rgba(255,138,204,.2)}.pace-corner-indicator-pink .pace .pace-activity:after{border-top-color:rgba(255,138,204,.2);border-bottom-color:rgba(255,138,204,.2)}.pace-fill-left-pink .pace .pace-progress{background-color:rgba(255,138,204,.2)}.pace-flash-pink .pace .pace-progress{background:#ff8acc}.pace-flash-pink .pace .pace-progress-inner{box-shadow:0 0 10px #ff8acc,0 0 5px #ff8acc}.pace-flash-pink .pace .pace-activity{border-top-color:#ff8acc;border-left-color:#ff8acc}.pace-loading-bar-pink .pace .pace-progress{background:#ff8acc;color:#ff8acc;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-pink .pace .pace-activity{box-shadow:inset 0 0 0 2px #ff8acc,inset 0 0 0 7px #2a2e30}.pace-mac-osx-pink .pace .pace-progress{background-color:#ff8acc;box-shadow:inset -1px 0 #ff8acc,inset 0 -1px #ff8acc,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-pink .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-pink .pace-progress{color:#ff8acc}.pace-red .pace .pace-progress{background:#ea5455}.pace-barber-shop-red .pace{background:#fff}.pace-barber-shop-red .pace .pace-progress{background:#ea5455}.pace-barber-shop-red .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-red .pace .pace-progress:after{color:rgba(234,84,85,.2)}.pace-bounce-red .pace .pace-activity{background:#ea5455}.pace-center-atom-red .pace-progress{height:100px;width:80px}.pace-center-atom-red .pace-progress:before{background:#ea5455;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-red .pace-activity,.pace-center-atom-red .pace-activity:after,.pace-center-atom-red .pace-activity:before{border-color:#ea5455}.pace-center-circle-red .pace .pace-progress{background:rgba(234,84,85,.8);color:#fff}.pace-center-radar-red .pace .pace-activity,.pace-center-radar-red .pace .pace-activity:before{border-color:#ea5455 transparent transparent}.pace-center-simple-red .pace{background:#fff;border-color:#ea5455}.pace-center-simple-red .pace .pace-progress{background:#ea5455}.pace-material-red .pace{color:#ea5455}.pace-corner-indicator-red .pace .pace-activity{background:#ea5455}.pace-corner-indicator-red .pace .pace-activity:after,.pace-corner-indicator-red .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-red .pace .pace-activity:before{border-right-color:rgba(234,84,85,.2);border-left-color:rgba(234,84,85,.2)}.pace-corner-indicator-red .pace .pace-activity:after{border-top-color:rgba(234,84,85,.2);border-bottom-color:rgba(234,84,85,.2)}.pace-fill-left-red .pace .pace-progress{background-color:rgba(234,84,85,.2)}.pace-flash-red .pace .pace-progress{background:#ea5455}.pace-flash-red .pace .pace-progress-inner{box-shadow:0 0 10px #ea5455,0 0 5px #ea5455}.pace-flash-red .pace .pace-activity{border-top-color:#ea5455;border-left-color:#ea5455}.pace-loading-bar-red .pace .pace-progress{background:#ea5455;color:#ea5455;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-red .pace .pace-activity{box-shadow:inset 0 0 0 2px #ea5455,inset 0 0 0 7px #fff}.pace-mac-osx-red .pace .pace-progress{background-color:#ea5455;box-shadow:inset -1px 0 #ea5455,inset 0 -1px #ea5455,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-red .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-red .pace-progress{color:#ea5455}.pace-orange .pace .pace-progress{background:#dda451}.pace-barber-shop-orange .pace{background:#2a2e30}.pace-barber-shop-orange .pace .pace-progress{background:#dda451}.pace-barber-shop-orange .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-orange .pace .pace-progress:after{color:rgba(221,164,81,.2)}.pace-bounce-orange .pace .pace-activity{background:#dda451}.pace-center-atom-orange .pace-progress{height:100px;width:80px}.pace-center-atom-orange .pace-progress:before{background:#dda451;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-orange .pace-activity,.pace-center-atom-orange .pace-activity:after,.pace-center-atom-orange .pace-activity:before{border-color:#dda451}.pace-center-circle-orange .pace .pace-progress{background:rgba(221,164,81,.8);color:#2a2e30}.pace-center-radar-orange .pace .pace-activity,.pace-center-radar-orange .pace .pace-activity:before{border-color:#dda451 transparent transparent}.pace-center-simple-orange .pace{background:#2a2e30;border-color:#dda451}.pace-center-simple-orange .pace .pace-progress{background:#dda451}.pace-material-orange .pace{color:#dda451}.pace-corner-indicator-orange .pace .pace-activity{background:#dda451}.pace-corner-indicator-orange .pace .pace-activity:after,.pace-corner-indicator-orange .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-orange .pace .pace-activity:before{border-right-color:rgba(221,164,81,.2);border-left-color:rgba(221,164,81,.2)}.pace-corner-indicator-orange .pace .pace-activity:after{border-top-color:rgba(221,164,81,.2);border-bottom-color:rgba(221,164,81,.2)}.pace-fill-left-orange .pace .pace-progress{background-color:rgba(221,164,81,.2)}.pace-flash-orange .pace .pace-progress{background:#dda451}.pace-flash-orange .pace .pace-progress-inner{box-shadow:0 0 10px #dda451,0 0 5px #dda451}.pace-flash-orange .pace .pace-activity{border-top-color:#dda451;border-left-color:#dda451}.pace-loading-bar-orange .pace .pace-progress{background:#dda451;color:#dda451;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-orange .pace .pace-activity{box-shadow:inset 0 0 0 2px #dda451,inset 0 0 0 7px #2a2e30}.pace-mac-osx-orange .pace .pace-progress{background-color:#dda451;box-shadow:inset -1px 0 #dda451,inset 0 -1px #dda451,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-orange .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-orange .pace-progress{color:#dda451}.pace-yellow .pace .pace-progress{background:#edc30e}.pace-barber-shop-yellow .pace{background:#2a2e30}.pace-barber-shop-yellow .pace .pace-progress{background:#edc30e}.pace-barber-shop-yellow .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-yellow .pace .pace-progress:after{color:rgba(237,195,14,.2)}.pace-bounce-yellow .pace .pace-activity{background:#edc30e}.pace-center-atom-yellow .pace-progress{height:100px;width:80px}.pace-center-atom-yellow .pace-progress:before{background:#edc30e;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-yellow .pace-activity,.pace-center-atom-yellow .pace-activity:after,.pace-center-atom-yellow .pace-activity:before{border-color:#edc30e}.pace-center-circle-yellow .pace .pace-progress{background:rgba(237,195,14,.8);color:#2a2e30}.pace-center-radar-yellow .pace .pace-activity,.pace-center-radar-yellow .pace .pace-activity:before{border-color:#edc30e transparent transparent}.pace-center-simple-yellow .pace{background:#2a2e30;border-color:#edc30e}.pace-center-simple-yellow .pace .pace-progress{background:#edc30e}.pace-material-yellow .pace{color:#edc30e}.pace-corner-indicator-yellow .pace .pace-activity{background:#edc30e}.pace-corner-indicator-yellow .pace .pace-activity:after,.pace-corner-indicator-yellow .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-yellow .pace .pace-activity:before{border-right-color:rgba(237,195,14,.2);border-left-color:rgba(237,195,14,.2)}.pace-corner-indicator-yellow .pace .pace-activity:after{border-top-color:rgba(237,195,14,.2);border-bottom-color:rgba(237,195,14,.2)}.pace-fill-left-yellow .pace .pace-progress{background-color:rgba(237,195,14,.2)}.pace-flash-yellow .pace .pace-progress{background:#edc30e}.pace-flash-yellow .pace .pace-progress-inner{box-shadow:0 0 10px #edc30e,0 0 5px #edc30e}.pace-flash-yellow .pace .pace-activity{border-top-color:#edc30e;border-left-color:#edc30e}.pace-loading-bar-yellow .pace .pace-progress{background:#edc30e;color:#edc30e;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-yellow .pace .pace-activity{box-shadow:inset 0 0 0 2px #edc30e,inset 0 0 0 7px #2a2e30}.pace-mac-osx-yellow .pace .pace-progress{background-color:#edc30e;box-shadow:inset -1px 0 #edc30e,inset 0 -1px #edc30e,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-yellow .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-yellow .pace-progress{color:#edc30e}.pace-green .pace .pace-progress{background:#21b978}.pace-barber-shop-green .pace{background:#fff}.pace-barber-shop-green .pace .pace-progress{background:#21b978}.pace-barber-shop-green .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-green .pace .pace-progress:after{color:rgba(33,185,120,.2)}.pace-bounce-green .pace .pace-activity{background:#21b978}.pace-center-atom-green .pace-progress{height:100px;width:80px}.pace-center-atom-green .pace-progress:before{background:#21b978;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-green .pace-activity,.pace-center-atom-green .pace-activity:after,.pace-center-atom-green .pace-activity:before{border-color:#21b978}.pace-center-circle-green .pace .pace-progress{background:rgba(33,185,120,.8);color:#fff}.pace-center-radar-green .pace .pace-activity,.pace-center-radar-green .pace .pace-activity:before{border-color:#21b978 transparent transparent}.pace-center-simple-green .pace{background:#fff;border-color:#21b978}.pace-center-simple-green .pace .pace-progress{background:#21b978}.pace-material-green .pace{color:#21b978}.pace-corner-indicator-green .pace .pace-activity{background:#21b978}.pace-corner-indicator-green .pace .pace-activity:after,.pace-corner-indicator-green .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-green .pace .pace-activity:before{border-right-color:rgba(33,185,120,.2);border-left-color:rgba(33,185,120,.2)}.pace-corner-indicator-green .pace .pace-activity:after{border-top-color:rgba(33,185,120,.2);border-bottom-color:rgba(33,185,120,.2)}.pace-fill-left-green .pace .pace-progress{background-color:rgba(33,185,120,.2)}.pace-flash-green .pace .pace-progress{background:#21b978}.pace-flash-green .pace .pace-progress-inner{box-shadow:0 0 10px #21b978,0 0 5px #21b978}.pace-flash-green .pace .pace-activity{border-top-color:#21b978;border-left-color:#21b978}.pace-loading-bar-green .pace .pace-progress{background:#21b978;color:#21b978;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-green .pace .pace-activity{box-shadow:inset 0 0 0 2px #21b978,inset 0 0 0 7px #fff}.pace-mac-osx-green .pace .pace-progress{background-color:#21b978;box-shadow:inset -1px 0 #21b978,inset 0 -1px #21b978,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-green .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-green .pace-progress{color:#21b978}.pace-teal .pace .pace-progress{background:#20c997}.pace-barber-shop-teal .pace{background:#fff}.pace-barber-shop-teal .pace .pace-progress{background:#20c997}.pace-barber-shop-teal .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-teal .pace .pace-progress:after{color:rgba(32,201,151,.2)}.pace-bounce-teal .pace .pace-activity{background:#20c997}.pace-center-atom-teal .pace-progress{height:100px;width:80px}.pace-center-atom-teal .pace-progress:before{background:#20c997;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-teal .pace-activity,.pace-center-atom-teal .pace-activity:after,.pace-center-atom-teal .pace-activity:before{border-color:#20c997}.pace-center-circle-teal .pace .pace-progress{background:rgba(32,201,151,.8);color:#fff}.pace-center-radar-teal .pace .pace-activity,.pace-center-radar-teal .pace .pace-activity:before{border-color:#20c997 transparent transparent}.pace-center-simple-teal .pace{background:#fff;border-color:#20c997}.pace-center-simple-teal .pace .pace-progress{background:#20c997}.pace-material-teal .pace{color:#20c997}.pace-corner-indicator-teal .pace .pace-activity{background:#20c997}.pace-corner-indicator-teal .pace .pace-activity:after,.pace-corner-indicator-teal .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-teal .pace .pace-activity:before{border-right-color:rgba(32,201,151,.2);border-left-color:rgba(32,201,151,.2)}.pace-corner-indicator-teal .pace .pace-activity:after{border-top-color:rgba(32,201,151,.2);border-bottom-color:rgba(32,201,151,.2)}.pace-fill-left-teal .pace .pace-progress{background-color:rgba(32,201,151,.2)}.pace-flash-teal .pace .pace-progress{background:#20c997}.pace-flash-teal .pace .pace-progress-inner{box-shadow:0 0 10px #20c997,0 0 5px #20c997}.pace-flash-teal .pace .pace-activity{border-top-color:#20c997;border-left-color:#20c997}.pace-loading-bar-teal .pace .pace-progress{background:#20c997;color:#20c997;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-teal .pace .pace-activity{box-shadow:inset 0 0 0 2px #20c997,inset 0 0 0 7px #fff}.pace-mac-osx-teal .pace .pace-progress{background-color:#20c997;box-shadow:inset -1px 0 #20c997,inset 0 -1px #20c997,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-teal .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-teal .pace-progress{color:#20c997}.pace-cyan .pace .pace-progress{background:#7367f0}.pace-barber-shop-cyan .pace{background:#fff}.pace-barber-shop-cyan .pace .pace-progress{background:#7367f0}.pace-barber-shop-cyan .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-cyan .pace .pace-progress:after{color:rgba(115,103,240,.2)}.pace-bounce-cyan .pace .pace-activity{background:#7367f0}.pace-center-atom-cyan .pace-progress{height:100px;width:80px}.pace-center-atom-cyan .pace-progress:before{background:#7367f0;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-cyan .pace-activity,.pace-center-atom-cyan .pace-activity:after,.pace-center-atom-cyan .pace-activity:before{border-color:#7367f0}.pace-center-circle-cyan .pace .pace-progress{background:rgba(115,103,240,.8);color:#fff}.pace-center-radar-cyan .pace .pace-activity,.pace-center-radar-cyan .pace .pace-activity:before{border-color:#7367f0 transparent transparent}.pace-center-simple-cyan .pace{background:#fff;border-color:#7367f0}.pace-center-simple-cyan .pace .pace-progress{background:#7367f0}.pace-material-cyan .pace{color:#7367f0}.pace-corner-indicator-cyan .pace .pace-activity{background:#7367f0}.pace-corner-indicator-cyan .pace .pace-activity:after,.pace-corner-indicator-cyan .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-cyan .pace .pace-activity:before{border-right-color:rgba(115,103,240,.2);border-left-color:rgba(115,103,240,.2)}.pace-corner-indicator-cyan .pace .pace-activity:after{border-top-color:rgba(115,103,240,.2);border-bottom-color:rgba(115,103,240,.2)}.pace-fill-left-cyan .pace .pace-progress{background-color:rgba(115,103,240,.2)}.pace-flash-cyan .pace .pace-progress{background:#7367f0}.pace-flash-cyan .pace .pace-progress-inner{box-shadow:0 0 10px #7367f0,0 0 5px #7367f0}.pace-flash-cyan .pace .pace-activity{border-top-color:#7367f0;border-left-color:#7367f0}.pace-loading-bar-cyan .pace .pace-progress{background:#7367f0;color:#7367f0;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-cyan .pace .pace-activity{box-shadow:inset 0 0 0 2px #7367f0,inset 0 0 0 7px #fff}.pace-mac-osx-cyan .pace .pace-progress{background-color:#7367f0;box-shadow:inset -1px 0 #7367f0,inset 0 -1px #7367f0,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-cyan .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-cyan .pace-progress{color:#7367f0}.pace-white .pace .pace-progress{background:#fff}.pace-barber-shop-white .pace{background:#2a2e30}.pace-barber-shop-white .pace .pace-progress{background:#fff}.pace-barber-shop-white .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-white .pace .pace-progress:after{color:hsla(0,0%,100%,.2)}.pace-bounce-white .pace .pace-activity{background:#fff}.pace-center-atom-white .pace-progress{height:100px;width:80px}.pace-center-atom-white .pace-progress:before{background:#fff;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-white .pace-activity,.pace-center-atom-white .pace-activity:after,.pace-center-atom-white .pace-activity:before{border-color:#fff}.pace-center-circle-white .pace .pace-progress{background:hsla(0,0%,100%,.8);color:#2a2e30}.pace-center-radar-white .pace .pace-activity,.pace-center-radar-white .pace .pace-activity:before{border-color:#fff transparent transparent}.pace-center-simple-white .pace{background:#2a2e30;border-color:#fff}.pace-center-simple-white .pace .pace-progress{background:#fff}.pace-material-white .pace{color:#fff}.pace-corner-indicator-white .pace .pace-activity{background:#fff}.pace-corner-indicator-white .pace .pace-activity:after,.pace-corner-indicator-white .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-white .pace .pace-activity:before{border-right-color:hsla(0,0%,100%,.2);border-left-color:hsla(0,0%,100%,.2)}.pace-corner-indicator-white .pace .pace-activity:after{border-top-color:hsla(0,0%,100%,.2);border-bottom-color:hsla(0,0%,100%,.2)}.pace-fill-left-white .pace .pace-progress{background-color:hsla(0,0%,100%,.2)}.pace-flash-white .pace .pace-progress{background:#fff}.pace-flash-white .pace .pace-progress-inner{box-shadow:0 0 10px #fff,0 0 5px #fff}.pace-flash-white .pace .pace-activity{border-top-color:#fff;border-left-color:#fff}.pace-loading-bar-white .pace .pace-progress{background:#fff;color:#fff;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-white .pace .pace-activity{box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 7px #2a2e30}.pace-mac-osx-white .pace .pace-progress{background-color:#fff;box-shadow:inset -1px 0 #fff,inset 0 -1px #fff,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-white .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-white .pace-progress{color:#fff}.pace-gray .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-gray .pace{background:#2a2e30}.pace-barber-shop-gray .pace .pace-progress{background:#b8c2cc}.pace-barber-shop-gray .pace .pace-activity{background-image:linear-gradient(45deg,rgba(42,46,48,.2) 25%,transparent 0,transparent 50%,rgba(42,46,48,.2) 0,rgba(42,46,48,.2) 75%,transparent 0,transparent)}.pace-big-counter-gray .pace .pace-progress:after{color:rgba(184,194,204,.2)}.pace-bounce-gray .pace .pace-activity{background:#b8c2cc}.pace-center-atom-gray .pace-progress{height:100px;width:80px}.pace-center-atom-gray .pace-progress:before{background:#b8c2cc;color:#2a2e30;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-gray .pace-activity,.pace-center-atom-gray .pace-activity:after,.pace-center-atom-gray .pace-activity:before{border-color:#b8c2cc}.pace-center-circle-gray .pace .pace-progress{background:rgba(184,194,204,.8);color:#2a2e30}.pace-center-radar-gray .pace .pace-activity,.pace-center-radar-gray .pace .pace-activity:before{border-color:#b8c2cc transparent transparent}.pace-center-simple-gray .pace{background:#2a2e30;border-color:#b8c2cc}.pace-center-simple-gray .pace .pace-progress{background:#b8c2cc}.pace-material-gray .pace{color:#b8c2cc}.pace-corner-indicator-gray .pace .pace-activity{background:#b8c2cc}.pace-corner-indicator-gray .pace .pace-activity:after,.pace-corner-indicator-gray .pace .pace-activity:before{border:5px solid #2a2e30}.pace-corner-indicator-gray .pace .pace-activity:before{border-right-color:rgba(184,194,204,.2);border-left-color:rgba(184,194,204,.2)}.pace-corner-indicator-gray .pace .pace-activity:after{border-top-color:rgba(184,194,204,.2);border-bottom-color:rgba(184,194,204,.2)}.pace-fill-left-gray .pace .pace-progress{background-color:rgba(184,194,204,.2)}.pace-flash-gray .pace .pace-progress{background:#b8c2cc}.pace-flash-gray .pace .pace-progress-inner{box-shadow:0 0 10px #b8c2cc,0 0 5px #b8c2cc}.pace-flash-gray .pace .pace-activity{border-top-color:#b8c2cc;border-left-color:#b8c2cc}.pace-loading-bar-gray .pace .pace-progress{background:#b8c2cc;color:#b8c2cc;box-shadow:120px 0 #2a2e30,240px 0 #2a2e30}.pace-loading-bar-gray .pace .pace-activity{box-shadow:inset 0 0 0 2px #b8c2cc,inset 0 0 0 7px #2a2e30}.pace-mac-osx-gray .pace .pace-progress{background-color:#b8c2cc;box-shadow:inset -1px 0 #b8c2cc,inset 0 -1px #b8c2cc,inset 0 2px rgba(42,46,48,.5),inset 0 6px rgba(42,46,48,.3)}.pace-mac-osx-gray .pace .pace-activity{background-image:radial-gradient(rgba(42,46,48,.65) 0,rgba(42,46,48,.15) 100%);height:12px}.pace-progress-color-gray .pace-progress{color:#b8c2cc}.pace-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-barber-shop-gray-dark .pace{background:#fff}.pace-barber-shop-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-barber-shop-gray-dark .pace .pace-activity{background-image:linear-gradient(45deg,hsla(0,0%,100%,.2) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.2) 75%,transparent 0,transparent)}.pace-big-counter-gray-dark .pace .pace-progress:after{color:rgba(30,30,30,.2)}.pace-bounce-gray-dark .pace .pace-activity{background:#1e1e1e}.pace-center-atom-gray-dark .pace-progress{height:100px;width:80px}.pace-center-atom-gray-dark .pace-progress:before{background:#1e1e1e;color:#fff;font-size:.8rem;line-height:.7rem;padding-top:17%}.pace-center-atom-gray-dark .pace-activity,.pace-center-atom-gray-dark .pace-activity:after,.pace-center-atom-gray-dark .pace-activity:before{border-color:#1e1e1e}.pace-center-circle-gray-dark .pace .pace-progress{background:rgba(30,30,30,.8);color:#fff}.pace-center-radar-gray-dark .pace .pace-activity,.pace-center-radar-gray-dark .pace .pace-activity:before{border-color:#1e1e1e transparent transparent}.pace-center-simple-gray-dark .pace{background:#fff;border-color:#1e1e1e}.pace-center-simple-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-material-gray-dark .pace{color:#1e1e1e}.pace-corner-indicator-gray-dark .pace .pace-activity{background:#1e1e1e}.pace-corner-indicator-gray-dark .pace .pace-activity:after,.pace-corner-indicator-gray-dark .pace .pace-activity:before{border:5px solid #fff}.pace-corner-indicator-gray-dark .pace .pace-activity:before{border-right-color:rgba(30,30,30,.2);border-left-color:rgba(30,30,30,.2)}.pace-corner-indicator-gray-dark .pace .pace-activity:after{border-top-color:rgba(30,30,30,.2);border-bottom-color:rgba(30,30,30,.2)}.pace-fill-left-gray-dark .pace .pace-progress{background-color:rgba(30,30,30,.2)}.pace-flash-gray-dark .pace .pace-progress{background:#1e1e1e}.pace-flash-gray-dark .pace .pace-progress-inner{box-shadow:0 0 10px #1e1e1e,0 0 5px #1e1e1e}.pace-flash-gray-dark .pace .pace-activity{border-top-color:#1e1e1e;border-left-color:#1e1e1e}.pace-loading-bar-gray-dark .pace .pace-progress{background:#1e1e1e;color:#1e1e1e;box-shadow:120px 0 #fff,240px 0 #fff}.pace-loading-bar-gray-dark .pace .pace-activity{box-shadow:inset 0 0 0 2px #1e1e1e,inset 0 0 0 7px #fff}.pace-mac-osx-gray-dark .pace .pace-progress{background-color:#1e1e1e;box-shadow:inset -1px 0 #1e1e1e,inset 0 -1px #1e1e1e,inset 0 2px hsla(0,0%,100%,.5),inset 0 6px hsla(0,0%,100%,.3)}.pace-mac-osx-gray-dark .pace .pace-activity{background-image:radial-gradient(hsla(0,0%,100%,.65) 0,hsla(0,0%,100%,.15) 100%);height:12px}.pace-progress-color-gray-dark .pace-progress{color:#1e1e1e}.jqstooltip{height:auto!important;padding:5px!important;width:auto!important}.connectedSortable{min-height:100px}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sort-highlight{background:#babfc7;border:1px dashed #dae1e7;margin-bottom:10px}.chart{overflow:hidden;position:relative}.border-transparent{border-color:transparent!important}.description-block{display:block;margin:10px 0;text-align:center}.description-block.margin-bottom{margin-bottom:25px}.description-block>.description-header{font-size:16px;font-weight:600;margin:0;padding:0}.description-block>.description-text{text-transform:uppercase}.description-block .description-icon{font-size:16px}.list-group-unbordered>.list-group-item{border-left:0;border-radius:0;border-right:0;padding-left:0;padding-right:0}.list-header{color:#b8c2cc;font-size:15px;font-weight:700;padding:10px 4px}.list-seperator{background:rgba(34,41,47,.125);height:1px;margin:15px 0 9px}.list-link>a{color:#b8c2cc;padding:4px}.list-link>a:hover{color:#2a2e30}.user-block{float:left}.user-block img{float:left;height:40px;width:40px}.user-block .comment,.user-block .description,.user-block .username{display:block;margin-left:50px}.user-block .username{font-size:16px;font-weight:600;margin-top:-1px}.user-block .description{color:#b8c2cc;font-size:13px;margin-top:-3px}.user-block.user-block-sm img{width:1.875rem;height:1.875rem}.user-block.user-block-sm .comment,.user-block.user-block-sm .description,.user-block.user-block-sm .username{margin-left:40px}.user-block.user-block-sm .username{font-size:14px}.img-lg,.img-md,.img-sm{float:left}.img-sm{height:1.875rem;width:1.875rem}.img-sm+.img-push{margin-left:2.5rem}.img-md{width:3.75rem;height:3.75rem}.img-md+.img-push{margin-left:4.375rem}.img-lg{width:6.25rem;height:6.25rem}.img-lg+.img-push{margin-left:6.875rem}.img-bordered{border:3px solid #adb5bd;padding:3px}.img-bordered-sm{border:2px solid #adb5bd;padding:2px}.img-rounded{border-radius:.5rem}.img-circle{border-radius:50%}.img-size-32,.img-size-50,.img-size-64{height:auto}.img-size-64{width:64px}.img-size-50{width:50px}.img-size-32{width:32px}.size-32,.size-40,.size-50{display:block;text-align:center}.size-32{height:32px;line-height:32px;width:32px}.size-40{height:40px;line-height:40px;width:40px}.size-50{height:50px;line-height:50px;width:50px}.attachment-block{background:#babfc7;border:1px solid rgba(34,41,47,.125);margin-bottom:10px;padding:5px}.attachment-block .attachment-img{float:left;height:auto;max-height:100px;max-width:100px}.attachment-block .attachment-pushed{margin-left:110px}.attachment-block .attachment-heading{margin:0}.attachment-block .attachment-text{color:#4e5154}.card>.loading-img,.card>.overlay,.info-box>.loading-img,.info-box>.overlay,.overlay-wrapper>.loading-img,.overlay-wrapper>.overlay,.small-box>.loading-img,.small-box>.overlay{height:100%;left:0;position:absolute;top:0;width:100%}.card .overlay,.info-box .overlay,.overlay-wrapper .overlay,.small-box .overlay{border-radius:.5rem;align-items:center;background:hsla(0,0%,100%,.7);display:flex;justify-content:center;z-index:50}.card .overlay>.fa,.card .overlay>.fab,.card .overlay>.far,.card .overlay>.fas,.card .overlay>.glyphicon,.card .overlay>.ion,.info-box .overlay>.fa,.info-box .overlay>.fab,.info-box .overlay>.far,.info-box .overlay>.fas,.info-box .overlay>.glyphicon,.info-box .overlay>.ion,.overlay-wrapper .overlay>.fa,.overlay-wrapper .overlay>.fab,.overlay-wrapper .overlay>.far,.overlay-wrapper .overlay>.fas,.overlay-wrapper .overlay>.glyphicon,.overlay-wrapper .overlay>.ion,.small-box .overlay>.fa,.small-box .overlay>.fab,.small-box .overlay>.far,.small-box .overlay>.fas,.small-box .overlay>.glyphicon,.small-box .overlay>.ion{color:#1e1e1e}.card .overlay.dark,.info-box .overlay.dark,.overlay-wrapper .overlay.dark,.small-box .overlay.dark{background:rgba(34,41,47,.5)}.card .overlay.dark>.fa,.card .overlay.dark>.fab,.card .overlay.dark>.far,.card .overlay.dark>.fas,.card .overlay.dark>.glyphicon,.card .overlay.dark>.ion,.info-box .overlay.dark>.fa,.info-box .overlay.dark>.fab,.info-box .overlay.dark>.far,.info-box .overlay.dark>.fas,.info-box .overlay.dark>.glyphicon,.info-box .overlay.dark>.ion,.overlay-wrapper .overlay.dark>.fa,.overlay-wrapper .overlay.dark>.fab,.overlay-wrapper .overlay.dark>.far,.overlay-wrapper .overlay.dark>.fas,.overlay-wrapper .overlay.dark>.glyphicon,.overlay-wrapper .overlay.dark>.ion,.small-box .overlay.dark>.fa,.small-box .overlay.dark>.fab,.small-box .overlay.dark>.far,.small-box .overlay.dark>.fas,.small-box .overlay.dark>.glyphicon,.small-box .overlay.dark>.ion{color:#636363}.tab-pane>.overlay-wrapper{position:relative}.tab-pane>.overlay-wrapper>.overlay{border-top-left-radius:0;border-top-right-radius:0;flex-direction:column;margin-top:-1.25rem;margin-left:-1.25rem;height:calc(100% + 2.5rem);width:calc(100% + 2.5rem)}.tab-pane>.overlay-wrapper>.overlay.dark{color:#fff}.ribbon-wrapper{height:70px;overflow:hidden;position:absolute;right:-2px;top:-2px;width:70px;z-index:10}.ribbon-wrapper.ribbon-lg{height:120px;width:120px}.ribbon-wrapper.ribbon-lg .ribbon{right:0;top:26px;width:160px}.ribbon-wrapper.ribbon-xl{height:180px;width:180px}.ribbon-wrapper.ribbon-xl .ribbon{right:4px;top:47px;width:240px}.ribbon-wrapper .ribbon{box-shadow:0 0 3px rgba(34,41,47,.3);font-size:.8rem;line-height:100%;padding:.375rem 0;position:relative;right:-2px;text-align:center;text-shadow:0 -1px 0 rgba(34,41,47,.4);text-transform:uppercase;top:10px;transform:rotate(45deg);width:90px}.ribbon-wrapper .ribbon:after,.ribbon-wrapper .ribbon:before{border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #9e9e9e;bottom:-3px;content:\"\";position:absolute}.ribbon-wrapper .ribbon:before{left:0}.ribbon-wrapper .ribbon:after{right:0}.back-to-top{bottom:1.25rem;position:fixed;right:1.25rem;z-index:1032}.back-to-top:focus{box-shadow:none}pre{padding:.75rem}blockquote{background:#fff;border-left:.7rem solid #586cb1;margin:1.5em .7rem;padding:.5em .7rem}.box blockquote{background:#ededed}blockquote p:last-child{margin-bottom:0}blockquote h1,blockquote h2,blockquote h3,blockquote h4,blockquote h5,blockquote h6{color:#586cb1;font-size:1.25rem;font-weight:600}blockquote.quote-primary{border-color:#586cb1}blockquote.quote-primary h1,blockquote.quote-primary h2,blockquote.quote-primary h3,blockquote.quote-primary h4,blockquote.quote-primary h5,blockquote.quote-primary h6{color:#586cb1}blockquote.quote-secondary{border-color:#b8c2cc}blockquote.quote-secondary h1,blockquote.quote-secondary h2,blockquote.quote-secondary h3,blockquote.quote-secondary h4,blockquote.quote-secondary h5,blockquote.quote-secondary h6{color:#b8c2cc}blockquote.quote-success{border-color:#21b978}blockquote.quote-success h1,blockquote.quote-success h2,blockquote.quote-success h3,blockquote.quote-success h4,blockquote.quote-success h5,blockquote.quote-success h6{color:#21b978}blockquote.quote-info{border-color:#4277cf}blockquote.quote-info h1,blockquote.quote-info h2,blockquote.quote-info h3,blockquote.quote-info h4,blockquote.quote-info h5,blockquote.quote-info h6{color:#4277cf}blockquote.quote-warning{border-color:#dda451}blockquote.quote-warning h1,blockquote.quote-warning h2,blockquote.quote-warning h3,blockquote.quote-warning h4,blockquote.quote-warning h5,blockquote.quote-warning h6{color:#dda451}blockquote.quote-danger{border-color:#ea5455}blockquote.quote-danger h1,blockquote.quote-danger h2,blockquote.quote-danger h3,blockquote.quote-danger h4,blockquote.quote-danger h5,blockquote.quote-danger h6{color:#ea5455}blockquote.quote-light{border-color:#f7f7f9}blockquote.quote-light h1,blockquote.quote-light h2,blockquote.quote-light h3,blockquote.quote-light h4,blockquote.quote-light h5,blockquote.quote-light h6{color:#f7f7f9}blockquote.quote-dark{border-color:#22292f}blockquote.quote-dark h1,blockquote.quote-dark h2,blockquote.quote-dark h3,blockquote.quote-dark h4,blockquote.quote-dark h5,blockquote.quote-dark h6{color:#22292f}blockquote.quote-lightblue{border-color:#3c8dbc}blockquote.quote-lightblue h1,blockquote.quote-lightblue h2,blockquote.quote-lightblue h3,blockquote.quote-lightblue h4,blockquote.quote-lightblue h5,blockquote.quote-lightblue h6{color:#3c8dbc}blockquote.quote-navy{border-color:#001f3f}blockquote.quote-navy h1,blockquote.quote-navy h2,blockquote.quote-navy h3,blockquote.quote-navy h4,blockquote.quote-navy h5,blockquote.quote-navy h6{color:#001f3f}blockquote.quote-olive{border-color:#3d9970}blockquote.quote-olive h1,blockquote.quote-olive h2,blockquote.quote-olive h3,blockquote.quote-olive h4,blockquote.quote-olive h5,blockquote.quote-olive h6{color:#3d9970}blockquote.quote-lime{border-color:#01ff70}blockquote.quote-lime h1,blockquote.quote-lime h2,blockquote.quote-lime h3,blockquote.quote-lime h4,blockquote.quote-lime h5,blockquote.quote-lime h6{color:#01ff70}blockquote.quote-fuchsia{border-color:#f012be}blockquote.quote-fuchsia h1,blockquote.quote-fuchsia h2,blockquote.quote-fuchsia h3,blockquote.quote-fuchsia h4,blockquote.quote-fuchsia h5,blockquote.quote-fuchsia h6{color:#f012be}blockquote.quote-maroon{border-color:#d81b60}blockquote.quote-maroon h1,blockquote.quote-maroon h2,blockquote.quote-maroon h3,blockquote.quote-maroon h4,blockquote.quote-maroon h5,blockquote.quote-maroon h6{color:#d81b60}blockquote.quote-blue{border-color:#3085d6}blockquote.quote-blue h1,blockquote.quote-blue h2,blockquote.quote-blue h3,blockquote.quote-blue h4,blockquote.quote-blue h5,blockquote.quote-blue h6{color:#3085d6}blockquote.quote-indigo{border-color:#5c6bc6}blockquote.quote-indigo h1,blockquote.quote-indigo h2,blockquote.quote-indigo h3,blockquote.quote-indigo h4,blockquote.quote-indigo h5,blockquote.quote-indigo h6{color:#5c6bc6}blockquote.quote-purple{border-color:#6f42c1}blockquote.quote-purple h1,blockquote.quote-purple h2,blockquote.quote-purple h3,blockquote.quote-purple h4,blockquote.quote-purple h5,blockquote.quote-purple h6{color:#6f42c1}blockquote.quote-pink{border-color:#ff8acc}blockquote.quote-pink h1,blockquote.quote-pink h2,blockquote.quote-pink h3,blockquote.quote-pink h4,blockquote.quote-pink h5,blockquote.quote-pink h6{color:#ff8acc}blockquote.quote-red{border-color:#ea5455}blockquote.quote-red h1,blockquote.quote-red h2,blockquote.quote-red h3,blockquote.quote-red h4,blockquote.quote-red h5,blockquote.quote-red h6{color:#ea5455}blockquote.quote-orange{border-color:#dda451}blockquote.quote-orange h1,blockquote.quote-orange h2,blockquote.quote-orange h3,blockquote.quote-orange h4,blockquote.quote-orange h5,blockquote.quote-orange h6{color:#dda451}blockquote.quote-yellow{border-color:#edc30e}blockquote.quote-yellow h1,blockquote.quote-yellow h2,blockquote.quote-yellow h3,blockquote.quote-yellow h4,blockquote.quote-yellow h5,blockquote.quote-yellow h6{color:#edc30e}blockquote.quote-green{border-color:#21b978}blockquote.quote-green h1,blockquote.quote-green h2,blockquote.quote-green h3,blockquote.quote-green h4,blockquote.quote-green h5,blockquote.quote-green h6{color:#21b978}blockquote.quote-teal{border-color:#20c997}blockquote.quote-teal h1,blockquote.quote-teal h2,blockquote.quote-teal h3,blockquote.quote-teal h4,blockquote.quote-teal h5,blockquote.quote-teal h6{color:#20c997}blockquote.quote-cyan{border-color:#7367f0}blockquote.quote-cyan h1,blockquote.quote-cyan h2,blockquote.quote-cyan h3,blockquote.quote-cyan h4,blockquote.quote-cyan h5,blockquote.quote-cyan h6{color:#7367f0}blockquote.quote-white{border-color:#fff}blockquote.quote-white h1,blockquote.quote-white h2,blockquote.quote-white h3,blockquote.quote-white h4,blockquote.quote-white h5,blockquote.quote-white h6{color:#fff}blockquote.quote-gray{border-color:#b8c2cc}blockquote.quote-gray h1,blockquote.quote-gray h2,blockquote.quote-gray h3,blockquote.quote-gray h4,blockquote.quote-gray h5,blockquote.quote-gray h6{color:#b8c2cc}blockquote.quote-gray-dark{border-color:#1e1e1e}blockquote.quote-gray-dark h1,blockquote.quote-gray-dark h2,blockquote.quote-gray-dark h3,blockquote.quote-gray-dark h4,blockquote.quote-gray-dark h5,blockquote.quote-gray-dark h6{color:#1e1e1e}.tab-custom-content{border-top:1px solid #dae1e7;margin-top:.5rem;padding-top:.5rem}.nav+.tab-custom-content{border-top:none;border-bottom:1px solid #dae1e7;margin-top:0;margin-bottom:.5rem;padding-bottom:.5rem}.badge-btn{border-radius:.15rem;font-size:.75rem;font-weight:400;padding:.25rem .5rem}.badge-btn.badge-pill{padding:.375rem .6rem}@media print{.content-header,.main-header,.main-sidebar,.no-print{display:none!important}.content-wrapper,.main-footer{transform:translate(0);margin-left:0!important;min-height:0!important}.layout-fixed .content-wrapper{padding-top:0!important}.invoice{border:0;margin:0;padding:0;width:100%}.invoice-col{float:left;width:33.3333333%}.table-responsive{overflow:auto}.table-responsive>.table tr td,.table-responsive>.table tr th{white-space:normal!important}}.text-bold,.text-bold.table td,.text-bold.table th{font-weight:700}.text-xs{font-size:.75rem!important}.text-md,.text-sm{font-size:1rem!important}.text-lg{font-size:2rem!important}.text-xl{font-size:1.5rem!important}.text-lightblue{color:#3c8dbc}.text-navy{color:#001f3f}.text-olive{color:#3d9970}.text-lime{color:#01ff70}.text-fuchsia{color:#f012be}.text-maroon{color:#d81b60}.text-blue{color:#3085d6}.text-indigo{color:#5c6bc6}.text-purple{color:#6f42c1}.text-pink{color:#ff8acc}.text-red{color:#ea5455}.text-orange{color:#dda451}.text-yellow{color:#edc30e}.text-green{color:#21b978}.text-teal{color:#20c997}.text-cyan{color:#7367f0}.text-white{color:#fff}.text-gray{color:#b8c2cc}.text-gray-dark{color:#1e1e1e}.elevation-0{box-shadow:none!important}.elevation-1{box-shadow:0 1px 3px rgba(34,41,47,.12),0 1px 2px rgba(34,41,47,.24)!important}.elevation-2{box-shadow:0 3px 6px rgba(34,41,47,.16),0 3px 6px rgba(34,41,47,.23)!important}.elevation-3{box-shadow:0 10px 20px rgba(34,41,47,.19),0 6px 6px rgba(34,41,47,.23)!important}.elevation-4{box-shadow:0 14px 28px rgba(34,41,47,.25),0 10px 10px rgba(34,41,47,.22)!important}.elevation-5{box-shadow:0 19px 38px rgba(34,41,47,.3),0 15px 12px rgba(34,41,47,.22)!important}.bg-primary{background-color:#586cb1!important}.bg-primary,.bg-primary>a{color:#fff!important}.bg-primary.btn:hover{border-color:#445692;color:#ececec}.bg-primary.btn.active,.bg-primary.btn:active,.bg-primary.btn:not(:disabled):not(.disabled).active,.bg-primary.btn:not(:disabled):not(.disabled):active{background-color:#445692!important;border-color:#405189;color:#fff}.bg-secondary{background-color:#b8c2cc!important}.bg-secondary,.bg-secondary>a{color:#2a2e30!important}.bg-secondary.btn:hover{border-color:#9aa9b7;color:#181a1c}.bg-secondary.btn.active,.bg-secondary.btn:active,.bg-secondary.btn:not(:disabled):not(.disabled).active,.bg-secondary.btn:not(:disabled):not(.disabled):active{background-color:#9aa9b7!important;border-color:#93a2b1;color:#2a2e30}.bg-success{background-color:#21b978!important}.bg-success,.bg-success>a{color:#fff!important}.bg-success.btn:hover{border-color:#198e5c;color:#ececec}.bg-success.btn.active,.bg-success.btn:active,.bg-success.btn:not(:disabled):not(.disabled).active,.bg-success.btn:not(:disabled):not(.disabled):active{background-color:#198e5c!important;border-color:#178355;color:#fff}.bg-info{background-color:#4277cf!important}.bg-info,.bg-info>a{color:#fff!important}.bg-info.btn:hover{border-color:#2d5fb1;color:#ececec}.bg-info.btn.active,.bg-info.btn:active,.bg-info.btn:not(:disabled):not(.disabled).active,.bg-info.btn:not(:disabled):not(.disabled):active{background-color:#2d5fb1!important;border-color:#2a59a7;color:#fff}.bg-warning{background-color:#dda451!important}.bg-warning,.bg-warning>a{color:#2a2e30!important}.bg-warning.btn:hover{border-color:#d28d29;color:#181a1c}.bg-warning.btn.active,.bg-warning.btn:active,.bg-warning.btn:not(:disabled):not(.disabled).active,.bg-warning.btn:not(:disabled):not(.disabled):active{background-color:#d28d29!important;border-color:#c78627;color:#2a2e30}.bg-danger{background-color:#ea5455!important}.bg-danger,.bg-danger>a{color:#fff!important}.bg-danger.btn:hover{border-color:#e42728;color:#ececec}.bg-danger.btn.active,.bg-danger.btn:active,.bg-danger.btn:not(:disabled):not(.disabled).active,.bg-danger.btn:not(:disabled):not(.disabled):active{background-color:#e42728!important;border-color:#e21c1d;color:#fff}.bg-light{background-color:#f7f7f9!important}.bg-light,.bg-light>a{color:#2a2e30!important}.bg-light.btn:hover{border-color:#dadae3;color:#181a1c}.bg-light.btn.active,.bg-light.btn:active,.bg-light.btn:not(:disabled):not(.disabled).active,.bg-light.btn:not(:disabled):not(.disabled):active{background-color:#dadae3!important;border-color:#d3d3de;color:#2a2e30}.bg-dark{background-color:#22292f!important}.bg-dark,.bg-dark>a{color:#fff!important}.bg-dark.btn:hover{border-color:#0d0f11;color:#ececec}.bg-dark.btn.active,.bg-dark.btn:active,.bg-dark.btn:not(:disabled):not(.disabled).active,.bg-dark.btn:not(:disabled):not(.disabled):active{background-color:#0d0f11!important;border-color:#07090a;color:#fff}.bg-lightblue{background-color:#3c8dbc!important}.bg-lightblue,.bg-lightblue>a{color:#fff!important}.bg-lightblue.btn:hover{border-color:#307095;color:#ececec}.bg-lightblue.btn.active,.bg-lightblue.btn:active,.bg-lightblue.btn:not(:disabled):not(.disabled).active,.bg-lightblue.btn:not(:disabled):not(.disabled):active{background-color:#307095!important;border-color:#2d698c;color:#fff}.bg-navy{background-color:#001f3f!important}.bg-navy,.bg-navy>a{color:#fff!important}.bg-navy.btn:hover{border-color:#00060c;color:#ececec}.bg-navy.btn.active,.bg-navy.btn:active,.bg-navy.btn:not(:disabled):not(.disabled).active,.bg-navy.btn:not(:disabled):not(.disabled):active{background-color:#00060c!important;border-color:#000;color:#fff}.bg-olive{background-color:#3d9970!important}.bg-olive,.bg-olive>a{color:#fff!important}.bg-olive.btn:hover{border-color:#2e7555;color:#ececec}.bg-olive.btn.active,.bg-olive.btn:active,.bg-olive.btn:not(:disabled):not(.disabled).active,.bg-olive.btn:not(:disabled):not(.disabled):active{background-color:#2e7555!important;border-color:#2b6b4f;color:#fff}.bg-lime{background-color:#01ff70!important}.bg-lime,.bg-lime>a{color:#2a2e30!important}.bg-lime.btn:hover{border-color:#00cd5a;color:#181a1c}.bg-lime.btn.active,.bg-lime.btn:active,.bg-lime.btn:not(:disabled):not(.disabled).active,.bg-lime.btn:not(:disabled):not(.disabled):active{background-color:#00cd5a!important;border-color:#00c054;color:#fff}.bg-fuchsia{background-color:#f012be!important}.bg-fuchsia,.bg-fuchsia>a{color:#fff!important}.bg-fuchsia.btn:hover{border-color:#c30c9a;color:#ececec}.bg-fuchsia.btn.active,.bg-fuchsia.btn:active,.bg-fuchsia.btn:not(:disabled):not(.disabled).active,.bg-fuchsia.btn:not(:disabled):not(.disabled):active{background-color:#c30c9a!important;border-color:#b70c90;color:#fff}.bg-maroon{background-color:#d81b60!important}.bg-maroon,.bg-maroon>a{color:#fff!important}.bg-maroon.btn:hover{border-color:#ab154c;color:#ececec}.bg-maroon.btn.active,.bg-maroon.btn:active,.bg-maroon.btn:not(:disabled):not(.disabled).active,.bg-maroon.btn:not(:disabled):not(.disabled):active{background-color:#ab154c!important;border-color:#9f1447;color:#fff}.bg-blue{background-color:#3085d6!important}.bg-blue,.bg-blue>a{color:#fff!important}.bg-blue.btn:hover{border-color:#236bb0;color:#ececec}.bg-blue.btn.active,.bg-blue.btn:active,.bg-blue.btn:not(:disabled):not(.disabled).active,.bg-blue.btn:not(:disabled):not(.disabled):active{background-color:#236bb0!important;border-color:#2165a5;color:#fff}.bg-indigo{background-color:#5c6bc6!important}.bg-indigo,.bg-indigo>a{color:#fff!important}.bg-indigo.btn:hover{border-color:#3e4eb1;color:#ececec}.bg-indigo.btn.active,.bg-indigo.btn:active,.bg-indigo.btn:not(:disabled):not(.disabled).active,.bg-indigo.btn:not(:disabled):not(.disabled):active{background-color:#3e4eb1!important;border-color:#3b4aa8;color:#fff}.bg-purple{background-color:#6f42c1!important}.bg-purple,.bg-purple>a{color:#fff!important}.bg-purple.btn:hover{border-color:#59339d;color:#ececec}.bg-purple.btn.active,.bg-purple.btn:active,.bg-purple.btn:not(:disabled):not(.disabled).active,.bg-purple.btn:not(:disabled):not(.disabled):active{background-color:#59339d!important;border-color:#533093;color:#fff}.bg-pink{background-color:#ff8acc!important}.bg-pink,.bg-pink>a{color:#2a2e30!important}.bg-pink.btn:hover{border-color:#ff57b6;color:#181a1c}.bg-pink.btn.active,.bg-pink.btn:active,.bg-pink.btn:not(:disabled):not(.disabled).active,.bg-pink.btn:not(:disabled):not(.disabled):active{background-color:#ff57b6!important;border-color:#ff4ab0;color:#fff}.bg-red{background-color:#ea5455!important}.bg-red,.bg-red>a{color:#fff!important}.bg-red.btn:hover{border-color:#e42728;color:#ececec}.bg-red.btn.active,.bg-red.btn:active,.bg-red.btn:not(:disabled):not(.disabled).active,.bg-red.btn:not(:disabled):not(.disabled):active{background-color:#e42728!important;border-color:#e21c1d;color:#fff}.bg-orange{background-color:#dda451!important}.bg-orange,.bg-orange>a{color:#2a2e30!important}.bg-orange.btn:hover{border-color:#d28d29;color:#181a1c}.bg-orange.btn.active,.bg-orange.btn:active,.bg-orange.btn:not(:disabled):not(.disabled).active,.bg-orange.btn:not(:disabled):not(.disabled):active{background-color:#d28d29!important;border-color:#c78627;color:#2a2e30}.bg-yellow{background-color:#edc30e!important}.bg-yellow,.bg-yellow>a{color:#2a2e30!important}.bg-yellow.btn:hover{border-color:#bd9b0b;color:#181a1c}.bg-yellow.btn.active,.bg-yellow.btn:active,.bg-yellow.btn:not(:disabled):not(.disabled).active,.bg-yellow.btn:not(:disabled):not(.disabled):active{background-color:#bd9b0b!important;border-color:#b1910a;color:#fff}.bg-green{background-color:#21b978!important}.bg-green,.bg-green>a{color:#fff!important}.bg-green.btn:hover{border-color:#198e5c;color:#ececec}.bg-green.btn.active,.bg-green.btn:active,.bg-green.btn:not(:disabled):not(.disabled).active,.bg-green.btn:not(:disabled):not(.disabled):active{background-color:#198e5c!important;border-color:#178355;color:#fff}.bg-teal{background-color:#20c997!important}.bg-teal,.bg-teal>a{color:#fff!important}.bg-teal.btn:hover{border-color:#199d76;color:#ececec}.bg-teal.btn.active,.bg-teal.btn:active,.bg-teal.btn:not(:disabled):not(.disabled).active,.bg-teal.btn:not(:disabled):not(.disabled):active{background-color:#199d76!important;border-color:#17926e;color:#fff}.bg-cyan{background-color:#7367f0!important}.bg-cyan,.bg-cyan>a{color:#fff!important}.bg-cyan.btn:hover{border-color:#4839eb;color:#ececec}.bg-cyan.btn.active,.bg-cyan.btn:active,.bg-cyan.btn:not(:disabled):not(.disabled).active,.bg-cyan.btn:not(:disabled):not(.disabled):active{background-color:#4839eb!important;border-color:#3e2dea;color:#fff}.bg-white{background-color:#fff!important}.bg-white,.bg-white>a{color:#2a2e30!important}.bg-white.btn:hover{border-color:#e6e6e6;color:#181a1c}.bg-white.btn.active,.bg-white.btn:active,.bg-white.btn:not(:disabled):not(.disabled).active,.bg-white.btn:not(:disabled):not(.disabled):active{background-color:#e6e6e6!important;border-color:#dfdfdf;color:#2a2e30}.bg-gray{background-color:#b8c2cc!important}.bg-gray,.bg-gray>a{color:#2a2e30!important}.bg-gray.btn:hover{border-color:#9aa9b7;color:#181a1c}.bg-gray.btn.active,.bg-gray.btn:active,.bg-gray.btn:not(:disabled):not(.disabled).active,.bg-gray.btn:not(:disabled):not(.disabled):active{background-color:#9aa9b7!important;border-color:#93a2b1;color:#2a2e30}.bg-gray-dark{background-color:#1e1e1e!important}.bg-gray-dark,.bg-gray-dark>a{color:#fff!important}.bg-gray-dark.btn:hover{border-color:#050505;color:#ececec}.bg-gray-dark.btn.active,.bg-gray-dark.btn:active,.bg-gray-dark.btn:not(:disabled):not(.disabled).active,.bg-gray-dark.btn:not(:disabled):not(.disabled):active{background-color:#050505!important;border-color:#000;color:#fff}.bg-gray{background-color:#adb5bd;color:#2a2e30}.bg-gray-light{background-color:#f5f5f5;color:#2a2e30!important}.bg-black{background-color:#22292f;color:#fff!important}.bg-white{background-color:#fff;color:#2a2e30!important}.bg-gradient-primary{color:#fff;background:#586cb1 linear-gradient(180deg,#6f80bc,#586cb1) repeat-x!important}.bg-gradient-primary.btn.disabled,.bg-gradient-primary.btn:disabled,.bg-gradient-primary.btn:not(:disabled):not(.disabled).active,.bg-gradient-primary.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-primary.btn.dropdown-toggle{background-image:none!important}.bg-gradient-primary.btn:hover{border-color:#445692;color:#ececec;background:#485b9b linear-gradient(180deg,#6172a9,#485b9b) repeat-x!important}.bg-gradient-primary.btn.active,.bg-gradient-primary.btn:active,.bg-gradient-primary.btn:not(:disabled):not(.disabled).active,.bg-gradient-primary.btn:not(:disabled):not(.disabled):active{border-color:#405189;color:#fff;background:#445692 linear-gradient(180deg,#5e6da1,#445692) repeat-x!important}.bg-gradient-secondary{color:#2a2e30;background:#b8c2cc linear-gradient(180deg,#c0c9d2,#b8c2cc) repeat-x!important}.bg-gradient-secondary.btn.disabled,.bg-gradient-secondary.btn:disabled,.bg-gradient-secondary.btn:not(:disabled):not(.disabled).active,.bg-gradient-secondary.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-secondary.btn.dropdown-toggle{background-image:none!important}.bg-gradient-secondary.btn:hover{border-color:#9aa9b7;color:#181a1c;background:#a2afbc linear-gradient(180deg,#aeb9c5,#a2afbc) repeat-x!important}.bg-gradient-secondary.btn.active,.bg-gradient-secondary.btn:active,.bg-gradient-secondary.btn:not(:disabled):not(.disabled).active,.bg-gradient-secondary.btn:not(:disabled):not(.disabled):active{border-color:#93a2b1;color:#2a2e30;background:#9aa9b7 linear-gradient(180deg,#a7b4c1,#9aa9b7) repeat-x!important}.bg-gradient-success{color:#fff;background:#21b978 linear-gradient(180deg,#40c18b,#21b978) repeat-x!important}.bg-gradient-success.btn.disabled,.bg-gradient-success.btn:disabled,.bg-gradient-success.btn:not(:disabled):not(.disabled).active,.bg-gradient-success.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-success.btn.dropdown-toggle{background-image:none!important}.bg-gradient-success.btn:hover{border-color:#198e5c;color:#ececec;background:#1b9963 linear-gradient(180deg,#3ba679,#1b9963) repeat-x!important}.bg-gradient-success.btn.active,.bg-gradient-success.btn:active,.bg-gradient-success.btn:not(:disabled):not(.disabled).active,.bg-gradient-success.btn:not(:disabled):not(.disabled):active{border-color:#178355;color:#fff;background:#198e5c linear-gradient(180deg,#399d73,#198e5c) repeat-x!important}.bg-gradient-info{color:#fff;background:#4277cf linear-gradient(180deg,#5c89d5,#4277cf) repeat-x!important}.bg-gradient-info.btn.disabled,.bg-gradient-info.btn:disabled,.bg-gradient-info.btn:not(:disabled):not(.disabled).active,.bg-gradient-info.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-info.btn.dropdown-toggle{background-image:none!important}.bg-gradient-info.btn:hover{border-color:#2d5fb1;color:#ececec;background:#3064bb linear-gradient(180deg,#4d79c4,#3064bb) repeat-x!important}.bg-gradient-info.btn.active,.bg-gradient-info.btn:active,.bg-gradient-info.btn:not(:disabled):not(.disabled).active,.bg-gradient-info.btn:not(:disabled):not(.disabled):active{border-color:#2a59a7;color:#fff;background:#2d5fb1 linear-gradient(180deg,#4a75bc,#2d5fb1) repeat-x!important}.bg-gradient-warning{color:#2a2e30;background:#dda451 linear-gradient(180deg,#e0b06a,#dda451) repeat-x!important}.bg-gradient-warning.btn.disabled,.bg-gradient-warning.btn:disabled,.bg-gradient-warning.btn:not(:disabled):not(.disabled).active,.bg-gradient-warning.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-warning.btn.dropdown-toggle{background-image:none!important}.bg-gradient-warning.btn:hover{border-color:#d28d29;color:#181a1c;background:#d79331 linear-gradient(180deg,#dba14f,#d79331) repeat-x!important}.bg-gradient-warning.btn.active,.bg-gradient-warning.btn:active,.bg-gradient-warning.btn:not(:disabled):not(.disabled).active,.bg-gradient-warning.btn:not(:disabled):not(.disabled):active{border-color:#c78627;color:#2a2e30;background:#d28d29 linear-gradient(180deg,#d69c48,#d28d29) repeat-x!important}.bg-gradient-danger{color:#fff;background:#ea5455 linear-gradient(180deg,#eb6c6d,#ea5455) repeat-x!important}.bg-gradient-danger.btn.disabled,.bg-gradient-danger.btn:disabled,.bg-gradient-danger.btn:not(:disabled):not(.disabled).active,.bg-gradient-danger.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-danger.btn.dropdown-toggle{background-image:none!important}.bg-gradient-danger.btn:hover{border-color:#e42728;color:#ececec;background:#e63233 linear-gradient(180deg,#e74f50,#e63233) repeat-x!important}.bg-gradient-danger.btn.active,.bg-gradient-danger.btn:active,.bg-gradient-danger.btn:not(:disabled):not(.disabled).active,.bg-gradient-danger.btn:not(:disabled):not(.disabled):active{border-color:#e21c1d;color:#fff;background:#e42728 linear-gradient(180deg,#e64547,#e42728) repeat-x!important}.bg-gradient-light{color:#2a2e30;background:#f7f7f9 linear-gradient(180deg,#f6f6f9,#f7f7f9) repeat-x!important}.bg-gradient-light.btn.disabled,.bg-gradient-light.btn:disabled,.bg-gradient-light.btn:not(:disabled):not(.disabled).active,.bg-gradient-light.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-light.btn.dropdown-toggle{background-image:none!important}.bg-gradient-light.btn:hover{border-color:#dadae3;color:#181a1c;background:#e1e1e9 linear-gradient(180deg,#e3e3eb,#e1e1e9) repeat-x!important}.bg-gradient-light.btn.active,.bg-gradient-light.btn:active,.bg-gradient-light.btn:not(:disabled):not(.disabled).active,.bg-gradient-light.btn:not(:disabled):not(.disabled):active{border-color:#d3d3de;color:#2a2e30;background:#dadae3 linear-gradient(180deg,#dddde6,#dadae3) repeat-x!important}.bg-gradient-dark{color:#fff;background:#22292f linear-gradient(180deg,#41474d,#22292f) repeat-x!important}.bg-gradient-dark.btn.disabled,.bg-gradient-dark.btn:disabled,.bg-gradient-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-dark.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-dark.btn.dropdown-toggle{background-image:none!important}.bg-gradient-dark.btn:hover{border-color:#0d0f11;color:#ececec;background:#121619 linear-gradient(180deg,#33373a,#121619) repeat-x!important}.bg-gradient-dark.btn.active,.bg-gradient-dark.btn:active,.bg-gradient-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-dark.btn:not(:disabled):not(.disabled):active{border-color:#07090a;color:#fff;background:#0d0f11 linear-gradient(180deg,#2f3134,#0d0f11) repeat-x!important}.bg-gradient-lightblue{color:#fff;background:#3c8dbc linear-gradient(180deg,#579cc5,#3c8dbc) repeat-x!important}.bg-gradient-lightblue.btn.disabled,.bg-gradient-lightblue.btn:disabled,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled).active,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-lightblue.btn.dropdown-toggle{background-image:none!important}.bg-gradient-lightblue.btn:hover{border-color:#307095;color:#ececec;background:#33779f linear-gradient(180deg,#4f89ac,#33779f) repeat-x!important}.bg-gradient-lightblue.btn.active,.bg-gradient-lightblue.btn:active,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled).active,.bg-gradient-lightblue.btn:not(:disabled):not(.disabled):active{border-color:#2d698c;color:#fff;background:#307095 linear-gradient(180deg,#4d83a4,#307095) repeat-x!important}.bg-gradient-navy{color:#fff;background:#001f3f linear-gradient(180deg,#243f5b,#001f3f) repeat-x!important}.bg-gradient-navy.btn.disabled,.bg-gradient-navy.btn:disabled,.bg-gradient-navy.btn:not(:disabled):not(.disabled).active,.bg-gradient-navy.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-navy.btn.dropdown-toggle{background-image:none!important}.bg-gradient-navy.btn:hover{border-color:#00060c;color:#ececec;background:#000c19 linear-gradient(180deg,#242e3a,#000c19) repeat-x!important}.bg-gradient-navy.btn.active,.bg-gradient-navy.btn:active,.bg-gradient-navy.btn:not(:disabled):not(.disabled).active,.bg-gradient-navy.btn:not(:disabled):not(.disabled):active{border-color:#000;color:#fff;background:#00060c linear-gradient(180deg,#24292f,#00060c) repeat-x!important}.bg-gradient-olive{color:#fff;background:#3d9970 linear-gradient(180deg,#58a684,#3d9970) repeat-x!important}.bg-gradient-olive.btn.disabled,.bg-gradient-olive.btn:disabled,.bg-gradient-olive.btn:not(:disabled):not(.disabled).active,.bg-gradient-olive.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-olive.btn.dropdown-toggle{background-image:none!important}.bg-gradient-olive.btn:hover{border-color:#2e7555;color:#ececec;background:#327e5c linear-gradient(180deg,#4e8f73,#327e5c) repeat-x!important}.bg-gradient-olive.btn.active,.bg-gradient-olive.btn:active,.bg-gradient-olive.btn:not(:disabled):not(.disabled).active,.bg-gradient-olive.btn:not(:disabled):not(.disabled):active{border-color:#2b6b4f;color:#fff;background:#2e7555 linear-gradient(180deg,#4b886d,#2e7555) repeat-x!important}.bg-gradient-lime{color:#2a2e30;background:#01ff70 linear-gradient(180deg,#25fd84,#01ff70) repeat-x!important}.bg-gradient-lime.btn.disabled,.bg-gradient-lime.btn:disabled,.bg-gradient-lime.btn:not(:disabled):not(.disabled).active,.bg-gradient-lime.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-lime.btn.dropdown-toggle{background-image:none!important}.bg-gradient-lime.btn:hover{border-color:#00cd5a;color:#181a1c;background:#00da5f linear-gradient(180deg,#24dd76,#00da5f) repeat-x!important}.bg-gradient-lime.btn.active,.bg-gradient-lime.btn:active,.bg-gradient-lime.btn:not(:disabled):not(.disabled).active,.bg-gradient-lime.btn:not(:disabled):not(.disabled):active{border-color:#00c054;color:#fff;background:#00cd5a linear-gradient(180deg,#24d272,#00cd5a) repeat-x!important}.bg-gradient-fuchsia{color:#fff;background:#f012be linear-gradient(180deg,#f033c7,#f012be) repeat-x!important}.bg-gradient-fuchsia.btn.disabled,.bg-gradient-fuchsia.btn:disabled,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-fuchsia.btn.dropdown-toggle{background-image:none!important}.bg-gradient-fuchsia.btn:hover{border-color:#c30c9a;color:#ececec;background:#cf0da3 linear-gradient(180deg,#d42fb0,#cf0da3) repeat-x!important}.bg-gradient-fuchsia.btn.active,.bg-gradient-fuchsia.btn:active,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled).active,.bg-gradient-fuchsia.btn:not(:disabled):not(.disabled):active{border-color:#b70c90;color:#fff;background:#c30c9a linear-gradient(180deg,#ca2ea8,#c30c9a) repeat-x!important}.bg-gradient-maroon{color:#fff;background:#d81b60 linear-gradient(180deg,#db3b77,#d81b60) repeat-x!important}.bg-gradient-maroon.btn.disabled,.bg-gradient-maroon.btn:disabled,.bg-gradient-maroon.btn:not(:disabled):not(.disabled).active,.bg-gradient-maroon.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-maroon.btn.dropdown-toggle{background-image:none!important}.bg-gradient-maroon.btn:hover{border-color:#ab154c;color:#ececec;background:#b61751 linear-gradient(180deg,#bf386a,#b61751) repeat-x!important}.bg-gradient-maroon.btn.active,.bg-gradient-maroon.btn:active,.bg-gradient-maroon.btn:not(:disabled):not(.disabled).active,.bg-gradient-maroon.btn:not(:disabled):not(.disabled):active{border-color:#9f1447;color:#fff;background:#ab154c linear-gradient(180deg,#b53666,#ab154c) repeat-x!important}.bg-gradient-blue{color:#fff;background:#3085d6 linear-gradient(180deg,#4d95db,#3085d6) repeat-x!important}.bg-gradient-blue.btn.disabled,.bg-gradient-blue.btn:disabled,.bg-gradient-blue.btn:not(:disabled):not(.disabled).active,.bg-gradient-blue.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-blue.btn.dropdown-toggle{background-image:none!important}.bg-gradient-blue.btn:hover{border-color:#236bb0;color:#ececec;background:#2572bb linear-gradient(180deg,#4385c4,#2572bb) repeat-x!important}.bg-gradient-blue.btn.active,.bg-gradient-blue.btn:active,.bg-gradient-blue.btn:not(:disabled):not(.disabled).active,.bg-gradient-blue.btn:not(:disabled):not(.disabled):active{border-color:#2165a5;color:#fff;background:#236bb0 linear-gradient(180deg,#427fbb,#236bb0) repeat-x!important}.bg-gradient-indigo{color:#fff;background:#5c6bc6 linear-gradient(180deg,#727fcd,#5c6bc6) repeat-x!important}.bg-gradient-indigo.btn.disabled,.bg-gradient-indigo.btn:disabled,.bg-gradient-indigo.btn:not(:disabled):not(.disabled).active,.bg-gradient-indigo.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-indigo.btn.dropdown-toggle{background-image:none!important}.bg-gradient-indigo.btn:hover{border-color:#3e4eb1;color:#ececec;background:#4152bb linear-gradient(180deg,#5b6ac4,#4152bb) repeat-x!important}.bg-gradient-indigo.btn.active,.bg-gradient-indigo.btn:active,.bg-gradient-indigo.btn:not(:disabled):not(.disabled).active,.bg-gradient-indigo.btn:not(:disabled):not(.disabled):active{border-color:#3b4aa8;color:#fff;background:#3e4eb1 linear-gradient(180deg,#5966bc,#3e4eb1) repeat-x!important}.bg-gradient-purple{color:#fff;background:#6f42c1 linear-gradient(180deg,#825cc9,#6f42c1) repeat-x!important}.bg-gradient-purple.btn.disabled,.bg-gradient-purple.btn:disabled,.bg-gradient-purple.btn:not(:disabled):not(.disabled).active,.bg-gradient-purple.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-purple.btn.dropdown-toggle{background-image:none!important}.bg-gradient-purple.btn:hover{border-color:#59339d;color:#ececec;background:#5e37a6 linear-gradient(180deg,#7453b2,#5e37a6) repeat-x!important}.bg-gradient-purple.btn.active,.bg-gradient-purple.btn:active,.bg-gradient-purple.btn:not(:disabled):not(.disabled).active,.bg-gradient-purple.btn:not(:disabled):not(.disabled):active{border-color:#533093;color:#fff;background:#59339d linear-gradient(180deg,#7050ab,#59339d) repeat-x!important}.bg-gradient-pink{color:#2a2e30;background:#ff8acc linear-gradient(180deg,#fd99d2,#ff8acc) repeat-x!important}.bg-gradient-pink.btn.disabled,.bg-gradient-pink.btn:disabled,.bg-gradient-pink.btn:not(:disabled):not(.disabled).active,.bg-gradient-pink.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-pink.btn.dropdown-toggle{background-image:none!important}.bg-gradient-pink.btn:hover{border-color:#ff57b6;color:#181a1c;background:#ff64bb linear-gradient(180deg,#fd79c4,#ff64bb) repeat-x!important}.bg-gradient-pink.btn.active,.bg-gradient-pink.btn:active,.bg-gradient-pink.btn:not(:disabled):not(.disabled).active,.bg-gradient-pink.btn:not(:disabled):not(.disabled):active{border-color:#ff4ab0;color:#fff;background:#ff57b6 linear-gradient(180deg,#fd6ec0,#ff57b6) repeat-x!important}.bg-gradient-red{color:#fff;background:#ea5455 linear-gradient(180deg,#eb6c6d,#ea5455) repeat-x!important}.bg-gradient-red.btn.disabled,.bg-gradient-red.btn:disabled,.bg-gradient-red.btn:not(:disabled):not(.disabled).active,.bg-gradient-red.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-red.btn.dropdown-toggle{background-image:none!important}.bg-gradient-red.btn:hover{border-color:#e42728;color:#ececec;background:#e63233 linear-gradient(180deg,#e74f50,#e63233) repeat-x!important}.bg-gradient-red.btn.active,.bg-gradient-red.btn:active,.bg-gradient-red.btn:not(:disabled):not(.disabled).active,.bg-gradient-red.btn:not(:disabled):not(.disabled):active{border-color:#e21c1d;color:#fff;background:#e42728 linear-gradient(180deg,#e64547,#e42728) repeat-x!important}.bg-gradient-orange{color:#2a2e30;background:#dda451 linear-gradient(180deg,#e0b06a,#dda451) repeat-x!important}.bg-gradient-orange.btn.disabled,.bg-gradient-orange.btn:disabled,.bg-gradient-orange.btn:not(:disabled):not(.disabled).active,.bg-gradient-orange.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-orange.btn.dropdown-toggle{background-image:none!important}.bg-gradient-orange.btn:hover{border-color:#d28d29;color:#181a1c;background:#d79331 linear-gradient(180deg,#dba14f,#d79331) repeat-x!important}.bg-gradient-orange.btn.active,.bg-gradient-orange.btn:active,.bg-gradient-orange.btn:not(:disabled):not(.disabled).active,.bg-gradient-orange.btn:not(:disabled):not(.disabled):active{border-color:#c78627;color:#2a2e30;background:#d28d29 linear-gradient(180deg,#d69c48,#d28d29) repeat-x!important}.bg-gradient-yellow{color:#2a2e30;background:#edc30e linear-gradient(180deg,#edca31,#edc30e) repeat-x!important}.bg-gradient-yellow.btn.disabled,.bg-gradient-yellow.btn:disabled,.bg-gradient-yellow.btn:not(:disabled):not(.disabled).active,.bg-gradient-yellow.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-yellow.btn.dropdown-toggle{background-image:none!important}.bg-gradient-yellow.btn:hover{border-color:#bd9b0b;color:#181a1c;background:#c9a50c linear-gradient(180deg,#cfb02f,#c9a50c) repeat-x!important}.bg-gradient-yellow.btn.active,.bg-gradient-yellow.btn:active,.bg-gradient-yellow.btn:not(:disabled):not(.disabled).active,.bg-gradient-yellow.btn:not(:disabled):not(.disabled):active{border-color:#b1910a;color:#fff;background:#bd9b0b linear-gradient(180deg,#c5a82e,#bd9b0b) repeat-x!important}.bg-gradient-green{color:#fff;background:#21b978 linear-gradient(180deg,#40c18b,#21b978) repeat-x!important}.bg-gradient-green.btn.disabled,.bg-gradient-green.btn:disabled,.bg-gradient-green.btn:not(:disabled):not(.disabled).active,.bg-gradient-green.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-green.btn.dropdown-toggle{background-image:none!important}.bg-gradient-green.btn:hover{border-color:#198e5c;color:#ececec;background:#1b9963 linear-gradient(180deg,#3ba679,#1b9963) repeat-x!important}.bg-gradient-green.btn.active,.bg-gradient-green.btn:active,.bg-gradient-green.btn:not(:disabled):not(.disabled).active,.bg-gradient-green.btn:not(:disabled):not(.disabled):active{border-color:#178355;color:#fff;background:#198e5c linear-gradient(180deg,#399d73,#198e5c) repeat-x!important}.bg-gradient-teal{color:#fff;background:#20c997 linear-gradient(180deg,#3fcfa5,#20c997) repeat-x!important}.bg-gradient-teal.btn.disabled,.bg-gradient-teal.btn:disabled,.bg-gradient-teal.btn:not(:disabled):not(.disabled).active,.bg-gradient-teal.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-teal.btn.dropdown-toggle{background-image:none!important}.bg-gradient-teal.btn:hover{border-color:#199d76;color:#ececec;background:#1ba87e linear-gradient(180deg,#3bb390,#1ba87e) repeat-x!important}.bg-gradient-teal.btn.active,.bg-gradient-teal.btn:active,.bg-gradient-teal.btn:not(:disabled):not(.disabled).active,.bg-gradient-teal.btn:not(:disabled):not(.disabled):active{border-color:#17926e;color:#fff;background:#199d76 linear-gradient(180deg,#39aa89,#199d76) repeat-x!important}.bg-gradient-cyan{color:#fff;background:#7367f0 linear-gradient(180deg,#867cf1,#7367f0) repeat-x!important}.bg-gradient-cyan.btn.disabled,.bg-gradient-cyan.btn:disabled,.bg-gradient-cyan.btn:not(:disabled):not(.disabled).active,.bg-gradient-cyan.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-cyan.btn.dropdown-toggle{background-image:none!important}.bg-gradient-cyan.btn:hover{border-color:#4839eb;color:#ececec;background:#5344ed linear-gradient(180deg,#6a5eef,#5344ed) repeat-x!important}.bg-gradient-cyan.btn.active,.bg-gradient-cyan.btn:active,.bg-gradient-cyan.btn:not(:disabled):not(.disabled).active,.bg-gradient-cyan.btn:not(:disabled):not(.disabled):active{border-color:#3e2dea;color:#fff;background:#4839eb linear-gradient(180deg,#6155ed,#4839eb) repeat-x!important}.bg-gradient-white{color:#2a2e30;background:#fff linear-gradient(180deg,#fdfdfe,#fff) repeat-x!important}.bg-gradient-white.btn.disabled,.bg-gradient-white.btn:disabled,.bg-gradient-white.btn:not(:disabled):not(.disabled).active,.bg-gradient-white.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-white.btn.dropdown-toggle{background-image:none!important}.bg-gradient-white.btn:hover{border-color:#e6e6e6;color:#181a1c;background:#ececec linear-gradient(180deg,#ecedee,#ececec) repeat-x!important}.bg-gradient-white.btn.active,.bg-gradient-white.btn:active,.bg-gradient-white.btn:not(:disabled):not(.disabled).active,.bg-gradient-white.btn:not(:disabled):not(.disabled):active{border-color:#dfdfdf;color:#2a2e30;background:#e6e6e6 linear-gradient(180deg,#e7e8e9,#e6e6e6) repeat-x!important}.bg-gradient-gray{color:#2a2e30;background:#b8c2cc linear-gradient(180deg,#c0c9d2,#b8c2cc) repeat-x!important}.bg-gradient-gray.btn.disabled,.bg-gradient-gray.btn:disabled,.bg-gradient-gray.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-gray.btn.dropdown-toggle{background-image:none!important}.bg-gradient-gray.btn:hover{border-color:#9aa9b7;color:#181a1c;background:#a2afbc linear-gradient(180deg,#aeb9c5,#a2afbc) repeat-x!important}.bg-gradient-gray.btn.active,.bg-gradient-gray.btn:active,.bg-gradient-gray.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray.btn:not(:disabled):not(.disabled):active{border-color:#93a2b1;color:#2a2e30;background:#9aa9b7 linear-gradient(180deg,#a7b4c1,#9aa9b7) repeat-x!important}.bg-gradient-gray-dark{color:#fff;background:#1e1e1e linear-gradient(180deg,#3d3e3f,#1e1e1e) repeat-x!important}.bg-gradient-gray-dark.btn.disabled,.bg-gradient-gray-dark.btn:disabled,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active,.show>.bg-gradient-gray-dark.btn.dropdown-toggle{background-image:none!important}.bg-gradient-gray-dark.btn:hover{border-color:#050505;color:#ececec;background:#0b0b0b linear-gradient(180deg,#2d2e2e,#0b0b0b) repeat-x!important}.bg-gradient-gray-dark.btn.active,.bg-gradient-gray-dark.btn:active,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled).active,.bg-gradient-gray-dark.btn:not(:disabled):not(.disabled):active{border-color:#000;color:#fff;background:#050505 linear-gradient(180deg,#282829,#050505) repeat-x!important}[class^=bg-].disabled{opacity:.65}a.text-muted:hover{color:#586cb1!important}.link-muted{color:#5d6974}.link-muted:focus,.link-muted:hover{color:#464f58}.link-black{color:#b8c2cc}.link-black:focus,.link-black:hover{color:#e6e8ea}.accent-primary .btn-link,.accent-primary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#586cb1}.accent-primary .btn-link:hover,.accent-primary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#3c4b80}.accent-primary .dropdown-item.active,.accent-primary .dropdown-item:active{background:#586cb1;color:#fff}.accent-primary .custom-control-input:checked~.custom-control-label:before{background:#586cb1;border-color:#34416f}.accent-primary .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-primary .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-primary .custom-file-input:focus~.custom-file-label,.accent-primary .custom-select:focus,.accent-primary .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#afb9da}.accent-primary .page-item .page-link{color:#586cb1}.accent-primary .page-item.active .page-link,.accent-primary .page-item.active a{background-color:#586cb1;border-color:#586cb1;color:#fff}.accent-primary .page-item.disabled .page-link,.accent-primary .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-primary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-primary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-primary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-primary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-secondary .btn-link,.accent-secondary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#b8c2cc}.accent-secondary .btn-link:hover,.accent-secondary a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#8b9cac}.accent-secondary .dropdown-item.active,.accent-secondary .dropdown-item:active{background:#b8c2cc;color:#2a2e30}.accent-secondary .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.accent-secondary .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-secondary .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-secondary .custom-file-input:focus~.custom-file-label,.accent-secondary .custom-select:focus,.accent-secondary .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-secondary .page-item .page-link{color:#b8c2cc}.accent-secondary .page-item.active .page-link,.accent-secondary .page-item.active a{background-color:#b8c2cc;border-color:#b8c2cc;color:#fff}.accent-secondary .page-item.disabled .page-link,.accent-secondary .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-secondary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-secondary [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-secondary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-secondary [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-success .btn-link,.accent-success a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#21b978}.accent-success .btn-link:hover,.accent-success a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#15784e}.accent-success .dropdown-item.active,.accent-success .dropdown-item:active{background:#21b978;color:#fff}.accent-success .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.accent-success .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-success .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-success .custom-file-input:focus~.custom-file-label,.accent-success .custom-select:focus,.accent-success .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#73e6b5}.accent-success .page-item .page-link{color:#21b978}.accent-success .page-item.active .page-link,.accent-success .page-item.active a{background-color:#21b978;border-color:#21b978;color:#fff}.accent-success .page-item.disabled .page-link,.accent-success .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-success [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-success [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-success [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-success [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-info .btn-link,.accent-info a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#4277cf}.accent-info .btn-link:hover,.accent-info a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#28549d}.accent-info .dropdown-item.active,.accent-info .dropdown-item:active{background:#4277cf;color:#fff}.accent-info .custom-control-input:checked~.custom-control-label:before{background:#4277cf;border-color:#234988}.accent-info .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-info .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-info .custom-file-input:focus~.custom-file-label,.accent-info .custom-select:focus,.accent-info .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#a8c0e9}.accent-info .page-item .page-link{color:#4277cf}.accent-info .page-item.active .page-link,.accent-info .page-item.active a{background-color:#4277cf;border-color:#4277cf;color:#fff}.accent-info .page-item.disabled .page-link,.accent-info .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-info [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-info [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-info [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-info [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-warning .btn-link,.accent-warning a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#dda451}.accent-warning .btn-link:hover,.accent-warning a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#bd7f25}.accent-warning .dropdown-item.active,.accent-warning .dropdown-item:active{background:#dda451;color:#2a2e30}.accent-warning .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.accent-warning .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-warning .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-warning .custom-file-input:focus~.custom-file-label,.accent-warning .custom-select:focus,.accent-warning .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f2dcbc}.accent-warning .page-item .page-link{color:#dda451}.accent-warning .page-item.active .page-link,.accent-warning .page-item.active a{background-color:#dda451;border-color:#dda451;color:#fff}.accent-warning .page-item.disabled .page-link,.accent-warning .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-warning [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-warning [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-warning [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-warning [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-danger .btn-link,.accent-danger a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#ea5455}.accent-danger .btn-link:hover,.accent-danger a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#d71a1c}.accent-danger .dropdown-item.active,.accent-danger .dropdown-item:active{background:#ea5455;color:#fff}.accent-danger .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.accent-danger .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-danger .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-danger .custom-file-input:focus~.custom-file-label,.accent-danger .custom-select:focus,.accent-danger .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f8c6c6}.accent-danger .page-item .page-link{color:#ea5455}.accent-danger .page-item.active .page-link,.accent-danger .page-item.active a{background-color:#ea5455;border-color:#ea5455;color:#fff}.accent-danger .page-item.disabled .page-link,.accent-danger .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-danger [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-danger [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-danger [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-danger [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-light .btn-link,.accent-light a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#f7f7f9}.accent-light .btn-link:hover,.accent-light a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#cbcbd8}.accent-light .dropdown-item.active,.accent-light .dropdown-item:active{background:#f7f7f9;color:#2a2e30}.accent-light .custom-control-input:checked~.custom-control-label:before{background:#f7f7f9;border-color:#bdbdcd}.accent-light .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-light .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-light .custom-file-input:focus~.custom-file-label,.accent-light .custom-select:focus,.accent-light .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-light .page-item .page-link{color:#f7f7f9}.accent-light .page-item.active .page-link,.accent-light .page-item.active a{background-color:#f7f7f9;border-color:#f7f7f9;color:#fff}.accent-light .page-item.disabled .page-link,.accent-light .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-light [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-light [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-light [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-light [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-dark .btn-link,.accent-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#22292f}.accent-dark .btn-link:hover,.accent-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#020203}.accent-dark .dropdown-item.active,.accent-dark .dropdown-item:active{background:#22292f;color:#fff}.accent-dark .custom-control-input:checked~.custom-control-label:before{background:#22292f;border-color:#000}.accent-dark .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-dark .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-dark .custom-file-input:focus~.custom-file-label,.accent-dark .custom-select:focus,.accent-dark .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#586a79}.accent-dark .page-item .page-link{color:#22292f}.accent-dark .page-item.active .page-link,.accent-dark .page-item.active a{background-color:#22292f;border-color:#22292f;color:#fff}.accent-dark .page-item.disabled .page-link,.accent-dark .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-lightblue .btn-link,.accent-lightblue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#3c8dbc}.accent-lightblue .btn-link:hover,.accent-lightblue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#296282}.accent-lightblue .dropdown-item.active,.accent-lightblue .dropdown-item:active{background:#3c8dbc;color:#fff}.accent-lightblue .custom-control-input:checked~.custom-control-label:before{background:#3c8dbc;border-color:#23536f}.accent-lightblue .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-lightblue .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-lightblue .custom-file-input:focus~.custom-file-label,.accent-lightblue .custom-select:focus,.accent-lightblue .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#99c5de}.accent-lightblue .page-item .page-link{color:#3c8dbc}.accent-lightblue .page-item.active .page-link,.accent-lightblue .page-item.active a{background-color:#3c8dbc;border-color:#3c8dbc;color:#fff}.accent-lightblue .page-item.disabled .page-link,.accent-lightblue .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-lightblue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lightblue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-lightblue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lightblue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-navy .btn-link,.accent-navy a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#001f3f}.accent-navy .btn-link:hover,.accent-navy a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#000}.accent-navy .dropdown-item.active,.accent-navy .dropdown-item:active{background:#001f3f;color:#fff}.accent-navy .custom-control-input:checked~.custom-control-label:before{background:#001f3f;border-color:#000}.accent-navy .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-navy .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-navy .custom-file-input:focus~.custom-file-label,.accent-navy .custom-select:focus,.accent-navy .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#005ebf}.accent-navy .page-item .page-link{color:#001f3f}.accent-navy .page-item.active .page-link,.accent-navy .page-item.active a{background-color:#001f3f;border-color:#001f3f;color:#fff}.accent-navy .page-item.disabled .page-link,.accent-navy .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-navy [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-navy [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-navy [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-navy [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-olive .btn-link,.accent-olive a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#3d9970}.accent-olive .btn-link:hover,.accent-olive a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#276248}.accent-olive .dropdown-item.active,.accent-olive .dropdown-item:active{background:#3d9970;color:#fff}.accent-olive .custom-control-input:checked~.custom-control-label:before{background:#3d9970;border-color:#20503b}.accent-olive .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-olive .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-olive .custom-file-input:focus~.custom-file-label,.accent-olive .custom-select:focus,.accent-olive .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#87cfaf}.accent-olive .page-item .page-link{color:#3d9970}.accent-olive .page-item.active .page-link,.accent-olive .page-item.active a{background-color:#3d9970;border-color:#3d9970;color:#fff}.accent-olive .page-item.disabled .page-link,.accent-olive .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-olive [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-olive [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-olive [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-olive [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-lime .btn-link,.accent-lime a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#01ff70}.accent-lime .btn-link:hover,.accent-lime a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#00b44e}.accent-lime .dropdown-item.active,.accent-lime .dropdown-item:active{background:#01ff70;color:#2a2e30}.accent-lime .custom-control-input:checked~.custom-control-label:before{background:#01ff70;border-color:#009a43}.accent-lime .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-lime .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-lime .custom-file-input:focus~.custom-file-label,.accent-lime .custom-select:focus,.accent-lime .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#81ffb8}.accent-lime .page-item .page-link{color:#01ff70}.accent-lime .page-item.active .page-link,.accent-lime .page-item.active a{background-color:#01ff70;border-color:#01ff70;color:#fff}.accent-lime .page-item.disabled .page-link,.accent-lime .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-lime [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lime [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-lime [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-lime [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-fuchsia .btn-link,.accent-fuchsia a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#f012be}.accent-fuchsia .btn-link:hover,.accent-fuchsia a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#ab0b87}.accent-fuchsia .dropdown-item.active,.accent-fuchsia .dropdown-item:active{background:#f012be;color:#fff}.accent-fuchsia .custom-control-input:checked~.custom-control-label:before{background:#f012be;border-color:#930974}.accent-fuchsia .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-fuchsia .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-fuchsia .custom-file-input:focus~.custom-file-label,.accent-fuchsia .custom-select:focus,.accent-fuchsia .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f88adf}.accent-fuchsia .page-item .page-link{color:#f012be}.accent-fuchsia .page-item.active .page-link,.accent-fuchsia .page-item.active a{background-color:#f012be;border-color:#f012be;color:#fff}.accent-fuchsia .page-item.disabled .page-link,.accent-fuchsia .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-fuchsia [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-fuchsia [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-fuchsia [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-fuchsia [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-maroon .btn-link,.accent-maroon a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#d81b60}.accent-maroon .btn-link:hover,.accent-maroon a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#941342}.accent-maroon .dropdown-item.active,.accent-maroon .dropdown-item:active{background:#d81b60;color:#fff}.accent-maroon .custom-control-input:checked~.custom-control-label:before{background:#d81b60;border-color:#7d1038}.accent-maroon .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-maroon .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-maroon .custom-file-input:focus~.custom-file-label,.accent-maroon .custom-select:focus,.accent-maroon .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f083ab}.accent-maroon .page-item .page-link{color:#d81b60}.accent-maroon .page-item.active .page-link,.accent-maroon .page-item.active a{background-color:#d81b60;border-color:#d81b60;color:#fff}.accent-maroon .page-item.disabled .page-link,.accent-maroon .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-maroon [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-maroon [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-maroon [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-maroon [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-blue .btn-link,.accent-blue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#3085d6}.accent-blue .btn-link:hover,.accent-blue a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#1f5e9b}.accent-blue .dropdown-item.active,.accent-blue .dropdown-item:active{background:#3085d6;color:#fff}.accent-blue .custom-control-input:checked~.custom-control-label:before{background:#3085d6;border-color:#1a5186}.accent-blue .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-blue .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-blue .custom-file-input:focus~.custom-file-label,.accent-blue .custom-select:focus,.accent-blue .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#9ac4eb}.accent-blue .page-item .page-link{color:#3085d6}.accent-blue .page-item.active .page-link,.accent-blue .page-item.active a{background-color:#3085d6;border-color:#3085d6;color:#fff}.accent-blue .page-item.disabled .page-link,.accent-blue .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-blue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-blue [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-blue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-blue [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-indigo .btn-link,.accent-indigo a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#5c6bc6}.accent-indigo .btn-link:hover,.accent-indigo a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#37469e}.accent-indigo .dropdown-item.active,.accent-indigo .dropdown-item:active{background:#5c6bc6;color:#fff}.accent-indigo .custom-control-input:checked~.custom-control-label:before{background:#5c6bc6;border-color:#313e8b}.accent-indigo .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-indigo .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-indigo .custom-file-input:focus~.custom-file-label,.accent-indigo .custom-select:focus,.accent-indigo .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#bac1e7}.accent-indigo .page-item .page-link{color:#5c6bc6}.accent-indigo .page-item.active .page-link,.accent-indigo .page-item.active a{background-color:#5c6bc6;border-color:#5c6bc6;color:#fff}.accent-indigo .page-item.disabled .page-link,.accent-indigo .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-indigo [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-indigo [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-indigo [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-indigo [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-purple .btn-link,.accent-purple a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#6f42c1}.accent-purple .btn-link:hover,.accent-purple a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#4e2d89}.accent-purple .dropdown-item.active,.accent-purple .dropdown-item:active{background:#6f42c1;color:#fff}.accent-purple .custom-control-input:checked~.custom-control-label:before{background:#6f42c1;border-color:#432776}.accent-purple .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-purple .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-purple .custom-file-input:focus~.custom-file-label,.accent-purple .custom-select:focus,.accent-purple .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#b8a2e0}.accent-purple .page-item .page-link{color:#6f42c1}.accent-purple .page-item.active .page-link,.accent-purple .page-item.active a{background-color:#6f42c1;border-color:#6f42c1;color:#fff}.accent-purple .page-item.disabled .page-link,.accent-purple .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-purple [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-purple [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-purple [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-purple [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-pink .btn-link,.accent-pink a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#ff8acc}.accent-pink .btn-link:hover,.accent-pink a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#ff3eab}.accent-pink .dropdown-item.active,.accent-pink .dropdown-item:active{background:#ff8acc;color:#2a2e30}.accent-pink .custom-control-input:checked~.custom-control-label:before{background:#ff8acc;border-color:#ff24a0}.accent-pink .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-pink .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-pink .custom-file-input:focus~.custom-file-label,.accent-pink .custom-select:focus,.accent-pink .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-pink .page-item .page-link{color:#ff8acc}.accent-pink .page-item.active .page-link,.accent-pink .page-item.active a{background-color:#ff8acc;border-color:#ff8acc;color:#fff}.accent-pink .page-item.disabled .page-link,.accent-pink .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-pink [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-pink [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-pink [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-pink [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-red .btn-link,.accent-red a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#ea5455}.accent-red .btn-link:hover,.accent-red a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#d71a1c}.accent-red .dropdown-item.active,.accent-red .dropdown-item:active{background:#ea5455;color:#fff}.accent-red .custom-control-input:checked~.custom-control-label:before{background:#ea5455;border-color:#c01819}.accent-red .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-red .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-red .custom-file-input:focus~.custom-file-label,.accent-red .custom-select:focus,.accent-red .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f8c6c6}.accent-red .page-item .page-link{color:#ea5455}.accent-red .page-item.active .page-link,.accent-red .page-item.active a{background-color:#ea5455;border-color:#ea5455;color:#fff}.accent-red .page-item.disabled .page-link,.accent-red .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-red [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-red [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-red [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-red [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-orange .btn-link,.accent-orange a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#dda451}.accent-orange .btn-link:hover,.accent-orange a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#bd7f25}.accent-orange .dropdown-item.active,.accent-orange .dropdown-item:active{background:#dda451;color:#2a2e30}.accent-orange .custom-control-input:checked~.custom-control-label:before{background:#dda451;border-color:#a77121}.accent-orange .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-orange .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-orange .custom-file-input:focus~.custom-file-label,.accent-orange .custom-select:focus,.accent-orange .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f2dcbc}.accent-orange .page-item .page-link{color:#dda451}.accent-orange .page-item.active .page-link,.accent-orange .page-item.active a{background-color:#dda451;border-color:#dda451;color:#fff}.accent-orange .page-item.disabled .page-link,.accent-orange .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-orange [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-orange [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-orange [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-orange [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-yellow .btn-link,.accent-yellow a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#edc30e}.accent-yellow .btn-link:hover,.accent-yellow a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#a5880a}.accent-yellow .dropdown-item.active,.accent-yellow .dropdown-item:active{background:#edc30e;color:#2a2e30}.accent-yellow .custom-control-input:checked~.custom-control-label:before{background:#edc30e;border-color:#8d7408}.accent-yellow .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-yellow .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-yellow .custom-file-input:focus~.custom-file-label,.accent-yellow .custom-select:focus,.accent-yellow .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#f8e283}.accent-yellow .page-item .page-link{color:#edc30e}.accent-yellow .page-item.active .page-link,.accent-yellow .page-item.active a{background-color:#edc30e;border-color:#edc30e;color:#fff}.accent-yellow .page-item.disabled .page-link,.accent-yellow .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-yellow [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-yellow [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-yellow [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-yellow [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-green .btn-link,.accent-green a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#21b978}.accent-green .btn-link:hover,.accent-green a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#15784e}.accent-green .dropdown-item.active,.accent-green .dropdown-item:active{background:#21b978;color:#fff}.accent-green .custom-control-input:checked~.custom-control-label:before{background:#21b978;border-color:#126240}.accent-green .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-green .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-green .custom-file-input:focus~.custom-file-label,.accent-green .custom-select:focus,.accent-green .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#73e6b5}.accent-green .page-item .page-link{color:#21b978}.accent-green .page-item.active .page-link,.accent-green .page-item.active a{background-color:#21b978;border-color:#21b978;color:#fff}.accent-green .page-item.disabled .page-link,.accent-green .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-green [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-green [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-green [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-green [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-teal .btn-link,.accent-teal a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#20c997}.accent-teal .btn-link:hover,.accent-teal a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#158765}.accent-teal .dropdown-item.active,.accent-teal .dropdown-item:active{background:#20c997;color:#fff}.accent-teal .custom-control-input:checked~.custom-control-label:before{background:#20c997;border-color:#127155}.accent-teal .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-teal .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-teal .custom-file-input:focus~.custom-file-label,.accent-teal .custom-select:focus,.accent-teal .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#7eeaca}.accent-teal .page-item .page-link{color:#20c997}.accent-teal .page-item.active .page-link,.accent-teal .page-item.active a{background-color:#20c997;border-color:#20c997;color:#fff}.accent-teal .page-item.disabled .page-link,.accent-teal .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-teal [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-teal [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-teal [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-teal [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-cyan .btn-link,.accent-cyan a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#7367f0}.accent-cyan .btn-link:hover,.accent-cyan a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#3321e9}.accent-cyan .dropdown-item.active,.accent-cyan .dropdown-item:active{background:#7367f0;color:#fff}.accent-cyan .custom-control-input:checked~.custom-control-label:before{background:#7367f0;border-color:#2716db}.accent-cyan .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-cyan .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-cyan .custom-file-input:focus~.custom-file-label,.accent-cyan .custom-select:focus,.accent-cyan .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#dedbfb}.accent-cyan .page-item .page-link{color:#7367f0}.accent-cyan .page-item.active .page-link,.accent-cyan .page-item.active a{background-color:#7367f0;border-color:#7367f0;color:#fff}.accent-cyan .page-item.disabled .page-link,.accent-cyan .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-cyan [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-cyan [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-cyan [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-cyan [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-white .btn-link,.accent-white a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#fff}.accent-white .btn-link:hover,.accent-white a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#d9d9d9}.accent-white .dropdown-item.active,.accent-white .dropdown-item:active{background:#fff;color:#2a2e30}.accent-white .custom-control-input:checked~.custom-control-label:before{background:#fff;border-color:#ccc}.accent-white .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-white .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-white .custom-file-input:focus~.custom-file-label,.accent-white .custom-select:focus,.accent-white .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-white .page-item .page-link{color:#fff}.accent-white .page-item.active .page-link,.accent-white .page-item.active a{background-color:#fff;border-color:#fff;color:#fff}.accent-white .page-item.disabled .page-link,.accent-white .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-white [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-white [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-white [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-white [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-gray .btn-link,.accent-gray a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#b8c2cc}.accent-gray .btn-link:hover,.accent-gray a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#8b9cac}.accent-gray .dropdown-item.active,.accent-gray .dropdown-item:active{background:#b8c2cc;color:#2a2e30}.accent-gray .custom-control-input:checked~.custom-control-label:before{background:#b8c2cc;border-color:#7d8fa1}.accent-gray .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%232a2e30' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-gray .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-gray .custom-file-input:focus~.custom-file-label,.accent-gray .custom-select:focus,.accent-gray .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#fff}.accent-gray .page-item .page-link{color:#b8c2cc}.accent-gray .page-item.active .page-link,.accent-gray .page-item.active a{background-color:#b8c2cc;border-color:#b8c2cc;color:#fff}.accent-gray .page-item.disabled .page-link,.accent-gray .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-gray [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-gray [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}.accent-gray-dark .btn-link,.accent-gray-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link){color:#1e1e1e}.accent-gray-dark .btn-link:hover,.accent-gray-dark a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):not(.page-link):hover{color:#000}.accent-gray-dark .dropdown-item.active,.accent-gray-dark .dropdown-item:active{background:#1e1e1e;color:#fff}.accent-gray-dark .custom-control-input:checked~.custom-control-label:before{background:#1e1e1e;border-color:#000}.accent-gray-dark .custom-control-input:checked~.custom-control-label:after{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E\")}.accent-gray-dark .custom-control-input:focus:not(:checked)~.custom-control-label:before,.accent-gray-dark .custom-file-input:focus~.custom-file-label,.accent-gray-dark .custom-select:focus,.accent-gray-dark .form-control:focus:not(.is-invalid):not(.is-warning):not(.is-valid){border-color:#5e5e5e}.accent-gray-dark .page-item .page-link{color:#1e1e1e}.accent-gray-dark .page-item.active .page-link,.accent-gray-dark .page-item.active a{background-color:#1e1e1e;border-color:#1e1e1e;color:#fff}.accent-gray-dark .page-item.disabled .page-link,.accent-gray-dark .page-item.disabled a{background-color:#fff;border-color:#dae1e7;color:#b8c2cc}.accent-gray-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray-dark [class*=sidebar-dark-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:hsla(0,0%,100%,.95)}.accent-gray-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link),.accent-gray-dark [class*=sidebar-light-] .sidebar a:not(.dropdown-item):not(.btn-app):not(.nav-link):not(.brand-link):hover{color:#555}[class*=accent-] a.btn-primary{color:#fff}[class*=accent-] a.btn-secondary{color:#2a2e30}[class*=accent-] a.btn-info,[class*=accent-] a.btn-success{color:#fff}[class*=accent-] a.btn-warning{color:#2a2e30}[class*=accent-] a.btn-danger{color:#fff}[class*=accent-] a.btn-light{color:#2a2e30}[class*=accent-] a.btn-dark{color:#fff}"
  },
  {
    "path": "public/vendor/dcat-admin/adminlte/adminlte.js",
    "content": "!function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/\",n(n.s=4)}({1:function(e,t,n){\"use strict\";function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var o=function(e){var t=\"Dropdown\",n=(\".\".concat(\"lte.dropdown\"),e.fn[t]),o=\".dropdown-menu.show\",a=\"dropdown-menu-right\",s={},r=function(){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._config=n,this._element=e}var n,r,l;return n=t,l=[{key:\"_jQueryInterface\",value:function(n){return this.each((function(){var i=e(this).data(\"lte.dropdown\"),o=e.extend({},s,e(this).data());i||(i=new t(e(this),o),e(this).data(\"lte.dropdown\",i)),\"toggleSubmenu\"!==n&&\"fixPosition\"!=n||i[n]()}))}}],(r=[{key:\"toggleSubmenu\",value:function(){this._element.siblings().toggleClass(\"show\"),this._element.next().hasClass(\"show\")||this._element.parents(\".dropdown-menu\").first().find(\".show\").removeClass(\"show\"),this._element.parents(\"li.nav-item.dropdown.show\").on(\"hidden.bs.dropdown\",(function(t){e(\".dropdown-submenu .show\").removeClass(\"show\")}))}},{key:\"fixPosition\",value:function(){var t=e(o);if(0!==t.length){t.hasClass(a)?(t.css(\"left\",\"inherit\"),t.css(\"right\",0)):(t.css(\"left\",0),t.css(\"right\",\"inherit\"));var n=t.offset(),i=t.width(),s=e(window).width()-n.left;n.left<0?(t.css(\"left\",\"inherit\"),t.css(\"right\",n.left-5)):s<i&&(t.css(\"left\",\"inherit\"),t.css(\"right\",0))}}}])&&i(n.prototype,r),l&&i(n,l),t}();return e.fn[t]=r._jQueryInterface,e.fn[t].Constructor=r,e.fn[t].noConflict=function(){return e.fn[t]=n,r._jQueryInterface},r}(jQuery);t.a=o},14:function(e,t,n){\"use strict\";function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}n.r(t),n.d(t,\"ControlSidebar\",(function(){return o})),n.d(t,\"Layout\",(function(){return s})),n.d(t,\"PushMenu\",(function(){return l})),n.d(t,\"Treeview\",(function(){return u})),n.d(t,\"DirectChat\",(function(){return h})),n.d(t,\"TodoList\",(function(){return g})),n.d(t,\"CardWidget\",(function(){return y})),n.d(t,\"CardRefresh\",(function(){return _})),n.d(t,\"Dropdown\",(function(){return b.a})),n.d(t,\"Toasts\",(function(){return w}));var o=function(e){var t=\"ControlSidebar\",n=\"lte.controlsidebar\",o=\".\".concat(n),a=e.fn[t],s={COLLAPSED:\"collapsed\".concat(o),EXPANDED:\"expanded\".concat(o)},r=\".control-sidebar\",l=\".control-sidebar-content\",c='[data-widget=\"control-sidebar\"]',u=\".main-header\",d=\".main-footer\",h=\"control-sidebar-animate\",f=\"control-sidebar-open\",g=\"control-sidebar-slide-open\",p=\"layout-fixed\",v=\"layout-navbar-fixed\",y=\"layout-sm-navbar-fixed\",m=\"layout-md-navbar-fixed\",_=\"layout-lg-navbar-fixed\",b=\"layout-xl-navbar-fixed\",C=\"layout-footer-fixed\",w=\"layout-sm-footer-fixed\",E=\"layout-md-footer-fixed\",x=\"layout-lg-footer-fixed\",A=\"layout-xl-footer-fixed\",D={controlsidebarSlide:!0,scrollbarTheme:\"os-theme-light\",scrollbarAutoHide:\"l\"},I=function(){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._element=e,this._config=n,this._init()}var o,a,c;return o=t,c=[{key:\"_jQueryInterface\",value:function(i){return this.each((function(){var o=e(this).data(n),a=e.extend({},D,e(this).data());if(o||(o=new t(this,a),e(this).data(n,o)),\"undefined\"===o[i])throw new Error(\"\".concat(i,\" is not a function\"));o[i]()}))}}],(a=[{key:\"collapse\",value:function(){this._config.controlsidebarSlide?(e(\"html\").addClass(h),e(\"body\").removeClass(g).delay(300).queue((function(){e(r).hide(),e(\"html\").removeClass(h),e(this).dequeue()}))):e(\"body\").removeClass(f);var t=e.Event(s.COLLAPSED);e(this._element).trigger(t)}},{key:\"show\",value:function(){this._config.controlsidebarSlide?(e(\"html\").addClass(h),e(r).show().delay(10).queue((function(){e(\"body\").addClass(g).delay(300).queue((function(){e(\"html\").removeClass(h),e(this).dequeue()})),e(this).dequeue()}))):e(\"body\").addClass(f);var t=e.Event(s.EXPANDED);e(this._element).trigger(t)}},{key:\"toggle\",value:function(){e(\"body\").hasClass(f)||e(\"body\").hasClass(g)?this.collapse():this.show()}},{key:\"_init\",value:function(){var t=this;this._fixHeight(),this._fixScrollHeight(),e(window).resize((function(){t._fixHeight(),t._fixScrollHeight()})),e(window).scroll((function(){(e(\"body\").hasClass(f)||e(\"body\").hasClass(g))&&t._fixScrollHeight()}))}},{key:\"_fixScrollHeight\",value:function(){var t={scroll:e(document).height(),window:e(window).height(),header:e(u).outerHeight(),footer:e(d).outerHeight()},n=Math.abs(t.window+e(window).scrollTop()-t.scroll),i=e(window).scrollTop(),o=!1,a=!1;e(\"body\").hasClass(p)&&((e(\"body\").hasClass(v)||e(\"body\").hasClass(y)||e(\"body\").hasClass(m)||e(\"body\").hasClass(_)||e(\"body\").hasClass(b))&&\"fixed\"===e(u).css(\"position\")&&(o=!0),(e(\"body\").hasClass(C)||e(\"body\").hasClass(w)||e(\"body\").hasClass(E)||e(\"body\").hasClass(x)||e(\"body\").hasClass(A))&&\"fixed\"===e(d).css(\"position\")&&(a=!0),0===i&&0===n?(e(r).css(\"bottom\",t.footer),e(r).css(\"top\",t.header),e(r+\", \"+r+\" \"+l).css(\"height\",t.window-(t.header+t.footer))):n<=t.footer?!1===a?(e(r).css(\"bottom\",t.footer-n),e(r+\", \"+r+\" \"+l).css(\"height\",t.window-(t.footer-n))):e(r).css(\"bottom\",t.footer):i<=t.header?!1===o?(e(r).css(\"top\",t.header-i),e(r+\", \"+r+\" \"+l).css(\"height\",t.window-(t.header-i))):e(r).css(\"top\",t.header):!1===o?(e(r).css(\"top\",0),e(r+\", \"+r+\" \"+l).css(\"height\",t.window)):e(r).css(\"top\",t.header))}},{key:\"_fixHeight\",value:function(){var t=e(window).height(),n=e(u).outerHeight(),i=e(d).outerHeight();if(e(\"body\").hasClass(p)){var o=t-n;(e(\"body\").hasClass(C)||e(\"body\").hasClass(w)||e(\"body\").hasClass(E)||e(\"body\").hasClass(x)||e(\"body\").hasClass(A))&&\"fixed\"===e(d).css(\"position\")&&(o=t-n-i),e(r+\" \"+l).css(\"height\",o),void 0!==e.fn.overlayScrollbars&&e(r+\" \"+l).overlayScrollbars({className:this._config.scrollbarTheme,sizeAutoCapable:!0,scrollbars:{autoHide:this._config.scrollbarAutoHide,clickScrolling:!0}})}}}])&&i(o.prototype,a),c&&i(o,c),t}();return e(document).on(\"click\",c,(function(t){t.preventDefault(),I._jQueryInterface.call(e(this),\"toggle\")})),e.fn[t]=I._jQueryInterface,e.fn[t].Constructor=I,e.fn[t].noConflict=function(){return e.fn[t]=a,I._jQueryInterface},I}(jQuery);function a(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var s=function(e){var t=\"Layout\",n=(\".\".concat(\"lte.layout\"),e.fn[t]),i=\".main-header\",o=\".main-sidebar\",s=\".main-sidebar .sidebar\",r=\".content-wrapper\",l=\".control-sidebar-content\",c='[data-widget=\"control-sidebar\"]',u=\".main-footer\",d='[data-widget=\"pushmenu\"]',h=\".login-box\",f=\".register-box\",g=\"sidebar-focused\",p=\"layout-fixed\",v=\"control-sidebar-slide-open\",y=\"control-sidebar-open\",m={scrollbarTheme:\"os-theme-light\",scrollbarAutoHide:\"l\",panelAutoHeight:!0,loginRegisterAutoHeight:!0},_=function(){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._config=n,this._element=e,this._init()}var n,o,g;return n=t,g=[{key:\"_jQueryInterface\",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\";return this.each((function(){var i=e(this).data(\"lte.layout\"),o=e.extend({},m,e(this).data());i||(i=new t(e(this),o),e(this).data(\"lte.layout\",i)),\"init\"===n||\"\"===n?i._init():\"fixLayoutHeight\"!==n&&\"fixLoginRegisterHeight\"!==n||i[n]()}))}}],(o=[{key:\"fixLayoutHeight\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=0;(e(\"body\").hasClass(v)||e(\"body\").hasClass(y)||\"control_sidebar\"==t)&&(n=e(l).height());var o={window:e(window).height(),header:0!==e(i).length?e(i).outerHeight():0,footer:0!==e(u).length?e(u).outerHeight():0,sidebar:0!==e(s).length?e(s).height():0,control_sidebar:n},a=this._max(o),c=this._config.panelAutoHeight;!0===c&&(c=0),!1!==c&&(a==o.control_sidebar?e(r).css(\"min-height\",a+c):a==o.window?e(r).css(\"min-height\",a+c-o.header-o.footer):e(r).css(\"min-height\",a+c-o.header)),e(\"body\").hasClass(p)&&(!1!==c&&e(r).css(\"min-height\",a+c-o.header-o.footer),void 0!==e.fn.overlayScrollbars&&e(s).overlayScrollbars({className:this._config.scrollbarTheme,sizeAutoCapable:!0,scrollbars:{autoHide:this._config.scrollbarAutoHide,clickScrolling:!0}}))}},{key:\"fixLoginRegisterHeight\",value:function(){if(0===e(h+\", \"+f).length)e(\"body, html\").css(\"height\",\"auto\");else if(0!==e(h+\", \"+f).length){var t=e(h+\", \"+f).height();e(\"body\").css(\"min-height\")!==t&&e(\"body\").css(\"min-height\",t)}}},{key:\"_init\",value:function(){var t=this;this.fixLayoutHeight(),!0===this._config.loginRegisterAutoHeight?this.fixLoginRegisterHeight():Number.isInteger(this._config.loginRegisterAutoHeight)&&setInterval(this.fixLoginRegisterHeight,this._config.loginRegisterAutoHeight),e(s).on(\"collapsed.lte.treeview expanded.lte.treeview\",(function(){t.fixLayoutHeight()})),e(d).on(\"collapsed.lte.pushmenu shown.lte.pushmenu\",(function(){t.fixLayoutHeight()})),e(c).on(\"collapsed.lte.controlsidebar\",(function(){t.fixLayoutHeight()})).on(\"expanded.lte.controlsidebar\",(function(){t.fixLayoutHeight(\"control_sidebar\")})),e(window).resize((function(){t.fixLayoutHeight()})),e(\"body.hold-transition\").removeClass(\"hold-transition\")}},{key:\"_max\",value:function(e){var t=0;return Object.keys(e).forEach((function(n){e[n]>t&&(t=e[n])})),t}}])&&a(n.prototype,o),g&&a(n,g),t}();return e(window).on(\"load\",(function(){_._jQueryInterface.call(e(\"body\"))})),e(s+\" a\").on(\"focusin\",(function(){e(o).addClass(g)})),e(s+\" a\").on(\"focusout\",(function(){e(o).removeClass(g)})),e.fn[t]=_._jQueryInterface,e.fn[t].Constructor=_,e.fn[t].noConflict=function(){return e.fn[t]=n,_._jQueryInterface},_}(jQuery);function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var l=function(e){var t=\"PushMenu\",n=\".\".concat(\"lte.pushmenu\"),i=e.fn[t],o={COLLAPSED:\"collapsed\".concat(n),SHOWN:\"shown\".concat(n)},a={autoCollapseSize:992,enableRemember:!1,noTransitionAfterReload:!0},s='[data-widget=\"pushmenu\"]',l=\"body\",c=\"#sidebar-overlay\",u=\".wrapper\",d=\"sidebar-collapse\",h=\"sidebar-open\",f=\"sidebar-closed\",g=function(){function t(n,i){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._element=n,this._options=e.extend({},a,i),e(c).length||this._addOverlay(),this._init()}var i,s,g;return i=t,g=[{key:\"_jQueryInterface\",value:function(n){return this.each((function(){var i=e(this).data(\"lte.pushmenu\"),o=e.extend({},a,e(this).data());i||(i=new t(this,o),e(this).data(\"lte.pushmenu\",i)),\"string\"==typeof n&&n.match(/collapse|expand|toggle/)&&i[n]()}))}}],(s=[{key:\"expand\",value:function(){this._options.autoCollapseSize&&e(window).width()<=this._options.autoCollapseSize&&e(l).addClass(h),e(l).removeClass(d).removeClass(f),this._options.enableRemember&&localStorage.setItem(\"remember\".concat(n),h);var t=e.Event(o.SHOWN);e(this._element).trigger(t)}},{key:\"collapse\",value:function(){this._options.autoCollapseSize&&e(window).width()<=this._options.autoCollapseSize&&e(l).removeClass(h).addClass(f),e(l).addClass(d),this._options.enableRemember&&localStorage.setItem(\"remember\".concat(n),d);var t=e.Event(o.COLLAPSED);e(this._element).trigger(t)}},{key:\"toggle\",value:function(){e(l).hasClass(d)?this.expand():this.collapse()}},{key:\"autoCollapse\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._options.autoCollapseSize&&(e(window).width()<=this._options.autoCollapseSize?e(l).hasClass(h)||this.collapse():1==t&&(e(l).hasClass(h)?e(l).removeClass(h):e(l).hasClass(f)&&this.expand()))}},{key:\"remember\",value:function(){this._options.enableRemember&&(localStorage.getItem(\"remember\".concat(n))==d?this._options.noTransitionAfterReload?e(\"body\").addClass(\"hold-transition\").addClass(d).delay(50).queue((function(){e(this).removeClass(\"hold-transition\"),e(this).dequeue()})):e(\"body\").addClass(d):this._options.noTransitionAfterReload?e(\"body\").addClass(\"hold-transition\").removeClass(d).delay(50).queue((function(){e(this).removeClass(\"hold-transition\"),e(this).dequeue()})):e(\"body\").removeClass(d))}},{key:\"_init\",value:function(){var t=this;this.remember(),this.autoCollapse(),e(window).resize((function(){t.autoCollapse(!0)}))}},{key:\"_addOverlay\",value:function(){var t=this,n=e(\"<div />\",{id:\"sidebar-overlay\"});n.on(\"click\",(function(){t.collapse()})),e(u).append(n)}}])&&r(i.prototype,s),g&&r(i,g),t}();return e(document).on(\"click\",s,(function(t){t.preventDefault();var n=t.currentTarget;\"pushmenu\"!==e(n).data(\"widget\")&&(n=e(n).closest(s)),g._jQueryInterface.call(e(n),\"toggle\")})),e(window).on(\"load\",(function(){g._jQueryInterface.call(e(s))})),e.fn[t]=g._jQueryInterface,e.fn[t].Constructor=g,e.fn[t].noConflict=function(){return e.fn[t]=i,g._jQueryInterface},g}(jQuery);function c(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var u=function(e){var t=\"Treeview\",n=\".\".concat(\"lte.treeview\"),i=e.fn[t],o={SELECTED:\"selected\".concat(n),EXPANDED:\"expanded\".concat(n),COLLAPSED:\"collapsed\".concat(n),LOAD_DATA_API:\"load\".concat(n)},a=\".nav-item\",s=\".nav-link\",r=\".nav-treeview\",l=\".menu-open\",u='[data-widget=\"treeview\"]',d=\"menu-open\",h=\"sidebar-collapse\",f={trigger:\"\".concat(u,\" \").concat(s),animationSpeed:300,accordion:!0,expandSidebar:!1,sidebarButtonSelector:'[data-widget=\"pushmenu\"]'},g=function(){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._config=n,this._element=e}var n,i,s;return n=t,s=[{key:\"_jQueryInterface\",value:function(n){return this.each((function(){var i=e(this).data(\"lte.treeview\"),o=e.extend({},f,e(this).data());i||(i=new t(e(this),o),e(this).data(\"lte.treeview\",i)),\"init\"===n&&i[n]()}))}}],(i=[{key:\"init\",value:function(){this._setupListeners()}},{key:\"expand\",value:function(t,n){var i=this,a=e.Event(o.EXPANDED);if(this._config.accordion){var s=n.siblings(l).first(),c=s.find(r).first();this.collapse(c,s)}t.stop().slideDown(this._config.animationSpeed,(function(){n.addClass(d),e(i._element).trigger(a)})),this._config.expandSidebar&&this._expandSidebar()}},{key:\"collapse\",value:function(t,n){var i=this,a=e.Event(o.COLLAPSED);t.stop().slideUp(this._config.animationSpeed,(function(){n.removeClass(d),e(i._element).trigger(a),t.find(\"\".concat(l,\" > \").concat(r)).slideUp(),t.find(l).removeClass(d)}))}},{key:\"toggle\",value:function(t){var n=e(t.currentTarget),i=n.parent(),o=i.find(\"> \"+r);if(o.is(r)||(i.is(a)||(o=i.parent().find(\"> \"+r)),o.is(r))){t.preventDefault();var s=n.parents(a).first();s.hasClass(d)?this.collapse(e(o),s):this.expand(e(o),s)}}},{key:\"_setupListeners\",value:function(){var t=this;e(document).on(\"click\",this._config.trigger,(function(e){t.toggle(e)}))}},{key:\"_expandSidebar\",value:function(){e(\"body\").hasClass(h)&&e(this._config.sidebarButtonSelector).PushMenu(\"expand\")}}])&&c(n.prototype,i),s&&c(n,s),t}();return e(window).on(o.LOAD_DATA_API,(function(){e(u).each((function(){g._jQueryInterface.call(e(this),\"init\")}))})),e.fn[t]=g._jQueryInterface,e.fn[t].Constructor=g,e.fn[t].noConflict=function(){return e.fn[t]=i,g._jQueryInterface},g}(jQuery);function d(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var h=function(e){var t=\"DirectChat\",n=(\".\".concat(\"lte.directchat\"),e.fn[t]),i=\"toggled{EVENT_KEY}\",o='[data-widget=\"chat-pane-toggle\"]',a=\".direct-chat\",s=\"direct-chat-contacts-open\",r=function(){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._element=e}var n,o,r;return n=t,r=[{key:\"_jQueryInterface\",value:function(n){return this.each((function(){var i=e(this).data(\"lte.directchat\");i||(i=new t(e(this)),e(this).data(\"lte.directchat\",i)),i[n]()}))}}],(o=[{key:\"toggle\",value:function(){e(this._element).parents(a).first().toggleClass(s);var t=e.Event(i);e(this._element).trigger(t)}}])&&d(n.prototype,o),r&&d(n,r),t}();return e(document).on(\"click\",o,(function(t){t&&t.preventDefault(),r._jQueryInterface.call(e(this),\"toggle\")})),e.fn[t]=r._jQueryInterface,e.fn[t].Constructor=r,e.fn[t].noConflict=function(){return e.fn[t]=n,r._jQueryInterface},r}(jQuery);function f(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var g=function(e){var t=\"TodoList\",n=(\".\".concat(\"lte.todolist\"),e.fn[t]),i='[data-widget=\"todo-list\"]',o=\"done\",a={onCheck:function(e){return e},onUnCheck:function(e){return e}},s=function(){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._config=n,this._element=e,this._init()}var n,s,r;return n=t,r=[{key:\"_jQueryInterface\",value:function(n){return this.each((function(){var i=e(this).data(\"lte.todolist\"),o=e.extend({},a,e(this).data());i||(i=new t(e(this),o),e(this).data(\"lte.todolist\",i)),\"init\"===n&&i[n]()}))}}],(s=[{key:\"toggle\",value:function(t){t.parents(\"li\").toggleClass(o),e(t).prop(\"checked\")?this.check(t):this.unCheck(e(t))}},{key:\"check\",value:function(e){this._config.onCheck.call(e)}},{key:\"unCheck\",value:function(e){this._config.onUnCheck.call(e)}},{key:\"_init\",value:function(){var t=this;e(i).find(\"input:checkbox:checked\").parents(\"li\").toggleClass(o),e(i).on(\"change\",\"input:checkbox\",(function(n){t.toggle(e(n.target))}))}}])&&f(n.prototype,s),r&&f(n,r),t}();return e(window).on(\"load\",(function(){s._jQueryInterface.call(e(i))})),e.fn[t]=s._jQueryInterface,e.fn[t].Constructor=s,e.fn[t].noConflict=function(){return e.fn[t]=n,s._jQueryInterface},s}(jQuery);function p(e){return(p=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function v(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var y=function(e){var t=\"CardWidget\",n=\".\".concat(\"lte.cardwidget\"),i=e.fn[t],o={EXPANDED:\"expanded\".concat(n),COLLAPSED:\"collapsed\".concat(n),MAXIMIZED:\"maximized\".concat(n),MINIMIZED:\"minimized\".concat(n),REMOVED:\"removed\".concat(n)},a=\"card\",s=\"collapsed-card\",r=\"collapsing-card\",l=\"expanding-card\",c=\"was-collapsed\",u=\"maximized-card\",d={DATA_REMOVE:'[data-card-widget=\"remove\"]',DATA_COLLAPSE:'[data-card-widget=\"collapse\"]',DATA_MAXIMIZE:'[data-card-widget=\"maximize\"]',CARD:\".\".concat(a),CARD_HEADER:\".card-header\",CARD_BODY:\".card-body\",CARD_FOOTER:\".card-footer\",COLLAPSED:\".\".concat(s)},h={animationSpeed:\"normal\",collapseTrigger:d.DATA_COLLAPSE,removeTrigger:d.DATA_REMOVE,maximizeTrigger:d.DATA_MAXIMIZE,collapseIcon:\"fa-minus\",expandIcon:\"fa-plus\",maximizeIcon:\"fa-expand\",minimizeIcon:\"fa-compress\"},f=function(){function t(n,i){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._element=n,this._parent=n.parents(d.CARD).first(),n.hasClass(a)&&(this._parent=n),this._settings=e.extend({},h,i)}var n,i,f;return n=t,f=[{key:\"_jQueryInterface\",value:function(n){var i=e(this).data(\"lte.cardwidget\"),o=e.extend({},h,e(this).data());i||(i=new t(e(this),o),e(this).data(\"lte.cardwidget\",\"string\"==typeof n?i:n)),\"string\"==typeof n&&n.match(/collapse|expand|remove|toggle|maximize|minimize|toggleMaximize/)?i[n]():\"object\"===p(n)&&i._init(e(this))}}],(i=[{key:\"collapse\",value:function(){var t=this;this._parent.addClass(r).children(\"\".concat(d.CARD_BODY,\", \").concat(d.CARD_FOOTER)).slideUp(this._settings.animationSpeed,(function(){t._parent.addClass(s).removeClass(r)})),this._parent.find(\"> \"+d.CARD_HEADER+\" \"+this._settings.collapseTrigger+\" .\"+this._settings.collapseIcon).addClass(this._settings.expandIcon).removeClass(this._settings.collapseIcon);var n=e.Event(o.COLLAPSED);this._element.trigger(n,this._parent)}},{key:\"expand\",value:function(){var t=this;this._parent.addClass(l).children(\"\".concat(d.CARD_BODY,\", \").concat(d.CARD_FOOTER)).slideDown(this._settings.animationSpeed,(function(){t._parent.removeClass(s).removeClass(l)})),this._parent.find(\"> \"+d.CARD_HEADER+\" \"+this._settings.collapseTrigger+\" .\"+this._settings.expandIcon).addClass(this._settings.collapseIcon).removeClass(this._settings.expandIcon);var n=e.Event(o.EXPANDED);this._element.trigger(n,this._parent)}},{key:\"remove\",value:function(){this._parent.slideUp();var t=e.Event(o.REMOVED);this._element.trigger(t,this._parent)}},{key:\"toggle\",value:function(){this._parent.hasClass(s)?this.expand():this.collapse()}},{key:\"maximize\",value:function(){this._parent.find(this._settings.maximizeTrigger+\" .\"+this._settings.maximizeIcon).addClass(this._settings.minimizeIcon).removeClass(this._settings.maximizeIcon),this._parent.css({height:this._parent.height(),width:this._parent.width(),transition:\"all .15s\"}).delay(150).queue((function(){e(this).addClass(u),e(\"html\").addClass(u),e(this).hasClass(s)&&e(this).addClass(c),e(this).dequeue()}));var t=e.Event(o.MAXIMIZED);this._element.trigger(t,this._parent)}},{key:\"minimize\",value:function(){this._parent.find(this._settings.maximizeTrigger+\" .\"+this._settings.minimizeIcon).addClass(this._settings.maximizeIcon).removeClass(this._settings.minimizeIcon),this._parent.css(\"cssText\",\"height:\"+this._parent[0].style.height+\" !important;width:\"+this._parent[0].style.width+\" !important; transition: all .15s;\").delay(10).queue((function(){e(this).removeClass(u),e(\"html\").removeClass(u),e(this).css({height:\"inherit\",width:\"inherit\"}),e(this).hasClass(c)&&e(this).removeClass(c),e(this).dequeue()}));var t=e.Event(o.MINIMIZED);this._element.trigger(t,this._parent)}},{key:\"toggleMaximize\",value:function(){this._parent.hasClass(u)?this.minimize():this.maximize()}},{key:\"_init\",value:function(t){var n=this;this._parent=t,e(this).find(this._settings.collapseTrigger).click((function(){n.toggle()})),e(this).find(this._settings.maximizeTrigger).click((function(){n.toggleMaximize()})),e(this).find(this._settings.removeTrigger).click((function(){n.remove()}))}}])&&v(n.prototype,i),f&&v(n,f),t}();return e(document).on(\"click\",d.DATA_COLLAPSE,(function(t){t&&t.preventDefault(),f._jQueryInterface.call(e(this),\"toggle\")})),e(document).on(\"click\",d.DATA_REMOVE,(function(t){t&&t.preventDefault(),f._jQueryInterface.call(e(this),\"remove\")})),e(document).on(\"click\",d.DATA_MAXIMIZE,(function(t){t&&t.preventDefault(),f._jQueryInterface.call(e(this),\"toggleMaximize\")})),e.fn[t]=f._jQueryInterface,e.fn[t].Constructor=f,e.fn[t].noConflict=function(){return e.fn[t]=i,f._jQueryInterface},f}(jQuery);function m(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var _=function(e){var t=\"CardRefresh\",n=\".\".concat(\"lte.cardrefresh\"),i=e.fn[t],o={LOADED:\"loaded\".concat(n),OVERLAY_ADDED:\"overlay.added\".concat(n),OVERLAY_REMOVED:\"overlay.removed\".concat(n)},a=\"card\",s={CARD:\".\".concat(a),DATA_REFRESH:'[data-card-widget=\"card-refresh\"]'},r={source:\"\",sourceSelector:\"\",params:{},trigger:s.DATA_REFRESH,content:\".card-body\",loadInContent:!0,loadOnInit:!0,responseType:\"\",overlayTemplate:'<div class=\"overlay\"><i class=\"fas fa-2x fa-sync-alt fa-spin\"></i></div>',onLoadStart:function(){},onLoadDone:function(e){return e}},l=function(){function t(n,i){if(function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._element=n,this._parent=n.parents(s.CARD).first(),this._settings=e.extend({},r,i),this._overlay=e(this._settings.overlayTemplate),n.hasClass(a)&&(this._parent=n),\"\"===this._settings.source)throw new Error(\"Source url was not defined. Please specify a url in your CardRefresh source option.\")}var n,i,l;return n=t,l=[{key:\"_jQueryInterface\",value:function(n){var i=e(this).data(\"lte.cardrefresh\"),o=e.extend({},r,e(this).data());i||(i=new t(e(this),o),e(this).data(\"lte.cardrefresh\",\"string\"==typeof n?i:n)),\"string\"==typeof n&&n.match(/load/)?i[n]():i._init(e(this))}}],(i=[{key:\"load\",value:function(){this._addOverlay(),this._settings.onLoadStart.call(e(this)),e.get(this._settings.source,this._settings.params,function(t){this._settings.loadInContent&&(\"\"!=this._settings.sourceSelector&&(t=e(t).find(this._settings.sourceSelector).html()),this._parent.find(this._settings.content).html(t)),this._settings.onLoadDone.call(e(this),t),this._removeOverlay()}.bind(this),\"\"!==this._settings.responseType&&this._settings.responseType);var t=e.Event(o.LOADED);e(this._element).trigger(t)}},{key:\"_addOverlay\",value:function(){this._parent.append(this._overlay);var t=e.Event(o.OVERLAY_ADDED);e(this._element).trigger(t)}},{key:\"_removeOverlay\",value:function(){this._parent.find(this._overlay).remove();var t=e.Event(o.OVERLAY_REMOVED);e(this._element).trigger(t)}},{key:\"_init\",value:function(t){var n=this;e(this).find(this._settings.trigger).on(\"click\",(function(){n.load()})),this._settings.loadOnInit&&this.load()}}])&&m(n.prototype,i),l&&m(n,l),t}();return e(document).on(\"click\",s.DATA_REFRESH,(function(t){t&&t.preventDefault(),l._jQueryInterface.call(e(this),\"load\")})),e(document).ready((function(){e(s.DATA_REFRESH).each((function(){l._jQueryInterface.call(e(this))}))})),e.fn[t]=l._jQueryInterface,e.fn[t].Constructor=l,e.fn[t].noConflict=function(){return e.fn[t]=i,l._jQueryInterface},l}(jQuery),b=n(1);function C(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var w=function(e){var t=\"Toasts\",n=\".\".concat(\"lte.toasts\"),i=e.fn[t],o={INIT:\"init\".concat(n),CREATED:\"created\".concat(n),REMOVED:\"removed\".concat(n)},a=\"#toastsContainerTopRight\",s=\"#toastsContainerTopLeft\",r=\"#toastsContainerBottomRight\",l=\"#toastsContainerBottomLeft\",c=\"toasts-top-right\",u=\"toasts-top-left\",d=\"toasts-bottom-right\",h=\"toasts-bottom-left\",f=\"topRight\",g=\"topLeft\",p=\"bottomRight\",v=\"bottomLeft\",y={position:f,fixed:!0,autohide:!1,autoremove:!0,delay:1e3,fade:!0,icon:null,image:null,imageAlt:null,imageHeight:\"25px\",title:null,subtitle:null,close:!0,body:null,class:null},m=function(){function t(n,i){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._config=i,this._prepareContainer();var a=e.Event(o.INIT);e(\"body\").trigger(a)}var n,i,m;return n=t,m=[{key:\"_jQueryInterface\",value:function(n,i){return this.each((function(){var o=e.extend({},y,i),a=new t(e(this),o);\"create\"===n&&a[n]()}))}}],(i=[{key:\"create\",value:function(){var t=e('<div class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\"/>');t.data(\"autohide\",this._config.autohide),t.data(\"animation\",this._config.fade),this._config.class&&t.addClass(this._config.class),this._config.delay&&500!=this._config.delay&&t.data(\"delay\",this._config.delay);var n=e('<div class=\"toast-header\">');if(null!=this._config.image){var i=e(\"<img />\").addClass(\"rounded mr-2\").attr(\"src\",this._config.image).attr(\"alt\",this._config.imageAlt);null!=this._config.imageHeight&&i.height(this._config.imageHeight).width(\"auto\"),n.append(i)}if(null!=this._config.icon&&n.append(e(\"<i />\").addClass(\"mr-2\").addClass(this._config.icon)),null!=this._config.title&&n.append(e(\"<strong />\").addClass(\"mr-auto\").html(this._config.title)),null!=this._config.subtitle&&n.append(e(\"<small />\").html(this._config.subtitle)),1==this._config.close){var a=e('<button data-dismiss=\"toast\" />').attr(\"type\",\"button\").addClass(\"ml-2 mb-1 close\").attr(\"aria-label\",\"Close\").append('<span aria-hidden=\"true\">&times;</span>');null==this._config.title&&a.toggleClass(\"ml-2 ml-auto\"),n.append(a)}t.append(n),null!=this._config.body&&t.append(e('<div class=\"toast-body\" />').html(this._config.body)),e(this._getContainerId()).prepend(t);var s=e.Event(o.CREATED);e(\"body\").trigger(s),t.toast(\"show\"),this._config.autoremove&&t.on(\"hidden.bs.toast\",(function(){e(this).delay(200).remove();var t=e.Event(o.REMOVED);e(\"body\").trigger(t)}))}},{key:\"_getContainerId\",value:function(){return this._config.position==f?a:this._config.position==g?s:this._config.position==p?r:this._config.position==v?l:void 0}},{key:\"_prepareContainer\",value:function(){if(0===e(this._getContainerId()).length){var t=e(\"<div />\").attr(\"id\",this._getContainerId().replace(\"#\",\"\"));this._config.position==f?t.addClass(c):this._config.position==g?t.addClass(u):this._config.position==p?t.addClass(d):this._config.position==v&&t.addClass(h),e(\"body\").append(t)}this._config.fixed?e(this._getContainerId()).addClass(\"fixed\"):e(this._getContainerId()).removeClass(\"fixed\")}}])&&C(n.prototype,i),m&&C(n,m),t}();return e.fn[t]=m._jQueryInterface,e.fn[t].Constructor=m,e.fn[t].noConflict=function(){return e.fn[t]=i,m._jQueryInterface},m}(jQuery)},17:function(e,t){},22:function(e,t){},24:function(e,t){},26:function(e,t){},4:function(e,t,n){n(14),n(17),n(22),n(24),e.exports=n(26)}});\n//# sourceMappingURL=adminlte.js.map"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/css/dcat-app-blue-light.css",
    "content": "#nprogress{pointer-events:none}#nprogress .bar{background:rgba(98,168,234,.8);position:fixed;z-index:999999;top:0;left:0;width:100%;height:2.5px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #62a8ea,0 0 5px #62a8ea;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:75px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#62a8ea transparent transparent #62a8ea;border-style:solid;border-width:2px;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.swal2-title{font-weight:400!important}.swal2-actions .btn{padding:.5rem 1.5rem!important}.swal2-container{z-index:89891015!important}html{font-size:14px;height:100%;letter-spacing:.01rem}html body{background-color:#eff1f7;color:#414750}.body-bg,.content-wrapper{background:#eff1f7}body::-webkit-scrollbar{width:10px;height:10px}body::-webkit-scrollbar-track{background-color:#eee}body::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.table-main::-webkit-scrollbar{width:10px;height:10px}.table-main::-webkit-scrollbar-track{background-color:#eee}.table-main::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.table-responsive::-webkit-scrollbar{width:10px;height:10px}.table-responsive::-webkit-scrollbar-track{background-color:#eee}.table-responsive::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar{width:10px;height:10px}.select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-track{background-color:#eee}.select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.layui-layer-page .layui-layer-content::-webkit-scrollbar{width:10px;height:10px}.layui-layer-page .layui-layer-content::-webkit-scrollbar-track{background-color:#eee}.layui-layer-page .layui-layer-content::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.iconpicker .iconpicker-items::-webkit-scrollbar{width:10px;height:10px}.iconpicker .iconpicker-items::-webkit-scrollbar-track{background-color:#eee}.iconpicker .iconpicker-items::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.breadcrumb,.h1,.h2,.h3,.h4,.h5,.h6,.header-navbar,.navigation,body,h1,h2,h3,h4,h5,h6{font-family:Nunito,Montserrat,system-ui,BlinkMacSystemFont,-apple-system,sans-serif}li{list-style-type:none}.text-primary-darker{color:#4c9ce7!important}.text-danger-darker{color:#bd4147!important}.text-blue-darker{color:#236bb0!important}.text-custom{color:#59a9f8!important}.text-pink{color:#ff8acc!important}.text-yellow{color:#edc30e!important}.text-light{color:#f7f7f9!important}.text-white50{color:hsla(0,0%,100%,.5)!important}.text-orange{color:#dda451!important}.text-orange-1{color:#ffcc80!important}.text-orange-2{color:#f99037!important}.text-blue-1{color:#007ee5!important}.text-blue-2{color:#4199de!important}.text-cyan{color:#7367f0!important}.text-tear{color:#01847f!important}.text-tear-1{color:#00b5b5!important}.text-gray{color:#b9c3cd!important}.text-20{color:#f6fbff!important}.text-30{color:#f4f7fa!important}.text-35{color:#e7eef7!important}.text-40{color:#ebf0f3!important}.text-50{color:#d3dde5!important}.text-60{color:#bacad6!important}.text-70{color:#b3b9bf!important}.text-80{color:#7c858e!important}.text-85{color:#5c7089!important}.bg-custom{background:#59a9f8!important}.bg-pink{background:#ff8acc!important}.bg-yellow{background:#edc30e!important}.bg-light{background:#f7f7f9!important}.bg-white50{background:hsla(0,0%,100%,.5)!important}.bg-orange{background:#dda451!important}.bg-orange-1{background:#ffcc80!important}.bg-orange-2{background:#f99037!important}.bg-blue-1{background:#007ee5!important}.bg-blue-2{background:#4199de!important}.bg-cyan{background:#7367f0!important}.bg-tear{background:#01847f!important}.bg-tear-1{background:#00b5b5!important}.bg-default{background:#d2d6de!important}.bg-gray{background:#b9c3cd!important}.bg-20{background:#f6fbff!important}.bg-30{background:#f4f7fa!important}.bg-35{background:#e7eef7!important}.bg-40{background:#ebf0f3!important}.bg-50{background:#d3dde5!important}.bg-60{background:#bacad6!important}.bg-70{background:#b3b9bf!important}.bg-80{background:#7c858e!important}.bg-primary-gradient{background-image:linear-gradient(60deg,#62a8ea,0,#78b4ed 37%,#b3d5f5 65%,#c5dff7)}.shadow-0{box-shadow:none!important}.shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.05)!important}.shadow-100{box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05)!important}.shadow-200{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important}.font-sm-1{font-size:.7rem!important}.font-sm-2{font-size:.8rem!important}.font-sm-3{font-size:.9rem!important}.font-md-1{font-size:1.1rem!important}.font-md-2{font-size:1.2rem!important}.font-md-3{font-size:1.3rem!important}.font-md-4{font-size:1.4rem!important}.font-md-5{font-size:1.5rem!important}.font-lg-1{font-size:2rem!important}.font-lg-2{font-size:3rem!important}.font-lg-3{font-size:4rem!important}.font-lg-4{font-size:5rem!important}.font-lg-5{font-size:6rem!important}.font-w-300{font-weight:300}.font-w-400{font-weight:400}.font-w-500{font-weight:500}.font-w-600{font-weight:600}.font-w-700{font-weight:700}.mt-1-5{margin-top:1.5rem!important}.mb-1-5{margin-bottom:1.5rem!important}.ml-1-5{margin-left:1.5rem!important}.mr-1-5{margin-right:1.5rem!important}.pt-1-5{padding-top:1.5rem!important}.pb-1-5{padding-bottom:1.5rem!important}.pl-1-5{padding-left:1.5rem!important}.pr-1-5{padding-right:1.5rem!important}.text-italic{font-style:italic}.text-highlight{padding:4px 6px}.pin,.pin-y{top:0;bottom:0}.pin{right:0;left:0}.icon-bg-circle{color:#fff;padding:.5rem;border-radius:50%}.icon-left,.icon-right{margin-right:.5rem}.icon-spin{display:inline-block;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}.hidden{display:none;visibility:hidden}.round{border-radius:1.5rem}.square{border-radius:0}.icon-line-height{line-height:1.5rem!important}.spinner{display:inline-block;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}button:focus{outline:none}.overflow-x-auto{overflow-x:auto!important}.overflow-y-auto{overflow-y:auto!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{line-height:1.3}.content .content-wrapper{padding:7rem 2.5rem 0}.navbar-fixed-top .content-wrapper{padding-top:6.4rem}.full-page .content .content-wrapper{padding:0;margin-left:0!important}dl,ol,ul{margin-bottom:0}.btn{padding:.54rem 1.2rem!important;height:34px;line-height:1.2;border-radius:.2rem;cursor:pointer;box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn.btn-trans{box-shadow:none}.btn-trans.btn-primary{background-color:#fff;border-color:#fff;color:#62a8ea}.btn-shadow.btn,.btn:focus,.btn:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn-shadow.btn:focus,.btn-shadow.btn:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)}.btn-group-sm>.btn,.btn-lg,.btn-sm{border-radius:.2rem}.btn-primary{color:#fff}.btn-sm,.btn-xs{padding:.54rem .9rem!important}a.btn,span.btn{line-height:1.4}div.btn{line-height:1.3}.btn-group-sm>div.btn,.btn-group-sm>span.btn,div.btn.btn-sm,span.btn.btn-sm{line-height:1.2}.btn-group-sm>a.btn,a.btn-sm{line-height:1.1}.btn-warning,.btn.btn-warning.active,.btn.btn-warning:focus,.btn.btn-warning:hover{color:#fff}.btn-group-sm>.btn,.btn-sm{font-size:12px;line-height:1.1;height:30px}.btn-default{background:#fff;border-color:#fff}.btn-default.active,.btn-default:focus,.btn-default:hover{background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05)}.btn-group{box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn-group .btn:not(.btn-white):hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05)}.btn-group .btn{box-shadow:none!important}.btn-group.btn-shadow{box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn-custom{color:#2a2e30;background-color:#59a9f8;border-color:#59a9f8;color:#fff}.btn-custom:hover{color:#fff;background-color:#48a0f7;border-color:#48a0f7}.btn-custom.focus,.btn-custom:focus{box-shadow:0 0 0 .2rem rgba(82,151,218,.5)}.btn-custom.disabled,.btn-custom:disabled{color:#2a2e30;background-color:#59a9f8;border-color:#59a9f8}.btn-custom:not(:disabled):not(.disabled).active,.btn-custom:not(:disabled):not(.disabled):active,.show>.btn-custom.dropdown-toggle{color:#fff;background-color:#419cf7;border-color:#419cf7}.btn-custom:not(:disabled):not(.disabled).active:focus,.btn-custom:not(:disabled):not(.disabled):active:focus,.show>.btn-custom.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,151,218,.5)}.btn-outline-custom,.btn-outline-custom:hover{color:#59a9f8;border-color:#59a9f8}.btn-outline-custom:hover{background-color:rgba(89,169,248,.1)}.btn-outline-custom.focus,.btn-outline-custom:focus{box-shadow:0 0 0 .2rem rgba(89,169,248,.5)}.btn-outline-custom.disabled,.btn-outline-custom:disabled{color:#59a9f8;background-color:transparent}.btn-outline-custom:not(:disabled):not(.disabled).active,.btn-outline-custom:not(:disabled):not(.disabled):active,.show>.btn-outline-custom.dropdown-toggle{color:#2a2e30;background-color:#59a9f8;border-color:#59a9f8}.btn-outline-custom:not(:disabled):not(.disabled).active:focus,.btn-outline-custom:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-custom.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(89,169,248,.5)}.btn-cyan{color:#fff;background-color:#7367f0;border-color:#7367f0}.btn-cyan:hover{color:#fff;background-color:#6457ee;border-color:#6457ee}.btn-cyan.focus,.btn-cyan:focus{box-shadow:0 0 0 .2rem rgba(136,126,242,.5)}.btn-cyan.disabled,.btn-cyan:disabled{color:#fff;background-color:#7367f0;border-color:#7367f0}.btn-cyan:not(:disabled):not(.disabled).active,.btn-cyan:not(:disabled):not(.disabled):active,.show>.btn-cyan.dropdown-toggle{color:#fff;background-color:#5e50ee;border-color:#5e50ee}.btn-cyan:not(:disabled):not(.disabled).active:focus,.btn-cyan:not(:disabled):not(.disabled):active:focus,.show>.btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(136,126,242,.5)}.btn-outline-cyan,.btn-outline-cyan:hover{color:#7367f0;border-color:#7367f0}.btn-outline-cyan:hover{background-color:rgba(115,103,240,.1)}.btn-outline-cyan.focus,.btn-outline-cyan:focus{box-shadow:0 0 0 .2rem rgba(115,103,240,.5)}.btn-outline-cyan.disabled,.btn-outline-cyan:disabled{color:#7367f0;background-color:transparent}.btn-outline-cyan:not(:disabled):not(.disabled).active,.btn-outline-cyan:not(:disabled):not(.disabled):active,.show>.btn-outline-cyan.dropdown-toggle{color:#fff;background-color:#7367f0;border-color:#7367f0}.btn-outline-cyan:not(:disabled):not(.disabled).active:focus,.btn-outline-cyan:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(115,103,240,.5)}.btn.btn-default,.btn.btn-white{color:#414750;box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065);background:#fff}.btn.btn-white.btn-primary,.btn.btn-white.btn-primary:focus,.btn.btn-white.btn-primary:hover{color:#fff!important}.btn-white.active,.btn-white:focus,.btn-white:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important}.btn-light{border-color:#dbe3e6!important;background-color:#fff!important;color:#444;box-shadow:none}.btn-light:focus,.btn-light:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important;color:#444!important}.btn-secondary{border-color:#e4eaee!important;background-color:#f4f4f4!important;color:#414750!important;box-shadow:none}.btn-secondary:focus,.btn-secondary:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important}.btn-flat-danger,.btn-flat-dark,.btn-flat-info,.btn-flat-primary,.btn-flat-success,.btn-flat-warning,.btn-no-shadow,.btn-outline-danger,.btn-outline-dark,.btn-outline-info,.btn-outline-primary,.btn-outline-success,.btn-outline-warning{box-shadow:none}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.5rem .7rem}.btn:not(.btn-sm) .spinner-grow,a:not(.btn) .spinner-grow{margin-bottom:.15rem}.btn-outline{background-color:transparent}.btn-primary.btn-outline{color:#62a8ea;border-color:#62a8ea}.btn-info.btn-outline{color:#4277cf;border-color:#4277cf}.btn-success.btn-outline{color:#21b978;border-color:#21b978}.btn-danger.btn-outline{color:#ea5455;border-color:#ea5455}.btn-warning.btn-outline{color:#dda451;border-color:#dda451}.btn-primary.btn-outline.disabled,.btn-primary.btn-outline:disabled{background:transparent}.btn-danger.btn-outline.active,.btn-danger.btn-outline:hover,.btn-info.btn-outline.active,.btn-info.btn-outline:hover,.btn-success.btn-outline.active,.btn-success.btn-outline:hover,.btn-warning.btn-outline.active,.btn-warning.btn-outline:hover{color:#fff}.btn-primary.btn-outline.active,.btn-primary.btn-outline:hover{background:rgba(98,168,234,.05);color:#62a8ea}.number-group .input-group-btn:first-child .btn{border-bottom-right-radius:0;border-top-right-radius:0;border-right:0}.number-group .input-group-btn:last-child .btn{border-bottom-left-radius:0;border-top-left-radius:0}.header-navbar.navbar-shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.header-navbar.floating-nav{margin:1.3rem 2.2rem 0}.navbar-container{height:60px}.navbar-light{background-color:#fff}.dark-mode-switcher{margin:0 5px 0 0;font-size:1.5rem;cursor:pointer}.breadcrumb{border-left:0}.content-header{padding:0 0 2px}.breadcrumbs-top{margin-bottom:1rem}.content-header h1{font-weight:400;font-size:24px;display:inline-block;font-family:Montserrat,Nunito,sans-serif}.content-header h1 small{font-size:15px;display:inline-block;padding-left:5px;color:#777}.custom-data-table-header .table-responsive .top{display:flex;justify-content:space-between;padding:0 1rem}.custom-data-table-header .table-responsive .top .action-btns{margin-top:1.5rem;display:flex}.custom-data-table-header .table-responsive .top .action-btns .actions-dropodown{box-shadow:0 2px 8px 0 rgba(0,0,0,.14);border-radius:.3rem;margin-right:.75rem}.custom-data-table-header .table-responsive .top .action-btns .actions-dropodown .dropdown-toggle{font-size:1.125rem;font-weight:500}.custom-data-table-header .table-responsive .top .action-btns .actions-dropodown .dropdown-toggle:after{left:0}.custom-data-table-header .table-responsive .top .action-btns .dt-buttons .btn{padding:.9rem .938rem}.table-responsive .table-filter{display:inline-block}.table-filter .form-control{padding:1.25rem 2.8rem!important;border-radius:5rem;border:0;background:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);font-size:.82rem}.table-filter label{position:relative}.table-filter label:after{content:\"\\E8BD\";font-family:feather;position:absolute;top:.45rem;font-size:1.1rem;left:1.1rem;font-weight:300;color:#b3b9bf}table.custom-data-table.data-table{border-spacing:0 .8rem;padding:0}table.custom-data-table tbody tr{background:#fff}table.data-table{border-collapse:separate!important}table.custom-data-table.data-table thead th{padding:.714rem .51rem;font-weight:600;border-bottom:0;border-top:0}table.custom-data-table.data-table thead th input:focus{outline:0}table.custom-data-table.data-table thead th:first-child{padding-left:.9rem}table.custom-data-table.data-table tbody tr{background-color:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);cursor:pointer;transition:all .3s ease;border-radius:.3rem}table.custom-data-table.data-table tbody tr:hover{background:#f8fafc}table.custom-data-table.data-table tbody tr td:first-child{padding-left:1rem;border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}table.custom-data-table.data-table tbody tr td:last-child{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}table.custom-data-table.data-table tbody tr.selected td{border-radius:0}table.custom-data-table.data-table tbody td{border:none;vertical-align:middle;height:60px;padding:.55rem;line-height:1.42857}table.custom-data-table.data-table tbody td:focus,table.custom-data-table.data-table tbody td input:focus{outline:0}table.custom-data-table.data-table tbody td .progress{margin-bottom:0;box-shadow:0 4px 8px 0 rgba(0,0,0,.12),0 2px 4px 0 rgba(0,0,0,.08)}.form-control{border-color:#dbe3e6;color:#414750}.form-control:not(textarea){padding:.5rem .7rem;font-size:.9rem}div.form-control,input.form-control{min-height:34px;border-radius:.25rem}.input-group-text{border-color:#dbe3e6}.form-control-sm{padding:.5rem 1.5rem}select.form-control:not([multiple=multiple]){background-image:none}.form-control-sm,.input-group-sm>.custom-select,.input-group-sm>.form-control{line-height:13px}.input-group-sm>div.form-control,.input-group-sm>input.form-control,div.form-control-sm,input.form-control-sm{max-height:30px;min-height:30px}.input-group .form-control{height:100%}.input-group-text{padding:.6rem .9rem;border-radius:.25rem}.help-block{display:block;margin-top:7px;margin-bottom:3px;color:#737373}.control-label{padding-top:10px;padding-right:5px;margin-bottom:0;font-size:1rem;text-transform:capitalize}.fields-group .row.form-group{margin-right:0;margin-left:0}@media (min-width:768px){.form-group .control-label{text-align:right}}.with-errors.help-block{margin-bottom:4px}.form-control:disabled,.form-control[readonly],.select2-container--default.select2-container--disabled .select2-selection--multiple,.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#f7f7f9!important;cursor:not-allowed!important}.has-error .checkbox,.has-error .checkbox-inline,.has-error.checkbox label,.has-error .control-label,.has-error .form-control-position i,.has-error .form-control:focus~.form-control-position i,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.radio label{color:#bd4147}.control-label.asterisk:before{content:\"* \";font-weight:700;color:#bd4147}.form-group.has-error .form-control{border-color:#bd4147}.input-group-prepend .input-group-text{margin-right:-1px;max-height:34px}.input-group-addon{width:1%;white-space:nowrap;vertical-align:middle;padding:6px 12px;font-size:14px;font-weight:400;line-height:1;text-align:center;background-color:#fff;border:1px solid #dbe3e6;min-width:30px}.input-group-sm>.input-group-addon{height:30px;padding:5px 10px;font-size:.7rem;line-height:1.5}.select2-container--default .select2-search--dropdown .select2-search__field,.select2-container--default .select2-selection--multiple,.select2-container--default .select2-selection--single{border-color:#dbe3e6!important;border-radius:.25rem!important}.select2-search--inline{display:inline-block}.select2-container--default .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-search--inline .select2-search__field:focus{border-color:#62a8ea!important}.select2-container--classic .select2-selection--multiple .select2-selection__rendered li .select2-search__field,.select2-container--default .select2-selection--multiple .select2-selection__rendered li .select2-search__field{margin-top:8px}.input-group .select2-container{width:50%!important;flex:1 1 auto}.select2-container .select2-selection--multiple{min-height:34px!important}.select2-container--classic .select2-selection--single,.select2-container--default .select2-selection--single{min-height:34px;padding:5px;border:1px solid rgba(0,0,0,.2)}.select2-container--default .select2-selection--single .select2-selection__arrow{height:32px!important}.select2-dropdown{border:1px solid rgba(0,0,0,.03)!important;box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#f1f1f1!important}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#ebf0f3!important;color:#414750!important}.select2-results__option{padding:6px 10px!important}.select2-container--default .select2-selection--multiple .select2-selection__choice{padding:2px 5px!important;border:0!important;font-size:90%;background-color:#62a8ea!important}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#fff!important;border-right:0!important}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:focus,.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{background-color:#62a8ea!important}.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .25rem!important}.select2-selection .default-text{display:inline-block;padding:.5rem .7rem 0}.select2-container--default .select2-selection--single .select2-selection__rendered{line-height:30px!important}.input-group-sm .select2-container--classic .select2-selection--single,.input-group-sm .select2-container--default .select2-selection--single{min-height:31px;padding:1px 2px;font-size:.7rem}.input-group-sm .select2-selection .default-text{padding:.3rem .5rem 0}.input-group-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .4rem!important}.input-group-sm .select2-container--default .select2-selection--multiple{min-height:30px!important;padding:0 2px;font-size:.7rem;line-height:14px}.input-group-sm .select2-container--default .select2-selection--single .select2-selection__arrow{top:-3px}.input-group-sm .select2-container--classic .select2-selection--multiple .select2-selection__rendered li .select2-search__field,.input-group-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered li .select2-search__field{margin-top:6px}.glyphicon-arrow-right:before{font-family:feather;content:\"\\E829\"}.glyphicon-arrow-left:before{font-family:feather;content:\"\\E828\"}.bootstrap-duallistbox-container .info{color:#414750!important}.has-icon-left .form-control-position{right:auto;left:inherit}.form-control-position{position:absolute;top:0;right:0;z-index:2;display:block;width:2.5rem;height:2.5rem;line-height:2.5rem;text-align:center}.has-icon-left .form-control{padding-right:2rem;padding-left:3rem}.form-divider{height:20px;border-bottom:1px solid #eee}.form-divider span{font-size:16px;background-color:#fff;padding:0 10px}.pagination .page-item .page-link{font-weight:600;font-size:.95rem;padding:.5rem .75rem}.pagination .page-item.disabled{opacity:.82}.table{color:#414750;margin-bottom:0}.table-middle td{vertical-align:middle}.table-text-center td,.table-text-center th{text-align:center}table.data-table thead tr{background:transparent}.table thead th{padding:.65rem;font-weight:600;text-transform:capitalize;font-size:.95rem!important;border-bottom:1px solid #f0f0f0}table.data-table tfoot td,table.data-table tfoot th,table.data-table thead td,table.data-table thead th{font-size:.9rem!important}table.data-table:not(.table-bordered) thead tr th{text-transform:capitalize}table.data-table{border:0}.table td{padding:.55rem;height:55px;line-height:1.42857;border-color:#f0f0f0}.table tr td:first-child,.table tr th:first-child{padding-left:2rem}.quick-search-clear{margin-left:-1.45rem;position:relative;color:#fff}.table-responsive{border:0!important;margin-bottom:0!important;overflow-x:inherit}.table-responsive[data-pattern=priority-columns]{overflow-y:auto!important}.custom-data-table-header .table-responsive{overflow:visible!important;padding-bottom:0!important}.sticky-table-header{z-index:45!important}table.table-bordered.data-table:not(.complex-headers) tbody th,table.table-bordered.data-table tbody td{border-bottom-width:1px}table.table-bordered.data-table td,table.table-bordered.data-table th:not(.complex-headers){border-left-width:1px}table.table-bordered.data-table td:last-child,table.table-bordered.data-table th:last-child{border-right-width:1px}table.data-table.complex-headers{border:1px solid #e4e4e4}table.data-table.complex-headers tfoot td,table.data-table.complex-headers tfoot th,table.data-table.complex-headers thead td,table.data-table.complex-headers thead th{border-bottom:1px solid #e4e4e4;border-right:1px solid #e4e4e4}.data-table.table-bordered:not(.complex-headers) thead th{border-right:1px solid #e2e8ec;border-bottom:1px solid #e2e8ec}.data-table.table-bordered:not(.complex-headers) tr:first-child th{border-top:1px solid #e2e8ec}.data-table.table-bordered:not(.complex-headers) thead tr th:first-child{border-left:1px solid #e2e8ec}table.table-bordered.data-table.complex-headers{border-spacing:0;margin-top:12px!important;box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}table.table-bordered.data-table.complex-headers thead th{vertical-align:middle;font-size:1rem!important}table.table-bordered.data-table.complex-headers tbody tr{box-shadow:none;border-radius:0}table.table-bordered.data-table.complex-headers tbody tr td{border-bottom:1px solid #eee;border-right:1px solid #eee}table.table-bordered.data-table.complex-headers tbody tr td:first-child{border-top-left-radius:0;border-bottom-left-radius:0}table.table-bordered.data-table.complex-headers tbody tr td:last-child{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}table.table-bordered.data-table.complex-headers tbody tr:last-child td{border-bottom:0}.table-hover tbody tr:hover{color:#414750;background-color:#f8fafc}.table.default-table tr{box-shadow:none!important}.table.default-table td{border-top:1px solid #f0f4f8!important;border-radius:0!important}.table.default-table thead th{border-bottom:2px solid #f0f4f8!important}.table.default-table.table-bordered td,.table.default-table.table-bordered th{border:1px solid #f0f4f8!important}.table-collapse .custom-data-table.data-table tbody tr td:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.table-collapse .custom-data-table.data-table tbody tr td:last-child{border-top-right-radius:0;border-bottom-right-radius:0}.table-collapse .custom-data-table.data-table tbody tr:first-child td:first-child{border-top-left-radius:.25rem}.table-collapse .custom-data-table.data-table tbody tr:first-child td:last-child{border-top-right-radius:.25rem}.table-collapse .custom-data-table.data-table tbody tr:last-child td:first-child{border-bottom-left-radius:.25rem}.table-collapse .custom-data-table.data-table tbody tr:last-child td:last-child{border-bottom-right-radius:.25rem}.table-collapse .table.custom-data-table{padding:3px 5px 5px}.table-collapse .table-fixed-left .table.custom-data-table{padding:3px 0 0 5px}.table-collapse .table-fixed-right .table.custom-data-table{padding:3px 5px 0 0}.table-collapse .table-fixed th{background:#ececf1}body:not(.dark-mode) .table-collapse{box-shadow:0 2px 4px 0 rgba(0,0,0,.05);background:#ececf1;margin-top:1rem}body:not(.dark-mode) .table-collapse .custom-data-table{border-spacing:0;margin-top:0!important;background-color:#ececf1}body:not(.dark-mode) .table-collapse table.custom-data-table thead th{height:38px;vertical-align:middle}body:not(.dark-mode) .table-collapse .custom-data-table tbody td{border-top:1px solid #eff3f8;height:60px}body:not(.dark-mode) .table-collapse .custom-data-table tbody tr:first-child td{border-top:0}body:not(.dark-mode) .table-collapse table.custom-data-table tbody tr{box-shadow:none}body:not(.dark-mode) .table-collapse .quick-create td{background:#f7f7f9!important;border-radius:0}body:not(.dark-mode) .table-collapse .table-wrap table.custom-data-table thead th{height:19px}body.dark-mode .table-collapse table{border-spacing:0 .24rem}body.dark-mode .table-collapse table.custom-data-table.data-table tbody td{height:56px}body.dark-mode .table-collapse .table.custom-data-table{padding:3px 10px 10px}body.dark-mode .table-collapse .table-fixed-left .table.custom-data-table{padding:3px 0 0 10px}body.dark-mode .table-collapse .table-fixed-right .table.custom-data-table{padding:3px 10px 0 0}.column-selector{margin:0 5px}.column-selector .dropdown-menu{z-index:100}.column-selector .selectors{padding:0 1rem;height:auto;max-height:500px;overflow-x:hidden}.column-selector .selectors::-webkit-scrollbar{width:10px;height:10px}.column-selector .selectors::-webkit-scrollbar-track{background-color:#eee}.column-selector .selectors::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.grid-column-header a{color:#a5acb3;font-size:1rem}.grid-column-header a.active,.grid-column-header a:hover{color:#4c9ce7}.grid-sort{display:inline-block;margin:-2px -4px 0 3px;height:15px}.grid-sort .up:before{font-family:feather;padding-right:.3rem;font-size:.7rem;content:\"\\E845\"}.grid-sort .down{margin:6px 0 0 -1.17rem}.grid-sort .down:after{font-family:feather;content:\"\\E842\";font-size:.7rem}.dcat-box.card{margin-bottom:0}.dcat-box.card .card-header{border-bottom:0;padding:1.3rem 1.5rem;margin-bottom:.5rem}.dcat-box.card .card-body{padding:1rem 0 0}.dcat-box.card .box-footer{border:0;padding:1rem 1.5rem 1.3rem}.table-responsive.table-scrollbar-x{overflow-x:auto}.table-responsive.table-scrollbar-x .table{width:-webkit-max-content;width:-moz-max-content;width:max-content;min-width:100%}.right-side-filter-container .header{border-bottom:1px solid #f4f4f4;width:100%;background:#fff;z-index:10;top:0;margin-left:-1rem}.quick-create td{padding-left:45px;background-color:#f3f3f3;vertical-align:middle;height:42px;color:#777;border-bottom:#eff3f8}.grid-modal .modal-body{padding:1.5rem}.simple-grid .filter-box{background:transparent;box-shadow:none!important;margin:.5rem 0 -1rem!important;padding:0!important}.simple-grid .filter-box .form-group{margin-bottom:1rem}.simple-grid .dcat-box.card .card-header{padding:.8rem 0}.simple-grid .dcat-box.card .box-footer{padding:1rem 1.5rem 0}body:not(.dark-mode) .simple-grid .card{box-shadow:none}body:not(.dark-mode) .simple-grid .table-collapse{box-shadow:none;background:transparent}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table{background:transparent}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table.data-table tbody td{height:48px}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table.data-table thead th{height:20px}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table{padding:5px 0 0;border-bottom:1px solid #eff3f8}body:not(.dark-mode) .simple-grid .table-collapse table.data-table thead tr:last-child th{border-bottom:2px solid #eff3f8}.vs-checkbox-con.checkbox-grid-column input:disabled+.vs-checkbox{cursor:not-allowed;opacity:.33}.dropdown-menu{z-index:20}.dropdown .dropdown-menu{box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05);border:0;min-width:10rem;transform:none}.dropdown .dropdown-menu .dropdown-item:hover{background-color:#f4f7fa;color:#414750}.dropdown .dropdown-menu:before{border-top:1px solid rgba(0,0,0,.07);border-left:1px solid rgba(0,0,0,.07)}.dropdown i{margin-right:0}.dropdown .dropdown-menu .dropdown-item,.dropleft .dropdown-menu .dropdown-item,.dropright .dropdown-menu .dropdown-item,.dropup .dropdown-menu .dropdown-item{padding:0;color:#414750}.dropdown-item a,.dropdown-menu label{color:#414750}.dropdown-item a{padding:.35rem 1.38rem;display:block}.vs-checkbox-con{margin:0}.vs-checkbox-con input{z-index:5}.vs-checkbox-con .vs-checkbox{width:17px;height:17px}.vs-checkbox-con input:checked~.vs-checkbox .vs-checkbox--check .vs-icon{font-size:.95rem;margin-top:-1px}.vs-radio-con input{z-index:10}.card{box-shadow:0 2px 4px 0 rgba(0,0,0,.05);margin-bottom:1.5rem;border-radius:.25rem}.card .card-header{padding:1.1rem 1.1rem 0;align-items:center;display:flex;justify-content:space-between}.card-header.with-border{border-bottom:1px solid #f4f4f4;padding:1.1rem}.card-box-title{font-size:1.1rem}.card-title{font-size:1.2rem}.card-footer{background:transparent;border-color:#f4f4f4!important}.card-body,.card-footer{padding:1.1rem}.card-body .card-footer{padding:.8rem;margin:-1.1rem}.dd{margin:0!important}.dd-item>button:before{font-family:feather;content:\"\\E844\"!important;margin-top:3px}.dd-item>button[data-action=collapse]:before{content:\"\\E842\"!important}.dd-handle{border:1px solid #eaeff0!important;border-radius:.2rem!important}.layui-layer{box-shadow:0 2px 6px 0 rgba(0,0,0,.2)!important}.layui-layer-title{padding:0 80px 0 20px;height:52px!important;line-height:52px!important;border-bottom:1px solid #f4f4f4!important;font-size:1.1rem!important;text-transform:capitalize;overflow:hidden;background-color:#fff!important;border-radius:.25rem .25rem 0 0!important}.layui-layer-setwin .layui-layer-min cite{background:transparent!important;position:static!important}.layui-layer-setwin .layui-layer-min cite:before{font-family:feather;content:\"\\E897\";font-size:1.1rem;color:#414750}.layui-layer-ico{background:transparent!important;color:#414750}.layui-layer-setwin .layui-layer-max:before{font-family:feather;content:\"\\E908\";font-size:1rem}.layui-layer-setwin .layui-layer-maxmin:before{content:\"\\E88D\"}.layui-layer-setwin .layui-layer-close1:before{font-family:feather;content:\"\\E8F6\";font-size:1.1rem}.layui-layer-setwin .layui-layer-close1{margin-left:7px!important}.layui-layer-setwin a{top:3px}.layui-layer-tips,.layui-layer-tips .layui-layer-content{font-size:13px!important;box-shadow:none!important}.layui-layer-btn a{height:30px!important;line-height:20px!important;padding:4px 15px!important;font-size:.85rem;box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05);border-color:#fff!important}.layui-layer-btn .layui-layer-btn0{border-color:#62a8ea!important;background-color:#62a8ea!important;color:#fff!important}.layui-layer-border{border:0!important}.slider-panel{padding:0;background-color:#fff;position:fixed;top:0;bottom:0;height:100vh;height:calc(var(--vh, 1vh)*100);transition:right .4s cubic-bezier(.05,.74,.2,.99);-webkit-backface-visibility:hidden;backface-visibility:hidden;border-left:1px solid rgba(0,0,0,.05);box-shadow:0 0 5px 0 rgba(0,0,0,.05);width:450px;right:-450px;z-index:998}.slider-panel.open{right:0}.slider-panel .slider-content{position:relative;height:100%;width:450px}.slider-panel .slider-close{position:absolute;right:30px;top:20px;padding:7px;width:auto;z-index:10;color:#626262}.slider-panel .slider-close i{font-size:1.35rem}.slider-panel .slider-toggle{background:#62a8ea;color:#fff;display:block;box-shadow:-3px 0 8px rgba(0,0,0,.1);border-top-left-radius:6px;border-bottom-left-radius:6px;position:absolute;top:50%;width:38px;height:38px;left:-39px;text-align:center;line-height:40px;cursor:pointer}@media (max-width:576px){.slider-panel{width:410px;right:-410px}.slider-panel .slider-content{width:410px}}.grid-selector{width:100%;margin-top:1rem}.grid-selector .wrap{position:relative;line-height:40px;border-bottom:1px dashed #eee;padding:0 25px;font-size:13px;overflow:auto}.grid-selector .select-label{float:left;width:100px;padding-left:10px;color:#888}.grid-selector .select-options{margin-left:100px}.grid-selector ul{height:25px;list-style:none}.grid-selector ul>li{margin-right:30px;float:left}.grid-selector ul>li a{color:#666;text-decoration:none}.grid-selector .select-options a.active{color:#4c9ce7;font-weight:700}.grid-selector li .add{visibility:hidden}.grid-selector li:hover .add{visibility:visible}.grid-selector ul .clear{visibility:hidden}.grid-selector ul:hover .clear{color:#bd4147;visibility:visible}.grid-selector{padding:2px 0;margin:.35rem 0 -.5rem}.grid-selector .wrap{border-bottom:0;background:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);border-radius:.25rem;margin:7px 0}.simple-grid .grid-selector .wrap{box-shadow:none;border-radius:0;border-bottom:1px dashed #eff3f8}.box{position:relative;border-radius:.25rem;background:#fff;margin-bottom:10px;width:100%;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);display:flex;flex-direction:column}.box .box-footer,.card .box-footer{border-top:1px solid #f4f4f4}.box-header{padding:1rem;display:inherit;justify-content:space-between;align-items:center}.box-header .h3,.box-header h3{font-size:1.15rem;margin-bottom:0;padding:.1rem}.box-header.with-border,.card-header.with-border{border-bottom:1px solid #f4f4f4}.box,.panel{transition:.3s cubic-bezier(.25,.8,.5,1)}.box-shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.box.box-solid{border-top:0}.box-footer{display:inherit}.box-body,.box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px}.box-body .box-footer{margin:-10px}.box.box-solid.box-default{border:1px solid #e1e8ea;box-shadow:0 1px 1px rgba(0,0,0,.1)}.form-group .box{margin-bottom:0}.label{display:inline;padding:.24em .6em .34em;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;cursor:pointer}.badge,.label{font-size:87%;font-weight:600;color:#fff;margin-bottom:4px}.badge{min-width:10px;padding:5px 8px;border-radius:10px}.bg-default.badge,.label.bg-default{color:#414750;font-weight:700}.nav.nav-tabs .nav-item .nav-link.active:after{box-shadow:0 0 2px 0 rgba(98,168,234,.5)!important}.nav.nav-tabs .nav-item .nav-link{font-size:1rem;padding:17px 14px;text-transform:capitalize;letter-spacing:.045rem;color:rgba(0,0,0,.4);font-weight:700}.nav-vertical .nav.nav-tabs .nav-item .nav-link{padding:10px 25px}.nav-vertical .nav.nav-tabs .nav-item .nav-link.active:after{top:1.3rem;width:2.6rem;left:-17px;right:auto}.nav-vertical .nav.nav-tabs.nav-left{top:5px}.nav-vertical .nav.nav-tabs.nav-left~.tab-content .tab-pane{background-color:transparent}.nav-tabs .nav-item{margin-bottom:0}.nav.nav-tabs{border-bottom:1px solid #f4f4f4}.nav-vertical .nav.nav-tabs{border-bottom:0}.nav-vertical .nav-tabs.flex-column{border-right:0}.nav-vertical .nav-tabs.flex-column>li{border-bottom:0}.nav-theme-danger .nav.nav-tabs,.nav-theme-info .nav.nav-tabs,.nav-theme-primary .nav.nav-tabs,.nav-theme-success .nav.nav-tabs,.nav-theme-white .nav.nav-tabs{background:#62a8ea;padding-left:10px;border-radius:.15rem;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);border-bottom:0}.nav-theme-danger .nav.nav-tabs .nav-item .nav-link,.nav-theme-info .nav.nav-tabs .nav-item .nav-link,.nav-theme-primary .nav.nav-tabs .nav-item .nav-link,.nav-theme-success .nav.nav-tabs .nav-item .nav-link,.nav-theme-white .nav.nav-tabs .nav-item .nav-link{color:hsla(0,0%,100%,.5)}.nav-theme-danger .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-info .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-success .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active{color:#fff}.nav-theme-danger .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-info .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-success .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active:after{background:#fff!important}.nav-theme-danger .nav-tabs .nav-item,.nav-theme-info .nav-tabs .nav-item,.nav-theme-primary .nav-tabs .nav-item,.nav-theme-success .nav-tabs .nav-item,.nav-theme-white .nav-tabs .nav-item{margin-bottom:2px}.nav-theme-success .nav.nav-tabs{background:#21b978}.nav-theme-info .nav.nav-tabs{background:#4277cf}.nav-theme-danger .nav.nav-tabs{background:#ea5455}.nav-theme-white .nav.nav-tabs{background:#fff}.nav-theme-white .nav.nav-tabs .nav-item .nav-link{color:rgba(0,0,0,.4)}.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active{color:#62a8ea}.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active:after{background:#62a8ea!important}.main-menu .navbar-header{padding:.35rem 1rem 0}.main-menu .navbar-header .navbar-brand{margin-top:1.1rem}.main-menu .navbar-header .navbar-brand img{display:inline-block;max-width:45px;max-height:40px;margin-top:-1px}.main-menu .navbar-header .logo-mini{display:none;font-size:1.8rem;color:#4799e6}.main-menu .navbar-header .logo-lg{color:#4799e6;letter-spacing:.01rem;font-size:1.45rem;-webkit-animation:fadein .3s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards;animation:fadein .3s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards}.main-menu .navbar-header .nav-item{width:100%;text-align:center}.main-menu .navbar-header .navbar-brand{display:inline-block;margin:10px 0}.main-menu [class*=sidebar-dark-] .navbar-header .logo-lg,.main-menu [class*=sidebar-dark-] .navbar-header .logo-mini{color:#f7f7f7}.main-menu.menu-light .navigation>li.active>a{box-shadow:0 0 4px 1px rgba(98,168,234,.7)}.main-menu.menu-shadow{box-shadow:0 0 5px 0 rgba(0,0,0,.05)}body.sidebar-collapse .main-sidebar:not(:hover) .navbar-header{padding:.35rem 15px}body.sidebar-collapse .main-sidebar:not(:hover) .navbar-header .logo-lg{display:none}body.sidebar-collapse .main-sidebar:not(:hover) .navbar-header .logo-mini{display:inline-block}.main-sidebar .nav-sidebar .nav-item>.nav-link{font-size:1.04rem;border-radius:.1rem}.nav-pills .nav-link:not(.active):hover{color:#414750}[class*=sidebar-dark-] .navbar-header{padding:0 1rem;height:61px;background:#262d37}[class*=sidebar-dark-] .navbar-header .navbar-brand{margin:8px 0}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active:hover{color:#4c9ce7;background:none;box-shadow:0 0}.nav-treeview>.nav-item>.nav-link p i{margin-top:-5px}.sidebar-light-primary .nav-item>.nav-link.active{background:none;color:#4c9ce7!important;font-weight:700;box-shadow:0 0}.nav-sidebar>.nav-item>.nav-treeview .nav-link p{font-size:14px}body.sidebar-separate .main-sidebar{top:6rem;left:1.5rem;text-align:center;background-color:#fff}body.sidebar-separate .navbar-header .logo-lg,body.sidebar-separate .navbar-header .logo-mini{color:#414750}body.sidebar-separate .navbar-header .navbar-brand{margin-top:1rem!important}body.sidebar-separate .header-navbar.fixed-top,body.sidebar-separate .sidebar-collapse .header-navbar.fixed-top{left:0}@media (min-width:768px){body.sidebar-separate .content-wrapper{margin-left:280px}}body.sidebar-separate .main-sidebar .nav-sidebar .nav-item>.nav-link{text-align:left}body.sidebar-separate.dark-mode [class*=sidebar-dark-] .navbar-header{background:unset!important;height:auto;padding:.35rem 1rem 0}.main-sidebar.sidebar-primary{background-color:#62a8ea!important}.main-sidebar.sidebar-primary .nav-pills .nav-link:not(.active):hover,.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link,.main-sidebar.sidebar-primary .navbar-header .logo-lg,.main-sidebar.sidebar-primary .navbar-header .logo-mini,.main-sidebar.sidebar-primary .sidebar a{color:#fff}.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link.active,.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link:hover,.main-sidebar.sidebar-primary .nav.nav-pills .nav-item .nav-link.active{font-weight:700;border-bottom:1px solid #fff}.main-sidebar.sidebar-primary .nav-item>.nav-link i{margin-right:.71rem;font-size:1.2rem}.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link i{margin-right:.65rem;margin-left:3px}.horizontal-menu .header-navbar.navbar-shadow{box-shadow:none;border-bottom:1px solid #ebeff2}.horizontal-menu .content-wrapper,.horizontal-menu .main-footer,.horizontal-menu .main-header{margin-left:0!important}.horizontal-menu .header-navbar{position:-webkit-sticky;position:sticky;top:0}.horizontal-menu .header-navbar.navbar-horizontal{top:60px;position:fixed}.horizontal-menu .main-horizontal-sidebar{top:60px;left:0;position:fixed;width:100%;height:inherit;min-height:auto;bottom:inherit;box-shadow:none}.horizontal-menu .main-horizontal-sidebar>div{box-shadow:0 2px 4px 0 rgba(0,0,0,.05);background:#fff}.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item.menu-open>.nav-link,.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item:hover>.nav-link,.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:focus,.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item i{color:#414750}.horizontal-menu .nav-sidebar>.nav-item{padding-bottom:.6rem}.horizontal-menu .nav-sidebar>.nav-item .nav-link{color:#414750;font-size:1rem;padding:.45rem .7rem;transition:all .35s ease!important}.horizontal-menu .nav-sidebar>.nav-item .nav-link.dropdown-toggle:after{margin-top:0!important}.horizontal-menu .nav-sidebar>.nav-item .nav-link.active,.horizontal-menu .nav-sidebar>.nav-item .nav-link.active i{color:#62a8ea!important;font-weight:600}.horizontal-menu .dropdown-menu .nav-item:hover>.nav-link{padding-left:1rem}.horizontal-menu .nav.nav-pills{margin-bottom:0}.horizontal-menu .nav.dropdown-menu{display:none;margin-top:-.2rem;min-width:200px}.horizontal-menu .open>.nav.dropdown-menu{display:block;-webkit-animation:fadein .8s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards;animation:fadein .8s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards}.horizontal-menu [class*=sidebar-light-]{background-color:transparent}.horizontal-menu [class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-treeview{background:#fff;border-radius:.4rem}.horizontal-menu .nav-sidebar>.nav-item>.nav-link i{margin-right:.35rem!important}.horizontal-menu .nav-pills .nav-link.active{background-color:transparent}.horizontal-menu .horizontal-navbar-brand{margin-top:-5px;display:none}.horizontal-menu .horizontal-navbar-brand .logo-lg{font-size:1.45rem}.horizontal-menu.navbar-fixed-top .content-wrapper{padding-top:75px}body.dark-mode.horizontal-menu .header-navbar.navbar-shadow{border-color:#303247}body.dark-mode.horizontal-menu [class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-treeview{background:#223;border-radius:.4rem}body.dark-mode.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item i{color:#a8a9bb}body.dark-mode.horizontal-menu .main-horizontal-sidebar>div,body.dark-mode.horizontal-menu [class*=sidebar-dark-],body.dark-mode.horizontal-menu [class*=sidebar-light-]{background-color:#223}body.dark-mode.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link.active{background-color:transparent}body.dark-mode.horizontal-menu a.nav-link.active p{color:#62a8ea!important}body.dark-mode.horizontal-menu [class*=sidebar-light-] .nav-sidebar>.nav-item:hover>.nav-link:not(.active){color:#fff}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm,.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal}}.alert{font-weight:500;border:none;padding:.85rem 1.2rem;border-radius:.25rem}.alert h4{color:inherit}.alert .close:focus{outline:0}.alert p{font-weight:500;padding:2px 0;margin-bottom:0}.alert p,.alert span{vertical-align:middle}.alert .alert-heading{font-weight:700;font-size:.9rem;padding:0 0 8px}.alert.alert-dark .alert-heading{box-shadow:0 6px 15px -7px rgba(34,41,47,.4)}.alert-danger{background-color:#f5e0e8;color:#ef5228;box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}.alert-success{background:rgba(33,185,120,.2);color:#1fb072;box-shadow:0 2px 4px 0 rgba(0,0,0,.12)}.alert-info{background:rgba(66,119,207,.2);color:#4277cf}.alert-info,.alert-primary{box-shadow:0 2px 4px 0 rgba(0,0,0,.17)}.alert-primary{background:rgba(98,168,234,.2);color:#4c9ce7}.alert-warning{background-color:#f6f6eb;color:#d6922f;box-shadow:0 2px 4px 0 rgba(0,0,0,.09)}.callout{border-radius:.1rem;border:0;border-left:3.5px solid #9da7b7;background-color:#fff;margin-bottom:1rem;box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.callout.callout-primary{border-left:3.5px solid #6badeb}.callout.callout-light{background-color:#f7f7f9;box-shadow:none}code{box-shadow:0 1px 1px rgba(0,0,0,.125);padding:3px 5px;background:#f7f7f9;color:#3e94e5}code,pre{font-family:Montserrat,Nunito,sans-serif}pre{padding:7px;white-space:pre-wrap;margin-bottom:0;word-break:break-all}a.disabled{opacity:.65}.img,[data-action=preview-img]{cursor:pointer}.avatar{max-width:120px;border:2px solid #ddd}.popover{font-family:Nunito,Montserrat,system-ui,BlinkMacSystemFont,-apple-system,sans-serif;border:0;box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05);max-width:320px;z-index:10}.popover .popover-header{color:#fff;border:none;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{border-right-color:#eee}.popover.bs-popover-bottom .arrow:after{border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{border-bottom-color:#eee}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{border-top-color:#eee}.bootstrap-datetimepicker-widget table td i,.bootstrap-datetimepicker-widget table td span{height:0!important;line-height:0!important}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#f7f7f9!important;color:#4c9ce7!important;font-weight:700}.bootstrap-datetimepicker-widget table td{width:0!important}.bootstrap-datetimepicker-widget table td .btn{padding:.5rem!important}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{padding:.5em .1em!important}.modal-content{border:0;border-radius:0}.iconpicker-popover.popover .popover-title{background:#fff!important}.iconpicker-popover.popover.bottom>.arrow,.iconpicker-popover.popover.bottomLeft>.arrow,.iconpicker-popover.popover.bottomRight>.arrow{border-bottom-color:#dfdfdf!important}body.dark-mode::-webkit-scrollbar{width:12px;height:12px}body.dark-mode::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode{background-color:#2c2c43;color:#a8a9bb}body.dark-mode .body-bg,body.dark-mode .content-wrapper,body.dark-mode .main-footer{background:#2c2c43}body.dark-mode .bg-white{background:#2c2c43!important}body.dark-mode a{color:#66aaeb}body.dark-mode a:hover{color:#509ee8}body.dark-mode .grid-column-header a{color:#7d7f99}body.dark-mode .grid-column-header a.active,body.dark-mode .grid-column-header a:hover{color:#66aaeb}body.dark-mode h1,body.dark-mode h2,body.dark-mode h3,body.dark-mode h4,body.dark-mode h5,body.dark-mode h6{color:#cacbd6}body.dark-mode label,body.dark-mode p,body.dark-mode small{color:#a8a9bb}body.dark-mode .label{color:#f9f9f9}body.dark-mode .dcat-loading:not(.layui-layer-shade){background-color:inherit!important}body.dark-mode .btn.btn-default,body.dark-mode .btn.btn-light,body.dark-mode .btn.btn-white{color:#a8a9bb;background-color:#223;border-color:#223}body.dark-mode .btn.btn-default:hover,body.dark-mode .btn.btn-light:hover,body.dark-mode .btn.btn-white:focus,body.dark-mode .btn.btn-white:hover{color:#aeafbf!important}body.dark-mode .bg-light,body.dark-mode .btn.btn-light{color:#a8a9bb!important;background-color:#2c2c43!important;border-color:#2c2c43!important}body.dark-mode .bg-default{background-color:#223!important;color:#a8a9bb!important}body.dark-mode .btn-light:focus,body.dark-mode .btn-light:hover{color:#abacbe!important}body.dark-mode .btn.btn-custom:not(.btn-outline),body.dark-mode .btn.btn-danger:not(.btn-outline),body.dark-mode .btn.btn-info:not(.btn-outline),body.dark-mode .btn.btn-primary:not(.btn-outline),body.dark-mode .btn.btn-success:not(.btn-outline),body.dark-mode .btn.btn-warning:not(.btn-outline){color:#ebebeb}body.dark-mode hr{border-color:#303247}body.dark-mode pre{background-color:#223;border:0;color:#a8a9bb}body.dark-mode pre code{background-color:inherit}body.dark-mode code,body.dark-mode pre code .operator,body.dark-mode pre code .url{background-color:#2c2c43}body.dark-mode code{color:#b8c2cc!important}body.dark-mode kbd{background-color:#2c2c43}body.dark-mode .text-dark{color:#b8c2cc!important}body.dark-mode .header-navbar{background-color:#223}body.dark-mode .header-navbar .navbar-container .nav .nav-item .nav-link{color:#a8a9bb;background-color:transparent}body.dark-mode .header-navbar .navbar-container .nav .nav-item .nav-link i{color:#a8a9bb}body.dark-mode .header-navbar.navbar-static-top{background-color:transparent}body.dark-mode .header-navbar[class*=bg-] .navbar-nav .nav-item .nav-link{background-color:inherit}body.dark-mode .main-menu .navbar-header .logo-lg{font-weight:300}body.dark-mode .dropdown-toggle:hover:after,body.dark-mode .dropdown-toggle:hover i{color:#fff}body.dark-mode .dropdown .dropdown-menu{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)}body.dark-mode .dropdown-menu{background-color:#223}body.dark-mode .dropdown-menu:before{background:#223}body.dark-mode .dropdown-menu .dropdown-item:focus,body.dark-mode .dropdown-menu .dropdown-item:hover{background:#1e1e2d}body.dark-mode .dropdown-menu .dropdown-item{color:#a8a9bb}body.dark-mode .dropdown-menu .form-control{background-color:#223}body.dark-mode .dropdown-menu .dropdown-divider{border-color:#303247}body.dark-mode .dropdown-item a,body.dark-mode .dropdown-menu label{color:#a8a9bb}body.dark-mode .modal .modal-header,body.dark-mode .modal .modal-header[class*=bg-]{border-color:#303247;background-color:#242436}body.dark-mode .modal .modal-header .close span,body.dark-mode .modal .modal-header[class*=bg-] .close span{color:hsla(0,0%,100%,.5)}body.dark-mode .modal .modal-body,body.dark-mode .modal .modal-content,body.dark-mode .modal .modal-footer{background-color:#28283c}body.dark-mode .modal-backdrop{background-color:rgba(34,41,47,.5)}body.dark-mode .pagination:not([class*=pagination-]) .page-item.active{background-color:#2c2c43}body.dark-mode .pagination:not([class*=pagination-]) .page-item.active .page-link:hover{color:#fff}body.dark-mode .pagination:not([class*=pagination-]) .page-item .page-link{background-color:#2c2c43;color:#a8a9bb}body.dark-mode .pagination:not([class*=pagination-]) .page-item.next-item .page-link:hover,body.dark-mode .pagination:not([class*=pagination-]) .page-item.prev-item .page-link:hover{color:#fff}body.dark-mode .pagination[class*=pagination-] .page-item:not(.active):not(:hover) .page-link{background-color:#1e1e2d;color:#a8a9bb}body.dark-mode .pagination[class*=pagination-] .page-item:not(.active) .page-link:hover{background-color:#2c2c43}body.dark-mode .pagination[class*=pagination-] .page-item.active{background-color:#223}body.dark-mode .nav .nav-item .nav-link{color:#a8a9bb}body.dark-mode .popover[x-placement=top] .arrow:after{border-top-color:#223}body.dark-mode .popover[x-placement=bottom] .arrow:after{border-bottom-color:#223}body.dark-mode .popover[x-placement=left] .arrow:after{border-left-color:#223}body.dark-mode .popover[x-placement=right] .arrow:after{border-right-color:#223}body.dark-mode .popover .popover-body{background-color:#223;color:#a8a9bb}body.dark-mode .nav.nav-tabs{border-color:#444865}body.dark-mode .nav-theme-primary .nav.nav-tabs,body.dark-mode .nav-theme-white .nav.nav-tabs{background-color:#223}body.dark-mode .nav-theme-primary .nav.nav-tabs .nav-item .nav-link:not(.active),body.dark-mode .nav-theme-white .nav.nav-tabs .nav-item .nav-link:not(.active){color:#9d9eb2}body.dark-mode .nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active,body.dark-mode .nav-theme-white .nav.nav-tabs .nav-item .nav-link.active{color:#62a8ea}body.dark-mode .nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active:after,body.dark-mode .nav-theme-white .nav.nav-tabs .nav-item .nav-link.active:after{background:linear-gradient(30deg,#62a8ea,rgba(98,168,234,.5))!important}body.dark-mode .table-responsive[data-pattern=priority-columns]::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .table-responsive[data-pattern=priority-columns]::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .table-responsive[data-pattern=priority-columns]::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .table-wrapper{margin-top:12px!important}body.dark-mode .table.default-table td,body.dark-mode .table.default-table th{border-color:#303247!important}body.dark-mode .table.default-table th,body.dark-mode table.table-bordered.dataTable.complex-headers th{background:#26263a}body.dark-mode .table.default-table td,body.dark-mode table.table-bordered.dataTable.complex-headers td{background:#2a2a40}body.dark-mode .table{background-color:#223;padding:0 1rem}body.dark-mode .table td,body.dark-mode .table th{border-color:#303247}body.dark-mode .table .thead tr:not([class*=table-]) td,body.dark-mode .table .thead tr:not([class*=table-]) th,body.dark-mode .table tbody tr:not([class*=table-]) td,body.dark-mode .table tbody tr:not([class*=table-]) th{border:0;color:#a8a9bb}body.dark-mode .table .thead tr:not([class*=table-]) td code,body.dark-mode .table .thead tr:not([class*=table-]) th code,body.dark-mode .table tbody tr:not([class*=table-]) td code,body.dark-mode .table tbody tr:not([class*=table-]) th code{background-color:#223}body.dark-mode .table thead tr th{border:0;background-color:#223;color:#a8a9bb}body.dark-mode .table tbody tr{background:#2c2c43!important}body.dark-mode .table tbody tr[class*=table-] td,body.dark-mode .table tbody tr[class*=table-] th{background-color:unset;color:#22292f;border-color:#303247}body.dark-mode .table tbody tr.table-dark td,body.dark-mode .table tbody tr.table-dark th{color:#fff}body.dark-mode .table tbody tr.table-active td,body.dark-mode .table tbody tr.table-active th{color:#a8a9bb}body.dark-mode .table tbody tr th{background-color:#2c2c43}body.dark-mode .table tbody tr td{background-color:#2c2c43;color:#a8a9bb}body.dark-mode .table.table-bordered,body.dark-mode .table.table-bordered tbody tr td,body.dark-mode .table.table-bordered tbody tr th,body.dark-mode .table.table-bordered thead tr td,body.dark-mode .table.table-bordered thead tr th{border:1px solid #303247}body.dark-mode .table.table-hover tbody tr:hover{background-color:#223}body.dark-mode .table.table-hover tbody tr td,body.dark-mode .table.table-hover tbody tr th{background-color:unset}body.dark-mode .table.table-striped tbody tr:nth-of-type(odd){background-color:#223}body.dark-mode .table.table-striped tbody tr td,body.dark-mode .table.table-striped tbody tr th{background-color:unset}body.dark-mode .table.table-bordered{padding:0}body.dark-mode .box,body.dark-mode .card{background:#223}body.dark-mode .box.box-solid.box-default{background-color:#2c2c43}body.dark-mode .box-header.with-border,body.dark-mode .box.box-solid.box-default,body.dark-mode .card.dcat-box .card-header,body.dark-mode .dd-handle,body.dark-mode .with-border{border-bottom:1px solid #303247;border-color:#303247!important}body.dark-mode .box .box-footer,body.dark-mode .card .box-footer{border-color:#303247}body.dark-mode .dd-handle{background:#2a2a3f;color:#a8a9bb;margin-bottom:2px}body.dark-mode .dd-item>button:before{color:#a8a9bb}body.dark-mode .input-group-addon,body.dark-mode .input-group-append,body.dark-mode .input-group-prepend,body.dark-mode .input-group-text{background-color:#2c2c43;border-color:#303247;color:#a8a9bb!important}body.dark-mode input::-webkit-input-placeholder{color:#9a9bb0!important}body.dark-mode input::-moz-placeholder{color:#9a9bb0!important}body.dark-mode input:-ms-input-placeholder{color:#9a9bb0!important}body.dark-mode .help-block{color:#a4a5b8!important}body.dark-mode .has-error .checkbox,body.dark-mode .has-error .checkbox-inline,body.dark-mode .has-error.checkbox label,body.dark-mode .has-error .control-label,body.dark-mode .has-error .form-control-position i,body.dark-mode .has-error .form-control:focus~.form-control-position i,body.dark-mode .has-error .help-block,body.dark-mode .has-error .radio,body.dark-mode .has-error .radio-inline,body.dark-mode .has-error.radio label{color:#bd4147!important}body.dark-mode .select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .form-control,body.dark-mode .select2-container--default .select2-selection--multiple,body.dark-mode .select2-container--default .select2-selection--single{background:#2c2c43;color:#a8a9bb!important;border-color:#303247!important}body.dark-mode .select2-container--default .select2-search--inline .select2-search__field,body.dark-mode .select2-container--default .select2-selection--single .select2-selection__rendered{color:#a8a9bb!important}body.dark-mode .select2-container--default .select2-search--dropdown .select2-search__field{background:#2c2c43!important;color:#a8a9bb!important}body.dark-mode .select2-container--default .select2-search--dropdown .select2-search__field,body.dark-mode .select2-container--default .select2-selection--multiple{border-color:#303247!important}body.dark-mode .select2-container--default .select2-results>.select2-results__options,body.dark-mode .select2-dropdown{background:#223!important}body.dark-mode .select2-container--default .select2-results__option--highlighted[aria-selected],body.dark-mode .select2-container--default .select2-results__option[aria-selected=true]{background:#1e1e2d!important;color:#a8a9bb!important}body.dark-mode .table-filter .form-control{background:#223;color:#a8a9bb}body.dark-mode .form-divider{border-color:#303247}body.dark-mode .form-divider span{background-color:#223}body.dark-mode .form-control:disabled,body.dark-mode .form-control[readonly],body.dark-mode .select2-container--default.select2-container--disabled .select2-selection--multiple,body.dark-mode .select2-container--default.select2-container--disabled .select2-selection--single{background-color:#28283d!important}body.dark-mode .layui-layer-page .layui-layer-content::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .layui-layer-page .layui-layer-content::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .layui-layer-page .layui-layer-content::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .layui-layer{background-color:#242436!important}body.dark-mode .layui-layer-page .layui-layer-btn,body.dark-mode .layui-layer-page .layui-layer-content{background-color:#28283c!important}body.dark-mode .layui-layer-title{background-color:#242436!important;border-bottom:1px solid #303247!important;color:#a8a9bb!important}body.dark-mode .layui-layer-btn1{border-color:#223!important;background:#223!important}body.dark-mode .layui-layer-setwin .layui-layer-close1:before,body.dark-mode .layui-layer-setwin .layui-layer-max:before,body.dark-mode .layui-layer-setwin .layui-layer-min cite:before{color:#a8a9bb!important}body.dark-mode .web-uploader .placeholder{border-width:2px;border-color:#9495ab!important}body.dark-mode .web-uploader .filelist li{background:#223!important}body.dark-mode .web-uploader .queueList{border-color:#303247!important}body.dark-mode .web-uploader .filelist li p.title,body.dark-mode .web-uploader .statusBar .info{color:#a8a9bb!important}body.dark-mode .slider-panel{background-color:#242436}body.dark-mode .right-side-filter-container .header{border-color:#303247;background-color:#242436}body.dark-mode .swal2-popup{background:#223}body.dark-mode .swal2-popup h2{color:#a8a9bb}body.dark-mode .swal2-content{color:#a4a5b8}body.dark-mode .quick-create td{background-color:#28283c!important;color:#9a9bb0}body.dark-mode .iconpicker .iconpicker-items::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .iconpicker .iconpicker-items::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .iconpicker .iconpicker-items::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .iconpicker-popover.popover,body.dark-mode .iconpicker-popover.popover .popover-title,body.dark-mode .iconpicker .iconpicker-items{background:#223!important;border-color:#303247!important}body.dark-mode .iconpicker-popover.popover.bottom>.arrow:after,body.dark-mode .iconpicker-popover.popover.bottomLeft>.arrow:after,body.dark-mode .iconpicker-popover.popover.bottomRight>.arrow:after,body.dark-mode .iconpicker-popover.popover .popover-title{border-color:#223}body.dark-mode .alert.alert-danger h3,body.dark-mode .alert.alert-danger h4,body.dark-mode .alert.alert-danger h5{color:#ea5455}body.dark-mode .alert.alert-success h3,body.dark-mode .alert.alert-success h4,body.dark-mode .alert.alert-success h5{color:#21b978}body.dark-mode .alert.alert-info h3,body.dark-mode .alert.alert-info h4,body.dark-mode .alert.alert-info h5{color:#4277cf}body.dark-mode .alert.alert-primary h3,body.dark-mode .alert.alert-primary h4,body.dark-mode .alert.alert-primary h5{color:#4c9ce7}body.dark-mode .alert.alert-warning h3,body.dark-mode .alert.alert-warning h4,body.dark-mode .alert.alert-warning h5{color:#d9993c}body.dark-mode .callout{background:#26263a;border-color:#8e9aac}body.dark-mode .callout h3,body.dark-mode .callout h4,body.dark-mode .callout h5{color:#b6b7c6}body.dark-mode .apexcharts-legend-series .apexcharts-legend-text{color:#a8a9bb!important}body.dark-mode .apexcharts-radialbar-track path{stroke:#2c2c43}body.dark-mode .apexcharts-inner polygon{stroke:#223!important;fill:#2c2c43!important}body.dark-mode .apexcharts-pie-series path{stroke:#2c2c43}body.dark-mode .apexcharts-menu{background-color:#2c2c43;border:0}body.dark-mode .apexcharts-toolbar .apexcharts-menu-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-reset-zoom-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-zoom-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-zoom-in-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-zoom-out-icon:hover svg{fill:#a8a9bb}body.dark-mode .login-page{background-color:#2c2c43!important}body.dark-mode .login-card-body,body.dark-mode .register-card-body{background-color:#223;color:#a8a9bb}body.dark-mode .grid-selector .wrap{background-color:#223}body.dark-mode .grid-selector .select-label{color:#9a9bb0}body.dark-mode .grid-selector ul>li a{color:#a8a9bb}body.dark-mode .grid-selector .select-options a.active{color:#62a8ea}body.dark-mode .switchery{background-color:#b3b4c4!important;border-color:#b3b4c4!important;box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)}body.dark-mode .switchery>small{background-color:#c5c5d1!important}body.dark-mode .dropdown-menu li.checkbox-row:hover{background-color:#1e1e2d!important}body.dark-mode .dcat-step .dcat-step-title{color:#a8a9bb}body.dark-mode .dcat-step .active>.dcat-step-item-container>.dcat-step-content>.dcat-step-title,body.dark-mode .dcat-step .done>.dcat-step-item-container>.dcat-step-content>.dcat-step-title{color:#bfc0cd}body.dark-mode .dcat-step .dcat-step-icons{border-color:#b3b4c4}body.dark-mode .dcat-step .dcat-step-icons>.dcat-step-icon{color:#b3b4c4}body.dark-mode .dcat-step .dcat-step-title:after{background-color:#a8a9bb}body.dark-mode .dcat-step .active>.dcat-step-item-container>.dcat-step-content>.dcat-step-title:after{background-color:#b3b4c4}body.dark-mode .dcat-step .done .dcat-step-icons{background-color:transparent;border-color:#62a8ea}body.dark-mode .dcat-step .done .dcat-step-icons>.dcat-step-icon{color:#62a8ea}body.dark-mode .dcat-done-step .st-title{color:#cacbd6}body.dark-mode .dcat-done-step .st-desc{color:#a8a9bb}body.dark-mode .table-main::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .table-main::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .table-main::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .table-fixed-left .table{box-shadow:6px 0 5px -5px #000}body.dark-mode .table-fixed-right .table{box-shadow:-5px 0 5px -5px #000}body.dark-mode [class*=sidebar-dark-]{background-image:none;background-color:#223!important}body.dark-mode [class*=sidebar-dark-] .navbar-header{background:#1e1e2d}body.dark-mode [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-treeview{background:transparent}body.dark-mode [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link.active,body.dark-mode [class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active,body.dark-mode [class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:focus,body.dark-mode [class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:hover{background:#1e1e2d}body.dark-mode [class*=sidebar-dark-] .nav-treeview.nav .nav-item .nav-link.active{padding:10px 10px 10px 25px!important}body.dark-mode .main-menu .navbar-header .navbar-brand{margin-top:.5rem}body.dark-mode:not(.sidebar-separate) .main-sidebar .sidebar{margin-top:1rem}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/css/dcat-app-blue.css",
    "content": "#nprogress{pointer-events:none}#nprogress .bar{background:rgba(109,139,230,.8);position:fixed;z-index:999999;top:0;left:0;width:100%;height:2.5px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #6d8be6,0 0 5px #6d8be6;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:75px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#6d8be6 transparent transparent #6d8be6;border-style:solid;border-width:2px;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.swal2-title{font-weight:400!important}.swal2-actions .btn{padding:.5rem 1.5rem!important}.swal2-container{z-index:89891015!important}html{font-size:14px;height:100%;letter-spacing:.01rem}html body{background-color:#eff1f7;color:#414750}.body-bg,.content-wrapper{background:#eff1f7}body::-webkit-scrollbar{width:10px;height:10px}body::-webkit-scrollbar-track{background-color:#eee}body::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.table-main::-webkit-scrollbar{width:10px;height:10px}.table-main::-webkit-scrollbar-track{background-color:#eee}.table-main::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.table-responsive::-webkit-scrollbar{width:10px;height:10px}.table-responsive::-webkit-scrollbar-track{background-color:#eee}.table-responsive::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar{width:10px;height:10px}.select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-track{background-color:#eee}.select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.layui-layer-page .layui-layer-content::-webkit-scrollbar{width:10px;height:10px}.layui-layer-page .layui-layer-content::-webkit-scrollbar-track{background-color:#eee}.layui-layer-page .layui-layer-content::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.iconpicker .iconpicker-items::-webkit-scrollbar{width:10px;height:10px}.iconpicker .iconpicker-items::-webkit-scrollbar-track{background-color:#eee}.iconpicker .iconpicker-items::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.breadcrumb,.h1,.h2,.h3,.h4,.h5,.h6,.header-navbar,.navigation,body,h1,h2,h3,h4,h5,h6{font-family:Nunito,Montserrat,system-ui,BlinkMacSystemFont,-apple-system,sans-serif}li{list-style-type:none}.text-primary-darker{color:#577ae2!important}.text-danger-darker{color:#bd4147!important}.text-blue-darker{color:#236bb0!important}.text-custom{color:#59a9f8!important}.text-pink{color:#ff8acc!important}.text-yellow{color:#edc30e!important}.text-light{color:#f7f7f9!important}.text-white50{color:hsla(0,0%,100%,.5)!important}.text-orange{color:#dda451!important}.text-orange-1{color:#ffcc80!important}.text-orange-2{color:#f99037!important}.text-blue-1{color:#007ee5!important}.text-blue-2{color:#4199de!important}.text-cyan{color:#7367f0!important}.text-tear{color:#01847f!important}.text-tear-1{color:#00b5b5!important}.text-gray{color:#b9c3cd!important}.text-20{color:#f6fbff!important}.text-30{color:#f4f7fa!important}.text-35{color:#e7eef7!important}.text-40{color:#ebf0f3!important}.text-50{color:#d3dde5!important}.text-60{color:#bacad6!important}.text-70{color:#b3b9bf!important}.text-80{color:#7c858e!important}.text-85{color:#5c7089!important}.bg-custom{background:#59a9f8!important}.bg-pink{background:#ff8acc!important}.bg-yellow{background:#edc30e!important}.bg-light{background:#f7f7f9!important}.bg-white50{background:hsla(0,0%,100%,.5)!important}.bg-orange{background:#dda451!important}.bg-orange-1{background:#ffcc80!important}.bg-orange-2{background:#f99037!important}.bg-blue-1{background:#007ee5!important}.bg-blue-2{background:#4199de!important}.bg-cyan{background:#7367f0!important}.bg-tear{background:#01847f!important}.bg-tear-1{background:#00b5b5!important}.bg-default{background:#d2d6de!important}.bg-gray{background:#b9c3cd!important}.bg-20{background:#f6fbff!important}.bg-30{background:#f4f7fa!important}.bg-35{background:#e7eef7!important}.bg-40{background:#ebf0f3!important}.bg-50{background:#d3dde5!important}.bg-60{background:#bacad6!important}.bg-70{background:#b3b9bf!important}.bg-80{background:#7c858e!important}.bg-primary-gradient{background-image:linear-gradient(60deg,#6d8be6,0,#839cea 37%,#bbc9f3 65%,#cdd7f6)}.shadow-0{box-shadow:none!important}.shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.05)!important}.shadow-100{box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05)!important}.shadow-200{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important}.font-sm-1{font-size:.7rem!important}.font-sm-2{font-size:.8rem!important}.font-sm-3{font-size:.9rem!important}.font-md-1{font-size:1.1rem!important}.font-md-2{font-size:1.2rem!important}.font-md-3{font-size:1.3rem!important}.font-md-4{font-size:1.4rem!important}.font-md-5{font-size:1.5rem!important}.font-lg-1{font-size:2rem!important}.font-lg-2{font-size:3rem!important}.font-lg-3{font-size:4rem!important}.font-lg-4{font-size:5rem!important}.font-lg-5{font-size:6rem!important}.font-w-300{font-weight:300}.font-w-400{font-weight:400}.font-w-500{font-weight:500}.font-w-600{font-weight:600}.font-w-700{font-weight:700}.mt-1-5{margin-top:1.5rem!important}.mb-1-5{margin-bottom:1.5rem!important}.ml-1-5{margin-left:1.5rem!important}.mr-1-5{margin-right:1.5rem!important}.pt-1-5{padding-top:1.5rem!important}.pb-1-5{padding-bottom:1.5rem!important}.pl-1-5{padding-left:1.5rem!important}.pr-1-5{padding-right:1.5rem!important}.text-italic{font-style:italic}.text-highlight{padding:4px 6px}.pin,.pin-y{top:0;bottom:0}.pin{right:0;left:0}.icon-bg-circle{color:#fff;padding:.5rem;border-radius:50%}.icon-left,.icon-right{margin-right:.5rem}.icon-spin{display:inline-block;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}.hidden{display:none;visibility:hidden}.round{border-radius:1.5rem}.square{border-radius:0}.icon-line-height{line-height:1.5rem!important}.spinner{display:inline-block;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}button:focus{outline:none}.overflow-x-auto{overflow-x:auto!important}.overflow-y-auto{overflow-y:auto!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{line-height:1.3}.content .content-wrapper{padding:7rem 2.5rem 0}.navbar-fixed-top .content-wrapper{padding-top:6.4rem}.full-page .content .content-wrapper{padding:0;margin-left:0!important}dl,ol,ul{margin-bottom:0}.btn{padding:.54rem 1.2rem!important;height:34px;line-height:1.2;border-radius:.2rem;cursor:pointer;box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn.btn-trans{box-shadow:none}.btn-trans.btn-primary{background-color:#fff;border-color:#fff;color:#6d8be6}.btn-shadow.btn,.btn:focus,.btn:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn-shadow.btn:focus,.btn-shadow.btn:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)}.btn-group-sm>.btn,.btn-lg,.btn-sm{border-radius:.2rem}.btn-primary{color:#fff}.btn-sm,.btn-xs{padding:.54rem .9rem!important}a.btn,span.btn{line-height:1.4}div.btn{line-height:1.3}.btn-group-sm>div.btn,.btn-group-sm>span.btn,div.btn.btn-sm,span.btn.btn-sm{line-height:1.2}.btn-group-sm>a.btn,a.btn-sm{line-height:1.1}.btn-warning,.btn.btn-warning.active,.btn.btn-warning:focus,.btn.btn-warning:hover{color:#fff}.btn-group-sm>.btn,.btn-sm{font-size:12px;line-height:1.1;height:30px}.btn-default{background:#fff;border-color:#fff}.btn-default.active,.btn-default:focus,.btn-default:hover{background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05)}.btn-group{box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn-group .btn:not(.btn-white):hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05)}.btn-group .btn{box-shadow:none!important}.btn-group.btn-shadow{box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn-custom{color:#2a2e30;background-color:#59a9f8;border-color:#59a9f8;color:#fff}.btn-custom:hover{color:#fff;background-color:#48a0f7;border-color:#48a0f7}.btn-custom.focus,.btn-custom:focus{box-shadow:0 0 0 .2rem rgba(82,151,218,.5)}.btn-custom.disabled,.btn-custom:disabled{color:#2a2e30;background-color:#59a9f8;border-color:#59a9f8}.btn-custom:not(:disabled):not(.disabled).active,.btn-custom:not(:disabled):not(.disabled):active,.show>.btn-custom.dropdown-toggle{color:#fff;background-color:#419cf7;border-color:#419cf7}.btn-custom:not(:disabled):not(.disabled).active:focus,.btn-custom:not(:disabled):not(.disabled):active:focus,.show>.btn-custom.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,151,218,.5)}.btn-outline-custom,.btn-outline-custom:hover{color:#59a9f8;border-color:#59a9f8}.btn-outline-custom:hover{background-color:rgba(89,169,248,.1)}.btn-outline-custom.focus,.btn-outline-custom:focus{box-shadow:0 0 0 .2rem rgba(89,169,248,.5)}.btn-outline-custom.disabled,.btn-outline-custom:disabled{color:#59a9f8;background-color:transparent}.btn-outline-custom:not(:disabled):not(.disabled).active,.btn-outline-custom:not(:disabled):not(.disabled):active,.show>.btn-outline-custom.dropdown-toggle{color:#2a2e30;background-color:#59a9f8;border-color:#59a9f8}.btn-outline-custom:not(:disabled):not(.disabled).active:focus,.btn-outline-custom:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-custom.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(89,169,248,.5)}.btn-cyan{color:#fff;background-color:#7367f0;border-color:#7367f0}.btn-cyan:hover{color:#fff;background-color:#6457ee;border-color:#6457ee}.btn-cyan.focus,.btn-cyan:focus{box-shadow:0 0 0 .2rem rgba(136,126,242,.5)}.btn-cyan.disabled,.btn-cyan:disabled{color:#fff;background-color:#7367f0;border-color:#7367f0}.btn-cyan:not(:disabled):not(.disabled).active,.btn-cyan:not(:disabled):not(.disabled):active,.show>.btn-cyan.dropdown-toggle{color:#fff;background-color:#5e50ee;border-color:#5e50ee}.btn-cyan:not(:disabled):not(.disabled).active:focus,.btn-cyan:not(:disabled):not(.disabled):active:focus,.show>.btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(136,126,242,.5)}.btn-outline-cyan,.btn-outline-cyan:hover{color:#7367f0;border-color:#7367f0}.btn-outline-cyan:hover{background-color:rgba(115,103,240,.1)}.btn-outline-cyan.focus,.btn-outline-cyan:focus{box-shadow:0 0 0 .2rem rgba(115,103,240,.5)}.btn-outline-cyan.disabled,.btn-outline-cyan:disabled{color:#7367f0;background-color:transparent}.btn-outline-cyan:not(:disabled):not(.disabled).active,.btn-outline-cyan:not(:disabled):not(.disabled):active,.show>.btn-outline-cyan.dropdown-toggle{color:#fff;background-color:#7367f0;border-color:#7367f0}.btn-outline-cyan:not(:disabled):not(.disabled).active:focus,.btn-outline-cyan:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(115,103,240,.5)}.btn.btn-default,.btn.btn-white{color:#414750;box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065);background:#fff}.btn.btn-white.btn-primary,.btn.btn-white.btn-primary:focus,.btn.btn-white.btn-primary:hover{color:#fff!important}.btn-white.active,.btn-white:focus,.btn-white:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important}.btn-light{border-color:#dbe3e6!important;background-color:#fff!important;color:#444;box-shadow:none}.btn-light:focus,.btn-light:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important;color:#444!important}.btn-secondary{border-color:#e4eaee!important;background-color:#f4f4f4!important;color:#414750!important;box-shadow:none}.btn-secondary:focus,.btn-secondary:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important}.btn-flat-danger,.btn-flat-dark,.btn-flat-info,.btn-flat-primary,.btn-flat-success,.btn-flat-warning,.btn-no-shadow,.btn-outline-danger,.btn-outline-dark,.btn-outline-info,.btn-outline-primary,.btn-outline-success,.btn-outline-warning{box-shadow:none}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.5rem .7rem}.btn:not(.btn-sm) .spinner-grow,a:not(.btn) .spinner-grow{margin-bottom:.15rem}.btn-outline{background-color:transparent}.btn-primary.btn-outline{color:#6d8be6;border-color:#6d8be6}.btn-info.btn-outline{color:#4277cf;border-color:#4277cf}.btn-success.btn-outline{color:#21b978;border-color:#21b978}.btn-danger.btn-outline{color:#ea5455;border-color:#ea5455}.btn-warning.btn-outline{color:#dda451;border-color:#dda451}.btn-primary.btn-outline.disabled,.btn-primary.btn-outline:disabled{background:transparent}.btn-danger.btn-outline.active,.btn-danger.btn-outline:hover,.btn-info.btn-outline.active,.btn-info.btn-outline:hover,.btn-success.btn-outline.active,.btn-success.btn-outline:hover,.btn-warning.btn-outline.active,.btn-warning.btn-outline:hover{color:#fff}.btn-primary.btn-outline.active,.btn-primary.btn-outline:hover{background:rgba(109,139,230,.05);color:#6d8be6}.number-group .input-group-btn:first-child .btn{border-bottom-right-radius:0;border-top-right-radius:0;border-right:0}.number-group .input-group-btn:last-child .btn{border-bottom-left-radius:0;border-top-left-radius:0}.header-navbar.navbar-shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.header-navbar.floating-nav{margin:1.3rem 2.2rem 0}.navbar-container{height:60px}.navbar-light{background-color:#fff}.dark-mode-switcher{margin:0 5px 0 0;font-size:1.5rem;cursor:pointer}.breadcrumb{border-left:0}.content-header{padding:0 0 2px}.breadcrumbs-top{margin-bottom:1rem}.content-header h1{font-weight:400;font-size:24px;display:inline-block;font-family:Montserrat,Nunito,sans-serif}.content-header h1 small{font-size:15px;display:inline-block;padding-left:5px;color:#777}.custom-data-table-header .table-responsive .top{display:flex;justify-content:space-between;padding:0 1rem}.custom-data-table-header .table-responsive .top .action-btns{margin-top:1.5rem;display:flex}.custom-data-table-header .table-responsive .top .action-btns .actions-dropodown{box-shadow:0 2px 8px 0 rgba(0,0,0,.14);border-radius:.3rem;margin-right:.75rem}.custom-data-table-header .table-responsive .top .action-btns .actions-dropodown .dropdown-toggle{font-size:1.125rem;font-weight:500}.custom-data-table-header .table-responsive .top .action-btns .actions-dropodown .dropdown-toggle:after{left:0}.custom-data-table-header .table-responsive .top .action-btns .dt-buttons .btn{padding:.9rem .938rem}.table-responsive .table-filter{display:inline-block}.table-filter .form-control{padding:1.25rem 2.8rem!important;border-radius:5rem;border:0;background:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);font-size:.82rem}.table-filter label{position:relative}.table-filter label:after{content:\"\\E8BD\";font-family:feather;position:absolute;top:.45rem;font-size:1.1rem;left:1.1rem;font-weight:300;color:#b3b9bf}table.custom-data-table.data-table{border-spacing:0 .8rem;padding:0}table.custom-data-table tbody tr{background:#fff}table.data-table{border-collapse:separate!important}table.custom-data-table.data-table thead th{padding:.714rem .51rem;font-weight:600;border-bottom:0;border-top:0}table.custom-data-table.data-table thead th input:focus{outline:0}table.custom-data-table.data-table thead th:first-child{padding-left:.9rem}table.custom-data-table.data-table tbody tr{background-color:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);cursor:pointer;transition:all .3s ease;border-radius:.3rem}table.custom-data-table.data-table tbody tr:hover{background:#f8fafc}table.custom-data-table.data-table tbody tr td:first-child{padding-left:1rem;border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}table.custom-data-table.data-table tbody tr td:last-child{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}table.custom-data-table.data-table tbody tr.selected td{border-radius:0}table.custom-data-table.data-table tbody td{border:none;vertical-align:middle;height:60px;padding:.55rem;line-height:1.42857}table.custom-data-table.data-table tbody td:focus,table.custom-data-table.data-table tbody td input:focus{outline:0}table.custom-data-table.data-table tbody td .progress{margin-bottom:0;box-shadow:0 4px 8px 0 rgba(0,0,0,.12),0 2px 4px 0 rgba(0,0,0,.08)}.form-control{border-color:#dbe3e6;color:#414750}.form-control:not(textarea){padding:.5rem .7rem;font-size:.9rem}div.form-control,input.form-control{min-height:34px;border-radius:.25rem}.input-group-text{border-color:#dbe3e6}.form-control-sm{padding:.5rem 1.5rem}select.form-control:not([multiple=multiple]){background-image:none}.form-control-sm,.input-group-sm>.custom-select,.input-group-sm>.form-control{line-height:13px}.input-group-sm>div.form-control,.input-group-sm>input.form-control,div.form-control-sm,input.form-control-sm{max-height:30px;min-height:30px}.input-group .form-control{height:100%}.input-group-text{padding:.6rem .9rem;border-radius:.25rem}.help-block{display:block;margin-top:7px;margin-bottom:3px;color:#737373}.control-label{padding-top:10px;padding-right:5px;margin-bottom:0;font-size:1rem;text-transform:capitalize}.fields-group .row.form-group{margin-right:0;margin-left:0}@media (min-width:768px){.form-group .control-label{text-align:right}}.with-errors.help-block{margin-bottom:4px}.form-control:disabled,.form-control[readonly],.select2-container--default.select2-container--disabled .select2-selection--multiple,.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#f7f7f9!important;cursor:not-allowed!important}.has-error .checkbox,.has-error .checkbox-inline,.has-error.checkbox label,.has-error .control-label,.has-error .form-control-position i,.has-error .form-control:focus~.form-control-position i,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.radio label{color:#bd4147}.control-label.asterisk:before{content:\"* \";font-weight:700;color:#bd4147}.form-group.has-error .form-control{border-color:#bd4147}.input-group-prepend .input-group-text{margin-right:-1px;max-height:34px}.input-group-addon{width:1%;white-space:nowrap;vertical-align:middle;padding:6px 12px;font-size:14px;font-weight:400;line-height:1;text-align:center;background-color:#fff;border:1px solid #dbe3e6;min-width:30px}.input-group-sm>.input-group-addon{height:30px;padding:5px 10px;font-size:.7rem;line-height:1.5}.select2-container--default .select2-search--dropdown .select2-search__field,.select2-container--default .select2-selection--multiple,.select2-container--default .select2-selection--single{border-color:#dbe3e6!important;border-radius:.25rem!important}.select2-search--inline{display:inline-block}.select2-container--default .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-search--inline .select2-search__field:focus{border-color:#6d8be6!important}.select2-container--classic .select2-selection--multiple .select2-selection__rendered li .select2-search__field,.select2-container--default .select2-selection--multiple .select2-selection__rendered li .select2-search__field{margin-top:8px}.input-group .select2-container{width:50%!important;flex:1 1 auto}.select2-container .select2-selection--multiple{min-height:34px!important}.select2-container--classic .select2-selection--single,.select2-container--default .select2-selection--single{min-height:34px;padding:5px;border:1px solid rgba(0,0,0,.2)}.select2-container--default .select2-selection--single .select2-selection__arrow{height:32px!important}.select2-dropdown{border:1px solid rgba(0,0,0,.03)!important;box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#f1f1f1!important}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#ebf0f3!important;color:#414750!important}.select2-results__option{padding:6px 10px!important}.select2-container--default .select2-selection--multiple .select2-selection__choice{padding:2px 5px!important;border:0!important;font-size:90%;background-color:#6d8be6!important}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#fff!important;border-right:0!important}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:focus,.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{background-color:#6d8be6!important}.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .25rem!important}.select2-selection .default-text{display:inline-block;padding:.5rem .7rem 0}.select2-container--default .select2-selection--single .select2-selection__rendered{line-height:30px!important}.input-group-sm .select2-container--classic .select2-selection--single,.input-group-sm .select2-container--default .select2-selection--single{min-height:31px;padding:1px 2px;font-size:.7rem}.input-group-sm .select2-selection .default-text{padding:.3rem .5rem 0}.input-group-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .4rem!important}.input-group-sm .select2-container--default .select2-selection--multiple{min-height:30px!important;padding:0 2px;font-size:.7rem;line-height:14px}.input-group-sm .select2-container--default .select2-selection--single .select2-selection__arrow{top:-3px}.input-group-sm .select2-container--classic .select2-selection--multiple .select2-selection__rendered li .select2-search__field,.input-group-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered li .select2-search__field{margin-top:6px}.glyphicon-arrow-right:before{font-family:feather;content:\"\\E829\"}.glyphicon-arrow-left:before{font-family:feather;content:\"\\E828\"}.bootstrap-duallistbox-container .info{color:#414750!important}.has-icon-left .form-control-position{right:auto;left:inherit}.form-control-position{position:absolute;top:0;right:0;z-index:2;display:block;width:2.5rem;height:2.5rem;line-height:2.5rem;text-align:center}.has-icon-left .form-control{padding-right:2rem;padding-left:3rem}.form-divider{height:20px;border-bottom:1px solid #eee}.form-divider span{font-size:16px;background-color:#fff;padding:0 10px}.pagination .page-item .page-link{font-weight:600;font-size:.95rem;padding:.5rem .75rem}.pagination .page-item.disabled{opacity:.82}.table{color:#414750;margin-bottom:0}.table-middle td{vertical-align:middle}.table-text-center td,.table-text-center th{text-align:center}table.data-table thead tr{background:transparent}.table thead th{padding:.65rem;font-weight:600;text-transform:capitalize;font-size:.95rem!important;border-bottom:1px solid #f0f0f0}table.data-table tfoot td,table.data-table tfoot th,table.data-table thead td,table.data-table thead th{font-size:.9rem!important}table.data-table:not(.table-bordered) thead tr th{text-transform:capitalize}table.data-table{border:0}.table td{padding:.55rem;height:55px;line-height:1.42857;border-color:#f0f0f0}.table tr td:first-child,.table tr th:first-child{padding-left:2rem}.quick-search-clear{margin-left:-1.45rem;position:relative;color:#fff}.table-responsive{border:0!important;margin-bottom:0!important;overflow-x:inherit}.table-responsive[data-pattern=priority-columns]{overflow-y:auto!important}.custom-data-table-header .table-responsive{overflow:visible!important;padding-bottom:0!important}.sticky-table-header{z-index:45!important}table.table-bordered.data-table:not(.complex-headers) tbody th,table.table-bordered.data-table tbody td{border-bottom-width:1px}table.table-bordered.data-table td,table.table-bordered.data-table th:not(.complex-headers){border-left-width:1px}table.table-bordered.data-table td:last-child,table.table-bordered.data-table th:last-child{border-right-width:1px}table.data-table.complex-headers{border:1px solid #e4e4e4}table.data-table.complex-headers tfoot td,table.data-table.complex-headers tfoot th,table.data-table.complex-headers thead td,table.data-table.complex-headers thead th{border-bottom:1px solid #e4e4e4;border-right:1px solid #e4e4e4}.data-table.table-bordered:not(.complex-headers) thead th{border-right:1px solid #e2e8ec;border-bottom:1px solid #e2e8ec}.data-table.table-bordered:not(.complex-headers) tr:first-child th{border-top:1px solid #e2e8ec}.data-table.table-bordered:not(.complex-headers) thead tr th:first-child{border-left:1px solid #e2e8ec}table.table-bordered.data-table.complex-headers{border-spacing:0;margin-top:12px!important;box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}table.table-bordered.data-table.complex-headers thead th{vertical-align:middle;font-size:1rem!important}table.table-bordered.data-table.complex-headers tbody tr{box-shadow:none;border-radius:0}table.table-bordered.data-table.complex-headers tbody tr td{border-bottom:1px solid #eee;border-right:1px solid #eee}table.table-bordered.data-table.complex-headers tbody tr td:first-child{border-top-left-radius:0;border-bottom-left-radius:0}table.table-bordered.data-table.complex-headers tbody tr td:last-child{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}table.table-bordered.data-table.complex-headers tbody tr:last-child td{border-bottom:0}.table-hover tbody tr:hover{color:#414750;background-color:#f8fafc}.table.default-table tr{box-shadow:none!important}.table.default-table td{border-top:1px solid #f0f4f8!important;border-radius:0!important}.table.default-table thead th{border-bottom:2px solid #f0f4f8!important}.table.default-table.table-bordered td,.table.default-table.table-bordered th{border:1px solid #f0f4f8!important}.table-collapse .custom-data-table.data-table tbody tr td:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.table-collapse .custom-data-table.data-table tbody tr td:last-child{border-top-right-radius:0;border-bottom-right-radius:0}.table-collapse .custom-data-table.data-table tbody tr:first-child td:first-child{border-top-left-radius:.25rem}.table-collapse .custom-data-table.data-table tbody tr:first-child td:last-child{border-top-right-radius:.25rem}.table-collapse .custom-data-table.data-table tbody tr:last-child td:first-child{border-bottom-left-radius:.25rem}.table-collapse .custom-data-table.data-table tbody tr:last-child td:last-child{border-bottom-right-radius:.25rem}.table-collapse .table.custom-data-table{padding:3px 5px 5px}.table-collapse .table-fixed-left .table.custom-data-table{padding:3px 0 0 5px}.table-collapse .table-fixed-right .table.custom-data-table{padding:3px 5px 0 0}.table-collapse .table-fixed th{background:#ececf1}body:not(.dark-mode) .table-collapse{box-shadow:0 2px 4px 0 rgba(0,0,0,.05);background:#ececf1;margin-top:1rem}body:not(.dark-mode) .table-collapse .custom-data-table{border-spacing:0;margin-top:0!important;background-color:#ececf1}body:not(.dark-mode) .table-collapse table.custom-data-table thead th{height:38px;vertical-align:middle}body:not(.dark-mode) .table-collapse .custom-data-table tbody td{border-top:1px solid #eff3f8;height:60px}body:not(.dark-mode) .table-collapse .custom-data-table tbody tr:first-child td{border-top:0}body:not(.dark-mode) .table-collapse table.custom-data-table tbody tr{box-shadow:none}body:not(.dark-mode) .table-collapse .quick-create td{background:#f7f7f9!important;border-radius:0}body:not(.dark-mode) .table-collapse .table-wrap table.custom-data-table thead th{height:19px}body.dark-mode .table-collapse table{border-spacing:0 .24rem}body.dark-mode .table-collapse table.custom-data-table.data-table tbody td{height:56px}body.dark-mode .table-collapse .table.custom-data-table{padding:3px 10px 10px}body.dark-mode .table-collapse .table-fixed-left .table.custom-data-table{padding:3px 0 0 10px}body.dark-mode .table-collapse .table-fixed-right .table.custom-data-table{padding:3px 10px 0 0}.column-selector{margin:0 5px}.column-selector .dropdown-menu{z-index:100}.column-selector .selectors{padding:0 1rem;height:auto;max-height:500px;overflow-x:hidden}.column-selector .selectors::-webkit-scrollbar{width:10px;height:10px}.column-selector .selectors::-webkit-scrollbar-track{background-color:#eee}.column-selector .selectors::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.grid-column-header a{color:#a5acb3;font-size:1rem}.grid-column-header a.active,.grid-column-header a:hover{color:#577ae2}.grid-sort{display:inline-block;margin:-2px -4px 0 3px;height:15px}.grid-sort .up:before{font-family:feather;padding-right:.3rem;font-size:.7rem;content:\"\\E845\"}.grid-sort .down{margin:6px 0 0 -1.17rem}.grid-sort .down:after{font-family:feather;content:\"\\E842\";font-size:.7rem}.dcat-box.card{margin-bottom:0}.dcat-box.card .card-header{border-bottom:0;padding:1.3rem 1.5rem;margin-bottom:.5rem}.dcat-box.card .card-body{padding:1rem 0 0}.dcat-box.card .box-footer{border:0;padding:1rem 1.5rem 1.3rem}.table-responsive.table-scrollbar-x{overflow-x:auto}.table-responsive.table-scrollbar-x .table{width:-webkit-max-content;width:-moz-max-content;width:max-content;min-width:100%}.right-side-filter-container .header{border-bottom:1px solid #f4f4f4;width:100%;background:#fff;z-index:10;top:0;margin-left:-1rem}.quick-create td{padding-left:45px;background-color:#f3f3f3;vertical-align:middle;height:42px;color:#777;border-bottom:#eff3f8}.grid-modal .modal-body{padding:1.5rem}.simple-grid .filter-box{background:transparent;box-shadow:none!important;margin:.5rem 0 -1rem!important;padding:0!important}.simple-grid .filter-box .form-group{margin-bottom:1rem}.simple-grid .dcat-box.card .card-header{padding:.8rem 0}.simple-grid .dcat-box.card .box-footer{padding:1rem 1.5rem 0}body:not(.dark-mode) .simple-grid .card{box-shadow:none}body:not(.dark-mode) .simple-grid .table-collapse{box-shadow:none;background:transparent}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table{background:transparent}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table.data-table tbody td{height:48px}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table.data-table thead th{height:20px}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table{padding:5px 0 0;border-bottom:1px solid #eff3f8}body:not(.dark-mode) .simple-grid .table-collapse table.data-table thead tr:last-child th{border-bottom:2px solid #eff3f8}.vs-checkbox-con.checkbox-grid-column input:disabled+.vs-checkbox{cursor:not-allowed;opacity:.33}.dropdown-menu{z-index:20}.dropdown .dropdown-menu{box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05);border:0;min-width:10rem;transform:none}.dropdown .dropdown-menu .dropdown-item:hover{background-color:#f4f7fa;color:#414750}.dropdown .dropdown-menu:before{border-top:1px solid rgba(0,0,0,.07);border-left:1px solid rgba(0,0,0,.07)}.dropdown i{margin-right:0}.dropdown .dropdown-menu .dropdown-item,.dropleft .dropdown-menu .dropdown-item,.dropright .dropdown-menu .dropdown-item,.dropup .dropdown-menu .dropdown-item{padding:0;color:#414750}.dropdown-item a,.dropdown-menu label{color:#414750}.dropdown-item a{padding:.35rem 1.38rem;display:block}.vs-checkbox-con{margin:0}.vs-checkbox-con input{z-index:5}.vs-checkbox-con .vs-checkbox{width:17px;height:17px}.vs-checkbox-con input:checked~.vs-checkbox .vs-checkbox--check .vs-icon{font-size:.95rem;margin-top:-1px}.vs-radio-con input{z-index:10}.card{box-shadow:0 2px 4px 0 rgba(0,0,0,.05);margin-bottom:1.5rem;border-radius:.25rem}.card .card-header{padding:1.1rem 1.1rem 0;align-items:center;display:flex;justify-content:space-between}.card-header.with-border{border-bottom:1px solid #f4f4f4;padding:1.1rem}.card-box-title{font-size:1.1rem}.card-title{font-size:1.2rem}.card-footer{background:transparent;border-color:#f4f4f4!important}.card-body,.card-footer{padding:1.1rem}.card-body .card-footer{padding:.8rem;margin:-1.1rem}.dd{margin:0!important}.dd-item>button:before{font-family:feather;content:\"\\E844\"!important;margin-top:3px}.dd-item>button[data-action=collapse]:before{content:\"\\E842\"!important}.dd-handle{border:1px solid #eaeff0!important;border-radius:.2rem!important}.layui-layer{box-shadow:0 2px 6px 0 rgba(0,0,0,.2)!important}.layui-layer-title{padding:0 80px 0 20px;height:52px!important;line-height:52px!important;border-bottom:1px solid #f4f4f4!important;font-size:1.1rem!important;text-transform:capitalize;overflow:hidden;background-color:#fff!important;border-radius:.25rem .25rem 0 0!important}.layui-layer-setwin .layui-layer-min cite{background:transparent!important;position:static!important}.layui-layer-setwin .layui-layer-min cite:before{font-family:feather;content:\"\\E897\";font-size:1.1rem;color:#414750}.layui-layer-ico{background:transparent!important;color:#414750}.layui-layer-setwin .layui-layer-max:before{font-family:feather;content:\"\\E908\";font-size:1rem}.layui-layer-setwin .layui-layer-maxmin:before{content:\"\\E88D\"}.layui-layer-setwin .layui-layer-close1:before{font-family:feather;content:\"\\E8F6\";font-size:1.1rem}.layui-layer-setwin .layui-layer-close1{margin-left:7px!important}.layui-layer-setwin a{top:3px}.layui-layer-tips,.layui-layer-tips .layui-layer-content{font-size:13px!important;box-shadow:none!important}.layui-layer-btn a{height:30px!important;line-height:20px!important;padding:4px 15px!important;font-size:.85rem;box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05);border-color:#fff!important}.layui-layer-btn .layui-layer-btn0{border-color:#6d8be6!important;background-color:#6d8be6!important;color:#fff!important}.layui-layer-border{border:0!important}.slider-panel{padding:0;background-color:#fff;position:fixed;top:0;bottom:0;height:100vh;height:calc(var(--vh, 1vh)*100);transition:right .4s cubic-bezier(.05,.74,.2,.99);-webkit-backface-visibility:hidden;backface-visibility:hidden;border-left:1px solid rgba(0,0,0,.05);box-shadow:0 0 5px 0 rgba(0,0,0,.05);width:450px;right:-450px;z-index:998}.slider-panel.open{right:0}.slider-panel .slider-content{position:relative;height:100%;width:450px}.slider-panel .slider-close{position:absolute;right:30px;top:20px;padding:7px;width:auto;z-index:10;color:#626262}.slider-panel .slider-close i{font-size:1.35rem}.slider-panel .slider-toggle{background:#6d8be6;color:#fff;display:block;box-shadow:-3px 0 8px rgba(0,0,0,.1);border-top-left-radius:6px;border-bottom-left-radius:6px;position:absolute;top:50%;width:38px;height:38px;left:-39px;text-align:center;line-height:40px;cursor:pointer}@media (max-width:576px){.slider-panel{width:410px;right:-410px}.slider-panel .slider-content{width:410px}}.grid-selector{width:100%;margin-top:1rem}.grid-selector .wrap{position:relative;line-height:40px;border-bottom:1px dashed #eee;padding:0 25px;font-size:13px;overflow:auto}.grid-selector .select-label{float:left;width:100px;padding-left:10px;color:#888}.grid-selector .select-options{margin-left:100px}.grid-selector ul{height:25px;list-style:none}.grid-selector ul>li{margin-right:30px;float:left}.grid-selector ul>li a{color:#666;text-decoration:none}.grid-selector .select-options a.active{color:#577ae2;font-weight:700}.grid-selector li .add{visibility:hidden}.grid-selector li:hover .add{visibility:visible}.grid-selector ul .clear{visibility:hidden}.grid-selector ul:hover .clear{color:#bd4147;visibility:visible}.grid-selector{padding:2px 0;margin:.35rem 0 -.5rem}.grid-selector .wrap{border-bottom:0;background:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);border-radius:.25rem;margin:7px 0}.simple-grid .grid-selector .wrap{box-shadow:none;border-radius:0;border-bottom:1px dashed #eff3f8}.box{position:relative;border-radius:.25rem;background:#fff;margin-bottom:10px;width:100%;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);display:flex;flex-direction:column}.box .box-footer,.card .box-footer{border-top:1px solid #f4f4f4}.box-header{padding:1rem;display:inherit;justify-content:space-between;align-items:center}.box-header .h3,.box-header h3{font-size:1.15rem;margin-bottom:0;padding:.1rem}.box-header.with-border,.card-header.with-border{border-bottom:1px solid #f4f4f4}.box,.panel{transition:.3s cubic-bezier(.25,.8,.5,1)}.box-shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.box.box-solid{border-top:0}.box-footer{display:inherit}.box-body,.box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px}.box-body .box-footer{margin:-10px}.box.box-solid.box-default{border:1px solid #e1e8ea;box-shadow:0 1px 1px rgba(0,0,0,.1)}.form-group .box{margin-bottom:0}.label{display:inline;padding:.24em .6em .34em;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;cursor:pointer}.badge,.label{font-size:87%;font-weight:600;color:#fff;margin-bottom:4px}.badge{min-width:10px;padding:5px 8px;border-radius:10px}.bg-default.badge,.label.bg-default{color:#414750;font-weight:700}.nav.nav-tabs .nav-item .nav-link.active:after{box-shadow:0 0 2px 0 rgba(109,139,230,.5)!important}.nav.nav-tabs .nav-item .nav-link{font-size:1rem;padding:17px 14px;text-transform:capitalize;letter-spacing:.045rem;color:rgba(0,0,0,.4);font-weight:700}.nav-vertical .nav.nav-tabs .nav-item .nav-link{padding:10px 25px}.nav-vertical .nav.nav-tabs .nav-item .nav-link.active:after{top:1.3rem;width:2.6rem;left:-17px;right:auto}.nav-vertical .nav.nav-tabs.nav-left{top:5px}.nav-vertical .nav.nav-tabs.nav-left~.tab-content .tab-pane{background-color:transparent}.nav-tabs .nav-item{margin-bottom:0}.nav.nav-tabs{border-bottom:1px solid #f4f4f4}.nav-vertical .nav.nav-tabs{border-bottom:0}.nav-vertical .nav-tabs.flex-column{border-right:0}.nav-vertical .nav-tabs.flex-column>li{border-bottom:0}.nav-theme-danger .nav.nav-tabs,.nav-theme-info .nav.nav-tabs,.nav-theme-primary .nav.nav-tabs,.nav-theme-success .nav.nav-tabs,.nav-theme-white .nav.nav-tabs{background:#6d8be6;padding-left:10px;border-radius:.15rem;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);border-bottom:0}.nav-theme-danger .nav.nav-tabs .nav-item .nav-link,.nav-theme-info .nav.nav-tabs .nav-item .nav-link,.nav-theme-primary .nav.nav-tabs .nav-item .nav-link,.nav-theme-success .nav.nav-tabs .nav-item .nav-link,.nav-theme-white .nav.nav-tabs .nav-item .nav-link{color:hsla(0,0%,100%,.5)}.nav-theme-danger .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-info .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-success .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active{color:#fff}.nav-theme-danger .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-info .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-success .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active:after{background:#fff!important}.nav-theme-danger .nav-tabs .nav-item,.nav-theme-info .nav-tabs .nav-item,.nav-theme-primary .nav-tabs .nav-item,.nav-theme-success .nav-tabs .nav-item,.nav-theme-white .nav-tabs .nav-item{margin-bottom:2px}.nav-theme-success .nav.nav-tabs{background:#21b978}.nav-theme-info .nav.nav-tabs{background:#4277cf}.nav-theme-danger .nav.nav-tabs{background:#ea5455}.nav-theme-white .nav.nav-tabs{background:#fff}.nav-theme-white .nav.nav-tabs .nav-item .nav-link{color:rgba(0,0,0,.4)}.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active{color:#6d8be6}.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active:after{background:#6d8be6!important}.main-menu .navbar-header{padding:.35rem 1rem 0}.main-menu .navbar-header .navbar-brand{margin-top:1.1rem}.main-menu .navbar-header .navbar-brand img{display:inline-block;max-width:45px;max-height:40px;margin-top:-1px}.main-menu .navbar-header .logo-mini{display:none;font-size:1.8rem;color:#5376e2}.main-menu .navbar-header .logo-lg{color:#5376e2;letter-spacing:.01rem;font-size:1.45rem;-webkit-animation:fadein .3s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards;animation:fadein .3s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards}.main-menu .navbar-header .nav-item{width:100%;text-align:center}.main-menu .navbar-header .navbar-brand{display:inline-block;margin:10px 0}.main-menu [class*=sidebar-dark-] .navbar-header .logo-lg,.main-menu [class*=sidebar-dark-] .navbar-header .logo-mini{color:#f7f7f7}.main-menu.menu-light .navigation>li.active>a{box-shadow:0 0 4px 1px rgba(109,139,230,.7)}.main-menu.menu-shadow{box-shadow:0 0 5px 0 rgba(0,0,0,.05)}body.sidebar-collapse .main-sidebar:not(:hover) .navbar-header{padding:.35rem 15px}body.sidebar-collapse .main-sidebar:not(:hover) .navbar-header .logo-lg{display:none}body.sidebar-collapse .main-sidebar:not(:hover) .navbar-header .logo-mini{display:inline-block}.main-sidebar .nav-sidebar .nav-item>.nav-link{font-size:1.04rem;border-radius:.1rem}.nav-pills .nav-link:not(.active):hover{color:#414750}[class*=sidebar-dark-] .navbar-header{padding:0 1rem;height:61px;background:#262d37}[class*=sidebar-dark-] .navbar-header .navbar-brand{margin:8px 0}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active:hover{color:#577ae2;background:none;box-shadow:0 0}.nav-treeview>.nav-item>.nav-link p i{margin-top:-5px}.sidebar-light-primary .nav-item>.nav-link.active{background:none;color:#577ae2!important;font-weight:700;box-shadow:0 0}.nav-sidebar>.nav-item>.nav-treeview .nav-link p{font-size:14px}body.sidebar-separate .main-sidebar{top:6rem;left:1.5rem;text-align:center;background-color:#fff}body.sidebar-separate .navbar-header .logo-lg,body.sidebar-separate .navbar-header .logo-mini{color:#414750}body.sidebar-separate .navbar-header .navbar-brand{margin-top:1rem!important}body.sidebar-separate .header-navbar.fixed-top,body.sidebar-separate .sidebar-collapse .header-navbar.fixed-top{left:0}@media (min-width:768px){body.sidebar-separate .content-wrapper{margin-left:280px}}body.sidebar-separate .main-sidebar .nav-sidebar .nav-item>.nav-link{text-align:left}body.sidebar-separate.dark-mode [class*=sidebar-dark-] .navbar-header{background:unset!important;height:auto;padding:.35rem 1rem 0}.main-sidebar.sidebar-primary{background-color:#6d8be6!important}.main-sidebar.sidebar-primary .nav-pills .nav-link:not(.active):hover,.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link,.main-sidebar.sidebar-primary .navbar-header .logo-lg,.main-sidebar.sidebar-primary .navbar-header .logo-mini,.main-sidebar.sidebar-primary .sidebar a{color:#fff}.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link.active,.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link:hover,.main-sidebar.sidebar-primary .nav.nav-pills .nav-item .nav-link.active{font-weight:700;border-bottom:1px solid #fff}.main-sidebar.sidebar-primary .nav-item>.nav-link i{margin-right:.71rem;font-size:1.2rem}.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link i{margin-right:.65rem;margin-left:3px}.horizontal-menu .header-navbar.navbar-shadow{box-shadow:none;border-bottom:1px solid #ebeff2}.horizontal-menu .content-wrapper,.horizontal-menu .main-footer,.horizontal-menu .main-header{margin-left:0!important}.horizontal-menu .header-navbar{position:-webkit-sticky;position:sticky;top:0}.horizontal-menu .header-navbar.navbar-horizontal{top:60px;position:fixed}.horizontal-menu .main-horizontal-sidebar{top:60px;left:0;position:fixed;width:100%;height:inherit;min-height:auto;bottom:inherit;box-shadow:none}.horizontal-menu .main-horizontal-sidebar>div{box-shadow:0 2px 4px 0 rgba(0,0,0,.05);background:#fff}.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item.menu-open>.nav-link,.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item:hover>.nav-link,.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:focus,.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item i{color:#414750}.horizontal-menu .nav-sidebar>.nav-item{padding-bottom:.6rem}.horizontal-menu .nav-sidebar>.nav-item .nav-link{color:#414750;font-size:1rem;padding:.45rem .7rem;transition:all .35s ease!important}.horizontal-menu .nav-sidebar>.nav-item .nav-link.dropdown-toggle:after{margin-top:0!important}.horizontal-menu .nav-sidebar>.nav-item .nav-link.active,.horizontal-menu .nav-sidebar>.nav-item .nav-link.active i{color:#6d8be6!important;font-weight:600}.horizontal-menu .dropdown-menu .nav-item:hover>.nav-link{padding-left:1rem}.horizontal-menu .nav.nav-pills{margin-bottom:0}.horizontal-menu .nav.dropdown-menu{display:none;margin-top:-.2rem;min-width:200px}.horizontal-menu .open>.nav.dropdown-menu{display:block;-webkit-animation:fadein .8s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards;animation:fadein .8s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards}.horizontal-menu [class*=sidebar-light-]{background-color:transparent}.horizontal-menu [class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-treeview{background:#fff;border-radius:.4rem}.horizontal-menu .nav-sidebar>.nav-item>.nav-link i{margin-right:.35rem!important}.horizontal-menu .nav-pills .nav-link.active{background-color:transparent}.horizontal-menu .horizontal-navbar-brand{margin-top:-5px;display:none}.horizontal-menu .horizontal-navbar-brand .logo-lg{font-size:1.45rem}.horizontal-menu.navbar-fixed-top .content-wrapper{padding-top:75px}body.dark-mode.horizontal-menu .header-navbar.navbar-shadow{border-color:#303247}body.dark-mode.horizontal-menu [class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-treeview{background:#223;border-radius:.4rem}body.dark-mode.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item i{color:#a8a9bb}body.dark-mode.horizontal-menu .main-horizontal-sidebar>div,body.dark-mode.horizontal-menu [class*=sidebar-dark-],body.dark-mode.horizontal-menu [class*=sidebar-light-]{background-color:#223}body.dark-mode.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link.active{background-color:transparent}body.dark-mode.horizontal-menu a.nav-link.active p{color:#6d8be6!important}body.dark-mode.horizontal-menu [class*=sidebar-light-] .nav-sidebar>.nav-item:hover>.nav-link:not(.active){color:#fff}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm,.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal}}.alert{font-weight:500;border:none;padding:.85rem 1.2rem;border-radius:.25rem}.alert h4{color:inherit}.alert .close:focus{outline:0}.alert p{font-weight:500;padding:2px 0;margin-bottom:0}.alert p,.alert span{vertical-align:middle}.alert .alert-heading{font-weight:700;font-size:.9rem;padding:0 0 8px}.alert.alert-dark .alert-heading{box-shadow:0 6px 15px -7px rgba(34,41,47,.4)}.alert-danger{background-color:#f5e0e8;color:#ef5228;box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}.alert-success{background:rgba(33,185,120,.2);color:#1fb072;box-shadow:0 2px 4px 0 rgba(0,0,0,.12)}.alert-info{background:rgba(66,119,207,.2);color:#4277cf}.alert-info,.alert-primary{box-shadow:0 2px 4px 0 rgba(0,0,0,.17)}.alert-primary{background:rgba(109,139,230,.2);color:#577ae2}.alert-warning{background-color:#f6f6eb;color:#d6922f;box-shadow:0 2px 4px 0 rgba(0,0,0,.09)}.callout{border-radius:.1rem;border:0;border-left:3.5px solid #9da7b7;background-color:#fff;margin-bottom:1rem;box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.callout.callout-primary{border-left:3.5px solid #7692e7}.callout.callout-light{background-color:#f7f7f9;box-shadow:none}code{box-shadow:0 1px 1px rgba(0,0,0,.125);padding:3px 5px;background:#f7f7f9;color:#4a6fe0}code,pre{font-family:Montserrat,Nunito,sans-serif}pre{padding:7px;white-space:pre-wrap;margin-bottom:0;word-break:break-all}a.disabled{opacity:.65}.img,[data-action=preview-img]{cursor:pointer}.avatar{max-width:120px;border:2px solid #ddd}.popover{font-family:Nunito,Montserrat,system-ui,BlinkMacSystemFont,-apple-system,sans-serif;border:0;box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05);max-width:320px;z-index:10}.popover .popover-header{color:#fff;border:none;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{border-right-color:#eee}.popover.bs-popover-bottom .arrow:after{border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{border-bottom-color:#eee}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{border-top-color:#eee}.bootstrap-datetimepicker-widget table td i,.bootstrap-datetimepicker-widget table td span{height:0!important;line-height:0!important}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#f7f7f9!important;color:#577ae2!important;font-weight:700}.bootstrap-datetimepicker-widget table td{width:0!important}.bootstrap-datetimepicker-widget table td .btn{padding:.5rem!important}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{padding:.5em .1em!important}.modal-content{border:0;border-radius:0}.iconpicker-popover.popover .popover-title{background:#fff!important}.iconpicker-popover.popover.bottom>.arrow,.iconpicker-popover.popover.bottomLeft>.arrow,.iconpicker-popover.popover.bottomRight>.arrow{border-bottom-color:#dfdfdf!important}body.dark-mode::-webkit-scrollbar{width:12px;height:12px}body.dark-mode::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode{background-color:#2c2c43;color:#a8a9bb}body.dark-mode .body-bg,body.dark-mode .content-wrapper,body.dark-mode .main-footer{background:#2c2c43}body.dark-mode .bg-white{background:#2c2c43!important}body.dark-mode a{color:#718ee7}body.dark-mode a:hover{color:#5c7de3}body.dark-mode .grid-column-header a{color:#7d7f99}body.dark-mode .grid-column-header a.active,body.dark-mode .grid-column-header a:hover{color:#718ee7}body.dark-mode h1,body.dark-mode h2,body.dark-mode h3,body.dark-mode h4,body.dark-mode h5,body.dark-mode h6{color:#cacbd6}body.dark-mode label,body.dark-mode p,body.dark-mode small{color:#a8a9bb}body.dark-mode .label{color:#f9f9f9}body.dark-mode .dcat-loading:not(.layui-layer-shade){background-color:inherit!important}body.dark-mode .btn.btn-default,body.dark-mode .btn.btn-light,body.dark-mode .btn.btn-white{color:#a8a9bb;background-color:#223;border-color:#223}body.dark-mode .btn.btn-default:hover,body.dark-mode .btn.btn-light:hover,body.dark-mode .btn.btn-white:focus,body.dark-mode .btn.btn-white:hover{color:#aeafbf!important}body.dark-mode .bg-light,body.dark-mode .btn.btn-light{color:#a8a9bb!important;background-color:#2c2c43!important;border-color:#2c2c43!important}body.dark-mode .bg-default{background-color:#223!important;color:#a8a9bb!important}body.dark-mode .btn-light:focus,body.dark-mode .btn-light:hover{color:#abacbe!important}body.dark-mode .btn.btn-custom:not(.btn-outline),body.dark-mode .btn.btn-danger:not(.btn-outline),body.dark-mode .btn.btn-info:not(.btn-outline),body.dark-mode .btn.btn-primary:not(.btn-outline),body.dark-mode .btn.btn-success:not(.btn-outline),body.dark-mode .btn.btn-warning:not(.btn-outline){color:#ebebeb}body.dark-mode hr{border-color:#303247}body.dark-mode pre{background-color:#223;border:0;color:#a8a9bb}body.dark-mode pre code{background-color:inherit}body.dark-mode code,body.dark-mode pre code .operator,body.dark-mode pre code .url{background-color:#2c2c43}body.dark-mode code{color:#b8c2cc!important}body.dark-mode kbd{background-color:#2c2c43}body.dark-mode .text-dark{color:#b8c2cc!important}body.dark-mode .header-navbar{background-color:#223}body.dark-mode .header-navbar .navbar-container .nav .nav-item .nav-link{color:#a8a9bb;background-color:transparent}body.dark-mode .header-navbar .navbar-container .nav .nav-item .nav-link i{color:#a8a9bb}body.dark-mode .header-navbar.navbar-static-top{background-color:transparent}body.dark-mode .header-navbar[class*=bg-] .navbar-nav .nav-item .nav-link{background-color:inherit}body.dark-mode .main-menu .navbar-header .logo-lg{font-weight:300}body.dark-mode .dropdown-toggle:hover:after,body.dark-mode .dropdown-toggle:hover i{color:#fff}body.dark-mode .dropdown .dropdown-menu{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)}body.dark-mode .dropdown-menu{background-color:#223}body.dark-mode .dropdown-menu:before{background:#223}body.dark-mode .dropdown-menu .dropdown-item:focus,body.dark-mode .dropdown-menu .dropdown-item:hover{background:#1e1e2d}body.dark-mode .dropdown-menu .dropdown-item{color:#a8a9bb}body.dark-mode .dropdown-menu .form-control{background-color:#223}body.dark-mode .dropdown-menu .dropdown-divider{border-color:#303247}body.dark-mode .dropdown-item a,body.dark-mode .dropdown-menu label{color:#a8a9bb}body.dark-mode .modal .modal-header,body.dark-mode .modal .modal-header[class*=bg-]{border-color:#303247;background-color:#242436}body.dark-mode .modal .modal-header .close span,body.dark-mode .modal .modal-header[class*=bg-] .close span{color:hsla(0,0%,100%,.5)}body.dark-mode .modal .modal-body,body.dark-mode .modal .modal-content,body.dark-mode .modal .modal-footer{background-color:#28283c}body.dark-mode .modal-backdrop{background-color:rgba(34,41,47,.5)}body.dark-mode .pagination:not([class*=pagination-]) .page-item.active{background-color:#2c2c43}body.dark-mode .pagination:not([class*=pagination-]) .page-item.active .page-link:hover{color:#fff}body.dark-mode .pagination:not([class*=pagination-]) .page-item .page-link{background-color:#2c2c43;color:#a8a9bb}body.dark-mode .pagination:not([class*=pagination-]) .page-item.next-item .page-link:hover,body.dark-mode .pagination:not([class*=pagination-]) .page-item.prev-item .page-link:hover{color:#fff}body.dark-mode .pagination[class*=pagination-] .page-item:not(.active):not(:hover) .page-link{background-color:#1e1e2d;color:#a8a9bb}body.dark-mode .pagination[class*=pagination-] .page-item:not(.active) .page-link:hover{background-color:#2c2c43}body.dark-mode .pagination[class*=pagination-] .page-item.active{background-color:#223}body.dark-mode .nav .nav-item .nav-link{color:#a8a9bb}body.dark-mode .popover[x-placement=top] .arrow:after{border-top-color:#223}body.dark-mode .popover[x-placement=bottom] .arrow:after{border-bottom-color:#223}body.dark-mode .popover[x-placement=left] .arrow:after{border-left-color:#223}body.dark-mode .popover[x-placement=right] .arrow:after{border-right-color:#223}body.dark-mode .popover .popover-body{background-color:#223;color:#a8a9bb}body.dark-mode .nav.nav-tabs{border-color:#444865}body.dark-mode .nav-theme-primary .nav.nav-tabs,body.dark-mode .nav-theme-white .nav.nav-tabs{background-color:#223}body.dark-mode .nav-theme-primary .nav.nav-tabs .nav-item .nav-link:not(.active),body.dark-mode .nav-theme-white .nav.nav-tabs .nav-item .nav-link:not(.active){color:#9d9eb2}body.dark-mode .nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active,body.dark-mode .nav-theme-white .nav.nav-tabs .nav-item .nav-link.active{color:#6d8be6}body.dark-mode .nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active:after,body.dark-mode .nav-theme-white .nav.nav-tabs .nav-item .nav-link.active:after{background:linear-gradient(30deg,#6d8be6,rgba(109,139,230,.5))!important}body.dark-mode .table-responsive[data-pattern=priority-columns]::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .table-responsive[data-pattern=priority-columns]::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .table-responsive[data-pattern=priority-columns]::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .table-wrapper{margin-top:12px!important}body.dark-mode .table.default-table td,body.dark-mode .table.default-table th{border-color:#303247!important}body.dark-mode .table.default-table th,body.dark-mode table.table-bordered.dataTable.complex-headers th{background:#26263a}body.dark-mode .table.default-table td,body.dark-mode table.table-bordered.dataTable.complex-headers td{background:#2a2a40}body.dark-mode .table{background-color:#223;padding:0 1rem}body.dark-mode .table td,body.dark-mode .table th{border-color:#303247}body.dark-mode .table .thead tr:not([class*=table-]) td,body.dark-mode .table .thead tr:not([class*=table-]) th,body.dark-mode .table tbody tr:not([class*=table-]) td,body.dark-mode .table tbody tr:not([class*=table-]) th{border:0;color:#a8a9bb}body.dark-mode .table .thead tr:not([class*=table-]) td code,body.dark-mode .table .thead tr:not([class*=table-]) th code,body.dark-mode .table tbody tr:not([class*=table-]) td code,body.dark-mode .table tbody tr:not([class*=table-]) th code{background-color:#223}body.dark-mode .table thead tr th{border:0;background-color:#223;color:#a8a9bb}body.dark-mode .table tbody tr{background:#2c2c43!important}body.dark-mode .table tbody tr[class*=table-] td,body.dark-mode .table tbody tr[class*=table-] th{background-color:unset;color:#22292f;border-color:#303247}body.dark-mode .table tbody tr.table-dark td,body.dark-mode .table tbody tr.table-dark th{color:#fff}body.dark-mode .table tbody tr.table-active td,body.dark-mode .table tbody tr.table-active th{color:#a8a9bb}body.dark-mode .table tbody tr th{background-color:#2c2c43}body.dark-mode .table tbody tr td{background-color:#2c2c43;color:#a8a9bb}body.dark-mode .table.table-bordered,body.dark-mode .table.table-bordered tbody tr td,body.dark-mode .table.table-bordered tbody tr th,body.dark-mode .table.table-bordered thead tr td,body.dark-mode .table.table-bordered thead tr th{border:1px solid #303247}body.dark-mode .table.table-hover tbody tr:hover{background-color:#223}body.dark-mode .table.table-hover tbody tr td,body.dark-mode .table.table-hover tbody tr th{background-color:unset}body.dark-mode .table.table-striped tbody tr:nth-of-type(odd){background-color:#223}body.dark-mode .table.table-striped tbody tr td,body.dark-mode .table.table-striped tbody tr th{background-color:unset}body.dark-mode .table.table-bordered{padding:0}body.dark-mode .box,body.dark-mode .card{background:#223}body.dark-mode .box.box-solid.box-default{background-color:#2c2c43}body.dark-mode .box-header.with-border,body.dark-mode .box.box-solid.box-default,body.dark-mode .card.dcat-box .card-header,body.dark-mode .dd-handle,body.dark-mode .with-border{border-bottom:1px solid #303247;border-color:#303247!important}body.dark-mode .box .box-footer,body.dark-mode .card .box-footer{border-color:#303247}body.dark-mode .dd-handle{background:#2a2a3f;color:#a8a9bb;margin-bottom:2px}body.dark-mode .dd-item>button:before{color:#a8a9bb}body.dark-mode .input-group-addon,body.dark-mode .input-group-append,body.dark-mode .input-group-prepend,body.dark-mode .input-group-text{background-color:#2c2c43;border-color:#303247;color:#a8a9bb!important}body.dark-mode input::-webkit-input-placeholder{color:#9a9bb0!important}body.dark-mode input::-moz-placeholder{color:#9a9bb0!important}body.dark-mode input:-ms-input-placeholder{color:#9a9bb0!important}body.dark-mode .help-block{color:#a4a5b8!important}body.dark-mode .has-error .checkbox,body.dark-mode .has-error .checkbox-inline,body.dark-mode .has-error.checkbox label,body.dark-mode .has-error .control-label,body.dark-mode .has-error .form-control-position i,body.dark-mode .has-error .form-control:focus~.form-control-position i,body.dark-mode .has-error .help-block,body.dark-mode .has-error .radio,body.dark-mode .has-error .radio-inline,body.dark-mode .has-error.radio label{color:#bd4147!important}body.dark-mode .select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .form-control,body.dark-mode .select2-container--default .select2-selection--multiple,body.dark-mode .select2-container--default .select2-selection--single{background:#2c2c43;color:#a8a9bb!important;border-color:#303247!important}body.dark-mode .select2-container--default .select2-search--inline .select2-search__field,body.dark-mode .select2-container--default .select2-selection--single .select2-selection__rendered{color:#a8a9bb!important}body.dark-mode .select2-container--default .select2-search--dropdown .select2-search__field{background:#2c2c43!important;color:#a8a9bb!important}body.dark-mode .select2-container--default .select2-search--dropdown .select2-search__field,body.dark-mode .select2-container--default .select2-selection--multiple{border-color:#303247!important}body.dark-mode .select2-container--default .select2-results>.select2-results__options,body.dark-mode .select2-dropdown{background:#223!important}body.dark-mode .select2-container--default .select2-results__option--highlighted[aria-selected],body.dark-mode .select2-container--default .select2-results__option[aria-selected=true]{background:#1e1e2d!important;color:#a8a9bb!important}body.dark-mode .table-filter .form-control{background:#223;color:#a8a9bb}body.dark-mode .form-divider{border-color:#303247}body.dark-mode .form-divider span{background-color:#223}body.dark-mode .form-control:disabled,body.dark-mode .form-control[readonly],body.dark-mode .select2-container--default.select2-container--disabled .select2-selection--multiple,body.dark-mode .select2-container--default.select2-container--disabled .select2-selection--single{background-color:#28283d!important}body.dark-mode .layui-layer-page .layui-layer-content::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .layui-layer-page .layui-layer-content::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .layui-layer-page .layui-layer-content::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .layui-layer{background-color:#242436!important}body.dark-mode .layui-layer-page .layui-layer-btn,body.dark-mode .layui-layer-page .layui-layer-content{background-color:#28283c!important}body.dark-mode .layui-layer-title{background-color:#242436!important;border-bottom:1px solid #303247!important;color:#a8a9bb!important}body.dark-mode .layui-layer-btn1{border-color:#223!important;background:#223!important}body.dark-mode .layui-layer-setwin .layui-layer-close1:before,body.dark-mode .layui-layer-setwin .layui-layer-max:before,body.dark-mode .layui-layer-setwin .layui-layer-min cite:before{color:#a8a9bb!important}body.dark-mode .web-uploader .placeholder{border-width:2px;border-color:#9495ab!important}body.dark-mode .web-uploader .filelist li{background:#223!important}body.dark-mode .web-uploader .queueList{border-color:#303247!important}body.dark-mode .web-uploader .filelist li p.title,body.dark-mode .web-uploader .statusBar .info{color:#a8a9bb!important}body.dark-mode .slider-panel{background-color:#242436}body.dark-mode .right-side-filter-container .header{border-color:#303247;background-color:#242436}body.dark-mode .swal2-popup{background:#223}body.dark-mode .swal2-popup h2{color:#a8a9bb}body.dark-mode .swal2-content{color:#a4a5b8}body.dark-mode .quick-create td{background-color:#28283c!important;color:#9a9bb0}body.dark-mode .iconpicker .iconpicker-items::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .iconpicker .iconpicker-items::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .iconpicker .iconpicker-items::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .iconpicker-popover.popover,body.dark-mode .iconpicker-popover.popover .popover-title,body.dark-mode .iconpicker .iconpicker-items{background:#223!important;border-color:#303247!important}body.dark-mode .iconpicker-popover.popover.bottom>.arrow:after,body.dark-mode .iconpicker-popover.popover.bottomLeft>.arrow:after,body.dark-mode .iconpicker-popover.popover.bottomRight>.arrow:after,body.dark-mode .iconpicker-popover.popover .popover-title{border-color:#223}body.dark-mode .alert.alert-danger h3,body.dark-mode .alert.alert-danger h4,body.dark-mode .alert.alert-danger h5{color:#ea5455}body.dark-mode .alert.alert-success h3,body.dark-mode .alert.alert-success h4,body.dark-mode .alert.alert-success h5{color:#21b978}body.dark-mode .alert.alert-info h3,body.dark-mode .alert.alert-info h4,body.dark-mode .alert.alert-info h5{color:#4277cf}body.dark-mode .alert.alert-primary h3,body.dark-mode .alert.alert-primary h4,body.dark-mode .alert.alert-primary h5{color:#577ae2}body.dark-mode .alert.alert-warning h3,body.dark-mode .alert.alert-warning h4,body.dark-mode .alert.alert-warning h5{color:#d9993c}body.dark-mode .callout{background:#26263a;border-color:#8e9aac}body.dark-mode .callout h3,body.dark-mode .callout h4,body.dark-mode .callout h5{color:#b6b7c6}body.dark-mode .apexcharts-legend-series .apexcharts-legend-text{color:#a8a9bb!important}body.dark-mode .apexcharts-radialbar-track path{stroke:#2c2c43}body.dark-mode .apexcharts-inner polygon{stroke:#223!important;fill:#2c2c43!important}body.dark-mode .apexcharts-pie-series path{stroke:#2c2c43}body.dark-mode .apexcharts-menu{background-color:#2c2c43;border:0}body.dark-mode .apexcharts-toolbar .apexcharts-menu-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-reset-zoom-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-zoom-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-zoom-in-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-zoom-out-icon:hover svg{fill:#a8a9bb}body.dark-mode .login-page{background-color:#2c2c43!important}body.dark-mode .login-card-body,body.dark-mode .register-card-body{background-color:#223;color:#a8a9bb}body.dark-mode .grid-selector .wrap{background-color:#223}body.dark-mode .grid-selector .select-label{color:#9a9bb0}body.dark-mode .grid-selector ul>li a{color:#a8a9bb}body.dark-mode .grid-selector .select-options a.active{color:#6d8be6}body.dark-mode .switchery{background-color:#b3b4c4!important;border-color:#b3b4c4!important;box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)}body.dark-mode .switchery>small{background-color:#c5c5d1!important}body.dark-mode .dropdown-menu li.checkbox-row:hover{background-color:#1e1e2d!important}body.dark-mode .dcat-step .dcat-step-title{color:#a8a9bb}body.dark-mode .dcat-step .active>.dcat-step-item-container>.dcat-step-content>.dcat-step-title,body.dark-mode .dcat-step .done>.dcat-step-item-container>.dcat-step-content>.dcat-step-title{color:#bfc0cd}body.dark-mode .dcat-step .dcat-step-icons{border-color:#b3b4c4}body.dark-mode .dcat-step .dcat-step-icons>.dcat-step-icon{color:#b3b4c4}body.dark-mode .dcat-step .dcat-step-title:after{background-color:#a8a9bb}body.dark-mode .dcat-step .active>.dcat-step-item-container>.dcat-step-content>.dcat-step-title:after{background-color:#b3b4c4}body.dark-mode .dcat-step .done .dcat-step-icons{background-color:transparent;border-color:#6d8be6}body.dark-mode .dcat-step .done .dcat-step-icons>.dcat-step-icon{color:#6d8be6}body.dark-mode .dcat-done-step .st-title{color:#cacbd6}body.dark-mode .dcat-done-step .st-desc{color:#a8a9bb}body.dark-mode .table-main::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .table-main::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .table-main::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .table-fixed-left .table{box-shadow:6px 0 5px -5px #000}body.dark-mode .table-fixed-right .table{box-shadow:-5px 0 5px -5px #000}body.dark-mode [class*=sidebar-dark-]{background-image:none;background-color:#223!important}body.dark-mode [class*=sidebar-dark-] .navbar-header{background:#1e1e2d}body.dark-mode [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-treeview{background:transparent}body.dark-mode [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link.active,body.dark-mode [class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active,body.dark-mode [class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:focus,body.dark-mode [class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:hover{background:#1e1e2d}body.dark-mode [class*=sidebar-dark-] .nav-treeview.nav .nav-item .nav-link.active{padding:10px 10px 10px 25px!important}body.dark-mode .main-menu .navbar-header .navbar-brand{margin-top:.5rem}body.dark-mode:not(.sidebar-separate) .main-sidebar .sidebar{margin-top:1rem}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/css/dcat-app-green.css",
    "content": "#nprogress{pointer-events:none}#nprogress .bar{background:rgba(78,152,118,.8);position:fixed;z-index:999999;top:0;left:0;width:100%;height:2.5px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #4e9876,0 0 5px #4e9876;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:75px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#4e9876 transparent transparent #4e9876;border-style:solid;border-width:2px;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.swal2-title{font-weight:400!important}.swal2-actions .btn{padding:.5rem 1.5rem!important}.swal2-container{z-index:89891015!important}html{font-size:14px;height:100%;letter-spacing:.01rem}html body{background-color:#eff1f7;color:#414750}.body-bg,.content-wrapper{background:#eff1f7}body::-webkit-scrollbar{width:10px;height:10px}body::-webkit-scrollbar-track{background-color:#eee}body::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.table-main::-webkit-scrollbar{width:10px;height:10px}.table-main::-webkit-scrollbar-track{background-color:#eee}.table-main::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.table-responsive::-webkit-scrollbar{width:10px;height:10px}.table-responsive::-webkit-scrollbar-track{background-color:#eee}.table-responsive::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar{width:10px;height:10px}.select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-track{background-color:#eee}.select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.layui-layer-page .layui-layer-content::-webkit-scrollbar{width:10px;height:10px}.layui-layer-page .layui-layer-content::-webkit-scrollbar-track{background-color:#eee}.layui-layer-page .layui-layer-content::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.iconpicker .iconpicker-items::-webkit-scrollbar{width:10px;height:10px}.iconpicker .iconpicker-items::-webkit-scrollbar-track{background-color:#eee}.iconpicker .iconpicker-items::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.breadcrumb,.h1,.h2,.h3,.h4,.h5,.h6,.header-navbar,.navigation,body,h1,h2,h3,h4,h5,h6{font-family:Nunito,Montserrat,system-ui,BlinkMacSystemFont,-apple-system,sans-serif}li{list-style-type:none}.text-primary-darker{color:#458769!important}.text-danger-darker{color:#bd4147!important}.text-blue-darker{color:#236bb0!important}.text-custom{color:#59a9f8!important}.text-pink{color:#ff8acc!important}.text-yellow{color:#edc30e!important}.text-light{color:#f7f7f9!important}.text-white50{color:hsla(0,0%,100%,.5)!important}.text-orange{color:#dda451!important}.text-orange-1{color:#ffcc80!important}.text-orange-2{color:#f99037!important}.text-blue-1{color:#007ee5!important}.text-blue-2{color:#4199de!important}.text-cyan{color:#7367f0!important}.text-tear{color:#01847f!important}.text-tear-1{color:#00b5b5!important}.text-gray{color:#b9c3cd!important}.text-20{color:#f6fbff!important}.text-30{color:#f4f7fa!important}.text-35{color:#e7eef7!important}.text-40{color:#ebf0f3!important}.text-50{color:#d3dde5!important}.text-60{color:#bacad6!important}.text-70{color:#b3b9bf!important}.text-80{color:#7c858e!important}.text-85{color:#5c7089!important}.bg-custom{background:#59a9f8!important}.bg-pink{background:#ff8acc!important}.bg-yellow{background:#edc30e!important}.bg-light{background:#f7f7f9!important}.bg-white50{background:hsla(0,0%,100%,.5)!important}.bg-orange{background:#dda451!important}.bg-orange-1{background:#ffcc80!important}.bg-orange-2{background:#f99037!important}.bg-blue-1{background:#007ee5!important}.bg-blue-2{background:#4199de!important}.bg-cyan{background:#7367f0!important}.bg-tear{background:#01847f!important}.bg-tear-1{background:#00b5b5!important}.bg-default{background:#d2d6de!important}.bg-gray{background:#b9c3cd!important}.bg-20{background:#f6fbff!important}.bg-30{background:#f4f7fa!important}.bg-35{background:#e7eef7!important}.bg-40{background:#ebf0f3!important}.bg-50{background:#d3dde5!important}.bg-60{background:#bacad6!important}.bg-70{background:#b3b9bf!important}.bg-80{background:#7c858e!important}.bg-primary-gradient{background-image:linear-gradient(60deg,#4e9876,0,#57a983 37%,#83bfa3 65%,#90c6ad)}.shadow-0{box-shadow:none!important}.shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.05)!important}.shadow-100{box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05)!important}.shadow-200{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important}.font-sm-1{font-size:.7rem!important}.font-sm-2{font-size:.8rem!important}.font-sm-3{font-size:.9rem!important}.font-md-1{font-size:1.1rem!important}.font-md-2{font-size:1.2rem!important}.font-md-3{font-size:1.3rem!important}.font-md-4{font-size:1.4rem!important}.font-md-5{font-size:1.5rem!important}.font-lg-1{font-size:2rem!important}.font-lg-2{font-size:3rem!important}.font-lg-3{font-size:4rem!important}.font-lg-4{font-size:5rem!important}.font-lg-5{font-size:6rem!important}.font-w-300{font-weight:300}.font-w-400{font-weight:400}.font-w-500{font-weight:500}.font-w-600{font-weight:600}.font-w-700{font-weight:700}.mt-1-5{margin-top:1.5rem!important}.mb-1-5{margin-bottom:1.5rem!important}.ml-1-5{margin-left:1.5rem!important}.mr-1-5{margin-right:1.5rem!important}.pt-1-5{padding-top:1.5rem!important}.pb-1-5{padding-bottom:1.5rem!important}.pl-1-5{padding-left:1.5rem!important}.pr-1-5{padding-right:1.5rem!important}.text-italic{font-style:italic}.text-highlight{padding:4px 6px}.pin,.pin-y{top:0;bottom:0}.pin{right:0;left:0}.icon-bg-circle{color:#fff;padding:.5rem;border-radius:50%}.icon-left,.icon-right{margin-right:.5rem}.icon-spin{display:inline-block;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}.hidden{display:none;visibility:hidden}.round{border-radius:1.5rem}.square{border-radius:0}.icon-line-height{line-height:1.5rem!important}.spinner{display:inline-block;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}button:focus{outline:none}.overflow-x-auto{overflow-x:auto!important}.overflow-y-auto{overflow-y:auto!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{line-height:1.3}.content .content-wrapper{padding:7rem 2.5rem 0}.navbar-fixed-top .content-wrapper{padding-top:6.4rem}.full-page .content .content-wrapper{padding:0;margin-left:0!important}dl,ol,ul{margin-bottom:0}.btn{padding:.54rem 1.2rem!important;height:34px;line-height:1.2;border-radius:.2rem;cursor:pointer;box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn.btn-trans{box-shadow:none}.btn-trans.btn-primary{background-color:#cde5da;border-color:#cde5da;color:#4e9876}.btn-shadow.btn,.btn:focus,.btn:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn-shadow.btn:focus,.btn-shadow.btn:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)}.btn-group-sm>.btn,.btn-lg,.btn-sm{border-radius:.2rem}.btn-primary{color:#fff}.btn-sm,.btn-xs{padding:.54rem .9rem!important}a.btn,span.btn{line-height:1.4}div.btn{line-height:1.3}.btn-group-sm>div.btn,.btn-group-sm>span.btn,div.btn.btn-sm,span.btn.btn-sm{line-height:1.2}.btn-group-sm>a.btn,a.btn-sm{line-height:1.1}.btn-warning,.btn.btn-warning.active,.btn.btn-warning:focus,.btn.btn-warning:hover{color:#fff}.btn-group-sm>.btn,.btn-sm{font-size:12px;line-height:1.1;height:30px}.btn-default{background:#fff;border-color:#fff}.btn-default.active,.btn-default:focus,.btn-default:hover{background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05)}.btn-group{box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn-group .btn:not(.btn-white):hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05)}.btn-group .btn{box-shadow:none!important}.btn-group.btn-shadow{box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn-custom{color:#2a2e30;background-color:#59a9f8;border-color:#59a9f8;color:#fff}.btn-custom:hover{color:#fff;background-color:#48a0f7;border-color:#48a0f7}.btn-custom.focus,.btn-custom:focus{box-shadow:0 0 0 .2rem rgba(82,151,218,.5)}.btn-custom.disabled,.btn-custom:disabled{color:#2a2e30;background-color:#59a9f8;border-color:#59a9f8}.btn-custom:not(:disabled):not(.disabled).active,.btn-custom:not(:disabled):not(.disabled):active,.show>.btn-custom.dropdown-toggle{color:#fff;background-color:#419cf7;border-color:#419cf7}.btn-custom:not(:disabled):not(.disabled).active:focus,.btn-custom:not(:disabled):not(.disabled):active:focus,.show>.btn-custom.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,151,218,.5)}.btn-outline-custom,.btn-outline-custom:hover{color:#59a9f8;border-color:#59a9f8}.btn-outline-custom:hover{background-color:rgba(89,169,248,.1)}.btn-outline-custom.focus,.btn-outline-custom:focus{box-shadow:0 0 0 .2rem rgba(89,169,248,.5)}.btn-outline-custom.disabled,.btn-outline-custom:disabled{color:#59a9f8;background-color:transparent}.btn-outline-custom:not(:disabled):not(.disabled).active,.btn-outline-custom:not(:disabled):not(.disabled):active,.show>.btn-outline-custom.dropdown-toggle{color:#2a2e30;background-color:#59a9f8;border-color:#59a9f8}.btn-outline-custom:not(:disabled):not(.disabled).active:focus,.btn-outline-custom:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-custom.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(89,169,248,.5)}.btn-cyan{color:#fff;background-color:#7367f0;border-color:#7367f0}.btn-cyan:hover{color:#fff;background-color:#6457ee;border-color:#6457ee}.btn-cyan.focus,.btn-cyan:focus{box-shadow:0 0 0 .2rem rgba(136,126,242,.5)}.btn-cyan.disabled,.btn-cyan:disabled{color:#fff;background-color:#7367f0;border-color:#7367f0}.btn-cyan:not(:disabled):not(.disabled).active,.btn-cyan:not(:disabled):not(.disabled):active,.show>.btn-cyan.dropdown-toggle{color:#fff;background-color:#5e50ee;border-color:#5e50ee}.btn-cyan:not(:disabled):not(.disabled).active:focus,.btn-cyan:not(:disabled):not(.disabled):active:focus,.show>.btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(136,126,242,.5)}.btn-outline-cyan,.btn-outline-cyan:hover{color:#7367f0;border-color:#7367f0}.btn-outline-cyan:hover{background-color:rgba(115,103,240,.1)}.btn-outline-cyan.focus,.btn-outline-cyan:focus{box-shadow:0 0 0 .2rem rgba(115,103,240,.5)}.btn-outline-cyan.disabled,.btn-outline-cyan:disabled{color:#7367f0;background-color:transparent}.btn-outline-cyan:not(:disabled):not(.disabled).active,.btn-outline-cyan:not(:disabled):not(.disabled):active,.show>.btn-outline-cyan.dropdown-toggle{color:#fff;background-color:#7367f0;border-color:#7367f0}.btn-outline-cyan:not(:disabled):not(.disabled).active:focus,.btn-outline-cyan:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(115,103,240,.5)}.btn.btn-default,.btn.btn-white{color:#414750;box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065);background:#fff}.btn.btn-white.btn-primary,.btn.btn-white.btn-primary:focus,.btn.btn-white.btn-primary:hover{color:#fff!important}.btn-white.active,.btn-white:focus,.btn-white:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important}.btn-light{border-color:#dbe3e6!important;background-color:#fff!important;color:#444;box-shadow:none}.btn-light:focus,.btn-light:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important;color:#444!important}.btn-secondary{border-color:#e4eaee!important;background-color:#f4f4f4!important;color:#414750!important;box-shadow:none}.btn-secondary:focus,.btn-secondary:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important}.btn-flat-danger,.btn-flat-dark,.btn-flat-info,.btn-flat-primary,.btn-flat-success,.btn-flat-warning,.btn-no-shadow,.btn-outline-danger,.btn-outline-dark,.btn-outline-info,.btn-outline-primary,.btn-outline-success,.btn-outline-warning{box-shadow:none}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.5rem .7rem}.btn:not(.btn-sm) .spinner-grow,a:not(.btn) .spinner-grow{margin-bottom:.15rem}.btn-outline{background-color:transparent}.btn-primary.btn-outline{color:#4e9876;border-color:#4e9876}.btn-info.btn-outline{color:#4277cf;border-color:#4277cf}.btn-success.btn-outline{color:#21b978;border-color:#21b978}.btn-danger.btn-outline{color:#ea5455;border-color:#ea5455}.btn-warning.btn-outline{color:#dda451;border-color:#dda451}.btn-primary.btn-outline.disabled,.btn-primary.btn-outline:disabled{background:transparent}.btn-danger.btn-outline.active,.btn-danger.btn-outline:hover,.btn-info.btn-outline.active,.btn-info.btn-outline:hover,.btn-success.btn-outline.active,.btn-success.btn-outline:hover,.btn-warning.btn-outline.active,.btn-warning.btn-outline:hover{color:#fff}.btn-primary.btn-outline.active,.btn-primary.btn-outline:hover{background:rgba(78,152,118,.05);color:#4e9876}.number-group .input-group-btn:first-child .btn{border-bottom-right-radius:0;border-top-right-radius:0;border-right:0}.number-group .input-group-btn:last-child .btn{border-bottom-left-radius:0;border-top-left-radius:0}.header-navbar.navbar-shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.header-navbar.floating-nav{margin:1.3rem 2.2rem 0}.navbar-container{height:60px}.navbar-light{background-color:#fff}.dark-mode-switcher{margin:0 5px 0 0;font-size:1.5rem;cursor:pointer}.breadcrumb{border-left:0}.content-header{padding:0 0 2px}.breadcrumbs-top{margin-bottom:1rem}.content-header h1{font-weight:400;font-size:24px;display:inline-block;font-family:Montserrat,Nunito,sans-serif}.content-header h1 small{font-size:15px;display:inline-block;padding-left:5px;color:#777}.custom-data-table-header .table-responsive .top{display:flex;justify-content:space-between;padding:0 1rem}.custom-data-table-header .table-responsive .top .action-btns{margin-top:1.5rem;display:flex}.custom-data-table-header .table-responsive .top .action-btns .actions-dropodown{box-shadow:0 2px 8px 0 rgba(0,0,0,.14);border-radius:.3rem;margin-right:.75rem}.custom-data-table-header .table-responsive .top .action-btns .actions-dropodown .dropdown-toggle{font-size:1.125rem;font-weight:500}.custom-data-table-header .table-responsive .top .action-btns .actions-dropodown .dropdown-toggle:after{left:0}.custom-data-table-header .table-responsive .top .action-btns .dt-buttons .btn{padding:.9rem .938rem}.table-responsive .table-filter{display:inline-block}.table-filter .form-control{padding:1.25rem 2.8rem!important;border-radius:5rem;border:0;background:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);font-size:.82rem}.table-filter label{position:relative}.table-filter label:after{content:\"\\E8BD\";font-family:feather;position:absolute;top:.45rem;font-size:1.1rem;left:1.1rem;font-weight:300;color:#b3b9bf}table.custom-data-table.data-table{border-spacing:0 .8rem;padding:0}table.custom-data-table tbody tr{background:#fff}table.data-table{border-collapse:separate!important}table.custom-data-table.data-table thead th{padding:.714rem .51rem;font-weight:600;border-bottom:0;border-top:0}table.custom-data-table.data-table thead th input:focus{outline:0}table.custom-data-table.data-table thead th:first-child{padding-left:.9rem}table.custom-data-table.data-table tbody tr{background-color:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);cursor:pointer;transition:all .3s ease;border-radius:.3rem}table.custom-data-table.data-table tbody tr:hover{background:#f8fafc}table.custom-data-table.data-table tbody tr td:first-child{padding-left:1rem;border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}table.custom-data-table.data-table tbody tr td:last-child{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}table.custom-data-table.data-table tbody tr.selected td{border-radius:0}table.custom-data-table.data-table tbody td{border:none;vertical-align:middle;height:60px;padding:.55rem;line-height:1.42857}table.custom-data-table.data-table tbody td:focus,table.custom-data-table.data-table tbody td input:focus{outline:0}table.custom-data-table.data-table tbody td .progress{margin-bottom:0;box-shadow:0 4px 8px 0 rgba(0,0,0,.12),0 2px 4px 0 rgba(0,0,0,.08)}.form-control{border-color:#dbe3e6;color:#414750}.form-control:not(textarea){padding:.5rem .7rem;font-size:.9rem}div.form-control,input.form-control{min-height:34px;border-radius:.25rem}.input-group-text{border-color:#dbe3e6}.form-control-sm{padding:.5rem 1.5rem}select.form-control:not([multiple=multiple]){background-image:none}.form-control-sm,.input-group-sm>.custom-select,.input-group-sm>.form-control{line-height:13px}.input-group-sm>div.form-control,.input-group-sm>input.form-control,div.form-control-sm,input.form-control-sm{max-height:30px;min-height:30px}.input-group .form-control{height:100%}.input-group-text{padding:.6rem .9rem;border-radius:.25rem}.help-block{display:block;margin-top:7px;margin-bottom:3px;color:#737373}.control-label{padding-top:10px;padding-right:5px;margin-bottom:0;font-size:1rem;text-transform:capitalize}.fields-group .row.form-group{margin-right:0;margin-left:0}@media (min-width:768px){.form-group .control-label{text-align:right}}.with-errors.help-block{margin-bottom:4px}.form-control:disabled,.form-control[readonly],.select2-container--default.select2-container--disabled .select2-selection--multiple,.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#f7f7f9!important;cursor:not-allowed!important}.has-error .checkbox,.has-error .checkbox-inline,.has-error.checkbox label,.has-error .control-label,.has-error .form-control-position i,.has-error .form-control:focus~.form-control-position i,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.radio label{color:#bd4147}.control-label.asterisk:before{content:\"* \";font-weight:700;color:#bd4147}.form-group.has-error .form-control{border-color:#bd4147}.input-group-prepend .input-group-text{margin-right:-1px;max-height:34px}.input-group-addon{width:1%;white-space:nowrap;vertical-align:middle;padding:6px 12px;font-size:14px;font-weight:400;line-height:1;text-align:center;background-color:#fff;border:1px solid #dbe3e6;min-width:30px}.input-group-sm>.input-group-addon{height:30px;padding:5px 10px;font-size:.7rem;line-height:1.5}.select2-container--default .select2-search--dropdown .select2-search__field,.select2-container--default .select2-selection--multiple,.select2-container--default .select2-selection--single{border-color:#dbe3e6!important;border-radius:.25rem!important}.select2-search--inline{display:inline-block}.select2-container--default .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-search--inline .select2-search__field:focus{border-color:#4e9876!important}.select2-container--classic .select2-selection--multiple .select2-selection__rendered li .select2-search__field,.select2-container--default .select2-selection--multiple .select2-selection__rendered li .select2-search__field{margin-top:8px}.input-group .select2-container{width:50%!important;flex:1 1 auto}.select2-container .select2-selection--multiple{min-height:34px!important}.select2-container--classic .select2-selection--single,.select2-container--default .select2-selection--single{min-height:34px;padding:5px;border:1px solid rgba(0,0,0,.2)}.select2-container--default .select2-selection--single .select2-selection__arrow{height:32px!important}.select2-dropdown{border:1px solid rgba(0,0,0,.03)!important;box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#f1f1f1!important}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#ebf0f3!important;color:#414750!important}.select2-results__option{padding:6px 10px!important}.select2-container--default .select2-selection--multiple .select2-selection__choice{padding:2px 5px!important;border:0!important;font-size:90%;background-color:#4e9876!important}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#fff!important;border-right:0!important}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:focus,.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{background-color:#4e9876!important}.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .25rem!important}.select2-selection .default-text{display:inline-block;padding:.5rem .7rem 0}.select2-container--default .select2-selection--single .select2-selection__rendered{line-height:30px!important}.input-group-sm .select2-container--classic .select2-selection--single,.input-group-sm .select2-container--default .select2-selection--single{min-height:31px;padding:1px 2px;font-size:.7rem}.input-group-sm .select2-selection .default-text{padding:.3rem .5rem 0}.input-group-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .4rem!important}.input-group-sm .select2-container--default .select2-selection--multiple{min-height:30px!important;padding:0 2px;font-size:.7rem;line-height:14px}.input-group-sm .select2-container--default .select2-selection--single .select2-selection__arrow{top:-3px}.input-group-sm .select2-container--classic .select2-selection--multiple .select2-selection__rendered li .select2-search__field,.input-group-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered li .select2-search__field{margin-top:6px}.glyphicon-arrow-right:before{font-family:feather;content:\"\\E829\"}.glyphicon-arrow-left:before{font-family:feather;content:\"\\E828\"}.bootstrap-duallistbox-container .info{color:#414750!important}.has-icon-left .form-control-position{right:auto;left:inherit}.form-control-position{position:absolute;top:0;right:0;z-index:2;display:block;width:2.5rem;height:2.5rem;line-height:2.5rem;text-align:center}.has-icon-left .form-control{padding-right:2rem;padding-left:3rem}.form-divider{height:20px;border-bottom:1px solid #eee}.form-divider span{font-size:16px;background-color:#fff;padding:0 10px}.pagination .page-item .page-link{font-weight:600;font-size:.95rem;padding:.5rem .75rem}.pagination .page-item.disabled{opacity:.82}.table{color:#414750;margin-bottom:0}.table-middle td{vertical-align:middle}.table-text-center td,.table-text-center th{text-align:center}table.data-table thead tr{background:transparent}.table thead th{padding:.65rem;font-weight:600;text-transform:capitalize;font-size:.95rem!important;border-bottom:1px solid #f0f0f0}table.data-table tfoot td,table.data-table tfoot th,table.data-table thead td,table.data-table thead th{font-size:.9rem!important}table.data-table:not(.table-bordered) thead tr th{text-transform:capitalize}table.data-table{border:0}.table td{padding:.55rem;height:55px;line-height:1.42857;border-color:#f0f0f0}.table tr td:first-child,.table tr th:first-child{padding-left:2rem}.quick-search-clear{margin-left:-1.45rem;position:relative;color:#fff}.table-responsive{border:0!important;margin-bottom:0!important;overflow-x:inherit}.table-responsive[data-pattern=priority-columns]{overflow-y:auto!important}.custom-data-table-header .table-responsive{overflow:visible!important;padding-bottom:0!important}.sticky-table-header{z-index:45!important}table.table-bordered.data-table:not(.complex-headers) tbody th,table.table-bordered.data-table tbody td{border-bottom-width:1px}table.table-bordered.data-table td,table.table-bordered.data-table th:not(.complex-headers){border-left-width:1px}table.table-bordered.data-table td:last-child,table.table-bordered.data-table th:last-child{border-right-width:1px}table.data-table.complex-headers{border:1px solid #e4e4e4}table.data-table.complex-headers tfoot td,table.data-table.complex-headers tfoot th,table.data-table.complex-headers thead td,table.data-table.complex-headers thead th{border-bottom:1px solid #e4e4e4;border-right:1px solid #e4e4e4}.data-table.table-bordered:not(.complex-headers) thead th{border-right:1px solid #e2e8ec;border-bottom:1px solid #e2e8ec}.data-table.table-bordered:not(.complex-headers) tr:first-child th{border-top:1px solid #e2e8ec}.data-table.table-bordered:not(.complex-headers) thead tr th:first-child{border-left:1px solid #e2e8ec}table.table-bordered.data-table.complex-headers{border-spacing:0;margin-top:12px!important;box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}table.table-bordered.data-table.complex-headers thead th{vertical-align:middle;font-size:1rem!important}table.table-bordered.data-table.complex-headers tbody tr{box-shadow:none;border-radius:0}table.table-bordered.data-table.complex-headers tbody tr td{border-bottom:1px solid #eee;border-right:1px solid #eee}table.table-bordered.data-table.complex-headers tbody tr td:first-child{border-top-left-radius:0;border-bottom-left-radius:0}table.table-bordered.data-table.complex-headers tbody tr td:last-child{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}table.table-bordered.data-table.complex-headers tbody tr:last-child td{border-bottom:0}.table-hover tbody tr:hover{color:#414750;background-color:#f8fafc}.table.default-table tr{box-shadow:none!important}.table.default-table td{border-top:1px solid #f0f4f8!important;border-radius:0!important}.table.default-table thead th{border-bottom:2px solid #f0f4f8!important}.table.default-table.table-bordered td,.table.default-table.table-bordered th{border:1px solid #f0f4f8!important}.table-collapse .custom-data-table.data-table tbody tr td:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.table-collapse .custom-data-table.data-table tbody tr td:last-child{border-top-right-radius:0;border-bottom-right-radius:0}.table-collapse .custom-data-table.data-table tbody tr:first-child td:first-child{border-top-left-radius:.25rem}.table-collapse .custom-data-table.data-table tbody tr:first-child td:last-child{border-top-right-radius:.25rem}.table-collapse .custom-data-table.data-table tbody tr:last-child td:first-child{border-bottom-left-radius:.25rem}.table-collapse .custom-data-table.data-table tbody tr:last-child td:last-child{border-bottom-right-radius:.25rem}.table-collapse .table.custom-data-table{padding:3px 5px 5px}.table-collapse .table-fixed-left .table.custom-data-table{padding:3px 0 0 5px}.table-collapse .table-fixed-right .table.custom-data-table{padding:3px 5px 0 0}.table-collapse .table-fixed th{background:#ececf1}body:not(.dark-mode) .table-collapse{box-shadow:0 2px 4px 0 rgba(0,0,0,.05);background:#ececf1;margin-top:1rem}body:not(.dark-mode) .table-collapse .custom-data-table{border-spacing:0;margin-top:0!important;background-color:#ececf1}body:not(.dark-mode) .table-collapse table.custom-data-table thead th{height:38px;vertical-align:middle}body:not(.dark-mode) .table-collapse .custom-data-table tbody td{border-top:1px solid #eff3f8;height:60px}body:not(.dark-mode) .table-collapse .custom-data-table tbody tr:first-child td{border-top:0}body:not(.dark-mode) .table-collapse table.custom-data-table tbody tr{box-shadow:none}body:not(.dark-mode) .table-collapse .quick-create td{background:#f7f7f9!important;border-radius:0}body:not(.dark-mode) .table-collapse .table-wrap table.custom-data-table thead th{height:19px}body.dark-mode .table-collapse table{border-spacing:0 .24rem}body.dark-mode .table-collapse table.custom-data-table.data-table tbody td{height:56px}body.dark-mode .table-collapse .table.custom-data-table{padding:3px 10px 10px}body.dark-mode .table-collapse .table-fixed-left .table.custom-data-table{padding:3px 0 0 10px}body.dark-mode .table-collapse .table-fixed-right .table.custom-data-table{padding:3px 10px 0 0}.column-selector{margin:0 5px}.column-selector .dropdown-menu{z-index:100}.column-selector .selectors{padding:0 1rem;height:auto;max-height:500px;overflow-x:hidden}.column-selector .selectors::-webkit-scrollbar{width:10px;height:10px}.column-selector .selectors::-webkit-scrollbar-track{background-color:#eee}.column-selector .selectors::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.grid-column-header a{color:#a5acb3;font-size:1rem}.grid-column-header a.active,.grid-column-header a:hover{color:#458769}.grid-sort{display:inline-block;margin:-2px -4px 0 3px;height:15px}.grid-sort .up:before{font-family:feather;padding-right:.3rem;font-size:.7rem;content:\"\\E845\"}.grid-sort .down{margin:6px 0 0 -1.17rem}.grid-sort .down:after{font-family:feather;content:\"\\E842\";font-size:.7rem}.dcat-box.card{margin-bottom:0}.dcat-box.card .card-header{border-bottom:0;padding:1.3rem 1.5rem;margin-bottom:.5rem}.dcat-box.card .card-body{padding:1rem 0 0}.dcat-box.card .box-footer{border:0;padding:1rem 1.5rem 1.3rem}.table-responsive.table-scrollbar-x{overflow-x:auto}.table-responsive.table-scrollbar-x .table{width:-webkit-max-content;width:-moz-max-content;width:max-content;min-width:100%}.right-side-filter-container .header{border-bottom:1px solid #f4f4f4;width:100%;background:#fff;z-index:10;top:0;margin-left:-1rem}.quick-create td{padding-left:45px;background-color:#f3f3f3;vertical-align:middle;height:42px;color:#777;border-bottom:#eff3f8}.grid-modal .modal-body{padding:1.5rem}.simple-grid .filter-box{background:transparent;box-shadow:none!important;margin:.5rem 0 -1rem!important;padding:0!important}.simple-grid .filter-box .form-group{margin-bottom:1rem}.simple-grid .dcat-box.card .card-header{padding:.8rem 0}.simple-grid .dcat-box.card .box-footer{padding:1rem 1.5rem 0}body:not(.dark-mode) .simple-grid .card{box-shadow:none}body:not(.dark-mode) .simple-grid .table-collapse{box-shadow:none;background:transparent}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table{background:transparent}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table.data-table tbody td{height:48px}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table.data-table thead th{height:20px}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table{padding:5px 0 0;border-bottom:1px solid #eff3f8}body:not(.dark-mode) .simple-grid .table-collapse table.data-table thead tr:last-child th{border-bottom:2px solid #eff3f8}.vs-checkbox-con.checkbox-grid-column input:disabled+.vs-checkbox{cursor:not-allowed;opacity:.33}.dropdown-menu{z-index:20}.dropdown .dropdown-menu{box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05);border:0;min-width:10rem;transform:none}.dropdown .dropdown-menu .dropdown-item:hover{background-color:#f4f7fa;color:#414750}.dropdown .dropdown-menu:before{border-top:1px solid rgba(0,0,0,.07);border-left:1px solid rgba(0,0,0,.07)}.dropdown i{margin-right:0}.dropdown .dropdown-menu .dropdown-item,.dropleft .dropdown-menu .dropdown-item,.dropright .dropdown-menu .dropdown-item,.dropup .dropdown-menu .dropdown-item{padding:0;color:#414750}.dropdown-item a,.dropdown-menu label{color:#414750}.dropdown-item a{padding:.35rem 1.38rem;display:block}.vs-checkbox-con{margin:0}.vs-checkbox-con input{z-index:5}.vs-checkbox-con .vs-checkbox{width:17px;height:17px}.vs-checkbox-con input:checked~.vs-checkbox .vs-checkbox--check .vs-icon{font-size:.95rem;margin-top:-1px}.vs-radio-con input{z-index:10}.card{box-shadow:0 2px 4px 0 rgba(0,0,0,.05);margin-bottom:1.5rem;border-radius:.25rem}.card .card-header{padding:1.1rem 1.1rem 0;align-items:center;display:flex;justify-content:space-between}.card-header.with-border{border-bottom:1px solid #f4f4f4;padding:1.1rem}.card-box-title{font-size:1.1rem}.card-title{font-size:1.2rem}.card-footer{background:transparent;border-color:#f4f4f4!important}.card-body,.card-footer{padding:1.1rem}.card-body .card-footer{padding:.8rem;margin:-1.1rem}.dd{margin:0!important}.dd-item>button:before{font-family:feather;content:\"\\E844\"!important;margin-top:3px}.dd-item>button[data-action=collapse]:before{content:\"\\E842\"!important}.dd-handle{border:1px solid #eaeff0!important;border-radius:.2rem!important}.layui-layer{box-shadow:0 2px 6px 0 rgba(0,0,0,.2)!important}.layui-layer-title{padding:0 80px 0 20px;height:52px!important;line-height:52px!important;border-bottom:1px solid #f4f4f4!important;font-size:1.1rem!important;text-transform:capitalize;overflow:hidden;background-color:#fff!important;border-radius:.25rem .25rem 0 0!important}.layui-layer-setwin .layui-layer-min cite{background:transparent!important;position:static!important}.layui-layer-setwin .layui-layer-min cite:before{font-family:feather;content:\"\\E897\";font-size:1.1rem;color:#414750}.layui-layer-ico{background:transparent!important;color:#414750}.layui-layer-setwin .layui-layer-max:before{font-family:feather;content:\"\\E908\";font-size:1rem}.layui-layer-setwin .layui-layer-maxmin:before{content:\"\\E88D\"}.layui-layer-setwin .layui-layer-close1:before{font-family:feather;content:\"\\E8F6\";font-size:1.1rem}.layui-layer-setwin .layui-layer-close1{margin-left:7px!important}.layui-layer-setwin a{top:3px}.layui-layer-tips,.layui-layer-tips .layui-layer-content{font-size:13px!important;box-shadow:none!important}.layui-layer-btn a{height:30px!important;line-height:20px!important;padding:4px 15px!important;font-size:.85rem;box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05);border-color:#fff!important}.layui-layer-btn .layui-layer-btn0{border-color:#4e9876!important;background-color:#4e9876!important;color:#fff!important}.layui-layer-border{border:0!important}.slider-panel{padding:0;background-color:#fff;position:fixed;top:0;bottom:0;height:100vh;height:calc(var(--vh, 1vh)*100);transition:right .4s cubic-bezier(.05,.74,.2,.99);-webkit-backface-visibility:hidden;backface-visibility:hidden;border-left:1px solid rgba(0,0,0,.05);box-shadow:0 0 5px 0 rgba(0,0,0,.05);width:450px;right:-450px;z-index:998}.slider-panel.open{right:0}.slider-panel .slider-content{position:relative;height:100%;width:450px}.slider-panel .slider-close{position:absolute;right:30px;top:20px;padding:7px;width:auto;z-index:10;color:#626262}.slider-panel .slider-close i{font-size:1.35rem}.slider-panel .slider-toggle{background:#4e9876;color:#fff;display:block;box-shadow:-3px 0 8px rgba(0,0,0,.1);border-top-left-radius:6px;border-bottom-left-radius:6px;position:absolute;top:50%;width:38px;height:38px;left:-39px;text-align:center;line-height:40px;cursor:pointer}@media (max-width:576px){.slider-panel{width:410px;right:-410px}.slider-panel .slider-content{width:410px}}.grid-selector{width:100%;margin-top:1rem}.grid-selector .wrap{position:relative;line-height:40px;border-bottom:1px dashed #eee;padding:0 25px;font-size:13px;overflow:auto}.grid-selector .select-label{float:left;width:100px;padding-left:10px;color:#888}.grid-selector .select-options{margin-left:100px}.grid-selector ul{height:25px;list-style:none}.grid-selector ul>li{margin-right:30px;float:left}.grid-selector ul>li a{color:#666;text-decoration:none}.grid-selector .select-options a.active{color:#458769;font-weight:700}.grid-selector li .add{visibility:hidden}.grid-selector li:hover .add{visibility:visible}.grid-selector ul .clear{visibility:hidden}.grid-selector ul:hover .clear{color:#bd4147;visibility:visible}.grid-selector{padding:2px 0;margin:.35rem 0 -.5rem}.grid-selector .wrap{border-bottom:0;background:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);border-radius:.25rem;margin:7px 0}.simple-grid .grid-selector .wrap{box-shadow:none;border-radius:0;border-bottom:1px dashed #eff3f8}.box{position:relative;border-radius:.25rem;background:#fff;margin-bottom:10px;width:100%;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);display:flex;flex-direction:column}.box .box-footer,.card .box-footer{border-top:1px solid #f4f4f4}.box-header{padding:1rem;display:inherit;justify-content:space-between;align-items:center}.box-header .h3,.box-header h3{font-size:1.15rem;margin-bottom:0;padding:.1rem}.box-header.with-border,.card-header.with-border{border-bottom:1px solid #f4f4f4}.box,.panel{transition:.3s cubic-bezier(.25,.8,.5,1)}.box-shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.box.box-solid{border-top:0}.box-footer{display:inherit}.box-body,.box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px}.box-body .box-footer{margin:-10px}.box.box-solid.box-default{border:1px solid #e1e8ea;box-shadow:0 1px 1px rgba(0,0,0,.1)}.form-group .box{margin-bottom:0}.label{display:inline;padding:.24em .6em .34em;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;cursor:pointer}.badge,.label{font-size:87%;font-weight:600;color:#fff;margin-bottom:4px}.badge{min-width:10px;padding:5px 8px;border-radius:10px}.bg-default.badge,.label.bg-default{color:#414750;font-weight:700}.nav.nav-tabs .nav-item .nav-link.active:after{box-shadow:0 0 2px 0 rgba(78,152,118,.5)!important}.nav.nav-tabs .nav-item .nav-link{font-size:1rem;padding:17px 14px;text-transform:capitalize;letter-spacing:.045rem;color:rgba(0,0,0,.4);font-weight:700}.nav-vertical .nav.nav-tabs .nav-item .nav-link{padding:10px 25px}.nav-vertical .nav.nav-tabs .nav-item .nav-link.active:after{top:1.3rem;width:2.6rem;left:-17px;right:auto}.nav-vertical .nav.nav-tabs.nav-left{top:5px}.nav-vertical .nav.nav-tabs.nav-left~.tab-content .tab-pane{background-color:transparent}.nav-tabs .nav-item{margin-bottom:0}.nav.nav-tabs{border-bottom:1px solid #f4f4f4}.nav-vertical .nav.nav-tabs{border-bottom:0}.nav-vertical .nav-tabs.flex-column{border-right:0}.nav-vertical .nav-tabs.flex-column>li{border-bottom:0}.nav-theme-danger .nav.nav-tabs,.nav-theme-info .nav.nav-tabs,.nav-theme-primary .nav.nav-tabs,.nav-theme-success .nav.nav-tabs,.nav-theme-white .nav.nav-tabs{background:#4e9876;padding-left:10px;border-radius:.15rem;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);border-bottom:0}.nav-theme-danger .nav.nav-tabs .nav-item .nav-link,.nav-theme-info .nav.nav-tabs .nav-item .nav-link,.nav-theme-primary .nav.nav-tabs .nav-item .nav-link,.nav-theme-success .nav.nav-tabs .nav-item .nav-link,.nav-theme-white .nav.nav-tabs .nav-item .nav-link{color:hsla(0,0%,100%,.5)}.nav-theme-danger .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-info .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-success .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active{color:#fff}.nav-theme-danger .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-info .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-success .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active:after{background:#fff!important}.nav-theme-danger .nav-tabs .nav-item,.nav-theme-info .nav-tabs .nav-item,.nav-theme-primary .nav-tabs .nav-item,.nav-theme-success .nav-tabs .nav-item,.nav-theme-white .nav-tabs .nav-item{margin-bottom:2px}.nav-theme-success .nav.nav-tabs{background:#21b978}.nav-theme-info .nav.nav-tabs{background:#4277cf}.nav-theme-danger .nav.nav-tabs{background:#ea5455}.nav-theme-white .nav.nav-tabs{background:#fff}.nav-theme-white .nav.nav-tabs .nav-item .nav-link{color:rgba(0,0,0,.4)}.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active{color:#4e9876}.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active:after{background:#4e9876!important}.main-menu .navbar-header{padding:.35rem 1rem 0}.main-menu .navbar-header .navbar-brand{margin-top:1.1rem}.main-menu .navbar-header .navbar-brand img{display:inline-block;max-width:45px;max-height:40px;margin-top:-1px}.main-menu .navbar-header .logo-mini{display:none;font-size:1.8rem;color:#448466}.main-menu .navbar-header .logo-lg{color:#448466;letter-spacing:.01rem;font-size:1.45rem;-webkit-animation:fadein .3s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards;animation:fadein .3s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards}.main-menu .navbar-header .nav-item{width:100%;text-align:center}.main-menu .navbar-header .navbar-brand{display:inline-block;margin:10px 0}.main-menu [class*=sidebar-dark-] .navbar-header .logo-lg,.main-menu [class*=sidebar-dark-] .navbar-header .logo-mini{color:#f7f7f7}.main-menu.menu-light .navigation>li.active>a{box-shadow:0 0 4px 1px rgba(78,152,118,.7)}.main-menu.menu-shadow{box-shadow:0 0 5px 0 rgba(0,0,0,.05)}body.sidebar-collapse .main-sidebar:not(:hover) .navbar-header{padding:.35rem 15px}body.sidebar-collapse .main-sidebar:not(:hover) .navbar-header .logo-lg{display:none}body.sidebar-collapse .main-sidebar:not(:hover) .navbar-header .logo-mini{display:inline-block}.main-sidebar .nav-sidebar .nav-item>.nav-link{font-size:1.04rem;border-radius:.1rem}.nav-pills .nav-link:not(.active):hover{color:#414750}[class*=sidebar-dark-] .navbar-header{padding:0 1rem;height:61px;background:#262d37}[class*=sidebar-dark-] .navbar-header .navbar-brand{margin:8px 0}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active:hover{color:#458769;background:none;box-shadow:0 0}.nav-treeview>.nav-item>.nav-link p i{margin-top:-5px}.sidebar-light-primary .nav-item>.nav-link.active{background:none;color:#458769!important;font-weight:700;box-shadow:0 0}.nav-sidebar>.nav-item>.nav-treeview .nav-link p{font-size:14px}body.sidebar-separate .main-sidebar{top:6rem;left:1.5rem;text-align:center;background-color:#fff}body.sidebar-separate .navbar-header .logo-lg,body.sidebar-separate .navbar-header .logo-mini{color:#414750}body.sidebar-separate .navbar-header .navbar-brand{margin-top:1rem!important}body.sidebar-separate .header-navbar.fixed-top,body.sidebar-separate .sidebar-collapse .header-navbar.fixed-top{left:0}@media (min-width:768px){body.sidebar-separate .content-wrapper{margin-left:280px}}body.sidebar-separate .main-sidebar .nav-sidebar .nav-item>.nav-link{text-align:left}body.sidebar-separate.dark-mode [class*=sidebar-dark-] .navbar-header{background:unset!important;height:auto;padding:.35rem 1rem 0}.main-sidebar.sidebar-primary{background-color:#4e9876!important}.main-sidebar.sidebar-primary .nav-pills .nav-link:not(.active):hover,.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link,.main-sidebar.sidebar-primary .navbar-header .logo-lg,.main-sidebar.sidebar-primary .navbar-header .logo-mini,.main-sidebar.sidebar-primary .sidebar a{color:#fff}.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link.active,.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link:hover,.main-sidebar.sidebar-primary .nav.nav-pills .nav-item .nav-link.active{font-weight:700;border-bottom:1px solid #fff}.main-sidebar.sidebar-primary .nav-item>.nav-link i{margin-right:.71rem;font-size:1.2rem}.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link i{margin-right:.65rem;margin-left:3px}.horizontal-menu .header-navbar.navbar-shadow{box-shadow:none;border-bottom:1px solid #ebeff2}.horizontal-menu .content-wrapper,.horizontal-menu .main-footer,.horizontal-menu .main-header{margin-left:0!important}.horizontal-menu .header-navbar{position:-webkit-sticky;position:sticky;top:0}.horizontal-menu .header-navbar.navbar-horizontal{top:60px;position:fixed}.horizontal-menu .main-horizontal-sidebar{top:60px;left:0;position:fixed;width:100%;height:inherit;min-height:auto;bottom:inherit;box-shadow:none}.horizontal-menu .main-horizontal-sidebar>div{box-shadow:0 2px 4px 0 rgba(0,0,0,.05);background:#fff}.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item.menu-open>.nav-link,.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item:hover>.nav-link,.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:focus,.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item i{color:#414750}.horizontal-menu .nav-sidebar>.nav-item{padding-bottom:.6rem}.horizontal-menu .nav-sidebar>.nav-item .nav-link{color:#414750;font-size:1rem;padding:.45rem .7rem;transition:all .35s ease!important}.horizontal-menu .nav-sidebar>.nav-item .nav-link.dropdown-toggle:after{margin-top:0!important}.horizontal-menu .nav-sidebar>.nav-item .nav-link.active,.horizontal-menu .nav-sidebar>.nav-item .nav-link.active i{color:#4e9876!important;font-weight:600}.horizontal-menu .dropdown-menu .nav-item:hover>.nav-link{padding-left:1rem}.horizontal-menu .nav.nav-pills{margin-bottom:0}.horizontal-menu .nav.dropdown-menu{display:none;margin-top:-.2rem;min-width:200px}.horizontal-menu .open>.nav.dropdown-menu{display:block;-webkit-animation:fadein .8s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards;animation:fadein .8s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards}.horizontal-menu [class*=sidebar-light-]{background-color:transparent}.horizontal-menu [class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-treeview{background:#fff;border-radius:.4rem}.horizontal-menu .nav-sidebar>.nav-item>.nav-link i{margin-right:.35rem!important}.horizontal-menu .nav-pills .nav-link.active{background-color:transparent}.horizontal-menu .horizontal-navbar-brand{margin-top:-5px;display:none}.horizontal-menu .horizontal-navbar-brand .logo-lg{font-size:1.45rem}.horizontal-menu.navbar-fixed-top .content-wrapper{padding-top:75px}body.dark-mode.horizontal-menu .header-navbar.navbar-shadow{border-color:#303247}body.dark-mode.horizontal-menu [class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-treeview{background:#223;border-radius:.4rem}body.dark-mode.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item i{color:#a8a9bb}body.dark-mode.horizontal-menu .main-horizontal-sidebar>div,body.dark-mode.horizontal-menu [class*=sidebar-dark-],body.dark-mode.horizontal-menu [class*=sidebar-light-]{background-color:#223}body.dark-mode.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link.active{background-color:transparent}body.dark-mode.horizontal-menu a.nav-link.active p{color:#4e9876!important}body.dark-mode.horizontal-menu [class*=sidebar-light-] .nav-sidebar>.nav-item:hover>.nav-link:not(.active){color:#fff}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm,.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal}}.alert{font-weight:500;border:none;padding:.85rem 1.2rem;border-radius:.25rem}.alert h4{color:inherit}.alert .close:focus{outline:0}.alert p{font-weight:500;padding:2px 0;margin-bottom:0}.alert p,.alert span{vertical-align:middle}.alert .alert-heading{font-weight:700;font-size:.9rem;padding:0 0 8px}.alert.alert-dark .alert-heading{box-shadow:0 6px 15px -7px rgba(34,41,47,.4)}.alert-danger{background-color:#f5e0e8;color:#ef5228;box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}.alert-success{background:rgba(33,185,120,.2);color:#1fb072;box-shadow:0 2px 4px 0 rgba(0,0,0,.12)}.alert-info{background:rgba(66,119,207,.2);color:#4277cf}.alert-info,.alert-primary{box-shadow:0 2px 4px 0 rgba(0,0,0,.17)}.alert-primary{background:rgba(78,152,118,.2);color:#458769}.alert-warning{background-color:#f6f6eb;color:#d6922f;box-shadow:0 2px 4px 0 rgba(0,0,0,.09)}.callout{border-radius:.1rem;border:0;border-left:3.5px solid #9da7b7;background-color:#fff;margin-bottom:1rem;box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.callout.callout-primary{border-left:3.5px solid #519f7b}.callout.callout-light{background-color:#f7f7f9;box-shadow:none}code{box-shadow:0 1px 1px rgba(0,0,0,.125);padding:3px 5px;background:#f7f7f9;color:#407d61}code,pre{font-family:Montserrat,Nunito,sans-serif}pre{padding:7px;white-space:pre-wrap;margin-bottom:0;word-break:break-all}a.disabled{opacity:.65}.img,[data-action=preview-img]{cursor:pointer}.avatar{max-width:120px;border:2px solid #ddd}.popover{font-family:Nunito,Montserrat,system-ui,BlinkMacSystemFont,-apple-system,sans-serif;border:0;box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05);max-width:320px;z-index:10}.popover .popover-header{color:#fff;border:none;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{border-right-color:#eee}.popover.bs-popover-bottom .arrow:after{border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{border-bottom-color:#eee}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{border-top-color:#eee}.bootstrap-datetimepicker-widget table td i,.bootstrap-datetimepicker-widget table td span{height:0!important;line-height:0!important}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#f7f7f9!important;color:#458769!important;font-weight:700}.bootstrap-datetimepicker-widget table td{width:0!important}.bootstrap-datetimepicker-widget table td .btn{padding:.5rem!important}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{padding:.5em .1em!important}.modal-content{border:0;border-radius:0}.iconpicker-popover.popover .popover-title{background:#fff!important}.iconpicker-popover.popover.bottom>.arrow,.iconpicker-popover.popover.bottomLeft>.arrow,.iconpicker-popover.popover.bottomRight>.arrow{border-bottom-color:#dfdfdf!important}body.dark-mode::-webkit-scrollbar{width:12px;height:12px}body.dark-mode::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode{background-color:#2c2c43;color:#a8a9bb}body.dark-mode .body-bg,body.dark-mode .content-wrapper,body.dark-mode .main-footer{background:#2c2c43}body.dark-mode .bg-white{background:#2c2c43!important}body.dark-mode a{color:#509b79}body.dark-mode a:hover{color:#478b6c}body.dark-mode .grid-column-header a{color:#7d7f99}body.dark-mode .grid-column-header a.active,body.dark-mode .grid-column-header a:hover{color:#509b79}body.dark-mode h1,body.dark-mode h2,body.dark-mode h3,body.dark-mode h4,body.dark-mode h5,body.dark-mode h6{color:#cacbd6}body.dark-mode label,body.dark-mode p,body.dark-mode small{color:#a8a9bb}body.dark-mode .label{color:#f9f9f9}body.dark-mode .dcat-loading:not(.layui-layer-shade){background-color:inherit!important}body.dark-mode .btn.btn-default,body.dark-mode .btn.btn-light,body.dark-mode .btn.btn-white{color:#a8a9bb;background-color:#223;border-color:#223}body.dark-mode .btn.btn-default:hover,body.dark-mode .btn.btn-light:hover,body.dark-mode .btn.btn-white:focus,body.dark-mode .btn.btn-white:hover{color:#aeafbf!important}body.dark-mode .bg-light,body.dark-mode .btn.btn-light{color:#a8a9bb!important;background-color:#2c2c43!important;border-color:#2c2c43!important}body.dark-mode .bg-default{background-color:#223!important;color:#a8a9bb!important}body.dark-mode .btn-light:focus,body.dark-mode .btn-light:hover{color:#abacbe!important}body.dark-mode .btn.btn-custom:not(.btn-outline),body.dark-mode .btn.btn-danger:not(.btn-outline),body.dark-mode .btn.btn-info:not(.btn-outline),body.dark-mode .btn.btn-primary:not(.btn-outline),body.dark-mode .btn.btn-success:not(.btn-outline),body.dark-mode .btn.btn-warning:not(.btn-outline){color:#ebebeb}body.dark-mode hr{border-color:#303247}body.dark-mode pre{background-color:#223;border:0;color:#a8a9bb}body.dark-mode pre code{background-color:inherit}body.dark-mode code,body.dark-mode pre code .operator,body.dark-mode pre code .url{background-color:#2c2c43}body.dark-mode code{color:#b8c2cc!important}body.dark-mode kbd{background-color:#2c2c43}body.dark-mode .text-dark{color:#b8c2cc!important}body.dark-mode .header-navbar{background-color:#223}body.dark-mode .header-navbar .navbar-container .nav .nav-item .nav-link{color:#a8a9bb;background-color:transparent}body.dark-mode .header-navbar .navbar-container .nav .nav-item .nav-link i{color:#a8a9bb}body.dark-mode .header-navbar.navbar-static-top{background-color:transparent}body.dark-mode .header-navbar[class*=bg-] .navbar-nav .nav-item .nav-link{background-color:inherit}body.dark-mode .main-menu .navbar-header .logo-lg{font-weight:300}body.dark-mode .dropdown-toggle:hover:after,body.dark-mode .dropdown-toggle:hover i{color:#fff}body.dark-mode .dropdown .dropdown-menu{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)}body.dark-mode .dropdown-menu{background-color:#223}body.dark-mode .dropdown-menu:before{background:#223}body.dark-mode .dropdown-menu .dropdown-item:focus,body.dark-mode .dropdown-menu .dropdown-item:hover{background:#1e1e2d}body.dark-mode .dropdown-menu .dropdown-item{color:#a8a9bb}body.dark-mode .dropdown-menu .form-control{background-color:#223}body.dark-mode .dropdown-menu .dropdown-divider{border-color:#303247}body.dark-mode .dropdown-item a,body.dark-mode .dropdown-menu label{color:#a8a9bb}body.dark-mode .modal .modal-header,body.dark-mode .modal .modal-header[class*=bg-]{border-color:#303247;background-color:#242436}body.dark-mode .modal .modal-header .close span,body.dark-mode .modal .modal-header[class*=bg-] .close span{color:hsla(0,0%,100%,.5)}body.dark-mode .modal .modal-body,body.dark-mode .modal .modal-content,body.dark-mode .modal .modal-footer{background-color:#28283c}body.dark-mode .modal-backdrop{background-color:rgba(34,41,47,.5)}body.dark-mode .pagination:not([class*=pagination-]) .page-item.active{background-color:#2c2c43}body.dark-mode .pagination:not([class*=pagination-]) .page-item.active .page-link:hover{color:#fff}body.dark-mode .pagination:not([class*=pagination-]) .page-item .page-link{background-color:#2c2c43;color:#a8a9bb}body.dark-mode .pagination:not([class*=pagination-]) .page-item.next-item .page-link:hover,body.dark-mode .pagination:not([class*=pagination-]) .page-item.prev-item .page-link:hover{color:#fff}body.dark-mode .pagination[class*=pagination-] .page-item:not(.active):not(:hover) .page-link{background-color:#1e1e2d;color:#a8a9bb}body.dark-mode .pagination[class*=pagination-] .page-item:not(.active) .page-link:hover{background-color:#2c2c43}body.dark-mode .pagination[class*=pagination-] .page-item.active{background-color:#223}body.dark-mode .nav .nav-item .nav-link{color:#a8a9bb}body.dark-mode .popover[x-placement=top] .arrow:after{border-top-color:#223}body.dark-mode .popover[x-placement=bottom] .arrow:after{border-bottom-color:#223}body.dark-mode .popover[x-placement=left] .arrow:after{border-left-color:#223}body.dark-mode .popover[x-placement=right] .arrow:after{border-right-color:#223}body.dark-mode .popover .popover-body{background-color:#223;color:#a8a9bb}body.dark-mode .nav.nav-tabs{border-color:#444865}body.dark-mode .nav-theme-primary .nav.nav-tabs,body.dark-mode .nav-theme-white .nav.nav-tabs{background-color:#223}body.dark-mode .nav-theme-primary .nav.nav-tabs .nav-item .nav-link:not(.active),body.dark-mode .nav-theme-white .nav.nav-tabs .nav-item .nav-link:not(.active){color:#9d9eb2}body.dark-mode .nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active,body.dark-mode .nav-theme-white .nav.nav-tabs .nav-item .nav-link.active{color:#4e9876}body.dark-mode .nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active:after,body.dark-mode .nav-theme-white .nav.nav-tabs .nav-item .nav-link.active:after{background:linear-gradient(30deg,#4e9876,rgba(78,152,118,.5))!important}body.dark-mode .table-responsive[data-pattern=priority-columns]::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .table-responsive[data-pattern=priority-columns]::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .table-responsive[data-pattern=priority-columns]::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .table-wrapper{margin-top:12px!important}body.dark-mode .table.default-table td,body.dark-mode .table.default-table th{border-color:#303247!important}body.dark-mode .table.default-table th,body.dark-mode table.table-bordered.dataTable.complex-headers th{background:#26263a}body.dark-mode .table.default-table td,body.dark-mode table.table-bordered.dataTable.complex-headers td{background:#2a2a40}body.dark-mode .table{background-color:#223;padding:0 1rem}body.dark-mode .table td,body.dark-mode .table th{border-color:#303247}body.dark-mode .table .thead tr:not([class*=table-]) td,body.dark-mode .table .thead tr:not([class*=table-]) th,body.dark-mode .table tbody tr:not([class*=table-]) td,body.dark-mode .table tbody tr:not([class*=table-]) th{border:0;color:#a8a9bb}body.dark-mode .table .thead tr:not([class*=table-]) td code,body.dark-mode .table .thead tr:not([class*=table-]) th code,body.dark-mode .table tbody tr:not([class*=table-]) td code,body.dark-mode .table tbody tr:not([class*=table-]) th code{background-color:#223}body.dark-mode .table thead tr th{border:0;background-color:#223;color:#a8a9bb}body.dark-mode .table tbody tr{background:#2c2c43!important}body.dark-mode .table tbody tr[class*=table-] td,body.dark-mode .table tbody tr[class*=table-] th{background-color:unset;color:#22292f;border-color:#303247}body.dark-mode .table tbody tr.table-dark td,body.dark-mode .table tbody tr.table-dark th{color:#fff}body.dark-mode .table tbody tr.table-active td,body.dark-mode .table tbody tr.table-active th{color:#a8a9bb}body.dark-mode .table tbody tr th{background-color:#2c2c43}body.dark-mode .table tbody tr td{background-color:#2c2c43;color:#a8a9bb}body.dark-mode .table.table-bordered,body.dark-mode .table.table-bordered tbody tr td,body.dark-mode .table.table-bordered tbody tr th,body.dark-mode .table.table-bordered thead tr td,body.dark-mode .table.table-bordered thead tr th{border:1px solid #303247}body.dark-mode .table.table-hover tbody tr:hover{background-color:#223}body.dark-mode .table.table-hover tbody tr td,body.dark-mode .table.table-hover tbody tr th{background-color:unset}body.dark-mode .table.table-striped tbody tr:nth-of-type(odd){background-color:#223}body.dark-mode .table.table-striped tbody tr td,body.dark-mode .table.table-striped tbody tr th{background-color:unset}body.dark-mode .table.table-bordered{padding:0}body.dark-mode .box,body.dark-mode .card{background:#223}body.dark-mode .box.box-solid.box-default{background-color:#2c2c43}body.dark-mode .box-header.with-border,body.dark-mode .box.box-solid.box-default,body.dark-mode .card.dcat-box .card-header,body.dark-mode .dd-handle,body.dark-mode .with-border{border-bottom:1px solid #303247;border-color:#303247!important}body.dark-mode .box .box-footer,body.dark-mode .card .box-footer{border-color:#303247}body.dark-mode .dd-handle{background:#2a2a3f;color:#a8a9bb;margin-bottom:2px}body.dark-mode .dd-item>button:before{color:#a8a9bb}body.dark-mode .input-group-addon,body.dark-mode .input-group-append,body.dark-mode .input-group-prepend,body.dark-mode .input-group-text{background-color:#2c2c43;border-color:#303247;color:#a8a9bb!important}body.dark-mode input::-webkit-input-placeholder{color:#9a9bb0!important}body.dark-mode input::-moz-placeholder{color:#9a9bb0!important}body.dark-mode input:-ms-input-placeholder{color:#9a9bb0!important}body.dark-mode .help-block{color:#a4a5b8!important}body.dark-mode .has-error .checkbox,body.dark-mode .has-error .checkbox-inline,body.dark-mode .has-error.checkbox label,body.dark-mode .has-error .control-label,body.dark-mode .has-error .form-control-position i,body.dark-mode .has-error .form-control:focus~.form-control-position i,body.dark-mode .has-error .help-block,body.dark-mode .has-error .radio,body.dark-mode .has-error .radio-inline,body.dark-mode .has-error.radio label{color:#bd4147!important}body.dark-mode .select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .form-control,body.dark-mode .select2-container--default .select2-selection--multiple,body.dark-mode .select2-container--default .select2-selection--single{background:#2c2c43;color:#a8a9bb!important;border-color:#303247!important}body.dark-mode .select2-container--default .select2-search--inline .select2-search__field,body.dark-mode .select2-container--default .select2-selection--single .select2-selection__rendered{color:#a8a9bb!important}body.dark-mode .select2-container--default .select2-search--dropdown .select2-search__field{background:#2c2c43!important;color:#a8a9bb!important}body.dark-mode .select2-container--default .select2-search--dropdown .select2-search__field,body.dark-mode .select2-container--default .select2-selection--multiple{border-color:#303247!important}body.dark-mode .select2-container--default .select2-results>.select2-results__options,body.dark-mode .select2-dropdown{background:#223!important}body.dark-mode .select2-container--default .select2-results__option--highlighted[aria-selected],body.dark-mode .select2-container--default .select2-results__option[aria-selected=true]{background:#1e1e2d!important;color:#a8a9bb!important}body.dark-mode .table-filter .form-control{background:#223;color:#a8a9bb}body.dark-mode .form-divider{border-color:#303247}body.dark-mode .form-divider span{background-color:#223}body.dark-mode .form-control:disabled,body.dark-mode .form-control[readonly],body.dark-mode .select2-container--default.select2-container--disabled .select2-selection--multiple,body.dark-mode .select2-container--default.select2-container--disabled .select2-selection--single{background-color:#28283d!important}body.dark-mode .layui-layer-page .layui-layer-content::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .layui-layer-page .layui-layer-content::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .layui-layer-page .layui-layer-content::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .layui-layer{background-color:#242436!important}body.dark-mode .layui-layer-page .layui-layer-btn,body.dark-mode .layui-layer-page .layui-layer-content{background-color:#28283c!important}body.dark-mode .layui-layer-title{background-color:#242436!important;border-bottom:1px solid #303247!important;color:#a8a9bb!important}body.dark-mode .layui-layer-btn1{border-color:#223!important;background:#223!important}body.dark-mode .layui-layer-setwin .layui-layer-close1:before,body.dark-mode .layui-layer-setwin .layui-layer-max:before,body.dark-mode .layui-layer-setwin .layui-layer-min cite:before{color:#a8a9bb!important}body.dark-mode .web-uploader .placeholder{border-width:2px;border-color:#9495ab!important}body.dark-mode .web-uploader .filelist li{background:#223!important}body.dark-mode .web-uploader .queueList{border-color:#303247!important}body.dark-mode .web-uploader .filelist li p.title,body.dark-mode .web-uploader .statusBar .info{color:#a8a9bb!important}body.dark-mode .slider-panel{background-color:#242436}body.dark-mode .right-side-filter-container .header{border-color:#303247;background-color:#242436}body.dark-mode .swal2-popup{background:#223}body.dark-mode .swal2-popup h2{color:#a8a9bb}body.dark-mode .swal2-content{color:#a4a5b8}body.dark-mode .quick-create td{background-color:#28283c!important;color:#9a9bb0}body.dark-mode .iconpicker .iconpicker-items::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .iconpicker .iconpicker-items::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .iconpicker .iconpicker-items::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .iconpicker-popover.popover,body.dark-mode .iconpicker-popover.popover .popover-title,body.dark-mode .iconpicker .iconpicker-items{background:#223!important;border-color:#303247!important}body.dark-mode .iconpicker-popover.popover.bottom>.arrow:after,body.dark-mode .iconpicker-popover.popover.bottomLeft>.arrow:after,body.dark-mode .iconpicker-popover.popover.bottomRight>.arrow:after,body.dark-mode .iconpicker-popover.popover .popover-title{border-color:#223}body.dark-mode .alert.alert-danger h3,body.dark-mode .alert.alert-danger h4,body.dark-mode .alert.alert-danger h5{color:#ea5455}body.dark-mode .alert.alert-success h3,body.dark-mode .alert.alert-success h4,body.dark-mode .alert.alert-success h5{color:#21b978}body.dark-mode .alert.alert-info h3,body.dark-mode .alert.alert-info h4,body.dark-mode .alert.alert-info h5{color:#4277cf}body.dark-mode .alert.alert-primary h3,body.dark-mode .alert.alert-primary h4,body.dark-mode .alert.alert-primary h5{color:#458769}body.dark-mode .alert.alert-warning h3,body.dark-mode .alert.alert-warning h4,body.dark-mode .alert.alert-warning h5{color:#d9993c}body.dark-mode .callout{background:#26263a;border-color:#8e9aac}body.dark-mode .callout h3,body.dark-mode .callout h4,body.dark-mode .callout h5{color:#b6b7c6}body.dark-mode .apexcharts-legend-series .apexcharts-legend-text{color:#a8a9bb!important}body.dark-mode .apexcharts-radialbar-track path{stroke:#2c2c43}body.dark-mode .apexcharts-inner polygon{stroke:#223!important;fill:#2c2c43!important}body.dark-mode .apexcharts-pie-series path{stroke:#2c2c43}body.dark-mode .apexcharts-menu{background-color:#2c2c43;border:0}body.dark-mode .apexcharts-toolbar .apexcharts-menu-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-reset-zoom-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-zoom-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-zoom-in-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-zoom-out-icon:hover svg{fill:#a8a9bb}body.dark-mode .login-page{background-color:#2c2c43!important}body.dark-mode .login-card-body,body.dark-mode .register-card-body{background-color:#223;color:#a8a9bb}body.dark-mode .grid-selector .wrap{background-color:#223}body.dark-mode .grid-selector .select-label{color:#9a9bb0}body.dark-mode .grid-selector ul>li a{color:#a8a9bb}body.dark-mode .grid-selector .select-options a.active{color:#4e9876}body.dark-mode .switchery{background-color:#b3b4c4!important;border-color:#b3b4c4!important;box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)}body.dark-mode .switchery>small{background-color:#c5c5d1!important}body.dark-mode .dropdown-menu li.checkbox-row:hover{background-color:#1e1e2d!important}body.dark-mode .dcat-step .dcat-step-title{color:#a8a9bb}body.dark-mode .dcat-step .active>.dcat-step-item-container>.dcat-step-content>.dcat-step-title,body.dark-mode .dcat-step .done>.dcat-step-item-container>.dcat-step-content>.dcat-step-title{color:#bfc0cd}body.dark-mode .dcat-step .dcat-step-icons{border-color:#b3b4c4}body.dark-mode .dcat-step .dcat-step-icons>.dcat-step-icon{color:#b3b4c4}body.dark-mode .dcat-step .dcat-step-title:after{background-color:#a8a9bb}body.dark-mode .dcat-step .active>.dcat-step-item-container>.dcat-step-content>.dcat-step-title:after{background-color:#b3b4c4}body.dark-mode .dcat-step .done .dcat-step-icons{background-color:transparent;border-color:#4e9876}body.dark-mode .dcat-step .done .dcat-step-icons>.dcat-step-icon{color:#4e9876}body.dark-mode .dcat-done-step .st-title{color:#cacbd6}body.dark-mode .dcat-done-step .st-desc{color:#a8a9bb}body.dark-mode .table-main::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .table-main::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .table-main::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .table-fixed-left .table{box-shadow:6px 0 5px -5px #000}body.dark-mode .table-fixed-right .table{box-shadow:-5px 0 5px -5px #000}body.dark-mode [class*=sidebar-dark-]{background-image:none;background-color:#223!important}body.dark-mode [class*=sidebar-dark-] .navbar-header{background:#1e1e2d}body.dark-mode [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-treeview{background:transparent}body.dark-mode [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link.active,body.dark-mode [class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active,body.dark-mode [class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:focus,body.dark-mode [class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:hover{background:#1e1e2d}body.dark-mode [class*=sidebar-dark-] .nav-treeview.nav .nav-item .nav-link.active{padding:10px 10px 10px 25px!important}body.dark-mode .main-menu .navbar-header .navbar-brand{margin-top:.5rem}body.dark-mode:not(.sidebar-separate) .main-sidebar .sidebar{margin-top:1rem}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/css/dcat-app.css",
    "content": "#nprogress{pointer-events:none}#nprogress .bar{background:rgba(88,108,177,.8);position:fixed;z-index:999999;top:0;left:0;width:100%;height:2.5px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #586cb1,0 0 5px #586cb1;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:75px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#586cb1 transparent transparent #586cb1;border-style:solid;border-width:2px;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.swal2-title{font-weight:400!important}.swal2-actions .btn{padding:.5rem 1.5rem!important}.swal2-container{z-index:89891015!important}html{font-size:14px;height:100%;letter-spacing:.01rem}html body{background-color:#eff1f7;color:#414750}.body-bg,.content-wrapper{background:#eff1f7}body::-webkit-scrollbar{width:10px;height:10px}body::-webkit-scrollbar-track{background-color:#eee}body::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.table-main::-webkit-scrollbar{width:10px;height:10px}.table-main::-webkit-scrollbar-track{background-color:#eee}.table-main::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.table-responsive::-webkit-scrollbar{width:10px;height:10px}.table-responsive::-webkit-scrollbar-track{background-color:#eee}.table-responsive::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar{width:10px;height:10px}.select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-track{background-color:#eee}.select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.layui-layer-page .layui-layer-content::-webkit-scrollbar{width:10px;height:10px}.layui-layer-page .layui-layer-content::-webkit-scrollbar-track{background-color:#eee}.layui-layer-page .layui-layer-content::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.iconpicker .iconpicker-items::-webkit-scrollbar{width:10px;height:10px}.iconpicker .iconpicker-items::-webkit-scrollbar-track{background-color:#eee}.iconpicker .iconpicker-items::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.breadcrumb,.h1,.h2,.h3,.h4,.h5,.h6,.header-navbar,.navigation,body,h1,h2,h3,h4,h5,h6{font-family:Nunito,Montserrat,system-ui,BlinkMacSystemFont,-apple-system,sans-serif}li{list-style-type:none}.text-primary-darker{color:#4c60a3!important}.text-danger-darker{color:#bd4147!important}.text-blue-darker{color:#236bb0!important}.text-custom{color:#59a9f8!important}.text-pink{color:#ff8acc!important}.text-yellow{color:#edc30e!important}.text-light{color:#f7f7f9!important}.text-white50{color:hsla(0,0%,100%,.5)!important}.text-orange{color:#dda451!important}.text-orange-1{color:#ffcc80!important}.text-orange-2{color:#f99037!important}.text-blue-1{color:#007ee5!important}.text-blue-2{color:#4199de!important}.text-cyan{color:#7367f0!important}.text-tear{color:#01847f!important}.text-tear-1{color:#00b5b5!important}.text-gray{color:#b9c3cd!important}.text-20{color:#f6fbff!important}.text-30{color:#f4f7fa!important}.text-35{color:#e7eef7!important}.text-40{color:#ebf0f3!important}.text-50{color:#d3dde5!important}.text-60{color:#bacad6!important}.text-70{color:#b3b9bf!important}.text-80{color:#7c858e!important}.text-85{color:#5c7089!important}.bg-custom{background:#59a9f8!important}.bg-pink{background:#ff8acc!important}.bg-yellow{background:#edc30e!important}.bg-light{background:#f7f7f9!important}.bg-white50{background:hsla(0,0%,100%,.5)!important}.bg-orange{background:#dda451!important}.bg-orange-1{background:#ffcc80!important}.bg-orange-2{background:#f99037!important}.bg-blue-1{background:#007ee5!important}.bg-blue-2{background:#4199de!important}.bg-cyan{background:#7367f0!important}.bg-tear{background:#01847f!important}.bg-tear-1{background:#00b5b5!important}.bg-default{background:#d2d6de!important}.bg-gray{background:#b9c3cd!important}.bg-20{background:#f6fbff!important}.bg-30{background:#f4f7fa!important}.bg-35{background:#e7eef7!important}.bg-40{background:#ebf0f3!important}.bg-50{background:#d3dde5!important}.bg-60{background:#bacad6!important}.bg-70{background:#b3b9bf!important}.bg-80{background:#7c858e!important}.bg-primary-gradient{background-image:linear-gradient(60deg,#586cb1,0,#697bb9 37%,#97a3ce 65%,#a4afd5)}.shadow-0{box-shadow:none!important}.shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.05)!important}.shadow-100{box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05)!important}.shadow-200{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important}.font-sm-1{font-size:.7rem!important}.font-sm-2{font-size:.8rem!important}.font-sm-3{font-size:.9rem!important}.font-md-1{font-size:1.1rem!important}.font-md-2{font-size:1.2rem!important}.font-md-3{font-size:1.3rem!important}.font-md-4{font-size:1.4rem!important}.font-md-5{font-size:1.5rem!important}.font-lg-1{font-size:2rem!important}.font-lg-2{font-size:3rem!important}.font-lg-3{font-size:4rem!important}.font-lg-4{font-size:5rem!important}.font-lg-5{font-size:6rem!important}.font-w-300{font-weight:300}.font-w-400{font-weight:400}.font-w-500{font-weight:500}.font-w-600{font-weight:600}.font-w-700{font-weight:700}.mt-1-5{margin-top:1.5rem!important}.mb-1-5{margin-bottom:1.5rem!important}.ml-1-5{margin-left:1.5rem!important}.mr-1-5{margin-right:1.5rem!important}.pt-1-5{padding-top:1.5rem!important}.pb-1-5{padding-bottom:1.5rem!important}.pl-1-5{padding-left:1.5rem!important}.pr-1-5{padding-right:1.5rem!important}.text-italic{font-style:italic}.text-highlight{padding:4px 6px}.pin,.pin-y{top:0;bottom:0}.pin{right:0;left:0}.icon-bg-circle{color:#fff;padding:.5rem;border-radius:50%}.icon-left,.icon-right{margin-right:.5rem}.icon-spin{display:inline-block;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}.hidden{display:none;visibility:hidden}.round{border-radius:1.5rem}.square{border-radius:0}.icon-line-height{line-height:1.5rem!important}.spinner{display:inline-block;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}button:focus{outline:none}.overflow-x-auto{overflow-x:auto!important}.overflow-y-auto{overflow-y:auto!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{line-height:1.3}.content .content-wrapper{padding:7rem 2.5rem 0}.navbar-fixed-top .content-wrapper{padding-top:6.4rem}.full-page .content .content-wrapper{padding:0;margin-left:0!important}dl,ol,ul{margin-bottom:0}.btn{padding:.54rem 1.2rem!important;height:34px;line-height:1.2;border-radius:.2rem;cursor:pointer;box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn.btn-trans{box-shadow:none}.btn-trans.btn-primary{background-color:#e3e6f2;border-color:#e3e6f2;color:#586cb1}.btn-shadow.btn,.btn:focus,.btn:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn-shadow.btn:focus,.btn-shadow.btn:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)}.btn-group-sm>.btn,.btn-lg,.btn-sm{border-radius:.2rem}.btn-primary{color:#fff}.btn-sm,.btn-xs{padding:.54rem .9rem!important}a.btn,span.btn{line-height:1.4}div.btn{line-height:1.3}.btn-group-sm>div.btn,.btn-group-sm>span.btn,div.btn.btn-sm,span.btn.btn-sm{line-height:1.2}.btn-group-sm>a.btn,a.btn-sm{line-height:1.1}.btn-warning,.btn.btn-warning.active,.btn.btn-warning:focus,.btn.btn-warning:hover{color:#fff}.btn-group-sm>.btn,.btn-sm{font-size:12px;line-height:1.1;height:30px}.btn-default{background:#fff;border-color:#fff}.btn-default.active,.btn-default:focus,.btn-default:hover{background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05)}.btn-group{box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn-group .btn:not(.btn-white):hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05)}.btn-group .btn{box-shadow:none!important}.btn-group.btn-shadow{box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065)}.btn-custom{color:#2a2e30;background-color:#59a9f8;border-color:#59a9f8;color:#fff}.btn-custom:hover{color:#fff;background-color:#48a0f7;border-color:#48a0f7}.btn-custom.focus,.btn-custom:focus{box-shadow:0 0 0 .2rem rgba(82,151,218,.5)}.btn-custom.disabled,.btn-custom:disabled{color:#2a2e30;background-color:#59a9f8;border-color:#59a9f8}.btn-custom:not(:disabled):not(.disabled).active,.btn-custom:not(:disabled):not(.disabled):active,.show>.btn-custom.dropdown-toggle{color:#fff;background-color:#419cf7;border-color:#419cf7}.btn-custom:not(:disabled):not(.disabled).active:focus,.btn-custom:not(:disabled):not(.disabled):active:focus,.show>.btn-custom.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,151,218,.5)}.btn-outline-custom,.btn-outline-custom:hover{color:#59a9f8;border-color:#59a9f8}.btn-outline-custom:hover{background-color:rgba(89,169,248,.1)}.btn-outline-custom.focus,.btn-outline-custom:focus{box-shadow:0 0 0 .2rem rgba(89,169,248,.5)}.btn-outline-custom.disabled,.btn-outline-custom:disabled{color:#59a9f8;background-color:transparent}.btn-outline-custom:not(:disabled):not(.disabled).active,.btn-outline-custom:not(:disabled):not(.disabled):active,.show>.btn-outline-custom.dropdown-toggle{color:#2a2e30;background-color:#59a9f8;border-color:#59a9f8}.btn-outline-custom:not(:disabled):not(.disabled).active:focus,.btn-outline-custom:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-custom.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(89,169,248,.5)}.btn-cyan{color:#fff;background-color:#7367f0;border-color:#7367f0}.btn-cyan:hover{color:#fff;background-color:#6457ee;border-color:#6457ee}.btn-cyan.focus,.btn-cyan:focus{box-shadow:0 0 0 .2rem rgba(136,126,242,.5)}.btn-cyan.disabled,.btn-cyan:disabled{color:#fff;background-color:#7367f0;border-color:#7367f0}.btn-cyan:not(:disabled):not(.disabled).active,.btn-cyan:not(:disabled):not(.disabled):active,.show>.btn-cyan.dropdown-toggle{color:#fff;background-color:#5e50ee;border-color:#5e50ee}.btn-cyan:not(:disabled):not(.disabled).active:focus,.btn-cyan:not(:disabled):not(.disabled):active:focus,.show>.btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(136,126,242,.5)}.btn-outline-cyan,.btn-outline-cyan:hover{color:#7367f0;border-color:#7367f0}.btn-outline-cyan:hover{background-color:rgba(115,103,240,.1)}.btn-outline-cyan.focus,.btn-outline-cyan:focus{box-shadow:0 0 0 .2rem rgba(115,103,240,.5)}.btn-outline-cyan.disabled,.btn-outline-cyan:disabled{color:#7367f0;background-color:transparent}.btn-outline-cyan:not(:disabled):not(.disabled).active,.btn-outline-cyan:not(:disabled):not(.disabled):active,.show>.btn-outline-cyan.dropdown-toggle{color:#fff;background-color:#7367f0;border-color:#7367f0}.btn-outline-cyan:not(:disabled):not(.disabled).active:focus,.btn-outline-cyan:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(115,103,240,.5)}.btn.btn-default,.btn.btn-white{color:#414750;box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065);background:#fff}.btn.btn-white.btn-primary,.btn.btn-white.btn-primary:focus,.btn.btn-white.btn-primary:hover{color:#fff!important}.btn-white.active,.btn-white:focus,.btn-white:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important}.btn-light{border-color:#dbe3e6!important;background-color:#fff!important;color:#444;box-shadow:none}.btn-light:focus,.btn-light:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important;color:#444!important}.btn-secondary{border-color:#e4eaee!important;background-color:#f4f4f4!important;color:#414750!important;box-shadow:none}.btn-secondary:focus,.btn-secondary:hover{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)!important}.btn-flat-danger,.btn-flat-dark,.btn-flat-info,.btn-flat-primary,.btn-flat-success,.btn-flat-warning,.btn-no-shadow,.btn-outline-danger,.btn-outline-dark,.btn-outline-info,.btn-outline-primary,.btn-outline-success,.btn-outline-warning{box-shadow:none}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.5rem .7rem}.btn:not(.btn-sm) .spinner-grow,a:not(.btn) .spinner-grow{margin-bottom:.15rem}.btn-outline{background-color:transparent}.btn-primary.btn-outline{color:#586cb1;border-color:#586cb1}.btn-info.btn-outline{color:#4277cf;border-color:#4277cf}.btn-success.btn-outline{color:#21b978;border-color:#21b978}.btn-danger.btn-outline{color:#ea5455;border-color:#ea5455}.btn-warning.btn-outline{color:#dda451;border-color:#dda451}.btn-primary.btn-outline.disabled,.btn-primary.btn-outline:disabled{background:transparent}.btn-danger.btn-outline.active,.btn-danger.btn-outline:hover,.btn-info.btn-outline.active,.btn-info.btn-outline:hover,.btn-success.btn-outline.active,.btn-success.btn-outline:hover,.btn-warning.btn-outline.active,.btn-warning.btn-outline:hover{color:#fff}.btn-primary.btn-outline.active,.btn-primary.btn-outline:hover{background:rgba(88,108,177,.05);color:#586cb1}.number-group .input-group-btn:first-child .btn{border-bottom-right-radius:0;border-top-right-radius:0;border-right:0}.number-group .input-group-btn:last-child .btn{border-bottom-left-radius:0;border-top-left-radius:0}.header-navbar.navbar-shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.header-navbar.floating-nav{margin:1.3rem 2.2rem 0}.navbar-container{height:60px}.navbar-light{background-color:#fff}.dark-mode-switcher{margin:0 5px 0 0;font-size:1.5rem;cursor:pointer}.breadcrumb{border-left:0}.content-header{padding:0 0 2px}.breadcrumbs-top{margin-bottom:1rem}.content-header h1{font-weight:400;font-size:24px;display:inline-block;font-family:Montserrat,Nunito,sans-serif}.content-header h1 small{font-size:15px;display:inline-block;padding-left:5px;color:#777}.custom-data-table-header .table-responsive .top{display:flex;justify-content:space-between;padding:0 1rem}.custom-data-table-header .table-responsive .top .action-btns{margin-top:1.5rem;display:flex}.custom-data-table-header .table-responsive .top .action-btns .actions-dropodown{box-shadow:0 2px 8px 0 rgba(0,0,0,.14);border-radius:.3rem;margin-right:.75rem}.custom-data-table-header .table-responsive .top .action-btns .actions-dropodown .dropdown-toggle{font-size:1.125rem;font-weight:500}.custom-data-table-header .table-responsive .top .action-btns .actions-dropodown .dropdown-toggle:after{left:0}.custom-data-table-header .table-responsive .top .action-btns .dt-buttons .btn{padding:.9rem .938rem}.table-responsive .table-filter{display:inline-block}.table-filter .form-control{padding:1.25rem 2.8rem!important;border-radius:5rem;border:0;background:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);font-size:.82rem}.table-filter label{position:relative}.table-filter label:after{content:\"\\E8BD\";font-family:feather;position:absolute;top:.45rem;font-size:1.1rem;left:1.1rem;font-weight:300;color:#b3b9bf}table.custom-data-table.data-table{border-spacing:0 .8rem;padding:0}table.custom-data-table tbody tr{background:#fff}table.data-table{border-collapse:separate!important}table.custom-data-table.data-table thead th{padding:.714rem .51rem;font-weight:600;border-bottom:0;border-top:0}table.custom-data-table.data-table thead th input:focus{outline:0}table.custom-data-table.data-table thead th:first-child{padding-left:.9rem}table.custom-data-table.data-table tbody tr{background-color:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);cursor:pointer;transition:all .3s ease;border-radius:.3rem}table.custom-data-table.data-table tbody tr:hover{background:#f8fafc}table.custom-data-table.data-table tbody tr td:first-child{padding-left:1rem;border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}table.custom-data-table.data-table tbody tr td:last-child{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}table.custom-data-table.data-table tbody tr.selected td{border-radius:0}table.custom-data-table.data-table tbody td{border:none;vertical-align:middle;height:60px;padding:.55rem;line-height:1.42857}table.custom-data-table.data-table tbody td:focus,table.custom-data-table.data-table tbody td input:focus{outline:0}table.custom-data-table.data-table tbody td .progress{margin-bottom:0;box-shadow:0 4px 8px 0 rgba(0,0,0,.12),0 2px 4px 0 rgba(0,0,0,.08)}.form-control{border-color:#dbe3e6;color:#414750}.form-control:not(textarea){padding:.5rem .7rem;font-size:.9rem}div.form-control,input.form-control{min-height:34px;border-radius:.25rem}.input-group-text{border-color:#dbe3e6}.form-control-sm{padding:.5rem 1.5rem}select.form-control:not([multiple=multiple]){background-image:none}.form-control-sm,.input-group-sm>.custom-select,.input-group-sm>.form-control{line-height:13px}.input-group-sm>div.form-control,.input-group-sm>input.form-control,div.form-control-sm,input.form-control-sm{max-height:30px;min-height:30px}.input-group .form-control{height:100%}.input-group-text{padding:.6rem .9rem;border-radius:.25rem}.help-block{display:block;margin-top:7px;margin-bottom:3px;color:#737373}.control-label{padding-top:10px;padding-right:5px;margin-bottom:0;font-size:1rem;text-transform:capitalize}.fields-group .row.form-group{margin-right:0;margin-left:0}@media (min-width:768px){.form-group .control-label{text-align:right}}.with-errors.help-block{margin-bottom:4px}.form-control:disabled,.form-control[readonly],.select2-container--default.select2-container--disabled .select2-selection--multiple,.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#f7f7f9!important;cursor:not-allowed!important}.has-error .checkbox,.has-error .checkbox-inline,.has-error.checkbox label,.has-error .control-label,.has-error .form-control-position i,.has-error .form-control:focus~.form-control-position i,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.radio label{color:#bd4147}.control-label.asterisk:before{content:\"* \";font-weight:700;color:#bd4147}.form-group.has-error .form-control{border-color:#bd4147}.input-group-prepend .input-group-text{margin-right:-1px;max-height:34px}.input-group-addon{width:1%;white-space:nowrap;vertical-align:middle;padding:6px 12px;font-size:14px;font-weight:400;line-height:1;text-align:center;background-color:#fff;border:1px solid #dbe3e6;min-width:30px}.input-group-sm>.input-group-addon{height:30px;padding:5px 10px;font-size:.7rem;line-height:1.5}.select2-container--default .select2-search--dropdown .select2-search__field,.select2-container--default .select2-selection--multiple,.select2-container--default .select2-selection--single{border-color:#dbe3e6!important;border-radius:.25rem!important}.select2-search--inline{display:inline-block}.select2-container--default .select2-dropdown .select2-search__field:focus,.select2-container--default .select2-search--inline .select2-search__field:focus{border-color:#586cb1!important}.select2-container--classic .select2-selection--multiple .select2-selection__rendered li .select2-search__field,.select2-container--default .select2-selection--multiple .select2-selection__rendered li .select2-search__field{margin-top:8px}.input-group .select2-container{width:50%!important;flex:1 1 auto}.select2-container .select2-selection--multiple{min-height:34px!important}.select2-container--classic .select2-selection--single,.select2-container--default .select2-selection--single{min-height:34px;padding:5px;border:1px solid rgba(0,0,0,.2)}.select2-container--default .select2-selection--single .select2-selection__arrow{height:32px!important}.select2-dropdown{border:1px solid rgba(0,0,0,.03)!important;box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#f1f1f1!important}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#ebf0f3!important;color:#414750!important}.select2-results__option{padding:6px 10px!important}.select2-container--default .select2-selection--multiple .select2-selection__choice{padding:2px 5px!important;border:0!important;font-size:90%;background-color:#586cb1!important}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#fff!important;border-right:0!important}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:focus,.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{background-color:#586cb1!important}.select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .25rem!important}.select2-selection .default-text{display:inline-block;padding:.5rem .7rem 0}.select2-container--default .select2-selection--single .select2-selection__rendered{line-height:30px!important}.input-group-sm .select2-container--classic .select2-selection--single,.input-group-sm .select2-container--default .select2-selection--single{min-height:31px;padding:1px 2px;font-size:.7rem}.input-group-sm .select2-selection .default-text{padding:.3rem .5rem 0}.input-group-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered{padding:0 .4rem!important}.input-group-sm .select2-container--default .select2-selection--multiple{min-height:30px!important;padding:0 2px;font-size:.7rem;line-height:14px}.input-group-sm .select2-container--default .select2-selection--single .select2-selection__arrow{top:-3px}.input-group-sm .select2-container--classic .select2-selection--multiple .select2-selection__rendered li .select2-search__field,.input-group-sm .select2-container--default .select2-selection--multiple .select2-selection__rendered li .select2-search__field{margin-top:6px}.glyphicon-arrow-right:before{font-family:feather;content:\"\\E829\"}.glyphicon-arrow-left:before{font-family:feather;content:\"\\E828\"}.bootstrap-duallistbox-container .info{color:#414750!important}.has-icon-left .form-control-position{right:auto;left:inherit}.form-control-position{position:absolute;top:0;right:0;z-index:2;display:block;width:2.5rem;height:2.5rem;line-height:2.5rem;text-align:center}.has-icon-left .form-control{padding-right:2rem;padding-left:3rem}.form-divider{height:20px;border-bottom:1px solid #eee}.form-divider span{font-size:16px;background-color:#fff;padding:0 10px}.pagination .page-item .page-link{font-weight:600;font-size:.95rem;padding:.5rem .75rem}.pagination .page-item.disabled{opacity:.82}.table{color:#414750;margin-bottom:0}.table-middle td{vertical-align:middle}.table-text-center td,.table-text-center th{text-align:center}table.data-table thead tr{background:transparent}.table thead th{padding:.65rem;font-weight:600;text-transform:capitalize;font-size:.95rem!important;border-bottom:1px solid #f0f0f0}table.data-table tfoot td,table.data-table tfoot th,table.data-table thead td,table.data-table thead th{font-size:.9rem!important}table.data-table:not(.table-bordered) thead tr th{text-transform:capitalize}table.data-table{border:0}.table td{padding:.55rem;height:55px;line-height:1.42857;border-color:#f0f0f0}.table tr td:first-child,.table tr th:first-child{padding-left:2rem}.quick-search-clear{margin-left:-1.45rem;position:relative;color:#fff}.table-responsive{border:0!important;margin-bottom:0!important;overflow-x:inherit}.table-responsive[data-pattern=priority-columns]{overflow-y:auto!important}.custom-data-table-header .table-responsive{overflow:visible!important;padding-bottom:0!important}.sticky-table-header{z-index:45!important}table.table-bordered.data-table:not(.complex-headers) tbody th,table.table-bordered.data-table tbody td{border-bottom-width:1px}table.table-bordered.data-table td,table.table-bordered.data-table th:not(.complex-headers){border-left-width:1px}table.table-bordered.data-table td:last-child,table.table-bordered.data-table th:last-child{border-right-width:1px}table.data-table.complex-headers{border:1px solid #e4e4e4}table.data-table.complex-headers tfoot td,table.data-table.complex-headers tfoot th,table.data-table.complex-headers thead td,table.data-table.complex-headers thead th{border-bottom:1px solid #e4e4e4;border-right:1px solid #e4e4e4}.data-table.table-bordered:not(.complex-headers) thead th{border-right:1px solid #e2e8ec;border-bottom:1px solid #e2e8ec}.data-table.table-bordered:not(.complex-headers) tr:first-child th{border-top:1px solid #e2e8ec}.data-table.table-bordered:not(.complex-headers) thead tr th:first-child{border-left:1px solid #e2e8ec}table.table-bordered.data-table.complex-headers{border-spacing:0;margin-top:12px!important;box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}table.table-bordered.data-table.complex-headers thead th{vertical-align:middle;font-size:1rem!important}table.table-bordered.data-table.complex-headers tbody tr{box-shadow:none;border-radius:0}table.table-bordered.data-table.complex-headers tbody tr td{border-bottom:1px solid #eee;border-right:1px solid #eee}table.table-bordered.data-table.complex-headers tbody tr td:first-child{border-top-left-radius:0;border-bottom-left-radius:0}table.table-bordered.data-table.complex-headers tbody tr td:last-child{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}table.table-bordered.data-table.complex-headers tbody tr:last-child td{border-bottom:0}.table-hover tbody tr:hover{color:#414750;background-color:#f8fafc}.table.default-table tr{box-shadow:none!important}.table.default-table td{border-top:1px solid #f0f4f8!important;border-radius:0!important}.table.default-table thead th{border-bottom:2px solid #f0f4f8!important}.table.default-table.table-bordered td,.table.default-table.table-bordered th{border:1px solid #f0f4f8!important}.table-collapse .custom-data-table.data-table tbody tr td:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.table-collapse .custom-data-table.data-table tbody tr td:last-child{border-top-right-radius:0;border-bottom-right-radius:0}.table-collapse .custom-data-table.data-table tbody tr:first-child td:first-child{border-top-left-radius:.25rem}.table-collapse .custom-data-table.data-table tbody tr:first-child td:last-child{border-top-right-radius:.25rem}.table-collapse .custom-data-table.data-table tbody tr:last-child td:first-child{border-bottom-left-radius:.25rem}.table-collapse .custom-data-table.data-table tbody tr:last-child td:last-child{border-bottom-right-radius:.25rem}.table-collapse .table.custom-data-table{padding:3px 5px 5px}.table-collapse .table-fixed-left .table.custom-data-table{padding:3px 0 0 5px}.table-collapse .table-fixed-right .table.custom-data-table{padding:3px 5px 0 0}.table-collapse .table-fixed th{background:#ececf1}body:not(.dark-mode) .table-collapse{box-shadow:0 2px 4px 0 rgba(0,0,0,.05);background:#ececf1;margin-top:1rem}body:not(.dark-mode) .table-collapse .custom-data-table{border-spacing:0;margin-top:0!important;background-color:#ececf1}body:not(.dark-mode) .table-collapse table.custom-data-table thead th{height:38px;vertical-align:middle}body:not(.dark-mode) .table-collapse .custom-data-table tbody td{border-top:1px solid #eff3f8;height:60px}body:not(.dark-mode) .table-collapse .custom-data-table tbody tr:first-child td{border-top:0}body:not(.dark-mode) .table-collapse table.custom-data-table tbody tr{box-shadow:none}body:not(.dark-mode) .table-collapse .quick-create td{background:#f7f7f9!important;border-radius:0}body:not(.dark-mode) .table-collapse .table-wrap table.custom-data-table thead th{height:19px}body.dark-mode .table-collapse table{border-spacing:0 .24rem}body.dark-mode .table-collapse table.custom-data-table.data-table tbody td{height:56px}body.dark-mode .table-collapse .table.custom-data-table{padding:3px 10px 10px}body.dark-mode .table-collapse .table-fixed-left .table.custom-data-table{padding:3px 0 0 10px}body.dark-mode .table-collapse .table-fixed-right .table.custom-data-table{padding:3px 10px 0 0}.column-selector{margin:0 5px}.column-selector .dropdown-menu{z-index:100}.column-selector .selectors{padding:0 1rem;height:auto;max-height:500px;overflow-x:hidden}.column-selector .selectors::-webkit-scrollbar{width:10px;height:10px}.column-selector .selectors::-webkit-scrollbar-track{background-color:#eee}.column-selector .selectors::-webkit-scrollbar-thumb{background-color:#cacaca;border-radius:.4rem}.grid-column-header a{color:#a5acb3;font-size:1rem}.grid-column-header a.active,.grid-column-header a:hover{color:#4c60a3}.grid-sort{display:inline-block;margin:-2px -4px 0 3px;height:15px}.grid-sort .up:before{font-family:feather;padding-right:.3rem;font-size:.7rem;content:\"\\E845\"}.grid-sort .down{margin:6px 0 0 -1.17rem}.grid-sort .down:after{font-family:feather;content:\"\\E842\";font-size:.7rem}.dcat-box.card{margin-bottom:0}.dcat-box.card .card-header{border-bottom:0;padding:1.3rem 1.5rem;margin-bottom:.5rem}.dcat-box.card .card-body{padding:1rem 0 0}.dcat-box.card .box-footer{border:0;padding:1rem 1.5rem 1.3rem}.table-responsive.table-scrollbar-x{overflow-x:auto}.table-responsive.table-scrollbar-x .table{width:-webkit-max-content;width:-moz-max-content;width:max-content;min-width:100%}.right-side-filter-container .header{border-bottom:1px solid #f4f4f4;width:100%;background:#fff;z-index:10;top:0;margin-left:-1rem}.quick-create td{padding-left:45px;background-color:#f3f3f3;vertical-align:middle;height:42px;color:#777;border-bottom:#eff3f8}.grid-modal .modal-body{padding:1.5rem}.simple-grid .filter-box{background:transparent;box-shadow:none!important;margin:.5rem 0 -1rem!important;padding:0!important}.simple-grid .filter-box .form-group{margin-bottom:1rem}.simple-grid .dcat-box.card .card-header{padding:.8rem 0}.simple-grid .dcat-box.card .box-footer{padding:1rem 1.5rem 0}body:not(.dark-mode) .simple-grid .card{box-shadow:none}body:not(.dark-mode) .simple-grid .table-collapse{box-shadow:none;background:transparent}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table{background:transparent}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table.data-table tbody td{height:48px}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table.data-table thead th{height:20px}body:not(.dark-mode) .simple-grid .table-collapse .custom-data-table{padding:5px 0 0;border-bottom:1px solid #eff3f8}body:not(.dark-mode) .simple-grid .table-collapse table.data-table thead tr:last-child th{border-bottom:2px solid #eff3f8}.vs-checkbox-con.checkbox-grid-column input:disabled+.vs-checkbox{cursor:not-allowed;opacity:.33}.dropdown-menu{z-index:20}.dropdown .dropdown-menu{box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05);border:0;min-width:10rem;transform:none}.dropdown .dropdown-menu .dropdown-item:hover{background-color:#f4f7fa;color:#414750}.dropdown .dropdown-menu:before{border-top:1px solid rgba(0,0,0,.07);border-left:1px solid rgba(0,0,0,.07)}.dropdown i{margin-right:0}.dropdown .dropdown-menu .dropdown-item,.dropleft .dropdown-menu .dropdown-item,.dropright .dropdown-menu .dropdown-item,.dropup .dropdown-menu .dropdown-item{padding:0;color:#414750}.dropdown-item a,.dropdown-menu label{color:#414750}.dropdown-item a{padding:.35rem 1.38rem;display:block}.vs-checkbox-con{margin:0}.vs-checkbox-con input{z-index:5}.vs-checkbox-con .vs-checkbox{width:17px;height:17px}.vs-checkbox-con input:checked~.vs-checkbox .vs-checkbox--check .vs-icon{font-size:.95rem;margin-top:-1px}.vs-radio-con input{z-index:10}.card{box-shadow:0 2px 4px 0 rgba(0,0,0,.05);margin-bottom:1.5rem;border-radius:.25rem}.card .card-header{padding:1.1rem 1.1rem 0;align-items:center;display:flex;justify-content:space-between}.card-header.with-border{border-bottom:1px solid #f4f4f4;padding:1.1rem}.card-box-title{font-size:1.1rem}.card-title{font-size:1.2rem}.card-footer{background:transparent;border-color:#f4f4f4!important}.card-body,.card-footer{padding:1.1rem}.card-body .card-footer{padding:.8rem;margin:-1.1rem}.dd{margin:0!important}.dd-item>button:before{font-family:feather;content:\"\\E844\"!important;margin-top:3px}.dd-item>button[data-action=collapse]:before{content:\"\\E842\"!important}.dd-handle{border:1px solid #eaeff0!important;border-radius:.2rem!important}.layui-layer{box-shadow:0 2px 6px 0 rgba(0,0,0,.2)!important}.layui-layer-title{padding:0 80px 0 20px;height:52px!important;line-height:52px!important;border-bottom:1px solid #f4f4f4!important;font-size:1.1rem!important;text-transform:capitalize;overflow:hidden;background-color:#fff!important;border-radius:.25rem .25rem 0 0!important}.layui-layer-setwin .layui-layer-min cite{background:transparent!important;position:static!important}.layui-layer-setwin .layui-layer-min cite:before{font-family:feather;content:\"\\E897\";font-size:1.1rem;color:#414750}.layui-layer-ico{background:transparent!important;color:#414750}.layui-layer-setwin .layui-layer-max:before{font-family:feather;content:\"\\E908\";font-size:1rem}.layui-layer-setwin .layui-layer-maxmin:before{content:\"\\E88D\"}.layui-layer-setwin .layui-layer-close1:before{font-family:feather;content:\"\\E8F6\";font-size:1.1rem}.layui-layer-setwin .layui-layer-close1{margin-left:7px!important}.layui-layer-setwin a{top:3px}.layui-layer-tips,.layui-layer-tips .layui-layer-content{font-size:13px!important;box-shadow:none!important}.layui-layer-btn a{height:30px!important;line-height:20px!important;padding:4px 15px!important;font-size:.85rem;box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05);border-color:#fff!important}.layui-layer-btn .layui-layer-btn0{border-color:#586cb1!important;background-color:#586cb1!important;color:#fff!important}.layui-layer-border{border:0!important}.slider-panel{padding:0;background-color:#fff;position:fixed;top:0;bottom:0;height:100vh;height:calc(var(--vh, 1vh)*100);transition:right .4s cubic-bezier(.05,.74,.2,.99);-webkit-backface-visibility:hidden;backface-visibility:hidden;border-left:1px solid rgba(0,0,0,.05);box-shadow:0 0 5px 0 rgba(0,0,0,.05);width:450px;right:-450px;z-index:998}.slider-panel.open{right:0}.slider-panel .slider-content{position:relative;height:100%;width:450px}.slider-panel .slider-close{position:absolute;right:30px;top:20px;padding:7px;width:auto;z-index:10;color:#626262}.slider-panel .slider-close i{font-size:1.35rem}.slider-panel .slider-toggle{background:#586cb1;color:#fff;display:block;box-shadow:-3px 0 8px rgba(0,0,0,.1);border-top-left-radius:6px;border-bottom-left-radius:6px;position:absolute;top:50%;width:38px;height:38px;left:-39px;text-align:center;line-height:40px;cursor:pointer}@media (max-width:576px){.slider-panel{width:410px;right:-410px}.slider-panel .slider-content{width:410px}}.grid-selector{width:100%;margin-top:1rem}.grid-selector .wrap{position:relative;line-height:40px;border-bottom:1px dashed #eee;padding:0 25px;font-size:13px;overflow:auto}.grid-selector .select-label{float:left;width:100px;padding-left:10px;color:#888}.grid-selector .select-options{margin-left:100px}.grid-selector ul{height:25px;list-style:none}.grid-selector ul>li{margin-right:30px;float:left}.grid-selector ul>li a{color:#666;text-decoration:none}.grid-selector .select-options a.active{color:#4c60a3;font-weight:700}.grid-selector li .add{visibility:hidden}.grid-selector li:hover .add{visibility:visible}.grid-selector ul .clear{visibility:hidden}.grid-selector ul:hover .clear{color:#bd4147;visibility:visible}.grid-selector{padding:2px 0;margin:.35rem 0 -.5rem}.grid-selector .wrap{border-bottom:0;background:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);border-radius:.25rem;margin:7px 0}.simple-grid .grid-selector .wrap{box-shadow:none;border-radius:0;border-bottom:1px dashed #eff3f8}.box{position:relative;border-radius:.25rem;background:#fff;margin-bottom:10px;width:100%;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);display:flex;flex-direction:column}.box .box-footer,.card .box-footer{border-top:1px solid #f4f4f4}.box-header{padding:1rem;display:inherit;justify-content:space-between;align-items:center}.box-header .h3,.box-header h3{font-size:1.15rem;margin-bottom:0;padding:.1rem}.box-header.with-border,.card-header.with-border{border-bottom:1px solid #f4f4f4}.box,.panel{transition:.3s cubic-bezier(.25,.8,.5,1)}.box-shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.box.box-solid{border-top:0}.box-footer{display:inherit}.box-body,.box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px}.box-body .box-footer{margin:-10px}.box.box-solid.box-default{border:1px solid #e1e8ea;box-shadow:0 1px 1px rgba(0,0,0,.1)}.form-group .box{margin-bottom:0}.label{display:inline;padding:.24em .6em .34em;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;cursor:pointer}.badge,.label{font-size:87%;font-weight:600;color:#fff;margin-bottom:4px}.badge{min-width:10px;padding:5px 8px;border-radius:10px}.bg-default.badge,.label.bg-default{color:#414750;font-weight:700}.nav.nav-tabs .nav-item .nav-link.active:after{box-shadow:0 0 2px 0 rgba(88,108,177,.5)!important}.nav.nav-tabs .nav-item .nav-link{font-size:1rem;padding:17px 14px;text-transform:capitalize;letter-spacing:.045rem;color:rgba(0,0,0,.4);font-weight:700}.nav-vertical .nav.nav-tabs .nav-item .nav-link{padding:10px 25px}.nav-vertical .nav.nav-tabs .nav-item .nav-link.active:after{top:1.3rem;width:2.6rem;left:-17px;right:auto}.nav-vertical .nav.nav-tabs.nav-left{top:5px}.nav-vertical .nav.nav-tabs.nav-left~.tab-content .tab-pane{background-color:transparent}.nav-tabs .nav-item{margin-bottom:0}.nav.nav-tabs{border-bottom:1px solid #f4f4f4}.nav-vertical .nav.nav-tabs{border-bottom:0}.nav-vertical .nav-tabs.flex-column{border-right:0}.nav-vertical .nav-tabs.flex-column>li{border-bottom:0}.nav-theme-danger .nav.nav-tabs,.nav-theme-info .nav.nav-tabs,.nav-theme-primary .nav.nav-tabs,.nav-theme-success .nav.nav-tabs,.nav-theme-white .nav.nav-tabs{background:#586cb1;padding-left:10px;border-radius:.15rem;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);border-bottom:0}.nav-theme-danger .nav.nav-tabs .nav-item .nav-link,.nav-theme-info .nav.nav-tabs .nav-item .nav-link,.nav-theme-primary .nav.nav-tabs .nav-item .nav-link,.nav-theme-success .nav.nav-tabs .nav-item .nav-link,.nav-theme-white .nav.nav-tabs .nav-item .nav-link{color:hsla(0,0%,100%,.5)}.nav-theme-danger .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-info .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-success .nav.nav-tabs .nav-item .nav-link.active,.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active{color:#fff}.nav-theme-danger .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-info .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-success .nav.nav-tabs .nav-item .nav-link.active:after,.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active:after{background:#fff!important}.nav-theme-danger .nav-tabs .nav-item,.nav-theme-info .nav-tabs .nav-item,.nav-theme-primary .nav-tabs .nav-item,.nav-theme-success .nav-tabs .nav-item,.nav-theme-white .nav-tabs .nav-item{margin-bottom:2px}.nav-theme-success .nav.nav-tabs{background:#21b978}.nav-theme-info .nav.nav-tabs{background:#4277cf}.nav-theme-danger .nav.nav-tabs{background:#ea5455}.nav-theme-white .nav.nav-tabs{background:#fff}.nav-theme-white .nav.nav-tabs .nav-item .nav-link{color:rgba(0,0,0,.4)}.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active{color:#586cb1}.nav-theme-white .nav.nav-tabs .nav-item .nav-link.active:after{background:#586cb1!important}.main-menu .navbar-header{padding:.35rem 1rem 0}.main-menu .navbar-header .navbar-brand{margin-top:1.1rem}.main-menu .navbar-header .navbar-brand img{display:inline-block;max-width:45px;max-height:40px;margin-top:-1px}.main-menu .navbar-header .logo-mini{display:none;font-size:1.8rem;color:#4b5ea0}.main-menu .navbar-header .logo-lg{color:#4b5ea0;letter-spacing:.01rem;font-size:1.45rem;-webkit-animation:fadein .3s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards;animation:fadein .3s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards}.main-menu .navbar-header .nav-item{width:100%;text-align:center}.main-menu .navbar-header .navbar-brand{display:inline-block;margin:10px 0}.main-menu [class*=sidebar-dark-] .navbar-header .logo-lg,.main-menu [class*=sidebar-dark-] .navbar-header .logo-mini{color:#f7f7f7}.main-menu.menu-light .navigation>li.active>a{box-shadow:0 0 4px 1px rgba(88,108,177,.7)}.main-menu.menu-shadow{box-shadow:0 0 5px 0 rgba(0,0,0,.05)}body.sidebar-collapse .main-sidebar:not(:hover) .navbar-header{padding:.35rem 15px}body.sidebar-collapse .main-sidebar:not(:hover) .navbar-header .logo-lg{display:none}body.sidebar-collapse .main-sidebar:not(:hover) .navbar-header .logo-mini{display:inline-block}.main-sidebar .nav-sidebar .nav-item>.nav-link{font-size:1.04rem;border-radius:.1rem}.nav-pills .nav-link:not(.active):hover{color:#414750}[class*=sidebar-dark-] .navbar-header{padding:0 1rem;height:61px;background:#262d37}[class*=sidebar-dark-] .navbar-header .navbar-brand{margin:8px 0}[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active,[class*=sidebar-light-] .nav-treeview>.nav-item>.nav-link.active:hover{color:#4c60a3;background:none;box-shadow:0 0}.nav-treeview>.nav-item>.nav-link p i{margin-top:-5px}.sidebar-light-primary .nav-item>.nav-link.active{background:none;color:#4c60a3!important;font-weight:700;box-shadow:0 0}.nav-sidebar>.nav-item>.nav-treeview .nav-link p{font-size:14px}body.sidebar-separate .main-sidebar{top:6rem;left:1.5rem;text-align:center;background-color:#fff}body.sidebar-separate .navbar-header .logo-lg,body.sidebar-separate .navbar-header .logo-mini{color:#414750}body.sidebar-separate .navbar-header .navbar-brand{margin-top:1rem!important}body.sidebar-separate .header-navbar.fixed-top,body.sidebar-separate .sidebar-collapse .header-navbar.fixed-top{left:0}@media (min-width:768px){body.sidebar-separate .content-wrapper{margin-left:280px}}body.sidebar-separate .main-sidebar .nav-sidebar .nav-item>.nav-link{text-align:left}body.sidebar-separate.dark-mode [class*=sidebar-dark-] .navbar-header{background:unset!important;height:auto;padding:.35rem 1rem 0}.main-sidebar.sidebar-primary{background-color:#586cb1!important}.main-sidebar.sidebar-primary .nav-pills .nav-link:not(.active):hover,.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link,.main-sidebar.sidebar-primary .navbar-header .logo-lg,.main-sidebar.sidebar-primary .navbar-header .logo-mini,.main-sidebar.sidebar-primary .sidebar a{color:#fff}.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link.active,.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link:hover,.main-sidebar.sidebar-primary .nav.nav-pills .nav-item .nav-link.active{font-weight:700;border-bottom:1px solid #fff}.main-sidebar.sidebar-primary .nav-item>.nav-link i{margin-right:.71rem;font-size:1.2rem}.main-sidebar.sidebar-primary .nav-treeview>.nav-item>.nav-link i{margin-right:.65rem;margin-left:3px}.horizontal-menu .header-navbar.navbar-shadow{box-shadow:none;border-bottom:1px solid #ebeff2}.horizontal-menu .content-wrapper,.horizontal-menu .main-footer,.horizontal-menu .main-header{margin-left:0!important}.horizontal-menu .header-navbar{position:-webkit-sticky;position:sticky;top:0}.horizontal-menu .header-navbar.navbar-horizontal{top:60px;position:fixed}.horizontal-menu .main-horizontal-sidebar{top:60px;left:0;position:fixed;width:100%;height:inherit;min-height:auto;bottom:inherit;box-shadow:none}.horizontal-menu .main-horizontal-sidebar>div{box-shadow:0 2px 4px 0 rgba(0,0,0,.05);background:#fff}.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item.menu-open>.nav-link,.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item:hover>.nav-link,.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link:focus,.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item i{color:#414750}.horizontal-menu .nav-sidebar>.nav-item{padding-bottom:.6rem}.horizontal-menu .nav-sidebar>.nav-item .nav-link{color:#414750;font-size:1rem;padding:.45rem .7rem;transition:all .35s ease!important}.horizontal-menu .nav-sidebar>.nav-item .nav-link.dropdown-toggle:after{margin-top:0!important}.horizontal-menu .nav-sidebar>.nav-item .nav-link.active,.horizontal-menu .nav-sidebar>.nav-item .nav-link.active i{color:#586cb1!important;font-weight:600}.horizontal-menu .dropdown-menu .nav-item:hover>.nav-link{padding-left:1rem}.horizontal-menu .nav.nav-pills{margin-bottom:0}.horizontal-menu .nav.dropdown-menu{display:none;margin-top:-.2rem;min-width:200px}.horizontal-menu .open>.nav.dropdown-menu{display:block;-webkit-animation:fadein .8s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards;animation:fadein .8s cubic-bezier(.25,.8,.25,1) 0s 1 normal forwards}.horizontal-menu [class*=sidebar-light-]{background-color:transparent}.horizontal-menu [class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-treeview{background:#fff;border-radius:.4rem}.horizontal-menu .nav-sidebar>.nav-item>.nav-link i{margin-right:.35rem!important}.horizontal-menu .nav-pills .nav-link.active{background-color:transparent}.horizontal-menu .horizontal-navbar-brand{margin-top:-5px;display:none}.horizontal-menu .horizontal-navbar-brand .logo-lg{font-size:1.45rem}.horizontal-menu.navbar-fixed-top .content-wrapper{padding-top:75px}body.dark-mode.horizontal-menu .header-navbar.navbar-shadow{border-color:#303247}body.dark-mode.horizontal-menu [class*=sidebar-light-] .nav-sidebar>.nav-item>.nav-treeview{background:#223;border-radius:.4rem}body.dark-mode.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item i{color:#a8a9bb}body.dark-mode.horizontal-menu .main-horizontal-sidebar>div,body.dark-mode.horizontal-menu [class*=sidebar-dark-],body.dark-mode.horizontal-menu [class*=sidebar-light-]{background-color:#223}body.dark-mode.horizontal-menu [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link.active{background-color:transparent}body.dark-mode.horizontal-menu a.nav-link.active p{color:#586cb1!important}body.dark-mode.horizontal-menu [class*=sidebar-light-] .nav-sidebar>.nav-item:hover>.nav-link:not(.active){color:#fff}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm,.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal}}.alert{font-weight:500;border:none;padding:.85rem 1.2rem;border-radius:.25rem}.alert h4{color:inherit}.alert .close:focus{outline:0}.alert p{font-weight:500;padding:2px 0;margin-bottom:0}.alert p,.alert span{vertical-align:middle}.alert .alert-heading{font-weight:700;font-size:.9rem;padding:0 0 8px}.alert.alert-dark .alert-heading{box-shadow:0 6px 15px -7px rgba(34,41,47,.4)}.alert-danger{background-color:#f5e0e8;color:#ef5228;box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}.alert-success{background:rgba(33,185,120,.2);color:#1fb072;box-shadow:0 2px 4px 0 rgba(0,0,0,.12)}.alert-info{background:rgba(66,119,207,.2);color:#4277cf}.alert-info,.alert-primary{box-shadow:0 2px 4px 0 rgba(0,0,0,.17)}.alert-primary{background:rgba(88,108,177,.2);color:#4c60a3}.alert-warning{background-color:#f6f6eb;color:#d6922f;box-shadow:0 2px 4px 0 rgba(0,0,0,.09)}.callout{border-radius:.1rem;border:0;border-left:3.5px solid #9da7b7;background-color:#fff;margin-bottom:1rem;box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}.callout.callout-primary{border-left:3.5px solid #5f72b4}.callout.callout-light{background-color:#f7f7f9;box-shadow:none}code{box-shadow:0 1px 1px rgba(0,0,0,.125);padding:3px 5px;background:#f7f7f9;color:#475a99}code,pre{font-family:Montserrat,Nunito,sans-serif}pre{padding:7px;white-space:pre-wrap;margin-bottom:0;word-break:break-all}a.disabled{opacity:.65}.img,[data-action=preview-img]{cursor:pointer}.avatar{max-width:120px;border:2px solid #ddd}.popover{font-family:Nunito,Montserrat,system-ui,BlinkMacSystemFont,-apple-system,sans-serif;border:0;box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05);max-width:320px;z-index:10}.popover .popover-header{color:#fff;border:none;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{border-right-color:#eee}.popover.bs-popover-bottom .arrow:after{border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{border-bottom-color:#eee}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{border-top-color:#eee}.bootstrap-datetimepicker-widget table td i,.bootstrap-datetimepicker-widget table td span{height:0!important;line-height:0!important}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#f7f7f9!important;color:#4c60a3!important;font-weight:700}.bootstrap-datetimepicker-widget table td{width:0!important}.bootstrap-datetimepicker-widget table td .btn{padding:.5rem!important}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{padding:.5em .1em!important}.modal-content{border:0;border-radius:0}.iconpicker-popover.popover .popover-title{background:#fff!important}.iconpicker-popover.popover.bottom>.arrow,.iconpicker-popover.popover.bottomLeft>.arrow,.iconpicker-popover.popover.bottomRight>.arrow{border-bottom-color:#dfdfdf!important}body.dark-mode::-webkit-scrollbar{width:12px;height:12px}body.dark-mode::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode{background-color:#2c2c43;color:#a8a9bb}body.dark-mode .body-bg,body.dark-mode .content-wrapper,body.dark-mode .main-footer{background:#2c2c43}body.dark-mode .bg-white{background:#2c2c43!important}body.dark-mode a{color:#5b6fb3}body.dark-mode a:hover{color:#4e62a7}body.dark-mode .grid-column-header a{color:#7d7f99}body.dark-mode .grid-column-header a.active,body.dark-mode .grid-column-header a:hover{color:#5b6fb3}body.dark-mode h1,body.dark-mode h2,body.dark-mode h3,body.dark-mode h4,body.dark-mode h5,body.dark-mode h6{color:#cacbd6}body.dark-mode label,body.dark-mode p,body.dark-mode small{color:#a8a9bb}body.dark-mode .label{color:#f9f9f9}body.dark-mode .dcat-loading:not(.layui-layer-shade){background-color:inherit!important}body.dark-mode .btn.btn-default,body.dark-mode .btn.btn-light,body.dark-mode .btn.btn-white{color:#a8a9bb;background-color:#223;border-color:#223}body.dark-mode .btn.btn-default:hover,body.dark-mode .btn.btn-light:hover,body.dark-mode .btn.btn-white:focus,body.dark-mode .btn.btn-white:hover{color:#aeafbf!important}body.dark-mode .bg-light,body.dark-mode .btn.btn-light{color:#a8a9bb!important;background-color:#2c2c43!important;border-color:#2c2c43!important}body.dark-mode .bg-default{background-color:#223!important;color:#a8a9bb!important}body.dark-mode .btn-light:focus,body.dark-mode .btn-light:hover{color:#abacbe!important}body.dark-mode .btn.btn-custom:not(.btn-outline),body.dark-mode .btn.btn-danger:not(.btn-outline),body.dark-mode .btn.btn-info:not(.btn-outline),body.dark-mode .btn.btn-primary:not(.btn-outline),body.dark-mode .btn.btn-success:not(.btn-outline),body.dark-mode .btn.btn-warning:not(.btn-outline){color:#ebebeb}body.dark-mode hr{border-color:#303247}body.dark-mode pre{background-color:#223;border:0;color:#a8a9bb}body.dark-mode pre code{background-color:inherit}body.dark-mode code,body.dark-mode pre code .operator,body.dark-mode pre code .url{background-color:#2c2c43}body.dark-mode code{color:#b8c2cc!important}body.dark-mode kbd{background-color:#2c2c43}body.dark-mode .text-dark{color:#b8c2cc!important}body.dark-mode .header-navbar{background-color:#223}body.dark-mode .header-navbar .navbar-container .nav .nav-item .nav-link{color:#a8a9bb;background-color:transparent}body.dark-mode .header-navbar .navbar-container .nav .nav-item .nav-link i{color:#a8a9bb}body.dark-mode .header-navbar.navbar-static-top{background-color:transparent}body.dark-mode .header-navbar[class*=bg-] .navbar-nav .nav-item .nav-link{background-color:inherit}body.dark-mode .main-menu .navbar-header .logo-lg{font-weight:300}body.dark-mode .dropdown-toggle:hover:after,body.dark-mode .dropdown-toggle:hover i{color:#fff}body.dark-mode .dropdown .dropdown-menu{box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)}body.dark-mode .dropdown-menu{background-color:#223}body.dark-mode .dropdown-menu:before{background:#223}body.dark-mode .dropdown-menu .dropdown-item:focus,body.dark-mode .dropdown-menu .dropdown-item:hover{background:#1e1e2d}body.dark-mode .dropdown-menu .dropdown-item{color:#a8a9bb}body.dark-mode .dropdown-menu .form-control{background-color:#223}body.dark-mode .dropdown-menu .dropdown-divider{border-color:#303247}body.dark-mode .dropdown-item a,body.dark-mode .dropdown-menu label{color:#a8a9bb}body.dark-mode .modal .modal-header,body.dark-mode .modal .modal-header[class*=bg-]{border-color:#303247;background-color:#242436}body.dark-mode .modal .modal-header .close span,body.dark-mode .modal .modal-header[class*=bg-] .close span{color:hsla(0,0%,100%,.5)}body.dark-mode .modal .modal-body,body.dark-mode .modal .modal-content,body.dark-mode .modal .modal-footer{background-color:#28283c}body.dark-mode .modal-backdrop{background-color:rgba(34,41,47,.5)}body.dark-mode .pagination:not([class*=pagination-]) .page-item.active{background-color:#2c2c43}body.dark-mode .pagination:not([class*=pagination-]) .page-item.active .page-link:hover{color:#fff}body.dark-mode .pagination:not([class*=pagination-]) .page-item .page-link{background-color:#2c2c43;color:#a8a9bb}body.dark-mode .pagination:not([class*=pagination-]) .page-item.next-item .page-link:hover,body.dark-mode .pagination:not([class*=pagination-]) .page-item.prev-item .page-link:hover{color:#fff}body.dark-mode .pagination[class*=pagination-] .page-item:not(.active):not(:hover) .page-link{background-color:#1e1e2d;color:#a8a9bb}body.dark-mode .pagination[class*=pagination-] .page-item:not(.active) .page-link:hover{background-color:#2c2c43}body.dark-mode .pagination[class*=pagination-] .page-item.active{background-color:#223}body.dark-mode .nav .nav-item .nav-link{color:#a8a9bb}body.dark-mode .popover[x-placement=top] .arrow:after{border-top-color:#223}body.dark-mode .popover[x-placement=bottom] .arrow:after{border-bottom-color:#223}body.dark-mode .popover[x-placement=left] .arrow:after{border-left-color:#223}body.dark-mode .popover[x-placement=right] .arrow:after{border-right-color:#223}body.dark-mode .popover .popover-body{background-color:#223;color:#a8a9bb}body.dark-mode .nav.nav-tabs{border-color:#444865}body.dark-mode .nav-theme-primary .nav.nav-tabs,body.dark-mode .nav-theme-white .nav.nav-tabs{background-color:#223}body.dark-mode .nav-theme-primary .nav.nav-tabs .nav-item .nav-link:not(.active),body.dark-mode .nav-theme-white .nav.nav-tabs .nav-item .nav-link:not(.active){color:#9d9eb2}body.dark-mode .nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active,body.dark-mode .nav-theme-white .nav.nav-tabs .nav-item .nav-link.active{color:#586cb1}body.dark-mode .nav-theme-primary .nav.nav-tabs .nav-item .nav-link.active:after,body.dark-mode .nav-theme-white .nav.nav-tabs .nav-item .nav-link.active:after{background:linear-gradient(30deg,#586cb1,rgba(88,108,177,.5))!important}body.dark-mode .table-responsive[data-pattern=priority-columns]::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .table-responsive[data-pattern=priority-columns]::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .table-responsive[data-pattern=priority-columns]::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .table-wrapper{margin-top:12px!important}body.dark-mode .table.default-table td,body.dark-mode .table.default-table th{border-color:#303247!important}body.dark-mode .table.default-table th,body.dark-mode table.table-bordered.dataTable.complex-headers th{background:#26263a}body.dark-mode .table.default-table td,body.dark-mode table.table-bordered.dataTable.complex-headers td{background:#2a2a40}body.dark-mode .table{background-color:#223;padding:0 1rem}body.dark-mode .table td,body.dark-mode .table th{border-color:#303247}body.dark-mode .table .thead tr:not([class*=table-]) td,body.dark-mode .table .thead tr:not([class*=table-]) th,body.dark-mode .table tbody tr:not([class*=table-]) td,body.dark-mode .table tbody tr:not([class*=table-]) th{border:0;color:#a8a9bb}body.dark-mode .table .thead tr:not([class*=table-]) td code,body.dark-mode .table .thead tr:not([class*=table-]) th code,body.dark-mode .table tbody tr:not([class*=table-]) td code,body.dark-mode .table tbody tr:not([class*=table-]) th code{background-color:#223}body.dark-mode .table thead tr th{border:0;background-color:#223;color:#a8a9bb}body.dark-mode .table tbody tr{background:#2c2c43!important}body.dark-mode .table tbody tr[class*=table-] td,body.dark-mode .table tbody tr[class*=table-] th{background-color:unset;color:#22292f;border-color:#303247}body.dark-mode .table tbody tr.table-dark td,body.dark-mode .table tbody tr.table-dark th{color:#fff}body.dark-mode .table tbody tr.table-active td,body.dark-mode .table tbody tr.table-active th{color:#a8a9bb}body.dark-mode .table tbody tr th{background-color:#2c2c43}body.dark-mode .table tbody tr td{background-color:#2c2c43;color:#a8a9bb}body.dark-mode .table.table-bordered,body.dark-mode .table.table-bordered tbody tr td,body.dark-mode .table.table-bordered tbody tr th,body.dark-mode .table.table-bordered thead tr td,body.dark-mode .table.table-bordered thead tr th{border:1px solid #303247}body.dark-mode .table.table-hover tbody tr:hover{background-color:#223}body.dark-mode .table.table-hover tbody tr td,body.dark-mode .table.table-hover tbody tr th{background-color:unset}body.dark-mode .table.table-striped tbody tr:nth-of-type(odd){background-color:#223}body.dark-mode .table.table-striped tbody tr td,body.dark-mode .table.table-striped tbody tr th{background-color:unset}body.dark-mode .table.table-bordered{padding:0}body.dark-mode .box,body.dark-mode .card{background:#223}body.dark-mode .box.box-solid.box-default{background-color:#2c2c43}body.dark-mode .box-header.with-border,body.dark-mode .box.box-solid.box-default,body.dark-mode .card.dcat-box .card-header,body.dark-mode .dd-handle,body.dark-mode .with-border{border-bottom:1px solid #303247;border-color:#303247!important}body.dark-mode .box .box-footer,body.dark-mode .card .box-footer{border-color:#303247}body.dark-mode .dd-handle{background:#2a2a3f;color:#a8a9bb;margin-bottom:2px}body.dark-mode .dd-item>button:before{color:#a8a9bb}body.dark-mode .input-group-addon,body.dark-mode .input-group-append,body.dark-mode .input-group-prepend,body.dark-mode .input-group-text{background-color:#2c2c43;border-color:#303247;color:#a8a9bb!important}body.dark-mode input::-webkit-input-placeholder{color:#9a9bb0!important}body.dark-mode input::-moz-placeholder{color:#9a9bb0!important}body.dark-mode input:-ms-input-placeholder{color:#9a9bb0!important}body.dark-mode .help-block{color:#a4a5b8!important}body.dark-mode .has-error .checkbox,body.dark-mode .has-error .checkbox-inline,body.dark-mode .has-error.checkbox label,body.dark-mode .has-error .control-label,body.dark-mode .has-error .form-control-position i,body.dark-mode .has-error .form-control:focus~.form-control-position i,body.dark-mode .has-error .help-block,body.dark-mode .has-error .radio,body.dark-mode .has-error .radio-inline,body.dark-mode .has-error.radio label{color:#bd4147!important}body.dark-mode .select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .select2-container--default .select2-results>.select2-results__options::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .form-control,body.dark-mode .select2-container--default .select2-selection--multiple,body.dark-mode .select2-container--default .select2-selection--single{background:#2c2c43;color:#a8a9bb!important;border-color:#303247!important}body.dark-mode .select2-container--default .select2-search--inline .select2-search__field,body.dark-mode .select2-container--default .select2-selection--single .select2-selection__rendered{color:#a8a9bb!important}body.dark-mode .select2-container--default .select2-search--dropdown .select2-search__field{background:#2c2c43!important;color:#a8a9bb!important}body.dark-mode .select2-container--default .select2-search--dropdown .select2-search__field,body.dark-mode .select2-container--default .select2-selection--multiple{border-color:#303247!important}body.dark-mode .select2-container--default .select2-results>.select2-results__options,body.dark-mode .select2-dropdown{background:#223!important}body.dark-mode .select2-container--default .select2-results__option--highlighted[aria-selected],body.dark-mode .select2-container--default .select2-results__option[aria-selected=true]{background:#1e1e2d!important;color:#a8a9bb!important}body.dark-mode .table-filter .form-control{background:#223;color:#a8a9bb}body.dark-mode .form-divider{border-color:#303247}body.dark-mode .form-divider span{background-color:#223}body.dark-mode .form-control:disabled,body.dark-mode .form-control[readonly],body.dark-mode .select2-container--default.select2-container--disabled .select2-selection--multiple,body.dark-mode .select2-container--default.select2-container--disabled .select2-selection--single{background-color:#28283d!important}body.dark-mode .layui-layer-page .layui-layer-content::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .layui-layer-page .layui-layer-content::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .layui-layer-page .layui-layer-content::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .layui-layer{background-color:#242436!important}body.dark-mode .layui-layer-page .layui-layer-btn,body.dark-mode .layui-layer-page .layui-layer-content{background-color:#28283c!important}body.dark-mode .layui-layer-title{background-color:#242436!important;border-bottom:1px solid #303247!important;color:#a8a9bb!important}body.dark-mode .layui-layer-btn1{border-color:#223!important;background:#223!important}body.dark-mode .layui-layer-setwin .layui-layer-close1:before,body.dark-mode .layui-layer-setwin .layui-layer-max:before,body.dark-mode .layui-layer-setwin .layui-layer-min cite:before{color:#a8a9bb!important}body.dark-mode .web-uploader .placeholder{border-width:2px;border-color:#9495ab!important}body.dark-mode .web-uploader .filelist li{background:#223!important}body.dark-mode .web-uploader .queueList{border-color:#303247!important}body.dark-mode .web-uploader .filelist li p.title,body.dark-mode .web-uploader .statusBar .info{color:#a8a9bb!important}body.dark-mode .slider-panel{background-color:#242436}body.dark-mode .right-side-filter-container .header{border-color:#303247;background-color:#242436}body.dark-mode .swal2-popup{background:#223}body.dark-mode .swal2-popup h2{color:#a8a9bb}body.dark-mode .swal2-content{color:#a4a5b8}body.dark-mode .quick-create td{background-color:#28283c!important;color:#9a9bb0}body.dark-mode .iconpicker .iconpicker-items::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .iconpicker .iconpicker-items::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .iconpicker .iconpicker-items::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .iconpicker-popover.popover,body.dark-mode .iconpicker-popover.popover .popover-title,body.dark-mode .iconpicker .iconpicker-items{background:#223!important;border-color:#303247!important}body.dark-mode .iconpicker-popover.popover.bottom>.arrow:after,body.dark-mode .iconpicker-popover.popover.bottomLeft>.arrow:after,body.dark-mode .iconpicker-popover.popover.bottomRight>.arrow:after,body.dark-mode .iconpicker-popover.popover .popover-title{border-color:#223}body.dark-mode .alert.alert-danger h3,body.dark-mode .alert.alert-danger h4,body.dark-mode .alert.alert-danger h5{color:#ea5455}body.dark-mode .alert.alert-success h3,body.dark-mode .alert.alert-success h4,body.dark-mode .alert.alert-success h5{color:#21b978}body.dark-mode .alert.alert-info h3,body.dark-mode .alert.alert-info h4,body.dark-mode .alert.alert-info h5{color:#4277cf}body.dark-mode .alert.alert-primary h3,body.dark-mode .alert.alert-primary h4,body.dark-mode .alert.alert-primary h5{color:#4c60a3}body.dark-mode .alert.alert-warning h3,body.dark-mode .alert.alert-warning h4,body.dark-mode .alert.alert-warning h5{color:#d9993c}body.dark-mode .callout{background:#26263a;border-color:#8e9aac}body.dark-mode .callout h3,body.dark-mode .callout h4,body.dark-mode .callout h5{color:#b6b7c6}body.dark-mode .apexcharts-legend-series .apexcharts-legend-text{color:#a8a9bb!important}body.dark-mode .apexcharts-radialbar-track path{stroke:#2c2c43}body.dark-mode .apexcharts-inner polygon{stroke:#223!important;fill:#2c2c43!important}body.dark-mode .apexcharts-pie-series path{stroke:#2c2c43}body.dark-mode .apexcharts-menu{background-color:#2c2c43;border:0}body.dark-mode .apexcharts-toolbar .apexcharts-menu-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-reset-zoom-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-zoom-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-zoom-in-icon:hover svg,body.dark-mode .apexcharts-toolbar .apexcharts-zoom-out-icon:hover svg{fill:#a8a9bb}body.dark-mode .login-page{background-color:#2c2c43!important}body.dark-mode .login-card-body,body.dark-mode .register-card-body{background-color:#223;color:#a8a9bb}body.dark-mode .grid-selector .wrap{background-color:#223}body.dark-mode .grid-selector .select-label{color:#9a9bb0}body.dark-mode .grid-selector ul>li a{color:#a8a9bb}body.dark-mode .grid-selector .select-options a.active{color:#586cb1}body.dark-mode .switchery{background-color:#b3b4c4!important;border-color:#b3b4c4!important;box-shadow:0 3px 1px -2px rgba(0,0,0,.1),0 2px 2px 0 rgba(0,0,0,.1),0 1px 5px 1px rgba(0,0,0,.1)}body.dark-mode .switchery>small{background-color:#c5c5d1!important}body.dark-mode .dropdown-menu li.checkbox-row:hover{background-color:#1e1e2d!important}body.dark-mode .dcat-step .dcat-step-title{color:#a8a9bb}body.dark-mode .dcat-step .active>.dcat-step-item-container>.dcat-step-content>.dcat-step-title,body.dark-mode .dcat-step .done>.dcat-step-item-container>.dcat-step-content>.dcat-step-title{color:#bfc0cd}body.dark-mode .dcat-step .dcat-step-icons{border-color:#b3b4c4}body.dark-mode .dcat-step .dcat-step-icons>.dcat-step-icon{color:#b3b4c4}body.dark-mode .dcat-step .dcat-step-title:after{background-color:#a8a9bb}body.dark-mode .dcat-step .active>.dcat-step-item-container>.dcat-step-content>.dcat-step-title:after{background-color:#b3b4c4}body.dark-mode .dcat-step .done .dcat-step-icons{background-color:transparent;border-color:#586cb1}body.dark-mode .dcat-step .done .dcat-step-icons>.dcat-step-icon{color:#586cb1}body.dark-mode .dcat-done-step .st-title{color:#cacbd6}body.dark-mode .dcat-done-step .st-desc{color:#a8a9bb}body.dark-mode .table-main::-webkit-scrollbar{width:12px;height:12px}body.dark-mode .table-main::-webkit-scrollbar-track{background-color:#2c2c43}body.dark-mode .table-main::-webkit-scrollbar-thumb{background-color:#1e1e2d;border-radius:.4rem}body.dark-mode .table-fixed-left .table{box-shadow:6px 0 5px -5px #000}body.dark-mode .table-fixed-right .table{box-shadow:-5px 0 5px -5px #000}body.dark-mode [class*=sidebar-dark-]{background-image:none;background-color:#223!important}body.dark-mode [class*=sidebar-dark-] .navbar-header{background:#1e1e2d}body.dark-mode [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-treeview{background:transparent}body.dark-mode [class*=sidebar-dark-] .nav-sidebar>.nav-item>.nav-link.active,body.dark-mode [class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active,body.dark-mode [class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:focus,body.dark-mode [class*=sidebar-dark-] .nav-treeview>.nav-item>.nav-link.active:hover{background:#1e1e2d}body.dark-mode [class*=sidebar-dark-] .nav-treeview.nav .nav-item .nav-link.active{padding:10px 10px 10px 25px!important}body.dark-mode .main-menu .navbar-header .navbar-brand{margin-top:.5rem}body.dark-mode:not(.sidebar-separate) .main-sidebar .sidebar{margin-top:1rem}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/css/nunito.css",
    "content": "@font-face{font-family:Nunito;font-style:italic;font-weight:200;src:local('Nunito ExtraLight Italic'),local('Nunito-ExtraLightItalic'),url(../../fonts/nunito-v10/XRXQ3I6Li01BKofIMN5MZ9vFUT8_DQ.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:italic;font-weight:200;src:local('Nunito ExtraLight Italic'),local('Nunito-ExtraLightItalic'),url(../../fonts/nunito-v10/XRXQ3I6Li01BKofIMN5MZ9vEUT8_DQ.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:italic;font-weight:200;src:local('Nunito ExtraLight Italic'),local('Nunito-ExtraLightItalic'),url(../../fonts/nunito-v10/XRXQ3I6Li01BKofIMN5MZ9vKUT8.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:italic;font-weight:300;src:local('Nunito Light Italic'),local('Nunito-LightItalic'),url(../../fonts/nunito-v10/XRXQ3I6Li01BKofIMN4oZNvFUT8_DQ.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:italic;font-weight:300;src:local('Nunito Light Italic'),local('Nunito-LightItalic'),url(../../fonts/nunito-v10/XRXQ3I6Li01BKofIMN4oZNvEUT8_DQ.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:italic;font-weight:300;src:local('Nunito Light Italic'),local('Nunito-LightItalic'),url(../../fonts/nunito-v10/XRXQ3I6Li01BKofIMN4oZNvKUT8.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:italic;font-weight:400;src:local('Nunito Italic'),local('Nunito-Italic'),url(../../fonts/nunito-v10/XRXX3I6Li01BKofIMNaMRs71cA.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:italic;font-weight:400;src:local('Nunito Italic'),local('Nunito-Italic'),url(../../fonts/nunito-v10/XRXX3I6Li01BKofIMNaNRs71cA.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:italic;font-weight:400;src:local('Nunito Italic'),local('Nunito-Italic'),url(../../fonts/nunito-v10/XRXX3I6Li01BKofIMNaDRs4.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:italic;font-weight:600;src:local('Nunito SemiBold Italic'),local('Nunito-SemiBoldItalic'),url(../../fonts/nunito-v10/XRXQ3I6Li01BKofIMN5cYtvFUT8_DQ.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:italic;font-weight:600;src:local('Nunito SemiBold Italic'),local('Nunito-SemiBoldItalic'),url(../../fonts/nunito-v10/XRXQ3I6Li01BKofIMN5cYtvEUT8_DQ.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:italic;font-weight:600;src:local('Nunito SemiBold Italic'),local('Nunito-SemiBoldItalic'),url(../../fonts/nunito-v10/XRXQ3I6Li01BKofIMN5cYtvKUT8.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:italic;font-weight:800;src:local('Nunito ExtraBold Italic'),local('Nunito-ExtraBoldItalic'),url(../../fonts/nunito-v10/XRXQ3I6Li01BKofIMN4kYNvFUT8_DQ.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:italic;font-weight:800;src:local('Nunito ExtraBold Italic'),local('Nunito-ExtraBoldItalic'),url(../../fonts/nunito-v10/XRXQ3I6Li01BKofIMN4kYNvEUT8_DQ.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:italic;font-weight:800;src:local('Nunito ExtraBold Italic'),local('Nunito-ExtraBoldItalic'),url(../../fonts/nunito-v10/XRXQ3I6Li01BKofIMN4kYNvKUT8.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-weight:200;src:local('Nunito ExtraLight'),local('Nunito-ExtraLight'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofA-seUbuvISTs.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-weight:200;src:local('Nunito ExtraLight'),local('Nunito-ExtraLight'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofA-seUb-vISTs.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:200;src:local('Nunito ExtraLight'),local('Nunito-ExtraLight'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofA-seUYevI.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-weight:300;src:local('Nunito Light'),local('Nunito-Light'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofAnsSUbuvISTs.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-weight:300;src:local('Nunito Light'),local('Nunito-Light'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofAnsSUb-vISTs.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:300;src:local('Nunito Light'),local('Nunito-Light'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofAnsSUYevI.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-weight:400;src:local('Nunito Regular'),local('Nunito-Regular'),url(../../fonts/nunito-v10/XRXV3I6Li01BKofIOuaBXso.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-weight:400;src:local('Nunito Regular'),local('Nunito-Regular'),url(../../fonts/nunito-v10/XRXV3I6Li01BKofIO-aBXso.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:400;src:local('Nunito Regular'),local('Nunito-Regular'),url(../../fonts/nunito-v10/XRXV3I6Li01BKofINeaB.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-weight:600;src:local('Nunito SemiBold'),local('Nunito-SemiBold'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofA6sKUbuvISTs.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-weight:600;src:local('Nunito SemiBold'),local('Nunito-SemiBold'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofA6sKUb-vISTs.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:600;src:local('Nunito SemiBold'),local('Nunito-SemiBold'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofA6sKUYevI.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-weight:800;src:local('Nunito ExtraBold'),local('Nunito-ExtraBold'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofAksCUbuvISTs.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-weight:800;src:local('Nunito ExtraBold'),local('Nunito-ExtraBold'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofAksCUb-vISTs.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:800;src:local('Nunito ExtraBold'),local('Nunito-ExtraBold'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofAksCUYevI.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-weight:900;src:local('Nunito Black'),local('Nunito-Black'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofAtsGUbuvISTs.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-weight:900;src:local('Nunito Black'),local('Nunito-Black'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofAtsGUb-vISTs.woff2) format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-weight:900;src:local('Nunito Black'),local('Nunito-Black'),url(../../fonts/nunito-v10/XRXW3I6Li01BKofAtsGUYevI.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/extra/action.js",
    "content": "!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/\",n(n.s=7)}({7:function(e,t,n){e.exports=n(8)},8:function(e,t){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}!function(e){var t=function(){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.options=$.extend({selector:null,event:\"click\",method:\"POST\",key:null,url:null,data:{},confirm:null,calledClass:null,before:function(e,t){},html:function(e,t,n){e.html(t)},success:function(e,t){},error:function(e,t){}},e),this.init()}var r,i,u;return r=t,(i=[{key:\"init\",value:function(){var t=this,n=t.options;$(n.selector).off(n.event).on(n.event,(function(o){var r=$(this).data(),i=$(this);if(!(i.attr(\"loading\")>0)&&!1!==n.before(r,i,t)){var u=n.confirm;u?e.confirm(u[0],u[1],c):c()}function c(){i.attr(\"loading\",1),Object.assign(r,n.data),t.promise(i,r).then(t.resolve()).catch(t.reject())}}))}},{key:\"resolve\",value:function(){var t=this.options;return function(n){var o=n[0],r=n[1];!1!==t.success(r,o)&&e.handleJsonResponse(o,{html:t.html,target:r})}}},{key:\"reject\",value:function(){var t=this.options;return function(o){var r=o[0],i=o[1];!1!==t.success(i,r)&&(r&&\"object\"===n(r.responseJSON)&&e.error(r.responseJSON.message),console.error(o))}}},{key:\"promise\",value:function(t,n){var o=this.options;return new Promise((function(r,i){Object.assign(n,{_action:o.calledClass,_key:o.key,_token:e.token}),e.NP.start(),$.ajax({method:o.method,url:o.url,data:n,success:function(n){t.attr(\"loading\",0),e.NP.done(),r([n,t])},error:function(n){t.attr(\"loading\",0),e.NP.done(),i([n,t])}})}))}}])&&o(r.prototype,i),u&&o(r,u),t}();e.Action=function(e){return new t(e)}}(Dcat)}});\n//# sourceMappingURL=action.js.map"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/extra/grid-extend.js",
    "content": "!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/\",n(n.s=9)}({16:function(e,t,n){\"use strict\";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}n.r(t);var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e)}var t,n,a;return t=e,(n=[{key:\"getChildren\",value:function(e,t){var n,r=this,a=[],i=!1;return e.each((function(e,o){r.isTr(o)&&!i&&(n||(n=$(o)),n&&!r.isChildren(t,n)||(r.isChildren(t,o)?a.push(o):i=!0))})),a}},{key:\"swapable\",value:function(e,t){if(e&&e.length&&t===this.getDepth(e))return!0}},{key:\"sibling\",value:function(e,t){var n,r=this;return e.each((function(e,a){r.getDepth(a)===t&&!n&&r.isTr(a)&&(n=$(a))})),n}},{key:\"isChildren\",value:function(e,t){return this.getDepth(t)>this.getDepth(e)}},{key:\"getDepth\",value:function(e){return parseInt($(e).data(\"depth\")||0)}},{key:\"isTr\",value:function(e){return\"tr\"===$(e).prop(\"tagName\").toLocaleLowerCase()}}])&&r(t.prototype,n),a&&r(t,a),e}();function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var o=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.options=$.extend({button:null,table:null,url:\"\",perPage:\"\",showNextPage:\"\",pageQueryName:\"\",parentIdQueryName:\"\",depthQueryName:\"\",showIcon:\"fa-angle-right\",hideIcon:\"fa-angle-down\",loadMoreIcon:'<i class=\"feather icon-more-horizontal\"></i>'},n),this.helper=t,this.key=this.depth=this.row=this.data=this._req=null,this._init()}var t,n,r;return t=e,(n=[{key:\"_init\",value:function(){var e=this,t=e.options;$(t.button).off(\"click\").click((function(){if(!e._req){var n=$(this),r=$(\"i\",this),a=r.hasClass(t.showIcon);e.key=n.data(\"key\"),e.depth=n.data(\"depth\"),e.row=n.closest(\"tr\"),\"0\"==n.data(\"inserted\")&&(e.request(1),n.data(\"inserted\",1)),r.toggleClass(t.showIcon+\" \"+t.hideIcon);var i=[];e.helper.getChildren(e.row.nextAll(),e.row).forEach((function(t){e.helper.getDepth(t)===e.depth+1&&(i.push(t),a?$(t).show():$(t).hide())})),i.forEach((function(n){if(!a){var r=$(n).find(\"a[data-depth=\"+e.helper.getDepth(n)+\"] i\");r.hasClass(t.hideIcon)&&r.parent().click()}}))}}))}},{key:\"request\",value:function(e,t){var n=this,r=n.row,a=n.key,i=n.depth,o=n.options.table;if(!n._req){n._req=1,Dcat.loading();var l={};l[n.options.parentIdQueryName]=a,l[n.options.depthQueryName]=i+1,l[n.options.pageQueryName.replace(\":key\",a)]=e,$.ajax({url:n.options.url,type:\"GET\",data:l,headers:{\"X-PJAX\":!0},success:function(a){t&&t(),Dcat.loading(!1),n._req=0;var l=n.helper.getChildren(r.nextAll(),r);r=l.length?$(l.pop()):r;var c=$(\"<div>\"+a+\"</div>\"),u=c.find(o+\" tbody\"),s=c.find(\"last-page\").text(),f=c.find(\"next-page\").text();if(u.find(\"tr\").each((function(e,t){$(t).attr(\"data-depth\",i+1)})),n.options.showNextPage&&u.find(\"tr\").length==n.options.perPage&&s>=e){var d=$('<tr data-depth=\"'.concat(i+1,'\" data-page=\"').concat(f,'\">\\n                                <td colspan=\"').concat(r.find(\"td\").length,'\" align=\"center\" style=\"cursor: pointer\">\\n                                    <a href=\"#\" style=\"font-size: 1.5rem\">').concat(n.options.loadMoreIcon,\"</a>\\n                                </td>\\n                            </tr>\"));r.after(d),d.click((function(){var e=$(this);n.request(e.data(\"page\"),(function(){e.remove()}))}))}r.after(u.html()),c.find(\"script\").each((function(e,t){r.after(t)})),$(\"body .extra-html\").append(c.find(\".extra-html\").html()),Dcat.triggerReady()},error:function(e,r,a){t&&t(),Dcat.loading(!1),n._req=0,404!=e.status&&Dcat.handleAjaxError(e,r,a)}})}}}])&&i(t.prototype,n),r&&i(t,r),e}();function l(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var c=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.options=$.extend({button:null,url:\"\"},n),this.helper=t,this.direction=this.key=this.depth=this.row=this._req=null,this._init()}var t,n,r;return t=e,(n=[{key:\"_init\",value:function(){var e=this;$(e.options.button).off(\"click\").click((function(){if(!e._req){e._req=1,Dcat.loading();var t=$(this);e.key=t.data(\"id\"),e.direction=t.data(\"direction\"),e.row=t.closest(\"tr\"),e.depth=e.helper.getDepth(e.row),e.request()}}))}},{key:\"request\",value:function(){var e=this,t=e.helper,n=e.key,r=e.row,a=e.depth,i=e.direction,o=r.prevAll(),l=r.nextAll(),c=r.prevAll(\"tr\").first(),u=r.nextAll(\"tr\").first();$.put({url:e.options.url.replace(\":key\",n),data:{_orderable:i},success:function(n){if(Dcat.loading(!1),e._req=0,!n.status)return n.data.message&&Dcat.warning(n.data.message);if(Dcat.success(n.data.message),i){var s=t.sibling(o,a);t.swapable(s,a)&&c.length&&t.getDepth(c)>=a&&(s.before(r),t.getChildren(l,r).forEach((function(e){s.before(e)})))}else{var f=t.sibling(l,a),d=f?t.getChildren(f.nextAll(),f):[];if(t.swapable(f,a)&&u.length&&t.getDepth(u)>=a){l=r.nextAll(),d.length&&(f=$(d.pop()));var h=[];t.getChildren(l,r).forEach((function(e){h.unshift(e)})),h.forEach((function(e){f.after(e)})),f.after(r)}}},error:function(t,n,r){e._req=0,Dcat.loading(!1),Dcat.handleAjaxError(t,n,r)}})}}])&&l(t.prototype,n),r&&l(t,r),e}();function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var s=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.options=$.extend({container:\".table-card\"},t);var n=this;$(this.options.container).on(\"table:load\",(function(){n.load($(this).data(\"url\"),$(this))}))}var t,n,r;return t=e,(n=[{key:\"load\",value:function(e,t){var n=this;e&&(t.attr(\"data-current\",e),t.loading({background:\"transparent!important\"}),Dcat.helpers.asyncRender(e,(function(e){t.loading(!1),t.html(e),n.bind(t),t.trigger(\"table:loaded\")})))}},{key:\"bind\",value:function(e){var t=this;function n(){return t.load($(this).attr(\"href\"),e),!1}e.find(\".pagination .page-link\").on(\"click\",n),e.find(\".grid-column-header a\").on(\"click\",n),e.find(\"form\").on(\"submit\",(function(){return t.load($(this).attr(\"action\")+\"&\"+$(this).serialize(),e),!1})),e.find(\".filter-box .reset\").on(\"click\",n),e.find(\".grid-selector a\").on(\"click\",n),Dcat.ready((function(){setTimeout((function(){e.find(\".grid-refresh\").off(\"click\").on(\"click\",(function(){return t.load(e.data(\"current\"),e),!1}))}),10)}))}}])&&u(t.prototype,n),r&&u(t,r),e}();!function(e,t){var n=e.Dcat,r=new a;n.grid.Tree=function(e){return new o(r,e)},n.grid.Orderable=function(e){return new c(r,e)},n.grid.AsyncTable=function(e){return new s(e)}}(window,jQuery)},9:function(e,t,n){e.exports=n(16)}});\n//# sourceMappingURL=grid-extend.js.map"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/extra/markdown.css",
    "content": ".editormd-html-preview code,.editormd-preview-container code{font-size:13px!important;font-family:Inconsolata,Fira Mono,Consolas,Liberation Mono,Menlo,Courier,monospace!important;word-wrap:break-word!important}.markdown-body pre code{box-shadow:none}.com{color:#93939e!important}.tag,.typ{color:#da564a!important}.clo,.opn{color:#93a1a1!important}.atn,.lit{color:#007ee5!important}.atv{color:#fc8bb3!important}.dec,.var{color:teal!important}.fun{color:#dc322f!important}pre.prettyprint{padding:10px;border:1px solid #e1e1e8!important;-moz-tab-size:4!important;-o-tab-size:4!important;tab-size:4!important}pre.prettyprint.linenums{box-shadow:inset 40px 0 0 hsla(0,0%,93.3%,.35),inset 41px 0 0 hsla(0,0%,93.3%,.35)!important}pre.prettyprint.linenums ol.linenums{color:#1e347b!important;padding-left:30px!important;margin-top:0!important;margin-bottom:0}pre.prettyprint.linenums ol.linenums li{color:#bebec5!important;line-height:18px!important;padding-left:12px!important;background:#f7f7f9!important}pre.prettyprint.linenums ol.linenums li.L0,pre.prettyprint.linenums ol.linenums li.L1,pre.prettyprint.linenums ol.linenums li.L2,pre.prettyprint.linenums ol.linenums li.L3,pre.prettyprint.linenums ol.linenums li.L4,pre.prettyprint.linenums ol.linenums li.L5,pre.prettyprint.linenums ol.linenums li.L6,pre.prettyprint.linenums ol.linenums li.L7,pre.prettyprint.linenums ol.linenums li.L8,pre.prettyprint.linenums ol.linenums li.L9{list-style-type:decimal!important}pre.prettyprint{width:100%;border:0!important}.pln{color:#444!important}.kwd{color:#07a!important;font-weight:700}.pun{color:#999!important}.str{color:#2e7d32!important}pre.prettyprint{background-color:#f7f7f9!important;border:0 solid #333}.editormd-html-preview,.editormd-preview-container{padding:0}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/extra/select-table.js",
    "content": "!function(e){var t={};function n(i){if(t[i])return t[i].exports;var l=t[i]={i:i,l:!1,exports:{}};return e[i].call(l.exports,l,l.exports,n),l.l=!0,l.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var l in e)n.d(i,l,function(t){return e[t]}.bind(null,l));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/\",n(n.s=10)}({10:function(e,t,n){e.exports=n(11)},11:function(e,t){!function(e){function t(e){e=$.extend({dialog:null,container:null,input:null,button:\".submit-btn\",cancel:\".cancel-btn\",table:\".async-table\",multiple:!1,max:0,values:[],lang:{exceed_max_item:Dcat.lang.exceed_max_item||\"已超出最大可选择的数量\"}},e);this.options=e,this.$input=$(e.input),this.selected={},this.init()}t.prototype={init:function(){var e=this,t=e.options,n=t.values;for(var i in e.labels={},n)e.labels[n[i].id]=n[i].label;e.resetSelected(),$(document).on(\"dialog:shown\",t.dialog,(function(){e.$dialog=$(t.dialog),e.$button=e.$dialog.find(t.button),e.$cancel=e.$dialog.find(t.cancel),e.$button.on(\"click\",(function(){var t=e.getSelectedRows();e.setKeys(t[1]),e.render(t[0]),e.$dialog.trigger(\"dialog:close\"),e.resetSelected()})),e.$cancel.on(\"click\",(function(){e.$dialog.trigger(\"dialog:close\")})),e.bind(),e.resetSelected()})),e.render(n)},bind:function(){var e=this,t=e.options;e.$dialog.find(t.table).on(\"table:loaded\",(function(){var n=e.getCheckbox();t.multiple||$(this).find(\".checkbox-grid-header\").remove(),n.on(\"change\",(function(){var i=$(this),l=i.data(\"id\"),o=i.data(\"label\");if(this.checked){if(t.multiple||(e.selected={}),e.selected[l]={id:l,label:o},t.max&&e.getSelectedRows()[0].length>t.max)return i.prop(\"checked\",!1),delete e.selected[l],Dcat.warning(e.options.lang.exceed_max_item)}else delete e.selected[l];t.multiple||this.checked&&n.each((function(){var e=$(this);e.data(\"id\")!=l&&(e.prop(\"checked\",!1),e.parents(\"tr\").css(\"background-color\",\"\"))}))})),n.each((function(){var t=$(this),n=t.data(\"id\");for(var i in e.labels[n]=t.data(\"label\"),e.selected)n!=i||t.prop(\"checked\",!0).trigger(\"change\");t.trigger(\"change\")}))}))},resetSelected:function(){var e=this.getKeys();for(var t in this.selected={},e)this.selected[e[t]]={id:e[t],label:this.labels[e[t]]}},getCheckbox:function(){return this.$dialog.find('.checkbox-grid-column input[type=\"checkbox\"]')},getSelectedRows:function(){var e=[],t=[];for(var n in this.selected)this.selected[n]&&(t.push(n),e.push(this.selected[n]));return[e,t]},render:function(e){var t=this.options,n=$(t.container),i=n.find(\".default-text\"),l=n.find(\".option\");return e&&e.length?(i.addClass(\"d-none\"),l.removeClass(\"d-none\"),t.multiple?function(e,t,n){var i=[],l=$(n.container),o=l.find(\".default-text\"),a=l.find(\".option\");l.hasClass(\"select2\")||l.addClass(\"select2 select2-container select2-container--default select2-container--below\");for(var c in l.removeClass(\"form-control\"),e)i.push('<li class=\"select2-selection__choice\" >\\n    '.concat(e[c].label,' <span data-id=\"').concat(e[c].id,'\" class=\"select2-selection__choice__remove remove \" role=\"presentation\"> ×</span>\\n</li>'));i.unshift('<span class=\"select2-selection__clear remove-all\">×</span>'),i='<span class=\"select2-selection select2-selection--multiple\">\\n <ul class=\"select2-selection__rendered\">'.concat(i.join(\"\"),\"</ul>\\n </span>\");var s=$(i);function r(){a.html(\"\"),o.removeClass(\"d-none\"),a.addClass(\"d-none\"),l.addClass(\"form-control\"),t.setKeys([])}a.html(s),s.find(\".remove\").on(\"click\",(function(){var e=$(this);t.deleteKey(e.data(\"id\")),e.parent().remove(),t.getKeys().length||r()})),s.find(\".remove-all\").on(\"click\",r)}(e,this,t):function(e,t,n){var i=$(n.container),l=i.find(\".default-text\"),o=i.find(\".option\"),a=$(\"<div class='pull-right ' style='font-weight:bold;cursor:pointer'>×</div>\");o.text(e[0].label),o.append(a),a.on(\"click\",(function(){t.setKeys([]),l.removeClass(\"d-none\"),o.addClass(\"d-none\")}))}(e,this,t)):(i.removeClass(\"d-none\"),l.addClass(\"d-none\"),void(t.multiple&&n.addClass(\"form-control\")))},setKeys:function(e){this.$input.val(e.length?e.join(\",\"):\"\").trigger(\"change\")},deleteKey:function(e){var t=this.getKeys(),n=[];for(var i in t)t[i]!=e&&n.push(t[i]);this.setKeys(n)},getKeys:function(){var e=this.$input.val();return e?String(e).split(\",\"):[]}},Dcat.grid.SelectTable=function(e){return new t(e)}}(window)}});\n//# sourceMappingURL=select-table.js.map"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/extra/upload.css",
    "content": ".webuploader-container{position:relative}.web-uploader .queueList{border-radius:.25rem;border-color:#dbe3e6!important}.webuploader-element-invisible{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.webuploader-pick{will-change:box-shadow!important;box-shadow:0 3px 1px -2px rgba(0,0,0,.065),0 2px 2px 0 rgba(0,0,0,.065),0 1px 5px 1px rgba(0,0,0,.065);border:1px solid transparent;display:inline-block;padding:.55rem 12px;border-radius:.2rem;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;color:#fff}.webuploader-pick-hover{opacity:.9}.webuploader-pick-disable{opacity:.6;pointer-events:none}.web-uploader{border:0;color:#555;font-size:12px;margin-top:10px;background-color:transparent}.web-uploader.disabled{background-color:#eee;min-height:34px;cursor:not-allowed}.web-uploader.file{border:0}.element-invisible{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.web-uploader .placeholder{border:3px dashed #e6e6e6;text-align:center;color:#ccc;font-size:16px;position:relative}.web-uploader .placeholder .webuploader-pick{border-radius:3px;line-height:34px;padding:0 25px;color:#fff;display:inline-block;margin:0 auto 15px;cursor:pointer}.web-uploader .placeholder .webuploader-pick-hover{opacity:.9}.web-uploader .placeholder p{margin:0 0 15px}.web-uploader .placeholder .flashTip{color:#666;font-size:12px;position:absolute;width:100%;text-align:center;bottom:20px}.web-uploader .placeholder .flashTip a{text-decoration:none}.web-uploader .placeholder .flashTip a:hover{text-decoration:underline}.web-uploader .placeholder.webuploader-dnd-over{border-color:#999}.web-uploader .placeholder.webuploader-dnd-over.webuploader-dnd-denied{border-color:#bd4147}.web-uploader .filelist{list-style:none;margin:0;padding:0}.web-uploader .filelist:after{content:\"\";display:block;width:0;height:0;overflow:hidden;clear:both}.web-uploader .filelist li{width:120px;text-align:center;position:relative;float:left;overflow:hidden;border-radius:2px;font-size:12px;border:1px solid #dbe3e6;background:#fff;display:table;margin:8px;height:160px;padding:6px;vertical-align:middle}.web-uploader.file .filelist li{width:100%;height:38px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.05),0 1px 5px 1px rgba(0,0,0,.05);margin:0 8px 10px 0;border-radius:.25rem;border:0;padding:0}.web-uploader.file .filelist li .file-action{float:right;margin:12px 10px 0;cursor:pointer;font-size:1rem;position:absolute;right:0}.web-uploader .filelist li p.log{position:relative;top:-45px}.web-uploader .filelist li p.title{left:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;top:35px;text-indent:5px;width:160px;text-align:center;padding-top:4px;font-size:11px;color:#555;margin:3px auto}.web-uploader.file .filelist li p.title{font-weight:600;font-size:1rem;vertical-align:middle;height:38px;line-height:30px;padding-left:8px;float:left;text-align:left;width:100%}.web-uploader .filelist .file-type{display:none;font-size:18px;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.2);margin:20px 0 5px;height:105px}.web-uploader .filelist li p.upload-progress{position:absolute;width:100%;bottom:0;left:0;height:8px;overflow:hidden;z-index:50}.web-uploader .filelist li p.upload-progress span{display:none;overflow:hidden;width:0;height:100%;-webit-transition:width .2s linear;transition:width .2s linear;-webkit-animation:progressmove 2s linear infinite;animation:progressmove 2s linear infinite;-webkit-transform:translateZ(0)}@-webkit-keyframes progressmove{0%{background-position:0 0}to{background-position:17px 0}}@keyframes progressmove{0%{background-position:0 0}to{background-position:17px 0}}.web-uploader .filelist li .imgWrap{position:relative;z-index:2;line-height:100%;vertical-align:middle;overflow:hidden;width:100%;height:120px;transform-origin:50% 50%;-webit-transition:.2s ease-out;transition:.2s ease-out;margin-bottom:0}.web-uploader .filelist li img{max-width:95%;height:120px}.web-uploader .filelist li p.error{background:#bd4147;color:#fff;position:absolute;bottom:0;left:0;height:28px;line-height:28px;width:100%;z-index:100}.web-uploader.file .filelist li p.error{background:#bd4147;color:#fff;font-weight:500;padding:0 20px;width:auto;margin-left:40%;top:0}.web-uploader .filelist li .success{display:block;position:absolute;left:0;bottom:0;height:40px;width:100%;z-index:2}.web-uploader .filelist li .success em{position:absolute;right:0;border-color:transparent transparent #21b978;border-style:solid;border-width:0 0 33px 40px;bottom:-1px}.web-uploader li .success i{position:absolute;bottom:5px;right:0;color:#fff;background:none;border:none;font-weight:700;outline:none;text-align:center;width:20px}.web-uploader .filelist div.file-panel{position:absolute;height:32px;width:100%;bottom:0;left:0;overflow:hidden;z-index:10}.web-uploader .filelist div.file-panel span{display:inline;float:left;width:24px;height:24px;line-height:26px;overflow:hidden;margin:5px 3px;font-weight:700;cursor:pointer;color:#fff;border-radius:1px;font-size:14px}.web-uploader .filelist div.file-panel a:first-child{margin-left:6px}.web-uploader .filelist div.file-panel a{float:left;box-shadow:none;padding-left:8px!important;padding-right:8px!important}.web-uploader .statusBar{vertical-align:middle;position:relative}.web-uploader.file .statusBar{border-top:0;padding:0}.web-uploader .statusBar .upload-progress{border:0;width:198px;height:18px;display:inline-block;text-align:center;line-height:45px;color:#fff;margin-top:20px;position:relative;margin-right:10px;border-radius:2px}.web-uploader .statusBar .upload-progress span.percentage{width:0;height:100%;left:0;top:0;position:absolute}.web-uploader .statusBar .upload-progress span.text{position:relative;z-index:10}.web-uploader .statusBar .info{display:inline-block;font-size:14px;color:#666!important;margin-top:20px}.web-uploader .statusBar .btns{margin-top:4px;right:20px;line-height:40px;float:right}.web-uploader.file .statusBar .btns{right:0}.add-file-button{display:inline-block;float:left}.web-uploader .placeholder:before{font-family:feather;font-size:58px;content:\"\\E8E3\"}.red-dark{color:#bd4147}.green{color:#21b978}.icon-success{font-weight:700;font-size:17px;display:none}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/extra/upload.js",
    "content": "!function(e){var t={};function a(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=e,a.c=t,a.d=function(e,t,i){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(a.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)a.d(i,r,function(t){return e[t]}.bind(null,r));return i},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p=\"/\",a(a.s=12)}({12:function(e,t,a){e.exports=a(15)},15:function(e,t,a){\"use strict\";function i(e,t){for(var a=0;a<t.length;a++){var i=t[a];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}a.r(t);var r=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.uploader=t,this.isSupportBase64=this.supportBase64()}var t,a,r;return t=e,(a=[{key:\"supportBase64\",value:function(){var e=new Image,t=!0;return e.onload=e.onerror=function(){1==this.width&&1==this.height||(t=!1)},e.src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==\",t}},{key:\"showError\",value:function(e){var t=\"Unknown error!\";e&&e.data&&(t=e.data.message||t),Dcat.error(t)}},{key:\"orderFiles\",value:function(e){var t=e.parents(\"li\").first(),a=e.data(\"id\"),i=e.data(\"order\"),r=t.prev(),s=t.next();if(i){if(!r.length)return;return this.swrapUploadedFile(a,i),void this.uploader.reRenderUploadedFiles()}s.length&&(this.swrapUploadedFile(a,i),this.uploader.reRenderUploadedFiles())}},{key:\"swrapUploadedFile\",value:function(e,t){var a=this.uploader.addUploadedFile.uploadedFiles,i=parseInt(this.searchUploadedFile(e)),r=a[i],s=a[i-1],n=a[i+1];if(t){if(0===i)return;a[i-1]=r,a[i]=s}else{if(!n)return;a[i+1]=r,a[i]=n}this.setUploadedFilesToInput()}},{key:\"setUploadedFilesToInput\",value:function(){var e,t=this.uploader,a=t.addUploadedFile.uploadedFiles,i=[];for(e in a)a[e]&&i.push(a[e].serverId);t.input.set(i)}},{key:\"searchUploadedFile\",value:function(e){var t=this.uploader.addUploadedFile.uploadedFiles;for(var a in t)if(t[a].serverId===e)return a;return-1}}])&&i(t.prototype,a),r&&i(t,r),e}();function s(e,t){for(var a=0;a<t.length;a++){var i=t[a];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var n=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.uploader=t}var t,a,i;return t=e,(a=[{key:\"delete\",value:function(e,t){var a=this.uploader,i=a.options,r=a.uploader;Dcat.confirm(a.lang.trans(\"confirm_delete_file\"),e.serverId,(function(){var s=i.deleteData;if(s.key=e.serverId,!s.key)return a.input.delete(e.serverId),r.removeFile(e);s._column=a.getColumn(),s._relation=a.relation,Dcat.loading(),$.post({url:i.deleteUrl,data:s,success:function(e){Dcat.loading(!1),e.status?t(e):a.helper.showError(e)}})}))}},{key:\"update\",value:function(){var e=this.uploader,t=e.uploader,a=e.options,i=e.getColumn(),r=this.relation,s=e.input.get(),n=t.getStats().successNum,l=$.extend({},a.formData);if(n&&s&&a.autoUpdateColumn){if(r){if(!r[1])return;l[r[0]]={},l[r[0]][r[1]]={},l[r[0]][r[1]][i]=s.join(\",\")}else l[i]=s.join(\",\");delete l._relation,delete l.upload_column,$.post({url:a.updateServer,data:l})}}}])&&s(t.prototype,a),i&&s(t,i),e}();function l(e,t){for(var a=0;a<t.length;a++){var i=t[a];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var o=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.uploader=t,this.$selector=t.$selector.find(t.options.inputSelector)}var t,a,i;return t=e,(a=[{key:\"get\",value:function(){var e=this.$selector.val();return e?e.split(\",\"):[]}},{key:\"add\",value:function(e){var t=this.get();t.push(e),this.set(t)}},{key:\"set\",value:function(e){e=e.filter((function(e,t,a){return a.indexOf(e)===t})).filter((function(e){return!!e})),this.$selector.val(e.join(\",\")).trigger(\"change\")}},{key:\"delete\",value:function(e){if(this.deleteUploadedFile(e),!e)return this.$selector.val(\"\");this.set(this.get().filter((function(t){return t!=e})))}},{key:\"deleteUploadedFile\",value:function(e){var t=this.uploader.addUploadedFile;t.uploadedFiles=t.uploadedFiles.filter((function(t){return t.serverId!=e}))}},{key:\"removeValidatorErrors\",value:function(){this.$selector.parents(\".form-group,.form-label-group,.form-field\").find(\".with-errors\").html(\"\")}}])&&l(t.prototype,a),i&&l(t,i),e}();function d(e,t){for(var a=0;a<t.length;a++){var i=t[a];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var u=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.uploader=t,this.state=\"pending\",this.originalFilesNum=Dcat.helpers.len(t.options.preview)}var t,a,i;return t=e,(a=[{key:\"switch\",value:function(e,t){var a=this.uploader;if(t=t||{},e!==this.state){switch(a.$uploadButton&&(a.$uploadButton.removeClass(\"state-\"+this.state),a.$uploadButton.addClass(\"state-\"+e)),this.state=e,this.state){case\"pending\":this.pending();break;case\"ready\":this.ready();break;case\"uploading\":this.uploading();break;case\"paused\":this.paused();break;case\"confirm\":this.confirm();break;case\"finish\":this.finish();break;case\"decrOriginalFileNum\":this.decrOriginalFileNum();break;case\"incrOriginalFileNum\":this.incrOriginalFileNum();break;case\"decrFileNumLimit\":this.decrFileNumLimit(t.num);break;case\"incrFileNumLimit\":this.incrFileNumLimit(t.num||1);break;case\"init\":this.init()}this.updateStatusText()}}},{key:\"incrOriginalFileNum\",value:function(){this.originalFilesNum++}},{key:\"decrOriginalFileNum\",value:function(){this.originalFilesNum>0&&this.originalFilesNum--}},{key:\"confirm\",value:function(){var e,t=this.uploader,a=t.uploader;a&&(t.$progress.hide(),t.$selector.find(t.options.addFileButton).removeClass(\"element-invisible\"),t.$uploadButton.text(t.lang.trans(\"start_upload\")),(e=a.getStats()).successNum&&!e.uploadFailNum&&this.switch(\"finish\"))}},{key:\"paused\",value:function(){var e=this.uploader;e.$progress.show(),e.$uploadButton.text(e.lang.trans(\"go_on_upload\"))}},{key:\"uploading\",value:function(){var e=this.uploader;e.$selector.find(e.options.addFileButton).addClass(\"element-invisible\"),e.$progress.show(),e.$uploadButton.text(e.lang.trans(\"pause_upload\"))}},{key:\"pending\",value:function(){var e=this.uploader;e.options.disabled||(e.$placeholder.removeClass(\"element-invisible\"),e.$files.hide(),e.$statusBar.addClass(\"element-invisible\"),e.isImage()&&(e.$wrapper.removeAttr(\"style\"),e.$wrapper.find(\".queueList\").removeAttr(\"style\")),e.uploader.refresh())}},{key:\"decrFileNumLimit\",value:function(e){var t,a=this.uploader.uploader;a&&(\"-1\"==(t=a.option(\"fileNumLimit\"))&&(t=0),0==(e=t>=(e=e||1)?t-e:0)&&(e=\"-1\"),a.option(\"fileNumLimit\",e))}},{key:\"incrFileNumLimit\",value:function(e){var t,a=this.uploader.uploader;a&&(\"-1\"==(t=a.option(\"fileNumLimit\"))&&(t=0),e=t+(e=e||1),a.option(\"fileNumLimit\",e))}},{key:\"ready\",value:function(){var e=this.uploader,t=e.options;e.$placeholder.addClass(\"element-invisible\"),e.$selector.find(e.options.addFileButton).removeClass(\"element-invisible\"),e.$files.show(),t.disabled||e.$statusBar.removeClass(\"element-invisible\"),e.uploader.refresh(),e.isImage()&&e.$wrapper.find(\".queueList\").css({border:\"1px solid #d3dde5\",padding:\"5px\"}),setTimeout((function(){e.input.removeValidatorErrors()}),10)}},{key:\"finish\",value:function(){var e,t=this.uploader,a=t.options,i=t.uploader;i&&((e=i.getStats()).successNum?(Dcat.success(t.lang.trans(\"upload_success_message\",{success:e.successNum})),setTimeout((function(){1==a.upload.fileNumLimit&&(i.request(\"get-stats\").numOfSuccess=0)}),10)):(this.state=\"done\",Dcat.reload()))}},{key:\"init\",value:function(){var e=this.uploader,t=e.options;e.$uploadButton.addClass(\"state-\"+this.state),this.updateProgress(),this.originalFilesNum||t.disabled?(e.$placeholder.addClass(\"element-invisible\"),t.disabled?e.$wrapper.addClass(\"disabled\"):e.$statusBar.show(),this.switch(\"ready\")):e.isImage()&&(e.$wrapper.removeAttr(\"style\"),e.$wrapper.find(\".queueList\").css(\"margin\",\"0\")),e.uploader.refresh()}},{key:\"updateStatusText\",value:function(){var e,t=this.uploader,a=t.uploader,i=t.lang.trans.bind(t.lang),r=\"\";function s(){(e=a.getStats()).successNum&&(r=i(\"selected_success\",{num:t.fileCount,size:WebUploader.formatSize(t.fileSize),success:e.successNum})),e.uploadFailNum&&(r+=(r?i(\"dot\"):\"\")+i(\"failed_num\",{fail:e.uploadFailNum}))}a&&(\"ready\"===this.state?(e=a.getStats(),t.fileCount?r=i(\"selected_files\",{num:t.fileCount,size:WebUploader.formatSize(t.fileSize)}):s()):\"confirm\"===this.state?(e=a.getStats()).uploadFailNum&&(r=i(\"selected_has_failed\",{success:e.successNum,fail:e.uploadFailNum})):s(),t.$infoBox.html(r))}},{key:\"updateProgress\",value:function(){var e,t=this.uploader,a=0,i=0,r=t.$progress.find(\".progress-bar\");$.each(t.percentages,(function(e,t){i+=t[0],a+=t[0]*t[1]})),e=i?a/i:0,e=Math.round(100*e)+\"%\",r.text(e),r.css(\"width\",e),this.updateStatusText()}}])&&d(t.prototype,a),i&&d(t,i),e}();function c(e,t){for(var a=0;a<t.length;a++){var i=t[a];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var p=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.uploader=t}var t,a,i;return t=e,(a=[{key:\"render\",value:function(e){var t,a,i=this.uploader,r=i.isImage(),s=WebUploader.formatSize(e.size),n=e.name||null;r?(t=$('<li id=\"'.concat(i.getFileViewSelector(e.id),'\" title=\"').concat(n,'\" >\\n                    <p class=\"file-type\">').concat(e.ext.toUpperCase()||\"FILE\",'</p>\\n                    <p class=\"imgWrap \"></p>\\n                    <p class=\"title\" style=\"\">').concat(e.name,'</p>\\n                    <p class=\"title\" style=\"margin-bottom:20px;\">(<b>').concat(s,\"</b>)</p>\\n                    </li>\")),a=$('<div class=\"file-panel\">\\n                    <a class=\"btn btn-sm btn-white\" data-file-act=\"cancel\"><i class=\"feather icon-x red-dark\" style=\"font-size:13px\"></i></a>\\n                    <a class=\"btn btn-sm btn-white\" data-file-act=\"delete\" style=\"display: none\">\\n                    <i class=\"feather icon-trash red-dark\" style=\"font-size:13px\"></i></a>\\n                    <a class=\"btn btn-sm btn-white\" data-file-act=\"preview\" ><i class=\"feather icon-zoom-in\"></i></a>\\n                    <a class=\\'btn btn-sm btn-white\\' data-file-act=\\'order\\' data-order=\"1\" style=\"display: none\"><i class=\\'feather icon-arrow-up\\'></i></a>\\n                    <a class=\\'btn btn-sm btn-white\\' data-file-act=\\'order\\' data-order=\"0\" style=\"display: none\"><i class=\\'feather icon-arrow-down\\'></i></a>\\n\\n                    </div>').appendTo(t)):(t=$('\\n                    <li id=\"'.concat(i.getFileViewSelector(e.id),'\" title=\"').concat(e.nam,'\">\\n                    <p class=\"title\" style=\"display:block\">\\n                        <i class=\"feather icon-check green _success icon-success\"></i>\\n                        ').concat(e.name,\" (\").concat(s,\")\\n                    </p>\\n                    </li>\\n                \")),a=$('\\n<span style=\"right: 45px;\" class=\"file-action d-none\" data-file-act=\\'order\\' data-order=\"1\"><i class=\\'feather icon-arrow-up\\'></i></span>\\n<span style=\"right: 25px;\" class=\"file-action d-none\" data-file-act=\\'order\\' data-order=\"0\"><i class=\\'feather icon-arrow-down\\'></i></span>\\n<span data-file-act=\"cancel\" class=\"file-action\" style=\"font-size:13px\">\\n    <i class=\"feather icon-x red-dark\"></i>\\n</span>\\n<span data-file-act=\"delete\" class=\"file-action\" style=\"display:none\">\\n    <i class=\"feather icon-trash red-dark\"></i>\\n</span>\\n').appendTo(t)),t.appendTo(i.$files),setTimeout((function(){t.css({margin:\"5px\"})}),50),\"invalid\"===e.getStatus()?this.showError(t,e.statusText,e):(r&&this.showImage(t,e),i.percentages[e.id]=[e.size,0],e.rotation=0),e.on(\"statuschange\",this.resolveStatusChangeCallback(t,a,e)),(r?a.find(\"a\"):a).on(\"click\",this.resolveActionsCallback(e))}},{key:\"showError\",value:function(e,t,a){var i=this.uploader.lang,r=\"\",s=$('<p class=\"error\"></p>');switch(t){case\"exceed_size\":r=i.trans(\"exceed_size\");break;case\"interrupt\":r=i.trans(\"interrupt\");break;default:r=i.trans(\"upload_failed\")}this.uploader.faildFiles[a.id]=a,s.text(r).appendTo(e)}},{key:\"showImage\",value:function(e,t){var a=this,i=a.uploader.uploader,r=e.find(\"p.imgWrap\"),s=i.makeThumb(t,(function(t,i){var s;if(r.empty(),t)return e.find(\".title\").show(),void e.find(\".file-type\").show();a.uploader.helper.isSupportBase64?(s=$('<img src=\"'+i+'\">'),r.append(s)):e.find(\".file-type\").show()}));try{s.once(\"load\",(function(){t._info=t._info||s.info(),t._meta=t._meta||s.meta();var e=t._info.width,r=t._info.height;if(!a.validateDimensions(t))return Dcat.error(\"The image dimensions is invalid.\"),i.removeFile(t),!1;s.resize(e,r)}))}catch(e){return setTimeout((function(){i.removeFile(t)}),10)}}},{key:\"resolveStatusChangeCallback\",value:function(e,t,a){var i=this,r=i.uploader;return function(s,n,l){console.log(123,s,n,a),\"progress\"===n||\"queued\"===n&&(t.find('[data-file-act=\"cancel\"]').hide(),t.find('[data-file-act=\"delete\"]').show()),\"error\"===s||\"invalid\"===s?(i.showError(e,a.statusText,a),r.percentages[a.id][1]=1):\"interrupt\"===s?i.showError(e,\"interrupt\",a):\"queued\"===s?r.percentages[a.id][1]=0:\"progress\"===s?i.removeError(e):\"complete\"===s&&(i.uploader.isImage()?e.append('<span class=\"success\"><em></em><i class=\"feather icon-check\"></i></span>'):e.find(\"._success\").show()),e.removeClass(\"state-\"+n).addClass(\"state-\"+s)}}},{key:\"resolveActionsCallback\",value:function(e){var t=this.uploader,a=t.uploader,i=t.helper;return function(){switch($(this).data(\"file-act\")){case\"cancel\":return void a.removeFile(e);case\"deleteurl\":case\"delete\":if(t.options.removable)return t.input.delete(e.serverId),a.removeFile(e);t.request.delete(e,(function(){t.input.delete(e.serverId),a.removeFile(e)}));break;case\"preview\":Dcat.helpers.previewImage(t.$wrapper.find(\"img\").attr(\"src\"),null,e.name);break;case\"order\":$(this).attr(\"data-id\",e.serverId),i.orderFiles($(this))}}}},{key:\"removeError\",value:function(e){e.find(\".error\").remove()}},{key:\"validateDimensions\",value:function(e){var t=this.uploader,a=t.options,i=a.dimensions,r=e._info.width,s=e._info.height,n=Dcat.helpers.isset;return!(t.isImage()&&this.isImage(e)&&Dcat.helpers.len(a.dimensions)&&(n(i,\"width\")&&i.width!=r||n(i,\"min_width\")&&i.min_width>r||n(i,\"max_width\")&&i.max_width<r||n(i,\"height\")&&i.height!=s||n(i,\"min_height\")&&i.min_height>s||n(i,\"max_height\")&&i.max_height<s||n(i,\"ratio\")&&i.ratio!=r/s))}},{key:\"isImage\",value:function(e){return e.type.match(/^image/)}}])&&c(t.prototype,a),i&&c(t,i),e}();function f(e,t){for(var a=0;a<t.length;a++){var i=t[a];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var h=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.uploader=t,this.uploadedFiles=[],this.init=!1}var t,a,i;return t=e,(a=[{key:\"render\",value:function(e){var t=this,a=t.uploader,i=a.options,r=a.isImage(),s=\"\";s+=\"<li title='\"+e.serverPath+\"'>\",!r&&i.sortable&&(s+='\\n<p style=\"right: 45px\" class=\"file-action\" data-file-act=\\'order\\' data-order=\"1\" data-id=\\''.concat(e.serverId,\"'><i class='feather icon-arrow-up'></i></p>\\n<p style=\\\"right: 25px\\\" class=\\\"file-action\\\" data-file-act='order' data-order=\\\"0\\\" data-id='\").concat(e.serverId,\"'><i class='feather icon-arrow-down'></i></p>\\n\")),r?s+=\"<p class='imgWrap'><img src='\".concat(e.serverUrl,\"'></p>\"):i.disabled||(s+='<p class=\"file-action\" data-file-act=\"delete\" data-id=\"'.concat(e.serverId,'\"><i class=\"feather icon-trash red-dark\"></i></p>')),s+=\"<p class='title' style=''><i class='feather icon-check text-white icon-success text-white'></i>\",s+=e.serverPath,s+=\"</p>\",r&&(s+=\"<p class='title' style='margin-bottom:20px;'>&nbsp;</p>\",s+=\"<div class='file-panel' >\",i.disabled||(s+=\"<a class='btn btn-sm btn-white' data-file-act='deleteurl' data-id='\".concat(e.serverId,\"'><i class='feather icon-trash red-dark' style='font-size:13px'></i></a>\")),s+=\"<a class='btn btn-sm btn-white' data-file-act='preview' data-url='\".concat(e.serverUrl,\"' ><i class='feather icon-zoom-in'></i></a>\"),i.sortable&&(s+=\"\\n<a class='btn btn-sm btn-white' data-file-act='order' data-order=\\\"1\\\" data-id='\".concat(e.serverId,\"'><i class='feather icon-arrow-up'></i></a>\\n<a class='btn btn-sm btn-white' data-file-act='order' data-order=\\\"0\\\" data-id='\").concat(e.serverId,\"'><i class='feather icon-arrow-down'></i></a>\\n\")),s+=\"</div>\"),s+=\"</li>\",s=$(s),r||(s.find(\".file-type\").show(),s.find(\".title\").show(),a.$wrapper.css(\"background\",\"transparent\"));var n=function(){var e=$(this).data(\"id\");if(i.removable)return s.remove(),t.removeFormFile(e);a.request.delete({serverId:e},(function(){s.remove(),t.removeFormFile(e)}))};s.find('[data-file-act=\"deleteurl\"]').click(n),s.find('[data-file-act=\"delete\"]').click(n),i.sortable&&s.find('[data-file-act=\"order\"').click((function(){a.helper.orderFiles($(this))})),s.find('[data-file-act=\"preview\"]').click((function(){var e=$(this).data(\"url\");Dcat.helpers.previewImage(e)})),a.formFiles[e.serverId]=e,a.input.add(e.serverId),a.$files.append(s),r&&(setTimeout((function(){s.css(\"margin\",\"5px\")}),t.init?0:400),t.init=1)}},{key:\"reRender\",value:function(){for(var e in this.uploadedFiles)this.uploadedFiles[e]&&this.render(this.uploadedFiles[e])}},{key:\"removeFormFile\",value:function(e){if(e){var t=this.uploader,a=this.uploader,i=t.formFiles[e];t.input.delete(e),delete t.formFiles[e],a&&!i.fake&&a.removeFile(i),t.status.switch(\"decrOriginalFileNum\"),t.status.switch(\"incrFileNumLimit\"),Dcat.helpers.len(t.formFiles)||Dcat.helpers.len(t.percentages)||t.status.switch(\"pending\")}}},{key:\"add\",value:function(e){e.serverId&&-1===this.uploader.helper.searchUploadedFile(e.serverId)&&this.uploadedFiles.push(e)}}])&&f(t.prototype,a),i&&f(t,i),e}();function m(e,t){for(var a=0;a<t.length;a++){var i=t[a];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}!function(e,t){var a=e.Dcat,i=function(){function e(i){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.options=i=t.extend({wrapper:\".web-uploader\",addFileButton:\".add-file-button\",inputSelector:\"\",isImage:!1,preview:[],server:\"\",updateServer:\"\",autoUpload:!1,sortable:!1,deleteUrl:\"\",deleteData:{},thumbHeight:160,elementName:\"\",disabled:!1,autoUpdateColumn:!1,removable:!1,dimensions:{},lang:{exceed_size:\"文件大小超出\",interrupt:\"上传暂停\",upload_failed:\"上传失败，请重试\",selected_files:\"选中:num个文件，共:size。\",selected_has_failed:'已成功上传:success个文件，:fail个文件上传失败，<a class=\"retry\"  href=\"javascript:\"\";\">重新上传</a>失败文件或<a class=\"ignore\" href=\"javascript:\"\";\">忽略</a>',selected_success:\"共:num个(:size)，已上传:success个。\",dot:\"，\",failed_num:\"失败:fail个。\",pause_upload:\"暂停上传\",go_on_upload:\"继续上传\",start_upload:\"开始上传\",upload_success_message:\"已成功上传:success个文件\",go_on_add:\"继续添加\",Q_TYPE_DENIED:\"对不起，不允许上传此类型文件\",Q_EXCEED_NUM_LIMIT:\"对不起，已超出文件上传数量限制，最多只能上传:num个文件\",F_EXCEED_SIZE:\"对不起，当前选择的文件过大\",Q_EXCEED_SIZE_LIMIT:\"对不起，已超出文件大小限制\",F_DUPLICATE:\"文件重复\",confirm_delete_file:\"您确定要删除这个文件吗？\"},upload:{formData:{_id:null},thumb:{width:160,height:160,quality:70,allowMagnify:!0,crop:!0,preserveHeaders:!1,type:\"image/jpeg\"}}},i);this.uploader=WebUploader.create(i.upload),this.$selector=t(i.selector),this.updateColumn=i.upload.formData.upload_column||\"webup\"+a.helpers.random(),this.relation=i.upload.formData._relation;var s=new r(this),l=new n(this),d=new u(this),c=new p(this),f=new h(this),m=new o(this);this.helper=s,this.request=l,this.status=d,this.addFile=c,this.addUploadedFile=f,this.input=m,this.lang=a.Translator(i.lang),this.percentages={},this.faildFiles={},this.formFiles={},this.fileCount=0,this.fileSize=0,void 0!==i.upload.formData._id&&i.upload.formData._id||(i.upload.formData._id=this.updateColumn+a.helpers.random())}var i,s,l;return i=e,(s=[{key:\"build\",value:function(){var e=this,i=e.uploader,r=e.options,s=e.$selector.find(r.wrapper),n=t('<ul class=\"filelist\"></ul>').appendTo(s.find(\".queueList\")),l=s.find(\".statusBar\"),o=l.find(\".info\"),d=s.find(\".upload-btn\"),u=s.find(\".placeholder\"),c=l.find(\".upload-progress\").hide();e.$wrapper=s,e.$files=n,e.$statusBar=l,e.$uploadButton=d,e.$placeholder=u,e.$progress=c,e.$infoBox=o,r.upload.fileNumLimit>1&&!r.disabled&&i.addButton({id:r.addFileButton,label:'<i class=\"feather icon-folder\"></i> &nbsp;'+e.lang.trans(\"go_on_add\")}),e.uploader.on(\"dndAccept\",(function(e){for(var t=!1,a=e.length,i=0;i<a;i++)if(~\"text/plain;application/javascript \".indexOf(e[i].type)){t=!0;break}return!t})),i.onUploadProgress=function(t,a){e.percentages[t.id][1]=a,e.status.updateProgress()},i.onFileQueued=function(t){e.fileCount++,e.fileSize+=t.size,1===e.fileCount&&(u.addClass(\"element-invisible\"),l.show()),e.addFile.render(t),e.status.switch(\"ready\"),e.status.updateProgress(),!r.disabled&&r.autoUpload&&i.upload()},i.onFileDequeued=function(t){e.fileCount--,e.fileSize-=t.size,e.fileCount||a.helpers.len(e.formFiles)||e.status.switch(\"pending\"),e.removeUploadFile(t)},i.on(\"all\",(function(t,a,i){switch(t){case\"uploadFinished\":e.status.switch(\"confirm\"),e.request.update();break;case\"startUpload\":e.status.switch(\"uploading\");break;case\"stopUpload\":e.status.switch(\"paused\");break;case\"uploadAccept\":if(!1===e._uploadAccept(a,i))return!1}})),i.onError=function(t){switch(t){case\"Q_TYPE_DENIED\":a.error(e.lang.trans(\"Q_TYPE_DENIED\"));break;case\"Q_EXCEED_NUM_LIMIT\":a.error(e.lang.trans(\"Q_EXCEED_NUM_LIMIT\",{num:r.upload.fileNumLimit}));break;case\"F_EXCEED_SIZE\":a.error(e.lang.trans(\"F_EXCEED_SIZE\"));break;case\"Q_EXCEED_SIZE_LIMIT\":a.error(e.lang.trans(\"Q_EXCEED_SIZE_LIMIT\"));break;case\"F_DUPLICATE\":a.warning(e.lang.trans(\"F_DUPLICATE\"));break;default:a.error(\"Error: \"+t)}},d.on(\"click\",(function(){var a=e.status.state;if(t(this).hasClass(\"disabled\"))return!1;\"ready\"===a||\"paused\"===a?i.upload():\"uploading\"===a&&i.stop()})),o.on(\"click\",\".retry\",(function(){i.retry()})),o.on(\"click\",\".ignore\",(function(){for(var t in e.faildFiles)i.removeFile(t,!0),delete e.faildFiles[t]})),e.status.switch(\"init\")}},{key:\"_uploadAccept\",value:function(e,t){var a=this.options;if(!t||!t.status)return this.helper.showError(t),this.faildFiles[e.file.id]=e.file,!1;if(!t.data||!t.data.merge){e.file.serverId=t.data.id,e.file.serverName=t.data.name,e.file.serverPath=t.data.path,e.file.serverUrl=t.data.url||null,this.addUploadedFile.add(e.file),this.input.add(t.data.id);var i=this.getFileView(e.file.id);this.isImage()||(i.find(\".file-action\").hide(),i.find('[data-file-act=\"delete\"]').show()),a.sortable&&i.find('[data-file-act=\"order\"]').removeClass(\"d-none\").show()}}},{key:\"preview\",value:function(){var e,t=this.options;for(e in t.preview){var a=t.preview[e].path,i=void 0;a.indexOf(\".\")&&(i=a.split(\".\").pop());var r={serverId:t.preview[e].id,serverUrl:t.preview[e].url,serverPath:a,ext:i,fake:1};this.status.switch(\"incrOriginalFileNum\"),this.status.switch(\"decrFileNumLimit\"),this.addUploadedFile.render(r),this.addUploadedFile.add(r)}}},{key:\"reRenderUploadedFiles\",value:function(){this.$files.html(\"\"),this.addUploadedFile.reRender()}},{key:\"refreshButton\",value:function(){this.uploader.refresh()}},{key:\"getFileViewSelector\",value:function(e){return this.options.elementName.replace(/[\\[\\]]*/g,\"_\")+\"-\"+e}},{key:\"getFileView\",value:function(e){return t(\"#\"+this.getFileViewSelector(e))}},{key:\"removeUploadFile\",value:function(e){var t=this.getFileView(e.id);delete this.percentages[e.id],this.status.updateProgress(),t.off().find(\".file-panel\").off().end().remove()}},{key:\"getColumn\",value:function(){return this.updateColumn}},{key:\"isImage\",value:function(){return this.options.isImage}}])&&m(i.prototype,s),l&&m(i,l),e}();a.Uploader=function(e){return new i(e)}}(window,jQuery)}});\n//# sourceMappingURL=upload.js.map"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/js/dcat-app.js",
    "content": "!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/\",n(n.s=5)}([function(module,exports){eval(function(e,t,n,o,r,a){if(r=function(e){return(e<62?\"\":r(parseInt(e/62)))+((e%=62)>35?String.fromCharCode(e+29):e.toString(36))},!\"\".replace(/^/,String)){for(;n--;)a[r(n)]=o[n]||r(n);o=[function(e){return a[e]}],r=function(){return\"\\\\w+\"},n=1}for(;n--;)o[n]&&(e=e.replace(new RegExp(\"\\\\b\"+r(n)+\"\\\\b\",\"g\"),o[n]));return e}('!14(t,e){\"4o\"==1A ac&&\"3d\"!=1A a7?a7.ac=e():\"14\"==1A 83&&83.ep?83(e):t.7V=e()}(1d,14(){\"8G eo\";14 f(t){17(f=\"14\"==1A 5i&&\"ag\"==1A 5i.en?14(t){17 1A t}:14(t){17 t&&\"14\"==1A 5i&&t.5Q===5i&&t!==5i.3b?\"ag\":1A t})(t)}14 o(t,e){1w(!(t 7P e))7K 2M 8i(\"ek 4A a 1j as a 14\")}14 i(t,e){2g(18 n=0;n<e.23;n++){18 o=e[n];o.6x=o.6x||!1,o.7F=!0,\"1K\"2O o&&(o.6A=!0),2d.e1(t,o.3r,o)}}14 r(t,e,n){17 e&&i(t.3b,e),n&&i(t,n),t}14 a(){17(a=2d.dW||14(t){2g(18 e=1;e<3u.23;e++){18 n=3u[e];2g(18 o 2O n)2d.3b.6I.4A(n,o)&&(t[o]=n[o])}17 t}).4Z(1d,3u)}14 s(t){17(s=2d.94?2d.9f:14(t){17 t.9g||2d.9f(t)})(t)}14 u(t,e){17(u=2d.94||14(t,e){17 t.9g=e,t})(t,e)}14 c(t,e,n){17(c=14(){1w(\"3d\"==1A 47||!47.6P)17!1;1w(47.6P.dV)17!1;1w(\"14\"==1A dU)17!0;89{17 5S.3b.5x.4A(47.6P(5S,[],14(){})),!0}7k(t){17!1}}()?47.6P:14(t,e,n){18 o=[1B];o.4t.4Z(o,e);18 i=2M(dS.90.4Z(t,o));17 n&&u(i,n.3b),i}).4Z(1B,3u)}14 l(t,e){17!e||\"4o\"!=1A e&&\"14\"!=1A e?14(t){1w(3l 0===t)7K 2M dQ(\"1d 9p\\'t 9N dP - dL() 9p\\'t 9N dJ\");17 t}(t):e}14 d(t,e,n){17(d=\"3d\"!=1A 47&&47.2k?47.2k:14(t,e,n){18 o=14(t,e){2g(;!2d.3b.6I.4A(t,e)&&1B!==(t=s(t)););17 t}(t,e);1w(o){18 i=2d.dI(o,e);17 i.2k?i.2k.4A(n):i.1K}})(t,e,n||t)}14 p(e){17 2d.57(e).dH(14(t){17 e[t]})}14 m(t){17 76.3b.dF.4A(t)}14 g(t){8Q.2n(\"\".1n(e,\" \").1n(t))}14 h(t,e){!14(t){-1===n.3t(t)&&(n.4t(t),y(t))}(\\'\"\\'.1n(t,\\'\" 53 dD 6q dB be dz 2O dy dx dw dv. du 8G \"\\').1n(e,\\'\" ds.\\'))}14 v(t){17 t&&36.4y(t)===t}14 t(t){18 e={};2g(18 n 2O t)e[t[n]]=\"13-\"+t[n];17 e}14 b(e,t,n){m(e.3W).2S(14(t){-1===p(k).3t(t)&&-1===p(B).3t(t)&&e.3W.71(t)}),t&&t[n]&&1V(e,t[n])}18 e=\"6Y:\",y=14(t){8Q.dr(\"\".1n(e,\" \").1n(t))},n=[],w=14(t){17\"14\"==1A t?t():t},C=2d.5F({3N:\"3N\",1P:\"1P\",3e:\"3e\",6U:\"6U\",4H:\"4H\"}),k=t([\"1h\",\"1q\",\"1E-1D\",\"5L\",\"1t\",\"3M\",\"26-1P\",\"1b\",\"1b-1q\",\"1b-1R\",\"6R\",\"31\",\"30\",\"6Q\",\"3e\",\"2I\",\"4O\",\"1z\",\"2F\",\"4n\",\"3N\",\"3C\",\"1r\",\"4e\",\"1i\",\"2l\",\"2s\",\"2b\",\"2v\",\"2A\",\"3E\",\"2h\",\"4N\",\"4h-4l\",\"25-3F\",\"3V-25-2D\",\"25-2D\",\"25-2D-1o\",\"2u\",\"2J\",\"19\",\"19-1O\",\"19-27\",\"19-1g\",\"19-1k\",\"1l\",\"1l-1O\",\"1l-27\",\"1l-1g\",\"1l-1k\",\"1v\",\"1v-1O\",\"1v-27\",\"1v-1g\",\"1v-1k\",\"1Y-5M\",\"1Y-1R\",\"1Y-6S\",\"6M\"]),B=t([\"1f\",\"5J\",\"5I\",\"4q\",\"2n\"]),x={4B:1B},S=14(t,e){17 t.3W.3X(e)};14 P(t,e){1w(!e)17 1B;5H(e){3i\"2b\":3i\"2h\":3i\"2l\":17 2y(t,k[e]);3i\"2A\":17 t.2T(\".\".1n(k.2A,\" 1i\"));3i\"2v\":17 t.2T(\".\".1n(k.2v,\" 1i:5G\"))||t.2T(\".\".1n(k.2v,\" 1i:4P-4Q\"));3i\"2s\":17 t.2T(\".\".1n(k.2s,\" 1i\"));4r:17 2y(t,k.1i)}}14 A(t){1w(t.2c(),\"2l\"!==t.1U){18 e=t.1K;t.1K=\"\",t.1K=e}}14 L(t,e,n){t&&e&&(\"3a\"==1A e&&(e=e.9n(/\\\\s+/).6C(9z)),e.2S(14(e){t.2S?t.2S(14(t){n?t.3W.9F(e):t.3W.71(e)}):n?t.3W.9F(e):t.3W.71(e)}))}14 E(t,e,n){n||0===4C(n)?t.1I[e]=\"4d\"==1A n?n+\"6y\":n:t.1I.aa(e)}14 T(t,e){18 n=1<3u.23&&3l 0!==e?e:\"1C\";t.1I.2z=\"\",t.1I.2B=n}14 O(t){t.1I.2z=\"\",t.1I.2B=\"1Z\"}14 M(t,e,n){e?T(t,n):O(t)}14 V(t){17!(!t||!(t.8m||t.dp||t.do().23))}14 j(t){18 e=22.4U(t),n=74(e.4v(\"1L-91\")||\"0\"),o=74(e.4v(\"6u-91\")||\"0\");17 0<n||0<o}14 q(){17 1m.1e.2T(\".\"+k.1h)}14 H(t){18 e=q();17 e?e.2T(t):1B}14 I(t){17 H(\".\"+t)}14 R(){18 t=2K();17 m(t.4w(\".\"+k.1r))}14 N(){18 t=R().6C(14(t){17 V(t)});17 t.23?t[0]:1B}14 D(){17 I(k.2I)}14 U(){17 I(k.1z)}14 4L(){17 I(k.4e)}14 z(){17 I(k[\"25-3F\"])}14 W(){17 I(k[\"4h-4l\"])}14 K(){17 H(\".\"+k.2F+\" .\"+k.4n)}14 F(){17 H(\".\"+k.2F+\" .\"+k.3N)}14 Z(){17 I(k.2F)}14 Q(){17 I(k.4O)}14 Y(){17 I(k.3C)}14 $(){17 I(k.3e)}14 J(){18 t=m(2K().4w(\\'[40]:1M([40=\"-1\"]):1M([40=\"0\"])\\')).dn(14(t,e){17 t=4C(t.4W(\"40\")),(e=4C(e.4W(\"40\")))<t?1:t<e?-1:0}),e=m(2K().4w(\\'a[8n], dm[8n], 1i:1M([2Q]), 2b:1M([2Q]), 2h:1M([2Q]), 3y:1M([2Q]), dl, 4o, dk, [40=\"0\"], [di], dg[8V], df[8V]\\')).6C(14(t){17\"-1\"!==t.4W(\"40\")});17 14(t){2g(18 e=[],n=0;n<t.23;n++)-1===e.3t(t[n])&&e.4t(t[n]);17 e}(t.1n(e)).6C(14(t){17 V(t)})}14 X(){17\"3d\"==1A 22||\"3d\"==1A 1m}14 G(t){bj.9d()&&ba!==t.29.1K&&bj.5Z(),ba=t.29.1K}14 5W(t,e){t 7P dd?e.37(t):\"4o\"===f(t)?9w(e,t):t&&(e.38=t)}18 ba,1V=14(t,e){L(t,e,!0)},3U=14(t,e){L(t,e,!1)},2y=14(t,e){2g(18 n=0;n<t.7x.23;n++)1w(S(t.7x[n],e))17 t.7x[n]},2K=14(){17 I(k.1t)},at=14(){17!5p()&&!1m.1e.3W.3X(k[\"26-1P\"])},5p=14(){17 1m.1e.3W.3X(k[\"1b-1q\"])},9T=\\'\\\\n <1H 2o-dc=\"\\'.1n(k.2I,\\'\" 2o-d8=\"\\').1n(k.1z,\\'\" 1j=\"\\').1n(k.1t,\\'\" 40=\"-1\">\\\\n   <1H 1j=\"\\').1n(k.4O,\\'\">\\\\n     <af 1j=\"\\').1n(k[\"25-3F\"],\\'\"></af>\\\\n     <1H 1j=\"\\').1n(k.1r,\" \").1n(B.2n,\\'\">\\\\n       <34 1j=\"13-x-2V\"><34 1j=\"13-x-2V-1o-1g\"></34><34 1j=\"13-x-2V-1o-1k\"></34></34>\\\\n     </1H>\\\\n     <1H 1j=\"\\').1n(k.1r,\" \").1n(B.4q,\\'\"></1H>\\\\n     <1H 1j=\"\\').1n(k.1r,\" \").1n(B.5J,\\'\"></1H>\\\\n     <1H 1j=\"\\').1n(k.1r,\" \").1n(B.5I,\\'\"></1H>\\\\n     <1H 1j=\"\\').1n(k.1r,\" \").1n(B.1f,\\'\">\\\\n       <1H 1j=\"13-1f-35-1o-1g\"></1H>\\\\n       <34 1j=\"13-1f-1o-3h\"></34> <34 1j=\"13-1f-1o-3c\"></34>\\\\n       <1H 1j=\"13-1f-6G\"></1H> <1H 1j=\"13-1f-6F\"></1H>\\\\n       <1H 1j=\"13-1f-35-1o-1k\"></1H>\\\\n     </1H>\\\\n     <d4 1j=\"\\').1n(k.4e,\\'\" />\\\\n     <8k 1j=\"\\').1n(k.2I,\\'\" 55=\"\\').1n(k.2I,\\'\"></8k>\\\\n     <3y 1U=\"3y\" 1j=\"\\').1n(k.3e,\\'\">&d3;</3y>\\\\n   </1H>\\\\n   <1H 1j=\"\\').1n(k.1z,\\'\">\\\\n     <1H 55=\"\\').1n(k.1z,\\'\"></1H>\\\\n     <1i 1j=\"\\').1n(k.1i,\\'\" />\\\\n     <1i 1U=\"2l\" 1j=\"\\').1n(k.2l,\\'\" />\\\\n     <1H 1j=\"\\').1n(k.2s,\\'\">\\\\n       <1i 1U=\"2s\" />\\\\n       <46></46>\\\\n     </1H>\\\\n     <2b 1j=\"\\').1n(k.2b,\\'\"></2b>\\\\n     <1H 1j=\"\\').1n(k.2v,\\'\"></1H>\\\\n     <3E 2g=\"\\').1n(k.2A,\\'\" 1j=\"\\').1n(k.2A,\\'\">\\\\n       <1i 1U=\"2A\" />\\\\n       <34 1j=\"\\').1n(k.3E,\\'\"></34>\\\\n     </3E>\\\\n     <2h 1j=\"\\').1n(k.2h,\\'\"></2h>\\\\n     <1H 1j=\"\\').1n(k[\"4h-4l\"],\\'\" 55=\"\\').1n(k[\"4h-4l\"],\\'\"></1H>\\\\n   </1H>\\\\n   <1H 1j=\"\\').1n(k.2F,\\'\">\\\\n     <3y 1U=\"3y\" 1j=\"\\').1n(k.4n,\\'\">8t</3y>\\\\n     <3y 1U=\"3y\" 1j=\"\\').1n(k.3N,\\'\">8x</3y>\\\\n   </1H>\\\\n   <1H 1j=\"\\').1n(k.3C,\\'\">\\\\n   </1H>\\\\n </1H>\\\\n\\').d2(/(^|\\\\n)\\\\s*/g,\"\"),ct=14(t){1w(14(){18 t=q();t&&(t.3I.7D(t),3U([1m.5a,1m.1e],[k[\"26-1P\"],k[\"1b-1q\"],k[\"d1-1R\"]]))}(),X())g(\"6Y 7H 1m 3S d0\");3m{18 e=1m.3A(\"1H\");e.4F=k.1h,e.38=9T;18 n=14(t){17\"3a\"==1A t?1m.2T(t):t}(t.29);n.37(e),14(t){18 e=2K();e.2P(\"cZ\",t.1b?\"cY\":\"9e\"),e.2P(\"2o-cX\",t.1b?\"cW\":\"cV\"),t.1b||e.2P(\"2o-3M\",\"4M\")}(t),14(t){\"6M\"===22.4U(t).4k&&1V(q(),k.6M)}(n),14(){18 t=U(),e=2y(t,k.1i),n=2y(t,k.2l),o=t.2T(\".\".1n(k.2s,\" 1i\")),i=t.2T(\".\".1n(k.2s,\" 46\")),r=2y(t,k.2b),a=t.2T(\".\".1n(k.2A,\" 1i\")),s=2y(t,k.2h);e.7N=G,n.5R=G,r.5R=G,a.5R=G,s.7N=G,o.7N=14(t){G(t),i.1K=o.1K},o.5R=14(t){G(t),o.cU.1K=o.1K}}()}},9w=14(t,e){1w(t.38=\"\",0 2O e)2g(18 n=0;n 2O e;n++)t.37(e[n].9B(!0));3m t.37(e.9B(!0))},dt=14(){1w(X())17!1;18 t=1m.3A(\"1H\"),e={cT:\"cS\",cR:\"cQ cP\",1L:\"cO\"};2g(18 n 2O e)1w(e.6I(n)&&3l 0!==t.1I[n])17 e[n];17!1}();14 7R(t,e,n){M(t,n[\"cN\"+e.cM(1)+\"ad\"],\"6t-4b\"),t.38=n[e+\"cL\"],t.2P(\"2o-3E\",n[e+\"cK\"]),t.4F=k[e],b(t,n.2i,e+\"ad\"),1V(t,n[e+\"cJ\"])}14 8c(t,e){18 n=Z(),o=K(),i=F();e.5f||e.5e?T(n):O(n),b(n,e.2i,\"2F\"),7R(o,\"4n\",e),7R(i,\"3N\",e),e.7X?14(t,e,n){1V([t,e],k.2J),n.5N&&(t.1I.5E=n.5N),n.6N&&(e.1I.5E=n.6N);18 o=22.4U(t).4v(\"1J-1u\");t.1I.82=o,t.1I.7Z=o}(o,i,e):(3U([o,i],k.2J),o.1I.5E=o.1I.82=o.1I.7Z=\"\",i.1I.5E=i.1I.82=i.1I.7Z=\"\")}14 8C(t,e){18 n=q();n&&(14(t,e){\"3a\"==1A e?t.1I.1J=e:e||1V([1m.5a,1m.1e],k[\"26-1P\"])}(n,e.1P),!e.1P&&e.5y&&y(\\'\"5y\" 42 7H `1P` 42 3S be 43 3S `4M`\\'),14(t,e){e 2O k?1V(t,k[e]):(y(\\'8H \"2G\" 42 53 1M 8K, 8L 3S \"1l\"\\'),1V(t,k.1l))}(n,e.2G),14(t,e){1w(e&&\"3a\"==1A e){18 n=\"1Y-\"+e;n 2O k&&1V(t,k[n])}}(n,e.1Y),b(n,e.2i,\"1h\"),e.6j&&1V(n,e.6j))}14 6m(t,e){t.2E&&!e.4Y||(t.2E=e.4Y)}18 bb={5g:2M 5h,3k:2M 5h,3R:2M 5h},96=14(t,e){18 n=P(U(),t);1w(n)2g(18 o 2O 14(t){2g(18 e=0;e<t.99.23;e++){18 n=t.99[e].9c;-1===[\"1U\",\"1K\",\"1I\"].3t(n)&&t.3O(n)}}(n),e)\"2s\"===t&&\"2E\"===o||n.2P(o,e[o])},bt=14(t,e,n){t.4F=e,n.5T&&1V(t,n.5T),n.2i&&1V(t,n.2i.1i)},2Y={};2Y.3g=2Y.5j=2Y.9l=2Y.4d=2Y.7J=2Y.62=14(t){18 e=2y(U(),k.1i);17\"3a\"==1A t.2R||\"4d\"==1A t.2R?e.1K=t.2R:v(t.2R)||y(\\'68 1U 6i 2R! 5k \"3a\", \"4d\" 5l \"36\", 5m \"\\'.1n(f(t.2R),\\'\"\\')),6m(e,t),e.1U=t.1i,e},2Y.2l=14(t){18 e=2y(U(),k.2l);17 6m(e,t),e.1U=t.1i,e},2Y.2s=14(t){18 e=2y(U(),k.2s),n=e.2T(\"1i\"),o=e.2T(\"46\");17 n.1K=t.2R,n.1U=t.1i,o.1K=t.2R,e},2Y.2b=14(t){18 e=2y(U(),k.2b);1w(e.38=\"\",t.4Y){18 n=1m.3A(\"9I\");n.38=t.4Y,n.1K=\"\",n.2Q=!0,n.9J=!0,e.37(n)}17 e},2Y.2v=14(){18 t=2y(U(),k.2v);17 t.38=\"\",t},2Y.2A=14(t){18 e=2y(U(),k.2A),n=P(U(),\"2A\");17 n.1U=\"2A\",n.1K=1,n.55=k.2A,n.5G=9z(t.2R),e.2T(\"34\").38=t.4Y,e},2Y.2h=14(t){18 e=2y(U(),k.2h);17 e.1K=t.2R,6m(e,t),e};14 9K(t,e){18 n=U().2T(\"#\"+k.1z);e.5n?(5W(e.5n,n),T(n,\"4b\")):e.3g?(n.cH=e.3g,T(n,\"4b\")):O(n),14(t,e){2g(18 n=bb.3k.2k(t),o=!n||e.1i!==n.1i,i=U(),r=[\"1i\",\"2l\",\"2s\",\"2b\",\"2v\",\"2A\",\"2h\"],a=0;a<r.23;a++){18 s=k[r[a]],u=2y(i,s);96(r[a],e.9Q),bt(u,s,e),o&&O(u)}1w(e.1i){1w(!2Y[e.1i])17 g(\\'68 1U 6i 1i! 5k \"3g\", \"5j\", \"9l\", \"4d\", \"7J\", \"2b\", \"2v\", \"2A\", \"2h\", \"2l\" 5l \"62\", 5m \"\\'.1n(e.1i,\\'\"\\'));1w(o){18 c=2Y[e.1i](e);T(c)}}}(t,e),b(U(),e.2i,\"1z\")}14 7E(t,i){18 r=z();1w(!i.2W||0===i.2W.23)17 O(r);T(r),r.38=\"\";18 a=4C(1B===i.56?bj.a5():i.56);a>=i.2W.23&&y(\"6E 56 42, 2y a9 be cG cF 2W.23 (56 cE cD cC cA 86 0)\"),i.2W.2S(14(t,e){18 n=14(t){18 e=1m.3A(\"7z\");17 1V(e,k[\"25-2D\"]),e.38=t,e}(t);1w(r.37(n),e===a&&1V(n,k[\"3V-25-2D\"]),e!==i.2W.23-1){18 o=14(t){18 e=1m.3A(\"7z\");17 1V(e,k[\"25-2D-1o\"]),t.7y&&(e.1I.1c=t.7y),e}(t);r.37(o)}})}14 8a(t,e){18 n=Q();b(n,e.2i,\"4O\"),7E(0,e),14(t,e){18 n=bb.3k.2k(t);1w(n&&e.1U===n.1U&&N())b(N(),e.2i,\"1r\");3m 1w(bc(),e.1U)1w(8b(),-1!==2d.57(B).3t(e.1U)){18 o=H(\".\".1n(k.1r,\".\").1n(B[e.1U]));T(o),b(o,e.2i,\"1r\"),L(o,\"13-1Q-\".1n(e.1U,\"-1r\"),e.1L)}3m g(\\'8e 1U! 5k \"1f\", \"2n\", \"5J\", \"5I\" 5l \"4q\", 5m \"\\'.1n(e.1U,\\'\"\\'))}(t,e),14(t,e){18 n=4L();1w(!e.5P)17 O(n);T(n),n.2P(\"8h\",e.5P),n.2P(\"cz\",e.7w),E(n,\"1c\",e.7u),E(n,\"1E\",e.8l),n.4F=k.4e,b(n,e.2i,\"4e\"),e.5u&&1V(n,e.5u)}(0,e),14(t,e){18 n=D();M(n,e.2I||e.5v),e.2I&&5W(e.2I,n),e.5v&&(n.8q=e.5v),b(n,e.2i,\"2I\")}(0,e),14(t,e){18 n=$();b(n,e.2i,\"7s\"),M(n,e.5U),n.2P(\"2o-3E\",e.8u)}(0,e)}14 7r(t,e){!14(t,e){18 n=2K();E(n,\"1c\",e.1c),E(n,\"2e\",e.2e),e.1J&&(n.1I.1J=e.1J),n.4F=k.1t,e.1b?(1V([1m.5a,1m.1e],k[\"1b-1q\"]),1V(n,k.1b)):1V(n,k.3M),b(n,e.2i,\"1t\"),\"3a\"==1A e.2i&&1V(n,e.2i),L(n,k.6Q,!e.1L)}(0,e),8C(0,e),8a(t,e),9K(t,e),8c(0,e),14(t,e){18 n=Y();M(n,e.3C),e.3C&&5W(e.3C,n),b(n,e.2i,\"3C\")}(0,e)}18 bc=14(){2g(18 t=R(),e=0;e<t.23;e++)O(t[e])},8b=14(){2g(18 t=2K(),e=22.4U(t).4v(\"1J-1u\"),n=t.4w(\"[1j^=13-1f-35-1o], .13-1f-6F\"),o=0;o<n.23;o++)n[o].1I.5E=e};14 5X(){18 t=2K();t||bj.5Y(\"\"),t=2K();18 e=Z(),n=K(),o=F();T(e),T(n),1V([t,e],k.2u),n.2Q=!0,o.2Q=!0,t.2P(\"3D-2u\",!0),t.2P(\"2o-8F\",!0),t.2c()}14 7p(t){17 7o.6I(t)}14 61(t){17 8J[t]}18 bd=[],1y={},8N=14(){17 2M 36(14(t){18 e=22.cy,n=22.cx;1y.8P=59(14(){1y.58&&1y.58.2c?(1y.58.2c(),1y.58=1B):1m.1e&&1m.1e.2c(),t()},1F),3l 0!==e&&3l 0!==n&&22.cw(e,n)})},7o={2I:\"\",5v:\"\",3g:\"\",5n:\"\",3C:\"\",1U:1B,1b:!1,2i:\"\",6j:\"\",29:\"1e\",1P:!0,1L:!0,7h:!0,5y:!0,8R:!0,7f:!0,93:!0,41:!1,5f:!0,5e:!1,4T:1B,97:\"8t\",98:\"\",5N:1B,7e:\"\",9a:\"8x\",9b:\"\",6N:1B,7c:\"\",7X:!0,7b:!1,7a:!0,5C:!1,5U:!1,8u:\"cv 1d 9e\",6l:!1,5P:1B,7u:1B,8l:1B,7w:\"\",5u:\"\",4H:1B,1c:1B,2e:1B,1J:1B,1i:1B,4Y:\"\",2R:\"\",4z:{},9k:!0,5T:\"\",9Q:{},5D:1B,3j:1B,1Y:!1,2G:\"1l\",2W:[],56:1B,7y:1B,6o:1B,9o:1B,6p:1B,9q:1B,9r:!0},9s=[\"2I\",\"5v\",\"3g\",\"5n\",\"1U\",\"2i\",\"5f\",\"5e\",\"97\",\"98\",\"5N\",\"7e\",\"9a\",\"9b\",\"6N\",\"7c\",\"7X\",\"7b\",\"5P\",\"7u\",\"cu\",\"7w\",\"5u\",\"2W\",\"56\"],8J={6j:\"2i\",7e:\"2i\",7c:\"2i\",5u:\"2i\",5T:\"2i\"},9u=[\"5y\",\"7f\",\"1P\",\"7a\",\"5C\",\"7h\",\"41\"],9v=2d.5F({cs:7p,9x:14(t){17-1!==9s.3t(t)},ah:61,9A:14(n){18 o={};5H(f(n[0])){3i\"4o\":a(o,n[0]);4I;4r:[\"2I\",\"5n\",\"1U\"].2S(14(t,e){5H(f(n[e])){3i\"3a\":o[t]=n[e];4I;3i\"3d\":4I;4r:g(\"68 1U 6i \".1n(t,\\'! 5k \"3a\", 5m \\').1n(f(n[e])))}})}17 o},9d:14(){17 V(2K())},9E:14(){17 K()&&K().75()},cq:14(){17 F()&&F().75()},cp:q,co:2K,cn:D,cm:U,cl:4L,ck:N,cj:R,ci:$,ch:Z,6X:K,cg:F,cf:Q,ce:Y,cd:J,cc:W,cb:14(){17 2K().6V(\"3D-2u\")},5Y:14(){2g(18 t=3u.23,e=2M 76(t),n=0;n<t;n++)e[n]=3u[n];17 c(1d,e)},ca:14(n){17 14(t){14 e(){17 o(1d,e),l(1d,s(e).4Z(1d,3u))}17 14(t,e){1w(\"14\"!=1A e&&1B!==e)7K 2M 8i(\"c9 c8 c7 c6 be 1B 5l a 14\");t.3b=2d.c5(e&&e.3b,{5Q:{1K:t,6A:!0,7F:!0}}),e&&u(t,e)}(e,t),r(e,[{3r:\"6K\",1K:14(t){17 d(s(e.3b),\"6K\",1d).4A(1d,a({},n,t))}}]),e}(1d)},6L:14(t){18 r=1d;bd=t;14 a(t,e){bd=[],1m.1e.3O(\"3D-13-6L-2D\"),t(e)}18 s=[];17 2M 36(14(i){!14 e(n,o){n<bd.23?(1m.1e.2P(\"3D-13-6L-2D\",n),r.5Y(bd[n]).3G(14(t){3l 0!==t.1K?(s.4t(t.1K),e(n+1,o)):a(i,{6T:t.6T})})):a(i,{1K:s})}(0)})},a5:14(){17 1m.1e.4W(\"3D-13-6L-2D\")},c4:14(t,e){17 e&&e<bd.23?bd.8d(e,0,t):bd.4t(t)},c3:14(t){3l 0!==bd[t]&&bd.8d(t,1)},8f:5X,c2:5X,7q:14(){17 1y.2U&&1y.2U.7q()},c1:14(){17 1y.2U&&1y.2U.4X()},c0:14(){17 1y.2U&&1y.2U.1O()},bZ:14(){18 t=1y.2U;17 t&&(t.3L?t.4X():t.1O())},bY:14(t){17 1y.2U&&1y.2U.8p(t)},bX:14(){17 1y.2U&&1y.2U.8r()}});14 6W(){18 t=bb.3k.2k(1d),e=bb.3R.2k(1d);t.5f||(O(e.2N),t.5e||O(e.2F)),3U([e.1t,e.2F],k.2u),e.1t.3O(\"2o-8F\"),e.1t.3O(\"3D-2u\"),e.2N.2Q=!1,e.3o.2Q=!1}14 8v(){1B===x.4B&&1m.1e.8w>22.bW&&(x.4B=4C(22.4U(1m.1e).4v(\"2e-1k\")),1m.1e.1I.8y=x.4B+14(){1w(\"8z\"2O 22||8A.bV)17 0;18 t=1m.3A(\"1H\");t.1I.1c=\"8B\",t.1I.1E=\"8B\",t.1I.3T=\"8D\",1m.1e.37(t);18 e=t.8m-t.bU;17 1m.1e.7D(t),e}()+\"6y\")}14 73(){17!!22.bT&&!!1m.bS}14 6r(){18 t=q(),e=2K();t.1I.aa(\"1S-2f\"),e.bR<0&&(t.1I.bQ=\"1C-1O\")}18 be=14(){1B!==x.4B&&(1m.1e.1I.8y=x.4B+\"6y\",x.4B=1B)},8M=14(){18 e,n=q();n.8z=14(t){e=t.29===n||!14(t){17!!(t.8w>t.bP)}(n)&&\"bO\"!==t.29.bN},n.bM=14(t){e&&(t.6h(),t.7d())}},8S=14(){1w(S(1m.1e,k.5L)){18 t=4C(1m.1e.1I.19,10);3U(1m.1e,k.5L),1m.1e.1I.19=\"\",1m.1e.6g=-1*t}},8U=14(){\"3d\"!=1A 22&&73()&&22.6f(\"8W\",6r)},8X=14(){m(1m.1e.8Y).2S(14(t){t.6V(\"3D-6e-2o-2L\")?(t.2P(\"2o-2L\",t.4W(\"3D-6e-2o-2L\")),t.3O(\"3D-6e-2o-2L\")):t.3O(\"2o-2L\")})},6c={7i:2M 5h};14 7j(t,e,n){e?$t(n):(8N().3G(14(){17 $t(n)}),1y.4G.6f(\"7l\",1y.5A,{7n:1y.41}),1y.64=!1),5z 1y.5A,5z 1y.4G,t.3I&&t.3I.7D(t),3U([1m.5a,1m.1e],[k.1q,k[\"1E-1D\"],k[\"26-1P\"],k[\"1b-1q\"],k[\"1b-1R\"]]),at()&&(be(),8S(),8U(),8X())}14 5c(t){18 e=q(),n=2K();1w(n&&!S(n,k.30)){18 o=bb.3k.2k(1d),i=6c.7i.2k(1d),r=o.9q,a=o.9o;3U(n,k.31),1V(n,k.30),dt&&j(n)?n.60(dt,14(t){t.29===n&&14(t,e,n,o){S(t,k.30)&&7j(e,n,o),bf(bb),bf(6c)}(n,e,5p(),a)}):7j(e,5p(),a),1B!==r&&\"14\"==1A r&&r(n),i(t||{}),5z 1d.49}}18 bf=14(t){2g(18 e 2O t)t[e]=2M 5h},$t=14(t){1B!==t&&\"14\"==1A t&&59(14(){t()})};14 5w(t,e,n){18 o=bb.3R.2k(t);e.2S(14(t){o[t].2Q=n})}14 7t(t,e){1w(!t)17!1;1w(\"2v\"===t.1U)2g(18 n=t.3I.3I.4w(\"1i\"),o=0;o<n.23;o++)n[o].2Q=e;3m t.2Q=e}18 bg=14(){14 n(t,e){o(1d,n),1d.9h=t,1d.48=e,1d.3L=!1,1d.1O()}17 r(n,[{3r:\"1O\",1K:14(){17 1d.3L||(1d.3L=!0,1d.9i=2M 5S,1d.55=59(1d.9h,1d.48)),1d.48}},{3r:\"4X\",1K:14(){17 1d.3L&&(1d.3L=!1,9j(1d.55),1d.48-=2M 5S-1d.9i),1d.48}},{3r:\"8p\",1K:14(t){18 e=1d.3L;17 e&&1d.4X(),1d.48+=t,e&&1d.1O(),1d.48}},{3r:\"7q\",1K:14(){17 1d.3L&&(1d.4X(),1d.1O()),1d.48}},{3r:\"8r\",1K:14(){17 1d.3L}}]),n}(),7v={5j:14(t,e){17/^[a-5t-5q-9.+4L-]+@[a-5t-5q-9.-]+\\\\.[a-5t-5q-9-]{2,24}$/.7A(t)?36.4y():36.4y(e||\"6E 5j bL\")},62:14(t,e){17/^7B?:\\\\/\\\\/(bK\\\\.)?[-a-5t-5q-9@:%.4L+~#=]{2,bJ}\\\\.[a-z]{2,63}\\\\b([-a-5t-5q-9@:%4L+.~#?&/=]*)$/.7A(t)?36.4y():36.4y(e||\"6E bI\")}};14 ee(t,e){t.6f(dt,ee),e.1I.7G=\"1D\"}14 9y(t){18 e=q(),n=2K();1B!==t.6o&&\"14\"==1A t.6o&&t.6o(n),t.1L&&(1V(n,k.31),1V(e,k.6R)),T(n),dt&&j(n)?(e.1I.7G=\"2L\",n.60(dt,ee.90(1B,n,e))):e.1I.7G=\"1D\",1V([1m.5a,1m.1e,e],k.1q),t.7h&&t.1P&&!t.1b&&1V([1m.5a,1m.1e],k[\"1E-1D\"]),at()&&(t.9r&&8v(),14(){1w(/bH|bD|by/.7A(8A.bw)&&!22.bu&&!S(1m.1e,k.5L)){18 t=1m.1e.6g;1m.1e.1I.19=-1*t+\"6y\",1V(1m.1e,k.5L),8M()}}(),\"3d\"!=1A 22&&73()&&(6r(),22.60(\"8W\",6r)),m(1m.1e.8Y).2S(14(t){t===q()||14(t,e){1w(\"14\"==1A t.3X)17 t.3X(e)}(t,q())||(t.6V(\"2o-2L\")&&t.2P(\"3D-6e-2o-2L\",t.4W(\"2o-2L\")),t.2P(\"2o-2L\",\"4M\"))}),59(14(){e.6g=0})),5p()||1y.58||(1y.58=1m.4E),1B!==t.6p&&\"14\"==1A t.6p&&59(14(){t.6p(n)})}18 bh=3l 0,7L={2b:14(t,e,i){18 r=2y(t,k.2b);e.2S(14(t){18 e=t[0],n=t[1],o=1m.3A(\"9I\");o.1K=e,o.38=n,i.2R.5x()===e.5x()&&(o.9J=!0),r.37(o)}),r.2c()},2v:14(t,e,a){18 s=2y(t,k.2v);e.2S(14(t){18 e=t[0],n=t[1],o=1m.3A(\"1i\"),i=1m.3A(\"3E\");o.1U=\"2v\",o.9c=k.2v,o.1K=e,a.2R.5x()===e.5x()&&(o.5G=!0);18 r=1m.3A(\"34\");r.38=n,r.4F=k.3E,i.37(o),i.37(r),s.37(i)});18 n=s.4w(\"1i\");n.23&&n[0].2c()}},9G=14(e){18 n=[];17\"3d\"!=1A 7M&&e 7P 7M?e.2S(14(t,e){n.4t([e,t])}):2d.57(e).2S(14(t){n.4t([t,e[t]])}),n};18 bi,7O=2d.5F({4D:6W,b6:6W,3x:14(t){18 e=bb.3k.2k(t||1d);17 P(bb.3R.2k(t||1d).1z,e.1i)},3e:5c,7S:5c,b5:5c,b0:5c,6H:14(){5w(1d,[\"2N\",\"3o\"],!1)},7U:14(){5w(1d,[\"2N\",\"3o\"],!0)},9S:14(){h(\"3J.9U()\",\"3J.6X().3O(\\'2Q\\')\"),5w(1d,[\"2N\"],!1)},9U:14(){h(\"3J.9S()\",\"3J.6X().2P(\\'2Q\\', \\'\\')\"),5w(1d,[\"2N\"],!0)},9V:14(){17 7t(1d.3x(),!1)},9W:14(){17 7t(1d.3x(),!0)},7W:14(t){18 e=bb.3R.2k(1d);e.3j.38=t;18 n=22.4U(e.1t);e.3j.1I.aV=\"-\".1n(n.4v(\"2e-1g\")),e.3j.1I.aT=\"-\".1n(n.4v(\"2e-1k\")),T(e.3j);18 o=1d.3x();o&&(o.2P(\"2o-a0\",!0),o.2P(\"2o-a1\",k[\"4h-4l\"]),A(o),1V(o,k.4N))},5Z:14(){18 t=bb.3R.2k(1d);t.3j&&O(t.3j);18 e=1d.3x();e&&(e.3O(\"2o-a0\"),e.3O(\"2o-a1\"),3U(e,k.4N))},a2:14(){17 h(\"3J.a2()\",\"a3 a4 = 3J.5Y({2W: [\\'1\\', \\'2\\', \\'3\\']}); a3 2W = a4.49.2W\"),bb.3k.2k(1d).2W},a6:14(t){h(\"3J.a6()\",\"3J.7Y()\");18 e=a({},bb.3k.2k(1d),{2W:t});7E(0,e),bb.3k.43(1d,e)},aE:14(){18 t=bb.3R.2k(1d);T(t.2W)},aD:14(){18 t=bb.3R.2k(1d);O(t.2W)},6K:14(t){18 c=1d;!14(t){2g(18 e 2O t)7p(i=e)||y(\\'8e 42 \"\\'.1n(i,\\'\"\\')),t.1b&&(o=e,-1!==9u.3t(o)&&y(\\'8H 42 \"\\'.1n(o,\\'\" 53 aC ab az\\'))),61(n=3l 0)&&h(n,61(n));18 n,o,i}(t);18 l=a({},7o,t);!14(e){e.5D||2d.57(7v).2S(14(t){e.1i===t&&(e.5D=7v[t])}),e.6l&&!e.4T&&y(\"6l 53 43 3S 4M, ay 4T 53 1M av.\\\\an a9 be am ai ab 4T, cr aj ak:\\\\al://5d.85.ao/#ap-aq\"),e.1L=w(e.1L),e.29&&(\"3a\"!=1A e.29||1m.2T(e.29))&&(\"3a\"==1A e.29||e.29.37)||(y(\\'ar 42 53 1M 8K, 8L 3S \"1e\"\\'),e.29=\"1e\"),\"3a\"==1A e.2I&&(e.2I=e.2I.9n(\"\\\\n\").au(\"<br />\"));18 t=2K(),n=\"3a\"==1A e.29?1m.2T(e.29):e.29;(!t||t&&n&&t.3I!==n.3I)&&ct(e)}(l),2d.5F(l),1y.2U&&(1y.2U.4X(),5z 1y.2U),9j(1y.8P);18 d={1t:2K(),1h:q(),1z:U(),2F:Z(),2N:K(),3o:F(),7s:$(),3j:W(),2W:z()};bb.3R.43(1d,d),7r(1d,l),bb.3k.43(1d,l);18 p=1d.5Q;17 2M 36(14(t){14 n(t){c.7S({1K:t})}14 s(t){c.7S({6T:t})}6c.7i.43(c,t),l.4H&&(1y.2U=2M bg(14(){s(\"4H\"),5z 1y.2U},l.4H));l.1i&&59(14(){18 t=c.3x();t&&A(t)},0);2g(18 u=14(e){(l.6l&&p.8f(),l.4T)?(c.5Z(),36.4y().3G(14(){17 l.4T(e,l.3j)}).3G(14(t){V(d.3j)||!1===t?c.4D():n(3l 0===t?e:t)})):n(e)},e=14(t){18 e=t.29,n=d.2N,o=d.3o,i=n&&(n===e||n.3X(e)),r=o&&(o===e||o.3X(e));5H(t.1U){3i\"75\":1w(i)1w(c.7U(),l.1i){18 a=14(){18 t=c.3x();1w(!t)17 1B;5H(l.1i){3i\"2A\":17 t.5G?1:0;3i\"2v\":17 t.5G?t.1K:1B;3i\"2l\":17 t.ae.23?t.ae[0]:1B;4r:17 l.9k?t.1K.aw():t.1K}}();1w(l.5D)c.9W(),36.4y().3G(14(){17 l.5D(a,l.3j)}).3G(14(t){c.6H(),c.9V(),t?c.7W(t):u(a)});3m c.3x().ax()?u(a):(c.6H(),c.7W(l.3j))}3m u(!0);3m r&&(c.7U(),s(p.4S.3N))}},o=d.1t.4w(\"3y\"),i=0;i<o.23;i++)o[i].5V=e,o[i].aA=e,o[i].aB=e,o[i].81=e;1w(d.7s.5V=14(){s(p.4S.3e)},l.1b)d.1t.5V=14(){l.5f||l.5e||l.5U||l.1i||s(p.4S.3e)};3m{18 r=!1;d.1t.81=14(){d.1h.6n=14(t){d.1h.6n=3l 0,t.29===d.1h&&(r=!0)}},d.1h.81=14(){d.1t.6n=14(t){d.1t.6n=3l 0,t.29!==d.1t&&!d.1t.3X(t.29)||(r=!0)}},d.1h.5V=14(t){r?r=!1:t.29===d.1h&&w(l.5y)&&s(p.4S.1P)}}l.7b?d.2N.3I.a8(d.3o,d.2N):d.2N.3I.a8(d.2N,d.3o);14 a(t,e){2g(18 n=J(l.5C),o=0;o<n.23;o++)17(t+=e)===n.23?t=0:-1===t&&(t=n.23-1),n[t].2c();d.1t.2c()}1y.4G&&1y.64&&(1y.4G.6f(\"7l\",1y.5A,{7n:1y.41}),1y.64=!1),l.1b||(1y.5A=14(t){17 14(t,e){e.93&&t.7d();1w(\"aF\"!==t.3r||t.aG)1w(\"aH\"===t.3r){2g(18 n=t.29,o=J(e.5C),i=-1,r=0;r<o.23;r++)1w(n===o[r]){i=r;4I}t.aI?a(i,-1):a(i,1),t.7d(),t.6h()}3m-1!==[\"aJ\",\"aK\",\"aL\",\"aM\",\"aN\",\"aO\",\"aP\",\"aQ\"].3t(t.3r)?1m.4E===d.2N&&V(d.3o)?d.3o.2c():1m.4E===d.3o&&V(d.2N)&&d.2N.2c():\"aR\"!==t.3r&&\"aS\"!==t.3r||!0!==w(e.8R)||(t.6h(),s(p.4S.6U));3m 1w(t.29&&c.3x()&&t.29.9Z===c.3x().9Z){1w(-1!==[\"2h\",\"2l\"].3t(e.1i))17;p.9E(),t.6h()}}(t,l)},1y.4G=l.41?22:d.1t,1y.41=l.41,1y.4G.60(\"7l\",1y.5A,{7n:1y.41}),1y.64=!0),c.6H(),c.4D(),c.5Z(),l.1b&&(l.1i||l.3C||l.5U)?1V(1m.1e,k[\"1b-1R\"]):3U(1m.1e,k[\"1b-1R\"]),\"2b\"===l.1i||\"2v\"===l.1i?14(e,n){14 o(t){17 7L[n.1i](i,9G(t),n)}18 i=U();v(n.4z)?(5X(),n.4z.3G(14(t){e.4D(),o(t)})):\"4o\"===f(n.4z)?o(n.4z):g(\"68 1U 6i 4z! 5k 4o, 7M 5l 36, 5m \".1n(f(n.4z)))}(c,l):-1!==[\"3g\",\"5j\",\"4d\",\"7J\",\"2h\"].3t(l.1i)&&v(l.2R)&&14(e,n){18 o=e.3x();O(o),n.2R.3G(14(t){o.1K=\"4d\"===n.1i?74(t)||0:t+\"\",T(o),o.2c(),e.4D()}).7k(14(t){g(\"aU 2O 2R 5g: \"+t),o.1K=\"\",T(o),o.2c(),bh.4D()})}(c,l),9y(l),l.1b||(w(l.7f)?l.5C&&V(d.3o)?d.3o.2c():l.7a&&V(d.2N)?d.2N.2c():a(-1,1):1m.4E&&\"14\"==1A 1m.4E.9Y&&1m.4E.9Y()),d.1h.6g=0})},7Y:14(e){18 n={};2d.57(e).2S(14(t){bj.9x(t)?n[t]=e[t]:y(\\'6E 42 3S 7Y: \"\\'.1n(t,\\'\". aW 49 aX aY aZ: 7B://85.9P/5d/5d/b1/b2/8h/b3/49.b4\\'))});18 t=a({},bb.3k.2k(1d),n);7r(1d,t),bb.3k.43(1d,t),2d.9O(1d,{49:{1K:a({},1d.49,e),6A:!1,6x:!0}})}});14 3P(){1w(\"3d\"!=1A 22){\"3d\"==1A 36&&g(\"b7 b8 7H a 36 b9, bk bl a bm 3S bn 2y 2O 1d bo (bp: 7B://85.9P/5d/5d/bq/bs-86-9D-3S-6Y#1-7L-bv)\"),bi=1d;2g(18 t=3u.23,e=2M 76(t),n=0;n<t;n++)e[n]=3u[n];18 o=2d.5F(1d.5Q.9A(e));2d.9O(1d,{49:{1K:o,6A:!1,6x:!0,7F:!0}});18 i=1d.6K(1d.49);bb.5g.43(1d,i)}}3P.3b.3G=14(t){17 bb.5g.2k(1d).3G(t)},3P.3b.9C=14(t){17 bb.5g.2k(1d).9C(t)},a(3P.3b,7O),a(3P,9v),2d.57(7O).2S(14(e){3P[e]=14(){18 t;1w(bi)17(t=bi)[e].4Z(t,3u)}}),3P.4S=C,3P.bx=\"8.11.8\";18 bj=3P;17 bj.4r=bj}),\"3d\"!=1A 22&&22.7V&&(22.bz=22.bA=22.3J=22.9D=22.7V);\"3d\"!=1A 1m&&14(e,t){18 n=e.3A(\"1I\");1w(e.bB(\"bC\")[0].37(n),n.7I)n.7I.2Q||(n.7I.bE=t);3m 89{n.38=t}7k(e){n.8q=t}}(1m,\"@bF \\\\\"bG-8\\\\\";@-1a-2a 13-31{0%{-1a-16:1G(.7);16:1G(.7)}45%{-1a-16:1G(1.6O);16:1G(1.6O)}80%{-1a-16:1G(.95);16:1G(.95)}1F%{-1a-16:1G(1);16:1G(1)}}@2a 13-31{0%{-1a-16:1G(.7);16:1G(.7)}45%{-1a-16:1G(1.6O);16:1G(1.6O)}80%{-1a-16:1G(.95);16:1G(.95)}1F%{-1a-16:1G(1);16:1G(1)}}@-1a-2a 13-30{0%{-1a-16:1G(1);16:1G(1);2z:1}1F%{-1a-16:1G(.5);16:1G(.5);2z:0}}@2a 13-30{0%{-1a-16:1G(1);16:1G(1);2z:1}1F%{-1a-16:1G(.5);16:1G(.5);2z:0}}@-1a-2a 13-1Q-1f-1o-3h{0%{19:1.39;1g:.32;1c:0}54%{19:1.32;1g:.2m;1c:0}70%{19:2.39;1g:-.2H;1c:3.2m}84%{19:6Z;1g:1.2C;1c:1.32}1F%{19:2.8o;1g:.3p;1c:1.5K}}@2a 13-1Q-1f-1o-3h{0%{19:1.39;1g:.32;1c:0}54%{19:1.32;1g:.2m;1c:0}70%{19:2.39;1g:-.2H;1c:3.2m}84%{19:6Z;1g:1.2C;1c:1.32}1F%{19:2.8o;1g:.3p;1c:1.5K}}@-1a-2a 13-1Q-1f-1o-3c{0%{19:3.2H;1k:2.3p;1c:0}65%{19:3.2H;1k:2.3p;1c:0}84%{19:2.39;1k:0;1c:3.4J}1F%{19:2.2H;1k:.21;1c:2.3q}}@2a 13-1Q-1f-1o-3c{0%{19:3.2H;1k:2.3p;1c:0}65%{19:3.2H;1k:2.3p;1c:0}84%{19:2.39;1k:0;1c:3.4J}1F%{19:2.2H;1k:.21;1c:2.3q}}@-1a-2a 13-1p-1f-35-1o{0%{-1a-16:1p(-1X);16:1p(-1X)}5%{-1a-16:1p(-1X);16:1p(-1X)}12%{-1a-16:1p(-4i);16:1p(-4i)}1F%{-1a-16:1p(-4i);16:1p(-4i)}}@2a 13-1p-1f-35-1o{0%{-1a-16:1p(-1X);16:1p(-1X)}5%{-1a-16:1p(-1X);16:1p(-1X)}12%{-1a-16:1p(-4i);16:1p(-4i)}1F%{-1a-16:1p(-4i);16:1p(-4i)}}@-1a-2a 13-1Q-2n-x-2V{0%{1N-19:1.1W;-1a-16:1G(.4);16:1G(.4);2z:0}50%{1N-19:1.1W;-1a-16:1G(.4);16:1G(.4);2z:0}80%{1N-19:-.2H;-1a-16:1G(1.15);16:1G(1.15)}1F%{1N-19:0;-1a-16:1G(1);16:1G(1);2z:1}}@2a 13-1Q-2n-x-2V{0%{1N-19:1.1W;-1a-16:1G(.4);16:1G(.4);2z:0}50%{1N-19:1.1W;-1a-16:1G(.4);16:1G(.4);2z:0}80%{1N-19:-.2H;-1a-16:1G(1.15);16:1G(1.15)}1F%{1N-19:0;-1a-16:1G(1);16:1G(1);2z:1}}@-1a-2a 13-1Q-2n-1r{0%{-1a-16:4f(6B);16:4f(6B);2z:0}1F%{-1a-16:4f(0);16:4f(0);2z:1}}@2a 13-1Q-2n-1r{0%{-1a-16:4f(6B);16:4f(6B);2z:0}1F%{-1a-16:4f(0);16:4f(0);2z:1}}1e.13-1b-1q .13-1h{1J-1u:3v}1e.13-1b-1q .13-1h.13-1q{1J-1u:3v}1e.13-1b-1q .13-1h.13-19{19:0;1k:1D;1v:1D;1g:50%;-1a-16:4c(-50%);16:4c(-50%)}1e.13-1b-1q .13-1h.13-19-27,1e.13-1b-1q .13-1h.13-19-1k{19:0;1k:0;1v:1D;1g:1D}1e.13-1b-1q .13-1h.13-19-1g,1e.13-1b-1q .13-1h.13-19-1O{19:0;1k:1D;1v:1D;1g:0}1e.13-1b-1q .13-1h.13-1l-1g,1e.13-1b-1q .13-1h.13-1l-1O{19:50%;1k:1D;1v:1D;1g:0;-1a-16:28(-50%);16:28(-50%)}1e.13-1b-1q .13-1h.13-1l{19:50%;1k:1D;1v:1D;1g:50%;-1a-16:6w(-50%,-50%);16:6w(-50%,-50%)}1e.13-1b-1q .13-1h.13-1l-27,1e.13-1b-1q .13-1h.13-1l-1k{19:50%;1k:0;1v:1D;1g:1D;-1a-16:28(-50%);16:28(-50%)}1e.13-1b-1q .13-1h.13-1v-1g,1e.13-1b-1q .13-1h.13-1v-1O{19:1D;1k:1D;1v:0;1g:0}1e.13-1b-1q .13-1h.13-1v{19:1D;1k:1D;1v:0;1g:50%;-1a-16:4c(-50%);16:4c(-50%)}1e.13-1b-1q .13-1h.13-1v-27,1e.13-1b-1q .13-1h.13-1v-1k{19:1D;1k:0;1v:0;1g:1D}1e.13-1b-1R .13-1b{1C-4k:1R;1S-2f:72}1e.13-1b-1R .13-1b .13-2F{1C:1;1S-9M:72;1E:2.2q;1N-19:.2C}1e.13-1b-1R .13-1b .13-2u{2p-1z:1l}1e.13-1b-1R .13-1b .13-1i{1E:2q;1N:.2C 1D;1T-2j:3w}1e.13-1b-1R .13-1b .13-4h-4l{1T-2j:3w}.13-1t.13-1b{1C-4k:5M;1S-2f:1l;1c:1D;2e:.1W;3T-y:2L;2r-3H:0 0 .1W #9t}.13-1t.13-1b .13-4O{1C-4k:5M}.13-1t.13-1b .13-2I{1C-1Y:1;2p-1z:1C-1O;1N:0 .78;1T-2j:3w}.13-1t.13-1b .13-3C{1N:.21 0 0;2e:.21 0 0;1T-2j:.6b}.13-1t.13-1b .13-3e{2G:8O;1c:.6b;1E:.6b;1o-1E:.8}.13-1t.13-1b .13-1z{2p-1z:1C-1O;1T-2j:3w}.13-1t.13-1b .13-1r{1c:2q;7m-1c:2q;1E:2q;1N:0}.13-1t.13-1b .13-1r::4j{2B:1C;1S-2f:1l;1T-2j:2q;1T-3Y:cB}@6J 7C 6q (-2Z-51-52:1Z),(-2Z-51-52:3V){.13-1t.13-1b .13-1r::4j{1T-2j:.2x}}.13-1t.13-1b .13-1r.13-1f .13-1f-6G{1c:2q;1E:2q}.13-1t.13-1b .13-1r.13-2n [1j^=13-x-2V-1o]{19:.3p;1c:1.2H}.13-1t.13-1b .13-1r.13-2n [1j^=13-x-2V-1o][1j$=1g]{1g:.2C}.13-1t.13-1b .13-1r.13-2n [1j^=13-x-2V-1o][1j$=1k]{1k:.2C}.13-1t.13-1b .13-2F{1C-cI:1D!3f;1E:1D;1N:0 .2C}.13-1t.13-1b .13-2J{1N:0 .2C;2e:.2C .1W;1T-2j:3w}.13-1t.13-1b .13-2J:2c{2r-3H:0 0 0 .32 #3Q,0 0 0 .2m 3B(50,1F,7T,.4)}.13-1t.13-1b .13-1f{1x-1u:#7Q}.13-1t.13-1b .13-1f [1j^=13-1f-35-1o]{2G:4p;1c:1.78;1E:6Z;-1a-16:1p(1X);16:1p(1X);1x-2w:50%}.13-1t.13-1b .13-1f [1j^=13-1f-35-1o][1j$=1g]{19:-.6b;1g:-.21;-1a-16:1p(-1X);16:1p(-1X);-1a-16-4m:2q 2q;16-4m:2q 2q;1x-2w:4u 0 0 4u}.13-1t.13-1b .13-1f [1j^=13-1f-35-1o][1j$=1k]{19:-.2x;1g:.3q;-1a-16-4m:0 1.21;16-4m:0 1.21;1x-2w:0 4u 4u 0}.13-1t.13-1b .13-1f .13-1f-6G{1c:2q;1E:2q}.13-1t.13-1b .13-1f .13-1f-6F{19:0;1g:.4J;1c:.4J;1E:2.9H}.13-1t.13-1b .13-1f [1j^=13-1f-1o]{1E:.2C}.13-1t.13-1b .13-1f [1j^=13-1f-1o][1j$=3h]{19:1.2m;1g:.39;1c:.2X}.13-1t.13-1b .13-1f [1j^=13-1f-1o][1j$=3c]{19:.3q;1k:.39;1c:1.2H}.13-1t.13-1b.13-31{-1a-1L:13-1b-31 .5s;1L:13-1b-31 .5s}.13-1t.13-1b.13-30{-1a-1L:13-1b-30 .1s 67;1L:13-1b-30 .1s 67}.13-1t.13-1b .13-1Q-1f-1r .13-1f-1o-3h{-1a-1L:13-1b-1Q-1f-1o-3h .4g;1L:13-1b-1Q-1f-1o-3h .4g}.13-1t.13-1b .13-1Q-1f-1r .13-1f-1o-3c{-1a-1L:13-1b-1Q-1f-1o-3c .4g;1L:13-1b-1Q-1f-1o-3c .4g}@-1a-2a 13-1b-31{0%{-1a-16:28(-.1W) 2t(3n);16:28(-.1W) 2t(3n)}33%{-1a-16:28(0) 2t(-3n);16:28(0) 2t(-3n)}66%{-1a-16:28(.2C) 2t(3n);16:28(.2C) 2t(3n)}1F%{-1a-16:28(0) 2t(0);16:28(0) 2t(0)}}@2a 13-1b-31{0%{-1a-16:28(-.1W) 2t(3n);16:28(-.1W) 2t(3n)}33%{-1a-16:28(0) 2t(-3n);16:28(0) 2t(-3n)}66%{-1a-16:28(.2C) 2t(3n);16:28(.2C) 2t(3n)}1F%{-1a-16:28(0) 2t(0);16:28(0) 2t(0)}}@-1a-2a 13-1b-30{1F%{-1a-16:2t(6D);16:2t(6D);2z:0}}@2a 13-1b-30{1F%{-1a-16:2t(6D);16:2t(6D);2z:0}}@-1a-2a 13-1b-1Q-1f-1o-3h{0%{19:.5K;1g:.32;1c:0}54%{19:.2m;1g:.2m;1c:0}70%{19:.1W;1g:-.2x;1c:1.1W}84%{19:1.32;1g:.2X;1c:.21}1F%{19:1.2m;1g:.39;1c:.2X}}@2a 13-1b-1Q-1f-1o-3h{0%{19:.5K;1g:.32;1c:0}54%{19:.2m;1g:.2m;1c:0}70%{19:.1W;1g:-.2x;1c:1.1W}84%{19:1.32;1g:.2X;1c:.21}1F%{19:1.2m;1g:.39;1c:.2X}}@-1a-2a 13-1b-1Q-1f-1o-3c{0%{19:1.1W;1k:1.2H;1c:0}65%{19:1.2x;1k:.3q;1c:0}84%{19:.3q;1k:0;1c:1.2m}1F%{19:.3q;1k:.39;1c:1.2H}}@2a 13-1b-1Q-1f-1o-3c{0%{19:1.1W;1k:1.2H;1c:0}65%{19:1.2x;1k:.3q;1c:0}84%{19:.3q;1k:0;1c:1.2m}1F%{19:.3q;1k:.39;1c:1.2H}}1e.13-1q:1M(.13-26-1P):1M(.13-1b-1q){3T:2L}1e.13-1E-1D{1E:1D!3f}1e.13-26-1P .13-1q{19:1D;1k:1D;1v:1D;1g:1D;4K-1c:d5(1F% - .1W * 2);1J-1u:3v}1e.13-26-1P .13-1q>.13-3M{2r-3H:0 0 d6 3B(0,0,0,.4)}1e.13-26-1P .13-1q.13-19{19:0;1g:50%;-1a-16:4c(-50%);16:4c(-50%)}1e.13-26-1P .13-1q.13-19-1g,1e.13-26-1P .13-1q.13-19-1O{19:0;1g:0}1e.13-26-1P .13-1q.13-19-27,1e.13-26-1P .13-1q.13-19-1k{19:0;1k:0}1e.13-26-1P .13-1q.13-1l{19:50%;1g:50%;-1a-16:6w(-50%,-50%);16:6w(-50%,-50%)}1e.13-26-1P .13-1q.13-1l-1g,1e.13-26-1P .13-1q.13-1l-1O{19:50%;1g:0;-1a-16:28(-50%);16:28(-50%)}1e.13-26-1P .13-1q.13-1l-27,1e.13-26-1P .13-1q.13-1l-1k{19:50%;1k:0;-1a-16:28(-50%);16:28(-50%)}1e.13-26-1P .13-1q.13-1v{1v:0;1g:50%;-1a-16:4c(-50%);16:4c(-50%)}1e.13-26-1P .13-1q.13-1v-1g,1e.13-26-1P .13-1q.13-1v-1O{1v:0;1g:0}1e.13-26-1P .13-1q.13-1v-27,1e.13-26-1P .13-1q.13-1v-1k{1k:0;1v:0}.13-1h{2B:1C;2G:d7;z-3Z:d9;19:0;1k:0;1v:0;1g:0;1C-4k:5M;1S-2f:1l;2p-1z:1l;2e:.1W;3T-x:2L;1J-1u:3v;-1a-3T-da:db}.13-1h.13-19{1S-2f:1C-1O}.13-1h.13-19-1g,.13-1h.13-19-1O{1S-2f:1C-1O;2p-1z:1C-1O}.13-1h.13-19-27,.13-1h.13-19-1k{1S-2f:1C-1O;2p-1z:1C-27}.13-1h.13-1l{1S-2f:1l}.13-1h.13-1l-1g,.13-1h.13-1l-1O{1S-2f:1l;2p-1z:1C-1O}.13-1h.13-1l-27,.13-1h.13-1l-1k{1S-2f:1l;2p-1z:1C-27}.13-1h.13-1v{1S-2f:1C-27}.13-1h.13-1v-1g,.13-1h.13-1v-1O{1S-2f:1C-27;2p-1z:1C-1O}.13-1h.13-1v-27,.13-1h.13-1v-1k{1S-2f:1C-27;2p-1z:1C-27}.13-1h.13-1v-27>:4P-4Q,.13-1h.13-1v-1g>:4P-4Q,.13-1h.13-1v-1k>:4P-4Q,.13-1h.13-1v-1O>:4P-4Q,.13-1h.13-1v>:4P-4Q{1N-19:1D}.13-1h.13-1Y-6S>.13-3M{2B:1C!3f;1C:1;1S-9M:72;2p-1z:1l}.13-1h.13-1Y-5M>.13-3M{2B:1C!3f;1C:1;1S-1z:1l;2p-1z:1l}.13-1h.13-1Y-1R{1C:1;1C-4k:1R}.13-1h.13-1Y-1R.13-1v,.13-1h.13-1Y-1R.13-1l,.13-1h.13-1Y-1R.13-19{1S-2f:1l}.13-1h.13-1Y-1R.13-1v-1g,.13-1h.13-1Y-1R.13-1v-1O,.13-1h.13-1Y-1R.13-1l-1g,.13-1h.13-1Y-1R.13-1l-1O,.13-1h.13-1Y-1R.13-19-1g,.13-1h.13-1Y-1R.13-19-1O{1S-2f:1C-1O}.13-1h.13-1Y-1R.13-1v-27,.13-1h.13-1Y-1R.13-1v-1k,.13-1h.13-1Y-1R.13-1l-27,.13-1h.13-1Y-1R.13-1l-1k,.13-1h.13-1Y-1R.13-19-27,.13-1h.13-1Y-1R.13-19-1k{1S-2f:1C-27}.13-1h.13-1Y-1R>.13-3M{2B:1C!3f;1C:1;1S-1z:1l;2p-1z:1l}.13-1h:1M(.13-19):1M(.13-19-1O):1M(.13-19-27):1M(.13-19-1g):1M(.13-19-1k):1M(.13-1l-1O):1M(.13-1l-27):1M(.13-1l-1g):1M(.13-1l-1k):1M(.13-1v):1M(.13-1v-1O):1M(.13-1v-27):1M(.13-1v-1g):1M(.13-1v-1k):1M(.13-1Y-6S)>.13-3M{1N:1D}@6J 7C 6q (-2Z-51-52:1Z),(-2Z-51-52:3V){.13-1h .13-3M{1N:0!3f}}.13-1h.13-6R{6u:1J-1u .1s}.13-1h.13-1q{1J-1u:3B(0,0,0,.4)}.13-1t{2B:1Z;2G:5o;2r-5r:1x-2r;1C-4k:1R;2p-1z:1l;1c:de;4K-1c:1F%;2e:1.2x;1x:1Z;1x-2w:.2C;1J:#3Q;1T-8Z:3z;1T-2j:dh}.13-1t:2c{5B:0}.13-1t.13-2u{3T-y:2L}.13-4O{2B:1C;1C-4k:1R;1S-2f:1l}.13-2I{2G:5o;4K-1c:1F%;1N:0 0 .4u;2e:0;1u:#dj;1T-2j:1.3p;1T-3Y:69;3g-1S:1l;3g-16:1Z;6a-6d:4I-6a}.13-2F{z-3Z:1;1C-6d:6d;1S-2f:1l;2p-1z:1l;1c:1F%;1N:1.2x 1D 0}.13-2F:1M(.13-2u) .13-2J[2Q]{2z:.4}.13-2F:1M(.13-2u) .13-2J:8j{1J-4e:4R-8s(3B(0,0,0,.1),3B(0,0,0,.1))}.13-2F:1M(.13-2u) .13-2J:3V{1J-4e:4R-8s(3B(0,0,0,.2),3B(0,0,0,.2))}.13-2F.13-2u .13-2J.13-4n{2r-5r:1x-2r;1c:2.21;1E:2.21;1N:.dq;2e:0;-1a-1L:13-1p-2u 1.5s 4R 6z 6v 4x;1L:13-1p-2u 1.5s 4R 6z 6v 4x;1x:.2x 44 3v;1x-2w:1F%;1x-1u:3v;1J-1u:3v!3f;1u:3v;6s:4r;-1a-4a-2b:1Z;-4s-4a-2b:1Z;-2Z-4a-2b:1Z;4a-2b:1Z}.13-2F.13-2u .13-2J.13-3N{1N-1k:9R;1N-1g:9R}.13-2F.13-2u :1M(.13-2J).13-4n::dA{1z:\\\\\"\\\\\";2B:6t-4b;1c:9L;1E:9L;1N-1g:dC;-1a-1L:13-1p-2u 1.5s 4R 6z 6v 4x;1L:13-1p-2u 1.5s 4R 6z 6v 4x;1x:9m 44 #dE;1x-2w:50%;1x-1k-1u:3v;2r-3H:3K 3K 3K #3Q}.13-2J{1N:.2C;2e:.1W 2q;2r-3H:1Z;1T-3Y:dG}.13-2J:1M([2Q]){6s:8g}.13-2J.13-4n{1x:0;1x-2w:.2x;1J:77;1J-1u:#6k;1u:#3Q;1T-2j:1.32}.13-2J.13-3N{1x:0;1x-2w:.2x;1J:77;1J-1u:#dK;1u:#3Q;1T-2j:1.32}.13-2J:2c{5B:0;2r-3H:0 0 0 79 #3Q,0 0 0 dM 3B(50,1F,7T,.4)}.13-2J::-4s-2c-dN{1x:0}.13-3C{2p-1z:1l;1N:1.2x 0 0;2e:3w 0 0;1x-19:3K 44 #dO;1u:#9X;1T-2j:3w}.13-4e{4K-1c:1F%;1N:1.2x 1D}.13-3e{2G:4p;19:0;1k:0;2p-1z:1l;1c:1.2q;1E:1.2q;2e:0;3T:2L;6u:1u .1s 7g-dR;1x:1Z;1x-2w:0;5B:77;1J:0 0;1u:#4V;1T-8Z:dT;1T-2j:2.21;1o-1E:1.2;6s:8g}.13-3e:8j{-1a-16:1Z;16:1Z;1J:0 0;1u:#5b}.13-1z{z-3Z:1;2p-1z:1l;1N:0;2e:0;1u:#9X;1T-2j:1.2m;1T-3Y:87;1o-1E:4x;6a-6d:4I-6a}#13-1z{3g-1S:1l}.13-2A,.13-2l,.13-1i,.13-2v,.13-2b,.13-2h{1N:3w 1D}.13-2l,.13-1i,.13-2h{2r-5r:1x-2r;1c:1F%;6u:1x-1u .3s,2r-3H .3s;1x:3K 44 #9t;1x-2w:.39;1J:3z;2r-3H:dX 0 3K 3K 3B(0,0,0,.dY);1u:3z;1T-2j:1.2m}.13-2l.13-4N,.13-1i.13-4N,.13-2h.13-4N{1x-1u:#5b!3f;2r-3H:0 0 79 #5b!3f}.13-2l:2c,.13-1i:2c,.13-2h:2c{1x:3K 44 #dZ;5B:0;2r-3H:0 0 9m #e0}.13-2l::-1a-1i-2E,.13-1i::-1a-1i-2E,.13-2h::-1a-1i-2E{1u:#4V}.13-2l::-4s-2E,.13-1i::-4s-2E,.13-2h::-4s-2E{1u:#4V}.13-2l:-2Z-1i-2E,.13-1i:-2Z-1i-2E,.13-2h:-2Z-1i-2E{1u:#4V}.13-2l::-2Z-1i-2E,.13-1i::-2Z-1i-2E,.13-2h::-2Z-1i-2E{1u:#4V}.13-2l::2E,.13-1i::2E,.13-2h::2E{1u:#4V}.13-2s{1N:3w 1D;1J:3z}.13-2s 1i{1c:80%}.13-2s 46{1c:20%;1u:3z;1T-3Y:69;3g-1S:1l}.13-2s 1i,.13-2s 46{1E:2.1W;2e:0;1T-2j:1.2m;1o-1E:2.1W}.13-1i{1E:2.1W;2e:0 .2X}.13-1i[1U=4d]{4K-1c:e2}.13-2l{1J:3z;1T-2j:1.2m}.13-2h{1E:6.2X;2e:.2X}.13-2b{7m-1c:50%;4K-1c:1F%;2e:.2H .1W;1J:3z;1u:3z;1T-2j:1.2m}.13-2A,.13-2v{1S-2f:1l;2p-1z:1l;1J:3z;1u:3z}.13-2A 3E,.13-2v 3E{1N:0 .78;1T-2j:1.2m}.13-2A 1i,.13-2v 1i{1N:0 .4u}.13-4h-4l{2B:1Z;1S-2f:1l;2p-1z:1l;2e:.1W;3T:2L;1J:#e3;1u:#e4;1T-2j:3w;1T-3Y:87}.13-4h-4l::4j{1z:\\\\\"!\\\\\";2B:6t-4b;1c:1.21;7m-1c:1.21;1E:1.21;1N:0 .1W;8T:4x;1x-2w:50%;1J-1u:#5b;1u:#3Q;1T-3Y:69;1o-1E:1.21;3g-1S:1l}@e5 (-2Z-e6:4M){.13-2s 1i{1c:1F%!3f}.13-2s 46{2B:1Z}}@6J 7C 6q (-2Z-51-52:1Z),(-2Z-51-52:3V){.13-2s 1i{1c:1F%!3f}.13-2s 46{2B:1Z}}@-4s-1m 62-e7(){.13-3e:2c{5B:79 44 3B(50,1F,7T,.4)}}.13-1r{2G:5o;2r-5r:1z-2r;2p-1z:1l;1c:21;1E:21;1N:1.2x 1D 1.3p;8T:4x;1x:.2x 44 3v;1x-2w:50%;1o-1E:21;6s:4r;-1a-4a-2b:1Z;-4s-4a-2b:1Z;-2Z-4a-2b:1Z;4a-2b:1Z}.13-1r::4j{2B:1C;1S-2f:1l;1E:92%;1T-2j:3.2X}.13-1r.13-2n{1x-1u:#5b}.13-1r.13-2n .13-x-2V{2G:5o;1C-1Y:1}.13-1r.13-2n [1j^=13-x-2V-1o]{2B:4b;2G:4p;19:2.2C;1c:2.3q;1E:.2C;1x-2w:.2m;1J-1u:#5b}.13-1r.13-2n [1j^=13-x-2V-1o][1j$=1g]{1g:1.32;-1a-16:1p(1X);16:1p(1X)}.13-1r.13-2n [1j^=13-x-2V-1o][1j$=1k]{1k:3w;-1a-16:1p(-1X);16:1p(-1X)}.13-1r.13-5J{1x-1u:#e8;1u:#e9}.13-1r.13-5J::4j{1z:\\\\\"!\\\\\"}.13-1r.13-5I{1x-1u:#ea;1u:#eb}.13-1r.13-5I::4j{1z:\\\\\"i\\\\\"}.13-1r.13-4q{1x-1u:#ec;1u:#ed}.13-1r.13-4q::4j{1z:\\\\\"?\\\\\"}.13-1r.13-4q.13-ef-4q-2V::4j{1z:\\\\\"؟\\\\\"}.13-1r.13-1f{1x-1u:#7Q}.13-1r.13-1f [1j^=13-1f-35-1o]{2G:4p;1c:3.2X;1E:7.21;-1a-16:1p(1X);16:1p(1X);1x-2w:50%}.13-1r.13-1f [1j^=13-1f-35-1o][1j$=1g]{19:-.4J;1g:-2.eg;-1a-16:1p(-1X);16:1p(-1X);-1a-16-4m:3.2X 3.2X;16-4m:3.2X 3.2X;1x-2w:7.21 0 0 7.21}.13-1r.13-1f [1j^=13-1f-35-1o][1j$=1k]{19:-.9H;1g:1.3p;-1a-16:1p(-1X);16:1p(-1X);-1a-16-4m:0 3.2X;16-4m:0 3.2X;1x-2w:0 7.21 7.21 0}.13-1r.13-1f .13-1f-6G{2G:4p;z-3Z:2;19:-.2x;1g:-.2x;2r-5r:1z-2r;1c:1F%;1E:1F%;1x:.2x 44 3B(eh,ei,ej,.3);1x-2w:50%}.13-1r.13-1f .13-1f-6F{2G:4p;z-3Z:1;19:.21;1g:1.1W;1c:.4J;1E:5.1W;-1a-16:1p(-1X);16:1p(-1X)}.13-1r.13-1f [1j^=13-1f-1o]{2B:4b;2G:4p;z-3Z:2;1E:.2C;1x-2w:.2m;1J-1u:#7Q}.13-1r.13-1f [1j^=13-1f-1o][1j$=3h]{19:2.3p;1g:.3p;1c:1.5K;-1a-16:1p(1X);16:1p(1X)}.13-1r.13-1f [1j^=13-1f-1o][1j$=3c]{19:2.2H;1k:.21;1c:2.3q;-1a-16:1p(-1X);16:1p(-1X)}.13-25-3F{1S-2f:1l;1N:0 0 1.2x;2e:0;1J:3z;1T-3Y:69}.13-25-3F 7z{2B:6t-4b;2G:5o}.13-25-3F .13-25-2D{z-3Z:20;1c:2q;1E:2q;1x-2w:2q;1J:#6k;1u:#3Q;1o-1E:2q;3g-1S:1l}.13-25-3F .13-25-2D.13-3V-25-2D{1J:#6k}.13-25-3F .13-25-2D.13-3V-25-2D~.13-25-2D{1J:#8E;1u:#3Q}.13-25-3F .13-25-2D.13-3V-25-2D~.13-25-2D-1o{1J:#8E}.13-25-3F .13-25-2D-1o{z-3Z:10;1c:2.21;1E:.4u;1N:0 -3K;1J:#6k}[1j^=13]{-1a-el-em-1u:3v}.13-31{-1a-1L:13-31 .3s;1L:13-31 .3s}.13-31.13-6Q{-1a-1L:1Z;1L:1Z}.13-30{-1a-1L:13-30 .88 67;1L:13-30 .88 67}.13-30.13-6Q{-1a-1L:1Z;1L:1Z}.13-6M .13-3e{1k:1D;1g:0}.13-1Q-1f-1r .13-1f-1o-3h{-1a-1L:13-1Q-1f-1o-3h .4g;1L:13-1Q-1f-1o-3h .4g}.13-1Q-1f-1r .13-1f-1o-3c{-1a-1L:13-1Q-1f-1o-3c .4g;1L:13-1Q-1f-1o-3c .4g}.13-1Q-1f-1r .13-1f-35-1o-1k{-1a-1L:13-1p-1f-35-1o 4.8I 7g-2O;1L:13-1p-1f-35-1o 4.8I 7g-2O}.13-1Q-2n-1r{-1a-1L:13-1Q-2n-1r .5s;1L:13-1Q-2n-1r .5s}.13-1Q-2n-1r .13-x-2V{-1a-1L:13-1Q-2n-x-2V .5s;1L:13-1Q-2n-x-2V .5s}@-1a-2a 13-1p-2u{0%{-1a-16:1p(0);16:1p(0)}1F%{-1a-16:1p(5O);16:1p(5O)}}@2a 13-1p-2u{0%{-1a-16:1p(0);16:1p(0)}1F%{-1a-16:1p(5O);16:1p(5O)}}@6J eq{1e.13-1q:1M(.13-26-1P):1M(.13-1b-1q){3T-y:8D!3f}1e.13-1q:1M(.13-26-1P):1M(.13-1b-1q)>[2o-2L=4M]{2B:1Z}1e.13-1q:1M(.13-26-1P):1M(.13-1b-1q) .13-1h{2G:8O!3f}}\");',0,895,\"|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||swal2|function||transform|return|var|top|webkit|toast|width|this|body|success|left|container|input|class|right|center|document|concat|line|rotate|shown|icon||popup|color|bottom|if|border|Tt|content|typeof|null|flex|auto|height|100|scale|div|style|background|value|animation|not|margin|start|backdrop|animate|column|align|font|type|nt|625em|45deg|grow|none||5em|window|length||progress|no|end|translateY|target|keyframes|select|focus|Object|padding|items|for|textarea|customClass|size|get|file|125em|error|aria|justify|2em|box|range|rotateZ|loading|radio|radius|25em|it|opacity|checkbox|display|3125em|step|placeholder|actions|position|375em|title|styled|rt|hidden|new|confirmButton|in|setAttribute|disabled|inputValue|forEach|querySelector|timeout|mark|progressSteps|75em|yt|ms|hide|show|0625em||span|circular|Promise|appendChild|innerHTML|1875em|string|prototype|long|undefined|close|important|text|tip|case|validationMessage|innerParams|void|else|2deg|cancelButton|875em|9375em|key||indexOf|arguments|transparent|1em|getInput|button|inherit|createElement|rgba|footer|data|label|steps|then|shadow|parentNode|Swal|1px|running|modal|cancel|removeAttribute|ue|fff|domCache|to|overflow|ot|active|classList|contains|weight|index|tabindex|keydownListenerCapture|parameter|set|solid||output|Reflect|remaining|params|user|block|translateX|number|image|rotateX|75s|validation|405deg|before|direction|message|origin|confirm|object|absolute|question|default|moz|push|4em|getPropertyValue|querySelectorAll|normal|resolve|inputOptions|call|previousBodyPadding|parseInt|hideLoading|activeElement|className|keydownTarget|timer|break|4375em|max|_|true|inputerror|header|first|child|linear|DismissReason|preConfirm|getComputedStyle|ccc|getAttribute|stop|inputPlaceholder|apply||high|contrast|is||id|currentProgressStep|keys|previousActiveElement|setTimeout|documentElement|f27474|Qt|sweetalert2|showCancelButton|showConfirmButton|promise|WeakMap|Symbol|email|Expected|or|got|html|relative|st|Z0|sizing||zA|imageClass|titleText|Jt|toString|allowOutsideClick|delete|keydownHandler|outline|focusCancel|inputValidator|backgroundColor|freeze|checked|switch|info|warning|5625em|iosfix|row|confirmButtonColor|360deg|imageUrl|constructor|onchange|Date|inputClass|showCloseButton|onclick|tt|Pt|fire|resetValidationMessage|addEventListener|Lt|url||keydownHandlerAdded|||forwards|Unexpected|600|word|8em|Ft|wrap|previous|removeEventListener|scrollTop|preventDefault|of|customContainerClass|3085d6|showLoaderOnConfirm|gt|onmouseup|onBeforeOpen|onOpen|and|Dt|cursor|inline|transition|infinite|translate|enumerable|px|0s|writable|100deg|filter|1deg|Invalid|fix|ring|enableButtons|hasOwnProperty|media|_main|queue|rtl|cancelButtonColor|05|construct|noanimation|fade|fullscreen|dismiss|esc|hasAttribute|It|getConfirmButton|SweetAlert2|3em||remove|stretch|Nt|parseFloat|click|Array|initial|6em|2px|focusConfirm|reverseButtons|cancelButtonClass|stopPropagation|confirmButtonClass|allowEnterKey|ease|heightAuto|swalPromiseResolve|Zt|catch|keydown|min|capture|Mt|At|getTimerLeft|Bt|closeButton|Xt|imageWidth|te|imageAlt|childNodes|progressStepsDistance|li|test|https|all|removeChild|Ct|configurable|overflowY|requires|styleSheet|tel|throw|ie|Map|oninput|se|instanceof|a5dc86|pt|closePopup|150|disableButtons|Sweetalert2|showValidationMessage|buttonsStyling|update|borderRightColor||onmousedown|borderLeftColor|define||github|from|300|15s|try|kt|St|ft|splice|Unknown|showLoading|pointer|src|TypeError|hover|h2|imageHeight|offsetWidth|href|8125em|increase|innerText|isRunning|gradient|OK|closeButtonAriaLabel|Rt|scrollHeight|Cancel|paddingRight|ontouchstart|navigator|50px|mt|scroll|add8e6|busy|use|The|25s|jt|valid|defaulting|_t|Ot|static|restoreFocusTimeout|console|allowEscapeKey|zt|zoom|Wt|controls|resize|Kt|children|family|bind|duration||stopKeydownPropagation|setPrototypeOf||vt|confirmButtonText|confirmButtonAriaLabel|attributes|cancelButtonText|cancelButtonAriaLabel|name|isVisible|dialog|getPrototypeOf|__proto__|callback|started|clearTimeout|inputAutoTrim|password|3px|split|onAfterClose|hasn|onClose|scrollbarPadding|Vt|d9d9d9|qt|Ht|lt|isUpdatableParameter|ne|Boolean|argsToParams|cloneNode|finally|SweetAlert|clickConfirm|add|re|6875em|option|selected|wt|15px|self|been|defineProperties|com|inputAttributes|30px|enableConfirmButton|ut|disableConfirmButton|enableInput|disableInput|545454|blur|outerHTML|invalid|describedBy|getProgressSteps|const|swalInstance|getQueueStep|setProgressSteps|module|insertBefore|should|removeProperty|with|exports|Button|files|ul|symbol|isDeprecatedParameter|together|usage|example|nhttps|used|nshowLoaderOnConfirm|io|ajax|request|Target|||join|defined|trim|checkValidity|but|toasts|onmouseover|onmouseout|incompatible|hideProgressSteps|showProgressSteps|Enter|isComposing|Tab|shiftKey|ArrowLeft|ArrowRight|ArrowUp|ArrowDown|Left|Right|Up|Down|Escape|Esc|marginRight|Error|marginLeft|Updatable|are|listed|here|closeToast|blob|master|utils|js|closeModal|disableLoading|This|package|library|||||||||||please|include|shim|enable|browser|See|wiki||Migration||MSStream|support|userAgent|version|iPod|swal|sweetAlert|getElementsByTagName|head|iPhone|cssText|charset|UTF|iPad|URL|256|www|address|ontouchmove|tagName|INPUT|clientHeight|alignItems|offsetTop|documentMode|MSInputMethodContext|clientWidth|msMaxTouchPoints|innerHeight|isTimerRunning|increaseTimer|toggleTimer|resumeTimer|stopTimer|enableLoading|deleteQueueStep|insertQueueStep|create|either|must|expression|Super|mixin|isLoading|getValidationMessage|getFocusableElements|getFooter|getHeader|getCancelButton|getActions|getCloseButton|getIcons|getIcon|getImage|getContent|getTitle|getPopup|getContainer|clickCancel|see|isValidParameter||imageHeigth|Close|scrollTo|scrollY|scrollX|alt|starts|700|arrays|JS|like|than|less|textContent|basis|ButtonClass|ButtonAriaLabel|ButtonText|substring|showC|animationend|oanimationend|oAnimationEnd|OAnimation|webkitAnimationEnd|WebkitAnimation|nextSibling|assertive|polite|live|alert|role|initialize|has|replace|times|img|calc|10px|fixed|describedby|1060|scrolling|touch|labelledby|HTMLElement|32em|video|audio|1rem|contenteditable|595959|embed|iframe|area|sort|getClientRects|offsetHeight|46875em|warn|instead||Please|release|major|next|the|removed|after|will|5px|deprecated|999|slice|500|map|getOwnPropertyDescriptor|called|aaa|super|4px|inner|eee|initialised|ReferenceError|out|Function|serif|Proxy|sham|assign|inset|06|b4dbed|c4e6f5|defineProperty|10em|f0f0f0|666|supports|accelerator|prefix|facea8|f8bb86|9de0f6|3fc3ee|c9dae1|87adbd||arabic|0635em|165|220|134|Cannot|tap|highlight|iterator|strict|amd|print\".split(\"|\"),0,{}))},function(e,t,n){\"use strict\";function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var r=function(e){var t=\"Dropdown\",n=(\".\".concat(\"lte.dropdown\"),e.fn[t]),r=\".dropdown-menu.show\",a=\"dropdown-menu-right\",i={},s=function(){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this._config=n,this._element=e}var n,s,c;return n=t,c=[{key:\"_jQueryInterface\",value:function(n){return this.each((function(){var o=e(this).data(\"lte.dropdown\"),r=e.extend({},i,e(this).data());o||(o=new t(e(this),r),e(this).data(\"lte.dropdown\",o)),\"toggleSubmenu\"!==n&&\"fixPosition\"!=n||o[n]()}))}}],(s=[{key:\"toggleSubmenu\",value:function(){this._element.siblings().toggleClass(\"show\"),this._element.next().hasClass(\"show\")||this._element.parents(\".dropdown-menu\").first().find(\".show\").removeClass(\"show\"),this._element.parents(\"li.nav-item.dropdown.show\").on(\"hidden.bs.dropdown\",(function(t){e(\".dropdown-submenu .show\").removeClass(\"show\")}))}},{key:\"fixPosition\",value:function(){var t=e(r);if(0!==t.length){t.hasClass(a)?(t.css(\"left\",\"inherit\"),t.css(\"right\",0)):(t.css(\"left\",0),t.css(\"right\",\"inherit\"));var n=t.offset(),o=t.width(),i=e(window).width()-n.left;n.left<0?(t.css(\"left\",\"inherit\"),t.css(\"right\",n.left-5)):i<o&&(t.css(\"left\",\"inherit\"),t.css(\"right\",0))}}}])&&o(n.prototype,s),c&&o(n,c),t}();return e.fn[t]=s._jQueryInterface,e.fn[t].Constructor=s,e.fn[t].noConflict=function(){return e.fn[t]=n,s._jQueryInterface},s}(jQuery);t.a=r},function(module,exports){eval(function(e,t,n,o,r,a){if(r=function(e){return(e<62?\"\":r(parseInt(e/62)))+((e%=62)>35?String.fromCharCode(e+29):e.toString(36))},!\"\".replace(/^/,String)){for(;n--;)a[r(n)]=o[n]||r(n);o=[function(e){return a[e]}],r=function(){return\"\\\\w+\"},n=1}for(;n--;)o[n]&&(e=e.replace(new RegExp(\"\\\\b\"+r(n)+\"\\\\b\",\"g\"),o[n]));return e}('(4(k,l){\"4\"===G V&&V.1Z?V(l):\"21\"===G 1z?2c.1z=l():k.2f=l()})(x,4(){4 k(a,b,d){7 a<b?b:a>d?d:a}4 l(a,b,d){a=\"Q\"===e.B?{W:\"Q(\"+D*(-1+a)+\"%,0,0)\"}:\"Y\"===e.B?{W:\"Y(\"+D*(-1+a)+\"%,0)\"}:{\"1u-2b\":D*(-1+a)+\"%\"};a.P=\"U \"+b+\"A \"+d;7 a}4 q(a,b){7 0<=(\"2a\"==G a?a:n(a)).24(\" \"+b+\" \")}4 r(a,b){6 d=n(a),c=d+b;q(d,b)||(a.10=c.1o(1))}4 t(a,b){6 c=n(a);q(a,b)&&(b=c.H(\" \"+b+\" \",\" \"),a.10=b.1o(1,b.J-1))}4 n(a){7(\" \"+(a.10||\"\")+\" \").H(/\\\\s+/1C,\" \")}6 c={1W:\"0.2.0\"},e=c.1V={1b:.1U,1e:\"1Q\",B:\"\",1g:1P,N:!0,1n:.1O,1p:1N,1t:!0,16:\\'[S=\"11\"]\\',1B:\\'[S=\"T\"]\\',C:\"I\",19:\\'<i K=\"11\" S=\"11\"><i K=\"1M\"></i></i><i K=\"T\" S=\"T\"><i K=\"T-1L\"></i></i>\\'};c.1H=4(a){6 b;X(b 9 a){6 c=a[b];1h 0!==c&&a.1i(b)&&(e[b]=c)}7 x};c.j=1k;c.E=4(a){6 b=c.1m();a=k(a,e.1b,1);c.j=1===a?1k:a;6 d=c.1l(!b),p=d.F(e.16),h=e.1g,v=e.1e;d.1r;w(4(b){\"\"===e.B&&(e.B=c.1s());m(p,l(a,h,v));1===a?(m(d,{P:\"1D\",1v:1}),d.1r,R(4(){m(d,{P:\"U \"+h+\"A 1w\",1v:0});R(4(){c.1x();b()},h)},h)):R(b,h)});7 x};c.1m=4(){7\"1y\"===G c.j};c.14=4(){c.j||c.E(0);6 a=4(){R(4(){c.j&&(c.N(),a())},e.1p)};e.N&&a();7 x};c.1A=4(a){7 a||c.j?c.15(.3+.5*13.12()).E(1):x};c.15=4(a){6 b=c.j;7 b?(\"1y\"!==G a&&(a=(1-b)*k(13.12()*b,.1,.1E)),b=k(b+a,0,.1F),c.E(b)):c.14()};c.N=4(){7 c.15(13.12()*e.1n)};(4(){6 a=0,b=0;c.1G=4(d){y(!d||\"1I\"===d.1J())7 x;0===b&&c.14();a++;b++;d.1K(4(){b--;0===b?(a=0,c.1A()):c.E((a-b)/a)});7 x}})();c.1l=4(a){y(c.1d())7 8.Z(\"o\");r(8.1j,\"o-1f\");6 b=8.1R(\"i\");b.1S=\"o\";b.1T=e.19;6 d=b.F(e.16),p=a?\"-D\":D*(-1+(c.j||0));a=8.F(e.C);m(d,{P:\"U 0 1w\",W:\"Q(\"+p+\"%,0,0)\"});e.1t||(d=b.F(e.1B))&&d&&d.M&&d.M.1a(d);a!=8.I&&r(a,\"o-17-C\");a.1X(b);7 b};c.1x=4(){t(8.1j,\"o-1f\");t(8.F(e.C),\"o-17-C\");6 a=8.Z(\"o\");a&&a&&a.M&&a.M.1a(a)};c.1d=4(){7!!8.Z(\"o\")};c.1s=4(){6 a=8.I.L,b=\"1Y\"9 a?\"1c\":\"20\"9 a?\"18\":\"22\"9 a?\"A\":\"23\"9 a?\"O\":\"\";7 b+\"25\"9 a?\"Q\":b+\"26\"9 a?\"Y\":\"1u\"};6 w=4(){4 a(){6 c=b.27();c&&c(a)}6 b=[];7 4(c){b.28(c);1==b.J&&a()}}(),m=4(){4 a(a){7 a.H(/^-A-/,\"A-\").H(/-([\\\\29-z])/1C,4(a,b){7 b.1q()})}4 b(b){b=a(b);6 d;y(!(d=e[b])){d=b;a:{6 u=8.I.L;y(!(b 9 u))X(6 h=c.J,f=b.2d(0).1q()+b.2e(1),g;h--;)y(g=c[h]+f,g 9 u){b=g;2g a}}d=e[d]=b}7 d}6 c=[\"1c\",\"O\",\"18\",\"A\"],e={};7 4(a,c){6 d=2h;y(2==d.J)X(g 9 c){6 e=c[g];y(1h 0!==e&&c.1i(g)){d=a;6 f=g;f=b(f);d.L[f]=e}}2i{6 g=a;f=d[1];d=d[2];f=b(f);g.L[f]=d}}}();7 c});',0,143,\"||||function||var|return|document|in|||||||||div|status|||||nprogress|||||||||this|if||ms|positionUsing|parent|100|set|querySelector|typeof|replace|body|length|class|style|parentNode|trickle||transition|translate3d|setTimeout|role|spinner|all|define|transform|for|translate|getElementById|className|bar|random|Math|start|inc|barSelector|custom|Moz|template|removeChild|minimum|Webkit|isRendered|easing|busy|speed|void|hasOwnProperty|documentElement|null|render|isStarted|trickleRate|substring|trickleSpeed|toUpperCase|offsetWidth|getPositioningCSS|showSpinner|margin|opacity|linear|remove|number|exports|done|spinnerSelector|gi|none|95|994|promise|configure|resolved|state|always|icon|peg|800|02|200|ease|createElement|id|innerHTML|08|settings|version|appendChild|WebkitTransform|amd|MozTransform|object|msTransform|OTransform|indexOf|Perspective|Transform|shift|push|da|string|left|module|charAt|slice|NProgress|break|arguments|else\".split(\"|\"),0,{}))},function(module,__webpack_exports__,__webpack_require__){\"use strict\";function _typeof(e){return(_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}__webpack_require__.d(__webpack_exports__,\"a\",(function(){return Ajax}));var Ajax=function(){function Ajax(e){_classCallCheck(this,Ajax),this.dcat=e,e.handleAjaxError=this.handleAjaxError.bind(this),e.handleJsonResponse=this.handleJsonResponse.bind(this),this.init(e)}return _createClass(Ajax,[{key:\"init\",value:function(e){$.get=function(e,t,n,o){var r={type:\"GET\",url:e};return\"function\"==typeof t&&(o=n,n=t,t=null),\"function\"==typeof n&&(r.success=n),\"object\"===_typeof(t)&&(r.data=t),o&&(r.dataType=o),$.ajax(r)},$.post=function(t){return t.type=\"POST\",Object.assign(t.data,{_token:e.token}),$.ajax(t)},$.delete=function(t){return t.type=\"POST\",t.data={_method:\"DELETE\",_token:e.token},$.ajax(t)},$.put=function(t){return t.type=\"POST\",Object.assign(t.data,{_method:\"PUT\",_token:e.token}),$.ajax(t)}}},{key:\"handleAjaxError\",value:function(e,t,n){var o=this.dcat,r=e.responseJSON||{},a=r.message;switch(o.NP.done(),o.loading(!1),$(\".btn-loading\").buttonLoading(!1),e.status){case 500:return o.error(a||o.lang[500]||\"Server internal error.\");case 403:return o.error(a||o.lang[403]||\"Permission deny!\");case 401:return r.login?location.href=r.login:o.error(o.lang[401]||\"Unauthorized.\");case 419:return o.error(o.lang[419]||\"Sorry, your page has expired.\");case 422:if(r.errors){try{var i,s=[];for(i in r.errors)s.push(r.errors[i].join(\"<br/>\"));o.error(s.join(\"<br/>\"))}catch(e){}return}}o.error(a||e.status+\" \"+n)}},{key:\"handleJsonResponse\",value:function handleJsonResponse(response,options){var Dcat=this.dcat,data=response.data;if(response){if(\"object\"!==_typeof(response))return Dcat.error(\"error\",\"Oops!\");var then=function then(_then){switch(_then.action){case\"refresh\":Dcat.reload();break;case\"download\":window.open(_then.value,\"_blank\");break;case\"redirect\":Dcat.reload(_then.value||null);break;case\"location\":setTimeout((function(){_then.value?window.location=_then.value:window.location.reload()}),1e3);break;case\"script\":!function(){eval(_then.value)}()}};\"string\"==typeof response.html&&response.html&&options.target&&(\"function\"==typeof options.html?options.html(options.target,response.html,response):$(target).html(response.html));var message=data.message||response.message;data.type||(data.type=response.status?\"success\":\"error\"),\"string\"==typeof message&&data.type&&message&&(data.alert?Dcat.swal[data.type](message,data.detail):Dcat[data.type](message,null,data.timeout?{timeOut:1e3*data.timeout}:{})),data.then&&then(data.then)}}}]),Ajax}()},,function(e,t,n){e.exports=n(13)},function(module,exports){var module={};eval(function(e,t,n,o,r,a){if(r=function(e){return(e<62?\"\":r(parseInt(e/62)))+((e%=62)>35?String.fromCharCode(e+29):e.toString(36))},!\"\".replace(/^/,String)){for(;n--;)a[r(n)]=o[n]||r(n);o=[function(e){return a[e]}],r=function(){return\"\\\\w+\"},n=1}for(;n--;)o[n]&&(e=e.replace(new RegExp(\"\\\\b\"+r(n)+\"\\\\b\",\"g\"),o[n]));return e}('!5(e){\"5\"==W 2y&&2y.6g?2y([\"1Z\"],e):\"44\"==W 2E&&2E.3W?2E.3W=5(t,r){6 R 0===r&&(r=\"6f\"!=W Z?3F(\"1Z\"):3F(\"1Z\")(t)),e(r),r}:e(6e)}(5(e){\"6d 6a\";5 t(t){4 r=t.P;t.67()||(t.5Q(),e(t.1p).30(\"z\").1a(r))}5 r(t){4 r=t.1p,a=e(r);7(!a.3I(\"[8=U],[8=1N]\")){4 n=a.30(\"[8=U]\");7(0===n.B)6;r=n[0]}4 i=r.z;7(i.1n=r,\"1N\"===r.8)7(R 0!==t.3G)i.1q=t.3G,i.1x=t.5O;16 7(\"5\"==W e.J.42){4 o=a.42();i.1q=t.3g-o.3j,i.1x=t.3l-o.3p}16 i.1q=t.3g-r.5N,i.1x=t.3l-r.5L;1C(5(){i.1n=i.1q=i.1x=Q},2X)}5 a(){7(e.J.1a.3M){4 t=\"[1Z.z] \"+1X.5K.5J.1h(1D,\"\");Z.2W&&Z.2W.33?Z.2W.33(t):Z.20&&Z.20.3i&&Z.20.3i(t)}}4 n=/\\\\r?\\\\n/g,i={};i.2V=R 0!==e(\\'<1c 8=\"29\">\\').1Q(0).3A,i.3C=R 0!==Z.3E;4 o=!!e.J.2Q;e.J.1s=5(){7(!o)6 3.11.1f(3,1D);4 e=3.2Q.1f(3,1D);6 e&&e.1Z||\"1J\"==W e?e:3.11.1f(3,1D)},e.J.1a=5(t,r,n,s){5 u(r){4 a,n,i=e.1K(r,t.2O).32(\"&\"),o=i.B,s=[];Y(a=0;a<o;a++)i[a]=i[a].3f(/\\\\+/g,\" \"),n=i[a].32(\"=\"),s.H([3h(n[0]),3h(n[1])]);6 s}5 c(r){5 n(e){4 t=Q;1l{e.1R&&(t=e.1R.19)}1A(e){a(\"2N 1Q 1U.1R 19: \"+e)}7(t)6 t;1l{t=e.2L?e.2L:e.19}1A(r){a(\"2N 1Q 1U.2L: \"+r),t=e.19}6 t}5 i(){5 t(){1l{4 e=n(v).5I;a(\"5H = \"+e),e&&\"5F\"===e.1u()&&1C(t,50)}1A(e){a(\"5E 1m: \",e,\" (\",e.9,\")\"),s(L),j&&31(j),j=R 0}}4 r=p.1s(\"1p\"),i=p.1s(\"2c\"),o=p.11(\"2d\")||p.11(\"2I\")||\"2j/z-P\";w.1F(\"1p\",m),l&&!/3r/i.1o(l)||w.1F(\"2G\",\"3z\"),i!==f.1d&&w.1F(\"2c\",f.1d),f.5B||l&&!/3r/i.1o(l)||p.11({2I:\"2j/z-P\",2d:\"2j/z-P\"}),f.1k&&(j=1C(5(){T=!0,s(A)},f.1k));4 u=[];1l{7(f.I)Y(4 c 5A f.I)f.I.2D(c)&&(e.5z(f.I[c])&&f.I[c].2D(\"9\")&&f.I[c].2D(\"G\")?u.H(e(\\'<1c 8=\"2C\" 9=\"\\'+f.I[c].9+\\'\">\\',k).1z(f.I[c].G).2B(w)[0]):u.H(e(\\'<1c 8=\"2C\" 9=\"\\'+c+\\'\">\\',k).1z(f.I[c]).2B(w)[0]));f.2a||h.2B(D),v.34?v.34(\"35\",s):v.36(\"38\",s,!1),1C(t,15);1l{w.U()}1A(e){19.5w(\"z\").U.1f(w)}}5r{w.1F(\"2c\",i),w.1F(\"2d\",o),r?w.1F(\"1p\",r):p.3d(\"1p\"),e(u).3e()}}5 s(t){7(!x.1b&&!X){7((O=n(v))||(a(\"2N 5q 5p 19\"),t=L),t===A&&x)6 x.1m(\"1k\"),R S.1P(x,\"1k\");7(t===L&&x)6 x.1m(\"3s 1m\"),R S.1P(x,\"V\",\"3s 1m\");7(O&&O.2A.2z!==f.1T||T){v.3B?v.3B(\"35\",s):v.5o(\"38\",s,!1);4 r,i=\"K\";1l{7(T)5l\"1k\";4 o=\"1I\"===f.1B||O.2u||e.5h(O);7(a(\"5g=\"+o),!o&&Z.20&&(Q===O.1G||!O.1G.3O)&&--C)6 a(\"49 5e 2t, 2r 2q 5d\"),R 1C(s,5c);4 u=O.1G?O.1G:O.2k;x.18=u?u.3O:Q,x.1H=O.2u?O.2u:O,o&&(f.1B=\"1I\"),x.2p=5(e){6{\"2n-8\":f.1B}[e.1u()]},u&&(x.17=37(u.2h(\"17\"))||x.17,x.1j=u.2h(\"1j\")||x.1j);4 c=(f.1B||\"\").1u(),l=/(2s|3b|2f)/.1o(c);7(l||f.1w){4 p=O.28(\"1w\")[0];7(p)x.18=p.G,x.17=37(p.2h(\"17\"))||x.17,x.1j=p.2h(\"1j\")||x.1j;16 7(l){4 m=O.28(\"2w\")[0],g=O.28(\"1G\")[0];m?x.18=m.26?m.26:m.3Y:g&&(x.18=g.26?g.26:g.3Y)}}16\"1I\"===c&&!x.1H&&x.18&&(x.1H=q(x.18));1l{M=N(x,c,f)}1A(e){i=\"23\",x.V=r=e||i}}1A(e){a(\"V 5a: \",e),i=\"V\",x.V=r=e||i}x.1b&&(a(\"2g 1b\"),i=Q),x.17&&(i=x.17>=58&&x.17<57||4Z===x.17?\"K\":\"V\"),\"K\"===i?(f.K&&f.K.1h(f.12,M,\"K\",x),S.4Y(x.18,\"K\",x),d&&e.1v.13(\"4U\",[x,f])):i&&(R 0===r&&(r=x.1j),f.V&&f.V.1h(f.12,x,i,r),S.1P(x,\"V\",r),d&&e.1v.13(\"3v\",[x,f,r])),d&&e.1v.13(\"4T\",[x,f]),d&&!--e.2F&&e.1v.13(\"4P\"),f.1t&&f.1t.1h(f.12,x,i),X=!0,f.1k&&31(j),1C(5(){f.2a?h.11(\"2o\",f.1T):h.3e(),x.1H=Q},2X)}}}4 u,c,f,d,m,h,v,x,y,b,T,j,w=p[0],S=e.4N();7(S.1m=5(e){x.1m(e)},r)Y(c=0;c<g.B;c++)u=e(g[c]),o?u.2Q(\"1g\",!1):u.3d(\"1g\");(f=e.2M(!0,{},e.1O,t)).12=f.12||f,m=\"4L\"+(21 4I).4H();4 k=w.4E,D=p.30(\"1G\");7(f.2a?(b=(h=e(f.2a,k)).1s(\"9\"))?m=b:h.1s(\"9\",m):(h=e(\\'<1U 9=\"\\'+m+\\'\" 2o=\"\\'+f.1T+\\'\" />\\',k)).4D({3N:\"4C\",3p:\"-3P\",3j:\"-3P\"}),v=h[0],x={1b:0,18:Q,1H:Q,17:0,1j:\"n/a\",4z:5(){},2p:5(){},4y:5(){},1m:5(t){4 r=\"1k\"===t?\"1k\":\"1b\";a(\"4x 2g... \"+r),3.1b=1;1l{v.1R.19.3R&&v.1R.19.3R(\"4w\")}1A(e){}h.11(\"2o\",f.1T),x.V=r,f.V&&f.V.1h(f.12,x,r,t),d&&e.1v.13(\"3v\",[x,f,r]),f.1t&&f.1t.1h(f.12,x,r)}},(d=f.3T)&&0==e.2F++&&e.1v.13(\"4v\"),d&&e.1v.13(\"4u\",[x,f]),f.2e&&!1===f.2e.1h(f.12,x,f))6 f.3T&&e.2F--,S.1P(),S;7(x.1b)6 S.1P(),S;(y=w.1n)&&(b=y.9)&&!y.1g&&(f.I=f.I||{},f.I[b]=y.G,\"1N\"===y.8&&(f.I[b+\".x\"]=w.1q,f.I[b+\".y\"]=w.1x));4 A=1,L=2,F=e(\"3Z[9=40-4j]\").11(\"2n\"),E=e(\"3Z[9=40-1K]\").11(\"2n\");E&&F&&(f.I=f.I||{},f.I[E]=F),f.4i?i():1C(i,10);4 M,O,X,C=50,q=e.4f||5(e,t){6 Z.46?((t=21 46(\"4e.5f\")).4a=\"48\",t.4b(e)):t=(21 4c).4d(e,\"2f/1I\"),t&&t.2k&&\"23\"!==t.2k.47?t:Q},45=e.4g||5(e){6 Z.4h(\"(\"+e+\")\")},N=5(t,r,a){4 n=t.2p(\"2n-8\")||\"\",i=(\"1I\"===r||!r)&&n.2b(\"1I\")>=0,o=i?t.1H:t.18;6 i&&\"23\"===o.2k.47&&e.V&&e.V(\"23\"),a&&a.43&&(o=a.43(o,r)),\"1J\"==W o&&((\"2s\"===r||!r)&&n.2b(\"2s\")>=0?o=45(o):(\"3b\"===r||!r)&&n.2b(\"41\")>=0&&e.4k(o)),o};6 S}7(!3.B)6 a(\"1a: 4l U 4m - 4n 4o 1y\"),3;4 l,f,d,p=3;\"5\"==W t?t={K:t}:\"1J\"==W t||!1===t&&1D.B>0?(t={1d:t,P:r,1B:n},\"5\"==W s&&(t.K=s)):R 0===t&&(t={}),l=t.2G||t.8||3.1s(\"2G\"),(d=(d=\"1J\"==W(f=t.1d||3.1s(\"2c\"))?e.4p(f):\"\")||Z.2A.2z||\"\")&&(d=(d.4q(/^([^#]+)/)||[])[1]),t=e.2M(!0,{1d:d,K:e.1O.K,8:l||e.1O.8,1T:/^4r/i.1o(Z.2A.2z||\"\")?\"41:48\":\"4s:4t\"},t);4 m={};7(3.13(\"z-2w-3V\",[3,t,m]),m.3U)6 a(\"1a: U 3S 25 z-2w-3V 13\"),3;7(t.2U&&!1===t.2U(3,t))6 a(\"1a: U 1b 25 2U 2t\"),3;4 h=t.2O;R 0===h&&(h=e.1O.2O);4 v,g=[],x=3.2T(t.4A,g,t.4B);7(t.P){4 y=e.2S(t.P)?t.P(x):t.P;t.I=y,v=e.1K(y,h)}7(t.2R&&!1===t.2R(x,3,t))6 a(\"1a: U 1b 25 2R 2t\"),3;7(3.13(\"z-U-3L\",[x,3,t,m]),m.3U)6 a(\"1a: U 3S 25 z-U-3L 13\"),3;4 b=e.1K(x,h);v&&(b=b?b+\"&\"+v:v),\"4F\"===t.8.4G()?(t.1d+=(t.1d.2b(\"?\")>=0?\"&\":\"?\")+b,t.P=Q):t.P=b;4 T=[];7(t.1E&&T.H(5(){p.1E()}),t.2P&&T.H(5(){p.2P(t.4J)}),!t.1B&&t.1p){4 j=t.K||5(){};T.H(5(r,a,n){4 i=1D,o=t.4K?\"3H\":\"4M\";e(t.1p)[o](r).1i(5(){j.1f(3,i)})})}16 t.K&&(e.4O(t.K)?e.3y(T,t.K):T.H(t.K));7(t.K=5(e,r,a){Y(4 n=t.12||3,i=0,o=T.B;i<o;i++)T[i].1f(n,[e,r,a||p,p])},t.V){4 w=t.V;t.V=5(e,r,a){4 n=t.12||3;w.1f(n,[e,r,a,p])}}7(t.1t){4 S=t.1t;t.1t=5(e,r){4 a=t.12||3;S.1f(a,[e,r,p])}}4 k=e(\"1c[8=29]:4Q\",3).4R(5(){6\"\"!==e(3).1z()}).B>0,D=\"2j/z-P\",A=p.11(\"2d\")===D||p.11(\"2I\")===D,L=i.2V&&i.3C;a(\"4S :\"+L);4 F,E=(k||A)&&!L;!1!==t.1U&&(t.1U||E)?t.3w?e.1Q(t.3w,5(){F=c(x)}):F=c(x):F=(k||A)&&L?5(r){Y(4 a=21 3E,n=0;n<r.B;n++)a.3u(r[n].9,r[n].G);7(t.I){4 i=u(t.I);Y(n=0;n<i.B;n++)i[n]&&a.3u(i[n][0],i[n][1])}t.P=Q;4 o=e.2M(!0,{},e.1O,t,{4V:!1,4W:!1,4X:!1,8:l||\"3z\"});t.3q&&(o.3o=5(){4 r=e.1O.3o();6 r.2g&&r.2g.36(\"51\",5(e){4 r=0,a=e.52||e.3N,n=e.53;e.54&&(r=55.56(a/n*2X)),t.3q(e,a,n,r)},!1),r}),o.P=Q;4 s=o.2e;6 o.2e=5(e,r){t.3n?r.P=t.3n:r.P=a,s&&s.1h(3,e,r)},e.3m(o)}(x):e.3m(t),p.59(\"3k\").P(\"3k\",F);Y(4 M=0;M<g.B;M++)g[M]=Q;6 3.13(\"z-U-5b\",[3,t]),3},e.J.2H=5(n,i,o,s){7((\"1J\"==W n||!1===n&&1D.B>0)&&(n={1d:n,P:i,1B:o},\"5\"==W s&&(n.K=s)),n=n||{},n.2i=n.2i&&e.2S(e.J.1V),!n.2i&&0===3.B){4 u={s:3.1M,c:3.12};6!e.3K&&u.s?(a(\"2r 2q 3J, 5i 2H\"),e(5(){e(u.s,u.c).2H(n)}),3):(a(\"5j; 5k 2v 5m 5n 1M\"+(e.3K?\"\":\" (2r 2q 3J)\")),3)}6 n.2i?(e(19).2x(\"U.z-1e\",3.1M,t).2x(\"2l.z-1e\",3.1M,r).1V(\"U.z-1e\",3.1M,n,t).1V(\"2l.z-1e\",3.1M,n,r),3):3.3c().1V(\"U.z-1e\",n,t).1V(\"2l.z-1e\",n,r)},e.J.3c=5(){6 3.2x(\"U.z-1e 2l.z-1e\")},e.J.2T=5(t,r,a){4 n=[];7(0===3.B)6 n;4 o,s=3[0],u=3.11(\"5s\"),c=t||R 0===s.2v?s.28(\"*\"):s.2v;7(c&&(c=e.5t(c)),u&&(t||/(5u|5v)\\\\//.1o(3a.39))&&(o=e(\\':1c[z=\"\\'+u+\\'\"]\\').1Q()).B&&(c=(c||[]).5x(o)),!c||!c.B)6 n;e.2S(a)&&(c=e.5y(c,a));4 l,f,d,p,m,h,v;Y(l=0,h=c.B;l<h;l++)7(m=c[l],(d=m.9)&&!m.1g)7(t&&s.1n&&\"1N\"===m.8)s.1n===m&&(n.H({9:d,G:e(m).1z(),8:m.8}),n.H({9:d+\".x\",G:s.1q},{9:d+\".y\",G:s.1x}));16 7((p=e.1S(m,!0))&&p.2m===1X)Y(r&&r.H(m),f=0,v=p.B;f<v;f++)n.H({9:d,G:p[f]});16 7(i.2V&&\"29\"===m.8){r&&r.H(m);4 g=m.3A;7(g.B)Y(f=0;f<g.B;f++)n.H({9:d,G:g[f],8:m.8});16 n.H({9:d,G:\"\",8:m.8})}16 Q!==p&&R 0!==p&&(r&&r.H(m),n.H({9:d,G:p,8:m.8,3D:m.3D}));7(!t&&s.1n){4 x=e(s.1n),y=x[0];(d=y.9)&&!y.1g&&\"1N\"===y.8&&(n.H({9:d,G:x.1z()}),n.H({9:d+\".x\",G:s.1q},{9:d+\".y\",G:s.1x}))}6 n},e.J.5C=5(t){6 e.1K(3.2T(t))},e.J.5D=5(t){4 r=[];6 3.1i(5(){4 a=3.9;7(a){4 n=e.1S(3,t);7(n&&n.2m===1X)Y(4 i=0,o=n.B;i<o;i++)r.H({9:a,G:n[i]});16 Q!==n&&R 0!==n&&r.H({9:3.9,G:n})}}),e.1K(r)},e.J.1S=5(t){Y(4 r=[],a=0,n=3.B;a<n;a++){4 i=3[a],o=e.1S(i,t);Q===o||R 0===o||o.2m===1X&&!o.B||(o.2m===1X?e.3y(r,o):r.H(o))}6 r},e.1S=5(t,r){4 a=t.9,i=t.8,o=t.22.1u();7(R 0===r&&(r=!0),r&&(!a||t.1g||\"1W\"===i||\"5G\"===i||(\"2J\"===i||\"2K\"===i)&&!t.24||(\"U\"===i||\"1N\"===i)&&t.z&&t.z.1n!==t||\"14\"===o&&-1===t.27))6 Q;7(\"14\"===o){4 s=t.27;7(s<0)6 Q;Y(4 u=[],c=t.5M,l=\"14-3t\"===i,f=l?s+1:c.B,d=l?s:0;d<f;d++){4 p=c[d];7(p.1y&&!p.1g){4 m=p.G;7(m||(m=p.2Z&&p.2Z.G&&!p.2Z.G.5P?p.2f:p.G),l)6 m;u.H(m)}}6 u}6 e(t).1z().3f(n,\"\\\\r\\\\n\")},e.J.2P=5(t){6 3.1i(5(){e(\"1c,14,1w\",3).3Q(t)})},e.J.3Q=e.J.5R=5(t){4 r=/^(?:5S|5T|5U|5V|5W|5X|5Y|5Z|60|61|2f|62|1d|63)$/i;6 3.1i(5(){4 a=3.8,n=3.22.1u();r.1o(a)||\"1w\"===n?3.G=\"\":\"2J\"===a||\"2K\"===a?3.24=!1:\"14\"===n?3.27=-1:\"29\"===a?/64/.1o(3a.39)?e(3).3H(e(3).65(!0)):e(3).1z(\"\"):t&&(!0===t&&/2C/.1o(a)||\"1J\"==W t&&e(3).3I(t))&&(3.G=\"\")})},e.J.1E=5(){6 3.1i(5(){4 t=e(3),r=3.22.1u();66(r){1r\"1c\":3.24=3.68;1r\"1w\":6 3.G=3.69,!0;1r\"1L\":1r\"6b\":4 a=t.6c(\"14\");6 a.B&&a[0].3X?\"1L\"===r?3.1y=3.2Y:t.1Y(\"1L\").1E():a.1E(),!0;1r\"14\":6 t.1Y(\"1L\").1i(5(e){7(3.1y=3.2Y,3.2Y&&!t[0].3X)6 t[0].27=e,!1}),!0;1r\"3x\":4 n=e(t.11(\"Y\")),i=t.1Y(\"1c,14,1w\");6 n[0]&&i.6h(n[0]),i.1E(),!0;1r\"z\":6(\"5\"==W 3.1W||\"44\"==W 3.1W&&!3.1W.6i)&&3.1W(),!0;6j:6 t.1Y(\"z,1c,3x,14,1w\").1E(),!0}})},e.J.6k=5(e){6 R 0===e&&(e=!0),3.1i(5(){3.1g=!e})},e.J.1y=5(t){6 R 0===t&&(t=!0),3.1i(5(){4 r=3.8;7(\"2J\"===r||\"2K\"===r)3.24=t;16 7(\"1L\"===3.22.1u()){4 a=e(3).6l(\"14\");t&&a[0]&&\"14-3t\"===a[0].8&&a.1Y(\"1L\").1y(!1),3.1y=t}})},e.J.1a.3M=!1});',0,394,\"|||this|var|function|return|if|type|name||||||||||||||||||||||||||form||length|||||value|push|extraData|fn|success|||||data|null|void|||submit|error|typeof||for|window||attr|context|trigger|select||else|status|responseText|document|ajaxSubmit|aborted|input|url|plugin|apply|disabled|call|each|statusText|timeout|try|abort|clk|test|target|clk_x|case|attr2|complete|toLowerCase|event|textarea|clk_y|selected|val|catch|dataType|setTimeout|arguments|resetForm|setAttribute|body|responseXML|xml|string|param|option|selector|image|ajaxSettings|reject|get|contentWindow|fieldValue|iframeSrc|iframe|on|reset|Array|find|jquery|opera|new|tagName|parsererror|checked|via|textContent|selectedIndex|getElementsByTagName|file|iframeTarget|indexOf|action|enctype|beforeSend|text|upload|getAttribute|delegation|multipart|documentElement|click|constructor|content|src|getResponseHeader|not|DOM|json|callback|XMLDocument|elements|pre|off|define|href|location|appendTo|hidden|hasOwnProperty|module|active|method|ajaxForm|encoding|checkbox|radio|contentDocument|extend|cannot|traditional|clearForm|prop|beforeSubmit|isFunction|formToArray|beforeSerialize|fileapi|console|100|defaultSelected|attributes|closest|clearTimeout|split|log|attachEvent|onload|addEventListener|Number|load|userAgent|navigator|script|ajaxFormUnbind|removeAttr|remove|replace|pageX|decodeURIComponent|postError|left|jqxhr|pageY|ajax|formData|xhr|top|uploadProgress|post|server|one|append|ajaxError|closeKeepAlive|label|merge|POST|files|detachEvent|formdata|required|FormData|require|offsetX|replaceWith|is|ready|isReady|validate|debug|position|innerHTML|1000px|clearFields|execCommand|vetoed|global|veto|serialize|exports|multiple|innerText|meta|csrf|javascript|offset|dataFilter|object|_|ActiveXObject|nodeName|false|requeing|async|loadXML|DOMParser|parseFromString|Microsoft|parseXML|parseJSON|eval|forceSync|token|globalEval|skipping|process|no|element|trim|match|https|about|blank|ajaxSend|ajaxStart|Stop|aborting|setRequestHeader|getAllResponseHeaders|semantic|filtering|absolute|css|ownerDocument|GET|toUpperCase|getTime|Date|includeHidden|replaceTarget|jqFormIO|html|Deferred|isArray|ajaxStop|enabled|filter|fileAPI|ajaxComplete|ajaxSuccess|contentType|processData|cache|resolve|304||progress|loaded|total|lengthComputable|Math|ceil|300|200|removeData|caught|notify|250|available|onLoad|XMLDOM|isXml|isXMLDoc|queuing|terminating|zero|throw|found|by|removeEventListener|response|access|finally|id|makeArray|Edge|Trident|createElement|concat|map|isPlainObject|in|skipEncodingOverride|formSerialize|fieldSerialize|Server|uninitialized|button|state|readyState|join|prototype|offsetTop|options|offsetLeft|offsetY|specified|preventDefault|clearInputs|color|date|datetime|email|month|number|password|range|search|tel|time|week|MSIE|clone|switch|isDefaultPrevented|defaultChecked|defaultValue|strict|optgroup|parents|use|jQuery|undefined|amd|unshift|nodeType|default|enable|parent\".split(\"|\"),0,{}))},,,,,,,function(e,t,n){\"use strict\";function o(e){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}n.r(t);var r=function(e,t,n){var r,a,i,s,c,l,u,d,f=0,p=!1,b=!1,h=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");function m(t){var n=r,o=a;return r=a=void 0,f=t,s=e.apply(o,n)}function g(e,t){return setTimeout(e,t)}function v(e){return f=e,c=g(k,t),p?m(e):s}function y(e){var n=e-l;return void 0===l||n>=t||n<0||b&&e-f>=i}function k(){var e=Date.now();if(y(e))return w(e);c=g(k,function(e){var n=e-f,o=t-(e-l);return b?Math.min(o,i-n):o}(e))}function w(e){return c=void 0,h&&r?m(e):(r=a=void 0,s)}function x(){var e=Date.now(),n=y(e);if(r=arguments,a=this,l=e,n){if(void 0===c)return v(l);if(b)return c=g(k,t),m(l)}return void 0===c&&(c=g(k,t)),s}return t=+t||0,d=o(u=n),null==u||\"object\"!==d&&\"function\"!==d||(p=!!n.leading,i=(b=\"maxWait\"in n)?Math.max(+n.maxWait||0,t):t,h=\"trailing\"in n?!!n.trailing:h),x.cancel=function(){void 0!==c&&clearTimeout(c),f=0,r=l=a=c=void 0},x.flush=function(){return void 0===c?s:w(Date.now())},x.pending=function(){return void 0!==c},x};function a(e){return(a=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function i(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var s=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),t.helpers=this,this.dcat=t,this.debounce=r}var t,n,o;return t=e,(n=[{key:\"len\",value:function(e){if(\"object\"!==a(e))return 0;var t,n=0;for(t in e)n+=1;return n}},{key:\"isset\",value:function(e,t){var n=null!=e;return void 0===t?n:n&&void 0!==e[t]}},{key:\"empty\",value:function(e,t){return!(this.isset(e,t)&&e[t])}},{key:\"get\",value:function(e,t,n){if(this.len(e)<1)return null;t=String(t).split(\".\");for(var o=0;o<t.length;o++){if(!this.isset(e,t[o]))return null;e=e[t[o]]}return e}},{key:\"has\",value:function(e,t){if(this.len(e)<1)return def;t=String(t).split(\".\");for(var n=0;n<t.length;n++){if(!this.isset(e,t[n]))return!1;e=e[t[n]]}return!0}},{key:\"inObject\",value:function(e,t,n){if(this.len(e)<1)return!1;for(var o in e)if(n){if(t===e[o])return!0}else if(t==e[o])return!0;return!1}},{key:\"equal\",value:function(e,t,n){if(!e||!t)return!1;var o;if(this.len(e)!==this.len(t))return!1;for(o in e){if(!this.isset(t,o))return!1;if(null===e[o]&&null===t[o])return!0;if(\"object\"!==a(e[o])||\"object\"!==a(t[o])){if(n){if(e[o]!==t[o])return!1}else if(e[o]!=t[o])return!1}else if(!this.equal(e[o],t[o],n))return!1}return!0}},{key:\"replace\",value:function(e,t,n){return e?e.replace(new RegExp(t,\"g\"),n):e}},{key:\"random\",value:function(e){return Math.random().toString(12).substr(2,e||16)}},{key:\"previewImage\",value:function(e,t,n){var o=this.dcat,r=new Image,a=this.isset(window.top)?top:window,i=Math.ceil(.6*a.screen.width),s=Math.ceil(.8*a.screen.height);r.style.display=\"none\",r.style.height=\"auto\",r.style.width=t||\"100%\",r.src=e,document.body.appendChild(r),o.loading(),r.onload=function(){o.loading(!1);var t=this.width,a=this.height,c=t>i?i:t,l=Math.ceil(c*(a/t));l=l>s?s:l,(n=n||e.split(\"/\").pop()).length>50&&(n=n.substr(0,50)+\"...\"),layer.open({type:1,shade:.2,title:!1,maxmin:!1,shadeClose:!0,closeBtn:2,content:$(r),area:[c+\"px\",l+\"px\"],skin:\"layui-layer-nobg\",end:function(){document.body.removeChild(r)}})},r.onerror=function(){o.loading(!1),o.error(o.lang.trans(\"no_preview\"))}}},{key:\"asyncRender\",value:function(e,t,n){var o=this.dcat;$.ajax(e).then((function(e){t(o.assets.resolveHtml(e,o.triggerReady).render())}),(function(e,t,r){if(n&&!1===n(e,t,r))return!1;o.handleAjaxError(e,t,r)}))}},{key:\"loadFields\",value:function(e,t){var n=[],o=[];t.values?\"string\"==typeof(o=t.values)&&(o=[o]):$(e).find(\"option:selected\").each((function(){(\"0\"===String(this.value)||this.value)&&o.push(this.value)})),o.length&&(t.fields.forEach((function(r,a){var i=$(e).closest(t.group).find(\".\"+t.fields[a]);o.length&&n.push(function(e,n){Dcat.loading(),$.ajax(e).then((function(e){Dcat.loading(!1),n.find(\"option\").remove(),$.map(e,(function(e){n.append(new Option(e[t.textField],e[t.idField],!1,!1))})),$(n).val(String(n.data(\"value\")).split(\",\")).trigger(\"change\")}))}(t.urls[a]+(t.urls[a].match(/\\?/)?\"&\":\"?\")+\"q=\"+o.join(\",\"),i))})),$.when(n).then((function(){})))}}])&&i(t.prototype,n),o&&i(t,o),e}();function c(e){return(c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function l(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var u=function(){function e(t,n){for(var o in function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.dcat=t,this.lang=n,n)t.helpers.isset(this,o)||(this[o]=n[o])}var t,n,o;return t=e,(n=[{key:\"trans\",value:function(e,t){var n=this.dcat.helpers;if(\"object\"!==c(this.lang))return e;var o,r=n.get(this.lang,e);if(!n.isset(r))return e;if(!t)return r;for(o in t)r=n.replace(r,\":\"+o,t[o]);return r}}])&&l(t.prototype,n),o&&l(t,o),e}();function d(e){return(d=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function f(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var p=jQuery,b=p(document),h=!1,m=[],g={},v={},y={pjax_container_selector:\"#pjax-container\"},k=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.token=null,this.lang=null,new s(this),this.withConfig(t)}var t,n,o;return t=e,(n=[{key:\"booting\",value:function(e,t){return t=void 0===t||t,m.push([e,t]),this}},{key:\"bootingEveryRequest\",value:function(e){return this.booting(e,!1)}},{key:\"boot\",value:function(){var e=this,t=m;m=[],t.forEach((function(t){t[0](e),!1===t[1]&&m.push(t)})),this.onPjaxLoaded(this.boot.bind(this))}},{key:\"ready\",value:function(e,t){var n=this;if(!t||t===window)return h?n.onPjaxLoaded(e):p(e);t.Dcat.ready((function o(r){t.$(n.config.pjax_container_selector).one(\"pjax:loaded\",o),e(r)}))}},{key:\"init\",value:function(e,t,n){var o=this,r=function(){v[e]&&v[e].disconnect()};b.one(\"pjax:complete\",r),r(),setTimeout((function(){v[e]=p.initialize(e,(function(){var e=p(this),n=e.attr(\"id\");e.attr(\"initialized\")||(e.attr(\"initialized\",\"1\"),n||(n=\"_\"+o.helpers.random(),e.attr(\"id\",n)),t.call(this,e,n))}),n)}))}},{key:\"offInit\",value:function(e){v[e]&&v[e].disconnect(),p(document).trigger(\"init:off\",e,v[e]),v[e]=null}},{key:\"triggerReady\",value:function(){h&&p((function(){b.trigger(\"pjax:loaded\")}))}},{key:\"pjaxResponded\",value:function(e){return h=!1!==e,b.trigger(\"pjax:responded\"),this}},{key:\"reload\",value:function(e){var t=this.config.pjax_container_selector,n={container:t};if(p(t).length)return e&&(n.url=e),void p.pjax.reload(n);e?location.href=e:location.reload()}},{key:\"onPjaxLoaded\",value:function(e,t){return(t=void 0===t||t)?b.one(\"pjax:loaded\",e):b.on(\"pjax:loaded\",e)}},{key:\"onPjaxComplete\",value:function(e,t){return(t=void 0===t||t)?b.one(\"pjax:complete\",e):b.on(\"pjax:complete\",e)}},{key:\"withConfig\",value:function(e){return this.config=p.extend(y,e),this.withLang(e.lang),this.withToken(e.token),delete e.lang,delete e.token,this}},{key:\"withToken\",value:function(e){return e&&(this.token=e),this}},{key:\"withLang\",value:function(e){return e&&\"object\"===d(e)&&(this.lang=this.Translator(e)),this}},{key:\"Translator\",value:function(e){return new u(this,e)}},{key:\"addAction\",value:function(e,t){\"function\"==typeof t&&(g[e]=t)}},{key:\"actions\",value:function(){return g}}])&&f(t.prototype,n),o&&f(t,o),e}(),w=n(2),x=n.n(w),j=n(3);function C(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var S=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e);t.success=this.success,t.error=this.error,t.info=this.info,t.warning=this.warning}var t,n,o;return t=e,(n=[{key:\"success\",value:function(e,t,n){toastr.success(e,t,n)}},{key:\"error\",value:function(e,t,n){toastr.error(e,t,n)}},{key:\"info\",value:function(e,t,n){toastr.info(e,t,n)}},{key:\"warning\",value:function(e,t,n){toastr.warning(e,t,n)}}])&&C(t.prototype,n),o&&C(t,o),e}(),T=n(0),P=n.n(T);function E(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var O=window,B=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e);P.a.success=this.success.bind(this),P.a.error=this.error.bind(this),P.a.info=this.info.bind(this),P.a.warning=this.warning.bind(this),P.a.confirm=this.confirm.bind(this),O.swal=O.Swal=this.swal=t.swal=P.a,t.confirm=P.a.confirm}var t,n,o;return t=e,(n=[{key:\"success\",value:function(e,t,n){return this.fire(e,t,\"success\",n)}},{key:\"error\",value:function(e,t,n){return this.fire(e,t,\"error\",n)}},{key:\"info\",value:function(e,t,n){return this.fire(e,t,\"info\",n)}},{key:\"warning\",value:function(e,t,n){return this.fire(e,t,\"warning\",n)}},{key:\"confirm\",value:function(e,t,n,o,r){var a=Dcat.lang;r=$.extend({showCancelButton:!0,showLoaderOnConfirm:!0,confirmButtonText:a.confirm,cancelButtonText:a.cancel,confirmButtonClass:\"btn btn-primary\",cancelButtonClass:\"btn btn-white ml-1\",buttonsStyling:!1},r),this.fire(e,t,\"question\",r).then((function(e){if(e.value)return n&&n();o&&o()}))}},{key:\"fire\",value:function(e,t,n,o){return o=$.extend({title:e,type:n,html:t},o),this.swal.fire(o)}}])&&E(t.prototype,n),o&&E(t,o),e}();function D(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var z=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e);this.options=$.extend({checkboxSelector:\"\",selectAllSelector:\"\",background:\"rgba(255, 255,213,0.4)\",clickRow:!1,container:\"table\"},t),this.init()}var t,n,o;return t=e,(n=[{key:\"init\",value:function(){var e=this.options,t=e.checkboxSelector,n=$(document),o=e.selectAllSelector;$(o).on(\"change\",(function(){var n=this.checked;$.each($(this).parents(e.container).find(t),(function(e,t){var o=$(t);o.attr(\"disabled\")||o.prop(\"checked\",n).trigger(\"change\")}))})),e.clickRow&&(n.off(\"click\",t).on(\"click\",t,(function(e){void 0!==e.cancelBubble&&(e.cancelBubble=!0),void 0!==e.stopPropagation&&e.stopPropagation()})),n.off(\"click\",e.container+\" tr\").on(\"click\",e.container+\" tr\",(function(){$(this).find(t).click()}))),n.off(\"change\",t).on(\"change\",t,(function(){var n=$(this).closest(\"tr\");this.checked?(n.css(\"background-color\",e.background),$(t+\":checked\").length===$(t).length&&$(o).prop(\"checked\",!0)):n.css(\"background-color\",\"\")}))}},{key:\"getSelectedKeys\",value:function(){var e=[];return $(this.options.checkboxSelector+\":checked\").each((function(){var t=$(this).data(\"id\");-1===e.indexOf(t)&&e.push(t)})),e}},{key:\"getSelectedRows\",value:function(){var e=[];return $(this.options.checkboxSelector+\":checked\").each((function(){var t,n,o=$(this).data(\"id\");for(t in e)e[t].id===o&&(n=!0);n||e.push({id:o,label:$(this).data(\"label\")})})),e}}])&&D(t.prototype,n),o&&D(t,o),e}();function A(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var L=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),t.grid=this,this.selectors={}}var t,n,o;return t=e,(n=[{key:\"addSelector\",value:function(e,t){this.selectors[t||\"_def_\"]=e}},{key:\"selected\",value:function(e){return this.selectors[e||\"_def_\"].getSelectedKeys()}},{key:\"selectedRows\",value:function(e){return this.selectors[e||\"_def_\"].getSelectedRows()}}])&&A(t.prototype,n),o&&A(t,o),e}();n(6);function I(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var q={before:[],success:[],error:[]},R=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e);this.options=$.extend({form:null,validate:!1,confirm:{title:null,content:null},validationErrorToastr:!1,errorClass:\"has-error\",errorContainerSelector:\".with-errors\",groupSelector:\".form-group,.form-label-group,.form-field\",tabSelector:\".tab-pane\",errorTemplate:'<label class=\"control-label\" for=\"inputError\"><i class=\"feather icon-x-circle\"></i> {message}</label><br/>',redirect:!0,autoRemoveError:!0,before:function(){},after:function(){},success:function(){},error:function(){}},t),this.originalValues={},this.$form=$(this.options.form).first(),this._errColumns={},this.init()}var t,n,o;return t=e,(n=[{key:\"init\",value:function(){var e=this,t=e.options.confirm;if(!t.title)return e.submit();Dcat.confirm(t.title,t.content,(function(){e.submit()}))}},{key:\"submit\",value:function(){var e=this,t=e.$form,n=e.options,o=t.find('[type=\"submit\"],.submit');e.removeErrors(),t.ajaxSubmit({data:{_token:Dcat.token},beforeSubmit:function(r,a,i){return!1!==n.before(r,a,i,e)&&!1!==F(q.before,r,a,i,e)&&!(n.validate&&(t.validator(\"validate\"),t.find(\".\"+n.errorClass).length>0))&&void o.buttonLoading()},success:function(t){setTimeout((function(){o.buttonLoading(!1)}),700),!1!==n.after(!0,t,e)&&!1!==n.success(t,e)&&!1!==F(q.success,t,e)&&(!1!==t.redirect&&n.redirect||t.data&&t.data.then&&(delete t.data.then,delete t.data.then,delete t.data.then),Dcat.handleJsonResponse(t))},error:function(r){if(o.buttonLoading(!1),!1!==n.after(!1,r,e)&&!1!==n.error(r,e)&&!1!==F(q.error,r,e))try{var a,i=JSON.parse(r.responseText);if(422!=r.status||!i||!Dcat.helpers.isset(i,\"errors\"))return Dcat.error(r.status+\" \"+r.statusText);for(a in i=i.errors,i)e._errColumns[a]=e.showError(t,a,i[a])}catch(e){return Dcat.error(r.status+\" \"+r.statusText)}}})}},{key:\"showError\",value:function(e,t,n){var o=this,r=o.queryFieldByName(e,t),a=r.closest(o.options.groupSelector);if(H(o,r).removeClass(\"d-none\"),o.originalValues[t]=o.getFieldValue(r),r)return function(e){for(var t in a.addClass(o.options.errorClass),\"string\"==typeof e&&(e=[e]),e)a.find(o.options.errorContainerSelector).first().append(o.options.errorTemplate.replace(\"{message}\",e[t]));o.options.validationErrorToastr&&Dcat.error(e.join(\"<br/>\"))}(n),o.options.autoRemoveError&&function(e,t,n){var o=function(){e.removeError(t,n)};t.one(\"change\",o),t.off(\"blur\",o).on(\"blur\",(function(){e.isValueChanged(t,n)&&o()})),function r(){setTimeout((function(){if(t.length)return e.isValueChanged(t,n)?o():void r()}),500)}()}(o,r,t),r;Dcat.helpers.len(n)&&n.length&&Dcat.error(n.join(\"  \\n  \"))}},{key:\"getFieldValue\",value:function(e){var t,n=[],o=e.attr(\"type\"),r=\"checkbox\"===o||\"radio\"===o;for(t=0;t<e.length;t++)r?n.push($(e[t]).prop(\"checked\")):n.push($(e[t]).val());return n}},{key:\"isValueChanged\",value:function(e,t){return!Dcat.helpers.equal(this.originalValues[t],this.getFieldValue(e))}},{key:\"queryFieldByName\",value:function(e,t){if(-1!==t.indexOf(\".\")){var n,o=(t=t.split(\".\")).shift(),r=\"\";for(n in t)r+=\"[\"+t[n]+\"]\";t=o+r}var a=e.find('[name=\"'+t+'\"]');return a.length||(a=e.find('[name=\"'+t+'[]\"]')),a.length||(a=e.find('[name=\"'+t.replace(/start$/,\"\")+'\"]')),a.length||(a=e.find('[name=\"'+t.replace(/end$/,\"\")+'\"]')),a.length||(a=e.find('[name=\"'+t.replace(/start\\]$/,\"]\")+'\"]')),a.length||(a=e.find('[name=\"'+t.replace(/end\\]$/,\"]\")+'\"]')),a}},{key:\"removeError\",value:function(e,t){var n,o=this.options,r=e.parents(o.groupSelector),a=this.errorClass;r.removeClass(a),r.find(o.errorContainerSelector).html(\"\"),M(this,e).find(\".\"+a).length||(n=H(this,e)).hasClass(\"d-none\")||n.addClass(\"d-none\"),delete this._errColumns[t]}},{key:\"removeErrors\",value:function(){var e,t,n=this;for(e in n.$form.find(n.options.errorContainerSelector).each((function(e,t){$(t).parents(n.options.groupSelector).removeClass(n.options.errorClass),$(t).html(\"\")})),n._errColumns)(t=H(n._errColumns[e])).hasClass(\"d-none\")||t.addClass(\"d-none\");n._errColumns={}}}])&&I(t.prototype,n),o&&I(t,o),e}();function M(e,t){var n=function(e,t){return t.parents(e.options.tabSelector).attr(\"id\")}(e,t);return n?$('a[href=\"#'.concat(n,'\"]')):$(\"<none></none>\")}function H(e,t){return M(e,t).find(\".has-tab-error\")}function F(e){var t,n,o,r=arguments,a=[];for(n in delete r[0],r=r||[])a.push(r[n]);for(t in e)if(!1===(o=e[t].apply(e[t],a)))return o}R.submitting=function(e){return\"function\"==typeof e&&q.before.push(e),this},R.submitted=function(e,t){return\"function\"==typeof e&&q.success.push(e),\"function\"==typeof t&&q.error.push(t),this},$.fn.form=function(e){var t=$(this);e=$.extend(e,{form:t}),t.on(\"submit\",(function(){return!1})),t.find('[type=\"submit\"],.submit').click((function(t){return Dcat.Form(e),!1}))};var N=R;function G(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var U=window;top&&U.layer&&(U=top);var J=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e);var o=function(){};this.options=$.extend({title:\"\",defaultUrl:\"\",buttonSelector:\"\",area:[],lang:{submit:t.lang.submit||\"Submit\",reset:t.lang.reset||\"Reset\"},query:\"\",forceRefresh:!1,resetButton:!0,saved:o,success:o,error:o},n),this.$form=null,this.$target=null,this._dialog=U.layer,this._counter=1,this._idx={},this._dialogs={},this.rendering=0,this.submitting=0,this.init(n)}var t,n,o;return t=e,(n=[{key:\"init\",value:function(e){var t=this,n=e.defaultUrl,o=e.buttonSelector;o&&$(o).off(\"click\").click((function(){t.$target=$(this);var o,r=t.$target.attr(\"counter\");r||(r=t._counter,t.$target.attr(\"counter\",r),t._counter++),-1===(o=t.$target.data(\"url\")||n).indexOf(\"?\")?o+=\"?\"+e.query+\"=1\":-1===o.indexOf(e.query)&&(o+=\"&\"+e.query+\"=1\"),t._build(o,r)})),o||setTimeout((function(){t._build(n,t._counter)}),400)}},{key:\"_build\",value:function(e,t){var n=this,o=n.$target;if(e&&!n.rendering)if(n._dialogs[t]){n._dialogs[t].show();try{n._dialog.restore(n._idx[t])}catch(e){}}else Dcat.onPjaxComplete((function(){n._destroy(t)})),n.rendering=1,o&&o.buttonLoading(),Dcat.NP.start(),$.ajax({url:e,success:function(e){n.rendering=0,Dcat.NP.done(),o&&(o.buttonLoading(!1),setTimeout((function(){o.find(\".waves-ripple\").remove()}),50)),n._popup(e,t)}})}},{key:\"_popup\",value:function(e,t){var n=this,o=n.options;e=Dcat.assets.resolveHtml(e).render();var r,a=[o.lang.submit],i={type:1,area:(r=o.area,U.screen.width<=800?[\"100%\",\"100%\"]:r),content:e,title:o.title,yes:function(){n.submit()},cancel:function(){if(!o.forceRefresh)return n._dialogs[t].hide(),!1;n._dialogs[t]=n._idx[t]=null}};o.resetButton&&(a.push(o.lang.reset),i.btn2=function(){return n.$form.trigger(\"reset\"),!1}),i.btn=a,n._idx[t]=n._dialog.open(i),n._dialogs[t]=U.$(\"#layui-layer\"+n._idx[t]),n.$form=n._dialogs[t].find(\"form\").first()}},{key:\"_destroy\",value:function(e){var t=this._dialogs;this._dialog.close(this._idx[e]),t[e]&&t[e].remove(),t[e]=null}},{key:\"submit\",value:function(){var e=this,t=e.options,n=e.$target.attr(\"counter\"),o=e._dialogs[n].find(\".layui-layer-btn0\");if(!e.submitting)return Dcat.Form({form:e.$form,redirect:!1,confirm:Dcat.FormConfirm,before:function(){if(e.$form.validator(\"validate\"),e.$form.find(\".has-error\").length>0)return!1;e.submitting=1,o.buttonLoading()},after:function(r,a){if(o.buttonLoading(!1),e.submitting=0,!1===t.saved(r,a))return!1;if(!r)return t.error(r,a);if(a.status){var i=t.success(r,a);return e._destroy(n),i}return t.error(r,a)}}),!1}}])&&G(t.prototype,n),o&&G(t,o),e}();function K(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var V=['<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mx-auto block\" style=\"width:{width};{svg_style}\" viewBox=\"0 0 120 30\" fill=\"{color}\"><circle cx=\"15\" cy=\"15\" r=\"15\"><animate attributeName=\"r\" from=\"15\" to=\"15\" begin=\"0s\" dur=\"0.8s\" values=\"15;9;15\" calcMode=\"linear\" repeatCount=\"indefinite\"/><animate attributeName=\"fill-opacity\" from=\"1\" to=\"1\" begin=\"0s\" dur=\"0.8s\" values=\"1;.5;1\" calcMode=\"linear\" repeatCount=\"indefinite\" /></circle><circle cx=\"60\" cy=\"15\" r=\"9\" fill-opacity=\"0.3\"><animate attributeName=\"r\" from=\"9\" to=\"9\" begin=\"0s\" dur=\"0.8s\" values=\"9;15;9\" calcMode=\"linear\" repeatCount=\"indefinite\" /><animate attributeName=\"fill-opacity\" from=\"0.5\" to=\"0.5\" begin=\"0s\" dur=\"0.8s\" values=\".5;1;.5\" calcMode=\"linear\" repeatCount=\"indefinite\" /></circle><circle cx=\"105\" cy=\"15\" r=\"15\"><animate attributeName=\"r\" from=\"15\" to=\"15\" begin=\"0s\" dur=\"0.8s\" values=\"15;9;15\" calcMode=\"linear\" repeatCount=\"indefinite\" /><animate attributeName=\"fill-opacity\" from=\"1\" to=\"1\" begin=\"0s\" dur=\"0.8s\" values=\"1;.5;1\" calcMode=\"linear\" repeatCount=\"indefinite\" /></circle></svg>'],_=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),n=$.extend({container:t.config.pjax_container_selector,zIndex:100,width:\"52px\",color:t.color.dark60,background:\"#fff\",style:\"\",svg:V[0]},n);this.$container=$(n.container),$('<div class=\"dcat-loading d-flex items-center align-items-center justify-content-center pin\" style=\"{style}\">{svg}</div>'.replace(\"{svg}\",n.svg).replace(\"{color}\",n.color).replace(\"{color}\",n.color).replace(\"{width}\",n.width).replace(\"{style}\",\"\".concat(\"position:absolute;\",\"background:\").concat(n.background,\";z-index:\").concat(n.zIndex,\";\").concat(n.style))).appendTo(this.$container)}var t,n,o;return t=e,(n=[{key:\"destroy\",value:function(){this.$container.find(\".dcat-loading\").remove()}}])&&K(t.prototype,n),o&&K(t,o),e}();function Q(){$(\".dcat-loading\").remove()}var W=function(e){e.loading=function(e){if(!1===e)return setTimeout(Q,70);e=$.extend({zIndex:999991014,width:\"58px\",shade:\"rgba(255, 255, 255, 0.1)\",background:\"transparent\",top:200,svg:V[0]},e);var t=$(window),n=$('<div class=\"dcat-loading\" style=\"z-index:'+e.zIndex+';width:300px;position:fixed\"></div>'),o=$('<div class=\"layui-layer-shade dcat-loading\" style=\"z-index:'+(e.zIndex-2)+\"; background-color:\"+e.shade+'\"></div>');function r(){n.css({left:(t.width()-300)/2,top:(t.height()-e.top)/2})}n.appendTo(\"body\"),e.shade&&o.appendTo(\"body\"),t.on(\"resize\",r),r(),n.loading(e)},$.fn.loading=function(t){return!1===t?$(this).find(\".dcat-loading\").remove():((t=t||{}).container=$(this),new _(e,t))},$.fn.buttonLoading=function(t){var n,o=$(this),r=o.attr(\"data-loading\");if(!1===t)return r?(o.find(\".waves-ripple\").remove(),o.removeClass(\"disabled btn-loading waves-effect\").removeAttr(\"disabled\").removeAttr(\"data-loading\").html(o.find(\".\"+r).html())):o;if(r)return o;n=o.html(),r=\"ld-\"+e.helpers.random();var a='<span class=\"spinner-grow spinner-grow-sm\" role=\"status\" aria-hidden=\"true\"></span>',i=[\"btn\",\"layui-layer-btn0\",\"layui-layer-btn1\"];for(var s in i)o.hasClass(i[s])&&(a=V[0].replace(\"{color}\",\"currentColor\").replace(\"{width}\",\"50px;height:11px;\"));return o.addClass(\"disabled btn-loading\").attr(\"disabled\",!0).attr(\"data-loading\",r).html('\\n<div class=\"'.concat(r,'\" style=\"display:none\">').concat(n,\"</div>\\n\").concat(a,\"\\n\"))}};function X(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var Y=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e);this.dcat=t,t.assets={load:this.load.bind(this),resolveHtml:this.resolveHtml.bind(this)}}var t,n,o;return t=e,(n=[{key:\"load\",value:function(e,t,n){var o=this;if(e.length<1)return!t||t(n),void o.fire();seajs.use([e.shift()],(function(){o.load(e,t,n)}))}},{key:\"filterScripts\",value:function(e){var t,n={};return\"string\"==typeof e&&(e=$(e)),n.scripts=this.findAll(e,\"script[src]\").remove(),n.contents=e.not(n.scripts),n.contents.render=this.toString,n.js=(t=[],n.scripts.each((function(e,n){n.src&&t.push(n.src)})),t),n}},{key:\"resolveHtml\",value:function(e,t){var n=this.filterScripts(e);return this.load(n.js,(function(){!t||t(n.contents)})),n.contents}},{key:\"findAll\",value:function(e,t){return\"string\"==typeof e&&(e=$(e)),e.filter(t).add(e.find(t))}},{key:\"fire\",value:function(){this.dcat.pjaxResponded(),setTimeout(this.dcat.triggerReady,1)}},{key:\"toString\",value:function(e){var t,n=\"\";return this.each((function(e,o){(t=o.outerHTML)&&(n+=t)})),n}}])&&X(t.prototype,n),o&&X(t,o),e}();function Z(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var ee=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e);var o=this;o.options=$.extend({target:null,class:null,autoDestory:!0},n),o.id=\"dcat-slider-\"+t.helpers.random(),o.$target=$(o.options.target),o.$container=$('<div id=\"{id}\" class=\"slider-panel {class}\">\\n    <div class=\"slider-content position-fixed p-1 ps ps--active-y\"></div>\\n</div>'.replace(\"{id}\",o.id).replace(\"{class}\",o.options.class||\"\")),o.$container.appendTo(\"body\"),o.$container.find(\".slider-content\").append(o.$target),new PerfectScrollbar(\"#\".concat(o.id,\" .slider-content\")),o.options.autoDestory&&t.onPjaxComplete((function(){o.destroy()}))}var t,n,o;return t=e,(n=[{key:\"open\",value:function(){this.$container.addClass(\"open\")}},{key:\"close\",value:function(){this.$container.removeClass(\"open\")}},{key:\"toggle\",value:function(){this.$container.toggleClass(\"open\")}},{key:\"destroy\",value:function(){this.$container.remove()}}])&&Z(t.prototype,n),o&&Z(t,o),e}();function te(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var ne=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e);var n=t.config.colors||{},o=$.extend(n),r=this;o.get=function(e){return n[e]||e},o.lighten=function(e,t){return r.lighten(o.get(e),t)},o.darken=function(e,t){return o.lighten(e,-t)},o.alpha=function(e,t){var n=o.toRBG(e);return\"rgba(\".concat(n[0],\", \").concat(n[1],\", \").concat(n[2],\", \").concat(t,\")\")},o.toRBG=function(e,t){return 0===e.indexOf(\"#\")&&(e=e.slice(1)),r.toRBG(o.get(e),t)},o.all=function(){return n},t.color=o}var t,n,o;return t=e,(n=[{key:\"lighten\",value:function(e,t){var n=!1;0===e.indexOf(\"#\")&&(e=e.slice(1),n=!0);var o=this.toRBG(e,t);return(n?\"#\":\"\")+(o[2]|o[1]<<8|o[0]<<16).toString(16)}},{key:\"toRBG\",value:function(e,t){var n=function(e){return e>255?255:e<0?0:e};t=t||0;var o=parseInt(e,16);return[n((o>>16)+t),n((o>>8&255)+t),n((255&o)+t)]}}])&&te(t.prototype,n),o&&te(t,o),e}();function oe(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var re=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),t.validator=this}var t,n,o;return t=e,(n=[{key:\"extend\",value:function(e,t,n){var o=$.fn.validator.Constructor.DEFAULTS;o.custom[e]=t,o.errors[e]=n||null}}])&&oe(t.prototype,n),o&&oe(t,o),e}();function ae(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var ie=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.options={sidebar_dark:t.config.sidebar_dark,dark_mode:t.config.dark_mode,class:{dark:\"dark-mode\",sidebarLight:t.config.sidebar_light_style||\"sidebar-light-primary\",sidebarDark:\"sidebar-dark-white\"}},t.darkMode=this}var t,n,o;return t=e,(n=[{key:\"initSwitcher\",value:function(e){var t=localStorage||{setItem:function(){},getItem:function(){}},n=this,o=\"dcat-admin-theme-mode\",r=t.getItem(o),a=\".dark-mode-switcher i\";function i(e){if(e)return $(a).addClass(\"icon-sun\").removeClass(\"icon-moon\"),void n.display(!0);n.display(!1),$(a).removeClass(\"icon-sun\").addClass(\"icon-moon\")}\"dark\"===r?i(!0):\"def\"===r&&i(!1),$(document).off(\"click\",e).on(\"click\",e,(function(){$(a).toggleClass(\"icon-sun icon-moon\"),$(a).hasClass(\"icon-moon\")?(i(!1),t.setItem(o,\"def\")):(t.setItem(o,\"dark\"),i(!0))}))}},{key:\"toggle\",value:function(){$(\"body\").hasClass(this.options.class.dark)?this.display(!1):this.display(!0)}},{key:\"display\",value:function(e){var t=$(document),n=$(\"body\"),o=$(\".main-menu .main-sidebar\"),r=this.options,a=r.class;if(e)return n.addClass(a.dark),o.removeClass(a.sidebarLight).addClass(a.sidebarDark),void t.trigger(\"dark-mode.shown\");n.removeClass(a.dark),r.sidebar_dark||o.addClass(a.sidebarLight).removeClass(a.sidebarDark),t.trigger(\"dark-mode.hide\")}}])&&ae(t.prototype,n),o&&ae(t,o),e}();function se(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var ce=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.init(),this.initHorizontal()}var t,n,o;return t=e,(n=[{key:\"init\",value:function(){if($(\".main-sidebar .sidebar\").length){new PerfectScrollbar(\".main-sidebar .sidebar\");var e=$(\".main-menu-content\"),t=e.find(\"li\");e.find(\"li.has-treeview\"),t.find(\"a\").click((function(){var e=$(this).attr(\"href\");e&&\"#\"!==e&&(t.find(\".nav-link\").removeClass(\"active\"),$(this).addClass(\"active\"))}))}}},{key:\"initHorizontal\",value:function(){var e=\".horizontal-menu .main-menu-content li.nav-item .nav-link\";$(\".horizontal-menu .main-menu-content li.nav-item\").on(\"mouseover\",(function(){$(this).addClass(\"open\")})).on(\"mouseout\",(function(){$(this).removeClass(\"open\")})),$(e).on(\"click\",(function(){var t=$(this);$(e).removeClass(\"active\"),t.addClass(\"active\"),t.parents(\".dropdown\").find(\".nav-link\").eq(0).addClass(\"active\"),t.parents(\".dropdown-submenu\").find(\".nav-link\").eq(0).addClass(\"active\")}));var t=$(\".horizontal-menu .main-horizontal-sidebar\"),n=0,o=0,r=function(){if($(\".horizontal-menu\").length){n||(n=t.height()),o||(o=t.offset().top+15);var e=t.height(),r=e-n,a=$(\".horizontal-menu.navbar-fixed-top .content-wrapper\");if(e<=n)return a.css({\"padding-top\":o+\"px\"});a.css({\"padding-top\":o+r+\"px\"})}};window.onresize=r,r()}}])&&se(t.prototype,n),o&&se(t,o),e}();function le(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var ue=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.boot(t)}var t,n,o;return t=e,(n=[{key:\"boot\",value:function(e){$(window).scroll((function(){$(this).scrollTop()>400?$(\".scroll-top\").fadeIn():$(\".scroll-top\").fadeOut()})),$(\".scroll-top\").click((function(){$(\"html, body\").animate({scrollTop:0},1e3)}))}}])&&le(t.prototype,n),o&&le(t,o),e}();function de(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}var fe=$(document),pe=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.boot(t)}var t,n,o;return t=e,(n=[{key:\"boot\",value:function(e){var t=e.config.pjax_container_selector;$.pjax.defaults.timeout=5e3,$.pjax.defaults.maxCacheLength=0,$('a:not(a[target=\"_blank\"])').click((function(e){$.pjax.click(e,t,{fragment:\"body\"})})),fe.on(\"pjax:timeout\",(function(e){e.preventDefault()})),fe.off(\"submit\",\"form[pjax-container]\").on(\"submit\",\"form[pjax-container]\",(function(e){$.pjax.submit(e,t)})),fe.on(\"pjax:popstate\",(function(){fe.one(\"pjax:end\",(function(e){$(e.target).find(\"script[data-exec-on-popstate]\").each((function(){$.globalEval(this.text||this.textContent||this.innerHTML||\"\")}))}))})),fe.on(\"pjax:send\",(function(t){t.relatedTarget&&t.relatedTarget.tagName&&\"form\"===t.relatedTarget.tagName.toLowerCase()&&$(\"form[pjax-container]\").find('[type=\"submit\"],.submit').buttonLoading(),e.NP.start()})),fe.on(\"pjax:complete\",(function(e){e.relatedTarget&&e.relatedTarget.tagName&&\"form\"===e.relatedTarget.tagName.toLowerCase()&&$(\"form[pjax-container]\").find('[type=\"submit\"],.submit').buttonLoading(!1),$(\".modal-backdrop\").remove(),$(\"body\").removeClass(\"modal-open\")})),fe.on(\"pjax:loaded\",(function(){e.NP.done()}))}}])&&de(t.prototype,n),o&&de(t,o),e}();n(1);var be=$(document),he={refresh:function(e,t){be.on(\"click\",e,(function(){t.reload($(this).data(\"url\"))}))},delete:function(e,t){var n=t.lang;be.on(\"click\",e,(function(){var e=$(this).data(\"url\"),o=$(this).data(\"redirect\"),r=$(this).data(\"message\");t.confirm(n.delete_confirm,r,(function(){t.NP.start(),$.delete({url:e,success:function(e){t.NP.done(),e.data.detail=r,o&&!e.data.then&&(e.data.then={action:\"redirect\",value:o}),t.handleJsonResponse(e)}})}))}))},\"batch-delete\":function(e,t){be.on(\"click\",e,(function(){var e=$(this).data(\"url\"),n=$(this).data(\"name\"),o=$(this).data(\"redirect\"),r=t.grid.selected(n),a=t.lang;if(r.length){var i=\"ID - \"+r.join(\", \");t.confirm(a.delete_confirm,i,(function(){t.NP.start(),$.delete({url:e+\"/\"+r.join(\",\"),success:function(e){t.NP.done(),o&&!e.data.then&&(e.data.then={action:\"redirect\",value:o}),t.handleJsonResponse(e)}})}))}}))},\"preview-img\":function(e,t){be.on(\"click\",e,(function(){return t.helpers.previewImage($(this).attr(\"src\"))}))},popover:function(e,t){t.onPjaxComplete((function(){$(\".popover\").remove()}),!1),be.on(\"click\",e,(function(){$(this).popover()}))},\"box-actions\":function(){be.on(\"click\",'.box [data-action=\"collapse\"]',(function(e){e.preventDefault(),$(this).find(\"i\").toggleClass(\"icon-minus icon-plus\"),$(this).closest(\".box\").find(\".box-body\").first().collapse(\"toggle\")})),be.on(\"click\",'.box [data-action=\"remove\"]',(function(){$(this).closest(\".box\").removeClass().slideUp(\"fast\")}))},dropdown:function(){function e(){$(\".dropdown-menu\").removeClass(\"show\")}be.off(\"click\",document,e),be.on(\"click\",e);var t='[data-toggle=\"dropdown\"]';be.off(\"click\",t).on(\"click\",t,(function(e){var t=$(this);$(\".dropdown-menu\").each((function(){t.next()[0]!==this&&$(this).removeClass(\"show\")})),t.Dropdown(\"toggleSubmenu\")})).on(\"click\",t,(function(e){e.preventDefault(),e.stopPropagation();var t=$(this);setTimeout((function(){t.Dropdown(\"fixPosition\")}),1)}))}},me=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e);var n,o=$.extend(he,t.actions());for(n in o)o[n]('[data-action=\"'.concat(n,'\"]'),t)},ge=window,ve=jQuery;function ye(e){return function(e){new j.a(e),new S(e),new B(e),new L(e),new W(e),new Y(e),new ne(e),new re(e),new ie(e),e.NP=x.a,e.RowSelector=function(e){return new z(e)},e.Form=function(e){return new N(e)},e.DialogForm=function(t){return new J(e,t)},e.Slider=function(t){return new ee(e,t)}}(e),function(e){e.booting((function(){e.NP.configure({parent:\".app-content\"}),layer.config({maxmin:!0,moveOut:!0,shade:!1}),new ce(e),new ue(e),new me(e)})),e.bootingEveryRequest((function(){ve.ajaxSetup({cache:!0,error:e.handleAjaxError,headers:{\"X-CSRF-TOKEN\":e.token}}),new pe(e)}))}(e),e}ge.CreateDcat=function(e){return ye(new k(e))}}]);\n//# sourceMappingURL=dcat-app.js.map"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.css",
    "content": "/*!\n * Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.\n * @package bootstrap-colorpicker\n * @version v3.2.0\n * @license MIT\n * @link https://itsjavi.com/bootstrap-colorpicker/\n * @link https://github.com/itsjavi/bootstrap-colorpicker.git\n */\n.colorpicker {\n  position: relative;\n  display: none;\n  font-size: inherit;\n  color: inherit;\n  text-align: left;\n  list-style: none;\n  background-color: #ffffff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  padding: .75rem .75rem;\n  width: 148px;\n  border-radius: 4px;\n  -webkit-box-sizing: content-box;\n          box-sizing: content-box; }\n\n.colorpicker.colorpicker-disabled,\n.colorpicker.colorpicker-disabled * {\n  cursor: default !important; }\n\n.colorpicker div {\n  position: relative; }\n\n.colorpicker-popup {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  float: left;\n  margin-top: 1px;\n  z-index: 1060; }\n\n.colorpicker-popup.colorpicker-bs-popover-content {\n  position: relative;\n  top: auto;\n  left: auto;\n  float: none;\n  margin: 0;\n  z-index: initial;\n  border: none;\n  padding: 0.25rem 0;\n  border-radius: 0;\n  background: none;\n  -webkit-box-shadow: none;\n          box-shadow: none; }\n\n.colorpicker:before,\n.colorpicker:after {\n  content: \"\";\n  display: table;\n  clear: both;\n  line-height: 0; }\n\n.colorpicker-clear {\n  clear: both;\n  display: block; }\n\n.colorpicker:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n  top: -7px;\n  left: auto;\n  right: 6px; }\n\n.colorpicker:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  position: absolute;\n  top: -6px;\n  left: auto;\n  right: 7px; }\n\n.colorpicker.colorpicker-with-alpha {\n  width: 170px; }\n\n.colorpicker.colorpicker-with-alpha .colorpicker-alpha {\n  display: block; }\n\n.colorpicker-saturation {\n  position: relative;\n  width: 126px;\n  height: 126px;\n  /* FF3.6+ */\n  /* Chrome,Safari4+ */\n  /* Chrome10+,Safari5.1+ */\n  /* Opera 11.10+ */\n  /* IE10+ */\n  background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(black)), -webkit-gradient(linear, left top, right top, from(white), to(rgba(255, 255, 255, 0)));\n  background: linear-gradient(to bottom, transparent 0%, black 100%), linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%);\n  /* W3C */\n  cursor: crosshair;\n  float: left;\n  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n  margin-bottom: 6px; }\n  .colorpicker-saturation .colorpicker-guide {\n    display: block;\n    height: 6px;\n    width: 6px;\n    border-radius: 6px;\n    border: 1px solid #000;\n    -webkit-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);\n            box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);\n    position: absolute;\n    top: 0;\n    left: 0;\n    margin: -3px 0 0 -3px; }\n\n.colorpicker-hue,\n.colorpicker-alpha {\n  position: relative;\n  width: 16px;\n  height: 126px;\n  float: left;\n  cursor: row-resize;\n  margin-left: 6px;\n  margin-bottom: 6px; }\n\n.colorpicker-alpha-color {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%; }\n\n.colorpicker-hue,\n.colorpicker-alpha-color {\n  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }\n\n.colorpicker-hue .colorpicker-guide,\n.colorpicker-alpha .colorpicker-guide {\n  display: block;\n  height: 4px;\n  background: rgba(255, 255, 255, 0.8);\n  border: 1px solid rgba(0, 0, 0, 0.4);\n  position: absolute;\n  top: 0;\n  left: 0;\n  margin-left: -2px;\n  margin-top: -2px;\n  right: -2px;\n  z-index: 1; }\n\n.colorpicker-hue {\n  /* FF3.6+ */\n  /* Chrome,Safari4+ */\n  /* Chrome10+,Safari5.1+ */\n  /* Opera 11.10+ */\n  /* IE10+ */\n  background: -webkit-gradient(linear, left bottom, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));\n  background: linear-gradient(to top, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);\n  /* W3C */ }\n\n.colorpicker-alpha {\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px;\n  display: none; }\n\n.colorpicker-bar {\n  min-height: 16px;\n  margin: 6px 0 0 0;\n  clear: both;\n  text-align: center;\n  font-size: 10px;\n  line-height: normal;\n  max-width: 100%;\n  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }\n  .colorpicker-bar:before {\n    content: \"\";\n    display: table;\n    clear: both; }\n\n.colorpicker-bar.colorpicker-bar-horizontal {\n  height: 126px;\n  width: 16px;\n  margin: 0 0 6px 0;\n  float: left; }\n\n.colorpicker-input-addon {\n  position: relative; }\n\n.colorpicker-input-addon i {\n  display: inline-block;\n  cursor: pointer;\n  vertical-align: text-top;\n  height: 16px;\n  width: 16px;\n  position: relative; }\n\n.colorpicker-input-addon:before {\n  content: \"\";\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  display: inline-block;\n  vertical-align: text-top;\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px; }\n\n.colorpicker.colorpicker-inline {\n  position: relative;\n  display: inline-block;\n  float: none;\n  z-index: auto;\n  vertical-align: text-bottom; }\n\n.colorpicker.colorpicker-horizontal {\n  width: 126px;\n  height: auto; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-bar {\n  width: 126px; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-saturation {\n  float: none;\n  margin-bottom: 0; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n  float: none;\n  width: 126px;\n  height: 16px;\n  cursor: col-resize;\n  margin-left: 0;\n  margin-top: 6px;\n  margin-bottom: 0; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide {\n  position: absolute;\n  display: block;\n  bottom: -2px;\n  left: 0;\n  right: auto;\n  height: auto;\n  width: 4px; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue {\n  /* FF3.6+ */\n  /* Chrome,Safari4+ */\n  /* Chrome10+,Safari5.1+ */\n  /* Opera 11.10+ */\n  /* IE10+ */\n  background: -webkit-gradient(linear, right top, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));\n  background: linear-gradient(to left, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);\n  /* W3C */ }\n\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px; }\n\n.colorpicker-inline:before,\n.colorpicker-no-arrow:before,\n.colorpicker-popup.colorpicker-bs-popover-content:before {\n  content: none;\n  display: none; }\n\n.colorpicker-inline:after,\n.colorpicker-no-arrow:after,\n.colorpicker-popup.colorpicker-bs-popover-content:after {\n  content: none;\n  display: none; }\n\n.colorpicker-alpha,\n.colorpicker-saturation,\n.colorpicker-hue {\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none; }\n\n.colorpicker.colorpicker-visible,\n.colorpicker-alpha.colorpicker-visible,\n.colorpicker-saturation.colorpicker-visible,\n.colorpicker-hue.colorpicker-visible,\n.colorpicker-bar.colorpicker-visible {\n  display: block; }\n\n.colorpicker.colorpicker-hidden,\n.colorpicker-alpha.colorpicker-hidden,\n.colorpicker-saturation.colorpicker-hidden,\n.colorpicker-hue.colorpicker-hidden,\n.colorpicker-bar.colorpicker-hidden {\n  display: none; }\n\n.colorpicker-inline.colorpicker-visible {\n  display: inline-block; }\n\n.colorpicker.colorpicker-disabled:after {\n  border: none;\n  content: '';\n  display: block;\n  width: 100%;\n  height: 100%;\n  background: rgba(233, 236, 239, 0.33);\n  top: 0;\n  left: 0;\n  right: auto;\n  z-index: 2;\n  position: absolute; }\n\n.colorpicker.colorpicker-disabled .colorpicker-guide {\n  display: none; }\n\n/** EXTENSIONS **/\n.colorpicker-preview {\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px; }\n\n.colorpicker-preview > div {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%; }\n\n.colorpicker-bar.colorpicker-swatches {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  height: auto; }\n\n.colorpicker-swatches--inner {\n  clear: both;\n  margin-top: -6px; }\n\n.colorpicker-swatch {\n  position: relative;\n  cursor: pointer;\n  float: left;\n  height: 16px;\n  width: 16px;\n  margin-right: 6px;\n  margin-top: 6px;\n  margin-left: 0;\n  display: block;\n  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px; }\n\n.colorpicker-swatch--inner {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%; }\n\n.colorpicker-swatch:nth-of-type(7n+0) {\n  margin-right: 0; }\n\n.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0) {\n  margin-right: 6px; }\n\n.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0) {\n  margin-right: 0; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0) {\n  margin-right: 0; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0) {\n  margin-right: 6px; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0) {\n  margin-right: 6px; }\n\n.colorpicker-swatch:last-of-type:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\n*[dir='rtl'] .colorpicker-element input,\n.colorpicker-element[dir='rtl'] input,\n.colorpicker-element input[dir='rtl'] {\n  direction: ltr;\n  text-align: right; }\n\n/*# sourceMappingURL=bootstrap-colorpicker.css.map */\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js",
    "content": "/*!\n * Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.\n * @package bootstrap-colorpicker\n * @version v3.2.0\n * @license MIT\n * @link https://itsjavi.com/bootstrap-colorpicker/\n * @link https://github.com/itsjavi/bootstrap-colorpicker.git\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"bootstrap-colorpicker\", [\"jquery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bootstrap-colorpicker\"] = factory(require(\"jquery\"));\n\telse\n\t\troot[\"bootstrap-colorpicker\"] = factory(root[\"jQuery\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Colorpicker extension class.\n */\nvar Extension = function () {\n  /**\n   * @param {Colorpicker} colorpicker\n   * @param {Object} options\n   */\n  function Extension(colorpicker) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Extension);\n\n    /**\n     * The colorpicker instance\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * Extension options\n     *\n     * @type {Object}\n     */\n    this.options = options;\n\n    if (!(this.colorpicker.element && this.colorpicker.element.length)) {\n      throw new Error('Extension: this.colorpicker.element is not valid');\n    }\n\n    this.colorpicker.element.on('colorpickerCreate.colorpicker-ext', _jquery2.default.proxy(this.onCreate, this));\n    this.colorpicker.element.on('colorpickerDestroy.colorpicker-ext', _jquery2.default.proxy(this.onDestroy, this));\n    this.colorpicker.element.on('colorpickerUpdate.colorpicker-ext', _jquery2.default.proxy(this.onUpdate, this));\n    this.colorpicker.element.on('colorpickerChange.colorpicker-ext', _jquery2.default.proxy(this.onChange, this));\n    this.colorpicker.element.on('colorpickerInvalid.colorpicker-ext', _jquery2.default.proxy(this.onInvalid, this));\n    this.colorpicker.element.on('colorpickerShow.colorpicker-ext', _jquery2.default.proxy(this.onShow, this));\n    this.colorpicker.element.on('colorpickerHide.colorpicker-ext', _jquery2.default.proxy(this.onHide, this));\n    this.colorpicker.element.on('colorpickerEnable.colorpicker-ext', _jquery2.default.proxy(this.onEnable, this));\n    this.colorpicker.element.on('colorpickerDisable.colorpicker-ext', _jquery2.default.proxy(this.onDisable, this));\n  }\n\n  /**\n   * Function called every time a new color needs to be created.\n   * Return false to skip this resolver and continue with other extensions' ones\n   * or return anything else to consider the color resolved.\n   *\n   * @param {ColorItem|String|*} color\n   * @param {boolean} realColor if true, the color should resolve into a real (not named) color code\n   * @return {ColorItem|String|*}\n   */\n\n\n  _createClass(Extension, [{\n    key: 'resolveColor',\n    value: function resolveColor(color) {\n      var realColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n      return false;\n    }\n\n    /**\n     * Method called after the colorpicker is created\n     *\n     * @listens Colorpicker#colorpickerCreate\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onCreate',\n    value: function onCreate(event) {}\n    // to be extended\n\n\n    /**\n     * Method called after the colorpicker is destroyed\n     *\n     * @listens Colorpicker#colorpickerDestroy\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onDestroy',\n    value: function onDestroy(event) {\n      this.colorpicker.element.off('.colorpicker-ext');\n    }\n\n    /**\n     * Method called after the colorpicker is updated\n     *\n     * @listens Colorpicker#colorpickerUpdate\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onUpdate',\n    value: function onUpdate(event) {}\n    // to be extended\n\n\n    /**\n     * Method called after the colorpicker color is changed\n     *\n     * @listens Colorpicker#colorpickerChange\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onChange',\n    value: function onChange(event) {}\n    // to be extended\n\n\n    /**\n     * Method called when the colorpicker color is invalid\n     *\n     * @listens Colorpicker#colorpickerInvalid\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onInvalid',\n    value: function onInvalid(event) {}\n    // to be extended\n\n\n    /**\n     * Method called after the colorpicker is hidden\n     *\n     * @listens Colorpicker#colorpickerHide\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onHide',\n    value: function onHide(event) {}\n    // to be extended\n\n\n    /**\n     * Method called after the colorpicker is shown\n     *\n     * @listens Colorpicker#colorpickerShow\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onShow',\n    value: function onShow(event) {}\n    // to be extended\n\n\n    /**\n     * Method called after the colorpicker is disabled\n     *\n     * @listens Colorpicker#colorpickerDisable\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onDisable',\n    value: function onDisable(event) {}\n    // to be extended\n\n\n    /**\n     * Method called after the colorpicker is enabled\n     *\n     * @listens Colorpicker#colorpickerEnable\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onEnable',\n    value: function onEnable(event) {\n      // to be extended\n    }\n  }]);\n\n  return Extension;\n}();\n\nexports.default = Extension;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ColorItem = exports.HSVAColor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * Color manipulation class, specific for Bootstrap Colorpicker\n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */\n\n\nvar _color = __webpack_require__(16);\n\nvar _color2 = _interopRequireDefault(_color);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * HSVA color data class, containing the hue, saturation, value and alpha\n * information.\n */\nvar HSVAColor = function () {\n  /**\n   * @param {number|int} h\n   * @param {number|int} s\n   * @param {number|int} v\n   * @param {number|int} a\n   */\n  function HSVAColor(h, s, v, a) {\n    _classCallCheck(this, HSVAColor);\n\n    this.h = isNaN(h) ? 0 : h;\n    this.s = isNaN(s) ? 0 : s;\n    this.v = isNaN(v) ? 0 : v;\n    this.a = isNaN(h) ? 1 : a;\n  }\n\n  _createClass(HSVAColor, [{\n    key: 'toString',\n    value: function toString() {\n      return this.h + ', ' + this.s + '%, ' + this.v + '%, ' + this.a;\n    }\n  }]);\n\n  return HSVAColor;\n}();\n\n/**\n * HSVA color manipulation\n */\n\n\nvar ColorItem = function () {\n  _createClass(ColorItem, [{\n    key: 'api',\n\n\n    /**\n     * Applies a method of the QixColor API and returns a new Color object or\n     * the return value of the method call.\n     *\n     * If no argument is provided, the internal QixColor object is returned.\n     *\n     * @param {String} fn QixColor function name\n     * @param args QixColor function arguments\n     * @example let darkerColor = color.api('darken', 0.25);\n     * @example let luminosity = color.api('luminosity');\n     * @example color = color.api('negate');\n     * @example let qColor = color.api().negate();\n     * @returns {ColorItem|QixColor|*}\n     */\n    value: function api(fn) {\n      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      if (arguments.length === 0) {\n        return this._color;\n      }\n\n      var result = this._color[fn].apply(this._color, args);\n\n      if (!(result instanceof _color2.default)) {\n        // return result of the method call\n        return result;\n      }\n\n      return new ColorItem(result, this.format);\n    }\n\n    /**\n     * Returns the original ColorItem constructor data,\n     * plus a 'valid' flag to know if it's valid or not.\n     *\n     * @returns {{color: *, format: String, valid: boolean}}\n     */\n\n  }, {\n    key: 'original',\n    get: function get() {\n      return this._original;\n    }\n\n    /**\n     * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n     * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.\n     */\n\n  }], [{\n    key: 'HSVAColor',\n\n\n    /**\n     * Returns the HSVAColor class\n     *\n     * @static\n     * @example let colorData = new ColorItem.HSVAColor(360, 100, 100, 1);\n     * @returns {HSVAColor}\n     */\n    get: function get() {\n      return HSVAColor;\n    }\n  }]);\n\n  function ColorItem() {\n    var color = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n    _classCallCheck(this, ColorItem);\n\n    this.replace(color, format);\n  }\n\n  /**\n   * Replaces the internal QixColor object with a new one.\n   * This also replaces the internal original color data.\n   *\n   * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data to be parsed (if needed)\n   * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.\n   * @example color.replace('rgb(255,0,0)', 'hsl');\n   * @example color.replace(hsvaColorData);\n   */\n\n\n  _createClass(ColorItem, [{\n    key: 'replace',\n    value: function replace(color) {\n      var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n      format = ColorItem.sanitizeFormat(format);\n\n      /**\n       * @type {{color: *, format: String}}\n       * @private\n       */\n      this._original = {\n        color: color,\n        format: format,\n        valid: true\n      };\n      /**\n       * @type {QixColor}\n       * @private\n       */\n      this._color = ColorItem.parse(color);\n\n      if (this._color === null) {\n        this._color = (0, _color2.default)();\n        this._original.valid = false;\n        return;\n      }\n\n      /**\n       * @type {*|string}\n       * @private\n       */\n      this._format = format ? format : ColorItem.isHex(color) ? 'hex' : this._color.model;\n    }\n\n    /**\n     * Parses the color returning a Qix Color object or null if cannot be\n     * parsed.\n     *\n     * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n     * @example let qColor = ColorItem.parse('rgb(255,0,0)');\n     * @static\n     * @returns {QixColor|null}\n     */\n\n  }, {\n    key: 'isValid',\n\n\n    /**\n     * Returns true if the color is valid, false if not.\n     *\n     * @returns {boolean}\n     */\n    value: function isValid() {\n      return this._original.valid === true;\n    }\n\n    /**\n     * Hue value from 0 to 360\n     *\n     * @returns {int}\n     */\n\n  }, {\n    key: 'setHueRatio',\n\n\n    /**\n     * Sets the hue ratio, where 1.0 is 0, 0.5 is 180 and 0.0 is 360.\n     *\n     * @ignore\n     * @param {number} h Ratio from 1.0 to 0.0\n     */\n    value: function setHueRatio(h) {\n      this.hue = (1 - h) * 360;\n    }\n\n    /**\n     * Sets the saturation value\n     *\n     * @param {int} value Integer from 0 to 100\n     */\n\n  }, {\n    key: 'setSaturationRatio',\n\n\n    /**\n     * Sets the saturation ratio, where 1.0 is 100 and 0.0 is 0.\n     *\n     * @ignore\n     * @param {number} s Ratio from 0.0 to 1.0\n     */\n    value: function setSaturationRatio(s) {\n      this.saturation = s * 100;\n    }\n\n    /**\n     * Sets the 'value' channel value\n     *\n     * @param {int} value Integer from 0 to 100\n     */\n\n  }, {\n    key: 'setValueRatio',\n\n\n    /**\n     * Sets the value ratio, where 1.0 is 0 and 0.0 is 100.\n     *\n     * @ignore\n     * @param {number} v Ratio from 1.0 to 0.0\n     */\n    value: function setValueRatio(v) {\n      this.value = (1 - v) * 100;\n    }\n\n    /**\n     * Sets the alpha value. It will be rounded to 2 decimals.\n     *\n     * @param {int} value Float from 0.0 to 1.0\n     */\n\n  }, {\n    key: 'setAlphaRatio',\n\n\n    /**\n     * Sets the alpha ratio, where 1.0 is 0.0 and 0.0 is 1.0.\n     *\n     * @ignore\n     * @param {number} a Ratio from 1.0 to 0.0\n     */\n    value: function setAlphaRatio(a) {\n      this.alpha = 1 - a;\n    }\n\n    /**\n     * Sets the default color format\n     *\n     * @param {String} value Supported: 'rgb', 'hsl', 'hex'\n     */\n\n  }, {\n    key: 'isDesaturated',\n\n\n    /**\n     * Returns true if the saturation value is zero, false otherwise\n     *\n     * @returns {boolean}\n     */\n    value: function isDesaturated() {\n      return this.saturation === 0;\n    }\n\n    /**\n     * Returns true if the alpha value is zero, false otherwise\n     *\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isTransparent',\n    value: function isTransparent() {\n      return this.alpha === 0;\n    }\n\n    /**\n     * Returns true if the alpha value is numeric and less than 1, false otherwise\n     *\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'hasTransparency',\n    value: function hasTransparency() {\n      return this.hasAlpha() && this.alpha < 1;\n    }\n\n    /**\n     * Returns true if the alpha value is numeric, false otherwise\n     *\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'hasAlpha',\n    value: function hasAlpha() {\n      return !isNaN(this.alpha);\n    }\n\n    /**\n     * Returns a new HSVAColor object, based on the current color\n     *\n     * @returns {HSVAColor}\n     */\n\n  }, {\n    key: 'toObject',\n    value: function toObject() {\n      return new HSVAColor(this.hue, this.saturation, this.value, this.alpha);\n    }\n\n    /**\n     * Alias of toObject()\n     *\n     * @returns {HSVAColor}\n     */\n\n  }, {\n    key: 'toHsva',\n    value: function toHsva() {\n      return this.toObject();\n    }\n\n    /**\n     * Returns a new HSVAColor object with the ratio values (from 0.0 to 1.0),\n     * based on the current color.\n     *\n     * @ignore\n     * @returns {HSVAColor}\n     */\n\n  }, {\n    key: 'toHsvaRatio',\n    value: function toHsvaRatio() {\n      return new HSVAColor(this.hue / 360, this.saturation / 100, this.value / 100, this.alpha);\n    }\n\n    /**\n     * Converts the current color to its string representation,\n     * using the internal format of this instance.\n     *\n     * @returns {String}\n     */\n\n  }, {\n    key: 'toString',\n    value: function toString() {\n      return this.string();\n    }\n\n    /**\n     * Converts the current color to its string representation,\n     * using the given format.\n     *\n     * @param {String|null} format Format to convert to. If empty or null, the internal format will be used.\n     * @returns {String}\n     */\n\n  }, {\n    key: 'string',\n    value: function string() {\n      var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      format = ColorItem.sanitizeFormat(format ? format : this.format);\n\n      if (!format) {\n        return this._color.round().string();\n      }\n\n      if (this._color[format] === undefined) {\n        throw new Error('Unsupported color format: \\'' + format + '\\'');\n      }\n\n      var str = this._color[format]();\n\n      return str.round ? str.round().string() : str;\n    }\n\n    /**\n     * Returns true if the given color values equals this one, false otherwise.\n     * The format is not compared.\n     * If any of the colors is invalid, the result will be false.\n     *\n     * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n     *\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'equals',\n    value: function equals(color) {\n      color = color instanceof ColorItem ? color : new ColorItem(color);\n\n      if (!color.isValid() || !this.isValid()) {\n        return false;\n      }\n\n      return this.hue === color.hue && this.saturation === color.saturation && this.value === color.value && this.alpha === color.alpha;\n    }\n\n    /**\n     * Creates a copy of this instance\n     *\n     * @returns {ColorItem}\n     */\n\n  }, {\n    key: 'getClone',\n    value: function getClone() {\n      return new ColorItem(this._color, this.format);\n    }\n\n    /**\n     * Creates a copy of this instance, only copying the hue value,\n     * and setting the others to its max value.\n     *\n     * @returns {ColorItem}\n     */\n\n  }, {\n    key: 'getCloneHueOnly',\n    value: function getCloneHueOnly() {\n      return new ColorItem([this.hue, 100, 100, 1], this.format);\n    }\n\n    /**\n     * Creates a copy of this instance setting the alpha to the max.\n     *\n     * @returns {ColorItem}\n     */\n\n  }, {\n    key: 'getCloneOpaque',\n    value: function getCloneOpaque() {\n      return new ColorItem(this._color.alpha(1), this.format);\n    }\n\n    /**\n     * Converts the color to a RGB string\n     *\n     * @returns {String}\n     */\n\n  }, {\n    key: 'toRgbString',\n    value: function toRgbString() {\n      return this.string('rgb');\n    }\n\n    /**\n     * Converts the color to a Hexadecimal string\n     *\n     * @returns {String}\n     */\n\n  }, {\n    key: 'toHexString',\n    value: function toHexString() {\n      return this.string('hex');\n    }\n\n    /**\n     * Converts the color to a HSL string\n     *\n     * @returns {String}\n     */\n\n  }, {\n    key: 'toHslString',\n    value: function toHslString() {\n      return this.string('hsl');\n    }\n\n    /**\n     * Returns true if the color is dark, false otherwhise.\n     * This is useful to decide a text color.\n     *\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isDark',\n    value: function isDark() {\n      return this._color.isDark();\n    }\n\n    /**\n     * Returns true if the color is light, false otherwhise.\n     * This is useful to decide a text color.\n     *\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isLight',\n    value: function isLight() {\n      return this._color.isLight();\n    }\n\n    /**\n     * Generates a list of colors using the given hue-based formula or the given array of hue values.\n     * Hue formulas can be extended using ColorItem.colorFormulas static property.\n     *\n     * @param {String|Number[]} formula Examples: 'complementary', 'triad', 'tetrad', 'splitcomplement', [180, 270]\n     * @example let colors = color.generate('triad');\n     * @example let colors = color.generate([45, 80, 112, 200]);\n     * @returns {ColorItem[]}\n     */\n\n  }, {\n    key: 'generate',\n    value: function generate(formula) {\n      var hues = [];\n\n      if (Array.isArray(formula)) {\n        hues = formula;\n      } else if (!ColorItem.colorFormulas.hasOwnProperty(formula)) {\n        throw new Error('No color formula found with the name \\'' + formula + '\\'.');\n      } else {\n        hues = ColorItem.colorFormulas[formula];\n      }\n\n      var colors = [],\n          mainColor = this._color,\n          format = this.format;\n\n      hues.forEach(function (hue) {\n        var levels = [hue ? (mainColor.hue() + hue) % 360 : mainColor.hue(), mainColor.saturationv(), mainColor.value(), mainColor.alpha()];\n\n        colors.push(new ColorItem(levels, format));\n      });\n\n      return colors;\n    }\n  }, {\n    key: 'hue',\n    get: function get() {\n      return this._color.hue();\n    }\n\n    /**\n     * Saturation value from 0 to 100\n     *\n     * @returns {int}\n     */\n    ,\n\n\n    /**\n     * Sets the hue value\n     *\n     * @param {int} value Integer from 0 to 360\n     */\n    set: function set(value) {\n      this._color = this._color.hue(value);\n    }\n  }, {\n    key: 'saturation',\n    get: function get() {\n      return this._color.saturationv();\n    }\n\n    /**\n     * Value channel value from 0 to 100\n     *\n     * @returns {int}\n     */\n    ,\n    set: function set(value) {\n      this._color = this._color.saturationv(value);\n    }\n  }, {\n    key: 'value',\n    get: function get() {\n      return this._color.value();\n    }\n\n    /**\n     * Alpha value from 0.0 to 1.0\n     *\n     * @returns {number}\n     */\n    ,\n    set: function set(value) {\n      this._color = this._color.value(value);\n    }\n  }, {\n    key: 'alpha',\n    get: function get() {\n      var a = this._color.alpha();\n\n      return isNaN(a) ? 1 : a;\n    }\n\n    /**\n     * Default color format to convert to when calling toString() or string()\n     *\n     * @returns {String} 'rgb', 'hsl', 'hex' or ''\n     */\n    ,\n    set: function set(value) {\n      // 2 decimals max\n      this._color = this._color.alpha(Math.round(value * 100) / 100);\n    }\n  }, {\n    key: 'format',\n    get: function get() {\n      return this._format ? this._format : this._color.model;\n    },\n    set: function set(value) {\n      this._format = ColorItem.sanitizeFormat(value);\n    }\n  }], [{\n    key: 'parse',\n    value: function parse(color) {\n      if (color instanceof _color2.default) {\n        return color;\n      }\n\n      if (color instanceof ColorItem) {\n        return color._color;\n      }\n\n      var format = null;\n\n      if (color instanceof HSVAColor) {\n        color = [color.h, color.s, color.v, isNaN(color.a) ? 1 : color.a];\n      } else {\n        color = ColorItem.sanitizeString(color);\n      }\n\n      if (color === null) {\n        return null;\n      }\n\n      if (Array.isArray(color)) {\n        format = 'hsv';\n      }\n\n      try {\n        return (0, _color2.default)(color, format);\n      } catch (e) {\n        return null;\n      }\n    }\n\n    /**\n     * Sanitizes a color string, adding missing hash to hexadecimal colors\n     * and converting 'transparent' to a color code.\n     *\n     * @param {String|*} str Color string\n     * @example let colorStr = ColorItem.sanitizeString('ffaa00');\n     * @static\n     * @returns {String|*}\n     */\n\n  }, {\n    key: 'sanitizeString',\n    value: function sanitizeString(str) {\n      if (!(typeof str === 'string' || str instanceof String)) {\n        return str;\n      }\n\n      if (str.match(/^[0-9a-f]{2,}$/i)) {\n        return '#' + str;\n      }\n\n      if (str.toLowerCase() === 'transparent') {\n        return '#FFFFFF00';\n      }\n\n      return str;\n    }\n\n    /**\n     * Detects if a value is a string and a color in hexadecimal format (in any variant).\n     *\n     * @param {String} str\n     * @example ColorItem.isHex('rgba(0,0,0)'); // false\n     * @example ColorItem.isHex('ffaa00'); // true\n     * @example ColorItem.isHex('#ffaa00'); // true\n     * @static\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isHex',\n    value: function isHex(str) {\n      if (!(typeof str === 'string' || str instanceof String)) {\n        return false;\n      }\n\n      return !!str.match(/^#?[0-9a-f]{2,}$/i);\n    }\n\n    /**\n     * Sanitizes a color format to one supported by web browsers.\n     * Returns an empty string of the format can't be recognised.\n     *\n     * @param {String|*} format\n     * @example ColorItem.sanitizeFormat('rgba'); // 'rgb'\n     * @example ColorItem.isHex('hex8'); // 'hex'\n     * @example ColorItem.isHex('invalid'); // ''\n     * @static\n     * @returns {String} 'rgb', 'hsl', 'hex' or ''.\n     */\n\n  }, {\n    key: 'sanitizeFormat',\n    value: function sanitizeFormat(format) {\n      switch (format) {\n        case 'hex':\n        case 'hex3':\n        case 'hex4':\n        case 'hex6':\n        case 'hex8':\n          return 'hex';\n        case 'rgb':\n        case 'rgba':\n        case 'keyword':\n        case 'name':\n          return 'rgb';\n        case 'hsl':\n        case 'hsla':\n        case 'hsv':\n        case 'hsva':\n        case 'hwb': // HWB this is supported by Qix Color, but not by browsers\n        case 'hwba':\n          return 'hsl';\n        default:\n          return '';\n      }\n    }\n  }]);\n\n  return ColorItem;\n}();\n\n/**\n * List of hue-based color formulas used by ColorItem.prototype.generate()\n *\n * @static\n * @type {{complementary: number[], triad: number[], tetrad: number[], splitcomplement: number[]}}\n */\n\n\nColorItem.colorFormulas = {\n  complementary: [180],\n  triad: [0, 120, 240],\n  tetrad: [0, 90, 180, 270],\n  splitcomplement: [0, 72, 216]\n};\n\nexports.default = ColorItem;\nexports.HSVAColor = HSVAColor;\nexports.ColorItem = ColorItem;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * @module\n */\n\n// adjust these values accordingly to the sass vars\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar sassVars = {\n  'bar_size_short': 16,\n  'base_margin': 6,\n  'columns': 6\n};\n\nvar sliderSize = sassVars.bar_size_short * sassVars.columns + sassVars.base_margin * (sassVars.columns - 1);\n\n/**\n * Colorpicker default options\n */\nexports.default = {\n  /**\n   * Custom class to be added to the `.colorpicker-element` element\n   *\n   * @type {String|null}\n   * @default null\n   */\n  customClass: null,\n  /**\n   * Sets a initial color, ignoring the one from the element/input value or the data-color attribute.\n   *\n   * @type {(String|ColorItem|boolean)}\n   * @default false\n   */\n  color: false,\n  /**\n   * Fallback color to use when the given color is invalid.\n   * If false, the latest valid color will be used as a fallback.\n   *\n   * @type {String|ColorItem|boolean}\n   * @default false\n   */\n  fallbackColor: false,\n  /**\n   * Forces an specific color format. If 'auto', it will be automatically detected the first time only,\n   * but if null it will be always recalculated.\n   *\n   * Note that the ending 'a' of the format meaning \"alpha\" has currently no effect, meaning that rgb is the same as\n   * rgba excepting if the alpha channel is disabled (see useAlpha).\n   *\n   * @type {('rgb'|'hex'|'hsl'|'auto'|null)}\n   * @default 'auto'\n   */\n  format: 'auto',\n  /**\n   * Horizontal mode layout.\n   *\n   * If true, the hue and alpha channel bars will be rendered horizontally, above the saturation selector.\n   *\n   * @type {boolean}\n   * @default false\n   */\n  horizontal: false,\n  /**\n   * Forces to show the colorpicker as an inline element.\n   *\n   * Note that if there is no container specified, the inline element\n   * will be added to the body, so you may want to set the container option.\n   *\n   * @type {boolean}\n   * @default false\n   */\n  inline: false,\n  /**\n   * Container where the colorpicker is appended to in the DOM.\n   *\n   * If is a string (CSS selector), the colorpicker will be placed inside this container.\n   * If true, the `.colorpicker-element` element itself will be used as the container.\n   * If false, the document body is used as the container, unless it is a popover (in this case it is appended to the\n   * popover body instead).\n   *\n   * @type {String|boolean}\n   * @default false\n   */\n  container: false,\n  /**\n   * Bootstrap Popover options.\n   * The trigger, content and html options are always ignored.\n   *\n   * @type {boolean}\n   * @default Object\n   */\n  popover: {\n    animation: true,\n    placement: 'bottom',\n    fallbackPlacement: 'flip'\n  },\n  /**\n   * If true, loads the 'debugger' extension automatically, which logs the events in the console\n   * @type {boolean}\n   * @default false\n   */\n  debug: false,\n  /**\n   * Child CSS selector for the colorpicker input.\n   *\n   * @type {String}\n   * @default 'input'\n   */\n  input: 'input',\n  /**\n   * Child CSS selector for the colorpicker addon.\n   * If it exists, the child <i> element background will be changed on color change.\n   *\n   * @type {String}\n   * @default '.colorpicker-trigger, .colorpicker-input-addon'\n   */\n  addon: '.colorpicker-input-addon',\n  /**\n   * If true, the input content will be replaced always with a valid color,\n   * if false, the invalid color will be left in the input,\n   *   while the internal color object will still resolve into a valid one.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  autoInputFallback: true,\n  /**\n   * If true a hash will be prepended to hexadecimal colors.\n   * If false, the hash will be removed.\n   * This only affects the input values in hexadecimal format.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  useHashPrefix: true,\n  /**\n   * If true, the alpha channel bar will be displayed no matter what.\n   *\n   * If false, it will be always hidden and alpha channel will be disabled also programmatically, meaning that\n   * the selected or typed color will be always opaque.\n   *\n   * If null, the alpha channel will be automatically disabled/enabled depending if the initial color format supports\n   * alpha or not.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  useAlpha: true,\n  /**\n   * Colorpicker widget template\n   * @type {String}\n   * @example\n   * <!-- This is the default template: -->\n   * <div class=\"colorpicker\">\n   *   <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"></i></div>\n   *   <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\n   *   <div class=\"colorpicker-alpha\">\n   *     <div class=\"colorpicker-alpha-color\"></div>\n   *     <i class=\"colorpicker-guide\"></i>\n   *   </div>\n   * </div>\n   */\n  template: '<div class=\"colorpicker\">\\n      <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"></i></div>\\n      <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\\n      <div class=\"colorpicker-alpha\">\\n        <div class=\"colorpicker-alpha-color\"></div>\\n        <i class=\"colorpicker-guide\"></i>\\n      </div>\\n    </div>',\n  /**\n   *\n   * Associative object with the extension class name and its config.\n   * Colorpicker comes with many bundled extensions: debugger, palette, preview and swatches (a superset of palette).\n   *\n   * @type {Object[]}\n   * @example\n   *   extensions: [\n   *     {\n   *       name: 'swatches'\n   *       options: {\n   *         colors: {\n   *           'primary': '#337ab7',\n   *           'success': '#5cb85c',\n   *           'info': '#5bc0de',\n   *           'warning': '#f0ad4e',\n   *           'danger': '#d9534f'\n   *         },\n   *         namesAsValues: true\n   *       }\n   *     }\n   *   ]\n   */\n  extensions: [{\n    name: 'preview',\n    options: {\n      showText: true\n    }\n  }],\n  /**\n   * Vertical sliders configuration\n   * @type {Object}\n   */\n  sliders: {\n    saturation: {\n      selector: '.colorpicker-saturation',\n      maxLeft: sliderSize,\n      maxTop: sliderSize,\n      callLeft: 'setSaturationRatio',\n      callTop: 'setValueRatio'\n    },\n    hue: {\n      selector: '.colorpicker-hue',\n      maxLeft: 0,\n      maxTop: sliderSize,\n      callLeft: false,\n      callTop: 'setHueRatio'\n    },\n    alpha: {\n      selector: '.colorpicker-alpha',\n      childSelector: '.colorpicker-alpha-color',\n      maxLeft: 0,\n      maxTop: sliderSize,\n      callLeft: false,\n      callTop: 'setAlphaRatio'\n    }\n  },\n  /**\n   * Horizontal sliders configuration\n   * @type {Object}\n   */\n  slidersHorz: {\n    saturation: {\n      selector: '.colorpicker-saturation',\n      maxLeft: sliderSize,\n      maxTop: sliderSize,\n      callLeft: 'setSaturationRatio',\n      callTop: 'setValueRatio'\n    },\n    hue: {\n      selector: '.colorpicker-hue',\n      maxLeft: sliderSize,\n      maxTop: 0,\n      callLeft: 'setHueRatio',\n      callTop: false\n    },\n    alpha: {\n      selector: '.colorpicker-alpha',\n      childSelector: '.colorpicker-alpha-color',\n      maxLeft: sliderSize,\n      maxTop: 0,\n      callLeft: 'setAlphaRatio',\n      callTop: false\n    }\n  }\n};\nmodule.exports = exports.default;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Extension2 = __webpack_require__(1);\n\nvar _Extension3 = _interopRequireDefault(_Extension2);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaults = {\n  /**\n   * Key-value pairs defining a color alias and its CSS color representation.\n   *\n   * They can also be just an array of values. In that case, no special names are used, only the real colors.\n   *\n   * @type {Object|Array}\n   * @default null\n   * @example\n   *  {\n   *   'black': '#000000',\n   *   'white': '#ffffff',\n   *   'red': '#FF0000',\n   *   'default': '#777777',\n   *   'primary': '#337ab7',\n   *   'success': '#5cb85c',\n   *   'info': '#5bc0de',\n   *   'warning': '#f0ad4e',\n   *   'danger': '#d9534f'\n   *  }\n   *\n   * @example ['#f0ad4e', '#337ab7', '#5cb85c']\n   */\n  colors: null,\n  /**\n   * If true, when a color swatch is selected the name (alias) will be used as input value,\n   * otherwise the swatch real color value will be used.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  namesAsValues: true\n};\n\n/**\n * Palette extension\n * @ignore\n */\n\nvar Palette = function (_Extension) {\n  _inherits(Palette, _Extension);\n\n  _createClass(Palette, [{\n    key: 'colors',\n\n\n    /**\n     * @returns {Object|Array}\n     */\n    get: function get() {\n      return this.options.colors;\n    }\n  }]);\n\n  function Palette(colorpicker) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Palette);\n\n    var _this = _possibleConstructorReturn(this, (Palette.__proto__ || Object.getPrototypeOf(Palette)).call(this, colorpicker, _jquery2.default.extend(true, {}, defaults, options)));\n\n    if (!Array.isArray(_this.options.colors) && _typeof(_this.options.colors) !== 'object') {\n      _this.options.colors = null;\n    }\n    return _this;\n  }\n\n  /**\n   * @returns {int}\n   */\n\n\n  _createClass(Palette, [{\n    key: 'getLength',\n    value: function getLength() {\n      if (!this.options.colors) {\n        return 0;\n      }\n\n      if (Array.isArray(this.options.colors)) {\n        return this.options.colors.length;\n      }\n\n      if (_typeof(this.options.colors) === 'object') {\n        return Object.keys(this.options.colors).length;\n      }\n\n      return 0;\n    }\n  }, {\n    key: 'resolveColor',\n    value: function resolveColor(color) {\n      var realColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n      if (this.getLength() <= 0) {\n        return false;\n      }\n\n      // Array of colors\n      if (Array.isArray(this.options.colors)) {\n        if (this.options.colors.indexOf(color) >= 0) {\n          return color;\n        }\n        if (this.options.colors.indexOf(color.toUpperCase()) >= 0) {\n          return color.toUpperCase();\n        }\n        if (this.options.colors.indexOf(color.toLowerCase()) >= 0) {\n          return color.toLowerCase();\n        }\n        return false;\n      }\n\n      if (_typeof(this.options.colors) !== 'object') {\n        return false;\n      }\n\n      // Map of objects\n      if (!this.options.namesAsValues || realColor) {\n        return this.getValue(color, false);\n      }\n      return this.getName(color, this.getName('#' + color));\n    }\n\n    /**\n     * Given a color value, returns the corresponding color name or defaultValue.\n     *\n     * @param {String} value\n     * @param {*} defaultValue\n     * @returns {*}\n     */\n\n  }, {\n    key: 'getName',\n    value: function getName(value) {\n      var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!(typeof value === 'string') || !this.options.colors) {\n        return defaultValue;\n      }\n      for (var name in this.options.colors) {\n        if (!this.options.colors.hasOwnProperty(name)) {\n          continue;\n        }\n        if (this.options.colors[name].toLowerCase() === value.toLowerCase()) {\n          return name;\n        }\n      }\n      return defaultValue;\n    }\n\n    /**\n     * Given a color name, returns the corresponding color value or defaultValue.\n     *\n     * @param {String} name\n     * @param {*} defaultValue\n     * @returns {*}\n     */\n\n  }, {\n    key: 'getValue',\n    value: function getValue(name) {\n      var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (!(typeof name === 'string') || !this.options.colors) {\n        return defaultValue;\n      }\n      if (this.options.colors.hasOwnProperty(name)) {\n        return this.options.colors[name];\n      }\n      return defaultValue;\n    }\n  }]);\n\n  return Palette;\n}(_Extension3.default);\n\nexports.default = Palette;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n\t\"aliceblue\": [240, 248, 255],\n\t\"antiquewhite\": [250, 235, 215],\n\t\"aqua\": [0, 255, 255],\n\t\"aquamarine\": [127, 255, 212],\n\t\"azure\": [240, 255, 255],\n\t\"beige\": [245, 245, 220],\n\t\"bisque\": [255, 228, 196],\n\t\"black\": [0, 0, 0],\n\t\"blanchedalmond\": [255, 235, 205],\n\t\"blue\": [0, 0, 255],\n\t\"blueviolet\": [138, 43, 226],\n\t\"brown\": [165, 42, 42],\n\t\"burlywood\": [222, 184, 135],\n\t\"cadetblue\": [95, 158, 160],\n\t\"chartreuse\": [127, 255, 0],\n\t\"chocolate\": [210, 105, 30],\n\t\"coral\": [255, 127, 80],\n\t\"cornflowerblue\": [100, 149, 237],\n\t\"cornsilk\": [255, 248, 220],\n\t\"crimson\": [220, 20, 60],\n\t\"cyan\": [0, 255, 255],\n\t\"darkblue\": [0, 0, 139],\n\t\"darkcyan\": [0, 139, 139],\n\t\"darkgoldenrod\": [184, 134, 11],\n\t\"darkgray\": [169, 169, 169],\n\t\"darkgreen\": [0, 100, 0],\n\t\"darkgrey\": [169, 169, 169],\n\t\"darkkhaki\": [189, 183, 107],\n\t\"darkmagenta\": [139, 0, 139],\n\t\"darkolivegreen\": [85, 107, 47],\n\t\"darkorange\": [255, 140, 0],\n\t\"darkorchid\": [153, 50, 204],\n\t\"darkred\": [139, 0, 0],\n\t\"darksalmon\": [233, 150, 122],\n\t\"darkseagreen\": [143, 188, 143],\n\t\"darkslateblue\": [72, 61, 139],\n\t\"darkslategray\": [47, 79, 79],\n\t\"darkslategrey\": [47, 79, 79],\n\t\"darkturquoise\": [0, 206, 209],\n\t\"darkviolet\": [148, 0, 211],\n\t\"deeppink\": [255, 20, 147],\n\t\"deepskyblue\": [0, 191, 255],\n\t\"dimgray\": [105, 105, 105],\n\t\"dimgrey\": [105, 105, 105],\n\t\"dodgerblue\": [30, 144, 255],\n\t\"firebrick\": [178, 34, 34],\n\t\"floralwhite\": [255, 250, 240],\n\t\"forestgreen\": [34, 139, 34],\n\t\"fuchsia\": [255, 0, 255],\n\t\"gainsboro\": [220, 220, 220],\n\t\"ghostwhite\": [248, 248, 255],\n\t\"gold\": [255, 215, 0],\n\t\"goldenrod\": [218, 165, 32],\n\t\"gray\": [128, 128, 128],\n\t\"green\": [0, 128, 0],\n\t\"greenyellow\": [173, 255, 47],\n\t\"grey\": [128, 128, 128],\n\t\"honeydew\": [240, 255, 240],\n\t\"hotpink\": [255, 105, 180],\n\t\"indianred\": [205, 92, 92],\n\t\"indigo\": [75, 0, 130],\n\t\"ivory\": [255, 255, 240],\n\t\"khaki\": [240, 230, 140],\n\t\"lavender\": [230, 230, 250],\n\t\"lavenderblush\": [255, 240, 245],\n\t\"lawngreen\": [124, 252, 0],\n\t\"lemonchiffon\": [255, 250, 205],\n\t\"lightblue\": [173, 216, 230],\n\t\"lightcoral\": [240, 128, 128],\n\t\"lightcyan\": [224, 255, 255],\n\t\"lightgoldenrodyellow\": [250, 250, 210],\n\t\"lightgray\": [211, 211, 211],\n\t\"lightgreen\": [144, 238, 144],\n\t\"lightgrey\": [211, 211, 211],\n\t\"lightpink\": [255, 182, 193],\n\t\"lightsalmon\": [255, 160, 122],\n\t\"lightseagreen\": [32, 178, 170],\n\t\"lightskyblue\": [135, 206, 250],\n\t\"lightslategray\": [119, 136, 153],\n\t\"lightslategrey\": [119, 136, 153],\n\t\"lightsteelblue\": [176, 196, 222],\n\t\"lightyellow\": [255, 255, 224],\n\t\"lime\": [0, 255, 0],\n\t\"limegreen\": [50, 205, 50],\n\t\"linen\": [250, 240, 230],\n\t\"magenta\": [255, 0, 255],\n\t\"maroon\": [128, 0, 0],\n\t\"mediumaquamarine\": [102, 205, 170],\n\t\"mediumblue\": [0, 0, 205],\n\t\"mediumorchid\": [186, 85, 211],\n\t\"mediumpurple\": [147, 112, 219],\n\t\"mediumseagreen\": [60, 179, 113],\n\t\"mediumslateblue\": [123, 104, 238],\n\t\"mediumspringgreen\": [0, 250, 154],\n\t\"mediumturquoise\": [72, 209, 204],\n\t\"mediumvioletred\": [199, 21, 133],\n\t\"midnightblue\": [25, 25, 112],\n\t\"mintcream\": [245, 255, 250],\n\t\"mistyrose\": [255, 228, 225],\n\t\"moccasin\": [255, 228, 181],\n\t\"navajowhite\": [255, 222, 173],\n\t\"navy\": [0, 0, 128],\n\t\"oldlace\": [253, 245, 230],\n\t\"olive\": [128, 128, 0],\n\t\"olivedrab\": [107, 142, 35],\n\t\"orange\": [255, 165, 0],\n\t\"orangered\": [255, 69, 0],\n\t\"orchid\": [218, 112, 214],\n\t\"palegoldenrod\": [238, 232, 170],\n\t\"palegreen\": [152, 251, 152],\n\t\"paleturquoise\": [175, 238, 238],\n\t\"palevioletred\": [219, 112, 147],\n\t\"papayawhip\": [255, 239, 213],\n\t\"peachpuff\": [255, 218, 185],\n\t\"peru\": [205, 133, 63],\n\t\"pink\": [255, 192, 203],\n\t\"plum\": [221, 160, 221],\n\t\"powderblue\": [176, 224, 230],\n\t\"purple\": [128, 0, 128],\n\t\"rebeccapurple\": [102, 51, 153],\n\t\"red\": [255, 0, 0],\n\t\"rosybrown\": [188, 143, 143],\n\t\"royalblue\": [65, 105, 225],\n\t\"saddlebrown\": [139, 69, 19],\n\t\"salmon\": [250, 128, 114],\n\t\"sandybrown\": [244, 164, 96],\n\t\"seagreen\": [46, 139, 87],\n\t\"seashell\": [255, 245, 238],\n\t\"sienna\": [160, 82, 45],\n\t\"silver\": [192, 192, 192],\n\t\"skyblue\": [135, 206, 235],\n\t\"slateblue\": [106, 90, 205],\n\t\"slategray\": [112, 128, 144],\n\t\"slategrey\": [112, 128, 144],\n\t\"snow\": [255, 250, 250],\n\t\"springgreen\": [0, 255, 127],\n\t\"steelblue\": [70, 130, 180],\n\t\"tan\": [210, 180, 140],\n\t\"teal\": [0, 128, 128],\n\t\"thistle\": [216, 191, 216],\n\t\"tomato\": [255, 99, 71],\n\t\"turquoise\": [64, 224, 208],\n\t\"violet\": [238, 130, 238],\n\t\"wheat\": [245, 222, 179],\n\t\"white\": [255, 255, 255],\n\t\"whitesmoke\": [245, 245, 245],\n\t\"yellow\": [255, 255, 0],\n\t\"yellowgreen\": [154, 205, 50]\n};\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* MIT license */\nvar cssKeywords = __webpack_require__(5);\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _Colorpicker = __webpack_require__(8);\n\nvar _Colorpicker2 = _interopRequireDefault(_Colorpicker);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar plugin = 'colorpicker';\n\n_jquery2.default[plugin] = _Colorpicker2.default;\n\n// Colorpicker jQuery Plugin API\n_jquery2.default.fn[plugin] = function (option) {\n  var fnArgs = Array.prototype.slice.call(arguments, 1),\n      isSingleElement = this.length === 1,\n      returnValue = null;\n\n  var $elements = this.each(function () {\n    var $this = (0, _jquery2.default)(this),\n        inst = $this.data(plugin),\n        options = (typeof option === 'undefined' ? 'undefined' : _typeof(option)) === 'object' ? option : {};\n\n    // Create instance if does not exist\n    if (!inst) {\n      inst = new _Colorpicker2.default(this, options);\n      $this.data(plugin, inst);\n    }\n\n    if (!isSingleElement) {\n      return;\n    }\n\n    returnValue = $this;\n\n    if (typeof option === 'string') {\n      if (option === 'colorpicker') {\n        // Return colorpicker instance: e.g. .colorpicker('colorpicker')\n        returnValue = inst;\n      } else if (_jquery2.default.isFunction(inst[option])) {\n        // Return method call return value: e.g. .colorpicker('isEnabled')\n        returnValue = inst[option].apply(inst, fnArgs);\n      } else {\n        // Return property value: e.g. .colorpicker('element')\n        returnValue = inst[option];\n      }\n    }\n  });\n\n  return isSingleElement ? returnValue : $elements;\n};\n\n_jquery2.default.fn[plugin].constructor = _Colorpicker2.default;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Extension = __webpack_require__(1);\n\nvar _Extension2 = _interopRequireDefault(_Extension);\n\nvar _options = __webpack_require__(3);\n\nvar _options2 = _interopRequireDefault(_options);\n\nvar _extensions = __webpack_require__(9);\n\nvar _extensions2 = _interopRequireDefault(_extensions);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _SliderHandler = __webpack_require__(13);\n\nvar _SliderHandler2 = _interopRequireDefault(_SliderHandler);\n\nvar _PopupHandler = __webpack_require__(14);\n\nvar _PopupHandler2 = _interopRequireDefault(_PopupHandler);\n\nvar _InputHandler = __webpack_require__(15);\n\nvar _InputHandler2 = _interopRequireDefault(_InputHandler);\n\nvar _ColorHandler = __webpack_require__(22);\n\nvar _ColorHandler2 = _interopRequireDefault(_ColorHandler);\n\nvar _PickerHandler = __webpack_require__(23);\n\nvar _PickerHandler2 = _interopRequireDefault(_PickerHandler);\n\nvar _AddonHandler = __webpack_require__(24);\n\nvar _AddonHandler2 = _interopRequireDefault(_AddonHandler);\n\nvar _ColorItem = __webpack_require__(2);\n\nvar _ColorItem2 = _interopRequireDefault(_ColorItem);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar colorPickerIdCounter = 0;\n\nvar root = typeof self !== 'undefined' ? self : undefined; // window\n\n/**\n * Colorpicker widget class\n */\n\nvar Colorpicker = function () {\n  _createClass(Colorpicker, [{\n    key: 'color',\n\n\n    /**\n     * Internal color object\n     *\n     * @type {Color|null}\n     */\n    get: function get() {\n      return this.colorHandler.color;\n    }\n\n    /**\n     * Internal color format\n     *\n     * @type {String|null}\n     */\n\n  }, {\n    key: 'format',\n    get: function get() {\n      return this.colorHandler.format;\n    }\n\n    /**\n     * Getter of the picker element\n     *\n     * @returns {jQuery|HTMLElement}\n     */\n\n  }, {\n    key: 'picker',\n    get: function get() {\n      return this.pickerHandler.picker;\n    }\n\n    /**\n     * @fires Colorpicker#colorpickerCreate\n     * @param {Object|String} element\n     * @param {Object} options\n     * @constructor\n     */\n\n  }], [{\n    key: 'Color',\n\n    /**\n     * Color class\n     *\n     * @static\n     * @type {Color}\n     */\n    get: function get() {\n      return _ColorItem2.default;\n    }\n\n    /**\n     * Extension class\n     *\n     * @static\n     * @type {Extension}\n     */\n\n  }, {\n    key: 'Extension',\n    get: function get() {\n      return _Extension2.default;\n    }\n  }]);\n\n  function Colorpicker(element, options) {\n    _classCallCheck(this, Colorpicker);\n\n    colorPickerIdCounter += 1;\n    /**\n     * The colorpicker instance number\n     * @type {number}\n     */\n    this.id = colorPickerIdCounter;\n\n    /**\n     * Latest colorpicker event\n     *\n     * @type {{name: String, e: *}}\n     */\n    this.lastEvent = {\n      alias: null,\n      e: null\n    };\n\n    /**\n     * The element that the colorpicker is bound to\n     *\n     * @type {*|jQuery}\n     */\n    this.element = (0, _jquery2.default)(element).addClass('colorpicker-element').attr('data-colorpicker-id', this.id);\n\n    /**\n     * @type {defaults}\n     */\n    this.options = _jquery2.default.extend(true, {}, _options2.default, options, this.element.data());\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.disabled = false;\n\n    /**\n     * Extensions added to this instance\n     *\n     * @type {Extension[]}\n     */\n    this.extensions = [];\n\n    /**\n     * The element where the\n     * @type {*|jQuery}\n     */\n    this.container = this.options.container === true || this.options.container !== true && this.options.inline === true ? this.element : this.options.container;\n\n    this.container = this.container !== false ? (0, _jquery2.default)(this.container) : false;\n\n    /**\n     * @type {InputHandler}\n     */\n    this.inputHandler = new _InputHandler2.default(this);\n    /**\n     * @type {ColorHandler}\n     */\n    this.colorHandler = new _ColorHandler2.default(this);\n    /**\n     * @type {SliderHandler}\n     */\n    this.sliderHandler = new _SliderHandler2.default(this);\n    /**\n     * @type {PopupHandler}\n     */\n    this.popupHandler = new _PopupHandler2.default(this, root);\n    /**\n     * @type {PickerHandler}\n     */\n    this.pickerHandler = new _PickerHandler2.default(this);\n    /**\n     * @type {AddonHandler}\n     */\n    this.addonHandler = new _AddonHandler2.default(this);\n\n    this.init();\n\n    // Emit a create event\n    (0, _jquery2.default)(_jquery2.default.proxy(function () {\n      /**\n       * (Colorpicker) When the Colorpicker instance has been created and the DOM is ready.\n       *\n       * @event Colorpicker#colorpickerCreate\n       */\n      this.trigger('colorpickerCreate');\n    }, this));\n  }\n\n  /**\n   * Initializes the plugin\n   * @private\n   */\n\n\n  _createClass(Colorpicker, [{\n    key: 'init',\n    value: function init() {\n      // Init addon\n      this.addonHandler.bind();\n\n      // Init input\n      this.inputHandler.bind();\n\n      // Init extensions (before initializing the color)\n      this.initExtensions();\n\n      // Init color\n      this.colorHandler.bind();\n\n      // Init picker\n      this.pickerHandler.bind();\n\n      // Init sliders and popup\n      this.sliderHandler.bind();\n      this.popupHandler.bind();\n\n      // Inject into the DOM (this may make it visible)\n      this.pickerHandler.attach();\n\n      // Update all components\n      this.update();\n\n      if (this.inputHandler.isDisabled()) {\n        this.disable();\n      }\n    }\n\n    /**\n     * Initializes the plugin extensions\n     * @private\n     */\n\n  }, {\n    key: 'initExtensions',\n    value: function initExtensions() {\n      var _this = this;\n\n      if (!Array.isArray(this.options.extensions)) {\n        this.options.extensions = [];\n      }\n\n      if (this.options.debug) {\n        this.options.extensions.push({ name: 'debugger' });\n      }\n\n      // Register and instantiate extensions\n      this.options.extensions.forEach(function (ext) {\n        _this.registerExtension(Colorpicker.extensions[ext.name.toLowerCase()], ext.options || {});\n      });\n    }\n\n    /**\n     * Creates and registers the given extension\n     *\n     * @param {Extension} ExtensionClass The extension class to instantiate\n     * @param {Object} [config] Extension configuration\n     * @returns {Extension}\n     */\n\n  }, {\n    key: 'registerExtension',\n    value: function registerExtension(ExtensionClass) {\n      var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      var ext = new ExtensionClass(this, config);\n\n      this.extensions.push(ext);\n      return ext;\n    }\n\n    /**\n     * Destroys the current instance\n     *\n     * @fires Colorpicker#colorpickerDestroy\n     */\n\n  }, {\n    key: 'destroy',\n    value: function destroy() {\n      var color = this.color;\n\n      this.sliderHandler.unbind();\n      this.inputHandler.unbind();\n      this.popupHandler.unbind();\n      this.colorHandler.unbind();\n      this.addonHandler.unbind();\n      this.pickerHandler.unbind();\n\n      this.element.removeClass('colorpicker-element').removeData('colorpicker', 'color').off('.colorpicker');\n\n      /**\n       * (Colorpicker) When the instance is destroyed with all events unbound.\n       *\n       * @event Colorpicker#colorpickerDestroy\n       */\n      this.trigger('colorpickerDestroy', color);\n    }\n\n    /**\n     * Shows the colorpicker widget if hidden.\n     * If the colorpicker is disabled this call will be ignored.\n     *\n     * @fires Colorpicker#colorpickerShow\n     * @param {Event} [e]\n     */\n\n  }, {\n    key: 'show',\n    value: function show(e) {\n      this.popupHandler.show(e);\n    }\n\n    /**\n     * Hides the colorpicker widget.\n     *\n     * @fires Colorpicker#colorpickerHide\n     * @param {Event} [e]\n     */\n\n  }, {\n    key: 'hide',\n    value: function hide(e) {\n      this.popupHandler.hide(e);\n    }\n\n    /**\n     * Toggles the colorpicker between visible and hidden.\n     *\n     * @fires Colorpicker#colorpickerShow\n     * @fires Colorpicker#colorpickerHide\n     * @param {Event} [e]\n     */\n\n  }, {\n    key: 'toggle',\n    value: function toggle(e) {\n      this.popupHandler.toggle(e);\n    }\n\n    /**\n     * Returns the current color value as string\n     *\n     * @param {String|*} [defaultValue]\n     * @returns {String|*}\n     */\n\n  }, {\n    key: 'getValue',\n    value: function getValue() {\n      var defaultValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      var val = this.colorHandler.color;\n\n      val = val instanceof _ColorItem2.default ? val : defaultValue;\n\n      if (val instanceof _ColorItem2.default) {\n        return val.string(this.format);\n      }\n\n      return val;\n    }\n\n    /**\n     * Sets the color manually\n     *\n     * @fires Colorpicker#colorpickerChange\n     * @param {String|Color} val\n     */\n\n  }, {\n    key: 'setValue',\n    value: function setValue(val) {\n      if (this.isDisabled()) {\n        return;\n      }\n      var ch = this.colorHandler;\n\n      if (ch.hasColor() && !!val && ch.color.equals(val) || !ch.hasColor() && !val) {\n        // same color or still empty\n        return;\n      }\n\n      ch.color = val ? ch.createColor(val, this.options.autoInputFallback) : null;\n\n      /**\n       * (Colorpicker) When the color is set programmatically with setValue().\n       *\n       * @event Colorpicker#colorpickerChange\n       */\n      this.trigger('colorpickerChange', ch.color, val);\n\n      // force update if color has changed to empty\n      this.update();\n    }\n\n    /**\n     * Updates the UI and the input color according to the internal color.\n     *\n     * @fires Colorpicker#colorpickerUpdate\n     */\n\n  }, {\n    key: 'update',\n    value: function update() {\n      if (this.colorHandler.hasColor()) {\n        this.inputHandler.update();\n      } else {\n        this.colorHandler.assureColor();\n      }\n\n      this.addonHandler.update();\n      this.pickerHandler.update();\n\n      /**\n       * (Colorpicker) Fired when the widget is updated.\n       *\n       * @event Colorpicker#colorpickerUpdate\n       */\n      this.trigger('colorpickerUpdate');\n    }\n\n    /**\n     * Enables the widget and the input if any\n     *\n     * @fires Colorpicker#colorpickerEnable\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'enable',\n    value: function enable() {\n      this.inputHandler.enable();\n      this.disabled = false;\n      this.picker.removeClass('colorpicker-disabled');\n\n      /**\n       * (Colorpicker) When the widget has been enabled.\n       *\n       * @event Colorpicker#colorpickerEnable\n       */\n      this.trigger('colorpickerEnable');\n      return true;\n    }\n\n    /**\n     * Disables the widget and the input if any\n     *\n     * @fires Colorpicker#colorpickerDisable\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'disable',\n    value: function disable() {\n      this.inputHandler.disable();\n      this.disabled = true;\n      this.picker.addClass('colorpicker-disabled');\n\n      /**\n       * (Colorpicker) When the widget has been disabled.\n       *\n       * @event Colorpicker#colorpickerDisable\n       */\n      this.trigger('colorpickerDisable');\n      return true;\n    }\n\n    /**\n     * Returns true if this instance is enabled\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isEnabled',\n    value: function isEnabled() {\n      return !this.isDisabled();\n    }\n\n    /**\n     * Returns true if this instance is disabled\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isDisabled',\n    value: function isDisabled() {\n      return this.disabled === true;\n    }\n\n    /**\n     * Triggers a Colorpicker event.\n     *\n     * @param eventName\n     * @param color\n     * @param value\n     */\n\n  }, {\n    key: 'trigger',\n    value: function trigger(eventName) {\n      var color = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n      var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n      this.element.trigger({\n        type: eventName,\n        colorpicker: this,\n        color: color ? color : this.color,\n        value: value ? value : this.getValue()\n      });\n    }\n  }]);\n\n  return Colorpicker;\n}();\n\n/**\n * Colorpicker extension classes, indexed by extension name\n *\n * @static\n * @type {Object} a map between the extension name and its class\n */\n\n\nColorpicker.extensions = _extensions2.default;\n\nexports.default = Colorpicker;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Palette = exports.Swatches = exports.Preview = exports.Debugger = undefined;\n\nvar _Debugger = __webpack_require__(10);\n\nvar _Debugger2 = _interopRequireDefault(_Debugger);\n\nvar _Preview = __webpack_require__(11);\n\nvar _Preview2 = _interopRequireDefault(_Preview);\n\nvar _Swatches = __webpack_require__(12);\n\nvar _Swatches2 = _interopRequireDefault(_Swatches);\n\nvar _Palette = __webpack_require__(4);\n\nvar _Palette2 = _interopRequireDefault(_Palette);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Debugger = _Debugger2.default;\nexports.Preview = _Preview2.default;\nexports.Swatches = _Swatches2.default;\nexports.Palette = _Palette2.default;\nexports.default = {\n  'debugger': _Debugger2.default,\n  'preview': _Preview2.default,\n  'swatches': _Swatches2.default,\n  'palette': _Palette2.default\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _Extension2 = __webpack_require__(1);\n\nvar _Extension3 = _interopRequireDefault(_Extension2);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Debugger extension class\n * @alias DebuggerExtension\n * @ignore\n */\nvar Debugger = function (_Extension) {\n  _inherits(Debugger, _Extension);\n\n  function Debugger(colorpicker) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Debugger);\n\n    /**\n     * @type {number}\n     */\n    var _this = _possibleConstructorReturn(this, (Debugger.__proto__ || Object.getPrototypeOf(Debugger)).call(this, colorpicker, options));\n\n    _this.eventCounter = 0;\n    if (_this.colorpicker.inputHandler.hasInput()) {\n      _this.colorpicker.inputHandler.input.on('change.colorpicker-ext', _jquery2.default.proxy(_this.onChangeInput, _this));\n    }\n    return _this;\n  }\n\n  /**\n   * @fires DebuggerExtension#colorpickerDebug\n   * @param {string} eventName\n   * @param {*} args\n   */\n\n\n  _createClass(Debugger, [{\n    key: 'log',\n    value: function log(eventName) {\n      var _console;\n\n      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      this.eventCounter += 1;\n\n      var logMessage = '#' + this.eventCounter + ': Colorpicker#' + this.colorpicker.id + ' [' + eventName + ']';\n\n      (_console = console).debug.apply(_console, [logMessage].concat(args));\n\n      /**\n       * Whenever the debugger logs an event, this other event is emitted.\n       *\n       * @event DebuggerExtension#colorpickerDebug\n       * @type {object} The event object\n       * @property {Colorpicker} colorpicker The Colorpicker instance\n       * @property {ColorItem} color The color instance\n       * @property {{debugger: DebuggerExtension, eventName: String, logArgs: Array, logMessage: String}} debug\n       *  The debug info\n       */\n      this.colorpicker.element.trigger({\n        type: 'colorpickerDebug',\n        colorpicker: this.colorpicker,\n        color: this.color,\n        value: null,\n        debug: {\n          debugger: this,\n          eventName: eventName,\n          logArgs: args,\n          logMessage: logMessage\n        }\n      });\n    }\n  }, {\n    key: 'resolveColor',\n    value: function resolveColor(color) {\n      var realColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n      this.log('resolveColor()', color, realColor);\n      return false;\n    }\n  }, {\n    key: 'onCreate',\n    value: function onCreate(event) {\n      this.log('colorpickerCreate');\n      return _get(Debugger.prototype.__proto__ || Object.getPrototypeOf(Debugger.prototype), 'onCreate', this).call(this, event);\n    }\n  }, {\n    key: 'onDestroy',\n    value: function onDestroy(event) {\n      this.log('colorpickerDestroy');\n      this.eventCounter = 0;\n\n      if (this.colorpicker.inputHandler.hasInput()) {\n        this.colorpicker.inputHandler.input.off('.colorpicker-ext');\n      }\n\n      return _get(Debugger.prototype.__proto__ || Object.getPrototypeOf(Debugger.prototype), 'onDestroy', this).call(this, event);\n    }\n  }, {\n    key: 'onUpdate',\n    value: function onUpdate(event) {\n      this.log('colorpickerUpdate');\n    }\n\n    /**\n     * @listens Colorpicker#change\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'onChangeInput',\n    value: function onChangeInput(event) {\n      this.log('input:change.colorpicker', event.value, event.color);\n    }\n  }, {\n    key: 'onChange',\n    value: function onChange(event) {\n      this.log('colorpickerChange', event.value, event.color);\n    }\n  }, {\n    key: 'onInvalid',\n    value: function onInvalid(event) {\n      this.log('colorpickerInvalid', event.value, event.color);\n    }\n  }, {\n    key: 'onHide',\n    value: function onHide(event) {\n      this.log('colorpickerHide');\n      this.eventCounter = 0;\n    }\n  }, {\n    key: 'onShow',\n    value: function onShow(event) {\n      this.log('colorpickerShow');\n    }\n  }, {\n    key: 'onDisable',\n    value: function onDisable(event) {\n      this.log('colorpickerDisable');\n    }\n  }, {\n    key: 'onEnable',\n    value: function onEnable(event) {\n      this.log('colorpickerEnable');\n    }\n  }]);\n\n  return Debugger;\n}(_Extension3.default);\n\nexports.default = Debugger;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _Extension2 = __webpack_require__(1);\n\nvar _Extension3 = _interopRequireDefault(_Extension2);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Color preview extension\n * @ignore\n */\nvar Preview = function (_Extension) {\n  _inherits(Preview, _Extension);\n\n  function Preview(colorpicker) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Preview);\n\n    var _this = _possibleConstructorReturn(this, (Preview.__proto__ || Object.getPrototypeOf(Preview)).call(this, colorpicker, _jquery2.default.extend(true, {}, {\n      template: '<div class=\"colorpicker-bar colorpicker-preview\"><div /></div>',\n      showText: true,\n      format: colorpicker.format\n    }, options)));\n\n    _this.element = (0, _jquery2.default)(_this.options.template);\n    _this.elementInner = _this.element.find('div');\n    return _this;\n  }\n\n  _createClass(Preview, [{\n    key: 'onCreate',\n    value: function onCreate(event) {\n      _get(Preview.prototype.__proto__ || Object.getPrototypeOf(Preview.prototype), 'onCreate', this).call(this, event);\n      this.colorpicker.picker.append(this.element);\n    }\n  }, {\n    key: 'onUpdate',\n    value: function onUpdate(event) {\n      _get(Preview.prototype.__proto__ || Object.getPrototypeOf(Preview.prototype), 'onUpdate', this).call(this, event);\n\n      if (!event.color) {\n        this.elementInner.css('backgroundColor', null).css('color', null).html('');\n        return;\n      }\n\n      this.elementInner.css('backgroundColor', event.color.toRgbString());\n\n      if (this.options.showText) {\n        this.elementInner.html(event.color.string(this.options.format || this.colorpicker.format));\n\n        if (event.color.isDark() && event.color.alpha > 0.5) {\n          this.elementInner.css('color', 'white');\n        } else {\n          this.elementInner.css('color', 'black');\n        }\n      }\n    }\n  }]);\n\n  return Preview;\n}(_Extension3.default);\n\nexports.default = Preview;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _Palette2 = __webpack_require__(4);\n\nvar _Palette3 = _interopRequireDefault(_Palette2);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaults = {\n  barTemplate: '<div class=\"colorpicker-bar colorpicker-swatches\">\\n                    <div class=\"colorpicker-swatches--inner\"></div>\\n                </div>',\n  swatchTemplate: '<i class=\"colorpicker-swatch\"><i class=\"colorpicker-swatch--inner\"></i></i>'\n};\n\n/**\n * Color swatches extension\n * @ignore\n */\n\nvar Swatches = function (_Palette) {\n  _inherits(Swatches, _Palette);\n\n  function Swatches(colorpicker) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Swatches);\n\n    var _this = _possibleConstructorReturn(this, (Swatches.__proto__ || Object.getPrototypeOf(Swatches)).call(this, colorpicker, _jquery2.default.extend(true, {}, defaults, options)));\n\n    _this.element = null;\n    return _this;\n  }\n\n  _createClass(Swatches, [{\n    key: 'isEnabled',\n    value: function isEnabled() {\n      return this.getLength() > 0;\n    }\n  }, {\n    key: 'onCreate',\n    value: function onCreate(event) {\n      _get(Swatches.prototype.__proto__ || Object.getPrototypeOf(Swatches.prototype), 'onCreate', this).call(this, event);\n\n      if (!this.isEnabled()) {\n        return;\n      }\n\n      this.element = (0, _jquery2.default)(this.options.barTemplate);\n      this.load();\n      this.colorpicker.picker.append(this.element);\n    }\n  }, {\n    key: 'load',\n    value: function load() {\n      var _this2 = this;\n\n      var colorpicker = this.colorpicker,\n          swatchContainer = this.element.find('.colorpicker-swatches--inner'),\n          isAliased = this.options.namesAsValues === true && !Array.isArray(this.colors);\n\n      swatchContainer.empty();\n\n      _jquery2.default.each(this.colors, function (name, value) {\n        var $swatch = (0, _jquery2.default)(_this2.options.swatchTemplate).attr('data-name', name).attr('data-value', value).attr('title', isAliased ? name + ': ' + value : value).on('mousedown.colorpicker touchstart.colorpicker', function (e) {\n          var $sw = (0, _jquery2.default)(this);\n\n          // e.preventDefault();\n\n          colorpicker.setValue(isAliased ? $sw.attr('data-name') : $sw.attr('data-value'));\n        });\n\n        $swatch.find('.colorpicker-swatch--inner').css('background-color', value);\n\n        swatchContainer.append($swatch);\n      });\n\n      swatchContainer.append((0, _jquery2.default)('<i class=\"colorpicker-clear\"></i>'));\n    }\n  }]);\n\n  return Swatches;\n}(_Palette3.default);\n\nexports.default = Swatches;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Class that handles all configured sliders on mouse or touch events.\n * @ignore\n */\nvar SliderHandler = function () {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  function SliderHandler(colorpicker) {\n    _classCallCheck(this, SliderHandler);\n\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {*|String}\n     * @private\n     */\n    this.currentSlider = null;\n    /**\n     * @type {{left: number, top: number}}\n     * @private\n     */\n    this.mousePointer = {\n      left: 0,\n      top: 0\n    };\n\n    /**\n     * @type {Function}\n     */\n    this.onMove = _jquery2.default.proxy(this.defaultOnMove, this);\n  }\n\n  /**\n   * This function is called every time a slider guide is moved\n   * The scope of \"this\" is the SliderHandler object.\n   *\n   * @param {int} top\n   * @param {int} left\n   */\n\n\n  _createClass(SliderHandler, [{\n    key: 'defaultOnMove',\n    value: function defaultOnMove(top, left) {\n      if (!this.currentSlider) {\n        return;\n      }\n\n      var slider = this.currentSlider,\n          cp = this.colorpicker,\n          ch = cp.colorHandler;\n\n      // Create a color object\n      var color = !ch.hasColor() ? ch.getFallbackColor() : ch.color.getClone();\n\n      // Adjust the guide position\n      slider.guideStyle.left = left + 'px';\n      slider.guideStyle.top = top + 'px';\n\n      // Adjust the color\n      if (slider.callLeft) {\n        color[slider.callLeft](left / slider.maxLeft);\n      }\n      if (slider.callTop) {\n        color[slider.callTop](top / slider.maxTop);\n      }\n\n      // Set the new color\n      cp.setValue(color);\n      cp.popupHandler.focus();\n    }\n\n    /**\n     * Binds the colorpicker sliders to the mouse/touch events\n     */\n\n  }, {\n    key: 'bind',\n    value: function bind() {\n      var sliders = this.colorpicker.options.horizontal ? this.colorpicker.options.slidersHorz : this.colorpicker.options.sliders;\n\n      var sliderClasses = [];\n\n      for (var sliderName in sliders) {\n        if (!sliders.hasOwnProperty(sliderName)) {\n          continue;\n        }\n\n        sliderClasses.push(sliders[sliderName].selector);\n      }\n\n      this.colorpicker.picker.find(sliderClasses.join(', ')).on('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.pressed, this));\n    }\n\n    /**\n     * Unbinds any event bound by this handler\n     */\n\n  }, {\n    key: 'unbind',\n    value: function unbind() {\n      (0, _jquery2.default)(this.colorpicker.picker).off({\n        'mousemove.colorpicker': _jquery2.default.proxy(this.moved, this),\n        'touchmove.colorpicker': _jquery2.default.proxy(this.moved, this),\n        'mouseup.colorpicker': _jquery2.default.proxy(this.released, this),\n        'touchend.colorpicker': _jquery2.default.proxy(this.released, this)\n      });\n    }\n\n    /**\n     * Function triggered when clicking in one of the color adjustment bars\n     *\n     * @private\n     * @fires Colorpicker#mousemove\n     * @param {Event} e\n     */\n\n  }, {\n    key: 'pressed',\n    value: function pressed(e) {\n      if (this.colorpicker.isDisabled()) {\n        return;\n      }\n      this.colorpicker.lastEvent.alias = 'pressed';\n      this.colorpicker.lastEvent.e = e;\n\n      if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n        e.pageX = e.originalEvent.touches[0].pageX;\n        e.pageY = e.originalEvent.touches[0].pageY;\n      }\n      // e.stopPropagation();\n      // e.preventDefault();\n\n      var target = (0, _jquery2.default)(e.target);\n\n      // detect the slider and set the limits and callbacks\n      var zone = target.closest('div');\n\n      var sliders = this.colorpicker.options.horizontal ? this.colorpicker.options.slidersHorz : this.colorpicker.options.sliders;\n\n      if (zone.is('.colorpicker')) {\n        return;\n      }\n\n      this.currentSlider = null;\n\n      for (var sliderName in sliders) {\n        if (!sliders.hasOwnProperty(sliderName)) {\n          continue;\n        }\n\n        var slider = sliders[sliderName];\n\n        if (zone.is(slider.selector)) {\n          this.currentSlider = _jquery2.default.extend({}, slider, { name: sliderName });\n          break;\n        } else if (slider.childSelector !== undefined && zone.is(slider.childSelector)) {\n          this.currentSlider = _jquery2.default.extend({}, slider, { name: sliderName });\n          zone = zone.parent(); // zone.parents(slider.selector).first() ?\n          break;\n        }\n      }\n\n      var guide = zone.find('.colorpicker-guide').get(0);\n\n      if (this.currentSlider === null || guide === null) {\n        return;\n      }\n\n      var offset = zone.offset();\n\n      // reference to guide's style\n      this.currentSlider.guideStyle = guide.style;\n      this.currentSlider.left = e.pageX - offset.left;\n      this.currentSlider.top = e.pageY - offset.top;\n      this.mousePointer = {\n        left: e.pageX,\n        top: e.pageY\n      };\n\n      // TODO: fix moving outside the picker makes the guides to keep moving. The event needs to be bound to the window.\n      /**\n       * (window.document) Triggered on mousedown for the document object,\n       * so the color adjustment guide is moved to the clicked position.\n       *\n       * @event Colorpicker#mousemove\n       */\n      (0, _jquery2.default)(this.colorpicker.picker).on({\n        'mousemove.colorpicker': _jquery2.default.proxy(this.moved, this),\n        'touchmove.colorpicker': _jquery2.default.proxy(this.moved, this),\n        'mouseup.colorpicker': _jquery2.default.proxy(this.released, this),\n        'touchend.colorpicker': _jquery2.default.proxy(this.released, this)\n      }).trigger('mousemove');\n    }\n\n    /**\n     * Function triggered when dragging a guide inside one of the color adjustment bars.\n     *\n     * @private\n     * @param {Event} e\n     */\n\n  }, {\n    key: 'moved',\n    value: function moved(e) {\n      this.colorpicker.lastEvent.alias = 'moved';\n      this.colorpicker.lastEvent.e = e;\n\n      if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n        e.pageX = e.originalEvent.touches[0].pageX;\n        e.pageY = e.originalEvent.touches[0].pageY;\n      }\n\n      // e.stopPropagation();\n      e.preventDefault(); // prevents scrolling on mobile\n\n      var left = Math.max(0, Math.min(this.currentSlider.maxLeft, this.currentSlider.left + ((e.pageX || this.mousePointer.left) - this.mousePointer.left)));\n\n      var top = Math.max(0, Math.min(this.currentSlider.maxTop, this.currentSlider.top + ((e.pageY || this.mousePointer.top) - this.mousePointer.top)));\n\n      this.onMove(top, left);\n    }\n\n    /**\n     * Function triggered when releasing the click in one of the color adjustment bars.\n     *\n     * @private\n     * @param {Event} e\n     */\n\n  }, {\n    key: 'released',\n    value: function released(e) {\n      this.colorpicker.lastEvent.alias = 'released';\n      this.colorpicker.lastEvent.e = e;\n\n      // e.stopPropagation();\n      // e.preventDefault();\n\n      (0, _jquery2.default)(this.colorpicker.picker).off({\n        'mousemove.colorpicker': this.moved,\n        'touchmove.colorpicker': this.moved,\n        'mouseup.colorpicker': this.released,\n        'touchend.colorpicker': this.released\n      });\n    }\n  }]);\n\n  return SliderHandler;\n}();\n\nexports.default = SliderHandler;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _options = __webpack_require__(3);\n\nvar _options2 = _interopRequireDefault(_options);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Handles everything related to the UI of the colorpicker popup: show, hide, position,...\n * @ignore\n */\nvar PopupHandler = function () {\n  /**\n   * @param {Colorpicker} colorpicker\n   * @param {Window} root\n   */\n  function PopupHandler(colorpicker, root) {\n    _classCallCheck(this, PopupHandler);\n\n    /**\n     * @type {Window}\n     */\n    this.root = root;\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {jQuery}\n     */\n    this.popoverTarget = null;\n    /**\n     * @type {jQuery}\n     */\n    this.popoverTip = null;\n\n    /**\n     * If true, the latest click was inside the popover\n     * @type {boolean}\n     */\n    this.clicking = false;\n    /**\n     * @type {boolean}\n     */\n    this.hidding = false;\n    /**\n     * @type {boolean}\n     */\n    this.showing = false;\n  }\n\n  /**\n   * @private\n   * @returns {jQuery|false}\n   */\n\n\n  _createClass(PopupHandler, [{\n    key: 'bind',\n\n\n    /**\n     * Binds the different colorpicker elements to the focus/mouse/touch events so it reacts in order to show or\n     * hide the colorpicker popup accordingly. It also adds the proper classes.\n     */\n    value: function bind() {\n      var cp = this.colorpicker;\n\n      if (cp.options.inline) {\n        cp.picker.addClass('colorpicker-inline colorpicker-visible');\n        return; // no need to bind show/hide events for inline elements\n      }\n\n      cp.picker.addClass('colorpicker-popup colorpicker-hidden');\n\n      // there is no input or addon\n      if (!this.hasInput && !this.hasAddon) {\n        return;\n      }\n\n      // create Bootstrap 4 popover\n      if (cp.options.popover) {\n        this.createPopover();\n      }\n\n      // bind addon show/hide events\n      if (this.hasAddon) {\n        // enable focus on addons\n        if (!this.addon.attr('tabindex')) {\n          this.addon.attr('tabindex', 0);\n        }\n\n        this.addon.on({\n          'mousedown.colorpicker touchstart.colorpicker': _jquery2.default.proxy(this.toggle, this)\n        });\n\n        this.addon.on({\n          'focus.colorpicker': _jquery2.default.proxy(this.show, this)\n        });\n\n        this.addon.on({\n          'focusout.colorpicker': _jquery2.default.proxy(this.hide, this)\n        });\n      }\n\n      // bind input show/hide events\n      if (this.hasInput && !this.hasAddon) {\n        this.input.on({\n          'mousedown.colorpicker touchstart.colorpicker': _jquery2.default.proxy(this.show, this),\n          'focus.colorpicker': _jquery2.default.proxy(this.show, this)\n        });\n\n        this.input.on({\n          'focusout.colorpicker': _jquery2.default.proxy(this.hide, this)\n        });\n      }\n\n      // reposition popup on window resize\n      (0, _jquery2.default)(this.root).on('resize.colorpicker', _jquery2.default.proxy(this.reposition, this));\n    }\n\n    /**\n     * Unbinds any event bound by this handler\n     */\n\n  }, {\n    key: 'unbind',\n    value: function unbind() {\n      if (this.hasInput) {\n        this.input.off({\n          'mousedown.colorpicker touchstart.colorpicker': _jquery2.default.proxy(this.show, this),\n          'focus.colorpicker': _jquery2.default.proxy(this.show, this)\n        });\n        this.input.off({\n          'focusout.colorpicker': _jquery2.default.proxy(this.hide, this)\n        });\n      }\n\n      if (this.hasAddon) {\n        this.addon.off({\n          'mousedown.colorpicker touchstart.colorpicker': _jquery2.default.proxy(this.toggle, this)\n        });\n        this.addon.off({\n          'focus.colorpicker': _jquery2.default.proxy(this.show, this)\n        });\n        this.addon.off({\n          'focusout.colorpicker': _jquery2.default.proxy(this.hide, this)\n        });\n      }\n\n      if (this.popoverTarget) {\n        this.popoverTarget.popover('dispose');\n      }\n\n      (0, _jquery2.default)(this.root).off('resize.colorpicker', _jquery2.default.proxy(this.reposition, this));\n      (0, _jquery2.default)(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.hide, this));\n      (0, _jquery2.default)(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.onClickingInside, this));\n    }\n  }, {\n    key: 'isClickingInside',\n    value: function isClickingInside(e) {\n      if (!e) {\n        return false;\n      }\n\n      return this.isOrIsInside(this.popoverTip, e.currentTarget) || this.isOrIsInside(this.popoverTip, e.target) || this.isOrIsInside(this.colorpicker.picker, e.currentTarget) || this.isOrIsInside(this.colorpicker.picker, e.target);\n    }\n  }, {\n    key: 'isOrIsInside',\n    value: function isOrIsInside(container, element) {\n      if (!container || !element) {\n        return false;\n      }\n\n      element = (0, _jquery2.default)(element);\n\n      return element.is(container) || container.find(element).length > 0;\n    }\n  }, {\n    key: 'onClickingInside',\n    value: function onClickingInside(e) {\n      this.clicking = this.isClickingInside(e);\n    }\n  }, {\n    key: 'createPopover',\n    value: function createPopover() {\n      var cp = this.colorpicker;\n\n      this.popoverTarget = this.hasAddon ? this.addon : this.input;\n\n      cp.picker.addClass('colorpicker-bs-popover-content');\n\n      this.popoverTarget.popover(_jquery2.default.extend(true, {}, _options2.default.popover, cp.options.popover, { trigger: 'manual', content: cp.picker, html: true }));\n\n      this.popoverTip = (0, _jquery2.default)(this.popoverTarget.popover('getTipElement').data('bs.popover').tip);\n      this.popoverTip.addClass('colorpicker-bs-popover');\n\n      this.popoverTarget.on('shown.bs.popover', _jquery2.default.proxy(this.fireShow, this));\n      this.popoverTarget.on('hidden.bs.popover', _jquery2.default.proxy(this.fireHide, this));\n    }\n\n    /**\n     * If the widget is not inside a container or inline, rearranges its position relative to its element offset.\n     *\n     * @param {Event} [e]\n     * @private\n     */\n\n  }, {\n    key: 'reposition',\n    value: function reposition(e) {\n      if (this.popoverTarget && this.isVisible()) {\n        this.popoverTarget.popover('update');\n      }\n    }\n\n    /**\n     * Toggles the colorpicker between visible or hidden\n     *\n     * @fires Colorpicker#colorpickerShow\n     * @fires Colorpicker#colorpickerHide\n     * @param {Event} [e]\n     */\n\n  }, {\n    key: 'toggle',\n    value: function toggle(e) {\n      if (this.isVisible()) {\n        this.hide(e);\n      } else {\n        this.show(e);\n      }\n    }\n\n    /**\n     * Shows the colorpicker widget if hidden.\n     *\n     * @fires Colorpicker#colorpickerShow\n     * @param {Event} [e]\n     */\n\n  }, {\n    key: 'show',\n    value: function show(e) {\n      if (this.isVisible() || this.showing || this.hidding) {\n        return;\n      }\n\n      this.showing = true;\n      this.hidding = false;\n      this.clicking = false;\n\n      var cp = this.colorpicker;\n\n      cp.lastEvent.alias = 'show';\n      cp.lastEvent.e = e;\n\n      // Prevent showing browser native HTML5 colorpicker\n      if (e && (!this.hasInput || this.input.attr('type') === 'color') && e && e.preventDefault) {\n        e.stopPropagation();\n        e.preventDefault();\n      }\n\n      // If it's a popover, add event to the document to hide the picker when clicking outside of it\n      if (this.isPopover) {\n        (0, _jquery2.default)(this.root).on('resize.colorpicker', _jquery2.default.proxy(this.reposition, this));\n      }\n\n      // add visible class before popover is shown\n      cp.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden');\n\n      if (this.popoverTarget) {\n        this.popoverTarget.popover('show');\n      } else {\n        this.fireShow();\n      }\n    }\n  }, {\n    key: 'fireShow',\n    value: function fireShow() {\n      this.hidding = false;\n      this.showing = false;\n\n      if (this.isPopover) {\n        // Add event to hide on outside click\n        (0, _jquery2.default)(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.hide, this));\n        (0, _jquery2.default)(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.onClickingInside, this));\n      }\n\n      /**\n       * (Colorpicker) When show() is called and the widget can be shown.\n       *\n       * @event Colorpicker#colorpickerShow\n       */\n      this.colorpicker.trigger('colorpickerShow');\n    }\n\n    /**\n     * Hides the colorpicker widget.\n     * Hide is prevented when it is triggered by an event whose target element has been clicked/touched.\n     *\n     * @fires Colorpicker#colorpickerHide\n     * @param {Event} [e]\n     */\n\n  }, {\n    key: 'hide',\n    value: function hide(e) {\n      if (this.isHidden() || this.showing || this.hidding) {\n        return;\n      }\n\n      var cp = this.colorpicker,\n          clicking = this.clicking || this.isClickingInside(e);\n\n      this.hidding = true;\n      this.showing = false;\n      this.clicking = false;\n\n      cp.lastEvent.alias = 'hide';\n      cp.lastEvent.e = e;\n\n      // TODO: fix having to click twice outside when losing focus and last 2 clicks where inside the colorpicker\n\n      // Prevent hide if triggered by an event and an element inside the colorpicker has been clicked/touched\n      if (clicking) {\n        this.hidding = false;\n        return;\n      }\n\n      if (this.popoverTarget) {\n        this.popoverTarget.popover('hide');\n      } else {\n        this.fireHide();\n      }\n    }\n  }, {\n    key: 'fireHide',\n    value: function fireHide() {\n      this.hidding = false;\n      this.showing = false;\n\n      var cp = this.colorpicker;\n\n      // add hidden class after popover is hidden\n      cp.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible');\n\n      // Unbind window and document events, since there is no need to keep them while the popup is hidden\n      (0, _jquery2.default)(this.root).off('resize.colorpicker', _jquery2.default.proxy(this.reposition, this));\n      (0, _jquery2.default)(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.hide, this));\n      (0, _jquery2.default)(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.onClickingInside, this));\n\n      /**\n       * (Colorpicker) When hide() is called and the widget can be hidden.\n       *\n       * @event Colorpicker#colorpickerHide\n       */\n      cp.trigger('colorpickerHide');\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      if (this.hasAddon) {\n        return this.addon.focus();\n      }\n      if (this.hasInput) {\n        return this.input.focus();\n      }\n      return false;\n    }\n\n    /**\n     * Returns true if the colorpicker element has the colorpicker-visible class and not the colorpicker-hidden one.\n     * False otherwise.\n     *\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isVisible',\n    value: function isVisible() {\n      return this.colorpicker.picker.hasClass('colorpicker-visible') && !this.colorpicker.picker.hasClass('colorpicker-hidden');\n    }\n\n    /**\n     * Returns true if the colorpicker element has the colorpicker-hidden class and not the colorpicker-visible one.\n     * False otherwise.\n     *\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isHidden',\n    value: function isHidden() {\n      return this.colorpicker.picker.hasClass('colorpicker-hidden') && !this.colorpicker.picker.hasClass('colorpicker-visible');\n    }\n  }, {\n    key: 'input',\n    get: function get() {\n      return this.colorpicker.inputHandler.input;\n    }\n\n    /**\n     * @private\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'hasInput',\n    get: function get() {\n      return this.colorpicker.inputHandler.hasInput();\n    }\n\n    /**\n     * @private\n     * @returns {jQuery|false}\n     */\n\n  }, {\n    key: 'addon',\n    get: function get() {\n      return this.colorpicker.addonHandler.addon;\n    }\n\n    /**\n     * @private\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'hasAddon',\n    get: function get() {\n      return this.colorpicker.addonHandler.hasAddon();\n    }\n\n    /**\n     * @private\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isPopover',\n    get: function get() {\n      return !this.colorpicker.options.inline && !!this.popoverTip;\n    }\n  }]);\n\n  return PopupHandler;\n}();\n\nexports.default = PopupHandler;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _ColorItem = __webpack_require__(2);\n\nvar _ColorItem2 = _interopRequireDefault(_ColorItem);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Handles everything related to the colorpicker input\n * @ignore\n */\nvar InputHandler = function () {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  function InputHandler(colorpicker) {\n    _classCallCheck(this, InputHandler);\n\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {jQuery|false}\n     */\n    this.input = this.colorpicker.element.is('input') ? this.colorpicker.element : this.colorpicker.options.input ? this.colorpicker.element.find(this.colorpicker.options.input) : false;\n\n    if (this.input && this.input.length === 0) {\n      this.input = false;\n    }\n\n    this._initValue();\n  }\n\n  _createClass(InputHandler, [{\n    key: 'bind',\n    value: function bind() {\n      if (!this.hasInput()) {\n        return;\n      }\n      this.input.on({\n        'keyup.colorpicker': _jquery2.default.proxy(this.onkeyup, this)\n      });\n      this.input.on({\n        'change.colorpicker': _jquery2.default.proxy(this.onchange, this)\n      });\n    }\n  }, {\n    key: 'unbind',\n    value: function unbind() {\n      if (!this.hasInput()) {\n        return;\n      }\n      this.input.off('.colorpicker');\n    }\n  }, {\n    key: '_initValue',\n    value: function _initValue() {\n      if (!this.hasInput()) {\n        return;\n      }\n\n      var val = '';\n\n      [\n      // candidates:\n      this.input.val(), this.input.data('color'), this.input.attr('data-color')].map(function (item) {\n        if (item && val === '') {\n          val = item;\n        }\n      });\n\n      if (val instanceof _ColorItem2.default) {\n        val = this.getFormattedColor(val.string(this.colorpicker.format));\n      } else if (!(typeof val === 'string' || val instanceof String)) {\n        val = '';\n      }\n\n      this.input.prop('value', val);\n    }\n\n    /**\n     * Returns the color string from the input value.\n     * If there is no input the return value is false.\n     *\n     * @returns {String|boolean}\n     */\n\n  }, {\n    key: 'getValue',\n    value: function getValue() {\n      if (!this.hasInput()) {\n        return false;\n      }\n\n      return this.input.val();\n    }\n\n    /**\n     * If the input element is present, it updates the value with the current color object color string.\n     * If the value is changed, this method fires a \"change\" event on the input element.\n     *\n     * @param {String} val\n     *\n     * @fires Colorpicker#change\n     */\n\n  }, {\n    key: 'setValue',\n    value: function setValue(val) {\n      if (!this.hasInput()) {\n        return;\n      }\n\n      var inputVal = this.input.prop('value');\n\n      val = val ? val : '';\n\n      if (val === (inputVal ? inputVal : '')) {\n        // No need to set value or trigger any event if nothing changed\n        return;\n      }\n\n      this.input.prop('value', val);\n\n      /**\n       * (Input) Triggered on the input element when a new color is selected.\n       *\n       * @event Colorpicker#change\n       */\n      this.input.trigger({\n        type: 'change',\n        colorpicker: this.colorpicker,\n        color: this.colorpicker.color,\n        value: val\n      });\n    }\n\n    /**\n     * Returns the formatted color string, with the formatting options applied\n     * (e.g. useHashPrefix)\n     *\n     * @param {String|null} val\n     *\n     * @returns {String}\n     */\n\n  }, {\n    key: 'getFormattedColor',\n    value: function getFormattedColor() {\n      var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n      val = val ? val : this.colorpicker.colorHandler.getColorString();\n\n      if (!val) {\n        return '';\n      }\n\n      val = this.colorpicker.colorHandler.resolveColorDelegate(val, false);\n\n      if (this.colorpicker.options.useHashPrefix === false) {\n        val = val.replace(/^#/g, '');\n      }\n\n      return val;\n    }\n\n    /**\n     * Returns true if the widget has an associated input element, false otherwise\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'hasInput',\n    value: function hasInput() {\n      return this.input !== false;\n    }\n\n    /**\n     * Returns true if the input exists and is disabled\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isEnabled',\n    value: function isEnabled() {\n      return this.hasInput() && !this.isDisabled();\n    }\n\n    /**\n     * Returns true if the input exists and is disabled\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isDisabled',\n    value: function isDisabled() {\n      return this.hasInput() && this.input.prop('disabled') === true;\n    }\n\n    /**\n     * Disables the input if any\n     *\n     * @fires Colorpicker#colorpickerDisable\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'disable',\n    value: function disable() {\n      if (this.hasInput()) {\n        this.input.prop('disabled', true);\n      }\n    }\n\n    /**\n     * Enables the input if any\n     *\n     * @fires Colorpicker#colorpickerEnable\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'enable',\n    value: function enable() {\n      if (this.hasInput()) {\n        this.input.prop('disabled', false);\n      }\n    }\n\n    /**\n     * Calls setValue with the current internal color value\n     *\n     * @fires Colorpicker#change\n     */\n\n  }, {\n    key: 'update',\n    value: function update() {\n      if (!this.hasInput()) {\n        return;\n      }\n\n      if (this.colorpicker.options.autoInputFallback === false && this.colorpicker.colorHandler.isInvalidColor()) {\n        // prevent update if color is invalid, autoInputFallback is disabled and the last event is keyup.\n        return;\n      }\n\n      this.setValue(this.getFormattedColor());\n    }\n\n    /**\n     * Function triggered when the input has changed, so the colorpicker gets updated.\n     *\n     * @private\n     * @param {Event} e\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'onchange',\n    value: function onchange(e) {\n      this.colorpicker.lastEvent.alias = 'input.change';\n      this.colorpicker.lastEvent.e = e;\n\n      var val = this.getValue();\n\n      if (val !== e.value) {\n        this.colorpicker.setValue(val);\n      }\n    }\n\n    /**\n     * Function triggered after a keyboard key has been released.\n     *\n     * @private\n     * @param {Event} e\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'onkeyup',\n    value: function onkeyup(e) {\n      this.colorpicker.lastEvent.alias = 'input.keyup';\n      this.colorpicker.lastEvent.e = e;\n\n      var val = this.getValue();\n\n      if (val !== e.value) {\n        this.colorpicker.setValue(val);\n      }\n    }\n  }]);\n\n  return InputHandler;\n}();\n\nexports.default = InputHandler;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar colorString = __webpack_require__(17);\nvar convert = __webpack_require__(20);\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* MIT license */\nvar colorNames = __webpack_require__(5);\nvar swizzle = __webpack_require__(18);\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (colorNames.hasOwnProperty(name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar keyword = /(\\D+)/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\n\t\tif (!rgb) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d*\\.)?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = (parseFloat(match[1]) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d*[\\.]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = num.toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isArrayish = __webpack_require__(19);\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function isArrayish(obj) {\n\tif (!obj) {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && obj.splice instanceof Function);\n};\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar conversions = __webpack_require__(6);\nvar route = __webpack_require__(21);\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar conversions = __webpack_require__(6);\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _ColorItem = __webpack_require__(2);\n\nvar _ColorItem2 = _interopRequireDefault(_ColorItem);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Handles everything related to the colorpicker color\n * @ignore\n */\nvar ColorHandler = function () {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  function ColorHandler(colorpicker) {\n    _classCallCheck(this, ColorHandler);\n\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n  }\n\n  /**\n   * @returns {*|String|ColorItem}\n   */\n\n\n  _createClass(ColorHandler, [{\n    key: 'bind',\n    value: function bind() {\n      // if the color option is set\n      if (this.colorpicker.options.color) {\n        this.color = this.createColor(this.colorpicker.options.color);\n        return;\n      }\n\n      // if element[color] is empty and the input has a value\n      if (!this.color && !!this.colorpicker.inputHandler.getValue()) {\n        this.color = this.createColor(this.colorpicker.inputHandler.getValue(), this.colorpicker.options.autoInputFallback);\n      }\n    }\n  }, {\n    key: 'unbind',\n    value: function unbind() {\n      this.colorpicker.element.removeData('color');\n    }\n\n    /**\n     * Returns the color string from the input value or the 'data-color' attribute of the input or element.\n     * If empty, it returns the defaultValue parameter.\n     *\n     * @returns {String|*}\n     */\n\n  }, {\n    key: 'getColorString',\n    value: function getColorString() {\n      if (!this.hasColor()) {\n        return '';\n      }\n\n      return this.color.string(this.format);\n    }\n\n    /**\n     * Sets the color value\n     *\n     * @param {String|ColorItem} val\n     */\n\n  }, {\n    key: 'setColorString',\n    value: function setColorString(val) {\n      var color = val ? this.createColor(val) : null;\n\n      this.color = color ? color : null;\n    }\n\n    /**\n     * Creates a new color using the widget instance options (fallbackColor, format).\n     *\n     * @fires Colorpicker#colorpickerInvalid\n     * @param {*} val\n     * @param {boolean} fallbackOnInvalid\n     * @returns {ColorItem}\n     */\n\n  }, {\n    key: 'createColor',\n    value: function createColor(val) {\n      var fallbackOnInvalid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n      var color = new _ColorItem2.default(this.resolveColorDelegate(val), this.format);\n\n      if (!color.isValid()) {\n        if (fallbackOnInvalid) {\n          color = this.getFallbackColor();\n        }\n\n        /**\n         * (Colorpicker) Fired when the color is invalid and the fallback color is going to be used.\n         *\n         * @event Colorpicker#colorpickerInvalid\n         */\n        this.colorpicker.trigger('colorpickerInvalid', color, val);\n      }\n\n      if (!this.isAlphaEnabled()) {\n        // Alpha is disabled\n        color.alpha = 1;\n      }\n\n      return color;\n    }\n  }, {\n    key: 'getFallbackColor',\n    value: function getFallbackColor() {\n      if (this.fallback && this.fallback === this.color) {\n        return this.color;\n      }\n\n      var fallback = this.resolveColorDelegate(this.fallback);\n\n      var color = new _ColorItem2.default(fallback, this.format);\n\n      if (!color.isValid()) {\n        console.warn('The fallback color is invalid. Falling back to the previous color or black if any.');\n        return this.color ? this.color : new _ColorItem2.default('#000000', this.format);\n      }\n\n      return color;\n    }\n\n    /**\n     * @returns {ColorItem}\n     */\n\n  }, {\n    key: 'assureColor',\n    value: function assureColor() {\n      if (!this.hasColor()) {\n        this.color = this.getFallbackColor();\n      }\n\n      return this.color;\n    }\n\n    /**\n     * Delegates the color resolution to the colorpicker extensions.\n     *\n     * @param {String|*} color\n     * @param {boolean} realColor if true, the color should resolve into a real (not named) color code\n     * @returns {ColorItem|String|*|null}\n     */\n\n  }, {\n    key: 'resolveColorDelegate',\n    value: function resolveColorDelegate(color) {\n      var realColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n      var extResolvedColor = false;\n\n      _jquery2.default.each(this.colorpicker.extensions, function (name, ext) {\n        if (extResolvedColor !== false) {\n          // skip if resolved\n          return;\n        }\n        extResolvedColor = ext.resolveColor(color, realColor);\n      });\n\n      return extResolvedColor ? extResolvedColor : color;\n    }\n\n    /**\n     * Checks if there is a color object, that it is valid and it is not a fallback\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isInvalidColor',\n    value: function isInvalidColor() {\n      return !this.hasColor() || !this.color.isValid();\n    }\n\n    /**\n     * Returns true if the useAlpha option is exactly true, false otherwise\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'isAlphaEnabled',\n    value: function isAlphaEnabled() {\n      return this.colorpicker.options.useAlpha !== false;\n    }\n\n    /**\n     * Returns true if the current color object is an instance of Color, false otherwise.\n     * @returns {boolean}\n     */\n\n  }, {\n    key: 'hasColor',\n    value: function hasColor() {\n      return this.color instanceof _ColorItem2.default;\n    }\n  }, {\n    key: 'fallback',\n    get: function get() {\n      return this.colorpicker.options.fallbackColor ? this.colorpicker.options.fallbackColor : this.hasColor() ? this.color : null;\n    }\n\n    /**\n     * @returns {String|null}\n     */\n\n  }, {\n    key: 'format',\n    get: function get() {\n      if (this.colorpicker.options.format) {\n        return this.colorpicker.options.format;\n      }\n\n      if (this.hasColor() && this.color.hasTransparency() && this.color.format.match(/^hex/)) {\n        return this.isAlphaEnabled() ? 'rgba' : 'hex';\n      }\n\n      if (this.hasColor()) {\n        return this.color.format;\n      }\n\n      return 'rgb';\n    }\n\n    /**\n     * Internal color getter\n     *\n     * @type {ColorItem|null}\n     */\n\n  }, {\n    key: 'color',\n    get: function get() {\n      return this.colorpicker.element.data('color');\n    }\n\n    /**\n     * Internal color setter\n     *\n     * @ignore\n     * @param {ColorItem|null} value\n     */\n    ,\n    set: function set(value) {\n      this.colorpicker.element.data('color', value);\n\n      if (value instanceof _ColorItem2.default && this.colorpicker.options.format === 'auto') {\n        // If format is 'auto', use the first parsed one from now on\n        this.colorpicker.options.format = this.color.format;\n      }\n    }\n  }]);\n\n  return ColorHandler;\n}();\n\nexports.default = ColorHandler;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Handles everything related to the colorpicker UI\n * @ignore\n */\nvar PickerHandler = function () {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  function PickerHandler(colorpicker) {\n    _classCallCheck(this, PickerHandler);\n\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {jQuery}\n     */\n    this.picker = null;\n  }\n\n  _createClass(PickerHandler, [{\n    key: 'bind',\n    value: function bind() {\n      /**\n       * @type {jQuery|HTMLElement}\n       */\n      var picker = this.picker = (0, _jquery2.default)(this.options.template);\n\n      if (this.options.customClass) {\n        picker.addClass(this.options.customClass);\n      }\n\n      if (this.options.horizontal) {\n        picker.addClass('colorpicker-horizontal');\n      }\n\n      if (this._supportsAlphaBar()) {\n        this.options.useAlpha = true;\n        picker.addClass('colorpicker-with-alpha');\n      } else {\n        this.options.useAlpha = false;\n      }\n    }\n  }, {\n    key: 'attach',\n    value: function attach() {\n      // Inject the colorpicker element into the DOM\n      var pickerParent = this.colorpicker.container ? this.colorpicker.container : null;\n\n      if (pickerParent) {\n        this.picker.appendTo(pickerParent);\n      }\n    }\n  }, {\n    key: 'unbind',\n    value: function unbind() {\n      this.picker.remove();\n    }\n  }, {\n    key: '_supportsAlphaBar',\n    value: function _supportsAlphaBar() {\n      return (this.options.useAlpha || this.colorpicker.colorHandler.hasColor() && this.color.hasTransparency()) && this.options.useAlpha !== false && (!this.options.format || this.options.format && !this.options.format.match(/^hex([36])?$/i));\n    }\n\n    /**\n     * Changes the color adjustment bars using the current color object information.\n     */\n\n  }, {\n    key: 'update',\n    value: function update() {\n      if (!this.colorpicker.colorHandler.hasColor()) {\n        return;\n      }\n\n      var vertical = this.options.horizontal !== true,\n          slider = vertical ? this.options.sliders : this.options.slidersHorz;\n\n      var saturationGuide = this.picker.find('.colorpicker-saturation .colorpicker-guide'),\n          hueGuide = this.picker.find('.colorpicker-hue .colorpicker-guide'),\n          alphaGuide = this.picker.find('.colorpicker-alpha .colorpicker-guide');\n\n      var hsva = this.color.toHsvaRatio();\n\n      // Set guides position\n      if (hueGuide.length) {\n        hueGuide.css(vertical ? 'top' : 'left', (vertical ? slider.hue.maxTop : slider.hue.maxLeft) * (1 - hsva.h));\n      }\n      if (alphaGuide.length) {\n        alphaGuide.css(vertical ? 'top' : 'left', (vertical ? slider.alpha.maxTop : slider.alpha.maxLeft) * (1 - hsva.a));\n      }\n      if (saturationGuide.length) {\n        saturationGuide.css({\n          'top': slider.saturation.maxTop - hsva.v * slider.saturation.maxTop,\n          'left': hsva.s * slider.saturation.maxLeft\n        });\n      }\n\n      // Set saturation hue background\n      this.picker.find('.colorpicker-saturation').css('backgroundColor', this.color.getCloneHueOnly().toHexString()); // we only need hue\n\n      // Set alpha color gradient\n      var hexColor = this.color.toHexString();\n\n      var alphaBg = '';\n\n      if (this.options.horizontal) {\n        alphaBg = 'linear-gradient(to right, ' + hexColor + ' 0%, transparent 100%)';\n      } else {\n        alphaBg = 'linear-gradient(to bottom, ' + hexColor + ' 0%, transparent 100%)';\n      }\n\n      this.picker.find('.colorpicker-alpha-color').css('background', alphaBg);\n    }\n  }, {\n    key: 'options',\n    get: function get() {\n      return this.colorpicker.options;\n    }\n  }, {\n    key: 'color',\n    get: function get() {\n      return this.colorpicker.colorHandler.color;\n    }\n  }]);\n\n  return PickerHandler;\n}();\n\nexports.default = PickerHandler;\nmodule.exports = exports.default;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Handles everything related to the colorpicker addon\n * @ignore\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar AddonHandler = function () {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  function AddonHandler(colorpicker) {\n    _classCallCheck(this, AddonHandler);\n\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {jQuery}\n     */\n    this.addon = null;\n  }\n\n  _createClass(AddonHandler, [{\n    key: 'hasAddon',\n    value: function hasAddon() {\n      return !!this.addon;\n    }\n  }, {\n    key: 'bind',\n    value: function bind() {\n      /**\n       * @type {*|jQuery}\n       */\n      this.addon = this.colorpicker.options.addon ? this.colorpicker.element.find(this.colorpicker.options.addon) : null;\n\n      if (this.addon && this.addon.length === 0) {\n        // not found\n        this.addon = null;\n      }\n    }\n  }, {\n    key: 'unbind',\n    value: function unbind() {\n      if (this.hasAddon()) {\n        this.addon.off('.colorpicker');\n      }\n    }\n\n    /**\n     * If the addon element is present, its background color is updated\n     */\n\n  }, {\n    key: 'update',\n    value: function update() {\n      if (!this.colorpicker.colorHandler.hasColor() || !this.hasAddon()) {\n        return;\n      }\n\n      var colorStr = this.colorpicker.colorHandler.getColorString();\n\n      var styles = { 'background': colorStr };\n\n      var icn = this.addon.find('i').eq(0);\n\n      if (icn.length > 0) {\n        icn.css(styles);\n      } else {\n        this.addon.css(styles);\n      }\n    }\n  }]);\n\n  return AddonHandler;\n}();\n\nexports.default = AddonHandler;\nmodule.exports = exports.default;\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=bootstrap-colorpicker.js.map"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.css",
    "content": "/*!\n * Datetimepicker for Bootstrap 3\n * version : 4.17.47\n * https://github.com/Eonasdan/bootstrap-datetimepicker/\n */\n.bootstrap-datetimepicker-widget {\n  list-style: none;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu {\n  display: block;\n  margin: 2px 0;\n  padding: 4px;\n  width: 19em;\n}\n@media (min-width: 576px) {\n  .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {\n    width: 38em;\n  }\n}\n@media (min-width: 768px) {\n  .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {\n    width: 38em;\n  }\n}\n@media (min-width: 992px) {\n  .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {\n    width: 38em;\n  }\n}\n.bootstrap-datetimepicker-widget.dropdown-menu:before,\n.bootstrap-datetimepicker-widget.dropdown-menu:after {\n  content: '';\n  display: inline-block;\n  position: absolute;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before {\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  top: -7px;\n  left: 7px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after {\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid white;\n  top: -6px;\n  left: 8px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.top:before {\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-top: 7px solid #ccc;\n  border-top-color: rgba(0, 0, 0, 0.2);\n  bottom: -7px;\n  left: 6px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.top:after {\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-top: 6px solid white;\n  bottom: -6px;\n  left: 7px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before {\n  left: auto;\n  right: 6px;\n}\n.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after {\n  left: auto;\n  right: 7px;\n}\n.bootstrap-datetimepicker-widget .list-unstyled {\n  margin: 0;\n}\n.bootstrap-datetimepicker-widget a[data-action] {\n  padding: 6px 0;\n}\n.bootstrap-datetimepicker-widget a[data-action]:active {\n  box-shadow: none;\n}\n.bootstrap-datetimepicker-widget .timepicker-hour,\n.bootstrap-datetimepicker-widget .timepicker-minute,\n.bootstrap-datetimepicker-widget .timepicker-second {\n  width: 54px;\n  font-weight: bold;\n  font-size: 1.2em;\n  margin: 0;\n}\n.bootstrap-datetimepicker-widget button[data-action] {\n  padding: 6px;\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"incrementHours\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Increment Hours\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"incrementMinutes\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Increment Minutes\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"decrementHours\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Decrement Hours\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"decrementMinutes\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Decrement Minutes\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"showHours\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Show Hours\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"showMinutes\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Show Minutes\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"togglePeriod\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Toggle AM/PM\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"clear\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Clear the picker\";\n}\n.bootstrap-datetimepicker-widget .btn[data-action=\"today\"]::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Set the date to today\";\n}\n.bootstrap-datetimepicker-widget .picker-switch {\n  text-align: center;\n}\n.bootstrap-datetimepicker-widget .picker-switch::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Toggle Date and Time Screens\";\n}\n.bootstrap-datetimepicker-widget .picker-switch td {\n  padding: 0;\n  margin: 0;\n  height: auto;\n  width: auto;\n  line-height: inherit;\n}\n.bootstrap-datetimepicker-widget .picker-switch td span,\n.bootstrap-datetimepicker-widget .picker-switch td i {\n  line-height: 2.5;\n  height: 2.5em;\n  width: 100%;\n}\n.bootstrap-datetimepicker-widget table {\n  width: 100%;\n  margin: 0;\n}\n.bootstrap-datetimepicker-widget table td,\n.bootstrap-datetimepicker-widget table th {\n  text-align: center;\n  border-radius: 0.25rem;\n  padding: 0.5em;\n}\n.bootstrap-datetimepicker-widget table th {\n  height: 20px;\n  line-height: 20px;\n  width: 20px;\n}\n.bootstrap-datetimepicker-widget table th.picker-switch {\n  width: 145px;\n}\n.bootstrap-datetimepicker-widget table th.disabled,\n.bootstrap-datetimepicker-widget table th.disabled:hover {\n  background: none;\n  color: #dee2e6;\n  cursor: not-allowed;\n}\n.bootstrap-datetimepicker-widget table th.prev::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Previous Month\";\n}\n.bootstrap-datetimepicker-widget table th.next::after {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n  content: \"Next Month\";\n}\n.bootstrap-datetimepicker-widget table thead tr:first-child th {\n  cursor: pointer;\n}\n.bootstrap-datetimepicker-widget table thead tr:first-child th:hover {\n  background: #f8f9fa;\n}\n.bootstrap-datetimepicker-widget table td {\n  height: 54px;\n  line-height: 54px;\n  width: 54px;\n}\n.bootstrap-datetimepicker-widget table td.cw {\n  font-size: .8em;\n  height: 20px;\n  line-height: 20px;\n  color: #dee2e6;\n}\n.bootstrap-datetimepicker-widget table td.day {\n  height: 20px;\n  line-height: 20px;\n  width: 20px;\n}\n.bootstrap-datetimepicker-widget table td.day:hover,\n.bootstrap-datetimepicker-widget table td.hour:hover,\n.bootstrap-datetimepicker-widget table td.minute:hover,\n.bootstrap-datetimepicker-widget table td.second:hover {\n  background: #f8f9fa;\n  cursor: pointer;\n}\n.bootstrap-datetimepicker-widget table td.old,\n.bootstrap-datetimepicker-widget table td.new {\n  color: #dee2e6;\n}\n.bootstrap-datetimepicker-widget table td.today {\n  position: relative;\n}\n.bootstrap-datetimepicker-widget table td.today:before {\n  content: '';\n  display: inline-block;\n  border: solid transparent;\n  border-width: 0 0 7px 7px;\n  border-bottom-color: #dee2e6;\n  border-top-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n  bottom: 4px;\n  right: 4px;\n}\n.bootstrap-datetimepicker-widget table td.active,\n.bootstrap-datetimepicker-widget table td.active:hover {\n  background-color: #dee2e6;\n  color: #007bff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.bootstrap-datetimepicker-widget table td.active.today:before {\n  border-bottom-color: #fff;\n}\n.bootstrap-datetimepicker-widget table td.disabled,\n.bootstrap-datetimepicker-widget table td.disabled:hover {\n  background: none;\n  color: #dee2e6;\n  cursor: not-allowed;\n}\n.bootstrap-datetimepicker-widget table td span,\n.bootstrap-datetimepicker-widget table td i {\n  display: inline-block;\n  width: 54px;\n  height: 54px;\n  line-height: 54px;\n  margin: 2px 1.5px;\n  cursor: pointer;\n  border-radius: 0.25rem;\n}\n.bootstrap-datetimepicker-widget table td span:hover,\n.bootstrap-datetimepicker-widget table td i:hover {\n  background: #f8f9fa;\n}\n.bootstrap-datetimepicker-widget table td span.active,\n.bootstrap-datetimepicker-widget table td i.active {\n  background-color: #dee2e6;\n  color: #007bff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.bootstrap-datetimepicker-widget table td span.old,\n.bootstrap-datetimepicker-widget table td i.old {\n  color: #dee2e6;\n}\n.bootstrap-datetimepicker-widget table td span.disabled,\n.bootstrap-datetimepicker-widget table td i.disabled,\n.bootstrap-datetimepicker-widget table td span.disabled:hover,\n.bootstrap-datetimepicker-widget table td i.disabled:hover {\n  background: none;\n  color: #dee2e6;\n  cursor: not-allowed;\n}\n.bootstrap-datetimepicker-widget.usetwentyfour td.hour {\n  height: 27px;\n  line-height: 27px;\n}\n.bootstrap-datetimepicker-widget.wider {\n  width: 21em;\n}\n.bootstrap-datetimepicker-widget .datepicker-decades .decade {\n  line-height: 1.8em !important;\n}\n.input-group.date .input-group-addon {\n  cursor: pointer;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/.editorconfig",
    "content": "# This file is for unifying the coding style for different editors and IDEs\n# editorconfig.org\n\nroot = true\n\n[*]\nindent_style = space\nindent_size = 2\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\n\n[*.md]\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/.jshintrc",
    "content": "{\n  \"boss\": true,\n  \"curly\": true,\n  \"eqeqeq\": true,\n  \"eqnull\": true,\n  \"expr\": true,\n  \"immed\": true,\n  \"noarg\": true,\n  \"onevar\": false,\n  \"quotmark\": \"single\",\n  \"smarttabs\": true,\n  \"trailing\": true,\n  \"unused\": true,\n  \"node\": true,\n  \"globals\": {\n    \"$\": true,\n    \"jQuery\": true\n  }\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/.travis.yml",
    "content": "language: node_js\nnode_js:\n  - 0.10\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/dist/bootstrap-duallistbox.css",
    "content": "/*\n *  Bootstrap Duallistbox - v3.0.7\n *  A responsive dual listbox widget optimized for Twitter Bootstrap. It works on all modern browsers and on touch devices.\n *  https://www.virtuosoft.eu/code/bootstrap-duallistbox/\n *\n *  Made by István Ujj-Mészáros\n *  Under Apache License v2.0 License\n */\n.bootstrap-duallistbox-container .buttons {\n  width: 100%;\n  margin-bottom: -1px;\n}\n\n.bootstrap-duallistbox-container label {\n  display: block;\n}\n\n.bootstrap-duallistbox-container .info {\n  display: inline-block;\n  margin-bottom: 5px;\n  font-size: 11px;\n}\n\n.bootstrap-duallistbox-container .clear1,\n.bootstrap-duallistbox-container .clear2 {\n  display: none;\n  font-size: 10px;\n}\n\n.bootstrap-duallistbox-container .box1.filtered .clear1,\n.bootstrap-duallistbox-container .box2.filtered .clear2 {\n  display: inline-block;\n}\n\n.bootstrap-duallistbox-container .move,\n.bootstrap-duallistbox-container .remove {\n  width: 60%;\n}\n\n.bootstrap-duallistbox-container .btn-group .btn {\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.bootstrap-duallistbox-container select {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.bootstrap-duallistbox-container .moveall,\n.bootstrap-duallistbox-container .removeall {\n  width: 40%;\n}\n\n.bootstrap-duallistbox-container.bs2compatible .btn-group > .btn + .btn {\n  margin-left: 0;\n}\n\n.bootstrap-duallistbox-container select {\n  width: 100%;\n  height: 300px;\n  padding: 0;\n}\n\n.bootstrap-duallistbox-container .filter {\n  display: inline-block;\n  width: 100%;\n  height: 31px;\n  margin: 0 0 5px 0;\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n\n.bootstrap-duallistbox-container .filter.placeholder {\n  color: #aaa;\n}\n\n.bootstrap-duallistbox-container.moveonselect .move,\n.bootstrap-duallistbox-container.moveonselect .remove {\n  display:none;\n}\n\n.bootstrap-duallistbox-container.moveonselect .moveall,\n.bootstrap-duallistbox-container.moveonselect .removeall {\n  width: 100%;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/dist/jquery.bootstrap-duallistbox.js",
    "content": "/*\n *  Bootstrap Duallistbox - v3.0.7\n *  A responsive dual listbox widget optimized for Twitter Bootstrap. It works on all modern browsers and on touch devices.\n *  https://www.virtuosoft.eu/code/bootstrap-duallistbox/\n *\n *  Made by István Ujj-Mészáros\n *  Under Apache License v2.0 License\n */\n;(function ($, window, document, undefined) {\n  // Create the defaults once\n  var pluginName = 'bootstrapDualListbox',\n    defaults = {\n      bootstrap2Compatible: false,\n      filterTextClear: 'show all',\n      filterPlaceHolder: 'Filter',\n      moveSelectedLabel: 'Move selected',\n      moveAllLabel: 'Move all',\n      removeSelectedLabel: 'Remove selected',\n      removeAllLabel: 'Remove all',\n      moveOnSelect: true,                                                                 // true/false (forced true on androids, see the comment later)\n      moveOnDoubleClick: true,                                                            // true/false (forced false on androids, cause moveOnSelect is forced to true)\n      preserveSelectionOnMove: false,                                                     // 'all' / 'moved' / false\n      selectedListLabel: false,                                                           // 'string', false\n      nonSelectedListLabel: false,                                                        // 'string', false\n      helperSelectNamePostfix: '_helper',                                                 // 'string_of_postfix' / false\n      selectorMinimalHeight: 100,\n      showFilterInputs: true,                                                             // whether to show filter inputs\n      nonSelectedFilter: '',                                                              // string, filter the non selected options\n      selectedFilter: '',                                                                 // string, filter the selected options\n      infoText: 'Showing all {0}',                                                        // text when all options are visible / false for no info text\n      infoTextFiltered: '<span class=\"label label-warning\">Filtered</span> {0} from {1}', // when not all of the options are visible due to the filter\n      infoTextEmpty: 'Empty list',                                                        // when there are no options present in the list\n      filterOnValues: false,                                                              // filter by selector's values, boolean\n      sortByInputOrder: false,\n      eventMoveOverride: false,                                                           // boolean, allows user to unbind default event behaviour and run their own instead\n      eventMoveAllOverride: false,                                                        // boolean, allows user to unbind default event behaviour and run their own instead\n      eventRemoveOverride: false,                                                         // boolean, allows user to unbind default event behaviour and run their own instead\n      eventRemoveAllOverride: false                                                       // boolean, allows user to unbind default event behaviour and run their own instead\n    },\n    // Selections are invisible on android if the containing select is styled with CSS\n    // http://code.google.com/p/android/issues/detail?id=16922\n    isBuggyAndroid = /android/i.test(navigator.userAgent.toLowerCase());\n\n  // The actual plugin constructor\n  function BootstrapDualListbox(element, options) {\n    this.element = $(element);\n    // jQuery has an extend method which merges the contents of two or\n    // more objects, storing the result in the first object. The first object\n    // is generally empty as we don't want to alter the default options for\n    // future instances of the plugin\n    this.settings = $.extend({}, defaults, options);\n    this._defaults = defaults;\n    this._name = pluginName;\n    this.init();\n  }\n\n  function triggerChangeEvent(dualListbox) {\n    dualListbox.element.trigger('change');\n  }\n\n  function updateSelectionStates(dualListbox) {\n    dualListbox.element.find('option').each(function(index, item) {\n      var $item = $(item);\n      if (typeof($item.data('original-index')) === 'undefined') {\n        $item.data('original-index', dualListbox.elementCount++);\n      }\n      if (typeof($item.data('_selected')) === 'undefined') {\n        $item.data('_selected', false);\n      }\n    });\n  }\n\n  function changeSelectionState(dualListbox, original_index, selected) {\n    dualListbox.element.find('option').each(function(index, item) {\n      var $item = $(item);\n      if ($item.data('original-index') === original_index) {\n        $item.prop('selected', selected);\n        if(selected){\n          $item.attr('data-sortindex', dualListbox.sortIndex);\n          dualListbox.sortIndex++;\n        } else {\n          $item.removeAttr('data-sortindex');\n        }\n      }\n    });\n  }\n\n  function formatString(s, args) {\n    return s.replace(/\\{(\\d+)\\}/g, function(match, number) {\n      return typeof args[number] !== 'undefined' ? args[number] : match;\n    });\n  }\n\n  function refreshInfo(dualListbox) {\n    if (!dualListbox.settings.infoText) {\n      return;\n    }\n\n    var visible1 = dualListbox.elements.select1.find('option').length,\n      visible2 = dualListbox.elements.select2.find('option').length,\n      all1 = dualListbox.element.find('option').length - dualListbox.selectedElements,\n      all2 = dualListbox.selectedElements,\n      content = '';\n\n    if (all1 === 0) {\n      content = dualListbox.settings.infoTextEmpty;\n    } else if (visible1 === all1) {\n      content = formatString(dualListbox.settings.infoText, [visible1, all1]);\n    } else {\n      content = formatString(dualListbox.settings.infoTextFiltered, [visible1, all1]);\n    }\n\n    dualListbox.elements.info1.html(content);\n    dualListbox.elements.box1.toggleClass('filtered', !(visible1 === all1 || all1 === 0));\n\n    if (all2 === 0) {\n      content = dualListbox.settings.infoTextEmpty;\n    } else if (visible2 === all2) {\n      content = formatString(dualListbox.settings.infoText, [visible2, all2]);\n    } else {\n      content = formatString(dualListbox.settings.infoTextFiltered, [visible2, all2]);\n    }\n\n    dualListbox.elements.info2.html(content);\n    dualListbox.elements.box2.toggleClass('filtered', !(visible2 === all2 || all2 === 0));\n  }\n\n  function refreshSelects(dualListbox) {\n    dualListbox.selectedElements = 0;\n\n    dualListbox.elements.select1.empty();\n    dualListbox.elements.select2.empty();\n\n    dualListbox.element.find('option').each(function(index, item) {\n      var $item = $(item);\n      if ($item.prop('selected')) {\n        dualListbox.selectedElements++;\n        dualListbox.elements.select2.append($item.clone(true).prop('selected', $item.data('_selected')));\n      } else {\n        dualListbox.elements.select1.append($item.clone(true).prop('selected', $item.data('_selected')));\n      }\n    });\n\n    if (dualListbox.settings.showFilterInputs) {\n      filter(dualListbox, 1);\n      filter(dualListbox, 2);\n    }\n    refreshInfo(dualListbox);\n  }\n\n  function filter(dualListbox, selectIndex) {\n    if (!dualListbox.settings.showFilterInputs) {\n      return;\n    }\n\n    saveSelections(dualListbox, selectIndex);\n\n    dualListbox.elements['select'+selectIndex].empty().scrollTop(0);\n    var regex = new RegExp($.trim(dualListbox.elements['filterInput'+selectIndex].val()), 'gi'),\n      allOptions = dualListbox.element.find('option'),\n      options = dualListbox.element;\n\n    if (selectIndex === 1) {\n      options = allOptions.not(':selected');\n    } else  {\n      options = options.find('option:selected');\n    }\n\n    options.each(function(index, item) {\n      var $item = $(item),\n        isFiltered = true;\n      if (item.text.match(regex) || (dualListbox.settings.filterOnValues && $item.attr('value').match(regex) ) ) {\n        isFiltered = false;\n        dualListbox.elements['select'+selectIndex].append($item.clone(true).prop('selected', $item.data('_selected')));\n      }\n      allOptions.eq($item.data('original-index')).data('filtered'+selectIndex, isFiltered);\n    });\n\n    refreshInfo(dualListbox);\n  }\n\n  function saveSelections(dualListbox, selectIndex) {\n    var options = dualListbox.element.find('option');\n    dualListbox.elements['select'+selectIndex].find('option').each(function(index, item) {\n      var $item = $(item);\n      options.eq($item.data('original-index')).data('_selected', $item.prop('selected'));\n    });\n  }\n\n  function sortOptionsByInputOrder(select){\n    var selectopt = select.children('option');\n\n    selectopt.sort(function(a,b){\n      var an = parseInt(a.getAttribute('data-sortindex')),\n          bn = parseInt(b.getAttribute('data-sortindex'));\n\n          if(an > bn) {\n             return 1;\n          }\n          if(an < bn) {\n            return -1;\n          }\n          return 0;\n    });\n\n    selectopt.detach().appendTo(select);\n  }\n\n  function sortOptions(select) {\n    select.find('option').sort(function(a, b) {\n      return ($(a).data('original-index') > $(b).data('original-index')) ? 1 : -1;\n    }).appendTo(select);\n  }\n\n  function clearSelections(dualListbox) {\n    dualListbox.elements.select1.find('option').each(function() {\n      dualListbox.element.find('option').data('_selected', false);\n    });\n  }\n\n  function move(dualListbox) {\n    if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {\n      saveSelections(dualListbox, 1);\n      saveSelections(dualListbox, 2);\n    } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {\n      saveSelections(dualListbox, 1);\n    }\n\n    dualListbox.elements.select1.find('option:selected').each(function(index, item) {\n      var $item = $(item);\n      if (!$item.data('filtered1')) {\n        changeSelectionState(dualListbox, $item.data('original-index'), true);\n      }\n    });\n\n    refreshSelects(dualListbox);\n    triggerChangeEvent(dualListbox);\n    if(dualListbox.settings.sortByInputOrder){\n        sortOptionsByInputOrder(dualListbox.elements.select2);\n    } else {\n        sortOptions(dualListbox.elements.select2);\n    }\n  }\n\n  function remove(dualListbox) {\n    if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {\n      saveSelections(dualListbox, 1);\n      saveSelections(dualListbox, 2);\n    } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {\n      saveSelections(dualListbox, 2);\n    }\n\n    dualListbox.elements.select2.find('option:selected').each(function(index, item) {\n      var $item = $(item);\n      if (!$item.data('filtered2')) {\n        changeSelectionState(dualListbox, $item.data('original-index'), false);\n      }\n    });\n\n    refreshSelects(dualListbox);\n    triggerChangeEvent(dualListbox);\n    sortOptions(dualListbox.elements.select1);\n    if(dualListbox.settings.sortByInputOrder){\n        sortOptionsByInputOrder(dualListbox.elements.select2);\n    }\n  }\n\n  function moveAll(dualListbox) {\n    if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {\n      saveSelections(dualListbox, 1);\n      saveSelections(dualListbox, 2);\n    } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {\n      saveSelections(dualListbox, 1);\n    }\n\n    dualListbox.element.find('option').each(function(index, item) {\n      var $item = $(item);\n      if (!$item.data('filtered1')) {\n        $item.prop('selected', true);\n        $item.attr('data-sortindex', dualListbox.sortIndex);\n        dualListbox.sortIndex++;\n      }\n    });\n\n    refreshSelects(dualListbox);\n    triggerChangeEvent(dualListbox);\n  }\n\n  function removeAll(dualListbox) {\n    if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {\n      saveSelections(dualListbox, 1);\n      saveSelections(dualListbox, 2);\n    } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {\n      saveSelections(dualListbox, 2);\n    }\n\n    dualListbox.element.find('option').each(function(index, item) {\n      var $item = $(item);\n      if (!$item.data('filtered2')) {\n        $item.prop('selected', false);\n        $item.removeAttr('data-sortindex');\n      }\n    });\n\n    refreshSelects(dualListbox);\n    triggerChangeEvent(dualListbox);\n  }\n\n  function bindEvents(dualListbox) {\n    dualListbox.elements.form.submit(function(e) {\n      if (dualListbox.elements.filterInput1.is(':focus')) {\n        e.preventDefault();\n        dualListbox.elements.filterInput1.focusout();\n      } else if (dualListbox.elements.filterInput2.is(':focus')) {\n        e.preventDefault();\n        dualListbox.elements.filterInput2.focusout();\n      }\n    });\n\n    dualListbox.element.on('bootstrapDualListbox.refresh', function(e, mustClearSelections){\n      dualListbox.refresh(mustClearSelections);\n    });\n\n    dualListbox.elements.filterClear1.on('click', function() {\n      dualListbox.setNonSelectedFilter('', true);\n    });\n\n    dualListbox.elements.filterClear2.on('click', function() {\n      dualListbox.setSelectedFilter('', true);\n    });\n\n    if (dualListbox.settings.eventMoveOverride === false) {\n      dualListbox.elements.moveButton.on('click', function() {\n        move(dualListbox);\n      });\n    }\n\n    if (dualListbox.settings.eventMoveAllOverride === false) {\n      dualListbox.elements.moveAllButton.on('click', function() {\n        moveAll(dualListbox);\n      });\n    }\n\n    if (dualListbox.settings.eventRemoveOverride === false) {\n      dualListbox.elements.removeButton.on('click', function() {\n        remove(dualListbox);\n      });\n    }\n\n    if (dualListbox.settings.eventRemoveAllOverride === false) {\n      dualListbox.elements.removeAllButton.on('click', function() {\n        removeAll(dualListbox);\n      });\n    }\n\n    dualListbox.elements.filterInput1.on('change keyup', function() {\n      filter(dualListbox, 1);\n    });\n\n    dualListbox.elements.filterInput2.on('change keyup', function() {\n      filter(dualListbox, 2);\n    });\n  }\n\n  BootstrapDualListbox.prototype = {\n    init: function () {\n      // Add the custom HTML template\n      this.container = $('' +\n        '<div class=\"bootstrap-duallistbox-container\">' +\n        ' <div class=\"box1\">' +\n        '   <label></label>' +\n        '   <span class=\"info-container\">' +\n        '     <span class=\"info\"></span>' +\n        '     <button type=\"button\" class=\"btn clear1 pull-right\"></button>' +\n        '   </span>' +\n        '   <input class=\"filter\" type=\"text\">' +\n        '   <div class=\"btn-group buttons\">' +\n        '     <button type=\"button\" class=\"btn moveall\">' +\n        '       <i></i>' +\n        '       <i></i>' +\n        '     </button>' +\n        '     <button type=\"button\" class=\"btn move\">' +\n        '       <i></i>' +\n        '     </button>' +\n        '   </div>' +\n        '   <select multiple=\"multiple\"></select>' +\n        ' </div>' +\n        ' <div class=\"box2\">' +\n        '   <label></label>' +\n        '   <span class=\"info-container\">' +\n        '     <span class=\"info\"></span>' +\n        '     <button type=\"button\" class=\"btn clear2 pull-right\"></button>' +\n        '   </span>' +\n        '   <input class=\"filter\" type=\"text\">' +\n        '   <div class=\"btn-group buttons\">' +\n        '     <button type=\"button\" class=\"btn remove\">' +\n        '       <i></i>' +\n        '     </button>' +\n        '     <button type=\"button\" class=\"btn removeall\">' +\n        '       <i></i>' +\n        '       <i></i>' +\n        '     </button>' +\n        '   </div>' +\n        '   <select multiple=\"multiple\"></select>' +\n        ' </div>' +\n        '</div>')\n        .insertBefore(this.element);\n\n      // Cache the inner elements\n      this.elements = {\n        originalSelect: this.element,\n        box1: $('.box1', this.container),\n        box2: $('.box2', this.container),\n        filterInput1: $('.box1 .filter', this.container),\n        filterInput2: $('.box2 .filter', this.container),\n        filterClear1: $('.box1 .clear1', this.container),\n        filterClear2: $('.box2 .clear2', this.container),\n        label1: $('.box1 > label', this.container),\n        label2: $('.box2 > label', this.container),\n        info1: $('.box1 .info', this.container),\n        info2: $('.box2 .info', this.container),\n        select1: $('.box1 select', this.container),\n        select2: $('.box2 select', this.container),\n        moveButton: $('.box1 .move', this.container),\n        removeButton: $('.box2 .remove', this.container),\n        moveAllButton: $('.box1 .moveall', this.container),\n        removeAllButton: $('.box2 .removeall', this.container),\n        form: $($('.box1 .filter', this.container)[0].form)\n      };\n\n      // Set select IDs\n      this.originalSelectName = this.element.attr('name') || '';\n      var select1Id = 'bootstrap-duallistbox-nonselected-list_' + this.originalSelectName,\n        select2Id = 'bootstrap-duallistbox-selected-list_' + this.originalSelectName;\n      this.elements.select1.attr('id', select1Id);\n      this.elements.select2.attr('id', select2Id);\n      this.elements.label1.attr('for', select1Id);\n      this.elements.label2.attr('for', select2Id);\n\n      // Apply all settings\n      this.selectedElements = 0;\n      this.sortIndex = 0;\n      this.elementCount = 0;\n      this.setBootstrap2Compatible(this.settings.bootstrap2Compatible);\n      this.setFilterTextClear(this.settings.filterTextClear);\n      this.setFilterPlaceHolder(this.settings.filterPlaceHolder);\n      this.setMoveSelectedLabel(this.settings.moveSelectedLabel);\n      this.setMoveAllLabel(this.settings.moveAllLabel);\n      this.setRemoveSelectedLabel(this.settings.removeSelectedLabel);\n      this.setRemoveAllLabel(this.settings.removeAllLabel);\n      this.setMoveOnSelect(this.settings.moveOnSelect);\n      this.setMoveOnDoubleClick(this.settings.moveOnDoubleClick);\n      this.setPreserveSelectionOnMove(this.settings.preserveSelectionOnMove);\n      this.setSelectedListLabel(this.settings.selectedListLabel);\n      this.setNonSelectedListLabel(this.settings.nonSelectedListLabel);\n      this.setHelperSelectNamePostfix(this.settings.helperSelectNamePostfix);\n      this.setSelectOrMinimalHeight(this.settings.selectorMinimalHeight);\n\n      updateSelectionStates(this);\n\n      this.setShowFilterInputs(this.settings.showFilterInputs);\n      this.setNonSelectedFilter(this.settings.nonSelectedFilter);\n      this.setSelectedFilter(this.settings.selectedFilter);\n      this.setInfoText(this.settings.infoText);\n      this.setInfoTextFiltered(this.settings.infoTextFiltered);\n      this.setInfoTextEmpty(this.settings.infoTextEmpty);\n      this.setFilterOnValues(this.settings.filterOnValues);\n      this.setSortByInputOrder(this.settings.sortByInputOrder);\n      this.setEventMoveOverride(this.settings.eventMoveOverride);\n      this.setEventMoveAllOverride(this.settings.eventMoveAllOverride);\n      this.setEventRemoveOverride(this.settings.eventRemoveOverride);\n      this.setEventRemoveAllOverride(this.settings.eventRemoveAllOverride);\n\n      // Hide the original select\n      this.element.hide();\n\n      bindEvents(this);\n      refreshSelects(this);\n\n      return this.element;\n    },\n    setBootstrap2Compatible: function(value, refresh) {\n      this.settings.bootstrap2Compatible = value;\n      if (value) {\n        this.container.removeClass('row').addClass('row-fluid bs2compatible');\n        this.container.find('.box1, .box2').removeClass('col-md-6').addClass('span6');\n        this.container.find('.clear1, .clear2').removeClass('btn-default btn-xs').addClass('btn-mini');\n        this.container.find('input, select').removeClass('form-control');\n        this.container.find('.btn').removeClass('btn-default');\n        this.container.find('.moveall > i, .move > i').removeClass('glyphicon glyphicon-arrow-right').addClass('icon-arrow-right');\n        this.container.find('.removeall > i, .remove > i').removeClass('glyphicon glyphicon-arrow-left').addClass('icon-arrow-left');\n      } else {\n        this.container.removeClass('row-fluid bs2compatible').addClass('row');\n        this.container.find('.box1, .box2').removeClass('span6').addClass('col-md-6');\n        this.container.find('.clear1, .clear2').removeClass('btn-mini').addClass('btn-default btn-xs');\n        this.container.find('input, select').addClass('form-control');\n        this.container.find('.btn').addClass('btn-default');\n        this.container.find('.moveall > i, .move > i').removeClass('icon-arrow-right').addClass('glyphicon glyphicon-arrow-right');\n        this.container.find('.removeall > i, .remove > i').removeClass('icon-arrow-left').addClass('glyphicon glyphicon-arrow-left');\n      }\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setFilterTextClear: function(value, refresh) {\n      this.settings.filterTextClear = value;\n      this.elements.filterClear1.html(value);\n      this.elements.filterClear2.html(value);\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setFilterPlaceHolder: function(value, refresh) {\n      this.settings.filterPlaceHolder = value;\n      this.elements.filterInput1.attr('placeholder', value);\n      this.elements.filterInput2.attr('placeholder', value);\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setMoveSelectedLabel: function(value, refresh) {\n      this.settings.moveSelectedLabel = value;\n      this.elements.moveButton.attr('title', value);\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setMoveAllLabel: function(value, refresh) {\n      this.settings.moveAllLabel = value;\n      this.elements.moveAllButton.attr('title', value);\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setRemoveSelectedLabel: function(value, refresh) {\n      this.settings.removeSelectedLabel = value;\n      this.elements.removeButton.attr('title', value);\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setRemoveAllLabel: function(value, refresh) {\n      this.settings.removeAllLabel = value;\n      this.elements.removeAllButton.attr('title', value);\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setMoveOnSelect: function(value, refresh) {\n      if (isBuggyAndroid) {\n        value = true;\n      }\n      this.settings.moveOnSelect = value;\n      if (this.settings.moveOnSelect) {\n        this.container.addClass('moveonselect');\n        var self = this;\n        this.elements.select1.on('change', function() {\n          move(self);\n        });\n        this.elements.select2.on('change', function() {\n          remove(self);\n        });\n      } else {\n        this.container.removeClass('moveonselect');\n        this.elements.select1.off('change');\n        this.elements.select2.off('change');\n      }\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setMoveOnDoubleClick: function(value, refresh) {\n      if (isBuggyAndroid) {\n        value = false;\n      }\n      this.settings.moveOnDoubleClick = value;\n      if (this.settings.moveOnDoubleClick) {\n        this.container.addClass('moveondoubleclick');\n        var self = this;\n        this.elements.select1.on('dblclick', function() {\n          move(self);\n        });\n        this.elements.select2.on('dblclick', function() {\n          remove(self);\n        });\n      } else {\n        this.container.removeClass('moveondoubleclick');\n        this.elements.select1.off('dblclick');\n        this.elements.select2.off('dblclick');\n      }\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setPreserveSelectionOnMove: function(value, refresh) {\n      // We are forcing to move on select and disabling preserveSelectionOnMove on Android\n      if (isBuggyAndroid) {\n        value = false;\n      }\n      this.settings.preserveSelectionOnMove = value;\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setSelectedListLabel: function(value, refresh) {\n      this.settings.selectedListLabel = value;\n      if (value) {\n        this.elements.label2.show().html(value);\n      } else {\n        this.elements.label2.hide().html(value);\n      }\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setNonSelectedListLabel: function(value, refresh) {\n      this.settings.nonSelectedListLabel = value;\n      if (value) {\n        this.elements.label1.show().html(value);\n      } else {\n        this.elements.label1.hide().html(value);\n      }\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setHelperSelectNamePostfix: function(value, refresh) {\n      this.settings.helperSelectNamePostfix = value;\n      if (value) {\n        this.elements.select1.attr('name', this.originalSelectName + value + '1');\n        this.elements.select2.attr('name', this.originalSelectName + value + '2');\n      } else {\n        this.elements.select1.removeAttr('name');\n        this.elements.select2.removeAttr('name');\n      }\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setSelectOrMinimalHeight: function(value, refresh) {\n      this.settings.selectorMinimalHeight = value;\n      var height = this.element.height();\n      if (this.element.height() < value) {\n        height = value;\n      }\n      this.elements.select1.height(height);\n      this.elements.select2.height(height);\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setShowFilterInputs: function(value, refresh) {\n      if (!value) {\n        this.setNonSelectedFilter('');\n        this.setSelectedFilter('');\n        refreshSelects(this);\n        this.elements.filterInput1.hide();\n        this.elements.filterInput2.hide();\n      } else {\n        this.elements.filterInput1.show();\n        this.elements.filterInput2.show();\n      }\n      this.settings.showFilterInputs = value;\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setNonSelectedFilter: function(value, refresh) {\n      if (this.settings.showFilterInputs) {\n        this.settings.nonSelectedFilter = value;\n        this.elements.filterInput1.val(value);\n        if (refresh) {\n          refreshSelects(this);\n        }\n        return this.element;\n      }\n    },\n    setSelectedFilter: function(value, refresh) {\n      if (this.settings.showFilterInputs) {\n        this.settings.selectedFilter = value;\n        this.elements.filterInput2.val(value);\n        if (refresh) {\n          refreshSelects(this);\n        }\n        return this.element;\n      }\n    },\n    setInfoText: function(value, refresh) {\n      this.settings.infoText = value;\n      if (value) {\n        this.elements.info1.show();\n        this.elements.info2.show();\n      } else {\n        this.elements.info1.hide();\n        this.elements.info2.hide();\n      }\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setInfoTextFiltered: function(value, refresh) {\n      this.settings.infoTextFiltered = value;\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setInfoTextEmpty: function(value, refresh) {\n      this.settings.infoTextEmpty = value;\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setFilterOnValues: function(value, refresh) {\n      this.settings.filterOnValues = value;\n      if (refresh) {\n        refreshSelects(this);\n      }\n      return this.element;\n    },\n    setSortByInputOrder: function(value, refresh){\n        this.settings.sortByInputOrder = value;\n        if (refresh) {\n          refreshSelects(this);\n        }\n        return this.element;\n    },\n    setEventMoveOverride: function(value, refresh) {\n        this.settings.eventMoveOverride = value;\n        if (refresh) {\n          refreshSelects(this);\n        }\n        return this.element;\n    },\n    setEventMoveAllOverride: function(value, refresh) {\n        this.settings.eventMoveAllOverride = value;\n        if (refresh) {\n          refreshSelects(this);\n        }\n        return this.element;\n    },\n    setEventRemoveOverride: function(value, refresh) {\n        this.settings.eventRemoveOverride = value;\n        if (refresh) {\n          refreshSelects(this);\n        }\n        return this.element;\n    },\n    setEventRemoveAllOverride: function(value, refresh) {\n        this.settings.eventRemoveAllOverride = value;\n        if (refresh) {\n          refreshSelects(this);\n        }\n        return this.element;\n    },\n    getContainer: function() {\n      return this.container;\n    },\n    refresh: function(mustClearSelections) {\n      updateSelectionStates(this);\n\n      if (!mustClearSelections) {\n        saveSelections(this, 1);\n        saveSelections(this, 2);\n      } else {\n        clearSelections(this);\n      }\n\n      refreshSelects(this);\n    },\n    destroy: function() {\n      this.container.remove();\n      this.element.show();\n      $.data(this, 'plugin_' + pluginName, null);\n      return this.element;\n    }\n  };\n\n  // A really lightweight plugin wrapper around the constructor,\n  // preventing against multiple instantiations\n  $.fn[ pluginName ] = function (options) {\n    var args = arguments;\n\n    // Is the first parameter an object (options), or was omitted, instantiate a new instance of the plugin.\n    if (options === undefined || typeof options === 'object') {\n      return this.each(function () {\n        // If this is not a select\n        if (!$(this).is('select')) {\n          $(this).find('select').each(function(index, item) {\n            // For each nested select, instantiate the Dual List Box\n            $(item).bootstrapDualListbox(options);\n          });\n        } else if (!$.data(this, 'plugin_' + pluginName)) {\n          // Only allow the plugin to be instantiated once so we check that the element has no plugin instantiation yet\n\n          // if it has no instance, create a new one, pass options to our plugin constructor,\n          // and store the plugin instance in the elements jQuery data object.\n          $.data(this, 'plugin_' + pluginName, new BootstrapDualListbox(this, options));\n        }\n      });\n      // If the first parameter is a string and it doesn't start with an underscore or \"contains\" the `init`-function,\n      // treat this as a call to a public method.\n    } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {\n\n      // Cache the method call to make it possible to return a value\n      var returns;\n\n      this.each(function () {\n        var instance = $.data(this, 'plugin_' + pluginName);\n        // Tests that there's already a plugin-instance and checks that the requested public method exists\n        if (instance instanceof BootstrapDualListbox && typeof instance[options] === 'function') {\n          // Call the method of our plugin instance, and pass it the supplied arguments.\n          returns = instance[options].apply(instance, Array.prototype.slice.call(args, 1));\n        }\n      });\n\n      // If the earlier cached method gives a value back return the value,\n      // otherwise return this to preserve chainability.\n      return returns !== undefined ? returns : this;\n    }\n\n  };\n\n})(jQuery, window, document);\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/bootstrap-iconpicker/css/bootstrap-iconpicker.css",
    "content": "/*!========================================================================\n* File: bootstrap-iconpicker.css v1.10.0 by @victor-valencia\n* https://victor-valencia.github.com/bootstrap-iconpicker\n* ========================================================================\n* Copyright 2013-2018 Victor Valencia Rico.\n* Licensed under MIT license.\n* https://github.com/victor-valencia/bootstrap-iconpicker/blob/master/LICENSE\n* ========================================================================\n*/\n\n.iconpicker .caret {\n    margin-left: 10px !important;\n}\n\n.iconpicker {\n    min-width: 60px;\n}\n\n.iconpicker input.search-control {\n    margin-bottom: 6px;\n    margin-top: 6px;\n}\n\ndiv.iconpicker.left .table-icons {\n    margin-right: auto;\n}\n\ndiv.iconpicker.center .table-icons {\n    margin-left: auto;\n    margin-right: auto;\n}\n\ndiv.iconpicker.right .table-icons {\n    margin-left: auto;\n}\n\n.table-icons .btn {\n    min-height: 30px;\n    min-width: 35px;\n    text-align: center;\n    padding: 0;\n    margin: 2px;\n}\n\n.table-icons td {\n    min-width: 39px;\n}\n\n.popover {\n    max-width: inherit !important;\n}\n\n.iconpicker-popover {\n  z-index: 1050 !important;\n}\n\n.iconpicker-popover .search-control {\n    margin-bottom: 6px;\n    margin-top: 6px;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/bootstrap-iconpicker/js/bootstrap-iconpicker-iconset-all.js",
    "content": "/*!========================================================================\n* File: bootstrap-iconpicker-iconset.js v1.10.0 by @victor-valencia\n* https://victor-valencia.github.com/bootstrap-iconpicker\n* ========================================================================\n* Copyright 2013-2018 Victor Valencia Rico.\n* Licensed under MIT license.\n* https://github.com/victor-valencia/bootstrap-iconpicker/blob/master/LICENSE\n* ========================================================================\n*/\n\n/*!========================================================================\n * Iconset: Elusive Icons\n * Versions: 2.0.0\n * http://elusiveicons.com/\n * ======================================================================== */\n\n;(function($){\n\n    var data = {\n        iconClass: '',\n        iconClassFix: 'el-icon-',\n        icons: [],\n        allVersions: [\n            {\n                version: '2.0.0',\n                icons: [\n                    '',\n                    'address-book',\n                    'address-book-alt',\n                    'adjust',\n                    'adjust-alt',\n                    'adult',\n                    'align-center',\n                    'align-justify',\n                    'align-left',\n                    'align-right',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-up',\n                    'asl',\n                    'asterisk',\n                    'backward',\n                    'ban-circle',\n                    'barcode',\n                    'behance',\n                    'bell',\n                    'blind',\n                    'blogger',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'bookmark-empty',\n                    'braille',\n                    'briefcase',\n                    'broom',\n                    'brush',\n                    'bulb',\n                    'bullhorn',\n                    'calendar',\n                    'calendar-sign',\n                    'camera',\n                    'car',\n                    'caret-down',\n                    'caret-left',\n                    'caret-right',\n                    'caret-up',\n                    'cc',\n                    'certificate',\n                    'check',\n                    'check-empty',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'child',\n                    'circle-arrow-down',\n                    'circle-arrow-left',\n                    'circle-arrow-right',\n                    'circle-arrow-up',\n                    'cloud',\n                    'cloud-alt',\n                    'cog',\n                    'cog-alt',\n                    'cogs',\n                    'comment',\n                    'comment-alt',\n                    'compass',\n                    'compass-alt',\n                    'credit-card',\n                    'css',\n                    'dashboard',\n                    'delicious',\n                    'deviantart',\n                    'digg',\n                    'download',\n                    'download-alt',\n                    'dribbble',\n                    'edit',\n                    'eject',\n                    'envelope',\n                    'envelope-alt',\n                    'error',\n                    'error-alt',\n                    'eur',\n                    'exclamation-sign',\n                    'eye-close',\n                    'eye-open',\n                    'facebook',\n                    'facetime-video',\n                    'fast-backward',\n                    'fast-forward',\n                    'female',\n                    'file',\n                    'file-alt',\n                    'file-edit',\n                    'file-edit-alt',\n                    'file-new',\n                    'file-new-alt',\n                    'film',\n                    'filter',\n                    'fire',\n                    'flag',\n                    'flag-alt',\n                    'flickr',\n                    'folder',\n                    'folder-close',\n                    'folder-open',\n                    'folder-sign',\n                    'font',\n                    'fontsize',\n                    'fork',\n                    'forward',\n                    'forward-alt',\n                    'foursquare',\n                    'friendfeed',\n                    'friendfeed-rect',\n                    'fullscreen',\n                    'gbp',\n                    'gift',\n                    'github',\n                    'github-text',\n                    'glass',\n                    'glasses',\n                    'globe',\n                    'globe-alt',\n                    'googleplus',\n                    'graph',\n                    'graph-alt',\n                    'group',\n                    'group-alt',\n                    'guidedog',\n                    'hand-down',\n                    'hand-left',\n                    'hand-right',\n                    'hand-up',\n                    'hdd',\n                    'headphones',\n                    'hearing-impaired',\n                    'heart',\n                    'heart-alt',\n                    'heart-empty',\n                    'home',\n                    'home-alt',\n                    'hourglass',\n                    'idea',\n                    'idea-alt',\n                    'inbox',\n                    'inbox-alt',\n                    'inbox-box',\n                    'indent-left',\n                    'indent-right',\n                    'info-sign',\n                    'instagram',\n                    'iphone-home',\n                    'italic',\n                    'key',\n                    'laptop',\n                    'laptop-alt',\n                    'lastfm',\n                    'leaf',\n                    'lines',\n                    'link',\n                    'linkedin',\n                    'list',\n                    'list-alt',\n                    'livejournal',\n                    'lock',\n                    'lock-alt',\n                    'magic',\n                    'magnet',\n                    'male',\n                    'map-marker',\n                    'map-marker-alt',\n                    'mic',\n                    'mic-alt',\n                    'minus',\n                    'minus-sign',\n                    'move',\n                    'music',\n                    'myspace',\n                    'network',\n                    'off',\n                    'ok',\n                    'ok-circle',\n                    'ok-sign',\n                    'opensource',\n                    'paper-clip',\n                    'paper-clip-alt',\n                    'path',\n                    'pause',\n                    'pause-alt',\n                    'pencil',\n                    'pencil-alt',\n                    'person',\n                    'phone',\n                    'phone-alt',\n                    'photo',\n                    'photo-alt',\n                    'picasa',\n                    'picture',\n                    'pinterest',\n                    'plane',\n                    'play',\n                    'play-alt',\n                    'play-circle',\n                    'plus',\n                    'plus-sign',\n                    'podcast',\n                    'print',\n                    'puzzle',\n                    'qrcode',\n                    'question',\n                    'question-sign',\n                    'quotes',\n                    'quotes-alt',\n                    'random',\n                    'record',\n                    'reddit',\n                    'refresh',\n                    'remove',\n                    'remove-circle',\n                    'remove-sign',\n                    'repeat',\n                    'repeat-alt',\n                    'resize-full',\n                    'resize-horizontal',\n                    'resize-small',\n                    'resize-vertical',\n                    'return-key',\n                    'retweet',\n                    'reverse-alt',\n                    'road',\n                    'rss',\n                    'scissors',\n                    'screen',\n                    'screen-alt',\n                    'screenshot',\n                    'search',\n                    'search-alt',\n                    'share',\n                    'share-alt',\n                    'shopping-cart',\n                    'shopping-cart-sign',\n                    'signal',\n                    'skype',\n                    'slideshare',\n                    'smiley',\n                    'smiley-alt',\n                    'soundcloud',\n                    'speaker',\n                    'spotify',\n                    'stackoverflow',\n                    'star',\n                    'star-alt',\n                    'star-empty',\n                    'step-backward',\n                    'step-forward',\n                    'stop',\n                    'stop-alt',\n                    'stumbleupon',\n                    'tag',\n                    'tags',\n                    'tasks',\n                    'text-height',\n                    'text-width',\n                    'th',\n                    'th-large',\n                    'th-list',\n                    'thumbs-down',\n                    'thumbs-up',\n                    'time',\n                    'time-alt',\n                    'tint',\n                    'torso',\n                    'trash',\n                    'trash-alt',\n                    'tumblr',\n                    'twitter',\n                    'universal-access',\n                    'unlock',\n                    'unlock-alt',\n                    'upload',\n                    'usd',\n                    'user',\n                    'viadeo',\n                    'video',\n                    'video-alt',\n                    'video-chat',\n                    'view-mode',\n                    'vimeo',\n                    'vkontakte',\n                    'volume-down',\n                    'volume-off',\n                    'volume-up',\n                    'w3c',\n                    'warning-sign',\n                    'website',\n                    'website-alt',\n                    'wheelchair',\n                    'wordpress',\n                    'wrench',\n                    'wrench-alt',\n                    'youtube',\n                    'zoom-in',\n                    'zoom-out'\n                ]\n            }\n        ]\n    };\n\n    var l = data.allVersions.length;\n    data.icons = data.allVersions[l-1].icons;\n\n    $.iconset_elusiveicon = data;\n\n})(jQuery);\n\n/*!========================================================================\n * Iconset: Flag Icons\n * Versions: 2.8.0\n * http://flag-icon-css.lip.is/\n * CDN: https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/[VERSION]/css/flag-icon.min.css\n * ======================================================================== */\n\n;(function($){\n\n    var data = {\n        iconClass: 'flag-icon',\n        iconClassFix: 'flag-icon-',\n        icons: [],\n        allVersions: [\n            {\n                version: '2.8.0',\n                icons: [\n                    '',\n                    'ad',\n                    'ae',\n                    'af',\n                    'ag',\n                    'ai',\n                    'al',\n                    'am',\n                    'ao',\n                    'aq',\n                    'ar',\n                    'as',\n                    'at',\n                    'au',\n                    'aw',\n                    'ax',\n                    'az',\n                    'ba',\n                    'bb',\n                    'bd',\n                    'be',\n                    'bf',\n                    'bg',\n                    'bh',\n                    'bi',\n                    'bj',\n                    'bl',\n                    'bm',\n                    'bn',\n                    'bo',\n                    'bq',\n                    'br',\n                    'bs',\n                    'bt',\n                    'bv',\n                    'bw',\n                    'by',\n                    'bz',\n                    'ca',\n                    'cc',\n                    'cd',\n                    'cf',\n                    'cg',\n                    'ch',\n                    'ci',\n                    'ck',\n                    'cl',\n                    'cm',\n                    'cn',\n                    'co',\n                    'cr',\n                    'cu',\n                    'cv',\n                    'cw',\n                    'cx',\n                    'cy',\n                    'cz',\n                    'de',\n                    'dj',\n                    'dk',\n                    'dm',\n                    'do',\n                    'dz',\n                    'ec',\n                    'ee',\n                    'eg',\n                    'eh',\n                    'er',\n                    'es',\n                    'et',\n                    'eu',\n                    'fi',\n                    'fj',\n                    'fk',\n                    'fm',\n                    'fo',\n                    'fr',\n                    'ga',\n                    'gb',\n                    'gd',\n                    'ge',\n                    'gf',\n                    'gg',\n                    'gh',\n                    'gi',\n                    'gl',\n                    'gm',\n                    'gn',\n                    'gp',\n                    'gq',\n                    'gr',\n                    'gs',\n                    'gt',\n                    'gu',\n                    'gw',\n                    'gy',\n                    'hk',\n                    'hm',\n                    'hn',\n                    'hr',\n                    'ht',\n                    'hu',\n                    'id',\n                    'ie',\n                    'il',\n                    'im',\n                    'in',\n                    'io',\n                    'iq',\n                    'ir',\n                    'is',\n                    'it',\n                    'je',\n                    'jm',\n                    'jo',\n                    'jp',\n                    'ke',\n                    'kg',\n                    'kh',\n                    'ki',\n                    'km',\n                    'kn',\n                    'kp',\n                    'kr',\n                    'kw',\n                    'ky',\n                    'kz',\n                    'la',\n                    'lb',\n                    'lc',\n                    'li',\n                    'lk',\n                    'lr',\n                    'ls',\n                    'lt',\n                    'lu',\n                    'lv',\n                    'ly',\n                    'ma',\n                    'mc',\n                    'md',\n                    'me',\n                    'mf',\n                    'mg',\n                    'mh',\n                    'mk',\n                    'ml',\n                    'mm',\n                    'mn',\n                    'mo',\n                    'mp',\n                    'mq',\n                    'mr',\n                    'ms',\n                    'mt',\n                    'mu',\n                    'mv',\n                    'mw',\n                    'mx',\n                    'my',\n                    'mz',\n                    'na',\n                    'nc',\n                    'ne',\n                    'nf',\n                    'ng',\n                    'ni',\n                    'nl',\n                    'no',\n                    'np',\n                    'nr',\n                    'nu',\n                    'nz',\n                    'om',\n                    'pa',\n                    'pe',\n                    'pf',\n                    'pg',\n                    'ph',\n                    'pk',\n                    'pl',\n                    'pm',\n                    'pn',\n                    'pr',\n                    'ps',\n                    'pt',\n                    'pw',\n                    'py',\n                    'qa',\n                    're',\n                    'ro',\n                    'rs',\n                    'ru',\n                    'rw',\n                    'sa',\n                    'sb',\n                    'sc',\n                    'sd',\n                    'se',\n                    'sg',\n                    'sh',\n                    'si',\n                    'sj',\n                    'sk',\n                    'sl',\n                    'sm',\n                    'sn',\n                    'so',\n                    'sr',\n                    'ss',\n                    'st',\n                    'sv',\n                    'sx',\n                    'sy',\n                    'sz',\n                    'tc',\n                    'td',\n                    'tf',\n                    'tg',\n                    'th',\n                    'tj',\n                    'tk',\n                    'tl',\n                    'tm',\n                    'tn',\n                    'to',\n                    'tr',\n                    'tt',\n                    'tv',\n                    'tw',\n                    'tz',\n                    'ua',\n                    'ug',\n                    'um',\n                    'un',\n                    'us',\n                    'uy',\n                    'uz',\n                    'va',\n                    'vc',\n                    've',\n                    'vg',\n                    'vi',\n                    'vn',\n                    'vu',\n                    'wf',\n                    'ws',\n                    'ye',\n                    'yt',\n                    'za',\n                    'zm',\n                    'zw'\n                ]\n            }\n        ]\n    };\n\n    var l = data.allVersions.length;\n    data.icons = data.allVersions[l-1].icons;\n\n    $.iconset_flagicon = data;\n\n})(jQuery);\n\n/*!========================================================================\n * Iconset: Font Awesome\n * Versions: 4.0.0, 4.1.0, 4.2.0, 4.3.0, 4.4.0, 4.5.0, 4.6.0, 4.7.0\n * http://fortawesome.github.io/Font-Awesome/\n * CDN: https://maxcdn.bootstrapcdn.com/font-awesome/[VERSION]/css/font-awesome.min.css\n * ======================================================================== */\n\n;(function($){\n\n    var data = {\n        iconClass: 'fa',\n        iconClassFix: 'fa-',\n        icons: [],\n        allVersions: [\n            {\n                version: '4.0.0',\n                icons: [\n                    '',\n                    'adjust',\n                    'adn',\n                    'align-center',\n                    'align-justify',\n                    'align-left',\n                    'align-right',\n                    'ambulance',\n                    'anchor',\n                    'android',\n                    'angle-double-down',\n                    'angle-double-left',\n                    'angle-double-right',\n                    'angle-double-up',\n                    'angle-down',\n                    'angle-left',\n                    'angle-right',\n                    'angle-up',\n                    'apple',\n                    'archive',\n                    'arrow-circle-down',\n                    'arrow-circle-left',\n                    'arrow-circle-o-down',\n                    'arrow-circle-o-left',\n                    'arrow-circle-o-right',\n                    'arrow-circle-o-up',\n                    'arrow-circle-right',\n                    'arrow-circle-up',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-up',\n                    'asterisk',\n                    'backward',\n                    'ban',\n                    'bar-chart-o',\n                    'barcode',\n                    'beer',\n                    'bell',\n                    'bell-o',\n                    'bitbucket',\n                    'bitbucket-square',\n                    'bitcoin',\n                    'bold',\n                    'bolt',\n                    'book',\n                    'bookmark',\n                    'bookmark-o',\n                    'briefcase',\n                    'btc',\n                    'bug',\n                    'building',\n                    'bullhorn',\n                    'bullseye',\n                    'calendar',\n                    'calendar-o',\n                    'camera',\n                    'camera-retro',\n                    'caret-down',\n                    'caret-left',\n                    'caret-right',\n                    'caret-square-o-down',\n                    'caret-square-o-left',\n                    'caret-square-o-right',\n                    'caret-square-o-up',\n                    'caret-up',\n                    'certificate',\n                    'chain',\n                    'chain-broken',\n                    'check',\n                    'check-circle',\n                    'check-circle-o',\n                    'check-square',\n                    'check-square-o',\n                    'chevron-circle-down',\n                    'chevron-circle-left',\n                    'chevron-circle-right',\n                    'chevron-circle-up',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle',\n                    'circle-o',\n                    'clipboard',\n                    'clock-o',\n                    'cloud',\n                    'cloud-download',\n                    'cloud-upload',\n                    'cny',\n                    'code',\n                    'code-fork',\n                    'coffee',\n                    'cog',\n                    'cogs',\n                    'columns',\n                    'comment',\n                    'comment-o',\n                    'comments',\n                    'comments-o',\n                    'compass',\n                    'copy',\n                    'credit-card',\n                    'crop',\n                    'crosshairs',\n                    'css3',\n                    'cut',\n                    'cutlery',\n                    'dashboard',\n                    'dedent',\n                    'desktop',\n                    'dollar',\n                    'dot-circle-o',\n                    'download',\n                    'dribbble',\n                    'dropbox',\n                    'edit',\n                    'eject',\n                    'envelope',\n                    'envelope-o',\n                    'eraser',\n                    'eur',\n                    'euro',\n                    'exchange',\n                    'exclamation',\n                    'exclamation-circle',\n                    'exclamation-triangle',\n                    'external-link',\n                    'external-link-square',\n                    'eye',\n                    'eye-slash',\n                    'facebook',\n                    'facebook-square',\n                    'fast-backward',\n                    'fast-forward',\n                    'female',\n                    'fighter-jet',\n                    'file',\n                    'file-o',\n                    'file-text',\n                    'file-text-o',\n                    'files-o',\n                    'film',\n                    'filter',\n                    'fire',\n                    'fire-extinguisher',\n                    'flag',\n                    'flag-checkered',\n                    'flag-o',\n                    'flash',\n                    'flask',\n                    'flickr',\n                    'floppy-o',\n                    'folder',\n                    'folder-o',\n                    'folder-open',\n                    'folder-open-o',\n                    'font',\n                    'forward',\n                    'foursquare',\n                    'frown-o',\n                    'gamepad',\n                    'gavel',\n                    'gbp',\n                    'gear',\n                    'gears',\n                    'gift',\n                    'github',\n                    'github-alt',\n                    'github-square',\n                    'gittip',\n                    'glass',\n                    'globe',\n                    'google-plus',\n                    'google-plus-square',\n                    'group',\n                    'h-square',\n                    'hand-o-down',\n                    'hand-o-left',\n                    'hand-o-right',\n                    'hand-o-up',\n                    'headphones',\n                    'heart',\n                    'heart-o',\n                    'home',\n                    'html5',\n                    'inbox',\n                    'indent',\n                    'info',\n                    'info-circle',\n                    'inr',\n                    'instagram',\n                    'italic',\n                    'jpy',\n                    'key',\n                    'keyboard-o',\n                    'krw',\n                    'laptop',\n                    'leaf',\n                    'legal',\n                    'lemon-o',\n                    'level-down',\n                    'level-up',\n                    'lightbulb-o',\n                    'link',\n                    'linkedin',\n                    'linkedin-square',\n                    'linux',\n                    'list',\n                    'list-alt',\n                    'list-ol',\n                    'list-ul',\n                    'location-arrow',\n                    'lock',\n                    'long-arrow-down',\n                    'long-arrow-left',\n                    'long-arrow-right',\n                    'long-arrow-up',\n                    'magic',\n                    'magnet',\n                    'mail-forward',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'male',\n                    'map-marker',\n                    'maxcdn',\n                    'medkit',\n                    'meh-o',\n                    'microphone',\n                    'microphone-slash',\n                    'minus',\n                    'minus-circle',\n                    'minus-square',\n                    'minus-square-o',\n                    'mobile',\n                    'mobile-phone',\n                    'money',\n                    'moon-o',\n                    'music',\n                    'outdent',\n                    'pagelines',\n                    'paperclip',\n                    'paste',\n                    'pause',\n                    'pencil',\n                    'pencil-square',\n                    'pencil-square-o',\n                    'phone',\n                    'phone-square',\n                    'picture-o',\n                    'pinterest',\n                    'pinterest-square',\n                    'plane',\n                    'play',\n                    'play-circle',\n                    'play-circle-o',\n                    'plus',\n                    'plus-circle',\n                    'plus-square',\n                    'power-off',\n                    'print',\n                    'puzzle-piece',\n                    'qrcode',\n                    'question',\n                    'question-circle',\n                    'quote-left',\n                    'quote-right',\n                    'random',\n                    'refresh',\n                    'renren',\n                    'reorder',\n                    'repeat',\n                    'reply',\n                    'reply-all',\n                    'retweet',\n                    'rmb',\n                    'road',\n                    'rocket',\n                    'rotate-left',\n                    'rotate-right',\n                    'rouble',\n                    'rss',\n                    'rss-square',\n                    'rub',\n                    'ruble',\n                    'rupee',\n                    'save',\n                    'scissors',\n                    'search',\n                    'search-minus',\n                    'search-plus',\n                    'share',\n                    'share-square',\n                    'share-square-o',\n                    'shield',\n                    'shopping-cart',\n                    'sign-in',\n                    'sign-out',\n                    'signal',\n                    'sitemap',\n                    'skype',\n                    'smile-o',\n                    'sort',\n                    'sort-alpha-asc',\n                    'sort-alpha-desc',\n                    'sort-amount-asc',\n                    'sort-amount-desc',\n                    'sort-asc',\n                    'sort-desc',\n                    'sort-down',\n                    'sort-numeric-asc',\n                    'sort-numeric-desc',\n                    'sort-up',\n                    'spinner',\n                    'square',\n                    'square-o',\n                    'stack-exchange',\n                    'stack-overflow',\n                    'star',\n                    'star-half',\n                    'star-half-empty',\n                    'star-half-full',\n                    'star-half-o',\n                    'star-o',\n                    'step-backward',\n                    'step-forward',\n                    'stethoscope',\n                    'stop',\n                    'strikethrough',\n                    'subscript',\n                    'suitcase',\n                    'sun-o',\n                    'superscript',\n                    'table',\n                    'tablet',\n                    'tachometer',\n                    'tag',\n                    'tags',\n                    'tasks',\n                    'terminal',\n                    'text-height',\n                    'text-width',\n                    'th',\n                    'th-large',\n                    'th-list',\n                    'thumb-tack',\n                    'thumbs-down',\n                    'thumbs-o-down',\n                    'thumbs-o-up',\n                    'thumbs-up',\n                    'ticket',\n                    'times',\n                    'times-circle',\n                    'times-circle-o',\n                    'tint',\n                    'toggle-down',\n                    'toggle-left',\n                    'toggle-right',\n                    'toggle-up',\n                    'trash-o',\n                    'trello',\n                    'trophy',\n                    'truck',\n                    'try',\n                    'tumblr',\n                    'tumblr-square',\n                    'turkish-lira',\n                    'twitter',\n                    'twitter-square',\n                    'umbrella',\n                    'underline',\n                    'undo',\n                    'unlink',\n                    'unlock',\n                    'unsorted',\n                    'upload',\n                    'usd',\n                    'user',\n                    'user-md',\n                    'video-camera',\n                    'vimeo-square',\n                    'vk',\n                    'volume-down',\n                    'volume-off',\n                    'volume-up',\n                    'warning',\n                    'weibo',\n                    'wheelchair',\n                    'windows',\n                    'won',\n                    'wrench',\n                    'xing',\n                    'xing-square',\n                    'yen',\n                    'youtube',\n                    'youtube-play',\n                    'youtube-square'\n                ]\n            },\n            {\n                version: '4.1.0',\n                icons: [\n                    '',\n                    'adjust',\n                    'adn',\n                    'align-center',\n                    'align-justify',\n                    'align-left',\n                    'align-right',\n                    'ambulance',\n                    'anchor',\n                    'android',\n                    'angle-double-down',\n                    'angle-double-left',\n                    'angle-double-right',\n                    'angle-double-up',\n                    'angle-down',\n                    'angle-left',\n                    'angle-right',\n                    'angle-up',\n                    'apple',\n                    'archive',\n                    'arrow-circle-down',\n                    'arrow-circle-left',\n                    'arrow-circle-o-down',\n                    'arrow-circle-o-left',\n                    'arrow-circle-o-right',\n                    'arrow-circle-o-up',\n                    'arrow-circle-right',\n                    'arrow-circle-up',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-up',\n                    'arrows',\n                    'arrows-alt',\n                    'arrows-h',\n                    'arrows-v',\n                    'asterisk',\n                    'automobile',\n                    'backward',\n                    'ban',\n                    'bank',\n                    'bar-chart-o',\n                    'barcode',\n                    'bars',\n                    'beer',\n                    'behance',\n                    'behance-square',\n                    'bell',\n                    'bell-o',\n                    'bitbucket',\n                    'bitbucket-square',\n                    'bitcoin',\n                    'bold',\n                    'bolt',\n                    'bomb',\n                    'book',\n                    'bookmark',\n                    'bookmark-o',\n                    'briefcase',\n                    'btc',\n                    'bug',\n                    'building',\n                    'building-o',\n                    'bullhorn',\n                    'bullseye',\n                    'cab',\n                    'calendar',\n                    'calendar-o',\n                    'camera',\n                    'camera-retro',\n                    'car',\n                    'caret-down',\n                    'caret-left',\n                    'caret-right',\n                    'caret-square-o-down',\n                    'caret-square-o-left',\n                    'caret-square-o-right',\n                    'caret-square-o-up',\n                    'caret-up',\n                    'certificate',\n                    'chain',\n                    'chain-broken',\n                    'check',\n                    'check-circle',\n                    'check-circle-o',\n                    'check-square',\n                    'check-square-o',\n                    'chevron-circle-down',\n                    'chevron-circle-left',\n                    'chevron-circle-right',\n                    'chevron-circle-up',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'child',\n                    'circle',\n                    'circle-o',\n                    'circle-thin',\n                    'clipboard',\n                    'clock-o',\n                    'cloud',\n                    'cloud-download',\n                    'cloud-upload',\n                    'cny',\n                    'code',\n                    'code-fork',\n                    'coffee',\n                    'cog',\n                    'cogs',\n                    'columns',\n                    'comment',\n                    'comment-o',\n                    'comments',\n                    'comments-o',\n                    'compass',\n                    'compress',\n                    'copy',\n                    'credit-card',\n                    'crop',\n                    'crosshairs',\n                    'css3',\n                    'cube',\n                    'cubes',\n                    'cut',\n                    'cutlery',\n                    'dashboard',\n                    'database',\n                    'dedent',\n                    'delicious',\n                    'desktop',\n                    'digg',\n                    'dollar',\n                    'dot-circle-o',\n                    'download',\n                    'dribbble',\n                    'dropbox',\n                    'drupal',\n                    'edit',\n                    'eject',\n                    'ellipsis-h',\n                    'ellipsis-v',\n                    'empire',\n                    'envelope',\n                    'envelope-o',\n                    'envelope-square',\n                    'eraser',\n                    'eur',\n                    'euro',\n                    'exchange',\n                    'exclamation',\n                    'exclamation-circle',\n                    'exclamation-triangle',\n                    'expand',\n                    'external-link',\n                    'external-link-square',\n                    'eye',\n                    'eye-slash',\n                    'facebook',\n                    'facebook-square',\n                    'fast-backward',\n                    'fast-forward',\n                    'fax',\n                    'female',\n                    'fighter-jet',\n                    'file',\n                    'file-archive-o',\n                    'file-audio-o',\n                    'file-code-o',\n                    'file-excel-o',\n                    'file-image-o',\n                    'file-movie-o',\n                    'file-o',\n                    'file-pdf-o',\n                    'file-photo-o',\n                    'file-picture-o',\n                    'file-powerpoint-o',\n                    'file-sound-o',\n                    'file-text',\n                    'file-text-o',\n                    'file-video-o',\n                    'file-word-o',\n                    'file-zip-o',\n                    'files-o',\n                    'film',\n                    'filter',\n                    'fire',\n                    'fire-extinguisher',\n                    'flag',\n                    'flag-checkered',\n                    'flag-o',\n                    'flash',\n                    'flask',\n                    'flickr',\n                    'floppy-o',\n                    'folder',\n                    'folder-o',\n                    'folder-open',\n                    'folder-open-o',\n                    'font',\n                    'forward',\n                    'foursquare',\n                    'frown-o',\n                    'gamepad',\n                    'gavel',\n                    'gbp',\n                    'ge',\n                    'gear',\n                    'gears',\n                    'gift',\n                    'git',\n                    'git-square',\n                    'github',\n                    'github-alt',\n                    'github-square',\n                    'gittip',\n                    'glass',\n                    'globe',\n                    'google',\n                    'google-plus',\n                    'google-plus-square',\n                    'graduation-cap',\n                    'group',\n                    'h-square',\n                    'hacker-news',\n                    'hand-o-down',\n                    'hand-o-left',\n                    'hand-o-right',\n                    'hand-o-up',\n                    'hdd-o',\n                    'header',\n                    'headphones',\n                    'heart',\n                    'heart-o',\n                    'history',\n                    'home',\n                    'hospital-o',\n                    'html5',\n                    'image',\n                    'inbox',\n                    'indent',\n                    'info',\n                    'info-circle',\n                    'inr',\n                    'instagram',\n                    'institution',\n                    'italic',\n                    'joomla',\n                    'jpy',\n                    'jsfiddle',\n                    'key',\n                    'keyboard-o',\n                    'krw',\n                    'language',\n                    'laptop',\n                    'leaf',\n                    'legal',\n                    'lemon-o',\n                    'level-down',\n                    'level-up',\n                    'life-bouy',\n                    'life-ring',\n                    'life-saver',\n                    'lightbulb-o',\n                    'link',\n                    'linkedin',\n                    'linkedin-square',\n                    'linux',\n                    'list',\n                    'list-alt',\n                    'list-ol',\n                    'list-ul',\n                    'location-arrow',\n                    'lock',\n                    'long-arrow-down',\n                    'long-arrow-left',\n                    'long-arrow-right',\n                    'long-arrow-up',\n                    'magic',\n                    'magnet',\n                    'mail-forward',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'male',\n                    'map-marker',\n                    'maxcdn',\n                    'medkit',\n                    'meh-o',\n                    'microphone',\n                    'microphone-slash',\n                    'minus',\n                    'minus-circle',\n                    'minus-square',\n                    'minus-square-o',\n                    'mobile',\n                    'mobile-phone',\n                    'money',\n                    'moon-o',\n                    'mortar-board',\n                    'music',\n                    'navicon',\n                    'openid',\n                    'outdent',\n                    'pagelines',\n                    'paper-plane',\n                    'paper-plane-o',\n                    'paperclip',\n                    'paragraph',\n                    'paste',\n                    'pause',\n                    'paw',\n                    'pencil',\n                    'pencil-square',\n                    'pencil-square-o',\n                    'phone',\n                    'phone-square',\n                    'photo',\n                    'picture-o',\n                    'pied-piper',\n                    'pied-piper-alt',\n                    'pied-piper-square',\n                    'pinterest',\n                    'pinterest-square',\n                    'plane',\n                    'play',\n                    'play-circle',\n                    'play-circle-o',\n                    'plus',\n                    'plus-circle',\n                    'plus-square',\n                    'plus-square-o',\n                    'power-off',\n                    'print',\n                    'puzzle-piece',\n                    'qq',\n                    'qrcode',\n                    'question',\n                    'question-circle',\n                    'quote-left',\n                    'quote-right',\n                    'ra',\n                    'random',\n                    'rebel',\n                    'reddit',\n                    'reddit-square',\n                    'refresh',\n                    'renren',\n                    'reorder',\n                    'repeat',\n                    'reply',\n                    'reply-all',\n                    'retweet',\n                    'rmb',\n                    'road',\n                    'rocket',\n                    'rotate-left',\n                    'rotate-right',\n                    'rouble',\n                    'rss',\n                    'rss-square',\n                    'rub',\n                    'ruble',\n                    'rupee',\n                    'save',\n                    'scissors',\n                    'search',\n                    'search-minus',\n                    'search-plus',\n                    'send',\n                    'send-o',\n                    'share',\n                    'share-alt',\n                    'share-alt-square',\n                    'share-square',\n                    'share-square-o',\n                    'shield',\n                    'shopping-cart',\n                    'sign-in',\n                    'sign-out',\n                    'signal',\n                    'sitemap',\n                    'skype',\n                    'slack',\n                    'sliders',\n                    'smile-o',\n                    'sort',\n                    'sort-alpha-asc',\n                    'sort-alpha-desc',\n                    'sort-amount-asc',\n                    'sort-amount-desc',\n                    'sort-asc',\n                    'sort-desc',\n                    'sort-down',\n                    'sort-numeric-asc',\n                    'sort-numeric-desc',\n                    'sort-up',\n                    'soundcloud',\n                    'space-shuttle',\n                    'spinner',\n                    'spoon',\n                    'spotify',\n                    'square',\n                    'square-o',\n                    'stack-exchange',\n                    'stack-overflow',\n                    'star',\n                    'star-half',\n                    'star-half-empty',\n                    'star-half-full',\n                    'star-half-o',\n                    'star-o',\n                    'steam',\n                    'steam-square',\n                    'step-backward',\n                    'step-forward',\n                    'stethoscope',\n                    'stop',\n                    'strikethrough',\n                    'stumbleupon',\n                    'stumbleupon-circle',\n                    'subscript',\n                    'suitcase',\n                    'sun-o',\n                    'superscript',\n                    'support',\n                    'table',\n                    'tablet',\n                    'tachometer',\n                    'tag',\n                    'tags',\n                    'tasks',\n                    'taxi',\n                    'tencent-weibo',\n                    'terminal',\n                    'text-height',\n                    'text-width',\n                    'th',\n                    'th-large',\n                    'th-list',\n                    'thumb-tack',\n                    'thumbs-down',\n                    'thumbs-o-down',\n                    'thumbs-o-up',\n                    'thumbs-up',\n                    'ticket',\n                    'times',\n                    'times-circle',\n                    'times-circle-o',\n                    'tint',\n                    'toggle-down',\n                    'toggle-left',\n                    'toggle-right',\n                    'toggle-up',\n                    'trash-o',\n                    'tree',\n                    'trello',\n                    'trophy',\n                    'truck',\n                    'try',\n                    'tumblr',\n                    'tumblr-square',\n                    'turkish-lira',\n                    'twitter',\n                    'twitter-square',\n                    'umbrella',\n                    'underline',\n                    'undo',\n                    'university',\n                    'unlink',\n                    'unlock',\n                    'unlock-alt',\n                    'unsorted',\n                    'upload',\n                    'usd',\n                    'user',\n                    'user-md',\n                    'users',\n                    'video-camera',\n                    'vimeo-square',\n                    'vine',\n                    'vk',\n                    'volume-down',\n                    'volume-off',\n                    'volume-up',\n                    'warning',\n                    'wechat',\n                    'weibo',\n                    'weixin',\n                    'wheelchair',\n                    'windows',\n                    'won',\n                    'wordpress',\n                    'wrench',\n                    'xing',\n                    'xing-square',\n                    'yahoo',\n                    'yen',\n                    'youtube',\n                    'youtube-play',\n                    'youtube-square'\n                    ]\n            },\n            {\n                version: '4.2.0',\n                icons: [\n                    '',\n                    'adjust',\n                    'adn',\n                    'align-center',\n                    'align-justify',\n                    'align-left',\n                    'align-right',\n                    'ambulance',\n                    'anchor',\n                    'android',\n                    'angellist',\n                    'angle-double-down',\n                    'angle-double-left',\n                    'angle-double-right',\n                    'angle-double-up',\n                    'angle-down',\n                    'angle-left',\n                    'angle-right',\n                    'angle-up',\n                    'apple',\n                    'archive',\n                    'area-chart',\n                    'arrow-circle-down',\n                    'arrow-circle-left',\n                    'arrow-circle-o-down',\n                    'arrow-circle-o-left',\n                    'arrow-circle-o-right',\n                    'arrow-circle-o-up',\n                    'arrow-circle-right',\n                    'arrow-circle-up',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-up',\n                    'arrows',\n                    'arrows-alt',\n                    'arrows-h',\n                    'arrows-v',\n                    'asterisk',\n                    'at',\n                    'automobile',\n                    'backward',\n                    'ban',\n                    'bank',\n                    'bar-chart-o',\n                    'barcode',\n                    'bars',\n                    'beer',\n                    'behance',\n                    'behance-square',\n                    'bell',\n                    'bell-o',\n                    'bell-slash',\n                    'bell-slash-o',\n                    'bicycle',\n                    'binoculars',\n                    'birthday-cake',\n                    'bitbucket',\n                    'bitbucket-square',\n                    'bitcoin',\n                    'bold',\n                    'bolt',\n                    'bomb',\n                    'book',\n                    'bookmark',\n                    'bookmark-o',\n                    'briefcase',\n                    'btc',\n                    'bug',\n                    'building',\n                    'building-o',\n                    'bullhorn',\n                    'bullseye',\n                    'bus',\n                    'cab',\n                    'calculator',\n                    'calendar',\n                    'calendar-o',\n                    'camera',\n                    'camera-retro',\n                    'car',\n                    'caret-down',\n                    'caret-left',\n                    'caret-right',\n                    'caret-square-o-down',\n                    'caret-square-o-left',\n                    'caret-square-o-right',\n                    'caret-square-o-up',\n                    'caret-up',\n                    'cc',\n                    'cc-amex',\n                    'cc-discover',\n                    'cc-mastercard',\n                    'cc-paypal',\n                    'cc-stripe',\n                    'cc-visa',\n                    'certificate',\n                    'chain',\n                    'chain-broken',\n                    'check',\n                    'check-circle',\n                    'check-circle-o',\n                    'check-square',\n                    'check-square-o',\n                    'chevron-circle-down',\n                    'chevron-circle-left',\n                    'chevron-circle-right',\n                    'chevron-circle-up',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'child',\n                    'circle',\n                    'circle-o',\n                    'circle-thin',\n                    'clipboard',\n                    'clock-o',\n                    'cloud',\n                    'cloud-download',\n                    'cloud-upload',\n                    'cny',\n                    'code',\n                    'code-fork',\n                    'coffee',\n                    'cog',\n                    'cogs',\n                    'columns',\n                    'comment',\n                    'comment-o',\n                    'comments',\n                    'comments-o',\n                    'compass',\n                    'compress',\n                    'copy',\n                    'copyright',\n                    'credit-card',\n                    'crop',\n                    'crosshairs',\n                    'css3',\n                    'cube',\n                    'cubes',\n                    'cut',\n                    'cutlery',\n                    'dashboard',\n                    'database',\n                    'dedent',\n                    'delicious',\n                    'desktop',\n                    'digg',\n                    'dollar',\n                    'dot-circle-o',\n                    'download',\n                    'dribbble',\n                    'dropbox',\n                    'drupal',\n                    'edit',\n                    'eject',\n                    'ellipsis-h',\n                    'ellipsis-v',\n                    'empire',\n                    'envelope',\n                    'envelope-o',\n                    'envelope-square',\n                    'eraser',\n                    'eur',\n                    'euro',\n                    'exchange',\n                    'exclamation',\n                    'exclamation-circle',\n                    'exclamation-triangle',\n                    'expand',\n                    'external-link',\n                    'external-link-square',\n                    'eye',\n                    'eye-slash',\n                    'eyedropper',\n                    'facebook',\n                    'facebook-square',\n                    'fast-backward',\n                    'fast-forward',\n                    'fax',\n                    'female',\n                    'fighter-jet',\n                    'file',\n                    'file-archive-o',\n                    'file-audio-o',\n                    'file-code-o',\n                    'file-excel-o',\n                    'file-image-o',\n                    'file-movie-o',\n                    'file-o',\n                    'file-pdf-o',\n                    'file-photo-o',\n                    'file-picture-o',\n                    'file-powerpoint-o',\n                    'file-sound-o',\n                    'file-text',\n                    'file-text-o',\n                    'file-video-o',\n                    'file-word-o',\n                    'file-zip-o',\n                    'files-o',\n                    'film',\n                    'filter',\n                    'fire',\n                    'fire-extinguisher',\n                    'flag',\n                    'flag-checkered',\n                    'flag-o',\n                    'flash',\n                    'flask',\n                    'flickr',\n                    'floppy-o',\n                    'folder',\n                    'folder-o',\n                    'folder-open',\n                    'folder-open-o',\n                    'font',\n                    'forward',\n                    'foursquare',\n                    'frown-o',\n                    'futbol-o',\n                    'gamepad',\n                    'gavel',\n                    'gbp',\n                    'ge',\n                    'gear',\n                    'gears',\n                    'gift',\n                    'git',\n                    'git-square',\n                    'github',\n                    'github-alt',\n                    'github-square',\n                    'gittip',\n                    'glass',\n                    'globe',\n                    'google',\n                    'google-plus',\n                    'google-plus-square',\n                    'google-wallet',\n                    'graduation-cap',\n                    'group',\n                    'h-square',\n                    'hacker-news',\n                    'hand-o-down',\n                    'hand-o-left',\n                    'hand-o-right',\n                    'hand-o-up',\n                    'hdd-o',\n                    'header',\n                    'headphones',\n                    'heart',\n                    'heart-o',\n                    'history',\n                    'home',\n                    'hospital-o',\n                    'html5',\n                    'ils',\n                    'image',\n                    'inbox',\n                    'indent',\n                    'info',\n                    'info-circle',\n                    'inr',\n                    'instagram',\n                    'institution',\n                    'ioxhost',\n                    'italic',\n                    'joomla',\n                    'jpy',\n                    'jsfiddle',\n                    'key',\n                    'keyboard-o',\n                    'krw',\n                    'language',\n                    'laptop',\n                    'lastfm',\n                    'lastfm-square',\n                    'leaf',\n                    'legal',\n                    'lemon-o',\n                    'level-down',\n                    'level-up',\n                    'life-bouy',\n                    'life-ring',\n                    'life-saver',\n                    'lightbulb-o',\n                    'line-chart',\n                    'link',\n                    'linkedin',\n                    'linkedin-square',\n                    'linux',\n                    'list',\n                    'list-alt',\n                    'list-ol',\n                    'list-ul',\n                    'location-arrow',\n                    'lock',\n                    'long-arrow-down',\n                    'long-arrow-left',\n                    'long-arrow-right',\n                    'long-arrow-up',\n                    'magic',\n                    'magnet',\n                    'mail-forward',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'male',\n                    'map-marker',\n                    'maxcdn',\n                    'meanpath',\n                    'medkit',\n                    'meh-o',\n                    'microphone',\n                    'microphone-slash',\n                    'minus',\n                    'minus-circle',\n                    'minus-square',\n                    'minus-square-o',\n                    'mobile',\n                    'mobile-phone',\n                    'money',\n                    'moon-o',\n                    'mortar-board',\n                    'music',\n                    'navicon',\n                    'newspaper-o',\n                    'openid',\n                    'outdent',\n                    'pagelines',\n                    'paint-brush',\n                    'paper-plane',\n                    'paper-plane-o',\n                    'paperclip',\n                    'paragraph',\n                    'paste',\n                    'pause',\n                    'paw',\n                    'paypal',\n                    'pencil',\n                    'pencil-square',\n                    'pencil-square-o',\n                    'phone',\n                    'phone-square',\n                    'photo',\n                    'picture-o',\n                    'pie-chart',\n                    'pied-piper',\n                    'pied-piper-alt',\n                    'pinterest',\n                    'pinterest-square',\n                    'plane',\n                    'play',\n                    'play-circle',\n                    'play-circle-o',\n                    'plug',\n                    'plus',\n                    'plus-circle',\n                    'plus-square',\n                    'plus-square-o',\n                    'power-off',\n                    'print',\n                    'puzzle-piece',\n                    'qq',\n                    'qrcode',\n                    'question',\n                    'question-circle',\n                    'quote-left',\n                    'quote-right',\n                    'ra',\n                    'random',\n                    'rebel',\n                    'reddit',\n                    'reddit-square',\n                    'refresh',\n                    'renren',\n                    'reorder',\n                    'repeat',\n                    'reply',\n                    'reply-all',\n                    'retweet',\n                    'rmb',\n                    'road',\n                    'rocket',\n                    'rotate-left',\n                    'rotate-right',\n                    'rouble',\n                    'rss',\n                    'rss-square',\n                    'rub',\n                    'ruble',\n                    'rupee',\n                    'save',\n                    'scissors',\n                    'search',\n                    'search-minus',\n                    'search-plus',\n                    'send',\n                    'send-o',\n                    'share',\n                    'share-alt',\n                    'share-alt-square',\n                    'share-square',\n                    'share-square-o',\n                    'shekel',\n                    'sheqel',\n                    'shield',\n                    'shopping-cart',\n                    'sign-in',\n                    'sign-out',\n                    'signal',\n                    'sitemap',\n                    'skype',\n                    'slack',\n                    'sliders',\n                    'slideshare',\n                    'smile-o',\n                    'soccer-ball-o',\n                    'sort',\n                    'sort-alpha-asc',\n                    'sort-alpha-desc',\n                    'sort-amount-asc',\n                    'sort-amount-desc',\n                    'sort-asc',\n                    'sort-desc',\n                    'sort-down',\n                    'sort-numeric-asc',\n                    'sort-numeric-desc',\n                    'sort-up',\n                    'soundcloud',\n                    'space-shuttle',\n                    'spinner',\n                    'spoon',\n                    'spotify',\n                    'square',\n                    'square-o',\n                    'stack-exchange',\n                    'stack-overflow',\n                    'star',\n                    'star-half',\n                    'star-half-empty',\n                    'star-half-full',\n                    'star-half-o',\n                    'star-o',\n                    'steam',\n                    'steam-square',\n                    'step-backward',\n                    'step-forward',\n                    'stethoscope',\n                    'stop',\n                    'strikethrough',\n                    'stumbleupon',\n                    'stumbleupon-circle',\n                    'subscript',\n                    'suitcase',\n                    'sun-o',\n                    'superscript',\n                    'support',\n                    'table',\n                    'tablet',\n                    'tachometer',\n                    'tag',\n                    'tags',\n                    'tasks',\n                    'taxi',\n                    'tencent-weibo',\n                    'terminal',\n                    'text-height',\n                    'text-width',\n                    'th',\n                    'th-large',\n                    'th-list',\n                    'thumb-tack',\n                    'thumbs-down',\n                    'thumbs-o-down',\n                    'thumbs-o-up',\n                    'thumbs-up',\n                    'ticket',\n                    'times',\n                    'times-circle',\n                    'times-circle-o',\n                    'tint',\n                    'toggle-down',\n                    'toggle-left',\n                    'toggle-off',\n                    'toggle-on',\n                    'toggle-right',\n                    'toggle-up',\n                    'trash',\n                    'trash-o',\n                    'tree',\n                    'trello',\n                    'trophy',\n                    'truck',\n                    'try',\n                    'tty',\n                    'tumblr',\n                    'tumblr-square',\n                    'turkish-lira',\n                    'twitch',\n                    'twitter',\n                    'twitter-square',\n                    'umbrella',\n                    'underline',\n                    'undo',\n                    'university',\n                    'unlink',\n                    'unlock',\n                    'unlock-alt',\n                    'unsorted',\n                    'upload',\n                    'usd',\n                    'user',\n                    'user-md',\n                    'users',\n                    'video-camera',\n                    'vimeo-square',\n                    'vine',\n                    'vk',\n                    'volume-down',\n                    'volume-off',\n                    'volume-up',\n                    'warning',\n                    'wechat',\n                    'weibo',\n                    'weixin',\n                    'wheelchair',\n                    'wifi',\n                    'windows',\n                    'won',\n                    'wordpress',\n                    'wrench',\n                    'xing',\n                    'xing-square',\n                    'yahoo',\n                    'yelp',\n                    'yen',\n                    'youtube',\n                    'youtube-play',\n                    'youtube-square'\n                ]\n            },\n            {\n                version: '4.3.0',\n                icons: [\n                    '',\n                    'adjust',\n                    'adn',\n                    'align-center',\n                    'align-justify',\n                    'align-left',\n                    'align-right',\n                    'ambulance',\n                    'anchor',\n                    'android',\n                    'angellist',\n                    'angle-double-down',\n                    'angle-double-left',\n                    'angle-double-right',\n                    'angle-double-up',\n                    'angle-down',\n                    'angle-left',\n                    'angle-right',\n                    'angle-up',\n                    'apple',\n                    'archive',\n                    'area-chart',\n                    'arrow-circle-down',\n                    'arrow-circle-left',\n                    'arrow-circle-o-down',\n                    'arrow-circle-o-left',\n                    'arrow-circle-o-right',\n                    'arrow-circle-o-up',\n                    'arrow-circle-right',\n                    'arrow-circle-up',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-up',\n                    'arrows',\n                    'arrows-alt',\n                    'arrows-h',\n                    'arrows-v',\n                    'asterisk',\n                    'at',\n                    'automobile',\n                    'backward',\n                    'ban',\n                    'bank',\n                    'bar-chart',\n                    'bar-chart-o',\n                    'barcode',\n                    'bars',\n                    'bed',\n                    'beer',\n                    'behance',\n                    'behance-square',\n                    'bell',\n                    'bell-o',\n                    'bell-slash',\n                    'bell-slash-o',\n                    'bicycle',\n                    'binoculars',\n                    'birthday-cake',\n                    'bitbucket',\n                    'bitbucket-square',\n                    'bitcoin',\n                    'bold',\n                    'bolt',\n                    'bomb',\n                    'book',\n                    'bookmark',\n                    'bookmark-o',\n                    'briefcase',\n                    'btc',\n                    'bug',\n                    'building',\n                    'building-o',\n                    'bullhorn',\n                    'bullseye',\n                    'bus',\n                    'buysellads',\n                    'cab',\n                    'calculator',\n                    'calendar',\n                    'calendar-o',\n                    'camera',\n                    'camera-retro',\n                    'car',\n                    'caret-down',\n                    'caret-left',\n                    'caret-right',\n                    'caret-square-o-down',\n                    'caret-square-o-left',\n                    'caret-square-o-right',\n                    'caret-square-o-up',\n                    'caret-up',\n                    'cart-arrow-down',\n                    'cart-plus',\n                    'cc',\n                    'cc-amex',\n                    'cc-discover',\n                    'cc-mastercard',\n                    'cc-paypal',\n                    'cc-stripe',\n                    'cc-visa',\n                    'certificate',\n                    'chain',\n                    'chain-broken',\n                    'check',\n                    'check-circle',\n                    'check-circle-o',\n                    'check-square',\n                    'check-square-o',\n                    'chevron-circle-down',\n                    'chevron-circle-left',\n                    'chevron-circle-right',\n                    'chevron-circle-up',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'child',\n                    'circle',\n                    'circle-o',\n                    'circle-o-notch',\n                    'circle-thin',\n                    'clipboard',\n                    'clock-o',\n                    'close',\n                    'cloud',\n                    'cloud-download',\n                    'cloud-upload',\n                    'cny',\n                    'code',\n                    'code-fork',\n                    'codepen',\n                    'coffee',\n                    'cog',\n                    'cogs',\n                    'columns',\n                    'comment',\n                    'comment-o',\n                    'comments',\n                    'comments-o',\n                    'compass',\n                    'compress',\n                    'connectdevelop',\n                    'copy',\n                    'copyright',\n                    'credit-card',\n                    'crop',\n                    'crosshairs',\n                    'css3',\n                    'cube',\n                    'cubes',\n                    'cut',\n                    'cutlery',\n                    'dashboard',\n                    'dashcube',\n                    'database',\n                    'dedent',\n                    'delicious',\n                    'desktop',\n                    'deviantart',\n                    'diamond',\n                    'digg',\n                    'dollar',\n                    'dot-circle-o',\n                    'download',\n                    'dribbble',\n                    'dropbox',\n                    'drupal',\n                    'edit',\n                    'eject',\n                    'ellipsis-h',\n                    'ellipsis-v',\n                    'empire',\n                    'envelope',\n                    'envelope-o',\n                    'envelope-square',\n                    'eraser',\n                    'eur',\n                    'euro',\n                    'exchange',\n                    'exclamation',\n                    'exclamation-circle',\n                    'exclamation-triangle',\n                    'expand',\n                    'external-link',\n                    'external-link-square',\n                    'eye',\n                    'eye-slash',\n                    'eyedropper',\n                    'facebook',\n                    'facebook-f',\n                    'facebook-official',\n                    'facebook-square',\n                    'fast-backward',\n                    'fast-forward',\n                    'fax',\n                    'female',\n                    'fighter-jet',\n                    'file',\n                    'file-archive-o',\n                    'file-audio-o',\n                    'file-code-o',\n                    'file-excel-o',\n                    'file-image-o',\n                    'file-movie-o',\n                    'file-o',\n                    'file-pdf-o',\n                    'file-photo-o',\n                    'file-picture-o',\n                    'file-powerpoint-o',\n                    'file-sound-o',\n                    'file-text',\n                    'file-text-o',\n                    'file-video-o',\n                    'file-word-o',\n                    'file-zip-o',\n                    'files-o',\n                    'film',\n                    'filter',\n                    'fire',\n                    'fire-extinguisher',\n                    'flag',\n                    'flag-checkered',\n                    'flag-o',\n                    'flash',\n                    'flask',\n                    'flickr',\n                    'floppy-o',\n                    'folder',\n                    'folder-o',\n                    'folder-open',\n                    'folder-open-o',\n                    'font',\n                    'forumbee',\n                    'forward',\n                    'foursquare',\n                    'frown-o',\n                    'futbol-o',\n                    'gamepad',\n                    'gavel',\n                    'gbp',\n                    'ge',\n                    'gear',\n                    'gears',\n                    'genderless',\n                    'gift',\n                    'git',\n                    'git-square',\n                    'github',\n                    'github-alt',\n                    'github-square',\n                    'gittip',\n                    'glass',\n                    'globe',\n                    'google',\n                    'google-plus',\n                    'google-plus-square',\n                    'google-wallet',\n                    'graduation-cap',\n                    'gratipay',\n                    'group',\n                    'h-square',\n                    'hacker-news',\n                    'hand-o-down',\n                    'hand-o-left',\n                    'hand-o-right',\n                    'hand-o-up',\n                    'hdd-o',\n                    'header',\n                    'headphones',\n                    'heart',\n                    'heart-o',\n                    'heartbeat',\n                    'history',\n                    'home',\n                    'hospital-o',\n                    'hotel',\n                    'html5',\n                    'ils',\n                    'image',\n                    'inbox',\n                    'indent',\n                    'info',\n                    'info-circle',\n                    'inr',\n                    'instagram',\n                    'institution',\n                    'ioxhost',\n                    'italic',\n                    'joomla',\n                    'jpy',\n                    'jsfiddle',\n                    'key',\n                    'keyboard-o',\n                    'krw',\n                    'language',\n                    'laptop',\n                    'lastfm',\n                    'lastfm-square',\n                    'leaf',\n                    'leanpub',\n                    'legal',\n                    'lemon-o',\n                    'level-down',\n                    'level-up',\n                    'life-bouy',\n                    'life-buoy',\n                    'life-ring',\n                    'life-saver',\n                    'lightbulb-o',\n                    'line-chart',\n                    'link',\n                    'linkedin',\n                    'linkedin-square',\n                    'linux',\n                    'list',\n                    'list-alt',\n                    'list-ol',\n                    'list-ul',\n                    'location-arrow',\n                    'lock',\n                    'long-arrow-down',\n                    'long-arrow-left',\n                    'long-arrow-right',\n                    'long-arrow-up',\n                    'magic',\n                    'magnet',\n                    'mail-forward',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'male',\n                    'map-marker',\n                    'mars',\n                    'mars-double',\n                    'mars-stroke',\n                    'mars-stroke-h',\n                    'mars-stroke-v',\n                    'maxcdn',\n                    'meanpath',\n                    'medium',\n                    'medkit',\n                    'meh-o',\n                    'mercury',\n                    'microphone',\n                    'microphone-slash',\n                    'minus',\n                    'minus-circle',\n                    'minus-square',\n                    'minus-square-o',\n                    'mobile',\n                    'mobile-phone',\n                    'money',\n                    'moon-o',\n                    'mortar-board',\n                    'motorcycle',\n                    'music',\n                    'navicon',\n                    'neuter',\n                    'newspaper-o',\n                    'openid',\n                    'outdent',\n                    'pagelines',\n                    'paint-brush',\n                    'paper-plane',\n                    'paper-plane-o',\n                    'paperclip',\n                    'paragraph',\n                    'paste',\n                    'pause',\n                    'paw',\n                    'paypal',\n                    'pencil',\n                    'pencil-square',\n                    'pencil-square-o',\n                    'phone',\n                    'phone-square',\n                    'photo',\n                    'picture-o',\n                    'pie-chart',\n                    'pied-piper',\n                    'pied-piper-alt',\n                    'pinterest',\n                    'pinterest-p',\n                    'pinterest-square',\n                    'plane',\n                    'play',\n                    'play-circle',\n                    'play-circle-o',\n                    'plug',\n                    'plus',\n                    'plus-circle',\n                    'plus-square',\n                    'plus-square-o',\n                    'power-off',\n                    'print',\n                    'puzzle-piece',\n                    'qq',\n                    'qrcode',\n                    'question',\n                    'question-circle',\n                    'quote-left',\n                    'quote-right',\n                    'ra',\n                    'random',\n                    'rebel',\n                    'recycle',\n                    'reddit',\n                    'reddit-square',\n                    'refresh',\n                    'remove',\n                    'renren',\n                    'reorder',\n                    'repeat',\n                    'reply',\n                    'reply-all',\n                    'retweet',\n                    'rmb',\n                    'road',\n                    'rocket',\n                    'rotate-left',\n                    'rotate-right',\n                    'rouble',\n                    'rss',\n                    'rss-square',\n                    'rub',\n                    'ruble',\n                    'rupee',\n                    'save',\n                    'scissors',\n                    'search',\n                    'search-minus',\n                    'search-plus',\n                    'sellsy',\n                    'send',\n                    'send-o',\n                    'server',\n                    'share',\n                    'share-alt',\n                    'share-alt-square',\n                    'share-square',\n                    'share-square-o',\n                    'shekel',\n                    'sheqel',\n                    'shield',\n                    'ship',\n                    'shirtsinbulk',\n                    'shopping-cart',\n                    'sign-in',\n                    'sign-out',\n                    'signal',\n                    'simplybuilt',\n                    'sitemap',\n                    'skyatlas',\n                    'skype',\n                    'slack',\n                    'sliders',\n                    'slideshare',\n                    'smile-o',\n                    'soccer-ball-o',\n                    'sort',\n                    'sort-alpha-asc',\n                    'sort-alpha-desc',\n                    'sort-amount-asc',\n                    'sort-amount-desc',\n                    'sort-asc',\n                    'sort-desc',\n                    'sort-down',\n                    'sort-numeric-asc',\n                    'sort-numeric-desc',\n                    'sort-up',\n                    'soundcloud',\n                    'space-shuttle',\n                    'spinner',\n                    'spoon',\n                    'spotify',\n                    'square',\n                    'square-o',\n                    'stack-exchange',\n                    'stack-overflow',\n                    'star',\n                    'star-half',\n                    'star-half-empty',\n                    'star-half-full',\n                    'star-half-o',\n                    'star-o',\n                    'steam',\n                    'steam-square',\n                    'step-backward',\n                    'step-forward',\n                    'stethoscope',\n                    'stop',\n                    'street-view',\n                    'strikethrough',\n                    'stumbleupon',\n                    'stumbleupon-circle',\n                    'subscript',\n                    'subway',\n                    'suitcase',\n                    'sun-o',\n                    'superscript',\n                    'support',\n                    'table',\n                    'tablet',\n                    'tachometer',\n                    'tag',\n                    'tags',\n                    'tasks',\n                    'taxi',\n                    'tencent-weibo',\n                    'terminal',\n                    'text-height',\n                    'text-width',\n                    'th',\n                    'th-large',\n                    'th-list',\n                    'thumb-tack',\n                    'thumbs-down',\n                    'thumbs-o-down',\n                    'thumbs-o-up',\n                    'thumbs-up',\n                    'ticket',\n                    'times',\n                    'times-circle',\n                    'times-circle-o',\n                    'tint',\n                    'toggle-down',\n                    'toggle-left',\n                    'toggle-off',\n                    'toggle-on',\n                    'toggle-right',\n                    'toggle-up',\n                    'train',\n                    'transgender',\n                    'transgender-alt',\n                    'trash',\n                    'trash-o',\n                    'tree',\n                    'trello',\n                    'trophy',\n                    'truck',\n                    'try',\n                    'tty',\n                    'tumblr',\n                    'tumblr-square',\n                    'turkish-lira',\n                    'twitch',\n                    'twitter',\n                    'twitter-square',\n                    'umbrella',\n                    'underline',\n                    'undo',\n                    'university',\n                    'unlink',\n                    'unlock',\n                    'unlock-alt',\n                    'unsorted',\n                    'upload',\n                    'usd',\n                    'user',\n                    'user-md',\n                    'user-plus',\n                    'user-secret',\n                    'user-times',\n                    'users',\n                    'venus',\n                    'venus-double',\n                    'venus-mars',\n                    'viacoin',\n                    'video-camera',\n                    'vimeo-square',\n                    'vine',\n                    'vk',\n                    'volume-down',\n                    'volume-off',\n                    'volume-up',\n                    'warning',\n                    'wechat',\n                    'weibo',\n                    'weixin',\n                    'whatsapp',\n                    'wheelchair',\n                    'wifi',\n                    'windows',\n                    'won',\n                    'wordpress',\n                    'wrench',\n                    'xing',\n                    'xing-square',\n                    'yahoo',\n                    'yelp',\n                    'yen',\n                    'youtube',\n                    'youtube-play',\n                    'youtube-square'\n                ]\n            },\n            {\n                version: '4.4.0',\n                icons: [\n                    '',\n                    '500px',\n                    'adjust',\n                    'adn',\n                    'align-center',\n                    'align-justify',\n                    'align-left',\n                    'align-right',\n                    'amazon',\n                    'ambulance',\n                    'anchor',\n                    'android',\n                    'angellist',\n                    'angle-double-down',\n                    'angle-double-left',\n                    'angle-double-right',\n                    'angle-double-up',\n                    'angle-down',\n                    'angle-left',\n                    'angle-right',\n                    'angle-up',\n                    'apple',\n                    'archive',\n                    'area-chart',\n                    'arrow-circle-down',\n                    'arrow-circle-left',\n                    'arrow-circle-o-down',\n                    'arrow-circle-o-left',\n                    'arrow-circle-o-right',\n                    'arrow-circle-o-up',\n                    'arrow-circle-right',\n                    'arrow-circle-up',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-up',\n                    'arrows',\n                    'arrows-alt',\n                    'arrows-h',\n                    'arrows-v',\n                    'asterisk',\n                    'at',\n                    'automobile',\n                    'backward',\n                    'balance-scale',\n                    'ban',\n                    'bank',\n                    'bar-chart',\n                    'bar-chart-o',\n                    'barcode',\n                    'bars',\n                    'battery-0',\n                    'battery-1',\n                    'battery-2',\n                    'battery-3',\n                    'battery-4',\n                    'battery-empty',\n                    'battery-full',\n                    'battery-half',\n                    'battery-quarter',\n                    'battery-three-quarters',\n                    'bed',\n                    'beer',\n                    'behance',\n                    'behance-square',\n                    'bell',\n                    'bell-o',\n                    'bell-slash',\n                    'bell-slash-o',\n                    'bicycle',\n                    'binoculars',\n                    'birthday-cake',\n                    'bitbucket',\n                    'bitbucket-square',\n                    'bitcoin',\n                    'black-tie',\n                    'bold',\n                    'bolt',\n                    'bomb',\n                    'book',\n                    'bookmark',\n                    'bookmark-o',\n                    'briefcase',\n                    'btc',\n                    'bug',\n                    'building',\n                    'building-o',\n                    'bullhorn',\n                    'bullseye',\n                    'bus',\n                    'buysellads',\n                    'cab',\n                    'calculator',\n                    'calendar',\n                    'calendar-check-o',\n                    'calendar-minus-o',\n                    'calendar-o',\n                    'calendar-plus-o',\n                    'calendar-times-o',\n                    'camera',\n                    'camera-retro',\n                    'car',\n                    'caret-down',\n                    'caret-left',\n                    'caret-right',\n                    'caret-square-o-down',\n                    'caret-square-o-left',\n                    'caret-square-o-right',\n                    'caret-square-o-up',\n                    'caret-up',\n                    'cart-arrow-down',\n                    'cart-plus',\n                    'cc',\n                    'cc-amex',\n                    'cc-diners-club',\n                    'cc-discover',\n                    'cc-jcb',\n                    'cc-mastercard',\n                    'cc-paypal',\n                    'cc-stripe',\n                    'cc-visa',\n                    'certificate',\n                    'chain',\n                    'chain-broken',\n                    'check',\n                    'check-circle',\n                    'check-circle-o',\n                    'check-square',\n                    'check-square-o',\n                    'chevron-circle-down',\n                    'chevron-circle-left',\n                    'chevron-circle-right',\n                    'chevron-circle-up',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'child',\n                    'chrome',\n                    'circle',\n                    'circle-o',\n                    'circle-o-notch',\n                    'circle-thin',\n                    'clipboard',\n                    'clock-o',\n                    'clone',\n                    'close',\n                    'cloud',\n                    'cloud-download',\n                    'cloud-upload',\n                    'cny',\n                    'code',\n                    'code-fork',\n                    'codepen',\n                    'coffee',\n                    'cog',\n                    'cogs',\n                    'columns',\n                    'comment',\n                    'comment-o',\n                    'commenting',\n                    'commenting-o',\n                    'comments',\n                    'comments-o',\n                    'compass',\n                    'compress',\n                    'connectdevelop',\n                    'contao',\n                    'copy',\n                    'copyright',\n                    'creative-commons',\n                    'credit-card',\n                    'crop',\n                    'crosshairs',\n                    'css3',\n                    'cube',\n                    'cubes',\n                    'cut',\n                    'cutlery',\n                    'dashboard',\n                    'dashcube',\n                    'database',\n                    'dedent',\n                    'delicious',\n                    'desktop',\n                    'deviantart',\n                    'diamond',\n                    'digg',\n                    'dollar',\n                    'dot-circle-o',\n                    'download',\n                    'dribbble',\n                    'dropbox',\n                    'drupal',\n                    'edit',\n                    'eject',\n                    'ellipsis-h',\n                    'ellipsis-v',\n                    'empire',\n                    'envelope',\n                    'envelope-o',\n                    'envelope-square',\n                    'eraser',\n                    'eur',\n                    'euro',\n                    'exchange',\n                    'exclamation',\n                    'exclamation-circle',\n                    'exclamation-triangle',\n                    'expand',\n                    'expeditedssl',\n                    'external-link',\n                    'external-link-square',\n                    'eye',\n                    'eye-slash',\n                    'eyedropper',\n                    'facebook',\n                    'facebook-f',\n                    'facebook-official',\n                    'facebook-square',\n                    'fast-backward',\n                    'fast-forward',\n                    'fax',\n                    'feed',\n                    'female',\n                    'fighter-jet',\n                    'file',\n                    'file-archive-o',\n                    'file-audio-o',\n                    'file-code-o',\n                    'file-excel-o',\n                    'file-image-o',\n                    'file-movie-o',\n                    'file-o',\n                    'file-pdf-o',\n                    'file-photo-o',\n                    'file-picture-o',\n                    'file-powerpoint-o',\n                    'file-sound-o',\n                    'file-text',\n                    'file-text-o',\n                    'file-video-o',\n                    'file-word-o',\n                    'file-zip-o',\n                    'files-o',\n                    'film',\n                    'filter',\n                    'fire',\n                    'fire-extinguisher',\n                    'firefox',\n                    'flag',\n                    'flag-checkered',\n                    'flag-o',\n                    'flash',\n                    'flask',\n                    'flickr',\n                    'floppy-o',\n                    'folder',\n                    'folder-o',\n                    'folder-open',\n                    'folder-open-o',\n                    'font',\n                    'fonticons',\n                    'forumbee',\n                    'forward',\n                    'foursquare',\n                    'frown-o',\n                    'futbol-o',\n                    'gamepad',\n                    'gavel',\n                    'gbp',\n                    'ge',\n                    'gear',\n                    'gears',\n                    'genderless',\n                    'get-pocket',\n                    'gg',\n                    'gg-circle',\n                    'gift',\n                    'git',\n                    'git-square',\n                    'github',\n                    'github-alt',\n                    'github-square',\n                    'gittip',\n                    'glass',\n                    'globe',\n                    'google',\n                    'google-plus',\n                    'google-plus-square',\n                    'google-wallet',\n                    'graduation-cap',\n                    'gratipay',\n                    'group',\n                    'h-square',\n                    'hacker-news',\n                    'hand-grab-o',\n                    'hand-lizard-o',\n                    'hand-o-down',\n                    'hand-o-left',\n                    'hand-o-right',\n                    'hand-o-up',\n                    'hand-paper-o',\n                    'hand-peace-o',\n                    'hand-pointer-o',\n                    'hand-rock-o',\n                    'hand-scissors-o',\n                    'hand-spock-o',\n                    'hand-stop-o',\n                    'hdd-o',\n                    'header',\n                    'headphones',\n                    'heart',\n                    'heart-o',\n                    'heartbeat',\n                    'history',\n                    'home',\n                    'hospital-o',\n                    'hotel',\n                    'hourglass',\n                    'hourglass-1',\n                    'hourglass-2',\n                    'hourglass-3',\n                    'hourglass-end',\n                    'hourglass-half',\n                    'hourglass-o',\n                    'hourglass-start',\n                    'houzz',\n                    'html5',\n                    'i-cursor',\n                    'ils',\n                    'image',\n                    'inbox',\n                    'indent',\n                    'industry',\n                    'info',\n                    'info-circle',\n                    'inr',\n                    'instagram',\n                    'institution',\n                    'internet-explorer',\n                    'intersex',\n                    'ioxhost',\n                    'italic',\n                    'joomla',\n                    'jpy',\n                    'jsfiddle',\n                    'key',\n                    'keyboard-o',\n                    'krw',\n                    'language',\n                    'laptop',\n                    'lastfm',\n                    'lastfm-square',\n                    'leaf',\n                    'leanpub',\n                    'legal',\n                    'lemon-o',\n                    'level-down',\n                    'level-up',\n                    'life-bouy',\n                    'life-buoy',\n                    'life-ring',\n                    'life-saver',\n                    'lightbulb-o',\n                    'line-chart',\n                    'link',\n                    'linkedin',\n                    'linkedin-square',\n                    'linux',\n                    'list',\n                    'list-alt',\n                    'list-ol',\n                    'list-ul',\n                    'location-arrow',\n                    'lock',\n                    'long-arrow-down',\n                    'long-arrow-left',\n                    'long-arrow-right',\n                    'long-arrow-up',\n                    'magic',\n                    'magnet',\n                    'mail-forward',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'male',\n                    'map',\n                    'map-marker',\n                    'map-o',\n                    'map-pin',\n                    'map-signs',\n                    'mars',\n                    'mars-double',\n                    'mars-stroke',\n                    'mars-stroke-h',\n                    'mars-stroke-v',\n                    'maxcdn',\n                    'meanpath',\n                    'medium',\n                    'medkit',\n                    'meh-o',\n                    'mercury',\n                    'microphone',\n                    'microphone-slash',\n                    'minus',\n                    'minus-circle',\n                    'minus-square',\n                    'minus-square-o',\n                    'mobile',\n                    'mobile-phone',\n                    'money',\n                    'moon-o',\n                    'mortar-board',\n                    'motorcycle',\n                    'mouse-pointer',\n                    'music',\n                    'navicon',\n                    'neuter',\n                    'newspaper-o',\n                    'object-group',\n                    'object-ungroup',\n                    'odnoklassniki',\n                    'odnoklassniki-square',\n                    'opencart',\n                    'openid',\n                    'opera',\n                    'optin-monster',\n                    'outdent',\n                    'pagelines',\n                    'paint-brush',\n                    'paper-plane',\n                    'paper-plane-o',\n                    'paperclip',\n                    'paragraph',\n                    'paste',\n                    'pause',\n                    'paw',\n                    'paypal',\n                    'pencil',\n                    'pencil-square',\n                    'pencil-square-o',\n                    'phone',\n                    'phone-square',\n                    'photo',\n                    'picture-o',\n                    'pie-chart',\n                    'pied-piper',\n                    'pied-piper-alt',\n                    'pinterest',\n                    'pinterest-p',\n                    'pinterest-square',\n                    'plane',\n                    'play',\n                    'play-circle',\n                    'play-circle-o',\n                    'plug',\n                    'plus',\n                    'plus-circle',\n                    'plus-square',\n                    'plus-square-o',\n                    'power-off',\n                    'print',\n                    'puzzle-piece',\n                    'qq',\n                    'qrcode',\n                    'question',\n                    'question-circle',\n                    'quote-left',\n                    'quote-right',\n                    'ra',\n                    'random',\n                    'rebel',\n                    'recycle',\n                    'reddit',\n                    'reddit-square',\n                    'refresh',\n                    'registered',\n                    'remove',\n                    'renren',\n                    'reorder',\n                    'repeat',\n                    'reply',\n                    'reply-all',\n                    'retweet',\n                    'rmb',\n                    'road',\n                    'rocket',\n                    'rotate-left',\n                    'rotate-right',\n                    'rouble',\n                    'rss',\n                    'rss-square',\n                    'rub',\n                    'ruble',\n                    'rupee',\n                    'safari',\n                    'save',\n                    'scissors',\n                    'search',\n                    'search-minus',\n                    'search-plus',\n                    'sellsy',\n                    'send',\n                    'send-o',\n                    'server',\n                    'share',\n                    'share-alt',\n                    'share-alt-square',\n                    'share-square',\n                    'share-square-o',\n                    'shekel',\n                    'sheqel',\n                    'shield',\n                    'ship',\n                    'shirtsinbulk',\n                    'shopping-cart',\n                    'sign-in',\n                    'sign-out',\n                    'signal',\n                    'simplybuilt',\n                    'sitemap',\n                    'skyatlas',\n                    'skype',\n                    'slack',\n                    'sliders',\n                    'slideshare',\n                    'smile-o',\n                    'soccer-ball-o',\n                    'sort',\n                    'sort-alpha-asc',\n                    'sort-alpha-desc',\n                    'sort-amount-asc',\n                    'sort-amount-desc',\n                    'sort-asc',\n                    'sort-desc',\n                    'sort-down',\n                    'sort-numeric-asc',\n                    'sort-numeric-desc',\n                    'sort-up',\n                    'soundcloud',\n                    'space-shuttle',\n                    'spinner',\n                    'spoon',\n                    'spotify',\n                    'square',\n                    'square-o',\n                    'stack-exchange',\n                    'stack-overflow',\n                    'star',\n                    'star-half',\n                    'star-half-empty',\n                    'star-half-full',\n                    'star-half-o',\n                    'star-o',\n                    'steam',\n                    'steam-square',\n                    'step-backward',\n                    'step-forward',\n                    'stethoscope',\n                    'sticky-note',\n                    'sticky-note-o',\n                    'stop',\n                    'street-view',\n                    'strikethrough',\n                    'stumbleupon',\n                    'stumbleupon-circle',\n                    'subscript',\n                    'subway',\n                    'suitcase',\n                    'sun-o',\n                    'superscript',\n                    'support',\n                    'table',\n                    'tablet',\n                    'tachometer',\n                    'tag',\n                    'tags',\n                    'tasks',\n                    'taxi',\n                    'television',\n                    'tencent-weibo',\n                    'terminal',\n                    'text-height',\n                    'text-width',\n                    'th',\n                    'th-large',\n                    'th-list',\n                    'thumb-tack',\n                    'thumbs-down',\n                    'thumbs-o-down',\n                    'thumbs-o-up',\n                    'thumbs-up',\n                    'ticket',\n                    'times',\n                    'times-circle',\n                    'times-circle-o',\n                    'tint',\n                    'toggle-down',\n                    'toggle-left',\n                    'toggle-off',\n                    'toggle-on',\n                    'toggle-right',\n                    'toggle-up',\n                    'trademark',\n                    'train',\n                    'transgender',\n                    'transgender-alt',\n                    'trash',\n                    'trash-o',\n                    'tree',\n                    'trello',\n                    'tripadvisor',\n                    'trophy',\n                    'truck',\n                    'try',\n                    'tty',\n                    'tumblr',\n                    'tumblr-square',\n                    'turkish-lira',\n                    'tv',\n                    'twitch',\n                    'twitter',\n                    'twitter-square',\n                    'umbrella',\n                    'underline',\n                    'undo',\n                    'university',\n                    'unlink',\n                    'unlock',\n                    'unlock-alt',\n                    'unsorted',\n                    'upload',\n                    'usd',\n                    'user',\n                    'user-md',\n                    'user-plus',\n                    'user-secret',\n                    'user-times',\n                    'users',\n                    'venus',\n                    'venus-double',\n                    'venus-mars',\n                    'viacoin',\n                    'video-camera',\n                    'vimeo',\n                    'vimeo-square',\n                    'vine',\n                    'vk',\n                    'volume-down',\n                    'volume-off',\n                    'volume-up',\n                    'warning',\n                    'wechat',\n                    'weibo',\n                    'weixin',\n                    'whatsapp',\n                    'wheelchair',\n                    'wifi',\n                    'wikipedia-w',\n                    'windows',\n                    'won',\n                    'wordpress',\n                    'wrench',\n                    'xing',\n                    'xing-square',\n                    'y-combinator',\n                    'y-combinator-square',\n                    'yahoo',\n                    'yc',\n                    'yc-square',\n                    'yelp',\n                    'yen',\n                    'youtube',\n                    'youtube-play',\n                    'youtube-square'\n                ]\n            },\n            {\n                version: '4.5.0',\n                icons: [\n                    '',\n                    '500px',\n                    'adjust',\n                    'adn',\n                    'align-center',\n                    'align-justify',\n                    'align-left',\n                    'align-right',\n                    'amazon',\n                    'ambulance',\n                    'anchor',\n                    'android',\n                    'angellist',\n                    'angle-double-down',\n                    'angle-double-left',\n                    'angle-double-right',\n                    'angle-double-up',\n                    'angle-down',\n                    'angle-left',\n                    'angle-right',\n                    'angle-up',\n                    'apple',\n                    'archive',\n                    'area-chart',\n                    'arrow-circle-down',\n                    'arrow-circle-left',\n                    'arrow-circle-o-down',\n                    'arrow-circle-o-left',\n                    'arrow-circle-o-right',\n                    'arrow-circle-o-up',\n                    'arrow-circle-right',\n                    'arrow-circle-up',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-up',\n                    'arrows',\n                    'arrows-alt',\n                    'arrows-h',\n                    'arrows-v',\n                    'asterisk',\n                    'at',\n                    'automobile',\n                    'backward',\n                    'balance-scale',\n                    'ban',\n                    'bank',\n                    'bar-chart',\n                    'bar-chart-o',\n                    'barcode',\n                    'bars',\n                    'battery-0',\n                    'battery-1',\n                    'battery-2',\n                    'battery-3',\n                    'battery-4',\n                    'battery-empty',\n                    'battery-full',\n                    'battery-half',\n                    'battery-quarter',\n                    'battery-three-quarters',\n                    'bed',\n                    'beer',\n                    'behance',\n                    'behance-square',\n                    'bell',\n                    'bell-o',\n                    'bell-slash',\n                    'bell-slash-o',\n                    'bicycle',\n                    'binoculars',\n                    'birthday-cake',\n                    'bitbucket',\n                    'bitbucket-square',\n                    'bitcoin',\n                    'black-tie',\n                    'bluetooth',\n                    'bluetooth-b',\n                    'bold',\n                    'bolt',\n                    'bomb',\n                    'book',\n                    'bookmark',\n                    'bookmark-o',\n                    'briefcase',\n                    'btc',\n                    'bug',\n                    'building',\n                    'building-o',\n                    'bullhorn',\n                    'bullseye',\n                    'bus',\n                    'buysellads',\n                    'cab',\n                    'calculator',\n                    'calendar',\n                    'calendar-check-o',\n                    'calendar-minus-o',\n                    'calendar-o',\n                    'calendar-plus-o',\n                    'calendar-times-o',\n                    'camera',\n                    'camera-retro',\n                    'car',\n                    'caret-down',\n                    'caret-left',\n                    'caret-right',\n                    'caret-square-o-down',\n                    'caret-square-o-left',\n                    'caret-square-o-right',\n                    'caret-square-o-up',\n                    'caret-up',\n                    'cart-arrow-down',\n                    'cart-plus',\n                    'cc',\n                    'cc-amex',\n                    'cc-diners-club',\n                    'cc-discover',\n                    'cc-jcb',\n                    'cc-mastercard',\n                    'cc-paypal',\n                    'cc-stripe',\n                    'cc-visa',\n                    'certificate',\n                    'chain',\n                    'chain-broken',\n                    'check',\n                    'check-circle',\n                    'check-circle-o',\n                    'check-square',\n                    'check-square-o',\n                    'chevron-circle-down',\n                    'chevron-circle-left',\n                    'chevron-circle-right',\n                    'chevron-circle-up',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'child',\n                    'chrome',\n                    'circle',\n                    'circle-o',\n                    'circle-o-notch',\n                    'circle-thin',\n                    'clipboard',\n                    'clock-o',\n                    'clone',\n                    'close',\n                    'cloud',\n                    'cloud-download',\n                    'cloud-upload',\n                    'cny',\n                    'code',\n                    'code-fork',\n                    'codepen',\n                    'codiepie',\n                    'coffee',\n                    'cog',\n                    'cogs',\n                    'columns',\n                    'comment',\n                    'comment-o',\n                    'commenting',\n                    'commenting-o',\n                    'comments',\n                    'comments-o',\n                    'compass',\n                    'compress',\n                    'connectdevelop',\n                    'contao',\n                    'copy',\n                    'copyright',\n                    'creative-commons',\n                    'credit-card',\n                    'credit-card-alt',\n                    'crop',\n                    'crosshairs',\n                    'css3',\n                    'cube',\n                    'cubes',\n                    'cut',\n                    'cutlery',\n                    'dashboard',\n                    'dashcube',\n                    'database',\n                    'dedent',\n                    'delicious',\n                    'desktop',\n                    'deviantart',\n                    'diamond',\n                    'digg',\n                    'dollar',\n                    'dot-circle-o',\n                    'download',\n                    'dribbble',\n                    'dropbox',\n                    'drupal',\n                    'edge',\n                    'edit',\n                    'eject',\n                    'ellipsis-h',\n                    'ellipsis-v',\n                    'empire',\n                    'envelope',\n                    'envelope-o',\n                    'envelope-square',\n                    'eraser',\n                    'eur',\n                    'euro',\n                    'exchange',\n                    'exclamation',\n                    'exclamation-circle',\n                    'exclamation-triangle',\n                    'expand',\n                    'expeditedssl',\n                    'external-link',\n                    'external-link-square',\n                    'eye',\n                    'eye-slash',\n                    'eyedropper',\n                    'facebook',\n                    'facebook-f',\n                    'facebook-official',\n                    'facebook-square',\n                    'fast-backward',\n                    'fast-forward',\n                    'fax',\n                    'feed',\n                    'female',\n                    'fighter-jet',\n                    'file',\n                    'file-archive-o',\n                    'file-audio-o',\n                    'file-code-o',\n                    'file-excel-o',\n                    'file-image-o',\n                    'file-movie-o',\n                    'file-o',\n                    'file-pdf-o',\n                    'file-photo-o',\n                    'file-picture-o',\n                    'file-powerpoint-o',\n                    'file-sound-o',\n                    'file-text',\n                    'file-text-o',\n                    'file-video-o',\n                    'file-word-o',\n                    'file-zip-o',\n                    'files-o',\n                    'film',\n                    'filter',\n                    'fire',\n                    'fire-extinguisher',\n                    'firefox',\n                    'flag',\n                    'flag-checkered',\n                    'flag-o',\n                    'flash',\n                    'flask',\n                    'flickr',\n                    'floppy-o',\n                    'folder',\n                    'folder-o',\n                    'folder-open',\n                    'folder-open-o',\n                    'font',\n                    'fonticons',\n                    'fort-awesome',\n                    'forumbee',\n                    'forward',\n                    'foursquare',\n                    'frown-o',\n                    'futbol-o',\n                    'gamepad',\n                    'gavel',\n                    'gbp',\n                    'ge',\n                    'gear',\n                    'gears',\n                    'genderless',\n                    'get-pocket',\n                    'gg',\n                    'gg-circle',\n                    'gift',\n                    'git',\n                    'git-square',\n                    'github',\n                    'github-alt',\n                    'github-square',\n                    'gittip',\n                    'glass',\n                    'globe',\n                    'google',\n                    'google-plus',\n                    'google-plus-square',\n                    'google-wallet',\n                    'graduation-cap',\n                    'gratipay',\n                    'group',\n                    'h-square',\n                    'hacker-news',\n                    'hand-grab-o',\n                    'hand-lizard-o',\n                    'hand-o-down',\n                    'hand-o-left',\n                    'hand-o-right',\n                    'hand-o-up',\n                    'hand-paper-o',\n                    'hand-peace-o',\n                    'hand-pointer-o',\n                    'hand-rock-o',\n                    'hand-scissors-o',\n                    'hand-spock-o',\n                    'hand-stop-o',\n                    'hashtag',\n                    'hdd-o',\n                    'header',\n                    'headphones',\n                    'heart',\n                    'heart-o',\n                    'heartbeat',\n                    'history',\n                    'home',\n                    'hospital-o',\n                    'hotel',\n                    'hourglass',\n                    'hourglass-1',\n                    'hourglass-2',\n                    'hourglass-3',\n                    'hourglass-end',\n                    'hourglass-half',\n                    'hourglass-o',\n                    'hourglass-start',\n                    'houzz',\n                    'html5',\n                    'i-cursor',\n                    'ils',\n                    'image',\n                    'inbox',\n                    'indent',\n                    'industry',\n                    'info',\n                    'info-circle',\n                    'inr',\n                    'instagram',\n                    'institution',\n                    'internet-explorer',\n                    'intersex',\n                    'ioxhost',\n                    'italic',\n                    'joomla',\n                    'jpy',\n                    'jsfiddle',\n                    'key',\n                    'keyboard-o',\n                    'krw',\n                    'language',\n                    'laptop',\n                    'lastfm',\n                    'lastfm-square',\n                    'leaf',\n                    'leanpub',\n                    'legal',\n                    'lemon-o',\n                    'level-down',\n                    'level-up',\n                    'life-bouy',\n                    'life-buoy',\n                    'life-ring',\n                    'life-saver',\n                    'lightbulb-o',\n                    'line-chart',\n                    'link',\n                    'linkedin',\n                    'linkedin-square',\n                    'linux',\n                    'list',\n                    'list-alt',\n                    'list-ol',\n                    'list-ul',\n                    'location-arrow',\n                    'lock',\n                    'long-arrow-down',\n                    'long-arrow-left',\n                    'long-arrow-right',\n                    'long-arrow-up',\n                    'magic',\n                    'magnet',\n                    'mail-forward',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'male',\n                    'map',\n                    'map-marker',\n                    'map-o',\n                    'map-pin',\n                    'map-signs',\n                    'mars',\n                    'mars-double',\n                    'mars-stroke',\n                    'mars-stroke-h',\n                    'mars-stroke-v',\n                    'maxcdn',\n                    'meanpath',\n                    'medium',\n                    'medkit',\n                    'meh-o',\n                    'mercury',\n                    'microphone',\n                    'microphone-slash',\n                    'minus',\n                    'minus-circle',\n                    'minus-square',\n                    'minus-square-o',\n                    'mixcloud',\n                    'mobile',\n                    'mobile-phone',\n                    'modx',\n                    'money',\n                    'moon-o',\n                    'mortar-board',\n                    'motorcycle',\n                    'mouse-pointer',\n                    'music',\n                    'navicon',\n                    'neuter',\n                    'newspaper-o',\n                    'object-group',\n                    'object-ungroup',\n                    'odnoklassniki',\n                    'odnoklassniki-square',\n                    'opencart',\n                    'openid',\n                    'opera',\n                    'optin-monster',\n                    'outdent',\n                    'pagelines',\n                    'paint-brush',\n                    'paper-plane',\n                    'paper-plane-o',\n                    'paperclip',\n                    'paragraph',\n                    'paste',\n                    'pause',\n                    'pause-circle',\n                    'pause-circle-o',\n                    'paw',\n                    'paypal',\n                    'pencil',\n                    'pencil-square',\n                    'pencil-square-o',\n                    'percent',\n                    'phone',\n                    'phone-square',\n                    'photo',\n                    'picture-o',\n                    'pie-chart',\n                    'pied-piper',\n                    'pied-piper-alt',\n                    'pinterest',\n                    'pinterest-p',\n                    'pinterest-square',\n                    'plane',\n                    'play',\n                    'play-circle',\n                    'play-circle-o',\n                    'plug',\n                    'plus',\n                    'plus-circle',\n                    'plus-square',\n                    'plus-square-o',\n                    'power-off',\n                    'print',\n                    'product-hunt',\n                    'puzzle-piece',\n                    'qq',\n                    'qrcode',\n                    'question',\n                    'question-circle',\n                    'quote-left',\n                    'quote-right',\n                    'ra',\n                    'random',\n                    'rebel',\n                    'recycle',\n                    'reddit',\n                    'reddit-alien',\n                    'reddit-square',\n                    'refresh',\n                    'registered',\n                    'remove',\n                    'renren',\n                    'reorder',\n                    'repeat',\n                    'reply',\n                    'reply-all',\n                    'retweet',\n                    'rmb',\n                    'road',\n                    'rocket',\n                    'rotate-left',\n                    'rotate-right',\n                    'rouble',\n                    'rss',\n                    'rss-square',\n                    'rub',\n                    'ruble',\n                    'rupee',\n                    'safari',\n                    'save',\n                    'scissors',\n                    'scribd',\n                    'search',\n                    'search-minus',\n                    'search-plus',\n                    'sellsy',\n                    'send',\n                    'send-o',\n                    'server',\n                    'share',\n                    'share-alt',\n                    'share-alt-square',\n                    'share-square',\n                    'share-square-o',\n                    'shekel',\n                    'sheqel',\n                    'shield',\n                    'ship',\n                    'shirtsinbulk',\n                    'shopping-bag',\n                    'shopping-basket',\n                    'shopping-cart',\n                    'sign-in',\n                    'sign-out',\n                    'signal',\n                    'simplybuilt',\n                    'sitemap',\n                    'skyatlas',\n                    'skype',\n                    'slack',\n                    'sliders',\n                    'slideshare',\n                    'smile-o',\n                    'soccer-ball-o',\n                    'sort',\n                    'sort-alpha-asc',\n                    'sort-alpha-desc',\n                    'sort-amount-asc',\n                    'sort-amount-desc',\n                    'sort-asc',\n                    'sort-desc',\n                    'sort-down',\n                    'sort-numeric-asc',\n                    'sort-numeric-desc',\n                    'sort-up',\n                    'soundcloud',\n                    'space-shuttle',\n                    'spinner',\n                    'spoon',\n                    'spotify',\n                    'square',\n                    'square-o',\n                    'stack-exchange',\n                    'stack-overflow',\n                    'star',\n                    'star-half',\n                    'star-half-empty',\n                    'star-half-full',\n                    'star-half-o',\n                    'star-o',\n                    'steam',\n                    'steam-square',\n                    'step-backward',\n                    'step-forward',\n                    'stethoscope',\n                    'sticky-note',\n                    'sticky-note-o',\n                    'stop',\n                    'stop-circle',\n                    'stop-circle-o',\n                    'street-view',\n                    'strikethrough',\n                    'stumbleupon',\n                    'stumbleupon-circle',\n                    'subscript',\n                    'subway',\n                    'suitcase',\n                    'sun-o',\n                    'superscript',\n                    'support',\n                    'table',\n                    'tablet',\n                    'tachometer',\n                    'tag',\n                    'tags',\n                    'tasks',\n                    'taxi',\n                    'television',\n                    'tencent-weibo',\n                    'terminal',\n                    'text-height',\n                    'text-width',\n                    'th',\n                    'th-large',\n                    'th-list',\n                    'thumb-tack',\n                    'thumbs-down',\n                    'thumbs-o-down',\n                    'thumbs-o-up',\n                    'thumbs-up',\n                    'ticket',\n                    'times',\n                    'times-circle',\n                    'times-circle-o',\n                    'tint',\n                    'toggle-down',\n                    'toggle-left',\n                    'toggle-off',\n                    'toggle-on',\n                    'toggle-right',\n                    'toggle-up',\n                    'trademark',\n                    'train',\n                    'transgender',\n                    'transgender-alt',\n                    'trash',\n                    'trash-o',\n                    'tree',\n                    'trello',\n                    'tripadvisor',\n                    'trophy',\n                    'truck',\n                    'try',\n                    'tty',\n                    'tumblr',\n                    'tumblr-square',\n                    'turkish-lira',\n                    'tv',\n                    'twitch',\n                    'twitter',\n                    'twitter-square',\n                    'umbrella',\n                    'underline',\n                    'undo',\n                    'university',\n                    'unlink',\n                    'unlock',\n                    'unlock-alt',\n                    'unsorted',\n                    'upload',\n                    'usb',\n                    'usd',\n                    'user',\n                    'user-md',\n                    'user-plus',\n                    'user-secret',\n                    'user-times',\n                    'users',\n                    'venus',\n                    'venus-double',\n                    'venus-mars',\n                    'viacoin',\n                    'video-camera',\n                    'vimeo',\n                    'vimeo-square',\n                    'vine',\n                    'vk',\n                    'volume-down',\n                    'volume-off',\n                    'volume-up',\n                    'warning',\n                    'wechat',\n                    'weibo',\n                    'weixin',\n                    'whatsapp',\n                    'wheelchair',\n                    'wifi',\n                    'wikipedia-w',\n                    'windows',\n                    'won',\n                    'wordpress',\n                    'wrench',\n                    'xing',\n                    'xing-square',\n                    'y-combinator',\n                    'y-combinator-square',\n                    'yahoo',\n                    'yc',\n                    'yc-square',\n                    'yelp',\n                    'yen',\n                    'youtube',\n                    'youtube-play',\n                    'youtube-square'\n                ]\n            },\n            {\n                version: '4.6.0',\n                icons: [\n                    '',\n                    '500px',\n                    'adjust',\n                    'adn',\n                    'align-center',\n                    'align-justify',\n                    'align-left',\n                    'align-right',\n                    'amazon',\n                    'ambulance',\n                    'american-sign-language-interpreting',\n                    'anchor',\n                    'android',\n                    'angellist',\n                    'angle-double-down',\n                    'angle-double-left',\n                    'angle-double-right',\n                    'angle-double-up',\n                    'angle-down',\n                    'angle-left',\n                    'angle-right',\n                    'angle-up',\n                    'apple',\n                    'archive',\n                    'area-chart',\n                    'arrow-circle-down',\n                    'arrow-circle-left',\n                    'arrow-circle-o-down',\n                    'arrow-circle-o-left',\n                    'arrow-circle-o-right',\n                    'arrow-circle-o-up',\n                    'arrow-circle-right',\n                    'arrow-circle-up',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-up',\n                    'arrows',\n                    'arrows-alt',\n                    'arrows-h',\n                    'arrows-v',\n                    'asl-interpreting',\n                    'assistive-listening-systems',\n                    'asterisk',\n                    'at',\n                    'audio-description',\n                    'automobile',\n                    'backward',\n                    'balance-scale',\n                    'ban',\n                    'bank',\n                    'bar-chart',\n                    'bar-chart-o',\n                    'barcode',\n                    'bars',\n                    'battery-0',\n                    'battery-1',\n                    'battery-2',\n                    'battery-3',\n                    'battery-4',\n                    'battery-empty',\n                    'battery-full',\n                    'battery-half',\n                    'battery-quarter',\n                    'battery-three-quarters',\n                    'bed',\n                    'beer',\n                    'behance',\n                    'behance-square',\n                    'bell',\n                    'bell-o',\n                    'bell-slash',\n                    'bell-slash-o',\n                    'bicycle',\n                    'binoculars',\n                    'birthday-cake',\n                    'bitbucket',\n                    'bitbucket-square',\n                    'bitcoin',\n                    'black-tie',\n                    'blind',\n                    'bluetooth',\n                    'bluetooth-b',\n                    'bold',\n                    'bolt',\n                    'bomb',\n                    'book',\n                    'bookmark',\n                    'bookmark-o',\n                    'braille',\n                    'briefcase',\n                    'btc',\n                    'bug',\n                    'building',\n                    'building-o',\n                    'bullhorn',\n                    'bullseye',\n                    'bus',\n                    'buysellads',\n                    'cab',\n                    'calculator',\n                    'calendar',\n                    'calendar-check-o',\n                    'calendar-minus-o',\n                    'calendar-o',\n                    'calendar-plus-o',\n                    'calendar-times-o',\n                    'camera',\n                    'camera-retro',\n                    'car',\n                    'caret-down',\n                    'caret-left',\n                    'caret-right',\n                    'caret-square-o-down',\n                    'caret-square-o-left',\n                    'caret-square-o-right',\n                    'caret-square-o-up',\n                    'caret-up',\n                    'cart-arrow-down',\n                    'cart-plus',\n                    'cc',\n                    'cc-amex',\n                    'cc-diners-club',\n                    'cc-discover',\n                    'cc-jcb',\n                    'cc-mastercard',\n                    'cc-paypal',\n                    'cc-stripe',\n                    'cc-visa',\n                    'certificate',\n                    'chain',\n                    'chain-broken',\n                    'check',\n                    'check-circle',\n                    'check-circle-o',\n                    'check-square',\n                    'check-square-o',\n                    'chevron-circle-down',\n                    'chevron-circle-left',\n                    'chevron-circle-right',\n                    'chevron-circle-up',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'child',\n                    'chrome',\n                    'circle',\n                    'circle-o',\n                    'circle-o-notch',\n                    'circle-thin',\n                    'clipboard',\n                    'clock-o',\n                    'clone',\n                    'close',\n                    'cloud',\n                    'cloud-download',\n                    'cloud-upload',\n                    'cny',\n                    'code',\n                    'code-fork',\n                    'codepen',\n                    'codiepie',\n                    'coffee',\n                    'cog',\n                    'cogs',\n                    'columns',\n                    'comment',\n                    'comment-o',\n                    'commenting',\n                    'commenting-o',\n                    'comments',\n                    'comments-o',\n                    'compass',\n                    'compress',\n                    'connectdevelop',\n                    'contao',\n                    'copy',\n                    'copyright',\n                    'creative-commons',\n                    'credit-card',\n                    'credit-card-alt',\n                    'crop',\n                    'crosshairs',\n                    'css3',\n                    'cube',\n                    'cubes',\n                    'cut',\n                    'cutlery',\n                    'dashboard',\n                    'dashcube',\n                    'database',\n                    'deaf',\n                    'deafness',\n                    'dedent',\n                    'delicious',\n                    'desktop',\n                    'deviantart',\n                    'diamond',\n                    'digg',\n                    'dollar',\n                    'dot-circle-o',\n                    'download',\n                    'dribbble',\n                    'dropbox',\n                    'drupal',\n                    'edge',\n                    'edit',\n                    'eject',\n                    'ellipsis-h',\n                    'ellipsis-v',\n                    'empire',\n                    'envelope',\n                    'envelope-o',\n                    'envelope-square',\n                    'envira',\n                    'eraser',\n                    'eur',\n                    'euro',\n                    'exchange',\n                    'exclamation',\n                    'exclamation-circle',\n                    'exclamation-triangle',\n                    'expand',\n                    'expeditedssl',\n                    'external-link',\n                    'external-link-square',\n                    'eye',\n                    'eye-slash',\n                    'eyedropper',\n                    'facebook',\n                    'facebook-f',\n                    'facebook-official',\n                    'facebook-square',\n                    'fast-backward',\n                    'fast-forward',\n                    'fax',\n                    'feed',\n                    'female',\n                    'fighter-jet',\n                    'file',\n                    'file-archive-o',\n                    'file-audio-o',\n                    'file-code-o',\n                    'file-excel-o',\n                    'file-image-o',\n                    'file-movie-o',\n                    'file-o',\n                    'file-pdf-o',\n                    'file-photo-o',\n                    'file-picture-o',\n                    'file-powerpoint-o',\n                    'file-sound-o',\n                    'file-text',\n                    'file-text-o',\n                    'file-video-o',\n                    'file-word-o',\n                    'file-zip-o',\n                    'files-o',\n                    'film',\n                    'filter',\n                    'fire',\n                    'fire-extinguisher',\n                    'firefox',\n                    'flag',\n                    'flag-checkered',\n                    'flag-o',\n                    'flash',\n                    'flask',\n                    'flickr',\n                    'floppy-o',\n                    'folder',\n                    'folder-o',\n                    'folder-open',\n                    'folder-open-o',\n                    'font',\n                    'fonticons',\n                    'fort-awesome',\n                    'forumbee',\n                    'forward',\n                    'foursquare',\n                    'frown-o',\n                    'futbol-o',\n                    'gamepad',\n                    'gavel',\n                    'gbp',\n                    'ge',\n                    'gear',\n                    'gears',\n                    'genderless',\n                    'get-pocket',\n                    'gg',\n                    'gg-circle',\n                    'gift',\n                    'git',\n                    'git-square',\n                    'github',\n                    'github-alt',\n                    'github-square',\n                    'gitlab',\n                    'gittip',\n                    'glass',\n                    'glide',\n                    'glide-g',\n                    'globe',\n                    'google',\n                    'google-plus',\n                    'google-plus-square',\n                    'google-wallet',\n                    'graduation-cap',\n                    'gratipay',\n                    'group',\n                    'h-square',\n                    'hacker-news',\n                    'hand-grab-o',\n                    'hand-lizard-o',\n                    'hand-o-down',\n                    'hand-o-left',\n                    'hand-o-right',\n                    'hand-o-up',\n                    'hand-paper-o',\n                    'hand-peace-o',\n                    'hand-pointer-o',\n                    'hand-rock-o',\n                    'hand-scissors-o',\n                    'hand-spock-o',\n                    'hand-stop-o',\n                    'hard-of-hearing',\n                    'hashtag',\n                    'hdd-o',\n                    'header',\n                    'headphones',\n                    'heart',\n                    'heart-o',\n                    'heartbeat',\n                    'history',\n                    'home',\n                    'hospital-o',\n                    'hotel',\n                    'hourglass',\n                    'hourglass-1',\n                    'hourglass-2',\n                    'hourglass-3',\n                    'hourglass-end',\n                    'hourglass-half',\n                    'hourglass-o',\n                    'hourglass-start',\n                    'houzz',\n                    'html5',\n                    'i-cursor',\n                    'ils',\n                    'image',\n                    'inbox',\n                    'indent',\n                    'industry',\n                    'info',\n                    'info-circle',\n                    'inr',\n                    'instagram',\n                    'institution',\n                    'internet-explorer',\n                    'intersex',\n                    'ioxhost',\n                    'italic',\n                    'joomla',\n                    'jpy',\n                    'jsfiddle',\n                    'key',\n                    'keyboard-o',\n                    'krw',\n                    'language',\n                    'laptop',\n                    'lastfm',\n                    'lastfm-square',\n                    'leaf',\n                    'leanpub',\n                    'legal',\n                    'lemon-o',\n                    'level-down',\n                    'level-up',\n                    'life-bouy',\n                    'life-buoy',\n                    'life-ring',\n                    'life-saver',\n                    'lightbulb-o',\n                    'line-chart',\n                    'link',\n                    'linkedin',\n                    'linkedin-square',\n                    'linux',\n                    'list',\n                    'list-alt',\n                    'list-ol',\n                    'list-ul',\n                    'location-arrow',\n                    'lock',\n                    'long-arrow-down',\n                    'long-arrow-left',\n                    'long-arrow-right',\n                    'long-arrow-up',\n                    'low-vision',\n                    'magic',\n                    'magnet',\n                    'mail-forward',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'male',\n                    'map',\n                    'map-marker',\n                    'map-o',\n                    'map-pin',\n                    'map-signs',\n                    'mars',\n                    'mars-double',\n                    'mars-stroke',\n                    'mars-stroke-h',\n                    'mars-stroke-v',\n                    'maxcdn',\n                    'meanpath',\n                    'medium',\n                    'medkit',\n                    'meh-o',\n                    'mercury',\n                    'microphone',\n                    'microphone-slash',\n                    'minus',\n                    'minus-circle',\n                    'minus-square',\n                    'minus-square-o',\n                    'mixcloud',\n                    'mobile',\n                    'mobile-phone',\n                    'modx',\n                    'money',\n                    'moon-o',\n                    'mortar-board',\n                    'motorcycle',\n                    'mouse-pointer',\n                    'music',\n                    'navicon',\n                    'neuter',\n                    'newspaper-o',\n                    'object-group',\n                    'object-ungroup',\n                    'odnoklassniki',\n                    'odnoklassniki-square',\n                    'opencart',\n                    'openid',\n                    'opera',\n                    'optin-monster',\n                    'outdent',\n                    'pagelines',\n                    'paint-brush',\n                    'paper-plane',\n                    'paper-plane-o',\n                    'paperclip',\n                    'paragraph',\n                    'paste',\n                    'pause',\n                    'pause-circle',\n                    'pause-circle-o',\n                    'paw',\n                    'paypal',\n                    'pencil',\n                    'pencil-square',\n                    'pencil-square-o',\n                    'percent',\n                    'phone',\n                    'phone-square',\n                    'photo',\n                    'picture-o',\n                    'pie-chart',\n                    'pied-piper',\n                    'pied-piper-alt',\n                    'pinterest',\n                    'pinterest-p',\n                    'pinterest-square',\n                    'plane',\n                    'play',\n                    'play-circle',\n                    'play-circle-o',\n                    'plug',\n                    'plus',\n                    'plus-circle',\n                    'plus-square',\n                    'plus-square-o',\n                    'power-off',\n                    'print',\n                    'product-hunt',\n                    'puzzle-piece',\n                    'qq',\n                    'qrcode',\n                    'question',\n                    'question-circle',\n                    'question-circle-o',\n                    'quote-left',\n                    'quote-right',\n                    'ra',\n                    'random',\n                    'rebel',\n                    'recycle',\n                    'reddit',\n                    'reddit-alien',\n                    'reddit-square',\n                    'refresh',\n                    'registered',\n                    'remove',\n                    'renren',\n                    'reorder',\n                    'repeat',\n                    'reply',\n                    'reply-all',\n                    'retweet',\n                    'rmb',\n                    'road',\n                    'rocket',\n                    'rotate-left',\n                    'rotate-right',\n                    'rouble',\n                    'rss',\n                    'rss-square',\n                    'rub',\n                    'ruble',\n                    'rupee',\n                    'safari',\n                    'save',\n                    'scissors',\n                    'scribd',\n                    'search',\n                    'search-minus',\n                    'search-plus',\n                    'sellsy',\n                    'send',\n                    'send-o',\n                    'server',\n                    'share',\n                    'share-alt',\n                    'share-alt-square',\n                    'share-square',\n                    'share-square-o',\n                    'shekel',\n                    'sheqel',\n                    'shield',\n                    'ship',\n                    'shirtsinbulk',\n                    'shopping-bag',\n                    'shopping-basket',\n                    'shopping-cart',\n                    'sign-in',\n                    'sign-language',\n                    'sign-out',\n                    'signal',\n                    'signing',\n                    'simplybuilt',\n                    'sitemap',\n                    'skyatlas',\n                    'skype',\n                    'slack',\n                    'sliders',\n                    'slideshare',\n                    'smile-o',\n                    'snapchat',\n                    'snapchat-ghost',\n                    'snapchat-square',\n                    'soccer-ball-o',\n                    'sort',\n                    'sort-alpha-asc',\n                    'sort-alpha-desc',\n                    'sort-amount-asc',\n                    'sort-amount-desc',\n                    'sort-asc',\n                    'sort-desc',\n                    'sort-down',\n                    'sort-numeric-asc',\n                    'sort-numeric-desc',\n                    'sort-up',\n                    'soundcloud',\n                    'space-shuttle',\n                    'spinner',\n                    'spoon',\n                    'spotify',\n                    'square',\n                    'square-o',\n                    'stack-exchange',\n                    'stack-overflow',\n                    'star',\n                    'star-half',\n                    'star-half-empty',\n                    'star-half-full',\n                    'star-half-o',\n                    'star-o',\n                    'steam',\n                    'steam-square',\n                    'step-backward',\n                    'step-forward',\n                    'stethoscope',\n                    'sticky-note',\n                    'sticky-note-o',\n                    'stop',\n                    'stop-circle',\n                    'stop-circle-o',\n                    'street-view',\n                    'strikethrough',\n                    'stumbleupon',\n                    'stumbleupon-circle',\n                    'subscript',\n                    'subway',\n                    'suitcase',\n                    'sun-o',\n                    'superscript',\n                    'support',\n                    'table',\n                    'tablet',\n                    'tachometer',\n                    'tag',\n                    'tags',\n                    'tasks',\n                    'taxi',\n                    'television',\n                    'tencent-weibo',\n                    'terminal',\n                    'text-height',\n                    'text-width',\n                    'th',\n                    'th-large',\n                    'th-list',\n                    'thumb-tack',\n                    'thumbs-down',\n                    'thumbs-o-down',\n                    'thumbs-o-up',\n                    'thumbs-up',\n                    'ticket',\n                    'times',\n                    'times-circle',\n                    'times-circle-o',\n                    'tint',\n                    'toggle-down',\n                    'toggle-left',\n                    'toggle-off',\n                    'toggle-on',\n                    'toggle-right',\n                    'toggle-up',\n                    'trademark',\n                    'train',\n                    'transgender',\n                    'transgender-alt',\n                    'trash',\n                    'trash-o',\n                    'tree',\n                    'trello',\n                    'tripadvisor',\n                    'trophy',\n                    'truck',\n                    'try',\n                    'tty',\n                    'tumblr',\n                    'tumblr-square',\n                    'turkish-lira',\n                    'tv',\n                    'twitch',\n                    'twitter',\n                    'twitter-square',\n                    'umbrella',\n                    'underline',\n                    'undo',\n                    'universal-access',\n                    'university',\n                    'unlink',\n                    'unlock',\n                    'unlock-alt',\n                    'unsorted',\n                    'upload',\n                    'usb',\n                    'usd',\n                    'user',\n                    'user-md',\n                    'user-plus',\n                    'user-secret',\n                    'user-times',\n                    'users',\n                    'venus',\n                    'venus-double',\n                    'venus-mars',\n                    'viacoin',\n                    'viadeo',\n                    'viadeo-square',\n                    'video-camera',\n                    'vimeo',\n                    'vimeo-square',\n                    'vine',\n                    'vk',\n                    'volume-control-phone',\n                    'volume-down',\n                    'volume-off',\n                    'volume-up',\n                    'warning',\n                    'wechat',\n                    'weibo',\n                    'weixin',\n                    'whatsapp',\n                    'wheelchair',\n                    'wheelchair-alt',\n                    'wifi',\n                    'wikipedia-w',\n                    'windows',\n                    'won',\n                    'wordpress',\n                    'wpbeginner',\n                    'wpforms',\n                    'wrench',\n                    'xing',\n                    'xing-square',\n                    'y-combinator',\n                    'y-combinator-square',\n                    'yahoo',\n                    'yc',\n                    'yc-square',\n                    'yelp',\n                    'yen',\n                    'youtube',\n                    'youtube-play',\n                    'youtube-square'\n                ]\n            },\n            {\n                version: '4.7.0',\n                icons: [\n                    '',\n                    '500px',\n                    'address-book',\n                    'address-book-o',\n                    'address-card',\n                    'address-card-o',\n                    'adjust',\n                    'adn',\n                    'align-center',\n                    'align-justify',\n                    'align-left',\n                    'align-right',\n                    'amazon',\n                    'ambulance',\n                    'american-sign-language-interpreting',\n                    'anchor',\n                    'android',\n                    'angellist',\n                    'angle-double-down',\n                    'angle-double-left',\n                    'angle-double-right',\n                    'angle-double-up',\n                    'angle-down',\n                    'angle-left',\n                    'angle-right',\n                    'angle-up',\n                    'apple',\n                    'archive',\n                    'area-chart',\n                    'arrow-circle-down',\n                    'arrow-circle-left',\n                    'arrow-circle-o-down',\n                    'arrow-circle-o-left',\n                    'arrow-circle-o-right',\n                    'arrow-circle-o-up',\n                    'arrow-circle-right',\n                    'arrow-circle-up',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-up',\n                    'arrows',\n                    'arrows-alt',\n                    'arrows-h',\n                    'arrows-v',\n                    'asl-interpreting',\n                    'assistive-listening-systems',\n                    'asterisk',\n                    'at',\n                    'audio-description',\n                    'automobile',\n                    'backward',\n                    'balance-scale',\n                    'ban',\n                    'bandcamp',\n                    'bank',\n                    'bar-chart',\n                    'bar-chart-o',\n                    'barcode',\n                    'bars',\n                    'bath',\n                    'bathtub',\n                    'battery',\n                    'battery-0',\n                    'battery-1',\n                    'battery-2',\n                    'battery-3',\n                    'battery-4',\n                    'battery-empty',\n                    'battery-full',\n                    'battery-half',\n                    'battery-quarter',\n                    'battery-three-quarters',\n                    'bed',\n                    'beer',\n                    'behance',\n                    'behance-square',\n                    'bell',\n                    'bell-o',\n                    'bell-slash',\n                    'bell-slash-o',\n                    'bicycle',\n                    'binoculars',\n                    'birthday-cake',\n                    'bitbucket',\n                    'bitbucket-square',\n                    'bitcoin',\n                    'black-tie',\n                    'blind',\n                    'bluetooth',\n                    'bluetooth-b',\n                    'bold',\n                    'bolt',\n                    'bomb',\n                    'book',\n                    'bookmark',\n                    'bookmark-o',\n                    'braille',\n                    'briefcase',\n                    'btc',\n                    'bug',\n                    'building',\n                    'building-o',\n                    'bullhorn',\n                    'bullseye',\n                    'bus',\n                    'buysellads',\n                    'cab',\n                    'calculator',\n                    'calendar',\n                    'calendar-check-o',\n                    'calendar-minus-o',\n                    'calendar-o',\n                    'calendar-plus-o',\n                    'calendar-times-o',\n                    'camera',\n                    'camera-retro',\n                    'car',\n                    'caret-down',\n                    'caret-left',\n                    'caret-right',\n                    'caret-square-o-down',\n                    'caret-square-o-left',\n                    'caret-square-o-right',\n                    'caret-square-o-up',\n                    'caret-up',\n                    'cart-arrow-down',\n                    'cart-plus',\n                    'cc',\n                    'cc-amex',\n                    'cc-diners-club',\n                    'cc-discover',\n                    'cc-jcb',\n                    'cc-mastercard',\n                    'cc-paypal',\n                    'cc-stripe',\n                    'cc-visa',\n                    'certificate',\n                    'chain',\n                    'chain-broken',\n                    'check',\n                    'check-circle',\n                    'check-circle-o',\n                    'check-square',\n                    'check-square-o',\n                    'chevron-circle-down',\n                    'chevron-circle-left',\n                    'chevron-circle-right',\n                    'chevron-circle-up',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'child',\n                    'chrome',\n                    'circle',\n                    'circle-o',\n                    'circle-o-notch',\n                    'circle-thin',\n                    'clipboard',\n                    'clock-o',\n                    'clone',\n                    'close',\n                    'cloud',\n                    'cloud-download',\n                    'cloud-upload',\n                    'cny',\n                    'code',\n                    'code-fork',\n                    'codepen',\n                    'codiepie',\n                    'coffee',\n                    'cog',\n                    'cogs',\n                    'columns',\n                    'comment',\n                    'comment-o',\n                    'commenting',\n                    'commenting-o',\n                    'comments',\n                    'comments-o',\n                    'compass',\n                    'compress',\n                    'connectdevelop',\n                    'contao',\n                    'copy',\n                    'copyright',\n                    'creative-commons',\n                    'credit-card',\n                    'credit-card-alt',\n                    'crop',\n                    'crosshairs',\n                    'css3',\n                    'cube',\n                    'cubes',\n                    'cut',\n                    'cutlery',\n                    'dashboard',\n                    'dashcube',\n                    'database',\n                    'deaf',\n                    'deafness',\n                    'dedent',\n                    'delicious',\n                    'desktop',\n                    'deviantart',\n                    'diamond',\n                    'digg',\n                    'dollar',\n                    'dot-circle-o',\n                    'download',\n                    'dribbble',\n                    'drivers-license',\n                    'drivers-license-o',\n                    'dropbox',\n                    'drupal',\n                    'edge',\n                    'edit',\n                    'eercast',\n                    'eject',\n                    'ellipsis-h',\n                    'ellipsis-v',\n                    'empire',\n                    'envelope',\n                    'envelope-o',\n                    'envelope-open',\n                    'envelope-open-o',\n                    'envelope-square',\n                    'envira',\n                    'eraser',\n                    'etsy',\n                    'eur',\n                    'euro',\n                    'exchange',\n                    'exclamation',\n                    'exclamation-circle',\n                    'exclamation-triangle',\n                    'expand',\n                    'expeditedssl',\n                    'external-link',\n                    'external-link-square',\n                    'eye',\n                    'eye-slash',\n                    'eyedropper',\n                    'fa',\n                    'facebook',\n                    'facebook-f',\n                    'facebook-official',\n                    'facebook-square',\n                    'fast-backward',\n                    'fast-forward',\n                    'fax',\n                    'feed',\n                    'female',\n                    'fighter-jet',\n                    'file',\n                    'file-archive-o',\n                    'file-audio-o',\n                    'file-code-o',\n                    'file-excel-o',\n                    'file-image-o',\n                    'file-movie-o',\n                    'file-o',\n                    'file-pdf-o',\n                    'file-photo-o',\n                    'file-picture-o',\n                    'file-powerpoint-o',\n                    'file-sound-o',\n                    'file-text',\n                    'file-text-o',\n                    'file-video-o',\n                    'file-word-o',\n                    'file-zip-o',\n                    'files-o',\n                    'film',\n                    'filter',\n                    'fire',\n                    'fire-extinguisher',\n                    'firefox',\n                    'first-order',\n                    'flag',\n                    'flag-checkered',\n                    'flag-o',\n                    'flash',\n                    'flask',\n                    'flickr',\n                    'floppy-o',\n                    'folder',\n                    'folder-o',\n                    'folder-open',\n                    'folder-open-o',\n                    'font',\n                    'font-awesome',\n                    'fonticons',\n                    'fort-awesome',\n                    'forumbee',\n                    'forward',\n                    'foursquare',\n                    'free-code-camp',\n                    'frown-o',\n                    'futbol-o',\n                    'gamepad',\n                    'gavel',\n                    'gbp',\n                    'ge',\n                    'gear',\n                    'gears',\n                    'genderless',\n                    'get-pocket',\n                    'gg',\n                    'gg-circle',\n                    'gift',\n                    'git',\n                    'git-square',\n                    'github',\n                    'github-alt',\n                    'github-square',\n                    'gitlab',\n                    'gittip',\n                    'glass',\n                    'glide',\n                    'glide-g',\n                    'globe',\n                    'google',\n                    'google-plus',\n                    'google-plus-circle',\n                    'google-plus-official',\n                    'google-plus-square',\n                    'google-wallet',\n                    'graduation-cap',\n                    'gratipay',\n                    'grav',\n                    'group',\n                    'h-square',\n                    'hacker-news',\n                    'hand-grab-o',\n                    'hand-lizard-o',\n                    'hand-o-down',\n                    'hand-o-left',\n                    'hand-o-right',\n                    'hand-o-up',\n                    'hand-paper-o',\n                    'hand-peace-o',\n                    'hand-pointer-o',\n                    'hand-rock-o',\n                    'hand-scissors-o',\n                    'hand-spock-o',\n                    'hand-stop-o',\n                    'handshake-o',\n                    'hard-of-hearing',\n                    'hashtag',\n                    'hdd-o',\n                    'header',\n                    'headphones',\n                    'heart',\n                    'heart-o',\n                    'heartbeat',\n                    'history',\n                    'home',\n                    'hospital-o',\n                    'hotel',\n                    'hourglass',\n                    'hourglass-1',\n                    'hourglass-2',\n                    'hourglass-3',\n                    'hourglass-end',\n                    'hourglass-half',\n                    'hourglass-o',\n                    'hourglass-start',\n                    'houzz',\n                    'html5',\n                    'i-cursor',\n                    'id-badge',\n                    'id-card',\n                    'id-card-o',\n                    'ils',\n                    'image',\n                    'imdb',\n                    'inbox',\n                    'indent',\n                    'industry',\n                    'info',\n                    'info-circle',\n                    'inr',\n                    'instagram',\n                    'institution',\n                    'internet-explorer',\n                    'intersex',\n                    'ioxhost',\n                    'italic',\n                    'joomla',\n                    'jpy',\n                    'jsfiddle',\n                    'key',\n                    'keyboard-o',\n                    'krw',\n                    'language',\n                    'laptop',\n                    'lastfm',\n                    'lastfm-square',\n                    'leaf',\n                    'leanpub',\n                    'legal',\n                    'lemon-o',\n                    'level-down',\n                    'level-up',\n                    'life-bouy',\n                    'life-buoy',\n                    'life-ring',\n                    'life-saver',\n                    'lightbulb-o',\n                    'line-chart',\n                    'link',\n                    'linkedin',\n                    'linkedin-square',\n                    'linode',\n                    'linux',\n                    'list',\n                    'list-alt',\n                    'list-ol',\n                    'list-ul',\n                    'location-arrow',\n                    'lock',\n                    'long-arrow-down',\n                    'long-arrow-left',\n                    'long-arrow-right',\n                    'long-arrow-up',\n                    'low-vision',\n                    'magic',\n                    'magnet',\n                    'mail-forward',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'male',\n                    'map',\n                    'map-marker',\n                    'map-o',\n                    'map-pin',\n                    'map-signs',\n                    'mars',\n                    'mars-double',\n                    'mars-stroke',\n                    'mars-stroke-h',\n                    'mars-stroke-v',\n                    'maxcdn',\n                    'meanpath',\n                    'medium',\n                    'medkit',\n                    'meetup',\n                    'meh-o',\n                    'mercury',\n                    'microchip',\n                    'microphone',\n                    'microphone-slash',\n                    'minus',\n                    'minus-circle',\n                    'minus-square',\n                    'minus-square-o',\n                    'mixcloud',\n                    'mobile',\n                    'mobile-phone',\n                    'modx',\n                    'money',\n                    'moon-o',\n                    'mortar-board',\n                    'motorcycle',\n                    'mouse-pointer',\n                    'music',\n                    'navicon',\n                    'neuter',\n                    'newspaper-o',\n                    'object-group',\n                    'object-ungroup',\n                    'odnoklassniki',\n                    'odnoklassniki-square',\n                    'opencart',\n                    'openid',\n                    'opera',\n                    'optin-monster',\n                    'outdent',\n                    'pagelines',\n                    'paint-brush',\n                    'paper-plane',\n                    'paper-plane-o',\n                    'paperclip',\n                    'paragraph',\n                    'paste',\n                    'pause',\n                    'pause-circle',\n                    'pause-circle-o',\n                    'paw',\n                    'paypal',\n                    'pencil',\n                    'pencil-square',\n                    'pencil-square-o',\n                    'percent',\n                    'phone',\n                    'phone-square',\n                    'photo',\n                    'picture-o',\n                    'pie-chart',\n                    'pied-piper',\n                    'pied-piper-alt',\n                    'pied-piper-pp',\n                    'pinterest',\n                    'pinterest-p',\n                    'pinterest-square',\n                    'plane',\n                    'play',\n                    'play-circle',\n                    'play-circle-o',\n                    'plug',\n                    'plus',\n                    'plus-circle',\n                    'plus-square',\n                    'plus-square-o',\n                    'podcast',\n                    'power-off',\n                    'print',\n                    'product-hunt',\n                    'puzzle-piece',\n                    'qq',\n                    'qrcode',\n                    'question',\n                    'question-circle',\n                    'question-circle-o',\n                    'quora',\n                    'quote-left',\n                    'quote-right',\n                    'ra',\n                    'random',\n                    'ravelry',\n                    'rebel',\n                    'recycle',\n                    'reddit',\n                    'reddit-alien',\n                    'reddit-square',\n                    'refresh',\n                    'registered',\n                    'remove',\n                    'renren',\n                    'reorder',\n                    'repeat',\n                    'reply',\n                    'reply-all',\n                    'resistance',\n                    'retweet',\n                    'rmb',\n                    'road',\n                    'rocket',\n                    'rotate-left',\n                    'rotate-right',\n                    'rouble',\n                    'rss',\n                    'rss-square',\n                    'rub',\n                    'ruble',\n                    'rupee',\n                    's15',\n                    'safari',\n                    'save',\n                    'scissors',\n                    'scribd',\n                    'search',\n                    'search-minus',\n                    'search-plus',\n                    'sellsy',\n                    'send',\n                    'send-o',\n                    'server',\n                    'share',\n                    'share-alt',\n                    'share-alt-square',\n                    'share-square',\n                    'share-square-o',\n                    'shekel',\n                    'sheqel',\n                    'shield',\n                    'ship',\n                    'shirtsinbulk',\n                    'shopping-bag',\n                    'shopping-basket',\n                    'shopping-cart',\n                    'shower',\n                    'sign-in',\n                    'sign-language',\n                    'sign-out',\n                    'signal',\n                    'signing',\n                    'simplybuilt',\n                    'sitemap',\n                    'skyatlas',\n                    'skype',\n                    'slack',\n                    'sliders',\n                    'slideshare',\n                    'smile-o',\n                    'snapchat',\n                    'snapchat-ghost',\n                    'snapchat-square',\n                    'snowflake-o',\n                    'soccer-ball-o',\n                    'sort',\n                    'sort-alpha-asc',\n                    'sort-alpha-desc',\n                    'sort-amount-asc',\n                    'sort-amount-desc',\n                    'sort-asc',\n                    'sort-desc',\n                    'sort-down',\n                    'sort-numeric-asc',\n                    'sort-numeric-desc',\n                    'sort-up',\n                    'soundcloud',\n                    'space-shuttle',\n                    'spinner',\n                    'spoon',\n                    'spotify',\n                    'square',\n                    'square-o',\n                    'stack-exchange',\n                    'stack-overflow',\n                    'star',\n                    'star-half',\n                    'star-half-empty',\n                    'star-half-full',\n                    'star-half-o',\n                    'star-o',\n                    'steam',\n                    'steam-square',\n                    'step-backward',\n                    'step-forward',\n                    'stethoscope',\n                    'sticky-note',\n                    'sticky-note-o',\n                    'stop',\n                    'stop-circle',\n                    'stop-circle-o',\n                    'street-view',\n                    'strikethrough',\n                    'stumbleupon',\n                    'stumbleupon-circle',\n                    'subscript',\n                    'subway',\n                    'suitcase',\n                    'sun-o',\n                    'superpowers',\n                    'superscript',\n                    'support',\n                    'table',\n                    'tablet',\n                    'tachometer',\n                    'tag',\n                    'tags',\n                    'tasks',\n                    'taxi',\n                    'telegram',\n                    'television',\n                    'tencent-weibo',\n                    'terminal',\n                    'text-height',\n                    'text-width',\n                    'th',\n                    'th-large',\n                    'th-list',\n                    'themeisle',\n                    'thermometer',\n                    'thermometer-0',\n                    'thermometer-1',\n                    'thermometer-2',\n                    'thermometer-3',\n                    'thermometer-4',\n                    'thermometer-empty',\n                    'thermometer-full',\n                    'thermometer-half',\n                    'thermometer-quarter',\n                    'thermometer-three-quarters',\n                    'thumb-tack',\n                    'thumbs-down',\n                    'thumbs-o-down',\n                    'thumbs-o-up',\n                    'thumbs-up',\n                    'ticket',\n                    'times',\n                    'times-circle',\n                    'times-circle-o',\n                    'times-rectangle',\n                    'times-rectangle-o',\n                    'tint',\n                    'toggle-down',\n                    'toggle-left',\n                    'toggle-off',\n                    'toggle-on',\n                    'toggle-right',\n                    'toggle-up',\n                    'trademark',\n                    'train',\n                    'transgender',\n                    'transgender-alt',\n                    'trash',\n                    'trash-o',\n                    'tree',\n                    'trello',\n                    'tripadvisor',\n                    'trophy',\n                    'truck',\n                    'try',\n                    'tty',\n                    'tumblr',\n                    'tumblr-square',\n                    'turkish-lira',\n                    'tv',\n                    'twitch',\n                    'twitter',\n                    'twitter-square',\n                    'umbrella',\n                    'underline',\n                    'undo',\n                    'universal-access',\n                    'university',\n                    'unlink',\n                    'unlock',\n                    'unlock-alt',\n                    'unsorted',\n                    'upload',\n                    'usb',\n                    'usd',\n                    'user',\n                    'user-circle',\n                    'user-circle-o',\n                    'user-md',\n                    'user-o',\n                    'user-plus',\n                    'user-secret',\n                    'user-times',\n                    'users',\n                    'vcard',\n                    'vcard-o',\n                    'venus',\n                    'venus-double',\n                    'venus-mars',\n                    'viacoin',\n                    'viadeo',\n                    'viadeo-square',\n                    'video-camera',\n                    'vimeo',\n                    'vimeo-square',\n                    'vine',\n                    'vk',\n                    'volume-control-phone',\n                    'volume-down',\n                    'volume-off',\n                    'volume-up',\n                    'warning',\n                    'wechat',\n                    'weibo',\n                    'weixin',\n                    'whatsapp',\n                    'wheelchair',\n                    'wheelchair-alt',\n                    'wifi',\n                    'wikipedia-w',\n                    'window-close',\n                    'window-close-o',\n                    'window-maximize',\n                    'window-minimize',\n                    'window-restore',\n                    'windows',\n                    'won',\n                    'wordpress',\n                    'wpbeginner',\n                    'wpexplorer',\n                    'wpforms',\n                    'wrench',\n                    'xing',\n                    'xing-square',\n                    'y-combinator',\n                    'y-combinator-square',\n                    'yahoo',\n                    'yc',\n                    'yc-square',\n                    'yelp',\n                    'yen',\n                    'yoast',\n                    'youtube',\n                    'youtube-play',\n                    'youtube-square'\n                ]\n            },\n            {\n                version: '5.3.1',\n                icons: [\n                    '',\n                    'fab fa-500px',\n                    'fab fa-accessible-icon',\n                    'fab fa-accusoft',\n                    'fas fa-ad',\n                    'fas fa-address-book',\n                    'far fa-address-book',\n                    'fas fa-address-card',\n                    'far fa-address-card',\n                    'fas fa-adjust',\n                    'fab fa-adn',\n                    'fab fa-adversal',\n                    'fab fa-affiliatetheme',\n                    'fas fa-air-freshener',\n                    'fab fa-algolia',\n                    'fas fa-align-center',\n                    'fas fa-align-justify',\n                    'fas fa-align-left',\n                    'fas fa-align-right',\n                    'fab fa-alipay',\n                    'fas fa-allergies',\n                    'fab fa-amazon',\n                    'fab fa-amazon-pay',\n                    'fas fa-ambulance',\n                    'fas fa-american-sign-language-interpreting',\n                    'fab fa-amilia',\n                    'fas fa-anchor',\n                    'fab fa-android',\n                    'fab fa-angellist',\n                    'fas fa-angle-double-down',\n                    'fas fa-angle-double-left',\n                    'fas fa-angle-double-right',\n                    'fas fa-angle-double-up',\n                    'fas fa-angle-down',\n                    'fas fa-angle-left',\n                    'fas fa-angle-right',\n                    'fas fa-angle-up',\n                    'fas fa-angry',\n                    'far fa-angry',\n                    'fab fa-angrycreative',\n                    'fab fa-angular',\n                    'fas fa-ankh',\n                    'fab fa-app-store',\n                    'fab fa-app-store-ios',\n                    'fab fa-apper',\n                    'fab fa-apple',\n                    'fas fa-apple-alt',\n                    'fab fa-apple-pay',\n                    'fas fa-archive',\n                    'fas fa-archway',\n                    'fas fa-arrow-alt-circle-down',\n                    'far fa-arrow-alt-circle-down',\n                    'fas fa-arrow-alt-circle-left',\n                    'far fa-arrow-alt-circle-left',\n                    'fas fa-arrow-alt-circle-right',\n                    'far fa-arrow-alt-circle-right',\n                    'fas fa-arrow-alt-circle-up',\n                    'far fa-arrow-alt-circle-up',\n                    'fas fa-arrow-circle-down',\n                    'fas fa-arrow-circle-left',\n                    'fas fa-arrow-circle-right',\n                    'fas fa-arrow-circle-up',\n                    'fas fa-arrow-down',\n                    'fas fa-arrow-left',\n                    'fas fa-arrow-right',\n                    'fas fa-arrow-up',\n                    'fas fa-arrows-alt',\n                    'fas fa-arrows-alt-h',\n                    'fas fa-arrows-alt-v',\n                    'fas fa-assistive-listening-systems',\n                    'fas fa-asterisk',\n                    'fab fa-asymmetrik',\n                    'fas fa-at',\n                    'fas fa-atlas',\n                    'fas fa-atom',\n                    'fab fa-audible',\n                    'fas fa-audio-description',\n                    'fab fa-autoprefixer',\n                    'fab fa-avianex',\n                    'fab fa-aviato',\n                    'fas fa-award',\n                    'fab fa-aws',\n                    'fas fa-backspace',\n                    'fas fa-backward',\n                    'fas fa-balance-scale',\n                    'fas fa-ban',\n                    'fas fa-band-aid',\n                    'fab fa-bandcamp',\n                    'fas fa-barcode',\n                    'fas fa-bars',\n                    'fas fa-baseball-ball',\n                    'fas fa-basketball-ball',\n                    'fas fa-bath',\n                    'fas fa-battery-empty',\n                    'fas fa-battery-full',\n                    'fas fa-battery-half',\n                    'fas fa-battery-quarter',\n                    'fas fa-battery-three-quarters',\n                    'fas fa-bed',\n                    'fas fa-beer',\n                    'fab fa-behance',\n                    'fab fa-behance-square',\n                    'fas fa-bell',\n                    'far fa-bell',\n                    'fas fa-bell-slash',\n                    'far fa-bell-slash',\n                    'fas fa-bezier-curve',\n                    'fas fa-bible',\n                    'fas fa-bicycle',\n                    'fab fa-bimobject',\n                    'fas fa-binoculars',\n                    'fas fa-birthday-cake',\n                    'fab fa-bitbucket',\n                    'fab fa-bitcoin',\n                    'fab fa-bity',\n                    'fab fa-black-tie',\n                    'fab fa-blackberry',\n                    'fas fa-blender',\n                    'fas fa-blind',\n                    'fab fa-blogger',\n                    'fab fa-blogger-b',\n                    'fab fa-bluetooth',\n                    'fab fa-bluetooth-b',\n                    'fas fa-bold',\n                    'fas fa-bolt',\n                    'fas fa-bomb',\n                    'fas fa-bone',\n                    'fas fa-bong',\n                    'fas fa-book',\n                    'fas fa-book-open',\n                    'fas fa-book-reader',\n                    'fas fa-bookmark',\n                    'far fa-bookmark',\n                    'fas fa-bowling-ball',\n                    'fas fa-box',\n                    'fas fa-box-open',\n                    'fas fa-boxes',\n                    'fas fa-braille',\n                    'fas fa-brain',\n                    'fas fa-briefcase',\n                    'fas fa-briefcase-medical',\n                    'fas fa-broadcast-tower',\n                    'fas fa-broom',\n                    'fas fa-brush',\n                    'fab fa-btc',\n                    'fas fa-bug',\n                    'fas fa-building',\n                    'far fa-building',\n                    'fas fa-bullhorn',\n                    'fas fa-bullseye',\n                    'fas fa-burn',\n                    'fab fa-buromobelexperte',\n                    'fas fa-bus',\n                    'fas fa-bus-alt',\n                    'fas fa-business-time',\n                    'fab fa-buysellads',\n                    'fas fa-calculator',\n                    'fas fa-calendar',\n                    'far fa-calendar',\n                    'fas fa-calendar-alt',\n                    'far fa-calendar-alt',\n                    'fas fa-calendar-check',\n                    'far fa-calendar-check',\n                    'fas fa-calendar-minus',\n                    'far fa-calendar-minus',\n                    'fas fa-calendar-plus',\n                    'far fa-calendar-plus',\n                    'fas fa-calendar-times',\n                    'far fa-calendar-times',\n                    'fas fa-camera',\n                    'fas fa-camera-retro',\n                    'fas fa-cannabis',\n                    'fas fa-capsules',\n                    'fas fa-car',\n                    'fas fa-car-alt',\n                    'fas fa-car-battery',\n                    'fas fa-car-crash',\n                    'fas fa-car-side',\n                    'fas fa-caret-down',\n                    'fas fa-caret-left',\n                    'fas fa-caret-right',\n                    'fas fa-caret-square-down',\n                    'far fa-caret-square-down',\n                    'fas fa-caret-square-left',\n                    'far fa-caret-square-left',\n                    'fas fa-caret-square-right',\n                    'far fa-caret-square-right',\n                    'fas fa-caret-square-up',\n                    'far fa-caret-square-up',\n                    'fas fa-caret-up',\n                    'fas fa-cart-arrow-down',\n                    'fas fa-cart-plus',\n                    'fab fa-cc-amazon-pay',\n                    'fab fa-cc-amex',\n                    'fab fa-cc-apple-pay',\n                    'fab fa-cc-diners-club',\n                    'fab fa-cc-discover',\n                    'fab fa-cc-jcb',\n                    'fab fa-cc-mastercard',\n                    'fab fa-cc-paypal',\n                    'fab fa-cc-stripe',\n                    'fab fa-cc-visa',\n                    'fab fa-centercode',\n                    'fas fa-certificate',\n                    'fas fa-chalkboard',\n                    'fas fa-chalkboard-teacher',\n                    'fas fa-charging-station',\n                    'fas fa-chart-area',\n                    'fas fa-chart-bar',\n                    'far fa-chart-bar',\n                    'fas fa-chart-line',\n                    'fas fa-chart-pie',\n                    'fas fa-check',\n                    'fas fa-check-circle',\n                    'far fa-check-circle',\n                    'fas fa-check-double',\n                    'fas fa-check-square',\n                    'far fa-check-square',\n                    'fas fa-chess',\n                    'fas fa-chess-bishop',\n                    'fas fa-chess-board',\n                    'fas fa-chess-king',\n                    'fas fa-chess-knight',\n                    'fas fa-chess-pawn',\n                    'fas fa-chess-queen',\n                    'fas fa-chess-rook',\n                    'fas fa-chevron-circle-down',\n                    'fas fa-chevron-circle-left',\n                    'fas fa-chevron-circle-right',\n                    'fas fa-chevron-circle-up',\n                    'fas fa-chevron-down',\n                    'fas fa-chevron-left',\n                    'fas fa-chevron-right',\n                    'fas fa-chevron-up',\n                    'fas fa-child',\n                    'fab fa-chrome',\n                    'fas fa-church',\n                    'fas fa-circle',\n                    'far fa-circle',\n                    'fas fa-circle-notch',\n                    'fas fa-city',\n                    'fas fa-clipboard',\n                    'far fa-clipboard',\n                    'fas fa-clipboard-check',\n                    'fas fa-clipboard-list',\n                    'fas fa-clock',\n                    'far fa-clock',\n                    'fas fa-clone',\n                    'far fa-clone',\n                    'fas fa-closed-captioning',\n                    'far fa-closed-captioning',\n                    'fas fa-cloud',\n                    'fas fa-cloud-download-alt',\n                    'fas fa-cloud-upload-alt',\n                    'fab fa-cloudscale',\n                    'fab fa-cloudsmith',\n                    'fab fa-cloudversify',\n                    'fas fa-cocktail',\n                    'fas fa-code',\n                    'fas fa-code-branch',\n                    'fab fa-codepen',\n                    'fab fa-codiepie',\n                    'fas fa-coffee',\n                    'fas fa-cog',\n                    'fas fa-cogs',\n                    'fas fa-coins',\n                    'fas fa-columns',\n                    'fas fa-comment',\n                    'far fa-comment',\n                    'fas fa-comment-alt',\n                    'far fa-comment-alt',\n                    'fas fa-comment-dollar',\n                    'fas fa-comment-dots',\n                    'far fa-comment-dots',\n                    'fas fa-comment-slash',\n                    'fas fa-comments',\n                    'far fa-comments',\n                    'fas fa-comments-dollar',\n                    'fas fa-compact-disc',\n                    'fas fa-compass',\n                    'far fa-compass',\n                    'fas fa-compress',\n                    'fas fa-concierge-bell',\n                    'fab fa-connectdevelop',\n                    'fab fa-contao',\n                    'fas fa-cookie',\n                    'fas fa-cookie-bite',\n                    'fas fa-copy',\n                    'far fa-copy',\n                    'fas fa-copyright',\n                    'far fa-copyright',\n                    'fas fa-couch',\n                    'fab fa-cpanel',\n                    'fab fa-creative-commons',\n                    'fab fa-creative-commons-by',\n                    'fab fa-creative-commons-nc',\n                    'fab fa-creative-commons-nc-eu',\n                    'fab fa-creative-commons-nc-jp',\n                    'fab fa-creative-commons-nd',\n                    'fab fa-creative-commons-pd',\n                    'fab fa-creative-commons-pd-alt',\n                    'fab fa-creative-commons-remix',\n                    'fab fa-creative-commons-sa',\n                    'fab fa-creative-commons-sampling',\n                    'fab fa-creative-commons-sampling-plus',\n                    'fab fa-creative-commons-share',\n                    'fas fa-credit-card',\n                    'far fa-credit-card',\n                    'fas fa-crop',\n                    'fas fa-crop-alt',\n                    'fas fa-cross',\n                    'fas fa-crosshairs',\n                    'fas fa-crow',\n                    'fas fa-crown',\n                    'fab fa-css3',\n                    'fab fa-css3-alt',\n                    'fas fa-cube',\n                    'fas fa-cubes',\n                    'fas fa-cut',\n                    'fab fa-cuttlefish',\n                    'fab fa-d-and-d',\n                    'fab fa-dashcube',\n                    'fas fa-database',\n                    'fas fa-deaf',\n                    'fab fa-delicious',\n                    'fab fa-deploydog',\n                    'fab fa-deskpro',\n                    'fas fa-desktop',\n                    'fab fa-deviantart',\n                    'fas fa-dharmachakra',\n                    'fas fa-diagnoses',\n                    'fas fa-dice',\n                    'fas fa-dice-five',\n                    'fas fa-dice-four',\n                    'fas fa-dice-one',\n                    'fas fa-dice-six',\n                    'fas fa-dice-three',\n                    'fas fa-dice-two',\n                    'fab fa-digg',\n                    'fab fa-digital-ocean',\n                    'fas fa-digital-tachograph',\n                    'fas fa-directions',\n                    'fab fa-discord',\n                    'fab fa-discourse',\n                    'fas fa-divide',\n                    'fas fa-dizzy',\n                    'far fa-dizzy',\n                    'fas fa-dna',\n                    'fab fa-dochub',\n                    'fab fa-docker',\n                    'fas fa-dollar-sign',\n                    'fas fa-dolly',\n                    'fas fa-dolly-flatbed',\n                    'fas fa-donate',\n                    'fas fa-door-closed',\n                    'fas fa-door-open',\n                    'fas fa-dot-circle',\n                    'far fa-dot-circle',\n                    'fas fa-dove',\n                    'fas fa-download',\n                    'fab fa-draft2digital',\n                    'fas fa-drafting-compass',\n                    'fas fa-draw-polygon',\n                    'fab fa-dribbble',\n                    'fab fa-dribbble-square',\n                    'fab fa-dropbox',\n                    'fas fa-drum',\n                    'fas fa-drum-steelpan',\n                    'fab fa-drupal',\n                    'fas fa-dumbbell',\n                    'fab fa-dyalog',\n                    'fab fa-earlybirds',\n                    'fab fa-ebay',\n                    'fab fa-edge',\n                    'fas fa-edit',\n                    'far fa-edit',\n                    'fas fa-eject',\n                    'fab fa-elementor',\n                    'fas fa-ellipsis-h',\n                    'fas fa-ellipsis-v',\n                    'fab fa-ello',\n                    'fab fa-ember',\n                    'fab fa-empire',\n                    'fas fa-envelope',\n                    'far fa-envelope',\n                    'fas fa-envelope-open',\n                    'far fa-envelope-open',\n                    'fas fa-envelope-open-text',\n                    'fas fa-envelope-square',\n                    'fab fa-envira',\n                    'fas fa-equals',\n                    'fas fa-eraser',\n                    'fab fa-erlang',\n                    'fab fa-ethereum',\n                    'fab fa-etsy',\n                    'fas fa-euro-sign',\n                    'fas fa-exchange-alt',\n                    'fas fa-exclamation',\n                    'fas fa-exclamation-circle',\n                    'fas fa-exclamation-triangle',\n                    'fas fa-expand',\n                    'fas fa-expand-arrows-alt',\n                    'fab fa-expeditedssl',\n                    'fas fa-external-link-alt',\n                    'fas fa-external-link-square-alt',\n                    'fas fa-eye',\n                    'far fa-eye',\n                    'fas fa-eye-dropper',\n                    'fas fa-eye-slash',\n                    'far fa-eye-slash',\n                    'fab fa-facebook',\n                    'fab fa-facebook-f',\n                    'fab fa-facebook-messenger',\n                    'fab fa-facebook-square',\n                    'fas fa-fast-backward',\n                    'fas fa-fast-forward',\n                    'fas fa-fax',\n                    'fas fa-feather',\n                    'fas fa-feather-alt',\n                    'fas fa-female',\n                    'fas fa-fighter-jet',\n                    'fas fa-file',\n                    'far fa-file',\n                    'fas fa-file-alt',\n                    'far fa-file-alt',\n                    'fas fa-file-archive',\n                    'far fa-file-archive',\n                    'fas fa-file-audio',\n                    'far fa-file-audio',\n                    'fas fa-file-code',\n                    'far fa-file-code',\n                    'fas fa-file-contract',\n                    'fas fa-file-download',\n                    'fas fa-file-excel',\n                    'far fa-file-excel',\n                    'fas fa-file-export',\n                    'fas fa-file-image',\n                    'far fa-file-image',\n                    'fas fa-file-import',\n                    'fas fa-file-invoice',\n                    'fas fa-file-invoice-dollar',\n                    'fas fa-file-medical',\n                    'fas fa-file-medical-alt',\n                    'fas fa-file-pdf',\n                    'far fa-file-pdf',\n                    'fas fa-file-powerpoint',\n                    'far fa-file-powerpoint',\n                    'fas fa-file-prescription',\n                    'fas fa-file-signature',\n                    'fas fa-file-upload',\n                    'fas fa-file-video',\n                    'far fa-file-video',\n                    'fas fa-file-word',\n                    'far fa-file-word',\n                    'fas fa-fill',\n                    'fas fa-fill-drip',\n                    'fas fa-film',\n                    'fas fa-filter',\n                    'fas fa-fingerprint',\n                    'fas fa-fire',\n                    'fas fa-fire-extinguisher',\n                    'fab fa-firefox',\n                    'fas fa-first-aid',\n                    'fab fa-first-order',\n                    'fab fa-first-order-alt',\n                    'fab fa-firstdraft',\n                    'fas fa-fish',\n                    'fas fa-flag',\n                    'far fa-flag',\n                    'fas fa-flag-checkered',\n                    'fas fa-flask',\n                    'fab fa-flickr',\n                    'fab fa-flipboard',\n                    'fas fa-flushed',\n                    'far fa-flushed',\n                    'fab fa-fly',\n                    'fas fa-folder',\n                    'far fa-folder',\n                    'fas fa-folder-minus',\n                    'fas fa-folder-open',\n                    'far fa-folder-open',\n                    'fas fa-folder-plus',\n                    'fas fa-font',\n                    'fab fa-font-awesome',\n                    'fab fa-font-awesome-alt',\n                    'fab fa-font-awesome-flag',\n                    'fab fa-fonticons',\n                    'fab fa-fonticons-fi',\n                    'fas fa-football-ball',\n                    'fab fa-fort-awesome',\n                    'fab fa-fort-awesome-alt',\n                    'fab fa-forumbee',\n                    'fas fa-forward',\n                    'fab fa-foursquare',\n                    'fab fa-free-code-camp',\n                    'fab fa-freebsd',\n                    'fas fa-frog',\n                    'fas fa-frown',\n                    'far fa-frown',\n                    'fas fa-frown-open',\n                    'far fa-frown-open',\n                    'fab fa-fulcrum',\n                    'fas fa-funnel-dollar',\n                    'fas fa-futbol',\n                    'far fa-futbol',\n                    'fab fa-galactic-republic',\n                    'fab fa-galactic-senate',\n                    'fas fa-gamepad',\n                    'fas fa-gas-pump',\n                    'fas fa-gavel',\n                    'fas fa-gem',\n                    'far fa-gem',\n                    'fas fa-genderless',\n                    'fab fa-get-pocket',\n                    'fab fa-gg',\n                    'fab fa-gg-circle',\n                    'fas fa-gift',\n                    'fab fa-git',\n                    'fab fa-git-square',\n                    'fab fa-github',\n                    'fab fa-github-alt',\n                    'fab fa-github-square',\n                    'fab fa-gitkraken',\n                    'fab fa-gitlab',\n                    'fab fa-gitter',\n                    'fas fa-glass-martini',\n                    'fas fa-glass-martini-alt',\n                    'fas fa-glasses',\n                    'fab fa-glide',\n                    'fab fa-glide-g',\n                    'fas fa-globe',\n                    'fas fa-globe-africa',\n                    'fas fa-globe-americas',\n                    'fas fa-globe-asia',\n                    'fab fa-gofore',\n                    'fas fa-golf-ball',\n                    'fab fa-goodreads',\n                    'fab fa-goodreads-g',\n                    'fab fa-google',\n                    'fab fa-google-drive',\n                    'fab fa-google-play',\n                    'fab fa-google-plus',\n                    'fab fa-google-plus-g',\n                    'fab fa-google-plus-square',\n                    'fab fa-google-wallet',\n                    'fas fa-gopuram',\n                    'fas fa-graduation-cap',\n                    'fab fa-gratipay',\n                    'fab fa-grav',\n                    'fas fa-greater-than',\n                    'fas fa-greater-than-equal',\n                    'fas fa-grimace',\n                    'far fa-grimace',\n                    'fas fa-grin',\n                    'far fa-grin',\n                    'fas fa-grin-alt',\n                    'far fa-grin-alt',\n                    'fas fa-grin-beam',\n                    'far fa-grin-beam',\n                    'fas fa-grin-beam-sweat',\n                    'far fa-grin-beam-sweat',\n                    'fas fa-grin-hearts',\n                    'far fa-grin-hearts',\n                    'fas fa-grin-squint',\n                    'far fa-grin-squint',\n                    'fas fa-grin-squint-tears',\n                    'far fa-grin-squint-tears',\n                    'fas fa-grin-stars',\n                    'far fa-grin-stars',\n                    'fas fa-grin-tears',\n                    'far fa-grin-tears',\n                    'fas fa-grin-tongue',\n                    'far fa-grin-tongue',\n                    'fas fa-grin-tongue-squint',\n                    'far fa-grin-tongue-squint',\n                    'fas fa-grin-tongue-wink',\n                    'far fa-grin-tongue-wink',\n                    'fas fa-grin-wink',\n                    'far fa-grin-wink',\n                    'fas fa-grip-horizontal',\n                    'fas fa-grip-vertical',\n                    'fab fa-gripfire',\n                    'fab fa-grunt',\n                    'fab fa-gulp',\n                    'fas fa-h-square',\n                    'fab fa-hacker-news',\n                    'fab fa-hacker-news-square',\n                    'fab fa-hackerrank',\n                    'fas fa-hamsa',\n                    'fas fa-hand-holding',\n                    'fas fa-hand-holding-heart',\n                    'fas fa-hand-holding-usd',\n                    'fas fa-hand-lizard',\n                    'far fa-hand-lizard',\n                    'fas fa-hand-paper',\n                    'far fa-hand-paper',\n                    'fas fa-hand-peace',\n                    'far fa-hand-peace',\n                    'fas fa-hand-point-down',\n                    'far fa-hand-point-down',\n                    'fas fa-hand-point-left',\n                    'far fa-hand-point-left',\n                    'fas fa-hand-point-right',\n                    'far fa-hand-point-right',\n                    'fas fa-hand-point-up',\n                    'far fa-hand-point-up',\n                    'fas fa-hand-pointer',\n                    'far fa-hand-pointer',\n                    'fas fa-hand-rock',\n                    'far fa-hand-rock',\n                    'fas fa-hand-scissors',\n                    'far fa-hand-scissors',\n                    'fas fa-hand-spock',\n                    'far fa-hand-spock',\n                    'fas fa-hands',\n                    'fas fa-hands-helping',\n                    'fas fa-handshake',\n                    'far fa-handshake',\n                    'fas fa-hashtag',\n                    'fas fa-haykal',\n                    'fas fa-hdd',\n                    'far fa-hdd',\n                    'fas fa-heading',\n                    'fas fa-headphones',\n                    'fas fa-headphones-alt',\n                    'fas fa-headset',\n                    'fas fa-heart',\n                    'far fa-heart',\n                    'fas fa-heartbeat',\n                    'fas fa-helicopter',\n                    'fas fa-highlighter',\n                    'fab fa-hips',\n                    'fab fa-hire-a-helper',\n                    'fas fa-history',\n                    'fas fa-hockey-puck',\n                    'fas fa-home',\n                    'fab fa-hooli',\n                    'fab fa-hornbill',\n                    'fas fa-hospital',\n                    'far fa-hospital',\n                    'fas fa-hospital-alt',\n                    'fas fa-hospital-symbol',\n                    'fas fa-hot-tub',\n                    'fas fa-hotel',\n                    'fab fa-hotjar',\n                    'fas fa-hourglass',\n                    'far fa-hourglass',\n                    'fas fa-hourglass-end',\n                    'fas fa-hourglass-half',\n                    'fas fa-hourglass-start',\n                    'fab fa-houzz',\n                    'fab fa-html5',\n                    'fab fa-hubspot',\n                    'fas fa-i-cursor',\n                    'fas fa-id-badge',\n                    'far fa-id-badge',\n                    'fas fa-id-card',\n                    'far fa-id-card',\n                    'fas fa-id-card-alt',\n                    'fas fa-image',\n                    'far fa-image',\n                    'fas fa-images',\n                    'far fa-images',\n                    'fab fa-imdb',\n                    'fas fa-inbox',\n                    'fas fa-indent',\n                    'fas fa-industry',\n                    'fas fa-infinity',\n                    'fas fa-info',\n                    'fas fa-info-circle',\n                    'fab fa-instagram',\n                    'fab fa-internet-explorer',\n                    'fab fa-ioxhost',\n                    'fas fa-italic',\n                    'fab fa-itunes',\n                    'fab fa-itunes-note',\n                    'fab fa-java',\n                    'fas fa-jedi',\n                    'fab fa-jedi-order',\n                    'fab fa-jenkins',\n                    'fab fa-joget',\n                    'fas fa-joint',\n                    'fab fa-joomla',\n                    'fas fa-journal-whills',\n                    'fab fa-js',\n                    'fab fa-js-square',\n                    'fab fa-jsfiddle',\n                    'fas fa-kaaba',\n                    'fab fa-kaggle',\n                    'fas fa-key',\n                    'fab fa-keybase',\n                    'fas fa-keyboard',\n                    'far fa-keyboard',\n                    'fab fa-keycdn',\n                    'fas fa-khanda',\n                    'fab fa-kickstarter',\n                    'fab fa-kickstarter-k',\n                    'fas fa-kiss',\n                    'far fa-kiss',\n                    'fas fa-kiss-beam',\n                    'far fa-kiss-beam',\n                    'fas fa-kiss-wink-heart',\n                    'far fa-kiss-wink-heart',\n                    'fas fa-kiwi-bird',\n                    'fab fa-korvue',\n                    'fas fa-landmark',\n                    'fas fa-language',\n                    'fas fa-laptop',\n                    'fas fa-laptop-code',\n                    'fab fa-laravel',\n                    'fab fa-lastfm',\n                    'fab fa-lastfm-square',\n                    'fas fa-laugh',\n                    'far fa-laugh',\n                    'fas fa-laugh-beam',\n                    'far fa-laugh-beam',\n                    'fas fa-laugh-squint',\n                    'far fa-laugh-squint',\n                    'fas fa-laugh-wink',\n                    'far fa-laugh-wink',\n                    'fas fa-layer-group',\n                    'fas fa-leaf',\n                    'fab fa-leanpub',\n                    'fas fa-lemon',\n                    'far fa-lemon',\n                    'fab fa-less',\n                    'fas fa-less-than',\n                    'fas fa-less-than-equal',\n                    'fas fa-level-down-alt',\n                    'fas fa-level-up-alt',\n                    'fas fa-life-ring',\n                    'far fa-life-ring',\n                    'fas fa-lightbulb',\n                    'far fa-lightbulb',\n                    'fab fa-line',\n                    'fas fa-link',\n                    'fab fa-linkedin',\n                    'fab fa-linkedin-in',\n                    'fab fa-linode',\n                    'fab fa-linux',\n                    'fas fa-lira-sign',\n                    'fas fa-list',\n                    'fas fa-list-alt',\n                    'far fa-list-alt',\n                    'fas fa-list-ol',\n                    'fas fa-list-ul',\n                    'fas fa-location-arrow',\n                    'fas fa-lock',\n                    'fas fa-lock-open',\n                    'fas fa-long-arrow-alt-down',\n                    'fas fa-long-arrow-alt-left',\n                    'fas fa-long-arrow-alt-right',\n                    'fas fa-long-arrow-alt-up',\n                    'fas fa-low-vision',\n                    'fas fa-luggage-cart',\n                    'fab fa-lyft',\n                    'fab fa-magento',\n                    'fas fa-magic',\n                    'fas fa-magnet',\n                    'fas fa-mail-bulk',\n                    'fab fa-mailchimp',\n                    'fas fa-male',\n                    'fab fa-mandalorian',\n                    'fas fa-map',\n                    'far fa-map',\n                    'fas fa-map-marked',\n                    'fas fa-map-marked-alt',\n                    'fas fa-map-marker',\n                    'fas fa-map-marker-alt',\n                    'fas fa-map-pin',\n                    'fas fa-map-signs',\n                    'fab fa-markdown',\n                    'fas fa-marker',\n                    'fas fa-mars',\n                    'fas fa-mars-double',\n                    'fas fa-mars-stroke',\n                    'fas fa-mars-stroke-h',\n                    'fas fa-mars-stroke-v',\n                    'fab fa-mastodon',\n                    'fab fa-maxcdn',\n                    'fas fa-medal',\n                    'fab fa-medapps',\n                    'fab fa-medium',\n                    'fab fa-medium-m',\n                    'fas fa-medkit',\n                    'fab fa-medrt',\n                    'fab fa-meetup',\n                    'fab fa-megaport',\n                    'fas fa-meh',\n                    'far fa-meh',\n                    'fas fa-meh-blank',\n                    'far fa-meh-blank',\n                    'fas fa-meh-rolling-eyes',\n                    'far fa-meh-rolling-eyes',\n                    'fas fa-memory',\n                    'fas fa-menorah',\n                    'fas fa-mercury',\n                    'fas fa-microchip',\n                    'fas fa-microphone',\n                    'fas fa-microphone-alt',\n                    'fas fa-microphone-alt-slash',\n                    'fas fa-microphone-slash',\n                    'fas fa-microscope',\n                    'fab fa-microsoft',\n                    'fas fa-minus',\n                    'fas fa-minus-circle',\n                    'fas fa-minus-square',\n                    'far fa-minus-square',\n                    'fab fa-mix',\n                    'fab fa-mixcloud',\n                    'fab fa-mizuni',\n                    'fas fa-mobile',\n                    'fas fa-mobile-alt',\n                    'fab fa-modx',\n                    'fab fa-monero',\n                    'fas fa-money-bill',\n                    'fas fa-money-bill-alt',\n                    'far fa-money-bill-alt',\n                    'fas fa-money-bill-wave',\n                    'fas fa-money-bill-wave-alt',\n                    'fas fa-money-check',\n                    'fas fa-money-check-alt',\n                    'fas fa-monument',\n                    'fas fa-moon',\n                    'far fa-moon',\n                    'fas fa-mortar-pestle',\n                    'fas fa-mosque',\n                    'fas fa-motorcycle',\n                    'fas fa-mouse-pointer',\n                    'fas fa-music',\n                    'fab fa-napster',\n                    'fab fa-neos',\n                    'fas fa-neuter',\n                    'fas fa-newspaper',\n                    'far fa-newspaper',\n                    'fab fa-nimblr',\n                    'fab fa-nintendo-switch',\n                    'fab fa-node',\n                    'fab fa-node-js',\n                    'fas fa-not-equal',\n                    'fas fa-notes-medical',\n                    'fab fa-npm',\n                    'fab fa-ns8',\n                    'fab fa-nutritionix',\n                    'fas fa-object-group',\n                    'far fa-object-group',\n                    'fas fa-object-ungroup',\n                    'far fa-object-ungroup',\n                    'fab fa-odnoklassniki',\n                    'fab fa-odnoklassniki-square',\n                    'fas fa-oil-can',\n                    'fab fa-old-republic',\n                    'fas fa-om',\n                    'fab fa-opencart',\n                    'fab fa-openid',\n                    'fab fa-opera',\n                    'fab fa-optin-monster',\n                    'fab fa-osi',\n                    'fas fa-outdent',\n                    'fab fa-page4',\n                    'fab fa-pagelines',\n                    'fas fa-paint-brush',\n                    'fas fa-paint-roller',\n                    'fas fa-palette',\n                    'fab fa-palfed',\n                    'fas fa-pallet',\n                    'fas fa-paper-plane',\n                    'far fa-paper-plane',\n                    'fas fa-paperclip',\n                    'fas fa-parachute-box',\n                    'fas fa-paragraph',\n                    'fas fa-parking',\n                    'fas fa-passport',\n                    'fas fa-pastafarianism',\n                    'fas fa-paste',\n                    'fab fa-patreon',\n                    'fas fa-pause',\n                    'fas fa-pause-circle',\n                    'far fa-pause-circle',\n                    'fas fa-paw',\n                    'fab fa-paypal',\n                    'fas fa-peace',\n                    'fas fa-pen',\n                    'fas fa-pen-alt',\n                    'fas fa-pen-fancy',\n                    'fas fa-pen-nib',\n                    'fas fa-pen-square',\n                    'fas fa-pencil-alt',\n                    'fas fa-pencil-ruler',\n                    'fas fa-people-carry',\n                    'fas fa-percent',\n                    'fas fa-percentage',\n                    'fab fa-periscope',\n                    'fab fa-phabricator',\n                    'fab fa-phoenix-framework',\n                    'fab fa-phoenix-squadron',\n                    'fas fa-phone',\n                    'fas fa-phone-slash',\n                    'fas fa-phone-square',\n                    'fas fa-phone-volume',\n                    'fab fa-php',\n                    'fab fa-pied-piper',\n                    'fab fa-pied-piper-alt',\n                    'fab fa-pied-piper-hat',\n                    'fab fa-pied-piper-pp',\n                    'fas fa-piggy-bank',\n                    'fas fa-pills',\n                    'fab fa-pinterest',\n                    'fab fa-pinterest-p',\n                    'fab fa-pinterest-square',\n                    'fas fa-place-of-worship',\n                    'fas fa-plane',\n                    'fas fa-plane-arrival',\n                    'fas fa-plane-departure',\n                    'fas fa-play',\n                    'fas fa-play-circle',\n                    'far fa-play-circle',\n                    'fab fa-playstation',\n                    'fas fa-plug',\n                    'fas fa-plus',\n                    'fas fa-plus-circle',\n                    'fas fa-plus-square',\n                    'far fa-plus-square',\n                    'fas fa-podcast',\n                    'fas fa-poll',\n                    'fas fa-poll-h',\n                    'fas fa-poo',\n                    'fas fa-poop',\n                    'fas fa-portrait',\n                    'fas fa-pound-sign',\n                    'fas fa-power-off',\n                    'fas fa-pray',\n                    'fas fa-praying-hands',\n                    'fas fa-prescription',\n                    'fas fa-prescription-bottle',\n                    'fas fa-prescription-bottle-alt',\n                    'fas fa-print',\n                    'fas fa-procedures',\n                    'fab fa-product-hunt',\n                    'fas fa-project-diagram',\n                    'fab fa-pushed',\n                    'fas fa-puzzle-piece',\n                    'fab fa-python',\n                    'fab fa-qq',\n                    'fas fa-qrcode',\n                    'fas fa-question',\n                    'fas fa-question-circle',\n                    'far fa-question-circle',\n                    'fas fa-quidditch',\n                    'fab fa-quinscape',\n                    'fab fa-quora',\n                    'fas fa-quote-left',\n                    'fas fa-quote-right',\n                    'fas fa-quran',\n                    'fab fa-r-project',\n                    'fas fa-random',\n                    'fab fa-ravelry',\n                    'fab fa-react',\n                    'fab fa-readme',\n                    'fab fa-rebel',\n                    'fas fa-receipt',\n                    'fas fa-recycle',\n                    'fab fa-red-river',\n                    'fab fa-reddit',\n                    'fab fa-reddit-alien',\n                    'fab fa-reddit-square',\n                    'fas fa-redo',\n                    'fas fa-redo-alt',\n                    'fas fa-registered',\n                    'far fa-registered',\n                    'fab fa-rendact',\n                    'fab fa-renren',\n                    'fas fa-reply',\n                    'fas fa-reply-all',\n                    'fab fa-replyd',\n                    'fab fa-researchgate',\n                    'fab fa-resolving',\n                    'fas fa-retweet',\n                    'fab fa-rev',\n                    'fas fa-ribbon',\n                    'fas fa-road',\n                    'fas fa-robot',\n                    'fas fa-rocket',\n                    'fab fa-rocketchat',\n                    'fab fa-rockrms',\n                    'fas fa-route',\n                    'fas fa-rss',\n                    'fas fa-rss-square',\n                    'fas fa-ruble-sign',\n                    'fas fa-ruler',\n                    'fas fa-ruler-combined',\n                    'fas fa-ruler-horizontal',\n                    'fas fa-ruler-vertical',\n                    'fas fa-rupee-sign',\n                    'fas fa-sad-cry',\n                    'far fa-sad-cry',\n                    'fas fa-sad-tear',\n                    'far fa-sad-tear',\n                    'fab fa-safari',\n                    'fab fa-sass',\n                    'fas fa-save',\n                    'far fa-save',\n                    'fab fa-schlix',\n                    'fas fa-school',\n                    'fas fa-screwdriver',\n                    'fab fa-scribd',\n                    'fas fa-search',\n                    'fas fa-search-dollar',\n                    'fas fa-search-location',\n                    'fas fa-search-minus',\n                    'fas fa-search-plus',\n                    'fab fa-searchengin',\n                    'fas fa-seedling',\n                    'fab fa-sellcast',\n                    'fab fa-sellsy',\n                    'fas fa-server',\n                    'fab fa-servicestack',\n                    'fas fa-shapes',\n                    'fas fa-share',\n                    'fas fa-share-alt',\n                    'fas fa-share-alt-square',\n                    'fas fa-share-square',\n                    'far fa-share-square',\n                    'fas fa-shekel-sign',\n                    'fas fa-shield-alt',\n                    'fas fa-ship',\n                    'fas fa-shipping-fast',\n                    'fab fa-shirtsinbulk',\n                    'fas fa-shoe-prints',\n                    'fas fa-shopping-bag',\n                    'fas fa-shopping-basket',\n                    'fas fa-shopping-cart',\n                    'fab fa-shopware',\n                    'fas fa-shower',\n                    'fas fa-shuttle-van',\n                    'fas fa-sign',\n                    'fas fa-sign-in-alt',\n                    'fas fa-sign-language',\n                    'fas fa-sign-out-alt',\n                    'fas fa-signal',\n                    'fas fa-signature',\n                    'fab fa-simplybuilt',\n                    'fab fa-sistrix',\n                    'fas fa-sitemap',\n                    'fab fa-sith',\n                    'fas fa-skull',\n                    'fab fa-skyatlas',\n                    'fab fa-skype',\n                    'fab fa-slack',\n                    'fab fa-slack-hash',\n                    'fas fa-sliders-h',\n                    'fab fa-slideshare',\n                    'fas fa-smile',\n                    'far fa-smile',\n                    'fas fa-smile-beam',\n                    'far fa-smile-beam',\n                    'fas fa-smile-wink',\n                    'far fa-smile-wink',\n                    'fas fa-smoking',\n                    'fas fa-smoking-ban',\n                    'fab fa-snapchat',\n                    'fab fa-snapchat-ghost',\n                    'fab fa-snapchat-square',\n                    'fas fa-snowflake',\n                    'far fa-snowflake',\n                    'fas fa-socks',\n                    'fas fa-solar-panel',\n                    'fas fa-sort',\n                    'fas fa-sort-alpha-down',\n                    'fas fa-sort-alpha-up',\n                    'fas fa-sort-amount-down',\n                    'fas fa-sort-amount-up',\n                    'fas fa-sort-down',\n                    'fas fa-sort-numeric-down',\n                    'fas fa-sort-numeric-up',\n                    'fas fa-sort-up',\n                    'fab fa-soundcloud',\n                    'fas fa-spa',\n                    'fas fa-space-shuttle',\n                    'fab fa-speakap',\n                    'fas fa-spinner',\n                    'fas fa-splotch',\n                    'fab fa-spotify',\n                    'fas fa-spray-can',\n                    'fas fa-square',\n                    'far fa-square',\n                    'fas fa-square-full',\n                    'fas fa-square-root-alt',\n                    'fab fa-squarespace',\n                    'fab fa-stack-exchange',\n                    'fab fa-stack-overflow',\n                    'fas fa-stamp',\n                    'fas fa-star',\n                    'far fa-star',\n                    'fas fa-star-and-crescent',\n                    'fas fa-star-half',\n                    'far fa-star-half',\n                    'fas fa-star-half-alt',\n                    'fas fa-star-of-david',\n                    'fas fa-star-of-life',\n                    'fab fa-staylinked',\n                    'fab fa-steam',\n                    'fab fa-steam-square',\n                    'fab fa-steam-symbol',\n                    'fas fa-step-backward',\n                    'fas fa-step-forward',\n                    'fas fa-stethoscope',\n                    'fab fa-sticker-mule',\n                    'fas fa-sticky-note',\n                    'far fa-sticky-note',\n                    'fas fa-stop',\n                    'fas fa-stop-circle',\n                    'far fa-stop-circle',\n                    'fas fa-stopwatch',\n                    'fas fa-store',\n                    'fas fa-store-alt',\n                    'fab fa-strava',\n                    'fas fa-stream',\n                    'fas fa-street-view',\n                    'fas fa-strikethrough',\n                    'fab fa-stripe',\n                    'fab fa-stripe-s',\n                    'fas fa-stroopwafel',\n                    'fab fa-studiovinari',\n                    'fab fa-stumbleupon',\n                    'fab fa-stumbleupon-circle',\n                    'fas fa-subscript',\n                    'fas fa-subway',\n                    'fas fa-suitcase',\n                    'fas fa-suitcase-rolling',\n                    'fas fa-sun',\n                    'far fa-sun',\n                    'fab fa-superpowers',\n                    'fas fa-superscript',\n                    'fab fa-supple',\n                    'fas fa-surprise',\n                    'far fa-surprise',\n                    'fas fa-swatchbook',\n                    'fas fa-swimmer',\n                    'fas fa-swimming-pool',\n                    'fas fa-synagogue',\n                    'fas fa-sync',\n                    'fas fa-sync-alt',\n                    'fas fa-syringe',\n                    'fas fa-table',\n                    'fas fa-table-tennis',\n                    'fas fa-tablet',\n                    'fas fa-tablet-alt',\n                    'fas fa-tablets',\n                    'fas fa-tachometer-alt',\n                    'fas fa-tag',\n                    'fas fa-tags',\n                    'fas fa-tape',\n                    'fas fa-tasks',\n                    'fas fa-taxi',\n                    'fab fa-teamspeak',\n                    'fas fa-teeth',\n                    'fas fa-teeth-open',\n                    'fab fa-telegram',\n                    'fab fa-telegram-plane',\n                    'fab fa-tencent-weibo',\n                    'fas fa-terminal',\n                    'fas fa-text-height',\n                    'fas fa-text-width',\n                    'fas fa-th',\n                    'fas fa-th-large',\n                    'fas fa-th-list',\n                    'fab fa-the-red-yeti',\n                    'fas fa-theater-masks',\n                    'fab fa-themeco',\n                    'fab fa-themeisle',\n                    'fas fa-thermometer',\n                    'fas fa-thermometer-empty',\n                    'fas fa-thermometer-full',\n                    'fas fa-thermometer-half',\n                    'fas fa-thermometer-quarter',\n                    'fas fa-thermometer-three-quarters',\n                    'fas fa-thumbs-down',\n                    'far fa-thumbs-down',\n                    'fas fa-thumbs-up',\n                    'far fa-thumbs-up',\n                    'fas fa-thumbtack',\n                    'fas fa-ticket-alt',\n                    'fas fa-times',\n                    'fas fa-times-circle',\n                    'far fa-times-circle',\n                    'fas fa-tint',\n                    'fas fa-tint-slash',\n                    'fas fa-tired',\n                    'far fa-tired',\n                    'fas fa-toggle-off',\n                    'fas fa-toggle-on',\n                    'fas fa-toolbox',\n                    'fas fa-tooth',\n                    'fas fa-torah',\n                    'fas fa-torii-gate',\n                    'fab fa-trade-federation',\n                    'fas fa-trademark',\n                    'fas fa-traffic-light',\n                    'fas fa-train',\n                    'fas fa-transgender',\n                    'fas fa-transgender-alt',\n                    'fas fa-trash',\n                    'fas fa-trash-alt',\n                    'far fa-trash-alt',\n                    'fas fa-tree',\n                    'fab fa-trello',\n                    'fab fa-tripadvisor',\n                    'fas fa-trophy',\n                    'fas fa-truck',\n                    'fas fa-truck-loading',\n                    'fas fa-truck-monster',\n                    'fas fa-truck-moving',\n                    'fas fa-truck-pickup',\n                    'fas fa-tshirt',\n                    'fas fa-tty',\n                    'fab fa-tumblr',\n                    'fab fa-tumblr-square',\n                    'fas fa-tv',\n                    'fab fa-twitch',\n                    'fab fa-twitter',\n                    'fab fa-twitter-square',\n                    'fab fa-typo3',\n                    'fab fa-uber',\n                    'fab fa-uikit',\n                    'fas fa-umbrella',\n                    'fas fa-umbrella-beach',\n                    'fas fa-underline',\n                    'fas fa-undo',\n                    'fas fa-undo-alt',\n                    'fab fa-uniregistry',\n                    'fas fa-universal-access',\n                    'fas fa-university',\n                    'fas fa-unlink',\n                    'fas fa-unlock',\n                    'fas fa-unlock-alt',\n                    'fab fa-untappd',\n                    'fas fa-upload',\n                    'fab fa-usb',\n                    'fas fa-user',\n                    'far fa-user',\n                    'fas fa-user-alt',\n                    'fas fa-user-alt-slash',\n                    'fas fa-user-astronaut',\n                    'fas fa-user-check',\n                    'fas fa-user-circle',\n                    'far fa-user-circle',\n                    'fas fa-user-clock',\n                    'fas fa-user-cog',\n                    'fas fa-user-edit',\n                    'fas fa-user-friends',\n                    'fas fa-user-graduate',\n                    'fas fa-user-lock',\n                    'fas fa-user-md',\n                    'fas fa-user-minus',\n                    'fas fa-user-ninja',\n                    'fas fa-user-plus',\n                    'fas fa-user-secret',\n                    'fas fa-user-shield',\n                    'fas fa-user-slash',\n                    'fas fa-user-tag',\n                    'fas fa-user-tie',\n                    'fas fa-user-times',\n                    'fas fa-users',\n                    'fas fa-users-cog',\n                    'fab fa-ussunnah',\n                    'fas fa-utensil-spoon',\n                    'fas fa-utensils',\n                    'fab fa-vaadin',\n                    'fas fa-vector-square',\n                    'fas fa-venus',\n                    'fas fa-venus-double',\n                    'fas fa-venus-mars',\n                    'fab fa-viacoin',\n                    'fab fa-viadeo',\n                    'fab fa-viadeo-square',\n                    'fas fa-vial',\n                    'fas fa-vials',\n                    'fab fa-viber',\n                    'fas fa-video',\n                    'fas fa-video-slash',\n                    'fas fa-vihara',\n                    'fab fa-vimeo',\n                    'fab fa-vimeo-square',\n                    'fab fa-vimeo-v',\n                    'fab fa-vine',\n                    'fab fa-vk',\n                    'fab fa-vnv',\n                    'fas fa-volleyball-ball',\n                    'fas fa-volume-down',\n                    'fas fa-volume-off',\n                    'fas fa-volume-up',\n                    'fab fa-vuejs',\n                    'fas fa-walking',\n                    'fas fa-wallet',\n                    'fas fa-warehouse',\n                    'fab fa-weebly',\n                    'fab fa-weibo',\n                    'fas fa-weight',\n                    'fas fa-weight-hanging',\n                    'fab fa-weixin',\n                    'fab fa-whatsapp',\n                    'fab fa-whatsapp-square',\n                    'fas fa-wheelchair',\n                    'fab fa-whmcs',\n                    'fas fa-wifi',\n                    'fab fa-wikipedia-w',\n                    'fas fa-window-close',\n                    'far fa-window-close',\n                    'fas fa-window-maximize',\n                    'far fa-window-maximize',\n                    'fas fa-window-minimize',\n                    'far fa-window-minimize',\n                    'fas fa-window-restore',\n                    'far fa-window-restore',\n                    'fab fa-windows',\n                    'fas fa-wine-glass',\n                    'fas fa-wine-glass-alt',\n                    'fab fa-wix',\n                    'fab fa-wolf-pack-battalion',\n                    'fas fa-won-sign',\n                    'fab fa-wordpress',\n                    'fab fa-wordpress-simple',\n                    'fab fa-wpbeginner',\n                    'fab fa-wpexplorer',\n                    'fab fa-wpforms',\n                    'fas fa-wrench',\n                    'fas fa-x-ray',\n                    'fab fa-xbox',\n                    'fab fa-xing',\n                    'fab fa-xing-square',\n                    'fab fa-y-combinator',\n                    'fab fa-yahoo',\n                    'fab fa-yandex',\n                    'fab fa-yandex-international',\n                    'fab fa-yelp',\n                    'fas fa-yen-sign',\n                    'fas fa-yin-yang',\n                    'fab fa-yoast',\n                    'fab fa-youtube',\n                    'fab fa-youtube-square',\n                    'fab fa-zhihu'\n                ]\n            }\n        ]\n    };\n\n    var l = data.allVersions.length;\n    data.icons = data.allVersions[l-1].icons;\n\n    $.iconset_fontawesome_4 = data;\n\n})(jQuery);\n\n/*!========================================================================\n * Iconset: Font Awesome\n * Versions: 5.3.1, 5.3.1_pro\n * http://fortawesome.github.io/Font-Awesome/\n * CDN: https://use.fontawesome.com/releases/[VERSION]/css/all.css\n * ======================================================================== */\n\n;(function($){\n\n    var data = {\n        iconClass: '',\n        iconClassFix: '',\n        icons: [],\n        allVersions: [\n            {\n                version: '5.3.1',\n                icons: [\n                    'empty',\n                    'fab fa-500px',\n                    'fab fa-accessible-icon',\n                    'fab fa-accusoft',\n                    'fas fa-ad',\n                    'fas fa-address-book',\n                    'far fa-address-book',\n                    'fas fa-address-card',\n                    'far fa-address-card',\n                    'fas fa-adjust',\n                    'fab fa-adn',\n                    'fab fa-adversal',\n                    'fab fa-affiliatetheme',\n                    'fas fa-air-freshener',\n                    'fab fa-algolia',\n                    'fas fa-align-center',\n                    'fas fa-align-justify',\n                    'fas fa-align-left',\n                    'fas fa-align-right',\n                    'fab fa-alipay',\n                    'fas fa-allergies',\n                    'fab fa-amazon',\n                    'fab fa-amazon-pay',\n                    'fas fa-ambulance',\n                    'fas fa-american-sign-language-interpreting',\n                    'fab fa-amilia',\n                    'fas fa-anchor',\n                    'fab fa-android',\n                    'fab fa-angellist',\n                    'fas fa-angle-double-down',\n                    'fas fa-angle-double-left',\n                    'fas fa-angle-double-right',\n                    'fas fa-angle-double-up',\n                    'fas fa-angle-down',\n                    'fas fa-angle-left',\n                    'fas fa-angle-right',\n                    'fas fa-angle-up',\n                    'fas fa-angry',\n                    'far fa-angry',\n                    'fab fa-angrycreative',\n                    'fab fa-angular',\n                    'fas fa-ankh',\n                    'fab fa-app-store',\n                    'fab fa-app-store-ios',\n                    'fab fa-apper',\n                    'fab fa-apple',\n                    'fas fa-apple-alt',\n                    'fab fa-apple-pay',\n                    'fas fa-archive',\n                    'fas fa-archway',\n                    'fas fa-arrow-alt-circle-down',\n                    'far fa-arrow-alt-circle-down',\n                    'fas fa-arrow-alt-circle-left',\n                    'far fa-arrow-alt-circle-left',\n                    'fas fa-arrow-alt-circle-right',\n                    'far fa-arrow-alt-circle-right',\n                    'fas fa-arrow-alt-circle-up',\n                    'far fa-arrow-alt-circle-up',\n                    'fas fa-arrow-circle-down',\n                    'fas fa-arrow-circle-left',\n                    'fas fa-arrow-circle-right',\n                    'fas fa-arrow-circle-up',\n                    'fas fa-arrow-down',\n                    'fas fa-arrow-left',\n                    'fas fa-arrow-right',\n                    'fas fa-arrow-up',\n                    'fas fa-arrows-alt',\n                    'fas fa-arrows-alt-h',\n                    'fas fa-arrows-alt-v',\n                    'fas fa-assistive-listening-systems',\n                    'fas fa-asterisk',\n                    'fab fa-asymmetrik',\n                    'fas fa-at',\n                    'fas fa-atlas',\n                    'fas fa-atom',\n                    'fab fa-audible',\n                    'fas fa-audio-description',\n                    'fab fa-autoprefixer',\n                    'fab fa-avianex',\n                    'fab fa-aviato',\n                    'fas fa-award',\n                    'fab fa-aws',\n                    'fas fa-backspace',\n                    'fas fa-backward',\n                    'fas fa-balance-scale',\n                    'fas fa-ban',\n                    'fas fa-band-aid',\n                    'fab fa-bandcamp',\n                    'fas fa-barcode',\n                    'fas fa-bars',\n                    'fas fa-baseball-ball',\n                    'fas fa-basketball-ball',\n                    'fas fa-bath',\n                    'fas fa-battery-empty',\n                    'fas fa-battery-full',\n                    'fas fa-battery-half',\n                    'fas fa-battery-quarter',\n                    'fas fa-battery-three-quarters',\n                    'fas fa-bed',\n                    'fas fa-beer',\n                    'fab fa-behance',\n                    'fab fa-behance-square',\n                    'fas fa-bell',\n                    'far fa-bell',\n                    'fas fa-bell-slash',\n                    'far fa-bell-slash',\n                    'fas fa-bezier-curve',\n                    'fas fa-bible',\n                    'fas fa-bicycle',\n                    'fab fa-bimobject',\n                    'fas fa-binoculars',\n                    'fas fa-birthday-cake',\n                    'fab fa-bitbucket',\n                    'fab fa-bitcoin',\n                    'fab fa-bity',\n                    'fab fa-black-tie',\n                    'fab fa-blackberry',\n                    'fas fa-blender',\n                    'fas fa-blind',\n                    'fab fa-blogger',\n                    'fab fa-blogger-b',\n                    'fab fa-bluetooth',\n                    'fab fa-bluetooth-b',\n                    'fas fa-bold',\n                    'fas fa-bolt',\n                    'fas fa-bomb',\n                    'fas fa-bone',\n                    'fas fa-bong',\n                    'fas fa-book',\n                    'fas fa-book-open',\n                    'fas fa-book-reader',\n                    'fas fa-bookmark',\n                    'far fa-bookmark',\n                    'fas fa-bowling-ball',\n                    'fas fa-box',\n                    'fas fa-box-open',\n                    'fas fa-boxes',\n                    'fas fa-braille',\n                    'fas fa-brain',\n                    'fas fa-briefcase',\n                    'fas fa-briefcase-medical',\n                    'fas fa-broadcast-tower',\n                    'fas fa-broom',\n                    'fas fa-brush',\n                    'fab fa-btc',\n                    'fas fa-bug',\n                    'fas fa-building',\n                    'far fa-building',\n                    'fas fa-bullhorn',\n                    'fas fa-bullseye',\n                    'fas fa-burn',\n                    'fab fa-buromobelexperte',\n                    'fas fa-bus',\n                    'fas fa-bus-alt',\n                    'fas fa-business-time',\n                    'fab fa-buysellads',\n                    'fas fa-calculator',\n                    'fas fa-calendar',\n                    'far fa-calendar',\n                    'fas fa-calendar-alt',\n                    'far fa-calendar-alt',\n                    'fas fa-calendar-check',\n                    'far fa-calendar-check',\n                    'fas fa-calendar-minus',\n                    'far fa-calendar-minus',\n                    'fas fa-calendar-plus',\n                    'far fa-calendar-plus',\n                    'fas fa-calendar-times',\n                    'far fa-calendar-times',\n                    'fas fa-camera',\n                    'fas fa-camera-retro',\n                    'fas fa-cannabis',\n                    'fas fa-capsules',\n                    'fas fa-car',\n                    'fas fa-car-alt',\n                    'fas fa-car-battery',\n                    'fas fa-car-crash',\n                    'fas fa-car-side',\n                    'fas fa-caret-down',\n                    'fas fa-caret-left',\n                    'fas fa-caret-right',\n                    'fas fa-caret-square-down',\n                    'far fa-caret-square-down',\n                    'fas fa-caret-square-left',\n                    'far fa-caret-square-left',\n                    'fas fa-caret-square-right',\n                    'far fa-caret-square-right',\n                    'fas fa-caret-square-up',\n                    'far fa-caret-square-up',\n                    'fas fa-caret-up',\n                    'fas fa-cart-arrow-down',\n                    'fas fa-cart-plus',\n                    'fab fa-cc-amazon-pay',\n                    'fab fa-cc-amex',\n                    'fab fa-cc-apple-pay',\n                    'fab fa-cc-diners-club',\n                    'fab fa-cc-discover',\n                    'fab fa-cc-jcb',\n                    'fab fa-cc-mastercard',\n                    'fab fa-cc-paypal',\n                    'fab fa-cc-stripe',\n                    'fab fa-cc-visa',\n                    'fab fa-centercode',\n                    'fas fa-certificate',\n                    'fas fa-chalkboard',\n                    'fas fa-chalkboard-teacher',\n                    'fas fa-charging-station',\n                    'fas fa-chart-area',\n                    'fas fa-chart-bar',\n                    'far fa-chart-bar',\n                    'fas fa-chart-line',\n                    'fas fa-chart-pie',\n                    'fas fa-check',\n                    'fas fa-check-circle',\n                    'far fa-check-circle',\n                    'fas fa-check-double',\n                    'fas fa-check-square',\n                    'far fa-check-square',\n                    'fas fa-chess',\n                    'fas fa-chess-bishop',\n                    'fas fa-chess-board',\n                    'fas fa-chess-king',\n                    'fas fa-chess-knight',\n                    'fas fa-chess-pawn',\n                    'fas fa-chess-queen',\n                    'fas fa-chess-rook',\n                    'fas fa-chevron-circle-down',\n                    'fas fa-chevron-circle-left',\n                    'fas fa-chevron-circle-right',\n                    'fas fa-chevron-circle-up',\n                    'fas fa-chevron-down',\n                    'fas fa-chevron-left',\n                    'fas fa-chevron-right',\n                    'fas fa-chevron-up',\n                    'fas fa-child',\n                    'fab fa-chrome',\n                    'fas fa-church',\n                    'fas fa-circle',\n                    'far fa-circle',\n                    'fas fa-circle-notch',\n                    'fas fa-city',\n                    'fas fa-clipboard',\n                    'far fa-clipboard',\n                    'fas fa-clipboard-check',\n                    'fas fa-clipboard-list',\n                    'fas fa-clock',\n                    'far fa-clock',\n                    'fas fa-clone',\n                    'far fa-clone',\n                    'fas fa-closed-captioning',\n                    'far fa-closed-captioning',\n                    'fas fa-cloud',\n                    'fas fa-cloud-download-alt',\n                    'fas fa-cloud-upload-alt',\n                    'fab fa-cloudscale',\n                    'fab fa-cloudsmith',\n                    'fab fa-cloudversify',\n                    'fas fa-cocktail',\n                    'fas fa-code',\n                    'fas fa-code-branch',\n                    'fab fa-codepen',\n                    'fab fa-codiepie',\n                    'fas fa-coffee',\n                    'fas fa-cog',\n                    'fas fa-cogs',\n                    'fas fa-coins',\n                    'fas fa-columns',\n                    'fas fa-comment',\n                    'far fa-comment',\n                    'fas fa-comment-alt',\n                    'far fa-comment-alt',\n                    'fas fa-comment-dollar',\n                    'fas fa-comment-dots',\n                    'far fa-comment-dots',\n                    'fas fa-comment-slash',\n                    'fas fa-comments',\n                    'far fa-comments',\n                    'fas fa-comments-dollar',\n                    'fas fa-compact-disc',\n                    'fas fa-compass',\n                    'far fa-compass',\n                    'fas fa-compress',\n                    'fas fa-concierge-bell',\n                    'fab fa-connectdevelop',\n                    'fab fa-contao',\n                    'fas fa-cookie',\n                    'fas fa-cookie-bite',\n                    'fas fa-copy',\n                    'far fa-copy',\n                    'fas fa-copyright',\n                    'far fa-copyright',\n                    'fas fa-couch',\n                    'fab fa-cpanel',\n                    'fab fa-creative-commons',\n                    'fab fa-creative-commons-by',\n                    'fab fa-creative-commons-nc',\n                    'fab fa-creative-commons-nc-eu',\n                    'fab fa-creative-commons-nc-jp',\n                    'fab fa-creative-commons-nd',\n                    'fab fa-creative-commons-pd',\n                    'fab fa-creative-commons-pd-alt',\n                    'fab fa-creative-commons-remix',\n                    'fab fa-creative-commons-sa',\n                    'fab fa-creative-commons-sampling',\n                    'fab fa-creative-commons-sampling-plus',\n                    'fab fa-creative-commons-share',\n                    'fas fa-credit-card',\n                    'far fa-credit-card',\n                    'fas fa-crop',\n                    'fas fa-crop-alt',\n                    'fas fa-cross',\n                    'fas fa-crosshairs',\n                    'fas fa-crow',\n                    'fas fa-crown',\n                    'fab fa-css3',\n                    'fab fa-css3-alt',\n                    'fas fa-cube',\n                    'fas fa-cubes',\n                    'fas fa-cut',\n                    'fab fa-cuttlefish',\n                    'fab fa-d-and-d',\n                    'fab fa-dashcube',\n                    'fas fa-database',\n                    'fas fa-deaf',\n                    'fab fa-delicious',\n                    'fab fa-deploydog',\n                    'fab fa-deskpro',\n                    'fas fa-desktop',\n                    'fab fa-deviantart',\n                    'fas fa-dharmachakra',\n                    'fas fa-diagnoses',\n                    'fas fa-dice',\n                    'fas fa-dice-five',\n                    'fas fa-dice-four',\n                    'fas fa-dice-one',\n                    'fas fa-dice-six',\n                    'fas fa-dice-three',\n                    'fas fa-dice-two',\n                    'fab fa-digg',\n                    'fab fa-digital-ocean',\n                    'fas fa-digital-tachograph',\n                    'fas fa-directions',\n                    'fab fa-discord',\n                    'fab fa-discourse',\n                    'fas fa-divide',\n                    'fas fa-dizzy',\n                    'far fa-dizzy',\n                    'fas fa-dna',\n                    'fab fa-dochub',\n                    'fab fa-docker',\n                    'fas fa-dollar-sign',\n                    'fas fa-dolly',\n                    'fas fa-dolly-flatbed',\n                    'fas fa-donate',\n                    'fas fa-door-closed',\n                    'fas fa-door-open',\n                    'fas fa-dot-circle',\n                    'far fa-dot-circle',\n                    'fas fa-dove',\n                    'fas fa-download',\n                    'fab fa-draft2digital',\n                    'fas fa-drafting-compass',\n                    'fas fa-draw-polygon',\n                    'fab fa-dribbble',\n                    'fab fa-dribbble-square',\n                    'fab fa-dropbox',\n                    'fas fa-drum',\n                    'fas fa-drum-steelpan',\n                    'fab fa-drupal',\n                    'fas fa-dumbbell',\n                    'fab fa-dyalog',\n                    'fab fa-earlybirds',\n                    'fab fa-ebay',\n                    'fab fa-edge',\n                    'fas fa-edit',\n                    'far fa-edit',\n                    'fas fa-eject',\n                    'fab fa-elementor',\n                    'fas fa-ellipsis-h',\n                    'fas fa-ellipsis-v',\n                    'fab fa-ello',\n                    'fab fa-ember',\n                    'fab fa-empire',\n                    'fas fa-envelope',\n                    'far fa-envelope',\n                    'fas fa-envelope-open',\n                    'far fa-envelope-open',\n                    'fas fa-envelope-open-text',\n                    'fas fa-envelope-square',\n                    'fab fa-envira',\n                    'fas fa-equals',\n                    'fas fa-eraser',\n                    'fab fa-erlang',\n                    'fab fa-ethereum',\n                    'fab fa-etsy',\n                    'fas fa-euro-sign',\n                    'fas fa-exchange-alt',\n                    'fas fa-exclamation',\n                    'fas fa-exclamation-circle',\n                    'fas fa-exclamation-triangle',\n                    'fas fa-expand',\n                    'fas fa-expand-arrows-alt',\n                    'fab fa-expeditedssl',\n                    'fas fa-external-link-alt',\n                    'fas fa-external-link-square-alt',\n                    'fas fa-eye',\n                    'far fa-eye',\n                    'fas fa-eye-dropper',\n                    'fas fa-eye-slash',\n                    'far fa-eye-slash',\n                    'fab fa-facebook',\n                    'fab fa-facebook-f',\n                    'fab fa-facebook-messenger',\n                    'fab fa-facebook-square',\n                    'fas fa-fast-backward',\n                    'fas fa-fast-forward',\n                    'fas fa-fax',\n                    'fas fa-feather',\n                    'fas fa-feather-alt',\n                    'fas fa-female',\n                    'fas fa-fighter-jet',\n                    'fas fa-file',\n                    'far fa-file',\n                    'fas fa-file-alt',\n                    'far fa-file-alt',\n                    'fas fa-file-archive',\n                    'far fa-file-archive',\n                    'fas fa-file-audio',\n                    'far fa-file-audio',\n                    'fas fa-file-code',\n                    'far fa-file-code',\n                    'fas fa-file-contract',\n                    'fas fa-file-download',\n                    'fas fa-file-excel',\n                    'far fa-file-excel',\n                    'fas fa-file-export',\n                    'fas fa-file-image',\n                    'far fa-file-image',\n                    'fas fa-file-import',\n                    'fas fa-file-invoice',\n                    'fas fa-file-invoice-dollar',\n                    'fas fa-file-medical',\n                    'fas fa-file-medical-alt',\n                    'fas fa-file-pdf',\n                    'far fa-file-pdf',\n                    'fas fa-file-powerpoint',\n                    'far fa-file-powerpoint',\n                    'fas fa-file-prescription',\n                    'fas fa-file-signature',\n                    'fas fa-file-upload',\n                    'fas fa-file-video',\n                    'far fa-file-video',\n                    'fas fa-file-word',\n                    'far fa-file-word',\n                    'fas fa-fill',\n                    'fas fa-fill-drip',\n                    'fas fa-film',\n                    'fas fa-filter',\n                    'fas fa-fingerprint',\n                    'fas fa-fire',\n                    'fas fa-fire-extinguisher',\n                    'fab fa-firefox',\n                    'fas fa-first-aid',\n                    'fab fa-first-order',\n                    'fab fa-first-order-alt',\n                    'fab fa-firstdraft',\n                    'fas fa-fish',\n                    'fas fa-flag',\n                    'far fa-flag',\n                    'fas fa-flag-checkered',\n                    'fas fa-flask',\n                    'fab fa-flickr',\n                    'fab fa-flipboard',\n                    'fas fa-flushed',\n                    'far fa-flushed',\n                    'fab fa-fly',\n                    'fas fa-folder',\n                    'far fa-folder',\n                    'fas fa-folder-minus',\n                    'fas fa-folder-open',\n                    'far fa-folder-open',\n                    'fas fa-folder-plus',\n                    'fas fa-font',\n                    'fab fa-font-awesome',\n                    'fab fa-font-awesome-alt',\n                    'fab fa-font-awesome-flag',\n                    'fab fa-fonticons',\n                    'fab fa-fonticons-fi',\n                    'fas fa-football-ball',\n                    'fab fa-fort-awesome',\n                    'fab fa-fort-awesome-alt',\n                    'fab fa-forumbee',\n                    'fas fa-forward',\n                    'fab fa-foursquare',\n                    'fab fa-free-code-camp',\n                    'fab fa-freebsd',\n                    'fas fa-frog',\n                    'fas fa-frown',\n                    'far fa-frown',\n                    'fas fa-frown-open',\n                    'far fa-frown-open',\n                    'fab fa-fulcrum',\n                    'fas fa-funnel-dollar',\n                    'fas fa-futbol',\n                    'far fa-futbol',\n                    'fab fa-galactic-republic',\n                    'fab fa-galactic-senate',\n                    'fas fa-gamepad',\n                    'fas fa-gas-pump',\n                    'fas fa-gavel',\n                    'fas fa-gem',\n                    'far fa-gem',\n                    'fas fa-genderless',\n                    'fab fa-get-pocket',\n                    'fab fa-gg',\n                    'fab fa-gg-circle',\n                    'fas fa-gift',\n                    'fab fa-git',\n                    'fab fa-git-square',\n                    'fab fa-github',\n                    'fab fa-github-alt',\n                    'fab fa-github-square',\n                    'fab fa-gitkraken',\n                    'fab fa-gitlab',\n                    'fab fa-gitter',\n                    'fas fa-glass-martini',\n                    'fas fa-glass-martini-alt',\n                    'fas fa-glasses',\n                    'fab fa-glide',\n                    'fab fa-glide-g',\n                    'fas fa-globe',\n                    'fas fa-globe-africa',\n                    'fas fa-globe-americas',\n                    'fas fa-globe-asia',\n                    'fab fa-gofore',\n                    'fas fa-golf-ball',\n                    'fab fa-goodreads',\n                    'fab fa-goodreads-g',\n                    'fab fa-google',\n                    'fab fa-google-drive',\n                    'fab fa-google-play',\n                    'fab fa-google-plus',\n                    'fab fa-google-plus-g',\n                    'fab fa-google-plus-square',\n                    'fab fa-google-wallet',\n                    'fas fa-gopuram',\n                    'fas fa-graduation-cap',\n                    'fab fa-gratipay',\n                    'fab fa-grav',\n                    'fas fa-greater-than',\n                    'fas fa-greater-than-equal',\n                    'fas fa-grimace',\n                    'far fa-grimace',\n                    'fas fa-grin',\n                    'far fa-grin',\n                    'fas fa-grin-alt',\n                    'far fa-grin-alt',\n                    'fas fa-grin-beam',\n                    'far fa-grin-beam',\n                    'fas fa-grin-beam-sweat',\n                    'far fa-grin-beam-sweat',\n                    'fas fa-grin-hearts',\n                    'far fa-grin-hearts',\n                    'fas fa-grin-squint',\n                    'far fa-grin-squint',\n                    'fas fa-grin-squint-tears',\n                    'far fa-grin-squint-tears',\n                    'fas fa-grin-stars',\n                    'far fa-grin-stars',\n                    'fas fa-grin-tears',\n                    'far fa-grin-tears',\n                    'fas fa-grin-tongue',\n                    'far fa-grin-tongue',\n                    'fas fa-grin-tongue-squint',\n                    'far fa-grin-tongue-squint',\n                    'fas fa-grin-tongue-wink',\n                    'far fa-grin-tongue-wink',\n                    'fas fa-grin-wink',\n                    'far fa-grin-wink',\n                    'fas fa-grip-horizontal',\n                    'fas fa-grip-vertical',\n                    'fab fa-gripfire',\n                    'fab fa-grunt',\n                    'fab fa-gulp',\n                    'fas fa-h-square',\n                    'fab fa-hacker-news',\n                    'fab fa-hacker-news-square',\n                    'fab fa-hackerrank',\n                    'fas fa-hamsa',\n                    'fas fa-hand-holding',\n                    'fas fa-hand-holding-heart',\n                    'fas fa-hand-holding-usd',\n                    'fas fa-hand-lizard',\n                    'far fa-hand-lizard',\n                    'fas fa-hand-paper',\n                    'far fa-hand-paper',\n                    'fas fa-hand-peace',\n                    'far fa-hand-peace',\n                    'fas fa-hand-point-down',\n                    'far fa-hand-point-down',\n                    'fas fa-hand-point-left',\n                    'far fa-hand-point-left',\n                    'fas fa-hand-point-right',\n                    'far fa-hand-point-right',\n                    'fas fa-hand-point-up',\n                    'far fa-hand-point-up',\n                    'fas fa-hand-pointer',\n                    'far fa-hand-pointer',\n                    'fas fa-hand-rock',\n                    'far fa-hand-rock',\n                    'fas fa-hand-scissors',\n                    'far fa-hand-scissors',\n                    'fas fa-hand-spock',\n                    'far fa-hand-spock',\n                    'fas fa-hands',\n                    'fas fa-hands-helping',\n                    'fas fa-handshake',\n                    'far fa-handshake',\n                    'fas fa-hashtag',\n                    'fas fa-haykal',\n                    'fas fa-hdd',\n                    'far fa-hdd',\n                    'fas fa-heading',\n                    'fas fa-headphones',\n                    'fas fa-headphones-alt',\n                    'fas fa-headset',\n                    'fas fa-heart',\n                    'far fa-heart',\n                    'fas fa-heartbeat',\n                    'fas fa-helicopter',\n                    'fas fa-highlighter',\n                    'fab fa-hips',\n                    'fab fa-hire-a-helper',\n                    'fas fa-history',\n                    'fas fa-hockey-puck',\n                    'fas fa-home',\n                    'fab fa-hooli',\n                    'fab fa-hornbill',\n                    'fas fa-hospital',\n                    'far fa-hospital',\n                    'fas fa-hospital-alt',\n                    'fas fa-hospital-symbol',\n                    'fas fa-hot-tub',\n                    'fas fa-hotel',\n                    'fab fa-hotjar',\n                    'fas fa-hourglass',\n                    'far fa-hourglass',\n                    'fas fa-hourglass-end',\n                    'fas fa-hourglass-half',\n                    'fas fa-hourglass-start',\n                    'fab fa-houzz',\n                    'fab fa-html5',\n                    'fab fa-hubspot',\n                    'fas fa-i-cursor',\n                    'fas fa-id-badge',\n                    'far fa-id-badge',\n                    'fas fa-id-card',\n                    'far fa-id-card',\n                    'fas fa-id-card-alt',\n                    'fas fa-image',\n                    'far fa-image',\n                    'fas fa-images',\n                    'far fa-images',\n                    'fab fa-imdb',\n                    'fas fa-inbox',\n                    'fas fa-indent',\n                    'fas fa-industry',\n                    'fas fa-infinity',\n                    'fas fa-info',\n                    'fas fa-info-circle',\n                    'fab fa-instagram',\n                    'fab fa-internet-explorer',\n                    'fab fa-ioxhost',\n                    'fas fa-italic',\n                    'fab fa-itunes',\n                    'fab fa-itunes-note',\n                    'fab fa-java',\n                    'fas fa-jedi',\n                    'fab fa-jedi-order',\n                    'fab fa-jenkins',\n                    'fab fa-joget',\n                    'fas fa-joint',\n                    'fab fa-joomla',\n                    'fas fa-journal-whills',\n                    'fab fa-js',\n                    'fab fa-js-square',\n                    'fab fa-jsfiddle',\n                    'fas fa-kaaba',\n                    'fab fa-kaggle',\n                    'fas fa-key',\n                    'fab fa-keybase',\n                    'fas fa-keyboard',\n                    'far fa-keyboard',\n                    'fab fa-keycdn',\n                    'fas fa-khanda',\n                    'fab fa-kickstarter',\n                    'fab fa-kickstarter-k',\n                    'fas fa-kiss',\n                    'far fa-kiss',\n                    'fas fa-kiss-beam',\n                    'far fa-kiss-beam',\n                    'fas fa-kiss-wink-heart',\n                    'far fa-kiss-wink-heart',\n                    'fas fa-kiwi-bird',\n                    'fab fa-korvue',\n                    'fas fa-landmark',\n                    'fas fa-language',\n                    'fas fa-laptop',\n                    'fas fa-laptop-code',\n                    'fab fa-laravel',\n                    'fab fa-lastfm',\n                    'fab fa-lastfm-square',\n                    'fas fa-laugh',\n                    'far fa-laugh',\n                    'fas fa-laugh-beam',\n                    'far fa-laugh-beam',\n                    'fas fa-laugh-squint',\n                    'far fa-laugh-squint',\n                    'fas fa-laugh-wink',\n                    'far fa-laugh-wink',\n                    'fas fa-layer-group',\n                    'fas fa-leaf',\n                    'fab fa-leanpub',\n                    'fas fa-lemon',\n                    'far fa-lemon',\n                    'fab fa-less',\n                    'fas fa-less-than',\n                    'fas fa-less-than-equal',\n                    'fas fa-level-down-alt',\n                    'fas fa-level-up-alt',\n                    'fas fa-life-ring',\n                    'far fa-life-ring',\n                    'fas fa-lightbulb',\n                    'far fa-lightbulb',\n                    'fab fa-line',\n                    'fas fa-link',\n                    'fab fa-linkedin',\n                    'fab fa-linkedin-in',\n                    'fab fa-linode',\n                    'fab fa-linux',\n                    'fas fa-lira-sign',\n                    'fas fa-list',\n                    'fas fa-list-alt',\n                    'far fa-list-alt',\n                    'fas fa-list-ol',\n                    'fas fa-list-ul',\n                    'fas fa-location-arrow',\n                    'fas fa-lock',\n                    'fas fa-lock-open',\n                    'fas fa-long-arrow-alt-down',\n                    'fas fa-long-arrow-alt-left',\n                    'fas fa-long-arrow-alt-right',\n                    'fas fa-long-arrow-alt-up',\n                    'fas fa-low-vision',\n                    'fas fa-luggage-cart',\n                    'fab fa-lyft',\n                    'fab fa-magento',\n                    'fas fa-magic',\n                    'fas fa-magnet',\n                    'fas fa-mail-bulk',\n                    'fab fa-mailchimp',\n                    'fas fa-male',\n                    'fab fa-mandalorian',\n                    'fas fa-map',\n                    'far fa-map',\n                    'fas fa-map-marked',\n                    'fas fa-map-marked-alt',\n                    'fas fa-map-marker',\n                    'fas fa-map-marker-alt',\n                    'fas fa-map-pin',\n                    'fas fa-map-signs',\n                    'fab fa-markdown',\n                    'fas fa-marker',\n                    'fas fa-mars',\n                    'fas fa-mars-double',\n                    'fas fa-mars-stroke',\n                    'fas fa-mars-stroke-h',\n                    'fas fa-mars-stroke-v',\n                    'fab fa-mastodon',\n                    'fab fa-maxcdn',\n                    'fas fa-medal',\n                    'fab fa-medapps',\n                    'fab fa-medium',\n                    'fab fa-medium-m',\n                    'fas fa-medkit',\n                    'fab fa-medrt',\n                    'fab fa-meetup',\n                    'fab fa-megaport',\n                    'fas fa-meh',\n                    'far fa-meh',\n                    'fas fa-meh-blank',\n                    'far fa-meh-blank',\n                    'fas fa-meh-rolling-eyes',\n                    'far fa-meh-rolling-eyes',\n                    'fas fa-memory',\n                    'fas fa-menorah',\n                    'fas fa-mercury',\n                    'fas fa-microchip',\n                    'fas fa-microphone',\n                    'fas fa-microphone-alt',\n                    'fas fa-microphone-alt-slash',\n                    'fas fa-microphone-slash',\n                    'fas fa-microscope',\n                    'fab fa-microsoft',\n                    'fas fa-minus',\n                    'fas fa-minus-circle',\n                    'fas fa-minus-square',\n                    'far fa-minus-square',\n                    'fab fa-mix',\n                    'fab fa-mixcloud',\n                    'fab fa-mizuni',\n                    'fas fa-mobile',\n                    'fas fa-mobile-alt',\n                    'fab fa-modx',\n                    'fab fa-monero',\n                    'fas fa-money-bill',\n                    'fas fa-money-bill-alt',\n                    'far fa-money-bill-alt',\n                    'fas fa-money-bill-wave',\n                    'fas fa-money-bill-wave-alt',\n                    'fas fa-money-check',\n                    'fas fa-money-check-alt',\n                    'fas fa-monument',\n                    'fas fa-moon',\n                    'far fa-moon',\n                    'fas fa-mortar-pestle',\n                    'fas fa-mosque',\n                    'fas fa-motorcycle',\n                    'fas fa-mouse-pointer',\n                    'fas fa-music',\n                    'fab fa-napster',\n                    'fab fa-neos',\n                    'fas fa-neuter',\n                    'fas fa-newspaper',\n                    'far fa-newspaper',\n                    'fab fa-nimblr',\n                    'fab fa-nintendo-switch',\n                    'fab fa-node',\n                    'fab fa-node-js',\n                    'fas fa-not-equal',\n                    'fas fa-notes-medical',\n                    'fab fa-npm',\n                    'fab fa-ns8',\n                    'fab fa-nutritionix',\n                    'fas fa-object-group',\n                    'far fa-object-group',\n                    'fas fa-object-ungroup',\n                    'far fa-object-ungroup',\n                    'fab fa-odnoklassniki',\n                    'fab fa-odnoklassniki-square',\n                    'fas fa-oil-can',\n                    'fab fa-old-republic',\n                    'fas fa-om',\n                    'fab fa-opencart',\n                    'fab fa-openid',\n                    'fab fa-opera',\n                    'fab fa-optin-monster',\n                    'fab fa-osi',\n                    'fas fa-outdent',\n                    'fab fa-page4',\n                    'fab fa-pagelines',\n                    'fas fa-paint-brush',\n                    'fas fa-paint-roller',\n                    'fas fa-palette',\n                    'fab fa-palfed',\n                    'fas fa-pallet',\n                    'fas fa-paper-plane',\n                    'far fa-paper-plane',\n                    'fas fa-paperclip',\n                    'fas fa-parachute-box',\n                    'fas fa-paragraph',\n                    'fas fa-parking',\n                    'fas fa-passport',\n                    'fas fa-pastafarianism',\n                    'fas fa-paste',\n                    'fab fa-patreon',\n                    'fas fa-pause',\n                    'fas fa-pause-circle',\n                    'far fa-pause-circle',\n                    'fas fa-paw',\n                    'fab fa-paypal',\n                    'fas fa-peace',\n                    'fas fa-pen',\n                    'fas fa-pen-alt',\n                    'fas fa-pen-fancy',\n                    'fas fa-pen-nib',\n                    'fas fa-pen-square',\n                    'fas fa-pencil-alt',\n                    'fas fa-pencil-ruler',\n                    'fas fa-people-carry',\n                    'fas fa-percent',\n                    'fas fa-percentage',\n                    'fab fa-periscope',\n                    'fab fa-phabricator',\n                    'fab fa-phoenix-framework',\n                    'fab fa-phoenix-squadron',\n                    'fas fa-phone',\n                    'fas fa-phone-slash',\n                    'fas fa-phone-square',\n                    'fas fa-phone-volume',\n                    'fab fa-php',\n                    'fab fa-pied-piper',\n                    'fab fa-pied-piper-alt',\n                    'fab fa-pied-piper-hat',\n                    'fab fa-pied-piper-pp',\n                    'fas fa-piggy-bank',\n                    'fas fa-pills',\n                    'fab fa-pinterest',\n                    'fab fa-pinterest-p',\n                    'fab fa-pinterest-square',\n                    'fas fa-place-of-worship',\n                    'fas fa-plane',\n                    'fas fa-plane-arrival',\n                    'fas fa-plane-departure',\n                    'fas fa-play',\n                    'fas fa-play-circle',\n                    'far fa-play-circle',\n                    'fab fa-playstation',\n                    'fas fa-plug',\n                    'fas fa-plus',\n                    'fas fa-plus-circle',\n                    'fas fa-plus-square',\n                    'far fa-plus-square',\n                    'fas fa-podcast',\n                    'fas fa-poll',\n                    'fas fa-poll-h',\n                    'fas fa-poo',\n                    'fas fa-poop',\n                    'fas fa-portrait',\n                    'fas fa-pound-sign',\n                    'fas fa-power-off',\n                    'fas fa-pray',\n                    'fas fa-praying-hands',\n                    'fas fa-prescription',\n                    'fas fa-prescription-bottle',\n                    'fas fa-prescription-bottle-alt',\n                    'fas fa-print',\n                    'fas fa-procedures',\n                    'fab fa-product-hunt',\n                    'fas fa-project-diagram',\n                    'fab fa-pushed',\n                    'fas fa-puzzle-piece',\n                    'fab fa-python',\n                    'fab fa-qq',\n                    'fas fa-qrcode',\n                    'fas fa-question',\n                    'fas fa-question-circle',\n                    'far fa-question-circle',\n                    'fas fa-quidditch',\n                    'fab fa-quinscape',\n                    'fab fa-quora',\n                    'fas fa-quote-left',\n                    'fas fa-quote-right',\n                    'fas fa-quran',\n                    'fab fa-r-project',\n                    'fas fa-random',\n                    'fab fa-ravelry',\n                    'fab fa-react',\n                    'fab fa-readme',\n                    'fab fa-rebel',\n                    'fas fa-receipt',\n                    'fas fa-recycle',\n                    'fab fa-red-river',\n                    'fab fa-reddit',\n                    'fab fa-reddit-alien',\n                    'fab fa-reddit-square',\n                    'fas fa-redo',\n                    'fas fa-redo-alt',\n                    'fas fa-registered',\n                    'far fa-registered',\n                    'fab fa-rendact',\n                    'fab fa-renren',\n                    'fas fa-reply',\n                    'fas fa-reply-all',\n                    'fab fa-replyd',\n                    'fab fa-researchgate',\n                    'fab fa-resolving',\n                    'fas fa-retweet',\n                    'fab fa-rev',\n                    'fas fa-ribbon',\n                    'fas fa-road',\n                    'fas fa-robot',\n                    'fas fa-rocket',\n                    'fab fa-rocketchat',\n                    'fab fa-rockrms',\n                    'fas fa-route',\n                    'fas fa-rss',\n                    'fas fa-rss-square',\n                    'fas fa-ruble-sign',\n                    'fas fa-ruler',\n                    'fas fa-ruler-combined',\n                    'fas fa-ruler-horizontal',\n                    'fas fa-ruler-vertical',\n                    'fas fa-rupee-sign',\n                    'fas fa-sad-cry',\n                    'far fa-sad-cry',\n                    'fas fa-sad-tear',\n                    'far fa-sad-tear',\n                    'fab fa-safari',\n                    'fab fa-sass',\n                    'fas fa-save',\n                    'far fa-save',\n                    'fab fa-schlix',\n                    'fas fa-school',\n                    'fas fa-screwdriver',\n                    'fab fa-scribd',\n                    'fas fa-search',\n                    'fas fa-search-dollar',\n                    'fas fa-search-location',\n                    'fas fa-search-minus',\n                    'fas fa-search-plus',\n                    'fab fa-searchengin',\n                    'fas fa-seedling',\n                    'fab fa-sellcast',\n                    'fab fa-sellsy',\n                    'fas fa-server',\n                    'fab fa-servicestack',\n                    'fas fa-shapes',\n                    'fas fa-share',\n                    'fas fa-share-alt',\n                    'fas fa-share-alt-square',\n                    'fas fa-share-square',\n                    'far fa-share-square',\n                    'fas fa-shekel-sign',\n                    'fas fa-shield-alt',\n                    'fas fa-ship',\n                    'fas fa-shipping-fast',\n                    'fab fa-shirtsinbulk',\n                    'fas fa-shoe-prints',\n                    'fas fa-shopping-bag',\n                    'fas fa-shopping-basket',\n                    'fas fa-shopping-cart',\n                    'fab fa-shopware',\n                    'fas fa-shower',\n                    'fas fa-shuttle-van',\n                    'fas fa-sign',\n                    'fas fa-sign-in-alt',\n                    'fas fa-sign-language',\n                    'fas fa-sign-out-alt',\n                    'fas fa-signal',\n                    'fas fa-signature',\n                    'fab fa-simplybuilt',\n                    'fab fa-sistrix',\n                    'fas fa-sitemap',\n                    'fab fa-sith',\n                    'fas fa-skull',\n                    'fab fa-skyatlas',\n                    'fab fa-skype',\n                    'fab fa-slack',\n                    'fab fa-slack-hash',\n                    'fas fa-sliders-h',\n                    'fab fa-slideshare',\n                    'fas fa-smile',\n                    'far fa-smile',\n                    'fas fa-smile-beam',\n                    'far fa-smile-beam',\n                    'fas fa-smile-wink',\n                    'far fa-smile-wink',\n                    'fas fa-smoking',\n                    'fas fa-smoking-ban',\n                    'fab fa-snapchat',\n                    'fab fa-snapchat-ghost',\n                    'fab fa-snapchat-square',\n                    'fas fa-snowflake',\n                    'far fa-snowflake',\n                    'fas fa-socks',\n                    'fas fa-solar-panel',\n                    'fas fa-sort',\n                    'fas fa-sort-alpha-down',\n                    'fas fa-sort-alpha-up',\n                    'fas fa-sort-amount-down',\n                    'fas fa-sort-amount-up',\n                    'fas fa-sort-down',\n                    'fas fa-sort-numeric-down',\n                    'fas fa-sort-numeric-up',\n                    'fas fa-sort-up',\n                    'fab fa-soundcloud',\n                    'fas fa-spa',\n                    'fas fa-space-shuttle',\n                    'fab fa-speakap',\n                    'fas fa-spinner',\n                    'fas fa-splotch',\n                    'fab fa-spotify',\n                    'fas fa-spray-can',\n                    'fas fa-square',\n                    'far fa-square',\n                    'fas fa-square-full',\n                    'fas fa-square-root-alt',\n                    'fab fa-squarespace',\n                    'fab fa-stack-exchange',\n                    'fab fa-stack-overflow',\n                    'fas fa-stamp',\n                    'fas fa-star',\n                    'far fa-star',\n                    'fas fa-star-and-crescent',\n                    'fas fa-star-half',\n                    'far fa-star-half',\n                    'fas fa-star-half-alt',\n                    'fas fa-star-of-david',\n                    'fas fa-star-of-life',\n                    'fab fa-staylinked',\n                    'fab fa-steam',\n                    'fab fa-steam-square',\n                    'fab fa-steam-symbol',\n                    'fas fa-step-backward',\n                    'fas fa-step-forward',\n                    'fas fa-stethoscope',\n                    'fab fa-sticker-mule',\n                    'fas fa-sticky-note',\n                    'far fa-sticky-note',\n                    'fas fa-stop',\n                    'fas fa-stop-circle',\n                    'far fa-stop-circle',\n                    'fas fa-stopwatch',\n                    'fas fa-store',\n                    'fas fa-store-alt',\n                    'fab fa-strava',\n                    'fas fa-stream',\n                    'fas fa-street-view',\n                    'fas fa-strikethrough',\n                    'fab fa-stripe',\n                    'fab fa-stripe-s',\n                    'fas fa-stroopwafel',\n                    'fab fa-studiovinari',\n                    'fab fa-stumbleupon',\n                    'fab fa-stumbleupon-circle',\n                    'fas fa-subscript',\n                    'fas fa-subway',\n                    'fas fa-suitcase',\n                    'fas fa-suitcase-rolling',\n                    'fas fa-sun',\n                    'far fa-sun',\n                    'fab fa-superpowers',\n                    'fas fa-superscript',\n                    'fab fa-supple',\n                    'fas fa-surprise',\n                    'far fa-surprise',\n                    'fas fa-swatchbook',\n                    'fas fa-swimmer',\n                    'fas fa-swimming-pool',\n                    'fas fa-synagogue',\n                    'fas fa-sync',\n                    'fas fa-sync-alt',\n                    'fas fa-syringe',\n                    'fas fa-table',\n                    'fas fa-table-tennis',\n                    'fas fa-tablet',\n                    'fas fa-tablet-alt',\n                    'fas fa-tablets',\n                    'fas fa-tachometer-alt',\n                    'fas fa-tag',\n                    'fas fa-tags',\n                    'fas fa-tape',\n                    'fas fa-tasks',\n                    'fas fa-taxi',\n                    'fab fa-teamspeak',\n                    'fas fa-teeth',\n                    'fas fa-teeth-open',\n                    'fab fa-telegram',\n                    'fab fa-telegram-plane',\n                    'fab fa-tencent-weibo',\n                    'fas fa-terminal',\n                    'fas fa-text-height',\n                    'fas fa-text-width',\n                    'fas fa-th',\n                    'fas fa-th-large',\n                    'fas fa-th-list',\n                    'fab fa-the-red-yeti',\n                    'fas fa-theater-masks',\n                    'fab fa-themeco',\n                    'fab fa-themeisle',\n                    'fas fa-thermometer',\n                    'fas fa-thermometer-empty',\n                    'fas fa-thermometer-full',\n                    'fas fa-thermometer-half',\n                    'fas fa-thermometer-quarter',\n                    'fas fa-thermometer-three-quarters',\n                    'fas fa-thumbs-down',\n                    'far fa-thumbs-down',\n                    'fas fa-thumbs-up',\n                    'far fa-thumbs-up',\n                    'fas fa-thumbtack',\n                    'fas fa-ticket-alt',\n                    'fas fa-times',\n                    'fas fa-times-circle',\n                    'far fa-times-circle',\n                    'fas fa-tint',\n                    'fas fa-tint-slash',\n                    'fas fa-tired',\n                    'far fa-tired',\n                    'fas fa-toggle-off',\n                    'fas fa-toggle-on',\n                    'fas fa-toolbox',\n                    'fas fa-tooth',\n                    'fas fa-torah',\n                    'fas fa-torii-gate',\n                    'fab fa-trade-federation',\n                    'fas fa-trademark',\n                    'fas fa-traffic-light',\n                    'fas fa-train',\n                    'fas fa-transgender',\n                    'fas fa-transgender-alt',\n                    'fas fa-trash',\n                    'fas fa-trash-alt',\n                    'far fa-trash-alt',\n                    'fas fa-tree',\n                    'fab fa-trello',\n                    'fab fa-tripadvisor',\n                    'fas fa-trophy',\n                    'fas fa-truck',\n                    'fas fa-truck-loading',\n                    'fas fa-truck-monster',\n                    'fas fa-truck-moving',\n                    'fas fa-truck-pickup',\n                    'fas fa-tshirt',\n                    'fas fa-tty',\n                    'fab fa-tumblr',\n                    'fab fa-tumblr-square',\n                    'fas fa-tv',\n                    'fab fa-twitch',\n                    'fab fa-twitter',\n                    'fab fa-twitter-square',\n                    'fab fa-typo3',\n                    'fab fa-uber',\n                    'fab fa-uikit',\n                    'fas fa-umbrella',\n                    'fas fa-umbrella-beach',\n                    'fas fa-underline',\n                    'fas fa-undo',\n                    'fas fa-undo-alt',\n                    'fab fa-uniregistry',\n                    'fas fa-universal-access',\n                    'fas fa-university',\n                    'fas fa-unlink',\n                    'fas fa-unlock',\n                    'fas fa-unlock-alt',\n                    'fab fa-untappd',\n                    'fas fa-upload',\n                    'fab fa-usb',\n                    'fas fa-user',\n                    'far fa-user',\n                    'fas fa-user-alt',\n                    'fas fa-user-alt-slash',\n                    'fas fa-user-astronaut',\n                    'fas fa-user-check',\n                    'fas fa-user-circle',\n                    'far fa-user-circle',\n                    'fas fa-user-clock',\n                    'fas fa-user-cog',\n                    'fas fa-user-edit',\n                    'fas fa-user-friends',\n                    'fas fa-user-graduate',\n                    'fas fa-user-lock',\n                    'fas fa-user-md',\n                    'fas fa-user-minus',\n                    'fas fa-user-ninja',\n                    'fas fa-user-plus',\n                    'fas fa-user-secret',\n                    'fas fa-user-shield',\n                    'fas fa-user-slash',\n                    'fas fa-user-tag',\n                    'fas fa-user-tie',\n                    'fas fa-user-times',\n                    'fas fa-users',\n                    'fas fa-users-cog',\n                    'fab fa-ussunnah',\n                    'fas fa-utensil-spoon',\n                    'fas fa-utensils',\n                    'fab fa-vaadin',\n                    'fas fa-vector-square',\n                    'fas fa-venus',\n                    'fas fa-venus-double',\n                    'fas fa-venus-mars',\n                    'fab fa-viacoin',\n                    'fab fa-viadeo',\n                    'fab fa-viadeo-square',\n                    'fas fa-vial',\n                    'fas fa-vials',\n                    'fab fa-viber',\n                    'fas fa-video',\n                    'fas fa-video-slash',\n                    'fas fa-vihara',\n                    'fab fa-vimeo',\n                    'fab fa-vimeo-square',\n                    'fab fa-vimeo-v',\n                    'fab fa-vine',\n                    'fab fa-vk',\n                    'fab fa-vnv',\n                    'fas fa-volleyball-ball',\n                    'fas fa-volume-down',\n                    'fas fa-volume-off',\n                    'fas fa-volume-up',\n                    'fab fa-vuejs',\n                    'fas fa-walking',\n                    'fas fa-wallet',\n                    'fas fa-warehouse',\n                    'fab fa-weebly',\n                    'fab fa-weibo',\n                    'fas fa-weight',\n                    'fas fa-weight-hanging',\n                    'fab fa-weixin',\n                    'fab fa-whatsapp',\n                    'fab fa-whatsapp-square',\n                    'fas fa-wheelchair',\n                    'fab fa-whmcs',\n                    'fas fa-wifi',\n                    'fab fa-wikipedia-w',\n                    'fas fa-window-close',\n                    'far fa-window-close',\n                    'fas fa-window-maximize',\n                    'far fa-window-maximize',\n                    'fas fa-window-minimize',\n                    'far fa-window-minimize',\n                    'fas fa-window-restore',\n                    'far fa-window-restore',\n                    'fab fa-windows',\n                    'fas fa-wine-glass',\n                    'fas fa-wine-glass-alt',\n                    'fab fa-wix',\n                    'fab fa-wolf-pack-battalion',\n                    'fas fa-won-sign',\n                    'fab fa-wordpress',\n                    'fab fa-wordpress-simple',\n                    'fab fa-wpbeginner',\n                    'fab fa-wpexplorer',\n                    'fab fa-wpforms',\n                    'fas fa-wrench',\n                    'fas fa-x-ray',\n                    'fab fa-xbox',\n                    'fab fa-xing',\n                    'fab fa-xing-square',\n                    'fab fa-y-combinator',\n                    'fab fa-yahoo',\n                    'fab fa-yandex',\n                    'fab fa-yandex-international',\n                    'fab fa-yelp',\n                    'fas fa-yen-sign',\n                    'fas fa-yin-yang',\n                    'fab fa-yoast',\n                    'fab fa-youtube',\n                    'fab fa-youtube-square',\n                    'fab fa-zhihu'\n                ]\n            },\n            {\n                version: '5.3.1_pro',\n                icons: [\n                    'empty',\n                    'fas fa-abacus',\n                    'far fa-abacus',\n                    'fal fa-abacus',\n                    'far fa-ad',\n                    'fal fa-ad',\n                    'fal fa-address-book',\n                    'fal fa-address-card',\n                    'far fa-adjust',\n                    'fal fa-adjust',\n                    'far fa-air-freshener',\n                    'fal fa-air-freshener',\n                    'fas fa-alarm-clock',\n                    'far fa-alarm-clock',\n                    'fal fa-alarm-clock',\n                    'far fa-align-center',\n                    'fal fa-align-center',\n                    'far fa-align-justify',\n                    'fal fa-align-justify',\n                    'far fa-align-left',\n                    'fal fa-align-left',\n                    'far fa-align-right',\n                    'fal fa-align-right',\n                    'far fa-allergies',\n                    'fal fa-allergies',\n                    'far fa-ambulance',\n                    'fal fa-ambulance',\n                    'far fa-american-sign-language-interpreting',\n                    'fal fa-american-sign-language-interpreting',\n                    'fas fa-analytics',\n                    'far fa-analytics',\n                    'fal fa-analytics',\n                    'far fa-anchor',\n                    'fal fa-anchor',\n                    'far fa-angle-double-down',\n                    'fal fa-angle-double-down',\n                    'far fa-angle-double-left',\n                    'fal fa-angle-double-left',\n                    'far fa-angle-double-right',\n                    'fal fa-angle-double-right',\n                    'far fa-angle-double-up',\n                    'fal fa-angle-double-up',\n                    'far fa-angle-down',\n                    'fal fa-angle-down',\n                    'far fa-angle-left',\n                    'fal fa-angle-left',\n                    'far fa-angle-right',\n                    'fal fa-angle-right',\n                    'far fa-angle-up',\n                    'fal fa-angle-up',\n                    'fal fa-angry',\n                    'far fa-ankh',\n                    'fal fa-ankh',\n                    'far fa-apple-alt',\n                    'fal fa-apple-alt',\n                    'far fa-archive',\n                    'fal fa-archive',\n                    'far fa-archway',\n                    'fal fa-archway',\n                    'fal fa-arrow-alt-circle-down',\n                    'fal fa-arrow-alt-circle-left',\n                    'fal fa-arrow-alt-circle-right',\n                    'fal fa-arrow-alt-circle-up',\n                    'fas fa-arrow-alt-down',\n                    'far fa-arrow-alt-down',\n                    'fal fa-arrow-alt-down',\n                    'fas fa-arrow-alt-from-bottom',\n                    'far fa-arrow-alt-from-bottom',\n                    'fal fa-arrow-alt-from-bottom',\n                    'fas fa-arrow-alt-from-left',\n                    'far fa-arrow-alt-from-left',\n                    'fal fa-arrow-alt-from-left',\n                    'fas fa-arrow-alt-from-right',\n                    'far fa-arrow-alt-from-right',\n                    'fal fa-arrow-alt-from-right',\n                    'fas fa-arrow-alt-from-top',\n                    'far fa-arrow-alt-from-top',\n                    'fal fa-arrow-alt-from-top',\n                    'fas fa-arrow-alt-left',\n                    'far fa-arrow-alt-left',\n                    'fal fa-arrow-alt-left',\n                    'fas fa-arrow-alt-right',\n                    'far fa-arrow-alt-right',\n                    'fal fa-arrow-alt-right',\n                    'fas fa-arrow-alt-square-down',\n                    'far fa-arrow-alt-square-down',\n                    'fal fa-arrow-alt-square-down',\n                    'fas fa-arrow-alt-square-left',\n                    'far fa-arrow-alt-square-left',\n                    'fal fa-arrow-alt-square-left',\n                    'fas fa-arrow-alt-square-right',\n                    'far fa-arrow-alt-square-right',\n                    'fal fa-arrow-alt-square-right',\n                    'fas fa-arrow-alt-square-up',\n                    'far fa-arrow-alt-square-up',\n                    'fal fa-arrow-alt-square-up',\n                    'fas fa-arrow-alt-to-bottom',\n                    'far fa-arrow-alt-to-bottom',\n                    'fal fa-arrow-alt-to-bottom',\n                    'fas fa-arrow-alt-to-left',\n                    'far fa-arrow-alt-to-left',\n                    'fal fa-arrow-alt-to-left',\n                    'fas fa-arrow-alt-to-right',\n                    'far fa-arrow-alt-to-right',\n                    'fal fa-arrow-alt-to-right',\n                    'fas fa-arrow-alt-to-top',\n                    'far fa-arrow-alt-to-top',\n                    'fal fa-arrow-alt-to-top',\n                    'fas fa-arrow-alt-up',\n                    'far fa-arrow-alt-up',\n                    'fal fa-arrow-alt-up',\n                    'far fa-arrow-circle-down',\n                    'fal fa-arrow-circle-down',\n                    'far fa-arrow-circle-left',\n                    'fal fa-arrow-circle-left',\n                    'far fa-arrow-circle-right',\n                    'fal fa-arrow-circle-right',\n                    'far fa-arrow-circle-up',\n                    'fal fa-arrow-circle-up',\n                    'far fa-arrow-down',\n                    'fal fa-arrow-down',\n                    'fas fa-arrow-from-bottom',\n                    'far fa-arrow-from-bottom',\n                    'fal fa-arrow-from-bottom',\n                    'fas fa-arrow-from-left',\n                    'far fa-arrow-from-left',\n                    'fal fa-arrow-from-left',\n                    'fas fa-arrow-from-right',\n                    'far fa-arrow-from-right',\n                    'fal fa-arrow-from-right',\n                    'fas fa-arrow-from-top',\n                    'far fa-arrow-from-top',\n                    'fal fa-arrow-from-top',\n                    'far fa-arrow-left',\n                    'fal fa-arrow-left',\n                    'far fa-arrow-right',\n                    'fal fa-arrow-right',\n                    'fas fa-arrow-square-down',\n                    'far fa-arrow-square-down',\n                    'fal fa-arrow-square-down',\n                    'fas fa-arrow-square-left',\n                    'far fa-arrow-square-left',\n                    'fal fa-arrow-square-left',\n                    'fas fa-arrow-square-right',\n                    'far fa-arrow-square-right',\n                    'fal fa-arrow-square-right',\n                    'fas fa-arrow-square-up',\n                    'far fa-arrow-square-up',\n                    'fal fa-arrow-square-up',\n                    'fas fa-arrow-to-bottom',\n                    'far fa-arrow-to-bottom',\n                    'fal fa-arrow-to-bottom',\n                    'fas fa-arrow-to-left',\n                    'far fa-arrow-to-left',\n                    'fal fa-arrow-to-left',\n                    'fas fa-arrow-to-right',\n                    'far fa-arrow-to-right',\n                    'fal fa-arrow-to-right',\n                    'fas fa-arrow-to-top',\n                    'far fa-arrow-to-top',\n                    'fal fa-arrow-to-top',\n                    'far fa-arrow-up',\n                    'fal fa-arrow-up',\n                    'fas fa-arrows',\n                    'far fa-arrows',\n                    'fal fa-arrows',\n                    'far fa-arrows-alt',\n                    'fal fa-arrows-alt',\n                    'far fa-arrows-alt-h',\n                    'fal fa-arrows-alt-h',\n                    'far fa-arrows-alt-v',\n                    'fal fa-arrows-alt-v',\n                    'fas fa-arrows-h',\n                    'far fa-arrows-h',\n                    'fal fa-arrows-h',\n                    'fas fa-arrows-v',\n                    'far fa-arrows-v',\n                    'fal fa-arrows-v',\n                    'far fa-assistive-listening-systems',\n                    'fal fa-assistive-listening-systems',\n                    'far fa-asterisk',\n                    'fal fa-asterisk',\n                    'far fa-at',\n                    'fal fa-at',\n                    'far fa-atlas',\n                    'fal fa-atlas',\n                    'far fa-atom',\n                    'fal fa-atom',\n                    'fas fa-atom-alt',\n                    'far fa-atom-alt',\n                    'fal fa-atom-alt',\n                    'far fa-audio-description',\n                    'fal fa-audio-description',\n                    'far fa-award',\n                    'fal fa-award',\n                    'fas fa-backpack',\n                    'far fa-backpack',\n                    'fal fa-backpack',\n                    'far fa-backspace',\n                    'fal fa-backspace',\n                    'far fa-backward',\n                    'fal fa-backward',\n                    'fas fa-badge',\n                    'far fa-badge',\n                    'fal fa-badge',\n                    'fas fa-badge-check',\n                    'far fa-badge-check',\n                    'fal fa-badge-check',\n                    'fas fa-badge-dollar',\n                    'far fa-badge-dollar',\n                    'fal fa-badge-dollar',\n                    'fas fa-badge-percent',\n                    'far fa-badge-percent',\n                    'fal fa-badge-percent',\n                    'far fa-balance-scale',\n                    'fal fa-balance-scale',\n                    'fas fa-balance-scale-left',\n                    'far fa-balance-scale-left',\n                    'fal fa-balance-scale-left',\n                    'fas fa-balance-scale-right',\n                    'far fa-balance-scale-right',\n                    'fal fa-balance-scale-right',\n                    'far fa-ban',\n                    'fal fa-ban',\n                    'far fa-band-aid',\n                    'fal fa-band-aid',\n                    'far fa-barcode',\n                    'fal fa-barcode',\n                    'fas fa-barcode-alt',\n                    'far fa-barcode-alt',\n                    'fal fa-barcode-alt',\n                    'fas fa-barcode-read',\n                    'far fa-barcode-read',\n                    'fal fa-barcode-read',\n                    'fas fa-barcode-scan',\n                    'far fa-barcode-scan',\n                    'fal fa-barcode-scan',\n                    'far fa-bars',\n                    'fal fa-bars',\n                    'fas fa-baseball',\n                    'far fa-baseball',\n                    'fal fa-baseball',\n                    'far fa-baseball-ball',\n                    'fal fa-baseball-ball',\n                    'far fa-basketball-ball',\n                    'fal fa-basketball-ball',\n                    'fas fa-basketball-hoop',\n                    'far fa-basketball-hoop',\n                    'fal fa-basketball-hoop',\n                    'far fa-bath',\n                    'fal fa-bath',\n                    'fas fa-battery-bolt',\n                    'far fa-battery-bolt',\n                    'fal fa-battery-bolt',\n                    'far fa-battery-empty',\n                    'fal fa-battery-empty',\n                    'far fa-battery-full',\n                    'fal fa-battery-full',\n                    'far fa-battery-half',\n                    'fal fa-battery-half',\n                    'far fa-battery-quarter',\n                    'fal fa-battery-quarter',\n                    'fas fa-battery-slash',\n                    'far fa-battery-slash',\n                    'fal fa-battery-slash',\n                    'far fa-battery-three-quarters',\n                    'fal fa-battery-three-quarters',\n                    'far fa-bed',\n                    'fal fa-bed',\n                    'far fa-beer',\n                    'fal fa-beer',\n                    'fal fa-bell',\n                    'fas fa-bell-school',\n                    'far fa-bell-school',\n                    'fal fa-bell-school',\n                    'fas fa-bell-school-slash',\n                    'far fa-bell-school-slash',\n                    'fal fa-bell-school-slash',\n                    'fal fa-bell-slash',\n                    'far fa-bezier-curve',\n                    'fal fa-bezier-curve',\n                    'far fa-bible',\n                    'fal fa-bible',\n                    'far fa-bicycle',\n                    'fal fa-bicycle',\n                    'far fa-binoculars',\n                    'fal fa-binoculars',\n                    'far fa-birthday-cake',\n                    'fal fa-birthday-cake',\n                    'fas fa-blanket',\n                    'far fa-blanket',\n                    'fal fa-blanket',\n                    'far fa-blender',\n                    'fal fa-blender',\n                    'far fa-blind',\n                    'fal fa-blind',\n                    'far fa-bold',\n                    'fal fa-bold',\n                    'far fa-bolt',\n                    'fal fa-bolt',\n                    'far fa-bomb',\n                    'fal fa-bomb',\n                    'far fa-bone',\n                    'fal fa-bone',\n                    'fas fa-bone-break',\n                    'far fa-bone-break',\n                    'fal fa-bone-break',\n                    'far fa-bong',\n                    'fal fa-bong',\n                    'far fa-book',\n                    'fal fa-book',\n                    'fas fa-book-alt',\n                    'far fa-book-alt',\n                    'fal fa-book-alt',\n                    'fas fa-book-heart',\n                    'far fa-book-heart',\n                    'fal fa-book-heart',\n                    'far fa-book-open',\n                    'fal fa-book-open',\n                    'far fa-book-reader',\n                    'fal fa-book-reader',\n                    'fal fa-bookmark',\n                    'fas fa-books',\n                    'far fa-books',\n                    'fal fa-books',\n                    'far fa-bowling-ball',\n                    'fal fa-bowling-ball',\n                    'fas fa-bowling-pins',\n                    'far fa-bowling-pins',\n                    'fal fa-bowling-pins',\n                    'far fa-box',\n                    'fal fa-box',\n                    'fas fa-box-alt',\n                    'far fa-box-alt',\n                    'fal fa-box-alt',\n                    'fas fa-box-check',\n                    'far fa-box-check',\n                    'fal fa-box-check',\n                    'fas fa-box-fragile',\n                    'far fa-box-fragile',\n                    'fal fa-box-fragile',\n                    'fas fa-box-full',\n                    'far fa-box-full',\n                    'fal fa-box-full',\n                    'fas fa-box-heart',\n                    'far fa-box-heart',\n                    'fal fa-box-heart',\n                    'far fa-box-open',\n                    'fal fa-box-open',\n                    'fas fa-box-up',\n                    'far fa-box-up',\n                    'fal fa-box-up',\n                    'fas fa-box-usd',\n                    'far fa-box-usd',\n                    'fal fa-box-usd',\n                    'far fa-boxes',\n                    'fal fa-boxes',\n                    'fas fa-boxes-alt',\n                    'far fa-boxes-alt',\n                    'fal fa-boxes-alt',\n                    'fas fa-boxing-glove',\n                    'far fa-boxing-glove',\n                    'fal fa-boxing-glove',\n                    'far fa-braille',\n                    'fal fa-braille',\n                    'far fa-brain',\n                    'fal fa-brain',\n                    'far fa-briefcase',\n                    'fal fa-briefcase',\n                    'far fa-briefcase-medical',\n                    'fal fa-briefcase-medical',\n                    'far fa-broadcast-tower',\n                    'fal fa-broadcast-tower',\n                    'far fa-broom',\n                    'fal fa-broom',\n                    'fas fa-browser',\n                    'far fa-browser',\n                    'fal fa-browser',\n                    'far fa-brush',\n                    'fal fa-brush',\n                    'far fa-bug',\n                    'fal fa-bug',\n                    'fal fa-building',\n                    'far fa-bullhorn',\n                    'fal fa-bullhorn',\n                    'far fa-bullseye',\n                    'fal fa-bullseye',\n                    'fas fa-bullseye-arrow',\n                    'far fa-bullseye-arrow',\n                    'fal fa-bullseye-arrow',\n                    'fas fa-bullseye-pointer',\n                    'far fa-bullseye-pointer',\n                    'fal fa-bullseye-pointer',\n                    'far fa-burn',\n                    'fal fa-burn',\n                    'far fa-bus',\n                    'fal fa-bus',\n                    'far fa-bus-alt',\n                    'fal fa-bus-alt',\n                    'fas fa-bus-school',\n                    'far fa-bus-school',\n                    'fal fa-bus-school',\n                    'far fa-business-time',\n                    'fal fa-business-time',\n                    'fas fa-cabinet-filing',\n                    'far fa-cabinet-filing',\n                    'fal fa-cabinet-filing',\n                    'far fa-calculator',\n                    'fal fa-calculator',\n                    'fas fa-calculator-alt',\n                    'far fa-calculator-alt',\n                    'fal fa-calculator-alt',\n                    'fal fa-calendar',\n                    'fal fa-calendar-alt',\n                    'fal fa-calendar-check',\n                    'fas fa-calendar-edit',\n                    'far fa-calendar-edit',\n                    'fal fa-calendar-edit',\n                    'fas fa-calendar-exclamation',\n                    'far fa-calendar-exclamation',\n                    'fal fa-calendar-exclamation',\n                    'fal fa-calendar-minus',\n                    'fal fa-calendar-plus',\n                    'fal fa-calendar-times',\n                    'far fa-camera',\n                    'fal fa-camera',\n                    'fas fa-camera-alt',\n                    'far fa-camera-alt',\n                    'fal fa-camera-alt',\n                    'far fa-camera-retro',\n                    'fal fa-camera-retro',\n                    'far fa-cannabis',\n                    'fal fa-cannabis',\n                    'far fa-capsules',\n                    'fal fa-capsules',\n                    'far fa-car',\n                    'fal fa-car',\n                    'far fa-car-alt',\n                    'fal fa-car-alt',\n                    'far fa-car-battery',\n                    'fal fa-car-battery',\n                    'fas fa-car-bump',\n                    'far fa-car-bump',\n                    'fal fa-car-bump',\n                    'far fa-car-crash',\n                    'fal fa-car-crash',\n                    'fas fa-car-garage',\n                    'far fa-car-garage',\n                    'fal fa-car-garage',\n                    'fas fa-car-mechanic',\n                    'far fa-car-mechanic',\n                    'fal fa-car-mechanic',\n                    'far fa-car-side',\n                    'fal fa-car-side',\n                    'fas fa-car-tilt',\n                    'far fa-car-tilt',\n                    'fal fa-car-tilt',\n                    'fas fa-car-wash',\n                    'far fa-car-wash',\n                    'fal fa-car-wash',\n                    'fas fa-caret-circle-down',\n                    'far fa-caret-circle-down',\n                    'fal fa-caret-circle-down',\n                    'fas fa-caret-circle-left',\n                    'far fa-caret-circle-left',\n                    'fal fa-caret-circle-left',\n                    'fas fa-caret-circle-right',\n                    'far fa-caret-circle-right',\n                    'fal fa-caret-circle-right',\n                    'fas fa-caret-circle-up',\n                    'far fa-caret-circle-up',\n                    'fal fa-caret-circle-up',\n                    'far fa-caret-down',\n                    'fal fa-caret-down',\n                    'far fa-caret-left',\n                    'fal fa-caret-left',\n                    'far fa-caret-right',\n                    'fal fa-caret-right',\n                    'fal fa-caret-square-down',\n                    'fal fa-caret-square-left',\n                    'fal fa-caret-square-right',\n                    'fal fa-caret-square-up',\n                    'far fa-caret-up',\n                    'fal fa-caret-up',\n                    'far fa-cart-arrow-down',\n                    'fal fa-cart-arrow-down',\n                    'far fa-cart-plus',\n                    'fal fa-cart-plus',\n                    'far fa-certificate',\n                    'fal fa-certificate',\n                    'far fa-chalkboard',\n                    'fal fa-chalkboard',\n                    'far fa-chalkboard-teacher',\n                    'fal fa-chalkboard-teacher',\n                    'far fa-charging-station',\n                    'fal fa-charging-station',\n                    'far fa-chart-area',\n                    'fal fa-chart-area',\n                    'fal fa-chart-bar',\n                    'far fa-chart-line',\n                    'fal fa-chart-line',\n                    'fas fa-chart-line-down',\n                    'far fa-chart-line-down',\n                    'fal fa-chart-line-down',\n                    'far fa-chart-pie',\n                    'fal fa-chart-pie',\n                    'fas fa-chart-pie-alt',\n                    'far fa-chart-pie-alt',\n                    'fal fa-chart-pie-alt',\n                    'far fa-check',\n                    'fal fa-check',\n                    'fal fa-check-circle',\n                    'far fa-check-double',\n                    'fal fa-check-double',\n                    'fal fa-check-square',\n                    'far fa-chess',\n                    'fal fa-chess',\n                    'far fa-chess-bishop',\n                    'fal fa-chess-bishop',\n                    'fas fa-chess-bishop-alt',\n                    'far fa-chess-bishop-alt',\n                    'fal fa-chess-bishop-alt',\n                    'far fa-chess-board',\n                    'fal fa-chess-board',\n                    'fas fa-chess-clock',\n                    'far fa-chess-clock',\n                    'fal fa-chess-clock',\n                    'fas fa-chess-clock-alt',\n                    'far fa-chess-clock-alt',\n                    'fal fa-chess-clock-alt',\n                    'far fa-chess-king',\n                    'fal fa-chess-king',\n                    'fas fa-chess-king-alt',\n                    'far fa-chess-king-alt',\n                    'fal fa-chess-king-alt',\n                    'far fa-chess-knight',\n                    'fal fa-chess-knight',\n                    'fas fa-chess-knight-alt',\n                    'far fa-chess-knight-alt',\n                    'fal fa-chess-knight-alt',\n                    'far fa-chess-pawn',\n                    'fal fa-chess-pawn',\n                    'fas fa-chess-pawn-alt',\n                    'far fa-chess-pawn-alt',\n                    'fal fa-chess-pawn-alt',\n                    'far fa-chess-queen',\n                    'fal fa-chess-queen',\n                    'fas fa-chess-queen-alt',\n                    'far fa-chess-queen-alt',\n                    'fal fa-chess-queen-alt',\n                    'far fa-chess-rook',\n                    'fal fa-chess-rook',\n                    'fas fa-chess-rook-alt',\n                    'far fa-chess-rook-alt',\n                    'fal fa-chess-rook-alt',\n                    'far fa-chevron-circle-down',\n                    'fal fa-chevron-circle-down',\n                    'far fa-chevron-circle-left',\n                    'fal fa-chevron-circle-left',\n                    'far fa-chevron-circle-right',\n                    'fal fa-chevron-circle-right',\n                    'far fa-chevron-circle-up',\n                    'fal fa-chevron-circle-up',\n                    'fas fa-chevron-double-down',\n                    'far fa-chevron-double-down',\n                    'fal fa-chevron-double-down',\n                    'fas fa-chevron-double-left',\n                    'far fa-chevron-double-left',\n                    'fal fa-chevron-double-left',\n                    'fas fa-chevron-double-right',\n                    'far fa-chevron-double-right',\n                    'fal fa-chevron-double-right',\n                    'fas fa-chevron-double-up',\n                    'far fa-chevron-double-up',\n                    'fal fa-chevron-double-up',\n                    'far fa-chevron-down',\n                    'fal fa-chevron-down',\n                    'far fa-chevron-left',\n                    'fal fa-chevron-left',\n                    'far fa-chevron-right',\n                    'fal fa-chevron-right',\n                    'fas fa-chevron-square-down',\n                    'far fa-chevron-square-down',\n                    'fal fa-chevron-square-down',\n                    'fas fa-chevron-square-left',\n                    'far fa-chevron-square-left',\n                    'fal fa-chevron-square-left',\n                    'fas fa-chevron-square-right',\n                    'far fa-chevron-square-right',\n                    'fal fa-chevron-square-right',\n                    'fas fa-chevron-square-up',\n                    'far fa-chevron-square-up',\n                    'fal fa-chevron-square-up',\n                    'far fa-chevron-up',\n                    'fal fa-chevron-up',\n                    'far fa-child',\n                    'fal fa-child',\n                    'far fa-church',\n                    'fal fa-church',\n                    'fal fa-circle',\n                    'far fa-circle-notch',\n                    'fal fa-circle-notch',\n                    'far fa-city',\n                    'fal fa-city',\n                    'fal fa-clipboard',\n                    'far fa-clipboard-check',\n                    'fal fa-clipboard-check',\n                    'far fa-clipboard-list',\n                    'fal fa-clipboard-list',\n                    'fas fa-clipboard-prescription',\n                    'far fa-clipboard-prescription',\n                    'fal fa-clipboard-prescription',\n                    'fal fa-clock',\n                    'fal fa-clone',\n                    'fal fa-closed-captioning',\n                    'far fa-cloud',\n                    'fal fa-cloud',\n                    'fas fa-cloud-download',\n                    'far fa-cloud-download',\n                    'fal fa-cloud-download',\n                    'far fa-cloud-download-alt',\n                    'fal fa-cloud-download-alt',\n                    'fas fa-cloud-upload',\n                    'far fa-cloud-upload',\n                    'fal fa-cloud-upload',\n                    'far fa-cloud-upload-alt',\n                    'fal fa-cloud-upload-alt',\n                    'fas fa-club',\n                    'far fa-club',\n                    'fal fa-club',\n                    'far fa-cocktail',\n                    'fal fa-cocktail',\n                    'far fa-code',\n                    'fal fa-code',\n                    'far fa-code-branch',\n                    'fal fa-code-branch',\n                    'fas fa-code-commit',\n                    'far fa-code-commit',\n                    'fal fa-code-commit',\n                    'fas fa-code-merge',\n                    'far fa-code-merge',\n                    'fal fa-code-merge',\n                    'far fa-coffee',\n                    'fal fa-coffee',\n                    'far fa-cog',\n                    'fal fa-cog',\n                    'far fa-cogs',\n                    'fal fa-cogs',\n                    'far fa-coins',\n                    'fal fa-coins',\n                    'far fa-columns',\n                    'fal fa-columns',\n                    'fal fa-comment',\n                    'fal fa-comment-alt',\n                    'fas fa-comment-alt-check',\n                    'far fa-comment-alt-check',\n                    'fal fa-comment-alt-check',\n                    'fas fa-comment-alt-dollar',\n                    'far fa-comment-alt-dollar',\n                    'fal fa-comment-alt-dollar',\n                    'fas fa-comment-alt-dots',\n                    'far fa-comment-alt-dots',\n                    'fal fa-comment-alt-dots',\n                    'fas fa-comment-alt-edit',\n                    'far fa-comment-alt-edit',\n                    'fal fa-comment-alt-edit',\n                    'fas fa-comment-alt-exclamation',\n                    'far fa-comment-alt-exclamation',\n                    'fal fa-comment-alt-exclamation',\n                    'fas fa-comment-alt-lines',\n                    'far fa-comment-alt-lines',\n                    'fal fa-comment-alt-lines',\n                    'fas fa-comment-alt-minus',\n                    'far fa-comment-alt-minus',\n                    'fal fa-comment-alt-minus',\n                    'fas fa-comment-alt-plus',\n                    'far fa-comment-alt-plus',\n                    'fal fa-comment-alt-plus',\n                    'fas fa-comment-alt-slash',\n                    'far fa-comment-alt-slash',\n                    'fal fa-comment-alt-slash',\n                    'fas fa-comment-alt-smile',\n                    'far fa-comment-alt-smile',\n                    'fal fa-comment-alt-smile',\n                    'fas fa-comment-alt-times',\n                    'far fa-comment-alt-times',\n                    'fal fa-comment-alt-times',\n                    'fas fa-comment-check',\n                    'far fa-comment-check',\n                    'fal fa-comment-check',\n                    'far fa-comment-dollar',\n                    'fal fa-comment-dollar',\n                    'fal fa-comment-dots',\n                    'fas fa-comment-edit',\n                    'far fa-comment-edit',\n                    'fal fa-comment-edit',\n                    'fas fa-comment-exclamation',\n                    'far fa-comment-exclamation',\n                    'fal fa-comment-exclamation',\n                    'fas fa-comment-lines',\n                    'far fa-comment-lines',\n                    'fal fa-comment-lines',\n                    'fas fa-comment-minus',\n                    'far fa-comment-minus',\n                    'fal fa-comment-minus',\n                    'fas fa-comment-plus',\n                    'far fa-comment-plus',\n                    'fal fa-comment-plus',\n                    'far fa-comment-slash',\n                    'fal fa-comment-slash',\n                    'fas fa-comment-smile',\n                    'far fa-comment-smile',\n                    'fal fa-comment-smile',\n                    'fas fa-comment-times',\n                    'far fa-comment-times',\n                    'fal fa-comment-times',\n                    'fal fa-comments',\n                    'fas fa-comments-alt',\n                    'far fa-comments-alt',\n                    'fal fa-comments-alt',\n                    'fas fa-comments-alt-dollar',\n                    'far fa-comments-alt-dollar',\n                    'fal fa-comments-alt-dollar',\n                    'far fa-comments-dollar',\n                    'fal fa-comments-dollar',\n                    'far fa-compact-disc',\n                    'fal fa-compact-disc',\n                    'fal fa-compass',\n                    'fas fa-compass-slash',\n                    'far fa-compass-slash',\n                    'fal fa-compass-slash',\n                    'far fa-compress',\n                    'fal fa-compress',\n                    'fas fa-compress-alt',\n                    'far fa-compress-alt',\n                    'fal fa-compress-alt',\n                    'fas fa-compress-wide',\n                    'far fa-compress-wide',\n                    'fal fa-compress-wide',\n                    'far fa-concierge-bell',\n                    'fal fa-concierge-bell',\n                    'fas fa-container-storage',\n                    'far fa-container-storage',\n                    'fal fa-container-storage',\n                    'fas fa-conveyor-belt',\n                    'far fa-conveyor-belt',\n                    'fal fa-conveyor-belt',\n                    'fas fa-conveyor-belt-alt',\n                    'far fa-conveyor-belt-alt',\n                    'fal fa-conveyor-belt-alt',\n                    'far fa-cookie',\n                    'fal fa-cookie',\n                    'far fa-cookie-bite',\n                    'fal fa-cookie-bite',\n                    'fal fa-copy',\n                    'fal fa-copyright',\n                    'far fa-couch',\n                    'fal fa-couch',\n                    'fab fa-creative-commons-zero',\n                    'fal fa-credit-card',\n                    'fas fa-credit-card-blank',\n                    'far fa-credit-card-blank',\n                    'fal fa-credit-card-blank',\n                    'fas fa-credit-card-front',\n                    'far fa-credit-card-front',\n                    'fal fa-credit-card-front',\n                    'fas fa-cricket',\n                    'far fa-cricket',\n                    'fal fa-cricket',\n                    'far fa-crop',\n                    'fal fa-crop',\n                    'far fa-crop-alt',\n                    'fal fa-crop-alt',\n                    'far fa-cross',\n                    'fal fa-cross',\n                    'far fa-crosshairs',\n                    'fal fa-crosshairs',\n                    'far fa-crow',\n                    'fal fa-crow',\n                    'far fa-crown',\n                    'fal fa-crown',\n                    'far fa-cube',\n                    'fal fa-cube',\n                    'far fa-cubes',\n                    'fal fa-cubes',\n                    'fas fa-curling',\n                    'far fa-curling',\n                    'fal fa-curling',\n                    'far fa-cut',\n                    'fal fa-cut',\n                    'far fa-database',\n                    'fal fa-database',\n                    'far fa-deaf',\n                    'fal fa-deaf',\n                    'far fa-desktop',\n                    'fal fa-desktop',\n                    'fas fa-desktop-alt',\n                    'far fa-desktop-alt',\n                    'fal fa-desktop-alt',\n                    'far fa-dharmachakra',\n                    'fal fa-dharmachakra',\n                    'far fa-diagnoses',\n                    'fal fa-diagnoses',\n                    'fas fa-diamond',\n                    'far fa-diamond',\n                    'fal fa-diamond',\n                    'far fa-dice',\n                    'fal fa-dice',\n                    'far fa-dice-five',\n                    'fal fa-dice-five',\n                    'far fa-dice-four',\n                    'fal fa-dice-four',\n                    'far fa-dice-one',\n                    'fal fa-dice-one',\n                    'far fa-dice-six',\n                    'fal fa-dice-six',\n                    'far fa-dice-three',\n                    'fal fa-dice-three',\n                    'far fa-dice-two',\n                    'fal fa-dice-two',\n                    'far fa-digital-tachograph',\n                    'fal fa-digital-tachograph',\n                    'fas fa-diploma',\n                    'far fa-diploma',\n                    'fal fa-diploma',\n                    'far fa-directions',\n                    'fal fa-directions',\n                    'far fa-divide',\n                    'fal fa-divide',\n                    'fal fa-dizzy',\n                    'far fa-dna',\n                    'fal fa-dna',\n                    'fas fa-do-not-enter',\n                    'far fa-do-not-enter',\n                    'fal fa-do-not-enter',\n                    'far fa-dollar-sign',\n                    'fal fa-dollar-sign',\n                    'far fa-dolly',\n                    'fal fa-dolly',\n                    'fas fa-dolly-empty',\n                    'far fa-dolly-empty',\n                    'fal fa-dolly-empty',\n                    'far fa-dolly-flatbed',\n                    'fal fa-dolly-flatbed',\n                    'fas fa-dolly-flatbed-alt',\n                    'far fa-dolly-flatbed-alt',\n                    'fal fa-dolly-flatbed-alt',\n                    'fas fa-dolly-flatbed-empty',\n                    'far fa-dolly-flatbed-empty',\n                    'fal fa-dolly-flatbed-empty',\n                    'far fa-donate',\n                    'fal fa-donate',\n                    'far fa-door-closed',\n                    'fal fa-door-closed',\n                    'far fa-door-open',\n                    'fal fa-door-open',\n                    'fal fa-dot-circle',\n                    'far fa-dove',\n                    'fal fa-dove',\n                    'far fa-download',\n                    'fal fa-download',\n                    'far fa-drafting-compass',\n                    'fal fa-drafting-compass',\n                    'fas fa-draw-circle',\n                    'far fa-draw-circle',\n                    'fal fa-draw-circle',\n                    'far fa-draw-polygon',\n                    'fal fa-draw-polygon',\n                    'fas fa-draw-square',\n                    'far fa-draw-square',\n                    'fal fa-draw-square',\n                    'far fa-drum',\n                    'fal fa-drum',\n                    'far fa-drum-steelpan',\n                    'fal fa-drum-steelpan',\n                    'far fa-dumbbell',\n                    'fal fa-dumbbell',\n                    'fas fa-ear',\n                    'far fa-ear',\n                    'fal fa-ear',\n                    'fal fa-edit',\n                    'far fa-eject',\n                    'fal fa-eject',\n                    'far fa-ellipsis-h',\n                    'fal fa-ellipsis-h',\n                    'fas fa-ellipsis-h-alt',\n                    'far fa-ellipsis-h-alt',\n                    'fal fa-ellipsis-h-alt',\n                    'far fa-ellipsis-v',\n                    'fal fa-ellipsis-v',\n                    'fas fa-ellipsis-v-alt',\n                    'far fa-ellipsis-v-alt',\n                    'fal fa-ellipsis-v-alt',\n                    'fas fa-empty-set',\n                    'far fa-empty-set',\n                    'fal fa-empty-set',\n                    'fas fa-engine-warning',\n                    'far fa-engine-warning',\n                    'fal fa-engine-warning',\n                    'fal fa-envelope',\n                    'fal fa-envelope-open',\n                    'fas fa-envelope-open-dollar',\n                    'far fa-envelope-open-dollar',\n                    'fal fa-envelope-open-dollar',\n                    'far fa-envelope-open-text',\n                    'fal fa-envelope-open-text',\n                    'far fa-envelope-square',\n                    'fal fa-envelope-square',\n                    'far fa-equals',\n                    'fal fa-equals',\n                    'far fa-eraser',\n                    'fal fa-eraser',\n                    'far fa-euro-sign',\n                    'fal fa-euro-sign',\n                    'fas fa-exchange',\n                    'far fa-exchange',\n                    'fal fa-exchange',\n                    'far fa-exchange-alt',\n                    'fal fa-exchange-alt',\n                    'far fa-exclamation',\n                    'fal fa-exclamation',\n                    'far fa-exclamation-circle',\n                    'fal fa-exclamation-circle',\n                    'fas fa-exclamation-square',\n                    'far fa-exclamation-square',\n                    'fal fa-exclamation-square',\n                    'far fa-exclamation-triangle',\n                    'fal fa-exclamation-triangle',\n                    'far fa-expand',\n                    'fal fa-expand',\n                    'fas fa-expand-alt',\n                    'far fa-expand-alt',\n                    'fal fa-expand-alt',\n                    'fas fa-expand-arrows',\n                    'far fa-expand-arrows',\n                    'fal fa-expand-arrows',\n                    'far fa-expand-arrows-alt',\n                    'fal fa-expand-arrows-alt',\n                    'fas fa-expand-wide',\n                    'far fa-expand-wide',\n                    'fal fa-expand-wide',\n                    'fas fa-external-link',\n                    'far fa-external-link',\n                    'fal fa-external-link',\n                    'far fa-external-link-alt',\n                    'fal fa-external-link-alt',\n                    'fas fa-external-link-square',\n                    'far fa-external-link-square',\n                    'fal fa-external-link-square',\n                    'far fa-external-link-square-alt',\n                    'fal fa-external-link-square-alt',\n                    'fal fa-eye',\n                    'far fa-eye-dropper',\n                    'fal fa-eye-dropper',\n                    'fal fa-eye-slash',\n                    'far fa-fast-backward',\n                    'fal fa-fast-backward',\n                    'far fa-fast-forward',\n                    'fal fa-fast-forward',\n                    'far fa-fax',\n                    'fal fa-fax',\n                    'far fa-feather',\n                    'fal fa-feather',\n                    'far fa-feather-alt',\n                    'fal fa-feather-alt',\n                    'far fa-female',\n                    'fal fa-female',\n                    'fas fa-field-hockey',\n                    'far fa-field-hockey',\n                    'fal fa-field-hockey',\n                    'far fa-fighter-jet',\n                    'fal fa-fighter-jet',\n                    'fal fa-file',\n                    'fal fa-file-alt',\n                    'fal fa-file-archive',\n                    'fal fa-file-audio',\n                    'fas fa-file-certificate',\n                    'far fa-file-certificate',\n                    'fal fa-file-certificate',\n                    'fas fa-file-chart-line',\n                    'far fa-file-chart-line',\n                    'fal fa-file-chart-line',\n                    'fas fa-file-chart-pie',\n                    'far fa-file-chart-pie',\n                    'fal fa-file-chart-pie',\n                    'fas fa-file-check',\n                    'far fa-file-check',\n                    'fal fa-file-check',\n                    'fal fa-file-code',\n                    'far fa-file-contract',\n                    'fal fa-file-contract',\n                    'far fa-file-download',\n                    'fal fa-file-download',\n                    'fas fa-file-edit',\n                    'far fa-file-edit',\n                    'fal fa-file-edit',\n                    'fal fa-file-excel',\n                    'fas fa-file-exclamation',\n                    'far fa-file-exclamation',\n                    'fal fa-file-exclamation',\n                    'far fa-file-export',\n                    'fal fa-file-export',\n                    'fal fa-file-image',\n                    'far fa-file-import',\n                    'fal fa-file-import',\n                    'far fa-file-invoice',\n                    'fal fa-file-invoice',\n                    'far fa-file-invoice-dollar',\n                    'fal fa-file-invoice-dollar',\n                    'far fa-file-medical',\n                    'fal fa-file-medical',\n                    'far fa-file-medical-alt',\n                    'fal fa-file-medical-alt',\n                    'fas fa-file-minus',\n                    'far fa-file-minus',\n                    'fal fa-file-minus',\n                    'fal fa-file-pdf',\n                    'fas fa-file-plus',\n                    'far fa-file-plus',\n                    'fal fa-file-plus',\n                    'fal fa-file-powerpoint',\n                    'far fa-file-prescription',\n                    'fal fa-file-prescription',\n                    'far fa-file-signature',\n                    'fal fa-file-signature',\n                    'fas fa-file-spreadsheet',\n                    'far fa-file-spreadsheet',\n                    'fal fa-file-spreadsheet',\n                    'fas fa-file-times',\n                    'far fa-file-times',\n                    'fal fa-file-times',\n                    'far fa-file-upload',\n                    'fal fa-file-upload',\n                    'fas fa-file-user',\n                    'far fa-file-user',\n                    'fal fa-file-user',\n                    'fal fa-file-video',\n                    'fal fa-file-word',\n                    'far fa-fill',\n                    'fal fa-fill',\n                    'far fa-fill-drip',\n                    'fal fa-fill-drip',\n                    'far fa-film',\n                    'fal fa-film',\n                    'fas fa-film-alt',\n                    'far fa-film-alt',\n                    'fal fa-film-alt',\n                    'far fa-filter',\n                    'fal fa-filter',\n                    'far fa-fingerprint',\n                    'fal fa-fingerprint',\n                    'far fa-fire',\n                    'fal fa-fire',\n                    'far fa-fire-extinguisher',\n                    'fal fa-fire-extinguisher',\n                    'far fa-first-aid',\n                    'fal fa-first-aid',\n                    'far fa-fish',\n                    'fal fa-fish',\n                    'fal fa-flag',\n                    'far fa-flag-checkered',\n                    'fal fa-flag-checkered',\n                    'far fa-flask',\n                    'fal fa-flask',\n                    'fal fa-flushed',\n                    'fal fa-folder',\n                    'far fa-folder-minus',\n                    'fal fa-folder-minus',\n                    'fal fa-folder-open',\n                    'far fa-folder-plus',\n                    'fal fa-folder-plus',\n                    'fas fa-folder-times',\n                    'far fa-folder-times',\n                    'fal fa-folder-times',\n                    'fas fa-folders',\n                    'far fa-folders',\n                    'fal fa-folders',\n                    'far fa-font',\n                    'fal fa-font',\n                    'far fa-football-ball',\n                    'fal fa-football-ball',\n                    'fas fa-football-helmet',\n                    'far fa-football-helmet',\n                    'fal fa-football-helmet',\n                    'fas fa-forklift',\n                    'far fa-forklift',\n                    'fal fa-forklift',\n                    'far fa-forward',\n                    'fal fa-forward',\n                    'fas fa-fragile',\n                    'far fa-fragile',\n                    'fal fa-fragile',\n                    'far fa-frog',\n                    'fal fa-frog',\n                    'fal fa-frown',\n                    'fal fa-frown-open',\n                    'fas fa-function',\n                    'far fa-function',\n                    'fal fa-function',\n                    'far fa-funnel-dollar',\n                    'fal fa-funnel-dollar',\n                    'fal fa-futbol',\n                    'far fa-gamepad',\n                    'fal fa-gamepad',\n                    'far fa-gas-pump',\n                    'fal fa-gas-pump',\n                    'fas fa-gas-pump-slash',\n                    'far fa-gas-pump-slash',\n                    'fal fa-gas-pump-slash',\n                    'far fa-gavel',\n                    'fal fa-gavel',\n                    'fal fa-gem',\n                    'far fa-genderless',\n                    'fal fa-genderless',\n                    'far fa-gift',\n                    'fal fa-gift',\n                    'fas fa-gift-card',\n                    'far fa-gift-card',\n                    'fal fa-gift-card',\n                    'far fa-glass-martini',\n                    'fal fa-glass-martini',\n                    'far fa-glass-martini-alt',\n                    'fal fa-glass-martini-alt',\n                    'far fa-glasses',\n                    'fal fa-glasses',\n                    'fas fa-glasses-alt',\n                    'far fa-glasses-alt',\n                    'fal fa-glasses-alt',\n                    'far fa-globe',\n                    'fal fa-globe',\n                    'far fa-globe-africa',\n                    'fal fa-globe-africa',\n                    'far fa-globe-americas',\n                    'fal fa-globe-americas',\n                    'far fa-globe-asia',\n                    'fal fa-globe-asia',\n                    'fas fa-globe-stand',\n                    'far fa-globe-stand',\n                    'fal fa-globe-stand',\n                    'far fa-golf-ball',\n                    'fal fa-golf-ball',\n                    'fas fa-golf-club',\n                    'far fa-golf-club',\n                    'fal fa-golf-club',\n                    'far fa-gopuram',\n                    'fal fa-gopuram',\n                    'far fa-graduation-cap',\n                    'fal fa-graduation-cap',\n                    'far fa-greater-than',\n                    'fal fa-greater-than',\n                    'far fa-greater-than-equal',\n                    'fal fa-greater-than-equal',\n                    'fal fa-grimace',\n                    'fal fa-grin',\n                    'fal fa-grin-alt',\n                    'fal fa-grin-beam',\n                    'fal fa-grin-beam-sweat',\n                    'fal fa-grin-hearts',\n                    'fal fa-grin-squint',\n                    'fal fa-grin-squint-tears',\n                    'fal fa-grin-stars',\n                    'fal fa-grin-tears',\n                    'fal fa-grin-tongue',\n                    'fal fa-grin-tongue-squint',\n                    'fal fa-grin-tongue-wink',\n                    'fal fa-grin-wink',\n                    'far fa-grip-horizontal',\n                    'fal fa-grip-horizontal',\n                    'far fa-grip-vertical',\n                    'fal fa-grip-vertical',\n                    'far fa-h-square',\n                    'fal fa-h-square',\n                    'fas fa-h1',\n                    'far fa-h1',\n                    'fal fa-h1',\n                    'fas fa-h2',\n                    'far fa-h2',\n                    'fal fa-h2',\n                    'fas fa-h3',\n                    'far fa-h3',\n                    'fal fa-h3',\n                    'far fa-hamsa',\n                    'fal fa-hamsa',\n                    'fas fa-hand-heart',\n                    'far fa-hand-heart',\n                    'fal fa-hand-heart',\n                    'far fa-hand-holding',\n                    'fal fa-hand-holding',\n                    'fas fa-hand-holding-box',\n                    'far fa-hand-holding-box',\n                    'fal fa-hand-holding-box',\n                    'far fa-hand-holding-heart',\n                    'fal fa-hand-holding-heart',\n                    'fas fa-hand-holding-seedling',\n                    'far fa-hand-holding-seedling',\n                    'fal fa-hand-holding-seedling',\n                    'far fa-hand-holding-usd',\n                    'fal fa-hand-holding-usd',\n                    'fas fa-hand-holding-water',\n                    'far fa-hand-holding-water',\n                    'fal fa-hand-holding-water',\n                    'fal fa-hand-lizard',\n                    'fal fa-hand-paper',\n                    'fal fa-hand-peace',\n                    'fal fa-hand-point-down',\n                    'fal fa-hand-point-left',\n                    'fal fa-hand-point-right',\n                    'fal fa-hand-point-up',\n                    'fal fa-hand-pointer',\n                    'fas fa-hand-receiving',\n                    'far fa-hand-receiving',\n                    'fal fa-hand-receiving',\n                    'fal fa-hand-rock',\n                    'fal fa-hand-scissors',\n                    'fal fa-hand-spock',\n                    'far fa-hands',\n                    'fal fa-hands',\n                    'fas fa-hands-heart',\n                    'far fa-hands-heart',\n                    'fal fa-hands-heart',\n                    'far fa-hands-helping',\n                    'fal fa-hands-helping',\n                    'fas fa-hands-usd',\n                    'far fa-hands-usd',\n                    'fal fa-hands-usd',\n                    'fal fa-handshake',\n                    'fas fa-handshake-alt',\n                    'far fa-handshake-alt',\n                    'fal fa-handshake-alt',\n                    'far fa-hashtag',\n                    'fal fa-hashtag',\n                    'far fa-haykal',\n                    'fal fa-haykal',\n                    'fal fa-hdd',\n                    'far fa-heading',\n                    'fal fa-heading',\n                    'far fa-headphones',\n                    'fal fa-headphones',\n                    'far fa-headphones-alt',\n                    'fal fa-headphones-alt',\n                    'far fa-headset',\n                    'fal fa-headset',\n                    'fal fa-heart',\n                    'fas fa-heart-circle',\n                    'far fa-heart-circle',\n                    'fal fa-heart-circle',\n                    'fas fa-heart-rate',\n                    'far fa-heart-rate',\n                    'fal fa-heart-rate',\n                    'fas fa-heart-square',\n                    'far fa-heart-square',\n                    'fal fa-heart-square',\n                    'far fa-heartbeat',\n                    'fal fa-heartbeat',\n                    'far fa-helicopter',\n                    'fal fa-helicopter',\n                    'fas fa-hexagon',\n                    'far fa-hexagon',\n                    'fal fa-hexagon',\n                    'far fa-highlighter',\n                    'fal fa-highlighter',\n                    'far fa-history',\n                    'fal fa-history',\n                    'far fa-hockey-puck',\n                    'fal fa-hockey-puck',\n                    'fas fa-hockey-sticks',\n                    'far fa-hockey-sticks',\n                    'fal fa-hockey-sticks',\n                    'far fa-home',\n                    'fal fa-home',\n                    'fas fa-home-heart',\n                    'far fa-home-heart',\n                    'fal fa-home-heart',\n                    'fal fa-hospital',\n                    'far fa-hospital-alt',\n                    'fal fa-hospital-alt',\n                    'far fa-hospital-symbol',\n                    'fal fa-hospital-symbol',\n                    'far fa-hot-tub',\n                    'fal fa-hot-tub',\n                    'far fa-hotel',\n                    'fal fa-hotel',\n                    'fal fa-hourglass',\n                    'far fa-hourglass-end',\n                    'fal fa-hourglass-end',\n                    'far fa-hourglass-half',\n                    'fal fa-hourglass-half',\n                    'far fa-hourglass-start',\n                    'fal fa-hourglass-start',\n                    'far fa-i-cursor',\n                    'fal fa-i-cursor',\n                    'fal fa-id-badge',\n                    'fal fa-id-card',\n                    'far fa-id-card-alt',\n                    'fal fa-id-card-alt',\n                    'fal fa-image',\n                    'fal fa-images',\n                    'far fa-inbox',\n                    'fal fa-inbox',\n                    'fas fa-inbox-in',\n                    'far fa-inbox-in',\n                    'fal fa-inbox-in',\n                    'fas fa-inbox-out',\n                    'far fa-inbox-out',\n                    'fal fa-inbox-out',\n                    'far fa-indent',\n                    'fal fa-indent',\n                    'far fa-industry',\n                    'fal fa-industry',\n                    'fas fa-industry-alt',\n                    'far fa-industry-alt',\n                    'fal fa-industry-alt',\n                    'far fa-infinity',\n                    'fal fa-infinity',\n                    'far fa-info',\n                    'fal fa-info',\n                    'far fa-info-circle',\n                    'fal fa-info-circle',\n                    'fas fa-info-square',\n                    'far fa-info-square',\n                    'fal fa-info-square',\n                    'fas fa-inhaler',\n                    'far fa-inhaler',\n                    'fal fa-inhaler',\n                    'fas fa-integral',\n                    'far fa-integral',\n                    'fal fa-integral',\n                    'fas fa-intersection',\n                    'far fa-intersection',\n                    'fal fa-intersection',\n                    'fas fa-inventory',\n                    'far fa-inventory',\n                    'fal fa-inventory',\n                    'far fa-italic',\n                    'fal fa-italic',\n                    'fas fa-jack-o-lantern',\n                    'far fa-jack-o-lantern',\n                    'fal fa-jack-o-lantern',\n                    'far fa-jedi',\n                    'fal fa-jedi',\n                    'far fa-joint',\n                    'fal fa-joint',\n                    'far fa-journal-whills',\n                    'fal fa-journal-whills',\n                    'far fa-kaaba',\n                    'fal fa-kaaba',\n                    'far fa-key',\n                    'fal fa-key',\n                    'fal fa-keyboard',\n                    'fas fa-keynote',\n                    'far fa-keynote',\n                    'fal fa-keynote',\n                    'far fa-khanda',\n                    'fal fa-khanda',\n                    'fas fa-kidneys',\n                    'far fa-kidneys',\n                    'fal fa-kidneys',\n                    'fal fa-kiss',\n                    'fal fa-kiss-beam',\n                    'fal fa-kiss-wink-heart',\n                    'far fa-kiwi-bird',\n                    'fal fa-kiwi-bird',\n                    'fas fa-lambda',\n                    'far fa-lambda',\n                    'fal fa-lambda',\n                    'fas fa-lamp',\n                    'far fa-lamp',\n                    'fal fa-lamp',\n                    'far fa-landmark',\n                    'fal fa-landmark',\n                    'far fa-language',\n                    'fal fa-language',\n                    'far fa-laptop',\n                    'fal fa-laptop',\n                    'far fa-laptop-code',\n                    'fal fa-laptop-code',\n                    'fal fa-laugh',\n                    'fal fa-laugh-beam',\n                    'fal fa-laugh-squint',\n                    'fal fa-laugh-wink',\n                    'far fa-layer-group',\n                    'fal fa-layer-group',\n                    'fas fa-layer-minus',\n                    'far fa-layer-minus',\n                    'fal fa-layer-minus',\n                    'fas fa-layer-plus',\n                    'far fa-layer-plus',\n                    'fal fa-layer-plus',\n                    'far fa-leaf',\n                    'fal fa-leaf',\n                    'fas fa-leaf-heart',\n                    'far fa-leaf-heart',\n                    'fal fa-leaf-heart',\n                    'fal fa-lemon',\n                    'far fa-less-than',\n                    'fal fa-less-than',\n                    'far fa-less-than-equal',\n                    'fal fa-less-than-equal',\n                    'fas fa-level-down',\n                    'far fa-level-down',\n                    'fal fa-level-down',\n                    'far fa-level-down-alt',\n                    'fal fa-level-down-alt',\n                    'fas fa-level-up',\n                    'far fa-level-up',\n                    'fal fa-level-up',\n                    'far fa-level-up-alt',\n                    'fal fa-level-up-alt',\n                    'fal fa-life-ring',\n                    'fal fa-lightbulb',\n                    'fas fa-lightbulb-dollar',\n                    'far fa-lightbulb-dollar',\n                    'fal fa-lightbulb-dollar',\n                    'fas fa-lightbulb-exclamation',\n                    'far fa-lightbulb-exclamation',\n                    'fal fa-lightbulb-exclamation',\n                    'fas fa-lightbulb-on',\n                    'far fa-lightbulb-on',\n                    'fal fa-lightbulb-on',\n                    'fas fa-lightbulb-slash',\n                    'far fa-lightbulb-slash',\n                    'fal fa-lightbulb-slash',\n                    'far fa-link',\n                    'fal fa-link',\n                    'fas fa-lips',\n                    'far fa-lips',\n                    'fal fa-lips',\n                    'far fa-lira-sign',\n                    'fal fa-lira-sign',\n                    'far fa-list',\n                    'fal fa-list',\n                    'fal fa-list-alt',\n                    'far fa-list-ol',\n                    'fal fa-list-ol',\n                    'far fa-list-ul',\n                    'fal fa-list-ul',\n                    'fas fa-location',\n                    'far fa-location',\n                    'fal fa-location',\n                    'far fa-location-arrow',\n                    'fal fa-location-arrow',\n                    'fas fa-location-circle',\n                    'far fa-location-circle',\n                    'fal fa-location-circle',\n                    'fas fa-location-slash',\n                    'far fa-location-slash',\n                    'fal fa-location-slash',\n                    'far fa-lock',\n                    'fal fa-lock',\n                    'fas fa-lock-alt',\n                    'far fa-lock-alt',\n                    'fal fa-lock-alt',\n                    'far fa-lock-open',\n                    'fal fa-lock-open',\n                    'fas fa-lock-open-alt',\n                    'far fa-lock-open-alt',\n                    'fal fa-lock-open-alt',\n                    'far fa-long-arrow-alt-down',\n                    'fal fa-long-arrow-alt-down',\n                    'far fa-long-arrow-alt-left',\n                    'fal fa-long-arrow-alt-left',\n                    'far fa-long-arrow-alt-right',\n                    'fal fa-long-arrow-alt-right',\n                    'far fa-long-arrow-alt-up',\n                    'fal fa-long-arrow-alt-up',\n                    'fas fa-long-arrow-down',\n                    'far fa-long-arrow-down',\n                    'fal fa-long-arrow-down',\n                    'fas fa-long-arrow-left',\n                    'far fa-long-arrow-left',\n                    'fal fa-long-arrow-left',\n                    'fas fa-long-arrow-right',\n                    'far fa-long-arrow-right',\n                    'fal fa-long-arrow-right',\n                    'fas fa-long-arrow-up',\n                    'far fa-long-arrow-up',\n                    'fal fa-long-arrow-up',\n                    'fas fa-loveseat',\n                    'far fa-loveseat',\n                    'fal fa-loveseat',\n                    'far fa-low-vision',\n                    'fal fa-low-vision',\n                    'fas fa-luchador',\n                    'far fa-luchador',\n                    'fal fa-luchador',\n                    'far fa-luggage-cart',\n                    'fal fa-luggage-cart',\n                    'fas fa-lungs',\n                    'far fa-lungs',\n                    'fal fa-lungs',\n                    'far fa-magic',\n                    'fal fa-magic',\n                    'far fa-magnet',\n                    'fal fa-magnet',\n                    'far fa-mail-bulk',\n                    'fal fa-mail-bulk',\n                    'far fa-male',\n                    'fal fa-male',\n                    'fal fa-map',\n                    'far fa-map-marked',\n                    'fal fa-map-marked',\n                    'far fa-map-marked-alt',\n                    'fal fa-map-marked-alt',\n                    'far fa-map-marker',\n                    'fal fa-map-marker',\n                    'far fa-map-marker-alt',\n                    'fal fa-map-marker-alt',\n                    'fas fa-map-marker-alt-slash',\n                    'far fa-map-marker-alt-slash',\n                    'fal fa-map-marker-alt-slash',\n                    'fas fa-map-marker-check',\n                    'far fa-map-marker-check',\n                    'fal fa-map-marker-check',\n                    'fas fa-map-marker-edit',\n                    'far fa-map-marker-edit',\n                    'fal fa-map-marker-edit',\n                    'fas fa-map-marker-exclamation',\n                    'far fa-map-marker-exclamation',\n                    'fal fa-map-marker-exclamation',\n                    'fas fa-map-marker-minus',\n                    'far fa-map-marker-minus',\n                    'fal fa-map-marker-minus',\n                    'fas fa-map-marker-plus',\n                    'far fa-map-marker-plus',\n                    'fal fa-map-marker-plus',\n                    'fas fa-map-marker-question',\n                    'far fa-map-marker-question',\n                    'fal fa-map-marker-question',\n                    'fas fa-map-marker-slash',\n                    'far fa-map-marker-slash',\n                    'fal fa-map-marker-slash',\n                    'fas fa-map-marker-smile',\n                    'far fa-map-marker-smile',\n                    'fal fa-map-marker-smile',\n                    'fas fa-map-marker-times',\n                    'far fa-map-marker-times',\n                    'fal fa-map-marker-times',\n                    'far fa-map-pin',\n                    'fal fa-map-pin',\n                    'far fa-map-signs',\n                    'fal fa-map-signs',\n                    'far fa-marker',\n                    'fal fa-marker',\n                    'far fa-mars',\n                    'fal fa-mars',\n                    'far fa-mars-double',\n                    'fal fa-mars-double',\n                    'far fa-mars-stroke',\n                    'fal fa-mars-stroke',\n                    'far fa-mars-stroke-h',\n                    'fal fa-mars-stroke-h',\n                    'far fa-mars-stroke-v',\n                    'fal fa-mars-stroke-v',\n                    'far fa-medal',\n                    'fal fa-medal',\n                    'far fa-medkit',\n                    'fal fa-medkit',\n                    'fas fa-megaphone',\n                    'far fa-megaphone',\n                    'fal fa-megaphone',\n                    'fal fa-meh',\n                    'fal fa-meh-blank',\n                    'fal fa-meh-rolling-eyes',\n                    'far fa-memory',\n                    'fal fa-memory',\n                    'far fa-menorah',\n                    'fal fa-menorah',\n                    'far fa-mercury',\n                    'fal fa-mercury',\n                    'far fa-microchip',\n                    'fal fa-microchip',\n                    'far fa-microphone',\n                    'fal fa-microphone',\n                    'far fa-microphone-alt',\n                    'fal fa-microphone-alt',\n                    'far fa-microphone-alt-slash',\n                    'fal fa-microphone-alt-slash',\n                    'far fa-microphone-slash',\n                    'fal fa-microphone-slash',\n                    'far fa-microscope',\n                    'fal fa-microscope',\n                    'fas fa-mind-share',\n                    'far fa-mind-share',\n                    'fal fa-mind-share',\n                    'far fa-minus',\n                    'fal fa-minus',\n                    'far fa-minus-circle',\n                    'fal fa-minus-circle',\n                    'fas fa-minus-hexagon',\n                    'far fa-minus-hexagon',\n                    'fal fa-minus-hexagon',\n                    'fas fa-minus-octagon',\n                    'far fa-minus-octagon',\n                    'fal fa-minus-octagon',\n                    'fal fa-minus-square',\n                    'far fa-mobile',\n                    'fal fa-mobile',\n                    'far fa-mobile-alt',\n                    'fal fa-mobile-alt',\n                    'fas fa-mobile-android',\n                    'far fa-mobile-android',\n                    'fal fa-mobile-android',\n                    'fas fa-mobile-android-alt',\n                    'far fa-mobile-android-alt',\n                    'fal fa-mobile-android-alt',\n                    'far fa-money-bill',\n                    'fal fa-money-bill',\n                    'fal fa-money-bill-alt',\n                    'far fa-money-bill-wave',\n                    'fal fa-money-bill-wave',\n                    'far fa-money-bill-wave-alt',\n                    'fal fa-money-bill-wave-alt',\n                    'far fa-money-check',\n                    'fal fa-money-check',\n                    'far fa-money-check-alt',\n                    'fal fa-money-check-alt',\n                    'fas fa-monitor-heart-rate',\n                    'far fa-monitor-heart-rate',\n                    'fal fa-monitor-heart-rate',\n                    'far fa-monument',\n                    'fal fa-monument',\n                    'fal fa-moon',\n                    'far fa-mortar-pestle',\n                    'fal fa-mortar-pestle',\n                    'far fa-mosque',\n                    'fal fa-mosque',\n                    'far fa-motorcycle',\n                    'fal fa-motorcycle',\n                    'far fa-mouse-pointer',\n                    'fal fa-mouse-pointer',\n                    'far fa-music',\n                    'fal fa-music',\n                    'far fa-neuter',\n                    'fal fa-neuter',\n                    'fal fa-newspaper',\n                    'far fa-not-equal',\n                    'fal fa-not-equal',\n                    'far fa-notes-medical',\n                    'fal fa-notes-medical',\n                    'fal fa-object-group',\n                    'fal fa-object-ungroup',\n                    'fas fa-octagon',\n                    'far fa-octagon',\n                    'fal fa-octagon',\n                    'far fa-oil-can',\n                    'fal fa-oil-can',\n                    'fas fa-oil-temp',\n                    'far fa-oil-temp',\n                    'fal fa-oil-temp',\n                    'far fa-om',\n                    'fal fa-om',\n                    'fas fa-omega',\n                    'far fa-omega',\n                    'fal fa-omega',\n                    'far fa-outdent',\n                    'fal fa-outdent',\n                    'far fa-paint-brush',\n                    'fal fa-paint-brush',\n                    'fas fa-paint-brush-alt',\n                    'far fa-paint-brush-alt',\n                    'fal fa-paint-brush-alt',\n                    'far fa-paint-roller',\n                    'fal fa-paint-roller',\n                    'far fa-palette',\n                    'fal fa-palette',\n                    'far fa-pallet',\n                    'fal fa-pallet',\n                    'fas fa-pallet-alt',\n                    'far fa-pallet-alt',\n                    'fal fa-pallet-alt',\n                    'fal fa-paper-plane',\n                    'far fa-paperclip',\n                    'fal fa-paperclip',\n                    'far fa-parachute-box',\n                    'fal fa-parachute-box',\n                    'far fa-paragraph',\n                    'fal fa-paragraph',\n                    'far fa-parking',\n                    'fal fa-parking',\n                    'fas fa-parking-circle',\n                    'far fa-parking-circle',\n                    'fal fa-parking-circle',\n                    'fas fa-parking-circle-slash',\n                    'far fa-parking-circle-slash',\n                    'fal fa-parking-circle-slash',\n                    'fas fa-parking-slash',\n                    'far fa-parking-slash',\n                    'fal fa-parking-slash',\n                    'far fa-passport',\n                    'fal fa-passport',\n                    'far fa-pastafarianism',\n                    'fal fa-pastafarianism',\n                    'far fa-paste',\n                    'fal fa-paste',\n                    'far fa-pause',\n                    'fal fa-pause',\n                    'fal fa-pause-circle',\n                    'far fa-paw',\n                    'fal fa-paw',\n                    'far fa-peace',\n                    'fal fa-peace',\n                    'far fa-pen',\n                    'fal fa-pen',\n                    'far fa-pen-alt',\n                    'fal fa-pen-alt',\n                    'far fa-pen-fancy',\n                    'fal fa-pen-fancy',\n                    'far fa-pen-nib',\n                    'fal fa-pen-nib',\n                    'far fa-pen-square',\n                    'fal fa-pen-square',\n                    'fas fa-pencil',\n                    'far fa-pencil',\n                    'fal fa-pencil',\n                    'far fa-pencil-alt',\n                    'fal fa-pencil-alt',\n                    'fas fa-pencil-paintbrush',\n                    'far fa-pencil-paintbrush',\n                    'fal fa-pencil-paintbrush',\n                    'far fa-pencil-ruler',\n                    'fal fa-pencil-ruler',\n                    'fas fa-pennant',\n                    'far fa-pennant',\n                    'fal fa-pennant',\n                    'far fa-people-carry',\n                    'fal fa-people-carry',\n                    'far fa-percent',\n                    'fal fa-percent',\n                    'far fa-percentage',\n                    'fal fa-percentage',\n                    'fas fa-person-carry',\n                    'far fa-person-carry',\n                    'fal fa-person-carry',\n                    'fas fa-person-dolly',\n                    'far fa-person-dolly',\n                    'fal fa-person-dolly',\n                    'fas fa-person-dolly-empty',\n                    'far fa-person-dolly-empty',\n                    'fal fa-person-dolly-empty',\n                    'far fa-phone',\n                    'fal fa-phone',\n                    'fas fa-phone-office',\n                    'far fa-phone-office',\n                    'fal fa-phone-office',\n                    'fas fa-phone-plus',\n                    'far fa-phone-plus',\n                    'fal fa-phone-plus',\n                    'far fa-phone-slash',\n                    'fal fa-phone-slash',\n                    'far fa-phone-square',\n                    'fal fa-phone-square',\n                    'far fa-phone-volume',\n                    'fal fa-phone-volume',\n                    'fas fa-pi',\n                    'far fa-pi',\n                    'fal fa-pi',\n                    'far fa-piggy-bank',\n                    'fal fa-piggy-bank',\n                    'far fa-pills',\n                    'fal fa-pills',\n                    'far fa-place-of-worship',\n                    'fal fa-place-of-worship',\n                    'far fa-plane',\n                    'fal fa-plane',\n                    'fas fa-plane-alt',\n                    'far fa-plane-alt',\n                    'fal fa-plane-alt',\n                    'far fa-plane-arrival',\n                    'fal fa-plane-arrival',\n                    'far fa-plane-departure',\n                    'fal fa-plane-departure',\n                    'far fa-play',\n                    'fal fa-play',\n                    'fal fa-play-circle',\n                    'far fa-plug',\n                    'fal fa-plug',\n                    'far fa-plus',\n                    'fal fa-plus',\n                    'far fa-plus-circle',\n                    'fal fa-plus-circle',\n                    'fas fa-plus-hexagon',\n                    'far fa-plus-hexagon',\n                    'fal fa-plus-hexagon',\n                    'fas fa-plus-octagon',\n                    'far fa-plus-octagon',\n                    'fal fa-plus-octagon',\n                    'fal fa-plus-square',\n                    'far fa-podcast',\n                    'fal fa-podcast',\n                    'fas fa-podium',\n                    'far fa-podium',\n                    'fal fa-podium',\n                    'far fa-poll',\n                    'fal fa-poll',\n                    'far fa-poll-h',\n                    'fal fa-poll-h',\n                    'far fa-poo',\n                    'fal fa-poo',\n                    'far fa-poop',\n                    'fal fa-poop',\n                    'far fa-portrait',\n                    'fal fa-portrait',\n                    'far fa-pound-sign',\n                    'fal fa-pound-sign',\n                    'far fa-power-off',\n                    'fal fa-power-off',\n                    'far fa-pray',\n                    'fal fa-pray',\n                    'far fa-praying-hands',\n                    'fal fa-praying-hands',\n                    'far fa-prescription',\n                    'fal fa-prescription',\n                    'far fa-prescription-bottle',\n                    'fal fa-prescription-bottle',\n                    'far fa-prescription-bottle-alt',\n                    'fal fa-prescription-bottle-alt',\n                    'fas fa-presentation',\n                    'far fa-presentation',\n                    'fal fa-presentation',\n                    'far fa-print',\n                    'fal fa-print',\n                    'fas fa-print-slash',\n                    'far fa-print-slash',\n                    'fal fa-print-slash',\n                    'far fa-procedures',\n                    'fal fa-procedures',\n                    'far fa-project-diagram',\n                    'fal fa-project-diagram',\n                    'far fa-puzzle-piece',\n                    'fal fa-puzzle-piece',\n                    'far fa-qrcode',\n                    'fal fa-qrcode',\n                    'far fa-question',\n                    'fal fa-question',\n                    'fal fa-question-circle',\n                    'fas fa-question-square',\n                    'far fa-question-square',\n                    'fal fa-question-square',\n                    'far fa-quidditch',\n                    'fal fa-quidditch',\n                    'far fa-quote-left',\n                    'fal fa-quote-left',\n                    'far fa-quote-right',\n                    'fal fa-quote-right',\n                    'far fa-quran',\n                    'fal fa-quran',\n                    'fas fa-racquet',\n                    'far fa-racquet',\n                    'fal fa-racquet',\n                    'fas fa-ramp-loading',\n                    'far fa-ramp-loading',\n                    'fal fa-ramp-loading',\n                    'far fa-random',\n                    'fal fa-random',\n                    'far fa-receipt',\n                    'fal fa-receipt',\n                    'fas fa-rectangle-landscape',\n                    'far fa-rectangle-landscape',\n                    'fal fa-rectangle-landscape',\n                    'fas fa-rectangle-portrait',\n                    'far fa-rectangle-portrait',\n                    'fal fa-rectangle-portrait',\n                    'fas fa-rectangle-wide',\n                    'far fa-rectangle-wide',\n                    'fal fa-rectangle-wide',\n                    'far fa-recycle',\n                    'fal fa-recycle',\n                    'far fa-redo',\n                    'fal fa-redo',\n                    'far fa-redo-alt',\n                    'fal fa-redo-alt',\n                    'fal fa-registered',\n                    'fas fa-repeat',\n                    'far fa-repeat',\n                    'fal fa-repeat',\n                    'fas fa-repeat-1',\n                    'far fa-repeat-1',\n                    'fal fa-repeat-1',\n                    'fas fa-repeat-1-alt',\n                    'far fa-repeat-1-alt',\n                    'fal fa-repeat-1-alt',\n                    'fas fa-repeat-alt',\n                    'far fa-repeat-alt',\n                    'fal fa-repeat-alt',\n                    'far fa-reply',\n                    'fal fa-reply',\n                    'far fa-reply-all',\n                    'fal fa-reply-all',\n                    'far fa-retweet',\n                    'fal fa-retweet',\n                    'fas fa-retweet-alt',\n                    'far fa-retweet-alt',\n                    'fal fa-retweet-alt',\n                    'far fa-ribbon',\n                    'fal fa-ribbon',\n                    'far fa-road',\n                    'fal fa-road',\n                    'far fa-robot',\n                    'fal fa-robot',\n                    'far fa-rocket',\n                    'fal fa-rocket',\n                    'far fa-route',\n                    'fal fa-route',\n                    'fas fa-route-highway',\n                    'far fa-route-highway',\n                    'fal fa-route-highway',\n                    'fas fa-route-interstate',\n                    'far fa-route-interstate',\n                    'fal fa-route-interstate',\n                    'far fa-rss',\n                    'fal fa-rss',\n                    'far fa-rss-square',\n                    'fal fa-rss-square',\n                    'far fa-ruble-sign',\n                    'fal fa-ruble-sign',\n                    'far fa-ruler',\n                    'fal fa-ruler',\n                    'far fa-ruler-combined',\n                    'fal fa-ruler-combined',\n                    'far fa-ruler-horizontal',\n                    'fal fa-ruler-horizontal',\n                    'fas fa-ruler-triangle',\n                    'far fa-ruler-triangle',\n                    'fal fa-ruler-triangle',\n                    'far fa-ruler-vertical',\n                    'fal fa-ruler-vertical',\n                    'far fa-rupee-sign',\n                    'fal fa-rupee-sign',\n                    'fal fa-sad-cry',\n                    'fal fa-sad-tear',\n                    'fal fa-save',\n                    'fas fa-scalpel',\n                    'far fa-scalpel',\n                    'fal fa-scalpel',\n                    'fas fa-scalpel-path',\n                    'far fa-scalpel-path',\n                    'fal fa-scalpel-path',\n                    'fas fa-scanner',\n                    'far fa-scanner',\n                    'fal fa-scanner',\n                    'fas fa-scanner-keyboard',\n                    'far fa-scanner-keyboard',\n                    'fal fa-scanner-keyboard',\n                    'fas fa-scanner-touchscreen',\n                    'far fa-scanner-touchscreen',\n                    'fal fa-scanner-touchscreen',\n                    'far fa-school',\n                    'fal fa-school',\n                    'far fa-screwdriver',\n                    'fal fa-screwdriver',\n                    'fas fa-scrubber',\n                    'far fa-scrubber',\n                    'fal fa-scrubber',\n                    'far fa-search',\n                    'fal fa-search',\n                    'far fa-search-dollar',\n                    'fal fa-search-dollar',\n                    'far fa-search-location',\n                    'fal fa-search-location',\n                    'far fa-search-minus',\n                    'fal fa-search-minus',\n                    'far fa-search-plus',\n                    'fal fa-search-plus',\n                    'far fa-seedling',\n                    'fal fa-seedling',\n                    'far fa-server',\n                    'fal fa-server',\n                    'far fa-shapes',\n                    'fal fa-shapes',\n                    'far fa-share',\n                    'fal fa-share',\n                    'fas fa-share-all',\n                    'far fa-share-all',\n                    'fal fa-share-all',\n                    'far fa-share-alt',\n                    'fal fa-share-alt',\n                    'far fa-share-alt-square',\n                    'fal fa-share-alt-square',\n                    'fal fa-share-square',\n                    'far fa-shekel-sign',\n                    'fal fa-shekel-sign',\n                    'fas fa-shield',\n                    'far fa-shield',\n                    'fal fa-shield',\n                    'far fa-shield-alt',\n                    'fal fa-shield-alt',\n                    'fas fa-shield-check',\n                    'far fa-shield-check',\n                    'fal fa-shield-check',\n                    'far fa-ship',\n                    'fal fa-ship',\n                    'far fa-shipping-fast',\n                    'fal fa-shipping-fast',\n                    'fas fa-shipping-timed',\n                    'far fa-shipping-timed',\n                    'fal fa-shipping-timed',\n                    'far fa-shoe-prints',\n                    'fal fa-shoe-prints',\n                    'far fa-shopping-bag',\n                    'fal fa-shopping-bag',\n                    'far fa-shopping-basket',\n                    'fal fa-shopping-basket',\n                    'far fa-shopping-cart',\n                    'fal fa-shopping-cart',\n                    'far fa-shower',\n                    'fal fa-shower',\n                    'fas fa-shredder',\n                    'far fa-shredder',\n                    'fal fa-shredder',\n                    'far fa-shuttle-van',\n                    'fal fa-shuttle-van',\n                    'fas fa-shuttlecock',\n                    'far fa-shuttlecock',\n                    'fal fa-shuttlecock',\n                    'fas fa-sigma',\n                    'far fa-sigma',\n                    'fal fa-sigma',\n                    'far fa-sign',\n                    'fal fa-sign',\n                    'fas fa-sign-in',\n                    'far fa-sign-in',\n                    'fal fa-sign-in',\n                    'far fa-sign-in-alt',\n                    'fal fa-sign-in-alt',\n                    'far fa-sign-language',\n                    'fal fa-sign-language',\n                    'fas fa-sign-out',\n                    'far fa-sign-out',\n                    'fal fa-sign-out',\n                    'far fa-sign-out-alt',\n                    'fal fa-sign-out-alt',\n                    'far fa-signal',\n                    'fal fa-signal',\n                    'fas fa-signal-1',\n                    'far fa-signal-1',\n                    'fal fa-signal-1',\n                    'fas fa-signal-2',\n                    'far fa-signal-2',\n                    'fal fa-signal-2',\n                    'fas fa-signal-3',\n                    'far fa-signal-3',\n                    'fal fa-signal-3',\n                    'fas fa-signal-4',\n                    'far fa-signal-4',\n                    'fal fa-signal-4',\n                    'fas fa-signal-alt',\n                    'far fa-signal-alt',\n                    'fal fa-signal-alt',\n                    'fas fa-signal-alt-1',\n                    'far fa-signal-alt-1',\n                    'fal fa-signal-alt-1',\n                    'fas fa-signal-alt-2',\n                    'far fa-signal-alt-2',\n                    'fal fa-signal-alt-2',\n                    'fas fa-signal-alt-3',\n                    'far fa-signal-alt-3',\n                    'fal fa-signal-alt-3',\n                    'fas fa-signal-alt-slash',\n                    'far fa-signal-alt-slash',\n                    'fal fa-signal-alt-slash',\n                    'fas fa-signal-slash',\n                    'far fa-signal-slash',\n                    'fal fa-signal-slash',\n                    'far fa-signature',\n                    'fal fa-signature',\n                    'far fa-sitemap',\n                    'fal fa-sitemap',\n                    'fas fa-skeleton',\n                    'far fa-skeleton',\n                    'fal fa-skeleton',\n                    'far fa-skull',\n                    'fal fa-skull',\n                    'far fa-sliders-h',\n                    'fal fa-sliders-h',\n                    'fas fa-sliders-h-square',\n                    'far fa-sliders-h-square',\n                    'fal fa-sliders-h-square',\n                    'fas fa-sliders-v',\n                    'far fa-sliders-v',\n                    'fal fa-sliders-v',\n                    'fas fa-sliders-v-square',\n                    'far fa-sliders-v-square',\n                    'fal fa-sliders-v-square',\n                    'fal fa-smile',\n                    'fal fa-smile-beam',\n                    'fas fa-smile-plus',\n                    'far fa-smile-plus',\n                    'fal fa-smile-plus',\n                    'fal fa-smile-wink',\n                    'far fa-smoking',\n                    'fal fa-smoking',\n                    'far fa-smoking-ban',\n                    'fal fa-smoking-ban',\n                    'fal fa-snowflake',\n                    'far fa-socks',\n                    'fal fa-socks',\n                    'far fa-solar-panel',\n                    'fal fa-solar-panel',\n                    'far fa-sort',\n                    'fal fa-sort',\n                    'far fa-sort-alpha-down',\n                    'fal fa-sort-alpha-down',\n                    'far fa-sort-alpha-up',\n                    'fal fa-sort-alpha-up',\n                    'far fa-sort-amount-down',\n                    'fal fa-sort-amount-down',\n                    'far fa-sort-amount-up',\n                    'fal fa-sort-amount-up',\n                    'far fa-sort-down',\n                    'fal fa-sort-down',\n                    'far fa-sort-numeric-down',\n                    'fal fa-sort-numeric-down',\n                    'far fa-sort-numeric-up',\n                    'fal fa-sort-numeric-up',\n                    'far fa-sort-up',\n                    'fal fa-sort-up',\n                    'far fa-spa',\n                    'fal fa-spa',\n                    'far fa-space-shuttle',\n                    'fal fa-space-shuttle',\n                    'fas fa-spade',\n                    'far fa-spade',\n                    'fal fa-spade',\n                    'far fa-spinner',\n                    'fal fa-spinner',\n                    'fas fa-spinner-third',\n                    'far fa-spinner-third',\n                    'fal fa-spinner-third',\n                    'far fa-splotch',\n                    'fal fa-splotch',\n                    'far fa-spray-can',\n                    'fal fa-spray-can',\n                    'fal fa-square',\n                    'far fa-square-full',\n                    'fal fa-square-full',\n                    'fas fa-square-root',\n                    'far fa-square-root',\n                    'fal fa-square-root',\n                    'far fa-square-root-alt',\n                    'fal fa-square-root-alt',\n                    'far fa-stamp',\n                    'fal fa-stamp',\n                    'fal fa-star',\n                    'far fa-star-and-crescent',\n                    'fal fa-star-and-crescent',\n                    'fas fa-star-exclamation',\n                    'far fa-star-exclamation',\n                    'fal fa-star-exclamation',\n                    'fal fa-star-half',\n                    'far fa-star-half-alt',\n                    'fal fa-star-half-alt',\n                    'far fa-star-of-david',\n                    'fal fa-star-of-david',\n                    'far fa-star-of-life',\n                    'fal fa-star-of-life',\n                    'fas fa-steering-wheel',\n                    'far fa-steering-wheel',\n                    'fal fa-steering-wheel',\n                    'far fa-step-backward',\n                    'fal fa-step-backward',\n                    'far fa-step-forward',\n                    'fal fa-step-forward',\n                    'far fa-stethoscope',\n                    'fal fa-stethoscope',\n                    'fal fa-sticky-note',\n                    'fas fa-stomach',\n                    'far fa-stomach',\n                    'fal fa-stomach',\n                    'far fa-stop',\n                    'fal fa-stop',\n                    'fal fa-stop-circle',\n                    'far fa-stopwatch',\n                    'fal fa-stopwatch',\n                    'far fa-store',\n                    'fal fa-store',\n                    'far fa-store-alt',\n                    'fal fa-store-alt',\n                    'far fa-stream',\n                    'fal fa-stream',\n                    'far fa-street-view',\n                    'fal fa-street-view',\n                    'far fa-strikethrough',\n                    'fal fa-strikethrough',\n                    'far fa-stroopwafel',\n                    'fal fa-stroopwafel',\n                    'far fa-subscript',\n                    'fal fa-subscript',\n                    'far fa-subway',\n                    'fal fa-subway',\n                    'far fa-suitcase',\n                    'fal fa-suitcase',\n                    'far fa-suitcase-rolling',\n                    'fal fa-suitcase-rolling',\n                    'fal fa-sun',\n                    'far fa-superscript',\n                    'fal fa-superscript',\n                    'fal fa-surprise',\n                    'far fa-swatchbook',\n                    'fal fa-swatchbook',\n                    'far fa-swimmer',\n                    'fal fa-swimmer',\n                    'far fa-swimming-pool',\n                    'fal fa-swimming-pool',\n                    'far fa-synagogue',\n                    'fal fa-synagogue',\n                    'far fa-sync',\n                    'fal fa-sync',\n                    'far fa-sync-alt',\n                    'fal fa-sync-alt',\n                    'far fa-syringe',\n                    'fal fa-syringe',\n                    'far fa-table',\n                    'fal fa-table',\n                    'far fa-table-tennis',\n                    'fal fa-table-tennis',\n                    'far fa-tablet',\n                    'fal fa-tablet',\n                    'far fa-tablet-alt',\n                    'fal fa-tablet-alt',\n                    'fas fa-tablet-android',\n                    'far fa-tablet-android',\n                    'fal fa-tablet-android',\n                    'fas fa-tablet-android-alt',\n                    'far fa-tablet-android-alt',\n                    'fal fa-tablet-android-alt',\n                    'fas fa-tablet-rugged',\n                    'far fa-tablet-rugged',\n                    'fal fa-tablet-rugged',\n                    'far fa-tablets',\n                    'fal fa-tablets',\n                    'fas fa-tachometer',\n                    'far fa-tachometer',\n                    'fal fa-tachometer',\n                    'far fa-tachometer-alt',\n                    'fal fa-tachometer-alt',\n                    'fas fa-tachometer-alt-average',\n                    'far fa-tachometer-alt-average',\n                    'fal fa-tachometer-alt-average',\n                    'fas fa-tachometer-alt-fast',\n                    'far fa-tachometer-alt-fast',\n                    'fal fa-tachometer-alt-fast',\n                    'fas fa-tachometer-alt-fastest',\n                    'far fa-tachometer-alt-fastest',\n                    'fal fa-tachometer-alt-fastest',\n                    'fas fa-tachometer-alt-slow',\n                    'far fa-tachometer-alt-slow',\n                    'fal fa-tachometer-alt-slow',\n                    'fas fa-tachometer-alt-slowest',\n                    'far fa-tachometer-alt-slowest',\n                    'fal fa-tachometer-alt-slowest',\n                    'fas fa-tachometer-average',\n                    'far fa-tachometer-average',\n                    'fal fa-tachometer-average',\n                    'fas fa-tachometer-fast',\n                    'far fa-tachometer-fast',\n                    'fal fa-tachometer-fast',\n                    'fas fa-tachometer-fastest',\n                    'far fa-tachometer-fastest',\n                    'fal fa-tachometer-fastest',\n                    'fas fa-tachometer-slow',\n                    'far fa-tachometer-slow',\n                    'fal fa-tachometer-slow',\n                    'fas fa-tachometer-slowest',\n                    'far fa-tachometer-slowest',\n                    'fal fa-tachometer-slowest',\n                    'far fa-tag',\n                    'fal fa-tag',\n                    'far fa-tags',\n                    'fal fa-tags',\n                    'fas fa-tally',\n                    'far fa-tally',\n                    'fal fa-tally',\n                    'far fa-tape',\n                    'fal fa-tape',\n                    'far fa-tasks',\n                    'fal fa-tasks',\n                    'far fa-taxi',\n                    'fal fa-taxi',\n                    'far fa-teeth',\n                    'fal fa-teeth',\n                    'far fa-teeth-open',\n                    'fal fa-teeth-open',\n                    'fas fa-tennis-ball',\n                    'far fa-tennis-ball',\n                    'fal fa-tennis-ball',\n                    'far fa-terminal',\n                    'fal fa-terminal',\n                    'far fa-text-height',\n                    'fal fa-text-height',\n                    'far fa-text-width',\n                    'fal fa-text-width',\n                    'far fa-th',\n                    'fal fa-th',\n                    'far fa-th-large',\n                    'fal fa-th-large',\n                    'far fa-th-list',\n                    'fal fa-th-list',\n                    'far fa-theater-masks',\n                    'fal fa-theater-masks',\n                    'far fa-thermometer',\n                    'fal fa-thermometer',\n                    'far fa-thermometer-empty',\n                    'fal fa-thermometer-empty',\n                    'far fa-thermometer-full',\n                    'fal fa-thermometer-full',\n                    'far fa-thermometer-half',\n                    'fal fa-thermometer-half',\n                    'far fa-thermometer-quarter',\n                    'fal fa-thermometer-quarter',\n                    'far fa-thermometer-three-quarters',\n                    'fal fa-thermometer-three-quarters',\n                    'fas fa-theta',\n                    'far fa-theta',\n                    'fal fa-theta',\n                    'fal fa-thumbs-down',\n                    'fal fa-thumbs-up',\n                    'far fa-thumbtack',\n                    'fal fa-thumbtack',\n                    'fas fa-ticket',\n                    'far fa-ticket',\n                    'fal fa-ticket',\n                    'far fa-ticket-alt',\n                    'fal fa-ticket-alt',\n                    'fas fa-tilde',\n                    'far fa-tilde',\n                    'fal fa-tilde',\n                    'far fa-times',\n                    'fal fa-times',\n                    'fal fa-times-circle',\n                    'fas fa-times-hexagon',\n                    'far fa-times-hexagon',\n                    'fal fa-times-hexagon',\n                    'fas fa-times-octagon',\n                    'far fa-times-octagon',\n                    'fal fa-times-octagon',\n                    'fas fa-times-square',\n                    'far fa-times-square',\n                    'fal fa-times-square',\n                    'far fa-tint',\n                    'fal fa-tint',\n                    'far fa-tint-slash',\n                    'fal fa-tint-slash',\n                    'fas fa-tire',\n                    'far fa-tire',\n                    'fal fa-tire',\n                    'fas fa-tire-flat',\n                    'far fa-tire-flat',\n                    'fal fa-tire-flat',\n                    'fas fa-tire-pressure-warning',\n                    'far fa-tire-pressure-warning',\n                    'fal fa-tire-pressure-warning',\n                    'fas fa-tire-rugged',\n                    'far fa-tire-rugged',\n                    'fal fa-tire-rugged',\n                    'fal fa-tired',\n                    'far fa-toggle-off',\n                    'fal fa-toggle-off',\n                    'far fa-toggle-on',\n                    'fal fa-toggle-on',\n                    'far fa-toolbox',\n                    'fal fa-toolbox',\n                    'far fa-tooth',\n                    'fal fa-tooth',\n                    'fas fa-toothbrush',\n                    'far fa-toothbrush',\n                    'fal fa-toothbrush',\n                    'far fa-torah',\n                    'fal fa-torah',\n                    'far fa-torii-gate',\n                    'fal fa-torii-gate',\n                    'far fa-trademark',\n                    'fal fa-trademark',\n                    'fas fa-traffic-cone',\n                    'far fa-traffic-cone',\n                    'fal fa-traffic-cone',\n                    'far fa-traffic-light',\n                    'fal fa-traffic-light',\n                    'fas fa-traffic-light-go',\n                    'far fa-traffic-light-go',\n                    'fal fa-traffic-light-go',\n                    'fas fa-traffic-light-slow',\n                    'far fa-traffic-light-slow',\n                    'fal fa-traffic-light-slow',\n                    'fas fa-traffic-light-stop',\n                    'far fa-traffic-light-stop',\n                    'fal fa-traffic-light-stop',\n                    'far fa-train',\n                    'fal fa-train',\n                    'far fa-transgender',\n                    'fal fa-transgender',\n                    'far fa-transgender-alt',\n                    'fal fa-transgender-alt',\n                    'far fa-trash',\n                    'fal fa-trash',\n                    'fal fa-trash-alt',\n                    'far fa-tree',\n                    'fal fa-tree',\n                    'fas fa-tree-alt',\n                    'far fa-tree-alt',\n                    'fal fa-tree-alt',\n                    'fas fa-triangle',\n                    'far fa-triangle',\n                    'fal fa-triangle',\n                    'far fa-trophy',\n                    'fal fa-trophy',\n                    'fas fa-trophy-alt',\n                    'far fa-trophy-alt',\n                    'fal fa-trophy-alt',\n                    'far fa-truck',\n                    'fal fa-truck',\n                    'fas fa-truck-container',\n                    'far fa-truck-container',\n                    'fal fa-truck-container',\n                    'fas fa-truck-couch',\n                    'far fa-truck-couch',\n                    'fal fa-truck-couch',\n                    'far fa-truck-loading',\n                    'fal fa-truck-loading',\n                    'far fa-truck-monster',\n                    'fal fa-truck-monster',\n                    'far fa-truck-moving',\n                    'fal fa-truck-moving',\n                    'far fa-truck-pickup',\n                    'fal fa-truck-pickup',\n                    'fas fa-truck-ramp',\n                    'far fa-truck-ramp',\n                    'fal fa-truck-ramp',\n                    'far fa-tshirt',\n                    'fal fa-tshirt',\n                    'far fa-tty',\n                    'fal fa-tty',\n                    'far fa-tv',\n                    'fal fa-tv',\n                    'fas fa-tv-retro',\n                    'far fa-tv-retro',\n                    'fal fa-tv-retro',\n                    'far fa-umbrella',\n                    'fal fa-umbrella',\n                    'far fa-umbrella-beach',\n                    'fal fa-umbrella-beach',\n                    'far fa-underline',\n                    'fal fa-underline',\n                    'far fa-undo',\n                    'fal fa-undo',\n                    'far fa-undo-alt',\n                    'fal fa-undo-alt',\n                    'fas fa-union',\n                    'far fa-union',\n                    'fal fa-union',\n                    'far fa-universal-access',\n                    'fal fa-universal-access',\n                    'far fa-university',\n                    'fal fa-university',\n                    'far fa-unlink',\n                    'fal fa-unlink',\n                    'far fa-unlock',\n                    'fal fa-unlock',\n                    'far fa-unlock-alt',\n                    'fal fa-unlock-alt',\n                    'far fa-upload',\n                    'fal fa-upload',\n                    'fas fa-usd-circle',\n                    'far fa-usd-circle',\n                    'fal fa-usd-circle',\n                    'fas fa-usd-square',\n                    'far fa-usd-square',\n                    'fal fa-usd-square',\n                    'fal fa-user',\n                    'far fa-user-alt',\n                    'fal fa-user-alt',\n                    'far fa-user-alt-slash',\n                    'fal fa-user-alt-slash',\n                    'far fa-user-astronaut',\n                    'fal fa-user-astronaut',\n                    'fas fa-user-chart',\n                    'far fa-user-chart',\n                    'fal fa-user-chart',\n                    'far fa-user-check',\n                    'fal fa-user-check',\n                    'fal fa-user-circle',\n                    'far fa-user-clock',\n                    'fal fa-user-clock',\n                    'far fa-user-cog',\n                    'fal fa-user-cog',\n                    'fas fa-user-crown',\n                    'far fa-user-crown',\n                    'fal fa-user-crown',\n                    'far fa-user-edit',\n                    'fal fa-user-edit',\n                    'far fa-user-friends',\n                    'fal fa-user-friends',\n                    'far fa-user-graduate',\n                    'fal fa-user-graduate',\n                    'far fa-user-lock',\n                    'fal fa-user-lock',\n                    'far fa-user-md',\n                    'fal fa-user-md',\n                    'far fa-user-minus',\n                    'fal fa-user-minus',\n                    'far fa-user-ninja',\n                    'fal fa-user-ninja',\n                    'far fa-user-plus',\n                    'fal fa-user-plus',\n                    'far fa-user-secret',\n                    'fal fa-user-secret',\n                    'far fa-user-shield',\n                    'fal fa-user-shield',\n                    'far fa-user-slash',\n                    'fal fa-user-slash',\n                    'far fa-user-tag',\n                    'fal fa-user-tag',\n                    'far fa-user-tie',\n                    'fal fa-user-tie',\n                    'far fa-user-times',\n                    'fal fa-user-times',\n                    'far fa-users',\n                    'fal fa-users',\n                    'fas fa-users-class',\n                    'far fa-users-class',\n                    'fal fa-users-class',\n                    'far fa-users-cog',\n                    'fal fa-users-cog',\n                    'fas fa-users-crown',\n                    'far fa-users-crown',\n                    'fal fa-users-crown',\n                    'fas fa-utensil-fork',\n                    'far fa-utensil-fork',\n                    'fal fa-utensil-fork',\n                    'fas fa-utensil-knife',\n                    'far fa-utensil-knife',\n                    'fal fa-utensil-knife',\n                    'far fa-utensil-spoon',\n                    'fal fa-utensil-spoon',\n                    'far fa-utensils',\n                    'fal fa-utensils',\n                    'fas fa-utensils-alt',\n                    'far fa-utensils-alt',\n                    'fal fa-utensils-alt',\n                    'fas fa-value-absolute',\n                    'far fa-value-absolute',\n                    'fal fa-value-absolute',\n                    'far fa-vector-square',\n                    'fal fa-vector-square',\n                    'far fa-venus',\n                    'fal fa-venus',\n                    'far fa-venus-double',\n                    'fal fa-venus-double',\n                    'far fa-venus-mars',\n                    'fal fa-venus-mars',\n                    'far fa-vial',\n                    'fal fa-vial',\n                    'far fa-vials',\n                    'fal fa-vials',\n                    'far fa-video',\n                    'fal fa-video',\n                    'fas fa-video-plus',\n                    'far fa-video-plus',\n                    'fal fa-video-plus',\n                    'far fa-video-slash',\n                    'fal fa-video-slash',\n                    'far fa-vihara',\n                    'fal fa-vihara',\n                    'far fa-volleyball-ball',\n                    'fal fa-volleyball-ball',\n                    'fas fa-volume',\n                    'far fa-volume',\n                    'fal fa-volume',\n                    'far fa-volume-down',\n                    'fal fa-volume-down',\n                    'fas fa-volume-mute',\n                    'far fa-volume-mute',\n                    'fal fa-volume-mute',\n                    'far fa-volume-off',\n                    'fal fa-volume-off',\n                    'fas fa-volume-slash',\n                    'far fa-volume-slash',\n                    'fal fa-volume-slash',\n                    'far fa-volume-up',\n                    'fal fa-volume-up',\n                    'far fa-walking',\n                    'fal fa-walking',\n                    'far fa-wallet',\n                    'fal fa-wallet',\n                    'far fa-warehouse',\n                    'fal fa-warehouse',\n                    'fas fa-warehouse-alt',\n                    'far fa-warehouse-alt',\n                    'fal fa-warehouse-alt',\n                    'fas fa-watch',\n                    'far fa-watch',\n                    'fal fa-watch',\n                    'fas fa-watch-fitness',\n                    'far fa-watch-fitness',\n                    'fal fa-watch-fitness',\n                    'far fa-weight',\n                    'fal fa-weight',\n                    'far fa-weight-hanging',\n                    'fal fa-weight-hanging',\n                    'far fa-wheelchair',\n                    'fal fa-wheelchair',\n                    'fas fa-whistle',\n                    'far fa-whistle',\n                    'fal fa-whistle',\n                    'far fa-wifi',\n                    'fal fa-wifi',\n                    'fas fa-wifi-1',\n                    'far fa-wifi-1',\n                    'fal fa-wifi-1',\n                    'fas fa-wifi-2',\n                    'far fa-wifi-2',\n                    'fal fa-wifi-2',\n                    'fas fa-wifi-slash',\n                    'far fa-wifi-slash',\n                    'fal fa-wifi-slash',\n                    'fas fa-window',\n                    'far fa-window',\n                    'fal fa-window',\n                    'fas fa-window-alt',\n                    'far fa-window-alt',\n                    'fal fa-window-alt',\n                    'fal fa-window-close',\n                    'fal fa-window-maximize',\n                    'fal fa-window-minimize',\n                    'fal fa-window-restore',\n                    'far fa-wine-glass',\n                    'fal fa-wine-glass',\n                    'far fa-wine-glass-alt',\n                    'fal fa-wine-glass-alt',\n                    'far fa-won-sign',\n                    'fal fa-won-sign',\n                    'far fa-wrench',\n                    'fal fa-wrench',\n                    'far fa-x-ray',\n                    'fal fa-x-ray',\n                    'far fa-yen-sign',\n                    'fal fa-yen-sign',\n                    'far fa-yin-yang',\n                    'fal fa-yin-yang'\n                ]\n            }\n        ]\n    };\n\n    data.icons = data.allVersions[0].icons;\n\n    $.iconset_fontawesome_5 = data;\n\n})(jQuery);\n\n/*!========================================================================\n * Iconset: Glyphicons\n * Versions: 3.3.7\n * ======================================================================== */\n\n;(function($){\n\n    var data = {\n        iconClass: 'glyphicon',\n        iconClassFix: 'glyphicon-',\n        icons: [],\n        allVersions: [\n            {\n                version: '3.3.7',\n                icons: [\n                    '',\n                    'adjust',\n                    'align-center',\n                    'align-justify',\n                    'align-left',\n                    'align-right',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-up',\n                    'asterisk',\n                    'backward',\n                    'ban-circle',\n                    'barcode',\n                    'bell',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'bullhorn',\n                    'calendar',\n                    'camera',\n                    'certificate',\n                    'check',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-arrow-down',\n                    'circle-arrow-left',\n                    'circle-arrow-right',\n                    'circle-arrow-up',\n                    'cloud',\n                    'cloud-download',\n                    'cloud-upload',\n                    'cog',\n                    'collapse-down',\n                    'collapse-up',\n                    'comment',\n                    'compressed',\n                    'copyright-mark',\n                    'credit-card',\n                    'cutlery',\n                    'dashboard',\n                    'download',\n                    'download-alt',\n                    'earphone',\n                    'edit',\n                    'eject',\n                    'envelope',\n                    'euro',\n                    'exclamation-sign',\n                    'expand',\n                    'export',\n                    'eye-close',\n                    'eye-open',\n                    'facetime-video',\n                    'fast-backward',\n                    'fast-forward',\n                    'file',\n                    'film',\n                    'filter',\n                    'fire',\n                    'flag',\n                    'flash',\n                    'floppy-disk',\n                    'floppy-open',\n                    'floppy-remove',\n                    'floppy-save',\n                    'floppy-saved',\n                    'folder-close',\n                    'folder-open',\n                    'font',\n                    'forward',\n                    'fullscreen',\n                    'gbp',\n                    'gift',\n                    'glass',\n                    'globe',\n                    'hand-down',\n                    'hand-left',\n                    'hand-right',\n                    'hand-up',\n                    'hd-video',\n                    'hdd',\n                    'header',\n                    'headphones',\n                    'heart',\n                    'heart-empty',\n                    'home',\n                    'import',\n                    'inbox',\n                    'indent-left',\n                    'indent-right',\n                    'info-sign',\n                    'italic',\n                    'leaf',\n                    'link',\n                    'list',\n                    'list-alt',\n                    'lock',\n                    'log-in',\n                    'log-out',\n                    'magnet',\n                    'map-marker',\n                    'minus',\n                    'minus-sign',\n                    'move',\n                    'music',\n                    'new-window',\n                    'off',\n                    'ok',\n                    'ok-circle',\n                    'ok-sign',\n                    'open',\n                    'paperclip',\n                    'pause',\n                    'pencil',\n                    'phone',\n                    'phone-alt',\n                    'picture',\n                    'plane',\n                    'play',\n                    'play-circle',\n                    'plus',\n                    'plus-sign',\n                    'print',\n                    'pushpin',\n                    'qrcode',\n                    'question-sign',\n                    'random',\n                    'record',\n                    'refresh',\n                    'registration-mark',\n                    'remove',\n                    'remove-circle',\n                    'remove-sign',\n                    'repeat',\n                    'resize-full',\n                    'resize-horizontal',\n                    'resize-small',\n                    'resize-vertical',\n                    'retweet',\n                    'road',\n                    'save',\n                    'saved',\n                    'screenshot',\n                    'sd-video',\n                    'search',\n                    'send',\n                    'share',\n                    'share-alt',\n                    'shopping-cart',\n                    'signal',\n                    'sort',\n                    'sort-by-alphabet',\n                    'sort-by-alphabet-alt',\n                    'sort-by-attributes',\n                    'sort-by-attributes-alt',\n                    'sort-by-order',\n                    'sort-by-order-alt',\n                    'sound-5-1',\n                    'sound-6-1',\n                    'sound-7-1',\n                    'sound-dolby',\n                    'sound-stereo',\n                    'star',\n                    'star-empty',\n                    'stats',\n                    'step-backward',\n                    'step-forward',\n                    'stop',\n                    'subtitles',\n                    'tag',\n                    'tags',\n                    'tasks',\n                    'text-height',\n                    'text-width',\n                    'th',\n                    'th-large',\n                    'th-list',\n                    'thumbs-down',\n                    'thumbs-up',\n                    'time',\n                    'tint',\n                    'tower',\n                    'transfer',\n                    'trash',\n                    'tree-conifer',\n                    'tree-deciduous',\n                    'unchecked',\n                    'upload',\n                    'usd',\n                    'user',\n                    'volume-down',\n                    'volume-off',\n                    'volume-up',\n                    'warning-sign',\n                    'wrench',\n                    'zoom-in',\n                    'zoom-out'\n                ]\n            }\n        ]\n    };\n\n    var l = data.allVersions.length;\n    data.icons = data.allVersions[l-1].icons;\n\n    $.iconset_glyphicon = data;\n\n})(jQuery);\n\n/*!========================================================================\n * Iconset: Ionicons\n * Versions: 1.5.2, 2.0.1\n * http://ionicons.com/\n * CDN: http://code.ionicframework.com/ionicons/[VERSION]/css/ionicons.min.css\n * ======================================================================== */\n\n;(function($){\n\n    var data = {\n        iconClass: '',\n        iconClassFix: 'ion-',\n        icons: [],\n        allVersions: [\n            {\n                version: '1.5.2',\n                icons: [\n                    '',\n                    'alert',\n                    'alert-circled',\n                    'android-add',\n                    'android-add-contact',\n                    'android-alarm',\n                    'android-archive',\n                    'android-arrow-back',\n                    'android-arrow-down-left',\n                    'android-arrow-down-right',\n                    'android-arrow-forward',\n                    'android-arrow-up-left',\n                    'android-arrow-up-right',\n                    'android-battery',\n                    'android-book',\n                    'android-calendar',\n                    'android-call',\n                    'android-camera',\n                    'android-chat',\n                    'android-checkmark',\n                    'android-clock',\n                    'android-close',\n                    'android-contact',\n                    'android-contacts',\n                    'android-data',\n                    'android-developer',\n                    'android-display',\n                    'android-download',\n                    'android-drawer',\n                    'android-dropdown',\n                    'android-earth',\n                    'android-folder',\n                    'android-forums',\n                    'android-friends',\n                    'android-hand',\n                    'android-image',\n                    'android-inbox',\n                    'android-information',\n                    'android-keypad',\n                    'android-lightbulb',\n                    'android-locate',\n                    'android-location',\n                    'android-mail',\n                    'android-microphone',\n                    'android-mixer',\n                    'android-more',\n                    'android-note',\n                    'android-playstore',\n                    'android-printer',\n                    'android-promotion',\n                    'android-reminder',\n                    'android-remove',\n                    'android-search',\n                    'android-send',\n                    'android-settings',\n                    'android-share',\n                    'android-social',\n                    'android-social-user',\n                    'android-sort',\n                    'android-stair-drawer',\n                    'android-star',\n                    'android-stopwatch',\n                    'android-storage',\n                    'android-system-back',\n                    'android-system-home',\n                    'android-system-windows',\n                    'android-timer',\n                    'android-trash',\n                    'android-user-menu',\n                    'android-volume',\n                    'android-wifi',\n                    'aperture',\n                    'archive',\n                    'arrow-down-a',\n                    'arrow-down-b',\n                    'arrow-down-c',\n                    'arrow-expand',\n                    'arrow-graph-down-left',\n                    'arrow-graph-down-right',\n                    'arrow-graph-up-left',\n                    'arrow-graph-up-right',\n                    'arrow-left-a',\n                    'arrow-left-b',\n                    'arrow-left-c',\n                    'arrow-move',\n                    'arrow-resize',\n                    'arrow-return-left',\n                    'arrow-return-right',\n                    'arrow-right-a',\n                    'arrow-right-b',\n                    'arrow-right-c',\n                    'arrow-shrink',\n                    'arrow-swap',\n                    'arrow-up-a',\n                    'arrow-up-b',\n                    'arrow-up-c',\n                    'asterisk',\n                    'at',\n                    'bag',\n                    'battery-charging',\n                    'battery-empty',\n                    'battery-full',\n                    'battery-half',\n                    'battery-low',\n                    'beaker',\n                    'beer',\n                    'bluetooth',\n                    'bonfire',\n                    'bookmark',\n                    'briefcase',\n                    'bug',\n                    'calculator',\n                    'calendar',\n                    'camera',\n                    'card',\n                    'cash',\n                    'chatbox',\n                    'chatbox-working',\n                    'chatboxes',\n                    'chatbubble',\n                    'chatbubble-working',\n                    'chatbubbles',\n                    'checkmark',\n                    'checkmark-circled',\n                    'checkmark-round',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'clipboard',\n                    'clock',\n                    'close',\n                    'close-circled',\n                    'close-round',\n                    'closed-captioning',\n                    'cloud',\n                    'code',\n                    'code-download',\n                    'code-working',\n                    'coffee',\n                    'compass',\n                    'compose',\n                    'connection-bars',\n                    'contrast',\n                    'cube',\n                    'disc',\n                    'document',\n                    'document-text',\n                    'drag',\n                    'earth',\n                    'edit',\n                    'egg',\n                    'eject',\n                    'email',\n                    'eye',\n                    'eye-disabled',\n                    'female',\n                    'filing',\n                    'film-marker',\n                    'fireball',\n                    'flag',\n                    'flame',\n                    'flash',\n                    'flash-off',\n                    'flask',\n                    'folder',\n                    'fork',\n                    'fork-repo',\n                    'forward',\n                    'funnel',\n                    'game-controller-a',\n                    'game-controller-b',\n                    'gear-a',\n                    'gear-b',\n                    'grid',\n                    'hammer',\n                    'happy',\n                    'headphone',\n                    'heart',\n                    'heart-broken',\n                    'help',\n                    'help-buoy',\n                    'help-circled',\n                    'home',\n                    'icecream',\n                    'image',\n                    'images',\n                    'information',\n                    'information-circled',\n                    'ionic',\n                    'ios7-alarm',\n                    'ios7-alarm-outline',\n                    'ios7-albums',\n                    'ios7-albums-outline',\n                    'ios7-americanfootball',\n                    'ios7-americanfootball-outline',\n                    'ios7-analytics',\n                    'ios7-analytics-outline',\n                    'ios7-arrow-back',\n                    'ios7-arrow-down',\n                    'ios7-arrow-forward',\n                    'ios7-arrow-left',\n                    'ios7-arrow-right',\n                    'ios7-arrow-thin-down',\n                    'ios7-arrow-thin-left',\n                    'ios7-arrow-thin-right',\n                    'ios7-arrow-thin-up',\n                    'ios7-arrow-up',\n                    'ios7-at',\n                    'ios7-at-outline',\n                    'ios7-barcode',\n                    'ios7-barcode-outline',\n                    'ios7-baseball',\n                    'ios7-baseball-outline',\n                    'ios7-basketball',\n                    'ios7-basketball-outline',\n                    'ios7-bell',\n                    'ios7-bell-outline',\n                    'ios7-bolt',\n                    'ios7-bolt-outline',\n                    'ios7-bookmarks',\n                    'ios7-bookmarks-outline',\n                    'ios7-box',\n                    'ios7-box-outline',\n                    'ios7-briefcase',\n                    'ios7-briefcase-outline',\n                    'ios7-browsers',\n                    'ios7-browsers-outline',\n                    'ios7-calculator',\n                    'ios7-calculator-outline',\n                    'ios7-calendar',\n                    'ios7-calendar-outline',\n                    'ios7-camera',\n                    'ios7-camera-outline',\n                    'ios7-cart',\n                    'ios7-cart-outline',\n                    'ios7-chatboxes',\n                    'ios7-chatboxes-outline',\n                    'ios7-chatbubble',\n                    'ios7-chatbubble-outline',\n                    'ios7-checkmark',\n                    'ios7-checkmark-empty',\n                    'ios7-checkmark-outline',\n                    'ios7-circle-filled',\n                    'ios7-circle-outline',\n                    'ios7-clock',\n                    'ios7-clock-outline',\n                    'ios7-close',\n                    'ios7-close-empty',\n                    'ios7-close-outline',\n                    'ios7-cloud',\n                    'ios7-cloud-download',\n                    'ios7-cloud-download-outline',\n                    'ios7-cloud-outline',\n                    'ios7-cloud-upload',\n                    'ios7-cloud-upload-outline',\n                    'ios7-cloudy',\n                    'ios7-cloudy-night',\n                    'ios7-cloudy-night-outline',\n                    'ios7-cloudy-outline',\n                    'ios7-cog',\n                    'ios7-cog-outline',\n                    'ios7-compose',\n                    'ios7-compose-outline',\n                    'ios7-copy',\n                    'ios7-copy-outline',\n                    'ios7-download',\n                    'ios7-download-outline',\n                    'ios7-drag',\n                    'ios7-email',\n                    'ios7-email-outline',\n                    'ios7-eye',\n                    'ios7-eye-outline',\n                    'ios7-fastforward',\n                    'ios7-fastforward-outline',\n                    'ios7-filing',\n                    'ios7-filing-outline',\n                    'ios7-film',\n                    'ios7-film-outline',\n                    'ios7-flag',\n                    'ios7-flag-outline',\n                    'ios7-folder',\n                    'ios7-folder-outline',\n                    'ios7-football',\n                    'ios7-football-outline',\n                    'ios7-gear',\n                    'ios7-gear-outline',\n                    'ios7-glasses',\n                    'ios7-glasses-outline',\n                    'ios7-heart',\n                    'ios7-heart-outline',\n                    'ios7-help',\n                    'ios7-help-empty',\n                    'ios7-help-outline',\n                    'ios7-home',\n                    'ios7-home-outline',\n                    'ios7-infinite',\n                    'ios7-infinite-outline',\n                    'ios7-information',\n                    'ios7-information-empty',\n                    'ios7-information-outline',\n                    'ios7-ionic-outline',\n                    'ios7-keypad',\n                    'ios7-keypad-outline',\n                    'ios7-lightbulb',\n                    'ios7-lightbulb-outline',\n                    'ios7-location',\n                    'ios7-location-outline',\n                    'ios7-locked',\n                    'ios7-locked-outline',\n                    'ios7-loop',\n                    'ios7-loop-strong',\n                    'ios7-medkit',\n                    'ios7-medkit-outline',\n                    'ios7-mic',\n                    'ios7-mic-off',\n                    'ios7-mic-outline',\n                    'ios7-minus',\n                    'ios7-minus-empty',\n                    'ios7-minus-outline',\n                    'ios7-monitor',\n                    'ios7-monitor-outline',\n                    'ios7-moon',\n                    'ios7-moon-outline',\n                    'ios7-more',\n                    'ios7-more-outline',\n                    'ios7-musical-note',\n                    'ios7-musical-notes',\n                    'ios7-navigate',\n                    'ios7-navigate-outline',\n                    'ios7-paper',\n                    'ios7-paper-outline',\n                    'ios7-paperplane',\n                    'ios7-paperplane-outline',\n                    'ios7-partlysunny',\n                    'ios7-partlysunny-outline',\n                    'ios7-pause',\n                    'ios7-pause-outline',\n                    'ios7-paw',\n                    'ios7-paw-outline',\n                    'ios7-people',\n                    'ios7-people-outline',\n                    'ios7-person',\n                    'ios7-person-outline',\n                    'ios7-personadd',\n                    'ios7-personadd-outline',\n                    'ios7-photos',\n                    'ios7-photos-outline',\n                    'ios7-pie',\n                    'ios7-pie-outline',\n                    'ios7-play',\n                    'ios7-play-outline',\n                    'ios7-plus',\n                    'ios7-plus-empty',\n                    'ios7-plus-outline',\n                    'ios7-pricetag',\n                    'ios7-pricetag-outline',\n                    'ios7-pricetags',\n                    'ios7-pricetags-outline',\n                    'ios7-printer',\n                    'ios7-printer-outline',\n                    'ios7-pulse',\n                    'ios7-pulse-strong',\n                    'ios7-rainy',\n                    'ios7-rainy-outline',\n                    'ios7-recording',\n                    'ios7-recording-outline',\n                    'ios7-redo',\n                    'ios7-redo-outline',\n                    'ios7-refresh',\n                    'ios7-refresh-empty',\n                    'ios7-refresh-outline',\n                    'ios7-reload',\n                    'ios7-reloading',\n                    'ios7-reverse-camera',\n                    'ios7-reverse-camera-outline',\n                    'ios7-rewind',\n                    'ios7-rewind-outline',\n                    'ios7-search',\n                    'ios7-search-strong',\n                    'ios7-settings',\n                    'ios7-settings-strong',\n                    'ios7-skipbackward',\n                    'ios7-skipbackward-outline',\n                    'ios7-skipforward',\n                    'ios7-skipforward-outline',\n                    'ios7-snowy',\n                    'ios7-speedometer',\n                    'ios7-speedometer-outline',\n                    'ios7-star',\n                    'ios7-star-half',\n                    'ios7-star-outline',\n                    'ios7-stopwatch',\n                    'ios7-stopwatch-outline',\n                    'ios7-sunny',\n                    'ios7-sunny-outline',\n                    'ios7-telephone',\n                    'ios7-telephone-outline',\n                    'ios7-tennisball',\n                    'ios7-tennisball-outline',\n                    'ios7-thunderstorm',\n                    'ios7-thunderstorm-outline',\n                    'ios7-time',\n                    'ios7-time-outline',\n                    'ios7-timer',\n                    'ios7-timer-outline',\n                    'ios7-toggle',\n                    'ios7-toggle-outline',\n                    'ios7-trash',\n                    'ios7-trash-outline',\n                    'ios7-undo',\n                    'ios7-undo-outline',\n                    'ios7-unlocked',\n                    'ios7-unlocked-outline',\n                    'ios7-upload',\n                    'ios7-upload-outline',\n                    'ios7-videocam',\n                    'ios7-videocam-outline',\n                    'ios7-volume-high',\n                    'ios7-volume-low',\n                    'ios7-wineglass',\n                    'ios7-wineglass-outline',\n                    'ios7-world',\n                    'ios7-world-outline',\n                    'ipad',\n                    'iphone',\n                    'ipod',\n                    'jet',\n                    'key',\n                    'knife',\n                    'laptop',\n                    'leaf',\n                    'levels',\n                    'lightbulb',\n                    'link',\n                    'load-a',\n                    'load-b',\n                    'load-c',\n                    'load-d',\n                    'loading-a',\n                    'loading-b',\n                    'loading-c',\n                    'loading-d',\n                    'location',\n                    'locked',\n                    'log-in',\n                    'log-out',\n                    'loop',\n                    'looping',\n                    'magnet',\n                    'male',\n                    'man',\n                    'map',\n                    'medkit',\n                    'merge',\n                    'mic-a',\n                    'mic-b',\n                    'mic-c',\n                    'minus',\n                    'minus-circled',\n                    'minus-round',\n                    'model-s',\n                    'monitor',\n                    'more',\n                    'mouse',\n                    'music-note',\n                    'navicon',\n                    'navicon-round',\n                    'navigate',\n                    'network',\n                    'no-smoking',\n                    'nuclear',\n                    'outlet',\n                    'paper-airplane',\n                    'paperclip',\n                    'pause',\n                    'person',\n                    'person-add',\n                    'person-stalker',\n                    'pie-graph',\n                    'pin',\n                    'pinpoint',\n                    'pizza',\n                    'plane',\n                    'planet',\n                    'play',\n                    'playstation',\n                    'plus',\n                    'plus-circled',\n                    'plus-round',\n                    'podium',\n                    'pound',\n                    'power',\n                    'pricetag',\n                    'pricetags',\n                    'printer',\n                    'pull-request',\n                    'qr-scanner',\n                    'quote',\n                    'radio-waves',\n                    'record',\n                    'refresh',\n                    'refreshing',\n                    'reply',\n                    'reply-all',\n                    'ribbon-a',\n                    'ribbon-b',\n                    'sad',\n                    'scissors',\n                    'search',\n                    'settings',\n                    'share',\n                    'shuffle',\n                    'skip-backward',\n                    'skip-forward',\n                    'social-android',\n                    'social-android-outline',\n                    'social-apple',\n                    'social-apple-outline',\n                    'social-bitcoin',\n                    'social-bitcoin-outline',\n                    'social-buffer',\n                    'social-buffer-outline',\n                    'social-designernews',\n                    'social-designernews-outline',\n                    'social-dribbble',\n                    'social-dribbble-outline',\n                    'social-dropbox',\n                    'social-dropbox-outline',\n                    'social-facebook',\n                    'social-facebook-outline',\n                    'social-foursquare',\n                    'social-foursquare-outline',\n                    'social-freebsd-devil',\n                    'social-github',\n                    'social-github-outline',\n                    'social-google',\n                    'social-google-outline',\n                    'social-googleplus',\n                    'social-googleplus-outline',\n                    'social-hackernews',\n                    'social-hackernews-outline',\n                    'social-instagram',\n                    'social-instagram-outline',\n                    'social-linkedin',\n                    'social-linkedin-outline',\n                    'social-pinterest',\n                    'social-pinterest-outline',\n                    'social-reddit',\n                    'social-reddit-outline',\n                    'social-rss',\n                    'social-rss-outline',\n                    'social-skype',\n                    'social-skype-outline',\n                    'social-tumblr',\n                    'social-tumblr-outline',\n                    'social-tux',\n                    'social-twitter',\n                    'social-twitter-outline',\n                    'social-usd',\n                    'social-usd-outline',\n                    'social-vimeo',\n                    'social-vimeo-outline',\n                    'social-windows',\n                    'social-windows-outline',\n                    'social-wordpress',\n                    'social-wordpress-outline',\n                    'social-yahoo',\n                    'social-yahoo-outline',\n                    'social-youtube',\n                    'social-youtube-outline',\n                    'speakerphone',\n                    'speedometer',\n                    'spoon',\n                    'star',\n                    'stats-bars',\n                    'steam',\n                    'stop',\n                    'thermometer',\n                    'thumbsdown',\n                    'thumbsup',\n                    'toggle',\n                    'toggle-filled',\n                    'trash-a',\n                    'trash-b',\n                    'trophy',\n                    'umbrella',\n                    'university',\n                    'unlocked',\n                    'upload',\n                    'usb',\n                    'videocamera',\n                    'volume-high',\n                    'volume-low',\n                    'volume-medium',\n                    'volume-mute',\n                    'wand',\n                    'waterdrop',\n                    'wifi',\n                    'wineglass',\n                    'woman',\n                    'wrench',\n                    'xbox'\n                ]\n            },\n            {\n                version: '2.0.1',\n                icons: [\n                    '',\n                    'alert',\n                    'alert-circled',\n                    'android-add',\n                    'android-add-circle',\n                    'android-alarm-clock',\n                    'android-alert',\n                    'android-apps',\n                    'android-archive',\n                    'android-arrow-back',\n                    'android-arrow-down',\n                    'android-arrow-dropdown',\n                    'android-arrow-dropdown-circle',\n                    'android-arrow-dropleft',\n                    'android-arrow-dropleft-circle',\n                    'android-arrow-dropright',\n                    'android-arrow-dropright-circle',\n                    'android-arrow-dropup',\n                    'android-arrow-dropup-circle',\n                    'android-arrow-forward',\n                    'android-arrow-up',\n                    'android-attach',\n                    'android-bar',\n                    'android-bicycle',\n                    'android-boat',\n                    'android-bookmark',\n                    'android-bulb',\n                    'android-bus',\n                    'android-calendar',\n                    'android-call',\n                    'android-camera',\n                    'android-cancel',\n                    'android-car',\n                    'android-cart',\n                    'android-chat',\n                    'android-checkbox',\n                    'android-checkbox-blank',\n                    'android-checkbox-outline',\n                    'android-checkbox-outline-blank',\n                    'android-checkmark-circle',\n                    'android-clipboard',\n                    'android-close',\n                    'android-cloud',\n                    'android-cloud-circle',\n                    'android-cloud-done',\n                    'android-cloud-outline',\n                    'android-color-palette',\n                    'android-compass',\n                    'android-contact',\n                    'android-contacts',\n                    'android-contract',\n                    'android-create',\n                    'android-delete',\n                    'android-desktop',\n                    'android-document',\n                    'android-done',\n                    'android-done-all',\n                    'android-download',\n                    'android-drafts',\n                    'android-exit',\n                    'android-expand',\n                    'android-favorite',\n                    'android-favorite-outline',\n                    'android-film',\n                    'android-folder',\n                    'android-folder-open',\n                    'android-funnel',\n                    'android-globe',\n                    'android-hand',\n                    'android-hangout',\n                    'android-happy',\n                    'android-home',\n                    'android-image',\n                    'android-laptop',\n                    'android-list',\n                    'android-locate',\n                    'android-lock',\n                    'android-mail',\n                    'android-map',\n                    'android-menu',\n                    'android-microphone',\n                    'android-microphone-off',\n                    'android-more-horizontal',\n                    'android-more-vertical',\n                    'android-navigate',\n                    'android-notifications',\n                    'android-notifications-none',\n                    'android-notifications-off',\n                    'android-open',\n                    'android-options',\n                    'android-people',\n                    'android-person',\n                    'android-person-add',\n                    'android-phone-landscape',\n                    'android-phone-portrait',\n                    'android-pin',\n                    'android-plane',\n                    'android-playstore',\n                    'android-print',\n                    'android-radio-button-off',\n                    'android-radio-button-on',\n                    'android-refresh',\n                    'android-remove',\n                    'android-remove-circle',\n                    'android-restaurant',\n                    'android-sad',\n                    'android-search',\n                    'android-send',\n                    'android-settings',\n                    'android-share',\n                    'android-share-alt',\n                    'android-star',\n                    'android-star-half',\n                    'android-star-outline',\n                    'android-stopwatch',\n                    'android-subway',\n                    'android-sunny',\n                    'android-sync',\n                    'android-textsms',\n                    'android-time',\n                    'android-train',\n                    'android-unlock',\n                    'android-upload',\n                    'android-volume-down',\n                    'android-volume-mute',\n                    'android-volume-off',\n                    'android-volume-up',\n                    'android-walk',\n                    'android-warning',\n                    'android-watch',\n                    'android-wifi',\n                    'aperture',\n                    'archive',\n                    'arrow-down-a',\n                    'arrow-down-b',\n                    'arrow-down-c',\n                    'arrow-expand',\n                    'arrow-graph-down-left',\n                    'arrow-graph-down-right',\n                    'arrow-graph-up-left',\n                    'arrow-graph-up-right',\n                    'arrow-left-a',\n                    'arrow-left-b',\n                    'arrow-left-c',\n                    'arrow-move',\n                    'arrow-resize',\n                    'arrow-return-left',\n                    'arrow-return-right',\n                    'arrow-right-a',\n                    'arrow-right-b',\n                    'arrow-right-c',\n                    'arrow-shrink',\n                    'arrow-swap',\n                    'arrow-up-a',\n                    'arrow-up-b',\n                    'arrow-up-c',\n                    'asterisk',\n                    'at',\n                    'backspace',\n                    'backspace-outline',\n                    'bag',\n                    'battery-charging',\n                    'battery-empty',\n                    'battery-full',\n                    'battery-half',\n                    'battery-low',\n                    'beaker',\n                    'beer',\n                    'bluetooth',\n                    'bonfire',\n                    'bookmark',\n                    'bowtie',\n                    'briefcase',\n                    'bug',\n                    'calculator',\n                    'calendar',\n                    'camera',\n                    'card',\n                    'cash',\n                    'chatbox',\n                    'chatbox-working',\n                    'chatboxes',\n                    'chatbubble',\n                    'chatbubble-working',\n                    'chatbubbles',\n                    'checkmark',\n                    'checkmark-circled',\n                    'checkmark-round',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'clipboard',\n                    'clock',\n                    'close',\n                    'close-circled',\n                    'close-round',\n                    'closed-captioning',\n                    'cloud',\n                    'code',\n                    'code-download',\n                    'code-working',\n                    'coffee',\n                    'compass',\n                    'compose',\n                    'connection-bars',\n                    'contrast',\n                    'crop',\n                    'cube',\n                    'disc',\n                    'document',\n                    'document-text',\n                    'drag',\n                    'earth',\n                    'easel',\n                    'edit',\n                    'egg',\n                    'eject',\n                    'email',\n                    'email-unread',\n                    'erlenmeyer-flask',\n                    'erlenmeyer-flask-bubbles',\n                    'eye',\n                    'eye-disabled',\n                    'female',\n                    'filing',\n                    'film-marker',\n                    'fireball',\n                    'flag',\n                    'flame',\n                    'flash',\n                    'flash-off',\n                    'folder',\n                    'fork',\n                    'fork-repo',\n                    'forward',\n                    'funnel',\n                    'gear-a',\n                    'gear-b',\n                    'grid',\n                    'hammer',\n                    'happy',\n                    'happy-outline',\n                    'headphone',\n                    'heart',\n                    'heart-broken',\n                    'help',\n                    'help-buoy',\n                    'help-circled',\n                    'home',\n                    'icecream',\n                    'image',\n                    'images',\n                    'information',\n                    'information-circled',\n                    'ionic',\n                    'ios-alarm',\n                    'ios-alarm-outline',\n                    'ios-albums',\n                    'ios-albums-outline',\n                    'ios-americanfootball',\n                    'ios-americanfootball-outline',\n                    'ios-analytics',\n                    'ios-analytics-outline',\n                    'ios-arrow-back',\n                    'ios-arrow-down',\n                    'ios-arrow-forward',\n                    'ios-arrow-left',\n                    'ios-arrow-right',\n                    'ios-arrow-thin-down',\n                    'ios-arrow-thin-left',\n                    'ios-arrow-thin-right',\n                    'ios-arrow-thin-up',\n                    'ios-arrow-up',\n                    'ios-at',\n                    'ios-at-outline',\n                    'ios-barcode',\n                    'ios-barcode-outline',\n                    'ios-baseball',\n                    'ios-baseball-outline',\n                    'ios-basketball',\n                    'ios-basketball-outline',\n                    'ios-bell',\n                    'ios-bell-outline',\n                    'ios-body',\n                    'ios-body-outline',\n                    'ios-bolt',\n                    'ios-bolt-outline',\n                    'ios-book',\n                    'ios-book-outline',\n                    'ios-bookmarks',\n                    'ios-bookmarks-outline',\n                    'ios-box',\n                    'ios-box-outline',\n                    'ios-briefcase',\n                    'ios-briefcase-outline',\n                    'ios-browsers',\n                    'ios-browsers-outline',\n                    'ios-calculator',\n                    'ios-calculator-outline',\n                    'ios-calendar',\n                    'ios-calendar-outline',\n                    'ios-camera',\n                    'ios-camera-outline',\n                    'ios-cart',\n                    'ios-cart-outline',\n                    'ios-chatboxes',\n                    'ios-chatboxes-outline',\n                    'ios-chatbubble',\n                    'ios-chatbubble-outline',\n                    'ios-checkmark',\n                    'ios-checkmark-empty',\n                    'ios-checkmark-outline',\n                    'ios-circle-filled',\n                    'ios-circle-outline',\n                    'ios-clock',\n                    'ios-clock-outline',\n                    'ios-close',\n                    'ios-close-empty',\n                    'ios-close-outline',\n                    'ios-cloud',\n                    'ios-cloud-download',\n                    'ios-cloud-download-outline',\n                    'ios-cloud-outline',\n                    'ios-cloud-upload',\n                    'ios-cloud-upload-outline',\n                    'ios-cloudy',\n                    'ios-cloudy-night',\n                    'ios-cloudy-night-outline',\n                    'ios-cloudy-outline',\n                    'ios-cog',\n                    'ios-cog-outline',\n                    'ios-color-filter',\n                    'ios-color-filter-outline',\n                    'ios-color-wand',\n                    'ios-color-wand-outline',\n                    'ios-compose',\n                    'ios-compose-outline',\n                    'ios-contact',\n                    'ios-contact-outline',\n                    'ios-copy',\n                    'ios-copy-outline',\n                    'ios-crop',\n                    'ios-crop-strong',\n                    'ios-download',\n                    'ios-download-outline',\n                    'ios-drag',\n                    'ios-email',\n                    'ios-email-outline',\n                    'ios-eye',\n                    'ios-eye-outline',\n                    'ios-fastforward',\n                    'ios-fastforward-outline',\n                    'ios-filing',\n                    'ios-filing-outline',\n                    'ios-film',\n                    'ios-film-outline',\n                    'ios-flag',\n                    'ios-flag-outline',\n                    'ios-flame',\n                    'ios-flame-outline',\n                    'ios-flask',\n                    'ios-flask-outline',\n                    'ios-flower',\n                    'ios-flower-outline',\n                    'ios-folder',\n                    'ios-folder-outline',\n                    'ios-football',\n                    'ios-football-outline',\n                    'ios-game-controller-a',\n                    'ios-game-controller-a-outline',\n                    'ios-game-controller-b',\n                    'ios-game-controller-b-outline',\n                    'ios-gear',\n                    'ios-gear-outline',\n                    'ios-glasses',\n                    'ios-glasses-outline',\n                    'ios-grid-view',\n                    'ios-grid-view-outline',\n                    'ios-heart',\n                    'ios-heart-outline',\n                    'ios-help',\n                    'ios-help-empty',\n                    'ios-help-outline',\n                    'ios-home',\n                    'ios-home-outline',\n                    'ios-infinite',\n                    'ios-infinite-outline',\n                    'ios-information',\n                    'ios-information-empty',\n                    'ios-information-outline',\n                    'ios-ionic-outline',\n                    'ios-keypad',\n                    'ios-keypad-outline',\n                    'ios-lightbulb',\n                    'ios-lightbulb-outline',\n                    'ios-list',\n                    'ios-list-outline',\n                    'ios-location',\n                    'ios-location-outline',\n                    'ios-locked',\n                    'ios-locked-outline',\n                    'ios-loop',\n                    'ios-loop-strong',\n                    'ios-medical',\n                    'ios-medical-outline',\n                    'ios-medkit',\n                    'ios-medkit-outline',\n                    'ios-mic',\n                    'ios-mic-off',\n                    'ios-mic-outline',\n                    'ios-minus',\n                    'ios-minus-empty',\n                    'ios-minus-outline',\n                    'ios-monitor',\n                    'ios-monitor-outline',\n                    'ios-moon',\n                    'ios-moon-outline',\n                    'ios-more',\n                    'ios-more-outline',\n                    'ios-musical-note',\n                    'ios-musical-notes',\n                    'ios-navigate',\n                    'ios-navigate-outline',\n                    'ios-nutrition',\n                    'ios-nutrition-outline',\n                    'ios-paper',\n                    'ios-paper-outline',\n                    'ios-paperplane',\n                    'ios-paperplane-outline',\n                    'ios-partlysunny',\n                    'ios-partlysunny-outline',\n                    'ios-pause',\n                    'ios-pause-outline',\n                    'ios-paw',\n                    'ios-paw-outline',\n                    'ios-people',\n                    'ios-people-outline',\n                    'ios-person',\n                    'ios-person-outline',\n                    'ios-personadd',\n                    'ios-personadd-outline',\n                    'ios-photos',\n                    'ios-photos-outline',\n                    'ios-pie',\n                    'ios-pie-outline',\n                    'ios-pint',\n                    'ios-pint-outline',\n                    'ios-play',\n                    'ios-play-outline',\n                    'ios-plus',\n                    'ios-plus-empty',\n                    'ios-plus-outline',\n                    'ios-pricetag',\n                    'ios-pricetag-outline',\n                    'ios-pricetags',\n                    'ios-pricetags-outline',\n                    'ios-printer',\n                    'ios-printer-outline',\n                    'ios-pulse',\n                    'ios-pulse-strong',\n                    'ios-rainy',\n                    'ios-rainy-outline',\n                    'ios-recording',\n                    'ios-recording-outline',\n                    'ios-redo',\n                    'ios-redo-outline',\n                    'ios-refresh',\n                    'ios-refresh-empty',\n                    'ios-refresh-outline',\n                    'ios-reload',\n                    'ios-reverse-camera',\n                    'ios-reverse-camera-outline',\n                    'ios-rewind',\n                    'ios-rewind-outline',\n                    'ios-rose',\n                    'ios-rose-outline',\n                    'ios-search',\n                    'ios-search-strong',\n                    'ios-settings',\n                    'ios-settings-strong',\n                    'ios-shuffle',\n                    'ios-shuffle-strong',\n                    'ios-skipbackward',\n                    'ios-skipbackward-outline',\n                    'ios-skipforward',\n                    'ios-skipforward-outline',\n                    'ios-snowy',\n                    'ios-speedometer',\n                    'ios-speedometer-outline',\n                    'ios-star',\n                    'ios-star-half',\n                    'ios-star-outline',\n                    'ios-stopwatch',\n                    'ios-stopwatch-outline',\n                    'ios-sunny',\n                    'ios-sunny-outline',\n                    'ios-telephone',\n                    'ios-telephone-outline',\n                    'ios-tennisball',\n                    'ios-tennisball-outline',\n                    'ios-thunderstorm',\n                    'ios-thunderstorm-outline',\n                    'ios-time',\n                    'ios-time-outline',\n                    'ios-timer',\n                    'ios-timer-outline',\n                    'ios-toggle',\n                    'ios-toggle-outline',\n                    'ios-trash',\n                    'ios-trash-outline',\n                    'ios-undo',\n                    'ios-undo-outline',\n                    'ios-unlocked',\n                    'ios-unlocked-outline',\n                    'ios-upload',\n                    'ios-upload-outline',\n                    'ios-videocam',\n                    'ios-videocam-outline',\n                    'ios-volume-high',\n                    'ios-volume-low',\n                    'ios-wineglass',\n                    'ios-wineglass-outline',\n                    'ios-world',\n                    'ios-world-outline',\n                    'ipad',\n                    'iphone',\n                    'ipod',\n                    'jet',\n                    'key',\n                    'knife',\n                    'laptop',\n                    'leaf',\n                    'levels',\n                    'lightbulb',\n                    'link',\n                    'load-a',\n                    'load-b',\n                    'load-c',\n                    'load-d',\n                    'location',\n                    'lock-combination',\n                    'locked',\n                    'log-in',\n                    'log-out',\n                    'loop',\n                    'magnet',\n                    'male',\n                    'man',\n                    'map',\n                    'medkit',\n                    'merge',\n                    'mic-a',\n                    'mic-b',\n                    'mic-c',\n                    'minus',\n                    'minus-circled',\n                    'minus-round',\n                    'model-s',\n                    'monitor',\n                    'more',\n                    'mouse',\n                    'music-note',\n                    'navicon',\n                    'navicon-round',\n                    'navigate',\n                    'network',\n                    'no-smoking',\n                    'nuclear',\n                    'outlet',\n                    'paintbrush',\n                    'paintbucket',\n                    'paper-airplane',\n                    'paperclip',\n                    'pause',\n                    'person',\n                    'person-add',\n                    'person-stalker',\n                    'pie-graph',\n                    'pin',\n                    'pinpoint',\n                    'pizza',\n                    'plane',\n                    'planet',\n                    'play',\n                    'playstation',\n                    'plus',\n                    'plus-circled',\n                    'plus-round',\n                    'podium',\n                    'pound',\n                    'power',\n                    'pricetag',\n                    'pricetags',\n                    'printer',\n                    'pull-request',\n                    'qr-scanner',\n                    'quote',\n                    'radio-waves',\n                    'record',\n                    'refresh',\n                    'reply',\n                    'reply-all',\n                    'ribbon-a',\n                    'ribbon-b',\n                    'sad',\n                    'sad-outline',\n                    'scissors',\n                    'search',\n                    'settings',\n                    'share',\n                    'shuffle',\n                    'skip-backward',\n                    'skip-forward',\n                    'social-android',\n                    'social-android-outline',\n                    'social-angular',\n                    'social-angular-outline',\n                    'social-apple',\n                    'social-apple-outline',\n                    'social-bitcoin',\n                    'social-bitcoin-outline',\n                    'social-buffer',\n                    'social-buffer-outline',\n                    'social-chrome',\n                    'social-chrome-outline',\n                    'social-codepen',\n                    'social-codepen-outline',\n                    'social-css3',\n                    'social-css3-outline',\n                    'social-designernews',\n                    'social-designernews-outline',\n                    'social-dribbble',\n                    'social-dribbble-outline',\n                    'social-dropbox',\n                    'social-dropbox-outline',\n                    'social-euro',\n                    'social-euro-outline',\n                    'social-facebook',\n                    'social-facebook-outline',\n                    'social-foursquare',\n                    'social-foursquare-outline',\n                    'social-freebsd-devil',\n                    'social-github',\n                    'social-github-outline',\n                    'social-google',\n                    'social-google-outline',\n                    'social-googleplus',\n                    'social-googleplus-outline',\n                    'social-hackernews',\n                    'social-hackernews-outline',\n                    'social-html5',\n                    'social-html5-outline',\n                    'social-instagram',\n                    'social-instagram-outline',\n                    'social-javascript',\n                    'social-javascript-outline',\n                    'social-linkedin',\n                    'social-linkedin-outline',\n                    'social-markdown',\n                    'social-nodejs',\n                    'social-octocat',\n                    'social-pinterest',\n                    'social-pinterest-outline',\n                    'social-python',\n                    'social-reddit',\n                    'social-reddit-outline',\n                    'social-rss',\n                    'social-rss-outline',\n                    'social-sass',\n                    'social-skype',\n                    'social-skype-outline',\n                    'social-snapchat',\n                    'social-snapchat-outline',\n                    'social-tumblr',\n                    'social-tumblr-outline',\n                    'social-tux',\n                    'social-twitch',\n                    'social-twitch-outline',\n                    'social-twitter',\n                    'social-twitter-outline',\n                    'social-usd',\n                    'social-usd-outline',\n                    'social-vimeo',\n                    'social-vimeo-outline',\n                    'social-whatsapp',\n                    'social-whatsapp-outline',\n                    'social-windows',\n                    'social-windows-outline',\n                    'social-wordpress',\n                    'social-wordpress-outline',\n                    'social-yahoo',\n                    'social-yahoo-outline',\n                    'social-yen',\n                    'social-yen-outline',\n                    'social-youtube',\n                    'social-youtube-outline',\n                    'soup-can',\n                    'soup-can-outline',\n                    'speakerphone',\n                    'speedometer',\n                    'spoon',\n                    'star',\n                    'stats-bars',\n                    'steam',\n                    'stop',\n                    'thermometer',\n                    'thumbsdown',\n                    'thumbsup',\n                    'toggle',\n                    'toggle-filled',\n                    'transgender',\n                    'trash-a',\n                    'trash-b',\n                    'trophy',\n                    'tshirt',\n                    'tshirt-outline',\n                    'umbrella',\n                    'university',\n                    'unlocked',\n                    'upload',\n                    'usb',\n                    'videocamera',\n                    'volume-high',\n                    'volume-low',\n                    'volume-medium',\n                    'volume-mute',\n                    'wand',\n                    'waterdrop',\n                    'wifi',\n                    'wineglass',\n                    'woman',\n                    'wrench',\n                    'xbox'\n                ]\n            }\n        ]\n    };\n\n    var l = data.allVersions.length;\n    data.icons = data.allVersions[l-1].icons;\n\n    $.iconset_ionicon = data;\n\n})(jQuery);\n\n/*!========================================================================\n * Iconset: Map Icons\n * Versions: 2.1.0\n * https://github.com/scottdejonge/Map-Icons\n * ======================================================================== */\n\n;(function($){\n\n    var data = {\n        iconClass: '',\n        iconClassFix: 'map-icon-',\n        icons: [],\n        allVersions: [\n            {\n                version: '2.1.0',\n                icons: [\n                    '',\n                    'abseiling',\n                    'accounting',\n                    'airport',\n                    'amusement-park',\n                    'aquarium',\n                    'archery',\n                    'art-gallery',\n                    'assistive-listening-system',\n                    'atm',\n                    'audio-description',\n                    'bakery',\n                    'bank',\n                    'bar',\n                    'baseball',\n                    'beauty-salon',\n                    'bicycle-store',\n                    'bicycling',\n                    'boat-ramp',\n                    'boat-tour',\n                    'boating',\n                    'book-store',\n                    'bowling-alley',\n                    'braille',\n                    'bus-station',\n                    'cafe',\n                    'campground',\n                    'canoe',\n                    'car-dealer',\n                    'car-rental',\n                    'car-repair',\n                    'car-wash',\n                    'casino',\n                    'cemetery',\n                    'chairlift',\n                    'church',\n                    'circle',\n                    'city-hall',\n                    'climbing',\n                    'closed-captioning',\n                    'clothing-store',\n                    'compass',\n                    'convenience-store',\n                    'courthouse',\n                    'cross-country-skiing',\n                    'crosshairs',\n                    'dentist',\n                    'department-store',\n                    'diving',\n                    'doctor',\n                    'electrician',\n                    'electronics-store',\n                    'embassy',\n                    'expand',\n                    'female',\n                    'finance',\n                    'fire-station',\n                    'fish-cleaning',\n                    'fishing',\n                    'fishing-pier',\n                    'florist',\n                    'food',\n                    'fullscreen',\n                    'funeral-home',\n                    'furniture-store',\n                    'gas-station',\n                    'general-contractor',\n                    'golf',\n                    'grocery-or-supermarket',\n                    'gym',\n                    'hair-care',\n                    'hang-gliding',\n                    'hardware-store',\n                    'health',\n                    'hindu-temple',\n                    'horse-riding',\n                    'hospital',\n                    'ice-fishing',\n                    'ice-skating',\n                    'inline-skating',\n                    'insurance-agency',\n                    'jet-skiing',\n                    'jewelry-store',\n                    'kayaking',\n                    'laundry',\n                    'lawyer',\n                    'library',\n                    'liquor-store',\n                    'local-government',\n                    'location-arrow',\n                    'locksmith',\n                    'lodging',\n                    'low-vision-access',\n                    'male',\n                    'map-pin',\n                    'marina',\n                    'mosque',\n                    'motobike-trail',\n                    'movie-rental',\n                    'movie-theater',\n                    'moving-company',\n                    'museum',\n                    'natural-feature',\n                    'night-club',\n                    'open-captioning',\n                    'painter',\n                    'park',\n                    'parking',\n                    'pet-store',\n                    'pharmacy',\n                    'physiotherapist',\n                    'place-of-worship',\n                    'playground',\n                    'plumber',\n                    'point-of-interest',\n                    'police',\n                    'political',\n                    'post-box',\n                    'post-office',\n                    'postal-code',\n                    'postal-code-prefix',\n                    'rafting',\n                    'real-estate-agency',\n                    'restaurant',\n                    'roofing-contractor',\n                    'route',\n                    'route-pin',\n                    'rv-park',\n                    'sailing',\n                    'school',\n                    'scuba-diving',\n                    'search',\n                    'sheild',\n                    'shopping-mall',\n                    'sign-language',\n                    'skateboarding',\n                    'ski-jumping',\n                    'skiing',\n                    'sledding',\n                    'snow',\n                    'snow-shoeing',\n                    'snowboarding',\n                    'snowmobile',\n                    'spa',\n                    'square',\n                    'square-pin',\n                    'square-rounded',\n                    'stadium',\n                    'storage',\n                    'store',\n                    'subway-station',\n                    'surfing',\n                    'swimming',\n                    'synagogue',\n                    'taxi-stand',\n                    'tennis',\n                    'toilet',\n                    'trail-walking',\n                    'train-station',\n                    'transit-station',\n                    'travel-agency',\n                    'unisex',\n                    'university',\n                    'veterinary-care',\n                    'viewing',\n                    'volume-control-telephone',\n                    'walking',\n                    'waterskiing',\n                    'whale-watching',\n                    'wheelchair',\n                    'wind-surfing',\n                    'zoo',\n                    'zoom-in',\n                    'zoom-in-alt',\n                    'zoom-out',\n                    'zoom-out-alt'\n                ]\n            }\n        ]\n    };\n\n    var l = data.allVersions.length;\n    data.icons = data.allVersions[l-1].icons;\n\n    $.iconset_mapicon = data;\n\n})(jQuery);\n\n/*!========================================================================\n * Iconset: Material Design\n * Versions: 2.0.0, 2.0.1, 2.0.2, 2.1.0, 2.1.1, 2.1.2, 2.2.0\n * http://zavoloklom.github.io/material-design-iconic-font\n * CDN: https://cdnjs.cloudflare.com/ajax/libs/material-design-iconic-font/[VERSION]/css/material-design-iconic-font.min.css\n * ======================================================================== */\n\n;(function($){\n\n    var data = {\n        iconClass: 'zmdi',\n        iconClassFix: 'zmdi-',\n        icons: [],\n        allVersions: [\n            {\n                version: '2.0.0',\n                icons: [\n                    '',\n                    //'zmdi',\n                    '3d-rotation',\n                    'account',\n                    'account-add',\n                    'account-box',\n                    'account-box-mail',\n                    'account-box-o',\n                    'account-box-phone',\n                    'account-calendar',\n                    'account-circle',\n                    'account-o',\n                    'accounts',\n                    'accounts-add',\n                    'accounts-alt',\n                    'accounts-list',\n                    'accounts-list-alt',\n                    'accounts-outline',\n                    'airline-seat-flat',\n                    'airline-seat-flat-angled',\n                    'airline-seat-individual-suite',\n                    'airline-seat-legroom-extra',\n                    'airline-seat-legroom-normal',\n                    'airline-seat-legroom-reduced',\n                    'airline-seat-recline-extra',\n                    'airline-seat-recline-normal',\n                    'airplay',\n                    'alarm',\n                    'alarm-check',\n                    'alarm-off',\n                    'alarm-snooze',\n                    'album',\n                    'alert-circle',\n                    'alert-circle-o',\n                    'alert-octagon',\n                    'alert-polygon',\n                    'alert-triangle',\n                    'android',\n                    'apps',\n                    'archive',\n                    'arrow-merge',\n                    'arrow-missed',\n                    'arrow-split',\n                    'arrows',\n                    'aspect-ratio',\n                    'aspect-ratio-alt',\n                    'assignment',\n                    'assignment-account',\n                    'assignment-alert',\n                    'assignment-check',\n                    'assignment-o',\n                    'assignment-return',\n                    'assignment-returned',\n                    'attachment',\n                    'attachment-alt',\n                    'audio',\n                    'badge-check',\n                    'balance',\n                    'balance-wallet',\n                    'battery',\n                    'battery-alert',\n                    'battery-unknown',\n                    'block',\n                    'block-alt',\n                    'bluetooth',\n                    'bluetooth-connected',\n                    'bluetooth-off',\n                    'bluetooth-search',\n                    'bluetooth-setting',\n                    'blur',\n                    'blur-circular',\n                    'blur-linear',\n                    'blur-off',\n                    'book',\n                    'bookmark',\n                    'bookmark-outline',\n                    'border-all',\n                    'border-bottom',\n                    'border-clear',\n                    'border-color',\n                    'border-horizontal',\n                    'border-inner',\n                    'border-left',\n                    'border-outer',\n                    'border-right',\n                    'border-style',\n                    'border-top',\n                    'border-vertical',\n                    'brightness-2',\n                    'brightness-3',\n                    'brightness-4',\n                    'brightness-5',\n                    'brightness-6',\n                    'brightness-7',\n                    'brightness-auto',\n                    'brightness-high',\n                    'brightness-setting',\n                    'broken-image',\n                    'brush',\n                    'bug',\n                    'cake',\n                    'calendar',\n                    'calendar-alt',\n                    'calendar-check',\n                    'calendar-note',\n                    'camera',\n                    'camera-add',\n                    'camera-alt',\n                    'camera-front',\n                    'camera-mic',\n                    'camera-party-mode',\n                    'camera-rear',\n                    'camera-roll',\n                    'camera-switch',\n                    'card',\n                    'card-alert',\n                    'card-giftcard',\n                    'card-membership',\n                    'card-off',\n                    'card-sd',\n                    'card-sim',\n                    'card-travel',\n                    'caret-down',\n                    'caret-down-circle',\n                    'caret-up',\n                    'case',\n                    'case-play',\n                    'cast',\n                    'cast-connected',\n                    'center-focus-strong',\n                    'center-focus-weak',\n                    'chart',\n                    'chart-donut',\n                    'check',\n                    'check-all',\n                    'check-circle',\n                    'check-circle-u',\n                    'check-square',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle',\n                    'circle-o',\n                    'city',\n                    'city-alt',\n                    'close',\n                    'close-circle',\n                    'close-circle-o',\n                    'closed-caption',\n                    'cloud',\n                    'cloud-circle',\n                    'cloud-done',\n                    'cloud-download',\n                    'cloud-off',\n                    'cloud-outline',\n                    'cloud-outline-alt',\n                    'cloud-upload',\n                    'code',\n                    'code-setting',\n                    'code-smartphone',\n                    'collection-bookmark',\n                    'collection-case-play',\n                    'collection-folder-image',\n                    'collection-image',\n                    'collection-image-o',\n                    'collection-item',\n                    'collection-item-1',\n                    'collection-item-2',\n                    'collection-item-3',\n                    'collection-item-4',\n                    'collection-item-5',\n                    'collection-item-6',\n                    'collection-item-7',\n                    'collection-item-8',\n                    'collection-item-9',\n                    'collection-item-9-plus',\n                    'collection-music',\n                    'collection-pdf',\n                    'collection-speaker',\n                    'collection-text',\n                    'collection-video',\n                    'comment',\n                    'comment-alert',\n                    'comment-alt',\n                    'comment-alt-text',\n                    'comment-image',\n                    'comment-list',\n                    'comment-outline',\n                    'comment-text',\n                    'comment-text-alt',\n                    'comment-video',\n                    'comments',\n                    'compare',\n                    'compass',\n                    'confirmation-number',\n                    'copy',\n                    'crop',\n                    'crop-16-9',\n                    'crop-3-2',\n                    'crop-5-4',\n                    'crop-7-5',\n                    'crop-din',\n                    'crop-free',\n                    'crop-landscape',\n                    'crop-portrait',\n                    'crop-square',\n                    'delete',\n                    'desktop-mac',\n                    'desktop-windows',\n                    'developer-board',\n                    'device-hub',\n                    'devices',\n                    'devices-off',\n                    'dialpad',\n                    'directions',\n                    'directions-bike',\n                    'directions-boat',\n                    'directions-bus',\n                    'directions-car',\n                    'directions-railway',\n                    'directions-run',\n                    'directions-subway',\n                    'directions-walk',\n                    'disc-full',\n                    'dns',\n                    'dock',\n                    'dot-circle',\n                    'dot-circle-alt',\n                    'download',\n                    'edit',\n                    'eject',\n                    'eject-alt',\n                    'email',\n                    'email-open',\n                    'equalizer',\n                    'explicit',\n                    'exposure',\n                    'exposure-alt',\n                    'eye',\n                    'eye-off',\n                    'face',\n                    'fast-forward',\n                    'fast-rewind',\n                    'favorite',\n                    'favorite-outline',\n                    'file',\n                    'file-text',\n                    'filter-b-and-w',\n                    'filter-center-focus',\n                    'filter-frames',\n                    'filter-list',\n                    'filter-tilt-shift',\n                    'fire',\n                    'flag',\n                    'flare',\n                    'flash',\n                    'flash-auto',\n                    'flash-off',\n                    'flight-land',\n                    'flight-takeoff',\n                    'flip',\n                    'flip-to-back',\n                    'flip-to-front',\n                    'flower',\n                    'folder',\n                    'folder-outline',\n                    'font',\n                    'format-align-center',\n                    'format-align-justify',\n                    'format-align-left',\n                    'format-align-right',\n                    'format-bold',\n                    'format-clear',\n                    'format-clear-all',\n                    'format-color-fill',\n                    'format-color-reset',\n                    'format-color-text',\n                    'format-indent-decrease',\n                    'format-indent-increase',\n                    'format-italic',\n                    'format-line-spacing',\n                    'format-list-bulleted',\n                    'format-list-numbered',\n                    'format-size',\n                    'format-strikethrough',\n                    'format-strikethrough-s',\n                    'format-subject',\n                    'format-underlined',\n                    'format-valign-bottom',\n                    'format-valign-center',\n                    'format-valign-top',\n                    'forward',\n                    'forward-10',\n                    'forward-30',\n                    'forward-5',\n                    'fullscreen',\n                    'fullscreen-alt',\n                    'fullscreen-exit',\n                    'functions',\n                    'gamepad',\n                    'gesture',\n                    'gif',\n                    'globe',\n                    'globe-alt',\n                    'globe-lock',\n                    'gps',\n                    'gps-dot',\n                    'gps-off',\n                    'gradient',\n                    'graduation-cap',\n                    'grain',\n                    'graphic-eq',\n                    'grid',\n                    'grid-off',\n                    'group-work',\n                    'hd',\n                    'hdr',\n                    'hdr-off',\n                    'hdr-strong',\n                    'hdr-weak',\n                    'headset',\n                    'headset-mic',\n                    'hearing',\n                    'help',\n                    'help-outline',\n                    'home',\n                    'hotel',\n                    'hourglass',\n                    'hourglass-outline',\n                    'hq',\n                    'http',\n                    'image',\n                    'image-alt',\n                    'inbox',\n                    'info',\n                    'info-outline',\n                    'input-antenna',\n                    'input-composite',\n                    'input-hdmi',\n                    'input-power',\n                    'input-svideo',\n                    'invert-colors',\n                    'invert-colors-off',\n                    'key',\n                    'keyboard',\n                    'keyboard-hide',\n                    'label',\n                    'label-heart',\n                    'labels',\n                    'landscape',\n                    'laptop',\n                    'laptop-chromebook',\n                    'laptop-mac',\n                    'layers',\n                    'leak',\n                    'link',\n                    'local-activity',\n                    'local-airport',\n                    'local-atm',\n                    'local-bar',\n                    'local-cafe',\n                    'local-car-wash',\n                    'local-convenience-store',\n                    'local-dining',\n                    'local-drink',\n                    'local-florist',\n                    'local-gas-station',\n                    'local-grocery-store',\n                    'local-hospital',\n                    'local-hotel',\n                    'local-laundry-service',\n                    'local-library',\n                    'local-mall',\n                    'local-movies',\n                    'local-offer',\n                    'local-parking',\n                    'local-pharmacy',\n                    'local-phone',\n                    'local-pizza',\n                    'local-post-office',\n                    'local-printshop',\n                    'local-see',\n                    'local-shipping',\n                    'local-store',\n                    'local-taxi',\n                    'local-wc',\n                    'lock',\n                    'lock-open',\n                    'lock-outline',\n                    'long-arrow-left',\n                    'long-arrow-return',\n                    'long-arrow-tab',\n                    'looks',\n                    'loupe',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'mail-send',\n                    'male',\n                    'map',\n                    'markunread-mailbox',\n                    'memory',\n                    'menu',\n                    'mic',\n                    'mic-off',\n                    'mic-outline',\n                    'mic-setting',\n                    'minus',\n                    'minus-circle',\n                    'minus-circle-outline',\n                    'minus-square',\n                    'money',\n                    'money-off',\n                    'mood',\n                    'mood-bad',\n                    'more-vert',\n                    'mouse',\n                    'movie',\n                    'movie-alt',\n                    'my-location',\n                    'n-1-square',\n                    'n-2-square',\n                    'n-3-square',\n                    'n-4-square',\n                    'n-5-square',\n                    'n-6-square',\n                    'nature',\n                    'nature-people',\n                    'navigation',\n                    'neg-1',\n                    'neg-2',\n                    'network',\n                    'network-locked',\n                    'network-off',\n                    'network-outline',\n                    'network-setting',\n                    'nfc',\n                    'notifications',\n                    'notifications-active',\n                    'notifications-add',\n                    'notifications-none',\n                    'notifications-off',\n                    'notifications-paused',\n                    'open-in-browser',\n                    'open-in-new',\n                    'palette',\n                    'panorama-horizontal',\n                    'panorama-vertical',\n                    'panorama-wide-angle',\n                    'pause',\n                    'pause-circle',\n                    'pause-circle-outline',\n                    'phone',\n                    'phone-bluetooth',\n                    'phone-end',\n                    'phone-forwarded',\n                    'phone-in-talk',\n                    'phone-locked',\n                    'phone-missed',\n                    'phone-msg',\n                    'phone-paused',\n                    'phone-ring',\n                    'phone-setting',\n                    'phone-sip',\n                    'photo-size-select-large',\n                    'photo-size-select-small',\n                    'picture-in-picture',\n                    'pin',\n                    'pin-account',\n                    'pin-assistant',\n                    'pin-drop',\n                    'pin-help',\n                    'pin-off',\n                    'plaster',\n                    'play',\n                    'play-circle',\n                    'play-circle-outline',\n                    'play-for-work',\n                    'plus',\n                    'plus-1',\n                    'plus-2',\n                    'plus-circle',\n                    'plus-circle-o',\n                    'plus-circle-o-duplicate',\n                    'polymer',\n                    'portable-wifi',\n                    'portable-wifi-changes',\n                    'portable-wifi-off',\n                    'power-input',\n                    'present-to-all',\n                    'print',\n                    'puzzle-piece',\n                    'radio',\n                    'reader',\n                    'receipt',\n                    'redo',\n                    'refresh',\n                    'refresh-alt',\n                    'refresh-sync',\n                    'remote-control',\n                    'remote-control-alt',\n                    'repeat',\n                    'repeat-one',\n                    'replay',\n                    'replay-10',\n                    'replay-30',\n                    'replay-5',\n                    'rotate-left',\n                    'rotate-right',\n                    'router',\n                    'ruler',\n                    'satellite',\n                    'scanner',\n                    'screen-rotation',\n                    'screen-rotation-lock',\n                    'search',\n                    'search-for',\n                    'search-in-file',\n                    'search-in-page',\n                    'search-replace',\n                    'seat',\n                    'sec-10',\n                    'sec-3',\n                    'select-all',\n                    'settings',\n                    'settings-square',\n                    'share',\n                    'shield-check',\n                    'shield-security',\n                    'shopping-basket',\n                    'shopping-cart',\n                    'shuffle',\n                    'sign-in',\n                    'skip-next',\n                    'skip-previous',\n                    'slideshow',\n                    'smartphone',\n                    'smartphone-android',\n                    'smartphone-download',\n                    'smartphone-erase',\n                    'smartphone-info',\n                    'smartphone-iphone',\n                    'smartphone-landscape',\n                    'smartphone-landscape-lock',\n                    'smartphone-lock',\n                    'smartphone-portrait-lock',\n                    'smartphone-ring',\n                    'smartphone-setting',\n                    'smartphone-setup',\n                    'space-bar',\n                    'speaker',\n                    'spellcheck',\n                    'square-down',\n                    'square-o',\n                    'square-right',\n                    'star',\n                    'star-circle',\n                    'star-half',\n                    'stop',\n                    'storage',\n                    'sun',\n                    'surround-sound',\n                    'swap',\n                    'swap-alt',\n                    'swap-vertical-circle',\n                    'tab',\n                    'tab-unselected',\n                    'tablet',\n                    'tablet-android',\n                    'tablet-mac',\n                    'tag-more',\n                    'tap-and-play',\n                    'text-format',\n                    'texture',\n                    'thumb-down',\n                    'thumb-up',\n                    'thumb-up-down',\n                    'time',\n                    'time-countdown',\n                    'time-interval',\n                    'time-restore',\n                    'time-restore-setting',\n                    'timer',\n                    'timer-off',\n                    'toll',\n                    'tonality',\n                    'toys',\n                    'traffic',\n                    'translate',\n                    'trending-down',\n                    'trending-flat',\n                    'trending-up',\n                    'triangle-down',\n                    'triangle-up',\n                    'tune',\n                    'tv',\n                    'tv-list',\n                    'tv-play',\n                    'undo',\n                    'unfold-less',\n                    'unfold-more',\n                    'upload',\n                    'usb',\n                    'vibration',\n                    'videocam',\n                    'videocam-off',\n                    'videocam-switch',\n                    'view-agenda',\n                    'view-array',\n                    'view-carousel',\n                    'view-column',\n                    'view-comfy',\n                    'view-compact',\n                    'view-dashboard',\n                    'view-day',\n                    'view-headline',\n                    'view-list',\n                    'view-list-alt',\n                    'view-module',\n                    'view-quilt',\n                    'view-stream',\n                    'view-subtitles',\n                    'view-toc',\n                    'view-web',\n                    'view-week',\n                    'vignette',\n                    'voicemail',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-off',\n                    'volume-up',\n                    'wallpaper',\n                    'watch',\n                    'wb-auto',\n                    'widgets',\n                    'wrap-text',\n                    'wrench',\n                    'zero',\n                    'zoom-in',\n                    'zoom-out'\n                ]\n            },\n            {\n                version: '2.0.1',\n                icons: [\n                    '',\n                    //'zmdi',\n                    '3d-rotation',\n                    'account',\n                    'account-add',\n                    'account-box',\n                    'account-box-mail',\n                    'account-box-o',\n                    'account-box-phone',\n                    'account-calendar',\n                    'account-circle',\n                    'account-o',\n                    'accounts',\n                    'accounts-add',\n                    'accounts-alt',\n                    'accounts-list',\n                    'accounts-list-alt',\n                    'accounts-outline',\n                    'airline-seat-flat',\n                    'airline-seat-flat-angled',\n                    'airline-seat-individual-suite',\n                    'airline-seat-legroom-extra',\n                    'airline-seat-legroom-normal',\n                    'airline-seat-legroom-reduced',\n                    'airline-seat-recline-extra',\n                    'airline-seat-recline-normal',\n                    'airplay',\n                    'alarm',\n                    'alarm-check',\n                    'alarm-off',\n                    'alarm-snooze',\n                    'album',\n                    'alert-circle',\n                    'alert-circle-o',\n                    'alert-octagon',\n                    'alert-polygon',\n                    'alert-triangle',\n                    'android',\n                    'apps',\n                    'archive',\n                    'arrow-merge',\n                    'arrow-missed',\n                    'arrow-split',\n                    'arrows',\n                    'aspect-ratio',\n                    'aspect-ratio-alt',\n                    'assignment',\n                    'assignment-account',\n                    'assignment-alert',\n                    'assignment-check',\n                    'assignment-o',\n                    'assignment-return',\n                    'assignment-returned',\n                    'attachment',\n                    'attachment-alt',\n                    'audio',\n                    'badge-check',\n                    'balance',\n                    'balance-wallet',\n                    'battery',\n                    'battery-alert',\n                    'battery-unknown',\n                    'block',\n                    'block-alt',\n                    'bluetooth',\n                    'bluetooth-connected',\n                    'bluetooth-off',\n                    'bluetooth-search',\n                    'bluetooth-setting',\n                    'blur',\n                    'blur-circular',\n                    'blur-linear',\n                    'blur-off',\n                    'book',\n                    'bookmark',\n                    'bookmark-outline',\n                    'border-all',\n                    'border-bottom',\n                    'border-clear',\n                    'border-color',\n                    'border-horizontal',\n                    'border-inner',\n                    'border-left',\n                    'border-outer',\n                    'border-right',\n                    'border-style',\n                    'border-top',\n                    'border-vertical',\n                    'brightness-2',\n                    'brightness-3',\n                    'brightness-4',\n                    'brightness-5',\n                    'brightness-6',\n                    'brightness-7',\n                    'brightness-auto',\n                    'brightness-high',\n                    'brightness-setting',\n                    'broken-image',\n                    'brush',\n                    'bug',\n                    'cake',\n                    'calendar',\n                    'calendar-alt',\n                    'calendar-check',\n                    'calendar-note',\n                    'camera',\n                    'camera-add',\n                    'camera-alt',\n                    'camera-front',\n                    'camera-mic',\n                    'camera-party-mode',\n                    'camera-rear',\n                    'camera-roll',\n                    'camera-switch',\n                    'card',\n                    'card-alert',\n                    'card-giftcard',\n                    'card-membership',\n                    'card-off',\n                    'card-sd',\n                    'card-sim',\n                    'card-travel',\n                    'caret-down',\n                    'caret-down-circle',\n                    'caret-up',\n                    'case',\n                    'case-play',\n                    'cast',\n                    'cast-connected',\n                    'center-focus-strong',\n                    'center-focus-weak',\n                    'chart',\n                    'chart-donut',\n                    'check',\n                    'check-all',\n                    'check-circle',\n                    'check-circle-u',\n                    'check-square',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle',\n                    'circle-o',\n                    'city',\n                    'city-alt',\n                    'close',\n                    'close-circle',\n                    'close-circle-o',\n                    'closed-caption',\n                    'cloud',\n                    'cloud-circle',\n                    'cloud-done',\n                    'cloud-download',\n                    'cloud-off',\n                    'cloud-outline',\n                    'cloud-outline-alt',\n                    'cloud-upload',\n                    'code',\n                    'code-setting',\n                    'code-smartphone',\n                    'collection-bookmark',\n                    'collection-case-play',\n                    'collection-folder-image',\n                    'collection-image',\n                    'collection-image-o',\n                    'collection-item',\n                    'collection-item-1',\n                    'collection-item-2',\n                    'collection-item-3',\n                    'collection-item-4',\n                    'collection-item-5',\n                    'collection-item-6',\n                    'collection-item-7',\n                    'collection-item-8',\n                    'collection-item-9',\n                    'collection-item-9-plus',\n                    'collection-music',\n                    'collection-pdf',\n                    'collection-speaker',\n                    'collection-text',\n                    'collection-video',\n                    'comment',\n                    'comment-alert',\n                    'comment-alt',\n                    'comment-alt-text',\n                    'comment-image',\n                    'comment-list',\n                    'comment-outline',\n                    'comment-text',\n                    'comment-text-alt',\n                    'comment-video',\n                    'comments',\n                    'compare',\n                    'compass',\n                    'confirmation-number',\n                    'copy',\n                    'crop',\n                    'crop-16-9',\n                    'crop-3-2',\n                    'crop-5-4',\n                    'crop-7-5',\n                    'crop-din',\n                    'crop-free',\n                    'crop-landscape',\n                    'crop-portrait',\n                    'crop-square',\n                    'delete',\n                    'desktop-mac',\n                    'desktop-windows',\n                    'developer-board',\n                    'device-hub',\n                    'devices',\n                    'devices-off',\n                    'dialpad',\n                    'directions',\n                    'directions-bike',\n                    'directions-boat',\n                    'directions-bus',\n                    'directions-car',\n                    'directions-railway',\n                    'directions-run',\n                    'directions-subway',\n                    'directions-walk',\n                    'disc-full',\n                    'dns',\n                    'dock',\n                    'dot-circle',\n                    'dot-circle-alt',\n                    'download',\n                    'edit',\n                    'eject',\n                    'eject-alt',\n                    'email',\n                    'email-open',\n                    'equalizer',\n                    'explicit',\n                    'exposure',\n                    'exposure-alt',\n                    'eye',\n                    'eye-off',\n                    'face',\n                    'fast-forward',\n                    'fast-rewind',\n                    'favorite',\n                    'favorite-outline',\n                    'file',\n                    'file-text',\n                    'filter-b-and-w',\n                    'filter-center-focus',\n                    'filter-frames',\n                    'filter-list',\n                    'filter-tilt-shift',\n                    'fire',\n                    'flag',\n                    'flare',\n                    'flash',\n                    'flash-auto',\n                    'flash-off',\n                    'flight-land',\n                    'flight-takeoff',\n                    'flip',\n                    'flip-to-back',\n                    'flip-to-front',\n                    'flower',\n                    'folder',\n                    'folder-outline',\n                    'font',\n                    'format-align-center',\n                    'format-align-justify',\n                    'format-align-left',\n                    'format-align-right',\n                    'format-bold',\n                    'format-clear',\n                    'format-clear-all',\n                    'format-color-fill',\n                    'format-color-reset',\n                    'format-color-text',\n                    'format-indent-decrease',\n                    'format-indent-increase',\n                    'format-italic',\n                    'format-line-spacing',\n                    'format-list-bulleted',\n                    'format-list-numbered',\n                    'format-size',\n                    'format-strikethrough',\n                    'format-strikethrough-s',\n                    'format-subject',\n                    'format-underlined',\n                    'format-valign-bottom',\n                    'format-valign-center',\n                    'format-valign-top',\n                    'forward',\n                    'forward-10',\n                    'forward-30',\n                    'forward-5',\n                    'fullscreen',\n                    'fullscreen-alt',\n                    'fullscreen-exit',\n                    'functions',\n                    'gamepad',\n                    'gesture',\n                    'gif',\n                    'globe',\n                    'globe-alt',\n                    'globe-lock',\n                    'gps',\n                    'gps-dot',\n                    'gps-off',\n                    'gradient',\n                    'graduation-cap',\n                    'grain',\n                    'graphic-eq',\n                    'grid',\n                    'grid-off',\n                    'group-work',\n                    'hd',\n                    'hdr',\n                    'hdr-off',\n                    'hdr-strong',\n                    'hdr-weak',\n                    'headset',\n                    'headset-mic',\n                    'hearing',\n                    'help',\n                    'help-outline',\n                    'home',\n                    'hotel',\n                    'hourglass',\n                    'hourglass-outline',\n                    'hq',\n                    'http',\n                    'image',\n                    'image-alt',\n                    'inbox',\n                    'info',\n                    'info-outline',\n                    'input-antenna',\n                    'input-composite',\n                    'input-hdmi',\n                    'input-power',\n                    'input-svideo',\n                    'invert-colors',\n                    'invert-colors-off',\n                    'key',\n                    'keyboard',\n                    'keyboard-hide',\n                    'label',\n                    'label-heart',\n                    'labels',\n                    'landscape',\n                    'laptop',\n                    'laptop-chromebook',\n                    'laptop-mac',\n                    'layers',\n                    'leak',\n                    'link',\n                    'local-activity',\n                    'local-airport',\n                    'local-atm',\n                    'local-bar',\n                    'local-cafe',\n                    'local-car-wash',\n                    'local-convenience-store',\n                    'local-dining',\n                    'local-drink',\n                    'local-florist',\n                    'local-gas-station',\n                    'local-grocery-store',\n                    'local-hospital',\n                    'local-hotel',\n                    'local-laundry-service',\n                    'local-library',\n                    'local-mall',\n                    'local-movies',\n                    'local-offer',\n                    'local-parking',\n                    'local-pharmacy',\n                    'local-phone',\n                    'local-pizza',\n                    'local-post-office',\n                    'local-printshop',\n                    'local-see',\n                    'local-shipping',\n                    'local-store',\n                    'local-taxi',\n                    'local-wc',\n                    'lock',\n                    'lock-open',\n                    'lock-outline',\n                    'long-arrow-left',\n                    'long-arrow-return',\n                    'long-arrow-tab',\n                    'looks',\n                    'loupe',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'mail-send',\n                    'male',\n                    'map',\n                    'markunread-mailbox',\n                    'memory',\n                    'menu',\n                    'mic',\n                    'mic-off',\n                    'mic-outline',\n                    'mic-setting',\n                    'minus',\n                    'minus-circle',\n                    'minus-circle-outline',\n                    'minus-square',\n                    'money',\n                    'money-off',\n                    'mood',\n                    'mood-bad',\n                    'more-vert',\n                    'mouse',\n                    'movie',\n                    'movie-alt',\n                    'my-location',\n                    'n-1-square',\n                    'n-2-square',\n                    'n-3-square',\n                    'n-4-square',\n                    'n-5-square',\n                    'n-6-square',\n                    'nature',\n                    'nature-people',\n                    'navigation',\n                    'neg-1',\n                    'neg-2',\n                    'network',\n                    'network-locked',\n                    'network-off',\n                    'network-outline',\n                    'network-setting',\n                    'nfc',\n                    'notifications',\n                    'notifications-active',\n                    'notifications-add',\n                    'notifications-none',\n                    'notifications-off',\n                    'notifications-paused',\n                    'open-in-browser',\n                    'open-in-new',\n                    'palette',\n                    'panorama-horizontal',\n                    'panorama-vertical',\n                    'panorama-wide-angle',\n                    'pause',\n                    'pause-circle',\n                    'pause-circle-outline',\n                    'phone',\n                    'phone-bluetooth',\n                    'phone-end',\n                    'phone-forwarded',\n                    'phone-in-talk',\n                    'phone-locked',\n                    'phone-missed',\n                    'phone-msg',\n                    'phone-paused',\n                    'phone-ring',\n                    'phone-setting',\n                    'phone-sip',\n                    'photo-size-select-large',\n                    'photo-size-select-small',\n                    'picture-in-picture',\n                    'pin',\n                    'pin-account',\n                    'pin-assistant',\n                    'pin-drop',\n                    'pin-help',\n                    'pin-off',\n                    'plaster',\n                    'play',\n                    'play-circle',\n                    'play-circle-outline',\n                    'play-for-work',\n                    'plus',\n                    'plus-1',\n                    'plus-2',\n                    'plus-circle',\n                    'plus-circle-o',\n                    'plus-circle-o-duplicate',\n                    'polymer',\n                    'portable-wifi',\n                    'portable-wifi-changes',\n                    'portable-wifi-off',\n                    'power-input',\n                    'present-to-all',\n                    'print',\n                    'puzzle-piece',\n                    'radio',\n                    'reader',\n                    'receipt',\n                    'redo',\n                    'refresh',\n                    'refresh-alt',\n                    'refresh-sync',\n                    'remote-control',\n                    'remote-control-alt',\n                    'repeat',\n                    'repeat-one',\n                    'replay',\n                    'replay-10',\n                    'replay-30',\n                    'replay-5',\n                    'rotate-left',\n                    'rotate-right',\n                    'router',\n                    'ruler',\n                    'satellite',\n                    'scanner',\n                    'screen-rotation',\n                    'screen-rotation-lock',\n                    'search',\n                    'search-for',\n                    'search-in-file',\n                    'search-in-page',\n                    'search-replace',\n                    'seat',\n                    'sec-10',\n                    'sec-3',\n                    'select-all',\n                    'settings',\n                    'settings-square',\n                    'share',\n                    'shield-check',\n                    'shield-security',\n                    'shopping-basket',\n                    'shopping-cart',\n                    'shuffle',\n                    'sign-in',\n                    'skip-next',\n                    'skip-previous',\n                    'slideshow',\n                    'smartphone',\n                    'smartphone-android',\n                    'smartphone-download',\n                    'smartphone-erase',\n                    'smartphone-info',\n                    'smartphone-iphone',\n                    'smartphone-landscape',\n                    'smartphone-landscape-lock',\n                    'smartphone-lock',\n                    'smartphone-portrait-lock',\n                    'smartphone-ring',\n                    'smartphone-setting',\n                    'smartphone-setup',\n                    'space-bar',\n                    'speaker',\n                    'spellcheck',\n                    'square-down',\n                    'square-o',\n                    'square-right',\n                    'star',\n                    'star-circle',\n                    'star-half',\n                    'stop',\n                    'storage',\n                    'sun',\n                    'surround-sound',\n                    'swap',\n                    'swap-alt',\n                    'swap-vertical-circle',\n                    'tab',\n                    'tab-unselected',\n                    'tablet',\n                    'tablet-android',\n                    'tablet-mac',\n                    'tag-more',\n                    'tap-and-play',\n                    'text-format',\n                    'texture',\n                    'thumb-down',\n                    'thumb-up',\n                    'thumb-up-down',\n                    'time',\n                    'time-countdown',\n                    'time-interval',\n                    'time-restore',\n                    'time-restore-setting',\n                    'timer',\n                    'timer-off',\n                    'toll',\n                    'tonality',\n                    'toys',\n                    'traffic',\n                    'translate',\n                    'trending-down',\n                    'trending-flat',\n                    'trending-up',\n                    'triangle-down',\n                    'triangle-up',\n                    'tune',\n                    'tv',\n                    'tv-list',\n                    'tv-play',\n                    'undo',\n                    'unfold-less',\n                    'unfold-more',\n                    'upload',\n                    'usb',\n                    'vibration',\n                    'videocam',\n                    'videocam-off',\n                    'videocam-switch',\n                    'view-agenda',\n                    'view-array',\n                    'view-carousel',\n                    'view-column',\n                    'view-comfy',\n                    'view-compact',\n                    'view-dashboard',\n                    'view-day',\n                    'view-headline',\n                    'view-list',\n                    'view-list-alt',\n                    'view-module',\n                    'view-quilt',\n                    'view-stream',\n                    'view-subtitles',\n                    'view-toc',\n                    'view-web',\n                    'view-week',\n                    'vignette',\n                    'voicemail',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-off',\n                    'volume-up',\n                    'wallpaper',\n                    'watch',\n                    'wb-auto',\n                    'widgets',\n                    'wrap-text',\n                    'wrench',\n                    'zero',\n                    'zoom-in',\n                    'zoom-out'\n                ]\n            },\n            {\n                version: '2.0.2',\n                icons: [\n                    '',\n                    //'zmdi',\n                    '3d-rotation',\n                    'account',\n                    'account-add',\n                    'account-box',\n                    'account-box-mail',\n                    'account-box-o',\n                    'account-box-phone',\n                    'account-calendar',\n                    'account-circle',\n                    'account-o',\n                    'accounts',\n                    'accounts-add',\n                    'accounts-alt',\n                    'accounts-list',\n                    'accounts-list-alt',\n                    'accounts-outline',\n                    'airline-seat-flat',\n                    'airline-seat-flat-angled',\n                    'airline-seat-individual-suite',\n                    'airline-seat-legroom-extra',\n                    'airline-seat-legroom-normal',\n                    'airline-seat-legroom-reduced',\n                    'airline-seat-recline-extra',\n                    'airline-seat-recline-normal',\n                    'airplay',\n                    'alarm',\n                    'alarm-check',\n                    'alarm-off',\n                    'alarm-snooze',\n                    'album',\n                    'alert-circle',\n                    'alert-circle-o',\n                    'alert-octagon',\n                    'alert-polygon',\n                    'alert-triangle',\n                    'android',\n                    'apps',\n                    'archive',\n                    'arrow-merge',\n                    'arrow-missed',\n                    'arrow-split',\n                    'arrows',\n                    'aspect-ratio',\n                    'aspect-ratio-alt',\n                    'assignment',\n                    'assignment-account',\n                    'assignment-alert',\n                    'assignment-check',\n                    'assignment-o',\n                    'assignment-return',\n                    'assignment-returned',\n                    'attachment',\n                    'attachment-alt',\n                    'audio',\n                    'badge-check',\n                    'balance',\n                    'balance-wallet',\n                    'battery',\n                    'battery-alert',\n                    'battery-unknown',\n                    'block',\n                    'block-alt',\n                    'bluetooth',\n                    'bluetooth-connected',\n                    'bluetooth-off',\n                    'bluetooth-search',\n                    'bluetooth-setting',\n                    'blur',\n                    'blur-circular',\n                    'blur-linear',\n                    'blur-off',\n                    'book',\n                    'bookmark',\n                    'bookmark-outline',\n                    'border-all',\n                    'border-bottom',\n                    'border-clear',\n                    'border-color',\n                    'border-horizontal',\n                    'border-inner',\n                    'border-left',\n                    'border-outer',\n                    'border-right',\n                    'border-style',\n                    'border-top',\n                    'border-vertical',\n                    'brightness-2',\n                    'brightness-3',\n                    'brightness-4',\n                    'brightness-5',\n                    'brightness-6',\n                    'brightness-7',\n                    'brightness-auto',\n                    'brightness-high',\n                    'brightness-setting',\n                    'broken-image',\n                    'brush',\n                    'bug',\n                    'cake',\n                    'calendar',\n                    'calendar-alt',\n                    'calendar-check',\n                    'calendar-note',\n                    'camera',\n                    'camera-add',\n                    'camera-alt',\n                    'camera-front',\n                    'camera-mic',\n                    'camera-party-mode',\n                    'camera-rear',\n                    'camera-roll',\n                    'camera-switch',\n                    'card',\n                    'card-alert',\n                    'card-giftcard',\n                    'card-membership',\n                    'card-off',\n                    'card-sd',\n                    'card-sim',\n                    'card-travel',\n                    'caret-down',\n                    'caret-down-circle',\n                    'caret-up',\n                    'case',\n                    'case-play',\n                    'cast',\n                    'cast-connected',\n                    'center-focus-strong',\n                    'center-focus-weak',\n                    'chart',\n                    'chart-donut',\n                    'check',\n                    'check-all',\n                    'check-circle',\n                    'check-circle-u',\n                    'check-square',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle',\n                    'circle-o',\n                    'city',\n                    'city-alt',\n                    'close',\n                    'close-circle',\n                    'close-circle-o',\n                    'closed-caption',\n                    'cloud',\n                    'cloud-circle',\n                    'cloud-done',\n                    'cloud-download',\n                    'cloud-off',\n                    'cloud-outline',\n                    'cloud-outline-alt',\n                    'cloud-upload',\n                    'code',\n                    'code-setting',\n                    'code-smartphone',\n                    'collection-bookmark',\n                    'collection-case-play',\n                    'collection-folder-image',\n                    'collection-image',\n                    'collection-image-o',\n                    'collection-item',\n                    'collection-item-1',\n                    'collection-item-2',\n                    'collection-item-3',\n                    'collection-item-4',\n                    'collection-item-5',\n                    'collection-item-6',\n                    'collection-item-7',\n                    'collection-item-8',\n                    'collection-item-9',\n                    'collection-item-9-plus',\n                    'collection-music',\n                    'collection-pdf',\n                    'collection-speaker',\n                    'collection-text',\n                    'collection-video',\n                    'comment',\n                    'comment-alert',\n                    'comment-alt',\n                    'comment-alt-text',\n                    'comment-image',\n                    'comment-list',\n                    'comment-outline',\n                    'comment-text',\n                    'comment-text-alt',\n                    'comment-video',\n                    'comments',\n                    'compare',\n                    'compass',\n                    'confirmation-number',\n                    'copy',\n                    'crop',\n                    'crop-16-9',\n                    'crop-3-2',\n                    'crop-5-4',\n                    'crop-7-5',\n                    'crop-din',\n                    'crop-free',\n                    'crop-landscape',\n                    'crop-portrait',\n                    'crop-square',\n                    'delete',\n                    'desktop-mac',\n                    'desktop-windows',\n                    'developer-board',\n                    'device-hub',\n                    'devices',\n                    'devices-off',\n                    'dialpad',\n                    'directions',\n                    'directions-bike',\n                    'directions-boat',\n                    'directions-bus',\n                    'directions-car',\n                    'directions-railway',\n                    'directions-run',\n                    'directions-subway',\n                    'directions-walk',\n                    'disc-full',\n                    'dns',\n                    'dock',\n                    'dot-circle',\n                    'dot-circle-alt',\n                    'download',\n                    'edit',\n                    'eject',\n                    'eject-alt',\n                    'email',\n                    'email-open',\n                    'equalizer',\n                    'explicit',\n                    'exposure',\n                    'exposure-alt',\n                    'eye',\n                    'eye-off',\n                    'face',\n                    'fast-forward',\n                    'fast-rewind',\n                    'favorite',\n                    'favorite-outline',\n                    'file',\n                    'file-text',\n                    'filter-b-and-w',\n                    'filter-center-focus',\n                    'filter-frames',\n                    'filter-list',\n                    'filter-tilt-shift',\n                    'fire',\n                    'flag',\n                    'flare',\n                    'flash',\n                    'flash-auto',\n                    'flash-off',\n                    'flight-land',\n                    'flight-takeoff',\n                    'flip',\n                    'flip-to-back',\n                    'flip-to-front',\n                    'flower',\n                    'folder',\n                    'folder-outline',\n                    'font',\n                    'format-align-center',\n                    'format-align-justify',\n                    'format-align-left',\n                    'format-align-right',\n                    'format-bold',\n                    'format-clear',\n                    'format-clear-all',\n                    'format-color-fill',\n                    'format-color-reset',\n                    'format-color-text',\n                    'format-indent-decrease',\n                    'format-indent-increase',\n                    'format-italic',\n                    'format-line-spacing',\n                    'format-list-bulleted',\n                    'format-list-numbered',\n                    'format-size',\n                    'format-strikethrough',\n                    'format-strikethrough-s',\n                    'format-subject',\n                    'format-underlined',\n                    'format-valign-bottom',\n                    'format-valign-center',\n                    'format-valign-top',\n                    'forward',\n                    'forward-10',\n                    'forward-30',\n                    'forward-5',\n                    'fullscreen',\n                    'fullscreen-alt',\n                    'fullscreen-exit',\n                    'functions',\n                    'gamepad',\n                    'gesture',\n                    'gif',\n                    'globe',\n                    'globe-alt',\n                    'globe-lock',\n                    'gps',\n                    'gps-dot',\n                    'gps-off',\n                    'gradient',\n                    'graduation-cap',\n                    'grain',\n                    'graphic-eq',\n                    'grid',\n                    'grid-off',\n                    'group-work',\n                    'hd',\n                    'hdr',\n                    'hdr-off',\n                    'hdr-strong',\n                    'hdr-weak',\n                    'headset',\n                    'headset-mic',\n                    'hearing',\n                    'help',\n                    'help-outline',\n                    'home',\n                    'hotel',\n                    'hourglass',\n                    'hourglass-outline',\n                    'hq',\n                    'http',\n                    'image',\n                    'image-alt',\n                    'inbox',\n                    'info',\n                    'info-outline',\n                    'input-antenna',\n                    'input-composite',\n                    'input-hdmi',\n                    'input-power',\n                    'input-svideo',\n                    'invert-colors',\n                    'invert-colors-off',\n                    'key',\n                    'keyboard',\n                    'keyboard-hide',\n                    'label',\n                    'label-heart',\n                    'labels',\n                    'landscape',\n                    'laptop',\n                    'laptop-chromebook',\n                    'laptop-mac',\n                    'layers',\n                    'leak',\n                    'link',\n                    'local-activity',\n                    'local-airport',\n                    'local-atm',\n                    'local-bar',\n                    'local-cafe',\n                    'local-car-wash',\n                    'local-convenience-store',\n                    'local-dining',\n                    'local-drink',\n                    'local-florist',\n                    'local-gas-station',\n                    'local-grocery-store',\n                    'local-hospital',\n                    'local-hotel',\n                    'local-laundry-service',\n                    'local-library',\n                    'local-mall',\n                    'local-movies',\n                    'local-offer',\n                    'local-parking',\n                    'local-pharmacy',\n                    'local-phone',\n                    'local-pizza',\n                    'local-post-office',\n                    'local-printshop',\n                    'local-see',\n                    'local-shipping',\n                    'local-store',\n                    'local-taxi',\n                    'local-wc',\n                    'lock',\n                    'lock-open',\n                    'lock-outline',\n                    'long-arrow-left',\n                    'long-arrow-return',\n                    'long-arrow-tab',\n                    'looks',\n                    'loupe',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'mail-send',\n                    'male',\n                    'map',\n                    'markunread-mailbox',\n                    'memory',\n                    'menu',\n                    'mic',\n                    'mic-off',\n                    'mic-outline',\n                    'mic-setting',\n                    'minus',\n                    'minus-circle',\n                    'minus-circle-outline',\n                    'minus-square',\n                    'money',\n                    'money-off',\n                    'mood',\n                    'mood-bad',\n                    'more-vert',\n                    'mouse',\n                    'movie',\n                    'movie-alt',\n                    'my-location',\n                    'n-1-square',\n                    'n-2-square',\n                    'n-3-square',\n                    'n-4-square',\n                    'n-5-square',\n                    'n-6-square',\n                    'nature',\n                    'nature-people',\n                    'navigation',\n                    'neg-1',\n                    'neg-2',\n                    'network',\n                    'network-locked',\n                    'network-off',\n                    'network-outline',\n                    'network-setting',\n                    'nfc',\n                    'notifications',\n                    'notifications-active',\n                    'notifications-add',\n                    'notifications-none',\n                    'notifications-off',\n                    'notifications-paused',\n                    'open-in-browser',\n                    'open-in-new',\n                    'palette',\n                    'panorama-horizontal',\n                    'panorama-vertical',\n                    'panorama-wide-angle',\n                    'pause',\n                    'pause-circle',\n                    'pause-circle-outline',\n                    'phone',\n                    'phone-bluetooth',\n                    'phone-end',\n                    'phone-forwarded',\n                    'phone-in-talk',\n                    'phone-locked',\n                    'phone-missed',\n                    'phone-msg',\n                    'phone-paused',\n                    'phone-ring',\n                    'phone-setting',\n                    'phone-sip',\n                    'photo-size-select-large',\n                    'photo-size-select-small',\n                    'picture-in-picture',\n                    'pin',\n                    'pin-account',\n                    'pin-assistant',\n                    'pin-drop',\n                    'pin-help',\n                    'pin-off',\n                    'plaster',\n                    'play',\n                    'play-circle',\n                    'play-circle-outline',\n                    'play-for-work',\n                    'plus',\n                    'plus-1',\n                    'plus-2',\n                    'plus-circle',\n                    'plus-circle-o',\n                    'plus-circle-o-duplicate',\n                    'polymer',\n                    'portable-wifi',\n                    'portable-wifi-changes',\n                    'portable-wifi-off',\n                    'power-input',\n                    'present-to-all',\n                    'print',\n                    'puzzle-piece',\n                    'radio',\n                    'reader',\n                    'receipt',\n                    'redo',\n                    'refresh',\n                    'refresh-alt',\n                    'refresh-sync',\n                    'remote-control',\n                    'remote-control-alt',\n                    'repeat',\n                    'repeat-one',\n                    'replay',\n                    'replay-10',\n                    'replay-30',\n                    'replay-5',\n                    'rotate-left',\n                    'rotate-right',\n                    'router',\n                    'ruler',\n                    'satellite',\n                    'scanner',\n                    'screen-rotation',\n                    'screen-rotation-lock',\n                    'search',\n                    'search-for',\n                    'search-in-file',\n                    'search-in-page',\n                    'search-replace',\n                    'seat',\n                    'sec-10',\n                    'sec-3',\n                    'select-all',\n                    'settings',\n                    'settings-square',\n                    'share',\n                    'shield-check',\n                    'shield-security',\n                    'shopping-basket',\n                    'shopping-cart',\n                    'shuffle',\n                    'sign-in',\n                    'skip-next',\n                    'skip-previous',\n                    'slideshow',\n                    'smartphone',\n                    'smartphone-android',\n                    'smartphone-download',\n                    'smartphone-erase',\n                    'smartphone-info',\n                    'smartphone-iphone',\n                    'smartphone-landscape',\n                    'smartphone-landscape-lock',\n                    'smartphone-lock',\n                    'smartphone-portrait-lock',\n                    'smartphone-ring',\n                    'smartphone-setting',\n                    'smartphone-setup',\n                    'space-bar',\n                    'speaker',\n                    'spellcheck',\n                    'square-down',\n                    'square-o',\n                    'square-right',\n                    'star',\n                    'star-circle',\n                    'star-half',\n                    'stop',\n                    'storage',\n                    'sun',\n                    'surround-sound',\n                    'swap',\n                    'swap-alt',\n                    'swap-vertical-circle',\n                    'tab',\n                    'tab-unselected',\n                    'tablet',\n                    'tablet-android',\n                    'tablet-mac',\n                    'tag-more',\n                    'tap-and-play',\n                    'text-format',\n                    'texture',\n                    'thumb-down',\n                    'thumb-up',\n                    'thumb-up-down',\n                    'time',\n                    'time-countdown',\n                    'time-interval',\n                    'time-restore',\n                    'time-restore-setting',\n                    'timer',\n                    'timer-off',\n                    'toll',\n                    'tonality',\n                    'toys',\n                    'traffic',\n                    'translate',\n                    'trending-down',\n                    'trending-flat',\n                    'trending-up',\n                    'triangle-down',\n                    'triangle-up',\n                    'tune',\n                    'tv',\n                    'tv-list',\n                    'tv-play',\n                    'undo',\n                    'unfold-less',\n                    'unfold-more',\n                    'upload',\n                    'usb',\n                    'vibration',\n                    'videocam',\n                    'videocam-off',\n                    'videocam-switch',\n                    'view-agenda',\n                    'view-array',\n                    'view-carousel',\n                    'view-column',\n                    'view-comfy',\n                    'view-compact',\n                    'view-dashboard',\n                    'view-day',\n                    'view-headline',\n                    'view-list',\n                    'view-list-alt',\n                    'view-module',\n                    'view-quilt',\n                    'view-stream',\n                    'view-subtitles',\n                    'view-toc',\n                    'view-web',\n                    'view-week',\n                    'vignette',\n                    'voicemail',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-off',\n                    'volume-up',\n                    'wallpaper',\n                    'watch',\n                    'wb-auto',\n                    'widgets',\n                    'wrap-text',\n                    'wrench',\n                    'zero',\n                    'zoom-in',\n                    'zoom-out'\n                ]\n            },\n            {\n                version: '2.1.0',\n                icons: [\n                    '',\n                    //'zmdi',\n                    '3d-rotation',\n                    'account',\n                    'account-add',\n                    'account-box',\n                    'account-box-mail',\n                    'account-box-o',\n                    'account-box-phone',\n                    'account-calendar',\n                    'account-circle',\n                    'account-o',\n                    'accounts',\n                    'accounts-add',\n                    'accounts-alt',\n                    'accounts-list',\n                    'accounts-list-alt',\n                    'accounts-outline',\n                    'airline-seat-flat',\n                    'airline-seat-flat-angled',\n                    'airline-seat-individual-suite',\n                    'airline-seat-legroom-extra',\n                    'airline-seat-legroom-normal',\n                    'airline-seat-legroom-reduced',\n                    'airline-seat-recline-extra',\n                    'airline-seat-recline-normal',\n                    'airplane',\n                    'airplane-off',\n                    'airplay',\n                    'alarm',\n                    'alarm-check',\n                    'alarm-off',\n                    'alarm-plus',\n                    'alarm-snooze',\n                    'album',\n                    'alert-circle',\n                    'alert-circle-o',\n                    'alert-octagon',\n                    'alert-polygon',\n                    'alert-triangle',\n                    'android',\n                    'android-alt',\n                    'apple',\n                    'apps',\n                    'archive',\n                    'arrow-left',\n                    'arrow-left-bottom',\n                    'arrow-merge',\n                    'arrow-missed',\n                    'arrow-right',\n                    'arrow-right-top',\n                    'arrow-split',\n                    'arrows',\n                    'aspect-ratio',\n                    'aspect-ratio-alt',\n                    'assignment',\n                    'assignment-account',\n                    'assignment-alert',\n                    'assignment-check',\n                    'assignment-o',\n                    'assignment-return',\n                    'assignment-returned',\n                    'attachment',\n                    'attachment-alt',\n                    'audio',\n                    'badge-check',\n                    'balance',\n                    'balance-wallet',\n                    'battery',\n                    'battery-alert',\n                    'battery-flash',\n                    'battery-unknown',\n                    'behance',\n                    'bike',\n                    'block',\n                    'block-alt',\n                    'bluetooth',\n                    'bluetooth-connected',\n                    'bluetooth-off',\n                    'bluetooth-search',\n                    'bluetooth-setting',\n                    'blur',\n                    'blur-circular',\n                    'blur-linear',\n                    'blur-off',\n                    'boat',\n                    'book',\n                    'book-image',\n                    'bookmark',\n                    'bookmark-outline',\n                    'border-all',\n                    'border-bottom',\n                    'border-clear',\n                    'border-color',\n                    'border-horizontal',\n                    'border-inner',\n                    'border-left',\n                    'border-outer',\n                    'border-right',\n                    'border-style',\n                    'border-top',\n                    'border-vertical',\n                    'brightness-2',\n                    'brightness-3',\n                    'brightness-4',\n                    'brightness-5',\n                    'brightness-6',\n                    'brightness-7',\n                    'brightness-auto',\n                    'brightness-high',\n                    'brightness-setting',\n                    'broken-image',\n                    'brush',\n                    'bug',\n                    'bus',\n                    'cake',\n                    'calendar',\n                    'calendar-alt',\n                    'calendar-check',\n                    'calendar-close',\n                    'calendar-note',\n                    'camera',\n                    'camera-add',\n                    'camera-alt',\n                    'camera-bw',\n                    'camera-front',\n                    'camera-mic',\n                    'camera-party-mode',\n                    'camera-rear',\n                    'camera-roll',\n                    'camera-switch',\n                    'car',\n                    'car-taxi',\n                    'car-wash',\n                    'card',\n                    'card-alert',\n                    'card-giftcard',\n                    'card-membership',\n                    'card-off',\n                    'card-sd',\n                    'card-sim',\n                    'card-travel',\n                    'caret-down',\n                    'caret-down-circle',\n                    'caret-left',\n                    'caret-left-circle',\n                    'caret-right',\n                    'caret-right-circle',\n                    'caret-up',\n                    'caret-up-circle',\n                    'case',\n                    'case-check',\n                    'case-download',\n                    'case-play',\n                    'cast',\n                    'cast-connected',\n                    'center-focus-strong',\n                    'center-focus-weak',\n                    'chart',\n                    'chart-donut',\n                    'check',\n                    'check-all',\n                    'check-circle',\n                    'check-circle-u',\n                    'check-square',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle',\n                    'circle-o',\n                    'city',\n                    'city-alt',\n                    'close',\n                    'close-circle',\n                    'close-circle-o',\n                    'closed-caption',\n                    'cloud',\n                    'cloud-box',\n                    'cloud-circle',\n                    'cloud-done',\n                    'cloud-download',\n                    'cloud-off',\n                    'cloud-outline',\n                    'cloud-outline-alt',\n                    'cloud-upload',\n                    'cocktail',\n                    'code',\n                    'code-setting',\n                    'code-smartphone',\n                    'codepen',\n                    'coffee',\n                    'collection-bookmark',\n                    'collection-case-play',\n                    'collection-folder-image',\n                    'collection-image',\n                    'collection-image-o',\n                    'collection-item',\n                    'collection-item-1',\n                    'collection-item-2',\n                    'collection-item-3',\n                    'collection-item-4',\n                    'collection-item-5',\n                    'collection-item-6',\n                    'collection-item-7',\n                    'collection-item-8',\n                    'collection-item-9',\n                    'collection-item-9-plus',\n                    'collection-music',\n                    'collection-pdf',\n                    'collection-plus',\n                    'collection-speaker',\n                    'collection-text',\n                    'collection-video',\n                    'comment',\n                    'comment-alert',\n                    'comment-alt',\n                    'comment-alt-text',\n                    'comment-edit',\n                    'comment-image',\n                    'comment-list',\n                    'comment-more',\n                    'comment-outline',\n                    'comment-text',\n                    'comment-text-alt',\n                    'comment-video',\n                    'comments',\n                    'compare',\n                    'compass',\n                    'confirmation-number',\n                    'copy',\n                    'crop',\n                    'crop-16-9',\n                    'crop-3-2',\n                    'crop-5-4',\n                    'crop-7-5',\n                    'crop-din',\n                    'crop-free',\n                    'crop-landscape',\n                    'crop-portrait',\n                    'crop-square',\n                    'cutlery',\n                    'delete',\n                    'desktop-mac',\n                    'desktop-windows',\n                    'developer-board',\n                    'device-hub',\n                    'devices',\n                    'devices-off',\n                    'dialpad',\n                    'directions',\n                    'directions-bike',\n                    'directions-boat',\n                    'directions-bus',\n                    'directions-car',\n                    'directions-railway',\n                    'directions-run',\n                    'directions-subway',\n                    'directions-walk',\n                    'disc-full',\n                    'dns',\n                    'dock',\n                    'dot-circle',\n                    'dot-circle-alt',\n                    'download',\n                    'dribbble',\n                    'drink',\n                    'dropbox',\n                    'edit',\n                    'eject',\n                    'eject-alt',\n                    'email',\n                    'email-open',\n                    'equalizer',\n                    'evernote',\n                    'explicit',\n                    'exposure',\n                    'exposure-alt',\n                    'eye',\n                    'eye-off',\n                    'eyedropper',\n                    'face',\n                    'facebook',\n                    'facebook-box',\n                    'fast-forward',\n                    'fast-rewind',\n                    'favorite',\n                    'favorite-outline',\n                    'female',\n                    'file',\n                    'file-plus',\n                    'file-text',\n                    'filter-b-and-w',\n                    'filter-center-focus',\n                    'filter-frames',\n                    'filter-list',\n                    'filter-tilt-shift',\n                    'fire',\n                    'flag',\n                    'flare',\n                    'flash',\n                    'flash-auto',\n                    'flash-off',\n                    'flight-land',\n                    'flight-takeoff',\n                    'flip',\n                    'flip-to-back',\n                    'flip-to-front',\n                    'floppy',\n                    'flower',\n                    'flower-alt',\n                    'folder',\n                    'folder-outline',\n                    'folder-person',\n                    'folder-star',\n                    'folder-star-alt',\n                    'font',\n                    'format-align-center',\n                    'format-align-justify',\n                    'format-align-left',\n                    'format-align-right',\n                    'format-bold',\n                    'format-clear',\n                    'format-clear-all',\n                    'format-color-fill',\n                    'format-color-reset',\n                    'format-color-text',\n                    'format-indent-decrease',\n                    'format-indent-increase',\n                    'format-italic',\n                    'format-line-spacing',\n                    'format-list-bulleted',\n                    'format-list-numbered',\n                    'format-ltr',\n                    'format-rtl',\n                    'format-size',\n                    'format-strikethrough',\n                    'format-strikethrough-s',\n                    'format-subject',\n                    'format-underlined',\n                    'format-valign-bottom',\n                    'format-valign-center',\n                    'format-valign-top',\n                    'forward',\n                    'forward-10',\n                    'forward-30',\n                    'forward-5',\n                    'fullscreen',\n                    'fullscreen-alt',\n                    'fullscreen-exit',\n                    'functions',\n                    'gamepad',\n                    'gas-station',\n                    'gesture',\n                    'gif',\n                    'github',\n                    'github-box',\n                    'globe',\n                    'globe-alt',\n                    'globe-lock',\n                    'google',\n                    'google-drive',\n                    'google-earth',\n                    'google-glass',\n                    'google-maps',\n                    'google-pages',\n                    'google-play',\n                    'google-plus',\n                    'google-plus-box',\n                    'gps',\n                    'gps-dot',\n                    'gps-off',\n                    'gradient',\n                    'graduation-cap',\n                    'grain',\n                    'graphic-eq',\n                    'grid',\n                    'grid-off',\n                    'group-work',\n                    'hd',\n                    'hdr',\n                    'hdr-off',\n                    'hdr-strong',\n                    'hdr-weak',\n                    'headset',\n                    'headset-mic',\n                    'hearing',\n                    'help',\n                    'help-outline',\n                    'home',\n                    'hospital',\n                    'hospital-alt',\n                    'hotel',\n                    'hourglass',\n                    'hourglass-alt',\n                    'hourglass-outline',\n                    'hq',\n                    'http',\n                    'image',\n                    'image-alt',\n                    'image-o',\n                    'inbox',\n                    'info',\n                    'info-outline',\n                    'input-antenna',\n                    'input-composite',\n                    'input-hdmi',\n                    'input-power',\n                    'input-svideo',\n                    'instagram',\n                    'invert-colors',\n                    'invert-colors-off',\n                    'iridescent',\n                    'key',\n                    'keyboard',\n                    'keyboard-hide',\n                    'label',\n                    'label-alt',\n                    'label-alt-outline',\n                    'label-heart',\n                    'labels',\n                    'lamp',\n                    'landscape',\n                    'language-css3',\n                    'language-html5',\n                    'language-javascript',\n                    'language-python',\n                    'language-python-alt',\n                    'laptop',\n                    'laptop-chromebook',\n                    'laptop-mac',\n                    'lastfm',\n                    'layers',\n                    'layers-off',\n                    'leak',\n                    'leak-off',\n                    'library',\n                    'link',\n                    'linkedin-box',\n                    'local-activity',\n                    'local-airport',\n                    'local-atm',\n                    'local-bar',\n                    'local-cafe',\n                    'local-car-wash',\n                    'local-convenience-store',\n                    'local-dining',\n                    'local-drink',\n                    'local-florist',\n                    'local-gas-station',\n                    'local-grocery-store',\n                    'local-hospital',\n                    'local-hotel',\n                    'local-laundry-service',\n                    'local-library',\n                    'local-mall',\n                    'local-movies',\n                    'local-offer',\n                    'local-parking',\n                    'local-pharmacy',\n                    'local-phone',\n                    'local-pizza',\n                    'local-post-office',\n                    'local-printshop',\n                    'local-see',\n                    'local-shipping',\n                    'local-store',\n                    'local-taxi',\n                    'local-wc',\n                    'lock',\n                    'lock-open',\n                    'lock-outline',\n                    'long-arrow-down',\n                    'long-arrow-left',\n                    'long-arrow-return',\n                    'long-arrow-right',\n                    'long-arrow-tab',\n                    'long-arrow-up',\n                    'looks',\n                    'loupe',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'mail-send',\n                    'male',\n                    'male-alt',\n                    'male-female',\n                    'mall',\n                    'map',\n                    'markunread-mailbox',\n                    'memory',\n                    'menu',\n                    'mic',\n                    'mic-off',\n                    'mic-outline',\n                    'mic-setting',\n                    'minus',\n                    'minus-circle',\n                    'minus-circle-outline',\n                    'minus-square',\n                    'money',\n                    'money-box',\n                    'money-off',\n                    'mood',\n                    'mood-bad',\n                    'more',\n                    'more-vert',\n                    'mouse',\n                    'movie',\n                    'movie-alt',\n                    'my-location',\n                    'n-1-square',\n                    'n-2-square',\n                    'n-3-square',\n                    'n-4-square',\n                    'n-5-square',\n                    'n-6-square',\n                    'nature',\n                    'nature-people',\n                    'navigation',\n                    'neg-1',\n                    'neg-2',\n                    'network',\n                    'network-alert',\n                    'network-locked',\n                    'network-off',\n                    'network-outline',\n                    'network-setting',\n                    'nfc',\n                    'notifications',\n                    'notifications-active',\n                    'notifications-add',\n                    'notifications-none',\n                    'notifications-off',\n                    'notifications-paused',\n                    'open-in-browser',\n                    'open-in-new',\n                    'palette',\n                    'panorama-horizontal',\n                    'panorama-vertical',\n                    'panorama-wide-angle',\n                    'parking',\n                    'pause',\n                    'pause-circle',\n                    'pause-circle-outline',\n                    'paypal',\n                    'phone',\n                    'phone-bluetooth',\n                    'phone-end',\n                    'phone-forwarded',\n                    'phone-in-talk',\n                    'phone-locked',\n                    'phone-missed',\n                    'phone-msg',\n                    'phone-paused',\n                    'phone-ring',\n                    'phone-setting',\n                    'phone-sip',\n                    'photo-size-select-large',\n                    'photo-size-select-small',\n                    'picture-in-picture',\n                    'pin',\n                    'pin-account',\n                    'pin-assistant',\n                    'pin-drop',\n                    'pin-help',\n                    'pin-off',\n                    'pinterest-box',\n                    'pizza',\n                    'plaster',\n                    'play',\n                    'play-circle',\n                    'play-circle-outline',\n                    'play-for-work',\n                    'playlist-audio',\n                    'playlist-plus',\n                    'plus',\n                    'plus-1',\n                    'plus-2',\n                    'plus-circle',\n                    'plus-circle-o',\n                    'plus-circle-o-duplicate',\n                    'plus-square',\n                    'pocket',\n                    'polymer',\n                    'portable-wifi',\n                    'portable-wifi-changes',\n                    'portable-wifi-off',\n                    'power',\n                    'power-input',\n                    'power-setting',\n                    'present-to-all',\n                    'print',\n                    'puzzle-piece',\n                    'quote',\n                    'radio',\n                    'railway',\n                    'reader',\n                    'receipt',\n                    'redo',\n                    'refresh',\n                    'refresh-alt',\n                    'refresh-sync',\n                    'refresh-sync-alert',\n                    'refresh-sync-off',\n                    'remote-control',\n                    'remote-control-alt',\n                    'repeat',\n                    'repeat-one',\n                    'replay',\n                    'replay-10',\n                    'replay-30',\n                    'replay-5',\n                    'roller',\n                    'rotate-ccw',\n                    'rotate-cw',\n                    'rotate-left',\n                    'rotate-right',\n                    'router',\n                    'ruler',\n                    'run',\n                    'satellite',\n                    'scanner',\n                    'scissors',\n                    'screen-rotation',\n                    'screen-rotation-lock',\n                    'search',\n                    'search-for',\n                    'search-in-file',\n                    'search-in-page',\n                    'search-replace',\n                    'seat',\n                    'sec-10',\n                    'sec-3',\n                    'select-all',\n                    'settings',\n                    'settings-square',\n                    'share',\n                    'shield-check',\n                    'shield-security',\n                    'shopping-basket',\n                    'shopping-cart',\n                    'shopping-cart-plus',\n                    'shuffle',\n                    'sign-in',\n                    'skip-next',\n                    'skip-previous',\n                    'slideshow',\n                    'smartphone',\n                    'smartphone-android',\n                    'smartphone-download',\n                    'smartphone-erase',\n                    'smartphone-info',\n                    'smartphone-iphone',\n                    'smartphone-landscape',\n                    'smartphone-landscape-lock',\n                    'smartphone-lock',\n                    'smartphone-portrait-lock',\n                    'smartphone-ring',\n                    'smartphone-setting',\n                    'smartphone-setup',\n                    'sort-amount-asc',\n                    'sort-amount-desc',\n                    'sort-asc',\n                    'sort-desc',\n                    'space-bar',\n                    'speaker',\n                    'spellcheck',\n                    'square-down',\n                    'square-o',\n                    'square-right',\n                    'star',\n                    'star-circle',\n                    'star-half',\n                    'star-outline',\n                    'steam',\n                    'steam-square',\n                    'stop',\n                    'storage',\n                    'store',\n                    'store-24',\n                    'subway',\n                    'sun',\n                    'surround-sound',\n                    'swap',\n                    'swap-alt',\n                    'swap-vertical',\n                    'swap-vertical-circle',\n                    'tab',\n                    'tab-unselected',\n                    'tablet',\n                    'tablet-android',\n                    'tablet-mac',\n                    'tag',\n                    'tag-close',\n                    'tag-more',\n                    'tap-and-play',\n                    'text-format',\n                    'texture',\n                    'thumb-down',\n                    'thumb-up',\n                    'thumb-up-down',\n                    'ticket-star',\n                    'time',\n                    'time-countdown',\n                    'time-interval',\n                    'time-restore',\n                    'time-restore-setting',\n                    'timer',\n                    'timer-off',\n                    'toll',\n                    'tonality',\n                    'toys',\n                    'traffic',\n                    'transform',\n                    'translate',\n                    'trending-down',\n                    'trending-flat',\n                    'trending-up',\n                    'triangle-down',\n                    'triangle-up',\n                    'truck',\n                    'tune',\n                    'turning-sign',\n                    'tv',\n                    'tv-alt-play',\n                    'tv-list',\n                    'tv-play',\n                    'twitter',\n                    'twitter-box',\n                    'undo',\n                    'unfold-less',\n                    'unfold-more',\n                    'upload',\n                    'usb',\n                    'vibration',\n                    'videocam',\n                    'videocam-off',\n                    'videocam-switch',\n                    'view-agenda',\n                    'view-array',\n                    'view-carousel',\n                    'view-column',\n                    'view-comfy',\n                    'view-compact',\n                    'view-dashboard',\n                    'view-day',\n                    'view-headline',\n                    'view-list',\n                    'view-list-alt',\n                    'view-module',\n                    'view-quilt',\n                    'view-stream',\n                    'view-subtitles',\n                    'view-toc',\n                    'view-web',\n                    'view-week',\n                    'vignette',\n                    'vk',\n                    'voicemail',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-off',\n                    'volume-up',\n                    'walk',\n                    'wallpaper',\n                    'washing-machine',\n                    'watch',\n                    'wb-auto',\n                    'widgets',\n                    'wifi',\n                    'wifi-alt',\n                    'wifi-alt-2',\n                    'wifi-info',\n                    'wifi-lock',\n                    'wifi-off',\n                    'wifi-outline',\n                    'wikipedia',\n                    'window-maximize',\n                    'window-minimize',\n                    'window-restore',\n                    'windows',\n                    'wrap-text',\n                    'wrench',\n                    'zero',\n                    'zoom-in',\n                    'zoom-out'\n                ]\n            },\n            {\n                version: '2.1.1',\n                icons: [\n                    '',\n                    //'zmdi',\n                    '3d-rotation',\n                    'account',\n                    'account-add',\n                    'account-box',\n                    'account-box-mail',\n                    'account-box-o',\n                    'account-box-phone',\n                    'account-calendar',\n                    'account-circle',\n                    'account-o',\n                    'accounts',\n                    'accounts-add',\n                    'accounts-alt',\n                    'accounts-list',\n                    'accounts-list-alt',\n                    'accounts-outline',\n                    'airline-seat-flat',\n                    'airline-seat-flat-angled',\n                    'airline-seat-individual-suite',\n                    'airline-seat-legroom-extra',\n                    'airline-seat-legroom-normal',\n                    'airline-seat-legroom-reduced',\n                    'airline-seat-recline-extra',\n                    'airline-seat-recline-normal',\n                    'airplane',\n                    'airplane-off',\n                    'airplay',\n                    'alarm',\n                    'alarm-check',\n                    'alarm-off',\n                    'alarm-plus',\n                    'alarm-snooze',\n                    'album',\n                    'alert-circle',\n                    'alert-circle-o',\n                    'alert-octagon',\n                    'alert-polygon',\n                    'alert-triangle',\n                    'android',\n                    'android-alt',\n                    'apple',\n                    'apps',\n                    'archive',\n                    'arrow-left',\n                    'arrow-left-bottom',\n                    'arrow-merge',\n                    'arrow-missed',\n                    'arrow-right',\n                    'arrow-right-top',\n                    'arrow-split',\n                    'arrows',\n                    'aspect-ratio',\n                    'aspect-ratio-alt',\n                    'assignment',\n                    'assignment-account',\n                    'assignment-alert',\n                    'assignment-check',\n                    'assignment-o',\n                    'assignment-return',\n                    'assignment-returned',\n                    'attachment',\n                    'attachment-alt',\n                    'audio',\n                    'badge-check',\n                    'balance',\n                    'balance-wallet',\n                    'battery',\n                    'battery-alert',\n                    'battery-flash',\n                    'battery-unknown',\n                    'behance',\n                    'bike',\n                    'block',\n                    'block-alt',\n                    'bluetooth',\n                    'bluetooth-connected',\n                    'bluetooth-off',\n                    'bluetooth-search',\n                    'bluetooth-setting',\n                    'blur',\n                    'blur-circular',\n                    'blur-linear',\n                    'blur-off',\n                    'boat',\n                    'book',\n                    'book-image',\n                    'bookmark',\n                    'bookmark-outline',\n                    'border-all',\n                    'border-bottom',\n                    'border-clear',\n                    'border-color',\n                    'border-horizontal',\n                    'border-inner',\n                    'border-left',\n                    'border-outer',\n                    'border-right',\n                    'border-style',\n                    'border-top',\n                    'border-vertical',\n                    'brightness-2',\n                    'brightness-3',\n                    'brightness-4',\n                    'brightness-5',\n                    'brightness-6',\n                    'brightness-7',\n                    'brightness-auto',\n                    'brightness-high',\n                    'brightness-setting',\n                    'broken-image',\n                    'brush',\n                    'bug',\n                    'bus',\n                    'cake',\n                    'calendar',\n                    'calendar-alt',\n                    'calendar-check',\n                    'calendar-close',\n                    'calendar-note',\n                    'camera',\n                    'camera-add',\n                    'camera-alt',\n                    'camera-bw',\n                    'camera-front',\n                    'camera-mic',\n                    'camera-party-mode',\n                    'camera-rear',\n                    'camera-roll',\n                    'camera-switch',\n                    'car',\n                    'car-taxi',\n                    'car-wash',\n                    'card',\n                    'card-alert',\n                    'card-giftcard',\n                    'card-membership',\n                    'card-off',\n                    'card-sd',\n                    'card-sim',\n                    'card-travel',\n                    'caret-down',\n                    'caret-down-circle',\n                    'caret-left',\n                    'caret-left-circle',\n                    'caret-right',\n                    'caret-right-circle',\n                    'caret-up',\n                    'caret-up-circle',\n                    'case',\n                    'case-check',\n                    'case-download',\n                    'case-play',\n                    'cast',\n                    'cast-connected',\n                    'center-focus-strong',\n                    'center-focus-weak',\n                    'chart',\n                    'chart-donut',\n                    'check',\n                    'check-all',\n                    'check-circle',\n                    'check-circle-u',\n                    'check-square',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle',\n                    'circle-o',\n                    'city',\n                    'city-alt',\n                    'close',\n                    'close-circle',\n                    'close-circle-o',\n                    'closed-caption',\n                    'cloud',\n                    'cloud-box',\n                    'cloud-circle',\n                    'cloud-done',\n                    'cloud-download',\n                    'cloud-off',\n                    'cloud-outline',\n                    'cloud-outline-alt',\n                    'cloud-upload',\n                    'cocktail',\n                    'code',\n                    'code-setting',\n                    'code-smartphone',\n                    'codepen',\n                    'coffee',\n                    'collection-bookmark',\n                    'collection-case-play',\n                    'collection-folder-image',\n                    'collection-image',\n                    'collection-image-o',\n                    'collection-item',\n                    'collection-item-1',\n                    'collection-item-2',\n                    'collection-item-3',\n                    'collection-item-4',\n                    'collection-item-5',\n                    'collection-item-6',\n                    'collection-item-7',\n                    'collection-item-8',\n                    'collection-item-9',\n                    'collection-item-9-plus',\n                    'collection-music',\n                    'collection-pdf',\n                    'collection-plus',\n                    'collection-speaker',\n                    'collection-text',\n                    'collection-video',\n                    'comment',\n                    'comment-alert',\n                    'comment-alt',\n                    'comment-alt-text',\n                    'comment-edit',\n                    'comment-image',\n                    'comment-list',\n                    'comment-more',\n                    'comment-outline',\n                    'comment-text',\n                    'comment-text-alt',\n                    'comment-video',\n                    'comments',\n                    'compare',\n                    'compass',\n                    'confirmation-number',\n                    'copy',\n                    'crop',\n                    'crop-16-9',\n                    'crop-3-2',\n                    'crop-5-4',\n                    'crop-7-5',\n                    'crop-din',\n                    'crop-free',\n                    'crop-landscape',\n                    'crop-portrait',\n                    'crop-square',\n                    'cutlery',\n                    'delete',\n                    'desktop-mac',\n                    'desktop-windows',\n                    'developer-board',\n                    'device-hub',\n                    'devices',\n                    'devices-off',\n                    'dialpad',\n                    'directions',\n                    'directions-bike',\n                    'directions-boat',\n                    'directions-bus',\n                    'directions-car',\n                    'directions-railway',\n                    'directions-run',\n                    'directions-subway',\n                    'directions-walk',\n                    'disc-full',\n                    'dns',\n                    'dock',\n                    'dot-circle',\n                    'dot-circle-alt',\n                    'download',\n                    'dribbble',\n                    'drink',\n                    'dropbox',\n                    'edit',\n                    'eject',\n                    'eject-alt',\n                    'email',\n                    'email-open',\n                    'equalizer',\n                    'evernote',\n                    'explicit',\n                    'exposure',\n                    'exposure-alt',\n                    'eye',\n                    'eye-off',\n                    'eyedropper',\n                    'face',\n                    'facebook',\n                    'facebook-box',\n                    'fast-forward',\n                    'fast-rewind',\n                    'favorite',\n                    'favorite-outline',\n                    'female',\n                    'file',\n                    'file-plus',\n                    'file-text',\n                    'filter-b-and-w',\n                    'filter-center-focus',\n                    'filter-frames',\n                    'filter-list',\n                    'filter-tilt-shift',\n                    'fire',\n                    'flag',\n                    'flare',\n                    'flash',\n                    'flash-auto',\n                    'flash-off',\n                    'flight-land',\n                    'flight-takeoff',\n                    'flip',\n                    'flip-to-back',\n                    'flip-to-front',\n                    'floppy',\n                    'flower',\n                    'flower-alt',\n                    'folder',\n                    'folder-outline',\n                    'folder-person',\n                    'folder-star',\n                    'folder-star-alt',\n                    'font',\n                    'format-align-center',\n                    'format-align-justify',\n                    'format-align-left',\n                    'format-align-right',\n                    'format-bold',\n                    'format-clear',\n                    'format-clear-all',\n                    'format-color-fill',\n                    'format-color-reset',\n                    'format-color-text',\n                    'format-indent-decrease',\n                    'format-indent-increase',\n                    'format-italic',\n                    'format-line-spacing',\n                    'format-list-bulleted',\n                    'format-list-numbered',\n                    'format-ltr',\n                    'format-rtl',\n                    'format-size',\n                    'format-strikethrough',\n                    'format-strikethrough-s',\n                    'format-subject',\n                    'format-underlined',\n                    'format-valign-bottom',\n                    'format-valign-center',\n                    'format-valign-top',\n                    'forward',\n                    'forward-10',\n                    'forward-30',\n                    'forward-5',\n                    'fullscreen',\n                    'fullscreen-alt',\n                    'fullscreen-exit',\n                    'functions',\n                    'gamepad',\n                    'gas-station',\n                    'gesture',\n                    'gif',\n                    'github',\n                    'github-box',\n                    'globe',\n                    'globe-alt',\n                    'globe-lock',\n                    'google',\n                    'google-drive',\n                    'google-earth',\n                    'google-glass',\n                    'google-maps',\n                    'google-pages',\n                    'google-play',\n                    'google-plus',\n                    'google-plus-box',\n                    'gps',\n                    'gps-dot',\n                    'gps-off',\n                    'gradient',\n                    'graduation-cap',\n                    'grain',\n                    'graphic-eq',\n                    'grid',\n                    'grid-off',\n                    'group-work',\n                    'hd',\n                    'hdr',\n                    'hdr-off',\n                    'hdr-strong',\n                    'hdr-weak',\n                    'headset',\n                    'headset-mic',\n                    'hearing',\n                    'help',\n                    'help-outline',\n                    'home',\n                    'hospital',\n                    'hospital-alt',\n                    'hotel',\n                    'hourglass',\n                    'hourglass-alt',\n                    'hourglass-outline',\n                    'hq',\n                    'http',\n                    'image',\n                    'image-alt',\n                    'image-o',\n                    'inbox',\n                    'info',\n                    'info-outline',\n                    'input-antenna',\n                    'input-composite',\n                    'input-hdmi',\n                    'input-power',\n                    'input-svideo',\n                    'instagram',\n                    'invert-colors',\n                    'invert-colors-off',\n                    'iridescent',\n                    'key',\n                    'keyboard',\n                    'keyboard-hide',\n                    'label',\n                    'label-alt',\n                    'label-alt-outline',\n                    'label-heart',\n                    'labels',\n                    'lamp',\n                    'landscape',\n                    'language-css3',\n                    'language-html5',\n                    'language-javascript',\n                    'language-python',\n                    'language-python-alt',\n                    'laptop',\n                    'laptop-chromebook',\n                    'laptop-mac',\n                    'lastfm',\n                    'layers',\n                    'layers-off',\n                    'leak',\n                    'leak-off',\n                    'library',\n                    'link',\n                    'linkedin-box',\n                    'local-activity',\n                    'local-airport',\n                    'local-atm',\n                    'local-bar',\n                    'local-cafe',\n                    'local-car-wash',\n                    'local-convenience-store',\n                    'local-dining',\n                    'local-drink',\n                    'local-florist',\n                    'local-gas-station',\n                    'local-grocery-store',\n                    'local-hospital',\n                    'local-hotel',\n                    'local-laundry-service',\n                    'local-library',\n                    'local-mall',\n                    'local-movies',\n                    'local-offer',\n                    'local-parking',\n                    'local-pharmacy',\n                    'local-phone',\n                    'local-pizza',\n                    'local-post-office',\n                    'local-printshop',\n                    'local-see',\n                    'local-shipping',\n                    'local-store',\n                    'local-taxi',\n                    'local-wc',\n                    'lock',\n                    'lock-open',\n                    'lock-outline',\n                    'long-arrow-down',\n                    'long-arrow-left',\n                    'long-arrow-return',\n                    'long-arrow-right',\n                    'long-arrow-tab',\n                    'long-arrow-up',\n                    'looks',\n                    'loupe',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'mail-send',\n                    'male',\n                    'male-alt',\n                    'male-female',\n                    'mall',\n                    'map',\n                    'markunread-mailbox',\n                    'memory',\n                    'menu',\n                    'mic',\n                    'mic-off',\n                    'mic-outline',\n                    'mic-setting',\n                    'minus',\n                    'minus-circle',\n                    'minus-circle-outline',\n                    'minus-square',\n                    'money',\n                    'money-box',\n                    'money-off',\n                    'mood',\n                    'mood-bad',\n                    'more',\n                    'more-vert',\n                    'mouse',\n                    'movie',\n                    'movie-alt',\n                    'my-location',\n                    'n-1-square',\n                    'n-2-square',\n                    'n-3-square',\n                    'n-4-square',\n                    'n-5-square',\n                    'n-6-square',\n                    'nature',\n                    'nature-people',\n                    'navigation',\n                    'neg-1',\n                    'neg-2',\n                    'network',\n                    'network-alert',\n                    'network-locked',\n                    'network-off',\n                    'network-outline',\n                    'network-setting',\n                    'nfc',\n                    'notifications',\n                    'notifications-active',\n                    'notifications-add',\n                    'notifications-none',\n                    'notifications-off',\n                    'notifications-paused',\n                    'open-in-browser',\n                    'open-in-new',\n                    'palette',\n                    'panorama-horizontal',\n                    'panorama-vertical',\n                    'panorama-wide-angle',\n                    'parking',\n                    'pause',\n                    'pause-circle',\n                    'pause-circle-outline',\n                    'paypal',\n                    'phone',\n                    'phone-bluetooth',\n                    'phone-end',\n                    'phone-forwarded',\n                    'phone-in-talk',\n                    'phone-locked',\n                    'phone-missed',\n                    'phone-msg',\n                    'phone-paused',\n                    'phone-ring',\n                    'phone-setting',\n                    'phone-sip',\n                    'photo-size-select-large',\n                    'photo-size-select-small',\n                    'picture-in-picture',\n                    'pin',\n                    'pin-account',\n                    'pin-assistant',\n                    'pin-drop',\n                    'pin-help',\n                    'pin-off',\n                    'pinterest-box',\n                    'pizza',\n                    'plaster',\n                    'play',\n                    'play-circle',\n                    'play-circle-outline',\n                    'play-for-work',\n                    'playlist-audio',\n                    'playlist-plus',\n                    'plus',\n                    'plus-1',\n                    'plus-2',\n                    'plus-circle',\n                    'plus-circle-o',\n                    'plus-circle-o-duplicate',\n                    'plus-square',\n                    'pocket',\n                    'polymer',\n                    'portable-wifi',\n                    'portable-wifi-changes',\n                    'portable-wifi-off',\n                    'power',\n                    'power-input',\n                    'power-setting',\n                    'present-to-all',\n                    'print',\n                    'puzzle-piece',\n                    'quote',\n                    'radio',\n                    'railway',\n                    'reader',\n                    'receipt',\n                    'redo',\n                    'refresh',\n                    'refresh-alt',\n                    'refresh-sync',\n                    'refresh-sync-alert',\n                    'refresh-sync-off',\n                    'remote-control',\n                    'remote-control-alt',\n                    'repeat',\n                    'repeat-one',\n                    'replay',\n                    'replay-10',\n                    'replay-30',\n                    'replay-5',\n                    'roller',\n                    'rotate-ccw',\n                    'rotate-cw',\n                    'rotate-left',\n                    'rotate-right',\n                    'router',\n                    'ruler',\n                    'run',\n                    'satellite',\n                    'scanner',\n                    'scissors',\n                    'screen-rotation',\n                    'screen-rotation-lock',\n                    'search',\n                    'search-for',\n                    'search-in-file',\n                    'search-in-page',\n                    'search-replace',\n                    'seat',\n                    'sec-10',\n                    'sec-3',\n                    'select-all',\n                    'settings',\n                    'settings-square',\n                    'share',\n                    'shield-check',\n                    'shield-security',\n                    'shopping-basket',\n                    'shopping-cart',\n                    'shopping-cart-plus',\n                    'shuffle',\n                    'sign-in',\n                    'skip-next',\n                    'skip-previous',\n                    'slideshow',\n                    'smartphone',\n                    'smartphone-android',\n                    'smartphone-download',\n                    'smartphone-erase',\n                    'smartphone-info',\n                    'smartphone-iphone',\n                    'smartphone-landscape',\n                    'smartphone-landscape-lock',\n                    'smartphone-lock',\n                    'smartphone-portrait-lock',\n                    'smartphone-ring',\n                    'smartphone-setting',\n                    'smartphone-setup',\n                    'sort-amount-asc',\n                    'sort-amount-desc',\n                    'sort-asc',\n                    'sort-desc',\n                    'space-bar',\n                    'speaker',\n                    'spellcheck',\n                    'square-down',\n                    'square-o',\n                    'square-right',\n                    'star',\n                    'star-circle',\n                    'star-half',\n                    'star-outline',\n                    'steam',\n                    'steam-square',\n                    'stop',\n                    'storage',\n                    'store',\n                    'store-24',\n                    'subway',\n                    'sun',\n                    'surround-sound',\n                    'swap',\n                    'swap-alt',\n                    'swap-vertical',\n                    'swap-vertical-circle',\n                    'tab',\n                    'tab-unselected',\n                    'tablet',\n                    'tablet-android',\n                    'tablet-mac',\n                    'tag',\n                    'tag-close',\n                    'tag-more',\n                    'tap-and-play',\n                    'text-format',\n                    'texture',\n                    'thumb-down',\n                    'thumb-up',\n                    'thumb-up-down',\n                    'ticket-star',\n                    'time',\n                    'time-countdown',\n                    'time-interval',\n                    'time-restore',\n                    'time-restore-setting',\n                    'timer',\n                    'timer-off',\n                    'toll',\n                    'tonality',\n                    'toys',\n                    'traffic',\n                    'transform',\n                    'translate',\n                    'trending-down',\n                    'trending-flat',\n                    'trending-up',\n                    'triangle-down',\n                    'triangle-up',\n                    'truck',\n                    'tune',\n                    'turning-sign',\n                    'tv',\n                    'tv-alt-play',\n                    'tv-list',\n                    'tv-play',\n                    'twitter',\n                    'twitter-box',\n                    'undo',\n                    'unfold-less',\n                    'unfold-more',\n                    'upload',\n                    'usb',\n                    'vibration',\n                    'videocam',\n                    'videocam-off',\n                    'videocam-switch',\n                    'view-agenda',\n                    'view-array',\n                    'view-carousel',\n                    'view-column',\n                    'view-comfy',\n                    'view-compact',\n                    'view-dashboard',\n                    'view-day',\n                    'view-headline',\n                    'view-list',\n                    'view-list-alt',\n                    'view-module',\n                    'view-quilt',\n                    'view-stream',\n                    'view-subtitles',\n                    'view-toc',\n                    'view-web',\n                    'view-week',\n                    'vignette',\n                    'vk',\n                    'voicemail',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-off',\n                    'volume-up',\n                    'walk',\n                    'wallpaper',\n                    'washing-machine',\n                    'watch',\n                    'wb-auto',\n                    'widgets',\n                    'wifi',\n                    'wifi-alt',\n                    'wifi-alt-2',\n                    'wifi-info',\n                    'wifi-lock',\n                    'wifi-off',\n                    'wifi-outline',\n                    'wikipedia',\n                    'window-maximize',\n                    'window-minimize',\n                    'window-restore',\n                    'windows',\n                    'wrap-text',\n                    'wrench',\n                    'zero',\n                    'zoom-in',\n                    'zoom-out'\n                ]\n            },\n            {\n                version: '2.1.2',\n                icons: [\n                    '',\n                    //'zmdi',\n                    '3d-rotation',\n                    'account',\n                    'account-add',\n                    'account-box',\n                    'account-box-mail',\n                    'account-box-o',\n                    'account-box-phone',\n                    'account-calendar',\n                    'account-circle',\n                    'account-o',\n                    'accounts',\n                    'accounts-add',\n                    'accounts-alt',\n                    'accounts-list',\n                    'accounts-list-alt',\n                    'accounts-outline',\n                    'airline-seat-flat',\n                    'airline-seat-flat-angled',\n                    'airline-seat-individual-suite',\n                    'airline-seat-legroom-extra',\n                    'airline-seat-legroom-normal',\n                    'airline-seat-legroom-reduced',\n                    'airline-seat-recline-extra',\n                    'airline-seat-recline-normal',\n                    'airplane',\n                    'airplane-off',\n                    'airplay',\n                    'alarm',\n                    'alarm-check',\n                    'alarm-off',\n                    'alarm-plus',\n                    'alarm-snooze',\n                    'album',\n                    'alert-circle',\n                    'alert-circle-o',\n                    'alert-octagon',\n                    'alert-polygon',\n                    'alert-triangle',\n                    'android',\n                    'android-alt',\n                    'apple',\n                    'apps',\n                    'archive',\n                    'arrow-left',\n                    'arrow-left-bottom',\n                    'arrow-merge',\n                    'arrow-missed',\n                    'arrow-right',\n                    'arrow-right-top',\n                    'arrow-split',\n                    'arrows',\n                    'aspect-ratio',\n                    'aspect-ratio-alt',\n                    'assignment',\n                    'assignment-account',\n                    'assignment-alert',\n                    'assignment-check',\n                    'assignment-o',\n                    'assignment-return',\n                    'assignment-returned',\n                    'attachment',\n                    'attachment-alt',\n                    'audio',\n                    'badge-check',\n                    'balance',\n                    'balance-wallet',\n                    'battery',\n                    'battery-alert',\n                    'battery-flash',\n                    'battery-unknown',\n                    'behance',\n                    'bike',\n                    'block',\n                    'block-alt',\n                    'bluetooth',\n                    'bluetooth-connected',\n                    'bluetooth-off',\n                    'bluetooth-search',\n                    'bluetooth-setting',\n                    'blur',\n                    'blur-circular',\n                    'blur-linear',\n                    'blur-off',\n                    'boat',\n                    'book',\n                    'book-image',\n                    'bookmark',\n                    'bookmark-outline',\n                    'border-all',\n                    'border-bottom',\n                    'border-clear',\n                    'border-color',\n                    'border-horizontal',\n                    'border-inner',\n                    'border-left',\n                    'border-outer',\n                    'border-right',\n                    'border-style',\n                    'border-top',\n                    'border-vertical',\n                    'brightness-2',\n                    'brightness-3',\n                    'brightness-4',\n                    'brightness-5',\n                    'brightness-6',\n                    'brightness-7',\n                    'brightness-auto',\n                    'brightness-high',\n                    'brightness-setting',\n                    'broken-image',\n                    'brush',\n                    'bug',\n                    'bus',\n                    'cake',\n                    'calendar',\n                    'calendar-alt',\n                    'calendar-check',\n                    'calendar-close',\n                    'calendar-note',\n                    'camera',\n                    'camera-add',\n                    'camera-alt',\n                    'camera-bw',\n                    'camera-front',\n                    'camera-mic',\n                    'camera-party-mode',\n                    'camera-rear',\n                    'camera-roll',\n                    'camera-switch',\n                    'car',\n                    'car-taxi',\n                    'car-wash',\n                    'card',\n                    'card-alert',\n                    'card-giftcard',\n                    'card-membership',\n                    'card-off',\n                    'card-sd',\n                    'card-sim',\n                    'card-travel',\n                    'caret-down',\n                    'caret-down-circle',\n                    'caret-left',\n                    'caret-left-circle',\n                    'caret-right',\n                    'caret-right-circle',\n                    'caret-up',\n                    'caret-up-circle',\n                    'case',\n                    'case-check',\n                    'case-download',\n                    'case-play',\n                    'cast',\n                    'cast-connected',\n                    'center-focus-strong',\n                    'center-focus-weak',\n                    'chart',\n                    'chart-donut',\n                    'check',\n                    'check-all',\n                    'check-circle',\n                    'check-circle-u',\n                    'check-square',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle',\n                    'circle-o',\n                    'city',\n                    'city-alt',\n                    'close',\n                    'close-circle',\n                    'close-circle-o',\n                    'closed-caption',\n                    'cloud',\n                    'cloud-box',\n                    'cloud-circle',\n                    'cloud-done',\n                    'cloud-download',\n                    'cloud-off',\n                    'cloud-outline',\n                    'cloud-outline-alt',\n                    'cloud-upload',\n                    'cocktail',\n                    'code',\n                    'code-setting',\n                    'code-smartphone',\n                    'codepen',\n                    'coffee',\n                    'collection-bookmark',\n                    'collection-case-play',\n                    'collection-folder-image',\n                    'collection-image',\n                    'collection-image-o',\n                    'collection-item',\n                    'collection-item-1',\n                    'collection-item-2',\n                    'collection-item-3',\n                    'collection-item-4',\n                    'collection-item-5',\n                    'collection-item-6',\n                    'collection-item-7',\n                    'collection-item-8',\n                    'collection-item-9',\n                    'collection-item-9-plus',\n                    'collection-music',\n                    'collection-pdf',\n                    'collection-plus',\n                    'collection-speaker',\n                    'collection-text',\n                    'collection-video',\n                    'comment',\n                    'comment-alert',\n                    'comment-alt',\n                    'comment-alt-text',\n                    'comment-edit',\n                    'comment-image',\n                    'comment-list',\n                    'comment-more',\n                    'comment-outline',\n                    'comment-text',\n                    'comment-text-alt',\n                    'comment-video',\n                    'comments',\n                    'compare',\n                    'compass',\n                    'confirmation-number',\n                    'copy',\n                    'crop',\n                    'crop-16-9',\n                    'crop-3-2',\n                    'crop-5-4',\n                    'crop-7-5',\n                    'crop-din',\n                    'crop-free',\n                    'crop-landscape',\n                    'crop-portrait',\n                    'crop-square',\n                    'cutlery',\n                    'delete',\n                    'desktop-mac',\n                    'desktop-windows',\n                    'developer-board',\n                    'device-hub',\n                    'devices',\n                    'devices-off',\n                    'dialpad',\n                    'directions',\n                    'directions-bike',\n                    'directions-boat',\n                    'directions-bus',\n                    'directions-car',\n                    'directions-railway',\n                    'directions-run',\n                    'directions-subway',\n                    'directions-walk',\n                    'disc-full',\n                    'dns',\n                    'dock',\n                    'dot-circle',\n                    'dot-circle-alt',\n                    'download',\n                    'dribbble',\n                    'drink',\n                    'dropbox',\n                    'edit',\n                    'eject',\n                    'eject-alt',\n                    'email',\n                    'email-open',\n                    'equalizer',\n                    'evernote',\n                    'explicit',\n                    'exposure',\n                    'exposure-alt',\n                    'eye',\n                    'eye-off',\n                    'eyedropper',\n                    'face',\n                    'facebook',\n                    'facebook-box',\n                    'fast-forward',\n                    'fast-rewind',\n                    'favorite',\n                    'favorite-outline',\n                    'female',\n                    'file',\n                    'file-plus',\n                    'file-text',\n                    'filter-b-and-w',\n                    'filter-center-focus',\n                    'filter-frames',\n                    'filter-list',\n                    'filter-tilt-shift',\n                    'fire',\n                    'flag',\n                    'flare',\n                    'flash',\n                    'flash-auto',\n                    'flash-off',\n                    'flight-land',\n                    'flight-takeoff',\n                    'flip',\n                    'flip-to-back',\n                    'flip-to-front',\n                    'floppy',\n                    'flower',\n                    'flower-alt',\n                    'folder',\n                    'folder-outline',\n                    'folder-person',\n                    'folder-star',\n                    'folder-star-alt',\n                    'font',\n                    'format-align-center',\n                    'format-align-justify',\n                    'format-align-left',\n                    'format-align-right',\n                    'format-bold',\n                    'format-clear',\n                    'format-clear-all',\n                    'format-color-fill',\n                    'format-color-reset',\n                    'format-color-text',\n                    'format-indent-decrease',\n                    'format-indent-increase',\n                    'format-italic',\n                    'format-line-spacing',\n                    'format-list-bulleted',\n                    'format-list-numbered',\n                    'format-ltr',\n                    'format-rtl',\n                    'format-size',\n                    'format-strikethrough',\n                    'format-strikethrough-s',\n                    'format-subject',\n                    'format-underlined',\n                    'format-valign-bottom',\n                    'format-valign-center',\n                    'format-valign-top',\n                    'forward',\n                    'forward-10',\n                    'forward-30',\n                    'forward-5',\n                    'fullscreen',\n                    'fullscreen-alt',\n                    'fullscreen-exit',\n                    'functions',\n                    'gamepad',\n                    'gas-station',\n                    'gesture',\n                    'gif',\n                    'github',\n                    'github-box',\n                    'globe',\n                    'globe-alt',\n                    'globe-lock',\n                    'google',\n                    'google-drive',\n                    'google-earth',\n                    'google-glass',\n                    'google-maps',\n                    'google-pages',\n                    'google-play',\n                    'google-plus',\n                    'google-plus-box',\n                    'gps',\n                    'gps-dot',\n                    'gps-off',\n                    'gradient',\n                    'graduation-cap',\n                    'grain',\n                    'graphic-eq',\n                    'grid',\n                    'grid-off',\n                    'group-work',\n                    'hd',\n                    'hdr',\n                    'hdr-off',\n                    'hdr-strong',\n                    'hdr-weak',\n                    'headset',\n                    'headset-mic',\n                    'hearing',\n                    'help',\n                    'help-outline',\n                    'home',\n                    'hospital',\n                    'hospital-alt',\n                    'hotel',\n                    'hourglass',\n                    'hourglass-alt',\n                    'hourglass-outline',\n                    'hq',\n                    'http',\n                    'image',\n                    'image-alt',\n                    'image-o',\n                    'inbox',\n                    'info',\n                    'info-outline',\n                    'input-antenna',\n                    'input-composite',\n                    'input-hdmi',\n                    'input-power',\n                    'input-svideo',\n                    'instagram',\n                    'invert-colors',\n                    'invert-colors-off',\n                    'iridescent',\n                    'key',\n                    'keyboard',\n                    'keyboard-hide',\n                    'label',\n                    'label-alt',\n                    'label-alt-outline',\n                    'label-heart',\n                    'labels',\n                    'lamp',\n                    'landscape',\n                    'language-css3',\n                    'language-html5',\n                    'language-javascript',\n                    'language-python',\n                    'language-python-alt',\n                    'laptop',\n                    'laptop-chromebook',\n                    'laptop-mac',\n                    'lastfm',\n                    'layers',\n                    'layers-off',\n                    'leak',\n                    'leak-off',\n                    'library',\n                    'link',\n                    'linkedin-box',\n                    'local-activity',\n                    'local-airport',\n                    'local-atm',\n                    'local-bar',\n                    'local-cafe',\n                    'local-car-wash',\n                    'local-convenience-store',\n                    'local-dining',\n                    'local-drink',\n                    'local-florist',\n                    'local-gas-station',\n                    'local-grocery-store',\n                    'local-hospital',\n                    'local-hotel',\n                    'local-laundry-service',\n                    'local-library',\n                    'local-mall',\n                    'local-movies',\n                    'local-offer',\n                    'local-parking',\n                    'local-pharmacy',\n                    'local-phone',\n                    'local-pizza',\n                    'local-post-office',\n                    'local-printshop',\n                    'local-see',\n                    'local-shipping',\n                    'local-store',\n                    'local-taxi',\n                    'local-wc',\n                    'lock',\n                    'lock-open',\n                    'lock-outline',\n                    'long-arrow-down',\n                    'long-arrow-left',\n                    'long-arrow-return',\n                    'long-arrow-right',\n                    'long-arrow-tab',\n                    'long-arrow-up',\n                    'looks',\n                    'loupe',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'mail-send',\n                    'male',\n                    'male-alt',\n                    'male-female',\n                    'mall',\n                    'map',\n                    'markunread-mailbox',\n                    'memory',\n                    'menu',\n                    'mic',\n                    'mic-off',\n                    'mic-outline',\n                    'mic-setting',\n                    'minus',\n                    'minus-circle',\n                    'minus-circle-outline',\n                    'minus-square',\n                    'money',\n                    'money-box',\n                    'money-off',\n                    'mood',\n                    'mood-bad',\n                    'more',\n                    'more-vert',\n                    'mouse',\n                    'movie',\n                    'movie-alt',\n                    'my-location',\n                    'n-1-square',\n                    'n-2-square',\n                    'n-3-square',\n                    'n-4-square',\n                    'n-5-square',\n                    'n-6-square',\n                    'nature',\n                    'nature-people',\n                    'navigation',\n                    'neg-1',\n                    'neg-2',\n                    'network',\n                    'network-alert',\n                    'network-locked',\n                    'network-off',\n                    'network-outline',\n                    'network-setting',\n                    'nfc',\n                    'notifications',\n                    'notifications-active',\n                    'notifications-add',\n                    'notifications-none',\n                    'notifications-off',\n                    'notifications-paused',\n                    'open-in-browser',\n                    'open-in-new',\n                    'palette',\n                    'panorama-horizontal',\n                    'panorama-vertical',\n                    'panorama-wide-angle',\n                    'parking',\n                    'pause',\n                    'pause-circle',\n                    'pause-circle-outline',\n                    'paypal',\n                    'phone',\n                    'phone-bluetooth',\n                    'phone-end',\n                    'phone-forwarded',\n                    'phone-in-talk',\n                    'phone-locked',\n                    'phone-missed',\n                    'phone-msg',\n                    'phone-paused',\n                    'phone-ring',\n                    'phone-setting',\n                    'phone-sip',\n                    'photo-size-select-large',\n                    'photo-size-select-small',\n                    'picture-in-picture',\n                    'pin',\n                    'pin-account',\n                    'pin-assistant',\n                    'pin-drop',\n                    'pin-help',\n                    'pin-off',\n                    'pinterest-box',\n                    'pizza',\n                    'plaster',\n                    'play',\n                    'play-circle',\n                    'play-circle-outline',\n                    'play-for-work',\n                    'playlist-audio',\n                    'playlist-plus',\n                    'plus',\n                    'plus-1',\n                    'plus-2',\n                    'plus-circle',\n                    'plus-circle-o',\n                    'plus-circle-o-duplicate',\n                    'plus-square',\n                    'pocket',\n                    'polymer',\n                    'portable-wifi',\n                    'portable-wifi-changes',\n                    'portable-wifi-off',\n                    'power',\n                    'power-input',\n                    'power-setting',\n                    'present-to-all',\n                    'print',\n                    'puzzle-piece',\n                    'quote',\n                    'radio',\n                    'railway',\n                    'reader',\n                    'receipt',\n                    'redo',\n                    'refresh',\n                    'refresh-alt',\n                    'refresh-sync',\n                    'refresh-sync-alert',\n                    'refresh-sync-off',\n                    'remote-control',\n                    'remote-control-alt',\n                    'repeat',\n                    'repeat-one',\n                    'replay',\n                    'replay-10',\n                    'replay-30',\n                    'replay-5',\n                    'roller',\n                    'rotate-ccw',\n                    'rotate-cw',\n                    'rotate-left',\n                    'rotate-right',\n                    'router',\n                    'ruler',\n                    'run',\n                    'satellite',\n                    'scanner',\n                    'scissors',\n                    'screen-rotation',\n                    'screen-rotation-lock',\n                    'search',\n                    'search-for',\n                    'search-in-file',\n                    'search-in-page',\n                    'search-replace',\n                    'seat',\n                    'sec-10',\n                    'sec-3',\n                    'select-all',\n                    'settings',\n                    'settings-square',\n                    'share',\n                    'shield-check',\n                    'shield-security',\n                    'shopping-basket',\n                    'shopping-cart',\n                    'shopping-cart-plus',\n                    'shuffle',\n                    'sign-in',\n                    'skip-next',\n                    'skip-previous',\n                    'slideshow',\n                    'smartphone',\n                    'smartphone-android',\n                    'smartphone-download',\n                    'smartphone-erase',\n                    'smartphone-info',\n                    'smartphone-iphone',\n                    'smartphone-landscape',\n                    'smartphone-landscape-lock',\n                    'smartphone-lock',\n                    'smartphone-portrait-lock',\n                    'smartphone-ring',\n                    'smartphone-setting',\n                    'smartphone-setup',\n                    'sort-amount-asc',\n                    'sort-amount-desc',\n                    'sort-asc',\n                    'sort-desc',\n                    'space-bar',\n                    'speaker',\n                    'spellcheck',\n                    'square-down',\n                    'square-o',\n                    'square-right',\n                    'star',\n                    'star-circle',\n                    'star-half',\n                    'star-outline',\n                    'steam',\n                    'steam-square',\n                    'stop',\n                    'storage',\n                    'store',\n                    'store-24',\n                    'subway',\n                    'sun',\n                    'surround-sound',\n                    'swap',\n                    'swap-alt',\n                    'swap-vertical',\n                    'swap-vertical-circle',\n                    'tab',\n                    'tab-unselected',\n                    'tablet',\n                    'tablet-android',\n                    'tablet-mac',\n                    'tag',\n                    'tag-close',\n                    'tag-more',\n                    'tap-and-play',\n                    'text-format',\n                    'texture',\n                    'thumb-down',\n                    'thumb-up',\n                    'thumb-up-down',\n                    'ticket-star',\n                    'time',\n                    'time-countdown',\n                    'time-interval',\n                    'time-restore',\n                    'time-restore-setting',\n                    'timer',\n                    'timer-off',\n                    'toll',\n                    'tonality',\n                    'toys',\n                    'traffic',\n                    'transform',\n                    'translate',\n                    'trending-down',\n                    'trending-flat',\n                    'trending-up',\n                    'triangle-down',\n                    'triangle-up',\n                    'truck',\n                    'tune',\n                    'turning-sign',\n                    'tv',\n                    'tv-alt-play',\n                    'tv-list',\n                    'tv-play',\n                    'twitter',\n                    'twitter-box',\n                    'undo',\n                    'unfold-less',\n                    'unfold-more',\n                    'upload',\n                    'usb',\n                    'vibration',\n                    'videocam',\n                    'videocam-off',\n                    'videocam-switch',\n                    'view-agenda',\n                    'view-array',\n                    'view-carousel',\n                    'view-column',\n                    'view-comfy',\n                    'view-compact',\n                    'view-dashboard',\n                    'view-day',\n                    'view-headline',\n                    'view-list',\n                    'view-list-alt',\n                    'view-module',\n                    'view-quilt',\n                    'view-stream',\n                    'view-subtitles',\n                    'view-toc',\n                    'view-web',\n                    'view-week',\n                    'vignette',\n                    'vk',\n                    'voicemail',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-off',\n                    'volume-up',\n                    'walk',\n                    'wallpaper',\n                    'washing-machine',\n                    'watch',\n                    'wb-auto',\n                    'widgets',\n                    'wifi',\n                    'wifi-alt',\n                    'wifi-alt-2',\n                    'wifi-info',\n                    'wifi-lock',\n                    'wifi-off',\n                    'wifi-outline',\n                    'wikipedia',\n                    'window-maximize',\n                    'window-minimize',\n                    'window-restore',\n                    'windows',\n                    'wrap-text',\n                    'wrench',\n                    'zero',\n                    'zoom-in',\n                    'zoom-out'\n                ]\n            },\n            {\n                version: '2.2.0',\n                icons: [\n                    '',\n                    //'zmdi',\n                    '3d-rotation',\n                    '500px',\n                    '8tracks',\n                    'account',\n                    'account-add',\n                    'account-box',\n                    'account-box-mail',\n                    'account-box-o',\n                    'account-box-phone',\n                    'account-calendar',\n                    'account-circle',\n                    'account-o',\n                    'accounts',\n                    'accounts-add',\n                    'accounts-alt',\n                    'accounts-list',\n                    'accounts-list-alt',\n                    'accounts-outline',\n                    'airline-seat-flat',\n                    'airline-seat-flat-angled',\n                    'airline-seat-individual-suite',\n                    'airline-seat-legroom-extra',\n                    'airline-seat-legroom-normal',\n                    'airline-seat-legroom-reduced',\n                    'airline-seat-recline-extra',\n                    'airline-seat-recline-normal',\n                    'airplane',\n                    'airplane-off',\n                    'airplay',\n                    'alarm',\n                    'alarm-check',\n                    'alarm-off',\n                    'alarm-plus',\n                    'alarm-snooze',\n                    'album',\n                    'alert-circle',\n                    'alert-circle-o',\n                    'alert-octagon',\n                    'alert-polygon',\n                    'alert-triangle',\n                    'amazon',\n                    'android',\n                    'android-alt',\n                    'apple',\n                    'apps',\n                    'archive',\n                    'arrow-left',\n                    'arrow-left-bottom',\n                    'arrow-merge',\n                    'arrow-missed',\n                    'arrow-right',\n                    'arrow-right-top',\n                    'arrow-split',\n                    'arrows',\n                    'aspect-ratio',\n                    'aspect-ratio-alt',\n                    'assignment',\n                    'assignment-account',\n                    'assignment-alert',\n                    'assignment-check',\n                    'assignment-o',\n                    'assignment-return',\n                    'assignment-returned',\n                    'attachment',\n                    'attachment-alt',\n                    'audio',\n                    'badge-check',\n                    'balance',\n                    'balance-wallet',\n                    'battery',\n                    'battery-alert',\n                    'battery-flash',\n                    'battery-unknown',\n                    'behance',\n                    'bike',\n                    'block',\n                    'block-alt',\n                    'blogger',\n                    'bluetooth',\n                    'bluetooth-connected',\n                    'bluetooth-off',\n                    'bluetooth-search',\n                    'bluetooth-setting',\n                    'blur',\n                    'blur-circular',\n                    'blur-linear',\n                    'blur-off',\n                    'boat',\n                    'book',\n                    'book-image',\n                    'bookmark',\n                    'bookmark-outline',\n                    'border-all',\n                    'border-bottom',\n                    'border-clear',\n                    'border-color',\n                    'border-horizontal',\n                    'border-inner',\n                    'border-left',\n                    'border-outer',\n                    'border-right',\n                    'border-style',\n                    'border-top',\n                    'border-vertical',\n                    'brightness-2',\n                    'brightness-3',\n                    'brightness-4',\n                    'brightness-5',\n                    'brightness-6',\n                    'brightness-7',\n                    'brightness-auto',\n                    'brightness-high',\n                    'brightness-setting',\n                    'broken-image',\n                    'brush',\n                    'bug',\n                    'bus',\n                    'cake',\n                    'calendar',\n                    'calendar-alt',\n                    'calendar-check',\n                    'calendar-close',\n                    'calendar-note',\n                    'camera',\n                    'camera-add',\n                    'camera-alt',\n                    'camera-bw',\n                    'camera-front',\n                    'camera-mic',\n                    'camera-party-mode',\n                    'camera-rear',\n                    'camera-roll',\n                    'camera-switch',\n                    'car',\n                    'car-taxi',\n                    'car-wash',\n                    'card',\n                    'card-alert',\n                    'card-giftcard',\n                    'card-membership',\n                    'card-off',\n                    'card-sd',\n                    'card-sim',\n                    'card-travel',\n                    'caret-down',\n                    'caret-down-circle',\n                    'caret-left',\n                    'caret-left-circle',\n                    'caret-right',\n                    'caret-right-circle',\n                    'caret-up',\n                    'caret-up-circle',\n                    'case',\n                    'case-check',\n                    'case-download',\n                    'case-play',\n                    'cast',\n                    'cast-connected',\n                    'center-focus-strong',\n                    'center-focus-weak',\n                    'chart',\n                    'chart-donut',\n                    'check',\n                    'check-all',\n                    'check-circle',\n                    'check-circle-u',\n                    'check-square',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle',\n                    'circle-o',\n                    'city',\n                    'city-alt',\n                    'close',\n                    'close-circle',\n                    'close-circle-o',\n                    'closed-caption',\n                    'cloud',\n                    'cloud-box',\n                    'cloud-circle',\n                    'cloud-done',\n                    'cloud-download',\n                    'cloud-off',\n                    'cloud-outline',\n                    'cloud-outline-alt',\n                    'cloud-upload',\n                    'cocktail',\n                    'code',\n                    'code-setting',\n                    'code-smartphone',\n                    'codepen',\n                    'coffee',\n                    'collection-bookmark',\n                    'collection-case-play',\n                    'collection-folder-image',\n                    'collection-image',\n                    'collection-image-o',\n                    'collection-item',\n                    'collection-item-1',\n                    'collection-item-2',\n                    'collection-item-3',\n                    'collection-item-4',\n                    'collection-item-5',\n                    'collection-item-6',\n                    'collection-item-7',\n                    'collection-item-8',\n                    'collection-item-9',\n                    'collection-item-9-plus',\n                    'collection-music',\n                    'collection-pdf',\n                    'collection-plus',\n                    'collection-speaker',\n                    'collection-text',\n                    'collection-video',\n                    'comment',\n                    'comment-alert',\n                    'comment-alt',\n                    'comment-alt-text',\n                    'comment-edit',\n                    'comment-image',\n                    'comment-list',\n                    'comment-more',\n                    'comment-outline',\n                    'comment-text',\n                    'comment-text-alt',\n                    'comment-video',\n                    'comments',\n                    'compare',\n                    'compass',\n                    'confirmation-number',\n                    'copy',\n                    'crop',\n                    'crop-16-9',\n                    'crop-3-2',\n                    'crop-5-4',\n                    'crop-7-5',\n                    'crop-din',\n                    'crop-free',\n                    'crop-landscape',\n                    'crop-portrait',\n                    'crop-square',\n                    'cutlery',\n                    'delete',\n                    'delicious',\n                    'desktop-mac',\n                    'desktop-windows',\n                    'developer-board',\n                    'device-hub',\n                    'devices',\n                    'devices-off',\n                    'dialpad',\n                    'directions',\n                    'directions-bike',\n                    'directions-boat',\n                    'directions-bus',\n                    'directions-car',\n                    'directions-railway',\n                    'directions-run',\n                    'directions-subway',\n                    'directions-walk',\n                    'disc-full',\n                    'disqus',\n                    'dns',\n                    'dock',\n                    'dot-circle',\n                    'dot-circle-alt',\n                    'download',\n                    'dribbble',\n                    'drink',\n                    'dropbox',\n                    'edit',\n                    'eject',\n                    'eject-alt',\n                    'email',\n                    'email-open',\n                    'equalizer',\n                    'evernote',\n                    'explicit',\n                    'exposure',\n                    'exposure-alt',\n                    'eye',\n                    'eye-off',\n                    'eyedropper',\n                    'face',\n                    'facebook',\n                    'facebook-box',\n                    'fast-forward',\n                    'fast-rewind',\n                    'favorite',\n                    'favorite-outline',\n                    'female',\n                    'file',\n                    'file-plus',\n                    'file-text',\n                    'filter-b-and-w',\n                    'filter-center-focus',\n                    'filter-frames',\n                    'filter-list',\n                    'filter-tilt-shift',\n                    'fire',\n                    'flag',\n                    'flare',\n                    'flash',\n                    'flash-auto',\n                    'flash-off',\n                    'flattr',\n                    'flickr',\n                    'flight-land',\n                    'flight-takeoff',\n                    'flip',\n                    'flip-to-back',\n                    'flip-to-front',\n                    'floppy',\n                    'flower',\n                    'flower-alt',\n                    'folder',\n                    'folder-outline',\n                    'folder-person',\n                    'folder-star',\n                    'folder-star-alt',\n                    'font',\n                    'format-align-center',\n                    'format-align-justify',\n                    'format-align-left',\n                    'format-align-right',\n                    'format-bold',\n                    'format-clear',\n                    'format-clear-all',\n                    'format-color-fill',\n                    'format-color-reset',\n                    'format-color-text',\n                    'format-indent-decrease',\n                    'format-indent-increase',\n                    'format-italic',\n                    'format-line-spacing',\n                    'format-list-bulleted',\n                    'format-list-numbered',\n                    'format-ltr',\n                    'format-rtl',\n                    'format-size',\n                    'format-strikethrough',\n                    'format-strikethrough-s',\n                    'format-subject',\n                    'format-underlined',\n                    'format-valign-bottom',\n                    'format-valign-center',\n                    'format-valign-top',\n                    'forward',\n                    'forward-10',\n                    'forward-30',\n                    'forward-5',\n                    'fullscreen',\n                    'fullscreen-alt',\n                    'fullscreen-exit',\n                    'functions',\n                    'gamepad',\n                    'gas-station',\n                    'gesture',\n                    'gif',\n                    'github',\n                    'github-alt',\n                    'github-box',\n                    'globe',\n                    'globe-alt',\n                    'globe-lock',\n                    'google',\n                    'google-drive',\n                    'google-earth',\n                    'google-glass',\n                    'google-maps',\n                    'google-old',\n                    'google-pages',\n                    'google-play',\n                    'google-plus',\n                    'google-plus-box',\n                    'gps',\n                    'gps-dot',\n                    'gps-off',\n                    'gradient',\n                    'graduation-cap',\n                    'grain',\n                    'graphic-eq',\n                    'grid',\n                    'grid-off',\n                    'group',\n                    'group-work',\n                    'hd',\n                    'hdr',\n                    'hdr-off',\n                    'hdr-strong',\n                    'hdr-weak',\n                    'headset',\n                    'headset-mic',\n                    'hearing',\n                    'help',\n                    'help-outline',\n                    'home',\n                    'hospital',\n                    'hospital-alt',\n                    'hotel',\n                    'hourglass',\n                    'hourglass-alt',\n                    'hourglass-outline',\n                    'hq',\n                    'http',\n                    'image',\n                    'image-alt',\n                    'image-o',\n                    'inbox',\n                    'info',\n                    'info-outline',\n                    'input-antenna',\n                    'input-composite',\n                    'input-hdmi',\n                    'input-power',\n                    'input-svideo',\n                    'instagram',\n                    'invert-colors',\n                    'invert-colors-off',\n                    'iridescent',\n                    'key',\n                    'keyboard',\n                    'keyboard-hide',\n                    'label',\n                    'label-alt',\n                    'label-alt-outline',\n                    'label-heart',\n                    'labels',\n                    'lamp',\n                    'landscape',\n                    'language-css3',\n                    'language-html5',\n                    'language-javascript',\n                    'language-python',\n                    'language-python-alt',\n                    'laptop',\n                    'laptop-chromebook',\n                    'laptop-mac',\n                    'lastfm',\n                    'layers',\n                    'layers-off',\n                    'leak',\n                    'leak-off',\n                    'library',\n                    'link',\n                    'linkedin',\n                    'linkedin-box',\n                    'local-activity',\n                    'local-airport',\n                    'local-atm',\n                    'local-bar',\n                    'local-cafe',\n                    'local-car-wash',\n                    'local-convenience-store',\n                    'local-dining',\n                    'local-drink',\n                    'local-florist',\n                    'local-gas-station',\n                    'local-grocery-store',\n                    'local-hospital',\n                    'local-hotel',\n                    'local-laundry-service',\n                    'local-library',\n                    'local-mall',\n                    'local-movies',\n                    'local-offer',\n                    'local-parking',\n                    'local-pharmacy',\n                    'local-phone',\n                    'local-pizza',\n                    'local-post-office',\n                    'local-printshop',\n                    'local-see',\n                    'local-shipping',\n                    'local-store',\n                    'local-taxi',\n                    'local-wc',\n                    'lock',\n                    'lock-open',\n                    'lock-outline',\n                    'long-arrow-down',\n                    'long-arrow-left',\n                    'long-arrow-return',\n                    'long-arrow-right',\n                    'long-arrow-tab',\n                    'long-arrow-up',\n                    'looks',\n                    'loupe',\n                    'mail-reply',\n                    'mail-reply-all',\n                    'mail-send',\n                    'male',\n                    'male-alt',\n                    'male-female',\n                    'mall',\n                    'map',\n                    'markunread-mailbox',\n                    'memory',\n                    'menu',\n                    'mic',\n                    'mic-off',\n                    'mic-outline',\n                    'mic-setting',\n                    'minus',\n                    'minus-circle',\n                    'minus-circle-outline',\n                    'minus-square',\n                    'money',\n                    'money-box',\n                    'money-off',\n                    'mood',\n                    'mood-bad',\n                    'more',\n                    'more-vert',\n                    'mouse',\n                    'movie',\n                    'movie-alt',\n                    'my-location',\n                    'n-1-square',\n                    'n-2-square',\n                    'n-3-square',\n                    'n-4-square',\n                    'n-5-square',\n                    'n-6-square',\n                    'nature',\n                    'nature-people',\n                    'navigation',\n                    'neg-1',\n                    'neg-2',\n                    'network',\n                    'network-alert',\n                    'network-locked',\n                    'network-off',\n                    'network-outline',\n                    'network-setting',\n                    'nfc',\n                    'notifications',\n                    'notifications-active',\n                    'notifications-add',\n                    'notifications-none',\n                    'notifications-off',\n                    'notifications-paused',\n                    'odnoklassniki',\n                    'open-in-browser',\n                    'open-in-new',\n                    'outlook',\n                    'palette',\n                    'panorama-horizontal',\n                    'panorama-vertical',\n                    'panorama-wide-angle',\n                    'parking',\n                    'pause',\n                    'pause-circle',\n                    'pause-circle-outline',\n                    'paypal',\n                    'paypal-alt',\n                    'phone',\n                    'phone-bluetooth',\n                    'phone-end',\n                    'phone-forwarded',\n                    'phone-in-talk',\n                    'phone-locked',\n                    'phone-missed',\n                    'phone-msg',\n                    'phone-paused',\n                    'phone-ring',\n                    'phone-setting',\n                    'phone-sip',\n                    'photo-size-select-large',\n                    'photo-size-select-small',\n                    'picture-in-picture',\n                    'pin',\n                    'pin-account',\n                    'pin-assistant',\n                    'pin-drop',\n                    'pin-help',\n                    'pin-off',\n                    'pinterest',\n                    'pinterest-box',\n                    'pizza',\n                    'plaster',\n                    'play',\n                    'play-circle',\n                    'play-circle-outline',\n                    'play-for-work',\n                    'playlist-audio',\n                    'playlist-plus',\n                    'playstation',\n                    'plus',\n                    'plus-1',\n                    'plus-2',\n                    'plus-circle',\n                    'plus-circle-o',\n                    'plus-circle-o-duplicate',\n                    'plus-square',\n                    'pocket',\n                    'polymer',\n                    'portable-wifi',\n                    'portable-wifi-changes',\n                    'portable-wifi-off',\n                    'power',\n                    'power-input',\n                    'power-setting',\n                    'present-to-all',\n                    'print',\n                    'puzzle-piece',\n                    'quote',\n                    'radio',\n                    'railway',\n                    'reader',\n                    'receipt',\n                    'reddit',\n                    'redo',\n                    'refresh',\n                    'refresh-alt',\n                    'refresh-sync',\n                    'refresh-sync-alert',\n                    'refresh-sync-off',\n                    'remote-control',\n                    'remote-control-alt',\n                    'repeat',\n                    'repeat-one',\n                    'replay',\n                    'replay-10',\n                    'replay-30',\n                    'replay-5',\n                    'roller',\n                    'rotate-ccw',\n                    'rotate-cw',\n                    'rotate-left',\n                    'rotate-right',\n                    'router',\n                    'rss',\n                    'ruler',\n                    'run',\n                    'satellite',\n                    'scanner',\n                    'scissors',\n                    'screen-rotation',\n                    'screen-rotation-lock',\n                    'search',\n                    'search-for',\n                    'search-in-file',\n                    'search-in-page',\n                    'search-replace',\n                    'seat',\n                    'sec-10',\n                    'sec-3',\n                    'select-all',\n                    'settings',\n                    'settings-square',\n                    'shape',\n                    'share',\n                    'shield-check',\n                    'shield-security',\n                    'shopping-basket',\n                    'shopping-cart',\n                    'shopping-cart-plus',\n                    'shuffle',\n                    'sign-in',\n                    'skip-next',\n                    'skip-previous',\n                    'skype',\n                    'slideshare',\n                    'slideshow',\n                    'smartphone',\n                    'smartphone-android',\n                    'smartphone-download',\n                    'smartphone-erase',\n                    'smartphone-info',\n                    'smartphone-iphone',\n                    'smartphone-landscape',\n                    'smartphone-landscape-lock',\n                    'smartphone-lock',\n                    'smartphone-portrait-lock',\n                    'smartphone-ring',\n                    'smartphone-setting',\n                    'smartphone-setup',\n                    'sort-amount-asc',\n                    'sort-amount-desc',\n                    'sort-asc',\n                    'sort-desc',\n                    'soundcloud',\n                    'space-bar',\n                    'speaker',\n                    'spellcheck',\n                    'spinner',\n                    'square-down',\n                    'square-o',\n                    'square-right',\n                    'stackoverflow',\n                    'star',\n                    'star-circle',\n                    'star-half',\n                    'star-outline',\n                    'steam',\n                    'steam-square',\n                    'stop',\n                    'storage',\n                    'store',\n                    'store-24',\n                    'subway',\n                    'sun',\n                    'surround-sound',\n                    'swap',\n                    'swap-alt',\n                    'swap-vertical',\n                    'swap-vertical-circle',\n                    'tab',\n                    'tab-unselected',\n                    'tablet',\n                    'tablet-android',\n                    'tablet-mac',\n                    'tag',\n                    'tag-close',\n                    'tag-more',\n                    'tap-and-play',\n                    'text-format',\n                    'texture',\n                    'thumb-down',\n                    'thumb-up',\n                    'thumb-up-down',\n                    'ticket-star',\n                    'time',\n                    'time-countdown',\n                    'time-interval',\n                    'time-restore',\n                    'time-restore-setting',\n                    'timer',\n                    'timer-off',\n                    'toll',\n                    'tonality',\n                    'toys',\n                    'traffic',\n                    'transform',\n                    'translate',\n                    'trending-down',\n                    'trending-flat',\n                    'trending-up',\n                    'triangle-down',\n                    'triangle-up',\n                    'truck',\n                    'tumblr',\n                    'tune',\n                    'turning-sign',\n                    'tv',\n                    'tv-alt-play',\n                    'tv-list',\n                    'tv-play',\n                    'twitch',\n                    'twitter',\n                    'twitter-box',\n                    'undo',\n                    'unfold-less',\n                    'unfold-more',\n                    'ungroup',\n                    'upload',\n                    'usb',\n                    'vibration',\n                    'videocam',\n                    'videocam-off',\n                    'videocam-switch',\n                    'view-agenda',\n                    'view-array',\n                    'view-carousel',\n                    'view-column',\n                    'view-comfy',\n                    'view-compact',\n                    'view-dashboard',\n                    'view-day',\n                    'view-headline',\n                    'view-list',\n                    'view-list-alt',\n                    'view-module',\n                    'view-quilt',\n                    'view-stream',\n                    'view-subtitles',\n                    'view-toc',\n                    'view-web',\n                    'view-week',\n                    'vignette',\n                    'vimeo',\n                    'vk',\n                    'voicemail',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-off',\n                    'volume-up',\n                    'walk',\n                    'wallpaper',\n                    'washing-machine',\n                    'watch',\n                    'wb-auto',\n                    'whatsapp',\n                    'widgets',\n                    'wifi',\n                    'wifi-alt',\n                    'wifi-alt-2',\n                    'wifi-info',\n                    'wifi-lock',\n                    'wifi-off',\n                    'wifi-outline',\n                    'wikipedia',\n                    'window-maximize',\n                    'window-minimize',\n                    'window-restore',\n                    'windows',\n                    'wrap-text',\n                    'wrench',\n                    'xbox',\n                    'yahoo',\n                    'youtube',\n                    'youtube-play',\n                    'zero',\n                    'zoom-in',\n                    'zoom-out'\n                ]\n            }\n        ]\n    };\n\n    var l = data.allVersions.length;\n    data.icons = data.allVersions[l-1].icons;\n\n    $.iconset_materialdesign = data;\n\n})(jQuery);\n\n/*!========================================================================\n * Iconset: Octicons\n * Versions: 2.1.2\n * https://octicons.github.com/\n * CDN: https://cdnjs.cloudflare.com/ajax/libs/octicons/4.x.x/font/octicons.min.css\n * CDN: https://cdnjs.cloudflare.com/ajax/libs/octicons/3.x.x/octicons.min.css\n * ======================================================================== */\n\n;(function($){\n\n    var data = {\n        iconClass: 'octicon',\n        iconClassFix: 'octicon-',\n        icons: [],\n        allVersions: [\n            {\n                version: '2.0.0',\n                icons: [\n                    '',\n                    'alert',\n                    'alignment-align',\n                    'alignment-aligned-to',\n                    'alignment-unalign',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beer',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'color-mode',\n                    'comment',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-secret',\n                    'git-branch',\n                    'git-commit',\n                    'git-compare',\n                    'git-merge',\n                    'git-pull-request',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hourglass',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'jump-down',\n                    'jump-left',\n                    'jump-right',\n                    'jump-up',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'mark-github',\n                    'markdown',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mortar-board',\n                    'move-down',\n                    'move-left',\n                    'move-right',\n                    'move-up',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'pin',\n                    'playback-fast-forward',\n                    'playback-pause',\n                    'playback-play',\n                    'playback-rewind',\n                    'plug',\n                    'plus',\n                    'podium',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'puzzle',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'repo',\n                    'repo-clone',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'screen-full',\n                    'screen-normal',\n                    'search',\n                    'server',\n                    'settings',\n                    'sign-in',\n                    'sign-out',\n                    'split',\n                    'squirrel',\n                    'star',\n                    'steps',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '2.0.1',\n                icons: [\n                    '',\n                    'alert',\n                    'alignment-align',\n                    'alignment-aligned-to',\n                    'alignment-unalign',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beer',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'color-mode',\n                    'comment-add',\n                    'comment',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'eye',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-secret',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-branch',\n                    'git-commit',\n                    'git-compare',\n                    'git-merge',\n                    'git-pull-request-abandoned',\n                    'git-pull-request',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hourglass',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'jump-down',\n                    'jump-left',\n                    'jump-right',\n                    'jump-up',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'gist-private',\n                    'git-fork-private',\n                    'lock',\n                    'mirror-private',\n                    'logo-github',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'mark-github',\n                    'markdown',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror-public',\n                    'mirror',\n                    'mortar-board',\n                    'move-down',\n                    'move-left',\n                    'move-right',\n                    'move-up',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person-add',\n                    'person-follow',\n                    'person',\n                    'pin',\n                    'playback-fast-forward',\n                    'playback-pause',\n                    'playback-play',\n                    'playback-rewind',\n                    'plug',\n                    'file-add',\n                    'file-directory-create',\n                    'gist-new',\n                    'plus',\n                    'repo-create',\n                    'podium',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'puzzle',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'repo-delete',\n                    'repo',\n                    'repo-clone',\n                    'repo-force-push',\n                    'gist-fork',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'screen-full',\n                    'screen-normal',\n                    'search-save',\n                    'search',\n                    'server',\n                    'settings',\n                    'log-in',\n                    'sign-in',\n                    'log-out',\n                    'sign-out',\n                    'split',\n                    'squirrel',\n                    'star-add',\n                    'star-delete',\n                    'star',\n                    'steps',\n                    'stop',\n                    'repo-sync',\n                    'sync',\n                    'tag-add',\n                    'tag-remove',\n                    'tag',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'remove-close',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '2.0.2',\n                icons: [\n                    '',\n                    'alert',\n                    'alignment-align',\n                    'alignment-aligned-to',\n                    'alignment-unalign',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beer',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'color-mode',\n                    'comment-add',\n                    'comment',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'eye',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-secret',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-branch',\n                    'git-commit',\n                    'git-compare',\n                    'git-merge',\n                    'git-pull-request-abandoned',\n                    'git-pull-request',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hourglass',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'jump-down',\n                    'jump-left',\n                    'jump-right',\n                    'jump-up',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'gist-private',\n                    'git-fork-private',\n                    'lock',\n                    'mirror-private',\n                    'logo-github',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'mark-github',\n                    'markdown',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror-public',\n                    'mirror',\n                    'mortar-board',\n                    'move-down',\n                    'move-left',\n                    'move-right',\n                    'move-up',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person-add',\n                    'person-follow',\n                    'person',\n                    'pin',\n                    'playback-fast-forward',\n                    'playback-pause',\n                    'playback-play',\n                    'playback-rewind',\n                    'plug',\n                    'file-add',\n                    'file-directory-create',\n                    'gist-new',\n                    'plus',\n                    'repo-create',\n                    'podium',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'puzzle',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'repo-delete',\n                    'repo',\n                    'repo-clone',\n                    'repo-force-push',\n                    'gist-fork',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'screen-full',\n                    'screen-normal',\n                    'search-save',\n                    'search',\n                    'server',\n                    'settings',\n                    'log-in',\n                    'sign-in',\n                    'log-out',\n                    'sign-out',\n                    'split',\n                    'squirrel',\n                    'star-add',\n                    'star-delete',\n                    'star',\n                    'steps',\n                    'stop',\n                    'repo-sync',\n                    'sync',\n                    'tag-add',\n                    'tag-remove',\n                    'tag',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'remove-close',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '2.1.0',\n                icons: [\n                    '',\n                    'alert',\n                    'alignment-align',\n                    'alignment-aligned-to',\n                    'alignment-unalign',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beer',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'color-mode',\n                    'comment-add',\n                    'comment',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'eye',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-secret',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-branch',\n                    'git-commit',\n                    'git-compare',\n                    'git-merge',\n                    'git-pull-request-abandoned',\n                    'git-pull-request',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hourglass',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'jump-down',\n                    'jump-left',\n                    'jump-right',\n                    'jump-up',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'gist-private',\n                    'git-fork-private',\n                    'lock',\n                    'mirror-private',\n                    'logo-github',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'mark-github',\n                    'markdown',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror-public',\n                    'mirror',\n                    'mortar-board',\n                    'move-down',\n                    'move-left',\n                    'move-right',\n                    'move-up',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person-add',\n                    'person-follow',\n                    'person',\n                    'pin',\n                    'playback-fast-forward',\n                    'playback-pause',\n                    'playback-play',\n                    'playback-rewind',\n                    'plug',\n                    'file-add',\n                    'file-directory-create',\n                    'gist-new',\n                    'plus',\n                    'repo-create',\n                    'podium',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'puzzle',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'repo-delete',\n                    'repo',\n                    'repo-clone',\n                    'repo-force-push',\n                    'gist-fork',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'screen-full',\n                    'screen-normal',\n                    'search-save',\n                    'search',\n                    'server',\n                    'settings',\n                    'log-in',\n                    'sign-in',\n                    'log-out',\n                    'sign-out',\n                    'split',\n                    'squirrel',\n                    'star-add',\n                    'star-delete',\n                    'star',\n                    'steps',\n                    'stop',\n                    'repo-sync',\n                    'sync',\n                    'tag-add',\n                    'tag-remove',\n                    'tag',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'remove-close',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '2.1.1',\n                icons: [\n                    '',\n                    'alert',\n                    'alignment-align',\n                    'alignment-aligned-to',\n                    'alignment-unalign',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beer',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'color-mode',\n                    'comment-add',\n                    'comment',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'eye',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-secret',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-branch',\n                    'git-commit',\n                    'git-compare',\n                    'git-merge',\n                    'git-pull-request-abandoned',\n                    'git-pull-request',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hourglass',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'jump-down',\n                    'jump-left',\n                    'jump-right',\n                    'jump-up',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'gist-private',\n                    'git-fork-private',\n                    'lock',\n                    'mirror-private',\n                    'logo-github',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'mark-github',\n                    'markdown',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror-public',\n                    'mirror',\n                    'mortar-board',\n                    'move-down',\n                    'move-left',\n                    'move-right',\n                    'move-up',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person-add',\n                    'person-follow',\n                    'person',\n                    'pin',\n                    'playback-fast-forward',\n                    'playback-pause',\n                    'playback-play',\n                    'playback-rewind',\n                    'plug',\n                    'file-add',\n                    'file-directory-create',\n                    'gist-new',\n                    'plus',\n                    'repo-create',\n                    'podium',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'puzzle',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'repo-delete',\n                    'repo',\n                    'repo-clone',\n                    'repo-force-push',\n                    'gist-fork',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'screen-full',\n                    'screen-normal',\n                    'search-save',\n                    'search',\n                    'server',\n                    'settings',\n                    'log-in',\n                    'sign-in',\n                    'log-out',\n                    'sign-out',\n                    'split',\n                    'squirrel',\n                    'star-add',\n                    'star-delete',\n                    'star',\n                    'steps',\n                    'stop',\n                    'repo-sync',\n                    'sync',\n                    'tag-add',\n                    'tag-remove',\n                    'tag',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'remove-close',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '2.1.2',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'sign-in',\n                    'sign-out',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '2.2.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'sign-in',\n                    'sign-out',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '2.2.1',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'sign-in',\n                    'sign-out',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '2.2.2',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'sign-in',\n                    'sign-out',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '2.2.3',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'sign-in',\n                    'sign-out',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '2.3.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'sign-in',\n                    'sign-out',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '2.4.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'sign-in',\n                    'sign-out',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '2.4.1',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'sign-in',\n                    'sign-out',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '3.0.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'clone',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'sign-in',\n                    'sign-out',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '3.1.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'clone',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'shield',\n                    'sign-in',\n                    'sign-out',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'telescope',\n                    'terminal',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '3.2.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'clone',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'italic',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'shield',\n                    'sign-in',\n                    'sign-out',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'tasklist',\n                    'telescope',\n                    'terminal',\n                    'text-size',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '3.3.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'clone',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'italic',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-gist',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'shield',\n                    'sign-in',\n                    'sign-out',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'tasklist',\n                    'telescope',\n                    'terminal',\n                    'text-size',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '3.4.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'clone',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'italic',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-gist',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'shield',\n                    'sign-in',\n                    'sign-out',\n                    'smiley',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'tasklist',\n                    'telescope',\n                    'terminal',\n                    'text-size',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'verified',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '3.4.1',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'clone',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'italic',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-gist',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'shield',\n                    'sign-in',\n                    'sign-out',\n                    'smiley',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'tasklist',\n                    'telescope',\n                    'terminal',\n                    'text-size',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'verified',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '3.5.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'clone',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-add',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipsis',\n                    'eye',\n                    'eye-unwatch',\n                    'eye-watch',\n                    'file-add',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-directory-create',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-fork',\n                    'gist-new',\n                    'gist-private',\n                    'gist-secret',\n                    'git-branch',\n                    'git-branch-create',\n                    'git-branch-delete',\n                    'git-commit',\n                    'git-compare',\n                    'git-fork-private',\n                    'git-merge',\n                    'git-pull-request',\n                    'git-pull-request-abandoned',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'italic',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'log-in',\n                    'logo-gist',\n                    'logo-github',\n                    'log-out',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'microscope',\n                    'milestone',\n                    'mirror',\n                    'mirror-private',\n                    'mirror-public',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'person-add',\n                    'person-follow',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'remove-close',\n                    'repo',\n                    'repo-clone',\n                    'repo-create',\n                    'repo-delete',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'repo-sync',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'search-save',\n                    'server',\n                    'settings',\n                    'shield',\n                    'sign-in',\n                    'sign-out',\n                    'smiley',\n                    'squirrel',\n                    'star',\n                    'star-add',\n                    'star-delete',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tag-add',\n                    'tag-remove',\n                    'tasklist',\n                    'telescope',\n                    'terminal',\n                    'text-size',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'unverified',\n                    'verified',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '4.0.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipses',\n                    'ellipsis',\n                    'eye',\n                    'file',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-secret',\n                    'git-branch',\n                    'git-commit',\n                    'git-compare',\n                    'git-merge',\n                    'git-pull-request',\n                    'globe',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'italic',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'logo-gist',\n                    'logo-github',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'milestone',\n                    'mirror',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'repo',\n                    'repo-clone',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'server',\n                    'settings',\n                    'shield',\n                    'sign-in',\n                    'sign-out',\n                    'smiley',\n                    'squirrel',\n                    'star',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tasklist',\n                    'telescope',\n                    'terminal',\n                    'text-size',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'unverified',\n                    'verified',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '4.1.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipses',\n                    'ellipsis',\n                    'eye',\n                    'file',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-secret',\n                    'git-branch',\n                    'git-commit',\n                    'git-compare',\n                    'git-merge',\n                    'git-pull-request',\n                    'globe',\n                    'grabber',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'italic',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'logo-gist',\n                    'logo-github',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'milestone',\n                    'mirror',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'plus-small',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'reply',\n                    'repo',\n                    'repo-clone',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'server',\n                    'settings',\n                    'shield',\n                    'sign-in',\n                    'sign-out',\n                    'smiley',\n                    'squirrel',\n                    'star',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tasklist',\n                    'telescope',\n                    'terminal',\n                    'text-size',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'unverified',\n                    'verified',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '4.1.1',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipses',\n                    'ellipsis',\n                    'eye',\n                    'file',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-secret',\n                    'git-branch',\n                    'git-commit',\n                    'git-compare',\n                    'git-merge',\n                    'git-pull-request',\n                    'globe',\n                    'grabber',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'italic',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'logo-gist',\n                    'logo-github',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'milestone',\n                    'mirror',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'plus-small',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'reply',\n                    'repo',\n                    'repo-clone',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'server',\n                    'settings',\n                    'shield',\n                    'sign-in',\n                    'sign-out',\n                    'smiley',\n                    'squirrel',\n                    'star',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tasklist',\n                    'telescope',\n                    'terminal',\n                    'text-size',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'unverified',\n                    'verified',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '4.2.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipses',\n                    'ellipsis',\n                    'eye',\n                    'file',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-secret',\n                    'git-branch',\n                    'git-commit',\n                    'git-compare',\n                    'git-merge',\n                    'git-pull-request',\n                    'globe',\n                    'grabber',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'italic',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'logo-gist',\n                    'logo-github',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'milestone',\n                    'mirror',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'plus-small',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'reply',\n                    'repo',\n                    'repo-clone',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'server',\n                    'settings',\n                    'shield',\n                    'sign-in',\n                    'sign-out',\n                    'smiley',\n                    'squirrel',\n                    'star',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tasklist',\n                    'telescope',\n                    'terminal',\n                    'text-size',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'unverified',\n                    'verified',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '4.2.1',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipses',\n                    'ellipsis',\n                    'eye',\n                    'file',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-secret',\n                    'git-branch',\n                    'git-commit',\n                    'git-compare',\n                    'git-merge',\n                    'git-pull-request',\n                    'globe',\n                    'grabber',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'italic',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'logo-gist',\n                    'logo-github',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'milestone',\n                    'mirror',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'plus-small',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'reply',\n                    'repo',\n                    'repo-clone',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'server',\n                    'settings',\n                    'shield',\n                    'sign-in',\n                    'sign-out',\n                    'smiley',\n                    'squirrel',\n                    'star',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tasklist',\n                    'telescope',\n                    'terminal',\n                    'text-size',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'unverified',\n                    'verified',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '4.3.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipses',\n                    'ellipsis',\n                    'eye',\n                    'file',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-secret',\n                    'git-branch',\n                    'git-commit',\n                    'git-compare',\n                    'git-merge',\n                    'git-pull-request',\n                    'globe',\n                    'grabber',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'italic',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'logo-gist',\n                    'logo-github',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'milestone',\n                    'mirror',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'plus-small',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'reply',\n                    'repo',\n                    'repo-clone',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'server',\n                    'settings',\n                    'shield',\n                    'sign-in',\n                    'sign-out',\n                    'smiley',\n                    'squirrel',\n                    'star',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tasklist',\n                    'telescope',\n                    'terminal',\n                    'text-size',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'unverified',\n                    'verified',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            },\n            {\n                version: '4.4.0',\n                icons: [\n                    '',\n                    'alert',\n                    'arrow-down',\n                    'arrow-left',\n                    'arrow-right',\n                    'arrow-small-down',\n                    'arrow-small-left',\n                    'arrow-small-right',\n                    'arrow-small-up',\n                    'arrow-up',\n                    'beaker',\n                    'bell',\n                    'bold',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'broadcast',\n                    'browser',\n                    'bug',\n                    'calendar',\n                    'check',\n                    'checklist',\n                    'chevron-down',\n                    'chevron-left',\n                    'chevron-right',\n                    'chevron-up',\n                    'circle-slash',\n                    'circuit-board',\n                    'clippy',\n                    'clock',\n                    'cloud-download',\n                    'cloud-upload',\n                    'code',\n                    'comment',\n                    'comment-discussion',\n                    'credit-card',\n                    'dash',\n                    'dashboard',\n                    'database',\n                    'desktop-download',\n                    'device-camera',\n                    'device-camera-video',\n                    'device-desktop',\n                    'device-mobile',\n                    'diff',\n                    'diff-added',\n                    'diff-ignored',\n                    'diff-modified',\n                    'diff-removed',\n                    'diff-renamed',\n                    'ellipses',\n                    'ellipsis',\n                    'eye',\n                    'file',\n                    'file-binary',\n                    'file-code',\n                    'file-directory',\n                    'file-media',\n                    'file-pdf',\n                    'file-submodule',\n                    'file-symlink-directory',\n                    'file-symlink-file',\n                    'file-text',\n                    'file-zip',\n                    'flame',\n                    'fold',\n                    'gear',\n                    'gift',\n                    'gist',\n                    'gist-secret',\n                    'git-branch',\n                    'git-commit',\n                    'git-compare',\n                    'git-merge',\n                    'git-pull-request',\n                    'globe',\n                    'grabber',\n                    'graph',\n                    'heart',\n                    'history',\n                    'home',\n                    'horizontal-rule',\n                    'hubot',\n                    'inbox',\n                    'info',\n                    'issue-closed',\n                    'issue-opened',\n                    'issue-reopened',\n                    'italic',\n                    'jersey',\n                    'key',\n                    'keyboard',\n                    'law',\n                    'light-bulb',\n                    'link',\n                    'link-external',\n                    'list-ordered',\n                    'list-unordered',\n                    'location',\n                    'lock',\n                    'logo-gist',\n                    'logo-github',\n                    'mail',\n                    'mail-read',\n                    'mail-reply',\n                    'markdown',\n                    'mark-github',\n                    'megaphone',\n                    'mention',\n                    'milestone',\n                    'mirror',\n                    'mortar-board',\n                    'mute',\n                    'no-newline',\n                    'octoface',\n                    'organization',\n                    'package',\n                    'paintcan',\n                    'pencil',\n                    'person',\n                    'pin',\n                    'plug',\n                    'plus',\n                    'plus-small',\n                    'primitive-dot',\n                    'primitive-square',\n                    'pulse',\n                    'question',\n                    'quote',\n                    'radio-tower',\n                    'reply',\n                    'repo',\n                    'repo-clone',\n                    'repo-force-push',\n                    'repo-forked',\n                    'repo-pull',\n                    'repo-push',\n                    'rocket',\n                    'rss',\n                    'ruby',\n                    'search',\n                    'server',\n                    'settings',\n                    'shield',\n                    'sign-in',\n                    'sign-out',\n                    'smiley',\n                    'squirrel',\n                    'star',\n                    'stop',\n                    'sync',\n                    'tag',\n                    'tasklist',\n                    'telescope',\n                    'terminal',\n                    'text-size',\n                    'three-bars',\n                    'thumbsdown',\n                    'thumbsup',\n                    'tools',\n                    'trashcan',\n                    'triangle-down',\n                    'triangle-left',\n                    'triangle-right',\n                    'triangle-up',\n                    'unfold',\n                    'unmute',\n                    'unverified',\n                    'verified',\n                    'versions',\n                    'watch',\n                    'x',\n                    'zap'\n                ]\n            }\n        ]\n    };\n\n    var l = data.allVersions.length;\n    data.icons = data.allVersions[l-1].icons;\n\n    $.iconset_octicon = data;\n\n})(jQuery);\n\n/*!========================================================================\n * Iconset: Typicons\n * Versions: 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.0.7, 2.0.8, 2.0.9\n * https://github.com/stephenhutchings/typicons.font\n * CDN: https://cdnjs.cloudflare.com/ajax/libs/typicons/[VERSION]/typicons.css\n * ======================================================================== */\n\n;(function($){\n\n    var data = {\n        iconClass: 'typcn',\n        iconClassFix: 'typcn-',\n        icons: [],\n        allVersions: [\n            {\n                version: '2.0.1',\n                icons: [\n                    '',\n                    'adjust-brightness',\n                    'adjust-contrast',\n                    'anchor',\n                    'anchor-outline',\n                    'archive',\n                    'arrow-back',\n                    'arrow-back-outline',\n                    'arrow-down',\n                    'arrow-down-outline',\n                    'arrow-down-thick',\n                    'arrow-forward',\n                    'arrow-forward-outline',\n                    'arrow-left',\n                    'arrow-left-outline',\n                    'arrow-left-thick',\n                    'arrow-loop',\n                    'arrow-loop-outline',\n                    'arrow-maximise',\n                    'arrow-maximise-outline',\n                    'arrow-minimise',\n                    'arrow-minimise-outline',\n                    'arrow-move',\n                    'arrow-move-outline',\n                    'arrow-repeat',\n                    'arrow-repeat-outline',\n                    'arrow-right',\n                    'arrow-right-outline',\n                    'arrow-right-thick',\n                    'arrow-shuffle',\n                    'arrow-sync',\n                    'arrow-sync-outline',\n                    'arrow-up',\n                    'arrow-up-outline',\n                    'arrow-up-thick',\n                    'at',\n                    'attachment',\n                    'attachment-outline',\n                    'backspace',\n                    'backspace-outline',\n                    'battery-charge',\n                    'battery-full',\n                    'battery-high',\n                    'battery-low',\n                    'battery-mid',\n                    'beaker',\n                    'beer',\n                    'bell',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'brush',\n                    'business-card',\n                    'calculator',\n                    'calender',\n                    'calender-outline',\n                    'camera',\n                    'camera-outline',\n                    'cancel',\n                    'cancel-outline',\n                    'chart-area',\n                    'chart-area-outline',\n                    'chart-bar',\n                    'chart-bar-outline',\n                    'chart-line',\n                    'chart-line-outline',\n                    'chart-pie',\n                    'chart-pie-outline',\n                    'chevron-left',\n                    'chevron-left-outline',\n                    'chevron-right',\n                    'chevron-right-outline',\n                    'clipboard',\n                    'cloud-storage',\n                    'code',\n                    'code-outline',\n                    'coffee',\n                    'cog',\n                    'cog-outline',\n                    'compass',\n                    'contacts',\n                    'credit-card',\n                    'cross',\n                    'database',\n                    'delete',\n                    'delete-outline',\n                    'device-desktop',\n                    'device-laptop',\n                    'device-phone',\n                    'device-tablet',\n                    'directions',\n                    'divide',\n                    'divide-outline',\n                    'document',\n                    'document-add',\n                    'document-delete',\n                    'document-text',\n                    'download',\n                    'download-outline',\n                    'edit',\n                    'eject',\n                    'eject-outline',\n                    'equals',\n                    'equals-outline',\n                    'export',\n                    'export-outline',\n                    'eye',\n                    'eye-outline',\n                    'feather',\n                    'film',\n                    'flag',\n                    'flag-outline',\n                    'flash',\n                    'flash-outline',\n                    'flow-children',\n                    'flow-merge',\n                    'flow-parallel',\n                    'flow-switch',\n                    'folder',\n                    'folder-add',\n                    'folder-delete',\n                    'gift',\n                    'globe',\n                    'globe-outline',\n                    'group',\n                    'group-outline',\n                    'headphones',\n                    'heart',\n                    'heart-outline',\n                    'home',\n                    'home-outline',\n                    'image',\n                    'image-outline',\n                    'infinity',\n                    'infinity-outline',\n                    'info',\n                    'info-large',\n                    'info-large-outline',\n                    'info-outline',\n                    'input-checked',\n                    'input-checked-outline',\n                    'key',\n                    'key-outline',\n                    'leaf',\n                    'lightbulb',\n                    'link',\n                    'link-outline',\n                    'location',\n                    'location-arrow',\n                    'location-arrow-outline',\n                    'location-outline',\n                    'lock-closed',\n                    'lock-closed-outline',\n                    'lock-open',\n                    'lock-open-outline',\n                    'mail',\n                    'map',\n                    'media-eject',\n                    'media-eject-outline',\n                    'media-fast-forward',\n                    'media-fast-forward-outline',\n                    'media-pause',\n                    'media-pause-outline',\n                    'media-play',\n                    'media-play-outline',\n                    'media-record',\n                    'media-record-outline',\n                    'media-rewind',\n                    'media-rewind-outline',\n                    'media-stop',\n                    'media-stop-outline',\n                    'message',\n                    'messages',\n                    'message-typing',\n                    'microphone',\n                    'microphone-outline',\n                    'minus',\n                    'minus-outline',\n                    'news',\n                    'notes',\n                    'notes-outline',\n                    'pen',\n                    'pencil',\n                    'phone',\n                    'phone-outline',\n                    'pi',\n                    'pin',\n                    'pin-outline',\n                    'pi-outline',\n                    'pipette',\n                    'plane',\n                    'plane-outline',\n                    'plug',\n                    'plus',\n                    'plus-outline',\n                    'point-of-interest',\n                    'point-of-interest-outline',\n                    'power',\n                    'power-outline',\n                    'printer',\n                    'puzzle',\n                    'puzzle-outline',\n                    'radar',\n                    'radar-outline',\n                    'refresh',\n                    'refresh-outline',\n                    'rss',\n                    'rss-outline',\n                    'scissors',\n                    'scissors-outline',\n                    'shopping-bag',\n                    'shopping-cart',\n                    'social-at-circular',\n                    'social-dribbble',\n                    'social-dribbble-circular',\n                    'social-facebook',\n                    'social-facebook-circular',\n                    'social-flickr',\n                    'social-flickr-circular',\n                    'social-github',\n                    'social-github-circular',\n                    'social-last-fm',\n                    'social-last-fm-circular',\n                    'social-linkedin',\n                    'social-linkedin-circular',\n                    'social-pinterest',\n                    'social-pinterest-circular',\n                    'social-skype',\n                    'social-skype-outline',\n                    'social-tumbler',\n                    'social-tumbler-circular',\n                    'social-twitter',\n                    'social-twitter-circular',\n                    'social-vimeo',\n                    'social-vimeo-circular',\n                    'sort-alphabetically',\n                    'sort-alphabetically-outline',\n                    'sort-numerically',\n                    'sort-numerically-outline',\n                    'spanner',\n                    'spanner-outline',\n                    'star',\n                    'starburst',\n                    'starburst-outline',\n                    'star-outline',\n                    'stopwatch',\n                    'support',\n                    'tabs-outline',\n                    'tag',\n                    'tags',\n                    'thermometer',\n                    'th-large',\n                    'th-large-outline',\n                    'th-list',\n                    'th-list-outline',\n                    'th-menu',\n                    'th-menu-outline',\n                    'th-small',\n                    'th-small-outline',\n                    'thumbs-down',\n                    'thumbs-up',\n                    'tick',\n                    'ticket',\n                    'tick-outline',\n                    'time',\n                    'times',\n                    'times-outline',\n                    'trash',\n                    'tree',\n                    'upload',\n                    'upload-outline',\n                    'user',\n                    'user-add',\n                    'user-add-outline',\n                    'user-delete',\n                    'user-delete-outline',\n                    'user-outline',\n                    'video',\n                    'video-outline',\n                    'volume',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-up',\n                    'warning',\n                    'warning-outline',\n                    'watch',\n                    'waves',\n                    'waves-outline',\n                    'weather-cloudy',\n                    'weather-downpour',\n                    'weather-night',\n                    'weather-partly-sunny',\n                    'weather-shower',\n                    'weather-snow',\n                    'weather-stormy',\n                    'weather-sunny',\n                    'weather-windy',\n                    'weather-windy-cloudy',\n                    'wi-fi',\n                    'wi-fi-outline',\n                    'wine',\n                    'world',\n                    'world-outline',\n                    'zoom',\n                    'zoom-in',\n                    'zoom-in-outline',\n                    'zoom-out',\n                    'zoom-outline',\n                    'zoom-out-outline'\n                ]\n            },\n            {\n                version: '2.0.2',\n                icons: [\n                    '',\n                    'adjust-brightness',\n                    'adjust-contrast',\n                    'anchor',\n                    'anchor-outline',\n                    'archive',\n                    'arrow-back',\n                    'arrow-back-outline',\n                    'arrow-down',\n                    'arrow-down-outline',\n                    'arrow-down-thick',\n                    'arrow-forward',\n                    'arrow-forward-outline',\n                    'arrow-left',\n                    'arrow-left-outline',\n                    'arrow-left-thick',\n                    'arrow-loop',\n                    'arrow-loop-outline',\n                    'arrow-maximise',\n                    'arrow-maximise-outline',\n                    'arrow-minimise',\n                    'arrow-minimise-outline',\n                    'arrow-move',\n                    'arrow-move-outline',\n                    'arrow-repeat',\n                    'arrow-repeat-outline',\n                    'arrow-right',\n                    'arrow-right-outline',\n                    'arrow-right-thick',\n                    'arrow-shuffle',\n                    'arrow-sync',\n                    'arrow-sync-outline',\n                    'arrow-up',\n                    'arrow-up-outline',\n                    'arrow-up-thick',\n                    'at',\n                    'attachment',\n                    'attachment-outline',\n                    'backspace',\n                    'backspace-outline',\n                    'battery-charge',\n                    'battery-full',\n                    'battery-high',\n                    'battery-low',\n                    'battery-mid',\n                    'beaker',\n                    'beer',\n                    'bell',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'brush',\n                    'business-card',\n                    'calculator',\n                    'calender',\n                    'calender-outline',\n                    'camera',\n                    'camera-outline',\n                    'cancel',\n                    'cancel-outline',\n                    'chart-area',\n                    'chart-area-outline',\n                    'chart-bar',\n                    'chart-bar-outline',\n                    'chart-line',\n                    'chart-line-outline',\n                    'chart-pie',\n                    'chart-pie-outline',\n                    'chevron-left',\n                    'chevron-left-outline',\n                    'chevron-right',\n                    'chevron-right-outline',\n                    'clipboard',\n                    'cloud-storage',\n                    'code',\n                    'code-outline',\n                    'coffee',\n                    'cog',\n                    'cog-outline',\n                    'compass',\n                    'contacts',\n                    'credit-card',\n                    'cross',\n                    'database',\n                    'delete',\n                    'delete-outline',\n                    'device-desktop',\n                    'device-laptop',\n                    'device-phone',\n                    'device-tablet',\n                    'directions',\n                    'divide',\n                    'divide-outline',\n                    'document',\n                    'document-add',\n                    'document-delete',\n                    'document-text',\n                    'download',\n                    'download-outline',\n                    'edit',\n                    'eject',\n                    'eject-outline',\n                    'equals',\n                    'equals-outline',\n                    'export',\n                    'export-outline',\n                    'eye',\n                    'eye-outline',\n                    'feather',\n                    'film',\n                    'flag',\n                    'flag-outline',\n                    'flash',\n                    'flash-outline',\n                    'flow-children',\n                    'flow-merge',\n                    'flow-parallel',\n                    'flow-switch',\n                    'folder',\n                    'folder-add',\n                    'folder-delete',\n                    'gift',\n                    'globe',\n                    'globe-outline',\n                    'group',\n                    'group-outline',\n                    'headphones',\n                    'heart',\n                    'heart-outline',\n                    'home',\n                    'home-outline',\n                    'image',\n                    'image-outline',\n                    'infinity',\n                    'infinity-outline',\n                    'info',\n                    'info-large',\n                    'info-large-outline',\n                    'info-outline',\n                    'input-checked',\n                    'input-checked-outline',\n                    'key',\n                    'key-outline',\n                    'leaf',\n                    'lightbulb',\n                    'link',\n                    'link-outline',\n                    'location',\n                    'location-arrow',\n                    'location-arrow-outline',\n                    'location-outline',\n                    'lock-closed',\n                    'lock-closed-outline',\n                    'lock-open',\n                    'lock-open-outline',\n                    'mail',\n                    'map',\n                    'media-eject',\n                    'media-eject-outline',\n                    'media-fast-forward',\n                    'media-fast-forward-outline',\n                    'media-pause',\n                    'media-pause-outline',\n                    'media-play',\n                    'media-play-outline',\n                    'media-record',\n                    'media-record-outline',\n                    'media-rewind',\n                    'media-rewind-outline',\n                    'media-stop',\n                    'media-stop-outline',\n                    'message',\n                    'messages',\n                    'message-typing',\n                    'microphone',\n                    'microphone-outline',\n                    'minus',\n                    'minus-outline',\n                    'news',\n                    'notes',\n                    'notes-outline',\n                    'pen',\n                    'pencil',\n                    'phone',\n                    'phone-outline',\n                    'pi',\n                    'pin',\n                    'pin-outline',\n                    'pi-outline',\n                    'pipette',\n                    'plane',\n                    'plane-outline',\n                    'plug',\n                    'plus',\n                    'plus-outline',\n                    'point-of-interest',\n                    'point-of-interest-outline',\n                    'power',\n                    'power-outline',\n                    'printer',\n                    'puzzle',\n                    'puzzle-outline',\n                    'radar',\n                    'radar-outline',\n                    'refresh',\n                    'refresh-outline',\n                    'rss',\n                    'rss-outline',\n                    'scissors',\n                    'scissors-outline',\n                    'shopping-bag',\n                    'shopping-cart',\n                    'social-at-circular',\n                    'social-dribbble',\n                    'social-dribbble-circular',\n                    'social-facebook',\n                    'social-facebook-circular',\n                    'social-flickr',\n                    'social-flickr-circular',\n                    'social-github',\n                    'social-github-circular',\n                    'social-last-fm',\n                    'social-last-fm-circular',\n                    'social-linkedin',\n                    'social-linkedin-circular',\n                    'social-pinterest',\n                    'social-pinterest-circular',\n                    'social-skype',\n                    'social-skype-outline',\n                    'social-tumbler',\n                    'social-tumbler-circular',\n                    'social-twitter',\n                    'social-twitter-circular',\n                    'social-vimeo',\n                    'social-vimeo-circular',\n                    'sort-alphabetically',\n                    'sort-alphabetically-outline',\n                    'sort-numerically',\n                    'sort-numerically-outline',\n                    'spanner',\n                    'spanner-outline',\n                    'star',\n                    'starburst',\n                    'starburst-outline',\n                    'star-outline',\n                    'stopwatch',\n                    'support',\n                    'tabs-outline',\n                    'tag',\n                    'tags',\n                    'thermometer',\n                    'th-large',\n                    'th-large-outline',\n                    'th-list',\n                    'th-list-outline',\n                    'th-menu',\n                    'th-menu-outline',\n                    'th-small',\n                    'th-small-outline',\n                    'thumbs-down',\n                    'thumbs-up',\n                    'tick',\n                    'ticket',\n                    'tick-outline',\n                    'time',\n                    'times',\n                    'times-outline',\n                    'trash',\n                    'tree',\n                    'upload',\n                    'upload-outline',\n                    'user',\n                    'user-add',\n                    'user-add-outline',\n                    'user-delete',\n                    'user-delete-outline',\n                    'user-outline',\n                    'video',\n                    'video-outline',\n                    'volume',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-up',\n                    'warning',\n                    'warning-outline',\n                    'watch',\n                    'waves',\n                    'waves-outline',\n                    'weather-cloudy',\n                    'weather-downpour',\n                    'weather-night',\n                    'weather-partly-sunny',\n                    'weather-shower',\n                    'weather-snow',\n                    'weather-stormy',\n                    'weather-sunny',\n                    'weather-windy',\n                    'weather-windy-cloudy',\n                    'wi-fi',\n                    'wi-fi-outline',\n                    'wine',\n                    'world',\n                    'world-outline',\n                    'zoom',\n                    'zoom-in',\n                    'zoom-in-outline',\n                    'zoom-out',\n                    'zoom-outline',\n                    'zoom-out-outline'\n                ]\n            },\n            {\n                version: '2.0.3',\n                icons: [\n                    '',\n                    'adjust-brightness',\n                    'adjust-contrast',\n                    'anchor',\n                    'anchor-outline',\n                    'archive',\n                    'arrow-back',\n                    'arrow-back-outline',\n                    'arrow-down',\n                    'arrow-down-outline',\n                    'arrow-down-thick',\n                    'arrow-forward',\n                    'arrow-forward-outline',\n                    'arrow-left',\n                    'arrow-left-outline',\n                    'arrow-left-thick',\n                    'arrow-loop',\n                    'arrow-loop-outline',\n                    'arrow-maximise',\n                    'arrow-maximise-outline',\n                    'arrow-minimise',\n                    'arrow-minimise-outline',\n                    'arrow-move',\n                    'arrow-move-outline',\n                    'arrow-repeat',\n                    'arrow-repeat-outline',\n                    'arrow-right',\n                    'arrow-right-outline',\n                    'arrow-right-thick',\n                    'arrow-shuffle',\n                    'arrow-sorted-down',\n                    'arrow-sorted-up',\n                    'arrow-sync',\n                    'arrow-sync-outline',\n                    'arrow-unsorted',\n                    'arrow-up',\n                    'arrow-up-outline',\n                    'arrow-up-thick',\n                    'at',\n                    'attachment',\n                    'attachment-outline',\n                    'backspace',\n                    'backspace-outline',\n                    'battery-charge',\n                    'battery-full',\n                    'battery-high',\n                    'battery-low',\n                    'battery-mid',\n                    'beaker',\n                    'beer',\n                    'bell',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'brush',\n                    'business-card',\n                    'calculator',\n                    'camera',\n                    'camera-outline',\n                    'cancel',\n                    'cancel-outline',\n                    'chart-area',\n                    'chart-area-outline',\n                    'chart-bar',\n                    'chart-bar-outline',\n                    'chart-line',\n                    'chart-line-outline',\n                    'chart-pie',\n                    'chart-pie-outline',\n                    'chevron-left',\n                    'chevron-left-outline',\n                    'chevron-right',\n                    'chevron-right-outline',\n                    'clipboard',\n                    'cloud-storage',\n                    'code',\n                    'code-outline',\n                    'coffee',\n                    'cog',\n                    'cog-outline',\n                    'compass',\n                    'contacts',\n                    'credit-card',\n                    'css3',\n                    'database',\n                    'delete',\n                    'delete-outline',\n                    'device-desktop',\n                    'device-laptop',\n                    'device-phone',\n                    'device-tablet',\n                    'directions',\n                    'divide',\n                    'divide-outline',\n                    'document',\n                    'document-add',\n                    'document-delete',\n                    'document-text',\n                    'download',\n                    'download-outline',\n                    'dropbox',\n                    'edit',\n                    'eject',\n                    'eject-outline',\n                    'equals',\n                    'equals-outline',\n                    'export',\n                    'export-outline',\n                    'eye',\n                    'eye-outline',\n                    'feather',\n                    'film',\n                    'filter',\n                    'flag',\n                    'flag-outline',\n                    'flash',\n                    'flash-outline',\n                    'flow-children',\n                    'flow-merge',\n                    'flow-parallel',\n                    'flow-switch',\n                    'folder',\n                    'folder-add',\n                    'folder-delete',\n                    'folder-open',\n                    'gift',\n                    'globe',\n                    'globe-outline',\n                    'group',\n                    'group-outline',\n                    'headphones',\n                    'heart',\n                    'heart-full-outline',\n                    'heart-half-outline',\n                    'heart-outline',\n                    'home',\n                    'home-outline',\n                    'html5',\n                    'image',\n                    'image-outline',\n                    'infinity',\n                    'infinity-outline',\n                    'info',\n                    'info-large',\n                    'info-large-outline',\n                    'info-outline',\n                    'input-checked',\n                    'input-checked-outline',\n                    'key',\n                    'key-outline',\n                    'keyboard',\n                    'leaf',\n                    'lightbulb',\n                    'link',\n                    'link-outline',\n                    'location',\n                    'location-arrow',\n                    'location-arrow-outline',\n                    'location-outline',\n                    'lock-closed',\n                    'lock-closed-outline',\n                    'lock-open',\n                    'lock-open-outline',\n                    'mail',\n                    'map',\n                    'media-eject',\n                    'media-eject-outline',\n                    'media-fast-forward',\n                    'media-fast-forward-outline',\n                    'media-pause',\n                    'media-pause-outline',\n                    'media-play',\n                    'media-play-outline',\n                    'media-play-reverse',\n                    'media-play-reverse-outline',\n                    'media-record',\n                    'media-record-outline',\n                    'media-rewind',\n                    'media-rewind-outline',\n                    'media-stop',\n                    'media-stop-outline',\n                    'message',\n                    'message-typing',\n                    'messages',\n                    'microphone',\n                    'microphone-outline',\n                    'minus',\n                    'minus-outline',\n                    'mortar-board',\n                    'news',\n                    'notes',\n                    'notes-outline',\n                    'pen',\n                    'pencil',\n                    'phone',\n                    'phone-outline',\n                    'pi',\n                    'pi-outline',\n                    'pin',\n                    'pin-outline',\n                    'pipette',\n                    'plane',\n                    'plane-outline',\n                    'plug',\n                    'plus',\n                    'plus-outline',\n                    'point-of-interest',\n                    'point-of-interest-outline',\n                    'power',\n                    'power-outline',\n                    'printer',\n                    'puzzle',\n                    'puzzle-outline',\n                    'radar',\n                    'radar-outline',\n                    'refresh',\n                    'refresh-outline',\n                    'rss',\n                    'rss-outline',\n                    'scissors',\n                    'scissors-outline',\n                    'shopping-bag',\n                    'shopping-cart',\n                    'social-at-circular',\n                    'social-dribbble',\n                    'social-dribbble-circular',\n                    'social-facebook',\n                    'social-facebook-circular',\n                    'social-flickr',\n                    'social-flickr-circular',\n                    'social-github',\n                    'social-github-circular',\n                    'social-google-plus',\n                    'social-google-plus-circular',\n                    'social-instagram',\n                    'social-instagram-circular',\n                    'social-last-fm',\n                    'social-last-fm-circular',\n                    'social-linkedin',\n                    'social-linkedin-circular',\n                    'social-pinterest',\n                    'social-pinterest-circular',\n                    'social-skype',\n                    'social-skype-outline',\n                    'social-tumbler',\n                    'social-tumbler-circular',\n                    'social-twitter',\n                    'social-twitter-circular',\n                    'social-vimeo',\n                    'social-vimeo-circular',\n                    'social-youtube',\n                    'social-youtube-circular',\n                    'sort-alphabetically',\n                    'sort-alphabetically-outline',\n                    'sort-numerically',\n                    'sort-numerically-outline',\n                    'spanner',\n                    'spanner-outline',\n                    'spiral',\n                    'star',\n                    'star-full-outline',\n                    'star-half',\n                    'star-half-outline',\n                    'star-outline',\n                    'starburst',\n                    'starburst-outline',\n                    'stopwatch',\n                    'support',\n                    'tabs-outline',\n                    'tag',\n                    'tags',\n                    'th-large',\n                    'th-large-outline',\n                    'th-list',\n                    'th-list-outline',\n                    'th-menu',\n                    'th-menu-outline',\n                    'th-small',\n                    'th-small-outline',\n                    'thermometer',\n                    'thumbs-down',\n                    'thumbs-ok',\n                    'thumbs-up',\n                    'tick',\n                    'tick-outline',\n                    'ticket',\n                    'time',\n                    'times',\n                    'times-outline',\n                    'trash',\n                    'tree',\n                    'upload',\n                    'upload-outline',\n                    'user',\n                    'user-add',\n                    'user-add-outline',\n                    'user-delete',\n                    'user-delete-outline',\n                    'user-outline',\n                    'vendor-android',\n                    'vendor-apple',\n                    'vendor-microsoft',\n                    'video',\n                    'video-outline',\n                    'volume',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-up',\n                    'warning',\n                    'warning-outline',\n                    'watch',\n                    'waves',\n                    'waves-outline',\n                    'weather-cloudy',\n                    'weather-downpour',\n                    'weather-night',\n                    'weather-partly-sunny',\n                    'weather-shower',\n                    'weather-snow',\n                    'weather-stormy',\n                    'weather-sunny',\n                    'weather-windy',\n                    'weather-windy-cloudy',\n                    'wi-fi',\n                    'wi-fi-outline',\n                    'wine',\n                    'world',\n                    'world-outline',\n                    'zoom',\n                    'zoom-in',\n                    'zoom-in-outline',\n                    'zoom-out',\n                    'zoom-out-outline',\n                    'zoom-outline'\n                ]\n            },\n            {\n                version: '2.0.4',\n                icons: [\n                    '',\n                    'adjust-brightness',\n                    'adjust-contrast',\n                    'anchor',\n                    'anchor-outline',\n                    'archive',\n                    'arrow-back',\n                    'arrow-back-outline',\n                    'arrow-down',\n                    'arrow-down-outline',\n                    'arrow-down-thick',\n                    'arrow-forward',\n                    'arrow-forward-outline',\n                    'arrow-left',\n                    'arrow-left-outline',\n                    'arrow-left-thick',\n                    'arrow-loop',\n                    'arrow-loop-outline',\n                    'arrow-maximise',\n                    'arrow-maximise-outline',\n                    'arrow-minimise',\n                    'arrow-minimise-outline',\n                    'arrow-move',\n                    'arrow-move-outline',\n                    'arrow-repeat',\n                    'arrow-repeat-outline',\n                    'arrow-right',\n                    'arrow-right-outline',\n                    'arrow-right-thick',\n                    'arrow-shuffle',\n                    'arrow-sorted-down',\n                    'arrow-sorted-up',\n                    'arrow-sync',\n                    'arrow-sync-outline',\n                    'arrow-unsorted',\n                    'arrow-up',\n                    'arrow-up-outline',\n                    'arrow-up-thick',\n                    'at',\n                    'attachment',\n                    'attachment-outline',\n                    'backspace',\n                    'backspace-outline',\n                    'battery-charge',\n                    'battery-full',\n                    'battery-high',\n                    'battery-low',\n                    'battery-mid',\n                    'beaker',\n                    'beer',\n                    'bell',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'brush',\n                    'business-card',\n                    'calculator',\n                    'calendar',\n                    'calendar-outline',\n                    'camera',\n                    'camera-outline',\n                    'cancel',\n                    'cancel-outline',\n                    'chart-area',\n                    'chart-area-outline',\n                    'chart-bar',\n                    'chart-bar-outline',\n                    'chart-line',\n                    'chart-line-outline',\n                    'chart-pie',\n                    'chart-pie-outline',\n                    'chevron-left',\n                    'chevron-left-outline',\n                    'chevron-right',\n                    'chevron-right-outline',\n                    'clipboard',\n                    'cloud-storage',\n                    'cloud-storage-outline',\n                    'code',\n                    'code-outline',\n                    'coffee',\n                    'cog',\n                    'cog-outline',\n                    'compass',\n                    'contacts',\n                    'credit-card',\n                    'css3',\n                    'database',\n                    'delete',\n                    'delete-outline',\n                    'device-desktop',\n                    'device-laptop',\n                    'device-phone',\n                    'device-tablet',\n                    'directions',\n                    'divide',\n                    'divide-outline',\n                    'document',\n                    'document-add',\n                    'document-delete',\n                    'document-text',\n                    'download',\n                    'download-outline',\n                    'dropbox',\n                    'edit',\n                    'eject',\n                    'eject-outline',\n                    'equals',\n                    'equals-outline',\n                    'export',\n                    'export-outline',\n                    'eye',\n                    'eye-outline',\n                    'feather',\n                    'film',\n                    'filter',\n                    'flag',\n                    'flag-outline',\n                    'flash',\n                    'flash-outline',\n                    'flow-children',\n                    'flow-merge',\n                    'flow-parallel',\n                    'flow-switch',\n                    'folder',\n                    'folder-add',\n                    'folder-delete',\n                    'folder-open',\n                    'gift',\n                    'globe',\n                    'globe-outline',\n                    'group',\n                    'group-outline',\n                    'headphones',\n                    'heart',\n                    'heart-full-outline',\n                    'heart-half-outline',\n                    'heart-outline',\n                    'home',\n                    'home-outline',\n                    'html5',\n                    'image',\n                    'image-outline',\n                    'infinity',\n                    'infinity-outline',\n                    'info',\n                    'info-large',\n                    'info-large-outline',\n                    'info-outline',\n                    'input-checked',\n                    'input-checked-outline',\n                    'key',\n                    'key-outline',\n                    'keyboard',\n                    'leaf',\n                    'lightbulb',\n                    'link',\n                    'link-outline',\n                    'location',\n                    'location-arrow',\n                    'location-arrow-outline',\n                    'location-outline',\n                    'lock-closed',\n                    'lock-closed-outline',\n                    'lock-open',\n                    'lock-open-outline',\n                    'mail',\n                    'map',\n                    'media-eject',\n                    'media-eject-outline',\n                    'media-fast-forward',\n                    'media-fast-forward-outline',\n                    'media-pause',\n                    'media-pause-outline',\n                    'media-play',\n                    'media-play-outline',\n                    'media-play-reverse',\n                    'media-play-reverse-outline',\n                    'media-record',\n                    'media-record-outline',\n                    'media-rewind',\n                    'media-rewind-outline',\n                    'media-stop',\n                    'media-stop-outline',\n                    'message',\n                    'message-typing',\n                    'messages',\n                    'microphone',\n                    'microphone-outline',\n                    'minus',\n                    'minus-outline',\n                    'mortar-board',\n                    'news',\n                    'notes',\n                    'notes-outline',\n                    'pen',\n                    'pencil',\n                    'phone',\n                    'phone-outline',\n                    'pi',\n                    'pi-outline',\n                    'pin',\n                    'pin-outline',\n                    'pipette',\n                    'plane',\n                    'plane-outline',\n                    'plug',\n                    'plus',\n                    'plus-outline',\n                    'point-of-interest',\n                    'point-of-interest-outline',\n                    'power',\n                    'power-outline',\n                    'printer',\n                    'puzzle',\n                    'puzzle-outline',\n                    'radar',\n                    'radar-outline',\n                    'refresh',\n                    'refresh-outline',\n                    'rss',\n                    'rss-outline',\n                    'scissors',\n                    'scissors-outline',\n                    'shopping-bag',\n                    'shopping-cart',\n                    'social-at-circular',\n                    'social-dribbble',\n                    'social-dribbble-circular',\n                    'social-facebook',\n                    'social-facebook-circular',\n                    'social-flickr',\n                    'social-flickr-circular',\n                    'social-github',\n                    'social-github-circular',\n                    'social-google-plus',\n                    'social-google-plus-circular',\n                    'social-instagram',\n                    'social-instagram-circular',\n                    'social-last-fm',\n                    'social-last-fm-circular',\n                    'social-linkedin',\n                    'social-linkedin-circular',\n                    'social-pinterest',\n                    'social-pinterest-circular',\n                    'social-skype',\n                    'social-skype-outline',\n                    'social-tumbler',\n                    'social-tumbler-circular',\n                    'social-twitter',\n                    'social-twitter-circular',\n                    'social-vimeo',\n                    'social-vimeo-circular',\n                    'social-youtube',\n                    'social-youtube-circular',\n                    'sort-alphabetically',\n                    'sort-alphabetically-outline',\n                    'sort-numerically',\n                    'sort-numerically-outline',\n                    'spanner',\n                    'spanner-outline',\n                    'spiral',\n                    'star',\n                    'star-full-outline',\n                    'star-half',\n                    'star-half-outline',\n                    'star-outline',\n                    'starburst',\n                    'starburst-outline',\n                    'stopwatch',\n                    'support',\n                    'tabs-outline',\n                    'tag',\n                    'tags',\n                    'th-large',\n                    'th-large-outline',\n                    'th-list',\n                    'th-list-outline',\n                    'th-menu',\n                    'th-menu-outline',\n                    'th-small',\n                    'th-small-outline',\n                    'thermometer',\n                    'thumbs-down',\n                    'thumbs-ok',\n                    'thumbs-up',\n                    'tick',\n                    'tick-outline',\n                    'ticket',\n                    'time',\n                    'times',\n                    'times-outline',\n                    'trash',\n                    'tree',\n                    'upload',\n                    'upload-outline',\n                    'user',\n                    'user-add',\n                    'user-add-outline',\n                    'user-delete',\n                    'user-delete-outline',\n                    'user-outline',\n                    'vendor-android',\n                    'vendor-apple',\n                    'vendor-microsoft',\n                    'video',\n                    'video-outline',\n                    'volume',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-up',\n                    'warning',\n                    'warning-outline',\n                    'watch',\n                    'waves',\n                    'waves-outline',\n                    'weather-cloudy',\n                    'weather-downpour',\n                    'weather-night',\n                    'weather-partly-sunny',\n                    'weather-shower',\n                    'weather-snow',\n                    'weather-stormy',\n                    'weather-sunny',\n                    'weather-windy',\n                    'weather-windy-cloudy',\n                    'wi-fi',\n                    'wi-fi-outline',\n                    'wine',\n                    'world',\n                    'world-outline',\n                    'zoom',\n                    'zoom-in',\n                    'zoom-in-outline',\n                    'zoom-out',\n                    'zoom-out-outline',\n                    'zoom-outline'\n                ]\n            },\n            {\n                version: '2.0.5',\n                icons: [\n                    '',\n                    'adjust-brightness',\n                    'adjust-contrast',\n                    'anchor',\n                    'anchor-outline',\n                    'archive',\n                    'arrow-back',\n                    'arrow-back-outline',\n                    'arrow-down',\n                    'arrow-down-outline',\n                    'arrow-down-thick',\n                    'arrow-forward',\n                    'arrow-forward-outline',\n                    'arrow-left',\n                    'arrow-left-outline',\n                    'arrow-left-thick',\n                    'arrow-loop',\n                    'arrow-loop-outline',\n                    'arrow-maximise',\n                    'arrow-maximise-outline',\n                    'arrow-minimise',\n                    'arrow-minimise-outline',\n                    'arrow-move',\n                    'arrow-move-outline',\n                    'arrow-repeat',\n                    'arrow-repeat-outline',\n                    'arrow-right',\n                    'arrow-right-outline',\n                    'arrow-right-thick',\n                    'arrow-shuffle',\n                    'arrow-sorted-down',\n                    'arrow-sorted-up',\n                    'arrow-sync',\n                    'arrow-sync-outline',\n                    'arrow-unsorted',\n                    'arrow-up',\n                    'arrow-up-outline',\n                    'arrow-up-thick',\n                    'at',\n                    'attachment',\n                    'attachment-outline',\n                    'backspace',\n                    'backspace-outline',\n                    'battery-charge',\n                    'battery-full',\n                    'battery-high',\n                    'battery-low',\n                    'battery-mid',\n                    'beaker',\n                    'beer',\n                    'bell',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'brush',\n                    'business-card',\n                    'calculator',\n                    'camera',\n                    'camera-outline',\n                    'cancel',\n                    'cancel-outline',\n                    'chart-area',\n                    'chart-area-outline',\n                    'chart-bar',\n                    'chart-bar-outline',\n                    'chart-line',\n                    'chart-line-outline',\n                    'chart-pie',\n                    'chart-pie-outline',\n                    'chevron-left',\n                    'chevron-left-outline',\n                    'chevron-right',\n                    'chevron-right-outline',\n                    'clipboard',\n                    'cloud-storage',\n                    'code',\n                    'code-outline',\n                    'coffee',\n                    'cog',\n                    'cog-outline',\n                    'compass',\n                    'contacts',\n                    'credit-card',\n                    'css3',\n                    'database',\n                    'delete',\n                    'delete-outline',\n                    'device-desktop',\n                    'device-laptop',\n                    'device-phone',\n                    'device-tablet',\n                    'directions',\n                    'divide',\n                    'divide-outline',\n                    'document',\n                    'document-add',\n                    'document-delete',\n                    'document-text',\n                    'download',\n                    'download-outline',\n                    'dropbox',\n                    'edit',\n                    'eject',\n                    'eject-outline',\n                    'equals',\n                    'equals-outline',\n                    'export',\n                    'export-outline',\n                    'eye',\n                    'eye-outline',\n                    'feather',\n                    'film',\n                    'filter',\n                    'flag',\n                    'flag-outline',\n                    'flash',\n                    'flash-outline',\n                    'flow-children',\n                    'flow-merge',\n                    'flow-parallel',\n                    'flow-switch',\n                    'folder',\n                    'folder-add',\n                    'folder-delete',\n                    'folder-open',\n                    'gift',\n                    'globe',\n                    'globe-outline',\n                    'group',\n                    'group-outline',\n                    'headphones',\n                    'heart',\n                    'heart-full-outline',\n                    'heart-half-outline',\n                    'heart-outline',\n                    'home',\n                    'home-outline',\n                    'html5',\n                    'image',\n                    'image-outline',\n                    'infinity',\n                    'infinity-outline',\n                    'info',\n                    'info-large',\n                    'info-large-outline',\n                    'info-outline',\n                    'input-checked',\n                    'input-checked-outline',\n                    'key',\n                    'key-outline',\n                    'keyboard',\n                    'leaf',\n                    'lightbulb',\n                    'link',\n                    'link-outline',\n                    'location',\n                    'location-arrow',\n                    'location-arrow-outline',\n                    'location-outline',\n                    'lock-closed',\n                    'lock-closed-outline',\n                    'lock-open',\n                    'lock-open-outline',\n                    'mail',\n                    'map',\n                    'media-eject',\n                    'media-eject-outline',\n                    'media-fast-forward',\n                    'media-fast-forward-outline',\n                    'media-pause',\n                    'media-pause-outline',\n                    'media-play',\n                    'media-play-outline',\n                    'media-play-reverse',\n                    'media-play-reverse-outline',\n                    'media-record',\n                    'media-record-outline',\n                    'media-rewind',\n                    'media-rewind-outline',\n                    'media-stop',\n                    'media-stop-outline',\n                    'message',\n                    'message-typing',\n                    'messages',\n                    'microphone',\n                    'microphone-outline',\n                    'minus',\n                    'minus-outline',\n                    'mortar-board',\n                    'news',\n                    'notes',\n                    'notes-outline',\n                    'pen',\n                    'pencil',\n                    'phone',\n                    'phone-outline',\n                    'pi',\n                    'pi-outline',\n                    'pin',\n                    'pin-outline',\n                    'pipette',\n                    'plane',\n                    'plane-outline',\n                    'plug',\n                    'plus',\n                    'plus-outline',\n                    'point-of-interest',\n                    'point-of-interest-outline',\n                    'power',\n                    'power-outline',\n                    'printer',\n                    'puzzle',\n                    'puzzle-outline',\n                    'radar',\n                    'radar-outline',\n                    'refresh',\n                    'refresh-outline',\n                    'rss',\n                    'rss-outline',\n                    'scissors',\n                    'scissors-outline',\n                    'shopping-bag',\n                    'shopping-cart',\n                    'social-at-circular',\n                    'social-dribbble',\n                    'social-dribbble-circular',\n                    'social-facebook',\n                    'social-facebook-circular',\n                    'social-flickr',\n                    'social-flickr-circular',\n                    'social-github',\n                    'social-github-circular',\n                    'social-google-plus',\n                    'social-google-plus-circular',\n                    'social-instagram',\n                    'social-instagram-circular',\n                    'social-last-fm',\n                    'social-last-fm-circular',\n                    'social-linkedin',\n                    'social-linkedin-circular',\n                    'social-pinterest',\n                    'social-pinterest-circular',\n                    'social-skype',\n                    'social-skype-outline',\n                    'social-tumbler',\n                    'social-tumbler-circular',\n                    'social-twitter',\n                    'social-twitter-circular',\n                    'social-vimeo',\n                    'social-vimeo-circular',\n                    'social-youtube',\n                    'social-youtube-circular',\n                    'sort-alphabetically',\n                    'sort-alphabetically-outline',\n                    'sort-numerically',\n                    'sort-numerically-outline',\n                    'spanner',\n                    'spanner-outline',\n                    'spiral',\n                    'star',\n                    'star-full-outline',\n                    'star-half',\n                    'star-half-outline',\n                    'star-outline',\n                    'starburst',\n                    'starburst-outline',\n                    'stopwatch',\n                    'support',\n                    'tabs-outline',\n                    'tag',\n                    'tags',\n                    'th-large',\n                    'th-large-outline',\n                    'th-list',\n                    'th-list-outline',\n                    'th-menu',\n                    'th-menu-outline',\n                    'th-small',\n                    'th-small-outline',\n                    'thermometer',\n                    'thumbs-down',\n                    'thumbs-ok',\n                    'thumbs-up',\n                    'tick',\n                    'tick-outline',\n                    'ticket',\n                    'time',\n                    'times',\n                    'times-outline',\n                    'trash',\n                    'tree',\n                    'upload',\n                    'upload-outline',\n                    'user',\n                    'user-add',\n                    'user-add-outline',\n                    'user-delete',\n                    'user-delete-outline',\n                    'user-outline',\n                    'vendor-android',\n                    'vendor-apple',\n                    'vendor-microsoft',\n                    'video',\n                    'video-outline',\n                    'volume',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-up',\n                    'warning',\n                    'warning-outline',\n                    'watch',\n                    'waves',\n                    'waves-outline',\n                    'weather-cloudy',\n                    'weather-downpour',\n                    'weather-night',\n                    'weather-partly-sunny',\n                    'weather-shower',\n                    'weather-snow',\n                    'weather-stormy',\n                    'weather-sunny',\n                    'weather-windy',\n                    'weather-windy-cloudy',\n                    'wi-fi',\n                    'wi-fi-outline',\n                    'wine',\n                    'world',\n                    'world-outline',\n                    'zoom',\n                    'zoom-in',\n                    'zoom-in-outline',\n                    'zoom-out',\n                    'zoom-out-outline',\n                    'zoom-outline'\n                ]\n            },\n            {\n                version: '2.0.6',\n                icons: [\n                    '',\n                    'adjust-brightness',\n                    'adjust-contrast',\n                    'anchor',\n                    'anchor-outline',\n                    'archive',\n                    'arrow-back',\n                    'arrow-back-outline',\n                    'arrow-down',\n                    'arrow-down-outline',\n                    'arrow-down-thick',\n                    'arrow-forward',\n                    'arrow-forward-outline',\n                    'arrow-left',\n                    'arrow-left-outline',\n                    'arrow-left-thick',\n                    'arrow-loop',\n                    'arrow-loop-outline',\n                    'arrow-maximise',\n                    'arrow-maximise-outline',\n                    'arrow-minimise',\n                    'arrow-minimise-outline',\n                    'arrow-move',\n                    'arrow-move-outline',\n                    'arrow-repeat',\n                    'arrow-repeat-outline',\n                    'arrow-right',\n                    'arrow-right-outline',\n                    'arrow-right-thick',\n                    'arrow-shuffle',\n                    'arrow-sorted-down',\n                    'arrow-sorted-up',\n                    'arrow-sync',\n                    'arrow-sync-outline',\n                    'arrow-unsorted',\n                    'arrow-up',\n                    'arrow-up-outline',\n                    'arrow-up-thick',\n                    'at',\n                    'attachment',\n                    'attachment-outline',\n                    'backspace',\n                    'backspace-outline',\n                    'battery-charge',\n                    'battery-full',\n                    'battery-high',\n                    'battery-low',\n                    'battery-mid',\n                    'beaker',\n                    'beer',\n                    'bell',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'brush',\n                    'business-card',\n                    'calculator',\n                    'calendar',\n                    'calendar-outline',\n                    'camera',\n                    'camera-outline',\n                    'cancel',\n                    'cancel-outline',\n                    'chart-area',\n                    'chart-area-outline',\n                    'chart-bar',\n                    'chart-bar-outline',\n                    'chart-line',\n                    'chart-line-outline',\n                    'chart-pie',\n                    'chart-pie-outline',\n                    'chevron-left',\n                    'chevron-left-outline',\n                    'chevron-right',\n                    'chevron-right-outline',\n                    'clipboard',\n                    'cloud-storage',\n                    'cloud-storage-outline',\n                    'code',\n                    'code-outline',\n                    'coffee',\n                    'cog',\n                    'cog-outline',\n                    'compass',\n                    'contacts',\n                    'credit-card',\n                    'css3',\n                    'database',\n                    'delete',\n                    'delete-outline',\n                    'device-desktop',\n                    'device-laptop',\n                    'device-phone',\n                    'device-tablet',\n                    'directions',\n                    'divide',\n                    'divide-outline',\n                    'document',\n                    'document-add',\n                    'document-delete',\n                    'document-text',\n                    'download',\n                    'download-outline',\n                    'dropbox',\n                    'edit',\n                    'eject',\n                    'eject-outline',\n                    'equals',\n                    'equals-outline',\n                    'export',\n                    'export-outline',\n                    'eye',\n                    'eye-outline',\n                    'feather',\n                    'film',\n                    'filter',\n                    'flag',\n                    'flag-outline',\n                    'flash',\n                    'flash-outline',\n                    'flow-children',\n                    'flow-merge',\n                    'flow-parallel',\n                    'flow-switch',\n                    'folder',\n                    'folder-add',\n                    'folder-delete',\n                    'folder-open',\n                    'gift',\n                    'globe',\n                    'globe-outline',\n                    'group',\n                    'group-outline',\n                    'headphones',\n                    'heart',\n                    'heart-full-outline',\n                    'heart-half-outline',\n                    'heart-outline',\n                    'home',\n                    'home-outline',\n                    'html5',\n                    'image',\n                    'image-outline',\n                    'infinity',\n                    'infinity-outline',\n                    'info',\n                    'info-large',\n                    'info-large-outline',\n                    'info-outline',\n                    'input-checked',\n                    'input-checked-outline',\n                    'key',\n                    'key-outline',\n                    'keyboard',\n                    'leaf',\n                    'lightbulb',\n                    'link',\n                    'link-outline',\n                    'location',\n                    'location-arrow',\n                    'location-arrow-outline',\n                    'location-outline',\n                    'lock-closed',\n                    'lock-closed-outline',\n                    'lock-open',\n                    'lock-open-outline',\n                    'mail',\n                    'map',\n                    'media-eject',\n                    'media-eject-outline',\n                    'media-fast-forward',\n                    'media-fast-forward-outline',\n                    'media-pause',\n                    'media-pause-outline',\n                    'media-play',\n                    'media-play-outline',\n                    'media-play-reverse',\n                    'media-play-reverse-outline',\n                    'media-record',\n                    'media-record-outline',\n                    'media-rewind',\n                    'media-rewind-outline',\n                    'media-stop',\n                    'media-stop-outline',\n                    'message',\n                    'message-typing',\n                    'messages',\n                    'microphone',\n                    'microphone-outline',\n                    'minus',\n                    'minus-outline',\n                    'mortar-board',\n                    'news',\n                    'notes',\n                    'notes-outline',\n                    'pen',\n                    'pencil',\n                    'phone',\n                    'phone-outline',\n                    'pi',\n                    'pi-outline',\n                    'pin',\n                    'pin-outline',\n                    'pipette',\n                    'plane',\n                    'plane-outline',\n                    'plug',\n                    'plus',\n                    'plus-outline',\n                    'point-of-interest',\n                    'point-of-interest-outline',\n                    'power',\n                    'power-outline',\n                    'printer',\n                    'puzzle',\n                    'puzzle-outline',\n                    'radar',\n                    'radar-outline',\n                    'refresh',\n                    'refresh-outline',\n                    'rss',\n                    'rss-outline',\n                    'scissors',\n                    'scissors-outline',\n                    'shopping-bag',\n                    'shopping-cart',\n                    'social-at-circular',\n                    'social-dribbble',\n                    'social-dribbble-circular',\n                    'social-facebook',\n                    'social-facebook-circular',\n                    'social-flickr',\n                    'social-flickr-circular',\n                    'social-github',\n                    'social-github-circular',\n                    'social-google-plus',\n                    'social-google-plus-circular',\n                    'social-instagram',\n                    'social-instagram-circular',\n                    'social-last-fm',\n                    'social-last-fm-circular',\n                    'social-linkedin',\n                    'social-linkedin-circular',\n                    'social-pinterest',\n                    'social-pinterest-circular',\n                    'social-skype',\n                    'social-skype-outline',\n                    'social-tumbler',\n                    'social-tumbler-circular',\n                    'social-twitter',\n                    'social-twitter-circular',\n                    'social-vimeo',\n                    'social-vimeo-circular',\n                    'social-youtube',\n                    'social-youtube-circular',\n                    'sort-alphabetically',\n                    'sort-alphabetically-outline',\n                    'sort-numerically',\n                    'sort-numerically-outline',\n                    'spanner',\n                    'spanner-outline',\n                    'spiral',\n                    'star',\n                    'star-full-outline',\n                    'star-half',\n                    'star-half-outline',\n                    'star-outline',\n                    'starburst',\n                    'starburst-outline',\n                    'stopwatch',\n                    'support',\n                    'tabs-outline',\n                    'tag',\n                    'tags',\n                    'th-large',\n                    'th-large-outline',\n                    'th-list',\n                    'th-list-outline',\n                    'th-menu',\n                    'th-menu-outline',\n                    'th-small',\n                    'th-small-outline',\n                    'thermometer',\n                    'thumbs-down',\n                    'thumbs-ok',\n                    'thumbs-up',\n                    'tick',\n                    'tick-outline',\n                    'ticket',\n                    'time',\n                    'times',\n                    'times-outline',\n                    'trash',\n                    'tree',\n                    'upload',\n                    'upload-outline',\n                    'user',\n                    'user-add',\n                    'user-add-outline',\n                    'user-delete',\n                    'user-delete-outline',\n                    'user-outline',\n                    'vendor-android',\n                    'vendor-apple',\n                    'vendor-microsoft',\n                    'video',\n                    'video-outline',\n                    'volume',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-up',\n                    'warning',\n                    'warning-outline',\n                    'watch',\n                    'waves',\n                    'waves-outline',\n                    'weather-cloudy',\n                    'weather-downpour',\n                    'weather-night',\n                    'weather-partly-sunny',\n                    'weather-shower',\n                    'weather-snow',\n                    'weather-stormy',\n                    'weather-sunny',\n                    'weather-windy',\n                    'weather-windy-cloudy',\n                    'wi-fi',\n                    'wi-fi-outline',\n                    'wine',\n                    'world',\n                    'world-outline',\n                    'zoom',\n                    'zoom-in',\n                    'zoom-in-outline',\n                    'zoom-out',\n                    'zoom-out-outline',\n                    'zoom-outline'\n                ]\n            },\n            {\n                version: '2.0.7',\n                icons: [\n                    '',\n                    'adjust-brightness',\n                    'adjust-contrast',\n                    'anchor',\n                    'anchor-outline',\n                    'archive',\n                    'arrow-back',\n                    'arrow-back-outline',\n                    'arrow-down',\n                    'arrow-down-outline',\n                    'arrow-down-thick',\n                    'arrow-forward',\n                    'arrow-forward-outline',\n                    'arrow-left',\n                    'arrow-left-outline',\n                    'arrow-left-thick',\n                    'arrow-loop',\n                    'arrow-loop-outline',\n                    'arrow-maximise',\n                    'arrow-maximise-outline',\n                    'arrow-minimise',\n                    'arrow-minimise-outline',\n                    'arrow-move',\n                    'arrow-move-outline',\n                    'arrow-repeat',\n                    'arrow-repeat-outline',\n                    'arrow-right',\n                    'arrow-right-outline',\n                    'arrow-right-thick',\n                    'arrow-shuffle',\n                    'arrow-sorted-down',\n                    'arrow-sorted-up',\n                    'arrow-sync',\n                    'arrow-sync-outline',\n                    'arrow-unsorted',\n                    'arrow-up',\n                    'arrow-up-outline',\n                    'arrow-up-thick',\n                    'at',\n                    'attachment',\n                    'attachment-outline',\n                    'backspace',\n                    'backspace-outline',\n                    'battery-charge',\n                    'battery-full',\n                    'battery-high',\n                    'battery-low',\n                    'battery-mid',\n                    'beaker',\n                    'beer',\n                    'bell',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'brush',\n                    'business-card',\n                    'calculator',\n                    'calendar',\n                    'calendar-outline',\n                    'camera',\n                    'camera-outline',\n                    'cancel',\n                    'cancel-outline',\n                    'chart-area',\n                    'chart-area-outline',\n                    'chart-bar',\n                    'chart-bar-outline',\n                    'chart-line',\n                    'chart-line-outline',\n                    'chart-pie',\n                    'chart-pie-outline',\n                    'chevron-left',\n                    'chevron-left-outline',\n                    'chevron-right',\n                    'chevron-right-outline',\n                    'clipboard',\n                    'cloud-storage',\n                    'cloud-storage-outline',\n                    'code',\n                    'code-outline',\n                    'coffee',\n                    'cog',\n                    'cog-outline',\n                    'compass',\n                    'contacts',\n                    'credit-card',\n                    'css3',\n                    'database',\n                    'delete',\n                    'delete-outline',\n                    'device-desktop',\n                    'device-laptop',\n                    'device-phone',\n                    'device-tablet',\n                    'directions',\n                    'divide',\n                    'divide-outline',\n                    'document',\n                    'document-add',\n                    'document-delete',\n                    'document-text',\n                    'download',\n                    'download-outline',\n                    'dropbox',\n                    'edit',\n                    'eject',\n                    'eject-outline',\n                    'equals',\n                    'equals-outline',\n                    'export',\n                    'export-outline',\n                    'eye',\n                    'eye-outline',\n                    'feather',\n                    'film',\n                    'filter',\n                    'flag',\n                    'flag-outline',\n                    'flash',\n                    'flash-outline',\n                    'flow-children',\n                    'flow-merge',\n                    'flow-parallel',\n                    'flow-switch',\n                    'folder',\n                    'folder-add',\n                    'folder-delete',\n                    'folder-open',\n                    'gift',\n                    'globe',\n                    'globe-outline',\n                    'group',\n                    'group-outline',\n                    'headphones',\n                    'heart',\n                    'heart-full-outline',\n                    'heart-half-outline',\n                    'heart-outline',\n                    'home',\n                    'home-outline',\n                    'html5',\n                    'image',\n                    'image-outline',\n                    'infinity',\n                    'infinity-outline',\n                    'info',\n                    'info-large',\n                    'info-large-outline',\n                    'info-outline',\n                    'input-checked',\n                    'input-checked-outline',\n                    'key',\n                    'keyboard',\n                    'key-outline',\n                    'leaf',\n                    'lightbulb',\n                    'link',\n                    'link-outline',\n                    'location',\n                    'location-arrow',\n                    'location-arrow-outline',\n                    'location-outline',\n                    'lock-closed',\n                    'lock-closed-outline',\n                    'lock-open',\n                    'lock-open-outline',\n                    'mail',\n                    'map',\n                    'media-eject',\n                    'media-eject-outline',\n                    'media-fast-forward',\n                    'media-fast-forward-outline',\n                    'media-pause',\n                    'media-pause-outline',\n                    'media-play',\n                    'media-play-outline',\n                    'media-play-reverse',\n                    'media-play-reverse-outline',\n                    'media-record',\n                    'media-record-outline',\n                    'media-rewind',\n                    'media-rewind-outline',\n                    'media-stop',\n                    'media-stop-outline',\n                    'message',\n                    'messages',\n                    'message-typing',\n                    'microphone',\n                    'microphone-outline',\n                    'minus',\n                    'minus-outline',\n                    'mortar-board',\n                    'news',\n                    'notes',\n                    'notes-outline',\n                    'pen',\n                    'pencil',\n                    'phone',\n                    'phone-outline',\n                    'pi',\n                    'pin',\n                    'pin-outline',\n                    'pi-outline',\n                    'pipette',\n                    'plane',\n                    'plane-outline',\n                    'plug',\n                    'plus',\n                    'plus-outline',\n                    'point-of-interest',\n                    'point-of-interest-outline',\n                    'power',\n                    'power-outline',\n                    'printer',\n                    'puzzle',\n                    'puzzle-outline',\n                    'radar',\n                    'radar-outline',\n                    'refresh',\n                    'refresh-outline',\n                    'rss',\n                    'rss-outline',\n                    'scissors',\n                    'scissors-outline',\n                    'shopping-bag',\n                    'shopping-cart',\n                    'social-at-circular',\n                    'social-dribbble',\n                    'social-dribbble-circular',\n                    'social-facebook',\n                    'social-facebook-circular',\n                    'social-flickr',\n                    'social-flickr-circular',\n                    'social-github',\n                    'social-github-circular',\n                    'social-google-plus',\n                    'social-google-plus-circular',\n                    'social-instagram',\n                    'social-instagram-circular',\n                    'social-last-fm',\n                    'social-last-fm-circular',\n                    'social-linkedin',\n                    'social-linkedin-circular',\n                    'social-pinterest',\n                    'social-pinterest-circular',\n                    'social-skype',\n                    'social-skype-outline',\n                    'social-tumbler',\n                    'social-tumbler-circular',\n                    'social-twitter',\n                    'social-twitter-circular',\n                    'social-vimeo',\n                    'social-vimeo-circular',\n                    'social-youtube',\n                    'social-youtube-circular',\n                    'sort-alphabetically',\n                    'sort-alphabetically-outline',\n                    'sort-numerically',\n                    'sort-numerically-outline',\n                    'spanner',\n                    'spanner-outline',\n                    'spiral',\n                    'star',\n                    'starburst',\n                    'starburst-outline',\n                    'star-full-outline',\n                    'star-half',\n                    'star-half-outline',\n                    'star-outline',\n                    'stopwatch',\n                    'support',\n                    'tabs-outline',\n                    'tag',\n                    'tags',\n                    'thermometer',\n                    'th-large',\n                    'th-large-outline',\n                    'th-list',\n                    'th-list-outline',\n                    'th-menu',\n                    'th-menu-outline',\n                    'th-small',\n                    'th-small-outline',\n                    'thumbs-down',\n                    'thumbs-ok',\n                    'thumbs-up',\n                    'tick',\n                    'ticket',\n                    'tick-outline',\n                    'time',\n                    'times',\n                    'times-outline',\n                    'trash',\n                    'tree',\n                    'upload',\n                    'upload-outline',\n                    'user',\n                    'user-add',\n                    'user-add-outline',\n                    'user-delete',\n                    'user-delete-outline',\n                    'user-outline',\n                    'vendor-android',\n                    'vendor-apple',\n                    'vendor-microsoft',\n                    'video',\n                    'video-outline',\n                    'volume',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-up',\n                    'warning',\n                    'warning-outline',\n                    'watch',\n                    'waves',\n                    'waves-outline',\n                    'weather-cloudy',\n                    'weather-downpour',\n                    'weather-night',\n                    'weather-partly-sunny',\n                    'weather-shower',\n                    'weather-snow',\n                    'weather-stormy',\n                    'weather-sunny',\n                    'weather-windy',\n                    'weather-windy-cloudy',\n                    'wi-fi',\n                    'wi-fi-outline',\n                    'wine',\n                    'world',\n                    'world-outline',\n                    'zoom',\n                    'zoom-in',\n                    'zoom-in-outline',\n                    'zoom-out',\n                    'zoom-outline',\n                    'zoom-out-outline'\n                ]\n            },\n            {\n                version: '2.0.8',\n                icons: [\n                    '',\n                    'adjust-brightness',\n                    'adjust-contrast',\n                    'anchor',\n                    'anchor-outline',\n                    'archive',\n                    'arrow-back',\n                    'arrow-back-outline',\n                    'arrow-down',\n                    'arrow-down-outline',\n                    'arrow-down-thick',\n                    'arrow-forward',\n                    'arrow-forward-outline',\n                    'arrow-left',\n                    'arrow-left-outline',\n                    'arrow-left-thick',\n                    'arrow-loop',\n                    'arrow-loop-outline',\n                    'arrow-maximise',\n                    'arrow-maximise-outline',\n                    'arrow-minimise',\n                    'arrow-minimise-outline',\n                    'arrow-move',\n                    'arrow-move-outline',\n                    'arrow-repeat',\n                    'arrow-repeat-outline',\n                    'arrow-right',\n                    'arrow-right-outline',\n                    'arrow-right-thick',\n                    'arrow-shuffle',\n                    'arrow-sorted-down',\n                    'arrow-sorted-up',\n                    'arrow-sync',\n                    'arrow-sync-outline',\n                    'arrow-unsorted',\n                    'arrow-up',\n                    'arrow-up-outline',\n                    'arrow-up-thick',\n                    'at',\n                    'attachment',\n                    'attachment-outline',\n                    'backspace',\n                    'backspace-outline',\n                    'battery-charge',\n                    'battery-full',\n                    'battery-high',\n                    'battery-low',\n                    'battery-mid',\n                    'beaker',\n                    'beer',\n                    'bell',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'brush',\n                    'business-card',\n                    'calculator',\n                    'calendar',\n                    'calendar-outline',\n                    'camera',\n                    'camera-outline',\n                    'cancel',\n                    'cancel-outline',\n                    'chart-area',\n                    'chart-area-outline',\n                    'chart-bar',\n                    'chart-bar-outline',\n                    'chart-line',\n                    'chart-line-outline',\n                    'chart-pie',\n                    'chart-pie-outline',\n                    'chevron-left',\n                    'chevron-left-outline',\n                    'chevron-right',\n                    'chevron-right-outline',\n                    'clipboard',\n                    'cloud-storage',\n                    'cloud-storage-outline',\n                    'code',\n                    'code-outline',\n                    'coffee',\n                    'cog',\n                    'cog-outline',\n                    'compass',\n                    'contacts',\n                    'credit-card',\n                    'css3',\n                    'database',\n                    'delete',\n                    'delete-outline',\n                    'device-desktop',\n                    'device-laptop',\n                    'device-phone',\n                    'device-tablet',\n                    'directions',\n                    'divide',\n                    'divide-outline',\n                    'document',\n                    'document-add',\n                    'document-delete',\n                    'document-text',\n                    'download',\n                    'download-outline',\n                    'dropbox',\n                    'edit',\n                    'eject',\n                    'eject-outline',\n                    'equals',\n                    'equals-outline',\n                    'export',\n                    'export-outline',\n                    'eye',\n                    'eye-outline',\n                    'feather',\n                    'film',\n                    'filter',\n                    'flag',\n                    'flag-outline',\n                    'flash',\n                    'flash-outline',\n                    'flow-children',\n                    'flow-merge',\n                    'flow-parallel',\n                    'flow-switch',\n                    'folder',\n                    'folder-add',\n                    'folder-delete',\n                    'folder-open',\n                    'gift',\n                    'globe',\n                    'globe-outline',\n                    'group',\n                    'group-outline',\n                    'headphones',\n                    'heart',\n                    'heart-full-outline',\n                    'heart-half-outline',\n                    'heart-outline',\n                    'home',\n                    'home-outline',\n                    'html5',\n                    'image',\n                    'image-outline',\n                    'infinity',\n                    'infinity-outline',\n                    'info',\n                    'info-large',\n                    'info-large-outline',\n                    'info-outline',\n                    'input-checked',\n                    'input-checked-outline',\n                    'key',\n                    'keyboard',\n                    'key-outline',\n                    'leaf',\n                    'lightbulb',\n                    'link',\n                    'link-outline',\n                    'location',\n                    'location-arrow',\n                    'location-arrow-outline',\n                    'location-outline',\n                    'lock-closed',\n                    'lock-closed-outline',\n                    'lock-open',\n                    'lock-open-outline',\n                    'mail',\n                    'map',\n                    'media-eject',\n                    'media-eject-outline',\n                    'media-fast-forward',\n                    'media-fast-forward-outline',\n                    'media-pause',\n                    'media-pause-outline',\n                    'media-play',\n                    'media-play-outline',\n                    'media-play-reverse',\n                    'media-play-reverse-outline',\n                    'media-record',\n                    'media-record-outline',\n                    'media-rewind',\n                    'media-rewind-outline',\n                    'media-stop',\n                    'media-stop-outline',\n                    'message',\n                    'messages',\n                    'message-typing',\n                    'microphone',\n                    'microphone-outline',\n                    'minus',\n                    'minus-outline',\n                    'mortar-board',\n                    'news',\n                    'notes',\n                    'notes-outline',\n                    'pen',\n                    'pencil',\n                    'phone',\n                    'phone-outline',\n                    'pi',\n                    'pin',\n                    'pin-outline',\n                    'pi-outline',\n                    'pipette',\n                    'plane',\n                    'plane-outline',\n                    'plug',\n                    'plus',\n                    'plus-outline',\n                    'point-of-interest',\n                    'point-of-interest-outline',\n                    'power',\n                    'power-outline',\n                    'printer',\n                    'puzzle',\n                    'puzzle-outline',\n                    'radar',\n                    'radar-outline',\n                    'refresh',\n                    'refresh-outline',\n                    'rss',\n                    'rss-outline',\n                    'scissors',\n                    'scissors-outline',\n                    'shopping-bag',\n                    'shopping-cart',\n                    'social-at-circular',\n                    'social-dribbble',\n                    'social-dribbble-circular',\n                    'social-facebook',\n                    'social-facebook-circular',\n                    'social-flickr',\n                    'social-flickr-circular',\n                    'social-github',\n                    'social-github-circular',\n                    'social-google-plus',\n                    'social-google-plus-circular',\n                    'social-instagram',\n                    'social-instagram-circular',\n                    'social-last-fm',\n                    'social-last-fm-circular',\n                    'social-linkedin',\n                    'social-linkedin-circular',\n                    'social-pinterest',\n                    'social-pinterest-circular',\n                    'social-skype',\n                    'social-skype-outline',\n                    'social-tumbler',\n                    'social-tumbler-circular',\n                    'social-twitter',\n                    'social-twitter-circular',\n                    'social-vimeo',\n                    'social-vimeo-circular',\n                    'social-youtube',\n                    'social-youtube-circular',\n                    'sort-alphabetically',\n                    'sort-alphabetically-outline',\n                    'sort-numerically',\n                    'sort-numerically-outline',\n                    'spanner',\n                    'spanner-outline',\n                    'spiral',\n                    'star',\n                    'starburst',\n                    'starburst-outline',\n                    'star-full-outline',\n                    'star-half',\n                    'star-half-outline',\n                    'star-outline',\n                    'stopwatch',\n                    'support',\n                    'tabs-outline',\n                    'tag',\n                    'tags',\n                    'thermometer',\n                    'th-large',\n                    'th-large-outline',\n                    'th-list',\n                    'th-list-outline',\n                    'th-menu',\n                    'th-menu-outline',\n                    'th-small',\n                    'th-small-outline',\n                    'thumbs-down',\n                    'thumbs-ok',\n                    'thumbs-up',\n                    'tick',\n                    'ticket',\n                    'tick-outline',\n                    'time',\n                    'times',\n                    'times-outline',\n                    'trash',\n                    'tree',\n                    'upload',\n                    'upload-outline',\n                    'user',\n                    'user-add',\n                    'user-add-outline',\n                    'user-delete',\n                    'user-delete-outline',\n                    'user-outline',\n                    'vendor-android',\n                    'vendor-apple',\n                    'vendor-microsoft',\n                    'video',\n                    'video-outline',\n                    'volume',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-up',\n                    'warning',\n                    'warning-outline',\n                    'watch',\n                    'waves',\n                    'waves-outline',\n                    'weather-cloudy',\n                    'weather-downpour',\n                    'weather-night',\n                    'weather-partly-sunny',\n                    'weather-shower',\n                    'weather-snow',\n                    'weather-stormy',\n                    'weather-sunny',\n                    'weather-windy',\n                    'weather-windy-cloudy',\n                    'wi-fi',\n                    'wi-fi-outline',\n                    'wine',\n                    'world',\n                    'world-outline',\n                    'zoom',\n                    'zoom-in',\n                    'zoom-in-outline',\n                    'zoom-out',\n                    'zoom-outline',\n                    'zoom-out-outline'\n                ]\n            },\n            {\n                version: '2.0.9',\n                icons: [\n                    '',\n                    'adjust-brightness',\n                    'adjust-contrast',\n                    'anchor',\n                    'anchor-outline',\n                    'archive',\n                    'arrow-back',\n                    'arrow-back-outline',\n                    'arrow-down',\n                    'arrow-down-outline',\n                    'arrow-down-thick',\n                    'arrow-forward',\n                    'arrow-forward-outline',\n                    'arrow-left',\n                    'arrow-left-outline',\n                    'arrow-left-thick',\n                    'arrow-loop',\n                    'arrow-loop-outline',\n                    'arrow-maximise',\n                    'arrow-maximise-outline',\n                    'arrow-minimise',\n                    'arrow-minimise-outline',\n                    'arrow-move',\n                    'arrow-move-outline',\n                    'arrow-repeat',\n                    'arrow-repeat-outline',\n                    'arrow-right',\n                    'arrow-right-outline',\n                    'arrow-right-thick',\n                    'arrow-shuffle',\n                    'arrow-sorted-down',\n                    'arrow-sorted-up',\n                    'arrow-sync',\n                    'arrow-sync-outline',\n                    'arrow-unsorted',\n                    'arrow-up',\n                    'arrow-up-outline',\n                    'arrow-up-thick',\n                    'at',\n                    'attachment',\n                    'attachment-outline',\n                    'backspace',\n                    'backspace-outline',\n                    'battery-charge',\n                    'battery-full',\n                    'battery-high',\n                    'battery-low',\n                    'battery-mid',\n                    'beaker',\n                    'beer',\n                    'bell',\n                    'book',\n                    'bookmark',\n                    'briefcase',\n                    'brush',\n                    'business-card',\n                    'calculator',\n                    'calendar',\n                    'calendar-outline',\n                    'camera',\n                    'camera-outline',\n                    'cancel',\n                    'cancel-outline',\n                    'chart-area',\n                    'chart-area-outline',\n                    'chart-bar',\n                    'chart-bar-outline',\n                    'chart-line',\n                    'chart-line-outline',\n                    'chart-pie',\n                    'chart-pie-outline',\n                    'chevron-left',\n                    'chevron-left-outline',\n                    'chevron-right',\n                    'chevron-right-outline',\n                    'clipboard',\n                    'cloud-storage',\n                    'cloud-storage-outline',\n                    'code',\n                    'code-outline',\n                    'coffee',\n                    'cog',\n                    'cog-outline',\n                    'compass',\n                    'contacts',\n                    'credit-card',\n                    'css3',\n                    'database',\n                    'delete',\n                    'delete-outline',\n                    'device-desktop',\n                    'device-laptop',\n                    'device-phone',\n                    'device-tablet',\n                    'directions',\n                    'divide',\n                    'divide-outline',\n                    'document',\n                    'document-add',\n                    'document-delete',\n                    'document-text',\n                    'download',\n                    'download-outline',\n                    'dropbox',\n                    'edit',\n                    'eject',\n                    'eject-outline',\n                    'equals',\n                    'equals-outline',\n                    'export',\n                    'export-outline',\n                    'eye',\n                    'eye-outline',\n                    'feather',\n                    'film',\n                    'filter',\n                    'flag',\n                    'flag-outline',\n                    'flash',\n                    'flash-outline',\n                    'flow-children',\n                    'flow-merge',\n                    'flow-parallel',\n                    'flow-switch',\n                    'folder',\n                    'folder-add',\n                    'folder-delete',\n                    'folder-open',\n                    'gift',\n                    'globe',\n                    'globe-outline',\n                    'group',\n                    'group-outline',\n                    'headphones',\n                    'heart',\n                    'heart-full-outline',\n                    'heart-half-outline',\n                    'heart-outline',\n                    'home',\n                    'home-outline',\n                    'html5',\n                    'image',\n                    'image-outline',\n                    'infinity',\n                    'infinity-outline',\n                    'info',\n                    'info-large',\n                    'info-large-outline',\n                    'info-outline',\n                    'input-checked',\n                    'input-checked-outline',\n                    'key',\n                    'keyboard',\n                    'key-outline',\n                    'leaf',\n                    'lightbulb',\n                    'link',\n                    'link-outline',\n                    'location',\n                    'location-arrow',\n                    'location-arrow-outline',\n                    'location-outline',\n                    'lock-closed',\n                    'lock-closed-outline',\n                    'lock-open',\n                    'lock-open-outline',\n                    'mail',\n                    'map',\n                    'media-eject',\n                    'media-eject-outline',\n                    'media-fast-forward',\n                    'media-fast-forward-outline',\n                    'media-pause',\n                    'media-pause-outline',\n                    'media-play',\n                    'media-play-outline',\n                    'media-play-reverse',\n                    'media-play-reverse-outline',\n                    'media-record',\n                    'media-record-outline',\n                    'media-rewind',\n                    'media-rewind-outline',\n                    'media-stop',\n                    'media-stop-outline',\n                    'message',\n                    'messages',\n                    'message-typing',\n                    'microphone',\n                    'microphone-outline',\n                    'minus',\n                    'minus-outline',\n                    'mortar-board',\n                    'news',\n                    'notes',\n                    'notes-outline',\n                    'pen',\n                    'pencil',\n                    'phone',\n                    'phone-outline',\n                    'pi',\n                    'pin',\n                    'pin-outline',\n                    'pi-outline',\n                    'pipette',\n                    'plane',\n                    'plane-outline',\n                    'plug',\n                    'plus',\n                    'plus-outline',\n                    'point-of-interest',\n                    'point-of-interest-outline',\n                    'power',\n                    'power-outline',\n                    'printer',\n                    'puzzle',\n                    'puzzle-outline',\n                    'radar',\n                    'radar-outline',\n                    'refresh',\n                    'refresh-outline',\n                    'rss',\n                    'rss-outline',\n                    'scissors',\n                    'scissors-outline',\n                    'shopping-bag',\n                    'shopping-cart',\n                    'social-at-circular',\n                    'social-dribbble',\n                    'social-dribbble-circular',\n                    'social-facebook',\n                    'social-facebook-circular',\n                    'social-flickr',\n                    'social-flickr-circular',\n                    'social-github',\n                    'social-github-circular',\n                    'social-google-plus',\n                    'social-google-plus-circular',\n                    'social-instagram',\n                    'social-instagram-circular',\n                    'social-last-fm',\n                    'social-last-fm-circular',\n                    'social-linkedin',\n                    'social-linkedin-circular',\n                    'social-pinterest',\n                    'social-pinterest-circular',\n                    'social-skype',\n                    'social-skype-outline',\n                    'social-tumbler',\n                    'social-tumbler-circular',\n                    'social-twitter',\n                    'social-twitter-circular',\n                    'social-vimeo',\n                    'social-vimeo-circular',\n                    'social-youtube',\n                    'social-youtube-circular',\n                    'sort-alphabetically',\n                    'sort-alphabetically-outline',\n                    'sort-numerically',\n                    'sort-numerically-outline',\n                    'spanner',\n                    'spanner-outline',\n                    'spiral',\n                    'star',\n                    'starburst',\n                    'starburst-outline',\n                    'star-full-outline',\n                    'star-half',\n                    'star-half-outline',\n                    'star-outline',\n                    'stopwatch',\n                    'support',\n                    'tabs-outline',\n                    'tag',\n                    'tags',\n                    'thermometer',\n                    'th-large',\n                    'th-large-outline',\n                    'th-list',\n                    'th-list-outline',\n                    'th-menu',\n                    'th-menu-outline',\n                    'th-small',\n                    'th-small-outline',\n                    'thumbs-down',\n                    'thumbs-ok',\n                    'thumbs-up',\n                    'tick',\n                    'ticket',\n                    'tick-outline',\n                    'time',\n                    'times',\n                    'times-outline',\n                    'trash',\n                    'tree',\n                    'upload',\n                    'upload-outline',\n                    'user',\n                    'user-add',\n                    'user-add-outline',\n                    'user-delete',\n                    'user-delete-outline',\n                    'user-outline',\n                    'vendor-android',\n                    'vendor-apple',\n                    'vendor-microsoft',\n                    'video',\n                    'video-outline',\n                    'volume',\n                    'volume-down',\n                    'volume-mute',\n                    'volume-up',\n                    'warning',\n                    'warning-outline',\n                    'watch',\n                    'waves',\n                    'waves-outline',\n                    'weather-cloudy',\n                    'weather-downpour',\n                    'weather-night',\n                    'weather-partly-sunny',\n                    'weather-shower',\n                    'weather-snow',\n                    'weather-stormy',\n                    'weather-sunny',\n                    'weather-windy',\n                    'weather-windy-cloudy',\n                    'wi-fi',\n                    'wi-fi-outline',\n                    'wine',\n                    'world',\n                    'world-outline',\n                    'zoom',\n                    'zoom-in',\n                    'zoom-in-outline',\n                    'zoom-out',\n                    'zoom-outline',\n                    'zoom-out-outline'\n                ]\n            }\n        ]\n    };\n\n    var l = data.allVersions.length;\n    data.icons = data.allVersions[l-1].icons;\n\n    $.iconset_typicon = data;\n\n})(jQuery);\n\n/*!========================================================================\n * Iconset: Weather Icons\n * Versions: 1.2.0, 2.0.10\n * http://erikflowers.github.io/weather-icons/\n * ======================================================================== */\n\n;(function($){\n\n    var data = {\n        iconClass: 'wi',\n        iconClassFix: 'wi-',\n        icons: [],\n        allVersions: [\n            {\n                version: '1.2.0',\n                icons: [\n                    '',\n                    'alien',\n                    'celsius',\n                    'cloud',\n                    'cloud-down',\n                    'cloud-refresh',\n                    'cloud-up',\n                    'cloudy',\n                    'cloudy-gusts',\n                    'cloudy-windy',\n                    'day-cloudy',\n                    'day-cloudy-gusts',\n                    'day-cloudy-windy',\n                    'day-fog',\n                    'day-hail',\n                    'day-lightning',\n                    'day-rain',\n                    'day-rain-mix',\n                    'day-rain-wind',\n                    'day-showers',\n                    'day-sleet-storm',\n                    'day-snow',\n                    'day-snow-thunderstorm',\n                    'day-snow-wind',\n                    'day-sprinkle',\n                    'day-storm-showers',\n                    'day-sunny',\n                    'day-sunny-overcast',\n                    'day-thunderstorm',\n                    'degrees',\n                    'down',\n                    'down-left',\n                    'dust',\n                    'fahrenheit',\n                    'fog',\n                    'hail',\n                    'horizon',\n                    'horizon-alt',\n                    'hot',\n                    'hurricane',\n                    'left',\n                    'lightning',\n                    'lunar-eclipse',\n                    'meteor',\n                    'moon-full',\n                    'moon-new',\n                    'moon-old',\n                    'moon-waning-crescent',\n                    'moon-waning-gibbous',\n                    'moon-waning-quarter',\n                    'moon-waxing-crescent',\n                    'moon-waxing-gibbous',\n                    'moon-waxing-quarter',\n                    'moon-young',\n                    'night-alt-cloudy-gusts',\n                    'night-alt-cloudy-windy',\n                    'night-alt-hail',\n                    'night-alt-lightning',\n                    'night-alt-rain',\n                    'night-alt-rain-mix',\n                    'night-alt-rain-wind',\n                    'night-alt-showers',\n                    'night-alt-sleet-storm',\n                    'night-alt-snow',\n                    'night-alt-snow-thunderstorm',\n                    'night-alt-snow-wind',\n                    'night-alt-sprinkle',\n                    'night-alt-storm-showers',\n                    'night-alt-thunderstorm',\n                    'night-clear',\n                    'night-cloudy',\n                    'night-cloudy-gusts',\n                    'night-cloudy-windy',\n                    'night-fog',\n                    'night-hail',\n                    'night-lightning',\n                    'night-partly-cloudy',\n                    'night-rain',\n                    'night-rain-mix',\n                    'night-rain-wind',\n                    'night-showers',\n                    'night-sleet-storm',\n                    'night-snow',\n                    'night-snow-thunderstorm',\n                    'night-snow-wind',\n                    'night-sprinkle',\n                    'night-storm-showers',\n                    'night-thunderstorm',\n                    'rain',\n                    'rain-mix',\n                    'rain-wind',\n                    'refresh',\n                    'refresh-alt',\n                    'right',\n                    'showers',\n                    'smog',\n                    'smoke',\n                    'snow',\n                    'snow-wind',\n                    'snowflake-cold',\n                    'solar-eclipse',\n                    'sprinkle',\n                    'sprinkles',\n                    'stars',\n                    'storm-showers',\n                    'strong-wind',\n                    'sunrise',\n                    'sunset',\n                    'thermometer',\n                    'thermometer-exterior',\n                    'thermometer-internal',\n                    'thunderstorm',\n                    'tornado',\n                    'up',\n                    'up-right',\n                    'wind-east',\n                    'wind-north',\n                    'wind-north-east',\n                    'wind-north-west',\n                    'wind-south',\n                    'wind-south-east',\n                    'wind-south-west',\n                    'wind-west',\n                    'windy'\n                ]\n            },\n            {\n                version: '2.0.10',\n                icons: [\n                    '',\n                    'alien',\n                    'barometer',\n                    'celsius',\n                    'cloud',\n                    'cloud-down',\n                    'cloud-refresh',\n                    'cloud-up',\n                    'cloudy',\n                    'cloudy-gusts',\n                    'cloudy-windy',\n                    'day-cloudy',\n                    'day-cloudy-gusts',\n                    'day-cloudy-high',\n                    'day-cloudy-windy',\n                    'day-fog',\n                    'day-hail',\n                    'day-haze',\n                    'day-light-wind',\n                    'day-lightning',\n                    'day-rain',\n                    'day-rain-mix',\n                    'day-rain-wind',\n                    'day-showers',\n                    'day-sleet',\n                    'day-sleet-storm',\n                    'day-snow',\n                    'day-snow-thunderstorm',\n                    'day-snow-wind',\n                    'day-sprinkle',\n                    'day-storm-showers',\n                    'day-sunny',\n                    'day-sunny-overcast',\n                    'day-thunderstorm',\n                    'day-windy',\n                    'degrees',\n                    'direction-down',\n                    'direction-down-left',\n                    'direction-down-right',\n                    'direction-left',\n                    'direction-right',\n                    'direction-up',\n                    'direction-up-left',\n                    'direction-up-right',\n                    'dust',\n                    'earthquake',\n                    'fahrenheit',\n                    'fire',\n                    'flood',\n                    'fog',\n                    'gale-warning',\n                    'hail',\n                    'horizon',\n                    'horizon-alt',\n                    'hot',\n                    'humidity',\n                    'hurricane',\n                    'hurricane-warning',\n                    'lightning',\n                    'lunar-eclipse',\n                    'meteor',\n                    'moon-alt-first-quarter',\n                    'moon-alt-full',\n                    'moon-alt-new',\n                    'moon-alt-third-quarter',\n                    'moon-alt-waning-crescent-1',\n                    'moon-alt-waning-crescent-2',\n                    'moon-alt-waning-crescent-3',\n                    'moon-alt-waning-crescent-4',\n                    'moon-alt-waning-crescent-5',\n                    'moon-alt-waning-crescent-6',\n                    'moon-alt-waning-gibbous-1',\n                    'moon-alt-waning-gibbous-2',\n                    'moon-alt-waning-gibbous-3',\n                    'moon-alt-waning-gibbous-4',\n                    'moon-alt-waning-gibbous-5',\n                    'moon-alt-waning-gibbous-6',\n                    'moon-alt-waxing-crescent-1',\n                    'moon-alt-waxing-crescent-2',\n                    'moon-alt-waxing-crescent-3',\n                    'moon-alt-waxing-crescent-4',\n                    'moon-alt-waxing-crescent-5',\n                    'moon-alt-waxing-crescent-6',\n                    'moon-alt-waxing-gibbous-1',\n                    'moon-alt-waxing-gibbous-2',\n                    'moon-alt-waxing-gibbous-3',\n                    'moon-alt-waxing-gibbous-4',\n                    'moon-alt-waxing-gibbous-5',\n                    'moon-alt-waxing-gibbous-6',\n                    'moon-first-quarter',\n                    'moon-full',\n                    'moon-new',\n                    'moon-third-quarter',\n                    'moon-waning-crescent-1',\n                    'moon-waning-crescent-2',\n                    'moon-waning-crescent-3',\n                    'moon-waning-crescent-4',\n                    'moon-waning-crescent-5',\n                    'moon-waning-crescent-6',\n                    'moon-waning-gibbous-1',\n                    'moon-waning-gibbous-2',\n                    'moon-waning-gibbous-3',\n                    'moon-waning-gibbous-4',\n                    'moon-waning-gibbous-5',\n                    'moon-waning-gibbous-6',\n                    'moon-waxing-crescent-1',\n                    'moon-waxing-crescent-2',\n                    'moon-waxing-crescent-3',\n                    'moon-waxing-crescent-4',\n                    'moon-waxing-crescent-5',\n                    'moon-waxing-crescent-6',\n                    'moon-waxing-gibbous-1',\n                    'moon-waxing-gibbous-2',\n                    'moon-waxing-gibbous-3',\n                    'moon-waxing-gibbous-4',\n                    'moon-waxing-gibbous-5',\n                    'moon-waxing-gibbous-6',\n                    'moonrise',\n                    'moonset',\n                    'na',\n                    'night-alt-cloudy',\n                    'night-alt-cloudy-gusts',\n                    'night-alt-cloudy-high',\n                    'night-alt-cloudy-windy',\n                    'night-alt-hail',\n                    'night-alt-lightning',\n                    'night-alt-partly-cloudy',\n                    'night-alt-rain',\n                    'night-alt-rain-mix',\n                    'night-alt-rain-wind',\n                    'night-alt-showers',\n                    'night-alt-sleet',\n                    'night-alt-sleet-storm',\n                    'night-alt-snow',\n                    'night-alt-snow-thunderstorm',\n                    'night-alt-snow-wind',\n                    'night-alt-sprinkle',\n                    'night-alt-storm-showers',\n                    'night-alt-thunderstorm',\n                    'night-clear',\n                    'night-cloudy',\n                    'night-cloudy-gusts',\n                    'night-cloudy-high',\n                    'night-cloudy-windy',\n                    'night-fog',\n                    'night-hail',\n                    'night-lightning',\n                    'night-partly-cloudy',\n                    'night-rain',\n                    'night-rain-mix',\n                    'night-rain-wind',\n                    'night-showers',\n                    'night-sleet',\n                    'night-sleet-storm',\n                    'night-snow',\n                    'night-snow-thunderstorm',\n                    'night-snow-wind',\n                    'night-sprinkle',\n                    'night-storm-showers',\n                    'night-thunderstorm',\n                    'rain',\n                    'rain-mix',\n                    'rain-wind',\n                    'raindrop',\n                    'raindrops',\n                    'refresh',\n                    'refresh-alt',\n                    'sandstorm',\n                    'showers',\n                    'sleet',\n                    'small-craft-advisory',\n                    'smog',\n                    'smoke',\n                    'snow',\n                    'snow-wind',\n                    'snowflake-cold',\n                    'solar-eclipse',\n                    'sprinkle',\n                    'stars',\n                    'storm-showers',\n                    'storm-showers',\n                    'storm-warning',\n                    'strong-wind',\n                    'sunrise',\n                    'sunset',\n                    'thermometer',\n                    'thermometer-exterior',\n                    'thermometer-internal',\n                    'thunderstorm',\n                    'thunderstorm',\n                    'time-1',\n                    'time-10',\n                    'time-11',\n                    'time-12',\n                    'time-2',\n                    'time-3',\n                    'time-4',\n                    'time-5',\n                    'time-6',\n                    'time-7',\n                    'time-8',\n                    'time-9',\n                    'tornado',\n                    'train',\n                    'tsunami',\n                    'umbrella',\n                    'volcano',\n                    'wind-beaufort-0',\n                    'wind-beaufort-1',\n                    'wind-beaufort-10',\n                    'wind-beaufort-11',\n                    'wind-beaufort-12',\n                    'wind-beaufort-2',\n                    'wind-beaufort-3',\n                    'wind-beaufort-4',\n                    'wind-beaufort-5',\n                    'wind-beaufort-6',\n                    'wind-beaufort-7',\n                    'wind-beaufort-8',\n                    'wind-beaufort-9',\n                    'wind-direction',\n                    'windy'\n                ]\n            }\n        ]\n    };\n\n    var l = data.allVersions.length;\n    data.icons = data.allVersions[l-1].icons;\n\n    $.iconset_weathericon = data;\n\n})(jQuery);\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/bootstrap-iconpicker/js/bootstrap-iconpicker.js",
    "content": "/*!========================================================================\n* File: bootstrap-iconpicker.js v1.10.0 by @victor-valencia\n* https://victor-valencia.github.com/bootstrap-iconpicker\n* ========================================================================\n* Copyright 2013-2018 Victor Valencia Rico.\n* Licensed under MIT license.\n* https://github.com/victor-valencia/bootstrap-iconpicker/blob/master/LICENSE\n* ========================================================================\n*/\n\n;(function($){ \"use strict\";\n\n    // ICONPICKER PUBLIC CLASS DEFINITION\n    // ==============================\n    var Iconpicker = function (element, options) {\n\n      if (typeof $.fn.popover === 'undefined' || typeof $.fn.popover.Constructor.VERSION === 'undefined') {\n        throw new TypeError('Bootstrap iconpicker require Bootstrap popover');\n      }\n\n      this.$element = $(element);\n      this.options  = $.extend({}, Iconpicker.DEFAULTS, this.$element.data());\n      this.options  = $.extend({}, this.options, options);\n\n    };\n\n    // ICONPICKER VERSION\n    // ==============================\n    Iconpicker.VERSION = '1.10.0';\n\n    // ICONPICKER ICONSET_EMPTY\n    // ==============================\n    Iconpicker.ICONSET_EMPTY = {\n        iconClass: '',\n        iconClassFix: '',\n        icons: []\n    };\n\n    // ICONPICKER ICONSET\n    // ==============================\n    Iconpicker.ICONSET = {\n        _custom: null,\n        elusiveicon: $.iconset_elusiveicon || Iconpicker.ICONSET_EMPTY,\n        flagicon: $.iconset_flagicon || Iconpicker.ICONSET_EMPTY,\n        fontawesome4: $.iconset_fontawesome_4 || Iconpicker.ICONSET_EMPTY,\n        fontawesome5: $.iconset_fontawesome_5 || Iconpicker.ICONSET_EMPTY,\n        glyphicon: $.iconset_glyphicon || Iconpicker.ICONSET_EMPTY,\n        ionicon: $.iconset_ionicon || Iconpicker.ICONSET_EMPTY,\n        mapicon: $.iconset_mapicon || Iconpicker.ICONSET_EMPTY,\n        materialdesign: $.iconset_materialdesign || Iconpicker.ICONSET_EMPTY,\n        octicon: $.iconset_octicon || Iconpicker.ICONSET_EMPTY,\n        typicon: $.iconset_typicon || Iconpicker.ICONSET_EMPTY,\n        weathericon: $.iconset_weathericon || Iconpicker.ICONSET_EMPTY\n    };\n\n    // ICONPICKER DEFAULTS\n    // ==============================\n    Iconpicker.DEFAULTS = {\n        align: 'center',\n        arrowClass: 'btn-primary',\n        arrowNextIconClass: 'fas fa-arrow-right',\n        arrowPrevIconClass: 'fas fa-arrow-left',\n        cols: 4,\n        icon: '',\n        iconset: 'fontawesome5',\n        iconsetVersion: 'lastest',\n        header: true,\n        labelHeader: '{0} / {1}',\n        footer: true,\n        labelFooter: '{0} - {1} of {2}',\n        placement: 'bottom',\n        rows: 4,\n        search: true,\n        searchText: 'Search icon',\n        selectedClass: 'btn-warning',\n        unselectedClass: 'btn-secondary'\n    };\n\n    // ICONPICKER PRIVATE METHODS\n    // ==============================\n    Iconpicker.prototype.bindEvents = function () {\n        var op = this.options;\n        var el = this;\n        op.table.find('.btn-previous, .btn-next').off('click').on('click', function(e) {\n            e.preventDefault();\n            if(!$(this).hasClass('disabled')){\n                var inc = parseInt($(this).val(), 10);\n                el.changeList(op.page + inc);\n            }\n        });\n        op.table.find('.btn-icon').off('click').on('click', function(e) {\n            e.preventDefault();\n            el.select($(this).val());\n            if(op.inline === false){\n                el.$element.popover(($.fn.bsVersion() === '3.x') ? 'destroy' : 'dispose');\n            }\n            else{\n                op.table.find(\"i[class$='\" + $(this).val() + \"']\").parent().addClass(op.selectedClass);\n            }\n        });\n        op.table.find('.search-control').off('keyup').on('keyup', function() {\n            el.changeList(1);\n        });\n    };\n\n    Iconpicker.prototype.changeList = function (page) {\n        this.filterIcons();\n        this.updateLabels(page);\n        this.updateIcons(page);\n        this.options.page = page;\n        this.bindEvents();\n    };\n\n    Iconpicker.prototype.filterIcons = function () {\n        var op = this.options;\n        var search = op.table.find('.search-control').val();\n        var icons = [];\n        if(op.iconsetVersion != 'lastest' && typeof Iconpicker.ICONSET[op.iconset].allVersions != 'undefined'){\n            $.each(Iconpicker.ICONSET[op.iconset].allVersions, function(i, v){\n                if(op.iconsetVersion == v.version){\n                    icons = v.icons;\n                }\n            });\n        }\n        else\n            icons = Iconpicker.ICONSET[op.iconset].icons;\n\n        if (search === \"\") {\n            op.icons = icons;\n        }\n        else {\n            var result = [];\n            $.each(icons, function(i, v) {\n               if (v.toLowerCase().indexOf(search) > -1) {\n                   result.push(v);\n               }\n            });\n            op.icons = result;\n        }\n    };\n\n    Iconpicker.prototype.removeAddClass = function (target, remove, add) {\n        this.options.table.find(target).removeClass(remove).addClass(add);\n        return add;\n    };\n\n    Iconpicker.prototype.reset = function () {\n        this.updatePicker();\n        this.changeList(1);\n    };\n\n    Iconpicker.prototype.select = function (icon) {\n        var op = this.options;\n        var el = this.$element;\n        op.selected = $.inArray(icon.replace(op.iconClassFix, ''), op.icons);\n        if (op.selected === -1) {\n            op.selected = 0;\n            icon = op.iconClassFix + op.icons[op.selected];\n        }\n        if (icon !== '' && op.selected >= 0) {\n            op.icon = icon;\n            if(op.inline === false){\n                el.find('input').val(icon);\n                el.find('i').attr('class', '').addClass(op.iconClass).addClass(icon);\n            }\n            if(icon === op.iconClassFix){\n                el.trigger({ type: \"change\", icon: 'empty' });\n            }\n            else {\n                el.trigger({ type: \"change\", icon: icon });\n                el.find('input').val(icon);\n            }\n            op.table.find('button.' + op.selectedClass).removeClass(op.selectedClass);\n        }\n    };\n\n    Iconpicker.prototype.switchPage = function (icon) {\n        var op = this.options;\n        op.selected = $.inArray(icon.replace(op.iconClassFix, ''), op.icons);\n\n        if(op.selected >= 0) {\n            var page = Math.ceil((op.selected + 1) / this.totalIconsPerPage());\n            this.changeList(page);\n        }\n        if(icon === ''){\n            //if(op.iconClassFix !== '')\n                op.table.find('i.' + op.iconClassFix).parent().addClass(op.selectedClass);\n            //else\n        }\n        else{\n            op.table.find('i.' + icon).parent().addClass(op.selectedClass);\n        }\n    };\n\n    Iconpicker.prototype.totalPages = function () {\n        return Math.ceil(this.totalIcons() / this.totalIconsPerPage());\n    };\n\n    Iconpicker.prototype.totalIcons = function () {\n        return this.options.icons.length;\n    };\n\n    Iconpicker.prototype.totalIconsPerPage = function () {\n        if(this.options.rows === 0){\n            return this.options.icons.length;\n        }\n        else{\n            return this.options.cols * this.options.rows;\n        }\n    };\n\n    Iconpicker.prototype.updateArrows = function (page) {\n        var op = this.options;\n        var total_pages = this.totalPages();\n        if (page === 1) {\n            op.table.find('.btn-previous').addClass('disabled');\n        }\n        else {\n            op.table.find('.btn-previous').removeClass('disabled');\n        }\n        if (page === total_pages || total_pages === 0) {\n            op.table.find('.btn-next').addClass('disabled');\n        }\n        else {\n            op.table.find('.btn-next').removeClass('disabled');\n        }\n    };\n\n    Iconpicker.prototype.updateIcons = function (page) {\n        var op = this.options;\n        var tbody = op.table.find('tbody').empty();\n        var offset = (page - 1) * this.totalIconsPerPage();\n        var length = op.rows;\n        if(op.rows === 0){\n            length = op.icons.length;\n        }\n        for (var i = 0; i < length; i++) {\n            var tr = $('<tr></tr>');\n            for (var j = 0; j < op.cols; j++) {\n                var pos = offset + (i * op.cols) + j;\n                var btn = $('<button class=\"btn ' + op.unselectedClass + ' btn-icon\"></button>').hide();\n                if (pos < op.icons.length) {\n                    var v = op.iconClassFix + op.icons[pos];\n                    btn.val(v).attr('title', v).append('<i class=\"' + op.iconClass + ' ' + v + '\"></i>').show();\n                    if (op.icon === v) {\n                        btn.addClass(op.selectedClass).addClass('btn-icon-selected');\n                    }\n                }\n                tr.append($('<td></td>').append(btn));\n            }\n            tbody.append(tr);\n        }\n    };\n\n    Iconpicker.prototype.updateIconsCount = function () {\n        var op = this.options;\n        if(op.footer === true){\n            var icons_count = [\n                '<tr>',\n                '   <td colspan=\"' + op.cols + '\" class=\"text-center\">',\n                '       <span class=\"icons-count\"></span>',\n                '   </td>',\n                '</tr>'\n            ];\n            op.table.find('tfoot').empty().append(icons_count.join(''));\n        }\n    };\n\n    Iconpicker.prototype.updateLabels = function (page) {\n        var op = this.options;\n        var total_icons = this.totalIcons();\n        var total_pages = this.totalPages();\n        op.table.find('.page-count').html(op.labelHeader.replace('{0}', (total_pages === 0 ) ? 0 : page).replace('{1}', total_pages));\n        var offset = (page - 1) * this.totalIconsPerPage();\n        var total = page * this.totalIconsPerPage();\n        op.table.find('.icons-count').html(op.labelFooter.replace('{0}', total_icons ? offset + 1 : 0).replace('{1}', (total < total_icons) ? total: total_icons).replace('{2}', total_icons));\n        this.updateArrows(page);\n    };\n\n    Iconpicker.prototype.updatePagesCount = function () {\n        var op = this.options;\n        if(op.header === true){\n            var tr = $('<tr></tr>');\n            for (var i = 0; i < op.cols; i++) {\n                var td = $('<td class=\"text-center\"></td>');\n                if (i === 0 || i === op.cols - 1) {\n                    var arrow = [\n                        '<button class=\"btn btn-arrow ' + ((i === 0) ? 'btn-previous' : 'btn-next') + ' ' + op.arrowClass + '\" value=\"' + ((i === 0) ? -1 : 1) + '\">',\n                            '<span class=\"' + ((i === 0) ? op.arrowPrevIconClass : op.arrowNextIconClass) + '\"></span>',\n                        '</button>'\n                    ];\n                    td.append(arrow.join(''));\n                    tr.append(td);\n                }\n                else if (tr.find('.page-count').length === 0) {\n                    td.attr('colspan', op.cols - 2).append('<span class=\"page-count\"></span>');\n                    tr.append(td);\n                }\n            }\n            op.table.find('thead').empty().append(tr);\n        }\n    };\n\n    Iconpicker.prototype.updatePicker = function () {\n        var op = this.options;\n        if (op.cols < 4) {\n            throw 'Iconpicker => The number of columns must be greater than or equal to 4. [option.cols = ' + op.cols + ']';\n        }\n        else if (op.rows < 0) {\n            throw 'Iconpicker => The number of rows must be greater than or equal to 0. [option.rows = ' + op.rows + ']';\n        }\n        else {\n            this.updatePagesCount();\n            this.updateSearch();\n            this.updateIconsCount();\n        }\n    };\n\n    Iconpicker.prototype.updateSearch = function () {\n        var op = this.options;\n        var search = [\n            '<tr>',\n            '   <td colspan=\"' + op.cols + '\">',\n            '       <input type=\"text\" class=\"form-control search-control\" style=\"width: ' + op.cols * (($.fn.bsVersion() === '3.x') ? 39 : 41) + 'px;\" placeholder=\"' + op.searchText + '\">',\n            '   </td>',\n            '</tr>'\n        ];\n        search = $(search.join(''));\n        if (op.search === true) {\n            search.show();\n        }\n        else {\n            search.hide();\n        }\n        op.table.find('thead').append(search);\n    };\n\n    // ICONPICKER PUBLIC METHODS\n    // ==============================\n    Iconpicker.prototype.setAlign = function (value) {\n        this.$element.removeClass(this.options.align).addClass(value);\n        this.options.align = value;\n    };\n\n    Iconpicker.prototype.setArrowClass = function (value) {\n        this.options.arrowClass = this.removeAddClass('.btn-arrow', this.options.arrowClass, value);\n    };\n\n    Iconpicker.prototype.setArrowNextIconClass = function (value) {\n        this.options.arrowNextIconClass = this.removeAddClass('.btn-next > span', this.options.arrowNextIconClass, value);\n    };\n\n    Iconpicker.prototype.setArrowPrevIconClass = function (value) {\n        this.options.arrowPrevIconClass = this.removeAddClass('.btn-previous > span', this.options.arrowPrevIconClass, value);\n    };\n\n    Iconpicker.prototype.setCols = function (value) {\n        this.options.cols = value;\n        this.reset();\n    };\n\n    Iconpicker.prototype.setFooter = function (value) {\n        var footer = this.options.table.find('tfoot');\n        if (value === true) {\n            footer.show();\n        }\n        else {\n            footer.hide();\n        }\n        this.options.footer = value;\n    };\n\n    Iconpicker.prototype.setHeader = function (value) {\n        var header = this.options.table.find('thead');\n        if (value === true) {\n            header.show();\n        }\n        else {\n            header.hide();\n        }\n        this.options.header = value;\n    };\n\n    Iconpicker.prototype.setIcon = function (value) {\n        this.select(value);\n    };\n\n    Iconpicker.prototype.setIconset = function (value) {\n        var op = this.options;\n        if ($.isPlainObject(value)) {\n            Iconpicker.ICONSET._custom = $.extend(Iconpicker.ICONSET_EMPTY, value);\n            op.iconset = '_custom';\n        }\n        else if (!Iconpicker.ICONSET.hasOwnProperty(value)) {\n            op.iconset = Iconpicker.DEFAULTS.iconset;\n        }\n        else {\n            op.iconset = value;\n        }\n        op = $.extend(op, Iconpicker.ICONSET[op.iconset]);\n        this.reset();\n        this.select(op.icon);\n    };\n\n    Iconpicker.prototype.setLabelHeader = function (value) {\n        this.options.labelHeader = value;\n        this.updateLabels(this.options.page);\n    };\n\n    Iconpicker.prototype.setLabelFooter = function (value) {\n        this.options.labelFooter = value;\n        this.updateLabels(this.options.page);\n    };\n\n    Iconpicker.prototype.setPlacement = function (value) {\n        this.options.placement = value;\n    };\n\n    Iconpicker.prototype.setRows = function (value) {\n        this.options.rows = value;\n        this.reset();\n    };\n\n    Iconpicker.prototype.setSearch = function (value) {\n        var search = this.options.table.find('.search-control');\n        if (value === true) {\n            search.show();\n        }\n        else {\n            search.hide();\n        }\n        search.val('');\n        this.changeList(1);\n        this.options.search = value;\n    };\n\n    Iconpicker.prototype.setSearchText = function (value) {\n        this.options.table.find('.search-control').attr('placeholder', value);\n        this.options.searchText = value;\n    };\n\n    Iconpicker.prototype.setSelectedClass = function (value) {\n        this.options.selectedClass = this.removeAddClass('.btn-icon-selected', this.options.selectedClass, value);\n    };\n\n    Iconpicker.prototype.setUnselectedClass = function (value) {\n        this.options.unselectedClass = this.removeAddClass('.btn-icon', this.options.unselectedClass, value);\n    };\n\n    // ICONPICKER PLUGIN DEFINITION\n    // ========================\n    var old = $.fn.iconpicker;\n    $.fn.iconpicker = function (option, params) {\n        return this.each(function () {\n            var $this = $(this);\n            var data = $this.data('bs.iconpicker');\n            var options = typeof option === 'object' && option;\n            if (!data) {\n                $this.data('bs.iconpicker', (data = new Iconpicker(this, options)));\n            }\n            if (typeof option === 'string') {\n                if (typeof data[option] === 'undefined') {\n                    throw 'Iconpicker => The \"' + option + '\" method does not exists.';\n                }\n                else {\n                    data[option](params);\n                }\n            }\n            else{\n                var op = data.options;\n                op = $.extend(op, {\n                    inline: false,\n                    page: 1,\n                    selected: -1,\n                    table: $('<table class=\"table-icons\"><thead></thead><tbody></tbody><tfoot></tfoot></table>')\n                });\n                var name = (typeof $this.attr('name') !== 'undefined') ? 'name=\"' + $this.attr('name') + '\"' : '';\n\n                if($this.prop('tagName') === 'BUTTON'){\n                    $this.empty()\n                        .append('<i></i>')\n                        .append('<input type=\"hidden\" ' + name + '></input>')\n                        .append('<span class=\"caret\"></span>')\n                        .addClass('iconpicker ' + (($.fn.bsVersion() === '3.x') ? '' : 'dropdown-toggle'));\n                    data.setIconset(op.iconset);\n                    $this.on('click', function(e) {\n                        e.preventDefault();\n                        $this.popover({\n                            animation: false,\n                            trigger: 'manual',\n                            html: true,\n                            content: op.table,\n                            container: 'body',\n                            placement: op.placement\n                        }).on('inserted.bs.popover', function() {\n                            var el = $this.data('bs.popover');\n                            var tip = ($.fn.bsVersion() === '3.x') ? el.tip() : $(el.getTipElement())\n                            tip.addClass('iconpicker-popover');\n                        }).on('shown.bs.popover', function () {\n                            data.switchPage(op.icon);\n                            data.bindEvents();\n                        });\n                        //console.log($.fn.bsVersion());\n                        $this.popover('show');\n                    });\n                }\n                else{\n                    op.inline = true;\n                    data.setIconset(op.iconset);\n                    $this.empty()\n                        .append('<input type=\"hidden\" ' + name + '></input>')\n                        .append(op.table)\n                        .addClass('iconpicker')\n                        .addClass(op.align);\n                    data.switchPage(op.icon);\n                    data.bindEvents();\n                }\n\n            }\n        });\n    };\n\n    $.fn.iconpicker.Constructor = Iconpicker;\n\n    // ICONPICKER NO CONFLICT\n    // ==================\n    $.fn.iconpicker.noConflict = function () {\n        $.fn.iconpicker = old;\n        return this;\n    };\n\n    $.fn.bsVersion = function() {\n        return $.fn.popover.Constructor.VERSION.substr(0,2) + 'x';\n    };\n\n    // ICONPICKER DATA-API\n    // ===============\n    $(document).on('click', 'body', function (e) {\n        $('.iconpicker').each(function () {\n            //the 'is' for buttons that trigger popups\n            //the 'has' for icons within a button that triggers a popup\n            if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {\n                $(this).popover(($.fn.bsVersion() === '3.x') ? 'destroy' : 'dispose');\n            }\n        });\n    });\n\n    $('button[role=\"iconpicker\"],div[role=\"iconpicker\"]').iconpicker();\n\n})(jQuery);\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/bootstrap-validator/validator.js",
    "content": "/*!\n * Validator v0.11.9 for Bootstrap 3, by @1000hz\n * Copyright 2017 Cina Saffary\n * Licensed under http://opensource.org/licenses/MIT\n *\n * https://github.com/1000hz/bootstrap-validator\n */\n\n+function ($) {\n  'use strict';\n\n  // VALIDATOR CLASS DEFINITION\n  // ==========================\n\n  function getValue($el) {\n    return $el.is('[type=\"checkbox\"]') ? $el.prop('checked')                                     :\n        $el.is('[type=\"radio\"]')    ? !!$('[name=\"' + $el.attr('name') + '\"]:checked').length :\n            $el.is('select[multiple]')  ? ($el.val() || []).length                                :\n                $el.val()\n  }\n\n  var Validator = function (element, options) {\n    this.options    = options\n    this.validators = $.extend({}, Validator.VALIDATORS, options.custom)\n    this.$element   = $(element)\n    this.$btn       = $('button[type=\"submit\"], input[type=\"submit\"]')\n        .filter('[form=\"' + this.$element.attr('id') + '\"]')\n        .add(this.$element.find('input[type=\"submit\"], button[type=\"submit\"]'))\n\n    this.update()\n\n    this.$element.on('input.bs.validator change.bs.validator focusout.bs.validator', $.proxy(this.onInput, this))\n    this.$element.on('submit.bs.validator', $.proxy(this.onSubmit, this))\n    this.$element.on('reset.bs.validator', $.proxy(this.reset, this))\n\n    this.$element.find('[data-match]').each(function () {\n      var $this  = $(this)\n      var target = $this.attr('data-match')\n\n      $(target).on('input.bs.validator', function (e) {\n        getValue($this) && $this.trigger('input.bs.validator')\n      })\n    })\n\n    // run validators for fields with values, but don't clobber server-side errors\n    this.$inputs.filter(function () {\n      return getValue($(this)) && !$(this).closest('.has-error').length\n    }).trigger('focusout')\n\n    this.$element.attr('novalidate', true) // disable automatic native validation\n  }\n\n  Validator.VERSION = '0.11.9'\n\n  Validator.INPUT_SELECTOR = ':input:not([type=\"hidden\"], [type=\"submit\"], [type=\"reset\"], button)'\n\n  Validator.FOCUS_OFFSET = 20\n\n  Validator.DEFAULTS = {\n    delay: 500,\n    html: false,\n    disable: true,\n    focus: true,\n    custom: {},\n    errors: {\n      match: 'Does not match',\n      minlength: 'Not long enough'\n    },\n    feedback: {\n      success: 'glyphicon-ok',\n      error: 'glyphicon-remove'\n    }\n  }\n\n  Validator.VALIDATORS = {\n    'native': function ($el) {\n      var el = $el[0]\n      if (el.checkValidity) {\n        return !el.checkValidity() && !el.validity.valid && (el.validationMessage || \"error!\")\n      }\n    },\n    'match': function ($el) {\n      var target = $el.attr('data-match')\n      return $el.val() !== $(target).val() && Validator.DEFAULTS.errors.match\n    },\n    'minlength': function ($el) {\n      var minlength = $el.attr('data-minlength')\n      return $el.val().length < minlength && Validator.DEFAULTS.errors.minlength\n    }\n  }\n\n  Validator.prototype.update = function () {\n    var self = this\n\n    this.$inputs = this.$element.find(Validator.INPUT_SELECTOR)\n        .add(this.$element.find('[data-validate=\"true\"]'))\n        .not(this.$element.find('[data-validate=\"false\"]')\n            .each(function () { self.clearErrors($(this)) })\n        )\n\n    this.toggleSubmit()\n\n    return this\n  }\n\n  Validator.prototype.onInput = function (e) {\n    var self        = this\n    var $el         = $(e.target)\n    var deferErrors = e.type !== 'focusout'\n\n    if (!this.$inputs.is($el)) return\n\n    this.validateInput($el, deferErrors).done(function () {\n      self.toggleSubmit()\n    })\n  }\n\n  Validator.prototype.validateInput = function ($el, deferErrors) {\n    var value      = getValue($el)\n    var prevErrors = $el.data('bs.validator.errors')\n\n    if ($el.is('[type=\"radio\"]')) $el = this.$element.find('input[name=\"' + $el.attr('name') + '\"]')\n\n    var e = $.Event('validate.bs.validator', {relatedTarget: $el[0]})\n    this.$element.trigger(e)\n    if (e.isDefaultPrevented()) return\n\n    var self = this\n\n    return this.runValidators($el).done(function (errors) {\n      $el.data('bs.validator.errors', errors)\n\n      errors.length\n          ? deferErrors ? self.defer($el, self.showErrors) : self.showErrors($el)\n          : self.clearErrors($el)\n\n      if (!prevErrors || errors.toString() !== prevErrors.toString()) {\n        e = errors.length\n            ? $.Event('invalid.bs.validator', {relatedTarget: $el[0], detail: errors})\n            : $.Event('valid.bs.validator', {relatedTarget: $el[0], detail: prevErrors})\n\n        self.$element.trigger(e)\n      }\n\n      self.toggleSubmit()\n\n      self.$element.trigger($.Event('validated.bs.validator', {relatedTarget: $el[0]}))\n    })\n  }\n\n\n  Validator.prototype.runValidators = function ($el) {\n    var errors   = []\n    var deferred = $.Deferred()\n\n    $el.data('bs.validator.deferred') && $el.data('bs.validator.deferred').reject()\n    $el.data('bs.validator.deferred', deferred)\n\n    function getValidatorSpecificError(key) {\n      return $el.attr('data-' + key + '-error')\n    }\n\n    function getValidityStateError() {\n      var validity = $el[0].validity\n      return validity.typeMismatch    ? $el.attr('data-type-error')\n          : validity.patternMismatch ? $el.attr('data-pattern-error')\n              : validity.stepMismatch    ? $el.attr('data-step-error')\n                  : validity.rangeOverflow   ? $el.attr('data-max-error')\n                      : validity.rangeUnderflow  ? $el.attr('data-min-error')\n                          : validity.valueMissing    ? $el.attr('data-required-error')\n                              :                            null\n    }\n\n    function getGenericError() {\n      return $el.attr('data-error')\n    }\n\n    function getErrorMessage(key) {\n      return getValidatorSpecificError(key)\n          || getValidityStateError()\n          || getGenericError()\n    }\n\n    $.each(this.validators, $.proxy(function (key, validator) {\n      var error = null, rule = $el.attr('data-' + key) || null\n\n      if (\n          (getValue($el) || $el.attr('required') || key == 'match') &&\n          (rule || key == 'native') &&\n          (error = validator.call(this, $el))\n      ) {\n        error = getErrorMessage(key) || error\n        !~errors.indexOf(error) && errors.push(error)\n      }\n    }, this))\n\n    if (!errors.length && getValue($el) && $el.attr('data-remote')) {\n      this.defer($el, function () {\n        var data = {}\n        data[$el.attr('name')] = getValue($el)\n        $.get($el.attr('data-remote'), data)\n            .fail(function (jqXHR, textStatus, error) { errors.push(getErrorMessage('remote') || error) })\n            .always(function () { deferred.resolve(errors)})\n      })\n    } else deferred.resolve(errors)\n\n    return deferred.promise()\n  }\n\n  Validator.prototype.validate = function () {\n    var self = this\n\n    $.when(this.$inputs.map(function (el) {\n      return self.validateInput($(this), false)\n    })).then(function () {\n      self.toggleSubmit()\n      self.focusError()\n    })\n\n    return this\n  }\n\n  Validator.prototype.focusError = function () {\n    if (!this.options.focus) return\n\n    var $input = this.$element.find(\".has-error:first :input\")\n    if ($input.length === 0) return\n\n    $('html, body').animate({scrollTop: $input.offset().top - Validator.FOCUS_OFFSET}, 250)\n    $input.focus()\n  }\n\n  Validator.prototype.showErrors = function ($el) {\n    var method = this.options.html ? 'html' : 'text'\n    var errors = $el.data('bs.validator.errors')\n    var $group = $el.closest('.form-group')\n    var $block = $group.find('.help-block.with-errors')\n    var $feedback = $group.find('.form-control-feedback')\n\n    if (!errors.length) return\n\n    errors = $('<ul/>')\n        .addClass('list-unstyled')\n        .append($.map(errors, function (error) { return $('<li/>')[method](error) }))\n\n    $block.data('bs.validator.originalContent') === undefined && $block.data('bs.validator.originalContent', $block.html())\n    $block.empty().append(errors)\n    $group.addClass('has-error has-danger')\n\n    $group.hasClass('has-feedback')\n    && $feedback.removeClass(this.options.feedback.success)\n    && $feedback.addClass(this.options.feedback.error)\n    && $group.removeClass('has-success')\n  }\n\n  Validator.prototype.clearErrors = function ($el) {\n    var $group = $el.closest('.form-group')\n    var $block = $group.find('.help-block.with-errors')\n    var $feedback = $group.find('.form-control-feedback')\n\n    $block.html($block.data('bs.validator.originalContent'))\n    $group.removeClass('has-error has-danger has-success')\n\n    $group.hasClass('has-feedback')\n    && $feedback.removeClass(this.options.feedback.error)\n    && $feedback.removeClass(this.options.feedback.success)\n    && getValue($el)\n    && $feedback.addClass(this.options.feedback.success)\n    && $group.addClass('has-success')\n  }\n\n  Validator.prototype.hasErrors = function () {\n    function fieldErrors() {\n      return !!($(this).data('bs.validator.errors') || []).length\n    }\n\n    return !!this.$inputs.filter(fieldErrors).length\n  }\n\n  Validator.prototype.isIncomplete = function () {\n    function fieldIncomplete() {\n      var value = getValue($(this))\n      return !(typeof value == \"string\" ? $.trim(value) : value)\n    }\n\n    return !!this.$inputs.filter('[required]').filter(fieldIncomplete).length\n  }\n\n  Validator.prototype.onSubmit = function (e) {\n    this.validate()\n    if (this.isIncomplete() || this.hasErrors()) e.preventDefault()\n  }\n\n  Validator.prototype.toggleSubmit = function () {\n    if (!this.options.disable) return\n    this.$btn.toggleClass('disabled', this.isIncomplete() || this.hasErrors())\n  }\n\n  Validator.prototype.defer = function ($el, callback) {\n    callback = $.proxy(callback, this, $el)\n    if (!this.options.delay) return callback()\n    window.clearTimeout($el.data('bs.validator.timeout'))\n    $el.data('bs.validator.timeout', window.setTimeout(callback, this.options.delay))\n  }\n\n  Validator.prototype.reset = function () {\n    this.$element.find('.form-control-feedback')\n        .removeClass(this.options.feedback.error)\n        .removeClass(this.options.feedback.success)\n\n    this.$inputs\n        .removeData(['bs.validator.errors', 'bs.validator.deferred'])\n        .each(function () {\n          var $this = $(this)\n          var timeout = $this.data('bs.validator.timeout')\n          window.clearTimeout(timeout) && $this.removeData('bs.validator.timeout')\n        })\n\n    this.$element.find('.help-block.with-errors')\n        .each(function () {\n          var $this = $(this)\n          var originalContent = $this.data('bs.validator.originalContent')\n\n          $this\n              .removeData('bs.validator.originalContent')\n              .html(originalContent)\n        })\n\n    this.$btn.removeClass('disabled')\n\n    this.$element.find('.has-error, .has-danger, .has-success').removeClass('has-error has-danger has-success')\n\n    return this\n  }\n\n  Validator.prototype.destroy = function () {\n    this.reset()\n\n    this.$element\n        .removeAttr('novalidate')\n        .removeData('bs.validator')\n        .off('.bs.validator')\n\n    this.$inputs\n        .off('.bs.validator')\n\n    this.options    = null\n    this.validators = null\n    this.$element   = null\n    this.$btn       = null\n    this.$inputs    = null\n\n    return this\n  }\n\n  // VALIDATOR PLUGIN DEFINITION\n  // ===========================\n\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var options = $.extend({}, Validator.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var data    = $this.data('bs.validator')\n\n      if (!data && option == 'destroy') return\n      if (!data) $this.data('bs.validator', (data = new Validator(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.validator\n\n  $.fn.validator             = Plugin\n  $.fn.validator.Constructor = Validator\n\n\n  // VALIDATOR NO CONFLICT\n  // =====================\n\n  $.fn.validator.noConflict = function () {\n    $.fn.validator = old\n    return this\n  }\n\n\n  // VALIDATOR DATA-API\n  // ==================\n\n  $(window).on('load', function () {\n    $('form[data-toggle=\"validator\"]').each(function () {\n      var $form = $(this)\n      Plugin.call($form, $form.data())\n    })\n  })\n\n}(jQuery);\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/charts/apexcharts.css",
    "content": ".apexcharts-canvas {\n  position: relative;\n  user-select: none;\n  /* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */\n}\n\n/* scrollbar is not visible by default for legend, hence forcing the visibility */\n.apexcharts-canvas ::-webkit-scrollbar {\n  -webkit-appearance: none;\n  width: 6px;\n}\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n  border-radius: 4px;\n  background-color: rgba(0,0,0,.5);\n  box-shadow: 0 0 1px rgba(255,255,255,.5);\n  -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5);\n}\n.apexcharts-canvas.dark {\n  background: #343F57;\n}\n\n.apexcharts-inner {\n  position: relative;\n}\n\n.legend-mouseover-inactive {\n  transition: 0.15s ease all;\n  opacity: 0.20;\n}\n\n.apexcharts-series-collapsed {\n  opacity: 0;\n}\n\n.apexcharts-gridline, .apexcharts-text {\n  pointer-events: none;\n}\n\n.apexcharts-tooltip {\n  border-radius: 5px;\n  box-shadow: 2px 2px 6px -4px #999;\n  cursor: default;\n  font-size: 14px;\n  left: 62px;\n  opacity: 0;\n  pointer-events: none;\n  position: absolute;\n  top: 20px;\n  overflow: hidden;\n  white-space: nowrap;\n  z-index: 12;\n  transition: 0.15s ease all;\n}\n.apexcharts-tooltip.light {\n  border: 1px solid #e3e3e3;\n  background: rgba(255, 255, 255, 0.96);\n}\n.apexcharts-tooltip.dark {\n  color: #fff;\n  background: rgba(30,30,30, 0.8);\n}\n.apexcharts-tooltip * {\n  font-family: inherit;\n}\n\n.apexcharts-tooltip .apexcharts-marker,\n.apexcharts-area-series .apexcharts-area,\n.apexcharts-line {\n  pointer-events: none;\n}\n\n.apexcharts-tooltip.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-tooltip-title {\n  padding: 6px;\n  font-size: 15px;\n  margin-bottom: 4px;\n}\n.apexcharts-tooltip.light .apexcharts-tooltip-title {\n  background: #ECEFF1;\n  border-bottom: 1px solid #ddd;\n}\n.apexcharts-tooltip.dark .apexcharts-tooltip-title {\n  background: rgba(0, 0, 0, 0.7);\n  border-bottom: 1px solid #333;\n}\n\n.apexcharts-tooltip-text-value,\n.apexcharts-tooltip-text-z-value {\n  display: inline-block;\n  font-weight: 600;\n  margin-left: 5px;\n}\n\n.apexcharts-tooltip-text-z-label:empty,\n.apexcharts-tooltip-text-z-value:empty {\n  display: none;\n}\n\n.apexcharts-tooltip-text-value, \n.apexcharts-tooltip-text-z-value {\n  font-weight: 600;\n}\n\n.apexcharts-tooltip-marker {\n  width: 12px;\n  height: 12px;\n  position: relative;\n  top: 0px;\n  margin-right: 10px;\n  border-radius: 50%;\n}\n\n.apexcharts-tooltip-series-group {\n  padding: 0 10px;\n  display: none;\n  text-align: left;\n  justify-content: left;\n  align-items: center;\n}\n\n.apexcharts-tooltip-series-group.active .apexcharts-tooltip-marker {\n  opacity: 1;\n}\n.apexcharts-tooltip-series-group.active, .apexcharts-tooltip-series-group:last-child {\n  padding-bottom: 4px;\n}\n.apexcharts-tooltip-series-group-hidden {\n  opacity: 0;\n  height: 0;\n  line-height: 0;\n  padding: 0 !important;\n}\n.apexcharts-tooltip-y-group {\n  padding: 6px 0 5px;\n}\n.apexcharts-tooltip-candlestick {\n  padding: 4px 8px;\n}\n.apexcharts-tooltip-candlestick > div {\n  margin: 4px 0;\n}\n.apexcharts-tooltip-candlestick span.value {\n  font-weight: bold;\n}\n\n.apexcharts-tooltip-rangebar {\n  padding: 5px 8px;\n}\n\n.apexcharts-tooltip-rangebar .category {\n  font-weight: 600;\n  color: #777;\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n  font-weight: bold;\n  display: block;\n  margin-bottom: 5px;\n}\n\n.apexcharts-xaxistooltip {\n  opacity: 0;\n  padding: 9px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n\tbackground: #ECEFF1;\n  border: 1px solid #90A4AE;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xaxistooltip.dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-xaxistooltip:after, .apexcharts-xaxistooltip:before {\n\tleft: 50%;\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n\n.apexcharts-xaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-left: -6px;\n}\n.apexcharts-xaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-left: -7px;\n}\n\n.apexcharts-xaxistooltip-bottom:after, .apexcharts-xaxistooltip-bottom:before {\n  bottom: 100%;\n}\n\n.apexcharts-xaxistooltip-top:after, .apexcharts-xaxistooltip-top:before {\n  top: 100%;\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n  border-bottom-color: #ECEFF1;\n}\n.apexcharts-xaxistooltip-bottom:before {\n  border-bottom-color: #90A4AE;\n}\n\n.apexcharts-xaxistooltip-bottom.dark:after {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-bottom.dark:before {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip-top:after {\n  border-top-color:#ECEFF1\n}\n.apexcharts-xaxistooltip-top:before {\n  border-top-color: #90A4AE;\n}\n.apexcharts-xaxistooltip-top.dark:after {\n  border-top-color:rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-top.dark:before {\n  border-top-color: rgba(0, 0, 0, 0.5);\n}\n\n\n.apexcharts-xaxistooltip.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-yaxistooltip {\n  opacity: 0;\n  padding: 4px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n\tbackground: #ECEFF1;\n  border: 1px solid #90A4AE;\n}\n\n.apexcharts-yaxistooltip.dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-yaxistooltip:after, .apexcharts-yaxistooltip:before {\n\ttop: 50%;\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n.apexcharts-yaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-top: -6px;\n}\n.apexcharts-yaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-top: -7px;\n}\n\n.apexcharts-yaxistooltip-left:after, .apexcharts-yaxistooltip-left:before {\n  left: 100%;\n}\n\n.apexcharts-yaxistooltip-right:after, .apexcharts-yaxistooltip-right:before {\n  right: 100%;\n}\n\n.apexcharts-yaxistooltip-left:after {\n  border-left-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-left:before {\n  border-left-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-left.dark:after {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-left.dark:before {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip-right:after {\n  border-right-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-right:before {\n  border-right-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-right.dark:after {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-right.dark:before {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip.active {\n  opacity: 1;\n}\n.apexcharts-yaxistooltip-hidden {\n  display: none;\n}\n\n.apexcharts-xcrosshairs, .apexcharts-ycrosshairs {\n  pointer-events: none;\n  opacity: 0;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xcrosshairs.active, .apexcharts-ycrosshairs.active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-ycrosshairs-hidden {\n  opacity: 0;\n}\n\n.apexcharts-zoom-rect {\n  pointer-events: none;\n}\n.apexcharts-selection-rect {\n  cursor: move;\n}\n\n.svg_select_points, .svg_select_points_rot {\n  opacity: 0;\n  visibility: hidden;\n}\n.svg_select_points_l, .svg_select_points_r {\n  cursor: ew-resize;\n  opacity: 1;\n  visibility: visible;\n  fill: #888;\n}\n.apexcharts-canvas.zoomable .hovering-zoom {\n  cursor: crosshair\n}\n.apexcharts-canvas.zoomable .hovering-pan {\n  cursor: move\n}\n\n.apexcharts-xaxis,\n.apexcharts-yaxis {\n  pointer-events: none;\n}\n\n.apexcharts-zoom-icon, \n.apexcharts-zoom-in-icon,\n.apexcharts-zoom-out-icon,\n.apexcharts-reset-zoom-icon, \n.apexcharts-pan-icon, \n.apexcharts-selection-icon,\n.apexcharts-menu-icon, \n.apexcharts-toolbar-custom-icon {\n  cursor: pointer;\n  width: 20px;\n  height: 20px;\n  line-height: 24px;\n  color: #6E8192;\n  text-align: center;\n}\n\n\n.apexcharts-zoom-icon svg, \n.apexcharts-zoom-in-icon svg,\n.apexcharts-zoom-out-icon svg,\n.apexcharts-reset-zoom-icon svg,\n.apexcharts-menu-icon svg {\n  fill: #6E8192;\n}\n.apexcharts-selection-icon svg {\n  fill: #444;\n  transform: scale(0.76)\n}\n\n.dark .apexcharts-zoom-icon svg, \n.dark .apexcharts-zoom-in-icon svg,\n.dark .apexcharts-zoom-out-icon svg,\n.dark .apexcharts-reset-zoom-icon svg, \n.dark .apexcharts-pan-icon svg, \n.dark .apexcharts-selection-icon svg,\n.dark .apexcharts-menu-icon svg, \n.dark .apexcharts-toolbar-custom-icon svg{\n  fill: #f3f4f5;\n}\n\n.apexcharts-canvas .apexcharts-zoom-icon.selected svg, \n.apexcharts-canvas .apexcharts-selection-icon.selected svg, \n.apexcharts-canvas .apexcharts-reset-zoom-icon.selected svg {\n  fill: #008FFB;\n}\n.light .apexcharts-selection-icon:not(.selected):hover svg,\n.light .apexcharts-zoom-icon:not(.selected):hover svg, \n.light .apexcharts-zoom-in-icon:hover svg, \n.light .apexcharts-zoom-out-icon:hover svg, \n.light .apexcharts-reset-zoom-icon:hover svg, \n.light .apexcharts-menu-icon:hover svg {\n  fill: #333;\n}\n\n.apexcharts-selection-icon, .apexcharts-menu-icon {\n  position: relative;\n}\n.apexcharts-reset-zoom-icon {\n  margin-left: 5px;\n}\n.apexcharts-zoom-icon, .apexcharts-reset-zoom-icon, .apexcharts-menu-icon {\n  transform: scale(0.85);\n}\n\n.apexcharts-zoom-in-icon, .apexcharts-zoom-out-icon {\n  transform: scale(0.7)\n}\n\n.apexcharts-zoom-out-icon {\n  margin-right: 3px;\n}\n\n.apexcharts-pan-icon {\n  transform: scale(0.62);\n  position: relative;\n  left: 1px;\n  top: 0px;\n}\n.apexcharts-pan-icon svg {\n  fill: #fff;\n  stroke: #6E8192;\n  stroke-width: 2;\n}\n.apexcharts-pan-icon.selected svg {\n  stroke: #008FFB;\n}\n.apexcharts-pan-icon:not(.selected):hover svg {\n  stroke: #333;\n}\n\n.apexcharts-toolbar {\n  position: absolute;\n  z-index: 11;\n  top: 0px;\n  right: 3px;\n  max-width: 176px;\n  text-align: right;\n  border-radius: 3px;\n  padding: 0px 6px 2px 6px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center; \n}\n\n.apexcharts-toolbar svg {\n  pointer-events: none;\n}\n\n.apexcharts-menu {\n  background: #fff;\n  position: absolute;\n  top: 100%;\n  border: 1px solid #ddd;\n  border-radius: 3px;\n  padding: 3px;\n  right: 10px;\n  opacity: 0;\n  min-width: 110px;\n  transition: 0.15s ease all;\n  pointer-events: none;\n}\n\n.apexcharts-menu.open {\n  opacity: 1;\n  pointer-events: all;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-menu-item {\n  padding: 6px 7px;\n  font-size: 12px;\n  cursor: pointer;\n}\n.light .apexcharts-menu-item:hover {\n  background: #eee;\n}\n.dark .apexcharts-menu {\n  background: rgba(0, 0, 0, 0.7);\n  color: #fff;\n}\n\n@media screen and (min-width: 768px) {\n  .apexcharts-toolbar {\n    /*opacity: 0;*/\n  }\n\n  .apexcharts-canvas:hover .apexcharts-toolbar {\n    opacity: 1;\n  } \n}\n\n.apexcharts-datalabel.hidden {\n  opacity: 0;\n}\n\n.apexcharts-pie-label,\n.apexcharts-datalabel, .apexcharts-datalabel-label, .apexcharts-datalabel-value {\n  cursor: default;\n  pointer-events: none;\n}\n\n.apexcharts-pie-label-delay {\n  opacity: 0;\n  animation-name: opaque;\n  animation-duration: 0.3s;\n  animation-fill-mode: forwards;\n  animation-timing-function: ease;\n}\n\n.apexcharts-canvas .hidden {\n  opacity: 0;\n}\n\n.apexcharts-hide .apexcharts-series-points {\n  opacity: 0;\n}\n\n.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\n.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, .apexcharts-radar-series path, .apexcharts-radar-series polygon {\n  pointer-events: none;\n}\n\n/* markers */\n\n.apexcharts-marker {\n  transition: 0.15s ease all;\n}\n\n@keyframes opaque {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/charts/apexcharts.js",
    "content": "/*!\n * ApexCharts v3.17.1\n * (c) 2018-2020 Juned Chhipa\n * Released under the MIT License.\n */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = global || self, global.ApexCharts = factory());\n}(this, (function () { 'use strict';\n\n  function _typeof(obj) {\n    \"@babel/helpers - typeof\";\n\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n      _typeof = function (obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function (obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  function ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(object);\n      if (enumerableOnly) symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n      keys.push.apply(keys, symbols);\n    }\n\n    return keys;\n  }\n\n  function _objectSpread2(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i] != null ? arguments[i] : {};\n\n      if (i % 2) {\n        ownKeys(Object(source), true).forEach(function (key) {\n          _defineProperty(target, key, source[key]);\n        });\n      } else if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n      } else {\n        ownKeys(Object(source)).forEach(function (key) {\n          Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n      }\n    }\n\n    return target;\n  }\n\n  function _inherits(subClass, superClass) {\n    if (typeof superClass !== \"function\" && superClass !== null) {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n      constructor: {\n        value: subClass,\n        writable: true,\n        configurable: true\n      }\n    });\n    if (superClass) _setPrototypeOf(subClass, superClass);\n  }\n\n  function _getPrototypeOf(o) {\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n      return o.__proto__ || Object.getPrototypeOf(o);\n    };\n    return _getPrototypeOf(o);\n  }\n\n  function _setPrototypeOf(o, p) {\n    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n      o.__proto__ = p;\n      return o;\n    };\n\n    return _setPrototypeOf(o, p);\n  }\n\n  function _assertThisInitialized(self) {\n    if (self === void 0) {\n      throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n    }\n\n    return self;\n  }\n\n  function _possibleConstructorReturn(self, call) {\n    if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n      return call;\n    }\n\n    return _assertThisInitialized(self);\n  }\n\n  function _toConsumableArray(arr) {\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n  }\n\n  function _arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) {\n      for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n      return arr2;\n    }\n  }\n\n  function _iterableToArray(iter) {\n    if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n  }\n\n  function _nonIterableSpread() {\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n  }\n\n  /*\n   ** Generic functions which are not dependent on ApexCharts\n   */\n  var Utils = /*#__PURE__*/function () {\n    function Utils() {\n      _classCallCheck(this, Utils);\n    }\n\n    _createClass(Utils, [{\n      key: \"shadeRGBColor\",\n      value: function shadeRGBColor(percent, color) {\n        var f = color.split(','),\n            t = percent < 0 ? 0 : 255,\n            p = percent < 0 ? percent * -1 : percent,\n            R = parseInt(f[0].slice(4), 10),\n            G = parseInt(f[1], 10),\n            B = parseInt(f[2], 10);\n        return 'rgb(' + (Math.round((t - R) * p) + R) + ',' + (Math.round((t - G) * p) + G) + ',' + (Math.round((t - B) * p) + B) + ')';\n      }\n    }, {\n      key: \"shadeHexColor\",\n      value: function shadeHexColor(percent, color) {\n        var f = parseInt(color.slice(1), 16),\n            t = percent < 0 ? 0 : 255,\n            p = percent < 0 ? percent * -1 : percent,\n            R = f >> 16,\n            G = f >> 8 & 0x00ff,\n            B = f & 0x0000ff;\n        return '#' + (0x1000000 + (Math.round((t - R) * p) + R) * 0x10000 + (Math.round((t - G) * p) + G) * 0x100 + (Math.round((t - B) * p) + B)).toString(16).slice(1);\n      } // beautiful color shading blending code\n      // http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors\n\n    }, {\n      key: \"shadeColor\",\n      value: function shadeColor(p, color) {\n        if (Utils.isColorHex(color)) {\n          return this.shadeHexColor(p, color);\n        } else {\n          return this.shadeRGBColor(p, color);\n        }\n      }\n    }], [{\n      key: \"bind\",\n      value: function bind(fn, me) {\n        return function () {\n          return fn.apply(me, arguments);\n        };\n      }\n    }, {\n      key: \"isObject\",\n      value: function isObject(item) {\n        return item && _typeof(item) === 'object' && !Array.isArray(item) && item != null;\n      }\n    }, {\n      key: \"listToArray\",\n      value: function listToArray(list) {\n        var i,\n            array = [];\n\n        for (i = 0; i < list.length; i++) {\n          array[i] = list[i];\n        }\n\n        return array;\n      } // to extend defaults with user options\n      // credit: http://stackoverflow.com/questions/27936772/deep-object-merging-in-es6-es7#answer-34749873\n\n    }, {\n      key: \"extend\",\n      value: function extend(target, source) {\n        var _this = this;\n\n        if (typeof Object.assign !== 'function') {\n\n          (function () {\n            Object.assign = function (target) {\n\n              if (target === undefined || target === null) {\n                throw new TypeError('Cannot convert undefined or null to object');\n              }\n\n              var output = Object(target);\n\n              for (var index = 1; index < arguments.length; index++) {\n                var _source = arguments[index];\n\n                if (_source !== undefined && _source !== null) {\n                  for (var nextKey in _source) {\n                    if (_source.hasOwnProperty(nextKey)) {\n                      output[nextKey] = _source[nextKey];\n                    }\n                  }\n                }\n              }\n\n              return output;\n            };\n          })();\n        }\n\n        var output = Object.assign({}, target);\n\n        if (this.isObject(target) && this.isObject(source)) {\n          Object.keys(source).forEach(function (key) {\n            if (_this.isObject(source[key])) {\n              if (!(key in target)) {\n                Object.assign(output, _defineProperty({}, key, source[key]));\n              } else {\n                output[key] = _this.extend(target[key], source[key]);\n              }\n            } else {\n              Object.assign(output, _defineProperty({}, key, source[key]));\n            }\n          });\n        }\n\n        return output;\n      }\n    }, {\n      key: \"extendArray\",\n      value: function extendArray(arrToExtend, resultArr) {\n        var extendedArr = [];\n        arrToExtend.map(function (item) {\n          extendedArr.push(Utils.extend(resultArr, item));\n        });\n        arrToExtend = extendedArr;\n        return arrToExtend;\n      } // If month counter exceeds 12, it starts again from 1\n\n    }, {\n      key: \"monthMod\",\n      value: function monthMod(month) {\n        return month % 12;\n      }\n    }, {\n      key: \"clone\",\n      value: function clone(source) {\n        if (Object.prototype.toString.call(source) === '[object Array]') {\n          var cloneResult = [];\n\n          for (var i = 0; i < source.length; i++) {\n            cloneResult[i] = this.clone(source[i]);\n          }\n\n          return cloneResult;\n        } else if (_typeof(source) === 'object') {\n          var _cloneResult = {};\n\n          for (var prop in source) {\n            if (source.hasOwnProperty(prop)) {\n              _cloneResult[prop] = this.clone(source[prop]);\n            }\n          }\n\n          return _cloneResult;\n        } else {\n          return source;\n        }\n      }\n    }, {\n      key: \"log10\",\n      value: function log10(x) {\n        return Math.log(x) / Math.LN10;\n      }\n    }, {\n      key: \"roundToBase10\",\n      value: function roundToBase10(x) {\n        return Math.pow(10, Math.floor(Math.log10(x)));\n      }\n    }, {\n      key: \"roundToBase\",\n      value: function roundToBase(x, base) {\n        return Math.pow(base, Math.floor(Math.log(x) / Math.log(base)));\n      }\n    }, {\n      key: \"parseNumber\",\n      value: function parseNumber(val) {\n        if (val === null) return val;\n        return parseFloat(val);\n      }\n    }, {\n      key: \"randomId\",\n      value: function randomId() {\n        return (new Date() % 9e6).toString(16);\n      }\n    }, {\n      key: \"noExponents\",\n      value: function noExponents(val) {\n        var data = String(val).split(/[eE]/);\n        if (data.length === 1) return data[0];\n        var z = '',\n            sign = val < 0 ? '-' : '',\n            str = data[0].replace('.', ''),\n            mag = Number(data[1]) + 1;\n\n        if (mag < 0) {\n          z = sign + '0.';\n\n          while (mag++) {\n            z += '0';\n          }\n\n          return z + str.replace(/^-/, '');\n        }\n\n        mag -= str.length;\n\n        while (mag--) {\n          z += '0';\n        }\n\n        return str + z;\n      }\n    }, {\n      key: \"getDimensions\",\n      value: function getDimensions(el) {\n        var computedStyle = getComputedStyle(el);\n        var ret = [];\n        var elementHeight = el.clientHeight;\n        var elementWidth = el.clientWidth;\n        elementHeight -= parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom);\n        elementWidth -= parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);\n        ret.push(elementWidth);\n        ret.push(elementHeight);\n        return ret;\n      }\n    }, {\n      key: \"getBoundingClientRect\",\n      value: function getBoundingClientRect(element) {\n        var rect = element.getBoundingClientRect();\n        return {\n          top: rect.top,\n          right: rect.right,\n          bottom: rect.bottom,\n          left: rect.left,\n          width: element.clientWidth,\n          height: element.clientHeight,\n          x: rect.left,\n          y: rect.top\n        };\n      }\n    }, {\n      key: \"getLargestStringFromArr\",\n      value: function getLargestStringFromArr(arr) {\n        return arr.reduce(function (a, b) {\n          if (Array.isArray(b)) {\n            b = b.reduce(function (aa, bb) {\n              return aa.length > bb.length ? aa : bb;\n            });\n          }\n\n          return a.length > b.length ? a : b;\n        }, 0);\n      } // http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#answer-12342275\n\n    }, {\n      key: \"hexToRgba\",\n      value: function hexToRgba() {\n        var hex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '#999999';\n        var opacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.6;\n\n        if (hex.substring(0, 1) !== '#') {\n          hex = '#999999';\n        }\n\n        var h = hex.replace('#', '');\n        h = h.match(new RegExp('(.{' + h.length / 3 + '})', 'g'));\n\n        for (var i = 0; i < h.length; i++) {\n          h[i] = parseInt(h[i].length === 1 ? h[i] + h[i] : h[i], 16);\n        }\n\n        if (typeof opacity !== 'undefined') h.push(opacity);\n        return 'rgba(' + h.join(',') + ')';\n      }\n    }, {\n      key: \"getOpacityFromRGBA\",\n      value: function getOpacityFromRGBA(rgba) {\n        return parseFloat(rgba.replace(/^.*,(.+)\\)/, '$1'));\n      }\n    }, {\n      key: \"rgb2hex\",\n      value: function rgb2hex(rgb) {\n        rgb = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n        return rgb && rgb.length === 4 ? '#' + ('0' + parseInt(rgb[1], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[2], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[3], 10).toString(16)).slice(-2) : '';\n      }\n    }, {\n      key: \"isColorHex\",\n      value: function isColorHex(color) {\n        return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)|(^#[0-9A-F]{8}$)/i.test(color);\n      }\n    }, {\n      key: \"polarToCartesian\",\n      value: function polarToCartesian(centerX, centerY, radius, angleInDegrees) {\n        var angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0;\n        return {\n          x: centerX + radius * Math.cos(angleInRadians),\n          y: centerY + radius * Math.sin(angleInRadians)\n        };\n      }\n    }, {\n      key: \"escapeString\",\n      value: function escapeString(str) {\n        var escapeWith = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';\n        var newStr = str.toString().slice();\n        newStr = newStr.replace(/[` ~!@#$%^&*()_|+\\-=?;:'\",.<>{}[\\]\\\\/]/gi, escapeWith);\n        return newStr;\n      }\n    }, {\n      key: \"negToZero\",\n      value: function negToZero(val) {\n        return val < 0 ? 0 : val;\n      }\n    }, {\n      key: \"moveIndexInArray\",\n      value: function moveIndexInArray(arr, old_index, new_index) {\n        if (new_index >= arr.length) {\n          var k = new_index - arr.length + 1;\n\n          while (k--) {\n            arr.push(undefined);\n          }\n        }\n\n        arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);\n        return arr;\n      }\n    }, {\n      key: \"extractNumber\",\n      value: function extractNumber(s) {\n        return parseFloat(s.replace(/[^\\d.]*/g, ''));\n      }\n    }, {\n      key: \"findAncestor\",\n      value: function findAncestor(el, cls) {\n        while ((el = el.parentElement) && !el.classList.contains(cls)) {\n        }\n\n        return el;\n      }\n    }, {\n      key: \"setELstyles\",\n      value: function setELstyles(el, styles) {\n        for (var key in styles) {\n          if (styles.hasOwnProperty(key)) {\n            el.style.key = styles[key];\n          }\n        }\n      }\n    }, {\n      key: \"isNumber\",\n      value: function isNumber(value) {\n        return !isNaN(value) && parseFloat(Number(value)) === value && !isNaN(parseInt(value, 10));\n      }\n    }, {\n      key: \"isFloat\",\n      value: function isFloat(n) {\n        return Number(n) === n && n % 1 !== 0;\n      }\n    }, {\n      key: \"isSafari\",\n      value: function isSafari() {\n        return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n      }\n    }, {\n      key: \"isFirefox\",\n      value: function isFirefox() {\n        return navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n      }\n    }, {\n      key: \"isIE11\",\n      value: function isIE11() {\n        if (window.navigator.userAgent.indexOf('MSIE') !== -1 || window.navigator.appVersion.indexOf('Trident/') > -1) {\n          return true;\n        }\n      }\n    }, {\n      key: \"isIE\",\n      value: function isIE() {\n        var ua = window.navigator.userAgent;\n        var msie = ua.indexOf('MSIE ');\n\n        if (msie > 0) {\n          // IE 10 or older => return version number\n          return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n        }\n\n        var trident = ua.indexOf('Trident/');\n\n        if (trident > 0) {\n          // IE 11 => return version number\n          var rv = ua.indexOf('rv:');\n          return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n        }\n\n        var edge = ua.indexOf('Edge/');\n\n        if (edge > 0) {\n          // Edge (IE 12+) => return version number\n          return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n        } // other browser\n\n\n        return false;\n      }\n    }]);\n\n    return Utils;\n  }();\n\n  /**\n   * ApexCharts Filters Class for setting hover/active states on the paths.\n   *\n   * @module Formatters\n   **/\n\n  var Filters = /*#__PURE__*/function () {\n    function Filters(ctx) {\n      _classCallCheck(this, Filters);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    } // create a re-usable filter which can be appended other filter effects and applied to multiple elements\n\n\n    _createClass(Filters, [{\n      key: \"getDefaultFilter\",\n      value: function getDefaultFilter(el, i) {\n        var w = this.w;\n        el.unfilter(true);\n        var filter = new window.SVG.Filter();\n        filter.size('120%', '180%', '-5%', '-40%');\n\n        if (w.config.states.normal.filter !== 'none') {\n          this.applyFilter(el, i, w.config.states.normal.filter.type, w.config.states.normal.filter.value);\n        } else {\n          if (w.config.chart.dropShadow.enabled) {\n            this.dropShadow(el, w.config.chart.dropShadow, i);\n          }\n        }\n      }\n    }, {\n      key: \"addNormalFilter\",\n      value: function addNormalFilter(el, i) {\n        var w = this.w; // revert shadow if it was there\n        // but, ignore marker as marker don't have dropshadow yet\n\n        if (w.config.chart.dropShadow.enabled && !el.node.classList.contains('apexcharts-marker')) {\n          this.dropShadow(el, w.config.chart.dropShadow, i);\n        }\n      } // appends dropShadow to the filter object which can be chained with other filter effects\n\n    }, {\n      key: \"addLightenFilter\",\n      value: function addLightenFilter(el, i, attrs) {\n        var _this = this;\n\n        var w = this.w;\n        var intensity = attrs.intensity;\n\n        if (Utils.isFirefox()) {\n          return;\n        }\n\n        el.unfilter(true);\n        var filter = new window.SVG.Filter();\n        el.filter(function (add) {\n          var shadowAttr = w.config.chart.dropShadow;\n\n          if (shadowAttr.enabled) {\n            filter = _this.addShadow(add, i, shadowAttr);\n          } else {\n            filter = add;\n          }\n\n          filter.componentTransfer({\n            rgb: {\n              type: 'linear',\n              slope: 1.5,\n              intercept: intensity\n            }\n          });\n        });\n        el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');\n\n        this._scaleFilterSize(el.filterer.node);\n      } // appends dropShadow to the filter object which can be chained with other filter effects\n\n    }, {\n      key: \"addDarkenFilter\",\n      value: function addDarkenFilter(el, i, attrs) {\n        var _this2 = this;\n\n        var w = this.w;\n        var intensity = attrs.intensity;\n\n        if (Utils.isFirefox()) {\n          return;\n        }\n\n        el.unfilter(true);\n        var filter = new window.SVG.Filter();\n        el.filter(function (add) {\n          var shadowAttr = w.config.chart.dropShadow;\n\n          if (shadowAttr.enabled) {\n            filter = _this2.addShadow(add, i, shadowAttr);\n          } else {\n            filter = add;\n          }\n\n          filter.componentTransfer({\n            rgb: {\n              type: 'linear',\n              slope: intensity\n            }\n          });\n        });\n        el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');\n\n        this._scaleFilterSize(el.filterer.node);\n      }\n    }, {\n      key: \"applyFilter\",\n      value: function applyFilter(el, i, filter) {\n        var intensity = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.5;\n\n        switch (filter) {\n          case 'none':\n            {\n              this.addNormalFilter(el, i);\n              break;\n            }\n\n          case 'lighten':\n            {\n              this.addLightenFilter(el, i, {\n                intensity: intensity\n              });\n              break;\n            }\n\n          case 'darken':\n            {\n              this.addDarkenFilter(el, i, {\n                intensity: intensity\n              });\n              break;\n            }\n        }\n      } // appends dropShadow to the filter object which can be chained with other filter effects\n\n    }, {\n      key: \"addShadow\",\n      value: function addShadow(add, i, attrs) {\n        var blur = attrs.blur,\n            top = attrs.top,\n            left = attrs.left,\n            color = attrs.color,\n            opacity = attrs.opacity;\n        var shadowBlur = add.flood(Array.isArray(color) ? color[i] : color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source);\n        return add.blend(add.source, shadowBlur);\n      } // directly adds dropShadow to the element and returns the same element.\n      // the only way it is different from the addShadow() function is that addShadow is chainable to other filters, while this function discards all filters and add dropShadow\n\n    }, {\n      key: \"dropShadow\",\n      value: function dropShadow(el, attrs) {\n        var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n        var top = attrs.top,\n            left = attrs.left,\n            blur = attrs.blur,\n            color = attrs.color,\n            opacity = attrs.opacity,\n            noUserSpaceOnUse = attrs.noUserSpaceOnUse;\n        var w = this.w;\n        el.unfilter(true);\n\n        if (Utils.isIE() && w.config.chart.type === 'radialBar') {\n          // in radialbar charts, dropshadow is clipping actual drawing in IE\n          return el;\n        }\n\n        color = Array.isArray(color) ? color[i] : color;\n        el.filter(function (add) {\n          var shadowBlur = null;\n\n          if (Utils.isSafari() || Utils.isFirefox() || Utils.isIE()) {\n            // safari/firefox has some alternative way to use this filter\n            shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur);\n          } else {\n            shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source);\n          }\n\n          add.blend(add.source, shadowBlur);\n        });\n\n        if (!noUserSpaceOnUse) {\n          el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse');\n        }\n\n        this._scaleFilterSize(el.filterer.node);\n\n        return el;\n      }\n    }, {\n      key: \"setSelectionFilter\",\n      value: function setSelectionFilter(el, realIndex, dataPointIndex) {\n        var w = this.w;\n\n        if (typeof w.globals.selectedDataPoints[realIndex] !== 'undefined') {\n          if (w.globals.selectedDataPoints[realIndex].indexOf(dataPointIndex) > -1) {\n            el.node.setAttribute('selected', true);\n            var activeFilter = w.config.states.active.filter;\n\n            if (activeFilter !== 'none') {\n              this.applyFilter(el, realIndex, activeFilter.type, activeFilter.value);\n            }\n          }\n        }\n      }\n    }, {\n      key: \"_scaleFilterSize\",\n      value: function _scaleFilterSize(el) {\n        var setAttributes = function setAttributes(attrs) {\n          for (var key in attrs) {\n            if (attrs.hasOwnProperty(key)) {\n              el.setAttribute(key, attrs[key]);\n            }\n          }\n        };\n\n        setAttributes({\n          width: '200%',\n          height: '200%',\n          x: '-50%',\n          y: '-50%'\n        });\n      }\n    }]);\n\n    return Filters;\n  }();\n\n  /**\n   * ApexCharts Animation Class.\n   *\n   * @module Animations\n   **/\n\n  var Animations = /*#__PURE__*/function () {\n    function Animations(ctx) {\n      _classCallCheck(this, Animations);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.setEasingFunctions();\n    }\n\n    _createClass(Animations, [{\n      key: \"setEasingFunctions\",\n      value: function setEasingFunctions() {\n        var easing;\n        if (this.w.globals.easing) return;\n        var userDefinedEasing = this.w.config.chart.animations.easing;\n\n        switch (userDefinedEasing) {\n          case 'linear':\n            {\n              easing = '-';\n              break;\n            }\n\n          case 'easein':\n            {\n              easing = '<';\n              break;\n            }\n\n          case 'easeout':\n            {\n              easing = '>';\n              break;\n            }\n\n          case 'easeinout':\n            {\n              easing = '<>';\n              break;\n            }\n\n          case 'swing':\n            {\n              easing = function easing(pos) {\n                var s = 1.70158;\n                var ret = (pos -= 1) * pos * ((s + 1) * pos + s) + 1;\n                return ret;\n              };\n\n              break;\n            }\n\n          case 'bounce':\n            {\n              easing = function easing(pos) {\n                var ret = '';\n\n                if (pos < 1 / 2.75) {\n                  ret = 7.5625 * pos * pos;\n                } else if (pos < 2 / 2.75) {\n                  ret = 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;\n                } else if (pos < 2.5 / 2.75) {\n                  ret = 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;\n                } else {\n                  ret = 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;\n                }\n\n                return ret;\n              };\n\n              break;\n            }\n\n          case 'elastic':\n            {\n              easing = function easing(pos) {\n                if (pos === !!pos) return pos;\n                return Math.pow(2, -10 * pos) * Math.sin((pos - 0.075) * (2 * Math.PI) / 0.3) + 1;\n              };\n\n              break;\n            }\n\n          default:\n            {\n              easing = '<>';\n            }\n        }\n\n        this.w.globals.easing = easing;\n      }\n    }, {\n      key: \"animateLine\",\n      value: function animateLine(el, from, to, speed) {\n        el.attr(from).animate(speed).attr(to);\n      }\n      /*\n       ** Animate radius of a circle element\n       */\n\n    }, {\n      key: \"animateCircleRadius\",\n      value: function animateCircleRadius(el, from, to, speed, easing, cb) {\n        if (!from) from = 0;\n        el.attr({\n          r: from\n        }).animate(speed, easing).attr({\n          r: to\n        }).afterAll(function () {\n          cb();\n        });\n      }\n      /*\n       ** Animate radius and position of a circle element\n       */\n\n    }, {\n      key: \"animateCircle\",\n      value: function animateCircle(el, from, to, speed, easing) {\n        el.attr({\n          r: from.r,\n          cx: from.cx,\n          cy: from.cy\n        }).animate(speed, easing).attr({\n          r: to.r,\n          cx: to.cx,\n          cy: to.cy\n        });\n      }\n      /*\n       ** Animate rect properties\n       */\n\n    }, {\n      key: \"animateRect\",\n      value: function animateRect(el, from, to, speed, fn) {\n        el.attr(from).animate(speed).attr(to).afterAll(function () {\n          return fn();\n        });\n      }\n    }, {\n      key: \"animatePathsGradually\",\n      value: function animatePathsGradually(params) {\n        var el = params.el,\n            realIndex = params.realIndex,\n            j = params.j,\n            fill = params.fill,\n            pathFrom = params.pathFrom,\n            pathTo = params.pathTo,\n            speed = params.speed,\n            delay = params.delay;\n        var me = this;\n        var w = this.w;\n        var delayFactor = 0;\n\n        if (w.config.chart.animations.animateGradually.enabled) {\n          delayFactor = w.config.chart.animations.animateGradually.delay;\n        }\n\n        if (w.config.chart.animations.dynamicAnimation.enabled && w.globals.dataChanged && w.config.chart.type !== 'bar') {\n          // disabled due to this bug - https://github.com/apexcharts/vue-apexcharts/issues/75\n          delayFactor = 0;\n        }\n\n        me.morphSVG(el, realIndex, j, w.config.chart.type === 'line' && !w.globals.comboCharts ? 'stroke' : fill, pathFrom, pathTo, speed, delay * delayFactor);\n      }\n    }, {\n      key: \"showDelayedElements\",\n      value: function showDelayedElements() {\n        this.w.globals.delayedElements.forEach(function (d) {\n          var ele = d.el;\n          ele.classList.remove('apexcharts-element-hidden');\n        });\n      }\n    }, {\n      key: \"animationCompleted\",\n      value: function animationCompleted(el) {\n        var w = this.w;\n        if (w.globals.animationEnded) return;\n        w.globals.animationEnded = true;\n        this.showDelayedElements();\n\n        if (typeof w.config.chart.events.animationEnd === 'function') {\n          w.config.chart.events.animationEnd(this.ctx, {\n            el: el,\n            w: w\n          });\n        }\n      } // SVG.js animation for morphing one path to another\n\n    }, {\n      key: \"morphSVG\",\n      value: function morphSVG(el, realIndex, j, fill, pathFrom, pathTo, speed, delay) {\n        var _this = this;\n\n        var w = this.w;\n\n        if (!pathFrom) {\n          pathFrom = el.attr('pathFrom');\n        }\n\n        if (!pathTo) {\n          pathTo = el.attr('pathTo');\n        }\n\n        var disableAnimationForCorrupPath = function disableAnimationForCorrupPath(path) {\n          if (w.config.chart.type === 'radar') {\n            // radar chart drops the path to bottom and hence a corrup path looks ugly\n            // therefore, disable animation for such a case\n            speed = 1;\n          }\n\n          return \"M 0 \".concat(w.globals.gridHeight);\n        };\n\n        if (!pathFrom || pathFrom.indexOf('undefined') > -1 || pathFrom.indexOf('NaN') > -1) {\n          pathFrom = disableAnimationForCorrupPath();\n        }\n\n        if (pathTo.indexOf('undefined') > -1 || pathTo.indexOf('NaN') > -1) {\n          pathTo = disableAnimationForCorrupPath();\n        }\n\n        if (!w.globals.shouldAnimate) {\n          speed = 1;\n        }\n\n        el.plot(pathFrom).animate(1, w.globals.easing, delay).plot(pathFrom).animate(speed, w.globals.easing, delay).plot(pathTo).afterAll(function () {\n          // a flag to indicate that the original mount function can return true now as animation finished here\n          if (Utils.isNumber(j)) {\n            if (j === w.globals.series[w.globals.maxValsInArrayIndex].length - 2 && w.globals.shouldAnimate) {\n              _this.animationCompleted(el);\n            }\n          } else if (fill !== 'none' && w.globals.shouldAnimate) {\n            if (!w.globals.comboCharts && realIndex === w.globals.series.length - 1 || w.globals.comboCharts) {\n              _this.animationCompleted(el);\n            }\n          }\n\n          _this.showDelayedElements();\n        });\n      }\n    }]);\n\n    return Animations;\n  }();\n\n  /**\n   * ApexCharts Graphics Class for all drawing operations.\n   *\n   * @module Graphics\n   **/\n\n  var Graphics = /*#__PURE__*/function () {\n    function Graphics(ctx) {\n      _classCallCheck(this, Graphics);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    }\n\n    _createClass(Graphics, [{\n      key: \"drawLine\",\n      value: function drawLine(x1, y1, x2, y2) {\n        var lineColor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '#a8a8a8';\n        var dashArray = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n        var strokeWidth = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n        var w = this.w;\n        var line = w.globals.dom.Paper.line().attr({\n          x1: x1,\n          y1: y1,\n          x2: x2,\n          y2: y2,\n          stroke: lineColor,\n          'stroke-dasharray': dashArray,\n          'stroke-width': strokeWidth\n        });\n        return line;\n      }\n    }, {\n      key: \"drawRect\",\n      value: function drawRect() {\n        var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n        var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n        var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n        var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n        var radius = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n        var color = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '#fefefe';\n        var opacity = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1;\n        var strokeWidth = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;\n        var strokeColor = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null;\n        var strokeDashArray = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 0;\n        var w = this.w;\n        var rect = w.globals.dom.Paper.rect();\n        rect.attr({\n          x: x1,\n          y: y1,\n          width: x2 > 0 ? x2 : 0,\n          height: y2 > 0 ? y2 : 0,\n          rx: radius,\n          ry: radius,\n          opacity: opacity,\n          'stroke-width': strokeWidth !== null ? strokeWidth : 0,\n          stroke: strokeColor !== null ? strokeColor : 'none',\n          'stroke-dasharray': strokeDashArray\n        }); // fix apexcharts.js#1410\n\n        rect.node.setAttribute('fill', color);\n        return rect;\n      }\n    }, {\n      key: \"drawPolygon\",\n      value: function drawPolygon(polygonString) {\n        var stroke = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#e1e1e1';\n        var fill = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'none';\n        var w = this.w;\n        var polygon = w.globals.dom.Paper.polygon(polygonString).attr({\n          fill: fill,\n          stroke: stroke\n        });\n        return polygon;\n      }\n    }, {\n      key: \"drawCircle\",\n      value: function drawCircle(radius) {\n        var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n        var w = this.w;\n        var c = w.globals.dom.Paper.circle(radius * 2);\n\n        if (attrs !== null) {\n          c.attr(attrs);\n        }\n\n        return c;\n      }\n    }, {\n      key: \"drawPath\",\n      value: function drawPath(_ref) {\n        var _ref$d = _ref.d,\n            d = _ref$d === void 0 ? '' : _ref$d,\n            _ref$stroke = _ref.stroke,\n            stroke = _ref$stroke === void 0 ? '#a8a8a8' : _ref$stroke,\n            _ref$strokeWidth = _ref.strokeWidth,\n            strokeWidth = _ref$strokeWidth === void 0 ? 1 : _ref$strokeWidth,\n            fill = _ref.fill,\n            _ref$fillOpacity = _ref.fillOpacity,\n            fillOpacity = _ref$fillOpacity === void 0 ? 1 : _ref$fillOpacity,\n            _ref$strokeOpacity = _ref.strokeOpacity,\n            strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity,\n            classes = _ref.classes,\n            _ref$strokeLinecap = _ref.strokeLinecap,\n            strokeLinecap = _ref$strokeLinecap === void 0 ? null : _ref$strokeLinecap,\n            _ref$strokeDashArray = _ref.strokeDashArray,\n            strokeDashArray = _ref$strokeDashArray === void 0 ? 0 : _ref$strokeDashArray;\n        var w = this.w;\n\n        if (strokeLinecap === null) {\n          strokeLinecap = w.config.stroke.lineCap;\n        }\n\n        if (d.indexOf('undefined') > -1 || d.indexOf('NaN') > -1) {\n          d = \"M 0 \".concat(w.globals.gridHeight);\n        }\n\n        var p = w.globals.dom.Paper.path(d).attr({\n          fill: fill,\n          'fill-opacity': fillOpacity,\n          stroke: stroke,\n          'stroke-opacity': strokeOpacity,\n          'stroke-linecap': strokeLinecap,\n          'stroke-width': strokeWidth,\n          'stroke-dasharray': strokeDashArray,\n          class: classes\n        });\n        return p;\n      }\n    }, {\n      key: \"group\",\n      value: function group() {\n        var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n        var w = this.w;\n        var g = w.globals.dom.Paper.group();\n\n        if (attrs !== null) {\n          g.attr(attrs);\n        }\n\n        return g;\n      }\n    }, {\n      key: \"move\",\n      value: function move(x, y) {\n        var move = ['M', x, y].join(' ');\n        return move;\n      }\n    }, {\n      key: \"line\",\n      value: function line(x, y) {\n        var hORv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n        var line = null;\n\n        if (hORv === null) {\n          line = ['L', x, y].join(' ');\n        } else if (hORv === 'H') {\n          line = ['H', x].join(' ');\n        } else if (hORv === 'V') {\n          line = ['V', y].join(' ');\n        }\n\n        return line;\n      }\n    }, {\n      key: \"curve\",\n      value: function curve(x1, y1, x2, y2, x, y) {\n        var curve = ['C', x1, y1, x2, y2, x, y].join(' ');\n        return curve;\n      }\n    }, {\n      key: \"quadraticCurve\",\n      value: function quadraticCurve(x1, y1, x, y) {\n        var curve = ['Q', x1, y1, x, y].join(' ');\n        return curve;\n      }\n    }, {\n      key: \"arc\",\n      value: function arc(rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y) {\n        var relative = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;\n        var coord = 'A';\n        if (relative) coord = 'a';\n        var arc = [coord, rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y].join(' ');\n        return arc;\n      }\n      /**\n       * @memberof Graphics\n       * @param {object}\n       *  i = series's index\n       *  realIndex = realIndex is series's actual index when it was drawn time. After several redraws, the iterating \"i\" may change in loops, but realIndex doesn't\n       *  pathFrom = existing pathFrom to animateTo\n       *  pathTo = new Path to which d attr will be animated from pathFrom to pathTo\n       *  stroke = line Color\n       *  strokeWidth = width of path Line\n       *  fill = it can be gradient, single color, pattern or image\n       *  animationDelay = how much to delay when starting animation (in milliseconds)\n       *  dataChangeSpeed = for dynamic animations, when data changes\n       *  className = class attribute to add\n       * @return {object} svg.js path object\n       **/\n\n    }, {\n      key: \"renderPaths\",\n      value: function renderPaths(_ref2) {\n        var j = _ref2.j,\n            realIndex = _ref2.realIndex,\n            pathFrom = _ref2.pathFrom,\n            pathTo = _ref2.pathTo,\n            stroke = _ref2.stroke,\n            strokeWidth = _ref2.strokeWidth,\n            strokeLinecap = _ref2.strokeLinecap,\n            fill = _ref2.fill,\n            animationDelay = _ref2.animationDelay,\n            initialSpeed = _ref2.initialSpeed,\n            dataChangeSpeed = _ref2.dataChangeSpeed,\n            className = _ref2.className,\n            _ref2$shouldClipToGri = _ref2.shouldClipToGrid,\n            shouldClipToGrid = _ref2$shouldClipToGri === void 0 ? true : _ref2$shouldClipToGri,\n            _ref2$bindEventsOnPat = _ref2.bindEventsOnPaths,\n            bindEventsOnPaths = _ref2$bindEventsOnPat === void 0 ? true : _ref2$bindEventsOnPat,\n            _ref2$drawShadow = _ref2.drawShadow,\n            drawShadow = _ref2$drawShadow === void 0 ? true : _ref2$drawShadow;\n        var w = this.w;\n        var filters = new Filters(this.ctx);\n        var anim = new Animations(this.ctx);\n        var initialAnim = this.w.config.chart.animations.enabled;\n        var dynamicAnim = initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;\n        var d;\n        var shouldAnimate = !!(initialAnim && !w.globals.resized || dynamicAnim && w.globals.dataChanged && w.globals.shouldAnimate);\n\n        if (shouldAnimate) {\n          d = pathFrom;\n        } else {\n          d = pathTo;\n          w.globals.animationEnded = true;\n        }\n\n        var strokeDashArrayOpt = w.config.stroke.dashArray;\n        var strokeDashArray = 0;\n\n        if (Array.isArray(strokeDashArrayOpt)) {\n          strokeDashArray = strokeDashArrayOpt[realIndex];\n        } else {\n          strokeDashArray = w.config.stroke.dashArray;\n        }\n\n        var el = this.drawPath({\n          d: d,\n          stroke: stroke,\n          strokeWidth: strokeWidth,\n          fill: fill,\n          fillOpacity: 1,\n          classes: className,\n          strokeLinecap: strokeLinecap,\n          strokeDashArray: strokeDashArray\n        });\n        el.attr('index', realIndex);\n\n        if (shouldClipToGrid) {\n          el.attr({\n            'clip-path': \"url(#gridRectMask\".concat(w.globals.cuid, \")\")\n          });\n        } // const defaultFilter = el.filterer\n\n\n        if (w.config.states.normal.filter.type !== 'none') {\n          filters.getDefaultFilter(el, realIndex);\n        } else {\n          if (w.config.chart.dropShadow.enabled && drawShadow) {\n            if (!w.config.chart.dropShadow.enabledOnSeries || w.config.chart.dropShadow.enabledOnSeries && w.config.chart.dropShadow.enabledOnSeries.indexOf(realIndex) !== -1) {\n              var shadow = w.config.chart.dropShadow;\n              filters.dropShadow(el, shadow, realIndex);\n            }\n          }\n        }\n\n        if (bindEventsOnPaths) {\n          el.node.addEventListener('mouseenter', this.pathMouseEnter.bind(this, el));\n          el.node.addEventListener('mouseleave', this.pathMouseLeave.bind(this, el));\n          el.node.addEventListener('mousedown', this.pathMouseDown.bind(this, el));\n        }\n\n        el.attr({\n          pathTo: pathTo,\n          pathFrom: pathFrom\n        });\n        var defaultAnimateOpts = {\n          el: el,\n          j: j,\n          realIndex: realIndex,\n          pathFrom: pathFrom,\n          pathTo: pathTo,\n          fill: fill,\n          strokeWidth: strokeWidth,\n          delay: animationDelay\n        };\n\n        if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {\n          anim.animatePathsGradually(_objectSpread2({}, defaultAnimateOpts, {\n            speed: initialSpeed\n          }));\n        } else {\n          if (w.globals.resized || !w.globals.dataChanged) {\n            anim.showDelayedElements();\n          }\n        }\n\n        if (w.globals.dataChanged && dynamicAnim && shouldAnimate) {\n          anim.animatePathsGradually(_objectSpread2({}, defaultAnimateOpts, {\n            speed: dataChangeSpeed\n          }));\n        }\n\n        return el;\n      }\n    }, {\n      key: \"drawPattern\",\n      value: function drawPattern(style, width, height) {\n        var stroke = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '#a8a8a8';\n        var strokeWidth = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n        var w = this.w;\n        var p = w.globals.dom.Paper.pattern(width, height, function (add) {\n          if (style === 'horizontalLines') {\n            add.line(0, 0, height, 0).stroke({\n              color: stroke,\n              width: strokeWidth + 1\n            });\n          } else if (style === 'verticalLines') {\n            add.line(0, 0, 0, width).stroke({\n              color: stroke,\n              width: strokeWidth + 1\n            });\n          } else if (style === 'slantedLines') {\n            add.line(0, 0, width, height).stroke({\n              color: stroke,\n              width: strokeWidth\n            });\n          } else if (style === 'squares') {\n            add.rect(width, height).fill('none').stroke({\n              color: stroke,\n              width: strokeWidth\n            });\n          } else if (style === 'circles') {\n            add.circle(width).fill('none').stroke({\n              color: stroke,\n              width: strokeWidth\n            });\n          }\n        });\n        return p;\n      }\n    }, {\n      key: \"drawGradient\",\n      value: function drawGradient(style, gfrom, gto, opacityFrom, opacityTo) {\n        var size = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n        var stops = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n        var colorStops = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;\n        var i = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 0;\n        var w = this.w;\n        var g;\n\n        if (gfrom.length < 9 && gfrom.indexOf('#') === 0) {\n          // if the hex contains alpha and is of 9 digit, skip the opacity\n          gfrom = Utils.hexToRgba(gfrom, opacityFrom);\n        }\n\n        if (gto.length < 9 && gto.indexOf('#') === 0) {\n          gto = Utils.hexToRgba(gto, opacityTo);\n        }\n\n        var stop1 = 0;\n        var stop2 = 1;\n        var stop3 = 1;\n        var stop4 = null;\n\n        if (stops !== null) {\n          stop1 = typeof stops[0] !== 'undefined' ? stops[0] / 100 : 0;\n          stop2 = typeof stops[1] !== 'undefined' ? stops[1] / 100 : 1;\n          stop3 = typeof stops[2] !== 'undefined' ? stops[2] / 100 : 1;\n          stop4 = typeof stops[3] !== 'undefined' ? stops[3] / 100 : null;\n        }\n\n        var radial = !!(w.config.chart.type === 'donut' || w.config.chart.type === 'pie' || w.config.chart.type === 'bubble');\n\n        if (colorStops === null || colorStops.length === 0) {\n          g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) {\n            stop.at(stop1, gfrom, opacityFrom);\n            stop.at(stop2, gto, opacityTo);\n            stop.at(stop3, gto, opacityTo);\n\n            if (stop4 !== null) {\n              stop.at(stop4, gfrom, opacityFrom);\n            }\n          });\n        } else {\n          g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) {\n            var gradientStops = Array.isArray(colorStops[i]) ? colorStops[i] : colorStops;\n            gradientStops.forEach(function (s) {\n              stop.at(s.offset / 100, s.color, s.opacity);\n            });\n          });\n        }\n\n        if (!radial) {\n          if (style === 'vertical') {\n            g.from(0, 0).to(0, 1);\n          } else if (style === 'diagonal') {\n            g.from(0, 0).to(1, 1);\n          } else if (style === 'horizontal') {\n            g.from(0, 1).to(1, 1);\n          } else if (style === 'diagonal2') {\n            g.from(1, 0).to(0, 1);\n          }\n        } else {\n          var offx = w.globals.gridWidth / 2;\n          var offy = w.globals.gridHeight / 2;\n\n          if (w.config.chart.type !== 'bubble') {\n            g.attr({\n              gradientUnits: 'userSpaceOnUse',\n              cx: offx,\n              cy: offy,\n              r: size\n            });\n          } else {\n            g.attr({\n              cx: 0.5,\n              cy: 0.5,\n              r: 0.8,\n              fx: 0.2,\n              fy: 0.2\n            });\n          }\n        }\n\n        return g;\n      }\n    }, {\n      key: \"drawText\",\n      value: function drawText(_ref3) {\n        var x = _ref3.x,\n            y = _ref3.y,\n            text = _ref3.text,\n            textAnchor = _ref3.textAnchor,\n            fontSize = _ref3.fontSize,\n            fontFamily = _ref3.fontFamily,\n            fontWeight = _ref3.fontWeight,\n            foreColor = _ref3.foreColor,\n            opacity = _ref3.opacity,\n            _ref3$cssClass = _ref3.cssClass,\n            cssClass = _ref3$cssClass === void 0 ? '' : _ref3$cssClass,\n            _ref3$isPlainText = _ref3.isPlainText,\n            isPlainText = _ref3$isPlainText === void 0 ? true : _ref3$isPlainText;\n        var w = this.w;\n        if (typeof text === 'undefined') text = '';\n\n        if (!textAnchor) {\n          textAnchor = 'start';\n        }\n\n        if (!foreColor || !foreColor.length) {\n          foreColor = w.config.chart.foreColor;\n        }\n\n        fontFamily = fontFamily || w.config.chart.fontFamily;\n        fontWeight = fontWeight || 'regular';\n        var elText;\n\n        if (Array.isArray(text)) {\n          elText = w.globals.dom.Paper.text(function (add) {\n            for (var i = 0; i < text.length; i++) {\n              i === 0 ? add.tspan(text[i]) : add.tspan(text[i]).newLine();\n            }\n          });\n        } else {\n          elText = isPlainText ? w.globals.dom.Paper.plain(text) : w.globals.dom.Paper.text(function (add) {\n            return add.tspan(text);\n          });\n        }\n\n        elText.attr({\n          x: x,\n          y: y,\n          'text-anchor': textAnchor,\n          'dominant-baseline': 'auto',\n          'font-size': fontSize,\n          'font-family': fontFamily,\n          'font-weight': fontWeight,\n          fill: foreColor,\n          class: 'apexcharts-text ' + cssClass\n        });\n        elText.node.style.fontFamily = fontFamily;\n        elText.node.style.opacity = opacity;\n        return elText;\n      }\n    }, {\n      key: \"drawMarker\",\n      value: function drawMarker(x, y, opts) {\n        x = x || 0;\n        var size = opts.pSize || 0;\n        var elPoint = null;\n\n        if (opts.shape === 'square') {\n          var radius = opts.pRadius === undefined ? size / 2 : opts.pRadius;\n\n          if (y === null || !size) {\n            size = 0;\n            radius = 0;\n          }\n\n          var nSize = size * 1.2 + radius;\n          var p = this.drawRect(nSize, nSize, nSize, nSize, radius);\n          p.attr({\n            x: x - nSize / 2,\n            y: y - nSize / 2,\n            cx: x,\n            cy: y,\n            class: opts.class ? opts.class : '',\n            fill: opts.pointFillColor,\n            'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1,\n            stroke: opts.pointStrokeColor,\n            'stroke-width': opts.pWidth ? opts.pWidth : 0,\n            'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1\n          });\n          elPoint = p;\n        } else if (opts.shape === 'circle' || !opts.shape) {\n          if (!Utils.isNumber(y)) {\n            size = 0;\n            y = 0;\n          } // let nSize = size - opts.pRadius / 2 < 0 ? 0 : size - opts.pRadius / 2\n\n\n          elPoint = this.drawCircle(size, {\n            cx: x,\n            cy: y,\n            class: opts.class ? opts.class : '',\n            stroke: opts.pointStrokeColor,\n            fill: opts.pointFillColor,\n            'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1,\n            'stroke-width': opts.pWidth ? opts.pWidth : 0,\n            'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1\n          });\n        }\n\n        return elPoint;\n      }\n    }, {\n      key: \"pathMouseEnter\",\n      value: function pathMouseEnter(path, e) {\n        var w = this.w;\n        var filters = new Filters(this.ctx);\n        var i = parseInt(path.node.getAttribute('index'), 10);\n        var j = parseInt(path.node.getAttribute('j'), 10);\n\n        if (typeof w.config.chart.events.dataPointMouseEnter === 'function') {\n          w.config.chart.events.dataPointMouseEnter(e, this.ctx, {\n            seriesIndex: i,\n            dataPointIndex: j,\n            w: w\n          });\n        }\n\n        this.ctx.events.fireEvent('dataPointMouseEnter', [e, this.ctx, {\n          seriesIndex: i,\n          dataPointIndex: j,\n          w: w\n        }]);\n\n        if (w.config.states.active.filter.type !== 'none') {\n          if (path.node.getAttribute('selected') === 'true') {\n            return;\n          }\n        }\n\n        if (w.config.states.hover.filter.type !== 'none') {\n          if (w.config.states.active.filter.type !== 'none' && !w.globals.isTouchDevice) {\n            var hoverFilter = w.config.states.hover.filter;\n            filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value);\n          }\n        }\n      }\n    }, {\n      key: \"pathMouseLeave\",\n      value: function pathMouseLeave(path, e) {\n        var w = this.w;\n        var filters = new Filters(this.ctx);\n        var i = parseInt(path.node.getAttribute('index'), 10);\n        var j = parseInt(path.node.getAttribute('j'), 10);\n\n        if (typeof w.config.chart.events.dataPointMouseLeave === 'function') {\n          w.config.chart.events.dataPointMouseLeave(e, this.ctx, {\n            seriesIndex: i,\n            dataPointIndex: j,\n            w: w\n          });\n        }\n\n        this.ctx.events.fireEvent('dataPointMouseLeave', [e, this.ctx, {\n          seriesIndex: i,\n          dataPointIndex: j,\n          w: w\n        }]);\n\n        if (w.config.states.active.filter.type !== 'none') {\n          if (path.node.getAttribute('selected') === 'true') {\n            return;\n          }\n        }\n\n        if (w.config.states.hover.filter.type !== 'none') {\n          filters.getDefaultFilter(path, i);\n        }\n      }\n    }, {\n      key: \"pathMouseDown\",\n      value: function pathMouseDown(path, e) {\n        var w = this.w;\n        var filters = new Filters(this.ctx);\n        var i = parseInt(path.node.getAttribute('index'), 10);\n        var j = parseInt(path.node.getAttribute('j'), 10);\n        var selected = 'false';\n\n        if (path.node.getAttribute('selected') === 'true') {\n          path.node.setAttribute('selected', 'false');\n\n          if (w.globals.selectedDataPoints[i].indexOf(j) > -1) {\n            var index = w.globals.selectedDataPoints[i].indexOf(j);\n            w.globals.selectedDataPoints[i].splice(index, 1);\n          }\n        } else {\n          if (!w.config.states.active.allowMultipleDataPointsSelection && w.globals.selectedDataPoints.length > 0) {\n            w.globals.selectedDataPoints = [];\n            var elPaths = w.globals.dom.Paper.select('.apexcharts-series path').members;\n            var elCircles = w.globals.dom.Paper.select('.apexcharts-series circle, .apexcharts-series rect').members;\n\n            var deSelect = function deSelect(els) {\n              Array.prototype.forEach.call(els, function (el) {\n                el.node.setAttribute('selected', 'false');\n                filters.getDefaultFilter(el, i);\n              });\n            };\n\n            deSelect(elPaths);\n            deSelect(elCircles);\n          }\n\n          path.node.setAttribute('selected', 'true');\n          selected = 'true';\n\n          if (typeof w.globals.selectedDataPoints[i] === 'undefined') {\n            w.globals.selectedDataPoints[i] = [];\n          }\n\n          w.globals.selectedDataPoints[i].push(j);\n        }\n\n        if (selected === 'true') {\n          var activeFilter = w.config.states.active.filter;\n\n          if (activeFilter !== 'none') {\n            filters.applyFilter(path, i, activeFilter.type, activeFilter.value);\n          }\n        } else {\n          if (w.config.states.active.filter.type !== 'none') {\n            filters.getDefaultFilter(path, i);\n          }\n        }\n\n        if (typeof w.config.chart.events.dataPointSelection === 'function') {\n          w.config.chart.events.dataPointSelection(e, this.ctx, {\n            selectedDataPoints: w.globals.selectedDataPoints,\n            seriesIndex: i,\n            dataPointIndex: j,\n            w: w\n          });\n        }\n\n        if (e) {\n          this.ctx.events.fireEvent('dataPointSelection', [e, this.ctx, {\n            selectedDataPoints: w.globals.selectedDataPoints,\n            seriesIndex: i,\n            dataPointIndex: j,\n            w: w\n          }]);\n        }\n      }\n    }, {\n      key: \"rotateAroundCenter\",\n      value: function rotateAroundCenter(el) {\n        var coord = el.getBBox();\n        var x = coord.x + coord.width / 2;\n        var y = coord.y + coord.height / 2;\n        return {\n          x: x,\n          y: y\n        };\n      }\n    }, {\n      key: \"getTextRects\",\n      value: function getTextRects(text, fontSize, fontFamily, transform) {\n        var useBBox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n        var w = this.w;\n        var virtualText = this.drawText({\n          x: -200,\n          y: -200,\n          text: text,\n          textAnchor: 'start',\n          fontSize: fontSize,\n          fontFamily: fontFamily,\n          foreColor: '#fff',\n          opacity: 0\n        });\n\n        if (transform) {\n          virtualText.attr('transform', transform);\n        }\n\n        w.globals.dom.Paper.add(virtualText);\n        var rect = virtualText.bbox();\n\n        if (!useBBox) {\n          rect = virtualText.node.getBoundingClientRect();\n        }\n\n        virtualText.remove();\n        return {\n          width: rect.width,\n          height: rect.height\n        };\n      }\n      /**\n       * append ... to long text\n       * http://stackoverflow.com/questions/9241315/trimming-text-to-a-given-pixel-width-in-svg\n       * @memberof Graphics\n       **/\n\n    }, {\n      key: \"placeTextWithEllipsis\",\n      value: function placeTextWithEllipsis(textObj, textString, width) {\n        if (typeof textObj.getComputedTextLength !== 'function') return;\n        textObj.textContent = textString;\n\n        if (textString.length > 0) {\n          // ellipsis is needed\n          if (textObj.getComputedTextLength() >= width / 0.8) {\n            for (var x = textString.length - 3; x > 0; x -= 3) {\n              if (textObj.getSubStringLength(0, x) <= width / 0.8) {\n                textObj.textContent = textString.substring(0, x) + '...';\n                return;\n              }\n            }\n\n            textObj.textContent = '.'; // can't place at all\n          }\n        }\n      }\n    }], [{\n      key: \"setAttrs\",\n      value: function setAttrs(el, attrs) {\n        for (var key in attrs) {\n          if (attrs.hasOwnProperty(key)) {\n            el.setAttribute(key, attrs[key]);\n          }\n        }\n      }\n    }]);\n\n    return Graphics;\n  }();\n\n  var Helpers = /*#__PURE__*/function () {\n    function Helpers(annoCtx) {\n      _classCallCheck(this, Helpers);\n\n      this.w = annoCtx.w;\n      this.annoCtx = annoCtx;\n    }\n\n    _createClass(Helpers, [{\n      key: \"setOrientations\",\n      value: function setOrientations(anno) {\n        var annoIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n        var w = this.w;\n\n        if (anno.label.orientation === 'vertical') {\n          var i = annoIndex !== null ? annoIndex : 0;\n          var xAnno = w.globals.dom.baseEl.querySelector(\".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='\".concat(i, \"']\"));\n\n          if (xAnno !== null) {\n            var xAnnoCoord = xAnno.getBoundingClientRect();\n            xAnno.setAttribute('x', parseFloat(xAnno.getAttribute('x')) - xAnnoCoord.height + 4);\n\n            if (anno.label.position === 'top') {\n              xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) + xAnnoCoord.width);\n            } else {\n              xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) - xAnnoCoord.width);\n            }\n\n            var annoRotatingCenter = this.annoCtx.graphics.rotateAroundCenter(xAnno);\n            var x = annoRotatingCenter.x;\n            var y = annoRotatingCenter.y;\n            xAnno.setAttribute('transform', \"rotate(-90 \".concat(x, \" \").concat(y, \")\"));\n          }\n        }\n      }\n    }, {\n      key: \"addBackgroundToAnno\",\n      value: function addBackgroundToAnno(annoEl, anno) {\n        var w = this.w;\n        if (!anno.label.text || anno.label.text && !anno.label.text.trim()) return null;\n        var elGridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid').getBoundingClientRect();\n        var coords = annoEl.getBoundingClientRect();\n        var pleft = anno.label.style.padding.left;\n        var pright = anno.label.style.padding.right;\n        var ptop = anno.label.style.padding.top;\n        var pbottom = anno.label.style.padding.bottom;\n\n        if (anno.label.orientation === 'vertical') {\n          ptop = anno.label.style.padding.left;\n          pbottom = anno.label.style.padding.right;\n          pleft = anno.label.style.padding.top;\n          pright = anno.label.style.padding.bottom;\n        }\n\n        var x1 = coords.left - elGridRect.left - pleft;\n        var y1 = coords.top - elGridRect.top - ptop;\n        var elRect = this.annoCtx.graphics.drawRect(x1, y1, coords.width + pleft + pright, coords.height + ptop + pbottom, 0, anno.label.style.background, 1, anno.label.borderWidth, anno.label.borderColor, 0);\n\n        if (anno.id) {\n          elRect.node.classList.add(anno.id);\n        }\n\n        return elRect;\n      }\n    }, {\n      key: \"annotationsBackground\",\n      value: function annotationsBackground() {\n        var _this = this;\n\n        var w = this.w;\n\n        var add = function add(anno, i, type) {\n          var annoLabel = w.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(type, \"-annotations .apexcharts-\").concat(type, \"-annotation-label[rel='\").concat(i, \"']\"));\n\n          if (annoLabel) {\n            var parent = annoLabel.parentNode;\n\n            var elRect = _this.addBackgroundToAnno(annoLabel, anno);\n\n            if (elRect) {\n              parent.insertBefore(elRect.node, annoLabel);\n            }\n          }\n        };\n\n        w.config.annotations.xaxis.map(function (anno, i) {\n          add(anno, i, 'xaxis');\n        });\n        w.config.annotations.yaxis.map(function (anno, i) {\n          add(anno, i, 'yaxis');\n        });\n        w.config.annotations.points.map(function (anno, i) {\n          add(anno, i, 'point');\n        });\n      }\n    }, {\n      key: \"makeAnnotationDraggable\",\n      value: function makeAnnotationDraggable(el, annoType, index) {\n        var w = this.w;\n        var anno = w.config.annotations[annoType][index]; // in the draggable annotations, we will mutate the original config\n        // object and store the values directly there\n\n        el.draggable().on('dragend', function (de) {\n          var x = de.target.getAttribute('x');\n          var y = de.target.getAttribute('y');\n          var cx = de.target.getAttribute('cx');\n          var cy = de.target.getAttribute('cy');\n          anno.x = x;\n          anno.y = y;\n\n          if (cx && cy) {\n            anno.x = cx;\n            anno.y = cy;\n          }\n        });\n        el.node.addEventListener('mousedown', function (e) {\n          e.stopPropagation();\n          el.selectize({\n            pointSize: 8,\n            rotationPoint: false,\n            pointType: 'rect'\n          });\n          el.resize().on('resizedone', function (re) {\n            var width = re.target.getAttribute('width');\n            var height = re.target.getAttribute('height');\n            var r = re.target.getAttribute('r');\n            anno.width = width;\n            anno.height = height;\n\n            if (r) {\n              anno.radius = r;\n            }\n          });\n        });\n      }\n    }, {\n      key: \"getStringX\",\n      value: function getStringX(x) {\n        var w = this.w;\n        var rX = x;\n\n        if (w.config.xaxis.convertedCatToNumeric && w.globals.categoryLabels.length) {\n          x = w.globals.categoryLabels.indexOf(x) + 1;\n        }\n\n        var catIndex = w.globals.labels.indexOf(x);\n        var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');\n\n        if (xLabel) {\n          rX = parseFloat(xLabel.getAttribute('x'));\n        }\n\n        return rX;\n      }\n    }]);\n\n    return Helpers;\n  }();\n\n  var XAnnotations = /*#__PURE__*/function () {\n    function XAnnotations(annoCtx) {\n      _classCallCheck(this, XAnnotations);\n\n      this.w = annoCtx.w;\n      this.annoCtx = annoCtx;\n      this.invertAxis = this.annoCtx.invertAxis;\n    }\n\n    _createClass(XAnnotations, [{\n      key: \"addXaxisAnnotation\",\n      value: function addXaxisAnnotation(anno, parent, index) {\n        var w = this.w;\n        var min = this.invertAxis ? w.globals.minY : w.globals.minX;\n        var max = this.invertAxis ? w.globals.maxY : w.globals.maxX;\n        var range = this.invertAxis ? w.globals.yRange[0] : w.globals.xRange;\n        var x1 = (anno.x - min) / (range / w.globals.gridWidth);\n\n        if (this.annoCtx.inversedReversedAxis) {\n          x1 = (max - anno.x) / (range / w.globals.gridWidth);\n        }\n\n        var text = anno.label.text;\n\n        if ((w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) && !this.invertAxis && !w.globals.dataFormatXNumeric) {\n          x1 = this.annoCtx.helpers.getStringX(anno.x);\n        }\n\n        var strokeDashArray = anno.strokeDashArray;\n        if (!Utils.isNumber(x1)) return;\n\n        if (anno.x2 === null || typeof anno.x2 === 'undefined') {\n          var line = this.annoCtx.graphics.drawLine(x1 + anno.offsetX, // x1\n          0 + anno.offsetY, // y1\n          x1 + anno.offsetX, // x2\n          w.globals.gridHeight + anno.offsetY, // y2\n          anno.borderColor, // lineColor\n          strokeDashArray, //dashArray\n          anno.borderWidth);\n          parent.appendChild(line.node);\n\n          if (anno.id) {\n            line.node.classList.add(anno.id);\n          }\n        } else {\n          var x2 = (anno.x2 - min) / (range / w.globals.gridWidth);\n\n          if (this.annoCtx.inversedReversedAxis) {\n            x2 = (max - anno.x2) / (range / w.globals.gridWidth);\n          }\n\n          if ((w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) && !this.invertAxis && !w.globals.dataFormatXNumeric) {\n            x2 = this.annoCtx.helpers.getStringX(anno.x2);\n          }\n\n          if (x2 < x1) {\n            var temp = x1;\n            x1 = x2;\n            x2 = temp;\n          }\n\n          var rect = this.annoCtx.graphics.drawRect(x1 + anno.offsetX, // x1\n          0 + anno.offsetY, // y1\n          x2 - x1, // x2\n          w.globals.gridHeight + anno.offsetY, // y2\n          0, // radius\n          anno.fillColor, // color\n          anno.opacity, // opacity,\n          1, // strokeWidth\n          anno.borderColor, // strokeColor\n          strokeDashArray // stokeDashArray\n          );\n          rect.node.classList.add('apexcharts-annotation-rect');\n          rect.attr('clip-path', \"url(#gridRectMask\".concat(w.globals.cuid, \")\"));\n          parent.appendChild(rect.node);\n\n          if (anno.id) {\n            rect.node.classList.add(anno.id);\n          }\n        }\n\n        var textY = anno.label.position === 'top' ? 4 : w.globals.gridHeight;\n        var textRects = this.annoCtx.graphics.getTextRects(text, parseFloat(anno.label.style.fontSize));\n        var elText = this.annoCtx.graphics.drawText({\n          x: x1 + anno.label.offsetX,\n          y: textY + anno.label.offsetY - (anno.label.orientation === 'vertical' ? anno.label.position === 'top' ? textRects.width / 2 - 12 : -textRects.width / 2 : 0),\n          text: text,\n          textAnchor: anno.label.textAnchor,\n          fontSize: anno.label.style.fontSize,\n          fontFamily: anno.label.style.fontFamily,\n          fontWeight: anno.label.style.fontWeight,\n          foreColor: anno.label.style.color,\n          cssClass: \"apexcharts-xaxis-annotation-label \".concat(anno.label.style.cssClass, \" \").concat(anno.id ? anno.id : '')\n        });\n        elText.attr({\n          rel: index\n        });\n        parent.appendChild(elText.node); // after placing the annotations on svg, set any vertically placed annotations\n\n        this.annoCtx.helpers.setOrientations(anno, index);\n      }\n    }, {\n      key: \"drawXAxisAnnotations\",\n      value: function drawXAxisAnnotations() {\n        var _this = this;\n\n        var w = this.w;\n        var elg = this.annoCtx.graphics.group({\n          class: 'apexcharts-xaxis-annotations'\n        });\n        w.config.annotations.xaxis.map(function (anno, index) {\n          _this.addXaxisAnnotation(anno, elg.node, index);\n        });\n        return elg;\n      }\n    }]);\n\n    return XAnnotations;\n  }();\n\n  var YAnnotations = /*#__PURE__*/function () {\n    function YAnnotations(annoCtx) {\n      _classCallCheck(this, YAnnotations);\n\n      this.w = annoCtx.w;\n      this.annoCtx = annoCtx;\n    }\n\n    _createClass(YAnnotations, [{\n      key: \"addYaxisAnnotation\",\n      value: function addYaxisAnnotation(anno, parent, index) {\n        var w = this.w;\n        var strokeDashArray = anno.strokeDashArray;\n\n        var y1 = this._getY1Y2('y1', anno);\n\n        var y2;\n        var text = anno.label.text;\n\n        if (anno.y2 === null || typeof anno.y2 === 'undefined') {\n          var line = this.annoCtx.graphics.drawLine(0 + anno.offsetX, // x1\n          y1 + anno.offsetY, // y1\n          w.globals.gridWidth + anno.offsetX, // x2\n          y1 + anno.offsetY, // y2\n          anno.borderColor, // lineColor\n          strokeDashArray, // dashArray\n          anno.borderWidth);\n          parent.appendChild(line.node);\n\n          if (anno.id) {\n            line.node.classList.add(anno.id);\n          }\n        } else {\n          y2 = this._getY1Y2('y2', anno);\n\n          if (y2 > y1) {\n            var temp = y1;\n            y1 = y2;\n            y2 = temp;\n          }\n\n          var rect = this.annoCtx.graphics.drawRect(0 + anno.offsetX, // x1\n          y2 + anno.offsetY, // y1\n          w.globals.gridWidth + anno.offsetX, // x2\n          y1 - y2, // y2\n          0, // radius\n          anno.fillColor, // color\n          anno.opacity, // opacity,\n          1, // strokeWidth\n          anno.borderColor, // strokeColor\n          strokeDashArray // stokeDashArray\n          );\n          rect.node.classList.add('apexcharts-annotation-rect');\n          rect.attr('clip-path', \"url(#gridRectMask\".concat(w.globals.cuid, \")\"));\n          parent.appendChild(rect.node);\n\n          if (anno.id) {\n            rect.node.classList.add(anno.id);\n          }\n        }\n\n        var textX = anno.label.position === 'right' ? w.globals.gridWidth : 0;\n        var elText = this.annoCtx.graphics.drawText({\n          x: textX + anno.label.offsetX,\n          y: (y2 || y1) + anno.label.offsetY - 3,\n          text: text,\n          textAnchor: anno.label.textAnchor,\n          fontSize: anno.label.style.fontSize,\n          fontFamily: anno.label.style.fontFamily,\n          fontWeight: anno.label.style.fontWeight,\n          foreColor: anno.label.style.color,\n          cssClass: \"apexcharts-yaxis-annotation-label \".concat(anno.label.style.cssClass, \" \").concat(anno.id ? anno.id : '')\n        });\n        elText.attr({\n          rel: index\n        });\n        parent.appendChild(elText.node);\n      }\n    }, {\n      key: \"_getY1Y2\",\n      value: function _getY1Y2(type, anno) {\n        var y = type === 'y1' ? anno.y : anno.y2;\n        var yP;\n        var w = this.w;\n\n        if (this.annoCtx.invertAxis) {\n          var catIndex = w.globals.labels.indexOf(y);\n\n          if (w.config.xaxis.convertedCatToNumeric) {\n            catIndex = w.globals.categoryLabels.indexOf(y);\n          }\n\n          var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-yaxis-texts-g text:nth-child(' + (catIndex + 1) + ')');\n\n          if (xLabel) {\n            yP = parseFloat(xLabel.getAttribute('y'));\n          }\n        } else {\n          yP = w.globals.gridHeight - (y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);\n\n          if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {\n            yP = (y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);\n          }\n        }\n\n        return yP;\n      }\n    }, {\n      key: \"drawYAxisAnnotations\",\n      value: function drawYAxisAnnotations() {\n        var _this = this;\n\n        var w = this.w;\n        var elg = this.annoCtx.graphics.group({\n          class: 'apexcharts-yaxis-annotations'\n        });\n        w.config.annotations.yaxis.map(function (anno, index) {\n          _this.addYaxisAnnotation(anno, elg.node, index);\n        });\n        return elg;\n      }\n    }]);\n\n    return YAnnotations;\n  }();\n\n  var PointAnnotations = /*#__PURE__*/function () {\n    function PointAnnotations(annoCtx) {\n      _classCallCheck(this, PointAnnotations);\n\n      this.w = annoCtx.w;\n      this.annoCtx = annoCtx;\n    }\n\n    _createClass(PointAnnotations, [{\n      key: \"addPointAnnotation\",\n      value: function addPointAnnotation(anno, parent, index) {\n        var w = this.w;\n        var x = 0;\n        var y = 0;\n        var pointY = 0;\n\n        if (this.annoCtx.invertAxis) {\n          console.warn('Point annotation is not supported in horizontal bar charts.');\n        }\n\n        if (typeof anno.x === 'string') {\n          var catIndex = w.globals.labels.indexOf(anno.x);\n\n          if (w.config.xaxis.convertedCatToNumeric) {\n            catIndex = w.globals.categoryLabels.indexOf(anno.x);\n          }\n\n          x = this.annoCtx.helpers.getStringX(anno.x);\n          var annoY = anno.y;\n\n          if (anno.y === null) {\n            annoY = w.globals.series[anno.seriesIndex][catIndex];\n          }\n\n          y = w.globals.gridHeight - (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseFloat(anno.label.style.fontSize) - anno.marker.size;\n          pointY = w.globals.gridHeight - (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);\n\n          if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {\n            y = (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) + parseFloat(anno.label.style.fontSize) + anno.marker.size;\n            pointY = (annoY - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);\n          }\n        } else {\n          x = (anno.x - w.globals.minX) / (w.globals.xRange / w.globals.gridWidth);\n          y = w.globals.gridHeight - (parseFloat(anno.y) - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseFloat(anno.label.style.fontSize) - anno.marker.size;\n          pointY = w.globals.gridHeight - (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);\n\n          if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) {\n            y = (parseFloat(anno.y) - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) - parseFloat(anno.label.style.fontSize) - anno.marker.size;\n            pointY = (anno.y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight);\n          }\n        }\n\n        if (!Utils.isNumber(x)) return;\n        var optsPoints = {\n          pSize: anno.marker.size,\n          pWidth: anno.marker.strokeWidth,\n          pointFillColor: anno.marker.fillColor,\n          pointStrokeColor: anno.marker.strokeColor,\n          shape: anno.marker.shape,\n          pRadius: anno.marker.radius,\n          class: \"apexcharts-point-annotation-marker \".concat(anno.marker.cssClass, \" \").concat(anno.id ? anno.id : '')\n        };\n        var point = this.annoCtx.graphics.drawMarker(x + anno.marker.offsetX, pointY + anno.marker.offsetY, optsPoints);\n        parent.appendChild(point.node);\n        var text = anno.label.text ? anno.label.text : '';\n        var elText = this.annoCtx.graphics.drawText({\n          x: x + anno.label.offsetX,\n          y: y + anno.label.offsetY,\n          text: text,\n          textAnchor: anno.label.textAnchor,\n          fontSize: anno.label.style.fontSize,\n          fontFamily: anno.label.style.fontFamily,\n          fontWeight: anno.label.style.fontWeight,\n          foreColor: anno.label.style.color,\n          cssClass: \"apexcharts-point-annotation-label \".concat(anno.label.style.cssClass, \" \").concat(anno.id ? anno.id : '')\n        });\n        elText.attr({\n          rel: index\n        });\n        parent.appendChild(elText.node); // TODO: deprecate this as we will use custom\n\n        if (anno.customSVG.SVG) {\n          var g = this.annoCtx.graphics.group({\n            class: 'apexcharts-point-annotations-custom-svg ' + anno.customSVG.cssClass\n          });\n          g.attr({\n            transform: \"translate(\".concat(x + anno.customSVG.offsetX, \", \").concat(y + anno.customSVG.offsetY, \")\")\n          });\n          g.node.innerHTML = anno.customSVG.SVG;\n          parent.appendChild(g.node);\n        }\n\n        if (anno.image.path) {\n          var imgWidth = anno.image.width ? anno.image.width : 20;\n          var imgHeight = anno.image.height ? anno.image.height : 20;\n          this.annoCtx.addImage({\n            x: x + anno.image.offsetX - imgWidth / 2,\n            y: y + anno.image.offsetY - imgHeight / 2,\n            width: imgWidth,\n            height: imgHeight,\n            path: anno.image.path,\n            appendTo: '.apexcharts-point-annotations'\n          });\n        }\n      }\n    }, {\n      key: \"drawPointAnnotations\",\n      value: function drawPointAnnotations() {\n        var _this = this;\n\n        var w = this.w;\n        var elg = this.annoCtx.graphics.group({\n          class: 'apexcharts-point-annotations'\n        });\n        w.config.annotations.points.map(function (anno, index) {\n          _this.addPointAnnotation(anno, elg.node, index);\n        });\n        return elg;\n      }\n    }]);\n\n    return PointAnnotations;\n  }();\n\n  const name = \"en\";\n  const options = {\n  \tmonths: [\n  \t\t\"January\",\n  \t\t\"February\",\n  \t\t\"March\",\n  \t\t\"April\",\n  \t\t\"May\",\n  \t\t\"June\",\n  \t\t\"July\",\n  \t\t\"August\",\n  \t\t\"September\",\n  \t\t\"October\",\n  \t\t\"November\",\n  \t\t\"December\"\n  \t],\n  \tshortMonths: [\n  \t\t\"Jan\",\n  \t\t\"Feb\",\n  \t\t\"Mar\",\n  \t\t\"Apr\",\n  \t\t\"May\",\n  \t\t\"Jun\",\n  \t\t\"Jul\",\n  \t\t\"Aug\",\n  \t\t\"Sep\",\n  \t\t\"Oct\",\n  \t\t\"Nov\",\n  \t\t\"Dec\"\n  \t],\n  \tdays: [\n  \t\t\"Sunday\",\n  \t\t\"Monday\",\n  \t\t\"Tuesday\",\n  \t\t\"Wednesday\",\n  \t\t\"Thursday\",\n  \t\t\"Friday\",\n  \t\t\"Saturday\"\n  \t],\n  \tshortDays: [\n  \t\t\"Sun\",\n  \t\t\"Mon\",\n  \t\t\"Tue\",\n  \t\t\"Wed\",\n  \t\t\"Thu\",\n  \t\t\"Fri\",\n  \t\t\"Sat\"\n  \t],\n  \ttoolbar: {\n  \t\texportToSVG: \"Download SVG\",\n  \t\texportToPNG: \"Download PNG\",\n  \t\texportToCSV: \"Download CSV\",\n  \t\tmenu: \"Menu\",\n  \t\tselection: \"Selection\",\n  \t\tselectionZoom: \"Selection Zoom\",\n  \t\tzoomIn: \"Zoom In\",\n  \t\tzoomOut: \"Zoom Out\",\n  \t\tpan: \"Panning\",\n  \t\treset: \"Reset Zoom\"\n  \t}\n  };\n  var en = {\n  \tname: name,\n  \toptions: options\n  };\n\n  var Options = /*#__PURE__*/function () {\n    function Options() {\n      _classCallCheck(this, Options);\n\n      this.yAxis = {\n        show: true,\n        showAlways: false,\n        showForNullSeries: true,\n        seriesName: undefined,\n        opposite: false,\n        reversed: false,\n        logarithmic: false,\n        tickAmount: undefined,\n        forceNiceScale: false,\n        max: undefined,\n        min: undefined,\n        floating: false,\n        decimalsInFloat: undefined,\n        labels: {\n          show: true,\n          minWidth: 0,\n          maxWidth: 160,\n          offsetX: 0,\n          offsetY: 0,\n          align: undefined,\n          rotate: 0,\n          padding: 20,\n          style: {\n            colors: [],\n            fontSize: '11px',\n            fontWeight: 400,\n            fontFamily: undefined,\n            cssClass: ''\n          },\n          formatter: undefined\n        },\n        axisBorder: {\n          show: false,\n          color: '#e0e0e0',\n          width: 1,\n          offsetX: 0,\n          offsetY: 0\n        },\n        axisTicks: {\n          show: false,\n          color: '#e0e0e0',\n          width: 6,\n          offsetX: 0,\n          offsetY: 0\n        },\n        title: {\n          text: undefined,\n          rotate: 90,\n          offsetY: 0,\n          offsetX: 0,\n          style: {\n            color: undefined,\n            fontSize: '11px',\n            fontWeight: 900,\n            fontFamily: undefined,\n            cssClass: ''\n          }\n        },\n        tooltip: {\n          enabled: false,\n          offsetX: 0\n        },\n        crosshairs: {\n          show: true,\n          position: 'front',\n          stroke: {\n            color: '#b6b6b6',\n            width: 1,\n            dashArray: 0\n          }\n        }\n      };\n      this.pointAnnotation = {\n        x: 0,\n        y: null,\n        yAxisIndex: 0,\n        seriesIndex: 0,\n        marker: {\n          size: 4,\n          fillColor: '#fff',\n          strokeWidth: 2,\n          strokeColor: '#333',\n          shape: 'circle',\n          offsetX: 0,\n          offsetY: 0,\n          radius: 2,\n          cssClass: ''\n        },\n        label: {\n          borderColor: '#c2c2c2',\n          borderWidth: 1,\n          text: undefined,\n          textAnchor: 'middle',\n          offsetX: 0,\n          offsetY: -15,\n          style: {\n            background: '#fff',\n            color: undefined,\n            fontSize: '11px',\n            fontFamily: undefined,\n            fontWeight: 400,\n            cssClass: '',\n            padding: {\n              left: 5,\n              right: 5,\n              top: 2,\n              bottom: 2\n            }\n          }\n        },\n        customSVG: {\n          // this will be deprecated in the next major version as it is going to be replaced with a better alternative below\n          SVG: undefined,\n          cssClass: undefined,\n          offsetX: 0,\n          offsetY: 0\n        },\n        image: {\n          path: undefined,\n          width: 20,\n          height: 20,\n          offsetX: 0,\n          offsetY: 0\n        }\n      };\n      this.yAxisAnnotation = {\n        y: 0,\n        y2: null,\n        strokeDashArray: 1,\n        fillColor: '#c2c2c2',\n        borderColor: '#c2c2c2',\n        borderWidth: 1,\n        opacity: 0.3,\n        offsetX: 0,\n        offsetY: 0,\n        yAxisIndex: 0,\n        label: {\n          borderColor: '#c2c2c2',\n          borderWidth: 1,\n          text: undefined,\n          textAnchor: 'end',\n          position: 'right',\n          offsetX: 0,\n          offsetY: -3,\n          style: {\n            background: '#fff',\n            color: undefined,\n            fontSize: '11px',\n            fontFamily: undefined,\n            fontWeight: 400,\n            cssClass: '',\n            padding: {\n              left: 5,\n              right: 5,\n              top: 2,\n              bottom: 2\n            }\n          }\n        }\n      };\n      this.xAxisAnnotation = {\n        x: 0,\n        x2: null,\n        strokeDashArray: 1,\n        fillColor: '#c2c2c2',\n        borderColor: '#c2c2c2',\n        borderWidth: 1,\n        opacity: 0.3,\n        offsetX: 0,\n        offsetY: 0,\n        label: {\n          borderColor: '#c2c2c2',\n          borderWidth: 1,\n          text: undefined,\n          textAnchor: 'middle',\n          orientation: 'vertical',\n          position: 'top',\n          offsetX: 0,\n          offsetY: 0,\n          style: {\n            background: '#fff',\n            color: undefined,\n            fontSize: '11px',\n            fontFamily: undefined,\n            fontWeight: 400,\n            cssClass: '',\n            padding: {\n              left: 5,\n              right: 5,\n              top: 2,\n              bottom: 2\n            }\n          }\n        }\n      };\n      this.text = {\n        x: 0,\n        y: 0,\n        text: '',\n        textAnchor: 'start',\n        foreColor: undefined,\n        fontSize: '13px',\n        fontFamily: undefined,\n        fontWeight: 400,\n        appendTo: '.apexcharts-annotations',\n        backgroundColor: 'transparent',\n        borderColor: '#c2c2c2',\n        borderRadius: 0,\n        borderWidth: 0,\n        paddingLeft: 4,\n        paddingRight: 4,\n        paddingTop: 2,\n        paddingBottom: 2\n      };\n      this.shape = {\n        x: 0,\n        y: 0,\n        type: 'rect',\n        width: '100%',\n        // accepts percentage as well as fixed numbers\n        height: 50,\n        appendTo: '.apexcharts-annotations',\n        backgroundColor: '#fff',\n        opacity: 1,\n        borderWidth: 0,\n        borderRadius: 4,\n        borderColor: '#c2c2c2'\n      };\n    }\n\n    _createClass(Options, [{\n      key: \"init\",\n      value: function init() {\n        return {\n          annotations: {\n            position: 'front',\n            yaxis: [this.yAxisAnnotation],\n            xaxis: [this.xAxisAnnotation],\n            points: [this.pointAnnotation],\n            texts: [],\n            images: [],\n            shapes: []\n          },\n          chart: {\n            animations: {\n              enabled: true,\n              easing: 'easeinout',\n              // linear, easeout, easein, easeinout, swing, bounce, elastic\n              speed: 800,\n              animateGradually: {\n                delay: 150,\n                enabled: true\n              },\n              dynamicAnimation: {\n                enabled: true,\n                speed: 350\n              }\n            },\n            background: 'transparent',\n            locales: [en],\n            defaultLocale: 'en',\n            dropShadow: {\n              enabled: false,\n              enabledOnSeries: undefined,\n              top: 2,\n              left: 2,\n              blur: 4,\n              color: '#000',\n              opacity: 0.35\n            },\n            events: {\n              animationEnd: undefined,\n              beforeMount: undefined,\n              mounted: undefined,\n              updated: undefined,\n              click: undefined,\n              mouseMove: undefined,\n              legendClick: undefined,\n              markerClick: undefined,\n              selection: undefined,\n              dataPointSelection: undefined,\n              dataPointMouseEnter: undefined,\n              dataPointMouseLeave: undefined,\n              beforeZoom: undefined,\n              zoomed: undefined,\n              scrolled: undefined\n            },\n            foreColor: '#373d3f',\n            fontFamily: 'Helvetica, Arial, sans-serif',\n            height: 'auto',\n            parentHeightOffset: 15,\n            redrawOnParentResize: true,\n            id: undefined,\n            group: undefined,\n            offsetX: 0,\n            offsetY: 0,\n            selection: {\n              enabled: false,\n              type: 'x',\n              // selectedPoints: undefined, // default datapoints that should be selected automatically\n              fill: {\n                color: '#24292e',\n                opacity: 0.1\n              },\n              stroke: {\n                width: 1,\n                color: '#24292e',\n                opacity: 0.4,\n                dashArray: 3\n              },\n              xaxis: {\n                min: undefined,\n                max: undefined\n              },\n              yaxis: {\n                min: undefined,\n                max: undefined\n              }\n            },\n            sparkline: {\n              enabled: false\n            },\n            brush: {\n              enabled: false,\n              autoScaleYaxis: true,\n              target: undefined\n            },\n            stacked: false,\n            stackType: 'normal',\n            toolbar: {\n              show: true,\n              offsetX: 0,\n              offsetY: 0,\n              tools: {\n                download: true,\n                selection: true,\n                zoom: true,\n                zoomin: true,\n                zoomout: true,\n                pan: true,\n                reset: true,\n                customIcons: []\n              },\n              autoSelected: 'zoom' // accepts -> zoom, pan, selection\n\n            },\n            type: 'line',\n            width: '100%',\n            zoom: {\n              enabled: true,\n              type: 'x',\n              autoScaleYaxis: false,\n              zoomedArea: {\n                fill: {\n                  color: '#90CAF9',\n                  opacity: 0.4\n                },\n                stroke: {\n                  color: '#0D47A1',\n                  opacity: 0.4,\n                  width: 1\n                }\n              }\n            }\n          },\n          plotOptions: {\n            bar: {\n              horizontal: false,\n              columnWidth: '70%',\n              // should be in percent 0 - 100\n              barHeight: '70%',\n              // should be in percent 0 - 100\n              distributed: false,\n              startingShape: 'flat',\n              endingShape: 'flat',\n              colors: {\n                ranges: [],\n                backgroundBarColors: [],\n                backgroundBarOpacity: 1,\n                backgroundBarRadius: 0\n              },\n              dataLabels: {\n                position: 'top',\n                // top, center, bottom\n                maxItems: 100,\n                hideOverflowingLabels: true,\n                orientation: 'horizontal' // TODO: provide stackedLabels for stacked charts which gives additions of values\n\n              }\n            },\n            bubble: {\n              minBubbleRadius: undefined,\n              maxBubbleRadius: undefined\n            },\n            candlestick: {\n              colors: {\n                upward: '#00B746',\n                downward: '#EF403C'\n              },\n              wick: {\n                useFillColor: true\n              }\n            },\n            heatmap: {\n              radius: 2,\n              enableShades: true,\n              shadeIntensity: 0.5,\n              reverseNegativeShade: false,\n              distributed: false,\n              useFillColorAsStroke: false,\n              colorScale: {\n                inverse: false,\n                ranges: [],\n                min: undefined,\n                max: undefined\n              }\n            },\n            radialBar: {\n              inverseOrder: false,\n              startAngle: 0,\n              endAngle: 360,\n              offsetX: 0,\n              offsetY: 0,\n              hollow: {\n                margin: 5,\n                size: '50%',\n                background: 'transparent',\n                image: undefined,\n                imageWidth: 150,\n                imageHeight: 150,\n                imageOffsetX: 0,\n                imageOffsetY: 0,\n                imageClipped: true,\n                position: 'front',\n                dropShadow: {\n                  enabled: false,\n                  top: 0,\n                  left: 0,\n                  blur: 3,\n                  color: '#000',\n                  opacity: 0.5\n                }\n              },\n              track: {\n                show: true,\n                startAngle: undefined,\n                endAngle: undefined,\n                background: '#f2f2f2',\n                strokeWidth: '97%',\n                opacity: 1,\n                margin: 5,\n                // margin is in pixels\n                dropShadow: {\n                  enabled: false,\n                  top: 0,\n                  left: 0,\n                  blur: 3,\n                  color: '#000',\n                  opacity: 0.5\n                }\n              },\n              dataLabels: {\n                show: true,\n                name: {\n                  show: true,\n                  fontSize: '16px',\n                  fontFamily: undefined,\n                  fontWeight: 600,\n                  color: undefined,\n                  offsetY: 0,\n                  formatter: function formatter(val) {\n                    return val;\n                  }\n                },\n                value: {\n                  show: true,\n                  fontSize: '14px',\n                  fontFamily: undefined,\n                  fontWeight: 400,\n                  color: undefined,\n                  offsetY: 16,\n                  formatter: function formatter(val) {\n                    return val + '%';\n                  }\n                },\n                total: {\n                  show: false,\n                  label: 'Total',\n                  fontSize: '16px',\n                  fontWeight: 600,\n                  fontFamily: undefined,\n                  color: undefined,\n                  formatter: function formatter(w) {\n                    return w.globals.seriesTotals.reduce(function (a, b) {\n                      return a + b;\n                    }, 0) / w.globals.series.length + '%';\n                  }\n                }\n              }\n            },\n            pie: {\n              customScale: 1,\n              offsetX: 0,\n              offsetY: 0,\n              expandOnClick: true,\n              dataLabels: {\n                // These are the percentage values which are displayed on slice\n                offset: 0,\n                // offset by which labels will move outside\n                minAngleToShowLabel: 10\n              },\n              donut: {\n                size: '65%',\n                background: 'transparent',\n                labels: {\n                  // These are the inner labels appearing inside donut\n                  show: false,\n                  name: {\n                    show: true,\n                    fontSize: '16px',\n                    fontFamily: undefined,\n                    fontWeight: 600,\n                    color: undefined,\n                    offsetY: -10,\n                    formatter: function formatter(val) {\n                      return val;\n                    }\n                  },\n                  value: {\n                    show: true,\n                    fontSize: '20px',\n                    fontFamily: undefined,\n                    fontWeight: 400,\n                    color: undefined,\n                    offsetY: 10,\n                    formatter: function formatter(val) {\n                      return val;\n                    }\n                  },\n                  total: {\n                    show: false,\n                    showAlways: false,\n                    label: 'Total',\n                    fontSize: '16px',\n                    fontWeight: 400,\n                    fontFamily: undefined,\n                    color: undefined,\n                    formatter: function formatter(w) {\n                      return w.globals.seriesTotals.reduce(function (a, b) {\n                        return a + b;\n                      }, 0);\n                    }\n                  }\n                }\n              }\n            },\n            radar: {\n              size: undefined,\n              offsetX: 0,\n              offsetY: 0,\n              polygons: {\n                // strokeColor: '#e8e8e8', // should be deprecated in the minor version i.e 3.2\n                strokeColors: '#e8e8e8',\n                connectorColors: '#e8e8e8',\n                fill: {\n                  colors: undefined\n                }\n              }\n            }\n          },\n          colors: undefined,\n          dataLabels: {\n            enabled: true,\n            enabledOnSeries: undefined,\n            formatter: function formatter(val) {\n              return val !== null ? val : '';\n            },\n            textAnchor: 'middle',\n            distributed: false,\n            offsetX: 0,\n            offsetY: 0,\n            style: {\n              fontSize: '12px',\n              fontFamily: undefined,\n              fontWeight: 600,\n              colors: undefined\n            },\n            background: {\n              enabled: true,\n              foreColor: '#fff',\n              borderRadius: 2,\n              padding: 4,\n              opacity: 0.9,\n              borderWidth: 1,\n              borderColor: '#fff',\n              dropShadow: {\n                enabled: false,\n                top: 1,\n                left: 1,\n                blur: 1,\n                color: '#000',\n                opacity: 0.45\n              }\n            },\n            dropShadow: {\n              enabled: false,\n              top: 1,\n              left: 1,\n              blur: 1,\n              color: '#000',\n              opacity: 0.45\n            }\n          },\n          fill: {\n            type: 'solid',\n            colors: undefined,\n            // array of colors\n            opacity: 0.85,\n            gradient: {\n              shade: 'dark',\n              type: 'horizontal',\n              shadeIntensity: 0.5,\n              gradientToColors: undefined,\n              inverseColors: true,\n              opacityFrom: 1,\n              opacityTo: 1,\n              stops: [0, 50, 100],\n              colorStops: []\n            },\n            image: {\n              src: [],\n              width: undefined,\n              // optional\n              height: undefined // optional\n\n            },\n            pattern: {\n              style: 'squares',\n              // String | Array of Strings\n              width: 6,\n              height: 6,\n              strokeWidth: 2\n            }\n          },\n          grid: {\n            show: true,\n            borderColor: '#e0e0e0',\n            strokeDashArray: 0,\n            position: 'back',\n            xaxis: {\n              lines: {\n                show: false\n              }\n            },\n            yaxis: {\n              lines: {\n                show: true\n              }\n            },\n            row: {\n              colors: undefined,\n              // takes as array which will be repeated on rows\n              opacity: 0.5\n            },\n            column: {\n              colors: undefined,\n              // takes an array which will be repeated on columns\n              opacity: 0.5\n            },\n            padding: {\n              top: 0,\n              right: 10,\n              bottom: 0,\n              left: 12\n            }\n          },\n          labels: [],\n          legend: {\n            show: true,\n            showForSingleSeries: false,\n            showForNullSeries: true,\n            showForZeroSeries: true,\n            floating: false,\n            position: 'bottom',\n            // whether to position legends in 1 of 4\n            // direction - top, bottom, left, right\n            horizontalAlign: 'center',\n            // when position top/bottom, you can specify whether to align legends left, right or center\n            inverseOrder: false,\n            fontSize: '12px',\n            fontFamily: undefined,\n            fontWeight: 400,\n            width: undefined,\n            height: undefined,\n            formatter: undefined,\n            tooltipHoverFormatter: undefined,\n            offsetX: -20,\n            offsetY: 0,\n            labels: {\n              colors: undefined,\n              useSeriesColors: false\n            },\n            markers: {\n              width: 12,\n              height: 12,\n              strokeWidth: 0,\n              fillColors: undefined,\n              strokeColor: '#fff',\n              radius: 12,\n              customHTML: undefined,\n              offsetX: 0,\n              offsetY: 0,\n              onClick: undefined\n            },\n            itemMargin: {\n              horizontal: 5,\n              vertical: 0\n            },\n            onItemClick: {\n              toggleDataSeries: true\n            },\n            onItemHover: {\n              highlightDataSeries: true\n            }\n          },\n          markers: {\n            discrete: [],\n            size: 0,\n            colors: undefined,\n            //strokeColor: '#fff', // TODO: deprecate in major version 4.0\n            strokeColors: '#fff',\n            strokeWidth: 2,\n            strokeOpacity: 0.9,\n            strokeDashArray: 0,\n            fillOpacity: 1,\n            shape: 'circle',\n            radius: 2,\n            offsetX: 0,\n            offsetY: 0,\n            onClick: undefined,\n            onDblClick: undefined,\n            showNullDataPoints: true,\n            hover: {\n              size: undefined,\n              sizeOffset: 3\n            }\n          },\n          noData: {\n            text: undefined,\n            align: 'center',\n            verticalAlign: 'middle',\n            offsetX: 0,\n            offsetY: 0,\n            style: {\n              color: undefined,\n              fontSize: '14px',\n              fontFamily: undefined\n            }\n          },\n          responsive: [],\n          // breakpoints should follow ascending order 400, then 700, then 1000\n          series: undefined,\n          states: {\n            normal: {\n              filter: {\n                type: 'none',\n                value: 0\n              }\n            },\n            hover: {\n              filter: {\n                type: 'lighten',\n                value: 0.15\n              }\n            },\n            active: {\n              allowMultipleDataPointsSelection: false,\n              filter: {\n                type: 'darken',\n                value: 0.65\n              }\n            }\n          },\n          title: {\n            text: undefined,\n            align: 'left',\n            margin: 5,\n            offsetX: 0,\n            offsetY: 0,\n            floating: false,\n            style: {\n              fontSize: '14px',\n              fontWeight: 900,\n              fontFamily: undefined,\n              color: undefined\n            }\n          },\n          subtitle: {\n            text: undefined,\n            align: 'left',\n            margin: 5,\n            offsetX: 0,\n            offsetY: 30,\n            floating: false,\n            style: {\n              fontSize: '12px',\n              fontWeight: 400,\n              fontFamily: undefined,\n              color: undefined\n            }\n          },\n          stroke: {\n            show: true,\n            curve: 'smooth',\n            // \"smooth\" / \"straight\" / \"stepline\"\n            lineCap: 'butt',\n            // round, butt , square\n            width: 2,\n            colors: undefined,\n            // array of colors\n            dashArray: 0 // single value or array of values\n\n          },\n          tooltip: {\n            enabled: true,\n            enabledOnSeries: undefined,\n            shared: true,\n            followCursor: false,\n            // when disabled, the tooltip will show on top of the series instead of mouse position\n            intersect: false,\n            // when enabled, tooltip will only show when user directly hovers over point\n            inverseOrder: false,\n            custom: undefined,\n            fillSeriesColor: false,\n            theme: 'light',\n            style: {\n              fontSize: '12px',\n              fontFamily: undefined\n            },\n            onDatasetHover: {\n              highlightDataSeries: false\n            },\n            x: {\n              // x value\n              show: true,\n              format: 'dd MMM',\n              // dd/MM, dd MMM yy, dd MMM yyyy\n              formatter: undefined // a custom user supplied formatter function\n\n            },\n            y: {\n              formatter: undefined,\n              title: {\n                formatter: function formatter(seriesName) {\n                  return seriesName;\n                }\n              }\n            },\n            z: {\n              formatter: undefined,\n              title: 'Size: '\n            },\n            marker: {\n              show: true,\n              fillColors: undefined\n            },\n            items: {\n              display: 'flex'\n            },\n            fixed: {\n              enabled: false,\n              position: 'topRight',\n              // topRight, topLeft, bottomRight, bottomLeft\n              offsetX: 0,\n              offsetY: 0\n            }\n          },\n          xaxis: {\n            type: 'category',\n            categories: [],\n            convertedCatToNumeric: false,\n            // internal property which should not be altered outside\n            sorted: true,\n            offsetX: 0,\n            offsetY: 0,\n            labels: {\n              show: true,\n              rotate: -45,\n              rotateAlways: false,\n              hideOverlappingLabels: true,\n              trim: false,\n              minHeight: undefined,\n              maxHeight: 120,\n              showDuplicates: true,\n              style: {\n                colors: [],\n                fontSize: '12px',\n                fontWeight: 400,\n                fontFamily: undefined,\n                cssClass: ''\n              },\n              offsetX: 0,\n              offsetY: 0,\n              format: undefined,\n              formatter: undefined,\n              // custom formatter function which will override format\n              datetimeUTC: true,\n              datetimeFormatter: {\n                year: 'yyyy',\n                month: \"MMM 'yy\",\n                day: 'dd MMM',\n                hour: 'HH:mm',\n                minute: 'HH:mm:ss'\n              }\n            },\n            axisBorder: {\n              show: true,\n              color: '#e0e0e0',\n              width: '100%',\n              height: 1,\n              offsetX: 0,\n              offsetY: 0\n            },\n            axisTicks: {\n              show: true,\n              color: '#e0e0e0',\n              height: 6,\n              offsetX: 0,\n              offsetY: 0\n            },\n            tickAmount: undefined,\n            tickPlacement: 'on',\n            min: undefined,\n            max: undefined,\n            range: undefined,\n            floating: false,\n            position: 'bottom',\n            title: {\n              text: undefined,\n              offsetX: 0,\n              offsetY: 0,\n              style: {\n                color: undefined,\n                fontSize: '12px',\n                fontWeight: 900,\n                fontFamily: undefined,\n                cssClass: ''\n              }\n            },\n            crosshairs: {\n              show: true,\n              width: 1,\n              // tickWidth/barWidth or an integer\n              position: 'back',\n              opacity: 0.9,\n              stroke: {\n                color: '#b6b6b6',\n                width: 1,\n                dashArray: 3\n              },\n              fill: {\n                type: 'solid',\n                // solid, gradient\n                color: '#B1B9C4',\n                gradient: {\n                  colorFrom: '#D8E3F0',\n                  colorTo: '#BED1E6',\n                  stops: [0, 100],\n                  opacityFrom: 0.4,\n                  opacityTo: 0.5\n                }\n              },\n              dropShadow: {\n                enabled: false,\n                left: 0,\n                top: 0,\n                blur: 1,\n                opacity: 0.4\n              }\n            },\n            tooltip: {\n              enabled: true,\n              offsetY: 0,\n              formatter: undefined,\n              style: {\n                fontSize: '12px',\n                fontFamily: undefined\n              }\n            }\n          },\n          yaxis: this.yAxis,\n          theme: {\n            mode: 'light',\n            palette: 'palette1',\n            // If defined, it will overwrite globals.colors variable\n            monochrome: {\n              // monochrome allows you to select just 1 color and fill out the rest with light/dark shade (intensity can be selected)\n              enabled: false,\n              color: '#008FFB',\n              shadeTo: 'light',\n              shadeIntensity: 0.65\n            }\n          }\n        };\n      }\n    }]);\n\n    return Options;\n  }();\n\n  /**\n   * ApexCharts Annotations Class for drawing lines/rects on both xaxis and yaxis.\n   *\n   * @module Annotations\n   **/\n\n  var Annotations = /*#__PURE__*/function () {\n    function Annotations(ctx) {\n      _classCallCheck(this, Annotations);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.graphics = new Graphics(this.ctx);\n\n      if (this.w.globals.isBarHorizontal) {\n        this.invertAxis = true;\n      }\n\n      this.helpers = new Helpers(this);\n      this.xAxisAnnotations = new XAnnotations(this);\n      this.yAxisAnnotations = new YAnnotations(this);\n      this.pointsAnnotations = new PointAnnotations(this);\n\n      if (this.w.globals.isBarHorizontal && this.w.config.yaxis[0].reversed) {\n        this.inversedReversedAxis = true;\n      }\n\n      this.xDivision = this.w.globals.gridWidth / this.w.globals.dataPoints;\n    }\n\n    _createClass(Annotations, [{\n      key: \"drawAxesAnnotations\",\n      value: function drawAxesAnnotations() {\n        var w = this.w;\n\n        if (w.globals.axisCharts) {\n          var yAnnotations = this.yAxisAnnotations.drawYAxisAnnotations();\n          var xAnnotations = this.xAxisAnnotations.drawXAxisAnnotations();\n          var pointAnnotations = this.pointsAnnotations.drawPointAnnotations();\n          var initialAnim = w.config.chart.animations.enabled;\n          var annoArray = [yAnnotations, xAnnotations, pointAnnotations];\n          var annoElArray = [xAnnotations.node, yAnnotations.node, pointAnnotations.node];\n\n          for (var i = 0; i < 3; i++) {\n            w.globals.dom.elGraphical.add(annoArray[i]);\n\n            if (initialAnim && !w.globals.resized && !w.globals.dataChanged) {\n              // fixes apexcharts/apexcharts.js#685\n              if (w.config.chart.type !== 'scatter' && w.config.chart.type !== 'bubble' && w.globals.dataPoints > 1) {\n                annoElArray[i].classList.add('apexcharts-element-hidden');\n              }\n            }\n\n            w.globals.delayedElements.push({\n              el: annoElArray[i],\n              index: 0\n            });\n          } // background sizes needs to be calculated after text is drawn, so calling them last\n\n\n          this.helpers.annotationsBackground();\n        }\n      }\n    }, {\n      key: \"drawShapeAnnos\",\n      value: function drawShapeAnnos() {\n        var _this = this;\n\n        var w = this.w;\n        w.config.annotations.shapes.map(function (s, index) {\n          _this.addShape(s, index);\n        });\n      }\n    }, {\n      key: \"drawImageAnnos\",\n      value: function drawImageAnnos() {\n        var _this2 = this;\n\n        var w = this.w;\n        w.config.annotations.images.map(function (s, index) {\n          _this2.addImage(s, index);\n        });\n      }\n    }, {\n      key: \"drawTextAnnos\",\n      value: function drawTextAnnos() {\n        var _this3 = this;\n\n        var w = this.w;\n        w.config.annotations.texts.map(function (t, index) {\n          _this3.addText(t, index);\n        });\n      }\n    }, {\n      key: \"addXaxisAnnotation\",\n      value: function addXaxisAnnotation(anno, parent, index) {\n        this.xAxisAnnotations.addXaxisAnnotation(anno, parent, index);\n      }\n    }, {\n      key: \"addYaxisAnnotation\",\n      value: function addYaxisAnnotation(anno, parent, index) {\n        this.yAxisAnnotations.addYaxisAnnotation(anno, parent, index);\n      }\n    }, {\n      key: \"addPointAnnotation\",\n      value: function addPointAnnotation(anno, parent, index) {\n        this.pointsAnnotations.addPointAnnotation(anno, parent, index);\n      }\n    }, {\n      key: \"addText\",\n      value: function addText(params, index) {\n        var x = params.x,\n            y = params.y,\n            text = params.text,\n            textAnchor = params.textAnchor,\n            foreColor = params.foreColor,\n            fontSize = params.fontSize,\n            fontFamily = params.fontFamily,\n            fontWeight = params.fontWeight,\n            cssClass = params.cssClass,\n            backgroundColor = params.backgroundColor,\n            borderWidth = params.borderWidth,\n            strokeDashArray = params.strokeDashArray,\n            borderRadius = params.borderRadius,\n            borderColor = params.borderColor,\n            _params$appendTo = params.appendTo,\n            appendTo = _params$appendTo === void 0 ? '.apexcharts-annotations' : _params$appendTo,\n            _params$paddingLeft = params.paddingLeft,\n            paddingLeft = _params$paddingLeft === void 0 ? 4 : _params$paddingLeft,\n            _params$paddingRight = params.paddingRight,\n            paddingRight = _params$paddingRight === void 0 ? 4 : _params$paddingRight,\n            _params$paddingBottom = params.paddingBottom,\n            paddingBottom = _params$paddingBottom === void 0 ? 2 : _params$paddingBottom,\n            _params$paddingTop = params.paddingTop,\n            paddingTop = _params$paddingTop === void 0 ? 2 : _params$paddingTop;\n        var w = this.w;\n        var elText = this.graphics.drawText({\n          x: x,\n          y: y,\n          text: text,\n          textAnchor: textAnchor || 'start',\n          fontSize: fontSize || '12px',\n          fontWeight: fontWeight || 'regular',\n          fontFamily: fontFamily || w.config.chart.fontFamily,\n          foreColor: foreColor || w.config.chart.foreColor,\n          cssClass: 'apexcharts-text ' + cssClass ? cssClass : ''\n        });\n        var parent = w.globals.dom.baseEl.querySelector(appendTo);\n\n        if (parent) {\n          parent.appendChild(elText.node);\n        }\n\n        var textRect = elText.bbox();\n\n        if (params.draggable) {\n          this.helpers.makeAnnotationDraggable(elText, 'texts', index);\n        }\n\n        if (text) {\n          var elRect = this.graphics.drawRect(textRect.x - paddingLeft, textRect.y - paddingTop, textRect.width + paddingLeft + paddingRight, textRect.height + paddingBottom + paddingTop, borderRadius, backgroundColor ? backgroundColor : 'transparent', 1, borderWidth, borderColor, strokeDashArray);\n          parent.insertBefore(elRect.node, elText.node);\n        }\n      }\n    }, {\n      key: \"addShape\",\n      value: function addShape(params, index) {\n        var opts = {\n          type: params.type,\n          x: params.x || 0,\n          y: params.y || 0,\n          width: params.width || '100%',\n          height: params.height || 50,\n          circleRadius: params.radius || 25,\n          backgroundColor: params.backgroundColor || '#fff',\n          opacity: params.opacity || 1,\n          borderWidth: params.borderWidth || 0,\n          borderRadius: params.borderRadius || 4,\n          borderColor: params.borderColor || '#c2c2c2',\n          appendTo: params.appendTo || '.apexcharts-annotations'\n        };\n        var w = this.w;\n\n        if (String(opts.width).indexOf('%') > -1) {\n          opts.width = parseInt(opts.width, 10) * parseInt(w.globals.svgWidth, 10) / 100;\n        }\n\n        var elShape = null;\n\n        if (opts.type === 'circle') {\n          elShape = this.graphics.drawCircle(opts.circleRadius, {\n            fill: opts.backgroundColor,\n            stroke: opts.borderColor,\n            'stroke-width': opts.borderWidth,\n            opacity: opts.opacity,\n            cx: opts.x,\n            cy: opts.y\n          });\n        } else {\n          elShape = this.graphics.drawRect(opts.x, opts.y, opts.width, opts.height, opts.borderRadius, opts.backgroundColor, opts.opacity, opts.borderWidth, opts.borderColor);\n        }\n\n        var parent = w.globals.dom.baseEl.querySelector(opts.appendTo);\n\n        if (parent) {\n          parent.appendChild(elShape.node);\n        }\n\n        if (params.draggable) {\n          this.helpers.makeAnnotationDraggable(elShape, 'shapes', index);\n          elShape.node.classList.add('apexcharts-resizable-element');\n        }\n      }\n    }, {\n      key: \"addImage\",\n      value: function addImage(params, index) {\n        var w = this.w;\n        var path = params.path,\n            _params$x = params.x,\n            x = _params$x === void 0 ? 0 : _params$x,\n            _params$y = params.y,\n            y = _params$y === void 0 ? 0 : _params$y,\n            _params$width = params.width,\n            width = _params$width === void 0 ? 20 : _params$width,\n            _params$height = params.height,\n            height = _params$height === void 0 ? 20 : _params$height,\n            _params$appendTo2 = params.appendTo,\n            appendTo = _params$appendTo2 === void 0 ? '.apexcharts-annotations' : _params$appendTo2;\n        var img = w.globals.dom.Paper.image(path);\n        img.size(width, height).move(x, y);\n        var parent = w.globals.dom.baseEl.querySelector(appendTo);\n\n        if (parent) {\n          parent.appendChild(img.node);\n        }\n\n        if (params.draggable) {\n          this.helpers.makeAnnotationDraggable(img, 'images', index);\n          img.node.classList.add('apexcharts-resizable-element');\n        }\n      } // The addXaxisAnnotation method requires a parent class, and user calling this method externally on the chart instance may not specify parent, hence a different method\n\n    }, {\n      key: \"addXaxisAnnotationExternal\",\n      value: function addXaxisAnnotationExternal(params, pushToMemory, context) {\n        this.addAnnotationExternal({\n          params: params,\n          pushToMemory: pushToMemory,\n          context: context,\n          type: 'xaxis',\n          contextMethod: context.addXaxisAnnotation\n        });\n        return context;\n      }\n    }, {\n      key: \"addYaxisAnnotationExternal\",\n      value: function addYaxisAnnotationExternal(params, pushToMemory, context) {\n        this.addAnnotationExternal({\n          params: params,\n          pushToMemory: pushToMemory,\n          context: context,\n          type: 'yaxis',\n          contextMethod: context.addYaxisAnnotation\n        });\n        return context;\n      }\n    }, {\n      key: \"addPointAnnotationExternal\",\n      value: function addPointAnnotationExternal(params, pushToMemory, context) {\n        if (typeof this.invertAxis === 'undefined') {\n          this.invertAxis = context.w.globals.isBarHorizontal;\n        }\n\n        this.addAnnotationExternal({\n          params: params,\n          pushToMemory: pushToMemory,\n          context: context,\n          type: 'point',\n          contextMethod: context.addPointAnnotation\n        });\n        return context;\n      }\n    }, {\n      key: \"addAnnotationExternal\",\n      value: function addAnnotationExternal(_ref) {\n        var params = _ref.params,\n            pushToMemory = _ref.pushToMemory,\n            context = _ref.context,\n            type = _ref.type,\n            contextMethod = _ref.contextMethod;\n        var me = context;\n        var w = me.w;\n        var parent = w.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(type, \"-annotations\"));\n        var index = parent.childNodes.length + 1;\n        var options = new Options();\n        var axesAnno = Object.assign({}, type === 'xaxis' ? options.xAxisAnnotation : type === 'yaxis' ? options.yAxisAnnotation : options.pointAnnotation);\n        var anno = Utils.extend(axesAnno, params);\n\n        switch (type) {\n          case 'xaxis':\n            this.addXaxisAnnotation(anno, parent, index);\n            break;\n\n          case 'yaxis':\n            this.addYaxisAnnotation(anno, parent, index);\n            break;\n\n          case 'point':\n            this.addPointAnnotation(anno, parent, index);\n            break;\n        } // add background\n\n\n        var axesAnnoLabel = w.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(type, \"-annotations .apexcharts-\").concat(type, \"-annotation-label[rel='\").concat(index, \"']\"));\n        var elRect = this.helpers.addBackgroundToAnno(axesAnnoLabel, anno);\n\n        if (elRect) {\n          parent.insertBefore(elRect.node, axesAnnoLabel);\n        }\n\n        if (pushToMemory) {\n          w.globals.memory.methodsToExec.push({\n            context: me,\n            id: anno.id ? anno.id : Utils.randomId(),\n            method: contextMethod,\n            label: 'addAnnotation',\n            params: params\n          });\n        }\n\n        return context;\n      }\n    }, {\n      key: \"clearAnnotations\",\n      value: function clearAnnotations(ctx) {\n        var w = ctx.w;\n        var annos = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations'); // annotations added externally should be cleared out too\n\n        w.globals.memory.methodsToExec.map(function (m, i) {\n          if (m.label === 'addText' || m.label === 'addAnnotation') {\n            w.globals.memory.methodsToExec.splice(i, 1);\n          }\n        });\n        annos = Utils.listToArray(annos); // delete the DOM elements\n\n        Array.prototype.forEach.call(annos, function (a) {\n          while (a.firstChild) {\n            a.removeChild(a.firstChild);\n          }\n        });\n      }\n    }, {\n      key: \"removeAnnotation\",\n      value: function removeAnnotation(ctx, id) {\n        var w = ctx.w;\n        var annos = w.globals.dom.baseEl.querySelectorAll(\".\".concat(id));\n\n        if (annos) {\n          w.globals.memory.methodsToExec.map(function (m, i) {\n            if (m.id === id) {\n              w.globals.memory.methodsToExec.splice(i, 1);\n            }\n          });\n          Array.prototype.forEach.call(annos, function (a) {\n            a.parentElement.removeChild(a);\n          });\n        }\n      }\n    }]);\n\n    return Annotations;\n  }();\n\n  /**\n   * DateTime Class to manipulate datetime values.\n   *\n   * @module DateTime\n   **/\n\n  var DateTime = /*#__PURE__*/function () {\n    function DateTime(ctx) {\n      _classCallCheck(this, DateTime);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.months31 = [1, 3, 5, 7, 8, 10, 12];\n      this.months30 = [2, 4, 6, 9, 11];\n      this.daysCntOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\n    }\n\n    _createClass(DateTime, [{\n      key: \"isValidDate\",\n      value: function isValidDate(date) {\n        return !isNaN(this.parseDate(date));\n      }\n    }, {\n      key: \"getTimeStamp\",\n      value: function getTimeStamp(dateStr) {\n        if (!Date.parse(dateStr)) {\n          return dateStr;\n        }\n\n        var utc = this.w.config.xaxis.labels.datetimeUTC;\n        return !utc ? new Date(dateStr).getTime() : new Date(new Date(dateStr).toISOString().substr(0, 25)).getTime();\n      }\n    }, {\n      key: \"getDate\",\n      value: function getDate(timestamp) {\n        var utc = this.w.config.xaxis.labels.datetimeUTC;\n        return utc ? new Date(new Date(timestamp).toUTCString()) : new Date(timestamp);\n      }\n    }, {\n      key: \"parseDate\",\n      value: function parseDate(dateStr) {\n        var parsed = Date.parse(dateStr);\n\n        if (!isNaN(parsed)) {\n          return this.getTimeStamp(dateStr);\n        }\n\n        var output = Date.parse(dateStr.replace(/-/g, '/').replace(/[a-z]+/gi, ' '));\n        output = this.getTimeStamp(output);\n        return output;\n      } // http://stackoverflow.com/questions/14638018/current-time-formatting-with-javascript#answer-14638191\n\n    }, {\n      key: \"formatDate\",\n      value: function formatDate(date, format) {\n        var locale = this.w.globals.locale;\n        var utc = this.w.config.xaxis.labels.datetimeUTC;\n        var MMMM = ['\\x00'].concat(_toConsumableArray(locale.months));\n        var MMM = ['\\x01'].concat(_toConsumableArray(locale.shortMonths));\n        var dddd = ['\\x02'].concat(_toConsumableArray(locale.days));\n        var ddd = ['\\x03'].concat(_toConsumableArray(locale.shortDays));\n\n        function ii(i, len) {\n          var s = i + '';\n          len = len || 2;\n\n          while (s.length < len) {\n            s = '0' + s;\n          }\n\n          return s;\n        }\n\n        var y = utc ? date.getUTCFullYear() : date.getFullYear();\n        format = format.replace(/(^|[^\\\\])yyyy+/g, '$1' + y);\n        format = format.replace(/(^|[^\\\\])yy/g, '$1' + y.toString().substr(2, 2));\n        format = format.replace(/(^|[^\\\\])y/g, '$1' + y);\n        var M = (utc ? date.getUTCMonth() : date.getMonth()) + 1;\n        format = format.replace(/(^|[^\\\\])MMMM+/g, '$1' + MMMM[0]);\n        format = format.replace(/(^|[^\\\\])MMM/g, '$1' + MMM[0]);\n        format = format.replace(/(^|[^\\\\])MM/g, '$1' + ii(M));\n        format = format.replace(/(^|[^\\\\])M/g, '$1' + M);\n        var d = utc ? date.getUTCDate() : date.getDate();\n        format = format.replace(/(^|[^\\\\])dddd+/g, '$1' + dddd[0]);\n        format = format.replace(/(^|[^\\\\])ddd/g, '$1' + ddd[0]);\n        format = format.replace(/(^|[^\\\\])dd/g, '$1' + ii(d));\n        format = format.replace(/(^|[^\\\\])d/g, '$1' + d);\n        var H = utc ? date.getUTCHours() : date.getHours();\n        format = format.replace(/(^|[^\\\\])HH+/g, '$1' + ii(H));\n        format = format.replace(/(^|[^\\\\])H/g, '$1' + H);\n        var h = H > 12 ? H - 12 : H === 0 ? 12 : H;\n        format = format.replace(/(^|[^\\\\])hh+/g, '$1' + ii(h));\n        format = format.replace(/(^|[^\\\\])h/g, '$1' + h);\n        var m = utc ? date.getUTCMinutes() : date.getMinutes();\n        format = format.replace(/(^|[^\\\\])mm+/g, '$1' + ii(m));\n        format = format.replace(/(^|[^\\\\])m/g, '$1' + m);\n        var s = utc ? date.getUTCSeconds() : date.getSeconds();\n        format = format.replace(/(^|[^\\\\])ss+/g, '$1' + ii(s));\n        format = format.replace(/(^|[^\\\\])s/g, '$1' + s);\n        var f = utc ? date.getUTCMilliseconds() : date.getMilliseconds();\n        format = format.replace(/(^|[^\\\\])fff+/g, '$1' + ii(f, 3));\n        f = Math.round(f / 10);\n        format = format.replace(/(^|[^\\\\])ff/g, '$1' + ii(f));\n        f = Math.round(f / 10);\n        format = format.replace(/(^|[^\\\\])f/g, '$1' + f);\n        var T = H < 12 ? 'AM' : 'PM';\n        format = format.replace(/(^|[^\\\\])TT+/g, '$1' + T);\n        format = format.replace(/(^|[^\\\\])T/g, '$1' + T.charAt(0));\n        var t = T.toLowerCase();\n        format = format.replace(/(^|[^\\\\])tt+/g, '$1' + t);\n        format = format.replace(/(^|[^\\\\])t/g, '$1' + t.charAt(0));\n        var tz = -date.getTimezoneOffset();\n        var K = utc || !tz ? 'Z' : tz > 0 ? '+' : '-';\n\n        if (!utc) {\n          tz = Math.abs(tz);\n          var tzHrs = Math.floor(tz / 60);\n          var tzMin = tz % 60;\n          K += ii(tzHrs) + ':' + ii(tzMin);\n        }\n\n        format = format.replace(/(^|[^\\\\])K/g, '$1' + K);\n        var day = (utc ? date.getUTCDay() : date.getDay()) + 1;\n        format = format.replace(new RegExp(dddd[0], 'g'), dddd[day]);\n        format = format.replace(new RegExp(ddd[0], 'g'), ddd[day]);\n        format = format.replace(new RegExp(MMMM[0], 'g'), MMMM[M]);\n        format = format.replace(new RegExp(MMM[0], 'g'), MMM[M]);\n        format = format.replace(/\\\\(.)/g, '$1');\n        return format;\n      }\n    }, {\n      key: \"getTimeUnitsfromTimestamp\",\n      value: function getTimeUnitsfromTimestamp(minX, maxX, utc) {\n        var w = this.w;\n\n        if (w.config.xaxis.min !== undefined) {\n          minX = w.config.xaxis.min;\n        }\n\n        if (w.config.xaxis.max !== undefined) {\n          maxX = w.config.xaxis.max;\n        }\n\n        var tsMin = this.getDate(minX);\n        var tsMax = this.getDate(maxX);\n        var minD = this.formatDate(tsMin, 'yyyy MM dd HH mm').split(' ');\n        var maxD = this.formatDate(tsMax, 'yyyy MM dd HH mm').split(' ');\n        return {\n          minMinute: parseInt(minD[4], 10),\n          maxMinute: parseInt(maxD[4], 10),\n          minHour: parseInt(minD[3], 10),\n          maxHour: parseInt(maxD[3], 10),\n          minDate: parseInt(minD[2], 10),\n          maxDate: parseInt(maxD[2], 10),\n          minMonth: parseInt(minD[1], 10) - 1,\n          maxMonth: parseInt(maxD[1], 10) - 1,\n          minYear: parseInt(minD[0], 10),\n          maxYear: parseInt(maxD[0], 10)\n        };\n      }\n    }, {\n      key: \"isLeapYear\",\n      value: function isLeapYear(year) {\n        return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n      }\n    }, {\n      key: \"calculcateLastDaysOfMonth\",\n      value: function calculcateLastDaysOfMonth(month, year, subtract) {\n        var days = this.determineDaysOfMonths(month, year); // whatever days we get, subtract the number of days asked\n\n        return days - subtract;\n      }\n    }, {\n      key: \"determineDaysOfYear\",\n      value: function determineDaysOfYear(year) {\n        var days = 365;\n\n        if (this.isLeapYear(year)) {\n          days = 366;\n        }\n\n        return days;\n      }\n    }, {\n      key: \"determineRemainingDaysOfYear\",\n      value: function determineRemainingDaysOfYear(year, month, date) {\n        var dayOfYear = this.daysCntOfYear[month] + date;\n        if (month > 1 && this.isLeapYear()) dayOfYear++;\n        return dayOfYear;\n      }\n    }, {\n      key: \"determineDaysOfMonths\",\n      value: function determineDaysOfMonths(month, year) {\n        var days = 30;\n        month = Utils.monthMod(month);\n\n        switch (true) {\n          case this.months30.indexOf(month) > -1:\n            if (month === 2) {\n              if (this.isLeapYear(year)) {\n                days = 29;\n              } else {\n                days = 28;\n              }\n            }\n\n            break;\n\n          case this.months31.indexOf(month) > -1:\n            days = 31;\n            break;\n\n          default:\n            days = 31;\n            break;\n        }\n\n        return days;\n      }\n    }]);\n\n    return DateTime;\n  }();\n\n  /**\n   * ApexCharts Default Class for setting default options for all chart types.\n   *\n   * @module Defaults\n   **/\n\n  var Defaults = /*#__PURE__*/function () {\n    function Defaults(opts) {\n      _classCallCheck(this, Defaults);\n\n      this.opts = opts;\n    }\n\n    _createClass(Defaults, [{\n      key: \"line\",\n      value: function line() {\n        return {\n          chart: {\n            animations: {\n              easing: 'swing'\n            }\n          },\n          dataLabels: {\n            enabled: false\n          },\n          stroke: {\n            width: 5,\n            curve: 'straight'\n          },\n          markers: {\n            size: 0,\n            hover: {\n              sizeOffset: 6\n            }\n          },\n          xaxis: {\n            crosshairs: {\n              width: 1\n            }\n          }\n        };\n      }\n    }, {\n      key: \"sparkline\",\n      value: function sparkline(defaults) {\n        this.opts.yaxis[0].show = false;\n        this.opts.yaxis[0].title.text = '';\n        this.opts.yaxis[0].axisBorder.show = false;\n        this.opts.yaxis[0].axisTicks.show = false;\n        this.opts.yaxis[0].floating = true;\n        var ret = {\n          grid: {\n            show: false,\n            padding: {\n              left: 0,\n              right: 0,\n              top: 0,\n              bottom: 0\n            }\n          },\n          legend: {\n            show: false\n          },\n          xaxis: {\n            labels: {\n              show: false\n            },\n            tooltip: {\n              enabled: false\n            },\n            axisBorder: {\n              show: false\n            },\n            axisTicks: {\n              show: false\n            }\n          },\n          chart: {\n            toolbar: {\n              show: false\n            },\n            zoom: {\n              enabled: false\n            }\n          },\n          dataLabels: {\n            enabled: false\n          }\n        };\n        return Utils.extend(defaults, ret);\n      }\n    }, {\n      key: \"bar\",\n      value: function bar() {\n        return {\n          chart: {\n            stacked: false,\n            animations: {\n              easing: 'swing'\n            }\n          },\n          plotOptions: {\n            bar: {\n              dataLabels: {\n                position: 'center'\n              }\n            }\n          },\n          dataLabels: {\n            style: {\n              colors: ['#fff']\n            },\n            background: {\n              enabled: false\n            }\n          },\n          stroke: {\n            width: 0,\n            lineCap: 'square'\n          },\n          fill: {\n            opacity: 0.85\n          },\n          legend: {\n            markers: {\n              shape: 'square',\n              radius: 2,\n              size: 8\n            }\n          },\n          tooltip: {\n            shared: false\n          },\n          xaxis: {\n            tooltip: {\n              enabled: false\n            },\n            tickPlacement: 'between',\n            crosshairs: {\n              width: 'barWidth',\n              position: 'back',\n              fill: {\n                type: 'gradient'\n              },\n              dropShadow: {\n                enabled: false\n              },\n              stroke: {\n                width: 0\n              }\n            }\n          }\n        };\n      }\n    }, {\n      key: \"candlestick\",\n      value: function candlestick() {\n        return {\n          stroke: {\n            width: 1,\n            colors: ['#333']\n          },\n          fill: {\n            opacity: 1\n          },\n          dataLabels: {\n            enabled: false\n          },\n          tooltip: {\n            shared: true,\n            custom: function custom(_ref) {\n              var seriesIndex = _ref.seriesIndex,\n                  dataPointIndex = _ref.dataPointIndex,\n                  w = _ref.w;\n              var o = w.globals.seriesCandleO[seriesIndex][dataPointIndex];\n              var h = w.globals.seriesCandleH[seriesIndex][dataPointIndex];\n              var l = w.globals.seriesCandleL[seriesIndex][dataPointIndex];\n              var c = w.globals.seriesCandleC[seriesIndex][dataPointIndex];\n              return '<div class=\"apexcharts-tooltip-candlestick\">' + '<div>Open: <span class=\"value\">' + o + '</span></div>' + '<div>High: <span class=\"value\">' + h + '</span></div>' + '<div>Low: <span class=\"value\">' + l + '</span></div>' + '<div>Close: <span class=\"value\">' + c + '</span></div>' + '</div>';\n            }\n          },\n          states: {\n            active: {\n              filter: {\n                type: 'none'\n              }\n            }\n          },\n          xaxis: {\n            crosshairs: {\n              width: 1\n            }\n          }\n        };\n      }\n    }, {\n      key: \"rangeBar\",\n      value: function rangeBar() {\n        return {\n          stroke: {\n            width: 0,\n            lineCap: 'square'\n          },\n          plotOptions: {\n            bar: {\n              dataLabels: {\n                position: 'center'\n              }\n            }\n          },\n          dataLabels: {\n            enabled: false,\n            formatter: function formatter(val, _ref2) {\n              var ctx = _ref2.ctx,\n                  seriesIndex = _ref2.seriesIndex,\n                  dataPointIndex = _ref2.dataPointIndex,\n                  w = _ref2.w;\n              var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex];\n              var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex];\n              return end - start;\n            },\n            background: {\n              enabled: false\n            },\n            style: {\n              colors: ['#fff']\n            }\n          },\n          tooltip: {\n            shared: false,\n            followCursor: true,\n            custom: function custom(_ref3) {\n              var ctx = _ref3.ctx,\n                  seriesIndex = _ref3.seriesIndex,\n                  dataPointIndex = _ref3.dataPointIndex,\n                  y1 = _ref3.y1,\n                  y2 = _ref3.y2,\n                  w = _ref3.w;\n              var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex];\n              var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex];\n              var ylabel = w.globals.labels[dataPointIndex];\n              var seriesName = w.config.series[seriesIndex].name;\n              var yLbFormatter = w.config.tooltip.y.formatter;\n              var yLbTitleFormatter = w.config.tooltip.y.title.formatter;\n              var opts = {\n                w: w,\n                seriesIndex: seriesIndex,\n                dataPointIndex: dataPointIndex\n              };\n\n              if (typeof yLbTitleFormatter === 'function') {\n                seriesName = yLbTitleFormatter(seriesName, opts);\n              }\n\n              if (y1 && y2) {\n                start = y1;\n                end = y2;\n\n                if (w.config.series[seriesIndex].data[dataPointIndex].x) {\n                  ylabel = w.config.series[seriesIndex].data[dataPointIndex].x + ':';\n                }\n\n                if (typeof yLbFormatter === 'function') {\n                  ylabel = yLbFormatter(ylabel, opts);\n                }\n              }\n\n              var startVal = '';\n              var endVal = '';\n              var color = w.globals.colors[seriesIndex];\n\n              if (w.config.tooltip.x.formatter === undefined) {\n                if (w.config.xaxis.type === 'datetime') {\n                  var datetimeObj = new DateTime(ctx);\n                  startVal = datetimeObj.formatDate(datetimeObj.getDate(start), w.config.tooltip.x.format);\n                  endVal = datetimeObj.formatDate(datetimeObj.getDate(end), w.config.tooltip.x.format);\n                } else {\n                  startVal = start;\n                  endVal = end;\n                }\n              } else {\n                startVal = w.config.tooltip.x.formatter(start);\n                endVal = w.config.tooltip.x.formatter(end);\n              }\n\n              return '<div class=\"apexcharts-tooltip-rangebar\">' + '<div> <span class=\"series-name\" style=\"color: ' + color + '\">' + (seriesName ? seriesName : '') + '</span></div>' + '<div> <span class=\"category\">' + ylabel + ' </span> <span class=\"value start-value\">' + startVal + '</span> <span class=\"separator\">-</span> <span class=\"value end-value\">' + endVal + '</span></div>' + '</div>';\n            }\n          },\n          xaxis: {\n            tickPlacement: 'between',\n            tooltip: {\n              enabled: false\n            },\n            crosshairs: {\n              stroke: {\n                width: 0\n              }\n            }\n          }\n        };\n      }\n    }, {\n      key: \"area\",\n      value: function area() {\n        return {\n          stroke: {\n            width: 4\n          },\n          fill: {\n            type: 'gradient',\n            gradient: {\n              inverseColors: false,\n              shade: 'light',\n              type: 'vertical',\n              opacityFrom: 0.65,\n              opacityTo: 0.5,\n              stops: [0, 100, 100]\n            }\n          },\n          markers: {\n            size: 0,\n            hover: {\n              sizeOffset: 6\n            }\n          },\n          tooltip: {\n            followCursor: false\n          }\n        };\n      }\n    }, {\n      key: \"brush\",\n      value: function brush(defaults) {\n        var ret = {\n          chart: {\n            toolbar: {\n              autoSelected: 'selection',\n              show: false\n            },\n            zoom: {\n              enabled: false\n            }\n          },\n          dataLabels: {\n            enabled: false\n          },\n          stroke: {\n            width: 1\n          },\n          tooltip: {\n            enabled: false\n          },\n          xaxis: {\n            tooltip: {\n              enabled: false\n            }\n          }\n        };\n        return Utils.extend(defaults, ret);\n      }\n    }, {\n      key: \"stacked100\",\n      value: function stacked100(opts) {\n        opts.dataLabels = opts.dataLabels || {};\n        opts.dataLabels.formatter = opts.dataLabels.formatter || undefined;\n        var existingDataLabelFormatter = opts.dataLabels.formatter;\n        opts.yaxis.forEach(function (yaxe, index) {\n          opts.yaxis[index].min = 0;\n          opts.yaxis[index].max = 100;\n        });\n        var isBar = opts.chart.type === 'bar';\n\n        if (isBar) {\n          opts.dataLabels.formatter = existingDataLabelFormatter || function (val) {\n            if (typeof val === 'number') {\n              return val ? val.toFixed(0) + '%' : val;\n            }\n\n            return val;\n          };\n        }\n\n        return opts;\n      } // This function removes the left and right spacing in chart for line/area/scatter if xaxis type = category for those charts by converting xaxis = numeric. Numeric/Datetime xaxis prevents the unnecessary spacing in the left/right of the chart area\n\n    }, {\n      key: \"convertCatToNumeric\",\n      value: function convertCatToNumeric(opts) {\n        opts.xaxis.convertedCatToNumeric = true;\n        return opts;\n      }\n    }, {\n      key: \"convertCatToNumericXaxis\",\n      value: function convertCatToNumericXaxis(opts, ctx, cats) {\n        opts.xaxis.type = 'numeric';\n        opts.xaxis.labels = opts.xaxis.labels || {};\n\n        opts.xaxis.labels.formatter = opts.xaxis.labels.formatter || function (val) {\n          return Utils.isNumber(val) ? Math.floor(val) : val;\n        };\n\n        var defaultFormatter = opts.xaxis.labels.formatter;\n        var labels = opts.xaxis.categories && opts.xaxis.categories.length ? opts.xaxis.categories : opts.labels;\n\n        if (cats && cats.length) {\n          labels = cats.map(function (c) {\n            return c.toString();\n          });\n        }\n\n        if (labels && labels.length) {\n          opts.xaxis.labels.formatter = function (val) {\n            return Utils.isNumber(val) ? defaultFormatter(labels[Math.floor(val) - 1]) : defaultFormatter(val);\n          };\n        }\n\n        opts.xaxis.categories = [];\n        opts.labels = [];\n        opts.xaxis.tickAmount = opts.xaxis.tickAmount || 'dataPoints';\n        return opts;\n      }\n    }, {\n      key: \"bubble\",\n      value: function bubble() {\n        return {\n          dataLabels: {\n            style: {\n              colors: ['#fff']\n            }\n          },\n          tooltip: {\n            shared: false,\n            intersect: true\n          },\n          xaxis: {\n            crosshairs: {\n              width: 0\n            }\n          },\n          fill: {\n            type: 'solid',\n            gradient: {\n              shade: 'light',\n              inverse: true,\n              shadeIntensity: 0.55,\n              opacityFrom: 0.4,\n              opacityTo: 0.8\n            }\n          }\n        };\n      }\n    }, {\n      key: \"scatter\",\n      value: function scatter() {\n        return {\n          dataLabels: {\n            enabled: false\n          },\n          tooltip: {\n            shared: false,\n            intersect: true\n          },\n          markers: {\n            size: 6,\n            strokeWidth: 1,\n            hover: {\n              sizeOffset: 2\n            }\n          }\n        };\n      }\n    }, {\n      key: \"heatmap\",\n      value: function heatmap() {\n        return {\n          chart: {\n            stacked: false\n          },\n          fill: {\n            opacity: 1\n          },\n          dataLabels: {\n            style: {\n              colors: ['#fff']\n            }\n          },\n          stroke: {\n            colors: ['#fff']\n          },\n          tooltip: {\n            followCursor: true,\n            marker: {\n              show: false\n            },\n            x: {\n              show: false\n            }\n          },\n          legend: {\n            position: 'top',\n            markers: {\n              shape: 'square',\n              size: 10,\n              offsetY: 2\n            }\n          },\n          grid: {\n            padding: {\n              right: 20\n            }\n          }\n        };\n      }\n    }, {\n      key: \"pie\",\n      value: function pie() {\n        return {\n          chart: {\n            toolbar: {\n              show: false\n            }\n          },\n          plotOptions: {\n            pie: {\n              donut: {\n                labels: {\n                  show: false\n                }\n              }\n            }\n          },\n          dataLabels: {\n            formatter: function formatter(val) {\n              return val.toFixed(1) + '%';\n            },\n            style: {\n              colors: ['#fff']\n            },\n            dropShadow: {\n              enabled: true\n            }\n          },\n          stroke: {\n            colors: ['#fff']\n          },\n          fill: {\n            opacity: 1,\n            gradient: {\n              shade: 'light',\n              stops: [0, 100]\n            }\n          },\n          tooltip: {\n            theme: 'dark',\n            fillSeriesColor: true\n          },\n          legend: {\n            position: 'right'\n          }\n        };\n      }\n    }, {\n      key: \"donut\",\n      value: function donut() {\n        return {\n          chart: {\n            toolbar: {\n              show: false\n            }\n          },\n          dataLabels: {\n            formatter: function formatter(val) {\n              return val.toFixed(1) + '%';\n            },\n            style: {\n              colors: ['#fff']\n            },\n            dropShadow: {\n              enabled: true\n            }\n          },\n          stroke: {\n            colors: ['#fff']\n          },\n          fill: {\n            opacity: 1,\n            gradient: {\n              shade: 'light',\n              shadeIntensity: 0.35,\n              stops: [80, 100],\n              opacityFrom: 1,\n              opacityTo: 1\n            }\n          },\n          tooltip: {\n            theme: 'dark',\n            fillSeriesColor: true\n          },\n          legend: {\n            position: 'right'\n          }\n        };\n      }\n    }, {\n      key: \"radar\",\n      value: function radar() {\n        this.opts.yaxis[0].labels.offsetY = this.opts.yaxis[0].labels.offsetY ? this.opts.yaxis[0].labels.offsetY : 6;\n        return {\n          dataLabels: {\n            enabled: false,\n            style: {\n              fontSize: '11px'\n            }\n          },\n          stroke: {\n            width: 2\n          },\n          markers: {\n            size: 3,\n            strokeWidth: 1,\n            strokeOpacity: 1\n          },\n          fill: {\n            opacity: 0.2\n          },\n          tooltip: {\n            shared: false,\n            intersect: true,\n            followCursor: true\n          },\n          grid: {\n            show: false\n          },\n          xaxis: {\n            labels: {\n              formatter: function formatter(val) {\n                return val;\n              },\n              style: {\n                colors: ['#a8a8a8'],\n                fontSize: '11px'\n              }\n            },\n            tooltip: {\n              enabled: false\n            },\n            crosshairs: {\n              show: false\n            }\n          }\n        };\n      }\n    }, {\n      key: \"radialBar\",\n      value: function radialBar() {\n        return {\n          chart: {\n            animations: {\n              dynamicAnimation: {\n                enabled: true,\n                speed: 800\n              }\n            },\n            toolbar: {\n              show: false\n            }\n          },\n          fill: {\n            gradient: {\n              shade: 'dark',\n              shadeIntensity: 0.4,\n              inverseColors: false,\n              type: 'diagonal2',\n              opacityFrom: 1,\n              opacityTo: 1,\n              stops: [70, 98, 100]\n            }\n          },\n          legend: {\n            show: false,\n            position: 'right'\n          },\n          tooltip: {\n            enabled: false,\n            fillSeriesColor: true\n          }\n        };\n      }\n    }]);\n\n    return Defaults;\n  }();\n\n  /**\n   * ApexCharts Config Class for extending user options with pre-defined ApexCharts config.\n   *\n   * @module Config\n   **/\n\n  var Config = /*#__PURE__*/function () {\n    function Config(opts) {\n      _classCallCheck(this, Config);\n\n      this.opts = opts;\n    }\n\n    _createClass(Config, [{\n      key: \"init\",\n      value: function init(_ref) {\n        var responsiveOverride = _ref.responsiveOverride;\n        var opts = this.opts;\n        var options = new Options();\n        var defaults = new Defaults(opts);\n        this.chartType = opts.chart.type;\n\n        if (this.chartType === 'histogram') {\n          // technically, a histogram can be drawn by a column chart with no spaces in between\n          opts.chart.type = 'bar';\n          opts = Utils.extend({\n            plotOptions: {\n              bar: {\n                columnWidth: '99.99%'\n              }\n            }\n          }, opts);\n        }\n\n        opts = this.extendYAxis(opts);\n        opts = this.extendAnnotations(opts);\n        var config = options.init();\n        var newDefaults = {};\n\n        if (opts && _typeof(opts) === 'object') {\n          var chartDefaults = {};\n          var chartTypes = ['line', 'area', 'bar', 'candlestick', 'rangeBar', 'histogram', 'bubble', 'scatter', 'heatmap', 'pie', 'donut', 'radar', 'radialBar'];\n\n          if (chartTypes.indexOf(opts.chart.type) !== -1) {\n            chartDefaults = defaults[opts.chart.type]();\n          } else {\n            chartDefaults = defaults.line();\n          }\n\n          if (opts.chart.brush && opts.chart.brush.enabled) {\n            chartDefaults = defaults.brush(chartDefaults);\n          }\n\n          if (opts.chart.stacked && opts.chart.stackType === '100%') {\n            opts = defaults.stacked100(opts);\n          } // If user has specified a dark theme, make the tooltip dark too\n\n\n          this.checkForDarkTheme(window.Apex); // check global window Apex options\n\n          this.checkForDarkTheme(opts); // check locally passed options\n\n          opts.xaxis = opts.xaxis || window.Apex.xaxis || {}; // an important boolean needs to be set here\n          // otherwise all the charts will have this flag set to true window.Apex.xaxis is set globally\n\n          if (!responsiveOverride) {\n            opts.xaxis.convertedCatToNumeric = false;\n          }\n\n          opts = this.checkForCatToNumericXAxis(this.chartType, chartDefaults, opts);\n\n          if (opts.chart.sparkline && opts.chart.sparkline.enabled || window.Apex.chart && window.Apex.chart.sparkline && window.Apex.chart.sparkline.enabled) {\n            chartDefaults = defaults.sparkline(chartDefaults);\n          }\n\n          newDefaults = Utils.extend(config, chartDefaults);\n        } // config should cascade in this fashion\n        // default-config < global-apex-variable-config < user-defined-config\n        // get GLOBALLY defined options and merge with the default config\n\n\n        var mergedWithDefaultConfig = Utils.extend(newDefaults, window.Apex); // get the merged config and extend with user defined config\n\n        config = Utils.extend(mergedWithDefaultConfig, opts); // some features are not supported. those mismatches should be handled\n\n        config = this.handleUserInputErrors(config);\n        return config;\n      }\n    }, {\n      key: \"checkForCatToNumericXAxis\",\n      value: function checkForCatToNumericXAxis(chartType, chartDefaults, opts) {\n        var defaults = new Defaults(opts);\n        var isBarHorizontal = chartType === 'bar' && opts.plotOptions && opts.plotOptions.bar && opts.plotOptions.bar.horizontal;\n        var unsupportedZoom = chartType === 'pie' || chartType === 'donut' || chartType === 'radar' || chartType === 'radialBar' || chartType === 'heatmap';\n        var notNumericXAxis = opts.xaxis.type !== 'datetime' && opts.xaxis.type !== 'numeric';\n        var tickPlacement = opts.xaxis.tickPlacement ? opts.xaxis.tickPlacement : chartDefaults.xaxis && chartDefaults.xaxis.tickPlacement;\n\n        if (!isBarHorizontal && !unsupportedZoom && notNumericXAxis && tickPlacement !== 'between') {\n          opts = defaults.convertCatToNumeric(opts);\n        }\n\n        return opts;\n      }\n    }, {\n      key: \"extendYAxis\",\n      value: function extendYAxis(opts) {\n        var options = new Options();\n\n        if (typeof opts.yaxis === 'undefined' || !opts.yaxis || Array.isArray(opts.yaxis) && opts.yaxis.length === 0) {\n          opts.yaxis = {};\n        } // extend global yaxis config (only if object is provided / not an array)\n\n\n        if (opts.yaxis.constructor !== Array && window.Apex.yaxis && window.Apex.yaxis.constructor !== Array) {\n          opts.yaxis = Utils.extend(opts.yaxis, window.Apex.yaxis);\n        } // as we can't extend nested object's array with extend, we need to do it first\n        // user can provide either an array or object in yaxis config\n\n\n        if (opts.yaxis.constructor !== Array) {\n          // convert the yaxis to array if user supplied object\n          opts.yaxis = [Utils.extend(options.yAxis, opts.yaxis)];\n        } else {\n          opts.yaxis = Utils.extendArray(opts.yaxis, options.yAxis);\n        }\n\n        var isLogY = false;\n        opts.yaxis.forEach(function (y) {\n          if (y.logarithmic) {\n            isLogY = true;\n          }\n        }); // A logarithmic chart works correctly when each series has a corresponding y-axis\n        // If this is not the case, we manually create yaxis for multi-series log chart\n\n        if (isLogY && opts.series.length !== opts.yaxis.length && opts.series.length) {\n          opts.yaxis = opts.series.map(function (s, i) {\n            if (!s.name) {\n              opts.series[i].name = \"series-\".concat(i + 1);\n            }\n\n            if (opts.yaxis[i]) {\n              opts.yaxis[i].seriesName = opts.series[i].name;\n              return opts.yaxis[i];\n            } else {\n              var newYaxis = Utils.extend(options.yAxis, opts.yaxis[0]);\n              newYaxis.show = false;\n              return newYaxis;\n            }\n          });\n        }\n\n        if (isLogY && opts.series.length > 1 && opts.series.length !== opts.yaxis.length) {\n          console.warn('A multi-series logarithmic chart should have equal number of series and y-axes. Please make sure to equalize both.');\n        }\n\n        return opts;\n      } // annotations also accepts array, so we need to extend them manually\n\n    }, {\n      key: \"extendAnnotations\",\n      value: function extendAnnotations(opts) {\n        if (typeof opts.annotations === 'undefined') {\n          opts.annotations = {};\n          opts.annotations.yaxis = [];\n          opts.annotations.xaxis = [];\n          opts.annotations.points = [];\n        }\n\n        opts = this.extendYAxisAnnotations(opts);\n        opts = this.extendXAxisAnnotations(opts);\n        opts = this.extendPointAnnotations(opts);\n        return opts;\n      }\n    }, {\n      key: \"extendYAxisAnnotations\",\n      value: function extendYAxisAnnotations(opts) {\n        var options = new Options();\n        opts.annotations.yaxis = Utils.extendArray(typeof opts.annotations.yaxis !== 'undefined' ? opts.annotations.yaxis : [], options.yAxisAnnotation);\n        return opts;\n      }\n    }, {\n      key: \"extendXAxisAnnotations\",\n      value: function extendXAxisAnnotations(opts) {\n        var options = new Options();\n        opts.annotations.xaxis = Utils.extendArray(typeof opts.annotations.xaxis !== 'undefined' ? opts.annotations.xaxis : [], options.xAxisAnnotation);\n        return opts;\n      }\n    }, {\n      key: \"extendPointAnnotations\",\n      value: function extendPointAnnotations(opts) {\n        var options = new Options();\n        opts.annotations.points = Utils.extendArray(typeof opts.annotations.points !== 'undefined' ? opts.annotations.points : [], options.pointAnnotation);\n        return opts;\n      }\n    }, {\n      key: \"checkForDarkTheme\",\n      value: function checkForDarkTheme(opts) {\n        if (opts.theme && opts.theme.mode === 'dark') {\n          if (!opts.tooltip) {\n            opts.tooltip = {};\n          }\n\n          if (opts.tooltip.theme !== 'light') {\n            opts.tooltip.theme = 'dark';\n          }\n\n          if (!opts.chart.foreColor) {\n            opts.chart.foreColor = '#f6f7f8';\n          }\n\n          if (!opts.theme.palette) {\n            opts.theme.palette = 'palette4';\n          }\n        }\n      }\n    }, {\n      key: \"handleUserInputErrors\",\n      value: function handleUserInputErrors(opts) {\n        var config = opts; // conflicting tooltip option. intersect makes sure to focus on 1 point at a time. Shared cannot be used along with it\n\n        if (config.tooltip.shared && config.tooltip.intersect) {\n          throw new Error('tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.');\n        }\n\n        if ((config.chart.type === 'bar' || config.chart.type === 'rangeBar') && config.plotOptions.bar.horizontal) {\n          // No multiple yaxis for bars\n          if (config.yaxis.length > 1) {\n            throw new Error('Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false');\n          } // if yaxis is reversed in horizontal bar chart, you should draw the y-axis on right side\n\n\n          if (config.yaxis[0].reversed) {\n            config.yaxis[0].opposite = true;\n          }\n\n          config.xaxis.tooltip.enabled = false; // no xaxis tooltip for horizontal bar\n\n          config.yaxis[0].tooltip.enabled = false; // no xaxis tooltip for horizontal bar\n\n          config.chart.zoom.enabled = false; // no zooming for horz bars\n        }\n\n        if (config.chart.type === 'bar' || config.chart.type === 'rangeBar') {\n          if (config.tooltip.shared) {\n            if (config.xaxis.crosshairs.width === 'barWidth' && config.series.length > 1) {\n              console.warn('crosshairs.width = \"barWidth\" is only supported in single series, not in a multi-series barChart.');\n              config.xaxis.crosshairs.width = 'tickWidth';\n            }\n\n            if (config.plotOptions.bar.horizontal) {\n              config.states.hover.type = 'none';\n              config.tooltip.shared = false;\n            }\n\n            if (!config.tooltip.followCursor) {\n              console.warn('followCursor option in shared columns cannot be turned off. Please set %ctooltip.followCursor: true', 'color: blue;');\n              config.tooltip.followCursor = true;\n            }\n          }\n        }\n\n        if (config.chart.type === 'candlestick') {\n          if (config.yaxis[0].reversed) {\n            console.warn('Reversed y-axis in candlestick chart is not supported.');\n            config.yaxis[0].reversed = false;\n          }\n        }\n\n        if (config.chart.group && config.yaxis[0].labels.minWidth === 0) {\n          console.warn('It looks like you have multiple charts in synchronization. You must provide yaxis.labels.minWidth which must be EQUAL for all grouped charts to prevent incorrect behaviour.');\n        } // if user supplied array for stroke width, it will only be applicable to line/area charts, for any other charts, revert back to Number\n\n\n        if (Array.isArray(config.stroke.width)) {\n          if (config.chart.type !== 'line' && config.chart.type !== 'area') {\n            console.warn('stroke.width option accepts array only for line and area charts. Reverted back to Number');\n            config.stroke.width = config.stroke.width[0];\n          }\n        }\n\n        return config;\n      }\n    }]);\n\n    return Config;\n  }();\n\n  var Globals = /*#__PURE__*/function () {\n    function Globals() {\n      _classCallCheck(this, Globals);\n    }\n\n    _createClass(Globals, [{\n      key: \"initGlobalVars\",\n      value: function initGlobalVars(gl) {\n        gl.series = []; // the MAIN series array (y values)\n\n        gl.seriesCandleO = [];\n        gl.seriesCandleH = [];\n        gl.seriesCandleL = [];\n        gl.seriesCandleC = [];\n        gl.seriesRangeStart = [];\n        gl.seriesRangeEnd = [];\n        gl.seriesRangeBarTimeline = [];\n        gl.seriesPercent = [];\n        gl.seriesX = [];\n        gl.seriesZ = [];\n        gl.seriesNames = [];\n        gl.seriesTotals = [];\n        gl.seriesLog = [];\n        gl.stackedSeriesTotals = [];\n        gl.seriesXvalues = []; // we will need this in tooltip (it's x position)\n        // when we will have unequal x values, we will need\n        // some way to get x value depending on mouse pointer\n\n        gl.seriesYvalues = []; // we will need this when deciding which series\n        // user hovered on\n\n        gl.labels = [];\n        gl.categoryLabels = [];\n        gl.timescaleLabels = [];\n        gl.noLabelsProvided = false;\n        gl.resizeTimer = null;\n        gl.selectionResizeTimer = null;\n        gl.delayedElements = [];\n        gl.pointsArray = [];\n        gl.dataLabelsRects = [];\n        gl.isXNumeric = false;\n        gl.xaxisLabelsCount = 0;\n        gl.skipLastTimelinelabel = false;\n        gl.skipFirstTimelinelabel = false;\n        gl.x2SpaceAvailable = 0;\n        gl.isDataXYZ = false;\n        gl.isMultiLineX = false;\n        gl.isMultipleYAxis = false;\n        gl.maxY = -Number.MAX_VALUE;\n        gl.minY = Number.MIN_VALUE;\n        gl.minYArr = [];\n        gl.maxYArr = [];\n        gl.maxX = -Number.MAX_VALUE;\n        gl.minX = Number.MAX_VALUE;\n        gl.initialMaxX = -Number.MAX_VALUE;\n        gl.initialMinX = Number.MAX_VALUE;\n        gl.maxDate = 0;\n        gl.minDate = Number.MAX_VALUE;\n        gl.minZ = Number.MAX_VALUE;\n        gl.maxZ = -Number.MAX_VALUE;\n        gl.minXDiff = Number.MAX_VALUE;\n        gl.yAxisScale = [];\n        gl.xAxisScale = null;\n        gl.xAxisTicksPositions = [];\n        gl.yLabelsCoords = [];\n        gl.yTitleCoords = [];\n        gl.barPadForNumericAxis = 0;\n        gl.padHorizontal = 0;\n        gl.xRange = 0;\n        gl.yRange = [];\n        gl.zRange = 0;\n        gl.dataPoints = 0;\n        gl.xTickAmount = 0;\n      }\n    }, {\n      key: \"globalVars\",\n      value: function globalVars(config) {\n        return {\n          chartID: null,\n          // chart ID - apexcharts-cuid\n          cuid: null,\n          // chart ID - random numbers excluding \"apexcharts\" part\n          events: {\n            beforeMount: [],\n            mounted: [],\n            updated: [],\n            clicked: [],\n            selection: [],\n            dataPointSelection: [],\n            zoomed: [],\n            scrolled: []\n          },\n          colors: [],\n          clientX: null,\n          clientY: null,\n          fill: {\n            colors: []\n          },\n          stroke: {\n            colors: []\n          },\n          dataLabels: {\n            style: {\n              colors: []\n            }\n          },\n          radarPolygons: {\n            fill: {\n              colors: []\n            }\n          },\n          markers: {\n            colors: [],\n            size: config.markers.size,\n            largestSize: 0\n          },\n          animationEnded: false,\n          isTouchDevice: 'ontouchstart' in window || navigator.msMaxTouchPoints,\n          isDirty: false,\n          // chart has been updated after the initial render. This is different than dataChanged property. isDirty means user manually called some method to update\n          isExecCalled: false,\n          // whether user updated the chart through the exec method\n          initialConfig: null,\n          // we will store the first config user has set to go back when user finishes interactions like zooming and come out of it\n          lastXAxis: [],\n          lastYAxis: [],\n          columnSeries: null,\n          labels: [],\n          // store the text to draw on x axis\n          // Don't mutate the labels, many things including tooltips depends on it!\n          timescaleLabels: [],\n          // store the timescaleLabels Labels in another variable\n          noLabelsProvided: false,\n          // if user didn't provide any categories/labels or x values, fallback to 1,2,3,4...\n          allSeriesCollapsed: false,\n          collapsedSeries: [],\n          // when user collapses a series, it goes into this array\n          collapsedSeriesIndices: [],\n          // this stores the index of the collapsedSeries instead of whole object for quick access\n          ancillaryCollapsedSeries: [],\n          // when user collapses an \"alwaysVisible\" series, it goes into this array\n          ancillaryCollapsedSeriesIndices: [],\n          // this stores the index of the ancillaryCollapsedSeries whose y-axis is always visible\n          risingSeries: [],\n          // when user re-opens a collapsed series, it goes here\n          dataFormatXNumeric: false,\n          // boolean value to indicate user has passed numeric x values\n          capturedSeriesIndex: -1,\n          capturedDataPointIndex: -1,\n          selectedDataPoints: [],\n          goldenPadding: 35,\n          // this value is used at a lot of places for spacing purpose\n          invalidLogScale: false,\n          // if a user enabled log scale but the data provided is not valid to generate a log scale, turn on this flag\n          ignoreYAxisIndexes: [],\n          // when series are being collapsed in multiple y axes, ignore certain index\n          yAxisSameScaleIndices: [],\n          maxValsInArrayIndex: 0,\n          radialSize: 0,\n          zoomEnabled: config.chart.toolbar.autoSelected === 'zoom' && config.chart.toolbar.tools.zoom && config.chart.zoom.enabled,\n          panEnabled: config.chart.toolbar.autoSelected === 'pan' && config.chart.toolbar.tools.pan,\n          selectionEnabled: config.chart.toolbar.autoSelected === 'selection' && config.chart.toolbar.tools.selection,\n          yaxis: null,\n          mousedown: false,\n          lastClientPosition: {},\n          // don't reset this variable this the chart is destroyed. It is used to detect right or left mousemove in panning\n          visibleXRange: undefined,\n          yValueDecimal: 0,\n          // are there floating numbers in the series. If yes, this represent the len of the decimals\n          total: 0,\n          SVGNS: 'http://www.w3.org/2000/svg',\n          // svg namespace\n          svgWidth: 0,\n          // the whole svg width\n          svgHeight: 0,\n          // the whole svg height\n          noData: false,\n          // whether there is any data to display or not\n          locale: {},\n          // the current locale values will be preserved here for global access\n          dom: {},\n          // for storing all dom nodes in this particular property\n          memory: {\n            methodsToExec: []\n          },\n          shouldAnimate: true,\n          skipLastTimelinelabel: false,\n          // when last label is cropped, skip drawing it\n          skipFirstTimelinelabel: false,\n          // when first label is cropped, skip drawing it\n          delayedElements: [],\n          // element which appear after animation has finished\n          axisCharts: true,\n          // chart type = line or area or bar\n          // (refer them also as plot charts in the code)\n          isDataXYZ: false,\n          // bool: data was provided in a {[x,y,z]} pattern\n          resized: false,\n          // bool: user has resized\n          resizeTimer: null,\n          // timeout function to make a small delay before\n          // drawing when user resized\n          comboCharts: false,\n          // bool: whether it's a combination of line/column\n          dataChanged: false,\n          // bool: has data changed dynamically\n          previousPaths: [],\n          // array: when data is changed, it will animate from\n          // previous paths\n          allSeriesHasEqualX: true,\n          pointsArray: [],\n          // store the points positions here to draw later on hover\n          // format is - [[x,y],[x,y]... [x,y]]\n          dataLabelsRects: [],\n          // store the positions of datalabels to prevent collision\n          lastDrawnDataLabelsIndexes: [],\n          x2SpaceAvailable: 0,\n          // space available on the right side after grid area\n          hasNullValues: false,\n          // bool: whether series contains null values\n          easing: null,\n          // function: animation effect to apply\n          zoomed: false,\n          // whether user has zoomed or not\n          gridWidth: 0,\n          // drawable width of actual graphs (series paths)\n          gridHeight: 0,\n          // drawable height of actual graphs (series paths)\n          rotateXLabels: false,\n          defaultLabels: false,\n          xLabelFormatter: undefined,\n          // formatter for x axis labels\n          yLabelFormatters: [],\n          xaxisTooltipFormatter: undefined,\n          // formatter for x axis tooltip\n          ttKeyFormatter: undefined,\n          ttVal: undefined,\n          ttZFormatter: undefined,\n          LINE_HEIGHT_RATIO: 1.618,\n          xAxisLabelsHeight: 0,\n          yAxisLabelsWidth: 0,\n          scaleX: 1,\n          scaleY: 1,\n          translateX: 0,\n          translateY: 0,\n          translateYAxisX: [],\n          yAxisWidths: [],\n          translateXAxisY: 0,\n          translateXAxisX: 0,\n          tooltip: null\n        };\n      }\n    }, {\n      key: \"init\",\n      value: function init(config) {\n        var globals = this.globalVars(config);\n        this.initGlobalVars(globals);\n        globals.initialConfig = Utils.extend({}, config);\n        globals.initialSeries = JSON.parse(JSON.stringify(globals.initialConfig.series));\n        globals.lastXAxis = JSON.parse(JSON.stringify(globals.initialConfig.xaxis));\n        globals.lastYAxis = JSON.parse(JSON.stringify(globals.initialConfig.yaxis));\n        return globals;\n      }\n    }]);\n\n    return Globals;\n  }();\n\n  /**\n   * ApexCharts Base Class for extending user options with pre-defined ApexCharts config.\n   *\n   * @module Base\n   **/\n\n  var Base = /*#__PURE__*/function () {\n    function Base(opts) {\n      _classCallCheck(this, Base);\n\n      this.opts = opts;\n    }\n\n    _createClass(Base, [{\n      key: \"init\",\n      value: function init() {\n        var config = new Config(this.opts).init({\n          responsiveOverride: false\n        });\n        var globals = new Globals().init(config);\n        var w = {\n          config: config,\n          globals: globals\n        };\n        return w;\n      }\n    }]);\n\n    return Base;\n  }();\n\n  /*\n   ** Util functions which are dependent on ApexCharts instance\n   */\n  var CoreUtils = /*#__PURE__*/function () {\n    function CoreUtils(ctx) {\n      _classCallCheck(this, CoreUtils);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    }\n\n    _createClass(CoreUtils, [{\n      key: \"getStackedSeriesTotals\",\n\n      /**\n       * @memberof CoreUtils\n       * returns the sum of all individual values in a multiple stacked series\n       * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]]\n       *  @return [34,36,48,13]\n       **/\n      value: function getStackedSeriesTotals() {\n        var w = this.w;\n        var total = [];\n        if (w.globals.series.length === 0) return total;\n\n        for (var i = 0; i < w.globals.series[w.globals.maxValsInArrayIndex].length; i++) {\n          var t = 0;\n\n          for (var j = 0; j < w.globals.series.length; j++) {\n            if (typeof w.globals.series[j][i] !== 'undefined') {\n              t += w.globals.series[j][i];\n            }\n          }\n\n          total.push(t);\n        }\n\n        w.globals.stackedSeriesTotals = total;\n        return total;\n      } // get total of the all values inside all series\n\n    }, {\n      key: \"getSeriesTotalByIndex\",\n      value: function getSeriesTotalByIndex() {\n        var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n        if (index === null) {\n          // non-plot chart types - pie / donut / circle\n          return this.w.config.series.reduce(function (acc, cur) {\n            return acc + cur;\n          }, 0);\n        } else {\n          // axis charts - supporting multiple series\n          return this.w.globals.series[index].reduce(function (acc, cur) {\n            return acc + cur;\n          }, 0);\n        }\n      }\n    }, {\n      key: \"isSeriesNull\",\n      value: function isSeriesNull() {\n        var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n        var r = [];\n\n        if (index === null) {\n          // non-plot chart types - pie / donut / circle\n          r = this.w.config.series.filter(function (d) {\n            return d !== null;\n          });\n        } else {\n          // axis charts - supporting multiple series\n          r = this.w.config.series[index].data.filter(function (d) {\n            return d !== null;\n          });\n        }\n\n        return r.length === 0;\n      }\n    }, {\n      key: \"seriesHaveSameValues\",\n      value: function seriesHaveSameValues(index) {\n        return this.w.globals.series[index].every(function (val, i, arr) {\n          return val === arr[0];\n        });\n      }\n    }, {\n      key: \"getCategoryLabels\",\n      value: function getCategoryLabels(labels) {\n        var w = this.w;\n        var catLabels = labels.slice();\n\n        if (w.config.xaxis.convertedCatToNumeric) {\n          catLabels = labels.map(function (i) {\n            return w.config.xaxis.labels.formatter(i - w.globals.minX + 1);\n          });\n        }\n\n        return catLabels;\n      } // maxValsInArrayIndex is the index of series[] which has the largest number of items\n\n    }, {\n      key: \"getLargestSeries\",\n      value: function getLargestSeries() {\n        var w = this.w;\n        w.globals.maxValsInArrayIndex = w.globals.series.map(function (a) {\n          return a.length;\n        }).indexOf(Math.max.apply(Math, w.globals.series.map(function (a) {\n          return a.length;\n        })));\n      }\n    }, {\n      key: \"getLargestMarkerSize\",\n      value: function getLargestMarkerSize() {\n        var w = this.w;\n        var size = 0;\n        w.globals.markers.size.forEach(function (m) {\n          size = Math.max(size, m);\n        });\n        w.globals.markers.largestSize = size;\n        return size;\n      }\n      /**\n       * @memberof Core\n       * returns the sum of all values in a series\n       * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]]\n       *  @return [120, 11]\n       **/\n\n    }, {\n      key: \"getSeriesTotals\",\n      value: function getSeriesTotals() {\n        var w = this.w;\n        w.globals.seriesTotals = w.globals.series.map(function (ser, index) {\n          var total = 0;\n\n          if (Array.isArray(ser)) {\n            for (var j = 0; j < ser.length; j++) {\n              total += ser[j];\n            }\n          } else {\n            // for pie/donuts/gauges\n            total += ser;\n          }\n\n          return total;\n        });\n      }\n    }, {\n      key: \"getSeriesTotalsXRange\",\n      value: function getSeriesTotalsXRange(minX, maxX) {\n        var w = this.w;\n        var seriesTotalsXRange = w.globals.series.map(function (ser, index) {\n          var total = 0;\n\n          for (var j = 0; j < ser.length; j++) {\n            if (w.globals.seriesX[index][j] > minX && w.globals.seriesX[index][j] < maxX) {\n              total += ser[j];\n            }\n          }\n\n          return total;\n        });\n        return seriesTotalsXRange;\n      }\n      /**\n       * @memberof CoreUtils\n       * returns the percentage value of all individual values which can be used in a 100% stacked series\n       * Eg. w.globals.series = [[32, 33, 43, 12], [2, 3, 5, 1]]\n       *  @return [[94.11, 91.66, 89.58, 92.30], [5.88, 8.33, 10.41, 7.7]]\n       **/\n\n    }, {\n      key: \"getPercentSeries\",\n      value: function getPercentSeries() {\n        var w = this.w;\n        w.globals.seriesPercent = w.globals.series.map(function (ser, index) {\n          var seriesPercent = [];\n\n          if (Array.isArray(ser)) {\n            for (var j = 0; j < ser.length; j++) {\n              var total = w.globals.stackedSeriesTotals[j];\n              var percent = 0;\n\n              if (total) {\n                percent = 100 * ser[j] / total;\n              }\n\n              seriesPercent.push(percent);\n            }\n          } else {\n            var _total = w.globals.seriesTotals.reduce(function (acc, val) {\n              return acc + val;\n            }, 0);\n\n            var _percent = 100 * ser / _total;\n\n            seriesPercent.push(_percent);\n          }\n\n          return seriesPercent;\n        });\n      }\n    }, {\n      key: \"getCalculatedRatios\",\n      value: function getCalculatedRatios() {\n        var gl = this.w.globals;\n        var yRatio = [];\n        var invertedYRatio = 0;\n        var xRatio = 0;\n        var initialXRatio = 0;\n        var invertedXRatio = 0;\n        var zRatio = 0;\n        var baseLineY = [];\n        var baseLineInvertedY = 0.1;\n        var baseLineX = 0;\n        gl.yRange = [];\n\n        if (gl.isMultipleYAxis) {\n          for (var i = 0; i < gl.minYArr.length; i++) {\n            gl.yRange.push(Math.abs(gl.minYArr[i] - gl.maxYArr[i]));\n            baseLineY.push(0);\n          }\n        } else {\n          gl.yRange.push(Math.abs(gl.minY - gl.maxY));\n        }\n\n        gl.xRange = Math.abs(gl.maxX - gl.minX);\n        gl.zRange = Math.abs(gl.maxZ - gl.minZ); // multiple y axis\n\n        for (var _i = 0; _i < gl.yRange.length; _i++) {\n          yRatio.push(gl.yRange[_i] / gl.gridHeight);\n        }\n\n        xRatio = gl.xRange / gl.gridWidth;\n        initialXRatio = Math.abs(gl.initialMaxX - gl.initialMinX) / gl.gridWidth;\n        invertedYRatio = gl.yRange / gl.gridWidth;\n        invertedXRatio = gl.xRange / gl.gridHeight;\n        zRatio = gl.zRange / gl.gridHeight * 16;\n\n        if (!zRatio) {\n          zRatio = 1;\n        }\n\n        if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) {\n          // Negative numbers present in series\n          gl.hasNegs = true;\n        }\n\n        if (gl.isMultipleYAxis) {\n          baseLineY = []; // baseline variables is the 0 of the yaxis which will be needed when there are negatives\n\n          for (var _i2 = 0; _i2 < yRatio.length; _i2++) {\n            baseLineY.push(-gl.minYArr[_i2] / yRatio[_i2]);\n          }\n        } else {\n          baseLineY.push(-gl.minY / yRatio[0]);\n\n          if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) {\n            baseLineInvertedY = -gl.minY / invertedYRatio; // this is for bar chart\n\n            baseLineX = gl.minX / xRatio;\n          }\n        }\n\n        return {\n          yRatio: yRatio,\n          invertedYRatio: invertedYRatio,\n          zRatio: zRatio,\n          xRatio: xRatio,\n          initialXRatio: initialXRatio,\n          invertedXRatio: invertedXRatio,\n          baseLineInvertedY: baseLineInvertedY,\n          baseLineY: baseLineY,\n          baseLineX: baseLineX\n        };\n      }\n    }, {\n      key: \"getLogSeries\",\n      value: function getLogSeries(series) {\n        var w = this.w;\n        w.globals.seriesLog = series.map(function (s, i) {\n          if (w.config.yaxis[i] && w.config.yaxis[i].logarithmic) {\n            return s.map(function (d) {\n              if (d === null) return null;\n              var logVal = (Math.log(d) - Math.log(w.globals.minYArr[i])) / (Math.log(w.globals.maxYArr[i]) - Math.log(w.globals.minYArr[i]));\n              return logVal;\n            });\n          } else {\n            return s;\n          }\n        });\n        return w.globals.invalidLogScale ? series : w.globals.seriesLog;\n      }\n    }, {\n      key: \"getLogYRatios\",\n      value: function getLogYRatios(yRatio) {\n        var _this = this;\n\n        var w = this.w;\n        var gl = this.w.globals;\n        gl.yLogRatio = yRatio.slice();\n        gl.logYRange = gl.yRange.map(function (yRange, i) {\n          if (w.config.yaxis[i] && _this.w.config.yaxis[i].logarithmic) {\n            var maxY = -Number.MAX_VALUE;\n            var minY = Number.MIN_VALUE;\n            var range = 1;\n            gl.seriesLog.forEach(function (s, si) {\n              s.forEach(function (v) {\n                if (w.config.yaxis[si] && w.config.yaxis[si].logarithmic) {\n                  maxY = Math.max(v, maxY);\n                  minY = Math.min(v, minY);\n                }\n              });\n            });\n            range = Math.pow(gl.yRange[i], Math.abs(minY - maxY) / gl.yRange[i]);\n            gl.yLogRatio[i] = range / gl.gridHeight;\n            return range;\n          }\n        });\n        return gl.invalidLogScale ? yRatio.slice() : gl.yLogRatio;\n      } // Some config objects can be array - and we need to extend them correctly\n\n    }], [{\n      key: \"checkComboSeries\",\n      value: function checkComboSeries(series) {\n        var comboCharts = false;\n        var comboBarCount = 0; // if user specified a type in series too, turn on comboCharts flag\n\n        if (series.length && typeof series[0].type !== 'undefined') {\n          comboCharts = true;\n          series.forEach(function (s) {\n            if (s.type === 'bar' || s.type === 'column' || s.type === 'candlestick') {\n              comboBarCount++;\n            }\n          });\n        }\n\n        return {\n          comboBarCount: comboBarCount,\n          comboCharts: comboCharts\n        };\n      }\n    }, {\n      key: \"extendArrayProps\",\n      value: function extendArrayProps(configInstance, options) {\n        if (options.yaxis) {\n          options = configInstance.extendYAxis(options);\n        }\n\n        if (options.annotations) {\n          if (options.annotations.yaxis) {\n            options = configInstance.extendYAxisAnnotations(options);\n          }\n\n          if (options.annotations.xaxis) {\n            options = configInstance.extendXAxisAnnotations(options);\n          }\n\n          if (options.annotations.points) {\n            options = configInstance.extendPointAnnotations(options);\n          }\n        }\n\n        return options;\n      }\n    }]);\n\n    return CoreUtils;\n  }();\n\n  /**\n   * ApexCharts Fill Class for setting fill options of the paths.\n   *\n   * @module Fill\n   **/\n\n  var Fill = /*#__PURE__*/function () {\n    function Fill(ctx) {\n      _classCallCheck(this, Fill);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.opts = null;\n      this.seriesIndex = 0;\n    }\n\n    _createClass(Fill, [{\n      key: \"clippedImgArea\",\n      value: function clippedImgArea(params) {\n        var w = this.w;\n        var cnf = w.config;\n        var svgW = parseInt(w.globals.gridWidth, 10);\n        var svgH = parseInt(w.globals.gridHeight, 10);\n        var size = svgW > svgH ? svgW : svgH;\n        var fillImg = params.image;\n        var imgWidth = 0;\n        var imgHeight = 0;\n\n        if (typeof params.width === 'undefined' && typeof params.height === 'undefined') {\n          if (cnf.fill.image.width !== undefined && cnf.fill.image.height !== undefined) {\n            imgWidth = cnf.fill.image.width + 1;\n            imgHeight = cnf.fill.image.height;\n          } else {\n            imgWidth = size + 1;\n            imgHeight = size;\n          }\n        } else {\n          imgWidth = params.width;\n          imgHeight = params.height;\n        }\n\n        var elPattern = document.createElementNS(w.globals.SVGNS, 'pattern');\n        Graphics.setAttrs(elPattern, {\n          id: params.patternID,\n          patternUnits: params.patternUnits ? params.patternUnits : 'userSpaceOnUse',\n          width: imgWidth + 'px',\n          height: imgHeight + 'px'\n        });\n        var elImage = document.createElementNS(w.globals.SVGNS, 'image');\n        elPattern.appendChild(elImage);\n        elImage.setAttributeNS(window.SVG.xlink, 'href', fillImg);\n        Graphics.setAttrs(elImage, {\n          x: 0,\n          y: 0,\n          preserveAspectRatio: 'none',\n          width: imgWidth + 'px',\n          height: imgHeight + 'px'\n        });\n        elImage.style.opacity = params.opacity;\n        w.globals.dom.elDefs.node.appendChild(elPattern);\n      }\n    }, {\n      key: \"getSeriesIndex\",\n      value: function getSeriesIndex(opts) {\n        var w = this.w;\n\n        if ((w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') && w.config.plotOptions.bar.distributed || w.config.chart.type === 'heatmap') {\n          this.seriesIndex = opts.seriesNumber;\n        } else {\n          this.seriesIndex = opts.seriesNumber % w.globals.series.length;\n        }\n\n        return this.seriesIndex;\n      }\n    }, {\n      key: \"fillPath\",\n      value: function fillPath(opts) {\n        var w = this.w;\n        this.opts = opts;\n        var cnf = this.w.config;\n        var pathFill;\n        var patternFill, gradientFill;\n        this.seriesIndex = this.getSeriesIndex(opts);\n        var fillColors = this.getFillColors();\n        var fillColor = fillColors[this.seriesIndex];\n\n        if (typeof fillColor === 'function') {\n          fillColor = fillColor({\n            seriesIndex: this.seriesIndex,\n            dataPointIndex: opts.dataPointIndex,\n            value: opts.value,\n            w: w\n          });\n        }\n\n        var fillType = this.getFillType(this.seriesIndex);\n        var fillOpacity = Array.isArray(cnf.fill.opacity) ? cnf.fill.opacity[this.seriesIndex] : cnf.fill.opacity;\n        var defaultColor = fillColor;\n\n        if (opts.color) {\n          fillColor = opts.color;\n        }\n\n        if (fillColor.indexOf('rgb') === -1) {\n          if (fillColor.length < 9) {\n            // if the hex contains alpha and is of 9 digit, skip the opacity\n            defaultColor = Utils.hexToRgba(fillColor, fillOpacity);\n          }\n        } else {\n          if (fillColor.indexOf('rgba') > -1) {\n            fillOpacity = Utils.getOpacityFromRGBA(fillColor);\n          }\n        }\n\n        if (opts.opacity) fillOpacity = opts.opacity;\n\n        if (fillType === 'pattern') {\n          patternFill = this.handlePatternFill(patternFill, fillColor, fillOpacity, defaultColor);\n        }\n\n        if (fillType === 'gradient') {\n          gradientFill = this.handleGradientFill(fillColor, fillOpacity, this.seriesIndex);\n        }\n\n        if (fillType === 'image') {\n          var imgSrc = cnf.fill.image.src;\n          var patternID = opts.patternID ? opts.patternID : '';\n          this.clippedImgArea({\n            opacity: fillOpacity,\n            image: Array.isArray(imgSrc) ? opts.seriesNumber < imgSrc.length ? imgSrc[opts.seriesNumber] : imgSrc[0] : imgSrc,\n            width: opts.width ? opts.width : undefined,\n            height: opts.height ? opts.height : undefined,\n            patternUnits: opts.patternUnits,\n            patternID: \"pattern\".concat(w.globals.cuid).concat(opts.seriesNumber + 1).concat(patternID)\n          });\n          pathFill = \"url(#pattern\".concat(w.globals.cuid).concat(opts.seriesNumber + 1).concat(patternID, \")\");\n        } else if (fillType === 'gradient') {\n          pathFill = gradientFill;\n        } else if (fillType === 'pattern') {\n          pathFill = patternFill;\n        } else {\n          pathFill = defaultColor;\n        } // override pattern/gradient if opts.solid is true\n\n\n        if (opts.solid) {\n          pathFill = defaultColor;\n        }\n\n        return pathFill;\n      }\n    }, {\n      key: \"getFillType\",\n      value: function getFillType(seriesIndex) {\n        var w = this.w;\n\n        if (Array.isArray(w.config.fill.type)) {\n          return w.config.fill.type[seriesIndex];\n        } else {\n          return w.config.fill.type;\n        }\n      }\n    }, {\n      key: \"getFillColors\",\n      value: function getFillColors() {\n        var w = this.w;\n        var cnf = w.config;\n        var opts = this.opts;\n        var fillColors = [];\n\n        if (w.globals.comboCharts) {\n          if (w.config.series[this.seriesIndex].type === 'line') {\n            if (w.globals.stroke.colors instanceof Array) {\n              fillColors = w.globals.stroke.colors;\n            } else {\n              fillColors.push(w.globals.stroke.colors);\n            }\n          } else {\n            if (w.globals.fill.colors instanceof Array) {\n              fillColors = w.globals.fill.colors;\n            } else {\n              fillColors.push(w.globals.fill.colors);\n            }\n          }\n        } else {\n          if (cnf.chart.type === 'line') {\n            if (w.globals.stroke.colors instanceof Array) {\n              fillColors = w.globals.stroke.colors;\n            } else {\n              fillColors.push(w.globals.stroke.colors);\n            }\n          } else {\n            if (w.globals.fill.colors instanceof Array) {\n              fillColors = w.globals.fill.colors;\n            } else {\n              fillColors.push(w.globals.fill.colors);\n            }\n          }\n        } // colors passed in arguments\n\n\n        if (typeof opts.fillColors !== 'undefined') {\n          fillColors = [];\n\n          if (opts.fillColors instanceof Array) {\n            fillColors = opts.fillColors.slice();\n          } else {\n            fillColors.push(opts.fillColors);\n          }\n        }\n\n        return fillColors;\n      }\n    }, {\n      key: \"handlePatternFill\",\n      value: function handlePatternFill(patternFill, fillColor, fillOpacity, defaultColor) {\n        var cnf = this.w.config;\n        var opts = this.opts;\n        var graphics = new Graphics(this.ctx);\n        var patternStrokeWidth = cnf.fill.pattern.strokeWidth === undefined ? Array.isArray(cnf.stroke.width) ? cnf.stroke.width[this.seriesIndex] : cnf.stroke.width : Array.isArray(cnf.fill.pattern.strokeWidth) ? cnf.fill.pattern.strokeWidth[this.seriesIndex] : cnf.fill.pattern.strokeWidth;\n        var patternLineColor = fillColor;\n\n        if (cnf.fill.pattern.style instanceof Array) {\n          if (typeof cnf.fill.pattern.style[opts.seriesNumber] !== 'undefined') {\n            var pf = graphics.drawPattern(cnf.fill.pattern.style[opts.seriesNumber], cnf.fill.pattern.width, cnf.fill.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity);\n            patternFill = pf;\n          } else {\n            patternFill = defaultColor;\n          }\n        } else {\n          patternFill = graphics.drawPattern(cnf.fill.pattern.style, cnf.fill.pattern.width, cnf.fill.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity);\n        }\n\n        return patternFill;\n      }\n    }, {\n      key: \"handleGradientFill\",\n      value: function handleGradientFill(fillColor, fillOpacity, i) {\n        var cnf = this.w.config;\n        var opts = this.opts;\n        var graphics = new Graphics(this.ctx);\n        var utils = new Utils();\n        var type = cnf.fill.gradient.type;\n        var gradientFrom = fillColor;\n        var gradientTo;\n        var opacityFrom = cnf.fill.gradient.opacityFrom === undefined ? fillOpacity : Array.isArray(cnf.fill.gradient.opacityFrom) ? cnf.fill.gradient.opacityFrom[i] : cnf.fill.gradient.opacityFrom;\n\n        if (gradientFrom.indexOf('rgba') > -1) {\n          opacityFrom = Utils.getOpacityFromRGBA(gradientFrom);\n        }\n\n        var opacityTo = cnf.fill.gradient.opacityTo === undefined ? fillOpacity : Array.isArray(cnf.fill.gradient.opacityTo) ? cnf.fill.gradient.opacityTo[i] : cnf.fill.gradient.opacityTo;\n\n        if (cnf.fill.gradient.gradientToColors === undefined || cnf.fill.gradient.gradientToColors.length === 0) {\n          if (cnf.fill.gradient.shade === 'dark') {\n            gradientTo = utils.shadeColor(parseFloat(cnf.fill.gradient.shadeIntensity) * -1, fillColor.indexOf('rgb') > -1 ? Utils.rgb2hex(fillColor) : fillColor);\n          } else {\n            gradientTo = utils.shadeColor(parseFloat(cnf.fill.gradient.shadeIntensity), fillColor.indexOf('rgb') > -1 ? Utils.rgb2hex(fillColor) : fillColor);\n          }\n        } else {\n          var gToColor = cnf.fill.gradient.gradientToColors[opts.seriesNumber];\n          gradientTo = gToColor;\n\n          if (gToColor.indexOf('rgba') > -1) {\n            opacityTo = Utils.getOpacityFromRGBA(gToColor);\n          }\n        }\n\n        if (cnf.fill.gradient.inverseColors) {\n          var t = gradientFrom;\n          gradientFrom = gradientTo;\n          gradientTo = t;\n        }\n\n        if (gradientFrom.indexOf('rgb') > -1) {\n          gradientFrom = Utils.rgb2hex(gradientFrom);\n        }\n\n        if (gradientTo.indexOf('rgb') > -1) {\n          gradientTo = Utils.rgb2hex(gradientTo);\n        }\n\n        return graphics.drawGradient(type, gradientFrom, gradientTo, opacityFrom, opacityTo, opts.size, cnf.fill.gradient.stops, cnf.fill.gradient.colorStops, i);\n      }\n    }]);\n\n    return Fill;\n  }();\n\n  /**\n   * ApexCharts Markers Class for drawing points on y values in axes charts.\n   *\n   * @module Markers\n   **/\n\n  var Markers = /*#__PURE__*/function () {\n    function Markers(ctx, opts) {\n      _classCallCheck(this, Markers);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    }\n\n    _createClass(Markers, [{\n      key: \"setGlobalMarkerSize\",\n      value: function setGlobalMarkerSize() {\n        var w = this.w;\n        w.globals.markers.size = Array.isArray(w.config.markers.size) ? w.config.markers.size : [w.config.markers.size];\n\n        if (w.globals.markers.size.length > 0) {\n          if (w.globals.markers.size.length < w.globals.series.length + 1) {\n            for (var i = 0; i <= w.globals.series.length; i++) {\n              if (typeof w.globals.markers.size[i] === 'undefined') {\n                w.globals.markers.size.push(w.globals.markers.size[0]);\n              }\n            }\n          }\n        } else {\n          w.globals.markers.size = w.config.series.map(function (s) {\n            return w.config.markers.size;\n          });\n        }\n      }\n    }, {\n      key: \"plotChartMarkers\",\n      value: function plotChartMarkers(pointsPos, seriesIndex, j, pSize) {\n        var alwaysDrawMarker = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n        var w = this.w;\n        var i = seriesIndex;\n        var p = pointsPos;\n        var elPointsWrap = null;\n        var graphics = new Graphics(this.ctx);\n        var point;\n\n        if (w.globals.markers.size[seriesIndex] > 0 || alwaysDrawMarker) {\n          elPointsWrap = graphics.group({\n            class: alwaysDrawMarker ? '' : 'apexcharts-series-markers'\n          });\n          elPointsWrap.attr('clip-path', \"url(#gridRectMarkerMask\".concat(w.globals.cuid, \")\"));\n        }\n\n        if (p.x instanceof Array) {\n          for (var q = 0; q < p.x.length; q++) {\n            var dataPointIndex = j; // a small hack as we have 2 points for the first val to connect it\n\n            if (j === 1 && q === 0) dataPointIndex = 0;\n            if (j === 1 && q === 1) dataPointIndex = 1;\n            var PointClasses = 'apexcharts-marker';\n\n            if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) {\n              PointClasses += ' no-pointer-events';\n            }\n\n            var shouldMarkerDraw = Array.isArray(w.config.markers.size) ? w.globals.markers.size[seriesIndex] > 0 : w.config.markers.size > 0;\n\n            if (shouldMarkerDraw || alwaysDrawMarker) {\n              if (Utils.isNumber(p.y[q])) {\n                PointClasses += \" w\".concat(Utils.randomId());\n              } else {\n                PointClasses = 'apexcharts-nullpoint';\n              }\n\n              var opts = this.getMarkerConfig(PointClasses, seriesIndex, dataPointIndex);\n\n              if (w.config.series[i].data[j]) {\n                if (w.config.series[i].data[j].fillColor) {\n                  opts.pointFillColor = w.config.series[i].data[j].fillColor;\n                }\n\n                if (w.config.series[i].data[j].strokeColor) {\n                  opts.pointStrokeColor = w.config.series[i].data[j].strokeColor;\n                }\n              }\n\n              if (pSize) {\n                opts.pSize = pSize;\n              }\n\n              point = graphics.drawMarker(p.x[q], p.y[q], opts);\n              point.attr('rel', dataPointIndex);\n              point.attr('j', dataPointIndex);\n              point.attr('index', seriesIndex);\n              point.node.setAttribute('default-marker-size', opts.pSize);\n              var filters = new Filters(this.ctx);\n              filters.setSelectionFilter(point, seriesIndex, dataPointIndex);\n              this.addEvents(point);\n\n              if (elPointsWrap) {\n                elPointsWrap.add(point);\n              }\n            } else {\n              // dynamic array creation - multidimensional\n              if (typeof w.globals.pointsArray[seriesIndex] === 'undefined') w.globals.pointsArray[seriesIndex] = [];\n              w.globals.pointsArray[seriesIndex].push([p.x[q], p.y[q]]);\n            }\n          }\n        }\n\n        return elPointsWrap;\n      }\n    }, {\n      key: \"getMarkerConfig\",\n      value: function getMarkerConfig(cssClass, seriesIndex) {\n        var dataPointIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n        var w = this.w;\n        var pStyle = this.getMarkerStyle(seriesIndex);\n        var pSize = w.globals.markers.size[seriesIndex];\n        var m = w.config.markers; // discrete markers is an option where user can specify a particular marker with different size and color\n\n        if (dataPointIndex !== null && m.discrete.length) {\n          m.discrete.map(function (marker) {\n            if (marker.seriesIndex === seriesIndex && marker.dataPointIndex === dataPointIndex) {\n              pStyle.pointStrokeColor = marker.strokeColor;\n              pStyle.pointFillColor = marker.fillColor;\n              pSize = marker.size;\n            }\n          });\n        }\n\n        return {\n          pSize: pSize,\n          pRadius: m.radius,\n          pWidth: m.strokeWidth instanceof Array ? m.strokeWidth[seriesIndex] : m.strokeWidth,\n          pointStrokeColor: pStyle.pointStrokeColor,\n          pointFillColor: pStyle.pointFillColor,\n          shape: m.shape instanceof Array ? m.shape[seriesIndex] : m.shape,\n          class: cssClass,\n          pointStrokeOpacity: m.strokeOpacity instanceof Array ? m.strokeOpacity[seriesIndex] : m.strokeOpacity,\n          pointStrokeDashArray: m.strokeDashArray instanceof Array ? m.strokeDashArray[seriesIndex] : m.strokeDashArray,\n          pointFillOpacity: m.fillOpacity instanceof Array ? m.fillOpacity[seriesIndex] : m.fillOpacity,\n          seriesIndex: seriesIndex\n        };\n      }\n    }, {\n      key: \"addEvents\",\n      value: function addEvents(circle) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        circle.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this.ctx, circle));\n        circle.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this.ctx, circle));\n        circle.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this.ctx, circle));\n        circle.node.addEventListener('click', w.config.markers.onClick);\n        circle.node.addEventListener('dblclick', w.config.markers.onDblClick);\n        circle.node.addEventListener('touchstart', graphics.pathMouseDown.bind(this.ctx, circle), {\n          passive: true\n        });\n      }\n    }, {\n      key: \"getMarkerStyle\",\n      value: function getMarkerStyle(seriesIndex) {\n        var w = this.w;\n        var colors = w.globals.markers.colors;\n        var strokeColors = w.config.markers.strokeColor || w.config.markers.strokeColors;\n        var pointStrokeColor = strokeColors instanceof Array ? strokeColors[seriesIndex] : strokeColors;\n        var pointFillColor = colors instanceof Array ? colors[seriesIndex] : colors;\n        return {\n          pointStrokeColor: pointStrokeColor,\n          pointFillColor: pointFillColor\n        };\n      }\n    }]);\n\n    return Markers;\n  }();\n\n  /**\n   * ApexCharts Scatter Class.\n   * This Class also handles bubbles chart as currently there is no major difference in drawing them,\n   * @module Scatter\n   **/\n\n  var Scatter = /*#__PURE__*/function () {\n    function Scatter(ctx) {\n      _classCallCheck(this, Scatter);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.initialAnim = this.w.config.chart.animations.enabled;\n      this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;\n    }\n\n    _createClass(Scatter, [{\n      key: \"draw\",\n      value: function draw(elSeries, j, opts) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var realIndex = opts.realIndex;\n        var pointsPos = opts.pointsPos;\n        var zRatio = opts.zRatio;\n        var elPointsMain = opts.elParent;\n        var elPointsWrap = graphics.group({\n          class: \"apexcharts-series-markers apexcharts-series-\".concat(w.config.chart.type)\n        });\n        elPointsWrap.attr('clip-path', \"url(#gridRectMarkerMask\".concat(w.globals.cuid, \")\"));\n\n        if (pointsPos.x instanceof Array) {\n          for (var q = 0; q < pointsPos.x.length; q++) {\n            var dataPointIndex = j + 1;\n            var shouldDraw = true; // a small hack as we have 2 points for the first val to connect it\n\n            if (j === 0 && q === 0) dataPointIndex = 0;\n            if (j === 0 && q === 1) dataPointIndex = 1;\n            var radius = 0;\n            var finishRadius = w.globals.markers.size[realIndex];\n\n            if (zRatio !== Infinity) {\n              // means we have a bubble\n              finishRadius = w.globals.seriesZ[realIndex][dataPointIndex] / zRatio;\n              var bubble = w.config.plotOptions.bubble;\n\n              if (bubble.minBubbleRadius && finishRadius < bubble.minBubbleRadius) {\n                finishRadius = bubble.minBubbleRadius;\n              }\n\n              if (bubble.maxBubbleRadius && finishRadius > bubble.maxBubbleRadius) {\n                finishRadius = bubble.maxBubbleRadius;\n              }\n            }\n\n            if (!w.config.chart.animations.enabled) {\n              radius = finishRadius;\n            }\n\n            var x = pointsPos.x[q];\n            var y = pointsPos.y[q];\n            radius = radius || 0;\n\n            if (y === null || typeof w.globals.series[realIndex][dataPointIndex] === 'undefined') {\n              shouldDraw = false;\n            }\n\n            if (shouldDraw) {\n              var circle = this.drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j);\n              elPointsWrap.add(circle);\n            }\n\n            elPointsMain.add(elPointsWrap);\n          }\n        }\n      }\n    }, {\n      key: \"drawPoint\",\n      value: function drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j) {\n        var w = this.w;\n        var i = realIndex;\n        var anim = new Animations(this.ctx);\n        var filters = new Filters(this.ctx);\n        var fill = new Fill(this.ctx);\n        var markers = new Markers(this.ctx);\n        var graphics = new Graphics(this.ctx);\n        var markerConfig = markers.getMarkerConfig('apexcharts-marker', i);\n        var pathFillCircle = fill.fillPath({\n          seriesNumber: realIndex,\n          dataPointIndex: dataPointIndex,\n          patternUnits: 'objectBoundingBox',\n          value: w.globals.series[realIndex][j]\n        });\n        var circle = graphics.drawCircle(radius);\n\n        if (w.config.series[i].data[dataPointIndex]) {\n          if (w.config.series[i].data[dataPointIndex].fillColor) {\n            pathFillCircle = w.config.series[i].data[dataPointIndex].fillColor;\n          }\n        }\n\n        circle.attr({\n          cx: x,\n          cy: y,\n          fill: pathFillCircle,\n          stroke: markerConfig.pointStrokeColor,\n          'stroke-width': markerConfig.pWidth,\n          'stroke-dasharray': markerConfig.pointStrokeDashArray,\n          'stroke-opacity': markerConfig.pointStrokeOpacity\n        });\n\n        if (w.config.chart.dropShadow.enabled) {\n          var dropShadow = w.config.chart.dropShadow;\n          filters.dropShadow(circle, dropShadow, realIndex);\n        }\n\n        if (this.initialAnim && !w.globals.dataChanged) {\n          var speed = 1;\n\n          if (!w.globals.resized) {\n            speed = w.config.chart.animations.speed;\n          }\n\n          anim.animateCircleRadius(circle, 0, finishRadius, speed, w.globals.easing, function () {\n            window.setTimeout(function () {\n              anim.animationCompleted(circle);\n            }, 100);\n          });\n        }\n\n        if (w.globals.dataChanged) {\n          if (this.dynamicAnim) {\n            var _speed = w.config.chart.animations.dynamicAnimation.speed;\n            var prevX, prevY, prevR;\n            var prevPathJ = null;\n            prevPathJ = w.globals.previousPaths[realIndex] && w.globals.previousPaths[realIndex][j];\n\n            if (typeof prevPathJ !== 'undefined' && prevPathJ !== null) {\n              // series containing less elements will ignore these values and revert to 0\n              prevX = prevPathJ.x;\n              prevY = prevPathJ.y;\n              prevR = typeof prevPathJ.r !== 'undefined' ? prevPathJ.r : finishRadius;\n            }\n\n            for (var cs = 0; cs < w.globals.collapsedSeries.length; cs++) {\n              if (w.globals.collapsedSeries[cs].index === realIndex) {\n                _speed = 1;\n                finishRadius = 0;\n              }\n            }\n\n            if (x === 0 && y === 0) finishRadius = 0;\n            anim.animateCircle(circle, {\n              cx: prevX,\n              cy: prevY,\n              r: prevR\n            }, {\n              cx: x,\n              cy: y,\n              r: finishRadius\n            }, _speed, w.globals.easing);\n          } else {\n            circle.attr({\n              r: finishRadius\n            });\n          }\n        }\n\n        circle.attr({\n          rel: dataPointIndex,\n          j: dataPointIndex,\n          index: realIndex,\n          'default-marker-size': finishRadius\n        });\n        filters.setSelectionFilter(circle, realIndex, dataPointIndex);\n        markers.addEvents(circle);\n        circle.node.classList.add('apexcharts-marker');\n        return circle;\n      }\n    }, {\n      key: \"centerTextInBubble\",\n      value: function centerTextInBubble(y) {\n        var w = this.w;\n        y = y + parseInt(w.config.dataLabels.style.fontSize, 10) / 4;\n        return {\n          y: y\n        };\n      }\n    }]);\n\n    return Scatter;\n  }();\n\n  /**\n   * ApexCharts DataLabels Class for drawing dataLabels on Axes based Charts.\n   *\n   * @module DataLabels\n   **/\n\n  var DataLabels = /*#__PURE__*/function () {\n    function DataLabels(ctx) {\n      _classCallCheck(this, DataLabels);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    } // When there are many datalabels to be printed, and some of them overlaps each other in the same series, this method will take care of that\n    // Also, when datalabels exceeds the drawable area and get clipped off, we need to adjust and move some pixels to make them visible again\n\n\n    _createClass(DataLabels, [{\n      key: \"dataLabelsCorrection\",\n      value: function dataLabelsCorrection(x, y, val, i, dataPointIndex, alwaysDrawDataLabel, fontSize) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var drawnextLabel = false; //\n\n        var textRects = graphics.getTextRects(val, fontSize);\n        var width = textRects.width;\n        var height = textRects.height; // first value in series, so push an empty array\n\n        if (typeof w.globals.dataLabelsRects[i] === 'undefined') w.globals.dataLabelsRects[i] = []; // then start pushing actual rects in that sub-array\n\n        w.globals.dataLabelsRects[i].push({\n          x: x,\n          y: y,\n          width: width,\n          height: height\n        });\n        var len = w.globals.dataLabelsRects[i].length - 2;\n        var lastDrawnIndex = typeof w.globals.lastDrawnDataLabelsIndexes[i] !== 'undefined' ? w.globals.lastDrawnDataLabelsIndexes[i][w.globals.lastDrawnDataLabelsIndexes[i].length - 1] : 0;\n\n        if (typeof w.globals.dataLabelsRects[i][len] !== 'undefined') {\n          var lastDataLabelRect = w.globals.dataLabelsRects[i][lastDrawnIndex];\n\n          if ( // next label forward and x not intersecting\n          x > lastDataLabelRect.x + lastDataLabelRect.width + 2 || y > lastDataLabelRect.y + lastDataLabelRect.height + 2 || x + width < lastDataLabelRect.x // next label is going to be drawn backwards\n          ) {\n              // the 2 indexes don't override, so OK to draw next label\n              drawnextLabel = true;\n            }\n        }\n\n        if (dataPointIndex === 0 || alwaysDrawDataLabel) {\n          drawnextLabel = true;\n        }\n\n        return {\n          x: x,\n          y: y,\n          textRects: textRects,\n          drawnextLabel: drawnextLabel\n        };\n      }\n    }, {\n      key: \"drawDataLabel\",\n      value: function drawDataLabel(pos, i, j) {\n        var _this = this;\n        var strokeWidth = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 2;\n        // this method handles line, area, bubble, scatter charts as those charts contains markers/points which have pre-defined x/y positions\n        // all other charts like radar / bars / heatmaps will define their own drawDataLabel routine\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var dataLabelsConfig = w.config.dataLabels;\n        var x = 0;\n        var y = 0;\n        var dataPointIndex = j;\n        var elDataLabelsWrap = null;\n\n        if (!dataLabelsConfig.enabled || pos.x instanceof Array !== true) {\n          return elDataLabelsWrap;\n        }\n\n        elDataLabelsWrap = graphics.group({\n          class: 'apexcharts-data-labels'\n        });\n\n        for (var q = 0; q < pos.x.length; q++) {\n          x = pos.x[q] + dataLabelsConfig.offsetX;\n          y = pos.y[q] + dataLabelsConfig.offsetY + strokeWidth;\n\n          if (!isNaN(x)) {\n            // a small hack as we have 2 points for the first val to connect it\n            if (j === 1 && q === 0) dataPointIndex = 0;\n            if (j === 1 && q === 1) dataPointIndex = 1;\n            var val = w.globals.series[i][dataPointIndex];\n            var text = '';\n\n            var getText = function getText(v) {\n              return w.config.dataLabels.formatter(v, {\n                ctx: _this.ctx,\n                seriesIndex: i,\n                dataPointIndex: dataPointIndex,\n                w: w\n              });\n            };\n\n            if (w.config.chart.type === 'bubble') {\n              val = w.globals.seriesZ[i][dataPointIndex];\n              text = getText(val);\n              y = pos.y[q];\n              var scatter = new Scatter(this.ctx);\n              var centerTextInBubbleCoords = scatter.centerTextInBubble(y, i, dataPointIndex);\n              y = centerTextInBubbleCoords.y;\n            } else {\n              if (typeof val !== 'undefined') {\n                text = getText(val);\n              }\n            }\n\n            this.plotDataLabelsText({\n              x: x,\n              y: y,\n              text: text,\n              i: i,\n              j: dataPointIndex,\n              parent: elDataLabelsWrap,\n              offsetCorrection: true,\n              dataLabelsConfig: w.config.dataLabels\n            });\n          }\n        }\n\n        return elDataLabelsWrap;\n      }\n    }, {\n      key: \"plotDataLabelsText\",\n      value: function plotDataLabelsText(opts) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var x = opts.x,\n            y = opts.y,\n            i = opts.i,\n            j = opts.j,\n            text = opts.text,\n            textAnchor = opts.textAnchor,\n            parent = opts.parent,\n            dataLabelsConfig = opts.dataLabelsConfig,\n            color = opts.color,\n            alwaysDrawDataLabel = opts.alwaysDrawDataLabel,\n            offsetCorrection = opts.offsetCorrection;\n\n        if (Array.isArray(w.config.dataLabels.enabledOnSeries)) {\n          if (w.config.dataLabels.enabledOnSeries.indexOf(i) < 0) {\n            return;\n          }\n        }\n\n        var correctedLabels = {\n          x: x,\n          y: y,\n          drawnextLabel: true\n        };\n\n        if (offsetCorrection) {\n          correctedLabels = this.dataLabelsCorrection(x, y, text, i, j, alwaysDrawDataLabel, parseInt(dataLabelsConfig.style.fontSize, 10));\n        } // when zoomed, we don't need to correct labels offsets,\n        // but if normally, labels get cropped, correct them\n\n\n        if (!w.globals.zoomed) {\n          x = correctedLabels.x;\n          y = correctedLabels.y;\n        }\n\n        if (correctedLabels.textRects) {\n          if (x + correctedLabels.textRects.width < -20 || x > w.globals.gridWidth + 20) {\n            // datalabels fall outside drawing area, so draw a blank label\n            text = '';\n          }\n        }\n\n        var dataLabelColor = w.globals.dataLabels.style.colors[i];\n\n        if ((w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') && w.config.plotOptions.bar.distributed || w.config.dataLabels.distributed) {\n          dataLabelColor = w.globals.dataLabels.style.colors[j];\n        }\n\n        if (color) {\n          dataLabelColor = color;\n        }\n\n        var offX = dataLabelsConfig.offsetX;\n        var offY = dataLabelsConfig.offsetY;\n\n        if (w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') {\n          // for certain chart types, we handle offsets while calculating datalabels pos\n          // why? because bars/column may have negative values and based on that\n          // offsets becomes reversed\n          offX = 0;\n          offY = 0;\n        }\n\n        if (correctedLabels.drawnextLabel) {\n          var dataLabelText = graphics.drawText({\n            width: 100,\n            height: parseInt(dataLabelsConfig.style.fontSize, 10),\n            x: x + offX,\n            y: y + offY,\n            foreColor: dataLabelColor,\n            textAnchor: textAnchor || dataLabelsConfig.textAnchor,\n            text: text,\n            fontSize: dataLabelsConfig.style.fontSize,\n            fontFamily: dataLabelsConfig.style.fontFamily,\n            fontWeight: dataLabelsConfig.style.fontWeight || 'normal'\n          });\n          dataLabelText.attr({\n            class: 'apexcharts-datalabel',\n            cx: x,\n            cy: y\n          });\n\n          if (dataLabelsConfig.dropShadow.enabled) {\n            var textShadow = dataLabelsConfig.dropShadow;\n            var filters = new Filters(this.ctx);\n            filters.dropShadow(dataLabelText, textShadow);\n          }\n\n          parent.add(dataLabelText);\n\n          if (typeof w.globals.lastDrawnDataLabelsIndexes[i] === 'undefined') {\n            w.globals.lastDrawnDataLabelsIndexes[i] = [];\n          }\n\n          w.globals.lastDrawnDataLabelsIndexes[i].push(j);\n        }\n      }\n    }, {\n      key: \"addBackgroundToDataLabel\",\n      value: function addBackgroundToDataLabel(el, coords) {\n        var w = this.w;\n        var bCnf = w.config.dataLabels.background;\n        var paddingH = bCnf.padding;\n        var paddingV = bCnf.padding / 2;\n        var width = coords.width;\n        var height = coords.height;\n        var graphics = new Graphics(this.ctx);\n        var elRect = graphics.drawRect(coords.x - paddingH, coords.y - paddingV / 2, width + paddingH * 2, height + paddingV, bCnf.borderRadius, w.config.chart.background === 'transparent' ? '#fff' : w.config.chart.background, bCnf.opacity, bCnf.borderWidth, bCnf.borderColor);\n\n        if (bCnf.dropShadow.enabled) {\n          var filters = new Filters(this.ctx);\n          filters.dropShadow(elRect, bCnf.dropShadow);\n        }\n\n        return elRect;\n      }\n    }, {\n      key: \"dataLabelsBackground\",\n      value: function dataLabelsBackground() {\n        var w = this.w;\n        if (w.config.chart.type === 'bubble') return;\n        var elDataLabels = w.globals.dom.baseEl.querySelectorAll('.apexcharts-datalabels text');\n\n        for (var i = 0; i < elDataLabels.length; i++) {\n          var el = elDataLabels[i];\n          var coords = el.getBBox();\n          var elRect = null;\n\n          if (coords.width && coords.height) {\n            elRect = this.addBackgroundToDataLabel(el, coords);\n          }\n\n          if (elRect) {\n            el.parentNode.insertBefore(elRect.node, el);\n            var background = el.getAttribute('fill');\n            var shouldAnim = w.config.chart.animations.enabled && !w.globals.resized && !w.globals.dataChanged;\n\n            if (shouldAnim) {\n              elRect.animate().attr({\n                fill: background\n              });\n            } else {\n              elRect.attr({\n                fill: background\n              });\n            }\n\n            el.setAttribute('fill', w.config.dataLabels.background.foreColor);\n          }\n        }\n      }\n    }, {\n      key: \"bringForward\",\n      value: function bringForward() {\n        var w = this.w;\n        var elDataLabelsNodes = w.globals.dom.baseEl.getElementsByClassName('apexcharts-datalabels');\n        var elSeries = w.globals.dom.baseEl.querySelector('.apexcharts-plot-series:last-child');\n\n        for (var i = 0; i < elDataLabelsNodes.length; i++) {\n          if (elSeries) {\n            elSeries.insertBefore(elDataLabelsNodes[i], elSeries.nextSibling);\n          }\n        }\n      }\n    }]);\n\n    return DataLabels;\n  }();\n\n  /**\n   * ApexCharts Series Class for interation with the Series of the chart.\n   *\n   * @module Series\n   **/\n\n  var Series = /*#__PURE__*/function () {\n    function Series(ctx) {\n      _classCallCheck(this, Series);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.legendInactiveClass = 'legend-mouseover-inactive';\n    }\n\n    _createClass(Series, [{\n      key: \"getAllSeriesEls\",\n      value: function getAllSeriesEls() {\n        return this.w.globals.dom.baseEl.getElementsByClassName(\"apexcharts-series\");\n      }\n    }, {\n      key: \"getSeriesByName\",\n      value: function getSeriesByName(seriesName) {\n        return this.w.globals.dom.baseEl.querySelector(\"[seriesName='\".concat(Utils.escapeString(seriesName), \"']\"));\n      }\n    }, {\n      key: \"isSeriesHidden\",\n      value: function isSeriesHidden(seriesName) {\n        var targetElement = this.getSeriesByName(seriesName);\n        var realIndex = parseInt(targetElement.getAttribute('data:realIndex'), 10);\n        var isHidden = targetElement.classList.contains('apexcharts-series-collapsed');\n        return {\n          isHidden: isHidden,\n          realIndex: realIndex\n        };\n      }\n    }, {\n      key: \"addCollapsedClassToSeries\",\n      value: function addCollapsedClassToSeries(elSeries, index) {\n        var w = this.w;\n\n        function iterateOnAllCollapsedSeries(series) {\n          for (var cs = 0; cs < series.length; cs++) {\n            if (series[cs].index === index) {\n              elSeries.node.classList.add('apexcharts-series-collapsed');\n            }\n          }\n        }\n\n        iterateOnAllCollapsedSeries(w.globals.collapsedSeries);\n        iterateOnAllCollapsedSeries(w.globals.ancillaryCollapsedSeries);\n      }\n    }, {\n      key: \"toggleSeries\",\n      value: function toggleSeries(seriesName) {\n        var isSeriesHidden = this.isSeriesHidden(seriesName);\n        this.ctx.legend.legendHelpers.toggleDataSeries(isSeriesHidden.realIndex, isSeriesHidden.isHidden);\n        return isSeriesHidden.isHidden;\n      }\n    }, {\n      key: \"showSeries\",\n      value: function showSeries(seriesName) {\n        var isSeriesHidden = this.isSeriesHidden(seriesName);\n\n        if (isSeriesHidden.isHidden) {\n          this.ctx.legend.legendHelpers.toggleDataSeries(isSeriesHidden.realIndex, true);\n        }\n      }\n    }, {\n      key: \"hideSeries\",\n      value: function hideSeries(seriesName) {\n        var isSeriesHidden = this.isSeriesHidden(seriesName);\n\n        if (!isSeriesHidden.isHidden) {\n          this.ctx.legend.legendHelpers.toggleDataSeries(isSeriesHidden.realIndex, false);\n        }\n      }\n    }, {\n      key: \"resetSeries\",\n      value: function resetSeries() {\n        var shouldUpdateChart = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n        var shouldResetZoom = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n        var shouldResetCollapsed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n        var w = this.w;\n        var series = w.globals.initialSeries.slice();\n        w.config.series = series;\n        w.globals.previousPaths = [];\n\n        if (shouldResetCollapsed) {\n          w.globals.collapsedSeries = [];\n          w.globals.ancillaryCollapsedSeries = [];\n          w.globals.collapsedSeriesIndices = [];\n          w.globals.ancillaryCollapsedSeriesIndices = [];\n        }\n\n        if (shouldUpdateChart) {\n          if (shouldResetZoom) {\n            w.globals.zoomed = false;\n            this.ctx.updateHelpers.revertDefaultAxisMinMax();\n          }\n\n          this.ctx.updateHelpers._updateSeries(series, w.config.chart.animations.dynamicAnimation.enabled);\n        }\n      }\n    }, {\n      key: \"toggleSeriesOnHover\",\n      value: function toggleSeriesOnHover(e, targetElement) {\n        var w = this.w;\n        var allSeriesEls = w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series, .apexcharts-datalabels\");\n\n        if (e.type === 'mousemove') {\n          var seriesCnt = parseInt(targetElement.getAttribute('rel'), 10) - 1;\n          var seriesEl = null;\n          var dataLabelEl = null;\n\n          if (w.globals.axisCharts || w.config.chart.type === 'radialBar') {\n            if (w.globals.axisCharts) {\n              seriesEl = w.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(seriesCnt, \"']\"));\n              dataLabelEl = w.globals.dom.baseEl.querySelector(\".apexcharts-datalabels[data\\\\:realIndex='\".concat(seriesCnt, \"']\"));\n            } else {\n              seriesEl = w.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(seriesCnt + 1, \"']\"));\n            }\n          } else {\n            seriesEl = w.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(seriesCnt + 1, \"'] path\"));\n          }\n\n          for (var se = 0; se < allSeriesEls.length; se++) {\n            allSeriesEls[se].classList.add(this.legendInactiveClass);\n          }\n\n          if (seriesEl !== null) {\n            if (!w.globals.axisCharts) {\n              seriesEl.parentNode.classList.remove(this.legendInactiveClass);\n            }\n\n            seriesEl.classList.remove(this.legendInactiveClass);\n\n            if (dataLabelEl !== null) {\n              dataLabelEl.classList.remove(this.legendInactiveClass);\n            }\n          }\n        } else if (e.type === 'mouseout') {\n          for (var _se = 0; _se < allSeriesEls.length; _se++) {\n            allSeriesEls[_se].classList.remove(this.legendInactiveClass);\n          }\n        }\n      }\n    }, {\n      key: \"highlightRangeInSeries\",\n      value: function highlightRangeInSeries(e, targetElement) {\n        var _this = this;\n\n        var w = this.w;\n        var allHeatMapElements = w.globals.dom.baseEl.getElementsByClassName('apexcharts-heatmap-rect');\n\n        var activeInactive = function activeInactive(action) {\n          for (var i = 0; i < allHeatMapElements.length; i++) {\n            allHeatMapElements[i].classList[action](_this.legendInactiveClass);\n          }\n        };\n\n        var removeInactiveClassFromHoveredRange = function removeInactiveClassFromHoveredRange(range) {\n          for (var i = 0; i < allHeatMapElements.length; i++) {\n            var val = parseInt(allHeatMapElements[i].getAttribute('val'), 10);\n\n            if (val >= range.from && val <= range.to) {\n              allHeatMapElements[i].classList.remove(_this.legendInactiveClass);\n            }\n          }\n        };\n\n        if (e.type === 'mousemove') {\n          var seriesCnt = parseInt(targetElement.getAttribute('rel'), 10) - 1;\n          activeInactive('add');\n          var range = w.config.plotOptions.heatmap.colorScale.ranges[seriesCnt];\n          removeInactiveClassFromHoveredRange(range);\n        } else if (e.type === 'mouseout') {\n          activeInactive('remove');\n        }\n      }\n    }, {\n      key: \"getActiveConfigSeriesIndex\",\n      value: function getActiveConfigSeriesIndex() {\n        var ignoreBars = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n        var w = this.w;\n        var activeIndex = 0;\n\n        if (w.config.series.length > 1) {\n          // active series flag is required to know if user has not deactivated via legend click\n          var firstActiveSeriesIndex = w.config.series.map(function (series, index) {\n            var hasBars = false;\n\n            if (ignoreBars) {\n              hasBars = w.config.series[index].type === 'bar' || w.config.series[index].type === 'column';\n            }\n\n            return series.data && series.data.length > 0 && !hasBars ? index : -1;\n          });\n\n          for (var a = 0; a < firstActiveSeriesIndex.length; a++) {\n            if (firstActiveSeriesIndex[a] !== -1) {\n              activeIndex = firstActiveSeriesIndex[a];\n              break;\n            }\n          }\n        }\n\n        return activeIndex;\n      }\n    }, {\n      key: \"getPreviousPaths\",\n      value: function getPreviousPaths() {\n        var w = this.w;\n        w.globals.previousPaths = [];\n\n        function pushPaths(seriesEls, i, type) {\n          var paths = seriesEls[i].childNodes;\n          var dArr = {\n            type: type,\n            paths: [],\n            realIndex: seriesEls[i].getAttribute('data:realIndex')\n          };\n\n          for (var j = 0; j < paths.length; j++) {\n            if (paths[j].hasAttribute('pathTo')) {\n              var d = paths[j].getAttribute('pathTo');\n              dArr.paths.push({\n                d: d\n              });\n            }\n          }\n\n          w.globals.previousPaths.push(dArr);\n        }\n\n        var getPaths = function getPaths(chartType) {\n          return w.globals.dom.baseEl.querySelectorAll(\".apexcharts-\".concat(chartType, \"-series .apexcharts-series\"));\n        };\n\n        var chartTypes = ['line', 'area', 'bar', 'candlestick', 'radar'];\n        chartTypes.forEach(function (type) {\n          var paths = getPaths(type);\n\n          for (var p = 0; p < paths.length; p++) {\n            pushPaths(paths, p, type);\n          }\n        });\n        this.handlePrevBubbleScatterPaths('bubble');\n        this.handlePrevBubbleScatterPaths('scatter');\n        var heatmapColors = w.globals.dom.baseEl.querySelectorAll('.apexcharts-heatmap .apexcharts-series');\n\n        if (heatmapColors.length > 0) {\n          for (var h = 0; h < heatmapColors.length; h++) {\n            var seriesEls = w.globals.dom.baseEl.querySelectorAll(\".apexcharts-heatmap .apexcharts-series[data\\\\:realIndex='\".concat(h, \"'] rect\"));\n            var dArr = [];\n\n            for (var i = 0; i < seriesEls.length; i++) {\n              dArr.push({\n                color: seriesEls[i].getAttribute('color')\n              });\n            }\n\n            w.globals.previousPaths.push(dArr);\n          }\n        }\n\n        if (!w.globals.axisCharts) {\n          // for non-axis charts (i.e., circular charts, pathFrom is not usable. We need whole series)\n          w.globals.previousPaths = w.globals.series;\n        }\n      }\n    }, {\n      key: \"handlePrevBubbleScatterPaths\",\n      value: function handlePrevBubbleScatterPaths(type) {\n        var w = this.w;\n        var paths = w.globals.dom.baseEl.querySelectorAll(\".apexcharts-\".concat(type, \"-series .apexcharts-series\"));\n\n        if (paths.length > 0) {\n          for (var s = 0; s < paths.length; s++) {\n            var seriesEls = w.globals.dom.baseEl.querySelectorAll(\".apexcharts-\".concat(type, \"-series .apexcharts-series[data\\\\:realIndex='\").concat(s, \"'] circle\"));\n            var dArr = [];\n\n            for (var i = 0; i < seriesEls.length; i++) {\n              dArr.push({\n                x: seriesEls[i].getAttribute('cx'),\n                y: seriesEls[i].getAttribute('cy'),\n                r: seriesEls[i].getAttribute('r')\n              });\n            }\n\n            w.globals.previousPaths.push(dArr);\n          }\n        }\n      }\n    }, {\n      key: \"clearPreviousPaths\",\n      value: function clearPreviousPaths() {\n        var w = this.w;\n        w.globals.previousPaths = [];\n        w.globals.allSeriesCollapsed = false;\n      }\n    }, {\n      key: \"handleNoData\",\n      value: function handleNoData() {\n        var w = this.w;\n        var me = this;\n        var noDataOpts = w.config.noData;\n        var graphics = new Graphics(me.ctx);\n        var x = w.globals.svgWidth / 2;\n        var y = w.globals.svgHeight / 2;\n        var textAnchor = 'middle';\n        w.globals.noData = true;\n        w.globals.animationEnded = true;\n\n        if (noDataOpts.align === 'left') {\n          x = 10;\n          textAnchor = 'start';\n        } else if (noDataOpts.align === 'right') {\n          x = w.globals.svgWidth - 10;\n          textAnchor = 'end';\n        }\n\n        if (noDataOpts.verticalAlign === 'top') {\n          y = 50;\n        } else if (noDataOpts.verticalAlign === 'bottom') {\n          y = w.globals.svgHeight - 50;\n        }\n\n        x = x + noDataOpts.offsetX;\n        y = y + parseInt(noDataOpts.style.fontSize, 10) + 2 + noDataOpts.offsetY;\n\n        if (noDataOpts.text !== undefined && noDataOpts.text !== '') {\n          var titleText = graphics.drawText({\n            x: x,\n            y: y,\n            text: noDataOpts.text,\n            textAnchor: textAnchor,\n            fontSize: noDataOpts.style.fontSize,\n            fontFamily: noDataOpts.style.fontFamily,\n            foreColor: noDataOpts.style.color,\n            opacity: 1,\n            class: 'apexcharts-text-nodata'\n          });\n          w.globals.dom.Paper.add(titleText);\n        }\n      } // When user clicks on legends, the collapsed series is filled with [0,0,0,...,0]\n      // This is because we don't want to alter the series' length as it is used at many places\n\n    }, {\n      key: \"setNullSeriesToZeroValues\",\n      value: function setNullSeriesToZeroValues(series) {\n        var w = this.w;\n\n        for (var sl = 0; sl < series.length; sl++) {\n          if (series[sl].length === 0) {\n            for (var j = 0; j < series[w.globals.maxValsInArrayIndex].length; j++) {\n              series[sl].push(0);\n            }\n          }\n        }\n\n        return series;\n      }\n    }, {\n      key: \"hasAllSeriesEqualX\",\n      value: function hasAllSeriesEqualX() {\n        var equalLen = true;\n        var w = this.w;\n        var filteredSerX = this.filteredSeriesX();\n\n        for (var i = 0; i < filteredSerX.length - 1; i++) {\n          if (filteredSerX[i][0] !== filteredSerX[i + 1][0]) {\n            equalLen = false;\n            break;\n          }\n        }\n\n        w.globals.allSeriesHasEqualX = equalLen;\n        return equalLen;\n      }\n    }, {\n      key: \"filteredSeriesX\",\n      value: function filteredSeriesX() {\n        var w = this.w;\n        var filteredSeriesX = w.globals.seriesX.map(function (ser) {\n          return ser.length > 0 ? ser : [];\n        });\n        return filteredSeriesX;\n      }\n    }]);\n\n    return Series;\n  }();\n\n  var Data = /*#__PURE__*/function () {\n    function Data(ctx) {\n      _classCallCheck(this, Data);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.twoDSeries = [];\n      this.threeDSeries = [];\n      this.twoDSeriesX = [];\n      this.coreUtils = new CoreUtils(this.ctx);\n    }\n\n    _createClass(Data, [{\n      key: \"isMultiFormat\",\n      value: function isMultiFormat() {\n        return this.isFormatXY() || this.isFormat2DArray();\n      } // given format is [{x, y}, {x, y}]\n\n    }, {\n      key: \"isFormatXY\",\n      value: function isFormatXY() {\n        var series = this.w.config.series.slice();\n        var sr = new Series(this.ctx);\n        this.activeSeriesIndex = sr.getActiveConfigSeriesIndex();\n\n        if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && series[this.activeSeriesIndex].data[0] !== null && typeof series[this.activeSeriesIndex].data[0].x !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null) {\n          return true;\n        }\n      } // given format is [[x, y], [x, y]]\n\n    }, {\n      key: \"isFormat2DArray\",\n      value: function isFormat2DArray() {\n        var series = this.w.config.series.slice();\n        var sr = new Series(this.ctx);\n        this.activeSeriesIndex = sr.getActiveConfigSeriesIndex();\n\n        if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && typeof series[this.activeSeriesIndex].data[0] !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null && series[this.activeSeriesIndex].data[0].constructor === Array) {\n          return true;\n        }\n      }\n    }, {\n      key: \"handleFormat2DArray\",\n      value: function handleFormat2DArray(ser, i) {\n        var cnf = this.w.config;\n        var gl = this.w.globals;\n\n        if (cnf.xaxis.sorted) {\n          if (cnf.xaxis.type === 'datetime') {\n            ser[i].data.sort(function (a, b) {\n              return new Date(a[0]).getTime() - new Date(b[0]).getTime();\n            });\n          } else if (cnf.xaxis.type === 'numeric') {\n            ser[i].data.sort(function (a, b) {\n              return a[0] - b[0];\n            });\n          }\n        }\n\n        for (var j = 0; j < ser[i].data.length; j++) {\n          if (typeof ser[i].data[j][1] !== 'undefined') {\n            if (Array.isArray(ser[i].data[j][1]) && ser[i].data[j][1].length === 4) {\n              // candlestick nested ohlc format\n              this.twoDSeries.push(Utils.parseNumber(ser[i].data[j][1][3]));\n            } else if (ser[i].data[j].length === 5) {\n              // candlestick non-nested ohlc format\n              this.twoDSeries.push(Utils.parseNumber(ser[i].data[j][4]));\n            } else {\n              this.twoDSeries.push(Utils.parseNumber(ser[i].data[j][1]));\n            }\n\n            gl.dataFormatXNumeric = true;\n          }\n\n          if (cnf.xaxis.type === 'datetime') {\n            // if timestamps are provided and xaxis type is datettime,\n            var ts = new Date(ser[i].data[j][0]);\n            ts = new Date(ts).getTime();\n            this.twoDSeriesX.push(ts);\n          } else {\n            this.twoDSeriesX.push(ser[i].data[j][0]);\n          }\n        }\n\n        for (var _j = 0; _j < ser[i].data.length; _j++) {\n          if (typeof ser[i].data[_j][2] !== 'undefined') {\n            this.threeDSeries.push(ser[i].data[_j][2]);\n            gl.isDataXYZ = true;\n          }\n        }\n      }\n    }, {\n      key: \"handleFormatXY\",\n      value: function handleFormatXY(ser, i) {\n        var cnf = this.w.config;\n        var gl = this.w.globals;\n        var dt = new DateTime(this.ctx);\n        var activeI = i;\n\n        if (gl.collapsedSeriesIndices.indexOf(i) > -1) {\n          // fix #368\n          activeI = this.activeSeriesIndex;\n        }\n\n        if (cnf.xaxis.sorted) {\n          if (cnf.xaxis.type === 'datetime') {\n            ser[i].data.sort(function (a, b) {\n              return new Date(a.x).getTime() - new Date(b.x).getTime();\n            });\n          } else if (cnf.xaxis.type === 'numeric') {\n            ser[i].data.sort(function (a, b) {\n              return a.x - b.x;\n            });\n          }\n        } // get series\n\n\n        for (var j = 0; j < ser[i].data.length; j++) {\n          if (typeof ser[i].data[j].y !== 'undefined') {\n            if (Array.isArray(ser[i].data[j].y)) {\n              this.twoDSeries.push(Utils.parseNumber(ser[i].data[j].y[ser[i].data[j].y.length - 1]));\n            } else {\n              this.twoDSeries.push(Utils.parseNumber(ser[i].data[j].y));\n            }\n          }\n        } // get seriesX\n\n\n        for (var _j2 = 0; _j2 < ser[activeI].data.length; _j2++) {\n          var isXString = typeof ser[activeI].data[_j2].x === 'string';\n          var isXArr = Array.isArray(ser[activeI].data[_j2].x);\n          var isXDate = !isXArr && !!dt.isValidDate(ser[activeI].data[_j2].x.toString());\n\n          if (isXString || isXDate) {\n            // user supplied '01/01/2017' or a date string (a JS date object is not supported)\n            if (isXString || cnf.xaxis.convertedCatToNumeric) {\n              if (cnf.xaxis.type === 'datetime' && !gl.isRangeData) {\n                this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x));\n              } else {\n                // a category and not a numeric x value\n                this.fallbackToCategory = true;\n                this.twoDSeriesX.push(ser[activeI].data[_j2].x);\n              }\n            } else {\n              if (cnf.xaxis.type === 'datetime') {\n                this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x.toString()));\n              } else {\n                gl.dataFormatXNumeric = true;\n                gl.isXNumeric = true;\n                this.twoDSeriesX.push(parseFloat(ser[activeI].data[_j2].x));\n              }\n            }\n          } else if (isXArr) {\n            // a multiline label described in array format\n            this.fallbackToCategory = true;\n            this.twoDSeriesX.push(ser[activeI].data[_j2].x);\n          } else {\n            // a numeric value in x property\n            gl.isXNumeric = true;\n            gl.dataFormatXNumeric = true;\n            this.twoDSeriesX.push(ser[activeI].data[_j2].x);\n          }\n        }\n\n        if (ser[i].data[0] && typeof ser[i].data[0].z !== 'undefined') {\n          for (var t = 0; t < ser[i].data.length; t++) {\n            this.threeDSeries.push(ser[i].data[t].z);\n          }\n\n          gl.isDataXYZ = true;\n        }\n      }\n    }, {\n      key: \"handleRangeData\",\n      value: function handleRangeData(ser, i) {\n        var cnf = this.w.config;\n        var gl = this.w.globals;\n        var range = {};\n\n        if (this.isFormat2DArray()) {\n          range = this.handleRangeDataFormat('array', ser, i);\n        } else if (this.isFormatXY()) {\n          range = this.handleRangeDataFormat('xy', ser, i);\n        }\n\n        gl.seriesRangeStart.push(range.start);\n        gl.seriesRangeEnd.push(range.end);\n\n        if (cnf.xaxis.type === 'datetime') {\n          gl.seriesRangeBarTimeline.push(range.rangeUniques);\n        } // check for overlaps to avoid clashes in a timeline chart\n\n\n        gl.seriesRangeBarTimeline.forEach(function (sr, si) {\n          if (sr) {\n            sr.forEach(function (sarr, sarri) {\n              sarr.y.forEach(function (arr, arri) {\n                for (var sri = 0; sri < sarr.y.length; sri++) {\n                  if (arri !== sri) {\n                    var range1y1 = arr.y1;\n                    var range1y2 = arr.y2;\n                    var range2y1 = sarr.y[sri].y1;\n                    var range2y2 = sarr.y[sri].y2;\n\n                    if (range1y1 <= range2y2 && range2y1 <= range1y2) {\n                      if (sarr.overlaps.indexOf(arr.rangeName) < 0) {\n                        sarr.overlaps.push(arr.rangeName);\n                      }\n\n                      if (sarr.overlaps.indexOf(sarr.y[sri].rangeName) < 0) {\n                        sarr.overlaps.push(sarr.y[sri].rangeName);\n                      }\n                    }\n                  }\n                }\n              });\n            });\n          }\n        });\n        return range;\n      }\n    }, {\n      key: \"handleCandleStickData\",\n      value: function handleCandleStickData(ser, i) {\n        var gl = this.w.globals;\n        var ohlc = {};\n\n        if (this.isFormat2DArray()) {\n          ohlc = this.handleCandleStickDataFormat('array', ser, i);\n        } else if (this.isFormatXY()) {\n          ohlc = this.handleCandleStickDataFormat('xy', ser, i);\n        }\n\n        gl.seriesCandleO[i] = ohlc.o;\n        gl.seriesCandleH[i] = ohlc.h;\n        gl.seriesCandleL[i] = ohlc.l;\n        gl.seriesCandleC[i] = ohlc.c;\n        return ohlc;\n      }\n    }, {\n      key: \"handleRangeDataFormat\",\n      value: function handleRangeDataFormat(format, ser, i) {\n        var rangeStart = [];\n        var rangeEnd = [];\n        var uniqueKeys = ser[i].data.filter(function (thing, index, self) {\n          return index === self.findIndex(function (t) {\n            return t.x === thing.x;\n          });\n        }).map(function (r, index) {\n          return {\n            x: r.x,\n            overlaps: [],\n            y: []\n          };\n        });\n        var err = 'Please provide [Start, End] values in valid format. Read more https://apexcharts.com/docs/series/#rangecharts';\n        var serObj = new Series(this.ctx);\n        var activeIndex = serObj.getActiveConfigSeriesIndex();\n\n        if (format === 'array') {\n          if (ser[activeIndex].data[0][1].length !== 2) {\n            throw new Error(err);\n          }\n\n          for (var j = 0; j < ser[i].data.length; j++) {\n            rangeStart.push(ser[i].data[j][1][0]);\n            rangeEnd.push(ser[i].data[j][1][1]);\n          }\n        } else if (format === 'xy') {\n          if (ser[activeIndex].data[0].y.length !== 2) {\n            throw new Error(err);\n          }\n\n          var _loop = function _loop(_j3) {\n            var id = Utils.randomId();\n            var x = ser[i].data[_j3].x;\n            var y = {\n              y1: ser[i].data[_j3].y[0],\n              y2: ser[i].data[_j3].y[1],\n              rangeName: id\n            }; // mutating config object by adding a new property\n            // TODO: As this is specifically for timeline rangebar charts, update the docs mentioning the series only supports xy format\n\n            ser[i].data[_j3].rangeName = id;\n            var uI = uniqueKeys.findIndex(function (t) {\n              return t.x === x;\n            });\n            uniqueKeys[uI].y.push(y);\n            rangeStart.push(y.y1);\n            rangeEnd.push(y.y2);\n          };\n\n          for (var _j3 = 0; _j3 < ser[i].data.length; _j3++) {\n            _loop(_j3);\n          }\n        }\n\n        return {\n          start: rangeStart,\n          end: rangeEnd,\n          rangeUniques: uniqueKeys\n        };\n      }\n    }, {\n      key: \"handleCandleStickDataFormat\",\n      value: function handleCandleStickDataFormat(format, ser, i) {\n        var serO = [];\n        var serH = [];\n        var serL = [];\n        var serC = [];\n        var err = 'Please provide [Open, High, Low and Close] values in valid format. Read more https://apexcharts.com/docs/series/#candlestick';\n\n        if (format === 'array') {\n          if (!Array.isArray(ser[i].data[0][1]) && ser[i].data[0].length !== 5 || Array.isArray(ser[i].data[0][1]) && ser[i].data[0][1].length !== 4) {\n            throw new Error(err);\n          }\n\n          if (ser[i].data[0].length === 5) {\n            for (var j = 0; j < ser[i].data.length; j++) {\n              serO.push(ser[i].data[j][1]);\n              serH.push(ser[i].data[j][2]);\n              serL.push(ser[i].data[j][3]);\n              serC.push(ser[i].data[j][4]);\n            }\n          } else {\n            for (var _j4 = 0; _j4 < ser[i].data.length; _j4++) {\n              serO.push(ser[i].data[_j4][1][0]);\n              serH.push(ser[i].data[_j4][1][1]);\n              serL.push(ser[i].data[_j4][1][2]);\n              serC.push(ser[i].data[_j4][1][3]);\n            }\n          }\n        } else if (format === 'xy') {\n          if (ser[i].data[0].y.length !== 4) {\n            throw new Error(err);\n          }\n\n          for (var _j5 = 0; _j5 < ser[i].data.length; _j5++) {\n            serO.push(ser[i].data[_j5].y[0]);\n            serH.push(ser[i].data[_j5].y[1]);\n            serL.push(ser[i].data[_j5].y[2]);\n            serC.push(ser[i].data[_j5].y[3]);\n          }\n        }\n\n        return {\n          o: serO,\n          h: serH,\n          l: serL,\n          c: serC\n        };\n      }\n    }, {\n      key: \"parseDataAxisCharts\",\n      value: function parseDataAxisCharts(ser) {\n        var _this = this;\n\n        var ctx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.ctx;\n        var cnf = this.w.config;\n        var gl = this.w.globals;\n        var dt = new DateTime(ctx);\n        var xlabels = cnf.labels.length > 0 ? cnf.labels.slice() : cnf.xaxis.categories.slice();\n\n        var handleDates = function handleDates() {\n          for (var j = 0; j < xlabels.length; j++) {\n            if (typeof xlabels[j] === 'string') {\n              // user provided date strings\n              var isDate = dt.isValidDate(xlabels[j]);\n\n              if (isDate) {\n                _this.twoDSeriesX.push(dt.parseDate(xlabels[j]));\n              } else {\n                throw new Error('You have provided invalid Date format. Please provide a valid JavaScript Date');\n              }\n            } else {\n              // user provided timestamps\n              if (String(xlabels[j]).length !== 13) {\n                throw new Error('Please provide a valid JavaScript timestamp');\n              } else {\n                _this.twoDSeriesX.push(xlabels[j]);\n              }\n            }\n          }\n        };\n\n        for (var i = 0; i < ser.length; i++) {\n          this.twoDSeries = [];\n          this.twoDSeriesX = [];\n          this.threeDSeries = [];\n\n          if (typeof ser[i].data === 'undefined') {\n            console.error(\"It is a possibility that you may have not included 'data' property in series.\");\n            return;\n          }\n\n          if (cnf.chart.type === 'rangeBar' || cnf.chart.type === 'rangeArea' || ser[i].type === 'rangeBar' || ser[i].type === 'rangeArea') {\n            gl.isRangeData = true;\n            this.handleRangeData(ser, i);\n          }\n\n          if (this.isMultiFormat()) {\n            if (this.isFormat2DArray()) {\n              this.handleFormat2DArray(ser, i);\n            } else if (this.isFormatXY()) {\n              this.handleFormatXY(ser, i);\n            }\n\n            if (cnf.chart.type === 'candlestick' || ser[i].type === 'candlestick') {\n              this.handleCandleStickData(ser, i);\n            }\n\n            gl.series.push(this.twoDSeries);\n            gl.labels.push(this.twoDSeriesX);\n            gl.seriesX.push(this.twoDSeriesX);\n\n            if (i === this.activeSeriesIndex && !this.fallbackToCategory) {\n              gl.isXNumeric = true;\n            }\n          } else {\n            if (cnf.xaxis.type === 'datetime') {\n              // user didn't supplied [{x,y}] or [[x,y]], but single array in data.\n              // Also labels/categories were supplied differently\n              gl.isXNumeric = true;\n              handleDates();\n              gl.seriesX.push(this.twoDSeriesX);\n            } else if (cnf.xaxis.type === 'numeric') {\n              gl.isXNumeric = true;\n\n              if (xlabels.length > 0) {\n                this.twoDSeriesX = xlabels;\n                gl.seriesX.push(this.twoDSeriesX);\n              }\n            }\n\n            gl.labels.push(this.twoDSeriesX);\n            var singleArray = ser[i].data.map(function (d) {\n              return Utils.parseNumber(d);\n            });\n            gl.series.push(singleArray);\n          }\n\n          gl.seriesZ.push(this.threeDSeries);\n\n          if (ser[i].name !== undefined) {\n            gl.seriesNames.push(ser[i].name);\n          } else {\n            gl.seriesNames.push('series-' + parseInt(i + 1, 10));\n          }\n        }\n\n        return this.w;\n      }\n    }, {\n      key: \"parseDataNonAxisCharts\",\n      value: function parseDataNonAxisCharts(ser) {\n        var gl = this.w.globals;\n        var cnf = this.w.config;\n        gl.series = ser.slice();\n        gl.seriesNames = cnf.labels.slice();\n\n        for (var i = 0; i < gl.series.length; i++) {\n          if (gl.seriesNames[i] === undefined) {\n            gl.seriesNames.push('series-' + (i + 1));\n          }\n        }\n\n        return this.w;\n      }\n      /** User possibly set string categories in xaxis.categories or labels prop\n       * Or didn't set xaxis labels at all - in which case we manually do it.\n       * If user passed series data as [[3, 2], [4, 5]] or [{ x: 3, y: 55 }],\n       * this shouldn't be called\n       * @param {array} ser - the series which user passed to the config\n       */\n\n    }, {\n      key: \"handleExternalLabelsData\",\n      value: function handleExternalLabelsData(ser) {\n        var cnf = this.w.config;\n        var gl = this.w.globals;\n\n        if (cnf.xaxis.categories.length > 0) {\n          // user provided labels in xaxis.category prop\n          gl.labels = cnf.xaxis.categories;\n        } else if (cnf.labels.length > 0) {\n          // user provided labels in labels props\n          gl.labels = cnf.labels.slice();\n        } else if (this.fallbackToCategory) {\n          // user provided labels in x prop in [{ x: 3, y: 55 }] data, and those labels are already stored in gl.labels[0], so just re-arrange the gl.labels array\n          gl.labels = gl.labels[0];\n\n          if (gl.seriesRangeBarTimeline.length) {\n            gl.seriesRangeBarTimeline.map(function (srt) {\n              srt.forEach(function (sr) {\n                if (gl.labels.indexOf(sr.x) < 0 && sr.x) {\n                  gl.labels.push(sr.x);\n                }\n              });\n            });\n            gl.labels = gl.labels.filter(function (elem, pos, arr) {\n              return arr.indexOf(elem) === pos;\n            });\n          }\n\n          if (cnf.xaxis.convertedCatToNumeric) {\n            var defaults = new Defaults(cnf);\n            defaults.convertCatToNumericXaxis(cnf, this.ctx, gl.seriesX[0]);\n\n            this._generateExternalLabels(ser);\n          }\n        } else {\n          this._generateExternalLabels(ser);\n        }\n      }\n    }, {\n      key: \"_generateExternalLabels\",\n      value: function _generateExternalLabels(ser) {\n        var gl = this.w.globals;\n        var cnf = this.w.config; // user didn't provided any labels, fallback to 1-2-3-4-5\n\n        var labelArr = [];\n\n        if (gl.axisCharts) {\n          if (gl.series.length > 0) {\n            for (var i = 0; i < gl.series[gl.maxValsInArrayIndex].length; i++) {\n              labelArr.push(i + 1);\n            }\n          }\n\n          gl.seriesX = []; // create gl.seriesX as it will be used in calculations of x positions\n\n          for (var _i = 0; _i < ser.length; _i++) {\n            gl.seriesX.push(labelArr);\n          } // turn on the isXNumeric flag to allow minX and maxX to function properly\n\n\n          gl.isXNumeric = true;\n        } // no series to pull labels from, put a 0-10 series\n        // possibly, user collapsed all series. Hence we can't work with above calc\n\n\n        if (labelArr.length === 0) {\n          labelArr = gl.axisCharts ? [] : gl.series.map(function (gls, glsi) {\n            return glsi + 1;\n          });\n\n          for (var _i2 = 0; _i2 < ser.length; _i2++) {\n            gl.seriesX.push(labelArr);\n          }\n        } // Finally, pass the labelArr in gl.labels which will be printed on x-axis\n\n\n        gl.labels = labelArr;\n\n        if (cnf.xaxis.convertedCatToNumeric) {\n          gl.categoryLabels = labelArr.map(function (l) {\n            return cnf.xaxis.labels.formatter(l);\n          });\n        } // Turn on this global flag to indicate no labels were provided by user\n\n\n        gl.noLabelsProvided = true;\n      } // Segregate user provided data into appropriate vars\n\n    }, {\n      key: \"parseData\",\n      value: function parseData(ser) {\n        var w = this.w;\n        var cnf = w.config;\n        var gl = w.globals;\n        this.excludeCollapsedSeriesInYAxis(); // If we detected string in X prop of series, we fallback to category x-axis\n\n        this.fallbackToCategory = false;\n        this.ctx.core.resetGlobals();\n        this.ctx.core.isMultipleY();\n\n        if (gl.axisCharts) {\n          // axisCharts includes line / area / column / scatter\n          this.parseDataAxisCharts(ser);\n        } else {\n          // non-axis charts are pie / donut\n          this.parseDataNonAxisCharts(ser);\n        }\n\n        this.coreUtils.getLargestSeries(); // set Null values to 0 in all series when user hides/shows some series\n\n        if (cnf.chart.type === 'bar' && cnf.chart.stacked) {\n          var series = new Series(this.ctx);\n          gl.series = series.setNullSeriesToZeroValues(gl.series);\n        }\n\n        this.coreUtils.getSeriesTotals();\n\n        if (gl.axisCharts) {\n          this.coreUtils.getStackedSeriesTotals();\n        }\n\n        this.coreUtils.getPercentSeries();\n\n        if (!gl.dataFormatXNumeric && (!gl.isXNumeric || cnf.xaxis.type === 'numeric' && cnf.labels.length === 0 && cnf.xaxis.categories.length === 0)) {\n          // x-axis labels couldn't be detected; hence try searching every option in config\n          this.handleExternalLabelsData(ser);\n        } // check for multiline xaxis\n\n\n        var catLabels = this.coreUtils.getCategoryLabels(gl.labels);\n\n        for (var l = 0; l < catLabels.length; l++) {\n          if (Array.isArray(catLabels[l])) {\n            gl.isMultiLineX = true;\n            break;\n          }\n        }\n      }\n    }, {\n      key: \"excludeCollapsedSeriesInYAxis\",\n      value: function excludeCollapsedSeriesInYAxis() {\n        var _this2 = this;\n\n        var w = this.w;\n        w.globals.ignoreYAxisIndexes = w.globals.collapsedSeries.map(function (collapsed, i) {\n          // fix issue #1215\n          // if stacked, not returning collapsed.index to preserve yaxis\n          if (_this2.w.globals.isMultipleYAxis && !w.config.chart.stacked) {\n            return collapsed.index;\n          }\n        });\n      }\n    }]);\n\n    return Data;\n  }();\n\n  /**\n   * ApexCharts Formatter Class for setting value formatters for axes as well as tooltips.\n   *\n   * @module Formatters\n   **/\n\n  var Formatters = /*#__PURE__*/function () {\n    function Formatters(ctx) {\n      _classCallCheck(this, Formatters);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.tooltipKeyFormat = 'dd MMM';\n    }\n\n    _createClass(Formatters, [{\n      key: \"xLabelFormat\",\n      value: function xLabelFormat(fn, val, timestamp) {\n        var w = this.w;\n\n        if (w.config.xaxis.type === 'datetime') {\n          if (w.config.xaxis.labels.formatter === undefined) {\n            // if user has not specified a custom formatter, use the default tooltip.x.format\n            if (w.config.tooltip.x.formatter === undefined) {\n              var datetimeObj = new DateTime(this.ctx);\n              return datetimeObj.formatDate(datetimeObj.getDate(val), w.config.tooltip.x.format);\n            }\n          }\n        }\n\n        return fn(val, timestamp);\n      }\n    }, {\n      key: \"defaultGeneralFormatter\",\n      value: function defaultGeneralFormatter(val) {\n        if (Array.isArray(val)) {\n          return val.map(function (v) {\n            return v;\n          });\n        } else {\n          return val;\n        }\n      }\n    }, {\n      key: \"defaultYFormatter\",\n      value: function defaultYFormatter(v, yaxe, i) {\n        var w = this.w;\n\n        if (Utils.isNumber(v)) {\n          if (w.globals.yValueDecimal !== 0) {\n            v = v.toFixed(yaxe.decimalsInFloat !== undefined ? yaxe.decimalsInFloat : w.globals.yValueDecimal);\n          } else if (w.globals.maxYArr[i] - w.globals.minYArr[i] < 10) {\n            v = v.toFixed(1);\n          } else {\n            v = v.toFixed(0);\n          }\n        }\n\n        return v;\n      }\n    }, {\n      key: \"setLabelFormatters\",\n      value: function setLabelFormatters() {\n        var _this = this;\n\n        var w = this.w;\n\n        w.globals.xLabelFormatter = function (val) {\n          return _this.defaultGeneralFormatter(val);\n        };\n\n        w.globals.xaxisTooltipFormatter = function (val) {\n          return _this.defaultGeneralFormatter(val);\n        };\n\n        w.globals.ttKeyFormatter = function (val) {\n          return _this.defaultGeneralFormatter(val);\n        };\n\n        w.globals.ttZFormatter = function (val) {\n          return val;\n        };\n\n        w.globals.legendFormatter = function (val) {\n          return _this.defaultGeneralFormatter(val);\n        }; // formatter function will always overwrite format property\n\n\n        if (w.config.xaxis.labels.formatter !== undefined) {\n          w.globals.xLabelFormatter = w.config.xaxis.labels.formatter;\n        } else {\n          w.globals.xLabelFormatter = function (val) {\n            if (Utils.isNumber(val)) {\n              // numeric xaxis may have smaller range, so defaulting to 1 decimal\n              if (!w.config.xaxis.convertedCatToNumeric && w.config.xaxis.type === 'numeric' && w.globals.dataPoints < 50) {\n                return val.toFixed(1);\n              }\n\n              if (w.globals.isBarHorizontal) {\n                var range = w.globals.maxY - w.globals.minYArr;\n\n                if (range < 4) {\n                  return val.toFixed(1);\n                }\n              }\n\n              return val.toFixed(0);\n            }\n\n            return val;\n          };\n        }\n\n        if (typeof w.config.tooltip.x.formatter === 'function') {\n          w.globals.ttKeyFormatter = w.config.tooltip.x.formatter;\n        } else {\n          w.globals.ttKeyFormatter = w.globals.xLabelFormatter;\n        }\n\n        if (typeof w.config.xaxis.tooltip.formatter === 'function') {\n          w.globals.xaxisTooltipFormatter = w.config.xaxis.tooltip.formatter;\n        }\n\n        if (Array.isArray(w.config.tooltip.y)) {\n          w.globals.ttVal = w.config.tooltip.y;\n        } else {\n          if (w.config.tooltip.y.formatter !== undefined) {\n            w.globals.ttVal = w.config.tooltip.y;\n          }\n        }\n\n        if (w.config.tooltip.z.formatter !== undefined) {\n          w.globals.ttZFormatter = w.config.tooltip.z.formatter;\n        } // legend formatter - if user wants to append any global values of series to legend text\n\n\n        if (w.config.legend.formatter !== undefined) {\n          w.globals.legendFormatter = w.config.legend.formatter;\n        } // formatter function will always overwrite format property\n\n\n        w.config.yaxis.forEach(function (yaxe, i) {\n          if (yaxe.labels.formatter !== undefined) {\n            w.globals.yLabelFormatters[i] = yaxe.labels.formatter;\n          } else {\n            w.globals.yLabelFormatters[i] = function (val) {\n              if (!w.globals.xyCharts) return val;\n\n              if (Array.isArray(val)) {\n                return val.map(function (v) {\n                  return _this.defaultYFormatter(v, yaxe, i);\n                });\n              } else {\n                return _this.defaultYFormatter(val, yaxe, i);\n              }\n            };\n          }\n        });\n        return w.globals;\n      }\n    }, {\n      key: \"heatmapLabelFormatters\",\n      value: function heatmapLabelFormatters() {\n        var w = this.w;\n\n        if (w.config.chart.type === 'heatmap') {\n          w.globals.yAxisScale[0].result = w.globals.seriesNames.slice(); //  get the longest string from the labels array and also apply label formatter to it\n\n          var longest = w.globals.seriesNames.reduce(function (a, b) {\n            return a.length > b.length ? a : b;\n          }, 0);\n          w.globals.yAxisScale[0].niceMax = longest;\n          w.globals.yAxisScale[0].niceMin = longest;\n        }\n      }\n    }]);\n\n    return Formatters;\n  }();\n\n  var AxesUtils = /*#__PURE__*/function () {\n    function AxesUtils(ctx) {\n      _classCallCheck(this, AxesUtils);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    } // Based on the formatter function, get the label text and position\n\n\n    _createClass(AxesUtils, [{\n      key: \"getLabel\",\n      value: function getLabel(labels, timescaleLabels, x, i) {\n        var drawnLabels = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n        var fontSize = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '12px';\n        var w = this.w;\n        var rawLabel = typeof labels[i] === 'undefined' ? '' : labels[i];\n        var label = rawLabel;\n        var xlbFormatter = w.globals.xLabelFormatter;\n        var customFormatter = w.config.xaxis.labels.formatter;\n        var isBold = false;\n        var xFormat = new Formatters(this.ctx);\n        var timestamp = rawLabel;\n        label = xFormat.xLabelFormat(xlbFormatter, rawLabel, timestamp);\n\n        if (customFormatter !== undefined) {\n          label = customFormatter(rawLabel, labels[i], i);\n        }\n\n        var determineHighestUnit = function determineHighestUnit(unit) {\n          var highestUnit = null;\n          timescaleLabels.forEach(function (t) {\n            if (t.unit === 'month') {\n              highestUnit = 'year';\n            } else if (t.unit === 'day') {\n              highestUnit = 'month';\n            } else if (t.unit === 'hour') {\n              highestUnit = 'day';\n            } else if (t.unit === 'minute') {\n              highestUnit = 'hour';\n            }\n          });\n          return highestUnit === unit;\n        };\n\n        if (timescaleLabels.length > 0) {\n          isBold = determineHighestUnit(timescaleLabels[i].unit);\n          x = timescaleLabels[i].position;\n          label = timescaleLabels[i].value;\n        } else {\n          if (w.config.xaxis.type === 'datetime' && customFormatter === undefined) {\n            label = '';\n          }\n        }\n\n        if (typeof label === 'undefined') label = '';\n        label = Array.isArray(label) ? label : label.toString();\n        var graphics = new Graphics(this.ctx);\n        var textRect = {};\n\n        if (w.globals.rotateXLabels) {\n          textRect = graphics.getTextRects(label, parseInt(fontSize, 10), null, \"rotate(\".concat(w.config.xaxis.labels.rotate, \" 0 0)\"), false);\n        } else {\n          textRect = graphics.getTextRects(label, parseInt(fontSize, 10));\n        }\n\n        if (!Array.isArray(label) && (label.indexOf('NaN') === 0 || label.toLowerCase().indexOf('invalid') === 0 || label.toLowerCase().indexOf('infinity') >= 0 || drawnLabels.indexOf(label) >= 0 && !w.config.xaxis.labels.showDuplicates)) {\n          label = '';\n        }\n\n        return {\n          x: x,\n          text: label,\n          textRect: textRect,\n          isBold: isBold\n        };\n      }\n    }, {\n      key: \"checkForOverflowingLabels\",\n      value: function checkForOverflowingLabels(i, label, labelsLen, drawnLabels, drawnLabelsRects) {\n        var w = this.w;\n\n        if (i === 0) {\n          // check if first label is being truncated\n          if (w.globals.skipFirstTimelinelabel) {\n            label.text = '';\n          }\n        }\n\n        if (i === labelsLen - 1) {\n          // check if last label is being truncated\n          if (w.globals.skipLastTimelinelabel) {\n            label.text = '';\n          }\n        }\n\n        if (w.config.xaxis.labels.hideOverlappingLabels && drawnLabels.length > 0) {\n          var prev = drawnLabelsRects[drawnLabelsRects.length - 1];\n\n          if (label.x < prev.textRect.width / (w.globals.rotateXLabels ? Math.abs(w.config.xaxis.labels.rotate) / 12 : 1.01) + prev.x) {\n            label.text = '';\n          }\n        }\n\n        return label;\n      }\n    }, {\n      key: \"checkForReversedLabels\",\n      value: function checkForReversedLabels(i, labels) {\n        var w = this.w;\n\n        if (w.config.yaxis[i] && w.config.yaxis[i].reversed) {\n          labels.reverse();\n        }\n\n        return labels;\n      }\n    }, {\n      key: \"isYAxisHidden\",\n      value: function isYAxisHidden(index) {\n        var w = this.w;\n        var coreUtils = new CoreUtils(this.ctx);\n        return !w.config.yaxis[index].show || !w.config.yaxis[index].showForNullSeries && coreUtils.isSeriesNull(index) && w.globals.collapsedSeriesIndices.indexOf(index) === -1;\n      }\n    }, {\n      key: \"drawYAxisTicks\",\n      value: function drawYAxisTicks(x, tickAmount, axisBorder, axisTicks, realIndex, labelsDivider, elYaxis) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx); // initial label position = 0;\n\n        var t = w.globals.translateY;\n\n        if (axisTicks.show && tickAmount > 0) {\n          if (w.config.yaxis[realIndex].opposite === true) x = x + axisTicks.width;\n\n          for (var i = tickAmount; i >= 0; i--) {\n            var tY = t + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY - 1;\n\n            if (w.globals.isBarHorizontal) {\n              tY = labelsDivider * i;\n            }\n\n            if (w.config.chart.type === 'heatmap') {\n              tY = tY + labelsDivider / 2;\n            }\n\n            var elTick = graphics.drawLine(x + axisBorder.offsetX - axisTicks.width + axisTicks.offsetX, tY + axisTicks.offsetY, x + axisBorder.offsetX + axisTicks.offsetX, tY + axisTicks.offsetY, axisTicks.color);\n            elYaxis.add(elTick);\n            t = t + labelsDivider;\n          }\n        }\n      }\n    }]);\n\n    return AxesUtils;\n  }();\n\n  var Exports = /*#__PURE__*/function () {\n    function Exports(ctx) {\n      _classCallCheck(this, Exports);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    }\n\n    _createClass(Exports, [{\n      key: \"fixSvgStringForIe11\",\n      value: function fixSvgStringForIe11(svgData) {\n        // IE11 generates broken SVG that we have to fix by using regex\n        if (!Utils.isIE11()) {\n          // not IE11 - noop\n          return svgData;\n        } // replace second occurence of \"xmlns\" attribute with \"xmlns:xlink\" with correct url + add xmlns:svgjs\n\n\n        var nXmlnsSeen = 0;\n        var result = svgData.replace(/xmlns=\"http:\\/\\/www.w3.org\\/2000\\/svg\"/g, function (match) {\n          nXmlnsSeen++;\n          return nXmlnsSeen === 2 ? 'xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:svgjs=\"http://svgjs.com/svgjs\"' : match;\n        }); // remove the invalid empty namespace declarations\n\n        result = result.replace(/xmlns:NS\\d+=\"\"/g, ''); // remove these broken namespaces from attributes\n\n        result = result.replace(/NS\\d+:(\\w+:\\w+=\")/g, '$1');\n        return result;\n      }\n    }, {\n      key: \"getSvgString\",\n      value: function getSvgString() {\n        var svgString = this.w.globals.dom.Paper.svg();\n        return this.fixSvgStringForIe11(svgString);\n      }\n    }, {\n      key: \"cleanup\",\n      value: function cleanup() {\n        var w = this.w; // hide some elements to avoid printing them on exported svg\n\n        var xcrosshairs = w.globals.dom.baseEl.getElementsByClassName('apexcharts-xcrosshairs');\n        var ycrosshairs = w.globals.dom.baseEl.getElementsByClassName('apexcharts-ycrosshairs');\n        var zoomSelectionRects = w.globals.dom.baseEl.querySelectorAll('.apexcharts-zoom-rect, .apexcharts-selection-rect');\n        Array.prototype.forEach.call(zoomSelectionRects, function (z) {\n          z.setAttribute('width', 0);\n        });\n\n        if (xcrosshairs) {\n          xcrosshairs[0].setAttribute('x', -500);\n          xcrosshairs[0].setAttribute('x1', -500);\n          xcrosshairs[0].setAttribute('x2', -500);\n        }\n\n        if (ycrosshairs) {\n          ycrosshairs[0].setAttribute('y', -100);\n          ycrosshairs[0].setAttribute('y1', -100);\n          ycrosshairs[0].setAttribute('y2', -100);\n        }\n      }\n    }, {\n      key: \"svgUrl\",\n      value: function svgUrl() {\n        this.cleanup();\n        var svgData = this.getSvgString();\n        var svgBlob = new Blob([svgData], {\n          type: 'image/svg+xml;charset=utf-8'\n        });\n        return URL.createObjectURL(svgBlob);\n      }\n    }, {\n      key: \"dataURI\",\n      value: function dataURI() {\n        var _this = this;\n\n        return new Promise(function (resolve) {\n          var w = _this.w;\n\n          _this.cleanup();\n\n          var canvas = document.createElement('canvas');\n          canvas.width = w.globals.svgWidth;\n          canvas.height = parseInt(w.globals.dom.elWrap.style.height, 10); // because of resizeNonAxisCharts\n\n          var canvasBg = w.config.chart.background === 'transparent' ? '#fff' : w.config.chart.background;\n          var ctx = canvas.getContext('2d');\n          ctx.fillStyle = canvasBg;\n          ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n          var svgData = _this.getSvgString();\n\n          if (window.canvg && Utils.isIE11()) {\n            // use canvg as a polyfill to workaround ie11 considering a canvas with loaded svg 'unsafe'\n            // without ignoreClear we lose our background color; without ignoreDimensions some grid lines become invisible\n            var v = window.canvg.Canvg.fromString(ctx, svgData, {\n              ignoreClear: true,\n              ignoreDimensions: true\n            }); // render the svg to canvas\n\n            v.start();\n            var blob = canvas.msToBlob(); // dispose - missing this will cause a memory leak\n\n            v.stop();\n            resolve({\n              blob: blob\n            });\n          } else {\n            var svgUrl = 'data:image/svg+xml,' + encodeURIComponent(svgData);\n            var img = new Image();\n            img.crossOrigin = 'anonymous';\n\n            img.onload = function () {\n              ctx.drawImage(img, 0, 0);\n\n              if (canvas.msToBlob) {\n                // IE and Edge can't navigate to data urls, so we return the blob instead\n                var _blob = canvas.msToBlob();\n\n                resolve({\n                  blob: _blob\n                });\n              } else {\n                var imgURI = canvas.toDataURL('image/png');\n                resolve({\n                  imgURI: imgURI\n                });\n              }\n            };\n\n            img.src = svgUrl;\n          }\n        });\n      }\n    }, {\n      key: \"exportToSVG\",\n      value: function exportToSVG() {\n        this.triggerDownload(this.svgUrl(), '.svg');\n      }\n    }, {\n      key: \"exportToPng\",\n      value: function exportToPng() {\n        var _this2 = this;\n\n        this.dataURI().then(function (_ref) {\n          var imgURI = _ref.imgURI,\n              blob = _ref.blob;\n\n          if (blob) {\n            navigator.msSaveOrOpenBlob(blob, _this2.w.globals.chartID + '.png');\n          } else {\n            _this2.triggerDownload(imgURI, '.png');\n          }\n        });\n      }\n    }, {\n      key: \"exportToCSV\",\n      value: function exportToCSV(_ref2) {\n        var _this3 = this;\n\n        var series = _ref2.series,\n            _ref2$columnDelimiter = _ref2.columnDelimiter,\n            columnDelimiter = _ref2$columnDelimiter === void 0 ? ',' : _ref2$columnDelimiter,\n            _ref2$lineDelimiter = _ref2.lineDelimiter,\n            lineDelimiter = _ref2$lineDelimiter === void 0 ? '\\n' : _ref2$lineDelimiter;\n        var w = this.w;\n        var columns = [];\n        var rows = [];\n        var result = 'data:text/csv;charset=utf-8,';\n        var dataFormat = new Data(this.ctx);\n        var axesUtils = new AxesUtils(this.ctx);\n\n        var getCat = function getCat(i) {\n          var cat = ''; // pie / donut/ radial\n\n          if (!w.globals.axisCharts) {\n            cat = w.config.labels[i];\n          } else {\n            // xy charts\n            // non datetime\n            if (w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) {\n              if (w.globals.isBarHorizontal) {\n                var lbFormatter = w.globals.yLabelFormatters[0];\n                var sr = new Series(_this3.ctx);\n                var activeSeries = sr.getActiveConfigSeriesIndex();\n                cat = lbFormatter(w.globals.labels[i], {\n                  seriesIndex: activeSeries,\n                  dataPointIndex: i,\n                  w: w\n                });\n              } else {\n                cat = axesUtils.getLabel(w.globals.labels, w.globals.timescaleLabels, 0, i).text;\n              }\n            } // datetime, but labels specified in categories or labels\n\n\n            if (w.config.xaxis.type === 'datetime') {\n              if (w.config.xaxis.categories.length) {\n                cat = w.config.xaxis.categories[i];\n              } else if (w.config.labels.length) {\n                cat = w.config.labels[i];\n              }\n            }\n          }\n\n          return cat;\n        };\n\n        var handleAxisRowsColumns = function handleAxisRowsColumns(s, sI) {\n          if (columns.length) {\n            rows.push(columns.join(columnDelimiter));\n          }\n\n          if (s.data && s.data.length) {\n            for (var i = 0; i < s.data.length; i++) {\n              columns = [];\n              var cat = getCat(i);\n\n              if (!cat) {\n                if (dataFormat.isFormatXY()) {\n                  cat = series[sI].data[i].x;\n                } else if (dataFormat.isFormat2DArray()) {\n                  cat = series[sI].data[i] ? series[sI].data[i][0] : '';\n                }\n              }\n\n              if (sI === 0) {\n                columns.push(cat);\n\n                for (var ci = 0; ci < w.globals.series.length; ci++) {\n                  columns.push(w.globals.series[ci][i]);\n                }\n              }\n\n              if (w.config.chart.type === 'candlestick' || s.type && s.type === 'candlestick') {\n                columns.pop();\n                columns.push(w.globals.seriesCandleO[sI][i]);\n                columns.push(w.globals.seriesCandleH[sI][i]);\n                columns.push(w.globals.seriesCandleL[sI][i]);\n                columns.push(w.globals.seriesCandleC[sI][i]);\n              }\n\n              if (w.config.chart.type === 'rangeBar') {\n                columns.pop();\n                columns.push(w.globals.seriesRangeStart[sI][i]);\n                columns.push(w.globals.seriesRangeEnd[sI][i]);\n              }\n\n              if (columns.length) {\n                rows.push(columns.join(columnDelimiter));\n              }\n            }\n          }\n        };\n\n        columns.push('category');\n        series.map(function (s, sI) {\n          if (w.globals.axisCharts) {\n            columns.push(s.name ? s.name : \"series-\".concat(sI));\n          }\n        });\n\n        if (!w.globals.axisCharts) {\n          columns.push('value');\n          rows.push(columns.join(columnDelimiter));\n        }\n\n        series.map(function (s, sI) {\n          if (w.globals.axisCharts) {\n            handleAxisRowsColumns(s, sI);\n          } else {\n            columns = [];\n            columns.push(w.globals.labels[sI]);\n            columns.push(w.globals.series[sI]);\n            rows.push(columns.join(columnDelimiter));\n          }\n        });\n        result += rows.join(lineDelimiter);\n        this.triggerDownload(encodeURI(result), '.csv');\n      }\n    }, {\n      key: \"triggerDownload\",\n      value: function triggerDownload(href, ext) {\n        var downloadLink = document.createElement('a');\n        downloadLink.href = href;\n        downloadLink.download = this.w.globals.chartID + ext;\n        document.body.appendChild(downloadLink);\n        downloadLink.click();\n        document.body.removeChild(downloadLink);\n      }\n    }]);\n\n    return Exports;\n  }();\n\n  /**\n   * ApexCharts XAxis Class for drawing X-Axis.\n   *\n   * @module XAxis\n   **/\n\n  var XAxis = /*#__PURE__*/function () {\n    function XAxis(ctx) {\n      _classCallCheck(this, XAxis);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      var w = this.w;\n      this.axesUtils = new AxesUtils(ctx);\n      this.xaxisLabels = w.globals.labels.slice();\n\n      if (w.globals.timescaleLabels.length > 0 && !w.globals.isBarHorizontal) {\n        //  timeline labels are there and chart is not rangeabr timeline\n        this.xaxisLabels = w.globals.timescaleLabels.slice();\n      }\n\n      this.drawnLabels = [];\n      this.drawnLabelsRects = [];\n\n      if (w.config.xaxis.position === 'top') {\n        this.offY = 0;\n      } else {\n        this.offY = w.globals.gridHeight + 1;\n      }\n\n      this.offY = this.offY + w.config.xaxis.axisBorder.offsetY;\n      this.isCategoryBarHorizontal = w.config.chart.type === 'bar' && w.config.plotOptions.bar.horizontal;\n      this.xaxisFontSize = w.config.xaxis.labels.style.fontSize;\n      this.xaxisFontFamily = w.config.xaxis.labels.style.fontFamily;\n      this.xaxisForeColors = w.config.xaxis.labels.style.colors;\n      this.xaxisBorderWidth = w.config.xaxis.axisBorder.width;\n\n      if (this.isCategoryBarHorizontal) {\n        this.xaxisBorderWidth = w.config.yaxis[0].axisBorder.width.toString();\n      }\n\n      if (this.xaxisBorderWidth.indexOf('%') > -1) {\n        this.xaxisBorderWidth = w.globals.gridWidth * parseInt(this.xaxisBorderWidth, 10) / 100;\n      } else {\n        this.xaxisBorderWidth = parseInt(this.xaxisBorderWidth, 10);\n      }\n\n      this.xaxisBorderHeight = w.config.xaxis.axisBorder.height; // For bars, we will only consider single y xais,\n      // as we are not providing multiple yaxis for bar charts\n\n      this.yaxis = w.config.yaxis[0];\n    }\n\n    _createClass(XAxis, [{\n      key: \"drawXaxis\",\n      value: function drawXaxis() {\n        var _this = this;\n\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var elXaxis = graphics.group({\n          class: 'apexcharts-xaxis',\n          transform: \"translate(\".concat(w.config.xaxis.offsetX, \", \").concat(w.config.xaxis.offsetY, \")\")\n        });\n        var elXaxisTexts = graphics.group({\n          class: 'apexcharts-xaxis-texts-g',\n          transform: \"translate(\".concat(w.globals.translateXAxisX, \", \").concat(w.globals.translateXAxisY, \")\")\n        });\n        elXaxis.add(elXaxisTexts);\n        var colWidth; // initial x Position (keep adding column width in the loop)\n\n        var xPos = w.globals.padHorizontal;\n        var labels = [];\n\n        for (var i = 0; i < this.xaxisLabels.length; i++) {\n          labels.push(this.xaxisLabels[i]);\n        }\n\n        var labelsLen = labels.length;\n\n        if (w.globals.isXNumeric) {\n          var len = labelsLen > 1 ? labelsLen - 1 : labelsLen;\n          colWidth = w.globals.gridWidth / len;\n          xPos = xPos + colWidth / 2 + w.config.xaxis.labels.offsetX;\n        } else {\n          colWidth = w.globals.gridWidth / labels.length;\n          xPos = xPos + colWidth + w.config.xaxis.labels.offsetX;\n        }\n\n        if (w.config.xaxis.labels.show) {\n          var _loop = function _loop(_i) {\n            var x = xPos - colWidth / 2 + w.config.xaxis.labels.offsetX;\n\n            if (_i === 0 && labelsLen === 1 && colWidth / 2 === xPos && w.globals.dataPoints === 1) {\n              // single datapoint\n              x = w.globals.gridWidth / 2;\n            }\n\n            var label = _this.axesUtils.getLabel(labels, w.globals.timescaleLabels, x, _i, _this.drawnLabels, _this.xaxisFontSize);\n\n            var offsetYCorrection = 28;\n\n            if (w.globals.rotateXLabels) {\n              offsetYCorrection = 22;\n            }\n\n            label = _this.axesUtils.checkForOverflowingLabels(_i, label, labelsLen, _this.drawnLabels, _this.drawnLabelsRects);\n\n            var getCatForeColor = function getCatForeColor() {\n              return w.config.xaxis.convertedCatToNumeric ? _this.xaxisForeColors[w.globals.minX + _i - 1] : _this.xaxisForeColors[_i];\n            };\n\n            if (label.text) {\n              w.globals.xaxisLabelsCount++;\n            }\n\n            var elText = graphics.drawText({\n              x: label.x,\n              y: _this.offY + w.config.xaxis.labels.offsetY + offsetYCorrection - (w.config.xaxis.position === 'top' ? w.globals.xAxisHeight + w.config.xaxis.axisTicks.height - 2 : 0),\n              text: label.text,\n              textAnchor: 'middle',\n              fontWeight: label.isBold ? 600 : w.config.xaxis.labels.style.fontWeight,\n              fontSize: _this.xaxisFontSize,\n              fontFamily: _this.xaxisFontFamily,\n              foreColor: Array.isArray(_this.xaxisForeColors) ? getCatForeColor() : _this.xaxisForeColors,\n              isPlainText: false,\n              cssClass: 'apexcharts-xaxis-label ' + w.config.xaxis.labels.style.cssClass\n            });\n            elXaxisTexts.add(elText);\n            var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title');\n            elTooltipTitle.textContent = label.text;\n            elText.node.appendChild(elTooltipTitle);\n\n            if (label.text !== '') {\n              _this.drawnLabels.push(label.text);\n\n              _this.drawnLabelsRects.push(label);\n            }\n\n            xPos = xPos + colWidth;\n          };\n\n          for (var _i = 0; _i <= labelsLen - 1; _i++) {\n            _loop(_i);\n          }\n        }\n\n        if (w.config.xaxis.title.text !== undefined) {\n          var elXaxisTitle = graphics.group({\n            class: 'apexcharts-xaxis-title'\n          });\n          var elXAxisTitleText = graphics.drawText({\n            x: w.globals.gridWidth / 2 + w.config.xaxis.title.offsetX,\n            y: this.offY - parseFloat(this.xaxisFontSize) + w.globals.xAxisLabelsHeight + w.config.xaxis.title.offsetY,\n            text: w.config.xaxis.title.text,\n            textAnchor: 'middle',\n            fontSize: w.config.xaxis.title.style.fontSize,\n            fontFamily: w.config.xaxis.title.style.fontFamily,\n            fontWeight: w.config.xaxis.title.style.fontWeight,\n            foreColor: w.config.xaxis.title.style.color,\n            cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass\n          });\n          elXaxisTitle.add(elXAxisTitleText);\n          elXaxis.add(elXaxisTitle);\n        }\n\n        if (w.config.xaxis.axisBorder.show) {\n          var lineCorrection = 0;\n\n          if (w.config.chart.type === 'bar' && w.globals.isXNumeric) {\n            lineCorrection = lineCorrection - 15;\n          }\n\n          var elHorzLine = graphics.drawLine(w.globals.padHorizontal + lineCorrection + w.config.xaxis.axisBorder.offsetX, this.offY, this.xaxisBorderWidth, this.offY, w.config.xaxis.axisBorder.color, 0, this.xaxisBorderHeight);\n          elXaxis.add(elHorzLine);\n        }\n\n        return elXaxis;\n      } // this actually becomes the vertical axis (for bar charts)\n\n    }, {\n      key: \"drawXaxisInversed\",\n      value: function drawXaxisInversed(realIndex) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var translateYAxisX = w.config.yaxis[0].opposite ? w.globals.translateYAxisX[realIndex] : 0;\n        var elYaxis = graphics.group({\n          class: 'apexcharts-yaxis apexcharts-xaxis-inversed',\n          rel: realIndex\n        });\n        var elYaxisTexts = graphics.group({\n          class: 'apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g',\n          transform: 'translate(' + translateYAxisX + ', 0)'\n        });\n        elYaxis.add(elYaxisTexts);\n        var colHeight; // initial x Position (keep adding column width in the loop)\n\n        var yPos;\n        var labels = [];\n\n        if (w.config.yaxis[realIndex].show) {\n          for (var i = 0; i < this.xaxisLabels.length; i++) {\n            labels.push(this.xaxisLabels[i]);\n          }\n        }\n\n        colHeight = w.globals.gridHeight / labels.length;\n        yPos = -(colHeight / 2.2);\n        var lbFormatter = w.globals.yLabelFormatters[0];\n        var ylabels = w.config.yaxis[0].labels;\n\n        if (ylabels.show) {\n          for (var _i2 = 0; _i2 <= labels.length - 1; _i2++) {\n            var label = typeof labels[_i2] === 'undefined' ? '' : labels[_i2];\n            label = lbFormatter(label, {\n              seriesIndex: realIndex,\n              dataPointIndex: _i2,\n              w: w\n            });\n            var multiY = 0;\n\n            if (Array.isArray(label)) {\n              multiY = label.length / 2 * parseInt(ylabels.style.fontSize, 10);\n            }\n\n            var elLabel = graphics.drawText({\n              x: ylabels.offsetX - 15,\n              y: yPos + colHeight + ylabels.offsetY - multiY,\n              text: label,\n              textAnchor: this.yaxis.opposite ? 'start' : 'end',\n              foreColor: Array.isArray(ylabels.style.colors) ? ylabels.style.colors[_i2] : ylabels.style.colors,\n              fontSize: ylabels.style.fontSize,\n              fontFamily: ylabels.style.fontFamily,\n              fontWeight: ylabels.style.fontWeight,\n              isPlainText: false,\n              cssClass: 'apexcharts-yaxis-label ' + ylabels.style.cssClass\n            });\n            elYaxisTexts.add(elLabel);\n            var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title');\n            elTooltipTitle.textContent = label.text;\n            elLabel.node.appendChild(elTooltipTitle);\n\n            if (w.config.yaxis[realIndex].labels.rotate !== 0) {\n              var labelRotatingCenter = graphics.rotateAroundCenter(elLabel.node);\n              elLabel.node.setAttribute('transform', \"rotate(\".concat(w.config.yaxis[realIndex].labels.rotate, \" 0 \").concat(labelRotatingCenter.y, \")\"));\n            }\n\n            yPos = yPos + colHeight;\n          }\n        }\n\n        if (w.config.yaxis[0].title.text !== undefined) {\n          var elXaxisTitle = graphics.group({\n            class: 'apexcharts-yaxis-title apexcharts-xaxis-title-inversed',\n            transform: 'translate(' + translateYAxisX + ', 0)'\n          });\n          var elXAxisTitleText = graphics.drawText({\n            x: 0,\n            y: w.globals.gridHeight / 2,\n            text: w.config.yaxis[0].title.text,\n            textAnchor: 'middle',\n            foreColor: w.config.yaxis[0].title.style.color,\n            fontSize: w.config.yaxis[0].title.style.fontSize,\n            fontWeight: w.config.yaxis[0].title.style.fontWeight,\n            fontFamily: w.config.yaxis[0].title.style.fontFamily,\n            cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[0].title.style.cssClass\n          });\n          elXaxisTitle.add(elXAxisTitleText);\n          elYaxis.add(elXaxisTitle);\n        }\n\n        var offX = 0;\n\n        if (this.isCategoryBarHorizontal && w.config.yaxis[0].opposite) {\n          offX = w.globals.gridWidth;\n        }\n\n        var axisBorder = w.config.xaxis.axisBorder;\n\n        if (axisBorder.show) {\n          var elVerticalLine = graphics.drawLine(w.globals.padHorizontal + axisBorder.offsetX + offX, 1 + axisBorder.offsetY, w.globals.padHorizontal + axisBorder.offsetX + offX, w.globals.gridHeight + axisBorder.offsetY, axisBorder.color, 0);\n          elYaxis.add(elVerticalLine);\n        }\n\n        if (w.config.yaxis[0].axisTicks.show) {\n          this.axesUtils.drawYAxisTicks(offX, labels.length, w.config.yaxis[0].axisBorder, w.config.yaxis[0].axisTicks, 0, colHeight, elYaxis);\n        }\n\n        return elYaxis;\n      }\n    }, {\n      key: \"drawXaxisTicks\",\n      value: function drawXaxisTicks(x1, appendToElement) {\n        var w = this.w;\n        var x2 = x1;\n        if (x1 < 0 || x1 - 2 > w.globals.gridWidth) return;\n        var y1 = this.offY + w.config.xaxis.axisTicks.offsetY;\n        var y2 = y1 + w.config.xaxis.axisTicks.height;\n\n        if (w.config.xaxis.position === 'top') {\n          y2 = y1 - w.config.xaxis.axisTicks.height;\n        }\n\n        if (w.config.xaxis.axisTicks.show) {\n          var graphics = new Graphics(this.ctx);\n          var line = graphics.drawLine(x1 + w.config.xaxis.axisTicks.offsetX, y1 + w.config.xaxis.offsetY, x2 + w.config.xaxis.axisTicks.offsetX, y2 + w.config.xaxis.offsetY, w.config.xaxis.axisTicks.color); // we are not returning anything, but appending directly to the element pased in param\n\n          appendToElement.add(line);\n          line.node.classList.add('apexcharts-xaxis-tick');\n        }\n      }\n    }, {\n      key: \"getXAxisTicksPositions\",\n      value: function getXAxisTicksPositions() {\n        var w = this.w;\n        var xAxisTicksPositions = [];\n        var xCount = this.xaxisLabels.length;\n        var x1 = w.globals.padHorizontal;\n\n        if (w.globals.timescaleLabels.length > 0) {\n          for (var i = 0; i < xCount; i++) {\n            x1 = this.xaxisLabels[i].position;\n            xAxisTicksPositions.push(x1);\n          }\n        } else {\n          var xCountForCategoryCharts = xCount;\n\n          for (var _i3 = 0; _i3 < xCountForCategoryCharts; _i3++) {\n            var x1Count = xCountForCategoryCharts;\n\n            if (w.globals.isXNumeric && w.config.chart.type !== 'bar') {\n              x1Count -= 1;\n            }\n\n            x1 = x1 + w.globals.gridWidth / x1Count;\n            xAxisTicksPositions.push(x1);\n          }\n        }\n\n        return xAxisTicksPositions;\n      } // to rotate x-axis labels or to put ... for longer text in xaxis\n\n    }, {\n      key: \"xAxisLabelCorrections\",\n      value: function xAxisLabelCorrections() {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var xAxis = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g');\n        var xAxisTexts = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-texts-g text');\n        var yAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-inversed text');\n        var xAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-inversed-texts-g text tspan');\n\n        if (w.globals.rotateXLabels || w.config.xaxis.labels.rotateAlways) {\n          for (var xat = 0; xat < xAxisTexts.length; xat++) {\n            var textRotatingCenter = graphics.rotateAroundCenter(xAxisTexts[xat]);\n            textRotatingCenter.y = textRotatingCenter.y - 1; // + tickWidth/4;\n\n            textRotatingCenter.x = textRotatingCenter.x + 1;\n            xAxisTexts[xat].setAttribute('transform', \"rotate(\".concat(w.config.xaxis.labels.rotate, \" \").concat(textRotatingCenter.x, \" \").concat(textRotatingCenter.y, \")\"));\n            xAxisTexts[xat].setAttribute('text-anchor', \"end\");\n            var offsetHeight = 10;\n            xAxis.setAttribute('transform', \"translate(0, \".concat(-offsetHeight, \")\"));\n            var tSpan = xAxisTexts[xat].childNodes;\n\n            if (w.config.xaxis.labels.trim) {\n              Array.prototype.forEach.call(tSpan, function (ts) {\n                graphics.placeTextWithEllipsis(ts, ts.textContent, w.config.xaxis.labels.maxHeight - (w.config.legend.position === 'bottom' ? 20 : 10));\n              });\n            }\n          }\n        } else {\n          (function () {\n            var width = w.globals.gridWidth / (w.globals.labels.length + 1);\n\n            for (var _xat = 0; _xat < xAxisTexts.length; _xat++) {\n              var _tSpan = xAxisTexts[_xat].childNodes;\n\n              if (w.config.xaxis.labels.trim && w.config.xaxis.type !== 'datetime') {\n                Array.prototype.forEach.call(_tSpan, function (ts) {\n                  graphics.placeTextWithEllipsis(ts, ts.textContent, width);\n                });\n              }\n            }\n          })();\n        }\n\n        if (yAxisTextsInversed.length > 0) {\n          // truncate rotated y axis in bar chart (x axis)\n          var firstLabelPosX = yAxisTextsInversed[yAxisTextsInversed.length - 1].getBBox();\n          var lastLabelPosX = yAxisTextsInversed[0].getBBox();\n\n          if (firstLabelPosX.x < -20) {\n            yAxisTextsInversed[yAxisTextsInversed.length - 1].parentNode.removeChild(yAxisTextsInversed[yAxisTextsInversed.length - 1]);\n          }\n\n          if (lastLabelPosX.x + lastLabelPosX.width > w.globals.gridWidth && !w.globals.isBarHorizontal) {\n            yAxisTextsInversed[0].parentNode.removeChild(yAxisTextsInversed[0]);\n          } // truncate rotated x axis in bar chart (y axis)\n\n\n          for (var _xat2 = 0; _xat2 < xAxisTextsInversed.length; _xat2++) {\n            graphics.placeTextWithEllipsis(xAxisTextsInversed[_xat2], xAxisTextsInversed[_xat2].textContent, w.config.yaxis[0].labels.maxWidth - parseFloat(w.config.yaxis[0].title.style.fontSize) * 2 - 20);\n          }\n        }\n      } // renderXAxisBands() {\n      //   let w = this.w;\n      //   let plotBand = document.createElementNS(w.globals.SVGNS, 'rect')\n      //   w.globals.dom.elGraphical.add(plotBand)\n      // }\n\n    }]);\n\n    return XAxis;\n  }();\n\n  /**\n   * ApexCharts Grid Class for drawing Cartesian Grid.\n   *\n   * @module Grid\n   **/\n\n  var Grid = /*#__PURE__*/function () {\n    function Grid(ctx) {\n      _classCallCheck(this, Grid);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      var w = this.w;\n      this.xaxisLabels = w.globals.labels.slice();\n      this.axesUtils = new AxesUtils(ctx);\n      this.isTimelineBar = w.config.xaxis.type === 'datetime' && w.globals.seriesRangeBarTimeline.length;\n\n      if (w.globals.timescaleLabels.length > 0) {\n        //  timescaleLabels labels are there\n        this.xaxisLabels = w.globals.timescaleLabels.slice();\n      }\n    } // when using sparklines or when showing no grid, we need to have a grid area which is reused at many places for other calculations as well\n\n\n    _createClass(Grid, [{\n      key: \"drawGridArea\",\n      value: function drawGridArea() {\n        var elGrid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n\n        if (elGrid === null) {\n          elGrid = graphics.group({\n            class: 'apexcharts-grid'\n          });\n        }\n\n        var elVerticalLine = graphics.drawLine(w.globals.padHorizontal, 1, w.globals.padHorizontal, w.globals.gridHeight, 'transparent');\n        var elHorzLine = graphics.drawLine(w.globals.padHorizontal, w.globals.gridHeight, w.globals.gridWidth, w.globals.gridHeight, 'transparent');\n        elGrid.add(elHorzLine);\n        elGrid.add(elVerticalLine);\n        return elGrid;\n      }\n    }, {\n      key: \"drawGrid\",\n      value: function drawGrid() {\n        var gl = this.w.globals;\n        var elgrid = null;\n\n        if (gl.axisCharts) {\n          // grid is drawn after xaxis and yaxis are drawn\n          elgrid = this.renderGrid();\n          this.drawGridArea(elgrid.el);\n        }\n\n        return elgrid;\n      } // This mask will clip off overflowing graphics from the drawable area\n\n    }, {\n      key: \"createGridMask\",\n      value: function createGridMask() {\n        var w = this.w;\n        var gl = w.globals;\n        var graphics = new Graphics(this.ctx);\n        var strokeSize = Array.isArray(w.config.stroke.width) ? 0 : w.config.stroke.width;\n\n        if (Array.isArray(w.config.stroke.width)) {\n          var strokeMaxSize = 0;\n          w.config.stroke.width.forEach(function (m) {\n            strokeMaxSize = Math.max(strokeMaxSize, m);\n          });\n          strokeSize = strokeMaxSize;\n        }\n\n        gl.dom.elGridRectMask = document.createElementNS(gl.SVGNS, 'clipPath');\n        gl.dom.elGridRectMask.setAttribute('id', \"gridRectMask\".concat(gl.cuid));\n        gl.dom.elGridRectMarkerMask = document.createElementNS(gl.SVGNS, 'clipPath');\n        gl.dom.elGridRectMarkerMask.setAttribute('id', \"gridRectMarkerMask\".concat(gl.cuid)); // let barHalfWidth = 0\n\n        var type = w.config.chart.type;\n        var hasBar = type === 'bar' || type === 'rangeBar' || w.globals.comboBarCount > 0;\n        var barWidthLeft = 0;\n        var barWidthRight = 0;\n\n        if (hasBar && w.globals.isXNumeric && !w.globals.isBarHorizontal) {\n          barWidthLeft = w.config.grid.padding.left;\n          barWidthRight = w.config.grid.padding.right;\n\n          if (gl.barPadForNumericAxis > barWidthLeft) {\n            barWidthLeft = gl.barPadForNumericAxis;\n            barWidthRight = gl.barPadForNumericAxis;\n          }\n        }\n\n        gl.dom.elGridRect = graphics.drawRect(-strokeSize / 2 - barWidthLeft - 2, -strokeSize / 2, gl.gridWidth + strokeSize + barWidthRight + barWidthLeft + 4, gl.gridHeight + strokeSize, 0, '#fff');\n        var coreUtils = new CoreUtils(this);\n        coreUtils.getLargestMarkerSize();\n        var markerSize = w.globals.markers.largestSize + 1;\n        gl.dom.elGridRectMarker = graphics.drawRect(-markerSize * 2, -markerSize * 2, gl.gridWidth + markerSize * 4, gl.gridHeight + markerSize * 4, 0, '#fff');\n        gl.dom.elGridRectMask.appendChild(gl.dom.elGridRect.node);\n        gl.dom.elGridRectMarkerMask.appendChild(gl.dom.elGridRectMarker.node);\n        var defs = gl.dom.baseEl.querySelector('defs');\n        defs.appendChild(gl.dom.elGridRectMask);\n        defs.appendChild(gl.dom.elGridRectMarkerMask);\n      }\n    }, {\n      key: \"_drawGridLines\",\n      value: function _drawGridLines(_ref) {\n        var i = _ref.i,\n            x1 = _ref.x1,\n            y1 = _ref.y1,\n            x2 = _ref.x2,\n            y2 = _ref.y2,\n            xCount = _ref.xCount,\n            parent = _ref.parent;\n        var w = this.w;\n\n        var shouldDraw = function shouldDraw() {\n          if (i === 0 && w.globals.skipFirstTimelinelabel) {\n            return false;\n          }\n\n          if (i === xCount - 1 && w.globals.skipLastTimelinelabel) {\n            return false;\n          }\n\n          if (w.config.chart.type === 'radar') {\n            return false;\n          }\n\n          return true;\n        };\n\n        if (shouldDraw()) {\n          if (w.config.grid.xaxis.lines.show) {\n            this._drawGridLine({\n              x1: x1,\n              y1: y1,\n              x2: x2,\n              y2: y2,\n              parent: parent\n            });\n          }\n\n          var xAxis = new XAxis(this.ctx);\n          xAxis.drawXaxisTicks(x1, this.elg);\n        }\n      }\n    }, {\n      key: \"_drawGridLine\",\n      value: function _drawGridLine(_ref2) {\n        var x1 = _ref2.x1,\n            y1 = _ref2.y1,\n            x2 = _ref2.x2,\n            y2 = _ref2.y2,\n            parent = _ref2.parent;\n        var w = this.w;\n        var strokeDashArray = w.config.grid.strokeDashArray;\n        var graphics = new Graphics(this);\n        var line = graphics.drawLine(x1, y1, x2, y2, w.config.grid.borderColor, strokeDashArray);\n        line.node.classList.add('apexcharts-gridline');\n        parent.add(line);\n      }\n    }, {\n      key: \"_drawGridBandRect\",\n      value: function _drawGridBandRect(_ref3) {\n        var c = _ref3.c,\n            x1 = _ref3.x1,\n            y1 = _ref3.y1,\n            x2 = _ref3.x2,\n            y2 = _ref3.y2,\n            type = _ref3.type;\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        if (type === 'column' && w.config.xaxis.type === 'datetime') return;\n        var color = w.config.grid[type].colors[c];\n        var rect = graphics.drawRect(x1, y1, x2, y2, 0, color, w.config.grid[type].opacity);\n        this.elg.add(rect);\n        rect.attr('clip-path', \"url(#gridRectMask\".concat(w.globals.cuid, \")\"));\n        rect.node.classList.add(\"apexcharts-grid-\".concat(type));\n      }\n    }, {\n      key: \"_drawXYLines\",\n      value: function _drawXYLines(_ref4) {\n        var _this = this;\n\n        var xCount = _ref4.xCount,\n            tickAmount = _ref4.tickAmount;\n        var w = this.w;\n\n        var datetimeLines = function datetimeLines(_ref5) {\n          var xC = _ref5.xC,\n              x1 = _ref5.x1,\n              y1 = _ref5.y1,\n              x2 = _ref5.x2,\n              y2 = _ref5.y2;\n\n          for (var i = 0; i < xC; i++) {\n            x1 = _this.xaxisLabels[i].position;\n            x2 = _this.xaxisLabels[i].position;\n\n            _this._drawGridLines({\n              i: i,\n              x1: x1,\n              y1: y1,\n              x2: x2,\n              y2: y2,\n              xCount: xCount,\n              parent: _this.elgridLinesV\n            });\n          }\n        };\n\n        var categoryLines = function categoryLines(_ref6) {\n          var xC = _ref6.xC,\n              x1 = _ref6.x1,\n              y1 = _ref6.y1,\n              x2 = _ref6.x2,\n              y2 = _ref6.y2;\n\n          for (var i = 0; i < xC + (w.globals.isXNumeric ? 0 : 1); i++) {\n            if (i === 0 && xC === 1 && w.globals.dataPoints === 1) {\n              // single datapoint\n              x1 = w.globals.gridWidth / 2;\n              x2 = x1;\n            }\n\n            _this._drawGridLines({\n              i: i,\n              x1: x1,\n              y1: y1,\n              x2: x2,\n              y2: y2,\n              xCount: xCount,\n              parent: _this.elgridLinesV\n            });\n\n            x1 = x1 + w.globals.gridWidth / (w.globals.isXNumeric ? xC - 1 : xC);\n            x2 = x1;\n          }\n        }; // draw vertical lines\n\n\n        if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) {\n          var x1 = w.globals.padHorizontal;\n          var y1 = 0;\n          var x2;\n          var y2 = w.globals.gridHeight;\n\n          if (w.globals.timescaleLabels.length) {\n            datetimeLines({\n              xC: xCount,\n              x1: x1,\n              y1: y1,\n              x2: x2,\n              y2: y2\n            });\n          } else {\n            if (w.globals.isXNumeric) {\n              xCount = w.globals.xAxisScale.result.length;\n            }\n\n            if (w.config.xaxis.convertedCatToNumeric) {\n              // in case of a convertedCatToNumeric, some labels might be skipped due to hideOverLapping labels, hence use this var to get the visible ticks\n              xCount = w.globals.xaxisLabelsCount;\n            }\n\n            categoryLines({\n              xC: xCount,\n              x1: x1,\n              y1: y1,\n              x2: x2,\n              y2: y2\n            });\n          }\n        } // draw horizontal lines\n\n\n        if (w.config.grid.yaxis.lines.show) {\n          var _x = 0;\n          var _y = 0;\n          var _y2 = 0;\n          var _x2 = w.globals.gridWidth;\n          var tA = tickAmount + 1;\n\n          if (this.isTimelineBar) {\n            tA = w.globals.labels.length;\n          }\n\n          for (var i = 0; i < tA + (this.isTimelineBar ? 1 : 0); i++) {\n            this._drawGridLine({\n              x1: _x,\n              y1: _y,\n              x2: _x2,\n              y2: _y2,\n              parent: this.elgridLinesH\n            });\n\n            _y = _y + w.globals.gridHeight / (this.isTimelineBar ? tA : tickAmount);\n            _y2 = _y;\n          }\n        }\n      }\n    }, {\n      key: \"_drawInvertedXYLines\",\n      value: function _drawInvertedXYLines(_ref7) {\n        var xCount = _ref7.xCount;\n        var w = this.w; // draw vertical lines\n\n        if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) {\n          var x1 = w.globals.padHorizontal;\n          var y1 = 0;\n          var x2;\n          var y2 = w.globals.gridHeight;\n\n          for (var i = 0; i < xCount + 1; i++) {\n            if (w.config.grid.xaxis.lines.show) {\n              this._drawGridLine({\n                x1: x1,\n                y1: y1,\n                x2: x2,\n                y2: y2,\n                parent: this.elgridLinesV\n              });\n            }\n\n            var xAxis = new XAxis(this.ctx);\n            xAxis.drawXaxisTicks(x1, this.elg);\n            x1 = x1 + w.globals.gridWidth / xCount + 0.3;\n            x2 = x1;\n          }\n        } // draw horizontal lines\n\n\n        if (w.config.grid.yaxis.lines.show) {\n          var _x3 = 0;\n          var _y3 = 0;\n          var _y4 = 0;\n          var _x4 = w.globals.gridWidth;\n\n          for (var _i = 0; _i < w.globals.dataPoints + 1; _i++) {\n            this._drawGridLine({\n              x1: _x3,\n              y1: _y3,\n              x2: _x4,\n              y2: _y4,\n              parent: this.elgridLinesH\n            });\n\n            _y3 = _y3 + w.globals.gridHeight / w.globals.dataPoints;\n            _y4 = _y3;\n          }\n        }\n      } // actual grid rendering\n\n    }, {\n      key: \"renderGrid\",\n      value: function renderGrid() {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        this.elg = graphics.group({\n          class: 'apexcharts-grid'\n        });\n        this.elgridLinesH = graphics.group({\n          class: 'apexcharts-gridlines-horizontal'\n        });\n        this.elgridLinesV = graphics.group({\n          class: 'apexcharts-gridlines-vertical'\n        });\n        this.elg.add(this.elgridLinesH);\n        this.elg.add(this.elgridLinesV);\n\n        if (!w.config.grid.show) {\n          this.elgridLinesV.hide();\n          this.elgridLinesH.hide();\n        }\n\n        var yTickAmount = w.globals.yAxisScale.length ? w.globals.yAxisScale[0].result.length - 1 : 5;\n\n        for (var i = 0; i < w.globals.series.length; i++) {\n          if (typeof w.globals.yAxisScale[i] !== 'undefined') {\n            yTickAmount = w.globals.yAxisScale[i].result.length - 1;\n          }\n\n          if (yTickAmount > 2) break;\n        }\n\n        var xCount;\n\n        if (!w.globals.isBarHorizontal || this.isTimelineBar) {\n          xCount = this.xaxisLabels.length;\n\n          if (this.isTimelineBar) {\n            yTickAmount = w.globals.labels.length;\n          }\n\n          this._drawXYLines({\n            xCount: xCount,\n            tickAmount: yTickAmount\n          });\n        } else {\n          xCount = yTickAmount; // for horizontal bar chart, get the xaxis tickamount\n\n          yTickAmount = w.globals.xTickAmount;\n\n          this._drawInvertedXYLines({\n            xCount: xCount,\n            tickAmount: yTickAmount\n          });\n        }\n\n        this.drawGridBands(xCount, yTickAmount);\n        return {\n          el: this.elg,\n          xAxisTickWidth: w.globals.gridWidth / xCount\n        };\n      }\n    }, {\n      key: \"drawGridBands\",\n      value: function drawGridBands(xCount, tickAmount) {\n        var w = this.w; // rows background bands\n\n        if (w.config.grid.row.colors !== undefined && w.config.grid.row.colors.length > 0) {\n          var x1 = 0;\n          var y1 = 0;\n          var y2 = w.globals.gridHeight / tickAmount;\n          var x2 = w.globals.gridWidth;\n\n          for (var i = 0, c = 0; i < tickAmount; i++, c++) {\n            if (c >= w.config.grid.row.colors.length) {\n              c = 0;\n            }\n\n            this._drawGridBandRect({\n              c: c,\n              x1: x1,\n              y1: y1,\n              x2: x2,\n              y2: y2,\n              type: 'row'\n            });\n\n            y1 = y1 + w.globals.gridHeight / tickAmount;\n          }\n        } // columns background bands\n\n\n        if (w.config.grid.column.colors !== undefined && w.config.grid.column.colors.length > 0) {\n          var xc = !w.globals.isBarHorizontal && (w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) ? xCount - 1 : xCount;\n          var _x5 = w.globals.padHorizontal;\n          var _y5 = 0;\n\n          var _x6 = w.globals.padHorizontal + w.globals.gridWidth / xc;\n\n          var _y6 = w.globals.gridHeight;\n\n          for (var _i2 = 0, _c = 0; _i2 < xCount; _i2++, _c++) {\n            if (_c >= w.config.grid.column.colors.length) {\n              _c = 0;\n            }\n\n            this._drawGridBandRect({\n              c: _c,\n              x1: _x5,\n              y1: _y5,\n              x2: _x6,\n              y2: _y6,\n              type: 'column'\n            });\n\n            _x5 = _x5 + w.globals.gridWidth / xc;\n          }\n        }\n      }\n    }]);\n\n    return Grid;\n  }();\n\n  var Range = /*#__PURE__*/function () {\n    function Range(ctx) {\n      _classCallCheck(this, Range);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    } // http://stackoverflow.com/questions/326679/choosing-an-attractive-linear-scale-for-a-graphs-y-axiss\n    // This routine creates the Y axis values for a graph.\n\n\n    _createClass(Range, [{\n      key: \"niceScale\",\n      value: function niceScale(yMin, yMax, diff) {\n        var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n        var ticks = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 10;\n        var NO_MIN_MAX_PROVIDED = arguments.length > 5 ? arguments[5] : undefined;\n        var w = this.w;\n\n        if (ticks === 'dataPoints') {\n          ticks = w.globals.dataPoints - 1;\n        }\n\n        if (yMin === Number.MIN_VALUE && yMax === 0 || !Utils.isNumber(yMin) && !Utils.isNumber(yMax) || yMin === Number.MIN_VALUE && yMax === -Number.MAX_VALUE) {\n          // when all values are 0\n          yMin = 0;\n          yMax = ticks;\n          var linearScale = this.linearScale(yMin, yMax, ticks);\n          return linearScale;\n        }\n\n        if (yMin > yMax) {\n          // if somehow due to some wrong config, user sent max less than min,\n          // adjust the min/max again\n          console.warn('axis.min cannot be greater than axis.max');\n          yMax = yMin + 0.1;\n        } else if (yMin === yMax) {\n          // If yMin and yMax are identical, then\n          // adjust the yMin and yMax values to actually\n          // make a graph. Also avoids division by zero errors.\n          yMin = yMin === 0 ? 0 : yMin - 0.5; // some small value\n\n          yMax = yMax === 0 ? 2 : yMax + 0.5; // some small value\n        } // Calculate Min amd Max graphical labels and graph\n        // increments.  The number of ticks defaults to\n        // 10 which is the SUGGESTED value.  Any tick value\n        // entered is used as a suggested value which is\n        // adjusted to be a 'pretty' value.\n        //\n        // Output will be an array of the Y axis values that\n        // encompass the Y values.\n\n\n        var result = []; // Determine Range\n\n        var range = Math.abs(yMax - yMin);\n\n        if (range < 1 && NO_MIN_MAX_PROVIDED && (w.config.chart.type === 'candlestick' || w.config.series[index].type === 'candlestick' || w.globals.isRangeData)) {\n          /* fix https://github.com/apexcharts/apexcharts.js/issues/430 */\n          yMax = yMax * 1.01;\n        }\n\n        var tiks = ticks + 1; // Adjust ticks if needed\n\n        if (tiks < 2) {\n          tiks = 2;\n        } else if (tiks > 2) {\n          tiks -= 2;\n        } // Get raw step value\n\n\n        var tempStep = range / tiks; // Calculate pretty step value\n\n        var mag = Math.floor(Utils.log10(tempStep));\n        var magPow = Math.pow(10, mag);\n        var magMsd = Math.round(tempStep / magPow);\n\n        if (magMsd < 1) {\n          magMsd = 1;\n        }\n\n        var stepSize = magMsd * magPow; // build Y label array.\n        // Lower and upper bounds calculations\n\n        var lb = stepSize * Math.floor(yMin / stepSize);\n        var ub = stepSize * Math.ceil(yMax / stepSize); // Build array\n\n        var val = lb;\n\n        if (NO_MIN_MAX_PROVIDED && range > 2) {\n          while (1) {\n            result.push(val);\n            val += stepSize;\n\n            if (val > ub) {\n              break;\n            }\n          }\n\n          return {\n            result: result,\n            niceMin: result[0],\n            niceMax: result[result.length - 1]\n          };\n        } else {\n          result = [];\n          var v = yMin;\n          result.push(v);\n          var valuesDivider = Math.abs(yMax - yMin) / ticks;\n\n          for (var i = 0; i <= ticks; i++) {\n            v = v + valuesDivider;\n            result.push(v);\n          }\n\n          if (result[result.length - 2] >= yMax) {\n            result.pop();\n          }\n\n          return {\n            result: result,\n            niceMin: result[0],\n            niceMax: result[result.length - 1]\n          };\n        }\n      }\n    }, {\n      key: \"linearScale\",\n      value: function linearScale(yMin, yMax) {\n        var ticks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;\n        var range = Math.abs(yMax - yMin);\n        var step = range / ticks;\n\n        if (ticks === Number.MAX_VALUE) {\n          ticks = 10;\n          step = 1;\n        }\n\n        var result = [];\n        var v = yMin;\n\n        while (ticks >= 0) {\n          result.push(v);\n          v = v + step;\n          ticks -= 1;\n        }\n\n        return {\n          result: result,\n          niceMin: result[0],\n          niceMax: result[result.length - 1]\n        };\n      }\n    }, {\n      key: \"logarithmicScale\",\n      value: function logarithmicScale(index, yMin, yMax, ticks) {\n        if (yMin < 0 || yMin === Number.MIN_VALUE) yMin = 0.01;\n        var base = 10;\n        var min = Math.log(yMin) / Math.log(base);\n        var max = Math.log(yMax) / Math.log(base);\n        var range = Math.abs(yMax - yMin);\n        var step = range / ticks;\n        var result = [];\n        var v = yMin;\n\n        while (ticks >= 0) {\n          result.push(v);\n          v = v + step;\n          ticks -= 1;\n        }\n\n        var logs = result.map(function (niceNumber, i) {\n          if (niceNumber <= 0) {\n            niceNumber = 0.01;\n          } // calculate adjustment factor\n\n\n          var scale = (max - min) / (yMax - yMin);\n          var logVal = Math.pow(base, min + scale * (niceNumber - min));\n          return Math.round(logVal / Utils.roundToBase(logVal, base)) * Utils.roundToBase(logVal, base);\n        }); // Math.floor may have rounded the value to 0, revert back to 1\n\n        if (logs[0] === 0) logs[0] = 1;\n        return {\n          result: logs,\n          niceMin: logs[0],\n          niceMax: logs[logs.length - 1]\n        };\n      }\n    }, {\n      key: \"setYScaleForIndex\",\n      value: function setYScaleForIndex(index, minY, maxY) {\n        var gl = this.w.globals;\n        var cnf = this.w.config;\n        var y = gl.isBarHorizontal ? cnf.xaxis : cnf.yaxis[index];\n\n        if (typeof gl.yAxisScale[index] === 'undefined') {\n          gl.yAxisScale[index] = [];\n        }\n\n        var diff = Math.abs(maxY - minY);\n\n        if (y.logarithmic && diff <= 5) {\n          gl.invalidLogScale = true;\n        }\n\n        if (y.logarithmic && diff > 5) {\n          gl.allSeriesCollapsed = false;\n          gl.yAxisScale[index] = this.logarithmicScale(index, minY, maxY, y.tickAmount ? y.tickAmount : Math.floor(Math.log10(maxY)));\n        } else {\n          if (maxY === -Number.MAX_VALUE || !Utils.isNumber(maxY)) {\n            // no data in the chart. Either all series collapsed or user passed a blank array\n            gl.yAxisScale[index] = this.linearScale(0, 5, 5);\n          } else {\n            // there is some data. Turn off the allSeriesCollapsed flag\n            gl.allSeriesCollapsed = false;\n\n            if ((y.min !== undefined || y.max !== undefined) && !y.forceNiceScale) {\n              // fix https://github.com/apexcharts/apexcharts.js/issues/492\n              gl.yAxisScale[index] = this.linearScale(minY, maxY, y.tickAmount);\n            } else {\n              var noMinMaxProvided = cnf.yaxis[index].max === undefined && cnf.yaxis[index].min === undefined || cnf.yaxis[index].forceNiceScale;\n              gl.yAxisScale[index] = this.niceScale(minY, maxY, diff, index, // fix https://github.com/apexcharts/apexcharts.js/issues/397\n              y.tickAmount ? y.tickAmount : diff < 5 && diff > 1 ? diff + 1 : 5, noMinMaxProvided);\n            }\n          }\n        }\n      }\n    }, {\n      key: \"setXScale\",\n      value: function setXScale(minX, maxX) {\n        var w = this.w;\n        var gl = w.globals;\n        var x = w.config.xaxis;\n        var diff = Math.abs(maxX - minX);\n\n        if (maxX === -Number.MAX_VALUE || !Utils.isNumber(maxX)) {\n          // no data in the chart. Either all series collapsed or user passed a blank array\n          gl.xAxisScale = this.linearScale(0, 5, 5);\n        } else {\n          gl.xAxisScale = this.niceScale(minX, maxX, diff, 0, x.tickAmount ? x.tickAmount : diff < 5 && diff > 1 ? diff + 1 : 5);\n        }\n\n        return gl.xAxisScale;\n      }\n    }, {\n      key: \"setMultipleYScales\",\n      value: function setMultipleYScales() {\n        var _this = this;\n\n        var gl = this.w.globals;\n        var cnf = this.w.config;\n        var minYArr = gl.minYArr.concat([]);\n        var maxYArr = gl.maxYArr.concat([]);\n        var scalesIndices = []; // here, we loop through the yaxis array and find the item which has \"seriesName\" property\n\n        cnf.yaxis.forEach(function (yaxe, i) {\n          var index = i;\n          cnf.series.forEach(function (s, si) {\n            // if seriesName matches and that series is not collapsed, we use that scale\n            // fix issue #1215\n            // proceed even if si is in gl.collapsedSeriesIndices\n            if (s.name === yaxe.seriesName) {\n              index = si;\n\n              if (i !== si) {\n                scalesIndices.push({\n                  index: si,\n                  similarIndex: i,\n                  alreadyExists: true\n                });\n              } else {\n                scalesIndices.push({\n                  index: si\n                });\n              }\n            }\n          });\n          var minY = minYArr[index];\n          var maxY = maxYArr[index];\n\n          _this.setYScaleForIndex(i, minY, maxY);\n        });\n        this.sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices);\n      }\n    }, {\n      key: \"sameScaleInMultipleAxes\",\n      value: function sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices) {\n        var _this2 = this;\n\n        var cnf = this.w.config;\n        var gl = this.w.globals; // we got the scalesIndices array in the above code, but we need to filter out the items which doesn't have same scales\n\n        var similarIndices = [];\n        scalesIndices.forEach(function (scale) {\n          if (scale.alreadyExists) {\n            if (typeof similarIndices[scale.index] === 'undefined') {\n              similarIndices[scale.index] = [];\n            }\n\n            similarIndices[scale.index].push(scale.index);\n            similarIndices[scale.index].push(scale.similarIndex);\n          }\n        });\n\n        function intersect(a, b) {\n          return a.filter(function (value) {\n            return b.indexOf(value) !== -1;\n          });\n        }\n\n        gl.yAxisSameScaleIndices = similarIndices;\n        similarIndices.forEach(function (si, i) {\n          similarIndices.forEach(function (sj, j) {\n            if (i !== j) {\n              if (intersect(si, sj).length > 0) {\n                similarIndices[i] = similarIndices[i].concat(similarIndices[j]);\n              }\n            }\n          });\n        }); // then, we remove duplicates from the similarScale array\n\n        var uniqueSimilarIndices = similarIndices.map(function (item) {\n          return item.filter(function (i, pos) {\n            return item.indexOf(i) === pos;\n          });\n        }); // sort further to remove whole duplicate arrays later\n\n        var sortedIndices = uniqueSimilarIndices.map(function (s) {\n          return s.sort();\n        }); // remove undefined items\n\n        similarIndices = similarIndices.filter(function (s) {\n          return !!s;\n        });\n        var indices = sortedIndices.slice();\n        var stringIndices = indices.map(function (ind) {\n          return JSON.stringify(ind);\n        });\n        indices = indices.filter(function (ind, p) {\n          return stringIndices.indexOf(JSON.stringify(ind)) === p;\n        });\n        var sameScaleMinYArr = [];\n        var sameScaleMaxYArr = [];\n        minYArr.forEach(function (minYValue, yi) {\n          indices.forEach(function (scale, i) {\n            // we compare only the yIndex which exists in the indices array\n            if (scale.indexOf(yi) > -1) {\n              if (typeof sameScaleMinYArr[i] === 'undefined') {\n                sameScaleMinYArr[i] = [];\n                sameScaleMaxYArr[i] = [];\n              }\n\n              sameScaleMinYArr[i].push({\n                key: yi,\n                value: minYValue\n              });\n              sameScaleMaxYArr[i].push({\n                key: yi,\n                value: maxYArr[yi]\n              });\n            }\n          });\n        });\n        var sameScaleMin = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, Number.MIN_VALUE);\n        var sameScaleMax = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, -Number.MAX_VALUE);\n        sameScaleMinYArr.forEach(function (s, i) {\n          s.forEach(function (sc, j) {\n            sameScaleMin[i] = Math.min(sc.value, sameScaleMin[i]);\n          });\n        });\n        sameScaleMaxYArr.forEach(function (s, i) {\n          s.forEach(function (sc, j) {\n            sameScaleMax[i] = Math.max(sc.value, sameScaleMax[i]);\n          });\n        });\n        minYArr.forEach(function (min, i) {\n          sameScaleMaxYArr.forEach(function (s, si) {\n            var minY = sameScaleMin[si];\n            var maxY = sameScaleMax[si];\n\n            if (cnf.chart.stacked) {\n              // for stacked charts, we need to add the values\n              maxY = 0;\n              s.forEach(function (ind, k) {\n                // fix incorrectly adjust y scale issue #1215\n                if (ind.value !== -Number.MAX_VALUE) {\n                  maxY += ind.value;\n                }\n\n                if (minY !== Number.MIN_VALUE) {\n                  minY += sameScaleMinYArr[si][k].value;\n                }\n              });\n            }\n\n            s.forEach(function (ind, k) {\n              if (s[k].key === i) {\n                if (cnf.yaxis[i].min !== undefined) {\n                  if (typeof cnf.yaxis[i].min === 'function') {\n                    minY = cnf.yaxis[i].min(gl.minY);\n                  } else {\n                    minY = cnf.yaxis[i].min;\n                  }\n                }\n\n                if (cnf.yaxis[i].max !== undefined) {\n                  if (typeof cnf.yaxis[i].max === 'function') {\n                    maxY = cnf.yaxis[i].max(gl.maxY);\n                  } else {\n                    maxY = cnf.yaxis[i].max;\n                  }\n                }\n\n                _this2.setYScaleForIndex(i, minY, maxY);\n              }\n            });\n          });\n        });\n      } // experimental feature which scales the y-axis to a min/max based on x-axis range\n\n    }, {\n      key: \"autoScaleY\",\n      value: function autoScaleY(ctx, yaxis, e) {\n        if (!ctx) {\n          ctx = this;\n        }\n\n        var w = ctx.w;\n\n        if (w.globals.isMultipleYAxis || w.globals.collapsedSeries.length) {\n          // The autoScale option for multiple y-axis is turned off as it leads to buggy behavior.\n          // Also, when a series is collapsed, it results in incorrect behavior. Hence turned it off for that too - fixes apexcharts.js#795\n          console.warn('autoScaleYaxis is not supported in a multi-yaxis chart.');\n          return yaxis;\n        }\n\n        var seriesX = w.globals.seriesX[0];\n        var isStacked = w.config.chart.stacked;\n        yaxis.forEach(function (yaxe, yi) {\n          var firstXIndex = 0;\n\n          for (var xi = 0; xi < seriesX.length; xi++) {\n            if (seriesX[xi] >= e.xaxis.min) {\n              firstXIndex = xi;\n              break;\n            }\n          }\n\n          var initialMin = w.globals.minYArr[yi];\n          var initialMax = w.globals.maxYArr[yi];\n          var min, max;\n          var stackedSer = w.globals.stackedSeriesTotals;\n          w.globals.series.forEach(function (serie, sI) {\n            var firstValue = serie[firstXIndex];\n\n            if (isStacked) {\n              firstValue = stackedSer[firstXIndex];\n              min = max = firstValue;\n              stackedSer.forEach(function (y, yI) {\n                if (seriesX[yI] <= e.xaxis.max && seriesX[yI] >= e.xaxis.min) {\n                  if (y > max && y !== null) max = y;\n                  if (serie[yI] < min && serie[yI] !== null) min = serie[yI];\n                }\n              });\n            } else {\n              min = max = firstValue;\n              serie.forEach(function (y, yI) {\n                if (seriesX[yI] <= e.xaxis.max && seriesX[yI] >= e.xaxis.min) {\n                  var valMin = y;\n                  var valMax = y;\n                  w.globals.series.forEach(function (wS, wSI) {\n                    if (y !== null) {\n                      valMin = Math.min(wS[yI], valMin);\n                      valMax = Math.max(wS[yI], valMax);\n                    }\n                  });\n                  if (valMax > max && valMax !== null) max = valMax;\n                  if (valMin < min && valMin !== null) min = valMin;\n                }\n              });\n            }\n\n            if (min === undefined && max === undefined) {\n              min = initialMin;\n              max = initialMax;\n            }\n\n            min *= min < 0 ? 1.1 : 0.9;\n            max *= max < 0 ? 0.9 : 1.1;\n\n            if (max < 0 && max < initialMax) {\n              max = initialMax;\n            }\n\n            if (min < 0 && min > initialMin) {\n              min = initialMin;\n            }\n\n            if (yaxis.length > 1) {\n              yaxis[sI].min = yaxe.min === undefined ? min : yaxe.min;\n              yaxis[sI].max = yaxe.max === undefined ? max : yaxe.max;\n            } else {\n              yaxis[0].min = yaxe.min === undefined ? min : yaxe.min;\n              yaxis[0].max = yaxe.max === undefined ? max : yaxe.max;\n            }\n          });\n        });\n        return yaxis;\n      }\n    }]);\n\n    return Range;\n  }();\n\n  /**\n   * Range is used to generates values between min and max.\n   *\n   * @module Range\n   **/\n\n  var Range$1 = /*#__PURE__*/function () {\n    function Range$1(ctx) {\n      _classCallCheck(this, Range$1);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.scales = new Range(ctx);\n    }\n\n    _createClass(Range$1, [{\n      key: \"init\",\n      value: function init() {\n        this.setYRange();\n        this.setXRange();\n        this.setZRange();\n      }\n    }, {\n      key: \"getMinYMaxY\",\n      value: function getMinYMaxY(startingIndex) {\n        var lowestY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n        var highestY = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -Number.MAX_VALUE;\n        var len = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n        var cnf = this.w.config;\n        var gl = this.w.globals;\n        var maxY = -Number.MAX_VALUE;\n        var minY = Number.MIN_VALUE;\n\n        if (len === null) {\n          len = startingIndex + 1;\n        }\n\n        var series = gl.series;\n        var seriesMin = series;\n        var seriesMax = series;\n\n        if (cnf.chart.type === 'candlestick') {\n          seriesMin = gl.seriesCandleL;\n          seriesMax = gl.seriesCandleH;\n        } else if (gl.isRangeData) {\n          seriesMin = gl.seriesRangeStart;\n          seriesMax = gl.seriesRangeEnd;\n        }\n\n        for (var i = startingIndex; i < len; i++) {\n          gl.dataPoints = Math.max(gl.dataPoints, series[i].length);\n\n          for (var j = 0; j < gl.series[i].length; j++) {\n            var val = series[i][j];\n\n            if (val !== null && Utils.isNumber(val)) {\n              maxY = Math.max(maxY, seriesMax[i][j]);\n              lowestY = Math.min(lowestY, seriesMin[i][j]);\n              highestY = Math.max(highestY, seriesMin[i][j]);\n\n              if (this.w.config.chart.type === 'candlestick') {\n                maxY = Math.max(maxY, gl.seriesCandleO[i][j]);\n                maxY = Math.max(maxY, gl.seriesCandleH[i][j]);\n                maxY = Math.max(maxY, gl.seriesCandleL[i][j]);\n                maxY = Math.max(maxY, gl.seriesCandleC[i][j]);\n                highestY = maxY;\n              }\n\n              if (Utils.isFloat(val)) {\n                val = Utils.noExponents(val);\n                gl.yValueDecimal = Math.max(gl.yValueDecimal, val.toString().split('.')[1].length);\n              }\n\n              if (minY > seriesMin[i][j] && seriesMin[i][j] < 0) {\n                minY = seriesMin[i][j];\n              }\n            } else {\n              gl.hasNullValues = true;\n            }\n          }\n        }\n\n        if (cnf.chart.type === 'rangeBar' && gl.seriesRangeStart.length && cnf.xaxis.type === 'datetime') {\n          minY = lowestY;\n        }\n\n        if (cnf.chart.type === 'bar') {\n          if (minY < 0 && maxY < 0) {\n            // all negative values in a bar chart, hence make the max to 0\n            maxY = 0;\n          }\n\n          if (minY === Number.MIN_VALUE) {\n            minY = 0;\n          }\n        }\n\n        return {\n          minY: minY,\n          maxY: maxY,\n          lowestY: lowestY,\n          highestY: highestY\n        };\n      }\n    }, {\n      key: \"setYRange\",\n      value: function setYRange() {\n        var gl = this.w.globals;\n        var cnf = this.w.config;\n        gl.maxY = -Number.MAX_VALUE;\n        gl.minY = Number.MIN_VALUE;\n        var lowestYInAllSeries = Number.MAX_VALUE;\n\n        if (gl.isMultipleYAxis) {\n          // we need to get minY and maxY for multiple y axis\n          for (var i = 0; i < gl.series.length; i++) {\n            var minYMaxYArr = this.getMinYMaxY(i, lowestYInAllSeries, null, i + 1);\n            gl.minYArr.push(minYMaxYArr.minY);\n            gl.maxYArr.push(minYMaxYArr.maxY);\n            lowestYInAllSeries = minYMaxYArr.lowestY;\n          }\n        } // and then, get the minY and maxY from all series\n\n\n        var minYMaxY = this.getMinYMaxY(0, lowestYInAllSeries, null, gl.series.length);\n        gl.minY = minYMaxY.minY;\n        gl.maxY = minYMaxY.maxY;\n        lowestYInAllSeries = minYMaxY.lowestY;\n\n        if (cnf.chart.stacked) {\n          this._setStackedMinMax();\n        } // if the numbers are too big, reduce the range\n        // for eg, if number is between 100000-110000, putting 0 as the lowest value is not so good idea. So change the gl.minY for line/area/candlesticks\n\n\n        if (cnf.chart.type === 'line' || cnf.chart.type === 'area' || cnf.chart.type === 'candlestick') {\n          if (gl.minY === Number.MIN_VALUE && lowestYInAllSeries !== -Number.MAX_VALUE && lowestYInAllSeries !== gl.maxY // single value possibility\n          ) {\n              var diff = gl.maxY - lowestYInAllSeries;\n\n              if (lowestYInAllSeries >= 0 && lowestYInAllSeries <= 10) {\n                // if minY is already 0/low value, we don't want to go negatives here - so this check is essential.\n                diff = 0;\n              }\n\n              gl.minY = lowestYInAllSeries - diff * 5 / 100;\n              /* fix https://github.com/apexcharts/apexcharts.js/issues/614 */\n\n              /* fix https://github.com/apexcharts/apexcharts.js/issues/968 */\n\n              if (lowestYInAllSeries > 0 && gl.minY < 0) {\n                gl.minY = 0;\n              }\n              /* fix https://github.com/apexcharts/apexcharts.js/issues/426 */\n\n\n              gl.maxY = gl.maxY + diff * 5 / 100;\n            }\n        }\n\n        cnf.yaxis.forEach(function (yaxe, index) {\n          // override all min/max values by user defined values (y axis)\n          if (yaxe.max !== undefined) {\n            if (typeof yaxe.max === 'number') {\n              gl.maxYArr[index] = yaxe.max;\n            } else if (typeof yaxe.max === 'function') {\n              gl.maxYArr[index] = yaxe.max(gl.maxY);\n            } // gl.maxY is for single y-axis chart, it will be ignored in multi-yaxis\n\n\n            gl.maxY = gl.maxYArr[index];\n          }\n\n          if (yaxe.min !== undefined) {\n            if (typeof yaxe.min === 'number') {\n              gl.minYArr[index] = yaxe.min;\n            } else if (typeof yaxe.min === 'function') {\n              gl.minYArr[index] = yaxe.min(gl.minY);\n            } // gl.minY is for single y-axis chart, it will be ignored in multi-yaxis\n\n\n            gl.minY = gl.minYArr[index];\n          }\n        }); // for horizontal bar charts, we need to check xaxis min/max as user may have specified there\n\n        if (gl.isBarHorizontal) {\n          var minmax = ['min', 'max'];\n          minmax.forEach(function (m) {\n            if (cnf.xaxis[m] !== undefined && typeof cnf.xaxis[m] === 'number') {\n              m === 'min' ? gl.minY = cnf.xaxis[m] : gl.maxY = cnf.xaxis[m];\n            }\n          });\n        } // for multi y-axis we need different scales for each\n\n\n        if (gl.isMultipleYAxis) {\n          this.scales.setMultipleYScales();\n          gl.minY = lowestYInAllSeries;\n          gl.yAxisScale.forEach(function (scale, i) {\n            gl.minYArr[i] = scale.niceMin;\n            gl.maxYArr[i] = scale.niceMax;\n          });\n        } else {\n          this.scales.setYScaleForIndex(0, gl.minY, gl.maxY);\n          gl.minY = gl.yAxisScale[0].niceMin;\n          gl.maxY = gl.yAxisScale[0].niceMax;\n          gl.minYArr[0] = gl.yAxisScale[0].niceMin;\n          gl.maxYArr[0] = gl.yAxisScale[0].niceMax;\n        }\n\n        return {\n          minY: gl.minY,\n          maxY: gl.maxY,\n          minYArr: gl.minYArr,\n          maxYArr: gl.maxYArr\n        };\n      }\n    }, {\n      key: \"setXRange\",\n      value: function setXRange() {\n        var gl = this.w.globals;\n        var cnf = this.w.config;\n        var isXNumeric = cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'datetime' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided || gl.noLabelsProvided || gl.isXNumeric;\n\n        var getInitialMinXMaxX = function getInitialMinXMaxX() {\n          for (var i = 0; i < gl.series.length; i++) {\n            if (gl.labels[i]) {\n              for (var j = 0; j < gl.labels[i].length; j++) {\n                if (gl.labels[i][j] !== null && Utils.isNumber(gl.labels[i][j])) {\n                  gl.maxX = Math.max(gl.maxX, gl.labels[i][j]);\n                  gl.initialMaxX = Math.max(gl.maxX, gl.labels[i][j]);\n                  gl.minX = Math.min(gl.minX, gl.labels[i][j]);\n                  gl.initialMinX = Math.min(gl.minX, gl.labels[i][j]);\n                }\n              }\n            }\n          }\n        }; // minX maxX starts here\n\n\n        if (gl.isXNumeric) {\n          getInitialMinXMaxX();\n        }\n\n        if (gl.noLabelsProvided) {\n          if (cnf.xaxis.categories.length === 0) {\n            gl.maxX = gl.labels[gl.labels.length - 1];\n            gl.initialMaxX = gl.labels[gl.labels.length - 1];\n            gl.minX = 1;\n            gl.initialMinX = 1;\n          }\n        }\n\n        if (gl.isXNumeric || gl.noLabelsProvided || gl.dataFormatXNumeric) {\n          var ticks;\n\n          if (cnf.xaxis.tickAmount === undefined) {\n            ticks = Math.round(gl.svgWidth / 150); // no labels provided and total number of dataPoints is less than 30\n\n            if (cnf.xaxis.type === 'numeric' && gl.dataPoints < 30) {\n              ticks = gl.dataPoints - 1;\n            } // this check is for when ticks exceeds total datapoints and that would result in duplicate labels\n\n\n            if (ticks > gl.dataPoints && gl.dataPoints !== 0) {\n              ticks = gl.dataPoints - 1;\n            }\n          } else if (cnf.xaxis.tickAmount === 'dataPoints') {\n            if (gl.series.length > 1) {\n              ticks = gl.series[gl.maxValsInArrayIndex].length - 1;\n            }\n\n            if (gl.isXNumeric) {\n              ticks = gl.maxX - gl.minX - 1;\n            }\n          } else {\n            ticks = cnf.xaxis.tickAmount;\n          }\n\n          gl.xTickAmount = ticks; // override all min/max values by user defined values (x axis)\n\n          if (cnf.xaxis.max !== undefined && typeof cnf.xaxis.max === 'number') {\n            gl.maxX = cnf.xaxis.max;\n          }\n\n          if (cnf.xaxis.min !== undefined && typeof cnf.xaxis.min === 'number') {\n            gl.minX = cnf.xaxis.min;\n          } // if range is provided, adjust the new minX\n\n\n          if (cnf.xaxis.range !== undefined) {\n            gl.minX = gl.maxX - cnf.xaxis.range;\n          }\n\n          if (gl.minX !== Number.MAX_VALUE && gl.maxX !== -Number.MAX_VALUE) {\n            if (cnf.xaxis.convertedCatToNumeric && !gl.dataFormatXNumeric) {\n              var catScale = [];\n\n              for (var i = gl.minX - 1; i < gl.maxX; i++) {\n                catScale.push(i + 1);\n              }\n\n              gl.xAxisScale = {\n                result: catScale,\n                niceMin: catScale[0],\n                niceMax: catScale[catScale.length - 1]\n              };\n            } else {\n              gl.xAxisScale = this.scales.setXScale(gl.minX, gl.maxX);\n            }\n          } else {\n            gl.xAxisScale = this.scales.linearScale(1, ticks, ticks);\n\n            if (gl.noLabelsProvided && gl.labels.length > 0) {\n              gl.xAxisScale = this.scales.linearScale(1, gl.labels.length, ticks - 1); // this is the only place seriesX is again mutated\n\n              gl.seriesX = gl.labels.slice();\n            }\n          } // we will still store these labels as the count for this will be different (to draw grid and labels placement)\n\n\n          if (isXNumeric) {\n            gl.labels = gl.xAxisScale.result.slice();\n          }\n        }\n\n        if (gl.isBarHorizontal && gl.labels.length) {\n          gl.xTickAmount = gl.labels.length;\n        } // single dataPoint\n\n\n        this._handleSingleDataPoint(); // minimum x difference to calculate bar width in numeric bars\n\n\n        this._getMinXDiff();\n\n        return {\n          minX: gl.minX,\n          maxX: gl.maxX\n        };\n      }\n    }, {\n      key: \"setZRange\",\n      value: function setZRange() {\n        // minZ, maxZ starts here\n        var gl = this.w.globals;\n        if (!gl.isDataXYZ) return;\n\n        for (var i = 0; i < gl.series.length; i++) {\n          if (typeof gl.seriesZ[i] !== 'undefined') {\n            for (var j = 0; j < gl.seriesZ[i].length; j++) {\n              if (gl.seriesZ[i][j] !== null && Utils.isNumber(gl.seriesZ[i][j])) {\n                gl.maxZ = Math.max(gl.maxZ, gl.seriesZ[i][j]);\n                gl.minZ = Math.min(gl.minZ, gl.seriesZ[i][j]);\n              }\n            }\n          }\n        }\n      }\n    }, {\n      key: \"_handleSingleDataPoint\",\n      value: function _handleSingleDataPoint() {\n        var gl = this.w.globals;\n        var cnf = this.w.config;\n\n        if (gl.minX === gl.maxX) {\n          var datetimeObj = new DateTime(this.ctx);\n\n          if (cnf.xaxis.type === 'datetime') {\n            var newMinX = datetimeObj.getDate(gl.minX);\n            newMinX.setUTCDate(newMinX.getDate() - 2);\n            gl.minX = new Date(newMinX).getTime();\n            var newMaxX = datetimeObj.getDate(gl.maxX);\n            newMaxX.setUTCDate(newMaxX.getDate() + 2);\n            gl.maxX = new Date(newMaxX).getTime();\n          } else if (cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided) {\n            gl.minX = gl.minX - 2;\n            gl.initialMinX = gl.minX;\n            gl.maxX = gl.maxX + 2;\n            gl.initialMaxX = gl.maxX;\n          }\n        }\n      }\n    }, {\n      key: \"_getMinXDiff\",\n      value: function _getMinXDiff() {\n        var gl = this.w.globals;\n\n        if (gl.isXNumeric) {\n          // get the least x diff if numeric x axis is present\n          gl.seriesX.forEach(function (sX, i) {\n            if (sX.length === 1) {\n              // a small hack to prevent overlapping multiple bars when there is just 1 datapoint in bar series.\n              // fix #811\n              sX.push(gl.seriesX[gl.maxValsInArrayIndex][gl.seriesX[gl.maxValsInArrayIndex].length - 1]);\n            } // fix #983 (clone the array to avoid side effects)\n\n\n            var seriesX = sX.slice();\n            seriesX.sort(function (a, b) {\n              return a - b;\n            });\n            seriesX.forEach(function (s, j) {\n              if (j > 0) {\n                var xDiff = s - gl.seriesX[i][j - 1];\n\n                if (xDiff > 0) {\n                  gl.minXDiff = Math.min(xDiff, gl.minXDiff);\n                }\n              }\n            });\n\n            if (gl.dataPoints === 1 && gl.minXDiff === Number.MAX_VALUE) {\n              gl.minXDiff = 0.5;\n            }\n          });\n        }\n      }\n    }, {\n      key: \"_setStackedMinMax\",\n      value: function _setStackedMinMax() {\n        var gl = this.w.globals; // for stacked charts, we calculate each series's parallel values. i.e, series[0][j] + series[1][j] .... [series[i.length][j]] and get the max out of it\n\n        var stackedPoss = [];\n        var stackedNegs = [];\n\n        if (gl.series.length) {\n          for (var j = 0; j < gl.series[gl.maxValsInArrayIndex].length; j++) {\n            var poss = 0;\n            var negs = 0;\n\n            for (var i = 0; i < gl.series.length; i++) {\n              if (gl.series[i][j] !== null && Utils.isNumber(gl.series[i][j])) {\n                // 0.0001 fixes #185 when values are very small\n                gl.series[i][j] > 0 ? poss = poss + parseFloat(gl.series[i][j]) + 0.0001 : negs = negs + parseFloat(gl.series[i][j]);\n              }\n\n              if (i === gl.series.length - 1) {\n                // push all the totals to the array for future use\n                stackedPoss.push(poss);\n                stackedNegs.push(negs);\n              }\n            }\n          }\n        } // get the max/min out of the added parallel values\n\n\n        for (var z = 0; z < stackedPoss.length; z++) {\n          gl.maxY = Math.max(gl.maxY, stackedPoss[z]);\n          gl.minY = Math.min(gl.minY, stackedNegs[z]);\n        }\n      }\n    }]);\n\n    return Range$1;\n  }();\n\n  /**\n   * ApexCharts YAxis Class for drawing Y-Axis.\n   *\n   * @module YAxis\n   **/\n\n  var YAxis = /*#__PURE__*/function () {\n    function YAxis(ctx) {\n      _classCallCheck(this, YAxis);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      var w = this.w;\n      this.xaxisFontSize = w.config.xaxis.labels.style.fontSize;\n      this.axisFontFamily = w.config.xaxis.labels.style.fontFamily;\n      this.xaxisForeColors = w.config.xaxis.labels.style.colors;\n      this.isCategoryBarHorizontal = w.config.chart.type === 'bar' && w.config.plotOptions.bar.horizontal;\n      this.xAxisoffX = 0;\n\n      if (w.config.xaxis.position === 'bottom') {\n        this.xAxisoffX = w.globals.gridHeight;\n      }\n\n      this.drawnLabels = [];\n      this.axesUtils = new AxesUtils(ctx);\n    }\n\n    _createClass(YAxis, [{\n      key: \"drawYaxis\",\n      value: function drawYaxis(realIndex) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var yaxisStyle = w.config.yaxis[realIndex].labels.style;\n        var yaxisFontSize = yaxisStyle.fontSize;\n        var yaxisFontFamily = yaxisStyle.fontFamily;\n        var yaxisFontWeight = yaxisStyle.fontWeight;\n        var elYaxis = graphics.group({\n          class: 'apexcharts-yaxis',\n          rel: realIndex,\n          transform: 'translate(' + w.globals.translateYAxisX[realIndex] + ', 0)'\n        });\n\n        if (this.axesUtils.isYAxisHidden(realIndex)) {\n          return elYaxis;\n        }\n\n        var elYaxisTexts = graphics.group({\n          class: 'apexcharts-yaxis-texts-g'\n        });\n        elYaxis.add(elYaxisTexts);\n        var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1; // labelsDivider is simply svg height/number of ticks\n\n        var labelsDivider = w.globals.gridHeight / tickAmount; // initial label position = 0;\n\n        var l = w.globals.translateY;\n        var lbFormatter = w.globals.yLabelFormatters[realIndex];\n        var labels = w.globals.yAxisScale[realIndex].result.slice();\n        labels = this.axesUtils.checkForReversedLabels(realIndex, labels);\n        var firstLabel = '';\n\n        if (w.config.yaxis[realIndex].labels.show) {\n          var _loop = function _loop(i) {\n            var val = labels[i];\n            val = lbFormatter(val, i);\n            var xPad = w.config.yaxis[realIndex].labels.padding;\n\n            if (w.config.yaxis[realIndex].opposite && w.config.yaxis.length !== 0) {\n              xPad = xPad * -1;\n            }\n\n            var getForeColor = function getForeColor() {\n              return Array.isArray(yaxisStyle.colors) ? yaxisStyle.colors[i] : yaxisStyle.colors;\n            };\n\n            var label = graphics.drawText({\n              x: xPad,\n              y: l + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY + 1,\n              text: val,\n              textAnchor: w.config.yaxis[realIndex].opposite ? 'start' : 'end',\n              fontSize: yaxisFontSize,\n              fontFamily: yaxisFontFamily,\n              fontWeight: yaxisFontWeight,\n              foreColor: getForeColor(),\n              isPlainText: false,\n              cssClass: 'apexcharts-yaxis-label ' + yaxisStyle.cssClass\n            });\n\n            if (i === tickAmount) {\n              firstLabel = label;\n            }\n\n            elYaxisTexts.add(label);\n\n            if (w.config.yaxis[realIndex].labels.rotate !== 0) {\n              var firstabelRotatingCenter = graphics.rotateAroundCenter(firstLabel.node);\n              var labelRotatingCenter = graphics.rotateAroundCenter(label.node);\n              label.node.setAttribute('transform', \"rotate(\".concat(w.config.yaxis[realIndex].labels.rotate, \" \").concat(firstabelRotatingCenter.x, \" \").concat(labelRotatingCenter.y, \")\"));\n            }\n\n            l = l + labelsDivider;\n          };\n\n          for (var i = tickAmount; i >= 0; i--) {\n            _loop(i);\n          }\n        }\n\n        if (w.config.yaxis[realIndex].title.text !== undefined) {\n          var elYaxisTitle = graphics.group({\n            class: 'apexcharts-yaxis-title'\n          });\n          var _x = 0;\n\n          if (w.config.yaxis[realIndex].opposite) {\n            _x = w.globals.translateYAxisX[realIndex];\n          }\n\n          var elYAxisTitleText = graphics.drawText({\n            x: _x,\n            y: w.globals.gridHeight / 2 + w.globals.translateY + w.config.yaxis[realIndex].title.offsetY,\n            text: w.config.yaxis[realIndex].title.text,\n            textAnchor: 'end',\n            foreColor: w.config.yaxis[realIndex].title.style.color,\n            fontSize: w.config.yaxis[realIndex].title.style.fontSize,\n            fontWeight: w.config.yaxis[realIndex].title.style.fontWeight,\n            fontFamily: w.config.yaxis[realIndex].title.style.fontFamily,\n            cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[realIndex].title.style.cssClass\n          });\n          elYaxisTitle.add(elYAxisTitleText);\n          elYaxis.add(elYaxisTitle);\n        }\n\n        var axisBorder = w.config.yaxis[realIndex].axisBorder;\n        var x = 31 + axisBorder.offsetX;\n\n        if (w.config.yaxis[realIndex].opposite) {\n          x = -31 - axisBorder.offsetX;\n        }\n\n        if (axisBorder.show) {\n          var elVerticalLine = graphics.drawLine(x, w.globals.translateY + axisBorder.offsetY - 2, x, w.globals.gridHeight + w.globals.translateY + axisBorder.offsetY + 2, axisBorder.color, 0, axisBorder.width);\n          elYaxis.add(elVerticalLine);\n        }\n\n        if (w.config.yaxis[realIndex].axisTicks.show) {\n          this.axesUtils.drawYAxisTicks(x, tickAmount, axisBorder, w.config.yaxis[realIndex].axisTicks, realIndex, labelsDivider, elYaxis);\n        }\n\n        return elYaxis;\n      } // This actually becomes horizonal axis (for bar charts)\n\n    }, {\n      key: \"drawYaxisInversed\",\n      value: function drawYaxisInversed(realIndex) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var elXaxis = graphics.group({\n          class: 'apexcharts-xaxis apexcharts-yaxis-inversed'\n        });\n        var elXaxisTexts = graphics.group({\n          class: 'apexcharts-xaxis-texts-g',\n          transform: \"translate(\".concat(w.globals.translateXAxisX, \", \").concat(w.globals.translateXAxisY, \")\")\n        });\n        elXaxis.add(elXaxisTexts);\n        var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1; // labelsDivider is simply svg width/number of ticks\n\n        var labelsDivider = w.globals.gridWidth / tickAmount + 0.1; // initial label position;\n\n        var l = labelsDivider + w.config.xaxis.labels.offsetX;\n        var lbFormatter = w.globals.xLabelFormatter;\n        var labels = w.globals.yAxisScale[realIndex].result.slice();\n        var timescaleLabels = w.globals.timescaleLabels;\n\n        if (timescaleLabels.length > 0) {\n          this.xaxisLabels = timescaleLabels.slice();\n          labels = timescaleLabels.slice();\n          tickAmount = labels.length;\n        }\n\n        labels = this.axesUtils.checkForReversedLabels(realIndex, labels);\n        var tl = timescaleLabels.length;\n\n        if (w.config.xaxis.labels.show) {\n          for (var i = tl ? 0 : tickAmount; tl ? i < tl : i >= 0; tl ? i++ : i--) {\n            var val = labels[i];\n            val = lbFormatter(val, i);\n            var x = w.globals.gridWidth + w.globals.padHorizontal - (l - labelsDivider + w.config.xaxis.labels.offsetX);\n\n            if (timescaleLabels.length) {\n              var label = this.axesUtils.getLabel(labels, timescaleLabels, x, i, this.drawnLabels, this.xaxisFontSize);\n              x = label.x;\n              val = label.text;\n              this.drawnLabels.push(label.text);\n\n              if (i === 0 && w.globals.skipFirstTimelinelabel) {\n                val = '';\n              }\n\n              if (i === labels.length - 1 && w.globals.skipLastTimelinelabel) {\n                val = '';\n              }\n            }\n\n            var elTick = graphics.drawText({\n              x: x,\n              y: this.xAxisoffX + w.config.xaxis.labels.offsetY + 30 - (w.config.xaxis.position === 'top' ? w.globals.xAxisHeight + w.config.xaxis.axisTicks.height - 2 : 0),\n              text: val,\n              textAnchor: 'middle',\n              foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[realIndex] : this.xaxisForeColors,\n              fontSize: this.xaxisFontSize,\n              fontFamily: this.xaxisFontFamily,\n              fontWeight: w.config.xaxis.labels.style.fontWeight,\n              isPlainText: false,\n              cssClass: 'apexcharts-xaxis-label ' + w.config.xaxis.labels.style.cssClass\n            });\n            elXaxisTexts.add(elTick);\n            elTick.tspan(val);\n            var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title');\n            elTooltipTitle.textContent = val;\n            elTick.node.appendChild(elTooltipTitle);\n            l = l + labelsDivider;\n          }\n        }\n\n        this.inversedYAxisTitleText(elXaxis);\n        this.inversedYAxisBorder(elXaxis);\n        return elXaxis;\n      }\n    }, {\n      key: \"inversedYAxisBorder\",\n      value: function inversedYAxisBorder(parent) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var axisBorder = w.config.xaxis.axisBorder;\n\n        if (axisBorder.show) {\n          var lineCorrection = 0;\n\n          if (w.config.chart.type === 'bar' && w.globals.isXNumeric) {\n            lineCorrection = lineCorrection - 15;\n          }\n\n          var elHorzLine = graphics.drawLine(w.globals.padHorizontal + lineCorrection + axisBorder.offsetX, this.xAxisoffX, w.globals.gridWidth, this.xAxisoffX, axisBorder.color, 0, axisBorder.height);\n          parent.add(elHorzLine);\n        }\n      }\n    }, {\n      key: \"inversedYAxisTitleText\",\n      value: function inversedYAxisTitleText(parent) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n\n        if (w.config.xaxis.title.text !== undefined) {\n          var elYaxisTitle = graphics.group({\n            class: 'apexcharts-xaxis-title apexcharts-yaxis-title-inversed'\n          });\n          var elYAxisTitleText = graphics.drawText({\n            x: w.globals.gridWidth / 2 + w.config.xaxis.title.offsetX,\n            y: this.xAxisoffX + parseFloat(this.xaxisFontSize) + parseFloat(w.config.xaxis.title.style.fontSize) + w.config.xaxis.title.offsetY + 20,\n            text: w.config.xaxis.title.text,\n            textAnchor: 'middle',\n            fontSize: w.config.xaxis.title.style.fontSize,\n            fontFamily: w.config.xaxis.title.style.fontFamily,\n            fontWeight: w.config.xaxis.title.style.fontWeight,\n            cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass\n          });\n          elYaxisTitle.add(elYAxisTitleText);\n          parent.add(elYaxisTitle);\n        }\n      }\n    }, {\n      key: \"yAxisTitleRotate\",\n      value: function yAxisTitleRotate(realIndex, yAxisOpposite) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var yAxisLabelsCoord = {\n          width: 0,\n          height: 0\n        };\n        var yAxisTitleCoord = {\n          width: 0,\n          height: 0\n        };\n        var elYAxisLabelsWrap = w.globals.dom.baseEl.querySelector(\" .apexcharts-yaxis[rel='\".concat(realIndex, \"'] .apexcharts-yaxis-texts-g\"));\n\n        if (elYAxisLabelsWrap !== null) {\n          yAxisLabelsCoord = elYAxisLabelsWrap.getBoundingClientRect();\n        }\n\n        var yAxisTitle = w.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(realIndex, \"'] .apexcharts-yaxis-title text\"));\n\n        if (yAxisTitle !== null) {\n          yAxisTitleCoord = yAxisTitle.getBoundingClientRect();\n        }\n\n        if (yAxisTitle !== null) {\n          var x = this.xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite);\n          yAxisTitle.setAttribute('x', x.xPos - (yAxisOpposite ? 10 : 0));\n        }\n\n        if (yAxisTitle !== null) {\n          var titleRotatingCenter = graphics.rotateAroundCenter(yAxisTitle);\n          yAxisTitle.setAttribute('transform', \"rotate(\".concat(yAxisOpposite ? '' : '-').concat(w.config.yaxis[realIndex].title.rotate, \" \").concat(titleRotatingCenter.x, \" \").concat(titleRotatingCenter.y, \")\"));\n        }\n      }\n    }, {\n      key: \"xPaddingForYAxisTitle\",\n      value: function xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite) {\n        var w = this.w;\n        var oppositeAxisCount = 0;\n        var x = 0;\n        var padd = 10;\n\n        if (w.config.yaxis[realIndex].title.text === undefined || realIndex < 0) {\n          return {\n            xPos: x,\n            padd: 0\n          };\n        }\n\n        if (yAxisOpposite) {\n          x = yAxisLabelsCoord.width + w.config.yaxis[realIndex].title.offsetX + yAxisTitleCoord.width / 2 + padd / 2;\n          oppositeAxisCount += 1;\n\n          if (oppositeAxisCount === 0) {\n            x = x - padd / 2;\n          }\n        } else {\n          x = yAxisLabelsCoord.width * -1 + w.config.yaxis[realIndex].title.offsetX + padd / 2 + yAxisTitleCoord.width / 2;\n\n          if (w.globals.isBarHorizontal) {\n            padd = 25;\n            x = yAxisLabelsCoord.width * -1 - w.config.yaxis[realIndex].title.offsetX - padd;\n          }\n        }\n\n        return {\n          xPos: x,\n          padd: padd\n        };\n      } // sets the x position of the y-axis by counting the labels width, title width and any offset\n\n    }, {\n      key: \"setYAxisXPosition\",\n      value: function setYAxisXPosition(yaxisLabelCoords, yTitleCoords) {\n        var w = this.w;\n        var xLeft = 0;\n        var xRight = 0;\n        var leftOffsetX = 18;\n        var rightOffsetX = 1;\n\n        if (w.config.yaxis.length > 1) {\n          this.multipleYs = true;\n        }\n\n        w.config.yaxis.map(function (yaxe, index) {\n          var shouldNotDrawAxis = w.globals.ignoreYAxisIndexes.indexOf(index) > -1 || !yaxe.show || yaxe.floating || yaxisLabelCoords[index].width === 0;\n          var axisWidth = yaxisLabelCoords[index].width + yTitleCoords[index].width;\n\n          if (!yaxe.opposite) {\n            xLeft = w.globals.translateX - leftOffsetX;\n\n            if (!shouldNotDrawAxis) {\n              leftOffsetX = leftOffsetX + axisWidth + 20;\n            }\n\n            w.globals.translateYAxisX[index] = xLeft + yaxe.labels.offsetX;\n          } else {\n            if (w.globals.isBarHorizontal) {\n              xRight = w.globals.gridWidth + w.globals.translateX - 1;\n              w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX;\n            } else {\n              xRight = w.globals.gridWidth + w.globals.translateX + rightOffsetX;\n\n              if (!shouldNotDrawAxis) {\n                rightOffsetX = rightOffsetX + axisWidth + 20;\n              }\n\n              w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX + 20;\n            }\n          }\n        });\n      }\n    }, {\n      key: \"setYAxisTextAlignments\",\n      value: function setYAxisTextAlignments() {\n        var w = this.w;\n        var yaxis = w.globals.dom.baseEl.getElementsByClassName(\"apexcharts-yaxis\");\n        yaxis = Utils.listToArray(yaxis);\n        yaxis.forEach(function (y, index) {\n          var yaxe = w.config.yaxis[index]; // proceed only if user has specified alignment\n\n          if (yaxe.labels.align !== undefined) {\n            var yAxisInner = w.globals.dom.baseEl.querySelector(\".apexcharts-yaxis[rel='\".concat(index, \"'] .apexcharts-yaxis-texts-g\"));\n            var yAxisTexts = w.globals.dom.baseEl.querySelectorAll(\".apexcharts-yaxis[rel='\".concat(index, \"'] .apexcharts-yaxis-label\"));\n            yAxisTexts = Utils.listToArray(yAxisTexts);\n            var rect = yAxisInner.getBoundingClientRect();\n\n            if (yaxe.labels.align === 'left') {\n              yAxisTexts.forEach(function (label, lI) {\n                label.setAttribute('text-anchor', 'start');\n              });\n\n              if (!yaxe.opposite) {\n                yAxisInner.setAttribute('transform', \"translate(-\".concat(rect.width, \", 0)\"));\n              }\n            } else if (yaxe.labels.align === 'center') {\n              yAxisTexts.forEach(function (label, lI) {\n                label.setAttribute('text-anchor', 'middle');\n              });\n              yAxisInner.setAttribute('transform', \"translate(\".concat(rect.width / 2 * (!yaxe.opposite ? -1 : 1), \", 0)\"));\n            } else if (yaxe.labels.align === 'right') {\n              yAxisTexts.forEach(function (label, lI) {\n                label.setAttribute('text-anchor', 'end');\n              });\n\n              if (yaxe.opposite) {\n                yAxisInner.setAttribute('transform', \"translate(\".concat(rect.width, \", 0)\"));\n              }\n            }\n          }\n        });\n      }\n    }]);\n\n    return YAxis;\n  }();\n\n  var Events = /*#__PURE__*/function () {\n    function Events(ctx) {\n      _classCallCheck(this, Events);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.documentEvent = Utils.bind(this.documentEvent, this);\n    }\n\n    _createClass(Events, [{\n      key: \"addEventListener\",\n      value: function addEventListener(name, handler) {\n        var w = this.w;\n\n        if (w.globals.events.hasOwnProperty(name)) {\n          w.globals.events[name].push(handler);\n        } else {\n          w.globals.events[name] = [handler];\n        }\n      }\n    }, {\n      key: \"removeEventListener\",\n      value: function removeEventListener(name, handler) {\n        var w = this.w;\n\n        if (!w.globals.events.hasOwnProperty(name)) {\n          return;\n        }\n\n        var index = w.globals.events[name].indexOf(handler);\n\n        if (index !== -1) {\n          w.globals.events[name].splice(index, 1);\n        }\n      }\n    }, {\n      key: \"fireEvent\",\n      value: function fireEvent(name, args) {\n        var w = this.w;\n\n        if (!w.globals.events.hasOwnProperty(name)) {\n          return;\n        }\n\n        if (!args || !args.length) {\n          args = [];\n        }\n\n        var evs = w.globals.events[name];\n        var l = evs.length;\n\n        for (var i = 0; i < l; i++) {\n          evs[i].apply(null, args);\n        }\n      }\n    }, {\n      key: \"setupEventHandlers\",\n      value: function setupEventHandlers() {\n        var _this = this;\n\n        var w = this.w;\n        var me = this.ctx;\n        var clickableArea = w.globals.dom.baseEl.querySelector(w.globals.chartClass);\n        this.ctx.eventList.forEach(function (event) {\n          clickableArea.addEventListener(event, function (e) {\n            var opts = Object.assign({}, w, {\n              seriesIndex: w.globals.capturedSeriesIndex,\n              dataPointIndex: w.globals.capturedDataPointIndex\n            });\n\n            if (e.type === 'mousemove' || e.type === 'touchmove') {\n              if (typeof w.config.chart.events.mouseMove === 'function') {\n                w.config.chart.events.mouseMove(e, me, opts);\n              }\n            } else if (e.type === 'mouseup' && e.which === 1 || e.type === 'touchend') {\n              if (typeof w.config.chart.events.click === 'function') {\n                w.config.chart.events.click(e, me, opts);\n              }\n\n              me.ctx.events.fireEvent('click', [e, me, opts]);\n            }\n          }, {\n            capture: false,\n            passive: true\n          });\n        });\n        this.ctx.eventList.forEach(function (event) {\n          document.addEventListener(event, _this.documentEvent);\n        });\n        this.ctx.core.setupBrushHandler();\n      }\n    }, {\n      key: \"documentEvent\",\n      value: function documentEvent(e) {\n        var w = this.w;\n        var target = e.target.className;\n\n        if (e.type === 'click') {\n          var elMenu = w.globals.dom.baseEl.querySelector('.apexcharts-menu');\n\n          if (elMenu && elMenu.classList.contains('apexcharts-menu-open') && target !== 'apexcharts-menu-icon') {\n            elMenu.classList.remove('apexcharts-menu-open');\n          }\n        }\n\n        if (e.type === 'mousedown') {\n          var elAnnos = w.globals.dom.Paper.select('.apexcharts-resizable-element').members;\n          Array.prototype.forEach.call(elAnnos, function (el) {\n            // any shape annotations that might have selected by user for resizing, should be deselected\n            if (!e.target.classList.contains('apexcharts-resizable-element') && !e.target.classList.contains('svg_select_points')) {\n              el.selectize(false);\n            }\n          });\n        }\n\n        w.globals.clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;\n        w.globals.clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY;\n      }\n    }]);\n\n    return Events;\n  }();\n\n  var Localization = /*#__PURE__*/function () {\n    function Localization(ctx) {\n      _classCallCheck(this, Localization);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    }\n\n    _createClass(Localization, [{\n      key: \"setCurrentLocaleValues\",\n      value: function setCurrentLocaleValues(localeName) {\n        var locales = this.w.config.chart.locales; // check if user has specified locales in global Apex variable\n        // if yes - then extend those with local chart's locale\n\n        if (window.Apex.chart && window.Apex.chart.locales && window.Apex.chart.locales.length > 0) {\n          locales = this.w.config.chart.locales.concat(window.Apex.chart.locales);\n        } // find the locale from the array of locales which user has set (either by chart.defaultLocale or by calling setLocale() method.)\n\n\n        var selectedLocale = locales.filter(function (c) {\n          return c.name === localeName;\n        })[0];\n\n        if (selectedLocale) {\n          // create a complete locale object by extending defaults so you don't get undefined errors.\n          var ret = Utils.extend(en, selectedLocale); // store these locale options in global var for ease access\n\n          this.w.globals.locale = ret.options;\n        } else {\n          throw new Error('Wrong locale name provided. Please make sure you set the correct locale name in options');\n        }\n      }\n    }]);\n\n    return Localization;\n  }();\n\n  var Axes = /*#__PURE__*/function () {\n    function Axes(ctx) {\n      _classCallCheck(this, Axes);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    }\n\n    _createClass(Axes, [{\n      key: \"drawAxis\",\n      value: function drawAxis(type, xyRatios) {\n        var gl = this.w.globals;\n        var cnf = this.w.config;\n        var xAxis = new XAxis(this.ctx);\n        var yAxis = new YAxis(this.ctx);\n\n        if (gl.axisCharts && type !== 'radar') {\n          var elXaxis, elYaxis;\n\n          if (gl.isBarHorizontal) {\n            elYaxis = yAxis.drawYaxisInversed(0);\n            elXaxis = xAxis.drawXaxisInversed(0);\n            gl.dom.elGraphical.add(elXaxis);\n            gl.dom.elGraphical.add(elYaxis);\n          } else {\n            elXaxis = xAxis.drawXaxis();\n            gl.dom.elGraphical.add(elXaxis);\n            cnf.yaxis.map(function (yaxe, index) {\n              if (gl.ignoreYAxisIndexes.indexOf(index) === -1) {\n                elYaxis = yAxis.drawYaxis(index);\n                gl.dom.Paper.add(elYaxis);\n              }\n            });\n          }\n        }\n\n        cnf.yaxis.map(function (yaxe, index) {\n          if (gl.ignoreYAxisIndexes.indexOf(index) === -1) {\n            yAxis.yAxisTitleRotate(index, yaxe.opposite);\n          }\n        });\n      }\n    }]);\n\n    return Axes;\n  }();\n\n  var Crosshairs = /*#__PURE__*/function () {\n    function Crosshairs(ctx) {\n      _classCallCheck(this, Crosshairs);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    }\n\n    _createClass(Crosshairs, [{\n      key: \"drawXCrosshairs\",\n      value: function drawXCrosshairs() {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var filters = new Filters(this.ctx);\n        var crosshairGradient = w.config.xaxis.crosshairs.fill.gradient;\n        var crosshairShadow = w.config.xaxis.crosshairs.dropShadow;\n        var fillType = w.config.xaxis.crosshairs.fill.type;\n        var gradientFrom = crosshairGradient.colorFrom;\n        var gradientTo = crosshairGradient.colorTo;\n        var opacityFrom = crosshairGradient.opacityFrom;\n        var opacityTo = crosshairGradient.opacityTo;\n        var stops = crosshairGradient.stops;\n        var shadow = 'none';\n        var dropShadow = crosshairShadow.enabled;\n        var shadowLeft = crosshairShadow.left;\n        var shadowTop = crosshairShadow.top;\n        var shadowBlur = crosshairShadow.blur;\n        var shadowColor = crosshairShadow.color;\n        var shadowOpacity = crosshairShadow.opacity;\n        var xcrosshairsFill = w.config.xaxis.crosshairs.fill.color;\n\n        if (w.config.xaxis.crosshairs.show) {\n          if (fillType === 'gradient') {\n            xcrosshairsFill = graphics.drawGradient('vertical', gradientFrom, gradientTo, opacityFrom, opacityTo, null, stops, null);\n          }\n\n          var xcrosshairs = graphics.drawRect();\n\n          if (w.config.xaxis.crosshairs.width === 1) {\n            // to prevent drawing 2 lines, convert rect to line\n            xcrosshairs = graphics.drawLine();\n          }\n\n          xcrosshairs.attr({\n            class: 'apexcharts-xcrosshairs',\n            x: 0,\n            y: 0,\n            y2: w.globals.gridHeight,\n            width: Utils.isNumber(w.config.xaxis.crosshairs.width) ? w.config.xaxis.crosshairs.width : 0,\n            height: w.globals.gridHeight,\n            fill: xcrosshairsFill,\n            filter: shadow,\n            'fill-opacity': w.config.xaxis.crosshairs.opacity,\n            stroke: w.config.xaxis.crosshairs.stroke.color,\n            'stroke-width': w.config.xaxis.crosshairs.stroke.width,\n            'stroke-dasharray': w.config.xaxis.crosshairs.stroke.dashArray\n          });\n\n          if (dropShadow) {\n            xcrosshairs = filters.dropShadow(xcrosshairs, {\n              left: shadowLeft,\n              top: shadowTop,\n              blur: shadowBlur,\n              color: shadowColor,\n              opacity: shadowOpacity\n            });\n          }\n\n          w.globals.dom.elGraphical.add(xcrosshairs);\n        }\n      }\n    }, {\n      key: \"drawYCrosshairs\",\n      value: function drawYCrosshairs() {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var crosshair = w.config.yaxis[0].crosshairs;\n\n        if (w.config.yaxis[0].crosshairs.show) {\n          var ycrosshairs = graphics.drawLine(0, 0, w.globals.gridWidth, 0, crosshair.stroke.color, crosshair.stroke.dashArray, crosshair.stroke.width);\n          ycrosshairs.attr({\n            class: 'apexcharts-ycrosshairs'\n          });\n          w.globals.dom.elGraphical.add(ycrosshairs);\n        } // draw an invisible crosshair to help in positioning the yaxis tooltip\n\n\n        var ycrosshairsHidden = graphics.drawLine(0, 0, w.globals.gridWidth, 0, crosshair.stroke.color, 0, 0);\n        ycrosshairsHidden.attr({\n          class: 'apexcharts-ycrosshairs-hidden'\n        });\n        w.globals.dom.elGraphical.add(ycrosshairsHidden);\n      }\n    }]);\n\n    return Crosshairs;\n  }();\n\n  /**\n   * ApexCharts Responsive Class to override options for different screen sizes.\n   *\n   * @module Responsive\n   **/\n\n  var Responsive = /*#__PURE__*/function () {\n    function Responsive(ctx) {\n      _classCallCheck(this, Responsive);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    } // the opts parameter if not null has to be set overriding everything\n    // as the opts is set by user externally\n\n\n    _createClass(Responsive, [{\n      key: \"checkResponsiveConfig\",\n      value: function checkResponsiveConfig(opts) {\n        var _this = this;\n\n        var w = this.w;\n        var cnf = w.config; // check if responsive config exists\n\n        if (cnf.responsive.length === 0) return;\n        var res = cnf.responsive.slice();\n        res.sort(function (a, b) {\n          return a.breakpoint > b.breakpoint ? 1 : b.breakpoint > a.breakpoint ? -1 : 0;\n        }).reverse();\n        var config = new Config({});\n\n        var iterateResponsiveOptions = function iterateResponsiveOptions() {\n          var newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n          var largestBreakpoint = res[0].breakpoint;\n          var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n          if (width > largestBreakpoint) {\n            var options = CoreUtils.extendArrayProps(config, w.globals.initialConfig);\n            newOptions = Utils.extend(options, newOptions);\n            newOptions = Utils.extend(w.config, newOptions);\n\n            _this.overrideResponsiveOptions(newOptions);\n          } else {\n            for (var i = 0; i < res.length; i++) {\n              if (width < res[i].breakpoint) {\n                newOptions = CoreUtils.extendArrayProps(config, res[i].options);\n                newOptions = Utils.extend(w.config, newOptions);\n\n                _this.overrideResponsiveOptions(newOptions);\n              }\n            }\n          }\n        };\n\n        if (opts) {\n          var options = CoreUtils.extendArrayProps(config, opts);\n          options = Utils.extend(w.config, options);\n          options = Utils.extend(options, opts);\n          iterateResponsiveOptions(options);\n        } else {\n          iterateResponsiveOptions({});\n        }\n      }\n    }, {\n      key: \"overrideResponsiveOptions\",\n      value: function overrideResponsiveOptions(newOptions) {\n        var newConfig = new Config(newOptions).init({\n          responsiveOverride: true\n        });\n        this.w.config = newConfig;\n      }\n    }]);\n\n    return Responsive;\n  }();\n\n  /**\n   * ApexCharts Theme Class for setting the colors and palettes.\n   *\n   * @module Theme\n   **/\n\n  var Theme = /*#__PURE__*/function () {\n    function Theme(ctx) {\n      _classCallCheck(this, Theme);\n\n      this.ctx = ctx;\n      this.colors = [];\n      this.w = ctx.w;\n      var w = this.w;\n      this.isColorFn = false;\n      this.isBarDistributed = w.config.plotOptions.bar.distributed && (w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar');\n    }\n\n    _createClass(Theme, [{\n      key: \"init\",\n      value: function init() {\n        this.setDefaultColors();\n      }\n    }, {\n      key: \"setDefaultColors\",\n      value: function setDefaultColors() {\n        var _this = this;\n\n        var w = this.w;\n        var utils = new Utils();\n        w.globals.dom.elWrap.classList.add(\"apexcharts-theme-\".concat(w.config.theme.mode));\n\n        if (w.config.colors === undefined) {\n          w.globals.colors = this.predefined();\n        } else {\n          w.globals.colors = w.config.colors; // if user provided a function in colors, we need to eval here\n\n          if (w.globals.axisCharts && w.config.chart.type !== 'bar' && Array.isArray(w.config.colors) && w.config.colors.length > 0 && w.config.colors.length === w.config.series.length // colors & series length needs same\n          ) {\n              w.globals.colors = w.config.colors.map(function (c, i) {\n                if (typeof c === 'function') {\n                  _this.isColorFn = true;\n                  return c({\n                    value: w.globals.axisCharts ? w.globals.series[i][0] ? w.globals.series[i][0] : 0 : w.globals.series[i],\n                    seriesIndex: i,\n                    dataPointIndex: i,\n                    w: w\n                  });\n                }\n\n                return c;\n              });\n            }\n        }\n\n        if (w.config.theme.monochrome.enabled) {\n          var monoArr = [];\n          var glsCnt = w.globals.series.length;\n\n          if (this.isBarDistributed) {\n            glsCnt = w.globals.series[0].length * w.globals.series.length;\n          }\n\n          var mainColor = w.config.theme.monochrome.color;\n          var part = 1 / (glsCnt / w.config.theme.monochrome.shadeIntensity);\n          var shade = w.config.theme.monochrome.shadeTo;\n          var percent = 0;\n\n          for (var gsl = 0; gsl < glsCnt; gsl++) {\n            var newColor = void 0;\n\n            if (shade === 'dark') {\n              newColor = utils.shadeColor(percent * -1, mainColor);\n              percent = percent + part;\n            } else {\n              newColor = utils.shadeColor(percent, mainColor);\n              percent = percent + part;\n            }\n\n            monoArr.push(newColor);\n          }\n\n          w.globals.colors = monoArr.slice();\n        }\n\n        var defaultColors = w.globals.colors.slice(); // if user specfied less colors than no. of series, push the same colors again\n\n        this.pushExtraColors(w.globals.colors);\n        var colorTypes = ['fill', 'stroke'];\n        colorTypes.forEach(function (c) {\n          if (w.config[c].colors === undefined) {\n            w.globals[c].colors = _this.isColorFn ? w.config.colors : defaultColors;\n          } else {\n            w.globals[c].colors = w.config[c].colors.slice();\n          }\n\n          _this.pushExtraColors(w.globals[c].colors);\n        });\n\n        if (w.config.dataLabels.style.colors === undefined) {\n          w.globals.dataLabels.style.colors = defaultColors;\n        } else {\n          w.globals.dataLabels.style.colors = w.config.dataLabels.style.colors.slice();\n        }\n\n        this.pushExtraColors(w.globals.dataLabels.style.colors, 50);\n\n        if (w.config.plotOptions.radar.polygons.fill.colors === undefined) {\n          w.globals.radarPolygons.fill.colors = [w.config.theme.mode === 'dark' ? '#202D48' : '#fff'];\n        } else {\n          w.globals.radarPolygons.fill.colors = w.config.plotOptions.radar.polygons.fill.colors.slice();\n        }\n\n        this.pushExtraColors(w.globals.radarPolygons.fill.colors, 20); // The point colors\n\n        if (w.config.markers.colors === undefined) {\n          w.globals.markers.colors = defaultColors;\n        } else {\n          w.globals.markers.colors = w.config.markers.colors.slice();\n        }\n\n        this.pushExtraColors(w.globals.markers.colors);\n      } // When the number of colors provided is less than the number of series, this method\n      // will push same colors to the list\n      // params:\n      // distributed is only valid for distributed column/bar charts\n\n    }, {\n      key: \"pushExtraColors\",\n      value: function pushExtraColors(colorSeries, length) {\n        var distributed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n        var w = this.w;\n        var len = length || w.globals.series.length;\n\n        if (distributed === null) {\n          distributed = this.isBarDistributed || w.config.chart.type === 'heatmap' && w.config.plotOptions.heatmap.colorScale.inverse;\n        }\n\n        if (distributed) {\n          len = w.globals.series[0].length * w.globals.series.length;\n        }\n\n        if (colorSeries.length < len) {\n          var diff = len - colorSeries.length;\n\n          for (var i = 0; i < diff; i++) {\n            colorSeries.push(colorSeries[i]);\n          }\n        }\n      }\n    }, {\n      key: \"updateThemeOptions\",\n      value: function updateThemeOptions(options) {\n        options.chart = options.chart || {};\n        options.tooltip = options.tooltip || {};\n        var mode = options.theme.mode || 'light';\n        var palette = options.theme.palette ? options.theme.palette : mode === 'dark' ? 'palette4' : 'palette1';\n        var foreColor = options.chart.foreColor ? options.chart.foreColor : mode === 'dark' ? '#f6f7f8' : '#373d3f';\n        options.tooltip.theme = mode;\n        options.chart.foreColor = foreColor;\n        options.theme.palette = palette;\n        return options;\n      }\n    }, {\n      key: \"predefined\",\n      value: function predefined() {\n        var palette = this.w.config.theme.palette; // D6E3F8, FCEFEF, DCE0D9, A5978B, EDDDD4, D6E3F8, FEF5EF\n\n        switch (palette) {\n          case 'palette1':\n            this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0'];\n            break;\n\n          case 'palette2':\n            this.colors = ['#3f51b5', '#03a9f4', '#4caf50', '#f9ce1d', '#FF9800'];\n            break;\n\n          case 'palette3':\n            this.colors = ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B'];\n            break;\n\n          case 'palette4':\n            this.colors = ['#4ecdc4', '#c7f464', '#81D4FA', '#fd6a6a', '#546E7A'];\n            break;\n\n          case 'palette5':\n            this.colors = ['#2b908f', '#f9a3a4', '#90ee7e', '#fa4443', '#69d2e7'];\n            break;\n\n          case 'palette6':\n            this.colors = ['#449DD1', '#F86624', '#EA3546', '#662E9B', '#C5D86D'];\n            break;\n\n          case 'palette7':\n            this.colors = ['#D7263D', '#1B998B', '#2E294E', '#F46036', '#E2C044'];\n            break;\n\n          case 'palette8':\n            this.colors = ['#662E9B', '#F86624', '#F9C80E', '#EA3546', '#43BCCD'];\n            break;\n\n          case 'palette9':\n            this.colors = ['#5C4742', '#A5978B', '#8D5B4C', '#5A2A27', '#C4BBAF'];\n            break;\n\n          case 'palette10':\n            this.colors = ['#A300D6', '#7D02EB', '#5653FE', '#2983FF', '#00B1F2'];\n            break;\n\n          default:\n            this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0'];\n            break;\n        }\n\n        return this.colors;\n      }\n    }]);\n\n    return Theme;\n  }();\n\n  var TitleSubtitle = /*#__PURE__*/function () {\n    function TitleSubtitle(ctx) {\n      _classCallCheck(this, TitleSubtitle);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    }\n\n    _createClass(TitleSubtitle, [{\n      key: \"draw\",\n      value: function draw() {\n        this.drawTitleSubtitle('title');\n        this.drawTitleSubtitle('subtitle');\n      }\n    }, {\n      key: \"drawTitleSubtitle\",\n      value: function drawTitleSubtitle(type) {\n        var w = this.w;\n        var tsConfig = type === 'title' ? w.config.title : w.config.subtitle;\n        var x = w.globals.svgWidth / 2;\n        var y = tsConfig.offsetY;\n        var textAnchor = 'middle';\n\n        if (tsConfig.align === 'left') {\n          x = 10;\n          textAnchor = 'start';\n        } else if (tsConfig.align === 'right') {\n          x = w.globals.svgWidth - 10;\n          textAnchor = 'end';\n        }\n\n        x = x + tsConfig.offsetX;\n        y = y + parseInt(tsConfig.style.fontSize, 10) + tsConfig.margin / 2;\n\n        if (tsConfig.text !== undefined) {\n          var graphics = new Graphics(this.ctx);\n          var titleText = graphics.drawText({\n            x: x,\n            y: y,\n            text: tsConfig.text,\n            textAnchor: textAnchor,\n            fontSize: tsConfig.style.fontSize,\n            fontFamily: tsConfig.style.fontFamily,\n            fontWeight: tsConfig.style.fontWeight,\n            foreColor: tsConfig.style.color,\n            opacity: 1\n          });\n          titleText.node.setAttribute('class', \"apexcharts-\".concat(type, \"-text\"));\n          w.globals.dom.Paper.add(titleText);\n        }\n      }\n    }]);\n\n    return TitleSubtitle;\n  }();\n\n  var Helpers$1 = /*#__PURE__*/function () {\n    function Helpers(dCtx) {\n      _classCallCheck(this, Helpers);\n\n      this.w = dCtx.w;\n      this.dCtx = dCtx;\n    }\n    /**\n     * Get Chart Title/Subtitle Dimensions\n     * @memberof Dimensions\n     * @return {{width, height}}\n     **/\n\n\n    _createClass(Helpers, [{\n      key: \"getTitleSubtitleCoords\",\n      value: function getTitleSubtitleCoords(type) {\n        var w = this.w;\n        var width = 0;\n        var height = 0;\n        var floating = type === 'title' ? w.config.title.floating : w.config.subtitle.floating;\n        var el = w.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(type, \"-text\"));\n\n        if (el !== null && !floating) {\n          var coord = el.getBoundingClientRect();\n          width = coord.width;\n          height = w.globals.axisCharts ? coord.height + 5 : coord.height;\n        }\n\n        return {\n          width: width,\n          height: height\n        };\n      }\n    }, {\n      key: \"getLegendsRect\",\n      value: function getLegendsRect() {\n        var w = this.w;\n        var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');\n        var lgRect = Object.assign({}, Utils.getBoundingClientRect(elLegendWrap));\n\n        if (elLegendWrap !== null && !w.config.legend.floating && w.config.legend.show) {\n          this.dCtx.lgRect = {\n            x: lgRect.x,\n            y: lgRect.y,\n            height: lgRect.height,\n            width: lgRect.height === 0 ? 0 : lgRect.width\n          };\n        } else {\n          this.dCtx.lgRect = {\n            x: 0,\n            y: 0,\n            height: 0,\n            width: 0\n          };\n        } // if legend takes up all of the chart space, we need to restrict it.\n\n\n        if (w.config.legend.position === 'left' || w.config.legend.position === 'right') {\n          if (this.dCtx.lgRect.width * 1.5 > w.globals.svgWidth) {\n            this.dCtx.lgRect.width = w.globals.svgWidth / 1.5;\n          }\n        }\n\n        return this.dCtx.lgRect;\n      }\n    }, {\n      key: \"getLargestStringFromMultiArr\",\n      value: function getLargestStringFromMultiArr(val, arr) {\n        var w = this.w;\n        var valArr = val;\n\n        if (w.globals.isMultiLineX) {\n          // if the xaxis labels has multiline texts (array)\n          var maxArrs = arr.map(function (xl, idx) {\n            return Array.isArray(xl) ? xl.length : 1;\n          });\n          var maxArrLen = Math.max.apply(Math, _toConsumableArray(maxArrs));\n          var maxArrIndex = maxArrs.indexOf(maxArrLen);\n          valArr = arr[maxArrIndex];\n        }\n\n        return valArr;\n      }\n    }]);\n\n    return Helpers;\n  }();\n\n  var DimXAxis = /*#__PURE__*/function () {\n    function DimXAxis(dCtx) {\n      _classCallCheck(this, DimXAxis);\n\n      this.w = dCtx.w;\n      this.dCtx = dCtx;\n    }\n    /**\n     * Get X Axis Dimensions\n     * @memberof Dimensions\n     * @return {{width, height}}\n     **/\n\n\n    _createClass(DimXAxis, [{\n      key: \"getxAxisLabelsCoords\",\n      value: function getxAxisLabelsCoords() {\n        var w = this.w;\n        var xaxisLabels = w.globals.labels.slice();\n\n        if (w.config.xaxis.convertedCatToNumeric && xaxisLabels.length === 0) {\n          xaxisLabels = w.globals.categoryLabels;\n        }\n\n        var rect;\n\n        if (w.globals.timescaleLabels.length > 0) {\n          var coords = this.getxAxisTimeScaleLabelsCoords();\n          rect = {\n            width: coords.width,\n            height: coords.height\n          };\n          w.globals.rotateXLabels = false;\n        } else {\n          this.dCtx.lgWidthForSideLegends = (w.config.legend.position === 'left' || w.config.legend.position === 'right') && !w.config.legend.floating ? this.dCtx.lgRect.width : 0; // get the longest string from the labels array and also apply label formatter\n\n          var xlbFormatter = w.globals.xLabelFormatter; // prevent changing xaxisLabels to avoid issues in multi-yaxes - fix #522\n\n          var val = Utils.getLargestStringFromArr(xaxisLabels);\n          var valArr = this.dCtx.dimHelpers.getLargestStringFromMultiArr(val, xaxisLabels); // the labels gets changed for bar charts\n\n          if (w.globals.isBarHorizontal) {\n            val = w.globals.yAxisScale[0].result.reduce(function (a, b) {\n              return a.length > b.length ? a : b;\n            }, 0);\n            valArr = val;\n          }\n\n          var xFormat = new Formatters(this.dCtx.ctx);\n          var timestamp = val;\n          val = xFormat.xLabelFormat(xlbFormatter, val, timestamp);\n          valArr = xFormat.xLabelFormat(xlbFormatter, valArr, timestamp);\n\n          if (w.config.xaxis.convertedCatToNumeric && typeof val === 'undefined' || String(val).trim() === '') {\n            val = '1';\n            valArr = val;\n          }\n\n          var graphics = new Graphics(this.dCtx.ctx);\n          var xLabelrect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize);\n          var xArrLabelrect = xLabelrect;\n\n          if (val !== valArr) {\n            xArrLabelrect = graphics.getTextRects(valArr, w.config.xaxis.labels.style.fontSize);\n          }\n\n          rect = {\n            width: xLabelrect.width >= xArrLabelrect.width ? xLabelrect.width : xArrLabelrect.width,\n            height: xLabelrect.height >= xArrLabelrect.height ? xLabelrect.height : xArrLabelrect.height\n          };\n\n          if (rect.width * xaxisLabels.length > w.globals.svgWidth - this.dCtx.lgWidthForSideLegends - this.dCtx.yAxisWidth - this.dCtx.gridPad.left - this.dCtx.gridPad.right && w.config.xaxis.labels.rotate !== 0 || w.config.xaxis.labels.rotateAlways) {\n            if (!w.globals.isBarHorizontal) {\n              w.globals.rotateXLabels = true;\n\n              var getRotatedTextRects = function getRotatedTextRects(text) {\n                return graphics.getTextRects(text, w.config.xaxis.labels.style.fontSize, w.config.xaxis.labels.style.fontFamily, \"rotate(\".concat(w.config.xaxis.labels.rotate, \" 0 0)\"), false);\n              };\n\n              xLabelrect = getRotatedTextRects(val);\n\n              if (val !== valArr) {\n                xArrLabelrect = getRotatedTextRects(valArr);\n              }\n\n              rect.height = (xLabelrect.height > xArrLabelrect.height ? xLabelrect.height : xArrLabelrect.height) / 1.5;\n              rect.width = xLabelrect.width > xArrLabelrect.width ? xLabelrect.width : xArrLabelrect.width;\n            }\n          } else {\n            w.globals.rotateXLabels = false;\n          }\n        }\n\n        if (!w.config.xaxis.labels.show) {\n          rect = {\n            width: 0,\n            height: 0\n          };\n        }\n\n        return {\n          width: rect.width,\n          height: rect.height\n        };\n      }\n      /**\n       * Get X Axis Title Dimensions\n       * @memberof Dimensions\n       * @return {{width, height}}\n       **/\n\n    }, {\n      key: \"getxAxisTitleCoords\",\n      value: function getxAxisTitleCoords() {\n        var w = this.w;\n        var width = 0;\n        var height = 0;\n\n        if (w.config.xaxis.title.text !== undefined) {\n          var graphics = new Graphics(this.dCtx.ctx);\n          var rect = graphics.getTextRects(w.config.xaxis.title.text, w.config.xaxis.title.style.fontSize);\n          width = rect.width;\n          height = rect.height;\n        }\n\n        return {\n          width: width,\n          height: height\n        };\n      }\n    }, {\n      key: \"getxAxisTimeScaleLabelsCoords\",\n      value: function getxAxisTimeScaleLabelsCoords() {\n        var w = this.w;\n        var rect;\n        this.dCtx.timescaleLabels = w.globals.timescaleLabels.slice();\n        var labels = this.dCtx.timescaleLabels.map(function (label) {\n          return label.value;\n        }); //  get the longest string from the labels array and also apply label formatter to it\n\n        var val = labels.reduce(function (a, b) {\n          // if undefined, maybe user didn't pass the datetime(x) values\n          if (typeof a === 'undefined') {\n            console.error('You have possibly supplied invalid Date format. Please supply a valid JavaScript Date');\n            return 0;\n          } else {\n            return a.length > b.length ? a : b;\n          }\n        }, 0);\n        var graphics = new Graphics(this.dCtx.ctx);\n        rect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize);\n        var totalWidthRotated = rect.width * 1.05 * labels.length;\n\n        if (totalWidthRotated > w.globals.gridWidth && w.config.xaxis.labels.rotate !== 0) {\n          w.globals.overlappingXLabels = true;\n        }\n\n        return rect;\n      } // In certain cases, the last labels gets cropped in xaxis.\n      // Hence, we add some additional padding based on the label length to avoid the last label being cropped or we don't draw it at all\n\n    }, {\n      key: \"additionalPaddingXLabels\",\n      value: function additionalPaddingXLabels(xaxisLabelCoords) {\n        var _this = this;\n\n        var w = this.w;\n        var gl = w.globals;\n        var cnf = w.config;\n        var xtype = cnf.xaxis.type; // const predictedGridWidth =\n        //   gl.svgWidth -\n        //   this.dCtx.lgWidthForSideLegends -\n        //   this.dCtx.yAxisWidth -\n        //   this.dCtx.gridPad.left -\n        //   this.dCtx.gridPad.right\n\n        var lbWidth = xaxisLabelCoords.width;\n        gl.skipLastTimelinelabel = false;\n        gl.skipFirstTimelinelabel = false;\n        var isBarOpposite = w.config.yaxis[0].opposite && w.globals.isBarHorizontal;\n\n        var isCollapsed = function isCollapsed(i) {\n          return gl.collapsedSeriesIndices.indexOf(i) !== -1;\n        };\n\n        var rightPad = function rightPad(yaxe) {\n          if (_this.dCtx.timescaleLabels && _this.dCtx.timescaleLabels.length) {\n            // for timeline labels, we take the last label and check if it exceeds gridWidth\n            var firstimescaleLabel = _this.dCtx.timescaleLabels[0];\n            var lastTimescaleLabel = _this.dCtx.timescaleLabels[_this.dCtx.timescaleLabels.length - 1];\n            var lastLabelPosition = lastTimescaleLabel.position + lbWidth / 1.75 - // replace + with - ;\n            // allow the last label to intersect with the right y axis\n            _this.dCtx.yAxisWidthRight;\n            var firstLabelPosition = firstimescaleLabel.position - lbWidth / 1.75 + // remove conditional since the first label is always at the very left\n            // allow the first label to intersect with the left y axes\n            _this.dCtx.yAxisWidthLeft;\n\n            if (lastLabelPosition > gl.gridWidth) {\n              gl.skipLastTimelinelabel = true;\n            }\n\n            if (firstLabelPosition < 0) {\n              gl.skipFirstTimelinelabel = true;\n            }\n          } else if (xtype === 'datetime') {\n            // If user has enabled DateTime, but uses own's formatter\n            if (_this.dCtx.gridPad.right < lbWidth && !gl.rotateXLabels) {\n              gl.skipLastTimelinelabel = true;\n            }\n          } else if (xtype !== 'datetime') {\n            if (_this.dCtx.gridPad.right < lbWidth / 2 - _this.dCtx.yAxisWidthRight && !gl.rotateXLabels && (w.config.xaxis.tickPlacement !== 'between' || w.globals.isBarHorizontal)) {\n              _this.dCtx.xPadRight = lbWidth / 2 + 1;\n            }\n          }\n        };\n\n        var padYAxe = function padYAxe(yaxe, i) {\n          if (isCollapsed(i)) return;\n\n          if (xtype !== 'datetime') {\n            if (_this.dCtx.gridPad.left < lbWidth / 2 - _this.dCtx.yAxisWidthLeft && !gl.rotateXLabels && !cnf.xaxis.labels.trim) {\n              _this.dCtx.xPadLeft = lbWidth / 2 + 1;\n            }\n          }\n\n          rightPad();\n        };\n\n        cnf.yaxis.forEach(function (yaxe, i) {\n          if (isBarOpposite) {\n            if (_this.dCtx.gridPad.left < lbWidth) {\n              _this.dCtx.xPadLeft = lbWidth / 2 + 1;\n            }\n\n            _this.dCtx.xPadRight = lbWidth / 2 + 1;\n          } else {\n            padYAxe(yaxe, i);\n          }\n        });\n      }\n    }]);\n\n    return DimXAxis;\n  }();\n\n  var DimYAxis = /*#__PURE__*/function () {\n    function DimYAxis(dCtx) {\n      _classCallCheck(this, DimYAxis);\n\n      this.w = dCtx.w;\n      this.dCtx = dCtx;\n    }\n    /**\n     * Get Y Axis Dimensions\n     * @memberof Dimensions\n     * @return {{width, height}}\n     **/\n\n\n    _createClass(DimYAxis, [{\n      key: \"getyAxisLabelsCoords\",\n      value: function getyAxisLabelsCoords() {\n        var _this = this;\n\n        var w = this.w;\n        var width = 0;\n        var height = 0;\n        var ret = [];\n        var labelPad = 10;\n        var axesUtils = new AxesUtils(this.dCtx.ctx);\n        w.config.yaxis.map(function (yaxe, index) {\n          if (!axesUtils.isYAxisHidden(index) && yaxe.labels.show && w.globals.yAxisScale[index].result.length) {\n            var lbFormatter = w.globals.yLabelFormatters[index]; // the second parameter -1 is the index of tick which user can use in the formatter\n\n            var val = lbFormatter(w.globals.yAxisScale[index].niceMax, {\n              seriesIndex: index,\n              dataPointIndex: -1,\n              w: w\n            });\n            var valArr = val; // if user has specified a custom formatter, and the result is null or empty, we need to discard the formatter and take the value as it is.\n\n            if (typeof val === 'undefined' || val.length === 0) {\n              val = w.globals.yAxisScale[index].niceMax;\n            }\n\n            if (w.globals.isBarHorizontal) {\n              labelPad = 0;\n              var barYaxisLabels = w.globals.labels.slice(); //  get the longest string from the labels array and also apply label formatter to it\n\n              val = Utils.getLargestStringFromArr(barYaxisLabels);\n              val = lbFormatter(val, {\n                seriesIndex: index,\n                dataPointIndex: -1,\n                w: w\n              });\n              valArr = _this.dCtx.dimHelpers.getLargestStringFromMultiArr(val, barYaxisLabels);\n            }\n\n            var graphics = new Graphics(_this.dCtx.ctx);\n            var rect = graphics.getTextRects(val, yaxe.labels.style.fontSize);\n            var arrLabelrect = rect;\n\n            if (val !== valArr) {\n              arrLabelrect = graphics.getTextRects(valArr, yaxe.labels.style.fontSize);\n            }\n\n            ret.push({\n              width: (arrLabelrect.width > rect.width ? arrLabelrect.width : rect.width) + labelPad,\n              height: arrLabelrect.height > rect.height ? arrLabelrect.height : rect.height\n            });\n          } else {\n            ret.push({\n              width: width,\n              height: height\n            });\n          }\n        });\n        return ret;\n      }\n      /**\n       * Get Y Axis Dimensions\n       * @memberof Dimensions\n       * @return {{width, height}}\n       **/\n\n    }, {\n      key: \"getyAxisTitleCoords\",\n      value: function getyAxisTitleCoords() {\n        var _this2 = this;\n\n        var w = this.w;\n        var ret = [];\n        w.config.yaxis.map(function (yaxe, index) {\n          if (yaxe.show && yaxe.title.text !== undefined) {\n            var graphics = new Graphics(_this2.dCtx.ctx);\n            var rect = graphics.getTextRects(yaxe.title.text, yaxe.title.style.fontSize, yaxe.title.style.fontFamily, 'rotate(-90 0 0)', false);\n            ret.push({\n              width: rect.width,\n              height: rect.height\n            });\n          } else {\n            ret.push({\n              width: 0,\n              height: 0\n            });\n          }\n        });\n        return ret;\n      }\n    }, {\n      key: \"getTotalYAxisWidth\",\n      value: function getTotalYAxisWidth() {\n        var w = this.w;\n        var yAxisWidth = 0;\n        var yAxisWidthLeft = 0;\n        var yAxisWidthRight = 0;\n        var padding = w.globals.yAxisScale.length > 1 ? 10 : 0;\n        var axesUtils = new AxesUtils(this.dCtx.ctx);\n\n        var isHiddenYAxis = function isHiddenYAxis(index) {\n          return w.globals.ignoreYAxisIndexes.indexOf(index) > -1;\n        };\n\n        var padForLabelTitle = function padForLabelTitle(coord, index) {\n          var floating = w.config.yaxis[index].floating;\n          var width = 0;\n\n          if (coord.width > 0 && !floating) {\n            width = coord.width + padding;\n\n            if (isHiddenYAxis(index)) {\n              width = width - coord.width - padding;\n            }\n          } else {\n            width = floating || axesUtils.isYAxisHidden(index) ? 0 : 5;\n          }\n\n          w.config.yaxis[index].opposite ? yAxisWidthRight = yAxisWidthRight + width : yAxisWidthLeft = yAxisWidthLeft + width;\n          yAxisWidth = yAxisWidth + width;\n        };\n\n        w.globals.yLabelsCoords.map(function (yLabelCoord, index) {\n          padForLabelTitle(yLabelCoord, index);\n        });\n        w.globals.yTitleCoords.map(function (yTitleCoord, index) {\n          padForLabelTitle(yTitleCoord, index);\n        });\n\n        if (w.globals.isBarHorizontal) {\n          yAxisWidth = w.globals.yLabelsCoords[0].width + w.globals.yTitleCoords[0].width + 15;\n        }\n\n        this.dCtx.yAxisWidthLeft = yAxisWidthLeft;\n        this.dCtx.yAxisWidthRight = yAxisWidthRight;\n        return yAxisWidth;\n      }\n    }]);\n\n    return DimYAxis;\n  }();\n\n  var DimGrid = /*#__PURE__*/function () {\n    function DimGrid(dCtx) {\n      _classCallCheck(this, DimGrid);\n\n      this.w = dCtx.w;\n      this.dCtx = dCtx;\n    }\n\n    _createClass(DimGrid, [{\n      key: \"gridPadForColumnsInNumericAxis\",\n      value: function gridPadForColumnsInNumericAxis(gridWidth) {\n        var w = this.w;\n\n        if (w.globals.noData || w.globals.allSeriesCollapsed) {\n          return 0;\n        }\n\n        var type = w.config.chart.type;\n        var barWidth = 0;\n        var seriesLen = type === 'bar' || type === 'rangeBar' ? w.config.series.length : 1;\n\n        if (w.globals.comboBarCount > 0) {\n          seriesLen = w.globals.comboBarCount;\n        }\n\n        w.globals.collapsedSeries.forEach(function (c) {\n          if (c.type === 'bar' || c.type === 'rangeBar') {\n            seriesLen = seriesLen - 1;\n          }\n        });\n\n        if (w.config.chart.stacked) {\n          seriesLen = 1;\n        }\n\n        var hasBar = type === 'bar' || type === 'rangeBar' || w.globals.comboBarCount > 0;\n\n        if (hasBar && w.globals.isXNumeric && !w.globals.isBarHorizontal && seriesLen > 0) {\n          var xRatio = 0;\n          var xRange = Math.abs(w.globals.initialMaxX - w.globals.initialMinX);\n\n          if (xRange <= 3) {\n            xRange = w.globals.dataPoints;\n          }\n\n          xRatio = xRange / gridWidth;\n          var xDivision; // max barwidth should be equal to minXDiff to avoid overlap\n\n          if (w.globals.minXDiff && w.globals.minXDiff / xRatio > 0) {\n            xDivision = w.globals.minXDiff / xRatio;\n          }\n\n          barWidth = xDivision / seriesLen * parseInt(w.config.plotOptions.bar.columnWidth, 10) / 100;\n\n          if (barWidth < 1) {\n            barWidth = 1;\n          }\n\n          barWidth = barWidth / (seriesLen > 1 ? 1 : 1.5) + 5;\n          w.globals.barPadForNumericAxis = barWidth;\n        }\n\n        return barWidth;\n      }\n    }, {\n      key: \"gridPadFortitleSubtitle\",\n      value: function gridPadFortitleSubtitle() {\n        var _this = this;\n\n        var w = this.w;\n        var gl = w.globals;\n        var gridShrinkOffset = this.dCtx.isSparkline || !w.globals.axisCharts ? 0 : 10;\n        var titleSubtitle = ['title', 'subtitle'];\n        titleSubtitle.forEach(function (t) {\n          if (w.config[t].text !== undefined) {\n            gridShrinkOffset += w.config[t].margin;\n          } else {\n            gridShrinkOffset += _this.dCtx.isSparkline || !w.globals.axisCharts ? 0 : 5;\n          }\n        });\n        var nonAxisOrMultiSeriesCharts = w.config.series.length > 1 || !w.globals.axisCharts || w.config.legend.showForSingleSeries;\n\n        if (w.config.legend.show && w.config.legend.position === 'bottom' && !w.config.legend.floating && nonAxisOrMultiSeriesCharts) {\n          gridShrinkOffset += 10;\n        }\n\n        var titleCoords = this.dCtx.dimHelpers.getTitleSubtitleCoords('title');\n        var subtitleCoords = this.dCtx.dimHelpers.getTitleSubtitleCoords('subtitle');\n        gl.gridHeight = gl.gridHeight - titleCoords.height - subtitleCoords.height - gridShrinkOffset;\n        gl.translateY = gl.translateY + titleCoords.height + subtitleCoords.height + gridShrinkOffset;\n      }\n    }, {\n      key: \"setGridXPosForDualYAxis\",\n      value: function setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords) {\n        var w = this.w;\n        var axesUtils = new AxesUtils(this.dCtx.ctx);\n        w.config.yaxis.map(function (yaxe, index) {\n          if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1 && !yaxe.floating && !axesUtils.isYAxisHidden(index)) {\n            if (yaxe.opposite) {\n              w.globals.translateX = w.globals.translateX - (yaxisLabelCoords[index].width + yTitleCoords[index].width) - parseInt(w.config.yaxis[index].labels.style.fontSize, 10) / 1.2 - 12;\n            }\n          }\n        });\n      }\n    }]);\n\n    return DimGrid;\n  }();\n\n  /**\n   * ApexCharts Dimensions Class for calculating rects of all elements that are drawn and will be drawn.\n   *\n   * @module Dimensions\n   **/\n\n  var Dimensions = /*#__PURE__*/function () {\n    function Dimensions(ctx) {\n      _classCallCheck(this, Dimensions);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.lgRect = {};\n      this.yAxisWidth = 0;\n      this.yAxisWidthLeft = 0;\n      this.yAxisWidthRight = 0;\n      this.xAxisHeight = 0;\n      this.isSparkline = this.w.config.chart.sparkline.enabled;\n      this.dimHelpers = new Helpers$1(this);\n      this.dimYAxis = new DimYAxis(this);\n      this.dimXAxis = new DimXAxis(this);\n      this.dimGrid = new DimGrid(this);\n      this.lgWidthForSideLegends = 0;\n      this.gridPad = this.w.config.grid.padding;\n      this.xPadRight = 0;\n      this.xPadLeft = 0;\n    }\n    /**\n     * @memberof Dimensions\n     * @param {object} w - chart context\n     **/\n\n\n    _createClass(Dimensions, [{\n      key: \"plotCoords\",\n      value: function plotCoords() {\n        var w = this.w;\n        var gl = w.globals;\n        this.lgRect = this.dimHelpers.getLegendsRect();\n\n        if (gl.axisCharts) {\n          // for line / area / scatter / column\n          this.setDimensionsForAxisCharts();\n        } else {\n          // for pie / donuts / circle\n          this.setDimensionsForNonAxisCharts();\n        }\n\n        this.dimGrid.gridPadFortitleSubtitle(); // after calculating everything, apply padding set by user\n\n        gl.gridHeight = gl.gridHeight - this.gridPad.top - this.gridPad.bottom;\n        gl.gridWidth = gl.gridWidth - this.gridPad.left - this.gridPad.right - this.xPadRight - this.xPadLeft;\n        var barWidth = this.dimGrid.gridPadForColumnsInNumericAxis(gl.gridWidth);\n        gl.gridWidth = gl.gridWidth - barWidth * 2;\n        gl.translateX = gl.translateX + this.gridPad.left + this.xPadLeft + (barWidth > 0 ? barWidth + 4 : 0);\n        gl.translateY = gl.translateY + this.gridPad.top;\n      }\n    }, {\n      key: \"setDimensionsForAxisCharts\",\n      value: function setDimensionsForAxisCharts() {\n        var _this = this;\n\n        var w = this.w;\n        var gl = w.globals;\n        var yaxisLabelCoords = this.dimYAxis.getyAxisLabelsCoords();\n        var yTitleCoords = this.dimYAxis.getyAxisTitleCoords();\n        w.globals.yLabelsCoords = [];\n        w.globals.yTitleCoords = [];\n        w.config.yaxis.map(function (yaxe, index) {\n          // store the labels and titles coords in global vars\n          w.globals.yLabelsCoords.push({\n            width: yaxisLabelCoords[index].width,\n            index: index\n          });\n          w.globals.yTitleCoords.push({\n            width: yTitleCoords[index].width,\n            index: index\n          });\n        });\n        this.yAxisWidth = this.dimYAxis.getTotalYAxisWidth();\n        var xaxisLabelCoords = this.dimXAxis.getxAxisLabelsCoords();\n        var xtitleCoords = this.dimXAxis.getxAxisTitleCoords();\n        this.conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords);\n        gl.translateXAxisY = w.globals.rotateXLabels ? this.xAxisHeight / 8 : -4;\n        gl.translateXAxisX = w.globals.rotateXLabels && w.globals.isXNumeric && w.config.xaxis.labels.rotate <= -45 ? -this.xAxisWidth / 4 : 0;\n\n        if (w.globals.isBarHorizontal) {\n          gl.rotateXLabels = false;\n          gl.translateXAxisY = -1 * (parseInt(w.config.xaxis.labels.style.fontSize, 10) / 1.5);\n        }\n\n        gl.translateXAxisY = gl.translateXAxisY + w.config.xaxis.labels.offsetY;\n        gl.translateXAxisX = gl.translateXAxisX + w.config.xaxis.labels.offsetX;\n        var yAxisWidth = this.yAxisWidth;\n        var xAxisHeight = this.xAxisHeight;\n        gl.xAxisLabelsHeight = this.xAxisHeight;\n        gl.xAxisHeight = this.xAxisHeight;\n        var translateY = 10;\n\n        if (w.config.chart.type === 'radar' || this.isSparkline) {\n          yAxisWidth = 0;\n          xAxisHeight = gl.goldenPadding;\n        }\n\n        if (this.isSparkline) {\n          this.lgRect = {\n            height: 0,\n            width: 0\n          };\n          xAxisHeight = 0;\n          yAxisWidth = 0;\n          translateY = 0;\n        }\n\n        this.dimXAxis.additionalPaddingXLabels(xaxisLabelCoords);\n\n        var legendTopBottom = function legendTopBottom() {\n          gl.translateX = yAxisWidth;\n          gl.gridHeight = gl.svgHeight - _this.lgRect.height - xAxisHeight - (!_this.isSparkline ? w.globals.rotateXLabels ? 10 : 15 : 0);\n          gl.gridWidth = gl.svgWidth - yAxisWidth;\n        };\n\n        if (w.config.xaxis.position === 'top') translateY = gl.xAxisHeight - w.config.xaxis.axisTicks.height - 5;\n\n        switch (w.config.legend.position) {\n          case 'bottom':\n            gl.translateY = translateY;\n            legendTopBottom();\n            break;\n\n          case 'top':\n            gl.translateY = this.lgRect.height + translateY;\n            legendTopBottom();\n            break;\n\n          case 'left':\n            gl.translateY = translateY;\n            gl.translateX = this.lgRect.width + yAxisWidth;\n            gl.gridHeight = gl.svgHeight - xAxisHeight - 12;\n            gl.gridWidth = gl.svgWidth - this.lgRect.width - yAxisWidth;\n            break;\n\n          case 'right':\n            gl.translateY = translateY;\n            gl.translateX = yAxisWidth;\n            gl.gridHeight = gl.svgHeight - xAxisHeight - 12;\n            gl.gridWidth = gl.svgWidth - this.lgRect.width - yAxisWidth - 5;\n            break;\n\n          default:\n            throw new Error('Legend position not supported');\n        }\n\n        this.dimGrid.setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords); // after drawing everything, set the Y axis positions\n\n        var objyAxis = new YAxis(this.ctx);\n        objyAxis.setYAxisXPosition(yaxisLabelCoords, yTitleCoords);\n      }\n    }, {\n      key: \"setDimensionsForNonAxisCharts\",\n      value: function setDimensionsForNonAxisCharts() {\n        var w = this.w;\n        var gl = w.globals;\n        var cnf = w.config;\n        var xPad = 0;\n\n        if (w.config.legend.show && !w.config.legend.floating) {\n          xPad = 20;\n        }\n\n        var type = cnf.chart.type === 'pie' || cnf.chart.type === 'donut' ? 'pie' : 'radialBar';\n        var offY = cnf.plotOptions[type].offsetY;\n        var offX = cnf.plotOptions[type].offsetX;\n\n        if (!cnf.legend.show || cnf.legend.floating) {\n          gl.gridHeight = gl.svgHeight - cnf.grid.padding.left + cnf.grid.padding.right;\n          gl.gridWidth = gl.gridHeight;\n          gl.translateY = offY;\n          gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;\n          return;\n        }\n\n        switch (cnf.legend.position) {\n          case 'bottom':\n            gl.gridHeight = gl.svgHeight - this.lgRect.height - gl.goldenPadding;\n            gl.gridWidth = gl.gridHeight;\n            gl.translateY = offY - 10;\n            gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;\n            break;\n\n          case 'top':\n            gl.gridHeight = gl.svgHeight - this.lgRect.height - gl.goldenPadding;\n            gl.gridWidth = gl.gridHeight;\n            gl.translateY = this.lgRect.height + offY + 10;\n            gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2;\n            break;\n\n          case 'left':\n            gl.gridWidth = gl.svgWidth - this.lgRect.width - xPad;\n            gl.gridHeight = cnf.chart.height !== 'auto' ? gl.svgHeight : gl.gridWidth;\n            gl.translateY = offY;\n            gl.translateX = offX + this.lgRect.width + xPad;\n            break;\n\n          case 'right':\n            gl.gridWidth = gl.svgWidth - this.lgRect.width - xPad - 5;\n            gl.gridHeight = cnf.chart.height !== 'auto' ? gl.svgHeight : gl.gridWidth;\n            gl.translateY = offY;\n            gl.translateX = offX + 10;\n            break;\n\n          default:\n            throw new Error('Legend position not supported');\n        }\n      }\n    }, {\n      key: \"conditionalChecksForAxisCoords\",\n      value: function conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords) {\n        var w = this.w;\n        this.xAxisHeight = (xaxisLabelCoords.height + xtitleCoords.height) * (w.globals.isMultiLineX ? 1.2 : w.globals.LINE_HEIGHT_RATIO) + (w.globals.rotateXLabels ? 22 : 10);\n        this.xAxisWidth = xaxisLabelCoords.width;\n\n        if (this.xAxisHeight - xtitleCoords.height > w.config.xaxis.labels.maxHeight) {\n          this.xAxisHeight = w.config.xaxis.labels.maxHeight;\n        }\n\n        if (w.config.xaxis.labels.minHeight && this.xAxisHeight < w.config.xaxis.labels.minHeight) {\n          this.xAxisHeight = w.config.xaxis.labels.minHeight;\n        }\n\n        if (w.config.xaxis.floating) {\n          this.xAxisHeight = 0;\n        }\n\n        var minYAxisWidth = 0;\n        var maxYAxisWidth = 0;\n        w.config.yaxis.forEach(function (y) {\n          minYAxisWidth += y.labels.minWidth;\n          maxYAxisWidth += y.labels.maxWidth;\n        });\n\n        if (this.yAxisWidth < minYAxisWidth) {\n          this.yAxisWidth = minYAxisWidth;\n        }\n\n        if (this.yAxisWidth > maxYAxisWidth) {\n          this.yAxisWidth = maxYAxisWidth;\n        }\n      }\n    }]);\n\n    return Dimensions;\n  }();\n\n  /**\n   * ApexCharts Pie Class for drawing Pie / Donut Charts.\n   * @module Pie\n   **/\n\n  var Pie = /*#__PURE__*/function () {\n    function Pie(ctx) {\n      _classCallCheck(this, Pie);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.chartType = this.w.config.chart.type;\n      this.initialAnim = this.w.config.chart.animations.enabled;\n      this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;\n      this.animBeginArr = [0];\n      this.animDur = 0;\n      this.donutDataLabels = this.w.config.plotOptions.pie.donut.labels;\n      var w = this.w;\n      this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors;\n      this.defaultSize = w.globals.svgHeight < w.globals.svgWidth ? w.globals.gridHeight : w.globals.gridWidth;\n      this.centerY = this.defaultSize / 2;\n      this.centerX = w.globals.gridWidth / 2;\n      this.fullAngle = 360;\n      w.globals.radialSize = this.defaultSize / 2.05 - w.config.stroke.width - (!w.config.chart.sparkline.enabled ? w.config.chart.dropShadow.blur : 0);\n      this.donutSize = w.globals.radialSize * parseInt(w.config.plotOptions.pie.donut.size, 10) / 100;\n      this.sliceLabels = [];\n      this.prevSectorAngleArr = []; // for dynamic animations\n    }\n\n    _createClass(Pie, [{\n      key: \"draw\",\n      value: function draw(series) {\n        var self = this;\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var ret = graphics.group({\n          class: 'apexcharts-pie'\n        });\n        if (w.globals.noData) return ret;\n        var total = 0;\n\n        for (var k = 0; k < series.length; k++) {\n          // CALCULATE THE TOTAL\n          total += Utils.negToZero(series[k]);\n        }\n\n        var sectorAngleArr = []; // el to which series will be drawn\n\n        var elSeries = graphics.group(); // prevent division by zero error if there is no data\n\n        if (total === 0) {\n          total = 0.00001;\n        }\n\n        for (var i = 0; i < series.length; i++) {\n          // CALCULATE THE ANGLES\n          var angle = this.fullAngle * Utils.negToZero(series[i]) / total;\n          sectorAngleArr.push(angle);\n        }\n\n        if (w.globals.dataChanged) {\n          var prevTotal = 0;\n\n          for (var _k = 0; _k < w.globals.previousPaths.length; _k++) {\n            // CALCULATE THE PREV TOTAL\n            prevTotal += Utils.negToZero(w.globals.previousPaths[_k]);\n          }\n\n          var previousAngle;\n\n          for (var _i = 0; _i < w.globals.previousPaths.length; _i++) {\n            // CALCULATE THE PREVIOUS ANGLES\n            previousAngle = this.fullAngle * Utils.negToZero(w.globals.previousPaths[_i]) / prevTotal;\n            this.prevSectorAngleArr.push(previousAngle);\n          }\n        } // on small chart size after few count of resizes browser window donutSize can be negative\n\n\n        if (this.donutSize < 0) {\n          this.donutSize = 0;\n        }\n\n        var scaleSize = w.config.plotOptions.pie.customScale;\n        var halfW = w.globals.gridWidth / 2;\n        var halfH = w.globals.gridHeight / 2;\n        var translateX = halfW - w.globals.gridWidth / 2 * scaleSize;\n        var translateY = halfH - w.globals.gridHeight / 2 * scaleSize;\n\n        if (w.config.chart.type === 'donut') {\n          // draw the inner circle and add some text to it\n          var circle = graphics.drawCircle(this.donutSize);\n          circle.attr({\n            cx: this.centerX,\n            cy: this.centerY,\n            fill: w.config.plotOptions.pie.donut.background ? w.config.plotOptions.pie.donut.background : 'transparent'\n          });\n          elSeries.add(circle);\n        }\n\n        var elG = self.drawArcs(sectorAngleArr, series); // add slice dataLabels at the end\n\n        this.sliceLabels.forEach(function (s) {\n          elG.add(s);\n        });\n        elSeries.attr({\n          transform: \"translate(\".concat(translateX, \", \").concat(translateY, \") scale(\").concat(scaleSize, \")\")\n        });\n        elSeries.add(elG);\n        ret.add(elSeries);\n\n        if (this.donutDataLabels.show) {\n          var dataLabels = this.renderInnerDataLabels(this.donutDataLabels, {\n            hollowSize: this.donutSize,\n            centerX: this.centerX,\n            centerY: this.centerY,\n            opacity: this.donutDataLabels.show,\n            translateX: translateX,\n            translateY: translateY\n          });\n          ret.add(dataLabels);\n        }\n\n        return ret;\n      } // core function for drawing pie arcs\n\n    }, {\n      key: \"drawArcs\",\n      value: function drawArcs(sectorAngleArr, series) {\n        var w = this.w;\n        var filters = new Filters(this.ctx);\n        var graphics = new Graphics(this.ctx);\n        var fill = new Fill(this.ctx);\n        var g = graphics.group({\n          class: 'apexcharts-slices'\n        });\n        var startAngle = 0;\n        var prevStartAngle = 0;\n        var endAngle = 0;\n        var prevEndAngle = 0;\n        this.strokeWidth = w.config.stroke.show ? w.config.stroke.width : 0;\n\n        for (var i = 0; i < sectorAngleArr.length; i++) {\n          var elPieArc = graphics.group({\n            class: \"apexcharts-series apexcharts-pie-series\",\n            seriesName: Utils.escapeString(w.globals.seriesNames[i]),\n            rel: i + 1,\n            'data:realIndex': i\n          });\n          g.add(elPieArc);\n          startAngle = endAngle;\n          prevStartAngle = prevEndAngle;\n          endAngle = startAngle + sectorAngleArr[i];\n          prevEndAngle = prevStartAngle + this.prevSectorAngleArr[i];\n          var angle = endAngle - startAngle;\n          var pathFill = fill.fillPath({\n            seriesNumber: i,\n            size: w.globals.radialSize,\n            value: series[i]\n          }); // additionaly, pass size for gradient drawing in the fillPath function\n\n          var path = this.getChangedPath(prevStartAngle, prevEndAngle);\n          var elPath = graphics.drawPath({\n            d: path,\n            stroke: this.lineColorArr instanceof Array ? this.lineColorArr[i] : this.lineColorArr,\n            strokeWidth: 0,\n            fill: pathFill,\n            fillOpacity: w.config.fill.opacity,\n            classes: \"apexcharts-pie-area apexcharts-\".concat(w.config.chart.type, \"-slice-\").concat(i)\n          });\n          elPath.attr({\n            index: 0,\n            j: i\n          });\n\n          if (w.config.chart.dropShadow.enabled) {\n            var shadow = w.config.chart.dropShadow;\n            filters.dropShadow(elPath, shadow, i);\n          }\n\n          this.addListeners(elPath, this.donutDataLabels);\n          Graphics.setAttrs(elPath.node, {\n            'data:angle': angle,\n            'data:startAngle': startAngle,\n            'data:strokeWidth': this.strokeWidth,\n            'data:value': series[i]\n          });\n          var labelPosition = {\n            x: 0,\n            y: 0\n          };\n\n          if (w.config.chart.type === 'pie') {\n            labelPosition = Utils.polarToCartesian(this.centerX, this.centerY, w.globals.radialSize / 1.25 + w.config.plotOptions.pie.dataLabels.offset, startAngle + (endAngle - startAngle) / 2);\n          } else if (w.config.chart.type === 'donut') {\n            labelPosition = Utils.polarToCartesian(this.centerX, this.centerY, (w.globals.radialSize + this.donutSize) / 2 + w.config.plotOptions.pie.dataLabels.offset, startAngle + (endAngle - startAngle) / 2);\n          }\n\n          elPieArc.add(elPath); // Animation code starts\n\n          var dur = 0;\n\n          if (this.initialAnim && !w.globals.resized && !w.globals.dataChanged) {\n            dur = (endAngle - startAngle) / this.fullAngle * w.config.chart.animations.speed;\n            if (dur === 0) dur = 1;\n            this.animDur = dur + this.animDur;\n            this.animBeginArr.push(this.animDur);\n          } else {\n            this.animBeginArr.push(0);\n          }\n\n          if (this.dynamicAnim && w.globals.dataChanged) {\n            this.animatePaths(elPath, {\n              size: w.globals.radialSize,\n              endAngle: endAngle,\n              startAngle: startAngle,\n              prevStartAngle: prevStartAngle,\n              prevEndAngle: prevEndAngle,\n              animateStartingPos: true,\n              i: i,\n              animBeginArr: this.animBeginArr,\n              shouldSetPrevPaths: true,\n              dur: w.config.chart.animations.dynamicAnimation.speed\n            });\n          } else {\n            this.animatePaths(elPath, {\n              size: w.globals.radialSize,\n              endAngle: endAngle,\n              startAngle: startAngle,\n              i: i,\n              totalItems: sectorAngleArr.length - 1,\n              animBeginArr: this.animBeginArr,\n              dur: dur\n            });\n          } // animation code ends\n\n\n          if (w.config.plotOptions.pie.expandOnClick) {\n            elPath.click(this.pieClicked.bind(this, i));\n          }\n\n          if (w.config.dataLabels.enabled) {\n            var xPos = labelPosition.x;\n            var yPos = labelPosition.y;\n            var text = 100 * (endAngle - startAngle) / 360 + '%';\n\n            if (angle !== 0 && w.config.plotOptions.pie.dataLabels.minAngleToShowLabel < sectorAngleArr[i]) {\n              var formatter = w.config.dataLabels.formatter;\n\n              if (formatter !== undefined) {\n                text = formatter(w.globals.seriesPercent[i][0], {\n                  seriesIndex: i,\n                  w: w\n                });\n              }\n\n              var foreColor = w.globals.dataLabels.style.colors[i];\n              var elPieLabel = graphics.drawText({\n                x: xPos,\n                y: yPos,\n                text: text,\n                textAnchor: 'middle',\n                fontSize: w.config.dataLabels.style.fontSize,\n                fontFamily: w.config.dataLabels.style.fontFamily,\n                fontWeight: w.config.dataLabels.style.fontWeight,\n                foreColor: foreColor\n              });\n\n              if (w.config.dataLabels.dropShadow.enabled) {\n                var textShadow = w.config.dataLabels.dropShadow;\n                filters.dropShadow(elPieLabel, textShadow);\n              }\n\n              elPieLabel.node.classList.add('apexcharts-pie-label');\n\n              if (w.config.chart.animations.animate && w.globals.resized === false) {\n                elPieLabel.node.classList.add('apexcharts-pie-label-delay');\n                elPieLabel.node.style.animationDelay = w.config.chart.animations.speed / 940 + 's';\n              }\n\n              this.sliceLabels.push(elPieLabel);\n            }\n          }\n        }\n\n        return g;\n      }\n    }, {\n      key: \"addListeners\",\n      value: function addListeners(elPath, dataLabels) {\n        var graphics = new Graphics(this.ctx); // append filters on mouseenter and mouseleave\n\n        elPath.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, elPath));\n        elPath.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, elPath));\n        elPath.node.addEventListener('mouseleave', this.revertDataLabelsInner.bind(this, elPath.node, dataLabels));\n        elPath.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, elPath));\n\n        if (!this.donutDataLabels.total.showAlways) {\n          elPath.node.addEventListener('mouseenter', this.printDataLabelsInner.bind(this, elPath.node, dataLabels));\n          elPath.node.addEventListener('mousedown', this.printDataLabelsInner.bind(this, elPath.node, dataLabels));\n        }\n      } // This function can be used for other circle charts too\n\n    }, {\n      key: \"animatePaths\",\n      value: function animatePaths(el, opts) {\n        var w = this.w;\n        var me = this;\n        var angle = opts.endAngle - opts.startAngle;\n        var prevAngle = angle;\n        var fromStartAngle = opts.startAngle;\n        var toStartAngle = opts.startAngle;\n\n        if (opts.prevStartAngle !== undefined && opts.prevEndAngle !== undefined) {\n          fromStartAngle = opts.prevEndAngle;\n          prevAngle = opts.prevEndAngle - opts.prevStartAngle;\n        }\n\n        if (opts.i === w.config.series.length - 1) {\n          // some adjustments for the last overlapping paths\n          if (angle + toStartAngle > this.fullAngle) {\n            opts.endAngle = opts.endAngle - (angle + toStartAngle);\n          } else if (angle + toStartAngle < this.fullAngle) {\n            opts.endAngle = opts.endAngle + (this.fullAngle - (angle + toStartAngle));\n          }\n        }\n\n        if (angle === this.fullAngle) angle = this.fullAngle - 0.01;\n        me.animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts);\n      }\n    }, {\n      key: \"animateArc\",\n      value: function animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts) {\n        var me = this;\n        var w = this.w;\n        var animations = new Animations(this.ctx);\n        var size = opts.size;\n        var path;\n\n        if (isNaN(fromStartAngle) || isNaN(prevAngle)) {\n          fromStartAngle = toStartAngle;\n          prevAngle = angle;\n          opts.dur = 0;\n        }\n\n        var currAngle = angle;\n        var startAngle = toStartAngle;\n        var fromAngle = fromStartAngle - toStartAngle;\n\n        if (w.globals.dataChanged && opts.shouldSetPrevPaths) {\n          // to avoid flicker when updating, set prev path first and then animate from there\n          if (opts.prevEndAngle) {\n            path = me.getPiePath({\n              me: me,\n              startAngle: opts.prevStartAngle,\n              angle: opts.prevEndAngle - opts.prevStartAngle,\n              size: size\n            });\n            el.attr({\n              d: path\n            });\n          }\n        }\n\n        if (opts.dur !== 0) {\n          el.animate(opts.dur, w.globals.easing, opts.animBeginArr[opts.i]).afterAll(function () {\n            if (w.config.chart.type === 'pie' || w.config.chart.type === 'donut') {\n              this.animate(w.config.chart.animations.dynamicAnimation.speed).attr({\n                'stroke-width': me.strokeWidth\n              });\n            }\n\n            if (opts.i === w.config.series.length - 1) {\n              animations.animationCompleted(el);\n            }\n          }).during(function (pos) {\n            currAngle = fromAngle + (angle - fromAngle) * pos;\n\n            if (opts.animateStartingPos) {\n              currAngle = prevAngle + (angle - prevAngle) * pos;\n              startAngle = fromStartAngle - prevAngle + (toStartAngle - (fromStartAngle - prevAngle)) * pos;\n            }\n\n            path = me.getPiePath({\n              me: me,\n              startAngle: startAngle,\n              angle: currAngle,\n              size: size\n            });\n            el.node.setAttribute('data:pathOrig', path);\n            el.attr({\n              d: path\n            });\n          });\n        } else {\n          path = me.getPiePath({\n            me: me,\n            startAngle: startAngle,\n            angle: angle,\n            size: size\n          });\n\n          if (!opts.isTrack) {\n            w.globals.animationEnded = true;\n          }\n\n          el.node.setAttribute('data:pathOrig', path);\n          el.attr({\n            d: path,\n            'stroke-width': me.strokeWidth\n          });\n        }\n      }\n    }, {\n      key: \"pieClicked\",\n      value: function pieClicked(i) {\n        var w = this.w;\n        var me = this;\n        var path;\n        var size = me.w.globals.radialSize + (w.config.plotOptions.pie.expandOnClick ? 4 : 0);\n        var elPath = w.globals.dom.Paper.select(\".apexcharts-\".concat(w.config.chart.type.toLowerCase(), \"-slice-\").concat(i)).members[0];\n\n        if (elPath.attr('data:pieClicked') === 'true') {\n          elPath.attr({\n            'data:pieClicked': 'false'\n          });\n          this.revertDataLabelsInner(elPath.node, this.donutDataLabels);\n          var origPath = elPath.attr('data:pathOrig');\n          elPath.attr({\n            d: origPath\n          });\n          return;\n        } else {\n          // reset all elems\n          var allEls = w.globals.dom.baseEl.getElementsByClassName('apexcharts-pie-area');\n          Array.prototype.forEach.call(allEls, function (pieSlice) {\n            pieSlice.setAttribute('data:pieClicked', 'false');\n            var origPath = pieSlice.getAttribute('data:pathOrig');\n            pieSlice.setAttribute('d', origPath);\n          });\n          elPath.attr('data:pieClicked', 'true');\n        }\n\n        var startAngle = parseInt(elPath.attr('data:startAngle'), 10);\n        var angle = parseInt(elPath.attr('data:angle'), 10);\n        path = me.getPiePath({\n          me: me,\n          startAngle: startAngle,\n          angle: angle,\n          size: size\n        });\n        if (angle === 360) return;\n        elPath.plot(path);\n      }\n    }, {\n      key: \"getChangedPath\",\n      value: function getChangedPath(prevStartAngle, prevEndAngle) {\n        var path = '';\n\n        if (this.dynamicAnim && this.w.globals.dataChanged) {\n          path = this.getPiePath({\n            me: this,\n            startAngle: prevStartAngle,\n            angle: prevEndAngle - prevStartAngle,\n            size: this.size\n          });\n        }\n\n        return path;\n      }\n    }, {\n      key: \"getPiePath\",\n      value: function getPiePath(_ref) {\n        var me = _ref.me,\n            startAngle = _ref.startAngle,\n            angle = _ref.angle,\n            size = _ref.size;\n        var w = this.w;\n        var path;\n        var startDeg = startAngle;\n        var startRadians = Math.PI * (startDeg - 90) / 180;\n        var endDeg = angle + startAngle;\n        if (Math.ceil(endDeg) >= 360) endDeg = 359.99;\n        var endRadians = Math.PI * (endDeg - 90) / 180;\n        var x1 = me.centerX + size * Math.cos(startRadians);\n        var y1 = me.centerY + size * Math.sin(startRadians);\n        var x2 = me.centerX + size * Math.cos(endRadians);\n        var y2 = me.centerY + size * Math.sin(endRadians);\n        var startInner = Utils.polarToCartesian(me.centerX, me.centerY, me.donutSize, endDeg);\n        var endInner = Utils.polarToCartesian(me.centerX, me.centerY, me.donutSize, startDeg);\n        var largeArc = angle > 180 ? 1 : 0;\n        var pathBeginning = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2];\n\n        if (w.config.chart.type === 'donut') {\n          path = [].concat(pathBeginning, ['L', startInner.x, startInner.y, 'A', me.donutSize, me.donutSize, 0, largeArc, 0, endInner.x, endInner.y, 'L', x1, y1, 'z']).join(' ');\n        } else if (w.config.chart.type === 'pie') {\n          path = [].concat(pathBeginning, ['L', me.centerX, me.centerY, 'L', x1, y1]).join(' ');\n        } else {\n          path = [].concat(pathBeginning).join(' ');\n        }\n\n        return path;\n      }\n    }, {\n      key: \"renderInnerDataLabels\",\n      value: function renderInnerDataLabels(dataLabelsConfig, opts) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var g = graphics.group({\n          class: 'apexcharts-datalabels-group',\n          transform: \"translate(\".concat(opts.translateX ? opts.translateX : 0, \", \").concat(opts.translateY ? opts.translateY : 0, \") scale(\").concat(w.config.plotOptions.pie.customScale, \")\")\n        });\n        var showTotal = dataLabelsConfig.total.show;\n        g.node.style.opacity = opts.opacity;\n        var x = opts.centerX;\n        var y = opts.centerY;\n        var labelColor, valueColor;\n\n        if (dataLabelsConfig.name.color === undefined) {\n          labelColor = w.globals.colors[0];\n        } else {\n          labelColor = dataLabelsConfig.name.color;\n        }\n\n        var labelFontSize = dataLabelsConfig.name.fontSize;\n        var labelFontFamily = dataLabelsConfig.name.fontFamily;\n        var labelFontWeight = dataLabelsConfig.value.fontWeight;\n\n        if (dataLabelsConfig.value.color === undefined) {\n          valueColor = w.config.chart.foreColor;\n        } else {\n          valueColor = dataLabelsConfig.value.color;\n        }\n\n        var lbFormatter = dataLabelsConfig.value.formatter;\n        var val = '';\n        var name = '';\n\n        if (showTotal) {\n          labelColor = dataLabelsConfig.total.color;\n          labelFontSize = dataLabelsConfig.total.fontSize;\n          labelFontFamily = dataLabelsConfig.total.fontFamily;\n          labelFontWeight = dataLabelsConfig.total.fontWeight;\n          name = dataLabelsConfig.total.label;\n          val = dataLabelsConfig.total.formatter(w);\n        } else {\n          if (w.globals.series.length === 1) {\n            val = lbFormatter(w.globals.series[0], w);\n            name = w.globals.seriesNames[0];\n          }\n        }\n\n        if (name) {\n          name = dataLabelsConfig.name.formatter(name, dataLabelsConfig.total.show, w);\n        }\n\n        if (dataLabelsConfig.name.show) {\n          var elLabel = graphics.drawText({\n            x: x,\n            y: y + parseFloat(dataLabelsConfig.name.offsetY),\n            text: name,\n            textAnchor: 'middle',\n            foreColor: labelColor,\n            fontSize: labelFontSize,\n            fontWeight: labelFontWeight,\n            fontFamily: labelFontFamily\n          });\n          elLabel.node.classList.add('apexcharts-datalabel-label');\n          g.add(elLabel);\n        }\n\n        if (dataLabelsConfig.value.show) {\n          var valOffset = dataLabelsConfig.name.show ? parseFloat(dataLabelsConfig.value.offsetY) + 16 : dataLabelsConfig.value.offsetY;\n          var elValue = graphics.drawText({\n            x: x,\n            y: y + valOffset,\n            text: val,\n            textAnchor: 'middle',\n            foreColor: valueColor,\n            fontWeight: dataLabelsConfig.value.fontWeight,\n            fontSize: dataLabelsConfig.value.fontSize,\n            fontFamily: dataLabelsConfig.value.fontFamily\n          });\n          elValue.node.classList.add('apexcharts-datalabel-value');\n          g.add(elValue);\n        } // for a multi-series circle chart, we need to show total value instead of first series labels\n\n\n        return g;\n      }\n      /**\n       *\n       * @param {string} name - The name of the series\n       * @param {string} val - The value of that series\n       * @param {object} el - Optional el (indicates which series was hovered/clicked). If this param is not present, means we need to show total\n       */\n\n    }, {\n      key: \"printInnerLabels\",\n      value: function printInnerLabels(labelsConfig, name, val, el) {\n        var w = this.w;\n        var labelColor;\n\n        if (el) {\n          if (labelsConfig.name.color === undefined) {\n            labelColor = w.globals.colors[parseInt(el.parentNode.getAttribute('rel'), 10) - 1];\n          } else {\n            labelColor = labelsConfig.name.color;\n          }\n        } else {\n          if (w.globals.series.length > 1 && labelsConfig.total.show) {\n            labelColor = labelsConfig.total.color;\n          }\n        }\n\n        var elLabel = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-label');\n        var elValue = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-value');\n        var lbFormatter = labelsConfig.value.formatter;\n        val = lbFormatter(val, w); // we need to show Total Val - so get the formatter of it\n\n        if (!el && typeof labelsConfig.total.formatter === 'function') {\n          val = labelsConfig.total.formatter(w);\n        }\n\n        var isTotal = name === labelsConfig.total.label;\n        name = labelsConfig.name.formatter(name, isTotal, w);\n\n        if (elLabel !== null) {\n          elLabel.textContent = name;\n        }\n\n        if (elValue !== null) {\n          elValue.textContent = val;\n        }\n\n        if (elLabel !== null) {\n          elLabel.style.fill = labelColor;\n        }\n      }\n    }, {\n      key: \"printDataLabelsInner\",\n      value: function printDataLabelsInner(el, dataLabelsConfig) {\n        var w = this.w;\n        var val = el.getAttribute('data:value');\n        var name = w.globals.seriesNames[parseInt(el.parentNode.getAttribute('rel'), 10) - 1];\n\n        if (w.globals.series.length > 1) {\n          this.printInnerLabels(dataLabelsConfig, name, val, el);\n        }\n\n        var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group');\n\n        if (dataLabelsGroup !== null) {\n          dataLabelsGroup.style.opacity = 1;\n        }\n      }\n    }, {\n      key: \"revertDataLabelsInner\",\n      value: function revertDataLabelsInner(elem, dataLabelsConfig, event) {\n        var _this = this;\n\n        var w = this.w;\n        var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group');\n        var sliceOut = false;\n        var slices = w.globals.dom.baseEl.getElementsByClassName(\"apexcharts-pie-area\");\n\n        var selectSlice = function selectSlice(_ref2) {\n          var makeSliceOut = _ref2.makeSliceOut,\n              printLabel = _ref2.printLabel;\n          Array.prototype.forEach.call(slices, function (s) {\n            if (s.getAttribute('data:pieClicked') === 'true') {\n              if (makeSliceOut) {\n                sliceOut = true;\n              }\n\n              if (printLabel) {\n                _this.printDataLabelsInner(s, dataLabelsConfig);\n              }\n            }\n          });\n        };\n\n        selectSlice({\n          makeSliceOut: true,\n          printLabel: false\n        });\n\n        if (dataLabelsConfig.total.show && w.globals.series.length > 1) {\n          if (sliceOut && !dataLabelsConfig.total.showAlways) {\n            selectSlice({\n              makeSliceOut: false,\n              printLabel: true\n            });\n          } else {\n            this.printInnerLabels(dataLabelsConfig, dataLabelsConfig.total.label, dataLabelsConfig.total.formatter(w));\n          }\n        } else {\n          selectSlice({\n            makeSliceOut: false,\n            printLabel: true\n          });\n\n          if (!sliceOut) {\n            if (w.globals.selectedDataPoints.length && w.globals.series.length > 1) {\n              if (w.globals.selectedDataPoints[0].length > 0) {\n                var index = w.globals.selectedDataPoints[0];\n                var el = w.globals.dom.baseEl.querySelector(\".apexcharts-\".concat(w.config.chart.type.toLowerCase(), \"-slice-\").concat(index));\n                this.printDataLabelsInner(el, dataLabelsConfig);\n              } else if (dataLabelsGroup && w.globals.selectedDataPoints.length && w.globals.selectedDataPoints[0].length === 0) {\n                dataLabelsGroup.style.opacity = 0;\n              }\n            } else {\n              if (dataLabelsGroup && w.globals.series.length > 1) {\n                dataLabelsGroup.style.opacity = 0;\n              }\n            }\n          }\n        }\n      }\n    }]);\n\n    return Pie;\n  }();\n\n  var Helpers$2 = /*#__PURE__*/function () {\n    function Helpers(lgCtx) {\n      _classCallCheck(this, Helpers);\n\n      this.w = lgCtx.w;\n      this.lgCtx = lgCtx;\n    }\n\n    _createClass(Helpers, [{\n      key: \"getLegendStyles\",\n      value: function getLegendStyles() {\n        var stylesheet = document.createElement('style');\n        stylesheet.setAttribute('type', 'text/css');\n        var text = \"\\t\\n    \\t\\n      .apexcharts-legend {\\t\\n        display: flex;\\t\\n        overflow: auto;\\t\\n        padding: 0 10px;\\t\\n      }\\t\\n      .apexcharts-legend.position-bottom, .apexcharts-legend.position-top {\\t\\n        flex-wrap: wrap\\t\\n      }\\t\\n      .apexcharts-legend.position-right, .apexcharts-legend.position-left {\\t\\n        flex-direction: column;\\t\\n        bottom: 0;\\t\\n      }\\t\\n      .apexcharts-legend.position-bottom.apexcharts-align-left, .apexcharts-legend.position-top.apexcharts-align-left, .apexcharts-legend.position-right, .apexcharts-legend.position-left {\\t\\n        justify-content: flex-start;\\t\\n      }\\t\\n      .apexcharts-legend.position-bottom.apexcharts-align-center, .apexcharts-legend.position-top.apexcharts-align-center {\\t\\n        justify-content: center;  \\t\\n      }\\t\\n      .apexcharts-legend.position-bottom.apexcharts-align-right, .apexcharts-legend.position-top.apexcharts-align-right {\\t\\n        justify-content: flex-end;\\t\\n      }\\t\\n      .apexcharts-legend-series {\\t\\n        cursor: pointer;\\t\\n        line-height: normal;\\t\\n      }\\t\\n      .apexcharts-legend.position-bottom .apexcharts-legend-series, .apexcharts-legend.position-top .apexcharts-legend-series{\\t\\n        display: flex;\\t\\n        align-items: center;\\t\\n      }\\t\\n      .apexcharts-legend-text {\\t\\n        position: relative;\\t\\n        font-size: 14px;\\t\\n      }\\t\\n      .apexcharts-legend-text *, .apexcharts-legend-marker * {\\t\\n        pointer-events: none;\\t\\n      }\\t\\n      .apexcharts-legend-marker {\\t\\n        position: relative;\\t\\n        display: inline-block;\\t\\n        cursor: pointer;\\t\\n        margin-right: 3px;\\t\\n        border-style: solid;\\n      }\\t\\n      \\t\\n      .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{\\t\\n        display: inline-block;\\t\\n      }\\t\\n      .apexcharts-legend-series.apexcharts-no-click {\\t\\n        cursor: auto;\\t\\n      }\\t\\n      .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\\t\\n        display: none !important;\\t\\n      }\\t\\n      .apexcharts-inactive-legend {\\t\\n        opacity: 0.45;\\t\\n      }\";\n        var rules = document.createTextNode(text);\n        stylesheet.appendChild(rules);\n        return stylesheet;\n      }\n    }, {\n      key: \"getLegendBBox\",\n      value: function getLegendBBox() {\n        var w = this.w;\n        var currLegendsWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');\n        var currLegendsWrapRect = currLegendsWrap.getBoundingClientRect();\n        var currLegendsWrapWidth = currLegendsWrapRect.width;\n        var currLegendsWrapHeight = currLegendsWrapRect.height;\n        return {\n          clwh: currLegendsWrapHeight,\n          clww: currLegendsWrapWidth\n        };\n      }\n    }, {\n      key: \"appendToForeignObject\",\n      value: function appendToForeignObject() {\n        var gl = this.w.globals;\n        gl.dom.elLegendForeign = document.createElementNS(gl.SVGNS, 'foreignObject');\n        var elForeign = gl.dom.elLegendForeign;\n        elForeign.setAttribute('x', 0);\n        elForeign.setAttribute('y', 0);\n        elForeign.setAttribute('width', gl.svgWidth);\n        elForeign.setAttribute('height', gl.svgHeight);\n        gl.dom.elLegendWrap.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n        elForeign.appendChild(gl.dom.elLegendWrap);\n        elForeign.appendChild(this.getLegendStyles());\n        gl.dom.Paper.node.insertBefore(elForeign, gl.dom.elGraphical.node);\n      }\n    }, {\n      key: \"toggleDataSeries\",\n      value: function toggleDataSeries(seriesCnt, isHidden) {\n        var _this = this;\n\n        var w = this.w;\n\n        if (w.globals.axisCharts || w.config.chart.type === 'radialBar') {\n          w.globals.resized = true; // we don't want initial animations again\n\n          var seriesEl = null;\n          var realIndex = null; // yes, make it null. 1 series will rise at a time\n\n          w.globals.risingSeries = [];\n\n          if (w.globals.axisCharts) {\n            seriesEl = w.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(seriesCnt, \"']\"));\n            realIndex = parseInt(seriesEl.getAttribute('data:realIndex'), 10);\n          } else {\n            seriesEl = w.globals.dom.baseEl.querySelector(\".apexcharts-series[rel='\".concat(seriesCnt + 1, \"']\"));\n            realIndex = parseInt(seriesEl.getAttribute('rel'), 10) - 1;\n          }\n\n          if (isHidden) {\n            var seriesToMakeVisible = [{\n              cs: w.globals.collapsedSeries,\n              csi: w.globals.collapsedSeriesIndices\n            }, {\n              cs: w.globals.ancillaryCollapsedSeries,\n              csi: w.globals.ancillaryCollapsedSeriesIndices\n            }];\n            seriesToMakeVisible.forEach(function (r) {\n              _this.riseCollapsedSeries(r.cs, r.csi, realIndex);\n            });\n          } else {\n            this.hideSeries({\n              seriesEl: seriesEl,\n              realIndex: realIndex\n            });\n          }\n        } else {\n          // for non-axis charts i.e pie / donuts\n          var _seriesEl = w.globals.dom.Paper.select(\" .apexcharts-series[rel='\".concat(seriesCnt + 1, \"'] path\"));\n\n          var type = w.config.chart.type;\n\n          if (type === 'pie' || type === 'donut') {\n            var dataLabels = w.config.plotOptions.pie.donut.labels;\n            var graphics = new Graphics(this.lgCtx.ctx);\n            var pie = new Pie(this.lgCtx.ctx);\n            graphics.pathMouseDown(_seriesEl.members[0], null);\n            pie.printDataLabelsInner(_seriesEl.members[0].node, dataLabels);\n          }\n\n          _seriesEl.fire('click');\n        }\n      }\n    }, {\n      key: \"hideSeries\",\n      value: function hideSeries(_ref) {\n        var seriesEl = _ref.seriesEl,\n            realIndex = _ref.realIndex;\n        var w = this.w;\n\n        if (w.globals.axisCharts) {\n          var shouldNotHideYAxis = false;\n\n          if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].show && w.config.yaxis[realIndex].showAlways) {\n            shouldNotHideYAxis = true;\n\n            if (w.globals.ancillaryCollapsedSeriesIndices.indexOf(realIndex) < 0) {\n              w.globals.ancillaryCollapsedSeries.push({\n                index: realIndex,\n                data: w.config.series[realIndex].data.slice(),\n                type: seriesEl.parentNode.className.baseVal.split('-')[1]\n              });\n              w.globals.ancillaryCollapsedSeriesIndices.push(realIndex);\n            }\n          }\n\n          if (!shouldNotHideYAxis) {\n            w.globals.collapsedSeries.push({\n              index: realIndex,\n              data: w.config.series[realIndex].data.slice(),\n              type: seriesEl.parentNode.className.baseVal.split('-')[1]\n            });\n            w.globals.collapsedSeriesIndices.push(realIndex);\n            var removeIndexOfRising = w.globals.risingSeries.indexOf(realIndex);\n            w.globals.risingSeries.splice(removeIndexOfRising, 1);\n          } // TODO: AVOID mutating the user's config object below\n\n\n          w.config.series[realIndex].data = [];\n        } else {\n          w.globals.collapsedSeries.push({\n            index: realIndex,\n            data: w.config.series[realIndex]\n          });\n          w.globals.collapsedSeriesIndices.push(realIndex);\n          w.config.series[realIndex] = 0;\n        }\n\n        var seriesChildren = seriesEl.childNodes;\n\n        for (var sc = 0; sc < seriesChildren.length; sc++) {\n          if (seriesChildren[sc].classList.contains('apexcharts-series-markers-wrap')) {\n            if (seriesChildren[sc].classList.contains('apexcharts-hide')) {\n              seriesChildren[sc].classList.remove('apexcharts-hide');\n            } else {\n              seriesChildren[sc].classList.add('apexcharts-hide');\n            }\n          }\n        }\n\n        w.globals.allSeriesCollapsed = w.globals.collapsedSeries.length === w.config.series.length;\n\n        this.lgCtx.ctx.updateHelpers._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);\n      }\n    }, {\n      key: \"riseCollapsedSeries\",\n      value: function riseCollapsedSeries(series, seriesIndices, realIndex) {\n        var w = this.w;\n\n        if (series.length > 0) {\n          for (var c = 0; c < series.length; c++) {\n            if (series[c].index === realIndex) {\n              if (w.globals.axisCharts) {\n                w.config.series[realIndex].data = series[c].data.slice();\n                series.splice(c, 1);\n                seriesIndices.splice(c, 1);\n                w.globals.risingSeries.push(realIndex);\n              } else {\n                w.config.series[realIndex] = series[c].data;\n                series.splice(c, 1);\n                seriesIndices.splice(c, 1);\n                w.globals.risingSeries.push(realIndex);\n              }\n\n              this.lgCtx.ctx.updateHelpers._updateSeries(w.config.series, w.config.chart.animations.dynamicAnimation.enabled);\n            }\n          }\n        }\n      }\n    }]);\n\n    return Helpers;\n  }();\n\n  /**\n   * ApexCharts Legend Class to draw legend.\n   *\n   * @module Legend\n   **/\n\n  var Legend = /*#__PURE__*/function () {\n    function Legend(ctx, opts) {\n      _classCallCheck(this, Legend);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.onLegendClick = this.onLegendClick.bind(this);\n      this.onLegendHovered = this.onLegendHovered.bind(this);\n      this.isBarsDistributed = this.w.config.chart.type === 'bar' && this.w.config.plotOptions.bar.distributed && this.w.config.series.length === 1;\n      this.legendHelpers = new Helpers$2(this);\n    }\n\n    _createClass(Legend, [{\n      key: \"init\",\n      value: function init() {\n        var w = this.w;\n        var gl = w.globals;\n        var cnf = w.config;\n        var showLegendAlways = cnf.legend.showForSingleSeries && gl.series.length === 1 || this.isBarsDistributed || gl.series.length > 1;\n\n        if ((showLegendAlways || !gl.axisCharts) && cnf.legend.show) {\n          while (gl.dom.elLegendWrap.firstChild) {\n            gl.dom.elLegendWrap.removeChild(gl.dom.elLegendWrap.firstChild);\n          }\n\n          this.drawLegends();\n\n          if (!Utils.isIE11()) {\n            this.legendHelpers.appendToForeignObject();\n          } else {\n            // IE11 doesn't supports foreignObject, hence append it to <head>\n            document.getElementsByTagName('head')[0].appendChild(this.legendHelpers.getLegendStyles());\n          }\n\n          if (cnf.legend.position === 'bottom' || cnf.legend.position === 'top') {\n            this.legendAlignHorizontal();\n          } else if (cnf.legend.position === 'right' || cnf.legend.position === 'left') {\n            this.legendAlignVertical();\n          }\n        }\n      }\n    }, {\n      key: \"drawLegends\",\n      value: function drawLegends() {\n        var self = this;\n        var w = this.w;\n        var fontFamily = w.config.legend.fontFamily;\n        var legendNames = w.globals.seriesNames;\n        var fillcolor = w.globals.colors.slice();\n\n        if (w.config.chart.type === 'heatmap') {\n          var ranges = w.config.plotOptions.heatmap.colorScale.ranges;\n          legendNames = ranges.map(function (colorScale) {\n            return colorScale.name ? colorScale.name : colorScale.from + ' - ' + colorScale.to;\n          });\n          fillcolor = ranges.map(function (color) {\n            return color.color;\n          });\n        } else if (this.isBarsDistributed) {\n          legendNames = w.globals.labels.slice();\n        }\n\n        var legendFormatter = w.globals.legendFormatter;\n        var isLegendInversed = w.config.legend.inverseOrder;\n\n        for (var i = isLegendInversed ? legendNames.length - 1 : 0; isLegendInversed ? i >= 0 : i <= legendNames.length - 1; isLegendInversed ? i-- : i++) {\n          var text = legendFormatter(legendNames[i], {\n            seriesIndex: i,\n            w: w\n          });\n          var collapsedSeries = false;\n          var ancillaryCollapsedSeries = false;\n\n          if (w.globals.collapsedSeries.length > 0) {\n            for (var c = 0; c < w.globals.collapsedSeries.length; c++) {\n              if (w.globals.collapsedSeries[c].index === i) {\n                collapsedSeries = true;\n              }\n            }\n          }\n\n          if (w.globals.ancillaryCollapsedSeriesIndices.length > 0) {\n            for (var _c = 0; _c < w.globals.ancillaryCollapsedSeriesIndices.length; _c++) {\n              if (w.globals.ancillaryCollapsedSeriesIndices[_c] === i) {\n                ancillaryCollapsedSeries = true;\n              }\n            }\n          }\n\n          var elMarker = document.createElement('span');\n          elMarker.classList.add('apexcharts-legend-marker');\n          var mOffsetX = w.config.legend.markers.offsetX;\n          var mOffsetY = w.config.legend.markers.offsetY;\n          var mHeight = w.config.legend.markers.height;\n          var mWidth = w.config.legend.markers.width;\n          var mBorderWidth = w.config.legend.markers.strokeWidth;\n          var mBorderColor = w.config.legend.markers.strokeColor;\n          var mBorderRadius = w.config.legend.markers.radius;\n          var mStyle = elMarker.style;\n          mStyle.background = fillcolor[i];\n          mStyle.color = fillcolor[i]; // override fill color with custom legend.markers.fillColors\n\n          if (w.config.legend.markers.fillColors && w.config.legend.markers.fillColors[i]) {\n            mStyle.background = w.config.legend.markers.fillColors[i];\n          }\n\n          mStyle.height = Array.isArray(mHeight) ? parseFloat(mHeight[i]) + 'px' : parseFloat(mHeight) + 'px';\n          mStyle.width = Array.isArray(mWidth) ? parseFloat(mWidth[i]) + 'px' : parseFloat(mWidth) + 'px';\n          mStyle.left = Array.isArray(mOffsetX) ? mOffsetX[i] : mOffsetX;\n          mStyle.top = Array.isArray(mOffsetY) ? mOffsetY[i] : mOffsetY;\n          mStyle.borderWidth = Array.isArray(mBorderWidth) ? mBorderWidth[i] : mBorderWidth;\n          mStyle.borderColor = Array.isArray(mBorderColor) ? mBorderColor[i] : mBorderColor;\n          mStyle.borderRadius = Array.isArray(mBorderRadius) ? parseFloat(mBorderRadius[i]) + 'px' : parseFloat(mBorderRadius) + 'px';\n\n          if (w.config.legend.markers.customHTML) {\n            if (Array.isArray(w.config.legend.markers.customHTML)) {\n              elMarker.innerHTML = w.config.legend.markers.customHTML[i]();\n            } else {\n              elMarker.innerHTML = w.config.legend.markers.customHTML();\n            }\n          }\n\n          Graphics.setAttrs(elMarker, {\n            rel: i + 1,\n            'data:collapsed': collapsedSeries || ancillaryCollapsedSeries\n          });\n\n          if (collapsedSeries || ancillaryCollapsedSeries) {\n            elMarker.classList.add('apexcharts-inactive-legend');\n          }\n\n          var elLegend = document.createElement('div');\n          var elLegendText = document.createElement('span');\n          elLegendText.classList.add('apexcharts-legend-text');\n          elLegendText.innerHTML = Array.isArray(text) ? text.join(' ') : text;\n          var textColor = w.config.legend.labels.useSeriesColors ? w.globals.colors[i] : w.config.legend.labels.colors;\n\n          if (!textColor) {\n            textColor = w.config.chart.foreColor;\n          }\n\n          elLegendText.style.color = textColor;\n          elLegendText.style.fontSize = parseFloat(w.config.legend.fontSize) + 'px';\n          elLegendText.style.fontWeight = w.config.legend.fontWeight;\n          elLegendText.style.fontFamily = fontFamily || w.config.chart.fontFamily;\n          Graphics.setAttrs(elLegendText, {\n            rel: i + 1,\n            i: i,\n            'data:default-text': encodeURIComponent(text),\n            'data:collapsed': collapsedSeries || ancillaryCollapsedSeries\n          });\n          elLegend.appendChild(elMarker);\n          elLegend.appendChild(elLegendText);\n          var coreUtils = new CoreUtils(this.ctx);\n\n          if (!w.config.legend.showForZeroSeries) {\n            var total = coreUtils.getSeriesTotalByIndex(i);\n\n            if (total === 0 && coreUtils.seriesHaveSameValues(i) && !coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) {\n              elLegend.classList.add('apexcharts-hidden-zero-series');\n            }\n          }\n\n          if (!w.config.legend.showForNullSeries) {\n            if (coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) {\n              elLegend.classList.add('apexcharts-hidden-null-series');\n            }\n          }\n\n          w.globals.dom.elLegendWrap.appendChild(elLegend);\n          w.globals.dom.elLegendWrap.classList.add(\"apexcharts-align-\".concat(w.config.legend.horizontalAlign));\n          w.globals.dom.elLegendWrap.classList.add('position-' + w.config.legend.position);\n          elLegend.classList.add('apexcharts-legend-series');\n          elLegend.style.margin = \"\".concat(w.config.legend.itemMargin.vertical, \"px \").concat(w.config.legend.itemMargin.horizontal, \"px\");\n          w.globals.dom.elLegendWrap.style.width = w.config.legend.width ? w.config.legend.width + 'px' : '';\n          w.globals.dom.elLegendWrap.style.height = w.config.legend.height ? w.config.legend.height + 'px' : '';\n          Graphics.setAttrs(elLegend, {\n            rel: i + 1,\n            'data:collapsed': collapsedSeries || ancillaryCollapsedSeries\n          });\n\n          if (collapsedSeries || ancillaryCollapsedSeries) {\n            elLegend.classList.add('apexcharts-inactive-legend');\n          }\n\n          if (!w.config.legend.onItemClick.toggleDataSeries) {\n            elLegend.classList.add('apexcharts-no-click');\n          }\n        } // for now - just prevent click on heatmap legend - and allow hover only\n\n\n        var clickAllowed = w.config.chart.type !== 'heatmap' && !this.isBarsDistributed;\n\n        if (clickAllowed && w.config.legend.onItemClick.toggleDataSeries) {\n          w.globals.dom.elWrap.addEventListener('click', self.onLegendClick, true);\n        }\n\n        if (w.config.legend.onItemHover.highlightDataSeries) {\n          w.globals.dom.elWrap.addEventListener('mousemove', self.onLegendHovered, true);\n          w.globals.dom.elWrap.addEventListener('mouseout', self.onLegendHovered, true);\n        }\n      }\n    }, {\n      key: \"setLegendWrapXY\",\n      value: function setLegendWrapXY(offsetX, offsetY) {\n        var w = this.w;\n        var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');\n        var legendRect = elLegendWrap.getBoundingClientRect();\n        var x = 0;\n        var y = 0;\n\n        if (w.config.legend.position === 'bottom') {\n          y = y + (w.globals.svgHeight - legendRect.height / 2);\n        } else if (w.config.legend.position === 'top') {\n          var dim = new Dimensions(this.ctx);\n          var titleH = dim.dimHelpers.getTitleSubtitleCoords('title').height;\n          var subtitleH = dim.dimHelpers.getTitleSubtitleCoords('subtitle').height;\n          y = y + (titleH > 0 ? titleH - 10 : 0) + (subtitleH > 0 ? subtitleH - 10 : 0);\n        }\n\n        elLegendWrap.style.position = 'absolute';\n        x = x + offsetX + w.config.legend.offsetX;\n        y = y + offsetY + w.config.legend.offsetY;\n        elLegendWrap.style.left = x + 'px';\n        elLegendWrap.style.top = y + 'px';\n\n        if (w.config.legend.position === 'bottom') {\n          elLegendWrap.style.top = 'auto';\n          elLegendWrap.style.bottom = 5 - w.config.legend.offsetY + 'px';\n        } else if (w.config.legend.position === 'right') {\n          elLegendWrap.style.left = 'auto';\n          elLegendWrap.style.right = 25 + w.config.legend.offsetX + 'px';\n        }\n\n        var fixedHeigthWidth = ['width', 'height'];\n        fixedHeigthWidth.forEach(function (hw) {\n          if (elLegendWrap.style[hw]) {\n            elLegendWrap.style[hw] = parseInt(w.config.legend[hw], 10) + 'px';\n          }\n        });\n      }\n    }, {\n      key: \"legendAlignHorizontal\",\n      value: function legendAlignHorizontal() {\n        var w = this.w;\n        var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend');\n        elLegendWrap.style.right = 0;\n        var lRect = this.legendHelpers.getLegendBBox();\n        var dimensions = new Dimensions(this.ctx);\n        var titleRect = dimensions.dimHelpers.getTitleSubtitleCoords('title');\n        var subtitleRect = dimensions.dimHelpers.getTitleSubtitleCoords('subtitle');\n        var offsetX = 20;\n        var offsetY = 0; // the whole legend box is set to bottom\n\n        if (w.config.legend.position === 'bottom') {\n          offsetY = -lRect.clwh / 1.8;\n        } else if (w.config.legend.position === 'top') {\n          offsetY = titleRect.height + subtitleRect.height + w.config.title.margin + w.config.subtitle.margin - 10;\n        }\n\n        this.setLegendWrapXY(offsetX, offsetY);\n      }\n    }, {\n      key: \"legendAlignVertical\",\n      value: function legendAlignVertical() {\n        var w = this.w;\n        var lRect = this.legendHelpers.getLegendBBox();\n        var offsetY = 20;\n        var offsetX = 0;\n\n        if (w.config.legend.position === 'left') {\n          offsetX = 20;\n        }\n\n        if (w.config.legend.position === 'right') {\n          offsetX = w.globals.svgWidth - lRect.clww - 10;\n        }\n\n        this.setLegendWrapXY(offsetX, offsetY);\n      }\n    }, {\n      key: \"onLegendHovered\",\n      value: function onLegendHovered(e) {\n        var w = this.w;\n        var hoverOverLegend = e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker');\n\n        if (w.config.chart.type !== 'heatmap' && !this.isBarsDistributed) {\n          if (!e.target.classList.contains('apexcharts-inactive-legend') && hoverOverLegend) {\n            var series = new Series(this.ctx);\n            series.toggleSeriesOnHover(e, e.target);\n          }\n        } else {\n          // for heatmap handling\n          if (hoverOverLegend) {\n            var seriesCnt = parseInt(e.target.getAttribute('rel'), 10) - 1;\n            this.ctx.events.fireEvent('legendHover', [this.ctx, seriesCnt, this.w]);\n\n            var _series = new Series(this.ctx);\n\n            _series.highlightRangeInSeries(e, e.target);\n          }\n        }\n      }\n    }, {\n      key: \"onLegendClick\",\n      value: function onLegendClick(e) {\n        if (e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker')) {\n          var seriesCnt = parseInt(e.target.getAttribute('rel'), 10) - 1;\n          var isHidden = e.target.getAttribute('data:collapsed') === 'true';\n          var legendClick = this.w.config.chart.events.legendClick;\n\n          if (typeof legendClick === 'function') {\n            legendClick(this.ctx, seriesCnt, this.w);\n          }\n\n          this.ctx.events.fireEvent('legendClick', [this.ctx, seriesCnt, this.w]);\n          var markerClick = this.w.config.legend.markers.onClick;\n\n          if (typeof markerClick === 'function' && e.target.classList.contains('apexcharts-legend-marker')) {\n            markerClick(this.ctx, seriesCnt, this.w);\n            this.ctx.events.fireEvent('legendMarkerClick', [this.ctx, seriesCnt, this.w]);\n          }\n\n          this.legendHelpers.toggleDataSeries(seriesCnt, isHidden);\n        }\n      }\n    }]);\n\n    return Legend;\n  }();\n\n  var icoPan = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" fill=\\\"#000000\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"24\\\">\\n    <defs>\\n        <path d=\\\"M0 0h24v24H0z\\\" id=\\\"a\\\"/>\\n    </defs>\\n    <clipPath id=\\\"b\\\">\\n        <use overflow=\\\"visible\\\" xlink:href=\\\"#a\\\"/>\\n    </clipPath>\\n    <path clip-path=\\\"url(#b)\\\" d=\\\"M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z\\\"/>\\n</svg>\";\n\n  var icoZoom = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" fill=\\\"#000000\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"24\\\">\\n    <path d=\\\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\\\"/>\\n    <path d=\\\"M0 0h24v24H0V0z\\\" fill=\\\"none\\\"/>\\n    <path d=\\\"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\\\"/>\\n</svg>\";\n\n  var icoReset = \"<svg fill=\\\"#000000\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n    <path d=\\\"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\\\"/>\\n    <path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"/>\\n</svg>\";\n\n  var icoZoomIn = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\">\\n    <path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"/>\\n    <path d=\\\"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\\\"/>\\n</svg>\\n\";\n\n  var icoZoomOut = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\">\\n    <path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"/>\\n    <path d=\\\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\\\"/>\\n</svg>\\n\";\n\n  var icoSelect = \"<svg fill=\\\"#6E8192\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n    <path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"/>\\n    <path d=\\\"M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2z\\\"/>\\n</svg>\";\n\n  var icoMenu = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\"><path fill=\\\"none\\\" d=\\\"M0 0h24v24H0V0z\\\"/><path d=\\\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\\\"/></svg>\";\n\n  /**\n   * ApexCharts Toolbar Class for creating toolbar in axis based charts.\n   *\n   * @module Toolbar\n   **/\n\n  var Toolbar = /*#__PURE__*/function () {\n    function Toolbar(ctx) {\n      _classCallCheck(this, Toolbar);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.ev = this.w.config.chart.events;\n      this.selectedClass = 'apexcharts-selected';\n      this.localeValues = this.w.globals.locale.toolbar;\n    }\n\n    _createClass(Toolbar, [{\n      key: \"createToolbar\",\n      value: function createToolbar() {\n        var _this = this;\n\n        var w = this.w;\n\n        var createDiv = function createDiv() {\n          return document.createElement('div');\n        };\n\n        var elToolbarWrap = createDiv();\n        elToolbarWrap.setAttribute('class', 'apexcharts-toolbar');\n        elToolbarWrap.style.top = w.config.chart.toolbar.offsetY + 'px';\n        elToolbarWrap.style.right = -w.config.chart.toolbar.offsetX + 3 + 'px';\n        w.globals.dom.elWrap.appendChild(elToolbarWrap);\n        this.elZoom = createDiv();\n        this.elZoomIn = createDiv();\n        this.elZoomOut = createDiv();\n        this.elPan = createDiv();\n        this.elSelection = createDiv();\n        this.elZoomReset = createDiv();\n        this.elMenuIcon = createDiv();\n        this.elMenu = createDiv();\n        this.elCustomIcons = [];\n        this.t = w.config.chart.toolbar.tools;\n\n        if (Array.isArray(this.t.customIcons)) {\n          for (var i = 0; i < this.t.customIcons.length; i++) {\n            this.elCustomIcons.push(createDiv());\n          }\n        }\n\n        var toolbarControls = [];\n\n        var appendZoomControl = function appendZoomControl(type, el, ico) {\n          var tool = type.toLowerCase();\n\n          if (_this.t[tool] && w.config.chart.zoom.enabled) {\n            toolbarControls.push({\n              el: el,\n              icon: typeof _this.t[tool] === 'string' ? _this.t[tool] : ico,\n              title: _this.localeValues[type],\n              class: \"apexcharts-\".concat(tool, \"-icon\")\n            });\n          }\n        };\n\n        appendZoomControl('zoomIn', this.elZoomIn, icoZoomIn);\n        appendZoomControl('zoomOut', this.elZoomOut, icoZoomOut);\n\n        var zoomSelectionCtrls = function zoomSelectionCtrls(z) {\n          if (_this.t[z] && w.config.chart[z].enabled) {\n            toolbarControls.push({\n              el: z === 'zoom' ? _this.elZoom : _this.elSelection,\n              icon: typeof _this.t[z] === 'string' ? _this.t[z] : z === 'zoom' ? icoZoom : icoSelect,\n              title: _this.localeValues[z === 'zoom' ? 'selectionZoom' : 'selection'],\n              class: w.globals.isTouchDevice ? 'apexcharts-element-hidden' : \"apexcharts-\".concat(z, \"-icon\")\n            });\n          }\n        };\n\n        zoomSelectionCtrls('zoom');\n        zoomSelectionCtrls('selection');\n\n        if (this.t.pan && w.config.chart.zoom.enabled) {\n          toolbarControls.push({\n            el: this.elPan,\n            icon: typeof this.t.pan === 'string' ? this.t.pan : icoPan,\n            title: this.localeValues.pan,\n            class: w.globals.isTouchDevice ? 'apexcharts-element-hidden' : 'apexcharts-pan-icon'\n          });\n        }\n\n        appendZoomControl('reset', this.elZoomReset, icoReset);\n\n        if (this.t.download) {\n          toolbarControls.push({\n            el: this.elMenuIcon,\n            icon: typeof this.t.download === 'string' ? this.t.download : icoMenu,\n            title: this.localeValues.menu,\n            class: 'apexcharts-menu-icon'\n          });\n        }\n\n        for (var _i = 0; _i < this.elCustomIcons.length; _i++) {\n          toolbarControls.push({\n            el: this.elCustomIcons[_i],\n            icon: this.t.customIcons[_i].icon,\n            title: this.t.customIcons[_i].title,\n            index: this.t.customIcons[_i].index,\n            class: 'apexcharts-toolbar-custom-icon ' + this.t.customIcons[_i].class\n          });\n        }\n\n        toolbarControls.forEach(function (t, index) {\n          if (t.index) {\n            Utils.moveIndexInArray(toolbarControls, index, t.index);\n          }\n        });\n\n        for (var _i2 = 0; _i2 < toolbarControls.length; _i2++) {\n          Graphics.setAttrs(toolbarControls[_i2].el, {\n            class: toolbarControls[_i2].class,\n            title: toolbarControls[_i2].title\n          });\n          toolbarControls[_i2].el.innerHTML = toolbarControls[_i2].icon;\n          elToolbarWrap.appendChild(toolbarControls[_i2].el);\n        }\n\n        this._createHamburgerMenu(elToolbarWrap);\n\n        if (w.globals.zoomEnabled) {\n          this.elZoom.classList.add(this.selectedClass);\n        } else if (w.globals.panEnabled) {\n          this.elPan.classList.add(this.selectedClass);\n        } else if (w.globals.selectionEnabled) {\n          this.elSelection.classList.add(this.selectedClass);\n        }\n\n        this.addToolbarEventListeners();\n      }\n    }, {\n      key: \"_createHamburgerMenu\",\n      value: function _createHamburgerMenu(parent) {\n        this.elMenuItems = [];\n        parent.appendChild(this.elMenu);\n        Graphics.setAttrs(this.elMenu, {\n          class: 'apexcharts-menu'\n        });\n        var menuItems = [{\n          name: 'exportSVG',\n          title: this.localeValues.exportToSVG\n        }, {\n          name: 'exportPNG',\n          title: this.localeValues.exportToPNG\n        }, {\n          name: 'exportCSV',\n          title: this.localeValues.exportToCSV\n        }];\n\n        if (!this.w.globals.allSeriesHasEqualX) {\n          // if it is a multi series, and all series have variable x values, export CSV won't work\n          menuItems.splice(2, 1);\n        }\n\n        for (var i = 0; i < menuItems.length; i++) {\n          this.elMenuItems.push(document.createElement('div'));\n          this.elMenuItems[i].innerHTML = menuItems[i].title;\n          Graphics.setAttrs(this.elMenuItems[i], {\n            class: \"apexcharts-menu-item \".concat(menuItems[i].name),\n            title: menuItems[i].title\n          });\n          this.elMenu.appendChild(this.elMenuItems[i]);\n        }\n      }\n    }, {\n      key: \"addToolbarEventListeners\",\n      value: function addToolbarEventListeners() {\n        var _this2 = this;\n\n        this.elZoomReset.addEventListener('click', this.handleZoomReset.bind(this));\n        this.elSelection.addEventListener('click', this.toggleZoomSelection.bind(this, 'selection'));\n        this.elZoom.addEventListener('click', this.toggleZoomSelection.bind(this, 'zoom'));\n        this.elZoomIn.addEventListener('click', this.handleZoomIn.bind(this));\n        this.elZoomOut.addEventListener('click', this.handleZoomOut.bind(this));\n        this.elPan.addEventListener('click', this.togglePanning.bind(this));\n        this.elMenuIcon.addEventListener('click', this.toggleMenu.bind(this));\n        this.elMenuItems.forEach(function (m) {\n          if (m.classList.contains('exportSVG')) {\n            m.addEventListener('click', _this2.handleDownload.bind(_this2, 'svg'));\n          } else if (m.classList.contains('exportPNG')) {\n            m.addEventListener('click', _this2.handleDownload.bind(_this2, 'png'));\n          } else if (m.classList.contains('exportCSV')) {\n            m.addEventListener('click', _this2.handleDownload.bind(_this2, 'csv'));\n          }\n        });\n\n        for (var i = 0; i < this.t.customIcons.length; i++) {\n          this.elCustomIcons[i].addEventListener('click', this.t.customIcons[i].click.bind(this, this.ctx, this.ctx.w));\n        }\n      }\n    }, {\n      key: \"toggleZoomSelection\",\n      value: function toggleZoomSelection(type) {\n        this.toggleOtherControls();\n        var el = type === 'selection' ? this.elSelection : this.elZoom;\n        var enabledType = type === 'selection' ? 'selectionEnabled' : 'zoomEnabled';\n        this.w.globals[enabledType] = !this.w.globals[enabledType];\n\n        if (!el.classList.contains(this.selectedClass)) {\n          el.classList.add(this.selectedClass);\n        } else {\n          el.classList.remove(this.selectedClass);\n        }\n      }\n    }, {\n      key: \"getToolbarIconsReference\",\n      value: function getToolbarIconsReference() {\n        var w = this.w;\n\n        if (!this.elZoom) {\n          this.elZoom = w.globals.dom.baseEl.querySelector('.apexcharts-zoom-icon');\n        }\n\n        if (!this.elPan) {\n          this.elPan = w.globals.dom.baseEl.querySelector('.apexcharts-pan-icon');\n        }\n\n        if (!this.elSelection) {\n          this.elSelection = w.globals.dom.baseEl.querySelector('.apexcharts-selection-icon');\n        }\n      }\n    }, {\n      key: \"enableZoomPanFromToolbar\",\n      value: function enableZoomPanFromToolbar(type) {\n        this.toggleOtherControls();\n        type === 'pan' ? this.w.globals.panEnabled = true : this.w.globals.zoomEnabled = true;\n        var el = type === 'pan' ? this.elPan : this.elZoom;\n        var el2 = type === 'pan' ? this.elZoom : this.elPan;\n\n        if (el) {\n          el.classList.add(this.selectedClass);\n        }\n\n        if (el2) {\n          el2.classList.remove(this.selectedClass);\n        }\n      }\n    }, {\n      key: \"togglePanning\",\n      value: function togglePanning() {\n        this.toggleOtherControls();\n        this.w.globals.panEnabled = !this.w.globals.panEnabled;\n\n        if (!this.elPan.classList.contains(this.selectedClass)) {\n          this.elPan.classList.add(this.selectedClass);\n        } else {\n          this.elPan.classList.remove(this.selectedClass);\n        }\n      }\n    }, {\n      key: \"toggleOtherControls\",\n      value: function toggleOtherControls() {\n        var _this3 = this;\n\n        var w = this.w;\n        w.globals.panEnabled = false;\n        w.globals.zoomEnabled = false;\n        w.globals.selectionEnabled = false;\n        this.getToolbarIconsReference();\n        var toggleEls = [this.elPan, this.elSelection, this.elZoom];\n        toggleEls.forEach(function (el) {\n          if (el) {\n            el.classList.remove(_this3.selectedClass);\n          }\n        });\n      }\n    }, {\n      key: \"handleZoomIn\",\n      value: function handleZoomIn() {\n        var w = this.w;\n        var centerX = (w.globals.minX + w.globals.maxX) / 2;\n        var newMinX = (w.globals.minX + centerX) / 2;\n        var newMaxX = (w.globals.maxX + centerX) / 2;\n\n        var newMinXMaxX = this._getNewMinXMaxX(newMinX, newMaxX);\n\n        if (!w.globals.disableZoomIn) {\n          this.zoomUpdateOptions(newMinXMaxX.minX, newMinXMaxX.maxX);\n        }\n      }\n    }, {\n      key: \"handleZoomOut\",\n      value: function handleZoomOut() {\n        var w = this.w; // avoid zooming out beyond 1000 which may result in NaN values being printed on x-axis\n\n        if (w.config.xaxis.type === 'datetime' && new Date(w.globals.minX).getUTCFullYear() < 1000) {\n          return;\n        }\n\n        var centerX = (w.globals.minX + w.globals.maxX) / 2;\n        var newMinX = w.globals.minX - (centerX - w.globals.minX);\n        var newMaxX = w.globals.maxX - (centerX - w.globals.maxX);\n\n        var newMinXMaxX = this._getNewMinXMaxX(newMinX, newMaxX);\n\n        if (!w.globals.disableZoomOut) {\n          this.zoomUpdateOptions(newMinXMaxX.minX, newMinXMaxX.maxX);\n        }\n      }\n    }, {\n      key: \"_getNewMinXMaxX\",\n      value: function _getNewMinXMaxX(newMinX, newMaxX) {\n        var shouldFloor = this.w.config.xaxis.convertedCatToNumeric;\n        return {\n          minX: shouldFloor ? Math.floor(newMinX) : newMinX,\n          maxX: shouldFloor ? Math.floor(newMaxX) : newMaxX\n        };\n      }\n    }, {\n      key: \"zoomUpdateOptions\",\n      value: function zoomUpdateOptions(newMinX, newMaxX) {\n        var w = this.w;\n\n        if (w.config.xaxis.convertedCatToNumeric) {\n          // in category charts, avoid zooming out beyond min and max\n          if (newMinX < 1) {\n            newMinX = 1;\n            newMaxX = w.globals.dataPoints;\n          }\n\n          if (newMaxX - newMinX < 2) {\n            return;\n          }\n        }\n\n        var xaxis = {\n          min: newMinX,\n          max: newMaxX\n        };\n        var beforeZoomRange = this.getBeforeZoomRange(xaxis);\n\n        if (beforeZoomRange) {\n          xaxis = beforeZoomRange.xaxis;\n        }\n\n        var options = {\n          xaxis: xaxis\n        };\n        var yaxis = Utils.clone(w.globals.initialConfig.yaxis);\n\n        if (w.config.chart.zoom.autoScaleYaxis) {\n          var scale = new Range(this.ctx);\n          yaxis = scale.autoScaleY(this.ctx, yaxis, {\n            xaxis: xaxis\n          });\n        }\n\n        if (!w.config.chart.group) {\n          // if chart in a group, prevent yaxis update here\n          // fix issue #650\n          options.yaxis = yaxis;\n        }\n\n        this.w.globals.zoomed = true;\n\n        this.ctx.updateHelpers._updateOptions(options, false, this.w.config.chart.animations.dynamicAnimation.enabled);\n\n        this.zoomCallback(xaxis, yaxis);\n      }\n    }, {\n      key: \"zoomCallback\",\n      value: function zoomCallback(xaxis, yaxis) {\n        if (typeof this.ev.zoomed === 'function') {\n          this.ev.zoomed(this.ctx, {\n            xaxis: xaxis,\n            yaxis: yaxis\n          });\n        }\n      }\n    }, {\n      key: \"getBeforeZoomRange\",\n      value: function getBeforeZoomRange(xaxis, yaxis) {\n        var newRange = null;\n\n        if (typeof this.ev.beforeZoom === 'function') {\n          newRange = this.ev.beforeZoom(this, {\n            xaxis: xaxis,\n            yaxis: yaxis\n          });\n        }\n\n        return newRange;\n      }\n    }, {\n      key: \"toggleMenu\",\n      value: function toggleMenu() {\n        var _this4 = this;\n\n        window.setTimeout(function () {\n          if (_this4.elMenu.classList.contains('apexcharts-menu-open')) {\n            _this4.elMenu.classList.remove('apexcharts-menu-open');\n          } else {\n            _this4.elMenu.classList.add('apexcharts-menu-open');\n          }\n        }, 0);\n      }\n    }, {\n      key: \"handleDownload\",\n      value: function handleDownload(type) {\n        var w = this.w;\n        var exprt = new Exports(this.ctx);\n\n        switch (type) {\n          case 'svg':\n            exprt.exportToSVG(this.ctx);\n            break;\n\n          case 'png':\n            exprt.exportToPng(this.ctx);\n            break;\n\n          case 'csv':\n            exprt.exportToCSV({\n              series: w.config.series\n            });\n            break;\n        }\n      }\n    }, {\n      key: \"handleZoomReset\",\n      value: function handleZoomReset(e) {\n        var _this5 = this;\n\n        var charts = this.ctx.getSyncedCharts();\n        charts.forEach(function (ch) {\n          var w = ch.w;\n          ch.updateHelpers.revertDefaultAxisMinMax();\n\n          if (typeof w.config.chart.events.zoomed === 'function') {\n            _this5.zoomCallback({\n              min: w.config.xaxis.min,\n              max: w.config.xaxis.max\n            });\n          }\n\n          w.globals.zoomed = false;\n\n          ch.updateHelpers._updateSeries(w.globals.initialSeries, w.config.chart.animations.dynamicAnimation.enabled);\n        });\n      }\n    }, {\n      key: \"destroy\",\n      value: function destroy() {\n        this.elZoom = null;\n        this.elZoomIn = null;\n        this.elZoomOut = null;\n        this.elPan = null;\n        this.elSelection = null;\n        this.elZoomReset = null;\n        this.elMenuIcon = null;\n      }\n    }]);\n\n    return Toolbar;\n  }();\n\n  /**\n   * ApexCharts Zoom Class for handling zooming and panning on axes based charts.\n   *\n   * @module ZoomPanSelection\n   **/\n\n  var ZoomPanSelection = /*#__PURE__*/function (_Toolbar) {\n    _inherits(ZoomPanSelection, _Toolbar);\n\n    function ZoomPanSelection(ctx) {\n      var _this;\n\n      _classCallCheck(this, ZoomPanSelection);\n\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(ZoomPanSelection).call(this, ctx));\n      _this.ctx = ctx;\n      _this.w = ctx.w;\n      _this.dragged = false;\n      _this.graphics = new Graphics(_this.ctx);\n      _this.eventList = ['mousedown', 'mouseleave', 'mousemove', 'touchstart', 'touchmove', 'mouseup', 'touchend'];\n      _this.clientX = 0;\n      _this.clientY = 0;\n      _this.startX = 0;\n      _this.endX = 0;\n      _this.dragX = 0;\n      _this.startY = 0;\n      _this.endY = 0;\n      _this.dragY = 0;\n      _this.moveDirection = 'none';\n      return _this;\n    }\n\n    _createClass(ZoomPanSelection, [{\n      key: \"init\",\n      value: function init(_ref) {\n        var _this2 = this;\n\n        var xyRatios = _ref.xyRatios;\n        var w = this.w;\n        var me = this;\n        this.xyRatios = xyRatios;\n        this.zoomRect = this.graphics.drawRect(0, 0, 0, 0);\n        this.selectionRect = this.graphics.drawRect(0, 0, 0, 0);\n        this.gridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid');\n        this.zoomRect.node.classList.add('apexcharts-zoom-rect');\n        this.selectionRect.node.classList.add('apexcharts-selection-rect');\n        w.globals.dom.elGraphical.add(this.zoomRect);\n        w.globals.dom.elGraphical.add(this.selectionRect);\n\n        if (w.config.chart.selection.type === 'x') {\n          this.slDraggableRect = this.selectionRect.draggable({\n            minX: 0,\n            minY: 0,\n            maxX: w.globals.gridWidth,\n            maxY: w.globals.gridHeight\n          }).on('dragmove', this.selectionDragging.bind(this, 'dragging'));\n        } else if (w.config.chart.selection.type === 'y') {\n          this.slDraggableRect = this.selectionRect.draggable({\n            minX: 0,\n            maxX: w.globals.gridWidth\n          }).on('dragmove', this.selectionDragging.bind(this, 'dragging'));\n        } else {\n          this.slDraggableRect = this.selectionRect.draggable().on('dragmove', this.selectionDragging.bind(this, 'dragging'));\n        }\n\n        this.preselectedSelection();\n        this.hoverArea = w.globals.dom.baseEl.querySelector(w.globals.chartClass);\n        this.hoverArea.classList.add('apexcharts-zoomable');\n        this.eventList.forEach(function (event) {\n          _this2.hoverArea.addEventListener(event, me.svgMouseEvents.bind(me, xyRatios), {\n            capture: false,\n            passive: true\n          });\n        });\n      } // remove the event listeners which were previously added on hover area\n\n    }, {\n      key: \"destroy\",\n      value: function destroy() {\n        if (this.slDraggableRect) {\n          this.slDraggableRect.draggable(false);\n          this.slDraggableRect.off();\n          this.selectionRect.off();\n        }\n\n        this.selectionRect = null;\n        this.zoomRect = null;\n        this.gridRect = null;\n      }\n    }, {\n      key: \"svgMouseEvents\",\n      value: function svgMouseEvents(xyRatios, e) {\n        var w = this.w;\n        var me = this;\n        var toolbar = this.ctx.toolbar;\n        var zoomtype = w.globals.zoomEnabled ? w.config.chart.zoom.type : w.config.chart.selection.type;\n\n        if (e.shiftKey) {\n          this.shiftWasPressed = true;\n          toolbar.enableZoomPanFromToolbar('pan');\n        } else {\n          if (this.shiftWasPressed) {\n            toolbar.enableZoomPanFromToolbar('zoom');\n            this.shiftWasPressed = false;\n          }\n        }\n\n        var falsePositives = e.target.classList.contains('apexcharts-selection-rect') || e.target.parentNode.classList.contains('apexcharts-toolbar');\n        if (falsePositives) return;\n        me.clientX = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientX : e.type === 'touchend' ? e.changedTouches[0].clientX : e.clientX;\n        me.clientY = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientY : e.type === 'touchend' ? e.changedTouches[0].clientY : e.clientY;\n\n        if (e.type === 'mousedown' && e.which === 1) {\n          var gridRectDim = me.gridRect.getBoundingClientRect();\n          me.startX = me.clientX - gridRectDim.left;\n          me.startY = me.clientY - gridRectDim.top;\n          me.dragged = false;\n          me.w.globals.mousedown = true;\n        }\n\n        if (e.type === 'mousemove' && e.which === 1 || e.type === 'touchmove') {\n          me.dragged = true;\n\n          if (w.globals.panEnabled) {\n            w.globals.selection = null;\n\n            if (me.w.globals.mousedown) {\n              me.panDragging({\n                context: me,\n                zoomtype: zoomtype,\n                xyRatios: xyRatios\n              });\n            }\n          } else {\n            if (me.w.globals.mousedown && w.globals.zoomEnabled || me.w.globals.mousedown && w.globals.selectionEnabled) {\n              me.selection = me.selectionDrawing({\n                context: me,\n                zoomtype: zoomtype\n              });\n            }\n          }\n        }\n\n        if (e.type === 'mouseup' || e.type === 'touchend' || e.type === 'mouseleave') {\n          // we will be calling getBoundingClientRect on each mousedown/mousemove/mouseup\n          var _gridRectDim = me.gridRect.getBoundingClientRect();\n\n          if (me.w.globals.mousedown) {\n            // user released the drag, now do all the calculations\n            me.endX = me.clientX - _gridRectDim.left;\n            me.endY = me.clientY - _gridRectDim.top;\n            me.dragX = Math.abs(me.endX - me.startX);\n            me.dragY = Math.abs(me.endY - me.startY);\n\n            if (w.globals.zoomEnabled || w.globals.selectionEnabled) {\n              me.selectionDrawn({\n                context: me,\n                zoomtype: zoomtype\n              });\n            }\n\n            if (w.globals.panEnabled && w.config.xaxis.convertedCatToNumeric) {\n              me.delayedPanScrolled();\n            }\n          }\n\n          if (w.globals.zoomEnabled) {\n            me.hideSelectionRect(this.selectionRect);\n          }\n\n          me.dragged = false;\n          me.w.globals.mousedown = false;\n        }\n\n        this.makeSelectionRectDraggable();\n      }\n    }, {\n      key: \"makeSelectionRectDraggable\",\n      value: function makeSelectionRectDraggable() {\n        var w = this.w;\n        if (!this.selectionRect) return;\n        var rectDim = this.selectionRect.node.getBoundingClientRect();\n\n        if (rectDim.width > 0 && rectDim.height > 0) {\n          this.slDraggableRect.selectize({\n            points: 'l, r',\n            pointSize: 8,\n            pointType: 'rect'\n          }).resize({\n            constraint: {\n              minX: 0,\n              minY: 0,\n              maxX: w.globals.gridWidth,\n              maxY: w.globals.gridHeight\n            }\n          }).on('resizing', this.selectionDragging.bind(this, 'resizing'));\n        }\n      }\n    }, {\n      key: \"preselectedSelection\",\n      value: function preselectedSelection() {\n        var w = this.w;\n        var xyRatios = this.xyRatios;\n\n        if (!w.globals.zoomEnabled) {\n          if (typeof w.globals.selection !== 'undefined' && w.globals.selection !== null) {\n            this.drawSelectionRect(w.globals.selection);\n          } else {\n            if (w.config.chart.selection.xaxis.min !== undefined && w.config.chart.selection.xaxis.max !== undefined) {\n              var x = (w.config.chart.selection.xaxis.min - w.globals.minX) / xyRatios.xRatio;\n              var width = w.globals.gridWidth - (w.globals.maxX - w.config.chart.selection.xaxis.max) / xyRatios.xRatio - x;\n              var selectionRect = {\n                x: x,\n                y: 0,\n                width: width,\n                height: w.globals.gridHeight,\n                translateX: 0,\n                translateY: 0,\n                selectionEnabled: true\n              };\n              this.drawSelectionRect(selectionRect);\n              this.makeSelectionRectDraggable();\n\n              if (typeof w.config.chart.events.selection === 'function') {\n                w.config.chart.events.selection(this.ctx, {\n                  xaxis: {\n                    min: w.config.chart.selection.xaxis.min,\n                    max: w.config.chart.selection.xaxis.max\n                  },\n                  yaxis: {}\n                });\n              }\n            }\n          }\n        }\n      }\n    }, {\n      key: \"drawSelectionRect\",\n      value: function drawSelectionRect(_ref2) {\n        var x = _ref2.x,\n            y = _ref2.y,\n            width = _ref2.width,\n            height = _ref2.height,\n            translateX = _ref2.translateX,\n            translateY = _ref2.translateY;\n        var w = this.w;\n        var zoomRect = this.zoomRect;\n        var selectionRect = this.selectionRect;\n\n        if (this.dragged || w.globals.selection !== null) {\n          var scalingAttrs = {\n            transform: 'translate(' + translateX + ', ' + translateY + ')'\n          }; // change styles based on zoom or selection\n          // zoom is Enabled and user has dragged, so draw blue rect\n\n          if (w.globals.zoomEnabled && this.dragged) {\n            if (width < 0) width = 1; // fixes apexcharts.js#1168\n\n            zoomRect.attr({\n              x: x,\n              y: y,\n              width: width,\n              height: height,\n              fill: w.config.chart.zoom.zoomedArea.fill.color,\n              'fill-opacity': w.config.chart.zoom.zoomedArea.fill.opacity,\n              stroke: w.config.chart.zoom.zoomedArea.stroke.color,\n              'stroke-width': w.config.chart.zoom.zoomedArea.stroke.width,\n              'stroke-opacity': w.config.chart.zoom.zoomedArea.stroke.opacity\n            });\n            Graphics.setAttrs(zoomRect.node, scalingAttrs);\n          } // selection is enabled\n\n\n          if (w.globals.selectionEnabled) {\n            selectionRect.attr({\n              x: x,\n              y: y,\n              width: width > 0 ? width : 0,\n              height: height > 0 ? height : 0,\n              fill: w.config.chart.selection.fill.color,\n              'fill-opacity': w.config.chart.selection.fill.opacity,\n              stroke: w.config.chart.selection.stroke.color,\n              'stroke-width': w.config.chart.selection.stroke.width,\n              'stroke-dasharray': w.config.chart.selection.stroke.dashArray,\n              'stroke-opacity': w.config.chart.selection.stroke.opacity\n            });\n            Graphics.setAttrs(selectionRect.node, scalingAttrs);\n          }\n        }\n      }\n    }, {\n      key: \"hideSelectionRect\",\n      value: function hideSelectionRect(rect) {\n        if (rect) {\n          rect.attr({\n            x: 0,\n            y: 0,\n            width: 0,\n            height: 0\n          });\n        }\n      }\n    }, {\n      key: \"selectionDrawing\",\n      value: function selectionDrawing(_ref3) {\n        var context = _ref3.context,\n            zoomtype = _ref3.zoomtype;\n        var w = this.w;\n        var me = context;\n        var gridRectDim = this.gridRect.getBoundingClientRect();\n        var startX = me.startX - 1;\n        var startY = me.startY;\n        var selectionWidth = me.clientX - gridRectDim.left - startX;\n        var selectionHeight = me.clientY - gridRectDim.top - startY;\n        var translateX = 0;\n        var translateY = 0;\n        var selectionRect = {};\n\n        if (Math.abs(selectionWidth + startX) > w.globals.gridWidth) {\n          // user dragged the mouse outside drawing area to the right\n          selectionWidth = w.globals.gridWidth - startX;\n        } else if (me.clientX - gridRectDim.left < 0) {\n          // user dragged the mouse outside drawing area to the left\n          selectionWidth = startX;\n        } // inverse selection X\n\n\n        if (startX > me.clientX - gridRectDim.left) {\n          selectionWidth = Math.abs(selectionWidth);\n          translateX = -selectionWidth;\n        } // inverse selection Y\n\n\n        if (startY > me.clientY - gridRectDim.top) {\n          selectionHeight = Math.abs(selectionHeight);\n          translateY = -selectionHeight;\n        }\n\n        if (zoomtype === 'x') {\n          selectionRect = {\n            x: startX,\n            y: 0,\n            width: selectionWidth,\n            height: w.globals.gridHeight,\n            translateX: translateX,\n            translateY: 0\n          };\n        } else if (zoomtype === 'y') {\n          selectionRect = {\n            x: 0,\n            y: startY,\n            width: w.globals.gridWidth,\n            height: selectionHeight,\n            translateX: 0,\n            translateY: translateY\n          };\n        } else {\n          selectionRect = {\n            x: startX,\n            y: startY,\n            width: selectionWidth,\n            height: selectionHeight,\n            translateX: translateX,\n            translateY: translateY\n          };\n        }\n\n        me.drawSelectionRect(selectionRect);\n        me.selectionDragging('resizing');\n        return selectionRect;\n      }\n    }, {\n      key: \"selectionDragging\",\n      value: function selectionDragging(type, e) {\n        var _this3 = this;\n\n        var w = this.w;\n        var xyRatios = this.xyRatios;\n        var selRect = this.selectionRect;\n        var timerInterval = 0;\n\n        if (type === 'resizing') {\n          timerInterval = 30;\n        }\n\n        if (typeof w.config.chart.events.selection === 'function' && w.globals.selectionEnabled) {\n          // a small debouncer is required when resizing to avoid freezing the chart\n          clearTimeout(this.w.globals.selectionResizeTimer);\n          this.w.globals.selectionResizeTimer = window.setTimeout(function () {\n            var gridRectDim = _this3.gridRect.getBoundingClientRect();\n\n            var selectionRect = selRect.node.getBoundingClientRect();\n            var minX = w.globals.xAxisScale.niceMin + (selectionRect.left - gridRectDim.left) * xyRatios.xRatio;\n            var maxX = w.globals.xAxisScale.niceMin + (selectionRect.right - gridRectDim.left) * xyRatios.xRatio;\n            var minY = w.globals.yAxisScale[0].niceMin + (gridRectDim.bottom - selectionRect.bottom) * xyRatios.yRatio[0];\n            var maxY = w.globals.yAxisScale[0].niceMax - (selectionRect.top - gridRectDim.top) * xyRatios.yRatio[0];\n            w.config.chart.events.selection(_this3.ctx, {\n              xaxis: {\n                min: minX,\n                max: maxX\n              },\n              yaxis: {\n                min: minY,\n                max: maxY\n              }\n            });\n          }, timerInterval);\n        }\n      }\n    }, {\n      key: \"selectionDrawn\",\n      value: function selectionDrawn(_ref4) {\n        var context = _ref4.context,\n            zoomtype = _ref4.zoomtype;\n        var w = this.w;\n        var me = context;\n        var xyRatios = this.xyRatios;\n        var toolbar = this.ctx.toolbar;\n\n        if (me.startX > me.endX) {\n          var tempX = me.startX;\n          me.startX = me.endX;\n          me.endX = tempX;\n        }\n\n        if (me.startY > me.endY) {\n          var tempY = me.startY;\n          me.startY = me.endY;\n          me.endY = tempY;\n        }\n\n        var xLowestValue = w.globals.xAxisScale.niceMin + me.startX * xyRatios.xRatio;\n        var xHighestValue = w.globals.xAxisScale.niceMin + me.endX * xyRatios.xRatio; // TODO: we will consider the 1st y axis values here for getting highest and lowest y\n\n        var yHighestValue = [];\n        var yLowestValue = [];\n        w.config.yaxis.forEach(function (yaxe, index) {\n          yHighestValue.push(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.startY);\n          yLowestValue.push(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.endY);\n        });\n\n        if (me.dragged && (me.dragX > 10 || me.dragY > 10) && xLowestValue !== xHighestValue) {\n          if (w.globals.zoomEnabled) {\n            var yaxis = Utils.clone(w.globals.initialConfig.yaxis);\n            var xaxis = Utils.clone(w.globals.initialConfig.xaxis);\n            w.globals.zoomed = true; // before zooming in/out, store the last yaxis and xaxis range, so that when user hits the RESET button, we get the original range\n            // also - make sure user is not already zoomed in/out - otherwise we will store zoomed values in lastAxis\n            // DEAD code - the below condition will never run now as zoomed is made false above\n\n            if (!w.globals.zoomed) {\n              w.globals.lastXAxis = Utils.clone(w.config.xaxis);\n              w.globals.lastYAxis = Utils.clone(w.config.yaxis);\n            }\n\n            if (w.config.xaxis.convertedCatToNumeric) {\n              xLowestValue = Math.floor(xLowestValue);\n              xHighestValue = Math.floor(xHighestValue);\n\n              if (xLowestValue < 1) {\n                xLowestValue = 1;\n                xHighestValue = w.globals.dataPoints;\n              }\n\n              if (xHighestValue - xLowestValue < 2) {\n                xHighestValue = xLowestValue + 1;\n              }\n            }\n\n            if (zoomtype === 'xy' || zoomtype === 'x') {\n              xaxis = {\n                min: xLowestValue,\n                max: xHighestValue\n              };\n            }\n\n            if (zoomtype === 'xy' || zoomtype === 'y') {\n              yaxis.forEach(function (yaxe, index) {\n                yaxis[index].min = yLowestValue[index];\n                yaxis[index].max = yHighestValue[index];\n              });\n            }\n\n            if (w.config.chart.zoom.autoScaleYaxis) {\n              var scale = new Range(me.ctx);\n              yaxis = scale.autoScaleY(me.ctx, yaxis, {\n                xaxis: xaxis\n              });\n            }\n\n            if (toolbar) {\n              var beforeZoomRange = toolbar.getBeforeZoomRange(xaxis, yaxis);\n\n              if (beforeZoomRange) {\n                xaxis = beforeZoomRange.xaxis ? beforeZoomRange.xaxis : xaxis;\n                yaxis = beforeZoomRange.yaxis ? beforeZoomRange.yaxe : yaxis;\n              }\n            }\n\n            var options = {\n              xaxis: xaxis\n            };\n\n            if (!w.config.chart.group) {\n              // if chart in a group, prevent yaxis update here\n              // fix issue #650\n              options.yaxis = yaxis;\n            }\n\n            me.ctx.updateHelpers._updateOptions(options, false, me.w.config.chart.animations.dynamicAnimation.enabled);\n\n            if (typeof w.config.chart.events.zoomed === 'function') {\n              toolbar.zoomCallback(xaxis, yaxis);\n            }\n          } else if (w.globals.selectionEnabled) {\n            var _yaxis = null;\n            var _xaxis = null;\n            _xaxis = {\n              min: xLowestValue,\n              max: xHighestValue\n            };\n\n            if (zoomtype === 'xy' || zoomtype === 'y') {\n              _yaxis = Utils.clone(w.config.yaxis);\n\n              _yaxis.forEach(function (yaxe, index) {\n                _yaxis[index].min = yLowestValue[index];\n                _yaxis[index].max = yHighestValue[index];\n              });\n            }\n\n            w.globals.selection = me.selection;\n\n            if (typeof w.config.chart.events.selection === 'function') {\n              w.config.chart.events.selection(me.ctx, {\n                xaxis: _xaxis,\n                yaxis: _yaxis\n              });\n            }\n          }\n        }\n      }\n    }, {\n      key: \"panDragging\",\n      value: function panDragging(_ref5) {\n        var context = _ref5.context;\n        var w = this.w;\n        var me = context; // check to make sure there is data to compare against\n\n        if (typeof w.globals.lastClientPosition.x !== 'undefined') {\n          // get the change from last position to this position\n          var deltaX = w.globals.lastClientPosition.x - me.clientX;\n          var deltaY = w.globals.lastClientPosition.y - me.clientY; // check which direction had the highest amplitude and then figure out direction by checking if the value is greater or less than zero\n\n          if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX > 0) {\n            this.moveDirection = 'left';\n          } else if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX < 0) {\n            this.moveDirection = 'right';\n          } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY > 0) {\n            this.moveDirection = 'up';\n          } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY < 0) {\n            this.moveDirection = 'down';\n          }\n        } // set the new last position to the current for next time (to get the position of drag)\n\n\n        w.globals.lastClientPosition = {\n          x: me.clientX,\n          y: me.clientY\n        };\n        var xLowestValue = w.globals.minX;\n        var xHighestValue = w.globals.maxX; // on a category, we don't pan continuosly as it causes bugs\n\n        if (!w.config.xaxis.convertedCatToNumeric) {\n          me.panScrolled(xLowestValue, xHighestValue);\n        }\n      }\n    }, {\n      key: \"delayedPanScrolled\",\n      value: function delayedPanScrolled() {\n        var w = this.w;\n        var newMinX = w.globals.minX;\n        var newMaxX = w.globals.maxX;\n        var centerX = (w.globals.maxX - w.globals.minX) / 2;\n\n        if (this.moveDirection === 'left') {\n          newMinX = w.globals.minX + centerX;\n          newMaxX = w.globals.maxX + centerX;\n        } else if (this.moveDirection === 'right') {\n          newMinX = w.globals.minX - centerX;\n          newMaxX = w.globals.maxX - centerX;\n        }\n\n        newMinX = Math.floor(newMinX);\n        newMaxX = Math.floor(newMaxX);\n        this.updateScrolledChart({\n          xaxis: {\n            min: newMinX,\n            max: newMaxX\n          }\n        }, newMinX, newMaxX);\n      }\n    }, {\n      key: \"panScrolled\",\n      value: function panScrolled(xLowestValue, xHighestValue) {\n        var w = this.w;\n        var xyRatios = this.xyRatios;\n        var yaxis = Utils.clone(w.globals.initialConfig.yaxis);\n\n        if (this.moveDirection === 'left') {\n          xLowestValue = w.globals.minX + w.globals.gridWidth / 15 * xyRatios.xRatio;\n          xHighestValue = w.globals.maxX + w.globals.gridWidth / 15 * xyRatios.xRatio;\n        } else if (this.moveDirection === 'right') {\n          xLowestValue = w.globals.minX - w.globals.gridWidth / 15 * xyRatios.xRatio;\n          xHighestValue = w.globals.maxX - w.globals.gridWidth / 15 * xyRatios.xRatio;\n        }\n\n        if (xLowestValue < w.globals.initialMinX || xHighestValue > w.globals.initialMaxX) {\n          xLowestValue = w.globals.minX;\n          xHighestValue = w.globals.maxX;\n        }\n\n        var xaxis = {\n          min: xLowestValue,\n          max: xHighestValue\n        };\n\n        if (w.config.chart.zoom.autoScaleYaxis) {\n          var scale = new Range(this.ctx);\n          yaxis = scale.autoScaleY(this.ctx, yaxis, {\n            xaxis: xaxis\n          });\n        }\n\n        var options = {\n          xaxis: {\n            min: xLowestValue,\n            max: xHighestValue\n          }\n        };\n\n        if (!w.config.chart.group) {\n          // if chart in a group, prevent yaxis update here\n          // fix issue #650\n          options.yaxis = yaxis;\n        }\n\n        this.updateScrolledChart(options, xLowestValue, xHighestValue);\n      }\n    }, {\n      key: \"updateScrolledChart\",\n      value: function updateScrolledChart(options, xLowestValue, xHighestValue) {\n        var w = this.w;\n\n        this.ctx.updateHelpers._updateOptions(options, false, false);\n\n        if (typeof w.config.chart.events.scrolled === 'function') {\n          w.config.chart.events.scrolled(this.ctx, {\n            xaxis: {\n              min: xLowestValue,\n              max: xHighestValue\n            }\n          });\n        }\n      }\n    }]);\n\n    return ZoomPanSelection;\n  }(Toolbar);\n\n  var Utils$1 = /*#__PURE__*/function () {\n    function Utils$1(tooltipContext) {\n      _classCallCheck(this, Utils$1);\n\n      this.w = tooltipContext.w;\n      this.ttCtx = tooltipContext;\n      this.ctx = tooltipContext.ctx;\n    }\n    /**\n     ** When hovering over series, you need to capture which series is being hovered on.\n     ** This function will return both capturedseries index as well as inner index of that series\n     * @memberof Utils\n     * @param {object}\n     * - hoverArea = the rect on which user hovers\n     * - elGrid = dimensions of the hover rect (it can be different than hoverarea)\n     */\n\n\n    _createClass(Utils$1, [{\n      key: \"getNearestValues\",\n      value: function getNearestValues(_ref) {\n        var hoverArea = _ref.hoverArea,\n            elGrid = _ref.elGrid,\n            clientX = _ref.clientX,\n            clientY = _ref.clientY;\n        var w = this.w;\n        var hoverWidth = w.globals.gridWidth;\n        var xDivisor = hoverWidth / (w.globals.dataPoints - 1);\n        var seriesBound = elGrid.getBoundingClientRect();\n        var hasBars = this.hasBars();\n\n        if (w.globals.comboCharts || hasBars) {\n          xDivisor = hoverWidth / w.globals.dataPoints;\n        }\n\n        var hoverX = clientX - seriesBound.left;\n        var hoverY = clientY - seriesBound.top;\n        var notInRect = hoverX < 0 || hoverY < 0 || hoverX > w.globals.gridWidth || hoverY > w.globals.gridHeight;\n\n        if (notInRect) {\n          hoverArea.classList.remove('hovering-zoom');\n          hoverArea.classList.remove('hovering-pan');\n        } else {\n          if (w.globals.zoomEnabled) {\n            hoverArea.classList.remove('hovering-pan');\n            hoverArea.classList.add('hovering-zoom');\n          } else if (w.globals.panEnabled) {\n            hoverArea.classList.remove('hovering-zoom');\n            hoverArea.classList.add('hovering-pan');\n          }\n        }\n\n        var j = Math.round(hoverX / xDivisor);\n\n        if (hasBars) {\n          j = Math.ceil(hoverX / xDivisor);\n          j = j - 1;\n        }\n\n        var capturedSeries = null;\n        var closest = null;\n        var seriesXValArr = [];\n        var seriesYValArr = [];\n\n        for (var s = 0; s < w.globals.seriesXvalues.length; s++) {\n          seriesXValArr.push([w.globals.seriesXvalues[s][0] - 0.000001].concat(w.globals.seriesXvalues[s]));\n        }\n\n        seriesXValArr = seriesXValArr.map(function (seriesXVal) {\n          return seriesXVal.filter(function (s) {\n            return s;\n          });\n        });\n        seriesYValArr = w.globals.seriesYvalues.map(function (seriesYVal) {\n          return seriesYVal.filter(function (s) {\n            return Utils.isNumber(s);\n          });\n        }); // if X axis type is not category and tooltip is not shared, then we need to find the cursor position and get the nearest value\n\n        if (w.globals.isXNumeric) {\n          closest = this.closestInMultiArray(hoverX, hoverY, seriesXValArr, seriesYValArr);\n          capturedSeries = closest.index;\n          j = closest.j;\n\n          if (capturedSeries !== null) {\n            // initial push, it should be a little smaller than the 1st val\n            seriesXValArr = w.globals.seriesXvalues[capturedSeries];\n            closest = this.closestInArray(hoverX, seriesXValArr);\n            j = closest.index;\n          }\n        }\n\n        w.globals.capturedSeriesIndex = capturedSeries === null ? -1 : capturedSeries;\n        if (!j || j < 1) j = 0;\n        w.globals.capturedDataPointIndex = j;\n        return {\n          capturedSeries: capturedSeries,\n          j: j,\n          hoverX: hoverX,\n          hoverY: hoverY\n        };\n      }\n    }, {\n      key: \"closestInMultiArray\",\n      value: function closestInMultiArray(hoverX, hoverY, Xarrays, Yarrays) {\n        var w = this.w;\n        var activeIndex = 0;\n        var currIndex = null;\n        var j = -1;\n\n        if (w.globals.series.length > 1) {\n          activeIndex = this.getFirstActiveXArray(Xarrays);\n        } else {\n          currIndex = 0;\n        }\n\n        var currY = Yarrays[activeIndex][0];\n        var currX = Xarrays[activeIndex][0];\n        var diffX = Math.abs(hoverX - currX);\n        var diffY = Math.abs(hoverY - currY);\n        var diff = diffY + diffX;\n        Yarrays.map(function (arrY, arrIndex) {\n          arrY.map(function (y, innerKey) {\n            var newdiffY = Math.abs(hoverY - Yarrays[arrIndex][innerKey]);\n            var newdiffX = Math.abs(hoverX - Xarrays[arrIndex][innerKey]);\n            var newdiff = newdiffX + newdiffY;\n\n            if (newdiff < diff) {\n              diff = newdiff;\n              diffX = newdiffX;\n              diffY = newdiffY;\n              currIndex = arrIndex;\n              j = innerKey;\n            }\n          });\n        });\n        return {\n          index: currIndex,\n          j: j\n        };\n      }\n    }, {\n      key: \"getFirstActiveXArray\",\n      value: function getFirstActiveXArray(Xarrays) {\n        var activeIndex = 0;\n        var coreUtils = new CoreUtils(this.ctx);\n        var firstActiveSeriesIndex = Xarrays.map(function (xarr, index) {\n          return xarr.length > 0 ? index : -1;\n        });\n\n        for (var a = 0; a < firstActiveSeriesIndex.length; a++) {\n          var total = coreUtils.getSeriesTotalByIndex(a);\n\n          if (firstActiveSeriesIndex[a] !== -1 && total !== 0 && !coreUtils.seriesHaveSameValues(a)) {\n            activeIndex = firstActiveSeriesIndex[a];\n            break;\n          }\n        }\n\n        return activeIndex;\n      }\n    }, {\n      key: \"closestInArray\",\n      value: function closestInArray(val, arr) {\n        var curr = arr[0];\n        var currIndex = null;\n        var diff = Math.abs(val - curr);\n\n        for (var i = 0; i < arr.length; i++) {\n          var newdiff = Math.abs(val - arr[i]);\n\n          if (newdiff < diff) {\n            diff = newdiff;\n            currIndex = i;\n          }\n        }\n\n        return {\n          index: currIndex\n        };\n      }\n      /**\n       * When there are multiple series, it is possible to have different x values for each series.\n       * But it may be possible in those multiple series, that there is same x value for 2 or more\n       * series.\n       * @memberof Utils\n       * @param {int}\n       * - j = is the inner index of series -> (series[i][j])\n       * @return {bool}\n       */\n\n    }, {\n      key: \"isXoverlap\",\n      value: function isXoverlap(j) {\n        var w = this.w;\n        var xSameForAllSeriesJArr = [];\n        var seriesX = w.globals.seriesX.filter(function (s) {\n          return typeof s[0] !== 'undefined';\n        });\n\n        if (seriesX.length > 0) {\n          for (var i = 0; i < seriesX.length - 1; i++) {\n            if (typeof seriesX[i][j] !== 'undefined' && typeof seriesX[i + 1][j] !== 'undefined') {\n              if (seriesX[i][j] !== seriesX[i + 1][j]) {\n                xSameForAllSeriesJArr.push('unEqual');\n              }\n            }\n          }\n        }\n\n        if (xSameForAllSeriesJArr.length === 0) {\n          return true;\n        }\n\n        return false;\n      }\n    }, {\n      key: \"isInitialSeriesSameLen\",\n      value: function isInitialSeriesSameLen() {\n        var sameLen = true;\n        var initialSeries = this.w.globals.initialSeries;\n\n        for (var i = 0; i < initialSeries.length - 1; i++) {\n          if (initialSeries[i].data.length !== initialSeries[i + 1].data.length) {\n            sameLen = false;\n            break;\n          }\n        }\n\n        return sameLen;\n      }\n    }, {\n      key: \"getBarsHeight\",\n      value: function getBarsHeight(allbars) {\n        var bars = _toConsumableArray(allbars);\n\n        var totalHeight = bars.reduce(function (acc, bar) {\n          return acc + bar.getBBox().height;\n        }, 0);\n        return totalHeight;\n      }\n    }, {\n      key: \"getElMarkers\",\n      value: function getElMarkers() {\n        return this.w.globals.dom.baseEl.querySelectorAll(' .apexcharts-series-markers');\n      }\n    }, {\n      key: \"getAllMarkers\",\n      value: function getAllMarkers() {\n        // first get all marker parents. This parent class contains series-index\n        // which helps to sort the markers as they are dynamic\n        var markersWraps = this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers-wrap');\n        markersWraps = _toConsumableArray(markersWraps);\n        markersWraps.sort(function (a, b) {\n          return Number(b.getAttribute('data:realIndex')) < Number(a.getAttribute('data:realIndex')) ? 0 : -1;\n        });\n        var markers = [];\n        markersWraps.forEach(function (m) {\n          markers.push(m.querySelector('.apexcharts-marker'));\n        });\n        return markers;\n      }\n    }, {\n      key: \"hasMarkers\",\n      value: function hasMarkers() {\n        var markers = this.getElMarkers();\n        return markers.length > 0;\n      }\n    }, {\n      key: \"getElBars\",\n      value: function getElBars() {\n        return this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-series,  .apexcharts-candlestick-series, .apexcharts-rangebar-series');\n      }\n    }, {\n      key: \"hasBars\",\n      value: function hasBars() {\n        var bars = this.getElBars();\n        return bars.length > 0;\n      }\n    }, {\n      key: \"getHoverMarkerSize\",\n      value: function getHoverMarkerSize(index) {\n        var w = this.w;\n        var hoverSize = w.config.markers.hover.size;\n\n        if (hoverSize === undefined) {\n          hoverSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset;\n        }\n\n        return hoverSize;\n      }\n    }, {\n      key: \"toggleAllTooltipSeriesGroups\",\n      value: function toggleAllTooltipSeriesGroups(state) {\n        var w = this.w;\n        var ttCtx = this.ttCtx;\n\n        if (ttCtx.allTooltipSeriesGroups.length === 0) {\n          ttCtx.allTooltipSeriesGroups = w.globals.dom.baseEl.querySelectorAll('.apexcharts-tooltip-series-group');\n        }\n\n        var allTooltipSeriesGroups = ttCtx.allTooltipSeriesGroups;\n\n        for (var i = 0; i < allTooltipSeriesGroups.length; i++) {\n          if (state === 'enable') {\n            allTooltipSeriesGroups[i].classList.add('apexcharts-active');\n            allTooltipSeriesGroups[i].style.display = w.config.tooltip.items.display;\n          } else {\n            allTooltipSeriesGroups[i].classList.remove('apexcharts-active');\n            allTooltipSeriesGroups[i].style.display = 'none';\n          }\n        }\n      }\n    }]);\n\n    return Utils$1;\n  }();\n\n  /**\n   * ApexCharts Tooltip.Labels Class to draw texts on the tooltip.\n   *\n   * @module Tooltip.Labels\n   **/\n\n  var Labels = /*#__PURE__*/function () {\n    function Labels(tooltipContext) {\n      _classCallCheck(this, Labels);\n\n      this.w = tooltipContext.w;\n      this.ctx = tooltipContext.ctx;\n      this.ttCtx = tooltipContext;\n      this.tooltipUtil = new Utils$1(tooltipContext);\n    }\n\n    _createClass(Labels, [{\n      key: \"drawSeriesTexts\",\n      value: function drawSeriesTexts(_ref) {\n        var _ref$shared = _ref.shared,\n            shared = _ref$shared === void 0 ? true : _ref$shared,\n            ttItems = _ref.ttItems,\n            _ref$i = _ref.i,\n            i = _ref$i === void 0 ? 0 : _ref$i,\n            _ref$j = _ref.j,\n            j = _ref$j === void 0 ? null : _ref$j,\n            y1 = _ref.y1,\n            y2 = _ref.y2;\n        var w = this.w;\n\n        if (w.config.tooltip.custom !== undefined) {\n          this.handleCustomTooltip({\n            i: i,\n            j: j,\n            y1: y1,\n            y2: y2,\n            w: w\n          });\n        } else {\n          this.toggleActiveInactiveSeries(shared);\n        }\n\n        var values = this.getValuesToPrint({\n          i: i,\n          j: j\n        });\n        this.printLabels({\n          i: i,\n          j: j,\n          values: values,\n          ttItems: ttItems,\n          shared: shared\n        }); // Re-calculate tooltip dimensions now that we have drawn the text\n\n        var tooltipEl = this.ttCtx.getElTooltip();\n        this.ttCtx.tooltipRect.ttWidth = tooltipEl.getBoundingClientRect().width;\n        this.ttCtx.tooltipRect.ttHeight = tooltipEl.getBoundingClientRect().height;\n      }\n    }, {\n      key: \"printLabels\",\n      value: function printLabels(_ref2) {\n        var _this = this;\n\n        var i = _ref2.i,\n            j = _ref2.j,\n            values = _ref2.values,\n            ttItems = _ref2.ttItems,\n            shared = _ref2.shared;\n        var w = this.w;\n        var val;\n        var xVal = values.xVal,\n            zVal = values.zVal,\n            xAxisTTVal = values.xAxisTTVal;\n        var seriesName = '';\n        var pColor = w.globals.colors[i];\n\n        if (j !== null && w.config.plotOptions.bar.distributed) {\n          pColor = w.globals.colors[j];\n        }\n\n        var _loop = function _loop(t, inverset) {\n          var f = _this.getFormatters(i);\n\n          seriesName = _this.getSeriesName({\n            fn: f.yLbTitleFormatter,\n            index: i,\n            seriesIndex: i,\n            j: j\n          });\n          var tIndex = w.config.tooltip.inverseOrder ? inverset : t;\n\n          if (w.globals.axisCharts) {\n            var generalFormatter = function generalFormatter(index) {\n              return f.yLbFormatter(w.globals.series[index][j], {\n                series: w.globals.series,\n                seriesIndex: index,\n                dataPointIndex: j,\n                w: w\n              });\n            };\n\n            if (shared) {\n              f = _this.getFormatters(tIndex);\n              seriesName = _this.getSeriesName({\n                fn: f.yLbTitleFormatter,\n                index: tIndex,\n                seriesIndex: i,\n                j: j\n              });\n              pColor = w.globals.colors[tIndex];\n              val = generalFormatter(tIndex);\n            } else {\n              val = generalFormatter(i);\n            }\n          } // for pie / donuts\n\n\n          if (j === null) {\n            val = f.yLbFormatter(w.globals.series[i], w);\n          }\n\n          _this.DOMHandling({\n            i: i,\n            t: tIndex,\n            j: j,\n            ttItems: ttItems,\n            values: {\n              val: val,\n              xVal: xVal,\n              xAxisTTVal: xAxisTTVal,\n              zVal: zVal\n            },\n            seriesName: seriesName,\n            shared: shared,\n            pColor: pColor\n          });\n        };\n\n        for (var t = 0, inverset = w.globals.series.length - 1; t < w.globals.series.length; t++, inverset--) {\n          _loop(t, inverset);\n        }\n      }\n    }, {\n      key: \"getFormatters\",\n      value: function getFormatters(i) {\n        var w = this.w;\n        var yLbFormatter = w.globals.yLabelFormatters[i];\n        var yLbTitleFormatter;\n\n        if (w.globals.ttVal !== undefined) {\n          if (Array.isArray(w.globals.ttVal)) {\n            yLbFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].formatter;\n            yLbTitleFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].title && w.globals.ttVal[i].title.formatter;\n          } else {\n            yLbFormatter = w.globals.ttVal.formatter;\n\n            if (typeof w.globals.ttVal.title.formatter === 'function') {\n              yLbTitleFormatter = w.globals.ttVal.title.formatter;\n            }\n          }\n        } else {\n          yLbTitleFormatter = w.config.tooltip.y.title.formatter;\n        }\n\n        if (typeof yLbFormatter !== 'function') {\n          if (w.globals.yLabelFormatters[0]) {\n            yLbFormatter = w.globals.yLabelFormatters[0];\n          } else {\n            yLbFormatter = function yLbFormatter(label) {\n              return label;\n            };\n          }\n        }\n\n        if (typeof yLbTitleFormatter !== 'function') {\n          yLbTitleFormatter = function yLbTitleFormatter(label) {\n            return label;\n          };\n        }\n\n        return {\n          yLbFormatter: yLbFormatter,\n          yLbTitleFormatter: yLbTitleFormatter\n        };\n      }\n    }, {\n      key: \"getSeriesName\",\n      value: function getSeriesName(_ref3) {\n        var fn = _ref3.fn,\n            index = _ref3.index,\n            seriesIndex = _ref3.seriesIndex,\n            j = _ref3.j;\n        var w = this.w;\n        return fn(String(w.globals.seriesNames[index]), {\n          series: w.globals.series,\n          seriesIndex: seriesIndex,\n          dataPointIndex: j,\n          w: w\n        });\n      }\n    }, {\n      key: \"DOMHandling\",\n      value: function DOMHandling(_ref4) {\n        var i = _ref4.i,\n            t = _ref4.t,\n            j = _ref4.j,\n            ttItems = _ref4.ttItems,\n            values = _ref4.values,\n            seriesName = _ref4.seriesName,\n            shared = _ref4.shared,\n            pColor = _ref4.pColor;\n        var w = this.w;\n        var ttCtx = this.ttCtx;\n        var val = values.val,\n            xVal = values.xVal,\n            xAxisTTVal = values.xAxisTTVal,\n            zVal = values.zVal;\n        var ttItemsChildren = null;\n        ttItemsChildren = ttItems[t].children;\n\n        if (w.config.tooltip.fillSeriesColor) {\n          //  elTooltip.style.backgroundColor = pColor\n          ttItems[t].style.backgroundColor = pColor;\n          ttItemsChildren[0].style.display = 'none';\n        }\n\n        if (ttCtx.showTooltipTitle) {\n          if (ttCtx.tooltipTitle === null) {\n            // get it once if null, and store it in class property\n            ttCtx.tooltipTitle = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-title');\n          }\n\n          ttCtx.tooltipTitle.innerHTML = xVal;\n        } // if xaxis tooltip is constructed, we need to replace the innerHTML\n\n\n        if (ttCtx.blxaxisTooltip) {\n          ttCtx.xaxisTooltipText.innerHTML = xAxisTTVal !== '' ? xAxisTTVal : xVal;\n        }\n\n        var ttYLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-label');\n\n        if (ttYLabel) {\n          ttYLabel.innerHTML = seriesName ? seriesName + ': ' : '';\n        }\n\n        var ttYVal = ttItems[t].querySelector('.apexcharts-tooltip-text-value');\n\n        if (ttYVal) {\n          ttYVal.innerHTML = typeof val !== 'undefined' ? val : '';\n        }\n\n        if (ttItemsChildren[0] && ttItemsChildren[0].classList.contains('apexcharts-tooltip-marker')) {\n          if (w.config.tooltip.marker.fillColors && Array.isArray(w.config.tooltip.marker.fillColors)) {\n            pColor = w.config.tooltip.marker.fillColors[i];\n          }\n\n          ttItemsChildren[0].style.backgroundColor = pColor;\n        }\n\n        if (!w.config.tooltip.marker.show) {\n          ttItemsChildren[0].style.display = 'none';\n        }\n\n        if (zVal !== null) {\n          var ttZLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-z-label');\n          ttZLabel.innerHTML = w.config.tooltip.z.title;\n          var ttZVal = ttItems[t].querySelector('.apexcharts-tooltip-text-z-value');\n          ttZVal.innerHTML = typeof zVal !== 'undefined' ? zVal : '';\n        }\n\n        if (shared && ttItemsChildren[0]) {\n          // hide when no Val or series collapsed\n          if (typeof val === 'undefined' || val === null || w.globals.collapsedSeriesIndices.indexOf(t) > -1) {\n            ttItemsChildren[0].parentNode.style.display = 'none';\n          } else {\n            ttItemsChildren[0].parentNode.style.display = w.config.tooltip.items.display;\n          } // TODO: issue #1240 needs to be looked at again. commenting it because this also hides single series values with 0 in it (shared tooltip)\n          // if (w.globals.stackedSeriesTotals[j] === 0) {\n          //   // shared tooltip and all values are null, so we need to hide the x value too\n          //   let allYZeroForJ = false\n          //   for (let si = 1; si < w.globals.seriesYvalues.length; si++) {\n          //     if (\n          //       w.globals.seriesYvalues[si][j] ===\n          //       w.globals.seriesYvalues[si - 1][j]\n          //     ) {\n          //       allYZeroForJ = true\n          //     }\n          //   }\n          //   if (allYZeroForJ) {\n          //     ttCtx.tooltipTitle.style.display = 'none'\n          //   } else {\n          //     ttCtx.tooltipTitle.style.display = w.config.tooltip.items.display\n          //   }\n          // } else {\n          //   ttCtx.tooltipTitle.style.display = w.config.tooltip.items.display\n          // }\n\n        }\n      }\n    }, {\n      key: \"toggleActiveInactiveSeries\",\n      value: function toggleActiveInactiveSeries(shared) {\n        var w = this.w;\n\n        if (shared) {\n          // make all tooltips active\n          this.tooltipUtil.toggleAllTooltipSeriesGroups('enable');\n        } else {\n          // disable all tooltip text groups\n          this.tooltipUtil.toggleAllTooltipSeriesGroups('disable'); // enable the first tooltip text group\n\n          var firstTooltipSeriesGroup = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-series-group');\n\n          if (firstTooltipSeriesGroup) {\n            firstTooltipSeriesGroup.classList.add('apexcharts-active');\n            firstTooltipSeriesGroup.style.display = w.config.tooltip.items.display;\n          }\n        }\n      }\n    }, {\n      key: \"getValuesToPrint\",\n      value: function getValuesToPrint(_ref5) {\n        var i = _ref5.i,\n            j = _ref5.j;\n        var w = this.w;\n        var filteredSeriesX = this.ctx.series.filteredSeriesX();\n        var xVal = '';\n        var xAxisTTVal = '';\n        var zVal = null;\n        var val = null;\n        var customFormatterOpts = {\n          series: w.globals.series,\n          seriesIndex: i,\n          dataPointIndex: j,\n          w: w\n        };\n        var zFormatter = w.globals.ttZFormatter;\n\n        if (j === null) {\n          val = w.globals.series[i];\n        } else {\n          if (w.globals.isXNumeric) {\n            xVal = filteredSeriesX[i][j];\n\n            if (filteredSeriesX[i].length === 0) {\n              // a series (possibly the first one) might be collapsed, so get the next active index\n              var firstActiveSeriesIndex = this.tooltipUtil.getFirstActiveXArray(filteredSeriesX);\n              xVal = filteredSeriesX[firstActiveSeriesIndex][j];\n            }\n          } else {\n            xVal = typeof w.globals.labels[j] !== 'undefined' ? w.globals.labels[j] : '';\n          }\n        }\n\n        var bufferXVal = xVal;\n\n        if (w.globals.isXNumeric && w.config.xaxis.type === 'datetime') {\n          var xFormat = new Formatters(this.ctx);\n          xVal = xFormat.xLabelFormat(w.globals.ttKeyFormatter, bufferXVal, bufferXVal);\n        } else {\n          if (!w.globals.isBarHorizontal) {\n            xVal = w.globals.xLabelFormatter(bufferXVal, customFormatterOpts);\n          }\n        } // override default x-axis formatter with tooltip formatter\n\n\n        if (w.config.tooltip.x.formatter !== undefined) {\n          xVal = w.globals.ttKeyFormatter(bufferXVal, customFormatterOpts);\n        }\n\n        if (w.globals.seriesZ.length > 0 && w.globals.seriesZ[0].length > 0) {\n          zVal = zFormatter(w.globals.seriesZ[i][j], w);\n        }\n\n        if (typeof w.config.xaxis.tooltip.formatter === 'function') {\n          xAxisTTVal = w.globals.xaxisTooltipFormatter(bufferXVal, customFormatterOpts);\n        } else {\n          xAxisTTVal = xVal;\n        }\n\n        return {\n          val: Array.isArray(val) ? val.join(' ') : val,\n          xVal: Array.isArray(xVal) ? xVal.join(' ') : xVal,\n          xAxisTTVal: Array.isArray(xAxisTTVal) ? xAxisTTVal.join(' ') : xAxisTTVal,\n          zVal: zVal\n        };\n      }\n    }, {\n      key: \"handleCustomTooltip\",\n      value: function handleCustomTooltip(_ref6) {\n        var i = _ref6.i,\n            j = _ref6.j,\n            y1 = _ref6.y1,\n            y2 = _ref6.y2,\n            w = _ref6.w;\n        var tooltipEl = this.ttCtx.getElTooltip();\n        var fn = w.config.tooltip.custom;\n\n        if (Array.isArray(fn) && fn[i]) {\n          fn = fn[i];\n        } // override everything with a custom html tooltip and replace it\n\n\n        tooltipEl.innerHTML = fn({\n          ctx: this.ctx,\n          series: w.globals.series,\n          seriesIndex: i,\n          dataPointIndex: j,\n          y1: y1,\n          y2: y2,\n          w: w\n        });\n      }\n    }]);\n\n    return Labels;\n  }();\n\n  /**\n   * ApexCharts Tooltip.Position Class to move the tooltip based on x and y position.\n   *\n   * @module Tooltip.Position\n   **/\n\n  var Position = /*#__PURE__*/function () {\n    function Position(tooltipContext) {\n      _classCallCheck(this, Position);\n\n      this.ttCtx = tooltipContext;\n      this.ctx = tooltipContext.ctx;\n      this.w = tooltipContext.w;\n    }\n    /**\n     * This will move the crosshair (the vertical/horz line that moves along with mouse)\n     * Along with this, this function also calls the xaxisMove function\n     * @memberof Position\n     * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair\n     */\n\n\n    _createClass(Position, [{\n      key: \"moveXCrosshairs\",\n      value: function moveXCrosshairs(cx) {\n        var j = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n        var ttCtx = this.ttCtx;\n        var w = this.w;\n        var xcrosshairs = ttCtx.getElXCrosshairs();\n        var x = cx - ttCtx.xcrosshairsWidth / 2;\n        var tickAmount = w.globals.labels.slice().length;\n\n        if (j !== null) {\n          x = w.globals.gridWidth / tickAmount * j;\n        }\n\n        if (xcrosshairs !== null) {\n          xcrosshairs.setAttribute('x', x);\n          xcrosshairs.setAttribute('x1', x);\n          xcrosshairs.setAttribute('x2', x);\n          xcrosshairs.setAttribute('y2', w.globals.gridHeight);\n          xcrosshairs.classList.add('apexcharts-active');\n        }\n\n        if (x < 0) {\n          x = 0;\n        }\n\n        if (x > w.globals.gridWidth) {\n          x = w.globals.gridWidth;\n        }\n\n        if (ttCtx.blxaxisTooltip) {\n          var tx = x;\n\n          if (w.config.xaxis.crosshairs.width === 'tickWidth' || w.config.xaxis.crosshairs.width === 'barWidth') {\n            tx = x + ttCtx.xcrosshairsWidth / 2;\n          }\n\n          this.moveXAxisTooltip(tx);\n        }\n      }\n      /**\n       * This will move the crosshair (the vertical/horz line that moves along with mouse)\n       * Along with this, this function also calls the xaxisMove function\n       * @memberof Position\n       * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair\n       */\n\n    }, {\n      key: \"moveYCrosshairs\",\n      value: function moveYCrosshairs(cy) {\n        var ttCtx = this.ttCtx;\n\n        if (ttCtx.ycrosshairs !== null) {\n          Graphics.setAttrs(ttCtx.ycrosshairs, {\n            y1: cy,\n            y2: cy\n          });\n          Graphics.setAttrs(ttCtx.ycrosshairsHidden, {\n            y1: cy,\n            y2: cy\n          });\n        }\n      }\n      /**\n       ** AxisTooltip is the small rectangle which appears on x axis with x value, when user moves\n       * @memberof Position\n       * @param {int} - cx = point's x position, wherever point's x is, you need to move\n       */\n\n    }, {\n      key: \"moveXAxisTooltip\",\n      value: function moveXAxisTooltip(cx) {\n        var w = this.w;\n        var ttCtx = this.ttCtx;\n\n        if (ttCtx.xaxisTooltip !== null) {\n          ttCtx.xaxisTooltip.classList.add('apexcharts-active');\n          var cy = ttCtx.xaxisOffY + w.config.xaxis.tooltip.offsetY + w.globals.translateY + 1 + w.config.xaxis.offsetY;\n          var xaxisTTText = ttCtx.xaxisTooltip.getBoundingClientRect();\n          var xaxisTTTextWidth = xaxisTTText.width;\n          cx = cx - xaxisTTTextWidth / 2;\n\n          if (!isNaN(cx)) {\n            cx = cx + w.globals.translateX;\n            var textRect = 0;\n            var graphics = new Graphics(this.ctx);\n            textRect = graphics.getTextRects(ttCtx.xaxisTooltipText.innerHTML);\n            ttCtx.xaxisTooltipText.style.minWidth = textRect.width + 'px';\n            ttCtx.xaxisTooltip.style.left = cx + 'px';\n            ttCtx.xaxisTooltip.style.top = cy + 'px';\n          }\n        }\n      }\n    }, {\n      key: \"moveYAxisTooltip\",\n      value: function moveYAxisTooltip(index) {\n        var w = this.w;\n        var ttCtx = this.ttCtx;\n\n        if (ttCtx.yaxisTTEls === null) {\n          ttCtx.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip');\n        }\n\n        var ycrosshairsHiddenRectY1 = parseInt(ttCtx.ycrosshairsHidden.getAttribute('y1'), 10);\n        var cy = w.globals.translateY + ycrosshairsHiddenRectY1;\n        var yAxisTTRect = ttCtx.yaxisTTEls[index].getBoundingClientRect();\n        var yAxisTTHeight = yAxisTTRect.height;\n        var cx = w.globals.translateYAxisX[index] - 2;\n\n        if (w.config.yaxis[index].opposite) {\n          cx = cx - 26;\n        }\n\n        cy = cy - yAxisTTHeight / 2;\n\n        if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1) {\n          ttCtx.yaxisTTEls[index].classList.add('apexcharts-active');\n          ttCtx.yaxisTTEls[index].style.top = cy + 'px';\n          ttCtx.yaxisTTEls[index].style.left = cx + w.config.yaxis[index].tooltip.offsetX + 'px';\n        } else {\n          ttCtx.yaxisTTEls[index].classList.remove('apexcharts-active');\n        }\n      }\n      /**\n       ** moves the whole tooltip by changing x, y attrs\n       * @memberof Position\n       * @param {int} - cx = point's x position, wherever point's x is, you need to move tooltip\n       * @param {int} - cy = point's y position, wherever point's y is, you need to move tooltip\n       * @param {int} - r = point's radius\n       */\n\n    }, {\n      key: \"moveTooltip\",\n      value: function moveTooltip(cx, cy) {\n        var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n        var w = this.w;\n        var ttCtx = this.ttCtx;\n        var tooltipEl = ttCtx.getElTooltip();\n        var tooltipRect = ttCtx.tooltipRect;\n        var pointR = r !== null ? parseFloat(r) : 1;\n        var x = parseFloat(cx) + pointR + 5;\n        var y = parseFloat(cy) + pointR / 2; // - tooltipRect.ttHeight / 2\n\n        if (x > w.globals.gridWidth / 2) {\n          x = x - tooltipRect.ttWidth - pointR - 15;\n        }\n\n        if (x > w.globals.gridWidth - tooltipRect.ttWidth - 10) {\n          x = w.globals.gridWidth - tooltipRect.ttWidth;\n        }\n\n        if (x < -20) {\n          x = -20;\n        }\n\n        if (w.config.tooltip.followCursor) {\n          var elGrid = ttCtx.getElGrid();\n          var seriesBound = elGrid.getBoundingClientRect();\n          y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top - tooltipRect.ttHeight / 2;\n        }\n\n        if (!w.config.tooltip.followCursor) {\n          var newPositions = this.positionChecks(tooltipRect, x, y);\n          x = newPositions.x;\n          y = newPositions.y;\n        }\n\n        if (!isNaN(x)) {\n          x = x + w.globals.translateX;\n          tooltipEl.style.left = x + 'px';\n          tooltipEl.style.top = y + 'px';\n        }\n      }\n    }, {\n      key: \"positionChecks\",\n      value: function positionChecks(tooltipRect, x, y) {\n        var w = this.w;\n\n        if (tooltipRect.ttHeight / 2 + y > w.globals.gridHeight) {\n          y = w.globals.gridHeight - tooltipRect.ttHeight + w.globals.translateY;\n        }\n\n        if (y < 0) {\n          y = 0;\n        }\n\n        return {\n          x: x,\n          y: y\n        };\n      }\n    }, {\n      key: \"moveMarkers\",\n      value: function moveMarkers(i, j) {\n        var w = this.w;\n        var ttCtx = this.ttCtx;\n\n        if (w.globals.markers.size[i] > 0) {\n          var allPoints = w.globals.dom.baseEl.querySelectorAll(\" .apexcharts-series[data\\\\:realIndex='\".concat(i, \"'] .apexcharts-marker\"));\n\n          for (var p = 0; p < allPoints.length; p++) {\n            if (parseInt(allPoints[p].getAttribute('rel'), 10) === j) {\n              ttCtx.marker.resetPointsSize();\n              ttCtx.marker.enlargeCurrentPoint(j, allPoints[p]);\n            }\n          }\n        } else {\n          ttCtx.marker.resetPointsSize();\n          this.moveDynamicPointOnHover(j, i);\n        }\n      } // This function is used when you need to show markers/points only on hover -\n      // DIFFERENT X VALUES in multiple series\n\n    }, {\n      key: \"moveDynamicPointOnHover\",\n      value: function moveDynamicPointOnHover(j, capturedSeries) {\n        var w = this.w;\n        var ttCtx = this.ttCtx;\n        var cx = 0;\n        var cy = 0;\n        var pointsArr = w.globals.pointsArray;\n        var hoverSize = ttCtx.tooltipUtil.getHoverMarkerSize(capturedSeries);\n        var serType = w.config.series[capturedSeries].type;\n\n        if (serType && (serType === 'column' || serType === 'candlestick')) {\n          // fix error mentioned in #811\n          return;\n        }\n\n        cx = pointsArr[capturedSeries][j][0];\n        cy = pointsArr[capturedSeries][j][1] ? pointsArr[capturedSeries][j][1] : 0;\n        var point = w.globals.dom.baseEl.querySelector(\".apexcharts-series[data\\\\:realIndex='\".concat(capturedSeries, \"'] .apexcharts-series-markers circle\"));\n\n        if (point) {\n          point.setAttribute('r', hoverSize);\n          point.setAttribute('cx', cx);\n          point.setAttribute('cy', cy);\n        } // point.style.opacity = w.config.markers.hover.opacity\n\n\n        this.moveXCrosshairs(cx);\n\n        if (!ttCtx.fixedTooltip) {\n          this.moveTooltip(cx, cy, hoverSize);\n        }\n      } // This function is used when you need to show markers/points only on hover -\n      // SAME X VALUES in multiple series\n\n    }, {\n      key: \"moveDynamicPointsOnHover\",\n      value: function moveDynamicPointsOnHover(j) {\n        var ttCtx = this.ttCtx;\n        var w = ttCtx.w;\n        var cx = 0;\n        var cy = 0;\n        var activeSeries = 0;\n        var pointsArr = w.globals.pointsArray;\n        var series = new Series(this.ctx);\n        activeSeries = series.getActiveConfigSeriesIndex(true);\n        var hoverSize = ttCtx.tooltipUtil.getHoverMarkerSize(activeSeries);\n\n        if (pointsArr[activeSeries]) {\n          cx = pointsArr[activeSeries][j][0];\n          cy = pointsArr[activeSeries][j][1];\n        }\n\n        var points = ttCtx.tooltipUtil.getAllMarkers();\n\n        if (points !== null) {\n          for (var p = 0; p < w.globals.series.length; p++) {\n            var pointArr = pointsArr[p];\n\n            if (w.globals.comboCharts) {\n              // in a combo chart, if column charts are present, markers will not match with the number of series, hence this patch to push a null value in points array\n              if (typeof pointArr === 'undefined') {\n                // nodelist to array\n                points.splice(p, 0, null);\n              }\n            }\n\n            if (pointArr && pointArr.length) {\n              var pcy = pointsArr[p][j][1];\n              points[p].setAttribute('cx', cx);\n\n              if (pcy !== null && !isNaN(pcy)) {\n                points[p] && points[p].setAttribute('r', hoverSize);\n                points[p] && points[p].setAttribute('cy', pcy);\n              } else {\n                points[p] && points[p].setAttribute('r', 0);\n              }\n            }\n          }\n        }\n\n        this.moveXCrosshairs(cx);\n\n        if (!ttCtx.fixedTooltip) {\n          var tcy = cy || w.globals.gridHeight;\n          this.moveTooltip(cx, tcy, hoverSize);\n        }\n      }\n    }, {\n      key: \"moveStickyTooltipOverBars\",\n      value: function moveStickyTooltipOverBars(j) {\n        var w = this.w;\n        var ttCtx = this.ttCtx;\n        var barLen = w.globals.columnSeries ? w.globals.columnSeries.length : w.globals.series.length;\n        var i = barLen >= 2 && barLen % 2 === 0 ? Math.floor(barLen / 2) : Math.floor(barLen / 2) + 1;\n        var jBar = w.globals.dom.baseEl.querySelector(\".apexcharts-bar-series .apexcharts-series[rel='\".concat(i, \"'] path[j='\").concat(j, \"'], .apexcharts-candlestick-series .apexcharts-series[rel='\").concat(i, \"'] path[j='\").concat(j, \"'], .apexcharts-rangebar-series .apexcharts-series[rel='\").concat(i, \"'] path[j='\").concat(j, \"']\"));\n        var bcx = jBar ? parseFloat(jBar.getAttribute('cx')) : 0;\n        var bcy = 0;\n        var bw = jBar ? parseFloat(jBar.getAttribute('barWidth')) : 0;\n\n        if (w.globals.isXNumeric) {\n          bcx = bcx - (barLen % 2 !== 0 ? bw / 2 : 0);\n        } else {\n          bcx = ttCtx.xAxisTicksPositions[j - 1] + ttCtx.dataPointsDividedWidth / 2;\n\n          if (isNaN(bcx)) {\n            bcx = ttCtx.xAxisTicksPositions[j] - ttCtx.dataPointsDividedWidth / 2;\n          }\n        } // tooltip will move vertically along with mouse as it is a shared tooltip\n\n\n        var elGrid = ttCtx.getElGrid();\n        var seriesBound = elGrid.getBoundingClientRect();\n        bcy = ttCtx.e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2;\n        this.moveXCrosshairs(bcx);\n\n        if (!ttCtx.fixedTooltip) {\n          var tcy = bcy || w.globals.gridHeight;\n          this.moveTooltip(bcx, tcy);\n        }\n      }\n    }]);\n\n    return Position;\n  }();\n\n  /**\n   * ApexCharts Tooltip.Marker Class to draw texts on the tooltip.\n   *\n   * @module Tooltip.Marker\n   **/\n\n  var Marker = /*#__PURE__*/function () {\n    function Marker(tooltipContext) {\n      _classCallCheck(this, Marker);\n\n      this.w = tooltipContext.w;\n      this.ttCtx = tooltipContext;\n      this.ctx = tooltipContext.ctx;\n      this.tooltipPosition = new Position(tooltipContext);\n    }\n\n    _createClass(Marker, [{\n      key: \"drawDynamicPoints\",\n      value: function drawDynamicPoints() {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var marker = new Markers(this.ctx);\n        var elsSeries = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series');\n        elsSeries = _toConsumableArray(elsSeries);\n        elsSeries.sort(function (a, b) {\n          return Number(b.getAttribute('data:realIndex')) < Number(a.getAttribute('data:realIndex')) ? 0 : -1;\n        });\n\n        for (var i = 0; i < elsSeries.length; i++) {\n          var pointsMain = elsSeries[i].querySelector(\".apexcharts-series-markers-wrap\");\n\n          if (pointsMain !== null) {\n            // it can be null as we have tooltips in donut/bar charts\n            var point = void 0;\n            var PointClasses = \"apexcharts-marker w\".concat((Math.random() + 1).toString(36).substring(4));\n\n            if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) {\n              PointClasses += ' no-pointer-events';\n            }\n\n            var elPointOptions = marker.getMarkerConfig(PointClasses, i);\n            point = graphics.drawMarker(0, 0, elPointOptions);\n            point.node.setAttribute('default-marker-size', 0);\n            var elPointsG = document.createElementNS(w.globals.SVGNS, 'g');\n            elPointsG.classList.add('apexcharts-series-markers');\n            elPointsG.appendChild(point.node);\n            pointsMain.appendChild(elPointsG);\n          }\n        }\n      }\n    }, {\n      key: \"enlargeCurrentPoint\",\n      value: function enlargeCurrentPoint(rel, point) {\n        var x = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n        var y = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n        var w = this.w;\n\n        if (w.config.chart.type !== 'bubble') {\n          this.newPointSize(rel, point);\n        }\n\n        var cx = point.getAttribute('cx');\n        var cy = point.getAttribute('cy');\n\n        if (x !== null && y !== null) {\n          cx = x;\n          cy = y;\n        }\n\n        this.tooltipPosition.moveXCrosshairs(cx);\n\n        if (!this.fixedTooltip) {\n          if (w.config.chart.type === 'radar') {\n            var elGrid = this.ttCtx.getElGrid();\n            var seriesBound = elGrid.getBoundingClientRect();\n            cx = this.ttCtx.e.clientX - seriesBound.left;\n          }\n\n          this.tooltipPosition.moveTooltip(cx, cy, w.config.markers.hover.size);\n        }\n      }\n    }, {\n      key: \"enlargePoints\",\n      value: function enlargePoints(j) {\n        var w = this.w;\n        var me = this;\n        var ttCtx = this.ttCtx;\n        var col = j;\n        var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker');\n        var newSize = w.config.markers.hover.size;\n\n        for (var p = 0; p < points.length; p++) {\n          var rel = points[p].getAttribute('rel');\n          var index = points[p].getAttribute('index');\n\n          if (newSize === undefined) {\n            newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset;\n          }\n\n          if (col === parseInt(rel, 10)) {\n            me.newPointSize(col, points[p]);\n            var cx = points[p].getAttribute('cx');\n            var cy = points[p].getAttribute('cy');\n            me.tooltipPosition.moveXCrosshairs(cx);\n\n            if (!ttCtx.fixedTooltip) {\n              me.tooltipPosition.moveTooltip(cx, cy, newSize);\n            }\n          } else {\n            me.oldPointSize(points[p]);\n          }\n        }\n      }\n    }, {\n      key: \"newPointSize\",\n      value: function newPointSize(rel, point) {\n        var w = this.w;\n        var newSize = w.config.markers.hover.size;\n        var elPoint = rel === 0 ? point.parentNode.firstChild : point.parentNode.lastChild;\n\n        if (elPoint.getAttribute('default-marker-size') !== '0') {\n          var index = parseInt(elPoint.getAttribute('index'), 10);\n\n          if (newSize === undefined) {\n            newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset;\n          }\n\n          elPoint.setAttribute('r', newSize);\n        }\n      }\n    }, {\n      key: \"oldPointSize\",\n      value: function oldPointSize(point) {\n        var size = parseFloat(point.getAttribute('default-marker-size'));\n        point.setAttribute('r', size);\n      }\n    }, {\n      key: \"resetPointsSize\",\n      value: function resetPointsSize() {\n        var w = this.w;\n        var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker');\n\n        for (var p = 0; p < points.length; p++) {\n          var size = parseFloat(points[p].getAttribute('default-marker-size'));\n\n          if (Utils.isNumber(size)) {\n            points[p].setAttribute('r', size);\n          } else {\n            points[p].setAttribute('r', 0);\n          }\n        }\n      }\n    }]);\n\n    return Marker;\n  }();\n\n  /**\n   * ApexCharts Tooltip.Intersect Class.\n   *\n   * @module Tooltip.Intersect\n   **/\n\n  var Intersect = /*#__PURE__*/function () {\n    function Intersect(tooltipContext) {\n      _classCallCheck(this, Intersect);\n\n      this.w = tooltipContext.w;\n      this.ttCtx = tooltipContext;\n    }\n\n    _createClass(Intersect, [{\n      key: \"getAttr\",\n      value: function getAttr(e, attr) {\n        return parseFloat(e.target.getAttribute(attr));\n      }\n    }, {\n      key: \"handleHeatTooltip\",\n      value: function handleHeatTooltip(_ref) {\n        var e = _ref.e,\n            opt = _ref.opt,\n            x = _ref.x,\n            y = _ref.y;\n        var ttCtx = this.ttCtx;\n        var w = this.w;\n\n        if (e.target.classList.contains('apexcharts-heatmap-rect')) {\n          var i = this.getAttr(e, 'i');\n          var j = this.getAttr(e, 'j');\n          var cx = this.getAttr(e, 'cx');\n          var cy = this.getAttr(e, 'cy');\n          var width = this.getAttr(e, 'width');\n          var height = this.getAttr(e, 'height');\n          ttCtx.tooltipLabels.drawSeriesTexts({\n            ttItems: opt.ttItems,\n            i: i,\n            j: j,\n            shared: false\n          });\n          w.globals.capturedSeriesIndex = i;\n          w.globals.capturedDataPointIndex = j;\n          x = cx + ttCtx.tooltipRect.ttWidth / 2 + width;\n          y = cy + ttCtx.tooltipRect.ttHeight / 2 - height / 2;\n          ttCtx.tooltipPosition.moveXCrosshairs(cx + width / 2);\n\n          if (x > w.globals.gridWidth / 2) {\n            x = cx - ttCtx.tooltipRect.ttWidth / 2 + width;\n          }\n\n          if (ttCtx.w.config.tooltip.followCursor) {\n            var elGrid = ttCtx.getElGrid();\n            var seriesBound = elGrid.getBoundingClientRect(); // x = ttCtx.e.clientX - seriesBound.left\n\n            y = ttCtx.e.clientY - seriesBound.top + w.globals.translateY / 2 - 10;\n          }\n        }\n\n        return {\n          x: x,\n          y: y\n        };\n      }\n    }, {\n      key: \"handleMarkerTooltip\",\n      value: function handleMarkerTooltip(_ref2) {\n        var e = _ref2.e,\n            opt = _ref2.opt,\n            x = _ref2.x,\n            y = _ref2.y;\n        var w = this.w;\n        var ttCtx = this.ttCtx;\n        var i;\n        var j;\n\n        if (e.target.classList.contains('apexcharts-marker')) {\n          var cx = parseInt(opt.paths.getAttribute('cx'), 10);\n          var cy = parseInt(opt.paths.getAttribute('cy'), 10);\n          var val = parseFloat(opt.paths.getAttribute('val'));\n          j = parseInt(opt.paths.getAttribute('rel'), 10);\n          i = parseInt(opt.paths.parentNode.parentNode.parentNode.getAttribute('rel'), 10) - 1;\n\n          if (ttCtx.intersect) {\n            var el = Utils.findAncestor(opt.paths, 'apexcharts-series');\n\n            if (el) {\n              i = parseInt(el.getAttribute('data:realIndex'), 10);\n            }\n          }\n\n          ttCtx.tooltipLabels.drawSeriesTexts({\n            ttItems: opt.ttItems,\n            i: i,\n            j: j,\n            shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared\n          });\n\n          if (e.type === 'mouseup') {\n            ttCtx.markerClick(e, i, j);\n          }\n\n          w.globals.capturedSeriesIndex = i;\n          w.globals.capturedDataPointIndex = j;\n          x = cx;\n          y = cy + w.globals.translateY - ttCtx.tooltipRect.ttHeight * 1.4;\n\n          if (ttCtx.w.config.tooltip.followCursor) {\n            var elGrid = ttCtx.getElGrid();\n            var seriesBound = elGrid.getBoundingClientRect();\n            y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top;\n          }\n\n          if (val < 0) {\n            y = cy;\n          }\n\n          ttCtx.marker.enlargeCurrentPoint(j, opt.paths, x, y);\n        }\n\n        return {\n          x: x,\n          y: y\n        };\n      }\n    }, {\n      key: \"handleBarTooltip\",\n      value: function handleBarTooltip(_ref3) {\n        var e = _ref3.e,\n            opt = _ref3.opt;\n        var w = this.w;\n        var ttCtx = this.ttCtx;\n        var tooltipEl = ttCtx.getElTooltip();\n        var bx = 0;\n        var x = 0;\n        var y = 0;\n        var i = 0;\n        var strokeWidth;\n        var barXY = this.getBarTooltipXY({\n          e: e,\n          opt: opt\n        });\n        i = barXY.i;\n        var barHeight = barXY.barHeight;\n        var j = barXY.j;\n        w.globals.capturedSeriesIndex = i;\n        w.globals.capturedDataPointIndex = j;\n\n        if (w.globals.isBarHorizontal && ttCtx.tooltipUtil.hasBars() || !w.config.tooltip.shared) {\n          x = barXY.x;\n          y = barXY.y;\n          strokeWidth = Array.isArray(w.config.stroke.width) ? w.config.stroke.width[i] : w.config.stroke.width;\n          bx = x;\n        } else {\n          if (!w.globals.comboCharts && !w.config.tooltip.shared) {\n            bx = bx / 2;\n          }\n        } // y is NaN, make it touch the bottom of grid area\n\n\n        if (isNaN(y)) {\n          y = w.globals.svgHeight - ttCtx.tooltipRect.ttHeight;\n        } else if (y < 0) {\n          y = 0;\n        }\n\n        if (x + ttCtx.tooltipRect.ttWidth > w.globals.gridWidth) {\n          x = x - ttCtx.tooltipRect.ttWidth;\n        } else if (x < 0) {\n          x = 0;\n        }\n\n        if (ttCtx.w.config.tooltip.followCursor) {\n          var elGrid = ttCtx.getElGrid();\n          var seriesBound = elGrid.getBoundingClientRect();\n          y = ttCtx.e.clientY - seriesBound.top;\n        } // if tooltip is still null, querySelector\n\n\n        if (ttCtx.tooltip === null) {\n          ttCtx.tooltip = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip');\n        }\n\n        if (!w.config.tooltip.shared) {\n          if (w.globals.comboBarCount > 0) {\n            ttCtx.tooltipPosition.moveXCrosshairs(bx + strokeWidth / 2);\n          } else {\n            ttCtx.tooltipPosition.moveXCrosshairs(bx);\n          }\n        } // move tooltip here\n\n\n        if (!ttCtx.fixedTooltip && (!w.config.tooltip.shared || w.globals.isBarHorizontal && ttCtx.tooltipUtil.hasBars())) {\n          var isReversed = w.globals.isMultipleYAxis ? w.config.yaxis[seriesIndex] && w.config.yaxis[seriesIndex].reversed : w.config.yaxis[0].reversed;\n\n          if (isReversed) {\n            x = x - ttCtx.tooltipRect.ttWidth;\n\n            if (x < 0) {\n              x = 0;\n            }\n          }\n\n          tooltipEl.style.left = x + w.globals.translateX + 'px';\n          var seriesIndex = parseInt(opt.paths.parentNode.getAttribute('data:realIndex'), 10);\n\n          if (isReversed && !(w.globals.isBarHorizontal && ttCtx.tooltipUtil.hasBars())) {\n            y = y + barHeight - (w.globals.series[i][j] < 0 ? barHeight : 0) * 2;\n          }\n\n          if (ttCtx.tooltipRect.ttHeight + y > w.globals.gridHeight) {\n            y = w.globals.gridHeight - ttCtx.tooltipRect.ttHeight + w.globals.translateY;\n            tooltipEl.style.top = y + 'px';\n          } else {\n            tooltipEl.style.top = y + w.globals.translateY - ttCtx.tooltipRect.ttHeight / 2 + 'px';\n          }\n        }\n      }\n    }, {\n      key: \"getBarTooltipXY\",\n      value: function getBarTooltipXY(_ref4) {\n        var e = _ref4.e,\n            opt = _ref4.opt;\n        var w = this.w;\n        var j = null;\n        var ttCtx = this.ttCtx;\n        var i = 0;\n        var x = 0;\n        var y = 0;\n        var barWidth = 0;\n        var barHeight = 0;\n        var cl = e.target.classList;\n\n        if (cl.contains('apexcharts-bar-area') || cl.contains('apexcharts-candlestick-area') || cl.contains('apexcharts-rangebar-area')) {\n          var bar = e.target;\n          var barRect = bar.getBoundingClientRect();\n          var seriesBound = opt.elGrid.getBoundingClientRect();\n          var bh = barRect.height;\n          barHeight = barRect.height;\n          var bw = barRect.width;\n          var cx = parseInt(bar.getAttribute('cx'), 10);\n          var cy = parseInt(bar.getAttribute('cy'), 10);\n          barWidth = parseFloat(bar.getAttribute('barWidth'));\n          var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;\n          j = parseInt(bar.getAttribute('j'), 10);\n          i = parseInt(bar.parentNode.getAttribute('rel'), 10) - 1;\n          var y1 = bar.getAttribute('data-range-y1');\n          var y2 = bar.getAttribute('data-range-y2');\n\n          if (w.globals.comboCharts) {\n            i = parseInt(bar.parentNode.getAttribute('data:realIndex'), 10);\n          } // if (w.config.tooltip.shared) {\n          // this check not needed  at the moment\n          //   const yDivisor = w.globals.gridHeight / (w.globals.series.length)\n          //   const hoverY = ttCtx.clientY - ttCtx.seriesBound.top\n          //   j = Math.ceil(hoverY / yDivisor)\n          // }\n\n\n          ttCtx.tooltipLabels.drawSeriesTexts({\n            ttItems: opt.ttItems,\n            i: i,\n            j: j,\n            y1: y1 ? parseInt(y1, 10) : null,\n            y2: y2 ? parseInt(y2, 10) : null,\n            shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared\n          });\n\n          if (w.config.tooltip.followCursor) {\n            if (w.globals.isBarHorizontal) {\n              x = clientX - seriesBound.left + 15;\n              y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2;\n            } else {\n              if (w.globals.isXNumeric) {\n                x = cx - bw / 2;\n              } else {\n                x = cx - ttCtx.dataPointsDividedWidth + bw / 2;\n              }\n\n              y = e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2 - 15;\n            }\n          } else {\n            if (w.globals.isBarHorizontal) {\n              x = cx;\n\n              if (x < ttCtx.xyRatios.baseLineInvertedY) {\n                x = cx - ttCtx.tooltipRect.ttWidth;\n              }\n\n              y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2;\n            } else {\n              // if columns\n              if (w.globals.isXNumeric) {\n                x = cx - bw / 2;\n              } else {\n                x = cx - ttCtx.dataPointsDividedWidth + bw / 2;\n              }\n\n              y = cy; // - ttCtx.tooltipRect.ttHeight / 2 + 10\n            }\n          }\n        }\n\n        return {\n          x: x,\n          y: y,\n          barHeight: barHeight,\n          barWidth: barWidth,\n          i: i,\n          j: j\n        };\n      }\n    }]);\n\n    return Intersect;\n  }();\n\n  /**\n   * ApexCharts Tooltip.AxesTooltip Class.\n   *\n   * @module Tooltip.AxesTooltip\n   **/\n  var AxesTooltip = /*#__PURE__*/function () {\n    function AxesTooltip(tooltipContext) {\n      _classCallCheck(this, AxesTooltip);\n\n      this.w = tooltipContext.w;\n      this.ttCtx = tooltipContext;\n    }\n    /**\n     * This method adds the secondary tooltip which appears below x axis\n     * @memberof Tooltip\n     **/\n\n\n    _createClass(AxesTooltip, [{\n      key: \"drawXaxisTooltip\",\n      value: function drawXaxisTooltip() {\n        var w = this.w;\n        var ttCtx = this.ttCtx;\n        var isBottom = w.config.xaxis.position === 'bottom';\n        ttCtx.xaxisOffY = isBottom ? w.globals.gridHeight + 1 : -w.globals.xAxisHeight - w.config.xaxis.axisTicks.height + 3;\n        var tooltipCssClass = isBottom ? 'apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom' : 'apexcharts-xaxistooltip apexcharts-xaxistooltip-top';\n        var renderTo = w.globals.dom.elWrap;\n\n        if (ttCtx.blxaxisTooltip) {\n          var xaxisTooltip = w.globals.dom.baseEl.querySelector('.apexcharts-xaxistooltip');\n\n          if (xaxisTooltip === null) {\n            ttCtx.xaxisTooltip = document.createElement('div');\n            ttCtx.xaxisTooltip.setAttribute('class', tooltipCssClass + ' apexcharts-theme-' + w.config.tooltip.theme);\n            renderTo.appendChild(ttCtx.xaxisTooltip);\n            ttCtx.xaxisTooltipText = document.createElement('div');\n            ttCtx.xaxisTooltipText.classList.add('apexcharts-xaxistooltip-text');\n            ttCtx.xaxisTooltipText.style.fontFamily = w.config.xaxis.tooltip.style.fontFamily || w.config.chart.fontFamily;\n            ttCtx.xaxisTooltipText.style.fontSize = w.config.xaxis.tooltip.style.fontSize;\n            ttCtx.xaxisTooltip.appendChild(ttCtx.xaxisTooltipText);\n          }\n        }\n      }\n      /**\n       * This method adds the secondary tooltip which appears below x axis\n       * @memberof Tooltip\n       **/\n\n    }, {\n      key: \"drawYaxisTooltip\",\n      value: function drawYaxisTooltip() {\n        var w = this.w;\n        var ttCtx = this.ttCtx;\n\n        var _loop = function _loop(i) {\n          var isRight = w.config.yaxis[i].opposite || w.config.yaxis[i].crosshairs.opposite;\n          ttCtx.yaxisOffX = isRight ? w.globals.gridWidth + 1 : 1;\n          var tooltipCssClass = isRight ? \"apexcharts-yaxistooltip apexcharts-yaxistooltip-\".concat(i, \" apexcharts-yaxistooltip-right\") : \"apexcharts-yaxistooltip apexcharts-yaxistooltip-\".concat(i, \" apexcharts-yaxistooltip-left\");\n          w.globals.yAxisSameScaleIndices.map(function (samescales, ssi) {\n            samescales.map(function (s, si) {\n              if (si === i) {\n                tooltipCssClass += w.config.yaxis[si].show ? \" \" : \" apexcharts-yaxistooltip-hidden\";\n              }\n            });\n          });\n          var renderTo = w.globals.dom.elWrap;\n\n          if (ttCtx.blyaxisTooltip) {\n            var yaxisTooltip = w.globals.dom.baseEl.querySelector(\".apexcharts-yaxistooltip apexcharts-yaxistooltip-\".concat(i));\n\n            if (yaxisTooltip === null) {\n              ttCtx.yaxisTooltip = document.createElement('div');\n              ttCtx.yaxisTooltip.setAttribute('class', tooltipCssClass + ' apexcharts-theme-' + w.config.tooltip.theme);\n              renderTo.appendChild(ttCtx.yaxisTooltip);\n              if (i === 0) ttCtx.yaxisTooltipText = [];\n              ttCtx.yaxisTooltipText.push(document.createElement('div'));\n              ttCtx.yaxisTooltipText[i].classList.add('apexcharts-yaxistooltip-text');\n              ttCtx.yaxisTooltip.appendChild(ttCtx.yaxisTooltipText[i]);\n            }\n          }\n        };\n\n        for (var i = 0; i < w.config.yaxis.length; i++) {\n          _loop(i);\n        }\n      }\n      /**\n       * @memberof Tooltip\n       **/\n\n    }, {\n      key: \"setXCrosshairWidth\",\n      value: function setXCrosshairWidth() {\n        var w = this.w;\n        var ttCtx = this.ttCtx; // set xcrosshairs width\n\n        var xcrosshairs = ttCtx.getElXCrosshairs();\n        ttCtx.xcrosshairsWidth = parseInt(w.config.xaxis.crosshairs.width, 10);\n\n        if (!w.globals.comboCharts) {\n          if (w.config.xaxis.crosshairs.width === 'tickWidth') {\n            var count = w.globals.labels.length;\n            ttCtx.xcrosshairsWidth = w.globals.gridWidth / count;\n          } else if (w.config.xaxis.crosshairs.width === 'barWidth') {\n            var bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area');\n\n            if (bar !== null) {\n              var barWidth = parseFloat(bar.getAttribute('barWidth'));\n              ttCtx.xcrosshairsWidth = barWidth;\n            } else {\n              ttCtx.xcrosshairsWidth = 1;\n            }\n          }\n        } else {\n          var _bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area');\n\n          if (_bar !== null && w.config.xaxis.crosshairs.width === 'barWidth') {\n            var _barWidth = parseFloat(_bar.getAttribute('barWidth'));\n\n            ttCtx.xcrosshairsWidth = _barWidth;\n          } else {\n            if (w.config.xaxis.crosshairs.width === 'tickWidth') {\n              var _count = w.globals.labels.length;\n              ttCtx.xcrosshairsWidth = w.globals.gridWidth / _count;\n            }\n          }\n        }\n\n        if (w.globals.isBarHorizontal) {\n          ttCtx.xcrosshairsWidth = 0;\n        }\n\n        if (xcrosshairs !== null && ttCtx.xcrosshairsWidth > 0) {\n          xcrosshairs.setAttribute('width', ttCtx.xcrosshairsWidth);\n        }\n      }\n    }, {\n      key: \"handleYCrosshair\",\n      value: function handleYCrosshair() {\n        var w = this.w;\n        var ttCtx = this.ttCtx; // set ycrosshairs height\n\n        ttCtx.ycrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs');\n        ttCtx.ycrosshairsHidden = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs-hidden');\n      }\n    }, {\n      key: \"drawYaxisTooltipText\",\n      value: function drawYaxisTooltipText(index, clientY, xyRatios) {\n        var ttCtx = this.ttCtx;\n        var w = this.w;\n        var lbFormatter = w.globals.yLabelFormatters[index];\n\n        if (ttCtx.blyaxisTooltip) {\n          var elGrid = ttCtx.getElGrid();\n          var seriesBound = elGrid.getBoundingClientRect();\n          var hoverY = (clientY - seriesBound.top) * xyRatios.yRatio[index];\n          var height = w.globals.maxYArr[index] - w.globals.minYArr[index];\n          var val = w.globals.minYArr[index] + (height - hoverY);\n          ttCtx.tooltipPosition.moveYCrosshairs(clientY - seriesBound.top);\n          ttCtx.yaxisTooltipText[index].innerHTML = lbFormatter(val);\n          ttCtx.tooltipPosition.moveYAxisTooltip(index);\n        }\n      }\n    }]);\n\n    return AxesTooltip;\n  }();\n\n  /**\n   * ApexCharts Core Tooltip Class to handle the tooltip generation.\n   *\n   * @module Tooltip\n   **/\n\n  var Tooltip = /*#__PURE__*/function () {\n    function Tooltip(ctx) {\n      _classCallCheck(this, Tooltip);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      var w = this.w;\n      this.tConfig = w.config.tooltip;\n      this.tooltipUtil = new Utils$1(this);\n      this.tooltipLabels = new Labels(this);\n      this.tooltipPosition = new Position(this);\n      this.marker = new Marker(this);\n      this.intersect = new Intersect(this);\n      this.axesTooltip = new AxesTooltip(this);\n      this.showOnIntersect = this.tConfig.intersect;\n      this.showTooltipTitle = this.tConfig.x.show;\n      this.fixedTooltip = this.tConfig.fixed.enabled;\n      this.xaxisTooltip = null;\n      this.yaxisTTEls = null;\n      this.isBarShared = !w.globals.isBarHorizontal && this.tConfig.shared;\n    }\n\n    _createClass(Tooltip, [{\n      key: \"getElTooltip\",\n      value: function getElTooltip(ctx) {\n        if (!ctx) ctx = this;\n        return ctx.w.globals.dom.baseEl.querySelector('.apexcharts-tooltip');\n      }\n    }, {\n      key: \"getElXCrosshairs\",\n      value: function getElXCrosshairs() {\n        return this.w.globals.dom.baseEl.querySelector('.apexcharts-xcrosshairs');\n      }\n    }, {\n      key: \"getElGrid\",\n      value: function getElGrid() {\n        return this.w.globals.dom.baseEl.querySelector('.apexcharts-grid');\n      }\n    }, {\n      key: \"drawTooltip\",\n      value: function drawTooltip(xyRatios) {\n        var w = this.w;\n        this.xyRatios = xyRatios;\n        this.blxaxisTooltip = w.config.xaxis.tooltip.enabled && w.globals.axisCharts;\n        this.blyaxisTooltip = w.config.yaxis[0].tooltip.enabled && w.globals.axisCharts;\n        this.allTooltipSeriesGroups = [];\n\n        if (!w.globals.axisCharts) {\n          this.showTooltipTitle = false;\n        }\n\n        var tooltipEl = document.createElement('div');\n        tooltipEl.classList.add('apexcharts-tooltip');\n        tooltipEl.classList.add(\"apexcharts-theme-\".concat(this.tConfig.theme));\n        w.globals.dom.elWrap.appendChild(tooltipEl);\n\n        if (w.globals.axisCharts) {\n          this.axesTooltip.drawXaxisTooltip();\n          this.axesTooltip.drawYaxisTooltip();\n          this.axesTooltip.setXCrosshairWidth();\n          this.axesTooltip.handleYCrosshair();\n          var xAxis = new XAxis(this.ctx);\n          this.xAxisTicksPositions = xAxis.getXAxisTicksPositions();\n        } // we forcefully set intersect true for these conditions\n\n\n        if ((w.globals.comboCharts || this.tConfig.intersect || w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') && !this.tConfig.shared) {\n          this.showOnIntersect = true;\n        }\n\n        if (w.config.markers.size === 0 || w.globals.markers.largestSize === 0) {\n          // when user don't want to show points all the time, but only on when hovering on series\n          this.marker.drawDynamicPoints(this);\n        } // no visible series, exit\n\n\n        if (w.globals.collapsedSeries.length === w.globals.series.length) return;\n        this.dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints;\n        this.dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints;\n\n        if (this.showTooltipTitle) {\n          this.tooltipTitle = document.createElement('div');\n          this.tooltipTitle.classList.add('apexcharts-tooltip-title');\n          this.tooltipTitle.style.fontFamily = this.tConfig.style.fontFamily || w.config.chart.fontFamily;\n          this.tooltipTitle.style.fontSize = this.tConfig.style.fontSize;\n          tooltipEl.appendChild(this.tooltipTitle);\n        }\n\n        var ttItemsCnt = w.globals.series.length; // whether shared or not, default is shared\n\n        if ((w.globals.xyCharts || w.globals.comboCharts) && this.tConfig.shared) {\n          if (!this.showOnIntersect) {\n            ttItemsCnt = w.globals.series.length;\n          } else {\n            ttItemsCnt = 1;\n          }\n        }\n\n        this.legendLabels = w.globals.dom.baseEl.querySelectorAll('.apexcharts-legend-text');\n        this.ttItems = this.createTTElements(ttItemsCnt);\n        this.addSVGEvents();\n      }\n    }, {\n      key: \"createTTElements\",\n      value: function createTTElements(ttItemsCnt) {\n        var w = this.w;\n        var ttItems = [];\n        var tooltipEl = this.getElTooltip();\n\n        for (var i = 0; i < ttItemsCnt; i++) {\n          var gTxt = document.createElement('div');\n          gTxt.classList.add('apexcharts-tooltip-series-group');\n\n          if (this.tConfig.shared && this.tConfig.enabledOnSeries && Array.isArray(this.tConfig.enabledOnSeries)) {\n            if (this.tConfig.enabledOnSeries.indexOf(i) < 0) {\n              gTxt.classList.add('apexcharts-tooltip-series-group-hidden');\n            }\n          }\n\n          var point = document.createElement('span');\n          point.classList.add('apexcharts-tooltip-marker');\n          point.style.backgroundColor = w.globals.colors[i];\n          gTxt.appendChild(point);\n          var gYZ = document.createElement('div');\n          gYZ.classList.add('apexcharts-tooltip-text');\n          gYZ.style.fontFamily = this.tConfig.style.fontFamily || w.config.chart.fontFamily;\n          gYZ.style.fontSize = this.tConfig.style.fontSize; // y values group\n\n          var gYValText = document.createElement('div');\n          gYValText.classList.add('apexcharts-tooltip-y-group');\n          var txtLabel = document.createElement('span');\n          txtLabel.classList.add('apexcharts-tooltip-text-label');\n          gYValText.appendChild(txtLabel);\n          var txtValue = document.createElement('span');\n          txtValue.classList.add('apexcharts-tooltip-text-value');\n          gYValText.appendChild(txtValue); // z values group\n\n          var gZValText = document.createElement('div');\n          gZValText.classList.add('apexcharts-tooltip-z-group');\n          var txtZLabel = document.createElement('span');\n          txtZLabel.classList.add('apexcharts-tooltip-text-z-label');\n          gZValText.appendChild(txtZLabel);\n          var txtZValue = document.createElement('span');\n          txtZValue.classList.add('apexcharts-tooltip-text-z-value');\n          gZValText.appendChild(txtZValue);\n          gYZ.appendChild(gYValText);\n          gYZ.appendChild(gZValText);\n          gTxt.appendChild(gYZ);\n          tooltipEl.appendChild(gTxt);\n          ttItems.push(gTxt);\n        }\n\n        return ttItems;\n      }\n    }, {\n      key: \"addSVGEvents\",\n      value: function addSVGEvents() {\n        var w = this.w;\n        var type = w.config.chart.type;\n        var tooltipEl = this.getElTooltip();\n        var commonBar = !!(type === 'bar' || type === 'candlestick' || type === 'rangeBar');\n        var chartWithmarkers = type === 'area' || type === 'line' || type === 'scatter' || type === 'bubble' || type === 'radar';\n        var hoverArea = w.globals.dom.Paper.node;\n        var elGrid = this.getElGrid();\n\n        if (elGrid) {\n          this.seriesBound = elGrid.getBoundingClientRect();\n        }\n\n        var tooltipY = [];\n        var tooltipX = [];\n        var seriesHoverParams = {\n          hoverArea: hoverArea,\n          elGrid: elGrid,\n          tooltipEl: tooltipEl,\n          tooltipY: tooltipY,\n          tooltipX: tooltipX,\n          ttItems: this.ttItems\n        };\n        var points;\n\n        if (w.globals.axisCharts) {\n          if (chartWithmarkers) {\n            points = w.globals.dom.baseEl.querySelectorAll(\".apexcharts-series[data\\\\:longestSeries='true'] .apexcharts-marker\");\n          } else if (commonBar) {\n            points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-rangebar-area');\n          } else if (type === 'heatmap') {\n            points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-heatmap');\n          }\n\n          if (points && points.length) {\n            for (var p = 0; p < points.length; p++) {\n              tooltipY.push(points[p].getAttribute('cy'));\n              tooltipX.push(points[p].getAttribute('cx'));\n            }\n          }\n        }\n\n        var validSharedChartTypes = w.globals.xyCharts && !this.showOnIntersect || w.globals.comboCharts && !this.showOnIntersect || commonBar && this.tooltipUtil.hasBars() && this.tConfig.shared;\n\n        if (validSharedChartTypes) {\n          this.addPathsEventListeners([hoverArea], seriesHoverParams);\n        } else if (commonBar && !w.globals.comboCharts || chartWithmarkers && this.showOnIntersect) {\n          this.addDatapointEventsListeners(seriesHoverParams);\n        } else if (!w.globals.axisCharts || type === 'heatmap') {\n          var seriesAll = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series');\n          this.addPathsEventListeners(seriesAll, seriesHoverParams);\n        }\n\n        if (this.showOnIntersect) {\n          var lineAreaPoints = w.globals.dom.baseEl.querySelectorAll('.apexcharts-line-series .apexcharts-marker, .apexcharts-area-series .apexcharts-marker');\n\n          if (lineAreaPoints.length > 0) {\n            // if we find any lineSeries, addEventListeners for them\n            this.addPathsEventListeners(lineAreaPoints, seriesHoverParams);\n          } // combo charts may have bars, so add event listeners here too\n\n\n          if (this.tooltipUtil.hasBars() && !this.tConfig.shared) {\n            this.addDatapointEventsListeners(seriesHoverParams);\n          }\n        }\n      }\n    }, {\n      key: \"drawFixedTooltipRect\",\n      value: function drawFixedTooltipRect() {\n        var w = this.w;\n        var tooltipEl = this.getElTooltip();\n        var tooltipRect = tooltipEl.getBoundingClientRect();\n        var ttWidth = tooltipRect.width + 10;\n        var ttHeight = tooltipRect.height + 10;\n        var x = this.tConfig.fixed.offsetX;\n        var y = this.tConfig.fixed.offsetY;\n        var fixed = this.tConfig.fixed.position.toLowerCase();\n\n        if (fixed.indexOf('right') > -1) {\n          x = x + w.globals.svgWidth - ttWidth + 10;\n        }\n\n        if (fixed.indexOf('bottom') > -1) {\n          y = y + w.globals.svgHeight - ttHeight - 10;\n        }\n\n        tooltipEl.style.left = x + 'px';\n        tooltipEl.style.top = y + 'px';\n        return {\n          x: x,\n          y: y,\n          ttWidth: ttWidth,\n          ttHeight: ttHeight\n        };\n      }\n    }, {\n      key: \"addDatapointEventsListeners\",\n      value: function addDatapointEventsListeners(seriesHoverParams) {\n        var w = this.w;\n        var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-rangebar-area');\n        this.addPathsEventListeners(points, seriesHoverParams);\n      }\n    }, {\n      key: \"addPathsEventListeners\",\n      value: function addPathsEventListeners(paths, opts) {\n        var self = this;\n\n        var _loop = function _loop(p) {\n          var extendedOpts = {\n            paths: paths[p],\n            tooltipEl: opts.tooltipEl,\n            tooltipY: opts.tooltipY,\n            tooltipX: opts.tooltipX,\n            elGrid: opts.elGrid,\n            hoverArea: opts.hoverArea,\n            ttItems: opts.ttItems\n          };\n          var events = ['mousemove', 'mouseup', 'touchmove', 'mouseout', 'touchend'];\n          events.map(function (ev) {\n            return paths[p].addEventListener(ev, self.seriesHover.bind(self, extendedOpts), {\n              capture: false,\n              passive: true\n            });\n          });\n        };\n\n        for (var p = 0; p < paths.length; p++) {\n          _loop(p);\n        }\n      }\n      /*\n       ** The actual series hover function\n       */\n\n    }, {\n      key: \"seriesHover\",\n      value: function seriesHover(opt, e) {\n        var _this = this;\n\n        var chartGroups = [];\n        var w = this.w; // if user has more than one charts in group, we need to sync\n\n        if (w.config.chart.group) {\n          chartGroups = this.ctx.getGroupedCharts();\n        }\n\n        if (w.globals.axisCharts && (w.globals.minX === -Infinity && w.globals.maxX === Infinity || w.globals.dataPoints === 0)) {\n          return;\n        }\n\n        if (chartGroups.length) {\n          chartGroups.forEach(function (ch) {\n            var tooltipEl = _this.getElTooltip(ch);\n\n            var newOpts = {\n              paths: opt.paths,\n              tooltipEl: tooltipEl,\n              tooltipY: opt.tooltipY,\n              tooltipX: opt.tooltipX,\n              elGrid: opt.elGrid,\n              hoverArea: opt.hoverArea,\n              ttItems: ch.w.globals.tooltip.ttItems\n            }; // all the charts should have the same minX and maxX (same xaxis) for multiple tooltips to work correctly\n\n            if (ch.w.globals.minX === _this.w.globals.minX && ch.w.globals.maxX === _this.w.globals.maxX) {\n              ch.w.globals.tooltip.seriesHoverByContext({\n                chartCtx: ch,\n                ttCtx: ch.w.globals.tooltip,\n                opt: newOpts,\n                e: e\n              });\n            }\n          });\n        } else {\n          this.seriesHoverByContext({\n            chartCtx: this.ctx,\n            ttCtx: this.w.globals.tooltip,\n            opt: opt,\n            e: e\n          });\n        }\n      }\n    }, {\n      key: \"seriesHoverByContext\",\n      value: function seriesHoverByContext(_ref) {\n        var chartCtx = _ref.chartCtx,\n            ttCtx = _ref.ttCtx,\n            opt = _ref.opt,\n            e = _ref.e;\n        var w = chartCtx.w;\n        var tooltipEl = this.getElTooltip(); // tooltipRect is calculated on every mousemove, because the text is dynamic\n\n        ttCtx.tooltipRect = {\n          x: 0,\n          y: 0,\n          ttWidth: tooltipEl.getBoundingClientRect().width,\n          ttHeight: tooltipEl.getBoundingClientRect().height\n        };\n        ttCtx.e = e; // highlight the current hovered bars\n\n        if (ttCtx.tooltipUtil.hasBars() && !w.globals.comboCharts && !ttCtx.isBarShared) {\n          if (this.tConfig.onDatasetHover.highlightDataSeries) {\n            var series = new Series(chartCtx);\n            series.toggleSeriesOnHover(e, e.target.parentNode);\n          }\n        }\n\n        if (ttCtx.fixedTooltip) {\n          ttCtx.drawFixedTooltipRect();\n        }\n\n        if (w.globals.axisCharts) {\n          ttCtx.axisChartsTooltips({\n            e: e,\n            opt: opt,\n            tooltipRect: ttCtx.tooltipRect\n          });\n        } else {\n          // non-plot charts i.e pie/donut/circle\n          ttCtx.nonAxisChartsTooltips({\n            e: e,\n            opt: opt,\n            tooltipRect: ttCtx.tooltipRect\n          });\n        }\n      } // tooltip handling for line/area/bar/columns/scatter\n\n    }, {\n      key: \"axisChartsTooltips\",\n      value: function axisChartsTooltips(_ref2) {\n        var e = _ref2.e,\n            opt = _ref2.opt;\n        var w = this.w;\n        var x, y;\n        var seriesBound = opt.elGrid.getBoundingClientRect();\n        var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX;\n        var clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY;\n        this.clientY = clientY;\n        this.clientX = clientX;\n        w.globals.capturedSeriesIndex = -1;\n        w.globals.capturedDataPointIndex = -1;\n\n        if (clientY < seriesBound.top || clientY > seriesBound.top + seriesBound.height) {\n          this.handleMouseOut(opt);\n          return;\n        }\n\n        if (Array.isArray(this.tConfig.enabledOnSeries) && !w.config.tooltip.shared) {\n          var index = parseInt(opt.paths.getAttribute('index'), 10);\n\n          if (this.tConfig.enabledOnSeries.indexOf(index) < 0) {\n            this.handleMouseOut(opt);\n            return;\n          }\n        }\n\n        var tooltipEl = this.getElTooltip();\n        var xcrosshairs = this.getElXCrosshairs();\n        var isStickyTooltip = w.globals.xyCharts || w.config.chart.type === 'bar' && !w.globals.isBarHorizontal && this.tooltipUtil.hasBars() && this.tConfig.shared || w.globals.comboCharts && this.tooltipUtil.hasBars();\n\n        if (w.globals.isBarHorizontal && this.tooltipUtil.hasBars()) {\n          isStickyTooltip = false;\n        }\n\n        if (e.type === 'mousemove' || e.type === 'touchmove' || e.type === 'mouseup') {\n          if (xcrosshairs !== null) {\n            xcrosshairs.classList.add('apexcharts-active');\n          }\n\n          if (this.ycrosshairs !== null && this.blyaxisTooltip) {\n            this.ycrosshairs.classList.add('apexcharts-active');\n          }\n\n          if (isStickyTooltip && !this.showOnIntersect) {\n            this.handleStickyTooltip(e, clientX, clientY, opt);\n          } else {\n            if (w.config.chart.type === 'heatmap') {\n              var markerXY = this.intersect.handleHeatTooltip({\n                e: e,\n                opt: opt,\n                x: x,\n                y: y\n              });\n              x = markerXY.x;\n              y = markerXY.y;\n              tooltipEl.style.left = x + 'px';\n              tooltipEl.style.top = y + 'px';\n            } else {\n              if (this.tooltipUtil.hasBars()) {\n                this.intersect.handleBarTooltip({\n                  e: e,\n                  opt: opt\n                });\n              }\n\n              if (this.tooltipUtil.hasMarkers()) {\n                // intersect - line/area/scatter/bubble\n                this.intersect.handleMarkerTooltip({\n                  e: e,\n                  opt: opt,\n                  x: x,\n                  y: y\n                });\n              }\n            }\n          }\n\n          if (this.blyaxisTooltip) {\n            for (var yt = 0; yt < w.config.yaxis.length; yt++) {\n              this.axesTooltip.drawYaxisTooltipText(yt, clientY, this.xyRatios);\n            }\n          }\n\n          opt.tooltipEl.classList.add('apexcharts-active');\n        } else if (e.type === 'mouseout' || e.type === 'touchend') {\n          this.handleMouseOut(opt);\n        }\n      } // tooltip handling for pie/donuts\n\n    }, {\n      key: \"nonAxisChartsTooltips\",\n      value: function nonAxisChartsTooltips(_ref3) {\n        var e = _ref3.e,\n            opt = _ref3.opt,\n            tooltipRect = _ref3.tooltipRect;\n        var w = this.w;\n        var rel = opt.paths.getAttribute('rel');\n        var tooltipEl = this.getElTooltip();\n        var seriesBound = w.globals.dom.elWrap.getBoundingClientRect();\n\n        if (e.type === 'mousemove' || e.type === 'touchmove') {\n          tooltipEl.classList.add('apexcharts-active');\n          this.tooltipLabels.drawSeriesTexts({\n            ttItems: opt.ttItems,\n            i: parseInt(rel, 10) - 1,\n            shared: false\n          });\n          var x = w.globals.clientX - seriesBound.left - tooltipRect.ttWidth / 2;\n          var y = w.globals.clientY - seriesBound.top - tooltipRect.ttHeight - 10;\n          tooltipEl.style.left = x + 'px';\n          tooltipEl.style.top = y + 'px';\n        } else if (e.type === 'mouseout' || e.type === 'touchend') {\n          tooltipEl.classList.remove('apexcharts-active');\n        }\n      }\n    }, {\n      key: \"handleStickyTooltip\",\n      value: function handleStickyTooltip(e, clientX, clientY, opt) {\n        var w = this.w;\n        var capj = this.tooltipUtil.getNearestValues({\n          context: this,\n          hoverArea: opt.hoverArea,\n          elGrid: opt.elGrid,\n          clientX: clientX,\n          clientY: clientY\n        });\n        var j = capj.j;\n        var capturedSeries = capj.capturedSeries;\n\n        if (capj.hoverX < 0 || capj.hoverX > w.globals.gridWidth) {\n          this.handleMouseOut(opt);\n          return;\n        }\n\n        if (capturedSeries !== null) {\n          this.handleStickyCapturedSeries(e, capturedSeries, opt, j);\n        } else {\n          // couldn't capture any series. check if shared X is same,\n          // if yes, draw a grouped tooltip\n          if (this.tooltipUtil.isXoverlap(j)) {\n            this.create(e, this, 0, j, opt.ttItems);\n          }\n        }\n      }\n    }, {\n      key: \"handleStickyCapturedSeries\",\n      value: function handleStickyCapturedSeries(e, capturedSeries, opt, j) {\n        var w = this.w;\n        var ignoreNull = w.globals.series[capturedSeries][j] === null;\n\n        if (ignoreNull) {\n          this.handleMouseOut(opt);\n          return;\n        }\n\n        if (typeof w.globals.series[capturedSeries][j] !== 'undefined') {\n          if (this.tConfig.shared && this.tooltipUtil.isXoverlap(j) && this.tooltipUtil.isInitialSeriesSameLen()) {\n            this.create(e, this, capturedSeries, j, opt.ttItems);\n          } else {\n            this.create(e, this, capturedSeries, j, opt.ttItems, false);\n          }\n        } else {\n          if (this.tooltipUtil.isXoverlap(j)) {\n            this.create(e, this, 0, j, opt.ttItems);\n          }\n        }\n      }\n    }, {\n      key: \"deactivateHoverFilter\",\n      value: function deactivateHoverFilter() {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var allPaths = w.globals.dom.Paper.select(\".apexcharts-bar-area\");\n\n        for (var b = 0; b < allPaths.length; b++) {\n          graphics.pathMouseLeave(allPaths[b]);\n        }\n      }\n    }, {\n      key: \"handleMouseOut\",\n      value: function handleMouseOut(opt) {\n        var w = this.w;\n        var xcrosshairs = this.getElXCrosshairs();\n        opt.tooltipEl.classList.remove('apexcharts-active');\n        this.deactivateHoverFilter();\n\n        if (w.config.chart.type !== 'bubble') {\n          this.marker.resetPointsSize();\n        }\n\n        if (xcrosshairs !== null) {\n          xcrosshairs.classList.remove('apexcharts-active');\n        }\n\n        if (this.ycrosshairs !== null) {\n          this.ycrosshairs.classList.remove('apexcharts-active');\n        }\n\n        if (this.blxaxisTooltip) {\n          this.xaxisTooltip.classList.remove('apexcharts-active');\n        }\n\n        if (this.blyaxisTooltip) {\n          if (this.yaxisTTEls === null) {\n            this.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip');\n          }\n\n          for (var i = 0; i < this.yaxisTTEls.length; i++) {\n            this.yaxisTTEls[i].classList.remove('apexcharts-active');\n          }\n        }\n\n        if (w.config.legend.tooltipHoverFormatter) {\n          this.legendLabels.forEach(function (l) {\n            var defaultText = l.getAttribute('data:default-text');\n            l.innerHTML = decodeURIComponent(defaultText);\n          });\n        }\n      }\n    }, {\n      key: \"markerClick\",\n      value: function markerClick(e, seriesIndex, dataPointIndex) {\n        var w = this.w;\n\n        if (typeof w.config.chart.events.markerClick === 'function') {\n          w.config.chart.events.markerClick(e, this.ctx, {\n            seriesIndex: seriesIndex,\n            dataPointIndex: dataPointIndex,\n            w: w\n          });\n        }\n\n        this.ctx.events.fireEvent('markerClick', [e, this.ctx, {\n          seriesIndex: seriesIndex,\n          dataPointIndex: dataPointIndex,\n          w: w\n        }]);\n      }\n    }, {\n      key: \"create\",\n      value: function create(e, context, capturedSeries, j, ttItems) {\n        var shared = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n        var w = this.w;\n        var ttCtx = context;\n\n        if (e.type === 'mouseup') {\n          this.markerClick(e, capturedSeries, j);\n        }\n\n        if (shared === null) shared = this.tConfig.shared;\n        var hasMarkers = this.tooltipUtil.hasMarkers();\n        var bars = this.tooltipUtil.getElBars();\n\n        if (w.config.legend.tooltipHoverFormatter) {\n          var legendFormatter = w.config.legend.tooltipHoverFormatter;\n          var els = Array.from(this.legendLabels); // reset all legend values first\n\n          els.forEach(function (l) {\n            var legendName = l.getAttribute('data:default-text');\n            l.innerHTML = decodeURIComponent(legendName);\n          }); // for irregular time series\n\n          for (var i = 0; i < els.length; i++) {\n            var l = els[i];\n            var lsIndex = parseInt(l.getAttribute('i'), 10);\n            var legendName = decodeURIComponent(l.getAttribute('data:default-text'));\n            var text = legendFormatter(legendName, {\n              seriesIndex: shared ? lsIndex : capturedSeries,\n              dataPointIndex: j,\n              w: w\n            });\n\n            if (!shared) {\n              l.innerHTML = lsIndex === capturedSeries ? text : legendName;\n\n              if (capturedSeries === lsIndex) {\n                break;\n              }\n            } else {\n              l.innerHTML = w.globals.collapsedSeriesIndices.indexOf(lsIndex) < 0 ? text : legendName;\n            }\n          }\n        }\n\n        if (shared) {\n          ttCtx.tooltipLabels.drawSeriesTexts({\n            ttItems: ttItems,\n            i: capturedSeries,\n            j: j,\n            shared: this.showOnIntersect ? false : this.tConfig.shared\n          });\n\n          if (hasMarkers) {\n            if (w.globals.markers.largestSize > 0) {\n              ttCtx.marker.enlargePoints(j);\n            } else {\n              ttCtx.tooltipPosition.moveDynamicPointsOnHover(j);\n            }\n          }\n\n          if (this.tooltipUtil.hasBars()) {\n            this.barSeriesHeight = this.tooltipUtil.getBarsHeight(bars);\n\n            if (this.barSeriesHeight > 0) {\n              // hover state, activate snap filter\n              var graphics = new Graphics(this.ctx);\n              var paths = w.globals.dom.Paper.select(\".apexcharts-bar-area[j='\".concat(j, \"']\")); // de-activate first\n\n              this.deactivateHoverFilter();\n              this.tooltipPosition.moveStickyTooltipOverBars(j);\n\n              for (var b = 0; b < paths.length; b++) {\n                graphics.pathMouseEnter(paths[b]);\n              }\n            }\n          }\n        } else {\n          ttCtx.tooltipLabels.drawSeriesTexts({\n            shared: false,\n            ttItems: ttItems,\n            i: capturedSeries,\n            j: j\n          });\n\n          if (this.tooltipUtil.hasBars()) {\n            ttCtx.tooltipPosition.moveStickyTooltipOverBars(j);\n          }\n\n          if (hasMarkers) {\n            ttCtx.tooltipPosition.moveMarkers(capturedSeries, j);\n          }\n        }\n      }\n    }]);\n\n    return Tooltip;\n  }();\n\n  var BarDataLabels = /*#__PURE__*/function () {\n    function BarDataLabels(barCtx) {\n      _classCallCheck(this, BarDataLabels);\n\n      this.w = barCtx.w;\n      this.barCtx = barCtx;\n    }\n    /** handleBarDataLabels is used to calculate the positions for the data-labels\n     * It also sets the element's data attr for bars and calls drawCalculatedBarDataLabels()\n     * After calculating, it also calls the function to draw data labels\n     * @memberof Bar\n     * @param {object} {barProps} most of the bar properties used throughout the bar\n     * drawing function\n     * @return {object} dataLabels node-element which you can append later\n     **/\n\n\n    _createClass(BarDataLabels, [{\n      key: \"handleBarDataLabels\",\n      value: function handleBarDataLabels(opts) {\n        var x = opts.x,\n            y = opts.y,\n            y1 = opts.y1,\n            y2 = opts.y2,\n            i = opts.i,\n            j = opts.j,\n            realIndex = opts.realIndex,\n            series = opts.series,\n            barHeight = opts.barHeight,\n            barWidth = opts.barWidth,\n            barYPosition = opts.barYPosition,\n            visibleSeries = opts.visibleSeries,\n            renderedPath = opts.renderedPath;\n        var w = this.w;\n        var graphics = new Graphics(this.barCtx.ctx);\n        var strokeWidth = Array.isArray(this.barCtx.strokeWidth) ? this.barCtx.strokeWidth[realIndex] : this.barCtx.strokeWidth;\n        var bcx = x + parseFloat(barWidth * visibleSeries);\n        var bcy = y + parseFloat(barHeight * visibleSeries);\n\n        if (w.globals.isXNumeric && !w.globals.isBarHorizontal) {\n          bcx = x + parseFloat(barWidth * (visibleSeries + 1));\n          bcy = y + parseFloat(barHeight * (visibleSeries + 1)) - strokeWidth;\n        }\n\n        var dataLabels = null;\n        var dataLabelsX = x;\n        var dataLabelsY = y;\n        var dataLabelsPos = {};\n        var dataLabelsConfig = w.config.dataLabels;\n        var barDataLabelsConfig = this.barCtx.barOptions.dataLabels;\n\n        if (typeof barYPosition !== 'undefined' && this.barCtx.isTimelineBar) {\n          bcy = barYPosition;\n          dataLabelsY = barYPosition;\n        }\n\n        var offX = dataLabelsConfig.offsetX;\n        var offY = dataLabelsConfig.offsetY;\n        var textRects = {\n          width: 0,\n          height: 0\n        };\n\n        if (w.config.dataLabels.enabled) {\n          textRects = graphics.getTextRects(w.globals.yLabelFormatters[0](w.globals.maxY), parseFloat(dataLabelsConfig.style.fontSize));\n        }\n\n        var params = {\n          x: x,\n          y: y,\n          i: i,\n          j: j,\n          renderedPath: renderedPath,\n          bcx: bcx,\n          bcy: bcy,\n          barHeight: barHeight,\n          barWidth: barWidth,\n          textRects: textRects,\n          strokeWidth: strokeWidth,\n          dataLabelsX: dataLabelsX,\n          dataLabelsY: dataLabelsY,\n          barDataLabelsConfig: barDataLabelsConfig,\n          offX: offX,\n          offY: offY\n        };\n\n        if (this.barCtx.isHorizontal) {\n          dataLabelsPos = this.calculateBarsDataLabelsPosition(params);\n        } else {\n          dataLabelsPos = this.calculateColumnsDataLabelsPosition(params);\n        }\n\n        renderedPath.attr({\n          cy: dataLabelsPos.bcy,\n          cx: dataLabelsPos.bcx,\n          j: j,\n          val: series[i][j],\n          barHeight: barHeight,\n          barWidth: barWidth\n        });\n        dataLabels = this.drawCalculatedDataLabels({\n          x: dataLabelsPos.dataLabelsX,\n          y: dataLabelsPos.dataLabelsY,\n          val: this.barCtx.isTimelineBar ? [y1, y2] : series[i][j],\n          i: realIndex,\n          j: j,\n          barWidth: barWidth,\n          barHeight: barHeight,\n          textRects: textRects,\n          dataLabelsConfig: dataLabelsConfig\n        });\n        return dataLabels;\n      }\n    }, {\n      key: \"calculateColumnsDataLabelsPosition\",\n      value: function calculateColumnsDataLabelsPosition(opts) {\n        var w = this.w;\n        var i = opts.i,\n            j = opts.j,\n            y = opts.y,\n            bcx = opts.bcx,\n            barWidth = opts.barWidth,\n            barHeight = opts.barHeight,\n            textRects = opts.textRects,\n            dataLabelsY = opts.dataLabelsY,\n            barDataLabelsConfig = opts.barDataLabelsConfig,\n            strokeWidth = opts.strokeWidth,\n            offX = opts.offX,\n            offY = opts.offY;\n        var dataLabelsX;\n        barHeight = Math.abs(barHeight);\n        var vertical = w.config.plotOptions.bar.dataLabels.orientation === 'vertical';\n        bcx = bcx - strokeWidth / 2;\n        var dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints;\n\n        if (w.globals.isXNumeric) {\n          dataLabelsX = bcx - barWidth / 2 + offX;\n        } else {\n          dataLabelsX = bcx - dataPointsDividedWidth + barWidth / 2 + offX;\n        }\n\n        if (vertical) {\n          var offsetDLX = 2;\n          dataLabelsX = dataLabelsX + textRects.height / 2 - strokeWidth / 2 - offsetDLX;\n        }\n\n        var valIsNegative = this.barCtx.series[i][j] < 0;\n\n        if (this.barCtx.isReversed) {\n          y = y - barHeight;\n        }\n\n        switch (barDataLabelsConfig.position) {\n          case 'center':\n            if (vertical) {\n              if (valIsNegative) {\n                dataLabelsY = y + barHeight / 2 + offY;\n              } else {\n                dataLabelsY = y + barHeight / 2 - offY;\n              }\n            } else {\n              if (valIsNegative) {\n                dataLabelsY = y + barHeight / 2 + textRects.height / 2 + offY;\n              } else {\n                dataLabelsY = y + barHeight / 2 + textRects.height / 2 - offY;\n              }\n            }\n\n            break;\n\n          case 'bottom':\n            if (vertical) {\n              if (valIsNegative) {\n                dataLabelsY = y + barHeight + offY;\n              } else {\n                dataLabelsY = y + barHeight - offY;\n              }\n            } else {\n              if (valIsNegative) {\n                dataLabelsY = y + barHeight + textRects.height + strokeWidth + offY;\n              } else {\n                dataLabelsY = y + barHeight - textRects.height / 2 + strokeWidth - offY;\n              }\n            }\n\n            break;\n\n          case 'top':\n            if (vertical) {\n              if (valIsNegative) {\n                dataLabelsY = y + offY;\n              } else {\n                dataLabelsY = y - offY;\n              }\n            } else {\n              if (valIsNegative) {\n                dataLabelsY = y - textRects.height / 2 - offY;\n              } else {\n                dataLabelsY = y + textRects.height + offY;\n              }\n            }\n\n            break;\n        }\n\n        if (!w.config.chart.stacked) {\n          if (dataLabelsY < 0) {\n            dataLabelsY = 0 + strokeWidth;\n          } else if (dataLabelsY + textRects.height / 3 > w.globals.gridHeight) {\n            dataLabelsY = w.globals.gridHeight - strokeWidth;\n          }\n        }\n\n        return {\n          bcx: bcx,\n          bcy: y,\n          dataLabelsX: dataLabelsX,\n          dataLabelsY: dataLabelsY\n        };\n      }\n    }, {\n      key: \"calculateBarsDataLabelsPosition\",\n      value: function calculateBarsDataLabelsPosition(opts) {\n        var w = this.w;\n        var x = opts.x,\n            i = opts.i,\n            j = opts.j,\n            bcy = opts.bcy,\n            barHeight = opts.barHeight,\n            barWidth = opts.barWidth,\n            textRects = opts.textRects,\n            dataLabelsX = opts.dataLabelsX,\n            strokeWidth = opts.strokeWidth,\n            barDataLabelsConfig = opts.barDataLabelsConfig,\n            offX = opts.offX,\n            offY = opts.offY;\n        var dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints;\n        barWidth = Math.abs(barWidth);\n        var dataLabelsY = bcy - (this.barCtx.isTimelineBar ? 0 : dataPointsDividedHeight) + barHeight / 2 + textRects.height / 2 + offY - 3;\n        var valIsNegative = this.barCtx.series[i][j] < 0;\n        var newX = x;\n\n        if (this.barCtx.isReversed) {\n          newX = x + barWidth;\n          x = w.globals.gridWidth - barWidth;\n        }\n\n        switch (barDataLabelsConfig.position) {\n          case 'center':\n            if (valIsNegative) {\n              dataLabelsX = newX - barWidth / 2 - offX;\n            } else {\n              dataLabelsX = newX - barWidth / 2 + offX;\n            }\n\n            break;\n\n          case 'bottom':\n            if (valIsNegative) {\n              dataLabelsX = newX + barWidth - strokeWidth - Math.round(textRects.width / 2) - offX;\n            } else {\n              dataLabelsX = newX - barWidth + strokeWidth + Math.round(textRects.width / 2) + offX;\n            }\n\n            break;\n\n          case 'top':\n            if (valIsNegative) {\n              dataLabelsX = newX - strokeWidth + Math.round(textRects.width / 2) - offX;\n            } else {\n              dataLabelsX = newX - strokeWidth - Math.round(textRects.width / 2) + offX;\n            }\n\n            break;\n        }\n\n        if (!w.config.chart.stacked) {\n          if (dataLabelsX < 0) {\n            dataLabelsX = dataLabelsX + textRects.width + strokeWidth;\n          } else if (dataLabelsX + textRects.width / 2 > w.globals.gridWidth) {\n            dataLabelsX = w.globals.gridWidth - textRects.width - strokeWidth;\n          }\n        }\n\n        return {\n          bcx: x,\n          bcy: bcy,\n          dataLabelsX: dataLabelsX,\n          dataLabelsY: dataLabelsY\n        };\n      }\n    }, {\n      key: \"drawCalculatedDataLabels\",\n      value: function drawCalculatedDataLabels(_ref) {\n        var x = _ref.x,\n            y = _ref.y,\n            val = _ref.val,\n            i = _ref.i,\n            j = _ref.j,\n            textRects = _ref.textRects,\n            barHeight = _ref.barHeight,\n            barWidth = _ref.barWidth,\n            dataLabelsConfig = _ref.dataLabelsConfig;\n        var w = this.w;\n        var rotate = 'rotate(0)';\n        if (w.config.plotOptions.bar.dataLabels.orientation === 'vertical') rotate = \"rotate(-90, \".concat(x, \", \").concat(y, \")\");\n        var dataLabels = new DataLabels(this.barCtx.ctx);\n        var graphics = new Graphics(this.barCtx.ctx);\n        var formatter = dataLabelsConfig.formatter;\n        var elDataLabelsWrap = null;\n        var isSeriesNotCollapsed = w.globals.collapsedSeriesIndices.indexOf(i) > -1;\n\n        if (dataLabelsConfig.enabled && !isSeriesNotCollapsed) {\n          elDataLabelsWrap = graphics.group({\n            class: 'apexcharts-data-labels',\n            transform: rotate\n          });\n          var text = '';\n\n          if (typeof val !== 'undefined') {\n            text = formatter(val, {\n              seriesIndex: i,\n              dataPointIndex: j,\n              w: w\n            });\n          }\n\n          if (val === 0 && w.config.chart.stacked) {\n            // in a stacked bar/column chart, 0 value should be neglected as it will overlap on the next element\n            text = '';\n          }\n\n          var valIsNegative = w.globals.series[i][j] <= 0;\n          var position = w.config.plotOptions.bar.dataLabels.position;\n\n          if (w.config.plotOptions.bar.dataLabels.orientation === 'vertical') {\n            if (position === 'top') {\n              if (valIsNegative) dataLabelsConfig.textAnchor = 'end';else dataLabelsConfig.textAnchor = 'start';\n            }\n\n            if (position === 'center') {\n              dataLabelsConfig.textAnchor = 'middle';\n            }\n\n            if (position === 'bottom') {\n              if (valIsNegative) dataLabelsConfig.textAnchor = 'end';else dataLabelsConfig.textAnchor = 'start';\n            }\n          }\n\n          if (this.barCtx.isTimelineBar && this.barCtx.barOptions.dataLabels.hideOverflowingLabels) {\n            // hide the datalabel if it cannot fit into the rect\n            var txRect = graphics.getTextRects(text, parseFloat(dataLabelsConfig.style.fontSize));\n\n            if (barWidth < txRect.width) {\n              text = '';\n            }\n          }\n\n          if (w.config.chart.stacked && this.barCtx.barOptions.dataLabels.hideOverflowingLabels) {\n            // if there is not enough space to draw the label in the bar/column rect, check hideOverflowingLabels property to prevent overflowing on wrong rect\n            // Note: This issue is only seen in stacked charts\n            if (this.barCtx.isHorizontal) {\n              barWidth = Math.abs(w.globals.series[i][j]) / this.barCtx.invertedYRatio[this.barCtx.yaxisIndex]; // FIXED: Don't always hide the stacked negative side label\n              // A negative value will result in a negative bar width\n              // Only hide the text when the width is smaller (a higher negative number) than the negative bar width.\n\n              if (barWidth > 0 && textRects.width / 1.6 > barWidth || barWidth < 0 && textRects.width / 1.6 < barWidth) {\n                text = '';\n              }\n            } else {\n              barHeight = Math.abs(w.globals.series[i][j]) / this.barCtx.yRatio[this.barCtx.yaxisIndex];\n\n              if (textRects.height / 1.6 > barHeight) {\n                text = '';\n              }\n            }\n          }\n\n          var modifiedDataLabelsConfig = _objectSpread2({}, dataLabelsConfig);\n\n          if (this.barCtx.isHorizontal) {\n            if (val < 0) {\n              if (dataLabelsConfig.textAnchor === 'start') {\n                modifiedDataLabelsConfig.textAnchor = 'end';\n              } else if (dataLabelsConfig.textAnchor === 'end') {\n                modifiedDataLabelsConfig.textAnchor = 'start';\n              }\n            }\n          }\n\n          dataLabels.plotDataLabelsText({\n            x: x,\n            y: y,\n            text: text,\n            i: i,\n            j: j,\n            parent: elDataLabelsWrap,\n            dataLabelsConfig: modifiedDataLabelsConfig,\n            alwaysDrawDataLabel: true,\n            offsetCorrection: true\n          });\n        }\n\n        return elDataLabelsWrap;\n      }\n    }]);\n\n    return BarDataLabels;\n  }();\n\n  var Helpers$3 = /*#__PURE__*/function () {\n    function Helpers(barCtx) {\n      _classCallCheck(this, Helpers);\n\n      this.w = barCtx.w;\n      this.barCtx = barCtx;\n    }\n\n    _createClass(Helpers, [{\n      key: \"initVariables\",\n      value: function initVariables(series) {\n        var w = this.w;\n        this.barCtx.series = series;\n        this.barCtx.totalItems = 0;\n        this.barCtx.seriesLen = 0;\n        this.barCtx.visibleI = -1; // visible Series\n\n        this.barCtx.visibleItems = 1; // number of visible bars after user zoomed in/out\n\n        for (var sl = 0; sl < series.length; sl++) {\n          if (series[sl].length > 0) {\n            this.barCtx.seriesLen = this.barCtx.seriesLen + 1;\n            this.barCtx.totalItems += series[sl].length;\n          }\n\n          if (w.globals.isXNumeric) {\n            // get max visible items\n            for (var j = 0; j < series[sl].length; j++) {\n              if (w.globals.seriesX[sl][j] > w.globals.minX && w.globals.seriesX[sl][j] < w.globals.maxX) {\n                this.barCtx.visibleItems++;\n              }\n            }\n          } else {\n            this.barCtx.visibleItems = w.globals.dataPoints;\n          }\n        }\n\n        if (this.barCtx.seriesLen === 0) {\n          // A small adjustment when combo charts are used\n          this.barCtx.seriesLen = 1;\n        }\n      }\n    }, {\n      key: \"initialPositions\",\n      value: function initialPositions() {\n        var w = this.w;\n        var x, y, yDivision, xDivision, barHeight, barWidth, zeroH, zeroW;\n        var dataPoints = w.globals.dataPoints;\n\n        if (this.barCtx.isTimelineBar) {\n          // timeline rangebar chart\n          dataPoints = w.globals.labels.length;\n        }\n\n        if (this.barCtx.isHorizontal) {\n          // height divided into equal parts\n          yDivision = w.globals.gridHeight / dataPoints;\n          barHeight = yDivision / this.barCtx.seriesLen;\n\n          if (w.globals.isXNumeric) {\n            yDivision = w.globals.gridHeight / this.barCtx.totalItems;\n            barHeight = yDivision / this.barCtx.seriesLen;\n          }\n\n          barHeight = barHeight * parseInt(this.barCtx.barOptions.barHeight, 10) / 100;\n          zeroW = this.barCtx.baseLineInvertedY + w.globals.padHorizontal + (this.barCtx.isReversed ? w.globals.gridWidth : 0) - (this.barCtx.isReversed ? this.barCtx.baseLineInvertedY * 2 : 0);\n          y = (yDivision - barHeight * this.barCtx.seriesLen) / 2;\n        } else {\n          // width divided into equal parts\n          xDivision = w.globals.gridWidth / this.barCtx.visibleItems;\n\n          if (w.config.xaxis.convertedCatToNumeric) {\n            xDivision = w.globals.gridWidth / w.globals.dataPoints;\n          }\n\n          barWidth = xDivision / this.barCtx.seriesLen * parseInt(this.barCtx.barOptions.columnWidth, 10) / 100;\n\n          if (w.globals.isXNumeric) {\n            // max barwidth should be equal to minXDiff to avoid overlap\n            var xRatio = this.barCtx.xRatio;\n\n            if (w.config.xaxis.convertedCatToNumeric) {\n              xRatio = this.barCtx.initialXRatio;\n            }\n\n            if (w.globals.minXDiff && w.globals.minXDiff / xRatio > 0) {\n              xDivision = w.globals.minXDiff / xRatio;\n            }\n\n            barWidth = xDivision / this.barCtx.seriesLen * parseInt(this.barCtx.barOptions.columnWidth, 10) / 100;\n\n            if (barWidth < 1) {\n              barWidth = 1;\n            }\n          }\n\n          zeroH = w.globals.gridHeight - this.barCtx.baseLineY[this.barCtx.yaxisIndex] - (this.barCtx.isReversed ? w.globals.gridHeight : 0) + (this.barCtx.isReversed ? this.barCtx.baseLineY[this.barCtx.yaxisIndex] * 2 : 0);\n          x = w.globals.padHorizontal + (xDivision - barWidth * this.barCtx.seriesLen) / 2;\n        }\n\n        return {\n          x: x,\n          y: y,\n          yDivision: yDivision,\n          xDivision: xDivision,\n          barHeight: barHeight,\n          barWidth: barWidth,\n          zeroH: zeroH,\n          zeroW: zeroW\n        };\n      }\n    }, {\n      key: \"getPathFillColor\",\n      value: function getPathFillColor(series, i, j, realIndex) {\n        var w = this.w;\n        var fill = new Fill(this.barCtx.ctx);\n        var fillColor = null;\n        var seriesNumber = this.barCtx.barOptions.distributed ? j : i;\n\n        if (this.barCtx.barOptions.colors.ranges.length > 0) {\n          var colorRange = this.barCtx.barOptions.colors.ranges;\n          colorRange.map(function (range) {\n            if (series[i][j] >= range.from && series[i][j] <= range.to) {\n              fillColor = range.color;\n            }\n          });\n        }\n\n        if (w.config.series[i].data[j] && w.config.series[i].data[j].fillColor) {\n          fillColor = w.config.series[i].data[j].fillColor;\n        }\n\n        var pathFill = fill.fillPath({\n          seriesNumber: this.barCtx.barOptions.distributed ? seriesNumber : realIndex,\n          dataPointIndex: j,\n          color: fillColor,\n          value: series[i][j]\n        });\n        return pathFill;\n      }\n    }, {\n      key: \"getStrokeWidth\",\n      value: function getStrokeWidth(i, j, realIndex) {\n        var strokeWidth = 0;\n        var w = this.w;\n\n        if (typeof this.barCtx.series[i][j] === 'undefined' || this.barCtx.series[i][j] === null) {\n          this.barCtx.isNullValue = true;\n        } else {\n          this.barCtx.isNullValue = false;\n        }\n\n        if (w.config.stroke.show) {\n          if (!this.barCtx.isNullValue) {\n            strokeWidth = Array.isArray(this.barCtx.strokeWidth) ? this.barCtx.strokeWidth[realIndex] : this.barCtx.strokeWidth;\n          }\n        }\n\n        return strokeWidth;\n      }\n    }, {\n      key: \"barBackground\",\n      value: function barBackground(_ref) {\n        var bc = _ref.bc,\n            i = _ref.i,\n            x1 = _ref.x1,\n            x2 = _ref.x2,\n            y1 = _ref.y1,\n            y2 = _ref.y2,\n            elSeries = _ref.elSeries;\n        var w = this.w;\n        var graphics = new Graphics(this.barCtx.ctx);\n        var sr = new Series(this.barCtx.ctx);\n        var activeSeriesIndex = sr.getActiveConfigSeriesIndex();\n\n        if (this.barCtx.barOptions.colors.backgroundBarColors.length > 0 && activeSeriesIndex === i) {\n          if (bc >= this.barCtx.barOptions.colors.backgroundBarColors.length) {\n            bc = 0;\n          }\n\n          var bcolor = this.barCtx.barOptions.colors.backgroundBarColors[bc];\n          var rect = graphics.drawRect(typeof x1 !== 'undefined' ? x1 : 0, typeof y1 !== 'undefined' ? y1 : 0, typeof x2 !== 'undefined' ? x2 : w.globals.gridWidth, typeof y2 !== 'undefined' ? y2 : w.globals.gridHeight, this.barCtx.barOptions.colors.backgroundBarRadius, bcolor, this.barCtx.barOptions.colors.backgroundBarOpacity);\n          elSeries.add(rect);\n          rect.node.classList.add('apexcharts-backgroundBar');\n        }\n      }\n    }, {\n      key: \"getColumnPaths\",\n      value: function getColumnPaths(_ref2) {\n        var barWidth = _ref2.barWidth,\n            barXPosition = _ref2.barXPosition,\n            yRatio = _ref2.yRatio,\n            y1 = _ref2.y1,\n            y2 = _ref2.y2,\n            strokeWidth = _ref2.strokeWidth,\n            series = _ref2.series,\n            realIndex = _ref2.realIndex,\n            i = _ref2.i,\n            j = _ref2.j,\n            w = _ref2.w;\n        var graphics = new Graphics(this.barCtx.ctx);\n        strokeWidth = Array.isArray(strokeWidth) ? strokeWidth[realIndex] : strokeWidth;\n        if (!strokeWidth) strokeWidth = 0;\n        var shapeOpts = {\n          barWidth: barWidth,\n          strokeWidth: strokeWidth,\n          yRatio: yRatio,\n          barXPosition: barXPosition,\n          y1: y1,\n          y2: y2\n        };\n        var newPath = this.getRoundedBars(w, shapeOpts, series, i, j);\n        var x1 = barXPosition;\n        var x2 = barXPosition + barWidth;\n        var pathTo = graphics.move(x1, newPath.y1);\n        var pathFrom = graphics.move(x1, newPath.y1);\n\n        if (w.globals.previousPaths.length > 0) {\n          pathFrom = this.barCtx.getPreviousPath(realIndex, j, false);\n        }\n\n        pathTo = pathTo + graphics.line(x1, newPath.y2) + newPath.endingPath + graphics.line(x2 - strokeWidth, newPath.y2) + graphics.line(x2 - strokeWidth, newPath.y1) + newPath.startingPath + 'z';\n        pathFrom = pathFrom + graphics.line(x1, y1) + graphics.line(x2 - strokeWidth, y1) + graphics.line(x2 - strokeWidth, y1) + graphics.line(x2 - strokeWidth, y1) + graphics.line(x1, y1);\n        return {\n          pathTo: pathTo,\n          pathFrom: pathFrom\n        };\n      }\n    }, {\n      key: \"getBarpaths\",\n      value: function getBarpaths(_ref3) {\n        var barYPosition = _ref3.barYPosition,\n            barHeight = _ref3.barHeight,\n            x1 = _ref3.x1,\n            x2 = _ref3.x2,\n            strokeWidth = _ref3.strokeWidth,\n            series = _ref3.series,\n            realIndex = _ref3.realIndex,\n            i = _ref3.i,\n            j = _ref3.j,\n            w = _ref3.w;\n        var graphics = new Graphics(this.barCtx.ctx);\n        strokeWidth = Array.isArray(strokeWidth) ? strokeWidth[realIndex] : strokeWidth;\n        if (!strokeWidth) strokeWidth = 0;\n        var shapeOpts = {\n          barHeight: barHeight,\n          strokeWidth: strokeWidth,\n          barYPosition: barYPosition,\n          x2: x2,\n          x1: x1\n        };\n        var newPath = this.getRoundedBars(w, shapeOpts, series, i, j);\n        var pathTo = graphics.move(newPath.x1, barYPosition);\n        var pathFrom = graphics.move(newPath.x1, barYPosition);\n\n        if (w.globals.previousPaths.length > 0) {\n          pathFrom = this.barCtx.getPreviousPath(realIndex, j, false);\n        }\n\n        var y1 = barYPosition;\n        var y2 = barYPosition + barHeight;\n        pathTo = pathTo + graphics.line(newPath.x2, y1) + newPath.endingPath + graphics.line(newPath.x2, y2 - strokeWidth) + graphics.line(newPath.x1, y2 - strokeWidth) + newPath.startingPath + 'z';\n        pathFrom = pathFrom + graphics.line(x1, y1) + graphics.line(x1, y2 - strokeWidth) + graphics.line(x1, y2 - strokeWidth) + graphics.line(x1, y2 - strokeWidth) + graphics.line(x1, y1);\n        return {\n          pathTo: pathTo,\n          pathFrom: pathFrom\n        };\n      }\n      /** getRoundedBars draws border radius for bars/columns\n       * @memberof Bar\n       * @param {object} w - chart context\n       * @param {object} opts - consists several properties like barHeight/barWidth\n       * @param {array} series - global primary series\n       * @param {int} i - current iterating series's index\n       * @param {int} j - series's j of i\n       * @return {object} endingPath - ending shape path string\n       *         startingPath - starting shape path string\n       *         newY/newX - which is calculated from existing x/y based on rounded border\n       **/\n\n    }, {\n      key: \"getRoundedBars\",\n      value: function getRoundedBars(w, opts, series, i, j) {\n        var graphics = new Graphics(this.barCtx.ctx);\n        var strokeWidth = Array.isArray(opts.strokeWidth) ? opts.strokeWidth[i] : opts.strokeWidth;\n        if (!strokeWidth) strokeWidth = 0;\n\n        if (this.barCtx.isHorizontal) {\n          var endingShape = null;\n          var startingShape = '';\n          var x2 = opts.x2;\n          var x1 = opts.x1;\n\n          if (typeof series[i][j] !== 'undefined' || series[i][j] !== null) {\n            var inverse = series[i][j] < 0;\n            var eX = opts.barHeight / 2 - strokeWidth;\n            if (inverse) eX = -opts.barHeight / 2 - strokeWidth;\n\n            if (eX > Math.abs(x2 - x1)) {\n              eX = Math.abs(x2 - x1);\n            }\n\n            if (this.barCtx.barOptions.endingShape === 'rounded') {\n              x2 = opts.x2 - eX / 2;\n            }\n\n            if (this.barCtx.barOptions.startingShape === 'rounded') {\n              x1 = opts.x1 + eX / 2;\n            }\n\n            switch (this.barCtx.barOptions.endingShape) {\n              case 'flat':\n                endingShape = graphics.line(x2, opts.barYPosition + opts.barHeight - strokeWidth);\n                break;\n\n              case 'rounded':\n                endingShape = graphics.quadraticCurve(x2 + eX, opts.barYPosition + (opts.barHeight - strokeWidth) / 2, x2, opts.barYPosition + opts.barHeight - strokeWidth);\n                break;\n            }\n\n            switch (this.barCtx.barOptions.startingShape) {\n              case 'flat':\n                startingShape = graphics.line(x1, opts.barYPosition + opts.barHeight - strokeWidth);\n                break;\n\n              case 'rounded':\n                startingShape = graphics.quadraticCurve(x1 - eX, opts.barYPosition + opts.barHeight / 2, x1, opts.barYPosition);\n                break;\n            }\n          }\n\n          return {\n            endingPath: endingShape,\n            startingPath: startingShape,\n            x2: x2,\n            x1: x1\n          };\n        } else {\n          var _endingShape = null;\n          var _startingShape = '';\n          var y2 = opts.y2;\n          var y1 = opts.y1;\n\n          if (typeof series[i][j] !== 'undefined' || series[i][j] !== null) {\n            var _inverse = series[i][j] < 0;\n\n            var eY = opts.barWidth / 2 - strokeWidth;\n            if (_inverse) eY = -opts.barWidth / 2 - strokeWidth;\n\n            if (eY > Math.abs(y2 - y1)) {\n              eY = Math.abs(y2 - y1);\n            }\n\n            if (this.barCtx.barOptions.endingShape === 'rounded') {\n              // the shape exceeds the chart height, hence reduce y\n              y2 = y2 + eY / 2;\n            }\n\n            if (this.barCtx.barOptions.startingShape === 'rounded') {\n              y1 = y1 - eY / 2;\n            }\n\n            switch (this.barCtx.barOptions.endingShape) {\n              case 'flat':\n                _endingShape = graphics.line(opts.barXPosition + opts.barWidth - strokeWidth, y2);\n                break;\n\n              case 'rounded':\n                _endingShape = graphics.quadraticCurve(opts.barXPosition + (opts.barWidth - strokeWidth) / 2, y2 - eY, opts.barXPosition + opts.barWidth - strokeWidth, y2);\n                break;\n            }\n\n            switch (this.barCtx.barOptions.startingShape) {\n              case 'flat':\n                _startingShape = graphics.line(opts.barXPosition + opts.barWidth - strokeWidth, y1);\n                break;\n\n              case 'rounded':\n                _startingShape = graphics.quadraticCurve(opts.barXPosition + (opts.barWidth - strokeWidth) / 2, y1 + eY, opts.barXPosition, y1);\n                break;\n            }\n          }\n\n          return {\n            endingPath: _endingShape,\n            startingPath: _startingShape,\n            y2: y2,\n            y1: y1\n          };\n        }\n      }\n    }]);\n\n    return Helpers;\n  }();\n\n  /**\n   * ApexCharts Bar Class responsible for drawing both Columns and Bars.\n   *\n   * @module Bar\n   **/\n\n  var Bar = /*#__PURE__*/function () {\n    function Bar(ctx, xyRatios) {\n      _classCallCheck(this, Bar);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      var w = this.w;\n      this.barOptions = w.config.plotOptions.bar;\n      this.isHorizontal = this.barOptions.horizontal;\n      this.strokeWidth = w.config.stroke.width;\n      this.isNullValue = false;\n      this.isTimelineBar = w.config.xaxis.type === 'datetime' && w.globals.seriesRangeBarTimeline.length;\n      this.xyRatios = xyRatios;\n\n      if (this.xyRatios !== null) {\n        this.xRatio = xyRatios.xRatio;\n        this.initialXRatio = xyRatios.initialXRatio;\n        this.yRatio = xyRatios.yRatio;\n        this.invertedXRatio = xyRatios.invertedXRatio;\n        this.invertedYRatio = xyRatios.invertedYRatio;\n        this.baseLineY = xyRatios.baseLineY;\n        this.baseLineInvertedY = xyRatios.baseLineInvertedY;\n      }\n\n      this.yaxisIndex = 0;\n      this.seriesLen = 0;\n      this.barHelpers = new Helpers$3(this);\n    }\n    /** primary draw method which is called on bar object\n     * @memberof Bar\n     * @param {array} series - user supplied series values\n     * @param {int} seriesIndex - the index by which series will be drawn on the svg\n     * @return {node} element which is supplied to parent chart draw method for appending\n     **/\n\n\n    _createClass(Bar, [{\n      key: \"draw\",\n      value: function draw(series, seriesIndex) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var coreUtils = new CoreUtils(this.ctx, w);\n        series = coreUtils.getLogSeries(series);\n        this.series = series;\n        this.yRatio = coreUtils.getLogYRatios(this.yRatio);\n        this.barHelpers.initVariables(series);\n        var ret = graphics.group({\n          class: 'apexcharts-bar-series apexcharts-plot-series'\n        });\n\n        if (w.config.dataLabels.enabled) {\n          if (this.totalItems > this.barOptions.dataLabels.maxItems) {\n            console.warn('WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.');\n          }\n        }\n\n        for (var i = 0, bc = 0; i < series.length; i++, bc++) {\n          var x = void 0,\n              y = void 0,\n              xDivision = void 0,\n              // xDivision is the GRIDWIDTH divided by number of datapoints (columns)\n          yDivision = void 0,\n              // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)\n          zeroH = void 0,\n              // zeroH is the baseline where 0 meets y axis\n          zeroW = void 0; // zeroW is the baseline where 0 meets x axis\n\n          var yArrj = []; // hold y values of current iterating series\n\n          var xArrj = []; // hold x values of current iterating series\n\n          var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn\n\n          var elSeries = graphics.group({\n            class: \"apexcharts-series\",\n            rel: i + 1,\n            seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),\n            'data:realIndex': realIndex\n          });\n          this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex);\n\n          if (series[i].length > 0) {\n            this.visibleI = this.visibleI + 1;\n          }\n\n          var barHeight = 0;\n          var barWidth = 0;\n\n          if (this.yRatio.length > 1) {\n            this.yaxisIndex = realIndex;\n          }\n\n          this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed;\n          var initPositions = this.barHelpers.initialPositions();\n          y = initPositions.y;\n          barHeight = initPositions.barHeight;\n          yDivision = initPositions.yDivision;\n          zeroW = initPositions.zeroW;\n          x = initPositions.x;\n          barWidth = initPositions.barWidth;\n          xDivision = initPositions.xDivision;\n          zeroH = initPositions.zeroH;\n\n          if (!this.horizontal) {\n            xArrj.push(x + barWidth / 2);\n          } // eldatalabels\n\n\n          var elDataLabelsWrap = graphics.group({\n            class: 'apexcharts-datalabels',\n            'data:realIndex': realIndex\n          });\n\n          for (var j = 0; j < w.globals.dataPoints; j++) {\n            var strokeWidth = this.barHelpers.getStrokeWidth(i, j, realIndex);\n            var paths = null;\n            var pathsParams = {\n              indexes: {\n                i: i,\n                j: j,\n                realIndex: realIndex,\n                bc: bc\n              },\n              x: x,\n              y: y,\n              strokeWidth: strokeWidth,\n              elSeries: elSeries\n            };\n\n            if (this.isHorizontal) {\n              paths = this.drawBarPaths(_objectSpread2({}, pathsParams, {\n                barHeight: barHeight,\n                zeroW: zeroW,\n                yDivision: yDivision\n              }));\n              barWidth = this.series[i][j] / this.invertedYRatio;\n            } else {\n              paths = this.drawColumnPaths(_objectSpread2({}, pathsParams, {\n                xDivision: xDivision,\n                barWidth: barWidth,\n                zeroH: zeroH\n              }));\n              barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex];\n            }\n\n            y = paths.y;\n            x = paths.x; // push current X\n\n            if (j > 0) {\n              xArrj.push(x + barWidth / 2);\n            }\n\n            yArrj.push(y);\n            var pathFill = this.barHelpers.getPathFillColor(series, i, j, realIndex);\n            this.renderSeries({\n              realIndex: realIndex,\n              pathFill: pathFill,\n              j: j,\n              i: i,\n              pathFrom: paths.pathFrom,\n              pathTo: paths.pathTo,\n              strokeWidth: strokeWidth,\n              elSeries: elSeries,\n              x: x,\n              y: y,\n              series: series,\n              barHeight: barHeight,\n              barWidth: barWidth,\n              elDataLabelsWrap: elDataLabelsWrap,\n              visibleSeries: this.visibleI,\n              type: 'bar'\n            });\n          } // push all x val arrays into main xArr\n\n\n          w.globals.seriesXvalues[realIndex] = xArrj;\n          w.globals.seriesYvalues[realIndex] = yArrj;\n          ret.add(elSeries);\n        }\n\n        return ret;\n      }\n    }, {\n      key: \"renderSeries\",\n      value: function renderSeries(_ref) {\n        var realIndex = _ref.realIndex,\n            pathFill = _ref.pathFill,\n            lineFill = _ref.lineFill,\n            j = _ref.j,\n            i = _ref.i,\n            pathFrom = _ref.pathFrom,\n            pathTo = _ref.pathTo,\n            strokeWidth = _ref.strokeWidth,\n            elSeries = _ref.elSeries,\n            x = _ref.x,\n            y = _ref.y,\n            y1 = _ref.y1,\n            y2 = _ref.y2,\n            series = _ref.series,\n            barHeight = _ref.barHeight,\n            barWidth = _ref.barWidth,\n            barYPosition = _ref.barYPosition,\n            elDataLabelsWrap = _ref.elDataLabelsWrap,\n            visibleSeries = _ref.visibleSeries,\n            type = _ref.type;\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n\n        if (!lineFill) {\n          /* fix apexcharts#341 */\n          lineFill = this.barOptions.distributed ? w.globals.stroke.colors[j] : w.globals.stroke.colors[realIndex];\n        }\n\n        if (w.config.series[i].data[j] && w.config.series[i].data[j].strokeColor) {\n          lineFill = w.config.series[i].data[j].strokeColor;\n        }\n\n        if (this.isNullValue) {\n          pathFill = 'none';\n        }\n\n        var delay = j / w.config.chart.animations.animateGradually.delay * (w.config.chart.animations.speed / w.globals.dataPoints) / 2.4;\n        var renderedPath = graphics.renderPaths({\n          i: i,\n          j: j,\n          realIndex: realIndex,\n          pathFrom: pathFrom,\n          pathTo: pathTo,\n          stroke: lineFill,\n          strokeWidth: strokeWidth,\n          strokeLineCap: w.config.stroke.lineCap,\n          fill: pathFill,\n          animationDelay: delay,\n          initialSpeed: w.config.chart.animations.speed,\n          dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,\n          className: \"apexcharts-\".concat(type, \"-area\")\n        });\n        renderedPath.attr('clip-path', \"url(#gridRectMask\".concat(w.globals.cuid, \")\"));\n\n        if (typeof y1 !== 'undefined' && typeof y2 !== 'undefined') {\n          renderedPath.attr('data-range-y1', y1);\n          renderedPath.attr('data-range-y2', y2);\n        }\n\n        var filters = new Filters(this.ctx);\n        filters.setSelectionFilter(renderedPath, realIndex, j);\n        elSeries.add(renderedPath);\n        var barDataLabels = new BarDataLabels(this);\n        var dataLabels = barDataLabels.handleBarDataLabels({\n          x: x,\n          y: y,\n          y1: y1,\n          y2: y2,\n          i: i,\n          j: j,\n          series: series,\n          realIndex: realIndex,\n          barHeight: barHeight,\n          barWidth: barWidth,\n          barYPosition: barYPosition,\n          renderedPath: renderedPath,\n          visibleSeries: visibleSeries\n        });\n\n        if (dataLabels !== null) {\n          elDataLabelsWrap.add(dataLabels);\n        }\n\n        elSeries.add(elDataLabelsWrap);\n        return elSeries;\n      }\n    }, {\n      key: \"drawBarPaths\",\n      value: function drawBarPaths(_ref2) {\n        var indexes = _ref2.indexes,\n            barHeight = _ref2.barHeight,\n            strokeWidth = _ref2.strokeWidth,\n            zeroW = _ref2.zeroW,\n            x = _ref2.x,\n            y = _ref2.y,\n            yDivision = _ref2.yDivision,\n            elSeries = _ref2.elSeries;\n        var w = this.w;\n        var i = indexes.i;\n        var j = indexes.j;\n        var bc = indexes.bc;\n\n        if (w.globals.isXNumeric) {\n          y = (w.globals.seriesX[i][j] - w.globals.minX) / this.invertedXRatio - barHeight;\n        }\n\n        var barYPosition = y + barHeight * this.visibleI;\n\n        if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {\n          x = zeroW;\n        } else {\n          x = zeroW + this.series[i][j] / this.invertedYRatio - (this.isReversed ? this.series[i][j] / this.invertedYRatio : 0) * 2;\n        }\n\n        var paths = this.barHelpers.getBarpaths({\n          barYPosition: barYPosition,\n          barHeight: barHeight,\n          x1: zeroW,\n          x2: x,\n          strokeWidth: strokeWidth,\n          series: this.series,\n          realIndex: indexes.realIndex,\n          i: i,\n          j: j,\n          w: w\n        });\n\n        if (!w.globals.isXNumeric) {\n          y = y + yDivision;\n        }\n\n        this.barHelpers.barBackground({\n          bc: bc,\n          i: i,\n          y1: barYPosition - barHeight * this.visibleI,\n          y2: barHeight * this.seriesLen,\n          elSeries: elSeries\n        });\n        return {\n          pathTo: paths.pathTo,\n          pathFrom: paths.pathFrom,\n          x: x,\n          y: y,\n          barYPosition: barYPosition\n        };\n      }\n    }, {\n      key: \"drawColumnPaths\",\n      value: function drawColumnPaths(_ref3) {\n        var indexes = _ref3.indexes,\n            x = _ref3.x,\n            y = _ref3.y,\n            xDivision = _ref3.xDivision,\n            barWidth = _ref3.barWidth,\n            zeroH = _ref3.zeroH,\n            strokeWidth = _ref3.strokeWidth,\n            elSeries = _ref3.elSeries;\n        var w = this.w;\n        var i = indexes.i;\n        var j = indexes.j;\n        var bc = indexes.bc;\n\n        if (w.globals.isXNumeric) {\n          var sxI = i;\n\n          if (!w.globals.seriesX[i].length) {\n            sxI = w.globals.maxValsInArrayIndex;\n          }\n\n          x = (w.globals.seriesX[sxI][j] - w.globals.minX) / this.xRatio - barWidth * this.seriesLen / 2;\n        }\n\n        var barXPosition = x + barWidth * this.visibleI;\n\n        if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {\n          y = zeroH;\n        } else {\n          y = zeroH - this.series[i][j] / this.yRatio[this.yaxisIndex] + (this.isReversed ? this.series[i][j] / this.yRatio[this.yaxisIndex] : 0) * 2;\n        }\n\n        var paths = this.barHelpers.getColumnPaths({\n          barXPosition: barXPosition,\n          barWidth: barWidth,\n          y1: zeroH,\n          y2: y,\n          strokeWidth: strokeWidth,\n          series: this.series,\n          realIndex: indexes.realIndex,\n          i: i,\n          j: j,\n          w: w\n        });\n\n        if (!w.globals.isXNumeric) {\n          x = x + xDivision;\n        }\n\n        this.barHelpers.barBackground({\n          bc: bc,\n          i: i,\n          x1: barXPosition - strokeWidth / 2 - barWidth * this.visibleI,\n          x2: barWidth * this.seriesLen + strokeWidth / 2,\n          elSeries: elSeries\n        });\n        return {\n          pathTo: paths.pathTo,\n          pathFrom: paths.pathFrom,\n          x: x,\n          y: y,\n          barXPosition: barXPosition\n        };\n      }\n      /** getPreviousPath is a common function for bars/columns which is used to get previous paths when data changes.\n       * @memberof Bar\n       * @param {int} realIndex - current iterating i\n       * @param {int} j - current iterating series's j index\n       * @return {string} pathFrom is the string which will be appended in animations\n       **/\n\n    }, {\n      key: \"getPreviousPath\",\n      value: function getPreviousPath(realIndex, j) {\n        var w = this.w;\n        var pathFrom;\n\n        for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {\n          var gpp = w.globals.previousPaths[pp];\n\n          if (gpp.paths && gpp.paths.length > 0 && parseInt(gpp.realIndex, 10) === parseInt(realIndex, 10)) {\n            if (typeof w.globals.previousPaths[pp].paths[j] !== 'undefined') {\n              pathFrom = w.globals.previousPaths[pp].paths[j].d;\n            }\n          }\n        }\n\n        return pathFrom;\n      }\n    }]);\n\n    return Bar;\n  }();\n\n  /**\n   * ApexCharts BarStacked Class responsible for drawing both Stacked Columns and Bars.\n   *\n   * @module BarStacked\n   * The whole calculation for stacked bar/column is different from normal bar/column,\n   * hence it makes sense to derive a new class for it extending most of the props of Parent Bar\n   **/\n\n  var BarStacked = /*#__PURE__*/function (_Bar) {\n    _inherits(BarStacked, _Bar);\n\n    function BarStacked() {\n      _classCallCheck(this, BarStacked);\n\n      return _possibleConstructorReturn(this, _getPrototypeOf(BarStacked).apply(this, arguments));\n    }\n\n    _createClass(BarStacked, [{\n      key: \"draw\",\n      value: function draw(series, seriesIndex) {\n        var _this = this;\n\n        var w = this.w;\n        this.graphics = new Graphics(this.ctx);\n        this.bar = new Bar(this.ctx, this.xyRatios);\n        var coreUtils = new CoreUtils(this.ctx, w);\n        series = coreUtils.getLogSeries(series);\n        this.yRatio = coreUtils.getLogYRatios(this.yRatio);\n        this.barHelpers.initVariables(series);\n\n        if (w.config.chart.stackType === '100%') {\n          series = w.globals.seriesPercent.slice();\n        }\n\n        this.series = series;\n        this.totalItems = 0;\n        this.prevY = []; // y position on chart\n\n        this.prevX = []; // x position on chart\n\n        this.prevYF = []; // y position including shapes on chart\n\n        this.prevXF = []; // x position including shapes on chart\n\n        this.prevYVal = []; // y values (series[i][j]) in columns\n\n        this.prevXVal = []; // x values (series[i][j]) in bars\n\n        this.xArrj = []; // xj indicates x position on graph in bars\n\n        this.xArrjF = []; // xjF indicates bar's x position + roundedShape's positions in bars\n\n        this.xArrjVal = []; // x val means the actual series's y values in horizontal/bars\n\n        this.yArrj = []; // yj indicates y position on graph in columns\n\n        this.yArrjF = []; // yjF indicates bar's y position + roundedShape's positions in columns\n\n        this.yArrjVal = []; // y val means the actual series's y values in columns\n\n        for (var sl = 0; sl < series.length; sl++) {\n          if (series[sl].length > 0) {\n            this.totalItems += series[sl].length;\n          }\n        }\n\n        var ret = this.graphics.group({\n          class: 'apexcharts-bar-series apexcharts-plot-series'\n        });\n        var x = 0;\n        var y = 0;\n\n        var _loop = function _loop(i, bc) {\n          var xDivision = void 0; // xDivision is the GRIDWIDTH divided by number of datapoints (columns)\n\n          var yDivision = void 0; // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)\n\n          var zeroH = void 0; // zeroH is the baseline where 0 meets y axis\n\n          var zeroW = void 0; // zeroW is the baseline where 0 meets x axis\n\n          var xArrValues = [];\n          var yArrValues = [];\n          var realIndex = w.globals.comboCharts ? seriesIndex[i] : i;\n\n          if (_this.yRatio.length > 1) {\n            _this.yaxisIndex = realIndex;\n          }\n\n          _this.isReversed = w.config.yaxis[_this.yaxisIndex] && w.config.yaxis[_this.yaxisIndex].reversed; // el to which series will be drawn\n\n          var elSeries = _this.graphics.group({\n            class: \"apexcharts-series\",\n            seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),\n            rel: i + 1,\n            'data:realIndex': realIndex\n          }); // eldatalabels\n\n\n          var elDataLabelsWrap = _this.graphics.group({\n            class: 'apexcharts-datalabels',\n            'data:realIndex': realIndex\n          });\n\n          var barHeight = 0;\n          var barWidth = 0;\n\n          var initPositions = _this.initialPositions(x, y, xDivision, yDivision, zeroH, zeroW);\n\n          y = initPositions.y;\n          barHeight = initPositions.barHeight;\n          yDivision = initPositions.yDivision;\n          zeroW = initPositions.zeroW;\n          x = initPositions.x;\n          barWidth = initPositions.barWidth;\n          xDivision = initPositions.xDivision;\n          zeroH = initPositions.zeroH;\n          _this.yArrj = [];\n          _this.yArrjF = [];\n          _this.yArrjVal = [];\n          _this.xArrj = [];\n          _this.xArrjF = [];\n          _this.xArrjVal = []; // if (!this.horizontal) {\n          // this.xArrj.push(x + barWidth / 2)\n          // }\n          // fix issue #1215;\n          // where all stack bar disappear after collapsing the first series\n          // sol: if only 1 arr in this.prevY(this.prevY.length === 1) and all are NaN\n\n          if (_this.prevY.length === 1 && _this.prevY[0].every(function (val) {\n            return isNaN(val);\n          })) {\n            // make this.prevY[0] all zeroH\n            _this.prevY[0] = _this.prevY[0].map(function (val) {\n              return zeroH;\n            }); // make this.prevYF[0] all 0\n\n            _this.prevYF[0] = _this.prevYF[0].map(function (val) {\n              return 0;\n            });\n          }\n\n          for (var j = 0; j < w.globals.dataPoints; j++) {\n            var strokeWidth = _this.barHelpers.getStrokeWidth(i, j, realIndex);\n\n            var commonPathOpts = {\n              indexes: {\n                i: i,\n                j: j,\n                realIndex: realIndex,\n                bc: bc\n              },\n              strokeWidth: strokeWidth,\n              x: x,\n              y: y,\n              elSeries: elSeries\n            };\n            var paths = null;\n\n            if (_this.isHorizontal) {\n              paths = _this.drawStackedBarPaths(_objectSpread2({}, commonPathOpts, {\n                zeroW: zeroW,\n                barHeight: barHeight,\n                yDivision: yDivision\n              }));\n              barWidth = _this.series[i][j] / _this.invertedYRatio;\n            } else {\n              paths = _this.drawStackedColumnPaths(_objectSpread2({}, commonPathOpts, {\n                xDivision: xDivision,\n                barWidth: barWidth,\n                zeroH: zeroH\n              }));\n              barHeight = _this.series[i][j] / _this.yRatio[_this.yaxisIndex];\n            }\n\n            y = paths.y;\n            x = paths.x;\n            xArrValues.push(x);\n            yArrValues.push(y);\n\n            var pathFill = _this.barHelpers.getPathFillColor(series, i, j, realIndex);\n\n            elSeries = _this.renderSeries({\n              realIndex: realIndex,\n              pathFill: pathFill,\n              j: j,\n              i: i,\n              pathFrom: paths.pathFrom,\n              pathTo: paths.pathTo,\n              strokeWidth: strokeWidth,\n              elSeries: elSeries,\n              x: x,\n              y: y,\n              series: series,\n              barHeight: barHeight,\n              barWidth: barWidth,\n              elDataLabelsWrap: elDataLabelsWrap,\n              type: 'bar',\n              visibleSeries: 0\n            });\n          } // push all x val arrays into main xArr\n\n\n          w.globals.seriesXvalues[realIndex] = xArrValues;\n          w.globals.seriesYvalues[realIndex] = yArrValues; // push all current y values array to main PrevY Array\n\n          _this.prevY.push(_this.yArrj);\n\n          _this.prevYF.push(_this.yArrjF);\n\n          _this.prevYVal.push(_this.yArrjVal);\n\n          _this.prevX.push(_this.xArrj);\n\n          _this.prevXF.push(_this.xArrjF);\n\n          _this.prevXVal.push(_this.xArrjVal);\n\n          ret.add(elSeries);\n        };\n\n        for (var i = 0, bc = 0; i < series.length; i++, bc++) {\n          _loop(i, bc);\n        }\n\n        return ret;\n      }\n    }, {\n      key: \"initialPositions\",\n      value: function initialPositions(x, y, xDivision, yDivision, zeroH, zeroW) {\n        var w = this.w;\n        var barHeight, barWidth;\n\n        if (this.isHorizontal) {\n          // height divided into equal parts\n          yDivision = w.globals.gridHeight / w.globals.dataPoints;\n          barHeight = yDivision;\n          barHeight = barHeight * parseInt(w.config.plotOptions.bar.barHeight, 10) / 100;\n          zeroW = this.baseLineInvertedY + w.globals.padHorizontal + (this.isReversed ? w.globals.gridWidth : 0) - (this.isReversed ? this.baseLineInvertedY * 2 : 0); // initial y position is half of barHeight * half of number of Bars\n\n          y = (yDivision - barHeight) / 2;\n        } else {\n          // width divided into equal parts\n          xDivision = w.globals.gridWidth / w.globals.dataPoints;\n          barWidth = xDivision;\n\n          if (w.globals.isXNumeric) {\n            xDivision = w.globals.minXDiff / this.xRatio;\n            barWidth = xDivision * parseInt(this.barOptions.columnWidth, 10) / 100;\n          } else {\n            barWidth = barWidth * parseInt(w.config.plotOptions.bar.columnWidth, 10) / 100;\n          }\n\n          zeroH = this.baseLineY[this.yaxisIndex] + (this.isReversed ? w.globals.gridHeight : 0) - (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0); // initial x position is one third of barWidth\n\n          x = w.globals.padHorizontal + (xDivision - barWidth) / 2;\n        }\n\n        return {\n          x: x,\n          y: y,\n          yDivision: yDivision,\n          xDivision: xDivision,\n          barHeight: barHeight,\n          barWidth: barWidth,\n          zeroH: zeroH,\n          zeroW: zeroW\n        };\n      }\n    }, {\n      key: \"drawStackedBarPaths\",\n      value: function drawStackedBarPaths(_ref) {\n        var indexes = _ref.indexes,\n            barHeight = _ref.barHeight,\n            strokeWidth = _ref.strokeWidth,\n            zeroW = _ref.zeroW,\n            x = _ref.x,\n            y = _ref.y,\n            yDivision = _ref.yDivision,\n            elSeries = _ref.elSeries;\n        var w = this.w;\n        var barYPosition = y;\n        var barXPosition;\n        var i = indexes.i;\n        var j = indexes.j;\n        var bc = indexes.bc;\n        var prevBarW = 0;\n\n        for (var k = 0; k < this.prevXF.length; k++) {\n          prevBarW = prevBarW + this.prevXF[k][j];\n        }\n\n        if (i > 0) {\n          var bXP = zeroW;\n\n          if (this.prevXVal[i - 1][j] < 0) {\n            bXP = this.series[i][j] >= 0 ? this.prevX[i - 1][j] + prevBarW - (this.isReversed ? prevBarW : 0) * 2 : this.prevX[i - 1][j];\n          } else if (this.prevXVal[i - 1][j] >= 0) {\n            bXP = this.series[i][j] >= 0 ? this.prevX[i - 1][j] : this.prevX[i - 1][j] - prevBarW + (this.isReversed ? prevBarW : 0) * 2;\n          }\n\n          barXPosition = bXP;\n        } else {\n          // the first series will not have prevX values\n          barXPosition = zeroW;\n        }\n\n        if (this.series[i][j] === null) {\n          x = barXPosition;\n        } else {\n          x = barXPosition + this.series[i][j] / this.invertedYRatio - (this.isReversed ? this.series[i][j] / this.invertedYRatio : 0) * 2;\n        }\n\n        this.xArrj.push(x);\n        this.xArrjF.push(Math.abs(barXPosition - x));\n        this.xArrjVal.push(this.series[i][j]);\n        var paths = this.barHelpers.getBarpaths({\n          barYPosition: barYPosition,\n          barHeight: barHeight,\n          x1: barXPosition,\n          x2: x,\n          strokeWidth: strokeWidth,\n          series: this.series,\n          realIndex: indexes.realIndex,\n          i: i,\n          j: j,\n          w: w\n        });\n        this.barHelpers.barBackground({\n          bc: bc,\n          i: i,\n          y1: barYPosition,\n          y2: barHeight,\n          elSeries: elSeries\n        });\n        y = y + yDivision;\n        return {\n          pathTo: paths.pathTo,\n          pathFrom: paths.pathFrom,\n          x: x,\n          y: y\n        };\n      }\n    }, {\n      key: \"drawStackedColumnPaths\",\n      value: function drawStackedColumnPaths(_ref2) {\n        var indexes = _ref2.indexes,\n            x = _ref2.x,\n            y = _ref2.y,\n            xDivision = _ref2.xDivision,\n            barWidth = _ref2.barWidth,\n            zeroH = _ref2.zeroH,\n            strokeWidth = _ref2.strokeWidth,\n            elSeries = _ref2.elSeries;\n        var w = this.w;\n        var i = indexes.i;\n        var j = indexes.j;\n        var bc = indexes.bc;\n\n        if (w.globals.isXNumeric) {\n          var seriesVal = w.globals.seriesX[i][j];\n          if (!seriesVal) seriesVal = 0;\n          x = (seriesVal - w.globals.minX) / this.xRatio - barWidth / 2;\n        }\n\n        var barXPosition = x;\n        var barYPosition;\n        var prevBarH = 0;\n\n        for (var k = 0; k < this.prevYF.length; k++) {\n          // fix issue #1215\n          // in case where this.prevYF[k][j] is NaN, use 0 instead\n          prevBarH = prevBarH + (!isNaN(this.prevYF[k][j]) ? this.prevYF[k][j] : 0);\n        }\n\n        if (i > 0 && !w.globals.isXNumeric || i > 0 && w.globals.isXNumeric && w.globals.seriesX[i - 1][j] === w.globals.seriesX[i][j]) {\n          var bYP;\n          var prevYValue;\n          var p = Math.min(this.yRatio.length + 1, i + 1);\n\n          if (this.prevY[i - 1] !== undefined) {\n            for (var ii = 1; ii < p; ii++) {\n              if (!isNaN(this.prevY[i - ii][j])) {\n                // find the previous available value to give prevYValue\n                prevYValue = this.prevY[i - ii][j]; // if found it, break the loop\n\n                break;\n              }\n            }\n          }\n\n          for (var _ii = 1; _ii < p; _ii++) {\n            // find the previous available value(non-NaN) to give bYP\n            if (this.prevYVal[i - _ii][j] < 0) {\n              bYP = this.series[i][j] >= 0 ? prevYValue - prevBarH + (this.isReversed ? prevBarH : 0) * 2 : prevYValue; // found it? break the loop\n\n              break;\n            } else if (this.prevYVal[i - _ii][j] >= 0) {\n              bYP = this.series[i][j] >= 0 ? prevYValue : prevYValue + prevBarH - (this.isReversed ? prevBarH : 0) * 2; // found it? break the loop\n\n              break;\n            }\n          }\n\n          if (typeof bYP === 'undefined') bYP = w.globals.gridHeight; // if this.prevYF[0] is all 0 resulted from line #486\n          // AND every arr starting from the second only contains NaN\n\n          if (this.prevYF[0].every(function (val) {\n            return val === 0;\n          }) && this.prevYF.slice(1, i).every(function (arr) {\n            return arr.every(function (val) {\n              return isNaN(val);\n            });\n          })) {\n            // Use the same calc way as line #485\n            barYPosition = w.globals.gridHeight - zeroH;\n          } else {\n            // Nothing special\n            barYPosition = bYP;\n          }\n        } else {\n          // the first series will not have prevY values, also if the prev index's series X doesn't matches the current index's series X, then start from zero\n          barYPosition = w.globals.gridHeight - zeroH;\n        }\n\n        y = barYPosition - this.series[i][j] / this.yRatio[this.yaxisIndex] + (this.isReversed ? this.series[i][j] / this.yRatio[this.yaxisIndex] : 0) * 2;\n        this.yArrj.push(y);\n        this.yArrjF.push(Math.abs(barYPosition - y));\n        this.yArrjVal.push(this.series[i][j]);\n        var paths = this.barHelpers.getColumnPaths({\n          barXPosition: barXPosition,\n          barWidth: barWidth,\n          y1: barYPosition,\n          y2: y,\n          yRatio: this.yRatio[this.yaxisIndex],\n          strokeWidth: this.strokeWidth,\n          series: this.series,\n          realIndex: indexes.realIndex,\n          i: i,\n          j: j,\n          w: w\n        });\n        this.barHelpers.barBackground({\n          bc: bc,\n          i: i,\n          x1: barXPosition,\n          x2: barWidth,\n          elSeries: elSeries\n        });\n        x = x + xDivision;\n        return {\n          pathTo: paths.pathTo,\n          pathFrom: paths.pathFrom,\n          x: w.globals.isXNumeric ? x - xDivision : x,\n          y: y\n        };\n      }\n    }]);\n\n    return BarStacked;\n  }(Bar);\n\n  /**\n   * ApexCharts CandleStick Class responsible for drawing both Stacked Columns and Bars.\n   *\n   * @module CandleStick\n   **/\n\n  var CandleStick = /*#__PURE__*/function (_Bar) {\n    _inherits(CandleStick, _Bar);\n\n    function CandleStick() {\n      _classCallCheck(this, CandleStick);\n\n      return _possibleConstructorReturn(this, _getPrototypeOf(CandleStick).apply(this, arguments));\n    }\n\n    _createClass(CandleStick, [{\n      key: \"draw\",\n      value: function draw(series, seriesIndex) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var fill = new Fill(this.ctx);\n        this.candlestickOptions = this.w.config.plotOptions.candlestick;\n        var coreUtils = new CoreUtils(this.ctx, w);\n        series = coreUtils.getLogSeries(series);\n        this.series = series;\n        this.yRatio = coreUtils.getLogYRatios(this.yRatio);\n        this.barHelpers.initVariables(series);\n        var ret = graphics.group({\n          class: 'apexcharts-candlestick-series apexcharts-plot-series'\n        });\n\n        for (var i = 0; i < series.length; i++) {\n          var x = void 0,\n              y = void 0,\n              xDivision = void 0,\n              // xDivision is the GRIDWIDTH divided by number of datapoints (columns)\n          zeroH = void 0; // zeroH is the baseline where 0 meets y axis\n\n          var yArrj = []; // hold y values of current iterating series\n\n          var xArrj = []; // hold x values of current iterating series\n\n          var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn\n\n          var elSeries = graphics.group({\n            class: \"apexcharts-series\",\n            seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),\n            rel: i + 1,\n            'data:realIndex': realIndex\n          });\n\n          if (series[i].length > 0) {\n            this.visibleI = this.visibleI + 1;\n          }\n\n          var barHeight = 0;\n          var barWidth = 0;\n\n          if (this.yRatio.length > 1) {\n            this.yaxisIndex = realIndex;\n          }\n\n          var initPositions = this.barHelpers.initialPositions();\n          y = initPositions.y;\n          barHeight = initPositions.barHeight;\n          x = initPositions.x;\n          barWidth = initPositions.barWidth;\n          xDivision = initPositions.xDivision;\n          zeroH = initPositions.zeroH;\n          xArrj.push(x + barWidth / 2); // eldatalabels\n\n          var elDataLabelsWrap = graphics.group({\n            class: 'apexcharts-datalabels',\n            'data:realIndex': realIndex\n          });\n\n          for (var j = 0; j < w.globals.dataPoints; j++) {\n            var strokeWidth = this.barHelpers.getStrokeWidth(i, j, realIndex);\n            var color = void 0;\n            var paths = this.drawCandleStickPaths({\n              indexes: {\n                i: i,\n                j: j,\n                realIndex: realIndex\n              },\n              x: x,\n              y: y,\n              xDivision: xDivision,\n              barWidth: barWidth,\n              zeroH: zeroH,\n              strokeWidth: strokeWidth,\n              elSeries: elSeries\n            });\n            y = paths.y;\n            x = paths.x;\n            color = paths.color; // push current X\n\n            if (j > 0) {\n              xArrj.push(x + barWidth / 2);\n            }\n\n            yArrj.push(y);\n            var pathFill = fill.fillPath({\n              seriesNumber: realIndex,\n              dataPointIndex: j,\n              color: color,\n              value: series[i][j]\n            });\n            var lineFill = this.candlestickOptions.wick.useFillColor ? color : undefined;\n            this.renderSeries({\n              realIndex: realIndex,\n              pathFill: pathFill,\n              lineFill: lineFill,\n              j: j,\n              i: i,\n              pathFrom: paths.pathFrom,\n              pathTo: paths.pathTo,\n              strokeWidth: strokeWidth,\n              elSeries: elSeries,\n              x: x,\n              y: y,\n              series: series,\n              barHeight: barHeight,\n              barWidth: barWidth,\n              elDataLabelsWrap: elDataLabelsWrap,\n              visibleSeries: this.visibleI,\n              type: 'candlestick'\n            });\n          } // push all x val arrays into main xArr\n\n\n          w.globals.seriesXvalues[realIndex] = xArrj;\n          w.globals.seriesYvalues[realIndex] = yArrj;\n          ret.add(elSeries);\n        }\n\n        return ret;\n      }\n    }, {\n      key: \"drawCandleStickPaths\",\n      value: function drawCandleStickPaths(_ref) {\n        var indexes = _ref.indexes,\n            x = _ref.x,\n            y = _ref.y,\n            xDivision = _ref.xDivision,\n            barWidth = _ref.barWidth,\n            zeroH = _ref.zeroH,\n            strokeWidth = _ref.strokeWidth;\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var i = indexes.i;\n        var j = indexes.j;\n        var isPositive = true;\n        var colorPos = w.config.plotOptions.candlestick.colors.upward;\n        var colorNeg = w.config.plotOptions.candlestick.colors.downward;\n        var yRatio = this.yRatio[this.yaxisIndex];\n        var realIndex = indexes.realIndex;\n        var ohlc = this.getOHLCValue(realIndex, j);\n        var l1 = zeroH;\n        var l2 = zeroH;\n\n        if (ohlc.o > ohlc.c) {\n          isPositive = false;\n        }\n\n        var y1 = Math.min(ohlc.o, ohlc.c);\n        var y2 = Math.max(ohlc.o, ohlc.c);\n\n        if (w.globals.isXNumeric) {\n          x = (w.globals.seriesX[realIndex][j] - w.globals.minX) / this.xRatio - barWidth / 2;\n        }\n\n        var barXPosition = x + barWidth * this.visibleI;\n\n        if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {\n          y1 = zeroH;\n        } else {\n          y1 = zeroH - y1 / yRatio;\n          y2 = zeroH - y2 / yRatio;\n          l1 = zeroH - ohlc.h / yRatio;\n          l2 = zeroH - ohlc.l / yRatio;\n        }\n\n        var pathTo = graphics.move(barXPosition, zeroH);\n        var pathFrom = graphics.move(barXPosition, y1);\n\n        if (w.globals.previousPaths.length > 0) {\n          pathFrom = this.getPreviousPath(realIndex, j, true);\n        }\n\n        pathTo = graphics.move(barXPosition, y2) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth / 2, l1) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth, y2) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition + barWidth / 2, l2) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition, y1) + graphics.line(barXPosition, y2 - strokeWidth / 2);\n        pathFrom = pathFrom + graphics.move(barXPosition, y1);\n\n        if (!w.globals.isXNumeric) {\n          x = x + xDivision;\n        }\n\n        return {\n          pathTo: pathTo,\n          pathFrom: pathFrom,\n          x: x,\n          y: y2,\n          barXPosition: barXPosition,\n          color: isPositive ? colorPos : colorNeg\n        };\n      }\n    }, {\n      key: \"getOHLCValue\",\n      value: function getOHLCValue(i, j) {\n        var w = this.w;\n        return {\n          o: w.globals.seriesCandleO[i][j],\n          h: w.globals.seriesCandleH[i][j],\n          l: w.globals.seriesCandleL[i][j],\n          c: w.globals.seriesCandleC[i][j]\n        };\n      }\n    }]);\n\n    return CandleStick;\n  }(Bar);\n\n  /**\n   * ApexCharts HeatMap Class.\n   * @module HeatMap\n   **/\n\n  var HeatMap = /*#__PURE__*/function () {\n    function HeatMap(ctx, xyRatios) {\n      _classCallCheck(this, HeatMap);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.xRatio = xyRatios.xRatio;\n      this.yRatio = xyRatios.yRatio;\n      this.negRange = false;\n      this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation;\n      this.rectRadius = this.w.config.plotOptions.heatmap.radius;\n      this.strokeWidth = this.w.config.stroke.show ? this.w.config.stroke.width : 0;\n    }\n\n    _createClass(HeatMap, [{\n      key: \"draw\",\n      value: function draw(series) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var ret = graphics.group({\n          class: 'apexcharts-heatmap'\n        });\n        ret.attr('clip-path', \"url(#gridRectMask\".concat(w.globals.cuid, \")\")); // width divided into equal parts\n\n        var xDivision = w.globals.gridWidth / w.globals.dataPoints;\n        var yDivision = w.globals.gridHeight / w.globals.series.length;\n        var y1 = 0;\n        var rev = false;\n        this.checkColorRange();\n        var heatSeries = series.slice();\n\n        if (w.config.yaxis[0].reversed) {\n          rev = true;\n          heatSeries.reverse();\n        }\n\n        for (var i = rev ? 0 : heatSeries.length - 1; rev ? i < heatSeries.length : i >= 0; rev ? i++ : i--) {\n          // el to which series will be drawn\n          var elSeries = graphics.group({\n            class: \"apexcharts-series apexcharts-heatmap-series\",\n            seriesName: Utils.escapeString(w.globals.seriesNames[i]),\n            rel: i + 1,\n            'data:realIndex': i\n          });\n\n          if (w.config.chart.dropShadow.enabled) {\n            var shadow = w.config.chart.dropShadow;\n            var filters = new Filters(this.ctx);\n            filters.dropShadow(elSeries, shadow, i);\n          }\n\n          var x1 = 0;\n\n          for (var j = 0; j < heatSeries[i].length; j++) {\n            var colorShadePercent = 1;\n            var shadeIntensity = w.config.plotOptions.heatmap.shadeIntensity;\n            var heatColorProps = this.determineHeatColor(i, j);\n\n            if (w.globals.hasNegs || this.negRange) {\n              if (w.config.plotOptions.heatmap.reverseNegativeShade) {\n                if (heatColorProps.percent < 0) {\n                  colorShadePercent = heatColorProps.percent / 100 * (shadeIntensity * 1.25);\n                } else {\n                  colorShadePercent = (1 - heatColorProps.percent / 100) * (shadeIntensity * 1.25);\n                }\n              } else {\n                if (heatColorProps.percent <= 0) {\n                  colorShadePercent = 1 - (1 + heatColorProps.percent / 100) * shadeIntensity;\n                } else {\n                  colorShadePercent = (1 - heatColorProps.percent / 100) * shadeIntensity;\n                }\n              }\n            } else {\n              colorShadePercent = 1 - heatColorProps.percent / 100;\n            }\n\n            var color = heatColorProps.color;\n            var utils = new Utils();\n\n            if (w.config.plotOptions.heatmap.enableShades) {\n              if (colorShadePercent < 0) colorShadePercent = 0;\n              color = Utils.hexToRgba(utils.shadeColor(colorShadePercent, heatColorProps.color), w.config.fill.opacity);\n            }\n\n            if (w.config.fill.type === 'image') {\n              var fill = new Fill(this.ctx);\n              color = fill.fillPath({\n                seriesNumber: i,\n                dataPointIndex: j,\n                opacity: w.globals.hasNegs ? heatColorProps.percent < 0 ? 1 - (1 + heatColorProps.percent / 100) : shadeIntensity + heatColorProps.percent / 100 : heatColorProps.percent / 100,\n                patternID: Utils.randomId(),\n                width: w.config.fill.image.width ? w.config.fill.image.width : xDivision,\n                height: w.config.fill.image.height ? w.config.fill.image.height : yDivision\n              });\n            }\n\n            var radius = this.rectRadius;\n            var rect = graphics.drawRect(x1, y1, xDivision, yDivision, radius);\n            rect.attr({\n              cx: x1,\n              cy: y1\n            });\n            rect.node.classList.add('apexcharts-heatmap-rect');\n            elSeries.add(rect);\n            rect.attr({\n              fill: color,\n              i: i,\n              index: i,\n              j: j,\n              val: heatSeries[i][j],\n              'stroke-width': this.strokeWidth,\n              stroke: w.config.plotOptions.heatmap.useFillColorAsStroke ? color : w.globals.stroke.colors[0],\n              color: color\n            });\n            rect.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, rect));\n            rect.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, rect));\n            rect.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, rect));\n\n            if (w.config.chart.animations.enabled && !w.globals.dataChanged) {\n              var speed = 1;\n\n              if (!w.globals.resized) {\n                speed = w.config.chart.animations.speed;\n              }\n\n              this.animateHeatMap(rect, x1, y1, xDivision, yDivision, speed);\n            }\n\n            if (w.globals.dataChanged) {\n              var _speed = 1;\n\n              if (this.dynamicAnim.enabled && w.globals.shouldAnimate) {\n                _speed = this.dynamicAnim.speed;\n                var colorFrom = w.globals.previousPaths[i] && w.globals.previousPaths[i][j] && w.globals.previousPaths[i][j].color;\n                if (!colorFrom) colorFrom = 'rgba(255, 255, 255, 0)';\n                this.animateHeatColor(rect, Utils.isColorHex(colorFrom) ? colorFrom : Utils.rgb2hex(colorFrom), Utils.isColorHex(color) ? color : Utils.rgb2hex(color), _speed);\n              }\n            }\n\n            var dataLabels = this.calculateHeatmapDataLabels({\n              x: x1,\n              y: y1,\n              i: i,\n              j: j,\n              heatColorProps: heatColorProps,\n              series: heatSeries,\n              rectHeight: yDivision,\n              rectWidth: xDivision\n            });\n\n            if (dataLabels !== null) {\n              elSeries.add(dataLabels);\n            }\n\n            x1 = x1 + xDivision;\n          }\n\n          y1 = y1 + yDivision;\n          ret.add(elSeries);\n        } // adjust yaxis labels for heatmap\n\n\n        var yAxisScale = w.globals.yAxisScale[0].result.slice();\n\n        if (w.config.yaxis[0].reversed) {\n          yAxisScale.unshift('');\n        } else {\n          yAxisScale.push('');\n        }\n\n        w.globals.yAxisScale[0].result = yAxisScale;\n        var divisor = w.globals.gridHeight / w.globals.series.length;\n        w.config.yaxis[0].labels.offsetY = -(divisor / 2);\n        return ret;\n      }\n    }, {\n      key: \"checkColorRange\",\n      value: function checkColorRange() {\n        var _this = this;\n\n        var w = this.w;\n        var heatmap = w.config.plotOptions.heatmap;\n\n        if (heatmap.colorScale.ranges.length > 0) {\n          heatmap.colorScale.ranges.map(function (range, index) {\n            if (range.from <= 0) {\n              _this.negRange = true;\n            }\n          });\n        }\n      }\n    }, {\n      key: \"determineHeatColor\",\n      value: function determineHeatColor(i, j) {\n        var w = this.w;\n        var val = w.globals.series[i][j];\n        var heatmap = w.config.plotOptions.heatmap;\n        var seriesNumber = heatmap.colorScale.inverse ? j : i;\n        var color = w.globals.colors[seriesNumber];\n        var foreColor = null;\n        var min = Math.min.apply(Math, _toConsumableArray(w.globals.series[i]));\n        var max = Math.max.apply(Math, _toConsumableArray(w.globals.series[i]));\n\n        if (!heatmap.distributed) {\n          min = w.globals.minY;\n          max = w.globals.maxY;\n        }\n\n        if (typeof heatmap.colorScale.min !== 'undefined') {\n          min = heatmap.colorScale.min < w.globals.minY ? heatmap.colorScale.min : w.globals.minY;\n          max = heatmap.colorScale.max > w.globals.maxY ? heatmap.colorScale.max : w.globals.maxY;\n        }\n\n        var total = Math.abs(max) + Math.abs(min);\n        var percent = 100 * val / (total === 0 ? total - 0.000001 : total);\n\n        if (heatmap.colorScale.ranges.length > 0) {\n          var colorRange = heatmap.colorScale.ranges;\n          colorRange.map(function (range, index) {\n            if (val >= range.from && val <= range.to) {\n              color = range.color;\n              foreColor = range.foreColor ? range.foreColor : null;\n              min = range.from;\n              max = range.to;\n              var rTotal = Math.abs(max) + Math.abs(min);\n              percent = 100 * val / (rTotal === 0 ? rTotal - 0.000001 : rTotal);\n            }\n          });\n        }\n\n        return {\n          color: color,\n          foreColor: foreColor,\n          percent: percent\n        };\n      }\n    }, {\n      key: \"calculateHeatmapDataLabels\",\n      value: function calculateHeatmapDataLabels(_ref) {\n        var x = _ref.x,\n            y = _ref.y,\n            i = _ref.i,\n            j = _ref.j,\n            heatColorProps = _ref.heatColorProps,\n            series = _ref.series,\n            rectHeight = _ref.rectHeight,\n            rectWidth = _ref.rectWidth;\n        var w = this.w; // let graphics = new Graphics(this.ctx)\n\n        var dataLabelsConfig = w.config.dataLabels;\n        var graphics = new Graphics(this.ctx);\n        var dataLabels = new DataLabels(this.ctx);\n        var formatter = dataLabelsConfig.formatter;\n        var elDataLabelsWrap = null;\n\n        if (dataLabelsConfig.enabled) {\n          elDataLabelsWrap = graphics.group({\n            class: 'apexcharts-data-labels'\n          });\n          var offX = dataLabelsConfig.offsetX;\n          var offY = dataLabelsConfig.offsetY;\n          var dataLabelsX = x + rectWidth / 2 + offX;\n          var dataLabelsY = y + rectHeight / 2 + parseFloat(dataLabelsConfig.style.fontSize) / 3 + offY;\n          var text = formatter(w.globals.series[i][j], {\n            seriesIndex: i,\n            dataPointIndex: j,\n            w: w\n          });\n          dataLabels.plotDataLabelsText({\n            x: dataLabelsX,\n            y: dataLabelsY,\n            text: text,\n            i: i,\n            j: j,\n            color: heatColorProps.foreColor,\n            parent: elDataLabelsWrap,\n            dataLabelsConfig: dataLabelsConfig\n          });\n        }\n\n        return elDataLabelsWrap;\n      }\n    }, {\n      key: \"animateHeatMap\",\n      value: function animateHeatMap(el, x, y, width, height, speed) {\n        var animations = new Animations(this.ctx);\n        animations.animateRect(el, {\n          x: x + width / 2,\n          y: y + height / 2,\n          width: 0,\n          height: 0\n        }, {\n          x: x,\n          y: y,\n          width: width,\n          height: height\n        }, speed, function () {\n          animations.animationCompleted(el);\n        });\n      }\n    }, {\n      key: \"animateHeatColor\",\n      value: function animateHeatColor(el, colorFrom, colorTo, speed) {\n        el.attr({\n          fill: colorFrom\n        }).animate(speed).attr({\n          fill: colorTo\n        });\n      }\n    }]);\n\n    return HeatMap;\n  }();\n\n  /**\n   * ApexCharts Radar Class for Spider/Radar Charts.\n   * @module Radar\n   **/\n\n  var Radar = /*#__PURE__*/function () {\n    function Radar(ctx) {\n      _classCallCheck(this, Radar);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.chartType = this.w.config.chart.type;\n      this.initialAnim = this.w.config.chart.animations.enabled;\n      this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled;\n      this.animDur = 0;\n      var w = this.w;\n      this.graphics = new Graphics(this.ctx);\n      this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors;\n      this.defaultSize = w.globals.svgHeight < w.globals.svgWidth ? w.globals.gridHeight + w.globals.goldenPadding * 1.5 : w.globals.gridWidth;\n      this.maxValue = this.w.globals.maxY;\n      this.minValue = this.w.globals.minY;\n      this.polygons = w.config.plotOptions.radar.polygons;\n      var longestXaxisLabel = w.globals.labels.slice().sort(function (a, b) {\n        return b.length - a.length;\n      })[0];\n      var labelWidth = this.graphics.getTextRects(longestXaxisLabel, w.config.xaxis.labels.style.fontSize);\n      this.strokeWidth = w.config.stroke.show ? w.config.stroke.width : 0;\n      this.size = this.defaultSize / 2.1 - this.strokeWidth - w.config.chart.dropShadow.blur;\n\n      if (w.config.xaxis.labels.show) {\n        this.size = this.size - labelWidth.width / 1.75;\n      }\n\n      if (w.config.plotOptions.radar.size !== undefined) {\n        this.size = w.config.plotOptions.radar.size;\n      }\n\n      this.dataRadiusOfPercent = [];\n      this.dataRadius = [];\n      this.angleArr = [];\n      this.yaxisLabelsTextsPos = [];\n    }\n\n    _createClass(Radar, [{\n      key: \"draw\",\n      value: function draw(series) {\n        var _this = this;\n\n        var w = this.w;\n        var fill = new Fill(this.ctx);\n        var allSeries = [];\n        var dataLabels = new DataLabels(this.ctx);\n\n        if (series.length) {\n          this.dataPointsLen = series[w.globals.maxValsInArrayIndex].length;\n        }\n\n        this.disAngle = Math.PI * 2 / this.dataPointsLen;\n        var halfW = w.globals.gridWidth / 2;\n        var halfH = w.globals.gridHeight / 2;\n        var translateX = halfW + w.config.plotOptions.radar.offsetX;\n        var translateY = halfH + w.config.plotOptions.radar.offsetY;\n        var ret = this.graphics.group({\n          class: 'apexcharts-radar-series apexcharts-plot-series',\n          transform: \"translate(\".concat(translateX || 0, \", \").concat(translateY || 0, \")\")\n        });\n        var dataPointsPos = [];\n        var elPointsMain = null;\n        var elDataPointsMain = null;\n        this.yaxisLabels = this.graphics.group({\n          class: 'apexcharts-yaxis'\n        });\n        series.forEach(function (s, i) {\n          var longestSeries = s.length === w.globals.dataPoints; // el to which series will be drawn\n\n          var elSeries = _this.graphics.group().attr({\n            class: \"apexcharts-series\",\n            'data:longestSeries': longestSeries,\n            seriesName: Utils.escapeString(w.globals.seriesNames[i]),\n            rel: i + 1,\n            'data:realIndex': i\n          });\n\n          _this.dataRadiusOfPercent[i] = [];\n          _this.dataRadius[i] = [];\n          _this.angleArr[i] = [];\n          s.forEach(function (dv, j) {\n            var range = Math.abs(_this.maxValue - _this.minValue);\n            dv = dv + Math.abs(_this.minValue);\n            _this.dataRadiusOfPercent[i][j] = dv / range;\n            _this.dataRadius[i][j] = _this.dataRadiusOfPercent[i][j] * _this.size;\n            _this.angleArr[i][j] = j * _this.disAngle;\n          });\n          dataPointsPos = _this.getDataPointsPos(_this.dataRadius[i], _this.angleArr[i]);\n\n          var paths = _this.createPaths(dataPointsPos, {\n            x: 0,\n            y: 0\n          }); // points\n\n\n          elPointsMain = _this.graphics.group({\n            class: 'apexcharts-series-markers-wrap apexcharts-element-hidden'\n          }); // datapoints\n\n          elDataPointsMain = _this.graphics.group({\n            class: \"apexcharts-datalabels\",\n            'data:realIndex': i\n          });\n          w.globals.delayedElements.push({\n            el: elPointsMain.node,\n            index: i\n          });\n          var defaultRenderedPathOptions = {\n            i: i,\n            realIndex: i,\n            animationDelay: i,\n            initialSpeed: w.config.chart.animations.speed,\n            dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,\n            className: \"apexcharts-radar\",\n            shouldClipToGrid: false,\n            bindEventsOnPaths: false,\n            stroke: w.globals.stroke.colors[i],\n            strokeLineCap: w.config.stroke.lineCap\n          };\n          var pathFrom = null;\n\n          if (w.globals.previousPaths.length > 0) {\n            pathFrom = _this.getPreviousPath(i);\n          }\n\n          for (var p = 0; p < paths.linePathsTo.length; p++) {\n            var renderedLinePath = _this.graphics.renderPaths(_objectSpread2({}, defaultRenderedPathOptions, {\n              pathFrom: pathFrom === null ? paths.linePathsFrom[p] : pathFrom,\n              pathTo: paths.linePathsTo[p],\n              strokeWidth: Array.isArray(_this.strokeWidth) ? _this.strokeWidth[i] : _this.strokeWidth,\n              fill: 'none',\n              drawShadow: false\n            }));\n\n            elSeries.add(renderedLinePath);\n            var pathFill = fill.fillPath({\n              seriesNumber: i\n            });\n\n            var renderedAreaPath = _this.graphics.renderPaths(_objectSpread2({}, defaultRenderedPathOptions, {\n              pathFrom: pathFrom === null ? paths.areaPathsFrom[p] : pathFrom,\n              pathTo: paths.areaPathsTo[p],\n              strokeWidth: 0,\n              fill: pathFill,\n              drawShadow: false\n            }));\n\n            if (w.config.chart.dropShadow.enabled) {\n              var filters = new Filters(_this.ctx);\n              var shadow = w.config.chart.dropShadow;\n              filters.dropShadow(renderedAreaPath, Object.assign({}, shadow, {\n                noUserSpaceOnUse: true\n              }), i);\n            }\n\n            elSeries.add(renderedAreaPath);\n          }\n\n          s.forEach(function (sj, j) {\n            var markers = new Markers(_this.ctx);\n            var opts = markers.getMarkerConfig('apexcharts-marker', i, j);\n\n            var point = _this.graphics.drawMarker(dataPointsPos[j].x, dataPointsPos[j].y, opts);\n\n            point.attr('rel', j);\n            point.attr('j', j);\n            point.attr('index', i);\n            point.node.setAttribute('default-marker-size', opts.pSize);\n\n            var elPointsWrap = _this.graphics.group({\n              class: 'apexcharts-series-markers'\n            });\n\n            if (elPointsWrap) {\n              elPointsWrap.add(point);\n            }\n\n            elPointsMain.add(elPointsWrap);\n            elSeries.add(elPointsMain);\n            var dataLabelsConfig = w.config.dataLabels;\n\n            if (dataLabelsConfig.enabled) {\n              var text = dataLabelsConfig.formatter(w.globals.series[i][j], {\n                seriesIndex: i,\n                dataPointIndex: j,\n                w: w\n              });\n              dataLabels.plotDataLabelsText({\n                x: dataPointsPos[j].x,\n                y: dataPointsPos[j].y,\n                text: text,\n                textAnchor: 'middle',\n                i: i,\n                j: i,\n                parent: elDataPointsMain,\n                offsetCorrection: false,\n                dataLabelsConfig: _objectSpread2({}, dataLabelsConfig)\n              });\n            }\n\n            elSeries.add(elDataPointsMain);\n          });\n          allSeries.push(elSeries);\n        });\n        this.drawPolygons({\n          parent: ret\n        });\n\n        if (w.config.xaxis.labels.show) {\n          var xaxisTexts = this.drawXAxisTexts();\n          ret.add(xaxisTexts);\n        }\n\n        ret.add(this.yaxisLabels);\n        allSeries.forEach(function (elS) {\n          ret.add(elS);\n        });\n        return ret;\n      }\n    }, {\n      key: \"drawPolygons\",\n      value: function drawPolygons(opts) {\n        var _this2 = this;\n\n        var w = this.w;\n        var parent = opts.parent;\n        var yaxisTexts = w.globals.yAxisScale[0].result.reverse();\n        var layers = yaxisTexts.length;\n        var radiusSizes = [];\n        var layerDis = this.size / (layers - 1);\n\n        for (var i = 0; i < layers; i++) {\n          radiusSizes[i] = layerDis * i;\n        }\n\n        radiusSizes.reverse();\n        var polygonStrings = [];\n        var lines = [];\n        radiusSizes.forEach(function (radiusSize, r) {\n          var polygon = _this2.getPolygonPos(radiusSize);\n\n          var string = '';\n          polygon.forEach(function (p, i) {\n            if (r === 0) {\n              var line = _this2.graphics.drawLine(p.x, p.y, 0, 0, Array.isArray(_this2.polygons.connectorColors) ? _this2.polygons.connectorColors[i] : _this2.polygons.connectorColors);\n\n              lines.push(line);\n            }\n\n            if (i === 0) {\n              _this2.yaxisLabelsTextsPos.push({\n                x: p.x,\n                y: p.y\n              });\n            }\n\n            string += p.x + ',' + p.y + ' ';\n          });\n          polygonStrings.push(string);\n        });\n        polygonStrings.forEach(function (p, i) {\n          var strokeColors = _this2.polygons.strokeColors;\n\n          var polygon = _this2.graphics.drawPolygon(p, Array.isArray(strokeColors) ? strokeColors[i] : strokeColors, w.globals.radarPolygons.fill.colors[i]);\n\n          parent.add(polygon);\n        });\n        lines.forEach(function (l) {\n          parent.add(l);\n        });\n\n        if (w.config.yaxis[0].show) {\n          this.yaxisLabelsTextsPos.forEach(function (p, i) {\n            var yText = _this2.drawYAxisTexts(p.x, p.y, i, yaxisTexts[i]);\n\n            _this2.yaxisLabels.add(yText);\n          });\n        }\n      }\n    }, {\n      key: \"drawYAxisTexts\",\n      value: function drawYAxisTexts(x, y, i, text) {\n        var w = this.w;\n        var yaxisConfig = w.config.yaxis[0];\n        var formatter = w.globals.yLabelFormatters[0];\n        var yaxisLabel = this.graphics.drawText({\n          x: x + yaxisConfig.labels.offsetX,\n          y: y + yaxisConfig.labels.offsetY,\n          text: formatter(text, i),\n          textAnchor: 'middle',\n          fontSize: yaxisConfig.labels.style.fontSize,\n          fontFamily: yaxisConfig.labels.style.fontFamily,\n          foreColor: yaxisConfig.labels.style.color\n        });\n        return yaxisLabel;\n      }\n    }, {\n      key: \"drawXAxisTexts\",\n      value: function drawXAxisTexts() {\n        var _this3 = this;\n\n        var w = this.w;\n        var xaxisLabelsConfig = w.config.xaxis.labels;\n        var elXAxisWrap = this.graphics.group({\n          class: 'apexcharts-xaxis'\n        });\n        var polygonPos = this.getPolygonPos(this.size);\n        w.globals.labels.forEach(function (label, i) {\n          var formatter = w.config.xaxis.labels.formatter;\n          var dataLabels = new DataLabels(_this3.ctx);\n\n          if (polygonPos[i]) {\n            var textPos = _this3.getTextPos(polygonPos[i], _this3.size);\n\n            var text = formatter(label, {\n              seriesIndex: -1,\n              dataPointIndex: i,\n              w: w\n            });\n            dataLabels.plotDataLabelsText({\n              x: textPos.newX,\n              y: textPos.newY,\n              text: text,\n              textAnchor: textPos.textAnchor,\n              i: i,\n              j: i,\n              parent: elXAxisWrap,\n              color: xaxisLabelsConfig.style.colors[i] ? xaxisLabelsConfig.style.colors[i] : '#a8a8a8',\n              dataLabelsConfig: _objectSpread2({\n                textAnchor: textPos.textAnchor,\n                dropShadow: {\n                  enabled: false\n                }\n              }, xaxisLabelsConfig),\n              offsetCorrection: false\n            });\n          }\n        });\n        return elXAxisWrap;\n      }\n    }, {\n      key: \"createPaths\",\n      value: function createPaths(pos, origin) {\n        var _this4 = this;\n\n        var linePathsTo = [];\n        var linePathsFrom = [];\n        var areaPathsTo = [];\n        var areaPathsFrom = [];\n\n        if (pos.length) {\n          linePathsFrom = [this.graphics.move(origin.x, origin.y)];\n          areaPathsFrom = [this.graphics.move(origin.x, origin.y)];\n          var linePathTo = this.graphics.move(pos[0].x, pos[0].y);\n          var areaPathTo = this.graphics.move(pos[0].x, pos[0].y);\n          pos.forEach(function (p, i) {\n            linePathTo += _this4.graphics.line(p.x, p.y);\n            areaPathTo += _this4.graphics.line(p.x, p.y);\n\n            if (i === pos.length - 1) {\n              linePathTo += 'Z';\n              areaPathTo += 'Z';\n            }\n          });\n          linePathsTo.push(linePathTo);\n          areaPathsTo.push(areaPathTo);\n        }\n\n        return {\n          linePathsFrom: linePathsFrom,\n          linePathsTo: linePathsTo,\n          areaPathsFrom: areaPathsFrom,\n          areaPathsTo: areaPathsTo\n        };\n      }\n    }, {\n      key: \"getTextPos\",\n      value: function getTextPos(pos, polygonSize) {\n        var limit = 10;\n        var textAnchor = 'middle';\n        var newX = pos.x;\n        var newY = pos.y;\n\n        if (Math.abs(pos.x) >= limit) {\n          if (pos.x > 0) {\n            textAnchor = 'start';\n            newX += 10;\n          } else if (pos.x < 0) {\n            textAnchor = 'end';\n            newX -= 10;\n          }\n        } else {\n          textAnchor = 'middle';\n        }\n\n        if (Math.abs(pos.y) >= polygonSize - limit) {\n          if (pos.y < 0) {\n            newY -= 10;\n          } else if (pos.y > 0) {\n            newY += 10;\n          }\n        }\n\n        return {\n          textAnchor: textAnchor,\n          newX: newX,\n          newY: newY\n        };\n      }\n    }, {\n      key: \"getPreviousPath\",\n      value: function getPreviousPath(realIndex) {\n        var w = this.w;\n        var pathFrom = null;\n\n        for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {\n          var gpp = w.globals.previousPaths[pp];\n\n          if (gpp.paths.length > 0 && parseInt(gpp.realIndex, 10) === parseInt(realIndex, 10)) {\n            if (typeof w.globals.previousPaths[pp].paths[0] !== 'undefined') {\n              pathFrom = w.globals.previousPaths[pp].paths[0].d;\n            }\n          }\n        }\n\n        return pathFrom;\n      }\n    }, {\n      key: \"getDataPointsPos\",\n      value: function getDataPointsPos(dataRadiusArr, angleArr) {\n        var dataPointsLen = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.dataPointsLen;\n        dataRadiusArr = dataRadiusArr || [];\n        angleArr = angleArr || [];\n        var dataPointsPosArray = [];\n\n        for (var j = 0; j < dataPointsLen; j++) {\n          var curPointPos = {};\n          curPointPos.x = dataRadiusArr[j] * Math.sin(angleArr[j]);\n          curPointPos.y = -dataRadiusArr[j] * Math.cos(angleArr[j]);\n          dataPointsPosArray.push(curPointPos);\n        }\n\n        return dataPointsPosArray;\n      }\n    }, {\n      key: \"getPolygonPos\",\n      value: function getPolygonPos(size) {\n        var dotsArray = [];\n        var angle = Math.PI * 2 / this.dataPointsLen;\n\n        for (var i = 0; i < this.dataPointsLen; i++) {\n          var curPos = {};\n          curPos.x = size * Math.sin(i * angle);\n          curPos.y = -size * Math.cos(i * angle);\n          dotsArray.push(curPos);\n        }\n\n        return dotsArray;\n      }\n    }]);\n\n    return Radar;\n  }();\n\n  /**\n   * ApexCharts Radial Class for drawing Circle / Semi Circle Charts.\n   * @module Radial\n   **/\n\n  var Radial = /*#__PURE__*/function (_Pie) {\n    _inherits(Radial, _Pie);\n\n    function Radial(ctx) {\n      var _this;\n\n      _classCallCheck(this, Radial);\n\n      _this = _possibleConstructorReturn(this, _getPrototypeOf(Radial).call(this, ctx));\n      _this.ctx = ctx;\n      _this.w = ctx.w;\n      _this.animBeginArr = [0];\n      _this.animDur = 0;\n      var w = _this.w;\n      _this.startAngle = w.config.plotOptions.radialBar.startAngle;\n      _this.endAngle = w.config.plotOptions.radialBar.endAngle;\n      _this.totalAngle = Math.abs(w.config.plotOptions.radialBar.endAngle - w.config.plotOptions.radialBar.startAngle);\n      _this.trackStartAngle = w.config.plotOptions.radialBar.track.startAngle;\n      _this.trackEndAngle = w.config.plotOptions.radialBar.track.endAngle;\n      _this.radialDataLabels = w.config.plotOptions.radialBar.dataLabels;\n      if (!_this.trackStartAngle) _this.trackStartAngle = _this.startAngle;\n      if (!_this.trackEndAngle) _this.trackEndAngle = _this.endAngle;\n      if (_this.endAngle === 360) _this.endAngle = 359.99;\n      _this.fullAngle = 360 - w.config.plotOptions.radialBar.endAngle - w.config.plotOptions.radialBar.startAngle;\n      _this.margin = parseInt(w.config.plotOptions.radialBar.track.margin, 10);\n      return _this;\n    }\n\n    _createClass(Radial, [{\n      key: \"draw\",\n      value: function draw(series) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var ret = graphics.group({\n          class: 'apexcharts-radialbar'\n        });\n        if (w.globals.noData) return ret;\n        var elSeries = graphics.group();\n        var centerY = this.defaultSize / 2;\n        var centerX = w.globals.gridWidth / 2;\n        var size = this.defaultSize / 2.05;\n\n        if (!w.config.chart.sparkline.enabled) {\n          size = size - w.config.stroke.width - w.config.chart.dropShadow.blur;\n        }\n\n        var colorArr = w.globals.fill.colors;\n\n        if (w.config.plotOptions.radialBar.track.show) {\n          var elTracks = this.drawTracks({\n            size: size,\n            centerX: centerX,\n            centerY: centerY,\n            colorArr: colorArr,\n            series: series\n          });\n          elSeries.add(elTracks);\n        }\n\n        var elG = this.drawArcs({\n          size: size,\n          centerX: centerX,\n          centerY: centerY,\n          colorArr: colorArr,\n          series: series\n        });\n        var totalAngle = 360;\n\n        if (w.config.plotOptions.radialBar.startAngle < 0) {\n          totalAngle = this.totalAngle;\n        }\n\n        var angleRatio = (360 - totalAngle) / 360;\n        w.globals.radialSize = size - size * angleRatio;\n\n        if (this.radialDataLabels.value.show) {\n          var offset = Math.max(this.radialDataLabels.value.offsetY, this.radialDataLabels.name.offsetY);\n          w.globals.radialSize += offset * angleRatio;\n        }\n\n        elSeries.add(elG.g);\n\n        if (w.config.plotOptions.radialBar.hollow.position === 'front') {\n          elG.g.add(elG.elHollow);\n\n          if (elG.dataLabels) {\n            elG.g.add(elG.dataLabels);\n          }\n        }\n\n        ret.add(elSeries);\n        return ret;\n      }\n    }, {\n      key: \"drawTracks\",\n      value: function drawTracks(opts) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var g = graphics.group({\n          class: 'apexcharts-tracks'\n        });\n        var filters = new Filters(this.ctx);\n        var fill = new Fill(this.ctx);\n        var strokeWidth = this.getStrokeWidth(opts);\n        opts.size = opts.size - strokeWidth / 2;\n\n        for (var i = 0; i < opts.series.length; i++) {\n          var elRadialBarTrack = graphics.group({\n            class: 'apexcharts-radialbar-track apexcharts-track'\n          });\n          g.add(elRadialBarTrack);\n          elRadialBarTrack.attr({\n            rel: i + 1\n          });\n          opts.size = opts.size - strokeWidth - this.margin;\n          var trackConfig = w.config.plotOptions.radialBar.track;\n          var pathFill = fill.fillPath({\n            seriesNumber: 0,\n            size: opts.size,\n            fillColors: Array.isArray(trackConfig.background) ? trackConfig.background[i] : trackConfig.background,\n            solid: true\n          });\n          var startAngle = this.trackStartAngle;\n          var endAngle = this.trackEndAngle;\n          if (Math.abs(endAngle) + Math.abs(startAngle) >= 360) endAngle = 360 - Math.abs(this.startAngle) - 0.1;\n          var elPath = graphics.drawPath({\n            d: '',\n            stroke: pathFill,\n            strokeWidth: strokeWidth * parseInt(trackConfig.strokeWidth, 10) / 100,\n            fill: 'none',\n            strokeOpacity: trackConfig.opacity,\n            classes: 'apexcharts-radialbar-area'\n          });\n\n          if (trackConfig.dropShadow.enabled) {\n            var shadow = trackConfig.dropShadow;\n            filters.dropShadow(elPath, shadow);\n          }\n\n          elRadialBarTrack.add(elPath);\n          elPath.attr('id', 'apexcharts-radialbarTrack-' + i);\n          this.animatePaths(elPath, {\n            centerX: opts.centerX,\n            centerY: opts.centerY,\n            endAngle: endAngle,\n            startAngle: startAngle,\n            size: opts.size,\n            i: i,\n            totalItems: 2,\n            animBeginArr: 0,\n            dur: 0,\n            isTrack: true,\n            easing: w.globals.easing\n          });\n        }\n\n        return g;\n      }\n    }, {\n      key: \"drawArcs\",\n      value: function drawArcs(opts) {\n        var w = this.w; // size, donutSize, centerX, centerY, colorArr, lineColorArr, sectorAngleArr, series\n\n        var graphics = new Graphics(this.ctx);\n        var fill = new Fill(this.ctx);\n        var filters = new Filters(this.ctx);\n        var g = graphics.group();\n        var strokeWidth = this.getStrokeWidth(opts);\n        opts.size = opts.size - strokeWidth / 2;\n        var hollowFillID = w.config.plotOptions.radialBar.hollow.background;\n        var hollowSize = opts.size - strokeWidth * opts.series.length - this.margin * opts.series.length - strokeWidth * parseInt(w.config.plotOptions.radialBar.track.strokeWidth, 10) / 100 / 2;\n        var hollowRadius = hollowSize - w.config.plotOptions.radialBar.hollow.margin;\n\n        if (w.config.plotOptions.radialBar.hollow.image !== undefined) {\n          hollowFillID = this.drawHollowImage(opts, g, hollowSize, hollowFillID);\n        }\n\n        var elHollow = this.drawHollow({\n          size: hollowRadius,\n          centerX: opts.centerX,\n          centerY: opts.centerY,\n          fill: hollowFillID ? hollowFillID : 'transparent'\n        });\n\n        if (w.config.plotOptions.radialBar.hollow.dropShadow.enabled) {\n          var shadow = w.config.plotOptions.radialBar.hollow.dropShadow;\n          filters.dropShadow(elHollow, shadow);\n        }\n\n        var shown = 1;\n\n        if (!this.radialDataLabels.total.show && w.globals.series.length > 1) {\n          shown = 0;\n        }\n\n        var dataLabels = null;\n\n        if (this.radialDataLabels.show) {\n          dataLabels = this.renderInnerDataLabels(this.radialDataLabels, {\n            hollowSize: hollowSize,\n            centerX: opts.centerX,\n            centerY: opts.centerY,\n            opacity: shown\n          });\n        }\n\n        if (w.config.plotOptions.radialBar.hollow.position === 'back') {\n          g.add(elHollow);\n\n          if (dataLabels) {\n            g.add(dataLabels);\n          }\n        }\n\n        var reverseLoop = false;\n\n        if (w.config.plotOptions.radialBar.inverseOrder) {\n          reverseLoop = true;\n        }\n\n        for (var i = reverseLoop ? opts.series.length - 1 : 0; reverseLoop ? i >= 0 : i < opts.series.length; reverseLoop ? i-- : i++) {\n          var elRadialBarArc = graphics.group({\n            class: \"apexcharts-series apexcharts-radial-series\",\n            seriesName: Utils.escapeString(w.globals.seriesNames[i])\n          });\n          g.add(elRadialBarArc);\n          elRadialBarArc.attr({\n            rel: i + 1,\n            'data:realIndex': i\n          });\n          this.ctx.series.addCollapsedClassToSeries(elRadialBarArc, i);\n          opts.size = opts.size - strokeWidth - this.margin;\n          var pathFill = fill.fillPath({\n            seriesNumber: i,\n            size: opts.size,\n            value: opts.series[i]\n          });\n          var startAngle = this.startAngle;\n          var prevStartAngle = void 0; // if data exceeds 100, make it 100\n\n          var dataValue = Utils.negToZero(opts.series[i] > 100 ? 100 : opts.series[i]) / 100;\n          var endAngle = Math.round(this.totalAngle * dataValue) + this.startAngle;\n          var prevEndAngle = void 0;\n\n          if (w.globals.dataChanged) {\n            prevStartAngle = this.startAngle;\n            prevEndAngle = Math.round(this.totalAngle * Utils.negToZero(w.globals.previousPaths[i]) / 100) + prevStartAngle;\n          }\n\n          var currFullAngle = Math.abs(endAngle) + Math.abs(startAngle);\n\n          if (currFullAngle >= 360) {\n            endAngle = endAngle - 0.01;\n          }\n\n          var prevFullAngle = Math.abs(prevEndAngle) + Math.abs(prevStartAngle);\n\n          if (prevFullAngle >= 360) {\n            prevEndAngle = prevEndAngle - 0.01;\n          }\n\n          var angle = endAngle - startAngle;\n          var dashArray = Array.isArray(w.config.stroke.dashArray) ? w.config.stroke.dashArray[i] : w.config.stroke.dashArray;\n          var elPath = graphics.drawPath({\n            d: '',\n            stroke: pathFill,\n            strokeWidth: strokeWidth,\n            fill: 'none',\n            fillOpacity: w.config.fill.opacity,\n            classes: 'apexcharts-radialbar-area apexcharts-radialbar-slice-' + i,\n            strokeDashArray: dashArray\n          });\n          Graphics.setAttrs(elPath.node, {\n            'data:angle': angle,\n            'data:value': opts.series[i]\n          });\n\n          if (w.config.chart.dropShadow.enabled) {\n            var _shadow = w.config.chart.dropShadow;\n            filters.dropShadow(elPath, _shadow, i);\n          }\n\n          this.addListeners(elPath, this.radialDataLabels);\n          elRadialBarArc.add(elPath);\n          elPath.attr({\n            index: 0,\n            j: i\n          });\n          var dur = 0;\n\n          if (this.initialAnim && !w.globals.resized && !w.globals.dataChanged) {\n            dur = (endAngle - startAngle) / 360 * w.config.chart.animations.speed;\n            this.animDur = dur / (opts.series.length * 1.2) + this.animDur;\n            this.animBeginArr.push(this.animDur);\n          }\n\n          if (w.globals.dataChanged) {\n            dur = (endAngle - startAngle) / 360 * w.config.chart.animations.dynamicAnimation.speed;\n            this.animDur = dur / (opts.series.length * 1.2) + this.animDur;\n            this.animBeginArr.push(this.animDur);\n          }\n\n          this.animatePaths(elPath, {\n            centerX: opts.centerX,\n            centerY: opts.centerY,\n            endAngle: endAngle,\n            startAngle: startAngle,\n            prevEndAngle: prevEndAngle,\n            prevStartAngle: prevStartAngle,\n            size: opts.size,\n            i: i,\n            totalItems: 2,\n            animBeginArr: this.animBeginArr,\n            dur: dur,\n            shouldSetPrevPaths: true,\n            easing: w.globals.easing\n          });\n        }\n\n        return {\n          g: g,\n          elHollow: elHollow,\n          dataLabels: dataLabels\n        };\n      }\n    }, {\n      key: \"drawHollow\",\n      value: function drawHollow(opts) {\n        var graphics = new Graphics(this.ctx);\n        var circle = graphics.drawCircle(opts.size * 2);\n        circle.attr({\n          class: 'apexcharts-radialbar-hollow',\n          cx: opts.centerX,\n          cy: opts.centerY,\n          r: opts.size,\n          fill: opts.fill\n        });\n        return circle;\n      }\n    }, {\n      key: \"drawHollowImage\",\n      value: function drawHollowImage(opts, g, hollowSize, hollowFillID) {\n        var w = this.w;\n        var fill = new Fill(this.ctx);\n        var randID = Utils.randomId();\n        var hollowFillImg = w.config.plotOptions.radialBar.hollow.image;\n\n        if (w.config.plotOptions.radialBar.hollow.imageClipped) {\n          fill.clippedImgArea({\n            width: hollowSize,\n            height: hollowSize,\n            image: hollowFillImg,\n            patternID: \"pattern\".concat(w.globals.cuid).concat(randID)\n          });\n          hollowFillID = \"url(#pattern\".concat(w.globals.cuid).concat(randID, \")\");\n        } else {\n          var imgWidth = w.config.plotOptions.radialBar.hollow.imageWidth;\n          var imgHeight = w.config.plotOptions.radialBar.hollow.imageHeight;\n\n          if (imgWidth === undefined && imgHeight === undefined) {\n            var image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) {\n              this.move(opts.centerX - loader.width / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - loader.height / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY);\n            });\n            g.add(image);\n          } else {\n            var _image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) {\n              this.move(opts.centerX - imgWidth / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - imgHeight / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY);\n              this.size(imgWidth, imgHeight);\n            });\n\n            g.add(_image);\n          }\n        }\n\n        return hollowFillID;\n      }\n    }, {\n      key: \"getStrokeWidth\",\n      value: function getStrokeWidth(opts) {\n        var w = this.w;\n        return opts.size * (100 - parseInt(w.config.plotOptions.radialBar.hollow.size, 10)) / 100 / (opts.series.length + 1) - this.margin;\n      }\n    }]);\n\n    return Radial;\n  }(Pie);\n\n  /**\n   * ApexCharts RangeBar Class responsible for drawing Range/Timeline Bars.\n   *\n   * @module RangeBar\n   **/\n\n  var RangeBar = /*#__PURE__*/function (_Bar) {\n    _inherits(RangeBar, _Bar);\n\n    function RangeBar() {\n      _classCallCheck(this, RangeBar);\n\n      return _possibleConstructorReturn(this, _getPrototypeOf(RangeBar).apply(this, arguments));\n    }\n\n    _createClass(RangeBar, [{\n      key: \"draw\",\n      value: function draw(series, seriesIndex) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        this.rangeBarOptions = this.w.config.plotOptions.rangeBar;\n        this.series = series;\n        this.seriesRangeStart = w.globals.seriesRangeStart;\n        this.seriesRangeEnd = w.globals.seriesRangeEnd;\n        this.barHelpers.initVariables(series);\n        var ret = graphics.group({\n          class: 'apexcharts-rangebar-series apexcharts-plot-series'\n        });\n\n        for (var i = 0; i < series.length; i++) {\n          var x = void 0,\n              y = void 0,\n              xDivision = void 0,\n              // xDivision is the GRIDWIDTH divided by number of datapoints (columns)\n          yDivision = void 0,\n              // yDivision is the GRIDHEIGHT divided by number of datapoints (bars)\n          zeroH = void 0,\n              // zeroH is the baseline where 0 meets y axis\n          zeroW = void 0; // zeroW is the baseline where 0 meets x axis\n\n          var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn\n\n          var elSeries = graphics.group({\n            class: \"apexcharts-series\",\n            seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]),\n            rel: i + 1,\n            'data:realIndex': realIndex\n          });\n\n          if (series[i].length > 0) {\n            this.visibleI = this.visibleI + 1;\n          }\n\n          var barHeight = 0;\n          var barWidth = 0;\n\n          if (this.yRatio.length > 1) {\n            this.yaxisIndex = realIndex;\n          }\n\n          var initPositions = this.barHelpers.initialPositions();\n          y = initPositions.y;\n          zeroW = initPositions.zeroW;\n          x = initPositions.x;\n          barWidth = initPositions.barWidth;\n          xDivision = initPositions.xDivision;\n          zeroH = initPositions.zeroH; // eldatalabels\n\n          var elDataLabelsWrap = graphics.group({\n            class: 'apexcharts-datalabels',\n            'data:realIndex': realIndex\n          });\n\n          for (var j = 0; j < w.globals.dataPoints; j++) {\n            var strokeWidth = this.barHelpers.getStrokeWidth(i, j, realIndex);\n            var y1 = this.seriesRangeStart[i][j];\n            var y2 = this.seriesRangeEnd[i][j];\n            var paths = null;\n            var barYPosition = null;\n            var params = {\n              x: x,\n              y: y,\n              strokeWidth: strokeWidth,\n              elSeries: elSeries\n            };\n            yDivision = initPositions.yDivision;\n            barHeight = initPositions.barHeight;\n\n            if (this.isHorizontal) {\n              barYPosition = y + barHeight * this.visibleI;\n              var srty = (yDivision - barHeight * this.seriesLen) / 2;\n\n              if (typeof w.config.series[i].data[j] === 'undefined') {\n                // no data exists for further indexes, hence we need to get out the innr loop.\n                // As we are iterating over total datapoints, there is a possiblity the series might not have data for j index\n                break;\n              }\n\n              if (this.isTimelineBar && w.config.series[i].data[j].x) {\n                var positions = this.detectOverlappingBars({\n                  i: i,\n                  j: j,\n                  barYPosition: barYPosition,\n                  srty: srty,\n                  barHeight: barHeight,\n                  yDivision: yDivision,\n                  initPositions: initPositions\n                });\n                barHeight = positions.barHeight;\n                barYPosition = positions.barYPosition;\n              }\n\n              paths = this.drawRangeBarPaths(_objectSpread2({\n                indexes: {\n                  i: i,\n                  j: j,\n                  realIndex: realIndex\n                },\n                barHeight: barHeight,\n                barYPosition: barYPosition,\n                zeroW: zeroW,\n                yDivision: yDivision,\n                y1: y1,\n                y2: y2\n              }, params));\n              barWidth = paths.barWidth;\n            } else {\n              paths = this.drawRangeColumnPaths(_objectSpread2({\n                indexes: {\n                  i: i,\n                  j: j,\n                  realIndex: realIndex\n                },\n                zeroH: zeroH,\n                barWidth: barWidth,\n                xDivision: xDivision\n              }, params));\n              barHeight = paths.barHeight;\n            }\n\n            y = paths.y;\n            x = paths.x;\n            var pathFill = this.barHelpers.getPathFillColor(series, i, j, realIndex);\n            var lineFill = w.globals.stroke.colors[realIndex];\n            this.renderSeries({\n              realIndex: realIndex,\n              pathFill: pathFill,\n              lineFill: lineFill,\n              j: j,\n              i: i,\n              x: x,\n              y: y,\n              y1: y1,\n              y2: y2,\n              pathFrom: paths.pathFrom,\n              pathTo: paths.pathTo,\n              strokeWidth: strokeWidth,\n              elSeries: elSeries,\n              series: series,\n              barHeight: barHeight,\n              barYPosition: barYPosition,\n              barWidth: barWidth,\n              elDataLabelsWrap: elDataLabelsWrap,\n              visibleSeries: this.visibleI,\n              type: 'rangebar'\n            });\n          }\n\n          ret.add(elSeries);\n        }\n\n        return ret;\n      }\n    }, {\n      key: \"detectOverlappingBars\",\n      value: function detectOverlappingBars(_ref) {\n        var i = _ref.i,\n            j = _ref.j,\n            barYPosition = _ref.barYPosition,\n            srty = _ref.srty,\n            barHeight = _ref.barHeight,\n            yDivision = _ref.yDivision,\n            initPositions = _ref.initPositions;\n        var w = this.w;\n        var overlaps = [];\n        var rangeName = w.config.series[i].data[j].rangeName;\n        var labelX = w.config.series[i].data[j].x;\n        var rowIndex = w.globals.labels.indexOf(labelX);\n        var overlappedIndex = w.globals.seriesRangeBarTimeline[i].findIndex(function (tx) {\n          return tx.x === labelX && tx.overlaps.length > 0;\n        });\n        barYPosition = srty + barHeight * this.visibleI + yDivision * rowIndex;\n\n        if (overlappedIndex > -1) {\n          overlaps = w.globals.seriesRangeBarTimeline[i][overlappedIndex].overlaps;\n\n          if (overlaps.indexOf(rangeName) > -1) {\n            barHeight = initPositions.barHeight / overlaps.length;\n            barYPosition = barHeight * this.visibleI + yDivision * (100 - parseInt(this.barOptions.barHeight, 10)) / 100 / 2 + barHeight * (this.visibleI + overlaps.indexOf(rangeName)) + yDivision * rowIndex;\n          }\n        }\n\n        return {\n          barYPosition: barYPosition,\n          barHeight: barHeight\n        };\n      }\n    }, {\n      key: \"drawRangeColumnPaths\",\n      value: function drawRangeColumnPaths(_ref2) {\n        var indexes = _ref2.indexes,\n            x = _ref2.x,\n            strokeWidth = _ref2.strokeWidth,\n            xDivision = _ref2.xDivision,\n            barWidth = _ref2.barWidth,\n            zeroH = _ref2.zeroH;\n        var w = this.w;\n        var i = indexes.i;\n        var j = indexes.j;\n        var yRatio = this.yRatio[this.yaxisIndex];\n        var realIndex = indexes.realIndex;\n        var range = this.getRangeValue(realIndex, j);\n        var y1 = Math.min(range.start, range.end);\n        var y2 = Math.max(range.start, range.end);\n\n        if (w.globals.isXNumeric) {\n          x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2;\n        }\n\n        var barXPosition = x + barWidth * this.visibleI;\n\n        if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) {\n          y1 = zeroH;\n        } else {\n          y1 = zeroH - y1 / yRatio;\n          y2 = zeroH - y2 / yRatio;\n        }\n\n        var barHeight = Math.abs(y2 - y1);\n        var paths = this.barHelpers.getColumnPaths({\n          barXPosition: barXPosition,\n          barWidth: barWidth,\n          y1: y1,\n          y2: y2,\n          strokeWidth: this.strokeWidth,\n          series: this.seriesRangeEnd,\n          i: realIndex,\n          j: j,\n          w: w\n        });\n\n        if (!w.globals.isXNumeric) {\n          x = x + xDivision;\n        }\n\n        return {\n          pathTo: paths.pathTo,\n          pathFrom: paths.pathFrom,\n          barHeight: barHeight,\n          x: x,\n          y: y2,\n          barXPosition: barXPosition\n        };\n      }\n    }, {\n      key: \"drawRangeBarPaths\",\n      value: function drawRangeBarPaths(_ref3) {\n        var indexes = _ref3.indexes,\n            y = _ref3.y,\n            y1 = _ref3.y1,\n            y2 = _ref3.y2,\n            yDivision = _ref3.yDivision,\n            barHeight = _ref3.barHeight,\n            barYPosition = _ref3.barYPosition,\n            zeroW = _ref3.zeroW;\n        var w = this.w;\n        var x1 = zeroW + y1 / this.invertedYRatio;\n        var x2 = zeroW + y2 / this.invertedYRatio;\n        var barWidth = Math.abs(x2 - x1);\n        var paths = this.barHelpers.getBarpaths({\n          barYPosition: barYPosition,\n          barHeight: barHeight,\n          x1: x1,\n          x2: x2,\n          strokeWidth: this.strokeWidth,\n          series: this.seriesRangeEnd,\n          i: indexes.realIndex,\n          j: indexes.j,\n          w: w\n        });\n\n        if (!w.globals.isXNumeric) {\n          y = y + yDivision;\n        }\n\n        return {\n          pathTo: paths.pathTo,\n          pathFrom: paths.pathFrom,\n          barWidth: barWidth,\n          x: x2,\n          y: y\n        };\n      }\n    }, {\n      key: \"getRangeValue\",\n      value: function getRangeValue(i, j) {\n        var w = this.w;\n        return {\n          start: w.globals.seriesRangeStart[i][j],\n          end: w.globals.seriesRangeEnd[i][j]\n        };\n      }\n    }]);\n\n    return RangeBar;\n  }(Bar);\n\n  var Helpers$4 = /*#__PURE__*/function () {\n    function Helpers(lineCtx) {\n      _classCallCheck(this, Helpers);\n\n      this.w = lineCtx.w;\n      this.lineCtx = lineCtx;\n    }\n\n    _createClass(Helpers, [{\n      key: \"sameValueSeriesFix\",\n      value: function sameValueSeriesFix(i, series) {\n        var w = this.w;\n\n        if (w.config.chart.type === 'line' && (w.config.fill.type === 'gradient' || w.config.fill.type[i] === 'gradient')) {\n          var coreUtils = new CoreUtils(this.lineCtx.ctx, w); // a small adjustment to allow gradient line to draw correctly for all same values\n\n          /* #fix https://github.com/apexcharts/apexcharts.js/issues/358 */\n\n          if (coreUtils.seriesHaveSameValues(i)) {\n            var gSeries = series[i].slice();\n            gSeries[gSeries.length - 1] = gSeries[gSeries.length - 1] + 0.000001;\n            series[i] = gSeries;\n          }\n        }\n\n        return series;\n      }\n    }, {\n      key: \"calculatePoints\",\n      value: function calculatePoints(_ref) {\n        var series = _ref.series,\n            realIndex = _ref.realIndex,\n            x = _ref.x,\n            y = _ref.y,\n            i = _ref.i,\n            j = _ref.j,\n            prevY = _ref.prevY;\n        var w = this.w;\n        var ptX = [];\n        var ptY = [];\n\n        if (j === 0) {\n          var xPT1st = this.lineCtx.categoryAxisCorrection + w.config.markers.offsetX; // the first point for line series\n          // we need to check whether it's not a time series, because a time series may\n          // start from the middle of the x axis\n\n          if (w.globals.isXNumeric) {\n            xPT1st = (w.globals.seriesX[realIndex][0] - w.globals.minX) / this.lineCtx.xRatio + w.config.markers.offsetX;\n          } // push 2 points for the first data values\n\n\n          ptX.push(xPT1st);\n          ptY.push(Utils.isNumber(series[i][0]) ? prevY + w.config.markers.offsetY : null);\n          ptX.push(x + w.config.markers.offsetX);\n          ptY.push(Utils.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null);\n        } else {\n          ptX.push(x + w.config.markers.offsetX);\n          ptY.push(Utils.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null);\n        }\n\n        var pointsPos = {\n          x: ptX,\n          y: ptY\n        };\n        return pointsPos;\n      }\n    }, {\n      key: \"checkPreviousPaths\",\n      value: function checkPreviousPaths(_ref2) {\n        var pathFromLine = _ref2.pathFromLine,\n            pathFromArea = _ref2.pathFromArea,\n            realIndex = _ref2.realIndex;\n        var w = this.w;\n\n        for (var pp = 0; pp < w.globals.previousPaths.length; pp++) {\n          var gpp = w.globals.previousPaths[pp];\n\n          if ((gpp.type === 'line' || gpp.type === 'area') && gpp.paths.length > 0 && parseInt(gpp.realIndex, 10) === parseInt(realIndex, 10)) {\n            if (gpp.type === 'line') {\n              this.lineCtx.appendPathFrom = false;\n              pathFromLine = w.globals.previousPaths[pp].paths[0].d;\n            } else if (gpp.type === 'area') {\n              this.lineCtx.appendPathFrom = false;\n              pathFromArea = w.globals.previousPaths[pp].paths[0].d;\n\n              if (w.config.stroke.show && w.globals.previousPaths[pp].paths[1]) {\n                pathFromLine = w.globals.previousPaths[pp].paths[1].d;\n              }\n            }\n          }\n        }\n\n        return {\n          pathFromLine: pathFromLine,\n          pathFromArea: pathFromArea\n        };\n      }\n    }, {\n      key: \"determineFirstPrevY\",\n      value: function determineFirstPrevY(_ref3) {\n        var i = _ref3.i,\n            series = _ref3.series,\n            prevY = _ref3.prevY,\n            lineYPosition = _ref3.lineYPosition;\n        var w = this.w;\n\n        if (typeof series[i][0] !== 'undefined') {\n          if (w.config.chart.stacked) {\n            if (i > 0) {\n              // 1st y value of previous series\n              lineYPosition = this.lineCtx.prevSeriesY[i - 1][0];\n            } else {\n              // the first series will not have prevY values\n              lineYPosition = this.lineCtx.zeroY;\n            }\n          } else {\n            lineYPosition = this.lineCtx.zeroY;\n          }\n\n          prevY = lineYPosition - series[i][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] + (this.lineCtx.isReversed ? series[i][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] : 0) * 2;\n        } else {\n          // the first value in the current series is null\n          if (w.config.chart.stacked && i > 0 && typeof series[i][0] === 'undefined') {\n            // check for undefined value (undefined value will occur when we clear the series while user clicks on legend to hide serieses)\n            for (var s = i - 1; s >= 0; s--) {\n              // for loop to get to 1st previous value until we get it\n              if (series[s][0] !== null && typeof series[s][0] !== 'undefined') {\n                lineYPosition = this.lineCtx.prevSeriesY[s][0];\n                prevY = lineYPosition;\n                break;\n              }\n            }\n          }\n        }\n\n        return {\n          prevY: prevY,\n          lineYPosition: lineYPosition\n        };\n      }\n    }]);\n\n    return Helpers;\n  }();\n\n  /**\n   * ApexCharts Line Class responsible for drawing Line / Area Charts.\n   * This class is also responsible for generating values for Bubble/Scatter charts, so need to rename it to Axis Charts to avoid confusions\n   * @module Line\n   **/\n\n  var Line = /*#__PURE__*/function () {\n    function Line(ctx, xyRatios, isPointsChart) {\n      _classCallCheck(this, Line);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.xyRatios = xyRatios;\n      this.pointsChart = !(this.w.config.chart.type !== 'bubble' && this.w.config.chart.type !== 'scatter') || isPointsChart;\n      this.scatter = new Scatter(this.ctx);\n      this.noNegatives = this.w.globals.minX === Number.MAX_VALUE;\n      this.lineHelpers = new Helpers$4(this);\n      this.markers = new Markers(this.ctx);\n      this.prevSeriesY = [];\n      this.categoryAxisCorrection = 0;\n      this.yaxisIndex = 0;\n    }\n\n    _createClass(Line, [{\n      key: \"draw\",\n      value: function draw(series, ptype, seriesIndex) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var type = w.globals.comboCharts ? ptype : w.config.chart.type;\n        var ret = graphics.group({\n          class: \"apexcharts-\".concat(type, \"-series apexcharts-plot-series\")\n        });\n        var coreUtils = new CoreUtils(this.ctx, w);\n        this.yRatio = this.xyRatios.yRatio;\n        this.zRatio = this.xyRatios.zRatio;\n        this.xRatio = this.xyRatios.xRatio;\n        this.baseLineY = this.xyRatios.baseLineY;\n        series = coreUtils.getLogSeries(series);\n        this.yRatio = coreUtils.getLogYRatios(this.yRatio); // push all series in an array, so we can draw in reverse order (for stacked charts)\n\n        var allSeries = [];\n\n        for (var i = 0; i < series.length; i++) {\n          series = this.lineHelpers.sameValueSeriesFix(i, series);\n          var realIndex = w.globals.comboCharts ? seriesIndex[i] : i;\n\n          this._initSerieVariables(series, i, realIndex);\n\n          var yArrj = []; // hold y values of current iterating series\n\n          var xArrj = []; // hold x values of current iterating series\n\n          var x = w.globals.padHorizontal + this.categoryAxisCorrection;\n          var y = 1;\n          var linePaths = [];\n          var areaPaths = [];\n          this.ctx.series.addCollapsedClassToSeries(this.elSeries, realIndex);\n\n          if (w.globals.isXNumeric && w.globals.seriesX.length > 0) {\n            x = (w.globals.seriesX[realIndex][0] - w.globals.minX) / this.xRatio;\n          }\n\n          xArrj.push(x);\n          var pX = x;\n          var pY = void 0;\n          var prevX = pX;\n          var prevY = this.zeroY;\n          var lineYPosition = 0; // the first value in the current series is not null or undefined\n\n          var firstPrevY = this.lineHelpers.determineFirstPrevY({\n            i: i,\n            series: series,\n            prevY: prevY,\n            lineYPosition: lineYPosition\n          });\n          prevY = firstPrevY.prevY;\n          yArrj.push(prevY);\n          pY = prevY;\n\n          var pathsFrom = this._calculatePathsFrom({\n            series: series,\n            i: i,\n            realIndex: realIndex,\n            prevX: prevX,\n            prevY: prevY\n          });\n\n          var paths = this._iterateOverDataPoints({\n            series: series,\n            realIndex: realIndex,\n            i: i,\n            x: x,\n            y: y,\n            pX: pX,\n            pY: pY,\n            pathsFrom: pathsFrom,\n            linePaths: linePaths,\n            areaPaths: areaPaths,\n            seriesIndex: seriesIndex,\n            lineYPosition: lineYPosition,\n            xArrj: xArrj,\n            yArrj: yArrj\n          });\n\n          this._handlePaths({\n            type: type,\n            realIndex: realIndex,\n            i: i,\n            paths: paths\n          });\n\n          this.elSeries.add(this.elPointsMain);\n          this.elSeries.add(this.elDataLabelsWrap);\n          allSeries.push(this.elSeries);\n        }\n\n        for (var s = allSeries.length; s > 0; s--) {\n          ret.add(allSeries[s - 1]);\n        }\n\n        return ret;\n      }\n    }, {\n      key: \"_initSerieVariables\",\n      value: function _initSerieVariables(series, i, realIndex) {\n        var w = this.w;\n        var graphics = new Graphics(this.ctx); // width divided into equal parts\n\n        this.xDivision = w.globals.gridWidth / (w.globals.dataPoints - (w.config.xaxis.tickPlacement === 'on' ? 1 : 0));\n        this.strokeWidth = Array.isArray(w.config.stroke.width) ? w.config.stroke.width[realIndex] : w.config.stroke.width;\n\n        if (this.yRatio.length > 1) {\n          this.yaxisIndex = realIndex;\n        }\n\n        this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed; // zeroY is the 0 value in y series which can be used in negative charts\n\n        this.zeroY = w.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? w.globals.gridHeight : 0) + (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0);\n        this.areaBottomY = this.zeroY;\n\n        if (this.zeroY > w.globals.gridHeight) {\n          this.areaBottomY = w.globals.gridHeight;\n        }\n\n        this.categoryAxisCorrection = this.xDivision / 2; // el to which series will be drawn\n\n        this.elSeries = graphics.group({\n          class: \"apexcharts-series\",\n          seriesName: Utils.escapeString(w.globals.seriesNames[realIndex])\n        }); // points\n\n        this.elPointsMain = graphics.group({\n          class: 'apexcharts-series-markers-wrap',\n          'data:realIndex': realIndex\n        }); // eldatalabels\n\n        this.elDataLabelsWrap = graphics.group({\n          class: 'apexcharts-datalabels',\n          'data:realIndex': realIndex\n        });\n        var longestSeries = series[i].length === w.globals.dataPoints;\n        this.elSeries.attr({\n          'data:longestSeries': longestSeries,\n          rel: i + 1,\n          'data:realIndex': realIndex\n        });\n        this.appendPathFrom = true;\n      }\n    }, {\n      key: \"_calculatePathsFrom\",\n      value: function _calculatePathsFrom(_ref) {\n        var series = _ref.series,\n            i = _ref.i,\n            realIndex = _ref.realIndex,\n            prevX = _ref.prevX,\n            prevY = _ref.prevY;\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var linePath, areaPath, pathFromLine, pathFromArea;\n\n        if (series[i][0] === null) {\n          // when the first value itself is null, we need to move the pointer to a location where a null value is not found\n          for (var s = 0; s < series[i].length; s++) {\n            if (series[i][s] !== null) {\n              prevX = this.xDivision * s;\n              prevY = this.zeroY - series[i][s] / this.yRatio[this.yaxisIndex];\n              linePath = graphics.move(prevX, prevY);\n              areaPath = graphics.move(prevX, this.areaBottomY);\n              break;\n            }\n          }\n        } else {\n          linePath = graphics.move(prevX, prevY);\n          areaPath = graphics.move(prevX, this.areaBottomY) + graphics.line(prevX, prevY);\n        }\n\n        pathFromLine = graphics.move(-1, this.zeroY) + graphics.line(-1, this.zeroY);\n        pathFromArea = graphics.move(-1, this.zeroY) + graphics.line(-1, this.zeroY);\n\n        if (w.globals.previousPaths.length > 0) {\n          var pathFrom = this.lineHelpers.checkPreviousPaths({\n            pathFromLine: pathFromLine,\n            pathFromArea: pathFromArea,\n            realIndex: realIndex\n          });\n          pathFromLine = pathFrom.pathFromLine;\n          pathFromArea = pathFrom.pathFromArea;\n        }\n\n        return {\n          prevX: prevX,\n          prevY: prevY,\n          linePath: linePath,\n          areaPath: areaPath,\n          pathFromLine: pathFromLine,\n          pathFromArea: pathFromArea\n        };\n      }\n    }, {\n      key: \"_handlePaths\",\n      value: function _handlePaths(_ref2) {\n        var type = _ref2.type,\n            realIndex = _ref2.realIndex,\n            i = _ref2.i,\n            paths = _ref2.paths;\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var fill = new Fill(this.ctx); // push all current y values array to main PrevY Array\n\n        this.prevSeriesY.push(paths.yArrj); // push all x val arrays into main xArr\n\n        w.globals.seriesXvalues[realIndex] = paths.xArrj;\n        w.globals.seriesYvalues[realIndex] = paths.yArrj; // these elements will be shown after area path animation completes\n\n        if (!this.pointsChart) {\n          w.globals.delayedElements.push({\n            el: this.elPointsMain.node,\n            index: realIndex\n          });\n        }\n\n        var defaultRenderedPathOptions = {\n          i: i,\n          realIndex: realIndex,\n          animationDelay: i,\n          initialSpeed: w.config.chart.animations.speed,\n          dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed,\n          className: \"apexcharts-\".concat(type)\n        };\n\n        if (type === 'area') {\n          var pathFill = fill.fillPath({\n            seriesNumber: realIndex\n          });\n\n          for (var p = 0; p < paths.areaPaths.length; p++) {\n            var renderedPath = graphics.renderPaths(_objectSpread2({}, defaultRenderedPathOptions, {\n              pathFrom: paths.pathFromArea,\n              pathTo: paths.areaPaths[p],\n              stroke: 'none',\n              strokeWidth: 0,\n              strokeLineCap: null,\n              fill: pathFill\n            }));\n            this.elSeries.add(renderedPath);\n          }\n        }\n\n        if (w.config.stroke.show && !this.pointsChart) {\n          var lineFill = null;\n\n          if (type === 'line') {\n            // fillable lines only for lineChart\n            lineFill = fill.fillPath({\n              seriesNumber: realIndex,\n              i: i\n            });\n          } else {\n            lineFill = w.globals.stroke.colors[realIndex];\n          }\n\n          for (var _p = 0; _p < paths.linePaths.length; _p++) {\n            var _renderedPath = graphics.renderPaths(_objectSpread2({}, defaultRenderedPathOptions, {\n              pathFrom: paths.pathFromLine,\n              pathTo: paths.linePaths[_p],\n              stroke: lineFill,\n              strokeWidth: this.strokeWidth,\n              strokeLineCap: w.config.stroke.lineCap,\n              fill: 'none'\n            }));\n\n            this.elSeries.add(_renderedPath);\n          }\n        }\n      }\n    }, {\n      key: \"_iterateOverDataPoints\",\n      value: function _iterateOverDataPoints(_ref3) {\n        var series = _ref3.series,\n            realIndex = _ref3.realIndex,\n            i = _ref3.i,\n            x = _ref3.x,\n            y = _ref3.y,\n            pX = _ref3.pX,\n            pY = _ref3.pY,\n            pathsFrom = _ref3.pathsFrom,\n            linePaths = _ref3.linePaths,\n            areaPaths = _ref3.areaPaths,\n            seriesIndex = _ref3.seriesIndex,\n            lineYPosition = _ref3.lineYPosition,\n            xArrj = _ref3.xArrj,\n            yArrj = _ref3.yArrj;\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var yRatio = this.yRatio;\n        var prevY = pathsFrom.prevY,\n            linePath = pathsFrom.linePath,\n            areaPath = pathsFrom.areaPath,\n            pathFromLine = pathsFrom.pathFromLine,\n            pathFromArea = pathsFrom.pathFromArea;\n        var minY = Utils.isNumber(w.globals.minYArr[realIndex]) ? w.globals.minYArr[realIndex] : w.globals.minY;\n        var iterations = w.globals.dataPoints > 1 ? w.globals.dataPoints - 1 : w.globals.dataPoints;\n\n        for (var j = 0; j < iterations; j++) {\n          var isNull = typeof series[i][j + 1] === 'undefined' || series[i][j + 1] === null;\n\n          if (w.globals.isXNumeric) {\n            var sX = w.globals.seriesX[realIndex][j + 1];\n\n            if (typeof w.globals.seriesX[realIndex][j + 1] === 'undefined') {\n              /* fix #374 */\n              sX = w.globals.seriesX[realIndex][iterations - 1];\n            }\n\n            x = (sX - w.globals.minX) / this.xRatio;\n          } else {\n            x = x + this.xDivision;\n          }\n\n          if (w.config.chart.stacked) {\n            if (i > 0 && w.globals.collapsedSeries.length < w.config.series.length - 1) {\n              // a collapsed series in a stacked bar chart may provide wrong result for the next series, hence find the prevIndex of prev series which is not collapsed - fixes apexcharts.js#1372\n              var prevIndex = function prevIndex(pi) {\n                var pii = pi;\n\n                for (var cpi = 0; cpi < w.globals.series.length; cpi++) {\n                  if (w.globals.collapsedSeriesIndices.indexOf(pi) > -1) {\n                    pii--;\n                    break;\n                  }\n                }\n\n                return pii >= 0 ? pii : 0;\n              };\n\n              lineYPosition = this.prevSeriesY[prevIndex(i - 1)][j + 1];\n            } else {\n              // the first series will not have prevY values\n              lineYPosition = this.zeroY;\n            }\n          } else {\n            lineYPosition = this.zeroY;\n          }\n\n          if (isNull) {\n            y = lineYPosition - minY / yRatio[this.yaxisIndex] + (this.isReversed ? minY / yRatio[this.yaxisIndex] : 0) * 2;\n          } else {\n            y = lineYPosition - series[i][j + 1] / yRatio[this.yaxisIndex] + (this.isReversed ? series[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2;\n          } // push current X\n\n\n          xArrj.push(x); // push current Y that will be used as next series's bottom position\n\n          yArrj.push(y);\n          var pointsPos = this.lineHelpers.calculatePoints({\n            series: series,\n            x: x,\n            y: y,\n            realIndex: realIndex,\n            i: i,\n            j: j,\n            prevY: prevY\n          });\n\n          var calculatedPaths = this._createPaths({\n            series: series,\n            i: i,\n            realIndex: realIndex,\n            j: j,\n            x: x,\n            y: y,\n            pX: pX,\n            pY: pY,\n            linePath: linePath,\n            areaPath: areaPath,\n            linePaths: linePaths,\n            areaPaths: areaPaths,\n            seriesIndex: seriesIndex\n          });\n\n          areaPaths = calculatedPaths.areaPaths;\n          linePaths = calculatedPaths.linePaths;\n          pX = calculatedPaths.pX;\n          pY = calculatedPaths.pY;\n          areaPath = calculatedPaths.areaPath;\n          linePath = calculatedPaths.linePath;\n\n          if (this.appendPathFrom) {\n            pathFromLine = pathFromLine + graphics.line(x, this.zeroY);\n            pathFromArea = pathFromArea + graphics.line(x, this.zeroY);\n          }\n\n          this.handleNullDataPoints(series, pointsPos, i, j, realIndex);\n\n          this._handleMarkersAndLabels({\n            pointsPos: pointsPos,\n            series: series,\n            x: x,\n            y: y,\n            prevY: prevY,\n            i: i,\n            j: j,\n            realIndex: realIndex\n          });\n        }\n\n        return {\n          yArrj: yArrj,\n          xArrj: xArrj,\n          pathFromArea: pathFromArea,\n          areaPaths: areaPaths,\n          pathFromLine: pathFromLine,\n          linePaths: linePaths\n        };\n      }\n    }, {\n      key: \"_handleMarkersAndLabels\",\n      value: function _handleMarkersAndLabels(_ref4) {\n        var pointsPos = _ref4.pointsPos,\n            series = _ref4.series,\n            x = _ref4.x,\n            y = _ref4.y,\n            prevY = _ref4.prevY,\n            i = _ref4.i,\n            j = _ref4.j,\n            realIndex = _ref4.realIndex;\n        var w = this.w;\n        var dataLabels = new DataLabels(this.ctx);\n\n        if (!this.pointsChart) {\n          if (w.globals.series[i].length > 1) {\n            this.elPointsMain.node.classList.add('apexcharts-element-hidden');\n          }\n\n          var elPointsWrap = this.markers.plotChartMarkers(pointsPos, realIndex, j + 1);\n\n          if (elPointsWrap !== null) {\n            this.elPointsMain.add(elPointsWrap);\n          }\n        } else {\n          // scatter / bubble chart points creation\n          this.scatter.draw(this.elSeries, j, {\n            realIndex: realIndex,\n            pointsPos: pointsPos,\n            zRatio: this.zRatio,\n            elParent: this.elPointsMain\n          });\n        }\n\n        var drawnLabels = dataLabels.drawDataLabel(pointsPos, realIndex, j + 1, null);\n\n        if (drawnLabels !== null) {\n          this.elDataLabelsWrap.add(drawnLabels);\n        }\n      }\n    }, {\n      key: \"_createPaths\",\n      value: function _createPaths(_ref5) {\n        var series = _ref5.series,\n            i = _ref5.i,\n            realIndex = _ref5.realIndex,\n            j = _ref5.j,\n            x = _ref5.x,\n            y = _ref5.y,\n            pX = _ref5.pX,\n            pY = _ref5.pY,\n            linePath = _ref5.linePath,\n            areaPath = _ref5.areaPath,\n            linePaths = _ref5.linePaths,\n            areaPaths = _ref5.areaPaths,\n            seriesIndex = _ref5.seriesIndex;\n        var w = this.w;\n        var graphics = new Graphics(this.ctx);\n        var curve = w.config.stroke.curve;\n        var areaBottomY = this.areaBottomY;\n\n        if (Array.isArray(w.config.stroke.curve)) {\n          if (Array.isArray(seriesIndex)) {\n            curve = w.config.stroke.curve[seriesIndex[i]];\n          } else {\n            curve = w.config.stroke.curve[i];\n          }\n        } // logic of smooth curve derived from chartist\n        // CREDITS: https://gionkunz.github.io/chartist-js/\n\n\n        if (curve === 'smooth') {\n          var length = (x - pX) * 0.35;\n\n          if (w.globals.hasNullValues) {\n            if (series[i][j] !== null) {\n              if (series[i][j + 1] !== null) {\n                linePath = graphics.move(pX, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y);\n                areaPath = graphics.move(pX + 1, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y) + graphics.line(x, areaBottomY) + graphics.line(pX, areaBottomY) + 'z';\n              } else {\n                linePath = graphics.move(pX, pY);\n                areaPath = graphics.move(pX, pY) + 'z';\n              }\n            }\n\n            linePaths.push(linePath);\n            areaPaths.push(areaPath);\n          } else {\n            linePath = linePath + graphics.curve(pX + length, pY, x - length, y, x, y);\n            areaPath = areaPath + graphics.curve(pX + length, pY, x - length, y, x, y);\n          }\n\n          pX = x;\n          pY = y;\n\n          if (j === series[i].length - 2) {\n            // last loop, close path\n            areaPath = areaPath + graphics.curve(pX, pY, x, y, x, areaBottomY) + graphics.move(x, y) + 'z';\n\n            if (!w.globals.hasNullValues) {\n              linePaths.push(linePath);\n              areaPaths.push(areaPath);\n            }\n          }\n        } else {\n          if (series[i][j + 1] === null) {\n            linePath = linePath + graphics.move(x, y);\n            var numericOrCatX = w.globals.isXNumeric ? (w.globals.seriesX[realIndex][j] - w.globals.minX) / this.xRatio : x - this.xDivision;\n            areaPath = areaPath + graphics.line(numericOrCatX, areaBottomY) + graphics.move(x, y) + 'z';\n          }\n\n          if (series[i][j] === null) {\n            linePath = linePath + graphics.move(x, y);\n            areaPath = areaPath + graphics.move(x, areaBottomY);\n          }\n\n          if (curve === 'stepline') {\n            linePath = linePath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V');\n            areaPath = areaPath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V');\n          } else if (curve === 'straight') {\n            linePath = linePath + graphics.line(x, y);\n            areaPath = areaPath + graphics.line(x, y);\n          }\n\n          if (j === series[i].length - 2) {\n            // last loop, close path\n            areaPath = areaPath + graphics.line(x, areaBottomY) + graphics.move(x, y) + 'z';\n            linePaths.push(linePath);\n            areaPaths.push(areaPath);\n          }\n        }\n\n        return {\n          linePaths: linePaths,\n          areaPaths: areaPaths,\n          pX: pX,\n          pY: pY,\n          linePath: linePath,\n          areaPath: areaPath\n        };\n      }\n    }, {\n      key: \"handleNullDataPoints\",\n      value: function handleNullDataPoints(series, pointsPos, i, j, realIndex) {\n        var w = this.w;\n\n        if (series[i][j] === null && w.config.markers.showNullDataPoints || series[i].length === 1) {\n          // fixes apexcharts.js#1282, #1252\n          var elPointsWrap = this.markers.plotChartMarkers(pointsPos, realIndex, j + 1, this.strokeWidth - w.config.markers.strokeWidth / 2, true);\n\n          if (elPointsWrap !== null) {\n            this.elPointsMain.add(elPointsWrap);\n          }\n        }\n      }\n    }]);\n\n    return Line;\n  }();\n\n  /**\n   * ApexCharts TimeScale Class for generating time ticks for x-axis.\n   *\n   * @module TimeScale\n   **/\n\n  var TimeScale = /*#__PURE__*/function () {\n    function TimeScale(ctx) {\n      _classCallCheck(this, TimeScale);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.timeScaleArray = [];\n      this.utc = this.w.config.xaxis.labels.datetimeUTC;\n    }\n\n    _createClass(TimeScale, [{\n      key: \"calculateTimeScaleTicks\",\n      value: function calculateTimeScaleTicks(minX, maxX) {\n        var _this = this;\n\n        var w = this.w; // null check when no series to show\n\n        if (w.globals.allSeriesCollapsed) {\n          w.globals.labels = [];\n          w.globals.timescaleLabels = [];\n          return [];\n        }\n\n        var dt = new DateTime(this.ctx);\n        var daysDiff = (maxX - minX) / (1000 * 60 * 60 * 24);\n        this.determineInterval(daysDiff);\n        w.globals.disableZoomIn = false;\n        w.globals.disableZoomOut = false;\n\n        if (daysDiff < 0.005) {\n          w.globals.disableZoomIn = true;\n        } else if (daysDiff > 50000) {\n          w.globals.disableZoomOut = true;\n        }\n\n        var timeIntervals = dt.getTimeUnitsfromTimestamp(minX, maxX, this.utc);\n        var daysWidthOnXAxis = w.globals.gridWidth / daysDiff;\n        var hoursWidthOnXAxis = daysWidthOnXAxis / 24;\n        var minutesWidthOnXAxis = hoursWidthOnXAxis / 60;\n        var numberOfHours = Math.floor(daysDiff * 24);\n        var numberOfMinutes = Math.floor(daysDiff * 24 * 60);\n        var numberOfDays = Math.floor(daysDiff);\n        var numberOfMonths = Math.floor(daysDiff / 30);\n        var numberOfYears = Math.floor(daysDiff / 365);\n        var firstVal = {\n          minMinute: timeIntervals.minMinute,\n          minHour: timeIntervals.minHour,\n          minDate: timeIntervals.minDate,\n          minMonth: timeIntervals.minMonth,\n          minYear: timeIntervals.minYear\n        };\n        var currentMinute = firstVal.minMinute;\n        var currentHour = firstVal.minHour;\n        var currentMonthDate = firstVal.minDate;\n        var currentDate = firstVal.minDate;\n        var currentMonth = firstVal.minMonth;\n        var currentYear = firstVal.minYear;\n        var params = {\n          firstVal: firstVal,\n          currentMinute: currentMinute,\n          currentHour: currentHour,\n          currentMonthDate: currentMonthDate,\n          currentDate: currentDate,\n          currentMonth: currentMonth,\n          currentYear: currentYear,\n          daysWidthOnXAxis: daysWidthOnXAxis,\n          hoursWidthOnXAxis: hoursWidthOnXAxis,\n          minutesWidthOnXAxis: minutesWidthOnXAxis,\n          numberOfMinutes: numberOfMinutes,\n          numberOfHours: numberOfHours,\n          numberOfDays: numberOfDays,\n          numberOfMonths: numberOfMonths,\n          numberOfYears: numberOfYears\n        };\n\n        switch (this.tickInterval) {\n          case 'years':\n            {\n              this.generateYearScale(params);\n              break;\n            }\n\n          case 'months':\n          case 'half_year':\n            {\n              this.generateMonthScale(params);\n              break;\n            }\n\n          case 'months_days':\n          case 'months_fortnight':\n          case 'days':\n          case 'week_days':\n            {\n              this.generateDayScale(params);\n              break;\n            }\n\n          case 'hours':\n            {\n              this.generateHourScale(params);\n              break;\n            }\n\n          case 'minutes':\n            this.generateMinuteScale(params);\n            break;\n        } // first, we will adjust the month values index\n        // as in the upper function, it is starting from 0\n        // we will start them from 1\n\n\n        var adjustedMonthInTimeScaleArray = this.timeScaleArray.map(function (ts) {\n          var defaultReturn = {\n            position: ts.position,\n            unit: ts.unit,\n            year: ts.year,\n            day: ts.day ? ts.day : 1,\n            hour: ts.hour ? ts.hour : 0,\n            month: ts.month + 1\n          };\n\n          if (ts.unit === 'month') {\n            return _objectSpread2({}, defaultReturn, {\n              day: 1,\n              value: ts.value + 1\n            });\n          } else if (ts.unit === 'day' || ts.unit === 'hour') {\n            return _objectSpread2({}, defaultReturn, {\n              value: ts.value\n            });\n          } else if (ts.unit === 'minute') {\n            return _objectSpread2({}, defaultReturn, {\n              value: ts.value,\n              minute: ts.value\n            });\n          }\n\n          return ts;\n        });\n        var filteredTimeScale = adjustedMonthInTimeScaleArray.filter(function (ts) {\n          var modulo = 1;\n          var ticks = Math.ceil(w.globals.gridWidth / 120);\n          var value = ts.value;\n\n          if (w.config.xaxis.tickAmount !== undefined) {\n            ticks = w.config.xaxis.tickAmount;\n          }\n\n          if (adjustedMonthInTimeScaleArray.length > ticks) {\n            modulo = Math.floor(adjustedMonthInTimeScaleArray.length / ticks);\n          }\n\n          var shouldNotSkipUnit = false; // there is a big change in unit i.e days to months\n\n          var shouldNotPrint = false; // should skip these values\n\n          switch (_this.tickInterval) {\n            case 'years':\n              // make years label denser\n              if (ts.unit === 'year') {\n                shouldNotSkipUnit = true;\n              }\n\n              break;\n\n            case 'half_year':\n              modulo = 7;\n\n              if (ts.unit === 'year') {\n                shouldNotSkipUnit = true;\n              }\n\n              break;\n\n            case 'months':\n              modulo = 1;\n\n              if (ts.unit === 'year') {\n                shouldNotSkipUnit = true;\n              }\n\n              break;\n\n            case 'months_fortnight':\n              modulo = 15;\n\n              if (ts.unit === 'year' || ts.unit === 'month') {\n                shouldNotSkipUnit = true;\n              }\n\n              if (value === 30) {\n                shouldNotPrint = true;\n              }\n\n              break;\n\n            case 'months_days':\n              modulo = 10;\n\n              if (ts.unit === 'month') {\n                shouldNotSkipUnit = true;\n              }\n\n              if (value === 30) {\n                shouldNotPrint = true;\n              }\n\n              break;\n\n            case 'week_days':\n              modulo = 8;\n\n              if (ts.unit === 'month') {\n                shouldNotSkipUnit = true;\n              }\n\n              break;\n\n            case 'days':\n              modulo = 1;\n\n              if (ts.unit === 'month') {\n                shouldNotSkipUnit = true;\n              }\n\n              break;\n\n            case 'hours':\n              if (ts.unit === 'day') {\n                shouldNotSkipUnit = true;\n              }\n\n              break;\n\n            case 'minutes':\n              if (value % 5 !== 0) {\n                shouldNotPrint = true;\n              }\n\n              break;\n          }\n\n          if (_this.tickInterval === 'minutes' || _this.tickInterval === 'hours') {\n            if (!shouldNotPrint) {\n              return true;\n            }\n          } else {\n            if ((value % modulo === 0 || shouldNotSkipUnit) && !shouldNotPrint) {\n              return true;\n            }\n          }\n        });\n        return filteredTimeScale;\n      }\n    }, {\n      key: \"recalcDimensionsBasedOnFormat\",\n      value: function recalcDimensionsBasedOnFormat(filteredTimeScale, inverted) {\n        var w = this.w;\n        var reformattedTimescaleArray = this.formatDates(filteredTimeScale);\n        var removedOverlappingTS = this.removeOverlappingTS(reformattedTimescaleArray);\n        w.globals.timescaleLabels = removedOverlappingTS.slice(); // at this stage, we need to re-calculate coords of the grid as timeline labels may have altered the xaxis labels coords\n        // The reason we can't do this prior to this stage is because timeline labels depends on gridWidth, and as the ticks are calculated based on available gridWidth, there can be unknown number of ticks generated for different minX and maxX\n        // Dependency on Dimensions(), need to refactor correctly\n        // TODO - find an alternate way to avoid calling this Heavy method twice\n\n        var dimensions = new Dimensions(this.ctx);\n        dimensions.plotCoords();\n      }\n    }, {\n      key: \"determineInterval\",\n      value: function determineInterval(daysDiff) {\n        switch (true) {\n          case daysDiff > 1825:\n            // difference is more than 5 years\n            this.tickInterval = 'years';\n            break;\n\n          case daysDiff > 800 && daysDiff <= 1825:\n            this.tickInterval = 'half_year';\n            break;\n\n          case daysDiff > 180 && daysDiff <= 800:\n            this.tickInterval = 'months';\n            break;\n\n          case daysDiff > 90 && daysDiff <= 180:\n            this.tickInterval = 'months_fortnight';\n            break;\n\n          case daysDiff > 60 && daysDiff <= 90:\n            this.tickInterval = 'months_days';\n            break;\n\n          case daysDiff > 30 && daysDiff <= 60:\n            this.tickInterval = 'week_days';\n            break;\n\n          case daysDiff > 2 && daysDiff <= 30:\n            this.tickInterval = 'days';\n            break;\n\n          case daysDiff > 0.1 && daysDiff <= 2:\n            // less than  2 days\n            this.tickInterval = 'hours';\n            break;\n\n          case daysDiff < 0.1:\n            this.tickInterval = 'minutes';\n            break;\n\n          default:\n            this.tickInterval = 'days';\n            break;\n        }\n      }\n    }, {\n      key: \"generateYearScale\",\n      value: function generateYearScale(_ref) {\n        var firstVal = _ref.firstVal,\n            currentMonth = _ref.currentMonth,\n            currentYear = _ref.currentYear,\n            daysWidthOnXAxis = _ref.daysWidthOnXAxis,\n            numberOfYears = _ref.numberOfYears;\n        var firstTickValue = firstVal.minYear;\n        var firstTickPosition = 0;\n        var dt = new DateTime(this.ctx);\n        var unit = 'year';\n\n        if (firstVal.minDate > 1 && firstVal.minMonth > 0) {\n          var remainingDays = dt.determineRemainingDaysOfYear(firstVal.minYear, firstVal.minMonth, firstVal.minDate); // remainingDaysofFirstMonth is used to reacht the 2nd tick position\n\n          var remainingDaysOfFirstYear = dt.determineDaysOfYear(firstVal.minYear) - remainingDays + 1; // calculate the first tick position\n\n          firstTickPosition = remainingDaysOfFirstYear * daysWidthOnXAxis;\n          firstTickValue = firstVal.minYear + 1; // push the first tick in the array\n\n          this.timeScaleArray.push({\n            position: firstTickPosition,\n            value: firstTickValue,\n            unit: unit,\n            year: firstTickValue,\n            month: Utils.monthMod(currentMonth + 1)\n          });\n        } else if (firstVal.minDate === 1 && firstVal.minMonth === 0) {\n          // push the first tick in the array\n          this.timeScaleArray.push({\n            position: firstTickPosition,\n            value: firstTickValue,\n            unit: unit,\n            year: currentYear,\n            month: Utils.monthMod(currentMonth + 1)\n          });\n        }\n\n        var year = firstTickValue;\n        var pos = firstTickPosition; // keep drawing rest of the ticks\n\n        for (var i = 0; i < numberOfYears; i++) {\n          year++;\n          pos = dt.determineDaysOfYear(year - 1) * daysWidthOnXAxis + pos;\n          this.timeScaleArray.push({\n            position: pos,\n            value: year,\n            unit: unit,\n            year: year,\n            month: 1\n          });\n        }\n      }\n    }, {\n      key: \"generateMonthScale\",\n      value: function generateMonthScale(_ref2) {\n        var firstVal = _ref2.firstVal,\n            currentMonthDate = _ref2.currentMonthDate,\n            currentMonth = _ref2.currentMonth,\n            currentYear = _ref2.currentYear,\n            daysWidthOnXAxis = _ref2.daysWidthOnXAxis,\n            numberOfMonths = _ref2.numberOfMonths;\n        var firstTickValue = currentMonth;\n        var firstTickPosition = 0;\n        var dt = new DateTime(this.ctx);\n        var unit = 'month';\n        var yrCounter = 0;\n\n        if (firstVal.minDate > 1) {\n          // remainingDaysofFirstMonth is used to reacht the 2nd tick position\n          var remainingDaysOfFirstMonth = dt.determineDaysOfMonths(currentMonth + 1, firstVal.minYear) - currentMonthDate + 1; // calculate the first tick position\n\n          firstTickPosition = remainingDaysOfFirstMonth * daysWidthOnXAxis;\n          firstTickValue = Utils.monthMod(currentMonth + 1);\n          var year = currentYear + yrCounter;\n\n          var _month = Utils.monthMod(firstTickValue);\n\n          var value = firstTickValue; // it's Jan, so update the year\n\n          if (firstTickValue === 0) {\n            unit = 'year';\n            value = year;\n            _month = 1;\n            yrCounter += 1;\n            year = year + yrCounter;\n          } // push the first tick in the array\n\n\n          this.timeScaleArray.push({\n            position: firstTickPosition,\n            value: value,\n            unit: unit,\n            year: year,\n            month: _month\n          });\n        } else {\n          // push the first tick in the array\n          this.timeScaleArray.push({\n            position: firstTickPosition,\n            value: firstTickValue,\n            unit: unit,\n            year: currentYear,\n            month: Utils.monthMod(currentMonth)\n          });\n        }\n\n        var month = firstTickValue + 1;\n        var pos = firstTickPosition; // keep drawing rest of the ticks\n\n        for (var i = 0, j = 1; i < numberOfMonths; i++, j++) {\n          month = Utils.monthMod(month);\n\n          if (month === 0) {\n            unit = 'year';\n            yrCounter += 1;\n          } else {\n            unit = 'month';\n          }\n\n          var _year = this._getYear(currentYear, month, yrCounter);\n\n          pos = dt.determineDaysOfMonths(month, _year) * daysWidthOnXAxis + pos;\n          var monthVal = month === 0 ? _year : month;\n          this.timeScaleArray.push({\n            position: pos,\n            value: monthVal,\n            unit: unit,\n            year: _year,\n            month: month === 0 ? 1 : month\n          });\n          month++;\n        }\n      }\n    }, {\n      key: \"generateDayScale\",\n      value: function generateDayScale(_ref3) {\n        var firstVal = _ref3.firstVal,\n            currentMonth = _ref3.currentMonth,\n            currentYear = _ref3.currentYear,\n            hoursWidthOnXAxis = _ref3.hoursWidthOnXAxis,\n            numberOfDays = _ref3.numberOfDays;\n        var dt = new DateTime(this.ctx);\n        var unit = 'day';\n        var firstTickValue = firstVal.minDate + 1;\n        var date = firstTickValue;\n\n        var changeMonth = function changeMonth(dateVal, month, year) {\n          var monthdays = dt.determineDaysOfMonths(month + 1, year);\n\n          if (dateVal > monthdays) {\n            month = month + 1;\n            date = 1;\n            unit = 'month';\n            val = month;\n            return month;\n          }\n\n          return month;\n        };\n\n        var remainingHours = 24 - firstVal.minHour;\n        var yrCounter = 0; // calculate the first tick position\n\n        var firstTickPosition = remainingHours * hoursWidthOnXAxis;\n        var val = firstTickValue;\n        var month = changeMonth(date, currentMonth, currentYear);\n\n        if (firstVal.minHour === 0 && firstVal.minDate === 1) {\n          // the first value is the first day of month\n          firstTickPosition = 0;\n          val = Utils.monthMod(firstVal.minMonth);\n          unit = 'month';\n          date = firstVal.minDate;\n          numberOfDays++;\n        } // push the first tick in the array\n\n\n        this.timeScaleArray.push({\n          position: firstTickPosition,\n          value: val,\n          unit: unit,\n          year: this._getYear(currentYear, month, yrCounter),\n          month: Utils.monthMod(month),\n          day: date\n        });\n        var pos = firstTickPosition; // keep drawing rest of the ticks\n\n        for (var i = 0; i < numberOfDays; i++) {\n          date += 1;\n          unit = 'day';\n          month = changeMonth(date, month, this._getYear(currentYear, month, yrCounter));\n\n          var year = this._getYear(currentYear, month, yrCounter);\n\n          pos = 24 * hoursWidthOnXAxis + pos;\n          var value = date === 1 ? Utils.monthMod(month) : date;\n          this.timeScaleArray.push({\n            position: pos,\n            value: value,\n            unit: unit,\n            year: year,\n            month: Utils.monthMod(month),\n            day: value\n          });\n        }\n      }\n    }, {\n      key: \"generateHourScale\",\n      value: function generateHourScale(_ref4) {\n        var firstVal = _ref4.firstVal,\n            currentDate = _ref4.currentDate,\n            currentMonth = _ref4.currentMonth,\n            currentYear = _ref4.currentYear,\n            minutesWidthOnXAxis = _ref4.minutesWidthOnXAxis,\n            numberOfHours = _ref4.numberOfHours;\n        var dt = new DateTime(this.ctx);\n        var yrCounter = 0;\n        var unit = 'hour';\n\n        var changeDate = function changeDate(dateVal, month) {\n          var monthdays = dt.determineDaysOfMonths(month + 1, currentYear);\n\n          if (dateVal > monthdays) {\n            date = 1;\n            month = month + 1;\n          }\n\n          return {\n            month: month,\n            date: date\n          };\n        };\n\n        var changeMonth = function changeMonth(dateVal, month) {\n          var monthdays = dt.determineDaysOfMonths(month + 1, currentYear);\n\n          if (dateVal > monthdays) {\n            month = month + 1;\n            return month;\n          }\n\n          return month;\n        };\n\n        var remainingMins = 60 - firstVal.minMinute;\n        var firstTickPosition = remainingMins * minutesWidthOnXAxis;\n        var firstTickValue = firstVal.minHour + 1;\n        var hour = firstTickValue + 1;\n\n        if (remainingMins === 60) {\n          firstTickPosition = 0;\n          firstTickValue = firstVal.minHour;\n          hour = firstTickValue + 1;\n        }\n\n        var date = currentDate;\n        var month = changeMonth(date, currentMonth); // push the first tick in the array\n\n        this.timeScaleArray.push({\n          position: firstTickPosition,\n          value: firstTickValue,\n          unit: unit,\n          day: date,\n          hour: hour,\n          year: currentYear,\n          month: Utils.monthMod(month)\n        });\n        var pos = firstTickPosition; // keep drawing rest of the ticks\n\n        for (var i = 0; i < numberOfHours; i++) {\n          unit = 'hour';\n\n          if (hour >= 24) {\n            hour = 0;\n            date += 1;\n            unit = 'day';\n            var checkNextMonth = changeDate(date, month);\n            month = checkNextMonth.month;\n            month = changeMonth(date, month);\n          }\n\n          var year = this._getYear(currentYear, month, yrCounter);\n\n          pos = hour === 0 && i === 0 ? remainingMins * minutesWidthOnXAxis : 60 * minutesWidthOnXAxis + pos;\n          var val = hour === 0 ? date : hour;\n          this.timeScaleArray.push({\n            position: pos,\n            value: val,\n            unit: unit,\n            hour: hour,\n            day: date,\n            year: year,\n            month: Utils.monthMod(month)\n          });\n          hour++;\n        }\n      }\n    }, {\n      key: \"generateMinuteScale\",\n      value: function generateMinuteScale(_ref5) {\n        var firstVal = _ref5.firstVal,\n            currentMinute = _ref5.currentMinute,\n            currentHour = _ref5.currentHour,\n            currentDate = _ref5.currentDate,\n            currentMonth = _ref5.currentMonth,\n            currentYear = _ref5.currentYear,\n            minutesWidthOnXAxis = _ref5.minutesWidthOnXAxis,\n            numberOfMinutes = _ref5.numberOfMinutes;\n        var yrCounter = 0;\n        var unit = 'minute';\n        var remainingMins = currentMinute - firstVal.minMinute;\n        var firstTickPosition = minutesWidthOnXAxis - remainingMins;\n        var firstTickValue = firstVal.minMinute + 1;\n        var minute = firstTickValue + 1;\n        var date = currentDate;\n        var month = currentMonth;\n        var year = currentYear;\n        var hour = currentHour; // push the first tick in the array\n\n        this.timeScaleArray.push({\n          position: firstTickPosition,\n          value: firstTickValue,\n          unit: unit,\n          day: date,\n          hour: hour,\n          minute: minute,\n          year: year,\n          month: Utils.monthMod(month)\n        });\n        var pos = firstTickPosition; // keep drawing rest of the ticks\n\n        for (var i = 0; i < numberOfMinutes; i++) {\n          if (minute >= 60) {\n            minute = 0;\n            hour += 1;\n\n            if (hour === 24) {\n              hour = 0;\n            }\n          }\n\n          pos = minutesWidthOnXAxis + pos;\n          this.timeScaleArray.push({\n            position: pos,\n            value: minute,\n            unit: unit,\n            hour: hour,\n            minute: minute,\n            day: date,\n            year: this._getYear(currentYear, month, yrCounter),\n            month: Utils.monthMod(month)\n          });\n          minute++;\n        }\n      }\n    }, {\n      key: \"createRawDateString\",\n      value: function createRawDateString(ts, value) {\n        var raw = ts.year;\n        raw += '-' + ('0' + ts.month.toString()).slice(-2); // unit is day\n\n        if (ts.unit === 'day') {\n          raw += ts.unit === 'day' ? '-' + ('0' + value).slice(-2) : '-01';\n        } else {\n          raw += '-' + ('0' + (ts.day ? ts.day : '1')).slice(-2);\n        } // unit is hour\n\n\n        if (ts.unit === 'hour') {\n          raw += ts.unit === 'hour' ? 'T' + ('0' + value).slice(-2) : 'T00';\n        } else {\n          raw += 'T' + ('0' + (ts.hour ? ts.hour : '0')).slice(-2);\n        } // unit is minute\n\n\n        raw += ts.unit === 'minute' ? ':' + ('0' + value).slice(-2) + ':00' : ':00:00';\n\n        if (this.utc) {\n          raw += '.000Z';\n        }\n\n        return raw;\n      }\n    }, {\n      key: \"formatDates\",\n      value: function formatDates(filteredTimeScale) {\n        var _this2 = this;\n\n        var w = this.w;\n        var reformattedTimescaleArray = filteredTimeScale.map(function (ts) {\n          var value = ts.value.toString();\n          var dt = new DateTime(_this2.ctx);\n\n          var raw = _this2.createRawDateString(ts, value);\n\n          var dateToFormat = dt.getDate(raw);\n\n          if (w.config.xaxis.labels.format === undefined) {\n            var customFormat = 'dd MMM';\n            var dtFormatter = w.config.xaxis.labels.datetimeFormatter;\n            if (ts.unit === 'year') customFormat = dtFormatter.year;\n            if (ts.unit === 'month') customFormat = dtFormatter.month;\n            if (ts.unit === 'day') customFormat = dtFormatter.day;\n            if (ts.unit === 'hour') customFormat = dtFormatter.hour;\n            if (ts.unit === 'minute') customFormat = dtFormatter.minute;\n            value = dt.formatDate(dateToFormat, customFormat);\n          } else {\n            value = dt.formatDate(dateToFormat, w.config.xaxis.labels.format);\n          }\n\n          return {\n            dateString: raw,\n            position: ts.position,\n            value: value,\n            unit: ts.unit,\n            year: ts.year,\n            month: ts.month\n          };\n        });\n        return reformattedTimescaleArray;\n      }\n    }, {\n      key: \"removeOverlappingTS\",\n      value: function removeOverlappingTS(arr) {\n        var _this3 = this;\n\n        var graphics = new Graphics(this.ctx);\n        var equalLabelLengthFlag = false; // These labels got same length?\n\n        var constantLabelWidth; // If true, what is the constant length to use\n\n        if (arr.length > 0 && // check arr length\n        arr[0].value && // check arr[0] contains value\n        arr.every(function (lb) {\n          return lb.value.length === arr[0].value.length;\n        }) // check every arr label value is the same as the first one\n        ) {\n            equalLabelLengthFlag = true; // These labels got same length\n\n            constantLabelWidth = graphics.getTextRects(arr[0].value).width; // The constant label width to use\n          }\n\n        var lastDrawnIndex = 0;\n        var filteredArray = arr.map(function (item, index) {\n          if (index > 0 && _this3.w.config.xaxis.labels.hideOverlappingLabels) {\n            var prevLabelWidth = !equalLabelLengthFlag // if vary in label length\n            ? graphics.getTextRects(arr[lastDrawnIndex].value).width // get individual length\n            : constantLabelWidth; // else: use constant length\n\n            var prevPos = arr[lastDrawnIndex].position;\n            var pos = item.position;\n\n            if (pos > prevPos + prevLabelWidth + 10) {\n              lastDrawnIndex = index;\n              return item;\n            } else {\n              return null;\n            }\n          } else {\n            return item;\n          }\n        });\n        filteredArray = filteredArray.filter(function (f) {\n          return f !== null;\n        });\n        return filteredArray;\n      }\n    }, {\n      key: \"_getYear\",\n      value: function _getYear(currentYear, month, yrCounter) {\n        return currentYear + Math.floor(month / 12) + yrCounter;\n      }\n    }]);\n\n    return TimeScale;\n  }();\n\n  /**\n   * ApexCharts Core Class responsible for major calculations and creating elements.\n   *\n   * @module Core\n   **/\n\n  var Core = /*#__PURE__*/function () {\n    function Core(el, ctx) {\n      _classCallCheck(this, Core);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n      this.el = el;\n    } // get data and store into appropriate vars\n\n\n    _createClass(Core, [{\n      key: \"setupElements\",\n      value: function setupElements() {\n        var gl = this.w.globals;\n        var cnf = this.w.config; // const graphics = new Graphics(this.ctx)\n\n        var ct = cnf.chart.type;\n        var axisChartsArrTypes = ['line', 'area', 'bar', 'rangeBar', 'candlestick', 'scatter', 'bubble', 'radar', 'heatmap'];\n        var xyChartsArrTypes = ['line', 'area', 'bar', 'rangeBar', 'candlestick', 'scatter', 'bubble'];\n        gl.axisCharts = axisChartsArrTypes.indexOf(ct) > -1;\n        gl.xyCharts = xyChartsArrTypes.indexOf(ct) > -1;\n        gl.isBarHorizontal = (cnf.chart.type === 'bar' || cnf.chart.type === 'rangeBar') && cnf.plotOptions.bar.horizontal;\n        gl.chartClass = '.apexcharts' + gl.cuid;\n        gl.dom.baseEl = this.el;\n        gl.dom.elWrap = document.createElement('div');\n        Graphics.setAttrs(gl.dom.elWrap, {\n          id: gl.chartClass.substring(1),\n          class: 'apexcharts-canvas ' + gl.chartClass.substring(1)\n        });\n        this.el.appendChild(gl.dom.elWrap);\n        gl.dom.Paper = new window.SVG.Doc(gl.dom.elWrap);\n        gl.dom.Paper.attr({\n          class: 'apexcharts-svg',\n          'xmlns:data': 'ApexChartsNS',\n          transform: \"translate(\".concat(cnf.chart.offsetX, \", \").concat(cnf.chart.offsetY, \")\")\n        });\n        gl.dom.Paper.node.style.background = cnf.chart.background;\n        this.setSVGDimensions();\n        gl.dom.elGraphical = gl.dom.Paper.group().attr({\n          class: 'apexcharts-inner apexcharts-graphical'\n        });\n        gl.dom.elAnnotations = gl.dom.Paper.group().attr({\n          class: 'apexcharts-annotations'\n        });\n        gl.dom.elDefs = gl.dom.Paper.defs();\n        gl.dom.elLegendWrap = document.createElement('div');\n        gl.dom.elLegendWrap.classList.add('apexcharts-legend');\n        gl.dom.elWrap.appendChild(gl.dom.elLegendWrap);\n        gl.dom.Paper.add(gl.dom.elGraphical);\n        gl.dom.elGraphical.add(gl.dom.elDefs);\n      }\n    }, {\n      key: \"plotChartType\",\n      value: function plotChartType(ser, xyRatios) {\n        var w = this.w;\n        var cnf = w.config;\n        var gl = w.globals;\n        var lineSeries = {\n          series: [],\n          i: []\n        };\n        var areaSeries = {\n          series: [],\n          i: []\n        };\n        var scatterSeries = {\n          series: [],\n          i: []\n        };\n        var bubbleSeries = {\n          series: [],\n          i: []\n        };\n        var columnSeries = {\n          series: [],\n          i: []\n        };\n        var candlestickSeries = {\n          series: [],\n          i: []\n        };\n        gl.series.map(function (series, st) {\n          // if user has specified a particular type for particular series\n          if (typeof ser[st].type !== 'undefined') {\n            if (ser[st].type === 'column' || ser[st].type === 'bar') {\n              if (gl.series.length > 1 && cnf.plotOptions.bar.horizontal) {\n                // horizontal bars not supported in mixed charts, hence show a warning\n                console.warn('Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`');\n              }\n\n              columnSeries.series.push(series);\n              columnSeries.i.push(st);\n              w.globals.columnSeries = columnSeries.series;\n            } else if (ser[st].type === 'area') {\n              areaSeries.series.push(series);\n              areaSeries.i.push(st);\n            } else if (ser[st].type === 'line') {\n              lineSeries.series.push(series);\n              lineSeries.i.push(st);\n            } else if (ser[st].type === 'scatter') {\n              scatterSeries.series.push(series);\n              scatterSeries.i.push(st);\n            } else if (ser[st].type === 'bubble') {\n              bubbleSeries.series.push(series);\n              bubbleSeries.i.push(st);\n            } else if (ser[st].type === 'candlestick') {\n              candlestickSeries.series.push(series);\n              candlestickSeries.i.push(st);\n            } else {\n              // user has specified type, but it is not valid (other than line/area/column)\n              console.warn('You have specified an unrecognized chart type. Available types for this propery are line/area/column/bar/scatter/bubble');\n            }\n\n            gl.comboCharts = true;\n          } else {\n            lineSeries.series.push(series);\n            lineSeries.i.push(st);\n          }\n        });\n        var line = new Line(this.ctx, xyRatios);\n        var candlestick = new CandleStick(this.ctx, xyRatios);\n        var pie = new Pie(this.ctx);\n        var radialBar = new Radial(this.ctx);\n        var rangeBar = new RangeBar(this.ctx, xyRatios);\n        var radar = new Radar(this.ctx);\n        var elGraph = [];\n\n        if (gl.comboCharts) {\n          if (areaSeries.series.length > 0) {\n            elGraph.push(line.draw(areaSeries.series, 'area', areaSeries.i));\n          }\n\n          if (columnSeries.series.length > 0) {\n            if (w.config.chart.stacked) {\n              var barStacked = new BarStacked(this.ctx, xyRatios);\n              elGraph.push(barStacked.draw(columnSeries.series, columnSeries.i));\n            } else {\n              var bar = new Bar(this.ctx, xyRatios);\n              elGraph.push(bar.draw(columnSeries.series, columnSeries.i));\n            }\n          }\n\n          if (lineSeries.series.length > 0) {\n            elGraph.push(line.draw(lineSeries.series, 'line', lineSeries.i));\n          }\n\n          if (candlestickSeries.series.length > 0) {\n            elGraph.push(candlestick.draw(candlestickSeries.series, candlestickSeries.i));\n          }\n\n          if (scatterSeries.series.length > 0) {\n            var scatterLine = new Line(this.ctx, xyRatios, true);\n            elGraph.push(scatterLine.draw(scatterSeries.series, 'scatter', scatterSeries.i));\n          }\n\n          if (bubbleSeries.series.length > 0) {\n            var bubbleLine = new Line(this.ctx, xyRatios, true);\n            elGraph.push(bubbleLine.draw(bubbleSeries.series, 'bubble', bubbleSeries.i));\n          }\n        } else {\n          switch (cnf.chart.type) {\n            case 'line':\n              elGraph = line.draw(gl.series, 'line');\n              break;\n\n            case 'area':\n              elGraph = line.draw(gl.series, 'area');\n              break;\n\n            case 'bar':\n              if (cnf.chart.stacked) {\n                var _barStacked = new BarStacked(this.ctx, xyRatios);\n\n                elGraph = _barStacked.draw(gl.series);\n              } else {\n                var _bar = new Bar(this.ctx, xyRatios);\n\n                elGraph = _bar.draw(gl.series);\n              }\n\n              break;\n\n            case 'candlestick':\n              var candleStick = new CandleStick(this.ctx, xyRatios);\n              elGraph = candleStick.draw(gl.series);\n              break;\n\n            case 'rangeBar':\n              elGraph = rangeBar.draw(gl.series);\n              break;\n\n            case 'heatmap':\n              var heatmap = new HeatMap(this.ctx, xyRatios);\n              elGraph = heatmap.draw(gl.series);\n              break;\n\n            case 'pie':\n            case 'donut':\n              elGraph = pie.draw(gl.series);\n              break;\n\n            case 'radialBar':\n              elGraph = radialBar.draw(gl.series);\n              break;\n\n            case 'radar':\n              elGraph = radar.draw(gl.series);\n              break;\n\n            default:\n              elGraph = line.draw(gl.series);\n          }\n        }\n\n        return elGraph;\n      }\n    }, {\n      key: \"setSVGDimensions\",\n      value: function setSVGDimensions() {\n        var gl = this.w.globals;\n        var cnf = this.w.config;\n        gl.svgWidth = cnf.chart.width;\n        gl.svgHeight = cnf.chart.height;\n        var elDim = Utils.getDimensions(this.el);\n        var widthUnit = cnf.chart.width.toString().split(/[0-9]+/g).pop();\n\n        if (widthUnit === '%') {\n          if (Utils.isNumber(elDim[0])) {\n            if (elDim[0].width === 0) {\n              elDim = Utils.getDimensions(this.el.parentNode);\n            }\n\n            gl.svgWidth = elDim[0] * parseInt(cnf.chart.width, 10) / 100;\n          }\n        } else if (widthUnit === 'px' || widthUnit === '') {\n          gl.svgWidth = parseInt(cnf.chart.width, 10);\n        }\n\n        if (gl.svgHeight !== 'auto' && gl.svgHeight !== '') {\n          var heightUnit = cnf.chart.height.toString().split(/[0-9]+/g).pop();\n\n          if (heightUnit === '%') {\n            var elParentDim = Utils.getDimensions(this.el.parentNode);\n            gl.svgHeight = elParentDim[1] * parseInt(cnf.chart.height, 10) / 100;\n          } else {\n            gl.svgHeight = parseInt(cnf.chart.height, 10);\n          }\n        } else {\n          if (gl.axisCharts) {\n            gl.svgHeight = gl.svgWidth / 1.61;\n          } else {\n            gl.svgHeight = gl.svgWidth / 1.2;\n          }\n        }\n\n        if (gl.svgWidth < 0) gl.svgWidth = 0;\n        if (gl.svgHeight < 0) gl.svgHeight = 0;\n        Graphics.setAttrs(gl.dom.Paper.node, {\n          width: gl.svgWidth,\n          height: gl.svgHeight\n        }); // gl.dom.Paper.node.parentNode.parentNode.style.minWidth = gl.svgWidth + \"px\";\n\n        var offsetY = cnf.chart.sparkline.enabled ? 0 : gl.axisCharts ? cnf.chart.parentHeightOffset : 0;\n        gl.dom.Paper.node.parentNode.parentNode.style.minHeight = gl.svgHeight + offsetY + 'px';\n        gl.dom.elWrap.style.width = gl.svgWidth + 'px';\n        gl.dom.elWrap.style.height = gl.svgHeight + 'px';\n      }\n    }, {\n      key: \"shiftGraphPosition\",\n      value: function shiftGraphPosition() {\n        var gl = this.w.globals;\n        var tY = gl.translateY;\n        var tX = gl.translateX;\n        var scalingAttrs = {\n          transform: 'translate(' + tX + ', ' + tY + ')'\n        };\n        Graphics.setAttrs(gl.dom.elGraphical.node, scalingAttrs);\n        gl.x2SpaceAvailable = gl.svgWidth - gl.dom.elGraphical.x() - gl.gridWidth;\n      } // To prevent extra spacings in the bottom of the chart, we need to recalculate the height for pie/donut/radialbar charts\n\n    }, {\n      key: \"resizeNonAxisCharts\",\n      value: function resizeNonAxisCharts() {\n        var w = this.w;\n        var gl = w.globals;\n        var legendHeight = 0;\n        var offY = w.config.chart.sparkline.enabled ? 1 : 15;\n        offY = offY + w.config.grid.padding.bottom;\n\n        if ((w.config.legend.position === 'top' || w.config.legend.position === 'bottom') && w.config.legend.show && !w.config.legend.floating) {\n          legendHeight = new Legend(this.ctx).legendHelpers.getLegendBBox().clwh + 10;\n        }\n\n        var radialEl = w.globals.dom.baseEl.querySelector('.apexcharts-radialbar');\n        var chartInnerDimensions = w.globals.radialSize * 2.05;\n\n        if (radialEl && !w.config.chart.sparkline.enabled) {\n          var elRadialRect = Utils.getBoundingClientRect(radialEl);\n          chartInnerDimensions = elRadialRect.bottom;\n          var maxHeight = elRadialRect.bottom - elRadialRect.top;\n          chartInnerDimensions = Math.max(w.globals.radialSize * 2.05, maxHeight);\n        }\n\n        var newHeight = chartInnerDimensions + gl.translateY + legendHeight + offY;\n\n        if (gl.dom.elLegendForeign) {\n          gl.dom.elLegendForeign.setAttribute('height', newHeight);\n        }\n\n        gl.dom.elWrap.style.height = newHeight + 'px';\n        Graphics.setAttrs(gl.dom.Paper.node, {\n          height: newHeight\n        });\n        gl.dom.Paper.node.parentNode.parentNode.style.minHeight = newHeight + 'px';\n      }\n      /*\n       ** All the calculations for setting range in charts will be done here\n       */\n\n    }, {\n      key: \"coreCalculations\",\n      value: function coreCalculations() {\n        var range = new Range$1(this.ctx);\n        range.init();\n      }\n    }, {\n      key: \"resetGlobals\",\n      value: function resetGlobals() {\n        var _this = this;\n\n        var resetxyValues = function resetxyValues() {\n          return _this.w.config.series.map(function (s) {\n            return [];\n          });\n        };\n\n        var globalObj = new Globals();\n        var gl = this.w.globals;\n        globalObj.initGlobalVars(gl);\n        gl.seriesXvalues = resetxyValues();\n        gl.seriesYvalues = resetxyValues();\n      }\n    }, {\n      key: \"isMultipleY\",\n      value: function isMultipleY() {\n        // user has supplied an array in yaxis property. So, turn on multipleYAxis flag\n        if (this.w.config.yaxis.constructor === Array && this.w.config.yaxis.length > 1) {\n          this.w.globals.isMultipleYAxis = true;\n          return true;\n        }\n      }\n    }, {\n      key: \"xySettings\",\n      value: function xySettings() {\n        var xyRatios = null;\n        var w = this.w;\n\n        if (w.globals.axisCharts) {\n          if (w.config.xaxis.crosshairs.position === 'back') {\n            var crosshairs = new Crosshairs(this.ctx);\n            crosshairs.drawXCrosshairs();\n          }\n\n          if (w.config.yaxis[0].crosshairs.position === 'back') {\n            var _crosshairs = new Crosshairs(this.ctx);\n\n            _crosshairs.drawYCrosshairs();\n          }\n\n          if (w.config.xaxis.type === 'datetime' && w.config.xaxis.labels.formatter === undefined) {\n            var ts = new TimeScale(this.ctx);\n            var formattedTimeScale = [];\n\n            if (isFinite(w.globals.minX) && isFinite(w.globals.maxX) && !w.globals.isBarHorizontal) {\n              formattedTimeScale = ts.calculateTimeScaleTicks(w.globals.minX, w.globals.maxX);\n            } else if (w.globals.isBarHorizontal) {\n              formattedTimeScale = ts.calculateTimeScaleTicks(w.globals.minY, w.globals.maxY);\n            }\n\n            ts.recalcDimensionsBasedOnFormat(formattedTimeScale);\n          }\n\n          var coreUtils = new CoreUtils(this.ctx);\n          xyRatios = coreUtils.getCalculatedRatios();\n        }\n\n        return xyRatios;\n      }\n    }, {\n      key: \"setupBrushHandler\",\n      value: function setupBrushHandler() {\n        var _this2 = this;\n\n        var w = this.w; // only for brush charts\n\n        if (!w.config.chart.brush.enabled) {\n          return;\n        } // if user has not defined a custom function for selection - we handle the brush chart\n        // otherwise we leave it to the user to define the functionality for selection\n\n\n        if (typeof w.config.chart.events.selection !== 'function') {\n          var targets = w.config.chart.brush.targets || [w.config.chart.brush.target]; // retro compatibility with single target option\n\n          targets.forEach(function (target) {\n            var targetChart = ApexCharts.getChartByID(target);\n            targetChart.w.globals.brushSource = _this2.ctx;\n\n            var updateSourceChart = function updateSourceChart() {\n              _this2.ctx.updateHelpers._updateOptions({\n                chart: {\n                  selection: {\n                    xaxis: {\n                      min: targetChart.w.globals.minX,\n                      max: targetChart.w.globals.maxX\n                    }\n                  }\n                }\n              }, false, false);\n            };\n\n            if (typeof targetChart.w.config.chart.events.zoomed !== 'function') {\n              targetChart.w.config.chart.events.zoomed = function () {\n                updateSourceChart();\n              };\n            }\n\n            if (typeof targetChart.w.config.chart.events.scrolled !== 'function') {\n              targetChart.w.config.chart.events.scrolled = function () {\n                updateSourceChart();\n              };\n            }\n          });\n\n          w.config.chart.events.selection = function (chart, e) {\n            targets.forEach(function (target) {\n              var targetChart = ApexCharts.getChartByID(target);\n              var yaxis = Utils.clone(w.config.yaxis);\n\n              if (w.config.chart.brush.autoScaleYaxis && targetChart.w.globals.series.length === 1) {\n                var scale = new Range(targetChart);\n                yaxis = scale.autoScaleY(targetChart, yaxis, e);\n              }\n\n              targetChart.ctx.updateHelpers._updateOptions({\n                xaxis: {\n                  min: e.xaxis.min,\n                  max: e.xaxis.max\n                },\n                yaxis: _objectSpread2({}, targetChart.w.config.yaxis[0], {\n                  min: yaxis[0].min,\n                  max: yaxis[0].max\n                })\n              }, false, false, false, false);\n            });\n          };\n        }\n      }\n    }]);\n\n    return Core;\n  }();\n\n  var UpdateHelpers = /*#__PURE__*/function () {\n    function UpdateHelpers(ctx) {\n      _classCallCheck(this, UpdateHelpers);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    }\n    /**\n     * private method to update Options.\n     *\n     * @param {object} options - A new config object can be passed which will be merged with the existing config object\n     * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there\n     * @param {boolean} animate - should animate or not on updating Options\n     * @param {boolean} overwriteInitialConfig - should update the initial config or not\n     */\n\n\n    _createClass(UpdateHelpers, [{\n      key: \"_updateOptions\",\n      value: function _updateOptions(options) {\n        var _this = this;\n\n        var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n        var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n        var updateSyncedCharts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n        var overwriteInitialConfig = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n        var charts = [this.ctx];\n\n        if (updateSyncedCharts) {\n          charts = this.ctx.getSyncedCharts();\n        }\n\n        if (this.ctx.w.globals.isExecCalled) {\n          // If the user called exec method, we don't want to get grouped charts as user specifically provided a chartID to update\n          charts = [this.ctx];\n          this.ctx.w.globals.isExecCalled = false;\n        }\n\n        charts.forEach(function (ch) {\n          var w = ch.w;\n          w.globals.shouldAnimate = animate;\n\n          if (!redraw) {\n            w.globals.resized = true;\n            w.globals.dataChanged = true;\n\n            if (animate) {\n              ch.series.getPreviousPaths();\n            }\n          }\n\n          if (options && _typeof(options) === 'object') {\n            ch.config = new Config(options);\n            options = CoreUtils.extendArrayProps(ch.config, options); // fixes #914, #623\n\n            if (ch.w.globals.chartID !== _this.ctx.w.globals.chartID) {\n              // don't overwrite series of synchronized charts\n              delete options.series;\n            }\n\n            w.config = Utils.extend(w.config, options);\n\n            if (overwriteInitialConfig) {\n              // we need to forget the lastXAxis and lastYAxis is user forcefully overwriteInitialConfig. If we do not do this, and next time when user zooms the chart after setting yaxis.min/max or xaxis.min/max - the stored lastXAxis will never allow the chart to use the updated min/max by user.\n              w.globals.lastXAxis = [];\n              w.globals.lastYAxis = []; // After forgetting lastAxes, we need to restore the new config in initialConfig/initialSeries\n\n              w.globals.initialConfig = Utils.extend({}, w.config);\n              w.globals.initialSeries = JSON.parse(JSON.stringify(w.config.series));\n            }\n          }\n\n          return ch.update(options);\n        });\n      }\n      /**\n       * Private method to update Series.\n       *\n       * @param {array} series - New series which will override the existing\n       */\n\n    }, {\n      key: \"_updateSeries\",\n      value: function _updateSeries(newSeries, animate) {\n        var _this2 = this;\n\n        var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n        var w = this.w;\n        w.globals.shouldAnimate = animate;\n        w.globals.dataChanged = true;\n\n        if (animate) {\n          this.ctx.series.getPreviousPaths();\n        }\n\n        var existingSeries; // axis charts\n\n        if (w.globals.axisCharts) {\n          existingSeries = newSeries.map(function (s, i) {\n            return _this2._extendSeries(s, i);\n          });\n\n          if (existingSeries.length === 0) {\n            existingSeries = [{\n              data: []\n            }];\n          }\n\n          w.config.series = existingSeries;\n        } else {\n          // non-axis chart (pie/radialbar)\n          w.config.series = newSeries.slice();\n        }\n\n        if (overwriteInitialSeries) {\n          w.globals.initialConfig.series = JSON.parse(JSON.stringify(w.config.series));\n          w.globals.initialSeries = JSON.parse(JSON.stringify(w.config.series));\n        }\n\n        return this.ctx.update();\n      }\n    }, {\n      key: \"_extendSeries\",\n      value: function _extendSeries(s, i) {\n        var w = this.w;\n        return _objectSpread2({}, w.config.series[i], {\n          name: s.name ? s.name : w.config.series[i] && w.config.series[i].name,\n          type: s.type ? s.type : w.config.series[i] && w.config.series[i].type,\n          data: s.data ? s.data : w.config.series[i] && w.config.series[i].data\n        });\n      }\n    }, {\n      key: \"toggleDataPointSelection\",\n      value: function toggleDataPointSelection(seriesIndex, dataPointIndex) {\n        var w = this.w;\n        var elPath = null;\n        var parent = \".apexcharts-series[data\\\\:realIndex='\".concat(seriesIndex, \"']\");\n\n        if (w.globals.axisCharts) {\n          elPath = w.globals.dom.Paper.select(\"\".concat(parent, \" path[j='\").concat(dataPointIndex, \"'], \").concat(parent, \" circle[j='\").concat(dataPointIndex, \"'], \").concat(parent, \" rect[j='\").concat(dataPointIndex, \"']\")).members[0];\n        } else {\n          // dataPointIndex will be undefined here, hence using seriesIndex\n          if (typeof dataPointIndex === 'undefined') {\n            elPath = w.globals.dom.Paper.select(\"\".concat(parent, \" path[j='\").concat(seriesIndex, \"']\")).members[0];\n\n            if (w.config.chart.type === 'pie' || w.config.chart.type === 'donut') {\n              var pie = new Pie(this.ctx);\n              pie.pieClicked(seriesIndex);\n            }\n          }\n        }\n\n        if (elPath) {\n          var graphics = new Graphics(this.ctx);\n          graphics.pathMouseDown(elPath, null);\n        } else {\n          console.warn('toggleDataPointSelection: Element not found');\n          return null;\n        }\n\n        return elPath.node ? elPath.node : null;\n      }\n    }, {\n      key: \"forceXAxisUpdate\",\n      value: function forceXAxisUpdate(options) {\n        var w = this.w;\n        var minmax = ['min', 'max'];\n        minmax.forEach(function (a) {\n          if (typeof options.xaxis[a] !== 'undefined') {\n            w.config.xaxis[a] = options.xaxis[a];\n            w.globals.lastXAxis[a] = options.xaxis[a];\n          }\n        });\n\n        if (options.xaxis.categories && options.xaxis.categories.length) {\n          w.config.xaxis.categories = options.xaxis.categories;\n        }\n\n        if (w.config.xaxis.convertedCatToNumeric) {\n          var defaults = new Defaults(options);\n          options = defaults.convertCatToNumericXaxis(options, this.ctx);\n        }\n\n        return options;\n      }\n    }, {\n      key: \"forceYAxisUpdate\",\n      value: function forceYAxisUpdate(options) {\n        var w = this.w;\n\n        if (w.config.chart.stacked && w.config.chart.stackType === '100%') {\n          if (Array.isArray(options.yaxis)) {\n            options.yaxis.forEach(function (yaxe, index) {\n              options.yaxis[index].min = 0;\n              options.yaxis[index].max = 100;\n            });\n          } else {\n            options.yaxis.min = 0;\n            options.yaxis.max = 100;\n          }\n        }\n\n        return options;\n      }\n      /**\n       * This function reverts the yaxis and xaxis min/max values to what it was when the chart was defined.\n       * This function fixes an important bug where a user might load a new series after zooming in/out of previous series which resulted in wrong min/max\n       * Also, this should never be called internally on zoom/pan - the reset should only happen when user calls the updateSeries() function externally\n       */\n\n    }, {\n      key: \"revertDefaultAxisMinMax\",\n      value: function revertDefaultAxisMinMax() {\n        var _this3 = this;\n\n        var w = this.w;\n        w.config.xaxis.min = w.globals.lastXAxis.min;\n        w.config.xaxis.max = w.globals.lastXAxis.max;\n        w.config.yaxis.map(function (yaxe, index) {\n          if (w.globals.zoomed) {\n            // user has zoomed, check the last yaxis\n            if (typeof w.globals.lastYAxis[index] !== 'undefined') {\n              yaxe.min = w.globals.lastYAxis[index].min;\n              yaxe.max = w.globals.lastYAxis[index].max;\n            }\n          } else {\n            // user hasn't zoomed, check the original yaxis\n            if (typeof _this3.ctx.opts.yaxis[index] !== 'undefined') {\n              yaxe.min = _this3.ctx.opts.yaxis[index].min;\n              yaxe.max = _this3.ctx.opts.yaxis[index].max;\n            }\n          }\n        });\n      }\n    }]);\n\n    return UpdateHelpers;\n  }();\n\n  (function (root, factory) {\n    /* istanbul ignore next */\n    if (typeof define === 'function' && define.amd) {\n      define(function () {\n        return factory(root, root.document);\n      });\n      /* below check fixes #412 */\n    } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined') {\n      module.exports = root.document ? factory(root, root.document) : function (w) {\n        return factory(w, w.document);\n      };\n    } else {\n      root.SVG = factory(root, root.document);\n    }\n  })(typeof window !== 'undefined' ? window : undefined, function (window, document) {\n    // Find global reference - uses 'this' by default when available,\n    // falls back to 'window' otherwise (for bundlers like Webpack)\n    var globalRef = typeof this !== 'undefined' ? this : window; // The main wrapping element\n\n    var SVG = globalRef.SVG = function (element) {\n      if (SVG.supported) {\n        element = new SVG.Doc(element);\n\n        if (!SVG.parser.draw) {\n          SVG.prepare();\n        }\n\n        return element;\n      }\n    }; // Default namespaces\n\n\n    SVG.ns = 'http://www.w3.org/2000/svg';\n    SVG.xmlns = 'http://www.w3.org/2000/xmlns/';\n    SVG.xlink = 'http://www.w3.org/1999/xlink';\n    SVG.svgjs = 'http://svgjs.com/svgjs'; // Svg support test\n\n    SVG.supported = function () {\n      return true; // !!document.createElementNS &&\n      //     !! document.createElementNS(SVG.ns,'svg').createSVGRect\n    }(); // Don't bother to continue if SVG is not supported\n\n\n    if (!SVG.supported) return false; // Element id sequence\n\n    SVG.did = 1000; // Get next named element id\n\n    SVG.eid = function (name) {\n      return 'Svgjs' + capitalize(name) + SVG.did++;\n    }; // Method for element creation\n\n\n    SVG.create = function (name) {\n      // create element\n      var element = document.createElementNS(this.ns, name); // apply unique id\n\n      element.setAttribute('id', this.eid(name));\n      return element;\n    }; // Method for extending objects\n\n\n    SVG.extend = function () {\n      var modules, methods; // Get list of modules\n\n      modules = [].slice.call(arguments); // Get object with extensions\n\n      methods = modules.pop();\n\n      for (var i = modules.length - 1; i >= 0; i--) {\n        if (modules[i]) {\n          for (var key in methods) {\n            modules[i].prototype[key] = methods[key];\n          }\n        }\n      } // Make sure SVG.Set inherits any newly added methods\n\n\n      if (SVG.Set && SVG.Set.inherit) {\n        SVG.Set.inherit();\n      }\n    }; // Invent new element\n\n\n    SVG.invent = function (config) {\n      // Create element initializer\n      var initializer = typeof config.create === 'function' ? config.create : function () {\n        this.constructor.call(this, SVG.create(config.create));\n      }; // Inherit prototype\n\n      if (config.inherit) {\n        initializer.prototype = new config.inherit();\n      } // Extend with methods\n\n\n      if (config.extend) {\n        SVG.extend(initializer, config.extend);\n      } // Attach construct method to parent\n\n\n      if (config.construct) {\n        SVG.extend(config.parent || SVG.Container, config.construct);\n      }\n\n      return initializer;\n    }; // Adopt existing svg elements\n\n\n    SVG.adopt = function (node) {\n      // check for presence of node\n      if (!node) return null; // make sure a node isn't already adopted\n\n      if (node.instance) return node.instance; // initialize variables\n\n      var element; // adopt with element-specific settings\n\n      if (node.nodeName == 'svg') {\n        element = node.parentNode instanceof window.SVGElement ? new SVG.Nested() : new SVG.Doc();\n      } else if (node.nodeName == 'linearGradient') {\n        element = new SVG.Gradient('linear');\n      } else if (node.nodeName == 'radialGradient') {\n        element = new SVG.Gradient('radial');\n      } else if (SVG[capitalize(node.nodeName)]) {\n        element = new SVG[capitalize(node.nodeName)]();\n      } else {\n        element = new SVG.Element(node);\n      } // ensure references\n\n\n      element.type = node.nodeName;\n      element.node = node;\n      node.instance = element; // SVG.Class specific preparations\n\n      if (element instanceof SVG.Doc) {\n        element.namespace().defs();\n      } // pull svgjs data from the dom (getAttributeNS doesn't work in html5)\n\n\n      element.setData(JSON.parse(node.getAttribute('svgjs:data')) || {});\n      return element;\n    }; // Initialize parsing element\n\n\n    SVG.prepare = function () {\n      // Select document body and create invisible svg element\n      var body = document.getElementsByTagName('body')[0],\n          draw = (body ? new SVG.Doc(body) : SVG.adopt(document.documentElement).nested()).size(2, 0); // Create parser object\n\n      SVG.parser = {\n        body: body || document.documentElement,\n        draw: draw.style('opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden').node,\n        poly: draw.polyline().node,\n        path: draw.path().node,\n        native: SVG.create('svg')\n      };\n    };\n\n    SVG.parser = {\n      native: SVG.create('svg')\n    };\n    document.addEventListener('DOMContentLoaded', function () {\n      if (!SVG.parser.draw) {\n        SVG.prepare();\n      }\n    }, false); // Storage for regular expressions\n\n    SVG.regex = {\n      // Parse unit value\n      numberAndUnit: /^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i,\n      // Parse hex value\n      hex: /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,\n      // Parse rgb value\n      rgb: /rgb\\((\\d+),(\\d+),(\\d+)\\)/,\n      // Parse reference id\n      reference: /#([a-z0-9\\-_]+)/i,\n      // splits a transformation chain\n      transforms: /\\)\\s*,?\\s*/,\n      // Whitespace\n      whitespace: /\\s/g,\n      // Test hex value\n      isHex: /^#[a-f0-9]{3,6}$/i,\n      // Test rgb value\n      isRgb: /^rgb\\(/,\n      // Test css declaration\n      isCss: /[^:]+:[^;]+;?/,\n      // Test for blank string\n      isBlank: /^(\\s+)?$/,\n      // Test for numeric string\n      isNumber: /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\n      // Test for percent value\n      isPercent: /^-?[\\d\\.]+%$/,\n      // Test for image url\n      isImage: /\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i,\n      // split at whitespace and comma\n      delimiter: /[\\s,]+/,\n      // The following regex are used to parse the d attribute of a path\n      // Matches all hyphens which are not after an exponent\n      hyphen: /([^e])\\-/gi,\n      // Replaces and tests for all path letters\n      pathLetters: /[MLHVCSQTAZ]/gi,\n      // yes we need this one, too\n      isPathLetter: /[MLHVCSQTAZ]/i,\n      // matches 0.154.23.45\n      numbersWithDots: /((\\d?\\.\\d+(?:e[+-]?\\d+)?)((?:\\.\\d+(?:e[+-]?\\d+)?)+))+/gi,\n      // matches .\n      dots: /\\./g\n    };\n    SVG.utils = {\n      // Map function\n      map: function map(array, block) {\n        var il = array.length,\n            result = [];\n\n        for (var i = 0; i < il; i++) {\n          result.push(block(array[i]));\n        }\n\n        return result;\n      },\n      // Filter function\n      filter: function filter(array, block) {\n        var il = array.length,\n            result = [];\n\n        for (var i = 0; i < il; i++) {\n          if (block(array[i])) {\n            result.push(array[i]);\n          }\n        }\n\n        return result;\n      },\n      filterSVGElements: function filterSVGElements(nodes) {\n        return this.filter(nodes, function (el) {\n          return el instanceof window.SVGElement;\n        });\n      }\n    };\n    SVG.defaults = {\n      // Default attribute values\n      attrs: {\n        // fill and stroke\n        'fill-opacity': 1,\n        'stroke-opacity': 1,\n        'stroke-width': 0,\n        'stroke-linejoin': 'miter',\n        'stroke-linecap': 'butt',\n        fill: '#000000',\n        stroke: '#000000',\n        opacity: 1,\n        // position\n        x: 0,\n        y: 0,\n        cx: 0,\n        cy: 0,\n        // size\n        width: 0,\n        height: 0,\n        // radius\n        r: 0,\n        rx: 0,\n        ry: 0,\n        // gradient\n        offset: 0,\n        'stop-opacity': 1,\n        'stop-color': '#000000',\n        // text\n        'font-size': 16,\n        'font-family': 'Helvetica, Arial, sans-serif',\n        'text-anchor': 'start'\n      }\n    }; // Module for color convertions\n\n    SVG.Color = function (color) {\n      var match; // initialize defaults\n\n      this.r = 0;\n      this.g = 0;\n      this.b = 0;\n      if (!color) return; // parse color\n\n      if (typeof color === 'string') {\n        if (SVG.regex.isRgb.test(color)) {\n          // get rgb values\n          match = SVG.regex.rgb.exec(color.replace(SVG.regex.whitespace, '')); // parse numeric values\n\n          this.r = parseInt(match[1]);\n          this.g = parseInt(match[2]);\n          this.b = parseInt(match[3]);\n        } else if (SVG.regex.isHex.test(color)) {\n          // get hex values\n          match = SVG.regex.hex.exec(fullHex(color)); // parse numeric values\n\n          this.r = parseInt(match[1], 16);\n          this.g = parseInt(match[2], 16);\n          this.b = parseInt(match[3], 16);\n        }\n      } else if (_typeof(color) === 'object') {\n        this.r = color.r;\n        this.g = color.g;\n        this.b = color.b;\n      }\n    };\n\n    SVG.extend(SVG.Color, {\n      // Default to hex conversion\n      toString: function toString() {\n        return this.toHex();\n      },\n      // Build hex value\n      toHex: function toHex() {\n        return '#' + compToHex(this.r) + compToHex(this.g) + compToHex(this.b);\n      },\n      // Build rgb value\n      toRgb: function toRgb() {\n        return 'rgb(' + [this.r, this.g, this.b].join() + ')';\n      },\n      // Calculate true brightness\n      brightness: function brightness() {\n        return this.r / 255 * 0.30 + this.g / 255 * 0.59 + this.b / 255 * 0.11;\n      },\n      // Make color morphable\n      morph: function morph(color) {\n        this.destination = new SVG.Color(color);\n        return this;\n      },\n      // Get morphed color at given position\n      at: function at(pos) {\n        // make sure a destination is defined\n        if (!this.destination) return this; // normalise pos\n\n        pos = pos < 0 ? 0 : pos > 1 ? 1 : pos; // generate morphed color\n\n        return new SVG.Color({\n          r: ~~(this.r + (this.destination.r - this.r) * pos),\n          g: ~~(this.g + (this.destination.g - this.g) * pos),\n          b: ~~(this.b + (this.destination.b - this.b) * pos)\n        });\n      }\n    }); // Testers\n    // Test if given value is a color string\n\n    SVG.Color.test = function (color) {\n      color += '';\n      return SVG.regex.isHex.test(color) || SVG.regex.isRgb.test(color);\n    }; // Test if given value is a rgb object\n\n\n    SVG.Color.isRgb = function (color) {\n      return color && typeof color.r === 'number' && typeof color.g === 'number' && typeof color.b === 'number';\n    }; // Test if given value is a color\n\n\n    SVG.Color.isColor = function (color) {\n      return SVG.Color.isRgb(color) || SVG.Color.test(color);\n    }; // Module for array conversion\n\n\n    SVG.Array = function (array, fallback) {\n      array = (array || []).valueOf(); // if array is empty and fallback is provided, use fallback\n\n      if (array.length == 0 && fallback) {\n        array = fallback.valueOf();\n      } // parse array\n\n\n      this.value = this.parse(array);\n    };\n\n    SVG.extend(SVG.Array, {\n      // Convert array to string\n      toString: function toString() {\n        return this.value.join(' ');\n      },\n      // Real value\n      valueOf: function valueOf() {\n        return this.value;\n      },\n      // Parse whitespace separated string\n      parse: function parse(array) {\n        array = array.valueOf(); // if already is an array, no need to parse it\n\n        if (Array.isArray(array)) return array;\n        return this.split(array);\n      }\n    }); // Poly points array\n\n    SVG.PointArray = function (array, fallback) {\n      SVG.Array.call(this, array, fallback || [[0, 0]]);\n    }; // Inherit from SVG.Array\n\n\n    SVG.PointArray.prototype = new SVG.Array();\n    SVG.PointArray.prototype.constructor = SVG.PointArray;\n    var pathHandlers = {\n      M: function M(c, p, p0) {\n        p.x = p0.x = c[0];\n        p.y = p0.y = c[1];\n        return ['M', p.x, p.y];\n      },\n      L: function L(c, p) {\n        p.x = c[0];\n        p.y = c[1];\n        return ['L', c[0], c[1]];\n      },\n      H: function H(c, p) {\n        p.x = c[0];\n        return ['H', c[0]];\n      },\n      V: function V(c, p) {\n        p.y = c[0];\n        return ['V', c[0]];\n      },\n      C: function C(c, p) {\n        p.x = c[4];\n        p.y = c[5];\n        return ['C', c[0], c[1], c[2], c[3], c[4], c[5]];\n      },\n      Q: function Q(c, p) {\n        p.x = c[2];\n        p.y = c[3];\n        return ['Q', c[0], c[1], c[2], c[3]];\n      },\n      Z: function Z(c, p, p0) {\n        p.x = p0.x;\n        p.y = p0.y;\n        return ['Z'];\n      }\n    };\n    var mlhvqtcsa = 'mlhvqtcsaz'.split('');\n\n    for (var i = 0, il = mlhvqtcsa.length; i < il; ++i) {\n      pathHandlers[mlhvqtcsa[i]] = function (i) {\n        return function (c, p, p0) {\n          if (i == 'H') c[0] = c[0] + p.x;else if (i == 'V') c[0] = c[0] + p.y;else if (i == 'A') {\n            c[5] = c[5] + p.x, c[6] = c[6] + p.y;\n          } else {\n            for (var j = 0, jl = c.length; j < jl; ++j) {\n              c[j] = c[j] + (j % 2 ? p.y : p.x);\n            }\n          }\n          return pathHandlers[i](c, p, p0);\n        };\n      }(mlhvqtcsa[i].toUpperCase());\n    } // Path points array\n\n\n    SVG.PathArray = function (array, fallback) {\n      SVG.Array.call(this, array, fallback || [['M', 0, 0]]);\n    }; // Inherit from SVG.Array\n\n\n    SVG.PathArray.prototype = new SVG.Array();\n    SVG.PathArray.prototype.constructor = SVG.PathArray;\n    SVG.extend(SVG.PathArray, {\n      // Convert array to string\n      toString: function toString() {\n        return arrayToString(this.value);\n      },\n      // Move path string\n      move: function move(x, y) {\n        // get bounding box of current situation\n        var box = this.bbox(); // get relative offset\n\n        x -= box.x;\n        y -= box.y;\n        return this;\n      },\n      // Get morphed path array at given position\n      at: function at(pos) {\n        // make sure a destination is defined\n        if (!this.destination) return this;\n        var sourceArray = this.value,\n            destinationArray = this.destination.value,\n            array = [],\n            pathArray = new SVG.PathArray(),\n            il,\n            jl; // Animate has specified in the SVG spec\n        // See: https://www.w3.org/TR/SVG11/paths.html#PathElement\n\n        for (var i = 0, il = sourceArray.length; i < il; i++) {\n          array[i] = [sourceArray[i][0]];\n\n          for (var j = 1, jl = sourceArray[i].length; j < jl; j++) {\n            array[i][j] = sourceArray[i][j] + (destinationArray[i][j] - sourceArray[i][j]) * pos;\n          } // For the two flags of the elliptical arc command, the SVG spec say:\n          // Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true\n          // Elliptical arc command as an array followed by corresponding indexes:\n          // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]\n          //   0    1   2        3                 4             5      6  7\n\n\n          if (array[i][0] === 'A') {\n            array[i][4] = +(array[i][4] != 0);\n            array[i][5] = +(array[i][5] != 0);\n          }\n        } // Directly modify the value of a path array, this is done this way for performance\n\n\n        pathArray.value = array;\n        return pathArray;\n      },\n      // Absolutize and parse path to array\n      parse: function parse(array) {\n        // if it's already a patharray, no need to parse it\n        if (array instanceof SVG.PathArray) return array.valueOf(); // prepare for parsing\n\n        var s,\n            arr,\n            paramCnt = {\n          'M': 2,\n          'L': 2,\n          'H': 1,\n          'V': 1,\n          'C': 6,\n          'S': 4,\n          'Q': 4,\n          'T': 2,\n          'A': 7,\n          'Z': 0\n        };\n\n        if (typeof array === 'string') {\n          array = array.replace(SVG.regex.numbersWithDots, pathRegReplace) // convert 45.123.123 to 45.123 .123\n          .replace(SVG.regex.pathLetters, ' $& ') // put some room between letters and numbers\n          .replace(SVG.regex.hyphen, '$1 -') // add space before hyphen\n          .trim() // trim\n          .split(SVG.regex.delimiter); // split into array\n        } else {\n          array = array.reduce(function (prev, curr) {\n            return [].concat.call(prev, curr);\n          }, []);\n        } // array now is an array containing all parts of a path e.g. ['M', '0', '0', 'L', '30', '30' ...]\n\n\n        var arr = [],\n            p = new SVG.Point(),\n            p0 = new SVG.Point(),\n            index = 0,\n            len = array.length;\n\n        do {\n          // Test if we have a path letter\n          if (SVG.regex.isPathLetter.test(array[index])) {\n            s = array[index];\n            ++index; // If last letter was a move command and we got no new, it defaults to [L]ine\n          } else if (s == 'M') {\n            s = 'L';\n          } else if (s == 'm') {\n            s = 'l';\n          }\n\n          arr.push(pathHandlers[s].call(null, array.slice(index, index = index + paramCnt[s.toUpperCase()]).map(parseFloat), p, p0));\n        } while (len > index);\n\n        return arr;\n      },\n      // Get bounding box of path\n      bbox: function bbox() {\n        if (!SVG.parser.draw) {\n          SVG.prepare();\n        }\n\n        SVG.parser.path.setAttribute('d', this.toString());\n        return SVG.parser.path.getBBox();\n      }\n    }); // Module for unit convertions\n\n    SVG.Number = SVG.invent({\n      // Initialize\n      create: function create(value, unit) {\n        // initialize defaults\n        this.value = 0;\n        this.unit = unit || ''; // parse value\n\n        if (typeof value === 'number') {\n          // ensure a valid numeric value\n          this.value = isNaN(value) ? 0 : !isFinite(value) ? value < 0 ? -3.4e+38 : +3.4e+38 : value;\n        } else if (typeof value === 'string') {\n          unit = value.match(SVG.regex.numberAndUnit);\n\n          if (unit) {\n            // make value numeric\n            this.value = parseFloat(unit[1]); // normalize\n\n            if (unit[5] == '%') {\n              this.value /= 100;\n            } else if (unit[5] == 's') {\n              this.value *= 1000;\n            } // store unit\n\n\n            this.unit = unit[5];\n          }\n        } else {\n          if (value instanceof SVG.Number) {\n            this.value = value.valueOf();\n            this.unit = value.unit;\n          }\n        }\n      },\n      // Add methods\n      extend: {\n        // Stringalize\n        toString: function toString() {\n          return (this.unit == '%' ? ~~(this.value * 1e8) / 1e6 : this.unit == 's' ? this.value / 1e3 : this.value) + this.unit;\n        },\n        toJSON: function toJSON() {\n          return this.toString();\n        },\n        // Convert to primitive\n        valueOf: function valueOf() {\n          return this.value;\n        },\n        // Add number\n        plus: function plus(number) {\n          number = new SVG.Number(number);\n          return new SVG.Number(this + number, this.unit || number.unit);\n        },\n        // Subtract number\n        minus: function minus(number) {\n          number = new SVG.Number(number);\n          return new SVG.Number(this - number, this.unit || number.unit);\n        },\n        // Multiply number\n        times: function times(number) {\n          number = new SVG.Number(number);\n          return new SVG.Number(this * number, this.unit || number.unit);\n        },\n        // Divide number\n        divide: function divide(number) {\n          number = new SVG.Number(number);\n          return new SVG.Number(this / number, this.unit || number.unit);\n        },\n        // Convert to different unit\n        to: function to(unit) {\n          var number = new SVG.Number(this);\n\n          if (typeof unit === 'string') {\n            number.unit = unit;\n          }\n\n          return number;\n        },\n        // Make number morphable\n        morph: function morph(number) {\n          this.destination = new SVG.Number(number);\n\n          if (number.relative) {\n            this.destination.value += this.value;\n          }\n\n          return this;\n        },\n        // Get morphed number at given position\n        at: function at(pos) {\n          // Make sure a destination is defined\n          if (!this.destination) return this; // Generate new morphed number\n\n          return new SVG.Number(this.destination).minus(this).times(pos).plus(this);\n        }\n      }\n    });\n    SVG.Element = SVG.invent({\n      // Initialize node\n      create: function create(node) {\n        // make stroke value accessible dynamically\n        this._stroke = SVG.defaults.attrs.stroke;\n        this._event = null; // initialize data object\n\n        this.dom = {}; // create circular reference\n\n        if (this.node = node) {\n          this.type = node.nodeName;\n          this.node.instance = this; // store current attribute value\n\n          this._stroke = node.getAttribute('stroke') || this._stroke;\n        }\n      },\n      // Add class methods\n      extend: {\n        // Move over x-axis\n        x: function x(_x) {\n          return this.attr('x', _x);\n        },\n        // Move over y-axis\n        y: function y(_y) {\n          return this.attr('y', _y);\n        },\n        // Move by center over x-axis\n        cx: function cx(x) {\n          return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2);\n        },\n        // Move by center over y-axis\n        cy: function cy(y) {\n          return y == null ? this.y() + this.height() / 2 : this.y(y - this.height() / 2);\n        },\n        // Move element to given x and y values\n        move: function move(x, y) {\n          return this.x(x).y(y);\n        },\n        // Move element by its center\n        center: function center(x, y) {\n          return this.cx(x).cy(y);\n        },\n        // Set width of element\n        width: function width(_width) {\n          return this.attr('width', _width);\n        },\n        // Set height of element\n        height: function height(_height) {\n          return this.attr('height', _height);\n        },\n        // Set element size to given width and height\n        size: function size(width, height) {\n          var p = proportionalSize(this, width, height);\n          return this.width(new SVG.Number(p.width)).height(new SVG.Number(p.height));\n        },\n        // Clone element\n        clone: function clone(parent) {\n          // write dom data to the dom so the clone can pickup the data\n          this.writeDataToDom(); // clone element and assign new id\n\n          var clone = assignNewId(this.node.cloneNode(true)); // insert the clone in the given parent or after myself\n\n          if (parent) parent.add(clone);else this.after(clone);\n          return clone;\n        },\n        // Remove element\n        remove: function remove() {\n          if (this.parent()) {\n            this.parent().removeElement(this);\n          }\n\n          return this;\n        },\n        // Replace element\n        replace: function replace(element) {\n          this.after(element).remove();\n          return element;\n        },\n        // Add element to given container and return self\n        addTo: function addTo(parent) {\n          return parent.put(this);\n        },\n        // Add element to given container and return container\n        putIn: function putIn(parent) {\n          return parent.add(this);\n        },\n        // Get / set id\n        id: function id(_id) {\n          return this.attr('id', _id);\n        },\n        // Show element\n        show: function show() {\n          return this.style('display', '');\n        },\n        // Hide element\n        hide: function hide() {\n          return this.style('display', 'none');\n        },\n        // Is element visible?\n        visible: function visible() {\n          return this.style('display') != 'none';\n        },\n        // Return id on string conversion\n        toString: function toString() {\n          return this.attr('id');\n        },\n        // Return array of classes on the node\n        classes: function classes() {\n          var attr = this.attr('class');\n          return attr == null ? [] : attr.trim().split(SVG.regex.delimiter);\n        },\n        // Return true if class exists on the node, false otherwise\n        hasClass: function hasClass(name) {\n          return this.classes().indexOf(name) != -1;\n        },\n        // Add class to the node\n        addClass: function addClass(name) {\n          if (!this.hasClass(name)) {\n            var array = this.classes();\n            array.push(name);\n            this.attr('class', array.join(' '));\n          }\n\n          return this;\n        },\n        // Remove class from the node\n        removeClass: function removeClass(name) {\n          if (this.hasClass(name)) {\n            this.attr('class', this.classes().filter(function (c) {\n              return c != name;\n            }).join(' '));\n          }\n\n          return this;\n        },\n        // Toggle the presence of a class on the node\n        toggleClass: function toggleClass(name) {\n          return this.hasClass(name) ? this.removeClass(name) : this.addClass(name);\n        },\n        // Get referenced element form attribute value\n        reference: function reference(attr) {\n          return SVG.get(this.attr(attr));\n        },\n        // Returns the parent element instance\n        parent: function parent(type) {\n          var parent = this; // check for parent\n\n          if (!parent.node.parentNode) return null; // get parent element\n\n          parent = SVG.adopt(parent.node.parentNode);\n          if (!type) return parent; // loop trough ancestors if type is given\n\n          while (parent && parent.node instanceof window.SVGElement) {\n            if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent;\n            if (!parent.node.parentNode || parent.node.parentNode.nodeName == '#document') return null; // #759, #720\n\n            parent = SVG.adopt(parent.node.parentNode);\n          }\n        },\n        // Get parent document\n        doc: function doc() {\n          return this instanceof SVG.Doc ? this : this.parent(SVG.Doc);\n        },\n        // return array of all ancestors of given type up to the root svg\n        parents: function parents(type) {\n          var parents = [],\n              parent = this;\n\n          do {\n            parent = parent.parent(type);\n            if (!parent || !parent.node) break;\n            parents.push(parent);\n          } while (parent.parent);\n\n          return parents;\n        },\n        // matches the element vs a css selector\n        matches: function matches(selector) {\n          return _matches(this.node, selector);\n        },\n        // Returns the svg node to call native svg methods on it\n        native: function native() {\n          return this.node;\n        },\n        // Import raw svg\n        svg: function svg(_svg) {\n          // create temporary holder\n          var well = document.createElement('svg'); // act as a setter if svg is given\n\n          if (_svg && this instanceof SVG.Parent) {\n            // dump raw svg\n            well.innerHTML = '<svg>' + _svg.replace(/\\n/, '').replace(/<([\\w:-]+)([^<]+?)\\/>/g, '<$1$2></$1>') + '</svg>'; // transplant nodes\n\n            for (var i = 0, il = well.firstChild.childNodes.length; i < il; i++) {\n              this.node.appendChild(well.firstChild.firstChild);\n            } // otherwise act as a getter\n\n          } else {\n            // create a wrapping svg element in case of partial content\n            well.appendChild(_svg = document.createElement('svg')); // write svgjs data to the dom\n\n            this.writeDataToDom(); // insert a copy of this node\n\n            _svg.appendChild(this.node.cloneNode(true)); // return target element\n\n\n            return well.innerHTML.replace(/^<svg>/, '').replace(/<\\/svg>$/, '');\n          }\n\n          return this;\n        },\n        // write svgjs data to the dom\n        writeDataToDom: function writeDataToDom() {\n          // dump variables recursively\n          if (this.each || this.lines) {\n            var fn = this.each ? this : this.lines();\n            fn.each(function () {\n              this.writeDataToDom();\n            });\n          } // remove previously set data\n\n\n          this.node.removeAttribute('svgjs:data');\n\n          if (Object.keys(this.dom).length) {\n            this.node.setAttribute('svgjs:data', JSON.stringify(this.dom));\n          } // see #428\n\n\n          return this;\n        },\n        // set given data to the elements data property\n        setData: function setData(o) {\n          this.dom = o;\n          return this;\n        },\n        is: function is(obj) {\n          return _is(this, obj);\n        }\n      }\n    });\n    SVG.easing = {\n      '-': function _(pos) {\n        return pos;\n      },\n      '<>': function _(pos) {\n        return -Math.cos(pos * Math.PI) / 2 + 0.5;\n      },\n      '>': function _(pos) {\n        return Math.sin(pos * Math.PI / 2);\n      },\n      '<': function _(pos) {\n        return -Math.cos(pos * Math.PI / 2) + 1;\n      }\n    };\n\n    SVG.morph = function (pos) {\n      return function (from, to) {\n        return new SVG.MorphObj(from, to).at(pos);\n      };\n    };\n\n    SVG.Situation = SVG.invent({\n      create: function create(o) {\n        this.init = false;\n        this.reversed = false;\n        this.reversing = false;\n        this.duration = new SVG.Number(o.duration).valueOf();\n        this.delay = new SVG.Number(o.delay).valueOf();\n        this.start = +new Date() + this.delay;\n        this.finish = this.start + this.duration;\n        this.ease = o.ease; // this.loop is incremented from 0 to this.loops\n        // it is also incremented when in an infinite loop (when this.loops is true)\n\n        this.loop = 0;\n        this.loops = false;\n        this.animations = {// functionToCall: [list of morphable objects]\n          // e.g. move: [SVG.Number, SVG.Number]\n        };\n        this.attrs = {// holds all attributes which are not represented from a function svg.js provides\n          // e.g. someAttr: SVG.Number\n        };\n        this.styles = {// holds all styles which should be animated\n          // e.g. fill-color: SVG.Color\n        };\n        this.transforms = [// holds all transformations as transformation objects\n          // e.g. [SVG.Rotate, SVG.Translate, SVG.Matrix]\n        ];\n        this.once = {// functions to fire at a specific position\n          // e.g. \"0.5\": function foo(){}\n        };\n      }\n    });\n    SVG.FX = SVG.invent({\n      create: function create(element) {\n        this._target = element;\n        this.situations = [];\n        this.active = false;\n        this.situation = null;\n        this.paused = false;\n        this.lastPos = 0;\n        this.pos = 0; // The absolute position of an animation is its position in the context of its complete duration (including delay and loops)\n        // When performing a delay, absPos is below 0 and when performing a loop, its value is above 1\n\n        this.absPos = 0;\n        this._speed = 1;\n      },\n      extend: {\n        /**\n         * sets or returns the target of this animation\n         * @param o object || number In case of Object it holds all parameters. In case of number its the duration of the animation\n         * @param ease function || string Function which should be used for easing or easing keyword\n         * @param delay Number indicating the delay before the animation starts\n         * @return target || this\n         */\n        animate: function animate(o, ease, delay) {\n          if (_typeof(o) === 'object') {\n            ease = o.ease;\n            delay = o.delay;\n            o = o.duration;\n          }\n\n          var situation = new SVG.Situation({\n            duration: o || 1000,\n            delay: delay || 0,\n            ease: SVG.easing[ease || '-'] || ease\n          });\n          this.queue(situation);\n          return this;\n        },\n\n        /**\n        * sets a delay before the next element of the queue is called\n        * @param delay Duration of delay in milliseconds\n        * @return this.target()\n        */\n\n        /**\n        * sets or returns the target of this animation\n        * @param null || target SVG.Element which should be set as new target\n        * @return target || this\n        */\n        target: function target(_target) {\n          if (_target && _target instanceof SVG.Element) {\n            this._target = _target;\n            return this;\n          }\n\n          return this._target;\n        },\n        // returns the absolute position at a given time\n        timeToAbsPos: function timeToAbsPos(timestamp) {\n          return (timestamp - this.situation.start) / (this.situation.duration / this._speed);\n        },\n        // returns the timestamp from a given absolute positon\n        absPosToTime: function absPosToTime(absPos) {\n          return this.situation.duration / this._speed * absPos + this.situation.start;\n        },\n        // starts the animationloop\n        startAnimFrame: function startAnimFrame() {\n          this.stopAnimFrame();\n          this.animationFrame = window.requestAnimationFrame(function () {\n            this.step();\n          }.bind(this));\n        },\n        // cancels the animationframe\n        stopAnimFrame: function stopAnimFrame() {\n          window.cancelAnimationFrame(this.animationFrame);\n        },\n        // kicks off the animation - only does something when the queue is currently not active and at least one situation is set\n        start: function start() {\n          // dont start if already started\n          if (!this.active && this.situation) {\n            this.active = true;\n            this.startCurrent();\n          }\n\n          return this;\n        },\n        // start the current situation\n        startCurrent: function startCurrent() {\n          this.situation.start = +new Date() + this.situation.delay / this._speed;\n          this.situation.finish = this.situation.start + this.situation.duration / this._speed;\n          return this.initAnimations().step();\n        },\n\n        /**\n        * adds a function / Situation to the animation queue\n        * @param fn function / situation to add\n        * @return this\n        */\n        queue: function queue(fn) {\n          if (typeof fn === 'function' || fn instanceof SVG.Situation) {\n            this.situations.push(fn);\n          }\n\n          if (!this.situation) this.situation = this.situations.shift();\n          return this;\n        },\n\n        /**\n        * pulls next element from the queue and execute it\n        * @return this\n        */\n        dequeue: function dequeue() {\n          // stop current animation\n          this.stop(); // get next animation from queue\n\n          this.situation = this.situations.shift();\n\n          if (this.situation) {\n            if (this.situation instanceof SVG.Situation) {\n              this.start();\n            } else {\n              // If it is not a SVG.Situation, then it is a function, we execute it\n              this.situation.call(this);\n            }\n          }\n\n          return this;\n        },\n        // updates all animations to the current state of the element\n        // this is important when one property could be changed from another property\n        initAnimations: function initAnimations() {\n          var source;\n          var s = this.situation;\n          if (s.init) return this;\n\n          for (var i in s.animations) {\n            source = this.target()[i]();\n\n            if (!Array.isArray(source)) {\n              source = [source];\n            }\n\n            if (!Array.isArray(s.animations[i])) {\n              s.animations[i] = [s.animations[i]];\n            } // if(s.animations[i].length > source.length) {\n            //  source.concat = source.concat(s.animations[i].slice(source.length, s.animations[i].length))\n            // }\n\n\n            for (var j = source.length; j--;) {\n              // The condition is because some methods return a normal number instead\n              // of a SVG.Number\n              if (s.animations[i][j] instanceof SVG.Number) {\n                source[j] = new SVG.Number(source[j]);\n              }\n\n              s.animations[i][j] = source[j].morph(s.animations[i][j]);\n            }\n          }\n\n          for (var i in s.attrs) {\n            s.attrs[i] = new SVG.MorphObj(this.target().attr(i), s.attrs[i]);\n          }\n\n          for (var i in s.styles) {\n            s.styles[i] = new SVG.MorphObj(this.target().style(i), s.styles[i]);\n          }\n\n          s.initialTransformation = this.target().matrixify();\n          s.init = true;\n          return this;\n        },\n        clearQueue: function clearQueue() {\n          this.situations = [];\n          return this;\n        },\n        clearCurrent: function clearCurrent() {\n          this.situation = null;\n          return this;\n        },\n\n        /** stops the animation immediately\n        * @param jumpToEnd A Boolean indicating whether to complete the current animation immediately.\n        * @param clearQueue A Boolean indicating whether to remove queued animation as well.\n        * @return this\n        */\n        stop: function stop(jumpToEnd, clearQueue) {\n          var active = this.active;\n          this.active = false;\n\n          if (clearQueue) {\n            this.clearQueue();\n          }\n\n          if (jumpToEnd && this.situation) {\n            // initialize the situation if it was not\n            !active && this.startCurrent();\n            this.atEnd();\n          }\n\n          this.stopAnimFrame();\n          return this.clearCurrent();\n        },\n        after: function after(fn) {\n          var c = this.last(),\n              wrapper = function wrapper(e) {\n            if (e.detail.situation == c) {\n              fn.call(this, c);\n              this.off('finished.fx', wrapper); // prevent memory leak\n            }\n          };\n\n          this.target().on('finished.fx', wrapper);\n          return this._callStart();\n        },\n        // adds a callback which is called whenever one animation step is performed\n        during: function during(fn) {\n          var c = this.last(),\n              wrapper = function wrapper(e) {\n            if (e.detail.situation == c) {\n              fn.call(this, e.detail.pos, SVG.morph(e.detail.pos), e.detail.eased, c);\n            }\n          }; // see above\n\n\n          this.target().off('during.fx', wrapper).on('during.fx', wrapper);\n          this.after(function () {\n            this.off('during.fx', wrapper);\n          });\n          return this._callStart();\n        },\n        // calls after ALL animations in the queue are finished\n        afterAll: function afterAll(fn) {\n          var wrapper = function wrapper(e) {\n            fn.call(this);\n            this.off('allfinished.fx', wrapper);\n          }; // see above\n\n\n          this.target().off('allfinished.fx', wrapper).on('allfinished.fx', wrapper);\n          return this._callStart();\n        },\n        last: function last() {\n          return this.situations.length ? this.situations[this.situations.length - 1] : this.situation;\n        },\n        // adds one property to the animations\n        add: function add(method, args, type) {\n          this.last()[type || 'animations'][method] = args;\n          return this._callStart();\n        },\n\n        /** perform one step of the animation\n        *  @param ignoreTime Boolean indicating whether to ignore time and use position directly or recalculate position based on time\n        *  @return this\n        */\n        step: function step(ignoreTime) {\n          // convert current time to an absolute position\n          if (!ignoreTime) this.absPos = this.timeToAbsPos(+new Date()); // This part convert an absolute position to a position\n\n          if (this.situation.loops !== false) {\n            var absPos, absPosInt, lastLoop; // If the absolute position is below 0, we just treat it as if it was 0\n\n            absPos = Math.max(this.absPos, 0);\n            absPosInt = Math.floor(absPos);\n\n            if (this.situation.loops === true || absPosInt < this.situation.loops) {\n              this.pos = absPos - absPosInt;\n              lastLoop = this.situation.loop;\n              this.situation.loop = absPosInt;\n            } else {\n              this.absPos = this.situation.loops;\n              this.pos = 1; // The -1 here is because we don't want to toggle reversed when all the loops have been completed\n\n              lastLoop = this.situation.loop - 1;\n              this.situation.loop = this.situation.loops;\n            }\n\n            if (this.situation.reversing) {\n              // Toggle reversed if an odd number of loops as occured since the last call of step\n              this.situation.reversed = this.situation.reversed != Boolean((this.situation.loop - lastLoop) % 2);\n            }\n          } else {\n            // If there are no loop, the absolute position must not be above 1\n            this.absPos = Math.min(this.absPos, 1);\n            this.pos = this.absPos;\n          } // while the absolute position can be below 0, the position must not be below 0\n\n\n          if (this.pos < 0) this.pos = 0;\n          if (this.situation.reversed) this.pos = 1 - this.pos; // apply easing\n\n          var eased = this.situation.ease(this.pos); // call once-callbacks\n\n          for (var i in this.situation.once) {\n            if (i > this.lastPos && i <= eased) {\n              this.situation.once[i].call(this.target(), this.pos, eased);\n              delete this.situation.once[i];\n            }\n          } // fire during callback with position, eased position and current situation as parameter\n\n\n          if (this.active) this.target().fire('during', {\n            pos: this.pos,\n            eased: eased,\n            fx: this,\n            situation: this.situation\n          }); // the user may call stop or finish in the during callback\n          // so make sure that we still have a valid situation\n\n          if (!this.situation) {\n            return this;\n          } // apply the actual animation to every property\n\n\n          this.eachAt(); // do final code when situation is finished\n\n          if (this.pos == 1 && !this.situation.reversed || this.situation.reversed && this.pos == 0) {\n            // stop animation callback\n            this.stopAnimFrame(); // fire finished callback with current situation as parameter\n\n            this.target().fire('finished', {\n              fx: this,\n              situation: this.situation\n            });\n\n            if (!this.situations.length) {\n              this.target().fire('allfinished'); // Recheck the length since the user may call animate in the afterAll callback\n\n              if (!this.situations.length) {\n                this.target().off('.fx'); // there shouldnt be any binding left, but to make sure...\n\n                this.active = false;\n              }\n            } // start next animation\n\n\n            if (this.active) this.dequeue();else this.clearCurrent();\n          } else if (!this.paused && this.active) {\n            // we continue animating when we are not at the end\n            this.startAnimFrame();\n          } // save last eased position for once callback triggering\n\n\n          this.lastPos = eased;\n          return this;\n        },\n        // calculates the step for every property and calls block with it\n        eachAt: function eachAt() {\n          var len,\n              at,\n              self = this,\n              target = this.target(),\n              s = this.situation; // apply animations which can be called trough a method\n\n          for (var i in s.animations) {\n            at = [].concat(s.animations[i]).map(function (el) {\n              return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;\n            });\n            target[i].apply(target, at);\n          } // apply animation which has to be applied with attr()\n\n\n          for (var i in s.attrs) {\n            at = [i].concat(s.attrs[i]).map(function (el) {\n              return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;\n            });\n            target.attr.apply(target, at);\n          } // apply animation which has to be applied with style()\n\n\n          for (var i in s.styles) {\n            at = [i].concat(s.styles[i]).map(function (el) {\n              return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el;\n            });\n            target.style.apply(target, at);\n          } // animate initialTransformation which has to be chained\n\n\n          if (s.transforms.length) {\n            // get initial initialTransformation\n            at = s.initialTransformation;\n\n            for (var i = 0, len = s.transforms.length; i < len; i++) {\n              // get next transformation in chain\n              var a = s.transforms[i]; // multiply matrix directly\n\n              if (a instanceof SVG.Matrix) {\n                if (a.relative) {\n                  at = at.multiply(new SVG.Matrix().morph(a).at(s.ease(this.pos)));\n                } else {\n                  at = at.morph(a).at(s.ease(this.pos));\n                }\n\n                continue;\n              } // when transformation is absolute we have to reset the needed transformation first\n\n\n              if (!a.relative) {\n                a.undo(at.extract());\n              } // and reapply it after\n\n\n              at = at.multiply(a.at(s.ease(this.pos)));\n            } // set new matrix on element\n\n\n            target.matrix(at);\n          }\n\n          return this;\n        },\n        // adds an once-callback which is called at a specific position and never again\n        once: function once(pos, fn, isEased) {\n          var c = this.last();\n          if (!isEased) pos = c.ease(pos);\n          c.once[pos] = fn;\n          return this;\n        },\n        _callStart: function _callStart() {\n          setTimeout(function () {\n            this.start();\n          }.bind(this), 0);\n          return this;\n        }\n      },\n      parent: SVG.Element,\n      // Add method to parent elements\n      construct: {\n        // Get fx module or create a new one, then animate with given duration and ease\n        animate: function animate(o, ease, delay) {\n          return (this.fx || (this.fx = new SVG.FX(this))).animate(o, ease, delay);\n        },\n        delay: function delay(_delay) {\n          return (this.fx || (this.fx = new SVG.FX(this))).delay(_delay);\n        },\n        stop: function stop(jumpToEnd, clearQueue) {\n          if (this.fx) {\n            this.fx.stop(jumpToEnd, clearQueue);\n          }\n\n          return this;\n        },\n        finish: function finish() {\n          if (this.fx) {\n            this.fx.finish();\n          }\n\n          return this;\n        }\n      }\n    }); // MorphObj is used whenever no morphable object is given\n\n    SVG.MorphObj = SVG.invent({\n      create: function create(from, to) {\n        // prepare color for morphing\n        if (SVG.Color.isColor(to)) return new SVG.Color(from).morph(to); // check if we have a list of values\n\n        if (SVG.regex.delimiter.test(from)) {\n          // prepare path for morphing\n          if (SVG.regex.pathLetters.test(from)) return new SVG.PathArray(from).morph(to); // prepare value list for morphing\n          else return new SVG.Array(from).morph(to);\n        } // prepare number for morphing\n\n\n        if (SVG.regex.numberAndUnit.test(to)) return new SVG.Number(from).morph(to); // prepare for plain morphing\n\n        this.value = from;\n        this.destination = to;\n      },\n      extend: {\n        at: function at(pos, real) {\n          return real < 1 ? this.value : this.destination;\n        },\n        valueOf: function valueOf() {\n          return this.value;\n        }\n      }\n    });\n    SVG.extend(SVG.FX, {\n      // Add animatable attributes\n      attr: function attr(a, v, relative) {\n        // apply attributes individually\n        if (_typeof(a) === 'object') {\n          for (var key in a) {\n            this.attr(key, a[key]);\n          }\n        } else {\n          this.add(a, v, 'attrs');\n        }\n\n        return this;\n      },\n      // Add animatable plot\n      plot: function plot(a, b, c, d) {\n        // Lines can be plotted with 4 arguments\n        if (arguments.length == 4) {\n          return this.plot([a, b, c, d]);\n        }\n\n        return this.add('plot', new (this.target().morphArray)(a));\n      }\n    });\n    SVG.Box = SVG.invent({\n      create: function create(x, y, width, height) {\n        if (_typeof(x) === 'object' && !(x instanceof SVG.Element)) {\n          // chromes getBoundingClientRect has no x and y property\n          return SVG.Box.call(this, x.left != null ? x.left : x.x, x.top != null ? x.top : x.y, x.width, x.height);\n        } else if (arguments.length == 4) {\n          this.x = x;\n          this.y = y;\n          this.width = width;\n          this.height = height;\n        } // add center, right, bottom...\n\n\n        fullBox(this);\n      }\n    });\n    SVG.BBox = SVG.invent({\n      // Initialize\n      create: function create(element) {\n        SVG.Box.apply(this, [].slice.call(arguments)); // get values if element is given\n\n        if (element instanceof SVG.Element) {\n          var box; // yes this is ugly, but Firefox can be a pain when it comes to elements that are not yet rendered\n\n          try {\n            if (!document.documentElement.contains) {\n              // This is IE - it does not support contains() for top-level SVGs\n              var topParent = element.node;\n\n              while (topParent.parentNode) {\n                topParent = topParent.parentNode;\n              }\n\n              if (topParent != document) throw new Error('Element not in the dom');\n            } else {} // the element is NOT in the dom, throw error\n            // disabling the check below which fixes issue #76\n            // if (!document.documentElement.contains(element.node)) throw new Exception('Element not in the dom')\n            // find native bbox\n\n\n            box = element.node.getBBox();\n          } catch (e) {\n            if (element instanceof SVG.Shape) {\n              if (!SVG.parser.draw) {\n                // fixes apexcharts/vue-apexcharts #14\n                SVG.prepare();\n              }\n\n              var clone = element.clone(SVG.parser.draw.instance).show();\n              box = clone.node.getBBox();\n              clone.remove();\n            } else {\n              box = {\n                x: element.node.clientLeft,\n                y: element.node.clientTop,\n                width: element.node.clientWidth,\n                height: element.node.clientHeight\n              };\n            }\n          }\n\n          SVG.Box.call(this, box);\n        }\n      },\n      // Define ancestor\n      inherit: SVG.Box,\n      // Define Parent\n      parent: SVG.Element,\n      // Constructor\n      construct: {\n        // Get bounding box\n        bbox: function bbox() {\n          return new SVG.BBox(this);\n        }\n      }\n    });\n    SVG.BBox.prototype.constructor = SVG.BBox;\n    SVG.Matrix = SVG.invent({\n      // Initialize\n      create: function create(source) {\n        var base = arrayToMatrix([1, 0, 0, 1, 0, 0]); // ensure source as object\n\n        source = source instanceof SVG.Element ? source.matrixify() : typeof source === 'string' ? arrayToMatrix(source.split(SVG.regex.delimiter).map(parseFloat)) : arguments.length == 6 ? arrayToMatrix([].slice.call(arguments)) : Array.isArray(source) ? arrayToMatrix(source) : _typeof(source) === 'object' ? source : base; // merge source\n\n        for (var i = abcdef.length - 1; i >= 0; --i) {\n          this[abcdef[i]] = source[abcdef[i]] != null ? source[abcdef[i]] : base[abcdef[i]];\n        }\n      },\n      // Add methods\n      extend: {\n        // Extract individual transformations\n        extract: function extract() {\n          // find delta transform points\n          var px = deltaTransformPoint(this, 0, 1),\n              py = deltaTransformPoint(this, 1, 0),\n              skewX = 180 / Math.PI * Math.atan2(px.y, px.x) - 90;\n          return {\n            // translation\n            x: this.e,\n            y: this.f,\n            transformedX: (this.e * Math.cos(skewX * Math.PI / 180) + this.f * Math.sin(skewX * Math.PI / 180)) / Math.sqrt(this.a * this.a + this.b * this.b),\n            transformedY: (this.f * Math.cos(skewX * Math.PI / 180) + this.e * Math.sin(-skewX * Math.PI / 180)) / Math.sqrt(this.c * this.c + this.d * this.d),\n            // rotation\n            rotation: skewX,\n            a: this.a,\n            b: this.b,\n            c: this.c,\n            d: this.d,\n            e: this.e,\n            f: this.f,\n            matrix: new SVG.Matrix(this)\n          };\n        },\n        // Clone matrix\n        clone: function clone() {\n          return new SVG.Matrix(this);\n        },\n        // Morph one matrix into another\n        morph: function morph(matrix) {\n          // store new destination\n          this.destination = new SVG.Matrix(matrix);\n          return this;\n        },\n        // Multiplies by given matrix\n        multiply: function multiply(matrix) {\n          return new SVG.Matrix(this.native().multiply(parseMatrix(matrix).native()));\n        },\n        // Inverses matrix\n        inverse: function inverse() {\n          return new SVG.Matrix(this.native().inverse());\n        },\n        // Translate matrix\n        translate: function translate(x, y) {\n          return new SVG.Matrix(this.native().translate(x || 0, y || 0));\n        },\n        // Convert to native SVGMatrix\n        native: function native() {\n          // create new matrix\n          var matrix = SVG.parser.native.createSVGMatrix(); // update with current values\n\n          for (var i = abcdef.length - 1; i >= 0; i--) {\n            matrix[abcdef[i]] = this[abcdef[i]];\n          }\n\n          return matrix;\n        },\n        // Convert matrix to string\n        toString: function toString() {\n          // Construct the matrix directly, avoid values that are too small\n          return 'matrix(' + float32String(this.a) + ',' + float32String(this.b) + ',' + float32String(this.c) + ',' + float32String(this.d) + ',' + float32String(this.e) + ',' + float32String(this.f) + ')';\n        }\n      },\n      // Define parent\n      parent: SVG.Element,\n      // Add parent method\n      construct: {\n        // Get current matrix\n        ctm: function ctm() {\n          return new SVG.Matrix(this.node.getCTM());\n        },\n        // Get current screen matrix\n        screenCTM: function screenCTM() {\n          /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537\n             This is needed because FF does not return the transformation matrix\n             for the inner coordinate system when getScreenCTM() is called on nested svgs.\n             However all other Browsers do that */\n          if (this instanceof SVG.Nested) {\n            var rect = this.rect(1, 1);\n            var m = rect.node.getScreenCTM();\n            rect.remove();\n            return new SVG.Matrix(m);\n          }\n\n          return new SVG.Matrix(this.node.getScreenCTM());\n        }\n      }\n    });\n    SVG.Point = SVG.invent({\n      // Initialize\n      create: function create(x, y) {\n        var source,\n            base = {\n          x: 0,\n          y: 0\n        }; // ensure source as object\n\n        source = Array.isArray(x) ? {\n          x: x[0],\n          y: x[1]\n        } : _typeof(x) === 'object' ? {\n          x: x.x,\n          y: x.y\n        } : x != null ? {\n          x: x,\n          y: y != null ? y : x\n        } : base; // If y has no value, then x is used has its value\n        // merge source\n\n        this.x = source.x;\n        this.y = source.y;\n      },\n      // Add methods\n      extend: {\n        // Clone point\n        clone: function clone() {\n          return new SVG.Point(this);\n        },\n        // Morph one point into another\n        morph: function morph(x, y) {\n          // store new destination\n          this.destination = new SVG.Point(x, y);\n          return this;\n        }\n      }\n    });\n    SVG.extend(SVG.Element, {\n      // Get point\n      point: function point(x, y) {\n        return new SVG.Point(x, y).transform(this.screenCTM().inverse());\n      }\n    });\n    SVG.extend(SVG.Element, {\n      // Set svg element attribute\n      attr: function attr(a, v, n) {\n        // act as full getter\n        if (a == null) {\n          // get an object of attributes\n          a = {};\n          v = this.node.attributes;\n\n          for (var n = v.length - 1; n >= 0; n--) {\n            a[v[n].nodeName] = SVG.regex.isNumber.test(v[n].nodeValue) ? parseFloat(v[n].nodeValue) : v[n].nodeValue;\n          }\n\n          return a;\n        } else if (_typeof(a) === 'object') {\n          // apply every attribute individually if an object is passed\n          for (var v_ in a) {\n            this.attr(v_, a[v_]);\n          }\n        } else if (v === null) {\n          // remove value\n          this.node.removeAttribute(a);\n        } else if (v == null) {\n          // act as a getter if the first and only argument is not an object\n          v = this.node.getAttribute(a);\n          return v == null ? SVG.defaults.attrs[a] : SVG.regex.isNumber.test(v) ? parseFloat(v) : v;\n        } else {\n          // BUG FIX: some browsers will render a stroke if a color is given even though stroke width is 0\n          if (a == 'stroke-width') {\n            this.attr('stroke', parseFloat(v) > 0 ? this._stroke : null);\n          } else if (a == 'stroke') {\n            this._stroke = v;\n          } // convert image fill and stroke to patterns\n\n\n          if (a == 'fill' || a == 'stroke') {\n            if (SVG.regex.isImage.test(v)) {\n              v = this.doc().defs().image(v, 0, 0);\n            }\n\n            if (v instanceof SVG.Image) {\n              v = this.doc().defs().pattern(0, 0, function () {\n                this.add(v);\n              });\n            }\n          } // ensure correct numeric values (also accepts NaN and Infinity)\n\n\n          if (typeof v === 'number') {\n            v = new SVG.Number(v);\n          } // ensure full hex color\n          else if (SVG.Color.isColor(v)) {\n              v = new SVG.Color(v);\n            } // parse array values\n            else if (Array.isArray(v)) {\n                v = new SVG.Array(v);\n              } // if the passed attribute is leading...\n\n\n          if (a == 'leading') {\n            // ... call the leading method instead\n            if (this.leading) {\n              this.leading(v);\n            }\n          } else {\n            // set given attribute on node\n            typeof n === 'string' ? this.node.setAttributeNS(n, a, v.toString()) : this.node.setAttribute(a, v.toString());\n          } // rebuild if required\n\n\n          if (this.rebuild && (a == 'font-size' || a == 'x')) {\n            this.rebuild(a, v);\n          }\n        }\n\n        return this;\n      }\n    });\n    SVG.extend(SVG.Element, {\n      // Add transformations\n      transform: function transform(o, relative) {\n        // get target in case of the fx module, otherwise reference this\n        var target = this,\n            matrix;\n   // act as a getter\n\n        if (_typeof(o) !== 'object') {\n          // get current matrix\n          matrix = new SVG.Matrix(target).extract();\n          return typeof o === 'string' ? matrix[o] : matrix;\n        } // get current matrix\n\n\n        matrix = new SVG.Matrix(target); // ensure relative flag\n\n        relative = !!relative || !!o.relative; // act on matrix\n\n        if (o.a != null) {\n          matrix = relative // relative\n          ? matrix.multiply(new SVG.Matrix(o)) // absolute\n          : new SVG.Matrix(o);\n        }\n\n        return this.attr('transform', matrix);\n      }\n    });\n    SVG.extend(SVG.Element, {\n      // Reset all transformations\n      untransform: function untransform() {\n        return this.attr('transform', null);\n      },\n      // merge the whole transformation chain into one matrix and returns it\n      matrixify: function matrixify() {\n        var matrix = (this.attr('transform') || ''). // split transformations\n        split(SVG.regex.transforms).slice(0, -1).map(function (str) {\n          // generate key => value pairs\n          var kv = str.trim().split('(');\n          return [kv[0], kv[1].split(SVG.regex.delimiter).map(function (str) {\n            return parseFloat(str);\n          })];\n        }) // merge every transformation into one matrix\n        .reduce(function (matrix, transform) {\n          if (transform[0] == 'matrix') return matrix.multiply(arrayToMatrix(transform[1]));\n          return matrix[transform[0]].apply(matrix, transform[1]);\n        }, new SVG.Matrix());\n        return matrix;\n      },\n      // add an element to another parent without changing the visual representation on the screen\n      toParent: function toParent(parent) {\n        if (this == parent) return this;\n        var ctm = this.screenCTM();\n        var pCtm = parent.screenCTM().inverse();\n        this.addTo(parent).untransform().transform(pCtm.multiply(ctm));\n        return this;\n      },\n      // same as above with parent equals root-svg\n      toDoc: function toDoc() {\n        return this.toParent(this.doc());\n      }\n    });\n    SVG.Transformation = SVG.invent({\n      create: function create(source, inversed) {\n        if (arguments.length > 1 && typeof inversed !== 'boolean') {\n          return this.constructor.call(this, [].slice.call(arguments));\n        }\n\n        if (Array.isArray(source)) {\n          for (var i = 0, len = this.arguments.length; i < len; ++i) {\n            this[this.arguments[i]] = source[i];\n          }\n        } else if (_typeof(source) === 'object') {\n          for (var i = 0, len = this.arguments.length; i < len; ++i) {\n            this[this.arguments[i]] = source[this.arguments[i]];\n          }\n        }\n\n        this.inversed = false;\n\n        if (inversed === true) {\n          this.inversed = true;\n        }\n      }\n    });\n    SVG.Translate = SVG.invent({\n      parent: SVG.Matrix,\n      inherit: SVG.Transformation,\n      create: function create(source, inversed) {\n        this.constructor.apply(this, [].slice.call(arguments));\n      },\n      extend: {\n        arguments: ['transformedX', 'transformedY'],\n        method: 'translate'\n      }\n    });\n    SVG.extend(SVG.Element, {\n      // Dynamic style generator\n      style: function style(s, v) {\n        if (arguments.length == 0) {\n          // get full style\n          return this.node.style.cssText || '';\n        } else if (arguments.length < 2) {\n          // apply every style individually if an object is passed\n          if (_typeof(s) === 'object') {\n            for (var v_ in s) {\n              this.style(v_, s[v_]);\n            }\n          } else if (SVG.regex.isCss.test(s)) {\n            // parse css string\n            s = s.split(/\\s*;\\s*/) // filter out suffix ; and stuff like ;;\n            .filter(function (e) {\n              return !!e;\n            }).map(function (e) {\n              return e.split(/\\s*:\\s*/);\n            }); // apply every definition individually\n\n            while (v = s.pop()) {\n              this.style(v[0], v[1]);\n            }\n          } else {\n            // act as a getter if the first and only argument is not an object\n            return this.node.style[camelCase(s)];\n          }\n        } else {\n          this.node.style[camelCase(s)] = v === null || SVG.regex.isBlank.test(v) ? '' : v;\n        }\n\n        return this;\n      }\n    });\n    SVG.Parent = SVG.invent({\n      // Initialize node\n      create: function create(element) {\n        this.constructor.call(this, element);\n      },\n      // Inherit from\n      inherit: SVG.Element,\n      // Add class methods\n      extend: {\n        // Returns all child elements\n        children: function children() {\n          return SVG.utils.map(SVG.utils.filterSVGElements(this.node.childNodes), function (node) {\n            return SVG.adopt(node);\n          });\n        },\n        // Add given element at a position\n        add: function add(element, i) {\n          if (i == null) {\n            this.node.appendChild(element.node);\n          } else if (element.node != this.node.childNodes[i]) {\n            this.node.insertBefore(element.node, this.node.childNodes[i]);\n          }\n\n          return this;\n        },\n        // Basically does the same as `add()` but returns the added element instead\n        put: function put(element, i) {\n          this.add(element, i);\n          return element;\n        },\n        // Checks if the given element is a child\n        has: function has(element) {\n          return this.index(element) >= 0;\n        },\n        // Gets index of given element\n        index: function index(element) {\n          return [].slice.call(this.node.childNodes).indexOf(element.node);\n        },\n        // Get a element at the given index\n        get: function get(i) {\n          return SVG.adopt(this.node.childNodes[i]);\n        },\n        // Get first child\n        first: function first() {\n          return this.get(0);\n        },\n        // Get the last child\n        last: function last() {\n          return this.get(this.node.childNodes.length - 1);\n        },\n        // Iterates over all children and invokes a given block\n        each: function each(block, deep) {\n          var il,\n              children = this.children();\n\n          for (var i = 0, il = children.length; i < il; i++) {\n            if (children[i] instanceof SVG.Element) {\n              block.apply(children[i], [i, children]);\n            }\n\n            if (deep && children[i] instanceof SVG.Container) {\n              children[i].each(block, deep);\n            }\n          }\n\n          return this;\n        },\n        // Remove a given child\n        removeElement: function removeElement(element) {\n          this.node.removeChild(element.node);\n          return this;\n        },\n        // Remove all elements in this container\n        clear: function clear() {\n          // remove children\n          while (this.node.hasChildNodes()) {\n            this.node.removeChild(this.node.lastChild);\n          } // remove defs reference\n\n\n          delete this._defs;\n          return this;\n        },\n        // Get defs\n        defs: function defs() {\n          return this.doc().defs();\n        }\n      }\n    });\n    SVG.extend(SVG.Parent, {\n      ungroup: function ungroup(parent, depth) {\n        if (depth === 0 || this instanceof SVG.Defs || this.node == SVG.parser.draw) return this;\n        parent = parent || (this instanceof SVG.Doc ? this : this.parent(SVG.Parent));\n        depth = depth || Infinity;\n        this.each(function () {\n          if (this instanceof SVG.Defs) return this;\n          if (this instanceof SVG.Parent) return this.ungroup(parent, depth - 1);\n          return this.toParent(parent);\n        });\n        this.node.firstChild || this.remove();\n        return this;\n      },\n      flatten: function flatten(parent, depth) {\n        return this.ungroup(parent, depth);\n      }\n    });\n    SVG.Container = SVG.invent({\n      // Initialize node\n      create: function create(element) {\n        this.constructor.call(this, element);\n      },\n      // Inherit from\n      inherit: SVG.Parent\n    });\n    SVG.ViewBox = SVG.invent({\n      // Define parent\n      parent: SVG.Container,\n      // Add parent method\n      construct: {}\n    }) // Add events to elements\n    ;\n    ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mouseout', 'mousemove', // , 'mouseenter' -> not supported by IE\n    // , 'mouseleave' -> not supported by IE\n    'touchstart', 'touchmove', 'touchleave', 'touchend', 'touchcancel'].forEach(function (event) {\n      // add event to SVG.Element\n      SVG.Element.prototype[event] = function (f) {\n        // bind event to element rather than element node\n        SVG.on(this.node, event, f);\n        return this;\n      };\n    }); // Initialize listeners stack\n\n    SVG.listeners = [];\n    SVG.handlerMap = [];\n    SVG.listenerId = 0; // Add event binder in the SVG namespace\n\n    SVG.on = function (node, event, listener, binding, options) {\n      // create listener, get object-index\n      var l = listener.bind(binding || node.instance || node),\n          index = (SVG.handlerMap.indexOf(node) + 1 || SVG.handlerMap.push(node)) - 1,\n          ev = event.split('.')[0],\n          ns = event.split('.')[1] || '*'; // ensure valid object\n\n      SVG.listeners[index] = SVG.listeners[index] || {};\n      SVG.listeners[index][ev] = SVG.listeners[index][ev] || {};\n      SVG.listeners[index][ev][ns] = SVG.listeners[index][ev][ns] || {};\n\n      if (!listener._svgjsListenerId) {\n        listener._svgjsListenerId = ++SVG.listenerId;\n      } // reference listener\n\n\n      SVG.listeners[index][ev][ns][listener._svgjsListenerId] = l; // add listener\n\n      node.addEventListener(ev, l, options || false);\n    }; // Add event unbinder in the SVG namespace\n\n\n    SVG.off = function (node, event, listener) {\n      var index = SVG.handlerMap.indexOf(node),\n          ev = event && event.split('.')[0],\n          ns = event && event.split('.')[1],\n          namespace = '';\n      if (index == -1) return;\n\n      if (listener) {\n        if (typeof listener === 'function') listener = listener._svgjsListenerId;\n        if (!listener) return; // remove listener reference\n\n        if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns || '*']) {\n          // remove listener\n          node.removeEventListener(ev, SVG.listeners[index][ev][ns || '*'][listener], false);\n          delete SVG.listeners[index][ev][ns || '*'][listener];\n        }\n      } else if (ns && ev) {\n        // remove all listeners for a namespaced event\n        if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns]) {\n          for (var listener_ in SVG.listeners[index][ev][ns]) {\n            SVG.off(node, [ev, ns].join('.'), listener_);\n          }\n\n          delete SVG.listeners[index][ev][ns];\n        }\n      } else if (ns) {\n        // remove all listeners for a specific namespace\n        for (var event_ in SVG.listeners[index]) {\n          for (var namespace in SVG.listeners[index][event_]) {\n            if (ns === namespace) {\n              SVG.off(node, [event_, ns].join('.'));\n            }\n          }\n        }\n      } else if (ev) {\n        // remove all listeners for the event\n        if (SVG.listeners[index][ev]) {\n          for (var namespace in SVG.listeners[index][ev]) {\n            SVG.off(node, [ev, namespace].join('.'));\n          }\n\n          delete SVG.listeners[index][ev];\n        }\n      } else {\n        // remove all listeners on a given node\n        for (var event_ in SVG.listeners[index]) {\n          SVG.off(node, event_);\n        }\n\n        delete SVG.listeners[index];\n        delete SVG.handlerMap[index];\n      }\n    }; //\n\n\n    SVG.extend(SVG.Element, {\n      // Bind given event to listener\n      on: function on(event, listener, binding, options) {\n        SVG.on(this.node, event, listener, binding, options);\n        return this;\n      },\n      // Unbind event from listener\n      off: function off(event, listener) {\n        SVG.off(this.node, event, listener);\n        return this;\n      },\n      // Fire given event\n      fire: function fire(event, data) {\n        // Dispatch event\n        if (event instanceof window.Event) {\n          this.node.dispatchEvent(event);\n        } else {\n          this.node.dispatchEvent(event = new SVG.CustomEvent(event, {\n            detail: data,\n            cancelable: true\n          }));\n        }\n\n        this._event = event;\n        return this;\n      },\n      event: function event() {\n        return this._event;\n      }\n    });\n    SVG.Defs = SVG.invent({\n      // Initialize node\n      create: 'defs',\n      // Inherit from\n      inherit: SVG.Container\n    });\n    SVG.G = SVG.invent({\n      // Initialize node\n      create: 'g',\n      // Inherit from\n      inherit: SVG.Container,\n      // Add class methods\n      extend: {\n        // Move over x-axis\n        x: function x(_x2) {\n          return _x2 == null ? this.transform('x') : this.transform({\n            x: _x2 - this.x()\n          }, true);\n        }\n      },\n      // Add parent method\n      construct: {\n        // Create a group element\n        group: function group() {\n          return this.put(new SVG.G());\n        }\n      }\n    });\n    SVG.Doc = SVG.invent({\n      // Initialize node\n      create: function create(element) {\n        if (element) {\n          // ensure the presence of a dom element\n          element = typeof element === 'string' ? document.getElementById(element) : element; // If the target is an svg element, use that element as the main wrapper.\n          // This allows svg.js to work with svg documents as well.\n\n          if (element.nodeName == 'svg') {\n            this.constructor.call(this, element);\n          } else {\n            this.constructor.call(this, SVG.create('svg'));\n            element.appendChild(this.node);\n            this.size('100%', '100%');\n          } // set svg element attributes and ensure defs node\n\n\n          this.namespace().defs();\n        }\n      },\n      // Inherit from\n      inherit: SVG.Container,\n      // Add class methods\n      extend: {\n        // Add namespaces\n        namespace: function namespace() {\n          return this.attr({\n            xmlns: SVG.ns,\n            version: '1.1'\n          }).attr('xmlns:xlink', SVG.xlink, SVG.xmlns).attr('xmlns:svgjs', SVG.svgjs, SVG.xmlns);\n        },\n        // Creates and returns defs element\n        defs: function defs() {\n          if (!this._defs) {\n            var defs; // Find or create a defs element in this instance\n\n            if (defs = this.node.getElementsByTagName('defs')[0]) {\n              this._defs = SVG.adopt(defs);\n            } else {\n              this._defs = new SVG.Defs();\n            } // Make sure the defs node is at the end of the stack\n\n\n            this.node.appendChild(this._defs.node);\n          }\n\n          return this._defs;\n        },\n        // custom parent method\n        parent: function parent() {\n          if (!this.node.parentNode || this.node.parentNode.nodeName == '#document') return null;\n          return this.node.parentNode;\n        },\n        // Removes the doc from the DOM\n        remove: function remove() {\n          if (this.parent()) {\n            this.parent().removeChild(this.node);\n          }\n\n          return this;\n        },\n        clear: function clear() {\n          // remove children\n          while (this.node.hasChildNodes()) {\n            this.node.removeChild(this.node.lastChild);\n          } // remove defs reference\n\n\n          delete this._defs; // add back parser\n\n          if (SVG.parser.draw && !SVG.parser.draw.parentNode) {\n            this.node.appendChild(SVG.parser.draw);\n          }\n\n          return this;\n        },\n        clone: function clone(parent) {\n          // write dom data to the dom so the clone can pickup the data\n          this.writeDataToDom(); // get reference to node\n\n          var node = this.node; // clone element and assign new id\n\n          var clone = assignNewId(node.cloneNode(true)); // insert the clone in the given parent or after myself\n\n          if (parent) {\n            (parent.node || parent).appendChild(clone.node);\n          } else {\n            node.parentNode.insertBefore(clone.node, node.nextSibling);\n          }\n\n          return clone;\n        }\n      }\n    }); // ### This module adds backward / forward functionality to elements.\n    //\n\n    SVG.extend(SVG.Element, {// Get all siblings, including myself\n    });\n    SVG.Gradient = SVG.invent({\n      // Initialize node\n      create: function create(type) {\n        this.constructor.call(this, SVG.create(type + 'Gradient')); // store type\n\n        this.type = type;\n      },\n      // Inherit from\n      inherit: SVG.Container,\n      // Add class methods\n      extend: {\n        // Add a color stop\n        at: function at(offset, color, opacity) {\n          return this.put(new SVG.Stop()).update(offset, color, opacity);\n        },\n        // Update gradient\n        update: function update(block) {\n          // remove all stops\n          this.clear(); // invoke passed block\n\n          if (typeof block === 'function') {\n            block.call(this, this);\n          }\n\n          return this;\n        },\n        // Return the fill id\n        fill: function fill() {\n          return 'url(#' + this.id() + ')';\n        },\n        // Alias string convertion to fill\n        toString: function toString() {\n          return this.fill();\n        },\n        // custom attr to handle transform\n        attr: function attr(a, b, c) {\n          if (a == 'transform') a = 'gradientTransform';\n          return SVG.Container.prototype.attr.call(this, a, b, c);\n        }\n      },\n      // Add parent method\n      construct: {\n        // Create gradient element in defs\n        gradient: function gradient(type, block) {\n          return this.defs().gradient(type, block);\n        }\n      }\n    }); // Add animatable methods to both gradient and fx module\n\n    SVG.extend(SVG.Gradient, SVG.FX, {\n      // From position\n      from: function from(x, y) {\n        return (this._target || this).type == 'radial' ? this.attr({\n          fx: new SVG.Number(x),\n          fy: new SVG.Number(y)\n        }) : this.attr({\n          x1: new SVG.Number(x),\n          y1: new SVG.Number(y)\n        });\n      },\n      // To position\n      to: function to(x, y) {\n        return (this._target || this).type == 'radial' ? this.attr({\n          cx: new SVG.Number(x),\n          cy: new SVG.Number(y)\n        }) : this.attr({\n          x2: new SVG.Number(x),\n          y2: new SVG.Number(y)\n        });\n      }\n    }); // Base gradient generation\n\n    SVG.extend(SVG.Defs, {\n      // define gradient\n      gradient: function gradient(type, block) {\n        return this.put(new SVG.Gradient(type)).update(block);\n      }\n    });\n    SVG.Stop = SVG.invent({\n      // Initialize node\n      create: 'stop',\n      // Inherit from\n      inherit: SVG.Element,\n      // Add class methods\n      extend: {\n        // add color stops\n        update: function update(o) {\n          if (typeof o === 'number' || o instanceof SVG.Number) {\n            o = {\n              offset: arguments[0],\n              color: arguments[1],\n              opacity: arguments[2]\n            };\n          } // set attributes\n\n\n          if (o.opacity != null) this.attr('stop-opacity', o.opacity);\n          if (o.color != null) this.attr('stop-color', o.color);\n          if (o.offset != null) this.attr('offset', new SVG.Number(o.offset));\n          return this;\n        }\n      }\n    });\n    SVG.Pattern = SVG.invent({\n      // Initialize node\n      create: 'pattern',\n      // Inherit from\n      inherit: SVG.Container,\n      // Add class methods\n      extend: {\n        // Return the fill id\n        fill: function fill() {\n          return 'url(#' + this.id() + ')';\n        },\n        // Update pattern by rebuilding\n        update: function update(block) {\n          // remove content\n          this.clear(); // invoke passed block\n\n          if (typeof block === 'function') {\n            block.call(this, this);\n          }\n\n          return this;\n        },\n        // Alias string convertion to fill\n        toString: function toString() {\n          return this.fill();\n        },\n        // custom attr to handle transform\n        attr: function attr(a, b, c) {\n          if (a == 'transform') a = 'patternTransform';\n          return SVG.Container.prototype.attr.call(this, a, b, c);\n        }\n      },\n      // Add parent method\n      construct: {\n        // Create pattern element in defs\n        pattern: function pattern(width, height, block) {\n          return this.defs().pattern(width, height, block);\n        }\n      }\n    });\n    SVG.extend(SVG.Defs, {\n      // Define gradient\n      pattern: function pattern(width, height, block) {\n        return this.put(new SVG.Pattern()).update(block).attr({\n          x: 0,\n          y: 0,\n          width: width,\n          height: height,\n          patternUnits: 'userSpaceOnUse'\n        });\n      }\n    });\n    SVG.Shape = SVG.invent({\n      // Initialize node\n      create: function create(element) {\n        this.constructor.call(this, element);\n      },\n      // Inherit from\n      inherit: SVG.Element\n    });\n    SVG.Symbol = SVG.invent({\n      // Initialize node\n      create: 'symbol',\n      // Inherit from\n      inherit: SVG.Container,\n      construct: {\n        // create symbol\n        symbol: function symbol() {\n          return this.put(new SVG.Symbol());\n        }\n      }\n    });\n    SVG.Use = SVG.invent({\n      // Initialize node\n      create: 'use',\n      // Inherit from\n      inherit: SVG.Shape,\n      // Add class methods\n      extend: {\n        // Use element as a reference\n        element: function element(_element, file) {\n          // Set lined element\n          return this.attr('href', (file || '') + '#' + _element, SVG.xlink);\n        }\n      },\n      // Add parent method\n      construct: {\n        // Create a use element\n        use: function use(element, file) {\n          return this.put(new SVG.Use()).element(element, file);\n        }\n      }\n    });\n    SVG.Rect = SVG.invent({\n      // Initialize node\n      create: 'rect',\n      // Inherit from\n      inherit: SVG.Shape,\n      // Add parent method\n      construct: {\n        // Create a rect element\n        rect: function rect(width, height) {\n          return this.put(new SVG.Rect()).size(width, height);\n        }\n      }\n    });\n    SVG.Circle = SVG.invent({\n      // Initialize node\n      create: 'circle',\n      // Inherit from\n      inherit: SVG.Shape,\n      // Add parent method\n      construct: {\n        // Create circle element, based on ellipse\n        circle: function circle(size) {\n          return this.put(new SVG.Circle()).rx(new SVG.Number(size).divide(2)).move(0, 0);\n        }\n      }\n    });\n    SVG.extend(SVG.Circle, SVG.FX, {\n      // Radius x value\n      rx: function rx(_rx) {\n        return this.attr('r', _rx);\n      },\n      // Alias radius x value\n      ry: function ry(_ry) {\n        return this.rx(_ry);\n      }\n    });\n    SVG.Ellipse = SVG.invent({\n      // Initialize node\n      create: 'ellipse',\n      // Inherit from\n      inherit: SVG.Shape,\n      // Add parent method\n      construct: {\n        // Create an ellipse\n        ellipse: function ellipse(width, height) {\n          return this.put(new SVG.Ellipse()).size(width, height).move(0, 0);\n        }\n      }\n    });\n    SVG.extend(SVG.Ellipse, SVG.Rect, SVG.FX, {\n      // Radius x value\n      rx: function rx(_rx2) {\n        return this.attr('rx', _rx2);\n      },\n      // Radius y value\n      ry: function ry(_ry2) {\n        return this.attr('ry', _ry2);\n      }\n    }); // Add common method\n\n    SVG.extend(SVG.Circle, SVG.Ellipse, {\n      // Move over x-axis\n      x: function x(_x3) {\n        return _x3 == null ? this.cx() - this.rx() : this.cx(_x3 + this.rx());\n      },\n      // Move over y-axis\n      y: function y(_y2) {\n        return _y2 == null ? this.cy() - this.ry() : this.cy(_y2 + this.ry());\n      },\n      // Move by center over x-axis\n      cx: function cx(x) {\n        return x == null ? this.attr('cx') : this.attr('cx', x);\n      },\n      // Move by center over y-axis\n      cy: function cy(y) {\n        return y == null ? this.attr('cy') : this.attr('cy', y);\n      },\n      // Set width of element\n      width: function width(_width2) {\n        return _width2 == null ? this.rx() * 2 : this.rx(new SVG.Number(_width2).divide(2));\n      },\n      // Set height of element\n      height: function height(_height2) {\n        return _height2 == null ? this.ry() * 2 : this.ry(new SVG.Number(_height2).divide(2));\n      },\n      // Custom size function\n      size: function size(width, height) {\n        var p = proportionalSize(this, width, height);\n        return this.rx(new SVG.Number(p.width).divide(2)).ry(new SVG.Number(p.height).divide(2));\n      }\n    });\n    SVG.Line = SVG.invent({\n      // Initialize node\n      create: 'line',\n      // Inherit from\n      inherit: SVG.Shape,\n      // Add class methods\n      extend: {\n        // Get array\n        array: function array() {\n          return new SVG.PointArray([[this.attr('x1'), this.attr('y1')], [this.attr('x2'), this.attr('y2')]]);\n        },\n        // Overwrite native plot() method\n        plot: function plot(x1, y1, x2, y2) {\n          if (x1 == null) {\n            return this.array();\n          } else if (typeof y1 !== 'undefined') {\n            x1 = {\n              x1: x1,\n              y1: y1,\n              x2: x2,\n              y2: y2\n            };\n          } else {\n            x1 = new SVG.PointArray(x1).toLine();\n          }\n\n          return this.attr(x1);\n        },\n        // Move by left top corner\n        move: function move(x, y) {\n          return this.attr(this.array().move(x, y).toLine());\n        },\n        // Set element size to given width and height\n        size: function size(width, height) {\n          var p = proportionalSize(this, width, height);\n          return this.attr(this.array().size(p.width, p.height).toLine());\n        }\n      },\n      // Add parent method\n      construct: {\n        // Create a line element\n        line: function line(x1, y1, x2, y2) {\n          // make sure plot is called as a setter\n          // x1 is not necessarily a number, it can also be an array, a string and a SVG.PointArray\n          return SVG.Line.prototype.plot.apply(this.put(new SVG.Line()), x1 != null ? [x1, y1, x2, y2] : [0, 0, 0, 0]);\n        }\n      }\n    });\n    SVG.Polyline = SVG.invent({\n      // Initialize node\n      create: 'polyline',\n      // Inherit from\n      inherit: SVG.Shape,\n      // Add parent method\n      construct: {\n        // Create a wrapped polyline element\n        polyline: function polyline(p) {\n          // make sure plot is called as a setter\n          return this.put(new SVG.Polyline()).plot(p || new SVG.PointArray());\n        }\n      }\n    });\n    SVG.Polygon = SVG.invent({\n      // Initialize node\n      create: 'polygon',\n      // Inherit from\n      inherit: SVG.Shape,\n      // Add parent method\n      construct: {\n        // Create a wrapped polygon element\n        polygon: function polygon(p) {\n          // make sure plot is called as a setter\n          return this.put(new SVG.Polygon()).plot(p || new SVG.PointArray());\n        }\n      }\n    }); // Add polygon-specific functions\n\n    SVG.extend(SVG.Polyline, SVG.Polygon, {\n      // Get array\n      array: function array() {\n        return this._array || (this._array = new SVG.PointArray(this.attr('points')));\n      },\n      // Plot new path\n      plot: function plot(p) {\n        return p == null ? this.array() : this.clear().attr('points', typeof p === 'string' ? p : this._array = new SVG.PointArray(p));\n      },\n      // Clear array cache\n      clear: function clear() {\n        delete this._array;\n        return this;\n      },\n      // Move by left top corner\n      move: function move(x, y) {\n        return this.attr('points', this.array().move(x, y));\n      },\n      // Set element size to given width and height\n      size: function size(width, height) {\n        var p = proportionalSize(this, width, height);\n        return this.attr('points', this.array().size(p.width, p.height));\n      }\n    }); // unify all point to point elements\n\n    SVG.extend(SVG.Line, SVG.Polyline, SVG.Polygon, {\n      // Define morphable array\n      morphArray: SVG.PointArray,\n      // Move by left top corner over x-axis\n      x: function x(_x4) {\n        return _x4 == null ? this.bbox().x : this.move(_x4, this.bbox().y);\n      },\n      // Move by left top corner over y-axis\n      y: function y(_y3) {\n        return _y3 == null ? this.bbox().y : this.move(this.bbox().x, _y3);\n      },\n      // Set width of element\n      width: function width(_width3) {\n        var b = this.bbox();\n        return _width3 == null ? b.width : this.size(_width3, b.height);\n      },\n      // Set height of element\n      height: function height(_height3) {\n        var b = this.bbox();\n        return _height3 == null ? b.height : this.size(b.width, _height3);\n      }\n    });\n    SVG.Path = SVG.invent({\n      // Initialize node\n      create: 'path',\n      // Inherit from\n      inherit: SVG.Shape,\n      // Add class methods\n      extend: {\n        // Define morphable array\n        morphArray: SVG.PathArray,\n        // Get array\n        array: function array() {\n          return this._array || (this._array = new SVG.PathArray(this.attr('d')));\n        },\n        // Plot new path\n        plot: function plot(d) {\n          return d == null ? this.array() : this.clear().attr('d', typeof d === 'string' ? d : this._array = new SVG.PathArray(d));\n        },\n        // Clear array cache\n        clear: function clear() {\n          delete this._array;\n          return this;\n        }\n      },\n      // Add parent method\n      construct: {\n        // Create a wrapped path element\n        path: function path(d) {\n          // make sure plot is called as a setter\n          return this.put(new SVG.Path()).plot(d || new SVG.PathArray());\n        }\n      }\n    });\n    SVG.Image = SVG.invent({\n      // Initialize node\n      create: 'image',\n      // Inherit from\n      inherit: SVG.Shape,\n      // Add class methods\n      extend: {\n        // (re)load image\t\n        load: function load(url) {\n          if (!url) return this;\n          var self = this,\n              img = new window.Image(); // preload image\t\n\n          SVG.on(img, 'load', function () {\n            SVG.off(img);\n            var p = self.parent(SVG.Pattern);\n            if (p === null) return; // ensure image size\t\n\n            if (self.width() == 0 && self.height() == 0) {\n              self.size(img.width, img.height);\n            } // ensure pattern size if not set\t\n\n\n            if (p && p.width() == 0 && p.height() == 0) {\n              p.size(self.width(), self.height());\n            } // callback\t\n\n\n            if (typeof self._loaded === 'function') {\n              self._loaded.call(self, {\n                width: img.width,\n                height: img.height,\n                ratio: img.width / img.height,\n                url: url\n              });\n            }\n          });\n          SVG.on(img, 'error', function (e) {\n            SVG.off(img);\n\n            if (typeof self._error === 'function') {\n              self._error.call(self, e);\n            }\n          });\n          return this.attr('href', img.src = this.src = url, SVG.xlink);\n        },\n        // Add loaded callback\t\n        loaded: function loaded(_loaded) {\n          this._loaded = _loaded;\n          return this;\n        },\n        error: function error(_error) {\n          this._error = _error;\n          return this;\n        }\n      },\n      // Add parent method\n      construct: {\n        // create image element, load image and set its size\t\n        image: function image(source, width, height) {\n          return this.put(new SVG.Image()).load(source).size(width || 0, height || width || 0);\n        }\n      }\n    });\n    SVG.Text = SVG.invent({\n      // Initialize node\n      create: function create() {\n        this.constructor.call(this, SVG.create('text'));\n        this.dom.leading = new SVG.Number(1.3); // store leading value for rebuilding\n\n        this._rebuild = true; // enable automatic updating of dy values\n\n        this._build = false; // disable build mode for adding multiple lines\n        // set default font\n\n        this.attr('font-family', SVG.defaults.attrs['font-family']);\n      },\n      // Inherit from\n      inherit: SVG.Shape,\n      // Add class methods\n      extend: {\n        // Move over x-axis\n        x: function x(_x5) {\n          // act as getter\n          if (_x5 == null) {\n            return this.attr('x');\n          }\n\n          return this.attr('x', _x5);\n        },\n        // Set the text content\n        text: function text(_text) {\n          // act as getter\n          if (typeof _text === 'undefined') {\n            var _text = '';\n            var children = this.node.childNodes;\n\n            for (var i = 0, len = children.length; i < len; ++i) {\n              // add newline if its not the first child and newLined is set to true\n              if (i != 0 && children[i].nodeType != 3 && SVG.adopt(children[i]).dom.newLined == true) {\n                _text += '\\n';\n              } // add content of this node\n\n\n              _text += children[i].textContent;\n            }\n\n            return _text;\n          } // remove existing content\n\n\n          this.clear().build(true);\n\n          if (typeof _text === 'function') {\n            // call block\n            _text.call(this, this);\n          } else {\n            // store text and make sure text is not blank\n            _text = _text.split('\\n'); // build new lines\n\n            for (var i = 0, il = _text.length; i < il; i++) {\n              this.tspan(_text[i]).newLine();\n            }\n          } // disable build mode and rebuild lines\n\n\n          return this.build(false).rebuild();\n        },\n        // Set font size\n        size: function size(_size) {\n          return this.attr('font-size', _size).rebuild();\n        },\n        // Set / get leading\n        leading: function leading(value) {\n          // act as getter\n          if (value == null) {\n            return this.dom.leading;\n          } // act as setter\n\n\n          this.dom.leading = new SVG.Number(value);\n          return this.rebuild();\n        },\n        // Get all the first level lines\n        lines: function lines() {\n          var node = (this.textPath && this.textPath() || this).node; // filter tspans and map them to SVG.js instances\n\n          var lines = SVG.utils.map(SVG.utils.filterSVGElements(node.childNodes), function (el) {\n            return SVG.adopt(el);\n          }); // return an instance of SVG.set\n\n          return new SVG.Set(lines);\n        },\n        // Rebuild appearance type\n        rebuild: function rebuild(_rebuild) {\n          // store new rebuild flag if given\n          if (typeof _rebuild === 'boolean') {\n            this._rebuild = _rebuild;\n          } // define position of all lines\n\n\n          if (this._rebuild) {\n            var self = this,\n                blankLineOffset = 0,\n                dy = this.dom.leading * new SVG.Number(this.attr('font-size'));\n            this.lines().each(function () {\n              if (this.dom.newLined) {\n                if (!self.textPath()) {\n                  this.attr('x', self.attr('x'));\n                }\n\n                if (this.text() == '\\n') {\n                  blankLineOffset += dy;\n                } else {\n                  this.attr('dy', dy + blankLineOffset);\n                  blankLineOffset = 0;\n                }\n              }\n            });\n            this.fire('rebuild');\n          }\n\n          return this;\n        },\n        // Enable / disable build mode\n        build: function build(_build) {\n          this._build = !!_build;\n          return this;\n        },\n        // overwrite method from parent to set data properly\n        setData: function setData(o) {\n          this.dom = o;\n          this.dom.leading = new SVG.Number(o.leading || 1.3);\n          return this;\n        }\n      },\n      // Add parent method\n      construct: {\n        // Create text element\n        text: function text(_text2) {\n          return this.put(new SVG.Text()).text(_text2);\n        },\n        // Create plain text element\n        plain: function plain(text) {\n          return this.put(new SVG.Text()).plain(text);\n        }\n      }\n    });\n    SVG.Tspan = SVG.invent({\n      // Initialize node\n      create: 'tspan',\n      // Inherit from\n      inherit: SVG.Shape,\n      // Add class methods\n      extend: {\n        // Set text content\n        text: function text(_text3) {\n          if (_text3 == null) return this.node.textContent + (this.dom.newLined ? '\\n' : '');\n          typeof _text3 === 'function' ? _text3.call(this, this) : this.plain(_text3);\n          return this;\n        },\n        // Shortcut dx\n        dx: function dx(_dx) {\n          return this.attr('dx', _dx);\n        },\n        // Shortcut dy\n        dy: function dy(_dy) {\n          return this.attr('dy', _dy);\n        },\n        // Create new line\n        newLine: function newLine() {\n          // fetch text parent\n          var t = this.parent(SVG.Text); // mark new line\n\n          this.dom.newLined = true; // apply new hy¡n\n\n          return this.dy(t.dom.leading * t.attr('font-size')).attr('x', t.x());\n        }\n      }\n    });\n    SVG.extend(SVG.Text, SVG.Tspan, {\n      // Create plain text node\n      plain: function plain(text) {\n        // clear if build mode is disabled\n        if (this._build === false) {\n          this.clear();\n        } // create text node\n\n\n        this.node.appendChild(document.createTextNode(text));\n        return this;\n      },\n      // Create a tspan\n      tspan: function tspan(text) {\n        var node = (this.textPath && this.textPath() || this).node,\n            tspan = new SVG.Tspan(); // clear if build mode is disabled\n\n        if (this._build === false) {\n          this.clear();\n        } // add new tspan\n\n\n        node.appendChild(tspan.node);\n        return tspan.text(text);\n      },\n      // Clear all lines\n      clear: function clear() {\n        var node = (this.textPath && this.textPath() || this).node; // remove existing child nodes\n\n        while (node.hasChildNodes()) {\n          node.removeChild(node.lastChild);\n        }\n\n        return this;\n      },\n      // Get length of text element\n      length: function length() {\n        return this.node.getComputedTextLength();\n      }\n    });\n    SVG.TextPath = SVG.invent({\n      // Initialize node\n      create: 'textPath',\n      // Inherit from\n      inherit: SVG.Parent,\n      // Define parent class\n      parent: SVG.Text,\n      // Add parent method\n      construct: {\n        morphArray: SVG.PathArray,\n        // return the array of the path track element\n        array: function array() {\n          var track = this.track();\n          return track ? track.array() : null;\n        },\n        // Plot path if any\n        plot: function plot(d) {\n          var track = this.track(),\n              pathArray = null;\n\n          if (track) {\n            pathArray = track.plot(d);\n          }\n\n          return d == null ? pathArray : this;\n        },\n        // Get the path track element\n        track: function track() {\n          var path = this.textPath();\n\n          if (path) {\n            return path.reference('href');\n          }\n        },\n        // Get the textPath child\n        textPath: function textPath() {\n          if (this.node.firstChild && this.node.firstChild.nodeName == 'textPath') {\n            return SVG.adopt(this.node.firstChild);\n          }\n        }\n      }\n    });\n    SVG.Nested = SVG.invent({\n      // Initialize node\n      create: function create() {\n        this.constructor.call(this, SVG.create('svg'));\n        this.style('overflow', 'visible');\n      },\n      // Inherit from\n      inherit: SVG.Container,\n      // Add parent method\n      construct: {\n        // Create nested svg document\n        nested: function nested() {\n          return this.put(new SVG.Nested());\n        }\n      }\n    }); // Define list of available attributes for stroke and fill\n\n    var sugar = {\n      stroke: ['color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset'],\n      fill: ['color', 'opacity', 'rule'],\n      prefix: function prefix(t, a) {\n        return a == 'color' ? t : t + '-' + a;\n      }\n    } // Add sugar for fill and stroke\n    ;\n    ['fill', 'stroke'].forEach(function (m) {\n      var extension = {};\n\n      extension[m] = function (o) {\n        if (typeof o === 'undefined') {\n          return this;\n        }\n\n        if (typeof o === 'string' || SVG.Color.isRgb(o) || o && typeof o.fill === 'function') {\n          this.attr(m, o);\n        } else // set all attributes from sugar.fill and sugar.stroke list\n          {\n            for (var i = sugar[m].length - 1; i >= 0; i--) {\n              if (o[sugar[m][i]] != null) {\n                this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]]);\n              }\n            }\n          }\n\n        return this;\n      };\n\n      SVG.extend(SVG.Element, SVG.FX, extension);\n    });\n    SVG.extend(SVG.Element, SVG.FX, {\n      // Map translate to transform\n      translate: function translate(x, y) {\n        return this.transform({\n          x: x,\n          y: y\n        });\n      },\n      // Map matrix to transform\n      matrix: function matrix(m) {\n        return this.attr('transform', new SVG.Matrix(arguments.length == 6 ? [].slice.call(arguments) : m));\n      },\n      // Opacity\n      opacity: function opacity(value) {\n        return this.attr('opacity', value);\n      },\n      // Relative move over x axis\n      dx: function dx(x) {\n        return this.x(new SVG.Number(x).plus(this instanceof SVG.FX ? 0 : this.x()), true);\n      },\n      // Relative move over y axis\n      dy: function dy(y) {\n        return this.y(new SVG.Number(y).plus(this instanceof SVG.FX ? 0 : this.y()), true);\n      }\n    });\n    SVG.extend(SVG.Path, {\n      // Get path length\n      length: function length() {\n        return this.node.getTotalLength();\n      },\n      // Get point at length\n      pointAt: function pointAt(length) {\n        return this.node.getPointAtLength(length);\n      }\n    });\n    SVG.Set = SVG.invent({\n      // Initialize\n      create: function create(members) {\n        // Set initial state\n        Array.isArray(members) ? this.members = members : this.clear();\n      },\n      // Add class methods\n      extend: {\n        // Add element to set\n        add: function add() {\n          var il,\n              elements = [].slice.call(arguments);\n\n          for (var i = 0, il = elements.length; i < il; i++) {\n            this.members.push(elements[i]);\n          }\n\n          return this;\n        },\n        // Remove element from set\n        remove: function remove(element) {\n          var i = this.index(element); // remove given child\n\n          if (i > -1) {\n            this.members.splice(i, 1);\n          }\n\n          return this;\n        },\n        // Iterate over all members\n        each: function each(block) {\n          for (var i = 0, il = this.members.length; i < il; i++) {\n            block.apply(this.members[i], [i, this.members]);\n          }\n\n          return this;\n        },\n        // Restore to defaults\n        clear: function clear() {\n          // initialize store\n          this.members = [];\n          return this;\n        },\n        // Get the length of a set\n        length: function length() {\n          return this.members.length;\n        },\n        // Checks if a given element is present in set\n        has: function has(element) {\n          return this.index(element) >= 0;\n        },\n        // retuns index of given element in set\n        index: function index(element) {\n          return this.members.indexOf(element);\n        },\n        // Get member at given index\n        get: function get(i) {\n          return this.members[i];\n        },\n        // Get first member\n        first: function first() {\n          return this.get(0);\n        },\n        // Get last member\n        last: function last() {\n          return this.get(this.members.length - 1);\n        },\n        // Default value\n        valueOf: function valueOf() {\n          return this.members;\n        }\n      },\n      // Add parent method\n      construct: {\n        // Create a new set\n        set: function set(members) {\n          return new SVG.Set(members);\n        }\n      }\n    });\n    SVG.FX.Set = SVG.invent({\n      // Initialize node\n      create: function create(set) {\n        // store reference to set\n        this.set = set;\n      }\n    }); // Alias methods\n\n    SVG.Set.inherit = function () {\n      var methods = []; // gather shape methods\n\n      for (var m in SVG.Shape.prototype) {\n        if (typeof SVG.Shape.prototype[m] === 'function' && typeof SVG.Set.prototype[m] !== 'function') {\n          methods.push(m);\n        }\n      } // apply shape aliasses\n\n\n      methods.forEach(function (method) {\n        SVG.Set.prototype[method] = function () {\n          for (var i = 0, il = this.members.length; i < il; i++) {\n            if (this.members[i] && typeof this.members[i][method] === 'function') {\n              this.members[i][method].apply(this.members[i], arguments);\n            }\n          }\n\n          return method == 'animate' ? this.fx || (this.fx = new SVG.FX.Set(this)) : this;\n        };\n      }); // clear methods for the next round\n\n      methods = []; // gather fx methods\n\n      for (var m in SVG.FX.prototype) {\n        if (typeof SVG.FX.prototype[m] === 'function' && typeof SVG.FX.Set.prototype[m] !== 'function') {\n          methods.push(m);\n        }\n      } // apply fx aliasses\n\n\n      methods.forEach(function (method) {\n        SVG.FX.Set.prototype[method] = function () {\n          for (var i = 0, il = this.set.members.length; i < il; i++) {\n            this.set.members[i].fx[method].apply(this.set.members[i].fx, arguments);\n          }\n\n          return this;\n        };\n      });\n    };\n\n    SVG.extend(SVG.Element, {});\n    SVG.extend(SVG.Element, {\n      // Remember arbitrary data\n      remember: function remember(k, v) {\n        // remember every item in an object individually\n        if (_typeof(arguments[0]) === 'object') {\n          for (var v_ in k) {\n            this.remember(v_, k[v_]);\n          }\n        } // retrieve memory\n        else if (arguments.length == 1) {\n            return this.memory()[k];\n          } // store memory\n          else {\n              this.memory()[k] = v;\n            }\n\n        return this;\n      },\n      // Erase a given memory\n      forget: function forget() {\n        if (arguments.length == 0) {\n          this._memory = {};\n        } else {\n          for (var i = arguments.length - 1; i >= 0; i--) {\n            delete this.memory()[arguments[i]];\n          }\n        }\n\n        return this;\n      },\n      // Initialize or return local memory object\n      memory: function memory() {\n        return this._memory || (this._memory = {});\n      }\n    }); // Method for getting an element by id\n\n    SVG.get = function (id) {\n      var node = document.getElementById(idFromReference(id) || id);\n      return SVG.adopt(node);\n    }; // Select elements by query string\n\n\n    SVG.select = function (query, parent) {\n      return new SVG.Set(SVG.utils.map((parent || document).querySelectorAll(query), function (node) {\n        return SVG.adopt(node);\n      }));\n    };\n\n    SVG.extend(SVG.Parent, {\n      // Scoped select method\n      select: function select(query) {\n        return SVG.select(query, this.node);\n      }\n    });\n\n    function pathRegReplace(a, b, c, d) {\n      return c + d.replace(SVG.regex.dots, ' .');\n    } // creates deep clone of array\n\n\n    function _is(el, obj) {\n      return el instanceof obj;\n    } // tests if a given selector matches an element\n\n\n    function _matches(el, selector) {\n      return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector);\n    } // Convert dash-separated-string to camelCase\n\n\n    function camelCase(s) {\n      return s.toLowerCase().replace(/-(.)/g, function (m, g) {\n        return g.toUpperCase();\n      });\n    } // Capitalize first letter of a string\n\n\n    function capitalize(s) {\n      return s.charAt(0).toUpperCase() + s.slice(1);\n    } // Ensure to six-based hex\n\n\n    function fullHex(hex) {\n      return hex.length == 4 ? ['#', hex.substring(1, 2), hex.substring(1, 2), hex.substring(2, 3), hex.substring(2, 3), hex.substring(3, 4), hex.substring(3, 4)].join('') : hex;\n    } // Component to hex value\n\n\n    function compToHex(comp) {\n      var hex = comp.toString(16);\n      return hex.length == 1 ? '0' + hex : hex;\n    } // Calculate proportional width and height values when necessary\n\n\n    function proportionalSize(element, width, height) {\n      if (width == null || height == null) {\n        var box = element.bbox();\n\n        if (width == null) {\n          width = box.width / box.height * height;\n        } else if (height == null) {\n          height = box.height / box.width * width;\n        }\n      }\n\n      return {\n        width: width,\n        height: height\n      };\n    } // Delta transform point\n\n\n    function deltaTransformPoint(matrix, x, y) {\n      return {\n        x: x * matrix.a + y * matrix.c + 0,\n        y: x * matrix.b + y * matrix.d + 0\n      };\n    } // Map matrix array to object\n\n\n    function arrayToMatrix(a) {\n      return {\n        a: a[0],\n        b: a[1],\n        c: a[2],\n        d: a[3],\n        e: a[4],\n        f: a[5]\n      };\n    } // Parse matrix if required\n\n\n    function parseMatrix(matrix) {\n      if (!(matrix instanceof SVG.Matrix)) {\n        matrix = new SVG.Matrix(matrix);\n      }\n\n      return matrix;\n    } // Add centre point to transform object\n\n\n    function arrayToString(a) {\n      for (var i = 0, il = a.length, s = ''; i < il; i++) {\n        s += a[i][0];\n\n        if (a[i][1] != null) {\n          s += a[i][1];\n\n          if (a[i][2] != null) {\n            s += ' ';\n            s += a[i][2];\n\n            if (a[i][3] != null) {\n              s += ' ';\n              s += a[i][3];\n              s += ' ';\n              s += a[i][4];\n\n              if (a[i][5] != null) {\n                s += ' ';\n                s += a[i][5];\n                s += ' ';\n                s += a[i][6];\n\n                if (a[i][7] != null) {\n                  s += ' ';\n                  s += a[i][7];\n                }\n              }\n            }\n          }\n        }\n      }\n\n      return s + ' ';\n    } // Deep new id assignment\n\n\n    function assignNewId(node) {\n      // do the same for SVG child nodes as well\n      for (var i = node.childNodes.length - 1; i >= 0; i--) {\n        if (node.childNodes[i] instanceof window.SVGElement) {\n          assignNewId(node.childNodes[i]);\n        }\n      }\n\n      return SVG.adopt(node).id(SVG.eid(node.nodeName));\n    } // Add more bounding box properties\n\n\n    function fullBox(b) {\n      if (b.x == null) {\n        b.x = 0;\n        b.y = 0;\n        b.width = 0;\n        b.height = 0;\n      }\n\n      b.w = b.width;\n      b.h = b.height;\n      b.x2 = b.x + b.width;\n      b.y2 = b.y + b.height;\n      b.cx = b.x + b.width / 2;\n      b.cy = b.y + b.height / 2;\n      return b;\n    } // Get id from reference string\n\n\n    function idFromReference(url) {\n      var m = (url || '').toString().match(SVG.regex.reference);\n      if (m) return m[1];\n    } // If values like 1e-88 are passed, this is not a valid 32 bit float,\n    // but in those cases, we are so close to 0 that 0 works well!\n\n\n    function float32String(v) {\n      return Math.abs(v) > 1e-37 ? v : 0;\n    } // Create matrix array for looping\n\n\n    var abcdef = 'abcdef'.split(''); // Add CustomEvent to IE9 and IE10\t\n\n    if (typeof window.CustomEvent !== 'function') {\n      // Code from: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent\t\n      var CustomEventPoly = function CustomEventPoly(event, options) {\n        options = options || {\n          bubbles: false,\n          cancelable: false,\n          detail: undefined\n        };\n        var e = document.createEvent('CustomEvent');\n        e.initCustomEvent(event, options.bubbles, options.cancelable, options.detail);\n        return e;\n      };\n\n      CustomEventPoly.prototype = window.Event.prototype;\n      SVG.CustomEvent = CustomEventPoly;\n    } else {\n      SVG.CustomEvent = window.CustomEvent;\n    }\n\n    return SVG;\n  });\n\n  /*! svg.filter.js - v2.0.2 - 2016-02-24\n  * https://github.com/wout/svg.filter.js\n  * Copyright (c) 2016 Wout Fierens; Licensed MIT */\n  (function() {\n\n    // Main filter class\n    SVG.Filter = SVG.invent({\n      create: 'filter',\n      inherit: SVG.Parent,\n      extend: {\n        // Static strings\n        source:           'SourceGraphic',\n        sourceAlpha:      'SourceAlpha',\n        background:       'BackgroundImage',\n        backgroundAlpha:  'BackgroundAlpha',\n        fill:             'FillPaint',\n        stroke:           'StrokePaint',\n\n        autoSetIn: true,\n        // Custom put method for leaner code\n        put: function(element, i) {\n          this.add(element, i);\n\n          if(!element.attr('in') && this.autoSetIn){\n            element.attr('in',this.source);\n          }\n          if(!element.attr('result')){\n            element.attr('result',element);\n          }\n\n          return element\n        },\n        // Blend effect\n        blend: function(in1, in2, mode) {\n          return this.put(new SVG.BlendEffect(in1, in2, mode))\n        },\n        // ColorMatrix effect\n        colorMatrix: function(type, values) {\n          return this.put(new SVG.ColorMatrixEffect(type, values))\n        },\n        // ConvolveMatrix effect\n        convolveMatrix: function(matrix) {\n          return this.put(new SVG.ConvolveMatrixEffect(matrix))\n        },\n        // ComponentTransfer effect\n        componentTransfer: function(components) {\n          return this.put(new SVG.ComponentTransferEffect(components))\n        },\n        // Composite effect\n        composite: function(in1, in2, operator) {\n          return this.put(new SVG.CompositeEffect(in1, in2, operator))\n        },\n        // Flood effect\n        flood: function(color, opacity) {\n          return this.put(new SVG.FloodEffect(color, opacity))\n        },\n        // Offset effect\n        offset: function(x, y) {\n          return this.put(new SVG.OffsetEffect(x,y))\n        },\n        // Image effect\n        image: function(src) {\n          return this.put(new SVG.ImageEffect(src))\n        },\n        // Merge effect\n        merge: function() {\n          //pass the array of arguments to the constructor because we dont know if the user gave us an array as the first arguemnt or wether they listed the effects in the arguments\n          var args = [undefined];\n          for(var i in arguments) args.push(arguments[i]);\n          return this.put(new (SVG.MergeEffect.bind.apply(SVG.MergeEffect,args)))\n        },\n        // Gaussian Blur effect\n        gaussianBlur: function(x,y) {\n          return this.put(new SVG.GaussianBlurEffect(x,y))\n        },\n        // Morphology effect\n        morphology: function(operator,radius){\n          return this.put(new SVG.MorphologyEffect(operator,radius))\n        },\n        // DiffuseLighting effect\n        diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){\n          return this.put(new SVG.DiffuseLightingEffect(surfaceScale,diffuseConstant,kernelUnitLength))\n        },\n        // DisplacementMap effect\n        displacementMap: function(in1,in2,scale,xChannelSelector,yChannelSelector){\n          return this.put(new SVG.DisplacementMapEffect(in1,in2,scale,xChannelSelector,yChannelSelector))\n        },\n        // SpecularLighting effect\n        specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){\n          return this.put(new SVG.SpecularLightingEffect(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength))\n        },\n        // Tile effect\n        tile: function(){\n          return this.put(new SVG.TileEffect());\n        },\n        // Turbulence effect\n        turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){\n          return this.put(new SVG.TurbulenceEffect(baseFrequency,numOctaves,seed,stitchTiles,type))\n        },\n        // Default string value\n        toString: function() {\n          return 'url(#' + this.attr('id') + ')'\n        }\n      }\n    });\n\n    //add .filter function\n    SVG.extend(SVG.Defs, {\n      // Define filter\n      filter: function(block) {\n        var filter = this.put(new SVG.Filter);\n\n        /* invoke passed block */\n        if (typeof block === 'function')\n          block.call(filter, filter);\n\n        return filter\n      }\n    });\n    SVG.extend(SVG.Container, {\n      // Define filter on defs\n      filter: function(block) {\n        return this.defs().filter(block)\n      }\n    });\n    SVG.extend(SVG.Element, SVG.G, SVG.Nested, {\n      // Create filter element in defs and store reference\n      filter: function(block) {\n        this.filterer = block instanceof SVG.Element ?\n          block : this.doc().filter(block);\n\n        if(this.doc() && this.filterer.doc() !== this.doc()){\n          this.doc().defs().add(this.filterer);\n        }\n\n        this.attr('filter', this.filterer);\n\n        return this.filterer\n      },\n      // Remove filter\n      unfilter: function(remove) {\n        /* also remove the filter node */\n        if (this.filterer && remove === true)\n          this.filterer.remove();\n\n        /* delete reference to filterer */\n        delete this.filterer;\n\n        /* remove filter attribute */\n        return this.attr('filter', null)\n      }\n    });\n\n    // Create SVG.Effect class\n    SVG.Effect = SVG.invent({\n      create: function(){\n        this.constructor.call(this);\n      },\n      inherit: SVG.Element,\n      extend: {\n        // Set in attribute\n        in: function(effect) {\n          return effect == null? this.parent() && this.parent().select('[result=\"'+this.attr('in')+'\"]').get(0) || this.attr('in') : this.attr('in', effect)\n        },\n        // Named result\n        result: function(result) {\n          return result == null? this.attr('result') : this.attr('result',result)\n        },\n        // Stringification\n        toString: function() {\n          return this.result()\n        }\n      }\n    });\n\n    // create class for parent effects like merge\n    // Inherit from SVG.Parent\n    SVG.ParentEffect = SVG.invent({\n      create: function(){\n        this.constructor.call(this);\n      },\n      inherit: SVG.Parent,\n      extend: {\n        // Set in attribute\n        in: function(effect) {\n          return effect == null? this.parent() && this.parent().select('[result=\"'+this.attr('in')+'\"]').get(0) || this.attr('in') : this.attr('in', effect)\n        },\n        // Named result\n        result: function(result) {\n          return result == null? this.attr('result') : this.attr('result',result)\n        },\n        // Stringification\n        toString: function() {\n          return this.result()\n        }\n      }\n    });\n\n    //chaining\n    var chainingEffects = {\n      // Blend effect\n      blend: function(in2, mode) {\n        return this.parent() && this.parent().blend(this, in2, mode) //pass this as the first input\n      },\n      // ColorMatrix effect\n      colorMatrix: function(type, values) {\n        return this.parent() && this.parent().colorMatrix(type, values).in(this)\n      },\n      // ConvolveMatrix effect\n      convolveMatrix: function(matrix) {\n        return this.parent() && this.parent().convolveMatrix(matrix).in(this)\n      },\n      // ComponentTransfer effect\n      componentTransfer: function(components) {\n        return this.parent() && this.parent().componentTransfer(components).in(this)\n      },\n      // Composite effect\n      composite: function(in2, operator) {\n        return this.parent() && this.parent().composite(this, in2, operator) //pass this as the first input\n      },\n      // Flood effect\n      flood: function(color, opacity) {\n        return this.parent() && this.parent().flood(color, opacity) //this effect dont have inputs\n      },\n      // Offset effect\n      offset: function(x, y) {\n        return this.parent() && this.parent().offset(x,y).in(this)\n      },\n      // Image effect\n      image: function(src) {\n        return this.parent() && this.parent().image(src) //this effect dont have inputs\n      },\n      // Merge effect\n      merge: function() {\n        return this.parent() && this.parent().merge.apply(this.parent(),[this].concat(arguments)) //pass this as the first argument\n      },\n      // Gaussian Blur effect\n      gaussianBlur: function(x,y) {\n        return this.parent() && this.parent().gaussianBlur(x,y).in(this)\n      },\n      // Morphology effect\n      morphology: function(operator,radius){\n        return this.parent() && this.parent().morphology(operator,radius).in(this)\n      },\n      // DiffuseLighting effect\n      diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){\n        return this.parent() && this.parent().diffuseLighting(surfaceScale,diffuseConstant,kernelUnitLength).in(this)\n      },\n      // DisplacementMap effect\n      displacementMap: function(in2,scale,xChannelSelector,yChannelSelector){\n        return this.parent() && this.parent().displacementMap(this,in2,scale,xChannelSelector,yChannelSelector) //pass this as the first input\n      },\n      // SpecularLighting effect\n      specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){\n        return this.parent() && this.parent().specularLighting(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength).in(this)\n      },\n      // Tile effect\n      tile: function(){\n        return this.parent() && this.parent().tile().in(this)\n      },\n      // Turbulence effect\n      turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){\n        return this.parent() && this.parent().turbulence(baseFrequency,numOctaves,seed,stitchTiles,type).in(this)\n      }\n    };\n    SVG.extend(SVG.Effect,chainingEffects);\n    SVG.extend(SVG.ParentEffect,chainingEffects);\n\n    //crea class for child effects, like MergeNode, FuncR and lights\n    SVG.ChildEffect = SVG.invent({\n      create: function(){\n        this.constructor.call(this);\n      },\n      inherit: SVG.Element,\n      extend: {\n      in: function(effect){\n        this.attr('in',effect);\n      }\n      //dont include any \"result\" functions because these types of nodes dont have them\n      }\n    });\n\n    // Create all different effects\n    var effects = {\n      blend: function(in1,in2,mode){\n        this.attr({\n          in: in1,\n          in2: in2,\n          mode: mode || 'normal'\n        });\n      },\n      colorMatrix: function(type,values){\n        if (type == 'matrix')\n          values = normaliseMatrix(values);\n\n        this.attr({\n          type:   type\n        , values: typeof values == 'undefined' ? null : values\n        });\n      },\n      convolveMatrix: function(matrix){\n        matrix = normaliseMatrix(matrix);\n\n        this.attr({\n          order:        Math.sqrt(matrix.split(' ').length)\n        , kernelMatrix: matrix\n        });\n      },\n      composite: function(in1, in2, operator){\n        this.attr({\n          in: in1,\n          in2: in2,\n          operator: operator\n        });\n      },\n      flood: function(color,opacity){\n        this.attr('flood-color',color);\n        if(opacity != null) this.attr('flood-opacity',opacity);\n      },\n      offset: function(x,y){\n        this.attr({\n          dx: x,\n          dy: y\n        });\n      },\n      image: function(src){\n        this.attr('href', src, SVG.xlink);\n      },\n      displacementMap: function(in1,in2,scale,xChannelSelector,yChannelSelector){\n        this.attr({\n          in: in1,\n          in2: in2,\n          scale: scale,\n          xChannelSelector: xChannelSelector,\n          yChannelSelector: yChannelSelector\n        });\n      },\n      gaussianBlur: function(x,y){\n        if(x != null || y != null)\n          this.attr('stdDeviation', listString(Array.prototype.slice.call(arguments)));\n        else\n          this.attr('stdDeviation', '0 0');\n      },\n      morphology: function(operator,radius){\n        this.attr({\n          operator: operator,\n          radius: radius\n        });\n      },\n      tile: function(){\n\n      },\n      turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){\n        this.attr({\n          numOctaves: numOctaves,\n          seed: seed,\n          stitchTiles: stitchTiles,\n          baseFrequency: baseFrequency,\n          type: type\n        });\n      }\n    };\n\n    // Create all parent effects\n    var parentEffects = {\n      merge: function(){\n        var children;\n\n        //test to see if we have a set\n        if(arguments[0] instanceof SVG.Set){\n          var that = this;\n          arguments[0].each(function(i){\n            if(this instanceof SVG.MergeNode)\n              that.put(this);\n            else if(this instanceof SVG.Effect || this instanceof SVG.ParentEffect)\n              that.put(new SVG.MergeNode(this));\n          });\n        }\n        else{\n          //if the first argument is an array use it\n          if(Array.isArray(arguments[0]))\n            children = arguments[0];\n          else\n            children = arguments;\n\n          for(var i = 0; i < children.length; i++){\n            if(children[i] instanceof SVG.MergeNode){\n              this.put(children[i]);\n            }\n            else this.put(new SVG.MergeNode(children[i]));\n          }\n        }\n      },\n      componentTransfer: function(compontents){\n        /* create rgb set */\n        this.rgb = new SVG.Set\n\n        /* create components */\n        ;(['r', 'g', 'b', 'a']).forEach(function(c) {\n          /* create component */\n          this[c] = new SVG['Func' + c.toUpperCase()]('identity');\n\n          /* store component in set */\n          this.rgb.add(this[c]);\n\n          /* add component node */\n          this.node.appendChild(this[c].node);\n        }.bind(this)); //lost context in foreach\n\n        /* set components */\n        if (compontents) {\n          if (compontents.rgb) {\n  (['r', 'g', 'b']).forEach(function(c) {\n              this[c].attr(compontents.rgb);\n            }.bind(this));\n\n            delete compontents.rgb;\n          }\n\n          /* set individual components */\n          for (var c in compontents)\n            this[c].attr(compontents[c]);\n        }\n      },\n      diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){\n        this.attr({\n          surfaceScale: surfaceScale,\n          diffuseConstant: diffuseConstant,\n          kernelUnitLength: kernelUnitLength\n        });\n      },\n      specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){\n        this.attr({\n          surfaceScale: surfaceScale,\n          diffuseConstant: diffuseConstant,\n          specularExponent: specularExponent,\n          kernelUnitLength: kernelUnitLength\n        });\n      },\n    };\n\n    // Create child effects like PointLight and MergeNode\n    var childEffects = {\n      distantLight: function(azimuth, elevation){\n        this.attr({\n          azimuth: azimuth,\n          elevation: elevation\n        });\n      },\n      pointLight: function(x,y,z){\n        this.attr({\n          x: x,\n          y: y,\n          z: z\n        });\n      },\n      spotLight: function(x,y,z,pointsAtX,pointsAtY,pointsAtZ){\n        this.attr({\n          x: x,\n          y: y,\n          z: z,\n          pointsAtX: pointsAtX,\n          pointsAtY: pointsAtY,\n          pointsAtZ: pointsAtZ\n        });\n      },\n      mergeNode: function(in1){\n        this.attr('in',in1);\n      }\n    }\n\n    // Create compontent functions\n    ;(['r', 'g', 'b', 'a']).forEach(function(c) {\n      /* create class */\n      childEffects['Func' + c.toUpperCase()] = function(type) {\n        this.attr('type',type);\n\n        // take diffent arguments based on the type\n        switch(type){\n          case 'table':\n            this.attr('tableValues',arguments[1]);\n            break\n          case 'linear':\n            this.attr('slope',arguments[1]);\n            this.attr('intercept',arguments[2]);\n            break\n          case 'gamma':\n            this.attr('amplitude',arguments[1]);\n            this.attr('exponent',arguments[2]);\n            this.attr('offset',arguments[2]);\n            break\n        }\n      };\n    });\n\n    //create effects\n    foreach(effects,function(effect,i){\n\n      /* capitalize name */\n      var name = i.charAt(0).toUpperCase() + i.slice(1);\n      var proto = {};\n\n      /* create class */\n      SVG[name + 'Effect'] = SVG.invent({\n        create: function() {\n          //call super\n          this.constructor.call(this, SVG.create('fe' + name));\n\n          //call constructor for this effect\n          effect.apply(this,arguments);\n\n          //set the result\n          this.result(this.attr('id') + 'Out');\n        },\n        inherit: SVG.Effect,\n        extend: proto\n      });\n    });\n\n    //create parent effects\n    foreach(parentEffects,function(effect,i){\n\n      /* capitalize name */\n      var name = i.charAt(0).toUpperCase() + i.slice(1);\n      var proto = {};\n\n      /* create class */\n      SVG[name + 'Effect'] = SVG.invent({\n        create: function() {\n          //call super\n          this.constructor.call(this, SVG.create('fe' + name));\n\n          //call constructor for this effect\n          effect.apply(this,arguments);\n\n          //set the result\n          this.result(this.attr('id') + 'Out');\n        },\n        inherit: SVG.ParentEffect,\n        extend: proto\n      });\n    });\n\n    //create child effects\n    foreach(childEffects,function(effect,i){\n\n      /* capitalize name */\n      var name = i.charAt(0).toUpperCase() + i.slice(1);\n      var proto = {};\n\n      /* create class */\n      SVG[name] = SVG.invent({\n        create: function() {\n          //call super\n          this.constructor.call(this, SVG.create('fe' + name));\n\n          //call constructor for this effect\n          effect.apply(this,arguments);\n        },\n        inherit: SVG.ChildEffect,\n        extend: proto\n      });\n    });\n\n    // Effect-specific extensions\n    SVG.extend(SVG.MergeEffect,{\n      in: function(effect){\n        if(effect instanceof SVG.MergeNode)\n          this.add(effect,0);\n        else\n          this.add(new SVG.MergeNode(effect),0);\n\n        return this\n      }\n    });\n    SVG.extend(SVG.CompositeEffect,SVG.BlendEffect,SVG.DisplacementMapEffect,{\n      in2: function(effect){\n          return effect == null? this.parent() && this.parent().select('[result=\"'+this.attr('in2')+'\"]').get(0) || this.attr('in2') : this.attr('in2', effect)\n      }\n    });\n\n    // Presets\n    SVG.filter = {\n      sepiatone:  [ .343, .669, .119, 0, 0\n                  , .249, .626, .130, 0, 0\n                  , .172, .334, .111, 0, 0\n                  , .000, .000, .000, 1, 0 ]\n    };\n\n    // Helpers\n    function normaliseMatrix(matrix) {\n      /* convert possible array value to string */\n      if (Array.isArray(matrix))\n        matrix = new SVG.Array(matrix);\n\n      /* ensure there are no leading, tailing or double spaces */\n      return matrix.toString().replace(/^\\s+/, '').replace(/\\s+$/, '').replace(/\\s+/g, ' ')\n    }\n\n    function listString(list) {\n      if (!Array.isArray(list))\n        return list\n\n      for (var i = 0, l = list.length, s = []; i < l; i++)\n        s.push(list[i]);\n\n      return s.join(' ')\n    }\n\n    function foreach(){ //loops through mutiple objects\n      var fn = function(){};\n      if(typeof arguments[arguments.length-1] == 'function'){\n        fn = arguments[arguments.length-1];\n        Array.prototype.splice.call(arguments,arguments.length-1,1);\n      }\n      for(var k in arguments){\n        for(var i in arguments[k]){\n          fn(arguments[k][i],i,arguments[k]);\n        }\n      }\n    }\n\n  }).call(undefined);\n\n  (function() {\n\n  SVG.extend(SVG.PathArray, {\n    morph: function(array) {\n\n      var startArr = this.value\n        ,  destArr = this.parse(array);\n\n      var startOffsetM = 0\n        ,  destOffsetM = 0;\n\n      var startOffsetNextM = false\n        ,  destOffsetNextM = false;\n\n      while(true){\n        // stop if there is no M anymore\n        if(startOffsetM === false && destOffsetM === false) break\n\n        // find the next M in path array\n        startOffsetNextM = findNextM(startArr, startOffsetM === false ? false : startOffsetM+1);\n         destOffsetNextM = findNextM( destArr,  destOffsetM === false ? false :  destOffsetM+1);\n\n        // We have to add one M to the startArray\n        if(startOffsetM === false){\n          var bbox = new SVG.PathArray(result.start).bbox();\n\n          // when the last block had no bounding box we simply take the first M we got\n          if(bbox.height == 0 || bbox.width == 0){\n            startOffsetM =  startArr.push(startArr[0]) - 1;\n          }else{\n            // we take the middle of the bbox instead when we got one\n            startOffsetM = startArr.push( ['M', bbox.x + bbox.width/2, bbox.y + bbox.height/2 ] ) - 1;\n          }\n        }\n\n        // We have to add one M to the destArray\n        if( destOffsetM === false){\n          var bbox = new SVG.PathArray(result.dest).bbox();\n\n          if(bbox.height == 0 || bbox.width == 0){\n            destOffsetM =  destArr.push(destArr[0]) - 1;\n          }else{\n            destOffsetM =  destArr.push( ['M', bbox.x + bbox.width/2, bbox.y + bbox.height/2 ] ) - 1;\n          }\n        }\n\n        // handle block from M to next M\n        var result = handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM);\n\n        // update the arrays to their new values\n        startArr = startArr.slice(0, startOffsetM).concat(result.start, startOffsetNextM === false ? [] : startArr.slice(startOffsetNextM));\n         destArr =  destArr.slice(0,  destOffsetM).concat(result.dest ,  destOffsetNextM === false ? [] :  destArr.slice( destOffsetNextM));\n\n        // update offsets\n        startOffsetM = startOffsetNextM === false ? false : startOffsetM + result.start.length;\n         destOffsetM =  destOffsetNextM === false ? false :  destOffsetM + result.dest.length;\n\n      }\n\n      // copy back arrays\n      this.value = startArr;\n      this.destination = new SVG.PathArray();\n      this.destination.value = destArr;\n\n      return this\n    }\n  });\n\n\n\n  // sorry for the long declaration\n  // slices out one block (from M to M) and syncronize it so the types and length match\n  function handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM, undefined$1){\n\n    // slice out the block we need\n    var startArrTemp = startArr.slice(startOffsetM, startOffsetNextM || undefined$1)\n      ,  destArrTemp =  destArr.slice( destOffsetM,  destOffsetNextM || undefined$1);\n\n    var i = 0\n      , posStart = {pos:[0,0], start:[0,0]}\n      , posDest  = {pos:[0,0], start:[0,0]};\n\n    do{\n\n      // convert shorthand types to long form\n      startArrTemp[i] = simplyfy.call(posStart, startArrTemp[i]);\n       destArrTemp[i] = simplyfy.call(posDest ,  destArrTemp[i]);\n\n      // check if both shape types match\n      // 2 elliptical arc curve commands ('A'), are considered different if the\n      // flags (large-arc-flag, sweep-flag) don't match\n      if(startArrTemp[i][0] != destArrTemp[i][0] || startArrTemp[i][0] == 'M' ||\n          (startArrTemp[i][0] == 'A' &&\n            (startArrTemp[i][4] != destArrTemp[i][4] || startArrTemp[i][5] != destArrTemp[i][5])\n          )\n        ) {\n\n        // if not, convert shapes to beziere\n        Array.prototype.splice.apply(startArrTemp, [i, 1].concat(toBeziere.call(posStart, startArrTemp[i])));\n         Array.prototype.splice.apply(destArrTemp, [i, 1].concat(toBeziere.call(posDest, destArrTemp[i])));\n\n      } else {\n\n        // only update positions otherwise\n        startArrTemp[i] = setPosAndReflection.call(posStart, startArrTemp[i]);\n         destArrTemp[i] = setPosAndReflection.call(posDest ,  destArrTemp[i]);\n\n      }\n\n      // we are at the end at both arrays. stop here\n      if(++i == startArrTemp.length && i == destArrTemp.length) break\n\n      // destArray is longer. Add one element\n      if(i == startArrTemp.length){\n        startArrTemp.push([\n          'C',\n          posStart.pos[0],\n          posStart.pos[1],\n          posStart.pos[0],\n          posStart.pos[1],\n          posStart.pos[0],\n          posStart.pos[1],\n        ]);\n      }\n\n      // startArr is longer. Add one element\n      if(i == destArrTemp.length){\n        destArrTemp.push([\n          'C',\n          posDest.pos[0],\n          posDest.pos[1],\n          posDest.pos[0],\n          posDest.pos[1],\n          posDest.pos[0],\n          posDest.pos[1]\n        ]);\n      }\n\n\n    }while(true)\n\n    // return the updated block\n    return {start:startArrTemp, dest:destArrTemp}\n  }\n\n  // converts shorthand types to long form\n  function simplyfy(val){\n\n    switch(val[0]){\n      case 'z': // shorthand line to start\n      case 'Z':\n        val[0] = 'L';\n        val[1] = this.start[0];\n        val[2] = this.start[1];\n        break\n      case 'H': // shorthand horizontal line\n        val[0] = 'L';\n        val[2] = this.pos[1];\n        break\n      case 'V': // shorthand vertical line\n        val[0] = 'L';\n        val[2] = val[1];\n        val[1] = this.pos[0];\n        break\n      case 'T': // shorthand quadratic beziere\n        val[0] = 'Q';\n        val[3] = val[1];\n        val[4] = val[2];\n        val[1] = this.reflection[1];\n        val[2] = this.reflection[0];\n        break\n      case 'S': // shorthand cubic beziere\n        val[0] = 'C';\n        val[6] = val[4];\n        val[5] = val[3];\n        val[4] = val[2];\n        val[3] = val[1];\n        val[2] = this.reflection[1];\n        val[1] = this.reflection[0];\n        break\n    }\n\n    return val\n\n  }\n\n  // updates reflection point and current position\n  function setPosAndReflection(val){\n\n    var len = val.length;\n\n    this.pos = [ val[len-2], val[len-1] ];\n\n    if('SCQT'.indexOf(val[0]) != -1)\n      this.reflection = [ 2 * this.pos[0] - val[len-4], 2 * this.pos[1] - val[len-3] ];\n\n    return val\n  }\n\n  // converts all types to cubic beziere\n  function toBeziere(val){\n    var retVal = [val];\n\n    switch(val[0]){\n      case 'M': // special handling for M\n        this.pos = this.start = [val[1], val[2]];\n        return retVal\n      case 'L':\n        val[5] = val[3] = val[1];\n        val[6] = val[4] = val[2];\n        val[1] = this.pos[0];\n        val[2] = this.pos[1];\n        break\n      case 'Q':\n        val[6] = val[4];\n        val[5] = val[3];\n        val[4] = val[4] * 1/3 + val[2] * 2/3;\n        val[3] = val[3] * 1/3 + val[1] * 2/3;\n        val[2] = this.pos[1] * 1/3 + val[2] * 2/3;\n        val[1] = this.pos[0] * 1/3 + val[1] * 2/3;\n        break\n      case 'A':\n        retVal = arcToBeziere(this.pos, val);\n        val = retVal[0];\n        break\n    }\n\n    val[0] = 'C';\n    this.pos = [val[5], val[6]];\n    this.reflection = [2 * val[5] - val[3], 2 * val[6] - val[4]];\n\n    return retVal\n\n  }\n\n  // finds the next position of type M\n  function findNextM(arr, offset){\n\n    if(offset === false) return false\n\n    for(var i = offset, len = arr.length;i < len;++i){\n\n      if(arr[i][0] == 'M') return i\n\n    }\n\n    return false\n  }\n\n\n\n  // Convert an arc segment into equivalent cubic Bezier curves\n  // Depending on the arc, up to 4 curves might be used to represent it since a\n  // curve gives a good approximation for only a quarter of an ellipse\n  // The curves are returned as an array of SVG curve commands:\n  // [ ['C', x1, y1, x2, y2, x, y] ... ]\n  function arcToBeziere(pos, val) {\n      // Parameters extraction, handle out-of-range parameters as specified in the SVG spec\n      // See: https://www.w3.org/TR/SVG11/implnote.html#ArcOutOfRangeParameters\n      var rx = Math.abs(val[1]), ry = Math.abs(val[2]), xAxisRotation = val[3] % 360\n        , largeArcFlag = val[4], sweepFlag = val[5], x = val[6], y = val[7]\n        , A = new SVG.Point(pos), B = new SVG.Point(x, y)\n        , primedCoord, lambda, mat, k, c, cSquare, t, O, OA, OB, tetaStart, tetaEnd\n        , deltaTeta, nbSectors, f, arcSegPoints, angle, sinAngle, cosAngle, pt, i, il\n        , retVal = [], x1, y1, x2, y2;\n\n      // Ensure radii are non-zero\n      if(rx === 0 || ry === 0 || (A.x === B.x && A.y === B.y)) {\n        // treat this arc as a straight line segment\n        return [['C', A.x, A.y, B.x, B.y, B.x, B.y]]\n      }\n\n      // Ensure radii are large enough using the algorithm provided in the SVG spec\n      // See: https://www.w3.org/TR/SVG11/implnote.html#ArcCorrectionOutOfRangeRadii\n      primedCoord = new SVG.Point((A.x-B.x)/2, (A.y-B.y)/2).transform(new SVG.Matrix().rotate(xAxisRotation));\n      lambda = (primedCoord.x * primedCoord.x) / (rx * rx) + (primedCoord.y * primedCoord.y) / (ry * ry);\n      if(lambda > 1) {\n        lambda = Math.sqrt(lambda);\n        rx = lambda*rx;\n        ry = lambda*ry;\n      }\n\n      // To simplify calculations, we make the arc part of a unit circle (rayon is 1) instead of an ellipse\n      mat = new SVG.Matrix().rotate(xAxisRotation).scale(1/rx, 1/ry).rotate(-xAxisRotation);\n      A = A.transform(mat);\n      B = B.transform(mat);\n\n      // Calculate the horizontal and vertical distance between the initial and final point of the arc\n      k = [B.x-A.x, B.y-A.y];\n\n      // Find the length of the chord formed by A and B\n      cSquare = k[0]*k[0] + k[1]*k[1];\n      c = Math.sqrt(cSquare);\n\n      // Calculate the ratios of the horizontal and vertical distance on the length of the chord\n      k[0] /= c;\n      k[1] /= c;\n\n      // Calculate the distance between the circle center and the chord midpoint\n      // using this formula: t = sqrt(r^2 - c^2 / 4)\n      // where t is the distance between the cirle center and the chord midpoint,\n      //       r is the rayon of the circle and c is the chord length\n      // From: http://www.ajdesigner.com/phpcircle/circle_segment_chord_t.php\n      // Because of the imprecision of floating point numbers, cSquare might end\n      // up being slightly above 4 which would result in a negative radicand\n      // To prevent that, a test is made before computing the square root\n      t = (cSquare < 4) ? Math.sqrt(1 - cSquare/4) : 0;\n\n      // For most situations, there are actually two different ellipses that\n      // satisfy the constraints imposed by the points A and B, the radii rx and ry,\n      // and the xAxisRotation\n      // When the flags largeArcFlag and sweepFlag are equal, it means that the\n      // second ellipse is used as a solution\n      // See: https://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands\n      if(largeArcFlag === sweepFlag) {\n          t *= -1;\n      }\n\n      // Calculate the coordinates of the center of the circle from the midpoint of the chord\n      // This is done by multiplying the ratios calculated previously by the distance between\n      // the circle center and the chord midpoint and using these values to go from the midpoint\n      // to the center of the circle\n      // The negative of the vertical distance ratio is used to modify the x coordinate while\n      // the horizontal distance ratio is used to modify the y coordinate\n      // That is because the center of the circle is perpendicular to the chord and perpendicular\n      // lines are negative reciprocals\n      O = new SVG.Point((B.x+A.x)/2 + t*-k[1], (B.y+A.y)/2 + t*k[0]);\n      // Move the center of the circle at the origin\n      OA = new SVG.Point(A.x-O.x, A.y-O.y);\n      OB = new SVG.Point(B.x-O.x, B.y-O.y);\n\n      // Calculate the start and end angle\n      tetaStart = Math.acos(OA.x/Math.sqrt(OA.x*OA.x + OA.y*OA.y));\n      if (OA.y < 0) {\n        tetaStart *= -1;\n      }\n      tetaEnd = Math.acos(OB.x/Math.sqrt(OB.x*OB.x + OB.y*OB.y));\n      if (OB.y < 0) {\n        tetaEnd *= -1;\n      }\n\n      // If sweep-flag is '1', then the arc will be drawn in a \"positive-angle\" direction,\n      // make sure that the end angle is above the start angle\n      if (sweepFlag && tetaStart > tetaEnd) {\n        tetaEnd += 2*Math.PI;\n      }\n      // If sweep-flag is '0', then the arc will be drawn in a \"negative-angle\" direction,\n      // make sure that the end angle is below the start angle\n      if (!sweepFlag && tetaStart < tetaEnd) {\n        tetaEnd -= 2*Math.PI;\n      }\n\n      // Find the number of Bezier curves that are required to represent the arc\n      // A cubic Bezier curve gives a good enough approximation when representing at most a quarter of a circle\n      nbSectors = Math.ceil(Math.abs(tetaStart-tetaEnd) * 2/Math.PI);\n\n      // Calculate the coordinates of the points of all the Bezier curves required to represent the arc\n      // For an in-depth explanation of this part see: http://pomax.github.io/bezierinfo/#circles_cubic\n      arcSegPoints = [];\n      angle = tetaStart;\n      deltaTeta = (tetaEnd-tetaStart)/nbSectors;\n      f = 4*Math.tan(deltaTeta/4)/3;\n      for (i = 0; i <= nbSectors; i++) { // The <= is because a Bezier curve have a start and a endpoint\n        cosAngle = Math.cos(angle);\n        sinAngle = Math.sin(angle);\n\n        pt = new SVG.Point(O.x+cosAngle, O.y+sinAngle);\n        arcSegPoints[i] = [new SVG.Point(pt.x+f*sinAngle, pt.y-f*cosAngle), pt, new SVG.Point(pt.x-f*sinAngle, pt.y+f*cosAngle)];\n\n        angle += deltaTeta;\n      }\n\n      // Remove the first control point of the first segment point and remove the second control point of the last segment point\n      // These two control points are not used in the approximation of the arc, that is why they are removed\n      arcSegPoints[0][0] = arcSegPoints[0][1].clone();\n      arcSegPoints[arcSegPoints.length-1][2] = arcSegPoints[arcSegPoints.length-1][1].clone();\n\n      // Revert the transformation that was applied to make the arc part of a unit circle instead of an ellipse\n      mat = new SVG.Matrix().rotate(xAxisRotation).scale(rx, ry).rotate(-xAxisRotation);\n      for (i = 0, il = arcSegPoints.length; i < il; i++) {\n        arcSegPoints[i][0] = arcSegPoints[i][0].transform(mat);\n        arcSegPoints[i][1] = arcSegPoints[i][1].transform(mat);\n        arcSegPoints[i][2] = arcSegPoints[i][2].transform(mat);\n      }\n\n\n      // Convert the segments points to SVG curve commands\n      for (i = 1, il = arcSegPoints.length; i < il; i++) {\n        pt = arcSegPoints[i-1][2];\n        x1 = pt.x;\n        y1 = pt.y;\n\n        pt = arcSegPoints[i][0];\n        x2 = pt.x;\n        y2 = pt.y;\n\n        pt = arcSegPoints[i][1];\n        x = pt.x;\n        y = pt.y;\n\n        retVal.push(['C', x1, y1, x2, y2, x, y]);\n      }\n\n      return retVal\n  }\n  }());\n\n  /*! svg.draggable.js - v2.2.2 - 2019-01-08\n  * https://github.com/svgdotjs/svg.draggable.js\n  * Copyright (c) 2019 Wout Fierens; Licensed MIT */\n  (function() {\n\n    // creates handler, saves it\n    function DragHandler(el){\n      el.remember('_draggable', this);\n      this.el = el;\n    }\n\n\n    // Sets new parameter, starts dragging\n    DragHandler.prototype.init = function(constraint, val){\n      var _this = this;\n      this.constraint = constraint;\n      this.value = val;\n      this.el.on('mousedown.drag', function(e){ _this.start(e); });\n      this.el.on('touchstart.drag', function(e){ _this.start(e); });\n    };\n\n    // transforms one point from screen to user coords\n    DragHandler.prototype.transformPoint = function(event, offset){\n        event = event || window.event;\n        var touches = event.changedTouches && event.changedTouches[0] || event;\n        this.p.x = touches.clientX - (offset || 0);\n        this.p.y = touches.clientY;\n        return this.p.matrixTransform(this.m)\n    };\n\n    // gets elements bounding box with special handling of groups, nested and use\n    DragHandler.prototype.getBBox = function(){\n\n      var box = this.el.bbox();\n\n      if(this.el instanceof SVG.Nested) box = this.el.rbox();\n\n      if (this.el instanceof SVG.G || this.el instanceof SVG.Use || this.el instanceof SVG.Nested) {\n        box.x = this.el.x();\n        box.y = this.el.y();\n      }\n\n      return box\n    };\n\n    // start dragging\n    DragHandler.prototype.start = function(e){\n\n      // check for left button\n      if(e.type == 'click'|| e.type == 'mousedown' || e.type == 'mousemove'){\n        if((e.which || e.buttons) != 1){\n            return\n        }\n      }\n\n      var _this = this;\n\n      // fire beforedrag event\n      this.el.fire('beforedrag', { event: e, handler: this });\n      if(this.el.event().defaultPrevented) return;\n\n      // prevent browser drag behavior as soon as possible\n      e.preventDefault();\n\n      // prevent propagation to a parent that might also have dragging enabled\n      e.stopPropagation();\n\n      // search for parent on the fly to make sure we can call\n      // draggable() even when element is not in the dom currently\n      this.parent = this.parent || this.el.parent(SVG.Nested) || this.el.parent(SVG.Doc);\n      this.p = this.parent.node.createSVGPoint();\n\n      // save current transformation matrix\n      this.m = this.el.node.getScreenCTM().inverse();\n\n      var box = this.getBBox();\n\n      var anchorOffset;\n\n      // fix text-anchor in text-element (#37)\n      if(this.el instanceof SVG.Text){\n        anchorOffset = this.el.node.getComputedTextLength();\n\n        switch(this.el.attr('text-anchor')){\n          case 'middle':\n            anchorOffset /= 2;\n            break\n          case 'start':\n            anchorOffset = 0;\n            break;\n        }\n      }\n\n      this.startPoints = {\n        // We take absolute coordinates since we are just using a delta here\n        point: this.transformPoint(e, anchorOffset),\n        box:   box,\n        transform: this.el.transform()\n      };\n\n      // add drag and end events to window\n      SVG.on(window, 'mousemove.drag', function(e){ _this.drag(e); });\n      SVG.on(window, 'touchmove.drag', function(e){ _this.drag(e); });\n      SVG.on(window, 'mouseup.drag', function(e){ _this.end(e); });\n      SVG.on(window, 'touchend.drag', function(e){ _this.end(e); });\n\n      // fire dragstart event\n      this.el.fire('dragstart', {event: e, p: this.startPoints.point, m: this.m, handler: this});\n    };\n\n    // while dragging\n    DragHandler.prototype.drag = function(e){\n\n      var box = this.getBBox()\n        , p   = this.transformPoint(e)\n        , x   = this.startPoints.box.x + p.x - this.startPoints.point.x\n        , y   = this.startPoints.box.y + p.y - this.startPoints.point.y\n        , c   = this.constraint\n        , gx  = p.x - this.startPoints.point.x\n        , gy  = p.y - this.startPoints.point.y;\n\n      this.el.fire('dragmove', {\n          event: e\n        , p: p\n        , m: this.m\n        , handler: this\n      });\n\n      if(this.el.event().defaultPrevented) return p\n\n      // move the element to its new position, if possible by constraint\n      if (typeof c == 'function') {\n\n        var coord = c.call(this.el, x, y, this.m);\n\n        // bool, just show us if movement is allowed or not\n        if (typeof coord == 'boolean') {\n          coord = {\n            x: coord,\n            y: coord\n          };\n        }\n\n        // if true, we just move. If !false its a number and we move it there\n        if (coord.x === true) {\n          this.el.x(x);\n        } else if (coord.x !== false) {\n          this.el.x(coord.x);\n        }\n\n        if (coord.y === true) {\n          this.el.y(y);\n        } else if (coord.y !== false) {\n          this.el.y(coord.y);\n        }\n\n      } else if (typeof c == 'object') {\n\n        // keep element within constrained box\n        if (c.minX != null && x < c.minX) {\n          x = c.minX;\n          gx = x - this.startPoints.box.x;\n        } else if (c.maxX != null && x > c.maxX - box.width) {\n          x = c.maxX - box.width;\n          gx = x - this.startPoints.box.x;\n        } if (c.minY != null && y < c.minY) {\n          y = c.minY;\n          gy = y - this.startPoints.box.y;\n        } else if (c.maxY != null && y > c.maxY - box.height) {\n          y = c.maxY - box.height;\n          gy = y - this.startPoints.box.y;\n        }\n\n        if (c.snapToGrid != null) {\n          x = x - (x % c.snapToGrid);\n          y = y - (y % c.snapToGrid);\n          gx = gx - (gx % c.snapToGrid);\n          gy = gy - (gy % c.snapToGrid);\n        }\n\n        if(this.el instanceof SVG.G)\n          this.el.matrix(this.startPoints.transform).transform({x:gx, y: gy}, true);\n        else\n          this.el.move(x, y);\n      }\n\n      // so we can use it in the end-method, too\n      return p\n    };\n\n    DragHandler.prototype.end = function(e){\n\n      // final drag\n      var p = this.drag(e);\n\n      // fire dragend event\n      this.el.fire('dragend', { event: e, p: p, m: this.m, handler: this });\n\n      // unbind events\n      SVG.off(window, 'mousemove.drag');\n      SVG.off(window, 'touchmove.drag');\n      SVG.off(window, 'mouseup.drag');\n      SVG.off(window, 'touchend.drag');\n\n    };\n\n    SVG.extend(SVG.Element, {\n      // Make element draggable\n      // Constraint might be an object (as described in readme.md) or a function in the form \"function (x, y)\" that gets called before every move.\n      // The function can return a boolean or an object of the form {x, y}, to which the element will be moved. \"False\" skips moving, true moves to raw x, y.\n      draggable: function(value, constraint) {\n\n        // Check the parameters and reassign if needed\n        if (typeof value == 'function' || typeof value == 'object') {\n          constraint = value;\n          value = true;\n        }\n\n        var dragHandler = this.remember('_draggable') || new DragHandler(this);\n\n        // When no parameter is given, value is true\n        value = typeof value === 'undefined' ? true : value;\n\n        if(value) dragHandler.init(constraint || {}, value);\n        else {\n          this.off('mousedown.drag');\n          this.off('touchstart.drag');\n        }\n\n        return this\n      }\n\n    });\n\n  }).call(undefined);\n\n  (function() {\n\n  function SelectHandler(el) {\n\n      this.el = el;\n      el.remember('_selectHandler', this);\n      this.pointSelection = {isSelected: false};\n      this.rectSelection = {isSelected: false};\n\n      // helper list with position settings of each type of point\n      this.pointsList = {\n        lt: [ 0, 0 ],\n        rt: [ 'width', 0 ],\n        rb: [ 'width', 'height' ],\n        lb: [ 0, 'height' ],\n        t: [ 'width', 0 ],\n        r: [ 'width', 'height' ],\n        b: [ 'width', 'height' ],\n        l: [ 0, 'height' ]\n      };\n\n      // helper function to get point coordinates based on settings above and an object (bbox in our case)\n      this.pointCoord = function (setting, object, isPointCentered) {\n        var coord = typeof setting !== 'string' ? setting : object[setting];\n        // Top, bottom, right and left points are placed in the center of element width/height\n        return isPointCentered ? coord / 2 : coord\n      };\n\n      this.pointCoords = function (point, object) {\n        var settings = this.pointsList[point];\n\n        return {\n          x: this.pointCoord(settings[0], object, (point === 't' || point === 'b')),\n          y: this.pointCoord(settings[1], object, (point === 'r' || point === 'l'))\n        }\n      };\n  }\n\n  SelectHandler.prototype.init = function (value, options) {\n\n      var bbox = this.el.bbox();\n      this.options = {};\n\n      // store defaults list of points in order to verify users config\n      var points = this.el.selectize.defaults.points;\n\n      // Merging the defaults and the options-object together\n      for (var i in this.el.selectize.defaults) {\n          this.options[i] = this.el.selectize.defaults[i];\n          if (options[i] !== undefined) {\n              this.options[i] = options[i];\n          }\n      }\n\n      // prepare & validate list of points to be added (or excluded)\n      var pointsLists = ['points', 'pointsExclude'];\n\n      for (var i in pointsLists) {\n        var option = this.options[pointsLists[i]];\n\n        if (typeof option === 'string') {\n          if (option.length > 0) {\n            // if set as comma separated string list => convert it into an array\n            option = option.split(/\\s*,\\s*/i);\n          } else {\n            option = [];\n          }\n        } else if (typeof option === 'boolean' && pointsLists[i] === 'points') {\n          // this is not needed, but let's have it for legacy support\n          option = option ? points : [];\n        }\n\n        this.options[pointsLists[i]] = option;\n      }\n\n      // intersect correct all points options with users config (exclude unwanted points)\n      // ES5 -> NO arrow functions nor Array.includes()\n      this.options.points = [ points, this.options.points ].reduce(\n        function (a, b) {\n          return a.filter(\n            function (c) {\n              return b.indexOf(c) > -1;\n            }\n          )\n        }\n      );\n\n      // exclude pointsExclude, if wanted\n      this.options.points = [ this.options.points, this.options.pointsExclude ].reduce(\n        function (a, b) {\n          return a.filter(\n            function (c) {\n              return b.indexOf(c) < 0;\n            }\n          )\n        }\n      );\n\n      this.parent = this.el.parent();\n      this.nested = (this.nested || this.parent.group());\n      this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y));\n\n      // When deepSelect is enabled and the element is a line/polyline/polygon, draw only points for moving\n      if (this.options.deepSelect && ['line', 'polyline', 'polygon'].indexOf(this.el.type) !== -1) {\n          this.selectPoints(value);\n      } else {\n          this.selectRect(value);\n      }\n\n      this.observe();\n      this.cleanup();\n\n  };\n\n  SelectHandler.prototype.selectPoints = function (value) {\n\n      this.pointSelection.isSelected = value;\n\n      // When set is already there we dont have to create one\n      if (this.pointSelection.set) {\n          return this;\n      }\n\n      // Create our set of elements\n      this.pointSelection.set = this.parent.set();\n      // draw the points and mark the element as selected\n      this.drawPoints();\n\n      return this;\n\n  };\n\n  // create the point-array which contains the 2 points of a line or simply the points-array of polyline/polygon\n  SelectHandler.prototype.getPointArray = function () {\n      var bbox = this.el.bbox();\n\n      return this.el.array().valueOf().map(function (el) {\n          return [el[0] - bbox.x, el[1] - bbox.y];\n      });\n  };\n\n  // Draws a points\n  SelectHandler.prototype.drawPoints = function () {\n\n      var _this = this, array = this.getPointArray();\n\n      // go through the array of points\n      for (var i = 0, len = array.length; i < len; ++i) {\n\n          var curriedEvent = (function (k) {\n              return function (ev) {\n                  ev = ev || window.event;\n                  ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;\n                  ev.stopPropagation();\n\n                  var x = ev.pageX || ev.touches[0].pageX;\n                  var y = ev.pageY || ev.touches[0].pageY;\n                  _this.el.fire('point', {x: x, y: y, i: k, event: ev});\n              };\n          })(i);\n\n          // add every point to the set\n          // add css-classes and a touchstart-event which fires our event for moving points\n          var point = this.drawPoint(array[i][0], array[i][1])\n                          .addClass(this.options.classPoints)\n                          .addClass(this.options.classPoints + '_point')\n                          .on('touchstart', curriedEvent)\n                          .on('mousedown', curriedEvent);\n          this.pointSelection.set.add(point);\n      }\n  };\n\n  // The function to draw single point\n  SelectHandler.prototype.drawPoint = function (cx, cy) {\n      var pointType = this.options.pointType;\n\n      switch (pointType) {\n          case 'circle':\n              return this.drawCircle(cx, cy);\n          case 'rect':\n              return this.drawRect(cx, cy);\n          default:\n              if (typeof pointType === 'function') {\n                  return pointType.call(this, cx, cy);\n              }\n\n              throw new Error('Unknown ' + pointType + ' point type!');\n      }\n  };\n\n  // The function to draw the circle point\n  SelectHandler.prototype.drawCircle = function (cx, cy) {\n      return this.nested.circle(this.options.pointSize)\n                        .center(cx, cy);\n  };\n\n  // The function to draw the rect point\n  SelectHandler.prototype.drawRect = function (cx, cy) {\n      return this.nested.rect(this.options.pointSize, this.options.pointSize)\n                        .center(cx, cy);\n  };\n\n  // every time a point is moved, we have to update the positions of our point\n  SelectHandler.prototype.updatePointSelection = function () {\n      var array = this.getPointArray();\n\n      this.pointSelection.set.each(function (i) {\n          if (this.cx() === array[i][0] && this.cy() === array[i][1]) {\n              return;\n          }\n          this.center(array[i][0], array[i][1]);\n      });\n  };\n\n  SelectHandler.prototype.updateRectSelection = function () {\n      var _this = this, bbox = this.el.bbox();\n\n      this.rectSelection.set.get(0).attr({\n          width: bbox.width,\n          height: bbox.height\n      });\n\n      // set.get(1) is always in the upper left corner. no need to move it\n      if (this.options.points.length) {\n        this.options.points.map(function (point, index) {\n          var coords = _this.pointCoords(point, bbox);\n\n          _this.rectSelection.set.get(index + 1).center(coords.x, coords.y);\n        });\n      }\n\n      if (this.options.rotationPoint) {\n          var length = this.rectSelection.set.length();\n\n          this.rectSelection.set.get(length - 1).center(bbox.width / 2, 20);\n      }\n  };\n\n  SelectHandler.prototype.selectRect = function (value) {\n\n      var _this = this, bbox = this.el.bbox();\n\n      this.rectSelection.isSelected = value;\n\n      // when set is already p\n      this.rectSelection.set = this.rectSelection.set || this.parent.set();\n\n      // helperFunction to create a mouse-down function which triggers the event specified in `eventName`\n      function getMoseDownFunc(eventName) {\n          return function (ev) {\n              ev = ev || window.event;\n              ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;\n              ev.stopPropagation();\n\n              var x = ev.pageX || ev.touches[0].pageX;\n              var y = ev.pageY || ev.touches[0].pageY;\n              _this.el.fire(eventName, {x: x, y: y, event: ev});\n          };\n      }\n\n      // create the selection-rectangle and add the css-class\n      if (!this.rectSelection.set.get(0)) {\n          this.rectSelection.set.add(this.nested.rect(bbox.width, bbox.height).addClass(this.options.classRect));\n      }\n\n      // Draw Points at the edges, if enabled\n      if (this.options.points.length && this.rectSelection.set.length() < 2) {\n          var ename =\"touchstart\", mname = \"mousedown\";\n\n          this.options.points.map(function (point, index) {\n              var coords = _this.pointCoords(point, bbox);\n\n              var pointElement = _this.drawPoint(coords.x, coords.y)\n                                      .attr('class', _this.options.classPoints + '_' + point)\n                                      .on(mname, getMoseDownFunc(point))\n                                      .on(ename, getMoseDownFunc(point));\n              _this.rectSelection.set.add(pointElement);\n          });\n\n          this.rectSelection.set.each(function () {\n              this.addClass(_this.options.classPoints);\n          });\n      }\n\n      // draw rotationPint, if enabled\n      if (this.options.rotationPoint && ((this.options.points && !this.rectSelection.set.get(9)) || (!this.options.points && !this.rectSelection.set.get(1)))) {\n\n          var curriedEvent = function (ev) {\n              ev = ev || window.event;\n              ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;\n              ev.stopPropagation();\n\n              var x = ev.pageX || ev.touches[0].pageX;\n              var y = ev.pageY || ev.touches[0].pageY;\n              _this.el.fire('rot', {x: x, y: y, event: ev});\n          };\n\n          var pointElement = this.drawPoint(bbox.width / 2, 20)\n                                .attr('class', this.options.classPoints + '_rot')\n                                .on(\"touchstart\", curriedEvent)\n                                .on(\"mousedown\", curriedEvent);\n          this.rectSelection.set.add(pointElement);\n      }\n\n  };\n\n  SelectHandler.prototype.handler = function () {\n\n      var bbox = this.el.bbox();\n      this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y));\n\n      if (this.rectSelection.isSelected) {\n          this.updateRectSelection();\n      }\n\n      if (this.pointSelection.isSelected) {\n          this.updatePointSelection();\n      }\n\n  };\n\n  SelectHandler.prototype.observe = function () {\n      var _this = this;\n\n      if (MutationObserver) {\n          if (this.rectSelection.isSelected || this.pointSelection.isSelected) {\n              this.observerInst = this.observerInst || new MutationObserver(function () {\n                  _this.handler();\n              });\n              this.observerInst.observe(this.el.node, {attributes: true});\n          } else {\n              try {\n                  this.observerInst.disconnect();\n                  delete this.observerInst;\n              } catch (e) {\n              }\n          }\n      } else {\n          this.el.off('DOMAttrModified.select');\n\n          if (this.rectSelection.isSelected || this.pointSelection.isSelected) {\n              this.el.on('DOMAttrModified.select', function () {\n                  _this.handler();\n              });\n          }\n      }\n  };\n\n  SelectHandler.prototype.cleanup = function () {\n\n      //var _this = this;\n\n      if (!this.rectSelection.isSelected && this.rectSelection.set) {\n          // stop watching the element, remove the selection\n          this.rectSelection.set.each(function () {\n              this.remove();\n          });\n\n          this.rectSelection.set.clear();\n          delete this.rectSelection.set;\n      }\n\n      if (!this.pointSelection.isSelected && this.pointSelection.set) {\n          // Remove all points, clear the set, stop watching the element\n          this.pointSelection.set.each(function () {\n              this.remove();\n          });\n\n          this.pointSelection.set.clear();\n          delete this.pointSelection.set;\n      }\n\n      if (!this.pointSelection.isSelected && !this.rectSelection.isSelected) {\n          this.nested.remove();\n          delete this.nested;\n\n      }\n  };\n\n\n  SVG.extend(SVG.Element, {\n      // Select element with mouse\n      selectize: function (value, options) {\n\n          // Check the parameters and reassign if needed\n          if (typeof value === 'object') {\n              options = value;\n              value = true;\n          }\n\n          var selectHandler = this.remember('_selectHandler') || new SelectHandler(this);\n\n          selectHandler.init(value === undefined ? true : value, options || {});\n\n          return this;\n\n      }\n  });\n\n  SVG.Element.prototype.selectize.defaults = {\n      points: ['lt', 'rt', 'rb', 'lb', 't', 'r', 'b', 'l'],    // which points to draw, default all\n      pointsExclude: [],                       // easier option if to exclude few than rewrite all\n      classRect: 'svg_select_boundingRect',    // Css-class added to the rect\n      classPoints: 'svg_select_points',        // Css-class added to the points\n      pointSize: 7,                            // size of point\n      rotationPoint: true,                     // If true, rotation point is drawn. Needed for rotation!\n      deepSelect: false,                       // If true, moving of single points is possible (only line, polyline, polyon)\n      pointType: 'circle'                      // Point type: circle or rect, default circle\n  };\n  }());\n\n  (function() {\n  (function () {\n\n      function ResizeHandler(el) {\n\n          el.remember('_resizeHandler', this);\n\n          this.el = el;\n          this.parameters = {};\n          this.lastUpdateCall = null;\n          this.p = el.doc().node.createSVGPoint();\n      }\n\n      ResizeHandler.prototype.transformPoint = function(x, y, m){\n\n          this.p.x = x - (this.offset.x - window.pageXOffset);\n          this.p.y = y - (this.offset.y - window.pageYOffset);\n\n          return this.p.matrixTransform(m || this.m);\n\n      };\n\n      ResizeHandler.prototype._extractPosition = function(event) {\n          // Extract a position from a mouse/touch event.\n          // Returns { x: .., y: .. }\n          return {\n              x: event.clientX != null ? event.clientX : event.touches[0].clientX,\n              y: event.clientY != null ? event.clientY : event.touches[0].clientY\n          }\n      };\n\n      ResizeHandler.prototype.init = function (options) {\n\n          var _this = this;\n\n          this.stop();\n\n          if (options === 'stop') {\n              return;\n          }\n\n          this.options = {};\n\n          // Merge options and defaults\n          for (var i in this.el.resize.defaults) {\n              this.options[i] = this.el.resize.defaults[i];\n              if (typeof options[i] !== 'undefined') {\n                  this.options[i] = options[i];\n              }\n          }\n\n          // We listen to all these events which are specifying different edges\n          this.el.on('lt.resize', function(e){ _this.resize(e || window.event); });  // Left-Top\n          this.el.on('rt.resize', function(e){ _this.resize(e || window.event); });  // Right-Top\n          this.el.on('rb.resize', function(e){ _this.resize(e || window.event); });  // Right-Bottom\n          this.el.on('lb.resize', function(e){ _this.resize(e || window.event); });  // Left-Bottom\n\n          this.el.on('t.resize', function(e){ _this.resize(e || window.event); });   // Top\n          this.el.on('r.resize', function(e){ _this.resize(e || window.event); });   // Right\n          this.el.on('b.resize', function(e){ _this.resize(e || window.event); });   // Bottom\n          this.el.on('l.resize', function(e){ _this.resize(e || window.event); });   // Left\n\n          this.el.on('rot.resize', function(e){ _this.resize(e || window.event); }); // Rotation\n\n          this.el.on('point.resize', function(e){ _this.resize(e || window.event); }); // Point-Moving\n\n          // This call ensures, that the plugin reacts to a change of snapToGrid immediately\n          this.update();\n\n      };\n\n      ResizeHandler.prototype.stop = function(){\n          this.el.off('lt.resize');\n          this.el.off('rt.resize');\n          this.el.off('rb.resize');\n          this.el.off('lb.resize');\n\n          this.el.off('t.resize');\n          this.el.off('r.resize');\n          this.el.off('b.resize');\n          this.el.off('l.resize');\n\n          this.el.off('rot.resize');\n\n          this.el.off('point.resize');\n\n          return this;\n      };\n\n      ResizeHandler.prototype.resize = function (event) {\n\n          var _this = this;\n\n          this.m = this.el.node.getScreenCTM().inverse();\n          this.offset = { x: window.pageXOffset, y: window.pageYOffset };\n\n          var txPt = this._extractPosition(event.detail.event);\n          this.parameters = {\n              type: this.el.type, // the type of element\n              p: this.transformPoint(txPt.x, txPt.y),\n              x: event.detail.x,      // x-position of the mouse when resizing started\n              y: event.detail.y,      // y-position of the mouse when resizing started\n              box: this.el.bbox(),    // The bounding-box of the element\n              rotation: this.el.transform().rotation  // The current rotation of the element\n          };\n\n          // Add font-size parameter if the element type is text\n          if (this.el.type === \"text\") {\n              this.parameters.fontSize = this.el.attr()[\"font-size\"];\n          }\n\n          // the i-param in the event holds the index of the point which is moved, when using `deepSelect`\n          if (event.detail.i !== undefined) {\n\n              // get the point array\n              var array = this.el.array().valueOf();\n\n              // Save the index and the point which is moved\n              this.parameters.i = event.detail.i;\n              this.parameters.pointCoords = [array[event.detail.i][0], array[event.detail.i][1]];\n          }\n\n          // Lets check which edge of the bounding-box was clicked and resize the this.el according to this\n          switch (event.type) {\n\n              // Left-Top-Edge\n              case 'lt':\n                  // We build a calculating function for every case which gives us the new position of the this.el\n                  this.calc = function (diffX, diffY) {\n                      // The procedure is always the same\n                      // First we snap the edge to the given grid (snapping to 1px grid is normal resizing)\n                      var snap = this.snapToGrid(diffX, diffY);\n\n                      // Now we check if the new height and width still valid (> 0)\n                      if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height - snap[1] > 0) {\n                          // ...if valid, we resize the this.el (which can include moving because the coord-system starts at the left-top and this edge is moving sometimes when resized)\n\n                          /*\n                           * but first check if the element is text box, so we can change the font size instead of\n                           * the width and height\n                           */\n\n                          if (this.parameters.type === \"text\") {\n                              this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y);\n                              this.el.attr(\"font-size\", this.parameters.fontSize - snap[0]);\n                              return;\n                          }\n\n                          snap = this.checkAspectRatio(snap);\n\n                          this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y + snap[1]).size(this.parameters.box.width - snap[0], this.parameters.box.height - snap[1]);\n                      }\n                  };\n                  break;\n\n              // Right-Top\n              case 'rt':\n                  // s.a.\n                  this.calc = function (diffX, diffY) {\n                      var snap = this.snapToGrid(diffX, diffY, 1 << 1);\n                      if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height - snap[1] > 0) {\n                          if (this.parameters.type === \"text\") {\n                              this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y);\n                              this.el.attr(\"font-size\", this.parameters.fontSize + snap[0]);\n                              return;\n                          }\n\n                          snap = this.checkAspectRatio(snap, true);\n\n                          this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).size(this.parameters.box.width + snap[0], this.parameters.box.height - snap[1]);\n                      }\n                  };\n                  break;\n\n              // Right-Bottom\n              case 'rb':\n                  // s.a.\n                  this.calc = function (diffX, diffY) {\n                      var snap = this.snapToGrid(diffX, diffY, 0);\n                      if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height + snap[1] > 0) {\n                          if (this.parameters.type === \"text\") {\n                              this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y);\n                              this.el.attr(\"font-size\", this.parameters.fontSize + snap[0]);\n                              return;\n                          }\n\n                          snap = this.checkAspectRatio(snap);\n\n                          this.el.move(this.parameters.box.x, this.parameters.box.y).size(this.parameters.box.width + snap[0], this.parameters.box.height + snap[1]);\n                      }\n                  };\n                  break;\n\n              // Left-Bottom\n              case 'lb':\n                  // s.a.\n                  this.calc = function (diffX, diffY) {\n                      var snap = this.snapToGrid(diffX, diffY, 1);\n                      if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height + snap[1] > 0) {\n                          if (this.parameters.type === \"text\") {\n                              this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y);\n                              this.el.attr(\"font-size\", this.parameters.fontSize - snap[0]);\n                              return;\n                          }\n\n                          snap = this.checkAspectRatio(snap, true);\n\n                          this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).size(this.parameters.box.width - snap[0], this.parameters.box.height + snap[1]);\n                      }\n                  };\n                  break;\n\n              // Top\n              case 't':\n                  // s.a.\n                  this.calc = function (diffX, diffY) {\n                      var snap = this.snapToGrid(diffX, diffY, 1 << 1);\n                      if (this.parameters.box.height - snap[1] > 0) {\n                          // Disable the font-resizing if it is not from the corner of bounding-box\n                          if (this.parameters.type === \"text\") {\n                              return;\n                          }\n\n                          this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).height(this.parameters.box.height - snap[1]);\n                      }\n                  };\n                  break;\n\n              // Right\n              case 'r':\n                  // s.a.\n                  this.calc = function (diffX, diffY) {\n                      var snap = this.snapToGrid(diffX, diffY, 0);\n                      if (this.parameters.box.width + snap[0] > 0) {\n                          if (this.parameters.type === \"text\") {\n                              return;\n                          }\n\n                          this.el.move(this.parameters.box.x, this.parameters.box.y).width(this.parameters.box.width + snap[0]);\n                      }\n                  };\n                  break;\n\n              // Bottom\n              case 'b':\n                  // s.a.\n                  this.calc = function (diffX, diffY) {\n                      var snap = this.snapToGrid(diffX, diffY, 0);\n                      if (this.parameters.box.height + snap[1] > 0) {\n                          if (this.parameters.type === \"text\") {\n                              return;\n                          }\n\n                          this.el.move(this.parameters.box.x, this.parameters.box.y).height(this.parameters.box.height + snap[1]);\n                      }\n                  };\n                  break;\n\n              // Left\n              case 'l':\n                  // s.a.\n                  this.calc = function (diffX, diffY) {\n                      var snap = this.snapToGrid(diffX, diffY, 1);\n                      if (this.parameters.box.width - snap[0] > 0) {\n                          if (this.parameters.type === \"text\") {\n                              return;\n                          }\n\n                          this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).width(this.parameters.box.width - snap[0]);\n                      }\n                  };\n                  break;\n\n              // Rotation\n              case 'rot':\n                  // s.a.\n                  this.calc = function (diffX, diffY) {\n\n                      // yes this is kinda stupid but we need the mouse coords back...\n                      var current = {x: diffX + this.parameters.p.x, y: diffY + this.parameters.p.y};\n\n                      // start minus middle\n                      var sAngle = Math.atan2((this.parameters.p.y - this.parameters.box.y - this.parameters.box.height / 2), (this.parameters.p.x - this.parameters.box.x - this.parameters.box.width / 2));\n\n                      // end minus middle\n                      var pAngle = Math.atan2((current.y - this.parameters.box.y - this.parameters.box.height / 2), (current.x - this.parameters.box.x - this.parameters.box.width / 2));\n\n                      var angle = this.parameters.rotation + (pAngle - sAngle) * 180 / Math.PI + this.options.snapToAngle / 2;\n\n                      // We have to move the element to the center of the box first and change the rotation afterwards\n                      // because rotation always works around a rotation-center, which is changed when moving the element\n                      // We also set the new rotation center to the center of the box.\n                      this.el.center(this.parameters.box.cx, this.parameters.box.cy).rotate(angle - (angle % this.options.snapToAngle), this.parameters.box.cx, this.parameters.box.cy);\n                  };\n                  break;\n\n              // Moving one single Point (needed when an element is deepSelected which means you can move every single point of the object)\n              case 'point':\n                  this.calc = function (diffX, diffY) {\n\n                      // Snapping the point to the grid\n                      var snap = this.snapToGrid(diffX, diffY, this.parameters.pointCoords[0], this.parameters.pointCoords[1]);\n\n                      // Get the point array\n                      var array = this.el.array().valueOf();\n\n                      // Changing the moved point in the array\n                      array[this.parameters.i][0] = this.parameters.pointCoords[0] + snap[0];\n                      array[this.parameters.i][1] = this.parameters.pointCoords[1] + snap[1];\n\n                      // And plot the new this.el\n                      this.el.plot(array);\n                  };\n          }\n\n          this.el.fire('resizestart', {dx: this.parameters.x, dy: this.parameters.y, event: event});\n          // When resizing started, we have to register events for...\n          // Touches.\n          SVG.on(window, 'touchmove.resize', function(e) {\n              _this.update(e || window.event);\n          });\n          SVG.on(window, 'touchend.resize', function() {\n              _this.done();\n          });\n          // Mouse.\n          SVG.on(window, 'mousemove.resize', function (e) {\n              _this.update(e || window.event);\n          });\n          SVG.on(window, 'mouseup.resize', function () {\n              _this.done();\n          });\n\n      };\n\n      // The update-function redraws the element every time the mouse is moving\n      ResizeHandler.prototype.update = function (event) {\n\n          if (!event) {\n              if (this.lastUpdateCall) {\n                  this.calc(this.lastUpdateCall[0], this.lastUpdateCall[1]);\n              }\n              return;\n          }\n\n          // Calculate the difference between the mouseposition at start and now\n          var txPt = this._extractPosition(event);\n          var p = this.transformPoint(txPt.x, txPt.y);\n\n          var diffX = p.x - this.parameters.p.x,\n              diffY = p.y - this.parameters.p.y;\n\n          this.lastUpdateCall = [diffX, diffY];\n\n          // Calculate the new position and height / width of the element\n          this.calc(diffX, diffY);\n\n         // Emit an event to say we have changed.\n          this.el.fire('resizing', {dx: diffX, dy: diffY, event: event});\n      };\n\n      // Is called on mouseup.\n      // Removes the update-function from the mousemove event\n      ResizeHandler.prototype.done = function () {\n          this.lastUpdateCall = null;\n          SVG.off(window, 'mousemove.resize');\n          SVG.off(window, 'mouseup.resize');\n          SVG.off(window, 'touchmove.resize');\n          SVG.off(window, 'touchend.resize');\n          this.el.fire('resizedone');\n      };\n\n      // The flag is used to determine whether the resizing is used with a left-Point (first bit) and top-point (second bit)\n      // In this cases the temp-values are calculated differently\n      ResizeHandler.prototype.snapToGrid = function (diffX, diffY, flag, pointCoordsY) {\n\n          var temp;\n\n          // If `pointCoordsY` is given, a single Point has to be snapped (deepSelect). That's why we need a different temp-value\n          if (typeof pointCoordsY !== 'undefined') {\n              // Note that flag = pointCoordsX in this case\n              temp = [(flag + diffX) % this.options.snapToGrid, (pointCoordsY + diffY) % this.options.snapToGrid];\n          } else {\n              // We check if the flag is set and if not we set a default-value (both bits set - which means upper-left-edge)\n              flag = flag == null ? 1 | 1 << 1 : flag;\n              temp = [(this.parameters.box.x + diffX + (flag & 1 ? 0 : this.parameters.box.width)) % this.options.snapToGrid, (this.parameters.box.y + diffY + (flag & (1 << 1) ? 0 : this.parameters.box.height)) % this.options.snapToGrid];\n          }\n\n          if(diffX < 0) {\n              temp[0] -= this.options.snapToGrid;\n          }\n          if(diffY < 0) {\n              temp[1] -= this.options.snapToGrid;\n          }\n\n          diffX -= (Math.abs(temp[0]) < this.options.snapToGrid / 2 ?\n                    temp[0] :\n                    temp[0] - (diffX < 0 ? -this.options.snapToGrid : this.options.snapToGrid));\n          diffY -= (Math.abs(temp[1]) < this.options.snapToGrid / 2 ?\n                    temp[1] :\n                    temp[1] - (diffY < 0 ? -this.options.snapToGrid : this.options.snapToGrid));\n\n          return this.constraintToBox(diffX, diffY, flag, pointCoordsY);\n\n      };\n\n      // keep element within constrained box\n      ResizeHandler.prototype.constraintToBox = function (diffX, diffY, flag, pointCoordsY) {\n          //return [diffX, diffY]\n          var c = this.options.constraint || {};\n          var orgX, orgY;\n\n          if (typeof pointCoordsY !== 'undefined') {\n            orgX = flag;\n            orgY = pointCoordsY;\n          } else {\n            orgX = this.parameters.box.x + (flag & 1 ? 0 : this.parameters.box.width);\n            orgY = this.parameters.box.y + (flag & (1<<1) ? 0 : this.parameters.box.height);\n          }\n\n          if (typeof c.minX !== 'undefined' && orgX + diffX < c.minX) {\n            diffX = c.minX - orgX;\n          }\n\n          if (typeof c.maxX !== 'undefined' && orgX + diffX > c.maxX) {\n            diffX = c.maxX - orgX;\n          }\n\n          if (typeof c.minY !== 'undefined' && orgY + diffY < c.minY) {\n            diffY = c.minY - orgY;\n          }\n\n          if (typeof c.maxY !== 'undefined' && orgY + diffY > c.maxY) {\n            diffY = c.maxY - orgY;\n          }\n\n          return [diffX, diffY];\n      };\n\n      ResizeHandler.prototype.checkAspectRatio = function (snap, isReverse) {\n          if (!this.options.saveAspectRatio) {\n              return snap;\n          }\n\n          var updatedSnap = snap.slice();\n          var aspectRatio = this.parameters.box.width / this.parameters.box.height;\n          var newW = this.parameters.box.width + snap[0];\n          var newH = this.parameters.box.height - snap[1];\n          var newAspectRatio = newW / newH;\n\n          if (newAspectRatio < aspectRatio) {\n              // Height is too big. Adapt it\n              updatedSnap[1] = newW / aspectRatio - this.parameters.box.height;\n              isReverse && (updatedSnap[1] = -updatedSnap[1]);\n          } else if (newAspectRatio > aspectRatio) {\n              // Width is too big. Adapt it\n              updatedSnap[0] = this.parameters.box.width - newH * aspectRatio;\n              isReverse && (updatedSnap[0] = -updatedSnap[0]);\n          }\n\n          return updatedSnap;\n      };\n\n      SVG.extend(SVG.Element, {\n          // Resize element with mouse\n          resize: function (options) {\n\n              (this.remember('_resizeHandler') || new ResizeHandler(this)).init(options || {});\n\n              return this;\n\n          }\n\n      });\n\n      SVG.Element.prototype.resize.defaults = {\n          snapToAngle: 0.1,       // Specifies the speed the rotation is happening when moving the mouse\n          snapToGrid: 1,          // Snaps to a grid of `snapToGrid` Pixels\n          constraint: {},         // keep element within constrained box\n          saveAspectRatio: false  // Save aspect ratio when resizing using lt, rt, rb or lb points\n      };\n\n  }).call(this);\n  }());\n\n  function styleInject(css, ref) {\n    if ( ref === void 0 ) ref = {};\n    var insertAt = ref.insertAt;\n\n    if (!css || typeof document === 'undefined') { return; }\n\n    var head = document.head || document.getElementsByTagName('head')[0];\n    var style = document.createElement('style');\n    style.type = 'text/css';\n\n    if (insertAt === 'top') {\n      if (head.firstChild) {\n        head.insertBefore(style, head.firstChild);\n      } else {\n        head.appendChild(style);\n      }\n    } else {\n      head.appendChild(style);\n    }\n\n    if (style.styleSheet) {\n      style.styleSheet.cssText = css;\n    } else {\n      style.appendChild(document.createTextNode(css));\n    }\n  }\n\n  var css = \".apexcharts-canvas {\\n  position: relative;\\n  user-select: none;\\n  /* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */\\n}\\n\\n\\n/* scrollbar is not visible by default for legend, hence forcing the visibility */\\n.apexcharts-canvas ::-webkit-scrollbar {\\n  -webkit-appearance: none;\\n  width: 6px;\\n}\\n\\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\\n  border-radius: 4px;\\n  background-color: rgba(0, 0, 0, .5);\\n  box-shadow: 0 0 1px rgba(255, 255, 255, .5);\\n  -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);\\n}\\n\\n.apexcharts-canvas.apexcharts-theme-dark {\\n  background: #343F57;\\n}\\n\\n.apexcharts-inner {\\n  position: relative;\\n}\\n\\n.apexcharts-text tspan {\\n  font-family: inherit;\\n}\\n\\n.legend-mouseover-inactive {\\n  transition: 0.15s ease all;\\n  opacity: 0.20;\\n}\\n\\n.apexcharts-series-collapsed {\\n  opacity: 0;\\n}\\n\\n.apexcharts-tooltip {\\n  border-radius: 5px;\\n  box-shadow: 2px 2px 6px -4px #999;\\n  cursor: default;\\n  font-size: 14px;\\n  left: 62px;\\n  opacity: 0;\\n  pointer-events: none;\\n  position: absolute;\\n  top: 20px;\\n  overflow: hidden;\\n  white-space: nowrap;\\n  z-index: 12;\\n  transition: 0.15s ease all;\\n}\\n\\n.apexcharts-tooltip.apexcharts-active {\\n  opacity: 1;\\n  transition: 0.15s ease all;\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-light {\\n  border: 1px solid #e3e3e3;\\n  background: rgba(255, 255, 255, 0.96);\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-dark {\\n  color: #fff;\\n  background: rgba(30, 30, 30, 0.8);\\n}\\n\\n.apexcharts-tooltip * {\\n  font-family: inherit;\\n}\\n\\n\\n.apexcharts-tooltip-title {\\n  padding: 6px;\\n  font-size: 15px;\\n  margin-bottom: 4px;\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\\n  background: #ECEFF1;\\n  border-bottom: 1px solid #ddd;\\n}\\n\\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\\n  background: rgba(0, 0, 0, 0.7);\\n  border-bottom: 1px solid #333;\\n}\\n\\n.apexcharts-tooltip-text-value,\\n.apexcharts-tooltip-text-z-value {\\n  display: inline-block;\\n  font-weight: 600;\\n  margin-left: 5px;\\n}\\n\\n.apexcharts-tooltip-text-z-label:empty,\\n.apexcharts-tooltip-text-z-value:empty {\\n  display: none;\\n}\\n\\n.apexcharts-tooltip-text-value,\\n.apexcharts-tooltip-text-z-value {\\n  font-weight: 600;\\n}\\n\\n.apexcharts-tooltip-marker {\\n  width: 12px;\\n  height: 12px;\\n  position: relative;\\n  top: 0px;\\n  margin-right: 10px;\\n  border-radius: 50%;\\n}\\n\\n.apexcharts-tooltip-series-group {\\n  padding: 0 10px;\\n  display: none;\\n  text-align: left;\\n  justify-content: left;\\n  align-items: center;\\n}\\n\\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\\n  opacity: 1;\\n}\\n\\n.apexcharts-tooltip-series-group.apexcharts-active,\\n.apexcharts-tooltip-series-group:last-child {\\n  padding-bottom: 4px;\\n}\\n\\n.apexcharts-tooltip-series-group-hidden {\\n  opacity: 0;\\n  height: 0;\\n  line-height: 0;\\n  padding: 0 !important;\\n}\\n\\n.apexcharts-tooltip-y-group {\\n  padding: 6px 0 5px;\\n}\\n\\n.apexcharts-tooltip-candlestick {\\n  padding: 4px 8px;\\n}\\n\\n.apexcharts-tooltip-candlestick>div {\\n  margin: 4px 0;\\n}\\n\\n.apexcharts-tooltip-candlestick span.value {\\n  font-weight: bold;\\n}\\n\\n.apexcharts-tooltip-rangebar {\\n  padding: 5px 8px;\\n}\\n\\n.apexcharts-tooltip-rangebar .category {\\n  font-weight: 600;\\n  color: #777;\\n}\\n\\n.apexcharts-tooltip-rangebar .series-name {\\n  font-weight: bold;\\n  display: block;\\n  margin-bottom: 5px;\\n}\\n\\n.apexcharts-xaxistooltip {\\n  opacity: 0;\\n  padding: 9px 10px;\\n  pointer-events: none;\\n  color: #373d3f;\\n  font-size: 13px;\\n  text-align: center;\\n  border-radius: 2px;\\n  position: absolute;\\n  z-index: 10;\\n  background: #ECEFF1;\\n  border: 1px solid #90A4AE;\\n  transition: 0.15s ease all;\\n}\\n\\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\\n  background: rgba(0, 0, 0, 0.7);\\n  border: 1px solid rgba(0, 0, 0, 0.5);\\n  color: #fff;\\n}\\n\\n.apexcharts-xaxistooltip:after,\\n.apexcharts-xaxistooltip:before {\\n  left: 50%;\\n  border: solid transparent;\\n  content: \\\" \\\";\\n  height: 0;\\n  width: 0;\\n  position: absolute;\\n  pointer-events: none;\\n}\\n\\n.apexcharts-xaxistooltip:after {\\n  border-color: rgba(236, 239, 241, 0);\\n  border-width: 6px;\\n  margin-left: -6px;\\n}\\n\\n.apexcharts-xaxistooltip:before {\\n  border-color: rgba(144, 164, 174, 0);\\n  border-width: 7px;\\n  margin-left: -7px;\\n}\\n\\n.apexcharts-xaxistooltip-bottom:after,\\n.apexcharts-xaxistooltip-bottom:before {\\n  bottom: 100%;\\n}\\n\\n.apexcharts-xaxistooltip-top:after,\\n.apexcharts-xaxistooltip-top:before {\\n  top: 100%;\\n}\\n\\n.apexcharts-xaxistooltip-bottom:after {\\n  border-bottom-color: #ECEFF1;\\n}\\n\\n.apexcharts-xaxistooltip-bottom:before {\\n  border-bottom-color: #90A4AE;\\n}\\n\\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after {\\n  border-bottom-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\\n  border-bottom-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n.apexcharts-xaxistooltip-top:after {\\n  border-top-color: #ECEFF1\\n}\\n\\n.apexcharts-xaxistooltip-top:before {\\n  border-top-color: #90A4AE;\\n}\\n\\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after {\\n  border-top-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\\n  border-top-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n.apexcharts-xaxistooltip.apexcharts-active {\\n  opacity: 1;\\n  transition: 0.15s ease all;\\n}\\n\\n.apexcharts-yaxistooltip {\\n  opacity: 0;\\n  padding: 4px 10px;\\n  pointer-events: none;\\n  color: #373d3f;\\n  font-size: 13px;\\n  text-align: center;\\n  border-radius: 2px;\\n  position: absolute;\\n  z-index: 10;\\n  background: #ECEFF1;\\n  border: 1px solid #90A4AE;\\n}\\n\\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\\n  background: rgba(0, 0, 0, 0.7);\\n  border: 1px solid rgba(0, 0, 0, 0.5);\\n  color: #fff;\\n}\\n\\n.apexcharts-yaxistooltip:after,\\n.apexcharts-yaxistooltip:before {\\n  top: 50%;\\n  border: solid transparent;\\n  content: \\\" \\\";\\n  height: 0;\\n  width: 0;\\n  position: absolute;\\n  pointer-events: none;\\n}\\n\\n.apexcharts-yaxistooltip:after {\\n  border-color: rgba(236, 239, 241, 0);\\n  border-width: 6px;\\n  margin-top: -6px;\\n}\\n\\n.apexcharts-yaxistooltip:before {\\n  border-color: rgba(144, 164, 174, 0);\\n  border-width: 7px;\\n  margin-top: -7px;\\n}\\n\\n.apexcharts-yaxistooltip-left:after,\\n.apexcharts-yaxistooltip-left:before {\\n  left: 100%;\\n}\\n\\n.apexcharts-yaxistooltip-right:after,\\n.apexcharts-yaxistooltip-right:before {\\n  right: 100%;\\n}\\n\\n.apexcharts-yaxistooltip-left:after {\\n  border-left-color: #ECEFF1;\\n}\\n\\n.apexcharts-yaxistooltip-left:before {\\n  border-left-color: #90A4AE;\\n}\\n\\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after {\\n  border-left-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\\n  border-left-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n.apexcharts-yaxistooltip-right:after {\\n  border-right-color: #ECEFF1;\\n}\\n\\n.apexcharts-yaxistooltip-right:before {\\n  border-right-color: #90A4AE;\\n}\\n\\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after {\\n  border-right-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\\n  border-right-color: rgba(0, 0, 0, 0.5);\\n}\\n\\n.apexcharts-yaxistooltip.apexcharts-active {\\n  opacity: 1;\\n}\\n\\n.apexcharts-yaxistooltip-hidden {\\n  display: none;\\n}\\n\\n.apexcharts-xcrosshairs,\\n.apexcharts-ycrosshairs {\\n  pointer-events: none;\\n  opacity: 0;\\n  transition: 0.15s ease all;\\n}\\n\\n.apexcharts-xcrosshairs.apexcharts-active,\\n.apexcharts-ycrosshairs.apexcharts-active {\\n  opacity: 1;\\n  transition: 0.15s ease all;\\n}\\n\\n.apexcharts-ycrosshairs-hidden {\\n  opacity: 0;\\n}\\n\\n.apexcharts-selection-rect {\\n  cursor: move;\\n}\\n\\n.svg_select_boundingRect, .svg_select_points_rot {\\n  pointer-events: none;\\n  opacity: 0;\\n  visibility: hidden;\\n}\\n.apexcharts-selection-rect + g .svg_select_boundingRect,\\n.apexcharts-selection-rect + g .svg_select_points_rot {\\n  opacity: 0;\\n  visibility: hidden;\\n}\\n\\n.apexcharts-selection-rect + g .svg_select_points_l,\\n.apexcharts-selection-rect + g .svg_select_points_r {\\n  cursor: ew-resize;\\n  opacity: 1;\\n  visibility: visible;\\n}\\n\\n.svg_select_points {\\n  fill: #efefef;\\n  stroke: #333;\\n  rx: 2;\\n}\\n\\n.apexcharts-canvas.apexcharts-zoomable .hovering-zoom {\\n  cursor: crosshair\\n}\\n\\n.apexcharts-canvas.apexcharts-zoomable .hovering-pan {\\n  cursor: move\\n}\\n\\n.apexcharts-zoom-icon,\\n.apexcharts-zoomin-icon,\\n.apexcharts-zoomout-icon,\\n.apexcharts-reset-icon,\\n.apexcharts-pan-icon,\\n.apexcharts-selection-icon,\\n.apexcharts-menu-icon,\\n.apexcharts-toolbar-custom-icon {\\n  cursor: pointer;\\n  width: 20px;\\n  height: 20px;\\n  line-height: 24px;\\n  color: #6E8192;\\n  text-align: center;\\n}\\n\\n.apexcharts-zoom-icon svg,\\n.apexcharts-zoomin-icon svg,\\n.apexcharts-zoomout-icon svg,\\n.apexcharts-reset-icon svg,\\n.apexcharts-menu-icon svg {\\n  fill: #6E8192;\\n}\\n\\n.apexcharts-selection-icon svg {\\n  fill: #444;\\n  transform: scale(0.76)\\n}\\n\\n.apexcharts-theme-dark .apexcharts-zoom-icon svg,\\n.apexcharts-theme-dark .apexcharts-zoomin-icon svg,\\n.apexcharts-theme-dark .apexcharts-zoomout-icon svg,\\n.apexcharts-theme-dark .apexcharts-reset-icon svg,\\n.apexcharts-theme-dark .apexcharts-pan-icon svg,\\n.apexcharts-theme-dark .apexcharts-selection-icon svg,\\n.apexcharts-theme-dark .apexcharts-menu-icon svg,\\n.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg {\\n  fill: #f3f4f5;\\n}\\n\\n.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg,\\n.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,\\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg {\\n  fill: #008FFB;\\n}\\n\\n.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,\\n.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,\\n.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,\\n.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg,\\n.apexcharts-theme-light .apexcharts-reset-icon:hover svg,\\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg {\\n  fill: #333;\\n}\\n\\n.apexcharts-selection-icon,\\n.apexcharts-menu-icon {\\n  position: relative;\\n}\\n\\n.apexcharts-reset-icon {\\n  margin-left: 5px;\\n}\\n\\n.apexcharts-zoom-icon,\\n.apexcharts-reset-icon,\\n.apexcharts-menu-icon {\\n  transform: scale(0.85);\\n}\\n\\n.apexcharts-zoomin-icon,\\n.apexcharts-zoomout-icon {\\n  transform: scale(0.7)\\n}\\n\\n.apexcharts-zoomout-icon {\\n  margin-right: 3px;\\n}\\n\\n.apexcharts-pan-icon {\\n  transform: scale(0.62);\\n  position: relative;\\n  left: 1px;\\n  top: 0px;\\n}\\n\\n.apexcharts-pan-icon svg {\\n  fill: #fff;\\n  stroke: #6E8192;\\n  stroke-width: 2;\\n}\\n\\n.apexcharts-pan-icon.apexcharts-selected svg {\\n  stroke: #008FFB;\\n}\\n\\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\\n  stroke: #333;\\n}\\n\\n.apexcharts-toolbar {\\n  position: absolute;\\n  z-index: 11;\\n  max-width: 176px;\\n  text-align: right;\\n  border-radius: 3px;\\n  padding: 0px 6px 2px 6px;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n}\\n\\n.apexcharts-menu {\\n  background: #fff;\\n  position: absolute;\\n  top: 100%;\\n  border: 1px solid #ddd;\\n  border-radius: 3px;\\n  padding: 3px;\\n  right: 10px;\\n  opacity: 0;\\n  min-width: 110px;\\n  transition: 0.15s ease all;\\n  pointer-events: none;\\n}\\n\\n.apexcharts-menu.apexcharts-menu-open {\\n  opacity: 1;\\n  pointer-events: all;\\n  transition: 0.15s ease all;\\n}\\n\\n.apexcharts-menu-item {\\n  padding: 6px 7px;\\n  font-size: 12px;\\n  cursor: pointer;\\n}\\n\\n.apexcharts-theme-light .apexcharts-menu-item:hover {\\n  background: #eee;\\n}\\n\\n.apexcharts-theme-dark .apexcharts-menu {\\n  background: rgba(0, 0, 0, 0.7);\\n  color: #fff;\\n}\\n\\n@media screen and (min-width: 768px) {\\n  .apexcharts-canvas:hover .apexcharts-toolbar {\\n    opacity: 1;\\n  }\\n}\\n\\n.apexcharts-datalabel.apexcharts-element-hidden {\\n  opacity: 0;\\n}\\n\\n.apexcharts-pie-label,\\n.apexcharts-datalabels,\\n.apexcharts-datalabel,\\n.apexcharts-datalabel-label,\\n.apexcharts-datalabel-value {\\n  cursor: default;\\n  pointer-events: none;\\n}\\n\\n.apexcharts-pie-label-delay {\\n  opacity: 0;\\n  animation-name: opaque;\\n  animation-duration: 0.3s;\\n  animation-fill-mode: forwards;\\n  animation-timing-function: ease;\\n}\\n\\n.apexcharts-canvas .apexcharts-element-hidden {\\n  opacity: 0;\\n}\\n\\n.apexcharts-hide .apexcharts-series-points {\\n  opacity: 0;\\n}\\n\\n.apexcharts-gridline,\\n.apexcharts-annotation-rect,\\n.apexcharts-tooltip .apexcharts-marker,\\n.apexcharts-area-series .apexcharts-area,\\n.apexcharts-line,\\n.apexcharts-zoom-rect,\\n.apexcharts-toolbar svg,\\n.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\\n.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\\n.apexcharts-radar-series path,\\n.apexcharts-radar-series polygon {\\n  pointer-events: none;\\n}\\n\\n\\n/* markers */\\n\\n.apexcharts-marker {\\n  transition: 0.15s ease all;\\n}\\n\\n@keyframes opaque {\\n  0% {\\n    opacity: 0;\\n  }\\n  100% {\\n    opacity: 1;\\n  }\\n}\\n\\n\\n/* Resize generated styles */\\n\\n@keyframes resizeanim {\\n  from {\\n    opacity: 0;\\n  }\\n  to {\\n    opacity: 0;\\n  }\\n}\\n\\n.resize-triggers {\\n  animation: 1ms resizeanim;\\n  visibility: hidden;\\n  opacity: 0;\\n}\\n\\n.resize-triggers,\\n.resize-triggers>div,\\n.contract-trigger:before {\\n  content: \\\" \\\";\\n  display: block;\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  height: 100%;\\n  width: 100%;\\n  overflow: hidden;\\n}\\n\\n.resize-triggers>div {\\n  background: #eee;\\n  overflow: auto;\\n}\\n\\n.contract-trigger:before {\\n  width: 200%;\\n  height: 200%;\\n}\";\n  styleInject(css);\n\n  /**\n   * Detect Element Resize\n   *\n   * https://github.com/sdecima/javascript-detect-element-resize\n   * Sebastian Decima\n   *\n   * version: 0.5.3\n   **/\n\n  (function () {\n    function resetTriggers(element) {\n      var triggers = element.__resizeTriggers__,\n          expand = triggers.firstElementChild,\n          contract = triggers.lastElementChild,\n          expandChild = expand ? expand.firstElementChild : null;\n\n      if (contract) {\n        contract.scrollLeft = contract.scrollWidth;\n        contract.scrollTop = contract.scrollHeight;\n      }\n\n      if (expandChild) {\n        expandChild.style.width = expand.offsetWidth + 1 + 'px';\n        expandChild.style.height = expand.offsetHeight + 1 + 'px';\n      }\n\n      if (expand) {\n        expand.scrollLeft = expand.scrollWidth;\n        expand.scrollTop = expand.scrollHeight;\n      }\n    }\n\n    function checkTriggers(element) {\n      return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n    }\n\n    function scrollListener(e) {\n      var element = this;\n      resetTriggers(this);\n      if (this.__resizeRAF__) cancelFrame(this.__resizeRAF__);\n      this.__resizeRAF__ = requestFrame(function () {\n        if (checkTriggers(element)) {\n          element.__resizeLast__.width = element.offsetWidth;\n          element.__resizeLast__.height = element.offsetHeight;\n\n          element.__resizeListeners__.forEach(function (fn) {\n            fn.call(e);\n          });\n        }\n      });\n    }\n\n    var requestFrame = function () {\n      var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (fn) {\n        return window.setTimeout(fn, 20);\n      };\n\n      return function (fn) {\n        return raf(fn);\n      };\n    }();\n\n    var cancelFrame = function () {\n      var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;\n      return function (id) {\n        return cancel(id);\n      };\n    }();\n    /* Detect CSS Animations support to detect element display/re-attach */\n\n\n    var animation = false,\n        animationstartevent = 'animationstart',\n        domPrefixes = 'Webkit Moz O ms'.split(' '),\n        startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' ');\n    {\n      var elm = document.createElement('fakeelement');\n\n      if (elm.style.animationName !== undefined) {\n        animation = true;\n      }\n\n      if (animation === false) {\n        for (var i = 0; i < domPrefixes.length; i++) {\n          if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n            animationstartevent = startEvents[i];\n            break;\n          }\n        }\n      }\n    }\n    var animationName = 'resizeanim';\n\n    window.addResizeListener = function (element, fn) {\n      if (!element.__resizeTriggers__) {\n        if (getComputedStyle(element).position == 'static') element.style.position = 'relative';\n        element.__resizeLast__ = {};\n        element.__resizeListeners__ = [];\n        (element.__resizeTriggers__ = document.createElement('div')).className = 'resize-triggers';\n        element.__resizeTriggers__.innerHTML = '<div class=\"expand-trigger\"><div></div></div>' + '<div class=\"contract-trigger\"></div>';\n        element.appendChild(element.__resizeTriggers__);\n        resetTriggers(element);\n        element.addEventListener('scroll', scrollListener, true);\n        /* Listen for a css animation to detect element display/re-attach */\n\n        animationstartevent && element.__resizeTriggers__.addEventListener(animationstartevent, function (e) {\n          if (e.animationName == animationName) {\n            resetTriggers(element);\n          }\n        });\n      }\n\n      element.__resizeListeners__.push(fn);\n    };\n\n    window.removeResizeListener = function (element, fn) {\n      if (element) {\n        element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n\n        if (!element.__resizeListeners__.length) {\n          element.removeEventListener('scroll', scrollListener);\n\n          if (element.__resizeTriggers__.parentNode) {\n            element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n          }\n        }\n      }\n    };\n  })();\n\n  window.Apex = {};\n\n  var InitCtxVariables = /*#__PURE__*/function () {\n    function InitCtxVariables(ctx) {\n      _classCallCheck(this, InitCtxVariables);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    }\n\n    _createClass(InitCtxVariables, [{\n      key: \"initModules\",\n      value: function initModules() {\n        this.ctx.publicMethods = ['updateOptions', 'updateSeries', 'appendData', 'appendSeries', 'toggleSeries', 'showSeries', 'hideSeries', 'setLocale', 'resetSeries', 'toggleDataPointSelection', 'dataURI', 'addXaxisAnnotation', 'addYaxisAnnotation', 'addPointAnnotation', 'clearAnnotations', 'removeAnnotation', 'paper', 'destroy'];\n        this.ctx.eventList = ['click', 'mousedown', 'mousemove', 'touchstart', 'touchmove', 'mouseup', 'touchend'];\n        this.ctx.animations = new Animations(this.ctx);\n        this.ctx.axes = new Axes(this.ctx);\n        this.ctx.core = new Core(this.ctx.el, this.ctx);\n        this.ctx.config = new Config({});\n        this.ctx.data = new Data(this.ctx);\n        this.ctx.grid = new Grid(this.ctx);\n        this.ctx.graphics = new Graphics(this.ctx);\n        this.ctx.coreUtils = new CoreUtils(this.ctx);\n        this.ctx.crosshairs = new Crosshairs(this.ctx);\n        this.ctx.events = new Events(this.ctx);\n        this.ctx.exports = new Exports(this.ctx);\n        this.ctx.localization = new Localization(this.ctx);\n        this.ctx.options = new Options();\n        this.ctx.responsive = new Responsive(this.ctx);\n        this.ctx.series = new Series(this.ctx);\n        this.ctx.theme = new Theme(this.ctx);\n        this.ctx.formatters = new Formatters(this.ctx);\n        this.ctx.titleSubtitle = new TitleSubtitle(this.ctx);\n        this.ctx.legend = new Legend(this.ctx);\n        this.ctx.toolbar = new Toolbar(this.ctx);\n        this.ctx.dimensions = new Dimensions(this.ctx);\n        this.ctx.updateHelpers = new UpdateHelpers(this.ctx);\n        this.ctx.zoomPanSelection = new ZoomPanSelection(this.ctx);\n        this.ctx.w.globals.tooltip = new Tooltip(this.ctx);\n      }\n    }]);\n\n    return InitCtxVariables;\n  }();\n\n  var Destroy = /*#__PURE__*/function () {\n    function Destroy(ctx) {\n      _classCallCheck(this, Destroy);\n\n      this.ctx = ctx;\n      this.w = ctx.w;\n    }\n\n    _createClass(Destroy, [{\n      key: \"clear\",\n      value: function clear() {\n        if (this.ctx.zoomPanSelection) {\n          this.ctx.zoomPanSelection.destroy();\n        }\n\n        if (this.ctx.toolbar) {\n          this.ctx.toolbar.destroy();\n        }\n\n        this.ctx.animations = null;\n        this.ctx.axes = null;\n        this.ctx.annotations = null;\n        this.ctx.core = null;\n        this.ctx.data = null;\n        this.ctx.grid = null;\n        this.ctx.series = null;\n        this.ctx.responsive = null;\n        this.ctx.theme = null;\n        this.ctx.formatters = null;\n        this.ctx.titleSubtitle = null;\n        this.ctx.legend = null;\n        this.ctx.dimensions = null;\n        this.ctx.options = null;\n        this.ctx.crosshairs = null;\n        this.ctx.zoomPanSelection = null;\n        this.ctx.updateHelpers = null;\n        this.ctx.toolbar = null;\n        this.ctx.localization = null;\n        this.ctx.w.globals.tooltip = null;\n        this.clearDomElements();\n      }\n    }, {\n      key: \"killSVG\",\n      value: function killSVG(draw) {\n        draw.each(function (i, children) {\n          this.removeClass('*');\n          this.off();\n          this.stop();\n        }, true);\n        draw.ungroup();\n        draw.clear();\n      }\n    }, {\n      key: \"clearDomElements\",\n      value: function clearDomElements() {\n        var _this = this;\n\n        // detach document event\n        this.ctx.eventList.forEach(function (event) {\n          document.removeEventListener(event, _this.ctx.events.documentEvent);\n        });\n        var domEls = this.w.globals.dom;\n\n        if (this.ctx.el !== null) {\n          // remove all child elements - resetting the whole chart\n          while (this.ctx.el.firstChild) {\n            this.ctx.el.removeChild(this.ctx.el.firstChild);\n          }\n        }\n\n        this.killSVG(domEls.Paper);\n        domEls.Paper.remove();\n        domEls.elWrap = null;\n        domEls.elGraphical = null;\n        domEls.elAnnotations = null;\n        domEls.elLegendWrap = null;\n        domEls.baseEl = null;\n        domEls.elGridRect = null;\n        domEls.elGridRectMask = null;\n        domEls.elGridRectMarkerMask = null;\n        domEls.elDefs = null;\n      }\n    }]);\n\n    return Destroy;\n  }();\n\n  /**\n   *\n   * @module ApexCharts\n   **/\n\n  var ApexCharts$1 = /*#__PURE__*/function () {\n    function ApexCharts(el, opts) {\n      _classCallCheck(this, ApexCharts);\n\n      this.opts = opts;\n      this.ctx = this; // Pass the user supplied options to the Base Class where these options will be extended with defaults. The returned object from Base Class will become the config object in the entire codebase.\n\n      this.w = new Base(opts).init();\n      this.el = el;\n      this.w.globals.cuid = Utils.randomId();\n      this.w.globals.chartID = this.w.config.chart.id ? this.w.config.chart.id : this.w.globals.cuid;\n      var initCtx = new InitCtxVariables(this);\n      initCtx.initModules();\n      this.create = Utils.bind(this.create, this);\n      this.windowResizeHandler = this._windowResize.bind(this);\n    }\n    /**\n     * The primary method user will call to render the chart.\n     */\n\n\n    _createClass(ApexCharts, [{\n      key: \"render\",\n      value: function render() {\n        var _this = this;\n\n        // main method\n        return new Promise(function (resolve, reject) {\n          // only draw chart, if element found\n          if (_this.el !== null) {\n            if (typeof Apex._chartInstances === 'undefined') {\n              Apex._chartInstances = [];\n            }\n\n            if (_this.w.config.chart.id) {\n              Apex._chartInstances.push({\n                id: _this.w.globals.chartID,\n                group: _this.w.config.chart.group,\n                chart: _this\n              });\n            } // set the locale here\n\n\n            _this.setLocale(_this.w.config.chart.defaultLocale);\n\n            var beforeMount = _this.w.config.chart.events.beforeMount;\n\n            if (typeof beforeMount === 'function') {\n              beforeMount(_this, _this.w);\n            }\n\n            _this.events.fireEvent('beforeMount', [_this, _this.w]);\n\n            window.addEventListener('resize', _this.windowResizeHandler);\n            window.addResizeListener(_this.el.parentNode, _this._parentResizeCallback.bind(_this));\n\n            var graphData = _this.create(_this.w.config.series, {});\n\n            if (!graphData) return resolve(_this);\n\n            _this.mount(graphData).then(function () {\n              if (typeof _this.w.config.chart.events.mounted === 'function') {\n                _this.w.config.chart.events.mounted(_this, _this.w);\n              }\n\n              _this.events.fireEvent('mounted', [_this, _this.w]);\n\n              resolve(graphData);\n            }).catch(function (e) {\n              reject(e); // handle error in case no data or element not found\n            });\n          } else {\n            reject(new Error('Element not found'));\n          }\n        });\n      }\n    }, {\n      key: \"create\",\n      value: function create(ser, opts) {\n        var w = this.w;\n        var initCtx = new InitCtxVariables(this);\n        initCtx.initModules();\n        var gl = this.w.globals;\n        gl.noData = false;\n        gl.animationEnded = false;\n        this.responsive.checkResponsiveConfig(opts);\n\n        if (w.config.xaxis.convertedCatToNumeric) {\n          var defaults = new Defaults(w.config);\n          defaults.convertCatToNumericXaxis(w.config, this.ctx);\n        }\n\n        if (this.el === null) {\n          gl.animationEnded = true;\n          return null;\n        }\n\n        this.core.setupElements();\n\n        if (gl.svgWidth === 0) {\n          // if the element is hidden, skip drawing\n          gl.animationEnded = true;\n          return null;\n        }\n\n        var combo = CoreUtils.checkComboSeries(ser);\n        gl.comboCharts = combo.comboCharts;\n        gl.comboBarCount = combo.comboBarCount;\n\n        if (ser.length === 0 || ser.length === 1 && ser[0].data && ser[0].data.length === 0) {\n          this.series.handleNoData();\n        }\n\n        this.events.setupEventHandlers(); // Handle the data inputted by user and set some of the global variables (for eg, if data is datetime / numeric / category). Don't calculate the range / min / max at this time\n\n        this.data.parseData(ser); // this is a good time to set theme colors first\n\n        this.theme.init(); // as markers accepts array, we need to setup global markers for easier access\n\n        var markers = new Markers(this);\n        markers.setGlobalMarkerSize(); // labelFormatters should be called before dimensions as in dimensions we need text labels width\n\n        this.formatters.setLabelFormatters();\n        this.titleSubtitle.draw(); // legend is calculated here before coreCalculations because it affects the plottable area\n        // if there is some data to show or user collapsed all series, then proceed drawing legend\n\n        if (!gl.noData || gl.collapsedSeries.length === gl.series.length) {\n          this.legend.init();\n        } // check whether in multiple series, all series share the same X\n\n\n        this.series.hasAllSeriesEqualX(); // coreCalculations will give the min/max range and yaxis/axis values. It should be called here to set series variable from config to globals\n\n        if (gl.axisCharts) {\n          this.core.coreCalculations();\n\n          if (w.config.xaxis.type !== 'category') {\n            // as we have minX and maxX values, determine the default DateTimeFormat for time series\n            this.formatters.setLabelFormatters();\n          }\n        } // we need to generate yaxis for heatmap separately as we are not showing numerics there, but seriesNames. There are some tweaks which are required for heatmap to align labels correctly which are done in below function\n        // Also we need to do this before calcuting Dimentions plotCoords() method of Dimensions\n\n\n        this.formatters.heatmapLabelFormatters(); // We got plottable area here, next task would be to calculate axis areas\n\n        this.dimensions.plotCoords();\n        var xyRatios = this.core.xySettings();\n        this.grid.createGridMask();\n        var elGraph = this.core.plotChartType(ser, xyRatios);\n        var dataLabels = new DataLabels(this);\n        dataLabels.bringForward();\n\n        if (w.config.dataLabels.background.enabled) {\n          dataLabels.dataLabelsBackground();\n        } // after all the drawing calculations, shift the graphical area (actual charts/bars) excluding legends\n\n\n        this.core.shiftGraphPosition();\n        var dim = {\n          plot: {\n            left: w.globals.translateX,\n            top: w.globals.translateY,\n            width: w.globals.gridWidth,\n            height: w.globals.gridHeight\n          }\n        };\n        return {\n          elGraph: elGraph,\n          xyRatios: xyRatios,\n          elInner: w.globals.dom.elGraphical,\n          dimensions: dim\n        };\n      }\n    }, {\n      key: \"mount\",\n      value: function mount() {\n        var _this2 = this;\n\n        var graphData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n        var me = this;\n        var w = me.w;\n        return new Promise(function (resolve, reject) {\n          // no data to display\n          if (me.el === null) {\n            return reject(new Error('Not enough data to display or target element not found'));\n          } else if (graphData === null || w.globals.allSeriesCollapsed) {\n            me.series.handleNoData();\n          }\n\n          me.axes.drawAxis(w.config.chart.type, graphData.xyRatios);\n          me.grid = new Grid(me);\n          var elgrid = me.grid.drawGrid();\n          me.annotations = new Annotations(me);\n          me.annotations.drawShapeAnnos();\n          me.annotations.drawImageAnnos();\n          me.annotations.drawTextAnnos();\n\n          if (w.config.grid.position === 'back' && elgrid) {\n            w.globals.dom.elGraphical.add(elgrid.el);\n          }\n\n          var xAxis = new XAxis(_this2.ctx);\n          var yaxis = new YAxis(_this2.ctx);\n\n          if (elgrid !== null) {\n            xAxis.xAxisLabelCorrections(elgrid.xAxisTickWidth);\n            yaxis.setYAxisTextAlignments();\n          }\n\n          if (w.config.annotations.position === 'back') {\n            w.globals.dom.Paper.add(w.globals.dom.elAnnotations);\n            me.annotations.drawAxesAnnotations();\n          }\n\n          if (graphData.elGraph instanceof Array) {\n            for (var g = 0; g < graphData.elGraph.length; g++) {\n              w.globals.dom.elGraphical.add(graphData.elGraph[g]);\n            }\n          } else {\n            w.globals.dom.elGraphical.add(graphData.elGraph);\n          }\n\n          if (w.config.grid.position === 'front' && elgrid) {\n            w.globals.dom.elGraphical.add(elgrid.el);\n          }\n\n          if (w.config.xaxis.crosshairs.position === 'front') {\n            me.crosshairs.drawXCrosshairs();\n          }\n\n          if (w.config.yaxis[0].crosshairs.position === 'front') {\n            me.crosshairs.drawYCrosshairs();\n          }\n\n          if (w.config.annotations.position === 'front') {\n            w.globals.dom.Paper.add(w.globals.dom.elAnnotations);\n            me.annotations.drawAxesAnnotations();\n          }\n\n          if (!w.globals.noData) {\n            // draw tooltips at the end\n            if (w.config.tooltip.enabled && !w.globals.noData) {\n              me.w.globals.tooltip.drawTooltip(graphData.xyRatios);\n            }\n\n            if (w.globals.axisCharts && (w.globals.isXNumeric || w.config.xaxis.convertedCatToNumeric)) {\n              if (w.config.chart.zoom.enabled || w.config.chart.selection && w.config.chart.selection.enabled || w.config.chart.pan && w.config.chart.pan.enabled) {\n                me.zoomPanSelection.init({\n                  xyRatios: graphData.xyRatios\n                });\n              }\n            } else {\n              var tools = w.config.chart.toolbar.tools;\n              var toolsArr = ['zoom', 'zoomin', 'zoomout', 'selection', 'pan', 'reset'];\n              toolsArr.forEach(function (t) {\n                tools[t] = false;\n              });\n            }\n\n            if (w.config.chart.toolbar.show && !w.globals.allSeriesCollapsed) {\n              me.toolbar.createToolbar();\n            }\n          }\n\n          if (w.globals.memory.methodsToExec.length > 0) {\n            w.globals.memory.methodsToExec.forEach(function (fn) {\n              fn.method(fn.params, false, fn.context);\n            });\n          }\n\n          if (!w.globals.axisCharts && !w.globals.noData) {\n            me.core.resizeNonAxisCharts();\n          }\n\n          resolve(me);\n        });\n      }\n      /**\n       * Destroy the chart instance by removing all elements which also clean up event listeners on those elements.\n       */\n\n    }, {\n      key: \"destroy\",\n      value: function destroy() {\n        window.removeEventListener('resize', this.windowResizeHandler);\n        window.removeResizeListener(this.el.parentNode, this._parentResizeCallback.bind(this)); // remove the chart's instance from the global Apex._chartInstances\n\n        var chartID = this.w.config.chart.id;\n\n        if (chartID) {\n          Apex._chartInstances.forEach(function (c, i) {\n            if (c.id === chartID) {\n              Apex._chartInstances.splice(i, 1);\n            }\n          });\n        }\n\n        new Destroy(this.ctx).clear();\n      }\n      /**\n       * Allows users to update Options after the chart has rendered.\n       *\n       * @param {object} options - A new config object can be passed which will be merged with the existing config object\n       * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there\n       * @param {boolean} animate - should animate or not on updating Options\n       */\n\n    }, {\n      key: \"updateOptions\",\n      value: function updateOptions(options) {\n        var _this3 = this;\n\n        var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n        var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n        var updateSyncedCharts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n        var overwriteInitialConfig = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n        var w = this.w;\n\n        if (options.series) {\n          this.series.resetSeries(false, true, false);\n\n          if (options.series.length && options.series[0].data) {\n            options.series = options.series.map(function (s, i) {\n              return _this3.updateHelpers._extendSeries(s, i);\n            });\n          } // user updated the series via updateOptions() function.\n          // Hence, we need to reset axis min/max to avoid zooming issues\n\n\n          this.updateHelpers.revertDefaultAxisMinMax();\n        } // user has set x-axis min/max externally - hence we need to forcefully set the xaxis min/max\n\n\n        if (options.xaxis) {\n          options = this.updateHelpers.forceXAxisUpdate(options);\n        }\n\n        if (options.yaxis) {\n          options = this.updateHelpers.forceYAxisUpdate(options);\n        }\n\n        if (w.globals.collapsedSeriesIndices.length > 0) {\n          this.series.clearPreviousPaths();\n        }\n        /* update theme mode#459 */\n\n\n        if (options.theme) {\n          options = this.theme.updateThemeOptions(options);\n        }\n\n        return this.updateHelpers._updateOptions(options, redraw, animate, updateSyncedCharts, overwriteInitialConfig);\n      }\n      /**\n       * Allows users to update Series after the chart has rendered.\n       *\n       * @param {array} series - New series which will override the existing\n       */\n\n    }, {\n      key: \"updateSeries\",\n      value: function updateSeries() {\n        var newSeries = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n        var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n        var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n        this.series.resetSeries(false);\n        this.updateHelpers.revertDefaultAxisMinMax();\n        return this.updateHelpers._updateSeries(newSeries, animate, overwriteInitialSeries);\n      }\n      /**\n       * Allows users to append a new series after the chart has rendered.\n       *\n       * @param {array} newSerie - New serie which will be appended to the existing series\n       */\n\n    }, {\n      key: \"appendSeries\",\n      value: function appendSeries(newSerie) {\n        var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n        var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n        var newSeries = this.w.config.series.slice();\n        newSeries.push(newSerie);\n        this.series.resetSeries(false);\n        this.updateHelpers.revertDefaultAxisMinMax();\n        return this.updateHelpers._updateSeries(newSeries, animate, overwriteInitialSeries);\n      }\n      /**\n       * Allows users to append Data to series.\n       *\n       * @param {array} newData - New data in the same format as series\n       */\n\n    }, {\n      key: \"appendData\",\n      value: function appendData(newData) {\n        var overwriteInitialSeries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n        var me = this;\n        me.w.globals.dataChanged = true;\n        me.series.getPreviousPaths();\n        var newSeries = me.w.config.series.slice();\n\n        for (var i = 0; i < newSeries.length; i++) {\n          if (typeof newData[i] !== 'undefined') {\n            for (var j = 0; j < newData[i].data.length; j++) {\n              newSeries[i].data.push(newData[i].data[j]);\n            }\n          }\n        }\n\n        me.w.config.series = newSeries;\n\n        if (overwriteInitialSeries) {\n          me.w.globals.initialSeries = JSON.parse(JSON.stringify(me.w.config.series));\n        }\n\n        return this.update();\n      }\n    }, {\n      key: \"update\",\n      value: function update(options) {\n        var _this4 = this;\n\n        return new Promise(function (resolve, reject) {\n          new Destroy(_this4.ctx).clear();\n\n          var graphData = _this4.create(_this4.w.config.series, options);\n\n          if (!graphData) return resolve(_this4);\n\n          _this4.mount(graphData).then(function () {\n            if (typeof _this4.w.config.chart.events.updated === 'function') {\n              _this4.w.config.chart.events.updated(_this4, _this4.w);\n            }\n\n            _this4.events.fireEvent('updated', [_this4, _this4.w]);\n\n            _this4.w.globals.isDirty = true;\n            resolve(_this4);\n          }).catch(function (e) {\n            reject(e);\n          });\n        });\n      }\n      /**\n       * Get all charts in the same \"group\" (including the instance which is called upon) to sync them when user zooms in/out or pan.\n       */\n\n    }, {\n      key: \"getSyncedCharts\",\n      value: function getSyncedCharts() {\n        var chartGroups = this.getGroupedCharts();\n        var allCharts = [this];\n\n        if (chartGroups.length) {\n          allCharts = [];\n          chartGroups.forEach(function (ch) {\n            allCharts.push(ch);\n          });\n        }\n\n        return allCharts;\n      }\n      /**\n       * Get charts in the same \"group\" (excluding the instance which is called upon) to perform operations on the other charts of the same group (eg., tooltip hovering)\n       */\n\n    }, {\n      key: \"getGroupedCharts\",\n      value: function getGroupedCharts() {\n        var _this5 = this;\n\n        return Apex._chartInstances.filter(function (ch) {\n          if (ch.group) {\n            return true;\n          }\n        }).map(function (ch) {\n          return _this5.w.config.chart.group === ch.group ? ch.chart : _this5;\n        });\n      }\n    }, {\n      key: \"toggleSeries\",\n      value: function toggleSeries(seriesName) {\n        return this.series.toggleSeries(seriesName);\n      }\n    }, {\n      key: \"showSeries\",\n      value: function showSeries(seriesName) {\n        this.series.showSeries(seriesName);\n      }\n    }, {\n      key: \"hideSeries\",\n      value: function hideSeries(seriesName) {\n        this.series.hideSeries(seriesName);\n      }\n    }, {\n      key: \"resetSeries\",\n      value: function resetSeries() {\n        var shouldUpdateChart = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n        this.series.resetSeries(shouldUpdateChart);\n      } // Public method to add event listener on chart context\n\n    }, {\n      key: \"addEventListener\",\n      value: function addEventListener(name, handler) {\n        this.events.addEventListener(name, handler);\n      } // Public method to remove event listener on chart context\n\n    }, {\n      key: \"removeEventListener\",\n      value: function removeEventListener(name, handler) {\n        this.events.removeEventListener(name, handler);\n      }\n    }, {\n      key: \"addXaxisAnnotation\",\n      value: function addXaxisAnnotation(opts) {\n        var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n        var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n        var me = this;\n\n        if (context) {\n          me = context;\n        }\n\n        me.annotations.addXaxisAnnotationExternal(opts, pushToMemory, me);\n      }\n    }, {\n      key: \"addYaxisAnnotation\",\n      value: function addYaxisAnnotation(opts) {\n        var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n        var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n        var me = this;\n\n        if (context) {\n          me = context;\n        }\n\n        me.annotations.addYaxisAnnotationExternal(opts, pushToMemory, me);\n      }\n    }, {\n      key: \"addPointAnnotation\",\n      value: function addPointAnnotation(opts) {\n        var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n        var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n        var me = this;\n\n        if (context) {\n          me = context;\n        }\n\n        me.annotations.addPointAnnotationExternal(opts, pushToMemory, me);\n      }\n    }, {\n      key: \"clearAnnotations\",\n      value: function clearAnnotations() {\n        var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n        var me = this;\n\n        if (context) {\n          me = context;\n        }\n\n        me.annotations.clearAnnotations(me);\n      }\n    }, {\n      key: \"removeAnnotation\",\n      value: function removeAnnotation(id) {\n        var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n        var me = this;\n\n        if (context) {\n          me = context;\n        }\n\n        me.annotations.removeAnnotation(me, id);\n      }\n    }, {\n      key: \"getChartArea\",\n      value: function getChartArea() {\n        var el = this.w.globals.dom.baseEl.querySelector('.apexcharts-inner');\n        return el;\n      }\n    }, {\n      key: \"getSeriesTotalXRange\",\n      value: function getSeriesTotalXRange(minX, maxX) {\n        return this.coreUtils.getSeriesTotalsXRange(minX, maxX);\n      }\n    }, {\n      key: \"getHighestValueInSeries\",\n      value: function getHighestValueInSeries() {\n        var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n        var range = new Range$1(this.ctx);\n        return range.getMinYMaxY(seriesIndex).highestY;\n      }\n    }, {\n      key: \"getLowestValueInSeries\",\n      value: function getLowestValueInSeries() {\n        var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n        var range = new Range$1(this.ctx);\n        return range.getMinYMaxY(seriesIndex).lowestY;\n      }\n    }, {\n      key: \"getSeriesTotal\",\n      value: function getSeriesTotal() {\n        return this.w.globals.seriesTotals;\n      }\n    }, {\n      key: \"toggleDataPointSelection\",\n      value: function toggleDataPointSelection(seriesIndex, dataPointIndex) {\n        return this.updateHelpers.toggleDataPointSelection(seriesIndex, dataPointIndex);\n      }\n    }, {\n      key: \"setLocale\",\n      value: function setLocale(localeName) {\n        this.localization.setCurrentLocaleValues(localeName);\n      }\n    }, {\n      key: \"dataURI\",\n      value: function dataURI() {\n        var exp = new Exports(this.ctx);\n        return exp.dataURI();\n      }\n    }, {\n      key: \"paper\",\n      value: function paper() {\n        return this.w.globals.dom.Paper;\n      }\n    }, {\n      key: \"_parentResizeCallback\",\n      value: function _parentResizeCallback() {\n        if (!this.w.globals.noData && this.w.globals.animationEnded && this.w.config.chart.redrawOnParentResize) {\n          this._windowResize();\n        }\n      }\n      /**\n       * Handle window resize and re-draw the whole chart.\n       */\n\n    }, {\n      key: \"_windowResize\",\n      value: function _windowResize() {\n        var _this6 = this;\n\n        clearTimeout(this.w.globals.resizeTimer);\n        this.w.globals.resizeTimer = window.setTimeout(function () {\n          _this6.w.globals.resized = true;\n          _this6.w.globals.dataChanged = false; // we need to redraw the whole chart on window resize (with a small delay).\n\n          _this6.ctx.update();\n        }, 150);\n      }\n    }], [{\n      key: \"getChartByID\",\n      value: function getChartByID(chartID) {\n        var c = Apex._chartInstances.filter(function (ch) {\n          return ch.id === chartID;\n        })[0];\n\n        return c && c.chart;\n      }\n      /**\n       * Allows the user to provide data attrs in the element and the chart will render automatically when this method is called by searching for the elements containing 'data-apexcharts' attribute\n       */\n\n    }, {\n      key: \"initOnLoad\",\n      value: function initOnLoad() {\n        var els = document.querySelectorAll('[data-apexcharts]');\n\n        for (var i = 0; i < els.length; i++) {\n          var el = els[i];\n          var options = JSON.parse(els[i].getAttribute('data-options'));\n          var apexChart = new ApexCharts(el, options);\n          apexChart.render();\n        }\n      }\n      /**\n       * This static method allows users to call chart methods without necessarily from the\n       * instance of the chart in case user has assigned chartID to the targetted chart.\n       * The chartID is used for mapping the instance stored in Apex._chartInstances global variable\n       *\n       * This is helpful in cases when you don't have reference of the chart instance\n       * easily and need to call the method from anywhere.\n       * For eg, in React/Vue applications when you have many parent/child components,\n       * and need easy reference to other charts for performing dynamic operations\n       *\n       * @param {string} chartID - The unique identifier which will be used to call methods\n       * on that chart instance\n       * @param {function} fn - The method name to call\n       * @param {object} opts - The parameters which are accepted in the original method will be passed here in the same order.\n       */\n\n    }, {\n      key: \"exec\",\n      value: function exec(chartID, fn) {\n        var chart = this.getChartByID(chartID);\n        if (!chart) return; // turn on the global exec flag to indicate this method was called\n\n        chart.w.globals.isExecCalled = true;\n        var ret = null;\n\n        if (chart.publicMethods.indexOf(fn) !== -1) {\n          for (var _len = arguments.length, opts = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n            opts[_key - 2] = arguments[_key];\n          }\n\n          ret = chart[fn].apply(chart, opts);\n        }\n\n        return ret;\n      }\n    }, {\n      key: \"merge\",\n      value: function merge(target, source) {\n        return Utils.extend(target, source);\n      }\n    }]);\n\n    return ApexCharts;\n  }();\n\n  return ApexCharts$1;\n\n})));\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/Gulpfile.js",
    "content": "\"use strict\";\n\nvar os           = require(\"os\");\nvar gulp         = require(\"gulp\");\nvar gutil        = require(\"gulp-util\");\nvar sass         = require(\"gulp-ruby-sass\");\nvar jshint       = require(\"gulp-jshint\");\nvar uglify       = require(\"gulp-uglifyjs\");\nvar rename       = require(\"gulp-rename\");\nvar concat       = require(\"gulp-concat\");\nvar notify       = require(\"gulp-notify\");\nvar header       = require(\"gulp-header\");\nvar minifycss    = require(\"gulp-minify-css\");\n//var jsdoc        = require(\"gulp-jsdoc\");\n//var jsdoc2md     = require(\"gulp-jsdoc-to-markdown\");\nvar pkg          = require(\"./package.json\");\nvar dateFormat   = require(\"dateformatter\").format;\nvar replace      = require(\"gulp-replace\");\n\npkg.name         = \"Editor.md\";\npkg.today        = dateFormat;\n\nvar headerComment = [\"/*\", \n\t\t\t\t\t\" * <%= pkg.name %>\",\n                    \" *\",\n\t\t\t\t\t\" * @file        <%= fileName(file) %> \",\n\t\t\t\t\t\" * @version     v<%= pkg.version %> \",\n\t\t\t\t\t\" * @description <%= pkg.description %>\",\n\t\t\t\t\t\" * @license     MIT License\",\n\t\t\t\t\t\" * @author      <%= pkg.author %>\",\n\t\t\t\t\t\" * {@link       <%= pkg.homepage %>}\",\n\t\t\t\t\t\" * @updateTime  <%= pkg.today('Y-m-d') %>\",\n\t\t\t\t\t\" */\", \n\t\t\t\t\t\"\\r\\n\"].join(\"\\r\\n\");\n\nvar headerMiniComment = \"/*! <%= pkg.name %> v<%= pkg.version %> | <%= fileName(file) %> | <%= pkg.description %> | MIT License | By: <%= pkg.author %> | <%= pkg.homepage %> | <%=pkg.today('Y-m-d') %> */\\r\\n\";\n\nvar scssTask = function(fileName, path) {\n    \n    path = path || \"scss/\";\n    \n    var distPath = \"css\";\n    \n    return sass(path + fileName + \".scss\", { style: \"expanded\", sourcemap: false, noCache : true })\n        .pipe(gulp.dest(distPath))\n        .pipe(header(headerComment, {pkg : pkg, fileName : function(file) { \n            var name = file.path.split(file.base);\n            return name[1].replace(\"\\\\\", \"\");\n        }}))\n       .pipe(gulp.dest(distPath)) \n       .pipe(rename({ suffix: \".min\" }))\n       .pipe(gulp.dest(distPath))\n       .pipe(minifycss())\n       .pipe(gulp.dest(distPath)) \n        .pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) { \n            var name = file.path.split(file.base);\n            return name[1].replace(\"\\\\\", \"\");\n        }}))\n       .pipe(gulp.dest(distPath)) \n       .pipe(notify({ message: fileName + \".scss task completed!\" }));\n};\n\ngulp.task(\"scss\", function() { \n\treturn scssTask(\"editormd\");\n}); \n\ngulp.task(\"scss2\", function() { \n\treturn scssTask(\"editormd.preview\");\n}); \n\ngulp.task(\"scss3\", function() {\n\treturn scssTask(\"editormd.logo\");\n}); \n\ngulp.task(\"js\", function() { \n  return gulp.src(\"./src/editormd.js\")\n            .pipe(jshint(\"./.jshintrc\"))\n            .pipe(jshint.reporter(\"default\"))\n            .pipe(header(headerComment, {pkg : pkg, fileName : function(file) { \n                var name = file.path.split(file.base);\n                return name[1].replace(/[\\\\\\/]?/, \"\");\n            }}))\n            .pipe(gulp.dest(\"./\"))\n            .pipe(rename({ suffix: \".min\" }))\n            .pipe(uglify())  // {outSourceMap: true, sourceRoot: './'}\n            .pipe(gulp.dest(\"./\"))\t\n            .pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {\n                var name = file.path.split(file.base + ( (os.platform() === \"win32\") ? \"\\\\\" : \"/\") );\n                return name[1].replace(/[\\\\\\/]?/, \"\");\n            }}))\n            .pipe(gulp.dest(\"./\"))\n            .pipe(notify({ message: \"editormd.js task complete\" }));\n}); \n\ngulp.task(\"amd\", function() {\n    var replaceText1 = [\n        'var cmModePath  = \"codemirror/mode/\";',\n        '            var cmAddonPath = \"codemirror/addon/\";', \n        '',\n        '            var codeMirrorModules = [',\n        '                \"jquery\", \"marked\", \"prettify\",',\n        '                \"katex\", \"raphael\", \"underscore\", \"flowchart\",  \"jqueryflowchart\",  \"sequenceDiagram\",',\n        '',\n        '                \"codemirror/lib/codemirror\",',\n        '                cmModePath + \"css/css\",',\n        '                cmModePath + \"sass/sass\",', \n        '                cmModePath + \"shell/shell\",', \n        '                cmModePath + \"sql/sql\",',\n        '                cmModePath + \"clike/clike\",',\n        '                cmModePath + \"php/php\",',\n        '                cmModePath + \"xml/xml\",',\n        '                cmModePath + \"markdown/markdown\",', \n        '                cmModePath + \"javascript/javascript\",',\n        '                cmModePath + \"htmlmixed/htmlmixed\",',\n        '                cmModePath + \"gfm/gfm\",',\n        '                cmModePath + \"http/http\",',\n        '                cmModePath + \"go/go\",', \n        '                cmModePath + \"dart/dart\",', \n        '                cmModePath + \"coffeescript/coffeescript\",',\n        '                cmModePath + \"nginx/nginx\",',\n        '                cmModePath + \"python/python\",', \n        '                cmModePath + \"perl/perl\",',\n        '                cmModePath + \"lua/lua\",', \n        '                cmModePath + \"r/r\", ',\n        '                cmModePath + \"ruby/ruby\", ',\n        '                cmModePath + \"rst/rst\",',\n        '                cmModePath + \"smartymixed/smartymixed\",', \n        '                cmModePath + \"vb/vb\",',\n        '                cmModePath + \"vbscript/vbscript\",', \n        '                cmModePath + \"velocity/velocity\",',\n        '                cmModePath + \"xquery/xquery\",',\n        '                cmModePath + \"yaml/yaml\",',\n        '                cmModePath + \"erlang/erlang\",', \n        '                cmModePath + \"jade/jade\",',\n        '',\n        '                cmAddonPath + \"edit/trailingspace\", ',\n        '                cmAddonPath + \"dialog/dialog\", ',\n        '                cmAddonPath + \"search/searchcursor\", ',\n        '                cmAddonPath + \"search/search\", ',\n        '                cmAddonPath + \"scroll/annotatescrollbar\", ', \n        '                cmAddonPath + \"search/matchesonscrollbar\", ',\n        '                cmAddonPath + \"display/placeholder\", ',\n        '                cmAddonPath + \"edit/closetag\", ',\n        '                cmAddonPath + \"fold/foldcode\",',\n        '                cmAddonPath + \"fold/foldgutter\",',\n        '                cmAddonPath + \"fold/indent-fold\",',\n        '                cmAddonPath + \"fold/brace-fold\",',\n        '                cmAddonPath + \"fold/xml-fold\", ',\n        '                cmAddonPath + \"fold/markdown-fold\",',\n        '                cmAddonPath + \"fold/comment-fold\", ',\n        '                cmAddonPath + \"mode/overlay\", ',\n        '                cmAddonPath + \"selection/active-line\", ',\n        '                cmAddonPath + \"edit/closebrackets\", ',\n        '                cmAddonPath + \"display/fullscreen\",',\n        '                cmAddonPath + \"search/match-highlighter\"',\n        '            ];',\n        '',\n        '            define(codeMirrorModules, factory);'\n    ].join(\"\\r\\n\");\n    \n    var replaceText2 = [\n        \"if (typeof define == \\\"function\\\" && define.amd) {\",\n        \"       $          = arguments[0];\",\n        \"       marked     = arguments[1];\",\n        \"       prettify   = arguments[2];\",\n        \"       katex      = arguments[3];\",\n        \"       Raphael    = arguments[4];\",\n        \"       _          = arguments[5];\",\n        \"       flowchart  = arguments[6];\",\n        \"       CodeMirror = arguments[9];\",\n        \"   }\"\n    ].join(\"\\r\\n\");\n    \n    gulp.src(\"src/editormd.js\")\n        .pipe(rename({ suffix: \".amd\" }))\n        .pipe(gulp.dest('./'))\n        .pipe(header(headerComment, {pkg : pkg, fileName : function(file) { \n            var name = file.path.split(file.base);\n            return name[1].replace(/[\\\\\\/]?/, \"\");\n        }}))\n        .pipe(gulp.dest(\"./\"))\n        .pipe(replace(\"/* Require.js define replace */\", replaceText1))\n        .pipe(gulp.dest('./'))\n        .pipe(replace(\"/* Require.js assignment replace */\", replaceText2))\n        .pipe(gulp.dest('./'))\n        .pipe(rename({ suffix: \".min\" }))\n        .pipe(uglify()) //{outSourceMap: true, sourceRoot: './'}\n        .pipe(gulp.dest(\"./\"))\n        .pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {\n            var name = file.path.split(file.base + ( (os.platform() === \"win32\") ? \"\\\\\" : \"/\") );\n            return name[1].replace(/[\\\\\\/]?/, \"\");\n        }}))\n        .pipe(gulp.dest(\"./\"))\n        .pipe(notify({ message: \"amd version task complete\"}));\n}); \n\n\nvar codeMirror = {\n    path : {\n        src : {\n            mode : \"lib/codemirror/mode\",\n            addon : \"lib/codemirror/addon\"\n        },\n        dist : \"lib/codemirror\"\n    },\n    modes : [\n        \"css\",\n        \"sass\",\n        \"shell\",\n        \"sql\",\n        \"clike\",\n        \"php\",\n        \"xml\",\n        \"markdown\",\n        \"javascript\",\n        \"htmlmixed\",\n        \"gfm\",\n        \"http\",\n        \"go\",\n        \"dart\",\n        \"coffeescript\",\n        \"nginx\",\n        \"python\",\n        \"perl\",\n        \"lua\",\n        \"r\", \n        \"ruby\", \n        \"rst\",\n        \"smartymixed\",\n        \"vb\",\n        \"vbscript\",\n        \"velocity\",\n        \"xquery\",\n        \"yaml\",\n        \"erlang\",\n        \"jade\",\n    ],\n\n    addons : [\n        \"edit/trailingspace\", \n        \"dialog/dialog\", \n        \"search/searchcursor\", \n        \"search/search\",\n        \"scroll/annotatescrollbar\", \n        \"search/matchesonscrollbar\", \n        \"display/placeholder\", \n        \"edit/closetag\", \n        \"fold/foldcode\",\n        \"fold/foldgutter\",\n        \"fold/indent-fold\",\n        \"fold/brace-fold\",\n        \"fold/xml-fold\", \n        \"fold/markdown-fold\",\n        \"fold/comment-fold\", \n        \"mode/overlay\", \n        \"selection/active-line\", \n        \"edit/closebrackets\", \n        \"display/fullscreen\", \n        \"search/match-highlighter\"\n    ]\n};\n\ngulp.task(\"cm-mode\", function() { \n    \n    var modes = [\n        codeMirror.path.src.mode + \"/meta.js\"\n    ];\n    \n    for(var i in codeMirror.modes) {\n        var mode = codeMirror.modes[i];\n        modes.push(codeMirror.path.src.mode + \"/\" + mode + \"/\" + mode + \".js\");\n    }\n    \n    return gulp.src(modes)\n                .pipe(concat(\"modes.min.js\"))\n                .pipe(gulp.dest(codeMirror.path.dist))\n                .pipe(uglify()) // {outSourceMap: true, sourceRoot: codeMirror.path.dist}\n                .pipe(gulp.dest(codeMirror.path.dist))\t\n                .pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {\n                    var name = file.path.split(file.base + \"\\\\\"); \n                    return (name[1]?name[1]:name[0]).replace(/\\\\/g, \"\");\n                }}))\n                .pipe(gulp.dest(codeMirror.path.dist))\n                .pipe(notify({ message: \"codemirror-mode task complete!\" }));\n}); \n\ngulp.task(\"cm-addon\", function() { \n    \n    var addons = [];\n    \n    for(var i in codeMirror.addons) {\n        var addon = codeMirror.addons[i];\n        addons.push(codeMirror.path.src.addon + \"/\" + addon + \".js\");\n    }\n    \n    return gulp.src(addons)\n                .pipe(concat(\"addons.min.js\"))\n                .pipe(gulp.dest(codeMirror.path.dist))\n                .pipe(uglify()) //{outSourceMap: true, sourceRoot: codeMirror.path.dist}\n                .pipe(gulp.dest(codeMirror.path.dist))\t\n                .pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {\n                    var name = file.path.split(file.base + \"\\\\\");\n                    return (name[1]?name[1]:name[0]).replace(/\\\\/g, \"\");\n                }}))\n                .pipe(gulp.dest(codeMirror.path.dist))\n                .pipe(notify({ message: \"codemirror-addon.js task complete\" }));\n}); \n/*\ngulp.task(\"jsdoc\", function(){\n    return gulp.src([\"./src/editormd.js\", \"README.md\"])\n               .pipe(jsdoc.parser())\n               .pipe(jsdoc.generator(\"./docs/html\"));\n});\n\ngulp.task(\"jsdoc2md\", function() {\n    return gulp.src(\"src/js/editormd.js\")\n            .pipe(jsdoc2md())\n            .on(\"error\", function(err){\n                gutil.log(gutil.colors.red(\"jsdoc2md failed\"), err.message);\n            })\n            .pipe(rename(function(path) {\n                path.extname = \".md\";\n            }))\n            .pipe(gulp.dest(\"docs/markdown\"));\n});\n*/\ngulp.task(\"watch\", function() {\n\tgulp.watch(\"scss/editormd.scss\", [\"scss\"]);\n\tgulp.watch(\"scss/editormd.preview.scss\", [\"scss\", \"scss2\"]);\n\tgulp.watch(\"scss/editormd.logo.scss\", [\"scss\", \"scss3\"]);\n\tgulp.watch(\"src/editormd.js\", [\"js\", \"amd\"]);\n});\n\ngulp.task(\"default\", function() {\n    gulp.run(\"scss\");\n    gulp.run(\"scss2\");\n    gulp.run(\"scss3\");\n    gulp.run(\"js\");\n    gulp.run(\"amd\");\n    gulp.run(\"cm-addon\");\n    gulp.run(\"cm-mode\");\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 pandao\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/README.md",
    "content": "# Editor.md\n\n![](https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png)\n\n![](https://img.shields.io/github/stars/pandao/editor.md.svg)\n![](https://img.shields.io/github/forks/pandao/editor.md.svg)\n![](https://img.shields.io/github/tag/pandao/editor.md.svg)\n![](https://img.shields.io/github/release/pandao/editor.md.svg)\n![](https://img.shields.io/github/issues/pandao/editor.md.svg)\n![](https://img.shields.io/bower/v/editor.md.svg)\n\n**Editor.md** : The open source embeddable online markdown editor (component), based on CodeMirror & jQuery & Marked.\n\n### Features\n\n- Support Standard Markdown / CommonMark and GFM (GitHub Flavored Markdown);\n- Full-featured: Real-time Preview, Image (cross-domain) upload, Preformatted text/Code blocks/Tables insert, Code fold, Search replace, Read only, Themes, Multi-languages, L18n, HTML entities, Code syntax highlighting...;\n- Markdown Extras : Support [ToC (Table of Contents)](https://pandao.github.io/editor.md/examples/toc.html), [Emoji](https://pandao.github.io/editor.md/examples/emoji.html), [Task lists](https://pandao.github.io/editor.md/examples/task-lists.html), [@Links](https://pandao.github.io/editor.md/examples/@links.html)...;\n- Compatible with all major browsers (IE8+), compatible Zepto.js and iPad;\n- Support [decode & fliter of the HTML tags & attributes](https://pandao.github.io/editor.md/examples/html-tags-decode.html);\n- Support [TeX (LaTeX expressions, Based on KaTeX)](https://pandao.github.io/editor.md/examples/katex.html), [Flowchart](https://pandao.github.io/editor.md/examples/flowchart.html) and [Sequence Diagram](https://pandao.github.io/editor.md/examples/sequence-diagram.html) of Markdown extended syntax;\n- Support AMD/CMD (Require.js & Sea.js) Module Loader, and Custom/define editor plugins;\n\n[README & Examples (English)](https://pandao.github.io/editor.md/en.html)\n  \n\n--------\n\n**Editor.md** 是一款开源的、可嵌入的 Markdown 在线编辑器（组件），基于 CodeMirror、jQuery 和 Marked 构建。\n\n![editormd-screenshot](https://pandao.github.io/editor.md/examples/images/editormd-screenshot.png \"editormd-screenshot\")\n\n#### 主要特性\n\n- 支持通用 Markdown / CommonMark 和 GFM (GitHub Flavored Markdown) 风格的语法，也可[变身为代码编辑器](https://pandao.github.io/editor.md/examples/change-mode.html)；\n- 支持实时预览、图片（跨域）上传、预格式文本/代码/表格插入、代码折叠、跳转到行、搜索替换、只读模式、自定义样式主题和多语言语法高亮等功能；\n- 支持 [ToC（Table of Contents）](https://pandao.github.io/editor.md/examples/toc.html)、[Emoji表情](https://pandao.github.io/editor.md/examples/emoji.html)、[Task lists](https://pandao.github.io/editor.md/examples/task-lists.html)、[@链接](https://pandao.github.io/editor.md/examples/@links.html)等 Markdown 扩展语法；\n- 支持 TeX 科学公式（基于 [KaTeX](https://pandao.github.io/editor.md/examples/katex.html)）、流程图 [Flowchart](https://pandao.github.io/editor.md/examples/flowchart.html) 和 [时序图 Sequence Diagram](https://pandao.github.io/editor.md/examples/sequence-diagram.html);\n- 支持[识别和解析 HTML 标签，并且支持自定义过滤标签及属性解析](https://pandao.github.io/editor.md/examples/html-tags-decode.html)，具有可靠的安全性和几乎无限的扩展性；\n- 支持 AMD / CMD 模块化加载（支持 [Require.js](https://pandao.github.io/editor.md/examples/use-requirejs.html) & [Sea.js](https://pandao.github.io/editor.md/examples/use-seajs.html)），并且支持[自定义扩展插件](https://pandao.github.io/editor.md/examples/define-plugin.html)；\n- 兼容主流的浏览器（IE8+）和 [Zepto.js](https://pandao.github.io/editor.md/examples/use-zepto.html)，且支持 iPad 等平板设备；\n\n#### Examples\n\n[https://pandao.github.io/editor.md/examples/index.html](https://pandao.github.io/editor.md/examples/index.html)\n\n#### Download & install\n\n[Github download](https://github.com/pandao/editor.md/archive/master.zip)\n\nBower install :\n\n```shell\nbower install editor.md\n```\n\n#### Usages\n\nHTML：\n\n```html\n<link rel=\"stylesheet\" href=\"editormd.min.css\" />\n<div id=\"editormd\">\n    <textarea style=\"display:none;\">### Hello Editor.md !</textarea>\n</div>\n```\n\n> Tip: Editor.md can auto append `<textarea>` tag;\n\njavascript:\n\n```html\n<script src=\"jquery.min.js\"></script>\n<script src=\"editormd.min.js\"></script>\n<script type=\"text/javascript\">\n    $(function() {\n        var editor = editormd(\"editormd\", {\n            path : \"../lib/\" // Autoload modules mode, codemirror, marked... dependents libs path\n        });\n\n        /*\n        // or\n        var editor = editormd({\n            id   : \"editormd\",\n            path : \"../lib/\"\n        });\n        */\n    });\n</script>\n```\n\nUsing modular script loader :\n\n- [Using Require.js](https://github.com/pandao/editor.md/tree/master/examples/use-requirejs.html)\n- [Using Sea.js](https://github.com/pandao/editor.md/tree/master/examples/use-seajs.html)\n\n#### Dependents\n\n- [CodeMirror](http://codemirror.net/ \"CodeMirror\")\n- [marked](https://github.com/chjj/marked \"marked\")\n- [jQuery](http://jquery.com/ \"jQuery\")\n- [FontAwesome](http://fontawesome.io/ \"FontAwesome\")\n- [github-markdown.css](https://github.com/sindresorhus/github-markdown-css \"github-markdown.css\")\n- [KaTeX](http://khan.github.io/KaTeX/ \"KaTeX\")\n- [prettify.js](http://code.google.com/p/google-code-prettify/ \"prettify.js\")\n- [Rephael.js](http://raphaeljs.com/ \"Rephael.js\")\n- [flowchart.js](http://adrai.github.io/flowchart.js/ \"flowchart.js\")\n- [sequence-diagram.js](http://bramp.github.io/js-sequence-diagrams/ \"sequence-diagram.js\")\n- [Prefixes.scss](https://github.com/pandao/prefixes.scss \"Prefixes.scss\")\n\n#### Changes\n\n[Change logs](https://github.com/pandao/editor.md/blob/master/CHANGE.md)\n\n#### License\n\nThe MIT License.\n\nCopyright (c) 2015 Pandao\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/css/editormd.css",
    "content": "/*\n * Editor.md\n *\n * @file        editormd.css \n * @version     v1.5.0 \n * @description Open source online markdown editor.\n * @license     MIT License\n * @author      Pandao\n * {@link       https://github.com/pandao/editor.md}\n * @updateTime  2015-06-09\n */\n\n@charset \"UTF-8\";\n/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */\n.editormd {\n  width: 90%;\n  height: 640px;\n  margin: 0 auto;\n  text-align: left;\n  overflow: hidden;\n  position: relative;\n  margin-bottom: 15px;\n  border: 1px solid #ddd;\n  font-family: \"Meiryo UI\", \"Microsoft YaHei\", \"Malgun Gothic\", \"Segoe UI\", \"Trebuchet MS\", Helvetica, \"Monaco\", monospace, Tahoma, STXihei, \"华文细黑\", STHeiti, \"Helvetica Neue\", \"Droid Sans\", \"wenquanyi micro hei\", FreeSans, Arimo, Arial, SimSun, \"宋体\", Heiti, \"黑体\", sans-serif;\n}\n.editormd *, .editormd *:before, .editormd *:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n.editormd a {\n  text-decoration: none;\n}\n.editormd img {\n  border: none;\n  vertical-align: middle;\n}\n.editormd > textarea,\n.editormd .editormd-html-textarea,\n.editormd .editormd-markdown-textarea {\n  width: 0;\n  height: 0;\n  outline: 0;\n  resize: none;\n}\n.editormd .editormd-html-textarea,\n.editormd .editormd-markdown-textarea {\n  display: none;\n}\n.editormd input[type=\"text\"],\n.editormd input[type=\"button\"],\n.editormd input[type=\"submit\"],\n.editormd select, .editormd textarea, .editormd button {\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  -ms-appearance: none;\n  appearance: none;\n}\n.editormd ::-webkit-scrollbar {\n  height: 10px;\n  width: 7px;\n  background: rgba(0, 0, 0, 0.1);\n}\n.editormd ::-webkit-scrollbar:hover {\n  background: rgba(0, 0, 0, 0.2);\n}\n.editormd ::-webkit-scrollbar-thumb {\n  background: rgba(0, 0, 0, 0.3);\n  -webkit-border-radius: 6px;\n  -moz-border-radius: 6px;\n  -ms-border-radius: 6px;\n  -o-border-radius: 6px;\n  border-radius: 6px;\n}\n.editormd ::-webkit-scrollbar-thumb:hover {\n  -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);\n  /* Webkit browsers */\n  -moz-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);\n  /* Firefox */\n  -ms-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);\n  /* IE9 */\n  -o-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);\n  /* Opera(Old) */\n  box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.25);\n  /* IE9+, News */\n  background-color: rgba(0, 0, 0, 0.4);\n}\n\n.editormd-user-unselect {\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  -o-user-select: none;\n  user-select: none;\n}\n\n.editormd-toolbar {\n  width: 100%;\n  min-height: 37px;\n  background: #fff;\n  display: none;\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 10;\n  border-bottom: 1px solid #ddd;\n}\n\n.editormd-toolbar-container {\n  padding: 0 8px;\n  min-height: 35px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  -o-user-select: none;\n  user-select: none;\n}\n\n.editormd-menu {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.editormd-menu > li {\n  margin: 0;\n  padding: 5px 1px;\n  display: inline-block;\n  position: relative;\n}\n.editormd-menu > li.divider {\n  display: inline-block;\n  text-indent: -9999px;\n  margin: 0 5px;\n  height: 65%;\n  border-right: 1px solid #ddd;\n}\n.editormd-menu > li > a {\n  outline: 0;\n  color: #666;\n  display: inline-block;\n  min-width: 24px;\n  font-size: 16px;\n  text-decoration: none;\n  text-align: center;\n  -webkit-border-radius: 2px;\n  -moz-border-radius: 2px;\n  -ms-border-radius: 2px;\n  -o-border-radius: 2px;\n  border-radius: 2px;\n  border: 1px solid #fff;\n  -webkit-transition: all 300ms ease-out;\n  /* Safari, Chrome */\n  -moz-transition: all 300ms ease-out;\n  /* Firefox 4.0~16.0 */\n  transition: all 300ms ease-out;\n  /* IE >9, FF >15, Opera >12.0 */\n}\n.editormd-menu > li > a:hover, .editormd-menu > li > a.active {\n  border: 1px solid #ddd;\n  background: #eee;\n}\n.editormd-menu > li > a > .fa {\n  text-align: center;\n  display: block;\n  padding: 5px;\n}\n.editormd-menu > li > a > .editormd-bold {\n  padding: 5px 2px;\n  display: inline-block;\n  font-weight: bold;\n}\n.editormd-menu > li:hover .editormd-dropdown-menu {\n  display: block;\n}\n.editormd-menu > li + li > a {\n  margin-left: 3px;\n}\n\n.editormd-dropdown-menu {\n  display: none;\n  background: #fff;\n  border: 1px solid #ddd;\n  width: 148px;\n  list-style: none;\n  position: absolute;\n  top: 33px;\n  left: 0;\n  z-index: 100;\n  -webkit-box-shadow: 1px 2px 6px rgba(0, 0, 0, 0.15);\n  /* Webkit browsers */\n  -moz-box-shadow: 1px 2px 6px rgba(0, 0, 0, 0.15);\n  /* Firefox */\n  -ms-box-shadow: 1px 2px 6px rgba(0, 0, 0, 0.15);\n  /* IE9 */\n  -o-box-shadow: 1px 2px 6px rgba(0, 0, 0, 0.15);\n  /* Opera(Old) */\n  box-shadow: 1px 2px 6px rgba(0, 0, 0, 0.15);\n  /* IE9+, News */\n}\n.editormd-dropdown-menu:before, .editormd-dropdown-menu:after {\n  width: 0;\n  height: 0;\n  display: block;\n  content: \"\";\n  position: absolute;\n  top: -11px;\n  left: 8px;\n  border: 5px solid transparent;\n}\n.editormd-dropdown-menu:before {\n  border-bottom-color: #ccc;\n}\n.editormd-dropdown-menu:after {\n  border-bottom-color: #ffffff;\n  top: -10px;\n}\n.editormd-dropdown-menu > li > a {\n  color: #666;\n  display: block;\n  text-decoration: none;\n  padding: 8px 10px;\n}\n.editormd-dropdown-menu > li > a:hover {\n  background: #f6f6f6;\n  -webkit-transition: all 300ms ease-out;\n  /* Safari, Chrome */\n  -moz-transition: all 300ms ease-out;\n  /* Firefox 4.0~16.0 */\n  transition: all 300ms ease-out;\n  /* IE >9, FF >15, Opera >12.0 */\n}\n.editormd-dropdown-menu > li + li {\n  border-top: 1px solid #ddd;\n}\n\n.editormd-container {\n  margin: 0;\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  padding: 35px 0 0;\n  position: relative;\n  background: #fff;\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n\n.editormd-dialog {\n  color: #666;\n  position: fixed;\n  z-index: 99999;\n  display: none;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  -ms-border-radius: 3px;\n  -o-border-radius: 3px;\n  border-radius: 3px;\n  -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);\n  /* Webkit browsers */\n  -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);\n  /* Firefox */\n  -ms-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);\n  /* IE9 */\n  -o-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);\n  /* Opera(Old) */\n  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);\n  /* IE9+, News */\n  background: #fff;\n  font-size: 14px;\n}\n\n.editormd-dialog-container {\n  position: relative;\n  padding: 20px;\n  line-height: 1.4;\n}\n.editormd-dialog-container h1 {\n  font-size: 24px;\n  margin-bottom: 10px;\n}\n.editormd-dialog-container h1 .fa {\n  color: #2C7EEA;\n  padding-right: 5px;\n}\n.editormd-dialog-container h1 small {\n  padding-left: 5px;\n  font-weight: normal;\n  font-size: 12px;\n  color: #999;\n}\n.editormd-dialog-container select {\n  color: #999;\n  padding: 3px 8px;\n  border: 1px solid #ddd;\n}\n\n.editormd-dialog-close {\n  position: absolute;\n  top: 12px;\n  right: 15px;\n  font-size: 18px;\n  color: #ccc;\n  -webkit-transition: color 300ms ease-out;\n  /* Safari, Chrome */\n  -moz-transition: color 300ms ease-out;\n  /* Firefox 4.0~16.0 */\n  transition: color 300ms ease-out;\n  /* IE >9, FF >15, Opera >12.0 */\n}\n.editormd-dialog-close:hover {\n  color: #999;\n}\n\n.editormd-dialog-header {\n  padding: 11px 20px;\n  border-bottom: 1px solid #eee;\n  -webkit-transition: background 300ms ease-out;\n  /* Safari, Chrome */\n  -moz-transition: background 300ms ease-out;\n  /* Firefox 4.0~16.0 */\n  transition: background 300ms ease-out;\n  /* IE >9, FF >15, Opera >12.0 */\n}\n.editormd-dialog-header:hover {\n  background: #f6f6f6;\n}\n\n.editormd-dialog-title {\n  font-size: 14px;\n}\n\n.editormd-dialog-footer {\n  padding: 10px 0 0 0;\n  text-align: right;\n}\n\n.editormd-dialog-info {\n  width: 420px;\n}\n.editormd-dialog-info h1 {\n  font-weight: normal;\n}\n.editormd-dialog-info .editormd-dialog-container {\n  padding: 20px 25px 25px;\n}\n.editormd-dialog-info .editormd-dialog-close {\n  top: 10px;\n  right: 10px;\n}\n.editormd-dialog-info p > a, .editormd-dialog-info .hover-link:hover {\n  color: #2196F3;\n}\n.editormd-dialog-info .hover-link {\n  color: #666;\n}\n.editormd-dialog-info a .fa-external-link {\n  display: none;\n}\n.editormd-dialog-info a:hover {\n  color: #2196F3;\n}\n.editormd-dialog-info a:hover .fa-external-link {\n  display: inline-block;\n}\n\n.editormd-mask,\n.editormd-container-mask,\n.editormd-dialog-mask {\n  display: none;\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\n.editormd-mask,\n.editormd-dialog-mask-bg {\n  background: #fff;\n  opacity: 0.5;\n  filter: alpha(opacity=50);\n}\n\n.editormd-mask {\n  position: fixed;\n  background: #000;\n  opacity: 0.2;\n  /* W3C */\n  filter: alpha(opacity=20);\n  /* IE */\n  z-index: 99998;\n}\n\n.editormd-container-mask,\n.editormd-dialog-mask-con {\n  background: url(../images/loading.gif) no-repeat center center;\n  -webkit-background-size: 32px 32px;\n  /* Chrome, iOS, Safari */\n  -moz-background-size: 32px 32px;\n  /* Firefox 3.6~4.0 */\n  -o-background-size: 32px 32px;\n  /* Opera 9.5 */\n  background-size: 32px 32px;\n  /* IE9+, New */\n}\n\n.editormd-container-mask {\n  z-index: 20;\n  display: block;\n  background-color: #fff;\n}\n\n@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) {\n  .editormd-container-mask,\n  .editormd-dialog-mask-con {\n    background-image: url(../images/loading@2x.gif);\n  }\n}\n@media only screen and (-webkit-min-device-pixel-ratio: 3), only screen and (min-device-pixel-ratio: 3) {\n  .editormd-container-mask,\n  .editormd-dialog-mask-con {\n    background-image: url(../images/loading@3x.gif);\n  }\n}\n.editormd-code-block-dialog textarea,\n.editormd-preformatted-text-dialog textarea {\n  width: 100%;\n  height: 400px;\n  margin-bottom: 6px;\n  overflow: auto;\n  border: 1px solid #eee;\n  background: #fff;\n  padding: 15px;\n  resize: none;\n}\n\n.editormd-code-toolbar {\n  color: #999;\n  font-size: 14px;\n  margin: -5px 0 10px;\n}\n\n.editormd-grid-table {\n  width: 99%;\n  display: table;\n  border: 1px solid #ddd;\n  border-collapse: collapse;\n}\n\n.editormd-grid-table-row {\n  width: 100%;\n  display: table-row;\n}\n.editormd-grid-table-row a {\n  font-size: 1.4em;\n  width: 5%;\n  height: 36px;\n  color: #999;\n  text-align: center;\n  display: table-cell;\n  vertical-align: middle;\n  border: 1px solid #ddd;\n  text-decoration: none;\n  -webkit-transition: background-color 300ms ease-out, color 100ms ease-in;\n  /* Safari, Chrome */\n  -moz-transition: background-color 300ms ease-out, color 100ms ease-in;\n  /* Firefox 4.0~16.0 */\n  transition: background-color 300ms ease-out, color 100ms ease-in;\n  /* IE >9, FF >15, Opera >12.0 */\n}\n.editormd-grid-table-row a.selected {\n  color: #666;\n  background-color: #eee;\n}\n.editormd-grid-table-row a:hover {\n  color: #777;\n  background-color: #f6f6f6;\n}\n\n.editormd-tab-head {\n  list-style: none;\n  border-bottom: 1px solid #ddd;\n}\n.editormd-tab-head li {\n  display: inline-block;\n}\n.editormd-tab-head li a {\n  color: #999;\n  display: block;\n  padding: 6px 12px 5px;\n  text-align: center;\n  text-decoration: none;\n  margin-bottom: -1px;\n  border: 1px solid #ddd;\n  -webkit-border-top-left-radius: 3px;\n  -moz-border-top-left-radius: 3px;\n  -ms-border-top-left-radius: 3px;\n  -o-border-top-left-radius: 3px;\n  border-top-left-radius: 3px;\n  -webkit-border-top-right-radius: 3px;\n  -moz-border-top-right-radius: 3px;\n  -ms-border-top-right-radius: 3px;\n  -o-border-top-right-radius: 3px;\n  border-top-right-radius: 3px;\n  background: #f6f6f6;\n  -webkit-transition: all 300ms ease-out;\n  /* Safari, Chrome */\n  -moz-transition: all 300ms ease-out;\n  /* Firefox 4.0~16.0 */\n  transition: all 300ms ease-out;\n  /* IE >9, FF >15, Opera >12.0 */\n}\n.editormd-tab-head li a:hover {\n  color: #666;\n  background: #eee;\n}\n.editormd-tab-head li.active a {\n  color: #666;\n  background: #fff;\n  border-bottom-color: #fff;\n}\n.editormd-tab-head li + li {\n  margin-left: 3px;\n}\n\n.editormd-tab-box {\n  padding: 20px 0;\n}\n\n.editormd-form {\n  color: #666;\n}\n.editormd-form label {\n  float: left;\n  display: block;\n  width: 75px;\n  text-align: left;\n  padding: 7px 0 15px 5px;\n  margin: 0 0 2px;\n  font-weight: normal;\n}\n.editormd-form br {\n  clear: both;\n}\n.editormd-form iframe {\n  display: none;\n}\n.editormd-form input:focus {\n  outline: 0;\n}\n.editormd-form input[type=\"text\"], .editormd-form input[type=\"number\"] {\n  color: #999;\n  padding: 8px;\n  border: 1px solid #ddd;\n}\n.editormd-form input[type=\"number\"] {\n  width: 40px;\n  display: inline-block;\n  padding: 6px 8px;\n}\n.editormd-form input[type=\"text\"] {\n  display: inline-block;\n  width: 264px;\n}\n.editormd-form .fa-btns {\n  display: inline-block;\n}\n.editormd-form .fa-btns a {\n  color: #999;\n  padding: 7px 10px 0 0;\n  display: inline-block;\n  text-decoration: none;\n  text-align: center;\n}\n.editormd-form .fa-btns .fa {\n  font-size: 1.3em;\n}\n.editormd-form .fa-btns label {\n  float: none;\n  display: inline-block;\n  width: auto;\n  text-align: left;\n  padding: 0 0 0 5px;\n  cursor: pointer;\n}\n\n.editormd-form input[type=\"submit\"], .editormd-form .editormd-btn, .editormd-form button,\n.editormd-dialog-container input[type=\"submit\"],\n.editormd-dialog-container .editormd-btn,\n.editormd-dialog-container button,\n.editormd-dialog-footer input[type=\"submit\"],\n.editormd-dialog-footer .editormd-btn,\n.editormd-dialog-footer button {\n  color: #666;\n  min-width: 75px;\n  cursor: pointer;\n  background: #fff;\n  padding: 7px 10px;\n  border: 1px solid #ddd;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  -ms-border-radius: 3px;\n  -o-border-radius: 3px;\n  border-radius: 3px;\n  -webkit-transition: background 300ms ease-out;\n  /* Safari, Chrome */\n  -moz-transition: background 300ms ease-out;\n  /* Firefox 4.0~16.0 */\n  transition: background 300ms ease-out;\n  /* IE >9, FF >15, Opera >12.0 */\n}\n.editormd-form input[type=\"submit\"]:hover, .editormd-form .editormd-btn:hover, .editormd-form button:hover,\n.editormd-dialog-container input[type=\"submit\"]:hover,\n.editormd-dialog-container .editormd-btn:hover,\n.editormd-dialog-container button:hover,\n.editormd-dialog-footer input[type=\"submit\"]:hover,\n.editormd-dialog-footer .editormd-btn:hover,\n.editormd-dialog-footer button:hover {\n  background: #eee;\n}\n.editormd-form .editormd-btn,\n.editormd-dialog-container .editormd-btn,\n.editormd-dialog-footer .editormd-btn {\n  padding: 5px 8px 4px\\0;\n}\n.editormd-form .editormd-btn + .editormd-btn,\n.editormd-dialog-container .editormd-btn + .editormd-btn,\n.editormd-dialog-footer .editormd-btn + .editormd-btn {\n  margin-left: 8px;\n}\n\n.editormd-file-input {\n  width: 75px;\n  height: 32px;\n  margin-left: 8px;\n  position: relative;\n  display: inline-block;\n}\n.editormd-file-input input[type=\"file\"] {\n  width: 75px;\n  height: 32px;\n  opacity: 0;\n  cursor: pointer;\n  background: #000;\n  display: inline-block;\n  position: absolute;\n  top: 0;\n  right: 0;\n}\n.editormd-file-input input[type=\"file\"]::-webkit-file-upload-button {\n  visibility: hidden;\n}\n.editormd-file-input:hover input[type=\"submit\"] {\n  background: #eee;\n}\n\n.editormd .CodeMirror, .editormd-preview {\n  display: inline-block;\n  width: 50%;\n  height: 100%;\n  vertical-align: top;\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  margin: 0;\n}\n\n.editormd-preview {\n  position: absolute;\n  top: 35px;\n  right: 0;\n  right: -1px\\0;\n  overflow: auto;\n  line-height: 1.6;\n  display: none;\n  background: #fff;\n}\n\n.editormd .CodeMirror {\n  z-index: 10;\n  float: left;\n  border-right: 1px solid #ddd;\n  font-size: 14px;\n  font-family: \"YaHei Consolas Hybrid\", Consolas, \"微软雅黑\", \"Meiryo UI\", \"Malgun Gothic\", \"Segoe UI\", \"Trebuchet MS\", Helvetica, \"Monaco\", courier, monospace;\n  line-height: 1.6;\n  margin-top: 35px;\n}\n.editormd .CodeMirror pre {\n  font-size: 14px;\n  padding: 0 12px;\n}\n.editormd .CodeMirror-linenumbers {\n  padding: 0 5px;\n}\n.editormd .CodeMirror-selected {\n  background: #70B7FF;\n}\n.editormd .CodeMirror-focused .CodeMirror-selected {\n  background: #70B7FF;\n}\n.editormd .CodeMirror, .editormd .CodeMirror-scroll, .editormd .editormd-preview {\n  -webkit-overflow-scrolling: touch;\n}\n.editormd .styled-background {\n  background-color: #ff7;\n}\n.editormd .CodeMirror-focused .cm-matchhighlight {\n  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAFklEQVQI12NgYGBgkKzc8x9CMDAwAAAmhwSbidEoSQAAAABJRU5ErkJggg==);\n  background-position: bottom;\n  background-repeat: repeat-x;\n}\n.editormd .CodeMirror-empty.CodeMirror-focused {\n  outline: none;\n}\n.editormd .CodeMirror pre.CodeMirror-placeholder {\n  color: #999;\n}\n.editormd .cm-trailingspace {\n  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAACCAYAAAB/qH1jAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QUXCToH00Y1UgAAACFJREFUCNdjPMDBUc/AwNDAAAFMTAwMDA0OP34wQgX/AQBYgwYEx4f9lQAAAABJRU5ErkJggg==);\n  background-position: bottom left;\n  background-repeat: repeat-x;\n}\n.editormd .cm-tab {\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);\n  background-position: right;\n  background-repeat: no-repeat;\n}\n\n/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */\n/*!\n *  Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome\n *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */\n/* FONT PATH\n * -------------------------- */\n@font-face {\n  font-family: 'FontAwesome';\n  src: url(\"../fonts/fontawesome-webfont.eot?v=4.3.0\");\n  src: url(\"../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0\") format(\"embedded-opentype\"), url(\"../fonts/fontawesome-webfont.woff2?v=4.3.0\") format(\"woff2\"), url(\"../fonts/fontawesome-webfont.woff?v=4.3.0\") format(\"woff\"), url(\"../fonts/fontawesome-webfont.ttf?v=4.3.0\") format(\"truetype\"), url(\"../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n.fa {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  transform: translate(0, 0);\n}\n\n/* makes the font 33% larger relative to the icon container */\n.fa-lg {\n  font-size: 1.33333333em;\n  line-height: 0.75em;\n  vertical-align: -15%;\n}\n\n.fa-2x {\n  font-size: 2em;\n}\n\n.fa-3x {\n  font-size: 3em;\n}\n\n.fa-4x {\n  font-size: 4em;\n}\n\n.fa-5x {\n  font-size: 5em;\n}\n\n.fa-fw {\n  width: 1.28571429em;\n  text-align: center;\n}\n\n.fa-ul {\n  padding-left: 0;\n  margin-left: 2.14285714em;\n  list-style-type: none;\n}\n\n.fa-ul > li {\n  position: relative;\n}\n\n.fa-li {\n  position: absolute;\n  left: -2.14285714em;\n  width: 2.14285714em;\n  top: 0.14285714em;\n  text-align: center;\n}\n\n.fa-li.fa-lg {\n  left: -1.85714286em;\n}\n\n.fa-border {\n  padding: .2em .25em .15em;\n  border: solid 0.08em #eeeeee;\n  border-radius: .1em;\n}\n\n.pull-right {\n  float: right;\n}\n\n.pull-left {\n  float: left;\n}\n\n.fa.pull-left {\n  margin-right: .3em;\n}\n\n.fa.pull-right {\n  margin-left: .3em;\n}\n\n.fa-spin {\n  -webkit-animation: fa-spin 2s infinite linear;\n  animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n  -webkit-animation: fa-spin 1s infinite steps(8);\n  animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n    transform: rotate(359deg);\n  }\n}\n@keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n    transform: rotate(359deg);\n  }\n}\n.fa-rotate-90 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n  -webkit-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\n  -webkit-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\n  -webkit-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);\n  -webkit-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);\n  -webkit-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n  filter: none;\n}\n\n.fa-stack {\n  position: relative;\n  display: inline-block;\n  width: 2em;\n  height: 2em;\n  line-height: 2em;\n  vertical-align: middle;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n  position: absolute;\n  left: 0;\n  width: 100%;\n  text-align: center;\n}\n\n.fa-stack-1x {\n  line-height: inherit;\n}\n\n.fa-stack-2x {\n  font-size: 2em;\n}\n\n.fa-inverse {\n  color: #ffffff;\n}\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n.fa-glass:before {\n  content: \"\\f000\";\n}\n\n.fa-music:before {\n  content: \"\\f001\";\n}\n\n.fa-search:before {\n  content: \"\\f002\";\n}\n\n.fa-envelope-o:before {\n  content: \"\\f003\";\n}\n\n.fa-heart:before {\n  content: \"\\f004\";\n}\n\n.fa-star:before {\n  content: \"\\f005\";\n}\n\n.fa-star-o:before {\n  content: \"\\f006\";\n}\n\n.fa-user:before {\n  content: \"\\f007\";\n}\n\n.fa-film:before {\n  content: \"\\f008\";\n}\n\n.fa-th-large:before {\n  content: \"\\f009\";\n}\n\n.fa-th:before {\n  content: \"\\f00a\";\n}\n\n.fa-th-list:before {\n  content: \"\\f00b\";\n}\n\n.fa-check:before {\n  content: \"\\f00c\";\n}\n\n.fa-remove:before,\n.fa-close:before,\n.fa-times:before {\n  content: \"\\f00d\";\n}\n\n.fa-search-plus:before {\n  content: \"\\f00e\";\n}\n\n.fa-search-minus:before {\n  content: \"\\f010\";\n}\n\n.fa-power-off:before {\n  content: \"\\f011\";\n}\n\n.fa-signal:before {\n  content: \"\\f012\";\n}\n\n.fa-gear:before,\n.fa-cog:before {\n  content: \"\\f013\";\n}\n\n.fa-trash-o:before {\n  content: \"\\f014\";\n}\n\n.fa-home:before {\n  content: \"\\f015\";\n}\n\n.fa-file-o:before {\n  content: \"\\f016\";\n}\n\n.fa-clock-o:before {\n  content: \"\\f017\";\n}\n\n.fa-road:before {\n  content: \"\\f018\";\n}\n\n.fa-download:before {\n  content: \"\\f019\";\n}\n\n.fa-arrow-circle-o-down:before {\n  content: \"\\f01a\";\n}\n\n.fa-arrow-circle-o-up:before {\n  content: \"\\f01b\";\n}\n\n.fa-inbox:before {\n  content: \"\\f01c\";\n}\n\n.fa-play-circle-o:before {\n  content: \"\\f01d\";\n}\n\n.fa-rotate-right:before,\n.fa-repeat:before {\n  content: \"\\f01e\";\n}\n\n.fa-refresh:before {\n  content: \"\\f021\";\n}\n\n.fa-list-alt:before {\n  content: \"\\f022\";\n}\n\n.fa-lock:before {\n  content: \"\\f023\";\n}\n\n.fa-flag:before {\n  content: \"\\f024\";\n}\n\n.fa-headphones:before {\n  content: \"\\f025\";\n}\n\n.fa-volume-off:before {\n  content: \"\\f026\";\n}\n\n.fa-volume-down:before {\n  content: \"\\f027\";\n}\n\n.fa-volume-up:before {\n  content: \"\\f028\";\n}\n\n.fa-qrcode:before {\n  content: \"\\f029\";\n}\n\n.fa-barcode:before {\n  content: \"\\f02a\";\n}\n\n.fa-tag:before {\n  content: \"\\f02b\";\n}\n\n.fa-tags:before {\n  content: \"\\f02c\";\n}\n\n.fa-book:before {\n  content: \"\\f02d\";\n}\n\n.fa-bookmark:before {\n  content: \"\\f02e\";\n}\n\n.fa-print:before {\n  content: \"\\f02f\";\n}\n\n.fa-camera:before {\n  content: \"\\f030\";\n}\n\n.fa-font:before {\n  content: \"\\f031\";\n}\n\n.fa-bold:before {\n  content: \"\\f032\";\n}\n\n.fa-italic:before {\n  content: \"\\f033\";\n}\n\n.fa-text-height:before {\n  content: \"\\f034\";\n}\n\n.fa-text-width:before {\n  content: \"\\f035\";\n}\n\n.fa-align-left:before {\n  content: \"\\f036\";\n}\n\n.fa-align-center:before {\n  content: \"\\f037\";\n}\n\n.fa-align-right:before {\n  content: \"\\f038\";\n}\n\n.fa-align-justify:before {\n  content: \"\\f039\";\n}\n\n.fa-list:before {\n  content: \"\\f03a\";\n}\n\n.fa-dedent:before,\n.fa-outdent:before {\n  content: \"\\f03b\";\n}\n\n.fa-indent:before {\n  content: \"\\f03c\";\n}\n\n.fa-video-camera:before {\n  content: \"\\f03d\";\n}\n\n.fa-photo:before,\n.fa-image:before,\n.fa-picture-o:before {\n  content: \"\\f03e\";\n}\n\n.fa-pencil:before {\n  content: \"\\f040\";\n}\n\n.fa-map-marker:before {\n  content: \"\\f041\";\n}\n\n.fa-adjust:before {\n  content: \"\\f042\";\n}\n\n.fa-tint:before {\n  content: \"\\f043\";\n}\n\n.fa-edit:before,\n.fa-pencil-square-o:before {\n  content: \"\\f044\";\n}\n\n.fa-share-square-o:before {\n  content: \"\\f045\";\n}\n\n.fa-check-square-o:before {\n  content: \"\\f046\";\n}\n\n.fa-arrows:before {\n  content: \"\\f047\";\n}\n\n.fa-step-backward:before {\n  content: \"\\f048\";\n}\n\n.fa-fast-backward:before {\n  content: \"\\f049\";\n}\n\n.fa-backward:before {\n  content: \"\\f04a\";\n}\n\n.fa-play:before {\n  content: \"\\f04b\";\n}\n\n.fa-pause:before {\n  content: \"\\f04c\";\n}\n\n.fa-stop:before {\n  content: \"\\f04d\";\n}\n\n.fa-forward:before {\n  content: \"\\f04e\";\n}\n\n.fa-fast-forward:before {\n  content: \"\\f050\";\n}\n\n.fa-step-forward:before {\n  content: \"\\f051\";\n}\n\n.fa-eject:before {\n  content: \"\\f052\";\n}\n\n.fa-chevron-left:before {\n  content: \"\\f053\";\n}\n\n.fa-chevron-right:before {\n  content: \"\\f054\";\n}\n\n.fa-plus-circle:before {\n  content: \"\\f055\";\n}\n\n.fa-minus-circle:before {\n  content: \"\\f056\";\n}\n\n.fa-times-circle:before {\n  content: \"\\f057\";\n}\n\n.fa-check-circle:before {\n  content: \"\\f058\";\n}\n\n.fa-question-circle:before {\n  content: \"\\f059\";\n}\n\n.fa-info-circle:before {\n  content: \"\\f05a\";\n}\n\n.fa-crosshairs:before {\n  content: \"\\f05b\";\n}\n\n.fa-times-circle-o:before {\n  content: \"\\f05c\";\n}\n\n.fa-check-circle-o:before {\n  content: \"\\f05d\";\n}\n\n.fa-ban:before {\n  content: \"\\f05e\";\n}\n\n.fa-arrow-left:before {\n  content: \"\\f060\";\n}\n\n.fa-arrow-right:before {\n  content: \"\\f061\";\n}\n\n.fa-arrow-up:before {\n  content: \"\\f062\";\n}\n\n.fa-arrow-down:before {\n  content: \"\\f063\";\n}\n\n.fa-mail-forward:before,\n.fa-share:before {\n  content: \"\\f064\";\n}\n\n.fa-expand:before {\n  content: \"\\f065\";\n}\n\n.fa-compress:before {\n  content: \"\\f066\";\n}\n\n.fa-plus:before {\n  content: \"\\f067\";\n}\n\n.fa-minus:before {\n  content: \"\\f068\";\n}\n\n.fa-asterisk:before {\n  content: \"\\f069\";\n}\n\n.fa-exclamation-circle:before {\n  content: \"\\f06a\";\n}\n\n.fa-gift:before {\n  content: \"\\f06b\";\n}\n\n.fa-leaf:before {\n  content: \"\\f06c\";\n}\n\n.fa-fire:before {\n  content: \"\\f06d\";\n}\n\n.fa-eye:before {\n  content: \"\\f06e\";\n}\n\n.fa-eye-slash:before {\n  content: \"\\f070\";\n}\n\n.fa-warning:before,\n.fa-exclamation-triangle:before {\n  content: \"\\f071\";\n}\n\n.fa-plane:before {\n  content: \"\\f072\";\n}\n\n.fa-calendar:before {\n  content: \"\\f073\";\n}\n\n.fa-random:before {\n  content: \"\\f074\";\n}\n\n.fa-comment:before {\n  content: \"\\f075\";\n}\n\n.fa-magnet:before {\n  content: \"\\f076\";\n}\n\n.fa-chevron-up:before {\n  content: \"\\f077\";\n}\n\n.fa-chevron-down:before {\n  content: \"\\f078\";\n}\n\n.fa-retweet:before {\n  content: \"\\f079\";\n}\n\n.fa-shopping-cart:before {\n  content: \"\\f07a\";\n}\n\n.fa-folder:before {\n  content: \"\\f07b\";\n}\n\n.fa-folder-open:before {\n  content: \"\\f07c\";\n}\n\n.fa-arrows-v:before {\n  content: \"\\f07d\";\n}\n\n.fa-arrows-h:before {\n  content: \"\\f07e\";\n}\n\n.fa-bar-chart-o:before,\n.fa-bar-chart:before {\n  content: \"\\f080\";\n}\n\n.fa-twitter-square:before {\n  content: \"\\f081\";\n}\n\n.fa-facebook-square:before {\n  content: \"\\f082\";\n}\n\n.fa-camera-retro:before {\n  content: \"\\f083\";\n}\n\n.fa-key:before {\n  content: \"\\f084\";\n}\n\n.fa-gears:before,\n.fa-cogs:before {\n  content: \"\\f085\";\n}\n\n.fa-comments:before {\n  content: \"\\f086\";\n}\n\n.fa-thumbs-o-up:before {\n  content: \"\\f087\";\n}\n\n.fa-thumbs-o-down:before {\n  content: \"\\f088\";\n}\n\n.fa-star-half:before {\n  content: \"\\f089\";\n}\n\n.fa-heart-o:before {\n  content: \"\\f08a\";\n}\n\n.fa-sign-out:before {\n  content: \"\\f08b\";\n}\n\n.fa-linkedin-square:before {\n  content: \"\\f08c\";\n}\n\n.fa-thumb-tack:before {\n  content: \"\\f08d\";\n}\n\n.fa-external-link:before {\n  content: \"\\f08e\";\n}\n\n.fa-sign-in:before {\n  content: \"\\f090\";\n}\n\n.fa-trophy:before {\n  content: \"\\f091\";\n}\n\n.fa-github-square:before {\n  content: \"\\f092\";\n}\n\n.fa-upload:before {\n  content: \"\\f093\";\n}\n\n.fa-lemon-o:before {\n  content: \"\\f094\";\n}\n\n.fa-phone:before {\n  content: \"\\f095\";\n}\n\n.fa-square-o:before {\n  content: \"\\f096\";\n}\n\n.fa-bookmark-o:before {\n  content: \"\\f097\";\n}\n\n.fa-phone-square:before {\n  content: \"\\f098\";\n}\n\n.fa-twitter:before {\n  content: \"\\f099\";\n}\n\n.fa-facebook-f:before,\n.fa-facebook:before {\n  content: \"\\f09a\";\n}\n\n.fa-github:before {\n  content: \"\\f09b\";\n}\n\n.fa-unlock:before {\n  content: \"\\f09c\";\n}\n\n.fa-credit-card:before {\n  content: \"\\f09d\";\n}\n\n.fa-rss:before {\n  content: \"\\f09e\";\n}\n\n.fa-hdd-o:before {\n  content: \"\\f0a0\";\n}\n\n.fa-bullhorn:before {\n  content: \"\\f0a1\";\n}\n\n.fa-bell:before {\n  content: \"\\f0f3\";\n}\n\n.fa-certificate:before {\n  content: \"\\f0a3\";\n}\n\n.fa-hand-o-right:before {\n  content: \"\\f0a4\";\n}\n\n.fa-hand-o-left:before {\n  content: \"\\f0a5\";\n}\n\n.fa-hand-o-up:before {\n  content: \"\\f0a6\";\n}\n\n.fa-hand-o-down:before {\n  content: \"\\f0a7\";\n}\n\n.fa-arrow-circle-left:before {\n  content: \"\\f0a8\";\n}\n\n.fa-arrow-circle-right:before {\n  content: \"\\f0a9\";\n}\n\n.fa-arrow-circle-up:before {\n  content: \"\\f0aa\";\n}\n\n.fa-arrow-circle-down:before {\n  content: \"\\f0ab\";\n}\n\n.fa-globe:before {\n  content: \"\\f0ac\";\n}\n\n.fa-wrench:before {\n  content: \"\\f0ad\";\n}\n\n.fa-tasks:before {\n  content: \"\\f0ae\";\n}\n\n.fa-filter:before {\n  content: \"\\f0b0\";\n}\n\n.fa-briefcase:before {\n  content: \"\\f0b1\";\n}\n\n.fa-arrows-alt:before {\n  content: \"\\f0b2\";\n}\n\n.fa-group:before,\n.fa-users:before {\n  content: \"\\f0c0\";\n}\n\n.fa-chain:before,\n.fa-link:before {\n  content: \"\\f0c1\";\n}\n\n.fa-cloud:before {\n  content: \"\\f0c2\";\n}\n\n.fa-flask:before {\n  content: \"\\f0c3\";\n}\n\n.fa-cut:before,\n.fa-scissors:before {\n  content: \"\\f0c4\";\n}\n\n.fa-copy:before,\n.fa-files-o:before {\n  content: \"\\f0c5\";\n}\n\n.fa-paperclip:before {\n  content: \"\\f0c6\";\n}\n\n.fa-save:before,\n.fa-floppy-o:before {\n  content: \"\\f0c7\";\n}\n\n.fa-square:before {\n  content: \"\\f0c8\";\n}\n\n.fa-navicon:before,\n.fa-reorder:before,\n.fa-bars:before {\n  content: \"\\f0c9\";\n}\n\n.fa-list-ul:before {\n  content: \"\\f0ca\";\n}\n\n.fa-list-ol:before {\n  content: \"\\f0cb\";\n}\n\n.fa-strikethrough:before {\n  content: \"\\f0cc\";\n}\n\n.fa-underline:before {\n  content: \"\\f0cd\";\n}\n\n.fa-table:before {\n  content: \"\\f0ce\";\n}\n\n.fa-magic:before {\n  content: \"\\f0d0\";\n}\n\n.fa-truck:before {\n  content: \"\\f0d1\";\n}\n\n.fa-pinterest:before {\n  content: \"\\f0d2\";\n}\n\n.fa-pinterest-square:before {\n  content: \"\\f0d3\";\n}\n\n.fa-google-plus-square:before {\n  content: \"\\f0d4\";\n}\n\n.fa-google-plus:before {\n  content: \"\\f0d5\";\n}\n\n.fa-money:before {\n  content: \"\\f0d6\";\n}\n\n.fa-caret-down:before {\n  content: \"\\f0d7\";\n}\n\n.fa-caret-up:before {\n  content: \"\\f0d8\";\n}\n\n.fa-caret-left:before {\n  content: \"\\f0d9\";\n}\n\n.fa-caret-right:before {\n  content: \"\\f0da\";\n}\n\n.fa-columns:before {\n  content: \"\\f0db\";\n}\n\n.fa-unsorted:before,\n.fa-sort:before {\n  content: \"\\f0dc\";\n}\n\n.fa-sort-down:before,\n.fa-sort-desc:before {\n  content: \"\\f0dd\";\n}\n\n.fa-sort-up:before,\n.fa-sort-asc:before {\n  content: \"\\f0de\";\n}\n\n.fa-envelope:before {\n  content: \"\\f0e0\";\n}\n\n.fa-linkedin:before {\n  content: \"\\f0e1\";\n}\n\n.fa-rotate-left:before,\n.fa-undo:before {\n  content: \"\\f0e2\";\n}\n\n.fa-legal:before,\n.fa-gavel:before {\n  content: \"\\f0e3\";\n}\n\n.fa-dashboard:before,\n.fa-tachometer:before {\n  content: \"\\f0e4\";\n}\n\n.fa-comment-o:before {\n  content: \"\\f0e5\";\n}\n\n.fa-comments-o:before {\n  content: \"\\f0e6\";\n}\n\n.fa-flash:before,\n.fa-bolt:before {\n  content: \"\\f0e7\";\n}\n\n.fa-sitemap:before {\n  content: \"\\f0e8\";\n}\n\n.fa-umbrella:before {\n  content: \"\\f0e9\";\n}\n\n.fa-paste:before,\n.fa-clipboard:before {\n  content: \"\\f0ea\";\n}\n\n.fa-lightbulb-o:before {\n  content: \"\\f0eb\";\n}\n\n.fa-exchange:before {\n  content: \"\\f0ec\";\n}\n\n.fa-cloud-download:before {\n  content: \"\\f0ed\";\n}\n\n.fa-cloud-upload:before {\n  content: \"\\f0ee\";\n}\n\n.fa-user-md:before {\n  content: \"\\f0f0\";\n}\n\n.fa-stethoscope:before {\n  content: \"\\f0f1\";\n}\n\n.fa-suitcase:before {\n  content: \"\\f0f2\";\n}\n\n.fa-bell-o:before {\n  content: \"\\f0a2\";\n}\n\n.fa-coffee:before {\n  content: \"\\f0f4\";\n}\n\n.fa-cutlery:before {\n  content: \"\\f0f5\";\n}\n\n.fa-file-text-o:before {\n  content: \"\\f0f6\";\n}\n\n.fa-building-o:before {\n  content: \"\\f0f7\";\n}\n\n.fa-hospital-o:before {\n  content: \"\\f0f8\";\n}\n\n.fa-ambulance:before {\n  content: \"\\f0f9\";\n}\n\n.fa-medkit:before {\n  content: \"\\f0fa\";\n}\n\n.fa-fighter-jet:before {\n  content: \"\\f0fb\";\n}\n\n.fa-beer:before {\n  content: \"\\f0fc\";\n}\n\n.fa-h-square:before {\n  content: \"\\f0fd\";\n}\n\n.fa-plus-square:before {\n  content: \"\\f0fe\";\n}\n\n.fa-angle-double-left:before {\n  content: \"\\f100\";\n}\n\n.fa-angle-double-right:before {\n  content: \"\\f101\";\n}\n\n.fa-angle-double-up:before {\n  content: \"\\f102\";\n}\n\n.fa-angle-double-down:before {\n  content: \"\\f103\";\n}\n\n.fa-angle-left:before {\n  content: \"\\f104\";\n}\n\n.fa-angle-right:before {\n  content: \"\\f105\";\n}\n\n.fa-angle-up:before {\n  content: \"\\f106\";\n}\n\n.fa-angle-down:before {\n  content: \"\\f107\";\n}\n\n.fa-desktop:before {\n  content: \"\\f108\";\n}\n\n.fa-laptop:before {\n  content: \"\\f109\";\n}\n\n.fa-tablet:before {\n  content: \"\\f10a\";\n}\n\n.fa-mobile-phone:before,\n.fa-mobile:before {\n  content: \"\\f10b\";\n}\n\n.fa-circle-o:before {\n  content: \"\\f10c\";\n}\n\n.fa-quote-left:before {\n  content: \"\\f10d\";\n}\n\n.fa-quote-right:before {\n  content: \"\\f10e\";\n}\n\n.fa-spinner:before {\n  content: \"\\f110\";\n}\n\n.fa-circle:before {\n  content: \"\\f111\";\n}\n\n.fa-mail-reply:before,\n.fa-reply:before {\n  content: \"\\f112\";\n}\n\n.fa-github-alt:before {\n  content: \"\\f113\";\n}\n\n.fa-folder-o:before {\n  content: \"\\f114\";\n}\n\n.fa-folder-open-o:before {\n  content: \"\\f115\";\n}\n\n.fa-smile-o:before {\n  content: \"\\f118\";\n}\n\n.fa-frown-o:before {\n  content: \"\\f119\";\n}\n\n.fa-meh-o:before {\n  content: \"\\f11a\";\n}\n\n.fa-gamepad:before {\n  content: \"\\f11b\";\n}\n\n.fa-keyboard-o:before {\n  content: \"\\f11c\";\n}\n\n.fa-flag-o:before {\n  content: \"\\f11d\";\n}\n\n.fa-flag-checkered:before {\n  content: \"\\f11e\";\n}\n\n.fa-terminal:before {\n  content: \"\\f120\";\n}\n\n.fa-code:before {\n  content: \"\\f121\";\n}\n\n.fa-mail-reply-all:before,\n.fa-reply-all:before {\n  content: \"\\f122\";\n}\n\n.fa-star-half-empty:before,\n.fa-star-half-full:before,\n.fa-star-half-o:before {\n  content: \"\\f123\";\n}\n\n.fa-location-arrow:before {\n  content: \"\\f124\";\n}\n\n.fa-crop:before {\n  content: \"\\f125\";\n}\n\n.fa-code-fork:before {\n  content: \"\\f126\";\n}\n\n.fa-unlink:before,\n.fa-chain-broken:before {\n  content: \"\\f127\";\n}\n\n.fa-question:before {\n  content: \"\\f128\";\n}\n\n.fa-info:before {\n  content: \"\\f129\";\n}\n\n.fa-exclamation:before {\n  content: \"\\f12a\";\n}\n\n.fa-superscript:before {\n  content: \"\\f12b\";\n}\n\n.fa-subscript:before {\n  content: \"\\f12c\";\n}\n\n.fa-eraser:before {\n  content: \"\\f12d\";\n}\n\n.fa-puzzle-piece:before {\n  content: \"\\f12e\";\n}\n\n.fa-microphone:before {\n  content: \"\\f130\";\n}\n\n.fa-microphone-slash:before {\n  content: \"\\f131\";\n}\n\n.fa-shield:before {\n  content: \"\\f132\";\n}\n\n.fa-calendar-o:before {\n  content: \"\\f133\";\n}\n\n.fa-fire-extinguisher:before {\n  content: \"\\f134\";\n}\n\n.fa-rocket:before {\n  content: \"\\f135\";\n}\n\n.fa-maxcdn:before {\n  content: \"\\f136\";\n}\n\n.fa-chevron-circle-left:before {\n  content: \"\\f137\";\n}\n\n.fa-chevron-circle-right:before {\n  content: \"\\f138\";\n}\n\n.fa-chevron-circle-up:before {\n  content: \"\\f139\";\n}\n\n.fa-chevron-circle-down:before {\n  content: \"\\f13a\";\n}\n\n.fa-html5:before {\n  content: \"\\f13b\";\n}\n\n.fa-css3:before {\n  content: \"\\f13c\";\n}\n\n.fa-anchor:before {\n  content: \"\\f13d\";\n}\n\n.fa-unlock-alt:before {\n  content: \"\\f13e\";\n}\n\n.fa-bullseye:before {\n  content: \"\\f140\";\n}\n\n.fa-ellipsis-h:before {\n  content: \"\\f141\";\n}\n\n.fa-ellipsis-v:before {\n  content: \"\\f142\";\n}\n\n.fa-rss-square:before {\n  content: \"\\f143\";\n}\n\n.fa-play-circle:before {\n  content: \"\\f144\";\n}\n\n.fa-ticket:before {\n  content: \"\\f145\";\n}\n\n.fa-minus-square:before {\n  content: \"\\f146\";\n}\n\n.fa-minus-square-o:before {\n  content: \"\\f147\";\n}\n\n.fa-level-up:before {\n  content: \"\\f148\";\n}\n\n.fa-level-down:before {\n  content: \"\\f149\";\n}\n\n.fa-check-square:before {\n  content: \"\\f14a\";\n}\n\n.fa-pencil-square:before {\n  content: \"\\f14b\";\n}\n\n.fa-external-link-square:before {\n  content: \"\\f14c\";\n}\n\n.fa-share-square:before {\n  content: \"\\f14d\";\n}\n\n.fa-compass:before {\n  content: \"\\f14e\";\n}\n\n.fa-toggle-down:before,\n.fa-caret-square-o-down:before {\n  content: \"\\f150\";\n}\n\n.fa-toggle-up:before,\n.fa-caret-square-o-up:before {\n  content: \"\\f151\";\n}\n\n.fa-toggle-right:before,\n.fa-caret-square-o-right:before {\n  content: \"\\f152\";\n}\n\n.fa-euro:before,\n.fa-eur:before {\n  content: \"\\f153\";\n}\n\n.fa-gbp:before {\n  content: \"\\f154\";\n}\n\n.fa-dollar:before,\n.fa-usd:before {\n  content: \"\\f155\";\n}\n\n.fa-rupee:before,\n.fa-inr:before {\n  content: \"\\f156\";\n}\n\n.fa-cny:before,\n.fa-rmb:before,\n.fa-yen:before,\n.fa-jpy:before {\n  content: \"\\f157\";\n}\n\n.fa-ruble:before,\n.fa-rouble:before,\n.fa-rub:before {\n  content: \"\\f158\";\n}\n\n.fa-won:before,\n.fa-krw:before {\n  content: \"\\f159\";\n}\n\n.fa-bitcoin:before,\n.fa-btc:before {\n  content: \"\\f15a\";\n}\n\n.fa-file:before {\n  content: \"\\f15b\";\n}\n\n.fa-file-text:before {\n  content: \"\\f15c\";\n}\n\n.fa-sort-alpha-asc:before {\n  content: \"\\f15d\";\n}\n\n.fa-sort-alpha-desc:before {\n  content: \"\\f15e\";\n}\n\n.fa-sort-amount-asc:before {\n  content: \"\\f160\";\n}\n\n.fa-sort-amount-desc:before {\n  content: \"\\f161\";\n}\n\n.fa-sort-numeric-asc:before {\n  content: \"\\f162\";\n}\n\n.fa-sort-numeric-desc:before {\n  content: \"\\f163\";\n}\n\n.fa-thumbs-up:before {\n  content: \"\\f164\";\n}\n\n.fa-thumbs-down:before {\n  content: \"\\f165\";\n}\n\n.fa-youtube-square:before {\n  content: \"\\f166\";\n}\n\n.fa-youtube:before {\n  content: \"\\f167\";\n}\n\n.fa-xing:before {\n  content: \"\\f168\";\n}\n\n.fa-xing-square:before {\n  content: \"\\f169\";\n}\n\n.fa-youtube-play:before {\n  content: \"\\f16a\";\n}\n\n.fa-dropbox:before {\n  content: \"\\f16b\";\n}\n\n.fa-stack-overflow:before {\n  content: \"\\f16c\";\n}\n\n.fa-instagram:before {\n  content: \"\\f16d\";\n}\n\n.fa-flickr:before {\n  content: \"\\f16e\";\n}\n\n.fa-adn:before {\n  content: \"\\f170\";\n}\n\n.fa-bitbucket:before {\n  content: \"\\f171\";\n}\n\n.fa-bitbucket-square:before {\n  content: \"\\f172\";\n}\n\n.fa-tumblr:before {\n  content: \"\\f173\";\n}\n\n.fa-tumblr-square:before {\n  content: \"\\f174\";\n}\n\n.fa-long-arrow-down:before {\n  content: \"\\f175\";\n}\n\n.fa-long-arrow-up:before {\n  content: \"\\f176\";\n}\n\n.fa-long-arrow-left:before {\n  content: \"\\f177\";\n}\n\n.fa-long-arrow-right:before {\n  content: \"\\f178\";\n}\n\n.fa-apple:before {\n  content: \"\\f179\";\n}\n\n.fa-windows:before {\n  content: \"\\f17a\";\n}\n\n.fa-android:before {\n  content: \"\\f17b\";\n}\n\n.fa-linux:before {\n  content: \"\\f17c\";\n}\n\n.fa-dribbble:before {\n  content: \"\\f17d\";\n}\n\n.fa-skype:before {\n  content: \"\\f17e\";\n}\n\n.fa-foursquare:before {\n  content: \"\\f180\";\n}\n\n.fa-trello:before {\n  content: \"\\f181\";\n}\n\n.fa-female:before {\n  content: \"\\f182\";\n}\n\n.fa-male:before {\n  content: \"\\f183\";\n}\n\n.fa-gittip:before,\n.fa-gratipay:before {\n  content: \"\\f184\";\n}\n\n.fa-sun-o:before {\n  content: \"\\f185\";\n}\n\n.fa-moon-o:before {\n  content: \"\\f186\";\n}\n\n.fa-archive:before {\n  content: \"\\f187\";\n}\n\n.fa-bug:before {\n  content: \"\\f188\";\n}\n\n.fa-vk:before {\n  content: \"\\f189\";\n}\n\n.fa-weibo:before {\n  content: \"\\f18a\";\n}\n\n.fa-renren:before {\n  content: \"\\f18b\";\n}\n\n.fa-pagelines:before {\n  content: \"\\f18c\";\n}\n\n.fa-stack-exchange:before {\n  content: \"\\f18d\";\n}\n\n.fa-arrow-circle-o-right:before {\n  content: \"\\f18e\";\n}\n\n.fa-arrow-circle-o-left:before {\n  content: \"\\f190\";\n}\n\n.fa-toggle-left:before,\n.fa-caret-square-o-left:before {\n  content: \"\\f191\";\n}\n\n.fa-dot-circle-o:before {\n  content: \"\\f192\";\n}\n\n.fa-wheelchair:before {\n  content: \"\\f193\";\n}\n\n.fa-vimeo-square:before {\n  content: \"\\f194\";\n}\n\n.fa-turkish-lira:before,\n.fa-try:before {\n  content: \"\\f195\";\n}\n\n.fa-plus-square-o:before {\n  content: \"\\f196\";\n}\n\n.fa-space-shuttle:before {\n  content: \"\\f197\";\n}\n\n.fa-slack:before {\n  content: \"\\f198\";\n}\n\n.fa-envelope-square:before {\n  content: \"\\f199\";\n}\n\n.fa-wordpress:before {\n  content: \"\\f19a\";\n}\n\n.fa-openid:before {\n  content: \"\\f19b\";\n}\n\n.fa-institution:before,\n.fa-bank:before,\n.fa-university:before {\n  content: \"\\f19c\";\n}\n\n.fa-mortar-board:before,\n.fa-graduation-cap:before {\n  content: \"\\f19d\";\n}\n\n.fa-yahoo:before {\n  content: \"\\f19e\";\n}\n\n.fa-google:before {\n  content: \"\\f1a0\";\n}\n\n.fa-reddit:before {\n  content: \"\\f1a1\";\n}\n\n.fa-reddit-square:before {\n  content: \"\\f1a2\";\n}\n\n.fa-stumbleupon-circle:before {\n  content: \"\\f1a3\";\n}\n\n.fa-stumbleupon:before {\n  content: \"\\f1a4\";\n}\n\n.fa-delicious:before {\n  content: \"\\f1a5\";\n}\n\n.fa-digg:before {\n  content: \"\\f1a6\";\n}\n\n.fa-pied-piper:before {\n  content: \"\\f1a7\";\n}\n\n.fa-pied-piper-alt:before {\n  content: \"\\f1a8\";\n}\n\n.fa-drupal:before {\n  content: \"\\f1a9\";\n}\n\n.fa-joomla:before {\n  content: \"\\f1aa\";\n}\n\n.fa-language:before {\n  content: \"\\f1ab\";\n}\n\n.fa-fax:before {\n  content: \"\\f1ac\";\n}\n\n.fa-building:before {\n  content: \"\\f1ad\";\n}\n\n.fa-child:before {\n  content: \"\\f1ae\";\n}\n\n.fa-paw:before {\n  content: \"\\f1b0\";\n}\n\n.fa-spoon:before {\n  content: \"\\f1b1\";\n}\n\n.fa-cube:before {\n  content: \"\\f1b2\";\n}\n\n.fa-cubes:before {\n  content: \"\\f1b3\";\n}\n\n.fa-behance:before {\n  content: \"\\f1b4\";\n}\n\n.fa-behance-square:before {\n  content: \"\\f1b5\";\n}\n\n.fa-steam:before {\n  content: \"\\f1b6\";\n}\n\n.fa-steam-square:before {\n  content: \"\\f1b7\";\n}\n\n.fa-recycle:before {\n  content: \"\\f1b8\";\n}\n\n.fa-automobile:before,\n.fa-car:before {\n  content: \"\\f1b9\";\n}\n\n.fa-cab:before,\n.fa-taxi:before {\n  content: \"\\f1ba\";\n}\n\n.fa-tree:before {\n  content: \"\\f1bb\";\n}\n\n.fa-spotify:before {\n  content: \"\\f1bc\";\n}\n\n.fa-deviantart:before {\n  content: \"\\f1bd\";\n}\n\n.fa-soundcloud:before {\n  content: \"\\f1be\";\n}\n\n.fa-database:before {\n  content: \"\\f1c0\";\n}\n\n.fa-file-pdf-o:before {\n  content: \"\\f1c1\";\n}\n\n.fa-file-word-o:before {\n  content: \"\\f1c2\";\n}\n\n.fa-file-excel-o:before {\n  content: \"\\f1c3\";\n}\n\n.fa-file-powerpoint-o:before {\n  content: \"\\f1c4\";\n}\n\n.fa-file-photo-o:before,\n.fa-file-picture-o:before,\n.fa-file-image-o:before {\n  content: \"\\f1c5\";\n}\n\n.fa-file-zip-o:before,\n.fa-file-archive-o:before {\n  content: \"\\f1c6\";\n}\n\n.fa-file-sound-o:before,\n.fa-file-audio-o:before {\n  content: \"\\f1c7\";\n}\n\n.fa-file-movie-o:before,\n.fa-file-video-o:before {\n  content: \"\\f1c8\";\n}\n\n.fa-file-code-o:before {\n  content: \"\\f1c9\";\n}\n\n.fa-vine:before {\n  content: \"\\f1ca\";\n}\n\n.fa-codepen:before {\n  content: \"\\f1cb\";\n}\n\n.fa-jsfiddle:before {\n  content: \"\\f1cc\";\n}\n\n.fa-life-bouy:before,\n.fa-life-buoy:before,\n.fa-life-saver:before,\n.fa-support:before,\n.fa-life-ring:before {\n  content: \"\\f1cd\";\n}\n\n.fa-circle-o-notch:before {\n  content: \"\\f1ce\";\n}\n\n.fa-ra:before,\n.fa-rebel:before {\n  content: \"\\f1d0\";\n}\n\n.fa-ge:before,\n.fa-empire:before {\n  content: \"\\f1d1\";\n}\n\n.fa-git-square:before {\n  content: \"\\f1d2\";\n}\n\n.fa-git:before {\n  content: \"\\f1d3\";\n}\n\n.fa-hacker-news:before {\n  content: \"\\f1d4\";\n}\n\n.fa-tencent-weibo:before {\n  content: \"\\f1d5\";\n}\n\n.fa-qq:before {\n  content: \"\\f1d6\";\n}\n\n.fa-wechat:before,\n.fa-weixin:before {\n  content: \"\\f1d7\";\n}\n\n.fa-send:before,\n.fa-paper-plane:before {\n  content: \"\\f1d8\";\n}\n\n.fa-send-o:before,\n.fa-paper-plane-o:before {\n  content: \"\\f1d9\";\n}\n\n.fa-history:before {\n  content: \"\\f1da\";\n}\n\n.fa-genderless:before,\n.fa-circle-thin:before {\n  content: \"\\f1db\";\n}\n\n.fa-header:before {\n  content: \"\\f1dc\";\n}\n\n.fa-paragraph:before {\n  content: \"\\f1dd\";\n}\n\n.fa-sliders:before {\n  content: \"\\f1de\";\n}\n\n.fa-share-alt:before {\n  content: \"\\f1e0\";\n}\n\n.fa-share-alt-square:before {\n  content: \"\\f1e1\";\n}\n\n.fa-bomb:before {\n  content: \"\\f1e2\";\n}\n\n.fa-soccer-ball-o:before,\n.fa-futbol-o:before {\n  content: \"\\f1e3\";\n}\n\n.fa-tty:before {\n  content: \"\\f1e4\";\n}\n\n.fa-binoculars:before {\n  content: \"\\f1e5\";\n}\n\n.fa-plug:before {\n  content: \"\\f1e6\";\n}\n\n.fa-slideshare:before {\n  content: \"\\f1e7\";\n}\n\n.fa-twitch:before {\n  content: \"\\f1e8\";\n}\n\n.fa-yelp:before {\n  content: \"\\f1e9\";\n}\n\n.fa-newspaper-o:before {\n  content: \"\\f1ea\";\n}\n\n.fa-wifi:before {\n  content: \"\\f1eb\";\n}\n\n.fa-calculator:before {\n  content: \"\\f1ec\";\n}\n\n.fa-paypal:before {\n  content: \"\\f1ed\";\n}\n\n.fa-google-wallet:before {\n  content: \"\\f1ee\";\n}\n\n.fa-cc-visa:before {\n  content: \"\\f1f0\";\n}\n\n.fa-cc-mastercard:before {\n  content: \"\\f1f1\";\n}\n\n.fa-cc-discover:before {\n  content: \"\\f1f2\";\n}\n\n.fa-cc-amex:before {\n  content: \"\\f1f3\";\n}\n\n.fa-cc-paypal:before {\n  content: \"\\f1f4\";\n}\n\n.fa-cc-stripe:before {\n  content: \"\\f1f5\";\n}\n\n.fa-bell-slash:before {\n  content: \"\\f1f6\";\n}\n\n.fa-bell-slash-o:before {\n  content: \"\\f1f7\";\n}\n\n.fa-trash:before {\n  content: \"\\f1f8\";\n}\n\n.fa-copyright:before {\n  content: \"\\f1f9\";\n}\n\n.fa-at:before {\n  content: \"\\f1fa\";\n}\n\n.fa-eyedropper:before {\n  content: \"\\f1fb\";\n}\n\n.fa-paint-brush:before {\n  content: \"\\f1fc\";\n}\n\n.fa-birthday-cake:before {\n  content: \"\\f1fd\";\n}\n\n.fa-area-chart:before {\n  content: \"\\f1fe\";\n}\n\n.fa-pie-chart:before {\n  content: \"\\f200\";\n}\n\n.fa-line-chart:before {\n  content: \"\\f201\";\n}\n\n.fa-lastfm:before {\n  content: \"\\f202\";\n}\n\n.fa-lastfm-square:before {\n  content: \"\\f203\";\n}\n\n.fa-toggle-off:before {\n  content: \"\\f204\";\n}\n\n.fa-toggle-on:before {\n  content: \"\\f205\";\n}\n\n.fa-bicycle:before {\n  content: \"\\f206\";\n}\n\n.fa-bus:before {\n  content: \"\\f207\";\n}\n\n.fa-ioxhost:before {\n  content: \"\\f208\";\n}\n\n.fa-angellist:before {\n  content: \"\\f209\";\n}\n\n.fa-cc:before {\n  content: \"\\f20a\";\n}\n\n.fa-shekel:before,\n.fa-sheqel:before,\n.fa-ils:before {\n  content: \"\\f20b\";\n}\n\n.fa-meanpath:before {\n  content: \"\\f20c\";\n}\n\n.fa-buysellads:before {\n  content: \"\\f20d\";\n}\n\n.fa-connectdevelop:before {\n  content: \"\\f20e\";\n}\n\n.fa-dashcube:before {\n  content: \"\\f210\";\n}\n\n.fa-forumbee:before {\n  content: \"\\f211\";\n}\n\n.fa-leanpub:before {\n  content: \"\\f212\";\n}\n\n.fa-sellsy:before {\n  content: \"\\f213\";\n}\n\n.fa-shirtsinbulk:before {\n  content: \"\\f214\";\n}\n\n.fa-simplybuilt:before {\n  content: \"\\f215\";\n}\n\n.fa-skyatlas:before {\n  content: \"\\f216\";\n}\n\n.fa-cart-plus:before {\n  content: \"\\f217\";\n}\n\n.fa-cart-arrow-down:before {\n  content: \"\\f218\";\n}\n\n.fa-diamond:before {\n  content: \"\\f219\";\n}\n\n.fa-ship:before {\n  content: \"\\f21a\";\n}\n\n.fa-user-secret:before {\n  content: \"\\f21b\";\n}\n\n.fa-motorcycle:before {\n  content: \"\\f21c\";\n}\n\n.fa-street-view:before {\n  content: \"\\f21d\";\n}\n\n.fa-heartbeat:before {\n  content: \"\\f21e\";\n}\n\n.fa-venus:before {\n  content: \"\\f221\";\n}\n\n.fa-mars:before {\n  content: \"\\f222\";\n}\n\n.fa-mercury:before {\n  content: \"\\f223\";\n}\n\n.fa-transgender:before {\n  content: \"\\f224\";\n}\n\n.fa-transgender-alt:before {\n  content: \"\\f225\";\n}\n\n.fa-venus-double:before {\n  content: \"\\f226\";\n}\n\n.fa-mars-double:before {\n  content: \"\\f227\";\n}\n\n.fa-venus-mars:before {\n  content: \"\\f228\";\n}\n\n.fa-mars-stroke:before {\n  content: \"\\f229\";\n}\n\n.fa-mars-stroke-v:before {\n  content: \"\\f22a\";\n}\n\n.fa-mars-stroke-h:before {\n  content: \"\\f22b\";\n}\n\n.fa-neuter:before {\n  content: \"\\f22c\";\n}\n\n.fa-facebook-official:before {\n  content: \"\\f230\";\n}\n\n.fa-pinterest-p:before {\n  content: \"\\f231\";\n}\n\n.fa-whatsapp:before {\n  content: \"\\f232\";\n}\n\n.fa-server:before {\n  content: \"\\f233\";\n}\n\n.fa-user-plus:before {\n  content: \"\\f234\";\n}\n\n.fa-user-times:before {\n  content: \"\\f235\";\n}\n\n.fa-hotel:before,\n.fa-bed:before {\n  content: \"\\f236\";\n}\n\n.fa-viacoin:before {\n  content: \"\\f237\";\n}\n\n.fa-train:before {\n  content: \"\\f238\";\n}\n\n.fa-subway:before {\n  content: \"\\f239\";\n}\n\n.fa-medium:before {\n  content: \"\\f23a\";\n}\n\n/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */\n@font-face {\n  font-family: 'editormd-logo';\n  src: url(\"../fonts/editormd-logo.eot?-5y8q6h\");\n  src: url(\".../fonts/editormd-logo.eot?#iefix-5y8q6h\") format(\"embedded-opentype\"), url(\"../fonts/editormd-logo.woff?-5y8q6h\") format(\"woff\"), url(\"../fonts/editormd-logo.ttf?-5y8q6h\") format(\"truetype\"), url(\"../fonts/editormd-logo.svg?-5y8q6h#icomoon\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n.editormd-logo,\n.editormd-logo-1x,\n.editormd-logo-2x,\n.editormd-logo-3x,\n.editormd-logo-4x,\n.editormd-logo-5x,\n.editormd-logo-6x,\n.editormd-logo-7x,\n.editormd-logo-8x {\n  font-family: 'editormd-logo';\n  speak: none;\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  font-size: inherit;\n  line-height: 1;\n  display: inline-block;\n  text-rendering: auto;\n  vertical-align: inherit;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.editormd-logo:before,\n.editormd-logo-1x:before,\n.editormd-logo-2x:before,\n.editormd-logo-3x:before,\n.editormd-logo-4x:before,\n.editormd-logo-5x:before,\n.editormd-logo-6x:before,\n.editormd-logo-7x:before,\n.editormd-logo-8x:before {\n  content: \"\\e1987\";\n  /* \n  HTML Entity &#xe1987; \n  example: <span class=\"editormd-logo\">&#xe1987;</span>\n  */\n}\n\n.editormd-logo-1x {\n  font-size: 1em;\n}\n\n.editormd-logo-lg {\n  font-size: 1.2em;\n}\n\n.editormd-logo-2x {\n  font-size: 2em;\n}\n\n.editormd-logo-3x {\n  font-size: 3em;\n}\n\n.editormd-logo-4x {\n  font-size: 4em;\n}\n\n.editormd-logo-5x {\n  font-size: 5em;\n}\n\n.editormd-logo-6x {\n  font-size: 6em;\n}\n\n.editormd-logo-7x {\n  font-size: 7em;\n}\n\n.editormd-logo-8x {\n  font-size: 8em;\n}\n\n.editormd-logo-color {\n  color: #2196F3;\n}\n\n/*! github-markdown-css | The MIT License (MIT) | Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) | https://github.com/sindresorhus/github-markdown-css */\n@font-face {\n  font-family: octicons-anchor;\n  src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAYcAA0AAAAACjQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABwAAAAca8vGTk9TLzIAAAFMAAAARAAAAFZG1VHVY21hcAAAAZAAAAA+AAABQgAP9AdjdnQgAAAB0AAAAAQAAAAEACICiGdhc3AAAAHUAAAACAAAAAj//wADZ2x5ZgAAAdwAAADRAAABEKyikaNoZWFkAAACsAAAAC0AAAA2AtXoA2hoZWEAAALgAAAAHAAAACQHngNFaG10eAAAAvwAAAAQAAAAEAwAACJsb2NhAAADDAAAAAoAAAAKALIAVG1heHAAAAMYAAAAHwAAACABEAB2bmFtZQAAAzgAAALBAAAFu3I9x/Nwb3N0AAAF/AAAAB0AAAAvaoFvbwAAAAEAAAAAzBdyYwAAAADP2IQvAAAAAM/bz7t4nGNgZGFgnMDAysDB1Ml0hoGBoR9CM75mMGLkYGBgYmBlZsAKAtJcUxgcPsR8iGF2+O/AEMPsznAYKMwIkgMA5REMOXicY2BgYGaAYBkGRgYQsAHyGMF8FgYFIM0ChED+h5j//yEk/3KoSgZGNgYYk4GRCUgwMaACRoZhDwCs7QgGAAAAIgKIAAAAAf//AAJ4nHWMMQrCQBBF/0zWrCCIKUQsTDCL2EXMohYGSSmorScInsRGL2DOYJe0Ntp7BK+gJ1BxF1stZvjz/v8DRghQzEc4kIgKwiAppcA9LtzKLSkdNhKFY3HF4lK69ExKslx7Xa+vPRVS43G98vG1DnkDMIBUgFN0MDXflU8tbaZOUkXUH0+U27RoRpOIyCKjbMCVejwypzJJG4jIwb43rfl6wbwanocrJm9XFYfskuVC5K/TPyczNU7b84CXcbxks1Un6H6tLH9vf2LRnn8Ax7A5WQAAAHicY2BkYGAA4teL1+yI57f5ysDNwgAC529f0kOmWRiYVgEpDgYmEA8AUzEKsQAAAHicY2BkYGB2+O/AEMPCAAJAkpEBFbAAADgKAe0EAAAiAAAAAAQAAAAEAAAAAAAAKgAqACoAiAAAeJxjYGRgYGBhsGFgYgABEMkFhAwM/xn0QAIAD6YBhwB4nI1Ty07cMBS9QwKlQapQW3VXySvEqDCZGbGaHULiIQ1FKgjWMxknMfLEke2A+IJu+wntrt/QbVf9gG75jK577Lg8K1qQPCfnnnt8fX1NRC/pmjrk/zprC+8D7tBy9DHgBXoWfQ44Av8t4Bj4Z8CLtBL9CniJluPXASf0Lm4CXqFX8Q84dOLnMB17N4c7tBo1AS/Qi+hTwBH4rwHHwN8DXqQ30XXAS7QaLwSc0Gn8NuAVWou/gFmnjLrEaEh9GmDdDGgL3B4JsrRPDU2hTOiMSuJUIdKQQayiAth69r6akSSFqIJuA19TrzCIaY8sIoxyrNIrL//pw7A2iMygkX5vDj+G+kuoLdX4GlGK/8Lnlz6/h9MpmoO9rafrz7ILXEHHaAx95s9lsI7AHNMBWEZHULnfAXwG9/ZqdzLI08iuwRloXE8kfhXYAvE23+23DU3t626rbs8/8adv+9DWknsHp3E17oCf+Z48rvEQNZ78paYM38qfk3v/u3l3u3GXN2Dmvmvpf1Srwk3pB/VSsp512bA/GG5i2WJ7wu430yQ5K3nFGiOqgtmSB5pJVSizwaacmUZzZhXLlZTq8qGGFY2YcSkqbth6aW1tRmlaCFs2016m5qn36SbJrqosG4uMV4aP2PHBmB3tjtmgN2izkGQyLWprekbIntJFing32a5rKWCN/SdSoga45EJykyQ7asZvHQ8PTm6cslIpwyeyjbVltNikc2HTR7YKh9LBl9DADC0U/jLcBZDKrMhUBfQBvXRzLtFtjU9eNHKin0x5InTqb8lNpfKv1s1xHzTXRqgKzek/mb7nB8RZTCDhGEX3kK/8Q75AmUM/eLkfA+0Hi908Kx4eNsMgudg5GLdRD7a84npi+YxNr5i5KIbW5izXas7cHXIMAau1OueZhfj+cOcP3P8MNIWLyYOBuxL6DRylJ4cAAAB4nGNgYoAALjDJyIAOWMCiTIxMLDmZedkABtIBygAAAA==) format(\"woff\");\n}\n.markdown-body {\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n  color: #333;\n  overflow: hidden;\n  font-family: \"Microsoft YaHei\", Helvetica, \"Meiryo UI\", \"Malgun Gothic\", \"Segoe UI\", \"Trebuchet MS\", \"Monaco\", monospace, Tahoma, STXihei, \"华文细黑\", STHeiti, \"Helvetica Neue\", \"Droid Sans\", \"wenquanyi micro hei\", FreeSans, Arimo, Arial, SimSun, \"宋体\", Heiti, \"黑体\", sans-serif;\n  font-size: 16px;\n  line-height: 1.6;\n  word-wrap: break-word;\n}\n\n.markdown-body a {\n  background: transparent;\n}\n\n.markdown-body a:active,\n.markdown-body a:hover {\n  outline: 0;\n}\n\n.markdown-body strong {\n  font-weight: bold;\n}\n\n.markdown-body h1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n.markdown-body img {\n  border: 0;\n}\n\n.markdown-body hr {\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\n\n.markdown-body pre {\n  overflow: auto;\n}\n\n.markdown-body code,\n.markdown-body kbd,\n.markdown-body pre {\n  font-family: \"Meiryo UI\", \"YaHei Consolas Hybrid\", Consolas, \"Malgun Gothic\", \"Segoe UI\", \"Trebuchet MS\", Helvetica, monospace, monospace;\n  font-size: 1em;\n}\n\n.markdown-body input {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\n\n.markdown-body html input[disabled] {\n  cursor: default;\n}\n\n.markdown-body input {\n  line-height: normal;\n}\n\n.markdown-body input[type=\"checkbox\"] {\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  padding: 0;\n}\n\n.markdown-body table {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\n.markdown-body td,\n.markdown-body th {\n  padding: 0;\n}\n\n.markdown-body * {\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n\n.markdown-body input {\n  font: 13px/1.4 Helvetica, arial, freesans, clean, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n}\n\n.markdown-body a {\n  color: #4183c4;\n  text-decoration: none;\n}\n\n.markdown-body a:hover,\n.markdown-body a:active {\n  text-decoration: underline;\n}\n\n.markdown-body hr {\n  height: 0;\n  margin: 15px 0;\n  overflow: hidden;\n  background: transparent;\n  border: 0;\n  border-bottom: 1px solid #ddd;\n}\n\n.markdown-body hr:before {\n  display: table;\n  content: \"\";\n}\n\n.markdown-body hr:after {\n  display: table;\n  clear: both;\n  content: \"\";\n}\n\n.markdown-body h1,\n.markdown-body h2,\n.markdown-body h3,\n.markdown-body h4,\n.markdown-body h5,\n.markdown-body h6 {\n  margin-top: 15px;\n  margin-bottom: 15px;\n  line-height: 1.1;\n}\n\n.markdown-body h1 {\n  font-size: 30px;\n}\n\n.markdown-body h2 {\n  font-size: 21px;\n}\n\n.markdown-body h3 {\n  font-size: 16px;\n}\n\n.markdown-body h4 {\n  font-size: 14px;\n}\n\n.markdown-body h5 {\n  font-size: 12px;\n}\n\n.markdown-body h6 {\n  font-size: 11px;\n}\n\n.markdown-body blockquote {\n  margin: 0;\n}\n\n.markdown-body ul,\n.markdown-body ol {\n  padding: 0;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n.markdown-body ol ol,\n.markdown-body ul ol {\n  list-style-type: lower-roman;\n}\n\n.markdown-body ul ul ol,\n.markdown-body ul ol ol,\n.markdown-body ol ul ol,\n.markdown-body ol ol ol {\n  list-style-type: lower-alpha;\n}\n\n.markdown-body dd {\n  margin-left: 0;\n}\n\n.markdown-body code {\n  font-family: Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n  font-size: 12px;\n}\n\n.markdown-body pre {\n  margin-top: 0;\n  margin-bottom: 0;\n  font: 12px Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n}\n\n.markdown-body .octicon {\n  font: normal normal 16px octicons-anchor;\n  line-height: 1;\n  display: inline-block;\n  text-decoration: none;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n\n.markdown-body .octicon-link:before {\n  content: '\\f05c';\n}\n\n.markdown-body > *:first-child {\n  margin-top: 0 !important;\n}\n\n.markdown-body > *:last-child {\n  margin-bottom: 0 !important;\n}\n\n.markdown-body .anchor {\n  position: absolute;\n  top: 0;\n  left: 0;\n  display: block;\n  padding-right: 6px;\n  padding-left: 30px;\n  margin-left: -30px;\n}\n\n.markdown-body .anchor:focus {\n  outline: none;\n}\n\n.markdown-body h1,\n.markdown-body h2,\n.markdown-body h3,\n.markdown-body h4,\n.markdown-body h5,\n.markdown-body h6 {\n  position: relative;\n  margin-top: 1em;\n  margin-bottom: 16px;\n  font-weight: bold;\n  line-height: 1.4;\n}\n\n.markdown-body h1 .octicon-link,\n.markdown-body h2 .octicon-link,\n.markdown-body h3 .octicon-link,\n.markdown-body h4 .octicon-link,\n.markdown-body h5 .octicon-link,\n.markdown-body h6 .octicon-link {\n  display: none;\n  color: #000;\n  vertical-align: middle;\n}\n\n.markdown-body h1:hover .anchor,\n.markdown-body h2:hover .anchor,\n.markdown-body h3:hover .anchor,\n.markdown-body h4:hover .anchor,\n.markdown-body h5:hover .anchor,\n.markdown-body h6:hover .anchor {\n  padding-left: 8px;\n  margin-left: -30px;\n  text-decoration: none;\n}\n\n.markdown-body h1:hover .anchor .octicon-link,\n.markdown-body h2:hover .anchor .octicon-link,\n.markdown-body h3:hover .anchor .octicon-link,\n.markdown-body h4:hover .anchor .octicon-link,\n.markdown-body h5:hover .anchor .octicon-link,\n.markdown-body h6:hover .anchor .octicon-link {\n  display: inline-block;\n}\n\n.markdown-body h1 {\n  padding-bottom: 0.3em;\n  font-size: 2.25em;\n  line-height: 1.2;\n  border-bottom: 1px solid #eee;\n}\n\n.markdown-body h1 .anchor {\n  line-height: 1;\n}\n\n.markdown-body h2 {\n  padding-bottom: 0.3em;\n  font-size: 1.75em;\n  line-height: 1.225;\n  border-bottom: 1px solid #eee;\n}\n\n.markdown-body h2 .anchor {\n  line-height: 1;\n}\n\n.markdown-body h3 {\n  font-size: 1.5em;\n  line-height: 1.43;\n}\n\n.markdown-body h3 .anchor {\n  line-height: 1.2;\n}\n\n.markdown-body h4 {\n  font-size: 1.25em;\n}\n\n.markdown-body h4 .anchor {\n  line-height: 1.2;\n}\n\n.markdown-body h5 {\n  font-size: 1em;\n}\n\n.markdown-body h5 .anchor {\n  line-height: 1.1;\n}\n\n.markdown-body h6 {\n  font-size: 1em;\n  color: #777;\n}\n\n.markdown-body h6 .anchor {\n  line-height: 1.1;\n}\n\n.markdown-body p,\n.markdown-body blockquote,\n.markdown-body ul,\n.markdown-body ol,\n.markdown-body dl,\n.markdown-body table,\n.markdown-body pre {\n  margin-top: 0;\n  margin-bottom: 16px;\n}\n\n/*\n.markdown-body hr {\n  height: 4px;\n  padding: 0;\n  margin: 16px 0;\n  background-color: #e7e7e7;\n  border: 0 none;\n}*/\n.markdown-body ul,\n.markdown-body ol {\n  padding-left: 2em;\n}\n\n.markdown-body ul ul,\n.markdown-body ul ol,\n.markdown-body ol ol,\n.markdown-body ol ul {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n.markdown-body li > p {\n  margin-top: 16px;\n}\n\n.markdown-body dl {\n  padding: 0;\n}\n\n.markdown-body dl dt {\n  padding: 0;\n  margin-top: 16px;\n  font-size: 1em;\n  font-style: italic;\n  font-weight: bold;\n}\n\n.markdown-body dl dd {\n  padding: 0 16px;\n  margin-bottom: 16px;\n}\n\n.markdown-body blockquote {\n  padding: 0 15px;\n  color: #777;\n  border-left: 4px solid #ddd;\n}\n\n.markdown-body blockquote > :first-child {\n  margin-top: 0;\n}\n\n.markdown-body blockquote > :last-child {\n  margin-bottom: 0;\n}\n\n.markdown-body table {\n  display: block;\n  width: 100%;\n  overflow: auto;\n  word-break: normal;\n  word-break: keep-all;\n}\n\n.markdown-body table th {\n  font-weight: bold;\n}\n\n.markdown-body table th,\n.markdown-body table td {\n  padding: 6px 13px;\n  border: 1px solid #ddd;\n}\n\n.markdown-body table tr {\n  background-color: #fff;\n  border-top: 1px solid #ccc;\n}\n\n.markdown-body table tr:nth-child(2n) {\n  background-color: #f8f8f8;\n}\n\n.markdown-body img {\n  max-width: 100%;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n\n.markdown-body code {\n  padding: 0;\n  padding-top: 0.2em;\n  padding-bottom: 0.2em;\n  margin: 0;\n  font-size: 85%;\n  background-color: rgba(0, 0, 0, 0.04);\n  border-radius: 3px;\n}\n\n.markdown-body code:before,\n.markdown-body code:after {\n  letter-spacing: -0.2em;\n  content: \"\\00a0\";\n}\n\n.markdown-body pre > code {\n  padding: 0;\n  margin: 0;\n  font-size: 100%;\n  word-break: normal;\n  white-space: pre;\n  background: transparent;\n  border: 0;\n}\n\n.markdown-body .highlight {\n  margin-bottom: 16px;\n}\n\n.markdown-body .highlight pre,\n.markdown-body pre {\n  padding: 16px;\n  overflow: auto;\n  font-size: 85%;\n  line-height: 1.45;\n  background-color: #f7f7f7;\n  border-radius: 3px;\n}\n\n.markdown-body .highlight pre {\n  margin-bottom: 0;\n  word-break: normal;\n}\n\n.markdown-body pre {\n  word-wrap: normal;\n}\n\n.markdown-body pre code {\n  display: inline;\n  max-width: initial;\n  padding: 0;\n  margin: 0;\n  overflow: initial;\n  line-height: inherit;\n  word-wrap: normal;\n  background-color: transparent;\n  border: 0;\n}\n\n.markdown-body pre code:before,\n.markdown-body pre code:after {\n  content: normal;\n}\n\n.markdown-body kbd {\n  display: inline-block;\n  padding: 3px 5px;\n  font-size: 11px;\n  line-height: 10px;\n  color: #555;\n  vertical-align: middle;\n  background-color: #fcfcfc;\n  border: solid 1px #ccc;\n  border-bottom-color: #bbb;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 #bbb;\n}\n\n.markdown-body .pl-c {\n  color: #969896;\n}\n\n.markdown-body .pl-c1,\n.markdown-body .pl-mdh,\n.markdown-body .pl-mm,\n.markdown-body .pl-mp,\n.markdown-body .pl-mr,\n.markdown-body .pl-s1 .pl-v,\n.markdown-body .pl-s3,\n.markdown-body .pl-sc,\n.markdown-body .pl-sv {\n  color: #0086b3;\n}\n\n.markdown-body .pl-e,\n.markdown-body .pl-en {\n  color: #795da3;\n}\n\n.markdown-body .pl-s1 .pl-s2,\n.markdown-body .pl-smi,\n.markdown-body .pl-smp,\n.markdown-body .pl-stj,\n.markdown-body .pl-vo,\n.markdown-body .pl-vpf {\n  color: #333;\n}\n\n.markdown-body .pl-ent {\n  color: #63a35c;\n}\n\n.markdown-body .pl-k,\n.markdown-body .pl-s,\n.markdown-body .pl-st {\n  color: #a71d5d;\n}\n\n.markdown-body .pl-pds,\n.markdown-body .pl-s1,\n.markdown-body .pl-s1 .pl-pse .pl-s2,\n.markdown-body .pl-sr,\n.markdown-body .pl-sr .pl-cce,\n.markdown-body .pl-sr .pl-sra,\n.markdown-body .pl-sr .pl-sre,\n.markdown-body .pl-src {\n  color: #df5000;\n}\n\n.markdown-body .pl-mo,\n.markdown-body .pl-v {\n  color: #1d3e81;\n}\n\n.markdown-body .pl-id {\n  color: #b52a1d;\n}\n\n.markdown-body .pl-ii {\n  background-color: #b52a1d;\n  color: #f8f8f8;\n}\n\n.markdown-body .pl-sr .pl-cce {\n  color: #63a35c;\n  font-weight: bold;\n}\n\n.markdown-body .pl-ml {\n  color: #693a17;\n}\n\n.markdown-body .pl-mh,\n.markdown-body .pl-mh .pl-en,\n.markdown-body .pl-ms {\n  color: #1d3e81;\n  font-weight: bold;\n}\n\n.markdown-body .pl-mq {\n  color: #008080;\n}\n\n.markdown-body .pl-mi {\n  color: #333;\n  font-style: italic;\n}\n\n.markdown-body .pl-mb {\n  color: #333;\n  font-weight: bold;\n}\n\n.markdown-body .pl-md,\n.markdown-body .pl-mdhf {\n  background-color: #ffecec;\n  color: #bd2c00;\n}\n\n.markdown-body .pl-mdht,\n.markdown-body .pl-mi1 {\n  background-color: #eaffea;\n  color: #55a532;\n}\n\n.markdown-body .pl-mdr {\n  color: #795da3;\n  font-weight: bold;\n}\n\n.markdown-body kbd {\n  display: inline-block;\n  padding: 3px 5px;\n  font: 11px Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n  line-height: 10px;\n  color: #555;\n  vertical-align: middle;\n  background-color: #fcfcfc;\n  border: solid 1px #ccc;\n  border-bottom-color: #bbb;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 #bbb;\n}\n\n.markdown-body .task-list-item {\n  list-style-type: none;\n}\n\n.markdown-body .task-list-item + .task-list-item {\n  margin-top: 3px;\n}\n\n.markdown-body .task-list-item input {\n  float: left;\n  margin: 0.3em 0 0.25em -1.6em;\n  vertical-align: middle;\n}\n\n.markdown-body :checked + .radio-label {\n  z-index: 1;\n  position: relative;\n  border-color: #4183c4;\n}\n\n.editormd-preview-container, .editormd-html-preview {\n  text-align: left;\n  font-size: 14px;\n  line-height: 1.6;\n  padding: 20px;\n  overflow: auto;\n  width: 100%;\n  background-color: #fff;\n}\n.editormd-preview-container blockquote, .editormd-html-preview blockquote {\n  color: #666;\n  border-left: 4px solid #ddd;\n  padding-left: 20px;\n  margin-left: 0;\n  font-size: 14px;\n  font-style: italic;\n}\n.editormd-preview-container p code, .editormd-html-preview p code {\n  margin-left: 5px;\n  margin-right: 4px;\n}\n.editormd-preview-container abbr, .editormd-html-preview abbr {\n  background: #ffffdd;\n}\n.editormd-preview-container hr, .editormd-html-preview hr {\n  height: 1px;\n  border: none;\n  border-top: 1px solid #ddd;\n  background: none;\n}\n.editormd-preview-container code, .editormd-html-preview code {\n  border: 1px solid #ddd;\n  background: #f6f6f6;\n  padding: 3px;\n  border-radius: 3px;\n  font-size: 14px;\n}\n.editormd-preview-container pre, .editormd-html-preview pre {\n  border: 1px solid #ddd;\n  background: #f6f6f6;\n  padding: 10px;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  -ms-border-radius: 3px;\n  -o-border-radius: 3px;\n  border-radius: 3px;\n}\n.editormd-preview-container pre code, .editormd-html-preview pre code {\n  padding: 0;\n}\n.editormd-preview-container pre, .editormd-preview-container code, .editormd-preview-container kbd, .editormd-html-preview pre, .editormd-html-preview code, .editormd-html-preview kbd {\n  font-family: \"YaHei Consolas Hybrid\", Consolas, \"Meiryo UI\", \"Malgun Gothic\", \"Segoe UI\", \"Trebuchet MS\", Helvetica, monospace, monospace;\n}\n.editormd-preview-container table thead tr, .editormd-html-preview table thead tr {\n  background-color: #F8F8F8;\n}\n.editormd-preview-container p.editormd-tex, .editormd-html-preview p.editormd-tex {\n  text-align: center;\n}\n.editormd-preview-container span.editormd-tex, .editormd-html-preview span.editormd-tex {\n  margin: 0 5px;\n}\n.editormd-preview-container .emoji, .editormd-html-preview .emoji {\n  width: 24px;\n  height: 24px;\n}\n.editormd-preview-container .katex, .editormd-html-preview .katex {\n  font-size: 1.4em;\n}\n.editormd-preview-container .sequence-diagram, .editormd-preview-container .flowchart, .editormd-html-preview .sequence-diagram, .editormd-html-preview .flowchart {\n  margin: 0 auto;\n  text-align: center;\n}\n.editormd-preview-container .sequence-diagram svg, .editormd-preview-container .flowchart svg, .editormd-html-preview .sequence-diagram svg, .editormd-html-preview .flowchart svg {\n  margin: 0 auto;\n}\n.editormd-preview-container .sequence-diagram text, .editormd-preview-container .flowchart text, .editormd-html-preview .sequence-diagram text, .editormd-html-preview .flowchart text {\n  font-size: 15px !important;\n  font-family: \"YaHei Consolas Hybrid\", Consolas, \"Microsoft YaHei\", \"Malgun Gothic\", \"Segoe UI\", Helvetica, Arial !important;\n}\n\n/*! Pretty printing styles. Used with prettify.js. */\n/* SPAN elements with the classes below are added by prettyprint. */\n.pln {\n  color: #000;\n}\n\n/* plain text */\n@media screen {\n  .str {\n    color: #080;\n  }\n\n  /* string content */\n  .kwd {\n    color: #008;\n  }\n\n  /* a keyword */\n  .com {\n    color: #800;\n  }\n\n  /* a comment */\n  .typ {\n    color: #606;\n  }\n\n  /* a type name */\n  .lit {\n    color: #066;\n  }\n\n  /* a literal value */\n  /* punctuation, lisp open bracket, lisp close bracket */\n  .pun, .opn, .clo {\n    color: #660;\n  }\n\n  .tag {\n    color: #008;\n  }\n\n  /* a markup tag name */\n  .atn {\n    color: #606;\n  }\n\n  /* a markup attribute name */\n  .atv {\n    color: #080;\n  }\n\n  /* a markup attribute value */\n  .dec, .var {\n    color: #606;\n  }\n\n  /* a declaration; a variable name */\n  .fun {\n    color: red;\n  }\n\n  /* a function name */\n}\n/* Use higher contrast and text-weight for printable form. */\n@media print, projection {\n  .str {\n    color: #060;\n  }\n\n  .kwd {\n    color: #006;\n    font-weight: bold;\n  }\n\n  .com {\n    color: #600;\n    font-style: italic;\n  }\n\n  .typ {\n    color: #404;\n    font-weight: bold;\n  }\n\n  .lit {\n    color: #044;\n  }\n\n  .pun, .opn, .clo {\n    color: #440;\n  }\n\n  .tag {\n    color: #006;\n    font-weight: bold;\n  }\n\n  .atn {\n    color: #404;\n  }\n\n  .atv {\n    color: #060;\n  }\n}\n/* Put a border around prettyprinted code snippets. */\npre.prettyprint {\n  padding: 2px;\n  border: 1px solid #888;\n}\n\n/* Specify class=linenums on a pre to get line numbering */\nol.linenums {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n/* IE indents via margin-left */\nli.L0,\nli.L1,\nli.L2,\nli.L3,\nli.L5,\nli.L6,\nli.L7,\nli.L8 {\n  list-style-type: none;\n}\n\n/* Alternate shading for lines */\nli.L1,\nli.L3,\nli.L5,\nli.L7,\nli.L9 {\n  background: #eee;\n}\n\n.editormd-preview-container pre.prettyprint, .editormd-html-preview pre.prettyprint {\n  padding: 10px;\n  border: 1px solid #ddd;\n  white-space: pre-wrap;\n  word-wrap: break-word;\n}\n.editormd-preview-container ol.linenums, .editormd-html-preview ol.linenums {\n  color: #999;\n  padding-left: 2.5em;\n}\n.editormd-preview-container ol.linenums li, .editormd-html-preview ol.linenums li {\n  list-style-type: decimal;\n}\n.editormd-preview-container ol.linenums li code, .editormd-html-preview ol.linenums li code {\n  border: none;\n  background: none;\n  padding: 0;\n}\n\n.editormd-preview-container .editormd-toc-menu, .editormd-html-preview .editormd-toc-menu {\n  margin: 8px 0 12px 0;\n  display: inline-block;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc, .editormd-html-preview .editormd-toc-menu > .markdown-toc {\n  position: relative;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  -ms-border-radius: 4px;\n  -o-border-radius: 4px;\n  border-radius: 4px;\n  border: 1px solid #ddd;\n  display: inline-block;\n  font-size: 1em;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc > ul, .editormd-html-preview .editormd-toc-menu > .markdown-toc > ul {\n  width: 160%;\n  min-width: 180px;\n  position: absolute;\n  left: -1px;\n  top: -2px;\n  z-index: 100;\n  padding: 0 10px 10px;\n  display: none;\n  background: #fff;\n  border: 1px solid #ddd;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  -ms-border-radius: 4px;\n  -o-border-radius: 4px;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* Webkit browsers */\n  -moz-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* Firefox */\n  -ms-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* IE9 */\n  -o-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* Opera(Old) */\n  box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* IE9+, News */\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc > ul > li ul, .editormd-html-preview .editormd-toc-menu > .markdown-toc > ul > li ul {\n  width: 100%;\n  min-width: 180px;\n  border: 1px solid #ddd;\n  display: none;\n  background: #fff;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  -ms-border-radius: 4px;\n  -o-border-radius: 4px;\n  border-radius: 4px;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc > ul > li a, .editormd-html-preview .editormd-toc-menu > .markdown-toc > ul > li a {\n  color: #666;\n  padding: 6px 10px;\n  display: block;\n  -webkit-transition: background-color 500ms ease-out;\n  /* Safari, Chrome */\n  -moz-transition: background-color 500ms ease-out;\n  /* Firefox 4.0~16.0 */\n  transition: background-color 500ms ease-out;\n  /* IE >9, FF >15, Opera >12.0 */\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc > ul > li a:hover, .editormd-html-preview .editormd-toc-menu > .markdown-toc > ul > li a:hover {\n  background-color: #f6f6f6;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc li, .editormd-html-preview .editormd-toc-menu > .markdown-toc li {\n  position: relative;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc li > ul, .editormd-html-preview .editormd-toc-menu > .markdown-toc li > ul {\n  position: absolute;\n  top: 32px;\n  left: 10%;\n  display: none;\n  -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* Webkit browsers */\n  -moz-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* Firefox */\n  -ms-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* IE9 */\n  -o-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* Opera(Old) */\n  box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* IE9+, News */\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc li > ul:before, .editormd-preview-container .editormd-toc-menu > .markdown-toc li > ul:after, .editormd-html-preview .editormd-toc-menu > .markdown-toc li > ul:before, .editormd-html-preview .editormd-toc-menu > .markdown-toc li > ul:after {\n  pointer-events: pointer-events;\n  position: absolute;\n  left: 15px;\n  top: -6px;\n  display: block;\n  content: \"\";\n  width: 0;\n  height: 0;\n  border: 6px solid transparent;\n  border-width: 0 6px 6px;\n  z-index: 10;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc li > ul:before, .editormd-html-preview .editormd-toc-menu > .markdown-toc li > ul:before {\n  border-bottom-color: #ccc;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc li > ul:after, .editormd-html-preview .editormd-toc-menu > .markdown-toc li > ul:after {\n  border-bottom-color: #ffffff;\n  top: -5px;\n}\n.editormd-preview-container .editormd-toc-menu ul, .editormd-html-preview .editormd-toc-menu ul {\n  list-style: none;\n}\n.editormd-preview-container .editormd-toc-menu a, .editormd-html-preview .editormd-toc-menu a {\n  text-decoration: none;\n}\n.editormd-preview-container .editormd-toc-menu h1, .editormd-html-preview .editormd-toc-menu h1 {\n  font-size: 16px;\n  padding: 5px 0 10px 10px;\n  line-height: 1;\n  border-bottom: 1px solid #eee;\n}\n.editormd-preview-container .editormd-toc-menu h1 .fa, .editormd-html-preview .editormd-toc-menu h1 .fa {\n  padding-left: 10px;\n}\n.editormd-preview-container .editormd-toc-menu .toc-menu-btn, .editormd-html-preview .editormd-toc-menu .toc-menu-btn {\n  color: #666;\n  min-width: 180px;\n  padding: 5px 10px;\n  border-radius: 4px;\n  display: inline-block;\n  -webkit-transition: background-color 500ms ease-out;\n  /* Safari, Chrome */\n  -moz-transition: background-color 500ms ease-out;\n  /* Firefox 4.0~16.0 */\n  transition: background-color 500ms ease-out;\n  /* IE >9, FF >15, Opera >12.0 */\n}\n.editormd-preview-container .editormd-toc-menu .toc-menu-btn:hover, .editormd-html-preview .editormd-toc-menu .toc-menu-btn:hover {\n  background-color: #f6f6f6;\n}\n.editormd-preview-container .editormd-toc-menu .toc-menu-btn .fa, .editormd-html-preview .editormd-toc-menu .toc-menu-btn .fa {\n  float: right;\n  padding: 3px 0 0 10px;\n  font-size: 1.3em;\n}\n\n.markdown-body .editormd-toc-menu ul {\n  padding-left: 0;\n}\n.markdown-body .highlight pre, .markdown-body pre {\n  line-height: 1.6;\n}\n\nhr.editormd-page-break {\n  border: 1px dotted #ccc;\n  font-size: 0;\n  height: 2px;\n}\n\n@media only print {\n  hr.editormd-page-break {\n    background: none;\n    border: none;\n    height: 0;\n  }\n}\n.editormd-html-preview textarea {\n  display: none;\n}\n.editormd-html-preview hr.editormd-page-break {\n  background: none;\n  border: none;\n  height: 0;\n}\n\n.editormd-preview-close-btn {\n  color: #fff;\n  padding: 4px 6px;\n  font-size: 18px;\n  -webkit-border-radius: 500px;\n  -moz-border-radius: 500px;\n  -ms-border-radius: 500px;\n  -o-border-radius: 500px;\n  border-radius: 500px;\n  display: none;\n  background-color: #ccc;\n  position: absolute;\n  top: 25px;\n  right: 35px;\n  z-index: 19;\n  -webkit-transition: background-color 300ms ease-out;\n  /* Safari, Chrome */\n  -moz-transition: background-color 300ms ease-out;\n  /* Firefox 4.0~16.0 */\n  transition: background-color 300ms ease-out;\n  /* IE >9, FF >15, Opera >12.0 */\n}\n.editormd-preview-close-btn:hover {\n  background-color: #999;\n}\n\n.editormd-preview-active {\n  width: 100%;\n  padding: 40px;\n}\n\n/* Preview dark theme */\n.editormd-preview-theme-dark {\n  color: #777;\n  background: #2C2827;\n}\n.editormd-preview-theme-dark .editormd-preview-container {\n  color: #888;\n  background-color: #2C2827;\n}\n.editormd-preview-theme-dark .editormd-preview-container pre.prettyprint {\n  border: none;\n}\n.editormd-preview-theme-dark .editormd-preview-container blockquote {\n  color: #555;\n  padding: 0.5em;\n  background: #222;\n  border-color: #333;\n}\n.editormd-preview-theme-dark .editormd-preview-container abbr {\n  color: #fff;\n  padding: 1px 3px;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  -ms-border-radius: 3px;\n  -o-border-radius: 3px;\n  border-radius: 3px;\n  background: #ff9900;\n}\n.editormd-preview-theme-dark .editormd-preview-container code {\n  color: #fff;\n  border: none;\n  padding: 1px 3px;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  -ms-border-radius: 3px;\n  -o-border-radius: 3px;\n  border-radius: 3px;\n  background: #5A9600;\n}\n.editormd-preview-theme-dark .editormd-preview-container table {\n  border: none;\n}\n.editormd-preview-theme-dark .editormd-preview-container .fa-emoji {\n  color: #B4BF42;\n}\n.editormd-preview-theme-dark .editormd-preview-container .katex {\n  color: #FEC93F;\n}\n.editormd-preview-theme-dark .editormd-toc-menu > .markdown-toc {\n  background: #fff;\n  border: none;\n}\n.editormd-preview-theme-dark .editormd-toc-menu > .markdown-toc h1 {\n  border-color: #ddd;\n}\n.editormd-preview-theme-dark .markdown-body h1, .editormd-preview-theme-dark .markdown-body h2, .editormd-preview-theme-dark .markdown-body hr {\n  border-color: #222;\n}\n.editormd-preview-theme-dark pre {\n  color: #999;\n  background-color: #111;\n  background-color: rgba(0, 0, 0, 0.4);\n  /* plain text */\n}\n.editormd-preview-theme-dark pre .pln {\n  color: #999;\n}\n.editormd-preview-theme-dark li.L1, .editormd-preview-theme-dark li.L3, .editormd-preview-theme-dark li.L5, .editormd-preview-theme-dark li.L7, .editormd-preview-theme-dark li.L9 {\n  background: none;\n}\n.editormd-preview-theme-dark [class*=editormd-logo] {\n  color: #2196F3;\n}\n.editormd-preview-theme-dark .sequence-diagram text {\n  fill: #fff;\n}\n.editormd-preview-theme-dark .sequence-diagram rect, .editormd-preview-theme-dark .sequence-diagram path {\n  color: #fff;\n  fill: #64D1CB;\n  stroke: #64D1CB;\n}\n.editormd-preview-theme-dark .flowchart rect, .editormd-preview-theme-dark .flowchart path {\n  stroke: #A6C6FF;\n}\n.editormd-preview-theme-dark .flowchart rect {\n  fill: #A6C6FF;\n}\n.editormd-preview-theme-dark .flowchart text {\n  fill: #5879B4;\n}\n\n@media screen {\n  .editormd-preview-theme-dark {\n    /* string content */\n    /* a keyword */\n    /* a comment */\n    /* a type name */\n    /* a literal value */\n    /* punctuation, lisp open bracket, lisp close bracket */\n    /* a markup tag name */\n    /* a markup attribute name */\n    /* a markup attribute value */\n    /* a declaration; a variable name */\n    /* a function name */\n  }\n  .editormd-preview-theme-dark .str {\n    color: #080;\n  }\n  .editormd-preview-theme-dark .kwd {\n    color: #ff9900;\n  }\n  .editormd-preview-theme-dark .com {\n    color: #444444;\n  }\n  .editormd-preview-theme-dark .typ {\n    color: #606;\n  }\n  .editormd-preview-theme-dark .lit {\n    color: #066;\n  }\n  .editormd-preview-theme-dark .pun, .editormd-preview-theme-dark .opn, .editormd-preview-theme-dark .clo {\n    color: #660;\n  }\n  .editormd-preview-theme-dark .tag {\n    color: #ff9900;\n  }\n  .editormd-preview-theme-dark .atn {\n    color: #6C95F5;\n  }\n  .editormd-preview-theme-dark .atv {\n    color: #080;\n  }\n  .editormd-preview-theme-dark .dec, .editormd-preview-theme-dark .var {\n    color: #008BA7;\n  }\n  .editormd-preview-theme-dark .fun {\n    color: red;\n  }\n}\n.editormd-onlyread .editormd-toolbar {\n  display: none;\n}\n.editormd-onlyread .CodeMirror {\n  margin-top: 0;\n}\n.editormd-onlyread .editormd-preview {\n  top: 0;\n}\n\n.editormd-fullscreen {\n  position: fixed;\n  top: 0;\n  left: 0;\n  border: none;\n  margin: 0 auto;\n}\n\n/* Editor.md Dark theme */\n.editormd-theme-dark {\n  border-color: #1a1a17;\n}\n.editormd-theme-dark .editormd-toolbar {\n  background: #1A1A17;\n  border-color: #1a1a17;\n}\n.editormd-theme-dark .editormd-menu > li > a {\n  color: #777;\n  border-color: #1a1a17;\n}\n.editormd-theme-dark .editormd-menu > li > a:hover, .editormd-theme-dark .editormd-menu > li > a.active {\n  border-color: #333;\n  background: #333;\n}\n.editormd-theme-dark .editormd-menu > li.divider {\n  border-right: 1px solid #111;\n}\n.editormd-theme-dark .CodeMirror {\n  border-right: 1px solid rgba(0, 0, 0, 0.1);\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/css/editormd.logo.css",
    "content": "/*\n * Editor.md\n *\n * @file        editormd.logo.css \n * @version     v1.5.0 \n * @description Open source online markdown editor.\n * @license     MIT License\n * @author      Pandao\n * {@link       https://github.com/pandao/editor.md}\n * @updateTime  2015-06-09\n */\n\n/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */\n@font-face {\n  font-family: 'editormd-logo';\n  src: url(\"../fonts/editormd-logo.eot?-5y8q6h\");\n  src: url(\".../fonts/editormd-logo.eot?#iefix-5y8q6h\") format(\"embedded-opentype\"), url(\"../fonts/editormd-logo.woff?-5y8q6h\") format(\"woff\"), url(\"../fonts/editormd-logo.ttf?-5y8q6h\") format(\"truetype\"), url(\"../fonts/editormd-logo.svg?-5y8q6h#icomoon\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n.editormd-logo,\n.editormd-logo-1x,\n.editormd-logo-2x,\n.editormd-logo-3x,\n.editormd-logo-4x,\n.editormd-logo-5x,\n.editormd-logo-6x,\n.editormd-logo-7x,\n.editormd-logo-8x {\n  font-family: 'editormd-logo';\n  speak: none;\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  font-size: inherit;\n  line-height: 1;\n  display: inline-block;\n  text-rendering: auto;\n  vertical-align: inherit;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.editormd-logo:before,\n.editormd-logo-1x:before,\n.editormd-logo-2x:before,\n.editormd-logo-3x:before,\n.editormd-logo-4x:before,\n.editormd-logo-5x:before,\n.editormd-logo-6x:before,\n.editormd-logo-7x:before,\n.editormd-logo-8x:before {\n  content: \"\\e1987\";\n  /* \n  HTML Entity &#xe1987; \n  example: <span class=\"editormd-logo\">&#xe1987;</span>\n  */\n}\n\n.editormd-logo-1x {\n  font-size: 1em;\n}\n\n.editormd-logo-lg {\n  font-size: 1.2em;\n}\n\n.editormd-logo-2x {\n  font-size: 2em;\n}\n\n.editormd-logo-3x {\n  font-size: 3em;\n}\n\n.editormd-logo-4x {\n  font-size: 4em;\n}\n\n.editormd-logo-5x {\n  font-size: 5em;\n}\n\n.editormd-logo-6x {\n  font-size: 6em;\n}\n\n.editormd-logo-7x {\n  font-size: 7em;\n}\n\n.editormd-logo-8x {\n  font-size: 8em;\n}\n\n.editormd-logo-color {\n  color: #2196F3;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/css/editormd.preview.css",
    "content": "/*\n * Editor.md\n *\n * @file        editormd.preview.css \n * @version     v1.5.0 \n * @description Open source online markdown editor.\n * @license     MIT License\n * @author      Pandao\n * {@link       https://github.com/pandao/editor.md}\n * @updateTime  2015-06-09\n */\n\n@charset \"UTF-8\";\n/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */\n/*!\n *  Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome\n *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */\n/* FONT PATH\n * -------------------------- */\n@font-face {\n  font-family: 'FontAwesome';\n  src: url(\"../fonts/fontawesome-webfont.eot?v=4.3.0\");\n  src: url(\"../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0\") format(\"embedded-opentype\"), url(\"../fonts/fontawesome-webfont.woff2?v=4.3.0\") format(\"woff2\"), url(\"../fonts/fontawesome-webfont.woff?v=4.3.0\") format(\"woff\"), url(\"../fonts/fontawesome-webfont.ttf?v=4.3.0\") format(\"truetype\"), url(\"../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n.fa {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  transform: translate(0, 0);\n}\n\n/* makes the font 33% larger relative to the icon container */\n.fa-lg {\n  font-size: 1.33333333em;\n  line-height: 0.75em;\n  vertical-align: -15%;\n}\n\n.fa-2x {\n  font-size: 2em;\n}\n\n.fa-3x {\n  font-size: 3em;\n}\n\n.fa-4x {\n  font-size: 4em;\n}\n\n.fa-5x {\n  font-size: 5em;\n}\n\n.fa-fw {\n  width: 1.28571429em;\n  text-align: center;\n}\n\n.fa-ul {\n  padding-left: 0;\n  margin-left: 2.14285714em;\n  list-style-type: none;\n}\n\n.fa-ul > li {\n  position: relative;\n}\n\n.fa-li {\n  position: absolute;\n  left: -2.14285714em;\n  width: 2.14285714em;\n  top: 0.14285714em;\n  text-align: center;\n}\n\n.fa-li.fa-lg {\n  left: -1.85714286em;\n}\n\n.fa-border {\n  padding: .2em .25em .15em;\n  border: solid 0.08em #eeeeee;\n  border-radius: .1em;\n}\n\n.pull-right {\n  float: right;\n}\n\n.pull-left {\n  float: left;\n}\n\n.fa.pull-left {\n  margin-right: .3em;\n}\n\n.fa.pull-right {\n  margin-left: .3em;\n}\n\n.fa-spin {\n  -webkit-animation: fa-spin 2s infinite linear;\n  animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n  -webkit-animation: fa-spin 1s infinite steps(8);\n  animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n    transform: rotate(359deg);\n  }\n}\n@keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n    transform: rotate(359deg);\n  }\n}\n.fa-rotate-90 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n  -webkit-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\n  -webkit-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\n  -webkit-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);\n  -webkit-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);\n  -webkit-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n  filter: none;\n}\n\n.fa-stack {\n  position: relative;\n  display: inline-block;\n  width: 2em;\n  height: 2em;\n  line-height: 2em;\n  vertical-align: middle;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n  position: absolute;\n  left: 0;\n  width: 100%;\n  text-align: center;\n}\n\n.fa-stack-1x {\n  line-height: inherit;\n}\n\n.fa-stack-2x {\n  font-size: 2em;\n}\n\n.fa-inverse {\n  color: #ffffff;\n}\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n.fa-glass:before {\n  content: \"\\f000\";\n}\n\n.fa-music:before {\n  content: \"\\f001\";\n}\n\n.fa-search:before {\n  content: \"\\f002\";\n}\n\n.fa-envelope-o:before {\n  content: \"\\f003\";\n}\n\n.fa-heart:before {\n  content: \"\\f004\";\n}\n\n.fa-star:before {\n  content: \"\\f005\";\n}\n\n.fa-star-o:before {\n  content: \"\\f006\";\n}\n\n.fa-user:before {\n  content: \"\\f007\";\n}\n\n.fa-film:before {\n  content: \"\\f008\";\n}\n\n.fa-th-large:before {\n  content: \"\\f009\";\n}\n\n.fa-th:before {\n  content: \"\\f00a\";\n}\n\n.fa-th-list:before {\n  content: \"\\f00b\";\n}\n\n.fa-check:before {\n  content: \"\\f00c\";\n}\n\n.fa-remove:before,\n.fa-close:before,\n.fa-times:before {\n  content: \"\\f00d\";\n}\n\n.fa-search-plus:before {\n  content: \"\\f00e\";\n}\n\n.fa-search-minus:before {\n  content: \"\\f010\";\n}\n\n.fa-power-off:before {\n  content: \"\\f011\";\n}\n\n.fa-signal:before {\n  content: \"\\f012\";\n}\n\n.fa-gear:before,\n.fa-cog:before {\n  content: \"\\f013\";\n}\n\n.fa-trash-o:before {\n  content: \"\\f014\";\n}\n\n.fa-home:before {\n  content: \"\\f015\";\n}\n\n.fa-file-o:before {\n  content: \"\\f016\";\n}\n\n.fa-clock-o:before {\n  content: \"\\f017\";\n}\n\n.fa-road:before {\n  content: \"\\f018\";\n}\n\n.fa-download:before {\n  content: \"\\f019\";\n}\n\n.fa-arrow-circle-o-down:before {\n  content: \"\\f01a\";\n}\n\n.fa-arrow-circle-o-up:before {\n  content: \"\\f01b\";\n}\n\n.fa-inbox:before {\n  content: \"\\f01c\";\n}\n\n.fa-play-circle-o:before {\n  content: \"\\f01d\";\n}\n\n.fa-rotate-right:before,\n.fa-repeat:before {\n  content: \"\\f01e\";\n}\n\n.fa-refresh:before {\n  content: \"\\f021\";\n}\n\n.fa-list-alt:before {\n  content: \"\\f022\";\n}\n\n.fa-lock:before {\n  content: \"\\f023\";\n}\n\n.fa-flag:before {\n  content: \"\\f024\";\n}\n\n.fa-headphones:before {\n  content: \"\\f025\";\n}\n\n.fa-volume-off:before {\n  content: \"\\f026\";\n}\n\n.fa-volume-down:before {\n  content: \"\\f027\";\n}\n\n.fa-volume-up:before {\n  content: \"\\f028\";\n}\n\n.fa-qrcode:before {\n  content: \"\\f029\";\n}\n\n.fa-barcode:before {\n  content: \"\\f02a\";\n}\n\n.fa-tag:before {\n  content: \"\\f02b\";\n}\n\n.fa-tags:before {\n  content: \"\\f02c\";\n}\n\n.fa-book:before {\n  content: \"\\f02d\";\n}\n\n.fa-bookmark:before {\n  content: \"\\f02e\";\n}\n\n.fa-print:before {\n  content: \"\\f02f\";\n}\n\n.fa-camera:before {\n  content: \"\\f030\";\n}\n\n.fa-font:before {\n  content: \"\\f031\";\n}\n\n.fa-bold:before {\n  content: \"\\f032\";\n}\n\n.fa-italic:before {\n  content: \"\\f033\";\n}\n\n.fa-text-height:before {\n  content: \"\\f034\";\n}\n\n.fa-text-width:before {\n  content: \"\\f035\";\n}\n\n.fa-align-left:before {\n  content: \"\\f036\";\n}\n\n.fa-align-center:before {\n  content: \"\\f037\";\n}\n\n.fa-align-right:before {\n  content: \"\\f038\";\n}\n\n.fa-align-justify:before {\n  content: \"\\f039\";\n}\n\n.fa-list:before {\n  content: \"\\f03a\";\n}\n\n.fa-dedent:before,\n.fa-outdent:before {\n  content: \"\\f03b\";\n}\n\n.fa-indent:before {\n  content: \"\\f03c\";\n}\n\n.fa-video-camera:before {\n  content: \"\\f03d\";\n}\n\n.fa-photo:before,\n.fa-image:before,\n.fa-picture-o:before {\n  content: \"\\f03e\";\n}\n\n.fa-pencil:before {\n  content: \"\\f040\";\n}\n\n.fa-map-marker:before {\n  content: \"\\f041\";\n}\n\n.fa-adjust:before {\n  content: \"\\f042\";\n}\n\n.fa-tint:before {\n  content: \"\\f043\";\n}\n\n.fa-edit:before,\n.fa-pencil-square-o:before {\n  content: \"\\f044\";\n}\n\n.fa-share-square-o:before {\n  content: \"\\f045\";\n}\n\n.fa-check-square-o:before {\n  content: \"\\f046\";\n}\n\n.fa-arrows:before {\n  content: \"\\f047\";\n}\n\n.fa-step-backward:before {\n  content: \"\\f048\";\n}\n\n.fa-fast-backward:before {\n  content: \"\\f049\";\n}\n\n.fa-backward:before {\n  content: \"\\f04a\";\n}\n\n.fa-play:before {\n  content: \"\\f04b\";\n}\n\n.fa-pause:before {\n  content: \"\\f04c\";\n}\n\n.fa-stop:before {\n  content: \"\\f04d\";\n}\n\n.fa-forward:before {\n  content: \"\\f04e\";\n}\n\n.fa-fast-forward:before {\n  content: \"\\f050\";\n}\n\n.fa-step-forward:before {\n  content: \"\\f051\";\n}\n\n.fa-eject:before {\n  content: \"\\f052\";\n}\n\n.fa-chevron-left:before {\n  content: \"\\f053\";\n}\n\n.fa-chevron-right:before {\n  content: \"\\f054\";\n}\n\n.fa-plus-circle:before {\n  content: \"\\f055\";\n}\n\n.fa-minus-circle:before {\n  content: \"\\f056\";\n}\n\n.fa-times-circle:before {\n  content: \"\\f057\";\n}\n\n.fa-check-circle:before {\n  content: \"\\f058\";\n}\n\n.fa-question-circle:before {\n  content: \"\\f059\";\n}\n\n.fa-info-circle:before {\n  content: \"\\f05a\";\n}\n\n.fa-crosshairs:before {\n  content: \"\\f05b\";\n}\n\n.fa-times-circle-o:before {\n  content: \"\\f05c\";\n}\n\n.fa-check-circle-o:before {\n  content: \"\\f05d\";\n}\n\n.fa-ban:before {\n  content: \"\\f05e\";\n}\n\n.fa-arrow-left:before {\n  content: \"\\f060\";\n}\n\n.fa-arrow-right:before {\n  content: \"\\f061\";\n}\n\n.fa-arrow-up:before {\n  content: \"\\f062\";\n}\n\n.fa-arrow-down:before {\n  content: \"\\f063\";\n}\n\n.fa-mail-forward:before,\n.fa-share:before {\n  content: \"\\f064\";\n}\n\n.fa-expand:before {\n  content: \"\\f065\";\n}\n\n.fa-compress:before {\n  content: \"\\f066\";\n}\n\n.fa-plus:before {\n  content: \"\\f067\";\n}\n\n.fa-minus:before {\n  content: \"\\f068\";\n}\n\n.fa-asterisk:before {\n  content: \"\\f069\";\n}\n\n.fa-exclamation-circle:before {\n  content: \"\\f06a\";\n}\n\n.fa-gift:before {\n  content: \"\\f06b\";\n}\n\n.fa-leaf:before {\n  content: \"\\f06c\";\n}\n\n.fa-fire:before {\n  content: \"\\f06d\";\n}\n\n.fa-eye:before {\n  content: \"\\f06e\";\n}\n\n.fa-eye-slash:before {\n  content: \"\\f070\";\n}\n\n.fa-warning:before,\n.fa-exclamation-triangle:before {\n  content: \"\\f071\";\n}\n\n.fa-plane:before {\n  content: \"\\f072\";\n}\n\n.fa-calendar:before {\n  content: \"\\f073\";\n}\n\n.fa-random:before {\n  content: \"\\f074\";\n}\n\n.fa-comment:before {\n  content: \"\\f075\";\n}\n\n.fa-magnet:before {\n  content: \"\\f076\";\n}\n\n.fa-chevron-up:before {\n  content: \"\\f077\";\n}\n\n.fa-chevron-down:before {\n  content: \"\\f078\";\n}\n\n.fa-retweet:before {\n  content: \"\\f079\";\n}\n\n.fa-shopping-cart:before {\n  content: \"\\f07a\";\n}\n\n.fa-folder:before {\n  content: \"\\f07b\";\n}\n\n.fa-folder-open:before {\n  content: \"\\f07c\";\n}\n\n.fa-arrows-v:before {\n  content: \"\\f07d\";\n}\n\n.fa-arrows-h:before {\n  content: \"\\f07e\";\n}\n\n.fa-bar-chart-o:before,\n.fa-bar-chart:before {\n  content: \"\\f080\";\n}\n\n.fa-twitter-square:before {\n  content: \"\\f081\";\n}\n\n.fa-facebook-square:before {\n  content: \"\\f082\";\n}\n\n.fa-camera-retro:before {\n  content: \"\\f083\";\n}\n\n.fa-key:before {\n  content: \"\\f084\";\n}\n\n.fa-gears:before,\n.fa-cogs:before {\n  content: \"\\f085\";\n}\n\n.fa-comments:before {\n  content: \"\\f086\";\n}\n\n.fa-thumbs-o-up:before {\n  content: \"\\f087\";\n}\n\n.fa-thumbs-o-down:before {\n  content: \"\\f088\";\n}\n\n.fa-star-half:before {\n  content: \"\\f089\";\n}\n\n.fa-heart-o:before {\n  content: \"\\f08a\";\n}\n\n.fa-sign-out:before {\n  content: \"\\f08b\";\n}\n\n.fa-linkedin-square:before {\n  content: \"\\f08c\";\n}\n\n.fa-thumb-tack:before {\n  content: \"\\f08d\";\n}\n\n.fa-external-link:before {\n  content: \"\\f08e\";\n}\n\n.fa-sign-in:before {\n  content: \"\\f090\";\n}\n\n.fa-trophy:before {\n  content: \"\\f091\";\n}\n\n.fa-github-square:before {\n  content: \"\\f092\";\n}\n\n.fa-upload:before {\n  content: \"\\f093\";\n}\n\n.fa-lemon-o:before {\n  content: \"\\f094\";\n}\n\n.fa-phone:before {\n  content: \"\\f095\";\n}\n\n.fa-square-o:before {\n  content: \"\\f096\";\n}\n\n.fa-bookmark-o:before {\n  content: \"\\f097\";\n}\n\n.fa-phone-square:before {\n  content: \"\\f098\";\n}\n\n.fa-twitter:before {\n  content: \"\\f099\";\n}\n\n.fa-facebook-f:before,\n.fa-facebook:before {\n  content: \"\\f09a\";\n}\n\n.fa-github:before {\n  content: \"\\f09b\";\n}\n\n.fa-unlock:before {\n  content: \"\\f09c\";\n}\n\n.fa-credit-card:before {\n  content: \"\\f09d\";\n}\n\n.fa-rss:before {\n  content: \"\\f09e\";\n}\n\n.fa-hdd-o:before {\n  content: \"\\f0a0\";\n}\n\n.fa-bullhorn:before {\n  content: \"\\f0a1\";\n}\n\n.fa-bell:before {\n  content: \"\\f0f3\";\n}\n\n.fa-certificate:before {\n  content: \"\\f0a3\";\n}\n\n.fa-hand-o-right:before {\n  content: \"\\f0a4\";\n}\n\n.fa-hand-o-left:before {\n  content: \"\\f0a5\";\n}\n\n.fa-hand-o-up:before {\n  content: \"\\f0a6\";\n}\n\n.fa-hand-o-down:before {\n  content: \"\\f0a7\";\n}\n\n.fa-arrow-circle-left:before {\n  content: \"\\f0a8\";\n}\n\n.fa-arrow-circle-right:before {\n  content: \"\\f0a9\";\n}\n\n.fa-arrow-circle-up:before {\n  content: \"\\f0aa\";\n}\n\n.fa-arrow-circle-down:before {\n  content: \"\\f0ab\";\n}\n\n.fa-globe:before {\n  content: \"\\f0ac\";\n}\n\n.fa-wrench:before {\n  content: \"\\f0ad\";\n}\n\n.fa-tasks:before {\n  content: \"\\f0ae\";\n}\n\n.fa-filter:before {\n  content: \"\\f0b0\";\n}\n\n.fa-briefcase:before {\n  content: \"\\f0b1\";\n}\n\n.fa-arrows-alt:before {\n  content: \"\\f0b2\";\n}\n\n.fa-group:before,\n.fa-users:before {\n  content: \"\\f0c0\";\n}\n\n.fa-chain:before,\n.fa-link:before {\n  content: \"\\f0c1\";\n}\n\n.fa-cloud:before {\n  content: \"\\f0c2\";\n}\n\n.fa-flask:before {\n  content: \"\\f0c3\";\n}\n\n.fa-cut:before,\n.fa-scissors:before {\n  content: \"\\f0c4\";\n}\n\n.fa-copy:before,\n.fa-files-o:before {\n  content: \"\\f0c5\";\n}\n\n.fa-paperclip:before {\n  content: \"\\f0c6\";\n}\n\n.fa-save:before,\n.fa-floppy-o:before {\n  content: \"\\f0c7\";\n}\n\n.fa-square:before {\n  content: \"\\f0c8\";\n}\n\n.fa-navicon:before,\n.fa-reorder:before,\n.fa-bars:before {\n  content: \"\\f0c9\";\n}\n\n.fa-list-ul:before {\n  content: \"\\f0ca\";\n}\n\n.fa-list-ol:before {\n  content: \"\\f0cb\";\n}\n\n.fa-strikethrough:before {\n  content: \"\\f0cc\";\n}\n\n.fa-underline:before {\n  content: \"\\f0cd\";\n}\n\n.fa-table:before {\n  content: \"\\f0ce\";\n}\n\n.fa-magic:before {\n  content: \"\\f0d0\";\n}\n\n.fa-truck:before {\n  content: \"\\f0d1\";\n}\n\n.fa-pinterest:before {\n  content: \"\\f0d2\";\n}\n\n.fa-pinterest-square:before {\n  content: \"\\f0d3\";\n}\n\n.fa-google-plus-square:before {\n  content: \"\\f0d4\";\n}\n\n.fa-google-plus:before {\n  content: \"\\f0d5\";\n}\n\n.fa-money:before {\n  content: \"\\f0d6\";\n}\n\n.fa-caret-down:before {\n  content: \"\\f0d7\";\n}\n\n.fa-caret-up:before {\n  content: \"\\f0d8\";\n}\n\n.fa-caret-left:before {\n  content: \"\\f0d9\";\n}\n\n.fa-caret-right:before {\n  content: \"\\f0da\";\n}\n\n.fa-columns:before {\n  content: \"\\f0db\";\n}\n\n.fa-unsorted:before,\n.fa-sort:before {\n  content: \"\\f0dc\";\n}\n\n.fa-sort-down:before,\n.fa-sort-desc:before {\n  content: \"\\f0dd\";\n}\n\n.fa-sort-up:before,\n.fa-sort-asc:before {\n  content: \"\\f0de\";\n}\n\n.fa-envelope:before {\n  content: \"\\f0e0\";\n}\n\n.fa-linkedin:before {\n  content: \"\\f0e1\";\n}\n\n.fa-rotate-left:before,\n.fa-undo:before {\n  content: \"\\f0e2\";\n}\n\n.fa-legal:before,\n.fa-gavel:before {\n  content: \"\\f0e3\";\n}\n\n.fa-dashboard:before,\n.fa-tachometer:before {\n  content: \"\\f0e4\";\n}\n\n.fa-comment-o:before {\n  content: \"\\f0e5\";\n}\n\n.fa-comments-o:before {\n  content: \"\\f0e6\";\n}\n\n.fa-flash:before,\n.fa-bolt:before {\n  content: \"\\f0e7\";\n}\n\n.fa-sitemap:before {\n  content: \"\\f0e8\";\n}\n\n.fa-umbrella:before {\n  content: \"\\f0e9\";\n}\n\n.fa-paste:before,\n.fa-clipboard:before {\n  content: \"\\f0ea\";\n}\n\n.fa-lightbulb-o:before {\n  content: \"\\f0eb\";\n}\n\n.fa-exchange:before {\n  content: \"\\f0ec\";\n}\n\n.fa-cloud-download:before {\n  content: \"\\f0ed\";\n}\n\n.fa-cloud-upload:before {\n  content: \"\\f0ee\";\n}\n\n.fa-user-md:before {\n  content: \"\\f0f0\";\n}\n\n.fa-stethoscope:before {\n  content: \"\\f0f1\";\n}\n\n.fa-suitcase:before {\n  content: \"\\f0f2\";\n}\n\n.fa-bell-o:before {\n  content: \"\\f0a2\";\n}\n\n.fa-coffee:before {\n  content: \"\\f0f4\";\n}\n\n.fa-cutlery:before {\n  content: \"\\f0f5\";\n}\n\n.fa-file-text-o:before {\n  content: \"\\f0f6\";\n}\n\n.fa-building-o:before {\n  content: \"\\f0f7\";\n}\n\n.fa-hospital-o:before {\n  content: \"\\f0f8\";\n}\n\n.fa-ambulance:before {\n  content: \"\\f0f9\";\n}\n\n.fa-medkit:before {\n  content: \"\\f0fa\";\n}\n\n.fa-fighter-jet:before {\n  content: \"\\f0fb\";\n}\n\n.fa-beer:before {\n  content: \"\\f0fc\";\n}\n\n.fa-h-square:before {\n  content: \"\\f0fd\";\n}\n\n.fa-plus-square:before {\n  content: \"\\f0fe\";\n}\n\n.fa-angle-double-left:before {\n  content: \"\\f100\";\n}\n\n.fa-angle-double-right:before {\n  content: \"\\f101\";\n}\n\n.fa-angle-double-up:before {\n  content: \"\\f102\";\n}\n\n.fa-angle-double-down:before {\n  content: \"\\f103\";\n}\n\n.fa-angle-left:before {\n  content: \"\\f104\";\n}\n\n.fa-angle-right:before {\n  content: \"\\f105\";\n}\n\n.fa-angle-up:before {\n  content: \"\\f106\";\n}\n\n.fa-angle-down:before {\n  content: \"\\f107\";\n}\n\n.fa-desktop:before {\n  content: \"\\f108\";\n}\n\n.fa-laptop:before {\n  content: \"\\f109\";\n}\n\n.fa-tablet:before {\n  content: \"\\f10a\";\n}\n\n.fa-mobile-phone:before,\n.fa-mobile:before {\n  content: \"\\f10b\";\n}\n\n.fa-circle-o:before {\n  content: \"\\f10c\";\n}\n\n.fa-quote-left:before {\n  content: \"\\f10d\";\n}\n\n.fa-quote-right:before {\n  content: \"\\f10e\";\n}\n\n.fa-spinner:before {\n  content: \"\\f110\";\n}\n\n.fa-circle:before {\n  content: \"\\f111\";\n}\n\n.fa-mail-reply:before,\n.fa-reply:before {\n  content: \"\\f112\";\n}\n\n.fa-github-alt:before {\n  content: \"\\f113\";\n}\n\n.fa-folder-o:before {\n  content: \"\\f114\";\n}\n\n.fa-folder-open-o:before {\n  content: \"\\f115\";\n}\n\n.fa-smile-o:before {\n  content: \"\\f118\";\n}\n\n.fa-frown-o:before {\n  content: \"\\f119\";\n}\n\n.fa-meh-o:before {\n  content: \"\\f11a\";\n}\n\n.fa-gamepad:before {\n  content: \"\\f11b\";\n}\n\n.fa-keyboard-o:before {\n  content: \"\\f11c\";\n}\n\n.fa-flag-o:before {\n  content: \"\\f11d\";\n}\n\n.fa-flag-checkered:before {\n  content: \"\\f11e\";\n}\n\n.fa-terminal:before {\n  content: \"\\f120\";\n}\n\n.fa-code:before {\n  content: \"\\f121\";\n}\n\n.fa-mail-reply-all:before,\n.fa-reply-all:before {\n  content: \"\\f122\";\n}\n\n.fa-star-half-empty:before,\n.fa-star-half-full:before,\n.fa-star-half-o:before {\n  content: \"\\f123\";\n}\n\n.fa-location-arrow:before {\n  content: \"\\f124\";\n}\n\n.fa-crop:before {\n  content: \"\\f125\";\n}\n\n.fa-code-fork:before {\n  content: \"\\f126\";\n}\n\n.fa-unlink:before,\n.fa-chain-broken:before {\n  content: \"\\f127\";\n}\n\n.fa-question:before {\n  content: \"\\f128\";\n}\n\n.fa-info:before {\n  content: \"\\f129\";\n}\n\n.fa-exclamation:before {\n  content: \"\\f12a\";\n}\n\n.fa-superscript:before {\n  content: \"\\f12b\";\n}\n\n.fa-subscript:before {\n  content: \"\\f12c\";\n}\n\n.fa-eraser:before {\n  content: \"\\f12d\";\n}\n\n.fa-puzzle-piece:before {\n  content: \"\\f12e\";\n}\n\n.fa-microphone:before {\n  content: \"\\f130\";\n}\n\n.fa-microphone-slash:before {\n  content: \"\\f131\";\n}\n\n.fa-shield:before {\n  content: \"\\f132\";\n}\n\n.fa-calendar-o:before {\n  content: \"\\f133\";\n}\n\n.fa-fire-extinguisher:before {\n  content: \"\\f134\";\n}\n\n.fa-rocket:before {\n  content: \"\\f135\";\n}\n\n.fa-maxcdn:before {\n  content: \"\\f136\";\n}\n\n.fa-chevron-circle-left:before {\n  content: \"\\f137\";\n}\n\n.fa-chevron-circle-right:before {\n  content: \"\\f138\";\n}\n\n.fa-chevron-circle-up:before {\n  content: \"\\f139\";\n}\n\n.fa-chevron-circle-down:before {\n  content: \"\\f13a\";\n}\n\n.fa-html5:before {\n  content: \"\\f13b\";\n}\n\n.fa-css3:before {\n  content: \"\\f13c\";\n}\n\n.fa-anchor:before {\n  content: \"\\f13d\";\n}\n\n.fa-unlock-alt:before {\n  content: \"\\f13e\";\n}\n\n.fa-bullseye:before {\n  content: \"\\f140\";\n}\n\n.fa-ellipsis-h:before {\n  content: \"\\f141\";\n}\n\n.fa-ellipsis-v:before {\n  content: \"\\f142\";\n}\n\n.fa-rss-square:before {\n  content: \"\\f143\";\n}\n\n.fa-play-circle:before {\n  content: \"\\f144\";\n}\n\n.fa-ticket:before {\n  content: \"\\f145\";\n}\n\n.fa-minus-square:before {\n  content: \"\\f146\";\n}\n\n.fa-minus-square-o:before {\n  content: \"\\f147\";\n}\n\n.fa-level-up:before {\n  content: \"\\f148\";\n}\n\n.fa-level-down:before {\n  content: \"\\f149\";\n}\n\n.fa-check-square:before {\n  content: \"\\f14a\";\n}\n\n.fa-pencil-square:before {\n  content: \"\\f14b\";\n}\n\n.fa-external-link-square:before {\n  content: \"\\f14c\";\n}\n\n.fa-share-square:before {\n  content: \"\\f14d\";\n}\n\n.fa-compass:before {\n  content: \"\\f14e\";\n}\n\n.fa-toggle-down:before,\n.fa-caret-square-o-down:before {\n  content: \"\\f150\";\n}\n\n.fa-toggle-up:before,\n.fa-caret-square-o-up:before {\n  content: \"\\f151\";\n}\n\n.fa-toggle-right:before,\n.fa-caret-square-o-right:before {\n  content: \"\\f152\";\n}\n\n.fa-euro:before,\n.fa-eur:before {\n  content: \"\\f153\";\n}\n\n.fa-gbp:before {\n  content: \"\\f154\";\n}\n\n.fa-dollar:before,\n.fa-usd:before {\n  content: \"\\f155\";\n}\n\n.fa-rupee:before,\n.fa-inr:before {\n  content: \"\\f156\";\n}\n\n.fa-cny:before,\n.fa-rmb:before,\n.fa-yen:before,\n.fa-jpy:before {\n  content: \"\\f157\";\n}\n\n.fa-ruble:before,\n.fa-rouble:before,\n.fa-rub:before {\n  content: \"\\f158\";\n}\n\n.fa-won:before,\n.fa-krw:before {\n  content: \"\\f159\";\n}\n\n.fa-bitcoin:before,\n.fa-btc:before {\n  content: \"\\f15a\";\n}\n\n.fa-file:before {\n  content: \"\\f15b\";\n}\n\n.fa-file-text:before {\n  content: \"\\f15c\";\n}\n\n.fa-sort-alpha-asc:before {\n  content: \"\\f15d\";\n}\n\n.fa-sort-alpha-desc:before {\n  content: \"\\f15e\";\n}\n\n.fa-sort-amount-asc:before {\n  content: \"\\f160\";\n}\n\n.fa-sort-amount-desc:before {\n  content: \"\\f161\";\n}\n\n.fa-sort-numeric-asc:before {\n  content: \"\\f162\";\n}\n\n.fa-sort-numeric-desc:before {\n  content: \"\\f163\";\n}\n\n.fa-thumbs-up:before {\n  content: \"\\f164\";\n}\n\n.fa-thumbs-down:before {\n  content: \"\\f165\";\n}\n\n.fa-youtube-square:before {\n  content: \"\\f166\";\n}\n\n.fa-youtube:before {\n  content: \"\\f167\";\n}\n\n.fa-xing:before {\n  content: \"\\f168\";\n}\n\n.fa-xing-square:before {\n  content: \"\\f169\";\n}\n\n.fa-youtube-play:before {\n  content: \"\\f16a\";\n}\n\n.fa-dropbox:before {\n  content: \"\\f16b\";\n}\n\n.fa-stack-overflow:before {\n  content: \"\\f16c\";\n}\n\n.fa-instagram:before {\n  content: \"\\f16d\";\n}\n\n.fa-flickr:before {\n  content: \"\\f16e\";\n}\n\n.fa-adn:before {\n  content: \"\\f170\";\n}\n\n.fa-bitbucket:before {\n  content: \"\\f171\";\n}\n\n.fa-bitbucket-square:before {\n  content: \"\\f172\";\n}\n\n.fa-tumblr:before {\n  content: \"\\f173\";\n}\n\n.fa-tumblr-square:before {\n  content: \"\\f174\";\n}\n\n.fa-long-arrow-down:before {\n  content: \"\\f175\";\n}\n\n.fa-long-arrow-up:before {\n  content: \"\\f176\";\n}\n\n.fa-long-arrow-left:before {\n  content: \"\\f177\";\n}\n\n.fa-long-arrow-right:before {\n  content: \"\\f178\";\n}\n\n.fa-apple:before {\n  content: \"\\f179\";\n}\n\n.fa-windows:before {\n  content: \"\\f17a\";\n}\n\n.fa-android:before {\n  content: \"\\f17b\";\n}\n\n.fa-linux:before {\n  content: \"\\f17c\";\n}\n\n.fa-dribbble:before {\n  content: \"\\f17d\";\n}\n\n.fa-skype:before {\n  content: \"\\f17e\";\n}\n\n.fa-foursquare:before {\n  content: \"\\f180\";\n}\n\n.fa-trello:before {\n  content: \"\\f181\";\n}\n\n.fa-female:before {\n  content: \"\\f182\";\n}\n\n.fa-male:before {\n  content: \"\\f183\";\n}\n\n.fa-gittip:before,\n.fa-gratipay:before {\n  content: \"\\f184\";\n}\n\n.fa-sun-o:before {\n  content: \"\\f185\";\n}\n\n.fa-moon-o:before {\n  content: \"\\f186\";\n}\n\n.fa-archive:before {\n  content: \"\\f187\";\n}\n\n.fa-bug:before {\n  content: \"\\f188\";\n}\n\n.fa-vk:before {\n  content: \"\\f189\";\n}\n\n.fa-weibo:before {\n  content: \"\\f18a\";\n}\n\n.fa-renren:before {\n  content: \"\\f18b\";\n}\n\n.fa-pagelines:before {\n  content: \"\\f18c\";\n}\n\n.fa-stack-exchange:before {\n  content: \"\\f18d\";\n}\n\n.fa-arrow-circle-o-right:before {\n  content: \"\\f18e\";\n}\n\n.fa-arrow-circle-o-left:before {\n  content: \"\\f190\";\n}\n\n.fa-toggle-left:before,\n.fa-caret-square-o-left:before {\n  content: \"\\f191\";\n}\n\n.fa-dot-circle-o:before {\n  content: \"\\f192\";\n}\n\n.fa-wheelchair:before {\n  content: \"\\f193\";\n}\n\n.fa-vimeo-square:before {\n  content: \"\\f194\";\n}\n\n.fa-turkish-lira:before,\n.fa-try:before {\n  content: \"\\f195\";\n}\n\n.fa-plus-square-o:before {\n  content: \"\\f196\";\n}\n\n.fa-space-shuttle:before {\n  content: \"\\f197\";\n}\n\n.fa-slack:before {\n  content: \"\\f198\";\n}\n\n.fa-envelope-square:before {\n  content: \"\\f199\";\n}\n\n.fa-wordpress:before {\n  content: \"\\f19a\";\n}\n\n.fa-openid:before {\n  content: \"\\f19b\";\n}\n\n.fa-institution:before,\n.fa-bank:before,\n.fa-university:before {\n  content: \"\\f19c\";\n}\n\n.fa-mortar-board:before,\n.fa-graduation-cap:before {\n  content: \"\\f19d\";\n}\n\n.fa-yahoo:before {\n  content: \"\\f19e\";\n}\n\n.fa-google:before {\n  content: \"\\f1a0\";\n}\n\n.fa-reddit:before {\n  content: \"\\f1a1\";\n}\n\n.fa-reddit-square:before {\n  content: \"\\f1a2\";\n}\n\n.fa-stumbleupon-circle:before {\n  content: \"\\f1a3\";\n}\n\n.fa-stumbleupon:before {\n  content: \"\\f1a4\";\n}\n\n.fa-delicious:before {\n  content: \"\\f1a5\";\n}\n\n.fa-digg:before {\n  content: \"\\f1a6\";\n}\n\n.fa-pied-piper:before {\n  content: \"\\f1a7\";\n}\n\n.fa-pied-piper-alt:before {\n  content: \"\\f1a8\";\n}\n\n.fa-drupal:before {\n  content: \"\\f1a9\";\n}\n\n.fa-joomla:before {\n  content: \"\\f1aa\";\n}\n\n.fa-language:before {\n  content: \"\\f1ab\";\n}\n\n.fa-fax:before {\n  content: \"\\f1ac\";\n}\n\n.fa-building:before {\n  content: \"\\f1ad\";\n}\n\n.fa-child:before {\n  content: \"\\f1ae\";\n}\n\n.fa-paw:before {\n  content: \"\\f1b0\";\n}\n\n.fa-spoon:before {\n  content: \"\\f1b1\";\n}\n\n.fa-cube:before {\n  content: \"\\f1b2\";\n}\n\n.fa-cubes:before {\n  content: \"\\f1b3\";\n}\n\n.fa-behance:before {\n  content: \"\\f1b4\";\n}\n\n.fa-behance-square:before {\n  content: \"\\f1b5\";\n}\n\n.fa-steam:before {\n  content: \"\\f1b6\";\n}\n\n.fa-steam-square:before {\n  content: \"\\f1b7\";\n}\n\n.fa-recycle:before {\n  content: \"\\f1b8\";\n}\n\n.fa-automobile:before,\n.fa-car:before {\n  content: \"\\f1b9\";\n}\n\n.fa-cab:before,\n.fa-taxi:before {\n  content: \"\\f1ba\";\n}\n\n.fa-tree:before {\n  content: \"\\f1bb\";\n}\n\n.fa-spotify:before {\n  content: \"\\f1bc\";\n}\n\n.fa-deviantart:before {\n  content: \"\\f1bd\";\n}\n\n.fa-soundcloud:before {\n  content: \"\\f1be\";\n}\n\n.fa-database:before {\n  content: \"\\f1c0\";\n}\n\n.fa-file-pdf-o:before {\n  content: \"\\f1c1\";\n}\n\n.fa-file-word-o:before {\n  content: \"\\f1c2\";\n}\n\n.fa-file-excel-o:before {\n  content: \"\\f1c3\";\n}\n\n.fa-file-powerpoint-o:before {\n  content: \"\\f1c4\";\n}\n\n.fa-file-photo-o:before,\n.fa-file-picture-o:before,\n.fa-file-image-o:before {\n  content: \"\\f1c5\";\n}\n\n.fa-file-zip-o:before,\n.fa-file-archive-o:before {\n  content: \"\\f1c6\";\n}\n\n.fa-file-sound-o:before,\n.fa-file-audio-o:before {\n  content: \"\\f1c7\";\n}\n\n.fa-file-movie-o:before,\n.fa-file-video-o:before {\n  content: \"\\f1c8\";\n}\n\n.fa-file-code-o:before {\n  content: \"\\f1c9\";\n}\n\n.fa-vine:before {\n  content: \"\\f1ca\";\n}\n\n.fa-codepen:before {\n  content: \"\\f1cb\";\n}\n\n.fa-jsfiddle:before {\n  content: \"\\f1cc\";\n}\n\n.fa-life-bouy:before,\n.fa-life-buoy:before,\n.fa-life-saver:before,\n.fa-support:before,\n.fa-life-ring:before {\n  content: \"\\f1cd\";\n}\n\n.fa-circle-o-notch:before {\n  content: \"\\f1ce\";\n}\n\n.fa-ra:before,\n.fa-rebel:before {\n  content: \"\\f1d0\";\n}\n\n.fa-ge:before,\n.fa-empire:before {\n  content: \"\\f1d1\";\n}\n\n.fa-git-square:before {\n  content: \"\\f1d2\";\n}\n\n.fa-git:before {\n  content: \"\\f1d3\";\n}\n\n.fa-hacker-news:before {\n  content: \"\\f1d4\";\n}\n\n.fa-tencent-weibo:before {\n  content: \"\\f1d5\";\n}\n\n.fa-qq:before {\n  content: \"\\f1d6\";\n}\n\n.fa-wechat:before,\n.fa-weixin:before {\n  content: \"\\f1d7\";\n}\n\n.fa-send:before,\n.fa-paper-plane:before {\n  content: \"\\f1d8\";\n}\n\n.fa-send-o:before,\n.fa-paper-plane-o:before {\n  content: \"\\f1d9\";\n}\n\n.fa-history:before {\n  content: \"\\f1da\";\n}\n\n.fa-genderless:before,\n.fa-circle-thin:before {\n  content: \"\\f1db\";\n}\n\n.fa-header:before {\n  content: \"\\f1dc\";\n}\n\n.fa-paragraph:before {\n  content: \"\\f1dd\";\n}\n\n.fa-sliders:before {\n  content: \"\\f1de\";\n}\n\n.fa-share-alt:before {\n  content: \"\\f1e0\";\n}\n\n.fa-share-alt-square:before {\n  content: \"\\f1e1\";\n}\n\n.fa-bomb:before {\n  content: \"\\f1e2\";\n}\n\n.fa-soccer-ball-o:before,\n.fa-futbol-o:before {\n  content: \"\\f1e3\";\n}\n\n.fa-tty:before {\n  content: \"\\f1e4\";\n}\n\n.fa-binoculars:before {\n  content: \"\\f1e5\";\n}\n\n.fa-plug:before {\n  content: \"\\f1e6\";\n}\n\n.fa-slideshare:before {\n  content: \"\\f1e7\";\n}\n\n.fa-twitch:before {\n  content: \"\\f1e8\";\n}\n\n.fa-yelp:before {\n  content: \"\\f1e9\";\n}\n\n.fa-newspaper-o:before {\n  content: \"\\f1ea\";\n}\n\n.fa-wifi:before {\n  content: \"\\f1eb\";\n}\n\n.fa-calculator:before {\n  content: \"\\f1ec\";\n}\n\n.fa-paypal:before {\n  content: \"\\f1ed\";\n}\n\n.fa-google-wallet:before {\n  content: \"\\f1ee\";\n}\n\n.fa-cc-visa:before {\n  content: \"\\f1f0\";\n}\n\n.fa-cc-mastercard:before {\n  content: \"\\f1f1\";\n}\n\n.fa-cc-discover:before {\n  content: \"\\f1f2\";\n}\n\n.fa-cc-amex:before {\n  content: \"\\f1f3\";\n}\n\n.fa-cc-paypal:before {\n  content: \"\\f1f4\";\n}\n\n.fa-cc-stripe:before {\n  content: \"\\f1f5\";\n}\n\n.fa-bell-slash:before {\n  content: \"\\f1f6\";\n}\n\n.fa-bell-slash-o:before {\n  content: \"\\f1f7\";\n}\n\n.fa-trash:before {\n  content: \"\\f1f8\";\n}\n\n.fa-copyright:before {\n  content: \"\\f1f9\";\n}\n\n.fa-at:before {\n  content: \"\\f1fa\";\n}\n\n.fa-eyedropper:before {\n  content: \"\\f1fb\";\n}\n\n.fa-paint-brush:before {\n  content: \"\\f1fc\";\n}\n\n.fa-birthday-cake:before {\n  content: \"\\f1fd\";\n}\n\n.fa-area-chart:before {\n  content: \"\\f1fe\";\n}\n\n.fa-pie-chart:before {\n  content: \"\\f200\";\n}\n\n.fa-line-chart:before {\n  content: \"\\f201\";\n}\n\n.fa-lastfm:before {\n  content: \"\\f202\";\n}\n\n.fa-lastfm-square:before {\n  content: \"\\f203\";\n}\n\n.fa-toggle-off:before {\n  content: \"\\f204\";\n}\n\n.fa-toggle-on:before {\n  content: \"\\f205\";\n}\n\n.fa-bicycle:before {\n  content: \"\\f206\";\n}\n\n.fa-bus:before {\n  content: \"\\f207\";\n}\n\n.fa-ioxhost:before {\n  content: \"\\f208\";\n}\n\n.fa-angellist:before {\n  content: \"\\f209\";\n}\n\n.fa-cc:before {\n  content: \"\\f20a\";\n}\n\n.fa-shekel:before,\n.fa-sheqel:before,\n.fa-ils:before {\n  content: \"\\f20b\";\n}\n\n.fa-meanpath:before {\n  content: \"\\f20c\";\n}\n\n.fa-buysellads:before {\n  content: \"\\f20d\";\n}\n\n.fa-connectdevelop:before {\n  content: \"\\f20e\";\n}\n\n.fa-dashcube:before {\n  content: \"\\f210\";\n}\n\n.fa-forumbee:before {\n  content: \"\\f211\";\n}\n\n.fa-leanpub:before {\n  content: \"\\f212\";\n}\n\n.fa-sellsy:before {\n  content: \"\\f213\";\n}\n\n.fa-shirtsinbulk:before {\n  content: \"\\f214\";\n}\n\n.fa-simplybuilt:before {\n  content: \"\\f215\";\n}\n\n.fa-skyatlas:before {\n  content: \"\\f216\";\n}\n\n.fa-cart-plus:before {\n  content: \"\\f217\";\n}\n\n.fa-cart-arrow-down:before {\n  content: \"\\f218\";\n}\n\n.fa-diamond:before {\n  content: \"\\f219\";\n}\n\n.fa-ship:before {\n  content: \"\\f21a\";\n}\n\n.fa-user-secret:before {\n  content: \"\\f21b\";\n}\n\n.fa-motorcycle:before {\n  content: \"\\f21c\";\n}\n\n.fa-street-view:before {\n  content: \"\\f21d\";\n}\n\n.fa-heartbeat:before {\n  content: \"\\f21e\";\n}\n\n.fa-venus:before {\n  content: \"\\f221\";\n}\n\n.fa-mars:before {\n  content: \"\\f222\";\n}\n\n.fa-mercury:before {\n  content: \"\\f223\";\n}\n\n.fa-transgender:before {\n  content: \"\\f224\";\n}\n\n.fa-transgender-alt:before {\n  content: \"\\f225\";\n}\n\n.fa-venus-double:before {\n  content: \"\\f226\";\n}\n\n.fa-mars-double:before {\n  content: \"\\f227\";\n}\n\n.fa-venus-mars:before {\n  content: \"\\f228\";\n}\n\n.fa-mars-stroke:before {\n  content: \"\\f229\";\n}\n\n.fa-mars-stroke-v:before {\n  content: \"\\f22a\";\n}\n\n.fa-mars-stroke-h:before {\n  content: \"\\f22b\";\n}\n\n.fa-neuter:before {\n  content: \"\\f22c\";\n}\n\n.fa-facebook-official:before {\n  content: \"\\f230\";\n}\n\n.fa-pinterest-p:before {\n  content: \"\\f231\";\n}\n\n.fa-whatsapp:before {\n  content: \"\\f232\";\n}\n\n.fa-server:before {\n  content: \"\\f233\";\n}\n\n.fa-user-plus:before {\n  content: \"\\f234\";\n}\n\n.fa-user-times:before {\n  content: \"\\f235\";\n}\n\n.fa-hotel:before,\n.fa-bed:before {\n  content: \"\\f236\";\n}\n\n.fa-viacoin:before {\n  content: \"\\f237\";\n}\n\n.fa-train:before {\n  content: \"\\f238\";\n}\n\n.fa-subway:before {\n  content: \"\\f239\";\n}\n\n.fa-medium:before {\n  content: \"\\f23a\";\n}\n\n/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */\n@font-face {\n  font-family: 'editormd-logo';\n  src: url(\"../fonts/editormd-logo.eot?-5y8q6h\");\n  src: url(\".../fonts/editormd-logo.eot?#iefix-5y8q6h\") format(\"embedded-opentype\"), url(\"../fonts/editormd-logo.woff?-5y8q6h\") format(\"woff\"), url(\"../fonts/editormd-logo.ttf?-5y8q6h\") format(\"truetype\"), url(\"../fonts/editormd-logo.svg?-5y8q6h#icomoon\") format(\"svg\");\n  font-weight: normal;\n  font-style: normal;\n}\n.editormd-logo,\n.editormd-logo-1x,\n.editormd-logo-2x,\n.editormd-logo-3x,\n.editormd-logo-4x,\n.editormd-logo-5x,\n.editormd-logo-6x,\n.editormd-logo-7x,\n.editormd-logo-8x {\n  font-family: 'editormd-logo';\n  speak: none;\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  font-size: inherit;\n  line-height: 1;\n  display: inline-block;\n  text-rendering: auto;\n  vertical-align: inherit;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.editormd-logo:before,\n.editormd-logo-1x:before,\n.editormd-logo-2x:before,\n.editormd-logo-3x:before,\n.editormd-logo-4x:before,\n.editormd-logo-5x:before,\n.editormd-logo-6x:before,\n.editormd-logo-7x:before,\n.editormd-logo-8x:before {\n  content: \"\\e1987\";\n  /* \n  HTML Entity &#xe1987; \n  example: <span class=\"editormd-logo\">&#xe1987;</span>\n  */\n}\n\n.editormd-logo-1x {\n  font-size: 1em;\n}\n\n.editormd-logo-lg {\n  font-size: 1.2em;\n}\n\n.editormd-logo-2x {\n  font-size: 2em;\n}\n\n.editormd-logo-3x {\n  font-size: 3em;\n}\n\n.editormd-logo-4x {\n  font-size: 4em;\n}\n\n.editormd-logo-5x {\n  font-size: 5em;\n}\n\n.editormd-logo-6x {\n  font-size: 6em;\n}\n\n.editormd-logo-7x {\n  font-size: 7em;\n}\n\n.editormd-logo-8x {\n  font-size: 8em;\n}\n\n.editormd-logo-color {\n  color: #2196F3;\n}\n\n/*! github-markdown-css | The MIT License (MIT) | Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) | https://github.com/sindresorhus/github-markdown-css */\n@font-face {\n  font-family: octicons-anchor;\n  src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAYcAA0AAAAACjQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABwAAAAca8vGTk9TLzIAAAFMAAAARAAAAFZG1VHVY21hcAAAAZAAAAA+AAABQgAP9AdjdnQgAAAB0AAAAAQAAAAEACICiGdhc3AAAAHUAAAACAAAAAj//wADZ2x5ZgAAAdwAAADRAAABEKyikaNoZWFkAAACsAAAAC0AAAA2AtXoA2hoZWEAAALgAAAAHAAAACQHngNFaG10eAAAAvwAAAAQAAAAEAwAACJsb2NhAAADDAAAAAoAAAAKALIAVG1heHAAAAMYAAAAHwAAACABEAB2bmFtZQAAAzgAAALBAAAFu3I9x/Nwb3N0AAAF/AAAAB0AAAAvaoFvbwAAAAEAAAAAzBdyYwAAAADP2IQvAAAAAM/bz7t4nGNgZGFgnMDAysDB1Ml0hoGBoR9CM75mMGLkYGBgYmBlZsAKAtJcUxgcPsR8iGF2+O/AEMPsznAYKMwIkgMA5REMOXicY2BgYGaAYBkGRgYQsAHyGMF8FgYFIM0ChED+h5j//yEk/3KoSgZGNgYYk4GRCUgwMaACRoZhDwCs7QgGAAAAIgKIAAAAAf//AAJ4nHWMMQrCQBBF/0zWrCCIKUQsTDCL2EXMohYGSSmorScInsRGL2DOYJe0Ntp7BK+gJ1BxF1stZvjz/v8DRghQzEc4kIgKwiAppcA9LtzKLSkdNhKFY3HF4lK69ExKslx7Xa+vPRVS43G98vG1DnkDMIBUgFN0MDXflU8tbaZOUkXUH0+U27RoRpOIyCKjbMCVejwypzJJG4jIwb43rfl6wbwanocrJm9XFYfskuVC5K/TPyczNU7b84CXcbxks1Un6H6tLH9vf2LRnn8Ax7A5WQAAAHicY2BkYGAA4teL1+yI57f5ysDNwgAC529f0kOmWRiYVgEpDgYmEA8AUzEKsQAAAHicY2BkYGB2+O/AEMPCAAJAkpEBFbAAADgKAe0EAAAiAAAAAAQAAAAEAAAAAAAAKgAqACoAiAAAeJxjYGRgYGBhsGFgYgABEMkFhAwM/xn0QAIAD6YBhwB4nI1Ty07cMBS9QwKlQapQW3VXySvEqDCZGbGaHULiIQ1FKgjWMxknMfLEke2A+IJu+wntrt/QbVf9gG75jK577Lg8K1qQPCfnnnt8fX1NRC/pmjrk/zprC+8D7tBy9DHgBXoWfQ44Av8t4Bj4Z8CLtBL9CniJluPXASf0Lm4CXqFX8Q84dOLnMB17N4c7tBo1AS/Qi+hTwBH4rwHHwN8DXqQ30XXAS7QaLwSc0Gn8NuAVWou/gFmnjLrEaEh9GmDdDGgL3B4JsrRPDU2hTOiMSuJUIdKQQayiAth69r6akSSFqIJuA19TrzCIaY8sIoxyrNIrL//pw7A2iMygkX5vDj+G+kuoLdX4GlGK/8Lnlz6/h9MpmoO9rafrz7ILXEHHaAx95s9lsI7AHNMBWEZHULnfAXwG9/ZqdzLI08iuwRloXE8kfhXYAvE23+23DU3t626rbs8/8adv+9DWknsHp3E17oCf+Z48rvEQNZ78paYM38qfk3v/u3l3u3GXN2Dmvmvpf1Srwk3pB/VSsp512bA/GG5i2WJ7wu430yQ5K3nFGiOqgtmSB5pJVSizwaacmUZzZhXLlZTq8qGGFY2YcSkqbth6aW1tRmlaCFs2016m5qn36SbJrqosG4uMV4aP2PHBmB3tjtmgN2izkGQyLWprekbIntJFing32a5rKWCN/SdSoga45EJykyQ7asZvHQ8PTm6cslIpwyeyjbVltNikc2HTR7YKh9LBl9DADC0U/jLcBZDKrMhUBfQBvXRzLtFtjU9eNHKin0x5InTqb8lNpfKv1s1xHzTXRqgKzek/mb7nB8RZTCDhGEX3kK/8Q75AmUM/eLkfA+0Hi908Kx4eNsMgudg5GLdRD7a84npi+YxNr5i5KIbW5izXas7cHXIMAau1OueZhfj+cOcP3P8MNIWLyYOBuxL6DRylJ4cAAAB4nGNgYoAALjDJyIAOWMCiTIxMLDmZedkABtIBygAAAA==) format(\"woff\");\n}\n.markdown-body {\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n  color: #333;\n  overflow: hidden;\n  font-family: \"Microsoft YaHei\", Helvetica, \"Meiryo UI\", \"Malgun Gothic\", \"Segoe UI\", \"Trebuchet MS\", \"Monaco\", monospace, Tahoma, STXihei, \"华文细黑\", STHeiti, \"Helvetica Neue\", \"Droid Sans\", \"wenquanyi micro hei\", FreeSans, Arimo, Arial, SimSun, \"宋体\", Heiti, \"黑体\", sans-serif;\n  font-size: 16px;\n  line-height: 1.6;\n  word-wrap: break-word;\n}\n\n.markdown-body a {\n  background: transparent;\n}\n\n.markdown-body a:active,\n.markdown-body a:hover {\n  outline: 0;\n}\n\n.markdown-body strong {\n  font-weight: bold;\n}\n\n.markdown-body h1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n.markdown-body img {\n  border: 0;\n}\n\n.markdown-body hr {\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\n\n.markdown-body pre {\n  overflow: auto;\n}\n\n.markdown-body code,\n.markdown-body kbd,\n.markdown-body pre {\n  font-family: \"Meiryo UI\", \"YaHei Consolas Hybrid\", Consolas, \"Malgun Gothic\", \"Segoe UI\", \"Trebuchet MS\", Helvetica, monospace, monospace;\n  font-size: 1em;\n}\n\n.markdown-body input {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\n\n.markdown-body html input[disabled] {\n  cursor: default;\n}\n\n.markdown-body input {\n  line-height: normal;\n}\n\n.markdown-body input[type=\"checkbox\"] {\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  padding: 0;\n}\n\n.markdown-body table {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\n.markdown-body td,\n.markdown-body th {\n  padding: 0;\n}\n\n.markdown-body * {\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n\n.markdown-body input {\n  font: 13px/1.4 Helvetica, arial, freesans, clean, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n}\n\n.markdown-body a {\n  color: #4183c4;\n  text-decoration: none;\n}\n\n.markdown-body a:hover,\n.markdown-body a:active {\n  text-decoration: underline;\n}\n\n.markdown-body hr {\n  height: 0;\n  margin: 15px 0;\n  overflow: hidden;\n  background: transparent;\n  border: 0;\n  border-bottom: 1px solid #ddd;\n}\n\n.markdown-body hr:before {\n  display: table;\n  content: \"\";\n}\n\n.markdown-body hr:after {\n  display: table;\n  clear: both;\n  content: \"\";\n}\n\n.markdown-body h1,\n.markdown-body h2,\n.markdown-body h3,\n.markdown-body h4,\n.markdown-body h5,\n.markdown-body h6 {\n  margin-top: 15px;\n  margin-bottom: 15px;\n  line-height: 1.1;\n}\n\n.markdown-body h1 {\n  font-size: 30px;\n}\n\n.markdown-body h2 {\n  font-size: 21px;\n}\n\n.markdown-body h3 {\n  font-size: 16px;\n}\n\n.markdown-body h4 {\n  font-size: 14px;\n}\n\n.markdown-body h5 {\n  font-size: 12px;\n}\n\n.markdown-body h6 {\n  font-size: 11px;\n}\n\n.markdown-body blockquote {\n  margin: 0;\n}\n\n.markdown-body ul,\n.markdown-body ol {\n  padding: 0;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n.markdown-body ol ol,\n.markdown-body ul ol {\n  list-style-type: lower-roman;\n}\n\n.markdown-body ul ul ol,\n.markdown-body ul ol ol,\n.markdown-body ol ul ol,\n.markdown-body ol ol ol {\n  list-style-type: lower-alpha;\n}\n\n.markdown-body dd {\n  margin-left: 0;\n}\n\n.markdown-body code {\n  font-family: Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n  font-size: 12px;\n}\n\n.markdown-body pre {\n  margin-top: 0;\n  margin-bottom: 0;\n  font: 12px Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n}\n\n.markdown-body .octicon {\n  font: normal normal 16px octicons-anchor;\n  line-height: 1;\n  display: inline-block;\n  text-decoration: none;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n\n.markdown-body .octicon-link:before {\n  content: '\\f05c';\n}\n\n.markdown-body > *:first-child {\n  margin-top: 0 !important;\n}\n\n.markdown-body > *:last-child {\n  margin-bottom: 0 !important;\n}\n\n.markdown-body .anchor {\n  position: absolute;\n  top: 0;\n  left: 0;\n  display: block;\n  padding-right: 6px;\n  padding-left: 30px;\n  margin-left: -30px;\n}\n\n.markdown-body .anchor:focus {\n  outline: none;\n}\n\n.markdown-body h1,\n.markdown-body h2,\n.markdown-body h3,\n.markdown-body h4,\n.markdown-body h5,\n.markdown-body h6 {\n  position: relative;\n  margin-top: 1em;\n  margin-bottom: 16px;\n  font-weight: bold;\n  line-height: 1.4;\n}\n\n.markdown-body h1 .octicon-link,\n.markdown-body h2 .octicon-link,\n.markdown-body h3 .octicon-link,\n.markdown-body h4 .octicon-link,\n.markdown-body h5 .octicon-link,\n.markdown-body h6 .octicon-link {\n  display: none;\n  color: #000;\n  vertical-align: middle;\n}\n\n.markdown-body h1:hover .anchor,\n.markdown-body h2:hover .anchor,\n.markdown-body h3:hover .anchor,\n.markdown-body h4:hover .anchor,\n.markdown-body h5:hover .anchor,\n.markdown-body h6:hover .anchor {\n  padding-left: 8px;\n  margin-left: -30px;\n  text-decoration: none;\n}\n\n.markdown-body h1:hover .anchor .octicon-link,\n.markdown-body h2:hover .anchor .octicon-link,\n.markdown-body h3:hover .anchor .octicon-link,\n.markdown-body h4:hover .anchor .octicon-link,\n.markdown-body h5:hover .anchor .octicon-link,\n.markdown-body h6:hover .anchor .octicon-link {\n  display: inline-block;\n}\n\n.markdown-body h1 {\n  padding-bottom: 0.3em;\n  font-size: 2.25em;\n  line-height: 1.2;\n  border-bottom: 1px solid #eee;\n}\n\n.markdown-body h1 .anchor {\n  line-height: 1;\n}\n\n.markdown-body h2 {\n  padding-bottom: 0.3em;\n  font-size: 1.75em;\n  line-height: 1.225;\n  border-bottom: 1px solid #eee;\n}\n\n.markdown-body h2 .anchor {\n  line-height: 1;\n}\n\n.markdown-body h3 {\n  font-size: 1.5em;\n  line-height: 1.43;\n}\n\n.markdown-body h3 .anchor {\n  line-height: 1.2;\n}\n\n.markdown-body h4 {\n  font-size: 1.25em;\n}\n\n.markdown-body h4 .anchor {\n  line-height: 1.2;\n}\n\n.markdown-body h5 {\n  font-size: 1em;\n}\n\n.markdown-body h5 .anchor {\n  line-height: 1.1;\n}\n\n.markdown-body h6 {\n  font-size: 1em;\n  color: #777;\n}\n\n.markdown-body h6 .anchor {\n  line-height: 1.1;\n}\n\n.markdown-body p,\n.markdown-body blockquote,\n.markdown-body ul,\n.markdown-body ol,\n.markdown-body dl,\n.markdown-body table,\n.markdown-body pre {\n  margin-top: 0;\n  margin-bottom: 16px;\n}\n\n/*\n.markdown-body hr {\n  height: 4px;\n  padding: 0;\n  margin: 16px 0;\n  background-color: #e7e7e7;\n  border: 0 none;\n}*/\n.markdown-body ul,\n.markdown-body ol {\n  padding-left: 2em;\n}\n\n.markdown-body ul ul,\n.markdown-body ul ol,\n.markdown-body ol ol,\n.markdown-body ol ul {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n.markdown-body li > p {\n  margin-top: 16px;\n}\n\n.markdown-body dl {\n  padding: 0;\n}\n\n.markdown-body dl dt {\n  padding: 0;\n  margin-top: 16px;\n  font-size: 1em;\n  font-style: italic;\n  font-weight: bold;\n}\n\n.markdown-body dl dd {\n  padding: 0 16px;\n  margin-bottom: 16px;\n}\n\n.markdown-body blockquote {\n  padding: 0 15px;\n  color: #777;\n  border-left: 4px solid #ddd;\n}\n\n.markdown-body blockquote > :first-child {\n  margin-top: 0;\n}\n\n.markdown-body blockquote > :last-child {\n  margin-bottom: 0;\n}\n\n.markdown-body table {\n  display: block;\n  width: 100%;\n  overflow: auto;\n  word-break: normal;\n  word-break: keep-all;\n}\n\n.markdown-body table th {\n  font-weight: bold;\n}\n\n.markdown-body table th,\n.markdown-body table td {\n  padding: 6px 13px;\n  border: 1px solid #ddd;\n}\n\n.markdown-body table tr {\n  background-color: #fff;\n  border-top: 1px solid #ccc;\n}\n\n.markdown-body table tr:nth-child(2n) {\n  background-color: #f8f8f8;\n}\n\n.markdown-body img {\n  max-width: 100%;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n\n.markdown-body code {\n  padding: 0;\n  padding-top: 0.2em;\n  padding-bottom: 0.2em;\n  margin: 0;\n  font-size: 85%;\n  background-color: rgba(0, 0, 0, 0.04);\n  border-radius: 3px;\n}\n\n.markdown-body code:before,\n.markdown-body code:after {\n  letter-spacing: -0.2em;\n  content: \"\\00a0\";\n}\n\n.markdown-body pre > code {\n  padding: 0;\n  margin: 0;\n  font-size: 100%;\n  word-break: normal;\n  white-space: pre;\n  background: transparent;\n  border: 0;\n}\n\n.markdown-body .highlight {\n  margin-bottom: 16px;\n}\n\n.markdown-body .highlight pre,\n.markdown-body pre {\n  padding: 16px;\n  overflow: auto;\n  font-size: 85%;\n  line-height: 1.45;\n  background-color: #f7f7f7;\n  border-radius: 3px;\n}\n\n.markdown-body .highlight pre {\n  margin-bottom: 0;\n  word-break: normal;\n}\n\n.markdown-body pre {\n  word-wrap: normal;\n}\n\n.markdown-body pre code {\n  display: inline;\n  max-width: initial;\n  padding: 0;\n  margin: 0;\n  overflow: initial;\n  line-height: inherit;\n  word-wrap: normal;\n  background-color: transparent;\n  border: 0;\n}\n\n.markdown-body pre code:before,\n.markdown-body pre code:after {\n  content: normal;\n}\n\n.markdown-body kbd {\n  display: inline-block;\n  padding: 3px 5px;\n  font-size: 11px;\n  line-height: 10px;\n  color: #555;\n  vertical-align: middle;\n  background-color: #fcfcfc;\n  border: solid 1px #ccc;\n  border-bottom-color: #bbb;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 #bbb;\n}\n\n.markdown-body .pl-c {\n  color: #969896;\n}\n\n.markdown-body .pl-c1,\n.markdown-body .pl-mdh,\n.markdown-body .pl-mm,\n.markdown-body .pl-mp,\n.markdown-body .pl-mr,\n.markdown-body .pl-s1 .pl-v,\n.markdown-body .pl-s3,\n.markdown-body .pl-sc,\n.markdown-body .pl-sv {\n  color: #0086b3;\n}\n\n.markdown-body .pl-e,\n.markdown-body .pl-en {\n  color: #795da3;\n}\n\n.markdown-body .pl-s1 .pl-s2,\n.markdown-body .pl-smi,\n.markdown-body .pl-smp,\n.markdown-body .pl-stj,\n.markdown-body .pl-vo,\n.markdown-body .pl-vpf {\n  color: #333;\n}\n\n.markdown-body .pl-ent {\n  color: #63a35c;\n}\n\n.markdown-body .pl-k,\n.markdown-body .pl-s,\n.markdown-body .pl-st {\n  color: #a71d5d;\n}\n\n.markdown-body .pl-pds,\n.markdown-body .pl-s1,\n.markdown-body .pl-s1 .pl-pse .pl-s2,\n.markdown-body .pl-sr,\n.markdown-body .pl-sr .pl-cce,\n.markdown-body .pl-sr .pl-sra,\n.markdown-body .pl-sr .pl-sre,\n.markdown-body .pl-src {\n  color: #df5000;\n}\n\n.markdown-body .pl-mo,\n.markdown-body .pl-v {\n  color: #1d3e81;\n}\n\n.markdown-body .pl-id {\n  color: #b52a1d;\n}\n\n.markdown-body .pl-ii {\n  background-color: #b52a1d;\n  color: #f8f8f8;\n}\n\n.markdown-body .pl-sr .pl-cce {\n  color: #63a35c;\n  font-weight: bold;\n}\n\n.markdown-body .pl-ml {\n  color: #693a17;\n}\n\n.markdown-body .pl-mh,\n.markdown-body .pl-mh .pl-en,\n.markdown-body .pl-ms {\n  color: #1d3e81;\n  font-weight: bold;\n}\n\n.markdown-body .pl-mq {\n  color: #008080;\n}\n\n.markdown-body .pl-mi {\n  color: #333;\n  font-style: italic;\n}\n\n.markdown-body .pl-mb {\n  color: #333;\n  font-weight: bold;\n}\n\n.markdown-body .pl-md,\n.markdown-body .pl-mdhf {\n  background-color: #ffecec;\n  color: #bd2c00;\n}\n\n.markdown-body .pl-mdht,\n.markdown-body .pl-mi1 {\n  background-color: #eaffea;\n  color: #55a532;\n}\n\n.markdown-body .pl-mdr {\n  color: #795da3;\n  font-weight: bold;\n}\n\n.markdown-body kbd {\n  display: inline-block;\n  padding: 3px 5px;\n  font: 11px Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n  line-height: 10px;\n  color: #555;\n  vertical-align: middle;\n  background-color: #fcfcfc;\n  border: solid 1px #ccc;\n  border-bottom-color: #bbb;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 #bbb;\n}\n\n.markdown-body .task-list-item {\n  list-style-type: none;\n}\n\n.markdown-body .task-list-item + .task-list-item {\n  margin-top: 3px;\n}\n\n.markdown-body .task-list-item input {\n  float: left;\n  margin: 0.3em 0 0.25em -1.6em;\n  vertical-align: middle;\n}\n\n.markdown-body :checked + .radio-label {\n  z-index: 1;\n  position: relative;\n  border-color: #4183c4;\n}\n\n.editormd-preview-container, .editormd-html-preview {\n  text-align: left;\n  font-size: 14px;\n  line-height: 1.6;\n  padding: 20px;\n  overflow: auto;\n  width: 100%;\n  background-color: #fff;\n}\n.editormd-preview-container blockquote, .editormd-html-preview blockquote {\n  color: #666;\n  border-left: 4px solid #ddd;\n  padding-left: 20px;\n  margin-left: 0;\n  font-size: 14px;\n  font-style: italic;\n}\n.editormd-preview-container p code, .editormd-html-preview p code {\n  margin-left: 5px;\n  margin-right: 4px;\n}\n.editormd-preview-container abbr, .editormd-html-preview abbr {\n  background: #ffffdd;\n}\n.editormd-preview-container hr, .editormd-html-preview hr {\n  height: 1px;\n  border: none;\n  border-top: 1px solid #ddd;\n  background: none;\n}\n.editormd-preview-container code, .editormd-html-preview code {\n  border: 1px solid #ddd;\n  background: #f6f6f6;\n  padding: 3px;\n  border-radius: 3px;\n  font-size: 14px;\n}\n.editormd-preview-container pre, .editormd-html-preview pre {\n  border: 1px solid #ddd;\n  background: #f6f6f6;\n  padding: 10px;\n  -webkit-border-radius: 3px;\n  -moz-border-radius: 3px;\n  -ms-border-radius: 3px;\n  -o-border-radius: 3px;\n  border-radius: 3px;\n}\n.editormd-preview-container pre code, .editormd-html-preview pre code {\n  padding: 0;\n}\n.editormd-preview-container pre, .editormd-preview-container code, .editormd-preview-container kbd, .editormd-html-preview pre, .editormd-html-preview code, .editormd-html-preview kbd {\n  font-family: \"YaHei Consolas Hybrid\", Consolas, \"Meiryo UI\", \"Malgun Gothic\", \"Segoe UI\", \"Trebuchet MS\", Helvetica, monospace, monospace;\n}\n.editormd-preview-container table thead tr, .editormd-html-preview table thead tr {\n  background-color: #F8F8F8;\n}\n.editormd-preview-container p.editormd-tex, .editormd-html-preview p.editormd-tex {\n  text-align: center;\n}\n.editormd-preview-container span.editormd-tex, .editormd-html-preview span.editormd-tex {\n  margin: 0 5px;\n}\n.editormd-preview-container .emoji, .editormd-html-preview .emoji {\n  width: 24px;\n  height: 24px;\n}\n.editormd-preview-container .katex, .editormd-html-preview .katex {\n  font-size: 1.4em;\n}\n.editormd-preview-container .sequence-diagram, .editormd-preview-container .flowchart, .editormd-html-preview .sequence-diagram, .editormd-html-preview .flowchart {\n  margin: 0 auto;\n  text-align: center;\n}\n.editormd-preview-container .sequence-diagram svg, .editormd-preview-container .flowchart svg, .editormd-html-preview .sequence-diagram svg, .editormd-html-preview .flowchart svg {\n  margin: 0 auto;\n}\n.editormd-preview-container .sequence-diagram text, .editormd-preview-container .flowchart text, .editormd-html-preview .sequence-diagram text, .editormd-html-preview .flowchart text {\n  font-size: 15px !important;\n  font-family: \"YaHei Consolas Hybrid\", Consolas, \"Microsoft YaHei\", \"Malgun Gothic\", \"Segoe UI\", Helvetica, Arial !important;\n}\n\n/*! Pretty printing styles. Used with prettify.js. */\n/* SPAN elements with the classes below are added by prettyprint. */\n.pln {\n  color: #000;\n}\n\n/* plain text */\n@media screen {\n  .str {\n    color: #080;\n  }\n\n  /* string content */\n  .kwd {\n    color: #008;\n  }\n\n  /* a keyword */\n  .com {\n    color: #800;\n  }\n\n  /* a comment */\n  .typ {\n    color: #606;\n  }\n\n  /* a type name */\n  .lit {\n    color: #066;\n  }\n\n  /* a literal value */\n  /* punctuation, lisp open bracket, lisp close bracket */\n  .pun, .opn, .clo {\n    color: #660;\n  }\n\n  .tag {\n    color: #008;\n  }\n\n  /* a markup tag name */\n  .atn {\n    color: #606;\n  }\n\n  /* a markup attribute name */\n  .atv {\n    color: #080;\n  }\n\n  /* a markup attribute value */\n  .dec, .var {\n    color: #606;\n  }\n\n  /* a declaration; a variable name */\n  .fun {\n    color: red;\n  }\n\n  /* a function name */\n}\n/* Use higher contrast and text-weight for printable form. */\n@media print, projection {\n  .str {\n    color: #060;\n  }\n\n  .kwd {\n    color: #006;\n    font-weight: bold;\n  }\n\n  .com {\n    color: #600;\n    font-style: italic;\n  }\n\n  .typ {\n    color: #404;\n    font-weight: bold;\n  }\n\n  .lit {\n    color: #044;\n  }\n\n  .pun, .opn, .clo {\n    color: #440;\n  }\n\n  .tag {\n    color: #006;\n    font-weight: bold;\n  }\n\n  .atn {\n    color: #404;\n  }\n\n  .atv {\n    color: #060;\n  }\n}\n/* Put a border around prettyprinted code snippets. */\npre.prettyprint {\n  padding: 2px;\n  border: 1px solid #888;\n}\n\n/* Specify class=linenums on a pre to get line numbering */\nol.linenums {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n/* IE indents via margin-left */\nli.L0,\nli.L1,\nli.L2,\nli.L3,\nli.L5,\nli.L6,\nli.L7,\nli.L8 {\n  list-style-type: none;\n}\n\n/* Alternate shading for lines */\nli.L1,\nli.L3,\nli.L5,\nli.L7,\nli.L9 {\n  background: #eee;\n}\n\n.editormd-preview-container pre.prettyprint, .editormd-html-preview pre.prettyprint {\n  padding: 10px;\n  border: 1px solid #ddd;\n  white-space: pre-wrap;\n  word-wrap: break-word;\n}\n.editormd-preview-container ol.linenums, .editormd-html-preview ol.linenums {\n  color: #999;\n  padding-left: 2.5em;\n}\n.editormd-preview-container ol.linenums li, .editormd-html-preview ol.linenums li {\n  list-style-type: decimal;\n}\n.editormd-preview-container ol.linenums li code, .editormd-html-preview ol.linenums li code {\n  border: none;\n  background: none;\n  padding: 0;\n}\n\n.editormd-preview-container .editormd-toc-menu, .editormd-html-preview .editormd-toc-menu {\n  margin: 8px 0 12px 0;\n  display: inline-block;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc, .editormd-html-preview .editormd-toc-menu > .markdown-toc {\n  position: relative;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  -ms-border-radius: 4px;\n  -o-border-radius: 4px;\n  border-radius: 4px;\n  border: 1px solid #ddd;\n  display: inline-block;\n  font-size: 1em;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc > ul, .editormd-html-preview .editormd-toc-menu > .markdown-toc > ul {\n  width: 160%;\n  min-width: 180px;\n  position: absolute;\n  left: -1px;\n  top: -2px;\n  z-index: 100;\n  padding: 0 10px 10px;\n  display: none;\n  background: #fff;\n  border: 1px solid #ddd;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  -ms-border-radius: 4px;\n  -o-border-radius: 4px;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* Webkit browsers */\n  -moz-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* Firefox */\n  -ms-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* IE9 */\n  -o-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* Opera(Old) */\n  box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* IE9+, News */\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc > ul > li ul, .editormd-html-preview .editormd-toc-menu > .markdown-toc > ul > li ul {\n  width: 100%;\n  min-width: 180px;\n  border: 1px solid #ddd;\n  display: none;\n  background: #fff;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  -ms-border-radius: 4px;\n  -o-border-radius: 4px;\n  border-radius: 4px;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc > ul > li a, .editormd-html-preview .editormd-toc-menu > .markdown-toc > ul > li a {\n  color: #666;\n  padding: 6px 10px;\n  display: block;\n  -webkit-transition: background-color 500ms ease-out;\n  /* Safari, Chrome */\n  -moz-transition: background-color 500ms ease-out;\n  /* Firefox 4.0~16.0 */\n  transition: background-color 500ms ease-out;\n  /* IE >9, FF >15, Opera >12.0 */\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc > ul > li a:hover, .editormd-html-preview .editormd-toc-menu > .markdown-toc > ul > li a:hover {\n  background-color: #f6f6f6;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc li, .editormd-html-preview .editormd-toc-menu > .markdown-toc li {\n  position: relative;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc li > ul, .editormd-html-preview .editormd-toc-menu > .markdown-toc li > ul {\n  position: absolute;\n  top: 32px;\n  left: 10%;\n  display: none;\n  -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* Webkit browsers */\n  -moz-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* Firefox */\n  -ms-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* IE9 */\n  -o-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* Opera(Old) */\n  box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);\n  /* IE9+, News */\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc li > ul:before, .editormd-preview-container .editormd-toc-menu > .markdown-toc li > ul:after, .editormd-html-preview .editormd-toc-menu > .markdown-toc li > ul:before, .editormd-html-preview .editormd-toc-menu > .markdown-toc li > ul:after {\n  pointer-events: pointer-events;\n  position: absolute;\n  left: 15px;\n  top: -6px;\n  display: block;\n  content: \"\";\n  width: 0;\n  height: 0;\n  border: 6px solid transparent;\n  border-width: 0 6px 6px;\n  z-index: 10;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc li > ul:before, .editormd-html-preview .editormd-toc-menu > .markdown-toc li > ul:before {\n  border-bottom-color: #ccc;\n}\n.editormd-preview-container .editormd-toc-menu > .markdown-toc li > ul:after, .editormd-html-preview .editormd-toc-menu > .markdown-toc li > ul:after {\n  border-bottom-color: #ffffff;\n  top: -5px;\n}\n.editormd-preview-container .editormd-toc-menu ul, .editormd-html-preview .editormd-toc-menu ul {\n  list-style: none;\n}\n.editormd-preview-container .editormd-toc-menu a, .editormd-html-preview .editormd-toc-menu a {\n  text-decoration: none;\n}\n.editormd-preview-container .editormd-toc-menu h1, .editormd-html-preview .editormd-toc-menu h1 {\n  font-size: 16px;\n  padding: 5px 0 10px 10px;\n  line-height: 1;\n  border-bottom: 1px solid #eee;\n}\n.editormd-preview-container .editormd-toc-menu h1 .fa, .editormd-html-preview .editormd-toc-menu h1 .fa {\n  padding-left: 10px;\n}\n.editormd-preview-container .editormd-toc-menu .toc-menu-btn, .editormd-html-preview .editormd-toc-menu .toc-menu-btn {\n  color: #666;\n  min-width: 180px;\n  padding: 5px 10px;\n  border-radius: 4px;\n  display: inline-block;\n  -webkit-transition: background-color 500ms ease-out;\n  /* Safari, Chrome */\n  -moz-transition: background-color 500ms ease-out;\n  /* Firefox 4.0~16.0 */\n  transition: background-color 500ms ease-out;\n  /* IE >9, FF >15, Opera >12.0 */\n}\n.editormd-preview-container .editormd-toc-menu .toc-menu-btn:hover, .editormd-html-preview .editormd-toc-menu .toc-menu-btn:hover {\n  background-color: #f6f6f6;\n}\n.editormd-preview-container .editormd-toc-menu .toc-menu-btn .fa, .editormd-html-preview .editormd-toc-menu .toc-menu-btn .fa {\n  float: right;\n  padding: 3px 0 0 10px;\n  font-size: 1.3em;\n}\n\n.markdown-body .editormd-toc-menu ul {\n  padding-left: 0;\n}\n.markdown-body .highlight pre, .markdown-body pre {\n  line-height: 1.6;\n}\n\nhr.editormd-page-break {\n  border: 1px dotted #ccc;\n  font-size: 0;\n  height: 2px;\n}\n\n@media only print {\n  hr.editormd-page-break {\n    background: none;\n    border: none;\n    height: 0;\n  }\n}\n.editormd-html-preview textarea {\n  display: none;\n}\n.editormd-html-preview hr.editormd-page-break {\n  background: none;\n  border: none;\n  height: 0;\n}\n\n.editormd-preview-close-btn {\n  color: #fff;\n  padding: 4px 6px;\n  font-size: 18px;\n  -webkit-border-radius: 500px;\n  -moz-border-radius: 500px;\n  -ms-border-radius: 500px;\n  -o-border-radius: 500px;\n  border-radius: 500px;\n  display: none;\n  background-color: #ccc;\n  position: absolute;\n  top: 25px;\n  right: 35px;\n  z-index: 19;\n  -webkit-transition: background-color 300ms ease-out;\n  /* Safari, Chrome */\n  -moz-transition: background-color 300ms ease-out;\n  /* Firefox 4.0~16.0 */\n  transition: background-color 300ms ease-out;\n  /* IE >9, FF >15, Opera >12.0 */\n}\n.editormd-preview-close-btn:hover {\n  background-color: #999;\n}\n\n.editormd-preview-active {\n  width: 100%;\n  padding: 40px;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/editormd.amd.js",
    "content": "/*\n * Editor.md\n *\n * @file        editormd.amd.js \n * @version     v1.5.0 \n * @description Open source online markdown editor.\n * @license     MIT License\n * @author      Pandao\n * {@link       https://github.com/pandao/editor.md}\n * @updateTime  2015-06-09\n */\n\n;(function(factory) {\n    \"use strict\";\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n\t{\n        if (define.amd) // for Require.js\n        {\n            var cmModePath  = \"codemirror/mode/\";\n            var cmAddonPath = \"codemirror/addon/\";\n\n            var codeMirrorModules = [\n                \"jquery\", \"marked\", \"prettify\",\n                \"katex\", \"raphael\", \"underscore\", \"flowchart\",  \"jqueryflowchart\",  \"sequenceDiagram\",\n\n                \"codemirror/lib/codemirror\",\n                cmModePath + \"css/css\",\n                cmModePath + \"sass/sass\",\n                cmModePath + \"shell/shell\",\n                cmModePath + \"sql/sql\",\n                cmModePath + \"clike/clike\",\n                cmModePath + \"php/php\",\n                cmModePath + \"xml/xml\",\n                cmModePath + \"markdown/markdown\",\n                cmModePath + \"javascript/javascript\",\n                cmModePath + \"htmlmixed/htmlmixed\",\n                cmModePath + \"gfm/gfm\",\n                cmModePath + \"http/http\",\n                cmModePath + \"go/go\",\n                cmModePath + \"dart/dart\",\n                cmModePath + \"coffeescript/coffeescript\",\n                cmModePath + \"nginx/nginx\",\n                cmModePath + \"python/python\",\n                cmModePath + \"perl/perl\",\n                cmModePath + \"lua/lua\",\n                cmModePath + \"r/r\", \n                cmModePath + \"ruby/ruby\", \n                cmModePath + \"rst/rst\",\n                cmModePath + \"smartymixed/smartymixed\",\n                cmModePath + \"vb/vb\",\n                cmModePath + \"vbscript/vbscript\",\n                cmModePath + \"velocity/velocity\",\n                cmModePath + \"xquery/xquery\",\n                cmModePath + \"yaml/yaml\",\n                cmModePath + \"erlang/erlang\",\n                cmModePath + \"jade/jade\",\n\n                cmAddonPath + \"edit/trailingspace\", \n                cmAddonPath + \"dialog/dialog\", \n                cmAddonPath + \"search/searchcursor\", \n                cmAddonPath + \"search/search\", \n                cmAddonPath + \"scroll/annotatescrollbar\", \n                cmAddonPath + \"search/matchesonscrollbar\", \n                cmAddonPath + \"display/placeholder\", \n                cmAddonPath + \"edit/closetag\", \n                cmAddonPath + \"fold/foldcode\",\n                cmAddonPath + \"fold/foldgutter\",\n                cmAddonPath + \"fold/indent-fold\",\n                cmAddonPath + \"fold/brace-fold\",\n                cmAddonPath + \"fold/xml-fold\", \n                cmAddonPath + \"fold/markdown-fold\",\n                cmAddonPath + \"fold/comment-fold\", \n                cmAddonPath + \"mode/overlay\", \n                cmAddonPath + \"selection/active-line\", \n                cmAddonPath + \"edit/closebrackets\", \n                cmAddonPath + \"display/fullscreen\",\n                cmAddonPath + \"search/match-highlighter\"\n            ];\n\n            define(codeMirrorModules, factory);\n        } \n        else \n        {\n\t\t    define([\"jquery\"], factory);  // for Sea.js\n        }\n\t} \n\telse\n\t{ \n        window.editormd = factory();\n\t}\n    \n}(function() {    \n\n    if (typeof define == \"function\" && define.amd) {\n       $          = arguments[0];\n       marked     = arguments[1];\n       prettify   = arguments[2];\n       katex      = arguments[3];\n       Raphael    = arguments[4];\n       _          = arguments[5];\n       flowchart  = arguments[6];\n       CodeMirror = arguments[9];\n   }\n    \n    \"use strict\";\n    \n    var $ = (typeof (jQuery) !== \"undefined\") ? jQuery : Zepto;\n\n\tif (typeof ($) === \"undefined\") {\n\t\treturn ;\n\t}\n    \n    /**\n     * editormd\n     * \n     * @param   {String} id           编辑器的ID\n     * @param   {Object} options      配置选项 Key/Value\n     * @returns {Object} editormd     返回editormd对象\n     */\n    \n    var editormd         = function (id, options) {\n        return new editormd.fn.init(id, options);\n    };\n    \n    editormd.title        = editormd.$name = \"Editor.md\";\n    editormd.version      = \"1.5.0\";\n    editormd.homePage     = \"https://pandao.github.io/editor.md/\";\n    editormd.classPrefix  = \"editormd-\";\n    \n    editormd.toolbarModes = {\n        full : [\n            \"undo\", \"redo\", \"|\", \n            \"bold\", \"del\", \"italic\", \"quote\", \"ucwords\", \"uppercase\", \"lowercase\", \"|\", \n            \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"|\", \n            \"list-ul\", \"list-ol\", \"hr\", \"|\",\n            \"link\", \"reference-link\", \"image\", \"code\", \"preformatted-text\", \"code-block\", \"table\", \"datetime\", \"emoji\", \"html-entities\", \"pagebreak\", \"|\",\n            \"goto-line\", \"watch\", \"preview\", \"fullscreen\", \"clear\", \"search\", \"|\",\n            \"help\", \"info\"\n        ],\n        simple : [\n            \"undo\", \"redo\", \"|\", \n            \"bold\", \"del\", \"italic\", \"quote\", \"uppercase\", \"lowercase\", \"|\", \n            \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"|\", \n            \"list-ul\", \"list-ol\", \"hr\", \"|\",\n            \"watch\", \"preview\", \"fullscreen\", \"|\",\n            \"help\", \"info\"\n        ],\n        mini : [\n            \"undo\", \"redo\", \"|\",\n            \"watch\", \"preview\", \"|\",\n            \"help\", \"info\"\n        ]\n    };\n    \n    editormd.defaults     = {\n        mode                 : \"gfm\",          //gfm or markdown\n        name                 : \"\",             // Form element name\n        value                : \"\",             // value for CodeMirror, if mode not gfm/markdown\n        theme                : \"\",             // Editor.md self themes, before v1.5.0 is CodeMirror theme, default empty\n        editorTheme          : \"default\",      // Editor area, this is CodeMirror theme at v1.5.0\n        previewTheme         : \"\",             // Preview area theme, default empty\n        markdown             : \"\",             // Markdown source code\n        appendMarkdown       : \"\",             // if in init textarea value not empty, append markdown to textarea\n        width                : \"100%\",\n        height               : \"100%\",\n        path                 : \"./lib/\",       // Dependents module file directory\n        pluginPath           : \"\",             // If this empty, default use settings.path + \"../plugins/\"\n        delay                : 300,            // Delay parse markdown to html, Uint : ms\n        autoLoadModules      : true,           // Automatic load dependent module files\n        watch                : true,\n        placeholder          : \"Enjoy Markdown! coding now...\",\n        gotoLine             : true,\n        codeFold             : false,\n        autoHeight           : false,\n\t\tautoFocus            : true,\n        autoCloseTags        : true,\n        searchReplace        : true,\n        syncScrolling        : true,           // true | false | \"single\", default true\n        readOnly             : false,\n        tabSize              : 4,\n\t\tindentUnit           : 4,\n        lineNumbers          : true,\n\t\tlineWrapping         : true,\n\t\tautoCloseBrackets    : true,\n\t\tshowTrailingSpace    : true,\n\t\tmatchBrackets        : true,\n\t\tindentWithTabs       : true,\n\t\tstyleSelectedText    : true,\n        matchWordHighlight   : true,           // options: true, false, \"onselected\"\n        styleActiveLine      : true,           // Highlight the current line\n        dialogLockScreen     : true,\n        dialogShowMask       : true,\n        dialogDraggable      : true,\n        dialogMaskBgColor    : \"#fff\",\n        dialogMaskOpacity    : 0.1,\n        fontSize             : \"13px\",\n        saveHTMLToTextarea   : false,\n        disabledKeyMaps      : [],\n        \n        onload               : function() {},\n        onresize             : function() {},\n        onchange             : function() {},\n        onwatch              : null,\n        onunwatch            : null,\n        onpreviewing         : function() {},\n        onpreviewed          : function() {},\n        onfullscreen         : function() {},\n        onfullscreenExit     : function() {},\n        onscroll             : function() {},\n        onpreviewscroll      : function() {},\n        \n        imageUpload          : false,\n        imageFormats         : [\"jpg\", \"jpeg\", \"gif\", \"png\", \"bmp\", \"webp\"],\n        imageUploadURL       : \"\",\n        crossDomainUpload    : false,\n        uploadCallbackURL    : \"\",\n        \n        toc                  : true,           // Table of contents\n        tocm                 : false,           // Using [TOCM], auto create ToC dropdown menu\n        tocTitle             : \"\",             // for ToC dropdown menu btn\n        tocDropdown          : false,\n        tocContainer         : \"\",\n        tocStartLevel        : 1,              // Said from H1 to create ToC\n        htmlDecode           : false,          // Open the HTML tag identification \n        pageBreak            : true,           // Enable parse page break [========]\n        atLink               : true,           // for @link\n        emailLink            : true,           // for email address auto link\n        taskList             : false,          // Enable Github Flavored Markdown task lists\n        emoji                : false,          // :emoji: , Support Github emoji, Twitter Emoji (Twemoji);\n                                               // Support FontAwesome icon emoji :fa-xxx: > Using fontAwesome icon web fonts;\n                                               // Support Editor.md logo icon emoji :editormd-logo: :editormd-logo-1x: > 1~8x;\n        tex                  : false,          // TeX(LaTeX), based on KaTeX\n        flowChart            : false,          // flowChart.js only support IE9+\n        sequenceDiagram      : false,          // sequenceDiagram.js only support IE9+\n        previewCodeHighlight : true,\n                \n        toolbar              : true,           // show/hide toolbar\n        toolbarAutoFixed     : true,           // on window scroll auto fixed position\n        toolbarIcons         : \"full\",\n        toolbarTitles        : {},\n        toolbarHandlers      : {\n            ucwords : function() {\n                return editormd.toolbarHandlers.ucwords;\n            },\n            lowercase : function() {\n                return editormd.toolbarHandlers.lowercase;\n            }\n        },\n        toolbarCustomIcons   : {               // using html tag create toolbar icon, unused default <a> tag.\n            lowercase        : \"<a href=\\\"javascript:;\\\" title=\\\"Lowercase\\\" unselectable=\\\"on\\\"><i class=\\\"fa\\\" name=\\\"lowercase\\\" style=\\\"font-size:24px;margin-top: -10px;\\\">a</i></a>\",\n            \"ucwords\"        : \"<a href=\\\"javascript:;\\\" title=\\\"ucwords\\\" unselectable=\\\"on\\\"><i class=\\\"fa\\\" name=\\\"ucwords\\\" style=\\\"font-size:20px;margin-top: -3px;\\\">Aa</i></a>\"\n        }, \n        toolbarIconsClass    : {\n            undo             : \"fa-undo\",\n            redo             : \"fa-repeat\",\n            bold             : \"fa-bold\",\n            del              : \"fa-strikethrough\",\n            italic           : \"fa-italic\",\n            quote            : \"fa-quote-left\",\n            uppercase        : \"fa-font\",\n            h1               : editormd.classPrefix + \"bold\",\n            h2               : editormd.classPrefix + \"bold\",\n            h3               : editormd.classPrefix + \"bold\",\n            h4               : editormd.classPrefix + \"bold\",\n            h5               : editormd.classPrefix + \"bold\",\n            h6               : editormd.classPrefix + \"bold\",\n            \"list-ul\"        : \"fa-list-ul\",\n            \"list-ol\"        : \"fa-list-ol\",\n            hr               : \"fa-minus\",\n            link             : \"fa-link\",\n            \"reference-link\" : \"fa-anchor\",\n            image            : \"fa-picture-o\",\n            code             : \"fa-code\",\n            \"preformatted-text\" : \"fa-file-code-o\",\n            \"code-block\"     : \"fa-file-code-o\",\n            table            : \"fa-table\",\n            datetime         : \"fa-clock-o\",\n            emoji            : \"fa-smile-o\",\n            \"html-entities\"  : \"fa-copyright\",\n            pagebreak        : \"fa-newspaper-o\",\n            \"goto-line\"      : \"fa-terminal\", // fa-crosshairs\n            watch            : \"fa-eye-slash\",\n            unwatch          : \"fa-eye\",\n            preview          : \"fa-desktop\",\n            search           : \"fa-search\",\n            fullscreen       : \"fa-arrows-alt\",\n            clear            : \"fa-eraser\",\n            help             : \"fa-question-circle\",\n            info             : \"fa-info-circle\"\n        },        \n        toolbarIconTexts     : {},\n        \n        lang : {\n            name        : \"zh-cn\",\n            description : \"开源在线Markdown编辑器<br/>Open source online Markdown editor.\",\n            tocTitle    : \"目录\",\n            toolbar     : {\n                undo             : \"撤销（Ctrl+Z）\",\n                redo             : \"重做（Ctrl+Y）\",\n                bold             : \"粗体\",\n                del              : \"删除线\",\n                italic           : \"斜体\",\n                quote            : \"引用\",\n                ucwords          : \"将每个单词首字母转成大写\",\n                uppercase        : \"将所选转换成大写\",\n                lowercase        : \"将所选转换成小写\",\n                h1               : \"标题1\",\n                h2               : \"标题2\",\n                h3               : \"标题3\",\n                h4               : \"标题4\",\n                h5               : \"标题5\",\n                h6               : \"标题6\",\n                \"list-ul\"        : \"无序列表\",\n                \"list-ol\"        : \"有序列表\",\n                hr               : \"横线\",\n                link             : \"链接\",\n                \"reference-link\" : \"引用链接\",\n                image            : \"添加图片\",\n                code             : \"行内代码\",\n                \"preformatted-text\" : \"预格式文本 / 代码块（缩进风格）\",\n                \"code-block\"     : \"代码块（多语言风格）\",\n                table            : \"添加表格\",\n                datetime         : \"日期时间\",\n                emoji            : \"Emoji表情\",\n                \"html-entities\"  : \"HTML实体字符\",\n                pagebreak        : \"插入分页符\",\n                \"goto-line\"      : \"跳转到行\",\n                watch            : \"关闭实时预览\",\n                unwatch          : \"开启实时预览\",\n                preview          : \"全窗口预览HTML（按 Shift + ESC还原）\",\n                fullscreen       : \"全屏（按ESC还原）\",\n                clear            : \"清空\",\n                search           : \"搜索\",\n                help             : \"使用帮助\",\n                info             : \"关于\" + editormd.title\n            },\n            buttons : {\n                enter  : \"确定\",\n                cancel : \"取消\",\n                close  : \"关闭\"\n            },\n            dialog : {\n                link : {\n                    title    : \"添加链接\",\n                    url      : \"链接地址\",\n                    urlTitle : \"链接标题\",\n                    urlEmpty : \"错误：请填写链接地址。\"\n                },\n                referenceLink : {\n                    title    : \"添加引用链接\",\n                    name     : \"引用名称\",\n                    url      : \"链接地址\",\n                    urlId    : \"链接ID\",\n                    urlTitle : \"链接标题\",\n                    nameEmpty: \"错误：引用链接的名称不能为空。\",\n                    idEmpty  : \"错误：请填写引用链接的ID。\",\n                    urlEmpty : \"错误：请填写引用链接的URL地址。\"\n                },\n                image : {\n                    title    : \"添加图片\",\n                    url      : \"图片地址\",\n                    link     : \"图片链接\",\n                    alt      : \"图片描述\",\n                    uploadButton     : \"本地上传\",\n                    imageURLEmpty    : \"错误：图片地址不能为空。\",\n                    uploadFileEmpty  : \"错误：上传的图片不能为空。\",\n                    formatNotAllowed : \"错误：只允许上传图片文件，允许上传的图片文件格式有：\"\n                },\n                preformattedText : {\n                    title             : \"添加预格式文本或代码块\", \n                    emptyAlert        : \"错误：请填写预格式文本或代码的内容。\"\n                },\n                codeBlock : {\n                    title             : \"添加代码块\",                    \n                    selectLabel       : \"代码语言：\",\n                    selectDefaultText : \"请选择代码语言\",\n                    otherLanguage     : \"其他语言\",\n                    unselectedLanguageAlert : \"错误：请选择代码所属的语言类型。\",\n                    codeEmptyAlert    : \"错误：请填写代码内容。\"\n                },\n                htmlEntities : {\n                    title : \"HTML 实体字符\"\n                },\n                help : {\n                    title : \"使用帮助\"\n                }\n            }\n        }\n    };\n    \n    editormd.classNames  = {\n        tex : editormd.classPrefix + \"tex\"\n    };\n\n    editormd.dialogZindex = 99999;\n    \n    editormd.$katex       = null;\n    editormd.$marked      = null;\n    editormd.$CodeMirror  = null;\n    editormd.$prettyPrint = null;\n    \n    var timer, flowchartTimer;\n\n    editormd.prototype    = editormd.fn = {\n        state : {\n            watching   : false,\n            loaded     : false,\n            preview    : false,\n            fullscreen : false\n        },\n        \n        /**\n         * 构造函数/实例初始化\n         * Constructor / instance initialization\n         * \n         * @param   {String}   id            编辑器的ID\n         * @param   {Object}   [options={}]  配置选项 Key/Value\n         * @returns {editormd}               返回editormd的实例对象\n         */\n        \n        init : function (id, options) {\n            \n            options              = options || {};\n            \n            if (typeof id === \"object\")\n            {\n                options = id;\n            }\n            \n            var _this            = this;\n            var classPrefix      = this.classPrefix  = editormd.classPrefix; \n            var settings         = this.settings     = $.extend(true, editormd.defaults, options);\n            \n            id                   = (typeof id === \"object\") ? settings.id : id;\n            \n            var editor           = this.editor       = $(\"#\" + id);\n            \n            this.id              = id;\n            this.lang            = settings.lang;\n            \n            var classNames       = this.classNames   = {\n                textarea : {\n                    html     : classPrefix + \"html-textarea\",\n                    markdown : classPrefix + \"markdown-textarea\"\n                }\n            };\n            \n            settings.pluginPath = (settings.pluginPath === \"\") ? settings.path + \"../plugins/\" : settings.pluginPath; \n            \n            this.state.watching = (settings.watch) ? true : false;\n            \n            if ( !editor.hasClass(\"editormd\") ) {\n                editor.addClass(\"editormd\");\n            }\n            \n            editor.css({\n                width  : (typeof settings.width  === \"number\") ? settings.width  + \"px\" : settings.width,\n                height : (typeof settings.height === \"number\") ? settings.height + \"px\" : settings.height\n            });\n            \n            if (settings.autoHeight)\n            {\n                editor.css(\"height\", \"auto\");\n            }\n                        \n            var markdownTextarea = this.markdownTextarea = editor.children(\"textarea\");\n            \n            if (markdownTextarea.length < 1)\n            {\n                editor.append(\"<textarea></textarea>\");\n                markdownTextarea = this.markdownTextarea = editor.children(\"textarea\");\n            }\n            \n            markdownTextarea.addClass(classNames.textarea.markdown).attr(\"placeholder\", settings.placeholder);\n            \n            if (typeof markdownTextarea.attr(\"name\") === \"undefined\" || markdownTextarea.attr(\"name\") === \"\")\n            {\n                markdownTextarea.attr(\"name\", (settings.name !== \"\") ? settings.name : id + \"-markdown-doc\");\n            }\n            \n            var appendElements = [\n                (!settings.readOnly) ? \"<a href=\\\"javascript:;\\\" class=\\\"fa fa-close \" + classPrefix + \"preview-close-btn\\\"></a>\" : \"\",\n                ( (settings.saveHTMLToTextarea) ? \"<textarea class=\\\"\" + classNames.textarea.html + \"\\\" name=\\\"\" + id + \"-html-code\\\"></textarea>\" : \"\" ),\n                \"<div class=\\\"\" + classPrefix + \"preview\\\"><div class=\\\"markdown-body \" + classPrefix + \"preview-container\\\"></div></div>\",\n                \"<div class=\\\"\" + classPrefix + \"container-mask\\\" style=\\\"display:block;\\\"></div>\",\n                \"<div class=\\\"\" + classPrefix + \"mask\\\"></div>\"\n            ].join(\"\\n\");\n            \n            editor.append(appendElements).addClass(classPrefix + \"vertical\");\n            \n            if (settings.theme !== \"\") \n            {\n                editor.addClass(classPrefix + \"theme-\" + settings.theme);\n            }\n            \n            this.mask          = editor.children(\".\" + classPrefix + \"mask\");    \n            this.containerMask = editor.children(\".\" + classPrefix  + \"container-mask\");\n            \n            if (settings.markdown !== \"\")\n            {\n                markdownTextarea.val(settings.markdown);\n            }\n            \n            if (settings.appendMarkdown !== \"\")\n            {\n                markdownTextarea.val(markdownTextarea.val() + settings.appendMarkdown);\n            }\n            \n            this.htmlTextarea     = editor.children(\".\" + classNames.textarea.html);            \n            this.preview          = editor.children(\".\" + classPrefix + \"preview\");\n            this.previewContainer = this.preview.children(\".\" + classPrefix + \"preview-container\");\n            \n            if (settings.previewTheme !== \"\") \n            {\n                this.preview.addClass(classPrefix + \"preview-theme-\" + settings.previewTheme);\n            }\n            \n            if (typeof define === \"function\" && define.amd)\n            {\n                if (typeof katex !== \"undefined\") \n                {\n                    editormd.$katex = katex;\n                }\n                \n                if (settings.searchReplace && !settings.readOnly) \n                {\n                    editormd.loadCSS(settings.path + \"codemirror/addon/dialog/dialog\");\n                    editormd.loadCSS(settings.path + \"codemirror/addon/search/matchesonscrollbar\");\n                }\n            }\n            \n            if ((typeof define === \"function\" && define.amd) || !settings.autoLoadModules)\n            {\n                if (typeof CodeMirror !== \"undefined\") {\n                    editormd.$CodeMirror = CodeMirror;\n                }\n                \n                if (typeof marked     !== \"undefined\") {\n                    editormd.$marked     = marked;\n                }\n                \n                this.setCodeMirror().setToolbar().loadedDisplay();\n            } \n            else \n            {\n                this.loadQueues();\n            }\n\n            return this;\n        },\n        \n        /**\n         * 所需组件加载队列\n         * Required components loading queue\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        loadQueues : function() {\n            var _this        = this;\n            var settings     = this.settings;\n            var loadPath     = settings.path;\n                                \n            var loadFlowChartOrSequenceDiagram = function() {\n                \n                if (editormd.isIE8) \n                {\n                    _this.loadedDisplay();\n                    \n                    return ;\n                }\n\n                if (settings.flowChart || settings.sequenceDiagram) \n                {\n                    editormd.loadScript(loadPath + \"raphael.min\", function() {\n\n                        editormd.loadScript(loadPath + \"underscore.min\", function() {  \n\n                            if (!settings.flowChart && settings.sequenceDiagram) \n                            {\n                                editormd.loadScript(loadPath + \"sequence-diagram.min\", function() {\n                                    _this.loadedDisplay();\n                                });\n                            }\n                            else if (settings.flowChart && !settings.sequenceDiagram) \n                            {      \n                                editormd.loadScript(loadPath + \"flowchart.min\", function() {  \n                                    editormd.loadScript(loadPath + \"jquery.flowchart.min\", function() {\n                                        _this.loadedDisplay();\n                                    });\n                                });\n                            }\n                            else if (settings.flowChart && settings.sequenceDiagram) \n                            {  \n                                editormd.loadScript(loadPath + \"flowchart.min\", function() {  \n                                    editormd.loadScript(loadPath + \"jquery.flowchart.min\", function() {\n                                        editormd.loadScript(loadPath + \"sequence-diagram.min\", function() {\n                                            _this.loadedDisplay();\n                                        });\n                                    });\n                                });\n                            }\n                        });\n\n                    });\n                } \n                else\n                {\n                    _this.loadedDisplay();\n                }\n            }; \n\n            editormd.loadCSS(loadPath + \"codemirror/codemirror.min\");\n            \n            if (settings.searchReplace && !settings.readOnly)\n            {\n                editormd.loadCSS(loadPath + \"codemirror/addon/dialog/dialog\");\n                editormd.loadCSS(loadPath + \"codemirror/addon/search/matchesonscrollbar\");\n            }\n            \n            if (settings.codeFold)\n            {\n                editormd.loadCSS(loadPath + \"codemirror/addon/fold/foldgutter\");            \n            }\n            \n            editormd.loadScript(loadPath + \"codemirror/codemirror.min\", function() {\n                editormd.$CodeMirror = CodeMirror;\n                \n                editormd.loadScript(loadPath + \"codemirror/modes.min\", function() {\n                    \n                    editormd.loadScript(loadPath + \"codemirror/addons.min\", function() {\n                        \n                        _this.setCodeMirror();\n                        \n                        if (settings.mode !== \"gfm\" && settings.mode !== \"markdown\") \n                        {\n                            _this.loadedDisplay();\n                            \n                            return false;\n                        }\n                        \n                        _this.setToolbar();\n\n                        editormd.loadScript(loadPath + \"marked.min\", function() {\n\n                            editormd.$marked = marked;\n                                \n                            if (settings.previewCodeHighlight) \n                            {\n                                editormd.loadScript(loadPath + \"prettify.min\", function() {\n                                    loadFlowChartOrSequenceDiagram();\n                                });\n                            } \n                            else\n                            {                  \n                                loadFlowChartOrSequenceDiagram();\n                            }\n                        });\n                        \n                    });\n                    \n                });\n                \n            });\n\n            return this;\n        },\n        \n        /**\n         * 设置 Editor.md 的整体主题，主要是工具栏\n         * Setting Editor.md theme\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setTheme : function(theme) {\n            var editor      = this.editor;\n            var oldTheme    = this.settings.theme;\n            var themePrefix = this.classPrefix + \"theme-\";\n            \n            editor.removeClass(themePrefix + oldTheme).addClass(themePrefix + theme);\n            \n            this.settings.theme = theme;\n            \n            return this;\n        },\n        \n        /**\n         * 设置 CodeMirror（编辑区）的主题\n         * Setting CodeMirror (Editor area) theme\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setEditorTheme : function(theme) {  \n            var settings   = this.settings;  \n            settings.editorTheme = theme;  \n            \n            if (theme !== \"default\")\n            {\n                editormd.loadCSS(settings.path + \"codemirror/theme/\" + settings.editorTheme);\n            }\n            \n            this.cm.setOption(\"theme\", theme);\n            \n            return this;\n        },\n        \n        /**\n         * setEditorTheme() 的别名\n         * setEditorTheme() alias\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setCodeMirrorTheme : function (theme) {            \n            this.setEditorTheme(theme);\n            \n            return this;\n        },\n        \n        /**\n         * 设置 Editor.md 的主题\n         * Setting Editor.md theme\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setPreviewTheme : function(theme) {  \n            var preview     = this.preview;\n            var oldTheme    = this.settings.previewTheme;\n            var themePrefix = this.classPrefix + \"preview-theme-\";\n            \n            preview.removeClass(themePrefix + oldTheme).addClass(themePrefix + theme);\n            \n            this.settings.previewTheme = theme;\n            \n            return this;\n        },\n        \n        /**\n         * 配置和初始化CodeMirror组件\n         * CodeMirror initialization\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setCodeMirror : function() { \n            var settings         = this.settings;\n            var editor           = this.editor;\n            \n            if (settings.editorTheme !== \"default\")\n            {\n                editormd.loadCSS(settings.path + \"codemirror/theme/\" + settings.editorTheme);\n            }\n            \n            var codeMirrorConfig = {\n                mode                      : settings.mode,\n                theme                     : settings.editorTheme,\n                tabSize                   : settings.tabSize,\n                dragDrop                  : false,\n                autofocus                 : settings.autoFocus,\n                autoCloseTags             : settings.autoCloseTags,\n                readOnly                  : (settings.readOnly) ? \"nocursor\" : false,\n                indentUnit                : settings.indentUnit,\n                lineNumbers               : settings.lineNumbers,\n                lineWrapping              : settings.lineWrapping,\n                extraKeys                 : {\n                                                \"Ctrl-Q\": function(cm) { \n                                                    cm.foldCode(cm.getCursor()); \n                                                }\n                                            },\n                foldGutter                : settings.codeFold,\n                gutters                   : [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n                matchBrackets             : settings.matchBrackets,\n                indentWithTabs            : settings.indentWithTabs,\n                styleActiveLine           : settings.styleActiveLine,\n                styleSelectedText         : settings.styleSelectedText,\n                autoCloseBrackets         : settings.autoCloseBrackets,\n                showTrailingSpace         : settings.showTrailingSpace,\n                highlightSelectionMatches : ( (!settings.matchWordHighlight) ? false : { showToken: (settings.matchWordHighlight === \"onselected\") ? false : /\\w/ } )\n            };\n            \n            this.codeEditor = this.cm        = editormd.$CodeMirror.fromTextArea(this.markdownTextarea[0], codeMirrorConfig);\n            this.codeMirror = this.cmElement = editor.children(\".CodeMirror\");\n            \n            if (settings.value !== \"\")\n            {\n                this.cm.setValue(settings.value);\n            }\n\n            this.codeMirror.css({\n                fontSize : settings.fontSize,\n                width    : (!settings.watch) ? \"100%\" : \"50%\"\n            });\n            \n            if (settings.autoHeight)\n            {\n                this.codeMirror.css(\"height\", \"auto\");\n                this.cm.setOption(\"viewportMargin\", Infinity);\n            }\n            \n            if (!settings.lineNumbers)\n            {\n                this.codeMirror.find(\".CodeMirror-gutters\").css(\"border-right\", \"none\");\n            }\n\n            return this;\n        },\n        \n        /**\n         * 获取CodeMirror的配置选项\n         * Get CodeMirror setting options\n         * \n         * @returns {Mixed}                  return CodeMirror setting option value\n         */\n        \n        getCodeMirrorOption : function(key) {            \n            return this.cm.getOption(key);\n        },\n        \n        /**\n         * 配置和重配置CodeMirror的选项\n         * CodeMirror setting options / resettings\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setCodeMirrorOption : function(key, value) {\n            \n            this.cm.setOption(key, value);\n            \n            return this;\n        },\n        \n        /**\n         * 添加 CodeMirror 键盘快捷键\n         * Add CodeMirror keyboard shortcuts key map\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        addKeyMap : function(map, bottom) {\n            this.cm.addKeyMap(map, bottom);\n            \n            return this;\n        },\n        \n        /**\n         * 移除 CodeMirror 键盘快捷键\n         * Remove CodeMirror keyboard shortcuts key map\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        removeKeyMap : function(map) {\n            this.cm.removeKeyMap(map);\n            \n            return this;\n        },\n        \n        /**\n         * 跳转到指定的行\n         * Goto CodeMirror line\n         * \n         * @param   {String|Intiger}   line      line number or \"first\"|\"last\"\n         * @returns {editormd}                   返回editormd的实例对象\n         */\n        \n        gotoLine : function (line) {\n            \n            var settings = this.settings;\n            \n            if (!settings.gotoLine)\n            {\n                return this;\n            }\n            \n            var cm       = this.cm;\n            var editor   = this.editor;\n            var count    = cm.lineCount();\n            var preview  = this.preview;\n            \n            if (typeof line === \"string\")\n            {\n                if(line === \"last\")\n                {\n                    line = count;\n                }\n            \n                if (line === \"first\")\n                {\n                    line = 1;\n                }\n            }\n            \n            if (typeof line !== \"number\") \n            {  \n                alert(\"Error: The line number must be an integer.\");\n                return this;\n            }\n            \n            line  = parseInt(line) - 1;\n            \n            if (line > count)\n            {\n                alert(\"Error: The line number range 1-\" + count);\n                \n                return this;\n            }\n            \n            cm.setCursor( {line : line, ch : 0} );\n            \n            var scrollInfo   = cm.getScrollInfo();\n            var clientHeight = scrollInfo.clientHeight; \n            var coords       = cm.charCoords({line : line, ch : 0}, \"local\");\n            \n            cm.scrollTo(null, (coords.top + coords.bottom - clientHeight) / 2);\n            \n            if (settings.watch)\n            {            \n                var cmScroll  = this.codeMirror.find(\".CodeMirror-scroll\")[0];\n                var height    = $(cmScroll).height(); \n                var scrollTop = cmScroll.scrollTop;         \n                var percent   = (scrollTop / cmScroll.scrollHeight);\n\n                if (scrollTop === 0)\n                {\n                    preview.scrollTop(0);\n                } \n                else if (scrollTop + height >= cmScroll.scrollHeight - 16)\n                { \n                    preview.scrollTop(preview[0].scrollHeight);                    \n                } \n                else\n                {                    \n                    preview.scrollTop(preview[0].scrollHeight * percent);\n                }\n            }\n\n            cm.focus();\n            \n            return this;\n        },\n        \n        /**\n         * 扩展当前实例对象，可同时设置多个或者只设置一个\n         * Extend editormd instance object, can mutil setting.\n         * \n         * @returns {editormd}                  this(editormd instance object.)\n         */\n        \n        extend : function() {\n            if (typeof arguments[1] !== \"undefined\")\n            {\n                if (typeof arguments[1] === \"function\")\n                {\n                    arguments[1] = $.proxy(arguments[1], this);\n                }\n\n                this[arguments[0]] = arguments[1];\n            }\n            \n            if (typeof arguments[0] === \"object\" && typeof arguments[0].length === \"undefined\")\n            {\n                $.extend(true, this, arguments[0]);\n            }\n\n            return this;\n        },\n        \n        /**\n         * 设置或扩展当前实例对象，单个设置\n         * Extend editormd instance object, one by one\n         * \n         * @param   {String|Object}   key       option key\n         * @param   {String|Object}   value     option value\n         * @returns {editormd}                  this(editormd instance object.)\n         */\n        \n        set : function (key, value) {\n            \n            if (typeof value !== \"undefined\" && typeof value === \"function\")\n            {\n                value = $.proxy(value, this);\n            }\n            \n            this[key] = value;\n\n            return this;\n        },\n        \n        /**\n         * 重新配置\n         * Resetting editor options\n         * \n         * @param   {String|Object}   key       option key\n         * @param   {String|Object}   value     option value\n         * @returns {editormd}                  this(editormd instance object.)\n         */\n        \n        config : function(key, value) {\n            var settings = this.settings;\n            \n            if (typeof key === \"object\")\n            {\n                settings = $.extend(true, settings, key);\n            }\n            \n            if (typeof key === \"string\")\n            {\n                settings[key] = value;\n            }\n            \n            this.settings = settings;\n            this.recreate();\n            \n            return this;\n        },\n        \n        /**\n         * 注册事件处理方法\n         * Bind editor event handle\n         * \n         * @param   {String}     eventType      event type\n         * @param   {Function}   callback       回调函数\n         * @returns {editormd}                  this(editormd instance object.)\n         */\n        \n        on : function(eventType, callback) {\n            var settings = this.settings;\n            \n            if (typeof settings[\"on\" + eventType] !== \"undefined\") \n            {                \n                settings[\"on\" + eventType] = $.proxy(callback, this);      \n            }\n\n            return this;\n        },\n        \n        /**\n         * 解除事件处理方法\n         * Unbind editor event handle\n         * \n         * @param   {String}   eventType          event type\n         * @returns {editormd}                    this(editormd instance object.)\n         */\n        \n        off : function(eventType) {\n            var settings = this.settings;\n            \n            if (typeof settings[\"on\" + eventType] !== \"undefined\") \n            {\n                settings[\"on\" + eventType] = function(){};\n            }\n            \n            return this;\n        },\n        \n        /**\n         * 显示工具栏\n         * Display toolbar\n         * \n         * @param   {Function} [callback=function(){}] 回调函数\n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        showToolbar : function(callback) {\n            var settings = this.settings;\n            \n            if(settings.readOnly) {\n                return this;\n            }\n            \n            if (settings.toolbar && (this.toolbar.length < 1 || this.toolbar.find(\".\" + this.classPrefix + \"menu\").html() === \"\") )\n            {\n                this.setToolbar();\n            }\n            \n            settings.toolbar = true; \n            \n            this.toolbar.show();\n            this.resize();\n            \n            $.proxy(callback || function(){}, this)();\n\n            return this;\n        },\n        \n        /**\n         * 隐藏工具栏\n         * Hide toolbar\n         * \n         * @param   {Function} [callback=function(){}] 回调函数\n         * @returns {editormd}                         this(editormd instance object.)\n         */\n        \n        hideToolbar : function(callback) { \n            var settings = this.settings;\n            \n            settings.toolbar = false;  \n            this.toolbar.hide();\n            this.resize();\n            \n            $.proxy(callback || function(){}, this)();\n\n            return this;\n        },\n        \n        /**\n         * 页面滚动时工具栏的固定定位\n         * Set toolbar in window scroll auto fixed position\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setToolbarAutoFixed : function(fixed) {\n            \n            var state    = this.state;\n            var editor   = this.editor;\n            var toolbar  = this.toolbar;\n            var settings = this.settings;\n            \n            if (typeof fixed !== \"undefined\")\n            {\n                settings.toolbarAutoFixed = fixed;\n            }\n            \n            var autoFixedHandle = function(){\n                var $window = $(window);\n                var top     = $window.scrollTop();\n                \n                if (!settings.toolbarAutoFixed)\n                {\n                    return false;\n                }\n\n                if (top - editor.offset().top > 10 && top < editor.height())\n                {\n                    toolbar.css({\n                        position : \"fixed\",\n                        width    : editor.width() + \"px\",\n                        left     : ($window.width() - editor.width()) / 2 + \"px\"\n                    });\n                }\n                else\n                {\n                    toolbar.css({\n                        position : \"absolute\",\n                        width    : \"100%\",\n                        left     : 0\n                    });\n                }\n            };\n            \n            if (!state.fullscreen && !state.preview && settings.toolbar && settings.toolbarAutoFixed)\n            {\n                $(window).bind(\"scroll\", autoFixedHandle);\n            }\n\n            return this;\n        },\n        \n        /**\n         * 配置和初始化工具栏\n         * Set toolbar and Initialization\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setToolbar : function() {\n            var settings    = this.settings;  \n            \n            if(settings.readOnly) {\n                return this;\n            }\n            \n            var editor      = this.editor;\n            var preview     = this.preview;\n            var classPrefix = this.classPrefix;\n            \n            var toolbar     = this.toolbar = editor.children(\".\" + classPrefix + \"toolbar\");\n            \n            if (settings.toolbar && toolbar.length < 1)\n            {            \n                var toolbarHTML = \"<div class=\\\"\" + classPrefix + \"toolbar\\\"><div class=\\\"\" + classPrefix + \"toolbar-container\\\"><ul class=\\\"\" + classPrefix + \"menu\\\"></ul></div></div>\";\n                \n                editor.append(toolbarHTML);\n                toolbar = this.toolbar = editor.children(\".\" + classPrefix + \"toolbar\");\n            }\n            \n            if (!settings.toolbar) \n            {\n                toolbar.hide();\n                \n                return this;\n            }\n            \n            toolbar.show();\n            \n            var icons       = (typeof settings.toolbarIcons === \"function\") ? settings.toolbarIcons() \n                            : ((typeof settings.toolbarIcons === \"string\")  ? editormd.toolbarModes[settings.toolbarIcons] : settings.toolbarIcons);\n            \n            var toolbarMenu = toolbar.find(\".\" + this.classPrefix + \"menu\"), menu = \"\";\n            var pullRight   = false;\n            \n            for (var i = 0, len = icons.length; i < len; i++)\n            {\n                var name = icons[i];\n\n                if (name === \"||\") \n                { \n                    pullRight = true;\n                } \n                else if (name === \"|\")\n                {\n                    menu += \"<li class=\\\"divider\\\" unselectable=\\\"on\\\">|</li>\";\n                }\n                else\n                {\n                    var isHeader = (/h(\\d)/.test(name));\n                    var index    = name;\n                    \n                    if (name === \"watch\" && !settings.watch) {\n                        index = \"unwatch\";\n                    }\n                    \n                    var title     = settings.lang.toolbar[index];\n                    var iconTexts = settings.toolbarIconTexts[index];\n                    var iconClass = settings.toolbarIconsClass[index];\n                    \n                    title     = (typeof title     === \"undefined\") ? \"\" : title;\n                    iconTexts = (typeof iconTexts === \"undefined\") ? \"\" : iconTexts;\n                    iconClass = (typeof iconClass === \"undefined\") ? \"\" : iconClass;\n\n                    var menuItem = pullRight ? \"<li class=\\\"pull-right\\\">\" : \"<li>\";\n                    \n                    if (typeof settings.toolbarCustomIcons[name] !== \"undefined\" && typeof settings.toolbarCustomIcons[name] !== \"function\")\n                    {\n                        menuItem += settings.toolbarCustomIcons[name];\n                    }\n                    else \n                    {\n                        menuItem += \"<a href=\\\"javascript:;\\\" title=\\\"\" + title + \"\\\" unselectable=\\\"on\\\">\";\n                        menuItem += \"<i class=\\\"fa \" + iconClass + \"\\\" name=\\\"\"+name+\"\\\" unselectable=\\\"on\\\">\"+((isHeader) ? name.toUpperCase() : ( (iconClass === \"\") ? iconTexts : \"\") ) + \"</i>\";\n                        menuItem += \"</a>\";\n                    }\n\n                    menuItem += \"</li>\";\n\n                    menu = pullRight ? menuItem + menu : menu + menuItem;\n                }\n            }\n\n            toolbarMenu.html(menu);\n            \n            toolbarMenu.find(\"[title=\\\"Lowercase\\\"]\").attr(\"title\", settings.lang.toolbar.lowercase);\n            toolbarMenu.find(\"[title=\\\"ucwords\\\"]\").attr(\"title\", settings.lang.toolbar.ucwords);\n            \n            this.setToolbarHandler();\n            this.setToolbarAutoFixed();\n\n            return this;\n        },\n        \n        /**\n         * 工具栏图标事件处理对象序列\n         * Get toolbar icons event handlers\n         * \n         * @param   {Object}   cm    CodeMirror的实例对象\n         * @param   {String}   name  要获取的事件处理器名称\n         * @returns {Object}         返回处理对象序列\n         */\n            \n        dialogLockScreen : function() {\n            $.proxy(editormd.dialogLockScreen, this)();\n            \n            return this;\n        },\n\n        dialogShowMask : function(dialog) {\n            $.proxy(editormd.dialogShowMask, this)(dialog);\n            \n            return this;\n        },\n        \n        getToolbarHandles : function(name) {  \n            var toolbarHandlers = this.toolbarHandlers = editormd.toolbarHandlers;\n            \n            return (name && typeof toolbarIconHandlers[name] !== \"undefined\") ? toolbarHandlers[name] : toolbarHandlers;\n        },\n        \n        /**\n         * 工具栏图标事件处理器\n         * Bind toolbar icons event handle\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setToolbarHandler : function() {\n            var _this               = this;\n            var settings            = this.settings;\n            \n            if (!settings.toolbar || settings.readOnly) {\n                return this;\n            }\n            \n            var toolbar             = this.toolbar;\n            var cm                  = this.cm;\n            var classPrefix         = this.classPrefix;           \n            var toolbarIcons        = this.toolbarIcons = toolbar.find(\".\" + classPrefix + \"menu > li > a\");  \n            var toolbarIconHandlers = this.getToolbarHandles();  \n                \n            toolbarIcons.bind(editormd.mouseOrTouch(\"click\", \"touchend\"), function(event) {\n\n                var icon                = $(this).children(\".fa\");\n                var name                = icon.attr(\"name\");\n                var cursor              = cm.getCursor();\n                var selection           = cm.getSelection();\n\n                if (name === \"\") {\n                    return ;\n                }\n                \n                _this.activeIcon = icon;\n\n                if (typeof toolbarIconHandlers[name] !== \"undefined\") \n                {\n                    $.proxy(toolbarIconHandlers[name], _this)(cm);\n                }\n                else \n                {\n                    if (typeof settings.toolbarHandlers[name] !== \"undefined\") \n                    {\n                        $.proxy(settings.toolbarHandlers[name], _this)(cm, icon, cursor, selection);\n                    }\n                }\n                \n                if (name !== \"link\" && name !== \"reference-link\" && name !== \"image\" && name !== \"code-block\" && \n                    name !== \"preformatted-text\" && name !== \"watch\" && name !== \"preview\" && name !== \"search\" && name !== \"fullscreen\" && name !== \"info\") \n                {\n                    cm.focus();\n                }\n\n                return false;\n\n            });\n\n            return this;\n        },\n        \n        /**\n         * 动态创建对话框\n         * Creating custom dialogs\n         * \n         * @param   {Object} options  配置项键值对 Key/Value\n         * @returns {dialog}          返回创建的dialog的jQuery实例对象\n         */\n        \n        createDialog : function(options) {            \n            return $.proxy(editormd.createDialog, this)(options);\n        },\n        \n        /**\n         * 创建关于Editor.md的对话框\n         * Create about Editor.md dialog\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        createInfoDialog : function() {\n            var _this        = this;\n\t\t\tvar editor       = this.editor;\n            var classPrefix  = this.classPrefix;  \n            \n            var infoDialogHTML = [\n                \"<div class=\\\"\" + classPrefix + \"dialog \" + classPrefix + \"dialog-info\\\" style=\\\"\\\">\",\n                \"<div class=\\\"\" + classPrefix + \"dialog-container\\\">\",\n                \"<h1><i class=\\\"editormd-logo editormd-logo-lg editormd-logo-color\\\"></i> \" + editormd.title + \"<small>v\" + editormd.version + \"</small></h1>\",\n                \"<p>\" + this.lang.description + \"</p>\",\n                \"<p style=\\\"margin: 10px 0 20px 0;\\\"><a href=\\\"\" + editormd.homePage + \"\\\" target=\\\"_blank\\\">\" + editormd.homePage + \" <i class=\\\"fa fa-external-link\\\"></i></a></p>\",\n                \"<p style=\\\"font-size: 0.85em;\\\">Copyright &copy; 2015 <a href=\\\"https://github.com/pandao\\\" target=\\\"_blank\\\" class=\\\"hover-link\\\">Pandao</a>, The <a href=\\\"https://github.com/pandao/editor.md/blob/master/LICENSE\\\" target=\\\"_blank\\\" class=\\\"hover-link\\\">MIT</a> License.</p>\",\n                \"</div>\",\n                \"<a href=\\\"javascript:;\\\" class=\\\"fa fa-close \" + classPrefix + \"dialog-close\\\"></a>\",\n                \"</div>\"\n            ].join(\"\\n\");\n\n            editor.append(infoDialogHTML);\n            \n            var infoDialog  = this.infoDialog = editor.children(\".\" + classPrefix + \"dialog-info\");\n\n            infoDialog.find(\".\" + classPrefix + \"dialog-close\").bind(editormd.mouseOrTouch(\"click\", \"touchend\"), function() {\n                _this.hideInfoDialog();\n            });\n            \n            infoDialog.css(\"border\", (editormd.isIE8) ? \"1px solid #ddd\" : \"\").css(\"z-index\", editormd.dialogZindex).show();\n            \n            this.infoDialogPosition();\n\n            return this;\n        },\n        \n        /**\n         * 关于Editor.md对话居中定位\n         * Editor.md dialog position handle\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        infoDialogPosition : function() {\n            var infoDialog = this.infoDialog;\n            \n\t\t\tvar _infoDialogPosition = function() {\n\t\t\t\tinfoDialog.css({\n\t\t\t\t\ttop  : ($(window).height() - infoDialog.height()) / 2 + \"px\",\n\t\t\t\t\tleft : ($(window).width()  - infoDialog.width()) / 2  + \"px\"\n\t\t\t\t});\n\t\t\t};\n\n\t\t\t_infoDialogPosition();\n\n\t\t\t$(window).resize(_infoDialogPosition);\n            \n            return this;\n        },\n        \n        /**\n         * 显示关于Editor.md\n         * Display about Editor.md dialog\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        showInfoDialog : function() {\n\n            $(\"html,body\").css(\"overflow-x\", \"hidden\");\n            \n            var _this       = this;\n\t\t\tvar editor      = this.editor;\n            var settings    = this.settings;         \n\t\t\tvar infoDialog  = this.infoDialog = editor.children(\".\" + this.classPrefix + \"dialog-info\");\n            \n            if (infoDialog.length < 1)\n            {\n                this.createInfoDialog();\n            }\n            \n            this.lockScreen(true);\n            \n            this.mask.css({\n\t\t\t\t\t\topacity         : settings.dialogMaskOpacity,\n\t\t\t\t\t\tbackgroundColor : settings.dialogMaskBgColor\n\t\t\t\t\t}).show();\n\n\t\t\tinfoDialog.css(\"z-index\", editormd.dialogZindex).show();\n\n\t\t\tthis.infoDialogPosition();\n\n            return this;\n        },\n        \n        /**\n         * 隐藏关于Editor.md\n         * Hide about Editor.md dialog\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        hideInfoDialog : function() {            \n            $(\"html,body\").css(\"overflow-x\", \"\");\n            this.infoDialog.hide();\n            this.mask.hide();\n            this.lockScreen(false);\n\n            return this;\n        },\n        \n        /**\n         * 锁屏\n         * lock screen\n         * \n         * @param   {Boolean}    lock    Boolean 布尔值，是否锁屏\n         * @returns {editormd}           返回editormd的实例对象\n         */\n        \n        lockScreen : function(lock) {\n            editormd.lockScreen(lock);\n            this.resize();\n\n            return this;\n        },\n        \n        /**\n         * 编辑器界面重建，用于动态语言包或模块加载等\n         * Recreate editor\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        recreate : function() {\n            var _this            = this;\n            var editor           = this.editor;\n            var settings         = this.settings;\n            \n            this.codeMirror.remove();\n            \n            this.setCodeMirror();\n\n            if (!settings.readOnly) \n            {\n                if (editor.find(\".editormd-dialog\").length > 0) {\n                    editor.find(\".editormd-dialog\").remove();\n                }\n                \n                if (settings.toolbar) \n                {  \n                    this.getToolbarHandles();                  \n                    this.setToolbar();\n                }\n            }\n            \n            this.loadedDisplay(true);\n\n            return this;\n        },\n        \n        /**\n         * 高亮预览HTML的pre代码部分\n         * highlight of preview codes\n         * \n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        previewCodeHighlight : function() {    \n            var settings         = this.settings;\n            var previewContainer = this.previewContainer;\n            \n            if (settings.previewCodeHighlight) \n            {\n                previewContainer.find(\"pre\").addClass(\"prettyprint linenums\");\n                \n                if (typeof prettyPrint !== \"undefined\")\n                {                    \n                    prettyPrint();\n                }\n            }\n\n            return this;\n        },\n        \n        /**\n         * 解析TeX(KaTeX)科学公式\n         * TeX(KaTeX) Renderer\n         * \n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        katexRender : function() {\n            \n            if (timer === null)\n            {\n                return this;\n            }\n            \n            this.previewContainer.find(\".\" + editormd.classNames.tex).each(function(){\n                var tex  = $(this);\n                editormd.$katex.render(tex.text(), tex[0]);\n                \n                tex.find(\".katex\").css(\"font-size\", \"1.6em\");\n            });   \n\n            return this;\n        },\n        \n        /**\n         * 解析和渲染流程图及时序图\n         * FlowChart and SequenceDiagram Renderer\n         * \n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        flowChartAndSequenceDiagramRender : function() {\n            var $this            = this;\n            var settings         = this.settings;\n            var previewContainer = this.previewContainer;\n            \n            if (editormd.isIE8) {\n                return this;\n            }\n\n            if (settings.flowChart) {\n                if (flowchartTimer === null) {\n                    return this;\n                }\n                \n                previewContainer.find(\".flowchart\").flowChart(); \n            }\n\n            if (settings.sequenceDiagram) {\n                previewContainer.find(\".sequence-diagram\").sequenceDiagram({theme: \"simple\"});\n            }\n                    \n            var preview    = $this.preview;\n            var codeMirror = $this.codeMirror;\n            var codeView   = codeMirror.find(\".CodeMirror-scroll\");\n\n            var height    = codeView.height();\n            var scrollTop = codeView.scrollTop();                    \n            var percent   = (scrollTop / codeView[0].scrollHeight);\n            var tocHeight = 0;\n\n            preview.find(\".markdown-toc-list\").each(function(){\n                tocHeight += $(this).height();\n            });\n\n            var tocMenuHeight = preview.find(\".editormd-toc-menu\").height(); \n            tocMenuHeight = (!tocMenuHeight) ? 0 : tocMenuHeight;\n\n            if (scrollTop === 0) \n            {\n                preview.scrollTop(0);\n            } \n            else if (scrollTop + height >= codeView[0].scrollHeight - 16)\n            { \n                preview.scrollTop(preview[0].scrollHeight);                        \n            } \n            else\n            {                  \n                preview.scrollTop((preview[0].scrollHeight + tocHeight + tocMenuHeight) * percent);\n            }\n\n            return this;\n        },\n        \n        /**\n         * 注册键盘快捷键处理\n         * Register CodeMirror keyMaps (keyboard shortcuts).\n         * \n         * @param   {Object}    keyMap      KeyMap key/value {\"(Ctrl/Shift/Alt)-Key\" : function(){}}\n         * @returns {editormd}              return this\n         */\n        \n        registerKeyMaps : function(keyMap) {\n            \n            var _this           = this;\n            var cm              = this.cm;\n            var settings        = this.settings;\n            var toolbarHandlers = editormd.toolbarHandlers;\n            var disabledKeyMaps = settings.disabledKeyMaps;\n            \n            keyMap              = keyMap || null;\n            \n            if (keyMap)\n            {\n                for (var i in keyMap)\n                {\n                    if ($.inArray(i, disabledKeyMaps) < 0)\n                    {\n                        var map = {};\n                        map[i]  = keyMap[i];\n\n                        cm.addKeyMap(keyMap);\n                    }\n                }\n            }\n            else\n            {\n                for (var k in editormd.keyMaps)\n                {\n                    var _keyMap = editormd.keyMaps[k];\n                    var handle = (typeof _keyMap === \"string\") ? $.proxy(toolbarHandlers[_keyMap], _this) : $.proxy(_keyMap, _this);\n                    \n                    if ($.inArray(k, [\"F9\", \"F10\", \"F11\"]) < 0 && $.inArray(k, disabledKeyMaps) < 0)\n                    {\n                        var _map = {};\n                        _map[k] = handle;\n\n                        cm.addKeyMap(_map);\n                    }\n                }\n                \n                $(window).keydown(function(event) {\n                    \n                    var keymaps = {\n                        \"120\" : \"F9\",\n                        \"121\" : \"F10\",\n                        \"122\" : \"F11\"\n                    };\n                    \n                    if ( $.inArray(keymaps[event.keyCode], disabledKeyMaps) < 0 )\n                    {\n                        switch (event.keyCode)\n                        {\n                            case 120:\n                                    $.proxy(toolbarHandlers[\"watch\"], _this)();\n                                    return false;\n                                break;\n                                \n                            case 121:\n                                    $.proxy(toolbarHandlers[\"preview\"], _this)();\n                                    return false;\n                                break;\n                                \n                            case 122:\n                                    $.proxy(toolbarHandlers[\"fullscreen\"], _this)();                        \n                                    return false;\n                                break;\n                                \n                            default:\n                                break;\n                        }\n                    }\n                });\n            }\n\n            return this;\n        },\n        \n        /**\n         * 绑定同步滚动\n         * \n         * @returns {editormd} return this\n         */\n        \n        bindScrollEvent : function() {\n            \n            var _this            = this;\n            var preview          = this.preview;\n            var settings         = this.settings;\n            var codeMirror       = this.codeMirror;\n            var mouseOrTouch     = editormd.mouseOrTouch;\n            \n            if (!settings.syncScrolling) {\n                return this;\n            }\n                \n            var cmBindScroll = function() {    \n                codeMirror.find(\".CodeMirror-scroll\").bind(mouseOrTouch(\"scroll\", \"touchmove\"), function(event) {\n                    var height    = $(this).height();\n                    var scrollTop = $(this).scrollTop();                    \n                    var percent   = (scrollTop / $(this)[0].scrollHeight);\n                    \n                    var tocHeight = 0;\n                    \n                    preview.find(\".markdown-toc-list\").each(function(){\n                        tocHeight += $(this).height();\n                    });\n                    \n                    var tocMenuHeight = preview.find(\".editormd-toc-menu\").height();\n                    tocMenuHeight = (!tocMenuHeight) ? 0 : tocMenuHeight;\n\n                    if (scrollTop === 0) \n                    {\n                        preview.scrollTop(0);\n                    } \n                    else if (scrollTop + height >= $(this)[0].scrollHeight - 16)\n                    { \n                        preview.scrollTop(preview[0].scrollHeight);                        \n                    } \n                    else\n                    {\n                        preview.scrollTop((preview[0].scrollHeight  + tocHeight + tocMenuHeight) * percent);\n                    }\n                    \n                    $.proxy(settings.onscroll, _this)(event);\n                });\n            };\n\n            var cmUnbindScroll = function() {\n                codeMirror.find(\".CodeMirror-scroll\").unbind(mouseOrTouch(\"scroll\", \"touchmove\"));\n            };\n\n            var previewBindScroll = function() {\n                \n                preview.bind(mouseOrTouch(\"scroll\", \"touchmove\"), function(event) {\n                    var height    = $(this).height();\n                    var scrollTop = $(this).scrollTop();         \n                    var percent   = (scrollTop / $(this)[0].scrollHeight);\n                    var codeView  = codeMirror.find(\".CodeMirror-scroll\");\n\n                    if(scrollTop === 0) \n                    {\n                        codeView.scrollTop(0);\n                    }\n                    else if (scrollTop + height >= $(this)[0].scrollHeight)\n                    {\n                        codeView.scrollTop(codeView[0].scrollHeight);                        \n                    }\n                    else \n                    {\n                        codeView.scrollTop(codeView[0].scrollHeight * percent);\n                    }\n                    \n                    $.proxy(settings.onpreviewscroll, _this)(event);\n                });\n\n            };\n\n            var previewUnbindScroll = function() {\n                preview.unbind(mouseOrTouch(\"scroll\", \"touchmove\"));\n            }; \n\n\t\t\tcodeMirror.bind({\n\t\t\t\tmouseover  : cmBindScroll,\n\t\t\t\tmouseout   : cmUnbindScroll,\n\t\t\t\ttouchstart : cmBindScroll,\n\t\t\t\ttouchend   : cmUnbindScroll\n\t\t\t});\n            \n            if (settings.syncScrolling === \"single\") {\n                return this;\n            }\n            \n\t\t\tpreview.bind({\n\t\t\t\tmouseover  : previewBindScroll,\n\t\t\t\tmouseout   : previewUnbindScroll,\n\t\t\t\ttouchstart : previewBindScroll,\n\t\t\t\ttouchend   : previewUnbindScroll\n\t\t\t});\n\n            return this;\n        },\n        \n        bindChangeEvent : function() {\n            \n            var _this            = this;\n            var cm               = this.cm;\n            var settings         = this.settings;\n            \n            if (!settings.syncScrolling) {\n                return this;\n            }\n            \n            cm.on(\"change\", function(_cm, changeObj) {\n                \n                if (settings.watch)\n                {\n                    _this.previewContainer.css(\"padding\", settings.autoHeight ? \"20px 20px 50px 40px\" : \"20px\");\n                }\n                \n                timer = setTimeout(function() {\n                    clearTimeout(timer);\n                    _this.save();\n                    timer = null;\n                }, settings.delay);\n            });\n\n            return this;\n        },\n        \n        /**\n         * 加载队列完成之后的显示处理\n         * Display handle of the module queues loaded after.\n         * \n         * @param   {Boolean}   recreate   是否为重建编辑器\n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        loadedDisplay : function(recreate) {\n            \n            recreate             = recreate || false;\n            \n            var _this            = this;\n            var editor           = this.editor;\n            var preview          = this.preview;\n            var settings         = this.settings;\n            \n            this.containerMask.hide();\n            \n            this.save();\n            \n            if (settings.watch) {\n                preview.show();\n            }\n            \n            editor.data(\"oldWidth\", editor.width()).data(\"oldHeight\", editor.height()); // 为了兼容Zepto\n            \n            this.resize();\n            this.registerKeyMaps();\n            \n            $(window).resize(function(){\n                _this.resize();\n            });\n            \n            this.bindScrollEvent().bindChangeEvent();\n            \n            if (!recreate)\n            {\n                $.proxy(settings.onload, this)();\n            }\n            \n            this.state.loaded = true;\n\n            return this;\n        },\n        \n        /**\n         * 设置编辑器的宽度\n         * Set editor width\n         * \n         * @param   {Number|String} width  编辑器宽度值\n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        width : function(width) {\n                \n            this.editor.css(\"width\", (typeof width === \"number\") ? width  + \"px\" : width);            \n            this.resize();\n            \n            return this;\n        },\n        \n        /**\n         * 设置编辑器的高度\n         * Set editor height\n         * \n         * @param   {Number|String} height  编辑器高度值\n         * @returns {editormd}              返回editormd的实例对象\n         */\n        \n        height : function(height) {\n                \n            this.editor.css(\"height\", (typeof height === \"number\")  ? height  + \"px\" : height);            \n            this.resize();\n            \n            return this;\n        },\n        \n        /**\n         * 调整编辑器的尺寸和布局\n         * Resize editor layout\n         * \n         * @param   {Number|String} [width=null]  编辑器宽度值\n         * @param   {Number|String} [height=null] 编辑器高度值\n         * @returns {editormd}                    返回editormd的实例对象\n         */\n        \n        resize : function(width, height) {\n            \n            width  = width  || null;\n            height = height || null;\n            \n            var state      = this.state;\n            var editor     = this.editor;\n            var preview    = this.preview;\n            var toolbar    = this.toolbar;\n            var settings   = this.settings;\n            var codeMirror = this.codeMirror;\n            \n            if (width)\n            {\n                editor.css(\"width\", (typeof width  === \"number\") ? width  + \"px\" : width);\n            }\n            \n            if (settings.autoHeight && !state.fullscreen && !state.preview)\n            {\n                editor.css(\"height\", \"auto\");\n                codeMirror.css(\"height\", \"auto\");\n            } \n            else \n            {\n                if (height) \n                {\n                    editor.css(\"height\", (typeof height === \"number\") ? height + \"px\" : height);\n                }\n                \n                if (state.fullscreen)\n                {\n                    editor.height($(window).height());\n                }\n\n                if (settings.toolbar && !settings.readOnly) \n                {\n                    codeMirror.css(\"margin-top\", toolbar.height() + 1).height(editor.height() - toolbar.height());\n                } \n                else\n                {\n                    codeMirror.css(\"margin-top\", 0).height(editor.height());\n                }\n            }\n            \n            if(settings.watch) \n            {\n                codeMirror.width(editor.width() / 2);\n                preview.width((!state.preview) ? editor.width() / 2 : editor.width());\n                \n                this.previewContainer.css(\"padding\", settings.autoHeight ? \"20px 20px 50px 40px\" : \"20px\");\n                \n                if (settings.toolbar && !settings.readOnly) \n                {\n                    preview.css(\"top\", toolbar.height() + 1);\n                } \n                else \n                {\n                    preview.css(\"top\", 0);\n                }\n                \n                if (settings.autoHeight && !state.fullscreen && !state.preview)\n                {\n                    preview.height(\"\");\n                }\n                else\n                {                \n                    var previewHeight = (settings.toolbar && !settings.readOnly) ? editor.height() - toolbar.height() : editor.height();\n                    \n                    preview.height(previewHeight);\n                }\n            } \n            else \n            {\n                codeMirror.width(editor.width());\n                preview.hide();\n            }\n            \n            if (state.loaded) \n            {\n                $.proxy(settings.onresize, this)();\n            }\n\n            return this;\n        },\n        \n        /**\n         * 解析和保存Markdown代码\n         * Parse & Saving Markdown source code\n         * \n         * @returns {editormd}     返回editormd的实例对象\n         */\n        \n        save : function() {\n            \n            if (timer === null)\n            {\n                return this;\n            }\n            \n            var _this            = this;\n            var state            = this.state;\n            var settings         = this.settings;\n            var cm               = this.cm;            \n            var cmValue          = cm.getValue();\n            var previewContainer = this.previewContainer;\n\n            if (settings.mode !== \"gfm\" && settings.mode !== \"markdown\") \n            {\n                this.markdownTextarea.val(cmValue);\n                \n                return this;\n            }\n            \n            var marked          = editormd.$marked;\n            var markdownToC     = this.markdownToC = [];            \n            var rendererOptions = this.markedRendererOptions = {  \n                toc                  : settings.toc,\n                tocm                 : settings.tocm,\n                tocStartLevel        : settings.tocStartLevel,\n                pageBreak            : settings.pageBreak,\n                taskList             : settings.taskList,\n                emoji                : settings.emoji,\n                tex                  : settings.tex,\n                atLink               : settings.atLink,           // for @link\n                emailLink            : settings.emailLink,        // for mail address auto link\n                flowChart            : settings.flowChart,\n                sequenceDiagram      : settings.sequenceDiagram,\n                previewCodeHighlight : settings.previewCodeHighlight,\n            };\n            \n            var markedOptions = this.markedOptions = {\n                renderer    : editormd.markedRenderer(markdownToC, rendererOptions),\n                gfm         : true,\n                tables      : true,\n                breaks      : true,\n                pedantic    : false,\n                sanitize    : (settings.htmlDecode) ? false : true,  // 关闭忽略HTML标签，即开启识别HTML标签，默认为false\n                smartLists  : true,\n                smartypants : true\n            };\n            \n            marked.setOptions(markedOptions);\n                    \n            var newMarkdownDoc = editormd.$marked(cmValue, markedOptions);\n            \n            //console.info(\"cmValue\", cmValue, newMarkdownDoc);\n            \n            newMarkdownDoc = editormd.filterHTMLTags(newMarkdownDoc, settings.htmlDecode);\n            \n            //console.error(\"cmValue\", cmValue, newMarkdownDoc);\n            \n            this.markdownTextarea.text(cmValue);\n            \n            cm.save();\n            \n            if (settings.saveHTMLToTextarea) \n            {\n                this.htmlTextarea.text(newMarkdownDoc);\n            }\n            \n            if(settings.watch || (!settings.watch && state.preview))\n            {\n                previewContainer.html(newMarkdownDoc);\n\n                this.previewCodeHighlight();\n                \n                if (settings.toc) \n                {\n                    var tocContainer = (settings.tocContainer === \"\") ? previewContainer : $(settings.tocContainer);\n                    var tocMenu      = tocContainer.find(\".\" + this.classPrefix + \"toc-menu\");\n                    \n                    tocContainer.attr(\"previewContainer\", (settings.tocContainer === \"\") ? \"true\" : \"false\");\n                    \n                    if (settings.tocContainer !== \"\" && tocMenu.length > 0)\n                    {\n                        tocMenu.remove();\n                    }\n                    \n                    editormd.markdownToCRenderer(markdownToC, tocContainer, settings.tocDropdown, settings.tocStartLevel);\n            \n                    if (settings.tocDropdown || tocContainer.find(\".\" + this.classPrefix + \"toc-menu\").length > 0)\n                    {\n                        editormd.tocDropdownMenu(tocContainer, (settings.tocTitle !== \"\") ? settings.tocTitle : this.lang.tocTitle);\n                    }\n            \n                    if (settings.tocContainer !== \"\")\n                    {\n                        previewContainer.find(\".markdown-toc\").css(\"border\", \"none\");\n                    }\n                }\n                \n                if (settings.tex)\n                {\n                    if (!editormd.kaTeXLoaded && settings.autoLoadModules) \n                    {\n                        editormd.loadKaTeX(function() {\n                            editormd.$katex = katex;\n                            editormd.kaTeXLoaded = true;\n                            _this.katexRender();\n                        });\n                    } \n                    else \n                    {\n                        editormd.$katex = katex;\n                        this.katexRender();\n                    }\n                }                \n                \n                if (settings.flowChart || settings.sequenceDiagram)\n                {\n                    flowchartTimer = setTimeout(function(){\n                        clearTimeout(flowchartTimer);\n                        _this.flowChartAndSequenceDiagramRender();\n                        flowchartTimer = null;\n                    }, 10);\n                }\n\n                if (state.loaded) \n                {\n                    $.proxy(settings.onchange, this)();\n                }\n            }\n\n            return this;\n        },\n        \n        /**\n         * 聚焦光标位置\n         * Focusing the cursor position\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        focus : function() {\n            this.cm.focus();\n\n            return this;\n        },\n        \n        /**\n         * 设置光标的位置\n         * Set cursor position\n         * \n         * @param   {Object}    cursor 要设置的光标位置键值对象，例：{line:1, ch:0}\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        setCursor : function(cursor) {\n            this.cm.setCursor(cursor);\n\n            return this;\n        },\n        \n        /**\n         * 获取当前光标的位置\n         * Get the current position of the cursor\n         * \n         * @returns {Cursor}         返回一个光标Cursor对象\n         */\n        \n        getCursor : function() {\n            return this.cm.getCursor();\n        },\n        \n        /**\n         * 设置光标选中的范围\n         * Set cursor selected ranges\n         * \n         * @param   {Object}    from   开始位置的光标键值对象，例：{line:1, ch:0}\n         * @param   {Object}    to     结束位置的光标键值对象，例：{line:1, ch:0}\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        setSelection : function(from, to) {\n        \n            this.cm.setSelection(from, to);\n        \n            return this;\n        },\n        \n        /**\n         * 获取光标选中的文本\n         * Get the texts from cursor selected\n         * \n         * @returns {String}         返回选中文本的字符串形式\n         */\n        \n        getSelection : function() {\n            return this.cm.getSelection();\n        },\n        \n        /**\n         * 设置光标选中的文本范围\n         * Set the cursor selection ranges\n         * \n         * @param   {Array}    ranges  cursor selection ranges array\n         * @returns {Array}            return this\n         */\n        \n        setSelections : function(ranges) {\n            this.cm.setSelections(ranges);\n            \n            return this;\n        },\n        \n        /**\n         * 获取光标选中的文本范围\n         * Get the cursor selection ranges\n         * \n         * @returns {Array}         return selection ranges array\n         */\n        \n        getSelections : function() {\n            return this.cm.getSelections();\n        },\n        \n        /**\n         * 替换当前光标选中的文本或在当前光标处插入新字符\n         * Replace the text at the current cursor selected or insert a new character at the current cursor position\n         * \n         * @param   {String}    value  要插入的字符值\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        replaceSelection : function(value) {\n            this.cm.replaceSelection(value);\n\n            return this;\n        },\n        \n        /**\n         * 在当前光标处插入新字符\n         * Insert a new character at the current cursor position\n         *\n         * 同replaceSelection()方法\n         * With the replaceSelection() method\n         * \n         * @param   {String}    value  要插入的字符值\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        insertValue : function(value) {\n            this.replaceSelection(value);\n\n            return this;\n        },\n        \n        /**\n         * 追加markdown\n         * append Markdown to editor\n         * \n         * @param   {String}    md     要追加的markdown源文档\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        appendMarkdown : function(md) {\n            var settings = this.settings;\n            var cm       = this.cm;\n            \n            cm.setValue(cm.getValue() + md);\n            \n            return this;\n        },\n        \n        /**\n         * 设置和传入编辑器的markdown源文档\n         * Set Markdown source document\n         * \n         * @param   {String}    md     要传入的markdown源文档\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        setMarkdown : function(md) {\n            this.cm.setValue(md || this.settings.markdown);\n            \n            return this;\n        },\n        \n        /**\n         * 获取编辑器的markdown源文档\n         * Set Editor.md markdown/CodeMirror value\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        getMarkdown : function() {\n            return this.cm.getValue();\n        },\n        \n        /**\n         * 获取编辑器的源文档\n         * Get CodeMirror value\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        getValue : function() {\n            return this.cm.getValue();\n        },\n        \n        /**\n         * 设置编辑器的源文档\n         * Set CodeMirror value\n         * \n         * @param   {String}     value   set code/value/string/text\n         * @returns {editormd}           返回editormd的实例对象\n         */\n        \n        setValue : function(value) {\n            this.cm.setValue(value);\n            \n            return this;\n        },\n        \n        /**\n         * 清空编辑器\n         * Empty CodeMirror editor container\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        clear : function() {\n            this.cm.setValue(\"\");\n            \n            return this;\n        },\n        \n        /**\n         * 获取解析后存放在Textarea的HTML源码\n         * Get parsed html code from Textarea\n         * \n         * @returns {String}               返回HTML源码\n         */\n        \n        getHTML : function() {\n            if (!this.settings.saveHTMLToTextarea)\n            {\n                alert(\"Error: settings.saveHTMLToTextarea == false\");\n\n                return false;\n            }\n            \n            return this.htmlTextarea.val();\n        },\n        \n        /**\n         * getHTML()的别名\n         * getHTML (alias)\n         * \n         * @returns {String}           Return html code 返回HTML源码\n         */\n        \n        getTextareaSavedHTML : function() {\n            return this.getHTML();\n        },\n        \n        /**\n         * 获取预览窗口的HTML源码\n         * Get html from preview container\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        getPreviewedHTML : function() {\n            if (!this.settings.watch)\n            {\n                alert(\"Error: settings.watch == false\");\n\n                return false;\n            }\n            \n            return this.previewContainer.html();\n        },\n        \n        /**\n         * 开启实时预览\n         * Enable real-time watching\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        watch : function(callback) {     \n            var settings        = this.settings;\n            \n            if ($.inArray(settings.mode, [\"gfm\", \"markdown\"]) < 0)\n            {\n                return this;\n            }\n            \n            this.state.watching = settings.watch = true;\n            this.preview.show();\n            \n            if (this.toolbar)\n            {\n                var watchIcon   = settings.toolbarIconsClass.watch;\n                var unWatchIcon = settings.toolbarIconsClass.unwatch;\n                \n                var icon        = this.toolbar.find(\".fa[name=watch]\");\n                icon.parent().attr(\"title\", settings.lang.toolbar.watch);\n                icon.removeClass(unWatchIcon).addClass(watchIcon);\n            }\n            \n            this.codeMirror.css(\"border-right\", \"1px solid #ddd\").width(this.editor.width() / 2); \n            \n            timer = 0;\n            \n            this.save().resize();\n            \n            if (!settings.onwatch)\n            {\n                settings.onwatch = callback || function() {};\n            }\n            \n            $.proxy(settings.onwatch, this)();\n            \n            return this;\n        },\n        \n        /**\n         * 关闭实时预览\n         * Disable real-time watching\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        unwatch : function(callback) {\n            var settings        = this.settings;\n            this.state.watching = settings.watch = false;\n            this.preview.hide();\n            \n            if (this.toolbar) \n            {\n                var watchIcon   = settings.toolbarIconsClass.watch;\n                var unWatchIcon = settings.toolbarIconsClass.unwatch;\n                \n                var icon    = this.toolbar.find(\".fa[name=watch]\");\n                icon.parent().attr(\"title\", settings.lang.toolbar.unwatch);\n                icon.removeClass(watchIcon).addClass(unWatchIcon);\n            }\n            \n            this.codeMirror.css(\"border-right\", \"none\").width(this.editor.width());\n            \n            this.resize();\n            \n            if (!settings.onunwatch)\n            {\n                settings.onunwatch = callback || function() {};\n            }\n            \n            $.proxy(settings.onunwatch, this)();\n            \n            return this;\n        },\n        \n        /**\n         * 显示编辑器\n         * Show editor\n         * \n         * @param   {Function} [callback=function()] 回调函数\n         * @returns {editormd}                       返回editormd的实例对象\n         */\n        \n        show : function(callback) {\n            callback  = callback || function() {};\n            \n            var _this = this;\n            this.editor.show(0, function() {\n                $.proxy(callback, _this)();\n            });\n            \n            return this;\n        },\n        \n        /**\n         * 隐藏编辑器\n         * Hide editor\n         * \n         * @param   {Function} [callback=function()] 回调函数\n         * @returns {editormd}                       返回editormd的实例对象\n         */\n        \n        hide : function(callback) {\n            callback  = callback || function() {};\n            \n            var _this = this;\n            this.editor.hide(0, function() {\n                $.proxy(callback, _this)();\n            });\n            \n            return this;\n        },\n        \n        /**\n         * 隐藏编辑器部分，只预览HTML\n         * Enter preview html state\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        previewing : function() {\n            \n            var _this            = this;\n            var editor           = this.editor;\n            var preview          = this.preview;\n            var toolbar          = this.toolbar;\n            var settings         = this.settings;\n            var codeMirror       = this.codeMirror;\n            var previewContainer = this.previewContainer;\n            \n            if ($.inArray(settings.mode, [\"gfm\", \"markdown\"]) < 0) {\n                return this;\n            }\n            \n            if (settings.toolbar && toolbar) {\n                toolbar.toggle();\n                toolbar.find(\".fa[name=preview]\").toggleClass(\"active\");\n            }\n            \n            codeMirror.toggle();\n            \n            var escHandle = function(event) {\n                if (event.shiftKey && event.keyCode === 27) {\n                    _this.previewed();\n                }\n            };\n\n            if (codeMirror.css(\"display\") === \"none\") // 为了兼容Zepto，而不使用codeMirror.is(\":hidden\")\n            {\n                this.state.preview = true;\n\n                if (this.state.fullscreen) {\n                    preview.css(\"background\", \"#fff\");\n                }\n                \n                editor.find(\".\" + this.classPrefix + \"preview-close-btn\").show().bind(editormd.mouseOrTouch(\"click\", \"touchend\"), function(){\n                    _this.previewed();\n                });\n            \n                if (!settings.watch)\n                {\n                    this.save();\n                } \n                else \n                {\n                    previewContainer.css(\"padding\", \"\");\n                }\n                \n                previewContainer.addClass(this.classPrefix + \"preview-active\");\n\n                preview.show().css({\n                    position  : \"\",\n                    top       : 0,\n                    width     : editor.width(),\n                    height    : (settings.autoHeight && !this.state.fullscreen) ? \"auto\" : editor.height()\n                });\n                \n                if (this.state.loaded)\n                {\n                    $.proxy(settings.onpreviewing, this)();\n                }\n\n                $(window).bind(\"keyup\", escHandle);\n            } \n            else \n            {\n                $(window).unbind(\"keyup\", escHandle);\n                this.previewed();\n            }\n        },\n        \n        /**\n         * 显示编辑器部分，退出只预览HTML\n         * Exit preview html state\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        previewed : function() {\n            \n            var editor           = this.editor;\n            var preview          = this.preview;\n            var toolbar          = this.toolbar;\n            var settings         = this.settings;\n            var previewContainer = this.previewContainer;\n            var previewCloseBtn  = editor.find(\".\" + this.classPrefix + \"preview-close-btn\");\n\n            this.state.preview   = false;\n            \n            this.codeMirror.show();\n            \n            if (settings.toolbar) {\n                toolbar.show();\n            }\n            \n            preview[(settings.watch) ? \"show\" : \"hide\"]();\n            \n            previewCloseBtn.hide().unbind(editormd.mouseOrTouch(\"click\", \"touchend\"));\n                \n            previewContainer.removeClass(this.classPrefix + \"preview-active\");\n                \n            if (settings.watch)\n            {\n                previewContainer.css(\"padding\", \"20px\");\n            }\n            \n            preview.css({ \n                background : null,\n                position   : \"absolute\",\n                width      : editor.width() / 2,\n                height     : (settings.autoHeight && !this.state.fullscreen) ? \"auto\" : editor.height() - toolbar.height(),\n                top        : (settings.toolbar)    ? toolbar.height() : 0\n            });\n\n            if (this.state.loaded)\n            {\n                $.proxy(settings.onpreviewed, this)();\n            }\n            \n            return this;\n        },\n        \n        /**\n         * 编辑器全屏显示\n         * Fullscreen show\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        fullscreen : function() {\n            \n            var _this            = this;\n            var state            = this.state;\n            var editor           = this.editor;\n            var preview          = this.preview;\n            var toolbar          = this.toolbar;\n            var settings         = this.settings;\n            var fullscreenClass  = this.classPrefix + \"fullscreen\";\n            \n            if (toolbar) {\n                toolbar.find(\".fa[name=fullscreen]\").parent().toggleClass(\"active\"); \n            }\n            \n            var escHandle = function(event) {\n                if (!event.shiftKey && event.keyCode === 27) \n                {\n                    if (state.fullscreen)\n                    {\n                        _this.fullscreenExit();\n                    }\n                }\n            };\n\n            if (!editor.hasClass(fullscreenClass)) \n            {\n                state.fullscreen = true;\n\n                $(\"html,body\").css(\"overflow\", \"hidden\");\n                \n                editor.css({\n                    width    : $(window).width(),\n                    height   : $(window).height()\n                }).addClass(fullscreenClass);\n\n                this.resize();\n    \n                $.proxy(settings.onfullscreen, this)();\n\n                $(window).bind(\"keyup\", escHandle);\n            }\n            else\n            {           \n                $(window).unbind(\"keyup\", escHandle); \n                this.fullscreenExit();\n            }\n\n            return this;\n        },\n        \n        /**\n         * 编辑器退出全屏显示\n         * Exit fullscreen state\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        fullscreenExit : function() {\n            \n            var editor            = this.editor;\n            var settings          = this.settings;\n            var toolbar           = this.toolbar;\n            var fullscreenClass   = this.classPrefix + \"fullscreen\";  \n            \n            this.state.fullscreen = false;\n            \n            if (toolbar) {\n                toolbar.find(\".fa[name=fullscreen]\").parent().removeClass(\"active\"); \n            }\n\n            $(\"html,body\").css(\"overflow\", \"\");\n\n            editor.css({\n                width    : editor.data(\"oldWidth\"),\n                height   : editor.data(\"oldHeight\")\n            }).removeClass(fullscreenClass);\n\n            this.resize();\n            \n            $.proxy(settings.onfullscreenExit, this)();\n\n            return this;\n        },\n        \n        /**\n         * 加载并执行插件\n         * Load and execute the plugin\n         * \n         * @param   {String}     name    plugin name / function name\n         * @param   {String}     path    plugin load path\n         * @returns {editormd}           返回editormd的实例对象\n         */\n        \n        executePlugin : function(name, path) {\n            \n            var _this    = this;\n            var cm       = this.cm;\n            var settings = this.settings;\n            \n            path = settings.pluginPath + path;\n            \n            if (typeof define === \"function\") \n            {            \n                if (typeof this[name] === \"undefined\")\n                {\n                    alert(\"Error: \" + name + \" plugin is not found, you are not load this plugin.\");\n                    \n                    return this;\n                }\n                \n                this[name](cm);\n                \n                return this;\n            }\n            \n            if ($.inArray(path, editormd.loadFiles.plugin) < 0)\n            {\n                editormd.loadPlugin(path, function() {\n                    editormd.loadPlugins[name] = _this[name];\n                    _this[name](cm);\n                });\n            }\n            else\n            {\n                $.proxy(editormd.loadPlugins[name], this)(cm);\n            }\n            \n            return this;\n        },\n                \n        /**\n         * 搜索替换\n         * Search & replace\n         * \n         * @param   {String}     command    CodeMirror serach commands, \"find, fintNext, fintPrev, clearSearch, replace, replaceAll\"\n         * @returns {editormd}              return this\n         */\n        \n        search : function(command) {\n            var settings = this.settings;\n            \n            if (!settings.searchReplace)\n            {\n                alert(\"Error: settings.searchReplace == false\");\n                return this;\n            }\n            \n            if (!settings.readOnly)\n            {\n                this.cm.execCommand(command || \"find\");\n            }\n            \n            return this;\n        },\n        \n        searchReplace : function() {            \n            this.search(\"replace\");\n            \n            return this;\n        },\n        \n        searchReplaceAll : function() {          \n            this.search(\"replaceAll\");\n            \n            return this;\n        }\n    };\n    \n    editormd.fn.init.prototype = editormd.fn; \n   \n    /**\n     * 锁屏\n     * lock screen when dialog opening\n     * \n     * @returns {void}\n     */\n\n    editormd.dialogLockScreen = function() {\n        var settings = this.settings || {dialogLockScreen : true};\n        \n        if (settings.dialogLockScreen) \n        {            \n            $(\"html,body\").css(\"overflow\", \"hidden\");\n            this.resize();\n        }\n    };\n   \n    /**\n     * 显示透明背景层\n     * Display mask layer when dialog opening\n     * \n     * @param   {Object}     dialog    dialog jQuery object\n     * @returns {void}\n     */\n    \n    editormd.dialogShowMask = function(dialog) {\n        var editor   = this.editor;\n        var settings = this.settings || {dialogShowMask : true};\n        \n        dialog.css({\n            top  : ($(window).height() - dialog.height()) / 2 + \"px\",\n            left : ($(window).width()  - dialog.width())  / 2 + \"px\"\n        });\n\n        if (settings.dialogShowMask) {\n            editor.children(\".\" + this.classPrefix + \"mask\").css(\"z-index\", parseInt(dialog.css(\"z-index\")) - 1).show();\n        }\n    };\n\n    editormd.toolbarHandlers = {\n        undo : function() {\n            this.cm.undo();\n        },\n        \n        redo : function() {\n            this.cm.redo();\n        },\n        \n        bold : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"**\" + selection + \"**\");\n\n            if(selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n        },\n        \n        del : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"~~\" + selection + \"~~\");\n\n            if(selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n        },\n\n        italic : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"*\" + selection + \"*\");\n\n            if(selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n\n        quote : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"> \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n            else\n            {\n                cm.replaceSelection(\"> \" + selection);\n            }\n\n            //cm.replaceSelection(\"> \" + selection);\n            //cm.setCursor(cursor.line, (selection === \"\") ? cursor.ch + 2 : cursor.ch + selection.length + 2);\n        },\n        \n        ucfirst : function() {\n            var cm         = this.cm;\n            var selection  = cm.getSelection();\n            var selections = cm.listSelections();\n\n            cm.replaceSelection(editormd.firstUpperCase(selection));\n            cm.setSelections(selections);\n        },\n        \n        ucwords : function() {\n            var cm         = this.cm;\n            var selection  = cm.getSelection();\n            var selections = cm.listSelections();\n\n            cm.replaceSelection(editormd.wordsFirstUpperCase(selection));\n            cm.setSelections(selections);\n        },\n        \n        uppercase : function() {\n            var cm         = this.cm;\n            var selection  = cm.getSelection();\n            var selections = cm.listSelections();\n\n            cm.replaceSelection(selection.toUpperCase());\n            cm.setSelections(selections);\n        },\n        \n        lowercase : function() {\n            var cm         = this.cm;\n            var cursor     = cm.getCursor();\n            var selection  = cm.getSelection();\n            var selections = cm.listSelections();\n            \n            cm.replaceSelection(selection.toLowerCase());\n            cm.setSelections(selections);\n        },\n\n        h1 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"# \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n            else\n            {\n                cm.replaceSelection(\"# \" + selection);\n            }\n        },\n\n        h2 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"## \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 3);\n            }\n            else\n            {\n                cm.replaceSelection(\"## \" + selection);\n            }\n        },\n\n        h3 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"### \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 4);\n            }\n            else\n            {\n                cm.replaceSelection(\"### \" + selection);\n            }\n        },\n\n        h4 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"#### \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 5);\n            }\n            else\n            {\n                cm.replaceSelection(\"#### \" + selection);\n            }\n        },\n\n        h5 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"##### \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 6);\n            }\n            else\n            {\n                cm.replaceSelection(\"##### \" + selection);\n            }\n        },\n\n        h6 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"###### \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 7);\n            }\n            else\n            {\n                cm.replaceSelection(\"###### \" + selection);\n            }\n        },\n\n        \"list-ul\" : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (selection === \"\") \n            {\n                cm.replaceSelection(\"- \" + selection);\n            } \n            else \n            {\n                var selectionText = selection.split(\"\\n\");\n\n                for (var i = 0, len = selectionText.length; i < len; i++) \n                {\n                    selectionText[i] = (selectionText[i] === \"\") ? \"\" : \"- \" + selectionText[i];\n                }\n\n                cm.replaceSelection(selectionText.join(\"\\n\"));\n            }\n        },\n\n        \"list-ol\" : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if(selection === \"\") \n            {\n                cm.replaceSelection(\"1. \" + selection);\n            }\n            else\n            {\n                var selectionText = selection.split(\"\\n\");\n\n                for (var i = 0, len = selectionText.length; i < len; i++) \n                {\n                    selectionText[i] = (selectionText[i] === \"\") ? \"\" : (i+1) + \". \" + selectionText[i];\n                }\n\n                cm.replaceSelection(selectionText.join(\"\\n\"));\n            }\n        },\n\n        hr : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(((cursor.ch !== 0) ? \"\\n\\n\" : \"\\n\") + \"------------\\n\\n\");\n        },\n\n        tex : function() {\n            if (!this.settings.tex)\n            {\n                alert(\"settings.tex === false\");\n                return this;\n            }\n            \n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"$$\" + selection + \"$$\");\n\n            if(selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n        },\n\n        link : function() {\n            this.executePlugin(\"linkDialog\", \"link-dialog/link-dialog\");\n        },\n\n        \"reference-link\" : function() {\n            this.executePlugin(\"referenceLinkDialog\", \"reference-link-dialog/reference-link-dialog\");\n        },\n\n        pagebreak : function() {\n            if (!this.settings.pageBreak)\n            {\n                alert(\"settings.pageBreak === false\");\n                return this;\n            }\n            \n            var cm        = this.cm;\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"\\r\\n[========]\\r\\n\");\n        },\n\n        image : function() {\n            this.executePlugin(\"imageDialog\", \"image-dialog/image-dialog\");\n        },\n        \n        code : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"`\" + selection + \"`\");\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n\n        \"code-block\" : function() {\n            this.executePlugin(\"codeBlockDialog\", \"code-block-dialog/code-block-dialog\");            \n        },\n\n        \"preformatted-text\" : function() {\n            this.executePlugin(\"preformattedTextDialog\", \"preformatted-text-dialog/preformatted-text-dialog\");\n        },\n        \n        table : function() {\n            this.executePlugin(\"tableDialog\", \"table-dialog/table-dialog\");         \n        },\n        \n        datetime : function() {\n            var cm        = this.cm;\n            var selection = cm.getSelection();\n            var date      = new Date();\n            var langName  = this.settings.lang.name;\n            var datefmt   = editormd.dateFormat() + \" \" + editormd.dateFormat((langName === \"zh-cn\" || langName === \"zh-tw\") ? \"cn-week-day\" : \"week-day\");\n\n            cm.replaceSelection(datefmt);\n        },\n        \n        emoji : function() {\n            this.executePlugin(\"emojiDialog\", \"emoji-dialog/emoji-dialog\");\n        },\n                \n        \"html-entities\" : function() {\n            this.executePlugin(\"htmlEntitiesDialog\", \"html-entities-dialog/html-entities-dialog\");\n        },\n                \n        \"goto-line\" : function() {\n            this.executePlugin(\"gotoLineDialog\", \"goto-line-dialog/goto-line-dialog\");\n        },\n\n        watch : function() {    \n            this[this.settings.watch ? \"unwatch\" : \"watch\"]();\n        },\n\n        preview : function() {\n            this.previewing();\n        },\n\n        fullscreen : function() {\n            this.fullscreen();\n        },\n\n        clear : function() {\n            this.clear();\n        },\n        \n        search : function() {\n            this.search();\n        },\n\n        help : function() {\n            this.executePlugin(\"helpDialog\", \"help-dialog/help-dialog\");\n        },\n\n        info : function() {\n            this.showInfoDialog();\n        }\n    };\n    \n    editormd.keyMaps = {\n        \"Ctrl-1\"       : \"h1\",\n        \"Ctrl-2\"       : \"h2\",\n        \"Ctrl-3\"       : \"h3\",\n        \"Ctrl-4\"       : \"h4\",\n        \"Ctrl-5\"       : \"h5\",\n        \"Ctrl-6\"       : \"h6\",\n        \"Ctrl-B\"       : \"bold\",  // if this is string ==  editormd.toolbarHandlers.xxxx\n        \"Ctrl-D\"       : \"datetime\",\n        \n        \"Ctrl-E\"       : function() { // emoji\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            if (!this.settings.emoji)\n            {\n                alert(\"Error: settings.emoji == false\");\n                return ;\n            }\n\n            cm.replaceSelection(\":\" + selection + \":\");\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n        \"Ctrl-Alt-G\"   : \"goto-line\",\n        \"Ctrl-H\"       : \"hr\",\n        \"Ctrl-I\"       : \"italic\",\n        \"Ctrl-K\"       : \"code\",\n        \n        \"Ctrl-L\"        : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            var title = (selection === \"\") ? \"\" : \" \\\"\"+selection+\"\\\"\";\n\n            cm.replaceSelection(\"[\" + selection + \"](\"+title+\")\");\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n        \"Ctrl-U\"         : \"list-ul\",\n        \n        \"Shift-Ctrl-A\"   : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            if (!this.settings.atLink)\n            {\n                alert(\"Error: settings.atLink == false\");\n                return ;\n            }\n\n            cm.replaceSelection(\"@\" + selection);\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n        \n        \"Shift-Ctrl-C\"     : \"code\",\n        \"Shift-Ctrl-Q\"     : \"quote\",\n        \"Shift-Ctrl-S\"     : \"del\",\n        \"Shift-Ctrl-K\"     : \"tex\",  // KaTeX\n        \n        \"Shift-Alt-C\"      : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            cm.replaceSelection([\"```\", selection, \"```\"].join(\"\\n\"));\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 3);\n            } \n        },\n        \n        \"Shift-Ctrl-Alt-C\" : \"code-block\",\n        \"Shift-Ctrl-H\"     : \"html-entities\",\n        \"Shift-Alt-H\"      : \"help\",\n        \"Shift-Ctrl-E\"     : \"emoji\",\n        \"Shift-Ctrl-U\"     : \"uppercase\",\n        \"Shift-Alt-U\"      : \"ucwords\",\n        \"Shift-Ctrl-Alt-U\" : \"ucfirst\",\n        \"Shift-Alt-L\"      : \"lowercase\",\n        \n        \"Shift-Ctrl-I\"     : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            var title = (selection === \"\") ? \"\" : \" \\\"\"+selection+\"\\\"\";\n\n            cm.replaceSelection(\"![\" + selection + \"](\"+title+\")\");\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 4);\n            }\n        },\n        \n        \"Shift-Ctrl-Alt-I\" : \"image\",\n        \"Shift-Ctrl-L\"     : \"link\",\n        \"Shift-Ctrl-O\"     : \"list-ol\",\n        \"Shift-Ctrl-P\"     : \"preformatted-text\",\n        \"Shift-Ctrl-T\"     : \"table\",\n        \"Shift-Alt-P\"      : \"pagebreak\",\n        \"F9\"               : \"watch\",\n        \"F10\"              : \"preview\",\n        \"F11\"              : \"fullscreen\",\n    };\n    \n    /**\n     * 清除字符串两边的空格\n     * Clear the space of strings both sides.\n     * \n     * @param   {String}    str            string\n     * @returns {String}                   trimed string    \n     */\n    \n    var trim = function(str) {\n        return (!String.prototype.trim) ? str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\") : str.trim();\n    };\n    \n    editormd.trim = trim;\n    \n    /**\n     * 所有单词首字母大写\n     * Words first to uppercase\n     * \n     * @param   {String}    str            string\n     * @returns {String}                   string\n     */\n    \n    var ucwords = function (str) {\n        return str.toLowerCase().replace(/\\b(\\w)|\\s(\\w)/g, function($1) {  \n            return $1.toUpperCase();\n        });\n    };\n    \n    editormd.ucwords = editormd.wordsFirstUpperCase = ucwords;\n    \n    /**\n     * 字符串首字母大写\n     * Only string first char to uppercase\n     * \n     * @param   {String}    str            string\n     * @returns {String}                   string\n     */\n    \n    var firstUpperCase = function(str) {        \n        return str.toLowerCase().replace(/\\b(\\w)/, function($1){\n            return $1.toUpperCase();\n        });\n    };\n    \n    var ucfirst = firstUpperCase;\n    \n    editormd.firstUpperCase = editormd.ucfirst = firstUpperCase;\n    \n    editormd.urls = {\n        atLinkBase : \"https://github.com/\"\n    };\n    \n    editormd.regexs = {\n        atLink        : /@(\\w+)/g,\n        email         : /(\\w+)@(\\w+)\\.(\\w+)\\.?(\\w+)?/g,\n        emailLink     : /(mailto:)?([\\w\\.\\_]+)@(\\w+)\\.(\\w+)\\.?(\\w+)?/g,\n        emoji         : /:([\\w\\+-]+):/g,\n        emojiDatetime : /(\\d{2}:\\d{2}:\\d{2})/g,\n        twemoji       : /:(tw-([\\w]+)-?(\\w+)?):/g,\n        fontAwesome   : /:(fa-([\\w]+)(-(\\w+)){0,}):/g,\n        editormdLogo  : /:(editormd-logo-?(\\w+)?):/g,\n        pageBreak     : /^\\[[=]{8,}\\]$/\n    };\n\n    // Emoji graphics files url path\n    editormd.emoji     = {\n        path  : \"http://www.emoji-cheat-sheet.com/graphics/emojis/\",\n        ext   : \".png\"\n    };\n\n    // Twitter Emoji (Twemoji)  graphics files url path    \n    editormd.twemoji = {\n        path : \"http://twemoji.maxcdn.com/36x36/\",\n        ext  : \".png\"\n    };\n\n    /**\n     * 自定义marked的解析器\n     * Custom Marked renderer rules\n     * \n     * @param   {Array}    markdownToC     传入用于接收TOC的数组\n     * @returns {Renderer} markedRenderer  返回marked的Renderer自定义对象\n     */\n\n    editormd.markedRenderer = function(markdownToC, options) {\n        var defaults = {\n            toc                  : true,           // Table of contents\n            tocm                 : false,\n            tocStartLevel        : 1,              // Said from H1 to create ToC  \n            pageBreak            : true,\n            atLink               : true,           // for @link\n            emailLink            : true,           // for mail address auto link\n            taskList             : false,          // Enable Github Flavored Markdown task lists\n            emoji                : false,          // :emoji: , Support Twemoji, fontAwesome, Editor.md logo emojis.\n            tex                  : false,          // TeX(LaTeX), based on KaTeX\n            flowChart            : false,          // flowChart.js only support IE9+\n            sequenceDiagram      : false,          // sequenceDiagram.js only support IE9+\n        };\n        \n        var settings        = $.extend(defaults, options || {});    \n        var marked          = editormd.$marked;\n        var markedRenderer  = new marked.Renderer();\n        markdownToC         = markdownToC || [];        \n            \n        var regexs          = editormd.regexs;\n        var atLinkReg       = regexs.atLink;\n        var emojiReg        = regexs.emoji;\n        var emailReg        = regexs.email;\n        var emailLinkReg    = regexs.emailLink;\n        var twemojiReg      = regexs.twemoji;\n        var faIconReg       = regexs.fontAwesome;\n        var editormdLogoReg = regexs.editormdLogo;\n        var pageBreakReg    = regexs.pageBreak;\n\n        markedRenderer.emoji = function(text) {\n            \n            text = text.replace(editormd.regexs.emojiDatetime, function($1) {           \n                return $1.replace(/:/g, \"&#58;\");\n            });\n            \n            var matchs = text.match(emojiReg);\n\n            if (!matchs || !settings.emoji) {\n                return text;\n            }\n\n            for (var i = 0, len = matchs.length; i < len; i++)\n            {            \n                if (matchs[i] === \":+1:\") {\n                    matchs[i] = \":\\\\+1:\";\n                }\n\n                text = text.replace(new RegExp(matchs[i]), function($1, $2){\n                    var faMatchs = $1.match(faIconReg);\n                    var name     = $1.replace(/:/g, \"\");\n\n                    if (faMatchs)\n                    {                        \n                        for (var fa = 0, len1 = faMatchs.length; fa < len1; fa++)\n                        {\n                            var faName = faMatchs[fa].replace(/:/g, \"\");\n                            \n                            return \"<i class=\\\"fa \" + faName + \" fa-emoji\\\" title=\\\"\" + faName.replace(\"fa-\", \"\") + \"\\\"></i>\";\n                        }\n                    }\n                    else\n                    {\n                        var emdlogoMathcs = $1.match(editormdLogoReg);\n                        var twemojiMatchs = $1.match(twemojiReg);\n\n                        if (emdlogoMathcs)                                        \n                        {                            \n                            for (var x = 0, len2 = emdlogoMathcs.length; x < len2; x++)\n                            {\n                                var logoName = emdlogoMathcs[x].replace(/:/g, \"\");\n                                return \"<i class=\\\"\" + logoName + \"\\\" title=\\\"Editor.md logo (\" + logoName + \")\\\"></i>\";\n                            }\n                        }\n                        else if (twemojiMatchs) \n                        {\n                            for (var t = 0, len3 = twemojiMatchs.length; t < len3; t++)\n                            {\n                                var twe = twemojiMatchs[t].replace(/:/g, \"\").replace(\"tw-\", \"\");\n                                return \"<img src=\\\"\" + editormd.twemoji.path + twe + editormd.twemoji.ext + \"\\\" title=\\\"twemoji-\" + twe + \"\\\" alt=\\\"twemoji-\" + twe + \"\\\" class=\\\"emoji twemoji\\\" />\";\n                            }\n                        }\n                        else\n                        {\n                            var src = (name === \"+1\") ? \"plus1\" : name;\n                            src     = (src === \"black_large_square\") ? \"black_square\" : src;\n                            src     = (src === \"moon\") ? \"waxing_gibbous_moon\" : src;\n\n                            return \"<img src=\\\"\" + editormd.emoji.path + src + editormd.emoji.ext + \"\\\" class=\\\"emoji\\\" title=\\\"&#58;\" + name + \"&#58;\\\" alt=\\\"&#58;\" + name + \"&#58;\\\" />\";\n                        }\n                    }\n                });\n            }\n\n            return text;\n        };\n\n        markedRenderer.atLink = function(text) {\n\n            if (atLinkReg.test(text))\n            { \n                if (settings.atLink) \n                {\n                    text = text.replace(emailReg, function($1, $2, $3, $4) {\n                        return $1.replace(/@/g, \"_#_&#64;_#_\");\n                    });\n\n                    text = text.replace(atLinkReg, function($1, $2) {\n                        return \"<a href=\\\"\" + editormd.urls.atLinkBase + \"\" + $2 + \"\\\" title=\\\"&#64;\" + $2 + \"\\\" class=\\\"at-link\\\">\" + $1 + \"</a>\";\n                    }).replace(/_#_&#64;_#_/g, \"@\");\n                }\n                \n                if (settings.emailLink)\n                {\n                    text = text.replace(emailLinkReg, function($1, $2, $3, $4, $5) {\n                        return (!$2 && $.inArray($5, \"jpg|jpeg|png|gif|webp|ico|icon|pdf\".split(\"|\")) < 0) ? \"<a href=\\\"mailto:\" + $1 + \"\\\">\"+$1+\"</a>\" : $1;\n                    });\n                }\n\n                return text;\n            }\n\n            return text;\n        };\n                \n        markedRenderer.link = function (href, title, text) {\n\n            if (this.options.sanitize) {\n                try {\n                    var prot = decodeURIComponent(unescape(href)).replace(/[^\\w:]/g,\"\").toLowerCase();\n                } catch(e) {\n                    return \"\";\n                }\n\n                if (prot.indexOf(\"javascript:\") === 0) {\n                    return \"\";\n                }\n            }\n\n            var out = \"<a href=\\\"\" + href + \"\\\"\";\n            \n            if (atLinkReg.test(title) || atLinkReg.test(text))\n            {\n                if (title)\n                {\n                    out += \" title=\\\"\" + title.replace(/@/g, \"&#64;\");\n                }\n                \n                return out + \"\\\">\" + text.replace(/@/g, \"&#64;\") + \"</a>\";\n            }\n\n            if (title) {\n                out += \" title=\\\"\" + title + \"\\\"\";\n            }\n\n            out += \">\" + text + \"</a>\";\n\n            return out;\n        };\n        \n        markedRenderer.heading = function(text, level, raw) {\n                    \n            var linkText       = text;\n            var hasLinkReg     = /\\s*\\<a\\s*href\\=\\\"(.*)\\\"\\s*([^\\>]*)\\>(.*)\\<\\/a\\>\\s*/;\n            var getLinkTextReg = /\\s*\\<a\\s*([^\\>]+)\\>([^\\>]*)\\<\\/a\\>\\s*/g;\n\n            if (hasLinkReg.test(text)) \n            {\n                var tempText = [];\n                text         = text.split(/\\<a\\s*([^\\>]+)\\>([^\\>]*)\\<\\/a\\>/);\n\n                for (var i = 0, len = text.length; i < len; i++)\n                {\n                    tempText.push(text[i].replace(/\\s*href\\=\\\"(.*)\\\"\\s*/g, \"\"));\n                }\n\n                text = tempText.join(\" \");\n            }\n            \n            text = trim(text);\n            \n            var escapedText    = text.toLowerCase().replace(/[^\\w]+/g, \"-\");\n            var toc = {\n                text  : text,\n                level : level,\n                slug  : escapedText\n            };\n            \n            var isChinese = /^[\\u4e00-\\u9fa5]+$/.test(text);\n            var id        = (isChinese) ? escape(text).replace(/\\%/g, \"\") : text.toLowerCase().replace(/[^\\w]+/g, \"-\");\n\n            markdownToC.push(toc);\n            \n            var headingHTML = \"<h\" + level + \" id=\\\"h\"+ level + \"-\" + this.options.headerPrefix + id +\"\\\">\";\n            \n            headingHTML    += \"<a name=\\\"\" + text + \"\\\" class=\\\"reference-link\\\"></a>\";\n            headingHTML    += \"<span class=\\\"header-link octicon octicon-link\\\"></span>\";\n            headingHTML    += (hasLinkReg) ? this.atLink(this.emoji(linkText)) : this.atLink(this.emoji(text));\n            headingHTML    += \"</h\" + level + \">\";\n\n            return headingHTML;\n        };\n        \n        markedRenderer.pageBreak = function(text) {\n            if (pageBreakReg.test(text) && settings.pageBreak)\n            {\n                text = \"<hr style=\\\"page-break-after:always;\\\" class=\\\"page-break editormd-page-break\\\" />\";\n            }\n            \n            return text;\n        };\n\n        markedRenderer.paragraph = function(text) {\n            var isTeXInline     = /\\$\\$(.*)\\$\\$/g.test(text);\n            var isTeXLine       = /^\\$\\$(.*)\\$\\$$/.test(text);\n            var isTeXAddClass   = (isTeXLine)     ? \" class=\\\"\" + editormd.classNames.tex + \"\\\"\" : \"\";\n            var isToC           = (settings.tocm) ? /^(\\[TOC\\]|\\[TOCM\\])$/.test(text) : /^\\[TOC\\]$/.test(text);\n            var isToCMenu       = /^\\[TOCM\\]$/.test(text);\n            \n            if (!isTeXLine && isTeXInline) \n            {\n                text = text.replace(/(\\$\\$([^\\$]*)\\$\\$)+/g, function($1, $2) {\n                    return \"<span class=\\\"\" + editormd.classNames.tex + \"\\\">\" + $2.replace(/\\$/g, \"\") + \"</span>\";\n                });\n            } \n            else \n            {\n                text = (isTeXLine) ? text.replace(/\\$/g, \"\") : text;\n            }\n            \n            var tocHTML = \"<div class=\\\"markdown-toc editormd-markdown-toc\\\">\" + text + \"</div>\";\n            \n            return (isToC) ? ( (isToCMenu) ? \"<div class=\\\"editormd-toc-menu\\\">\" + tocHTML + \"</div><br/>\" : tocHTML )\n                           : ( (pageBreakReg.test(text)) ? this.pageBreak(text) : \"<p\" + isTeXAddClass + \">\" + this.atLink(this.emoji(text)) + \"</p>\\n\" );\n        };\n\n        markedRenderer.code = function (code, lang, escaped) { \n\n            if (lang === \"seq\" || lang === \"sequence\")\n            {\n                return \"<div class=\\\"sequence-diagram\\\">\" + code + \"</div>\";\n            } \n            else if ( lang === \"flow\")\n            {\n                return \"<div class=\\\"flowchart\\\">\" + code + \"</div>\";\n            } \n            else if ( lang === \"math\" || lang === \"latex\" || lang === \"katex\")\n            {\n                return \"<p class=\\\"\" + editormd.classNames.tex + \"\\\">\" + code + \"</p>\";\n            } \n            else \n            {\n\n                return marked.Renderer.prototype.code.apply(this, arguments);\n            }\n        };\n\n        markedRenderer.tablecell = function(content, flags) {\n            var type = (flags.header) ? \"th\" : \"td\";\n            var tag  = (flags.align)  ? \"<\" + type +\" style=\\\"text-align:\" + flags.align + \"\\\">\" : \"<\" + type + \">\";\n            \n            return tag + this.atLink(this.emoji(content)) + \"</\" + type + \">\\n\";\n        };\n\n        markedRenderer.listitem = function(text) {\n            if (settings.taskList && /^\\s*\\[[x\\s]\\]\\s*/.test(text)) \n            {\n                text = text.replace(/^\\s*\\[\\s\\]\\s*/, \"<input type=\\\"checkbox\\\" class=\\\"task-list-item-checkbox\\\" /> \")\n                           .replace(/^\\s*\\[x\\]\\s*/,  \"<input type=\\\"checkbox\\\" class=\\\"task-list-item-checkbox\\\" checked disabled /> \");\n\n                return \"<li style=\\\"list-style: none;\\\">\" + this.atLink(this.emoji(text)) + \"</li>\";\n            }\n            else \n            {\n                return \"<li>\" + this.atLink(this.emoji(text)) + \"</li>\";\n            }\n        };\n        \n        return markedRenderer;\n    };\n    \n    /**\n     *\n     * 生成TOC(Table of Contents)\n     * Creating ToC (Table of Contents)\n     * \n     * @param   {Array}    toc             从marked获取的TOC数组列表\n     * @param   {Element}  container       插入TOC的容器元素\n     * @param   {Integer}  startLevel      Hx 起始层级\n     * @returns {Object}   tocContainer    返回ToC列表容器层的jQuery对象元素\n     */\n    \n    editormd.markdownToCRenderer = function(toc, container, tocDropdown, startLevel) {\n        \n        var html        = \"\";    \n        var lastLevel   = 0;\n        var classPrefix = this.classPrefix;\n        \n        startLevel      = startLevel  || 1;\n        \n        for (var i = 0, len = toc.length; i < len; i++) \n        {\n            var text  = toc[i].text;\n            var level = toc[i].level;\n            \n            if (level < startLevel) {\n                continue;\n            }\n            \n            if (level > lastLevel) \n            {\n                html += \"\";\n            }\n            else if (level < lastLevel) \n            {\n                html += (new Array(lastLevel - level + 2)).join(\"</ul></li>\");\n            } \n            else \n            {\n                html += \"</ul></li>\";\n            }\n\n            html += \"<li><a class=\\\"toc-level-\" + level + \"\\\" href=\\\"#\" + text + \"\\\" level=\\\"\" + level + \"\\\">\" + text + \"</a><ul>\";\n            lastLevel = level;\n        }\n        \n        var tocContainer = container.find(\".markdown-toc\");\n        \n        if ((tocContainer.length < 1 && container.attr(\"previewContainer\") === \"false\"))\n        {\n            var tocHTML = \"<div class=\\\"markdown-toc \" + classPrefix + \"markdown-toc\\\"></div>\";\n            \n            tocHTML = (tocDropdown) ? \"<div class=\\\"\" + classPrefix + \"toc-menu\\\">\" + tocHTML + \"</div>\" : tocHTML;\n            \n            container.html(tocHTML);\n            \n            tocContainer = container.find(\".markdown-toc\");\n        }\n        \n        if (tocDropdown)\n        {\n            tocContainer.wrap(\"<div class=\\\"\" + classPrefix + \"toc-menu\\\"></div><br/>\");\n        }\n        \n        tocContainer.html(\"<ul class=\\\"markdown-toc-list\\\"></ul>\").children(\".markdown-toc-list\").html(html.replace(/\\r?\\n?\\<ul\\>\\<\\/ul\\>/g, \"\"));\n        \n        return tocContainer;\n    };\n    \n    /**\n     *\n     * 生成TOC下拉菜单\n     * Creating ToC dropdown menu\n     * \n     * @param   {Object}   container       插入TOC的容器jQuery对象元素\n     * @param   {String}   tocTitle        ToC title\n     * @returns {Object}                   return toc-menu object\n     */\n    \n    editormd.tocDropdownMenu = function(container, tocTitle) {\n        \n        tocTitle      = tocTitle || \"Table of Contents\";\n        \n        var zindex    = 400;\n        var tocMenus  = container.find(\".\" + this.classPrefix + \"toc-menu\");\n\n        tocMenus.each(function() {\n            var $this  = $(this);\n            var toc    = $this.children(\".markdown-toc\");\n            var icon   = \"<i class=\\\"fa fa-angle-down\\\"></i>\";\n            var btn    = \"<a href=\\\"javascript:;\\\" class=\\\"toc-menu-btn\\\">\" + icon + tocTitle + \"</a>\";\n            var menu   = toc.children(\"ul\");            \n            var list   = menu.find(\"li\");\n            \n            toc.append(btn);\n            \n            list.first().before(\"<li><h1>\" + tocTitle + \" \" + icon + \"</h1></li>\");\n            \n            $this.mouseover(function(){\n                menu.show();\n\n                list.each(function(){\n                    var li = $(this);\n                    var ul = li.children(\"ul\");\n\n                    if (ul.html() === \"\")\n                    {\n                        ul.remove();\n                    }\n\n                    if (ul.length > 0 && ul.html() !== \"\")\n                    {\n                        var firstA = li.children(\"a\").first();\n\n                        if (firstA.children(\".fa\").length < 1)\n                        {\n                            firstA.append( $(icon).css({ float:\"right\", paddingTop:\"4px\" }) );\n                        }\n                    }\n\n                    li.mouseover(function(){\n                        ul.css(\"z-index\", zindex).show();\n                        zindex += 1;\n                    }).mouseleave(function(){\n                        ul.hide();\n                    });\n                });\n            }).mouseleave(function(){\n                menu.hide();\n            }); \n        });       \n        \n        return tocMenus;\n    };\n    \n    /**\n     * 简单地过滤指定的HTML标签\n     * Filter custom html tags\n     * \n     * @param   {String}   html          要过滤HTML\n     * @param   {String}   filters       要过滤的标签\n     * @returns {String}   html          返回过滤的HTML\n     */\n    \n    editormd.filterHTMLTags = function(html, filters) {\n        \n        if (typeof html !== \"string\") {\n            html = new String(html);\n        }\n            \n        if (typeof filters !== \"string\") {\n            return html;\n        }\n\n        var expression = filters.split(\"|\");\n        var filterTags = expression[0].split(\",\");\n        var attrs      = expression[1];\n\n        for (var i = 0, len = filterTags.length; i < len; i++)\n        {\n            var tag = filterTags[i];\n\n            html = html.replace(new RegExp(\"\\<\\s*\" + tag + \"\\s*([^\\>]*)\\>([^\\>]*)\\<\\s*\\/\" + tag + \"\\s*\\>\", \"igm\"), \"\");\n        }\n        \n        //return html;\n\n        if (typeof attrs !== \"undefined\")\n        {\n            var htmlTagRegex = /\\<(\\w+)\\s*([^\\>]*)\\>([^\\>]*)\\<\\/(\\w+)\\>/ig;\n\n            if (attrs === \"*\")\n            {\n                html = html.replace(htmlTagRegex, function($1, $2, $3, $4, $5) {\n                    return \"<\" + $2 + \">\" + $4 + \"</\" + $5 + \">\";\n                });         \n            }\n            else if (attrs === \"on*\")\n            {\n                html = html.replace(htmlTagRegex, function($1, $2, $3, $4, $5) {\n                    var el = $(\"<\" + $2 + \">\" + $4 + \"</\" + $5 + \">\");\n                    var _attrs = $($1)[0].attributes;\n                    var $attrs = {};\n                    \n                    $.each(_attrs, function(i, e) {\n                        if (e.nodeName !== '\"') $attrs[e.nodeName] = e.nodeValue;\n                    });\n                    \n                    $.each($attrs, function(i) {                        \n                        if (i.indexOf(\"on\") === 0) {\n                            delete $attrs[i];\n                        }\n                    });\n                    \n                    el.attr($attrs);\n                    \n                    var text = (typeof el[1] !== \"undefined\") ? $(el[1]).text() : \"\";\n\n                    return el[0].outerHTML + text;\n                });\n            }\n            else\n            {\n                html = html.replace(htmlTagRegex, function($1, $2, $3, $4) {\n                    var filterAttrs = attrs.split(\",\");\n                    var el = $($1);\n                    el.html($4);\n\n                    $.each(filterAttrs, function(i) {\n                        el.attr(filterAttrs[i], null);\n                    });\n\n                    return el[0].outerHTML;\n                });\n            }\n        }\n        \n        return html;\n    };\n    \n    /**\n     * 将Markdown文档解析为HTML用于前台显示\n     * Parse Markdown to HTML for Font-end preview.\n     * \n     * @param   {String}   id            用于显示HTML的对象ID\n     * @param   {Object}   [options={}]  配置选项，可选\n     * @returns {Object}   div           返回jQuery对象元素\n     */\n    \n    editormd.markdownToHTML = function(id, options) {\n        var defaults = {\n            gfm                  : true,\n            toc                  : true,\n            tocm                 : false,\n            tocStartLevel        : 1,\n            tocTitle             : \"目录\",\n            tocDropdown          : false,\n            tocContainer         : \"\",\n            markdown             : \"\",\n            markdownSourceCode   : false,\n            htmlDecode           : false,\n            autoLoadKaTeX        : true,\n            pageBreak            : true,\n            atLink               : true,    // for @link\n            emailLink            : true,    // for mail address auto link\n            tex                  : false,\n            taskList             : false,   // Github Flavored Markdown task lists\n            emoji                : false,\n            flowChart            : false,\n            sequenceDiagram      : false,\n            previewCodeHighlight : true\n        };\n        \n        editormd.$marked  = marked;\n\n        var div           = $(\"#\" + id);\n        var settings      = div.settings = $.extend(true, defaults, options || {});\n        var saveTo        = div.find(\"textarea\");\n        \n        if (saveTo.length < 1)\n        {\n            div.append(\"<textarea></textarea>\");\n            saveTo        = div.find(\"textarea\");\n        }        \n        \n        var markdownDoc   = (settings.markdown === \"\") ? saveTo.val() : settings.markdown; \n        var markdownToC   = [];\n\n        var rendererOptions = {  \n            toc                  : settings.toc,\n            tocm                 : settings.tocm,\n            tocStartLevel        : settings.tocStartLevel,\n            taskList             : settings.taskList,\n            emoji                : settings.emoji,\n            tex                  : settings.tex,\n            pageBreak            : settings.pageBreak,\n            atLink               : settings.atLink,           // for @link\n            emailLink            : settings.emailLink,        // for mail address auto link\n            flowChart            : settings.flowChart,\n            sequenceDiagram      : settings.sequenceDiagram,\n            previewCodeHighlight : settings.previewCodeHighlight,\n        };\n\n        var markedOptions = {\n            renderer    : editormd.markedRenderer(markdownToC, rendererOptions),\n            gfm         : settings.gfm,\n            tables      : true,\n            breaks      : true,\n            pedantic    : false,\n            sanitize    : (settings.htmlDecode) ? false : true, // 是否忽略HTML标签，即是否开启HTML标签解析，为了安全性，默认不开启\n            smartLists  : true,\n            smartypants : true\n        };\n        \n\t\tmarkdownDoc = new String(markdownDoc);\n        \n        var markdownParsed = marked(markdownDoc, markedOptions);\n        \n        markdownParsed = editormd.filterHTMLTags(markdownParsed, settings.htmlDecode);\n        \n        if (settings.markdownSourceCode) {\n            saveTo.text(markdownDoc);\n        } else {\n            saveTo.remove();\n        }\n        \n        div.addClass(\"markdown-body \" + this.classPrefix + \"html-preview\").append(markdownParsed);\n        \n        var tocContainer = (settings.tocContainer !== \"\") ? $(settings.tocContainer) : div;\n        \n        if (settings.tocContainer !== \"\")\n        {\n            tocContainer.attr(\"previewContainer\", false);\n        }\n         \n        if (settings.toc) \n        {\n            div.tocContainer = this.markdownToCRenderer(markdownToC, tocContainer, settings.tocDropdown, settings.tocStartLevel);\n            \n            if (settings.tocDropdown || div.find(\".\" + this.classPrefix + \"toc-menu\").length > 0)\n            {\n                this.tocDropdownMenu(div, settings.tocTitle);\n            }\n            \n            if (settings.tocContainer !== \"\")\n            {\n                div.find(\".editormd-toc-menu, .editormd-markdown-toc\").remove();\n            }\n        }\n            \n        if (settings.previewCodeHighlight) \n        {\n            div.find(\"pre\").addClass(\"prettyprint linenums\");\n            prettyPrint();\n        }\n        \n        if (!editormd.isIE8) \n        {\n            if (settings.flowChart) {\n                div.find(\".flowchart\").flowChart(); \n            }\n\n            if (settings.sequenceDiagram) {\n                div.find(\".sequence-diagram\").sequenceDiagram({theme: \"simple\"});\n            }\n        }\n\n        if (settings.tex)\n        {\n            var katexHandle = function() {\n                div.find(\".\" + editormd.classNames.tex).each(function(){\n                    var tex  = $(this);                    \n                    katex.render(tex.html().replace(/&lt;/g, \"<\").replace(/&gt;/g, \">\"), tex[0]);                    \n                    tex.find(\".katex\").css(\"font-size\", \"1.6em\");\n                });\n            };\n            \n            if (settings.autoLoadKaTeX && !editormd.$katex && !editormd.kaTeXLoaded)\n            {\n                this.loadKaTeX(function() {\n                    editormd.$katex      = katex;\n                    editormd.kaTeXLoaded = true;\n                    katexHandle();\n                });\n            }\n            else\n            {\n                katexHandle();\n            }\n        }\n        \n        div.getMarkdown = function() {            \n            return saveTo.val();\n        };\n        \n        return div;\n    };\n    \n    // Editor.md themes, change toolbar themes etc.\n    // added @1.5.0\n    editormd.themes        = [\"default\", \"dark\"];\n    \n    // Preview area themes\n    // added @1.5.0\n    editormd.previewThemes = [\"default\", \"dark\"];\n    \n    // CodeMirror / editor area themes\n    // @1.5.0 rename -> editorThemes, old version -> themes\n    editormd.editorThemes = [\n        \"default\", \"3024-day\", \"3024-night\",\n        \"ambiance\", \"ambiance-mobile\",\n        \"base16-dark\", \"base16-light\", \"blackboard\",\n        \"cobalt\",\n        \"eclipse\", \"elegant\", \"erlang-dark\",\n        \"lesser-dark\",\n        \"mbo\", \"mdn-like\", \"midnight\", \"monokai\",\n        \"neat\", \"neo\", \"night\",\n        \"paraiso-dark\", \"paraiso-light\", \"pastel-on-dark\",\n        \"rubyblue\",\n        \"solarized\",\n        \"the-matrix\", \"tomorrow-night-eighties\", \"twilight\",\n        \"vibrant-ink\",\n        \"xq-dark\", \"xq-light\"\n    ];\n\n    editormd.loadPlugins = {};\n    \n    editormd.loadFiles = {\n        js     : [],\n        css    : [],\n        plugin : []\n    };\n    \n    /**\n     * 动态加载Editor.md插件，但不立即执行\n     * Load editor.md plugins\n     * \n     * @param {String}   fileName              插件文件路径\n     * @param {Function} [callback=function()] 加载成功后执行的回调函数\n     * @param {String}   [into=\"head\"]         嵌入页面的位置\n     */\n    \n    editormd.loadPlugin = function(fileName, callback, into) {\n        callback   = callback || function() {};\n        \n        this.loadScript(fileName, function() {\n            editormd.loadFiles.plugin.push(fileName);\n            callback();\n        }, into);\n    };\n    \n    /**\n     * 动态加载CSS文件的方法\n     * Load css file method\n     * \n     * @param {String}   fileName              CSS文件名\n     * @param {Function} [callback=function()] 加载成功后执行的回调函数\n     * @param {String}   [into=\"head\"]         嵌入页面的位置\n     */\n    \n    editormd.loadCSS   = function(fileName, callback, into) {\n        into       = into     || \"head\";        \n        callback   = callback || function() {};\n        \n        var css    = document.createElement(\"link\");\n        css.type   = \"text/css\";\n        css.rel    = \"stylesheet\";\n        css.onload = css.onreadystatechange = function() {\n            editormd.loadFiles.css.push(fileName);\n            callback();\n        };\n\n        css.href   = fileName + \".css\";\n\n        if(into === \"head\") {\n            document.getElementsByTagName(\"head\")[0].appendChild(css);\n        } else {\n            document.body.appendChild(css);\n        }\n    };\n    \n    editormd.isIE    = (navigator.appName == \"Microsoft Internet Explorer\");\n    editormd.isIE8   = (editormd.isIE && navigator.appVersion.match(/8./i) == \"8.\");\n\n    /**\n     * 动态加载JS文件的方法\n     * Load javascript file method\n     * \n     * @param {String}   fileName              JS文件名\n     * @param {Function} [callback=function()] 加载成功后执行的回调函数\n     * @param {String}   [into=\"head\"]         嵌入页面的位置\n     */\n\n    editormd.loadScript = function(fileName, callback, into) {\n        \n        into          = into     || \"head\";\n        callback      = callback || function() {};\n        \n        var script    = null; \n        script        = document.createElement(\"script\");\n        script.id     = fileName.replace(/[\\./]+/g, \"-\");\n        script.type   = \"text/javascript\";        \n        script.src    = fileName + \".js\";\n        \n        if (editormd.isIE8) \n        {            \n            script.onreadystatechange = function() {\n                if(script.readyState) \n                {\n                    if (script.readyState === \"loaded\" || script.readyState === \"complete\") \n                    {\n                        script.onreadystatechange = null; \n                        editormd.loadFiles.js.push(fileName);\n                        callback();\n                    }\n                } \n            };\n        }\n        else\n        {\n            script.onload = function() {\n                editormd.loadFiles.js.push(fileName);\n                callback();\n            };\n        }\n\n        if (into === \"head\") {\n            document.getElementsByTagName(\"head\")[0].appendChild(script);\n        } else {\n            document.body.appendChild(script);\n        }\n    };\n    \n    // 使用国外的CDN，加载速度有时会很慢，或者自定义URL\n    // You can custom KaTeX load url.\n    editormd.katexURL  = {\n        css : \"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min\",\n        js  : \"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min\"\n    };\n    \n    editormd.kaTeXLoaded = false;\n    \n    /**\n     * 加载KaTeX文件\n     * load KaTeX files\n     * \n     * @param {Function} [callback=function()]  加载成功后执行的回调函数\n     */\n    \n    editormd.loadKaTeX = function (callback) {\n        editormd.loadCSS(editormd.katexURL.css, function(){\n            editormd.loadScript(editormd.katexURL.js, callback || function(){});\n        });\n    };\n        \n    /**\n     * 锁屏\n     * lock screen\n     * \n     * @param   {Boolean}   lock   Boolean 布尔值，是否锁屏\n     * @returns {void}\n     */\n    \n    editormd.lockScreen = function(lock) {\n        $(\"html,body\").css(\"overflow\", (lock) ? \"hidden\" : \"\");\n    };\n        \n    /**\n     * 动态创建对话框\n     * Creating custom dialogs\n     * \n     * @param   {Object} options 配置项键值对 Key/Value\n     * @returns {dialog} 返回创建的dialog的jQuery实例对象\n     */\n\n    editormd.createDialog = function(options) {\n        var defaults = {\n            name : \"\",\n            width : 420,\n            height: 240,\n            title : \"\",\n            drag  : true,\n            closed : true,\n            content : \"\",\n            mask : true,\n            maskStyle : {\n                backgroundColor : \"#fff\",\n                opacity : 0.1\n            },\n            lockScreen : true,\n            footer : true,\n            buttons : false\n        };\n\n        options          = $.extend(true, defaults, options);\n        \n        var $this        = this;\n        var editor       = this.editor;\n        var classPrefix  = editormd.classPrefix;\n        var guid         = (new Date()).getTime();\n        var dialogName   = ( (options.name === \"\") ? classPrefix + \"dialog-\" + guid : options.name);\n        var mouseOrTouch = editormd.mouseOrTouch;\n\n        var html         = \"<div class=\\\"\" + classPrefix + \"dialog \" + dialogName + \"\\\">\";\n\n        if (options.title !== \"\")\n        {\n            html += \"<div class=\\\"\" + classPrefix + \"dialog-header\\\"\" + ( (options.drag) ? \" style=\\\"cursor: move;\\\"\" : \"\" ) + \">\";\n            html += \"<strong class=\\\"\" + classPrefix + \"dialog-title\\\">\" + options.title + \"</strong>\";\n            html += \"</div>\";\n        }\n\n        if (options.closed)\n        {\n            html += \"<a href=\\\"javascript:;\\\" class=\\\"fa fa-close \" + classPrefix + \"dialog-close\\\"></a>\";\n        }\n\n        html += \"<div class=\\\"\" + classPrefix + \"dialog-container\\\">\" + options.content;                    \n\n        if (options.footer || typeof options.footer === \"string\") \n        {\n            html += \"<div class=\\\"\" + classPrefix + \"dialog-footer\\\">\" + ( (typeof options.footer === \"boolean\") ? \"\" : options.footer) + \"</div>\";\n        }\n\n        html += \"</div>\";\n\n        html += \"<div class=\\\"\" + classPrefix + \"dialog-mask \" + classPrefix + \"dialog-mask-bg\\\"></div>\";\n        html += \"<div class=\\\"\" + classPrefix + \"dialog-mask \" + classPrefix + \"dialog-mask-con\\\"></div>\";\n        html += \"</div>\";\n\n        editor.append(html);\n\n        var dialog = editor.find(\".\" + dialogName);\n\n        dialog.lockScreen = function(lock) {\n            if (options.lockScreen)\n            {                \n                $(\"html,body\").css(\"overflow\", (lock) ? \"hidden\" : \"\");\n                $this.resize();\n            }\n\n            return dialog;\n        };\n\n        dialog.showMask = function() {\n            if (options.mask)\n            {\n                editor.find(\".\" + classPrefix + \"mask\").css(options.maskStyle).css(\"z-index\", editormd.dialogZindex - 1).show();\n            }\n            return dialog;\n        };\n\n        dialog.hideMask = function() {\n            if (options.mask)\n            {\n                editor.find(\".\" + classPrefix + \"mask\").hide();\n            }\n\n            return dialog;\n        };\n\n        dialog.loading = function(show) {                        \n            var loading = dialog.find(\".\" + classPrefix + \"dialog-mask\");\n            loading[(show) ? \"show\" : \"hide\"]();\n\n            return dialog;\n        };\n\n        dialog.lockScreen(true).showMask();\n\n        dialog.show().css({\n            zIndex : editormd.dialogZindex,\n            border : (editormd.isIE8) ? \"1px solid #ddd\" : \"\",\n            width  : (typeof options.width  === \"number\") ? options.width + \"px\"  : options.width,\n            height : (typeof options.height === \"number\") ? options.height + \"px\" : options.height\n        });\n\n        var dialogPosition = function(){\n            dialog.css({\n                top    : ($(window).height() - dialog.height()) / 2 + \"px\",\n                left   : ($(window).width() - dialog.width()) / 2 + \"px\"\n            });\n        };\n\n        dialogPosition();\n\n        $(window).resize(dialogPosition);\n\n        dialog.children(\".\" + classPrefix + \"dialog-close\").bind(mouseOrTouch(\"click\", \"touchend\"), function() {\n            dialog.hide().lockScreen(false).hideMask();\n        });\n\n        if (typeof options.buttons === \"object\")\n        {\n            var footer = dialog.footer = dialog.find(\".\" + classPrefix + \"dialog-footer\");\n\n            for (var key in options.buttons)\n            {\n                var btn = options.buttons[key];\n                var btnClassName = classPrefix + key + \"-btn\";\n\n                footer.append(\"<button class=\\\"\" + classPrefix + \"btn \" + btnClassName + \"\\\">\" + btn[0] + \"</button>\");\n                btn[1] = $.proxy(btn[1], dialog);\n                footer.children(\".\" + btnClassName).bind(mouseOrTouch(\"click\", \"touchend\"), btn[1]);\n            }\n        }\n\n        if (options.title !== \"\" && options.drag)\n        {                        \n            var posX, posY;\n            var dialogHeader = dialog.children(\".\" + classPrefix + \"dialog-header\");\n\n            if (!options.mask) {\n                dialogHeader.bind(mouseOrTouch(\"click\", \"touchend\"), function(){\n                    editormd.dialogZindex += 2;\n                    dialog.css(\"z-index\", editormd.dialogZindex);\n                });\n            }\n\n            dialogHeader.mousedown(function(e) {\n                e = e || window.event;  //IE\n                posX = e.clientX - parseInt(dialog[0].style.left);\n                posY = e.clientY - parseInt(dialog[0].style.top);\n\n                document.onmousemove = moveAction;                   \n            });\n\n            var userCanSelect = function (obj) {\n                obj.removeClass(classPrefix + \"user-unselect\").off(\"selectstart\");\n            };\n\n            var userUnselect = function (obj) {\n                obj.addClass(classPrefix + \"user-unselect\").on(\"selectstart\", function(event) { // selectstart for IE                        \n                    return false;\n                });\n            };\n\n            var moveAction = function (e) {\n                e = e || window.event;  //IE\n\n                var left, top, nowLeft = parseInt(dialog[0].style.left), nowTop = parseInt(dialog[0].style.top);\n\n                if( nowLeft >= 0 ) {\n                    if( nowLeft + dialog.width() <= $(window).width()) {\n                        left = e.clientX - posX;\n                    } else {\t\n                        left = $(window).width() - dialog.width();\n                        document.onmousemove = null;\n                    }\n                } else {\n                    left = 0;\n                    document.onmousemove = null;\n                }\n\n                if( nowTop >= 0 ) {\n                    top = e.clientY - posY;\n                } else {\n                    top = 0;\n                    document.onmousemove = null;\n                }\n\n\n                document.onselectstart = function() {\n                    return false;\n                };\n\n                userUnselect($(\"body\"));\n                userUnselect(dialog);\n                dialog[0].style.left = left + \"px\";\n                dialog[0].style.top  = top + \"px\";\n            };\n\n            document.onmouseup = function() {                            \n                userCanSelect($(\"body\"));\n                userCanSelect(dialog);\n\n                document.onselectstart = null;         \n                document.onmousemove = null;\n            };\n\n            dialogHeader.touchDraggable = function() {\n                var offset = null;\n                var start  = function(e) {\n                    var orig = e.originalEvent; \n                    var pos  = $(this).parent().position();\n\n                    offset = {\n                        x : orig.changedTouches[0].pageX - pos.left,\n                        y : orig.changedTouches[0].pageY - pos.top\n                    };\n                };\n\n                var move = function(e) {\n                    e.preventDefault();\n                    var orig = e.originalEvent;\n\n                    $(this).parent().css({\n                        top  : orig.changedTouches[0].pageY - offset.y,\n                        left : orig.changedTouches[0].pageX - offset.x\n                    });\n                };\n\n                this.bind(\"touchstart\", start).bind(\"touchmove\", move);\n            };\n\n            dialogHeader.touchDraggable();\n        }\n\n        editormd.dialogZindex += 2;\n\n        return dialog;\n    };\n    \n    /**\n     * 鼠标和触摸事件的判断/选择方法\n     * MouseEvent or TouchEvent type switch\n     * \n     * @param   {String} [mouseEventType=\"click\"]    供选择的鼠标事件\n     * @param   {String} [touchEventType=\"touchend\"] 供选择的触摸事件\n     * @returns {String} EventType                   返回事件类型名称\n     */\n    \n    editormd.mouseOrTouch = function(mouseEventType, touchEventType) {\n        mouseEventType = mouseEventType || \"click\";\n        touchEventType = touchEventType || \"touchend\";\n        \n        var eventType  = mouseEventType;\n\n        try {\n            document.createEvent(\"TouchEvent\");\n            eventType = touchEventType;\n        } catch(e) {}\n\n        return eventType;\n    };\n    \n    /**\n     * 日期时间的格式化方法\n     * Datetime format method\n     * \n     * @param   {String}   [format=\"\"]  日期时间的格式，类似PHP的格式\n     * @returns {String}   datefmt      返回格式化后的日期时间字符串\n     */\n    \n    editormd.dateFormat = function(format) {                \n        format      = format || \"\";\n\n        var addZero = function(d) {\n            return (d < 10) ? \"0\" + d : d;\n        };\n\n        var date    = new Date(); \n        var year    = date.getFullYear();\n        var year2   = year.toString().slice(2, 4);\n        var month   = addZero(date.getMonth() + 1);\n        var day     = addZero(date.getDate());\n        var weekDay = date.getDay();\n        var hour    = addZero(date.getHours());\n        var min     = addZero(date.getMinutes());\n        var second  = addZero(date.getSeconds());\n        var ms      = addZero(date.getMilliseconds()); \n        var datefmt = \"\";\n\n        var ymd     = year2 + \"-\" + month + \"-\" + day;\n        var fymd    = year  + \"-\" + month + \"-\" + day;\n        var hms     = hour  + \":\" + min   + \":\" + second;\n\n        switch (format) \n        {\n            case \"UNIX Time\" :\n                    datefmt = date.getTime();\n                break;\n\n            case \"UTC\" :\n                    datefmt = date.toUTCString();\n                break;\t\n\n            case \"yy\" :\n                    datefmt = year2;\n                break;\t\n\n            case \"year\" :\n            case \"yyyy\" :\n                    datefmt = year;\n                break;\n\n            case \"month\" :\n            case \"mm\" :\n                    datefmt = month;\n                break;                        \n\n            case \"cn-week-day\" :\n            case \"cn-wd\" :\n                    var cnWeekDays = [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"];\n                    datefmt = \"星期\" + cnWeekDays[weekDay];\n                break;\n\n            case \"week-day\" :\n            case \"wd\" :\n                    var weekDays = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n                    datefmt = weekDays[weekDay];\n                break;\n\n            case \"day\" :\n            case \"dd\" :\n                    datefmt = day;\n                break;\n\n            case \"hour\" :\n            case \"hh\" :\n                    datefmt = hour;\n                break;\n\n            case \"min\" :\n            case \"ii\" :\n                    datefmt = min;\n                break;\n\n            case \"second\" :\n            case \"ss\" :\n                    datefmt = second;\n                break;\n\n            case \"ms\" :\n                    datefmt = ms;\n                break;\n\n            case \"yy-mm-dd\" :\n                    datefmt = ymd;\n                break;\n\n            case \"yyyy-mm-dd\" :\n                    datefmt = fymd;\n                break;\n\n            case \"yyyy-mm-dd h:i:s ms\" :\n            case \"full + ms\" : \n                    datefmt = fymd + \" \" + hms + \" \" + ms;\n                break;\n\n            case \"full\" :\n            case \"yyyy-mm-dd h:i:s\" :\n                default:\n                    datefmt = fymd + \" \" + hms;\n                break;\n        }\n\n        return datefmt;\n    };\n\n    return editormd;\n\n}));\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/editormd.js",
    "content": "/*\n * Editor.md\n *\n * @file        editormd.js \n * @version     v1.5.0 \n * @description Open source online markdown editor.\n * @license     MIT License\n * @author      Pandao\n * {@link       https://github.com/pandao/editor.md}\n * @updateTime  2015-06-09\n */\n\n;(function(factory) {\n    \"use strict\";\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n\t{\n        if (define.amd) // for Require.js\n        {\n            /* Require.js define replace */\n        } \n        else \n        {\n\t\t    define([\"jquery\"], factory);  // for Sea.js\n        }\n\t} \n\telse\n\t{ \n        window.editormd = factory();\n\t}\n    \n}(function() {    \n\n    /* Require.js assignment replace */\n    \n    \"use strict\";\n    \n    var $ = (typeof (jQuery) !== \"undefined\") ? jQuery : Zepto;\n\n\tif (typeof ($) === \"undefined\") {\n\t\treturn ;\n\t}\n    \n    /**\n     * editormd\n     * \n     * @param   {String} id           编辑器的ID\n     * @param   {Object} options      配置选项 Key/Value\n     * @returns {Object} editormd     返回editormd对象\n     */\n    \n    var editormd         = function (id, options) {\n        return new editormd.fn.init(id, options);\n    };\n    \n    editormd.title        = editormd.$name = \"Editor.md\";\n    editormd.version      = \"1.5.0\";\n    editormd.homePage     = \"https://pandao.github.io/editor.md/\";\n    editormd.classPrefix  = \"editormd-\";\n    \n    editormd.toolbarModes = {\n        full : [\n            \"undo\", \"redo\", \"|\", \n            \"bold\", \"del\", \"italic\", \"quote\", \"ucwords\", \"uppercase\", \"lowercase\", \"|\", \n            \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"|\", \n            \"list-ul\", \"list-ol\", \"hr\", \"|\",\n            \"link\", \"reference-link\", \"image\", \"code\", \"preformatted-text\", \"code-block\", \"table\", \"datetime\", \"emoji\", \"html-entities\", \"pagebreak\", \"|\",\n            \"goto-line\", \"watch\", \"preview\", \"fullscreen\", \"clear\", \"search\", \"|\",\n            \"help\", \"info\"\n        ],\n        simple : [\n            \"undo\", \"redo\", \"|\", \n            \"bold\", \"del\", \"italic\", \"quote\", \"uppercase\", \"lowercase\", \"|\", \n            \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"|\", \n            \"list-ul\", \"list-ol\", \"hr\", \"|\",\n            \"watch\", \"preview\", \"fullscreen\", \"|\",\n            \"help\", \"info\"\n        ],\n        mini : [\n            \"undo\", \"redo\", \"|\",\n            \"watch\", \"preview\", \"|\",\n            \"help\", \"info\"\n        ]\n    };\n    \n    editormd.defaults     = {\n        mode                 : \"gfm\",          //gfm or markdown\n        name                 : \"\",             // Form element name\n        value                : \"\",             // value for CodeMirror, if mode not gfm/markdown\n        theme                : \"\",             // Editor.md self themes, before v1.5.0 is CodeMirror theme, default empty\n        editorTheme          : \"default\",      // Editor area, this is CodeMirror theme at v1.5.0\n        previewTheme         : \"\",             // Preview area theme, default empty\n        markdown             : \"\",             // Markdown source code\n        appendMarkdown       : \"\",             // if in init textarea value not empty, append markdown to textarea\n        width                : \"100%\",\n        height               : \"100%\",\n        path                 : \"./lib/\",       // Dependents module file directory\n        pluginPath           : \"\",             // If this empty, default use settings.path + \"../plugins/\"\n        delay                : 300,            // Delay parse markdown to html, Uint : ms\n        autoLoadModules      : true,           // Automatic load dependent module files\n        watch                : true,\n        placeholder          : \"Enjoy Markdown! coding now...\",\n        gotoLine             : true,\n        codeFold             : false,\n        autoHeight           : false,\n\t\tautoFocus            : true,\n        autoCloseTags        : true,\n        searchReplace        : true,\n        syncScrolling        : true,           // true | false | \"single\", default true\n        readOnly             : false,\n        tabSize              : 4,\n\t\tindentUnit           : 4,\n        lineNumbers          : true,\n\t\tlineWrapping         : true,\n\t\tautoCloseBrackets    : true,\n\t\tshowTrailingSpace    : true,\n\t\tmatchBrackets        : true,\n\t\tindentWithTabs       : true,\n\t\tstyleSelectedText    : true,\n        matchWordHighlight   : true,           // options: true, false, \"onselected\"\n        styleActiveLine      : true,           // Highlight the current line\n        dialogLockScreen     : true,\n        dialogShowMask       : true,\n        dialogDraggable      : true,\n        dialogMaskBgColor    : \"#fff\",\n        dialogMaskOpacity    : 0.1,\n        fontSize             : \"13px\",\n        saveHTMLToTextarea   : false,\n        disabledKeyMaps      : [],\n        \n        onload               : function() {},\n        onresize             : function() {},\n        onchange             : function() {},\n        onwatch              : null,\n        onunwatch            : null,\n        onpreviewing         : function() {},\n        onpreviewed          : function() {},\n        onfullscreen         : function() {},\n        onfullscreenExit     : function() {},\n        onscroll             : function() {},\n        onpreviewscroll      : function() {},\n        \n        imageUpload          : false,\n        imageFormats         : [\"jpg\", \"jpeg\", \"gif\", \"png\", \"bmp\", \"webp\"],\n        imageUploadURL       : \"\",\n        crossDomainUpload    : false,\n        uploadCallbackURL    : \"\",\n        \n        toc                  : true,           // Table of contents\n        tocm                 : false,           // Using [TOCM], auto create ToC dropdown menu\n        tocTitle             : \"\",             // for ToC dropdown menu btn\n        tocDropdown          : false,\n        tocContainer         : \"\",\n        tocStartLevel        : 1,              // Said from H1 to create ToC\n        htmlDecode           : false,          // Open the HTML tag identification \n        pageBreak            : true,           // Enable parse page break [========]\n        atLink               : true,           // for @link\n        emailLink            : true,           // for email address auto link\n        taskList             : false,          // Enable Github Flavored Markdown task lists\n        emoji                : false,          // :emoji: , Support Github emoji, Twitter Emoji (Twemoji);\n                                               // Support FontAwesome icon emoji :fa-xxx: > Using fontAwesome icon web fonts;\n                                               // Support Editor.md logo icon emoji :editormd-logo: :editormd-logo-1x: > 1~8x;\n        tex                  : false,          // TeX(LaTeX), based on KaTeX\n        flowChart            : false,          // flowChart.js only support IE9+\n        sequenceDiagram      : false,          // sequenceDiagram.js only support IE9+\n        previewCodeHighlight : true,\n                \n        toolbar              : true,           // show/hide toolbar\n        toolbarAutoFixed     : true,           // on window scroll auto fixed position\n        toolbarIcons         : \"full\",\n        toolbarTitles        : {},\n        toolbarHandlers      : {\n            ucwords : function() {\n                return editormd.toolbarHandlers.ucwords;\n            },\n            lowercase : function() {\n                return editormd.toolbarHandlers.lowercase;\n            }\n        },\n        toolbarCustomIcons   : {               // using html tag create toolbar icon, unused default <a> tag.\n            lowercase        : \"<a href=\\\"javascript:;\\\" title=\\\"Lowercase\\\" unselectable=\\\"on\\\"><i class=\\\"fa\\\" name=\\\"lowercase\\\" style=\\\"font-size:24px;margin-top: -10px;\\\">a</i></a>\",\n            \"ucwords\"        : \"<a href=\\\"javascript:;\\\" title=\\\"ucwords\\\" unselectable=\\\"on\\\"><i class=\\\"fa\\\" name=\\\"ucwords\\\" style=\\\"font-size:20px;margin-top: -3px;\\\">Aa</i></a>\"\n        }, \n        toolbarIconsClass    : {\n            undo             : \"fa-undo\",\n            redo             : \"fa-repeat\",\n            bold             : \"fa-bold\",\n            del              : \"fa-strikethrough\",\n            italic           : \"fa-italic\",\n            quote            : \"fa-quote-left\",\n            uppercase        : \"fa-font\",\n            h1               : editormd.classPrefix + \"bold\",\n            h2               : editormd.classPrefix + \"bold\",\n            h3               : editormd.classPrefix + \"bold\",\n            h4               : editormd.classPrefix + \"bold\",\n            h5               : editormd.classPrefix + \"bold\",\n            h6               : editormd.classPrefix + \"bold\",\n            \"list-ul\"        : \"fa-list-ul\",\n            \"list-ol\"        : \"fa-list-ol\",\n            hr               : \"fa-minus\",\n            link             : \"fa-link\",\n            \"reference-link\" : \"fa-anchor\",\n            image            : \"fa-picture-o\",\n            code             : \"fa-code\",\n            \"preformatted-text\" : \"fa-file-code-o\",\n            \"code-block\"     : \"fa-file-code-o\",\n            table            : \"fa-table\",\n            datetime         : \"fa-clock-o\",\n            emoji            : \"fa-smile-o\",\n            \"html-entities\"  : \"fa-copyright\",\n            pagebreak        : \"fa-newspaper-o\",\n            \"goto-line\"      : \"fa-terminal\", // fa-crosshairs\n            watch            : \"fa-eye-slash\",\n            unwatch          : \"fa-eye\",\n            preview          : \"fa-desktop\",\n            search           : \"fa-search\",\n            fullscreen       : \"fa-arrows-alt\",\n            clear            : \"fa-eraser\",\n            help             : \"fa-question-circle\",\n            info             : \"fa-info-circle\"\n        },        \n        toolbarIconTexts     : {},\n        \n        lang : {\n            name        : \"zh-cn\",\n            description : \"开源在线Markdown编辑器<br/>Open source online Markdown editor.\",\n            tocTitle    : \"目录\",\n            toolbar     : {\n                undo             : \"撤销（Ctrl+Z）\",\n                redo             : \"重做（Ctrl+Y）\",\n                bold             : \"粗体\",\n                del              : \"删除线\",\n                italic           : \"斜体\",\n                quote            : \"引用\",\n                ucwords          : \"将每个单词首字母转成大写\",\n                uppercase        : \"将所选转换成大写\",\n                lowercase        : \"将所选转换成小写\",\n                h1               : \"标题1\",\n                h2               : \"标题2\",\n                h3               : \"标题3\",\n                h4               : \"标题4\",\n                h5               : \"标题5\",\n                h6               : \"标题6\",\n                \"list-ul\"        : \"无序列表\",\n                \"list-ol\"        : \"有序列表\",\n                hr               : \"横线\",\n                link             : \"链接\",\n                \"reference-link\" : \"引用链接\",\n                image            : \"添加图片\",\n                code             : \"行内代码\",\n                \"preformatted-text\" : \"预格式文本 / 代码块（缩进风格）\",\n                \"code-block\"     : \"代码块（多语言风格）\",\n                table            : \"添加表格\",\n                datetime         : \"日期时间\",\n                emoji            : \"Emoji表情\",\n                \"html-entities\"  : \"HTML实体字符\",\n                pagebreak        : \"插入分页符\",\n                \"goto-line\"      : \"跳转到行\",\n                watch            : \"关闭实时预览\",\n                unwatch          : \"开启实时预览\",\n                preview          : \"全窗口预览HTML（按 Shift + ESC还原）\",\n                fullscreen       : \"全屏（按ESC还原）\",\n                clear            : \"清空\",\n                search           : \"搜索\",\n                help             : \"使用帮助\",\n                info             : \"关于\" + editormd.title\n            },\n            buttons : {\n                enter  : \"确定\",\n                cancel : \"取消\",\n                close  : \"关闭\"\n            },\n            dialog : {\n                link : {\n                    title    : \"添加链接\",\n                    url      : \"链接地址\",\n                    urlTitle : \"链接标题\",\n                    urlEmpty : \"错误：请填写链接地址。\"\n                },\n                referenceLink : {\n                    title    : \"添加引用链接\",\n                    name     : \"引用名称\",\n                    url      : \"链接地址\",\n                    urlId    : \"链接ID\",\n                    urlTitle : \"链接标题\",\n                    nameEmpty: \"错误：引用链接的名称不能为空。\",\n                    idEmpty  : \"错误：请填写引用链接的ID。\",\n                    urlEmpty : \"错误：请填写引用链接的URL地址。\"\n                },\n                image : {\n                    title    : \"添加图片\",\n                    url      : \"图片地址\",\n                    link     : \"图片链接\",\n                    alt      : \"图片描述\",\n                    uploadButton     : \"本地上传\",\n                    imageURLEmpty    : \"错误：图片地址不能为空。\",\n                    uploadFileEmpty  : \"错误：上传的图片不能为空。\",\n                    formatNotAllowed : \"错误：只允许上传图片文件，允许上传的图片文件格式有：\"\n                },\n                preformattedText : {\n                    title             : \"添加预格式文本或代码块\", \n                    emptyAlert        : \"错误：请填写预格式文本或代码的内容。\"\n                },\n                codeBlock : {\n                    title             : \"添加代码块\",                    \n                    selectLabel       : \"代码语言：\",\n                    selectDefaultText : \"请选择代码语言\",\n                    otherLanguage     : \"其他语言\",\n                    unselectedLanguageAlert : \"错误：请选择代码所属的语言类型。\",\n                    codeEmptyAlert    : \"错误：请填写代码内容。\"\n                },\n                htmlEntities : {\n                    title : \"HTML 实体字符\"\n                },\n                help : {\n                    title : \"使用帮助\"\n                }\n            }\n        }\n    };\n    \n    editormd.classNames  = {\n        tex : editormd.classPrefix + \"tex\"\n    };\n\n    editormd.dialogZindex = 99999;\n    \n    editormd.$katex       = null;\n    editormd.$marked      = null;\n    editormd.$CodeMirror  = null;\n    editormd.$prettyPrint = null;\n    \n    var timer, flowchartTimer;\n\n    editormd.prototype    = editormd.fn = {\n        state : {\n            watching   : false,\n            loaded     : false,\n            preview    : false,\n            fullscreen : false\n        },\n        \n        /**\n         * 构造函数/实例初始化\n         * Constructor / instance initialization\n         * \n         * @param   {String}   id            编辑器的ID\n         * @param   {Object}   [options={}]  配置选项 Key/Value\n         * @returns {editormd}               返回editormd的实例对象\n         */\n        \n        init : function (id, options) {\n            \n            options              = options || {};\n            \n            if (typeof id === \"object\")\n            {\n                options = id;\n            }\n            \n            var _this            = this;\n            var classPrefix      = this.classPrefix  = editormd.classPrefix; \n            var settings         = this.settings     = $.extend(true, editormd.defaults, options);\n            \n            id                   = (typeof id === \"object\") ? settings.id : id;\n            \n            var editor           = this.editor       = $(\"#\" + id);\n            \n            this.id              = id;\n            this.lang            = settings.lang;\n            \n            var classNames       = this.classNames   = {\n                textarea : {\n                    html     : classPrefix + \"html-textarea\",\n                    markdown : classPrefix + \"markdown-textarea\"\n                }\n            };\n            \n            settings.pluginPath = (settings.pluginPath === \"\") ? settings.path + \"../plugins/\" : settings.pluginPath; \n            \n            this.state.watching = (settings.watch) ? true : false;\n            \n            if ( !editor.hasClass(\"editormd\") ) {\n                editor.addClass(\"editormd\");\n            }\n            \n            editor.css({\n                width  : (typeof settings.width  === \"number\") ? settings.width  + \"px\" : settings.width,\n                height : (typeof settings.height === \"number\") ? settings.height + \"px\" : settings.height\n            });\n            \n            if (settings.autoHeight)\n            {\n                editor.css(\"height\", \"auto\");\n            }\n                        \n            var markdownTextarea = this.markdownTextarea = editor.children(\"textarea\");\n            \n            if (markdownTextarea.length < 1)\n            {\n                editor.append(\"<textarea></textarea>\");\n                markdownTextarea = this.markdownTextarea = editor.children(\"textarea\");\n            }\n            \n            markdownTextarea.addClass(classNames.textarea.markdown).attr(\"placeholder\", settings.placeholder);\n            \n            if (typeof markdownTextarea.attr(\"name\") === \"undefined\" || markdownTextarea.attr(\"name\") === \"\")\n            {\n                markdownTextarea.attr(\"name\", (settings.name !== \"\") ? settings.name : id + \"-markdown-doc\");\n            }\n            \n            var appendElements = [\n                (!settings.readOnly) ? \"<a href=\\\"javascript:;\\\" class=\\\"fa fa-close \" + classPrefix + \"preview-close-btn\\\"></a>\" : \"\",\n                ( (settings.saveHTMLToTextarea) ? \"<textarea class=\\\"\" + classNames.textarea.html + \"\\\" name=\\\"\" + id + \"-html-code\\\"></textarea>\" : \"\" ),\n                \"<div class=\\\"\" + classPrefix + \"preview\\\"><div class=\\\"markdown-body \" + classPrefix + \"preview-container\\\"></div></div>\",\n                \"<div class=\\\"\" + classPrefix + \"container-mask\\\" style=\\\"display:block;\\\"></div>\",\n                \"<div class=\\\"\" + classPrefix + \"mask\\\"></div>\"\n            ].join(\"\\n\");\n            \n            editor.append(appendElements).addClass(classPrefix + \"vertical\");\n            \n            if (settings.theme !== \"\") \n            {\n                editor.addClass(classPrefix + \"theme-\" + settings.theme);\n            }\n            \n            this.mask          = editor.children(\".\" + classPrefix + \"mask\");    \n            this.containerMask = editor.children(\".\" + classPrefix  + \"container-mask\");\n            \n            if (settings.markdown !== \"\")\n            {\n                markdownTextarea.val(settings.markdown);\n            }\n            \n            if (settings.appendMarkdown !== \"\")\n            {\n                markdownTextarea.val(markdownTextarea.val() + settings.appendMarkdown);\n            }\n            \n            this.htmlTextarea     = editor.children(\".\" + classNames.textarea.html);            \n            this.preview          = editor.children(\".\" + classPrefix + \"preview\");\n            this.previewContainer = this.preview.children(\".\" + classPrefix + \"preview-container\");\n            \n            if (settings.previewTheme !== \"\") \n            {\n                this.preview.addClass(classPrefix + \"preview-theme-\" + settings.previewTheme);\n            }\n            \n            if (typeof define === \"function\" && define.amd)\n            {\n                if (typeof katex !== \"undefined\") \n                {\n                    editormd.$katex = katex;\n                }\n                \n                if (settings.searchReplace && !settings.readOnly) \n                {\n                    editormd.loadCSS(settings.path + \"codemirror/addon/dialog/dialog\");\n                    editormd.loadCSS(settings.path + \"codemirror/addon/search/matchesonscrollbar\");\n                }\n            }\n            \n            if ((typeof define === \"function\" && define.amd) || !settings.autoLoadModules)\n            {\n                if (typeof CodeMirror !== \"undefined\") {\n                    editormd.$CodeMirror = CodeMirror;\n                }\n                \n                if (typeof marked     !== \"undefined\") {\n                    editormd.$marked     = marked;\n                }\n                \n                this.setCodeMirror().setToolbar().loadedDisplay();\n            } \n            else \n            {\n                this.loadQueues();\n            }\n\n            return this;\n        },\n        \n        /**\n         * 所需组件加载队列\n         * Required components loading queue\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        loadQueues : function() {\n            var _this        = this;\n            var settings     = this.settings;\n            var loadPath     = settings.path;\n                                \n            var loadFlowChartOrSequenceDiagram = function() {\n                \n                if (editormd.isIE8) \n                {\n                    _this.loadedDisplay();\n                    \n                    return ;\n                }\n\n                if (settings.flowChart || settings.sequenceDiagram) \n                {\n                    editormd.loadScript(loadPath + \"raphael.min\", function() {\n\n                        editormd.loadScript(loadPath + \"underscore.min\", function() {  \n\n                            if (!settings.flowChart && settings.sequenceDiagram) \n                            {\n                                editormd.loadScript(loadPath + \"sequence-diagram.min\", function() {\n                                    _this.loadedDisplay();\n                                });\n                            }\n                            else if (settings.flowChart && !settings.sequenceDiagram) \n                            {      \n                                editormd.loadScript(loadPath + \"flowchart.min\", function() {  \n                                    editormd.loadScript(loadPath + \"jquery.flowchart.min\", function() {\n                                        _this.loadedDisplay();\n                                    });\n                                });\n                            }\n                            else if (settings.flowChart && settings.sequenceDiagram) \n                            {  \n                                editormd.loadScript(loadPath + \"flowchart.min\", function() {  \n                                    editormd.loadScript(loadPath + \"jquery.flowchart.min\", function() {\n                                        editormd.loadScript(loadPath + \"sequence-diagram.min\", function() {\n                                            _this.loadedDisplay();\n                                        });\n                                    });\n                                });\n                            }\n                        });\n\n                    });\n                } \n                else\n                {\n                    _this.loadedDisplay();\n                }\n            }; \n\n            editormd.loadCSS(loadPath + \"codemirror/codemirror.min\");\n            \n            if (settings.searchReplace && !settings.readOnly)\n            {\n                editormd.loadCSS(loadPath + \"codemirror/addon/dialog/dialog\");\n                editormd.loadCSS(loadPath + \"codemirror/addon/search/matchesonscrollbar\");\n            }\n            \n            if (settings.codeFold)\n            {\n                editormd.loadCSS(loadPath + \"codemirror/addon/fold/foldgutter\");            \n            }\n            \n            editormd.loadScript(loadPath + \"codemirror/codemirror.min\", function() {\n                editormd.$CodeMirror = CodeMirror;\n                \n                editormd.loadScript(loadPath + \"codemirror/modes.min\", function() {\n                    \n                    editormd.loadScript(loadPath + \"codemirror/addons.min\", function() {\n                        \n                        _this.setCodeMirror();\n                        \n                        if (settings.mode !== \"gfm\" && settings.mode !== \"markdown\") \n                        {\n                            _this.loadedDisplay();\n                            \n                            return false;\n                        }\n                        \n                        _this.setToolbar();\n\n                        editormd.loadScript(loadPath + \"marked.min\", function() {\n\n                            editormd.$marked = marked;\n                                \n                            if (settings.previewCodeHighlight) \n                            {\n                                editormd.loadScript(loadPath + \"prettify.min\", function() {\n                                    loadFlowChartOrSequenceDiagram();\n                                });\n                            } \n                            else\n                            {                  \n                                loadFlowChartOrSequenceDiagram();\n                            }\n                        });\n                        \n                    });\n                    \n                });\n                \n            });\n\n            return this;\n        },\n        \n        /**\n         * 设置 Editor.md 的整体主题，主要是工具栏\n         * Setting Editor.md theme\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setTheme : function(theme) {\n            var editor      = this.editor;\n            var oldTheme    = this.settings.theme;\n            var themePrefix = this.classPrefix + \"theme-\";\n            \n            editor.removeClass(themePrefix + oldTheme).addClass(themePrefix + theme);\n            \n            this.settings.theme = theme;\n            \n            return this;\n        },\n        \n        /**\n         * 设置 CodeMirror（编辑区）的主题\n         * Setting CodeMirror (Editor area) theme\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setEditorTheme : function(theme) {  \n            var settings   = this.settings;  \n            settings.editorTheme = theme;  \n            \n            if (theme !== \"default\")\n            {\n                editormd.loadCSS(settings.path + \"codemirror/theme/\" + settings.editorTheme);\n            }\n            \n            this.cm.setOption(\"theme\", theme);\n            \n            return this;\n        },\n        \n        /**\n         * setEditorTheme() 的别名\n         * setEditorTheme() alias\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setCodeMirrorTheme : function (theme) {            \n            this.setEditorTheme(theme);\n            \n            return this;\n        },\n        \n        /**\n         * 设置 Editor.md 的主题\n         * Setting Editor.md theme\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setPreviewTheme : function(theme) {  \n            var preview     = this.preview;\n            var oldTheme    = this.settings.previewTheme;\n            var themePrefix = this.classPrefix + \"preview-theme-\";\n            \n            preview.removeClass(themePrefix + oldTheme).addClass(themePrefix + theme);\n            \n            this.settings.previewTheme = theme;\n            \n            return this;\n        },\n        \n        /**\n         * 配置和初始化CodeMirror组件\n         * CodeMirror initialization\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setCodeMirror : function() { \n            var settings         = this.settings;\n            var editor           = this.editor;\n            \n            if (settings.editorTheme !== \"default\")\n            {\n                editormd.loadCSS(settings.path + \"codemirror/theme/\" + settings.editorTheme);\n            }\n            \n            var codeMirrorConfig = {\n                mode                      : settings.mode,\n                theme                     : settings.editorTheme,\n                tabSize                   : settings.tabSize,\n                dragDrop                  : false,\n                autofocus                 : settings.autoFocus,\n                autoCloseTags             : settings.autoCloseTags,\n                readOnly                  : (settings.readOnly) ? \"nocursor\" : false,\n                indentUnit                : settings.indentUnit,\n                lineNumbers               : settings.lineNumbers,\n                lineWrapping              : settings.lineWrapping,\n                extraKeys                 : {\n                                                \"Ctrl-Q\": function(cm) { \n                                                    cm.foldCode(cm.getCursor()); \n                                                }\n                                            },\n                foldGutter                : settings.codeFold,\n                gutters                   : [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n                matchBrackets             : settings.matchBrackets,\n                indentWithTabs            : settings.indentWithTabs,\n                styleActiveLine           : settings.styleActiveLine,\n                styleSelectedText         : settings.styleSelectedText,\n                autoCloseBrackets         : settings.autoCloseBrackets,\n                showTrailingSpace         : settings.showTrailingSpace,\n                highlightSelectionMatches : ( (!settings.matchWordHighlight) ? false : { showToken: (settings.matchWordHighlight === \"onselected\") ? false : /\\w/ } )\n            };\n            \n            this.codeEditor = this.cm        = editormd.$CodeMirror.fromTextArea(this.markdownTextarea[0], codeMirrorConfig);\n            this.codeMirror = this.cmElement = editor.children(\".CodeMirror\");\n            \n            if (settings.value !== \"\")\n            {\n                this.cm.setValue(settings.value);\n            }\n\n            this.codeMirror.css({\n                fontSize : settings.fontSize,\n                width    : (!settings.watch) ? \"100%\" : \"50%\"\n            });\n            \n            if (settings.autoHeight)\n            {\n                this.codeMirror.css(\"height\", \"auto\");\n                this.cm.setOption(\"viewportMargin\", Infinity);\n            }\n            \n            if (!settings.lineNumbers)\n            {\n                this.codeMirror.find(\".CodeMirror-gutters\").css(\"border-right\", \"none\");\n            }\n\n            return this;\n        },\n        \n        /**\n         * 获取CodeMirror的配置选项\n         * Get CodeMirror setting options\n         * \n         * @returns {Mixed}                  return CodeMirror setting option value\n         */\n        \n        getCodeMirrorOption : function(key) {            \n            return this.cm.getOption(key);\n        },\n        \n        /**\n         * 配置和重配置CodeMirror的选项\n         * CodeMirror setting options / resettings\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setCodeMirrorOption : function(key, value) {\n            \n            this.cm.setOption(key, value);\n            \n            return this;\n        },\n        \n        /**\n         * 添加 CodeMirror 键盘快捷键\n         * Add CodeMirror keyboard shortcuts key map\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        addKeyMap : function(map, bottom) {\n            this.cm.addKeyMap(map, bottom);\n            \n            return this;\n        },\n        \n        /**\n         * 移除 CodeMirror 键盘快捷键\n         * Remove CodeMirror keyboard shortcuts key map\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        removeKeyMap : function(map) {\n            this.cm.removeKeyMap(map);\n            \n            return this;\n        },\n        \n        /**\n         * 跳转到指定的行\n         * Goto CodeMirror line\n         * \n         * @param   {String|Intiger}   line      line number or \"first\"|\"last\"\n         * @returns {editormd}                   返回editormd的实例对象\n         */\n        \n        gotoLine : function (line) {\n            \n            var settings = this.settings;\n            \n            if (!settings.gotoLine)\n            {\n                return this;\n            }\n            \n            var cm       = this.cm;\n            var editor   = this.editor;\n            var count    = cm.lineCount();\n            var preview  = this.preview;\n            \n            if (typeof line === \"string\")\n            {\n                if(line === \"last\")\n                {\n                    line = count;\n                }\n            \n                if (line === \"first\")\n                {\n                    line = 1;\n                }\n            }\n            \n            if (typeof line !== \"number\") \n            {  \n                alert(\"Error: The line number must be an integer.\");\n                return this;\n            }\n            \n            line  = parseInt(line) - 1;\n            \n            if (line > count)\n            {\n                alert(\"Error: The line number range 1-\" + count);\n                \n                return this;\n            }\n            \n            cm.setCursor( {line : line, ch : 0} );\n            \n            var scrollInfo   = cm.getScrollInfo();\n            var clientHeight = scrollInfo.clientHeight; \n            var coords       = cm.charCoords({line : line, ch : 0}, \"local\");\n            \n            cm.scrollTo(null, (coords.top + coords.bottom - clientHeight) / 2);\n            \n            if (settings.watch)\n            {            \n                var cmScroll  = this.codeMirror.find(\".CodeMirror-scroll\")[0];\n                var height    = $(cmScroll).height(); \n                var scrollTop = cmScroll.scrollTop;         \n                var percent   = (scrollTop / cmScroll.scrollHeight);\n\n                if (scrollTop === 0)\n                {\n                    preview.scrollTop(0);\n                } \n                else if (scrollTop + height >= cmScroll.scrollHeight - 16)\n                { \n                    preview.scrollTop(preview[0].scrollHeight);                    \n                } \n                else\n                {                    \n                    preview.scrollTop(preview[0].scrollHeight * percent);\n                }\n            }\n\n            cm.focus();\n            \n            return this;\n        },\n        \n        /**\n         * 扩展当前实例对象，可同时设置多个或者只设置一个\n         * Extend editormd instance object, can mutil setting.\n         * \n         * @returns {editormd}                  this(editormd instance object.)\n         */\n        \n        extend : function() {\n            if (typeof arguments[1] !== \"undefined\")\n            {\n                if (typeof arguments[1] === \"function\")\n                {\n                    arguments[1] = $.proxy(arguments[1], this);\n                }\n\n                this[arguments[0]] = arguments[1];\n            }\n            \n            if (typeof arguments[0] === \"object\" && typeof arguments[0].length === \"undefined\")\n            {\n                $.extend(true, this, arguments[0]);\n            }\n\n            return this;\n        },\n        \n        /**\n         * 设置或扩展当前实例对象，单个设置\n         * Extend editormd instance object, one by one\n         * \n         * @param   {String|Object}   key       option key\n         * @param   {String|Object}   value     option value\n         * @returns {editormd}                  this(editormd instance object.)\n         */\n        \n        set : function (key, value) {\n            \n            if (typeof value !== \"undefined\" && typeof value === \"function\")\n            {\n                value = $.proxy(value, this);\n            }\n            \n            this[key] = value;\n\n            return this;\n        },\n        \n        /**\n         * 重新配置\n         * Resetting editor options\n         * \n         * @param   {String|Object}   key       option key\n         * @param   {String|Object}   value     option value\n         * @returns {editormd}                  this(editormd instance object.)\n         */\n        \n        config : function(key, value) {\n            var settings = this.settings;\n            \n            if (typeof key === \"object\")\n            {\n                settings = $.extend(true, settings, key);\n            }\n            \n            if (typeof key === \"string\")\n            {\n                settings[key] = value;\n            }\n            \n            this.settings = settings;\n            this.recreate();\n            \n            return this;\n        },\n        \n        /**\n         * 注册事件处理方法\n         * Bind editor event handle\n         * \n         * @param   {String}     eventType      event type\n         * @param   {Function}   callback       回调函数\n         * @returns {editormd}                  this(editormd instance object.)\n         */\n        \n        on : function(eventType, callback) {\n            var settings = this.settings;\n            \n            if (typeof settings[\"on\" + eventType] !== \"undefined\") \n            {                \n                settings[\"on\" + eventType] = $.proxy(callback, this);      \n            }\n\n            return this;\n        },\n        \n        /**\n         * 解除事件处理方法\n         * Unbind editor event handle\n         * \n         * @param   {String}   eventType          event type\n         * @returns {editormd}                    this(editormd instance object.)\n         */\n        \n        off : function(eventType) {\n            var settings = this.settings;\n            \n            if (typeof settings[\"on\" + eventType] !== \"undefined\") \n            {\n                settings[\"on\" + eventType] = function(){};\n            }\n            \n            return this;\n        },\n        \n        /**\n         * 显示工具栏\n         * Display toolbar\n         * \n         * @param   {Function} [callback=function(){}] 回调函数\n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        showToolbar : function(callback) {\n            var settings = this.settings;\n            \n            if(settings.readOnly) {\n                return this;\n            }\n            \n            if (settings.toolbar && (this.toolbar.length < 1 || this.toolbar.find(\".\" + this.classPrefix + \"menu\").html() === \"\") )\n            {\n                this.setToolbar();\n            }\n            \n            settings.toolbar = true; \n            \n            this.toolbar.show();\n            this.resize();\n            \n            $.proxy(callback || function(){}, this)();\n\n            return this;\n        },\n        \n        /**\n         * 隐藏工具栏\n         * Hide toolbar\n         * \n         * @param   {Function} [callback=function(){}] 回调函数\n         * @returns {editormd}                         this(editormd instance object.)\n         */\n        \n        hideToolbar : function(callback) { \n            var settings = this.settings;\n            \n            settings.toolbar = false;  \n            this.toolbar.hide();\n            this.resize();\n            \n            $.proxy(callback || function(){}, this)();\n\n            return this;\n        },\n        \n        /**\n         * 页面滚动时工具栏的固定定位\n         * Set toolbar in window scroll auto fixed position\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setToolbarAutoFixed : function(fixed) {\n            \n            var state    = this.state;\n            var editor   = this.editor;\n            var toolbar  = this.toolbar;\n            var settings = this.settings;\n            \n            if (typeof fixed !== \"undefined\")\n            {\n                settings.toolbarAutoFixed = fixed;\n            }\n            \n            var autoFixedHandle = function(){\n                var $window = $(window);\n                var top     = $window.scrollTop();\n                \n                if (!settings.toolbarAutoFixed)\n                {\n                    return false;\n                }\n\n                if (top - editor.offset().top > 10 && top < editor.height())\n                {\n                    toolbar.css({\n                        position : \"fixed\",\n                        width    : editor.width() + \"px\",\n                        left     : ($window.width() - editor.width()) / 2 + \"px\"\n                    });\n                }\n                else\n                {\n                    toolbar.css({\n                        position : \"absolute\",\n                        width    : \"100%\",\n                        left     : 0\n                    });\n                }\n            };\n            \n            if (!state.fullscreen && !state.preview && settings.toolbar && settings.toolbarAutoFixed)\n            {\n                $(window).bind(\"scroll\", autoFixedHandle);\n            }\n\n            return this;\n        },\n        \n        /**\n         * 配置和初始化工具栏\n         * Set toolbar and Initialization\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setToolbar : function() {\n            var settings    = this.settings;  \n            \n            if(settings.readOnly) {\n                return this;\n            }\n            \n            var editor      = this.editor;\n            var preview     = this.preview;\n            var classPrefix = this.classPrefix;\n            \n            var toolbar     = this.toolbar = editor.children(\".\" + classPrefix + \"toolbar\");\n            \n            if (settings.toolbar && toolbar.length < 1)\n            {            \n                var toolbarHTML = \"<div class=\\\"\" + classPrefix + \"toolbar\\\"><div class=\\\"\" + classPrefix + \"toolbar-container\\\"><ul class=\\\"\" + classPrefix + \"menu\\\"></ul></div></div>\";\n                \n                editor.append(toolbarHTML);\n                toolbar = this.toolbar = editor.children(\".\" + classPrefix + \"toolbar\");\n            }\n            \n            if (!settings.toolbar) \n            {\n                toolbar.hide();\n                \n                return this;\n            }\n            \n            toolbar.show();\n            \n            var icons       = (typeof settings.toolbarIcons === \"function\") ? settings.toolbarIcons() \n                            : ((typeof settings.toolbarIcons === \"string\")  ? editormd.toolbarModes[settings.toolbarIcons] : settings.toolbarIcons);\n            \n            var toolbarMenu = toolbar.find(\".\" + this.classPrefix + \"menu\"), menu = \"\";\n            var pullRight   = false;\n            \n            for (var i = 0, len = icons.length; i < len; i++)\n            {\n                var name = icons[i];\n\n                if (name === \"||\") \n                { \n                    pullRight = true;\n                } \n                else if (name === \"|\")\n                {\n                    menu += \"<li class=\\\"divider\\\" unselectable=\\\"on\\\">|</li>\";\n                }\n                else\n                {\n                    var isHeader = (/h(\\d)/.test(name));\n                    var index    = name;\n                    \n                    if (name === \"watch\" && !settings.watch) {\n                        index = \"unwatch\";\n                    }\n                    \n                    var title     = settings.lang.toolbar[index];\n                    var iconTexts = settings.toolbarIconTexts[index];\n                    var iconClass = settings.toolbarIconsClass[index];\n                    \n                    title     = (typeof title     === \"undefined\") ? \"\" : title;\n                    iconTexts = (typeof iconTexts === \"undefined\") ? \"\" : iconTexts;\n                    iconClass = (typeof iconClass === \"undefined\") ? \"\" : iconClass;\n\n                    var menuItem = pullRight ? \"<li class=\\\"pull-right\\\">\" : \"<li>\";\n                    \n                    if (typeof settings.toolbarCustomIcons[name] !== \"undefined\" && typeof settings.toolbarCustomIcons[name] !== \"function\")\n                    {\n                        menuItem += settings.toolbarCustomIcons[name];\n                    }\n                    else \n                    {\n                        menuItem += \"<a href=\\\"javascript:;\\\" title=\\\"\" + title + \"\\\" unselectable=\\\"on\\\">\";\n                        menuItem += \"<i class=\\\"fa \" + iconClass + \"\\\" name=\\\"\"+name+\"\\\" unselectable=\\\"on\\\">\"+((isHeader) ? name.toUpperCase() : ( (iconClass === \"\") ? iconTexts : \"\") ) + \"</i>\";\n                        menuItem += \"</a>\";\n                    }\n\n                    menuItem += \"</li>\";\n\n                    menu = pullRight ? menuItem + menu : menu + menuItem;\n                }\n            }\n\n            toolbarMenu.html(menu);\n            \n            toolbarMenu.find(\"[title=\\\"Lowercase\\\"]\").attr(\"title\", settings.lang.toolbar.lowercase);\n            toolbarMenu.find(\"[title=\\\"ucwords\\\"]\").attr(\"title\", settings.lang.toolbar.ucwords);\n            \n            this.setToolbarHandler();\n            this.setToolbarAutoFixed();\n\n            return this;\n        },\n        \n        /**\n         * 工具栏图标事件处理对象序列\n         * Get toolbar icons event handlers\n         * \n         * @param   {Object}   cm    CodeMirror的实例对象\n         * @param   {String}   name  要获取的事件处理器名称\n         * @returns {Object}         返回处理对象序列\n         */\n            \n        dialogLockScreen : function() {\n            $.proxy(editormd.dialogLockScreen, this)();\n            \n            return this;\n        },\n\n        dialogShowMask : function(dialog) {\n            $.proxy(editormd.dialogShowMask, this)(dialog);\n            \n            return this;\n        },\n        \n        getToolbarHandles : function(name) {  \n            var toolbarHandlers = this.toolbarHandlers = editormd.toolbarHandlers;\n            \n            return (name && typeof toolbarIconHandlers[name] !== \"undefined\") ? toolbarHandlers[name] : toolbarHandlers;\n        },\n        \n        /**\n         * 工具栏图标事件处理器\n         * Bind toolbar icons event handle\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setToolbarHandler : function() {\n            var _this               = this;\n            var settings            = this.settings;\n            \n            if (!settings.toolbar || settings.readOnly) {\n                return this;\n            }\n            \n            var toolbar             = this.toolbar;\n            var cm                  = this.cm;\n            var classPrefix         = this.classPrefix;           \n            var toolbarIcons        = this.toolbarIcons = toolbar.find(\".\" + classPrefix + \"menu > li > a\");  \n            var toolbarIconHandlers = this.getToolbarHandles();  \n                \n            toolbarIcons.bind(editormd.mouseOrTouch(\"click\", \"touchend\"), function(event) {\n\n                var icon                = $(this).children(\".fa\");\n                var name                = icon.attr(\"name\");\n                var cursor              = cm.getCursor();\n                var selection           = cm.getSelection();\n\n                if (name === \"\") {\n                    return ;\n                }\n                \n                _this.activeIcon = icon;\n\n                if (typeof toolbarIconHandlers[name] !== \"undefined\") \n                {\n                    $.proxy(toolbarIconHandlers[name], _this)(cm);\n                }\n                else \n                {\n                    if (typeof settings.toolbarHandlers[name] !== \"undefined\") \n                    {\n                        $.proxy(settings.toolbarHandlers[name], _this)(cm, icon, cursor, selection);\n                    }\n                }\n                \n                if (name !== \"link\" && name !== \"reference-link\" && name !== \"image\" && name !== \"code-block\" && \n                    name !== \"preformatted-text\" && name !== \"watch\" && name !== \"preview\" && name !== \"search\" && name !== \"fullscreen\" && name !== \"info\") \n                {\n                    cm.focus();\n                }\n\n                return false;\n\n            });\n\n            return this;\n        },\n        \n        /**\n         * 动态创建对话框\n         * Creating custom dialogs\n         * \n         * @param   {Object} options  配置项键值对 Key/Value\n         * @returns {dialog}          返回创建的dialog的jQuery实例对象\n         */\n        \n        createDialog : function(options) {            \n            return $.proxy(editormd.createDialog, this)(options);\n        },\n        \n        /**\n         * 创建关于Editor.md的对话框\n         * Create about Editor.md dialog\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        createInfoDialog : function() {\n            var _this        = this;\n\t\t\tvar editor       = this.editor;\n            var classPrefix  = this.classPrefix;  \n            \n            var infoDialogHTML = [\n                \"<div class=\\\"\" + classPrefix + \"dialog \" + classPrefix + \"dialog-info\\\" style=\\\"\\\">\",\n                \"<div class=\\\"\" + classPrefix + \"dialog-container\\\">\",\n                \"<h1><i class=\\\"editormd-logo editormd-logo-lg editormd-logo-color\\\"></i> \" + editormd.title + \"<small>v\" + editormd.version + \"</small></h1>\",\n                \"<p>\" + this.lang.description + \"</p>\",\n                \"<p style=\\\"margin: 10px 0 20px 0;\\\"><a href=\\\"\" + editormd.homePage + \"\\\" target=\\\"_blank\\\">\" + editormd.homePage + \" <i class=\\\"fa fa-external-link\\\"></i></a></p>\",\n                \"<p style=\\\"font-size: 0.85em;\\\">Copyright &copy; 2015 <a href=\\\"https://github.com/pandao\\\" target=\\\"_blank\\\" class=\\\"hover-link\\\">Pandao</a>, The <a href=\\\"https://github.com/pandao/editor.md/blob/master/LICENSE\\\" target=\\\"_blank\\\" class=\\\"hover-link\\\">MIT</a> License.</p>\",\n                \"</div>\",\n                \"<a href=\\\"javascript:;\\\" class=\\\"fa fa-close \" + classPrefix + \"dialog-close\\\"></a>\",\n                \"</div>\"\n            ].join(\"\\n\");\n\n            editor.append(infoDialogHTML);\n            \n            var infoDialog  = this.infoDialog = editor.children(\".\" + classPrefix + \"dialog-info\");\n\n            infoDialog.find(\".\" + classPrefix + \"dialog-close\").bind(editormd.mouseOrTouch(\"click\", \"touchend\"), function() {\n                _this.hideInfoDialog();\n            });\n            \n            infoDialog.css(\"border\", (editormd.isIE8) ? \"1px solid #ddd\" : \"\").css(\"z-index\", editormd.dialogZindex).show();\n            \n            this.infoDialogPosition();\n\n            return this;\n        },\n        \n        /**\n         * 关于Editor.md对话居中定位\n         * Editor.md dialog position handle\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        infoDialogPosition : function() {\n            var infoDialog = this.infoDialog;\n            \n\t\t\tvar _infoDialogPosition = function() {\n\t\t\t\tinfoDialog.css({\n\t\t\t\t\ttop  : ($(window).height() - infoDialog.height()) / 2 + \"px\",\n\t\t\t\t\tleft : ($(window).width()  - infoDialog.width()) / 2  + \"px\"\n\t\t\t\t});\n\t\t\t};\n\n\t\t\t_infoDialogPosition();\n\n\t\t\t$(window).resize(_infoDialogPosition);\n            \n            return this;\n        },\n        \n        /**\n         * 显示关于Editor.md\n         * Display about Editor.md dialog\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        showInfoDialog : function() {\n\n            $(\"html,body\").css(\"overflow-x\", \"hidden\");\n            \n            var _this       = this;\n\t\t\tvar editor      = this.editor;\n            var settings    = this.settings;         \n\t\t\tvar infoDialog  = this.infoDialog = editor.children(\".\" + this.classPrefix + \"dialog-info\");\n            \n            if (infoDialog.length < 1)\n            {\n                this.createInfoDialog();\n            }\n            \n            this.lockScreen(true);\n            \n            this.mask.css({\n\t\t\t\t\t\topacity         : settings.dialogMaskOpacity,\n\t\t\t\t\t\tbackgroundColor : settings.dialogMaskBgColor\n\t\t\t\t\t}).show();\n\n\t\t\tinfoDialog.css(\"z-index\", editormd.dialogZindex).show();\n\n\t\t\tthis.infoDialogPosition();\n\n            return this;\n        },\n        \n        /**\n         * 隐藏关于Editor.md\n         * Hide about Editor.md dialog\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        hideInfoDialog : function() {            \n            $(\"html,body\").css(\"overflow-x\", \"\");\n            this.infoDialog.hide();\n            this.mask.hide();\n            this.lockScreen(false);\n\n            return this;\n        },\n        \n        /**\n         * 锁屏\n         * lock screen\n         * \n         * @param   {Boolean}    lock    Boolean 布尔值，是否锁屏\n         * @returns {editormd}           返回editormd的实例对象\n         */\n        \n        lockScreen : function(lock) {\n            editormd.lockScreen(lock);\n            this.resize();\n\n            return this;\n        },\n        \n        /**\n         * 编辑器界面重建，用于动态语言包或模块加载等\n         * Recreate editor\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        recreate : function() {\n            var _this            = this;\n            var editor           = this.editor;\n            var settings         = this.settings;\n            \n            this.codeMirror.remove();\n            \n            this.setCodeMirror();\n\n            if (!settings.readOnly) \n            {\n                if (editor.find(\".editormd-dialog\").length > 0) {\n                    editor.find(\".editormd-dialog\").remove();\n                }\n                \n                if (settings.toolbar) \n                {  \n                    this.getToolbarHandles();                  \n                    this.setToolbar();\n                }\n            }\n            \n            this.loadedDisplay(true);\n\n            return this;\n        },\n        \n        /**\n         * 高亮预览HTML的pre代码部分\n         * highlight of preview codes\n         * \n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        previewCodeHighlight : function() {    \n            var settings         = this.settings;\n            var previewContainer = this.previewContainer;\n            \n            if (settings.previewCodeHighlight) \n            {\n                previewContainer.find(\"pre\").addClass(\"prettyprint linenums\");\n                \n                if (typeof prettyPrint !== \"undefined\")\n                {                    \n                    prettyPrint();\n                }\n            }\n\n            return this;\n        },\n        \n        /**\n         * 解析TeX(KaTeX)科学公式\n         * TeX(KaTeX) Renderer\n         * \n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        katexRender : function() {\n            \n            if (timer === null)\n            {\n                return this;\n            }\n            \n            this.previewContainer.find(\".\" + editormd.classNames.tex).each(function(){\n                var tex  = $(this);\n                editormd.$katex.render(tex.text(), tex[0]);\n                \n                tex.find(\".katex\").css(\"font-size\", \"1.6em\");\n            });   \n\n            return this;\n        },\n        \n        /**\n         * 解析和渲染流程图及时序图\n         * FlowChart and SequenceDiagram Renderer\n         * \n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        flowChartAndSequenceDiagramRender : function() {\n            var $this            = this;\n            var settings         = this.settings;\n            var previewContainer = this.previewContainer;\n            \n            if (editormd.isIE8) {\n                return this;\n            }\n\n            if (settings.flowChart) {\n                if (flowchartTimer === null) {\n                    return this;\n                }\n                \n                previewContainer.find(\".flowchart\").flowChart(); \n            }\n\n            if (settings.sequenceDiagram) {\n                previewContainer.find(\".sequence-diagram\").sequenceDiagram({theme: \"simple\"});\n            }\n                    \n            var preview    = $this.preview;\n            var codeMirror = $this.codeMirror;\n            var codeView   = codeMirror.find(\".CodeMirror-scroll\");\n\n            var height    = codeView.height();\n            var scrollTop = codeView.scrollTop();                    \n            var percent   = (scrollTop / codeView[0].scrollHeight);\n            var tocHeight = 0;\n\n            preview.find(\".markdown-toc-list\").each(function(){\n                tocHeight += $(this).height();\n            });\n\n            var tocMenuHeight = preview.find(\".editormd-toc-menu\").height(); \n            tocMenuHeight = (!tocMenuHeight) ? 0 : tocMenuHeight;\n\n            if (scrollTop === 0) \n            {\n                preview.scrollTop(0);\n            } \n            else if (scrollTop + height >= codeView[0].scrollHeight - 16)\n            { \n                preview.scrollTop(preview[0].scrollHeight);                        \n            } \n            else\n            {                  \n                preview.scrollTop((preview[0].scrollHeight + tocHeight + tocMenuHeight) * percent);\n            }\n\n            return this;\n        },\n        \n        /**\n         * 注册键盘快捷键处理\n         * Register CodeMirror keyMaps (keyboard shortcuts).\n         * \n         * @param   {Object}    keyMap      KeyMap key/value {\"(Ctrl/Shift/Alt)-Key\" : function(){}}\n         * @returns {editormd}              return this\n         */\n        \n        registerKeyMaps : function(keyMap) {\n            \n            var _this           = this;\n            var cm              = this.cm;\n            var settings        = this.settings;\n            var toolbarHandlers = editormd.toolbarHandlers;\n            var disabledKeyMaps = settings.disabledKeyMaps;\n            \n            keyMap              = keyMap || null;\n            \n            if (keyMap)\n            {\n                for (var i in keyMap)\n                {\n                    if ($.inArray(i, disabledKeyMaps) < 0)\n                    {\n                        var map = {};\n                        map[i]  = keyMap[i];\n\n                        cm.addKeyMap(keyMap);\n                    }\n                }\n            }\n            else\n            {\n                for (var k in editormd.keyMaps)\n                {\n                    var _keyMap = editormd.keyMaps[k];\n                    var handle = (typeof _keyMap === \"string\") ? $.proxy(toolbarHandlers[_keyMap], _this) : $.proxy(_keyMap, _this);\n                    \n                    if ($.inArray(k, [\"F9\", \"F10\", \"F11\"]) < 0 && $.inArray(k, disabledKeyMaps) < 0)\n                    {\n                        var _map = {};\n                        _map[k] = handle;\n\n                        cm.addKeyMap(_map);\n                    }\n                }\n                \n                $(window).keydown(function(event) {\n                    \n                    var keymaps = {\n                        \"120\" : \"F9\",\n                        \"121\" : \"F10\",\n                        \"122\" : \"F11\"\n                    };\n                    \n                    if ( $.inArray(keymaps[event.keyCode], disabledKeyMaps) < 0 )\n                    {\n                        switch (event.keyCode)\n                        {\n                            case 120:\n                                    $.proxy(toolbarHandlers[\"watch\"], _this)();\n                                    return false;\n                                break;\n                                \n                            case 121:\n                                    $.proxy(toolbarHandlers[\"preview\"], _this)();\n                                    return false;\n                                break;\n                                \n                            case 122:\n                                    $.proxy(toolbarHandlers[\"fullscreen\"], _this)();                        \n                                    return false;\n                                break;\n                                \n                            default:\n                                break;\n                        }\n                    }\n                });\n            }\n\n            return this;\n        },\n        \n        /**\n         * 绑定同步滚动\n         * \n         * @returns {editormd} return this\n         */\n        \n        bindScrollEvent : function() {\n            \n            var _this            = this;\n            var preview          = this.preview;\n            var settings         = this.settings;\n            var codeMirror       = this.codeMirror;\n            var mouseOrTouch     = editormd.mouseOrTouch;\n            \n            if (!settings.syncScrolling) {\n                return this;\n            }\n                \n            var cmBindScroll = function() {    \n                codeMirror.find(\".CodeMirror-scroll\").bind(mouseOrTouch(\"scroll\", \"touchmove\"), function(event) {\n                    var height    = $(this).height();\n                    var scrollTop = $(this).scrollTop();                    \n                    var percent   = (scrollTop / $(this)[0].scrollHeight);\n                    \n                    var tocHeight = 0;\n                    \n                    preview.find(\".markdown-toc-list\").each(function(){\n                        tocHeight += $(this).height();\n                    });\n                    \n                    var tocMenuHeight = preview.find(\".editormd-toc-menu\").height();\n                    tocMenuHeight = (!tocMenuHeight) ? 0 : tocMenuHeight;\n\n                    if (scrollTop === 0) \n                    {\n                        preview.scrollTop(0);\n                    } \n                    else if (scrollTop + height >= $(this)[0].scrollHeight - 16)\n                    { \n                        preview.scrollTop(preview[0].scrollHeight);                        \n                    } \n                    else\n                    {\n                        preview.scrollTop((preview[0].scrollHeight  + tocHeight + tocMenuHeight) * percent);\n                    }\n                    \n                    $.proxy(settings.onscroll, _this)(event);\n                });\n            };\n\n            var cmUnbindScroll = function() {\n                codeMirror.find(\".CodeMirror-scroll\").unbind(mouseOrTouch(\"scroll\", \"touchmove\"));\n            };\n\n            var previewBindScroll = function() {\n                \n                preview.bind(mouseOrTouch(\"scroll\", \"touchmove\"), function(event) {\n                    var height    = $(this).height();\n                    var scrollTop = $(this).scrollTop();         \n                    var percent   = (scrollTop / $(this)[0].scrollHeight);\n                    var codeView  = codeMirror.find(\".CodeMirror-scroll\");\n\n                    if(scrollTop === 0) \n                    {\n                        codeView.scrollTop(0);\n                    }\n                    else if (scrollTop + height >= $(this)[0].scrollHeight)\n                    {\n                        codeView.scrollTop(codeView[0].scrollHeight);                        \n                    }\n                    else \n                    {\n                        codeView.scrollTop(codeView[0].scrollHeight * percent);\n                    }\n                    \n                    $.proxy(settings.onpreviewscroll, _this)(event);\n                });\n\n            };\n\n            var previewUnbindScroll = function() {\n                preview.unbind(mouseOrTouch(\"scroll\", \"touchmove\"));\n            }; \n\n\t\t\tcodeMirror.bind({\n\t\t\t\tmouseover  : cmBindScroll,\n\t\t\t\tmouseout   : cmUnbindScroll,\n\t\t\t\ttouchstart : cmBindScroll,\n\t\t\t\ttouchend   : cmUnbindScroll\n\t\t\t});\n            \n            if (settings.syncScrolling === \"single\") {\n                return this;\n            }\n            \n\t\t\tpreview.bind({\n\t\t\t\tmouseover  : previewBindScroll,\n\t\t\t\tmouseout   : previewUnbindScroll,\n\t\t\t\ttouchstart : previewBindScroll,\n\t\t\t\ttouchend   : previewUnbindScroll\n\t\t\t});\n\n            return this;\n        },\n        \n        bindChangeEvent : function() {\n            \n            var _this            = this;\n            var cm               = this.cm;\n            var settings         = this.settings;\n            \n            if (!settings.syncScrolling) {\n                return this;\n            }\n            \n            cm.on(\"change\", function(_cm, changeObj) {\n                \n                if (settings.watch)\n                {\n                    _this.previewContainer.css(\"padding\", settings.autoHeight ? \"20px 20px 50px 40px\" : \"20px\");\n                }\n                \n                timer = setTimeout(function() {\n                    clearTimeout(timer);\n                    _this.save();\n                    timer = null;\n                }, settings.delay);\n            });\n\n            return this;\n        },\n        \n        /**\n         * 加载队列完成之后的显示处理\n         * Display handle of the module queues loaded after.\n         * \n         * @param   {Boolean}   recreate   是否为重建编辑器\n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        loadedDisplay : function(recreate) {\n            \n            recreate             = recreate || false;\n            \n            var _this            = this;\n            var editor           = this.editor;\n            var preview          = this.preview;\n            var settings         = this.settings;\n            \n            this.containerMask.hide();\n            \n            this.save();\n            \n            if (settings.watch) {\n                preview.show();\n            }\n            \n            editor.data(\"oldWidth\", editor.width()).data(\"oldHeight\", editor.height()); // 为了兼容Zepto\n            \n            this.resize();\n            this.registerKeyMaps();\n            \n            $(window).resize(function(){\n                _this.resize();\n            });\n            \n            this.bindScrollEvent().bindChangeEvent();\n            \n            if (!recreate)\n            {\n                $.proxy(settings.onload, this)();\n            }\n            \n            this.state.loaded = true;\n\n            return this;\n        },\n        \n        /**\n         * 设置编辑器的宽度\n         * Set editor width\n         * \n         * @param   {Number|String} width  编辑器宽度值\n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        width : function(width) {\n                \n            this.editor.css(\"width\", (typeof width === \"number\") ? width  + \"px\" : width);            \n            this.resize();\n            \n            return this;\n        },\n        \n        /**\n         * 设置编辑器的高度\n         * Set editor height\n         * \n         * @param   {Number|String} height  编辑器高度值\n         * @returns {editormd}              返回editormd的实例对象\n         */\n        \n        height : function(height) {\n                \n            this.editor.css(\"height\", (typeof height === \"number\")  ? height  + \"px\" : height);            \n            this.resize();\n            \n            return this;\n        },\n        \n        /**\n         * 调整编辑器的尺寸和布局\n         * Resize editor layout\n         * \n         * @param   {Number|String} [width=null]  编辑器宽度值\n         * @param   {Number|String} [height=null] 编辑器高度值\n         * @returns {editormd}                    返回editormd的实例对象\n         */\n        \n        resize : function(width, height) {\n            \n            width  = width  || null;\n            height = height || null;\n            \n            var state      = this.state;\n            var editor     = this.editor;\n            var preview    = this.preview;\n            var toolbar    = this.toolbar;\n            var settings   = this.settings;\n            var codeMirror = this.codeMirror;\n            \n            if (width)\n            {\n                editor.css(\"width\", (typeof width  === \"number\") ? width  + \"px\" : width);\n            }\n            \n            if (settings.autoHeight && !state.fullscreen && !state.preview)\n            {\n                editor.css(\"height\", \"auto\");\n                codeMirror.css(\"height\", \"auto\");\n            } \n            else \n            {\n                if (height) \n                {\n                    editor.css(\"height\", (typeof height === \"number\") ? height + \"px\" : height);\n                }\n                \n                if (state.fullscreen)\n                {\n                    editor.height($(window).height());\n                }\n\n                if (settings.toolbar && !settings.readOnly) \n                {\n                    codeMirror.css(\"margin-top\", toolbar.height() + 1).height(editor.height() - toolbar.height());\n                } \n                else\n                {\n                    codeMirror.css(\"margin-top\", 0).height(editor.height());\n                }\n            }\n            \n            if(settings.watch) \n            {\n                codeMirror.width(editor.width() / 2);\n                preview.width((!state.preview) ? editor.width() / 2 : editor.width());\n                \n                this.previewContainer.css(\"padding\", settings.autoHeight ? \"20px 20px 50px 40px\" : \"20px\");\n                \n                if (settings.toolbar && !settings.readOnly) \n                {\n                    preview.css(\"top\", toolbar.height() + 1);\n                } \n                else \n                {\n                    preview.css(\"top\", 0);\n                }\n                \n                if (settings.autoHeight && !state.fullscreen && !state.preview)\n                {\n                    preview.height(\"\");\n                }\n                else\n                {                \n                    var previewHeight = (settings.toolbar && !settings.readOnly) ? editor.height() - toolbar.height() : editor.height();\n                    \n                    preview.height(previewHeight);\n                }\n            } \n            else \n            {\n                codeMirror.width(editor.width());\n                preview.hide();\n            }\n            \n            if (state.loaded) \n            {\n                $.proxy(settings.onresize, this)();\n            }\n\n            return this;\n        },\n        \n        /**\n         * 解析和保存Markdown代码\n         * Parse & Saving Markdown source code\n         * \n         * @returns {editormd}     返回editormd的实例对象\n         */\n        \n        save : function() {\n            \n            if (timer === null)\n            {\n                return this;\n            }\n            \n            var _this            = this;\n            var state            = this.state;\n            var settings         = this.settings;\n            var cm               = this.cm;            \n            var cmValue          = cm.getValue();\n            var previewContainer = this.previewContainer;\n\n            if (settings.mode !== \"gfm\" && settings.mode !== \"markdown\") \n            {\n                this.markdownTextarea.val(cmValue);\n                \n                return this;\n            }\n            \n            var marked          = editormd.$marked;\n            var markdownToC     = this.markdownToC = [];            \n            var rendererOptions = this.markedRendererOptions = {  \n                toc                  : settings.toc,\n                tocm                 : settings.tocm,\n                tocStartLevel        : settings.tocStartLevel,\n                pageBreak            : settings.pageBreak,\n                taskList             : settings.taskList,\n                emoji                : settings.emoji,\n                tex                  : settings.tex,\n                atLink               : settings.atLink,           // for @link\n                emailLink            : settings.emailLink,        // for mail address auto link\n                flowChart            : settings.flowChart,\n                sequenceDiagram      : settings.sequenceDiagram,\n                previewCodeHighlight : settings.previewCodeHighlight,\n            };\n            \n            var markedOptions = this.markedOptions = {\n                renderer    : editormd.markedRenderer(markdownToC, rendererOptions),\n                gfm         : true,\n                tables      : true,\n                breaks      : true,\n                pedantic    : false,\n                sanitize    : (settings.htmlDecode) ? false : true,  // 关闭忽略HTML标签，即开启识别HTML标签，默认为false\n                smartLists  : true,\n                smartypants : true\n            };\n            \n            marked.setOptions(markedOptions);\n                    \n            var newMarkdownDoc = editormd.$marked(cmValue, markedOptions);\n            \n            //console.info(\"cmValue\", cmValue, newMarkdownDoc);\n            \n            newMarkdownDoc = editormd.filterHTMLTags(newMarkdownDoc, settings.htmlDecode);\n            \n            //console.error(\"cmValue\", cmValue, newMarkdownDoc);\n            \n            this.markdownTextarea.text(cmValue);\n            \n            cm.save();\n            \n            if (settings.saveHTMLToTextarea) \n            {\n                this.htmlTextarea.text(newMarkdownDoc);\n            }\n            \n            if(settings.watch || (!settings.watch && state.preview))\n            {\n                previewContainer.html(newMarkdownDoc);\n\n                this.previewCodeHighlight();\n                \n                if (settings.toc) \n                {\n                    var tocContainer = (settings.tocContainer === \"\") ? previewContainer : $(settings.tocContainer);\n                    var tocMenu      = tocContainer.find(\".\" + this.classPrefix + \"toc-menu\");\n                    \n                    tocContainer.attr(\"previewContainer\", (settings.tocContainer === \"\") ? \"true\" : \"false\");\n                    \n                    if (settings.tocContainer !== \"\" && tocMenu.length > 0)\n                    {\n                        tocMenu.remove();\n                    }\n                    \n                    editormd.markdownToCRenderer(markdownToC, tocContainer, settings.tocDropdown, settings.tocStartLevel);\n            \n                    if (settings.tocDropdown || tocContainer.find(\".\" + this.classPrefix + \"toc-menu\").length > 0)\n                    {\n                        editormd.tocDropdownMenu(tocContainer, (settings.tocTitle !== \"\") ? settings.tocTitle : this.lang.tocTitle);\n                    }\n            \n                    if (settings.tocContainer !== \"\")\n                    {\n                        previewContainer.find(\".markdown-toc\").css(\"border\", \"none\");\n                    }\n                }\n                \n                if (settings.tex)\n                {\n                    if (!editormd.kaTeXLoaded && settings.autoLoadModules) \n                    {\n                        editormd.loadKaTeX(function() {\n                            editormd.$katex = katex;\n                            editormd.kaTeXLoaded = true;\n                            _this.katexRender();\n                        });\n                    } \n                    else \n                    {\n                        editormd.$katex = katex;\n                        this.katexRender();\n                    }\n                }                \n                \n                if (settings.flowChart || settings.sequenceDiagram)\n                {\n                    flowchartTimer = setTimeout(function(){\n                        clearTimeout(flowchartTimer);\n                        _this.flowChartAndSequenceDiagramRender();\n                        flowchartTimer = null;\n                    }, 10);\n                }\n\n                if (state.loaded) \n                {\n                    $.proxy(settings.onchange, this)();\n                }\n            }\n\n            return this;\n        },\n        \n        /**\n         * 聚焦光标位置\n         * Focusing the cursor position\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        focus : function() {\n            this.cm.focus();\n\n            return this;\n        },\n        \n        /**\n         * 设置光标的位置\n         * Set cursor position\n         * \n         * @param   {Object}    cursor 要设置的光标位置键值对象，例：{line:1, ch:0}\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        setCursor : function(cursor) {\n            this.cm.setCursor(cursor);\n\n            return this;\n        },\n        \n        /**\n         * 获取当前光标的位置\n         * Get the current position of the cursor\n         * \n         * @returns {Cursor}         返回一个光标Cursor对象\n         */\n        \n        getCursor : function() {\n            return this.cm.getCursor();\n        },\n        \n        /**\n         * 设置光标选中的范围\n         * Set cursor selected ranges\n         * \n         * @param   {Object}    from   开始位置的光标键值对象，例：{line:1, ch:0}\n         * @param   {Object}    to     结束位置的光标键值对象，例：{line:1, ch:0}\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        setSelection : function(from, to) {\n        \n            this.cm.setSelection(from, to);\n        \n            return this;\n        },\n        \n        /**\n         * 获取光标选中的文本\n         * Get the texts from cursor selected\n         * \n         * @returns {String}         返回选中文本的字符串形式\n         */\n        \n        getSelection : function() {\n            return this.cm.getSelection();\n        },\n        \n        /**\n         * 设置光标选中的文本范围\n         * Set the cursor selection ranges\n         * \n         * @param   {Array}    ranges  cursor selection ranges array\n         * @returns {Array}            return this\n         */\n        \n        setSelections : function(ranges) {\n            this.cm.setSelections(ranges);\n            \n            return this;\n        },\n        \n        /**\n         * 获取光标选中的文本范围\n         * Get the cursor selection ranges\n         * \n         * @returns {Array}         return selection ranges array\n         */\n        \n        getSelections : function() {\n            return this.cm.getSelections();\n        },\n        \n        /**\n         * 替换当前光标选中的文本或在当前光标处插入新字符\n         * Replace the text at the current cursor selected or insert a new character at the current cursor position\n         * \n         * @param   {String}    value  要插入的字符值\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        replaceSelection : function(value) {\n            this.cm.replaceSelection(value);\n\n            return this;\n        },\n        \n        /**\n         * 在当前光标处插入新字符\n         * Insert a new character at the current cursor position\n         *\n         * 同replaceSelection()方法\n         * With the replaceSelection() method\n         * \n         * @param   {String}    value  要插入的字符值\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        insertValue : function(value) {\n            this.replaceSelection(value);\n\n            return this;\n        },\n        \n        /**\n         * 追加markdown\n         * append Markdown to editor\n         * \n         * @param   {String}    md     要追加的markdown源文档\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        appendMarkdown : function(md) {\n            var settings = this.settings;\n            var cm       = this.cm;\n            \n            cm.setValue(cm.getValue() + md);\n            \n            return this;\n        },\n        \n        /**\n         * 设置和传入编辑器的markdown源文档\n         * Set Markdown source document\n         * \n         * @param   {String}    md     要传入的markdown源文档\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        setMarkdown : function(md) {\n            this.cm.setValue(md || this.settings.markdown);\n            \n            return this;\n        },\n        \n        /**\n         * 获取编辑器的markdown源文档\n         * Set Editor.md markdown/CodeMirror value\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        getMarkdown : function() {\n            return this.cm.getValue();\n        },\n        \n        /**\n         * 获取编辑器的源文档\n         * Get CodeMirror value\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        getValue : function() {\n            return this.cm.getValue();\n        },\n        \n        /**\n         * 设置编辑器的源文档\n         * Set CodeMirror value\n         * \n         * @param   {String}     value   set code/value/string/text\n         * @returns {editormd}           返回editormd的实例对象\n         */\n        \n        setValue : function(value) {\n            this.cm.setValue(value);\n            \n            return this;\n        },\n        \n        /**\n         * 清空编辑器\n         * Empty CodeMirror editor container\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        clear : function() {\n            this.cm.setValue(\"\");\n            \n            return this;\n        },\n        \n        /**\n         * 获取解析后存放在Textarea的HTML源码\n         * Get parsed html code from Textarea\n         * \n         * @returns {String}               返回HTML源码\n         */\n        \n        getHTML : function() {\n            if (!this.settings.saveHTMLToTextarea)\n            {\n                alert(\"Error: settings.saveHTMLToTextarea == false\");\n\n                return false;\n            }\n            \n            return this.htmlTextarea.val();\n        },\n        \n        /**\n         * getHTML()的别名\n         * getHTML (alias)\n         * \n         * @returns {String}           Return html code 返回HTML源码\n         */\n        \n        getTextareaSavedHTML : function() {\n            return this.getHTML();\n        },\n        \n        /**\n         * 获取预览窗口的HTML源码\n         * Get html from preview container\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        getPreviewedHTML : function() {\n            if (!this.settings.watch)\n            {\n                alert(\"Error: settings.watch == false\");\n\n                return false;\n            }\n            \n            return this.previewContainer.html();\n        },\n        \n        /**\n         * 开启实时预览\n         * Enable real-time watching\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        watch : function(callback) {     \n            var settings        = this.settings;\n            \n            if ($.inArray(settings.mode, [\"gfm\", \"markdown\"]) < 0)\n            {\n                return this;\n            }\n            \n            this.state.watching = settings.watch = true;\n            this.preview.show();\n            \n            if (this.toolbar)\n            {\n                var watchIcon   = settings.toolbarIconsClass.watch;\n                var unWatchIcon = settings.toolbarIconsClass.unwatch;\n                \n                var icon        = this.toolbar.find(\".fa[name=watch]\");\n                icon.parent().attr(\"title\", settings.lang.toolbar.watch);\n                icon.removeClass(unWatchIcon).addClass(watchIcon);\n            }\n            \n            this.codeMirror.css(\"border-right\", \"1px solid #ddd\").width(this.editor.width() / 2); \n            \n            timer = 0;\n            \n            this.save().resize();\n            \n            if (!settings.onwatch)\n            {\n                settings.onwatch = callback || function() {};\n            }\n            \n            $.proxy(settings.onwatch, this)();\n            \n            return this;\n        },\n        \n        /**\n         * 关闭实时预览\n         * Disable real-time watching\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        unwatch : function(callback) {\n            var settings        = this.settings;\n            this.state.watching = settings.watch = false;\n            this.preview.hide();\n            \n            if (this.toolbar) \n            {\n                var watchIcon   = settings.toolbarIconsClass.watch;\n                var unWatchIcon = settings.toolbarIconsClass.unwatch;\n                \n                var icon    = this.toolbar.find(\".fa[name=watch]\");\n                icon.parent().attr(\"title\", settings.lang.toolbar.unwatch);\n                icon.removeClass(watchIcon).addClass(unWatchIcon);\n            }\n            \n            this.codeMirror.css(\"border-right\", \"none\").width(this.editor.width());\n            \n            this.resize();\n            \n            if (!settings.onunwatch)\n            {\n                settings.onunwatch = callback || function() {};\n            }\n            \n            $.proxy(settings.onunwatch, this)();\n            \n            return this;\n        },\n        \n        /**\n         * 显示编辑器\n         * Show editor\n         * \n         * @param   {Function} [callback=function()] 回调函数\n         * @returns {editormd}                       返回editormd的实例对象\n         */\n        \n        show : function(callback) {\n            callback  = callback || function() {};\n            \n            var _this = this;\n            this.editor.show(0, function() {\n                $.proxy(callback, _this)();\n            });\n            \n            return this;\n        },\n        \n        /**\n         * 隐藏编辑器\n         * Hide editor\n         * \n         * @param   {Function} [callback=function()] 回调函数\n         * @returns {editormd}                       返回editormd的实例对象\n         */\n        \n        hide : function(callback) {\n            callback  = callback || function() {};\n            \n            var _this = this;\n            this.editor.hide(0, function() {\n                $.proxy(callback, _this)();\n            });\n            \n            return this;\n        },\n        \n        /**\n         * 隐藏编辑器部分，只预览HTML\n         * Enter preview html state\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        previewing : function() {\n            \n            var _this            = this;\n            var editor           = this.editor;\n            var preview          = this.preview;\n            var toolbar          = this.toolbar;\n            var settings         = this.settings;\n            var codeMirror       = this.codeMirror;\n            var previewContainer = this.previewContainer;\n            \n            if ($.inArray(settings.mode, [\"gfm\", \"markdown\"]) < 0) {\n                return this;\n            }\n            \n            if (settings.toolbar && toolbar) {\n                toolbar.toggle();\n                toolbar.find(\".fa[name=preview]\").toggleClass(\"active\");\n            }\n            \n            codeMirror.toggle();\n            \n            var escHandle = function(event) {\n                if (event.shiftKey && event.keyCode === 27) {\n                    _this.previewed();\n                }\n            };\n\n            if (codeMirror.css(\"display\") === \"none\") // 为了兼容Zepto，而不使用codeMirror.is(\":hidden\")\n            {\n                this.state.preview = true;\n\n                if (this.state.fullscreen) {\n                    preview.css(\"background\", \"#fff\");\n                }\n                \n                editor.find(\".\" + this.classPrefix + \"preview-close-btn\").show().bind(editormd.mouseOrTouch(\"click\", \"touchend\"), function(){\n                    _this.previewed();\n                });\n            \n                if (!settings.watch)\n                {\n                    this.save();\n                } \n                else \n                {\n                    previewContainer.css(\"padding\", \"\");\n                }\n                \n                previewContainer.addClass(this.classPrefix + \"preview-active\");\n\n                preview.show().css({\n                    position  : \"\",\n                    top       : 0,\n                    width     : editor.width(),\n                    height    : (settings.autoHeight && !this.state.fullscreen) ? \"auto\" : editor.height()\n                });\n                \n                if (this.state.loaded)\n                {\n                    $.proxy(settings.onpreviewing, this)();\n                }\n\n                $(window).bind(\"keyup\", escHandle);\n            } \n            else \n            {\n                $(window).unbind(\"keyup\", escHandle);\n                this.previewed();\n            }\n        },\n        \n        /**\n         * 显示编辑器部分，退出只预览HTML\n         * Exit preview html state\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        previewed : function() {\n            \n            var editor           = this.editor;\n            var preview          = this.preview;\n            var toolbar          = this.toolbar;\n            var settings         = this.settings;\n            var previewContainer = this.previewContainer;\n            var previewCloseBtn  = editor.find(\".\" + this.classPrefix + \"preview-close-btn\");\n\n            this.state.preview   = false;\n            \n            this.codeMirror.show();\n            \n            if (settings.toolbar) {\n                toolbar.show();\n            }\n            \n            preview[(settings.watch) ? \"show\" : \"hide\"]();\n            \n            previewCloseBtn.hide().unbind(editormd.mouseOrTouch(\"click\", \"touchend\"));\n                \n            previewContainer.removeClass(this.classPrefix + \"preview-active\");\n                \n            if (settings.watch)\n            {\n                previewContainer.css(\"padding\", \"20px\");\n            }\n            \n            preview.css({ \n                background : null,\n                position   : \"absolute\",\n                width      : editor.width() / 2,\n                height     : (settings.autoHeight && !this.state.fullscreen) ? \"auto\" : editor.height() - toolbar.height(),\n                top        : (settings.toolbar)    ? toolbar.height() : 0\n            });\n\n            if (this.state.loaded)\n            {\n                $.proxy(settings.onpreviewed, this)();\n            }\n            \n            return this;\n        },\n        \n        /**\n         * 编辑器全屏显示\n         * Fullscreen show\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        fullscreen : function() {\n            \n            var _this            = this;\n            var state            = this.state;\n            var editor           = this.editor;\n            var preview          = this.preview;\n            var toolbar          = this.toolbar;\n            var settings         = this.settings;\n            var fullscreenClass  = this.classPrefix + \"fullscreen\";\n            \n            if (toolbar) {\n                toolbar.find(\".fa[name=fullscreen]\").parent().toggleClass(\"active\"); \n            }\n            \n            var escHandle = function(event) {\n                if (!event.shiftKey && event.keyCode === 27) \n                {\n                    if (state.fullscreen)\n                    {\n                        _this.fullscreenExit();\n                    }\n                }\n            };\n\n            if (!editor.hasClass(fullscreenClass)) \n            {\n                state.fullscreen = true;\n\n                $(\"html,body\").css(\"overflow\", \"hidden\");\n                \n                editor.css({\n                    width    : $(window).width(),\n                    height   : $(window).height()\n                }).addClass(fullscreenClass);\n\n                this.resize();\n    \n                $.proxy(settings.onfullscreen, this)();\n\n                $(window).bind(\"keyup\", escHandle);\n            }\n            else\n            {           \n                $(window).unbind(\"keyup\", escHandle); \n                this.fullscreenExit();\n            }\n\n            return this;\n        },\n        \n        /**\n         * 编辑器退出全屏显示\n         * Exit fullscreen state\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        fullscreenExit : function() {\n            \n            var editor            = this.editor;\n            var settings          = this.settings;\n            var toolbar           = this.toolbar;\n            var fullscreenClass   = this.classPrefix + \"fullscreen\";  \n            \n            this.state.fullscreen = false;\n            \n            if (toolbar) {\n                toolbar.find(\".fa[name=fullscreen]\").parent().removeClass(\"active\"); \n            }\n\n            $(\"html,body\").css(\"overflow\", \"\");\n\n            editor.css({\n                width    : editor.data(\"oldWidth\"),\n                height   : editor.data(\"oldHeight\")\n            }).removeClass(fullscreenClass);\n\n            this.resize();\n            \n            $.proxy(settings.onfullscreenExit, this)();\n\n            return this;\n        },\n        \n        /**\n         * 加载并执行插件\n         * Load and execute the plugin\n         * \n         * @param   {String}     name    plugin name / function name\n         * @param   {String}     path    plugin load path\n         * @returns {editormd}           返回editormd的实例对象\n         */\n        \n        executePlugin : function(name, path) {\n            \n            var _this    = this;\n            var cm       = this.cm;\n            var settings = this.settings;\n            \n            path = settings.pluginPath + path;\n            \n            if (typeof define === \"function\") \n            {            \n                if (typeof this[name] === \"undefined\")\n                {\n                    alert(\"Error: \" + name + \" plugin is not found, you are not load this plugin.\");\n                    \n                    return this;\n                }\n                \n                this[name](cm);\n                \n                return this;\n            }\n            \n            if ($.inArray(path, editormd.loadFiles.plugin) < 0)\n            {\n                editormd.loadPlugin(path, function() {\n                    editormd.loadPlugins[name] = _this[name];\n                    _this[name](cm);\n                });\n            }\n            else\n            {\n                $.proxy(editormd.loadPlugins[name], this)(cm);\n            }\n            \n            return this;\n        },\n                \n        /**\n         * 搜索替换\n         * Search & replace\n         * \n         * @param   {String}     command    CodeMirror serach commands, \"find, fintNext, fintPrev, clearSearch, replace, replaceAll\"\n         * @returns {editormd}              return this\n         */\n        \n        search : function(command) {\n            var settings = this.settings;\n            \n            if (!settings.searchReplace)\n            {\n                alert(\"Error: settings.searchReplace == false\");\n                return this;\n            }\n            \n            if (!settings.readOnly)\n            {\n                this.cm.execCommand(command || \"find\");\n            }\n            \n            return this;\n        },\n        \n        searchReplace : function() {            \n            this.search(\"replace\");\n            \n            return this;\n        },\n        \n        searchReplaceAll : function() {          \n            this.search(\"replaceAll\");\n            \n            return this;\n        }\n    };\n    \n    editormd.fn.init.prototype = editormd.fn; \n   \n    /**\n     * 锁屏\n     * lock screen when dialog opening\n     * \n     * @returns {void}\n     */\n\n    editormd.dialogLockScreen = function() {\n        var settings = this.settings || {dialogLockScreen : true};\n        \n        if (settings.dialogLockScreen) \n        {            \n            $(\"html,body\").css(\"overflow\", \"hidden\");\n            this.resize();\n        }\n    };\n   \n    /**\n     * 显示透明背景层\n     * Display mask layer when dialog opening\n     * \n     * @param   {Object}     dialog    dialog jQuery object\n     * @returns {void}\n     */\n    \n    editormd.dialogShowMask = function(dialog) {\n        var editor   = this.editor;\n        var settings = this.settings || {dialogShowMask : true};\n        \n        dialog.css({\n            top  : ($(window).height() - dialog.height()) / 2 + \"px\",\n            left : ($(window).width()  - dialog.width())  / 2 + \"px\"\n        });\n\n        if (settings.dialogShowMask) {\n            editor.children(\".\" + this.classPrefix + \"mask\").css(\"z-index\", parseInt(dialog.css(\"z-index\")) - 1).show();\n        }\n    };\n\n    editormd.toolbarHandlers = {\n        undo : function() {\n            this.cm.undo();\n        },\n        \n        redo : function() {\n            this.cm.redo();\n        },\n        \n        bold : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"**\" + selection + \"**\");\n\n            if(selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n        },\n        \n        del : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"~~\" + selection + \"~~\");\n\n            if(selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n        },\n\n        italic : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"*\" + selection + \"*\");\n\n            if(selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n\n        quote : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"> \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n            else\n            {\n                cm.replaceSelection(\"> \" + selection);\n            }\n\n            //cm.replaceSelection(\"> \" + selection);\n            //cm.setCursor(cursor.line, (selection === \"\") ? cursor.ch + 2 : cursor.ch + selection.length + 2);\n        },\n        \n        ucfirst : function() {\n            var cm         = this.cm;\n            var selection  = cm.getSelection();\n            var selections = cm.listSelections();\n\n            cm.replaceSelection(editormd.firstUpperCase(selection));\n            cm.setSelections(selections);\n        },\n        \n        ucwords : function() {\n            var cm         = this.cm;\n            var selection  = cm.getSelection();\n            var selections = cm.listSelections();\n\n            cm.replaceSelection(editormd.wordsFirstUpperCase(selection));\n            cm.setSelections(selections);\n        },\n        \n        uppercase : function() {\n            var cm         = this.cm;\n            var selection  = cm.getSelection();\n            var selections = cm.listSelections();\n\n            cm.replaceSelection(selection.toUpperCase());\n            cm.setSelections(selections);\n        },\n        \n        lowercase : function() {\n            var cm         = this.cm;\n            var cursor     = cm.getCursor();\n            var selection  = cm.getSelection();\n            var selections = cm.listSelections();\n            \n            cm.replaceSelection(selection.toLowerCase());\n            cm.setSelections(selections);\n        },\n\n        h1 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"# \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n            else\n            {\n                cm.replaceSelection(\"# \" + selection);\n            }\n        },\n\n        h2 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"## \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 3);\n            }\n            else\n            {\n                cm.replaceSelection(\"## \" + selection);\n            }\n        },\n\n        h3 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"### \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 4);\n            }\n            else\n            {\n                cm.replaceSelection(\"### \" + selection);\n            }\n        },\n\n        h4 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"#### \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 5);\n            }\n            else\n            {\n                cm.replaceSelection(\"#### \" + selection);\n            }\n        },\n\n        h5 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"##### \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 6);\n            }\n            else\n            {\n                cm.replaceSelection(\"##### \" + selection);\n            }\n        },\n\n        h6 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"###### \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 7);\n            }\n            else\n            {\n                cm.replaceSelection(\"###### \" + selection);\n            }\n        },\n\n        \"list-ul\" : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (selection === \"\") \n            {\n                cm.replaceSelection(\"- \" + selection);\n            } \n            else \n            {\n                var selectionText = selection.split(\"\\n\");\n\n                for (var i = 0, len = selectionText.length; i < len; i++) \n                {\n                    selectionText[i] = (selectionText[i] === \"\") ? \"\" : \"- \" + selectionText[i];\n                }\n\n                cm.replaceSelection(selectionText.join(\"\\n\"));\n            }\n        },\n\n        \"list-ol\" : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if(selection === \"\") \n            {\n                cm.replaceSelection(\"1. \" + selection);\n            }\n            else\n            {\n                var selectionText = selection.split(\"\\n\");\n\n                for (var i = 0, len = selectionText.length; i < len; i++) \n                {\n                    selectionText[i] = (selectionText[i] === \"\") ? \"\" : (i+1) + \". \" + selectionText[i];\n                }\n\n                cm.replaceSelection(selectionText.join(\"\\n\"));\n            }\n        },\n\n        hr : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(((cursor.ch !== 0) ? \"\\n\\n\" : \"\\n\") + \"------------\\n\\n\");\n        },\n\n        tex : function() {\n            if (!this.settings.tex)\n            {\n                alert(\"settings.tex === false\");\n                return this;\n            }\n            \n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"$$\" + selection + \"$$\");\n\n            if(selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n        },\n\n        link : function() {\n            this.executePlugin(\"linkDialog\", \"link-dialog/link-dialog\");\n        },\n\n        \"reference-link\" : function() {\n            this.executePlugin(\"referenceLinkDialog\", \"reference-link-dialog/reference-link-dialog\");\n        },\n\n        pagebreak : function() {\n            if (!this.settings.pageBreak)\n            {\n                alert(\"settings.pageBreak === false\");\n                return this;\n            }\n            \n            var cm        = this.cm;\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"\\r\\n[========]\\r\\n\");\n        },\n\n        image : function() {\n            this.executePlugin(\"imageDialog\", \"image-dialog/image-dialog\");\n        },\n        \n        code : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"`\" + selection + \"`\");\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n\n        \"code-block\" : function() {\n            this.executePlugin(\"codeBlockDialog\", \"code-block-dialog/code-block-dialog\");            \n        },\n\n        \"preformatted-text\" : function() {\n            this.executePlugin(\"preformattedTextDialog\", \"preformatted-text-dialog/preformatted-text-dialog\");\n        },\n        \n        table : function() {\n            this.executePlugin(\"tableDialog\", \"table-dialog/table-dialog\");         \n        },\n        \n        datetime : function() {\n            var cm        = this.cm;\n            var selection = cm.getSelection();\n            var date      = new Date();\n            var langName  = this.settings.lang.name;\n            var datefmt   = editormd.dateFormat() + \" \" + editormd.dateFormat((langName === \"zh-cn\" || langName === \"zh-tw\") ? \"cn-week-day\" : \"week-day\");\n\n            cm.replaceSelection(datefmt);\n        },\n        \n        emoji : function() {\n            this.executePlugin(\"emojiDialog\", \"emoji-dialog/emoji-dialog\");\n        },\n                \n        \"html-entities\" : function() {\n            this.executePlugin(\"htmlEntitiesDialog\", \"html-entities-dialog/html-entities-dialog\");\n        },\n                \n        \"goto-line\" : function() {\n            this.executePlugin(\"gotoLineDialog\", \"goto-line-dialog/goto-line-dialog\");\n        },\n\n        watch : function() {    \n            this[this.settings.watch ? \"unwatch\" : \"watch\"]();\n        },\n\n        preview : function() {\n            this.previewing();\n        },\n\n        fullscreen : function() {\n            this.fullscreen();\n        },\n\n        clear : function() {\n            this.clear();\n        },\n        \n        search : function() {\n            this.search();\n        },\n\n        help : function() {\n            this.executePlugin(\"helpDialog\", \"help-dialog/help-dialog\");\n        },\n\n        info : function() {\n            this.showInfoDialog();\n        }\n    };\n    \n    editormd.keyMaps = {\n        \"Ctrl-1\"       : \"h1\",\n        \"Ctrl-2\"       : \"h2\",\n        \"Ctrl-3\"       : \"h3\",\n        \"Ctrl-4\"       : \"h4\",\n        \"Ctrl-5\"       : \"h5\",\n        \"Ctrl-6\"       : \"h6\",\n        \"Ctrl-B\"       : \"bold\",  // if this is string ==  editormd.toolbarHandlers.xxxx\n        \"Ctrl-D\"       : \"datetime\",\n        \n        \"Ctrl-E\"       : function() { // emoji\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            if (!this.settings.emoji)\n            {\n                alert(\"Error: settings.emoji == false\");\n                return ;\n            }\n\n            cm.replaceSelection(\":\" + selection + \":\");\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n        \"Ctrl-Alt-G\"   : \"goto-line\",\n        \"Ctrl-H\"       : \"hr\",\n        \"Ctrl-I\"       : \"italic\",\n        \"Ctrl-K\"       : \"code\",\n        \n        \"Ctrl-L\"        : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            var title = (selection === \"\") ? \"\" : \" \\\"\"+selection+\"\\\"\";\n\n            cm.replaceSelection(\"[\" + selection + \"](\"+title+\")\");\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n        \"Ctrl-U\"         : \"list-ul\",\n        \n        \"Shift-Ctrl-A\"   : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            if (!this.settings.atLink)\n            {\n                alert(\"Error: settings.atLink == false\");\n                return ;\n            }\n\n            cm.replaceSelection(\"@\" + selection);\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n        \n        \"Shift-Ctrl-C\"     : \"code\",\n        \"Shift-Ctrl-Q\"     : \"quote\",\n        \"Shift-Ctrl-S\"     : \"del\",\n        \"Shift-Ctrl-K\"     : \"tex\",  // KaTeX\n        \n        \"Shift-Alt-C\"      : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            cm.replaceSelection([\"```\", selection, \"```\"].join(\"\\n\"));\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 3);\n            } \n        },\n        \n        \"Shift-Ctrl-Alt-C\" : \"code-block\",\n        \"Shift-Ctrl-H\"     : \"html-entities\",\n        \"Shift-Alt-H\"      : \"help\",\n        \"Shift-Ctrl-E\"     : \"emoji\",\n        \"Shift-Ctrl-U\"     : \"uppercase\",\n        \"Shift-Alt-U\"      : \"ucwords\",\n        \"Shift-Ctrl-Alt-U\" : \"ucfirst\",\n        \"Shift-Alt-L\"      : \"lowercase\",\n        \n        \"Shift-Ctrl-I\"     : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            var title = (selection === \"\") ? \"\" : \" \\\"\"+selection+\"\\\"\";\n\n            cm.replaceSelection(\"![\" + selection + \"](\"+title+\")\");\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 4);\n            }\n        },\n        \n        \"Shift-Ctrl-Alt-I\" : \"image\",\n        \"Shift-Ctrl-L\"     : \"link\",\n        \"Shift-Ctrl-O\"     : \"list-ol\",\n        \"Shift-Ctrl-P\"     : \"preformatted-text\",\n        \"Shift-Ctrl-T\"     : \"table\",\n        \"Shift-Alt-P\"      : \"pagebreak\",\n        \"F9\"               : \"watch\",\n        \"F10\"              : \"preview\",\n        \"F11\"              : \"fullscreen\",\n    };\n    \n    /**\n     * 清除字符串两边的空格\n     * Clear the space of strings both sides.\n     * \n     * @param   {String}    str            string\n     * @returns {String}                   trimed string    \n     */\n    \n    var trim = function(str) {\n        return (!String.prototype.trim) ? str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\") : str.trim();\n    };\n    \n    editormd.trim = trim;\n    \n    /**\n     * 所有单词首字母大写\n     * Words first to uppercase\n     * \n     * @param   {String}    str            string\n     * @returns {String}                   string\n     */\n    \n    var ucwords = function (str) {\n        return str.toLowerCase().replace(/\\b(\\w)|\\s(\\w)/g, function($1) {  \n            return $1.toUpperCase();\n        });\n    };\n    \n    editormd.ucwords = editormd.wordsFirstUpperCase = ucwords;\n    \n    /**\n     * 字符串首字母大写\n     * Only string first char to uppercase\n     * \n     * @param   {String}    str            string\n     * @returns {String}                   string\n     */\n    \n    var firstUpperCase = function(str) {        \n        return str.toLowerCase().replace(/\\b(\\w)/, function($1){\n            return $1.toUpperCase();\n        });\n    };\n    \n    var ucfirst = firstUpperCase;\n    \n    editormd.firstUpperCase = editormd.ucfirst = firstUpperCase;\n    \n    editormd.urls = {\n        atLinkBase : \"https://github.com/\"\n    };\n    \n    editormd.regexs = {\n        atLink        : /@(\\w+)/g,\n        email         : /(\\w+)@(\\w+)\\.(\\w+)\\.?(\\w+)?/g,\n        emailLink     : /(mailto:)?([\\w\\.\\_]+)@(\\w+)\\.(\\w+)\\.?(\\w+)?/g,\n        emoji         : /:([\\w\\+-]+):/g,\n        emojiDatetime : /(\\d{2}:\\d{2}:\\d{2})/g,\n        twemoji       : /:(tw-([\\w]+)-?(\\w+)?):/g,\n        fontAwesome   : /:(fa-([\\w]+)(-(\\w+)){0,}):/g,\n        editormdLogo  : /:(editormd-logo-?(\\w+)?):/g,\n        pageBreak     : /^\\[[=]{8,}\\]$/\n    };\n\n    // Emoji graphics files url path\n    editormd.emoji     = {\n        path  : \"http://www.emoji-cheat-sheet.com/graphics/emojis/\",\n        ext   : \".png\"\n    };\n\n    // Twitter Emoji (Twemoji)  graphics files url path    \n    editormd.twemoji = {\n        path : \"http://twemoji.maxcdn.com/36x36/\",\n        ext  : \".png\"\n    };\n\n    /**\n     * 自定义marked的解析器\n     * Custom Marked renderer rules\n     * \n     * @param   {Array}    markdownToC     传入用于接收TOC的数组\n     * @returns {Renderer} markedRenderer  返回marked的Renderer自定义对象\n     */\n\n    editormd.markedRenderer = function(markdownToC, options) {\n        var defaults = {\n            toc                  : true,           // Table of contents\n            tocm                 : false,\n            tocStartLevel        : 1,              // Said from H1 to create ToC  \n            pageBreak            : true,\n            atLink               : true,           // for @link\n            emailLink            : true,           // for mail address auto link\n            taskList             : false,          // Enable Github Flavored Markdown task lists\n            emoji                : false,          // :emoji: , Support Twemoji, fontAwesome, Editor.md logo emojis.\n            tex                  : false,          // TeX(LaTeX), based on KaTeX\n            flowChart            : false,          // flowChart.js only support IE9+\n            sequenceDiagram      : false,          // sequenceDiagram.js only support IE9+\n        };\n        \n        var settings        = $.extend(defaults, options || {});    \n        var marked          = editormd.$marked;\n        var markedRenderer  = new marked.Renderer();\n        markdownToC         = markdownToC || [];        \n            \n        var regexs          = editormd.regexs;\n        var atLinkReg       = regexs.atLink;\n        var emojiReg        = regexs.emoji;\n        var emailReg        = regexs.email;\n        var emailLinkReg    = regexs.emailLink;\n        var twemojiReg      = regexs.twemoji;\n        var faIconReg       = regexs.fontAwesome;\n        var editormdLogoReg = regexs.editormdLogo;\n        var pageBreakReg    = regexs.pageBreak;\n\n        markedRenderer.emoji = function(text) {\n            \n            text = text.replace(editormd.regexs.emojiDatetime, function($1) {           \n                return $1.replace(/:/g, \"&#58;\");\n            });\n            \n            var matchs = text.match(emojiReg);\n\n            if (!matchs || !settings.emoji) {\n                return text;\n            }\n\n            for (var i = 0, len = matchs.length; i < len; i++)\n            {            \n                if (matchs[i] === \":+1:\") {\n                    matchs[i] = \":\\\\+1:\";\n                }\n\n                text = text.replace(new RegExp(matchs[i]), function($1, $2){\n                    var faMatchs = $1.match(faIconReg);\n                    var name     = $1.replace(/:/g, \"\");\n\n                    if (faMatchs)\n                    {                        \n                        for (var fa = 0, len1 = faMatchs.length; fa < len1; fa++)\n                        {\n                            var faName = faMatchs[fa].replace(/:/g, \"\");\n                            \n                            return \"<i class=\\\"fa \" + faName + \" fa-emoji\\\" title=\\\"\" + faName.replace(\"fa-\", \"\") + \"\\\"></i>\";\n                        }\n                    }\n                    else\n                    {\n                        var emdlogoMathcs = $1.match(editormdLogoReg);\n                        var twemojiMatchs = $1.match(twemojiReg);\n\n                        if (emdlogoMathcs)                                        \n                        {                            \n                            for (var x = 0, len2 = emdlogoMathcs.length; x < len2; x++)\n                            {\n                                var logoName = emdlogoMathcs[x].replace(/:/g, \"\");\n                                return \"<i class=\\\"\" + logoName + \"\\\" title=\\\"Editor.md logo (\" + logoName + \")\\\"></i>\";\n                            }\n                        }\n                        else if (twemojiMatchs) \n                        {\n                            for (var t = 0, len3 = twemojiMatchs.length; t < len3; t++)\n                            {\n                                var twe = twemojiMatchs[t].replace(/:/g, \"\").replace(\"tw-\", \"\");\n                                return \"<img src=\\\"\" + editormd.twemoji.path + twe + editormd.twemoji.ext + \"\\\" title=\\\"twemoji-\" + twe + \"\\\" alt=\\\"twemoji-\" + twe + \"\\\" class=\\\"emoji twemoji\\\" />\";\n                            }\n                        }\n                        else\n                        {\n                            var src = (name === \"+1\") ? \"plus1\" : name;\n                            src     = (src === \"black_large_square\") ? \"black_square\" : src;\n                            src     = (src === \"moon\") ? \"waxing_gibbous_moon\" : src;\n\n                            return \"<img src=\\\"\" + editormd.emoji.path + src + editormd.emoji.ext + \"\\\" class=\\\"emoji\\\" title=\\\"&#58;\" + name + \"&#58;\\\" alt=\\\"&#58;\" + name + \"&#58;\\\" />\";\n                        }\n                    }\n                });\n            }\n\n            return text;\n        };\n\n        markedRenderer.atLink = function(text) {\n\n            if (atLinkReg.test(text))\n            { \n                if (settings.atLink) \n                {\n                    text = text.replace(emailReg, function($1, $2, $3, $4) {\n                        return $1.replace(/@/g, \"_#_&#64;_#_\");\n                    });\n\n                    text = text.replace(atLinkReg, function($1, $2) {\n                        return \"<a href=\\\"\" + editormd.urls.atLinkBase + \"\" + $2 + \"\\\" title=\\\"&#64;\" + $2 + \"\\\" class=\\\"at-link\\\">\" + $1 + \"</a>\";\n                    }).replace(/_#_&#64;_#_/g, \"@\");\n                }\n                \n                if (settings.emailLink)\n                {\n                    text = text.replace(emailLinkReg, function($1, $2, $3, $4, $5) {\n                        return (!$2 && $.inArray($5, \"jpg|jpeg|png|gif|webp|ico|icon|pdf\".split(\"|\")) < 0) ? \"<a href=\\\"mailto:\" + $1 + \"\\\">\"+$1+\"</a>\" : $1;\n                    });\n                }\n\n                return text;\n            }\n\n            return text;\n        };\n                \n        markedRenderer.link = function (href, title, text) {\n\n            if (this.options.sanitize) {\n                try {\n                    var prot = decodeURIComponent(unescape(href)).replace(/[^\\w:]/g,\"\").toLowerCase();\n                } catch(e) {\n                    return \"\";\n                }\n\n                if (prot.indexOf(\"javascript:\") === 0) {\n                    return \"\";\n                }\n            }\n\n            var out = \"<a href=\\\"\" + href + \"\\\"\";\n            \n            if (atLinkReg.test(title) || atLinkReg.test(text))\n            {\n                if (title)\n                {\n                    out += \" title=\\\"\" + title.replace(/@/g, \"&#64;\");\n                }\n                \n                return out + \"\\\">\" + text.replace(/@/g, \"&#64;\") + \"</a>\";\n            }\n\n            if (title) {\n                out += \" title=\\\"\" + title + \"\\\"\";\n            }\n\n            out += \">\" + text + \"</a>\";\n\n            return out;\n        };\n        \n        markedRenderer.heading = function(text, level, raw) {\n                    \n            var linkText       = text;\n            var hasLinkReg     = /\\s*\\<a\\s*href\\=\\\"(.*)\\\"\\s*([^\\>]*)\\>(.*)\\<\\/a\\>\\s*/;\n            var getLinkTextReg = /\\s*\\<a\\s*([^\\>]+)\\>([^\\>]*)\\<\\/a\\>\\s*/g;\n\n            if (hasLinkReg.test(text)) \n            {\n                var tempText = [];\n                text         = text.split(/\\<a\\s*([^\\>]+)\\>([^\\>]*)\\<\\/a\\>/);\n\n                for (var i = 0, len = text.length; i < len; i++)\n                {\n                    tempText.push(text[i].replace(/\\s*href\\=\\\"(.*)\\\"\\s*/g, \"\"));\n                }\n\n                text = tempText.join(\" \");\n            }\n            \n            text = trim(text);\n            \n            var escapedText    = text.toLowerCase().replace(/[^\\w]+/g, \"-\");\n            var toc = {\n                text  : text,\n                level : level,\n                slug  : escapedText\n            };\n            \n            var isChinese = /^[\\u4e00-\\u9fa5]+$/.test(text);\n            var id        = (isChinese) ? escape(text).replace(/\\%/g, \"\") : text.toLowerCase().replace(/[^\\w]+/g, \"-\");\n\n            markdownToC.push(toc);\n            \n            var headingHTML = \"<h\" + level + \" id=\\\"h\"+ level + \"-\" + this.options.headerPrefix + id +\"\\\">\";\n            \n            headingHTML    += \"<a name=\\\"\" + text + \"\\\" class=\\\"reference-link\\\"></a>\";\n            headingHTML    += \"<span class=\\\"header-link octicon octicon-link\\\"></span>\";\n            headingHTML    += (hasLinkReg) ? this.atLink(this.emoji(linkText)) : this.atLink(this.emoji(text));\n            headingHTML    += \"</h\" + level + \">\";\n\n            return headingHTML;\n        };\n        \n        markedRenderer.pageBreak = function(text) {\n            if (pageBreakReg.test(text) && settings.pageBreak)\n            {\n                text = \"<hr style=\\\"page-break-after:always;\\\" class=\\\"page-break editormd-page-break\\\" />\";\n            }\n            \n            return text;\n        };\n\n        markedRenderer.paragraph = function(text) {\n            var isTeXInline     = /\\$\\$(.*)\\$\\$/g.test(text);\n            var isTeXLine       = /^\\$\\$(.*)\\$\\$$/.test(text);\n            var isTeXAddClass   = (isTeXLine)     ? \" class=\\\"\" + editormd.classNames.tex + \"\\\"\" : \"\";\n            var isToC           = (settings.tocm) ? /^(\\[TOC\\]|\\[TOCM\\])$/.test(text) : /^\\[TOC\\]$/.test(text);\n            var isToCMenu       = /^\\[TOCM\\]$/.test(text);\n            \n            if (!isTeXLine && isTeXInline) \n            {\n                text = text.replace(/(\\$\\$([^\\$]*)\\$\\$)+/g, function($1, $2) {\n                    return \"<span class=\\\"\" + editormd.classNames.tex + \"\\\">\" + $2.replace(/\\$/g, \"\") + \"</span>\";\n                });\n            } \n            else \n            {\n                text = (isTeXLine) ? text.replace(/\\$/g, \"\") : text;\n            }\n            \n            var tocHTML = \"<div class=\\\"markdown-toc editormd-markdown-toc\\\">\" + text + \"</div>\";\n            \n            return (isToC) ? ( (isToCMenu) ? \"<div class=\\\"editormd-toc-menu\\\">\" + tocHTML + \"</div><br/>\" : tocHTML )\n                           : ( (pageBreakReg.test(text)) ? this.pageBreak(text) : \"<p\" + isTeXAddClass + \">\" + this.atLink(this.emoji(text)) + \"</p>\\n\" );\n        };\n\n        markedRenderer.code = function (code, lang, escaped) { \n\n            if (lang === \"seq\" || lang === \"sequence\")\n            {\n                return \"<div class=\\\"sequence-diagram\\\">\" + code + \"</div>\";\n            } \n            else if ( lang === \"flow\")\n            {\n                return \"<div class=\\\"flowchart\\\">\" + code + \"</div>\";\n            } \n            else if ( lang === \"math\" || lang === \"latex\" || lang === \"katex\")\n            {\n                return \"<p class=\\\"\" + editormd.classNames.tex + \"\\\">\" + code + \"</p>\";\n            } \n            else \n            {\n\n                return marked.Renderer.prototype.code.apply(this, arguments);\n            }\n        };\n\n        markedRenderer.tablecell = function(content, flags) {\n            var type = (flags.header) ? \"th\" : \"td\";\n            var tag  = (flags.align)  ? \"<\" + type +\" style=\\\"text-align:\" + flags.align + \"\\\">\" : \"<\" + type + \">\";\n            \n            return tag + this.atLink(this.emoji(content)) + \"</\" + type + \">\\n\";\n        };\n\n        markedRenderer.listitem = function(text) {\n            if (settings.taskList && /^\\s*\\[[x\\s]\\]\\s*/.test(text)) \n            {\n                text = text.replace(/^\\s*\\[\\s\\]\\s*/, \"<input type=\\\"checkbox\\\" class=\\\"task-list-item-checkbox\\\" /> \")\n                           .replace(/^\\s*\\[x\\]\\s*/,  \"<input type=\\\"checkbox\\\" class=\\\"task-list-item-checkbox\\\" checked disabled /> \");\n\n                return \"<li style=\\\"list-style: none;\\\">\" + this.atLink(this.emoji(text)) + \"</li>\";\n            }\n            else \n            {\n                return \"<li>\" + this.atLink(this.emoji(text)) + \"</li>\";\n            }\n        };\n        \n        return markedRenderer;\n    };\n    \n    /**\n     *\n     * 生成TOC(Table of Contents)\n     * Creating ToC (Table of Contents)\n     * \n     * @param   {Array}    toc             从marked获取的TOC数组列表\n     * @param   {Element}  container       插入TOC的容器元素\n     * @param   {Integer}  startLevel      Hx 起始层级\n     * @returns {Object}   tocContainer    返回ToC列表容器层的jQuery对象元素\n     */\n    \n    editormd.markdownToCRenderer = function(toc, container, tocDropdown, startLevel) {\n        \n        var html        = \"\";    \n        var lastLevel   = 0;\n        var classPrefix = this.classPrefix;\n        \n        startLevel      = startLevel  || 1;\n        \n        for (var i = 0, len = toc.length; i < len; i++) \n        {\n            var text  = toc[i].text;\n            var level = toc[i].level;\n            \n            if (level < startLevel) {\n                continue;\n            }\n            \n            if (level > lastLevel) \n            {\n                html += \"\";\n            }\n            else if (level < lastLevel) \n            {\n                html += (new Array(lastLevel - level + 2)).join(\"</ul></li>\");\n            } \n            else \n            {\n                html += \"</ul></li>\";\n            }\n\n            html += \"<li><a class=\\\"toc-level-\" + level + \"\\\" href=\\\"#\" + text + \"\\\" level=\\\"\" + level + \"\\\">\" + text + \"</a><ul>\";\n            lastLevel = level;\n        }\n        \n        var tocContainer = container.find(\".markdown-toc\");\n        \n        if ((tocContainer.length < 1 && container.attr(\"previewContainer\") === \"false\"))\n        {\n            var tocHTML = \"<div class=\\\"markdown-toc \" + classPrefix + \"markdown-toc\\\"></div>\";\n            \n            tocHTML = (tocDropdown) ? \"<div class=\\\"\" + classPrefix + \"toc-menu\\\">\" + tocHTML + \"</div>\" : tocHTML;\n            \n            container.html(tocHTML);\n            \n            tocContainer = container.find(\".markdown-toc\");\n        }\n        \n        if (tocDropdown)\n        {\n            tocContainer.wrap(\"<div class=\\\"\" + classPrefix + \"toc-menu\\\"></div><br/>\");\n        }\n        \n        tocContainer.html(\"<ul class=\\\"markdown-toc-list\\\"></ul>\").children(\".markdown-toc-list\").html(html.replace(/\\r?\\n?\\<ul\\>\\<\\/ul\\>/g, \"\"));\n        \n        return tocContainer;\n    };\n    \n    /**\n     *\n     * 生成TOC下拉菜单\n     * Creating ToC dropdown menu\n     * \n     * @param   {Object}   container       插入TOC的容器jQuery对象元素\n     * @param   {String}   tocTitle        ToC title\n     * @returns {Object}                   return toc-menu object\n     */\n    \n    editormd.tocDropdownMenu = function(container, tocTitle) {\n        \n        tocTitle      = tocTitle || \"Table of Contents\";\n        \n        var zindex    = 400;\n        var tocMenus  = container.find(\".\" + this.classPrefix + \"toc-menu\");\n\n        tocMenus.each(function() {\n            var $this  = $(this);\n            var toc    = $this.children(\".markdown-toc\");\n            var icon   = \"<i class=\\\"fa fa-angle-down\\\"></i>\";\n            var btn    = \"<a href=\\\"javascript:;\\\" class=\\\"toc-menu-btn\\\">\" + icon + tocTitle + \"</a>\";\n            var menu   = toc.children(\"ul\");            \n            var list   = menu.find(\"li\");\n            \n            toc.append(btn);\n            \n            list.first().before(\"<li><h1>\" + tocTitle + \" \" + icon + \"</h1></li>\");\n            \n            $this.mouseover(function(){\n                menu.show();\n\n                list.each(function(){\n                    var li = $(this);\n                    var ul = li.children(\"ul\");\n\n                    if (ul.html() === \"\")\n                    {\n                        ul.remove();\n                    }\n\n                    if (ul.length > 0 && ul.html() !== \"\")\n                    {\n                        var firstA = li.children(\"a\").first();\n\n                        if (firstA.children(\".fa\").length < 1)\n                        {\n                            firstA.append( $(icon).css({ float:\"right\", paddingTop:\"4px\" }) );\n                        }\n                    }\n\n                    li.mouseover(function(){\n                        ul.css(\"z-index\", zindex).show();\n                        zindex += 1;\n                    }).mouseleave(function(){\n                        ul.hide();\n                    });\n                });\n            }).mouseleave(function(){\n                menu.hide();\n            }); \n        });       \n        \n        return tocMenus;\n    };\n    \n    /**\n     * 简单地过滤指定的HTML标签\n     * Filter custom html tags\n     * \n     * @param   {String}   html          要过滤HTML\n     * @param   {String}   filters       要过滤的标签\n     * @returns {String}   html          返回过滤的HTML\n     */\n    \n    editormd.filterHTMLTags = function(html, filters) {\n        \n        if (typeof html !== \"string\") {\n            html = new String(html);\n        }\n            \n        if (typeof filters !== \"string\") {\n            return html;\n        }\n\n        var expression = filters.split(\"|\");\n        var filterTags = expression[0].split(\",\");\n        var attrs      = expression[1];\n\n        for (var i = 0, len = filterTags.length; i < len; i++)\n        {\n            var tag = filterTags[i];\n\n            html = html.replace(new RegExp(\"\\<\\s*\" + tag + \"\\s*([^\\>]*)\\>([^\\>]*)\\<\\s*\\/\" + tag + \"\\s*\\>\", \"igm\"), \"\");\n        }\n        \n        //return html;\n\n        if (typeof attrs !== \"undefined\")\n        {\n            var htmlTagRegex = /\\<(\\w+)\\s*([^\\>]*)\\>([^\\>]*)\\<\\/(\\w+)\\>/ig;\n\n            if (attrs === \"*\")\n            {\n                html = html.replace(htmlTagRegex, function($1, $2, $3, $4, $5) {\n                    return \"<\" + $2 + \">\" + $4 + \"</\" + $5 + \">\";\n                });         \n            }\n            else if (attrs === \"on*\")\n            {\n                html = html.replace(htmlTagRegex, function($1, $2, $3, $4, $5) {\n                    var el = $(\"<\" + $2 + \">\" + $4 + \"</\" + $5 + \">\");\n                    var _attrs = $($1)[0].attributes;\n                    var $attrs = {};\n                    \n                    $.each(_attrs, function(i, e) {\n                        if (e.nodeName !== '\"') $attrs[e.nodeName] = e.nodeValue;\n                    });\n                    \n                    $.each($attrs, function(i) {                        \n                        if (i.indexOf(\"on\") === 0) {\n                            delete $attrs[i];\n                        }\n                    });\n                    \n                    el.attr($attrs);\n                    \n                    var text = (typeof el[1] !== \"undefined\") ? $(el[1]).text() : \"\";\n\n                    return el[0].outerHTML + text;\n                });\n            }\n            else\n            {\n                html = html.replace(htmlTagRegex, function($1, $2, $3, $4) {\n                    var filterAttrs = attrs.split(\",\");\n                    var el = $($1);\n                    el.html($4);\n\n                    $.each(filterAttrs, function(i) {\n                        el.attr(filterAttrs[i], null);\n                    });\n\n                    return el[0].outerHTML;\n                });\n            }\n        }\n        \n        return html;\n    };\n    \n    /**\n     * 将Markdown文档解析为HTML用于前台显示\n     * Parse Markdown to HTML for Font-end preview.\n     * \n     * @param   {String}   id            用于显示HTML的对象ID\n     * @param   {Object}   [options={}]  配置选项，可选\n     * @returns {Object}   div           返回jQuery对象元素\n     */\n    \n    editormd.markdownToHTML = function(id, options) {\n        var defaults = {\n            gfm                  : true,\n            toc                  : true,\n            tocm                 : false,\n            tocStartLevel        : 1,\n            tocTitle             : \"目录\",\n            tocDropdown          : false,\n            tocContainer         : \"\",\n            markdown             : \"\",\n            markdownSourceCode   : false,\n            htmlDecode           : false,\n            autoLoadKaTeX        : true,\n            pageBreak            : true,\n            atLink               : true,    // for @link\n            emailLink            : true,    // for mail address auto link\n            tex                  : false,\n            taskList             : false,   // Github Flavored Markdown task lists\n            emoji                : false,\n            flowChart            : false,\n            sequenceDiagram      : false,\n            previewCodeHighlight : true\n        };\n        \n        editormd.$marked  = marked;\n\n        var div           = $(\"#\" + id);\n        var settings      = div.settings = $.extend(true, defaults, options || {});\n        var saveTo        = div.find(\"textarea\");\n        \n        if (saveTo.length < 1)\n        {\n            div.append(\"<textarea></textarea>\");\n            saveTo        = div.find(\"textarea\");\n        }        \n        \n        var markdownDoc   = (settings.markdown === \"\") ? saveTo.val() : settings.markdown; \n        var markdownToC   = [];\n\n        var rendererOptions = {  \n            toc                  : settings.toc,\n            tocm                 : settings.tocm,\n            tocStartLevel        : settings.tocStartLevel,\n            taskList             : settings.taskList,\n            emoji                : settings.emoji,\n            tex                  : settings.tex,\n            pageBreak            : settings.pageBreak,\n            atLink               : settings.atLink,           // for @link\n            emailLink            : settings.emailLink,        // for mail address auto link\n            flowChart            : settings.flowChart,\n            sequenceDiagram      : settings.sequenceDiagram,\n            previewCodeHighlight : settings.previewCodeHighlight,\n        };\n\n        var markedOptions = {\n            renderer    : editormd.markedRenderer(markdownToC, rendererOptions),\n            gfm         : settings.gfm,\n            tables      : true,\n            breaks      : true,\n            pedantic    : false,\n            sanitize    : (settings.htmlDecode) ? false : true, // 是否忽略HTML标签，即是否开启HTML标签解析，为了安全性，默认不开启\n            smartLists  : true,\n            smartypants : true\n        };\n        \n\t\tmarkdownDoc = new String(markdownDoc);\n        \n        var markdownParsed = marked(markdownDoc, markedOptions);\n        \n        markdownParsed = editormd.filterHTMLTags(markdownParsed, settings.htmlDecode);\n        \n        if (settings.markdownSourceCode) {\n            saveTo.text(markdownDoc);\n        } else {\n            saveTo.remove();\n        }\n        \n        div.addClass(\"markdown-body \" + this.classPrefix + \"html-preview\").append(markdownParsed);\n        \n        var tocContainer = (settings.tocContainer !== \"\") ? $(settings.tocContainer) : div;\n        \n        if (settings.tocContainer !== \"\")\n        {\n            tocContainer.attr(\"previewContainer\", false);\n        }\n         \n        if (settings.toc) \n        {\n            div.tocContainer = this.markdownToCRenderer(markdownToC, tocContainer, settings.tocDropdown, settings.tocStartLevel);\n            \n            if (settings.tocDropdown || div.find(\".\" + this.classPrefix + \"toc-menu\").length > 0)\n            {\n                this.tocDropdownMenu(div, settings.tocTitle);\n            }\n            \n            if (settings.tocContainer !== \"\")\n            {\n                div.find(\".editormd-toc-menu, .editormd-markdown-toc\").remove();\n            }\n        }\n            \n        if (settings.previewCodeHighlight) \n        {\n            div.find(\"pre\").addClass(\"prettyprint linenums\");\n            prettyPrint();\n        }\n        \n        if (!editormd.isIE8) \n        {\n            if (settings.flowChart) {\n                div.find(\".flowchart\").flowChart(); \n            }\n\n            if (settings.sequenceDiagram) {\n                div.find(\".sequence-diagram\").sequenceDiagram({theme: \"simple\"});\n            }\n        }\n\n        if (settings.tex)\n        {\n            var katexHandle = function() {\n                div.find(\".\" + editormd.classNames.tex).each(function(){\n                    var tex  = $(this);                    \n                    katex.render(tex.html().replace(/&lt;/g, \"<\").replace(/&gt;/g, \">\"), tex[0]);                    \n                    tex.find(\".katex\").css(\"font-size\", \"1.6em\");\n                });\n            };\n            \n            if (settings.autoLoadKaTeX && !editormd.$katex && !editormd.kaTeXLoaded)\n            {\n                this.loadKaTeX(function() {\n                    editormd.$katex      = katex;\n                    editormd.kaTeXLoaded = true;\n                    katexHandle();\n                });\n            }\n            else\n            {\n                katexHandle();\n            }\n        }\n        \n        div.getMarkdown = function() {            \n            return saveTo.val();\n        };\n        \n        return div;\n    };\n    \n    // Editor.md themes, change toolbar themes etc.\n    // added @1.5.0\n    editormd.themes        = [\"default\", \"dark\"];\n    \n    // Preview area themes\n    // added @1.5.0\n    editormd.previewThemes = [\"default\", \"dark\"];\n    \n    // CodeMirror / editor area themes\n    // @1.5.0 rename -> editorThemes, old version -> themes\n    editormd.editorThemes = [\n        \"default\", \"3024-day\", \"3024-night\",\n        \"ambiance\", \"ambiance-mobile\",\n        \"base16-dark\", \"base16-light\", \"blackboard\",\n        \"cobalt\",\n        \"eclipse\", \"elegant\", \"erlang-dark\",\n        \"lesser-dark\",\n        \"mbo\", \"mdn-like\", \"midnight\", \"monokai\",\n        \"neat\", \"neo\", \"night\",\n        \"paraiso-dark\", \"paraiso-light\", \"pastel-on-dark\",\n        \"rubyblue\",\n        \"solarized\",\n        \"the-matrix\", \"tomorrow-night-eighties\", \"twilight\",\n        \"vibrant-ink\",\n        \"xq-dark\", \"xq-light\"\n    ];\n\n    editormd.loadPlugins = {};\n    \n    editormd.loadFiles = {\n        js     : [],\n        css    : [],\n        plugin : []\n    };\n    \n    /**\n     * 动态加载Editor.md插件，但不立即执行\n     * Load editor.md plugins\n     * \n     * @param {String}   fileName              插件文件路径\n     * @param {Function} [callback=function()] 加载成功后执行的回调函数\n     * @param {String}   [into=\"head\"]         嵌入页面的位置\n     */\n    \n    editormd.loadPlugin = function(fileName, callback, into) {\n        callback   = callback || function() {};\n        \n        this.loadScript(fileName, function() {\n            editormd.loadFiles.plugin.push(fileName);\n            callback();\n        }, into);\n    };\n    \n    /**\n     * 动态加载CSS文件的方法\n     * Load css file method\n     * \n     * @param {String}   fileName              CSS文件名\n     * @param {Function} [callback=function()] 加载成功后执行的回调函数\n     * @param {String}   [into=\"head\"]         嵌入页面的位置\n     */\n    \n    editormd.loadCSS   = function(fileName, callback, into) {\n        into       = into     || \"head\";        \n        callback   = callback || function() {};\n        \n        var css    = document.createElement(\"link\");\n        css.type   = \"text/css\";\n        css.rel    = \"stylesheet\";\n        css.onload = css.onreadystatechange = function() {\n            editormd.loadFiles.css.push(fileName);\n            callback();\n        };\n\n        css.href   = fileName + \".css\";\n\n        if(into === \"head\") {\n            document.getElementsByTagName(\"head\")[0].appendChild(css);\n        } else {\n            document.body.appendChild(css);\n        }\n    };\n    \n    editormd.isIE    = (navigator.appName == \"Microsoft Internet Explorer\");\n    editormd.isIE8   = (editormd.isIE && navigator.appVersion.match(/8./i) == \"8.\");\n\n    /**\n     * 动态加载JS文件的方法\n     * Load javascript file method\n     * \n     * @param {String}   fileName              JS文件名\n     * @param {Function} [callback=function()] 加载成功后执行的回调函数\n     * @param {String}   [into=\"head\"]         嵌入页面的位置\n     */\n\n    editormd.loadScript = function(fileName, callback, into) {\n        \n        into          = into     || \"head\";\n        callback      = callback || function() {};\n        \n        var script    = null; \n        script        = document.createElement(\"script\");\n        script.id     = fileName.replace(/[\\./]+/g, \"-\");\n        script.type   = \"text/javascript\";        \n        script.src    = fileName + \".js\";\n        \n        if (editormd.isIE8) \n        {            \n            script.onreadystatechange = function() {\n                if(script.readyState) \n                {\n                    if (script.readyState === \"loaded\" || script.readyState === \"complete\") \n                    {\n                        script.onreadystatechange = null; \n                        editormd.loadFiles.js.push(fileName);\n                        callback();\n                    }\n                } \n            };\n        }\n        else\n        {\n            script.onload = function() {\n                editormd.loadFiles.js.push(fileName);\n                callback();\n            };\n        }\n\n        if (into === \"head\") {\n            document.getElementsByTagName(\"head\")[0].appendChild(script);\n        } else {\n            document.body.appendChild(script);\n        }\n    };\n    \n    // 使用国外的CDN，加载速度有时会很慢，或者自定义URL\n    // You can custom KaTeX load url.\n    editormd.katexURL  = {\n        css : \"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min\",\n        js  : \"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min\"\n    };\n    \n    editormd.kaTeXLoaded = false;\n    \n    /**\n     * 加载KaTeX文件\n     * load KaTeX files\n     * \n     * @param {Function} [callback=function()]  加载成功后执行的回调函数\n     */\n    \n    editormd.loadKaTeX = function (callback) {\n        editormd.loadCSS(editormd.katexURL.css, function(){\n            editormd.loadScript(editormd.katexURL.js, callback || function(){});\n        });\n    };\n        \n    /**\n     * 锁屏\n     * lock screen\n     * \n     * @param   {Boolean}   lock   Boolean 布尔值，是否锁屏\n     * @returns {void}\n     */\n    \n    editormd.lockScreen = function(lock) {\n        $(\"html,body\").css(\"overflow\", (lock) ? \"hidden\" : \"\");\n    };\n        \n    /**\n     * 动态创建对话框\n     * Creating custom dialogs\n     * \n     * @param   {Object} options 配置项键值对 Key/Value\n     * @returns {dialog} 返回创建的dialog的jQuery实例对象\n     */\n\n    editormd.createDialog = function(options) {\n        var defaults = {\n            name : \"\",\n            width : 420,\n            height: 240,\n            title : \"\",\n            drag  : true,\n            closed : true,\n            content : \"\",\n            mask : true,\n            maskStyle : {\n                backgroundColor : \"#fff\",\n                opacity : 0.1\n            },\n            lockScreen : true,\n            footer : true,\n            buttons : false\n        };\n\n        options          = $.extend(true, defaults, options);\n        \n        var $this        = this;\n        var editor       = this.editor;\n        var classPrefix  = editormd.classPrefix;\n        var guid         = (new Date()).getTime();\n        var dialogName   = ( (options.name === \"\") ? classPrefix + \"dialog-\" + guid : options.name);\n        var mouseOrTouch = editormd.mouseOrTouch;\n\n        var html         = \"<div class=\\\"\" + classPrefix + \"dialog \" + dialogName + \"\\\">\";\n\n        if (options.title !== \"\")\n        {\n            html += \"<div class=\\\"\" + classPrefix + \"dialog-header\\\"\" + ( (options.drag) ? \" style=\\\"cursor: move;\\\"\" : \"\" ) + \">\";\n            html += \"<strong class=\\\"\" + classPrefix + \"dialog-title\\\">\" + options.title + \"</strong>\";\n            html += \"</div>\";\n        }\n\n        if (options.closed)\n        {\n            html += \"<a href=\\\"javascript:;\\\" class=\\\"fa fa-close \" + classPrefix + \"dialog-close\\\"></a>\";\n        }\n\n        html += \"<div class=\\\"\" + classPrefix + \"dialog-container\\\">\" + options.content;                    \n\n        if (options.footer || typeof options.footer === \"string\") \n        {\n            html += \"<div class=\\\"\" + classPrefix + \"dialog-footer\\\">\" + ( (typeof options.footer === \"boolean\") ? \"\" : options.footer) + \"</div>\";\n        }\n\n        html += \"</div>\";\n\n        html += \"<div class=\\\"\" + classPrefix + \"dialog-mask \" + classPrefix + \"dialog-mask-bg\\\"></div>\";\n        html += \"<div class=\\\"\" + classPrefix + \"dialog-mask \" + classPrefix + \"dialog-mask-con\\\"></div>\";\n        html += \"</div>\";\n\n        editor.append(html);\n\n        var dialog = editor.find(\".\" + dialogName);\n\n        dialog.lockScreen = function(lock) {\n            if (options.lockScreen)\n            {                \n                $(\"html,body\").css(\"overflow\", (lock) ? \"hidden\" : \"\");\n                $this.resize();\n            }\n\n            return dialog;\n        };\n\n        dialog.showMask = function() {\n            if (options.mask)\n            {\n                editor.find(\".\" + classPrefix + \"mask\").css(options.maskStyle).css(\"z-index\", editormd.dialogZindex - 1).show();\n            }\n            return dialog;\n        };\n\n        dialog.hideMask = function() {\n            if (options.mask)\n            {\n                editor.find(\".\" + classPrefix + \"mask\").hide();\n            }\n\n            return dialog;\n        };\n\n        dialog.loading = function(show) {                        \n            var loading = dialog.find(\".\" + classPrefix + \"dialog-mask\");\n            loading[(show) ? \"show\" : \"hide\"]();\n\n            return dialog;\n        };\n\n        dialog.lockScreen(true).showMask();\n\n        dialog.show().css({\n            zIndex : editormd.dialogZindex,\n            border : (editormd.isIE8) ? \"1px solid #ddd\" : \"\",\n            width  : (typeof options.width  === \"number\") ? options.width + \"px\"  : options.width,\n            height : (typeof options.height === \"number\") ? options.height + \"px\" : options.height\n        });\n\n        var dialogPosition = function(){\n            dialog.css({\n                top    : ($(window).height() - dialog.height()) / 2 + \"px\",\n                left   : ($(window).width() - dialog.width()) / 2 + \"px\"\n            });\n        };\n\n        dialogPosition();\n\n        $(window).resize(dialogPosition);\n\n        dialog.children(\".\" + classPrefix + \"dialog-close\").bind(mouseOrTouch(\"click\", \"touchend\"), function() {\n            dialog.hide().lockScreen(false).hideMask();\n        });\n\n        if (typeof options.buttons === \"object\")\n        {\n            var footer = dialog.footer = dialog.find(\".\" + classPrefix + \"dialog-footer\");\n\n            for (var key in options.buttons)\n            {\n                var btn = options.buttons[key];\n                var btnClassName = classPrefix + key + \"-btn\";\n\n                footer.append(\"<button class=\\\"\" + classPrefix + \"btn \" + btnClassName + \"\\\">\" + btn[0] + \"</button>\");\n                btn[1] = $.proxy(btn[1], dialog);\n                footer.children(\".\" + btnClassName).bind(mouseOrTouch(\"click\", \"touchend\"), btn[1]);\n            }\n        }\n\n        if (options.title !== \"\" && options.drag)\n        {                        \n            var posX, posY;\n            var dialogHeader = dialog.children(\".\" + classPrefix + \"dialog-header\");\n\n            if (!options.mask) {\n                dialogHeader.bind(mouseOrTouch(\"click\", \"touchend\"), function(){\n                    editormd.dialogZindex += 2;\n                    dialog.css(\"z-index\", editormd.dialogZindex);\n                });\n            }\n\n            dialogHeader.mousedown(function(e) {\n                e = e || window.event;  //IE\n                posX = e.clientX - parseInt(dialog[0].style.left);\n                posY = e.clientY - parseInt(dialog[0].style.top);\n\n                document.onmousemove = moveAction;                   \n            });\n\n            var userCanSelect = function (obj) {\n                obj.removeClass(classPrefix + \"user-unselect\").off(\"selectstart\");\n            };\n\n            var userUnselect = function (obj) {\n                obj.addClass(classPrefix + \"user-unselect\").on(\"selectstart\", function(event) { // selectstart for IE                        \n                    return false;\n                });\n            };\n\n            var moveAction = function (e) {\n                e = e || window.event;  //IE\n\n                var left, top, nowLeft = parseInt(dialog[0].style.left), nowTop = parseInt(dialog[0].style.top);\n\n                if( nowLeft >= 0 ) {\n                    if( nowLeft + dialog.width() <= $(window).width()) {\n                        left = e.clientX - posX;\n                    } else {\t\n                        left = $(window).width() - dialog.width();\n                        document.onmousemove = null;\n                    }\n                } else {\n                    left = 0;\n                    document.onmousemove = null;\n                }\n\n                if( nowTop >= 0 ) {\n                    top = e.clientY - posY;\n                } else {\n                    top = 0;\n                    document.onmousemove = null;\n                }\n\n\n                document.onselectstart = function() {\n                    return false;\n                };\n\n                userUnselect($(\"body\"));\n                userUnselect(dialog);\n                dialog[0].style.left = left + \"px\";\n                dialog[0].style.top  = top + \"px\";\n            };\n\n            document.onmouseup = function() {                            \n                userCanSelect($(\"body\"));\n                userCanSelect(dialog);\n\n                document.onselectstart = null;         \n                document.onmousemove = null;\n            };\n\n            dialogHeader.touchDraggable = function() {\n                var offset = null;\n                var start  = function(e) {\n                    var orig = e.originalEvent; \n                    var pos  = $(this).parent().position();\n\n                    offset = {\n                        x : orig.changedTouches[0].pageX - pos.left,\n                        y : orig.changedTouches[0].pageY - pos.top\n                    };\n                };\n\n                var move = function(e) {\n                    e.preventDefault();\n                    var orig = e.originalEvent;\n\n                    $(this).parent().css({\n                        top  : orig.changedTouches[0].pageY - offset.y,\n                        left : orig.changedTouches[0].pageX - offset.x\n                    });\n                };\n\n                this.bind(\"touchstart\", start).bind(\"touchmove\", move);\n            };\n\n            dialogHeader.touchDraggable();\n        }\n\n        editormd.dialogZindex += 2;\n\n        return dialog;\n    };\n    \n    /**\n     * 鼠标和触摸事件的判断/选择方法\n     * MouseEvent or TouchEvent type switch\n     * \n     * @param   {String} [mouseEventType=\"click\"]    供选择的鼠标事件\n     * @param   {String} [touchEventType=\"touchend\"] 供选择的触摸事件\n     * @returns {String} EventType                   返回事件类型名称\n     */\n    \n    editormd.mouseOrTouch = function(mouseEventType, touchEventType) {\n        mouseEventType = mouseEventType || \"click\";\n        touchEventType = touchEventType || \"touchend\";\n        \n        var eventType  = mouseEventType;\n\n        try {\n            document.createEvent(\"TouchEvent\");\n            eventType = touchEventType;\n        } catch(e) {}\n\n        return eventType;\n    };\n    \n    /**\n     * 日期时间的格式化方法\n     * Datetime format method\n     * \n     * @param   {String}   [format=\"\"]  日期时间的格式，类似PHP的格式\n     * @returns {String}   datefmt      返回格式化后的日期时间字符串\n     */\n    \n    editormd.dateFormat = function(format) {                \n        format      = format || \"\";\n\n        var addZero = function(d) {\n            return (d < 10) ? \"0\" + d : d;\n        };\n\n        var date    = new Date(); \n        var year    = date.getFullYear();\n        var year2   = year.toString().slice(2, 4);\n        var month   = addZero(date.getMonth() + 1);\n        var day     = addZero(date.getDate());\n        var weekDay = date.getDay();\n        var hour    = addZero(date.getHours());\n        var min     = addZero(date.getMinutes());\n        var second  = addZero(date.getSeconds());\n        var ms      = addZero(date.getMilliseconds()); \n        var datefmt = \"\";\n\n        var ymd     = year2 + \"-\" + month + \"-\" + day;\n        var fymd    = year  + \"-\" + month + \"-\" + day;\n        var hms     = hour  + \":\" + min   + \":\" + second;\n\n        switch (format) \n        {\n            case \"UNIX Time\" :\n                    datefmt = date.getTime();\n                break;\n\n            case \"UTC\" :\n                    datefmt = date.toUTCString();\n                break;\t\n\n            case \"yy\" :\n                    datefmt = year2;\n                break;\t\n\n            case \"year\" :\n            case \"yyyy\" :\n                    datefmt = year;\n                break;\n\n            case \"month\" :\n            case \"mm\" :\n                    datefmt = month;\n                break;                        \n\n            case \"cn-week-day\" :\n            case \"cn-wd\" :\n                    var cnWeekDays = [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"];\n                    datefmt = \"星期\" + cnWeekDays[weekDay];\n                break;\n\n            case \"week-day\" :\n            case \"wd\" :\n                    var weekDays = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n                    datefmt = weekDays[weekDay];\n                break;\n\n            case \"day\" :\n            case \"dd\" :\n                    datefmt = day;\n                break;\n\n            case \"hour\" :\n            case \"hh\" :\n                    datefmt = hour;\n                break;\n\n            case \"min\" :\n            case \"ii\" :\n                    datefmt = min;\n                break;\n\n            case \"second\" :\n            case \"ss\" :\n                    datefmt = second;\n                break;\n\n            case \"ms\" :\n                    datefmt = ms;\n                break;\n\n            case \"yy-mm-dd\" :\n                    datefmt = ymd;\n                break;\n\n            case \"yyyy-mm-dd\" :\n                    datefmt = fymd;\n                break;\n\n            case \"yyyy-mm-dd h:i:s ms\" :\n            case \"full + ms\" : \n                    datefmt = fymd + \" \" + hms + \" \" + ms;\n                break;\n\n            case \"full\" :\n            case \"yyyy-mm-dd h:i:s\" :\n                default:\n                    datefmt = fymd + \" \" + hms;\n                break;\n        }\n\n        return datefmt;\n    };\n\n    return editormd;\n\n}));\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/languages/en.js",
    "content": "(function(){\n    var factory = function (exports) {\n        var lang = {\n            name : \"en\",\n            description : \"Open source online Markdown editor.\",\n            tocTitle    : \"Table of Contents\",\n            toolbar : {\n                undo             : \"Undo(Ctrl+Z)\",\n                redo             : \"Redo(Ctrl+Y)\",\n                bold             : \"Bold\",\n                del              : \"Strikethrough\",\n                italic           : \"Italic\",\n                quote            : \"Block quote\",\n                ucwords          : \"Words first letter convert to uppercase\",\n                uppercase        : \"Selection text convert to uppercase\",\n                lowercase        : \"Selection text convert to lowercase\",\n                h1               : \"Heading 1\",\n                h2               : \"Heading 2\",\n                h3               : \"Heading 3\",\n                h4               : \"Heading 4\",\n                h5               : \"Heading 5\",\n                h6               : \"Heading 6\",\n                \"list-ul\"        : \"Unordered list\",\n                \"list-ol\"        : \"Ordered list\",\n                hr               : \"Horizontal rule\",\n                link             : \"Link\",\n                \"reference-link\" : \"Reference link\",\n                image            : \"Image\",\n                code             : \"Code inline\",\n                \"preformatted-text\" : \"Preformatted text / Code block (Tab indent)\",\n                \"code-block\"     : \"Code block (Multi-languages)\",\n                table            : \"Tables\",\n                datetime         : \"Datetime\",\n                emoji            : \"Emoji\",\n                \"html-entities\"  : \"HTML Entities\",\n                pagebreak        : \"Page break\",\n                watch            : \"Unwatch\",\n                unwatch          : \"Watch\",\n                preview          : \"HTML Preview (Press Shift + ESC exit)\",\n                fullscreen       : \"Fullscreen (Press ESC exit)\",\n                clear            : \"Clear\",\n                search           : \"Search\",\n                help             : \"Help\",\n                info             : \"About \" + exports.title\n            },\n            buttons : {\n                enter  : \"Enter\",\n                cancel : \"Cancel\",\n                close  : \"Close\"\n            },\n            dialog : {\n                link : {\n                    title    : \"Link\",\n                    url      : \"Address\",\n                    urlTitle : \"Title\",\n                    urlEmpty : \"Error: Please fill in the link address.\"\n                },\n                referenceLink : {\n                    title    : \"Reference link\",\n                    name     : \"Name\",\n                    url      : \"Address\",\n                    urlId    : \"ID\",\n                    urlTitle : \"Title\",\n                    nameEmpty: \"Error: Reference name can't be empty.\",\n                    idEmpty  : \"Error: Please fill in reference link id.\",\n                    urlEmpty : \"Error: Please fill in reference link url address.\"\n                },\n                image : {\n                    title    : \"Image\",\n                    url      : \"Address\",\n                    link     : \"Link\",\n                    alt      : \"Title\",\n                    uploadButton     : \"Upload\",\n                    imageURLEmpty    : \"Error: picture url address can't be empty.\",\n                    uploadFileEmpty  : \"Error: upload pictures cannot be empty!\",\n                    formatNotAllowed : \"Error: only allows to upload pictures file, upload allowed image file format:\"\n                },\n                preformattedText : {\n                    title             : \"Preformatted text / Codes\", \n                    emptyAlert        : \"Error: Please fill in the Preformatted text or content of the codes.\"\n                },\n                codeBlock : {\n                    title             : \"Code block\",         \n                    selectLabel       : \"Languages: \",\n                    selectDefaultText : \"select a code language...\",\n                    otherLanguage     : \"Other languages\",\n                    unselectedLanguageAlert : \"Error: Please select the code language.\",\n                    codeEmptyAlert    : \"Error: Please fill in the code content.\"\n                },\n                htmlEntities : {\n                    title : \"HTML Entities\"\n                },\n                help : {\n                    title : \"Help\"\n                }\n            }\n        };\n        \n        exports.defaults.lang = lang;\n    };\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t} \n\telse\n\t{\n        factory(window.editormd);\n\t}\n    \n})();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/languages/zh-tw.js",
    "content": "(function(){\n    var factory = function (exports) {\n        var lang = {\n            name : \"zh-tw\",\n            description : \"開源在線Markdown編輯器<br/>Open source online Markdown editor.\",\n            tocTitle    : \"目錄\",\n            toolbar     : {\n                undo             : \"撤銷（Ctrl+Z）\",\n                redo             : \"重做（Ctrl+Y）\",\n                bold             : \"粗體\",\n                del              : \"刪除線\",\n                italic           : \"斜體\",\n                quote            : \"引用\",\n                ucwords          : \"將所選的每個單詞首字母轉成大寫\",\n                uppercase        : \"將所選文本轉成大寫\",\n                lowercase        : \"將所選文本轉成小寫\",\n                h1               : \"標題1\",\n                h2               : \"標題2\",\n                h3               : \"標題3\",\n                h4               : \"標題4\",\n                h5               : \"標題5\",\n                h6               : \"標題6\",\n                \"list-ul\"        : \"無序列表\",\n                \"list-ol\"        : \"有序列表\",\n                hr               : \"横线\",\n                link             : \"链接\",\n                \"reference-link\" : \"引用鏈接\",\n                image            : \"圖片\",\n                code             : \"行內代碼\",\n                \"preformatted-text\" : \"預格式文本 / 代碼塊（縮進風格）\",\n                \"code-block\"     : \"代碼塊（多語言風格）\",\n                table            : \"添加表格\",\n                datetime         : \"日期時間\",\n                emoji            : \"Emoji 表情\",\n                \"html-entities\"  : \"HTML 實體字符\",\n                pagebreak        : \"插入分頁符\",\n                watch            : \"關閉實時預覽\",\n                unwatch          : \"開啟實時預覽\",\n                preview          : \"全窗口預覽HTML（按 Shift + ESC 退出）\",\n                fullscreen       : \"全屏（按 ESC 退出）\",\n                clear            : \"清空\",\n                search           : \"搜尋\",\n                help             : \"使用幫助\",\n                info             : \"關於\" + exports.title\n            },\n            buttons : {\n                enter  : \"確定\",\n                cancel : \"取消\",\n                close  : \"關閉\"\n            },\n            dialog : {\n                link   : {\n                    title    : \"添加鏈接\",\n                    url      : \"鏈接地址\",\n                    urlTitle : \"鏈接標題\",\n                    urlEmpty : \"錯誤：請填寫鏈接地址。\"\n                },\n                referenceLink : {\n                    title    : \"添加引用鏈接\",\n                    name     : \"引用名稱\",\n                    url      : \"鏈接地址\",\n                    urlId    : \"鏈接ID\",\n                    urlTitle : \"鏈接標題\",\n                    nameEmpty: \"錯誤：引用鏈接的名稱不能為空。\",\n                    idEmpty  : \"錯誤：請填寫引用鏈接的ID。\",\n                    urlEmpty : \"錯誤：請填寫引用鏈接的URL地址。\"\n                },\n                image  : {\n                    title    : \"添加圖片\",\n                    url      : \"圖片地址\",\n                    link     : \"圖片鏈接\",\n                    alt      : \"圖片描述\",\n                    uploadButton     : \"本地上傳\",\n                    imageURLEmpty    : \"錯誤：圖片地址不能為空。\",\n                    uploadFileEmpty  : \"錯誤：上傳的圖片不能為空！\",\n                    formatNotAllowed : \"錯誤：只允許上傳圖片文件，允許上傳的圖片文件格式有：\"\n                },\n                preformattedText : {\n                    title             : \"添加預格式文本或代碼塊\", \n                    emptyAlert        : \"錯誤：請填寫預格式文本或代碼的內容。\"\n                },\n                codeBlock : {\n                    title             : \"添加代碼塊\",                 \n                    selectLabel       : \"代碼語言：\",\n                    selectDefaultText : \"請語言代碼語言\",\n                    otherLanguage     : \"其他語言\",\n                    unselectedLanguageAlert : \"錯誤：請選擇代碼所屬的語言類型。\",\n                    codeEmptyAlert    : \"錯誤：請填寫代碼內容。\"\n                },\n                htmlEntities : {\n                    title : \"HTML實體字符\"\n                },\n                help : {\n                    title : \"使用幫助\"\n                }\n            }\n        };\n        \n        exports.defaults.lang = lang;\n    };\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t} \n\telse\n\t{\n        factory(window.editormd);\n\t}\n    \n})();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/AUTHORS",
    "content": "List of CodeMirror contributors. Updated before every release.\n\n4r2r\nAaron Brooks\nAbdelouahab\nAbe Fettig\nAdam Ahmed\nAdam King\nadanlobato\nAdán Lobato\nAdrian Aichner\naeroson\nAhmad Amireh\nAhmad M. Zawawi\nahoward\nAkeksandr Motsjonov\nAlberto González Palomo\nAlberto Pose\nAlbert Xing\nAlexander Pavlov\nAlexander Schepanovski\nAlexander Shvets\nAlexander Solovyov\nAlexandre Bique\nalexey-k\nAlex Piggott\nAliaksei Chapyzhenka\nAmsul\namuntean\nAmy\nAnanya Sen\nanaran\nAndersMad\nAnders Nawroth\nAnderson Mesquita\nAndrea G\nAndreas Reischuck\nAndre von Houck\nAndrey Fedorov\nAndrey Klyuchnikov\nAndrey Lushnikov\nAndy Joslin\nAndy Kimball\nAndy Li\nangelozerr\nangelo.zerr@gmail.com\nAnkit\nAnkit Ahuja\nAnsel Santosa\nAnthony Grimes\nAnton Kovalyov\nareos\nas3boyan\nAtomicPages LLC\nAtul Bhouraskar\nAurelian Oancea\nBastian Müller\nBem Jones-Bey\nbenbro\nBeni Cherniavsky-Paskin\nBenjamin DeCoste\nBen Keen\nBernhard Sirlinger\nBert Chang\nBilly Moon\nbinny\nB Krishna Chaitanya\nBlaine G\nblukat29\nboomyjee\nborawjm\nBrandon Frohs\nBrandon Wamboldt\nBrett Zamir\nBrian Grinstead\nBrian Sletten\nBruce Mitchener\nChandra Sekhar Pydi\nCharles Skelton\nCheah Chu Yeow\nChris Coyier\nChris Granger\nChris Houseknecht\nChris Morgan\nChristian Oyarzun\nChristian Petrov\nChristopher Brown\nciaranj\nCodeAnimal\nComFreek\nCurtis Gagliardi\ndagsta\ndaines\nDale Jung\nDan Bentley\nDan Heberden\nDaniel, Dao Quang Minh\nDaniele Di Sarli\nDaniel Faust\nDaniel Huigens\nDaniel KJ\nDaniel Neel\nDaniel Parnell\nDanny Yoo\ndarealshinji\nDarius Roberts\nDave Myers\nDavid Mignot\nDavid Pathakjee\nDavid Vázquez\ndeebugger\nDeep Thought\nDevon Carew\ndignifiedquire\nDimage Sapelkin\nDmitry Kiselyov\ndomagoj412\nDominator008\nDomizio Demichelis\nDoug Wikle\nDrew Bratcher\nDrew Hintz\nDrew Khoury\nDror BG\nduralog\neborden\nedsharp\nekhaled\nEnam Mijbah Noor\nEric Allam\neustas\nFabien O'Carroll\nFabio Zendhi Nagao\nFaiza Alsaied\nFauntleroy\nfbuchinger\nfeizhang365\nFelipe Lalanne\nFelix Raab\nFilip Noetzel\nflack\nForbesLindesay\nForbes Lindesay\nFord_Lawnmower\nForrest Oliphant\nFrank Wiegand\nGabriel Gheorghian\nGabriel Horner\nGabriel Nahmias\ngalambalazs\nGautam Mehta\ngekkoe\nGerard Braad\nGergely Hegykozi\nGiovanni Calò\nGlenn Jorde\nGlenn Ruehle\nGolevka\nGordon Smith\nGrant Skinner\ngreengiant\nGregory Koberger\nGuillaume Massé\nGuillaume Massé\nGustavo Rodrigues\nHakan Tunc\nHans Engel\nHardest\nHasan Karahan\nHerculano Campos\nHiroyuki Makino\nhitsthings\nHocdoc\nIan Beck\nIan Dickinson\nIan Wehrman\nIan Wetherbee\nIce White\nICHIKAWA, Yuji\nilvalle\nIngo Richter\nIrakli Gozalishvili\nIvan Kurnosov\nJacob Lee\nJakob Miland\nJakub Vrana\nJakub Vrána\nJames Campos\nJames Thorne\nJamie Hill\nJan Jongboom\njankeromnes\nJan Keromnes\nJan Odvarko\nJan T. Sott\nJared Forsyth\nJason\nJason Barnabe\nJason Grout\nJason Johnston\nJason San Jose\nJason Siefken\nJaydeep Solanki\nJean Boussier\njeffkenton\nJeff Pickhardt\njem (graphite)\nJeremy Parmenter\nJochen Berger\nJohan Ask\nJohn Connor\nJohn Lees-Miller\nJohn Snelson\nJohn Van Der Loo\nJonathan Malmaud\njongalloway\nJon Malmaud\nJon Sangster\nJoost-Wim Boekesteijn\nJoseph Pecoraro\nJoshua Newman\nJosh Watzman\njots\njsoojeon\nJuan Benavides Romero\nJucovschi Constantin\nJuho Vuori\nJustin Hileman\njwallers@gmail.com\nkaniga\nKen Newman\nKen Rockot\nKevin Sawicki\nKevin Ushey\nKlaus Silveira\nKoh Zi Han, Cliff\nkomakino\nKonstantin Lopuhin\nkoops\nks-ifware\nkubelsmieci\nKwanEsq\nLanfei\nLanny\nLaszlo Vidacs\nleaf corcoran\nLeonid Khachaturov\nLeon Sorokin\nLeonya Khachaturov\nLiam Newman\nLM\nlochel\nLorenzo Stoakes\nLuciano Longo\nLuke Stagner\nlynschinzer\nMaksim Lin\nMaksym Taran\nMalay Majithia\nManuel Rego Casasnovas\nMarat Dreizin\nMarcel Gerber\nMarco Aurélio\nMarco Munizaga\nMarcus Bointon\nMarek Rudnicki\nMarijn Haverbeke\nMário Gonçalves\nMario Pietsch\nMark Lentczner\nMarko Bonaci\nMartin Balek\nMartín Gaitán\nMartin Hasoň\nMason Malone\nMateusz Paprocki\nMathias Bynens\nmats cronqvist\nMatthew Beale\nMatthias Bussonnier\nMatthias BUSSONNIER\nMatt McDonald\nMatt Pass\nMatt Sacks\nmauricio\nMaximilian Hils\nMaxim Kraev\nMax Kirsch\nMax Xiantu\nmbarkhau\nMetatheos\nMicah Dubinko\nMichael Lehenbauer\nMichael Zhou\nMighty Guava\nMiguel Castillo\nmihailik\nMike\nMike Brevoort\nMike Diaz\nMike Ivanov\nMike Kadin\nMinRK\nMiraculix87\nmisfo\nmloginov\nMoritz Schwörer\nmps\nmtaran-google\nNarciso Jaramillo\nNathan Williams\nndr\nnerbert\nnextrevision\nngn\nnguillaumin\nNg Zhi An\nNicholas Bollweg\nNicholas Bollweg (Nick)\nNick Small\nNiels van Groningen\nnightwing\nNikita Beloglazov\nNikita Vasilyev\nNikolay Kostov\nnilp0inter\nNisarg Jhaveri\nnlwillia\nNorman Rzepka\npablo\nPage\nPanupong Pasupat\nparis\nPatil Arpith\nPatrick Stoica\nPatrick Strawderman\nPaul Garvin\nPaul Ivanov\nPavel Feldman\nPavel Strashkin\nPaweł Bartkiewicz\npeteguhl\nPeter Flynn\npeterkroon\nPeter Kroon\nprasanthj\nPrasanth J\nRadek Piórkowski\nRahul\nRandall Mason\nRandy Burden\nRandy Edmunds\nRasmus Erik Voel Jensen\nRay Ratchup\nRichard van der Meer\nRichard Z.H. Wang\nRobert Crossfield\nRoberto Abdelkader Martínez Pérez\nrobertop23\nRobert Plummer\nRuslan Osmanov\nRyan Prior\nsabaca\nSamuel Ainsworth\nsandeepshetty\nSander AKA Redsandro\nsantec\nSascha Peilicke\nsatchmorun\nsathyamoorthi\nSCLINIC\\jdecker\nScott Aikin\nScott Goodhew\nSebastian Zaha\nshaund\nshaun gilchrist\nShawn A\nsheopory\nShiv Deepak\nShmuel Englard\nShubham Jain\nsilverwind\nsnasa\nsoliton4\nsonson\nspastorelli\nsrajanpaliwal\nStanislav Oaserele\nStas Kobzar\nStefan Borsje\nSteffen Beyer\nSteve O'Hara\nstoskov\nTaha Jahangir\nTakuji Shimokawa\nTarmil\ntel\ntfjgeorge\nThaddee Tyl\nTheHowl\nthink\nThomas Dvornik\nThomas Schmid\nTim Alby\nTim Baumann\nTimothy Farrell\nTimothy Hatcher\nTobiasBg\nTomas-A\nTomas Varaneckas\nTom Erik Støwer\nTom MacWright\nTony Jian\nTravis Heppe\nTriangle717\ntwifkak\nVestimir Markov\nvf\nVincent Woo\nVolker Mische\nwenli\nWesley Wiser\nWill Binns-Smith\nWilliam Jamieson\nWilliam Stein\nWilly\nWojtek Ptak\nXavier Mendez\nYassin N. Hassan\nYNH Webdev\nYunchi Luo\nYuvi Panda\nZachary Dremann\nZhang Hao\nzziuni\n魏鹏刚\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/LICENSE",
    "content": "Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/README.md",
    "content": "# CodeMirror\n[![Build Status](https://travis-ci.org/codemirror/CodeMirror.svg)](https://travis-ci.org/codemirror/CodeMirror)\n[![NPM version](https://img.shields.io/npm/v/codemirror.svg)](https://www.npmjs.org/package/codemirror)  \n[Funding status: ![maintainer happiness](https://marijnhaverbeke.nl/fund/status_s.png)](https://marijnhaverbeke.nl/fund/)\n\nCodeMirror is a JavaScript component that provides a code editor in\nthe browser. When a mode is available for the language you are coding\nin, it will color your code, and optionally help with indentation.\n\nThe project page is http://codemirror.net  \nThe manual is at http://codemirror.net/doc/manual.html  \nThe contributing guidelines are in [CONTRIBUTING.md](https://github.com/codemirror/CodeMirror/blob/master/CONTRIBUTING.md)\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/comment/comment.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var noOptions = {};\n  var nonWS = /[^\\s\\u00a0]/;\n  var Pos = CodeMirror.Pos;\n\n  function firstNonWS(str) {\n    var found = str.search(nonWS);\n    return found == -1 ? 0 : found;\n  }\n\n  CodeMirror.commands.toggleComment = function(cm) {\n    var minLine = Infinity, ranges = cm.listSelections(), mode = null;\n    for (var i = ranges.length - 1; i >= 0; i--) {\n      var from = ranges[i].from(), to = ranges[i].to();\n      if (from.line >= minLine) continue;\n      if (to.line >= minLine) to = Pos(minLine, 0);\n      minLine = from.line;\n      if (mode == null) {\n        if (cm.uncomment(from, to)) mode = \"un\";\n        else { cm.lineComment(from, to); mode = \"line\"; }\n      } else if (mode == \"un\") {\n        cm.uncomment(from, to);\n      } else {\n        cm.lineComment(from, to);\n      }\n    }\n  };\n\n  CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = self.getModeAt(from);\n    var commentString = options.lineComment || mode.lineComment;\n    if (!commentString) {\n      if (options.blockCommentStart || mode.blockCommentStart) {\n        options.fullLines = true;\n        self.blockComment(from, to, options);\n      }\n      return;\n    }\n    var firstLine = self.getLine(from.line);\n    if (firstLine == null) return;\n    var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n    var pad = options.padding == null ? \" \" : options.padding;\n    var blankLines = options.commentBlankLines || from.line == to.line;\n\n    self.operation(function() {\n      if (options.indent) {\n        var baseString = firstLine.slice(0, firstNonWS(firstLine));\n        for (var i = from.line; i < end; ++i) {\n          var line = self.getLine(i), cut = baseString.length;\n          if (!blankLines && !nonWS.test(line)) continue;\n          if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n          self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n        }\n      } else {\n        for (var i = from.line; i < end; ++i) {\n          if (blankLines || nonWS.test(self.getLine(i)))\n            self.replaceRange(commentString + pad, Pos(i, 0));\n        }\n      }\n    });\n  });\n\n  CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = self.getModeAt(from);\n    var startString = options.blockCommentStart || mode.blockCommentStart;\n    var endString = options.blockCommentEnd || mode.blockCommentEnd;\n    if (!startString || !endString) {\n      if ((options.lineComment || mode.lineComment) && options.fullLines != false)\n        self.lineComment(from, to, options);\n      return;\n    }\n\n    var end = Math.min(to.line, self.lastLine());\n    if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n\n    var pad = options.padding == null ? \" \" : options.padding;\n    if (from.line > end) return;\n\n    self.operation(function() {\n      if (options.fullLines != false) {\n        var lastLineHasText = nonWS.test(self.getLine(end));\n        self.replaceRange(pad + endString, Pos(end));\n        self.replaceRange(startString + pad, Pos(from.line, 0));\n        var lead = options.blockCommentLead || mode.blockCommentLead;\n        if (lead != null) for (var i = from.line + 1; i <= end; ++i)\n          if (i != end || lastLineHasText)\n            self.replaceRange(lead + pad, Pos(i, 0));\n      } else {\n        self.replaceRange(endString, to);\n        self.replaceRange(startString, from);\n      }\n    });\n  });\n\n  CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n    if (!options) options = noOptions;\n    var self = this, mode = self.getModeAt(from);\n    var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);\n\n    // Try finding line comments\n    var lineString = options.lineComment || mode.lineComment, lines = [];\n    var pad = options.padding == null ? \" \" : options.padding, didSomething;\n    lineComment: {\n      if (!lineString) break lineComment;\n      for (var i = start; i <= end; ++i) {\n        var line = self.getLine(i);\n        var found = line.indexOf(lineString);\n        if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n        if (found == -1 && (i != end || i == start) && nonWS.test(line)) break lineComment;\n        if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n        lines.push(line);\n      }\n      self.operation(function() {\n        for (var i = start; i <= end; ++i) {\n          var line = lines[i - start];\n          var pos = line.indexOf(lineString), endPos = pos + lineString.length;\n          if (pos < 0) continue;\n          if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n          didSomething = true;\n          self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n        }\n      });\n      if (didSomething) return true;\n    }\n\n    // Try block comments\n    var startString = options.blockCommentStart || mode.blockCommentStart;\n    var endString = options.blockCommentEnd || mode.blockCommentEnd;\n    if (!startString || !endString) return false;\n    var lead = options.blockCommentLead || mode.blockCommentLead;\n    var startLine = self.getLine(start), endLine = end == start ? startLine : self.getLine(end);\n    var open = startLine.indexOf(startString), close = endLine.lastIndexOf(endString);\n    if (close == -1 && start != end) {\n      endLine = self.getLine(--end);\n      close = endLine.lastIndexOf(endString);\n    }\n    if (open == -1 || close == -1 ||\n        !/comment/.test(self.getTokenTypeAt(Pos(start, open + 1))) ||\n        !/comment/.test(self.getTokenTypeAt(Pos(end, close + 1))))\n      return false;\n\n    // Avoid killing block comments completely outside the selection.\n    // Positions of the last startString before the start of the selection, and the first endString after it.\n    var lastStart = startLine.lastIndexOf(startString, from.ch);\n    var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n    if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n    // Positions of the first endString after the end of the selection, and the last startString before it.\n    firstEnd = endLine.indexOf(endString, to.ch);\n    var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n    lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;\n    if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n\n    self.operation(function() {\n      self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),\n                        Pos(end, close + endString.length));\n      var openEnd = open + startString.length;\n      if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n      self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n      if (lead) for (var i = start + 1; i <= end; ++i) {\n        var line = self.getLine(i), found = line.indexOf(lead);\n        if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n        var foundEnd = found + lead.length;\n        if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n        self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n      }\n    });\n    return true;\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/comment/continuecomment.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var modes = [\"clike\", \"css\", \"javascript\"];\n\n  for (var i = 0; i < modes.length; ++i)\n    CodeMirror.extendMode(modes[i], {blockCommentContinue: \" * \"});\n\n  function continueComment(cm) {\n    if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n    var ranges = cm.listSelections(), mode, inserts = [];\n    for (var i = 0; i < ranges.length; i++) {\n      var pos = ranges[i].head, token = cm.getTokenAt(pos);\n      if (token.type != \"comment\") return CodeMirror.Pass;\n      var modeHere = CodeMirror.innerMode(cm.getMode(), token.state).mode;\n      if (!mode) mode = modeHere;\n      else if (mode != modeHere) return CodeMirror.Pass;\n\n      var insert = null;\n      if (mode.blockCommentStart && mode.blockCommentContinue) {\n        var end = token.string.indexOf(mode.blockCommentEnd);\n        var full = cm.getRange(CodeMirror.Pos(pos.line, 0), CodeMirror.Pos(pos.line, token.end)), found;\n        if (end != -1 && end == token.string.length - mode.blockCommentEnd.length && pos.ch >= end) {\n          // Comment ended, don't continue it\n        } else if (token.string.indexOf(mode.blockCommentStart) == 0) {\n          insert = full.slice(0, token.start);\n          if (!/^\\s*$/.test(insert)) {\n            insert = \"\";\n            for (var j = 0; j < token.start; ++j) insert += \" \";\n          }\n        } else if ((found = full.indexOf(mode.blockCommentContinue)) != -1 &&\n                   found + mode.blockCommentContinue.length > token.start &&\n                   /^\\s*$/.test(full.slice(0, found))) {\n          insert = full.slice(0, found);\n        }\n        if (insert != null) insert += mode.blockCommentContinue;\n      }\n      if (insert == null && mode.lineComment && continueLineCommentEnabled(cm)) {\n        var line = cm.getLine(pos.line), found = line.indexOf(mode.lineComment);\n        if (found > -1) {\n          insert = line.slice(0, found);\n          if (/\\S/.test(insert)) insert = null;\n          else insert += mode.lineComment + line.slice(found + mode.lineComment.length).match(/^\\s*/)[0];\n        }\n      }\n      if (insert == null) return CodeMirror.Pass;\n      inserts[i] = \"\\n\" + insert;\n    }\n\n    cm.operation(function() {\n      for (var i = ranges.length - 1; i >= 0; i--)\n        cm.replaceRange(inserts[i], ranges[i].from(), ranges[i].to(), \"+insert\");\n    });\n  }\n\n  function continueLineCommentEnabled(cm) {\n    var opt = cm.getOption(\"continueComments\");\n    if (opt && typeof opt == \"object\")\n      return opt.continueLineComment !== false;\n    return true;\n  }\n\n  CodeMirror.defineOption(\"continueComments\", null, function(cm, val, prev) {\n    if (prev && prev != CodeMirror.Init)\n      cm.removeKeyMap(\"continueComment\");\n    if (val) {\n      var key = \"Enter\";\n      if (typeof val == \"string\")\n        key = val;\n      else if (typeof val == \"object\" && val.key)\n        key = val.key;\n      var map = {name: \"continueComment\"};\n      map[key] = continueComment;\n      cm.addKeyMap(map);\n    }\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/dialog/dialog.css",
    "content": ".CodeMirror-dialog {\n  position: absolute;\n  left: 0; right: 0;\n  background: white;\n  z-index: 15;\n  padding: .1em .8em;\n  overflow: hidden;\n  color: #333;\n}\n\n.CodeMirror-dialog-top {\n  border-bottom: 1px solid #eee;\n  top: 0;\n}\n\n.CodeMirror-dialog-bottom {\n  border-top: 1px solid #eee;\n  bottom: 0;\n}\n\n.CodeMirror-dialog input {\n  border: none;\n  outline: none;\n  background: transparent;\n  width: 20em;\n  color: inherit;\n  font-family: monospace;\n}\n\n.CodeMirror-dialog button {\n  font-size: 70%;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/dialog/dialog.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  function dialogDiv(cm, template, bottom) {\n    var wrap = cm.getWrapperElement();\n    var dialog;\n    dialog = wrap.appendChild(document.createElement(\"div\"));\n    if (bottom)\n      dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n    else\n      dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n    if (typeof template == \"string\") {\n      dialog.innerHTML = template;\n    } else { // Assuming it's a detached DOM element.\n      dialog.appendChild(template);\n    }\n    return dialog;\n  }\n\n  function closeNotification(cm, newVal) {\n    if (cm.state.currentNotificationClose)\n      cm.state.currentNotificationClose();\n    cm.state.currentNotificationClose = newVal;\n  }\n\n  CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n    if (!options) options = {};\n\n    closeNotification(this, null);\n\n    var dialog = dialogDiv(this, template, options.bottom);\n    var closed = false, me = this;\n    function close(newVal) {\n      if (typeof newVal == 'string') {\n        inp.value = newVal;\n      } else {\n        if (closed) return;\n        closed = true;\n        dialog.parentNode.removeChild(dialog);\n        me.focus();\n\n        if (options.onClose) options.onClose(dialog);\n      }\n    }\n\n    var inp = dialog.getElementsByTagName(\"input\")[0], button;\n    if (inp) {\n      if (options.value) {\n        inp.value = options.value;\n        inp.select();\n      }\n\n      if (options.onInput)\n        CodeMirror.on(inp, \"input\", function(e) { options.onInput(e, inp.value, close);});\n      if (options.onKeyUp)\n        CodeMirror.on(inp, \"keyup\", function(e) {options.onKeyUp(e, inp.value, close);});\n\n      CodeMirror.on(inp, \"keydown\", function(e) {\n        if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n        if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n          inp.blur();\n          CodeMirror.e_stop(e);\n          close();\n        }\n        if (e.keyCode == 13) callback(inp.value, e);\n      });\n\n      if (options.closeOnBlur !== false) CodeMirror.on(inp, \"blur\", close);\n\n      inp.focus();\n    } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n      CodeMirror.on(button, \"click\", function() {\n        close();\n        me.focus();\n      });\n\n      if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n\n      button.focus();\n    }\n    return close;\n  });\n\n  CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n    closeNotification(this, null);\n    var dialog = dialogDiv(this, template, options && options.bottom);\n    var buttons = dialog.getElementsByTagName(\"button\");\n    var closed = false, me = this, blurring = 1;\n    function close() {\n      if (closed) return;\n      closed = true;\n      dialog.parentNode.removeChild(dialog);\n      me.focus();\n    }\n    buttons[0].focus();\n    for (var i = 0; i < buttons.length; ++i) {\n      var b = buttons[i];\n      (function(callback) {\n        CodeMirror.on(b, \"click\", function(e) {\n          CodeMirror.e_preventDefault(e);\n          close();\n          if (callback) callback(me);\n        });\n      })(callbacks[i]);\n      CodeMirror.on(b, \"blur\", function() {\n        --blurring;\n        setTimeout(function() { if (blurring <= 0) close(); }, 200);\n      });\n      CodeMirror.on(b, \"focus\", function() { ++blurring; });\n    }\n  });\n\n  /*\n   * openNotification\n   * Opens a notification, that can be closed with an optional timer\n   * (default 5000ms timer) and always closes on click.\n   *\n   * If a notification is opened while another is opened, it will close the\n   * currently opened one and open the new one immediately.\n   */\n  CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n    closeNotification(this, close);\n    var dialog = dialogDiv(this, template, options && options.bottom);\n    var closed = false, doneTimer;\n    var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n    function close() {\n      if (closed) return;\n      closed = true;\n      clearTimeout(doneTimer);\n      dialog.parentNode.removeChild(dialog);\n    }\n\n    CodeMirror.on(dialog, 'click', function(e) {\n      CodeMirror.e_preventDefault(e);\n      close();\n    });\n\n    if (duration)\n      doneTimer = setTimeout(close, duration);\n\n    return close;\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/display/fullscreen.css",
    "content": ".CodeMirror-fullscreen {\n  position: fixed;\n  top: 0; left: 0; right: 0; bottom: 0;\n  height: auto;\n  z-index: 9;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/display/fullscreen.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineOption(\"fullScreen\", false, function(cm, val, old) {\n    if (old == CodeMirror.Init) old = false;\n    if (!old == !val) return;\n    if (val) setFullscreen(cm);\n    else setNormal(cm);\n  });\n\n  function setFullscreen(cm) {\n    var wrap = cm.getWrapperElement();\n    cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,\n                                  width: wrap.style.width, height: wrap.style.height};\n    wrap.style.width = \"\";\n    wrap.style.height = \"auto\";\n    wrap.className += \" CodeMirror-fullscreen\";\n    document.documentElement.style.overflow = \"hidden\";\n    cm.refresh();\n  }\n\n  function setNormal(cm) {\n    var wrap = cm.getWrapperElement();\n    wrap.className = wrap.className.replace(/\\s*CodeMirror-fullscreen\\b/, \"\");\n    document.documentElement.style.overflow = \"\";\n    var info = cm.state.fullScreenRestore;\n    wrap.style.width = info.width; wrap.style.height = info.height;\n    window.scrollTo(info.scrollLeft, info.scrollTop);\n    cm.refresh();\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/display/panel.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  CodeMirror.defineExtension(\"addPanel\", function(node, options) {\n    if (!this.state.panels) initPanels(this);\n\n    var info = this.state.panels;\n    if (options && options.position == \"bottom\")\n      info.wrapper.appendChild(node);\n    else\n      info.wrapper.insertBefore(node, info.wrapper.firstChild);\n    var height = (options && options.height) || node.offsetHeight;\n    this._setSize(null, info.heightLeft -= height);\n    info.panels++;\n    return new Panel(this, node, options, height);\n  });\n\n  function Panel(cm, node, options, height) {\n    this.cm = cm;\n    this.node = node;\n    this.options = options;\n    this.height = height;\n    this.cleared = false;\n  }\n\n  Panel.prototype.clear = function() {\n    if (this.cleared) return;\n    this.cleared = true;\n    var info = this.cm.state.panels;\n    this.cm._setSize(null, info.heightLeft += this.height);\n    info.wrapper.removeChild(this.node);\n    if (--info.panels == 0) removePanels(this.cm);\n  };\n\n  Panel.prototype.changed = function(height) {\n    var newHeight = height == null ? this.node.offsetHeight : height;\n    var info = this.cm.state.panels;\n    this.cm._setSize(null, info.height += (newHeight - this.height));\n    this.height = newHeight;\n  };\n\n  function initPanels(cm) {\n    var wrap = cm.getWrapperElement();\n    var style = window.getComputedStyle ? window.getComputedStyle(wrap) : wrap.currentStyle;\n    var height = parseInt(style.height);\n    var info = cm.state.panels = {\n      setHeight: wrap.style.height,\n      heightLeft: height,\n      panels: 0,\n      wrapper: document.createElement(\"div\")\n    };\n    wrap.parentNode.insertBefore(info.wrapper, wrap);\n    var hasFocus = cm.hasFocus();\n    info.wrapper.appendChild(wrap);\n    if (hasFocus) cm.focus();\n\n    cm._setSize = cm.setSize;\n    if (height != null) cm.setSize = function(width, newHeight) {\n      if (newHeight == null) return this._setSize(width, newHeight);\n      info.setHeight = newHeight;\n      if (typeof newHeight != \"number\") {\n        var px = /^(\\d+\\.?\\d*)px$/.exec(newHeight);\n        if (px) {\n          newHeight = Number(px[1]);\n        } else {\n          info.wrapper.style.height = newHeight;\n          newHeight = info.wrapper.offsetHeight;\n          info.wrapper.style.height = \"\";\n        }\n      }\n      cm._setSize(width, info.heightLeft += (newHeight - height));\n      height = newHeight;\n    };\n  }\n\n  function removePanels(cm) {\n    var info = cm.state.panels;\n    cm.state.panels = null;\n\n    var wrap = cm.getWrapperElement();\n    info.wrapper.parentNode.replaceChild(wrap, info.wrapper);\n    wrap.style.height = info.setHeight;\n    cm.setSize = cm._setSize;\n    cm.setSize();\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/display/placeholder.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n    var prev = old && old != CodeMirror.Init;\n    if (val && !prev) {\n      cm.on(\"blur\", onBlur);\n      cm.on(\"change\", onChange);\n      onChange(cm);\n    } else if (!val && prev) {\n      cm.off(\"blur\", onBlur);\n      cm.off(\"change\", onChange);\n      clearPlaceholder(cm);\n      var wrapper = cm.getWrapperElement();\n      wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n    }\n\n    if (val && !cm.hasFocus()) onBlur(cm);\n  });\n\n  function clearPlaceholder(cm) {\n    if (cm.state.placeholder) {\n      cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n      cm.state.placeholder = null;\n    }\n  }\n  function setPlaceholder(cm) {\n    clearPlaceholder(cm);\n    var elt = cm.state.placeholder = document.createElement(\"pre\");\n    elt.style.cssText = \"height: 0; overflow: visible\";\n    elt.className = \"CodeMirror-placeholder\";\n    elt.appendChild(document.createTextNode(cm.getOption(\"placeholder\")));\n    cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n  }\n\n  function onBlur(cm) {\n    if (isEmpty(cm)) setPlaceholder(cm);\n  }\n  function onChange(cm) {\n    var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n    wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n    if (empty) setPlaceholder(cm);\n    else clearPlaceholder(cm);\n  }\n\n  function isEmpty(cm) {\n    return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/display/rulers.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineOption(\"rulers\", false, function(cm, val, old) {\n    if (old && old != CodeMirror.Init) {\n      clearRulers(cm);\n      cm.off(\"refresh\", refreshRulers);\n    }\n    if (val && val.length) {\n      setRulers(cm);\n      cm.on(\"refresh\", refreshRulers);\n    }\n  });\n\n  function clearRulers(cm) {\n    for (var i = cm.display.lineSpace.childNodes.length - 1; i >= 0; i--) {\n      var node = cm.display.lineSpace.childNodes[i];\n      if (/(^|\\s)CodeMirror-ruler($|\\s)/.test(node.className))\n        node.parentNode.removeChild(node);\n    }\n  }\n\n  function setRulers(cm) {\n    var val = cm.getOption(\"rulers\");\n    var cw = cm.defaultCharWidth();\n    var left = cm.charCoords(CodeMirror.Pos(cm.firstLine(), 0), \"div\").left;\n    var minH = cm.display.scroller.offsetHeight + 30;\n    for (var i = 0; i < val.length; i++) {\n      var elt = document.createElement(\"div\");\n      elt.className = \"CodeMirror-ruler\";\n      var col, cls = null, conf = val[i];\n      if (typeof conf == \"number\") {\n        col = conf;\n      } else {\n        col = conf.column;\n        if (conf.className) elt.className += \" \" + conf.className;\n        if (conf.color) elt.style.borderColor = conf.color;\n        if (conf.lineStyle) elt.style.borderLeftStyle = conf.lineStyle;\n        if (conf.width) elt.style.borderLeftWidth = conf.width;\n        cls = val[i].className;\n      }\n      elt.style.left = (left + col * cw) + \"px\";\n      elt.style.top = \"-50px\";\n      elt.style.bottom = \"-20px\";\n      elt.style.minHeight = minH + \"px\";\n      cm.display.lineSpace.insertBefore(elt, cm.display.cursorDiv);\n    }\n  }\n\n  function refreshRulers(cm) {\n    clearRulers(cm);\n    setRulers(cm);\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/edit/closebrackets.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var DEFAULT_BRACKETS = \"()[]{}''\\\"\\\"\";\n  var DEFAULT_TRIPLES = \"'\\\"\";\n  var DEFAULT_EXPLODE_ON_ENTER = \"[]{}\";\n  var SPACE_CHAR_REGEX = /\\s/;\n\n  var Pos = CodeMirror.Pos;\n\n  CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n    if (old != CodeMirror.Init && old)\n      cm.removeKeyMap(\"autoCloseBrackets\");\n    if (!val) return;\n    var pairs = DEFAULT_BRACKETS, triples = DEFAULT_TRIPLES, explode = DEFAULT_EXPLODE_ON_ENTER;\n    if (typeof val == \"string\") pairs = val;\n    else if (typeof val == \"object\") {\n      if (val.pairs != null) pairs = val.pairs;\n      if (val.triples != null) triples = val.triples;\n      if (val.explode != null) explode = val.explode;\n    }\n    var map = buildKeymap(pairs, triples);\n    if (explode) map.Enter = buildExplodeHandler(explode);\n    cm.addKeyMap(map);\n  });\n\n  function charsAround(cm, pos) {\n    var str = cm.getRange(Pos(pos.line, pos.ch - 1),\n                          Pos(pos.line, pos.ch + 1));\n    return str.length == 2 ? str : null;\n  }\n\n  // Project the token type that will exists after the given char is\n  // typed, and use it to determine whether it would cause the start\n  // of a string token.\n  function enteringString(cm, pos, ch) {\n    var line = cm.getLine(pos.line);\n    var token = cm.getTokenAt(pos);\n    if (/\\bstring2?\\b/.test(token.type)) return false;\n    var stream = new CodeMirror.StringStream(line.slice(0, pos.ch) + ch + line.slice(pos.ch), 4);\n    stream.pos = stream.start = token.start;\n    for (;;) {\n      var type1 = cm.getMode().token(stream, token.state);\n      if (stream.pos >= pos.ch + 1) return /\\bstring2?\\b/.test(type1);\n      stream.start = stream.pos;\n    }\n  }\n\n  function buildKeymap(pairs, triples) {\n    var map = {\n      name : \"autoCloseBrackets\",\n      Backspace: function(cm) {\n        if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n        var ranges = cm.listSelections();\n        for (var i = 0; i < ranges.length; i++) {\n          if (!ranges[i].empty()) return CodeMirror.Pass;\n          var around = charsAround(cm, ranges[i].head);\n          if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n        }\n        for (var i = ranges.length - 1; i >= 0; i--) {\n          var cur = ranges[i].head;\n          cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1));\n        }\n      }\n    };\n    var closingBrackets = \"\";\n    for (var i = 0; i < pairs.length; i += 2) (function(left, right) {\n      closingBrackets += right;\n      map[\"'\" + left + \"'\"] = function(cm) {\n        if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n        var ranges = cm.listSelections(), type, next;\n        for (var i = 0; i < ranges.length; i++) {\n          var range = ranges[i], cur = range.head, curType;\n          var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n          if (!range.empty()) {\n            curType = \"surround\";\n          } else if (left == right && next == right) {\n            if (cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == left + left + left)\n              curType = \"skipThree\";\n            else\n              curType = \"skip\";\n          } else if (left == right && cur.ch > 1 && triples.indexOf(left) >= 0 &&\n                     cm.getRange(Pos(cur.line, cur.ch - 2), cur) == left + left &&\n                     (cur.ch <= 2 || cm.getRange(Pos(cur.line, cur.ch - 3), Pos(cur.line, cur.ch - 2)) != left)) {\n            curType = \"addFour\";\n          } else if (left == '\"' || left == \"'\") {\n            if (!CodeMirror.isWordChar(next) && enteringString(cm, cur, left)) curType = \"both\";\n            else return CodeMirror.Pass;\n          } else if (cm.getLine(cur.line).length == cur.ch || closingBrackets.indexOf(next) >= 0 || SPACE_CHAR_REGEX.test(next)) {\n            curType = \"both\";\n          } else {\n            return CodeMirror.Pass;\n          }\n          if (!type) type = curType;\n          else if (type != curType) return CodeMirror.Pass;\n        }\n\n        cm.operation(function() {\n          if (type == \"skip\") {\n            cm.execCommand(\"goCharRight\");\n          } else if (type == \"skipThree\") {\n            for (var i = 0; i < 3; i++)\n              cm.execCommand(\"goCharRight\");\n          } else if (type == \"surround\") {\n            var sels = cm.getSelections();\n            for (var i = 0; i < sels.length; i++)\n              sels[i] = left + sels[i] + right;\n            cm.replaceSelections(sels, \"around\");\n          } else if (type == \"both\") {\n            cm.replaceSelection(left + right, null);\n            cm.execCommand(\"goCharLeft\");\n          } else if (type == \"addFour\") {\n            cm.replaceSelection(left + left + left + left, \"before\");\n            cm.execCommand(\"goCharRight\");\n          }\n        });\n      };\n      if (left != right) map[\"'\" + right + \"'\"] = function(cm) {\n        var ranges = cm.listSelections();\n        for (var i = 0; i < ranges.length; i++) {\n          var range = ranges[i];\n          if (!range.empty() ||\n              cm.getRange(range.head, Pos(range.head.line, range.head.ch + 1)) != right)\n            return CodeMirror.Pass;\n        }\n        cm.execCommand(\"goCharRight\");\n      };\n    })(pairs.charAt(i), pairs.charAt(i + 1));\n    return map;\n  }\n\n  function buildExplodeHandler(pairs) {\n    return function(cm) {\n      if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n      var ranges = cm.listSelections();\n      for (var i = 0; i < ranges.length; i++) {\n        if (!ranges[i].empty()) return CodeMirror.Pass;\n        var around = charsAround(cm, ranges[i].head);\n        if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n      }\n      cm.operation(function() {\n        cm.replaceSelection(\"\\n\\n\", null);\n        cm.execCommand(\"goCharLeft\");\n        ranges = cm.listSelections();\n        for (var i = 0; i < ranges.length; i++) {\n          var line = ranges[i].head.line;\n          cm.indentLine(line, null, true);\n          cm.indentLine(line + 1, null, true);\n        }\n      });\n    };\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/edit/closetag.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/**\n * Tag-closer extension for CodeMirror.\n *\n * This extension adds an \"autoCloseTags\" option that can be set to\n * either true to get the default behavior, or an object to further\n * configure its behavior.\n *\n * These are supported options:\n *\n * `whenClosing` (default true)\n *   Whether to autoclose when the '/' of a closing tag is typed.\n * `whenOpening` (default true)\n *   Whether to autoclose the tag when the final '>' of an opening\n *   tag is typed.\n * `dontCloseTags` (default is empty tags for HTML, none for XML)\n *   An array of tag names that should not be autoclosed.\n * `indentTags` (default is block tags for HTML, none for XML)\n *   An array of tag names that should, when opened, cause a\n *   blank line to be added inside the tag, and the blank line and\n *   closing line to be indented.\n *\n * See demos/closetag.html for a usage example.\n */\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../fold/xml-fold\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../fold/xml-fold\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  CodeMirror.defineOption(\"autoCloseTags\", false, function(cm, val, old) {\n    if (old != CodeMirror.Init && old)\n      cm.removeKeyMap(\"autoCloseTags\");\n    if (!val) return;\n    var map = {name: \"autoCloseTags\"};\n    if (typeof val != \"object\" || val.whenClosing)\n      map[\"'/'\"] = function(cm) { return autoCloseSlash(cm); };\n    if (typeof val != \"object\" || val.whenOpening)\n      map[\"'>'\"] = function(cm) { return autoCloseGT(cm); };\n    cm.addKeyMap(map);\n  });\n\n  var htmlDontClose = [\"area\", \"base\", \"br\", \"col\", \"command\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"param\",\n                       \"source\", \"track\", \"wbr\"];\n  var htmlIndent = [\"applet\", \"blockquote\", \"body\", \"button\", \"div\", \"dl\", \"fieldset\", \"form\", \"frameset\", \"h1\", \"h2\", \"h3\", \"h4\",\n                    \"h5\", \"h6\", \"head\", \"html\", \"iframe\", \"layer\", \"legend\", \"object\", \"ol\", \"p\", \"select\", \"table\", \"ul\"];\n\n  function autoCloseGT(cm) {\n    if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n    var ranges = cm.listSelections(), replacements = [];\n    for (var i = 0; i < ranges.length; i++) {\n      if (!ranges[i].empty()) return CodeMirror.Pass;\n      var pos = ranges[i].head, tok = cm.getTokenAt(pos);\n      var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state = inner.state;\n      if (inner.mode.name != \"xml\" || !state.tagName) return CodeMirror.Pass;\n\n      var opt = cm.getOption(\"autoCloseTags\"), html = inner.mode.configuration == \"html\";\n      var dontCloseTags = (typeof opt == \"object\" && opt.dontCloseTags) || (html && htmlDontClose);\n      var indentTags = (typeof opt == \"object\" && opt.indentTags) || (html && htmlIndent);\n\n      var tagName = state.tagName;\n      if (tok.end > pos.ch) tagName = tagName.slice(0, tagName.length - tok.end + pos.ch);\n      var lowerTagName = tagName.toLowerCase();\n      // Don't process the '>' at the end of an end-tag or self-closing tag\n      if (!tagName ||\n          tok.type == \"string\" && (tok.end != pos.ch || !/[\\\"\\']/.test(tok.string.charAt(tok.string.length - 1)) || tok.string.length == 1) ||\n          tok.type == \"tag\" && state.type == \"closeTag\" ||\n          tok.string.indexOf(\"/\") == (tok.string.length - 1) || // match something like <someTagName />\n          dontCloseTags && indexOf(dontCloseTags, lowerTagName) > -1 ||\n          closingTagExists(cm, tagName, pos, state, true))\n        return CodeMirror.Pass;\n\n      var indent = indentTags && indexOf(indentTags, lowerTagName) > -1;\n      replacements[i] = {indent: indent,\n                         text: \">\" + (indent ? \"\\n\\n\" : \"\") + \"</\" + tagName + \">\",\n                         newPos: indent ? CodeMirror.Pos(pos.line + 1, 0) : CodeMirror.Pos(pos.line, pos.ch + 1)};\n    }\n\n    for (var i = ranges.length - 1; i >= 0; i--) {\n      var info = replacements[i];\n      cm.replaceRange(info.text, ranges[i].head, ranges[i].anchor, \"+insert\");\n      var sel = cm.listSelections().slice(0);\n      sel[i] = {head: info.newPos, anchor: info.newPos};\n      cm.setSelections(sel);\n      if (info.indent) {\n        cm.indentLine(info.newPos.line, null, true);\n        cm.indentLine(info.newPos.line + 1, null, true);\n      }\n    }\n  }\n\n  function autoCloseCurrent(cm, typingSlash) {\n    var ranges = cm.listSelections(), replacements = [];\n    var head = typingSlash ? \"/\" : \"</\";\n    for (var i = 0; i < ranges.length; i++) {\n      if (!ranges[i].empty()) return CodeMirror.Pass;\n      var pos = ranges[i].head, tok = cm.getTokenAt(pos);\n      var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state = inner.state;\n      if (typingSlash && (tok.type == \"string\" || tok.string.charAt(0) != \"<\" ||\n                          tok.start != pos.ch - 1))\n        return CodeMirror.Pass;\n      // Kludge to get around the fact that we are not in XML mode\n      // when completing in JS/CSS snippet in htmlmixed mode. Does not\n      // work for other XML embedded languages (there is no general\n      // way to go from a mixed mode to its current XML state).\n      if (inner.mode.name != \"xml\") {\n        if (cm.getMode().name == \"htmlmixed\" && inner.mode.name == \"javascript\")\n          replacements[i] = head + \"script>\";\n        else if (cm.getMode().name == \"htmlmixed\" && inner.mode.name == \"css\")\n          replacements[i] = head + \"style>\";\n        else\n          return CodeMirror.Pass;\n      } else {\n        if (!state.context || !state.context.tagName ||\n            closingTagExists(cm, state.context.tagName, pos, state))\n          return CodeMirror.Pass;\n        replacements[i] = head + state.context.tagName + \">\";\n      }\n    }\n    cm.replaceSelections(replacements);\n    ranges = cm.listSelections();\n    for (var i = 0; i < ranges.length; i++)\n      if (i == ranges.length - 1 || ranges[i].head.line < ranges[i + 1].head.line)\n        cm.indentLine(ranges[i].head.line);\n  }\n\n  function autoCloseSlash(cm) {\n    if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n    return autoCloseCurrent(cm, true);\n  }\n\n  CodeMirror.commands.closeTag = function(cm) { return autoCloseCurrent(cm); };\n\n  function indexOf(collection, elt) {\n    if (collection.indexOf) return collection.indexOf(elt);\n    for (var i = 0, e = collection.length; i < e; ++i)\n      if (collection[i] == elt) return i;\n    return -1;\n  }\n\n  // If xml-fold is loaded, we use its functionality to try and verify\n  // whether a given tag is actually unclosed.\n  function closingTagExists(cm, tagName, pos, state, newTag) {\n    if (!CodeMirror.scanForClosingTag) return false;\n    var end = Math.min(cm.lastLine() + 1, pos.line + 500);\n    var nextClose = CodeMirror.scanForClosingTag(cm, pos, null, end);\n    if (!nextClose || nextClose.tag != tagName) return false;\n    var cx = state.context;\n    // If the immediate wrapping context contains onCx instances of\n    // the same tag, a closing tag only exists if there are at least\n    // that many closing tags of that type following.\n    for (var onCx = newTag ? 1 : 0; cx && cx.tagName == tagName; cx = cx.prev) ++onCx;\n    pos = nextClose.to;\n    for (var i = 1; i < onCx; i++) {\n      var next = CodeMirror.scanForClosingTag(cm, pos, null, end);\n      if (!next || next.tag != tagName) return false;\n      pos = next.to;\n    }\n    return true;\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/edit/continuelist.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var listRE = /^(\\s*)(>[> ]*|[*+-]\\s|(\\d+)\\.)(\\s*)/,\n      emptyListRE = /^(\\s*)(>[> ]*|[*+-]|(\\d+)\\.)(\\s*)$/,\n      unorderedListRE = /[*+-]\\s/;\n\n  CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) {\n    if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n    var ranges = cm.listSelections(), replacements = [];\n    for (var i = 0; i < ranges.length; i++) {\n      var pos = ranges[i].head, match;\n      var eolState = cm.getStateAfter(pos.line);\n      var inList = eolState.list !== false;\n      var inQuote = eolState.quote !== false;\n\n      if (!ranges[i].empty() || (!inList && !inQuote) || !(match = cm.getLine(pos.line).match(listRE))) {\n        cm.execCommand(\"newlineAndIndent\");\n        return;\n      }\n      if (cm.getLine(pos.line).match(emptyListRE)) {\n        cm.replaceRange(\"\", {\n          line: pos.line, ch: 0\n        }, {\n          line: pos.line, ch: pos.ch + 1\n        });\n        replacements[i] = \"\\n\";\n\n      } else {\n        var indent = match[1], after = match[4];\n        var bullet = unorderedListRE.test(match[2]) || match[2].indexOf(\">\") >= 0\n          ? match[2]\n          : (parseInt(match[3], 10) + 1) + \".\";\n\n        replacements[i] = \"\\n\" + indent + bullet + after;\n      }\n    }\n\n    cm.replaceSelections(replacements);\n  };\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/edit/matchbrackets.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n    (document.documentMode == null || document.documentMode < 8);\n\n  var Pos = CodeMirror.Pos;\n\n  var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\"};\n\n  function findMatchingBracket(cm, where, strict, config) {\n    var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n    var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];\n    if (!match) return null;\n    var dir = match.charAt(1) == \">\" ? 1 : -1;\n    if (strict && (dir > 0) != (pos == where.ch)) return null;\n    var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n    var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config);\n    if (found == null) return null;\n    return {from: Pos(where.line, pos), to: found && found.pos,\n            match: found && found.ch == match.charAt(0), forward: dir > 0};\n  }\n\n  // bracketRegex is used to specify which type of bracket to scan\n  // should be a regexp, e.g. /[[\\]]/\n  //\n  // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n  //\n  // Returns false when no bracket was found, null when it reached\n  // maxScanLines and gave up\n  function scanForBracket(cm, where, dir, style, config) {\n    var maxScanLen = (config && config.maxScanLineLength) || 10000;\n    var maxScanLines = (config && config.maxScanLines) || 1000;\n\n    var stack = [];\n    var re = config && config.bracketRegex ? config.bracketRegex : /[(){}[\\]]/;\n    var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n                          : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n    for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n      var line = cm.getLine(lineNo);\n      if (!line) continue;\n      var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n      if (line.length > maxScanLen) continue;\n      if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n      for (; pos != end; pos += dir) {\n        var ch = line.charAt(pos);\n        if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {\n          var match = matching[ch];\n          if ((match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n          else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n          else stack.pop();\n        }\n      }\n    }\n    return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n  }\n\n  function matchBrackets(cm, autoclear, config) {\n    // Disable brace matching in long lines, since it'll cause hugely slow updates\n    var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;\n    var marks = [], ranges = cm.listSelections();\n    for (var i = 0; i < ranges.length; i++) {\n      var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, false, config);\n      if (match && cm.getLine(match.from.line).length <= maxHighlightLen) {\n        var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n        marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n        if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n          marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n      }\n    }\n\n    if (marks.length) {\n      // Kludge to work around the IE bug from issue #1193, where text\n      // input stops going to the textare whever this fires.\n      if (ie_lt8 && cm.state.focused) cm.focus();\n\n      var clear = function() {\n        cm.operation(function() {\n          for (var i = 0; i < marks.length; i++) marks[i].clear();\n        });\n      };\n      if (autoclear) setTimeout(clear, 800);\n      else return clear;\n    }\n  }\n\n  var currentlyHighlighted = null;\n  function doMatchBrackets(cm) {\n    cm.operation(function() {\n      if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}\n      currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n    });\n  }\n\n  CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n    if (old && old != CodeMirror.Init)\n      cm.off(\"cursorActivity\", doMatchBrackets);\n    if (val) {\n      cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n      cm.on(\"cursorActivity\", doMatchBrackets);\n    }\n  });\n\n  CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n  CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, strict, config){\n    return findMatchingBracket(this, pos, strict, config);\n  });\n  CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n    return scanForBracket(this, pos, dir, style, config);\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/edit/matchtags.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../fold/xml-fold\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../fold/xml-fold\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineOption(\"matchTags\", false, function(cm, val, old) {\n    if (old && old != CodeMirror.Init) {\n      cm.off(\"cursorActivity\", doMatchTags);\n      cm.off(\"viewportChange\", maybeUpdateMatch);\n      clear(cm);\n    }\n    if (val) {\n      cm.state.matchBothTags = typeof val == \"object\" && val.bothTags;\n      cm.on(\"cursorActivity\", doMatchTags);\n      cm.on(\"viewportChange\", maybeUpdateMatch);\n      doMatchTags(cm);\n    }\n  });\n\n  function clear(cm) {\n    if (cm.state.tagHit) cm.state.tagHit.clear();\n    if (cm.state.tagOther) cm.state.tagOther.clear();\n    cm.state.tagHit = cm.state.tagOther = null;\n  }\n\n  function doMatchTags(cm) {\n    cm.state.failedTagMatch = false;\n    cm.operation(function() {\n      clear(cm);\n      if (cm.somethingSelected()) return;\n      var cur = cm.getCursor(), range = cm.getViewport();\n      range.from = Math.min(range.from, cur.line); range.to = Math.max(cur.line + 1, range.to);\n      var match = CodeMirror.findMatchingTag(cm, cur, range);\n      if (!match) return;\n      if (cm.state.matchBothTags) {\n        var hit = match.at == \"open\" ? match.open : match.close;\n        if (hit) cm.state.tagHit = cm.markText(hit.from, hit.to, {className: \"CodeMirror-matchingtag\"});\n      }\n      var other = match.at == \"close\" ? match.open : match.close;\n      if (other)\n        cm.state.tagOther = cm.markText(other.from, other.to, {className: \"CodeMirror-matchingtag\"});\n      else\n        cm.state.failedTagMatch = true;\n    });\n  }\n\n  function maybeUpdateMatch(cm) {\n    if (cm.state.failedTagMatch) doMatchTags(cm);\n  }\n\n  CodeMirror.commands.toMatchingTag = function(cm) {\n    var found = CodeMirror.findMatchingTag(cm, cm.getCursor());\n    if (found) {\n      var other = found.at == \"close\" ? found.open : found.close;\n      if (other) cm.extendSelection(other.to, other.from);\n    }\n  };\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/edit/trailingspace.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  CodeMirror.defineOption(\"showTrailingSpace\", false, function(cm, val, prev) {\n    if (prev == CodeMirror.Init) prev = false;\n    if (prev && !val)\n      cm.removeOverlay(\"trailingspace\");\n    else if (!prev && val)\n      cm.addOverlay({\n        token: function(stream) {\n          for (var l = stream.string.length, i = l; i && /\\s/.test(stream.string.charAt(i - 1)); --i) {}\n          if (i > stream.pos) { stream.pos = i; return null; }\n          stream.pos = l;\n          return \"trailingspace\";\n        },\n        name: \"trailingspace\"\n      });\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/fold/brace-fold.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerHelper(\"fold\", \"brace\", function(cm, start) {\n  var line = start.line, lineText = cm.getLine(line);\n  var startCh, tokenType;\n\n  function findOpening(openCh) {\n    for (var at = start.ch, pass = 0;;) {\n      var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);\n      if (found == -1) {\n        if (pass == 1) break;\n        pass = 1;\n        at = lineText.length;\n        continue;\n      }\n      if (pass == 1 && found < start.ch) break;\n      tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n      if (!/^(comment|string)/.test(tokenType)) return found + 1;\n      at = found - 1;\n    }\n  }\n\n  var startToken = \"{\", endToken = \"}\", startCh = findOpening(\"{\");\n  if (startCh == null) {\n    startToken = \"[\", endToken = \"]\";\n    startCh = findOpening(\"[\");\n  }\n\n  if (startCh == null) return;\n  var count = 1, lastLine = cm.lastLine(), end, endCh;\n  outer: for (var i = line; i <= lastLine; ++i) {\n    var text = cm.getLine(i), pos = i == line ? startCh : 0;\n    for (;;) {\n      var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos);\n      if (nextOpen < 0) nextOpen = text.length;\n      if (nextClose < 0) nextClose = text.length;\n      pos = Math.min(nextOpen, nextClose);\n      if (pos == text.length) break;\n      if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) {\n        if (pos == nextOpen) ++count;\n        else if (!--count) { end = i; endCh = pos; break outer; }\n      }\n      ++pos;\n    }\n  }\n  if (end == null || line == end && endCh == startCh) return;\n  return {from: CodeMirror.Pos(line, startCh),\n          to: CodeMirror.Pos(end, endCh)};\n});\n\nCodeMirror.registerHelper(\"fold\", \"import\", function(cm, start) {\n  function hasImport(line) {\n    if (line < cm.firstLine() || line > cm.lastLine()) return null;\n    var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n    if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n    if (start.type != \"keyword\" || start.string != \"import\") return null;\n    // Now find closing semicolon, return its position\n    for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n      var text = cm.getLine(i), semi = text.indexOf(\";\");\n      if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i, semi)};\n    }\n  }\n\n  var start = start.line, has = hasImport(start), prev;\n  if (!has || hasImport(start - 1) || ((prev = hasImport(start - 2)) && prev.end.line == start - 1))\n    return null;\n  for (var end = has.end;;) {\n    var next = hasImport(end.line + 1);\n    if (next == null) break;\n    end = next.end;\n  }\n  return {from: cm.clipPos(CodeMirror.Pos(start, has.startCh + 1)), to: end};\n});\n\nCodeMirror.registerHelper(\"fold\", \"include\", function(cm, start) {\n  function hasInclude(line) {\n    if (line < cm.firstLine() || line > cm.lastLine()) return null;\n    var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n    if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n    if (start.type == \"meta\" && start.string.slice(0, 8) == \"#include\") return start.start + 8;\n  }\n\n  var start = start.line, has = hasInclude(start);\n  if (has == null || hasInclude(start - 1) != null) return null;\n  for (var end = start;;) {\n    var next = hasInclude(end + 1);\n    if (next == null) break;\n    ++end;\n  }\n  return {from: CodeMirror.Pos(start, has + 1),\n          to: cm.clipPos(CodeMirror.Pos(end))};\n});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/fold/comment-fold.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerGlobalHelper(\"fold\", \"comment\", function(mode) {\n  return mode.blockCommentStart && mode.blockCommentEnd;\n}, function(cm, start) {\n  var mode = cm.getModeAt(start), startToken = mode.blockCommentStart, endToken = mode.blockCommentEnd;\n  if (!startToken || !endToken) return;\n  var line = start.line, lineText = cm.getLine(line);\n\n  var startCh;\n  for (var at = start.ch, pass = 0;;) {\n    var found = at <= 0 ? -1 : lineText.lastIndexOf(startToken, at - 1);\n    if (found == -1) {\n      if (pass == 1) return;\n      pass = 1;\n      at = lineText.length;\n      continue;\n    }\n    if (pass == 1 && found < start.ch) return;\n    if (/comment/.test(cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1)))) {\n      startCh = found + startToken.length;\n      break;\n    }\n    at = found - 1;\n  }\n\n  var depth = 1, lastLine = cm.lastLine(), end, endCh;\n  outer: for (var i = line; i <= lastLine; ++i) {\n    var text = cm.getLine(i), pos = i == line ? startCh : 0;\n    for (;;) {\n      var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos);\n      if (nextOpen < 0) nextOpen = text.length;\n      if (nextClose < 0) nextClose = text.length;\n      pos = Math.min(nextOpen, nextClose);\n      if (pos == text.length) break;\n      if (pos == nextOpen) ++depth;\n      else if (!--depth) { end = i; endCh = pos; break outer; }\n      ++pos;\n    }\n  }\n  if (end == null || line == end && endCh == startCh) return;\n  return {from: CodeMirror.Pos(line, startCh),\n          to: CodeMirror.Pos(end, endCh)};\n});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/fold/foldcode.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function doFold(cm, pos, options, force) {\n    if (options && options.call) {\n      var finder = options;\n      options = null;\n    } else {\n      var finder = getOption(cm, options, \"rangeFinder\");\n    }\n    if (typeof pos == \"number\") pos = CodeMirror.Pos(pos, 0);\n    var minSize = getOption(cm, options, \"minFoldSize\");\n\n    function getRange(allowFolded) {\n      var range = finder(cm, pos);\n      if (!range || range.to.line - range.from.line < minSize) return null;\n      var marks = cm.findMarksAt(range.from);\n      for (var i = 0; i < marks.length; ++i) {\n        if (marks[i].__isFold && force !== \"fold\") {\n          if (!allowFolded) return null;\n          range.cleared = true;\n          marks[i].clear();\n        }\n      }\n      return range;\n    }\n\n    var range = getRange(true);\n    if (getOption(cm, options, \"scanUp\")) while (!range && pos.line > cm.firstLine()) {\n      pos = CodeMirror.Pos(pos.line - 1, 0);\n      range = getRange(false);\n    }\n    if (!range || range.cleared || force === \"unfold\") return;\n\n    var myWidget = makeWidget(cm, options);\n    CodeMirror.on(myWidget, \"mousedown\", function(e) {\n      myRange.clear();\n      CodeMirror.e_preventDefault(e);\n    });\n    var myRange = cm.markText(range.from, range.to, {\n      replacedWith: myWidget,\n      clearOnEnter: true,\n      __isFold: true\n    });\n    myRange.on(\"clear\", function(from, to) {\n      CodeMirror.signal(cm, \"unfold\", cm, from, to);\n    });\n    CodeMirror.signal(cm, \"fold\", cm, range.from, range.to);\n  }\n\n  function makeWidget(cm, options) {\n    var widget = getOption(cm, options, \"widget\");\n    if (typeof widget == \"string\") {\n      var text = document.createTextNode(widget);\n      widget = document.createElement(\"span\");\n      widget.appendChild(text);\n      widget.className = \"CodeMirror-foldmarker\";\n    }\n    return widget;\n  }\n\n  // Clumsy backwards-compatible interface\n  CodeMirror.newFoldFunction = function(rangeFinder, widget) {\n    return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder, widget: widget}); };\n  };\n\n  // New-style interface\n  CodeMirror.defineExtension(\"foldCode\", function(pos, options, force) {\n    doFold(this, pos, options, force);\n  });\n\n  CodeMirror.defineExtension(\"isFolded\", function(pos) {\n    var marks = this.findMarksAt(pos);\n    for (var i = 0; i < marks.length; ++i)\n      if (marks[i].__isFold) return true;\n  });\n\n  CodeMirror.commands.toggleFold = function(cm) {\n    cm.foldCode(cm.getCursor());\n  };\n  CodeMirror.commands.fold = function(cm) {\n    cm.foldCode(cm.getCursor(), null, \"fold\");\n  };\n  CodeMirror.commands.unfold = function(cm) {\n    cm.foldCode(cm.getCursor(), null, \"unfold\");\n  };\n  CodeMirror.commands.foldAll = function(cm) {\n    cm.operation(function() {\n      for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n        cm.foldCode(CodeMirror.Pos(i, 0), null, \"fold\");\n    });\n  };\n  CodeMirror.commands.unfoldAll = function(cm) {\n    cm.operation(function() {\n      for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n        cm.foldCode(CodeMirror.Pos(i, 0), null, \"unfold\");\n    });\n  };\n\n  CodeMirror.registerHelper(\"fold\", \"combine\", function() {\n    var funcs = Array.prototype.slice.call(arguments, 0);\n    return function(cm, start) {\n      for (var i = 0; i < funcs.length; ++i) {\n        var found = funcs[i](cm, start);\n        if (found) return found;\n      }\n    };\n  });\n\n  CodeMirror.registerHelper(\"fold\", \"auto\", function(cm, start) {\n    var helpers = cm.getHelpers(start, \"fold\");\n    for (var i = 0; i < helpers.length; i++) {\n      var cur = helpers[i](cm, start);\n      if (cur) return cur;\n    }\n  });\n\n  var defaultOptions = {\n    rangeFinder: CodeMirror.fold.auto,\n    widget: \"\\u2194\",\n    minFoldSize: 0,\n    scanUp: false\n  };\n\n  CodeMirror.defineOption(\"foldOptions\", null);\n\n  function getOption(cm, options, name) {\n    if (options && options[name] !== undefined)\n      return options[name];\n    var editorOptions = cm.options.foldOptions;\n    if (editorOptions && editorOptions[name] !== undefined)\n      return editorOptions[name];\n    return defaultOptions[name];\n  }\n\n  CodeMirror.defineExtension(\"foldOption\", function(options, name) {\n    return getOption(this, options, name);\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/fold/foldgutter.css",
    "content": ".CodeMirror-foldmarker {\n  color: blue;\n  text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px;\n  font-family: arial;\n  line-height: .3;\n  cursor: pointer;\n}\n.CodeMirror-foldgutter {\n  width: .7em;\n}\n.CodeMirror-foldgutter-open,\n.CodeMirror-foldgutter-folded {\n  cursor: pointer;\n}\n.CodeMirror-foldgutter-open:after {\n  content: \"\\25BE\";\n}\n.CodeMirror-foldgutter-folded:after {\n  content: \"\\25B8\";\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/fold/foldgutter.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"./foldcode\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"./foldcode\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineOption(\"foldGutter\", false, function(cm, val, old) {\n    if (old && old != CodeMirror.Init) {\n      cm.clearGutter(cm.state.foldGutter.options.gutter);\n      cm.state.foldGutter = null;\n      cm.off(\"gutterClick\", onGutterClick);\n      cm.off(\"change\", onChange);\n      cm.off(\"viewportChange\", onViewportChange);\n      cm.off(\"fold\", onFold);\n      cm.off(\"unfold\", onFold);\n      cm.off(\"swapDoc\", updateInViewport);\n    }\n    if (val) {\n      cm.state.foldGutter = new State(parseOptions(val));\n      updateInViewport(cm);\n      cm.on(\"gutterClick\", onGutterClick);\n      cm.on(\"change\", onChange);\n      cm.on(\"viewportChange\", onViewportChange);\n      cm.on(\"fold\", onFold);\n      cm.on(\"unfold\", onFold);\n      cm.on(\"swapDoc\", updateInViewport);\n    }\n  });\n\n  var Pos = CodeMirror.Pos;\n\n  function State(options) {\n    this.options = options;\n    this.from = this.to = 0;\n  }\n\n  function parseOptions(opts) {\n    if (opts === true) opts = {};\n    if (opts.gutter == null) opts.gutter = \"CodeMirror-foldgutter\";\n    if (opts.indicatorOpen == null) opts.indicatorOpen = \"CodeMirror-foldgutter-open\";\n    if (opts.indicatorFolded == null) opts.indicatorFolded = \"CodeMirror-foldgutter-folded\";\n    return opts;\n  }\n\n  function isFolded(cm, line) {\n    var marks = cm.findMarksAt(Pos(line));\n    for (var i = 0; i < marks.length; ++i)\n      if (marks[i].__isFold && marks[i].find().from.line == line) return true;\n  }\n\n  function marker(spec) {\n    if (typeof spec == \"string\") {\n      var elt = document.createElement(\"div\");\n      elt.className = spec + \" CodeMirror-guttermarker-subtle\";\n      return elt;\n    } else {\n      return spec.cloneNode(true);\n    }\n  }\n\n  function updateFoldInfo(cm, from, to) {\n    var opts = cm.state.foldGutter.options, cur = from;\n    var minSize = cm.foldOption(opts, \"minFoldSize\");\n    var func = cm.foldOption(opts, \"rangeFinder\");\n    cm.eachLine(from, to, function(line) {\n      var mark = null;\n      if (isFolded(cm, cur)) {\n        mark = marker(opts.indicatorFolded);\n      } else {\n        var pos = Pos(cur, 0);\n        var range = func && func(cm, pos);\n        if (range && range.to.line - range.from.line >= minSize)\n          mark = marker(opts.indicatorOpen);\n      }\n      cm.setGutterMarker(line, opts.gutter, mark);\n      ++cur;\n    });\n  }\n\n  function updateInViewport(cm) {\n    var vp = cm.getViewport(), state = cm.state.foldGutter;\n    if (!state) return;\n    cm.operation(function() {\n      updateFoldInfo(cm, vp.from, vp.to);\n    });\n    state.from = vp.from; state.to = vp.to;\n  }\n\n  function onGutterClick(cm, line, gutter) {\n    var state = cm.state.foldGutter;\n    if (!state) return;\n    var opts = state.options;\n    if (gutter != opts.gutter) return;\n    cm.foldCode(Pos(line, 0), opts.rangeFinder);\n  }\n\n  function onChange(cm) {\n    var state = cm.state.foldGutter;\n    if (!state) return;\n    var opts = state.options;\n    state.from = state.to = 0;\n    clearTimeout(state.changeUpdate);\n    state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600);\n  }\n\n  function onViewportChange(cm) {\n    var state = cm.state.foldGutter;\n    if (!state) return;\n    var opts = state.options;\n    clearTimeout(state.changeUpdate);\n    state.changeUpdate = setTimeout(function() {\n      var vp = cm.getViewport();\n      if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n        updateInViewport(cm);\n      } else {\n        cm.operation(function() {\n          if (vp.from < state.from) {\n            updateFoldInfo(cm, vp.from, state.from);\n            state.from = vp.from;\n          }\n          if (vp.to > state.to) {\n            updateFoldInfo(cm, state.to, vp.to);\n            state.to = vp.to;\n          }\n        });\n      }\n    }, opts.updateViewportTimeSpan || 400);\n  }\n\n  function onFold(cm, from) {\n    var state = cm.state.foldGutter;\n    if (!state) return;\n    var line = from.line;\n    if (line >= state.from && line < state.to)\n      updateFoldInfo(cm, line, line + 1);\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/fold/indent-fold.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerHelper(\"fold\", \"indent\", function(cm, start) {\n  var tabSize = cm.getOption(\"tabSize\"), firstLine = cm.getLine(start.line);\n  if (!/\\S/.test(firstLine)) return;\n  var getIndent = function(line) {\n    return CodeMirror.countColumn(line, null, tabSize);\n  };\n  var myIndent = getIndent(firstLine);\n  var lastLineInFold = null;\n  // Go through lines until we find a line that definitely doesn't belong in\n  // the block we're folding, or to the end.\n  for (var i = start.line + 1, end = cm.lastLine(); i <= end; ++i) {\n    var curLine = cm.getLine(i);\n    var curIndent = getIndent(curLine);\n    if (curIndent > myIndent) {\n      // Lines with a greater indent are considered part of the block.\n      lastLineInFold = i;\n    } else if (!/\\S/.test(curLine)) {\n      // Empty lines might be breaks within the block we're trying to fold.\n    } else {\n      // A non-empty line at an indent equal to or less than ours marks the\n      // start of another block.\n      break;\n    }\n  }\n  if (lastLineInFold) return {\n    from: CodeMirror.Pos(start.line, firstLine.length),\n    to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length)\n  };\n});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/fold/markdown-fold.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerHelper(\"fold\", \"markdown\", function(cm, start) {\n  var maxDepth = 100;\n\n  function isHeader(lineNo) {\n    var tokentype = cm.getTokenTypeAt(CodeMirror.Pos(lineNo, 0));\n    return tokentype && /\\bheader\\b/.test(tokentype);\n  }\n\n  function headerLevel(lineNo, line, nextLine) {\n    var match = line && line.match(/^#+/);\n    if (match && isHeader(lineNo)) return match[0].length;\n    match = nextLine && nextLine.match(/^[=\\-]+\\s*$/);\n    if (match && isHeader(lineNo + 1)) return nextLine[0] == \"=\" ? 1 : 2;\n    return maxDepth;\n  }\n\n  var firstLine = cm.getLine(start.line), nextLine = cm.getLine(start.line + 1);\n  var level = headerLevel(start.line, firstLine, nextLine);\n  if (level === maxDepth) return undefined;\n\n  var lastLineNo = cm.lastLine();\n  var end = start.line, nextNextLine = cm.getLine(end + 2);\n  while (end < lastLineNo) {\n    if (headerLevel(end + 1, nextLine, nextNextLine) <= level) break;\n    ++end;\n    nextLine = nextNextLine;\n    nextNextLine = cm.getLine(end + 2);\n  }\n\n  return {\n    from: CodeMirror.Pos(start.line, firstLine.length),\n    to: CodeMirror.Pos(end, cm.getLine(end).length)\n  };\n});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/fold/xml-fold.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var Pos = CodeMirror.Pos;\n  function cmp(a, b) { return a.line - b.line || a.ch - b.ch; }\n\n  var nameStartChar = \"A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n  var nameChar = nameStartChar + \"\\-\\:\\.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n  var xmlTagStart = new RegExp(\"<(/?)([\" + nameStartChar + \"][\" + nameChar + \"]*)\", \"g\");\n\n  function Iter(cm, line, ch, range) {\n    this.line = line; this.ch = ch;\n    this.cm = cm; this.text = cm.getLine(line);\n    this.min = range ? range.from : cm.firstLine();\n    this.max = range ? range.to - 1 : cm.lastLine();\n  }\n\n  function tagAt(iter, ch) {\n    var type = iter.cm.getTokenTypeAt(Pos(iter.line, ch));\n    return type && /\\btag\\b/.test(type);\n  }\n\n  function nextLine(iter) {\n    if (iter.line >= iter.max) return;\n    iter.ch = 0;\n    iter.text = iter.cm.getLine(++iter.line);\n    return true;\n  }\n  function prevLine(iter) {\n    if (iter.line <= iter.min) return;\n    iter.text = iter.cm.getLine(--iter.line);\n    iter.ch = iter.text.length;\n    return true;\n  }\n\n  function toTagEnd(iter) {\n    for (;;) {\n      var gt = iter.text.indexOf(\">\", iter.ch);\n      if (gt == -1) { if (nextLine(iter)) continue; else return; }\n      if (!tagAt(iter, gt + 1)) { iter.ch = gt + 1; continue; }\n      var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n      var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n      iter.ch = gt + 1;\n      return selfClose ? \"selfClose\" : \"regular\";\n    }\n  }\n  function toTagStart(iter) {\n    for (;;) {\n      var lt = iter.ch ? iter.text.lastIndexOf(\"<\", iter.ch - 1) : -1;\n      if (lt == -1) { if (prevLine(iter)) continue; else return; }\n      if (!tagAt(iter, lt + 1)) { iter.ch = lt; continue; }\n      xmlTagStart.lastIndex = lt;\n      iter.ch = lt;\n      var match = xmlTagStart.exec(iter.text);\n      if (match && match.index == lt) return match;\n    }\n  }\n\n  function toNextTag(iter) {\n    for (;;) {\n      xmlTagStart.lastIndex = iter.ch;\n      var found = xmlTagStart.exec(iter.text);\n      if (!found) { if (nextLine(iter)) continue; else return; }\n      if (!tagAt(iter, found.index + 1)) { iter.ch = found.index + 1; continue; }\n      iter.ch = found.index + found[0].length;\n      return found;\n    }\n  }\n  function toPrevTag(iter) {\n    for (;;) {\n      var gt = iter.ch ? iter.text.lastIndexOf(\">\", iter.ch - 1) : -1;\n      if (gt == -1) { if (prevLine(iter)) continue; else return; }\n      if (!tagAt(iter, gt + 1)) { iter.ch = gt; continue; }\n      var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n      var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n      iter.ch = gt + 1;\n      return selfClose ? \"selfClose\" : \"regular\";\n    }\n  }\n\n  function findMatchingClose(iter, tag) {\n    var stack = [];\n    for (;;) {\n      var next = toNextTag(iter), end, startLine = iter.line, startCh = iter.ch - (next ? next[0].length : 0);\n      if (!next || !(end = toTagEnd(iter))) return;\n      if (end == \"selfClose\") continue;\n      if (next[1]) { // closing tag\n        for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == next[2]) {\n          stack.length = i;\n          break;\n        }\n        if (i < 0 && (!tag || tag == next[2])) return {\n          tag: next[2],\n          from: Pos(startLine, startCh),\n          to: Pos(iter.line, iter.ch)\n        };\n      } else { // opening tag\n        stack.push(next[2]);\n      }\n    }\n  }\n  function findMatchingOpen(iter, tag) {\n    var stack = [];\n    for (;;) {\n      var prev = toPrevTag(iter);\n      if (!prev) return;\n      if (prev == \"selfClose\") { toTagStart(iter); continue; }\n      var endLine = iter.line, endCh = iter.ch;\n      var start = toTagStart(iter);\n      if (!start) return;\n      if (start[1]) { // closing tag\n        stack.push(start[2]);\n      } else { // opening tag\n        for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == start[2]) {\n          stack.length = i;\n          break;\n        }\n        if (i < 0 && (!tag || tag == start[2])) return {\n          tag: start[2],\n          from: Pos(iter.line, iter.ch),\n          to: Pos(endLine, endCh)\n        };\n      }\n    }\n  }\n\n  CodeMirror.registerHelper(\"fold\", \"xml\", function(cm, start) {\n    var iter = new Iter(cm, start.line, 0);\n    for (;;) {\n      var openTag = toNextTag(iter), end;\n      if (!openTag || iter.line != start.line || !(end = toTagEnd(iter))) return;\n      if (!openTag[1] && end != \"selfClose\") {\n        var start = Pos(iter.line, iter.ch);\n        var close = findMatchingClose(iter, openTag[2]);\n        return close && {from: start, to: close.from};\n      }\n    }\n  });\n  CodeMirror.findMatchingTag = function(cm, pos, range) {\n    var iter = new Iter(cm, pos.line, pos.ch, range);\n    if (iter.text.indexOf(\">\") == -1 && iter.text.indexOf(\"<\") == -1) return;\n    var end = toTagEnd(iter), to = end && Pos(iter.line, iter.ch);\n    var start = end && toTagStart(iter);\n    if (!end || !start || cmp(iter, pos) > 0) return;\n    var here = {from: Pos(iter.line, iter.ch), to: to, tag: start[2]};\n    if (end == \"selfClose\") return {open: here, close: null, at: \"open\"};\n\n    if (start[1]) { // closing tag\n      return {open: findMatchingOpen(iter, start[2]), close: here, at: \"close\"};\n    } else { // opening tag\n      iter = new Iter(cm, to.line, to.ch, range);\n      return {open: here, close: findMatchingClose(iter, start[2]), at: \"open\"};\n    }\n  };\n\n  CodeMirror.findEnclosingTag = function(cm, pos, range) {\n    var iter = new Iter(cm, pos.line, pos.ch, range);\n    for (;;) {\n      var open = findMatchingOpen(iter);\n      if (!open) break;\n      var forward = new Iter(cm, pos.line, pos.ch, range);\n      var close = findMatchingClose(forward, open.tag);\n      if (close) return {open: open, close: close};\n    }\n  };\n\n  // Used by addon/edit/closetag.js\n  CodeMirror.scanForClosingTag = function(cm, pos, name, end) {\n    var iter = new Iter(cm, pos.line, pos.ch, end ? {from: 0, to: end} : null);\n    return findMatchingClose(iter, name);\n  };\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/hint/anyword-hint.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var WORD = /[\\w$]+/, RANGE = 500;\n\n  CodeMirror.registerHelper(\"hint\", \"anyword\", function(editor, options) {\n    var word = options && options.word || WORD;\n    var range = options && options.range || RANGE;\n    var cur = editor.getCursor(), curLine = editor.getLine(cur.line);\n    var end = cur.ch, start = end;\n    while (start && word.test(curLine.charAt(start - 1))) --start;\n    var curWord = start != end && curLine.slice(start, end);\n\n    var list = [], seen = {};\n    var re = new RegExp(word.source, \"g\");\n    for (var dir = -1; dir <= 1; dir += 2) {\n      var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;\n      for (; line != endLine; line += dir) {\n        var text = editor.getLine(line), m;\n        while (m = re.exec(text)) {\n          if (line == cur.line && m[0] === curWord) continue;\n          if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) {\n            seen[m[0]] = true;\n            list.push(m[0]);\n          }\n        }\n      }\n    }\n    return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/hint/css-hint.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../../mode/css/css\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../../mode/css/css\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var pseudoClasses = {link: 1, visited: 1, active: 1, hover: 1, focus: 1,\n                       \"first-letter\": 1, \"first-line\": 1, \"first-child\": 1,\n                       before: 1, after: 1, lang: 1};\n\n  CodeMirror.registerHelper(\"hint\", \"css\", function(cm) {\n    var cur = cm.getCursor(), token = cm.getTokenAt(cur);\n    var inner = CodeMirror.innerMode(cm.getMode(), token.state);\n    if (inner.mode.name != \"css\") return;\n\n    var start = token.start, end = cur.ch, word = token.string.slice(0, end - start);\n    if (/[^\\w$_-]/.test(word)) {\n      word = \"\"; start = end = cur.ch;\n    }\n\n    var spec = CodeMirror.resolveMode(\"text/css\");\n\n    var result = [];\n    function add(keywords) {\n      for (var name in keywords)\n        if (!word || name.lastIndexOf(word, 0) == 0)\n          result.push(name);\n    }\n\n    var st = inner.state.state;\n    if (st == \"pseudo\" || token.type == \"variable-3\") {\n      add(pseudoClasses);\n    } else if (st == \"block\" || st == \"maybeprop\") {\n      add(spec.propertyKeywords);\n    } else if (st == \"prop\" || st == \"parens\" || st == \"at\" || st == \"params\") {\n      add(spec.valueKeywords);\n      add(spec.colorKeywords);\n    } else if (st == \"media\" || st == \"media_parens\") {\n      add(spec.mediaTypes);\n      add(spec.mediaFeatures);\n    }\n\n    if (result.length) return {\n      list: result,\n      from: CodeMirror.Pos(cur.line, start),\n      to: CodeMirror.Pos(cur.line, end)\n    };\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/hint/html-hint.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"./xml-hint\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"./xml-hint\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var langs = \"ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu\".split(\" \");\n  var targets = [\"_blank\", \"_self\", \"_top\", \"_parent\"];\n  var charsets = [\"ascii\", \"utf-8\", \"utf-16\", \"latin1\", \"latin1\"];\n  var methods = [\"get\", \"post\", \"put\", \"delete\"];\n  var encs = [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"];\n  var media = [\"all\", \"screen\", \"print\", \"embossed\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\", \"tty\", \"tv\", \"speech\",\n               \"3d-glasses\", \"resolution [>][<][=] [X]\", \"device-aspect-ratio: X/Y\", \"orientation:portrait\",\n               \"orientation:landscape\", \"device-height: [X]\", \"device-width: [X]\"];\n  var s = { attrs: {} }; // Simple tag, reused for a whole lot of tags\n\n  var data = {\n    a: {\n      attrs: {\n        href: null, ping: null, type: null,\n        media: media,\n        target: targets,\n        hreflang: langs\n      }\n    },\n    abbr: s,\n    acronym: s,\n    address: s,\n    applet: s,\n    area: {\n      attrs: {\n        alt: null, coords: null, href: null, target: null, ping: null,\n        media: media, hreflang: langs, type: null,\n        shape: [\"default\", \"rect\", \"circle\", \"poly\"]\n      }\n    },\n    article: s,\n    aside: s,\n    audio: {\n      attrs: {\n        src: null, mediagroup: null,\n        crossorigin: [\"anonymous\", \"use-credentials\"],\n        preload: [\"none\", \"metadata\", \"auto\"],\n        autoplay: [\"\", \"autoplay\"],\n        loop: [\"\", \"loop\"],\n        controls: [\"\", \"controls\"]\n      }\n    },\n    b: s,\n    base: { attrs: { href: null, target: targets } },\n    basefont: s,\n    bdi: s,\n    bdo: s,\n    big: s,\n    blockquote: { attrs: { cite: null } },\n    body: s,\n    br: s,\n    button: {\n      attrs: {\n        form: null, formaction: null, name: null, value: null,\n        autofocus: [\"\", \"autofocus\"],\n        disabled: [\"\", \"autofocus\"],\n        formenctype: encs,\n        formmethod: methods,\n        formnovalidate: [\"\", \"novalidate\"],\n        formtarget: targets,\n        type: [\"submit\", \"reset\", \"button\"]\n      }\n    },\n    canvas: { attrs: { width: null, height: null } },\n    caption: s,\n    center: s,\n    cite: s,\n    code: s,\n    col: { attrs: { span: null } },\n    colgroup: { attrs: { span: null } },\n    command: {\n      attrs: {\n        type: [\"command\", \"checkbox\", \"radio\"],\n        label: null, icon: null, radiogroup: null, command: null, title: null,\n        disabled: [\"\", \"disabled\"],\n        checked: [\"\", \"checked\"]\n      }\n    },\n    data: { attrs: { value: null } },\n    datagrid: { attrs: { disabled: [\"\", \"disabled\"], multiple: [\"\", \"multiple\"] } },\n    datalist: { attrs: { data: null } },\n    dd: s,\n    del: { attrs: { cite: null, datetime: null } },\n    details: { attrs: { open: [\"\", \"open\"] } },\n    dfn: s,\n    dir: s,\n    div: s,\n    dl: s,\n    dt: s,\n    em: s,\n    embed: { attrs: { src: null, type: null, width: null, height: null } },\n    eventsource: { attrs: { src: null } },\n    fieldset: { attrs: { disabled: [\"\", \"disabled\"], form: null, name: null } },\n    figcaption: s,\n    figure: s,\n    font: s,\n    footer: s,\n    form: {\n      attrs: {\n        action: null, name: null,\n        \"accept-charset\": charsets,\n        autocomplete: [\"on\", \"off\"],\n        enctype: encs,\n        method: methods,\n        novalidate: [\"\", \"novalidate\"],\n        target: targets\n      }\n    },\n    frame: s,\n    frameset: s,\n    h1: s, h2: s, h3: s, h4: s, h5: s, h6: s,\n    head: {\n      attrs: {},\n      children: [\"title\", \"base\", \"link\", \"style\", \"meta\", \"script\", \"noscript\", \"command\"]\n    },\n    header: s,\n    hgroup: s,\n    hr: s,\n    html: {\n      attrs: { manifest: null },\n      children: [\"head\", \"body\"]\n    },\n    i: s,\n    iframe: {\n      attrs: {\n        src: null, srcdoc: null, name: null, width: null, height: null,\n        sandbox: [\"allow-top-navigation\", \"allow-same-origin\", \"allow-forms\", \"allow-scripts\"],\n        seamless: [\"\", \"seamless\"]\n      }\n    },\n    img: {\n      attrs: {\n        alt: null, src: null, ismap: null, usemap: null, width: null, height: null,\n        crossorigin: [\"anonymous\", \"use-credentials\"]\n      }\n    },\n    input: {\n      attrs: {\n        alt: null, dirname: null, form: null, formaction: null,\n        height: null, list: null, max: null, maxlength: null, min: null,\n        name: null, pattern: null, placeholder: null, size: null, src: null,\n        step: null, value: null, width: null,\n        accept: [\"audio/*\", \"video/*\", \"image/*\"],\n        autocomplete: [\"on\", \"off\"],\n        autofocus: [\"\", \"autofocus\"],\n        checked: [\"\", \"checked\"],\n        disabled: [\"\", \"disabled\"],\n        formenctype: encs,\n        formmethod: methods,\n        formnovalidate: [\"\", \"novalidate\"],\n        formtarget: targets,\n        multiple: [\"\", \"multiple\"],\n        readonly: [\"\", \"readonly\"],\n        required: [\"\", \"required\"],\n        type: [\"hidden\", \"text\", \"search\", \"tel\", \"url\", \"email\", \"password\", \"datetime\", \"date\", \"month\",\n               \"week\", \"time\", \"datetime-local\", \"number\", \"range\", \"color\", \"checkbox\", \"radio\",\n               \"file\", \"submit\", \"image\", \"reset\", \"button\"]\n      }\n    },\n    ins: { attrs: { cite: null, datetime: null } },\n    kbd: s,\n    keygen: {\n      attrs: {\n        challenge: null, form: null, name: null,\n        autofocus: [\"\", \"autofocus\"],\n        disabled: [\"\", \"disabled\"],\n        keytype: [\"RSA\"]\n      }\n    },\n    label: { attrs: { \"for\": null, form: null } },\n    legend: s,\n    li: { attrs: { value: null } },\n    link: {\n      attrs: {\n        href: null, type: null,\n        hreflang: langs,\n        media: media,\n        sizes: [\"all\", \"16x16\", \"16x16 32x32\", \"16x16 32x32 64x64\"]\n      }\n    },\n    map: { attrs: { name: null } },\n    mark: s,\n    menu: { attrs: { label: null, type: [\"list\", \"context\", \"toolbar\"] } },\n    meta: {\n      attrs: {\n        content: null,\n        charset: charsets,\n        name: [\"viewport\", \"application-name\", \"author\", \"description\", \"generator\", \"keywords\"],\n        \"http-equiv\": [\"content-language\", \"content-type\", \"default-style\", \"refresh\"]\n      }\n    },\n    meter: { attrs: { value: null, min: null, low: null, high: null, max: null, optimum: null } },\n    nav: s,\n    noframes: s,\n    noscript: s,\n    object: {\n      attrs: {\n        data: null, type: null, name: null, usemap: null, form: null, width: null, height: null,\n        typemustmatch: [\"\", \"typemustmatch\"]\n      }\n    },\n    ol: { attrs: { reversed: [\"\", \"reversed\"], start: null, type: [\"1\", \"a\", \"A\", \"i\", \"I\"] } },\n    optgroup: { attrs: { disabled: [\"\", \"disabled\"], label: null } },\n    option: { attrs: { disabled: [\"\", \"disabled\"], label: null, selected: [\"\", \"selected\"], value: null } },\n    output: { attrs: { \"for\": null, form: null, name: null } },\n    p: s,\n    param: { attrs: { name: null, value: null } },\n    pre: s,\n    progress: { attrs: { value: null, max: null } },\n    q: { attrs: { cite: null } },\n    rp: s,\n    rt: s,\n    ruby: s,\n    s: s,\n    samp: s,\n    script: {\n      attrs: {\n        type: [\"text/javascript\"],\n        src: null,\n        async: [\"\", \"async\"],\n        defer: [\"\", \"defer\"],\n        charset: charsets\n      }\n    },\n    section: s,\n    select: {\n      attrs: {\n        form: null, name: null, size: null,\n        autofocus: [\"\", \"autofocus\"],\n        disabled: [\"\", \"disabled\"],\n        multiple: [\"\", \"multiple\"]\n      }\n    },\n    small: s,\n    source: { attrs: { src: null, type: null, media: null } },\n    span: s,\n    strike: s,\n    strong: s,\n    style: {\n      attrs: {\n        type: [\"text/css\"],\n        media: media,\n        scoped: null\n      }\n    },\n    sub: s,\n    summary: s,\n    sup: s,\n    table: s,\n    tbody: s,\n    td: { attrs: { colspan: null, rowspan: null, headers: null } },\n    textarea: {\n      attrs: {\n        dirname: null, form: null, maxlength: null, name: null, placeholder: null,\n        rows: null, cols: null,\n        autofocus: [\"\", \"autofocus\"],\n        disabled: [\"\", \"disabled\"],\n        readonly: [\"\", \"readonly\"],\n        required: [\"\", \"required\"],\n        wrap: [\"soft\", \"hard\"]\n      }\n    },\n    tfoot: s,\n    th: { attrs: { colspan: null, rowspan: null, headers: null, scope: [\"row\", \"col\", \"rowgroup\", \"colgroup\"] } },\n    thead: s,\n    time: { attrs: { datetime: null } },\n    title: s,\n    tr: s,\n    track: {\n      attrs: {\n        src: null, label: null, \"default\": null,\n        kind: [\"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\"],\n        srclang: langs\n      }\n    },\n    tt: s,\n    u: s,\n    ul: s,\n    \"var\": s,\n    video: {\n      attrs: {\n        src: null, poster: null, width: null, height: null,\n        crossorigin: [\"anonymous\", \"use-credentials\"],\n        preload: [\"auto\", \"metadata\", \"none\"],\n        autoplay: [\"\", \"autoplay\"],\n        mediagroup: [\"movie\"],\n        muted: [\"\", \"muted\"],\n        controls: [\"\", \"controls\"]\n      }\n    },\n    wbr: s\n  };\n\n  var globalAttrs = {\n    accesskey: [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n    \"class\": null,\n    contenteditable: [\"true\", \"false\"],\n    contextmenu: null,\n    dir: [\"ltr\", \"rtl\", \"auto\"],\n    draggable: [\"true\", \"false\", \"auto\"],\n    dropzone: [\"copy\", \"move\", \"link\", \"string:\", \"file:\"],\n    hidden: [\"hidden\"],\n    id: null,\n    inert: [\"inert\"],\n    itemid: null,\n    itemprop: null,\n    itemref: null,\n    itemscope: [\"itemscope\"],\n    itemtype: null,\n    lang: [\"en\", \"es\"],\n    spellcheck: [\"true\", \"false\"],\n    style: null,\n    tabindex: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n    title: null,\n    translate: [\"yes\", \"no\"],\n    onclick: null,\n    rel: [\"stylesheet\", \"alternate\", \"author\", \"bookmark\", \"help\", \"license\", \"next\", \"nofollow\", \"noreferrer\", \"prefetch\", \"prev\", \"search\", \"tag\"]\n  };\n  function populate(obj) {\n    for (var attr in globalAttrs) if (globalAttrs.hasOwnProperty(attr))\n      obj.attrs[attr] = globalAttrs[attr];\n  }\n\n  populate(s);\n  for (var tag in data) if (data.hasOwnProperty(tag) && data[tag] != s)\n    populate(data[tag]);\n\n  CodeMirror.htmlSchema = data;\n  function htmlHint(cm, options) {\n    var local = {schemaInfo: data};\n    if (options) for (var opt in options) local[opt] = options[opt];\n    return CodeMirror.hint.xml(cm, local);\n  }\n  CodeMirror.registerHelper(\"hint\", \"html\", htmlHint);\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/hint/javascript-hint.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  var Pos = CodeMirror.Pos;\n\n  function forEach(arr, f) {\n    for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);\n  }\n\n  function arrayContains(arr, item) {\n    if (!Array.prototype.indexOf) {\n      var i = arr.length;\n      while (i--) {\n        if (arr[i] === item) {\n          return true;\n        }\n      }\n      return false;\n    }\n    return arr.indexOf(item) != -1;\n  }\n\n  function scriptHint(editor, keywords, getToken, options) {\n    // Find the token at the cursor\n    var cur = editor.getCursor(), token = getToken(editor, cur);\n    if (/\\b(?:string|comment)\\b/.test(token.type)) return;\n    token.state = CodeMirror.innerMode(editor.getMode(), token.state).state;\n\n    // If it's not a 'word-style' token, ignore the token.\n    if (!/^[\\w$_]*$/.test(token.string)) {\n      token = {start: cur.ch, end: cur.ch, string: \"\", state: token.state,\n               type: token.string == \".\" ? \"property\" : null};\n    } else if (token.end > cur.ch) {\n      token.end = cur.ch;\n      token.string = token.string.slice(0, cur.ch - token.start);\n    }\n\n    var tprop = token;\n    // If it is a property, find out what it is a property of.\n    while (tprop.type == \"property\") {\n      tprop = getToken(editor, Pos(cur.line, tprop.start));\n      if (tprop.string != \".\") return;\n      tprop = getToken(editor, Pos(cur.line, tprop.start));\n      if (!context) var context = [];\n      context.push(tprop);\n    }\n    return {list: getCompletions(token, context, keywords, options),\n            from: Pos(cur.line, token.start),\n            to: Pos(cur.line, token.end)};\n  }\n\n  function javascriptHint(editor, options) {\n    return scriptHint(editor, javascriptKeywords,\n                      function (e, cur) {return e.getTokenAt(cur);},\n                      options);\n  };\n  CodeMirror.registerHelper(\"hint\", \"javascript\", javascriptHint);\n\n  function getCoffeeScriptToken(editor, cur) {\n  // This getToken, it is for coffeescript, imitates the behavior of\n  // getTokenAt method in javascript.js, that is, returning \"property\"\n  // type and treat \".\" as indepenent token.\n    var token = editor.getTokenAt(cur);\n    if (cur.ch == token.start + 1 && token.string.charAt(0) == '.') {\n      token.end = token.start;\n      token.string = '.';\n      token.type = \"property\";\n    }\n    else if (/^\\.[\\w$_]*$/.test(token.string)) {\n      token.type = \"property\";\n      token.start++;\n      token.string = token.string.replace(/\\./, '');\n    }\n    return token;\n  }\n\n  function coffeescriptHint(editor, options) {\n    return scriptHint(editor, coffeescriptKeywords, getCoffeeScriptToken, options);\n  }\n  CodeMirror.registerHelper(\"hint\", \"coffeescript\", coffeescriptHint);\n\n  var stringProps = (\"charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight \" +\n                     \"toUpperCase toLowerCase split concat match replace search\").split(\" \");\n  var arrayProps = (\"length concat join splice push pop shift unshift slice reverse sort indexOf \" +\n                    \"lastIndexOf every some filter forEach map reduce reduceRight \").split(\" \");\n  var funcProps = \"prototype apply call bind\".split(\" \");\n  var javascriptKeywords = (\"break case catch continue debugger default delete do else false finally for function \" +\n                  \"if in instanceof new null return switch throw true try typeof var void while with\").split(\" \");\n  var coffeescriptKeywords = (\"and break catch class continue delete do else extends false finally for \" +\n                  \"if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes\").split(\" \");\n\n  function getCompletions(token, context, keywords, options) {\n    var found = [], start = token.string, global = options && options.globalScope || window;\n    function maybeAdd(str) {\n      if (str.lastIndexOf(start, 0) == 0 && !arrayContains(found, str)) found.push(str);\n    }\n    function gatherCompletions(obj) {\n      if (typeof obj == \"string\") forEach(stringProps, maybeAdd);\n      else if (obj instanceof Array) forEach(arrayProps, maybeAdd);\n      else if (obj instanceof Function) forEach(funcProps, maybeAdd);\n      for (var name in obj) maybeAdd(name);\n    }\n\n    if (context && context.length) {\n      // If this is a property, see if it belongs to some object we can\n      // find in the current environment.\n      var obj = context.pop(), base;\n      if (obj.type && obj.type.indexOf(\"variable\") === 0) {\n        if (options && options.additionalContext)\n          base = options.additionalContext[obj.string];\n        if (!options || options.useGlobalScope !== false)\n          base = base || global[obj.string];\n      } else if (obj.type == \"string\") {\n        base = \"\";\n      } else if (obj.type == \"atom\") {\n        base = 1;\n      } else if (obj.type == \"function\") {\n        if (global.jQuery != null && (obj.string == '$' || obj.string == 'jQuery') &&\n            (typeof global.jQuery == 'function'))\n          base = global.jQuery();\n        else if (global._ != null && (obj.string == '_') && (typeof global._ == 'function'))\n          base = global._();\n      }\n      while (base != null && context.length)\n        base = base[context.pop().string];\n      if (base != null) gatherCompletions(base);\n    } else {\n      // If not, just look in the global object and any local scope\n      // (reading into JS mode internals to get at the local and global variables)\n      for (var v = token.state.localVars; v; v = v.next) maybeAdd(v.name);\n      for (var v = token.state.globalVars; v; v = v.next) maybeAdd(v.name);\n      if (!options || options.useGlobalScope !== false)\n        gatherCompletions(global);\n      forEach(keywords, maybeAdd);\n    }\n    return found;\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/hint/show-hint.css",
    "content": ".CodeMirror-hints {\n  position: absolute;\n  z-index: 10;\n  overflow: hidden;\n  list-style: none;\n\n  margin: 0;\n  padding: 2px;\n\n  -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n  -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n  box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n  border-radius: 3px;\n  border: 1px solid silver;\n\n  background: white;\n  font-size: 90%;\n  font-family: monospace;\n\n  max-height: 20em;\n  overflow-y: auto;\n}\n\n.CodeMirror-hint {\n  margin: 0;\n  padding: 0 4px;\n  border-radius: 2px;\n  max-width: 19em;\n  overflow: hidden;\n  white-space: pre;\n  color: black;\n  cursor: pointer;\n}\n\nli.CodeMirror-hint-active {\n  background: #08f;\n  color: white;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/hint/show-hint.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var HINT_ELEMENT_CLASS        = \"CodeMirror-hint\";\n  var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n  // This is the old interface, kept around for now to stay\n  // backwards-compatible.\n  CodeMirror.showHint = function(cm, getHints, options) {\n    if (!getHints) return cm.showHint(options);\n    if (options && options.async) getHints.async = true;\n    var newOpts = {hint: getHints};\n    if (options) for (var prop in options) newOpts[prop] = options[prop];\n    return cm.showHint(newOpts);\n  };\n\n  var asyncRunID = 0;\n  function retrieveHints(getter, cm, options, then) {\n    if (getter.async) {\n      var id = ++asyncRunID;\n      getter(cm, function(hints) {\n        if (asyncRunID == id) then(hints);\n      }, options);\n    } else {\n      then(getter(cm, options));\n    }\n  }\n\n  CodeMirror.defineExtension(\"showHint\", function(options) {\n    // We want a single cursor position.\n    if (this.listSelections().length > 1 || this.somethingSelected()) return;\n\n    if (this.state.completionActive) this.state.completionActive.close();\n    var completion = this.state.completionActive = new Completion(this, options);\n    var getHints = completion.options.hint;\n    if (!getHints) return;\n\n    CodeMirror.signal(this, \"startCompletion\", this);\n    return retrieveHints(getHints, this, completion.options, function(hints) { completion.showHints(hints); });\n  });\n\n  function Completion(cm, options) {\n    this.cm = cm;\n    this.options = this.buildOptions(options);\n    this.widget = this.onClose = null;\n  }\n\n  Completion.prototype = {\n    close: function() {\n      if (!this.active()) return;\n      this.cm.state.completionActive = null;\n\n      if (this.widget) this.widget.close();\n      if (this.onClose) this.onClose();\n      CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n    },\n\n    active: function() {\n      return this.cm.state.completionActive == this;\n    },\n\n    pick: function(data, i) {\n      var completion = data.list[i];\n      if (completion.hint) completion.hint(this.cm, data, completion);\n      else this.cm.replaceRange(getText(completion), completion.from || data.from,\n                                completion.to || data.to, \"complete\");\n      CodeMirror.signal(data, \"pick\", completion);\n      this.close();\n    },\n\n    showHints: function(data) {\n      if (!data || !data.list.length || !this.active()) return this.close();\n\n      if (this.options.completeSingle && data.list.length == 1)\n        this.pick(data, 0);\n      else\n        this.showWidget(data);\n    },\n\n    showWidget: function(data) {\n      this.widget = new Widget(this, data);\n      CodeMirror.signal(data, \"shown\");\n\n      var debounce = 0, completion = this, finished;\n      var closeOn = this.options.closeCharacters;\n      var startPos = this.cm.getCursor(), startLen = this.cm.getLine(startPos.line).length;\n\n      var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n        return setTimeout(fn, 1000/60);\n      };\n      var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n      function done() {\n        if (finished) return;\n        finished = true;\n        completion.close();\n        completion.cm.off(\"cursorActivity\", activity);\n        if (data) CodeMirror.signal(data, \"close\");\n      }\n\n      function update() {\n        if (finished) return;\n        CodeMirror.signal(data, \"update\");\n        retrieveHints(completion.options.hint, completion.cm, completion.options, finishUpdate);\n      }\n      function finishUpdate(data_) {\n        data = data_;\n        if (finished) return;\n        if (!data || !data.list.length) return done();\n        if (completion.widget) completion.widget.close();\n        completion.widget = new Widget(completion, data);\n      }\n\n      function clearDebounce() {\n        if (debounce) {\n          cancelAnimationFrame(debounce);\n          debounce = 0;\n        }\n      }\n\n      function activity() {\n        clearDebounce();\n        var pos = completion.cm.getCursor(), line = completion.cm.getLine(pos.line);\n        if (pos.line != startPos.line || line.length - pos.ch != startLen - startPos.ch ||\n            pos.ch < startPos.ch || completion.cm.somethingSelected() ||\n            (pos.ch && closeOn.test(line.charAt(pos.ch - 1)))) {\n          completion.close();\n        } else {\n          debounce = requestAnimationFrame(update);\n          if (completion.widget) completion.widget.close();\n        }\n      }\n      this.cm.on(\"cursorActivity\", activity);\n      this.onClose = done;\n    },\n\n    buildOptions: function(options) {\n      var editor = this.cm.options.hintOptions;\n      var out = {};\n      for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n      if (editor) for (var prop in editor)\n        if (editor[prop] !== undefined) out[prop] = editor[prop];\n      if (options) for (var prop in options)\n        if (options[prop] !== undefined) out[prop] = options[prop];\n      return out;\n    }\n  };\n\n  function getText(completion) {\n    if (typeof completion == \"string\") return completion;\n    else return completion.text;\n  }\n\n  function buildKeyMap(completion, handle) {\n    var baseMap = {\n      Up: function() {handle.moveFocus(-1);},\n      Down: function() {handle.moveFocus(1);},\n      PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n      PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n      Home: function() {handle.setFocus(0);},\n      End: function() {handle.setFocus(handle.length - 1);},\n      Enter: handle.pick,\n      Tab: handle.pick,\n      Esc: handle.close\n    };\n    var custom = completion.options.customKeys;\n    var ourMap = custom ? {} : baseMap;\n    function addBinding(key, val) {\n      var bound;\n      if (typeof val != \"string\")\n        bound = function(cm) { return val(cm, handle); };\n      // This mechanism is deprecated\n      else if (baseMap.hasOwnProperty(val))\n        bound = baseMap[val];\n      else\n        bound = val;\n      ourMap[key] = bound;\n    }\n    if (custom)\n      for (var key in custom) if (custom.hasOwnProperty(key))\n        addBinding(key, custom[key]);\n    var extra = completion.options.extraKeys;\n    if (extra)\n      for (var key in extra) if (extra.hasOwnProperty(key))\n        addBinding(key, extra[key]);\n    return ourMap;\n  }\n\n  function getHintElement(hintsElement, el) {\n    while (el && el != hintsElement) {\n      if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n      el = el.parentNode;\n    }\n  }\n\n  function Widget(completion, data) {\n    this.completion = completion;\n    this.data = data;\n    var widget = this, cm = completion.cm;\n\n    var hints = this.hints = document.createElement(\"ul\");\n    hints.className = \"CodeMirror-hints\";\n    this.selectedHint = data.selectedHint || 0;\n\n    var completions = data.list;\n    for (var i = 0; i < completions.length; ++i) {\n      var elt = hints.appendChild(document.createElement(\"li\")), cur = completions[i];\n      var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n      if (cur.className != null) className = cur.className + \" \" + className;\n      elt.className = className;\n      if (cur.render) cur.render(elt, data, cur);\n      else elt.appendChild(document.createTextNode(cur.displayText || getText(cur)));\n      elt.hintId = i;\n    }\n\n    var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n    var left = pos.left, top = pos.bottom, below = true;\n    hints.style.left = left + \"px\";\n    hints.style.top = top + \"px\";\n    // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n    var winW = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth);\n    var winH = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight);\n    (completion.options.container || document.body).appendChild(hints);\n    var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH;\n    if (overlapY > 0) {\n      var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n      if (curTop - height > 0) { // Fits above cursor\n        hints.style.top = (top = pos.top - height) + \"px\";\n        below = false;\n      } else if (height > winH) {\n        hints.style.height = (winH - 5) + \"px\";\n        hints.style.top = (top = pos.bottom - box.top) + \"px\";\n        var cursor = cm.getCursor();\n        if (data.from.ch != cursor.ch) {\n          pos = cm.cursorCoords(cursor);\n          hints.style.left = (left = pos.left) + \"px\";\n          box = hints.getBoundingClientRect();\n        }\n      }\n    }\n    var overlapX = box.right - winW;\n    if (overlapX > 0) {\n      if (box.right - box.left > winW) {\n        hints.style.width = (winW - 5) + \"px\";\n        overlapX -= (box.right - box.left) - winW;\n      }\n      hints.style.left = (left = pos.left - overlapX) + \"px\";\n    }\n\n    cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n      moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n      setFocus: function(n) { widget.changeActive(n); },\n      menuSize: function() { return widget.screenAmount(); },\n      length: completions.length,\n      close: function() { completion.close(); },\n      pick: function() { widget.pick(); },\n      data: data\n    }));\n\n    if (completion.options.closeOnUnfocus) {\n      var closingOnBlur;\n      cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n      cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n    }\n\n    var startScroll = cm.getScrollInfo();\n    cm.on(\"scroll\", this.onScroll = function() {\n      var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n      var newTop = top + startScroll.top - curScroll.top;\n      var point = newTop - (window.pageYOffset || (document.documentElement || document.body).scrollTop);\n      if (!below) point += hints.offsetHeight;\n      if (point <= editor.top || point >= editor.bottom) return completion.close();\n      hints.style.top = newTop + \"px\";\n      hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n    });\n\n    CodeMirror.on(hints, \"dblclick\", function(e) {\n      var t = getHintElement(hints, e.target || e.srcElement);\n      if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n    });\n\n    CodeMirror.on(hints, \"click\", function(e) {\n      var t = getHintElement(hints, e.target || e.srcElement);\n      if (t && t.hintId != null) {\n        widget.changeActive(t.hintId);\n        if (completion.options.completeOnSingleClick) widget.pick();\n      }\n    });\n\n    CodeMirror.on(hints, \"mousedown\", function() {\n      setTimeout(function(){cm.focus();}, 20);\n    });\n\n    CodeMirror.signal(data, \"select\", completions[0], hints.firstChild);\n    return true;\n  }\n\n  Widget.prototype = {\n    close: function() {\n      if (this.completion.widget != this) return;\n      this.completion.widget = null;\n      this.hints.parentNode.removeChild(this.hints);\n      this.completion.cm.removeKeyMap(this.keyMap);\n\n      var cm = this.completion.cm;\n      if (this.completion.options.closeOnUnfocus) {\n        cm.off(\"blur\", this.onBlur);\n        cm.off(\"focus\", this.onFocus);\n      }\n      cm.off(\"scroll\", this.onScroll);\n    },\n\n    pick: function() {\n      this.completion.pick(this.data, this.selectedHint);\n    },\n\n    changeActive: function(i, avoidWrap) {\n      if (i >= this.data.list.length)\n        i = avoidWrap ? this.data.list.length - 1 : 0;\n      else if (i < 0)\n        i = avoidWrap ? 0  : this.data.list.length - 1;\n      if (this.selectedHint == i) return;\n      var node = this.hints.childNodes[this.selectedHint];\n      node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n      node = this.hints.childNodes[this.selectedHint = i];\n      node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n      if (node.offsetTop < this.hints.scrollTop)\n        this.hints.scrollTop = node.offsetTop - 3;\n      else if (node.offsetTop + node.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n        this.hints.scrollTop = node.offsetTop + node.offsetHeight - this.hints.clientHeight + 3;\n      CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n    },\n\n    screenAmount: function() {\n      return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n    }\n  };\n\n  CodeMirror.registerHelper(\"hint\", \"auto\", function(cm, options) {\n    var helpers = cm.getHelpers(cm.getCursor(), \"hint\"), words;\n    if (helpers.length) {\n      for (var i = 0; i < helpers.length; i++) {\n        var cur = helpers[i](cm, options);\n        if (cur && cur.list.length) return cur;\n      }\n    } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n      if (words) return CodeMirror.hint.fromList(cm, {words: words});\n    } else if (CodeMirror.hint.anyword) {\n      return CodeMirror.hint.anyword(cm, options);\n    }\n  });\n\n  CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n    var cur = cm.getCursor(), token = cm.getTokenAt(cur);\n    var found = [];\n    for (var i = 0; i < options.words.length; i++) {\n      var word = options.words[i];\n      if (word.slice(0, token.string.length) == token.string)\n        found.push(word);\n    }\n\n    if (found.length) return {\n      list: found,\n      from: CodeMirror.Pos(cur.line, token.start),\n            to: CodeMirror.Pos(cur.line, token.end)\n    };\n  });\n\n  CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n  var defaultOptions = {\n    hint: CodeMirror.hint.auto,\n    completeSingle: true,\n    alignWithWord: true,\n    closeCharacters: /[\\s()\\[\\]{};:>,]/,\n    closeOnUnfocus: true,\n    completeOnSingleClick: false,\n    container: null,\n    customKeys: null,\n    extraKeys: null\n  };\n\n  CodeMirror.defineOption(\"hintOptions\", null);\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/hint/sql-hint.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../../mode/sql/sql\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../../mode/sql/sql\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var tables;\n  var defaultTable;\n  var keywords;\n  var CONS = {\n    QUERY_DIV: \";\",\n    ALIAS_KEYWORD: \"AS\"\n  };\n  var Pos = CodeMirror.Pos;\n\n  function getKeywords(editor) {\n    var mode = editor.doc.modeOption;\n    if (mode === \"sql\") mode = \"text/x-sql\";\n    return CodeMirror.resolveMode(mode).keywords;\n  }\n\n  function getText(item) {\n    return typeof item == \"string\" ? item : item.text;\n  }\n\n  function getItem(list, item) {\n    if (!list.slice) return list[item];\n    for (var i = list.length - 1; i >= 0; i--) if (getText(list[i]) == item)\n      return list[i];\n  }\n\n  function shallowClone(object) {\n    var result = {};\n    for (var key in object) if (object.hasOwnProperty(key))\n      result[key] = object[key];\n    return result;\n  }\n\n  function match(string, word) {\n    var len = string.length;\n    var sub = getText(word).substr(0, len);\n    return string.toUpperCase() === sub.toUpperCase();\n  }\n\n  function addMatches(result, search, wordlist, formatter) {\n    for (var word in wordlist) {\n      if (!wordlist.hasOwnProperty(word)) continue;\n      if (Array.isArray(wordlist)) {\n        word = wordlist[word];\n      }\n      if (match(search, word)) {\n        result.push(formatter(word));\n      }\n    }\n  }\n\n  function cleanName(name) {\n    // Get rid name from backticks(`) and preceding dot(.)\n    if (name.charAt(0) == \".\") {\n      name = name.substr(1);\n    }\n    return name.replace(/`/g, \"\");\n  }\n\n  function insertBackticks(name) {\n    var nameParts = getText(name).split(\".\");\n    for (var i = 0; i < nameParts.length; i++)\n      nameParts[i] = \"`\" + nameParts[i] + \"`\";\n    var escaped = nameParts.join(\".\");\n    if (typeof name == \"string\") return escaped;\n    name = shallowClone(name);\n    name.text = escaped;\n    return name;\n  }\n\n  function nameCompletion(cur, token, result, editor) {\n    // Try to complete table, colunm names and return start position of completion\n    var useBacktick = false;\n    var nameParts = [];\n    var start = token.start;\n    var cont = true;\n    while (cont) {\n      cont = (token.string.charAt(0) == \".\");\n      useBacktick = useBacktick || (token.string.charAt(0) == \"`\");\n\n      start = token.start;\n      nameParts.unshift(cleanName(token.string));\n\n      token = editor.getTokenAt(Pos(cur.line, token.start));\n      if (token.string == \".\") {\n        cont = true;\n        token = editor.getTokenAt(Pos(cur.line, token.start));\n      }\n    }\n\n    // Try to complete table names\n    var string = nameParts.join(\".\");\n    addMatches(result, string, tables, function(w) {\n      return useBacktick ? insertBackticks(w) : w;\n    });\n\n    // Try to complete columns from defaultTable\n    addMatches(result, string, defaultTable, function(w) {\n      return useBacktick ? insertBackticks(w) : w;\n    });\n\n    // Try to complete columns\n    string = nameParts.pop();\n    var table = nameParts.join(\".\");\n\n    // Check if table is available. If not, find table by Alias\n    if (!getItem(tables, table))\n      table = findTableByAlias(table, editor);\n\n    var columns = getItem(tables, table);\n    if (columns && Array.isArray(tables) && columns.columns)\n      columns = columns.columns;\n\n    if (columns) {\n      addMatches(result, string, columns, function(w) {\n        if (typeof w == \"string\") {\n          w = table + \".\" + w;\n        } else {\n          w = shallowClone(w);\n          w.text = table + \".\" + w.text;\n        }\n        return useBacktick ? insertBackticks(w) : w;\n      });\n    }\n\n    return start;\n  }\n\n  function eachWord(lineText, f) {\n    if (!lineText) return;\n    var excepted = /[,;]/g;\n    var words = lineText.split(\" \");\n    for (var i = 0; i < words.length; i++) {\n      f(words[i]?words[i].replace(excepted, '') : '');\n    }\n  }\n\n  function convertCurToNumber(cur) {\n    // max characters of a line is 999,999.\n    return cur.line + cur.ch / Math.pow(10, 6);\n  }\n\n  function convertNumberToCur(num) {\n    return Pos(Math.floor(num), +num.toString().split('.').pop());\n  }\n\n  function findTableByAlias(alias, editor) {\n    var doc = editor.doc;\n    var fullQuery = doc.getValue();\n    var aliasUpperCase = alias.toUpperCase();\n    var previousWord = \"\";\n    var table = \"\";\n    var separator = [];\n    var validRange = {\n      start: Pos(0, 0),\n      end: Pos(editor.lastLine(), editor.getLineHandle(editor.lastLine()).length)\n    };\n\n    //add separator\n    var indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV);\n    while(indexOfSeparator != -1) {\n      separator.push(doc.posFromIndex(indexOfSeparator));\n      indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV, indexOfSeparator+1);\n    }\n    separator.unshift(Pos(0, 0));\n    separator.push(Pos(editor.lastLine(), editor.getLineHandle(editor.lastLine()).text.length));\n\n    //find valid range\n    var prevItem = 0;\n    var current = convertCurToNumber(editor.getCursor());\n    for (var i=0; i< separator.length; i++) {\n      var _v = convertCurToNumber(separator[i]);\n      if (current > prevItem && current <= _v) {\n        validRange = { start: convertNumberToCur(prevItem), end: convertNumberToCur(_v) };\n        break;\n      }\n      prevItem = _v;\n    }\n\n    var query = doc.getRange(validRange.start, validRange.end, false);\n\n    for (var i = 0; i < query.length; i++) {\n      var lineText = query[i];\n      eachWord(lineText, function(word) {\n        var wordUpperCase = word.toUpperCase();\n        if (wordUpperCase === aliasUpperCase && getItem(tables, previousWord))\n          table = previousWord;\n        if (wordUpperCase !== CONS.ALIAS_KEYWORD)\n          previousWord = word;\n      });\n      if (table) break;\n    }\n    return table;\n  }\n\n  CodeMirror.registerHelper(\"hint\", \"sql\", function(editor, options) {\n    tables = (options && options.tables) || {};\n    var defaultTableName = options && options.defaultTable;\n    defaultTable = (defaultTableName && getItem(tables, defaultTableName)) || [];\n    keywords = keywords || getKeywords(editor);\n\n    var cur = editor.getCursor();\n    var result = [];\n    var token = editor.getTokenAt(cur), start, end, search;\n    if (token.end > cur.ch) {\n      token.end = cur.ch;\n      token.string = token.string.slice(0, cur.ch - token.start);\n    }\n\n    if (token.string.match(/^[.`\\w@]\\w*$/)) {\n      search = token.string;\n      start = token.start;\n      end = token.end;\n    } else {\n      start = end = cur.ch;\n      search = \"\";\n    }\n    if (search.charAt(0) == \".\" || search.charAt(0) == \"`\") {\n      start = nameCompletion(cur, token, result, editor);\n    } else {\n      addMatches(result, search, tables, function(w) {return w;});\n      addMatches(result, search, defaultTable, function(w) {return w;});\n      addMatches(result, search, keywords, function(w) {return w.toUpperCase();});\n    }\n\n    return {list: result, from: Pos(cur.line, start), to: Pos(cur.line, end)};\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/hint/xml-hint.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var Pos = CodeMirror.Pos;\n\n  function getHints(cm, options) {\n    var tags = options && options.schemaInfo;\n    var quote = (options && options.quoteChar) || '\"';\n    if (!tags) return;\n    var cur = cm.getCursor(), token = cm.getTokenAt(cur);\n    if (token.end > cur.ch) {\n      token.end = cur.ch;\n      token.string = token.string.slice(0, cur.ch - token.start);\n    }\n    var inner = CodeMirror.innerMode(cm.getMode(), token.state);\n    if (inner.mode.name != \"xml\") return;\n    var result = [], replaceToken = false, prefix;\n    var tag = /\\btag\\b/.test(token.type) && !/>$/.test(token.string);\n    var tagName = tag && /^\\w/.test(token.string), tagStart;\n\n    if (tagName) {\n      var before = cm.getLine(cur.line).slice(Math.max(0, token.start - 2), token.start);\n      var tagType = /<\\/$/.test(before) ? \"close\" : /<$/.test(before) ? \"open\" : null;\n      if (tagType) tagStart = token.start - (tagType == \"close\" ? 2 : 1);\n    } else if (tag && token.string == \"<\") {\n      tagType = \"open\";\n    } else if (tag && token.string == \"</\") {\n      tagType = \"close\";\n    }\n\n    if (!tag && !inner.state.tagName || tagType) {\n      if (tagName)\n        prefix = token.string;\n      replaceToken = tagType;\n      var cx = inner.state.context, curTag = cx && tags[cx.tagName];\n      var childList = cx ? curTag && curTag.children : tags[\"!top\"];\n      if (childList && tagType != \"close\") {\n        for (var i = 0; i < childList.length; ++i) if (!prefix || childList[i].lastIndexOf(prefix, 0) == 0)\n          result.push(\"<\" + childList[i]);\n      } else if (tagType != \"close\") {\n        for (var name in tags)\n          if (tags.hasOwnProperty(name) && name != \"!top\" && name != \"!attrs\" && (!prefix || name.lastIndexOf(prefix, 0) == 0))\n            result.push(\"<\" + name);\n      }\n      if (cx && (!prefix || tagType == \"close\" && cx.tagName.lastIndexOf(prefix, 0) == 0))\n        result.push(\"</\" + cx.tagName + \">\");\n    } else {\n      // Attribute completion\n      var curTag = tags[inner.state.tagName], attrs = curTag && curTag.attrs;\n      var globalAttrs = tags[\"!attrs\"];\n      if (!attrs && !globalAttrs) return;\n      if (!attrs) {\n        attrs = globalAttrs;\n      } else if (globalAttrs) { // Combine tag-local and global attributes\n        var set = {};\n        for (var nm in globalAttrs) if (globalAttrs.hasOwnProperty(nm)) set[nm] = globalAttrs[nm];\n        for (var nm in attrs) if (attrs.hasOwnProperty(nm)) set[nm] = attrs[nm];\n        attrs = set;\n      }\n      if (token.type == \"string\" || token.string == \"=\") { // A value\n        var before = cm.getRange(Pos(cur.line, Math.max(0, cur.ch - 60)),\n                                 Pos(cur.line, token.type == \"string\" ? token.start : token.end));\n        var atName = before.match(/([^\\s\\u00a0=<>\\\"\\']+)=$/), atValues;\n        if (!atName || !attrs.hasOwnProperty(atName[1]) || !(atValues = attrs[atName[1]])) return;\n        if (typeof atValues == 'function') atValues = atValues.call(this, cm); // Functions can be used to supply values for autocomplete widget\n        if (token.type == \"string\") {\n          prefix = token.string;\n          var n = 0;\n          if (/['\"]/.test(token.string.charAt(0))) {\n            quote = token.string.charAt(0);\n            prefix = token.string.slice(1);\n            n++;\n          }\n          var len = token.string.length;\n          if (/['\"]/.test(token.string.charAt(len - 1))) {\n            quote = token.string.charAt(len - 1);\n            prefix = token.string.substr(n, len - 2);\n          }\n          replaceToken = true;\n        }\n        for (var i = 0; i < atValues.length; ++i) if (!prefix || atValues[i].lastIndexOf(prefix, 0) == 0)\n          result.push(quote + atValues[i] + quote);\n      } else { // An attribute name\n        if (token.type == \"attribute\") {\n          prefix = token.string;\n          replaceToken = true;\n        }\n        for (var attr in attrs) if (attrs.hasOwnProperty(attr) && (!prefix || attr.lastIndexOf(prefix, 0) == 0))\n          result.push(attr);\n      }\n    }\n    return {\n      list: result,\n      from: replaceToken ? Pos(cur.line, tagStart == null ? token.start : tagStart) : cur,\n      to: replaceToken ? Pos(cur.line, token.end) : cur\n    };\n  }\n\n  CodeMirror.registerHelper(\"hint\", \"xml\", getHints);\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/lint/coffeescript-lint.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Depends on coffeelint.js from http://www.coffeelint.org/js/coffeelint.js\n\n// declare global: coffeelint\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerHelper(\"lint\", \"coffeescript\", function(text) {\n  var found = [];\n  var parseError = function(err) {\n    var loc = err.lineNumber;\n    found.push({from: CodeMirror.Pos(loc-1, 0),\n                to: CodeMirror.Pos(loc, 0),\n                severity: err.level,\n                message: err.message});\n  };\n  try {\n    var res = coffeelint.lint(text);\n    for(var i = 0; i < res.length; i++) {\n      parseError(res[i]);\n    }\n  } catch(e) {\n    found.push({from: CodeMirror.Pos(e.location.first_line, 0),\n                to: CodeMirror.Pos(e.location.last_line, e.location.last_column),\n                severity: 'error',\n                message: e.message});\n  }\n  return found;\n});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/lint/css-lint.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Depends on csslint.js from https://github.com/stubbornella/csslint\n\n// declare global: CSSLint\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerHelper(\"lint\", \"css\", function(text) {\n  var found = [];\n  if (!window.CSSLint) return found;\n  var results = CSSLint.verify(text), messages = results.messages, message = null;\n  for ( var i = 0; i < messages.length; i++) {\n    message = messages[i];\n    var startLine = message.line -1, endLine = message.line -1, startCol = message.col -1, endCol = message.col;\n    found.push({\n      from: CodeMirror.Pos(startLine, startCol),\n      to: CodeMirror.Pos(endLine, endCol),\n      message: message.message,\n      severity : message.type\n    });\n  }\n  return found;\n});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/lint/javascript-lint.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n  // declare global: JSHINT\n\n  var bogus = [ \"Dangerous comment\" ];\n\n  var warnings = [ [ \"Expected '{'\",\n                     \"Statement body should be inside '{ }' braces.\" ] ];\n\n  var errors = [ \"Missing semicolon\", \"Extra comma\", \"Missing property name\",\n                 \"Unmatched \", \" and instead saw\", \" is not defined\",\n                 \"Unclosed string\", \"Stopping, unable to continue\" ];\n\n  function validator(text, options) {\n    if (!window.JSHINT) return [];\n    JSHINT(text, options);\n    var errors = JSHINT.data().errors, result = [];\n    if (errors) parseErrors(errors, result);\n    return result;\n  }\n\n  CodeMirror.registerHelper(\"lint\", \"javascript\", validator);\n\n  function cleanup(error) {\n    // All problems are warnings by default\n    fixWith(error, warnings, \"warning\", true);\n    fixWith(error, errors, \"error\");\n\n    return isBogus(error) ? null : error;\n  }\n\n  function fixWith(error, fixes, severity, force) {\n    var description, fix, find, replace, found;\n\n    description = error.description;\n\n    for ( var i = 0; i < fixes.length; i++) {\n      fix = fixes[i];\n      find = (typeof fix === \"string\" ? fix : fix[0]);\n      replace = (typeof fix === \"string\" ? null : fix[1]);\n      found = description.indexOf(find) !== -1;\n\n      if (force || found) {\n        error.severity = severity;\n      }\n      if (found && replace) {\n        error.description = replace;\n      }\n    }\n  }\n\n  function isBogus(error) {\n    var description = error.description;\n    for ( var i = 0; i < bogus.length; i++) {\n      if (description.indexOf(bogus[i]) !== -1) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  function parseErrors(errors, output) {\n    for ( var i = 0; i < errors.length; i++) {\n      var error = errors[i];\n      if (error) {\n        var linetabpositions, index;\n\n        linetabpositions = [];\n\n        // This next block is to fix a problem in jshint. Jshint\n        // replaces\n        // all tabs with spaces then performs some checks. The error\n        // positions (character/space) are then reported incorrectly,\n        // not taking the replacement step into account. Here we look\n        // at the evidence line and try to adjust the character position\n        // to the correct value.\n        if (error.evidence) {\n          // Tab positions are computed once per line and cached\n          var tabpositions = linetabpositions[error.line];\n          if (!tabpositions) {\n            var evidence = error.evidence;\n            tabpositions = [];\n            // ugggh phantomjs does not like this\n            // forEachChar(evidence, function(item, index) {\n            Array.prototype.forEach.call(evidence, function(item,\n                                                            index) {\n              if (item === '\\t') {\n                // First col is 1 (not 0) to match error\n                // positions\n                tabpositions.push(index + 1);\n              }\n            });\n            linetabpositions[error.line] = tabpositions;\n          }\n          if (tabpositions.length > 0) {\n            var pos = error.character;\n            tabpositions.forEach(function(tabposition) {\n              if (pos > tabposition) pos -= 1;\n            });\n            error.character = pos;\n          }\n        }\n\n        var start = error.character - 1, end = start + 1;\n        if (error.evidence) {\n          index = error.evidence.substring(start).search(/.\\b/);\n          if (index > -1) {\n            end += index;\n          }\n        }\n\n        // Convert to format expected by validation service\n        error.description = error.reason;// + \"(jshint)\";\n        error.start = error.character;\n        error.end = end;\n        error = cleanup(error);\n\n        if (error)\n          output.push({message: error.description,\n                       severity: error.severity,\n                       from: CodeMirror.Pos(error.line - 1, start),\n                       to: CodeMirror.Pos(error.line - 1, end)});\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/lint/json-lint.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Depends on jsonlint.js from https://github.com/zaach/jsonlint\n\n// declare global: jsonlint\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerHelper(\"lint\", \"json\", function(text) {\n  var found = [];\n  jsonlint.parseError = function(str, hash) {\n    var loc = hash.loc;\n    found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column),\n                to: CodeMirror.Pos(loc.last_line - 1, loc.last_column),\n                message: str});\n  };\n  try { jsonlint.parse(text); }\n  catch(e) {}\n  return found;\n});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/lint/lint.css",
    "content": "/* The lint marker gutter */\n.CodeMirror-lint-markers {\n  width: 16px;\n}\n\n.CodeMirror-lint-tooltip {\n  background-color: infobackground;\n  border: 1px solid black;\n  border-radius: 4px 4px 4px 4px;\n  color: infotext;\n  font-family: monospace;\n  font-size: 10pt;\n  overflow: hidden;\n  padding: 2px 5px;\n  position: fixed;\n  white-space: pre;\n  white-space: pre-wrap;\n  z-index: 100;\n  max-width: 600px;\n  opacity: 0;\n  transition: opacity .4s;\n  -moz-transition: opacity .4s;\n  -webkit-transition: opacity .4s;\n  -o-transition: opacity .4s;\n  -ms-transition: opacity .4s;\n}\n\n.CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning {\n  background-position: left bottom;\n  background-repeat: repeat-x;\n}\n\n.CodeMirror-lint-mark-error {\n  background-image:\n  url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==\")\n  ;\n}\n\n.CodeMirror-lint-mark-warning {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=\");\n}\n\n.CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning {\n  background-position: center center;\n  background-repeat: no-repeat;\n  cursor: pointer;\n  display: inline-block;\n  height: 16px;\n  width: 16px;\n  vertical-align: middle;\n  position: relative;\n}\n\n.CodeMirror-lint-message-error, .CodeMirror-lint-message-warning {\n  padding-left: 18px;\n  background-position: top left;\n  background-repeat: no-repeat;\n}\n\n.CodeMirror-lint-marker-error, .CodeMirror-lint-message-error {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=\");\n}\n\n.CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=\");\n}\n\n.CodeMirror-lint-marker-multiple {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC\");\n  background-repeat: no-repeat;\n  background-position: right bottom;\n  width: 100%; height: 100%;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/lint/lint.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n  var GUTTER_ID = \"CodeMirror-lint-markers\";\n\n  function showTooltip(e, content) {\n    var tt = document.createElement(\"div\");\n    tt.className = \"CodeMirror-lint-tooltip\";\n    tt.appendChild(content.cloneNode(true));\n    document.body.appendChild(tt);\n\n    function position(e) {\n      if (!tt.parentNode) return CodeMirror.off(document, \"mousemove\", position);\n      tt.style.top = Math.max(0, e.clientY - tt.offsetHeight - 5) + \"px\";\n      tt.style.left = (e.clientX + 5) + \"px\";\n    }\n    CodeMirror.on(document, \"mousemove\", position);\n    position(e);\n    if (tt.style.opacity != null) tt.style.opacity = 1;\n    return tt;\n  }\n  function rm(elt) {\n    if (elt.parentNode) elt.parentNode.removeChild(elt);\n  }\n  function hideTooltip(tt) {\n    if (!tt.parentNode) return;\n    if (tt.style.opacity == null) rm(tt);\n    tt.style.opacity = 0;\n    setTimeout(function() { rm(tt); }, 600);\n  }\n\n  function showTooltipFor(e, content, node) {\n    var tooltip = showTooltip(e, content);\n    function hide() {\n      CodeMirror.off(node, \"mouseout\", hide);\n      if (tooltip) { hideTooltip(tooltip); tooltip = null; }\n    }\n    var poll = setInterval(function() {\n      if (tooltip) for (var n = node;; n = n.parentNode) {\n        if (n && n.nodeType == 11) n = n.host;\n        if (n == document.body) return;\n        if (!n) { hide(); break; }\n      }\n      if (!tooltip) return clearInterval(poll);\n    }, 400);\n    CodeMirror.on(node, \"mouseout\", hide);\n  }\n\n  function LintState(cm, options, hasGutter) {\n    this.marked = [];\n    this.options = options;\n    this.timeout = null;\n    this.hasGutter = hasGutter;\n    this.onMouseOver = function(e) { onMouseOver(cm, e); };\n  }\n\n  function parseOptions(cm, options) {\n    if (options instanceof Function) return {getAnnotations: options};\n    if (!options || options === true) options = {};\n    if (!options.getAnnotations) options.getAnnotations = cm.getHelper(CodeMirror.Pos(0, 0), \"lint\");\n    if (!options.getAnnotations) throw new Error(\"Required option 'getAnnotations' missing (lint addon)\");\n    return options;\n  }\n\n  function clearMarks(cm) {\n    var state = cm.state.lint;\n    if (state.hasGutter) cm.clearGutter(GUTTER_ID);\n    for (var i = 0; i < state.marked.length; ++i)\n      state.marked[i].clear();\n    state.marked.length = 0;\n  }\n\n  function makeMarker(labels, severity, multiple, tooltips) {\n    var marker = document.createElement(\"div\"), inner = marker;\n    marker.className = \"CodeMirror-lint-marker-\" + severity;\n    if (multiple) {\n      inner = marker.appendChild(document.createElement(\"div\"));\n      inner.className = \"CodeMirror-lint-marker-multiple\";\n    }\n\n    if (tooltips != false) CodeMirror.on(inner, \"mouseover\", function(e) {\n      showTooltipFor(e, labels, inner);\n    });\n\n    return marker;\n  }\n\n  function getMaxSeverity(a, b) {\n    if (a == \"error\") return a;\n    else return b;\n  }\n\n  function groupByLine(annotations) {\n    var lines = [];\n    for (var i = 0; i < annotations.length; ++i) {\n      var ann = annotations[i], line = ann.from.line;\n      (lines[line] || (lines[line] = [])).push(ann);\n    }\n    return lines;\n  }\n\n  function annotationTooltip(ann) {\n    var severity = ann.severity;\n    if (!severity) severity = \"error\";\n    var tip = document.createElement(\"div\");\n    tip.className = \"CodeMirror-lint-message-\" + severity;\n    tip.appendChild(document.createTextNode(ann.message));\n    return tip;\n  }\n\n  function startLinting(cm) {\n    var state = cm.state.lint, options = state.options;\n    var passOptions = options.options || options; // Support deprecated passing of `options` property in options\n    if (options.async || options.getAnnotations.async)\n      options.getAnnotations(cm.getValue(), updateLinting, passOptions, cm);\n    else\n      updateLinting(cm, options.getAnnotations(cm.getValue(), passOptions, cm));\n  }\n\n  function updateLinting(cm, annotationsNotSorted) {\n    clearMarks(cm);\n    var state = cm.state.lint, options = state.options;\n\n    var annotations = groupByLine(annotationsNotSorted);\n\n    for (var line = 0; line < annotations.length; ++line) {\n      var anns = annotations[line];\n      if (!anns) continue;\n\n      var maxSeverity = null;\n      var tipLabel = state.hasGutter && document.createDocumentFragment();\n\n      for (var i = 0; i < anns.length; ++i) {\n        var ann = anns[i];\n        var severity = ann.severity;\n        if (!severity) severity = \"error\";\n        maxSeverity = getMaxSeverity(maxSeverity, severity);\n\n        if (options.formatAnnotation) ann = options.formatAnnotation(ann);\n        if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann));\n\n        if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, {\n          className: \"CodeMirror-lint-mark-\" + severity,\n          __annotation: ann\n        }));\n      }\n\n      if (state.hasGutter)\n        cm.setGutterMarker(line, GUTTER_ID, makeMarker(tipLabel, maxSeverity, anns.length > 1,\n                                                       state.options.tooltips));\n    }\n    if (options.onUpdateLinting) options.onUpdateLinting(annotationsNotSorted, annotations, cm);\n  }\n\n  function onChange(cm) {\n    var state = cm.state.lint;\n    clearTimeout(state.timeout);\n    state.timeout = setTimeout(function(){startLinting(cm);}, state.options.delay || 500);\n  }\n\n  function popupSpanTooltip(ann, e) {\n    var target = e.target || e.srcElement;\n    showTooltipFor(e, annotationTooltip(ann), target);\n  }\n\n  function onMouseOver(cm, e) {\n    var target = e.target || e.srcElement;\n    if (!/\\bCodeMirror-lint-mark-/.test(target.className)) return;\n    var box = target.getBoundingClientRect(), x = (box.left + box.right) / 2, y = (box.top + box.bottom) / 2;\n    var spans = cm.findMarksAt(cm.coordsChar({left: x, top: y}, \"client\"));\n    for (var i = 0; i < spans.length; ++i) {\n      var ann = spans[i].__annotation;\n      if (ann) return popupSpanTooltip(ann, e);\n    }\n  }\n\n  CodeMirror.defineOption(\"lint\", false, function(cm, val, old) {\n    if (old && old != CodeMirror.Init) {\n      clearMarks(cm);\n      cm.off(\"change\", onChange);\n      CodeMirror.off(cm.getWrapperElement(), \"mouseover\", cm.state.lint.onMouseOver);\n      delete cm.state.lint;\n    }\n\n    if (val) {\n      var gutters = cm.getOption(\"gutters\"), hasLintGutter = false;\n      for (var i = 0; i < gutters.length; ++i) if (gutters[i] == GUTTER_ID) hasLintGutter = true;\n      var state = cm.state.lint = new LintState(cm, parseOptions(cm, val), hasLintGutter);\n      cm.on(\"change\", onChange);\n      if (state.options.tooltips != false)\n        CodeMirror.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n\n      startLinting(cm);\n    }\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/lint/yaml-lint.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n// Depends on js-yaml.js from https://github.com/nodeca/js-yaml\n\n// declare global: jsyaml\n\nCodeMirror.registerHelper(\"lint\", \"yaml\", function(text) {\n  var found = [];\n  try { jsyaml.load(text); }\n  catch(e) {\n      var loc = e.mark;\n      found.push({ from: CodeMirror.Pos(loc.line, loc.column), to: CodeMirror.Pos(loc.line, loc.column), message: e.message });\n  }\n  return found;\n});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/merge/merge.css",
    "content": ".CodeMirror-merge {\n  position: relative;\n  border: 1px solid #ddd;\n  white-space: pre;\n}\n\n.CodeMirror-merge, .CodeMirror-merge .CodeMirror {\n  height: 350px;\n}\n\n.CodeMirror-merge-2pane .CodeMirror-merge-pane { width: 47%; }\n.CodeMirror-merge-2pane .CodeMirror-merge-gap { width: 6%; }\n.CodeMirror-merge-3pane .CodeMirror-merge-pane { width: 31%; }\n.CodeMirror-merge-3pane .CodeMirror-merge-gap { width: 3.5%; }\n\n.CodeMirror-merge-pane {\n  display: inline-block;\n  white-space: normal;\n  vertical-align: top;\n}\n.CodeMirror-merge-pane-rightmost {\n  position: absolute;\n  right: 0px;\n  z-index: 1;\n}\n\n.CodeMirror-merge-gap {\n  z-index: 2;\n  display: inline-block;\n  height: 100%;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  overflow: hidden;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #ddd;\n  position: relative;\n  background: #f8f8f8;\n}\n\n.CodeMirror-merge-scrolllock-wrap {\n  position: absolute;\n  bottom: 0; left: 50%;\n}\n.CodeMirror-merge-scrolllock {\n  position: relative;\n  left: -50%;\n  cursor: pointer;\n  color: #555;\n  line-height: 1;\n}\n\n.CodeMirror-merge-copybuttons-left, .CodeMirror-merge-copybuttons-right {\n  position: absolute;\n  left: 0; top: 0;\n  right: 0; bottom: 0;\n  line-height: 1;\n}\n\n.CodeMirror-merge-copy {\n  position: absolute;\n  cursor: pointer;\n  color: #44c;\n}\n\n.CodeMirror-merge-copy-reverse {\n  position: absolute;\n  cursor: pointer;\n  color: #44c;\n}\n\n.CodeMirror-merge-copybuttons-left .CodeMirror-merge-copy { left: 2px; }\n.CodeMirror-merge-copybuttons-right .CodeMirror-merge-copy { right: 2px; }\n\n.CodeMirror-merge-r-inserted, .CodeMirror-merge-l-inserted {\n  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12MwuCXy3+CWyH8GBgYGJgYkAABZbAQ9ELXurwAAAABJRU5ErkJggg==);\n  background-position: bottom left;\n  background-repeat: repeat-x;\n}\n\n.CodeMirror-merge-r-deleted, .CodeMirror-merge-l-deleted {\n  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12M4Kyb2/6yY2H8GBgYGJgYkAABURgPz6Ks7wQAAAABJRU5ErkJggg==);\n  background-position: bottom left;\n  background-repeat: repeat-x;\n}\n\n.CodeMirror-merge-r-chunk { background: #ffffe0; }\n.CodeMirror-merge-r-chunk-start { border-top: 1px solid #ee8; }\n.CodeMirror-merge-r-chunk-end { border-bottom: 1px solid #ee8; }\n.CodeMirror-merge-r-connect { fill: #ffffe0; stroke: #ee8; stroke-width: 1px; }\n\n.CodeMirror-merge-l-chunk { background: #eef; }\n.CodeMirror-merge-l-chunk-start { border-top: 1px solid #88e; }\n.CodeMirror-merge-l-chunk-end { border-bottom: 1px solid #88e; }\n.CodeMirror-merge-l-connect { fill: #eef; stroke: #88e; stroke-width: 1px; }\n\n.CodeMirror-merge-l-chunk.CodeMirror-merge-r-chunk { background: #dfd; }\n.CodeMirror-merge-l-chunk-start.CodeMirror-merge-r-chunk-start { border-top: 1px solid #4e4; }\n.CodeMirror-merge-l-chunk-end.CodeMirror-merge-r-chunk-end { border-bottom: 1px solid #4e4; }\n\n.CodeMirror-merge-collapsed-widget:before {\n  content: \"(...)\";\n}\n.CodeMirror-merge-collapsed-widget {\n  cursor: pointer;\n  color: #88b;\n  background: #eef;\n  border: 1px solid #ddf;\n  font-size: 90%;\n  padding: 0 3px;\n  border-radius: 4px;\n}\n.CodeMirror-merge-collapsed-line .CodeMirror-gutter-elt { display: none; }\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/merge/merge.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// declare global: diff_match_patch, DIFF_INSERT, DIFF_DELETE, DIFF_EQUAL\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"diff_match_patch\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"diff_match_patch\"], mod);\n  else // Plain browser env\n    mod(CodeMirror, diff_match_patch);\n})(function(CodeMirror, diff_match_patch) {\n  \"use strict\";\n  var Pos = CodeMirror.Pos;\n  var svgNS = \"http://www.w3.org/2000/svg\";\n\n  function DiffView(mv, type) {\n    this.mv = mv;\n    this.type = type;\n    this.classes = type == \"left\"\n      ? {chunk: \"CodeMirror-merge-l-chunk\",\n         start: \"CodeMirror-merge-l-chunk-start\",\n         end: \"CodeMirror-merge-l-chunk-end\",\n         insert: \"CodeMirror-merge-l-inserted\",\n         del: \"CodeMirror-merge-l-deleted\",\n         connect: \"CodeMirror-merge-l-connect\"}\n      : {chunk: \"CodeMirror-merge-r-chunk\",\n         start: \"CodeMirror-merge-r-chunk-start\",\n         end: \"CodeMirror-merge-r-chunk-end\",\n         insert: \"CodeMirror-merge-r-inserted\",\n         del: \"CodeMirror-merge-r-deleted\",\n         connect: \"CodeMirror-merge-r-connect\"};\n  }\n\n  DiffView.prototype = {\n    constructor: DiffView,\n    init: function(pane, orig, options) {\n      this.edit = this.mv.edit;\n      this.orig = CodeMirror(pane, copyObj({value: orig, readOnly: !this.mv.options.allowEditingOriginals}, copyObj(options)));\n\n      this.diff = getDiff(asString(orig), asString(options.value));\n      this.chunks = getChunks(this.diff);\n      this.diffOutOfDate = this.dealigned = false;\n\n      this.showDifferences = options.showDifferences !== false;\n      this.forceUpdate = registerUpdate(this);\n      setScrollLock(this, true, false);\n      registerScroll(this);\n    },\n    setShowDifferences: function(val) {\n      val = val !== false;\n      if (val != this.showDifferences) {\n        this.showDifferences = val;\n        this.forceUpdate(\"full\");\n      }\n    }\n  };\n\n  function ensureDiff(dv) {\n    if (dv.diffOutOfDate) {\n      dv.diff = getDiff(dv.orig.getValue(), dv.edit.getValue());\n      dv.chunks = getChunks(dv.diff);\n      dv.diffOutOfDate = false;\n      CodeMirror.signal(dv.edit, \"updateDiff\", dv.diff);\n    }\n  }\n\n  var updating = false;\n  function registerUpdate(dv) {\n    var edit = {from: 0, to: 0, marked: []};\n    var orig = {from: 0, to: 0, marked: []};\n    var debounceChange, updatingFast = false;\n    function update(mode) {\n      updating = true;\n      updatingFast = false;\n      if (mode == \"full\") {\n        if (dv.svg) clear(dv.svg);\n        if (dv.copyButtons) clear(dv.copyButtons);\n        clearMarks(dv.edit, edit.marked, dv.classes);\n        clearMarks(dv.orig, orig.marked, dv.classes);\n        edit.from = edit.to = orig.from = orig.to = 0;\n      }\n      ensureDiff(dv);\n      if (dv.showDifferences) {\n        updateMarks(dv.edit, dv.diff, edit, DIFF_INSERT, dv.classes);\n        updateMarks(dv.orig, dv.diff, orig, DIFF_DELETE, dv.classes);\n      }\n      makeConnections(dv);\n\n      if (dv.mv.options.connect == \"align\")\n        alignChunks(dv);\n      updating = false;\n    }\n    function setDealign(fast) {\n      if (updating) return;\n      dv.dealigned = true;\n      set(fast);\n    }\n    function set(fast) {\n      if (updating || updatingFast) return;\n      clearTimeout(debounceChange);\n      if (fast === true) updatingFast = true;\n      debounceChange = setTimeout(update, fast === true ? 20 : 250);\n    }\n    function change(_cm, change) {\n      if (!dv.diffOutOfDate) {\n        dv.diffOutOfDate = true;\n        edit.from = edit.to = orig.from = orig.to = 0;\n      }\n      // Update faster when a line was added/removed\n      setDealign(change.text.length - 1 != change.to.line - change.from.line);\n    }\n    dv.edit.on(\"change\", change);\n    dv.orig.on(\"change\", change);\n    dv.edit.on(\"markerAdded\", setDealign);\n    dv.edit.on(\"markerCleared\", setDealign);\n    dv.orig.on(\"markerAdded\", setDealign);\n    dv.orig.on(\"markerCleared\", setDealign);\n    dv.edit.on(\"viewportChange\", function() { set(false); });\n    dv.orig.on(\"viewportChange\", function() { set(false); });\n    update();\n    return update;\n  }\n\n  function registerScroll(dv) {\n    dv.edit.on(\"scroll\", function() {\n      syncScroll(dv, DIFF_INSERT) && makeConnections(dv);\n    });\n    dv.orig.on(\"scroll\", function() {\n      syncScroll(dv, DIFF_DELETE) && makeConnections(dv);\n    });\n  }\n\n  function syncScroll(dv, type) {\n    // Change handler will do a refresh after a timeout when diff is out of date\n    if (dv.diffOutOfDate) return false;\n    if (!dv.lockScroll) return true;\n    var editor, other, now = +new Date;\n    if (type == DIFF_INSERT) { editor = dv.edit; other = dv.orig; }\n    else { editor = dv.orig; other = dv.edit; }\n    // Don't take action if the position of this editor was recently set\n    // (to prevent feedback loops)\n    if (editor.state.scrollSetBy == dv && (editor.state.scrollSetAt || 0) + 50 > now) return false;\n\n    var sInfo = editor.getScrollInfo();\n    if (dv.mv.options.connect == \"align\") {\n      targetPos = sInfo.top;\n    } else {\n      var halfScreen = .5 * sInfo.clientHeight, midY = sInfo.top + halfScreen;\n      var mid = editor.lineAtHeight(midY, \"local\");\n      var around = chunkBoundariesAround(dv.chunks, mid, type == DIFF_INSERT);\n      var off = getOffsets(editor, type == DIFF_INSERT ? around.edit : around.orig);\n      var offOther = getOffsets(other, type == DIFF_INSERT ? around.orig : around.edit);\n      var ratio = (midY - off.top) / (off.bot - off.top);\n      var targetPos = (offOther.top - halfScreen) + ratio * (offOther.bot - offOther.top);\n\n      var botDist, mix;\n      // Some careful tweaking to make sure no space is left out of view\n      // when scrolling to top or bottom.\n      if (targetPos > sInfo.top && (mix = sInfo.top / halfScreen) < 1) {\n        targetPos = targetPos * mix + sInfo.top * (1 - mix);\n      } else if ((botDist = sInfo.height - sInfo.clientHeight - sInfo.top) < halfScreen) {\n        var otherInfo = other.getScrollInfo();\n        var botDistOther = otherInfo.height - otherInfo.clientHeight - targetPos;\n        if (botDistOther > botDist && (mix = botDist / halfScreen) < 1)\n          targetPos = targetPos * mix + (otherInfo.height - otherInfo.clientHeight - botDist) * (1 - mix);\n      }\n    }\n\n    other.scrollTo(sInfo.left, targetPos);\n    other.state.scrollSetAt = now;\n    other.state.scrollSetBy = dv;\n    return true;\n  }\n\n  function getOffsets(editor, around) {\n    var bot = around.after;\n    if (bot == null) bot = editor.lastLine() + 1;\n    return {top: editor.heightAtLine(around.before || 0, \"local\"),\n            bot: editor.heightAtLine(bot, \"local\")};\n  }\n\n  function setScrollLock(dv, val, action) {\n    dv.lockScroll = val;\n    if (val && action != false) syncScroll(dv, DIFF_INSERT) && makeConnections(dv);\n    dv.lockButton.innerHTML = val ? \"\\u21db\\u21da\" : \"\\u21db&nbsp;&nbsp;\\u21da\";\n  }\n\n  // Updating the marks for editor content\n\n  function clearMarks(editor, arr, classes) {\n    for (var i = 0; i < arr.length; ++i) {\n      var mark = arr[i];\n      if (mark instanceof CodeMirror.TextMarker) {\n        mark.clear();\n      } else if (mark.parent) {\n        editor.removeLineClass(mark, \"background\", classes.chunk);\n        editor.removeLineClass(mark, \"background\", classes.start);\n        editor.removeLineClass(mark, \"background\", classes.end);\n      }\n    }\n    arr.length = 0;\n  }\n\n  // FIXME maybe add a margin around viewport to prevent too many updates\n  function updateMarks(editor, diff, state, type, classes) {\n    var vp = editor.getViewport();\n    editor.operation(function() {\n      if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n        clearMarks(editor, state.marked, classes);\n        markChanges(editor, diff, type, state.marked, vp.from, vp.to, classes);\n        state.from = vp.from; state.to = vp.to;\n      } else {\n        if (vp.from < state.from) {\n          markChanges(editor, diff, type, state.marked, vp.from, state.from, classes);\n          state.from = vp.from;\n        }\n        if (vp.to > state.to) {\n          markChanges(editor, diff, type, state.marked, state.to, vp.to, classes);\n          state.to = vp.to;\n        }\n      }\n    });\n  }\n\n  function markChanges(editor, diff, type, marks, from, to, classes) {\n    var pos = Pos(0, 0);\n    var top = Pos(from, 0), bot = editor.clipPos(Pos(to - 1));\n    var cls = type == DIFF_DELETE ? classes.del : classes.insert;\n    function markChunk(start, end) {\n      var bfrom = Math.max(from, start), bto = Math.min(to, end);\n      for (var i = bfrom; i < bto; ++i) {\n        var line = editor.addLineClass(i, \"background\", classes.chunk);\n        if (i == start) editor.addLineClass(line, \"background\", classes.start);\n        if (i == end - 1) editor.addLineClass(line, \"background\", classes.end);\n        marks.push(line);\n      }\n      // When the chunk is empty, make sure a horizontal line shows up\n      if (start == end && bfrom == end && bto == end) {\n        if (bfrom)\n          marks.push(editor.addLineClass(bfrom - 1, \"background\", classes.end));\n        else\n          marks.push(editor.addLineClass(bfrom, \"background\", classes.start));\n      }\n    }\n\n    var chunkStart = 0;\n    for (var i = 0; i < diff.length; ++i) {\n      var part = diff[i], tp = part[0], str = part[1];\n      if (tp == DIFF_EQUAL) {\n        var cleanFrom = pos.line + (startOfLineClean(diff, i) ? 0 : 1);\n        moveOver(pos, str);\n        var cleanTo = pos.line + (endOfLineClean(diff, i) ? 1 : 0);\n        if (cleanTo > cleanFrom) {\n          if (i) markChunk(chunkStart, cleanFrom);\n          chunkStart = cleanTo;\n        }\n      } else {\n        if (tp == type) {\n          var end = moveOver(pos, str, true);\n          var a = posMax(top, pos), b = posMin(bot, end);\n          if (!posEq(a, b))\n            marks.push(editor.markText(a, b, {className: cls}));\n          pos = end;\n        }\n      }\n    }\n    if (chunkStart <= pos.line) markChunk(chunkStart, pos.line + 1);\n  }\n\n  // Updating the gap between editor and original\n\n  function makeConnections(dv) {\n    if (!dv.showDifferences) return;\n\n    if (dv.svg) {\n      clear(dv.svg);\n      var w = dv.gap.offsetWidth;\n      attrs(dv.svg, \"width\", w, \"height\", dv.gap.offsetHeight);\n    }\n    if (dv.copyButtons) clear(dv.copyButtons);\n\n    var vpEdit = dv.edit.getViewport(), vpOrig = dv.orig.getViewport();\n    var sTopEdit = dv.edit.getScrollInfo().top, sTopOrig = dv.orig.getScrollInfo().top;\n    for (var i = 0; i < dv.chunks.length; i++) {\n      var ch = dv.chunks[i];\n      if (ch.editFrom <= vpEdit.to && ch.editTo >= vpEdit.from &&\n          ch.origFrom <= vpOrig.to && ch.origTo >= vpOrig.from)\n        drawConnectorsForChunk(dv, ch, sTopOrig, sTopEdit, w);\n    }\n  }\n\n  function getMatchingOrigLine(editLine, chunks) {\n    var editStart = 0, origStart = 0;\n    for (var i = 0; i < chunks.length; i++) {\n      var chunk = chunks[i];\n      if (chunk.editTo > editLine && chunk.editFrom <= editLine) return null;\n      if (chunk.editFrom > editLine) break;\n      editStart = chunk.editTo;\n      origStart = chunk.origTo;\n    }\n    return origStart + (editLine - editStart);\n  }\n\n  function findAlignedLines(dv, other) {\n    var linesToAlign = [];\n    for (var i = 0; i < dv.chunks.length; i++) {\n      var chunk = dv.chunks[i];\n      linesToAlign.push([chunk.origTo, chunk.editTo, other ? getMatchingOrigLine(chunk.editTo, other.chunks) : null]);\n    }\n    if (other) {\n      for (var i = 0; i < other.chunks.length; i++) {\n        var chunk = other.chunks[i];\n        for (var j = 0; j < linesToAlign.length; j++) {\n          var align = linesToAlign[j];\n          if (align[1] == chunk.editTo) {\n            j = -1;\n            break;\n          } else if (align[1] > chunk.editTo) {\n            break;\n          }\n        }\n        if (j > -1)\n          linesToAlign.splice(j - 1, 0, [getMatchingOrigLine(chunk.editTo, dv.chunks), chunk.editTo, chunk.origTo]);\n      }\n    }\n    return linesToAlign;\n  }\n\n  function alignChunks(dv, force) {\n    if (!dv.dealigned && !force) return;\n    if (!dv.orig.curOp) return dv.orig.operation(function() {\n      alignChunks(dv, force);\n    });\n\n    dv.dealigned = false;\n    var other = dv.mv.left == dv ? dv.mv.right : dv.mv.left;\n    if (other) {\n      ensureDiff(other);\n      other.dealigned = false;\n    }\n    var linesToAlign = findAlignedLines(dv, other);\n\n    // Clear old aligners\n    var aligners = dv.mv.aligners;\n    for (var i = 0; i < aligners.length; i++)\n      aligners[i].clear();\n    aligners.length = 0;\n\n    var cm = [dv.orig, dv.edit], scroll = [];\n    if (other) cm.push(other.orig);\n    for (var i = 0; i < cm.length; i++)\n      scroll.push(cm[i].getScrollInfo().top);\n\n    for (var ln = 0; ln < linesToAlign.length; ln++)\n      alignLines(cm, linesToAlign[ln], aligners);\n\n    for (var i = 0; i < cm.length; i++)\n      cm[i].scrollTo(null, scroll[i]);\n  }\n\n  function alignLines(cm, lines, aligners) {\n    var maxOffset = 0, offset = [];\n    for (var i = 0; i < cm.length; i++) if (lines[i] != null) {\n      var off = cm[i].heightAtLine(lines[i], \"local\");\n      offset[i] = off;\n      maxOffset = Math.max(maxOffset, off);\n    }\n    for (var i = 0; i < cm.length; i++) if (lines[i] != null) {\n      var diff = maxOffset - offset[i];\n      if (diff > 1)\n        aligners.push(padAbove(cm[i], lines[i], diff));\n    }\n  }\n\n  function padAbove(cm, line, size) {\n    var above = true;\n    if (line > cm.lastLine()) {\n      line--;\n      above = false;\n    }\n    var elt = document.createElement(\"div\");\n    elt.className = \"CodeMirror-merge-spacer\";\n    elt.style.height = size + \"px\"; elt.style.minWidth = \"1px\";\n    return cm.addLineWidget(line, elt, {height: size, above: above});\n  }\n\n  function drawConnectorsForChunk(dv, chunk, sTopOrig, sTopEdit, w) {\n    var flip = dv.type == \"left\";\n    var top = dv.orig.heightAtLine(chunk.origFrom, \"local\") - sTopOrig;\n    if (dv.svg) {\n      var topLpx = top;\n      var topRpx = dv.edit.heightAtLine(chunk.editFrom, \"local\") - sTopEdit;\n      if (flip) { var tmp = topLpx; topLpx = topRpx; topRpx = tmp; }\n      var botLpx = dv.orig.heightAtLine(chunk.origTo, \"local\") - sTopOrig;\n      var botRpx = dv.edit.heightAtLine(chunk.editTo, \"local\") - sTopEdit;\n      if (flip) { var tmp = botLpx; botLpx = botRpx; botRpx = tmp; }\n      var curveTop = \" C \" + w/2 + \" \" + topRpx + \" \" + w/2 + \" \" + topLpx + \" \" + (w + 2) + \" \" + topLpx;\n      var curveBot = \" C \" + w/2 + \" \" + botLpx + \" \" + w/2 + \" \" + botRpx + \" -1 \" + botRpx;\n      attrs(dv.svg.appendChild(document.createElementNS(svgNS, \"path\")),\n            \"d\", \"M -1 \" + topRpx + curveTop + \" L \" + (w + 2) + \" \" + botLpx + curveBot + \" z\",\n            \"class\", dv.classes.connect);\n    }\n    if (dv.copyButtons) {\n      var copy = dv.copyButtons.appendChild(elt(\"div\", dv.type == \"left\" ? \"\\u21dd\" : \"\\u21dc\",\n                                                \"CodeMirror-merge-copy\"));\n      var editOriginals = dv.mv.options.allowEditingOriginals;\n      copy.title = editOriginals ? \"Push to left\" : \"Revert chunk\";\n      copy.chunk = chunk;\n      copy.style.top = top + \"px\";\n\n      if (editOriginals) {\n        var topReverse = dv.orig.heightAtLine(chunk.editFrom, \"local\") - sTopEdit;\n        var copyReverse = dv.copyButtons.appendChild(elt(\"div\", dv.type == \"right\" ? \"\\u21dd\" : \"\\u21dc\",\n                                                         \"CodeMirror-merge-copy-reverse\"));\n        copyReverse.title = \"Push to right\";\n        copyReverse.chunk = {editFrom: chunk.origFrom, editTo: chunk.origTo,\n                             origFrom: chunk.editFrom, origTo: chunk.editTo};\n        copyReverse.style.top = topReverse + \"px\";\n        dv.type == \"right\" ? copyReverse.style.left = \"2px\" : copyReverse.style.right = \"2px\";\n      }\n    }\n  }\n\n  function copyChunk(dv, to, from, chunk) {\n    if (dv.diffOutOfDate) return;\n    to.replaceRange(from.getRange(Pos(chunk.origFrom, 0), Pos(chunk.origTo, 0)),\n                         Pos(chunk.editFrom, 0), Pos(chunk.editTo, 0));\n  }\n\n  // Merge view, containing 0, 1, or 2 diff views.\n\n  var MergeView = CodeMirror.MergeView = function(node, options) {\n    if (!(this instanceof MergeView)) return new MergeView(node, options);\n\n    this.options = options;\n    var origLeft = options.origLeft, origRight = options.origRight == null ? options.orig : options.origRight;\n\n    var hasLeft = origLeft != null, hasRight = origRight != null;\n    var panes = 1 + (hasLeft ? 1 : 0) + (hasRight ? 1 : 0);\n    var wrap = [], left = this.left = null, right = this.right = null;\n    var self = this;\n\n    if (hasLeft) {\n      left = this.left = new DiffView(this, \"left\");\n      var leftPane = elt(\"div\", null, \"CodeMirror-merge-pane\");\n      wrap.push(leftPane);\n      wrap.push(buildGap(left));\n    }\n\n    var editPane = elt(\"div\", null, \"CodeMirror-merge-pane\");\n    wrap.push(editPane);\n\n    if (hasRight) {\n      right = this.right = new DiffView(this, \"right\");\n      wrap.push(buildGap(right));\n      var rightPane = elt(\"div\", null, \"CodeMirror-merge-pane\");\n      wrap.push(rightPane);\n    }\n\n    (hasRight ? rightPane : editPane).className += \" CodeMirror-merge-pane-rightmost\";\n\n    wrap.push(elt(\"div\", null, null, \"height: 0; clear: both;\"));\n\n    var wrapElt = this.wrap = node.appendChild(elt(\"div\", wrap, \"CodeMirror-merge CodeMirror-merge-\" + panes + \"pane\"));\n    this.edit = CodeMirror(editPane, copyObj(options));\n\n    if (left) left.init(leftPane, origLeft, options);\n    if (right) right.init(rightPane, origRight, options);\n\n    if (options.collapseIdentical) {\n      updating = true;\n      this.editor().operation(function() {\n        collapseIdenticalStretches(self, options.collapseIdentical);\n      });\n      updating = false;\n    }\n    if (options.connect == \"align\") {\n      this.aligners = [];\n      alignChunks(this.left || this.right, true);\n    }\n\n    var onResize = function() {\n      if (left) makeConnections(left);\n      if (right) makeConnections(right);\n    };\n    CodeMirror.on(window, \"resize\", onResize);\n    var resizeInterval = setInterval(function() {\n      for (var p = wrapElt.parentNode; p && p != document.body; p = p.parentNode) {}\n      if (!p) { clearInterval(resizeInterval); CodeMirror.off(window, \"resize\", onResize); }\n    }, 5000);\n  };\n\n  function buildGap(dv) {\n    var lock = dv.lockButton = elt(\"div\", null, \"CodeMirror-merge-scrolllock\");\n    lock.title = \"Toggle locked scrolling\";\n    var lockWrap = elt(\"div\", [lock], \"CodeMirror-merge-scrolllock-wrap\");\n    CodeMirror.on(lock, \"click\", function() { setScrollLock(dv, !dv.lockScroll); });\n    var gapElts = [lockWrap];\n    if (dv.mv.options.revertButtons !== false) {\n      dv.copyButtons = elt(\"div\", null, \"CodeMirror-merge-copybuttons-\" + dv.type);\n      CodeMirror.on(dv.copyButtons, \"click\", function(e) {\n        var node = e.target || e.srcElement;\n        if (!node.chunk) return;\n        if (node.className == \"CodeMirror-merge-copy-reverse\") {\n          copyChunk(dv, dv.orig, dv.edit, node.chunk);\n          return;\n        }\n        copyChunk(dv, dv.edit, dv.orig, node.chunk);\n      });\n      gapElts.unshift(dv.copyButtons);\n    }\n    if (dv.mv.options.connect != \"align\") {\n      var svg = document.createElementNS && document.createElementNS(svgNS, \"svg\");\n      if (svg && !svg.createSVGRect) svg = null;\n      dv.svg = svg;\n      if (svg) gapElts.push(svg);\n    }\n\n    return dv.gap = elt(\"div\", gapElts, \"CodeMirror-merge-gap\");\n  }\n\n  MergeView.prototype = {\n    constuctor: MergeView,\n    editor: function() { return this.edit; },\n    rightOriginal: function() { return this.right && this.right.orig; },\n    leftOriginal: function() { return this.left && this.left.orig; },\n    setShowDifferences: function(val) {\n      if (this.right) this.right.setShowDifferences(val);\n      if (this.left) this.left.setShowDifferences(val);\n    },\n    rightChunks: function() {\n      if (this.right) { ensureDiff(this.right); return this.right.chunks; }\n    },\n    leftChunks: function() {\n      if (this.left) { ensureDiff(this.left); return this.left.chunks; }\n    }\n  };\n\n  function asString(obj) {\n    if (typeof obj == \"string\") return obj;\n    else return obj.getValue();\n  }\n\n  // Operations on diffs\n\n  var dmp = new diff_match_patch();\n  function getDiff(a, b) {\n    var diff = dmp.diff_main(a, b);\n    dmp.diff_cleanupSemantic(diff);\n    // The library sometimes leaves in empty parts, which confuse the algorithm\n    for (var i = 0; i < diff.length; ++i) {\n      var part = diff[i];\n      if (!part[1]) {\n        diff.splice(i--, 1);\n      } else if (i && diff[i - 1][0] == part[0]) {\n        diff.splice(i--, 1);\n        diff[i][1] += part[1];\n      }\n    }\n    return diff;\n  }\n\n  function getChunks(diff) {\n    var chunks = [];\n    var startEdit = 0, startOrig = 0;\n    var edit = Pos(0, 0), orig = Pos(0, 0);\n    for (var i = 0; i < diff.length; ++i) {\n      var part = diff[i], tp = part[0];\n      if (tp == DIFF_EQUAL) {\n        var startOff = startOfLineClean(diff, i) ? 0 : 1;\n        var cleanFromEdit = edit.line + startOff, cleanFromOrig = orig.line + startOff;\n        moveOver(edit, part[1], null, orig);\n        var endOff = endOfLineClean(diff, i) ? 1 : 0;\n        var cleanToEdit = edit.line + endOff, cleanToOrig = orig.line + endOff;\n        if (cleanToEdit > cleanFromEdit) {\n          if (i) chunks.push({origFrom: startOrig, origTo: cleanFromOrig,\n                              editFrom: startEdit, editTo: cleanFromEdit});\n          startEdit = cleanToEdit; startOrig = cleanToOrig;\n        }\n      } else {\n        moveOver(tp == DIFF_INSERT ? edit : orig, part[1]);\n      }\n    }\n    if (startEdit <= edit.line || startOrig <= orig.line)\n      chunks.push({origFrom: startOrig, origTo: orig.line + 1,\n                   editFrom: startEdit, editTo: edit.line + 1});\n    return chunks;\n  }\n\n  function endOfLineClean(diff, i) {\n    if (i == diff.length - 1) return true;\n    var next = diff[i + 1][1];\n    if (next.length == 1 || next.charCodeAt(0) != 10) return false;\n    if (i == diff.length - 2) return true;\n    next = diff[i + 2][1];\n    return next.length > 1 && next.charCodeAt(0) == 10;\n  }\n\n  function startOfLineClean(diff, i) {\n    if (i == 0) return true;\n    var last = diff[i - 1][1];\n    if (last.charCodeAt(last.length - 1) != 10) return false;\n    if (i == 1) return true;\n    last = diff[i - 2][1];\n    return last.charCodeAt(last.length - 1) == 10;\n  }\n\n  function chunkBoundariesAround(chunks, n, nInEdit) {\n    var beforeE, afterE, beforeO, afterO;\n    for (var i = 0; i < chunks.length; i++) {\n      var chunk = chunks[i];\n      var fromLocal = nInEdit ? chunk.editFrom : chunk.origFrom;\n      var toLocal = nInEdit ? chunk.editTo : chunk.origTo;\n      if (afterE == null) {\n        if (fromLocal > n) { afterE = chunk.editFrom; afterO = chunk.origFrom; }\n        else if (toLocal > n) { afterE = chunk.editTo; afterO = chunk.origTo; }\n      }\n      if (toLocal <= n) { beforeE = chunk.editTo; beforeO = chunk.origTo; }\n      else if (fromLocal <= n) { beforeE = chunk.editFrom; beforeO = chunk.origFrom; }\n    }\n    return {edit: {before: beforeE, after: afterE}, orig: {before: beforeO, after: afterO}};\n  }\n\n  function collapseSingle(cm, from, to) {\n    cm.addLineClass(from, \"wrap\", \"CodeMirror-merge-collapsed-line\");\n    var widget = document.createElement(\"span\");\n    widget.className = \"CodeMirror-merge-collapsed-widget\";\n    widget.title = \"Identical text collapsed. Click to expand.\";\n    var mark = cm.markText(Pos(from, 0), Pos(to - 1), {\n      inclusiveLeft: true,\n      inclusiveRight: true,\n      replacedWith: widget,\n      clearOnEnter: true\n    });\n    function clear() {\n      mark.clear();\n      cm.removeLineClass(from, \"wrap\", \"CodeMirror-merge-collapsed-line\");\n    }\n    widget.addEventListener(\"click\", clear);\n    return {mark: mark, clear: clear};\n  }\n\n  function collapseStretch(size, editors) {\n    var marks = [];\n    function clear() {\n      for (var i = 0; i < marks.length; i++) marks[i].clear();\n    }\n    for (var i = 0; i < editors.length; i++) {\n      var editor = editors[i];\n      var mark = collapseSingle(editor.cm, editor.line, editor.line + size);\n      marks.push(mark);\n      mark.mark.on(\"clear\", clear);\n    }\n    return marks[0].mark;\n  }\n\n  function unclearNearChunks(dv, margin, off, clear) {\n    for (var i = 0; i < dv.chunks.length; i++) {\n      var chunk = dv.chunks[i];\n      for (var l = chunk.editFrom - margin; l < chunk.editTo + margin; l++) {\n        var pos = l + off;\n        if (pos >= 0 && pos < clear.length) clear[pos] = false;\n      }\n    }\n  }\n\n  function collapseIdenticalStretches(mv, margin) {\n    if (typeof margin != \"number\") margin = 2;\n    var clear = [], edit = mv.editor(), off = edit.firstLine();\n    for (var l = off, e = edit.lastLine(); l <= e; l++) clear.push(true);\n    if (mv.left) unclearNearChunks(mv.left, margin, off, clear);\n    if (mv.right) unclearNearChunks(mv.right, margin, off, clear);\n\n    for (var i = 0; i < clear.length; i++) {\n      if (clear[i]) {\n        var line = i + off;\n        for (var size = 1; i < clear.length - 1 && clear[i + 1]; i++, size++) {}\n        if (size > margin) {\n          var editors = [{line: line, cm: edit}];\n          if (mv.left) editors.push({line: getMatchingOrigLine(line, mv.left.chunks), cm: mv.left.orig});\n          if (mv.right) editors.push({line: getMatchingOrigLine(line, mv.right.chunks), cm: mv.right.orig});\n          var mark = collapseStretch(size, editors);\n          if (mv.options.onCollapse) mv.options.onCollapse(mv, line, size, mark);\n        }\n      }\n    }\n  }\n\n  // General utilities\n\n  function elt(tag, content, className, style) {\n    var e = document.createElement(tag);\n    if (className) e.className = className;\n    if (style) e.style.cssText = style;\n    if (typeof content == \"string\") e.appendChild(document.createTextNode(content));\n    else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]);\n    return e;\n  }\n\n  function clear(node) {\n    for (var count = node.childNodes.length; count > 0; --count)\n      node.removeChild(node.firstChild);\n  }\n\n  function attrs(elt) {\n    for (var i = 1; i < arguments.length; i += 2)\n      elt.setAttribute(arguments[i], arguments[i+1]);\n  }\n\n  function copyObj(obj, target) {\n    if (!target) target = {};\n    for (var prop in obj) if (obj.hasOwnProperty(prop)) target[prop] = obj[prop];\n    return target;\n  }\n\n  function moveOver(pos, str, copy, other) {\n    var out = copy ? Pos(pos.line, pos.ch) : pos, at = 0;\n    for (;;) {\n      var nl = str.indexOf(\"\\n\", at);\n      if (nl == -1) break;\n      ++out.line;\n      if (other) ++other.line;\n      at = nl + 1;\n    }\n    out.ch = (at ? 0 : out.ch) + (str.length - at);\n    if (other) other.ch = (at ? 0 : other.ch) + (str.length - at);\n    return out;\n  }\n\n  function posMin(a, b) { return (a.line - b.line || a.ch - b.ch) < 0 ? a : b; }\n  function posMax(a, b) { return (a.line - b.line || a.ch - b.ch) > 0 ? a : b; }\n  function posEq(a, b) { return a.line == b.line && a.ch == b.ch; }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/mode/loadmode.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), \"cjs\");\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], function(CM) { mod(CM, \"amd\"); });\n  else // Plain browser env\n    mod(CodeMirror, \"plain\");\n})(function(CodeMirror, env) {\n  if (!CodeMirror.modeURL) CodeMirror.modeURL = \"../mode/%N/%N.js\";\n\n  var loading = {};\n  function splitCallback(cont, n) {\n    var countDown = n;\n    return function() { if (--countDown == 0) cont(); };\n  }\n  function ensureDeps(mode, cont) {\n    var deps = CodeMirror.modes[mode].dependencies;\n    if (!deps) return cont();\n    var missing = [];\n    for (var i = 0; i < deps.length; ++i) {\n      if (!CodeMirror.modes.hasOwnProperty(deps[i]))\n        missing.push(deps[i]);\n    }\n    if (!missing.length) return cont();\n    var split = splitCallback(cont, missing.length);\n    for (var i = 0; i < missing.length; ++i)\n      CodeMirror.requireMode(missing[i], split);\n  }\n\n  CodeMirror.requireMode = function(mode, cont) {\n    if (typeof mode != \"string\") mode = mode.name;\n    if (CodeMirror.modes.hasOwnProperty(mode)) return ensureDeps(mode, cont);\n    if (loading.hasOwnProperty(mode)) return loading[mode].push(cont);\n\n    var file = CodeMirror.modeURL.replace(/%N/g, mode);\n    if (env == \"plain\") {\n      var script = document.createElement(\"script\");\n      script.src = file;\n      var others = document.getElementsByTagName(\"script\")[0];\n      var list = loading[mode] = [cont];\n      CodeMirror.on(script, \"load\", function() {\n        ensureDeps(mode, function() {\n          for (var i = 0; i < list.length; ++i) list[i]();\n        });\n      });\n      others.parentNode.insertBefore(script, others);\n    } else if (env == \"cjs\") {\n      require(file);\n      cont();\n    } else if (env == \"amd\") {\n      requirejs([file], cont);\n    }\n  };\n\n  CodeMirror.autoLoadMode = function(instance, mode) {\n    if (!CodeMirror.modes.hasOwnProperty(mode))\n      CodeMirror.requireMode(mode, function() {\n        instance.setOption(\"mode\", instance.getOption(\"mode\"));\n      });\n  };\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/mode/multiplex.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.multiplexingMode = function(outer /*, others */) {\n  // Others should be {open, close, mode [, delimStyle] [, innerStyle]} objects\n  var others = Array.prototype.slice.call(arguments, 1);\n  var n_others = others.length;\n\n  function indexOf(string, pattern, from) {\n    if (typeof pattern == \"string\") return string.indexOf(pattern, from);\n    var m = pattern.exec(from ? string.slice(from) : string);\n    return m ? m.index + from : -1;\n  }\n\n  return {\n    startState: function() {\n      return {\n        outer: CodeMirror.startState(outer),\n        innerActive: null,\n        inner: null\n      };\n    },\n\n    copyState: function(state) {\n      return {\n        outer: CodeMirror.copyState(outer, state.outer),\n        innerActive: state.innerActive,\n        inner: state.innerActive && CodeMirror.copyState(state.innerActive.mode, state.inner)\n      };\n    },\n\n    token: function(stream, state) {\n      if (!state.innerActive) {\n        var cutOff = Infinity, oldContent = stream.string;\n        for (var i = 0; i < n_others; ++i) {\n          var other = others[i];\n          var found = indexOf(oldContent, other.open, stream.pos);\n          if (found == stream.pos) {\n            stream.match(other.open);\n            state.innerActive = other;\n            state.inner = CodeMirror.startState(other.mode, outer.indent ? outer.indent(state.outer, \"\") : 0);\n            return other.delimStyle;\n          } else if (found != -1 && found < cutOff) {\n            cutOff = found;\n          }\n        }\n        if (cutOff != Infinity) stream.string = oldContent.slice(0, cutOff);\n        var outerToken = outer.token(stream, state.outer);\n        if (cutOff != Infinity) stream.string = oldContent;\n        return outerToken;\n      } else {\n        var curInner = state.innerActive, oldContent = stream.string;\n        if (!curInner.close && stream.sol()) {\n          state.innerActive = state.inner = null;\n          return this.token(stream, state);\n        }\n        var found = curInner.close ? indexOf(oldContent, curInner.close, stream.pos) : -1;\n        if (found == stream.pos) {\n          stream.match(curInner.close);\n          state.innerActive = state.inner = null;\n          return curInner.delimStyle;\n        }\n        if (found > -1) stream.string = oldContent.slice(0, found);\n        var innerToken = curInner.mode.token(stream, state.inner);\n        if (found > -1) stream.string = oldContent;\n\n        if (curInner.innerStyle) {\n          if (innerToken) innerToken = innerToken + ' ' + curInner.innerStyle;\n          else innerToken = curInner.innerStyle;\n        }\n\n        return innerToken;\n      }\n    },\n\n    indent: function(state, textAfter) {\n      var mode = state.innerActive ? state.innerActive.mode : outer;\n      if (!mode.indent) return CodeMirror.Pass;\n      return mode.indent(state.innerActive ? state.inner : state.outer, textAfter);\n    },\n\n    blankLine: function(state) {\n      var mode = state.innerActive ? state.innerActive.mode : outer;\n      if (mode.blankLine) {\n        mode.blankLine(state.innerActive ? state.inner : state.outer);\n      }\n      if (!state.innerActive) {\n        for (var i = 0; i < n_others; ++i) {\n          var other = others[i];\n          if (other.open === \"\\n\") {\n            state.innerActive = other;\n            state.inner = CodeMirror.startState(other.mode, mode.indent ? mode.indent(state.outer, \"\") : 0);\n          }\n        }\n      } else if (state.innerActive.close === \"\\n\") {\n        state.innerActive = state.inner = null;\n      }\n    },\n\n    electricChars: outer.electricChars,\n\n    innerMode: function(state) {\n      return state.inner ? {state: state.inner, mode: state.innerActive.mode} : {state: state.outer, mode: outer};\n    }\n  };\n};\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/mode/multiplex_test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  CodeMirror.defineMode(\"markdown_with_stex\", function(){\n    var inner = CodeMirror.getMode({}, \"stex\");\n    var outer = CodeMirror.getMode({}, \"markdown\");\n\n    var innerOptions = {\n      open: '$',\n      close: '$',\n      mode: inner,\n      delimStyle: 'delim',\n      innerStyle: 'inner'\n    };\n\n    return CodeMirror.multiplexingMode(outer, innerOptions);\n  });\n\n  var mode = CodeMirror.getMode({}, \"markdown_with_stex\");\n\n  function MT(name) {\n    test.mode(\n      name,\n      mode,\n      Array.prototype.slice.call(arguments, 1),\n      'multiplexing');\n  }\n\n  MT(\n    \"stexInsideMarkdown\",\n    \"[strong **Equation:**] [delim $][inner&tag \\\\pi][delim $]\");\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/mode/overlay.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Utility function that allows modes to be combined. The mode given\n// as the base argument takes care of most of the normal mode\n// functionality, but a second (typically simple) mode is used, which\n// can override the style of text. Both modes get to parse all of the\n// text, but when both assign a non-null style to a piece of code, the\n// overlay wins, unless the combine argument was true and not overridden,\n// or state.overlay.combineTokens was true, in which case the styles are\n// combined.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.overlayMode = function(base, overlay, combine) {\n  return {\n    startState: function() {\n      return {\n        base: CodeMirror.startState(base),\n        overlay: CodeMirror.startState(overlay),\n        basePos: 0, baseCur: null,\n        overlayPos: 0, overlayCur: null,\n        streamSeen: null\n      };\n    },\n    copyState: function(state) {\n      return {\n        base: CodeMirror.copyState(base, state.base),\n        overlay: CodeMirror.copyState(overlay, state.overlay),\n        basePos: state.basePos, baseCur: null,\n        overlayPos: state.overlayPos, overlayCur: null\n      };\n    },\n\n    token: function(stream, state) {\n      if (stream != state.streamSeen ||\n          Math.min(state.basePos, state.overlayPos) < stream.start) {\n        state.streamSeen = stream;\n        state.basePos = state.overlayPos = stream.start;\n      }\n\n      if (stream.start == state.basePos) {\n        state.baseCur = base.token(stream, state.base);\n        state.basePos = stream.pos;\n      }\n      if (stream.start == state.overlayPos) {\n        stream.pos = stream.start;\n        state.overlayCur = overlay.token(stream, state.overlay);\n        state.overlayPos = stream.pos;\n      }\n      stream.pos = Math.min(state.basePos, state.overlayPos);\n\n      // state.overlay.combineTokens always takes precedence over combine,\n      // unless set to null\n      if (state.overlayCur == null) return state.baseCur;\n      else if (state.baseCur != null &&\n               state.overlay.combineTokens ||\n               combine && state.overlay.combineTokens == null)\n        return state.baseCur + \" \" + state.overlayCur;\n      else return state.overlayCur;\n    },\n\n    indent: base.indent && function(state, textAfter) {\n      return base.indent(state.base, textAfter);\n    },\n    electricChars: base.electricChars,\n\n    innerMode: function(state) { return {state: state.base, mode: base}; },\n\n    blankLine: function(state) {\n      if (base.blankLine) base.blankLine(state.base);\n      if (overlay.blankLine) overlay.blankLine(state.overlay);\n    }\n  };\n};\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/mode/simple.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineSimpleMode = function(name, states) {\n    CodeMirror.defineMode(name, function(config) {\n      return CodeMirror.simpleMode(config, states);\n    });\n  };\n\n  CodeMirror.simpleMode = function(config, states) {\n    ensureState(states, \"start\");\n    var states_ = {}, meta = states.meta || {}, hasIndentation = false;\n    for (var state in states) if (state != meta && states.hasOwnProperty(state)) {\n      var list = states_[state] = [], orig = states[state];\n      for (var i = 0; i < orig.length; i++) {\n        var data = orig[i];\n        list.push(new Rule(data, states));\n        if (data.indent || data.dedent) hasIndentation = true;\n      }\n    }\n    var mode = {\n      startState: function() {\n        return {state: \"start\", pending: null,\n                local: null, localState: null,\n                indent: hasIndentation ? [] : null};\n      },\n      copyState: function(state) {\n        var s = {state: state.state, pending: state.pending,\n                 local: state.local, localState: null,\n                 indent: state.indent && state.indent.slice(0)};\n        if (state.localState)\n          s.localState = CodeMirror.copyState(state.local.mode, state.localState);\n        if (state.stack)\n          s.stack = state.stack.slice(0);\n        for (var pers = state.persistentStates; pers; pers = pers.next)\n          s.persistentStates = {mode: pers.mode,\n                                spec: pers.spec,\n                                state: pers.state == state.localState ? s.localState : CodeMirror.copyState(pers.mode, pers.state),\n                                next: s.persistentStates};\n        return s;\n      },\n      token: tokenFunction(states_, config),\n      innerMode: function(state) { return state.local && {mode: state.local.mode, state: state.localState}; },\n      indent: indentFunction(states_, meta)\n    };\n    if (meta) for (var prop in meta) if (meta.hasOwnProperty(prop))\n      mode[prop] = meta[prop];\n    return mode;\n  };\n\n  function ensureState(states, name) {\n    if (!states.hasOwnProperty(name))\n      throw new Error(\"Undefined state \" + name + \"in simple mode\");\n  }\n\n  function toRegex(val, caret) {\n    if (!val) return /(?:)/;\n    var flags = \"\";\n    if (val instanceof RegExp) {\n      if (val.ignoreCase) flags = \"i\";\n      val = val.source;\n    } else {\n      val = String(val);\n    }\n    return new RegExp((caret === false ? \"\" : \"^\") + \"(?:\" + val + \")\", flags);\n  }\n\n  function asToken(val) {\n    if (!val) return null;\n    if (typeof val == \"string\") return val.replace(/\\./g, \" \");\n    var result = [];\n    for (var i = 0; i < val.length; i++)\n      result.push(val[i] && val[i].replace(/\\./g, \" \"));\n    return result;\n  }\n\n  function Rule(data, states) {\n    if (data.next || data.push) ensureState(states, data.next || data.push);\n    this.regex = toRegex(data.regex);\n    this.token = asToken(data.token);\n    this.data = data;\n  }\n\n  function tokenFunction(states, config) {\n    return function(stream, state) {\n      if (state.pending) {\n        var pend = state.pending.shift();\n        if (state.pending.length == 0) state.pending = null;\n        stream.pos += pend.text.length;\n        return pend.token;\n      }\n\n      if (state.local) {\n        if (state.local.end && stream.match(state.local.end)) {\n          var tok = state.local.endToken || null;\n          state.local = state.localState = null;\n          return tok;\n        } else {\n          var tok = state.local.mode.token(stream, state.localState), m;\n          if (state.local.endScan && (m = state.local.endScan.exec(stream.current())))\n            stream.pos = stream.start + m.index;\n          return tok;\n        }\n      }\n\n      var curState = states[state.state];\n      for (var i = 0; i < curState.length; i++) {\n        var rule = curState[i];\n        var matches = (!rule.data.sol || stream.sol()) && stream.match(rule.regex);\n        if (matches) {\n          if (rule.data.next) {\n            state.state = rule.data.next;\n          } else if (rule.data.push) {\n            (state.stack || (state.stack = [])).push(state.state);\n            state.state = rule.data.push;\n          } else if (rule.data.pop && state.stack && state.stack.length) {\n            state.state = state.stack.pop();\n          }\n\n          if (rule.data.mode)\n            enterLocalMode(config, state, rule.data.mode, rule.token);\n          if (rule.data.indent)\n            state.indent.push(stream.indentation() + config.indentUnit);\n          if (rule.data.dedent)\n            state.indent.pop();\n          if (matches.length > 2) {\n            state.pending = [];\n            for (var j = 2; j < matches.length; j++)\n              if (matches[j])\n                state.pending.push({text: matches[j], token: rule.token[j - 1]});\n            stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));\n            return rule.token[0];\n          } else if (rule.token && rule.token.join) {\n            return rule.token[0];\n          } else {\n            return rule.token;\n          }\n        }\n      }\n      stream.next();\n      return null;\n    };\n  }\n\n  function cmp(a, b) {\n    if (a === b) return true;\n    if (!a || typeof a != \"object\" || !b || typeof b != \"object\") return false;\n    var props = 0;\n    for (var prop in a) if (a.hasOwnProperty(prop)) {\n      if (!b.hasOwnProperty(prop) || !cmp(a[prop], b[prop])) return false;\n      props++;\n    }\n    for (var prop in b) if (b.hasOwnProperty(prop)) props--;\n    return props == 0;\n  }\n\n  function enterLocalMode(config, state, spec, token) {\n    var pers;\n    if (spec.persistent) for (var p = state.persistentStates; p && !pers; p = p.next)\n      if (spec.spec ? cmp(spec.spec, p.spec) : spec.mode == p.mode) pers = p;\n    var mode = pers ? pers.mode : spec.mode || CodeMirror.getMode(config, spec.spec);\n    var lState = pers ? pers.state : CodeMirror.startState(mode);\n    if (spec.persistent && !pers)\n      state.persistentStates = {mode: mode, spec: spec.spec, state: lState, next: state.persistentStates};\n\n    state.localState = lState;\n    state.local = {mode: mode,\n                   end: spec.end && toRegex(spec.end),\n                   endScan: spec.end && spec.forceEnd !== false && toRegex(spec.end, false),\n                   endToken: token && token.join ? token[token.length - 1] : token};\n  }\n\n  function indexOf(val, arr) {\n    for (var i = 0; i < arr.length; i++) if (arr[i] === val) return true;\n  }\n\n  function indentFunction(states, meta) {\n    return function(state, textAfter, line) {\n      if (state.local && state.local.mode.indent)\n        return state.local.mode.indent(state.localState, textAfter, line);\n      if (state.indent == null || state.local || meta.dontIndentStates && indexOf(state.state, meta.dontIndentStates) > -1)\n        return CodeMirror.Pass;\n\n      var pos = state.indent.length - 1, rules = states[state.state];\n      scan: for (;;) {\n        for (var i = 0; i < rules.length; i++) {\n          var rule = rules[i];\n          if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {\n            var m = rule.regex.exec(textAfter);\n            if (m && m[0]) {\n              pos--;\n              if (rule.next || rule.push) rules = states[rule.next || rule.push];\n              textAfter = textAfter.slice(m[0].length);\n              continue scan;\n            }\n          }\n        }\n        break;\n      }\n      return pos < 0 ? 0 : state.indent[pos];\n    };\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/runmode/colorize.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"./runmode\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"./runmode\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var isBlock = /^(p|li|div|h\\\\d|pre|blockquote|td)$/;\n\n  function textContent(node, out) {\n    if (node.nodeType == 3) return out.push(node.nodeValue);\n    for (var ch = node.firstChild; ch; ch = ch.nextSibling) {\n      textContent(ch, out);\n      if (isBlock.test(node.nodeType)) out.push(\"\\n\");\n    }\n  }\n\n  CodeMirror.colorize = function(collection, defaultMode) {\n    if (!collection) collection = document.body.getElementsByTagName(\"pre\");\n\n    for (var i = 0; i < collection.length; ++i) {\n      var node = collection[i];\n      var mode = node.getAttribute(\"data-lang\") || defaultMode;\n      if (!mode) continue;\n\n      var text = [];\n      textContent(node, text);\n      node.innerHTML = \"\";\n      CodeMirror.runMode(text.join(\"\"), mode, node);\n\n      node.className += \" cm-s-default\";\n    }\n  };\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/runmode/runmode-standalone.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\nwindow.CodeMirror = {};\n\n(function() {\n\"use strict\";\n\nfunction splitLines(string){ return string.split(/\\r?\\n|\\r/); };\n\nfunction StringStream(string) {\n  this.pos = this.start = 0;\n  this.string = string;\n  this.lineStart = 0;\n}\nStringStream.prototype = {\n  eol: function() {return this.pos >= this.string.length;},\n  sol: function() {return this.pos == 0;},\n  peek: function() {return this.string.charAt(this.pos) || null;},\n  next: function() {\n    if (this.pos < this.string.length)\n      return this.string.charAt(this.pos++);\n  },\n  eat: function(match) {\n    var ch = this.string.charAt(this.pos);\n    if (typeof match == \"string\") var ok = ch == match;\n    else var ok = ch && (match.test ? match.test(ch) : match(ch));\n    if (ok) {++this.pos; return ch;}\n  },\n  eatWhile: function(match) {\n    var start = this.pos;\n    while (this.eat(match)){}\n    return this.pos > start;\n  },\n  eatSpace: function() {\n    var start = this.pos;\n    while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos;\n    return this.pos > start;\n  },\n  skipToEnd: function() {this.pos = this.string.length;},\n  skipTo: function(ch) {\n    var found = this.string.indexOf(ch, this.pos);\n    if (found > -1) {this.pos = found; return true;}\n  },\n  backUp: function(n) {this.pos -= n;},\n  column: function() {return this.start - this.lineStart;},\n  indentation: function() {return 0;},\n  match: function(pattern, consume, caseInsensitive) {\n    if (typeof pattern == \"string\") {\n      var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;};\n      var substr = this.string.substr(this.pos, pattern.length);\n      if (cased(substr) == cased(pattern)) {\n        if (consume !== false) this.pos += pattern.length;\n        return true;\n      }\n    } else {\n      var match = this.string.slice(this.pos).match(pattern);\n      if (match && match.index > 0) return null;\n      if (match && consume !== false) this.pos += match[0].length;\n      return match;\n    }\n  },\n  current: function(){return this.string.slice(this.start, this.pos);},\n  hideFirstChars: function(n, inner) {\n    this.lineStart += n;\n    try { return inner(); }\n    finally { this.lineStart -= n; }\n  }\n};\nCodeMirror.StringStream = StringStream;\n\nCodeMirror.startState = function (mode, a1, a2) {\n  return mode.startState ? mode.startState(a1, a2) : true;\n};\n\nvar modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {};\nCodeMirror.defineMode = function (name, mode) {\n  if (arguments.length > 2)\n    mode.dependencies = Array.prototype.slice.call(arguments, 2);\n  modes[name] = mode;\n};\nCodeMirror.defineMIME = function (mime, spec) { mimeModes[mime] = spec; };\nCodeMirror.resolveMode = function(spec) {\n  if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n    spec = mimeModes[spec];\n  } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n    spec = mimeModes[spec.name];\n  }\n  if (typeof spec == \"string\") return {name: spec};\n  else return spec || {name: \"null\"};\n};\nCodeMirror.getMode = function (options, spec) {\n  spec = CodeMirror.resolveMode(spec);\n  var mfactory = modes[spec.name];\n  if (!mfactory) throw new Error(\"Unknown mode: \" + spec);\n  return mfactory(options, spec);\n};\nCodeMirror.registerHelper = CodeMirror.registerGlobalHelper = Math.min;\nCodeMirror.defineMode(\"null\", function() {\n  return {token: function(stream) {stream.skipToEnd();}};\n});\nCodeMirror.defineMIME(\"text/plain\", \"null\");\n\nCodeMirror.runMode = function (string, modespec, callback, options) {\n  var mode = CodeMirror.getMode({ indentUnit: 2 }, modespec);\n\n  if (callback.nodeType == 1) {\n    var tabSize = (options && options.tabSize) || 4;\n    var node = callback, col = 0;\n    node.innerHTML = \"\";\n    callback = function (text, style) {\n      if (text == \"\\n\") {\n        node.appendChild(document.createElement(\"br\"));\n        col = 0;\n        return;\n      }\n      var content = \"\";\n      // replace tabs\n      for (var pos = 0; ;) {\n        var idx = text.indexOf(\"\\t\", pos);\n        if (idx == -1) {\n          content += text.slice(pos);\n          col += text.length - pos;\n          break;\n        } else {\n          col += idx - pos;\n          content += text.slice(pos, idx);\n          var size = tabSize - col % tabSize;\n          col += size;\n          for (var i = 0; i < size; ++i) content += \" \";\n          pos = idx + 1;\n        }\n      }\n\n      if (style) {\n        var sp = node.appendChild(document.createElement(\"span\"));\n        sp.className = \"cm-\" + style.replace(/ +/g, \" cm-\");\n        sp.appendChild(document.createTextNode(content));\n      } else {\n        node.appendChild(document.createTextNode(content));\n      }\n    };\n  }\n\n  var lines = splitLines(string), state = (options && options.state) || CodeMirror.startState(mode);\n  for (var i = 0, e = lines.length; i < e; ++i) {\n    if (i) callback(\"\\n\");\n    var stream = new CodeMirror.StringStream(lines[i]);\n    if (!stream.string && mode.blankLine) mode.blankLine(state);\n    while (!stream.eol()) {\n      var style = mode.token(stream, state);\n      callback(stream.current(), style, i, stream.start, state);\n      stream.start = stream.pos;\n    }\n  }\n};\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/runmode/runmode.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.runMode = function(string, modespec, callback, options) {\n  var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);\n  var ie = /MSIE \\d/.test(navigator.userAgent);\n  var ie_lt9 = ie && (document.documentMode == null || document.documentMode < 9);\n\n  if (callback.nodeType == 1) {\n    var tabSize = (options && options.tabSize) || CodeMirror.defaults.tabSize;\n    var node = callback, col = 0;\n    node.innerHTML = \"\";\n    callback = function(text, style) {\n      if (text == \"\\n\") {\n        // Emitting LF or CRLF on IE8 or earlier results in an incorrect display.\n        // Emitting a carriage return makes everything ok.\n        node.appendChild(document.createTextNode(ie_lt9 ? '\\r' : text));\n        col = 0;\n        return;\n      }\n      var content = \"\";\n      // replace tabs\n      for (var pos = 0;;) {\n        var idx = text.indexOf(\"\\t\", pos);\n        if (idx == -1) {\n          content += text.slice(pos);\n          col += text.length - pos;\n          break;\n        } else {\n          col += idx - pos;\n          content += text.slice(pos, idx);\n          var size = tabSize - col % tabSize;\n          col += size;\n          for (var i = 0; i < size; ++i) content += \" \";\n          pos = idx + 1;\n        }\n      }\n\n      if (style) {\n        var sp = node.appendChild(document.createElement(\"span\"));\n        sp.className = \"cm-\" + style.replace(/ +/g, \" cm-\");\n        sp.appendChild(document.createTextNode(content));\n      } else {\n        node.appendChild(document.createTextNode(content));\n      }\n    };\n  }\n\n  var lines = CodeMirror.splitLines(string), state = (options && options.state) || CodeMirror.startState(mode);\n  for (var i = 0, e = lines.length; i < e; ++i) {\n    if (i) callback(\"\\n\");\n    var stream = new CodeMirror.StringStream(lines[i]);\n    if (!stream.string && mode.blankLine) mode.blankLine(state);\n    while (!stream.eol()) {\n      var style = mode.token(stream, state);\n      callback(stream.current(), style, i, stream.start, state);\n      stream.start = stream.pos;\n    }\n  }\n};\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/runmode/runmode.node.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/* Just enough of CodeMirror to run runMode under node.js */\n\n// declare global: StringStream\n\nfunction splitLines(string){ return string.split(/\\r?\\n|\\r/); };\n\nfunction StringStream(string) {\n  this.pos = this.start = 0;\n  this.string = string;\n  this.lineStart = 0;\n}\nStringStream.prototype = {\n  eol: function() {return this.pos >= this.string.length;},\n  sol: function() {return this.pos == 0;},\n  peek: function() {return this.string.charAt(this.pos) || null;},\n  next: function() {\n    if (this.pos < this.string.length)\n      return this.string.charAt(this.pos++);\n  },\n  eat: function(match) {\n    var ch = this.string.charAt(this.pos);\n    if (typeof match == \"string\") var ok = ch == match;\n    else var ok = ch && (match.test ? match.test(ch) : match(ch));\n    if (ok) {++this.pos; return ch;}\n  },\n  eatWhile: function(match) {\n    var start = this.pos;\n    while (this.eat(match)){}\n    return this.pos > start;\n  },\n  eatSpace: function() {\n    var start = this.pos;\n    while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos;\n    return this.pos > start;\n  },\n  skipToEnd: function() {this.pos = this.string.length;},\n  skipTo: function(ch) {\n    var found = this.string.indexOf(ch, this.pos);\n    if (found > -1) {this.pos = found; return true;}\n  },\n  backUp: function(n) {this.pos -= n;},\n  column: function() {return this.start - this.lineStart;},\n  indentation: function() {return 0;},\n  match: function(pattern, consume, caseInsensitive) {\n    if (typeof pattern == \"string\") {\n      var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;};\n      var substr = this.string.substr(this.pos, pattern.length);\n      if (cased(substr) == cased(pattern)) {\n        if (consume !== false) this.pos += pattern.length;\n        return true;\n      }\n    } else {\n      var match = this.string.slice(this.pos).match(pattern);\n      if (match && match.index > 0) return null;\n      if (match && consume !== false) this.pos += match[0].length;\n      return match;\n    }\n  },\n  current: function(){return this.string.slice(this.start, this.pos);},\n  hideFirstChars: function(n, inner) {\n    this.lineStart += n;\n    try { return inner(); }\n    finally { this.lineStart -= n; }\n  }\n};\nexports.StringStream = StringStream;\n\nexports.startState = function(mode, a1, a2) {\n  return mode.startState ? mode.startState(a1, a2) : true;\n};\n\nvar modes = exports.modes = {}, mimeModes = exports.mimeModes = {};\nexports.defineMode = function(name, mode) {\n  if (arguments.length > 2)\n    mode.dependencies = Array.prototype.slice.call(arguments, 2);\n  modes[name] = mode;\n};\nexports.defineMIME = function(mime, spec) { mimeModes[mime] = spec; };\n\nexports.defineMode(\"null\", function() {\n  return {token: function(stream) {stream.skipToEnd();}};\n});\nexports.defineMIME(\"text/plain\", \"null\");\n\nexports.resolveMode = function(spec) {\n  if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n    spec = mimeModes[spec];\n  } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n    spec = mimeModes[spec.name];\n  }\n  if (typeof spec == \"string\") return {name: spec};\n  else return spec || {name: \"null\"};\n};\nexports.getMode = function(options, spec) {\n  spec = exports.resolveMode(spec);\n  var mfactory = modes[spec.name];\n  if (!mfactory) throw new Error(\"Unknown mode: \" + spec);\n  return mfactory(options, spec);\n};\nexports.registerHelper = exports.registerGlobalHelper = Math.min;\n\nexports.runMode = function(string, modespec, callback, options) {\n  var mode = exports.getMode({indentUnit: 2}, modespec);\n  var lines = splitLines(string), state = (options && options.state) || exports.startState(mode);\n  for (var i = 0, e = lines.length; i < e; ++i) {\n    if (i) callback(\"\\n\");\n    var stream = new exports.StringStream(lines[i]);\n    if (!stream.string && mode.blankLine) mode.blankLine(state);\n    while (!stream.eol()) {\n      var style = mode.token(stream, state);\n      callback(stream.current(), style, i, stream.start, state);\n      stream.start = stream.pos;\n    }\n  }\n};\n\nrequire.cache[require.resolve(\"../../lib/codemirror\")] = require.cache[require.resolve(\"./runmode.node\")];\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/scroll/annotatescrollbar.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineExtension(\"annotateScrollbar\", function(options) {\n    if (typeof options == \"string\") options = {className: options};\n    return new Annotation(this, options);\n  });\n\n  CodeMirror.defineOption(\"scrollButtonHeight\", 0);\n\n  function Annotation(cm, options) {\n    this.cm = cm;\n    this.options = options;\n    this.buttonHeight = options.scrollButtonHeight || cm.getOption(\"scrollButtonHeight\");\n    this.annotations = [];\n    this.doRedraw = this.doUpdate = null;\n    this.div = cm.getWrapperElement().appendChild(document.createElement(\"div\"));\n    this.div.style.cssText = \"position: absolute; right: 0; top: 0; z-index: 7; pointer-events: none\";\n    this.computeScale();\n\n    function scheduleRedraw(delay) {\n      clearTimeout(self.doRedraw);\n      self.doRedraw = setTimeout(function() { self.redraw(); }, delay);\n    }\n\n    var self = this;\n    cm.on(\"refresh\", this.resizeHandler = function() {\n      clearTimeout(self.doUpdate);\n      self.doUpdate = setTimeout(function() {\n        if (self.computeScale()) scheduleRedraw(20);\n      }, 100);\n    });\n    cm.on(\"markerAdded\", this.resizeHandler);\n    cm.on(\"markerCleared\", this.resizeHandler);\n    if (options.listenForChanges !== false)\n      cm.on(\"change\", this.changeHandler = function() {\n        scheduleRedraw(250);\n      });\n  }\n\n  Annotation.prototype.computeScale = function() {\n    var cm = this.cm;\n    var hScale = (cm.getWrapperElement().clientHeight - cm.display.barHeight - this.buttonHeight * 2) /\n      cm.heightAtLine(cm.lastLine() + 1, \"local\");\n    if (hScale != this.hScale) {\n      this.hScale = hScale;\n      return true;\n    }\n  };\n\n  Annotation.prototype.update = function(annotations) {\n    this.annotations = annotations;\n    this.redraw();\n  };\n\n  Annotation.prototype.redraw = function(compute) {\n    if (compute !== false) this.computeScale();\n    var cm = this.cm, hScale = this.hScale;\n\n    var frag = document.createDocumentFragment(), anns = this.annotations;\n    if (cm.display.barWidth) for (var i = 0, nextTop; i < anns.length; i++) {\n      var ann = anns[i];\n      var top = nextTop || cm.charCoords(ann.from, \"local\").top * hScale;\n      var bottom = cm.charCoords(ann.to, \"local\").bottom * hScale;\n      while (i < anns.length - 1) {\n        nextTop = cm.charCoords(anns[i + 1].from, \"local\").top * hScale;\n        if (nextTop > bottom + .9) break;\n        ann = anns[++i];\n        bottom = cm.charCoords(ann.to, \"local\").bottom * hScale;\n      }\n      if (bottom == top) continue;\n      var height = Math.max(bottom - top, 3);\n\n      var elt = frag.appendChild(document.createElement(\"div\"));\n      elt.style.cssText = \"position: absolute; right: 0px; width: \" + Math.max(cm.display.barWidth - 1, 2) + \"px; top: \"\n        + (top + this.buttonHeight) + \"px; height: \" + height + \"px\";\n      elt.className = this.options.className;\n    }\n    this.div.textContent = \"\";\n    this.div.appendChild(frag);\n  };\n\n  Annotation.prototype.clear = function() {\n    this.cm.off(\"refresh\", this.resizeHandler);\n    this.cm.off(\"markerAdded\", this.resizeHandler);\n    this.cm.off(\"markerCleared\", this.resizeHandler);\n    if (this.changeHandler) this.cm.off(\"change\", this.changeHandler);\n    this.div.parentNode.removeChild(this.div);\n  };\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/scroll/scrollpastend.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineOption(\"scrollPastEnd\", false, function(cm, val, old) {\n    if (old && old != CodeMirror.Init) {\n      cm.off(\"change\", onChange);\n      cm.off(\"refresh\", updateBottomMargin);\n      cm.display.lineSpace.parentNode.style.paddingBottom = \"\";\n      cm.state.scrollPastEndPadding = null;\n    }\n    if (val) {\n      cm.on(\"change\", onChange);\n      cm.on(\"refresh\", updateBottomMargin);\n      updateBottomMargin(cm);\n    }\n  });\n\n  function onChange(cm, change) {\n    if (CodeMirror.changeEnd(change).line == cm.lastLine())\n      updateBottomMargin(cm);\n  }\n\n  function updateBottomMargin(cm) {\n    var padding = \"\";\n    if (cm.lineCount() > 1) {\n      var totalH = cm.display.scroller.clientHeight - 30,\n          lastLineH = cm.getLineHandle(cm.lastLine()).height;\n      padding = (totalH - lastLineH) + \"px\";\n    }\n    if (cm.state.scrollPastEndPadding != padding) {\n      cm.state.scrollPastEndPadding = padding;\n      cm.display.lineSpace.parentNode.style.paddingBottom = padding;\n      cm.setSize();\n    }\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/scroll/simplescrollbars.css",
    "content": ".CodeMirror-simplescroll-horizontal div, .CodeMirror-simplescroll-vertical div {\n  position: absolute;\n  background: #ccc;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  border: 1px solid #bbb;\n  border-radius: 2px;\n}\n\n.CodeMirror-simplescroll-horizontal, .CodeMirror-simplescroll-vertical {\n  position: absolute;\n  z-index: 6;\n  background: #eee;\n}\n\n.CodeMirror-simplescroll-horizontal {\n  bottom: 0; left: 0;\n  height: 8px;\n}\n.CodeMirror-simplescroll-horizontal div {\n  bottom: 0;\n  height: 100%;\n}\n\n.CodeMirror-simplescroll-vertical {\n  right: 0; top: 0;\n  width: 8px;\n}\n.CodeMirror-simplescroll-vertical div {\n  right: 0;\n  width: 100%;\n}\n\n\n.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler, .CodeMirror-overlayscroll .CodeMirror-gutter-filler {\n  display: none;\n}\n\n.CodeMirror-overlayscroll-horizontal div, .CodeMirror-overlayscroll-vertical div {\n  position: absolute;\n  background: #bcd;\n  border-radius: 3px;\n}\n\n.CodeMirror-overlayscroll-horizontal, .CodeMirror-overlayscroll-vertical {\n  position: absolute;\n  z-index: 6;\n}\n\n.CodeMirror-overlayscroll-horizontal {\n  bottom: 0; left: 0;\n  height: 6px;\n}\n.CodeMirror-overlayscroll-horizontal div {\n  bottom: 0;\n  height: 100%;\n}\n\n.CodeMirror-overlayscroll-vertical {\n  right: 0; top: 0;\n  width: 6px;\n}\n.CodeMirror-overlayscroll-vertical div {\n  right: 0;\n  width: 100%;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/scroll/simplescrollbars.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function Bar(cls, orientation, scroll) {\n    this.orientation = orientation;\n    this.scroll = scroll;\n    this.screen = this.total = this.size = 1;\n    this.pos = 0;\n\n    this.node = document.createElement(\"div\");\n    this.node.className = cls + \"-\" + orientation;\n    this.inner = this.node.appendChild(document.createElement(\"div\"));\n\n    var self = this;\n    CodeMirror.on(this.inner, \"mousedown\", function(e) {\n      if (e.which != 1) return;\n      CodeMirror.e_preventDefault(e);\n      var axis = self.orientation == \"horizontal\" ? \"pageX\" : \"pageY\";\n      var start = e[axis], startpos = self.pos;\n      function done() {\n        CodeMirror.off(document, \"mousemove\", move);\n        CodeMirror.off(document, \"mouseup\", done);\n      }\n      function move(e) {\n        if (e.which != 1) return done();\n        self.moveTo(startpos + (e[axis] - start) * (self.total / self.size));\n      }\n      CodeMirror.on(document, \"mousemove\", move);\n      CodeMirror.on(document, \"mouseup\", done);\n    });\n\n    CodeMirror.on(this.node, \"click\", function(e) {\n      CodeMirror.e_preventDefault(e);\n      var innerBox = self.inner.getBoundingClientRect(), where;\n      if (self.orientation == \"horizontal\")\n        where = e.clientX < innerBox.left ? -1 : e.clientX > innerBox.right ? 1 : 0;\n      else\n        where = e.clientY < innerBox.top ? -1 : e.clientY > innerBox.bottom ? 1 : 0;\n      self.moveTo(self.pos + where * self.screen);\n    });\n\n    function onWheel(e) {\n      var moved = CodeMirror.wheelEventPixels(e)[self.orientation == \"horizontal\" ? \"x\" : \"y\"];\n      var oldPos = self.pos;\n      self.moveTo(self.pos + moved);\n      if (self.pos != oldPos) CodeMirror.e_preventDefault(e);\n    }\n    CodeMirror.on(this.node, \"mousewheel\", onWheel);\n    CodeMirror.on(this.node, \"DOMMouseScroll\", onWheel);\n  }\n\n  Bar.prototype.moveTo = function(pos, update) {\n    if (pos < 0) pos = 0;\n    if (pos > this.total - this.screen) pos = this.total - this.screen;\n    if (pos == this.pos) return;\n    this.pos = pos;\n    this.inner.style[this.orientation == \"horizontal\" ? \"left\" : \"top\"] =\n      (pos * (this.size / this.total)) + \"px\";\n    if (update !== false) this.scroll(pos, this.orientation);\n  };\n\n  Bar.prototype.update = function(scrollSize, clientSize, barSize) {\n    this.screen = clientSize;\n    this.total = scrollSize;\n    this.size = barSize;\n\n    // FIXME clip to min size?\n    this.inner.style[this.orientation == \"horizontal\" ? \"width\" : \"height\"] =\n      this.screen * (this.size / this.total) + \"px\";\n    this.inner.style[this.orientation == \"horizontal\" ? \"left\" : \"top\"] =\n      this.pos * (this.size / this.total) + \"px\";\n  };\n\n  function SimpleScrollbars(cls, place, scroll) {\n    this.addClass = cls;\n    this.horiz = new Bar(cls, \"horizontal\", scroll);\n    place(this.horiz.node);\n    this.vert = new Bar(cls, \"vertical\", scroll);\n    place(this.vert.node);\n    this.width = null;\n  }\n\n  SimpleScrollbars.prototype.update = function(measure) {\n    if (this.width == null) {\n      var style = window.getComputedStyle ? window.getComputedStyle(this.horiz.node) : this.horiz.node.currentStyle;\n      if (style) this.width = parseInt(style.height);\n    }\n    var width = this.width || 0;\n\n    var needsH = measure.scrollWidth > measure.clientWidth + 1;\n    var needsV = measure.scrollHeight > measure.clientHeight + 1;\n    this.vert.node.style.display = needsV ? \"block\" : \"none\";\n    this.horiz.node.style.display = needsH ? \"block\" : \"none\";\n\n    if (needsV) {\n      this.vert.update(measure.scrollHeight, measure.clientHeight,\n                       measure.viewHeight - (needsH ? width : 0));\n      this.vert.node.style.display = \"block\";\n      this.vert.node.style.bottom = needsH ? width + \"px\" : \"0\";\n    }\n    if (needsH) {\n      this.horiz.update(measure.scrollWidth, measure.clientWidth,\n                        measure.viewWidth - (needsV ? width : 0) - measure.barLeft);\n      this.horiz.node.style.right = needsV ? width + \"px\" : \"0\";\n      this.horiz.node.style.left = measure.barLeft + \"px\";\n    }\n\n    return {right: needsV ? width : 0, bottom: needsH ? width : 0};\n  };\n\n  SimpleScrollbars.prototype.setScrollTop = function(pos) {\n    this.vert.moveTo(pos, false);\n  };\n\n  SimpleScrollbars.prototype.setScrollLeft = function(pos) {\n    this.horiz.moveTo(pos, false);\n  };\n\n  SimpleScrollbars.prototype.clear = function() {\n    var parent = this.horiz.node.parentNode;\n    parent.removeChild(this.horiz.node);\n    parent.removeChild(this.vert.node);\n  };\n\n  CodeMirror.scrollbarModel.simple = function(place, scroll) {\n    return new SimpleScrollbars(\"CodeMirror-simplescroll\", place, scroll);\n  };\n  CodeMirror.scrollbarModel.overlay = function(place, scroll) {\n    return new SimpleScrollbars(\"CodeMirror-overlayscroll\", place, scroll);\n  };\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/search/match-highlighter.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Highlighting text that matches the selection\n//\n// Defines an option highlightSelectionMatches, which, when enabled,\n// will style strings that match the selection throughout the\n// document.\n//\n// The option can be set to true to simply enable it, or to a\n// {minChars, style, wordsOnly, showToken, delay} object to explicitly\n// configure it. minChars is the minimum amount of characters that should be\n// selected for the behavior to occur, and style is the token style to\n// apply to the matches. This will be prefixed by \"cm-\" to create an\n// actual CSS class name. If wordsOnly is enabled, the matches will be\n// highlighted only if the selected text is a word. showToken, when enabled,\n// will cause the current token to be highlighted when nothing is selected.\n// delay is used to specify how much time to wait, in milliseconds, before\n// highlighting the matches.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var DEFAULT_MIN_CHARS = 2;\n  var DEFAULT_TOKEN_STYLE = \"matchhighlight\";\n  var DEFAULT_DELAY = 100;\n  var DEFAULT_WORDS_ONLY = false;\n\n  function State(options) {\n    if (typeof options == \"object\") {\n      this.minChars = options.minChars;\n      this.style = options.style;\n      this.showToken = options.showToken;\n      this.delay = options.delay;\n      this.wordsOnly = options.wordsOnly;\n    }\n    if (this.style == null) this.style = DEFAULT_TOKEN_STYLE;\n    if (this.minChars == null) this.minChars = DEFAULT_MIN_CHARS;\n    if (this.delay == null) this.delay = DEFAULT_DELAY;\n    if (this.wordsOnly == null) this.wordsOnly = DEFAULT_WORDS_ONLY;\n    this.overlay = this.timeout = null;\n  }\n\n  CodeMirror.defineOption(\"highlightSelectionMatches\", false, function(cm, val, old) {\n    if (old && old != CodeMirror.Init) {\n      var over = cm.state.matchHighlighter.overlay;\n      if (over) cm.removeOverlay(over);\n      clearTimeout(cm.state.matchHighlighter.timeout);\n      cm.state.matchHighlighter = null;\n      cm.off(\"cursorActivity\", cursorActivity);\n    }\n    if (val) {\n      cm.state.matchHighlighter = new State(val);\n      highlightMatches(cm);\n      cm.on(\"cursorActivity\", cursorActivity);\n    }\n  });\n\n  function cursorActivity(cm) {\n    var state = cm.state.matchHighlighter;\n    clearTimeout(state.timeout);\n    state.timeout = setTimeout(function() {highlightMatches(cm);}, state.delay);\n  }\n\n  function highlightMatches(cm) {\n    cm.operation(function() {\n      var state = cm.state.matchHighlighter;\n      if (state.overlay) {\n        cm.removeOverlay(state.overlay);\n        state.overlay = null;\n      }\n      if (!cm.somethingSelected() && state.showToken) {\n        var re = state.showToken === true ? /[\\w$]/ : state.showToken;\n        var cur = cm.getCursor(), line = cm.getLine(cur.line), start = cur.ch, end = start;\n        while (start && re.test(line.charAt(start - 1))) --start;\n        while (end < line.length && re.test(line.charAt(end))) ++end;\n        if (start < end)\n          cm.addOverlay(state.overlay = makeOverlay(line.slice(start, end), re, state.style));\n        return;\n      }\n      var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n      if (from.line != to.line) return;\n      if (state.wordsOnly && !isWord(cm, from, to)) return;\n      var selection = cm.getRange(from, to).replace(/^\\s+|\\s+$/g, \"\");\n      if (selection.length >= state.minChars)\n        cm.addOverlay(state.overlay = makeOverlay(selection, false, state.style));\n    });\n  }\n\n  function isWord(cm, from, to) {\n    var str = cm.getRange(from, to);\n    if (str.match(/^\\w+$/) !== null) {\n        if (from.ch > 0) {\n            var pos = {line: from.line, ch: from.ch - 1};\n            var chr = cm.getRange(pos, from);\n            if (chr.match(/\\W/) === null) return false;\n        }\n        if (to.ch < cm.getLine(from.line).length) {\n            var pos = {line: to.line, ch: to.ch + 1};\n            var chr = cm.getRange(to, pos);\n            if (chr.match(/\\W/) === null) return false;\n        }\n        return true;\n    } else return false;\n  }\n\n  function boundariesAround(stream, re) {\n    return (!stream.start || !re.test(stream.string.charAt(stream.start - 1))) &&\n      (stream.pos == stream.string.length || !re.test(stream.string.charAt(stream.pos)));\n  }\n\n  function makeOverlay(query, hasBoundary, style) {\n    return {token: function(stream) {\n      if (stream.match(query) &&\n          (!hasBoundary || boundariesAround(stream, hasBoundary)))\n        return style;\n      stream.next();\n      stream.skipTo(query.charAt(0)) || stream.skipToEnd();\n    }};\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/search/matchesonscrollbar.css",
    "content": ".CodeMirror-search-match {\n  background: gold;\n  border-top: 1px solid orange;\n  border-bottom: 1px solid orange;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  opacity: .5;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/search/matchesonscrollbar.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../scroll/annotatescrollbar\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"./searchcursor\", \"../scroll/annotatescrollbar\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineExtension(\"showMatchesOnScrollbar\", function(query, caseFold, options) {\n    if (typeof options == \"string\") options = {className: options};\n    if (!options) options = {};\n    return new SearchAnnotation(this, query, caseFold, options);\n  });\n\n  function SearchAnnotation(cm, query, caseFold, options) {\n    this.cm = cm;\n    var annotateOptions = {listenForChanges: false};\n    for (var prop in options) annotateOptions[prop] = options[prop];\n    if (!annotateOptions.className) annotateOptions.className = \"CodeMirror-search-match\";\n    this.annotation = cm.annotateScrollbar(annotateOptions);\n    this.query = query;\n    this.caseFold = caseFold;\n    this.gap = {from: cm.firstLine(), to: cm.lastLine() + 1};\n    this.matches = [];\n    this.update = null;\n\n    this.findMatches();\n    this.annotation.update(this.matches);\n\n    var self = this;\n    cm.on(\"change\", this.changeHandler = function(_cm, change) { self.onChange(change); });\n  }\n\n  var MAX_MATCHES = 1000;\n\n  SearchAnnotation.prototype.findMatches = function() {\n    if (!this.gap) return;\n    for (var i = 0; i < this.matches.length; i++) {\n      var match = this.matches[i];\n      if (match.from.line >= this.gap.to) break;\n      if (match.to.line >= this.gap.from) this.matches.splice(i--, 1);\n    }\n    var cursor = this.cm.getSearchCursor(this.query, CodeMirror.Pos(this.gap.from, 0), this.caseFold);\n    while (cursor.findNext()) {\n      var match = {from: cursor.from(), to: cursor.to()};\n      if (match.from.line >= this.gap.to) break;\n      this.matches.splice(i++, 0, match);\n      if (this.matches.length > MAX_MATCHES) break;\n    }\n    this.gap = null;\n  };\n\n  function offsetLine(line, changeStart, sizeChange) {\n    if (line <= changeStart) return line;\n    return Math.max(changeStart, line + sizeChange);\n  }\n\n  SearchAnnotation.prototype.onChange = function(change) {\n    var startLine = change.from.line;\n    var endLine = CodeMirror.changeEnd(change).line;\n    var sizeChange = endLine - change.to.line;\n    if (this.gap) {\n      this.gap.from = Math.min(offsetLine(this.gap.from, startLine, sizeChange), change.from.line);\n      this.gap.to = Math.max(offsetLine(this.gap.to, startLine, sizeChange), change.from.line);\n    } else {\n      this.gap = {from: change.from.line, to: endLine + 1};\n    }\n\n    if (sizeChange) for (var i = 0; i < this.matches.length; i++) {\n      var match = this.matches[i];\n      var newFrom = offsetLine(match.from.line, startLine, sizeChange);\n      if (newFrom != match.from.line) match.from = CodeMirror.Pos(newFrom, match.from.ch);\n      var newTo = offsetLine(match.to.line, startLine, sizeChange);\n      if (newTo != match.to.line) match.to = CodeMirror.Pos(newTo, match.to.ch);\n    }\n    clearTimeout(this.update);\n    var self = this;\n    this.update = setTimeout(function() { self.updateAfterChange(); }, 250);\n  };\n\n  SearchAnnotation.prototype.updateAfterChange = function() {\n    this.findMatches();\n    this.annotation.update(this.matches);\n  };\n\n  SearchAnnotation.prototype.clear = function() {\n    this.cm.off(\"change\", this.changeHandler);\n    this.annotation.clear();\n  };\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/search/search.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Define search commands. Depends on dialog.js or another\n// implementation of the openDialog method.\n\n// Replace works a little oddly -- it will do the replace on the next\n// Ctrl-G (or whatever is bound to findNext) press. You prevent a\n// replace by making sure the match is no longer selected when hitting\n// Ctrl-G.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../dialog/dialog\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"./searchcursor\", \"../dialog/dialog\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n  function searchOverlay(query, caseInsensitive) {\n    if (typeof query == \"string\")\n      query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");\n    else if (!query.global)\n      query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n\n    return {token: function(stream) {\n      query.lastIndex = stream.pos;\n      var match = query.exec(stream.string);\n      if (match && match.index == stream.pos) {\n        stream.pos += match[0].length;\n        return \"searching\";\n      } else if (match) {\n        stream.pos = match.index;\n      } else {\n        stream.skipToEnd();\n      }\n    }};\n  }\n\n  function SearchState() {\n    this.posFrom = this.posTo = this.query = null;\n    this.overlay = null;\n  }\n  function getSearchState(cm) {\n    return cm.state.search || (cm.state.search = new SearchState());\n  }\n  function queryCaseInsensitive(query) {\n    return typeof query == \"string\" && query == query.toLowerCase();\n  }\n  function getSearchCursor(cm, query, pos) {\n    // Heuristic: if the query string is all lowercase, do a case insensitive search.\n    return cm.getSearchCursor(query, pos, queryCaseInsensitive(query));\n  }\n  function dialog(cm, text, shortText, deflt, f) {\n    if (cm.openDialog) cm.openDialog(text, f, {value: deflt});\n    else f(prompt(shortText, deflt));\n  }\n  function confirmDialog(cm, text, shortText, fs) {\n    if (cm.openConfirm) cm.openConfirm(text, fs);\n    else if (confirm(shortText)) fs[0]();\n  }\n  function parseQuery(query) {\n    var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n    if (isRE) {\n      try { query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\"); }\n      catch(e) {} // Not a regular expression after all, do a string search\n    }\n    if (typeof query == \"string\" ? query == \"\" : query.test(\"\"))\n      query = /x^/;\n    return query;\n  }\n  var queryDialog =\n    'Search: <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use /re/ syntax for regexp search)</span>';\n  function doSearch(cm, rev) {\n    var state = getSearchState(cm);\n    if (state.query) return findNext(cm, rev);\n    dialog(cm, queryDialog, \"Search for:\", cm.getSelection(), function(query) {\n      cm.operation(function() {\n        if (!query || state.query) return;\n        state.query = parseQuery(query);\n        cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n        state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n        cm.addOverlay(state.overlay);\n        if (cm.showMatchesOnScrollbar) {\n          if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n          state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n        }\n        state.posFrom = state.posTo = cm.getCursor();\n        findNext(cm, rev);\n      });\n    });\n  }\n  function findNext(cm, rev) {cm.operation(function() {\n    var state = getSearchState(cm);\n    var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n    if (!cursor.find(rev)) {\n      cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n      if (!cursor.find(rev)) return;\n    }\n    cm.setSelection(cursor.from(), cursor.to());\n    cm.scrollIntoView({from: cursor.from(), to: cursor.to()});\n    state.posFrom = cursor.from(); state.posTo = cursor.to();\n  });}\n  function clearSearch(cm) {cm.operation(function() {\n    var state = getSearchState(cm);\n    if (!state.query) return;\n    state.query = null;\n    cm.removeOverlay(state.overlay);\n    if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n  });}\n\n  var replaceQueryDialog =\n    'Replace: <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">(Use /re/ syntax for regexp search)</span>';\n  var replacementQueryDialog = 'With: <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/>';\n  var doReplaceConfirm = \"Replace? <button>Yes</button> <button>No</button> <button>Stop</button>\";\n  function replace(cm, all) {\n    if (cm.getOption(\"readOnly\")) return;\n    dialog(cm, replaceQueryDialog, \"Replace:\", cm.getSelection(), function(query) {\n      if (!query) return;\n      query = parseQuery(query);\n      dialog(cm, replacementQueryDialog, \"Replace with:\", \"\", function(text) {\n        if (all) {\n          cm.operation(function() {\n            for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n              if (typeof query != \"string\") {\n                var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n                cursor.replace(text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n              } else cursor.replace(text);\n            }\n          });\n        } else {\n          clearSearch(cm);\n          var cursor = getSearchCursor(cm, query, cm.getCursor());\n          var advance = function() {\n            var start = cursor.from(), match;\n            if (!(match = cursor.findNext())) {\n              cursor = getSearchCursor(cm, query);\n              if (!(match = cursor.findNext()) ||\n                  (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return;\n            }\n            cm.setSelection(cursor.from(), cursor.to());\n            cm.scrollIntoView({from: cursor.from(), to: cursor.to()});\n            confirmDialog(cm, doReplaceConfirm, \"Replace?\",\n                          [function() {doReplace(match);}, advance]);\n          };\n          var doReplace = function(match) {\n            cursor.replace(typeof query == \"string\" ? text :\n                           text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n            advance();\n          };\n          advance();\n        }\n      });\n    });\n  }\n\n  CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);};\n  CodeMirror.commands.findNext = doSearch;\n  CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};\n  CodeMirror.commands.clearSearch = clearSearch;\n  CodeMirror.commands.replace = replace;\n  CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/search/searchcursor.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n  var Pos = CodeMirror.Pos;\n\n  function SearchCursor(doc, query, pos, caseFold) {\n    this.atOccurrence = false; this.doc = doc;\n    if (caseFold == null && typeof query == \"string\") caseFold = false;\n\n    pos = pos ? doc.clipPos(pos) : Pos(0, 0);\n    this.pos = {from: pos, to: pos};\n\n    // The matches method is filled in based on the type of query.\n    // It takes a position and a direction, and returns an object\n    // describing the next occurrence of the query, or null if no\n    // more matches were found.\n    if (typeof query != \"string\") { // Regexp match\n      if (!query.global) query = new RegExp(query.source, query.ignoreCase ? \"ig\" : \"g\");\n      this.matches = function(reverse, pos) {\n        if (reverse) {\n          query.lastIndex = 0;\n          var line = doc.getLine(pos.line).slice(0, pos.ch), cutOff = 0, match, start;\n          for (;;) {\n            query.lastIndex = cutOff;\n            var newMatch = query.exec(line);\n            if (!newMatch) break;\n            match = newMatch;\n            start = match.index;\n            cutOff = match.index + (match[0].length || 1);\n            if (cutOff == line.length) break;\n          }\n          var matchLen = (match && match[0].length) || 0;\n          if (!matchLen) {\n            if (start == 0 && line.length == 0) {match = undefined;}\n            else if (start != doc.getLine(pos.line).length) {\n              matchLen++;\n            }\n          }\n        } else {\n          query.lastIndex = pos.ch;\n          var line = doc.getLine(pos.line), match = query.exec(line);\n          var matchLen = (match && match[0].length) || 0;\n          var start = match && match.index;\n          if (start + matchLen != line.length && !matchLen) matchLen = 1;\n        }\n        if (match && matchLen)\n          return {from: Pos(pos.line, start),\n                  to: Pos(pos.line, start + matchLen),\n                  match: match};\n      };\n    } else { // String query\n      var origQuery = query;\n      if (caseFold) query = query.toLowerCase();\n      var fold = caseFold ? function(str){return str.toLowerCase();} : function(str){return str;};\n      var target = query.split(\"\\n\");\n      // Different methods for single-line and multi-line queries\n      if (target.length == 1) {\n        if (!query.length) {\n          // Empty string would match anything and never progress, so\n          // we define it to match nothing instead.\n          this.matches = function() {};\n        } else {\n          this.matches = function(reverse, pos) {\n            if (reverse) {\n              var orig = doc.getLine(pos.line).slice(0, pos.ch), line = fold(orig);\n              var match = line.lastIndexOf(query);\n              if (match > -1) {\n                match = adjustPos(orig, line, match);\n                return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n              }\n             } else {\n               var orig = doc.getLine(pos.line).slice(pos.ch), line = fold(orig);\n               var match = line.indexOf(query);\n               if (match > -1) {\n                 match = adjustPos(orig, line, match) + pos.ch;\n                 return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n               }\n            }\n          };\n        }\n      } else {\n        var origTarget = origQuery.split(\"\\n\");\n        this.matches = function(reverse, pos) {\n          var last = target.length - 1;\n          if (reverse) {\n            if (pos.line - (target.length - 1) < doc.firstLine()) return;\n            if (fold(doc.getLine(pos.line).slice(0, origTarget[last].length)) != target[target.length - 1]) return;\n            var to = Pos(pos.line, origTarget[last].length);\n            for (var ln = pos.line - 1, i = last - 1; i >= 1; --i, --ln)\n              if (target[i] != fold(doc.getLine(ln))) return;\n            var line = doc.getLine(ln), cut = line.length - origTarget[0].length;\n            if (fold(line.slice(cut)) != target[0]) return;\n            return {from: Pos(ln, cut), to: to};\n          } else {\n            if (pos.line + (target.length - 1) > doc.lastLine()) return;\n            var line = doc.getLine(pos.line), cut = line.length - origTarget[0].length;\n            if (fold(line.slice(cut)) != target[0]) return;\n            var from = Pos(pos.line, cut);\n            for (var ln = pos.line + 1, i = 1; i < last; ++i, ++ln)\n              if (target[i] != fold(doc.getLine(ln))) return;\n            if (fold(doc.getLine(ln).slice(0, origTarget[last].length)) != target[last]) return;\n            return {from: from, to: Pos(ln, origTarget[last].length)};\n          }\n        };\n      }\n    }\n  }\n\n  SearchCursor.prototype = {\n    findNext: function() {return this.find(false);},\n    findPrevious: function() {return this.find(true);},\n\n    find: function(reverse) {\n      var self = this, pos = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n      function savePosAndFail(line) {\n        var pos = Pos(line, 0);\n        self.pos = {from: pos, to: pos};\n        self.atOccurrence = false;\n        return false;\n      }\n\n      for (;;) {\n        if (this.pos = this.matches(reverse, pos)) {\n          this.atOccurrence = true;\n          return this.pos.match || true;\n        }\n        if (reverse) {\n          if (!pos.line) return savePosAndFail(0);\n          pos = Pos(pos.line-1, this.doc.getLine(pos.line-1).length);\n        }\n        else {\n          var maxLine = this.doc.lineCount();\n          if (pos.line == maxLine - 1) return savePosAndFail(maxLine);\n          pos = Pos(pos.line + 1, 0);\n        }\n      }\n    },\n\n    from: function() {if (this.atOccurrence) return this.pos.from;},\n    to: function() {if (this.atOccurrence) return this.pos.to;},\n\n    replace: function(newText) {\n      if (!this.atOccurrence) return;\n      var lines = CodeMirror.splitLines(newText);\n      this.doc.replaceRange(lines, this.pos.from, this.pos.to);\n      this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n                        lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0));\n    }\n  };\n\n  // Maps a position in a case-folded line back to a position in the original line\n  // (compensating for codepoints increasing in number during folding)\n  function adjustPos(orig, folded, pos) {\n    if (orig.length == folded.length) return pos;\n    for (var pos1 = Math.min(pos, orig.length);;) {\n      var len1 = orig.slice(0, pos1).toLowerCase().length;\n      if (len1 < pos) ++pos1;\n      else if (len1 > pos) --pos1;\n      else return pos1;\n    }\n  }\n\n  CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n    return new SearchCursor(this.doc, query, pos, caseFold);\n  });\n  CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n    return new SearchCursor(this, query, pos, caseFold);\n  });\n\n  CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n    var ranges = [], next;\n    var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold);\n    while (next = cur.findNext()) {\n      if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break;\n      ranges.push({anchor: cur.from(), head: cur.to()});\n    }\n    if (ranges.length)\n      this.setSelections(ranges, 0);\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/selection/active-line.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Because sometimes you need to style the cursor's line.\n//\n// Adds an option 'styleActiveLine' which, when enabled, gives the\n// active line's wrapping <div> the CSS class \"CodeMirror-activeline\",\n// and gives its background <div> the class \"CodeMirror-activeline-background\".\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n  var WRAP_CLASS = \"CodeMirror-activeline\";\n  var BACK_CLASS = \"CodeMirror-activeline-background\";\n\n  CodeMirror.defineOption(\"styleActiveLine\", false, function(cm, val, old) {\n    var prev = old && old != CodeMirror.Init;\n    if (val && !prev) {\n      cm.state.activeLines = [];\n      updateActiveLines(cm, cm.listSelections());\n      cm.on(\"beforeSelectionChange\", selectionChange);\n    } else if (!val && prev) {\n      cm.off(\"beforeSelectionChange\", selectionChange);\n      clearActiveLines(cm);\n      delete cm.state.activeLines;\n    }\n  });\n\n  function clearActiveLines(cm) {\n    for (var i = 0; i < cm.state.activeLines.length; i++) {\n      cm.removeLineClass(cm.state.activeLines[i], \"wrap\", WRAP_CLASS);\n      cm.removeLineClass(cm.state.activeLines[i], \"background\", BACK_CLASS);\n    }\n  }\n\n  function sameArray(a, b) {\n    if (a.length != b.length) return false;\n    for (var i = 0; i < a.length; i++)\n      if (a[i] != b[i]) return false;\n    return true;\n  }\n\n  function updateActiveLines(cm, ranges) {\n    var active = [];\n    for (var i = 0; i < ranges.length; i++) {\n      var range = ranges[i];\n      if (!range.empty()) continue;\n      var line = cm.getLineHandleVisualStart(range.head.line);\n      if (active[active.length - 1] != line) active.push(line);\n    }\n    if (sameArray(cm.state.activeLines, active)) return;\n    cm.operation(function() {\n      clearActiveLines(cm);\n      for (var i = 0; i < active.length; i++) {\n        cm.addLineClass(active[i], \"wrap\", WRAP_CLASS);\n        cm.addLineClass(active[i], \"background\", BACK_CLASS);\n      }\n      cm.state.activeLines = active;\n    });\n  }\n\n  function selectionChange(cm, sel) {\n    updateActiveLines(cm, sel.ranges);\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/selection/mark-selection.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Because sometimes you need to mark the selected *text*.\n//\n// Adds an option 'styleSelectedText' which, when enabled, gives\n// selected text the CSS class given as option value, or\n// \"CodeMirror-selectedtext\" when the value is not a string.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineOption(\"styleSelectedText\", false, function(cm, val, old) {\n    var prev = old && old != CodeMirror.Init;\n    if (val && !prev) {\n      cm.state.markedSelection = [];\n      cm.state.markedSelectionStyle = typeof val == \"string\" ? val : \"CodeMirror-selectedtext\";\n      reset(cm);\n      cm.on(\"cursorActivity\", onCursorActivity);\n      cm.on(\"change\", onChange);\n    } else if (!val && prev) {\n      cm.off(\"cursorActivity\", onCursorActivity);\n      cm.off(\"change\", onChange);\n      clear(cm);\n      cm.state.markedSelection = cm.state.markedSelectionStyle = null;\n    }\n  });\n\n  function onCursorActivity(cm) {\n    cm.operation(function() { update(cm); });\n  }\n\n  function onChange(cm) {\n    if (cm.state.markedSelection.length)\n      cm.operation(function() { clear(cm); });\n  }\n\n  var CHUNK_SIZE = 8;\n  var Pos = CodeMirror.Pos;\n  var cmp = CodeMirror.cmpPos;\n\n  function coverRange(cm, from, to, addAt) {\n    if (cmp(from, to) == 0) return;\n    var array = cm.state.markedSelection;\n    var cls = cm.state.markedSelectionStyle;\n    for (var line = from.line;;) {\n      var start = line == from.line ? from : Pos(line, 0);\n      var endLine = line + CHUNK_SIZE, atEnd = endLine >= to.line;\n      var end = atEnd ? to : Pos(endLine, 0);\n      var mark = cm.markText(start, end, {className: cls});\n      if (addAt == null) array.push(mark);\n      else array.splice(addAt++, 0, mark);\n      if (atEnd) break;\n      line = endLine;\n    }\n  }\n\n  function clear(cm) {\n    var array = cm.state.markedSelection;\n    for (var i = 0; i < array.length; ++i) array[i].clear();\n    array.length = 0;\n  }\n\n  function reset(cm) {\n    clear(cm);\n    var ranges = cm.listSelections();\n    for (var i = 0; i < ranges.length; i++)\n      coverRange(cm, ranges[i].from(), ranges[i].to());\n  }\n\n  function update(cm) {\n    if (!cm.somethingSelected()) return clear(cm);\n    if (cm.listSelections().length > 1) return reset(cm);\n\n    var from = cm.getCursor(\"start\"), to = cm.getCursor(\"end\");\n\n    var array = cm.state.markedSelection;\n    if (!array.length) return coverRange(cm, from, to);\n\n    var coverStart = array[0].find(), coverEnd = array[array.length - 1].find();\n    if (!coverStart || !coverEnd || to.line - from.line < CHUNK_SIZE ||\n        cmp(from, coverEnd.to) >= 0 || cmp(to, coverStart.from) <= 0)\n      return reset(cm);\n\n    while (cmp(from, coverStart.from) > 0) {\n      array.shift().clear();\n      coverStart = array[0].find();\n    }\n    if (cmp(from, coverStart.from) < 0) {\n      if (coverStart.to.line - from.line < CHUNK_SIZE) {\n        array.shift().clear();\n        coverRange(cm, from, coverStart.to, 0);\n      } else {\n        coverRange(cm, from, coverStart.from, 0);\n      }\n    }\n\n    while (cmp(to, coverEnd.to) < 0) {\n      array.pop().clear();\n      coverEnd = array[array.length - 1].find();\n    }\n    if (cmp(to, coverEnd.to) > 0) {\n      if (to.line - coverEnd.from.line < CHUNK_SIZE) {\n        array.pop().clear();\n        coverRange(cm, coverEnd.from, to);\n      } else {\n        coverRange(cm, coverEnd.to, to);\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/selection/selection-pointer.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineOption(\"selectionPointer\", false, function(cm, val) {\n    var data = cm.state.selectionPointer;\n    if (data) {\n      CodeMirror.off(cm.getWrapperElement(), \"mousemove\", data.mousemove);\n      CodeMirror.off(cm.getWrapperElement(), \"mouseout\", data.mouseout);\n      CodeMirror.off(window, \"scroll\", data.windowScroll);\n      cm.off(\"cursorActivity\", reset);\n      cm.off(\"scroll\", reset);\n      cm.state.selectionPointer = null;\n      cm.display.lineDiv.style.cursor = \"\";\n    }\n    if (val) {\n      data = cm.state.selectionPointer = {\n        value: typeof val == \"string\" ? val : \"default\",\n        mousemove: function(event) { mousemove(cm, event); },\n        mouseout: function(event) { mouseout(cm, event); },\n        windowScroll: function() { reset(cm); },\n        rects: null,\n        mouseX: null, mouseY: null,\n        willUpdate: false\n      };\n      CodeMirror.on(cm.getWrapperElement(), \"mousemove\", data.mousemove);\n      CodeMirror.on(cm.getWrapperElement(), \"mouseout\", data.mouseout);\n      CodeMirror.on(window, \"scroll\", data.windowScroll);\n      cm.on(\"cursorActivity\", reset);\n      cm.on(\"scroll\", reset);\n    }\n  });\n\n  function mousemove(cm, event) {\n    var data = cm.state.selectionPointer;\n    if (event.buttons == null ? event.which : event.buttons) {\n      data.mouseX = data.mouseY = null;\n    } else {\n      data.mouseX = event.clientX;\n      data.mouseY = event.clientY;\n    }\n    scheduleUpdate(cm);\n  }\n\n  function mouseout(cm, event) {\n    if (!cm.getWrapperElement().contains(event.relatedTarget)) {\n      var data = cm.state.selectionPointer;\n      data.mouseX = data.mouseY = null;\n      scheduleUpdate(cm);\n    }\n  }\n\n  function reset(cm) {\n    cm.state.selectionPointer.rects = null;\n    scheduleUpdate(cm);\n  }\n\n  function scheduleUpdate(cm) {\n    if (!cm.state.selectionPointer.willUpdate) {\n      cm.state.selectionPointer.willUpdate = true;\n      setTimeout(function() {\n        update(cm);\n        cm.state.selectionPointer.willUpdate = false;\n      }, 50);\n    }\n  }\n\n  function update(cm) {\n    var data = cm.state.selectionPointer;\n    if (!data) return;\n    if (data.rects == null && data.mouseX != null) {\n      data.rects = [];\n      if (cm.somethingSelected()) {\n        for (var sel = cm.display.selectionDiv.firstChild; sel; sel = sel.nextSibling)\n          data.rects.push(sel.getBoundingClientRect());\n      }\n    }\n    var inside = false;\n    if (data.mouseX != null) for (var i = 0; i < data.rects.length; i++) {\n      var rect = data.rects[i];\n      if (rect.left <= data.mouseX && rect.right >= data.mouseX &&\n          rect.top <= data.mouseY && rect.bottom >= data.mouseY)\n        inside = true;\n    }\n    var cursor = inside ? data.value : \"\";\n    if (cm.display.lineDiv.style.cursor != cursor)\n      cm.display.lineDiv.style.cursor = cursor;\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/tern/tern.css",
    "content": ".CodeMirror-Tern-completion {\n  padding-left: 22px;\n  position: relative;\n}\n.CodeMirror-Tern-completion:before {\n  position: absolute;\n  left: 2px;\n  bottom: 2px;\n  border-radius: 50%;\n  font-size: 12px;\n  font-weight: bold;\n  height: 15px;\n  width: 15px;\n  line-height: 16px;\n  text-align: center;\n  color: white;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n.CodeMirror-Tern-completion-unknown:before {\n  content: \"?\";\n  background: #4bb;\n}\n.CodeMirror-Tern-completion-object:before {\n  content: \"O\";\n  background: #77c;\n}\n.CodeMirror-Tern-completion-fn:before {\n  content: \"F\";\n  background: #7c7;\n}\n.CodeMirror-Tern-completion-array:before {\n  content: \"A\";\n  background: #c66;\n}\n.CodeMirror-Tern-completion-number:before {\n  content: \"1\";\n  background: #999;\n}\n.CodeMirror-Tern-completion-string:before {\n  content: \"S\";\n  background: #999;\n}\n.CodeMirror-Tern-completion-bool:before {\n  content: \"B\";\n  background: #999;\n}\n\n.CodeMirror-Tern-completion-guess {\n  color: #999;\n}\n\n.CodeMirror-Tern-tooltip {\n  border: 1px solid silver;\n  border-radius: 3px;\n  color: #444;\n  padding: 2px 5px;\n  font-size: 90%;\n  font-family: monospace;\n  background-color: white;\n  white-space: pre-wrap;\n\n  max-width: 40em;\n  position: absolute;\n  z-index: 10;\n  -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n  -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n  box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n\n  transition: opacity 1s;\n  -moz-transition: opacity 1s;\n  -webkit-transition: opacity 1s;\n  -o-transition: opacity 1s;\n  -ms-transition: opacity 1s;\n}\n\n.CodeMirror-Tern-hint-doc {\n  max-width: 25em;\n  margin-top: -3px;\n}\n\n.CodeMirror-Tern-fname { color: black; }\n.CodeMirror-Tern-farg { color: #70a; }\n.CodeMirror-Tern-farg-current { text-decoration: underline; }\n.CodeMirror-Tern-type { color: #07c; }\n.CodeMirror-Tern-fhint-guess { opacity: .7; }\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/tern/tern.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Glue code between CodeMirror and Tern.\n//\n// Create a CodeMirror.TernServer to wrap an actual Tern server,\n// register open documents (CodeMirror.Doc instances) with it, and\n// call its methods to activate the assisting functions that Tern\n// provides.\n//\n// Options supported (all optional):\n// * defs: An array of JSON definition data structures.\n// * plugins: An object mapping plugin names to configuration\n//   options.\n// * getFile: A function(name, c) that can be used to access files in\n//   the project that haven't been loaded yet. Simply do c(null) to\n//   indicate that a file is not available.\n// * fileFilter: A function(value, docName, doc) that will be applied\n//   to documents before passing them on to Tern.\n// * switchToDoc: A function(name, doc) that should, when providing a\n//   multi-file view, switch the view or focus to the named file.\n// * showError: A function(editor, message) that can be used to\n//   override the way errors are displayed.\n// * completionTip: Customize the content in tooltips for completions.\n//   Is passed a single argument—the completion's data as returned by\n//   Tern—and may return a string, DOM node, or null to indicate that\n//   no tip should be shown. By default the docstring is shown.\n// * typeTip: Like completionTip, but for the tooltips shown for type\n//   queries.\n// * responseFilter: A function(doc, query, request, error, data) that\n//   will be applied to the Tern responses before treating them\n//\n//\n// It is possible to run the Tern server in a web worker by specifying\n// these additional options:\n// * useWorker: Set to true to enable web worker mode. You'll probably\n//   want to feature detect the actual value you use here, for example\n//   !!window.Worker.\n// * workerScript: The main script of the worker. Point this to\n//   wherever you are hosting worker.js from this directory.\n// * workerDeps: An array of paths pointing (relative to workerScript)\n//   to the Acorn and Tern libraries and any Tern plugins you want to\n//   load. Or, if you minified those into a single script and included\n//   them in the workerScript, simply leave this undefined.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n  // declare global: tern\n\n  CodeMirror.TernServer = function(options) {\n    var self = this;\n    this.options = options || {};\n    var plugins = this.options.plugins || (this.options.plugins = {});\n    if (!plugins.doc_comment) plugins.doc_comment = true;\n    if (this.options.useWorker) {\n      this.server = new WorkerServer(this);\n    } else {\n      this.server = new tern.Server({\n        getFile: function(name, c) { return getFile(self, name, c); },\n        async: true,\n        defs: this.options.defs || [],\n        plugins: plugins\n      });\n    }\n    this.docs = Object.create(null);\n    this.trackChange = function(doc, change) { trackChange(self, doc, change); };\n\n    this.cachedArgHints = null;\n    this.activeArgHints = null;\n    this.jumpStack = [];\n\n    this.getHint = function(cm, c) { return hint(self, cm, c); };\n    this.getHint.async = true;\n  };\n\n  CodeMirror.TernServer.prototype = {\n    addDoc: function(name, doc) {\n      var data = {doc: doc, name: name, changed: null};\n      this.server.addFile(name, docValue(this, data));\n      CodeMirror.on(doc, \"change\", this.trackChange);\n      return this.docs[name] = data;\n    },\n\n    delDoc: function(id) {\n      var found = resolveDoc(this, id);\n      if (!found) return;\n      CodeMirror.off(found.doc, \"change\", this.trackChange);\n      delete this.docs[found.name];\n      this.server.delFile(found.name);\n    },\n\n    hideDoc: function(id) {\n      closeArgHints(this);\n      var found = resolveDoc(this, id);\n      if (found && found.changed) sendDoc(this, found);\n    },\n\n    complete: function(cm) {\n      cm.showHint({hint: this.getHint});\n    },\n\n    showType: function(cm, pos, c) { showContextInfo(this, cm, pos, \"type\", c); },\n\n    showDocs: function(cm, pos, c) { showContextInfo(this, cm, pos, \"documentation\", c); },\n\n    updateArgHints: function(cm) { updateArgHints(this, cm); },\n\n    jumpToDef: function(cm) { jumpToDef(this, cm); },\n\n    jumpBack: function(cm) { jumpBack(this, cm); },\n\n    rename: function(cm) { rename(this, cm); },\n\n    selectName: function(cm) { selectName(this, cm); },\n\n    request: function (cm, query, c, pos) {\n      var self = this;\n      var doc = findDoc(this, cm.getDoc());\n      var request = buildRequest(this, doc, query, pos);\n\n      this.server.request(request, function (error, data) {\n        if (!error && self.options.responseFilter)\n          data = self.options.responseFilter(doc, query, request, error, data);\n        c(error, data);\n      });\n    },\n\n    destroy: function () {\n      if (this.worker) {\n        this.worker.terminate();\n        this.worker = null;\n      }\n    }\n  };\n\n  var Pos = CodeMirror.Pos;\n  var cls = \"CodeMirror-Tern-\";\n  var bigDoc = 250;\n\n  function getFile(ts, name, c) {\n    var buf = ts.docs[name];\n    if (buf)\n      c(docValue(ts, buf));\n    else if (ts.options.getFile)\n      ts.options.getFile(name, c);\n    else\n      c(null);\n  }\n\n  function findDoc(ts, doc, name) {\n    for (var n in ts.docs) {\n      var cur = ts.docs[n];\n      if (cur.doc == doc) return cur;\n    }\n    if (!name) for (var i = 0;; ++i) {\n      n = \"[doc\" + (i || \"\") + \"]\";\n      if (!ts.docs[n]) { name = n; break; }\n    }\n    return ts.addDoc(name, doc);\n  }\n\n  function resolveDoc(ts, id) {\n    if (typeof id == \"string\") return ts.docs[id];\n    if (id instanceof CodeMirror) id = id.getDoc();\n    if (id instanceof CodeMirror.Doc) return findDoc(ts, id);\n  }\n\n  function trackChange(ts, doc, change) {\n    var data = findDoc(ts, doc);\n\n    var argHints = ts.cachedArgHints;\n    if (argHints && argHints.doc == doc && cmpPos(argHints.start, change.to) <= 0)\n      ts.cachedArgHints = null;\n\n    var changed = data.changed;\n    if (changed == null)\n      data.changed = changed = {from: change.from.line, to: change.from.line};\n    var end = change.from.line + (change.text.length - 1);\n    if (change.from.line < changed.to) changed.to = changed.to - (change.to.line - end);\n    if (end >= changed.to) changed.to = end + 1;\n    if (changed.from > change.from.line) changed.from = change.from.line;\n\n    if (doc.lineCount() > bigDoc && change.to - changed.from > 100) setTimeout(function() {\n      if (data.changed && data.changed.to - data.changed.from > 100) sendDoc(ts, data);\n    }, 200);\n  }\n\n  function sendDoc(ts, doc) {\n    ts.server.request({files: [{type: \"full\", name: doc.name, text: docValue(ts, doc)}]}, function(error) {\n      if (error) window.console.error(error);\n      else doc.changed = null;\n    });\n  }\n\n  // Completion\n\n  function hint(ts, cm, c) {\n    ts.request(cm, {type: \"completions\", types: true, docs: true, urls: true}, function(error, data) {\n      if (error) return showError(ts, cm, error);\n      var completions = [], after = \"\";\n      var from = data.start, to = data.end;\n      if (cm.getRange(Pos(from.line, from.ch - 2), from) == \"[\\\"\" &&\n          cm.getRange(to, Pos(to.line, to.ch + 2)) != \"\\\"]\")\n        after = \"\\\"]\";\n\n      for (var i = 0; i < data.completions.length; ++i) {\n        var completion = data.completions[i], className = typeToIcon(completion.type);\n        if (data.guess) className += \" \" + cls + \"guess\";\n        completions.push({text: completion.name + after,\n                          displayText: completion.name,\n                          className: className,\n                          data: completion});\n      }\n\n      var obj = {from: from, to: to, list: completions};\n      var tooltip = null;\n      CodeMirror.on(obj, \"close\", function() { remove(tooltip); });\n      CodeMirror.on(obj, \"update\", function() { remove(tooltip); });\n      CodeMirror.on(obj, \"select\", function(cur, node) {\n        remove(tooltip);\n        var content = ts.options.completionTip ? ts.options.completionTip(cur.data) : cur.data.doc;\n        if (content) {\n          tooltip = makeTooltip(node.parentNode.getBoundingClientRect().right + window.pageXOffset,\n                                node.getBoundingClientRect().top + window.pageYOffset, content);\n          tooltip.className += \" \" + cls + \"hint-doc\";\n        }\n      });\n      c(obj);\n    });\n  }\n\n  function typeToIcon(type) {\n    var suffix;\n    if (type == \"?\") suffix = \"unknown\";\n    else if (type == \"number\" || type == \"string\" || type == \"bool\") suffix = type;\n    else if (/^fn\\(/.test(type)) suffix = \"fn\";\n    else if (/^\\[/.test(type)) suffix = \"array\";\n    else suffix = \"object\";\n    return cls + \"completion \" + cls + \"completion-\" + suffix;\n  }\n\n  // Type queries\n\n  function showContextInfo(ts, cm, pos, queryName, c) {\n    ts.request(cm, queryName, function(error, data) {\n      if (error) return showError(ts, cm, error);\n      if (ts.options.typeTip) {\n        var tip = ts.options.typeTip(data);\n      } else {\n        var tip = elt(\"span\", null, elt(\"strong\", null, data.type || \"not found\"));\n        if (data.doc)\n          tip.appendChild(document.createTextNode(\" — \" + data.doc));\n        if (data.url) {\n          tip.appendChild(document.createTextNode(\" \"));\n          var child = tip.appendChild(elt(\"a\", null, \"[docs]\"));\n          child.href = data.url;\n          child.target = \"_blank\";\n        }\n      }\n      tempTooltip(cm, tip);\n      if (c) c();\n    }, pos);\n  }\n\n  // Maintaining argument hints\n\n  function updateArgHints(ts, cm) {\n    closeArgHints(ts);\n\n    if (cm.somethingSelected()) return;\n    var state = cm.getTokenAt(cm.getCursor()).state;\n    var inner = CodeMirror.innerMode(cm.getMode(), state);\n    if (inner.mode.name != \"javascript\") return;\n    var lex = inner.state.lexical;\n    if (lex.info != \"call\") return;\n\n    var ch, argPos = lex.pos || 0, tabSize = cm.getOption(\"tabSize\");\n    for (var line = cm.getCursor().line, e = Math.max(0, line - 9), found = false; line >= e; --line) {\n      var str = cm.getLine(line), extra = 0;\n      for (var pos = 0;;) {\n        var tab = str.indexOf(\"\\t\", pos);\n        if (tab == -1) break;\n        extra += tabSize - (tab + extra) % tabSize - 1;\n        pos = tab + 1;\n      }\n      ch = lex.column - extra;\n      if (str.charAt(ch) == \"(\") {found = true; break;}\n    }\n    if (!found) return;\n\n    var start = Pos(line, ch);\n    var cache = ts.cachedArgHints;\n    if (cache && cache.doc == cm.getDoc() && cmpPos(start, cache.start) == 0)\n      return showArgHints(ts, cm, argPos);\n\n    ts.request(cm, {type: \"type\", preferFunction: true, end: start}, function(error, data) {\n      if (error || !data.type || !(/^fn\\(/).test(data.type)) return;\n      ts.cachedArgHints = {\n        start: pos,\n        type: parseFnType(data.type),\n        name: data.exprName || data.name || \"fn\",\n        guess: data.guess,\n        doc: cm.getDoc()\n      };\n      showArgHints(ts, cm, argPos);\n    });\n  }\n\n  function showArgHints(ts, cm, pos) {\n    closeArgHints(ts);\n\n    var cache = ts.cachedArgHints, tp = cache.type;\n    var tip = elt(\"span\", cache.guess ? cls + \"fhint-guess\" : null,\n                  elt(\"span\", cls + \"fname\", cache.name), \"(\");\n    for (var i = 0; i < tp.args.length; ++i) {\n      if (i) tip.appendChild(document.createTextNode(\", \"));\n      var arg = tp.args[i];\n      tip.appendChild(elt(\"span\", cls + \"farg\" + (i == pos ? \" \" + cls + \"farg-current\" : \"\"), arg.name || \"?\"));\n      if (arg.type != \"?\") {\n        tip.appendChild(document.createTextNode(\":\\u00a0\"));\n        tip.appendChild(elt(\"span\", cls + \"type\", arg.type));\n      }\n    }\n    tip.appendChild(document.createTextNode(tp.rettype ? \") ->\\u00a0\" : \")\"));\n    if (tp.rettype) tip.appendChild(elt(\"span\", cls + \"type\", tp.rettype));\n    var place = cm.cursorCoords(null, \"page\");\n    ts.activeArgHints = makeTooltip(place.right + 1, place.bottom, tip);\n  }\n\n  function parseFnType(text) {\n    var args = [], pos = 3;\n\n    function skipMatching(upto) {\n      var depth = 0, start = pos;\n      for (;;) {\n        var next = text.charAt(pos);\n        if (upto.test(next) && !depth) return text.slice(start, pos);\n        if (/[{\\[\\(]/.test(next)) ++depth;\n        else if (/[}\\]\\)]/.test(next)) --depth;\n        ++pos;\n      }\n    }\n\n    // Parse arguments\n    if (text.charAt(pos) != \")\") for (;;) {\n      var name = text.slice(pos).match(/^([^, \\(\\[\\{]+): /);\n      if (name) {\n        pos += name[0].length;\n        name = name[1];\n      }\n      args.push({name: name, type: skipMatching(/[\\),]/)});\n      if (text.charAt(pos) == \")\") break;\n      pos += 2;\n    }\n\n    var rettype = text.slice(pos).match(/^\\) -> (.*)$/);\n\n    return {args: args, rettype: rettype && rettype[1]};\n  }\n\n  // Moving to the definition of something\n\n  function jumpToDef(ts, cm) {\n    function inner(varName) {\n      var req = {type: \"definition\", variable: varName || null};\n      var doc = findDoc(ts, cm.getDoc());\n      ts.server.request(buildRequest(ts, doc, req), function(error, data) {\n        if (error) return showError(ts, cm, error);\n        if (!data.file && data.url) { window.open(data.url); return; }\n\n        if (data.file) {\n          var localDoc = ts.docs[data.file], found;\n          if (localDoc && (found = findContext(localDoc.doc, data))) {\n            ts.jumpStack.push({file: doc.name,\n                               start: cm.getCursor(\"from\"),\n                               end: cm.getCursor(\"to\")});\n            moveTo(ts, doc, localDoc, found.start, found.end);\n            return;\n          }\n        }\n        showError(ts, cm, \"Could not find a definition.\");\n      });\n    }\n\n    if (!atInterestingExpression(cm))\n      dialog(cm, \"Jump to variable\", function(name) { if (name) inner(name); });\n    else\n      inner();\n  }\n\n  function jumpBack(ts, cm) {\n    var pos = ts.jumpStack.pop(), doc = pos && ts.docs[pos.file];\n    if (!doc) return;\n    moveTo(ts, findDoc(ts, cm.getDoc()), doc, pos.start, pos.end);\n  }\n\n  function moveTo(ts, curDoc, doc, start, end) {\n    doc.doc.setSelection(start, end);\n    if (curDoc != doc && ts.options.switchToDoc) {\n      closeArgHints(ts);\n      ts.options.switchToDoc(doc.name, doc.doc);\n    }\n  }\n\n  // The {line,ch} representation of positions makes this rather awkward.\n  function findContext(doc, data) {\n    var before = data.context.slice(0, data.contextOffset).split(\"\\n\");\n    var startLine = data.start.line - (before.length - 1);\n    var start = Pos(startLine, (before.length == 1 ? data.start.ch : doc.getLine(startLine).length) - before[0].length);\n\n    var text = doc.getLine(startLine).slice(start.ch);\n    for (var cur = startLine + 1; cur < doc.lineCount() && text.length < data.context.length; ++cur)\n      text += \"\\n\" + doc.getLine(cur);\n    if (text.slice(0, data.context.length) == data.context) return data;\n\n    var cursor = doc.getSearchCursor(data.context, 0, false);\n    var nearest, nearestDist = Infinity;\n    while (cursor.findNext()) {\n      var from = cursor.from(), dist = Math.abs(from.line - start.line) * 10000;\n      if (!dist) dist = Math.abs(from.ch - start.ch);\n      if (dist < nearestDist) { nearest = from; nearestDist = dist; }\n    }\n    if (!nearest) return null;\n\n    if (before.length == 1)\n      nearest.ch += before[0].length;\n    else\n      nearest = Pos(nearest.line + (before.length - 1), before[before.length - 1].length);\n    if (data.start.line == data.end.line)\n      var end = Pos(nearest.line, nearest.ch + (data.end.ch - data.start.ch));\n    else\n      var end = Pos(nearest.line + (data.end.line - data.start.line), data.end.ch);\n    return {start: nearest, end: end};\n  }\n\n  function atInterestingExpression(cm) {\n    var pos = cm.getCursor(\"end\"), tok = cm.getTokenAt(pos);\n    if (tok.start < pos.ch && (tok.type == \"comment\" || tok.type == \"string\")) return false;\n    return /\\w/.test(cm.getLine(pos.line).slice(Math.max(pos.ch - 1, 0), pos.ch + 1));\n  }\n\n  // Variable renaming\n\n  function rename(ts, cm) {\n    var token = cm.getTokenAt(cm.getCursor());\n    if (!/\\w/.test(token.string)) return showError(ts, cm, \"Not at a variable\");\n    dialog(cm, \"New name for \" + token.string, function(newName) {\n      ts.request(cm, {type: \"rename\", newName: newName, fullDocs: true}, function(error, data) {\n        if (error) return showError(ts, cm, error);\n        applyChanges(ts, data.changes);\n      });\n    });\n  }\n\n  function selectName(ts, cm) {\n    var name = findDoc(ts, cm.doc).name;\n    ts.request(cm, {type: \"refs\"}, function(error, data) {\n      if (error) return showError(ts, cm, error);\n      var ranges = [], cur = 0;\n      for (var i = 0; i < data.refs.length; i++) {\n        var ref = data.refs[i];\n        if (ref.file == name) {\n          ranges.push({anchor: ref.start, head: ref.end});\n          if (cmpPos(cur, ref.start) >= 0 && cmpPos(cur, ref.end) <= 0)\n            cur = ranges.length - 1;\n        }\n      }\n      cm.setSelections(ranges, cur);\n    });\n  }\n\n  var nextChangeOrig = 0;\n  function applyChanges(ts, changes) {\n    var perFile = Object.create(null);\n    for (var i = 0; i < changes.length; ++i) {\n      var ch = changes[i];\n      (perFile[ch.file] || (perFile[ch.file] = [])).push(ch);\n    }\n    for (var file in perFile) {\n      var known = ts.docs[file], chs = perFile[file];;\n      if (!known) continue;\n      chs.sort(function(a, b) { return cmpPos(b.start, a.start); });\n      var origin = \"*rename\" + (++nextChangeOrig);\n      for (var i = 0; i < chs.length; ++i) {\n        var ch = chs[i];\n        known.doc.replaceRange(ch.text, ch.start, ch.end, origin);\n      }\n    }\n  }\n\n  // Generic request-building helper\n\n  function buildRequest(ts, doc, query, pos) {\n    var files = [], offsetLines = 0, allowFragments = !query.fullDocs;\n    if (!allowFragments) delete query.fullDocs;\n    if (typeof query == \"string\") query = {type: query};\n    query.lineCharPositions = true;\n    if (query.end == null) {\n      query.end = pos || doc.doc.getCursor(\"end\");\n      if (doc.doc.somethingSelected())\n        query.start = doc.doc.getCursor(\"start\");\n    }\n    var startPos = query.start || query.end;\n\n    if (doc.changed) {\n      if (doc.doc.lineCount() > bigDoc && allowFragments !== false &&\n          doc.changed.to - doc.changed.from < 100 &&\n          doc.changed.from <= startPos.line && doc.changed.to > query.end.line) {\n        files.push(getFragmentAround(doc, startPos, query.end));\n        query.file = \"#0\";\n        var offsetLines = files[0].offsetLines;\n        if (query.start != null) query.start = Pos(query.start.line - -offsetLines, query.start.ch);\n        query.end = Pos(query.end.line - offsetLines, query.end.ch);\n      } else {\n        files.push({type: \"full\",\n                    name: doc.name,\n                    text: docValue(ts, doc)});\n        query.file = doc.name;\n        doc.changed = null;\n      }\n    } else {\n      query.file = doc.name;\n    }\n    for (var name in ts.docs) {\n      var cur = ts.docs[name];\n      if (cur.changed && cur != doc) {\n        files.push({type: \"full\", name: cur.name, text: docValue(ts, cur)});\n        cur.changed = null;\n      }\n    }\n\n    return {query: query, files: files};\n  }\n\n  function getFragmentAround(data, start, end) {\n    var doc = data.doc;\n    var minIndent = null, minLine = null, endLine, tabSize = 4;\n    for (var p = start.line - 1, min = Math.max(0, p - 50); p >= min; --p) {\n      var line = doc.getLine(p), fn = line.search(/\\bfunction\\b/);\n      if (fn < 0) continue;\n      var indent = CodeMirror.countColumn(line, null, tabSize);\n      if (minIndent != null && minIndent <= indent) continue;\n      minIndent = indent;\n      minLine = p;\n    }\n    if (minLine == null) minLine = min;\n    var max = Math.min(doc.lastLine(), end.line + 20);\n    if (minIndent == null || minIndent == CodeMirror.countColumn(doc.getLine(start.line), null, tabSize))\n      endLine = max;\n    else for (endLine = end.line + 1; endLine < max; ++endLine) {\n      var indent = CodeMirror.countColumn(doc.getLine(endLine), null, tabSize);\n      if (indent <= minIndent) break;\n    }\n    var from = Pos(minLine, 0);\n\n    return {type: \"part\",\n            name: data.name,\n            offsetLines: from.line,\n            text: doc.getRange(from, Pos(endLine, 0))};\n  }\n\n  // Generic utilities\n\n  var cmpPos = CodeMirror.cmpPos;\n\n  function elt(tagname, cls /*, ... elts*/) {\n    var e = document.createElement(tagname);\n    if (cls) e.className = cls;\n    for (var i = 2; i < arguments.length; ++i) {\n      var elt = arguments[i];\n      if (typeof elt == \"string\") elt = document.createTextNode(elt);\n      e.appendChild(elt);\n    }\n    return e;\n  }\n\n  function dialog(cm, text, f) {\n    if (cm.openDialog)\n      cm.openDialog(text + \": <input type=text>\", f);\n    else\n      f(prompt(text, \"\"));\n  }\n\n  // Tooltips\n\n  function tempTooltip(cm, content) {\n    if (cm.state.ternTooltip) remove(cm.state.ternTooltip);\n    var where = cm.cursorCoords();\n    var tip = cm.state.ternTooltip = makeTooltip(where.right + 1, where.bottom, content);\n    function maybeClear() {\n      old = true;\n      if (!mouseOnTip) clear();\n    }\n    function clear() {\n      cm.state.ternTooltip = null;\n      if (!tip.parentNode) return;\n      cm.off(\"cursorActivity\", clear);\n      cm.off('blur', clear);\n      cm.off('scroll', clear);\n      fadeOut(tip);\n    }\n    var mouseOnTip = false, old = false;\n    CodeMirror.on(tip, \"mousemove\", function() { mouseOnTip = true; });\n    CodeMirror.on(tip, \"mouseout\", function(e) {\n      if (!CodeMirror.contains(tip, e.relatedTarget || e.toElement)) {\n        if (old) clear();\n        else mouseOnTip = false;\n      }\n    });\n    setTimeout(maybeClear, 1700);\n    cm.on(\"cursorActivity\", clear);\n    cm.on('blur', clear);\n    cm.on('scroll', clear);\n  }\n\n  function makeTooltip(x, y, content) {\n    var node = elt(\"div\", cls + \"tooltip\", content);\n    node.style.left = x + \"px\";\n    node.style.top = y + \"px\";\n    document.body.appendChild(node);\n    return node;\n  }\n\n  function remove(node) {\n    var p = node && node.parentNode;\n    if (p) p.removeChild(node);\n  }\n\n  function fadeOut(tooltip) {\n    tooltip.style.opacity = \"0\";\n    setTimeout(function() { remove(tooltip); }, 1100);\n  }\n\n  function showError(ts, cm, msg) {\n    if (ts.options.showError)\n      ts.options.showError(cm, msg);\n    else\n      tempTooltip(cm, String(msg));\n  }\n\n  function closeArgHints(ts) {\n    if (ts.activeArgHints) { remove(ts.activeArgHints); ts.activeArgHints = null; }\n  }\n\n  function docValue(ts, doc) {\n    var val = doc.doc.getValue();\n    if (ts.options.fileFilter) val = ts.options.fileFilter(val, doc.name, doc.doc);\n    return val;\n  }\n\n  // Worker wrapper\n\n  function WorkerServer(ts) {\n    var worker = ts.worker = new Worker(ts.options.workerScript);\n    worker.postMessage({type: \"init\",\n                        defs: ts.options.defs,\n                        plugins: ts.options.plugins,\n                        scripts: ts.options.workerDeps});\n    var msgId = 0, pending = {};\n\n    function send(data, c) {\n      if (c) {\n        data.id = ++msgId;\n        pending[msgId] = c;\n      }\n      worker.postMessage(data);\n    }\n    worker.onmessage = function(e) {\n      var data = e.data;\n      if (data.type == \"getFile\") {\n        getFile(ts, data.name, function(err, text) {\n          send({type: \"getFile\", err: String(err), text: text, id: data.id});\n        });\n      } else if (data.type == \"debug\") {\n        window.console.log(data.message);\n      } else if (data.id && pending[data.id]) {\n        pending[data.id](data.err, data.body);\n        delete pending[data.id];\n      }\n    };\n    worker.onerror = function(e) {\n      for (var id in pending) pending[id](e);\n      pending = {};\n    };\n\n    this.addFile = function(name, text) { send({type: \"add\", name: name, text: text}); };\n    this.delFile = function(name) { send({type: \"del\", name: name}); };\n    this.request = function(body, c) { send({type: \"req\", body: body}, c); };\n  }\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/tern/worker.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// declare global: tern, server\n\nvar server;\n\nthis.onmessage = function(e) {\n  var data = e.data;\n  switch (data.type) {\n  case \"init\": return startServer(data.defs, data.plugins, data.scripts);\n  case \"add\": return server.addFile(data.name, data.text);\n  case \"del\": return server.delFile(data.name);\n  case \"req\": return server.request(data.body, function(err, reqData) {\n    postMessage({id: data.id, body: reqData, err: err && String(err)});\n  });\n  case \"getFile\":\n    var c = pending[data.id];\n    delete pending[data.id];\n    return c(data.err, data.text);\n  default: throw new Error(\"Unknown message type: \" + data.type);\n  }\n};\n\nvar nextId = 0, pending = {};\nfunction getFile(file, c) {\n  postMessage({type: \"getFile\", name: file, id: ++nextId});\n  pending[nextId] = c;\n}\n\nfunction startServer(defs, plugins, scripts) {\n  if (scripts) importScripts.apply(null, scripts);\n\n  server = new tern.Server({\n    getFile: getFile,\n    async: true,\n    defs: defs,\n    plugins: plugins\n  });\n}\n\nvar console = {\n  log: function(v) { postMessage({type: \"debug\", message: v}); }\n};\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/addon/wrap/hardwrap.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var Pos = CodeMirror.Pos;\n\n  function findParagraph(cm, pos, options) {\n    var startRE = options.paragraphStart || cm.getHelper(pos, \"paragraphStart\");\n    for (var start = pos.line, first = cm.firstLine(); start > first; --start) {\n      var line = cm.getLine(start);\n      if (startRE && startRE.test(line)) break;\n      if (!/\\S/.test(line)) { ++start; break; }\n    }\n    var endRE = options.paragraphEnd || cm.getHelper(pos, \"paragraphEnd\");\n    for (var end = pos.line + 1, last = cm.lastLine(); end <= last; ++end) {\n      var line = cm.getLine(end);\n      if (endRE && endRE.test(line)) { ++end; break; }\n      if (!/\\S/.test(line)) break;\n    }\n    return {from: start, to: end};\n  }\n\n  function findBreakPoint(text, column, wrapOn, killTrailingSpace) {\n    for (var at = column; at > 0; --at)\n      if (wrapOn.test(text.slice(at - 1, at + 1))) break;\n    if (at == 0) at = column;\n    var endOfText = at;\n    if (killTrailingSpace)\n      while (text.charAt(endOfText - 1) == \" \") --endOfText;\n    return {from: endOfText, to: at};\n  }\n\n  function wrapRange(cm, from, to, options) {\n    from = cm.clipPos(from); to = cm.clipPos(to);\n    var column = options.column || 80;\n    var wrapOn = options.wrapOn || /\\s\\S|-[^\\.\\d]/;\n    var killTrailing = options.killTrailingSpace !== false;\n    var changes = [], curLine = \"\", curNo = from.line;\n    var lines = cm.getRange(from, to, false);\n    if (!lines.length) return null;\n    var leadingSpace = lines[0].match(/^[ \\t]*/)[0];\n\n    for (var i = 0; i < lines.length; ++i) {\n      var text = lines[i], oldLen = curLine.length, spaceInserted = 0;\n      if (curLine && text && !wrapOn.test(curLine.charAt(curLine.length - 1) + text.charAt(0))) {\n        curLine += \" \";\n        spaceInserted = 1;\n      }\n      var spaceTrimmed = \"\";\n      if (i) {\n        spaceTrimmed = text.match(/^\\s*/)[0];\n        text = text.slice(spaceTrimmed.length);\n      }\n      curLine += text;\n      if (i) {\n        var firstBreak = curLine.length > column && leadingSpace == spaceTrimmed &&\n          findBreakPoint(curLine, column, wrapOn, killTrailing);\n        // If this isn't broken, or is broken at a different point, remove old break\n        if (!firstBreak || firstBreak.from != oldLen || firstBreak.to != oldLen + spaceInserted) {\n          changes.push({text: [spaceInserted ? \" \" : \"\"],\n                        from: Pos(curNo, oldLen),\n                        to: Pos(curNo + 1, spaceTrimmed.length)});\n        } else {\n          curLine = leadingSpace + text;\n          ++curNo;\n        }\n      }\n      while (curLine.length > column) {\n        var bp = findBreakPoint(curLine, column, wrapOn, killTrailing);\n        changes.push({text: [\"\", leadingSpace],\n                      from: Pos(curNo, bp.from),\n                      to: Pos(curNo, bp.to)});\n        curLine = leadingSpace + curLine.slice(bp.to);\n        ++curNo;\n      }\n    }\n    if (changes.length) cm.operation(function() {\n      for (var i = 0; i < changes.length; ++i) {\n        var change = changes[i];\n        cm.replaceRange(change.text, change.from, change.to);\n      }\n    });\n    return changes.length ? {from: changes[0].from, to: CodeMirror.changeEnd(changes[changes.length - 1])} : null;\n  }\n\n  CodeMirror.defineExtension(\"wrapParagraph\", function(pos, options) {\n    options = options || {};\n    if (!pos) pos = this.getCursor();\n    var para = findParagraph(this, pos, options);\n    return wrapRange(this, Pos(para.from, 0), Pos(para.to - 1), options);\n  });\n\n  CodeMirror.commands.wrapLines = function(cm) {\n    cm.operation(function() {\n      var ranges = cm.listSelections(), at = cm.lastLine() + 1;\n      for (var i = ranges.length - 1; i >= 0; i--) {\n        var range = ranges[i], span;\n        if (range.empty()) {\n          var para = findParagraph(cm, range.head, {});\n          span = {from: Pos(para.from, 0), to: Pos(para.to - 1)};\n        } else {\n          span = {from: range.from(), to: range.to()};\n        }\n        if (span.to.line >= at) continue;\n        at = span.from.line;\n        wrapRange(cm, span.from, span.to, {});\n      }\n    });\n  };\n\n  CodeMirror.defineExtension(\"wrapRange\", function(from, to, options) {\n    return wrapRange(this, from, to, options || {});\n  });\n\n  CodeMirror.defineExtension(\"wrapParagraphsInRange\", function(from, to, options) {\n    options = options || {};\n    var cm = this, paras = [];\n    for (var line = from.line; line <= to.line;) {\n      var para = findParagraph(cm, Pos(line, 0), options);\n      paras.push(para);\n      line = para.to;\n    }\n    var madeChange = false;\n    if (paras.length) cm.operation(function() {\n      for (var i = paras.length - 1; i >= 0; --i)\n        madeChange = madeChange || wrapRange(cm, Pos(paras[i].from, 0), Pos(paras[i].to - 1), options);\n    });\n    return madeChange;\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/bower.json",
    "content": "{\n  \"name\": \"codemirror\",\n  \"version\":\"5.0.0\",\n  \"main\": [\"lib/codemirror.js\", \"lib/codemirror.css\"],\n  \"ignore\": [\n    \"**/.*\",\n    \"node_modules\",\n    \"components\",\n    \"bin\",\n    \"demo\",\n    \"doc\",\n    \"test\",\n    \"index.html\",\n    \"package.json\"\n  ]\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/lib/codemirror.css",
    "content": "/*!\n// CodeMirror v5.0, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// This is CodeMirror (http://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n*/\n\n/* BASICS */\n\n.CodeMirror {\n  /* Set height, width, borders, and global font properties here */\n  font-family: monospace;\n  height: 300px;\n  color: black;\n}\n\n/* PADDING */\n\n.CodeMirror-lines {\n  padding: 4px 0; /* Vertical padding around content */\n}\n.CodeMirror pre {\n  padding: 0 4px; /* Horizontal padding of content */\n}\n\n.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n  background-color: white; /* The little square between H and V scrollbars */\n}\n\n/* GUTTER */\n\n.CodeMirror-gutters {\n  border-right: 1px solid #ddd;\n  background-color: #f7f7f7;\n  white-space: nowrap;\n}\n.CodeMirror-linenumbers {}\n.CodeMirror-linenumber {\n  padding: 0 3px 0 5px;\n  min-width: 20px;\n  text-align: right;\n  color: #999;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n}\n\n.CodeMirror-guttermarker { color: black; }\n.CodeMirror-guttermarker-subtle { color: #999; }\n\n/* CURSOR */\n\n.CodeMirror div.CodeMirror-cursor {\n  border-left: 1px solid black;\n}\n/* Shown when moving in bi-directional text */\n.CodeMirror div.CodeMirror-secondarycursor {\n  border-left: 1px solid silver;\n}\n.CodeMirror.cm-fat-cursor div.CodeMirror-cursor {\n  width: auto;\n  border: 0;\n  background: #7e7;\n}\n.CodeMirror.cm-fat-cursor div.CodeMirror-cursors {\n  z-index: 1;\n}\n\n.cm-animate-fat-cursor {\n  width: auto;\n  border: 0;\n  -webkit-animation: blink 1.06s steps(1) infinite;\n  -moz-animation: blink 1.06s steps(1) infinite;\n  animation: blink 1.06s steps(1) infinite;\n}\n@-moz-keyframes blink {\n  0% { background: #7e7; }\n  50% { background: none; }\n  100% { background: #7e7; }\n}\n@-webkit-keyframes blink {\n  0% { background: #7e7; }\n  50% { background: none; }\n  100% { background: #7e7; }\n}\n@keyframes blink {\n  0% { background: #7e7; }\n  50% { background: none; }\n  100% { background: #7e7; }\n}\n\n/* Can style cursor different in overwrite (non-insert) mode */\ndiv.CodeMirror-overwrite div.CodeMirror-cursor {}\n\n.cm-tab { display: inline-block; text-decoration: inherit; }\n\n.CodeMirror-ruler {\n  border-left: 1px solid #ccc;\n  position: absolute;\n}\n\n/* DEFAULT THEME */\n\n.cm-s-default .cm-keyword {color: #708;}\n.cm-s-default .cm-atom {color: #219;}\n.cm-s-default .cm-number {color: #164;}\n.cm-s-default .cm-def {color: #00f;}\n.cm-s-default .cm-variable,\n.cm-s-default .cm-punctuation,\n.cm-s-default .cm-property,\n.cm-s-default .cm-operator {}\n.cm-s-default .cm-variable-2 {color: #05a;}\n.cm-s-default .cm-variable-3 {color: #085;}\n.cm-s-default .cm-comment {color: #a50;}\n.cm-s-default .cm-string {color: #a11;}\n.cm-s-default .cm-string-2 {color: #f50;}\n.cm-s-default .cm-meta {color: #555;}\n.cm-s-default .cm-qualifier {color: #555;}\n.cm-s-default .cm-builtin {color: #30a;}\n.cm-s-default .cm-bracket {color: #997;}\n.cm-s-default .cm-tag {color: #170;}\n.cm-s-default .cm-attribute {color: #00c;}\n.cm-s-default .cm-header {color: blue;}\n.cm-s-default .cm-quote {color: #090;}\n.cm-s-default .cm-hr {color: #999;}\n.cm-s-default .cm-link {color: #00c;}\n\n.cm-negative {color: #d44;}\n.cm-positive {color: #292;}\n.cm-header, .cm-strong {font-weight: bold;}\n.cm-em {font-style: italic;}\n.cm-link {text-decoration: underline;}\n.cm-strikethrough {text-decoration: line-through;}\n\n.cm-s-default .cm-error {color: #f00;}\n.cm-invalidchar {color: #f00;}\n\n/* Default styles for common addons */\n\ndiv.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}\ndiv.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}\n.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }\n.CodeMirror-activeline-background {background: #e8f2ff;}\n\n/* STOP */\n\n/* The rest of this file contains styles related to the mechanics of\n   the editor. You probably shouldn't touch them. */\n\n.CodeMirror {\n  position: relative;\n  overflow: hidden;\n  background: white;\n}\n\n.CodeMirror-scroll {\n  overflow: scroll !important; /* Things will break if this is overridden */\n  /* 30px is the magic margin used to hide the element's real scrollbars */\n  /* See overflow: hidden in .CodeMirror */\n  margin-bottom: -30px; margin-right: -30px;\n  padding-bottom: 30px;\n  height: 100%;\n  outline: none; /* Prevent dragging from highlighting the element */\n  position: relative;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n}\n.CodeMirror-sizer {\n  position: relative;\n  border-right: 30px solid transparent;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n}\n\n/* The fake, visible scrollbars. Used to force redraw during scrolling\n   before actuall scrolling happens, thus preventing shaking and\n   flickering artifacts. */\n.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n  position: absolute;\n  z-index: 6;\n  display: none;\n}\n.CodeMirror-vscrollbar {\n  right: 0; top: 0;\n  overflow-x: hidden;\n  overflow-y: scroll;\n}\n.CodeMirror-hscrollbar {\n  bottom: 0; left: 0;\n  overflow-y: hidden;\n  overflow-x: scroll;\n}\n.CodeMirror-scrollbar-filler {\n  right: 0; bottom: 0;\n}\n.CodeMirror-gutter-filler {\n  left: 0; bottom: 0;\n}\n\n.CodeMirror-gutters {\n  position: absolute; left: 0; top: 0;\n  z-index: 3;\n}\n.CodeMirror-gutter {\n  white-space: normal;\n  height: 100%;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  display: inline-block;\n  margin-bottom: -30px;\n  /* Hack to make IE7 behave */\n  *zoom:1;\n  *display:inline;\n}\n.CodeMirror-gutter-wrapper {\n  position: absolute;\n  z-index: 4;\n  height: 100%;\n}\n.CodeMirror-gutter-elt {\n  position: absolute;\n  cursor: default;\n  z-index: 4;\n}\n.CodeMirror-gutter-wrapper {\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n}\n\n.CodeMirror-lines {\n  cursor: text;\n  min-height: 1px; /* prevents collapsing before first draw */\n}\n.CodeMirror pre {\n  /* Reset some styles that the rest of the page might have set */\n  -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;\n  border-width: 0;\n  background: transparent;\n  font-family: inherit;\n  font-size: inherit;\n  margin: 0;\n  white-space: pre;\n  word-wrap: normal;\n  line-height: inherit;\n  color: inherit;\n  z-index: 2;\n  position: relative;\n  overflow: visible;\n  -webkit-tap-highlight-color: transparent;\n}\n.CodeMirror-wrap pre {\n  word-wrap: break-word;\n  white-space: pre-wrap;\n  word-break: normal;\n}\n\n.CodeMirror-linebackground {\n  position: absolute;\n  left: 0; right: 0; top: 0; bottom: 0;\n  z-index: 0;\n}\n\n.CodeMirror-linewidget {\n  position: relative;\n  z-index: 2;\n  overflow: auto;\n}\n\n.CodeMirror-widget {}\n\n.CodeMirror-code {\n  outline: none;\n}\n\n.CodeMirror-measure {\n  position: absolute;\n  width: 100%;\n  height: 0;\n  overflow: hidden;\n  visibility: hidden;\n}\n.CodeMirror-measure pre { position: static; }\n\n.CodeMirror div.CodeMirror-cursor {\n  position: absolute;\n  border-right: none;\n  width: 0;\n}\n\ndiv.CodeMirror-cursors {\n  visibility: hidden;\n  position: relative;\n  z-index: 3;\n}\n.CodeMirror-focused div.CodeMirror-cursors {\n  visibility: visible;\n}\n\n.CodeMirror-selected { background: #d9d9d9; }\n.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }\n.CodeMirror-crosshair { cursor: crosshair; }\n.CodeMirror ::selection { background: #d7d4f0; }\n.CodeMirror ::-moz-selection { background: #d7d4f0; }\n\n.cm-searching {\n  background: #ffa;\n  background: rgba(255, 255, 0, .4);\n}\n\n/* IE7 hack to prevent it from returning funny offsetTops on the spans */\n.CodeMirror span { *vertical-align: text-bottom; }\n\n/* Used to force a border model for a node */\n.cm-force-border { padding-right: .1px; }\n\n@media print {\n  /* Hide the cursor when printing */\n  .CodeMirror div.CodeMirror-cursors {\n    visibility: hidden;\n  }\n}\n\n/* See issue #2901 */\n.cm-tab-wrap-hack:after { content: ''; }\n\n/* Help users use markselection to safely style text background */\nspan.CodeMirror-selectedtext { background: none; }\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/lib/codemirror.js",
    "content": "// CodeMirror v5.0, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// This is CodeMirror (http://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    module.exports = mod();\n  else if (typeof define == \"function\" && define.amd) // AMD\n    return define([], mod);\n  else // Plain browser env\n    this.CodeMirror = mod();\n})(function() {\n  \"use strict\";\n\n  // BROWSER SNIFFING\n\n  // Kludges for bugs and behavior differences that can't be feature\n  // detected are enabled based on userAgent etc sniffing.\n\n  var gecko = /gecko\\/\\d/i.test(navigator.userAgent);\n  var ie_upto10 = /MSIE \\d/.test(navigator.userAgent);\n  var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent);\n  var ie = ie_upto10 || ie_11up;\n  var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : ie_11up[1]);\n  var webkit = /WebKit\\//.test(navigator.userAgent);\n  var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(navigator.userAgent);\n  var chrome = /Chrome\\//.test(navigator.userAgent);\n  var presto = /Opera\\//.test(navigator.userAgent);\n  var safari = /Apple Computer/.test(navigator.vendor);\n  var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(navigator.userAgent);\n  var phantom = /PhantomJS/.test(navigator.userAgent);\n\n  var ios = /AppleWebKit/.test(navigator.userAgent) && /Mobile\\/\\w+/.test(navigator.userAgent);\n  // This is woefully incomplete. Suggestions for alternative methods welcome.\n  var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent);\n  var mac = ios || /Mac/.test(navigator.platform);\n  var windows = /win/i.test(navigator.platform);\n\n  var presto_version = presto && navigator.userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n  if (presto_version) presto_version = Number(presto_version[1]);\n  if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n  // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n  var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n  var captureRightClick = gecko || (ie && ie_version >= 9);\n\n  // Optimize some code when these features are not used.\n  var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n  // EDITOR CONSTRUCTOR\n\n  // A CodeMirror instance represents an editor. This is the object\n  // that user code is usually dealing with.\n\n  function CodeMirror(place, options) {\n    if (!(this instanceof CodeMirror)) return new CodeMirror(place, options);\n\n    this.options = options = options ? copyObj(options) : {};\n    // Determine effective options based on given values and defaults.\n    copyObj(defaults, options, false);\n    setGuttersForLineNumbers(options);\n\n    var doc = options.value;\n    if (typeof doc == \"string\") doc = new Doc(doc, options.mode);\n    this.doc = doc;\n\n    var input = new CodeMirror.inputStyles[options.inputStyle](this);\n    var display = this.display = new Display(place, doc, input);\n    display.wrapper.CodeMirror = this;\n    updateGutters(this);\n    themeChanged(this);\n    if (options.lineWrapping)\n      this.display.wrapper.className += \" CodeMirror-wrap\";\n    if (options.autofocus && !mobile) display.input.focus();\n    initScrollbars(this);\n\n    this.state = {\n      keyMaps: [],  // stores maps added by addKeyMap\n      overlays: [], // highlighting overlays, as added by addOverlay\n      modeGen: 0,   // bumped when mode/overlay changes, used to invalidate highlighting info\n      overwrite: false, focused: false,\n      suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n      pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll\n      draggingText: false,\n      highlight: new Delayed(), // stores highlight worker timeout\n      keySeq: null  // Unfinished key sequence\n    };\n\n    var cm = this;\n\n    // Override magic textarea content restore that IE sometimes does\n    // on our hidden textarea on reload\n    if (ie && ie_version < 11) setTimeout(function() { cm.display.input.reset(true); }, 20);\n\n    registerEventHandlers(this);\n    ensureGlobalHandlers();\n\n    startOperation(this);\n    this.curOp.forceUpdate = true;\n    attachDoc(this, doc);\n\n    if ((options.autofocus && !mobile) || cm.hasFocus())\n      setTimeout(bind(onFocus, this), 20);\n    else\n      onBlur(this);\n\n    for (var opt in optionHandlers) if (optionHandlers.hasOwnProperty(opt))\n      optionHandlers[opt](this, options[opt], Init);\n    maybeUpdateLineNumberWidth(this);\n    if (options.finishInit) options.finishInit(this);\n    for (var i = 0; i < initHooks.length; ++i) initHooks[i](this);\n    endOperation(this);\n    // Suppress optimizelegibility in Webkit, since it breaks text\n    // measuring on line wrapping boundaries.\n    if (webkit && options.lineWrapping &&\n        getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n      display.lineDiv.style.textRendering = \"auto\";\n  }\n\n  // DISPLAY CONSTRUCTOR\n\n  // The display handles the DOM integration, both for input reading\n  // and content drawing. It holds references to DOM nodes and\n  // display-related state.\n\n  function Display(place, doc, input) {\n    var d = this;\n    this.input = input;\n\n    // Covers bottom-right square when both scrollbars are present.\n    d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n    d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n    // Covers bottom of gutter when coverGutterNextToScrollbar is on\n    // and h scrollbar is present.\n    d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n    d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n    // Will contain the actual code, positioned to cover the viewport.\n    d.lineDiv = elt(\"div\", null, \"CodeMirror-code\");\n    // Elements are added to these to represent selection and cursors.\n    d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n    d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n    // A visibility: hidden element used to find the size of things.\n    d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n    // When lines outside of the viewport are measured, they are drawn in this.\n    d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n    // Wraps everything that needs to exist inside the vertically-padded coordinate system\n    d.lineSpace = elt(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n                      null, \"position: relative; outline: none\");\n    // Moved around its parent to cover visible view.\n    d.mover = elt(\"div\", [elt(\"div\", [d.lineSpace], \"CodeMirror-lines\")], null, \"position: relative\");\n    // Set to the height of the document, allowing scrolling.\n    d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n    d.sizerWidth = null;\n    // Behavior of elts with overflow: auto and padding is\n    // inconsistent across browsers. This is used to ensure the\n    // scrollable area is big enough.\n    d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n    // Will contain the gutters, if any.\n    d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n    d.lineGutter = null;\n    // Actual scrollable element.\n    d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n    d.scroller.setAttribute(\"tabIndex\", \"-1\");\n    // The element in which the editor lives.\n    d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n    // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n    if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n    if (!webkit && !(gecko && mobile)) d.scroller.draggable = true;\n\n    if (place) {\n      if (place.appendChild) place.appendChild(d.wrapper);\n      else place(d.wrapper);\n    }\n\n    // Current rendered range (may be bigger than the view window).\n    d.viewFrom = d.viewTo = doc.first;\n    d.reportedViewFrom = d.reportedViewTo = doc.first;\n    // Information about the rendered lines.\n    d.view = [];\n    d.renderedView = null;\n    // Holds info about a single rendered line when it was rendered\n    // for measurement, while not in view.\n    d.externalMeasured = null;\n    // Empty space (in pixels) above the view\n    d.viewOffset = 0;\n    d.lastWrapHeight = d.lastWrapWidth = 0;\n    d.updateLineNumbers = null;\n\n    d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n    d.scrollbarsClipped = false;\n\n    // Used to only resize the line number gutter when necessary (when\n    // the amount of lines crosses a boundary that makes its width change)\n    d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n    // Set to true when a non-horizontal-scrolling line widget is\n    // added. As an optimization, line widget aligning is skipped when\n    // this is false.\n    d.alignWidgets = false;\n\n    d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n    // Tracks the maximum line length so that the horizontal scrollbar\n    // can be kept static when scrolling.\n    d.maxLine = null;\n    d.maxLineLength = 0;\n    d.maxLineChanged = false;\n\n    // Used for measuring wheel scrolling granularity\n    d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n    // True when shift is held down.\n    d.shift = false;\n\n    // Used to track whether anything happened since the context menu\n    // was opened.\n    d.selForContextMenu = null;\n\n    d.activeTouch = null;\n\n    input.init(d);\n  }\n\n  // STATE UPDATES\n\n  // Used to get the editor into a consistent state again when options change.\n\n  function loadMode(cm) {\n    cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption);\n    resetModeState(cm);\n  }\n\n  function resetModeState(cm) {\n    cm.doc.iter(function(line) {\n      if (line.stateAfter) line.stateAfter = null;\n      if (line.styles) line.styles = null;\n    });\n    cm.doc.frontier = cm.doc.first;\n    startWorker(cm, 100);\n    cm.state.modeGen++;\n    if (cm.curOp) regChange(cm);\n  }\n\n  function wrappingChanged(cm) {\n    if (cm.options.lineWrapping) {\n      addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n      cm.display.sizer.style.minWidth = \"\";\n      cm.display.sizerWidth = null;\n    } else {\n      rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n      findMaxLine(cm);\n    }\n    estimateLineHeights(cm);\n    regChange(cm);\n    clearCaches(cm);\n    setTimeout(function(){updateScrollbars(cm);}, 100);\n  }\n\n  // Returns a function that estimates the height of a line, to use as\n  // first approximation until the line becomes visible (and is thus\n  // properly measurable).\n  function estimateHeight(cm) {\n    var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n    var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n    return function(line) {\n      if (lineIsHidden(cm.doc, line)) return 0;\n\n      var widgetsHeight = 0;\n      if (line.widgets) for (var i = 0; i < line.widgets.length; i++) {\n        if (line.widgets[i].height) widgetsHeight += line.widgets[i].height;\n      }\n\n      if (wrapping)\n        return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;\n      else\n        return widgetsHeight + th;\n    };\n  }\n\n  function estimateLineHeights(cm) {\n    var doc = cm.doc, est = estimateHeight(cm);\n    doc.iter(function(line) {\n      var estHeight = est(line);\n      if (estHeight != line.height) updateLineHeight(line, estHeight);\n    });\n  }\n\n  function themeChanged(cm) {\n    cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n      cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n    clearCaches(cm);\n  }\n\n  function guttersChanged(cm) {\n    updateGutters(cm);\n    regChange(cm);\n    setTimeout(function(){alignHorizontally(cm);}, 20);\n  }\n\n  // Rebuild the gutter elements, ensure the margin to the left of the\n  // code matches their width.\n  function updateGutters(cm) {\n    var gutters = cm.display.gutters, specs = cm.options.gutters;\n    removeChildren(gutters);\n    for (var i = 0; i < specs.length; ++i) {\n      var gutterClass = specs[i];\n      var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + gutterClass));\n      if (gutterClass == \"CodeMirror-linenumbers\") {\n        cm.display.lineGutter = gElt;\n        gElt.style.width = (cm.display.lineNumWidth || 1) + \"px\";\n      }\n    }\n    gutters.style.display = i ? \"\" : \"none\";\n    updateGutterSpace(cm);\n  }\n\n  function updateGutterSpace(cm) {\n    var width = cm.display.gutters.offsetWidth;\n    cm.display.sizer.style.marginLeft = width + \"px\";\n  }\n\n  // Compute the character length of a line, taking into account\n  // collapsed ranges (see markText) that might hide parts, and join\n  // other lines onto it.\n  function lineLength(line) {\n    if (line.height == 0) return 0;\n    var len = line.text.length, merged, cur = line;\n    while (merged = collapsedSpanAtStart(cur)) {\n      var found = merged.find(0, true);\n      cur = found.from.line;\n      len += found.from.ch - found.to.ch;\n    }\n    cur = line;\n    while (merged = collapsedSpanAtEnd(cur)) {\n      var found = merged.find(0, true);\n      len -= cur.text.length - found.from.ch;\n      cur = found.to.line;\n      len += cur.text.length - found.to.ch;\n    }\n    return len;\n  }\n\n  // Find the longest line in the document.\n  function findMaxLine(cm) {\n    var d = cm.display, doc = cm.doc;\n    d.maxLine = getLine(doc, doc.first);\n    d.maxLineLength = lineLength(d.maxLine);\n    d.maxLineChanged = true;\n    doc.iter(function(line) {\n      var len = lineLength(line);\n      if (len > d.maxLineLength) {\n        d.maxLineLength = len;\n        d.maxLine = line;\n      }\n    });\n  }\n\n  // Make sure the gutters options contains the element\n  // \"CodeMirror-linenumbers\" when the lineNumbers option is true.\n  function setGuttersForLineNumbers(options) {\n    var found = indexOf(options.gutters, \"CodeMirror-linenumbers\");\n    if (found == -1 && options.lineNumbers) {\n      options.gutters = options.gutters.concat([\"CodeMirror-linenumbers\"]);\n    } else if (found > -1 && !options.lineNumbers) {\n      options.gutters = options.gutters.slice(0);\n      options.gutters.splice(found, 1);\n    }\n  }\n\n  // SCROLLBARS\n\n  // Prepare DOM reads needed to update the scrollbars. Done in one\n  // shot to minimize update/measure roundtrips.\n  function measureForScrollbars(cm) {\n    var d = cm.display, gutterW = d.gutters.offsetWidth;\n    var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n    return {\n      clientHeight: d.scroller.clientHeight,\n      viewHeight: d.wrapper.clientHeight,\n      scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n      viewWidth: d.wrapper.clientWidth,\n      barLeft: cm.options.fixedGutter ? gutterW : 0,\n      docHeight: docH,\n      scrollHeight: docH + scrollGap(cm) + d.barHeight,\n      nativeBarWidth: d.nativeBarWidth,\n      gutterWidth: gutterW\n    };\n  }\n\n  function NativeScrollbars(place, scroll, cm) {\n    this.cm = cm;\n    var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n    var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n    place(vert); place(horiz);\n\n    on(vert, \"scroll\", function() {\n      if (vert.clientHeight) scroll(vert.scrollTop, \"vertical\");\n    });\n    on(horiz, \"scroll\", function() {\n      if (horiz.clientWidth) scroll(horiz.scrollLeft, \"horizontal\");\n    });\n\n    this.checkedOverlay = false;\n    // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n    if (ie && ie_version < 8) this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\";\n  }\n\n  NativeScrollbars.prototype = copyObj({\n    update: function(measure) {\n      var needsH = measure.scrollWidth > measure.clientWidth + 1;\n      var needsV = measure.scrollHeight > measure.clientHeight + 1;\n      var sWidth = measure.nativeBarWidth;\n\n      if (needsV) {\n        this.vert.style.display = \"block\";\n        this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n        var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n        // A bug in IE8 can cause this value to be negative, so guard it.\n        this.vert.firstChild.style.height =\n          Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n      } else {\n        this.vert.style.display = \"\";\n        this.vert.firstChild.style.height = \"0\";\n      }\n\n      if (needsH) {\n        this.horiz.style.display = \"block\";\n        this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n        this.horiz.style.left = measure.barLeft + \"px\";\n        var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n        this.horiz.firstChild.style.width =\n          (measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n      } else {\n        this.horiz.style.display = \"\";\n        this.horiz.firstChild.style.width = \"0\";\n      }\n\n      if (!this.checkedOverlay && measure.clientHeight > 0) {\n        if (sWidth == 0) this.overlayHack();\n        this.checkedOverlay = true;\n      }\n\n      return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0};\n    },\n    setScrollLeft: function(pos) {\n      if (this.horiz.scrollLeft != pos) this.horiz.scrollLeft = pos;\n    },\n    setScrollTop: function(pos) {\n      if (this.vert.scrollTop != pos) this.vert.scrollTop = pos;\n    },\n    overlayHack: function() {\n      var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n      this.horiz.style.minHeight = this.vert.style.minWidth = w;\n      var self = this;\n      var barMouseDown = function(e) {\n        if (e_target(e) != self.vert && e_target(e) != self.horiz)\n          operation(self.cm, onMouseDown)(e);\n      };\n      on(this.vert, \"mousedown\", barMouseDown);\n      on(this.horiz, \"mousedown\", barMouseDown);\n    },\n    clear: function() {\n      var parent = this.horiz.parentNode;\n      parent.removeChild(this.horiz);\n      parent.removeChild(this.vert);\n    }\n  }, NativeScrollbars.prototype);\n\n  function NullScrollbars() {}\n\n  NullScrollbars.prototype = copyObj({\n    update: function() { return {bottom: 0, right: 0}; },\n    setScrollLeft: function() {},\n    setScrollTop: function() {},\n    clear: function() {}\n  }, NullScrollbars.prototype);\n\n  CodeMirror.scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n  function initScrollbars(cm) {\n    if (cm.display.scrollbars) {\n      cm.display.scrollbars.clear();\n      if (cm.display.scrollbars.addClass)\n        rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n    }\n\n    cm.display.scrollbars = new CodeMirror.scrollbarModel[cm.options.scrollbarStyle](function(node) {\n      cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n      // Prevent clicks in the scrollbars from killing focus\n      on(node, \"mousedown\", function() {\n        if (cm.state.focused) setTimeout(function() { cm.display.input.focus(); }, 0);\n      });\n      node.setAttribute(\"cm-not-content\", \"true\");\n    }, function(pos, axis) {\n      if (axis == \"horizontal\") setScrollLeft(cm, pos);\n      else setScrollTop(cm, pos);\n    }, cm);\n    if (cm.display.scrollbars.addClass)\n      addClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n  }\n\n  function updateScrollbars(cm, measure) {\n    if (!measure) measure = measureForScrollbars(cm);\n    var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n    updateScrollbarsInner(cm, measure);\n    for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n      if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n        updateHeightsInViewport(cm);\n      updateScrollbarsInner(cm, measureForScrollbars(cm));\n      startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n    }\n  }\n\n  // Re-synchronize the fake scrollbars with the actual size of the\n  // content.\n  function updateScrollbarsInner(cm, measure) {\n    var d = cm.display;\n    var sizes = d.scrollbars.update(measure);\n\n    d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n    d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n\n    if (sizes.right && sizes.bottom) {\n      d.scrollbarFiller.style.display = \"block\";\n      d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n      d.scrollbarFiller.style.width = sizes.right + \"px\";\n    } else d.scrollbarFiller.style.display = \"\";\n    if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n      d.gutterFiller.style.display = \"block\";\n      d.gutterFiller.style.height = sizes.bottom + \"px\";\n      d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n    } else d.gutterFiller.style.display = \"\";\n  }\n\n  // Compute the lines that are visible in a given viewport (defaults\n  // the the current scroll position). viewport may contain top,\n  // height, and ensure (see op.scrollToPos) properties.\n  function visibleLines(display, doc, viewport) {\n    var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n    top = Math.floor(top - paddingTop(display));\n    var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n    var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n    // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n    // forces those lines into the viewport (if possible).\n    if (viewport && viewport.ensure) {\n      var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n      if (ensureFrom < from) {\n        from = ensureFrom;\n        to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n      } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n        from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n        to = ensureTo;\n      }\n    }\n    return {from: from, to: Math.max(to, from + 1)};\n  }\n\n  // LINE NUMBERS\n\n  // Re-align line numbers and gutter marks to compensate for\n  // horizontal scrolling.\n  function alignHorizontally(cm) {\n    var display = cm.display, view = display.view;\n    if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return;\n    var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n    var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n    for (var i = 0; i < view.length; i++) if (!view[i].hidden) {\n      if (cm.options.fixedGutter && view[i].gutter)\n        view[i].gutter.style.left = left;\n      var align = view[i].alignable;\n      if (align) for (var j = 0; j < align.length; j++)\n        align[j].style.left = left;\n    }\n    if (cm.options.fixedGutter)\n      display.gutters.style.left = (comp + gutterW) + \"px\";\n  }\n\n  // Used to ensure that the line number gutter is still the right\n  // size for the current document size. Returns true when an update\n  // is needed.\n  function maybeUpdateLineNumberWidth(cm) {\n    if (!cm.options.lineNumbers) return false;\n    var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n    if (last.length != display.lineNumChars) {\n      var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n                                                 \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n      var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n      display.lineGutter.style.width = \"\";\n      display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding);\n      display.lineNumWidth = display.lineNumInnerWidth + padding;\n      display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n      display.lineGutter.style.width = display.lineNumWidth + \"px\";\n      updateGutterSpace(cm);\n      return true;\n    }\n    return false;\n  }\n\n  function lineNumberFor(options, i) {\n    return String(options.lineNumberFormatter(i + options.firstLineNumber));\n  }\n\n  // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n  // but using getBoundingClientRect to get a sub-pixel-accurate\n  // result.\n  function compensateForHScroll(display) {\n    return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;\n  }\n\n  // DISPLAY DRAWING\n\n  function DisplayUpdate(cm, viewport, force) {\n    var display = cm.display;\n\n    this.viewport = viewport;\n    // Store some values that we'll need later (but don't want to force a relayout for)\n    this.visible = visibleLines(display, cm.doc, viewport);\n    this.editorIsHidden = !display.wrapper.offsetWidth;\n    this.wrapperHeight = display.wrapper.clientHeight;\n    this.wrapperWidth = display.wrapper.clientWidth;\n    this.oldDisplayWidth = displayWidth(cm);\n    this.force = force;\n    this.dims = getDimensions(cm);\n    this.events = [];\n  }\n\n  DisplayUpdate.prototype.signal = function(emitter, type) {\n    if (hasHandler(emitter, type))\n      this.events.push(arguments);\n  };\n  DisplayUpdate.prototype.finish = function() {\n    for (var i = 0; i < this.events.length; i++)\n      signal.apply(null, this.events[i]);\n  };\n\n  function maybeClipScrollbars(cm) {\n    var display = cm.display;\n    if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n      display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n      display.heightForcer.style.height = scrollGap(cm) + \"px\";\n      display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n      display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n      display.scrollbarsClipped = true;\n    }\n  }\n\n  // Does the actual updating of the line display. Bails out\n  // (returning false) when there is nothing to be done and forced is\n  // false.\n  function updateDisplayIfNeeded(cm, update) {\n    var display = cm.display, doc = cm.doc;\n\n    if (update.editorIsHidden) {\n      resetView(cm);\n      return false;\n    }\n\n    // Bail out if the visible area is already rendered and nothing changed.\n    if (!update.force &&\n        update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n        (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n        display.renderedView == display.view && countDirtyView(cm) == 0)\n      return false;\n\n    if (maybeUpdateLineNumberWidth(cm)) {\n      resetView(cm);\n      update.dims = getDimensions(cm);\n    }\n\n    // Compute a suitable new viewport (from & to)\n    var end = doc.first + doc.size;\n    var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n    var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n    if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom);\n    if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo);\n    if (sawCollapsedSpans) {\n      from = visualLineNo(cm.doc, from);\n      to = visualLineEndNo(cm.doc, to);\n    }\n\n    var different = from != display.viewFrom || to != display.viewTo ||\n      display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n    adjustView(cm, from, to);\n\n    display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n    // Position the mover div to align with the current scroll position\n    cm.display.mover.style.top = display.viewOffset + \"px\";\n\n    var toUpdate = countDirtyView(cm);\n    if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n        (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n      return false;\n\n    // For big changes, we hide the enclosing element during the\n    // update, since that speeds up the operations on most browsers.\n    var focused = activeElt();\n    if (toUpdate > 4) display.lineDiv.style.display = \"none\";\n    patchDisplay(cm, display.updateLineNumbers, update.dims);\n    if (toUpdate > 4) display.lineDiv.style.display = \"\";\n    display.renderedView = display.view;\n    // There might have been a widget with a focused element that got\n    // hidden or updated, if so re-focus it.\n    if (focused && activeElt() != focused && focused.offsetHeight) focused.focus();\n\n    // Prevent selection and cursors from interfering with the scroll\n    // width and height.\n    removeChildren(display.cursorDiv);\n    removeChildren(display.selectionDiv);\n    display.gutters.style.height = 0;\n\n    if (different) {\n      display.lastWrapHeight = update.wrapperHeight;\n      display.lastWrapWidth = update.wrapperWidth;\n      startWorker(cm, 400);\n    }\n\n    display.updateLineNumbers = null;\n\n    return true;\n  }\n\n  function postUpdateDisplay(cm, update) {\n    var force = update.force, viewport = update.viewport;\n    for (var first = true;; first = false) {\n      if (first && cm.options.lineWrapping && update.oldDisplayWidth != displayWidth(cm)) {\n        force = true;\n      } else {\n        force = false;\n        // Clip forced viewport to actual scrollable area.\n        if (viewport && viewport.top != null)\n          viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)};\n        // Updated line heights might result in the drawn area not\n        // actually covering the viewport. Keep looping until it does.\n        update.visible = visibleLines(cm.display, cm.doc, viewport);\n        if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n          break;\n      }\n      if (!updateDisplayIfNeeded(cm, update)) break;\n      updateHeightsInViewport(cm);\n      var barMeasure = measureForScrollbars(cm);\n      updateSelection(cm);\n      setDocumentHeight(cm, barMeasure);\n      updateScrollbars(cm, barMeasure);\n    }\n\n    update.signal(cm, \"update\", cm);\n    if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n      update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n      cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n    }\n  }\n\n  function updateDisplaySimple(cm, viewport) {\n    var update = new DisplayUpdate(cm, viewport);\n    if (updateDisplayIfNeeded(cm, update)) {\n      updateHeightsInViewport(cm);\n      postUpdateDisplay(cm, update);\n      var barMeasure = measureForScrollbars(cm);\n      updateSelection(cm);\n      setDocumentHeight(cm, barMeasure);\n      updateScrollbars(cm, barMeasure);\n      update.finish();\n    }\n  }\n\n  function setDocumentHeight(cm, measure) {\n    cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n    var total = measure.docHeight + cm.display.barHeight;\n    cm.display.heightForcer.style.top = total + \"px\";\n    cm.display.gutters.style.height = Math.max(total + scrollGap(cm), measure.clientHeight) + \"px\";\n  }\n\n  // Read the actual heights of the rendered lines, and update their\n  // stored heights to match.\n  function updateHeightsInViewport(cm) {\n    var display = cm.display;\n    var prevBottom = display.lineDiv.offsetTop;\n    for (var i = 0; i < display.view.length; i++) {\n      var cur = display.view[i], height;\n      if (cur.hidden) continue;\n      if (ie && ie_version < 8) {\n        var bot = cur.node.offsetTop + cur.node.offsetHeight;\n        height = bot - prevBottom;\n        prevBottom = bot;\n      } else {\n        var box = cur.node.getBoundingClientRect();\n        height = box.bottom - box.top;\n      }\n      var diff = cur.line.height - height;\n      if (height < 2) height = textHeight(display);\n      if (diff > .001 || diff < -.001) {\n        updateLineHeight(cur.line, height);\n        updateWidgetHeight(cur.line);\n        if (cur.rest) for (var j = 0; j < cur.rest.length; j++)\n          updateWidgetHeight(cur.rest[j]);\n      }\n    }\n  }\n\n  // Read and store the height of line widgets associated with the\n  // given line.\n  function updateWidgetHeight(line) {\n    if (line.widgets) for (var i = 0; i < line.widgets.length; ++i)\n      line.widgets[i].height = line.widgets[i].node.offsetHeight;\n  }\n\n  // Do a bulk-read of the DOM positions and sizes needed to draw the\n  // view, so that we don't interleave reading and writing to the DOM.\n  function getDimensions(cm) {\n    var d = cm.display, left = {}, width = {};\n    var gutterLeft = d.gutters.clientLeft;\n    for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n      left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft;\n      width[cm.options.gutters[i]] = n.clientWidth;\n    }\n    return {fixedPos: compensateForHScroll(d),\n            gutterTotalWidth: d.gutters.offsetWidth,\n            gutterLeft: left,\n            gutterWidth: width,\n            wrapperWidth: d.wrapper.clientWidth};\n  }\n\n  // Sync the actual display DOM structure with display.view, removing\n  // nodes for lines that are no longer in view, and creating the ones\n  // that are not there yet, and updating the ones that are out of\n  // date.\n  function patchDisplay(cm, updateNumbersFrom, dims) {\n    var display = cm.display, lineNumbers = cm.options.lineNumbers;\n    var container = display.lineDiv, cur = container.firstChild;\n\n    function rm(node) {\n      var next = node.nextSibling;\n      // Works around a throw-scroll bug in OS X Webkit\n      if (webkit && mac && cm.display.currentWheelTarget == node)\n        node.style.display = \"none\";\n      else\n        node.parentNode.removeChild(node);\n      return next;\n    }\n\n    var view = display.view, lineN = display.viewFrom;\n    // Loop over the elements in the view, syncing cur (the DOM nodes\n    // in display.lineDiv) with the view as we go.\n    for (var i = 0; i < view.length; i++) {\n      var lineView = view[i];\n      if (lineView.hidden) {\n      } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n        var node = buildLineElement(cm, lineView, lineN, dims);\n        container.insertBefore(node, cur);\n      } else { // Already drawn\n        while (cur != lineView.node) cur = rm(cur);\n        var updateNumber = lineNumbers && updateNumbersFrom != null &&\n          updateNumbersFrom <= lineN && lineView.lineNumber;\n        if (lineView.changes) {\n          if (indexOf(lineView.changes, \"gutter\") > -1) updateNumber = false;\n          updateLineForChanges(cm, lineView, lineN, dims);\n        }\n        if (updateNumber) {\n          removeChildren(lineView.lineNumber);\n          lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n        }\n        cur = lineView.node.nextSibling;\n      }\n      lineN += lineView.size;\n    }\n    while (cur) cur = rm(cur);\n  }\n\n  // When an aspect of a line changes, a string is added to\n  // lineView.changes. This updates the relevant part of the line's\n  // DOM structure.\n  function updateLineForChanges(cm, lineView, lineN, dims) {\n    for (var j = 0; j < lineView.changes.length; j++) {\n      var type = lineView.changes[j];\n      if (type == \"text\") updateLineText(cm, lineView);\n      else if (type == \"gutter\") updateLineGutter(cm, lineView, lineN, dims);\n      else if (type == \"class\") updateLineClasses(lineView);\n      else if (type == \"widget\") updateLineWidgets(cm, lineView, dims);\n    }\n    lineView.changes = null;\n  }\n\n  // Lines with gutter elements, widgets or a background class need to\n  // be wrapped, and have the extra elements added to the wrapper div\n  function ensureLineWrapped(lineView) {\n    if (lineView.node == lineView.text) {\n      lineView.node = elt(\"div\", null, null, \"position: relative\");\n      if (lineView.text.parentNode)\n        lineView.text.parentNode.replaceChild(lineView.node, lineView.text);\n      lineView.node.appendChild(lineView.text);\n      if (ie && ie_version < 8) lineView.node.style.zIndex = 2;\n    }\n    return lineView.node;\n  }\n\n  function updateLineBackground(lineView) {\n    var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n    if (cls) cls += \" CodeMirror-linebackground\";\n    if (lineView.background) {\n      if (cls) lineView.background.className = cls;\n      else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n    } else if (cls) {\n      var wrap = ensureLineWrapped(lineView);\n      lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n    }\n  }\n\n  // Wrapper around buildLineContent which will reuse the structure\n  // in display.externalMeasured when possible.\n  function getLineContent(cm, lineView) {\n    var ext = cm.display.externalMeasured;\n    if (ext && ext.line == lineView.line) {\n      cm.display.externalMeasured = null;\n      lineView.measure = ext.measure;\n      return ext.built;\n    }\n    return buildLineContent(cm, lineView);\n  }\n\n  // Redraw the line's text. Interacts with the background and text\n  // classes because the mode may output tokens that influence these\n  // classes.\n  function updateLineText(cm, lineView) {\n    var cls = lineView.text.className;\n    var built = getLineContent(cm, lineView);\n    if (lineView.text == lineView.node) lineView.node = built.pre;\n    lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n    lineView.text = built.pre;\n    if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n      lineView.bgClass = built.bgClass;\n      lineView.textClass = built.textClass;\n      updateLineClasses(lineView);\n    } else if (cls) {\n      lineView.text.className = cls;\n    }\n  }\n\n  function updateLineClasses(lineView) {\n    updateLineBackground(lineView);\n    if (lineView.line.wrapClass)\n      ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n    else if (lineView.node != lineView.text)\n      lineView.node.className = \"\";\n    var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n    lineView.text.className = textClass || \"\";\n  }\n\n  function updateLineGutter(cm, lineView, lineN, dims) {\n    if (lineView.gutter) {\n      lineView.node.removeChild(lineView.gutter);\n      lineView.gutter = null;\n    }\n    var markers = lineView.line.gutterMarkers;\n    if (cm.options.lineNumbers || markers) {\n      var wrap = ensureLineWrapped(lineView);\n      var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", \"left: \" +\n                                             (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) +\n                                             \"px; width: \" + dims.gutterTotalWidth + \"px\");\n      cm.display.input.setUneditable(gutterWrap);\n      wrap.insertBefore(gutterWrap, lineView.text);\n      if (lineView.line.gutterClass)\n        gutterWrap.className += \" \" + lineView.line.gutterClass;\n      if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n        lineView.lineNumber = gutterWrap.appendChild(\n          elt(\"div\", lineNumberFor(cm.options, lineN),\n              \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n              \"left: \" + dims.gutterLeft[\"CodeMirror-linenumbers\"] + \"px; width: \"\n              + cm.display.lineNumInnerWidth + \"px\"));\n      if (markers) for (var k = 0; k < cm.options.gutters.length; ++k) {\n        var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];\n        if (found)\n          gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\", \"left: \" +\n                                     dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"));\n      }\n    }\n  }\n\n  function updateLineWidgets(cm, lineView, dims) {\n    if (lineView.alignable) lineView.alignable = null;\n    for (var node = lineView.node.firstChild, next; node; node = next) {\n      var next = node.nextSibling;\n      if (node.className == \"CodeMirror-linewidget\")\n        lineView.node.removeChild(node);\n    }\n    insertLineWidgets(cm, lineView, dims);\n  }\n\n  // Build a line's DOM representation from scratch\n  function buildLineElement(cm, lineView, lineN, dims) {\n    var built = getLineContent(cm, lineView);\n    lineView.text = lineView.node = built.pre;\n    if (built.bgClass) lineView.bgClass = built.bgClass;\n    if (built.textClass) lineView.textClass = built.textClass;\n\n    updateLineClasses(lineView);\n    updateLineGutter(cm, lineView, lineN, dims);\n    insertLineWidgets(cm, lineView, dims);\n    return lineView.node;\n  }\n\n  // A lineView may contain multiple logical lines (when merged by\n  // collapsed spans). The widgets for all of them need to be drawn.\n  function insertLineWidgets(cm, lineView, dims) {\n    insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n    if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++)\n      insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false);\n  }\n\n  function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n    if (!line.widgets) return;\n    var wrap = ensureLineWrapped(lineView);\n    for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n      var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\");\n      if (!widget.handleMouseEvents) node.setAttribute(\"cm-ignore-events\", \"true\");\n      positionLineWidget(widget, node, lineView, dims);\n      cm.display.input.setUneditable(node);\n      if (allowAbove && widget.above)\n        wrap.insertBefore(node, lineView.gutter || lineView.text);\n      else\n        wrap.appendChild(node);\n      signalLater(widget, \"redraw\");\n    }\n  }\n\n  function positionLineWidget(widget, node, lineView, dims) {\n    if (widget.noHScroll) {\n      (lineView.alignable || (lineView.alignable = [])).push(node);\n      var width = dims.wrapperWidth;\n      node.style.left = dims.fixedPos + \"px\";\n      if (!widget.coverGutter) {\n        width -= dims.gutterTotalWidth;\n        node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n      }\n      node.style.width = width + \"px\";\n    }\n    if (widget.coverGutter) {\n      node.style.zIndex = 5;\n      node.style.position = \"relative\";\n      if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + \"px\";\n    }\n  }\n\n  // POSITION OBJECT\n\n  // A Pos instance represents a position within the text.\n  var Pos = CodeMirror.Pos = function(line, ch) {\n    if (!(this instanceof Pos)) return new Pos(line, ch);\n    this.line = line; this.ch = ch;\n  };\n\n  // Compare two positions, return 0 if they are the same, a negative\n  // number when a is less, and a positive number otherwise.\n  var cmp = CodeMirror.cmpPos = function(a, b) { return a.line - b.line || a.ch - b.ch; };\n\n  function copyPos(x) {return Pos(x.line, x.ch);}\n  function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; }\n  function minPos(a, b) { return cmp(a, b) < 0 ? a : b; }\n\n  // INPUT HANDLING\n\n  function ensureFocus(cm) {\n    if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }\n  }\n\n  function isReadOnly(cm) {\n    return cm.options.readOnly || cm.doc.cantEdit;\n  }\n\n  // This will be set to an array of strings when copying, so that,\n  // when pasting, we know what kind of selections the copied text\n  // was made out of.\n  var lastCopied = null;\n\n  function applyTextInput(cm, inserted, deleted, sel) {\n    var doc = cm.doc;\n    cm.display.shift = false;\n    if (!sel) sel = doc.sel;\n\n    var textLines = splitLines(inserted), multiPaste = null;\n    // When pasing N lines into N selections, insert one line per selection\n    if (cm.state.pasteIncoming && sel.ranges.length > 1) {\n      if (lastCopied && lastCopied.join(\"\\n\") == inserted)\n        multiPaste = sel.ranges.length % lastCopied.length == 0 && map(lastCopied, splitLines);\n      else if (textLines.length == sel.ranges.length)\n        multiPaste = map(textLines, function(l) { return [l]; });\n    }\n\n    // Normal behavior is to insert the new text into every selection\n    for (var i = sel.ranges.length - 1; i >= 0; i--) {\n      var range = sel.ranges[i];\n      var from = range.from(), to = range.to();\n      if (range.empty()) {\n        if (deleted && deleted > 0) // Handle deletion\n          from = Pos(from.line, from.ch - deleted);\n        else if (cm.state.overwrite && !cm.state.pasteIncoming) // Handle overwrite\n          to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));\n      }\n      var updateInput = cm.curOp.updateInput;\n      var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i % multiPaste.length] : textLines,\n                         origin: cm.state.pasteIncoming ? \"paste\" : cm.state.cutIncoming ? \"cut\" : \"+input\"};\n      makeChange(cm.doc, changeEvent);\n      signalLater(cm, \"inputRead\", cm, changeEvent);\n      // When an 'electric' character is inserted, immediately trigger a reindent\n      if (inserted && !cm.state.pasteIncoming && cm.options.electricChars &&\n          cm.options.smartIndent && range.head.ch < 100 &&\n          (!i || sel.ranges[i - 1].head.line != range.head.line)) {\n        var mode = cm.getModeAt(range.head);\n        var end = changeEnd(changeEvent);\n        if (mode.electricChars) {\n          for (var j = 0; j < mode.electricChars.length; j++)\n            if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n              indentLine(cm, end.line, \"smart\");\n              break;\n            }\n        } else if (mode.electricInput) {\n          if (mode.electricInput.test(getLine(doc, end.line).text.slice(0, end.ch)))\n            indentLine(cm, end.line, \"smart\");\n        }\n      }\n    }\n    ensureCursorVisible(cm);\n    cm.curOp.updateInput = updateInput;\n    cm.curOp.typing = true;\n    cm.state.pasteIncoming = cm.state.cutIncoming = false;\n  }\n\n  function copyableRanges(cm) {\n    var text = [], ranges = [];\n    for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n      var line = cm.doc.sel.ranges[i].head.line;\n      var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n      ranges.push(lineRange);\n      text.push(cm.getRange(lineRange.anchor, lineRange.head));\n    }\n    return {text: text, ranges: ranges};\n  }\n\n  function disableBrowserMagic(field) {\n    field.setAttribute(\"autocorrect\", \"off\");\n    field.setAttribute(\"autocapitalize\", \"off\");\n    field.setAttribute(\"spellcheck\", \"false\");\n  }\n\n  // TEXTAREA INPUT STYLE\n\n  function TextareaInput(cm) {\n    this.cm = cm;\n    // See input.poll and input.reset\n    this.prevInput = \"\";\n\n    // Flag that indicates whether we expect input to appear real soon\n    // now (after some event like 'keypress' or 'input') and are\n    // polling intensively.\n    this.pollingFast = false;\n    // Self-resetting timeout for the poller\n    this.polling = new Delayed();\n    // Tracks when input.reset has punted to just putting a short\n    // string into the textarea instead of the full selection.\n    this.inaccurateSelection = false;\n    // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n    this.hasSelection = false;\n  };\n\n  function hiddenTextarea() {\n    var te = elt(\"textarea\", null, null, \"position: absolute; padding: 0; width: 1px; height: 1em; outline: none\");\n    var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n    // The textarea is kept positioned near the cursor to prevent the\n    // fact that it'll be scrolled into view on input from scrolling\n    // our fake cursor out of view. On webkit, when wrap=off, paste is\n    // very slow. So make the area wide instead.\n    if (webkit) te.style.width = \"1000px\";\n    else te.setAttribute(\"wrap\", \"off\");\n    // If border: 0; -- iOS fails to open keyboard (issue #1287)\n    if (ios) te.style.border = \"1px solid black\";\n    disableBrowserMagic(te);\n    return div;\n  }\n\n  TextareaInput.prototype = copyObj({\n    init: function(display) {\n      var input = this, cm = this.cm;\n\n      // Wraps and hides input textarea\n      var div = this.wrapper = hiddenTextarea();\n      // The semihidden textarea that is focused when the editor is\n      // focused, and receives input.\n      var te = this.textarea = div.firstChild;\n      display.wrapper.insertBefore(div, display.wrapper.firstChild);\n\n      // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n      if (ios) te.style.width = \"0px\";\n\n      on(te, \"input\", function() {\n        if (ie && ie_version >= 9 && input.hasSelection) input.hasSelection = null;\n        input.poll();\n      });\n\n      on(te, \"paste\", function() {\n        // Workaround for webkit bug https://bugs.webkit.org/show_bug.cgi?id=90206\n        // Add a char to the end of textarea before paste occur so that\n        // selection doesn't span to the end of textarea.\n        if (webkit && !cm.state.fakedLastChar && !(new Date - cm.state.lastMiddleDown < 200)) {\n          var start = te.selectionStart, end = te.selectionEnd;\n          te.value += \"$\";\n          // The selection end needs to be set before the start, otherwise there\n          // can be an intermediate non-empty selection between the two, which\n          // can override the middle-click paste buffer on linux and cause the\n          // wrong thing to get pasted.\n          te.selectionEnd = end;\n          te.selectionStart = start;\n          cm.state.fakedLastChar = true;\n        }\n        cm.state.pasteIncoming = true;\n        input.fastPoll();\n      });\n\n      function prepareCopyCut(e) {\n        if (cm.somethingSelected()) {\n          lastCopied = cm.getSelections();\n          if (input.inaccurateSelection) {\n            input.prevInput = \"\";\n            input.inaccurateSelection = false;\n            te.value = lastCopied.join(\"\\n\");\n            selectInput(te);\n          }\n        } else {\n          var ranges = copyableRanges(cm);\n          lastCopied = ranges.text;\n          if (e.type == \"cut\") {\n            cm.setSelections(ranges.ranges, null, sel_dontScroll);\n          } else {\n            input.prevInput = \"\";\n            te.value = ranges.text.join(\"\\n\");\n            selectInput(te);\n          }\n        }\n        if (e.type == \"cut\") cm.state.cutIncoming = true;\n      }\n      on(te, \"cut\", prepareCopyCut);\n      on(te, \"copy\", prepareCopyCut);\n\n      on(display.scroller, \"paste\", function(e) {\n        if (eventInWidget(display, e)) return;\n        cm.state.pasteIncoming = true;\n        input.focus();\n      });\n\n      // Prevent normal selection in the editor (we handle our own)\n      on(display.lineSpace, \"selectstart\", function(e) {\n        if (!eventInWidget(display, e)) e_preventDefault(e);\n      });\n    },\n\n    prepareSelection: function() {\n      // Redraw the selection and/or cursor\n      var cm = this.cm, display = cm.display, doc = cm.doc;\n      var result = prepareSelection(cm);\n\n      // Move the hidden textarea near the cursor to prevent scrolling artifacts\n      if (cm.options.moveInputWithCursor) {\n        var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n        var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n        result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n                                            headPos.top + lineOff.top - wrapOff.top));\n        result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n                                             headPos.left + lineOff.left - wrapOff.left));\n      }\n\n      return result;\n    },\n\n    showSelection: function(drawn) {\n      var cm = this.cm, display = cm.display;\n      removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n      removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n      if (drawn.teTop != null) {\n        this.wrapper.style.top = drawn.teTop + \"px\";\n        this.wrapper.style.left = drawn.teLeft + \"px\";\n      }\n    },\n\n    // Reset the input to correspond to the selection (or to be empty,\n    // when not typing and nothing is selected)\n    reset: function(typing) {\n      if (this.contextMenuPending) return;\n      var minimal, selected, cm = this.cm, doc = cm.doc;\n      if (cm.somethingSelected()) {\n        this.prevInput = \"\";\n        var range = doc.sel.primary();\n        minimal = hasCopyEvent &&\n          (range.to().line - range.from().line > 100 || (selected = cm.getSelection()).length > 1000);\n        var content = minimal ? \"-\" : selected || cm.getSelection();\n        this.textarea.value = content;\n        if (cm.state.focused) selectInput(this.textarea);\n        if (ie && ie_version >= 9) this.hasSelection = content;\n      } else if (!typing) {\n        this.prevInput = this.textarea.value = \"\";\n        if (ie && ie_version >= 9) this.hasSelection = null;\n      }\n      this.inaccurateSelection = minimal;\n    },\n\n    getField: function() { return this.textarea; },\n\n    supportsTouch: function() { return false; },\n\n    focus: function() {\n      if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n        try { this.textarea.focus(); }\n        catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n      }\n    },\n\n    blur: function() { this.textarea.blur(); },\n\n    resetPosition: function() {\n      this.wrapper.style.top = this.wrapper.style.left = 0;\n    },\n\n    receivedFocus: function() { this.slowPoll(); },\n\n    // Poll for input changes, using the normal rate of polling. This\n    // runs as long as the editor is focused.\n    slowPoll: function() {\n      var input = this;\n      if (input.pollingFast) return;\n      input.polling.set(this.cm.options.pollInterval, function() {\n        input.poll();\n        if (input.cm.state.focused) input.slowPoll();\n      });\n    },\n\n    // When an event has just come in that is likely to add or change\n    // something in the input textarea, we poll faster, to ensure that\n    // the change appears on the screen quickly.\n    fastPoll: function() {\n      var missed = false, input = this;\n      input.pollingFast = true;\n      function p() {\n        var changed = input.poll();\n        if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n        else {input.pollingFast = false; input.slowPoll();}\n      }\n      input.polling.set(20, p);\n    },\n\n    // Read input from the textarea, and update the document to match.\n    // When something is selected, it is present in the textarea, and\n    // selected (unless it is huge, in which case a placeholder is\n    // used). When nothing is selected, the cursor sits after previously\n    // seen text (can be empty), which is stored in prevInput (we must\n    // not reset the textarea when typing, because that breaks IME).\n    poll: function() {\n      var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n      // Since this is called a *lot*, try to bail out as cheaply as\n      // possible when it is clear that nothing happened. hasSelection\n      // will be the case when there is a lot of text in the textarea,\n      // in which case reading its value would be expensive.\n      if (!cm.state.focused || (hasSelection(input) && !prevInput) ||\n          isReadOnly(cm) || cm.options.disableInput || cm.state.keySeq)\n        return false;\n      // See paste handler for more on the fakedLastChar kludge\n      if (cm.state.pasteIncoming && cm.state.fakedLastChar) {\n        input.value = input.value.substring(0, input.value.length - 1);\n        cm.state.fakedLastChar = false;\n      }\n      var text = input.value;\n      // If nothing changed, bail.\n      if (text == prevInput && !cm.somethingSelected()) return false;\n      // Work around nonsensical selection resetting in IE9/10, and\n      // inexplicable appearance of private area unicode characters on\n      // some key combos in Mac (#2689).\n      if (ie && ie_version >= 9 && this.hasSelection === text ||\n          mac && /[\\uf700-\\uf7ff]/.test(text)) {\n        cm.display.input.reset();\n        return false;\n      }\n\n      if (text.charCodeAt(0) == 0x200b && cm.doc.sel == cm.display.selForContextMenu && !prevInput)\n        prevInput = \"\\u200b\";\n      // Find the part of the input that is actually new\n      var same = 0, l = Math.min(prevInput.length, text.length);\n      while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same;\n\n      var self = this;\n      runInOp(cm, function() {\n        applyTextInput(cm, text.slice(same), prevInput.length - same);\n\n        // Don't leave long text in the textarea, since it makes further polling slow\n        if (text.length > 1000 || text.indexOf(\"\\n\") > -1) input.value = self.prevInput = \"\";\n        else self.prevInput = text;\n      });\n      return true;\n    },\n\n    ensurePolled: function() {\n      if (this.pollingFast && this.poll()) this.pollingFast = false;\n    },\n\n    onKeyPress: function() {\n      if (ie && ie_version >= 9) this.hasSelection = null;\n      this.fastPoll();\n    },\n\n    onContextMenu: function(e) {\n      var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n      var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n      if (!pos || presto) return; // Opera is difficult.\n\n      // Reset the current text selection only if the click is done outside of the selection\n      // and 'resetSelectionOnContextMenu' option is true.\n      var reset = cm.options.resetSelectionOnContextMenu;\n      if (reset && cm.doc.sel.contains(pos) == -1)\n        operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\n\n      var oldCSS = te.style.cssText;\n      input.wrapper.style.position = \"absolute\";\n      te.style.cssText = \"position: fixed; width: 30px; height: 30px; top: \" + (e.clientY - 5) +\n        \"px; left: \" + (e.clientX - 5) + \"px; z-index: 1000; background: \" +\n        (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") +\n        \"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n      if (webkit) var oldScrollY = window.scrollY; // Work around Chrome issue (#2712)\n      display.input.focus();\n      if (webkit) window.scrollTo(null, oldScrollY);\n      display.input.reset();\n      // Adds \"Select all\" to context menu in FF\n      if (!cm.somethingSelected()) te.value = input.prevInput = \" \";\n      input.contextMenuPending = true;\n      display.selForContextMenu = cm.doc.sel;\n      clearTimeout(display.detectingSelectAll);\n\n      // Select-all will be greyed out if there's nothing to select, so\n      // this adds a zero-width space so that we can later check whether\n      // it got selected.\n      function prepareSelectAllHack() {\n        if (te.selectionStart != null) {\n          var selected = cm.somethingSelected();\n          var extval = te.value = \"\\u200b\" + (selected ? te.value : \"\");\n          input.prevInput = selected ? \"\" : \"\\u200b\";\n          te.selectionStart = 1; te.selectionEnd = extval.length;\n          // Re-set this, in case some other handler touched the\n          // selection in the meantime.\n          display.selForContextMenu = cm.doc.sel;\n        }\n      }\n      function rehide() {\n        input.contextMenuPending = false;\n        input.wrapper.style.position = \"relative\";\n        te.style.cssText = oldCSS;\n        if (ie && ie_version < 9) display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos);\n\n        // Try to detect the user choosing select-all\n        if (te.selectionStart != null) {\n          if (!ie || (ie && ie_version < 9)) prepareSelectAllHack();\n          var i = 0, poll = function() {\n            if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0)\n              operation(cm, commands.selectAll)(cm);\n            else if (i++ < 10) display.detectingSelectAll = setTimeout(poll, 500);\n            else display.input.reset();\n          };\n          display.detectingSelectAll = setTimeout(poll, 200);\n        }\n      }\n\n      if (ie && ie_version >= 9) prepareSelectAllHack();\n      if (captureRightClick) {\n        e_stop(e);\n        var mouseup = function() {\n          off(window, \"mouseup\", mouseup);\n          setTimeout(rehide, 20);\n        };\n        on(window, \"mouseup\", mouseup);\n      } else {\n        setTimeout(rehide, 50);\n      }\n    },\n\n    setUneditable: nothing,\n\n    needsContentAttribute: false\n  }, TextareaInput.prototype);\n\n  // CONTENTEDITABLE INPUT STYLE\n\n  function ContentEditableInput(cm) {\n    this.cm = cm;\n    this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n    this.polling = new Delayed();\n  }\n\n  ContentEditableInput.prototype = copyObj({\n    init: function(display) {\n      var input = this, cm = input.cm;\n      var div = input.div = display.lineDiv;\n      div.contentEditable = \"true\";\n      disableBrowserMagic(div);\n\n      on(div, \"paste\", function(e) {\n        var pasted = e.clipboardData && e.clipboardData.getData(\"text/plain\");\n        if (pasted) {\n          e.preventDefault();\n          cm.replaceSelection(pasted, null, \"paste\");\n        }\n      });\n\n      on(div, \"compositionstart\", function(e) {\n        var data = e.data;\n        input.composing = {sel: cm.doc.sel, data: data, startData: data};\n        if (!data) return;\n        var prim = cm.doc.sel.primary();\n        var line = cm.getLine(prim.head.line);\n        var found = line.indexOf(data, Math.max(0, prim.head.ch - data.length));\n        if (found > -1 && found <= prim.head.ch)\n          input.composing.sel = simpleSelection(Pos(prim.head.line, found),\n                                                Pos(prim.head.line, found + data.length));\n      });\n      on(div, \"compositionupdate\", function(e) {\n        input.composing.data = e.data;\n      });\n      on(div, \"compositionend\", function(e) {\n        var ours = input.composing;\n        if (!ours) return;\n        if (e.data != ours.startData && !/\\u200b/.test(e.data))\n          ours.data = e.data;\n        // Need a small delay to prevent other code (input event,\n        // selection polling) from doing damage when fired right after\n        // compositionend.\n        setTimeout(function() {\n          if (!ours.handled)\n            input.applyComposition(ours);\n          if (input.composing == ours)\n            input.composing = null;\n        }, 50);\n      });\n\n      on(div, \"touchstart\", function() {\n        input.forceCompositionEnd();\n      });\n\n      on(div, \"input\", function() {\n        if (input.composing) return;\n        if (!input.pollContent())\n          runInOp(input.cm, function() {regChange(cm);});\n      });\n\n      function onCopyCut(e) {\n        if (cm.somethingSelected()) {\n          lastCopied = cm.getSelections();\n          if (e.type == \"cut\") cm.replaceSelection(\"\", null, \"cut\");\n        } else {\n          var ranges = copyableRanges(cm);\n          lastCopied = ranges.text;\n          if (e.type == \"cut\") {\n            cm.operation(function() {\n              cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n              cm.replaceSelection(\"\", null, \"cut\");\n            });\n          }\n        }\n        // iOS exposes the clipboard API, but seems to discard content inserted into it\n        if (e.clipboardData && !ios) {\n          e.preventDefault();\n          e.clipboardData.clearData();\n          e.clipboardData.setData(\"text/plain\", lastCopied.join(\"\\n\"));\n        } else {\n          // Old-fashioned briefly-focus-a-textarea hack\n          var kludge = hiddenTextarea(), te = kludge.firstChild;\n          cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n          te.value = lastCopied.join(\"\\n\");\n          var hadFocus = document.activeElement;\n          selectInput(te);\n          setTimeout(function() {\n            cm.display.lineSpace.removeChild(kludge);\n            hadFocus.focus();\n          }, 50);\n        }\n      }\n      on(div, \"copy\", onCopyCut);\n      on(div, \"cut\", onCopyCut);\n    },\n\n    prepareSelection: function() {\n      var result = prepareSelection(this.cm, false);\n      result.focus = this.cm.state.focused;\n      return result;\n    },\n\n    showSelection: function(info) {\n      if (!info || !this.cm.display.view.length) return;\n      if (info.focus) this.showPrimarySelection();\n      this.showMultipleSelections(info);\n    },\n\n    showPrimarySelection: function() {\n      var sel = window.getSelection(), prim = this.cm.doc.sel.primary();\n      var curAnchor = domToPos(this.cm, sel.anchorNode, sel.anchorOffset);\n      var curFocus = domToPos(this.cm, sel.focusNode, sel.focusOffset);\n      if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n          cmp(minPos(curAnchor, curFocus), prim.from()) == 0 &&\n          cmp(maxPos(curAnchor, curFocus), prim.to()) == 0)\n        return;\n\n      var start = posToDOM(this.cm, prim.from());\n      var end = posToDOM(this.cm, prim.to());\n      if (!start && !end) return;\n\n      var view = this.cm.display.view;\n      var old = sel.rangeCount && sel.getRangeAt(0);\n      if (!start) {\n        start = {node: view[0].measure.map[2], offset: 0};\n      } else if (!end) { // FIXME dangerously hacky\n        var measure = view[view.length - 1].measure;\n        var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n        end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n      }\n\n      try { var rng = range(start.node, start.offset, end.offset, end.node); }\n      catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n      if (rng) {\n        sel.removeAllRanges();\n        sel.addRange(rng);\n        if (old && sel.anchorNode == null) sel.addRange(old);\n      }\n      this.rememberSelection();\n    },\n\n    showMultipleSelections: function(info) {\n      removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n      removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n    },\n\n    rememberSelection: function() {\n      var sel = window.getSelection();\n      this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n      this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n    },\n\n    selectionInEditor: function() {\n      var sel = window.getSelection();\n      if (!sel.rangeCount) return false;\n      var node = sel.getRangeAt(0).commonAncestorContainer;\n      return contains(this.div, node);\n    },\n\n    focus: function() {\n      if (this.cm.options.readOnly != \"nocursor\") this.div.focus();\n    },\n    blur: function() { this.div.blur(); },\n    getField: function() { return this.div; },\n\n    supportsTouch: function() { return true; },\n\n    receivedFocus: function() {\n      var input = this;\n      if (this.selectionInEditor())\n        this.pollSelection();\n      else\n        runInOp(this.cm, function() { input.cm.curOp.selectionChanged = true; });\n\n      function poll() {\n        if (input.cm.state.focused) {\n          input.pollSelection();\n          input.polling.set(input.cm.options.pollInterval, poll);\n        }\n      }\n      this.polling.set(this.cm.options.pollInterval, poll);\n    },\n\n    pollSelection: function() {\n      if (this.composing) return;\n\n      var sel = window.getSelection(), cm = this.cm;\n      if (sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n          sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset) {\n        this.rememberSelection();\n        var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n        var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n        if (anchor && head) runInOp(cm, function() {\n          setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n          if (anchor.bad || head.bad) cm.curOp.selectionChanged = true;\n        });\n      }\n    },\n\n    pollContent: function() {\n      var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n      var from = sel.from(), to = sel.to();\n      if (from.line < display.viewFrom || to.line > display.viewTo - 1) return false;\n\n      var fromIndex;\n      if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n        var fromLine = lineNo(display.view[0].line);\n        var fromNode = display.view[0].node;\n      } else {\n        var fromLine = lineNo(display.view[fromIndex].line);\n        var fromNode = display.view[fromIndex - 1].node.nextSibling;\n      }\n      var toIndex = findViewIndex(cm, to.line);\n      if (toIndex == display.view.length - 1) {\n        var toLine = display.viewTo - 1;\n        var toNode = display.view[toIndex].node;\n      } else {\n        var toLine = lineNo(display.view[toIndex + 1].line) - 1;\n        var toNode = display.view[toIndex + 1].node.previousSibling;\n      }\n\n      var newText = splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n      var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n      while (newText.length > 1 && oldText.length > 1) {\n        if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n        else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n        else break;\n      }\n\n      var cutFront = 0, cutEnd = 0;\n      var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n      while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n        ++cutFront;\n      var newBot = lst(newText), oldBot = lst(oldText);\n      var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n                               oldBot.length - (oldText.length == 1 ? cutFront : 0));\n      while (cutEnd < maxCutEnd &&\n             newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n        ++cutEnd;\n\n      newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd);\n      newText[0] = newText[0].slice(cutFront);\n\n      var chFrom = Pos(fromLine, cutFront);\n      var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n      if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n        replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n        return true;\n      }\n    },\n\n    ensurePolled: function() {\n      this.forceCompositionEnd();\n    },\n    reset: function() {\n      this.forceCompositionEnd();\n    },\n    forceCompositionEnd: function() {\n      if (!this.composing || this.composing.handled) return;\n      this.applyComposition(this.composing);\n      this.composing.handled = true;\n      this.div.blur();\n      this.div.focus();\n    },\n    applyComposition: function(composing) {\n      if (composing.data && composing.data != composing.startData)\n        operation(this.cm, applyTextInput)(this.cm, composing.data, 0, composing.sel);\n    },\n\n    setUneditable: function(node) {\n      node.setAttribute(\"contenteditable\", \"false\");\n    },\n\n    onKeyPress: function(e) {\n      e.preventDefault();\n      operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0);\n    },\n\n    onContextMenu: nothing,\n    resetPosition: nothing,\n\n    needsContentAttribute: true\n  }, ContentEditableInput.prototype);\n\n  function posToDOM(cm, pos) {\n    var view = findViewForLine(cm, pos.line);\n    if (!view || view.hidden) return null;\n    var line = getLine(cm.doc, pos.line);\n    var info = mapFromLineView(view, line, pos.line);\n\n    var order = getOrder(line), side = \"left\";\n    if (order) {\n      var partPos = getBidiPartAt(order, pos.ch);\n      side = partPos % 2 ? \"right\" : \"left\";\n    }\n    var result = nodeAndOffsetInLineMap(info.map, pos.ch, \"left\");\n    result.offset = result.collapse == \"right\" ? result.end : result.start;\n    return result;\n  }\n\n  function badPos(pos, bad) { if (bad) pos.bad = true; return pos; }\n\n  function domToPos(cm, node, offset) {\n    var lineNode;\n    if (node == cm.display.lineDiv) {\n      lineNode = cm.display.lineDiv.childNodes[offset];\n      if (!lineNode) return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true);\n      node = null; offset = 0;\n    } else {\n      for (lineNode = node;; lineNode = lineNode.parentNode) {\n        if (!lineNode || lineNode == cm.display.lineDiv) return null;\n        if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) break;\n      }\n    }\n    for (var i = 0; i < cm.display.view.length; i++) {\n      var lineView = cm.display.view[i];\n      if (lineView.node == lineNode)\n        return locateNodeInLineView(lineView, node, offset);\n    }\n  }\n\n  function locateNodeInLineView(lineView, node, offset) {\n    var wrapper = lineView.text.firstChild, bad = false;\n    if (!node || !contains(wrapper, node)) return badPos(Pos(lineNo(lineView.line), 0), true);\n    if (node == wrapper) {\n      bad = true;\n      node = wrapper.childNodes[offset];\n      offset = 0;\n      if (!node) {\n        var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n        return badPos(Pos(lineNo(line), line.text.length), bad);\n      }\n    }\n\n    var textNode = node.nodeType == 3 ? node : null, topNode = node;\n    if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n      textNode = node.firstChild;\n      if (offset) offset = textNode.nodeValue.length;\n    }\n    while (topNode.parentNode != wrapper) topNode = topNode.parentNode;\n    var measure = lineView.measure, maps = measure.maps;\n\n    function find(textNode, topNode, offset) {\n      for (var i = -1; i < (maps ? maps.length : 0); i++) {\n        var map = i < 0 ? measure.map : maps[i];\n        for (var j = 0; j < map.length; j += 3) {\n          var curNode = map[j + 2];\n          if (curNode == textNode || curNode == topNode) {\n            var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n            var ch = map[j] + offset;\n            if (offset < 0 || curNode != textNode) ch = map[j + (offset ? 1 : 0)];\n            return Pos(line, ch);\n          }\n        }\n      }\n    }\n    var found = find(textNode, topNode, offset);\n    if (found) return badPos(found, bad);\n\n    // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n    for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n      found = find(after, after.firstChild, 0);\n      if (found)\n        return badPos(Pos(found.line, found.ch - dist), bad);\n      else\n        dist += after.textContent.length;\n    }\n    for (var before = topNode.previousSibling, dist = offset; before; before = before.previousSibling) {\n      found = find(before, before.firstChild, -1);\n      if (found)\n        return badPos(Pos(found.line, found.ch + dist), bad);\n      else\n        dist += after.textContent.length;\n    }\n  }\n\n  function domTextBetween(cm, from, to, fromLine, toLine) {\n    var text = \"\", closing = false;\n    function recognizeMarker(id) { return function(marker) { return marker.id == id; }; }\n    function walk(node) {\n      if (node.nodeType == 1) {\n        var cmText = node.getAttribute(\"cm-text\");\n        if (cmText != null) {\n          if (cmText == \"\") cmText = node.textContent.replace(/\\u200b/g, \"\");\n          text += cmText;\n          return;\n        }\n        var markerID = node.getAttribute(\"cm-marker\"), range;\n        if (markerID) {\n          var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n          if (found.length && (range = found[0].find()))\n            text += getBetween(cm.doc, range.from, range.to).join(\"\\n\");\n          return;\n        }\n        if (node.getAttribute(\"contenteditable\") == \"false\") return;\n        for (var i = 0; i < node.childNodes.length; i++)\n          walk(node.childNodes[i]);\n        if (/^(pre|div|p)$/i.test(node.nodeName))\n          closing = true;\n      } else if (node.nodeType == 3) {\n        var val = node.nodeValue;\n        if (!val) return;\n        if (closing) {\n          text += \"\\n\";\n          closing = false;\n        }\n        text += val;\n      }\n    }\n    for (;;) {\n      walk(from);\n      if (from == to) break;\n      from = from.nextSibling;\n    }\n    return text;\n  }\n\n  CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n  // SELECTION / CURSOR\n\n  // Selection objects are immutable. A new one is created every time\n  // the selection changes. A selection is one or more non-overlapping\n  // (and non-touching) ranges, sorted, and an integer that indicates\n  // which one is the primary selection (the one that's scrolled into\n  // view, that getCursor returns, etc).\n  function Selection(ranges, primIndex) {\n    this.ranges = ranges;\n    this.primIndex = primIndex;\n  }\n\n  Selection.prototype = {\n    primary: function() { return this.ranges[this.primIndex]; },\n    equals: function(other) {\n      if (other == this) return true;\n      if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false;\n      for (var i = 0; i < this.ranges.length; i++) {\n        var here = this.ranges[i], there = other.ranges[i];\n        if (cmp(here.anchor, there.anchor) != 0 || cmp(here.head, there.head) != 0) return false;\n      }\n      return true;\n    },\n    deepCopy: function() {\n      for (var out = [], i = 0; i < this.ranges.length; i++)\n        out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head));\n      return new Selection(out, this.primIndex);\n    },\n    somethingSelected: function() {\n      for (var i = 0; i < this.ranges.length; i++)\n        if (!this.ranges[i].empty()) return true;\n      return false;\n    },\n    contains: function(pos, end) {\n      if (!end) end = pos;\n      for (var i = 0; i < this.ranges.length; i++) {\n        var range = this.ranges[i];\n        if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n          return i;\n      }\n      return -1;\n    }\n  };\n\n  function Range(anchor, head) {\n    this.anchor = anchor; this.head = head;\n  }\n\n  Range.prototype = {\n    from: function() { return minPos(this.anchor, this.head); },\n    to: function() { return maxPos(this.anchor, this.head); },\n    empty: function() {\n      return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;\n    }\n  };\n\n  // Take an unsorted, potentially overlapping set of ranges, and\n  // build a selection out of it. 'Consumes' ranges array (modifying\n  // it).\n  function normalizeSelection(ranges, primIndex) {\n    var prim = ranges[primIndex];\n    ranges.sort(function(a, b) { return cmp(a.from(), b.from()); });\n    primIndex = indexOf(ranges, prim);\n    for (var i = 1; i < ranges.length; i++) {\n      var cur = ranges[i], prev = ranges[i - 1];\n      if (cmp(prev.to(), cur.from()) >= 0) {\n        var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n        var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n        if (i <= primIndex) --primIndex;\n        ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n      }\n    }\n    return new Selection(ranges, primIndex);\n  }\n\n  function simpleSelection(anchor, head) {\n    return new Selection([new Range(anchor, head || anchor)], 0);\n  }\n\n  // Most of the external API clips given positions to make sure they\n  // actually exist within the document.\n  function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));}\n  function clipPos(doc, pos) {\n    if (pos.line < doc.first) return Pos(doc.first, 0);\n    var last = doc.first + doc.size - 1;\n    if (pos.line > last) return Pos(last, getLine(doc, last).text.length);\n    return clipToLen(pos, getLine(doc, pos.line).text.length);\n  }\n  function clipToLen(pos, linelen) {\n    var ch = pos.ch;\n    if (ch == null || ch > linelen) return Pos(pos.line, linelen);\n    else if (ch < 0) return Pos(pos.line, 0);\n    else return pos;\n  }\n  function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size;}\n  function clipPosArray(doc, array) {\n    for (var out = [], i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i]);\n    return out;\n  }\n\n  // SELECTION UPDATES\n\n  // The 'scroll' parameter given to many of these indicated whether\n  // the new cursor position should be scrolled into view after\n  // modifying the selection.\n\n  // If shift is held or the extend flag is set, extends a range to\n  // include a given position (and optionally a second position).\n  // Otherwise, simply returns the range between the given positions.\n  // Used for cursor motion and such.\n  function extendRange(doc, range, head, other) {\n    if (doc.cm && doc.cm.display.shift || doc.extend) {\n      var anchor = range.anchor;\n      if (other) {\n        var posBefore = cmp(head, anchor) < 0;\n        if (posBefore != (cmp(other, anchor) < 0)) {\n          anchor = head;\n          head = other;\n        } else if (posBefore != (cmp(head, other) < 0)) {\n          head = other;\n        }\n      }\n      return new Range(anchor, head);\n    } else {\n      return new Range(other || head, head);\n    }\n  }\n\n  // Extend the primary selection range, discard the rest.\n  function extendSelection(doc, head, other, options) {\n    setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options);\n  }\n\n  // Extend all selections (pos is an array of selections with length\n  // equal the number of selections)\n  function extendSelections(doc, heads, options) {\n    for (var out = [], i = 0; i < doc.sel.ranges.length; i++)\n      out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null);\n    var newSel = normalizeSelection(out, doc.sel.primIndex);\n    setSelection(doc, newSel, options);\n  }\n\n  // Updates a single range in the selection.\n  function replaceOneSelection(doc, i, range, options) {\n    var ranges = doc.sel.ranges.slice(0);\n    ranges[i] = range;\n    setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options);\n  }\n\n  // Reset the selection to a single range.\n  function setSimpleSelection(doc, anchor, head, options) {\n    setSelection(doc, simpleSelection(anchor, head), options);\n  }\n\n  // Give beforeSelectionChange handlers a change to influence a\n  // selection update.\n  function filterSelectionChange(doc, sel) {\n    var obj = {\n      ranges: sel.ranges,\n      update: function(ranges) {\n        this.ranges = [];\n        for (var i = 0; i < ranges.length; i++)\n          this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n                                     clipPos(doc, ranges[i].head));\n      }\n    };\n    signal(doc, \"beforeSelectionChange\", doc, obj);\n    if (doc.cm) signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj);\n    if (obj.ranges != sel.ranges) return normalizeSelection(obj.ranges, obj.ranges.length - 1);\n    else return sel;\n  }\n\n  function setSelectionReplaceHistory(doc, sel, options) {\n    var done = doc.history.done, last = lst(done);\n    if (last && last.ranges) {\n      done[done.length - 1] = sel;\n      setSelectionNoUndo(doc, sel, options);\n    } else {\n      setSelection(doc, sel, options);\n    }\n  }\n\n  // Set a new selection.\n  function setSelection(doc, sel, options) {\n    setSelectionNoUndo(doc, sel, options);\n    addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n  }\n\n  function setSelectionNoUndo(doc, sel, options) {\n    if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n      sel = filterSelectionChange(doc, sel);\n\n    var bias = options && options.bias ||\n      (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n    setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n    if (!(options && options.scroll === false) && doc.cm)\n      ensureCursorVisible(doc.cm);\n  }\n\n  function setSelectionInner(doc, sel) {\n    if (sel.equals(doc.sel)) return;\n\n    doc.sel = sel;\n\n    if (doc.cm) {\n      doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true;\n      signalCursorActivity(doc.cm);\n    }\n    signalLater(doc, \"cursorActivity\", doc);\n  }\n\n  // Verify that the selection does not partially select any atomic\n  // marked ranges.\n  function reCheckSelection(doc) {\n    setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll);\n  }\n\n  // Return a selection that does not partially select any atomic\n  // ranges.\n  function skipAtomicInSelection(doc, sel, bias, mayClear) {\n    var out;\n    for (var i = 0; i < sel.ranges.length; i++) {\n      var range = sel.ranges[i];\n      var newAnchor = skipAtomic(doc, range.anchor, bias, mayClear);\n      var newHead = skipAtomic(doc, range.head, bias, mayClear);\n      if (out || newAnchor != range.anchor || newHead != range.head) {\n        if (!out) out = sel.ranges.slice(0, i);\n        out[i] = new Range(newAnchor, newHead);\n      }\n    }\n    return out ? normalizeSelection(out, sel.primIndex) : sel;\n  }\n\n  // Ensure a given position is not inside an atomic range.\n  function skipAtomic(doc, pos, bias, mayClear) {\n    var flipped = false, curPos = pos;\n    var dir = bias || 1;\n    doc.cantEdit = false;\n    search: for (;;) {\n      var line = getLine(doc, curPos.line);\n      if (line.markedSpans) {\n        for (var i = 0; i < line.markedSpans.length; ++i) {\n          var sp = line.markedSpans[i], m = sp.marker;\n          if ((sp.from == null || (m.inclusiveLeft ? sp.from <= curPos.ch : sp.from < curPos.ch)) &&\n              (sp.to == null || (m.inclusiveRight ? sp.to >= curPos.ch : sp.to > curPos.ch))) {\n            if (mayClear) {\n              signal(m, \"beforeCursorEnter\");\n              if (m.explicitlyCleared) {\n                if (!line.markedSpans) break;\n                else {--i; continue;}\n              }\n            }\n            if (!m.atomic) continue;\n            var newPos = m.find(dir < 0 ? -1 : 1);\n            if (cmp(newPos, curPos) == 0) {\n              newPos.ch += dir;\n              if (newPos.ch < 0) {\n                if (newPos.line > doc.first) newPos = clipPos(doc, Pos(newPos.line - 1));\n                else newPos = null;\n              } else if (newPos.ch > line.text.length) {\n                if (newPos.line < doc.first + doc.size - 1) newPos = Pos(newPos.line + 1, 0);\n                else newPos = null;\n              }\n              if (!newPos) {\n                if (flipped) {\n                  // Driven in a corner -- no valid cursor position found at all\n                  // -- try again *with* clearing, if we didn't already\n                  if (!mayClear) return skipAtomic(doc, pos, bias, true);\n                  // Otherwise, turn off editing until further notice, and return the start of the doc\n                  doc.cantEdit = true;\n                  return Pos(doc.first, 0);\n                }\n                flipped = true; newPos = pos; dir = -dir;\n              }\n            }\n            curPos = newPos;\n            continue search;\n          }\n        }\n      }\n      return curPos;\n    }\n  }\n\n  // SELECTION DRAWING\n\n  function updateSelection(cm) {\n    cm.display.input.showSelection(cm.display.input.prepareSelection());\n  }\n\n  function prepareSelection(cm, primary) {\n    var doc = cm.doc, result = {};\n    var curFragment = result.cursors = document.createDocumentFragment();\n    var selFragment = result.selection = document.createDocumentFragment();\n\n    for (var i = 0; i < doc.sel.ranges.length; i++) {\n      if (primary === false && i == doc.sel.primIndex) continue;\n      var range = doc.sel.ranges[i];\n      var collapsed = range.empty();\n      if (collapsed || cm.options.showCursorWhenSelecting)\n        drawSelectionCursor(cm, range, curFragment);\n      if (!collapsed)\n        drawSelectionRange(cm, range, selFragment);\n    }\n    return result;\n  }\n\n  // Draws a cursor for the given range\n  function drawSelectionCursor(cm, range, output) {\n    var pos = cursorCoords(cm, range.head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n    var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n    cursor.style.left = pos.left + \"px\";\n    cursor.style.top = pos.top + \"px\";\n    cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n    if (pos.other) {\n      // Secondary cursor, shown when on a 'jump' in bi-directional text\n      var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n      otherCursor.style.display = \"\";\n      otherCursor.style.left = pos.other.left + \"px\";\n      otherCursor.style.top = pos.other.top + \"px\";\n      otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n    }\n  }\n\n  // Draws the given range as a highlighted selection\n  function drawSelectionRange(cm, range, output) {\n    var display = cm.display, doc = cm.doc;\n    var fragment = document.createDocumentFragment();\n    var padding = paddingH(cm.display), leftSide = padding.left;\n    var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n\n    function add(left, top, width, bottom) {\n      if (top < 0) top = 0;\n      top = Math.round(top);\n      bottom = Math.round(bottom);\n      fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", \"position: absolute; left: \" + left +\n                               \"px; top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) +\n                               \"px; height: \" + (bottom - top) + \"px\"));\n    }\n\n    function drawForLine(line, fromArg, toArg) {\n      var lineObj = getLine(doc, line);\n      var lineLen = lineObj.text.length;\n      var start, end;\n      function coords(ch, bias) {\n        return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias);\n      }\n\n      iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir) {\n        var leftPos = coords(from, \"left\"), rightPos, left, right;\n        if (from == to) {\n          rightPos = leftPos;\n          left = right = leftPos.left;\n        } else {\n          rightPos = coords(to - 1, \"right\");\n          if (dir == \"rtl\") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; }\n          left = leftPos.left;\n          right = rightPos.right;\n        }\n        if (fromArg == null && from == 0) left = leftSide;\n        if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part\n          add(left, leftPos.top, null, leftPos.bottom);\n          left = leftSide;\n          if (leftPos.bottom < rightPos.top) add(left, leftPos.bottom, null, rightPos.top);\n        }\n        if (toArg == null && to == lineLen) right = rightSide;\n        if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left)\n          start = leftPos;\n        if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right)\n          end = rightPos;\n        if (left < leftSide + 1) left = leftSide;\n        add(left, rightPos.top, right - left, rightPos.bottom);\n      });\n      return {start: start, end: end};\n    }\n\n    var sFrom = range.from(), sTo = range.to();\n    if (sFrom.line == sTo.line) {\n      drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n    } else {\n      var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n      var singleVLine = visualLine(fromLine) == visualLine(toLine);\n      var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n      var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n      if (singleVLine) {\n        if (leftEnd.top < rightStart.top - 2) {\n          add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n          add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n        } else {\n          add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n        }\n      }\n      if (leftEnd.bottom < rightStart.top)\n        add(leftSide, leftEnd.bottom, null, rightStart.top);\n    }\n\n    output.appendChild(fragment);\n  }\n\n  // Cursor-blinking\n  function restartBlink(cm) {\n    if (!cm.state.focused) return;\n    var display = cm.display;\n    clearInterval(display.blinker);\n    var on = true;\n    display.cursorDiv.style.visibility = \"\";\n    if (cm.options.cursorBlinkRate > 0)\n      display.blinker = setInterval(function() {\n        display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n      }, cm.options.cursorBlinkRate);\n    else if (cm.options.cursorBlinkRate < 0)\n      display.cursorDiv.style.visibility = \"hidden\";\n  }\n\n  // HIGHLIGHT WORKER\n\n  function startWorker(cm, time) {\n    if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo)\n      cm.state.highlight.set(time, bind(highlightWorker, cm));\n  }\n\n  function highlightWorker(cm) {\n    var doc = cm.doc;\n    if (doc.frontier < doc.first) doc.frontier = doc.first;\n    if (doc.frontier >= cm.display.viewTo) return;\n    var end = +new Date + cm.options.workTime;\n    var state = copyState(doc.mode, getStateBefore(cm, doc.frontier));\n    var changedLines = [];\n\n    doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) {\n      if (doc.frontier >= cm.display.viewFrom) { // Visible\n        var oldStyles = line.styles;\n        var highlighted = highlightLine(cm, line, state, true);\n        line.styles = highlighted.styles;\n        var oldCls = line.styleClasses, newCls = highlighted.classes;\n        if (newCls) line.styleClasses = newCls;\n        else if (oldCls) line.styleClasses = null;\n        var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n          oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n        for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i];\n        if (ischange) changedLines.push(doc.frontier);\n        line.stateAfter = copyState(doc.mode, state);\n      } else {\n        processLine(cm, line.text, state);\n        line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null;\n      }\n      ++doc.frontier;\n      if (+new Date > end) {\n        startWorker(cm, cm.options.workDelay);\n        return true;\n      }\n    });\n    if (changedLines.length) runInOp(cm, function() {\n      for (var i = 0; i < changedLines.length; i++)\n        regLineChange(cm, changedLines[i], \"text\");\n    });\n  }\n\n  // Finds the line to start with when starting a parse. Tries to\n  // find a line with a stateAfter, so that it can start with a\n  // valid state. If that fails, it returns the line with the\n  // smallest indentation, which tends to need the least context to\n  // parse correctly.\n  function findStartLine(cm, n, precise) {\n    var minindent, minline, doc = cm.doc;\n    var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n    for (var search = n; search > lim; --search) {\n      if (search <= doc.first) return doc.first;\n      var line = getLine(doc, search - 1);\n      if (line.stateAfter && (!precise || search <= doc.frontier)) return search;\n      var indented = countColumn(line.text, null, cm.options.tabSize);\n      if (minline == null || minindent > indented) {\n        minline = search - 1;\n        minindent = indented;\n      }\n    }\n    return minline;\n  }\n\n  function getStateBefore(cm, n, precise) {\n    var doc = cm.doc, display = cm.display;\n    if (!doc.mode.startState) return true;\n    var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter;\n    if (!state) state = startState(doc.mode);\n    else state = copyState(doc.mode, state);\n    doc.iter(pos, n, function(line) {\n      processLine(cm, line.text, state);\n      var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo;\n      line.stateAfter = save ? copyState(doc.mode, state) : null;\n      ++pos;\n    });\n    if (precise) doc.frontier = pos;\n    return state;\n  }\n\n  // POSITION MEASUREMENT\n\n  function paddingTop(display) {return display.lineSpace.offsetTop;}\n  function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight;}\n  function paddingH(display) {\n    if (display.cachedPaddingH) return display.cachedPaddingH;\n    var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\"));\n    var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n    var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n    if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data;\n    return data;\n  }\n\n  function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth; }\n  function displayWidth(cm) {\n    return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth;\n  }\n  function displayHeight(cm) {\n    return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight;\n  }\n\n  // Ensure the lineView.wrapping.heights array is populated. This is\n  // an array of bottom offsets for the lines that make up a drawn\n  // line. When lineWrapping is on, there might be more than one\n  // height.\n  function ensureLineHeights(cm, lineView, rect) {\n    var wrapping = cm.options.lineWrapping;\n    var curWidth = wrapping && displayWidth(cm);\n    if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n      var heights = lineView.measure.heights = [];\n      if (wrapping) {\n        lineView.measure.width = curWidth;\n        var rects = lineView.text.firstChild.getClientRects();\n        for (var i = 0; i < rects.length - 1; i++) {\n          var cur = rects[i], next = rects[i + 1];\n          if (Math.abs(cur.bottom - next.bottom) > 2)\n            heights.push((cur.bottom + next.top) / 2 - rect.top);\n        }\n      }\n      heights.push(rect.bottom - rect.top);\n    }\n  }\n\n  // Find a line map (mapping character offsets to text nodes) and a\n  // measurement cache for the given line number. (A line view might\n  // contain multiple lines when collapsed ranges are present.)\n  function mapFromLineView(lineView, line, lineN) {\n    if (lineView.line == line)\n      return {map: lineView.measure.map, cache: lineView.measure.cache};\n    for (var i = 0; i < lineView.rest.length; i++)\n      if (lineView.rest[i] == line)\n        return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]};\n    for (var i = 0; i < lineView.rest.length; i++)\n      if (lineNo(lineView.rest[i]) > lineN)\n        return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true};\n  }\n\n  // Render a line into the hidden node display.externalMeasured. Used\n  // when measurement is needed for a line that's not in the viewport.\n  function updateExternalMeasurement(cm, line) {\n    line = visualLine(line);\n    var lineN = lineNo(line);\n    var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n    view.lineN = lineN;\n    var built = view.built = buildLineContent(cm, view);\n    view.text = built.pre;\n    removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n    return view;\n  }\n\n  // Get a {top, bottom, left, right} box (in line-local coordinates)\n  // for a given character.\n  function measureChar(cm, line, ch, bias) {\n    return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);\n  }\n\n  // Find a line view that corresponds to the given line number.\n  function findViewForLine(cm, lineN) {\n    if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n      return cm.display.view[findViewIndex(cm, lineN)];\n    var ext = cm.display.externalMeasured;\n    if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n      return ext;\n  }\n\n  // Measurement can be split in two steps, the set-up work that\n  // applies to the whole line, and the measurement of the actual\n  // character. Functions like coordsChar, that need to do a lot of\n  // measurements in a row, can thus ensure that the set-up work is\n  // only done once.\n  function prepareMeasureForLine(cm, line) {\n    var lineN = lineNo(line);\n    var view = findViewForLine(cm, lineN);\n    if (view && !view.text)\n      view = null;\n    else if (view && view.changes)\n      updateLineForChanges(cm, view, lineN, getDimensions(cm));\n    if (!view)\n      view = updateExternalMeasurement(cm, line);\n\n    var info = mapFromLineView(view, line, lineN);\n    return {\n      line: line, view: view, rect: null,\n      map: info.map, cache: info.cache, before: info.before,\n      hasHeights: false\n    };\n  }\n\n  // Given a prepared measurement object, measures the position of an\n  // actual character (or fetches it from the cache).\n  function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n    if (prepared.before) ch = -1;\n    var key = ch + (bias || \"\"), found;\n    if (prepared.cache.hasOwnProperty(key)) {\n      found = prepared.cache[key];\n    } else {\n      if (!prepared.rect)\n        prepared.rect = prepared.view.text.getBoundingClientRect();\n      if (!prepared.hasHeights) {\n        ensureLineHeights(cm, prepared.view, prepared.rect);\n        prepared.hasHeights = true;\n      }\n      found = measureCharInner(cm, prepared, ch, bias);\n      if (!found.bogus) prepared.cache[key] = found;\n    }\n    return {left: found.left, right: found.right,\n            top: varHeight ? found.rtop : found.top,\n            bottom: varHeight ? found.rbottom : found.bottom};\n  }\n\n  var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n  function nodeAndOffsetInLineMap(map, ch, bias) {\n    var node, start, end, collapse;\n    // First, search the line map for the text node corresponding to,\n    // or closest to, the target character.\n    for (var i = 0; i < map.length; i += 3) {\n      var mStart = map[i], mEnd = map[i + 1];\n      if (ch < mStart) {\n        start = 0; end = 1;\n        collapse = \"left\";\n      } else if (ch < mEnd) {\n        start = ch - mStart;\n        end = start + 1;\n      } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n        end = mEnd - mStart;\n        start = end - 1;\n        if (ch >= mEnd) collapse = \"right\";\n      }\n      if (start != null) {\n        node = map[i + 2];\n        if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n          collapse = bias;\n        if (bias == \"left\" && start == 0)\n          while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n            node = map[(i -= 3) + 2];\n            collapse = \"left\";\n          }\n        if (bias == \"right\" && start == mEnd - mStart)\n          while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n            node = map[(i += 3) + 2];\n            collapse = \"right\";\n          }\n        break;\n      }\n    }\n    return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd};\n  }\n\n  function measureCharInner(cm, prepared, ch, bias) {\n    var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n    var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n    var rect;\n    if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n      for (var i = 0; i < 4; i++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n        while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) --start;\n        while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) ++end;\n        if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) {\n          rect = node.parentNode.getBoundingClientRect();\n        } else if (ie && cm.options.lineWrapping) {\n          var rects = range(node, start, end).getClientRects();\n          if (rects.length)\n            rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n          else\n            rect = nullRect;\n        } else {\n          rect = range(node, start, end).getBoundingClientRect() || nullRect;\n        }\n        if (rect.left || rect.right || start == 0) break;\n        end = start;\n        start = start - 1;\n        collapse = \"right\";\n      }\n      if (ie && ie_version < 11) rect = maybeUpdateRectForZooming(cm.display.measure, rect);\n    } else { // If it is a widget, simply get the box for the whole widget.\n      if (start > 0) collapse = bias = \"right\";\n      var rects;\n      if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n        rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n      else\n        rect = node.getBoundingClientRect();\n    }\n    if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n      var rSpan = node.parentNode.getClientRects()[0];\n      if (rSpan)\n        rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom};\n      else\n        rect = nullRect;\n    }\n\n    var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n    var mid = (rtop + rbot) / 2;\n    var heights = prepared.view.measure.heights;\n    for (var i = 0; i < heights.length - 1; i++)\n      if (mid < heights[i]) break;\n    var top = i ? heights[i - 1] : 0, bot = heights[i];\n    var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n                  right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n                  top: top, bottom: bot};\n    if (!rect.left && !rect.right) result.bogus = true;\n    if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n    return result;\n  }\n\n  // Work around problem with bounding client rects on ranges being\n  // returned incorrectly when zoomed on IE10 and below.\n  function maybeUpdateRectForZooming(measure, rect) {\n    if (!window.screen || screen.logicalXDPI == null ||\n        screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n      return rect;\n    var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n    var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n    return {left: rect.left * scaleX, right: rect.right * scaleX,\n            top: rect.top * scaleY, bottom: rect.bottom * scaleY};\n  }\n\n  function clearLineMeasurementCacheFor(lineView) {\n    if (lineView.measure) {\n      lineView.measure.cache = {};\n      lineView.measure.heights = null;\n      if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++)\n        lineView.measure.caches[i] = {};\n    }\n  }\n\n  function clearLineMeasurementCache(cm) {\n    cm.display.externalMeasure = null;\n    removeChildren(cm.display.lineMeasure);\n    for (var i = 0; i < cm.display.view.length; i++)\n      clearLineMeasurementCacheFor(cm.display.view[i]);\n  }\n\n  function clearCaches(cm) {\n    clearLineMeasurementCache(cm);\n    cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n    if (!cm.options.lineWrapping) cm.display.maxLineChanged = true;\n    cm.display.lineNumChars = null;\n  }\n\n  function pageScrollX() { return window.pageXOffset || (document.documentElement || document.body).scrollLeft; }\n  function pageScrollY() { return window.pageYOffset || (document.documentElement || document.body).scrollTop; }\n\n  // Converts a {top, bottom, left, right} box from line-local\n  // coordinates into another coordinate system. Context may be one of\n  // \"line\", \"div\" (display.lineDiv), \"local\"/null (editor), \"window\",\n  // or \"page\".\n  function intoCoordSystem(cm, lineObj, rect, context) {\n    if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) {\n      var size = widgetHeight(lineObj.widgets[i]);\n      rect.top += size; rect.bottom += size;\n    }\n    if (context == \"line\") return rect;\n    if (!context) context = \"local\";\n    var yOff = heightAtLine(lineObj);\n    if (context == \"local\") yOff += paddingTop(cm.display);\n    else yOff -= cm.display.viewOffset;\n    if (context == \"page\" || context == \"window\") {\n      var lOff = cm.display.lineSpace.getBoundingClientRect();\n      yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n      var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n      rect.left += xOff; rect.right += xOff;\n    }\n    rect.top += yOff; rect.bottom += yOff;\n    return rect;\n  }\n\n  // Coverts a box from \"div\" coords to another coordinate system.\n  // Context may be \"window\", \"page\", \"div\", or \"local\"/null.\n  function fromCoordSystem(cm, coords, context) {\n    if (context == \"div\") return coords;\n    var left = coords.left, top = coords.top;\n    // First move into \"page\" coordinate system\n    if (context == \"page\") {\n      left -= pageScrollX();\n      top -= pageScrollY();\n    } else if (context == \"local\" || !context) {\n      var localBox = cm.display.sizer.getBoundingClientRect();\n      left += localBox.left;\n      top += localBox.top;\n    }\n\n    var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n    return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top};\n  }\n\n  function charCoords(cm, pos, context, lineObj, bias) {\n    if (!lineObj) lineObj = getLine(cm.doc, pos.line);\n    return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);\n  }\n\n  // Returns a box for a given cursor position, which may have an\n  // 'other' property containing the position of the secondary cursor\n  // on a bidi boundary.\n  function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n    lineObj = lineObj || getLine(cm.doc, pos.line);\n    if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj);\n    function get(ch, right) {\n      var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n      if (right) m.left = m.right; else m.right = m.left;\n      return intoCoordSystem(cm, lineObj, m, context);\n    }\n    function getBidi(ch, partPos) {\n      var part = order[partPos], right = part.level % 2;\n      if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) {\n        part = order[--partPos];\n        ch = bidiRight(part) - (part.level % 2 ? 0 : 1);\n        right = true;\n      } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) {\n        part = order[++partPos];\n        ch = bidiLeft(part) - part.level % 2;\n        right = false;\n      }\n      if (right && ch == part.to && ch > part.from) return get(ch - 1);\n      return get(ch, right);\n    }\n    var order = getOrder(lineObj), ch = pos.ch;\n    if (!order) return get(ch);\n    var partPos = getBidiPartAt(order, ch);\n    var val = getBidi(ch, partPos);\n    if (bidiOther != null) val.other = getBidi(ch, bidiOther);\n    return val;\n  }\n\n  // Used to cheaply estimate the coordinates for a position. Used for\n  // intermediate scroll updates.\n  function estimateCoords(cm, pos) {\n    var left = 0, pos = clipPos(cm.doc, pos);\n    if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch;\n    var lineObj = getLine(cm.doc, pos.line);\n    var top = heightAtLine(lineObj) + paddingTop(cm.display);\n    return {left: left, right: left, top: top, bottom: top + lineObj.height};\n  }\n\n  // Positions returned by coordsChar contain some extra information.\n  // xRel is the relative x position of the input coordinates compared\n  // to the found position (so xRel > 0 means the coordinates are to\n  // the right of the character position, for example). When outside\n  // is true, that means the coordinates lie outside the line's\n  // vertical range.\n  function PosWithInfo(line, ch, outside, xRel) {\n    var pos = Pos(line, ch);\n    pos.xRel = xRel;\n    if (outside) pos.outside = true;\n    return pos;\n  }\n\n  // Compute the character position closest to the given coordinates.\n  // Input must be lineSpace-local (\"div\" coordinate system).\n  function coordsChar(cm, x, y) {\n    var doc = cm.doc;\n    y += cm.display.viewOffset;\n    if (y < 0) return PosWithInfo(doc.first, 0, true, -1);\n    var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n    if (lineN > last)\n      return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, true, 1);\n    if (x < 0) x = 0;\n\n    var lineObj = getLine(doc, lineN);\n    for (;;) {\n      var found = coordsCharInner(cm, lineObj, lineN, x, y);\n      var merged = collapsedSpanAtEnd(lineObj);\n      var mergedPos = merged && merged.find(0, true);\n      if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0))\n        lineN = lineNo(lineObj = mergedPos.to.line);\n      else\n        return found;\n    }\n  }\n\n  function coordsCharInner(cm, lineObj, lineNo, x, y) {\n    var innerOff = y - heightAtLine(lineObj);\n    var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth;\n    var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n\n    function getX(ch) {\n      var sp = cursorCoords(cm, Pos(lineNo, ch), \"line\", lineObj, preparedMeasure);\n      wrongLine = true;\n      if (innerOff > sp.bottom) return sp.left - adjust;\n      else if (innerOff < sp.top) return sp.left + adjust;\n      else wrongLine = false;\n      return sp.left;\n    }\n\n    var bidi = getOrder(lineObj), dist = lineObj.text.length;\n    var from = lineLeft(lineObj), to = lineRight(lineObj);\n    var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine;\n\n    if (x > toX) return PosWithInfo(lineNo, to, toOutside, 1);\n    // Do a binary search between these bounds.\n    for (;;) {\n      if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) {\n        var ch = x < fromX || x - fromX <= toX - x ? from : to;\n        var xDiff = x - (ch == from ? fromX : toX);\n        while (isExtendingChar(lineObj.text.charAt(ch))) ++ch;\n        var pos = PosWithInfo(lineNo, ch, ch == from ? fromOutside : toOutside,\n                              xDiff < -1 ? -1 : xDiff > 1 ? 1 : 0);\n        return pos;\n      }\n      var step = Math.ceil(dist / 2), middle = from + step;\n      if (bidi) {\n        middle = from;\n        for (var i = 0; i < step; ++i) middle = moveVisually(lineObj, middle, 1);\n      }\n      var middleX = getX(middle);\n      if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) toX += 1000; dist = step;}\n      else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step;}\n    }\n  }\n\n  var measureText;\n  // Compute the default text height.\n  function textHeight(display) {\n    if (display.cachedTextHeight != null) return display.cachedTextHeight;\n    if (measureText == null) {\n      measureText = elt(\"pre\");\n      // Measure a bunch of lines, for browsers that compute\n      // fractional heights.\n      for (var i = 0; i < 49; ++i) {\n        measureText.appendChild(document.createTextNode(\"x\"));\n        measureText.appendChild(elt(\"br\"));\n      }\n      measureText.appendChild(document.createTextNode(\"x\"));\n    }\n    removeChildrenAndAdd(display.measure, measureText);\n    var height = measureText.offsetHeight / 50;\n    if (height > 3) display.cachedTextHeight = height;\n    removeChildren(display.measure);\n    return height || 1;\n  }\n\n  // Compute the default character width.\n  function charWidth(display) {\n    if (display.cachedCharWidth != null) return display.cachedCharWidth;\n    var anchor = elt(\"span\", \"xxxxxxxxxx\");\n    var pre = elt(\"pre\", [anchor]);\n    removeChildrenAndAdd(display.measure, pre);\n    var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n    if (width > 2) display.cachedCharWidth = width;\n    return width || 10;\n  }\n\n  // OPERATIONS\n\n  // Operations are used to wrap a series of changes to the editor\n  // state in such a way that each change won't have to update the\n  // cursor and display (which would be awkward, slow, and\n  // error-prone). Instead, display updates are batched and then all\n  // combined and executed at once.\n\n  var operationGroup = null;\n\n  var nextOpId = 0;\n  // Start a new operation.\n  function startOperation(cm) {\n    cm.curOp = {\n      cm: cm,\n      viewChanged: false,      // Flag that indicates that lines might need to be redrawn\n      startHeight: cm.doc.height, // Used to detect need to update scrollbar\n      forceUpdate: false,      // Used to force a redraw\n      updateInput: null,       // Whether to reset the input textarea\n      typing: false,           // Whether this reset should be careful to leave existing text (for compositing)\n      changeObjs: null,        // Accumulated changes, for firing change events\n      cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n      cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n      selectionChanged: false, // Whether the selection needs to be redrawn\n      updateMaxLine: false,    // Set when the widest line needs to be determined anew\n      scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n      scrollToPos: null,       // Used to scroll to a specific position\n      id: ++nextOpId           // Unique ID\n    };\n    if (operationGroup) {\n      operationGroup.ops.push(cm.curOp);\n    } else {\n      cm.curOp.ownsGroup = operationGroup = {\n        ops: [cm.curOp],\n        delayedCallbacks: []\n      };\n    }\n  }\n\n  function fireCallbacksForOps(group) {\n    // Calls delayed callbacks and cursorActivity handlers until no\n    // new ones appear\n    var callbacks = group.delayedCallbacks, i = 0;\n    do {\n      for (; i < callbacks.length; i++)\n        callbacks[i]();\n      for (var j = 0; j < group.ops.length; j++) {\n        var op = group.ops[j];\n        if (op.cursorActivityHandlers)\n          while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n            op.cursorActivityHandlers[op.cursorActivityCalled++](op.cm);\n      }\n    } while (i < callbacks.length);\n  }\n\n  // Finish an operation, updating the display and signalling delayed events\n  function endOperation(cm) {\n    var op = cm.curOp, group = op.ownsGroup;\n    if (!group) return;\n\n    try { fireCallbacksForOps(group); }\n    finally {\n      operationGroup = null;\n      for (var i = 0; i < group.ops.length; i++)\n        group.ops[i].cm.curOp = null;\n      endOperations(group);\n    }\n  }\n\n  // The DOM updates done when an operation finishes are batched so\n  // that the minimum number of relayouts are required.\n  function endOperations(group) {\n    var ops = group.ops;\n    for (var i = 0; i < ops.length; i++) // Read DOM\n      endOperation_R1(ops[i]);\n    for (var i = 0; i < ops.length; i++) // Write DOM (maybe)\n      endOperation_W1(ops[i]);\n    for (var i = 0; i < ops.length; i++) // Read DOM\n      endOperation_R2(ops[i]);\n    for (var i = 0; i < ops.length; i++) // Write DOM (maybe)\n      endOperation_W2(ops[i]);\n    for (var i = 0; i < ops.length; i++) // Read DOM\n      endOperation_finish(ops[i]);\n  }\n\n  function endOperation_R1(op) {\n    var cm = op.cm, display = cm.display;\n    maybeClipScrollbars(cm);\n    if (op.updateMaxLine) findMaxLine(cm);\n\n    op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n      op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n                         op.scrollToPos.to.line >= display.viewTo) ||\n      display.maxLineChanged && cm.options.lineWrapping;\n    op.update = op.mustUpdate &&\n      new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n  }\n\n  function endOperation_W1(op) {\n    op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n  }\n\n  function endOperation_R2(op) {\n    var cm = op.cm, display = cm.display;\n    if (op.updatedDisplay) updateHeightsInViewport(cm);\n\n    op.barMeasure = measureForScrollbars(cm);\n\n    // If the max line changed since it was last measured, measure it,\n    // and ensure the document's width matches it.\n    // updateDisplay_W2 will use these properties to do the actual resizing\n    if (display.maxLineChanged && !cm.options.lineWrapping) {\n      op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n      cm.display.sizerWidth = op.adjustWidthTo;\n      op.barMeasure.scrollWidth =\n        Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n      op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n    }\n\n    if (op.updatedDisplay || op.selectionChanged)\n      op.preparedSelection = display.input.prepareSelection();\n  }\n\n  function endOperation_W2(op) {\n    var cm = op.cm;\n\n    if (op.adjustWidthTo != null) {\n      cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n      if (op.maxScrollLeft < cm.doc.scrollLeft)\n        setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n      cm.display.maxLineChanged = false;\n    }\n\n    if (op.preparedSelection)\n      cm.display.input.showSelection(op.preparedSelection);\n    if (op.updatedDisplay)\n      setDocumentHeight(cm, op.barMeasure);\n    if (op.updatedDisplay || op.startHeight != cm.doc.height)\n      updateScrollbars(cm, op.barMeasure);\n\n    if (op.selectionChanged) restartBlink(cm);\n\n    if (cm.state.focused && op.updateInput)\n      cm.display.input.reset(op.typing);\n  }\n\n  function endOperation_finish(op) {\n    var cm = op.cm, display = cm.display, doc = cm.doc;\n\n    if (op.updatedDisplay) postUpdateDisplay(cm, op.update);\n\n    // Abort mouse wheel delta measurement, when scrolling explicitly\n    if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n      display.wheelStartX = display.wheelStartY = null;\n\n    // Propagate the scroll position to the actual DOM scroller\n    if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) {\n      doc.scrollTop = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop));\n      display.scrollbars.setScrollTop(doc.scrollTop);\n      display.scroller.scrollTop = doc.scrollTop;\n    }\n    if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) {\n      doc.scrollLeft = Math.max(0, Math.min(display.scroller.scrollWidth - displayWidth(cm), op.scrollLeft));\n      display.scrollbars.setScrollLeft(doc.scrollLeft);\n      display.scroller.scrollLeft = doc.scrollLeft;\n      alignHorizontally(cm);\n    }\n    // If we need to scroll a specific position into view, do so.\n    if (op.scrollToPos) {\n      var coords = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n                                     clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n      if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords);\n    }\n\n    // Fire events for markers that are hidden/unidden by editing or\n    // undoing\n    var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n    if (hidden) for (var i = 0; i < hidden.length; ++i)\n      if (!hidden[i].lines.length) signal(hidden[i], \"hide\");\n    if (unhidden) for (var i = 0; i < unhidden.length; ++i)\n      if (unhidden[i].lines.length) signal(unhidden[i], \"unhide\");\n\n    if (display.wrapper.offsetHeight)\n      doc.scrollTop = cm.display.scroller.scrollTop;\n\n    // Fire change events, and delayed event handlers\n    if (op.changeObjs)\n      signal(cm, \"changes\", cm, op.changeObjs);\n    if (op.update)\n      op.update.finish();\n  }\n\n  // Run the given function in an operation\n  function runInOp(cm, f) {\n    if (cm.curOp) return f();\n    startOperation(cm);\n    try { return f(); }\n    finally { endOperation(cm); }\n  }\n  // Wraps a function in an operation. Returns the wrapped function.\n  function operation(cm, f) {\n    return function() {\n      if (cm.curOp) return f.apply(cm, arguments);\n      startOperation(cm);\n      try { return f.apply(cm, arguments); }\n      finally { endOperation(cm); }\n    };\n  }\n  // Used to add methods to editor and doc instances, wrapping them in\n  // operations.\n  function methodOp(f) {\n    return function() {\n      if (this.curOp) return f.apply(this, arguments);\n      startOperation(this);\n      try { return f.apply(this, arguments); }\n      finally { endOperation(this); }\n    };\n  }\n  function docMethodOp(f) {\n    return function() {\n      var cm = this.cm;\n      if (!cm || cm.curOp) return f.apply(this, arguments);\n      startOperation(cm);\n      try { return f.apply(this, arguments); }\n      finally { endOperation(cm); }\n    };\n  }\n\n  // VIEW TRACKING\n\n  // These objects are used to represent the visible (currently drawn)\n  // part of the document. A LineView may correspond to multiple\n  // logical lines, if those are connected by collapsed ranges.\n  function LineView(doc, line, lineN) {\n    // The starting line\n    this.line = line;\n    // Continuing lines, if any\n    this.rest = visualLineContinued(line);\n    // Number of logical lines in this visual line\n    this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n    this.node = this.text = null;\n    this.hidden = lineIsHidden(doc, line);\n  }\n\n  // Create a range of LineView objects for the given lines.\n  function buildViewArray(cm, from, to) {\n    var array = [], nextPos;\n    for (var pos = from; pos < to; pos = nextPos) {\n      var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n      nextPos = pos + view.size;\n      array.push(view);\n    }\n    return array;\n  }\n\n  // Updates the display.view data structure for a given change to the\n  // document. From and to are in pre-change coordinates. Lendiff is\n  // the amount of lines added or subtracted by the change. This is\n  // used for changes that span multiple lines, or change the way\n  // lines are divided into visual lines. regLineChange (below)\n  // registers single-line changes.\n  function regChange(cm, from, to, lendiff) {\n    if (from == null) from = cm.doc.first;\n    if (to == null) to = cm.doc.first + cm.doc.size;\n    if (!lendiff) lendiff = 0;\n\n    var display = cm.display;\n    if (lendiff && to < display.viewTo &&\n        (display.updateLineNumbers == null || display.updateLineNumbers > from))\n      display.updateLineNumbers = from;\n\n    cm.curOp.viewChanged = true;\n\n    if (from >= display.viewTo) { // Change after\n      if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n        resetView(cm);\n    } else if (to <= display.viewFrom) { // Change before\n      if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n        resetView(cm);\n      } else {\n        display.viewFrom += lendiff;\n        display.viewTo += lendiff;\n      }\n    } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n      resetView(cm);\n    } else if (from <= display.viewFrom) { // Top overlap\n      var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n      if (cut) {\n        display.view = display.view.slice(cut.index);\n        display.viewFrom = cut.lineN;\n        display.viewTo += lendiff;\n      } else {\n        resetView(cm);\n      }\n    } else if (to >= display.viewTo) { // Bottom overlap\n      var cut = viewCuttingPoint(cm, from, from, -1);\n      if (cut) {\n        display.view = display.view.slice(0, cut.index);\n        display.viewTo = cut.lineN;\n      } else {\n        resetView(cm);\n      }\n    } else { // Gap in the middle\n      var cutTop = viewCuttingPoint(cm, from, from, -1);\n      var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n      if (cutTop && cutBot) {\n        display.view = display.view.slice(0, cutTop.index)\n          .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n          .concat(display.view.slice(cutBot.index));\n        display.viewTo += lendiff;\n      } else {\n        resetView(cm);\n      }\n    }\n\n    var ext = display.externalMeasured;\n    if (ext) {\n      if (to < ext.lineN)\n        ext.lineN += lendiff;\n      else if (from < ext.lineN + ext.size)\n        display.externalMeasured = null;\n    }\n  }\n\n  // Register a change to a single line. Type must be one of \"text\",\n  // \"gutter\", \"class\", \"widget\"\n  function regLineChange(cm, line, type) {\n    cm.curOp.viewChanged = true;\n    var display = cm.display, ext = cm.display.externalMeasured;\n    if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n      display.externalMeasured = null;\n\n    if (line < display.viewFrom || line >= display.viewTo) return;\n    var lineView = display.view[findViewIndex(cm, line)];\n    if (lineView.node == null) return;\n    var arr = lineView.changes || (lineView.changes = []);\n    if (indexOf(arr, type) == -1) arr.push(type);\n  }\n\n  // Clear the view.\n  function resetView(cm) {\n    cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n    cm.display.view = [];\n    cm.display.viewOffset = 0;\n  }\n\n  // Find the view element corresponding to a given line. Return null\n  // when the line isn't visible.\n  function findViewIndex(cm, n) {\n    if (n >= cm.display.viewTo) return null;\n    n -= cm.display.viewFrom;\n    if (n < 0) return null;\n    var view = cm.display.view;\n    for (var i = 0; i < view.length; i++) {\n      n -= view[i].size;\n      if (n < 0) return i;\n    }\n  }\n\n  function viewCuttingPoint(cm, oldN, newN, dir) {\n    var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n    if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n      return {index: index, lineN: newN};\n    for (var i = 0, n = cm.display.viewFrom; i < index; i++)\n      n += view[i].size;\n    if (n != oldN) {\n      if (dir > 0) {\n        if (index == view.length - 1) return null;\n        diff = (n + view[index].size) - oldN;\n        index++;\n      } else {\n        diff = n - oldN;\n      }\n      oldN += diff; newN += diff;\n    }\n    while (visualLineNo(cm.doc, newN) != newN) {\n      if (index == (dir < 0 ? 0 : view.length - 1)) return null;\n      newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n      index += dir;\n    }\n    return {index: index, lineN: newN};\n  }\n\n  // Force the view to cover a given range, adding empty view element\n  // or clipping off existing ones as needed.\n  function adjustView(cm, from, to) {\n    var display = cm.display, view = display.view;\n    if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n      display.view = buildViewArray(cm, from, to);\n      display.viewFrom = from;\n    } else {\n      if (display.viewFrom > from)\n        display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);\n      else if (display.viewFrom < from)\n        display.view = display.view.slice(findViewIndex(cm, from));\n      display.viewFrom = from;\n      if (display.viewTo < to)\n        display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));\n      else if (display.viewTo > to)\n        display.view = display.view.slice(0, findViewIndex(cm, to));\n    }\n    display.viewTo = to;\n  }\n\n  // Count the number of lines in the view whose DOM representation is\n  // out of date (or nonexistent).\n  function countDirtyView(cm) {\n    var view = cm.display.view, dirty = 0;\n    for (var i = 0; i < view.length; i++) {\n      var lineView = view[i];\n      if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty;\n    }\n    return dirty;\n  }\n\n  // EVENT HANDLERS\n\n  // Attach the necessary event handlers when initializing the editor\n  function registerEventHandlers(cm) {\n    var d = cm.display;\n    on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n    // Older IE's will not fire a second mousedown for a double click\n    if (ie && ie_version < 11)\n      on(d.scroller, \"dblclick\", operation(cm, function(e) {\n        if (signalDOMEvent(cm, e)) return;\n        var pos = posFromMouse(cm, e);\n        if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return;\n        e_preventDefault(e);\n        var word = cm.findWordAt(pos);\n        extendSelection(cm.doc, word.anchor, word.head);\n      }));\n    else\n      on(d.scroller, \"dblclick\", function(e) { signalDOMEvent(cm, e) || e_preventDefault(e); });\n    // Some browsers fire contextmenu *after* opening the menu, at\n    // which point we can't mess with it anymore. Context menu is\n    // handled in onMouseDown for these browsers.\n    if (!captureRightClick) on(d.scroller, \"contextmenu\", function(e) {onContextMenu(cm, e);});\n\n    // Used to suppress mouse event handling when a touch happens\n    var touchFinished, prevTouch = {end: 0};\n    function finishTouch() {\n      if (d.activeTouch) {\n        touchFinished = setTimeout(function() {d.activeTouch = null;}, 1000);\n        prevTouch = d.activeTouch;\n        prevTouch.end = +new Date;\n      }\n    };\n    function isMouseLikeTouchEvent(e) {\n      if (e.touches.length != 1) return false;\n      var touch = e.touches[0];\n      return touch.radiusX <= 1 && touch.radiusY <= 1;\n    }\n    function farAway(touch, other) {\n      if (other.left == null) return true;\n      var dx = other.left - touch.left, dy = other.top - touch.top;\n      return dx * dx + dy * dy > 20 * 20;\n    }\n    on(d.scroller, \"touchstart\", function(e) {\n      if (!isMouseLikeTouchEvent(e)) {\n        clearTimeout(touchFinished);\n        var now = +new Date;\n        d.activeTouch = {start: now, moved: false,\n                         prev: now - prevTouch.end <= 300 ? prevTouch : null};\n        if (e.touches.length == 1) {\n          d.activeTouch.left = e.touches[0].pageX;\n          d.activeTouch.top = e.touches[0].pageY;\n        }\n      }\n    });\n    on(d.scroller, \"touchmove\", function() {\n      if (d.activeTouch) d.activeTouch.moved = true;\n    });\n    on(d.scroller, \"touchend\", function(e) {\n      var touch = d.activeTouch;\n      if (touch && !eventInWidget(d, e) && touch.left != null &&\n          !touch.moved && new Date - touch.start < 300) {\n        var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n        if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n          range = new Range(pos, pos);\n        else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n          range = cm.findWordAt(pos);\n        else // Triple tap\n          range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n        cm.setSelection(range.anchor, range.head);\n        cm.focus();\n        e_preventDefault(e);\n      }\n      finishTouch();\n    });\n    on(d.scroller, \"touchcancel\", finishTouch);\n\n    // Sync scrolling between fake scrollbars and real scrollable\n    // area, ensure viewport is updated when scrolling.\n    on(d.scroller, \"scroll\", function() {\n      if (d.scroller.clientHeight) {\n        setScrollTop(cm, d.scroller.scrollTop);\n        setScrollLeft(cm, d.scroller.scrollLeft, true);\n        signal(cm, \"scroll\", cm);\n      }\n    });\n\n    // Listen to wheel events in order to try and update the viewport on time.\n    on(d.scroller, \"mousewheel\", function(e){onScrollWheel(cm, e);});\n    on(d.scroller, \"DOMMouseScroll\", function(e){onScrollWheel(cm, e);});\n\n    // Prevent wrapper from ever scrolling\n    on(d.wrapper, \"scroll\", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n    function drag_(e) {\n      if (!signalDOMEvent(cm, e)) e_stop(e);\n    }\n    if (cm.options.dragDrop) {\n      on(d.scroller, \"dragstart\", function(e){onDragStart(cm, e);});\n      on(d.scroller, \"dragenter\", drag_);\n      on(d.scroller, \"dragover\", drag_);\n      on(d.scroller, \"drop\", operation(cm, onDrop));\n    }\n\n    var inp = d.input.getField();\n    on(inp, \"keyup\", function(e) { onKeyUp.call(cm, e); });\n    on(inp, \"keydown\", operation(cm, onKeyDown));\n    on(inp, \"keypress\", operation(cm, onKeyPress));\n    on(inp, \"focus\", bind(onFocus, cm));\n    on(inp, \"blur\", bind(onBlur, cm));\n  }\n\n  // Called when the window resizes\n  function onResize(cm) {\n    var d = cm.display;\n    if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth)\n      return;\n    // Might be a text scaling operation, clear size caches.\n    d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n    d.scrollbarsClipped = false;\n    cm.setSize();\n  }\n\n  // MOUSE EVENTS\n\n  // Return true when the given mouse event happened in a widget\n  function eventInWidget(display, e) {\n    for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n      if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n          (n.parentNode == display.sizer && n != display.mover))\n        return true;\n    }\n  }\n\n  // Given a mouse event, find the corresponding position. If liberal\n  // is false, it checks whether a gutter or scrollbar was clicked,\n  // and returns null if it was. forRect is used by rectangular\n  // selections, and tries to estimate a character position even for\n  // coordinates beyond the right of the text.\n  function posFromMouse(cm, e, liberal, forRect) {\n    var display = cm.display;\n    if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") return null;\n\n    var x, y, space = display.lineSpace.getBoundingClientRect();\n    // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n    try { x = e.clientX - space.left; y = e.clientY - space.top; }\n    catch (e) { return null; }\n    var coords = coordsChar(cm, x, y), line;\n    if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n      var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n      coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n    }\n    return coords;\n  }\n\n  // A mouse down can be a single click, double click, triple click,\n  // start of selection drag, start of text drag, new cursor\n  // (ctrl-click), rectangle drag (alt-drag), or xwin\n  // middle-click-paste. Or it might be a click on something we should\n  // not interfere with, such as a scrollbar or widget.\n  function onMouseDown(e) {\n    var cm = this, display = cm.display;\n    if (display.activeTouch && display.input.supportsTouch() || signalDOMEvent(cm, e)) return;\n    display.shift = e.shiftKey;\n\n    if (eventInWidget(display, e)) {\n      if (!webkit) {\n        // Briefly turn off draggability, to allow widgets to do\n        // normal dragging things.\n        display.scroller.draggable = false;\n        setTimeout(function(){display.scroller.draggable = true;}, 100);\n      }\n      return;\n    }\n    if (clickInGutter(cm, e)) return;\n    var start = posFromMouse(cm, e);\n    window.focus();\n\n    switch (e_button(e)) {\n    case 1:\n      if (start)\n        leftButtonDown(cm, e, start);\n      else if (e_target(e) == display.scroller)\n        e_preventDefault(e);\n      break;\n    case 2:\n      if (webkit) cm.state.lastMiddleDown = +new Date;\n      if (start) extendSelection(cm.doc, start);\n      setTimeout(function() {display.input.focus();}, 20);\n      e_preventDefault(e);\n      break;\n    case 3:\n      if (captureRightClick) onContextMenu(cm, e);\n      break;\n    }\n  }\n\n  var lastClick, lastDoubleClick;\n  function leftButtonDown(cm, e, start) {\n    if (ie) setTimeout(bind(ensureFocus, cm), 0);\n    else ensureFocus(cm);\n\n    var now = +new Date, type;\n    if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) {\n      type = \"triple\";\n    } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) {\n      type = \"double\";\n      lastDoubleClick = {time: now, pos: start};\n    } else {\n      type = \"single\";\n      lastClick = {time: now, pos: start};\n    }\n\n    var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey, contained;\n    if (cm.options.dragDrop && dragAndDrop && !isReadOnly(cm) &&\n        type == \"single\" && (contained = sel.contains(start)) > -1 &&\n        !sel.ranges[contained].empty())\n      leftButtonStartDrag(cm, e, start, modifier);\n    else\n      leftButtonSelect(cm, e, start, type, modifier);\n  }\n\n  // Start a text drag. When it ends, see if any dragging actually\n  // happen, and treat as a click if it didn't.\n  function leftButtonStartDrag(cm, e, start, modifier) {\n    var display = cm.display;\n    var dragEnd = operation(cm, function(e2) {\n      if (webkit) display.scroller.draggable = false;\n      cm.state.draggingText = false;\n      off(document, \"mouseup\", dragEnd);\n      off(display.scroller, \"drop\", dragEnd);\n      if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) {\n        e_preventDefault(e2);\n        if (!modifier)\n          extendSelection(cm.doc, start);\n        display.input.focus();\n        // Work around unexplainable focus problem in IE9 (#2127)\n        if (ie && ie_version == 9)\n          setTimeout(function() {document.body.focus(); display.input.focus();}, 20);\n      }\n    });\n    // Let the drag handler handle this.\n    if (webkit) display.scroller.draggable = true;\n    cm.state.draggingText = dragEnd;\n    // IE's approach to draggable\n    if (display.scroller.dragDrop) display.scroller.dragDrop();\n    on(document, \"mouseup\", dragEnd);\n    on(display.scroller, \"drop\", dragEnd);\n  }\n\n  // Normal selection, as opposed to text dragging.\n  function leftButtonSelect(cm, e, start, type, addNew) {\n    var display = cm.display, doc = cm.doc;\n    e_preventDefault(e);\n\n    var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n    if (addNew && !e.shiftKey) {\n      ourIndex = doc.sel.contains(start);\n      if (ourIndex > -1)\n        ourRange = ranges[ourIndex];\n      else\n        ourRange = new Range(start, start);\n    } else {\n      ourRange = doc.sel.primary();\n    }\n\n    if (e.altKey) {\n      type = \"rect\";\n      if (!addNew) ourRange = new Range(start, start);\n      start = posFromMouse(cm, e, true, true);\n      ourIndex = -1;\n    } else if (type == \"double\") {\n      var word = cm.findWordAt(start);\n      if (cm.display.shift || doc.extend)\n        ourRange = extendRange(doc, ourRange, word.anchor, word.head);\n      else\n        ourRange = word;\n    } else if (type == \"triple\") {\n      var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0)));\n      if (cm.display.shift || doc.extend)\n        ourRange = extendRange(doc, ourRange, line.anchor, line.head);\n      else\n        ourRange = line;\n    } else {\n      ourRange = extendRange(doc, ourRange, start);\n    }\n\n    if (!addNew) {\n      ourIndex = 0;\n      setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n      startSel = doc.sel;\n    } else if (ourIndex == -1) {\n      ourIndex = ranges.length;\n      setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex),\n                   {scroll: false, origin: \"*mouse\"});\n    } else if (ranges.length > 1 && ranges[ourIndex].empty() && type == \"single\") {\n      setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0));\n      startSel = doc.sel;\n    } else {\n      replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n    }\n\n    var lastPos = start;\n    function extendTo(pos) {\n      if (cmp(lastPos, pos) == 0) return;\n      lastPos = pos;\n\n      if (type == \"rect\") {\n        var ranges = [], tabSize = cm.options.tabSize;\n        var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n        var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n        var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n        for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n             line <= end; line++) {\n          var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n          if (left == right)\n            ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));\n          else if (text.length > leftPos)\n            ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize))));\n        }\n        if (!ranges.length) ranges.push(new Range(start, start));\n        setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n                     {origin: \"*mouse\", scroll: false});\n        cm.scrollIntoView(pos);\n      } else {\n        var oldRange = ourRange;\n        var anchor = oldRange.anchor, head = pos;\n        if (type != \"single\") {\n          if (type == \"double\")\n            var range = cm.findWordAt(pos);\n          else\n            var range = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0)));\n          if (cmp(range.anchor, anchor) > 0) {\n            head = range.head;\n            anchor = minPos(oldRange.from(), range.anchor);\n          } else {\n            head = range.anchor;\n            anchor = maxPos(oldRange.to(), range.head);\n          }\n        }\n        var ranges = startSel.ranges.slice(0);\n        ranges[ourIndex] = new Range(clipPos(doc, anchor), head);\n        setSelection(doc, normalizeSelection(ranges, ourIndex), sel_mouse);\n      }\n    }\n\n    var editorSize = display.wrapper.getBoundingClientRect();\n    // Used to ensure timeout re-tries don't fire when another extend\n    // happened in the meantime (clearTimeout isn't reliable -- at\n    // least on Chrome, the timeouts still happen even when cleared,\n    // if the clear happens after their scheduled firing time).\n    var counter = 0;\n\n    function extend(e) {\n      var curCount = ++counter;\n      var cur = posFromMouse(cm, e, true, type == \"rect\");\n      if (!cur) return;\n      if (cmp(cur, lastPos) != 0) {\n        ensureFocus(cm);\n        extendTo(cur);\n        var visible = visibleLines(display, doc);\n        if (cur.line >= visible.to || cur.line < visible.from)\n          setTimeout(operation(cm, function(){if (counter == curCount) extend(e);}), 150);\n      } else {\n        var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n        if (outside) setTimeout(operation(cm, function() {\n          if (counter != curCount) return;\n          display.scroller.scrollTop += outside;\n          extend(e);\n        }), 50);\n      }\n    }\n\n    function done(e) {\n      counter = Infinity;\n      e_preventDefault(e);\n      display.input.focus();\n      off(document, \"mousemove\", move);\n      off(document, \"mouseup\", up);\n      doc.history.lastSelOrigin = null;\n    }\n\n    var move = operation(cm, function(e) {\n      if (!e_button(e)) done(e);\n      else extend(e);\n    });\n    var up = operation(cm, done);\n    on(document, \"mousemove\", move);\n    on(document, \"mouseup\", up);\n  }\n\n  // Determines whether an event happened in the gutter, and fires the\n  // handlers for the corresponding event.\n  function gutterEvent(cm, e, type, prevent, signalfn) {\n    try { var mX = e.clientX, mY = e.clientY; }\n    catch(e) { return false; }\n    if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false;\n    if (prevent) e_preventDefault(e);\n\n    var display = cm.display;\n    var lineBox = display.lineDiv.getBoundingClientRect();\n\n    if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e);\n    mY -= lineBox.top - display.viewOffset;\n\n    for (var i = 0; i < cm.options.gutters.length; ++i) {\n      var g = display.gutters.childNodes[i];\n      if (g && g.getBoundingClientRect().right >= mX) {\n        var line = lineAtHeight(cm.doc, mY);\n        var gutter = cm.options.gutters[i];\n        signalfn(cm, type, cm, line, gutter, e);\n        return e_defaultPrevented(e);\n      }\n    }\n  }\n\n  function clickInGutter(cm, e) {\n    return gutterEvent(cm, e, \"gutterClick\", true, signalLater);\n  }\n\n  // Kludge to work around strange IE behavior where it'll sometimes\n  // re-fire a series of drag-related events right after the drop (#1551)\n  var lastDrop = 0;\n\n  function onDrop(e) {\n    var cm = this;\n    if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n      return;\n    e_preventDefault(e);\n    if (ie) lastDrop = +new Date;\n    var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n    if (!pos || isReadOnly(cm)) return;\n    // Might be a file drop, in which case we simply extract the text\n    // and insert it.\n    if (files && files.length && window.FileReader && window.File) {\n      var n = files.length, text = Array(n), read = 0;\n      var loadFile = function(file, i) {\n        var reader = new FileReader;\n        reader.onload = operation(cm, function() {\n          text[i] = reader.result;\n          if (++read == n) {\n            pos = clipPos(cm.doc, pos);\n            var change = {from: pos, to: pos, text: splitLines(text.join(\"\\n\")), origin: \"paste\"};\n            makeChange(cm.doc, change);\n            setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));\n          }\n        });\n        reader.readAsText(file);\n      };\n      for (var i = 0; i < n; ++i) loadFile(files[i], i);\n    } else { // Normal drop\n      // Don't do a replace if the drop happened inside of the selected text.\n      if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n        cm.state.draggingText(e);\n        // Ensure the editor is re-focused\n        setTimeout(function() {cm.display.input.focus();}, 20);\n        return;\n      }\n      try {\n        var text = e.dataTransfer.getData(\"Text\");\n        if (text) {\n          if (cm.state.draggingText && !(mac ? e.metaKey : e.ctrlKey))\n            var selected = cm.listSelections();\n          setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n          if (selected) for (var i = 0; i < selected.length; ++i)\n            replaceRange(cm.doc, \"\", selected[i].anchor, selected[i].head, \"drag\");\n          cm.replaceSelection(text, \"around\", \"paste\");\n          cm.display.input.focus();\n        }\n      }\n      catch(e){}\n    }\n  }\n\n  function onDragStart(cm, e) {\n    if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return; }\n    if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return;\n\n    e.dataTransfer.setData(\"Text\", cm.getSelection());\n\n    // Use dummy image instead of default browsers image.\n    // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n    if (e.dataTransfer.setDragImage && !safari) {\n      var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n      img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n      if (presto) {\n        img.width = img.height = 1;\n        cm.display.wrapper.appendChild(img);\n        // Force a relayout, or Opera won't use our image for some obscure reason\n        img._top = img.offsetTop;\n      }\n      e.dataTransfer.setDragImage(img, 0, 0);\n      if (presto) img.parentNode.removeChild(img);\n    }\n  }\n\n  // SCROLL EVENTS\n\n  // Sync the scrollable area and scrollbars, ensure the viewport\n  // covers the visible area.\n  function setScrollTop(cm, val) {\n    if (Math.abs(cm.doc.scrollTop - val) < 2) return;\n    cm.doc.scrollTop = val;\n    if (!gecko) updateDisplaySimple(cm, {top: val});\n    if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val;\n    cm.display.scrollbars.setScrollTop(val);\n    if (gecko) updateDisplaySimple(cm);\n    startWorker(cm, 100);\n  }\n  // Sync scroller and scrollbar, ensure the gutter elements are\n  // aligned.\n  function setScrollLeft(cm, val, isScroller) {\n    if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return;\n    val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);\n    cm.doc.scrollLeft = val;\n    alignHorizontally(cm);\n    if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val;\n    cm.display.scrollbars.setScrollLeft(val);\n  }\n\n  // Since the delta values reported on mouse wheel events are\n  // unstandardized between browsers and even browser versions, and\n  // generally horribly unpredictable, this code starts by measuring\n  // the scroll effect that the first few mouse wheel events have,\n  // and, from that, detects the way it can convert deltas to pixel\n  // offsets afterwards.\n  //\n  // The reason we want to know the amount a wheel event will scroll\n  // is that it gives us a chance to update the display before the\n  // actual scrolling happens, reducing flickering.\n\n  var wheelSamples = 0, wheelPixelsPerUnit = null;\n  // Fill in a browser-detected starting value on browsers where we\n  // know one. These don't have to be accurate -- the result of them\n  // being wrong would just be a slight flicker on the first wheel\n  // scroll (if it is large enough).\n  if (ie) wheelPixelsPerUnit = -.53;\n  else if (gecko) wheelPixelsPerUnit = 15;\n  else if (chrome) wheelPixelsPerUnit = -.7;\n  else if (safari) wheelPixelsPerUnit = -1/3;\n\n  var wheelEventDelta = function(e) {\n    var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n    if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail;\n    if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail;\n    else if (dy == null) dy = e.wheelDelta;\n    return {x: dx, y: dy};\n  };\n  CodeMirror.wheelEventPixels = function(e) {\n    var delta = wheelEventDelta(e);\n    delta.x *= wheelPixelsPerUnit;\n    delta.y *= wheelPixelsPerUnit;\n    return delta;\n  };\n\n  function onScrollWheel(cm, e) {\n    var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n    var display = cm.display, scroll = display.scroller;\n    // Quit if there's nothing to scroll here\n    if (!(dx && scroll.scrollWidth > scroll.clientWidth ||\n          dy && scroll.scrollHeight > scroll.clientHeight)) return;\n\n    // Webkit browsers on OS X abort momentum scrolls when the target\n    // of the scroll event is removed from the scrollable element.\n    // This hack (see related code in patchDisplay) makes sure the\n    // element is kept around.\n    if (dy && mac && webkit) {\n      outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n        for (var i = 0; i < view.length; i++) {\n          if (view[i].node == cur) {\n            cm.display.currentWheelTarget = cur;\n            break outer;\n          }\n        }\n      }\n    }\n\n    // On some browsers, horizontal scrolling will cause redraws to\n    // happen before the gutter has been realigned, causing it to\n    // wriggle around in a most unseemly way. When we have an\n    // estimated pixels/delta value, we just handle horizontal\n    // scrolling entirely here. It'll be slightly off from native, but\n    // better than glitching out.\n    if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n      if (dy)\n        setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight)));\n      setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth)));\n      e_preventDefault(e);\n      display.wheelStartX = null; // Abort measurement, if in progress\n      return;\n    }\n\n    // 'Project' the visible viewport to cover the area that is being\n    // scrolled into view (if we know enough to estimate it).\n    if (dy && wheelPixelsPerUnit != null) {\n      var pixels = dy * wheelPixelsPerUnit;\n      var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n      if (pixels < 0) top = Math.max(0, top + pixels - 50);\n      else bot = Math.min(cm.doc.height, bot + pixels + 50);\n      updateDisplaySimple(cm, {top: top, bottom: bot});\n    }\n\n    if (wheelSamples < 20) {\n      if (display.wheelStartX == null) {\n        display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n        display.wheelDX = dx; display.wheelDY = dy;\n        setTimeout(function() {\n          if (display.wheelStartX == null) return;\n          var movedX = scroll.scrollLeft - display.wheelStartX;\n          var movedY = scroll.scrollTop - display.wheelStartY;\n          var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n            (movedX && display.wheelDX && movedX / display.wheelDX);\n          display.wheelStartX = display.wheelStartY = null;\n          if (!sample) return;\n          wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n          ++wheelSamples;\n        }, 200);\n      } else {\n        display.wheelDX += dx; display.wheelDY += dy;\n      }\n    }\n  }\n\n  // KEY EVENTS\n\n  // Run a handler that was bound to a key.\n  function doHandleBinding(cm, bound, dropShift) {\n    if (typeof bound == \"string\") {\n      bound = commands[bound];\n      if (!bound) return false;\n    }\n    // Ensure previous input has been read, so that the handler sees a\n    // consistent view of the document\n    cm.display.input.ensurePolled();\n    var prevShift = cm.display.shift, done = false;\n    try {\n      if (isReadOnly(cm)) cm.state.suppressEdits = true;\n      if (dropShift) cm.display.shift = false;\n      done = bound(cm) != Pass;\n    } finally {\n      cm.display.shift = prevShift;\n      cm.state.suppressEdits = false;\n    }\n    return done;\n  }\n\n  function lookupKeyForEditor(cm, name, handle) {\n    for (var i = 0; i < cm.state.keyMaps.length; i++) {\n      var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n      if (result) return result;\n    }\n    return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n      || lookupKey(name, cm.options.keyMap, handle, cm);\n  }\n\n  var stopSeq = new Delayed;\n  function dispatchKey(cm, name, e, handle) {\n    var seq = cm.state.keySeq;\n    if (seq) {\n      if (isModifierKey(name)) return \"handled\";\n      stopSeq.set(50, function() {\n        if (cm.state.keySeq == seq) {\n          cm.state.keySeq = null;\n          cm.display.input.reset();\n        }\n      });\n      name = seq + \" \" + name;\n    }\n    var result = lookupKeyForEditor(cm, name, handle);\n\n    if (result == \"multi\")\n      cm.state.keySeq = name;\n    if (result == \"handled\")\n      signalLater(cm, \"keyHandled\", cm, name, e);\n\n    if (result == \"handled\" || result == \"multi\") {\n      e_preventDefault(e);\n      restartBlink(cm);\n    }\n\n    if (seq && !result && /\\'$/.test(name)) {\n      e_preventDefault(e);\n      return true;\n    }\n    return !!result;\n  }\n\n  // Handle a key from the keydown event.\n  function handleKeyBinding(cm, e) {\n    var name = keyName(e, true);\n    if (!name) return false;\n\n    if (e.shiftKey && !cm.state.keySeq) {\n      // First try to resolve full name (including 'Shift-'). Failing\n      // that, see if there is a cursor-motion command (starting with\n      // 'go') bound to the keyname without 'Shift-'.\n      return dispatchKey(cm, \"Shift-\" + name, e, function(b) {return doHandleBinding(cm, b, true);})\n          || dispatchKey(cm, name, e, function(b) {\n               if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n                 return doHandleBinding(cm, b);\n             });\n    } else {\n      return dispatchKey(cm, name, e, function(b) { return doHandleBinding(cm, b); });\n    }\n  }\n\n  // Handle a key from the keypress event\n  function handleCharBinding(cm, e, ch) {\n    return dispatchKey(cm, \"'\" + ch + \"'\", e,\n                       function(b) { return doHandleBinding(cm, b, true); });\n  }\n\n  var lastStoppedKey = null;\n  function onKeyDown(e) {\n    var cm = this;\n    ensureFocus(cm);\n    if (signalDOMEvent(cm, e)) return;\n    // IE does strange things with escape.\n    if (ie && ie_version < 11 && e.keyCode == 27) e.returnValue = false;\n    var code = e.keyCode;\n    cm.display.shift = code == 16 || e.shiftKey;\n    var handled = handleKeyBinding(cm, e);\n    if (presto) {\n      lastStoppedKey = handled ? code : null;\n      // Opera has no cut event... we try to at least catch the key combo\n      if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n        cm.replaceSelection(\"\", null, \"cut\");\n    }\n\n    // Turn mouse into crosshair when Alt is held on Mac.\n    if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n      showCrossHair(cm);\n  }\n\n  function showCrossHair(cm) {\n    var lineDiv = cm.display.lineDiv;\n    addClass(lineDiv, \"CodeMirror-crosshair\");\n\n    function up(e) {\n      if (e.keyCode == 18 || !e.altKey) {\n        rmClass(lineDiv, \"CodeMirror-crosshair\");\n        off(document, \"keyup\", up);\n        off(document, \"mouseover\", up);\n      }\n    }\n    on(document, \"keyup\", up);\n    on(document, \"mouseover\", up);\n  }\n\n  function onKeyUp(e) {\n    if (e.keyCode == 16) this.doc.sel.shift = false;\n    signalDOMEvent(this, e);\n  }\n\n  function onKeyPress(e) {\n    var cm = this;\n    if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) return;\n    var keyCode = e.keyCode, charCode = e.charCode;\n    if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;}\n    if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) return;\n    var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n    if (handleCharBinding(cm, e, ch)) return;\n    cm.display.input.onKeyPress(e);\n  }\n\n  // FOCUS/BLUR EVENTS\n\n  function onFocus(cm) {\n    if (cm.options.readOnly == \"nocursor\") return;\n    if (!cm.state.focused) {\n      signal(cm, \"focus\", cm);\n      cm.state.focused = true;\n      addClass(cm.display.wrapper, \"CodeMirror-focused\");\n      // This test prevents this from firing when a context\n      // menu is closed (since the input reset would kill the\n      // select-all detection hack)\n      if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n        cm.display.input.reset();\n        if (webkit) setTimeout(function() { cm.display.input.reset(true); }, 20); // Issue #1730\n      }\n      cm.display.input.receivedFocus();\n    }\n    restartBlink(cm);\n  }\n  function onBlur(cm) {\n    if (cm.state.focused) {\n      signal(cm, \"blur\", cm);\n      cm.state.focused = false;\n      rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n    }\n    clearInterval(cm.display.blinker);\n    setTimeout(function() {if (!cm.state.focused) cm.display.shift = false;}, 150);\n  }\n\n  // CONTEXT MENU HANDLING\n\n  // To make the context menu work, we need to briefly unhide the\n  // textarea (making it as unobtrusive as possible) to let the\n  // right-click take effect on it.\n  function onContextMenu(cm, e) {\n    if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) return;\n    cm.display.input.onContextMenu(e);\n  }\n\n  function contextMenuInGutter(cm, e) {\n    if (!hasHandler(cm, \"gutterContextMenu\")) return false;\n    return gutterEvent(cm, e, \"gutterContextMenu\", false, signal);\n  }\n\n  // UPDATING\n\n  // Compute the position of the end of a change (its 'to' property\n  // refers to the pre-change end).\n  var changeEnd = CodeMirror.changeEnd = function(change) {\n    if (!change.text) return change.to;\n    return Pos(change.from.line + change.text.length - 1,\n               lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));\n  };\n\n  // Adjust a position to refer to the post-change position of the\n  // same text, or the end of the change if the change covers it.\n  function adjustForChange(pos, change) {\n    if (cmp(pos, change.from) < 0) return pos;\n    if (cmp(pos, change.to) <= 0) return changeEnd(change);\n\n    var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n    if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch;\n    return Pos(line, ch);\n  }\n\n  function computeSelAfterChange(doc, change) {\n    var out = [];\n    for (var i = 0; i < doc.sel.ranges.length; i++) {\n      var range = doc.sel.ranges[i];\n      out.push(new Range(adjustForChange(range.anchor, change),\n                         adjustForChange(range.head, change)));\n    }\n    return normalizeSelection(out, doc.sel.primIndex);\n  }\n\n  function offsetPos(pos, old, nw) {\n    if (pos.line == old.line)\n      return Pos(nw.line, pos.ch - old.ch + nw.ch);\n    else\n      return Pos(nw.line + (pos.line - old.line), pos.ch);\n  }\n\n  // Used by replaceSelections to allow moving the selection to the\n  // start or around the replaced test. Hint may be \"start\" or \"around\".\n  function computeReplacedSel(doc, changes, hint) {\n    var out = [];\n    var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n    for (var i = 0; i < changes.length; i++) {\n      var change = changes[i];\n      var from = offsetPos(change.from, oldPrev, newPrev);\n      var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n      oldPrev = change.to;\n      newPrev = to;\n      if (hint == \"around\") {\n        var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n        out[i] = new Range(inv ? to : from, inv ? from : to);\n      } else {\n        out[i] = new Range(from, from);\n      }\n    }\n    return new Selection(out, doc.sel.primIndex);\n  }\n\n  // Allow \"beforeChange\" event handlers to influence a change\n  function filterChange(doc, change, update) {\n    var obj = {\n      canceled: false,\n      from: change.from,\n      to: change.to,\n      text: change.text,\n      origin: change.origin,\n      cancel: function() { this.canceled = true; }\n    };\n    if (update) obj.update = function(from, to, text, origin) {\n      if (from) this.from = clipPos(doc, from);\n      if (to) this.to = clipPos(doc, to);\n      if (text) this.text = text;\n      if (origin !== undefined) this.origin = origin;\n    };\n    signal(doc, \"beforeChange\", doc, obj);\n    if (doc.cm) signal(doc.cm, \"beforeChange\", doc.cm, obj);\n\n    if (obj.canceled) return null;\n    return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin};\n  }\n\n  // Apply a change to a document, and add it to the document's\n  // history, and propagating it to all linked documents.\n  function makeChange(doc, change, ignoreReadOnly) {\n    if (doc.cm) {\n      if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);\n      if (doc.cm.state.suppressEdits) return;\n    }\n\n    if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n      change = filterChange(doc, change, true);\n      if (!change) return;\n    }\n\n    // Possibly split or suppress the update based on the presence\n    // of read-only spans in its range.\n    var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n    if (split) {\n      for (var i = split.length - 1; i >= 0; --i)\n        makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text});\n    } else {\n      makeChangeInner(doc, change);\n    }\n  }\n\n  function makeChangeInner(doc, change) {\n    if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) return;\n    var selAfter = computeSelAfterChange(doc, change);\n    addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n    makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n    var rebased = [];\n\n    linkedDocs(doc, function(doc, sharedHist) {\n      if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n        rebaseHist(doc.history, change);\n        rebased.push(doc.history);\n      }\n      makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n    });\n  }\n\n  // Revert a change stored in a document's history.\n  function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n    if (doc.cm && doc.cm.state.suppressEdits) return;\n\n    var hist = doc.history, event, selAfter = doc.sel;\n    var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n    // Verify that there is a useable event (so that ctrl-z won't\n    // needlessly clear selection events)\n    for (var i = 0; i < source.length; i++) {\n      event = source[i];\n      if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n        break;\n    }\n    if (i == source.length) return;\n    hist.lastOrigin = hist.lastSelOrigin = null;\n\n    for (;;) {\n      event = source.pop();\n      if (event.ranges) {\n        pushSelectionToHistory(event, dest);\n        if (allowSelectionOnly && !event.equals(doc.sel)) {\n          setSelection(doc, event, {clearRedo: false});\n          return;\n        }\n        selAfter = event;\n      }\n      else break;\n    }\n\n    // Build up a reverse change object to add to the opposite history\n    // stack (redo when undoing, and vice versa).\n    var antiChanges = [];\n    pushSelectionToHistory(selAfter, dest);\n    dest.push({changes: antiChanges, generation: hist.generation});\n    hist.generation = event.generation || ++hist.maxGeneration;\n\n    var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n    for (var i = event.changes.length - 1; i >= 0; --i) {\n      var change = event.changes[i];\n      change.origin = type;\n      if (filter && !filterChange(doc, change, false)) {\n        source.length = 0;\n        return;\n      }\n\n      antiChanges.push(historyChangeFromChange(doc, change));\n\n      var after = i ? computeSelAfterChange(doc, change) : lst(source);\n      makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n      if (!i && doc.cm) doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)});\n      var rebased = [];\n\n      // Propagate to the linked documents\n      linkedDocs(doc, function(doc, sharedHist) {\n        if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n          rebaseHist(doc.history, change);\n          rebased.push(doc.history);\n        }\n        makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n      });\n    }\n  }\n\n  // Sub-views need their line numbers shifted when text is added\n  // above or below them in the parent document.\n  function shiftDoc(doc, distance) {\n    if (distance == 0) return;\n    doc.first += distance;\n    doc.sel = new Selection(map(doc.sel.ranges, function(range) {\n      return new Range(Pos(range.anchor.line + distance, range.anchor.ch),\n                       Pos(range.head.line + distance, range.head.ch));\n    }), doc.sel.primIndex);\n    if (doc.cm) {\n      regChange(doc.cm, doc.first, doc.first - distance, distance);\n      for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n        regLineChange(doc.cm, l, \"gutter\");\n    }\n  }\n\n  // More lower-level change function, handling only a single document\n  // (not linked ones).\n  function makeChangeSingleDoc(doc, change, selAfter, spans) {\n    if (doc.cm && !doc.cm.curOp)\n      return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);\n\n    if (change.to.line < doc.first) {\n      shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n      return;\n    }\n    if (change.from.line > doc.lastLine()) return;\n\n    // Clip the change to the size of this doc\n    if (change.from.line < doc.first) {\n      var shift = change.text.length - 1 - (doc.first - change.from.line);\n      shiftDoc(doc, shift);\n      change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n                text: [lst(change.text)], origin: change.origin};\n    }\n    var last = doc.lastLine();\n    if (change.to.line > last) {\n      change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n                text: [change.text[0]], origin: change.origin};\n    }\n\n    change.removed = getBetween(doc, change.from, change.to);\n\n    if (!selAfter) selAfter = computeSelAfterChange(doc, change);\n    if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans);\n    else updateDoc(doc, change, spans);\n    setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n  }\n\n  // Handle the interaction of a change to a document with the editor\n  // that this document is part of.\n  function makeChangeSingleDocInEditor(cm, change, spans) {\n    var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n    var recomputeMaxLength = false, checkWidthStart = from.line;\n    if (!cm.options.lineWrapping) {\n      checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n      doc.iter(checkWidthStart, to.line + 1, function(line) {\n        if (line == display.maxLine) {\n          recomputeMaxLength = true;\n          return true;\n        }\n      });\n    }\n\n    if (doc.sel.contains(change.from, change.to) > -1)\n      signalCursorActivity(cm);\n\n    updateDoc(doc, change, spans, estimateHeight(cm));\n\n    if (!cm.options.lineWrapping) {\n      doc.iter(checkWidthStart, from.line + change.text.length, function(line) {\n        var len = lineLength(line);\n        if (len > display.maxLineLength) {\n          display.maxLine = line;\n          display.maxLineLength = len;\n          display.maxLineChanged = true;\n          recomputeMaxLength = false;\n        }\n      });\n      if (recomputeMaxLength) cm.curOp.updateMaxLine = true;\n    }\n\n    // Adjust frontier, schedule worker\n    doc.frontier = Math.min(doc.frontier, from.line);\n    startWorker(cm, 400);\n\n    var lendiff = change.text.length - (to.line - from.line) - 1;\n    // Remember that these lines changed, for updating the display\n    if (change.full)\n      regChange(cm);\n    else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n      regLineChange(cm, from.line, \"text\");\n    else\n      regChange(cm, from.line, to.line + 1, lendiff);\n\n    var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n    if (changeHandler || changesHandler) {\n      var obj = {\n        from: from, to: to,\n        text: change.text,\n        removed: change.removed,\n        origin: change.origin\n      };\n      if (changeHandler) signalLater(cm, \"change\", cm, obj);\n      if (changesHandler) (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);\n    }\n    cm.display.selForContextMenu = null;\n  }\n\n  function replaceRange(doc, code, from, to, origin) {\n    if (!to) to = from;\n    if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; }\n    if (typeof code == \"string\") code = splitLines(code);\n    makeChange(doc, {from: from, to: to, text: code, origin: origin});\n  }\n\n  // SCROLLING THINGS INTO VIEW\n\n  // If an editor sits on the top or bottom of the window, partially\n  // scrolled out of view, this ensures that the cursor is visible.\n  function maybeScrollWindow(cm, coords) {\n    if (signalDOMEvent(cm, \"scrollCursorIntoView\")) return;\n\n    var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n    if (coords.top + box.top < 0) doScroll = true;\n    else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false;\n    if (doScroll != null && !phantom) {\n      var scrollNode = elt(\"div\", \"\\u200b\", null, \"position: absolute; top: \" +\n                           (coords.top - display.viewOffset - paddingTop(cm.display)) + \"px; height: \" +\n                           (coords.bottom - coords.top + scrollGap(cm) + display.barHeight) + \"px; left: \" +\n                           coords.left + \"px; width: 2px;\");\n      cm.display.lineSpace.appendChild(scrollNode);\n      scrollNode.scrollIntoView(doScroll);\n      cm.display.lineSpace.removeChild(scrollNode);\n    }\n  }\n\n  // Scroll a given position into view (immediately), verifying that\n  // it actually became visible (as line heights are accurately\n  // measured, the position of something may 'drift' during drawing).\n  function scrollPosIntoView(cm, pos, end, margin) {\n    if (margin == null) margin = 0;\n    for (var limit = 0; limit < 5; limit++) {\n      var changed = false, coords = cursorCoords(cm, pos);\n      var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n      var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left),\n                                         Math.min(coords.top, endCoords.top) - margin,\n                                         Math.max(coords.left, endCoords.left),\n                                         Math.max(coords.bottom, endCoords.bottom) + margin);\n      var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n      if (scrollPos.scrollTop != null) {\n        setScrollTop(cm, scrollPos.scrollTop);\n        if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true;\n      }\n      if (scrollPos.scrollLeft != null) {\n        setScrollLeft(cm, scrollPos.scrollLeft);\n        if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true;\n      }\n      if (!changed) break;\n    }\n    return coords;\n  }\n\n  // Scroll a given set of coordinates into view (immediately).\n  function scrollIntoView(cm, x1, y1, x2, y2) {\n    var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2);\n    if (scrollPos.scrollTop != null) setScrollTop(cm, scrollPos.scrollTop);\n    if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft);\n  }\n\n  // Calculate a new scroll position needed to scroll the given\n  // rectangle into view. Returns an object with scrollTop and\n  // scrollLeft properties. When these are undefined, the\n  // vertical/horizontal position does not need to be adjusted.\n  function calculateScrollPos(cm, x1, y1, x2, y2) {\n    var display = cm.display, snapMargin = textHeight(cm.display);\n    if (y1 < 0) y1 = 0;\n    var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n    var screen = displayHeight(cm), result = {};\n    if (y2 - y1 > screen) y2 = y1 + screen;\n    var docBottom = cm.doc.height + paddingVert(display);\n    var atTop = y1 < snapMargin, atBottom = y2 > docBottom - snapMargin;\n    if (y1 < screentop) {\n      result.scrollTop = atTop ? 0 : y1;\n    } else if (y2 > screentop + screen) {\n      var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen);\n      if (newTop != screentop) result.scrollTop = newTop;\n    }\n\n    var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\n    var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);\n    var tooWide = x2 - x1 > screenw;\n    if (tooWide) x2 = x1 + screenw;\n    if (x1 < 10)\n      result.scrollLeft = 0;\n    else if (x1 < screenleft)\n      result.scrollLeft = Math.max(0, x1 - (tooWide ? 0 : 10));\n    else if (x2 > screenw + screenleft - 3)\n      result.scrollLeft = x2 + (tooWide ? 0 : 10) - screenw;\n    return result;\n  }\n\n  // Store a relative adjustment to the scroll position in the current\n  // operation (to be applied when the operation finishes).\n  function addToScrollPos(cm, left, top) {\n    if (left != null || top != null) resolveScrollToPos(cm);\n    if (left != null)\n      cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left;\n    if (top != null)\n      cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n  }\n\n  // Make sure that at the end of the operation the current cursor is\n  // shown.\n  function ensureCursorVisible(cm) {\n    resolveScrollToPos(cm);\n    var cur = cm.getCursor(), from = cur, to = cur;\n    if (!cm.options.lineWrapping) {\n      from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur;\n      to = Pos(cur.line, cur.ch + 1);\n    }\n    cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin, isCursor: true};\n  }\n\n  // When an operation has its scrollToPos property set, and another\n  // scroll action is applied before the end of the operation, this\n  // 'simulates' scrolling that position into view in a cheap way, so\n  // that the effect of intermediate scroll commands is not ignored.\n  function resolveScrollToPos(cm) {\n    var range = cm.curOp.scrollToPos;\n    if (range) {\n      cm.curOp.scrollToPos = null;\n      var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n      var sPos = calculateScrollPos(cm, Math.min(from.left, to.left),\n                                    Math.min(from.top, to.top) - range.margin,\n                                    Math.max(from.right, to.right),\n                                    Math.max(from.bottom, to.bottom) + range.margin);\n      cm.scrollTo(sPos.scrollLeft, sPos.scrollTop);\n    }\n  }\n\n  // API UTILITIES\n\n  // Indent the given line. The how parameter can be \"smart\",\n  // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n  // (typically set to true for forced single-line indents), empty\n  // lines are not indented, and places where the mode returns Pass\n  // are left alone.\n  function indentLine(cm, n, how, aggressive) {\n    var doc = cm.doc, state;\n    if (how == null) how = \"add\";\n    if (how == \"smart\") {\n      // Fall back to \"prev\" when the mode doesn't have an indentation\n      // method.\n      if (!doc.mode.indent) how = \"prev\";\n      else state = getStateBefore(cm, n);\n    }\n\n    var tabSize = cm.options.tabSize;\n    var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n    if (line.stateAfter) line.stateAfter = null;\n    var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n    if (!aggressive && !/\\S/.test(line.text)) {\n      indentation = 0;\n      how = \"not\";\n    } else if (how == \"smart\") {\n      indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n      if (indentation == Pass || indentation > 150) {\n        if (!aggressive) return;\n        how = \"prev\";\n      }\n    }\n    if (how == \"prev\") {\n      if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize);\n      else indentation = 0;\n    } else if (how == \"add\") {\n      indentation = curSpace + cm.options.indentUnit;\n    } else if (how == \"subtract\") {\n      indentation = curSpace - cm.options.indentUnit;\n    } else if (typeof how == \"number\") {\n      indentation = curSpace + how;\n    }\n    indentation = Math.max(0, indentation);\n\n    var indentString = \"\", pos = 0;\n    if (cm.options.indentWithTabs)\n      for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";}\n    if (pos < indentation) indentString += spaceStr(indentation - pos);\n\n    if (indentString != curSpaceString) {\n      replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n    } else {\n      // Ensure that, if the cursor was in the whitespace at the start\n      // of the line, it is moved to the end of that space.\n      for (var i = 0; i < doc.sel.ranges.length; i++) {\n        var range = doc.sel.ranges[i];\n        if (range.head.line == n && range.head.ch < curSpaceString.length) {\n          var pos = Pos(n, curSpaceString.length);\n          replaceOneSelection(doc, i, new Range(pos, pos));\n          break;\n        }\n      }\n    }\n    line.stateAfter = null;\n  }\n\n  // Utility for applying a change to a line by handle or number,\n  // returning the number and optionally registering the line as\n  // changed.\n  function changeLine(doc, handle, changeType, op) {\n    var no = handle, line = handle;\n    if (typeof handle == \"number\") line = getLine(doc, clipLine(doc, handle));\n    else no = lineNo(handle);\n    if (no == null) return null;\n    if (op(line, no) && doc.cm) regLineChange(doc.cm, no, changeType);\n    return line;\n  }\n\n  // Helper for deleting text near the selection(s), used to implement\n  // backspace, delete, and similar functionality.\n  function deleteNearSelection(cm, compute) {\n    var ranges = cm.doc.sel.ranges, kill = [];\n    // Build up a set of ranges to kill first, merging overlapping\n    // ranges.\n    for (var i = 0; i < ranges.length; i++) {\n      var toKill = compute(ranges[i]);\n      while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n        var replaced = kill.pop();\n        if (cmp(replaced.from, toKill.from) < 0) {\n          toKill.from = replaced.from;\n          break;\n        }\n      }\n      kill.push(toKill);\n    }\n    // Next, remove those actual ranges.\n    runInOp(cm, function() {\n      for (var i = kill.length - 1; i >= 0; i--)\n        replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\");\n      ensureCursorVisible(cm);\n    });\n  }\n\n  // Used for horizontal relative motion. Dir is -1 or 1 (left or\n  // right), unit can be \"char\", \"column\" (like char, but doesn't\n  // cross line boundaries), \"word\" (across next word), or \"group\" (to\n  // the start of next group of word or non-word-non-whitespace\n  // chars). The visually param controls whether, in right-to-left\n  // text, direction 1 means to move towards the next index in the\n  // string, or towards the character to the right of the current\n  // position. The resulting position will have a hitSide=true\n  // property if it reached the end of the document.\n  function findPosH(doc, pos, dir, unit, visually) {\n    var line = pos.line, ch = pos.ch, origDir = dir;\n    var lineObj = getLine(doc, line);\n    var possible = true;\n    function findNextLine() {\n      var l = line + dir;\n      if (l < doc.first || l >= doc.first + doc.size) return (possible = false);\n      line = l;\n      return lineObj = getLine(doc, l);\n    }\n    function moveOnce(boundToLine) {\n      var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true);\n      if (next == null) {\n        if (!boundToLine && findNextLine()) {\n          if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj);\n          else ch = dir < 0 ? lineObj.text.length : 0;\n        } else return (possible = false);\n      } else ch = next;\n      return true;\n    }\n\n    if (unit == \"char\") moveOnce();\n    else if (unit == \"column\") moveOnce(true);\n    else if (unit == \"word\" || unit == \"group\") {\n      var sawType = null, group = unit == \"group\";\n      var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n      for (var first = true;; first = false) {\n        if (dir < 0 && !moveOnce(!first)) break;\n        var cur = lineObj.text.charAt(ch) || \"\\n\";\n        var type = isWordChar(cur, helper) ? \"w\"\n          : group && cur == \"\\n\" ? \"n\"\n          : !group || /\\s/.test(cur) ? null\n          : \"p\";\n        if (group && !first && !type) type = \"s\";\n        if (sawType && sawType != type) {\n          if (dir < 0) {dir = 1; moveOnce();}\n          break;\n        }\n\n        if (type) sawType = type;\n        if (dir > 0 && !moveOnce(!first)) break;\n      }\n    }\n    var result = skipAtomic(doc, Pos(line, ch), origDir, true);\n    if (!possible) result.hitSide = true;\n    return result;\n  }\n\n  // For relative vertical movement. Dir may be -1 or 1. Unit can be\n  // \"page\" or \"line\". The resulting position will have a hitSide=true\n  // property if it reached the end of the document.\n  function findPosV(cm, pos, dir, unit) {\n    var doc = cm.doc, x = pos.left, y;\n    if (unit == \"page\") {\n      var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n      y = pos.top + dir * (pageSize - (dir < 0 ? 1.5 : .5) * textHeight(cm.display));\n    } else if (unit == \"line\") {\n      y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n    }\n    for (;;) {\n      var target = coordsChar(cm, x, y);\n      if (!target.outside) break;\n      if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break; }\n      y += dir * 5;\n    }\n    return target;\n  }\n\n  // EDITOR METHODS\n\n  // The publicly visible API. Note that methodOp(f) means\n  // 'wrap f in an operation, performed on its `this` parameter'.\n\n  // This is not the complete set of editor methods. Most of the\n  // methods defined on the Doc type are also injected into\n  // CodeMirror.prototype, for backwards compatibility and\n  // convenience.\n\n  CodeMirror.prototype = {\n    constructor: CodeMirror,\n    focus: function(){window.focus(); this.display.input.focus();},\n\n    setOption: function(option, value) {\n      var options = this.options, old = options[option];\n      if (options[option] == value && option != \"mode\") return;\n      options[option] = value;\n      if (optionHandlers.hasOwnProperty(option))\n        operation(this, optionHandlers[option])(this, value, old);\n    },\n\n    getOption: function(option) {return this.options[option];},\n    getDoc: function() {return this.doc;},\n\n    addKeyMap: function(map, bottom) {\n      this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n    },\n    removeKeyMap: function(map) {\n      var maps = this.state.keyMaps;\n      for (var i = 0; i < maps.length; ++i)\n        if (maps[i] == map || maps[i].name == map) {\n          maps.splice(i, 1);\n          return true;\n        }\n    },\n\n    addOverlay: methodOp(function(spec, options) {\n      var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n      if (mode.startState) throw new Error(\"Overlays may not be stateful.\");\n      this.state.overlays.push({mode: mode, modeSpec: spec, opaque: options && options.opaque});\n      this.state.modeGen++;\n      regChange(this);\n    }),\n    removeOverlay: methodOp(function(spec) {\n      var overlays = this.state.overlays;\n      for (var i = 0; i < overlays.length; ++i) {\n        var cur = overlays[i].modeSpec;\n        if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n          overlays.splice(i, 1);\n          this.state.modeGen++;\n          regChange(this);\n          return;\n        }\n      }\n    }),\n\n    indentLine: methodOp(function(n, dir, aggressive) {\n      if (typeof dir != \"string\" && typeof dir != \"number\") {\n        if (dir == null) dir = this.options.smartIndent ? \"smart\" : \"prev\";\n        else dir = dir ? \"add\" : \"subtract\";\n      }\n      if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive);\n    }),\n    indentSelection: methodOp(function(how) {\n      var ranges = this.doc.sel.ranges, end = -1;\n      for (var i = 0; i < ranges.length; i++) {\n        var range = ranges[i];\n        if (!range.empty()) {\n          var from = range.from(), to = range.to();\n          var start = Math.max(end, from.line);\n          end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n          for (var j = start; j < end; ++j)\n            indentLine(this, j, how);\n          var newRanges = this.doc.sel.ranges;\n          if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n            replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll);\n        } else if (range.head.line > end) {\n          indentLine(this, range.head.line, how, true);\n          end = range.head.line;\n          if (i == this.doc.sel.primIndex) ensureCursorVisible(this);\n        }\n      }\n    }),\n\n    // Fetch the parser token for a given character. Useful for hacks\n    // that want to inspect the mode state (say, for completion).\n    getTokenAt: function(pos, precise) {\n      return takeToken(this, pos, precise);\n    },\n\n    getLineTokens: function(line, precise) {\n      return takeToken(this, Pos(line), precise, true);\n    },\n\n    getTokenTypeAt: function(pos) {\n      pos = clipPos(this.doc, pos);\n      var styles = getLineStyles(this, getLine(this.doc, pos.line));\n      var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n      var type;\n      if (ch == 0) type = styles[2];\n      else for (;;) {\n        var mid = (before + after) >> 1;\n        if ((mid ? styles[mid * 2 - 1] : 0) >= ch) after = mid;\n        else if (styles[mid * 2 + 1] < ch) before = mid + 1;\n        else { type = styles[mid * 2 + 2]; break; }\n      }\n      var cut = type ? type.indexOf(\"cm-overlay \") : -1;\n      return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);\n    },\n\n    getModeAt: function(pos) {\n      var mode = this.doc.mode;\n      if (!mode.innerMode) return mode;\n      return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode;\n    },\n\n    getHelper: function(pos, type) {\n      return this.getHelpers(pos, type)[0];\n    },\n\n    getHelpers: function(pos, type) {\n      var found = [];\n      if (!helpers.hasOwnProperty(type)) return helpers;\n      var help = helpers[type], mode = this.getModeAt(pos);\n      if (typeof mode[type] == \"string\") {\n        if (help[mode[type]]) found.push(help[mode[type]]);\n      } else if (mode[type]) {\n        for (var i = 0; i < mode[type].length; i++) {\n          var val = help[mode[type][i]];\n          if (val) found.push(val);\n        }\n      } else if (mode.helperType && help[mode.helperType]) {\n        found.push(help[mode.helperType]);\n      } else if (help[mode.name]) {\n        found.push(help[mode.name]);\n      }\n      for (var i = 0; i < help._global.length; i++) {\n        var cur = help._global[i];\n        if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n          found.push(cur.val);\n      }\n      return found;\n    },\n\n    getStateAfter: function(line, precise) {\n      var doc = this.doc;\n      line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n      return getStateBefore(this, line + 1, precise);\n    },\n\n    cursorCoords: function(start, mode) {\n      var pos, range = this.doc.sel.primary();\n      if (start == null) pos = range.head;\n      else if (typeof start == \"object\") pos = clipPos(this.doc, start);\n      else pos = start ? range.from() : range.to();\n      return cursorCoords(this, pos, mode || \"page\");\n    },\n\n    charCoords: function(pos, mode) {\n      return charCoords(this, clipPos(this.doc, pos), mode || \"page\");\n    },\n\n    coordsChar: function(coords, mode) {\n      coords = fromCoordSystem(this, coords, mode || \"page\");\n      return coordsChar(this, coords.left, coords.top);\n    },\n\n    lineAtHeight: function(height, mode) {\n      height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n      return lineAtHeight(this.doc, height + this.display.viewOffset);\n    },\n    heightAtLine: function(line, mode) {\n      var end = false, last = this.doc.first + this.doc.size - 1;\n      if (line < this.doc.first) line = this.doc.first;\n      else if (line > last) { line = last; end = true; }\n      var lineObj = getLine(this.doc, line);\n      return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\").top +\n        (end ? this.doc.height - heightAtLine(lineObj) : 0);\n    },\n\n    defaultTextHeight: function() { return textHeight(this.display); },\n    defaultCharWidth: function() { return charWidth(this.display); },\n\n    setGutterMarker: methodOp(function(line, gutterID, value) {\n      return changeLine(this.doc, line, \"gutter\", function(line) {\n        var markers = line.gutterMarkers || (line.gutterMarkers = {});\n        markers[gutterID] = value;\n        if (!value && isEmpty(markers)) line.gutterMarkers = null;\n        return true;\n      });\n    }),\n\n    clearGutter: methodOp(function(gutterID) {\n      var cm = this, doc = cm.doc, i = doc.first;\n      doc.iter(function(line) {\n        if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n          line.gutterMarkers[gutterID] = null;\n          regLineChange(cm, i, \"gutter\");\n          if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null;\n        }\n        ++i;\n      });\n    }),\n\n    addLineWidget: methodOp(function(handle, node, options) {\n      return addLineWidget(this, handle, node, options);\n    }),\n\n    removeLineWidget: function(widget) { widget.clear(); },\n\n    lineInfo: function(line) {\n      if (typeof line == \"number\") {\n        if (!isLine(this.doc, line)) return null;\n        var n = line;\n        line = getLine(this.doc, line);\n        if (!line) return null;\n      } else {\n        var n = lineNo(line);\n        if (n == null) return null;\n      }\n      return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n              textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n              widgets: line.widgets};\n    },\n\n    getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo};},\n\n    addWidget: function(pos, node, scroll, vert, horiz) {\n      var display = this.display;\n      pos = cursorCoords(this, clipPos(this.doc, pos));\n      var top = pos.bottom, left = pos.left;\n      node.style.position = \"absolute\";\n      node.setAttribute(\"cm-ignore-events\", \"true\");\n      this.display.input.setUneditable(node);\n      display.sizer.appendChild(node);\n      if (vert == \"over\") {\n        top = pos.top;\n      } else if (vert == \"above\" || vert == \"near\") {\n        var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n        hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n        // Default to positioning above (if specified and possible); otherwise default to positioning below\n        if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n          top = pos.top - node.offsetHeight;\n        else if (pos.bottom + node.offsetHeight <= vspace)\n          top = pos.bottom;\n        if (left + node.offsetWidth > hspace)\n          left = hspace - node.offsetWidth;\n      }\n      node.style.top = top + \"px\";\n      node.style.left = node.style.right = \"\";\n      if (horiz == \"right\") {\n        left = display.sizer.clientWidth - node.offsetWidth;\n        node.style.right = \"0px\";\n      } else {\n        if (horiz == \"left\") left = 0;\n        else if (horiz == \"middle\") left = (display.sizer.clientWidth - node.offsetWidth) / 2;\n        node.style.left = left + \"px\";\n      }\n      if (scroll)\n        scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight);\n    },\n\n    triggerOnKeyDown: methodOp(onKeyDown),\n    triggerOnKeyPress: methodOp(onKeyPress),\n    triggerOnKeyUp: onKeyUp,\n\n    execCommand: function(cmd) {\n      if (commands.hasOwnProperty(cmd))\n        return commands[cmd](this);\n    },\n\n    findPosH: function(from, amount, unit, visually) {\n      var dir = 1;\n      if (amount < 0) { dir = -1; amount = -amount; }\n      for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) {\n        cur = findPosH(this.doc, cur, dir, unit, visually);\n        if (cur.hitSide) break;\n      }\n      return cur;\n    },\n\n    moveH: methodOp(function(dir, unit) {\n      var cm = this;\n      cm.extendSelectionsBy(function(range) {\n        if (cm.display.shift || cm.doc.extend || range.empty())\n          return findPosH(cm.doc, range.head, dir, unit, cm.options.rtlMoveVisually);\n        else\n          return dir < 0 ? range.from() : range.to();\n      }, sel_move);\n    }),\n\n    deleteH: methodOp(function(dir, unit) {\n      var sel = this.doc.sel, doc = this.doc;\n      if (sel.somethingSelected())\n        doc.replaceSelection(\"\", null, \"+delete\");\n      else\n        deleteNearSelection(this, function(range) {\n          var other = findPosH(doc, range.head, dir, unit, false);\n          return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other};\n        });\n    }),\n\n    findPosV: function(from, amount, unit, goalColumn) {\n      var dir = 1, x = goalColumn;\n      if (amount < 0) { dir = -1; amount = -amount; }\n      for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) {\n        var coords = cursorCoords(this, cur, \"div\");\n        if (x == null) x = coords.left;\n        else coords.left = x;\n        cur = findPosV(this, coords, dir, unit);\n        if (cur.hitSide) break;\n      }\n      return cur;\n    },\n\n    moveV: methodOp(function(dir, unit) {\n      var cm = this, doc = this.doc, goals = [];\n      var collapse = !cm.display.shift && !doc.extend && doc.sel.somethingSelected();\n      doc.extendSelectionsBy(function(range) {\n        if (collapse)\n          return dir < 0 ? range.from() : range.to();\n        var headPos = cursorCoords(cm, range.head, \"div\");\n        if (range.goalColumn != null) headPos.left = range.goalColumn;\n        goals.push(headPos.left);\n        var pos = findPosV(cm, headPos, dir, unit);\n        if (unit == \"page\" && range == doc.sel.primary())\n          addToScrollPos(cm, null, charCoords(cm, pos, \"div\").top - headPos.top);\n        return pos;\n      }, sel_move);\n      if (goals.length) for (var i = 0; i < doc.sel.ranges.length; i++)\n        doc.sel.ranges[i].goalColumn = goals[i];\n    }),\n\n    // Find the word at the given position (as returned by coordsChar).\n    findWordAt: function(pos) {\n      var doc = this.doc, line = getLine(doc, pos.line).text;\n      var start = pos.ch, end = pos.ch;\n      if (line) {\n        var helper = this.getHelper(pos, \"wordChars\");\n        if ((pos.xRel < 0 || end == line.length) && start) --start; else ++end;\n        var startChar = line.charAt(start);\n        var check = isWordChar(startChar, helper)\n          ? function(ch) { return isWordChar(ch, helper); }\n          : /\\s/.test(startChar) ? function(ch) {return /\\s/.test(ch);}\n          : function(ch) {return !/\\s/.test(ch) && !isWordChar(ch);};\n        while (start > 0 && check(line.charAt(start - 1))) --start;\n        while (end < line.length && check(line.charAt(end))) ++end;\n      }\n      return new Range(Pos(pos.line, start), Pos(pos.line, end));\n    },\n\n    toggleOverwrite: function(value) {\n      if (value != null && value == this.state.overwrite) return;\n      if (this.state.overwrite = !this.state.overwrite)\n        addClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n      else\n        rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n\n      signal(this, \"overwriteToggle\", this, this.state.overwrite);\n    },\n    hasFocus: function() { return this.display.input.getField() == activeElt(); },\n\n    scrollTo: methodOp(function(x, y) {\n      if (x != null || y != null) resolveScrollToPos(this);\n      if (x != null) this.curOp.scrollLeft = x;\n      if (y != null) this.curOp.scrollTop = y;\n    }),\n    getScrollInfo: function() {\n      var scroller = this.display.scroller;\n      return {left: scroller.scrollLeft, top: scroller.scrollTop,\n              height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n              width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n              clientHeight: displayHeight(this), clientWidth: displayWidth(this)};\n    },\n\n    scrollIntoView: methodOp(function(range, margin) {\n      if (range == null) {\n        range = {from: this.doc.sel.primary().head, to: null};\n        if (margin == null) margin = this.options.cursorScrollMargin;\n      } else if (typeof range == \"number\") {\n        range = {from: Pos(range, 0), to: null};\n      } else if (range.from == null) {\n        range = {from: range, to: null};\n      }\n      if (!range.to) range.to = range.from;\n      range.margin = margin || 0;\n\n      if (range.from.line != null) {\n        resolveScrollToPos(this);\n        this.curOp.scrollToPos = range;\n      } else {\n        var sPos = calculateScrollPos(this, Math.min(range.from.left, range.to.left),\n                                      Math.min(range.from.top, range.to.top) - range.margin,\n                                      Math.max(range.from.right, range.to.right),\n                                      Math.max(range.from.bottom, range.to.bottom) + range.margin);\n        this.scrollTo(sPos.scrollLeft, sPos.scrollTop);\n      }\n    }),\n\n    setSize: methodOp(function(width, height) {\n      var cm = this;\n      function interpret(val) {\n        return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val;\n      }\n      if (width != null) cm.display.wrapper.style.width = interpret(width);\n      if (height != null) cm.display.wrapper.style.height = interpret(height);\n      if (cm.options.lineWrapping) clearLineMeasurementCache(this);\n      var lineNo = cm.display.viewFrom;\n      cm.doc.iter(lineNo, cm.display.viewTo, function(line) {\n        if (line.widgets) for (var i = 0; i < line.widgets.length; i++)\n          if (line.widgets[i].noHScroll) { regLineChange(cm, lineNo, \"widget\"); break; }\n        ++lineNo;\n      });\n      cm.curOp.forceUpdate = true;\n      signal(cm, \"refresh\", this);\n    }),\n\n    operation: function(f){return runInOp(this, f);},\n\n    refresh: methodOp(function() {\n      var oldHeight = this.display.cachedTextHeight;\n      regChange(this);\n      this.curOp.forceUpdate = true;\n      clearCaches(this);\n      this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop);\n      updateGutterSpace(this);\n      if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)\n        estimateLineHeights(this);\n      signal(this, \"refresh\", this);\n    }),\n\n    swapDoc: methodOp(function(doc) {\n      var old = this.doc;\n      old.cm = null;\n      attachDoc(this, doc);\n      clearCaches(this);\n      this.display.input.reset();\n      this.scrollTo(doc.scrollLeft, doc.scrollTop);\n      this.curOp.forceScroll = true;\n      signalLater(this, \"swapDoc\", this, old);\n      return old;\n    }),\n\n    getInputField: function(){return this.display.input.getField();},\n    getWrapperElement: function(){return this.display.wrapper;},\n    getScrollerElement: function(){return this.display.scroller;},\n    getGutterElement: function(){return this.display.gutters;}\n  };\n  eventMixin(CodeMirror);\n\n  // OPTION DEFAULTS\n\n  // The default configuration options.\n  var defaults = CodeMirror.defaults = {};\n  // Functions to run when options are changed.\n  var optionHandlers = CodeMirror.optionHandlers = {};\n\n  function option(name, deflt, handle, notOnInit) {\n    CodeMirror.defaults[name] = deflt;\n    if (handle) optionHandlers[name] =\n      notOnInit ? function(cm, val, old) {if (old != Init) handle(cm, val, old);} : handle;\n  }\n\n  // Passed to option handlers when there is no old value.\n  var Init = CodeMirror.Init = {toString: function(){return \"CodeMirror.Init\";}};\n\n  // These two are, on init, called from the constructor because they\n  // have to be initialized before the editor can start at all.\n  option(\"value\", \"\", function(cm, val) {\n    cm.setValue(val);\n  }, true);\n  option(\"mode\", null, function(cm, val) {\n    cm.doc.modeOption = val;\n    loadMode(cm);\n  }, true);\n\n  option(\"indentUnit\", 2, loadMode, true);\n  option(\"indentWithTabs\", false);\n  option(\"smartIndent\", true);\n  option(\"tabSize\", 4, function(cm) {\n    resetModeState(cm);\n    clearCaches(cm);\n    regChange(cm);\n  }, true);\n  option(\"specialChars\", /[\\t\\u0000-\\u0019\\u00ad\\u200b-\\u200f\\u2028\\u2029\\ufeff]/g, function(cm, val) {\n    cm.options.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n    cm.refresh();\n  }, true);\n  option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true);\n  option(\"electricChars\", true);\n  option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function() {\n    throw new Error(\"inputStyle can not (yet) be changed in a running editor\"); // FIXME\n  }, true);\n  option(\"rtlMoveVisually\", !windows);\n  option(\"wholeLineUpdateBefore\", true);\n\n  option(\"theme\", \"default\", function(cm) {\n    themeChanged(cm);\n    guttersChanged(cm);\n  }, true);\n  option(\"keyMap\", \"default\", function(cm, val, old) {\n    var next = getKeyMap(val);\n    var prev = old != CodeMirror.Init && getKeyMap(old);\n    if (prev && prev.detach) prev.detach(cm, next);\n    if (next.attach) next.attach(cm, prev || null);\n  });\n  option(\"extraKeys\", null);\n\n  option(\"lineWrapping\", false, wrappingChanged, true);\n  option(\"gutters\", [], function(cm) {\n    setGuttersForLineNumbers(cm.options);\n    guttersChanged(cm);\n  }, true);\n  option(\"fixedGutter\", true, function(cm, val) {\n    cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n    cm.refresh();\n  }, true);\n  option(\"coverGutterNextToScrollbar\", false, function(cm) {updateScrollbars(cm);}, true);\n  option(\"scrollbarStyle\", \"native\", function(cm) {\n    initScrollbars(cm);\n    updateScrollbars(cm);\n    cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n    cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n  }, true);\n  option(\"lineNumbers\", false, function(cm) {\n    setGuttersForLineNumbers(cm.options);\n    guttersChanged(cm);\n  }, true);\n  option(\"firstLineNumber\", 1, guttersChanged, true);\n  option(\"lineNumberFormatter\", function(integer) {return integer;}, guttersChanged, true);\n  option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n  option(\"resetSelectionOnContextMenu\", true);\n\n  option(\"readOnly\", false, function(cm, val) {\n    if (val == \"nocursor\") {\n      onBlur(cm);\n      cm.display.input.blur();\n      cm.display.disabled = true;\n    } else {\n      cm.display.disabled = false;\n      if (!val) cm.display.input.reset();\n    }\n  });\n  option(\"disableInput\", false, function(cm, val) {if (!val) cm.display.input.reset();}, true);\n  option(\"dragDrop\", true);\n\n  option(\"cursorBlinkRate\", 530);\n  option(\"cursorScrollMargin\", 0);\n  option(\"cursorHeight\", 1, updateSelection, true);\n  option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n  option(\"workTime\", 100);\n  option(\"workDelay\", 100);\n  option(\"flattenSpans\", true, resetModeState, true);\n  option(\"addModeClass\", false, resetModeState, true);\n  option(\"pollInterval\", 100);\n  option(\"undoDepth\", 200, function(cm, val){cm.doc.history.undoDepth = val;});\n  option(\"historyEventDelay\", 1250);\n  option(\"viewportMargin\", 10, function(cm){cm.refresh();}, true);\n  option(\"maxHighlightLength\", 10000, resetModeState, true);\n  option(\"moveInputWithCursor\", true, function(cm, val) {\n    if (!val) cm.display.input.resetPosition();\n  });\n\n  option(\"tabindex\", null, function(cm, val) {\n    cm.display.input.getField().tabIndex = val || \"\";\n  });\n  option(\"autofocus\", null);\n\n  // MODE DEFINITION AND QUERYING\n\n  // Known modes, by name and by MIME\n  var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {};\n\n  // Extra arguments are stored as the mode's dependencies, which is\n  // used by (legacy) mechanisms like loadmode.js to automatically\n  // load a mode. (Preferred mechanism is the require/define calls.)\n  CodeMirror.defineMode = function(name, mode) {\n    if (!CodeMirror.defaults.mode && name != \"null\") CodeMirror.defaults.mode = name;\n    if (arguments.length > 2)\n      mode.dependencies = Array.prototype.slice.call(arguments, 2);\n    modes[name] = mode;\n  };\n\n  CodeMirror.defineMIME = function(mime, spec) {\n    mimeModes[mime] = spec;\n  };\n\n  // Given a MIME type, a {name, ...options} config object, or a name\n  // string, return a mode config object.\n  CodeMirror.resolveMode = function(spec) {\n    if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n      spec = mimeModes[spec];\n    } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n      var found = mimeModes[spec.name];\n      if (typeof found == \"string\") found = {name: found};\n      spec = createObj(found, spec);\n      spec.name = found.name;\n    } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n      return CodeMirror.resolveMode(\"application/xml\");\n    }\n    if (typeof spec == \"string\") return {name: spec};\n    else return spec || {name: \"null\"};\n  };\n\n  // Given a mode spec (anything that resolveMode accepts), find and\n  // initialize an actual mode object.\n  CodeMirror.getMode = function(options, spec) {\n    var spec = CodeMirror.resolveMode(spec);\n    var mfactory = modes[spec.name];\n    if (!mfactory) return CodeMirror.getMode(options, \"text/plain\");\n    var modeObj = mfactory(options, spec);\n    if (modeExtensions.hasOwnProperty(spec.name)) {\n      var exts = modeExtensions[spec.name];\n      for (var prop in exts) {\n        if (!exts.hasOwnProperty(prop)) continue;\n        if (modeObj.hasOwnProperty(prop)) modeObj[\"_\" + prop] = modeObj[prop];\n        modeObj[prop] = exts[prop];\n      }\n    }\n    modeObj.name = spec.name;\n    if (spec.helperType) modeObj.helperType = spec.helperType;\n    if (spec.modeProps) for (var prop in spec.modeProps)\n      modeObj[prop] = spec.modeProps[prop];\n\n    return modeObj;\n  };\n\n  // Minimal default mode.\n  CodeMirror.defineMode(\"null\", function() {\n    return {token: function(stream) {stream.skipToEnd();}};\n  });\n  CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n  // This can be used to attach properties to mode objects from\n  // outside the actual mode definition.\n  var modeExtensions = CodeMirror.modeExtensions = {};\n  CodeMirror.extendMode = function(mode, properties) {\n    var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n    copyObj(properties, exts);\n  };\n\n  // EXTENSIONS\n\n  CodeMirror.defineExtension = function(name, func) {\n    CodeMirror.prototype[name] = func;\n  };\n  CodeMirror.defineDocExtension = function(name, func) {\n    Doc.prototype[name] = func;\n  };\n  CodeMirror.defineOption = option;\n\n  var initHooks = [];\n  CodeMirror.defineInitHook = function(f) {initHooks.push(f);};\n\n  var helpers = CodeMirror.helpers = {};\n  CodeMirror.registerHelper = function(type, name, value) {\n    if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []};\n    helpers[type][name] = value;\n  };\n  CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n    CodeMirror.registerHelper(type, name, value);\n    helpers[type]._global.push({pred: predicate, val: value});\n  };\n\n  // MODE STATE HANDLING\n\n  // Utility functions for working with state. Exported because nested\n  // modes need to do this for their inner modes.\n\n  var copyState = CodeMirror.copyState = function(mode, state) {\n    if (state === true) return state;\n    if (mode.copyState) return mode.copyState(state);\n    var nstate = {};\n    for (var n in state) {\n      var val = state[n];\n      if (val instanceof Array) val = val.concat([]);\n      nstate[n] = val;\n    }\n    return nstate;\n  };\n\n  var startState = CodeMirror.startState = function(mode, a1, a2) {\n    return mode.startState ? mode.startState(a1, a2) : true;\n  };\n\n  // Given a mode and a state (for that mode), find the inner mode and\n  // state at the position that the state refers to.\n  CodeMirror.innerMode = function(mode, state) {\n    while (mode.innerMode) {\n      var info = mode.innerMode(state);\n      if (!info || info.mode == mode) break;\n      state = info.state;\n      mode = info.mode;\n    }\n    return info || {mode: mode, state: state};\n  };\n\n  // STANDARD COMMANDS\n\n  // Commands are parameter-less actions that can be performed on an\n  // editor, mostly used for keybindings.\n  var commands = CodeMirror.commands = {\n    selectAll: function(cm) {cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);},\n    singleSelection: function(cm) {\n      cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll);\n    },\n    killLine: function(cm) {\n      deleteNearSelection(cm, function(range) {\n        if (range.empty()) {\n          var len = getLine(cm.doc, range.head.line).text.length;\n          if (range.head.ch == len && range.head.line < cm.lastLine())\n            return {from: range.head, to: Pos(range.head.line + 1, 0)};\n          else\n            return {from: range.head, to: Pos(range.head.line, len)};\n        } else {\n          return {from: range.from(), to: range.to()};\n        }\n      });\n    },\n    deleteLine: function(cm) {\n      deleteNearSelection(cm, function(range) {\n        return {from: Pos(range.from().line, 0),\n                to: clipPos(cm.doc, Pos(range.to().line + 1, 0))};\n      });\n    },\n    delLineLeft: function(cm) {\n      deleteNearSelection(cm, function(range) {\n        return {from: Pos(range.from().line, 0), to: range.from()};\n      });\n    },\n    delWrappedLineLeft: function(cm) {\n      deleteNearSelection(cm, function(range) {\n        var top = cm.charCoords(range.head, \"div\").top + 5;\n        var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n        return {from: leftPos, to: range.from()};\n      });\n    },\n    delWrappedLineRight: function(cm) {\n      deleteNearSelection(cm, function(range) {\n        var top = cm.charCoords(range.head, \"div\").top + 5;\n        var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n        return {from: range.from(), to: rightPos };\n      });\n    },\n    undo: function(cm) {cm.undo();},\n    redo: function(cm) {cm.redo();},\n    undoSelection: function(cm) {cm.undoSelection();},\n    redoSelection: function(cm) {cm.redoSelection();},\n    goDocStart: function(cm) {cm.extendSelection(Pos(cm.firstLine(), 0));},\n    goDocEnd: function(cm) {cm.extendSelection(Pos(cm.lastLine()));},\n    goLineStart: function(cm) {\n      cm.extendSelectionsBy(function(range) { return lineStart(cm, range.head.line); },\n                            {origin: \"+move\", bias: 1});\n    },\n    goLineStartSmart: function(cm) {\n      cm.extendSelectionsBy(function(range) {\n        return lineStartSmart(cm, range.head);\n      }, {origin: \"+move\", bias: 1});\n    },\n    goLineEnd: function(cm) {\n      cm.extendSelectionsBy(function(range) { return lineEnd(cm, range.head.line); },\n                            {origin: \"+move\", bias: -1});\n    },\n    goLineRight: function(cm) {\n      cm.extendSelectionsBy(function(range) {\n        var top = cm.charCoords(range.head, \"div\").top + 5;\n        return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n      }, sel_move);\n    },\n    goLineLeft: function(cm) {\n      cm.extendSelectionsBy(function(range) {\n        var top = cm.charCoords(range.head, \"div\").top + 5;\n        return cm.coordsChar({left: 0, top: top}, \"div\");\n      }, sel_move);\n    },\n    goLineLeftSmart: function(cm) {\n      cm.extendSelectionsBy(function(range) {\n        var top = cm.charCoords(range.head, \"div\").top + 5;\n        var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n        if (pos.ch < cm.getLine(pos.line).search(/\\S/)) return lineStartSmart(cm, range.head);\n        return pos;\n      }, sel_move);\n    },\n    goLineUp: function(cm) {cm.moveV(-1, \"line\");},\n    goLineDown: function(cm) {cm.moveV(1, \"line\");},\n    goPageUp: function(cm) {cm.moveV(-1, \"page\");},\n    goPageDown: function(cm) {cm.moveV(1, \"page\");},\n    goCharLeft: function(cm) {cm.moveH(-1, \"char\");},\n    goCharRight: function(cm) {cm.moveH(1, \"char\");},\n    goColumnLeft: function(cm) {cm.moveH(-1, \"column\");},\n    goColumnRight: function(cm) {cm.moveH(1, \"column\");},\n    goWordLeft: function(cm) {cm.moveH(-1, \"word\");},\n    goGroupRight: function(cm) {cm.moveH(1, \"group\");},\n    goGroupLeft: function(cm) {cm.moveH(-1, \"group\");},\n    goWordRight: function(cm) {cm.moveH(1, \"word\");},\n    delCharBefore: function(cm) {cm.deleteH(-1, \"char\");},\n    delCharAfter: function(cm) {cm.deleteH(1, \"char\");},\n    delWordBefore: function(cm) {cm.deleteH(-1, \"word\");},\n    delWordAfter: function(cm) {cm.deleteH(1, \"word\");},\n    delGroupBefore: function(cm) {cm.deleteH(-1, \"group\");},\n    delGroupAfter: function(cm) {cm.deleteH(1, \"group\");},\n    indentAuto: function(cm) {cm.indentSelection(\"smart\");},\n    indentMore: function(cm) {cm.indentSelection(\"add\");},\n    indentLess: function(cm) {cm.indentSelection(\"subtract\");},\n    insertTab: function(cm) {cm.replaceSelection(\"\\t\");},\n    insertSoftTab: function(cm) {\n      var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n      for (var i = 0; i < ranges.length; i++) {\n        var pos = ranges[i].from();\n        var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n        spaces.push(new Array(tabSize - col % tabSize + 1).join(\" \"));\n      }\n      cm.replaceSelections(spaces);\n    },\n    defaultTab: function(cm) {\n      if (cm.somethingSelected()) cm.indentSelection(\"add\");\n      else cm.execCommand(\"insertTab\");\n    },\n    transposeChars: function(cm) {\n      runInOp(cm, function() {\n        var ranges = cm.listSelections(), newSel = [];\n        for (var i = 0; i < ranges.length; i++) {\n          var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n          if (line) {\n            if (cur.ch == line.length) cur = new Pos(cur.line, cur.ch - 1);\n            if (cur.ch > 0) {\n              cur = new Pos(cur.line, cur.ch + 1);\n              cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n                              Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n            } else if (cur.line > cm.doc.first) {\n              var prev = getLine(cm.doc, cur.line - 1).text;\n              if (prev)\n                cm.replaceRange(line.charAt(0) + \"\\n\" + prev.charAt(prev.length - 1),\n                                Pos(cur.line - 1, prev.length - 1), Pos(cur.line, 1), \"+transpose\");\n            }\n          }\n          newSel.push(new Range(cur, cur));\n        }\n        cm.setSelections(newSel);\n      });\n    },\n    newlineAndIndent: function(cm) {\n      runInOp(cm, function() {\n        var len = cm.listSelections().length;\n        for (var i = 0; i < len; i++) {\n          var range = cm.listSelections()[i];\n          cm.replaceRange(\"\\n\", range.anchor, range.head, \"+input\");\n          cm.indentLine(range.from().line + 1, null, true);\n          ensureCursorVisible(cm);\n        }\n      });\n    },\n    toggleOverwrite: function(cm) {cm.toggleOverwrite();}\n  };\n\n\n  // STANDARD KEYMAPS\n\n  var keyMap = CodeMirror.keyMap = {};\n\n  keyMap.basic = {\n    \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n    \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n    \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n    \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n    \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n    \"Esc\": \"singleSelection\"\n  };\n  // Note that the save and find-related commands aren't defined by\n  // default. User code or addons can define them. Unknown commands\n  // are simply ignored.\n  keyMap.pcDefault = {\n    \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n    \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n    \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n    \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n    \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n    \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n    \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n    fallthrough: \"basic\"\n  };\n  // Very basic readline/emacs-style bindings, which are standard on Mac.\n  keyMap.emacsy = {\n    \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n    \"Alt-F\": \"goWordRight\", \"Alt-B\": \"goWordLeft\", \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n    \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\", \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\",\n    \"Alt-D\": \"delWordAfter\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\", \"Ctrl-T\": \"transposeChars\"\n  };\n  keyMap.macDefault = {\n    \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n    \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n    \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n    \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n    \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n    \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n    \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n    fallthrough: [\"basic\", \"emacsy\"]\n  };\n  keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n  // KEYMAP DISPATCH\n\n  function normalizeKeyName(name) {\n    var parts = name.split(/-(?!$)/), name = parts[parts.length - 1];\n    var alt, ctrl, shift, cmd;\n    for (var i = 0; i < parts.length - 1; i++) {\n      var mod = parts[i];\n      if (/^(cmd|meta|m)$/i.test(mod)) cmd = true;\n      else if (/^a(lt)?$/i.test(mod)) alt = true;\n      else if (/^(c|ctrl|control)$/i.test(mod)) ctrl = true;\n      else if (/^s(hift)$/i.test(mod)) shift = true;\n      else throw new Error(\"Unrecognized modifier name: \" + mod);\n    }\n    if (alt) name = \"Alt-\" + name;\n    if (ctrl) name = \"Ctrl-\" + name;\n    if (cmd) name = \"Cmd-\" + name;\n    if (shift) name = \"Shift-\" + name;\n    return name;\n  }\n\n  // This is a kludge to keep keymaps mostly working as raw objects\n  // (backwards compatibility) while at the same time support features\n  // like normalization and multi-stroke key bindings. It compiles a\n  // new normalized keymap, and then updates the old object to reflect\n  // this.\n  CodeMirror.normalizeKeyMap = function(keymap) {\n    var copy = {};\n    for (var keyname in keymap) if (keymap.hasOwnProperty(keyname)) {\n      var value = keymap[keyname];\n      if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) continue;\n      if (value == \"...\") { delete keymap[keyname]; continue; }\n\n      var keys = map(keyname.split(\" \"), normalizeKeyName);\n      for (var i = 0; i < keys.length; i++) {\n        var val, name;\n        if (i == keys.length - 1) {\n          name = keyname;\n          val = value;\n        } else {\n          name = keys.slice(0, i + 1).join(\" \");\n          val = \"...\";\n        }\n        var prev = copy[name];\n        if (!prev) copy[name] = val;\n        else if (prev != val) throw new Error(\"Inconsistent bindings for \" + name);\n      }\n      delete keymap[keyname];\n    }\n    for (var prop in copy) keymap[prop] = copy[prop];\n    return keymap;\n  };\n\n  var lookupKey = CodeMirror.lookupKey = function(key, map, handle, context) {\n    map = getKeyMap(map);\n    var found = map.call ? map.call(key, context) : map[key];\n    if (found === false) return \"nothing\";\n    if (found === \"...\") return \"multi\";\n    if (found != null && handle(found)) return \"handled\";\n\n    if (map.fallthrough) {\n      if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n        return lookupKey(key, map.fallthrough, handle, context);\n      for (var i = 0; i < map.fallthrough.length; i++) {\n        var result = lookupKey(key, map.fallthrough[i], handle, context);\n        if (result) return result;\n      }\n    }\n  };\n\n  // Modifier key presses don't count as 'real' key presses for the\n  // purpose of keymap fallthrough.\n  var isModifierKey = CodeMirror.isModifierKey = function(value) {\n    var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n    return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\";\n  };\n\n  // Look up the name of a key as indicated by an event object.\n  var keyName = CodeMirror.keyName = function(event, noShift) {\n    if (presto && event.keyCode == 34 && event[\"char\"]) return false;\n    var base = keyNames[event.keyCode], name = base;\n    if (name == null || event.altGraphKey) return false;\n    if (event.altKey && base != \"Alt\") name = \"Alt-\" + name;\n    if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") name = \"Ctrl-\" + name;\n    if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Cmd\") name = \"Cmd-\" + name;\n    if (!noShift && event.shiftKey && base != \"Shift\") name = \"Shift-\" + name;\n    return name;\n  };\n\n  function getKeyMap(val) {\n    return typeof val == \"string\" ? keyMap[val] : val;\n  }\n\n  // FROMTEXTAREA\n\n  CodeMirror.fromTextArea = function(textarea, options) {\n    options = options ? copyObj(options) : {};\n    options.value = textarea.value;\n    if (!options.tabindex && textarea.tabIndex)\n      options.tabindex = textarea.tabIndex;\n    if (!options.placeholder && textarea.placeholder)\n      options.placeholder = textarea.placeholder;\n    // Set autofocus to true if this textarea is focused, or if it has\n    // autofocus and no other element is focused.\n    if (options.autofocus == null) {\n      var hasFocus = activeElt();\n      options.autofocus = hasFocus == textarea ||\n        textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n    }\n\n    function save() {textarea.value = cm.getValue();}\n    if (textarea.form) {\n      on(textarea.form, \"submit\", save);\n      // Deplorable hack to make the submit method do the right thing.\n      if (!options.leaveSubmitMethodAlone) {\n        var form = textarea.form, realSubmit = form.submit;\n        try {\n          var wrappedSubmit = form.submit = function() {\n            save();\n            form.submit = realSubmit;\n            form.submit();\n            form.submit = wrappedSubmit;\n          };\n        } catch(e) {}\n      }\n    }\n\n    options.finishInit = function(cm) {\n      cm.save = save;\n      cm.getTextArea = function() { return textarea; };\n      cm.toTextArea = function() {\n        cm.toTextArea = isNaN; // Prevent this from being ran twice\n        save();\n        textarea.parentNode.removeChild(cm.getWrapperElement());\n        textarea.style.display = \"\";\n        if (textarea.form) {\n          off(textarea.form, \"submit\", save);\n          if (typeof textarea.form.submit == \"function\")\n            textarea.form.submit = realSubmit;\n        }\n      };\n    };\n\n    textarea.style.display = \"none\";\n    var cm = CodeMirror(function(node) {\n      textarea.parentNode.insertBefore(node, textarea.nextSibling);\n    }, options);\n    return cm;\n  };\n\n  // STRING STREAM\n\n  // Fed to the mode parsers, provides helper functions to make\n  // parsers more succinct.\n\n  var StringStream = CodeMirror.StringStream = function(string, tabSize) {\n    this.pos = this.start = 0;\n    this.string = string;\n    this.tabSize = tabSize || 8;\n    this.lastColumnPos = this.lastColumnValue = 0;\n    this.lineStart = 0;\n  };\n\n  StringStream.prototype = {\n    eol: function() {return this.pos >= this.string.length;},\n    sol: function() {return this.pos == this.lineStart;},\n    peek: function() {return this.string.charAt(this.pos) || undefined;},\n    next: function() {\n      if (this.pos < this.string.length)\n        return this.string.charAt(this.pos++);\n    },\n    eat: function(match) {\n      var ch = this.string.charAt(this.pos);\n      if (typeof match == \"string\") var ok = ch == match;\n      else var ok = ch && (match.test ? match.test(ch) : match(ch));\n      if (ok) {++this.pos; return ch;}\n    },\n    eatWhile: function(match) {\n      var start = this.pos;\n      while (this.eat(match)){}\n      return this.pos > start;\n    },\n    eatSpace: function() {\n      var start = this.pos;\n      while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos;\n      return this.pos > start;\n    },\n    skipToEnd: function() {this.pos = this.string.length;},\n    skipTo: function(ch) {\n      var found = this.string.indexOf(ch, this.pos);\n      if (found > -1) {this.pos = found; return true;}\n    },\n    backUp: function(n) {this.pos -= n;},\n    column: function() {\n      if (this.lastColumnPos < this.start) {\n        this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n        this.lastColumnPos = this.start;\n      }\n      return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n    },\n    indentation: function() {\n      return countColumn(this.string, null, this.tabSize) -\n        (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n    },\n    match: function(pattern, consume, caseInsensitive) {\n      if (typeof pattern == \"string\") {\n        var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;};\n        var substr = this.string.substr(this.pos, pattern.length);\n        if (cased(substr) == cased(pattern)) {\n          if (consume !== false) this.pos += pattern.length;\n          return true;\n        }\n      } else {\n        var match = this.string.slice(this.pos).match(pattern);\n        if (match && match.index > 0) return null;\n        if (match && consume !== false) this.pos += match[0].length;\n        return match;\n      }\n    },\n    current: function(){return this.string.slice(this.start, this.pos);},\n    hideFirstChars: function(n, inner) {\n      this.lineStart += n;\n      try { return inner(); }\n      finally { this.lineStart -= n; }\n    }\n  };\n\n  // TEXTMARKERS\n\n  // Created with markText and setBookmark methods. A TextMarker is a\n  // handle that can be used to clear or find a marked position in the\n  // document. Line objects hold arrays (markedSpans) containing\n  // {from, to, marker} object pointing to such marker objects, and\n  // indicating that such a marker is present on that line. Multiple\n  // lines may point to the same marker when it spans across lines.\n  // The spans will have null for their from/to properties when the\n  // marker continues beyond the start/end of the line. Markers have\n  // links back to the lines they currently touch.\n\n  var nextMarkerId = 0;\n\n  var TextMarker = CodeMirror.TextMarker = function(doc, type) {\n    this.lines = [];\n    this.type = type;\n    this.doc = doc;\n    this.id = ++nextMarkerId;\n  };\n  eventMixin(TextMarker);\n\n  // Clear the marker.\n  TextMarker.prototype.clear = function() {\n    if (this.explicitlyCleared) return;\n    var cm = this.doc.cm, withOp = cm && !cm.curOp;\n    if (withOp) startOperation(cm);\n    if (hasHandler(this, \"clear\")) {\n      var found = this.find();\n      if (found) signalLater(this, \"clear\", found.from, found.to);\n    }\n    var min = null, max = null;\n    for (var i = 0; i < this.lines.length; ++i) {\n      var line = this.lines[i];\n      var span = getMarkedSpanFor(line.markedSpans, this);\n      if (cm && !this.collapsed) regLineChange(cm, lineNo(line), \"text\");\n      else if (cm) {\n        if (span.to != null) max = lineNo(line);\n        if (span.from != null) min = lineNo(line);\n      }\n      line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n      if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n        updateLineHeight(line, textHeight(cm.display));\n    }\n    if (cm && this.collapsed && !cm.options.lineWrapping) for (var i = 0; i < this.lines.length; ++i) {\n      var visual = visualLine(this.lines[i]), len = lineLength(visual);\n      if (len > cm.display.maxLineLength) {\n        cm.display.maxLine = visual;\n        cm.display.maxLineLength = len;\n        cm.display.maxLineChanged = true;\n      }\n    }\n\n    if (min != null && cm && this.collapsed) regChange(cm, min, max + 1);\n    this.lines.length = 0;\n    this.explicitlyCleared = true;\n    if (this.atomic && this.doc.cantEdit) {\n      this.doc.cantEdit = false;\n      if (cm) reCheckSelection(cm.doc);\n    }\n    if (cm) signalLater(cm, \"markerCleared\", cm, this);\n    if (withOp) endOperation(cm);\n    if (this.parent) this.parent.clear();\n  };\n\n  // Find the position of the marker in the document. Returns a {from,\n  // to} object by default. Side can be passed to get a specific side\n  // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n  // Pos objects returned contain a line object, rather than a line\n  // number (used to prevent looking up the same line twice).\n  TextMarker.prototype.find = function(side, lineObj) {\n    if (side == null && this.type == \"bookmark\") side = 1;\n    var from, to;\n    for (var i = 0; i < this.lines.length; ++i) {\n      var line = this.lines[i];\n      var span = getMarkedSpanFor(line.markedSpans, this);\n      if (span.from != null) {\n        from = Pos(lineObj ? line : lineNo(line), span.from);\n        if (side == -1) return from;\n      }\n      if (span.to != null) {\n        to = Pos(lineObj ? line : lineNo(line), span.to);\n        if (side == 1) return to;\n      }\n    }\n    return from && {from: from, to: to};\n  };\n\n  // Signals that the marker's widget changed, and surrounding layout\n  // should be recomputed.\n  TextMarker.prototype.changed = function() {\n    var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n    if (!pos || !cm) return;\n    runInOp(cm, function() {\n      var line = pos.line, lineN = lineNo(pos.line);\n      var view = findViewForLine(cm, lineN);\n      if (view) {\n        clearLineMeasurementCacheFor(view);\n        cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n      }\n      cm.curOp.updateMaxLine = true;\n      if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n        var oldHeight = widget.height;\n        widget.height = null;\n        var dHeight = widgetHeight(widget) - oldHeight;\n        if (dHeight)\n          updateLineHeight(line, line.height + dHeight);\n      }\n    });\n  };\n\n  TextMarker.prototype.attachLine = function(line) {\n    if (!this.lines.length && this.doc.cm) {\n      var op = this.doc.cm.curOp;\n      if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n        (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n    }\n    this.lines.push(line);\n  };\n  TextMarker.prototype.detachLine = function(line) {\n    this.lines.splice(indexOf(this.lines, line), 1);\n    if (!this.lines.length && this.doc.cm) {\n      var op = this.doc.cm.curOp;\n      (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n    }\n  };\n\n  // Collapsed markers have unique ids, in order to be able to order\n  // them, which is needed for uniquely determining an outer marker\n  // when they overlap (they may nest, but not partially overlap).\n  var nextMarkerId = 0;\n\n  // Create a marker, wire it up to the right lines, and\n  function markText(doc, from, to, options, type) {\n    // Shared markers (across linked documents) are handled separately\n    // (markTextShared will call out to this again, once per\n    // document).\n    if (options && options.shared) return markTextShared(doc, from, to, options, type);\n    // Ensure we are in an operation.\n    if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type);\n\n    var marker = new TextMarker(doc, type), diff = cmp(from, to);\n    if (options) copyObj(options, marker, false);\n    // Don't connect empty markers unless clearWhenEmpty is false\n    if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n      return marker;\n    if (marker.replacedWith) {\n      // Showing up as a widget implies collapsed (widget replaces text)\n      marker.collapsed = true;\n      marker.widgetNode = elt(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n      if (!options.handleMouseEvents) marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\");\n      if (options.insertLeft) marker.widgetNode.insertLeft = true;\n    }\n    if (marker.collapsed) {\n      if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n          from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n        throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n      sawCollapsedSpans = true;\n    }\n\n    if (marker.addToHistory)\n      addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN);\n\n    var curLine = from.line, cm = doc.cm, updateMaxLine;\n    doc.iter(curLine, to.line + 1, function(line) {\n      if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n        updateMaxLine = true;\n      if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0);\n      addMarkedSpan(line, new MarkedSpan(marker,\n                                         curLine == from.line ? from.ch : null,\n                                         curLine == to.line ? to.ch : null));\n      ++curLine;\n    });\n    // lineIsHidden depends on the presence of the spans, so needs a second pass\n    if (marker.collapsed) doc.iter(from.line, to.line + 1, function(line) {\n      if (lineIsHidden(doc, line)) updateLineHeight(line, 0);\n    });\n\n    if (marker.clearOnEnter) on(marker, \"beforeCursorEnter\", function() { marker.clear(); });\n\n    if (marker.readOnly) {\n      sawReadOnlySpans = true;\n      if (doc.history.done.length || doc.history.undone.length)\n        doc.clearHistory();\n    }\n    if (marker.collapsed) {\n      marker.id = ++nextMarkerId;\n      marker.atomic = true;\n    }\n    if (cm) {\n      // Sync editor state\n      if (updateMaxLine) cm.curOp.updateMaxLine = true;\n      if (marker.collapsed)\n        regChange(cm, from.line, to.line + 1);\n      else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css)\n        for (var i = from.line; i <= to.line; i++) regLineChange(cm, i, \"text\");\n      if (marker.atomic) reCheckSelection(cm.doc);\n      signalLater(cm, \"markerAdded\", cm, marker);\n    }\n    return marker;\n  }\n\n  // SHARED TEXTMARKERS\n\n  // A shared marker spans multiple linked documents. It is\n  // implemented as a meta-marker-object controlling multiple normal\n  // markers.\n  var SharedTextMarker = CodeMirror.SharedTextMarker = function(markers, primary) {\n    this.markers = markers;\n    this.primary = primary;\n    for (var i = 0; i < markers.length; ++i)\n      markers[i].parent = this;\n  };\n  eventMixin(SharedTextMarker);\n\n  SharedTextMarker.prototype.clear = function() {\n    if (this.explicitlyCleared) return;\n    this.explicitlyCleared = true;\n    for (var i = 0; i < this.markers.length; ++i)\n      this.markers[i].clear();\n    signalLater(this, \"clear\");\n  };\n  SharedTextMarker.prototype.find = function(side, lineObj) {\n    return this.primary.find(side, lineObj);\n  };\n\n  function markTextShared(doc, from, to, options, type) {\n    options = copyObj(options);\n    options.shared = false;\n    var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n    var widget = options.widgetNode;\n    linkedDocs(doc, function(doc) {\n      if (widget) options.widgetNode = widget.cloneNode(true);\n      markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n      for (var i = 0; i < doc.linked.length; ++i)\n        if (doc.linked[i].isParent) return;\n      primary = lst(markers);\n    });\n    return new SharedTextMarker(markers, primary);\n  }\n\n  function findSharedMarkers(doc) {\n    return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())),\n                         function(m) { return m.parent; });\n  }\n\n  function copySharedMarkers(doc, markers) {\n    for (var i = 0; i < markers.length; i++) {\n      var marker = markers[i], pos = marker.find();\n      var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n      if (cmp(mFrom, mTo)) {\n        var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n        marker.markers.push(subMark);\n        subMark.parent = marker;\n      }\n    }\n  }\n\n  function detachSharedMarkers(markers) {\n    for (var i = 0; i < markers.length; i++) {\n      var marker = markers[i], linked = [marker.primary.doc];;\n      linkedDocs(marker.primary.doc, function(d) { linked.push(d); });\n      for (var j = 0; j < marker.markers.length; j++) {\n        var subMarker = marker.markers[j];\n        if (indexOf(linked, subMarker.doc) == -1) {\n          subMarker.parent = null;\n          marker.markers.splice(j--, 1);\n        }\n      }\n    }\n  }\n\n  // TEXTMARKER SPANS\n\n  function MarkedSpan(marker, from, to) {\n    this.marker = marker;\n    this.from = from; this.to = to;\n  }\n\n  // Search an array of spans for a span matching the given marker.\n  function getMarkedSpanFor(spans, marker) {\n    if (spans) for (var i = 0; i < spans.length; ++i) {\n      var span = spans[i];\n      if (span.marker == marker) return span;\n    }\n  }\n  // Remove a span from an array, returning undefined if no spans are\n  // left (we don't store arrays for lines without spans).\n  function removeMarkedSpan(spans, span) {\n    for (var r, i = 0; i < spans.length; ++i)\n      if (spans[i] != span) (r || (r = [])).push(spans[i]);\n    return r;\n  }\n  // Add a span to a line.\n  function addMarkedSpan(line, span) {\n    line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n    span.marker.attachLine(line);\n  }\n\n  // Used for the algorithm that adjusts markers for a change in the\n  // document. These functions cut an array of spans at a given\n  // character position, returning an array of remaining chunks (or\n  // undefined if nothing remains).\n  function markedSpansBefore(old, startCh, isInsert) {\n    if (old) for (var i = 0, nw; i < old.length; ++i) {\n      var span = old[i], marker = span.marker;\n      var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n      if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n        var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);\n        (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n      }\n    }\n    return nw;\n  }\n  function markedSpansAfter(old, endCh, isInsert) {\n    if (old) for (var i = 0, nw; i < old.length; ++i) {\n      var span = old[i], marker = span.marker;\n      var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n      if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n        var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);\n        (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n                                              span.to == null ? null : span.to - endCh));\n      }\n    }\n    return nw;\n  }\n\n  // Given a change object, compute the new set of marker spans that\n  // cover the line in which the change took place. Removes spans\n  // entirely within the change, reconnects spans belonging to the\n  // same marker that appear on both sides of the change, and cuts off\n  // spans partially within the change. Returns an array of span\n  // arrays with one element for each line in (after) the change.\n  function stretchSpansOverChange(doc, change) {\n    if (change.full) return null;\n    var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n    var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n    if (!oldFirst && !oldLast) return null;\n\n    var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n    // Get the spans that 'stick out' on both sides\n    var first = markedSpansBefore(oldFirst, startCh, isInsert);\n    var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n    // Next, merge those two ends\n    var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n    if (first) {\n      // Fix up .to properties of first\n      for (var i = 0; i < first.length; ++i) {\n        var span = first[i];\n        if (span.to == null) {\n          var found = getMarkedSpanFor(last, span.marker);\n          if (!found) span.to = startCh;\n          else if (sameLine) span.to = found.to == null ? null : found.to + offset;\n        }\n      }\n    }\n    if (last) {\n      // Fix up .from in last (or move them into first in case of sameLine)\n      for (var i = 0; i < last.length; ++i) {\n        var span = last[i];\n        if (span.to != null) span.to += offset;\n        if (span.from == null) {\n          var found = getMarkedSpanFor(first, span.marker);\n          if (!found) {\n            span.from = offset;\n            if (sameLine) (first || (first = [])).push(span);\n          }\n        } else {\n          span.from += offset;\n          if (sameLine) (first || (first = [])).push(span);\n        }\n      }\n    }\n    // Make sure we didn't create any zero-length spans\n    if (first) first = clearEmptySpans(first);\n    if (last && last != first) last = clearEmptySpans(last);\n\n    var newMarkers = [first];\n    if (!sameLine) {\n      // Fill gap with whole-line-spans\n      var gap = change.text.length - 2, gapMarkers;\n      if (gap > 0 && first)\n        for (var i = 0; i < first.length; ++i)\n          if (first[i].to == null)\n            (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null));\n      for (var i = 0; i < gap; ++i)\n        newMarkers.push(gapMarkers);\n      newMarkers.push(last);\n    }\n    return newMarkers;\n  }\n\n  // Remove spans that are empty and don't have a clearWhenEmpty\n  // option of false.\n  function clearEmptySpans(spans) {\n    for (var i = 0; i < spans.length; ++i) {\n      var span = spans[i];\n      if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n        spans.splice(i--, 1);\n    }\n    if (!spans.length) return null;\n    return spans;\n  }\n\n  // Used for un/re-doing changes from the history. Combines the\n  // result of computing the existing spans with the set of spans that\n  // existed in the history (so that deleting around a span and then\n  // undoing brings back the span).\n  function mergeOldSpans(doc, change) {\n    var old = getOldSpans(doc, change);\n    var stretched = stretchSpansOverChange(doc, change);\n    if (!old) return stretched;\n    if (!stretched) return old;\n\n    for (var i = 0; i < old.length; ++i) {\n      var oldCur = old[i], stretchCur = stretched[i];\n      if (oldCur && stretchCur) {\n        spans: for (var j = 0; j < stretchCur.length; ++j) {\n          var span = stretchCur[j];\n          for (var k = 0; k < oldCur.length; ++k)\n            if (oldCur[k].marker == span.marker) continue spans;\n          oldCur.push(span);\n        }\n      } else if (stretchCur) {\n        old[i] = stretchCur;\n      }\n    }\n    return old;\n  }\n\n  // Used to 'clip' out readOnly ranges when making a change.\n  function removeReadOnlyRanges(doc, from, to) {\n    var markers = null;\n    doc.iter(from.line, to.line + 1, function(line) {\n      if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) {\n        var mark = line.markedSpans[i].marker;\n        if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n          (markers || (markers = [])).push(mark);\n      }\n    });\n    if (!markers) return null;\n    var parts = [{from: from, to: to}];\n    for (var i = 0; i < markers.length; ++i) {\n      var mk = markers[i], m = mk.find(0);\n      for (var j = 0; j < parts.length; ++j) {\n        var p = parts[j];\n        if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue;\n        var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n        if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n          newParts.push({from: p.from, to: m.from});\n        if (dto > 0 || !mk.inclusiveRight && !dto)\n          newParts.push({from: m.to, to: p.to});\n        parts.splice.apply(parts, newParts);\n        j += newParts.length - 1;\n      }\n    }\n    return parts;\n  }\n\n  // Connect or disconnect spans from a line.\n  function detachMarkedSpans(line) {\n    var spans = line.markedSpans;\n    if (!spans) return;\n    for (var i = 0; i < spans.length; ++i)\n      spans[i].marker.detachLine(line);\n    line.markedSpans = null;\n  }\n  function attachMarkedSpans(line, spans) {\n    if (!spans) return;\n    for (var i = 0; i < spans.length; ++i)\n      spans[i].marker.attachLine(line);\n    line.markedSpans = spans;\n  }\n\n  // Helpers used when computing which overlapping collapsed span\n  // counts as the larger one.\n  function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; }\n  function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; }\n\n  // Returns a number indicating which of two overlapping collapsed\n  // spans is larger (and thus includes the other). Falls back to\n  // comparing ids when the spans cover exactly the same range.\n  function compareCollapsedMarkers(a, b) {\n    var lenDiff = a.lines.length - b.lines.length;\n    if (lenDiff != 0) return lenDiff;\n    var aPos = a.find(), bPos = b.find();\n    var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n    if (fromCmp) return -fromCmp;\n    var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n    if (toCmp) return toCmp;\n    return b.id - a.id;\n  }\n\n  // Find out whether a line ends or starts in a collapsed span. If\n  // so, return the marker for that span.\n  function collapsedSpanAtSide(line, start) {\n    var sps = sawCollapsedSpans && line.markedSpans, found;\n    if (sps) for (var sp, i = 0; i < sps.length; ++i) {\n      sp = sps[i];\n      if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n          (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n        found = sp.marker;\n    }\n    return found;\n  }\n  function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true); }\n  function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false); }\n\n  // Test whether there exists a collapsed span that partially\n  // overlaps (covers the start or end, but not both) of a new span.\n  // Such overlap is not allowed.\n  function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n    var line = getLine(doc, lineNo);\n    var sps = sawCollapsedSpans && line.markedSpans;\n    if (sps) for (var i = 0; i < sps.length; ++i) {\n      var sp = sps[i];\n      if (!sp.marker.collapsed) continue;\n      var found = sp.marker.find(0);\n      var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n      var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n      if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue;\n      if (fromCmp <= 0 && (cmp(found.to, from) > 0 || (sp.marker.inclusiveRight && marker.inclusiveLeft)) ||\n          fromCmp >= 0 && (cmp(found.from, to) < 0 || (sp.marker.inclusiveLeft && marker.inclusiveRight)))\n        return true;\n    }\n  }\n\n  // A visual line is a line as drawn on the screen. Folding, for\n  // example, can cause multiple logical lines to appear on the same\n  // visual line. This finds the start of the visual line that the\n  // given line is part of (usually that is the line itself).\n  function visualLine(line) {\n    var merged;\n    while (merged = collapsedSpanAtStart(line))\n      line = merged.find(-1, true).line;\n    return line;\n  }\n\n  // Returns an array of logical lines that continue the visual line\n  // started by the argument, or undefined if there are no such lines.\n  function visualLineContinued(line) {\n    var merged, lines;\n    while (merged = collapsedSpanAtEnd(line)) {\n      line = merged.find(1, true).line;\n      (lines || (lines = [])).push(line);\n    }\n    return lines;\n  }\n\n  // Get the line number of the start of the visual line that the\n  // given line number is part of.\n  function visualLineNo(doc, lineN) {\n    var line = getLine(doc, lineN), vis = visualLine(line);\n    if (line == vis) return lineN;\n    return lineNo(vis);\n  }\n  // Get the line number of the start of the next visual line after\n  // the given line.\n  function visualLineEndNo(doc, lineN) {\n    if (lineN > doc.lastLine()) return lineN;\n    var line = getLine(doc, lineN), merged;\n    if (!lineIsHidden(doc, line)) return lineN;\n    while (merged = collapsedSpanAtEnd(line))\n      line = merged.find(1, true).line;\n    return lineNo(line) + 1;\n  }\n\n  // Compute whether a line is hidden. Lines count as hidden when they\n  // are part of a visual line that starts with another line, or when\n  // they are entirely covered by collapsed, non-widget span.\n  function lineIsHidden(doc, line) {\n    var sps = sawCollapsedSpans && line.markedSpans;\n    if (sps) for (var sp, i = 0; i < sps.length; ++i) {\n      sp = sps[i];\n      if (!sp.marker.collapsed) continue;\n      if (sp.from == null) return true;\n      if (sp.marker.widgetNode) continue;\n      if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n        return true;\n    }\n  }\n  function lineIsHiddenInner(doc, line, span) {\n    if (span.to == null) {\n      var end = span.marker.find(1, true);\n      return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));\n    }\n    if (span.marker.inclusiveRight && span.to == line.text.length)\n      return true;\n    for (var sp, i = 0; i < line.markedSpans.length; ++i) {\n      sp = line.markedSpans[i];\n      if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n          (sp.to == null || sp.to != span.from) &&\n          (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n          lineIsHiddenInner(doc, line, sp)) return true;\n    }\n  }\n\n  // LINE WIDGETS\n\n  // Line widgets are block elements displayed above or below a line.\n\n  var LineWidget = CodeMirror.LineWidget = function(cm, node, options) {\n    if (options) for (var opt in options) if (options.hasOwnProperty(opt))\n      this[opt] = options[opt];\n    this.cm = cm;\n    this.node = node;\n  };\n  eventMixin(LineWidget);\n\n  function adjustScrollWhenAboveVisible(cm, line, diff) {\n    if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n      addToScrollPos(cm, null, diff);\n  }\n\n  LineWidget.prototype.clear = function() {\n    var cm = this.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n    if (no == null || !ws) return;\n    for (var i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1);\n    if (!ws.length) line.widgets = null;\n    var height = widgetHeight(this);\n    runInOp(cm, function() {\n      adjustScrollWhenAboveVisible(cm, line, -height);\n      regLineChange(cm, no, \"widget\");\n      updateLineHeight(line, Math.max(0, line.height - height));\n    });\n  };\n  LineWidget.prototype.changed = function() {\n    var oldH = this.height, cm = this.cm, line = this.line;\n    this.height = null;\n    var diff = widgetHeight(this) - oldH;\n    if (!diff) return;\n    runInOp(cm, function() {\n      cm.curOp.forceUpdate = true;\n      adjustScrollWhenAboveVisible(cm, line, diff);\n      updateLineHeight(line, line.height + diff);\n    });\n  };\n\n  function widgetHeight(widget) {\n    if (widget.height != null) return widget.height;\n    if (!contains(document.body, widget.node)) {\n      var parentStyle = \"position: relative;\";\n      if (widget.coverGutter)\n        parentStyle += \"margin-left: -\" + widget.cm.display.gutters.offsetWidth + \"px;\";\n      if (widget.noHScroll)\n        parentStyle += \"width: \" + widget.cm.display.wrapper.clientWidth + \"px;\";\n      removeChildrenAndAdd(widget.cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n    }\n    return widget.height = widget.node.offsetHeight;\n  }\n\n  function addLineWidget(cm, handle, node, options) {\n    var widget = new LineWidget(cm, node, options);\n    if (widget.noHScroll) cm.display.alignWidgets = true;\n    changeLine(cm.doc, handle, \"widget\", function(line) {\n      var widgets = line.widgets || (line.widgets = []);\n      if (widget.insertAt == null) widgets.push(widget);\n      else widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget);\n      widget.line = line;\n      if (!lineIsHidden(cm.doc, line)) {\n        var aboveVisible = heightAtLine(line) < cm.doc.scrollTop;\n        updateLineHeight(line, line.height + widgetHeight(widget));\n        if (aboveVisible) addToScrollPos(cm, null, widget.height);\n        cm.curOp.forceUpdate = true;\n      }\n      return true;\n    });\n    return widget;\n  }\n\n  // LINE DATA STRUCTURE\n\n  // Line objects. These hold state related to a line, including\n  // highlighting info (the styles array).\n  var Line = CodeMirror.Line = function(text, markedSpans, estimateHeight) {\n    this.text = text;\n    attachMarkedSpans(this, markedSpans);\n    this.height = estimateHeight ? estimateHeight(this) : 1;\n  };\n  eventMixin(Line);\n  Line.prototype.lineNo = function() { return lineNo(this); };\n\n  // Change the content (text, markers) of a line. Automatically\n  // invalidates cached information and tries to re-estimate the\n  // line's height.\n  function updateLine(line, text, markedSpans, estimateHeight) {\n    line.text = text;\n    if (line.stateAfter) line.stateAfter = null;\n    if (line.styles) line.styles = null;\n    if (line.order != null) line.order = null;\n    detachMarkedSpans(line);\n    attachMarkedSpans(line, markedSpans);\n    var estHeight = estimateHeight ? estimateHeight(line) : 1;\n    if (estHeight != line.height) updateLineHeight(line, estHeight);\n  }\n\n  // Detach a line from the document tree and its markers.\n  function cleanUpLine(line) {\n    line.parent = null;\n    detachMarkedSpans(line);\n  }\n\n  function extractLineClasses(type, output) {\n    if (type) for (;;) {\n      var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n      if (!lineClass) break;\n      type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n      var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n      if (output[prop] == null)\n        output[prop] = lineClass[2];\n      else if (!(new RegExp(\"(?:^|\\s)\" + lineClass[2] + \"(?:$|\\s)\")).test(output[prop]))\n        output[prop] += \" \" + lineClass[2];\n    }\n    return type;\n  }\n\n  function callBlankLine(mode, state) {\n    if (mode.blankLine) return mode.blankLine(state);\n    if (!mode.innerMode) return;\n    var inner = CodeMirror.innerMode(mode, state);\n    if (inner.mode.blankLine) return inner.mode.blankLine(inner.state);\n  }\n\n  function readToken(mode, stream, state, inner) {\n    for (var i = 0; i < 10; i++) {\n      if (inner) inner[0] = CodeMirror.innerMode(mode, state).mode;\n      var style = mode.token(stream, state);\n      if (stream.pos > stream.start) return style;\n    }\n    throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\");\n  }\n\n  // Utility for getTokenAt and getLineTokens\n  function takeToken(cm, pos, precise, asArray) {\n    function getObj(copy) {\n      return {start: stream.start, end: stream.pos,\n              string: stream.current(),\n              type: style || null,\n              state: copy ? copyState(doc.mode, state) : state};\n    }\n\n    var doc = cm.doc, mode = doc.mode, style;\n    pos = clipPos(doc, pos);\n    var line = getLine(doc, pos.line), state = getStateBefore(cm, pos.line, precise);\n    var stream = new StringStream(line.text, cm.options.tabSize), tokens;\n    if (asArray) tokens = [];\n    while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n      stream.start = stream.pos;\n      style = readToken(mode, stream, state);\n      if (asArray) tokens.push(getObj(true));\n    }\n    return asArray ? tokens : getObj();\n  }\n\n  // Run the given mode's parser over a line, calling f for each token.\n  function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) {\n    var flattenSpans = mode.flattenSpans;\n    if (flattenSpans == null) flattenSpans = cm.options.flattenSpans;\n    var curStart = 0, curStyle = null;\n    var stream = new StringStream(text, cm.options.tabSize), style;\n    var inner = cm.options.addModeClass && [null];\n    if (text == \"\") extractLineClasses(callBlankLine(mode, state), lineClasses);\n    while (!stream.eol()) {\n      if (stream.pos > cm.options.maxHighlightLength) {\n        flattenSpans = false;\n        if (forceToEnd) processLine(cm, text, state, stream.pos);\n        stream.pos = text.length;\n        style = null;\n      } else {\n        style = extractLineClasses(readToken(mode, stream, state, inner), lineClasses);\n      }\n      if (inner) {\n        var mName = inner[0].name;\n        if (mName) style = \"m-\" + (style ? mName + \" \" + style : mName);\n      }\n      if (!flattenSpans || curStyle != style) {\n        while (curStart < stream.start) {\n          curStart = Math.min(stream.start, curStart + 50000);\n          f(curStart, curStyle);\n        }\n        curStyle = style;\n      }\n      stream.start = stream.pos;\n    }\n    while (curStart < stream.pos) {\n      // Webkit seems to refuse to render text nodes longer than 57444 characters\n      var pos = Math.min(stream.pos, curStart + 50000);\n      f(pos, curStyle);\n      curStart = pos;\n    }\n  }\n\n  // Compute a style array (an array starting with a mode generation\n  // -- for invalidation -- followed by pairs of end positions and\n  // style strings), which is used to highlight the tokens on the\n  // line.\n  function highlightLine(cm, line, state, forceToEnd) {\n    // A styles array always starts with a number identifying the\n    // mode/overlays that it is based on (for easy invalidation).\n    var st = [cm.state.modeGen], lineClasses = {};\n    // Compute the base array of styles\n    runMode(cm, line.text, cm.doc.mode, state, function(end, style) {\n      st.push(end, style);\n    }, lineClasses, forceToEnd);\n\n    // Run overlays, adjust style array.\n    for (var o = 0; o < cm.state.overlays.length; ++o) {\n      var overlay = cm.state.overlays[o], i = 1, at = 0;\n      runMode(cm, line.text, overlay.mode, true, function(end, style) {\n        var start = i;\n        // Ensure there's a token end at the current position, and that i points at it\n        while (at < end) {\n          var i_end = st[i];\n          if (i_end > end)\n            st.splice(i, 1, end, st[i+1], i_end);\n          i += 2;\n          at = Math.min(end, i_end);\n        }\n        if (!style) return;\n        if (overlay.opaque) {\n          st.splice(start, i - start, end, \"cm-overlay \" + style);\n          i = start + 2;\n        } else {\n          for (; start < i; start += 2) {\n            var cur = st[start+1];\n            st[start+1] = (cur ? cur + \" \" : \"\") + \"cm-overlay \" + style;\n          }\n        }\n      }, lineClasses);\n    }\n\n    return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null};\n  }\n\n  function getLineStyles(cm, line, updateFrontier) {\n    if (!line.styles || line.styles[0] != cm.state.modeGen) {\n      var result = highlightLine(cm, line, line.stateAfter = getStateBefore(cm, lineNo(line)));\n      line.styles = result.styles;\n      if (result.classes) line.styleClasses = result.classes;\n      else if (line.styleClasses) line.styleClasses = null;\n      if (updateFrontier === cm.doc.frontier) cm.doc.frontier++;\n    }\n    return line.styles;\n  }\n\n  // Lightweight form of highlight -- proceed over this line and\n  // update state, but don't save a style array. Used for lines that\n  // aren't currently visible.\n  function processLine(cm, text, state, startAt) {\n    var mode = cm.doc.mode;\n    var stream = new StringStream(text, cm.options.tabSize);\n    stream.start = stream.pos = startAt || 0;\n    if (text == \"\") callBlankLine(mode, state);\n    while (!stream.eol() && stream.pos <= cm.options.maxHighlightLength) {\n      readToken(mode, stream, state);\n      stream.start = stream.pos;\n    }\n  }\n\n  // Convert a style as returned by a mode (either null, or a string\n  // containing one or more styles) to a CSS style. This is cached,\n  // and also looks for line-wide styles.\n  var styleToClassCache = {}, styleToClassCacheWithMode = {};\n  function interpretTokenStyle(style, options) {\n    if (!style || /^\\s*$/.test(style)) return null;\n    var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n    return cache[style] ||\n      (cache[style] = style.replace(/\\S+/g, \"cm-$&\"));\n  }\n\n  // Render the DOM representation of the text of a line. Also builds\n  // up a 'line map', which points at the DOM nodes that represent\n  // specific stretches of text, and is used by the measuring code.\n  // The returned object contains the DOM node, this map, and\n  // information about line-wide styles that were set by the mode.\n  function buildLineContent(cm, lineView) {\n    // The padding-right forces the element to have a 'border', which\n    // is needed on Webkit to be able to get line-level bounding\n    // rectangles for it (in measureChar).\n    var content = elt(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n    var builder = {pre: elt(\"pre\", [content]), content: content, col: 0, pos: 0, cm: cm};\n    lineView.measure = {};\n\n    // Iterate over the logical lines that make up this visual line.\n    for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n      var line = i ? lineView.rest[i - 1] : lineView.line, order;\n      builder.pos = 0;\n      builder.addToken = buildToken;\n      // Optionally wire in some hacks into the token-rendering\n      // algorithm, to deal with browser quirks.\n      if ((ie || webkit) && cm.getOption(\"lineWrapping\"))\n        builder.addToken = buildTokenSplitSpaces(builder.addToken);\n      if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line)))\n        builder.addToken = buildTokenBadBidi(builder.addToken, order);\n      builder.map = [];\n      var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n      insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n      if (line.styleClasses) {\n        if (line.styleClasses.bgClass)\n          builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n        if (line.styleClasses.textClass)\n          builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n      }\n\n      // Ensure at least a single node is present, for measuring.\n      if (builder.map.length == 0)\n        builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\n\n      // Store the map and a cache object for the current logical line\n      if (i == 0) {\n        lineView.measure.map = builder.map;\n        lineView.measure.cache = {};\n      } else {\n        (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);\n        (lineView.measure.caches || (lineView.measure.caches = [])).push({});\n      }\n    }\n\n    // See issue #2901\n    if (webkit && /\\bcm-tab\\b/.test(builder.content.lastChild.className))\n      builder.content.className = \"cm-tab-wrap-hack\";\n\n    signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n    if (builder.pre.className)\n      builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n\n    return builder;\n  }\n\n  function defaultSpecialCharPlaceholder(ch) {\n    var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n    token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n    token.setAttribute(\"aria-label\", token.title);\n    return token;\n  }\n\n  // Build up the DOM representation for a single token, and add it to\n  // the line map. Takes care to render special characters separately.\n  function buildToken(builder, text, style, startStyle, endStyle, title, css) {\n    if (!text) return;\n    var special = builder.cm.options.specialChars, mustWrap = false;\n    if (!special.test(text)) {\n      builder.col += text.length;\n      var content = document.createTextNode(text);\n      builder.map.push(builder.pos, builder.pos + text.length, content);\n      if (ie && ie_version < 9) mustWrap = true;\n      builder.pos += text.length;\n    } else {\n      var content = document.createDocumentFragment(), pos = 0;\n      while (true) {\n        special.lastIndex = pos;\n        var m = special.exec(text);\n        var skipped = m ? m.index - pos : text.length - pos;\n        if (skipped) {\n          var txt = document.createTextNode(text.slice(pos, pos + skipped));\n          if (ie && ie_version < 9) content.appendChild(elt(\"span\", [txt]));\n          else content.appendChild(txt);\n          builder.map.push(builder.pos, builder.pos + skipped, txt);\n          builder.col += skipped;\n          builder.pos += skipped;\n        }\n        if (!m) break;\n        pos += skipped + 1;\n        if (m[0] == \"\\t\") {\n          var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n          var txt = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n          txt.setAttribute(\"role\", \"presentation\");\n          txt.setAttribute(\"cm-text\", \"\\t\");\n          builder.col += tabWidth;\n        } else {\n          var txt = builder.cm.options.specialCharPlaceholder(m[0]);\n          txt.setAttribute(\"cm-text\", m[0]);\n          if (ie && ie_version < 9) content.appendChild(elt(\"span\", [txt]));\n          else content.appendChild(txt);\n          builder.col += 1;\n        }\n        builder.map.push(builder.pos, builder.pos + 1, txt);\n        builder.pos++;\n      }\n    }\n    if (style || startStyle || endStyle || mustWrap || css) {\n      var fullStyle = style || \"\";\n      if (startStyle) fullStyle += startStyle;\n      if (endStyle) fullStyle += endStyle;\n      var token = elt(\"span\", [content], fullStyle, css);\n      if (title) token.title = title;\n      return builder.content.appendChild(token);\n    }\n    builder.content.appendChild(content);\n  }\n\n  function buildTokenSplitSpaces(inner) {\n    function split(old) {\n      var out = \" \";\n      for (var i = 0; i < old.length - 2; ++i) out += i % 2 ? \" \" : \"\\u00a0\";\n      out += \" \";\n      return out;\n    }\n    return function(builder, text, style, startStyle, endStyle, title) {\n      inner(builder, text.replace(/ {3,}/g, split), style, startStyle, endStyle, title);\n    };\n  }\n\n  // Work around nonsense dimensions being reported for stretches of\n  // right-to-left text.\n  function buildTokenBadBidi(inner, order) {\n    return function(builder, text, style, startStyle, endStyle, title) {\n      style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n      var start = builder.pos, end = start + text.length;\n      for (;;) {\n        // Find the part that overlaps with the start of this text\n        for (var i = 0; i < order.length; i++) {\n          var part = order[i];\n          if (part.to > start && part.from <= start) break;\n        }\n        if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, title);\n        inner(builder, text.slice(0, part.to - start), style, startStyle, null, title);\n        startStyle = null;\n        text = text.slice(part.to - start);\n        start = part.to;\n      }\n    };\n  }\n\n  function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n    var widget = !ignoreWidget && marker.widgetNode;\n    if (widget) builder.map.push(builder.pos, builder.pos + size, widget);\n    if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n      if (!widget)\n        widget = builder.content.appendChild(document.createElement(\"span\"));\n      widget.setAttribute(\"cm-marker\", marker.id);\n    }\n    if (widget) {\n      builder.cm.display.input.setUneditable(widget);\n      builder.content.appendChild(widget);\n    }\n    builder.pos += size;\n  }\n\n  // Outputs a number of spans to make up a line, taking highlighting\n  // and marked text into account.\n  function insertLineContent(line, builder, styles) {\n    var spans = line.markedSpans, allText = line.text, at = 0;\n    if (!spans) {\n      for (var i = 1; i < styles.length; i+=2)\n        builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder.cm.options));\n      return;\n    }\n\n    var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n    var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed;\n    for (;;) {\n      if (nextChange == pos) { // Update current marker set\n        spanStyle = spanEndStyle = spanStartStyle = title = css = \"\";\n        collapsed = null; nextChange = Infinity;\n        var foundBookmarks = [];\n        for (var j = 0; j < spans.length; ++j) {\n          var sp = spans[j], m = sp.marker;\n          if (sp.from <= pos && (sp.to == null || sp.to > pos)) {\n            if (sp.to != null && nextChange > sp.to) { nextChange = sp.to; spanEndStyle = \"\"; }\n            if (m.className) spanStyle += \" \" + m.className;\n            if (m.css) css = m.css;\n            if (m.startStyle && sp.from == pos) spanStartStyle += \" \" + m.startStyle;\n            if (m.endStyle && sp.to == nextChange) spanEndStyle += \" \" + m.endStyle;\n            if (m.title && !title) title = m.title;\n            if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n              collapsed = sp;\n          } else if (sp.from > pos && nextChange > sp.from) {\n            nextChange = sp.from;\n          }\n          if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) foundBookmarks.push(m);\n        }\n        if (collapsed && (collapsed.from || 0) == pos) {\n          buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n                             collapsed.marker, collapsed.from == null);\n          if (collapsed.to == null) return;\n        }\n        if (!collapsed && foundBookmarks.length) for (var j = 0; j < foundBookmarks.length; ++j)\n          buildCollapsedSpan(builder, 0, foundBookmarks[j]);\n      }\n      if (pos >= len) break;\n\n      var upto = Math.min(len, nextChange);\n      while (true) {\n        if (text) {\n          var end = pos + text.length;\n          if (!collapsed) {\n            var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n            builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n                             spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", title, css);\n          }\n          if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;}\n          pos = end;\n          spanStartStyle = \"\";\n        }\n        text = allText.slice(at, at = styles[i++]);\n        style = interpretTokenStyle(styles[i++], builder.cm.options);\n      }\n    }\n  }\n\n  // DOCUMENT DATA STRUCTURE\n\n  // By default, updates that start and end at the beginning of a line\n  // are treated specially, in order to make the association of line\n  // widgets and marker elements with the text behave more intuitive.\n  function isWholeLineUpdate(doc, change) {\n    return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n      (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n  }\n\n  // Perform a change on the document data structure.\n  function updateDoc(doc, change, markedSpans, estimateHeight) {\n    function spansFor(n) {return markedSpans ? markedSpans[n] : null;}\n    function update(line, text, spans) {\n      updateLine(line, text, spans, estimateHeight);\n      signalLater(line, \"change\", line, change);\n    }\n    function linesFor(start, end) {\n      for (var i = start, result = []; i < end; ++i)\n        result.push(new Line(text[i], spansFor(i), estimateHeight));\n      return result;\n    }\n\n    var from = change.from, to = change.to, text = change.text;\n    var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n    var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n    // Adjust the line structure\n    if (change.full) {\n      doc.insert(0, linesFor(0, text.length));\n      doc.remove(text.length, doc.size - text.length);\n    } else if (isWholeLineUpdate(doc, change)) {\n      // This is a whole-line replace. Treated specially to make\n      // sure line objects move the way they are supposed to.\n      var added = linesFor(0, text.length - 1);\n      update(lastLine, lastLine.text, lastSpans);\n      if (nlines) doc.remove(from.line, nlines);\n      if (added.length) doc.insert(from.line, added);\n    } else if (firstLine == lastLine) {\n      if (text.length == 1) {\n        update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n      } else {\n        var added = linesFor(1, text.length - 1);\n        added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n        update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n        doc.insert(from.line + 1, added);\n      }\n    } else if (text.length == 1) {\n      update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n      doc.remove(from.line + 1, nlines);\n    } else {\n      update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n      update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n      var added = linesFor(1, text.length - 1);\n      if (nlines > 1) doc.remove(from.line + 1, nlines - 1);\n      doc.insert(from.line + 1, added);\n    }\n\n    signalLater(doc, \"change\", doc, change);\n  }\n\n  // The document is represented as a BTree consisting of leaves, with\n  // chunk of lines in them, and branches, with up to ten leaves or\n  // other branch nodes below them. The top node is always a branch\n  // node, and is the document object itself (meaning it has\n  // additional methods and properties).\n  //\n  // All nodes have parent links. The tree is used both to go from\n  // line numbers to line objects, and to go from objects to numbers.\n  // It also indexes by height, and is used to convert between height\n  // and line object, and to find the total height of the document.\n  //\n  // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n  function LeafChunk(lines) {\n    this.lines = lines;\n    this.parent = null;\n    for (var i = 0, height = 0; i < lines.length; ++i) {\n      lines[i].parent = this;\n      height += lines[i].height;\n    }\n    this.height = height;\n  }\n\n  LeafChunk.prototype = {\n    chunkSize: function() { return this.lines.length; },\n    // Remove the n lines at offset 'at'.\n    removeInner: function(at, n) {\n      for (var i = at, e = at + n; i < e; ++i) {\n        var line = this.lines[i];\n        this.height -= line.height;\n        cleanUpLine(line);\n        signalLater(line, \"delete\");\n      }\n      this.lines.splice(at, n);\n    },\n    // Helper used to collapse a small branch into a single leaf.\n    collapse: function(lines) {\n      lines.push.apply(lines, this.lines);\n    },\n    // Insert the given array of lines at offset 'at', count them as\n    // having the given height.\n    insertInner: function(at, lines, height) {\n      this.height += height;\n      this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n      for (var i = 0; i < lines.length; ++i) lines[i].parent = this;\n    },\n    // Used to iterate over a part of the tree.\n    iterN: function(at, n, op) {\n      for (var e = at + n; at < e; ++at)\n        if (op(this.lines[at])) return true;\n    }\n  };\n\n  function BranchChunk(children) {\n    this.children = children;\n    var size = 0, height = 0;\n    for (var i = 0; i < children.length; ++i) {\n      var ch = children[i];\n      size += ch.chunkSize(); height += ch.height;\n      ch.parent = this;\n    }\n    this.size = size;\n    this.height = height;\n    this.parent = null;\n  }\n\n  BranchChunk.prototype = {\n    chunkSize: function() { return this.size; },\n    removeInner: function(at, n) {\n      this.size -= n;\n      for (var i = 0; i < this.children.length; ++i) {\n        var child = this.children[i], sz = child.chunkSize();\n        if (at < sz) {\n          var rm = Math.min(n, sz - at), oldHeight = child.height;\n          child.removeInner(at, rm);\n          this.height -= oldHeight - child.height;\n          if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n          if ((n -= rm) == 0) break;\n          at = 0;\n        } else at -= sz;\n      }\n      // If the result is smaller than 25 lines, ensure that it is a\n      // single leaf node.\n      if (this.size - n < 25 &&\n          (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n        var lines = [];\n        this.collapse(lines);\n        this.children = [new LeafChunk(lines)];\n        this.children[0].parent = this;\n      }\n    },\n    collapse: function(lines) {\n      for (var i = 0; i < this.children.length; ++i) this.children[i].collapse(lines);\n    },\n    insertInner: function(at, lines, height) {\n      this.size += lines.length;\n      this.height += height;\n      for (var i = 0; i < this.children.length; ++i) {\n        var child = this.children[i], sz = child.chunkSize();\n        if (at <= sz) {\n          child.insertInner(at, lines, height);\n          if (child.lines && child.lines.length > 50) {\n            while (child.lines.length > 50) {\n              var spilled = child.lines.splice(child.lines.length - 25, 25);\n              var newleaf = new LeafChunk(spilled);\n              child.height -= newleaf.height;\n              this.children.splice(i + 1, 0, newleaf);\n              newleaf.parent = this;\n            }\n            this.maybeSpill();\n          }\n          break;\n        }\n        at -= sz;\n      }\n    },\n    // When a node has grown, check whether it should be split.\n    maybeSpill: function() {\n      if (this.children.length <= 10) return;\n      var me = this;\n      do {\n        var spilled = me.children.splice(me.children.length - 5, 5);\n        var sibling = new BranchChunk(spilled);\n        if (!me.parent) { // Become the parent node\n          var copy = new BranchChunk(me.children);\n          copy.parent = me;\n          me.children = [copy, sibling];\n          me = copy;\n        } else {\n          me.size -= sibling.size;\n          me.height -= sibling.height;\n          var myIndex = indexOf(me.parent.children, me);\n          me.parent.children.splice(myIndex + 1, 0, sibling);\n        }\n        sibling.parent = me.parent;\n      } while (me.children.length > 10);\n      me.parent.maybeSpill();\n    },\n    iterN: function(at, n, op) {\n      for (var i = 0; i < this.children.length; ++i) {\n        var child = this.children[i], sz = child.chunkSize();\n        if (at < sz) {\n          var used = Math.min(n, sz - at);\n          if (child.iterN(at, used, op)) return true;\n          if ((n -= used) == 0) break;\n          at = 0;\n        } else at -= sz;\n      }\n    }\n  };\n\n  var nextDocId = 0;\n  var Doc = CodeMirror.Doc = function(text, mode, firstLine) {\n    if (!(this instanceof Doc)) return new Doc(text, mode, firstLine);\n    if (firstLine == null) firstLine = 0;\n\n    BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n    this.first = firstLine;\n    this.scrollTop = this.scrollLeft = 0;\n    this.cantEdit = false;\n    this.cleanGeneration = 1;\n    this.frontier = firstLine;\n    var start = Pos(firstLine, 0);\n    this.sel = simpleSelection(start);\n    this.history = new History(null);\n    this.id = ++nextDocId;\n    this.modeOption = mode;\n\n    if (typeof text == \"string\") text = splitLines(text);\n    updateDoc(this, {from: start, to: start, text: text});\n    setSelection(this, simpleSelection(start), sel_dontScroll);\n  };\n\n  Doc.prototype = createObj(BranchChunk.prototype, {\n    constructor: Doc,\n    // Iterate over the document. Supports two forms -- with only one\n    // argument, it calls that for each line in the document. With\n    // three, it iterates over the range given by the first two (with\n    // the second being non-inclusive).\n    iter: function(from, to, op) {\n      if (op) this.iterN(from - this.first, to - from, op);\n      else this.iterN(this.first, this.first + this.size, from);\n    },\n\n    // Non-public interface for adding and removing lines.\n    insert: function(at, lines) {\n      var height = 0;\n      for (var i = 0; i < lines.length; ++i) height += lines[i].height;\n      this.insertInner(at - this.first, lines, height);\n    },\n    remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n    // From here, the methods are part of the public interface. Most\n    // are also available from CodeMirror (editor) instances.\n\n    getValue: function(lineSep) {\n      var lines = getLines(this, this.first, this.first + this.size);\n      if (lineSep === false) return lines;\n      return lines.join(lineSep || \"\\n\");\n    },\n    setValue: docMethodOp(function(code) {\n      var top = Pos(this.first, 0), last = this.first + this.size - 1;\n      makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n                        text: splitLines(code), origin: \"setValue\", full: true}, true);\n      setSelection(this, simpleSelection(top));\n    }),\n    replaceRange: function(code, from, to, origin) {\n      from = clipPos(this, from);\n      to = to ? clipPos(this, to) : from;\n      replaceRange(this, code, from, to, origin);\n    },\n    getRange: function(from, to, lineSep) {\n      var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n      if (lineSep === false) return lines;\n      return lines.join(lineSep || \"\\n\");\n    },\n\n    getLine: function(line) {var l = this.getLineHandle(line); return l && l.text;},\n\n    getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line);},\n    getLineNumber: function(line) {return lineNo(line);},\n\n    getLineHandleVisualStart: function(line) {\n      if (typeof line == \"number\") line = getLine(this, line);\n      return visualLine(line);\n    },\n\n    lineCount: function() {return this.size;},\n    firstLine: function() {return this.first;},\n    lastLine: function() {return this.first + this.size - 1;},\n\n    clipPos: function(pos) {return clipPos(this, pos);},\n\n    getCursor: function(start) {\n      var range = this.sel.primary(), pos;\n      if (start == null || start == \"head\") pos = range.head;\n      else if (start == \"anchor\") pos = range.anchor;\n      else if (start == \"end\" || start == \"to\" || start === false) pos = range.to();\n      else pos = range.from();\n      return pos;\n    },\n    listSelections: function() { return this.sel.ranges; },\n    somethingSelected: function() {return this.sel.somethingSelected();},\n\n    setCursor: docMethodOp(function(line, ch, options) {\n      setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n    }),\n    setSelection: docMethodOp(function(anchor, head, options) {\n      setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n    }),\n    extendSelection: docMethodOp(function(head, other, options) {\n      extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n    }),\n    extendSelections: docMethodOp(function(heads, options) {\n      extendSelections(this, clipPosArray(this, heads, options));\n    }),\n    extendSelectionsBy: docMethodOp(function(f, options) {\n      extendSelections(this, map(this.sel.ranges, f), options);\n    }),\n    setSelections: docMethodOp(function(ranges, primary, options) {\n      if (!ranges.length) return;\n      for (var i = 0, out = []; i < ranges.length; i++)\n        out[i] = new Range(clipPos(this, ranges[i].anchor),\n                           clipPos(this, ranges[i].head));\n      if (primary == null) primary = Math.min(ranges.length - 1, this.sel.primIndex);\n      setSelection(this, normalizeSelection(out, primary), options);\n    }),\n    addSelection: docMethodOp(function(anchor, head, options) {\n      var ranges = this.sel.ranges.slice(0);\n      ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n      setSelection(this, normalizeSelection(ranges, ranges.length - 1), options);\n    }),\n\n    getSelection: function(lineSep) {\n      var ranges = this.sel.ranges, lines;\n      for (var i = 0; i < ranges.length; i++) {\n        var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n        lines = lines ? lines.concat(sel) : sel;\n      }\n      if (lineSep === false) return lines;\n      else return lines.join(lineSep || \"\\n\");\n    },\n    getSelections: function(lineSep) {\n      var parts = [], ranges = this.sel.ranges;\n      for (var i = 0; i < ranges.length; i++) {\n        var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n        if (lineSep !== false) sel = sel.join(lineSep || \"\\n\");\n        parts[i] = sel;\n      }\n      return parts;\n    },\n    replaceSelection: function(code, collapse, origin) {\n      var dup = [];\n      for (var i = 0; i < this.sel.ranges.length; i++)\n        dup[i] = code;\n      this.replaceSelections(dup, collapse, origin || \"+input\");\n    },\n    replaceSelections: docMethodOp(function(code, collapse, origin) {\n      var changes = [], sel = this.sel;\n      for (var i = 0; i < sel.ranges.length; i++) {\n        var range = sel.ranges[i];\n        changes[i] = {from: range.from(), to: range.to(), text: splitLines(code[i]), origin: origin};\n      }\n      var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n      for (var i = changes.length - 1; i >= 0; i--)\n        makeChange(this, changes[i]);\n      if (newSel) setSelectionReplaceHistory(this, newSel);\n      else if (this.cm) ensureCursorVisible(this.cm);\n    }),\n    undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n    redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n    undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n    redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n    setExtending: function(val) {this.extend = val;},\n    getExtending: function() {return this.extend;},\n\n    historySize: function() {\n      var hist = this.history, done = 0, undone = 0;\n      for (var i = 0; i < hist.done.length; i++) if (!hist.done[i].ranges) ++done;\n      for (var i = 0; i < hist.undone.length; i++) if (!hist.undone[i].ranges) ++undone;\n      return {undo: done, redo: undone};\n    },\n    clearHistory: function() {this.history = new History(this.history.maxGeneration);},\n\n    markClean: function() {\n      this.cleanGeneration = this.changeGeneration(true);\n    },\n    changeGeneration: function(forceSplit) {\n      if (forceSplit)\n        this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;\n      return this.history.generation;\n    },\n    isClean: function (gen) {\n      return this.history.generation == (gen || this.cleanGeneration);\n    },\n\n    getHistory: function() {\n      return {done: copyHistoryArray(this.history.done),\n              undone: copyHistoryArray(this.history.undone)};\n    },\n    setHistory: function(histData) {\n      var hist = this.history = new History(this.history.maxGeneration);\n      hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n      hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n    },\n\n    addLineClass: docMethodOp(function(handle, where, cls) {\n      return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function(line) {\n        var prop = where == \"text\" ? \"textClass\"\n                 : where == \"background\" ? \"bgClass\"\n                 : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n        if (!line[prop]) line[prop] = cls;\n        else if (classTest(cls).test(line[prop])) return false;\n        else line[prop] += \" \" + cls;\n        return true;\n      });\n    }),\n    removeLineClass: docMethodOp(function(handle, where, cls) {\n      return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function(line) {\n        var prop = where == \"text\" ? \"textClass\"\n                 : where == \"background\" ? \"bgClass\"\n                 : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n        var cur = line[prop];\n        if (!cur) return false;\n        else if (cls == null) line[prop] = null;\n        else {\n          var found = cur.match(classTest(cls));\n          if (!found) return false;\n          var end = found.index + found[0].length;\n          line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n        }\n        return true;\n      });\n    }),\n\n    markText: function(from, to, options) {\n      return markText(this, clipPos(this, from), clipPos(this, to), options, \"range\");\n    },\n    setBookmark: function(pos, options) {\n      var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n                      insertLeft: options && options.insertLeft,\n                      clearWhenEmpty: false, shared: options && options.shared};\n      pos = clipPos(this, pos);\n      return markText(this, pos, pos, realOpts, \"bookmark\");\n    },\n    findMarksAt: function(pos) {\n      pos = clipPos(this, pos);\n      var markers = [], spans = getLine(this, pos.line).markedSpans;\n      if (spans) for (var i = 0; i < spans.length; ++i) {\n        var span = spans[i];\n        if ((span.from == null || span.from <= pos.ch) &&\n            (span.to == null || span.to >= pos.ch))\n          markers.push(span.marker.parent || span.marker);\n      }\n      return markers;\n    },\n    findMarks: function(from, to, filter) {\n      from = clipPos(this, from); to = clipPos(this, to);\n      var found = [], lineNo = from.line;\n      this.iter(from.line, to.line + 1, function(line) {\n        var spans = line.markedSpans;\n        if (spans) for (var i = 0; i < spans.length; i++) {\n          var span = spans[i];\n          if (!(lineNo == from.line && from.ch > span.to ||\n                span.from == null && lineNo != from.line||\n                lineNo == to.line && span.from > to.ch) &&\n              (!filter || filter(span.marker)))\n            found.push(span.marker.parent || span.marker);\n        }\n        ++lineNo;\n      });\n      return found;\n    },\n    getAllMarks: function() {\n      var markers = [];\n      this.iter(function(line) {\n        var sps = line.markedSpans;\n        if (sps) for (var i = 0; i < sps.length; ++i)\n          if (sps[i].from != null) markers.push(sps[i].marker);\n      });\n      return markers;\n    },\n\n    posFromIndex: function(off) {\n      var ch, lineNo = this.first;\n      this.iter(function(line) {\n        var sz = line.text.length + 1;\n        if (sz > off) { ch = off; return true; }\n        off -= sz;\n        ++lineNo;\n      });\n      return clipPos(this, Pos(lineNo, ch));\n    },\n    indexFromPos: function (coords) {\n      coords = clipPos(this, coords);\n      var index = coords.ch;\n      if (coords.line < this.first || coords.ch < 0) return 0;\n      this.iter(this.first, coords.line, function (line) {\n        index += line.text.length + 1;\n      });\n      return index;\n    },\n\n    copy: function(copyHistory) {\n      var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first);\n      doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n      doc.sel = this.sel;\n      doc.extend = false;\n      if (copyHistory) {\n        doc.history.undoDepth = this.history.undoDepth;\n        doc.setHistory(this.getHistory());\n      }\n      return doc;\n    },\n\n    linkedDoc: function(options) {\n      if (!options) options = {};\n      var from = this.first, to = this.first + this.size;\n      if (options.from != null && options.from > from) from = options.from;\n      if (options.to != null && options.to < to) to = options.to;\n      var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from);\n      if (options.sharedHist) copy.history = this.history;\n      (this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n      copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n      copySharedMarkers(copy, findSharedMarkers(this));\n      return copy;\n    },\n    unlinkDoc: function(other) {\n      if (other instanceof CodeMirror) other = other.doc;\n      if (this.linked) for (var i = 0; i < this.linked.length; ++i) {\n        var link = this.linked[i];\n        if (link.doc != other) continue;\n        this.linked.splice(i, 1);\n        other.unlinkDoc(this);\n        detachSharedMarkers(findSharedMarkers(this));\n        break;\n      }\n      // If the histories were shared, split them again\n      if (other.history == this.history) {\n        var splitIds = [other.id];\n        linkedDocs(other, function(doc) {splitIds.push(doc.id);}, true);\n        other.history = new History(null);\n        other.history.done = copyHistoryArray(this.history.done, splitIds);\n        other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n      }\n    },\n    iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n    getMode: function() {return this.mode;},\n    getEditor: function() {return this.cm;}\n  });\n\n  // Public alias.\n  Doc.prototype.eachLine = Doc.prototype.iter;\n\n  // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n  var dontDelegate = \"iter insert remove copy getEditor\".split(\" \");\n  for (var prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n    CodeMirror.prototype[prop] = (function(method) {\n      return function() {return method.apply(this.doc, arguments);};\n    })(Doc.prototype[prop]);\n\n  eventMixin(Doc);\n\n  // Call f for all linked documents.\n  function linkedDocs(doc, f, sharedHistOnly) {\n    function propagate(doc, skip, sharedHist) {\n      if (doc.linked) for (var i = 0; i < doc.linked.length; ++i) {\n        var rel = doc.linked[i];\n        if (rel.doc == skip) continue;\n        var shared = sharedHist && rel.sharedHist;\n        if (sharedHistOnly && !shared) continue;\n        f(rel.doc, shared);\n        propagate(rel.doc, doc, shared);\n      }\n    }\n    propagate(doc, null, true);\n  }\n\n  // Attach a document to an editor.\n  function attachDoc(cm, doc) {\n    if (doc.cm) throw new Error(\"This document is already in use.\");\n    cm.doc = doc;\n    doc.cm = cm;\n    estimateLineHeights(cm);\n    loadMode(cm);\n    if (!cm.options.lineWrapping) findMaxLine(cm);\n    cm.options.mode = doc.modeOption;\n    regChange(cm);\n  }\n\n  // LINE UTILITIES\n\n  // Find the line object corresponding to the given line number.\n  function getLine(doc, n) {\n    n -= doc.first;\n    if (n < 0 || n >= doc.size) throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\");\n    for (var chunk = doc; !chunk.lines;) {\n      for (var i = 0;; ++i) {\n        var child = chunk.children[i], sz = child.chunkSize();\n        if (n < sz) { chunk = child; break; }\n        n -= sz;\n      }\n    }\n    return chunk.lines[n];\n  }\n\n  // Get the part of a document between two positions, as an array of\n  // strings.\n  function getBetween(doc, start, end) {\n    var out = [], n = start.line;\n    doc.iter(start.line, end.line + 1, function(line) {\n      var text = line.text;\n      if (n == end.line) text = text.slice(0, end.ch);\n      if (n == start.line) text = text.slice(start.ch);\n      out.push(text);\n      ++n;\n    });\n    return out;\n  }\n  // Get the lines between from and to, as array of strings.\n  function getLines(doc, from, to) {\n    var out = [];\n    doc.iter(from, to, function(line) { out.push(line.text); });\n    return out;\n  }\n\n  // Update the height of a line, propagating the height change\n  // upwards to parent nodes.\n  function updateLineHeight(line, height) {\n    var diff = height - line.height;\n    if (diff) for (var n = line; n; n = n.parent) n.height += diff;\n  }\n\n  // Given a line object, find its line number by walking up through\n  // its parent links.\n  function lineNo(line) {\n    if (line.parent == null) return null;\n    var cur = line.parent, no = indexOf(cur.lines, line);\n    for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n      for (var i = 0;; ++i) {\n        if (chunk.children[i] == cur) break;\n        no += chunk.children[i].chunkSize();\n      }\n    }\n    return no + cur.first;\n  }\n\n  // Find the line at the given vertical position, using the height\n  // information in the document tree.\n  function lineAtHeight(chunk, h) {\n    var n = chunk.first;\n    outer: do {\n      for (var i = 0; i < chunk.children.length; ++i) {\n        var child = chunk.children[i], ch = child.height;\n        if (h < ch) { chunk = child; continue outer; }\n        h -= ch;\n        n += child.chunkSize();\n      }\n      return n;\n    } while (!chunk.lines);\n    for (var i = 0; i < chunk.lines.length; ++i) {\n      var line = chunk.lines[i], lh = line.height;\n      if (h < lh) break;\n      h -= lh;\n    }\n    return n + i;\n  }\n\n\n  // Find the height above the given line.\n  function heightAtLine(lineObj) {\n    lineObj = visualLine(lineObj);\n\n    var h = 0, chunk = lineObj.parent;\n    for (var i = 0; i < chunk.lines.length; ++i) {\n      var line = chunk.lines[i];\n      if (line == lineObj) break;\n      else h += line.height;\n    }\n    for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n      for (var i = 0; i < p.children.length; ++i) {\n        var cur = p.children[i];\n        if (cur == chunk) break;\n        else h += cur.height;\n      }\n    }\n    return h;\n  }\n\n  // Get the bidi ordering for the given line (and cache it). Returns\n  // false for lines that are fully left-to-right, and an array of\n  // BidiSpan objects otherwise.\n  function getOrder(line) {\n    var order = line.order;\n    if (order == null) order = line.order = bidiOrdering(line.text);\n    return order;\n  }\n\n  // HISTORY\n\n  function History(startGen) {\n    // Arrays of change events and selections. Doing something adds an\n    // event to done and clears undo. Undoing moves events from done\n    // to undone, redoing moves them in the other direction.\n    this.done = []; this.undone = [];\n    this.undoDepth = Infinity;\n    // Used to track when changes can be merged into a single undo\n    // event\n    this.lastModTime = this.lastSelTime = 0;\n    this.lastOp = this.lastSelOp = null;\n    this.lastOrigin = this.lastSelOrigin = null;\n    // Used by the isClean() method\n    this.generation = this.maxGeneration = startGen || 1;\n  }\n\n  // Create a history change event from an updateDoc-style change\n  // object.\n  function historyChangeFromChange(doc, change) {\n    var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n    attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n    linkedDocs(doc, function(doc) {attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);}, true);\n    return histChange;\n  }\n\n  // Pop all selection events off the end of a history array. Stop at\n  // a change event.\n  function clearSelectionEvents(array) {\n    while (array.length) {\n      var last = lst(array);\n      if (last.ranges) array.pop();\n      else break;\n    }\n  }\n\n  // Find the top change event in the history. Pop off selection\n  // events that are in the way.\n  function lastChangeEvent(hist, force) {\n    if (force) {\n      clearSelectionEvents(hist.done);\n      return lst(hist.done);\n    } else if (hist.done.length && !lst(hist.done).ranges) {\n      return lst(hist.done);\n    } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n      hist.done.pop();\n      return lst(hist.done);\n    }\n  }\n\n  // Register a change in the history. Merges changes that are within\n  // a single operation, ore are close together with an origin that\n  // allows merging (starting with \"+\") into a single event.\n  function addChangeToHistory(doc, change, selAfter, opId) {\n    var hist = doc.history;\n    hist.undone.length = 0;\n    var time = +new Date, cur;\n\n    if ((hist.lastOp == opId ||\n         hist.lastOrigin == change.origin && change.origin &&\n         ((change.origin.charAt(0) == \"+\" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) ||\n          change.origin.charAt(0) == \"*\")) &&\n        (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n      // Merge this change into the last event\n      var last = lst(cur.changes);\n      if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n        // Optimized case for simple insertion -- don't want to add\n        // new changesets for every character typed\n        last.to = changeEnd(change);\n      } else {\n        // Add new sub-event\n        cur.changes.push(historyChangeFromChange(doc, change));\n      }\n    } else {\n      // Can not be merged, start a new event.\n      var before = lst(hist.done);\n      if (!before || !before.ranges)\n        pushSelectionToHistory(doc.sel, hist.done);\n      cur = {changes: [historyChangeFromChange(doc, change)],\n             generation: hist.generation};\n      hist.done.push(cur);\n      while (hist.done.length > hist.undoDepth) {\n        hist.done.shift();\n        if (!hist.done[0].ranges) hist.done.shift();\n      }\n    }\n    hist.done.push(selAfter);\n    hist.generation = ++hist.maxGeneration;\n    hist.lastModTime = hist.lastSelTime = time;\n    hist.lastOp = hist.lastSelOp = opId;\n    hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n    if (!last) signal(doc, \"historyAdded\");\n  }\n\n  function selectionEventCanBeMerged(doc, origin, prev, sel) {\n    var ch = origin.charAt(0);\n    return ch == \"*\" ||\n      ch == \"+\" &&\n      prev.ranges.length == sel.ranges.length &&\n      prev.somethingSelected() == sel.somethingSelected() &&\n      new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);\n  }\n\n  // Called whenever the selection changes, sets the new selection as\n  // the pending selection in the history, and pushes the old pending\n  // selection into the 'done' array when it was significantly\n  // different (in number of selected ranges, emptiness, or time).\n  function addSelectionToHistory(doc, sel, opId, options) {\n    var hist = doc.history, origin = options && options.origin;\n\n    // A new event is started when the previous origin does not match\n    // the current, or the origins don't allow matching. Origins\n    // starting with * are always merged, those starting with + are\n    // merged when similar and close together in time.\n    if (opId == hist.lastSelOp ||\n        (origin && hist.lastSelOrigin == origin &&\n         (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n          selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n      hist.done[hist.done.length - 1] = sel;\n    else\n      pushSelectionToHistory(sel, hist.done);\n\n    hist.lastSelTime = +new Date;\n    hist.lastSelOrigin = origin;\n    hist.lastSelOp = opId;\n    if (options && options.clearRedo !== false)\n      clearSelectionEvents(hist.undone);\n  }\n\n  function pushSelectionToHistory(sel, dest) {\n    var top = lst(dest);\n    if (!(top && top.ranges && top.equals(sel)))\n      dest.push(sel);\n  }\n\n  // Used to store marked span information in the history.\n  function attachLocalSpans(doc, change, from, to) {\n    var existing = change[\"spans_\" + doc.id], n = 0;\n    doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) {\n      if (line.markedSpans)\n        (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans;\n      ++n;\n    });\n  }\n\n  // When un/re-doing restores text containing marked spans, those\n  // that have been explicitly cleared should not be restored.\n  function removeClearedSpans(spans) {\n    if (!spans) return null;\n    for (var i = 0, out; i < spans.length; ++i) {\n      if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i); }\n      else if (out) out.push(spans[i]);\n    }\n    return !out ? spans : out.length ? out : null;\n  }\n\n  // Retrieve and filter the old marked spans stored in a change event.\n  function getOldSpans(doc, change) {\n    var found = change[\"spans_\" + doc.id];\n    if (!found) return null;\n    for (var i = 0, nw = []; i < change.text.length; ++i)\n      nw.push(removeClearedSpans(found[i]));\n    return nw;\n  }\n\n  // Used both to provide a JSON-safe object in .getHistory, and, when\n  // detaching a document, to split the history in two\n  function copyHistoryArray(events, newGroup, instantiateSel) {\n    for (var i = 0, copy = []; i < events.length; ++i) {\n      var event = events[i];\n      if (event.ranges) {\n        copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n        continue;\n      }\n      var changes = event.changes, newChanges = [];\n      copy.push({changes: newChanges});\n      for (var j = 0; j < changes.length; ++j) {\n        var change = changes[j], m;\n        newChanges.push({from: change.from, to: change.to, text: change.text});\n        if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\\d+)$/)) {\n          if (indexOf(newGroup, Number(m[1])) > -1) {\n            lst(newChanges)[prop] = change[prop];\n            delete change[prop];\n          }\n        }\n      }\n    }\n    return copy;\n  }\n\n  // Rebasing/resetting history to deal with externally-sourced changes\n\n  function rebaseHistSelSingle(pos, from, to, diff) {\n    if (to < pos.line) {\n      pos.line += diff;\n    } else if (from < pos.line) {\n      pos.line = from;\n      pos.ch = 0;\n    }\n  }\n\n  // Tries to rebase an array of history events given a change in the\n  // document. If the change touches the same lines as the event, the\n  // event, and everything 'behind' it, is discarded. If the change is\n  // before the event, the event's positions are updated. Uses a\n  // copy-on-write scheme for the positions, to avoid having to\n  // reallocate them all on every rebase, but also avoid problems with\n  // shared position objects being unsafely updated.\n  function rebaseHistArray(array, from, to, diff) {\n    for (var i = 0; i < array.length; ++i) {\n      var sub = array[i], ok = true;\n      if (sub.ranges) {\n        if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n        for (var j = 0; j < sub.ranges.length; j++) {\n          rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n          rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n        }\n        continue;\n      }\n      for (var j = 0; j < sub.changes.length; ++j) {\n        var cur = sub.changes[j];\n        if (to < cur.from.line) {\n          cur.from = Pos(cur.from.line + diff, cur.from.ch);\n          cur.to = Pos(cur.to.line + diff, cur.to.ch);\n        } else if (from <= cur.to.line) {\n          ok = false;\n          break;\n        }\n      }\n      if (!ok) {\n        array.splice(0, i + 1);\n        i = 0;\n      }\n    }\n  }\n\n  function rebaseHist(hist, change) {\n    var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n    rebaseHistArray(hist.done, from, to, diff);\n    rebaseHistArray(hist.undone, from, to, diff);\n  }\n\n  // EVENT UTILITIES\n\n  // Due to the fact that we still support jurassic IE versions, some\n  // compatibility wrappers are needed.\n\n  var e_preventDefault = CodeMirror.e_preventDefault = function(e) {\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n  };\n  var e_stopPropagation = CodeMirror.e_stopPropagation = function(e) {\n    if (e.stopPropagation) e.stopPropagation();\n    else e.cancelBubble = true;\n  };\n  function e_defaultPrevented(e) {\n    return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;\n  }\n  var e_stop = CodeMirror.e_stop = function(e) {e_preventDefault(e); e_stopPropagation(e);};\n\n  function e_target(e) {return e.target || e.srcElement;}\n  function e_button(e) {\n    var b = e.which;\n    if (b == null) {\n      if (e.button & 1) b = 1;\n      else if (e.button & 2) b = 3;\n      else if (e.button & 4) b = 2;\n    }\n    if (mac && e.ctrlKey && b == 1) b = 3;\n    return b;\n  }\n\n  // EVENT HANDLING\n\n  // Lightweight event framework. on/off also work on DOM nodes,\n  // registering native DOM handlers.\n\n  var on = CodeMirror.on = function(emitter, type, f) {\n    if (emitter.addEventListener)\n      emitter.addEventListener(type, f, false);\n    else if (emitter.attachEvent)\n      emitter.attachEvent(\"on\" + type, f);\n    else {\n      var map = emitter._handlers || (emitter._handlers = {});\n      var arr = map[type] || (map[type] = []);\n      arr.push(f);\n    }\n  };\n\n  var off = CodeMirror.off = function(emitter, type, f) {\n    if (emitter.removeEventListener)\n      emitter.removeEventListener(type, f, false);\n    else if (emitter.detachEvent)\n      emitter.detachEvent(\"on\" + type, f);\n    else {\n      var arr = emitter._handlers && emitter._handlers[type];\n      if (!arr) return;\n      for (var i = 0; i < arr.length; ++i)\n        if (arr[i] == f) { arr.splice(i, 1); break; }\n    }\n  };\n\n  var signal = CodeMirror.signal = function(emitter, type /*, values...*/) {\n    var arr = emitter._handlers && emitter._handlers[type];\n    if (!arr) return;\n    var args = Array.prototype.slice.call(arguments, 2);\n    for (var i = 0; i < arr.length; ++i) arr[i].apply(null, args);\n  };\n\n  var orphanDelayedCallbacks = null;\n\n  // Often, we want to signal events at a point where we are in the\n  // middle of some work, but don't want the handler to start calling\n  // other methods on the editor, which might be in an inconsistent\n  // state or simply not expect any other events to happen.\n  // signalLater looks whether there are any handlers, and schedules\n  // them to be executed when the last operation ends, or, if no\n  // operation is active, when a timeout fires.\n  function signalLater(emitter, type /*, values...*/) {\n    var arr = emitter._handlers && emitter._handlers[type];\n    if (!arr) return;\n    var args = Array.prototype.slice.call(arguments, 2), list;\n    if (operationGroup) {\n      list = operationGroup.delayedCallbacks;\n    } else if (orphanDelayedCallbacks) {\n      list = orphanDelayedCallbacks;\n    } else {\n      list = orphanDelayedCallbacks = [];\n      setTimeout(fireOrphanDelayed, 0);\n    }\n    function bnd(f) {return function(){f.apply(null, args);};};\n    for (var i = 0; i < arr.length; ++i)\n      list.push(bnd(arr[i]));\n  }\n\n  function fireOrphanDelayed() {\n    var delayed = orphanDelayedCallbacks;\n    orphanDelayedCallbacks = null;\n    for (var i = 0; i < delayed.length; ++i) delayed[i]();\n  }\n\n  // The DOM events that CodeMirror handles can be overridden by\n  // registering a (non-DOM) handler on the editor for the event name,\n  // and preventDefault-ing the event in that handler.\n  function signalDOMEvent(cm, e, override) {\n    if (typeof e == \"string\")\n      e = {type: e, preventDefault: function() { this.defaultPrevented = true; }};\n    signal(cm, override || e.type, cm, e);\n    return e_defaultPrevented(e) || e.codemirrorIgnore;\n  }\n\n  function signalCursorActivity(cm) {\n    var arr = cm._handlers && cm._handlers.cursorActivity;\n    if (!arr) return;\n    var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n    for (var i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1)\n      set.push(arr[i]);\n  }\n\n  function hasHandler(emitter, type) {\n    var arr = emitter._handlers && emitter._handlers[type];\n    return arr && arr.length > 0;\n  }\n\n  // Add on and off methods to a constructor's prototype, to make\n  // registering events on such objects more convenient.\n  function eventMixin(ctor) {\n    ctor.prototype.on = function(type, f) {on(this, type, f);};\n    ctor.prototype.off = function(type, f) {off(this, type, f);};\n  }\n\n  // MISC UTILITIES\n\n  // Number of pixels added to scroller and sizer to hide scrollbar\n  var scrollerGap = 30;\n\n  // Returned or thrown by various protocols to signal 'I'm not\n  // handling this'.\n  var Pass = CodeMirror.Pass = {toString: function(){return \"CodeMirror.Pass\";}};\n\n  // Reused option objects for setSelection & friends\n  var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n  function Delayed() {this.id = null;}\n  Delayed.prototype.set = function(ms, f) {\n    clearTimeout(this.id);\n    this.id = setTimeout(f, ms);\n  };\n\n  // Counts the column offset in a string, taking tabs into account.\n  // Used mostly to find indentation.\n  var countColumn = CodeMirror.countColumn = function(string, end, tabSize, startIndex, startValue) {\n    if (end == null) {\n      end = string.search(/[^\\s\\u00a0]/);\n      if (end == -1) end = string.length;\n    }\n    for (var i = startIndex || 0, n = startValue || 0;;) {\n      var nextTab = string.indexOf(\"\\t\", i);\n      if (nextTab < 0 || nextTab >= end)\n        return n + (end - i);\n      n += nextTab - i;\n      n += tabSize - (n % tabSize);\n      i = nextTab + 1;\n    }\n  };\n\n  // The inverse of countColumn -- find the offset that corresponds to\n  // a particular column.\n  function findColumn(string, goal, tabSize) {\n    for (var pos = 0, col = 0;;) {\n      var nextTab = string.indexOf(\"\\t\", pos);\n      if (nextTab == -1) nextTab = string.length;\n      var skipped = nextTab - pos;\n      if (nextTab == string.length || col + skipped >= goal)\n        return pos + Math.min(skipped, goal - col);\n      col += nextTab - pos;\n      col += tabSize - (col % tabSize);\n      pos = nextTab + 1;\n      if (col >= goal) return pos;\n    }\n  }\n\n  var spaceStrs = [\"\"];\n  function spaceStr(n) {\n    while (spaceStrs.length <= n)\n      spaceStrs.push(lst(spaceStrs) + \" \");\n    return spaceStrs[n];\n  }\n\n  function lst(arr) { return arr[arr.length-1]; }\n\n  var selectInput = function(node) { node.select(); };\n  if (ios) // Mobile Safari apparently has a bug where select() is broken.\n    selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; };\n  else if (ie) // Suppress mysterious IE10 errors\n    selectInput = function(node) { try { node.select(); } catch(_e) {} };\n\n  function indexOf(array, elt) {\n    for (var i = 0; i < array.length; ++i)\n      if (array[i] == elt) return i;\n    return -1;\n  }\n  function map(array, f) {\n    var out = [];\n    for (var i = 0; i < array.length; i++) out[i] = f(array[i], i);\n    return out;\n  }\n\n  function nothing() {}\n\n  function createObj(base, props) {\n    var inst;\n    if (Object.create) {\n      inst = Object.create(base);\n    } else {\n      nothing.prototype = base;\n      inst = new nothing();\n    }\n    if (props) copyObj(props, inst);\n    return inst;\n  };\n\n  function copyObj(obj, target, overwrite) {\n    if (!target) target = {};\n    for (var prop in obj)\n      if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n        target[prop] = obj[prop];\n    return target;\n  }\n\n  function bind(f) {\n    var args = Array.prototype.slice.call(arguments, 1);\n    return function(){return f.apply(null, args);};\n  }\n\n  var nonASCIISingleCaseWordChar = /[\\u00df\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n  var isWordCharBasic = CodeMirror.isWordChar = function(ch) {\n    return /\\w/.test(ch) || ch > \"\\x80\" &&\n      (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));\n  };\n  function isWordChar(ch, helper) {\n    if (!helper) return isWordCharBasic(ch);\n    if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) return true;\n    return helper.test(ch);\n  }\n\n  function isEmpty(obj) {\n    for (var n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false;\n    return true;\n  }\n\n  // Extending unicode characters. A series of a non-extending char +\n  // any number of extending chars is treated as a single unit as far\n  // as editing and measuring is concerned. This is not fully correct,\n  // since some scripts/fonts/browsers also treat other configurations\n  // of code points as a group.\n  var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n  function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); }\n\n  // DOM UTILITIES\n\n  function elt(tag, content, className, style) {\n    var e = document.createElement(tag);\n    if (className) e.className = className;\n    if (style) e.style.cssText = style;\n    if (typeof content == \"string\") e.appendChild(document.createTextNode(content));\n    else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]);\n    return e;\n  }\n\n  var range;\n  if (document.createRange) range = function(node, start, end, endNode) {\n    var r = document.createRange();\n    r.setEnd(endNode || node, end);\n    r.setStart(node, start);\n    return r;\n  };\n  else range = function(node, start, end) {\n    var r = document.body.createTextRange();\n    try { r.moveToElementText(node.parentNode); }\n    catch(e) { return r; }\n    r.collapse(true);\n    r.moveEnd(\"character\", end);\n    r.moveStart(\"character\", start);\n    return r;\n  };\n\n  function removeChildren(e) {\n    for (var count = e.childNodes.length; count > 0; --count)\n      e.removeChild(e.firstChild);\n    return e;\n  }\n\n  function removeChildrenAndAdd(parent, e) {\n    return removeChildren(parent).appendChild(e);\n  }\n\n  var contains = CodeMirror.contains = function(parent, child) {\n    if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n      child = child.parentNode;\n    if (parent.contains)\n      return parent.contains(child);\n    do {\n      if (child.nodeType == 11) child = child.host;\n      if (child == parent) return true;\n    } while (child = child.parentNode);\n  };\n\n  function activeElt() { return document.activeElement; }\n  // Older versions of IE throws unspecified error when touching\n  // document.activeElement in some cases (during loading, in iframe)\n  if (ie && ie_version < 11) activeElt = function() {\n    try { return document.activeElement; }\n    catch(e) { return document.body; }\n  };\n\n  function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\"); }\n  var rmClass = CodeMirror.rmClass = function(node, cls) {\n    var current = node.className;\n    var match = classTest(cls).exec(current);\n    if (match) {\n      var after = current.slice(match.index + match[0].length);\n      node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n    }\n  };\n  var addClass = CodeMirror.addClass = function(node, cls) {\n    var current = node.className;\n    if (!classTest(cls).test(current)) node.className += (current ? \" \" : \"\") + cls;\n  };\n  function joinClasses(a, b) {\n    var as = a.split(\" \");\n    for (var i = 0; i < as.length; i++)\n      if (as[i] && !classTest(as[i]).test(b)) b += \" \" + as[i];\n    return b;\n  }\n\n  // WINDOW-WIDE EVENTS\n\n  // These must be handled carefully, because naively registering a\n  // handler for each editor will cause the editors to never be\n  // garbage collected.\n\n  function forEachCodeMirror(f) {\n    if (!document.body.getElementsByClassName) return;\n    var byClass = document.body.getElementsByClassName(\"CodeMirror\");\n    for (var i = 0; i < byClass.length; i++) {\n      var cm = byClass[i].CodeMirror;\n      if (cm) f(cm);\n    }\n  }\n\n  var globalsRegistered = false;\n  function ensureGlobalHandlers() {\n    if (globalsRegistered) return;\n    registerGlobalHandlers();\n    globalsRegistered = true;\n  }\n  function registerGlobalHandlers() {\n    // When the window resizes, we need to refresh active editors.\n    var resizeTimer;\n    on(window, \"resize\", function() {\n      if (resizeTimer == null) resizeTimer = setTimeout(function() {\n        resizeTimer = null;\n        forEachCodeMirror(onResize);\n      }, 100);\n    });\n    // When the window loses focus, we want to show the editor as blurred\n    on(window, \"blur\", function() {\n      forEachCodeMirror(onBlur);\n    });\n  }\n\n  // FEATURE DETECTION\n\n  // Detect drag-and-drop\n  var dragAndDrop = function() {\n    // There is *some* kind of drag-and-drop support in IE6-8, but I\n    // couldn't get it to work yet.\n    if (ie && ie_version < 9) return false;\n    var div = elt('div');\n    return \"draggable\" in div || \"dragDrop\" in div;\n  }();\n\n  var zwspSupported;\n  function zeroWidthElement(measure) {\n    if (zwspSupported == null) {\n      var test = elt(\"span\", \"\\u200b\");\n      removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n      if (measure.firstChild.offsetHeight != 0)\n        zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n    }\n    var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n      elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n    node.setAttribute(\"cm-text\", \"\");\n    return node;\n  }\n\n  // Feature-detect IE's crummy client rect reporting for bidi text\n  var badBidiRects;\n  function hasBadBidiRects(measure) {\n    if (badBidiRects != null) return badBidiRects;\n    var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n    var r0 = range(txt, 0, 1).getBoundingClientRect();\n    if (!r0 || r0.left == r0.right) return false; // Safari returns null in some cases (#2780)\n    var r1 = range(txt, 1, 2).getBoundingClientRect();\n    return badBidiRects = (r1.right - r0.right < 3);\n  }\n\n  // See if \"\".split is the broken IE version, if so, provide an\n  // alternative way to split lines.\n  var splitLines = CodeMirror.splitLines = \"\\n\\nb\".split(/\\n/).length != 3 ? function(string) {\n    var pos = 0, result = [], l = string.length;\n    while (pos <= l) {\n      var nl = string.indexOf(\"\\n\", pos);\n      if (nl == -1) nl = string.length;\n      var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n      var rt = line.indexOf(\"\\r\");\n      if (rt != -1) {\n        result.push(line.slice(0, rt));\n        pos += rt + 1;\n      } else {\n        result.push(line);\n        pos = nl + 1;\n      }\n    }\n    return result;\n  } : function(string){return string.split(/\\r\\n?|\\n/);};\n\n  var hasSelection = window.getSelection ? function(te) {\n    try { return te.selectionStart != te.selectionEnd; }\n    catch(e) { return false; }\n  } : function(te) {\n    try {var range = te.ownerDocument.selection.createRange();}\n    catch(e) {}\n    if (!range || range.parentElement() != te) return false;\n    return range.compareEndPoints(\"StartToEnd\", range) != 0;\n  };\n\n  var hasCopyEvent = (function() {\n    var e = elt(\"div\");\n    if (\"oncopy\" in e) return true;\n    e.setAttribute(\"oncopy\", \"return;\");\n    return typeof e.oncopy == \"function\";\n  })();\n\n  var badZoomedRects = null;\n  function hasBadZoomedRects(measure) {\n    if (badZoomedRects != null) return badZoomedRects;\n    var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n    var normal = node.getBoundingClientRect();\n    var fromRange = range(node, 0, 1).getBoundingClientRect();\n    return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1;\n  }\n\n  // KEY NAMES\n\n  var keyNames = {3: \"Enter\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n                  19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n                  36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n                  46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\", 107: \"=\", 109: \"-\", 127: \"Delete\",\n                  173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n                  221: \"]\", 222: \"'\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n                  63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"};\n  CodeMirror.keyNames = keyNames;\n  (function() {\n    // Number keys\n    for (var i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i);\n    // Alphabetic keys\n    for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i);\n    // Function keys\n    for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = \"F\" + i;\n  })();\n\n  // BIDI HELPERS\n\n  function iterateBidiSections(order, from, to, f) {\n    if (!order) return f(from, to, \"ltr\");\n    var found = false;\n    for (var i = 0; i < order.length; ++i) {\n      var part = order[i];\n      if (part.from < to && part.to > from || from == to && part.to == from) {\n        f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\");\n        found = true;\n      }\n    }\n    if (!found) f(from, to, \"ltr\");\n  }\n\n  function bidiLeft(part) { return part.level % 2 ? part.to : part.from; }\n  function bidiRight(part) { return part.level % 2 ? part.from : part.to; }\n\n  function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0; }\n  function lineRight(line) {\n    var order = getOrder(line);\n    if (!order) return line.text.length;\n    return bidiRight(lst(order));\n  }\n\n  function lineStart(cm, lineN) {\n    var line = getLine(cm.doc, lineN);\n    var visual = visualLine(line);\n    if (visual != line) lineN = lineNo(visual);\n    var order = getOrder(visual);\n    var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual);\n    return Pos(lineN, ch);\n  }\n  function lineEnd(cm, lineN) {\n    var merged, line = getLine(cm.doc, lineN);\n    while (merged = collapsedSpanAtEnd(line)) {\n      line = merged.find(1, true).line;\n      lineN = null;\n    }\n    var order = getOrder(line);\n    var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line);\n    return Pos(lineN == null ? lineNo(line) : lineN, ch);\n  }\n  function lineStartSmart(cm, pos) {\n    var start = lineStart(cm, pos.line);\n    var line = getLine(cm.doc, start.line);\n    var order = getOrder(line);\n    if (!order || order[0].level == 0) {\n      var firstNonWS = Math.max(0, line.text.search(/\\S/));\n      var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n      return Pos(start.line, inWS ? 0 : firstNonWS);\n    }\n    return start;\n  }\n\n  function compareBidiLevel(order, a, b) {\n    var linedir = order[0].level;\n    if (a == linedir) return true;\n    if (b == linedir) return false;\n    return a < b;\n  }\n  var bidiOther;\n  function getBidiPartAt(order, pos) {\n    bidiOther = null;\n    for (var i = 0, found; i < order.length; ++i) {\n      var cur = order[i];\n      if (cur.from < pos && cur.to > pos) return i;\n      if ((cur.from == pos || cur.to == pos)) {\n        if (found == null) {\n          found = i;\n        } else if (compareBidiLevel(order, cur.level, order[found].level)) {\n          if (cur.from != cur.to) bidiOther = found;\n          return i;\n        } else {\n          if (cur.from != cur.to) bidiOther = i;\n          return found;\n        }\n      }\n    }\n    return found;\n  }\n\n  function moveInLine(line, pos, dir, byUnit) {\n    if (!byUnit) return pos + dir;\n    do pos += dir;\n    while (pos > 0 && isExtendingChar(line.text.charAt(pos)));\n    return pos;\n  }\n\n  // This is needed in order to move 'visually' through bi-directional\n  // text -- i.e., pressing left should make the cursor go left, even\n  // when in RTL text. The tricky part is the 'jumps', where RTL and\n  // LTR text touch each other. This often requires the cursor offset\n  // to move more than one unit, in order to visually move one unit.\n  function moveVisually(line, start, dir, byUnit) {\n    var bidi = getOrder(line);\n    if (!bidi) return moveLogically(line, start, dir, byUnit);\n    var pos = getBidiPartAt(bidi, start), part = bidi[pos];\n    var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit);\n\n    for (;;) {\n      if (target > part.from && target < part.to) return target;\n      if (target == part.from || target == part.to) {\n        if (getBidiPartAt(bidi, target) == pos) return target;\n        part = bidi[pos += dir];\n        return (dir > 0) == part.level % 2 ? part.to : part.from;\n      } else {\n        part = bidi[pos += dir];\n        if (!part) return null;\n        if ((dir > 0) == part.level % 2)\n          target = moveInLine(line, part.to, -1, byUnit);\n        else\n          target = moveInLine(line, part.from, 1, byUnit);\n      }\n    }\n  }\n\n  function moveLogically(line, start, dir, byUnit) {\n    var target = start + dir;\n    if (byUnit) while (target > 0 && isExtendingChar(line.text.charAt(target))) target += dir;\n    return target < 0 || target > line.text.length ? null : target;\n  }\n\n  // Bidirectional ordering algorithm\n  // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n  // that this (partially) implements.\n\n  // One-char codes used for character types:\n  // L (L):   Left-to-Right\n  // R (R):   Right-to-Left\n  // r (AL):  Right-to-Left Arabic\n  // 1 (EN):  European Number\n  // + (ES):  European Number Separator\n  // % (ET):  European Number Terminator\n  // n (AN):  Arabic Number\n  // , (CS):  Common Number Separator\n  // m (NSM): Non-Spacing Mark\n  // b (BN):  Boundary Neutral\n  // s (B):   Paragraph Separator\n  // t (S):   Segment Separator\n  // w (WS):  Whitespace\n  // N (ON):  Other Neutrals\n\n  // Returns null if characters are ordered as they appear\n  // (left-to-right), or an array of sections ({from, to, level}\n  // objects) in the order in which they occur visually.\n  var bidiOrdering = (function() {\n    // Character types for codepoints 0 to 0xff\n    var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n    // Character types for codepoints 0x600 to 0x6ff\n    var arabicTypes = \"rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm\";\n    function charType(code) {\n      if (code <= 0xf7) return lowTypes.charAt(code);\n      else if (0x590 <= code && code <= 0x5f4) return \"R\";\n      else if (0x600 <= code && code <= 0x6ed) return arabicTypes.charAt(code - 0x600);\n      else if (0x6ee <= code && code <= 0x8ac) return \"r\";\n      else if (0x2000 <= code && code <= 0x200b) return \"w\";\n      else if (code == 0x200c) return \"b\";\n      else return \"L\";\n    }\n\n    var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n    var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n    // Browsers seem to always treat the boundaries of block elements as being L.\n    var outerType = \"L\";\n\n    function BidiSpan(level, from, to) {\n      this.level = level;\n      this.from = from; this.to = to;\n    }\n\n    return function(str) {\n      if (!bidiRE.test(str)) return false;\n      var len = str.length, types = [];\n      for (var i = 0, type; i < len; ++i)\n        types.push(type = charType(str.charCodeAt(i)));\n\n      // W1. Examine each non-spacing mark (NSM) in the level run, and\n      // change the type of the NSM to the type of the previous\n      // character. If the NSM is at the start of the level run, it will\n      // get the type of sor.\n      for (var i = 0, prev = outerType; i < len; ++i) {\n        var type = types[i];\n        if (type == \"m\") types[i] = prev;\n        else prev = type;\n      }\n\n      // W2. Search backwards from each instance of a European number\n      // until the first strong type (R, L, AL, or sor) is found. If an\n      // AL is found, change the type of the European number to Arabic\n      // number.\n      // W3. Change all ALs to R.\n      for (var i = 0, cur = outerType; i < len; ++i) {\n        var type = types[i];\n        if (type == \"1\" && cur == \"r\") types[i] = \"n\";\n        else if (isStrong.test(type)) { cur = type; if (type == \"r\") types[i] = \"R\"; }\n      }\n\n      // W4. A single European separator between two European numbers\n      // changes to a European number. A single common separator between\n      // two numbers of the same type changes to that type.\n      for (var i = 1, prev = types[0]; i < len - 1; ++i) {\n        var type = types[i];\n        if (type == \"+\" && prev == \"1\" && types[i+1] == \"1\") types[i] = \"1\";\n        else if (type == \",\" && prev == types[i+1] &&\n                 (prev == \"1\" || prev == \"n\")) types[i] = prev;\n        prev = type;\n      }\n\n      // W5. A sequence of European terminators adjacent to European\n      // numbers changes to all European numbers.\n      // W6. Otherwise, separators and terminators change to Other\n      // Neutral.\n      for (var i = 0; i < len; ++i) {\n        var type = types[i];\n        if (type == \",\") types[i] = \"N\";\n        else if (type == \"%\") {\n          for (var end = i + 1; end < len && types[end] == \"%\"; ++end) {}\n          var replace = (i && types[i-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n          for (var j = i; j < end; ++j) types[j] = replace;\n          i = end - 1;\n        }\n      }\n\n      // W7. Search backwards from each instance of a European number\n      // until the first strong type (R, L, or sor) is found. If an L is\n      // found, then change the type of the European number to L.\n      for (var i = 0, cur = outerType; i < len; ++i) {\n        var type = types[i];\n        if (cur == \"L\" && type == \"1\") types[i] = \"L\";\n        else if (isStrong.test(type)) cur = type;\n      }\n\n      // N1. A sequence of neutrals takes the direction of the\n      // surrounding strong text if the text on both sides has the same\n      // direction. European and Arabic numbers act as if they were R in\n      // terms of their influence on neutrals. Start-of-level-run (sor)\n      // and end-of-level-run (eor) are used at level run boundaries.\n      // N2. Any remaining neutrals take the embedding direction.\n      for (var i = 0; i < len; ++i) {\n        if (isNeutral.test(types[i])) {\n          for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {}\n          var before = (i ? types[i-1] : outerType) == \"L\";\n          var after = (end < len ? types[end] : outerType) == \"L\";\n          var replace = before || after ? \"L\" : \"R\";\n          for (var j = i; j < end; ++j) types[j] = replace;\n          i = end - 1;\n        }\n      }\n\n      // Here we depart from the documented algorithm, in order to avoid\n      // building up an actual levels array. Since there are only three\n      // levels (0, 1, 2) in an implementation that doesn't take\n      // explicit embedding into account, we can build up the order on\n      // the fly, without following the level-based algorithm.\n      var order = [], m;\n      for (var i = 0; i < len;) {\n        if (countsAsLeft.test(types[i])) {\n          var start = i;\n          for (++i; i < len && countsAsLeft.test(types[i]); ++i) {}\n          order.push(new BidiSpan(0, start, i));\n        } else {\n          var pos = i, at = order.length;\n          for (++i; i < len && types[i] != \"L\"; ++i) {}\n          for (var j = pos; j < i;) {\n            if (countsAsNum.test(types[j])) {\n              if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j));\n              var nstart = j;\n              for (++j; j < i && countsAsNum.test(types[j]); ++j) {}\n              order.splice(at, 0, new BidiSpan(2, nstart, j));\n              pos = j;\n            } else ++j;\n          }\n          if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i));\n        }\n      }\n      if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n        order[0].from = m[0].length;\n        order.unshift(new BidiSpan(0, 0, m[0].length));\n      }\n      if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n        lst(order).to -= m[0].length;\n        order.push(new BidiSpan(0, len - m[0].length, len));\n      }\n      if (order[0].level != lst(order).level)\n        order.push(new BidiSpan(order[0].level, len, len));\n\n      return order;\n    };\n  })();\n\n  // THE END\n\n  CodeMirror.version = \"5.0.0\";\n\n  return CodeMirror;\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/apl/apl.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"apl\", function() {\n  var builtInOps = {\n    \".\": \"innerProduct\",\n    \"\\\\\": \"scan\",\n    \"/\": \"reduce\",\n    \"⌿\": \"reduce1Axis\",\n    \"⍀\": \"scan1Axis\",\n    \"¨\": \"each\",\n    \"⍣\": \"power\"\n  };\n  var builtInFuncs = {\n    \"+\": [\"conjugate\", \"add\"],\n    \"−\": [\"negate\", \"subtract\"],\n    \"×\": [\"signOf\", \"multiply\"],\n    \"÷\": [\"reciprocal\", \"divide\"],\n    \"⌈\": [\"ceiling\", \"greaterOf\"],\n    \"⌊\": [\"floor\", \"lesserOf\"],\n    \"∣\": [\"absolute\", \"residue\"],\n    \"⍳\": [\"indexGenerate\", \"indexOf\"],\n    \"?\": [\"roll\", \"deal\"],\n    \"⋆\": [\"exponentiate\", \"toThePowerOf\"],\n    \"⍟\": [\"naturalLog\", \"logToTheBase\"],\n    \"○\": [\"piTimes\", \"circularFuncs\"],\n    \"!\": [\"factorial\", \"binomial\"],\n    \"⌹\": [\"matrixInverse\", \"matrixDivide\"],\n    \"<\": [null, \"lessThan\"],\n    \"≤\": [null, \"lessThanOrEqual\"],\n    \"=\": [null, \"equals\"],\n    \">\": [null, \"greaterThan\"],\n    \"≥\": [null, \"greaterThanOrEqual\"],\n    \"≠\": [null, \"notEqual\"],\n    \"≡\": [\"depth\", \"match\"],\n    \"≢\": [null, \"notMatch\"],\n    \"∈\": [\"enlist\", \"membership\"],\n    \"⍷\": [null, \"find\"],\n    \"∪\": [\"unique\", \"union\"],\n    \"∩\": [null, \"intersection\"],\n    \"∼\": [\"not\", \"without\"],\n    \"∨\": [null, \"or\"],\n    \"∧\": [null, \"and\"],\n    \"⍱\": [null, \"nor\"],\n    \"⍲\": [null, \"nand\"],\n    \"⍴\": [\"shapeOf\", \"reshape\"],\n    \",\": [\"ravel\", \"catenate\"],\n    \"⍪\": [null, \"firstAxisCatenate\"],\n    \"⌽\": [\"reverse\", \"rotate\"],\n    \"⊖\": [\"axis1Reverse\", \"axis1Rotate\"],\n    \"⍉\": [\"transpose\", null],\n    \"↑\": [\"first\", \"take\"],\n    \"↓\": [null, \"drop\"],\n    \"⊂\": [\"enclose\", \"partitionWithAxis\"],\n    \"⊃\": [\"diclose\", \"pick\"],\n    \"⌷\": [null, \"index\"],\n    \"⍋\": [\"gradeUp\", null],\n    \"⍒\": [\"gradeDown\", null],\n    \"⊤\": [\"encode\", null],\n    \"⊥\": [\"decode\", null],\n    \"⍕\": [\"format\", \"formatByExample\"],\n    \"⍎\": [\"execute\", null],\n    \"⊣\": [\"stop\", \"left\"],\n    \"⊢\": [\"pass\", \"right\"]\n  };\n\n  var isOperator = /[\\.\\/⌿⍀¨⍣]/;\n  var isNiladic = /⍬/;\n  var isFunction = /[\\+−×÷⌈⌊∣⍳\\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/;\n  var isArrow = /←/;\n  var isComment = /[⍝#].*$/;\n\n  var stringEater = function(type) {\n    var prev;\n    prev = false;\n    return function(c) {\n      prev = c;\n      if (c === type) {\n        return prev === \"\\\\\";\n      }\n      return true;\n    };\n  };\n  return {\n    startState: function() {\n      return {\n        prev: false,\n        func: false,\n        op: false,\n        string: false,\n        escape: false\n      };\n    },\n    token: function(stream, state) {\n      var ch, funcName, word;\n      if (stream.eatSpace()) {\n        return null;\n      }\n      ch = stream.next();\n      if (ch === '\"' || ch === \"'\") {\n        stream.eatWhile(stringEater(ch));\n        stream.next();\n        state.prev = true;\n        return \"string\";\n      }\n      if (/[\\[{\\(]/.test(ch)) {\n        state.prev = false;\n        return null;\n      }\n      if (/[\\]}\\)]/.test(ch)) {\n        state.prev = true;\n        return null;\n      }\n      if (isNiladic.test(ch)) {\n        state.prev = false;\n        return \"niladic\";\n      }\n      if (/[¯\\d]/.test(ch)) {\n        if (state.func) {\n          state.func = false;\n          state.prev = false;\n        } else {\n          state.prev = true;\n        }\n        stream.eatWhile(/[\\w\\.]/);\n        return \"number\";\n      }\n      if (isOperator.test(ch)) {\n        return \"operator apl-\" + builtInOps[ch];\n      }\n      if (isArrow.test(ch)) {\n        return \"apl-arrow\";\n      }\n      if (isFunction.test(ch)) {\n        funcName = \"apl-\";\n        if (builtInFuncs[ch] != null) {\n          if (state.prev) {\n            funcName += builtInFuncs[ch][1];\n          } else {\n            funcName += builtInFuncs[ch][0];\n          }\n        }\n        state.func = true;\n        state.prev = false;\n        return \"function \" + funcName;\n      }\n      if (isComment.test(ch)) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n      if (ch === \"∘\" && stream.peek() === \".\") {\n        stream.next();\n        return \"function jot-dot\";\n      }\n      stream.eatWhile(/[\\w\\$_]/);\n      word = stream.current();\n      state.prev = true;\n      return \"keyword\";\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/apl\", \"apl\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/apl/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: APL mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"./apl.js\"></script>\n<style>\n\t.CodeMirror { border: 2px inset #dee; }\n    </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">APL</a>\n  </ul>\n</div>\n\n<article>\n<h2>APL mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n⍝ Conway's game of life\n\n⍝ This example was inspired by the impressive demo at\n⍝ http://www.youtube.com/watch?v=a9xAKttWgP4\n\n⍝ Create a matrix:\n⍝     0 1 1\n⍝     1 1 0\n⍝     0 1 0\ncreature ← (3 3 ⍴ ⍳ 9) ∈ 1 2 3 4 7   ⍝ Original creature from demo\ncreature ← (3 3 ⍴ ⍳ 9) ∈ 1 3 6 7 8   ⍝ Glider\n\n⍝ Place the creature on a larger board, near the centre\nboard ← ¯1 ⊖ ¯2 ⌽ 5 7 ↑ creature\n\n⍝ A function to move from one generation to the next\nlife ← {∨/ 1 ⍵ ∧ 3 4 = ⊂+/ +⌿ 1 0 ¯1 ∘.⊖ 1 0 ¯1 ⌽¨ ⊂⍵}\n\n⍝ Compute n-th generation and format it as a\n⍝ character matrix\ngen ← {' #'[(life ⍣ ⍵) board]}\n\n⍝ Show first three generations\n(gen 1) (gen 2) (gen 3)\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"text/apl\"\n      });\n    </script>\n\n    <p>Simple mode that tries to handle APL as well as it can.</p>\n    <p>It attempts to label functions/operators based upon\n    monadic/dyadic usage (but this is far from fully fleshed out).\n    This means there are meaningful classnames so hover states can\n    have popups etc.</p>\n\n    <p><strong>MIME types defined:</strong> <code>text/apl</code> (APL code)</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/asterisk/asterisk.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/*\n * =====================================================================================\n *\n *       Filename:  mode/asterisk/asterisk.js\n *\n *    Description:  CodeMirror mode for Asterisk dialplan\n *\n *        Created:  05/17/2012 09:20:25 PM\n *       Revision:  none\n *\n *         Author:  Stas Kobzar (stas@modulis.ca),\n *        Company:  Modulis.ca Inc.\n *\n * =====================================================================================\n */\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"asterisk\", function() {\n  var atoms    = [\"exten\", \"same\", \"include\",\"ignorepat\",\"switch\"],\n      dpcmd    = [\"#include\",\"#exec\"],\n      apps     = [\n                  \"addqueuemember\",\"adsiprog\",\"aelsub\",\"agentlogin\",\"agentmonitoroutgoing\",\"agi\",\n                  \"alarmreceiver\",\"amd\",\"answer\",\"authenticate\",\"background\",\"backgrounddetect\",\n                  \"bridge\",\"busy\",\"callcompletioncancel\",\"callcompletionrequest\",\"celgenuserevent\",\n                  \"changemonitor\",\"chanisavail\",\"channelredirect\",\"chanspy\",\"clearhash\",\"confbridge\",\n                  \"congestion\",\"continuewhile\",\"controlplayback\",\"dahdiacceptr2call\",\"dahdibarge\",\n                  \"dahdiras\",\"dahdiscan\",\"dahdisendcallreroutingfacility\",\"dahdisendkeypadfacility\",\n                  \"datetime\",\"dbdel\",\"dbdeltree\",\"deadagi\",\"dial\",\"dictate\",\"directory\",\"disa\",\n                  \"dumpchan\",\"eagi\",\"echo\",\"endwhile\",\"exec\",\"execif\",\"execiftime\",\"exitwhile\",\"extenspy\",\n                  \"externalivr\",\"festival\",\"flash\",\"followme\",\"forkcdr\",\"getcpeid\",\"gosub\",\"gosubif\",\n                  \"goto\",\"gotoif\",\"gotoiftime\",\"hangup\",\"iax2provision\",\"ices\",\"importvar\",\"incomplete\",\n                  \"ivrdemo\",\"jabberjoin\",\"jabberleave\",\"jabbersend\",\"jabbersendgroup\",\"jabberstatus\",\n                  \"jack\",\"log\",\"macro\",\"macroexclusive\",\"macroexit\",\"macroif\",\"mailboxexists\",\"meetme\",\n                  \"meetmeadmin\",\"meetmechanneladmin\",\"meetmecount\",\"milliwatt\",\"minivmaccmess\",\"minivmdelete\",\n                  \"minivmgreet\",\"minivmmwi\",\"minivmnotify\",\"minivmrecord\",\"mixmonitor\",\"monitor\",\"morsecode\",\n                  \"mp3player\",\"mset\",\"musiconhold\",\"nbscat\",\"nocdr\",\"noop\",\"odbc\",\"odbc\",\"odbcfinish\",\n                  \"originate\",\"ospauth\",\"ospfinish\",\"osplookup\",\"ospnext\",\"page\",\"park\",\"parkandannounce\",\n                  \"parkedcall\",\"pausemonitor\",\"pausequeuemember\",\"pickup\",\"pickupchan\",\"playback\",\"playtones\",\n                  \"privacymanager\",\"proceeding\",\"progress\",\"queue\",\"queuelog\",\"raiseexception\",\"read\",\"readexten\",\n                  \"readfile\",\"receivefax\",\"receivefax\",\"receivefax\",\"record\",\"removequeuemember\",\n                  \"resetcdr\",\"retrydial\",\"return\",\"ringing\",\"sayalpha\",\"saycountedadj\",\"saycountednoun\",\n                  \"saycountpl\",\"saydigits\",\"saynumber\",\"sayphonetic\",\"sayunixtime\",\"senddtmf\",\"sendfax\",\n                  \"sendfax\",\"sendfax\",\"sendimage\",\"sendtext\",\"sendurl\",\"set\",\"setamaflags\",\n                  \"setcallerpres\",\"setmusiconhold\",\"sipaddheader\",\"sipdtmfmode\",\"sipremoveheader\",\"skel\",\n                  \"slastation\",\"slatrunk\",\"sms\",\"softhangup\",\"speechactivategrammar\",\"speechbackground\",\n                  \"speechcreate\",\"speechdeactivategrammar\",\"speechdestroy\",\"speechloadgrammar\",\"speechprocessingsound\",\n                  \"speechstart\",\"speechunloadgrammar\",\"stackpop\",\"startmusiconhold\",\"stopmixmonitor\",\"stopmonitor\",\n                  \"stopmusiconhold\",\"stopplaytones\",\"system\",\"testclient\",\"testserver\",\"transfer\",\"tryexec\",\n                  \"trysystem\",\"unpausemonitor\",\"unpausequeuemember\",\"userevent\",\"verbose\",\"vmauthenticate\",\n                  \"vmsayname\",\"voicemail\",\"voicemailmain\",\"wait\",\"waitexten\",\"waitfornoise\",\"waitforring\",\n                  \"waitforsilence\",\"waitmusiconhold\",\"waituntil\",\"while\",\"zapateller\"\n                 ];\n\n  function basicToken(stream,state){\n    var cur = '';\n    var ch  = '';\n    ch = stream.next();\n    // comment\n    if(ch == \";\") {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n    // context\n    if(ch == '[') {\n      stream.skipTo(']');\n      stream.eat(']');\n      return \"header\";\n    }\n    // string\n    if(ch == '\"') {\n      stream.skipTo('\"');\n      return \"string\";\n    }\n    if(ch == \"'\") {\n      stream.skipTo(\"'\");\n      return \"string-2\";\n    }\n    // dialplan commands\n    if(ch == '#') {\n      stream.eatWhile(/\\w/);\n      cur = stream.current();\n      if(dpcmd.indexOf(cur) !== -1) {\n        stream.skipToEnd();\n        return \"strong\";\n      }\n    }\n    // application args\n    if(ch == '$'){\n      var ch1 = stream.peek();\n      if(ch1 == '{'){\n        stream.skipTo('}');\n        stream.eat('}');\n        return \"variable-3\";\n      }\n    }\n    // extension\n    stream.eatWhile(/\\w/);\n    cur = stream.current();\n    if(atoms.indexOf(cur) !== -1) {\n      state.extenStart = true;\n      switch(cur) {\n        case 'same': state.extenSame = true; break;\n        case 'include':\n        case 'switch':\n        case 'ignorepat':\n          state.extenInclude = true;break;\n        default:break;\n      }\n      return \"atom\";\n    }\n  }\n\n  return {\n    startState: function() {\n      return {\n        extenStart: false,\n        extenSame:  false,\n        extenInclude: false,\n        extenExten: false,\n        extenPriority: false,\n        extenApplication: false\n      };\n    },\n    token: function(stream, state) {\n\n      var cur = '';\n      var ch  = '';\n      if(stream.eatSpace()) return null;\n      // extension started\n      if(state.extenStart){\n        stream.eatWhile(/[^\\s]/);\n        cur = stream.current();\n        if(/^=>?$/.test(cur)){\n          state.extenExten = true;\n          state.extenStart = false;\n          return \"strong\";\n        } else {\n          state.extenStart = false;\n          stream.skipToEnd();\n          return \"error\";\n        }\n      } else if(state.extenExten) {\n        // set exten and priority\n        state.extenExten = false;\n        state.extenPriority = true;\n        stream.eatWhile(/[^,]/);\n        if(state.extenInclude) {\n          stream.skipToEnd();\n          state.extenPriority = false;\n          state.extenInclude = false;\n        }\n        if(state.extenSame) {\n          state.extenPriority = false;\n          state.extenSame = false;\n          state.extenApplication = true;\n        }\n        return \"tag\";\n      } else if(state.extenPriority) {\n        state.extenPriority = false;\n        state.extenApplication = true;\n        ch = stream.next(); // get comma\n        if(state.extenSame) return null;\n        stream.eatWhile(/[^,]/);\n        return \"number\";\n      } else if(state.extenApplication) {\n        stream.eatWhile(/,/);\n        cur = stream.current();\n        if(cur === ',') return null;\n        stream.eatWhile(/\\w/);\n        cur = stream.current().toLowerCase();\n        state.extenApplication = false;\n        if(apps.indexOf(cur) !== -1){\n          return \"def strong\";\n        }\n      } else{\n        return basicToken(stream,state);\n      }\n\n      return null;\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-asterisk\", \"asterisk\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/asterisk/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Asterisk dialplan mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"asterisk.js\"></script>\n<style>\n      .CodeMirror {border: 1px solid #999;}\n      .cm-s-default span.cm-arrow { color: red; }\n    </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Asterisk dialplan</a>\n  </ul>\n</div>\n\n<article>\n<h2>Asterisk dialplan mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n; extensions.conf - the Asterisk dial plan\n;\n\n[general]\n;\n; If static is set to no, or omitted, then the pbx_config will rewrite\n; this file when extensions are modified.  Remember that all comments\n; made in the file will be lost when that happens.\nstatic=yes\n\n#include \"/etc/asterisk/additional_general.conf\n\n[iaxprovider]\nswitch => IAX2/user:[key]@myserver/mycontext\n\n[dynamic]\n#exec /usr/bin/dynamic-peers.pl\n\n[trunkint]\n;\n; International long distance through trunk\n;\nexten => _9011.,1,Macro(dundi-e164,${EXTEN:4})\nexten => _9011.,n,Dial(${GLOBAL(TRUNK)}/${FILTER(0-9,${EXTEN:${GLOBAL(TRUNKMSD)}})})\n\n[local]\n;\n; Master context for local, toll-free, and iaxtel calls only\n;\nignorepat => 9\ninclude => default\n\n[demo]\ninclude => stdexten\n;\n; We start with what to do when a call first comes in.\n;\nexten => s,1,Wait(1)\t\t\t; Wait a second, just for fun\nsame  => n,Answer\t\t\t; Answer the line\nsame  => n,Set(TIMEOUT(digit)=5)\t; Set Digit Timeout to 5 seconds\nsame  => n,Set(TIMEOUT(response)=10)\t; Set Response Timeout to 10 seconds\nsame  => n(restart),BackGround(demo-congrats)\t; Play a congratulatory message\nsame  => n(instruct),BackGround(demo-instruct)\t; Play some instructions\nsame  => n,WaitExten\t\t\t; Wait for an extension to be dialed.\n\nexten => 2,1,BackGround(demo-moreinfo)\t; Give some more information.\nexten => 2,n,Goto(s,instruct)\n\nexten => 3,1,Set(LANGUAGE()=fr)\t\t; Set language to french\nexten => 3,n,Goto(s,restart)\t\t; Start with the congratulations\n\nexten => 1000,1,Goto(default,s,1)\n;\n; We also create an example user, 1234, who is on the console and has\n; voicemail, etc.\n;\nexten => 1234,1,Playback(transfer,skip)\t\t; \"Please hold while...\"\n\t\t\t\t\t; (but skip if channel is not up)\nexten => 1234,n,Gosub(${EXTEN},stdexten(${GLOBAL(CONSOLE)}))\nexten => 1234,n,Goto(default,s,1)\t\t; exited Voicemail\n\nexten => 1235,1,Voicemail(1234,u)\t\t; Right to voicemail\n\nexten => 1236,1,Dial(Console/dsp)\t\t; Ring forever\nexten => 1236,n,Voicemail(1234,b)\t\t; Unless busy\n\n;\n; # for when they're done with the demo\n;\nexten => #,1,Playback(demo-thanks)\t; \"Thanks for trying the demo\"\nexten => #,n,Hangup\t\t\t; Hang them up.\n\n;\n; A timeout and \"invalid extension rule\"\n;\nexten => t,1,Goto(#,1)\t\t\t; If they take too long, give up\nexten => i,1,Playback(invalid)\t\t; \"That's not valid, try again\"\n\n;\n; Create an extension, 500, for dialing the\n; Asterisk demo.\n;\nexten => 500,1,Playback(demo-abouttotry); Let them know what's going on\nexten => 500,n,Dial(IAX2/guest@pbx.digium.com/s@default)\t; Call the Asterisk demo\nexten => 500,n,Playback(demo-nogo)\t; Couldn't connect to the demo site\nexten => 500,n,Goto(s,6)\t\t; Return to the start over message.\n\n;\n; Create an extension, 600, for evaluating echo latency.\n;\nexten => 600,1,Playback(demo-echotest)\t; Let them know what's going on\nexten => 600,n,Echo\t\t\t; Do the echo test\nexten => 600,n,Playback(demo-echodone)\t; Let them know it's over\nexten => 600,n,Goto(s,6)\t\t; Start over\n\n;\n;\tYou can use the Macro Page to intercom a individual user\nexten => 76245,1,Macro(page,SIP/Grandstream1)\n; or if your peernames are the same as extensions\nexten => _7XXX,1,Macro(page,SIP/${EXTEN})\n;\n;\n; System Wide Page at extension 7999\n;\nexten => 7999,1,Set(TIMEOUT(absolute)=60)\nexten => 7999,2,Page(Local/Grandstream1@page&Local/Xlite1@page&Local/1234@page/n,d)\n\n; Give voicemail at extension 8500\n;\nexten => 8500,1,VoicemailMain\nexten => 8500,n,Goto(s,6)\n\n    </textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: \"text/x-asterisk\",\n        matchBrackets: true,\n        lineNumber: true\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-asterisk</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/clike/clike.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"clike\", function(config, parserConfig) {\n  var indentUnit = config.indentUnit,\n      statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,\n      dontAlignCalls = parserConfig.dontAlignCalls,\n      keywords = parserConfig.keywords || {},\n      builtin = parserConfig.builtin || {},\n      blockKeywords = parserConfig.blockKeywords || {},\n      atoms = parserConfig.atoms || {},\n      hooks = parserConfig.hooks || {},\n      multiLineStrings = parserConfig.multiLineStrings,\n      indentStatements = parserConfig.indentStatements !== false;\n  var isOperatorChar = /[+\\-*&%=<>!?|\\/]/;\n\n  var curPunc;\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    if (hooks[ch]) {\n      var result = hooks[ch](stream, state);\n      if (result !== false) return result;\n    }\n    if (ch == '\"' || ch == \"'\") {\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    }\n    if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n      curPunc = ch;\n      return null;\n    }\n    if (/\\d/.test(ch)) {\n      stream.eatWhile(/[\\w\\.]/);\n      return \"number\";\n    }\n    if (ch == \"/\") {\n      if (stream.eat(\"*\")) {\n        state.tokenize = tokenComment;\n        return tokenComment(stream, state);\n      }\n      if (stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n    }\n    if (isOperatorChar.test(ch)) {\n      stream.eatWhile(isOperatorChar);\n      return \"operator\";\n    }\n    stream.eatWhile(/[\\w\\$_\\xa1-\\uffff]/);\n    var cur = stream.current();\n    if (keywords.propertyIsEnumerable(cur)) {\n      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n      return \"keyword\";\n    }\n    if (builtin.propertyIsEnumerable(cur)) {\n      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n      return \"builtin\";\n    }\n    if (atoms.propertyIsEnumerable(cur)) return \"atom\";\n    return \"variable\";\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, next, end = false;\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) {end = true; break;}\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (end || !(escaped || multiLineStrings))\n        state.tokenize = null;\n      return \"string\";\n    };\n  }\n\n  function tokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = null;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return \"comment\";\n  }\n\n  function Context(indented, column, type, align, prev) {\n    this.indented = indented;\n    this.column = column;\n    this.type = type;\n    this.align = align;\n    this.prev = prev;\n  }\n  function pushContext(state, col, type) {\n    var indent = state.indented;\n    if (state.context && state.context.type == \"statement\")\n      indent = state.context.indented;\n    return state.context = new Context(indent, col, type, null, state.context);\n  }\n  function popContext(state) {\n    var t = state.context.type;\n    if (t == \")\" || t == \"]\" || t == \"}\")\n      state.indented = state.context.indented;\n    return state.context = state.context.prev;\n  }\n\n  // Interface\n\n  return {\n    startState: function(basecolumn) {\n      return {\n        tokenize: null,\n        context: new Context((basecolumn || 0) - indentUnit, 0, \"top\", false),\n        indented: 0,\n        startOfLine: true\n      };\n    },\n\n    token: function(stream, state) {\n      var ctx = state.context;\n      if (stream.sol()) {\n        if (ctx.align == null) ctx.align = false;\n        state.indented = stream.indentation();\n        state.startOfLine = true;\n      }\n      if (stream.eatSpace()) return null;\n      curPunc = null;\n      var style = (state.tokenize || tokenBase)(stream, state);\n      if (style == \"comment\" || style == \"meta\") return style;\n      if (ctx.align == null) ctx.align = true;\n\n      if ((curPunc == \";\" || curPunc == \":\" || curPunc == \",\") && ctx.type == \"statement\") popContext(state);\n      else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n      else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n      else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n      else if (curPunc == \"}\") {\n        while (ctx.type == \"statement\") ctx = popContext(state);\n        if (ctx.type == \"}\") ctx = popContext(state);\n        while (ctx.type == \"statement\") ctx = popContext(state);\n      }\n      else if (curPunc == ctx.type) popContext(state);\n      else if (indentStatements &&\n               (((ctx.type == \"}\" || ctx.type == \"top\") && curPunc != ';') ||\n                (ctx.type == \"statement\" && curPunc == \"newstatement\")))\n        pushContext(state, stream.column(), \"statement\");\n      state.startOfLine = false;\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass;\n      var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);\n      if (ctx.type == \"statement\" && firstChar == \"}\") ctx = ctx.prev;\n      var closing = firstChar == ctx.type;\n      if (ctx.type == \"statement\") return ctx.indented + (firstChar == \"{\" ? 0 : statementIndentUnit);\n      else if (ctx.align && (!dontAlignCalls || ctx.type != \")\")) return ctx.column + (closing ? 0 : 1);\n      else if (ctx.type == \")\" && !closing) return ctx.indented + statementIndentUnit;\n      else return ctx.indented + (closing ? 0 : indentUnit);\n    },\n\n    electricChars: \"{}\",\n    blockCommentStart: \"/*\",\n    blockCommentEnd: \"*/\",\n    lineComment: \"//\",\n    fold: \"brace\"\n  };\n});\n\n  function words(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n  var cKeywords = \"auto if break int case long char register continue return default short do sizeof \" +\n    \"double static else struct entry switch extern typedef float union for unsigned \" +\n    \"goto while enum void const signed volatile\";\n\n  function cppHook(stream, state) {\n    if (!state.startOfLine) return false;\n    for (;;) {\n      if (stream.skipTo(\"\\\\\")) {\n        stream.next();\n        if (stream.eol()) {\n          state.tokenize = cppHook;\n          break;\n        }\n      } else {\n        stream.skipToEnd();\n        state.tokenize = null;\n        break;\n      }\n    }\n    return \"meta\";\n  }\n\n  function cpp11StringHook(stream, state) {\n    stream.backUp(1);\n    // Raw strings.\n    if (stream.match(/(R|u8R|uR|UR|LR)/)) {\n      var match = stream.match(/\"([^\\s\\\\()]{0,16})\\(/);\n      if (!match) {\n        return false;\n      }\n      state.cpp11RawStringDelim = match[1];\n      state.tokenize = tokenRawString;\n      return tokenRawString(stream, state);\n    }\n    // Unicode strings/chars.\n    if (stream.match(/(u8|u|U|L)/)) {\n      if (stream.match(/[\"']/, /* eat */ false)) {\n        return \"string\";\n      }\n      return false;\n    }\n    // Ignore this hook.\n    stream.next();\n    return false;\n  }\n\n  // C#-style strings where \"\" escapes a quote.\n  function tokenAtString(stream, state) {\n    var next;\n    while ((next = stream.next()) != null) {\n      if (next == '\"' && !stream.eat('\"')) {\n        state.tokenize = null;\n        break;\n      }\n    }\n    return \"string\";\n  }\n\n  // C++11 raw string literal is <prefix>\"<delim>( anything )<delim>\", where\n  // <delim> can be a string up to 16 characters long.\n  function tokenRawString(stream, state) {\n    // Escape characters that have special regex meanings.\n    var delim = state.cpp11RawStringDelim.replace(/[^\\w\\s]/g, '\\\\$&');\n    var match = stream.match(new RegExp(\".*?\\\\)\" + delim + '\"'));\n    if (match)\n      state.tokenize = null;\n    else\n      stream.skipToEnd();\n    return \"string\";\n  }\n\n  function def(mimes, mode) {\n    if (typeof mimes == \"string\") mimes = [mimes];\n    var words = [];\n    function add(obj) {\n      if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop))\n        words.push(prop);\n    }\n    add(mode.keywords);\n    add(mode.builtin);\n    add(mode.atoms);\n    if (words.length) {\n      mode.helperType = mimes[0];\n      CodeMirror.registerHelper(\"hintWords\", mimes[0], words);\n    }\n\n    for (var i = 0; i < mimes.length; ++i)\n      CodeMirror.defineMIME(mimes[i], mode);\n  }\n\n  def([\"text/x-csrc\", \"text/x-c\", \"text/x-chdr\"], {\n    name: \"clike\",\n    keywords: words(cKeywords),\n    blockKeywords: words(\"case do else for if switch while struct\"),\n    atoms: words(\"null\"),\n    hooks: {\"#\": cppHook},\n    modeProps: {fold: [\"brace\", \"include\"]}\n  });\n\n  def([\"text/x-c++src\", \"text/x-c++hdr\"], {\n    name: \"clike\",\n    keywords: words(cKeywords + \" asm dynamic_cast namespace reinterpret_cast try bool explicit new \" +\n                    \"static_cast typeid catch operator template typename class friend private \" +\n                    \"this using const_cast inline public throw virtual delete mutable protected \" +\n                    \"wchar_t alignas alignof constexpr decltype nullptr noexcept thread_local final \" +\n                    \"static_assert override\"),\n    blockKeywords: words(\"catch class do else finally for if struct switch try while\"),\n    atoms: words(\"true false null\"),\n    hooks: {\n      \"#\": cppHook,\n      \"u\": cpp11StringHook,\n      \"U\": cpp11StringHook,\n      \"L\": cpp11StringHook,\n      \"R\": cpp11StringHook\n    },\n    modeProps: {fold: [\"brace\", \"include\"]}\n  });\n\n  def(\"text/x-java\", {\n    name: \"clike\",\n    keywords: words(\"abstract assert boolean break byte case catch char class const continue default \" +\n                    \"do double else enum extends final finally float for goto if implements import \" +\n                    \"instanceof int interface long native new package private protected public \" +\n                    \"return short static strictfp super switch synchronized this throw throws transient \" +\n                    \"try void volatile while\"),\n    blockKeywords: words(\"catch class do else finally for if switch try while\"),\n    atoms: words(\"true false null\"),\n    hooks: {\n      \"@\": function(stream) {\n        stream.eatWhile(/[\\w\\$_]/);\n        return \"meta\";\n      }\n    },\n    modeProps: {fold: [\"brace\", \"import\"]}\n  });\n\n  def(\"text/x-csharp\", {\n    name: \"clike\",\n    keywords: words(\"abstract as base break case catch checked class const continue\" +\n                    \" default delegate do else enum event explicit extern finally fixed for\" +\n                    \" foreach goto if implicit in interface internal is lock namespace new\" +\n                    \" operator out override params private protected public readonly ref return sealed\" +\n                    \" sizeof stackalloc static struct switch this throw try typeof unchecked\" +\n                    \" unsafe using virtual void volatile while add alias ascending descending dynamic from get\" +\n                    \" global group into join let orderby partial remove select set value var yield\"),\n    blockKeywords: words(\"catch class do else finally for foreach if struct switch try while\"),\n    builtin: words(\"Boolean Byte Char DateTime DateTimeOffset Decimal Double\" +\n                    \" Guid Int16 Int32 Int64 Object SByte Single String TimeSpan UInt16 UInt32\" +\n                    \" UInt64 bool byte char decimal double short int long object\"  +\n                    \" sbyte float string ushort uint ulong\"),\n    atoms: words(\"true false null\"),\n    hooks: {\n      \"@\": function(stream, state) {\n        if (stream.eat('\"')) {\n          state.tokenize = tokenAtString;\n          return tokenAtString(stream, state);\n        }\n        stream.eatWhile(/[\\w\\$_]/);\n        return \"meta\";\n      }\n    }\n  });\n\n  function tokenTripleString(stream, state) {\n    var escaped = false;\n    while (!stream.eol()) {\n      if (!escaped && stream.match('\"\"\"')) {\n        state.tokenize = null;\n        break;\n      }\n      escaped = stream.next() == \"\\\\\" && !escaped;\n    }\n    return \"string\";\n  }\n\n  def(\"text/x-scala\", {\n    name: \"clike\",\n    keywords: words(\n\n      /* scala */\n      \"abstract case catch class def do else extends false final finally for forSome if \" +\n      \"implicit import lazy match new null object override package private protected return \" +\n      \"sealed super this throw trait try trye type val var while with yield _ : = => <- <: \" +\n      \"<% >: # @ \" +\n\n      /* package scala */\n      \"assert assume require print println printf readLine readBoolean readByte readShort \" +\n      \"readChar readInt readLong readFloat readDouble \" +\n\n      \"AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either \" +\n      \"Enumeration Equiv Error Exception Fractional Function IndexedSeq Integral Iterable \" +\n      \"Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering \" +\n      \"Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder \" +\n      \"StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector :: #:: \" +\n\n      /* package java.lang */\n      \"Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable \" +\n      \"Compiler Double Exception Float Integer Long Math Number Object Package Pair Process \" +\n      \"Runtime Runnable SecurityManager Short StackTraceElement StrictMath String \" +\n      \"StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void\"\n    ),\n    multiLineStrings: true,\n    blockKeywords: words(\"catch class do else finally for forSome if match switch try while\"),\n    atoms: words(\"true false null\"),\n    indentStatements: false,\n    hooks: {\n      \"@\": function(stream) {\n        stream.eatWhile(/[\\w\\$_]/);\n        return \"meta\";\n      },\n      '\"': function(stream, state) {\n        if (!stream.match('\"\"')) return false;\n        state.tokenize = tokenTripleString;\n        return state.tokenize(stream, state);\n      },\n      \"'\": function(stream) {\n        stream.eatWhile(/[\\w\\$_\\xa1-\\uffff]/);\n        return \"atom\";\n      }\n    }\n  });\n\n  def([\"x-shader/x-vertex\", \"x-shader/x-fragment\"], {\n    name: \"clike\",\n    keywords: words(\"float int bool void \" +\n                    \"vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 \" +\n                    \"mat2 mat3 mat4 \" +\n                    \"sampler1D sampler2D sampler3D samplerCube \" +\n                    \"sampler1DShadow sampler2DShadow \" +\n                    \"const attribute uniform varying \" +\n                    \"break continue discard return \" +\n                    \"for while do if else struct \" +\n                    \"in out inout\"),\n    blockKeywords: words(\"for while do if else struct\"),\n    builtin: words(\"radians degrees sin cos tan asin acos atan \" +\n                    \"pow exp log exp2 sqrt inversesqrt \" +\n                    \"abs sign floor ceil fract mod min max clamp mix step smoothstep \" +\n                    \"length distance dot cross normalize ftransform faceforward \" +\n                    \"reflect refract matrixCompMult \" +\n                    \"lessThan lessThanEqual greaterThan greaterThanEqual \" +\n                    \"equal notEqual any all not \" +\n                    \"texture1D texture1DProj texture1DLod texture1DProjLod \" +\n                    \"texture2D texture2DProj texture2DLod texture2DProjLod \" +\n                    \"texture3D texture3DProj texture3DLod texture3DProjLod \" +\n                    \"textureCube textureCubeLod \" +\n                    \"shadow1D shadow2D shadow1DProj shadow2DProj \" +\n                    \"shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod \" +\n                    \"dFdx dFdy fwidth \" +\n                    \"noise1 noise2 noise3 noise4\"),\n    atoms: words(\"true false \" +\n                \"gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex \" +\n                \"gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 \" +\n                \"gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 \" +\n                \"gl_FogCoord gl_PointCoord \" +\n                \"gl_Position gl_PointSize gl_ClipVertex \" +\n                \"gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor \" +\n                \"gl_TexCoord gl_FogFragCoord \" +\n                \"gl_FragCoord gl_FrontFacing \" +\n                \"gl_FragData gl_FragDepth \" +\n                \"gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix \" +\n                \"gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse \" +\n                \"gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse \" +\n                \"gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose \" +\n                \"gl_ProjectionMatrixInverseTranspose \" +\n                \"gl_ModelViewProjectionMatrixInverseTranspose \" +\n                \"gl_TextureMatrixInverseTranspose \" +\n                \"gl_NormalScale gl_DepthRange gl_ClipPlane \" +\n                \"gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel \" +\n                \"gl_FrontLightModelProduct gl_BackLightModelProduct \" +\n                \"gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ \" +\n                \"gl_FogParameters \" +\n                \"gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords \" +\n                \"gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats \" +\n                \"gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits \" +\n                \"gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits \" +\n                \"gl_MaxDrawBuffers\"),\n    hooks: {\"#\": cppHook},\n    modeProps: {fold: [\"brace\", \"include\"]}\n  });\n\n  def(\"text/x-nesc\", {\n    name: \"clike\",\n    keywords: words(cKeywords + \"as atomic async call command component components configuration event generic \" +\n                    \"implementation includes interface module new norace nx_struct nx_union post provides \" +\n                    \"signal task uses abstract extends\"),\n    blockKeywords: words(\"case do else for if switch while struct\"),\n    atoms: words(\"null\"),\n    hooks: {\"#\": cppHook},\n    modeProps: {fold: [\"brace\", \"include\"]}\n  });\n\n  def(\"text/x-objectivec\", {\n    name: \"clike\",\n    keywords: words(cKeywords + \"inline restrict _Bool _Complex _Imaginery BOOL Class bycopy byref id IMP in \" +\n                    \"inout nil oneway out Protocol SEL self super atomic nonatomic retain copy readwrite readonly\"),\n    atoms: words(\"YES NO NULL NILL ON OFF\"),\n    hooks: {\n      \"@\": function(stream) {\n        stream.eatWhile(/[\\w\\$]/);\n        return \"keyword\";\n      },\n      \"#\": cppHook\n    },\n    modeProps: {fold: \"brace\"}\n  });\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/clike/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: C-like mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<link rel=\"stylesheet\" href=\"../../addon/hint/show-hint.css\">\n<script src=\"../../addon/hint/show-hint.js\"></script>\n<script src=\"clike.js\"></script>\n<style>.CodeMirror {border: 2px inset #dee;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">C-like</a>\n  </ul>\n</div>\n\n<article>\n<h2>C-like mode</h2>\n\n<div><textarea id=\"c-code\">\n/* C demo code */\n\n#include <zmq.h>\n#include <pthread.h>\n#include <semaphore.h>\n#include <time.h>\n#include <stdio.h>\n#include <fcntl.h>\n#include <malloc.h>\n\ntypedef struct {\n  void* arg_socket;\n  zmq_msg_t* arg_msg;\n  char* arg_string;\n  unsigned long arg_len;\n  int arg_int, arg_command;\n\n  int signal_fd;\n  int pad;\n  void* context;\n  sem_t sem;\n} acl_zmq_context;\n\n#define p(X) (context->arg_##X)\n\nvoid* zmq_thread(void* context_pointer) {\n  acl_zmq_context* context = (acl_zmq_context*)context_pointer;\n  char ok = 'K', err = 'X';\n  int res;\n\n  while (1) {\n    while ((res = sem_wait(&amp;context->sem)) == EINTR);\n    if (res) {write(context->signal_fd, &amp;err, 1); goto cleanup;}\n    switch(p(command)) {\n    case 0: goto cleanup;\n    case 1: p(socket) = zmq_socket(context->context, p(int)); break;\n    case 2: p(int) = zmq_close(p(socket)); break;\n    case 3: p(int) = zmq_bind(p(socket), p(string)); break;\n    case 4: p(int) = zmq_connect(p(socket), p(string)); break;\n    case 5: p(int) = zmq_getsockopt(p(socket), p(int), (void*)p(string), &amp;p(len)); break;\n    case 6: p(int) = zmq_setsockopt(p(socket), p(int), (void*)p(string), p(len)); break;\n    case 7: p(int) = zmq_send(p(socket), p(msg), p(int)); break;\n    case 8: p(int) = zmq_recv(p(socket), p(msg), p(int)); break;\n    case 9: p(int) = zmq_poll(p(socket), p(int), p(len)); break;\n    }\n    p(command) = errno;\n    write(context->signal_fd, &amp;ok, 1);\n  }\n cleanup:\n  close(context->signal_fd);\n  free(context_pointer);\n  return 0;\n}\n\nvoid* zmq_thread_init(void* zmq_context, int signal_fd) {\n  acl_zmq_context* context = malloc(sizeof(acl_zmq_context));\n  pthread_t thread;\n\n  context->context = zmq_context;\n  context->signal_fd = signal_fd;\n  sem_init(&amp;context->sem, 1, 0);\n  pthread_create(&amp;thread, 0, &amp;zmq_thread, context);\n  pthread_detach(thread);\n  return context;\n}\n</textarea></div>\n\n<h2>C++ example</h2>\n\n<div><textarea id=\"cpp-code\">\n#include <iostream>\n#include \"mystuff/util.h\"\n\nnamespace {\nenum Enum {\n  VAL1, VAL2, VAL3\n};\n\nchar32_t unicode_string = U\"\\U0010FFFF\";\nstring raw_string = R\"delim(anything\nyou\nwant)delim\";\n\nint Helper(const MyType& param) {\n  return 0;\n}\n} // namespace\n\nclass ForwardDec;\n\ntemplate <class T, class V>\nclass Class : public BaseClass {\n  const MyType<T, V> member_;\n\n public:\n  const MyType<T, V>& Method() const {\n    return member_;\n  }\n\n  void Method2(MyType<T, V>* value);\n}\n\ntemplate <class T, class V>\nvoid Class::Method2(MyType<T, V>* value) {\n  std::out << 1 >> method();\n  value->Method3(member_);\n  member_ = value;\n}\n</textarea></div>\n\n<h2>Objective-C example</h2>\n\n<div><textarea id=\"objectivec-code\">\n/*\nThis is a longer comment\nThat spans two lines\n*/\n\n#import <Test/Test.h>\n@implementation YourAppDelegate\n\n// This is a one-line comment\n\n- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{\n  char myString[] = \"This is a C character array\";\n  int test = 5;\n  return YES;\n}\n</textarea></div>\n\n<h2>Java example</h2>\n\n<div><textarea id=\"java-code\">\nimport com.demo.util.MyType;\nimport com.demo.util.MyInterface;\n\npublic enum Enum {\n  VAL1, VAL2, VAL3\n}\n\npublic class Class<T, V> implements MyInterface {\n  public static final MyType<T, V> member;\n  \n  private class InnerClass {\n    public int zero() {\n      return 0;\n    }\n  }\n\n  @Override\n  public MyType method() {\n    return member;\n  }\n\n  public void method2(MyType<T, V> value) {\n    method();\n    value.method3();\n    member = value;\n  }\n}\n</textarea></div>\n\n<h2>Scala example</h2>\n\n<div><textarea id=\"scala-code\">\nobject FilterTest extends App {\n  def filter(xs: List[Int], threshold: Int) = {\n    def process(ys: List[Int]): List[Int] =\n      if (ys.isEmpty) ys\n      else if (ys.head < threshold) ys.head :: process(ys.tail)\n      else process(ys.tail)\n    process(xs)\n  }\n  println(filter(List(1, 9, 2, 8, 3, 7, 4), 5))\n}\n</textarea></div>\n\n    <script>\n      var cEditor = CodeMirror.fromTextArea(document.getElementById(\"c-code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"text/x-csrc\"\n      });\n      var cppEditor = CodeMirror.fromTextArea(document.getElementById(\"cpp-code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"text/x-c++src\"\n      });\n      var javaEditor = CodeMirror.fromTextArea(document.getElementById(\"java-code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"text/x-java\"\n      });\n      var objectivecEditor = CodeMirror.fromTextArea(document.getElementById(\"objectivec-code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"text/x-objectivec\"\n      });\n      var scalaEditor = CodeMirror.fromTextArea(document.getElementById(\"scala-code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"text/x-scala\"\n      });\n      var mac = CodeMirror.keyMap.default == CodeMirror.keyMap.macDefault;\n      CodeMirror.keyMap.default[(mac ? \"Cmd\" : \"Ctrl\") + \"-Space\"] = \"autocomplete\";\n    </script>\n\n    <p>Simple mode that tries to handle C-like languages as well as it\n    can. Takes two configuration parameters: <code>keywords</code>, an\n    object whose property names are the keywords in the language,\n    and <code>useCPP</code>, which determines whether C preprocessor\n    directives are recognized.</p>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-csrc</code>\n    (C), <code>text/x-c++src</code> (C++), <code>text/x-java</code>\n    (Java), <code>text/x-csharp</code> (C#),\n    <code>text/x-objectivec</code> (Objective-C),\n    <code>text/x-scala</code> (Scala), <code>text/x-vertex</code>\n    and <code>x-shader/x-fragment</code> (shader programs).</p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/clike/scala.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Scala mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../theme/ambiance.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"clike.js\"></script>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Scala</a>\n  </ul>\n</div>\n\n<article>\n<h2>Scala mode</h2>\n<form>\n<textarea id=\"code\" name=\"code\">\n\n  /*                     __                                               *\\\n  **     ________ ___   / /  ___     Scala API                            **\n  **    / __/ __// _ | / /  / _ |    (c) 2003-2011, LAMP/EPFL             **\n  **  __\\ \\/ /__/ __ |/ /__/ __ |    http://scala-lang.org/               **\n  ** /____/\\___/_/ |_/____/_/ | |                                         **\n  **                          |/                                          **\n  \\*                                                                      */\n\n  package scala.collection\n\n  import generic._\n  import mutable.{ Builder, ListBuffer }\n  import annotation.{tailrec, migration, bridge}\n  import annotation.unchecked.{ uncheckedVariance => uV }\n  import parallel.ParIterable\n\n  /** A template trait for traversable collections of type `Traversable[A]`.\n   *  \n   *  $traversableInfo\n   *  @define mutability\n   *  @define traversableInfo\n   *  This is a base trait of all kinds of $mutability Scala collections. It\n   *  implements the behavior common to all collections, in terms of a method\n   *  `foreach` with signature:\n   * {{{\n   *     def foreach[U](f: Elem => U): Unit\n   * }}}\n   *  Collection classes mixing in this trait provide a concrete \n   *  `foreach` method which traverses all the\n   *  elements contained in the collection, applying a given function to each.\n   *  They also need to provide a method `newBuilder`\n   *  which creates a builder for collections of the same kind.\n   *  \n   *  A traversable class might or might not have two properties: strictness\n   *  and orderedness. Neither is represented as a type.\n   *  \n   *  The instances of a strict collection class have all their elements\n   *  computed before they can be used as values. By contrast, instances of\n   *  a non-strict collection class may defer computation of some of their\n   *  elements until after the instance is available as a value.\n   *  A typical example of a non-strict collection class is a\n   *  <a href=\"../immutable/Stream.html\" target=\"ContentFrame\">\n   *  `scala.collection.immutable.Stream`</a>.\n   *  A more general class of examples are `TraversableViews`.\n   *  \n   *  If a collection is an instance of an ordered collection class, traversing\n   *  its elements with `foreach` will always visit elements in the\n   *  same order, even for different runs of the program. If the class is not\n   *  ordered, `foreach` can visit elements in different orders for\n   *  different runs (but it will keep the same order in the same run).'\n   * \n   *  A typical example of a collection class which is not ordered is a\n   *  `HashMap` of objects. The traversal order for hash maps will\n   *  depend on the hash codes of its elements, and these hash codes might\n   *  differ from one run to the next. By contrast, a `LinkedHashMap`\n   *  is ordered because it's `foreach` method visits elements in the\n   *  order they were inserted into the `HashMap`.\n   *\n   *  @author Martin Odersky\n   *  @version 2.8\n   *  @since   2.8\n   *  @tparam A    the element type of the collection\n   *  @tparam Repr the type of the actual collection containing the elements.\n   *\n   *  @define Coll Traversable\n   *  @define coll traversable collection\n   */\n  trait TraversableLike[+A, +Repr] extends HasNewBuilder[A, Repr] \n                                      with FilterMonadic[A, Repr]\n                                      with TraversableOnce[A]\n                                      with GenTraversableLike[A, Repr]\n                                      with Parallelizable[A, ParIterable[A]]\n  {\n    self =>\n\n    import Traversable.breaks._\n\n    /** The type implementing this traversable */\n    protected type Self = Repr\n\n    /** The collection of type $coll underlying this `TraversableLike` object.\n     *  By default this is implemented as the `TraversableLike` object itself,\n     *  but this can be overridden.\n     */\n    def repr: Repr = this.asInstanceOf[Repr]\n\n    /** The underlying collection seen as an instance of `$Coll`.\n     *  By default this is implemented as the current collection object itself,\n     *  but this can be overridden.\n     */\n    protected[this] def thisCollection: Traversable[A] = this.asInstanceOf[Traversable[A]]\n\n    /** A conversion from collections of type `Repr` to `$Coll` objects.\n     *  By default this is implemented as just a cast, but this can be overridden.\n     */\n    protected[this] def toCollection(repr: Repr): Traversable[A] = repr.asInstanceOf[Traversable[A]]\n\n    /** Creates a new builder for this collection type.\n     */\n    protected[this] def newBuilder: Builder[A, Repr]\n\n    protected[this] def parCombiner = ParIterable.newCombiner[A]\n\n    /** Applies a function `f` to all elements of this $coll.\n     *  \n     *    Note: this method underlies the implementation of most other bulk operations.\n     *    It's important to implement this method in an efficient way.\n     *  \n     *\n     *  @param  f   the function that is applied for its side-effect to every element.\n     *              The result of function `f` is discarded.\n     *              \n     *  @tparam  U  the type parameter describing the result of function `f`. \n     *              This result will always be ignored. Typically `U` is `Unit`,\n     *              but this is not necessary.\n     *\n     *  @usecase def foreach(f: A => Unit): Unit\n     */\n    def foreach[U](f: A => U): Unit\n\n    /** Tests whether this $coll is empty.\n     *\n     *  @return    `true` if the $coll contain no elements, `false` otherwise.\n     */\n    def isEmpty: Boolean = {\n      var result = true\n      breakable {\n        for (x <- this) {\n          result = false\n          break\n        }\n      }\n      result\n    }\n\n    /** Tests whether this $coll is known to have a finite size.\n     *  All strict collections are known to have finite size. For a non-strict collection\n     *  such as `Stream`, the predicate returns `true` if all elements have been computed.\n     *  It returns `false` if the stream is not yet evaluated to the end.\n     *\n     *  Note: many collection methods will not work on collections of infinite sizes. \n     *\n     *  @return  `true` if this collection is known to have finite size, `false` otherwise.\n     */\n    def hasDefiniteSize = true\n\n    def ++[B >: A, That](that: GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {\n      val b = bf(repr)\n      if (that.isInstanceOf[IndexedSeqLike[_, _]]) b.sizeHint(this, that.seq.size)\n      b ++= thisCollection\n      b ++= that.seq\n      b.result\n    }\n\n    @bridge\n    def ++[B >: A, That](that: TraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That =\n      ++(that: GenTraversableOnce[B])(bf)\n\n    /** Concatenates this $coll with the elements of a traversable collection.\n     *  It differs from ++ in that the right operand determines the type of the\n     *  resulting collection rather than the left one.\n     * \n     *  @param that   the traversable to append.\n     *  @tparam B     the element type of the returned collection. \n     *  @tparam That  $thatinfo\n     *  @param bf     $bfinfo\n     *  @return       a new collection of type `That` which contains all elements\n     *                of this $coll followed by all elements of `that`.\n     * \n     *  @usecase def ++:[B](that: TraversableOnce[B]): $Coll[B]\n     *  \n     *  @return       a new $coll which contains all elements of this $coll\n     *                followed by all elements of `that`.\n     */\n    def ++:[B >: A, That](that: TraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {\n      val b = bf(repr)\n      if (that.isInstanceOf[IndexedSeqLike[_, _]]) b.sizeHint(this, that.size)\n      b ++= that\n      b ++= thisCollection\n      b.result\n    }\n\n    /** This overload exists because: for the implementation of ++: we should reuse\n     *  that of ++ because many collections override it with more efficient versions.\n     *  Since TraversableOnce has no '++' method, we have to implement that directly,\n     *  but Traversable and down can use the overload.\n     */\n    def ++:[B >: A, That](that: Traversable[B])(implicit bf: CanBuildFrom[Repr, B, That]): That =\n      (that ++ seq)(breakOut)\n\n    def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {\n      val b = bf(repr)\n      b.sizeHint(this) \n      for (x <- this) b += f(x)\n      b.result\n    }\n\n    def flatMap[B, That](f: A => GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {\n      val b = bf(repr)\n      for (x <- this) b ++= f(x).seq\n      b.result\n    }\n\n    /** Selects all elements of this $coll which satisfy a predicate.\n     *\n     *  @param p     the predicate used to test elements.\n     *  @return      a new $coll consisting of all elements of this $coll that satisfy the given\n     *               predicate `p`. The order of the elements is preserved.\n     */\n    def filter(p: A => Boolean): Repr = {\n      val b = newBuilder\n      for (x <- this) \n        if (p(x)) b += x\n      b.result\n    }\n\n    /** Selects all elements of this $coll which do not satisfy a predicate.\n     *\n     *  @param p     the predicate used to test elements.\n     *  @return      a new $coll consisting of all elements of this $coll that do not satisfy the given\n     *               predicate `p`. The order of the elements is preserved.\n     */\n    def filterNot(p: A => Boolean): Repr = filter(!p(_))\n\n    def collect[B, That](pf: PartialFunction[A, B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {\n      val b = bf(repr)\n      for (x <- this) if (pf.isDefinedAt(x)) b += pf(x)\n      b.result\n    }\n\n    /** Builds a new collection by applying an option-valued function to all\n     *  elements of this $coll on which the function is defined.\n     *\n     *  @param f      the option-valued function which filters and maps the $coll.\n     *  @tparam B     the element type of the returned collection.\n     *  @tparam That  $thatinfo\n     *  @param bf     $bfinfo\n     *  @return       a new collection of type `That` resulting from applying the option-valued function\n     *                `f` to each element and collecting all defined results.\n     *                The order of the elements is preserved.\n     *\n     *  @usecase def filterMap[B](f: A => Option[B]): $Coll[B]\n     *  \n     *  @param pf     the partial function which filters and maps the $coll.\n     *  @return       a new $coll resulting from applying the given option-valued function\n     *                `f` to each element and collecting all defined results.\n     *                The order of the elements is preserved.\n    def filterMap[B, That](f: A => Option[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {\n      val b = bf(repr)\n      for (x <- this) \n        f(x) match {\n          case Some(y) => b += y\n          case _ =>\n        }\n      b.result\n    }\n     */\n\n    /** Partitions this $coll in two ${coll}s according to a predicate.\n     *\n     *  @param p the predicate on which to partition.\n     *  @return  a pair of ${coll}s: the first $coll consists of all elements that \n     *           satisfy the predicate `p` and the second $coll consists of all elements\n     *           that don't. The relative order of the elements in the resulting ${coll}s\n     *           is the same as in the original $coll.\n     */\n    def partition(p: A => Boolean): (Repr, Repr) = {\n      val l, r = newBuilder\n      for (x <- this) (if (p(x)) l else r) += x\n      (l.result, r.result)\n    }\n\n    def groupBy[K](f: A => K): immutable.Map[K, Repr] = {\n      val m = mutable.Map.empty[K, Builder[A, Repr]]\n      for (elem <- this) {\n        val key = f(elem)\n        val bldr = m.getOrElseUpdate(key, newBuilder)\n        bldr += elem\n      }\n      val b = immutable.Map.newBuilder[K, Repr]\n      for ((k, v) <- m)\n        b += ((k, v.result))\n\n      b.result\n    }\n\n    /** Tests whether a predicate holds for all elements of this $coll.\n     *\n     *  $mayNotTerminateInf\n     *\n     *  @param   p     the predicate used to test elements.\n     *  @return        `true` if the given predicate `p` holds for all elements\n     *                 of this $coll, otherwise `false`.\n     */\n    def forall(p: A => Boolean): Boolean = {\n      var result = true\n      breakable {\n        for (x <- this)\n          if (!p(x)) { result = false; break }\n      }\n      result\n    }\n\n    /** Tests whether a predicate holds for some of the elements of this $coll.\n     *\n     *  $mayNotTerminateInf\n     *\n     *  @param   p     the predicate used to test elements.\n     *  @return        `true` if the given predicate `p` holds for some of the\n     *                 elements of this $coll, otherwise `false`.\n     */\n    def exists(p: A => Boolean): Boolean = {\n      var result = false\n      breakable {\n        for (x <- this)\n          if (p(x)) { result = true; break }\n      }\n      result\n    }\n\n    /** Finds the first element of the $coll satisfying a predicate, if any.\n     * \n     *  $mayNotTerminateInf\n     *  $orderDependent\n     *\n     *  @param p    the predicate used to test elements.\n     *  @return     an option value containing the first element in the $coll\n     *              that satisfies `p`, or `None` if none exists.\n     */\n    def find(p: A => Boolean): Option[A] = {\n      var result: Option[A] = None\n      breakable {\n        for (x <- this)\n          if (p(x)) { result = Some(x); break }\n      }\n      result\n    }\n\n    def scan[B >: A, That](z: B)(op: (B, B) => B)(implicit cbf: CanBuildFrom[Repr, B, That]): That = scanLeft(z)(op)\n\n    def scanLeft[B, That](z: B)(op: (B, A) => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {\n      val b = bf(repr)\n      b.sizeHint(this, 1)\n      var acc = z\n      b += acc\n      for (x <- this) { acc = op(acc, x); b += acc }\n      b.result\n    }\n\n    @migration(2, 9,\n      \"This scanRight definition has changed in 2.9.\\n\" +\n      \"The previous behavior can be reproduced with scanRight.reverse.\"\n    )\n    def scanRight[B, That](z: B)(op: (A, B) => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {\n      var scanned = List(z)\n      var acc = z\n      for (x <- reversed) {\n        acc = op(x, acc)\n        scanned ::= acc\n      }\n      val b = bf(repr)\n      for (elem <- scanned) b += elem\n      b.result\n    }\n\n    /** Selects the first element of this $coll.\n     *  $orderDependent\n     *  @return  the first element of this $coll.\n     *  @throws `NoSuchElementException` if the $coll is empty.\n     */\n    def head: A = {\n      var result: () => A = () => throw new NoSuchElementException\n      breakable {\n        for (x <- this) {\n          result = () => x\n          break\n        }\n      }\n      result()\n    }\n\n    /** Optionally selects the first element.\n     *  $orderDependent\n     *  @return  the first element of this $coll if it is nonempty, `None` if it is empty.\n     */\n    def headOption: Option[A] = if (isEmpty) None else Some(head)\n\n    /** Selects all elements except the first.\n     *  $orderDependent\n     *  @return  a $coll consisting of all elements of this $coll\n     *           except the first one.\n     *  @throws `UnsupportedOperationException` if the $coll is empty.\n     */ \n    override def tail: Repr = {\n      if (isEmpty) throw new UnsupportedOperationException(\"empty.tail\")\n      drop(1)\n    }\n\n    /** Selects the last element.\n      * $orderDependent\n      * @return The last element of this $coll.\n      * @throws NoSuchElementException If the $coll is empty.\n      */\n    def last: A = {\n      var lst = head\n      for (x <- this)\n        lst = x\n      lst\n    }\n\n    /** Optionally selects the last element.\n     *  $orderDependent\n     *  @return  the last element of this $coll$ if it is nonempty, `None` if it is empty.\n     */\n    def lastOption: Option[A] = if (isEmpty) None else Some(last)\n\n    /** Selects all elements except the last.\n     *  $orderDependent\n     *  @return  a $coll consisting of all elements of this $coll\n     *           except the last one.\n     *  @throws `UnsupportedOperationException` if the $coll is empty.\n     */\n    def init: Repr = {\n      if (isEmpty) throw new UnsupportedOperationException(\"empty.init\")\n      var lst = head\n      var follow = false\n      val b = newBuilder\n      b.sizeHint(this, -1)\n      for (x <- this.seq) {\n        if (follow) b += lst\n        else follow = true\n        lst = x\n      }\n      b.result\n    }\n\n    def take(n: Int): Repr = slice(0, n)\n\n    def drop(n: Int): Repr = \n      if (n <= 0) {\n        val b = newBuilder\n        b.sizeHint(this)\n        b ++= thisCollection result\n      }\n      else sliceWithKnownDelta(n, Int.MaxValue, -n)\n\n    def slice(from: Int, until: Int): Repr = sliceWithKnownBound(math.max(from, 0), until)\n\n    // Precondition: from >= 0, until > 0, builder already configured for building.\n    private[this] def sliceInternal(from: Int, until: Int, b: Builder[A, Repr]): Repr = {\n      var i = 0\n      breakable {\n        for (x <- this.seq) {\n          if (i >= from) b += x\n          i += 1\n          if (i >= until) break\n        }\n      }\n      b.result\n    }\n    // Precondition: from >= 0\n    private[scala] def sliceWithKnownDelta(from: Int, until: Int, delta: Int): Repr = {\n      val b = newBuilder\n      if (until <= from) b.result\n      else {\n        b.sizeHint(this, delta)\n        sliceInternal(from, until, b)\n      }\n    }\n    // Precondition: from >= 0\n    private[scala] def sliceWithKnownBound(from: Int, until: Int): Repr = {\n      val b = newBuilder\n      if (until <= from) b.result\n      else {\n        b.sizeHintBounded(until - from, this)      \n        sliceInternal(from, until, b)\n      }\n    }\n\n    def takeWhile(p: A => Boolean): Repr = {\n      val b = newBuilder\n      breakable {\n        for (x <- this) {\n          if (!p(x)) break\n          b += x\n        }\n      }\n      b.result\n    }\n\n    def dropWhile(p: A => Boolean): Repr = {\n      val b = newBuilder\n      var go = false\n      for (x <- this) {\n        if (!p(x)) go = true\n        if (go) b += x\n      }\n      b.result\n    }\n\n    def span(p: A => Boolean): (Repr, Repr) = {\n      val l, r = newBuilder\n      var toLeft = true\n      for (x <- this) {\n        toLeft = toLeft && p(x)\n        (if (toLeft) l else r) += x\n      }\n      (l.result, r.result)\n    }\n\n    def splitAt(n: Int): (Repr, Repr) = {\n      val l, r = newBuilder\n      l.sizeHintBounded(n, this)\n      if (n >= 0) r.sizeHint(this, -n)\n      var i = 0\n      for (x <- this) {\n        (if (i < n) l else r) += x\n        i += 1\n      }\n      (l.result, r.result)\n    }\n\n    /** Iterates over the tails of this $coll. The first value will be this\n     *  $coll and the final one will be an empty $coll, with the intervening\n     *  values the results of successive applications of `tail`.\n     *\n     *  @return   an iterator over all the tails of this $coll\n     *  @example  `List(1,2,3).tails = Iterator(List(1,2,3), List(2,3), List(3), Nil)`\n     */  \n    def tails: Iterator[Repr] = iterateUntilEmpty(_.tail)\n\n    /** Iterates over the inits of this $coll. The first value will be this\n     *  $coll and the final one will be an empty $coll, with the intervening\n     *  values the results of successive applications of `init`.\n     *\n     *  @return  an iterator over all the inits of this $coll\n     *  @example  `List(1,2,3).inits = Iterator(List(1,2,3), List(1,2), List(1), Nil)`\n     */\n    def inits: Iterator[Repr] = iterateUntilEmpty(_.init)\n\n    /** Copies elements of this $coll to an array.\n     *  Fills the given array `xs` with at most `len` elements of\n     *  this $coll, starting at position `start`.\n     *  Copying will stop once either the end of the current $coll is reached,\n     *  or the end of the array is reached, or `len` elements have been copied.\n     *\n     *  $willNotTerminateInf\n     * \n     *  @param  xs     the array to fill.\n     *  @param  start  the starting index.\n     *  @param  len    the maximal number of elements to copy.\n     *  @tparam B      the type of the elements of the array. \n     * \n     *\n     *  @usecase def copyToArray(xs: Array[A], start: Int, len: Int): Unit\n     */\n    def copyToArray[B >: A](xs: Array[B], start: Int, len: Int) {\n      var i = start\n      val end = (start + len) min xs.length\n      breakable {\n        for (x <- this) {\n          if (i >= end) break\n          xs(i) = x\n          i += 1\n        }\n      }\n    }\n\n    def toTraversable: Traversable[A] = thisCollection\n    def toIterator: Iterator[A] = toStream.iterator\n    def toStream: Stream[A] = toBuffer.toStream\n\n    /** Converts this $coll to a string.\n     *\n     *  @return   a string representation of this collection. By default this\n     *            string consists of the `stringPrefix` of this $coll,\n     *            followed by all elements separated by commas and enclosed in parentheses.\n     */\n    override def toString = mkString(stringPrefix + \"(\", \", \", \")\")\n\n    /** Defines the prefix of this object's `toString` representation.\n     *\n     *  @return  a string representation which starts the result of `toString`\n     *           applied to this $coll. By default the string prefix is the\n     *           simple name of the collection class $coll.\n     */\n    def stringPrefix : String = {\n      var string = repr.asInstanceOf[AnyRef].getClass.getName\n      val idx1 = string.lastIndexOf('.' : Int)\n      if (idx1 != -1) string = string.substring(idx1 + 1)\n      val idx2 = string.indexOf('$')\n      if (idx2 != -1) string = string.substring(0, idx2)\n      string\n    }\n\n    /** Creates a non-strict view of this $coll.\n     * \n     *  @return a non-strict view of this $coll.\n     */\n    def view = new TraversableView[A, Repr] {\n      protected lazy val underlying = self.repr\n      override def foreach[U](f: A => U) = self foreach f\n    }\n\n    /** Creates a non-strict view of a slice of this $coll.\n     *\n     *  Note: the difference between `view` and `slice` is that `view` produces\n     *        a view of the current $coll, whereas `slice` produces a new $coll.\n     * \n     *  Note: `view(from, to)` is equivalent to `view.slice(from, to)`\n     *  $orderDependent\n     * \n     *  @param from   the index of the first element of the view\n     *  @param until  the index of the element following the view\n     *  @return a non-strict view of a slice of this $coll, starting at index `from`\n     *  and extending up to (but not including) index `until`.\n     */\n    def view(from: Int, until: Int): TraversableView[A, Repr] = view.slice(from, until)\n\n    /** Creates a non-strict filter of this $coll.\n     *\n     *  Note: the difference between `c filter p` and `c withFilter p` is that\n     *        the former creates a new collection, whereas the latter only\n     *        restricts the domain of subsequent `map`, `flatMap`, `foreach`,\n     *        and `withFilter` operations.\n     *  $orderDependent\n     * \n     *  @param p   the predicate used to test elements.\n     *  @return    an object of class `WithFilter`, which supports\n     *             `map`, `flatMap`, `foreach`, and `withFilter` operations.\n     *             All these operations apply to those elements of this $coll which\n     *             satisfy the predicate `p`.\n     */\n    def withFilter(p: A => Boolean): FilterMonadic[A, Repr] = new WithFilter(p)\n\n    /** A class supporting filtered operations. Instances of this class are\n     *  returned by method `withFilter`.\n     */\n    class WithFilter(p: A => Boolean) extends FilterMonadic[A, Repr] {\n\n      /** Builds a new collection by applying a function to all elements of the\n       *  outer $coll containing this `WithFilter` instance that satisfy predicate `p`.\n       *\n       *  @param f      the function to apply to each element.\n       *  @tparam B     the element type of the returned collection.\n       *  @tparam That  $thatinfo\n       *  @param bf     $bfinfo\n       *  @return       a new collection of type `That` resulting from applying\n       *                the given function `f` to each element of the outer $coll\n       *                that satisfies predicate `p` and collecting the results.\n       *\n       *  @usecase def map[B](f: A => B): $Coll[B] \n       *  \n       *  @return       a new $coll resulting from applying the given function\n       *                `f` to each element of the outer $coll that satisfies\n       *                predicate `p` and collecting the results.\n       */\n      def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {\n        val b = bf(repr)\n        for (x <- self) \n          if (p(x)) b += f(x)\n        b.result\n      }\n\n      /** Builds a new collection by applying a function to all elements of the\n       *  outer $coll containing this `WithFilter` instance that satisfy\n       *  predicate `p` and concatenating the results. \n       *\n       *  @param f      the function to apply to each element.\n       *  @tparam B     the element type of the returned collection.\n       *  @tparam That  $thatinfo\n       *  @param bf     $bfinfo\n       *  @return       a new collection of type `That` resulting from applying\n       *                the given collection-valued function `f` to each element\n       *                of the outer $coll that satisfies predicate `p` and\n       *                concatenating the results.\n       *\n       *  @usecase def flatMap[B](f: A => TraversableOnce[B]): $Coll[B]\n       * \n       *  @return       a new $coll resulting from applying the given collection-valued function\n       *                `f` to each element of the outer $coll that satisfies predicate `p` and concatenating the results.\n       */\n      def flatMap[B, That](f: A => GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {\n        val b = bf(repr)\n        for (x <- self) \n          if (p(x)) b ++= f(x).seq\n        b.result\n      }\n\n      /** Applies a function `f` to all elements of the outer $coll containing\n       *  this `WithFilter` instance that satisfy predicate `p`.\n       *\n       *  @param  f   the function that is applied for its side-effect to every element.\n       *              The result of function `f` is discarded.\n       *              \n       *  @tparam  U  the type parameter describing the result of function `f`. \n       *              This result will always be ignored. Typically `U` is `Unit`,\n       *              but this is not necessary.\n       *\n       *  @usecase def foreach(f: A => Unit): Unit\n       */   \n      def foreach[U](f: A => U): Unit = \n        for (x <- self) \n          if (p(x)) f(x)\n\n      /** Further refines the filter for this $coll.\n       *\n       *  @param q   the predicate used to test elements.\n       *  @return    an object of class `WithFilter`, which supports\n       *             `map`, `flatMap`, `foreach`, and `withFilter` operations.\n       *             All these operations apply to those elements of this $coll which\n       *             satisfy the predicate `q` in addition to the predicate `p`.\n       */\n      def withFilter(q: A => Boolean): WithFilter = \n        new WithFilter(x => p(x) && q(x))\n    }\n\n    // A helper for tails and inits.\n    private def iterateUntilEmpty(f: Traversable[A @uV] => Traversable[A @uV]): Iterator[Repr] = {\n      val it = Iterator.iterate(thisCollection)(f) takeWhile (x => !x.isEmpty)\n      it ++ Iterator(Nil) map (newBuilder ++= _ result)\n    }\n  }\n\n\n</textarea>\n</form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        theme: \"ambiance\",\n        mode: \"text/x-scala\"\n      });\n    </script>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/clojure/clojure.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/**\n * Author: Hans Engel\n * Branched from CodeMirror's Scheme mode (by Koh Zi Han, based on implementation by Koh Zi Chun)\n */\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"clojure\", function (options) {\n    var BUILTIN = \"builtin\", COMMENT = \"comment\", STRING = \"string\", CHARACTER = \"string-2\",\n        ATOM = \"atom\", NUMBER = \"number\", BRACKET = \"bracket\", KEYWORD = \"keyword\", VAR = \"variable\";\n    var INDENT_WORD_SKIP = options.indentUnit || 2;\n    var NORMAL_INDENT_UNIT = options.indentUnit || 2;\n\n    function makeKeywords(str) {\n        var obj = {}, words = str.split(\" \");\n        for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n        return obj;\n    }\n\n    var atoms = makeKeywords(\"true false nil\");\n\n    var keywords = makeKeywords(\n      \"defn defn- def def- defonce defmulti defmethod defmacro defstruct deftype defprotocol defrecord defproject deftest slice defalias defhinted defmacro- defn-memo defnk defnk defonce- defunbound defunbound- defvar defvar- let letfn do case cond condp for loop recur when when-not when-let when-first if if-let if-not . .. -> ->> doto and or dosync doseq dotimes dorun doall load import unimport ns in-ns refer try catch finally throw with-open with-local-vars binding gen-class gen-and-load-class gen-and-save-class handler-case handle\");\n\n    var builtins = makeKeywords(\n        \"* *' *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* *compile-path* *compiler-options* *data-readers* *e *err* *file* *flush-on-newline* *fn-loader* *in* *math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* + +' - -' -> ->> ->ArrayChunk ->Vec ->VecNode ->VecSeq -cache-protocol-fn -reset-methods .. / < <= = == > >= EMPTY-NODE accessor aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 bases bean bigdec bigint biginteger binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* bound? butlast byte byte-array bytes case cast char char-array char-escape-string char-name-string char? chars chunk chunk-append chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement concat cond condp conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? declare default-data-readers definline definterface defmacro defmethod defmulti defn defn- defonce defprotocol defrecord defstruct deftype delay delay? deliver denominator deref derive descendants destructure disj disj! dissoc dissoc! distinct distinct? doall dorun doseq dosync dotimes doto double double-array doubles drop drop-last drop-while empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info extend extend-protocol extend-type extenders extends? false? ffirst file-seq filter filterv find find-keyword find-ns find-protocol-impl find-protocol-method find-var first flatten float float-array float? floats flush fn fn? fnext fnil for force format frequencies future future-call future-cancel future-cancelled? future-done? future? gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash hash-combine hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc inc' init-proxy instance? int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt keep keep-indexed key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array make-hierarchy map map-indexed map? mapcat mapv max max-key memfn memoize merge merge-with meta method-sig methods min min-key mod munge name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias ns-unmap nth nthnext nthrest num number? numerator object-array odd? or parents partial partition partition-all partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers primitives-classnames print print-ctor print-dup print-method print-simple print-str printf println println-str prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot rand rand-int rand-nth range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern re-seq read read-line read-string realized? reduce reduce-kv reductions ref ref-history-count ref-max-history ref-min-history ref-set refer refer-clojure reify release-pending-sends rem remove remove-all-methods remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off seq seq? seque sequence sequential? set set-error-handler! set-error-mode! set-validator! set? short short-array shorts shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol symbol? sync take take-last take-nth take-while test the-ns thread-bound? time to-array to-array-2d trampoline transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive unquote unquote-splicing update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector-of vector? when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context with-local-vars with-meta with-open with-out-str with-precision with-redefs with-redefs-fn xml-seq zero? zipmap *default-data-reader-fn* as-> cond-> cond->> reduced reduced? send-via set-agent-send-executor! set-agent-send-off-executor! some-> some->>\");\n\n    var indentKeys = makeKeywords(\n        // Built-ins\n        \"ns fn def defn defmethod bound-fn if if-not case condp when while when-not when-first do future comment doto locking proxy with-open with-precision reify deftype defrecord defprotocol extend extend-protocol extend-type try catch \" +\n\n        // Binding forms\n        \"let letfn binding loop for doseq dotimes when-let if-let \" +\n\n        // Data structures\n        \"defstruct struct-map assoc \" +\n\n        // clojure.test\n        \"testing deftest \" +\n\n        // contrib\n        \"handler-case handle dotrace deftrace\");\n\n    var tests = {\n        digit: /\\d/,\n        digit_or_colon: /[\\d:]/,\n        hex: /[0-9a-f]/i,\n        sign: /[+-]/,\n        exponent: /e/i,\n        keyword_char: /[^\\s\\(\\[\\;\\)\\]]/,\n        symbol: /[\\w*+!\\-\\._?:<>\\/\\xa1-\\uffff]/\n    };\n\n    function stateStack(indent, type, prev) { // represents a state stack object\n        this.indent = indent;\n        this.type = type;\n        this.prev = prev;\n    }\n\n    function pushStack(state, indent, type) {\n        state.indentStack = new stateStack(indent, type, state.indentStack);\n    }\n\n    function popStack(state) {\n        state.indentStack = state.indentStack.prev;\n    }\n\n    function isNumber(ch, stream){\n        // hex\n        if ( ch === '0' && stream.eat(/x/i) ) {\n            stream.eatWhile(tests.hex);\n            return true;\n        }\n\n        // leading sign\n        if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) {\n          stream.eat(tests.sign);\n          ch = stream.next();\n        }\n\n        if ( tests.digit.test(ch) ) {\n            stream.eat(ch);\n            stream.eatWhile(tests.digit);\n\n            if ( '.' == stream.peek() ) {\n                stream.eat('.');\n                stream.eatWhile(tests.digit);\n            }\n\n            if ( stream.eat(tests.exponent) ) {\n                stream.eat(tests.sign);\n                stream.eatWhile(tests.digit);\n            }\n\n            return true;\n        }\n\n        return false;\n    }\n\n    // Eat character that starts after backslash \\\n    function eatCharacter(stream) {\n        var first = stream.next();\n        // Read special literals: backspace, newline, space, return.\n        // Just read all lowercase letters.\n        if (first && first.match(/[a-z]/) && stream.match(/[a-z]+/, true)) {\n            return;\n        }\n        // Read unicode character: \\u1000 \\uA0a1\n        if (first === \"u\") {\n            stream.match(/[0-9a-z]{4}/i, true);\n        }\n    }\n\n    return {\n        startState: function () {\n            return {\n                indentStack: null,\n                indentation: 0,\n                mode: false\n            };\n        },\n\n        token: function (stream, state) {\n            if (state.indentStack == null && stream.sol()) {\n                // update indentation, but only if indentStack is empty\n                state.indentation = stream.indentation();\n            }\n\n            // skip spaces\n            if (stream.eatSpace()) {\n                return null;\n            }\n            var returnType = null;\n\n            switch(state.mode){\n                case \"string\": // multi-line string parsing mode\n                    var next, escaped = false;\n                    while ((next = stream.next()) != null) {\n                        if (next == \"\\\"\" && !escaped) {\n\n                            state.mode = false;\n                            break;\n                        }\n                        escaped = !escaped && next == \"\\\\\";\n                    }\n                    returnType = STRING; // continue on in string mode\n                    break;\n                default: // default parsing mode\n                    var ch = stream.next();\n\n                    if (ch == \"\\\"\") {\n                        state.mode = \"string\";\n                        returnType = STRING;\n                    } else if (ch == \"\\\\\") {\n                        eatCharacter(stream);\n                        returnType = CHARACTER;\n                    } else if (ch == \"'\" && !( tests.digit_or_colon.test(stream.peek()) )) {\n                        returnType = ATOM;\n                    } else if (ch == \";\") { // comment\n                        stream.skipToEnd(); // rest of the line is a comment\n                        returnType = COMMENT;\n                    } else if (isNumber(ch,stream)){\n                        returnType = NUMBER;\n                    } else if (ch == \"(\" || ch == \"[\" || ch == \"{\" ) {\n                        var keyWord = '', indentTemp = stream.column(), letter;\n                        /**\n                        Either\n                        (indent-word ..\n                        (non-indent-word ..\n                        (;something else, bracket, etc.\n                        */\n\n                        if (ch == \"(\") while ((letter = stream.eat(tests.keyword_char)) != null) {\n                            keyWord += letter;\n                        }\n\n                        if (keyWord.length > 0 && (indentKeys.propertyIsEnumerable(keyWord) ||\n                                                   /^(?:def|with)/.test(keyWord))) { // indent-word\n                            pushStack(state, indentTemp + INDENT_WORD_SKIP, ch);\n                        } else { // non-indent word\n                            // we continue eating the spaces\n                            stream.eatSpace();\n                            if (stream.eol() || stream.peek() == \";\") {\n                                // nothing significant after\n                                // we restart indentation the user defined spaces after\n                                pushStack(state, indentTemp + NORMAL_INDENT_UNIT, ch);\n                            } else {\n                                pushStack(state, indentTemp + stream.current().length, ch); // else we match\n                            }\n                        }\n                        stream.backUp(stream.current().length - 1); // undo all the eating\n\n                        returnType = BRACKET;\n                    } else if (ch == \")\" || ch == \"]\" || ch == \"}\") {\n                        returnType = BRACKET;\n                        if (state.indentStack != null && state.indentStack.type == (ch == \")\" ? \"(\" : (ch == \"]\" ? \"[\" :\"{\"))) {\n                            popStack(state);\n                        }\n                    } else if ( ch == \":\" ) {\n                        stream.eatWhile(tests.symbol);\n                        return ATOM;\n                    } else {\n                        stream.eatWhile(tests.symbol);\n\n                        if (keywords && keywords.propertyIsEnumerable(stream.current())) {\n                            returnType = KEYWORD;\n                        } else if (builtins && builtins.propertyIsEnumerable(stream.current())) {\n                            returnType = BUILTIN;\n                        } else if (atoms && atoms.propertyIsEnumerable(stream.current())) {\n                            returnType = ATOM;\n                        } else {\n                          returnType = VAR;\n                        }\n                    }\n            }\n\n            return returnType;\n        },\n\n        indent: function (state) {\n            if (state.indentStack == null) return state.indentation;\n            return state.indentStack.indent;\n        },\n\n        lineComment: \";;\"\n    };\n});\n\nCodeMirror.defineMIME(\"text/x-clojure\", \"clojure\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/clojure/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Clojure mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"clojure.js\"></script>\n<style>.CodeMirror {background: #f8f8f8;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Clojure</a>\n  </ul>\n</div>\n\n<article>\n<h2>Clojure mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n; Conway's Game of Life, based on the work of:\n;; Laurent Petit https://gist.github.com/1200343\n;; Christophe Grand http://clj-me.cgrand.net/2011/08/19/conways-game-of-life\n\n(ns ^{:doc \"Conway's Game of Life.\"}\n game-of-life)\n\n;; Core game of life's algorithm functions\n\n(defn neighbours\n  \"Given a cell's coordinates, returns the coordinates of its neighbours.\"\n  [[x y]]\n  (for [dx [-1 0 1] dy (if (zero? dx) [-1 1] [-1 0 1])]\n    [(+ dx x) (+ dy y)]))\n\n(defn step\n  \"Given a set of living cells, computes the new set of living cells.\"\n  [cells]\n  (set (for [[cell n] (frequencies (mapcat neighbours cells))\n             :when (or (= n 3) (and (= n 2) (cells cell)))]\n         cell)))\n\n;; Utility methods for displaying game on a text terminal\n\n(defn print-board\n  \"Prints a board on *out*, representing a step in the game.\"\n  [board w h]\n  (doseq [x (range (inc w)) y (range (inc h))]\n    (if (= y 0) (print \"\\n\"))\n    (print (if (board [x y]) \"[X]\" \" . \"))))\n\n(defn display-grids\n  \"Prints a squence of boards on *out*, representing several steps.\"\n  [grids w h]\n  (doseq [board grids]\n    (print-board board w h)\n    (print \"\\n\")))\n\n;; Launches an example board\n\n(def\n  ^{:doc \"board represents the initial set of living cells\"}\n   board #{[2 1] [2 2] [2 3]})\n\n(display-grids (take 3 (iterate step board)) 5 5)\n\n;; Let's play with characters\n(println \\1 \\a \\# \\\\\n         \\\" \\( \\newline\n         \\} \\\" \\space\n         \\tab \\return \\backspace\n         \\u1000 \\uAaAa \\u9F9F)\n\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {});\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-clojure</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/cobol/cobol.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/**\n * Author: Gautam Mehta\n * Branched from CodeMirror's Scheme mode\n */\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"cobol\", function () {\n  var BUILTIN = \"builtin\", COMMENT = \"comment\", STRING = \"string\",\n      ATOM = \"atom\", NUMBER = \"number\", KEYWORD = \"keyword\", MODTAG = \"header\",\n      COBOLLINENUM = \"def\", PERIOD = \"link\";\n  function makeKeywords(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n  var atoms = makeKeywords(\"TRUE FALSE ZEROES ZEROS ZERO SPACES SPACE LOW-VALUE LOW-VALUES \");\n  var keywords = makeKeywords(\n      \"ACCEPT ACCESS ACQUIRE ADD ADDRESS \" +\n      \"ADVANCING AFTER ALIAS ALL ALPHABET \" +\n      \"ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED \" +\n      \"ALSO ALTER ALTERNATE AND ANY \" +\n      \"ARE AREA AREAS ARITHMETIC ASCENDING \" +\n      \"ASSIGN AT ATTRIBUTE AUTHOR AUTO \" +\n      \"AUTO-SKIP AUTOMATIC B-AND B-EXOR B-LESS \" +\n      \"B-NOT B-OR BACKGROUND-COLOR BACKGROUND-COLOUR BEEP \" +\n      \"BEFORE BELL BINARY BIT BITS \" +\n      \"BLANK BLINK BLOCK BOOLEAN BOTTOM \" +\n      \"BY CALL CANCEL CD CF \" +\n      \"CH CHARACTER CHARACTERS CLASS CLOCK-UNITS \" +\n      \"CLOSE COBOL CODE CODE-SET COL \" +\n      \"COLLATING COLUMN COMMA COMMIT COMMITMENT \" +\n      \"COMMON COMMUNICATION COMP COMP-0 COMP-1 \" +\n      \"COMP-2 COMP-3 COMP-4 COMP-5 COMP-6 \" +\n      \"COMP-7 COMP-8 COMP-9 COMPUTATIONAL COMPUTATIONAL-0 \" +\n      \"COMPUTATIONAL-1 COMPUTATIONAL-2 COMPUTATIONAL-3 COMPUTATIONAL-4 COMPUTATIONAL-5 \" +\n      \"COMPUTATIONAL-6 COMPUTATIONAL-7 COMPUTATIONAL-8 COMPUTATIONAL-9 COMPUTE \" +\n      \"CONFIGURATION CONNECT CONSOLE CONTAINED CONTAINS \" +\n      \"CONTENT CONTINUE CONTROL CONTROL-AREA CONTROLS \" +\n      \"CONVERTING COPY CORR CORRESPONDING COUNT \" +\n      \"CRT CRT-UNDER CURRENCY CURRENT CURSOR \" +\n      \"DATA DATE DATE-COMPILED DATE-WRITTEN DAY \" +\n      \"DAY-OF-WEEK DB DB-ACCESS-CONTROL-KEY DB-DATA-NAME DB-EXCEPTION \" +\n      \"DB-FORMAT-NAME DB-RECORD-NAME DB-SET-NAME DB-STATUS DBCS \" +\n      \"DBCS-EDITED DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE \" +\n      \"DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING \" +\n      \"DECIMAL-POINT DECLARATIVES DEFAULT DELETE DELIMITED \" +\n      \"DELIMITER DEPENDING DESCENDING DESCRIBED DESTINATION \" +\n      \"DETAIL DISABLE DISCONNECT DISPLAY DISPLAY-1 \" +\n      \"DISPLAY-2 DISPLAY-3 DISPLAY-4 DISPLAY-5 DISPLAY-6 \" +\n      \"DISPLAY-7 DISPLAY-8 DISPLAY-9 DIVIDE DIVISION \" +\n      \"DOWN DROP DUPLICATE DUPLICATES DYNAMIC \" +\n      \"EBCDIC EGI EJECT ELSE EMI \" +\n      \"EMPTY EMPTY-CHECK ENABLE END END. END-ACCEPT END-ACCEPT. \" +\n      \"END-ADD END-CALL END-COMPUTE END-DELETE END-DISPLAY \" +\n      \"END-DIVIDE END-EVALUATE END-IF END-INVOKE END-MULTIPLY \" +\n      \"END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN \" +\n      \"END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT \" +\n      \"END-UNSTRING END-WRITE END-XML ENTER ENTRY \" +\n      \"ENVIRONMENT EOP EQUAL EQUALS ERASE \" +\n      \"ERROR ESI EVALUATE EVERY EXCEEDS \" +\n      \"EXCEPTION EXCLUSIVE EXIT EXTEND EXTERNAL \" +\n      \"EXTERNALLY-DESCRIBED-KEY FD FETCH FILE FILE-CONTROL \" +\n      \"FILE-STREAM FILES FILLER FINAL FIND \" +\n      \"FINISH FIRST FOOTING FOR FOREGROUND-COLOR \" +\n      \"FOREGROUND-COLOUR FORMAT FREE FROM FULL \" +\n      \"FUNCTION GENERATE GET GIVING GLOBAL \" +\n      \"GO GOBACK GREATER GROUP HEADING \" +\n      \"HIGH-VALUE HIGH-VALUES HIGHLIGHT I-O I-O-CONTROL \" +\n      \"ID IDENTIFICATION IF IN INDEX \" +\n      \"INDEX-1 INDEX-2 INDEX-3 INDEX-4 INDEX-5 \" +\n      \"INDEX-6 INDEX-7 INDEX-8 INDEX-9 INDEXED \" +\n      \"INDIC INDICATE INDICATOR INDICATORS INITIAL \" +\n      \"INITIALIZE INITIATE INPUT INPUT-OUTPUT INSPECT \" +\n      \"INSTALLATION INTO INVALID INVOKE IS \" +\n      \"JUST JUSTIFIED KANJI KEEP KEY \" +\n      \"LABEL LAST LD LEADING LEFT \" +\n      \"LEFT-JUSTIFY LENGTH LENGTH-CHECK LESS LIBRARY \" +\n      \"LIKE LIMIT LIMITS LINAGE LINAGE-COUNTER \" +\n      \"LINE LINE-COUNTER LINES LINKAGE LOCAL-STORAGE \" +\n      \"LOCALE LOCALLY LOCK \" +\n      \"MEMBER MEMORY MERGE MESSAGE METACLASS \" +\n      \"MODE MODIFIED MODIFY MODULES MOVE \" +\n      \"MULTIPLE MULTIPLY NATIONAL NATIVE NEGATIVE \" +\n      \"NEXT NO NO-ECHO NONE NOT \" +\n      \"NULL NULL-KEY-MAP NULL-MAP NULLS NUMBER \" +\n      \"NUMERIC NUMERIC-EDITED OBJECT OBJECT-COMPUTER OCCURS \" +\n      \"OF OFF OMITTED ON ONLY \" +\n      \"OPEN OPTIONAL OR ORDER ORGANIZATION \" +\n      \"OTHER OUTPUT OVERFLOW OWNER PACKED-DECIMAL \" +\n      \"PADDING PAGE PAGE-COUNTER PARSE PERFORM \" +\n      \"PF PH PIC PICTURE PLUS \" +\n      \"POINTER POSITION POSITIVE PREFIX PRESENT \" +\n      \"PRINTING PRIOR PROCEDURE PROCEDURE-POINTER PROCEDURES \" +\n      \"PROCEED PROCESS PROCESSING PROGRAM PROGRAM-ID \" +\n      \"PROMPT PROTECTED PURGE QUEUE QUOTE \" +\n      \"QUOTES RANDOM RD READ READY \" +\n      \"REALM RECEIVE RECONNECT RECORD RECORD-NAME \" +\n      \"RECORDS RECURSIVE REDEFINES REEL REFERENCE \" +\n      \"REFERENCE-MONITOR REFERENCES RELATION RELATIVE RELEASE \" +\n      \"REMAINDER REMOVAL RENAMES REPEATED REPLACE \" +\n      \"REPLACING REPORT REPORTING REPORTS REPOSITORY \" +\n      \"REQUIRED RERUN RESERVE RESET RETAINING \" +\n      \"RETRIEVAL RETURN RETURN-CODE RETURNING REVERSE-VIDEO \" +\n      \"REVERSED REWIND REWRITE RF RH \" +\n      \"RIGHT RIGHT-JUSTIFY ROLLBACK ROLLING ROUNDED \" +\n      \"RUN SAME SCREEN SD SEARCH \" +\n      \"SECTION SECURE SECURITY SEGMENT SEGMENT-LIMIT \" +\n      \"SELECT SEND SENTENCE SEPARATE SEQUENCE \" +\n      \"SEQUENTIAL SET SHARED SIGN SIZE \" +\n      \"SKIP1 SKIP2 SKIP3 SORT SORT-MERGE \" +\n      \"SORT-RETURN SOURCE SOURCE-COMPUTER SPACE-FILL \" +\n      \"SPECIAL-NAMES STANDARD STANDARD-1 STANDARD-2 \" +\n      \"START STARTING STATUS STOP STORE \" +\n      \"STRING SUB-QUEUE-1 SUB-QUEUE-2 SUB-QUEUE-3 SUB-SCHEMA \" +\n      \"SUBFILE SUBSTITUTE SUBTRACT SUM SUPPRESS \" +\n      \"SYMBOLIC SYNC SYNCHRONIZED SYSIN SYSOUT \" +\n      \"TABLE TALLYING TAPE TENANT TERMINAL \" +\n      \"TERMINATE TEST TEXT THAN THEN \" +\n      \"THROUGH THRU TIME TIMES TITLE \" +\n      \"TO TOP TRAILING TRAILING-SIGN TRANSACTION \" +\n      \"TYPE TYPEDEF UNDERLINE UNEQUAL UNIT \" +\n      \"UNSTRING UNTIL UP UPDATE UPON \" +\n      \"USAGE USAGE-MODE USE USING VALID \" +\n      \"VALIDATE VALUE VALUES VARYING VLR \" +\n      \"WAIT WHEN WHEN-COMPILED WITH WITHIN \" +\n      \"WORDS WORKING-STORAGE WRITE XML XML-CODE \" +\n      \"XML-EVENT XML-NTEXT XML-TEXT ZERO ZERO-FILL \" );\n\n  var builtins = makeKeywords(\"- * ** / + < <= = > >= \");\n  var tests = {\n    digit: /\\d/,\n    digit_or_colon: /[\\d:]/,\n    hex: /[0-9a-f]/i,\n    sign: /[+-]/,\n    exponent: /e/i,\n    keyword_char: /[^\\s\\(\\[\\;\\)\\]]/,\n    symbol: /[\\w*+\\-]/\n  };\n  function isNumber(ch, stream){\n    // hex\n    if ( ch === '0' && stream.eat(/x/i) ) {\n      stream.eatWhile(tests.hex);\n      return true;\n    }\n    // leading sign\n    if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) {\n      stream.eat(tests.sign);\n      ch = stream.next();\n    }\n    if ( tests.digit.test(ch) ) {\n      stream.eat(ch);\n      stream.eatWhile(tests.digit);\n      if ( '.' == stream.peek()) {\n        stream.eat('.');\n        stream.eatWhile(tests.digit);\n      }\n      if ( stream.eat(tests.exponent) ) {\n        stream.eat(tests.sign);\n        stream.eatWhile(tests.digit);\n      }\n      return true;\n    }\n    return false;\n  }\n  return {\n    startState: function () {\n      return {\n        indentStack: null,\n        indentation: 0,\n        mode: false\n      };\n    },\n    token: function (stream, state) {\n      if (state.indentStack == null && stream.sol()) {\n        // update indentation, but only if indentStack is empty\n        state.indentation = 6 ; //stream.indentation();\n      }\n      // skip spaces\n      if (stream.eatSpace()) {\n        return null;\n      }\n      var returnType = null;\n      switch(state.mode){\n      case \"string\": // multi-line string parsing mode\n        var next = false;\n        while ((next = stream.next()) != null) {\n          if (next == \"\\\"\" || next == \"\\'\") {\n            state.mode = false;\n            break;\n          }\n        }\n        returnType = STRING; // continue on in string mode\n        break;\n      default: // default parsing mode\n        var ch = stream.next();\n        var col = stream.column();\n        if (col >= 0 && col <= 5) {\n          returnType = COBOLLINENUM;\n        } else if (col >= 72 && col <= 79) {\n          stream.skipToEnd();\n          returnType = MODTAG;\n        } else if (ch == \"*\" && col == 6) { // comment\n          stream.skipToEnd(); // rest of the line is a comment\n          returnType = COMMENT;\n        } else if (ch == \"\\\"\" || ch == \"\\'\") {\n          state.mode = \"string\";\n          returnType = STRING;\n        } else if (ch == \"'\" && !( tests.digit_or_colon.test(stream.peek()) )) {\n          returnType = ATOM;\n        } else if (ch == \".\") {\n          returnType = PERIOD;\n        } else if (isNumber(ch,stream)){\n          returnType = NUMBER;\n        } else {\n          if (stream.current().match(tests.symbol)) {\n            while (col < 71) {\n              if (stream.eat(tests.symbol) === undefined) {\n                break;\n              } else {\n                col++;\n              }\n            }\n          }\n          if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) {\n            returnType = KEYWORD;\n          } else if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) {\n            returnType = BUILTIN;\n          } else if (atoms && atoms.propertyIsEnumerable(stream.current().toUpperCase())) {\n            returnType = ATOM;\n          } else returnType = null;\n        }\n      }\n      return returnType;\n    },\n    indent: function (state) {\n      if (state.indentStack == null) return state.indentation;\n      return state.indentStack.indent;\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-cobol\", \"cobol\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/cobol/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: COBOL mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../theme/neat.css\">\n<link rel=\"stylesheet\" href=\"../../theme/elegant.css\">\n<link rel=\"stylesheet\" href=\"../../theme/erlang-dark.css\">\n<link rel=\"stylesheet\" href=\"../../theme/night.css\">\n<link rel=\"stylesheet\" href=\"../../theme/monokai.css\">\n<link rel=\"stylesheet\" href=\"../../theme/cobalt.css\">\n<link rel=\"stylesheet\" href=\"../../theme/eclipse.css\">\n<link rel=\"stylesheet\" href=\"../../theme/rubyblue.css\">\n<link rel=\"stylesheet\" href=\"../../theme/lesser-dark.css\">\n<link rel=\"stylesheet\" href=\"../../theme/xq-dark.css\">\n<link rel=\"stylesheet\" href=\"../../theme/xq-light.css\">\n<link rel=\"stylesheet\" href=\"../../theme/ambiance.css\">\n<link rel=\"stylesheet\" href=\"../../theme/blackboard.css\">\n<link rel=\"stylesheet\" href=\"../../theme/vibrant-ink.css\">\n<link rel=\"stylesheet\" href=\"../../theme/solarized.css\">\n<link rel=\"stylesheet\" href=\"../../theme/twilight.css\">\n<link rel=\"stylesheet\" href=\"../../theme/midnight.css\">\n<link rel=\"stylesheet\" href=\"../../addon/dialog/dialog.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"cobol.js\"></script>\n<script src=\"../../addon/selection/active-line.js\"></script>\n<script src=\"../../addon/search/search.js\"></script>\n<script src=\"../../addon/dialog/dialog.js\"></script>\n<script src=\"../../addon/search/searchcursor.js\"></script>\n<style>\n        .CodeMirror {\n          border: 1px solid #eee;\n          font-size : 20px;\n          height : auto !important;\n        }\n        .CodeMirror-activeline-background {background: #555555 !important;}\n    </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">COBOL</a>\n  </ul>\n</div>\n\n<article>\n<h2>COBOL mode</h2>\n\n    <p> Select Theme <select onchange=\"selectTheme()\" id=\"selectTheme\">\n        <option>default</option>\n        <option>ambiance</option>\n        <option>blackboard</option>\n        <option>cobalt</option>\n        <option>eclipse</option>\n        <option>elegant</option>\n        <option>erlang-dark</option>\n        <option>lesser-dark</option>\n        <option>midnight</option>\n        <option>monokai</option>\n        <option>neat</option>\n        <option>night</option>\n        <option>rubyblue</option>\n        <option>solarized dark</option>\n        <option>solarized light</option>\n        <option selected>twilight</option>\n        <option>vibrant-ink</option>\n        <option>xq-dark</option>\n        <option>xq-light</option>\n    </select>    Select Font Size <select onchange=\"selectFontsize()\" id=\"selectFontSize\">\n          <option value=\"13px\">13px</option>\n          <option value=\"14px\">14px</option>\n          <option value=\"16px\">16px</option>\n          <option value=\"18px\">18px</option>\n          <option value=\"20px\" selected=\"selected\">20px</option>\n          <option value=\"24px\">24px</option>\n          <option value=\"26px\">26px</option>\n          <option value=\"28px\">28px</option>\n          <option value=\"30px\">30px</option>\n          <option value=\"32px\">32px</option>\n          <option value=\"34px\">34px</option>\n          <option value=\"36px\">36px</option>\n        </select>\n<label for=\"checkBoxReadOnly\">Read-only</label>\n<input type=\"checkbox\" id=\"checkBoxReadOnly\" onchange=\"selectReadOnly()\">\n<label for=\"id_tabToIndentSpace\">Insert Spaces on Tab</label>\n<input type=\"checkbox\" id=\"id_tabToIndentSpace\" onchange=\"tabToIndentSpace()\">\n</p>\n<textarea id=\"code\" name=\"code\">\n---------1---------2---------3---------4---------5---------6---------7---------8\n12345678911234567892123456789312345678941234567895123456789612345678971234567898\n000010 IDENTIFICATION DIVISION.                                        MODTGHERE\n000020 PROGRAM-ID.       SAMPLE.\n000030 AUTHOR.           TEST SAM. \n000040 DATE-WRITTEN.     5 February 2013\n000041\n000042* A sample program just to show the form.\n000043* The program copies its input to the output,\n000044* and counts the number of records.\n000045* At the end this number is printed.\n000046\n000050 ENVIRONMENT DIVISION.\n000060 INPUT-OUTPUT SECTION.\n000070 FILE-CONTROL.\n000080     SELECT STUDENT-FILE     ASSIGN TO SYSIN\n000090         ORGANIZATION IS LINE SEQUENTIAL.\n000100     SELECT PRINT-FILE       ASSIGN TO SYSOUT\n000110         ORGANIZATION IS LINE SEQUENTIAL.\n000120\n000130 DATA DIVISION.\n000140 FILE SECTION.\n000150 FD  STUDENT-FILE\n000160     RECORD CONTAINS 43 CHARACTERS\n000170     DATA RECORD IS STUDENT-IN.\n000180 01  STUDENT-IN              PIC X(43).\n000190\n000200 FD  PRINT-FILE\n000210     RECORD CONTAINS 80 CHARACTERS\n000220     DATA RECORD IS PRINT-LINE.\n000230 01  PRINT-LINE              PIC X(80).\n000240\n000250 WORKING-STORAGE SECTION.\n000260 01  DATA-REMAINS-SWITCH     PIC X(2)      VALUE SPACES.\n000261 01  RECORDS-WRITTEN         PIC 99.\n000270\n000280 01  DETAIL-LINE.\n000290     05  FILLER              PIC X(7)      VALUE SPACES.\n000300     05  RECORD-IMAGE        PIC X(43).\n000310     05  FILLER              PIC X(30)     VALUE SPACES.\n000311 \n000312 01  SUMMARY-LINE.\n000313     05  FILLER              PIC X(7)      VALUE SPACES.\n000314     05  TOTAL-READ          PIC 99.\n000315     05  FILLER              PIC X         VALUE SPACE.\n000316     05  FILLER              PIC X(17)     \n000317                 VALUE  'Records were read'.\n000318     05  FILLER              PIC X(53)     VALUE SPACES.\n000319\n000320 PROCEDURE DIVISION.\n000321\n000330 PREPARE-SENIOR-REPORT.\n000340     OPEN INPUT  STUDENT-FILE\n000350          OUTPUT PRINT-FILE.\n000351     MOVE ZERO TO RECORDS-WRITTEN.\n000360     READ STUDENT-FILE\n000370         AT END MOVE 'NO' TO DATA-REMAINS-SWITCH\n000380     END-READ.\n000390     PERFORM PROCESS-RECORDS\n000410         UNTIL DATA-REMAINS-SWITCH = 'NO'.\n000411     PERFORM PRINT-SUMMARY.\n000420     CLOSE STUDENT-FILE\n000430           PRINT-FILE.\n000440     STOP RUN.\n000450\n000460 PROCESS-RECORDS.\n000470     MOVE STUDENT-IN TO RECORD-IMAGE.\n000480     MOVE DETAIL-LINE TO PRINT-LINE.\n000490     WRITE PRINT-LINE.\n000500     ADD 1 TO RECORDS-WRITTEN.\n000510     READ STUDENT-FILE\n000520         AT END MOVE 'NO' TO DATA-REMAINS-SWITCH\n000530     END-READ. \n000540\n000550 PRINT-SUMMARY.\n000560     MOVE RECORDS-WRITTEN TO TOTAL-READ.\n000570     MOVE SUMMARY-LINE TO PRINT-LINE.\n000571     WRITE PRINT-LINE. \n000572\n000580\n</textarea>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"text/x-cobol\",\n        theme : \"twilight\",\n        styleActiveLine: true,\n        showCursorWhenSelecting : true,  \n      });\n      function selectTheme() {\n        var themeInput = document.getElementById(\"selectTheme\");\n        var theme = themeInput.options[themeInput.selectedIndex].innerHTML;\n        editor.setOption(\"theme\", theme);\n      }\n      function selectFontsize() {\n        var fontSizeInput = document.getElementById(\"selectFontSize\");\n        var fontSize = fontSizeInput.options[fontSizeInput.selectedIndex].innerHTML;\n        editor.getWrapperElement().style.fontSize = fontSize;\n        editor.refresh();\n      }\n      function selectReadOnly() {\n        editor.setOption(\"readOnly\", document.getElementById(\"checkBoxReadOnly\").checked);\n      }\n      function tabToIndentSpace() {\n        if (document.getElementById(\"id_tabToIndentSpace\").checked) {\n            editor.setOption(\"extraKeys\", {Tab: function(cm) { cm.replaceSelection(\"    \", \"end\"); }});\n        } else {\n            editor.setOption(\"extraKeys\", {Tab: function(cm) { cm.replaceSelection(\"    \", \"end\"); }});\n        }\n      }\n    </script>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/coffeescript/coffeescript.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/**\n * Link to the project's GitHub page:\n * https://github.com/pickhardt/coffeescript-codemirror-mode\n */\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"coffeescript\", function(conf, parserConf) {\n  var ERRORCLASS = \"error\";\n\n  function wordRegexp(words) {\n    return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n  }\n\n  var operators = /^(?:->|=>|\\+[+=]?|-[\\-=]?|\\*[\\*=]?|\\/[\\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\\|=?|\\^=?|\\~|!|\\?|(or|and|\\|\\||&&|\\?)=)/;\n  var delimiters = /^(?:[()\\[\\]{},:`=;]|\\.\\.?\\.?)/;\n  var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/;\n  var properties = /^(@|this\\.)[_A-Za-z$][_A-Za-z$0-9]*/;\n\n  var wordOperators = wordRegexp([\"and\", \"or\", \"not\",\n                                  \"is\", \"isnt\", \"in\",\n                                  \"instanceof\", \"typeof\"]);\n  var indentKeywords = [\"for\", \"while\", \"loop\", \"if\", \"unless\", \"else\",\n                        \"switch\", \"try\", \"catch\", \"finally\", \"class\"];\n  var commonKeywords = [\"break\", \"by\", \"continue\", \"debugger\", \"delete\",\n                        \"do\", \"in\", \"of\", \"new\", \"return\", \"then\",\n                        \"this\", \"@\", \"throw\", \"when\", \"until\", \"extends\"];\n\n  var keywords = wordRegexp(indentKeywords.concat(commonKeywords));\n\n  indentKeywords = wordRegexp(indentKeywords);\n\n\n  var stringPrefixes = /^('{3}|\\\"{3}|['\\\"])/;\n  var regexPrefixes = /^(\\/{3}|\\/)/;\n  var commonConstants = [\"Infinity\", \"NaN\", \"undefined\", \"null\", \"true\", \"false\", \"on\", \"off\", \"yes\", \"no\"];\n  var constants = wordRegexp(commonConstants);\n\n  // Tokenizers\n  function tokenBase(stream, state) {\n    // Handle scope changes\n    if (stream.sol()) {\n      if (state.scope.align === null) state.scope.align = false;\n      var scopeOffset = state.scope.offset;\n      if (stream.eatSpace()) {\n        var lineOffset = stream.indentation();\n        if (lineOffset > scopeOffset && state.scope.type == \"coffee\") {\n          return \"indent\";\n        } else if (lineOffset < scopeOffset) {\n          return \"dedent\";\n        }\n        return null;\n      } else {\n        if (scopeOffset > 0) {\n          dedent(stream, state);\n        }\n      }\n    }\n    if (stream.eatSpace()) {\n      return null;\n    }\n\n    var ch = stream.peek();\n\n    // Handle docco title comment (single line)\n    if (stream.match(\"####\")) {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n\n    // Handle multi line comments\n    if (stream.match(\"###\")) {\n      state.tokenize = longComment;\n      return state.tokenize(stream, state);\n    }\n\n    // Single line comment\n    if (ch === \"#\") {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n\n    // Handle number literals\n    if (stream.match(/^-?[0-9\\.]/, false)) {\n      var floatLiteral = false;\n      // Floats\n      if (stream.match(/^-?\\d*\\.\\d+(e[\\+\\-]?\\d+)?/i)) {\n        floatLiteral = true;\n      }\n      if (stream.match(/^-?\\d+\\.\\d*/)) {\n        floatLiteral = true;\n      }\n      if (stream.match(/^-?\\.\\d+/)) {\n        floatLiteral = true;\n      }\n\n      if (floatLiteral) {\n        // prevent from getting extra . on 1..\n        if (stream.peek() == \".\"){\n          stream.backUp(1);\n        }\n        return \"number\";\n      }\n      // Integers\n      var intLiteral = false;\n      // Hex\n      if (stream.match(/^-?0x[0-9a-f]+/i)) {\n        intLiteral = true;\n      }\n      // Decimal\n      if (stream.match(/^-?[1-9]\\d*(e[\\+\\-]?\\d+)?/)) {\n        intLiteral = true;\n      }\n      // Zero by itself with no other piece of number.\n      if (stream.match(/^-?0(?![\\dx])/i)) {\n        intLiteral = true;\n      }\n      if (intLiteral) {\n        return \"number\";\n      }\n    }\n\n    // Handle strings\n    if (stream.match(stringPrefixes)) {\n      state.tokenize = tokenFactory(stream.current(), false, \"string\");\n      return state.tokenize(stream, state);\n    }\n    // Handle regex literals\n    if (stream.match(regexPrefixes)) {\n      if (stream.current() != \"/\" || stream.match(/^.*\\//, false)) { // prevent highlight of division\n        state.tokenize = tokenFactory(stream.current(), true, \"string-2\");\n        return state.tokenize(stream, state);\n      } else {\n        stream.backUp(1);\n      }\n    }\n\n    // Handle operators and delimiters\n    if (stream.match(operators) || stream.match(wordOperators)) {\n      return \"operator\";\n    }\n    if (stream.match(delimiters)) {\n      return \"punctuation\";\n    }\n\n    if (stream.match(constants)) {\n      return \"atom\";\n    }\n\n    if (stream.match(keywords)) {\n      return \"keyword\";\n    }\n\n    if (stream.match(identifiers)) {\n      return \"variable\";\n    }\n\n    if (stream.match(properties)) {\n      return \"property\";\n    }\n\n    // Handle non-detected items\n    stream.next();\n    return ERRORCLASS;\n  }\n\n  function tokenFactory(delimiter, singleline, outclass) {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        stream.eatWhile(/[^'\"\\/\\\\]/);\n        if (stream.eat(\"\\\\\")) {\n          stream.next();\n          if (singleline && stream.eol()) {\n            return outclass;\n          }\n        } else if (stream.match(delimiter)) {\n          state.tokenize = tokenBase;\n          return outclass;\n        } else {\n          stream.eat(/['\"\\/]/);\n        }\n      }\n      if (singleline) {\n        if (parserConf.singleLineStringErrors) {\n          outclass = ERRORCLASS;\n        } else {\n          state.tokenize = tokenBase;\n        }\n      }\n      return outclass;\n    };\n  }\n\n  function longComment(stream, state) {\n    while (!stream.eol()) {\n      stream.eatWhile(/[^#]/);\n      if (stream.match(\"###\")) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      stream.eatWhile(\"#\");\n    }\n    return \"comment\";\n  }\n\n  function indent(stream, state, type) {\n    type = type || \"coffee\";\n    var offset = 0, align = false, alignOffset = null;\n    for (var scope = state.scope; scope; scope = scope.prev) {\n      if (scope.type === \"coffee\" || scope.type == \"}\") {\n        offset = scope.offset + conf.indentUnit;\n        break;\n      }\n    }\n    if (type !== \"coffee\") {\n      align = null;\n      alignOffset = stream.column() + stream.current().length;\n    } else if (state.scope.align) {\n      state.scope.align = false;\n    }\n    state.scope = {\n      offset: offset,\n      type: type,\n      prev: state.scope,\n      align: align,\n      alignOffset: alignOffset\n    };\n  }\n\n  function dedent(stream, state) {\n    if (!state.scope.prev) return;\n    if (state.scope.type === \"coffee\") {\n      var _indent = stream.indentation();\n      var matched = false;\n      for (var scope = state.scope; scope; scope = scope.prev) {\n        if (_indent === scope.offset) {\n          matched = true;\n          break;\n        }\n      }\n      if (!matched) {\n        return true;\n      }\n      while (state.scope.prev && state.scope.offset !== _indent) {\n        state.scope = state.scope.prev;\n      }\n      return false;\n    } else {\n      state.scope = state.scope.prev;\n      return false;\n    }\n  }\n\n  function tokenLexer(stream, state) {\n    var style = state.tokenize(stream, state);\n    var current = stream.current();\n\n    // Handle \".\" connected identifiers\n    if (current === \".\") {\n      style = state.tokenize(stream, state);\n      current = stream.current();\n      if (/^\\.[\\w$]+$/.test(current)) {\n        return \"variable\";\n      } else {\n        return ERRORCLASS;\n      }\n    }\n\n    // Handle scope changes.\n    if (current === \"return\") {\n      state.dedent = true;\n    }\n    if (((current === \"->\" || current === \"=>\") &&\n         !state.lambda &&\n         !stream.peek())\n        || style === \"indent\") {\n      indent(stream, state);\n    }\n    var delimiter_index = \"[({\".indexOf(current);\n    if (delimiter_index !== -1) {\n      indent(stream, state, \"])}\".slice(delimiter_index, delimiter_index+1));\n    }\n    if (indentKeywords.exec(current)){\n      indent(stream, state);\n    }\n    if (current == \"then\"){\n      dedent(stream, state);\n    }\n\n\n    if (style === \"dedent\") {\n      if (dedent(stream, state)) {\n        return ERRORCLASS;\n      }\n    }\n    delimiter_index = \"])}\".indexOf(current);\n    if (delimiter_index !== -1) {\n      while (state.scope.type == \"coffee\" && state.scope.prev)\n        state.scope = state.scope.prev;\n      if (state.scope.type == current)\n        state.scope = state.scope.prev;\n    }\n    if (state.dedent && stream.eol()) {\n      if (state.scope.type == \"coffee\" && state.scope.prev)\n        state.scope = state.scope.prev;\n      state.dedent = false;\n    }\n\n    return style;\n  }\n\n  var external = {\n    startState: function(basecolumn) {\n      return {\n        tokenize: tokenBase,\n        scope: {offset:basecolumn || 0, type:\"coffee\", prev: null, align: false},\n        lastToken: null,\n        lambda: false,\n        dedent: 0\n      };\n    },\n\n    token: function(stream, state) {\n      var fillAlign = state.scope.align === null && state.scope;\n      if (fillAlign && stream.sol()) fillAlign.align = false;\n\n      var style = tokenLexer(stream, state);\n      if (fillAlign && style && style != \"comment\") fillAlign.align = true;\n\n      state.lastToken = {style:style, content: stream.current()};\n\n      if (stream.eol() && stream.lambda) {\n        state.lambda = false;\n      }\n\n      return style;\n    },\n\n    indent: function(state, text) {\n      if (state.tokenize != tokenBase) return 0;\n      var scope = state.scope;\n      var closer = text && \"])}\".indexOf(text.charAt(0)) > -1;\n      if (closer) while (scope.type == \"coffee\" && scope.prev) scope = scope.prev;\n      var closes = closer && scope.type === text.charAt(0);\n      if (scope.align)\n        return scope.alignOffset - (closes ? 1 : 0);\n      else\n        return (closes ? scope.prev : scope).offset;\n    },\n\n    lineComment: \"#\",\n    fold: \"indent\"\n  };\n  return external;\n});\n\nCodeMirror.defineMIME(\"text/x-coffeescript\", \"coffeescript\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/coffeescript/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: CoffeeScript mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"coffeescript.js\"></script>\n<style>.CodeMirror {border-top: 1px solid silver; border-bottom: 1px solid silver;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">CoffeeScript</a>\n  </ul>\n</div>\n\n<article>\n<h2>CoffeeScript mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n# CoffeeScript mode for CodeMirror\n# Copyright (c) 2011 Jeff Pickhardt, released under\n# the MIT License.\n#\n# Modified from the Python CodeMirror mode, which also is \n# under the MIT License Copyright (c) 2010 Timothy Farrell.\n#\n# The following script, Underscore.coffee, is used to \n# demonstrate CoffeeScript mode for CodeMirror.\n#\n# To download CoffeeScript mode for CodeMirror, go to:\n# https://github.com/pickhardt/coffeescript-codemirror-mode\n\n# **Underscore.coffee\n# (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.**\n# Underscore is freely distributable under the terms of the\n# [MIT license](http://en.wikipedia.org/wiki/MIT_License).\n# Portions of Underscore are inspired by or borrowed from\n# [Prototype.js](http://prototypejs.org/api), Oliver Steele's\n# [Functional](http://osteele.com), and John Resig's\n# [Micro-Templating](http://ejohn.org).\n# For all details and documentation:\n# http://documentcloud.github.com/underscore/\n\n\n# Baseline setup\n# --------------\n\n# Establish the root object, `window` in the browser, or `global` on the server.\nroot = this\n\n\n# Save the previous value of the `_` variable.\npreviousUnderscore = root._\n\n### Multiline\n    comment\n###\n\n# Establish the object that gets thrown to break out of a loop iteration.\n# `StopIteration` is SOP on Mozilla.\nbreaker = if typeof(StopIteration) is 'undefined' then '__break__' else StopIteration\n\n\n#### Docco style single line comment (title)\n\n\n# Helper function to escape **RegExp** contents, because JS doesn't have one.\nescapeRegExp = (string) -> string.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1')\n\n\n# Save bytes in the minified (but not gzipped) version:\nArrayProto = Array.prototype\nObjProto = Object.prototype\n\n\n# Create quick reference variables for speed access to core prototypes.\nslice = ArrayProto.slice\nunshift = ArrayProto.unshift\ntoString = ObjProto.toString\nhasOwnProperty = ObjProto.hasOwnProperty\npropertyIsEnumerable = ObjProto.propertyIsEnumerable\n\n\n# All **ECMA5** native implementations we hope to use are declared here.\nnativeForEach = ArrayProto.forEach\nnativeMap = ArrayProto.map\nnativeReduce = ArrayProto.reduce\nnativeReduceRight = ArrayProto.reduceRight\nnativeFilter = ArrayProto.filter\nnativeEvery = ArrayProto.every\nnativeSome = ArrayProto.some\nnativeIndexOf = ArrayProto.indexOf\nnativeLastIndexOf = ArrayProto.lastIndexOf\nnativeIsArray = Array.isArray\nnativeKeys = Object.keys\n\n\n# Create a safe reference to the Underscore object for use below.\n_ = (obj) -> new wrapper(obj)\n\n\n# Export the Underscore object for **CommonJS**.\nif typeof(exports) != 'undefined' then exports._ = _\n\n\n# Export Underscore to global scope.\nroot._ = _\n\n\n# Current version.\n_.VERSION = '1.1.0'\n\n\n# Collection Functions\n# --------------------\n\n# The cornerstone, an **each** implementation.\n# Handles objects implementing **forEach**, arrays, and raw objects.\n_.each = (obj, iterator, context) ->\n  try\n    if nativeForEach and obj.forEach is nativeForEach\n      obj.forEach iterator, context\n    else if _.isNumber obj.length\n      iterator.call context, obj[i], i, obj for i in [0...obj.length]\n    else\n      iterator.call context, val, key, obj for own key, val of obj\n  catch e\n    throw e if e isnt breaker\n  obj\n\n\n# Return the results of applying the iterator to each element. Use JavaScript\n# 1.6's version of **map**, if possible.\n_.map = (obj, iterator, context) ->\n  return obj.map(iterator, context) if nativeMap and obj.map is nativeMap\n  results = []\n  _.each obj, (value, index, list) ->\n    results.push iterator.call context, value, index, list\n  results\n\n\n# **Reduce** builds up a single result from a list of values. Also known as\n# **inject**, or **foldl**. Uses JavaScript 1.8's version of **reduce**, if possible.\n_.reduce = (obj, iterator, memo, context) ->\n  if nativeReduce and obj.reduce is nativeReduce\n    iterator = _.bind iterator, context if context\n    return obj.reduce iterator, memo\n  _.each obj, (value, index, list) ->\n    memo = iterator.call context, memo, value, index, list\n  memo\n\n\n# The right-associative version of **reduce**, also known as **foldr**. Uses\n# JavaScript 1.8's version of **reduceRight**, if available.\n_.reduceRight = (obj, iterator, memo, context) ->\n  if nativeReduceRight and obj.reduceRight is nativeReduceRight\n    iterator = _.bind iterator, context if context\n    return obj.reduceRight iterator, memo\n  reversed = _.clone(_.toArray(obj)).reverse()\n  _.reduce reversed, iterator, memo, context\n\n\n# Return the first value which passes a truth test.\n_.detect = (obj, iterator, context) ->\n  result = null\n  _.each obj, (value, index, list) ->\n    if iterator.call context, value, index, list\n      result = value\n      _.breakLoop()\n  result\n\n\n# Return all the elements that pass a truth test. Use JavaScript 1.6's\n# **filter**, if it exists.\n_.filter = (obj, iterator, context) ->\n  return obj.filter iterator, context if nativeFilter and obj.filter is nativeFilter\n  results = []\n  _.each obj, (value, index, list) ->\n    results.push value if iterator.call context, value, index, list\n  results\n\n\n# Return all the elements for which a truth test fails.\n_.reject = (obj, iterator, context) ->\n  results = []\n  _.each obj, (value, index, list) ->\n    results.push value if not iterator.call context, value, index, list\n  results\n\n\n# Determine whether all of the elements match a truth test. Delegate to\n# JavaScript 1.6's **every**, if it is present.\n_.every = (obj, iterator, context) ->\n  iterator ||= _.identity\n  return obj.every iterator, context if nativeEvery and obj.every is nativeEvery\n  result = true\n  _.each obj, (value, index, list) ->\n    _.breakLoop() unless (result = result and iterator.call(context, value, index, list))\n  result\n\n\n# Determine if at least one element in the object matches a truth test. Use\n# JavaScript 1.6's **some**, if it exists.\n_.some = (obj, iterator, context) ->\n  iterator ||= _.identity\n  return obj.some iterator, context if nativeSome and obj.some is nativeSome\n  result = false\n  _.each obj, (value, index, list) ->\n    _.breakLoop() if (result = iterator.call(context, value, index, list))\n  result\n\n\n# Determine if a given value is included in the array or object,\n# based on `===`.\n_.include = (obj, target) ->\n  return _.indexOf(obj, target) isnt -1 if nativeIndexOf and obj.indexOf is nativeIndexOf\n  return true for own key, val of obj when val is target\n  false\n\n\n# Invoke a method with arguments on every item in a collection.\n_.invoke = (obj, method) ->\n  args = _.rest arguments, 2\n  (if method then val[method] else val).apply(val, args) for val in obj\n\n\n# Convenience version of a common use case of **map**: fetching a property.\n_.pluck = (obj, key) ->\n  _.map(obj, (val) -> val[key])\n\n\n# Return the maximum item or (item-based computation).\n_.max = (obj, iterator, context) ->\n  return Math.max.apply(Math, obj) if not iterator and _.isArray(obj)\n  result = computed: -Infinity\n  _.each obj, (value, index, list) ->\n    computed = if iterator then iterator.call(context, value, index, list) else value\n    computed >= result.computed and (result = {value: value, computed: computed})\n  result.value\n\n\n# Return the minimum element (or element-based computation).\n_.min = (obj, iterator, context) ->\n  return Math.min.apply(Math, obj) if not iterator and _.isArray(obj)\n  result = computed: Infinity\n  _.each obj, (value, index, list) ->\n    computed = if iterator then iterator.call(context, value, index, list) else value\n    computed < result.computed and (result = {value: value, computed: computed})\n  result.value\n\n\n# Sort the object's values by a criterion produced by an iterator.\n_.sortBy = (obj, iterator, context) ->\n  _.pluck(((_.map obj, (value, index, list) ->\n    {value: value, criteria: iterator.call(context, value, index, list)}\n  ).sort((left, right) ->\n    a = left.criteria; b = right.criteria\n    if a < b then -1 else if a > b then 1 else 0\n  )), 'value')\n\n\n# Use a comparator function to figure out at what index an object should\n# be inserted so as to maintain order. Uses binary search.\n_.sortedIndex = (array, obj, iterator) ->\n  iterator ||= _.identity\n  low = 0\n  high = array.length\n  while low < high\n    mid = (low + high) >> 1\n    if iterator(array[mid]) < iterator(obj) then low = mid + 1 else high = mid\n  low\n\n\n# Convert anything iterable into a real, live array.\n_.toArray = (iterable) ->\n  return [] if (!iterable)\n  return iterable.toArray() if (iterable.toArray)\n  return iterable if (_.isArray(iterable))\n  return slice.call(iterable) if (_.isArguments(iterable))\n  _.values(iterable)\n\n\n# Return the number of elements in an object.\n_.size = (obj) -> _.toArray(obj).length\n\n\n# Array Functions\n# ---------------\n\n# Get the first element of an array. Passing `n` will return the first N\n# values in the array. Aliased as **head**. The `guard` check allows it to work\n# with **map**.\n_.first = (array, n, guard) ->\n  if n and not guard then slice.call(array, 0, n) else array[0]\n\n\n# Returns everything but the first entry of the array. Aliased as **tail**.\n# Especially useful on the arguments object. Passing an `index` will return\n# the rest of the values in the array from that index onward. The `guard`\n# check allows it to work with **map**.\n_.rest = (array, index, guard) ->\n  slice.call(array, if _.isUndefined(index) or guard then 1 else index)\n\n\n# Get the last element of an array.\n_.last = (array) -> array[array.length - 1]\n\n\n# Trim out all falsy values from an array.\n_.compact = (array) -> item for item in array when item\n\n\n# Return a completely flattened version of an array.\n_.flatten = (array) ->\n  _.reduce array, (memo, value) ->\n    return memo.concat(_.flatten(value)) if _.isArray value\n    memo.push value\n    memo\n  , []\n\n\n# Return a version of the array that does not contain the specified value(s).\n_.without = (array) ->\n  values = _.rest arguments\n  val for val in _.toArray(array) when not _.include values, val\n\n\n# Produce a duplicate-free version of the array. If the array has already\n# been sorted, you have the option of using a faster algorithm.\n_.uniq = (array, isSorted) ->\n  memo = []\n  for el, i in _.toArray array\n    memo.push el if i is 0 || (if isSorted is true then _.last(memo) isnt el else not _.include(memo, el))\n  memo\n\n\n# Produce an array that contains every item shared between all the\n# passed-in arrays.\n_.intersect = (array) ->\n  rest = _.rest arguments\n  _.select _.uniq(array), (item) ->\n    _.all rest, (other) ->\n      _.indexOf(other, item) >= 0\n\n\n# Zip together multiple lists into a single array -- elements that share\n# an index go together.\n_.zip = ->\n  length = _.max _.pluck arguments, 'length'\n  results = new Array length\n  for i in [0...length]\n    results[i] = _.pluck arguments, String i\n  results\n\n\n# If the browser doesn't supply us with **indexOf** (I'm looking at you, MSIE),\n# we need this function. Return the position of the first occurrence of an\n# item in an array, or -1 if the item is not included in the array.\n_.indexOf = (array, item) ->\n  return array.indexOf item if nativeIndexOf and array.indexOf is nativeIndexOf\n  i = 0; l = array.length\n  while l - i\n    if array[i] is item then return i else i++\n  -1\n\n\n# Provide JavaScript 1.6's **lastIndexOf**, delegating to the native function,\n# if possible.\n_.lastIndexOf = (array, item) ->\n  return array.lastIndexOf(item) if nativeLastIndexOf and array.lastIndexOf is nativeLastIndexOf\n  i = array.length\n  while i\n    if array[i] is item then return i else i--\n  -1\n\n\n# Generate an integer Array containing an arithmetic progression. A port of\n# [the native Python **range** function](http://docs.python.org/library/functions.html#range).\n_.range = (start, stop, step) ->\n  a = arguments\n  solo = a.length <= 1\n  i = start = if solo then 0 else a[0]\n  stop = if solo then a[0] else a[1]\n  step = a[2] or 1\n  len = Math.ceil((stop - start) / step)\n  return [] if len <= 0\n  range = new Array len\n  idx = 0\n  loop\n    return range if (if step > 0 then i - stop else stop - i) >= 0\n    range[idx] = i\n    idx++\n    i+= step\n\n\n# Function Functions\n# ------------------\n\n# Create a function bound to a given object (assigning `this`, and arguments,\n# optionally). Binding with arguments is also known as **curry**.\n_.bind = (func, obj) ->\n  args = _.rest arguments, 2\n  -> func.apply obj or root, args.concat arguments\n\n\n# Bind all of an object's methods to that object. Useful for ensuring that\n# all callbacks defined on an object belong to it.\n_.bindAll = (obj) ->\n  funcs = if arguments.length > 1 then _.rest(arguments) else _.functions(obj)\n  _.each funcs, (f) -> obj[f] = _.bind obj[f], obj\n  obj\n\n\n# Delays a function for the given number of milliseconds, and then calls\n# it with the arguments supplied.\n_.delay = (func, wait) ->\n  args = _.rest arguments, 2\n  setTimeout((-> func.apply(func, args)), wait)\n\n\n# Memoize an expensive function by storing its results.\n_.memoize = (func, hasher) ->\n  memo = {}\n  hasher or= _.identity\n  ->\n    key = hasher.apply this, arguments\n    return memo[key] if key of memo\n    memo[key] = func.apply this, arguments\n\n\n# Defers a function, scheduling it to run after the current call stack has\n# cleared.\n_.defer = (func) ->\n  _.delay.apply _, [func, 1].concat _.rest arguments\n\n\n# Returns the first function passed as an argument to the second,\n# allowing you to adjust arguments, run code before and after, and\n# conditionally execute the original function.\n_.wrap = (func, wrapper) ->\n  -> wrapper.apply wrapper, [func].concat arguments\n\n\n# Returns a function that is the composition of a list of functions, each\n# consuming the return value of the function that follows.\n_.compose = ->\n  funcs = arguments\n  ->\n    args = arguments\n    for i in [funcs.length - 1..0] by -1\n      args = [funcs[i].apply(this, args)]\n    args[0]\n\n\n# Object Functions\n# ----------------\n\n# Retrieve the names of an object's properties.\n_.keys = nativeKeys or (obj) ->\n  return _.range 0, obj.length if _.isArray(obj)\n  key for key, val of obj\n\n\n# Retrieve the values of an object's properties.\n_.values = (obj) ->\n  _.map obj, _.identity\n\n\n# Return a sorted list of the function names available in Underscore.\n_.functions = (obj) ->\n  _.filter(_.keys(obj), (key) -> _.isFunction(obj[key])).sort()\n\n\n# Extend a given object with all of the properties in a source object.\n_.extend = (obj) ->\n  for source in _.rest(arguments)\n    obj[key] = val for key, val of source\n  obj\n\n\n# Create a (shallow-cloned) duplicate of an object.\n_.clone = (obj) ->\n  return obj.slice 0 if _.isArray obj\n  _.extend {}, obj\n\n\n# Invokes interceptor with the obj, and then returns obj.\n# The primary purpose of this method is to \"tap into\" a method chain,\n# in order to perform operations on intermediate results within\n the chain.\n_.tap = (obj, interceptor) ->\n  interceptor obj\n  obj\n\n\n# Perform a deep comparison to check if two objects are equal.\n_.isEqual = (a, b) ->\n  # Check object identity.\n  return true if a is b\n  # Different types?\n  atype = typeof(a); btype = typeof(b)\n  return false if atype isnt btype\n  # Basic equality test (watch out for coercions).\n  return true if `a == b`\n  # One is falsy and the other truthy.\n  return false if (!a and b) or (a and !b)\n  # One of them implements an `isEqual()`?\n  return a.isEqual(b) if a.isEqual\n  # Check dates' integer values.\n  return a.getTime() is b.getTime() if _.isDate(a) and _.isDate(b)\n  # Both are NaN?\n  return false if _.isNaN(a) and _.isNaN(b)\n  # Compare regular expressions.\n  if _.isRegExp(a) and _.isRegExp(b)\n    return a.source is b.source and\n           a.global is b.global and\n           a.ignoreCase is b.ignoreCase and\n           a.multiline is b.multiline\n  # If a is not an object by this point, we can't handle it.\n  return false if atype isnt 'object'\n  # Check for different array lengths before comparing contents.\n  return false if a.length and (a.length isnt b.length)\n  # Nothing else worked, deep compare the contents.\n  aKeys = _.keys(a); bKeys = _.keys(b)\n  # Different object sizes?\n  return false if aKeys.length isnt bKeys.length\n  # Recursive comparison of contents.\n  return false for key, val of a when !(key of b) or !_.isEqual(val, b[key])\n  true\n\n\n# Is a given array or object empty?\n_.isEmpty = (obj) ->\n  return obj.length is 0 if _.isArray(obj) or _.isString(obj)\n  return false for own key of obj\n  true\n\n\n# Is a given value a DOM element?\n_.isElement = (obj) -> obj and obj.nodeType is 1\n\n\n# Is a given value an array?\n_.isArray = nativeIsArray or (obj) -> !!(obj and obj.concat and obj.unshift and not obj.callee)\n\n\n# Is a given variable an arguments object?\n_.isArguments = (obj) -> obj and obj.callee\n\n\n# Is the given value a function?\n_.isFunction = (obj) -> !!(obj and obj.constructor and obj.call and obj.apply)\n\n\n# Is the given value a string?\n_.isString = (obj) -> !!(obj is '' or (obj and obj.charCodeAt and obj.substr))\n\n\n# Is a given value a number?\n_.isNumber = (obj) -> (obj is +obj) or toString.call(obj) is '[object Number]'\n\n\n# Is a given value a boolean?\n_.isBoolean = (obj) -> obj is true or obj is false\n\n\n# Is a given value a Date?\n_.isDate = (obj) -> !!(obj and obj.getTimezoneOffset and obj.setUTCFullYear)\n\n\n# Is the given value a regular expression?\n_.isRegExp = (obj) -> !!(obj and obj.exec and (obj.ignoreCase or obj.ignoreCase is false))\n\n\n# Is the given value NaN -- this one is interesting. `NaN != NaN`, and\n# `isNaN(undefined) == true`, so we make sure it's a number first.\n_.isNaN = (obj) -> _.isNumber(obj) and window.isNaN(obj)\n\n\n# Is a given value equal to null?\n_.isNull = (obj) -> obj is null\n\n\n# Is a given variable undefined?\n_.isUndefined = (obj) -> typeof obj is 'undefined'\n\n\n# Utility Functions\n# -----------------\n\n# Run Underscore.js in noConflict mode, returning the `_` variable to its\n# previous owner. Returns a reference to the Underscore object.\n_.noConflict = ->\n  root._ = previousUnderscore\n  this\n\n\n# Keep the identity function around for default iterators.\n_.identity = (value) -> value\n\n\n# Run a function `n` times.\n_.times = (n, iterator, context) ->\n  iterator.call context, i for i in [0...n]\n\n\n# Break out of the middle of an iteration.\n_.breakLoop = -> throw breaker\n\n\n# Add your own custom functions to the Underscore object, ensuring that\n# they're correctly added to the OOP wrapper as well.\n_.mixin = (obj) ->\n  for name in _.functions(obj)\n    addToWrapper name, _[name] = obj[name]\n\n\n# Generate a unique integer id (unique within the entire client session).\n# Useful for temporary DOM ids.\nidCounter = 0\n_.uniqueId = (prefix) ->\n  (prefix or '') + idCounter++\n\n\n# By default, Underscore uses **ERB**-style template delimiters, change the\n# following template settings to use alternative delimiters.\n_.templateSettings = {\n  start: '<%'\n  end: '%>'\n  interpolate: /<%=(.+?)%>/g\n}\n\n\n# JavaScript templating a-la **ERB**, pilfered from John Resig's\n# *Secrets of the JavaScript Ninja*, page 83.\n# Single-quote fix from Rick Strahl.\n# With alterations for arbitrary delimiters, and to preserve whitespace.\n_.template = (str, data) ->\n  c = _.templateSettings\n  endMatch = new RegExp(\"'(?=[^\"+c.end.substr(0, 1)+\"]*\"+escapeRegExp(c.end)+\")\",\"g\")\n  fn = new Function 'obj',\n    'var p=[],print=function(){p.push.apply(p,arguments);};' +\n    'with(obj||{}){p.push(\\'' +\n    str.replace(/\\r/g, '\\\\r')\n       .replace(/\\n/g, '\\\\n')\n       .replace(/\\t/g, '\\\\t')\n       .replace(endMatch,\"���\")\n       .split(\"'\").join(\"\\\\'\")\n       .split(\"���\").join(\"'\")\n       .replace(c.interpolate, \"',$1,'\")\n       .split(c.start).join(\"');\")\n       .split(c.end).join(\"p.push('\") +\n       \"');}return p.join('');\"\n  if data then fn(data) else fn\n\n\n# Aliases\n# -------\n\n_.forEach = _.each\n_.foldl = _.inject = _.reduce\n_.foldr = _.reduceRight\n_.select = _.filter\n_.all = _.every\n_.any = _.some\n_.contains = _.include\n_.head = _.first\n_.tail = _.rest\n_.methods = _.functions\n\n\n# Setup the OOP Wrapper\n# ---------------------\n\n# If Underscore is called as a function, it returns a wrapped object that\n# can be used OO-style. This wrapper holds altered versions of all the\n# underscore functions. Wrapped objects may be chained.\nwrapper = (obj) ->\n  this._wrapped = obj\n  this\n\n\n# Helper function to continue chaining intermediate results.\nresult = (obj, chain) ->\n  if chain then _(obj).chain() else obj\n\n\n# A method to easily add functions to the OOP wrapper.\naddToWrapper = (name, func) ->\n  wrapper.prototype[name] = ->\n    args = _.toArray arguments\n    unshift.call args, this._wrapped\n    result func.apply(_, args), this._chain\n\n\n# Add all ofthe Underscore functions to the wrapper object.\n_.mixin _\n\n\n# Add all mutator Array functions to the wrapper.\n_.each ['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], (name) ->\n  method = Array.prototype[name]\n  wrapper.prototype[name] = ->\n    method.apply(this._wrapped, arguments)\n    result(this._wrapped, this._chain)\n\n\n# Add all accessor Array functions to the wrapper.\n_.each ['concat', 'join', 'slice'], (name) ->\n  method = Array.prototype[name]\n  wrapper.prototype[name] = ->\n    result(method.apply(this._wrapped, arguments), this._chain)\n\n\n# Start chaining a wrapped Underscore object.\nwrapper::chain = ->\n  this._chain = true\n  this\n\n\n# Extracts the result from a wrapped and chained object.\nwrapper::value = -> this._wrapped\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {});\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-coffeescript</code>.</p>\n\n    <p>The CoffeeScript mode was written by Jeff Pickhardt.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/commonlisp/commonlisp.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"commonlisp\", function (config) {\n  var specialForm = /^(block|let*|return-from|catch|load-time-value|setq|eval-when|locally|symbol-macrolet|flet|macrolet|tagbody|function|multiple-value-call|the|go|multiple-value-prog1|throw|if|progn|unwind-protect|labels|progv|let|quote)$/;\n  var assumeBody = /^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/;\n  var numLiteral = /^(?:[+\\-]?(?:\\d+|\\d*\\.\\d+)(?:[efd][+\\-]?\\d+)?|[+\\-]?\\d+(?:\\/[+\\-]?\\d+)?|#b[+\\-]?[01]+|#o[+\\-]?[0-7]+|#x[+\\-]?[\\da-f]+)/;\n  var symbol = /[^\\s'`,@()\\[\\]\";]/;\n  var type;\n\n  function readSym(stream) {\n    var ch;\n    while (ch = stream.next()) {\n      if (ch == \"\\\\\") stream.next();\n      else if (!symbol.test(ch)) { stream.backUp(1); break; }\n    }\n    return stream.current();\n  }\n\n  function base(stream, state) {\n    if (stream.eatSpace()) {type = \"ws\"; return null;}\n    if (stream.match(numLiteral)) return \"number\";\n    var ch = stream.next();\n    if (ch == \"\\\\\") ch = stream.next();\n\n    if (ch == '\"') return (state.tokenize = inString)(stream, state);\n    else if (ch == \"(\") { type = \"open\"; return \"bracket\"; }\n    else if (ch == \")\" || ch == \"]\") { type = \"close\"; return \"bracket\"; }\n    else if (ch == \";\") { stream.skipToEnd(); type = \"ws\"; return \"comment\"; }\n    else if (/['`,@]/.test(ch)) return null;\n    else if (ch == \"|\") {\n      if (stream.skipTo(\"|\")) { stream.next(); return \"symbol\"; }\n      else { stream.skipToEnd(); return \"error\"; }\n    } else if (ch == \"#\") {\n      var ch = stream.next();\n      if (ch == \"[\") { type = \"open\"; return \"bracket\"; }\n      else if (/[+\\-=\\.']/.test(ch)) return null;\n      else if (/\\d/.test(ch) && stream.match(/^\\d*#/)) return null;\n      else if (ch == \"|\") return (state.tokenize = inComment)(stream, state);\n      else if (ch == \":\") { readSym(stream); return \"meta\"; }\n      else return \"error\";\n    } else {\n      var name = readSym(stream);\n      if (name == \".\") return null;\n      type = \"symbol\";\n      if (name == \"nil\" || name == \"t\" || name.charAt(0) == \":\") return \"atom\";\n      if (state.lastType == \"open\" && (specialForm.test(name) || assumeBody.test(name))) return \"keyword\";\n      if (name.charAt(0) == \"&\") return \"variable-2\";\n      return \"variable\";\n    }\n  }\n\n  function inString(stream, state) {\n    var escaped = false, next;\n    while (next = stream.next()) {\n      if (next == '\"' && !escaped) { state.tokenize = base; break; }\n      escaped = !escaped && next == \"\\\\\";\n    }\n    return \"string\";\n  }\n\n  function inComment(stream, state) {\n    var next, last;\n    while (next = stream.next()) {\n      if (next == \"#\" && last == \"|\") { state.tokenize = base; break; }\n      last = next;\n    }\n    type = \"ws\";\n    return \"comment\";\n  }\n\n  return {\n    startState: function () {\n      return {ctx: {prev: null, start: 0, indentTo: 0}, lastType: null, tokenize: base};\n    },\n\n    token: function (stream, state) {\n      if (stream.sol() && typeof state.ctx.indentTo != \"number\")\n        state.ctx.indentTo = state.ctx.start + 1;\n\n      type = null;\n      var style = state.tokenize(stream, state);\n      if (type != \"ws\") {\n        if (state.ctx.indentTo == null) {\n          if (type == \"symbol\" && assumeBody.test(stream.current()))\n            state.ctx.indentTo = state.ctx.start + config.indentUnit;\n          else\n            state.ctx.indentTo = \"next\";\n        } else if (state.ctx.indentTo == \"next\") {\n          state.ctx.indentTo = stream.column();\n        }\n        state.lastType = type;\n      }\n      if (type == \"open\") state.ctx = {prev: state.ctx, start: stream.column(), indentTo: null};\n      else if (type == \"close\") state.ctx = state.ctx.prev || state.ctx;\n      return style;\n    },\n\n    indent: function (state, _textAfter) {\n      var i = state.ctx.indentTo;\n      return typeof i == \"number\" ? i : state.ctx.start + 1;\n    },\n\n    lineComment: \";;\",\n    blockCommentStart: \"#|\",\n    blockCommentEnd: \"|#\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-common-lisp\", \"commonlisp\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/commonlisp/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Common Lisp mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"commonlisp.js\"></script>\n<style>.CodeMirror {background: #f8f8f8;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Common Lisp</a>\n  </ul>\n</div>\n\n<article>\n<h2>Common Lisp mode</h2>\n<form><textarea id=\"code\" name=\"code\">(in-package :cl-postgres)\n\n;; These are used to synthesize reader and writer names for integer\n;; reading/writing functions when the amount of bytes and the\n;; signedness is known. Both the macro that creates the functions and\n;; some macros that use them create names this way.\n(eval-when (:compile-toplevel :load-toplevel :execute)\n  (defun integer-reader-name (bytes signed)\n    (intern (with-standard-io-syntax\n              (format nil \"~a~a~a~a\" '#:read- (if signed \"\" '#:u) '#:int bytes))))\n  (defun integer-writer-name (bytes signed)\n    (intern (with-standard-io-syntax\n              (format nil \"~a~a~a~a\" '#:write- (if signed \"\" '#:u) '#:int bytes)))))\n\n(defmacro integer-reader (bytes)\n  \"Create a function to read integers from a binary stream.\"\n  (let ((bits (* bytes 8)))\n    (labels ((return-form (signed)\n               (if signed\n                   `(if (logbitp ,(1- bits) result)\n                        (dpb result (byte ,(1- bits) 0) -1)\n                        result)\n                   `result))\n             (generate-reader (signed)\n               `(defun ,(integer-reader-name bytes signed) (socket)\n                  (declare (type stream socket)\n                           #.*optimize*)\n                  ,(if (= bytes 1)\n                       `(let ((result (the (unsigned-byte 8) (read-byte socket))))\n                          (declare (type (unsigned-byte 8) result))\n                          ,(return-form signed))\n                       `(let ((result 0))\n                          (declare (type (unsigned-byte ,bits) result))\n                          ,@(loop :for byte :from (1- bytes) :downto 0\n                                   :collect `(setf (ldb (byte 8 ,(* 8 byte)) result)\n                                                   (the (unsigned-byte 8) (read-byte socket))))\n                          ,(return-form signed))))))\n      `(progn\n;; This causes weird errors on SBCL in some circumstances. Disabled for now.\n;;         (declaim (inline ,(integer-reader-name bytes t)\n;;                          ,(integer-reader-name bytes nil)))\n         (declaim (ftype (function (t) (signed-byte ,bits))\n                         ,(integer-reader-name bytes t)))\n         ,(generate-reader t)\n         (declaim (ftype (function (t) (unsigned-byte ,bits))\n                         ,(integer-reader-name bytes nil)))\n         ,(generate-reader nil)))))\n\n(defmacro integer-writer (bytes)\n  \"Create a function to write integers to a binary stream.\"\n  (let ((bits (* 8 bytes)))\n    `(progn\n      (declaim (inline ,(integer-writer-name bytes t)\n                       ,(integer-writer-name bytes nil)))\n      (defun ,(integer-writer-name bytes nil) (socket value)\n        (declare (type stream socket)\n                 (type (unsigned-byte ,bits) value)\n                 #.*optimize*)\n        ,@(if (= bytes 1)\n              `((write-byte value socket))\n              (loop :for byte :from (1- bytes) :downto 0\n                    :collect `(write-byte (ldb (byte 8 ,(* byte 8)) value)\n                               socket)))\n        (values))\n      (defun ,(integer-writer-name bytes t) (socket value)\n        (declare (type stream socket)\n                 (type (signed-byte ,bits) value)\n                 #.*optimize*)\n        ,@(if (= bytes 1)\n              `((write-byte (ldb (byte 8 0) value) socket))\n              (loop :for byte :from (1- bytes) :downto 0\n                    :collect `(write-byte (ldb (byte 8 ,(* byte 8)) value)\n                               socket)))\n        (values)))))\n\n;; All the instances of the above that we need.\n\n(integer-reader 1)\n(integer-reader 2)\n(integer-reader 4)\n(integer-reader 8)\n\n(integer-writer 1)\n(integer-writer 2)\n(integer-writer 4)\n\n(defun write-bytes (socket bytes)\n  \"Write a byte-array to a stream.\"\n  (declare (type stream socket)\n           (type (simple-array (unsigned-byte 8)) bytes)\n           #.*optimize*)\n  (write-sequence bytes socket))\n\n(defun write-str (socket string)\n  \"Write a null-terminated string to a stream \\(encoding it when UTF-8\nsupport is enabled.).\"\n  (declare (type stream socket)\n           (type string string)\n           #.*optimize*)\n  (enc-write-string string socket)\n  (write-uint1 socket 0))\n\n(declaim (ftype (function (t unsigned-byte)\n                          (simple-array (unsigned-byte 8) (*)))\n                read-bytes))\n(defun read-bytes (socket length)\n  \"Read a byte array of the given length from a stream.\"\n  (declare (type stream socket)\n           (type fixnum length)\n           #.*optimize*)\n  (let ((result (make-array length :element-type '(unsigned-byte 8))))\n    (read-sequence result socket)\n    result))\n\n(declaim (ftype (function (t) string) read-str))\n(defun read-str (socket)\n  \"Read a null-terminated string from a stream. Takes care of encoding\nwhen UTF-8 support is enabled.\"\n  (declare (type stream socket)\n           #.*optimize*)\n  (enc-read-string socket :null-terminated t))\n\n(defun skip-bytes (socket length)\n  \"Skip a given number of bytes in a binary stream.\"\n  (declare (type stream socket)\n           (type (unsigned-byte 32) length)\n           #.*optimize*)\n  (dotimes (i length)\n    (read-byte socket)))\n\n(defun skip-str (socket)\n  \"Skip a null-terminated string.\"\n  (declare (type stream socket)\n           #.*optimize*)\n  (loop :for char :of-type fixnum = (read-byte socket)\n        :until (zerop char)))\n\n(defun ensure-socket-is-closed (socket &amp;key abort)\n  (when (open-stream-p socket)\n    (handler-case\n        (close socket :abort abort)\n      (error (error)\n        (warn \"Ignoring the error which happened while trying to close PostgreSQL socket: ~A\" error)))))\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {lineNumbers: true});\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-common-lisp</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/css/css.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n  if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n  var indentUnit = config.indentUnit,\n      tokenHooks = parserConfig.tokenHooks,\n      documentTypes = parserConfig.documentTypes || {},\n      mediaTypes = parserConfig.mediaTypes || {},\n      mediaFeatures = parserConfig.mediaFeatures || {},\n      propertyKeywords = parserConfig.propertyKeywords || {},\n      nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n      fontProperties = parserConfig.fontProperties || {},\n      counterDescriptors = parserConfig.counterDescriptors || {},\n      colorKeywords = parserConfig.colorKeywords || {},\n      valueKeywords = parserConfig.valueKeywords || {},\n      allowNested = parserConfig.allowNested;\n\n  var type, override;\n  function ret(style, tp) { type = tp; return style; }\n\n  // Tokenizers\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    if (tokenHooks[ch]) {\n      var result = tokenHooks[ch](stream, state);\n      if (result !== false) return result;\n    }\n    if (ch == \"@\") {\n      stream.eatWhile(/[\\w\\\\\\-]/);\n      return ret(\"def\", stream.current());\n    } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n      return ret(null, \"compare\");\n    } else if (ch == \"\\\"\" || ch == \"'\") {\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    } else if (ch == \"#\") {\n      stream.eatWhile(/[\\w\\\\\\-]/);\n      return ret(\"atom\", \"hash\");\n    } else if (ch == \"!\") {\n      stream.match(/^\\s*\\w*/);\n      return ret(\"keyword\", \"important\");\n    } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n      stream.eatWhile(/[\\w.%]/);\n      return ret(\"number\", \"unit\");\n    } else if (ch === \"-\") {\n      if (/[\\d.]/.test(stream.peek())) {\n        stream.eatWhile(/[\\w.%]/);\n        return ret(\"number\", \"unit\");\n      } else if (stream.match(/^-[\\w\\\\\\-]+/)) {\n        stream.eatWhile(/[\\w\\\\\\-]/);\n        if (stream.match(/^\\s*:/, false))\n          return ret(\"variable-2\", \"variable-definition\");\n        return ret(\"variable-2\", \"variable\");\n      } else if (stream.match(/^\\w+-/)) {\n        return ret(\"meta\", \"meta\");\n      }\n    } else if (/[,+>*\\/]/.test(ch)) {\n      return ret(null, \"select-op\");\n    } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n      return ret(\"qualifier\", \"qualifier\");\n    } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n      return ret(null, ch);\n    } else if ((ch == \"u\" && stream.match(/rl(-prefix)?\\(/)) ||\n               (ch == \"d\" && stream.match(\"omain(\")) ||\n               (ch == \"r\" && stream.match(\"egexp(\"))) {\n      stream.backUp(1);\n      state.tokenize = tokenParenthesized;\n      return ret(\"property\", \"word\");\n    } else if (/[\\w\\\\\\-]/.test(ch)) {\n      stream.eatWhile(/[\\w\\\\\\-]/);\n      return ret(\"property\", \"word\");\n    } else {\n      return ret(null, null);\n    }\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == quote && !escaped) {\n          if (quote == \")\") stream.backUp(1);\n          break;\n        }\n        escaped = !escaped && ch == \"\\\\\";\n      }\n      if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n      return ret(\"string\", \"string\");\n    };\n  }\n\n  function tokenParenthesized(stream, state) {\n    stream.next(); // Must be '('\n    if (!stream.match(/\\s*[\\\"\\')]/, false))\n      state.tokenize = tokenString(\")\");\n    else\n      state.tokenize = null;\n    return ret(null, \"(\");\n  }\n\n  // Context management\n\n  function Context(type, indent, prev) {\n    this.type = type;\n    this.indent = indent;\n    this.prev = prev;\n  }\n\n  function pushContext(state, stream, type) {\n    state.context = new Context(type, stream.indentation() + indentUnit, state.context);\n    return type;\n  }\n\n  function popContext(state) {\n    state.context = state.context.prev;\n    return state.context.type;\n  }\n\n  function pass(type, stream, state) {\n    return states[state.context.type](type, stream, state);\n  }\n  function popAndPass(type, stream, state, n) {\n    for (var i = n || 1; i > 0; i--)\n      state.context = state.context.prev;\n    return pass(type, stream, state);\n  }\n\n  // Parser\n\n  function wordAsValue(stream) {\n    var word = stream.current().toLowerCase();\n    if (valueKeywords.hasOwnProperty(word))\n      override = \"atom\";\n    else if (colorKeywords.hasOwnProperty(word))\n      override = \"keyword\";\n    else\n      override = \"variable\";\n  }\n\n  var states = {};\n\n  states.top = function(type, stream, state) {\n    if (type == \"{\") {\n      return pushContext(state, stream, \"block\");\n    } else if (type == \"}\" && state.context.prev) {\n      return popContext(state);\n    } else if (/@(media|supports|(-moz-)?document)/.test(type)) {\n      return pushContext(state, stream, \"atBlock\");\n    } else if (/@(font-face|counter-style)/.test(type)) {\n      state.stateArg = type;\n      return \"restricted_atBlock_before\";\n    } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) {\n      return \"keyframes\";\n    } else if (type && type.charAt(0) == \"@\") {\n      return pushContext(state, stream, \"at\");\n    } else if (type == \"hash\") {\n      override = \"builtin\";\n    } else if (type == \"word\") {\n      override = \"tag\";\n    } else if (type == \"variable-definition\") {\n      return \"maybeprop\";\n    } else if (type == \"interpolation\") {\n      return pushContext(state, stream, \"interpolation\");\n    } else if (type == \":\") {\n      return \"pseudo\";\n    } else if (allowNested && type == \"(\") {\n      return pushContext(state, stream, \"parens\");\n    }\n    return state.context.type;\n  };\n\n  states.block = function(type, stream, state) {\n    if (type == \"word\") {\n      var word = stream.current().toLowerCase();\n      if (propertyKeywords.hasOwnProperty(word)) {\n        override = \"property\";\n        return \"maybeprop\";\n      } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n        override = \"string-2\";\n        return \"maybeprop\";\n      } else if (allowNested) {\n        override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n        return \"block\";\n      } else {\n        override += \" error\";\n        return \"maybeprop\";\n      }\n    } else if (type == \"meta\") {\n      return \"block\";\n    } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n      override = \"error\";\n      return \"block\";\n    } else {\n      return states.top(type, stream, state);\n    }\n  };\n\n  states.maybeprop = function(type, stream, state) {\n    if (type == \":\") return pushContext(state, stream, \"prop\");\n    return pass(type, stream, state);\n  };\n\n  states.prop = function(type, stream, state) {\n    if (type == \";\") return popContext(state);\n    if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n    if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n    if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n    if (type == \"hash\" && !/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(stream.current())) {\n      override += \" error\";\n    } else if (type == \"word\") {\n      wordAsValue(stream);\n    } else if (type == \"interpolation\") {\n      return pushContext(state, stream, \"interpolation\");\n    }\n    return \"prop\";\n  };\n\n  states.propBlock = function(type, _stream, state) {\n    if (type == \"}\") return popContext(state);\n    if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n    return state.context.type;\n  };\n\n  states.parens = function(type, stream, state) {\n    if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n    if (type == \")\") return popContext(state);\n    if (type == \"(\") return pushContext(state, stream, \"parens\");\n    if (type == \"word\") wordAsValue(stream);\n    return \"parens\";\n  };\n\n  states.pseudo = function(type, stream, state) {\n    if (type == \"word\") {\n      override = \"variable-3\";\n      return state.context.type;\n    }\n    return pass(type, stream, state);\n  };\n\n  states.atBlock = function(type, stream, state) {\n    if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n    if (type == \"}\") return popAndPass(type, stream, state);\n    if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n    if (type == \"word\") {\n      var word = stream.current().toLowerCase();\n      if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n        override = \"keyword\";\n      else if (documentTypes.hasOwnProperty(word))\n        override = \"tag\";\n      else if (mediaTypes.hasOwnProperty(word))\n        override = \"attribute\";\n      else if (mediaFeatures.hasOwnProperty(word))\n        override = \"property\";\n      else if (propertyKeywords.hasOwnProperty(word))\n        override = \"property\";\n      else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n        override = \"string-2\";\n      else if (valueKeywords.hasOwnProperty(word))\n        override = \"atom\";\n      else\n        override = \"error\";\n    }\n    return state.context.type;\n  };\n\n  states.atBlock_parens = function(type, stream, state) {\n    if (type == \")\") return popContext(state);\n    if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n    return states.atBlock(type, stream, state);\n  };\n\n  states.restricted_atBlock_before = function(type, stream, state) {\n    if (type == \"{\")\n      return pushContext(state, stream, \"restricted_atBlock\");\n    if (type == \"word\" && state.stateArg == \"@counter-style\") {\n      override = \"variable\";\n      return \"restricted_atBlock_before\";\n    }\n    return pass(type, stream, state);\n  };\n\n  states.restricted_atBlock = function(type, stream, state) {\n    if (type == \"}\") {\n      state.stateArg = null;\n      return popContext(state);\n    }\n    if (type == \"word\") {\n      if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n          (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n        override = \"error\";\n      else\n        override = \"property\";\n      return \"maybeprop\";\n    }\n    return \"restricted_atBlock\";\n  };\n\n  states.keyframes = function(type, stream, state) {\n    if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n    if (type == \"{\") return pushContext(state, stream, \"top\");\n    return pass(type, stream, state);\n  };\n\n  states.at = function(type, stream, state) {\n    if (type == \";\") return popContext(state);\n    if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n    if (type == \"word\") override = \"tag\";\n    else if (type == \"hash\") override = \"builtin\";\n    return \"at\";\n  };\n\n  states.interpolation = function(type, stream, state) {\n    if (type == \"}\") return popContext(state);\n    if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n    if (type != \"variable\") override = \"error\";\n    return \"interpolation\";\n  };\n\n  return {\n    startState: function(base) {\n      return {tokenize: null,\n              state: \"top\",\n              stateArg: null,\n              context: new Context(\"top\", base || 0, null)};\n    },\n\n    token: function(stream, state) {\n      if (!state.tokenize && stream.eatSpace()) return null;\n      var style = (state.tokenize || tokenBase)(stream, state);\n      if (style && typeof style == \"object\") {\n        type = style[1];\n        style = style[0];\n      }\n      override = style;\n      state.state = states[state.state](type, stream, state);\n      return override;\n    },\n\n    indent: function(state, textAfter) {\n      var cx = state.context, ch = textAfter && textAfter.charAt(0);\n      var indent = cx.indent;\n      if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n      if (cx.prev &&\n          (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" || cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\") ||\n           ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n           ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\"))) {\n        indent = cx.indent - indentUnit;\n        cx = cx.prev;\n      }\n      return indent;\n    },\n\n    electricChars: \"}\",\n    blockCommentStart: \"/*\",\n    blockCommentEnd: \"*/\",\n    fold: \"brace\"\n  };\n});\n\n  function keySet(array) {\n    var keys = {};\n    for (var i = 0; i < array.length; ++i) {\n      keys[array[i]] = true;\n    }\n    return keys;\n  }\n\n  var documentTypes_ = [\n    \"domain\", \"regexp\", \"url\", \"url-prefix\"\n  ], documentTypes = keySet(documentTypes_);\n\n  var mediaTypes_ = [\n    \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n    \"tty\", \"tv\", \"embossed\"\n  ], mediaTypes = keySet(mediaTypes_);\n\n  var mediaFeatures_ = [\n    \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n    \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n    \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n    \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n    \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n    \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n    \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n    \"min-resolution\", \"max-resolution\", \"scan\", \"grid\"\n  ], mediaFeatures = keySet(mediaFeatures_);\n\n  var propertyKeywords_ = [\n    \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n    \"alignment-baseline\", \"anchor-point\", \"animation\", \"animation-delay\",\n    \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n    \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n    \"animation-timing-function\", \"appearance\", \"azimuth\", \"backface-visibility\",\n    \"background\", \"background-attachment\", \"background-clip\", \"background-color\",\n    \"background-image\", \"background-origin\", \"background-position\",\n    \"background-repeat\", \"background-size\", \"baseline-shift\", \"binding\",\n    \"bleed\", \"bookmark-label\", \"bookmark-level\", \"bookmark-state\",\n    \"bookmark-target\", \"border\", \"border-bottom\", \"border-bottom-color\",\n    \"border-bottom-left-radius\", \"border-bottom-right-radius\",\n    \"border-bottom-style\", \"border-bottom-width\", \"border-collapse\",\n    \"border-color\", \"border-image\", \"border-image-outset\",\n    \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n    \"border-image-width\", \"border-left\", \"border-left-color\",\n    \"border-left-style\", \"border-left-width\", \"border-radius\", \"border-right\",\n    \"border-right-color\", \"border-right-style\", \"border-right-width\",\n    \"border-spacing\", \"border-style\", \"border-top\", \"border-top-color\",\n    \"border-top-left-radius\", \"border-top-right-radius\", \"border-top-style\",\n    \"border-top-width\", \"border-width\", \"bottom\", \"box-decoration-break\",\n    \"box-shadow\", \"box-sizing\", \"break-after\", \"break-before\", \"break-inside\",\n    \"caption-side\", \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\",\n    \"column-fill\", \"column-gap\", \"column-rule\", \"column-rule-color\",\n    \"column-rule-style\", \"column-rule-width\", \"column-span\", \"column-width\",\n    \"columns\", \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\",\n    \"cue-after\", \"cue-before\", \"cursor\", \"direction\", \"display\",\n    \"dominant-baseline\", \"drop-initial-after-adjust\",\n    \"drop-initial-after-align\", \"drop-initial-before-adjust\",\n    \"drop-initial-before-align\", \"drop-initial-size\", \"drop-initial-value\",\n    \"elevation\", \"empty-cells\", \"fit\", \"fit-position\", \"flex\", \"flex-basis\",\n    \"flex-direction\", \"flex-flow\", \"flex-grow\", \"flex-shrink\", \"flex-wrap\",\n    \"float\", \"float-offset\", \"flow-from\", \"flow-into\", \"font\", \"font-feature-settings\",\n    \"font-family\", \"font-kerning\", \"font-language-override\", \"font-size\", \"font-size-adjust\",\n    \"font-stretch\", \"font-style\", \"font-synthesis\", \"font-variant\",\n    \"font-variant-alternates\", \"font-variant-caps\", \"font-variant-east-asian\",\n    \"font-variant-ligatures\", \"font-variant-numeric\", \"font-variant-position\",\n    \"font-weight\", \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\",\n    \"grid-auto-position\", \"grid-auto-rows\", \"grid-column\", \"grid-column-end\",\n    \"grid-column-start\", \"grid-row\", \"grid-row-end\", \"grid-row-start\",\n    \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n    \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\",\n    \"icon\", \"image-orientation\", \"image-rendering\", \"image-resolution\",\n    \"inline-box-align\", \"justify-content\", \"left\", \"letter-spacing\",\n    \"line-break\", \"line-height\", \"line-stacking\", \"line-stacking-ruby\",\n    \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n    \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n    \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\",\n    \"marker-offset\", \"marks\", \"marquee-direction\", \"marquee-loop\",\n    \"marquee-play-count\", \"marquee-speed\", \"marquee-style\", \"max-height\",\n    \"max-width\", \"min-height\", \"min-width\", \"move-to\", \"nav-down\", \"nav-index\",\n    \"nav-left\", \"nav-right\", \"nav-up\", \"object-fit\", \"object-position\",\n    \"opacity\", \"order\", \"orphans\", \"outline\",\n    \"outline-color\", \"outline-offset\", \"outline-style\", \"outline-width\",\n    \"overflow\", \"overflow-style\", \"overflow-wrap\", \"overflow-x\", \"overflow-y\",\n    \"padding\", \"padding-bottom\", \"padding-left\", \"padding-right\", \"padding-top\",\n    \"page\", \"page-break-after\", \"page-break-before\", \"page-break-inside\",\n    \"page-policy\", \"pause\", \"pause-after\", \"pause-before\", \"perspective\",\n    \"perspective-origin\", \"pitch\", \"pitch-range\", \"play-during\", \"position\",\n    \"presentation-level\", \"punctuation-trim\", \"quotes\", \"region-break-after\",\n    \"region-break-before\", \"region-break-inside\", \"region-fragment\",\n    \"rendering-intent\", \"resize\", \"rest\", \"rest-after\", \"rest-before\", \"richness\",\n    \"right\", \"rotation\", \"rotation-point\", \"ruby-align\", \"ruby-overhang\",\n    \"ruby-position\", \"ruby-span\", \"shape-image-threshold\", \"shape-inside\", \"shape-margin\",\n    \"shape-outside\", \"size\", \"speak\", \"speak-as\", \"speak-header\",\n    \"speak-numeral\", \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\",\n    \"tab-size\", \"table-layout\", \"target\", \"target-name\", \"target-new\",\n    \"target-position\", \"text-align\", \"text-align-last\", \"text-decoration\",\n    \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n    \"text-decoration-style\", \"text-emphasis\", \"text-emphasis-color\",\n    \"text-emphasis-position\", \"text-emphasis-style\", \"text-height\",\n    \"text-indent\", \"text-justify\", \"text-outline\", \"text-overflow\", \"text-shadow\",\n    \"text-size-adjust\", \"text-space-collapse\", \"text-transform\", \"text-underline-position\",\n    \"text-wrap\", \"top\", \"transform\", \"transform-origin\", \"transform-style\",\n    \"transition\", \"transition-delay\", \"transition-duration\",\n    \"transition-property\", \"transition-timing-function\", \"unicode-bidi\",\n    \"vertical-align\", \"visibility\", \"voice-balance\", \"voice-duration\",\n    \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\", \"voice-stress\",\n    \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\", \"word-break\",\n    \"word-spacing\", \"word-wrap\", \"z-index\",\n    // SVG-specific\n    \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n    \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n    \"color-interpolation\", \"color-interpolation-filters\",\n    \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n    \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"shape-rendering\", \"stroke\",\n    \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n    \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n    \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n    \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\"\n  ], propertyKeywords = keySet(propertyKeywords_);\n\n  var nonStandardPropertyKeywords_ = [\n    \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n    \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n    \"scrollbar-3d-light-color\", \"scrollbar-track-color\", \"shape-inside\",\n    \"searchfield-cancel-button\", \"searchfield-decoration\", \"searchfield-results-button\",\n    \"searchfield-results-decoration\", \"zoom\"\n  ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n  var fontProperties_ = [\n    \"font-family\", \"src\", \"unicode-range\", \"font-variant\", \"font-feature-settings\",\n    \"font-stretch\", \"font-weight\", \"font-style\"\n  ], fontProperties = keySet(fontProperties_);\n\n  var counterDescriptors_ = [\n    \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n    \"speak-as\", \"suffix\", \"symbols\", \"system\"\n  ], counterDescriptors = keySet(counterDescriptors_);\n\n  var colorKeywords_ = [\n    \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n    \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n    \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n    \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n    \"darkgray\", \"darkgreen\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n    \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n    \"darkslateblue\", \"darkslategray\", \"darkturquoise\", \"darkviolet\",\n    \"deeppink\", \"deepskyblue\", \"dimgray\", \"dodgerblue\", \"firebrick\",\n    \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n    \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n    \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n    \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n    \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightpink\",\n    \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\",\n    \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n    \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n    \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n    \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n    \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n    \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n    \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n    \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n    \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n    \"slateblue\", \"slategray\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n    \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n    \"whitesmoke\", \"yellow\", \"yellowgreen\"\n  ], colorKeywords = keySet(colorKeywords_);\n\n  var valueKeywords_ = [\n    \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n    \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n    \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n    \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"avoid\", \"avoid-column\", \"avoid-page\",\n    \"avoid-region\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n    \"bengali\", \"blink\", \"block\", \"block-axis\", \"bold\", \"bolder\", \"border\", \"border-box\",\n    \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"bullets\", \"button\", \"button-bevel\",\n    \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n    \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n    \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n    \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n    \"col-resize\", \"collapse\", \"column\", \"compact\", \"condensed\", \"contain\", \"content\",\n    \"content-box\", \"context-menu\", \"continuous\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n    \"cross\", \"crosshair\", \"currentcolor\", \"cursive\", \"cyclic\", \"dashed\", \"decimal\",\n    \"decimal-leading-zero\", \"default\", \"default-button\", \"destination-atop\",\n    \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\",\n    \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n    \"dot-dash\", \"dot-dot-dash\",\n    \"dotted\", \"double\", \"down\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n    \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n    \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n    \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n    \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n    \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n    \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n    \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n    \"ethiopic-numeric\", \"ew-resize\", \"expanded\", \"extends\", \"extra-condensed\",\n    \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fixed\", \"flat\", \"flex\", \"footnotes\",\n    \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"graytext\", \"groove\",\n    \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hebrew\",\n    \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n    \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"icon\", \"ignore\",\n    \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n    \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n    \"inline-block\", \"inline-flex\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n    \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n    \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n    \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n    \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\",\n    \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n    \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n    \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n    \"lower-roman\", \"lowercase\", \"ltr\", \"malayalam\", \"match\", \"matrix\", \"matrix3d\",\n    \"media-controls-background\", \"media-current-time-display\",\n    \"media-fullscreen-button\", \"media-mute-button\", \"media-play-button\",\n    \"media-return-to-realtime-button\", \"media-rewind-button\",\n    \"media-seek-back-button\", \"media-seek-forward-button\", \"media-slider\",\n    \"media-sliderthumb\", \"media-time-remaining-display\", \"media-volume-slider\",\n    \"media-volume-slider-container\", \"media-volume-sliderthumb\", \"medium\",\n    \"menu\", \"menulist\", \"menulist-button\", \"menulist-text\",\n    \"menulist-textfield\", \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n    \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"myanmar\", \"n-resize\",\n    \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n    \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n    \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"open-quote\",\n    \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n    \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n    \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"plus-darker\", \"plus-lighter\",\n    \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n    \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n    \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n    \"relative\", \"repeat\", \"repeating-linear-gradient\",\n    \"repeating-radial-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n    \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n    \"rotateZ\", \"round\", \"row-resize\", \"rtl\", \"run-in\", \"running\",\n    \"s-resize\", \"sans-serif\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\",\n    \"scroll\", \"scrollbar\", \"se-resize\", \"searchfield\",\n    \"searchfield-cancel-button\", \"searchfield-decoration\",\n    \"searchfield-results-button\", \"searchfield-results-decoration\",\n    \"semi-condensed\", \"semi-expanded\", \"separate\", \"serif\", \"show\", \"sidama\",\n    \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n    \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n    \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n    \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"solid\", \"somali\",\n    \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"spell-out\", \"square\",\n    \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"sub\",\n    \"subpixel-antialiased\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"table\",\n    \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n    \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n    \"tamil\",\n    \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n    \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n    \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n    \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n    \"trad-chinese-formal\", \"trad-chinese-informal\",\n    \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n    \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"up\",\n    \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n    \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n    \"var\", \"vertical\", \"vertical-text\", \"visible\", \"visibleFill\", \"visiblePainted\",\n    \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n    \"window\", \"windowframe\", \"windowtext\", \"words\", \"x-large\", \"x-small\", \"xor\",\n    \"xx-large\", \"xx-small\"\n  ], valueKeywords = keySet(valueKeywords_);\n\n  var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(propertyKeywords_)\n    .concat(nonStandardPropertyKeywords_).concat(colorKeywords_).concat(valueKeywords_);\n  CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n  function tokenCComment(stream, state) {\n    var maybeEnd = false, ch;\n    while ((ch = stream.next()) != null) {\n      if (maybeEnd && ch == \"/\") {\n        state.tokenize = null;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return [\"comment\", \"comment\"];\n  }\n\n  function tokenSGMLComment(stream, state) {\n    if (stream.skipTo(\"-->\")) {\n      stream.match(\"-->\");\n      state.tokenize = null;\n    } else {\n      stream.skipToEnd();\n    }\n    return [\"comment\", \"comment\"];\n  }\n\n  CodeMirror.defineMIME(\"text/css\", {\n    documentTypes: documentTypes,\n    mediaTypes: mediaTypes,\n    mediaFeatures: mediaFeatures,\n    propertyKeywords: propertyKeywords,\n    nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n    fontProperties: fontProperties,\n    counterDescriptors: counterDescriptors,\n    colorKeywords: colorKeywords,\n    valueKeywords: valueKeywords,\n    tokenHooks: {\n      \"<\": function(stream, state) {\n        if (!stream.match(\"!--\")) return false;\n        state.tokenize = tokenSGMLComment;\n        return tokenSGMLComment(stream, state);\n      },\n      \"/\": function(stream, state) {\n        if (!stream.eat(\"*\")) return false;\n        state.tokenize = tokenCComment;\n        return tokenCComment(stream, state);\n      }\n    },\n    name: \"css\"\n  });\n\n  CodeMirror.defineMIME(\"text/x-scss\", {\n    mediaTypes: mediaTypes,\n    mediaFeatures: mediaFeatures,\n    propertyKeywords: propertyKeywords,\n    nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n    colorKeywords: colorKeywords,\n    valueKeywords: valueKeywords,\n    fontProperties: fontProperties,\n    allowNested: true,\n    tokenHooks: {\n      \"/\": function(stream, state) {\n        if (stream.eat(\"/\")) {\n          stream.skipToEnd();\n          return [\"comment\", \"comment\"];\n        } else if (stream.eat(\"*\")) {\n          state.tokenize = tokenCComment;\n          return tokenCComment(stream, state);\n        } else {\n          return [\"operator\", \"operator\"];\n        }\n      },\n      \":\": function(stream) {\n        if (stream.match(/\\s*\\{/))\n          return [null, \"{\"];\n        return false;\n      },\n      \"$\": function(stream) {\n        stream.match(/^[\\w-]+/);\n        if (stream.match(/^\\s*:/, false))\n          return [\"variable-2\", \"variable-definition\"];\n        return [\"variable-2\", \"variable\"];\n      },\n      \"#\": function(stream) {\n        if (!stream.eat(\"{\")) return false;\n        return [null, \"interpolation\"];\n      }\n    },\n    name: \"css\",\n    helperType: \"scss\"\n  });\n\n  CodeMirror.defineMIME(\"text/x-less\", {\n    mediaTypes: mediaTypes,\n    mediaFeatures: mediaFeatures,\n    propertyKeywords: propertyKeywords,\n    nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n    colorKeywords: colorKeywords,\n    valueKeywords: valueKeywords,\n    fontProperties: fontProperties,\n    allowNested: true,\n    tokenHooks: {\n      \"/\": function(stream, state) {\n        if (stream.eat(\"/\")) {\n          stream.skipToEnd();\n          return [\"comment\", \"comment\"];\n        } else if (stream.eat(\"*\")) {\n          state.tokenize = tokenCComment;\n          return tokenCComment(stream, state);\n        } else {\n          return [\"operator\", \"operator\"];\n        }\n      },\n      \"@\": function(stream) {\n        if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/, false)) return false;\n        stream.eatWhile(/[\\w\\\\\\-]/);\n        if (stream.match(/^\\s*:/, false))\n          return [\"variable-2\", \"variable-definition\"];\n        return [\"variable-2\", \"variable\"];\n      },\n      \"&\": function() {\n        return [\"atom\", \"atom\"];\n      }\n    },\n    name: \"css\",\n    helperType: \"less\"\n  });\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/css/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: CSS mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../addon/hint/show-hint.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"css.js\"></script>\n<script src=\"../../addon/hint/show-hint.js\"></script>\n<script src=\"../../addon/hint/css-hint.js\"></script>\n<style>.CodeMirror {background: #f8f8f8;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">CSS</a>\n  </ul>\n</div>\n\n<article>\n<h2>CSS mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n/* Some example CSS */\n\n@import url(\"something.css\");\n\nbody {\n  margin: 0;\n  padding: 3em 6em;\n  font-family: tahoma, arial, sans-serif;\n  color: #000;\n}\n\n#navigation a {\n  font-weight: bold;\n  text-decoration: none !important;\n}\n\nh1 {\n  font-size: 2.5em;\n}\n\nh2 {\n  font-size: 1.7em;\n}\n\nh1:before, h2:before {\n  content: \"::\";\n}\n\ncode {\n  font-family: courier, monospace;\n  font-size: 80%;\n  color: #418A8A;\n}\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        extraKeys: {\"Ctrl-Space\": \"autocomplete\"},\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/css</code>, <code>text/x-scss</code> (<a href=\"scss.html\">demo</a>), <code>text/x-less</code> (<a href=\"less.html\">demo</a>).</p>\n\n    <p><strong>Parsing/Highlighting Tests:</strong> <a href=\"../../test/index.html#css_*\">normal</a>,  <a href=\"../../test/index.html#verbose,css_*\">verbose</a>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/css/less.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: LESS mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"css.js\"></script>\n<style>.CodeMirror {border: 1px solid #ddd; line-height: 1.2;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">LESS</a>\n  </ul>\n</div>\n\n<article>\n<h2>LESS mode</h2>\n<form><textarea id=\"code\" name=\"code\">@media screen and (device-aspect-ratio: 16/9) { … }\n@media screen and (device-aspect-ratio: 1280/720) { … }\n@media screen and (device-aspect-ratio: 2560/1440) { … }\n\nhtml:lang(fr-be)\n\ntr:nth-child(2n+1) /* represents every odd row of an HTML table */\n\nimg:nth-of-type(2n+1) { float: right; }\nimg:nth-of-type(2n) { float: left; }\n\nbody > h2:not(:first-of-type):not(:last-of-type)\n\nhtml|*:not(:link):not(:visited)\n*|*:not(:hover)\np::first-line { text-transform: uppercase }\n\n@namespace foo url(http://www.example.com);\nfoo|h1 { color: blue }  /* first rule */\n\nspan[hello=\"Ocean\"][goodbye=\"Land\"]\n\nE[foo]{\n  padding:65px;\n}\n\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-cancel-button {\n  -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner { // Inner padding and border oddities in FF3/4\n  padding: 0;\n  border: 0;\n}\n.btn {\n  // reset here as of 2.0.3 due to Recess property order\n  border-color: #ccc;\n  border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);\n}\nfieldset span button, fieldset span input[type=\"file\"] {\n  font-size:12px;\n\tfont-family:Arial, Helvetica, sans-serif;\n}\n\n.rounded-corners (@radius: 5px) {\n  border-radius: @radius;\n  -webkit-border-radius: @radius;\n  -moz-border-radius: @radius;\n}\n\n@import url(\"something.css\");\n\n@light-blue:   hsl(190, 50%, 65%);\n\n#menu {\n  position: absolute;\n  width: 100%;\n  z-index: 3;\n  clear: both;\n  display: block;\n  background-color: @blue;\n  height: 42px;\n  border-top: 2px solid lighten(@alpha-blue, 20%);\n  border-bottom: 2px solid darken(@alpha-blue, 25%);\n  .box-shadow(0, 1px, 8px, 0.6);\n  -moz-box-shadow: 0 0 0 #000; // Because firefox sucks.\n\n  &.docked {\n    background-color: hsla(210, 60%, 40%, 0.4);\n  }\n  &:hover {\n    background-color: @blue;\n  }\n\n  #dropdown {\n    margin: 0 0 0 117px;\n    padding: 0;\n    padding-top: 5px;\n    display: none;\n    width: 190px;\n    border-top: 2px solid @medium;\n    color: @highlight;\n    border: 2px solid darken(@medium, 25%);\n    border-left-color: darken(@medium, 15%);\n    border-right-color: darken(@medium, 15%);\n    border-top-width: 0;\n    background-color: darken(@medium, 10%);\n    ul {\n      padding: 0px;  \n    }\n    li {\n      font-size: 14px;\n      display: block;\n      text-align: left;\n      padding: 0;\n      border: 0;\n      a {\n        display: block;\n        padding: 0px 15px;  \n        text-decoration: none;\n        color: white;  \n        &:hover {\n          background-color: darken(@medium, 15%);\n          text-decoration: none;\n        }\n      }\n    }\n    .border-radius(5px, bottom);\n    .box-shadow(0, 6px, 8px, 0.5);\n  }\n}\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers : true,\n        matchBrackets : true,\n        mode: \"text/x-less\"\n      });\n    </script>\n\n    <p>The LESS mode is a sub-mode of the <a href=\"index.html\">CSS mode</a> (defined in <code>css.js</code>.</p>\n\n    <p><strong>Parsing/Highlighting Tests:</strong> <a href=\"../../test/index.html#less_*\">normal</a>,  <a href=\"../../test/index.html#verbose,less_*\">verbose</a>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/css/less_test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  \"use strict\";\n\n  var mode = CodeMirror.getMode({indentUnit: 2}, \"text/x-less\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), \"less\"); }\n\n  MT(\"variable\",\n     \"[variable-2 @base]: [atom #f04615];\",\n     \"[qualifier .class] {\",\n     \"  [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]\",\n     \"  [property color]: [variable saturate]([variable-2 @base], [number 5%]);\",\n     \"}\");\n\n  MT(\"amp\",\n     \"[qualifier .child], [qualifier .sibling] {\",\n     \"  [qualifier .parent] [atom &] {\",\n     \"    [property color]: [keyword black];\",\n     \"  }\",\n     \"  [atom &] + [atom &] {\",\n     \"    [property color]: [keyword red];\",\n     \"  }\",\n     \"}\");\n\n  MT(\"mixin\",\n     \"[qualifier .mixin] ([variable dark]; [variable-2 @color]) {\",\n     \"  [property color]: [variable darken]([variable-2 @color], [number 10%]);\",\n     \"}\",\n     \"[qualifier .mixin] ([variable light]; [variable-2 @color]) {\",\n     \"  [property color]: [variable lighten]([variable-2 @color], [number 10%]);\",\n     \"}\",\n     \"[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {\",\n     \"  [property display]: [atom block];\",\n     \"}\",\n     \"[variable-2 @switch]: [variable light];\",\n     \"[qualifier .class] {\",\n     \"  [qualifier .mixin]([variable-2 @switch]; [atom #888]);\",\n     \"}\");\n\n  MT(\"nest\",\n     \"[qualifier .one] {\",\n     \"  [def @media] ([property width]: [number 400px]) {\",\n     \"    [property font-size]: [number 1.2em];\",\n     \"    [def @media] [attribute print] [keyword and] [property color] {\",\n     \"      [property color]: [keyword blue];\",\n     \"    }\",\n     \"  }\",\n     \"}\");\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/css/scss.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: SCSS mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"css.js\"></script>\n<style>.CodeMirror {background: #f8f8f8;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">SCSS</a>\n  </ul>\n</div>\n\n<article>\n<h2>SCSS mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n/* Some example SCSS */\n\n@import \"compass/css3\";\n$variable: #333;\n\n$blue: #3bbfce;\n$margin: 16px;\n\n.content-navigation {\n  #nested {\n    background-color: black;\n  }\n  border-color: $blue;\n  color:\n    darken($blue, 9%);\n}\n\n.border {\n  padding: $margin / 2;\n  margin: $margin / 2;\n  border-color: $blue;\n}\n\n@mixin table-base {\n  th {\n    text-align: center;\n    font-weight: bold;\n  }\n  td, th {padding: 2px}\n}\n\ntable.hl {\n  margin: 2em 0;\n  td.ln {\n    text-align: right;\n  }\n}\n\nli {\n  font: {\n    family: serif;\n    weight: bold;\n    size: 1.2em;\n  }\n}\n\n@mixin left($dist) {\n  float: left;\n  margin-left: $dist;\n}\n\n#data {\n  @include left(10px);\n  @include table-base;\n}\n\n.source {\n  @include flow-into(target);\n  border: 10px solid green;\n  margin: 20px;\n  width: 200px; }\n\n.new-container {\n  @include flow-from(target);\n  border: 10px solid red;\n  margin: 20px;\n  width: 200px; }\n\nbody {\n  margin: 0;\n  padding: 3em 6em;\n  font-family: tahoma, arial, sans-serif;\n  color: #000;\n}\n\n@mixin yellow() {\n  background: yellow;\n}\n\n.big {\n  font-size: 14px;\n}\n\n.nested {\n  @include border-radius(3px);\n  @extend .big;\n  p {\n    background: whitesmoke;\n    a {\n      color: red;\n    }\n  }\n}\n\n#navigation a {\n  font-weight: bold;\n  text-decoration: none !important;\n}\n\nh1 {\n  font-size: 2.5em;\n}\n\nh2 {\n  font-size: 1.7em;\n}\n\nh1:before, h2:before {\n  content: \"::\";\n}\n\ncode {\n  font-family: courier, monospace;\n  font-size: 80%;\n  color: #418A8A;\n}\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"text/x-scss\"\n      });\n    </script>\n\n    <p>The SCSS mode is a sub-mode of the <a href=\"index.html\">CSS mode</a> (defined in <code>css.js</code>.</p>\n\n    <p><strong>Parsing/Highlighting Tests:</strong> <a href=\"../../test/index.html#scss_*\">normal</a>,  <a href=\"../../test/index.html#verbose,scss_*\">verbose</a>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/css/scss_test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  var mode = CodeMirror.getMode({indentUnit: 2}, \"text/x-scss\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), \"scss\"); }\n\n  MT('url_with_quotation',\n    \"[tag foo] { [property background]:[atom url]([string test.jpg]) }\");\n\n  MT('url_with_double_quotes',\n    \"[tag foo] { [property background]:[atom url]([string \\\"test.jpg\\\"]) }\");\n\n  MT('url_with_single_quotes',\n    \"[tag foo] { [property background]:[atom url]([string \\'test.jpg\\']) }\");\n\n  MT('string',\n    \"[def @import] [string \\\"compass/css3\\\"]\");\n\n  MT('important_keyword',\n    \"[tag foo] { [property background]:[atom url]([string \\'test.jpg\\']) [keyword !important] }\");\n\n  MT('variable',\n    \"[variable-2 $blue]:[atom #333]\");\n\n  MT('variable_as_attribute',\n    \"[tag foo] { [property color]:[variable-2 $blue] }\");\n\n  MT('numbers',\n    \"[tag foo] { [property padding]:[number 10px] [number 10] [number 10em] [number 8in] }\");\n\n  MT('number_percentage',\n    \"[tag foo] { [property width]:[number 80%] }\");\n\n  MT('selector',\n    \"[builtin #hello][qualifier .world]{}\");\n\n  MT('singleline_comment',\n    \"[comment // this is a comment]\");\n\n  MT('multiline_comment',\n    \"[comment /*foobar*/]\");\n\n  MT('attribute_with_hyphen',\n    \"[tag foo] { [property font-size]:[number 10px] }\");\n\n  MT('string_after_attribute',\n    \"[tag foo] { [property content]:[string \\\"::\\\"] }\");\n\n  MT('directives',\n    \"[def @include] [qualifier .mixin]\");\n\n  MT('basic_structure',\n    \"[tag p] { [property background]:[keyword red]; }\");\n\n  MT('nested_structure',\n    \"[tag p] { [tag a] { [property color]:[keyword red]; } }\");\n\n  MT('mixin',\n    \"[def @mixin] [tag table-base] {}\");\n\n  MT('number_without_semicolon',\n    \"[tag p] {[property width]:[number 12]}\",\n    \"[tag a] {[property color]:[keyword red];}\");\n\n  MT('atom_in_nested_block',\n    \"[tag p] { [tag a] { [property color]:[atom #000]; } }\");\n\n  MT('interpolation_in_property',\n    \"[tag foo] { #{[variable-2 $hello]}:[number 2]; }\");\n\n  MT('interpolation_in_selector',\n    \"[tag foo]#{[variable-2 $hello]} { [property color]:[atom #000]; }\");\n\n  MT('interpolation_error',\n    \"[tag foo]#{[error foo]} { [property color]:[atom #000]; }\");\n\n  MT(\"divide_operator\",\n    \"[tag foo] { [property width]:[number 4] [operator /] [number 2] }\");\n\n  MT('nested_structure_with_id_selector',\n    \"[tag p] { [builtin #hello] { [property color]:[keyword red]; } }\");\n\n  MT('indent_mixin',\n     \"[def @mixin] [tag container] (\",\n     \"  [variable-2 $a]: [number 10],\",\n     \"  [variable-2 $b]: [number 10])\",\n     \"{}\");\n\n  MT('indent_nested',\n     \"[tag foo] {\",\n     \"  [tag bar] {\",\n     \"  }\",\n     \"}\");\n\n  MT('indent_parentheses',\n     \"[tag foo] {\",\n     \"  [property color]: [variable darken]([variable-2 $blue],\",\n     \"    [number 9%]);\",\n     \"}\");\n\n  MT('indent_vardef',\n     \"[variable-2 $name]:\",\n     \"  [string 'val'];\",\n     \"[tag tag] {\",\n     \"  [tag inner] {\",\n     \"    [property margin]: [number 3px];\",\n     \"  }\",\n     \"}\");\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/css/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  var mode = CodeMirror.getMode({indentUnit: 2}, \"css\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }\n\n  // Error, because \"foobarhello\" is neither a known type or property, but\n  // property was expected (after \"and\"), and it should be in parenthese.\n  MT(\"atMediaUnknownType\",\n     \"[def @media] [attribute screen] [keyword and] [error foobarhello] { }\");\n\n  // Soft error, because \"foobarhello\" is not a known property or type.\n  MT(\"atMediaUnknownProperty\",\n     \"[def @media] [attribute screen] [keyword and] ([error foobarhello]) { }\");\n\n  // Make sure nesting works with media queries\n  MT(\"atMediaMaxWidthNested\",\n     \"[def @media] [attribute screen] [keyword and] ([property max-width]: [number 25px]) { [tag foo] { } }\");\n\n  MT(\"tagSelector\",\n     \"[tag foo] { }\");\n\n  MT(\"classSelector\",\n     \"[qualifier .foo-bar_hello] { }\");\n\n  MT(\"idSelector\",\n     \"[builtin #foo] { [error #foo] }\");\n\n  MT(\"tagSelectorUnclosed\",\n     \"[tag foo] { [property margin]: [number 0] } [tag bar] { }\");\n\n  MT(\"tagStringNoQuotes\",\n     \"[tag foo] { [property font-family]: [variable hello] [variable world]; }\");\n\n  MT(\"tagStringDouble\",\n     \"[tag foo] { [property font-family]: [string \\\"hello world\\\"]; }\");\n\n  MT(\"tagStringSingle\",\n     \"[tag foo] { [property font-family]: [string 'hello world']; }\");\n\n  MT(\"tagColorKeyword\",\n     \"[tag foo] {\",\n     \"  [property color]: [keyword black];\",\n     \"  [property color]: [keyword navy];\",\n     \"  [property color]: [keyword yellow];\",\n     \"}\");\n\n  MT(\"tagColorHex3\",\n     \"[tag foo] { [property background]: [atom #fff]; }\");\n\n  MT(\"tagColorHex6\",\n     \"[tag foo] { [property background]: [atom #ffffff]; }\");\n\n  MT(\"tagColorHex4\",\n     \"[tag foo] { [property background]: [atom&error #ffff]; }\");\n\n  MT(\"tagColorHexInvalid\",\n     \"[tag foo] { [property background]: [atom&error #ffg]; }\");\n\n  MT(\"tagNegativeNumber\",\n     \"[tag foo] { [property margin]: [number -5px]; }\");\n\n  MT(\"tagPositiveNumber\",\n     \"[tag foo] { [property padding]: [number 5px]; }\");\n\n  MT(\"tagVendor\",\n     \"[tag foo] { [meta -foo-][property box-sizing]: [meta -foo-][atom border-box]; }\");\n\n  MT(\"tagBogusProperty\",\n     \"[tag foo] { [property&error barhelloworld]: [number 0]; }\");\n\n  MT(\"tagTwoProperties\",\n     \"[tag foo] { [property margin]: [number 0]; [property padding]: [number 0]; }\");\n\n  MT(\"tagTwoPropertiesURL\",\n     \"[tag foo] { [property background]: [atom url]([string //example.com/foo.png]); [property padding]: [number 0]; }\");\n\n  MT(\"commentSGML\",\n     \"[comment <!--comment-->]\");\n\n  MT(\"commentSGML2\",\n     \"[comment <!--comment]\",\n     \"[comment -->] [tag div] {}\");\n\n  MT(\"indent_tagSelector\",\n     \"[tag strong], [tag em] {\",\n     \"  [property background]: [atom rgba](\",\n     \"    [number 255], [number 255], [number 0], [number .2]\",\n     \"  );\",\n     \"}\");\n\n  MT(\"indent_atMedia\",\n     \"[def @media] {\",\n     \"  [tag foo] {\",\n     \"    [property color]:\",\n     \"      [keyword yellow];\",\n     \"  }\",\n     \"}\");\n\n  MT(\"indent_comma\",\n     \"[tag foo] {\",\n     \"  [property font-family]: [variable verdana],\",\n     \"    [atom sans-serif];\",\n     \"}\");\n\n  MT(\"indent_parentheses\",\n     \"[tag foo]:[variable-3 before] {\",\n     \"  [property background]: [atom url](\",\n     \"[string     blahblah]\",\n     \"[string     etc]\",\n     \"[string   ]) [keyword !important];\",\n     \"}\");\n\n  MT(\"font_face\",\n     \"[def @font-face] {\",\n     \"  [property font-family]: [string 'myfont'];\",\n     \"  [error nonsense]: [string 'abc'];\",\n     \"  [property src]: [atom url]([string http://blah]),\",\n     \"    [atom url]([string http://foo]);\",\n     \"}\");\n\n  MT(\"empty_url\",\n     \"[def @import] [tag url]() [tag screen];\");\n\n  MT(\"parens\",\n     \"[qualifier .foo] {\",\n     \"  [property background-image]: [variable fade]([atom #000], [number 20%]);\",\n     \"  [property border-image]: [atom linear-gradient](\",\n     \"    [atom to] [atom bottom],\",\n     \"    [variable fade]([atom #000], [number 20%]) [number 0%],\",\n     \"    [variable fade]([atom #000], [number 20%]) [number 100%]\",\n     \"  );\",\n     \"}\");\n\n  MT(\"css_variable\",\n     \":[variable-3 root] {\",\n     \"  [variable-2 --main-color]: [atom #06c];\",\n     \"}\",\n     \"[tag h1][builtin #foo] {\",\n     \"  [property color]: [atom var]([variable-2 --main-color]);\",\n     \"}\");\n\n  MT(\"supports\",\n     \"[def @supports] ([keyword not] (([property text-align-last]: [atom justify]) [keyword or] ([meta -moz-][property text-align-last]: [atom justify])) {\",\n     \"  [property text-align-last]: [atom justify];\",\n     \"}\");\n\n   MT(\"document\",\n      \"[def @document] [tag url]([string http://blah]),\",\n      \"  [tag url-prefix]([string https://]),\",\n      \"  [tag domain]([string blah.com]),\",\n      \"  [tag regexp]([string \\\".*blah.+\\\"]) {\",\n      \"    [builtin #id] {\",\n      \"      [property background-color]: [keyword white];\",\n      \"    }\",\n      \"    [tag foo] {\",\n      \"      [property font-family]: [variable Verdana], [atom sans-serif];\",\n      \"    }\",\n      \"  }\");\n\n   MT(\"document_url\",\n      \"[def @document] [tag url]([string http://blah]) { [qualifier .class] { } }\");\n\n   MT(\"document_urlPrefix\",\n      \"[def @document] [tag url-prefix]([string https://]) { [builtin #id] { } }\");\n\n   MT(\"document_domain\",\n      \"[def @document] [tag domain]([string blah.com]) { [tag foo] { } }\");\n\n   MT(\"document_regexp\",\n      \"[def @document] [tag regexp]([string \\\".*blah.+\\\"]) { [builtin #id] { } }\");\n\n   MT(\"counter-style\",\n      \"[def @counter-style] [variable binary] {\",\n      \"  [property system]: [atom numeric];\",\n      \"  [property symbols]: [number 0] [number 1];\",\n      \"  [property suffix]: [string \\\".\\\"];\",\n      \"  [property range]: [atom infinite];\",\n      \"  [property speak-as]: [atom numeric];\",\n      \"}\");\n\n   MT(\"counter-style-additive-symbols\",\n      \"[def @counter-style] [variable simple-roman] {\",\n      \"  [property system]: [atom additive];\",\n      \"  [property additive-symbols]: [number 10] [variable X], [number 5] [variable V], [number 1] [variable I];\",\n      \"  [property range]: [number 1] [number 49];\",\n      \"}\");\n\n   MT(\"counter-style-use\",\n      \"[tag ol][qualifier .roman] { [property list-style]: [variable simple-roman]; }\");\n\n   MT(\"counter-style-symbols\",\n      \"[tag ol] { [property list-style]: [atom symbols]([atom cyclic] [string \\\"*\\\"] [string \\\"\\\\2020\\\"] [string \\\"\\\\2021\\\"] [string \\\"\\\\A7\\\"]); }\");\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/cypher/cypher.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// By the Neo4j Team and contributors.\n// https://github.com/neo4j-contrib/CodeMirror\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n  var wordRegexp = function(words) {\n    return new RegExp(\"^(?:\" + words.join(\"|\") + \")$\", \"i\");\n  };\n\n  CodeMirror.defineMode(\"cypher\", function(config) {\n    var tokenBase = function(stream/*, state*/) {\n      var ch = stream.next(), curPunc = null;\n      if (ch === \"\\\"\" || ch === \"'\") {\n        stream.match(/.+?[\"']/);\n        return \"string\";\n      }\n      if (/[{}\\(\\),\\.;\\[\\]]/.test(ch)) {\n        curPunc = ch;\n        return \"node\";\n      } else if (ch === \"/\" && stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return \"comment\";\n      } else if (operatorChars.test(ch)) {\n        stream.eatWhile(operatorChars);\n        return null;\n      } else {\n        stream.eatWhile(/[_\\w\\d]/);\n        if (stream.eat(\":\")) {\n          stream.eatWhile(/[\\w\\d_\\-]/);\n          return \"atom\";\n        }\n        var word = stream.current();\n        if (funcs.test(word)) return \"builtin\";\n        if (preds.test(word)) return \"def\";\n        if (keywords.test(word)) return \"keyword\";\n        return \"variable\";\n      }\n    };\n    var pushContext = function(state, type, col) {\n      return state.context = {\n        prev: state.context,\n        indent: state.indent,\n        col: col,\n        type: type\n      };\n    };\n    var popContext = function(state) {\n      state.indent = state.context.indent;\n      return state.context = state.context.prev;\n    };\n    var indentUnit = config.indentUnit;\n    var curPunc;\n    var funcs = wordRegexp([\"abs\", \"acos\", \"allShortestPaths\", \"asin\", \"atan\", \"atan2\", \"avg\", \"ceil\", \"coalesce\", \"collect\", \"cos\", \"cot\", \"count\", \"degrees\", \"e\", \"endnode\", \"exp\", \"extract\", \"filter\", \"floor\", \"haversin\", \"head\", \"id\", \"keys\", \"labels\", \"last\", \"left\", \"length\", \"log\", \"log10\", \"lower\", \"ltrim\", \"max\", \"min\", \"node\", \"nodes\", \"percentileCont\", \"percentileDisc\", \"pi\", \"radians\", \"rand\", \"range\", \"reduce\", \"rel\", \"relationship\", \"relationships\", \"replace\", \"right\", \"round\", \"rtrim\", \"shortestPath\", \"sign\", \"sin\", \"split\", \"sqrt\", \"startnode\", \"stdev\", \"stdevp\", \"str\", \"substring\", \"sum\", \"tail\", \"tan\", \"timestamp\", \"toFloat\", \"toInt\", \"trim\", \"type\", \"upper\"]);\n    var preds = wordRegexp([\"all\", \"and\", \"any\", \"has\", \"in\", \"none\", \"not\", \"or\", \"single\", \"xor\"]);\n    var keywords = wordRegexp([\"as\", \"asc\", \"ascending\", \"assert\", \"by\", \"case\", \"commit\", \"constraint\", \"create\", \"csv\", \"cypher\", \"delete\", \"desc\", \"descending\", \"distinct\", \"drop\", \"else\", \"end\", \"explain\", \"false\", \"fieldterminator\", \"foreach\", \"from\", \"headers\", \"in\", \"index\", \"is\", \"limit\", \"load\", \"match\", \"merge\", \"null\", \"on\", \"optional\", \"order\", \"periodic\", \"profile\", \"remove\", \"return\", \"scan\", \"set\", \"skip\", \"start\", \"then\", \"true\", \"union\", \"unique\", \"unwind\", \"using\", \"when\", \"where\", \"with\"]);\n    var operatorChars = /[*+\\-<>=&|~%^]/;\n\n    return {\n      startState: function(/*base*/) {\n        return {\n          tokenize: tokenBase,\n          context: null,\n          indent: 0,\n          col: 0\n        };\n      },\n      token: function(stream, state) {\n        if (stream.sol()) {\n          if (state.context && (state.context.align == null)) {\n            state.context.align = false;\n          }\n          state.indent = stream.indentation();\n        }\n        if (stream.eatSpace()) {\n          return null;\n        }\n        var style = state.tokenize(stream, state);\n        if (style !== \"comment\" && state.context && (state.context.align == null) && state.context.type !== \"pattern\") {\n          state.context.align = true;\n        }\n        if (curPunc === \"(\") {\n          pushContext(state, \")\", stream.column());\n        } else if (curPunc === \"[\") {\n          pushContext(state, \"]\", stream.column());\n        } else if (curPunc === \"{\") {\n          pushContext(state, \"}\", stream.column());\n        } else if (/[\\]\\}\\)]/.test(curPunc)) {\n          while (state.context && state.context.type === \"pattern\") {\n            popContext(state);\n          }\n          if (state.context && curPunc === state.context.type) {\n            popContext(state);\n          }\n        } else if (curPunc === \".\" && state.context && state.context.type === \"pattern\") {\n          popContext(state);\n        } else if (/atom|string|variable/.test(style) && state.context) {\n          if (/[\\}\\]]/.test(state.context.type)) {\n            pushContext(state, \"pattern\", stream.column());\n          } else if (state.context.type === \"pattern\" && !state.context.align) {\n            state.context.align = true;\n            state.context.col = stream.column();\n          }\n        }\n        return style;\n      },\n      indent: function(state, textAfter) {\n        var firstChar = textAfter && textAfter.charAt(0);\n        var context = state.context;\n        if (/[\\]\\}]/.test(firstChar)) {\n          while (context && context.type === \"pattern\") {\n            context = context.prev;\n          }\n        }\n        var closing = context && firstChar === context.type;\n        if (!context) return 0;\n        if (context.type === \"keywords\") return CodeMirror.commands.newlineAndIndent;\n        if (context.align) return context.col + (closing ? 0 : 1);\n        return context.indent + (closing ? 0 : indentUnit);\n      }\n    };\n  });\n\n  CodeMirror.modeExtensions[\"cypher\"] = {\n    autoFormatLineBreaks: function(text) {\n      var i, lines, reProcessedPortion;\n      var lines = text.split(\"\\n\");\n      var reProcessedPortion = /\\s+\\b(return|where|order by|match|with|skip|limit|create|delete|set)\\b\\s/g;\n      for (var i = 0; i < lines.length; i++)\n        lines[i] = lines[i].replace(reProcessedPortion, \" \\n$1 \").trim();\n      return lines.join(\"\\n\");\n    }\n  };\n\n  CodeMirror.defineMIME(\"application/x-cypher-query\", \"cypher\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/cypher/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Cypher Mode for CodeMirror</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\" />\n<link rel=\"stylesheet\" href=\"../../theme/neo.css\" />\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"cypher.js\"></script>\n<style>\n.CodeMirror {\n    border-top: 1px solid black;\n    border-bottom: 1px solid black;\n}\n        </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Cypher Mode for CodeMirror</a>\n  </ul>\n</div>\n\n<article>\n<h2>Cypher Mode for CodeMirror</h2>\n<form>\n            <textarea id=\"code\" name=\"code\">// Cypher Mode for CodeMirror, using the neo theme\nMATCH (joe { name: 'Joe' })-[:knows*2..2]-(friend_of_friend)\nWHERE NOT (joe)-[:knows]-(friend_of_friend)\nRETURN friend_of_friend.name, COUNT(*)\nORDER BY COUNT(*) DESC , friend_of_friend.name\n</textarea>\n            </form>\n            <p><strong>MIME types defined:</strong> \n            <code><a href=\"?mime=application/x-cypher-query\">application/x-cypher-query</a></code>\n        </p>\n<script>\nwindow.onload = function() {\n  var mime = 'application/x-cypher-query';\n  // get mime type\n  if (window.location.href.indexOf('mime=') > -1) {\n    mime = window.location.href.substr(window.location.href.indexOf('mime=') + 5);\n  }\n  window.editor = CodeMirror.fromTextArea(document.getElementById('code'), {\n    mode: mime,\n    indentWithTabs: true,\n    smartIndent: true,\n    lineNumbers: true,\n    matchBrackets : true,\n    autofocus: true,\n    theme: 'neo'\n  });\n};\n</script>\n\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/d/d.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"d\", function(config, parserConfig) {\n  var indentUnit = config.indentUnit,\n      statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,\n      keywords = parserConfig.keywords || {},\n      builtin = parserConfig.builtin || {},\n      blockKeywords = parserConfig.blockKeywords || {},\n      atoms = parserConfig.atoms || {},\n      hooks = parserConfig.hooks || {},\n      multiLineStrings = parserConfig.multiLineStrings;\n  var isOperatorChar = /[+\\-*&%=<>!?|\\/]/;\n\n  var curPunc;\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    if (hooks[ch]) {\n      var result = hooks[ch](stream, state);\n      if (result !== false) return result;\n    }\n    if (ch == '\"' || ch == \"'\" || ch == \"`\") {\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    }\n    if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n      curPunc = ch;\n      return null;\n    }\n    if (/\\d/.test(ch)) {\n      stream.eatWhile(/[\\w\\.]/);\n      return \"number\";\n    }\n    if (ch == \"/\") {\n      if (stream.eat(\"+\")) {\n        state.tokenize = tokenComment;\n        return tokenNestedComment(stream, state);\n      }\n      if (stream.eat(\"*\")) {\n        state.tokenize = tokenComment;\n        return tokenComment(stream, state);\n      }\n      if (stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n    }\n    if (isOperatorChar.test(ch)) {\n      stream.eatWhile(isOperatorChar);\n      return \"operator\";\n    }\n    stream.eatWhile(/[\\w\\$_\\xa1-\\uffff]/);\n    var cur = stream.current();\n    if (keywords.propertyIsEnumerable(cur)) {\n      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n      return \"keyword\";\n    }\n    if (builtin.propertyIsEnumerable(cur)) {\n      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n      return \"builtin\";\n    }\n    if (atoms.propertyIsEnumerable(cur)) return \"atom\";\n    return \"variable\";\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, next, end = false;\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) {end = true; break;}\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (end || !(escaped || multiLineStrings))\n        state.tokenize = null;\n      return \"string\";\n    };\n  }\n\n  function tokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = null;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return \"comment\";\n  }\n\n  function tokenNestedComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = null;\n        break;\n      }\n      maybeEnd = (ch == \"+\");\n    }\n    return \"comment\";\n  }\n\n  function Context(indented, column, type, align, prev) {\n    this.indented = indented;\n    this.column = column;\n    this.type = type;\n    this.align = align;\n    this.prev = prev;\n  }\n  function pushContext(state, col, type) {\n    var indent = state.indented;\n    if (state.context && state.context.type == \"statement\")\n      indent = state.context.indented;\n    return state.context = new Context(indent, col, type, null, state.context);\n  }\n  function popContext(state) {\n    var t = state.context.type;\n    if (t == \")\" || t == \"]\" || t == \"}\")\n      state.indented = state.context.indented;\n    return state.context = state.context.prev;\n  }\n\n  // Interface\n\n  return {\n    startState: function(basecolumn) {\n      return {\n        tokenize: null,\n        context: new Context((basecolumn || 0) - indentUnit, 0, \"top\", false),\n        indented: 0,\n        startOfLine: true\n      };\n    },\n\n    token: function(stream, state) {\n      var ctx = state.context;\n      if (stream.sol()) {\n        if (ctx.align == null) ctx.align = false;\n        state.indented = stream.indentation();\n        state.startOfLine = true;\n      }\n      if (stream.eatSpace()) return null;\n      curPunc = null;\n      var style = (state.tokenize || tokenBase)(stream, state);\n      if (style == \"comment\" || style == \"meta\") return style;\n      if (ctx.align == null) ctx.align = true;\n\n      if ((curPunc == \";\" || curPunc == \":\" || curPunc == \",\") && ctx.type == \"statement\") popContext(state);\n      else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n      else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n      else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n      else if (curPunc == \"}\") {\n        while (ctx.type == \"statement\") ctx = popContext(state);\n        if (ctx.type == \"}\") ctx = popContext(state);\n        while (ctx.type == \"statement\") ctx = popContext(state);\n      }\n      else if (curPunc == ctx.type) popContext(state);\n      else if (((ctx.type == \"}\" || ctx.type == \"top\") && curPunc != ';') || (ctx.type == \"statement\" && curPunc == \"newstatement\"))\n        pushContext(state, stream.column(), \"statement\");\n      state.startOfLine = false;\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass;\n      var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);\n      if (ctx.type == \"statement\" && firstChar == \"}\") ctx = ctx.prev;\n      var closing = firstChar == ctx.type;\n      if (ctx.type == \"statement\") return ctx.indented + (firstChar == \"{\" ? 0 : statementIndentUnit);\n      else if (ctx.align) return ctx.column + (closing ? 0 : 1);\n      else return ctx.indented + (closing ? 0 : indentUnit);\n    },\n\n    electricChars: \"{}\"\n  };\n});\n\n  function words(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  var blockKeywords = \"body catch class do else enum for foreach foreach_reverse if in interface mixin \" +\n                      \"out scope struct switch try union unittest version while with\";\n\n  CodeMirror.defineMIME(\"text/x-d\", {\n    name: \"d\",\n    keywords: words(\"abstract alias align asm assert auto break case cast cdouble cent cfloat const continue \" +\n                    \"debug default delegate delete deprecated export extern final finally function goto immutable \" +\n                    \"import inout invariant is lazy macro module new nothrow override package pragma private \" +\n                    \"protected public pure ref return shared short static super synchronized template this \" +\n                    \"throw typedef typeid typeof volatile __FILE__ __LINE__ __gshared __traits __vector __parameters \" +\n                    blockKeywords),\n    blockKeywords: words(blockKeywords),\n    builtin: words(\"bool byte char creal dchar double float idouble ifloat int ireal long real short ubyte \" +\n                   \"ucent uint ulong ushort wchar wstring void size_t sizediff_t\"),\n    atoms: words(\"exit failure success true false null\"),\n    hooks: {\n      \"@\": function(stream, _state) {\n        stream.eatWhile(/[\\w\\$_]/);\n        return \"meta\";\n      }\n    }\n  });\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/d/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: D mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"d.js\"></script>\n<style>.CodeMirror {border: 2px inset #dee;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">D</a>\n  </ul>\n</div>\n\n<article>\n<h2>D mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n/* D demo code // copied from phobos/sd/metastrings.d */\n// Written in the D programming language.\n\n/**\nTemplates with which to do compile-time manipulation of strings.\n\nMacros:\n WIKI = Phobos/StdMetastrings\n\nCopyright: Copyright Digital Mars 2007 - 2009.\nLicense:   <a href=\"http://www.boost.org/LICENSE_1_0.txt\">Boost License 1.0</a>.\nAuthors:   $(WEB digitalmars.com, Walter Bright),\n           Don Clugston\nSource:    $(PHOBOSSRC std/_metastrings.d)\n*/\n/*\n         Copyright Digital Mars 2007 - 2009.\nDistributed under the Boost Software License, Version 1.0.\n   (See accompanying file LICENSE_1_0.txt or copy at\n         http://www.boost.org/LICENSE_1_0.txt)\n */\nmodule std.metastrings;\n\n/**\nFormats constants into a string at compile time.  Analogous to $(XREF\nstring,format).\n\nParameters:\n\nA = tuple of constants, which can be strings, characters, or integral\n    values.\n\nFormats:\n *    The formats supported are %s for strings, and %%\n *    for the % character.\nExample:\n---\nimport std.metastrings;\nimport std.stdio;\n\nvoid main()\n{\n  string s = Format!(\"Arg %s = %s\", \"foo\", 27);\n  writefln(s); // \"Arg foo = 27\"\n}\n * ---\n */\n\ntemplate Format(A...)\n{\n    static if (A.length == 0)\n        enum Format = \"\";\n    else static if (is(typeof(A[0]) : const(char)[]))\n        enum Format = FormatString!(A[0], A[1..$]);\n    else\n        enum Format = toStringNow!(A[0]) ~ Format!(A[1..$]);\n}\n\ntemplate FormatString(const(char)[] F, A...)\n{\n    static if (F.length == 0)\n        enum FormatString = Format!(A);\n    else static if (F.length == 1)\n        enum FormatString = F[0] ~ Format!(A);\n    else static if (F[0..2] == \"%s\")\n        enum FormatString\n            = toStringNow!(A[0]) ~ FormatString!(F[2..$],A[1..$]);\n    else static if (F[0..2] == \"%%\")\n        enum FormatString = \"%\" ~ FormatString!(F[2..$],A);\n    else\n    {\n        static assert(F[0] != '%', \"unrecognized format %\" ~ F[1]);\n        enum FormatString = F[0] ~ FormatString!(F[1..$],A);\n    }\n}\n\nunittest\n{\n    auto s = Format!(\"hel%slo\", \"world\", -138, 'c', true);\n    assert(s == \"helworldlo-138ctrue\", \"[\" ~ s ~ \"]\");\n}\n\n/**\n * Convert constant argument to a string.\n */\n\ntemplate toStringNow(ulong v)\n{\n    static if (v < 10)\n        enum toStringNow = \"\" ~ cast(char)(v + '0');\n    else\n        enum toStringNow = toStringNow!(v / 10) ~ toStringNow!(v % 10);\n}\n\nunittest\n{\n    static assert(toStringNow!(1uL << 62) == \"4611686018427387904\");\n}\n\n/// ditto\ntemplate toStringNow(long v)\n{\n    static if (v < 0)\n        enum toStringNow = \"-\" ~ toStringNow!(cast(ulong) -v);\n    else\n        enum toStringNow = toStringNow!(cast(ulong) v);\n}\n\nunittest\n{\n    static assert(toStringNow!(0x100000000) == \"4294967296\");\n    static assert(toStringNow!(-138L) == \"-138\");\n}\n\n/// ditto\ntemplate toStringNow(uint U)\n{\n    enum toStringNow = toStringNow!(cast(ulong)U);\n}\n\n/// ditto\ntemplate toStringNow(int I)\n{\n    enum toStringNow = toStringNow!(cast(long)I);\n}\n\n/// ditto\ntemplate toStringNow(bool B)\n{\n    enum toStringNow = B ? \"true\" : \"false\";\n}\n\n/// ditto\ntemplate toStringNow(string S)\n{\n    enum toStringNow = S;\n}\n\n/// ditto\ntemplate toStringNow(char C)\n{\n    enum toStringNow = \"\" ~ C;\n}\n\n\n/********\n * Parse unsigned integer literal from the start of string s.\n * returns:\n *    .value = the integer literal as a string,\n *    .rest = the string following the integer literal\n * Otherwise:\n *    .value = null,\n *    .rest = s\n */\n\ntemplate parseUinteger(const(char)[] s)\n{\n    static if (s.length == 0)\n    {\n        enum value = \"\";\n        enum rest = \"\";\n    }\n    else static if (s[0] >= '0' && s[0] <= '9')\n    {\n        enum value = s[0] ~ parseUinteger!(s[1..$]).value;\n        enum rest = parseUinteger!(s[1..$]).rest;\n    }\n    else\n    {\n        enum value = \"\";\n        enum rest = s;\n    }\n}\n\n/********\nParse integer literal optionally preceded by $(D '-') from the start\nof string $(D s).\n\nReturns:\n   .value = the integer literal as a string,\n   .rest = the string following the integer literal\n\nOtherwise:\n   .value = null,\n   .rest = s\n*/\n\ntemplate parseInteger(const(char)[] s)\n{\n    static if (s.length == 0)\n    {\n        enum value = \"\";\n        enum rest = \"\";\n    }\n    else static if (s[0] >= '0' && s[0] <= '9')\n    {\n        enum value = s[0] ~ parseUinteger!(s[1..$]).value;\n        enum rest = parseUinteger!(s[1..$]).rest;\n    }\n    else static if (s.length >= 2 &&\n            s[0] == '-' && s[1] >= '0' && s[1] <= '9')\n    {\n        enum value = s[0..2] ~ parseUinteger!(s[2..$]).value;\n        enum rest = parseUinteger!(s[2..$]).rest;\n    }\n    else\n    {\n        enum value = \"\";\n        enum rest = s;\n    }\n}\n\nunittest\n{\n    assert(parseUinteger!(\"1234abc\").value == \"1234\");\n    assert(parseUinteger!(\"1234abc\").rest == \"abc\");\n    assert(parseInteger!(\"-1234abc\").value == \"-1234\");\n    assert(parseInteger!(\"-1234abc\").rest == \"abc\");\n}\n\n/**\nDeprecated aliases held for backward compatibility.\n*/\ndeprecated alias toStringNow ToString;\n/// Ditto\ndeprecated alias parseUinteger ParseUinteger;\n/// Ditto\ndeprecated alias parseUinteger ParseInteger;\n\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        indentUnit: 4,\n        mode: \"text/x-d\"\n      });\n    </script>\n\n    <p>Simple mode that handle D-Syntax (<a href=\"http://www.dlang.org\">DLang Homepage</a>).</p>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-d</code>\n    .</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/dart/dart.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../clike/clike\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../clike/clike\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var keywords = (\"this super static final const abstract class extends external factory \" +\n    \"implements get native operator set typedef with enum throw rethrow \" +\n    \"assert break case continue default in return new deferred async await \" +\n    \"try catch finally do else for if switch while import library export \" +\n    \"part of show hide is\").split(\" \");\n  var blockKeywords = \"try catch finally do else for if switch while\".split(\" \");\n  var atoms = \"true false null\".split(\" \");\n  var builtins = \"void bool num int double dynamic var String\".split(\" \");\n\n  function set(words) {\n    var obj = {};\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  CodeMirror.defineMIME(\"application/dart\", {\n    name: \"clike\",\n    keywords: set(keywords),\n    multiLineStrings: true,\n    blockKeywords: set(blockKeywords),\n    builtin: set(builtins),\n    atoms: set(atoms),\n    hooks: {\n      \"@\": function(stream) {\n        stream.eatWhile(/[\\w\\$_]/);\n        return \"meta\";\n      }\n    }\n  });\n\n  CodeMirror.registerHelper(\"hintWords\", \"application/dart\", keywords.concat(atoms).concat(builtins));\n\n  // This is needed to make loading through meta.js work.\n  CodeMirror.defineMode(\"dart\", function(conf) {\n    return CodeMirror.getMode(conf, \"application/dart\");\n  }, \"clike\");\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/dart/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Dart mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../clike/clike.js\"></script>\n<script src=\"dart.js\"></script>\n<style>.CodeMirror {border: 1px solid #dee;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Dart</a>\n  </ul>\n</div>\n\n<article>\n<h2>Dart mode</h2>\n<form>\n<textarea id=\"code\" name=\"code\">\nimport 'dart:math' show Random;\n\nvoid main() {\n  print(new Die(n: 12).roll());\n}\n\n// Define a class.\nclass Die {\n  // Define a class variable.\n  static Random shaker = new Random();\n\n  // Define instance variables.\n  int sides, value;\n\n  // Define a method using shorthand syntax.\n  String toString() => '$value';\n\n  // Define a constructor.\n  Die({int n: 6}) {\n    if (4 <= n && n <= 20) {\n      sides = n;\n    } else {\n      // Support for errors and exceptions.\n      throw new ArgumentError(/* */);\n    }\n  }\n\n  // Define an instance method.\n  int roll() {\n    return value = shaker.nextInt(sides) + 1;\n  }\n}\n</textarea>\n</form>\n\n<script>\n  var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n    lineNumbers: true,\n    mode: \"application/dart\"\n  });\n</script>\n\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/diff/diff.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"diff\", function() {\n\n  var TOKEN_NAMES = {\n    '+': 'positive',\n    '-': 'negative',\n    '@': 'meta'\n  };\n\n  return {\n    token: function(stream) {\n      var tw_pos = stream.string.search(/[\\t ]+?$/);\n\n      if (!stream.sol() || tw_pos === 0) {\n        stream.skipToEnd();\n        return (\"error \" + (\n          TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, '');\n      }\n\n      var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd();\n\n      if (tw_pos === -1) {\n        stream.skipToEnd();\n      } else {\n        stream.pos = tw_pos;\n      }\n\n      return token_name;\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-diff\", \"diff\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/diff/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Diff mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"diff.js\"></script>\n<style>\n      .CodeMirror {border-top: 1px solid #ddd; border-bottom: 1px solid #ddd;}\n      span.cm-meta {color: #a0b !important;}\n      span.cm-error { background-color: black; opacity: 0.4;}\n      span.cm-error.cm-string { background-color: red; }\n      span.cm-error.cm-tag { background-color: #2b2; }\n    </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Diff</a>\n  </ul>\n</div>\n\n<article>\n<h2>Diff mode</h2>\n<form><textarea id=\"code\" name=\"code\">\ndiff --git a/index.html b/index.html\nindex c1d9156..7764744 100644\n--- a/index.html\n+++ b/index.html\n@@ -95,7 +95,8 @@ StringStream.prototype = {\n     <script>\n       var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n         lineNumbers: true,\n-        autoMatchBrackets: true\n+        autoMatchBrackets: true,\n+      onGutterClick: function(x){console.log(x);}\n       });\n     </script>\n   </body>\ndiff --git a/lib/codemirror.js b/lib/codemirror.js\nindex 04646a9..9a39cc7 100644\n--- a/lib/codemirror.js\n+++ b/lib/codemirror.js\n@@ -399,10 +399,16 @@ var CodeMirror = (function() {\n     }\n \n     function onMouseDown(e) {\n-      var start = posFromMouse(e), last = start;    \n+      var start = posFromMouse(e), last = start, target = e.target();\n       if (!start) return;\n       setCursor(start.line, start.ch, false);\n       if (e.button() != 1) return;\n+      if (target.parentNode == gutter) {    \n+        if (options.onGutterClick)\n+          options.onGutterClick(indexOf(gutter.childNodes, target) + showingFrom);\n+        return;\n+      }\n+\n       if (!focused) onFocus();\n \n       e.stop();\n@@ -808,7 +814,7 @@ var CodeMirror = (function() {\n       for (var i = showingFrom; i < showingTo; ++i) {\n         var marker = lines[i].gutterMarker;\n         if (marker) html.push('<div class=\"' + marker.style + '\">' + htmlEscape(marker.text) + '</div>');\n-        else html.push(\"<div>\" + (options.lineNumbers ? i + 1 : \"\\u00a0\") + \"</div>\");\n+        else html.push(\"<div>\" + (options.lineNumbers ? i + options.firstLineNumber : \"\\u00a0\") + \"</div>\");\n       }\n       gutter.style.display = \"none\"; // TODO test whether this actually helps\n       gutter.innerHTML = html.join(\"\");\n@@ -1371,10 +1377,8 @@ var CodeMirror = (function() {\n         if (option == \"parser\") setParser(value);\n         else if (option === \"lineNumbers\") setLineNumbers(value);\n         else if (option === \"gutter\") setGutter(value);\n-        else if (option === \"readOnly\") options.readOnly = value;\n-        else if (option === \"indentUnit\") {options.indentUnit = indentUnit = value; setParser(options.parser);}\n-        else if (/^(?:enterMode|tabMode|indentWithTabs|readOnly|autoMatchBrackets|undoDepth)$/.test(option)) options[option] = value;\n-        else throw new Error(\"Can't set option \" + option);\n+        else if (option === \"indentUnit\") {options.indentUnit = value; setParser(options.parser);}\n+        else options[option] = value;\n       },\n       cursorCoords: cursorCoords,\n       undo: operation(undo),\n@@ -1402,7 +1406,8 @@ var CodeMirror = (function() {\n       replaceRange: operation(replaceRange),\n \n       operation: function(f){return operation(f)();},\n-      refresh: function(){updateDisplay([{from: 0, to: lines.length}]);}\n+      refresh: function(){updateDisplay([{from: 0, to: lines.length}]);},\n+      getInputField: function(){return input;}\n     };\n     return instance;\n   }\n@@ -1420,6 +1425,7 @@ var CodeMirror = (function() {\n     readOnly: false,\n     onChange: null,\n     onCursorActivity: null,\n+    onGutterClick: null,\n     autoMatchBrackets: false,\n     workTime: 200,\n     workDelay: 300,\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {});\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-diff</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/django/django.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../htmlmixed/htmlmixed\"),\n        require(\"../../addon/mode/overlay\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../htmlmixed/htmlmixed\",\n            \"../../addon/mode/overlay\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineMode(\"django:inner\", function() {\n    var keywords = [\"block\", \"endblock\", \"for\", \"endfor\", \"in\", \"true\", \"false\",\n                    \"loop\", \"none\", \"self\", \"super\", \"if\", \"endif\", \"as\", \"not\", \"and\",\n                    \"else\", \"import\", \"with\", \"endwith\", \"without\", \"context\", \"ifequal\", \"endifequal\",\n                    \"ifnotequal\", \"endifnotequal\", \"extends\", \"include\", \"load\", \"length\", \"comment\",\n                    \"endcomment\", \"empty\"];\n    keywords = new RegExp(\"^((\" + keywords.join(\")|(\") + \"))\\\\b\");\n\n    function tokenBase (stream, state) {\n      stream.eatWhile(/[^\\{]/);\n      var ch = stream.next();\n      if (ch == \"{\") {\n        if (ch = stream.eat(/\\{|%|#/)) {\n          state.tokenize = inTag(ch);\n          return \"tag\";\n        }\n      }\n    }\n    function inTag (close) {\n      if (close == \"{\") {\n        close = \"}\";\n      }\n      return function (stream, state) {\n        var ch = stream.next();\n        if ((ch == close) && stream.eat(\"}\")) {\n          state.tokenize = tokenBase;\n          return \"tag\";\n        }\n        if (stream.match(keywords)) {\n          return \"keyword\";\n        }\n        return close == \"#\" ? \"comment\" : \"string\";\n      };\n    }\n    return {\n      startState: function () {\n        return {tokenize: tokenBase};\n      },\n      token: function (stream, state) {\n        return state.tokenize(stream, state);\n      }\n    };\n  });\n\n  CodeMirror.defineMode(\"django\", function(config) {\n    var htmlBase = CodeMirror.getMode(config, \"text/html\");\n    var djangoInner = CodeMirror.getMode(config, \"django:inner\");\n    return CodeMirror.overlayMode(htmlBase, djangoInner);\n  });\n\n  CodeMirror.defineMIME(\"text/x-django\", \"django\");\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/django/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Django template mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/mode/overlay.js\"></script>\n<script src=\"../xml/xml.js\"></script>\n<script src=\"../htmlmixed/htmlmixed.js\"></script>\n<script src=\"django.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Django</a>\n  </ul>\n</div>\n\n<article>\n<h2>Django template mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n<!doctype html>\n<html>\n    <head>\n        <title>My Django web application</title>\n    </head>\n    <body>\n        <h1>\n            {{ page.title }}\n        </h1>\n        <ul class=\"my-list\">\n            {% for item in items %}\n                <li>{% item.name %}</li>\n            {% empty %}\n                <li>You have no items in your list.</li>\n            {% endfor %}\n        </ul>\n    </body>\n</html>\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        mode: \"django\",\n        indentUnit: 4,\n        indentWithTabs: true\n      });\n    </script>\n\n    <p>Mode for HTML with embedded Django template markup.</p>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-django</code></p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/dockerfile/dockerfile.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../../addon/mode/simple\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../../addon/mode/simple\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  // Collect all Dockerfile directives\n  var instructions = [\"from\", \"maintainer\", \"run\", \"cmd\", \"expose\", \"env\",\n                      \"add\", \"copy\", \"entrypoint\", \"volume\", \"user\",\n                      \"workdir\", \"onbuild\"],\n      instructionRegex = \"(\" + instructions.join('|') + \")\",\n      instructionOnlyLine = new RegExp(instructionRegex + \"\\\\s*$\", \"i\"),\n      instructionWithArguments = new RegExp(instructionRegex + \"(\\\\s+)\", \"i\");\n\n  CodeMirror.defineSimpleMode(\"dockerfile\", {\n    start: [\n      // Block comment: This is a line starting with a comment\n      {\n        regex: /#.*$/,\n        token: \"comment\"\n      },\n      // Highlight an instruction without any arguments (for convenience)\n      {\n        regex: instructionOnlyLine,\n        token: \"variable-2\"\n      },\n      // Highlight an instruction followed by arguments\n      {\n        regex: instructionWithArguments,\n        token: [\"variable-2\", null],\n        next: \"arguments\"\n      },\n      {\n        regex: /./,\n        token: null\n      }\n    ],\n    arguments: [\n      {\n        // Line comment without instruction arguments is an error\n        regex: /#.*$/,\n        token: \"error\",\n        next: \"start\"\n      },\n      {\n        regex: /[^#]+\\\\$/,\n        token: null\n      },\n      {\n        // Match everything except for the inline comment\n        regex: /[^#]+/,\n        token: null,\n        next: \"start\"\n      },\n      {\n        regex: /$/,\n        token: null,\n        next: \"start\"\n      },\n      // Fail safe return to start\n      {\n        token: null,\n        next: \"start\"\n      }\n    ]\n  });\n\n  CodeMirror.defineMIME(\"text/x-dockerfile\", \"dockerfile\");\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/dockerfile/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Dockerfile mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/mode/simple.js\"></script>\n<script src=\"dockerfile.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Dockerfile</a>\n  </ul>\n</div>\n\n<article>\n<h2>Dockerfile mode</h2>\n<form><textarea id=\"code\" name=\"code\"># Install Ghost blogging platform and run development environment\n#\n# VERSION 1.0.0\n\nFROM ubuntu:12.10\nMAINTAINER Amer Grgic \"amer@livebyt.es\"\nWORKDIR /data/ghost\n\n# Install dependencies for nginx installation\nRUN apt-get update\nRUN apt-get install -y python g++ make software-properties-common --force-yes\nRUN add-apt-repository ppa:chris-lea/node.js\nRUN apt-get update\n# Install unzip\nRUN apt-get install -y unzip\n# Install curl\nRUN apt-get install -y curl\n# Install nodejs & npm\nRUN apt-get install -y rlwrap\nRUN apt-get install -y nodejs \n# Download Ghost v0.4.1\nRUN curl -L https://ghost.org/zip/ghost-latest.zip -o /tmp/ghost.zip\n# Unzip Ghost zip to /data/ghost\nRUN unzip -uo /tmp/ghost.zip -d /data/ghost\n# Add custom config js to /data/ghost\nADD ./config.example.js /data/ghost/config.js\n# Install Ghost with NPM\nRUN cd /data/ghost/ && npm install --production\n# Expose port 2368\nEXPOSE 2368\n# Run Ghost\nCMD [\"npm\",\"start\"]\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        mode: \"dockerfile\"\n      });\n    </script>\n\n    <p>Dockerfile syntax highlighting for CodeMirror. Depends on\n    the <a href=\"../../demo/simplemode.html\">simplemode</a> addon.</p>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-dockerfile</code></p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/dtd/dtd.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/*\n  DTD mode\n  Ported to CodeMirror by Peter Kroon <plakroon@gmail.com>\n  Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues\n  GitHub: @peterkroon\n*/\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"dtd\", function(config) {\n  var indentUnit = config.indentUnit, type;\n  function ret(style, tp) {type = tp; return style;}\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n\n    if (ch == \"<\" && stream.eat(\"!\") ) {\n      if (stream.eatWhile(/[\\-]/)) {\n        state.tokenize = tokenSGMLComment;\n        return tokenSGMLComment(stream, state);\n      } else if (stream.eatWhile(/[\\w]/)) return ret(\"keyword\", \"doindent\");\n    } else if (ch == \"<\" && stream.eat(\"?\")) { //xml declaration\n      state.tokenize = inBlock(\"meta\", \"?>\");\n      return ret(\"meta\", ch);\n    } else if (ch == \"#\" && stream.eatWhile(/[\\w]/)) return ret(\"atom\", \"tag\");\n    else if (ch == \"|\") return ret(\"keyword\", \"seperator\");\n    else if (ch.match(/[\\(\\)\\[\\]\\-\\.,\\+\\?>]/)) return ret(null, ch);//if(ch === \">\") return ret(null, \"endtag\"); else\n    else if (ch.match(/[\\[\\]]/)) return ret(\"rule\", ch);\n    else if (ch == \"\\\"\" || ch == \"'\") {\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    } else if (stream.eatWhile(/[a-zA-Z\\?\\+\\d]/)) {\n      var sc = stream.current();\n      if( sc.substr(sc.length-1,sc.length).match(/\\?|\\+/) !== null )stream.backUp(1);\n      return ret(\"tag\", \"tag\");\n    } else if (ch == \"%\" || ch == \"*\" ) return ret(\"number\", \"number\");\n    else {\n      stream.eatWhile(/[\\w\\\\\\-_%.{,]/);\n      return ret(null, null);\n    }\n  }\n\n  function tokenSGMLComment(stream, state) {\n    var dashes = 0, ch;\n    while ((ch = stream.next()) != null) {\n      if (dashes >= 2 && ch == \">\") {\n        state.tokenize = tokenBase;\n        break;\n      }\n      dashes = (ch == \"-\") ? dashes + 1 : 0;\n    }\n    return ret(\"comment\", \"comment\");\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == quote && !escaped) {\n          state.tokenize = tokenBase;\n          break;\n        }\n        escaped = !escaped && ch == \"\\\\\";\n      }\n      return ret(\"string\", \"tag\");\n    };\n  }\n\n  function inBlock(style, terminator) {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.match(terminator)) {\n          state.tokenize = tokenBase;\n          break;\n        }\n        stream.next();\n      }\n      return style;\n    };\n  }\n\n  return {\n    startState: function(base) {\n      return {tokenize: tokenBase,\n              baseIndent: base || 0,\n              stack: []};\n    },\n\n    token: function(stream, state) {\n      if (stream.eatSpace()) return null;\n      var style = state.tokenize(stream, state);\n\n      var context = state.stack[state.stack.length-1];\n      if (stream.current() == \"[\" || type === \"doindent\" || type == \"[\") state.stack.push(\"rule\");\n      else if (type === \"endtag\") state.stack[state.stack.length-1] = \"endtag\";\n      else if (stream.current() == \"]\" || type == \"]\" || (type == \">\" && context == \"rule\")) state.stack.pop();\n      else if (type == \"[\") state.stack.push(\"[\");\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      var n = state.stack.length;\n\n      if( textAfter.match(/\\]\\s+|\\]/) )n=n-1;\n      else if(textAfter.substr(textAfter.length-1, textAfter.length) === \">\"){\n        if(textAfter.substr(0,1) === \"<\")n;\n        else if( type == \"doindent\" && textAfter.length > 1 )n;\n        else if( type == \"doindent\")n--;\n        else if( type == \">\" && textAfter.length > 1)n;\n        else if( type == \"tag\" && textAfter !== \">\")n;\n        else if( type == \"tag\" && state.stack[state.stack.length-1] == \"rule\")n--;\n        else if( type == \"tag\")n++;\n        else if( textAfter === \">\" && state.stack[state.stack.length-1] == \"rule\" && type === \">\")n--;\n        else if( textAfter === \">\" && state.stack[state.stack.length-1] == \"rule\")n;\n        else if( textAfter.substr(0,1) !== \"<\" && textAfter.substr(0,1) === \">\" )n=n-1;\n        else if( textAfter === \">\")n;\n        else n=n-1;\n        //over rule them all\n        if(type == null || type == \"]\")n--;\n      }\n\n      return state.baseIndent + n * indentUnit;\n    },\n\n    electricChars: \"]>\"\n  };\n});\n\nCodeMirror.defineMIME(\"application/xml-dtd\", \"dtd\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/dtd/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: DTD mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"dtd.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">DTD</a>\n  </ul>\n</div>\n\n<article>\n<h2>DTD mode</h2>\n<form><textarea id=\"code\" name=\"code\"><?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!ATTLIST title\n  xmlns\tCDATA\t#FIXED\t\"http://docbook.org/ns/docbook\"\n  role\tCDATA\t#IMPLIED\n  %db.common.attributes;\n  %db.common.linking.attributes;\n>\n\n<!--\n  Try: http://docbook.org/xml/5.0/dtd/docbook.dtd\n-->\n\n<!DOCTYPE xsl:stylesheet\n  [\n    <!ENTITY nbsp   \"&amp;#160;\">\n    <!ENTITY copy   \"&amp;#169;\">\n    <!ENTITY reg    \"&amp;#174;\">\n    <!ENTITY trade  \"&amp;#8482;\">\n    <!ENTITY mdash  \"&amp;#8212;\">\n    <!ENTITY ldquo  \"&amp;#8220;\">\n    <!ENTITY rdquo  \"&amp;#8221;\">\n    <!ENTITY pound  \"&amp;#163;\">\n    <!ENTITY yen    \"&amp;#165;\">\n    <!ENTITY euro   \"&amp;#8364;\">\n    <!ENTITY mathml \"http://www.w3.org/1998/Math/MathML\">\n  ]\n>\n\n<!ELEMENT title (#PCDATA|inlinemediaobject|remark|superscript|subscript|xref|link|olink|anchor|biblioref|alt|annotation|indexterm|abbrev|acronym|date|emphasis|footnote|footnoteref|foreignphrase|phrase|quote|wordasword|firstterm|glossterm|coref|trademark|productnumber|productname|database|application|hardware|citation|citerefentry|citetitle|citebiblioid|author|person|personname|org|orgname|editor|jobtitle|replaceable|package|parameter|termdef|nonterminal|systemitem|option|optional|property|inlineequation|tag|markup|token|symbol|literal|code|constant|email|uri|guiicon|guibutton|guimenuitem|guimenu|guisubmenu|guilabel|menuchoice|mousebutton|keycombo|keycap|keycode|keysym|shortcut|accel|prompt|envar|filename|command|computeroutput|userinput|function|varname|returnvalue|type|classname|exceptionname|interfacename|methodname|modifier|initializer|ooclass|ooexception|oointerface|errorcode|errortext|errorname|errortype)*>\n\n<!ENTITY % db.common.attributes \"\n  xml:id\tID\t#IMPLIED\n  version\tCDATA\t#IMPLIED\n  xml:lang\tCDATA\t#IMPLIED\n  xml:base\tCDATA\t#IMPLIED\n  remap\tCDATA\t#IMPLIED\n  xreflabel\tCDATA\t#IMPLIED\n  revisionflag\t(changed|added|deleted|off)\t#IMPLIED\n  dir\t(ltr|rtl|lro|rlo)\t#IMPLIED\n  arch\tCDATA\t#IMPLIED\n  audience\tCDATA\t#IMPLIED\n  condition\tCDATA\t#IMPLIED\n  conformance\tCDATA\t#IMPLIED\n  os\tCDATA\t#IMPLIED\n  revision\tCDATA\t#IMPLIED\n  security\tCDATA\t#IMPLIED\n  userlevel\tCDATA\t#IMPLIED\n  vendor\tCDATA\t#IMPLIED\n  wordsize\tCDATA\t#IMPLIED\n  annotations\tCDATA\t#IMPLIED\n\n\"></textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: {name: \"dtd\", alignCDATA: true},\n        lineNumbers: true,\n        lineWrapping: true\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>application/xml-dtd</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/dylan/dylan.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"dylan\", function(_config) {\n  // Words\n  var words = {\n    // Words that introduce unnamed definitions like \"define interface\"\n    unnamedDefinition: [\"interface\"],\n\n    // Words that introduce simple named definitions like \"define library\"\n    namedDefinition: [\"module\", \"library\", \"macro\",\n                      \"C-struct\", \"C-union\",\n                      \"C-function\", \"C-callable-wrapper\"\n                     ],\n\n    // Words that introduce type definitions like \"define class\".\n    // These are also parameterized like \"define method\" and are\n    // appended to otherParameterizedDefinitionWords\n    typeParameterizedDefinition: [\"class\", \"C-subtype\", \"C-mapped-subtype\"],\n\n    // Words that introduce trickier definitions like \"define method\".\n    // These require special definitions to be added to startExpressions\n    otherParameterizedDefinition: [\"method\", \"function\",\n                                   \"C-variable\", \"C-address\"\n                                  ],\n\n    // Words that introduce module constant definitions.\n    // These must also be simple definitions and are\n    // appended to otherSimpleDefinitionWords\n    constantSimpleDefinition: [\"constant\"],\n\n    // Words that introduce module variable definitions.\n    // These must also be simple definitions and are\n    // appended to otherSimpleDefinitionWords\n    variableSimpleDefinition: [\"variable\"],\n\n    // Other words that introduce simple definitions\n    // (without implicit bodies).\n    otherSimpleDefinition: [\"generic\", \"domain\",\n                            \"C-pointer-type\",\n                            \"table\"\n                           ],\n\n    // Words that begin statements with implicit bodies.\n    statement: [\"if\", \"block\", \"begin\", \"method\", \"case\",\n                \"for\", \"select\", \"when\", \"unless\", \"until\",\n                \"while\", \"iterate\", \"profiling\", \"dynamic-bind\"\n               ],\n\n    // Patterns that act as separators in compound statements.\n    // This may include any general pattern that must be indented\n    // specially.\n    separator: [\"finally\", \"exception\", \"cleanup\", \"else\",\n                \"elseif\", \"afterwards\"\n               ],\n\n    // Keywords that do not require special indentation handling,\n    // but which should be highlighted\n    other: [\"above\", \"below\", \"by\", \"from\", \"handler\", \"in\",\n            \"instance\", \"let\", \"local\", \"otherwise\", \"slot\",\n            \"subclass\", \"then\", \"to\", \"keyed-by\", \"virtual\"\n           ],\n\n    // Condition signaling function calls\n    signalingCalls: [\"signal\", \"error\", \"cerror\",\n                     \"break\", \"check-type\", \"abort\"\n                    ]\n  };\n\n  words[\"otherDefinition\"] =\n    words[\"unnamedDefinition\"]\n    .concat(words[\"namedDefinition\"])\n    .concat(words[\"otherParameterizedDefinition\"]);\n\n  words[\"definition\"] =\n    words[\"typeParameterizedDefinition\"]\n    .concat(words[\"otherDefinition\"]);\n\n  words[\"parameterizedDefinition\"] =\n    words[\"typeParameterizedDefinition\"]\n    .concat(words[\"otherParameterizedDefinition\"]);\n\n  words[\"simpleDefinition\"] =\n    words[\"constantSimpleDefinition\"]\n    .concat(words[\"variableSimpleDefinition\"])\n    .concat(words[\"otherSimpleDefinition\"]);\n\n  words[\"keyword\"] =\n    words[\"statement\"]\n    .concat(words[\"separator\"])\n    .concat(words[\"other\"]);\n\n  // Patterns\n  var symbolPattern = \"[-_a-zA-Z?!*@<>$%]+\";\n  var symbol = new RegExp(\"^\" + symbolPattern);\n  var patterns = {\n    // Symbols with special syntax\n    symbolKeyword: symbolPattern + \":\",\n    symbolClass: \"<\" + symbolPattern + \">\",\n    symbolGlobal: \"\\\\*\" + symbolPattern + \"\\\\*\",\n    symbolConstant: \"\\\\$\" + symbolPattern\n  };\n  var patternStyles = {\n    symbolKeyword: \"atom\",\n    symbolClass: \"tag\",\n    symbolGlobal: \"variable-2\",\n    symbolConstant: \"variable-3\"\n  };\n\n  // Compile all patterns to regular expressions\n  for (var patternName in patterns)\n    if (patterns.hasOwnProperty(patternName))\n      patterns[patternName] = new RegExp(\"^\" + patterns[patternName]);\n\n  // Names beginning \"with-\" and \"without-\" are commonly\n  // used as statement macro\n  patterns[\"keyword\"] = [/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/];\n\n  var styles = {};\n  styles[\"keyword\"] = \"keyword\";\n  styles[\"definition\"] = \"def\";\n  styles[\"simpleDefinition\"] = \"def\";\n  styles[\"signalingCalls\"] = \"builtin\";\n\n  // protected words lookup table\n  var wordLookup = {};\n  var styleLookup = {};\n\n  [\n    \"keyword\",\n    \"definition\",\n    \"simpleDefinition\",\n    \"signalingCalls\"\n  ].forEach(function(type) {\n    words[type].forEach(function(word) {\n      wordLookup[word] = type;\n      styleLookup[word] = styles[type];\n    });\n  });\n\n\n  function chain(stream, state, f) {\n    state.tokenize = f;\n    return f(stream, state);\n  }\n\n  var type, content;\n\n  function ret(_type, style, _content) {\n    type = _type;\n    content = _content;\n    return style;\n  }\n\n  function tokenBase(stream, state) {\n    // String\n    var ch = stream.peek();\n    if (ch == \"'\" || ch == '\"') {\n      stream.next();\n      return chain(stream, state, tokenString(ch, \"string\", \"string\"));\n    }\n    // Comment\n    else if (ch == \"/\") {\n      stream.next();\n      if (stream.eat(\"*\")) {\n        return chain(stream, state, tokenComment);\n      } else if (stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return ret(\"comment\", \"comment\");\n      } else {\n        stream.skipTo(\" \");\n        return ret(\"operator\", \"operator\");\n      }\n    }\n    // Decimal\n    else if (/\\d/.test(ch)) {\n      stream.match(/^\\d*(?:\\.\\d*)?(?:e[+\\-]?\\d+)?/);\n      return ret(\"number\", \"number\");\n    }\n    // Hash\n    else if (ch == \"#\") {\n      stream.next();\n      // Symbol with string syntax\n      ch = stream.peek();\n      if (ch == '\"') {\n        stream.next();\n        return chain(stream, state, tokenString('\"', \"symbol\", \"string-2\"));\n      }\n      // Binary number\n      else if (ch == \"b\") {\n        stream.next();\n        stream.eatWhile(/[01]/);\n        return ret(\"number\", \"number\");\n      }\n      // Hex number\n      else if (ch == \"x\") {\n        stream.next();\n        stream.eatWhile(/[\\da-f]/i);\n        return ret(\"number\", \"number\");\n      }\n      // Octal number\n      else if (ch == \"o\") {\n        stream.next();\n        stream.eatWhile(/[0-7]/);\n        return ret(\"number\", \"number\");\n      }\n      // Hash symbol\n      else {\n        stream.eatWhile(/[-a-zA-Z]/);\n        return ret(\"hash\", \"keyword\");\n      }\n    } else if (stream.match(\"end\")) {\n      return ret(\"end\", \"keyword\");\n    }\n    for (var name in patterns) {\n      if (patterns.hasOwnProperty(name)) {\n        var pattern = patterns[name];\n        if ((pattern instanceof Array && pattern.some(function(p) {\n          return stream.match(p);\n        })) || stream.match(pattern))\n          return ret(name, patternStyles[name], stream.current());\n      }\n    }\n    if (stream.match(\"define\")) {\n      return ret(\"definition\", \"def\");\n    } else {\n      stream.eatWhile(/[\\w\\-]/);\n      // Keyword\n      if (wordLookup[stream.current()]) {\n        return ret(wordLookup[stream.current()], styleLookup[stream.current()], stream.current());\n      } else if (stream.current().match(symbol)) {\n        return ret(\"variable\", \"variable\");\n      } else {\n        stream.next();\n        return ret(\"other\", \"variable-2\");\n      }\n    }\n  }\n\n  function tokenComment(stream, state) {\n    var maybeEnd = false,\n    ch;\n    while ((ch = stream.next())) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return ret(\"comment\", \"comment\");\n  }\n\n  function tokenString(quote, type, style) {\n    return function(stream, state) {\n      var next, end = false;\n      while ((next = stream.next()) != null) {\n        if (next == quote) {\n          end = true;\n          break;\n        }\n      }\n      if (end)\n        state.tokenize = tokenBase;\n      return ret(type, style);\n    };\n  }\n\n  // Interface\n  return {\n    startState: function() {\n      return {\n        tokenize: tokenBase,\n        currentIndent: 0\n      };\n    },\n    token: function(stream, state) {\n      if (stream.eatSpace())\n        return null;\n      var style = state.tokenize(stream, state);\n      return style;\n    },\n    blockCommentStart: \"/*\",\n    blockCommentEnd: \"*/\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-dylan\", \"dylan\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/dylan/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Dylan mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"../../addon/comment/continuecomment.js\"></script>\n<script src=\"../../addon/comment/comment.js\"></script>\n<script src=\"dylan.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Dylan</a>\n  </ul>\n</div>\n\n<article>\n<h2>Dylan mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\nModule:       locators-internals\nSynopsis:     Abstract modeling of locations\nAuthor:       Andy Armstrong\nCopyright:    Original Code is Copyright (c) 1995-2004 Functional Objects, Inc.\n              All rights reserved.\nLicense:      See License.txt in this distribution for details.\nWarranty:     Distributed WITHOUT WARRANTY OF ANY KIND\n\ndefine open generic locator-server\n    (locator :: <locator>) => (server :: false-or(<server-locator>));\ndefine open generic locator-host\n    (locator :: <locator>) => (host :: false-or(<string>));\ndefine open generic locator-volume\n    (locator :: <locator>) => (volume :: false-or(<string>));\ndefine open generic locator-directory\n    (locator :: <locator>) => (directory :: false-or(<directory-locator>));\ndefine open generic locator-relative?\n    (locator :: <locator>) => (relative? :: <boolean>);\ndefine open generic locator-path\n    (locator :: <locator>) => (path :: <sequence>);\ndefine open generic locator-base\n    (locator :: <locator>) => (base :: false-or(<string>));\ndefine open generic locator-extension\n    (locator :: <locator>) => (extension :: false-or(<string>));\n\n/// Locator classes\n\ndefine open abstract class <directory-locator> (<physical-locator>)\nend class <directory-locator>;\n\ndefine open abstract class <file-locator> (<physical-locator>)\nend class <file-locator>;\n\ndefine method as\n    (class == <directory-locator>, string :: <string>)\n => (locator :: <directory-locator>)\n  as(<native-directory-locator>, string)\nend method as;\n\ndefine method make\n    (class == <directory-locator>,\n     #key server :: false-or(<server-locator>) = #f,\n          path :: <sequence> = #[],\n          relative? :: <boolean> = #f,\n          name :: false-or(<string>) = #f)\n => (locator :: <directory-locator>)\n  make(<native-directory-locator>,\n       server:    server,\n       path:      path,\n       relative?: relative?,\n       name:      name)\nend method make;\n\ndefine method as\n    (class == <file-locator>, string :: <string>)\n => (locator :: <file-locator>)\n  as(<native-file-locator>, string)\nend method as;\n\ndefine method make\n    (class == <file-locator>,\n     #key directory :: false-or(<directory-locator>) = #f,\n          base :: false-or(<string>) = #f,\n          extension :: false-or(<string>) = #f,\n          name :: false-or(<string>) = #f)\n => (locator :: <file-locator>)\n  make(<native-file-locator>,\n       directory: directory,\n       base:      base,\n       extension: extension,\n       name:      name)\nend method make;\n\n/// Locator coercion\n\n//---*** andrewa: This caching scheme doesn't work yet, so disable it.\ndefine constant $cache-locators?        = #f;\ndefine constant $cache-locator-strings? = #f;\n\ndefine constant $locator-to-string-cache = make(<object-table>, weak: #\"key\");\ndefine constant $string-to-locator-cache = make(<string-table>, weak: #\"value\");\n\ndefine open generic locator-as-string\n    (class :: subclass(<string>), locator :: <locator>)\n => (string :: <string>);\n\ndefine open generic string-as-locator\n    (class :: subclass(<locator>), string :: <string>)\n => (locator :: <locator>);\n\ndefine sealed sideways method as\n    (class :: subclass(<string>), locator :: <locator>)\n => (string :: <string>)\n  let string = element($locator-to-string-cache, locator, default: #f);\n  if (string)\n    as(class, string)\n  else\n    let string = locator-as-string(class, locator);\n    if ($cache-locator-strings?)\n      element($locator-to-string-cache, locator) := string;\n    else\n      string\n    end\n  end\nend method as;\n\ndefine sealed sideways method as\n    (class :: subclass(<locator>), string :: <string>)\n => (locator :: <locator>)\n  let locator = element($string-to-locator-cache, string, default: #f);\n  if (instance?(locator, class))\n    locator\n  else\n    let locator = string-as-locator(class, string);\n    if ($cache-locators?)\n      element($string-to-locator-cache, string) := locator;\n    else\n      locator\n    end\n  end\nend method as;\n\n/// Locator conditions\n\ndefine class <locator-error> (<format-string-condition>, <error>)\nend class <locator-error>;\n\ndefine function locator-error\n    (format-string :: <string>, #rest format-arguments)\n  error(make(<locator-error>, \n             format-string:    format-string,\n             format-arguments: format-arguments))\nend function locator-error;\n\n/// Useful locator protocols\n\ndefine open generic locator-test\n    (locator :: <directory-locator>) => (test :: <function>);\n\ndefine method locator-test\n    (locator :: <directory-locator>) => (test :: <function>)\n  \\=\nend method locator-test;\n\ndefine open generic locator-might-have-links?\n    (locator :: <directory-locator>) => (links? :: <boolean>);\n\ndefine method locator-might-have-links?\n    (locator :: <directory-locator>) => (links? :: singleton(#f))\n  #f\nend method locator-might-have-links?;\n\ndefine method locator-relative?\n    (locator :: <file-locator>) => (relative? :: <boolean>)\n  let directory = locator.locator-directory;\n  ~directory | directory.locator-relative?\nend method locator-relative?;\n\ndefine method current-directory-locator?\n    (locator :: <directory-locator>) => (current-directory? :: <boolean>)\n  locator.locator-relative?\n    & locator.locator-path = #[#\"self\"]\nend method current-directory-locator?;\n\ndefine method locator-directory\n    (locator :: <directory-locator>) => (parent :: false-or(<directory-locator>))\n  let path = locator.locator-path;\n  unless (empty?(path))\n    make(object-class(locator),\n         server:    locator.locator-server,\n         path:      copy-sequence(path, end: path.size - 1),\n         relative?: locator.locator-relative?)\n  end\nend method locator-directory;\n\n/// Simplify locator\n\ndefine open generic simplify-locator\n    (locator :: <physical-locator>)\n => (simplified-locator :: <physical-locator>);\n\ndefine method simplify-locator\n    (locator :: <directory-locator>)\n => (simplified-locator :: <directory-locator>)\n  let path = locator.locator-path;\n  let relative? = locator.locator-relative?;\n  let resolve-parent? = ~locator.locator-might-have-links?;\n  let simplified-path\n    = simplify-path(path, \n                    resolve-parent?: resolve-parent?,\n                    relative?: relative?);\n  if (path ~= simplified-path)\n    make(object-class(locator),\n         server:    locator.locator-server,\n         path:      simplified-path,\n         relative?: locator.locator-relative?)\n  else\n    locator\n  end\nend method simplify-locator;\n\ndefine method simplify-locator\n    (locator :: <file-locator>) => (simplified-locator :: <file-locator>)\n  let directory = locator.locator-directory;\n  let simplified-directory = directory & simplify-locator(directory);\n  if (directory ~= simplified-directory)\n    make(object-class(locator),\n         directory: simplified-directory,\n         base:      locator.locator-base,\n         extension: locator.locator-extension)\n  else\n    locator\n  end\nend method simplify-locator;\n\n/// Subdirectory locator\n\ndefine open generic subdirectory-locator\n    (locator :: <directory-locator>, #rest sub-path)\n => (subdirectory :: <directory-locator>);\n\ndefine method subdirectory-locator\n    (locator :: <directory-locator>, #rest sub-path)\n => (subdirectory :: <directory-locator>)\n  let old-path = locator.locator-path;\n  let new-path = concatenate-as(<simple-object-vector>, old-path, sub-path);\n  make(object-class(locator),\n       server:    locator.locator-server,\n       path:      new-path,\n       relative?: locator.locator-relative?)\nend method subdirectory-locator;\n\n/// Relative locator\n\ndefine open generic relative-locator\n    (locator :: <physical-locator>, from-locator :: <physical-locator>)\n => (relative-locator :: <physical-locator>);\n\ndefine method relative-locator\n    (locator :: <directory-locator>, from-locator :: <directory-locator>)\n => (relative-locator :: <directory-locator>)\n  let path = locator.locator-path;\n  let from-path = from-locator.locator-path;\n  case\n    ~locator.locator-relative? & from-locator.locator-relative? =>\n      locator-error\n        (\"Cannot find relative path of absolute locator %= from relative locator %=\",\n         locator, from-locator);\n    locator.locator-server ~= from-locator.locator-server =>\n      locator;\n    path = from-path =>\n      make(object-class(locator),\n           path: vector(#\"self\"),\n           relative?: #t);\n    otherwise =>\n      make(object-class(locator),\n           path: relative-path(path, from-path, test: locator.locator-test),\n           relative?: #t);\n  end\nend method relative-locator;\n\ndefine method relative-locator\n    (locator :: <file-locator>, from-directory :: <directory-locator>)\n => (relative-locator :: <file-locator>)\n  let directory = locator.locator-directory;\n  let relative-directory = directory & relative-locator(directory, from-directory);\n  if (relative-directory ~= directory)\n    simplify-locator\n      (make(object-class(locator),\n            directory: relative-directory,\n            base:      locator.locator-base,\n            extension: locator.locator-extension))\n  else\n    locator\n  end\nend method relative-locator;\n\ndefine method relative-locator\n    (locator :: <physical-locator>, from-locator :: <file-locator>)\n => (relative-locator :: <physical-locator>)\n  let from-directory = from-locator.locator-directory;\n  case\n    from-directory =>\n      relative-locator(locator, from-directory);\n    ~locator.locator-relative? =>\n      locator-error\n        (\"Cannot find relative path of absolute locator %= from relative locator %=\",\n         locator, from-locator);\n    otherwise =>\n      locator;\n  end\nend method relative-locator;\n\n/// Merge locators\n\ndefine open generic merge-locators\n    (locator :: <physical-locator>, from-locator :: <physical-locator>)\n => (merged-locator :: <physical-locator>);\n\n/// Merge locators\n\ndefine method merge-locators\n    (locator :: <directory-locator>, from-locator :: <directory-locator>)\n => (merged-locator :: <directory-locator>)\n  if (locator.locator-relative?)\n    let path = concatenate(from-locator.locator-path, locator.locator-path);\n    simplify-locator\n      (make(object-class(locator),\n            server:    from-locator.locator-server,\n            path:      path,\n            relative?: from-locator.locator-relative?))\n  else\n    locator\n  end\nend method merge-locators;\n\ndefine method merge-locators\n    (locator :: <file-locator>, from-locator :: <directory-locator>)\n => (merged-locator :: <file-locator>)\n  let directory = locator.locator-directory;\n  let merged-directory \n    = if (directory)\n        merge-locators(directory, from-locator)\n      else\n        simplify-locator(from-locator)\n      end;\n  if (merged-directory ~= directory)\n    make(object-class(locator),\n         directory: merged-directory,\n         base:      locator.locator-base,\n         extension: locator.locator-extension)\n  else\n    locator\n  end\nend method merge-locators;\n\ndefine method merge-locators\n    (locator :: <physical-locator>, from-locator :: <file-locator>)\n => (merged-locator :: <physical-locator>)\n  let from-directory = from-locator.locator-directory;\n  if (from-directory)\n    merge-locators(locator, from-directory)\n  else\n    locator\n  end\nend method merge-locators;\n\n/// Locator protocols\n\ndefine sideways method supports-open-locator?\n    (locator :: <file-locator>) => (openable? :: <boolean>)\n  ~locator.locator-relative?\nend method supports-open-locator?;\n\ndefine sideways method open-locator\n    (locator :: <file-locator>, #rest keywords, #key, #all-keys)\n => (stream :: <stream>)\n  apply(open-file-stream, locator, keywords)\nend method open-locator;\n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: \"text/x-dylan\",\n        lineNumbers: true,\n        matchBrackets: true,\n        continueComments: \"Enter\",\n        extraKeys: {\"Ctrl-Q\": \"toggleComment\"},\n        tabMode: \"indent\",\n        indentUnit: 2\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-dylan</code>.</p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/ebnf/ebnf.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineMode(\"ebnf\", function (config) {\n    var commentType = {slash: 0, parenthesis: 1};\n    var stateType = {comment: 0, _string: 1, characterClass: 2};\n    var bracesMode = null;\n\n    if (config.bracesMode)\n      bracesMode = CodeMirror.getMode(config, config.bracesMode);\n\n    return {\n      startState: function () {\n        return {\n          stringType: null,\n          commentType: null,\n          braced: 0,\n          lhs: true,\n          localState: null,\n          stack: [],\n          inDefinition: false\n        };\n      },\n      token: function (stream, state) {\n        if (!stream) return;\n\n        //check for state changes\n        if (state.stack.length === 0) {\n          //strings\n          if ((stream.peek() == '\"') || (stream.peek() == \"'\")) {\n            state.stringType = stream.peek();\n            stream.next(); // Skip quote\n            state.stack.unshift(stateType._string);\n          } else if (stream.match(/^\\/\\*/)) { //comments starting with /*\n            state.stack.unshift(stateType.comment);\n            state.commentType = commentType.slash;\n          } else if (stream.match(/^\\(\\*/)) { //comments starting with (*\n            state.stack.unshift(stateType.comment);\n            state.commentType = commentType.parenthesis;\n          }\n        }\n\n        //return state\n        //stack has\n        switch (state.stack[0]) {\n        case stateType._string:\n          while (state.stack[0] === stateType._string && !stream.eol()) {\n            if (stream.peek() === state.stringType) {\n              stream.next(); // Skip quote\n              state.stack.shift(); // Clear flag\n            } else if (stream.peek() === \"\\\\\") {\n              stream.next();\n              stream.next();\n            } else {\n              stream.match(/^.[^\\\\\\\"\\']*/);\n            }\n          }\n          return state.lhs ? \"property string\" : \"string\"; // Token style\n\n        case stateType.comment:\n          while (state.stack[0] === stateType.comment && !stream.eol()) {\n            if (state.commentType === commentType.slash && stream.match(/\\*\\//)) {\n              state.stack.shift(); // Clear flag\n              state.commentType = null;\n            } else if (state.commentType === commentType.parenthesis && stream.match(/\\*\\)/)) {\n              state.stack.shift(); // Clear flag\n              state.commentType = null;\n            } else {\n              stream.match(/^.[^\\*]*/);\n            }\n          }\n          return \"comment\";\n\n        case stateType.characterClass:\n          while (state.stack[0] === stateType.characterClass && !stream.eol()) {\n            if (!(stream.match(/^[^\\]\\\\]+/) || stream.match(/^\\\\./))) {\n              state.stack.shift();\n            }\n          }\n          return \"operator\";\n        }\n\n        var peek = stream.peek();\n\n        if (bracesMode !== null && (state.braced || peek === \"{\")) {\n          if (state.localState === null)\n            state.localState = bracesMode.startState();\n\n          var token = bracesMode.token(stream, state.localState),\n          text = stream.current();\n\n          if (!token) {\n            for (var i = 0; i < text.length; i++) {\n              if (text[i] === \"{\") {\n                if (state.braced === 0) {\n                  token = \"matchingbracket\";\n                }\n                state.braced++;\n              } else if (text[i] === \"}\") {\n                state.braced--;\n                if (state.braced === 0) {\n                  token = \"matchingbracket\";\n                }\n              }\n            }\n          }\n          return token;\n        }\n\n        //no stack\n        switch (peek) {\n        case \"[\":\n          stream.next();\n          state.stack.unshift(stateType.characterClass);\n          return \"bracket\";\n        case \":\":\n        case \"|\":\n        case \";\":\n          stream.next();\n          return \"operator\";\n        case \"%\":\n          if (stream.match(\"%%\")) {\n            return \"header\";\n          } else if (stream.match(/[%][A-Za-z]+/)) {\n            return \"keyword\";\n          } else if (stream.match(/[%][}]/)) {\n            return \"matchingbracket\";\n          }\n          break;\n        case \"/\":\n          if (stream.match(/[\\/][A-Za-z]+/)) {\n          return \"keyword\";\n        }\n        case \"\\\\\":\n          if (stream.match(/[\\][a-z]+/)) {\n            return \"string-2\";\n          }\n        case \".\":\n          if (stream.match(\".\")) {\n            return \"atom\";\n          }\n        case \"*\":\n        case \"-\":\n        case \"+\":\n        case \"^\":\n          if (stream.match(peek)) {\n            return \"atom\";\n          }\n        case \"$\":\n          if (stream.match(\"$$\")) {\n            return \"builtin\";\n          } else if (stream.match(/[$][0-9]+/)) {\n            return \"variable-3\";\n          }\n        case \"<\":\n          if (stream.match(/<<[a-zA-Z_]+>>/)) {\n            return \"builtin\";\n          }\n        }\n\n        if (stream.match(/^\\/\\//)) {\n          stream.skipToEnd();\n          return \"comment\";\n        } else if (stream.match(/return/)) {\n          return \"operator\";\n        } else if (stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)) {\n          if (stream.match(/(?=[\\(.])/)) {\n            return \"variable\";\n          } else if (stream.match(/(?=[\\s\\n]*[:=])/)) {\n            return \"def\";\n          }\n          return \"variable-2\";\n        } else if ([\"[\", \"]\", \"(\", \")\"].indexOf(stream.peek()) != -1) {\n          stream.next();\n          return \"bracket\";\n        } else if (!stream.eatSpace()) {\n          stream.next();\n        }\n        return null;\n      }\n    };\n  });\n\n  CodeMirror.defineMIME(\"text/x-ebnf\", \"ebnf\");\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/ebnf/index.html",
    "content": "<!doctype html>\n<html>\n  <head>\n    <title>CodeMirror: EBNF Mode</title>\n    <meta charset=\"utf-8\"/>\n    <link rel=stylesheet href=\"../../doc/docs.css\">\n\n    <link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n    <script src=\"../../lib/codemirror.js\"></script>\n    <script src=\"../javascript/javascript.js\"></script>\n    <script src=\"ebnf.js\"></script>\n    <style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n  </head>\n  <body>\n    <div id=nav>\n      <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n      <ul>\n        <li><a href=\"../../index.html\">Home</a>\n        <li><a href=\"../../doc/manual.html\">Manual</a>\n        <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n      </ul>\n      <ul>\n        <li><a href=\"../index.html\">Language modes</a>\n        <li><a class=active href=\"#\">EBNF Mode</a>\n      </ul>\n    </div>\n\n    <article>\n      <h2>EBNF Mode (bracesMode setting = \"javascript\")</h2>\n      <form><textarea id=\"code\" name=\"code\">\n/* description: Parses end executes mathematical expressions. */\n\n/* lexical grammar */\n%lex\n\n%%\n\\s+                   /* skip whitespace */\n[0-9]+(\".\"[0-9]+)?\\b  return 'NUMBER';\n\"*\"                   return '*';\n\"/\"                   return '/';\n\"-\"                   return '-';\n\"+\"                   return '+';\n\"^\"                   return '^';\n\"(\"                   return '(';\n\")\"                   return ')';\n\"PI\"                  return 'PI';\n\"E\"                   return 'E';\n&lt;&lt;EOF&gt;&gt;               return 'EOF';\n\n/lex\n\n/* operator associations and precedence */\n\n%left '+' '-'\n%left '*' '/'\n%left '^'\n%left UMINUS\n\n%start expressions\n\n%% /* language grammar */\n\nexpressions\n: e EOF\n{print($1); return $1;}\n;\n\ne\n: e '+' e\n{$$ = $1+$3;}\n| e '-' e\n{$$ = $1-$3;}\n| e '*' e\n{$$ = $1*$3;}\n| e '/' e\n{$$ = $1/$3;}\n| e '^' e\n{$$ = Math.pow($1, $3);}\n| '-' e %prec UMINUS\n{$$ = -$2;}\n| '(' e ')'\n{$$ = $2;}\n| NUMBER\n{$$ = Number(yytext);}\n| E\n{$$ = Math.E;}\n| PI\n{$$ = Math.PI;}\n;</textarea></form>\n      <script>\n        var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n          mode: {name: \"ebnf\"},\n          lineNumbers: true,\n          bracesMode: 'javascript'\n        });\n      </script>\n      <h3>The EBNF Mode</h3>\n      <p> Created by <a href=\"https://github.com/robertleeplummerjr\">Robert Plummer</a></p>\n    </article>\n  </body>\n</html>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/ecl/ecl.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"ecl\", function(config) {\n\n  function words(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  function metaHook(stream, state) {\n    if (!state.startOfLine) return false;\n    stream.skipToEnd();\n    return \"meta\";\n  }\n\n  var indentUnit = config.indentUnit;\n  var keyword = words(\"abs acos allnodes ascii asin asstring atan atan2 ave case choose choosen choosesets clustersize combine correlation cos cosh count covariance cron dataset dedup define denormalize distribute distributed distribution ebcdic enth error evaluate event eventextra eventname exists exp failcode failmessage fetch fromunicode getisvalid global graph group hash hash32 hash64 hashcrc hashmd5 having if index intformat isvalid iterate join keyunicode length library limit ln local log loop map matched matchlength matchposition matchtext matchunicode max merge mergejoin min nolocal nonempty normalize parse pipe power preload process project pull random range rank ranked realformat recordof regexfind regexreplace regroup rejected rollup round roundup row rowdiff sample set sin sinh sizeof soapcall sort sorted sqrt stepped stored sum table tan tanh thisnode topn tounicode transfer trim truncate typeof ungroup unicodeorder variance which workunit xmldecode xmlencode xmltext xmlunicode\");\n  var variable = words(\"apply assert build buildindex evaluate fail keydiff keypatch loadxml nothor notify output parallel sequential soapcall wait\");\n  var variable_2 = words(\"__compressed__ all and any as atmost before beginc++ best between case const counter csv descend encrypt end endc++ endmacro except exclusive expire export extend false few first flat from full function group header heading hole ifblock import in interface joined keep keyed last left limit load local locale lookup macro many maxcount maxlength min skew module named nocase noroot noscan nosort not of only opt or outer overwrite packed partition penalty physicallength pipe quote record relationship repeat return right scan self separator service shared skew skip sql store terminator thor threshold token transform trim true type unicodeorder unsorted validate virtual whole wild within xml xpath\");\n  var variable_3 = words(\"ascii big_endian boolean data decimal ebcdic integer pattern qstring real record rule set of string token udecimal unicode unsigned varstring varunicode\");\n  var builtin = words(\"checkpoint deprecated failcode failmessage failure global independent onwarning persist priority recovery stored success wait when\");\n  var blockKeywords = words(\"catch class do else finally for if switch try while\");\n  var atoms = words(\"true false null\");\n  var hooks = {\"#\": metaHook};\n  var multiLineStrings;\n  var isOperatorChar = /[+\\-*&%=<>!?|\\/]/;\n\n  var curPunc;\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    if (hooks[ch]) {\n      var result = hooks[ch](stream, state);\n      if (result !== false) return result;\n    }\n    if (ch == '\"' || ch == \"'\") {\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    }\n    if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n      curPunc = ch;\n      return null;\n    }\n    if (/\\d/.test(ch)) {\n      stream.eatWhile(/[\\w\\.]/);\n      return \"number\";\n    }\n    if (ch == \"/\") {\n      if (stream.eat(\"*\")) {\n        state.tokenize = tokenComment;\n        return tokenComment(stream, state);\n      }\n      if (stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n    }\n    if (isOperatorChar.test(ch)) {\n      stream.eatWhile(isOperatorChar);\n      return \"operator\";\n    }\n    stream.eatWhile(/[\\w\\$_]/);\n    var cur = stream.current().toLowerCase();\n    if (keyword.propertyIsEnumerable(cur)) {\n      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n      return \"keyword\";\n    } else if (variable.propertyIsEnumerable(cur)) {\n      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n      return \"variable\";\n    } else if (variable_2.propertyIsEnumerable(cur)) {\n      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n      return \"variable-2\";\n    } else if (variable_3.propertyIsEnumerable(cur)) {\n      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n      return \"variable-3\";\n    } else if (builtin.propertyIsEnumerable(cur)) {\n      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n      return \"builtin\";\n    } else { //Data types are of from KEYWORD##\n                var i = cur.length - 1;\n                while(i >= 0 && (!isNaN(cur[i]) || cur[i] == '_'))\n                        --i;\n\n                if (i > 0) {\n                        var cur2 = cur.substr(0, i + 1);\n                if (variable_3.propertyIsEnumerable(cur2)) {\n                        if (blockKeywords.propertyIsEnumerable(cur2)) curPunc = \"newstatement\";\n                        return \"variable-3\";\n                }\n            }\n    }\n    if (atoms.propertyIsEnumerable(cur)) return \"atom\";\n    return null;\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, next, end = false;\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) {end = true; break;}\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (end || !(escaped || multiLineStrings))\n        state.tokenize = tokenBase;\n      return \"string\";\n    };\n  }\n\n  function tokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return \"comment\";\n  }\n\n  function Context(indented, column, type, align, prev) {\n    this.indented = indented;\n    this.column = column;\n    this.type = type;\n    this.align = align;\n    this.prev = prev;\n  }\n  function pushContext(state, col, type) {\n    return state.context = new Context(state.indented, col, type, null, state.context);\n  }\n  function popContext(state) {\n    var t = state.context.type;\n    if (t == \")\" || t == \"]\" || t == \"}\")\n      state.indented = state.context.indented;\n    return state.context = state.context.prev;\n  }\n\n  // Interface\n\n  return {\n    startState: function(basecolumn) {\n      return {\n        tokenize: null,\n        context: new Context((basecolumn || 0) - indentUnit, 0, \"top\", false),\n        indented: 0,\n        startOfLine: true\n      };\n    },\n\n    token: function(stream, state) {\n      var ctx = state.context;\n      if (stream.sol()) {\n        if (ctx.align == null) ctx.align = false;\n        state.indented = stream.indentation();\n        state.startOfLine = true;\n      }\n      if (stream.eatSpace()) return null;\n      curPunc = null;\n      var style = (state.tokenize || tokenBase)(stream, state);\n      if (style == \"comment\" || style == \"meta\") return style;\n      if (ctx.align == null) ctx.align = true;\n\n      if ((curPunc == \";\" || curPunc == \":\") && ctx.type == \"statement\") popContext(state);\n      else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n      else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n      else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n      else if (curPunc == \"}\") {\n        while (ctx.type == \"statement\") ctx = popContext(state);\n        if (ctx.type == \"}\") ctx = popContext(state);\n        while (ctx.type == \"statement\") ctx = popContext(state);\n      }\n      else if (curPunc == ctx.type) popContext(state);\n      else if (ctx.type == \"}\" || ctx.type == \"top\" || (ctx.type == \"statement\" && curPunc == \"newstatement\"))\n        pushContext(state, stream.column(), \"statement\");\n      state.startOfLine = false;\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize != tokenBase && state.tokenize != null) return 0;\n      var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);\n      if (ctx.type == \"statement\" && firstChar == \"}\") ctx = ctx.prev;\n      var closing = firstChar == ctx.type;\n      if (ctx.type == \"statement\") return ctx.indented + (firstChar == \"{\" ? 0 : indentUnit);\n      else if (ctx.align) return ctx.column + (closing ? 0 : 1);\n      else return ctx.indented + (closing ? 0 : indentUnit);\n    },\n\n    electricChars: \"{}\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-ecl\", \"ecl\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/ecl/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: ECL mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"ecl.js\"></script>\n<style>.CodeMirror {border: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">ECL</a>\n  </ul>\n</div>\n\n<article>\n<h2>ECL mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n/*\nsample useless code to demonstrate ecl syntax highlighting\nthis is a multiline comment!\n*/\n\n//  this is a singleline comment!\n\nimport ut;\nr := \n  record\n   string22 s1 := '123';\n   integer4 i1 := 123;\n  end;\n#option('tmp', true);\nd := dataset('tmp::qb', r, thor);\noutput(d);\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {});\n    </script>\n\n    <p>Based on CodeMirror's clike mode.  For more information see <a href=\"http://hpccsystems.com\">HPCC Systems</a> web site.</p>\n    <p><strong>MIME types defined:</strong> <code>text/x-ecl</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/eiffel/eiffel.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"eiffel\", function() {\n  function wordObj(words) {\n    var o = {};\n    for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true;\n    return o;\n  }\n  var keywords = wordObj([\n    'note',\n    'across',\n    'when',\n    'variant',\n    'until',\n    'unique',\n    'undefine',\n    'then',\n    'strip',\n    'select',\n    'retry',\n    'rescue',\n    'require',\n    'rename',\n    'reference',\n    'redefine',\n    'prefix',\n    'once',\n    'old',\n    'obsolete',\n    'loop',\n    'local',\n    'like',\n    'is',\n    'inspect',\n    'infix',\n    'include',\n    'if',\n    'frozen',\n    'from',\n    'external',\n    'export',\n    'ensure',\n    'end',\n    'elseif',\n    'else',\n    'do',\n    'creation',\n    'create',\n    'check',\n    'alias',\n    'agent',\n    'separate',\n    'invariant',\n    'inherit',\n    'indexing',\n    'feature',\n    'expanded',\n    'deferred',\n    'class',\n    'Void',\n    'True',\n    'Result',\n    'Precursor',\n    'False',\n    'Current',\n    'create',\n    'attached',\n    'detachable',\n    'as',\n    'and',\n    'implies',\n    'not',\n    'or'\n  ]);\n  var operators = wordObj([\":=\", \"and then\",\"and\", \"or\",\"<<\",\">>\"]);\n  var curPunc;\n\n  function chain(newtok, stream, state) {\n    state.tokenize.push(newtok);\n    return newtok(stream, state);\n  }\n\n  function tokenBase(stream, state) {\n    curPunc = null;\n    if (stream.eatSpace()) return null;\n    var ch = stream.next();\n    if (ch == '\"'||ch == \"'\") {\n      return chain(readQuoted(ch, \"string\"), stream, state);\n    } else if (ch == \"-\"&&stream.eat(\"-\")) {\n      stream.skipToEnd();\n      return \"comment\";\n    } else if (ch == \":\"&&stream.eat(\"=\")) {\n      return \"operator\";\n    } else if (/[0-9]/.test(ch)) {\n      stream.eatWhile(/[xXbBCc0-9\\.]/);\n      stream.eat(/[\\?\\!]/);\n      return \"ident\";\n    } else if (/[a-zA-Z_0-9]/.test(ch)) {\n      stream.eatWhile(/[a-zA-Z_0-9]/);\n      stream.eat(/[\\?\\!]/);\n      return \"ident\";\n    } else if (/[=+\\-\\/*^%<>~]/.test(ch)) {\n      stream.eatWhile(/[=+\\-\\/*^%<>~]/);\n      return \"operator\";\n    } else {\n      return null;\n    }\n  }\n\n  function readQuoted(quote, style,  unescaped) {\n    return function(stream, state) {\n      var escaped = false, ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == quote && (unescaped || !escaped)) {\n          state.tokenize.pop();\n          break;\n        }\n        escaped = !escaped && ch == \"%\";\n      }\n      return style;\n    };\n  }\n\n  return {\n    startState: function() {\n      return {tokenize: [tokenBase]};\n    },\n\n    token: function(stream, state) {\n      var style = state.tokenize[state.tokenize.length-1](stream, state);\n      if (style == \"ident\") {\n        var word = stream.current();\n        style = keywords.propertyIsEnumerable(stream.current()) ? \"keyword\"\n          : operators.propertyIsEnumerable(stream.current()) ? \"operator\"\n          : /^[A-Z][A-Z_0-9]*$/g.test(word) ? \"tag\"\n          : /^0[bB][0-1]+$/g.test(word) ? \"number\"\n          : /^0[cC][0-7]+$/g.test(word) ? \"number\"\n          : /^0[xX][a-fA-F0-9]+$/g.test(word) ? \"number\"\n          : /^([0-9]+\\.[0-9]*)|([0-9]*\\.[0-9]+)$/g.test(word) ? \"number\"\n          : /^[0-9]+$/g.test(word) ? \"number\"\n          : \"variable\";\n      }\n      return style;\n    },\n    lineComment: \"--\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-eiffel\", \"eiffel\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/eiffel/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Eiffel mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../theme/neat.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"eiffel.js\"></script>\n<style>\n      .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}\n      .cm-s-default span.cm-arrow { color: red; }\n    </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Eiffel</a>\n  </ul>\n</div>\n\n<article>\n<h2>Eiffel mode</h2>\n<form><textarea id=\"code\" name=\"code\">\nnote\n    description: \"[\n        Project-wide universal properties.\n        This class is an ancestor to all developer-written classes.\n        ANY may be customized for individual projects or teams.\n        ]\"\n\n    library: \"Free implementation of ELKS library\"\n    status: \"See notice at end of class.\"\n    legal: \"See notice at end of class.\"\n    date: \"$Date: 2013-01-25 11:49:00 -0800 (Fri, 25 Jan 2013) $\"\n    revision: \"$Revision: 712 $\"\n\nclass\n    ANY\n\nfeature -- Customization\n\nfeature -- Access\n\n    generator: STRING\n            -- Name of current object's generating class\n            -- (base class of the type of which it is a direct instance)\n        external\n            \"built_in\"\n        ensure\n            generator_not_void: Result /= Void\n            generator_not_empty: not Result.is_empty\n        end\n\n    generating_type: TYPE [detachable like Current]\n            -- Type of current object\n            -- (type of which it is a direct instance)\n        do\n            Result := {detachable like Current}\n        ensure\n            generating_type_not_void: Result /= Void\n        end\n\nfeature -- Status report\n\n    conforms_to (other: ANY): BOOLEAN\n            -- Does type of current object conform to type\n            -- of `other' (as per Eiffel: The Language, chapter 13)?\n        require\n            other_not_void: other /= Void\n        external\n            \"built_in\"\n        end\n\n    same_type (other: ANY): BOOLEAN\n            -- Is type of current object identical to type of `other'?\n        require\n            other_not_void: other /= Void\n        external\n            \"built_in\"\n        ensure\n            definition: Result = (conforms_to (other) and\n                                        other.conforms_to (Current))\n        end\n\nfeature -- Comparison\n\n    is_equal (other: like Current): BOOLEAN\n            -- Is `other' attached to an object considered\n            -- equal to current object?\n        require\n            other_not_void: other /= Void\n        external\n            \"built_in\"\n        ensure\n            symmetric: Result implies other ~ Current\n            consistent: standard_is_equal (other) implies Result\n        end\n\n    frozen standard_is_equal (other: like Current): BOOLEAN\n            -- Is `other' attached to an object of the same type\n            -- as current object, and field-by-field identical to it?\n        require\n            other_not_void: other /= Void\n        external\n            \"built_in\"\n        ensure\n            same_type: Result implies same_type (other)\n            symmetric: Result implies other.standard_is_equal (Current)\n        end\n\n    frozen equal (a: detachable ANY; b: like a): BOOLEAN\n            -- Are `a' and `b' either both void or attached\n            -- to objects considered equal?\n        do\n            if a = Void then\n                Result := b = Void\n            else\n                Result := b /= Void and then\n                            a.is_equal (b)\n            end\n        ensure\n            definition: Result = (a = Void and b = Void) or else\n                        ((a /= Void and b /= Void) and then\n                        a.is_equal (b))\n        end\n\n    frozen standard_equal (a: detachable ANY; b: like a): BOOLEAN\n            -- Are `a' and `b' either both void or attached to\n            -- field-by-field identical objects of the same type?\n            -- Always uses default object comparison criterion.\n        do\n            if a = Void then\n                Result := b = Void\n            else\n                Result := b /= Void and then\n                            a.standard_is_equal (b)\n            end\n        ensure\n            definition: Result = (a = Void and b = Void) or else\n                        ((a /= Void and b /= Void) and then\n                        a.standard_is_equal (b))\n        end\n\n    frozen is_deep_equal (other: like Current): BOOLEAN\n            -- Are `Current' and `other' attached to isomorphic object structures?\n        require\n            other_not_void: other /= Void\n        external\n            \"built_in\"\n        ensure\n            shallow_implies_deep: standard_is_equal (other) implies Result\n            same_type: Result implies same_type (other)\n            symmetric: Result implies other.is_deep_equal (Current)\n        end\n\n    frozen deep_equal (a: detachable ANY; b: like a): BOOLEAN\n            -- Are `a' and `b' either both void\n            -- or attached to isomorphic object structures?\n        do\n            if a = Void then\n                Result := b = Void\n            else\n                Result := b /= Void and then a.is_deep_equal (b)\n            end\n        ensure\n            shallow_implies_deep: standard_equal (a, b) implies Result\n            both_or_none_void: (a = Void) implies (Result = (b = Void))\n            same_type: (Result and (a /= Void)) implies (b /= Void and then a.same_type (b))\n            symmetric: Result implies deep_equal (b, a)\n        end\n\nfeature -- Duplication\n\n    frozen twin: like Current\n            -- New object equal to `Current'\n            -- `twin' calls `copy'; to change copying/twinning semantics, redefine `copy'.\n        external\n            \"built_in\"\n        ensure\n            twin_not_void: Result /= Void\n            is_equal: Result ~ Current\n        end\n\n    copy (other: like Current)\n            -- Update current object using fields of object attached\n            -- to `other', so as to yield equal objects.\n        require\n            other_not_void: other /= Void\n            type_identity: same_type (other)\n        external\n            \"built_in\"\n        ensure\n            is_equal: Current ~ other\n        end\n\n    frozen standard_copy (other: like Current)\n            -- Copy every field of `other' onto corresponding field\n            -- of current object.\n        require\n            other_not_void: other /= Void\n            type_identity: same_type (other)\n        external\n            \"built_in\"\n        ensure\n            is_standard_equal: standard_is_equal (other)\n        end\n\n    frozen clone (other: detachable ANY): like other\n            -- Void if `other' is void; otherwise new object\n            -- equal to `other'\n            --\n            -- For non-void `other', `clone' calls `copy';\n            -- to change copying/cloning semantics, redefine `copy'.\n        obsolete\n            \"Use `twin' instead.\"\n        do\n            if other /= Void then\n                Result := other.twin\n            end\n        ensure\n            equal: Result ~ other\n        end\n\n    frozen standard_clone (other: detachable ANY): like other\n            -- Void if `other' is void; otherwise new object\n            -- field-by-field identical to `other'.\n            -- Always uses default copying semantics.\n        obsolete\n            \"Use `standard_twin' instead.\"\n        do\n            if other /= Void then\n                Result := other.standard_twin\n            end\n        ensure\n            equal: standard_equal (Result, other)\n        end\n\n    frozen standard_twin: like Current\n            -- New object field-by-field identical to `other'.\n            -- Always uses default copying semantics.\n        external\n            \"built_in\"\n        ensure\n            standard_twin_not_void: Result /= Void\n            equal: standard_equal (Result, Current)\n        end\n\n    frozen deep_twin: like Current\n            -- New object structure recursively duplicated from Current.\n        external\n            \"built_in\"\n        ensure\n            deep_twin_not_void: Result /= Void\n            deep_equal: deep_equal (Current, Result)\n        end\n\n    frozen deep_clone (other: detachable ANY): like other\n            -- Void if `other' is void: otherwise, new object structure\n            -- recursively duplicated from the one attached to `other'\n        obsolete\n            \"Use `deep_twin' instead.\"\n        do\n            if other /= Void then\n                Result := other.deep_twin\n            end\n        ensure\n            deep_equal: deep_equal (other, Result)\n        end\n\n    frozen deep_copy (other: like Current)\n            -- Effect equivalent to that of:\n            --      `copy' (`other' . `deep_twin')\n        require\n            other_not_void: other /= Void\n        do\n            copy (other.deep_twin)\n        ensure\n            deep_equal: deep_equal (Current, other)\n        end\n\nfeature {NONE} -- Retrieval\n\n    frozen internal_correct_mismatch\n            -- Called from runtime to perform a proper dynamic dispatch on `correct_mismatch'\n            -- from MISMATCH_CORRECTOR.\n        local\n            l_msg: STRING\n            l_exc: EXCEPTIONS\n        do\n            if attached {MISMATCH_CORRECTOR} Current as l_corrector then\n                l_corrector.correct_mismatch\n            else\n                create l_msg.make_from_string (\"Mismatch: \")\n                create l_exc\n                l_msg.append (generating_type.name)\n                l_exc.raise_retrieval_exception (l_msg)\n            end\n        end\n\nfeature -- Output\n\n    io: STD_FILES\n            -- Handle to standard file setup\n        once\n            create Result\n            Result.set_output_default\n        ensure\n            io_not_void: Result /= Void\n        end\n\n    out: STRING\n            -- New string containing terse printable representation\n            -- of current object\n        do\n            Result := tagged_out\n        ensure\n            out_not_void: Result /= Void\n        end\n\n    frozen tagged_out: STRING\n            -- New string containing terse printable representation\n            -- of current object\n        external\n            \"built_in\"\n        ensure\n            tagged_out_not_void: Result /= Void\n        end\n\n    print (o: detachable ANY)\n            -- Write terse external representation of `o'\n            -- on standard output.\n        do\n            if o /= Void then\n                io.put_string (o.out)\n            end\n        end\n\nfeature -- Platform\n\n    Operating_environment: OPERATING_ENVIRONMENT\n            -- Objects available from the operating system\n        once\n            create Result\n        ensure\n            operating_environment_not_void: Result /= Void\n        end\n\nfeature {NONE} -- Initialization\n\n    default_create\n            -- Process instances of classes with no creation clause.\n            -- (Default: do nothing.)\n        do\n        end\n\nfeature -- Basic operations\n\n    default_rescue\n            -- Process exception for routines with no Rescue clause.\n            -- (Default: do nothing.)\n        do\n        end\n\n    frozen do_nothing\n            -- Execute a null action.\n        do\n        end\n\n    frozen default: detachable like Current\n            -- Default value of object's type\n        do\n        end\n\n    frozen default_pointer: POINTER\n            -- Default value of type `POINTER'\n            -- (Avoid the need to write `p'.`default' for\n            -- some `p' of type `POINTER'.)\n        do\n        ensure\n            -- Result = Result.default\n        end\n\n    frozen as_attached: attached like Current\n            -- Attached version of Current\n            -- (Can be used during transitional period to convert\n            -- non-void-safe classes to void-safe ones.)\n        do\n            Result := Current\n        end\n\ninvariant\n    reflexive_equality: standard_is_equal (Current)\n    reflexive_conformance: conforms_to (Current)\n\nnote\n    copyright: \"Copyright (c) 1984-2012, Eiffel Software and others\"\n    license:   \"Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)\"\n    source: \"[\n            Eiffel Software\n            5949 Hollister Ave., Goleta, CA 93117 USA\n            Telephone 805-685-1006, Fax 805-685-6869\n            Website http://www.eiffel.com\n            Customer support http://support.eiffel.com\n        ]\"\n\nend\n\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: \"text/x-eiffel\",\n        indentUnit: 4,\n        lineNumbers: true,\n        theme: \"neat\"\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-eiffel</code>.</p>\n \n <p> Created by <a href=\"https://github.com/ynh\">YNH</a>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/erlang/erlang.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/*jshint unused:true, eqnull:true, curly:true, bitwise:true */\n/*jshint undef:true, latedef:true, trailing:true */\n/*global CodeMirror:true */\n\n// erlang mode.\n// tokenizer -> token types -> CodeMirror styles\n// tokenizer maintains a parse stack\n// indenter uses the parse stack\n\n// TODO indenter:\n//   bit syntax\n//   old guard/bif/conversion clashes (e.g. \"float/1\")\n//   type/spec/opaque\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMIME(\"text/x-erlang\", \"erlang\");\n\nCodeMirror.defineMode(\"erlang\", function(cmCfg) {\n  \"use strict\";\n\n/////////////////////////////////////////////////////////////////////////////\n// constants\n\n  var typeWords = [\n    \"-type\", \"-spec\", \"-export_type\", \"-opaque\"];\n\n  var keywordWords = [\n    \"after\",\"begin\",\"catch\",\"case\",\"cond\",\"end\",\"fun\",\"if\",\n    \"let\",\"of\",\"query\",\"receive\",\"try\",\"when\"];\n\n  var separatorRE    = /[\\->,;]/;\n  var separatorWords = [\n    \"->\",\";\",\",\"];\n\n  var operatorAtomWords = [\n    \"and\",\"andalso\",\"band\",\"bnot\",\"bor\",\"bsl\",\"bsr\",\"bxor\",\n    \"div\",\"not\",\"or\",\"orelse\",\"rem\",\"xor\"];\n\n  var operatorSymbolRE    = /[\\+\\-\\*\\/<>=\\|:!]/;\n  var operatorSymbolWords = [\n    \"=\",\"+\",\"-\",\"*\",\"/\",\">\",\">=\",\"<\",\"=<\",\"=:=\",\"==\",\"=/=\",\"/=\",\"||\",\"<-\",\"!\"];\n\n  var openParenRE    = /[<\\(\\[\\{]/;\n  var openParenWords = [\n    \"<<\",\"(\",\"[\",\"{\"];\n\n  var closeParenRE    = /[>\\)\\]\\}]/;\n  var closeParenWords = [\n    \"}\",\"]\",\")\",\">>\"];\n\n  var guardWords = [\n    \"is_atom\",\"is_binary\",\"is_bitstring\",\"is_boolean\",\"is_float\",\n    \"is_function\",\"is_integer\",\"is_list\",\"is_number\",\"is_pid\",\n    \"is_port\",\"is_record\",\"is_reference\",\"is_tuple\",\n    \"atom\",\"binary\",\"bitstring\",\"boolean\",\"function\",\"integer\",\"list\",\n    \"number\",\"pid\",\"port\",\"record\",\"reference\",\"tuple\"];\n\n  var bifWords = [\n    \"abs\",\"adler32\",\"adler32_combine\",\"alive\",\"apply\",\"atom_to_binary\",\n    \"atom_to_list\",\"binary_to_atom\",\"binary_to_existing_atom\",\n    \"binary_to_list\",\"binary_to_term\",\"bit_size\",\"bitstring_to_list\",\n    \"byte_size\",\"check_process_code\",\"contact_binary\",\"crc32\",\n    \"crc32_combine\",\"date\",\"decode_packet\",\"delete_module\",\n    \"disconnect_node\",\"element\",\"erase\",\"exit\",\"float\",\"float_to_list\",\n    \"garbage_collect\",\"get\",\"get_keys\",\"group_leader\",\"halt\",\"hd\",\n    \"integer_to_list\",\"internal_bif\",\"iolist_size\",\"iolist_to_binary\",\n    \"is_alive\",\"is_atom\",\"is_binary\",\"is_bitstring\",\"is_boolean\",\n    \"is_float\",\"is_function\",\"is_integer\",\"is_list\",\"is_number\",\"is_pid\",\n    \"is_port\",\"is_process_alive\",\"is_record\",\"is_reference\",\"is_tuple\",\n    \"length\",\"link\",\"list_to_atom\",\"list_to_binary\",\"list_to_bitstring\",\n    \"list_to_existing_atom\",\"list_to_float\",\"list_to_integer\",\n    \"list_to_pid\",\"list_to_tuple\",\"load_module\",\"make_ref\",\"module_loaded\",\n    \"monitor_node\",\"node\",\"node_link\",\"node_unlink\",\"nodes\",\"notalive\",\n    \"now\",\"open_port\",\"pid_to_list\",\"port_close\",\"port_command\",\n    \"port_connect\",\"port_control\",\"pre_loaded\",\"process_flag\",\n    \"process_info\",\"processes\",\"purge_module\",\"put\",\"register\",\n    \"registered\",\"round\",\"self\",\"setelement\",\"size\",\"spawn\",\"spawn_link\",\n    \"spawn_monitor\",\"spawn_opt\",\"split_binary\",\"statistics\",\n    \"term_to_binary\",\"time\",\"throw\",\"tl\",\"trunc\",\"tuple_size\",\n    \"tuple_to_list\",\"unlink\",\"unregister\",\"whereis\"];\n\n// upper case: [A-Z] [Ø-Þ] [À-Ö]\n// lower case: [a-z] [ß-ö] [ø-ÿ]\n  var anumRE       = /[\\w@Ø-ÞÀ-Öß-öø-ÿ]/;\n  var escapesRE    =\n    /[0-7]{1,3}|[bdefnrstv\\\\\"']|\\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/;\n\n/////////////////////////////////////////////////////////////////////////////\n// tokenizer\n\n  function tokenizer(stream,state) {\n    // in multi-line string\n    if (state.in_string) {\n      state.in_string = (!doubleQuote(stream));\n      return rval(state,stream,\"string\");\n    }\n\n    // in multi-line atom\n    if (state.in_atom) {\n      state.in_atom = (!singleQuote(stream));\n      return rval(state,stream,\"atom\");\n    }\n\n    // whitespace\n    if (stream.eatSpace()) {\n      return rval(state,stream,\"whitespace\");\n    }\n\n    // attributes and type specs\n    if (!peekToken(state) &&\n        stream.match(/-\\s*[a-zß-öø-ÿ][\\wØ-ÞÀ-Öß-öø-ÿ]*/)) {\n      if (is_member(stream.current(),typeWords)) {\n        return rval(state,stream,\"type\");\n      }else{\n        return rval(state,stream,\"attribute\");\n      }\n    }\n\n    var ch = stream.next();\n\n    // comment\n    if (ch == '%') {\n      stream.skipToEnd();\n      return rval(state,stream,\"comment\");\n    }\n\n    // colon\n    if (ch == \":\") {\n      return rval(state,stream,\"colon\");\n    }\n\n    // macro\n    if (ch == '?') {\n      stream.eatSpace();\n      stream.eatWhile(anumRE);\n      return rval(state,stream,\"macro\");\n    }\n\n    // record\n    if (ch == \"#\") {\n      stream.eatSpace();\n      stream.eatWhile(anumRE);\n      return rval(state,stream,\"record\");\n    }\n\n    // dollar escape\n    if (ch == \"$\") {\n      if (stream.next() == \"\\\\\" && !stream.match(escapesRE)) {\n        return rval(state,stream,\"error\");\n      }\n      return rval(state,stream,\"number\");\n    }\n\n    // dot\n    if (ch == \".\") {\n      return rval(state,stream,\"dot\");\n    }\n\n    // quoted atom\n    if (ch == '\\'') {\n      if (!(state.in_atom = (!singleQuote(stream)))) {\n        if (stream.match(/\\s*\\/\\s*[0-9]/,false)) {\n          stream.match(/\\s*\\/\\s*[0-9]/,true);\n          return rval(state,stream,\"fun\");      // 'f'/0 style fun\n        }\n        if (stream.match(/\\s*\\(/,false) || stream.match(/\\s*:/,false)) {\n          return rval(state,stream,\"function\");\n        }\n      }\n      return rval(state,stream,\"atom\");\n    }\n\n    // string\n    if (ch == '\"') {\n      state.in_string = (!doubleQuote(stream));\n      return rval(state,stream,\"string\");\n    }\n\n    // variable\n    if (/[A-Z_Ø-ÞÀ-Ö]/.test(ch)) {\n      stream.eatWhile(anumRE);\n      return rval(state,stream,\"variable\");\n    }\n\n    // atom/keyword/BIF/function\n    if (/[a-z_ß-öø-ÿ]/.test(ch)) {\n      stream.eatWhile(anumRE);\n\n      if (stream.match(/\\s*\\/\\s*[0-9]/,false)) {\n        stream.match(/\\s*\\/\\s*[0-9]/,true);\n        return rval(state,stream,\"fun\");      // f/0 style fun\n      }\n\n      var w = stream.current();\n\n      if (is_member(w,keywordWords)) {\n        return rval(state,stream,\"keyword\");\n      }else if (is_member(w,operatorAtomWords)) {\n        return rval(state,stream,\"operator\");\n      }else if (stream.match(/\\s*\\(/,false)) {\n        // 'put' and 'erlang:put' are bifs, 'foo:put' is not\n        if (is_member(w,bifWords) &&\n            ((peekToken(state).token != \":\") ||\n             (peekToken(state,2).token == \"erlang\"))) {\n          return rval(state,stream,\"builtin\");\n        }else if (is_member(w,guardWords)) {\n          return rval(state,stream,\"guard\");\n        }else{\n          return rval(state,stream,\"function\");\n        }\n      }else if (is_member(w,operatorAtomWords)) {\n        return rval(state,stream,\"operator\");\n      }else if (lookahead(stream) == \":\") {\n        if (w == \"erlang\") {\n          return rval(state,stream,\"builtin\");\n        } else {\n          return rval(state,stream,\"function\");\n        }\n      }else if (is_member(w,[\"true\",\"false\"])) {\n        return rval(state,stream,\"boolean\");\n      }else if (is_member(w,[\"true\",\"false\"])) {\n        return rval(state,stream,\"boolean\");\n      }else{\n        return rval(state,stream,\"atom\");\n      }\n    }\n\n    // number\n    var digitRE      = /[0-9]/;\n    var radixRE      = /[0-9a-zA-Z]/;         // 36#zZ style int\n    if (digitRE.test(ch)) {\n      stream.eatWhile(digitRE);\n      if (stream.eat('#')) {                // 36#aZ  style integer\n        if (!stream.eatWhile(radixRE)) {\n          stream.backUp(1);                 //\"36#\" - syntax error\n        }\n      } else if (stream.eat('.')) {       // float\n        if (!stream.eatWhile(digitRE)) {\n          stream.backUp(1);        // \"3.\" - probably end of function\n        } else {\n          if (stream.eat(/[eE]/)) {        // float with exponent\n            if (stream.eat(/[-+]/)) {\n              if (!stream.eatWhile(digitRE)) {\n                stream.backUp(2);            // \"2e-\" - syntax error\n              }\n            } else {\n              if (!stream.eatWhile(digitRE)) {\n                stream.backUp(1);            // \"2e\" - syntax error\n              }\n            }\n          }\n        }\n      }\n      return rval(state,stream,\"number\");   // normal integer\n    }\n\n    // open parens\n    if (nongreedy(stream,openParenRE,openParenWords)) {\n      return rval(state,stream,\"open_paren\");\n    }\n\n    // close parens\n    if (nongreedy(stream,closeParenRE,closeParenWords)) {\n      return rval(state,stream,\"close_paren\");\n    }\n\n    // separators\n    if (greedy(stream,separatorRE,separatorWords)) {\n      return rval(state,stream,\"separator\");\n    }\n\n    // operators\n    if (greedy(stream,operatorSymbolRE,operatorSymbolWords)) {\n      return rval(state,stream,\"operator\");\n    }\n\n    return rval(state,stream,null);\n  }\n\n/////////////////////////////////////////////////////////////////////////////\n// utilities\n  function nongreedy(stream,re,words) {\n    if (stream.current().length == 1 && re.test(stream.current())) {\n      stream.backUp(1);\n      while (re.test(stream.peek())) {\n        stream.next();\n        if (is_member(stream.current(),words)) {\n          return true;\n        }\n      }\n      stream.backUp(stream.current().length-1);\n    }\n    return false;\n  }\n\n  function greedy(stream,re,words) {\n    if (stream.current().length == 1 && re.test(stream.current())) {\n      while (re.test(stream.peek())) {\n        stream.next();\n      }\n      while (0 < stream.current().length) {\n        if (is_member(stream.current(),words)) {\n          return true;\n        }else{\n          stream.backUp(1);\n        }\n      }\n      stream.next();\n    }\n    return false;\n  }\n\n  function doubleQuote(stream) {\n    return quote(stream, '\"', '\\\\');\n  }\n\n  function singleQuote(stream) {\n    return quote(stream,'\\'','\\\\');\n  }\n\n  function quote(stream,quoteChar,escapeChar) {\n    while (!stream.eol()) {\n      var ch = stream.next();\n      if (ch == quoteChar) {\n        return true;\n      }else if (ch == escapeChar) {\n        stream.next();\n      }\n    }\n    return false;\n  }\n\n  function lookahead(stream) {\n    var m = stream.match(/([\\n\\s]+|%[^\\n]*\\n)*(.)/,false);\n    return m ? m.pop() : \"\";\n  }\n\n  function is_member(element,list) {\n    return (-1 < list.indexOf(element));\n  }\n\n  function rval(state,stream,type) {\n\n    // parse stack\n    pushToken(state,realToken(type,stream));\n\n    // map erlang token type to CodeMirror style class\n    //     erlang             -> CodeMirror tag\n    switch (type) {\n      case \"atom\":        return \"atom\";\n      case \"attribute\":   return \"attribute\";\n      case \"boolean\":     return \"atom\";\n      case \"builtin\":     return \"builtin\";\n      case \"close_paren\": return null;\n      case \"colon\":       return null;\n      case \"comment\":     return \"comment\";\n      case \"dot\":         return null;\n      case \"error\":       return \"error\";\n      case \"fun\":         return \"meta\";\n      case \"function\":    return \"tag\";\n      case \"guard\":       return \"property\";\n      case \"keyword\":     return \"keyword\";\n      case \"macro\":       return \"variable-2\";\n      case \"number\":      return \"number\";\n      case \"open_paren\":  return null;\n      case \"operator\":    return \"operator\";\n      case \"record\":      return \"bracket\";\n      case \"separator\":   return null;\n      case \"string\":      return \"string\";\n      case \"type\":        return \"def\";\n      case \"variable\":    return \"variable\";\n      default:            return null;\n    }\n  }\n\n  function aToken(tok,col,ind,typ) {\n    return {token:  tok,\n            column: col,\n            indent: ind,\n            type:   typ};\n  }\n\n  function realToken(type,stream) {\n    return aToken(stream.current(),\n                 stream.column(),\n                 stream.indentation(),\n                 type);\n  }\n\n  function fakeToken(type) {\n    return aToken(type,0,0,type);\n  }\n\n  function peekToken(state,depth) {\n    var len = state.tokenStack.length;\n    var dep = (depth ? depth : 1);\n\n    if (len < dep) {\n      return false;\n    }else{\n      return state.tokenStack[len-dep];\n    }\n  }\n\n  function pushToken(state,token) {\n\n    if (!(token.type == \"comment\" || token.type == \"whitespace\")) {\n      state.tokenStack = maybe_drop_pre(state.tokenStack,token);\n      state.tokenStack = maybe_drop_post(state.tokenStack);\n    }\n  }\n\n  function maybe_drop_pre(s,token) {\n    var last = s.length-1;\n\n    if (0 < last && s[last].type === \"record\" && token.type === \"dot\") {\n      s.pop();\n    }else if (0 < last && s[last].type === \"group\") {\n      s.pop();\n      s.push(token);\n    }else{\n      s.push(token);\n    }\n    return s;\n  }\n\n  function maybe_drop_post(s) {\n    var last = s.length-1;\n\n    if (s[last].type === \"dot\") {\n      return [];\n    }\n    if (s[last].type === \"fun\" && s[last-1].token === \"fun\") {\n      return s.slice(0,last-1);\n    }\n    switch (s[s.length-1].token) {\n      case \"}\":    return d(s,{g:[\"{\"]});\n      case \"]\":    return d(s,{i:[\"[\"]});\n      case \")\":    return d(s,{i:[\"(\"]});\n      case \">>\":   return d(s,{i:[\"<<\"]});\n      case \"end\":  return d(s,{i:[\"begin\",\"case\",\"fun\",\"if\",\"receive\",\"try\"]});\n      case \",\":    return d(s,{e:[\"begin\",\"try\",\"when\",\"->\",\n                                  \",\",\"(\",\"[\",\"{\",\"<<\"]});\n      case \"->\":   return d(s,{r:[\"when\"],\n                               m:[\"try\",\"if\",\"case\",\"receive\"]});\n      case \";\":    return d(s,{E:[\"case\",\"fun\",\"if\",\"receive\",\"try\",\"when\"]});\n      case \"catch\":return d(s,{e:[\"try\"]});\n      case \"of\":   return d(s,{e:[\"case\"]});\n      case \"after\":return d(s,{e:[\"receive\",\"try\"]});\n      default:     return s;\n    }\n  }\n\n  function d(stack,tt) {\n    // stack is a stack of Token objects.\n    // tt is an object; {type:tokens}\n    // type is a char, tokens is a list of token strings.\n    // The function returns (possibly truncated) stack.\n    // It will descend the stack, looking for a Token such that Token.token\n    //  is a member of tokens. If it does not find that, it will normally (but\n    //  see \"E\" below) return stack. If it does find a match, it will remove\n    //  all the Tokens between the top and the matched Token.\n    // If type is \"m\", that is all it does.\n    // If type is \"i\", it will also remove the matched Token and the top Token.\n    // If type is \"g\", like \"i\", but add a fake \"group\" token at the top.\n    // If type is \"r\", it will remove the matched Token, but not the top Token.\n    // If type is \"e\", it will keep the matched Token but not the top Token.\n    // If type is \"E\", it behaves as for type \"e\", except if there is no match,\n    //  in which case it will return an empty stack.\n\n    for (var type in tt) {\n      var len = stack.length-1;\n      var tokens = tt[type];\n      for (var i = len-1; -1 < i ; i--) {\n        if (is_member(stack[i].token,tokens)) {\n          var ss = stack.slice(0,i);\n          switch (type) {\n              case \"m\": return ss.concat(stack[i]).concat(stack[len]);\n              case \"r\": return ss.concat(stack[len]);\n              case \"i\": return ss;\n              case \"g\": return ss.concat(fakeToken(\"group\"));\n              case \"E\": return ss.concat(stack[i]);\n              case \"e\": return ss.concat(stack[i]);\n          }\n        }\n      }\n    }\n    return (type == \"E\" ? [] : stack);\n  }\n\n/////////////////////////////////////////////////////////////////////////////\n// indenter\n\n  function indenter(state,textAfter) {\n    var t;\n    var unit = cmCfg.indentUnit;\n    var wordAfter = wordafter(textAfter);\n    var currT = peekToken(state,1);\n    var prevT = peekToken(state,2);\n\n    if (state.in_string || state.in_atom) {\n      return CodeMirror.Pass;\n    }else if (!prevT) {\n      return 0;\n    }else if (currT.token == \"when\") {\n      return currT.column+unit;\n    }else if (wordAfter === \"when\" && prevT.type === \"function\") {\n      return prevT.indent+unit;\n    }else if (wordAfter === \"(\" && currT.token === \"fun\") {\n      return  currT.column+3;\n    }else if (wordAfter === \"catch\" && (t = getToken(state,[\"try\"]))) {\n      return t.column;\n    }else if (is_member(wordAfter,[\"end\",\"after\",\"of\"])) {\n      t = getToken(state,[\"begin\",\"case\",\"fun\",\"if\",\"receive\",\"try\"]);\n      return t ? t.column : CodeMirror.Pass;\n    }else if (is_member(wordAfter,closeParenWords)) {\n      t = getToken(state,openParenWords);\n      return t ? t.column : CodeMirror.Pass;\n    }else if (is_member(currT.token,[\",\",\"|\",\"||\"]) ||\n              is_member(wordAfter,[\",\",\"|\",\"||\"])) {\n      t = postcommaToken(state);\n      return t ? t.column+t.token.length : unit;\n    }else if (currT.token == \"->\") {\n      if (is_member(prevT.token, [\"receive\",\"case\",\"if\",\"try\"])) {\n        return prevT.column+unit+unit;\n      }else{\n        return prevT.column+unit;\n      }\n    }else if (is_member(currT.token,openParenWords)) {\n      return currT.column+currT.token.length;\n    }else{\n      t = defaultToken(state);\n      return truthy(t) ? t.column+unit : 0;\n    }\n  }\n\n  function wordafter(str) {\n    var m = str.match(/,|[a-z]+|\\}|\\]|\\)|>>|\\|+|\\(/);\n\n    return truthy(m) && (m.index === 0) ? m[0] : \"\";\n  }\n\n  function postcommaToken(state) {\n    var objs = state.tokenStack.slice(0,-1);\n    var i = getTokenIndex(objs,\"type\",[\"open_paren\"]);\n\n    return truthy(objs[i]) ? objs[i] : false;\n  }\n\n  function defaultToken(state) {\n    var objs = state.tokenStack;\n    var stop = getTokenIndex(objs,\"type\",[\"open_paren\",\"separator\",\"keyword\"]);\n    var oper = getTokenIndex(objs,\"type\",[\"operator\"]);\n\n    if (truthy(stop) && truthy(oper) && stop < oper) {\n      return objs[stop+1];\n    } else if (truthy(stop)) {\n      return objs[stop];\n    } else {\n      return false;\n    }\n  }\n\n  function getToken(state,tokens) {\n    var objs = state.tokenStack;\n    var i = getTokenIndex(objs,\"token\",tokens);\n\n    return truthy(objs[i]) ? objs[i] : false;\n  }\n\n  function getTokenIndex(objs,propname,propvals) {\n\n    for (var i = objs.length-1; -1 < i ; i--) {\n      if (is_member(objs[i][propname],propvals)) {\n        return i;\n      }\n    }\n    return false;\n  }\n\n  function truthy(x) {\n    return (x !== false) && (x != null);\n  }\n\n/////////////////////////////////////////////////////////////////////////////\n// this object defines the mode\n\n  return {\n    startState:\n      function() {\n        return {tokenStack: [],\n                in_string:  false,\n                in_atom:    false};\n      },\n\n    token:\n      function(stream, state) {\n        return tokenizer(stream, state);\n      },\n\n    indent:\n      function(state, textAfter) {\n        return indenter(state,textAfter);\n      },\n\n    lineComment: \"%\"\n  };\n});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/erlang/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Erlang mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../theme/erlang-dark.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"erlang.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Erlang</a>\n  </ul>\n</div>\n\n<article>\n<h2>Erlang mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n%% -*- mode: erlang; erlang-indent-level: 2 -*-\n%%% Created :  7 May 2012 by mats cronqvist <masse@klarna.com>\n\n%% @doc\n%% Demonstrates how to print a record.\n%% @end\n\n-module('ex').\n-author('mats cronqvist').\n-export([demo/0,\n         rec_info/1]).\n\n-record(demo,{a=\"One\",b=\"Two\",c=\"Three\",d=\"Four\"}).\n\nrec_info(demo) -> record_info(fields,demo).\n\ndemo() -> expand_recs(?MODULE,#demo{a=\"A\",b=\"BB\"}).\n\nexpand_recs(M,List) when is_list(List) ->\n  [expand_recs(M,L)||L<-List];\nexpand_recs(M,Tup) when is_tuple(Tup) ->\n  case tuple_size(Tup) of\n    L when L < 1 -> Tup;\n    L ->\n      try\n        Fields = M:rec_info(element(1,Tup)),\n        L = length(Fields)+1,\n        lists:zip(Fields,expand_recs(M,tl(tuple_to_list(Tup))))\n      catch\n        _:_ -> list_to_tuple(expand_recs(M,tuple_to_list(Tup)))\n      end\n  end;\nexpand_recs(_,Term) ->\n  Term.\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        extraKeys: {\"Tab\":  \"indentAuto\"},\n        theme: \"erlang-dark\"\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-erlang</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/forth/forth.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Author: Aliaksei Chapyzhenka\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function toWordList(words) {\n    var ret = [];\n    words.split(' ').forEach(function(e){\n      ret.push({name: e});\n    });\n    return ret;\n  }\n\n  var coreWordList = toWordList(\n'INVERT AND OR XOR\\\n 2* 2/ LSHIFT RSHIFT\\\n 0= = 0< < > U< MIN MAX\\\n 2DROP 2DUP 2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP\\\n >R R> R@\\\n + - 1+ 1- ABS NEGATE\\\n S>D * M* UM*\\\n FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD\\\n HERE , @ ! CELL+ CELLS C, C@ C! CHARS 2@ 2!\\\n ALIGN ALIGNED +! ALLOT\\\n CHAR [CHAR] [ ] BL\\\n FIND EXECUTE IMMEDIATE COUNT LITERAL STATE\\\n ; DOES> >BODY\\\n EVALUATE\\\n SOURCE >IN\\\n <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL\\\n FILL MOVE\\\n . CR EMIT SPACE SPACES TYPE U. .R U.R\\\n ACCEPT\\\n TRUE FALSE\\\n <> U> 0<> 0>\\\n NIP TUCK ROLL PICK\\\n 2>R 2R@ 2R>\\\n WITHIN UNUSED MARKER\\\n I J\\\n TO\\\n COMPILE, [COMPILE]\\\n SAVE-INPUT RESTORE-INPUT\\\n PAD ERASE\\\n 2LITERAL DNEGATE\\\n D- D+ D0< D0= D2* D2/ D< D= DMAX DMIN D>S DABS\\\n M+ M*/ D. D.R 2ROT DU<\\\n CATCH THROW\\\n FREE RESIZE ALLOCATE\\\n CS-PICK CS-ROLL\\\n GET-CURRENT SET-CURRENT FORTH-WORDLIST GET-ORDER SET-ORDER\\\n PREVIOUS SEARCH-WORDLIST WORDLIST FIND ALSO ONLY FORTH DEFINITIONS ORDER\\\n -TRAILING /STRING SEARCH COMPARE CMOVE CMOVE> BLANK SLITERAL');\n\n  var immediateWordList = toWordList('IF ELSE THEN BEGIN WHILE REPEAT UNTIL RECURSE [IF] [ELSE] [THEN] ?DO DO LOOP +LOOP UNLOOP LEAVE EXIT AGAIN CASE OF ENDOF ENDCASE');\n\n  CodeMirror.defineMode('forth', function() {\n    function searchWordList (wordList, word) {\n      var i;\n      for (i = wordList.length - 1; i >= 0; i--) {\n        if (wordList[i].name === word.toUpperCase()) {\n          return wordList[i];\n        }\n      }\n      return undefined;\n    }\n  return {\n    startState: function() {\n      return {\n        state: '',\n        base: 10,\n        coreWordList: coreWordList,\n        immediateWordList: immediateWordList,\n        wordList: []\n      };\n    },\n    token: function (stream, stt) {\n      var mat;\n      if (stream.eatSpace()) {\n        return null;\n      }\n      if (stt.state === '') { // interpretation\n        if (stream.match(/^(\\]|:NONAME)(\\s|$)/i)) {\n          stt.state = ' compilation';\n          return 'builtin compilation';\n        }\n        mat = stream.match(/^(\\:)\\s+(\\S+)(\\s|$)+/);\n        if (mat) {\n          stt.wordList.push({name: mat[2].toUpperCase()});\n          stt.state = ' compilation';\n          return 'def' + stt.state;\n        }\n        mat = stream.match(/^(VARIABLE|2VARIABLE|CONSTANT|2CONSTANT|CREATE|POSTPONE|VALUE|WORD)\\s+(\\S+)(\\s|$)+/i);\n        if (mat) {\n          stt.wordList.push({name: mat[2].toUpperCase()});\n          return 'def' + stt.state;\n        }\n        mat = stream.match(/^(\\'|\\[\\'\\])\\s+(\\S+)(\\s|$)+/);\n        if (mat) {\n          return 'builtin' + stt.state;\n        }\n        } else { // compilation\n        // ; [\n        if (stream.match(/^(\\;|\\[)(\\s)/)) {\n          stt.state = '';\n          stream.backUp(1);\n          return 'builtin compilation';\n        }\n        if (stream.match(/^(\\;|\\[)($)/)) {\n          stt.state = '';\n          return 'builtin compilation';\n        }\n        if (stream.match(/^(POSTPONE)\\s+\\S+(\\s|$)+/)) {\n          return 'builtin';\n        }\n      }\n\n      // dynamic wordlist\n      mat = stream.match(/^(\\S+)(\\s+|$)/);\n      if (mat) {\n        if (searchWordList(stt.wordList, mat[1]) !== undefined) {\n          return 'variable' + stt.state;\n        }\n\n        // comments\n        if (mat[1] === '\\\\') {\n          stream.skipToEnd();\n            return 'comment' + stt.state;\n          }\n\n          // core words\n          if (searchWordList(stt.coreWordList, mat[1]) !== undefined) {\n            return 'builtin' + stt.state;\n          }\n          if (searchWordList(stt.immediateWordList, mat[1]) !== undefined) {\n            return 'keyword' + stt.state;\n          }\n\n          if (mat[1] === '(') {\n            stream.eatWhile(function (s) { return s !== ')'; });\n            stream.eat(')');\n            return 'comment' + stt.state;\n          }\n\n          // // strings\n          if (mat[1] === '.(') {\n            stream.eatWhile(function (s) { return s !== ')'; });\n            stream.eat(')');\n            return 'string' + stt.state;\n          }\n          if (mat[1] === 'S\"' || mat[1] === '.\"' || mat[1] === 'C\"') {\n            stream.eatWhile(function (s) { return s !== '\"'; });\n            stream.eat('\"');\n            return 'string' + stt.state;\n          }\n\n          // numbers\n          if (mat[1] - 0xfffffffff) {\n            return 'number' + stt.state;\n          }\n          // if (mat[1].match(/^[-+]?[0-9]+\\.[0-9]*/)) {\n          //     return 'number' + stt.state;\n          // }\n\n          return 'atom' + stt.state;\n        }\n      }\n    };\n  });\n  CodeMirror.defineMIME(\"text/x-forth\", \"forth\");\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/forth/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Forth mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link href='http://fonts.googleapis.com/css?family=Droid+Sans+Mono' rel='stylesheet' type='text/css'>\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=stylesheet href=\"../../theme/colorforth.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"forth.js\"></script>\n<style>\n.CodeMirror {\n    font-family: 'Droid Sans Mono', monospace;\n    font-size: 14px;\n}\n</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Forth</a>\n  </ul>\n</div>\n\n<article>\n\n<h2>Forth mode</h2>\n\n<form><textarea id=\"code\" name=\"code\">\n\\ Insertion sort\n\n: cell-  1 cells - ;\n\n: insert ( start end -- start )\n  dup @ >r ( r: v )\n  begin\n    2dup <\n  while\n    r@ over cell- @ <\n  while\n    cell-\n    dup @ over cell+ !\n  repeat then\n  r> swap ! ;\n\n: sort ( array len -- )\n  1 ?do\n    dup i cells + insert\n  loop drop ;</textarea>\n  </form>\n\n<script>\n  var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n    lineNumbers: true,\n    lineWrapping: true,\n    indentUnit: 2,\n    tabSize: 2,\n    autofocus: true,\n    theme: \"colorforth\",\n    mode: \"text/x-forth\"\n  });\n</script>\n\n<p>Simple mode that handle Forth-Syntax (<a href=\"http://en.wikipedia.org/wiki/Forth_%28programming_language%29\">Forth on WikiPedia</a>).</p>\n\n<p><strong>MIME types defined:</strong> <code>text/x-forth</code>.</p>\n\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/fortran/fortran.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"fortran\", function() {\n  function words(array) {\n    var keys = {};\n    for (var i = 0; i < array.length; ++i) {\n      keys[array[i]] = true;\n    }\n    return keys;\n  }\n\n  var keywords = words([\n                  \"abstract\", \"accept\", \"allocatable\", \"allocate\",\n                  \"array\", \"assign\", \"asynchronous\", \"backspace\",\n                  \"bind\", \"block\", \"byte\", \"call\", \"case\",\n                  \"class\", \"close\", \"common\", \"contains\",\n                  \"continue\", \"cycle\", \"data\", \"deallocate\",\n                  \"decode\", \"deferred\", \"dimension\", \"do\",\n                  \"elemental\", \"else\", \"encode\", \"end\",\n                  \"endif\", \"entry\", \"enumerator\", \"equivalence\",\n                  \"exit\", \"external\", \"extrinsic\", \"final\",\n                  \"forall\", \"format\", \"function\", \"generic\",\n                  \"go\", \"goto\", \"if\", \"implicit\", \"import\", \"include\",\n                  \"inquire\", \"intent\", \"interface\", \"intrinsic\",\n                  \"module\", \"namelist\", \"non_intrinsic\",\n                  \"non_overridable\", \"none\", \"nopass\",\n                  \"nullify\", \"open\", \"optional\", \"options\",\n                  \"parameter\", \"pass\", \"pause\", \"pointer\",\n                  \"print\", \"private\", \"program\", \"protected\",\n                  \"public\", \"pure\", \"read\", \"recursive\", \"result\",\n                  \"return\", \"rewind\", \"save\", \"select\", \"sequence\",\n                  \"stop\", \"subroutine\", \"target\", \"then\", \"to\", \"type\",\n                  \"use\", \"value\", \"volatile\", \"where\", \"while\",\n                  \"write\"]);\n  var builtins = words([\"abort\", \"abs\", \"access\", \"achar\", \"acos\",\n                          \"adjustl\", \"adjustr\", \"aimag\", \"aint\", \"alarm\",\n                          \"all\", \"allocated\", \"alog\", \"amax\", \"amin\",\n                          \"amod\", \"and\", \"anint\", \"any\", \"asin\",\n                          \"associated\", \"atan\", \"besj\", \"besjn\", \"besy\",\n                          \"besyn\", \"bit_size\", \"btest\", \"cabs\", \"ccos\",\n                          \"ceiling\", \"cexp\", \"char\", \"chdir\", \"chmod\",\n                          \"clog\", \"cmplx\", \"command_argument_count\",\n                          \"complex\", \"conjg\", \"cos\", \"cosh\", \"count\",\n                          \"cpu_time\", \"cshift\", \"csin\", \"csqrt\", \"ctime\",\n                          \"c_funloc\", \"c_loc\", \"c_associated\", \"c_null_ptr\",\n                          \"c_null_funptr\", \"c_f_pointer\", \"c_null_char\",\n                          \"c_alert\", \"c_backspace\", \"c_form_feed\",\n                          \"c_new_line\", \"c_carriage_return\",\n                          \"c_horizontal_tab\", \"c_vertical_tab\", \"dabs\",\n                          \"dacos\", \"dasin\", \"datan\", \"date_and_time\",\n                          \"dbesj\", \"dbesj\", \"dbesjn\", \"dbesy\", \"dbesy\",\n                          \"dbesyn\", \"dble\", \"dcos\", \"dcosh\", \"ddim\", \"derf\",\n                          \"derfc\", \"dexp\", \"digits\", \"dim\", \"dint\", \"dlog\",\n                          \"dlog\", \"dmax\", \"dmin\", \"dmod\", \"dnint\",\n                          \"dot_product\", \"dprod\", \"dsign\", \"dsinh\",\n                          \"dsin\", \"dsqrt\", \"dtanh\", \"dtan\", \"dtime\",\n                          \"eoshift\", \"epsilon\", \"erf\", \"erfc\", \"etime\",\n                          \"exit\", \"exp\", \"exponent\", \"extends_type_of\",\n                          \"fdate\", \"fget\", \"fgetc\", \"float\", \"floor\",\n                          \"flush\", \"fnum\", \"fputc\", \"fput\", \"fraction\",\n                          \"fseek\", \"fstat\", \"ftell\", \"gerror\", \"getarg\",\n                          \"get_command\", \"get_command_argument\",\n                          \"get_environment_variable\", \"getcwd\",\n                          \"getenv\", \"getgid\", \"getlog\", \"getpid\",\n                          \"getuid\", \"gmtime\", \"hostnm\", \"huge\", \"iabs\",\n                          \"iachar\", \"iand\", \"iargc\", \"ibclr\", \"ibits\",\n                          \"ibset\", \"ichar\", \"idate\", \"idim\", \"idint\",\n                          \"idnint\", \"ieor\", \"ierrno\", \"ifix\", \"imag\",\n                          \"imagpart\", \"index\", \"int\", \"ior\", \"irand\",\n                          \"isatty\", \"ishft\", \"ishftc\", \"isign\",\n                          \"iso_c_binding\", \"is_iostat_end\", \"is_iostat_eor\",\n                          \"itime\", \"kill\", \"kind\", \"lbound\", \"len\", \"len_trim\",\n                          \"lge\", \"lgt\", \"link\", \"lle\", \"llt\", \"lnblnk\", \"loc\",\n                          \"log\", \"logical\", \"long\", \"lshift\", \"lstat\", \"ltime\",\n                          \"matmul\", \"max\", \"maxexponent\", \"maxloc\", \"maxval\",\n                          \"mclock\", \"merge\", \"move_alloc\", \"min\", \"minexponent\",\n                          \"minloc\", \"minval\", \"mod\", \"modulo\", \"mvbits\",\n                          \"nearest\", \"new_line\", \"nint\", \"not\", \"or\", \"pack\",\n                          \"perror\", \"precision\", \"present\", \"product\", \"radix\",\n                          \"rand\", \"random_number\", \"random_seed\", \"range\",\n                          \"real\", \"realpart\", \"rename\", \"repeat\", \"reshape\",\n                          \"rrspacing\", \"rshift\", \"same_type_as\", \"scale\",\n                          \"scan\", \"second\", \"selected_int_kind\",\n                          \"selected_real_kind\", \"set_exponent\", \"shape\",\n                          \"short\", \"sign\", \"signal\", \"sinh\", \"sin\", \"sleep\",\n                          \"sngl\", \"spacing\", \"spread\", \"sqrt\", \"srand\", \"stat\",\n                          \"sum\", \"symlnk\", \"system\", \"system_clock\", \"tan\",\n                          \"tanh\", \"time\", \"tiny\", \"transfer\", \"transpose\",\n                          \"trim\", \"ttynam\", \"ubound\", \"umask\", \"unlink\",\n                          \"unpack\", \"verify\", \"xor\", \"zabs\", \"zcos\", \"zexp\",\n                          \"zlog\", \"zsin\", \"zsqrt\"]);\n\n    var dataTypes =  words([\"c_bool\", \"c_char\", \"c_double\", \"c_double_complex\",\n                     \"c_float\", \"c_float_complex\", \"c_funptr\", \"c_int\",\n                     \"c_int16_t\", \"c_int32_t\", \"c_int64_t\", \"c_int8_t\",\n                     \"c_int_fast16_t\", \"c_int_fast32_t\", \"c_int_fast64_t\",\n                     \"c_int_fast8_t\", \"c_int_least16_t\", \"c_int_least32_t\",\n                     \"c_int_least64_t\", \"c_int_least8_t\", \"c_intmax_t\",\n                     \"c_intptr_t\", \"c_long\", \"c_long_double\",\n                     \"c_long_double_complex\", \"c_long_long\", \"c_ptr\",\n                     \"c_short\", \"c_signed_char\", \"c_size_t\", \"character\",\n                     \"complex\", \"double\", \"integer\", \"logical\", \"real\"]);\n  var isOperatorChar = /[+\\-*&=<>\\/\\:]/;\n  var litOperator = new RegExp(\"(\\.and\\.|\\.or\\.|\\.eq\\.|\\.lt\\.|\\.le\\.|\\.gt\\.|\\.ge\\.|\\.ne\\.|\\.not\\.|\\.eqv\\.|\\.neqv\\.)\", \"i\");\n\n  function tokenBase(stream, state) {\n\n    if (stream.match(litOperator)){\n        return 'operator';\n    }\n\n    var ch = stream.next();\n    if (ch == \"!\") {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n    if (ch == '\"' || ch == \"'\") {\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    }\n    if (/[\\[\\]\\(\\),]/.test(ch)) {\n      return null;\n    }\n    if (/\\d/.test(ch)) {\n      stream.eatWhile(/[\\w\\.]/);\n      return \"number\";\n    }\n    if (isOperatorChar.test(ch)) {\n      stream.eatWhile(isOperatorChar);\n      return \"operator\";\n    }\n    stream.eatWhile(/[\\w\\$_]/);\n    var word = stream.current().toLowerCase();\n\n    if (keywords.hasOwnProperty(word)){\n            return 'keyword';\n    }\n    if (builtins.hasOwnProperty(word) || dataTypes.hasOwnProperty(word)) {\n            return 'builtin';\n    }\n    return \"variable\";\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, next, end = false;\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) {\n            end = true;\n            break;\n        }\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (end || !escaped) state.tokenize = null;\n      return \"string\";\n    };\n  }\n\n  // Interface\n\n  return {\n    startState: function() {\n      return {tokenize: null};\n    },\n\n    token: function(stream, state) {\n      if (stream.eatSpace()) return null;\n      var style = (state.tokenize || tokenBase)(stream, state);\n      if (style == \"comment\" || style == \"meta\") return style;\n      return style;\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-fortran\", \"fortran\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/fortran/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Fortran mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"fortran.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Fortran</a>\n  </ul>\n</div>\n\n<article>\n<h2>Fortran mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\n! Example Fortran code\n  program average\n\n  ! Read in some numbers and take the average\n  ! As written, if there are no data points, an average of zero is returned\n  ! While this may not be desired behavior, it keeps this example simple\n\n  implicit none\n\n  real, dimension(:), allocatable :: points\n  integer                         :: number_of_points\n  real                            :: average_points=0., positive_average=0., negative_average=0.\n\n  write (*,*) \"Input number of points to average:\"\n  read  (*,*) number_of_points\n\n  allocate (points(number_of_points))\n\n  write (*,*) \"Enter the points to average:\"\n  read  (*,*) points\n\n  ! Take the average by summing points and dividing by number_of_points\n  if (number_of_points > 0) average_points = sum(points) / number_of_points\n\n  ! Now form average over positive and negative points only\n  if (count(points > 0.) > 0) then\n     positive_average = sum(points, points > 0.) / count(points > 0.)\n  end if\n\n  if (count(points < 0.) > 0) then\n     negative_average = sum(points, points < 0.) / count(points < 0.)\n  end if\n\n  deallocate (points)\n\n  ! Print result to terminal\n  write (*,'(a,g12.4)') 'Average = ', average_points\n  write (*,'(a,g12.4)') 'Average of positive points = ', positive_average\n  write (*,'(a,g12.4)') 'Average of negative points = ', negative_average\n\n  end program average\n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        mode: \"text/x-fortran\"\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-Fortran</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/gas/gas.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"gas\", function(_config, parserConfig) {\n  'use strict';\n\n  // If an architecture is specified, its initialization function may\n  // populate this array with custom parsing functions which will be\n  // tried in the event that the standard functions do not find a match.\n  var custom = [];\n\n  // The symbol used to start a line comment changes based on the target\n  // architecture.\n  // If no architecture is pased in \"parserConfig\" then only multiline\n  // comments will have syntax support.\n  var lineCommentStartSymbol = \"\";\n\n  // These directives are architecture independent.\n  // Machine specific directives should go in their respective\n  // architecture initialization function.\n  // Reference:\n  // http://sourceware.org/binutils/docs/as/Pseudo-Ops.html#Pseudo-Ops\n  var directives = {\n    \".abort\" : \"builtin\",\n    \".align\" : \"builtin\",\n    \".altmacro\" : \"builtin\",\n    \".ascii\" : \"builtin\",\n    \".asciz\" : \"builtin\",\n    \".balign\" : \"builtin\",\n    \".balignw\" : \"builtin\",\n    \".balignl\" : \"builtin\",\n    \".bundle_align_mode\" : \"builtin\",\n    \".bundle_lock\" : \"builtin\",\n    \".bundle_unlock\" : \"builtin\",\n    \".byte\" : \"builtin\",\n    \".cfi_startproc\" : \"builtin\",\n    \".comm\" : \"builtin\",\n    \".data\" : \"builtin\",\n    \".def\" : \"builtin\",\n    \".desc\" : \"builtin\",\n    \".dim\" : \"builtin\",\n    \".double\" : \"builtin\",\n    \".eject\" : \"builtin\",\n    \".else\" : \"builtin\",\n    \".elseif\" : \"builtin\",\n    \".end\" : \"builtin\",\n    \".endef\" : \"builtin\",\n    \".endfunc\" : \"builtin\",\n    \".endif\" : \"builtin\",\n    \".equ\" : \"builtin\",\n    \".equiv\" : \"builtin\",\n    \".eqv\" : \"builtin\",\n    \".err\" : \"builtin\",\n    \".error\" : \"builtin\",\n    \".exitm\" : \"builtin\",\n    \".extern\" : \"builtin\",\n    \".fail\" : \"builtin\",\n    \".file\" : \"builtin\",\n    \".fill\" : \"builtin\",\n    \".float\" : \"builtin\",\n    \".func\" : \"builtin\",\n    \".global\" : \"builtin\",\n    \".gnu_attribute\" : \"builtin\",\n    \".hidden\" : \"builtin\",\n    \".hword\" : \"builtin\",\n    \".ident\" : \"builtin\",\n    \".if\" : \"builtin\",\n    \".incbin\" : \"builtin\",\n    \".include\" : \"builtin\",\n    \".int\" : \"builtin\",\n    \".internal\" : \"builtin\",\n    \".irp\" : \"builtin\",\n    \".irpc\" : \"builtin\",\n    \".lcomm\" : \"builtin\",\n    \".lflags\" : \"builtin\",\n    \".line\" : \"builtin\",\n    \".linkonce\" : \"builtin\",\n    \".list\" : \"builtin\",\n    \".ln\" : \"builtin\",\n    \".loc\" : \"builtin\",\n    \".loc_mark_labels\" : \"builtin\",\n    \".local\" : \"builtin\",\n    \".long\" : \"builtin\",\n    \".macro\" : \"builtin\",\n    \".mri\" : \"builtin\",\n    \".noaltmacro\" : \"builtin\",\n    \".nolist\" : \"builtin\",\n    \".octa\" : \"builtin\",\n    \".offset\" : \"builtin\",\n    \".org\" : \"builtin\",\n    \".p2align\" : \"builtin\",\n    \".popsection\" : \"builtin\",\n    \".previous\" : \"builtin\",\n    \".print\" : \"builtin\",\n    \".protected\" : \"builtin\",\n    \".psize\" : \"builtin\",\n    \".purgem\" : \"builtin\",\n    \".pushsection\" : \"builtin\",\n    \".quad\" : \"builtin\",\n    \".reloc\" : \"builtin\",\n    \".rept\" : \"builtin\",\n    \".sbttl\" : \"builtin\",\n    \".scl\" : \"builtin\",\n    \".section\" : \"builtin\",\n    \".set\" : \"builtin\",\n    \".short\" : \"builtin\",\n    \".single\" : \"builtin\",\n    \".size\" : \"builtin\",\n    \".skip\" : \"builtin\",\n    \".sleb128\" : \"builtin\",\n    \".space\" : \"builtin\",\n    \".stab\" : \"builtin\",\n    \".string\" : \"builtin\",\n    \".struct\" : \"builtin\",\n    \".subsection\" : \"builtin\",\n    \".symver\" : \"builtin\",\n    \".tag\" : \"builtin\",\n    \".text\" : \"builtin\",\n    \".title\" : \"builtin\",\n    \".type\" : \"builtin\",\n    \".uleb128\" : \"builtin\",\n    \".val\" : \"builtin\",\n    \".version\" : \"builtin\",\n    \".vtable_entry\" : \"builtin\",\n    \".vtable_inherit\" : \"builtin\",\n    \".warning\" : \"builtin\",\n    \".weak\" : \"builtin\",\n    \".weakref\" : \"builtin\",\n    \".word\" : \"builtin\"\n  };\n\n  var registers = {};\n\n  function x86(_parserConfig) {\n    lineCommentStartSymbol = \"#\";\n\n    registers.ax  = \"variable\";\n    registers.eax = \"variable-2\";\n    registers.rax = \"variable-3\";\n\n    registers.bx  = \"variable\";\n    registers.ebx = \"variable-2\";\n    registers.rbx = \"variable-3\";\n\n    registers.cx  = \"variable\";\n    registers.ecx = \"variable-2\";\n    registers.rcx = \"variable-3\";\n\n    registers.dx  = \"variable\";\n    registers.edx = \"variable-2\";\n    registers.rdx = \"variable-3\";\n\n    registers.si  = \"variable\";\n    registers.esi = \"variable-2\";\n    registers.rsi = \"variable-3\";\n\n    registers.di  = \"variable\";\n    registers.edi = \"variable-2\";\n    registers.rdi = \"variable-3\";\n\n    registers.sp  = \"variable\";\n    registers.esp = \"variable-2\";\n    registers.rsp = \"variable-3\";\n\n    registers.bp  = \"variable\";\n    registers.ebp = \"variable-2\";\n    registers.rbp = \"variable-3\";\n\n    registers.ip  = \"variable\";\n    registers.eip = \"variable-2\";\n    registers.rip = \"variable-3\";\n\n    registers.cs  = \"keyword\";\n    registers.ds  = \"keyword\";\n    registers.ss  = \"keyword\";\n    registers.es  = \"keyword\";\n    registers.fs  = \"keyword\";\n    registers.gs  = \"keyword\";\n  }\n\n  function armv6(_parserConfig) {\n    // Reference:\n    // http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf\n    // http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf\n    lineCommentStartSymbol = \"@\";\n    directives.syntax = \"builtin\";\n\n    registers.r0  = \"variable\";\n    registers.r1  = \"variable\";\n    registers.r2  = \"variable\";\n    registers.r3  = \"variable\";\n    registers.r4  = \"variable\";\n    registers.r5  = \"variable\";\n    registers.r6  = \"variable\";\n    registers.r7  = \"variable\";\n    registers.r8  = \"variable\";\n    registers.r9  = \"variable\";\n    registers.r10 = \"variable\";\n    registers.r11 = \"variable\";\n    registers.r12 = \"variable\";\n\n    registers.sp  = \"variable-2\";\n    registers.lr  = \"variable-2\";\n    registers.pc  = \"variable-2\";\n    registers.r13 = registers.sp;\n    registers.r14 = registers.lr;\n    registers.r15 = registers.pc;\n\n    custom.push(function(ch, stream) {\n      if (ch === '#') {\n        stream.eatWhile(/\\w/);\n        return \"number\";\n      }\n    });\n  }\n\n  var arch = (parserConfig.architecture || \"x86\").toLowerCase();\n  if (arch === \"x86\") {\n    x86(parserConfig);\n  } else if (arch === \"arm\" || arch === \"armv6\") {\n    armv6(parserConfig);\n  }\n\n  function nextUntilUnescaped(stream, end) {\n    var escaped = false, next;\n    while ((next = stream.next()) != null) {\n      if (next === end && !escaped) {\n        return false;\n      }\n      escaped = !escaped && next === \"\\\\\";\n    }\n    return escaped;\n  }\n\n  function clikeComment(stream, state) {\n    var maybeEnd = false, ch;\n    while ((ch = stream.next()) != null) {\n      if (ch === \"/\" && maybeEnd) {\n        state.tokenize = null;\n        break;\n      }\n      maybeEnd = (ch === \"*\");\n    }\n    return \"comment\";\n  }\n\n  return {\n    startState: function() {\n      return {\n        tokenize: null\n      };\n    },\n\n    token: function(stream, state) {\n      if (state.tokenize) {\n        return state.tokenize(stream, state);\n      }\n\n      if (stream.eatSpace()) {\n        return null;\n      }\n\n      var style, cur, ch = stream.next();\n\n      if (ch === \"/\") {\n        if (stream.eat(\"*\")) {\n          state.tokenize = clikeComment;\n          return clikeComment(stream, state);\n        }\n      }\n\n      if (ch === lineCommentStartSymbol) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n\n      if (ch === '\"') {\n        nextUntilUnescaped(stream, '\"');\n        return \"string\";\n      }\n\n      if (ch === '.') {\n        stream.eatWhile(/\\w/);\n        cur = stream.current().toLowerCase();\n        style = directives[cur];\n        return style || null;\n      }\n\n      if (ch === '=') {\n        stream.eatWhile(/\\w/);\n        return \"tag\";\n      }\n\n      if (ch === '{') {\n        return \"braket\";\n      }\n\n      if (ch === '}') {\n        return \"braket\";\n      }\n\n      if (/\\d/.test(ch)) {\n        if (ch === \"0\" && stream.eat(\"x\")) {\n          stream.eatWhile(/[0-9a-fA-F]/);\n          return \"number\";\n        }\n        stream.eatWhile(/\\d/);\n        return \"number\";\n      }\n\n      if (/\\w/.test(ch)) {\n        stream.eatWhile(/\\w/);\n        if (stream.eat(\":\")) {\n          return 'tag';\n        }\n        cur = stream.current().toLowerCase();\n        style = registers[cur];\n        return style || null;\n      }\n\n      for (var i = 0; i < custom.length; i++) {\n        style = custom[i](ch, stream, state);\n        if (style) {\n          return style;\n        }\n      }\n    },\n\n    lineComment: lineCommentStartSymbol,\n    blockCommentStart: \"/*\",\n    blockCommentEnd: \"*/\"\n  };\n});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/gas/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Gas mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"gas.js\"></script>\n<style>.CodeMirror {border: 2px inset #dee;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Gas</a>\n  </ul>\n</div>\n\n<article>\n<h2>Gas mode</h2>\n<form>\n<textarea id=\"code\" name=\"code\">\n.syntax unified\n.global main\n\n/* \n *  A\n *  multi-line\n *  comment.\n */\n\n@ A single line comment.\n\nmain:\n        push    {sp, lr}\n        ldr     r0, =message\n        bl      puts\n        mov     r0, #0\n        pop     {sp, pc}\n\nmessage:\n        .asciz \"Hello world!<br />\"\n</textarea>\n        </form>\n\n        <script>\n            var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n                lineNumbers: true,\n                mode: {name: \"gas\", architecture: \"ARMv6\"},\n            });\n        </script>\n\n        <p>Handles AT&amp;T assembler syntax (more specifically this handles\n        the GNU Assembler (gas) syntax.)\n        It takes a single optional configuration parameter:\n        <code>architecture</code>, which can be one of <code>\"ARM\"</code>,\n        <code>\"ARMv6\"</code> or <code>\"x86\"</code>.\n        Including the parameter adds syntax for the registers and special\n        directives for the supplied architecture.\n\n        <p><strong>MIME types defined:</strong> <code>text/x-gas</code></p>\n    </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/gfm/gfm.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../markdown/markdown\"), require(\"../../addon/mode/overlay\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../markdown/markdown\", \"../../addon/mode/overlay\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"gfm\", function(config, modeConfig) {\n  var codeDepth = 0;\n  function blankLine(state) {\n    state.code = false;\n    return null;\n  }\n  var gfmOverlay = {\n    startState: function() {\n      return {\n        code: false,\n        codeBlock: false,\n        ateSpace: false\n      };\n    },\n    copyState: function(s) {\n      return {\n        code: s.code,\n        codeBlock: s.codeBlock,\n        ateSpace: s.ateSpace\n      };\n    },\n    token: function(stream, state) {\n      state.combineTokens = null;\n\n      // Hack to prevent formatting override inside code blocks (block and inline)\n      if (state.codeBlock) {\n        if (stream.match(/^```/)) {\n          state.codeBlock = false;\n          return null;\n        }\n        stream.skipToEnd();\n        return null;\n      }\n      if (stream.sol()) {\n        state.code = false;\n      }\n      if (stream.sol() && stream.match(/^```/)) {\n        stream.skipToEnd();\n        state.codeBlock = true;\n        return null;\n      }\n      // If this block is changed, it may need to be updated in Markdown mode\n      if (stream.peek() === '`') {\n        stream.next();\n        var before = stream.pos;\n        stream.eatWhile('`');\n        var difference = 1 + stream.pos - before;\n        if (!state.code) {\n          codeDepth = difference;\n          state.code = true;\n        } else {\n          if (difference === codeDepth) { // Must be exact\n            state.code = false;\n          }\n        }\n        return null;\n      } else if (state.code) {\n        stream.next();\n        return null;\n      }\n      // Check if space. If so, links can be formatted later on\n      if (stream.eatSpace()) {\n        state.ateSpace = true;\n        return null;\n      }\n      if (stream.sol() || state.ateSpace) {\n        state.ateSpace = false;\n        if(stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+@)?(?:[a-f0-9]{7,40}\\b)/)) {\n          // User/Project@SHA\n          // User@SHA\n          // SHA\n          state.combineTokens = true;\n          return \"link\";\n        } else if (stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+)?#[0-9]+\\b/)) {\n          // User/Project#Num\n          // User#Num\n          // #Num\n          state.combineTokens = true;\n          return \"link\";\n        }\n      }\n      if (stream.match(/^((?:[a-z][\\w-]+:(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]|\\([^\\s()<>]*\\))+(?:\\([^\\s()<>]*\\)|[^\\s`*!()\\[\\]{};:'\".,<>?«»“”‘’]))/i) &&\n         stream.string.slice(stream.start - 2, stream.start) != \"](\") {\n        // URLs\n        // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls\n        // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine\n        state.combineTokens = true;\n        return \"link\";\n      }\n      stream.next();\n      return null;\n    },\n    blankLine: blankLine\n  };\n\n  var markdownConfig = {\n    underscoresBreakWords: false,\n    taskLists: true,\n    fencedCodeBlocks: true,\n    strikethrough: true\n  };\n  for (var attr in modeConfig) {\n    markdownConfig[attr] = modeConfig[attr];\n  }\n  markdownConfig.name = \"markdown\";\n  CodeMirror.defineMIME(\"gfmBase\", markdownConfig);\n  return CodeMirror.overlayMode(CodeMirror.getMode(config, \"gfmBase\"), gfmOverlay);\n}, \"markdown\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/gfm/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: GFM mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/mode/overlay.js\"></script>\n<script src=\"../xml/xml.js\"></script>\n<script src=\"../markdown/markdown.js\"></script>\n<script src=\"gfm.js\"></script>\n<script src=\"../javascript/javascript.js\"></script>\n<script src=\"../css/css.js\"></script>\n<script src=\"../htmlmixed/htmlmixed.js\"></script>\n<script src=\"../clike/clike.js\"></script>\n<script src=\"../meta.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">GFM</a>\n  </ul>\n</div>\n\n<article>\n<h2>GFM mode</h2>\n<form><textarea id=\"code\" name=\"code\">\nGitHub Flavored Markdown\n========================\n\nEverything from markdown plus GFM features:\n\n## URL autolinking\n\nUnderscores_are_allowed_between_words.\n\n## Strikethrough text\n\nGFM adds syntax to strikethrough text, which is missing from standard Markdown.\n\n~~Mistaken text.~~\n~~**works with other fomatting**~~\n\n~~spans across\nlines~~\n\n## Fenced code blocks (and syntax highlighting)\n\n```javascript\nfor (var i = 0; i &lt; items.length; i++) {\n    console.log(items[i], i); // log them\n}\n```\n\n## Task Lists\n\n- [ ] Incomplete task list item\n- [x] **Completed** task list item\n\n## A bit of GitHub spice\n\n* SHA: be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2\n* User@SHA ref: mojombo@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2\n* User/Project@SHA: mojombo/god@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2\n* \\#Num: #1\n* User/#Num: mojombo#1\n* User/Project#Num: mojombo/god#1\n\nSee http://github.github.com/github-flavored-markdown/.\n\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: 'gfm',\n        lineNumbers: true,\n        theme: \"default\"\n      });\n    </script>\n\n    <p>Optionally depends on other modes for properly highlighted code blocks.</p>\n\n    <p><strong>Parsing/Highlighting Tests:</strong> <a href=\"../../test/index.html#gfm_*\">normal</a>,  <a href=\"../../test/index.html#verbose,gfm_*\">verbose</a>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/gfm/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  var mode = CodeMirror.getMode({tabSize: 4}, \"gfm\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }\n  var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: \"gfm\", highlightFormatting: true});\n  function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); }\n\n  FT(\"codeBackticks\",\n     \"[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]\");\n\n  FT(\"doubleBackticks\",\n     \"[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]\");\n\n  FT(\"codeBlock\",\n     \"[comment&formatting&formatting-code-block ```css]\",\n     \"[tag foo]\",\n     \"[comment&formatting&formatting-code-block ```]\");\n\n  FT(\"taskList\",\n     \"[variable-2&formatting&formatting-list&formatting-list-ul - ][meta&formatting&formatting-task [ ]]][variable-2  foo]\",\n     \"[variable-2&formatting&formatting-list&formatting-list-ul - ][property&formatting&formatting-task [x]]][variable-2  foo]\");\n\n  FT(\"formatting_strikethrough\",\n     \"[strikethrough&formatting&formatting-strikethrough ~~][strikethrough foo][strikethrough&formatting&formatting-strikethrough ~~]\");\n\n  FT(\"formatting_strikethrough\",\n     \"foo [strikethrough&formatting&formatting-strikethrough ~~][strikethrough bar][strikethrough&formatting&formatting-strikethrough ~~]\");\n\n  MT(\"emInWordAsterisk\",\n     \"foo[em *bar*]hello\");\n\n  MT(\"emInWordUnderscore\",\n     \"foo_bar_hello\");\n\n  MT(\"emStrongUnderscore\",\n     \"[strong __][em&strong _foo__][em _] bar\");\n\n  MT(\"fencedCodeBlocks\",\n     \"[comment ```]\",\n     \"[comment foo]\",\n     \"\",\n     \"[comment ```]\",\n     \"bar\");\n\n  MT(\"fencedCodeBlockModeSwitching\",\n     \"[comment ```javascript]\",\n     \"[variable foo]\",\n     \"\",\n     \"[comment ```]\",\n     \"bar\");\n\n  MT(\"taskListAsterisk\",\n     \"[variable-2 * []] foo]\", // Invalid; must have space or x between []\n     \"[variable-2 * [ ]]bar]\", // Invalid; must have space after ]\n     \"[variable-2 * [x]]hello]\", // Invalid; must have space after ]\n     \"[variable-2 * ][meta [ ]]][variable-2  [world]]]\", // Valid; tests reference style links\n     \"    [variable-3 * ][property [x]]][variable-3  foo]\"); // Valid; can be nested\n\n  MT(\"taskListPlus\",\n     \"[variable-2 + []] foo]\", // Invalid; must have space or x between []\n     \"[variable-2 + [ ]]bar]\", // Invalid; must have space after ]\n     \"[variable-2 + [x]]hello]\", // Invalid; must have space after ]\n     \"[variable-2 + ][meta [ ]]][variable-2  [world]]]\", // Valid; tests reference style links\n     \"    [variable-3 + ][property [x]]][variable-3  foo]\"); // Valid; can be nested\n\n  MT(\"taskListDash\",\n     \"[variable-2 - []] foo]\", // Invalid; must have space or x between []\n     \"[variable-2 - [ ]]bar]\", // Invalid; must have space after ]\n     \"[variable-2 - [x]]hello]\", // Invalid; must have space after ]\n     \"[variable-2 - ][meta [ ]]][variable-2  [world]]]\", // Valid; tests reference style links\n     \"    [variable-3 - ][property [x]]][variable-3  foo]\"); // Valid; can be nested\n\n  MT(\"taskListNumber\",\n     \"[variable-2 1. []] foo]\", // Invalid; must have space or x between []\n     \"[variable-2 2. [ ]]bar]\", // Invalid; must have space after ]\n     \"[variable-2 3. [x]]hello]\", // Invalid; must have space after ]\n     \"[variable-2 4. ][meta [ ]]][variable-2  [world]]]\", // Valid; tests reference style links\n     \"    [variable-3 1. ][property [x]]][variable-3  foo]\"); // Valid; can be nested\n\n  MT(\"SHA\",\n     \"foo [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] bar\");\n\n  MT(\"SHAEmphasis\",\n     \"[em *foo ][em&link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]\");\n\n  MT(\"shortSHA\",\n     \"foo [link be6a8cc] bar\");\n\n  MT(\"tooShortSHA\",\n     \"foo be6a8c bar\");\n\n  MT(\"longSHA\",\n     \"foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd22 bar\");\n\n  MT(\"badSHA\",\n     \"foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cg2 bar\");\n\n  MT(\"userSHA\",\n     \"foo [link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] hello\");\n\n  MT(\"userSHAEmphasis\",\n     \"[em *foo ][em&link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]\");\n\n  MT(\"userProjectSHA\",\n     \"foo [link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] world\");\n\n  MT(\"userProjectSHAEmphasis\",\n     \"[em *foo ][em&link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]\");\n\n  MT(\"num\",\n     \"foo [link #1] bar\");\n\n  MT(\"numEmphasis\",\n     \"[em *foo ][em&link #1][em *]\");\n\n  MT(\"badNum\",\n     \"foo #1bar hello\");\n\n  MT(\"userNum\",\n     \"foo [link bar#1] hello\");\n\n  MT(\"userNumEmphasis\",\n     \"[em *foo ][em&link bar#1][em *]\");\n\n  MT(\"userProjectNum\",\n     \"foo [link bar/hello#1] world\");\n\n  MT(\"userProjectNumEmphasis\",\n     \"[em *foo ][em&link bar/hello#1][em *]\");\n\n  MT(\"vanillaLink\",\n     \"foo [link http://www.example.com/] bar\");\n\n  MT(\"vanillaLinkPunctuation\",\n     \"foo [link http://www.example.com/]. bar\");\n\n  MT(\"vanillaLinkExtension\",\n     \"foo [link http://www.example.com/index.html] bar\");\n\n  MT(\"vanillaLinkEmphasis\",\n     \"foo [em *][em&link http://www.example.com/index.html][em *] bar\");\n\n  MT(\"notALink\",\n     \"[comment ```css]\",\n     \"[tag foo] {[property color]:[keyword black];}\",\n     \"[comment ```][link http://www.example.com/]\");\n\n  MT(\"notALink\",\n     \"[comment ``foo `bar` http://www.example.com/``] hello\");\n\n  MT(\"notALink\",\n     \"[comment `foo]\",\n     \"[link http://www.example.com/]\",\n     \"[comment `foo]\",\n     \"\",\n     \"[link http://www.example.com/]\");\n\n  MT(\"headerCodeBlockGithub\",\n     \"[header&header-1 # heading]\",\n     \"\",\n     \"[comment ```]\",\n     \"[comment code]\",\n     \"[comment ```]\",\n     \"\",\n     \"Commit: [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2]\",\n     \"Issue: [link #1]\",\n     \"Link: [link http://www.example.com/]\");\n\n  MT(\"strikethrough\",\n     \"[strikethrough ~~foo~~]\");\n\n  MT(\"strikethroughWithStartingSpace\",\n     \"~~ foo~~\");\n\n  MT(\"strikethroughUnclosedStrayTildes\",\n    \"[strikethrough ~~foo~~~]\");\n\n  MT(\"strikethroughUnclosedStrayTildes\",\n     \"[strikethrough ~~foo ~~]\");\n\n  MT(\"strikethroughUnclosedStrayTildes\",\n    \"[strikethrough ~~foo ~~ bar]\");\n\n  MT(\"strikethroughUnclosedStrayTildes\",\n    \"[strikethrough ~~foo ~~ bar~~]hello\");\n\n  MT(\"strikethroughOneLetter\",\n     \"[strikethrough ~~a~~]\");\n\n  MT(\"strikethroughWrapped\",\n     \"[strikethrough ~~foo]\",\n     \"[strikethrough foo~~]\");\n\n  MT(\"strikethroughParagraph\",\n     \"[strikethrough ~~foo]\",\n     \"\",\n     \"foo[strikethrough ~~bar]\");\n\n  MT(\"strikethroughEm\",\n     \"[strikethrough ~~foo][em&strikethrough *bar*][strikethrough ~~]\");\n\n  MT(\"strikethroughEm\",\n     \"[em *][em&strikethrough ~~foo~~][em *]\");\n\n  MT(\"strikethroughStrong\",\n     \"[strikethrough ~~][strong&strikethrough **foo**][strikethrough ~~]\");\n\n  MT(\"strikethroughStrong\",\n     \"[strong **][strong&strikethrough ~~foo~~][strong **]\");\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/gherkin/gherkin.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/*\nGherkin mode - http://www.cukes.info/\nReport bugs/issues here: https://github.com/codemirror/CodeMirror/issues\n*/\n\n// Following Objs from Brackets implementation: https://github.com/tregusti/brackets-gherkin/blob/master/main.js\n//var Quotes = {\n//  SINGLE: 1,\n//  DOUBLE: 2\n//};\n\n//var regex = {\n//  keywords: /(Feature| {2}(Scenario|In order to|As|I)| {4}(Given|When|Then|And))/\n//};\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"gherkin\", function () {\n  return {\n    startState: function () {\n      return {\n        lineNumber: 0,\n        tableHeaderLine: false,\n        allowFeature: true,\n        allowBackground: false,\n        allowScenario: false,\n        allowSteps: false,\n        allowPlaceholders: false,\n        allowMultilineArgument: false,\n        inMultilineString: false,\n        inMultilineTable: false,\n        inKeywordLine: false\n      };\n    },\n    token: function (stream, state) {\n      if (stream.sol()) {\n        state.lineNumber++;\n        state.inKeywordLine = false;\n        if (state.inMultilineTable) {\n            state.tableHeaderLine = false;\n            if (!stream.match(/\\s*\\|/, false)) {\n              state.allowMultilineArgument = false;\n              state.inMultilineTable = false;\n            }\n        }\n      }\n\n      stream.eatSpace();\n\n      if (state.allowMultilineArgument) {\n\n        // STRING\n        if (state.inMultilineString) {\n          if (stream.match('\"\"\"')) {\n            state.inMultilineString = false;\n            state.allowMultilineArgument = false;\n          } else {\n            stream.match(/.*/);\n          }\n          return \"string\";\n        }\n\n        // TABLE\n        if (state.inMultilineTable) {\n          if (stream.match(/\\|\\s*/)) {\n            return \"bracket\";\n          } else {\n            stream.match(/[^\\|]*/);\n            return state.tableHeaderLine ? \"header\" : \"string\";\n          }\n        }\n\n        // DETECT START\n        if (stream.match('\"\"\"')) {\n          // String\n          state.inMultilineString = true;\n          return \"string\";\n        } else if (stream.match(\"|\")) {\n          // Table\n          state.inMultilineTable = true;\n          state.tableHeaderLine = true;\n          return \"bracket\";\n        }\n\n      }\n\n      // LINE COMMENT\n      if (stream.match(/#.*/)) {\n        return \"comment\";\n\n      // TAG\n      } else if (!state.inKeywordLine && stream.match(/@\\S+/)) {\n        return \"tag\";\n\n      // FEATURE\n      } else if (!state.inKeywordLine && state.allowFeature && stream.match(/(機能|功能|フィーチャ|기능|โครงหลัก|ความสามารถ|ความต้องการทางธุรกิจ|ಹೆಚ್ಚಳ|గుణము|ਮੁਹਾਂਦਰਾ|ਨਕਸ਼ ਨੁਹਾਰ|ਖਾਸੀਅਤ|रूप लेख|وِیژگی|خاصية|תכונה|Функціонал|Функция|Функционалност|Функционал|Үзенчәлеклелек|Свойство|Особина|Мөмкинлек|Могућност|Λειτουργία|Δυνατότητα|Właściwość|Vlastnosť|Trajto|Tính năng|Savybė|Pretty much|Požiadavka|Požadavek|Potrzeba biznesowa|Özellik|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Hwæt|Hwaet|Funzionalità|Funktionalitéit|Funktionalität|Funkcja|Funkcionalnost|Funkcionalitāte|Funkcia|Fungsi|Functionaliteit|Funcționalitate|Funcţionalitate|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Fīča|Feature|Eiginleiki|Egenskap|Egenskab|Característica|Caracteristica|Business Need|Aspekt|Arwedd|Ahoy matey!|Ability):/)) {\n        state.allowScenario = true;\n        state.allowBackground = true;\n        state.allowPlaceholders = false;\n        state.allowSteps = false;\n        state.allowMultilineArgument = false;\n        state.inKeywordLine = true;\n        return \"keyword\";\n\n      // BACKGROUND\n      } else if (!state.inKeywordLine && state.allowBackground && stream.match(/(背景|배경|แนวคิด|ಹಿನ್ನೆಲೆ|నేపథ్యం|ਪਿਛੋਕੜ|पृष्ठभूमि|زمینه|الخلفية|רקע|Тарих|Предыстория|Предистория|Позадина|Передумова|Основа|Контекст|Кереш|Υπόβαθρο|Założenia|Yo\\-ho\\-ho|Tausta|Taust|Situācija|Rerefons|Pozadina|Pozadie|Pozadí|Osnova|Latar Belakang|Kontext|Konteksts|Kontekstas|Kontekst|Háttér|Hannergrond|Grundlage|Geçmiş|Fundo|Fono|First off|Dis is what went down|Dasar|Contexto|Contexte|Context|Contesto|Cenário de Fundo|Cenario de Fundo|Cefndir|Bối cảnh|Bakgrunnur|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|Ær|Aer|Achtergrond):/)) {\n        state.allowPlaceholders = false;\n        state.allowSteps = true;\n        state.allowBackground = false;\n        state.allowMultilineArgument = false;\n        state.inKeywordLine = true;\n        return \"keyword\";\n\n      // SCENARIO OUTLINE\n      } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景大綱|场景大纲|劇本大綱|剧本大纲|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|시나리오 개요|สรุปเหตุการณ์|โครงสร้างของเหตุการณ์|ವಿವರಣೆ|కథనం|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਟਕਥਾ ਢਾਂਚਾ|परिदृश्य रूपरेखा|سيناريو مخطط|الگوی سناریو|תבנית תרחיש|Сценарийның төзелеше|Сценарий структураси|Структура сценарію|Структура сценария|Структура сценарија|Скица|Рамка на сценарий|Концепт|Περιγραφή Σεναρίου|Wharrimean is|Template Situai|Template Senario|Template Keadaan|Tapausaihio|Szenariogrundriss|Szablon scenariusza|Swa hwær swa|Swa hwaer swa|Struktura scenarija|Structură scenariu|Structura scenariu|Skica|Skenario konsep|Shiver me timbers|Senaryo taslağı|Schema dello scenario|Scenariomall|Scenariomal|Scenario Template|Scenario Outline|Scenario Amlinellol|Scenārijs pēc parauga|Scenarijaus šablonas|Reckon it's like|Raamstsenaarium|Plang vum Szenario|Plan du Scénario|Plan du scénario|Osnova scénáře|Osnova Scenára|Náčrt Scenáru|Náčrt Scénáře|Náčrt Scenára|MISHUN SRSLY|Menggariskan Senario|Lýsing Dæma|Lýsing Atburðarásar|Konturo de la scenaro|Koncept|Khung tình huống|Khung kịch bản|Forgatókönyv vázlat|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esbozo do escenario|Delineação do Cenário|Delineacao do Cenario|All y'all|Abstrakt Scenario|Abstract Scenario):/)) {\n        state.allowPlaceholders = true;\n        state.allowSteps = true;\n        state.allowMultilineArgument = false;\n        state.inKeywordLine = true;\n        return \"keyword\";\n\n      // EXAMPLES\n      } else if (state.allowScenario && stream.match(/(例子|例|サンプル|예|ชุดของเหตุการณ์|ชุดของตัวอย่าง|ಉದಾಹರಣೆಗಳು|ఉదాహరణలు|ਉਦਾਹਰਨਾਂ|उदाहरण|نمونه ها|امثلة|דוגמאות|Үрнәкләр|Сценарији|Примеры|Примери|Приклади|Мисоллар|Мисаллар|Σενάρια|Παραδείγματα|You'll wanna|Voorbeelden|Variantai|Tapaukset|Se þe|Se the|Se ðe|Scenarios|Scenariji|Scenarijai|Przykłady|Primjeri|Primeri|Příklady|Príklady|Piemēri|Példák|Pavyzdžiai|Paraugs|Örnekler|Juhtumid|Exemplos|Exemples|Exemple|Exempel|EXAMPLZ|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|Dữ liệu|Dead men tell no tales|Dæmi|Contoh|Cenários|Cenarios|Beispiller|Beispiele|Atburðarásir):/)) {\n        state.allowPlaceholders = false;\n        state.allowSteps = true;\n        state.allowBackground = false;\n        state.allowMultilineArgument = true;\n        return \"keyword\";\n\n      // SCENARIO\n      } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景|场景|劇本|剧本|シナリオ|시나리오|เหตุการณ์|ಕಥಾಸಾರಾಂಶ|సన్నివేశం|ਪਟਕਥਾ|परिदृश्य|سيناريو|سناریو|תרחיש|Сценарій|Сценарио|Сценарий|Пример|Σενάριο|Tình huống|The thing of it is|Tapaus|Szenario|Swa|Stsenaarium|Skenario|Situai|Senaryo|Senario|Scenaro|Scenariusz|Scenariu|Scénario|Scenario|Scenarijus|Scenārijs|Scenarij|Scenarie|Scénář|Scenár|Primer|MISHUN|Kịch bản|Keadaan|Heave to|Forgatókönyv|Escenario|Escenari|Cenário|Cenario|Awww, look mate|Atburðarás):/)) {\n        state.allowPlaceholders = false;\n        state.allowSteps = true;\n        state.allowBackground = false;\n        state.allowMultilineArgument = false;\n        state.inKeywordLine = true;\n        return \"keyword\";\n\n      // STEPS\n      } else if (!state.inKeywordLine && state.allowSteps && stream.match(/(那麼|那么|而且|當|当|并且|同時|同时|前提|假设|假設|假定|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|하지만|조건|먼저|만일|만약|단|그리고|그러면|และ |เมื่อ |แต่ |ดังนั้น |กำหนดให้ |ಸ್ಥಿತಿಯನ್ನು |ಮತ್ತು |ನೀಡಿದ |ನಂತರ |ಆದರೆ |మరియు |చెప్పబడినది |కాని |ఈ పరిస్థితిలో |అప్పుడు |ਪਰ |ਤਦ |ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |ਜਦੋਂ |ਅਤੇ |यदि |परन्तु |पर |तब |तदा |तथा |जब |चूंकि |किन्तु |कदा |और |अगर |و |هنگامی |متى |لكن |عندما |ثم |بفرض |با فرض |اما |اذاً |آنگاه |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Һәм |Унда |Тоді |Тогда |То |Также |Та |Пусть |Припустимо, що |Припустимо |Онда |Но |Нехай |Нәтиҗәдә |Лекин |Ләкин |Коли |Когда |Когато |Када |Кад |К тому же |І |И |Задато |Задати |Задате |Если |Допустим |Дано |Дадено |Вә |Ва |Бирок |Әмма |Әйтик |Әгәр |Аммо |Али |Але |Агар |А також |А |Τότε |Όταν |Και |Δεδομένου |Αλλά |Þurh |Þegar |Þa þe |Þá |Þa |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Za předpokladu |Za predpokladu |Youse know when youse got |Youse know like when |Yna |Yeah nah |Y'know |Y |Wun |Wtedy |When y'all |When |Wenn |WEN |wann |Ve |Và |Und |Un |ugeholl |Too right |Thurh |Thì |Then y'all |Then |Tha the |Tha |Tetapi |Tapi |Tak |Tada |Tad |Stel |Soit |Siis |Și |Şi |Si |Sed |Se |Så |Quando |Quand |Quan |Pryd |Potom |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Niin |Nhưng |När |Når |Mutta |Men |Mas |Maka |Majd |Mając |Mais |Maar |mä |Ma |Lorsque |Lorsqu'|Logo |Let go and haul |Kun |Kuid |Kui |Kiedy |Khi |Ketika |Kemudian |Keď |Když |Kaj |Kai |Kada |Kad |Jeżeli |Jeśli |Ja |It's just unbelievable |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y'all |Given |Gitt |Gegeven |Gegeben seien |Gegeben sei |Gdy |Gangway! |Fakat |Étant donnés |Etant donnés |Étant données |Etant données |Étant donnée |Etant donnée |Étant donné |Etant donné |Et |És |Entonces |Entón |Então |Entao |En |Eğer ki |Ef |Eeldades |E |Ðurh |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Diberi |Dengan |Den youse gotta |DEN |De |Dato |Dați fiind |Daţi fiind |Dati fiind |Dati |Date fiind |Date |Data |Dat fiind |Dar |Dann |dann |Dan |Dados |Dado |Dadas |Dada |Ða ðe |Ða |Cuando |Cho |Cando |Când |Cand |Cal |But y'all |But at the end of the day I reckon |BUT |But |Buh |Blimey! |Biết |Bet |Bagi |Aye |awer |Avast! |Atunci |Atesa |Atès |Apabila |Anrhegedig a |Angenommen |And y'all |And |AN |An |an |Amikor |Amennyiben |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Ak |Adott |Ac |Aber |A zároveň |A tiež |A taktiež |A také |A |a |7 |\\* )/)) {\n        state.inStep = true;\n        state.allowPlaceholders = true;\n        state.allowMultilineArgument = true;\n        state.inKeywordLine = true;\n        return \"keyword\";\n\n      // INLINE STRING\n      } else if (stream.match(/\"[^\"]*\"?/)) {\n        return \"string\";\n\n      // PLACEHOLDER\n      } else if (state.allowPlaceholders && stream.match(/<[^>]*>?/)) {\n        return \"variable\";\n\n      // Fall through\n      } else {\n        stream.next();\n        stream.eatWhile(/[^@\"<#]/);\n        return null;\n      }\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-feature\", \"gherkin\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/gherkin/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Gherkin mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"gherkin.js\"></script>\n<style>.CodeMirror { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; }</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Gherkin</a>\n  </ul>\n</div>\n\n<article>\n<h2>Gherkin mode</h2>\n<form><textarea id=\"code\" name=\"code\">\nFeature: Using Google\n  Background: \n    Something something\n    Something else\n  Scenario: Has a homepage\n    When I navigate to the google home page\n    Then the home page should contain the menu and the search form\n  Scenario: Searching for a term \n    When I navigate to the google home page\n    When I search for Tofu\n    Then the search results page is displayed\n    Then the search results page contains 10 individual search results\n    Then the search results contain a link to the wikipedia tofu page\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {});\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-feature</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/go/go.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"go\", function(config) {\n  var indentUnit = config.indentUnit;\n\n  var keywords = {\n    \"break\":true, \"case\":true, \"chan\":true, \"const\":true, \"continue\":true,\n    \"default\":true, \"defer\":true, \"else\":true, \"fallthrough\":true, \"for\":true,\n    \"func\":true, \"go\":true, \"goto\":true, \"if\":true, \"import\":true,\n    \"interface\":true, \"map\":true, \"package\":true, \"range\":true, \"return\":true,\n    \"select\":true, \"struct\":true, \"switch\":true, \"type\":true, \"var\":true,\n    \"bool\":true, \"byte\":true, \"complex64\":true, \"complex128\":true,\n    \"float32\":true, \"float64\":true, \"int8\":true, \"int16\":true, \"int32\":true,\n    \"int64\":true, \"string\":true, \"uint8\":true, \"uint16\":true, \"uint32\":true,\n    \"uint64\":true, \"int\":true, \"uint\":true, \"uintptr\":true\n  };\n\n  var atoms = {\n    \"true\":true, \"false\":true, \"iota\":true, \"nil\":true, \"append\":true,\n    \"cap\":true, \"close\":true, \"complex\":true, \"copy\":true, \"imag\":true,\n    \"len\":true, \"make\":true, \"new\":true, \"panic\":true, \"print\":true,\n    \"println\":true, \"real\":true, \"recover\":true\n  };\n\n  var isOperatorChar = /[+\\-*&^%:=<>!|\\/]/;\n\n  var curPunc;\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    if (ch == '\"' || ch == \"'\" || ch == \"`\") {\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    }\n    if (/[\\d\\.]/.test(ch)) {\n      if (ch == \".\") {\n        stream.match(/^[0-9]+([eE][\\-+]?[0-9]+)?/);\n      } else if (ch == \"0\") {\n        stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/);\n      } else {\n        stream.match(/^[0-9]*\\.?[0-9]*([eE][\\-+]?[0-9]+)?/);\n      }\n      return \"number\";\n    }\n    if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n      curPunc = ch;\n      return null;\n    }\n    if (ch == \"/\") {\n      if (stream.eat(\"*\")) {\n        state.tokenize = tokenComment;\n        return tokenComment(stream, state);\n      }\n      if (stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n    }\n    if (isOperatorChar.test(ch)) {\n      stream.eatWhile(isOperatorChar);\n      return \"operator\";\n    }\n    stream.eatWhile(/[\\w\\$_\\xa1-\\uffff]/);\n    var cur = stream.current();\n    if (keywords.propertyIsEnumerable(cur)) {\n      if (cur == \"case\" || cur == \"default\") curPunc = \"case\";\n      return \"keyword\";\n    }\n    if (atoms.propertyIsEnumerable(cur)) return \"atom\";\n    return \"variable\";\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, next, end = false;\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) {end = true; break;}\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (end || !(escaped || quote == \"`\"))\n        state.tokenize = tokenBase;\n      return \"string\";\n    };\n  }\n\n  function tokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return \"comment\";\n  }\n\n  function Context(indented, column, type, align, prev) {\n    this.indented = indented;\n    this.column = column;\n    this.type = type;\n    this.align = align;\n    this.prev = prev;\n  }\n  function pushContext(state, col, type) {\n    return state.context = new Context(state.indented, col, type, null, state.context);\n  }\n  function popContext(state) {\n    if (!state.context.prev) return;\n    var t = state.context.type;\n    if (t == \")\" || t == \"]\" || t == \"}\")\n      state.indented = state.context.indented;\n    return state.context = state.context.prev;\n  }\n\n  // Interface\n\n  return {\n    startState: function(basecolumn) {\n      return {\n        tokenize: null,\n        context: new Context((basecolumn || 0) - indentUnit, 0, \"top\", false),\n        indented: 0,\n        startOfLine: true\n      };\n    },\n\n    token: function(stream, state) {\n      var ctx = state.context;\n      if (stream.sol()) {\n        if (ctx.align == null) ctx.align = false;\n        state.indented = stream.indentation();\n        state.startOfLine = true;\n        if (ctx.type == \"case\") ctx.type = \"}\";\n      }\n      if (stream.eatSpace()) return null;\n      curPunc = null;\n      var style = (state.tokenize || tokenBase)(stream, state);\n      if (style == \"comment\") return style;\n      if (ctx.align == null) ctx.align = true;\n\n      if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n      else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n      else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n      else if (curPunc == \"case\") ctx.type = \"case\";\n      else if (curPunc == \"}\" && ctx.type == \"}\") ctx = popContext(state);\n      else if (curPunc == ctx.type) popContext(state);\n      state.startOfLine = false;\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize != tokenBase && state.tokenize != null) return 0;\n      var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);\n      if (ctx.type == \"case\" && /^(?:case|default)\\b/.test(textAfter)) {\n        state.context.type = \"}\";\n        return ctx.indented;\n      }\n      var closing = firstChar == ctx.type;\n      if (ctx.align) return ctx.column + (closing ? 0 : 1);\n      else return ctx.indented + (closing ? 0 : indentUnit);\n    },\n\n    electricChars: \"{}):\",\n    fold: \"brace\",\n    blockCommentStart: \"/*\",\n    blockCommentEnd: \"*/\",\n    lineComment: \"//\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-go\", \"go\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/go/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Go mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../theme/elegant.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"go.js\"></script>\n<style>.CodeMirror {border:1px solid #999; background:#ffc}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Go</a>\n  </ul>\n</div>\n\n<article>\n<h2>Go mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n// Prime Sieve in Go.\n// Taken from the Go specification.\n// Copyright © The Go Authors.\n\npackage main\n\nimport \"fmt\"\n\n// Send the sequence 2, 3, 4, ... to channel 'ch'.\nfunc generate(ch chan&lt;- int) {\n\tfor i := 2; ; i++ {\n\t\tch &lt;- i  // Send 'i' to channel 'ch'\n\t}\n}\n\n// Copy the values from channel 'src' to channel 'dst',\n// removing those divisible by 'prime'.\nfunc filter(src &lt;-chan int, dst chan&lt;- int, prime int) {\n\tfor i := range src {    // Loop over values received from 'src'.\n\t\tif i%prime != 0 {\n\t\t\tdst &lt;- i  // Send 'i' to channel 'dst'.\n\t\t}\n\t}\n}\n\n// The prime sieve: Daisy-chain filter processes together.\nfunc sieve() {\n\tch := make(chan int)  // Create a new channel.\n\tgo generate(ch)       // Start generate() as a subprocess.\n\tfor {\n\t\tprime := &lt;-ch\n\t\tfmt.Print(prime, \"\\n\")\n\t\tch1 := make(chan int)\n\t\tgo filter(ch, ch1, prime)\n\t\tch = ch1\n\t}\n}\n\nfunc main() {\n\tsieve()\n}\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        theme: \"elegant\",\n        matchBrackets: true,\n        indentUnit: 8,\n        tabSize: 8,\n        indentWithTabs: true,\n        mode: \"text/x-go\"\n      });\n    </script>\n\n    <p><strong>MIME type:</strong> <code>text/x-go</code></p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/groovy/groovy.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"groovy\", function(config) {\n  function words(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n  var keywords = words(\n    \"abstract as assert boolean break byte case catch char class const continue def default \" +\n    \"do double else enum extends final finally float for goto if implements import in \" +\n    \"instanceof int interface long native new package private protected public return \" +\n    \"short static strictfp super switch synchronized threadsafe throw throws transient \" +\n    \"try void volatile while\");\n  var blockKeywords = words(\"catch class do else finally for if switch try while enum interface def\");\n  var atoms = words(\"null true false this\");\n\n  var curPunc;\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    if (ch == '\"' || ch == \"'\") {\n      return startString(ch, stream, state);\n    }\n    if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n      curPunc = ch;\n      return null;\n    }\n    if (/\\d/.test(ch)) {\n      stream.eatWhile(/[\\w\\.]/);\n      if (stream.eat(/eE/)) { stream.eat(/\\+\\-/); stream.eatWhile(/\\d/); }\n      return \"number\";\n    }\n    if (ch == \"/\") {\n      if (stream.eat(\"*\")) {\n        state.tokenize.push(tokenComment);\n        return tokenComment(stream, state);\n      }\n      if (stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n      if (expectExpression(state.lastToken)) {\n        return startString(ch, stream, state);\n      }\n    }\n    if (ch == \"-\" && stream.eat(\">\")) {\n      curPunc = \"->\";\n      return null;\n    }\n    if (/[+\\-*&%=<>!?|\\/~]/.test(ch)) {\n      stream.eatWhile(/[+\\-*&%=<>|~]/);\n      return \"operator\";\n    }\n    stream.eatWhile(/[\\w\\$_]/);\n    if (ch == \"@\") { stream.eatWhile(/[\\w\\$_\\.]/); return \"meta\"; }\n    if (state.lastToken == \".\") return \"property\";\n    if (stream.eat(\":\")) { curPunc = \"proplabel\"; return \"property\"; }\n    var cur = stream.current();\n    if (atoms.propertyIsEnumerable(cur)) { return \"atom\"; }\n    if (keywords.propertyIsEnumerable(cur)) {\n      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n      return \"keyword\";\n    }\n    return \"variable\";\n  }\n  tokenBase.isBase = true;\n\n  function startString(quote, stream, state) {\n    var tripleQuoted = false;\n    if (quote != \"/\" && stream.eat(quote)) {\n      if (stream.eat(quote)) tripleQuoted = true;\n      else return \"string\";\n    }\n    function t(stream, state) {\n      var escaped = false, next, end = !tripleQuoted;\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) {\n          if (!tripleQuoted) { break; }\n          if (stream.match(quote + quote)) { end = true; break; }\n        }\n        if (quote == '\"' && next == \"$\" && !escaped && stream.eat(\"{\")) {\n          state.tokenize.push(tokenBaseUntilBrace());\n          return \"string\";\n        }\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (end) state.tokenize.pop();\n      return \"string\";\n    }\n    state.tokenize.push(t);\n    return t(stream, state);\n  }\n\n  function tokenBaseUntilBrace() {\n    var depth = 1;\n    function t(stream, state) {\n      if (stream.peek() == \"}\") {\n        depth--;\n        if (depth == 0) {\n          state.tokenize.pop();\n          return state.tokenize[state.tokenize.length-1](stream, state);\n        }\n      } else if (stream.peek() == \"{\") {\n        depth++;\n      }\n      return tokenBase(stream, state);\n    }\n    t.isBase = true;\n    return t;\n  }\n\n  function tokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize.pop();\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return \"comment\";\n  }\n\n  function expectExpression(last) {\n    return !last || last == \"operator\" || last == \"->\" || /[\\.\\[\\{\\(,;:]/.test(last) ||\n      last == \"newstatement\" || last == \"keyword\" || last == \"proplabel\";\n  }\n\n  function Context(indented, column, type, align, prev) {\n    this.indented = indented;\n    this.column = column;\n    this.type = type;\n    this.align = align;\n    this.prev = prev;\n  }\n  function pushContext(state, col, type) {\n    return state.context = new Context(state.indented, col, type, null, state.context);\n  }\n  function popContext(state) {\n    var t = state.context.type;\n    if (t == \")\" || t == \"]\" || t == \"}\")\n      state.indented = state.context.indented;\n    return state.context = state.context.prev;\n  }\n\n  // Interface\n\n  return {\n    startState: function(basecolumn) {\n      return {\n        tokenize: [tokenBase],\n        context: new Context((basecolumn || 0) - config.indentUnit, 0, \"top\", false),\n        indented: 0,\n        startOfLine: true,\n        lastToken: null\n      };\n    },\n\n    token: function(stream, state) {\n      var ctx = state.context;\n      if (stream.sol()) {\n        if (ctx.align == null) ctx.align = false;\n        state.indented = stream.indentation();\n        state.startOfLine = true;\n        // Automatic semicolon insertion\n        if (ctx.type == \"statement\" && !expectExpression(state.lastToken)) {\n          popContext(state); ctx = state.context;\n        }\n      }\n      if (stream.eatSpace()) return null;\n      curPunc = null;\n      var style = state.tokenize[state.tokenize.length-1](stream, state);\n      if (style == \"comment\") return style;\n      if (ctx.align == null) ctx.align = true;\n\n      if ((curPunc == \";\" || curPunc == \":\") && ctx.type == \"statement\") popContext(state);\n      // Handle indentation for {x -> \\n ... }\n      else if (curPunc == \"->\" && ctx.type == \"statement\" && ctx.prev.type == \"}\") {\n        popContext(state);\n        state.context.align = false;\n      }\n      else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n      else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n      else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n      else if (curPunc == \"}\") {\n        while (ctx.type == \"statement\") ctx = popContext(state);\n        if (ctx.type == \"}\") ctx = popContext(state);\n        while (ctx.type == \"statement\") ctx = popContext(state);\n      }\n      else if (curPunc == ctx.type) popContext(state);\n      else if (ctx.type == \"}\" || ctx.type == \"top\" || (ctx.type == \"statement\" && curPunc == \"newstatement\"))\n        pushContext(state, stream.column(), \"statement\");\n      state.startOfLine = false;\n      state.lastToken = curPunc || style;\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (!state.tokenize[state.tokenize.length-1].isBase) return 0;\n      var firstChar = textAfter && textAfter.charAt(0), ctx = state.context;\n      if (ctx.type == \"statement\" && !expectExpression(state.lastToken)) ctx = ctx.prev;\n      var closing = firstChar == ctx.type;\n      if (ctx.type == \"statement\") return ctx.indented + (firstChar == \"{\" ? 0 : config.indentUnit);\n      else if (ctx.align) return ctx.column + (closing ? 0 : 1);\n      else return ctx.indented + (closing ? 0 : config.indentUnit);\n    },\n\n    electricChars: \"{}\",\n    fold: \"brace\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-groovy\", \"groovy\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/groovy/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Groovy mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"groovy.js\"></script>\n<style>.CodeMirror {border-top: 1px solid #500; border-bottom: 1px solid #500;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Groovy</a>\n  </ul>\n</div>\n\n<article>\n<h2>Groovy mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n//Pattern for groovy script\ndef p = ~/.*\\.groovy/\nnew File( 'd:\\\\scripts' ).eachFileMatch(p) {f ->\n  // imports list\n  def imports = []\n  f.eachLine {\n    // condition to detect an import instruction\n    ln -> if ( ln =~ '^import .*' ) {\n      imports << \"${ln - 'import '}\"\n    }\n  }\n  // print thmen\n  if ( ! imports.empty ) {\n    println f\n    imports.each{ println \"   $it\" }\n  }\n}\n\n/* Coin changer demo code from http://groovy.codehaus.org */\n\nenum UsCoin {\n  quarter(25), dime(10), nickel(5), penny(1)\n  UsCoin(v) { value = v }\n  final value\n}\n\nenum OzzieCoin {\n  fifty(50), twenty(20), ten(10), five(5)\n  OzzieCoin(v) { value = v }\n  final value\n}\n\ndef plural(word, count) {\n  if (count == 1) return word\n  word[-1] == 'y' ? word[0..-2] + \"ies\" : word + \"s\"\n}\n\ndef change(currency, amount) {\n  currency.values().inject([]){ list, coin ->\n     int count = amount / coin.value\n     amount = amount % coin.value\n     list += \"$count ${plural(coin.toString(), count)}\"\n  }\n}\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"text/x-groovy\"\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-groovy</code></p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/haml/haml.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../htmlmixed/htmlmixed\"), require(\"../ruby/ruby\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../htmlmixed/htmlmixed\", \"../ruby/ruby\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n  // full haml mode. This handled embeded ruby and html fragments too\n  CodeMirror.defineMode(\"haml\", function(config) {\n    var htmlMode = CodeMirror.getMode(config, {name: \"htmlmixed\"});\n    var rubyMode = CodeMirror.getMode(config, \"ruby\");\n\n    function rubyInQuote(endQuote) {\n      return function(stream, state) {\n        var ch = stream.peek();\n        if (ch == endQuote && state.rubyState.tokenize.length == 1) {\n          // step out of ruby context as it seems to complete processing all the braces\n          stream.next();\n          state.tokenize = html;\n          return \"closeAttributeTag\";\n        } else {\n          return ruby(stream, state);\n        }\n      };\n    }\n\n    function ruby(stream, state) {\n      if (stream.match(\"-#\")) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n      return rubyMode.token(stream, state.rubyState);\n    }\n\n    function html(stream, state) {\n      var ch = stream.peek();\n\n      // handle haml declarations. All declarations that cant be handled here\n      // will be passed to html mode\n      if (state.previousToken.style == \"comment\" ) {\n        if (state.indented > state.previousToken.indented) {\n          stream.skipToEnd();\n          return \"commentLine\";\n        }\n      }\n\n      if (state.startOfLine) {\n        if (ch == \"!\" && stream.match(\"!!\")) {\n          stream.skipToEnd();\n          return \"tag\";\n        } else if (stream.match(/^%[\\w:#\\.]+=/)) {\n          state.tokenize = ruby;\n          return \"hamlTag\";\n        } else if (stream.match(/^%[\\w:]+/)) {\n          return \"hamlTag\";\n        } else if (ch == \"/\" ) {\n          stream.skipToEnd();\n          return \"comment\";\n        }\n      }\n\n      if (state.startOfLine || state.previousToken.style == \"hamlTag\") {\n        if ( ch == \"#\" || ch == \".\") {\n          stream.match(/[\\w-#\\.]*/);\n          return \"hamlAttribute\";\n        }\n      }\n\n      // donot handle --> as valid ruby, make it HTML close comment instead\n      if (state.startOfLine && !stream.match(\"-->\", false) && (ch == \"=\" || ch == \"-\" )) {\n        state.tokenize = ruby;\n        return state.tokenize(stream, state);\n      }\n\n      if (state.previousToken.style == \"hamlTag\" ||\n          state.previousToken.style == \"closeAttributeTag\" ||\n          state.previousToken.style == \"hamlAttribute\") {\n        if (ch == \"(\") {\n          state.tokenize = rubyInQuote(\")\");\n          return state.tokenize(stream, state);\n        } else if (ch == \"{\") {\n          state.tokenize = rubyInQuote(\"}\");\n          return state.tokenize(stream, state);\n        }\n      }\n\n      return htmlMode.token(stream, state.htmlState);\n    }\n\n    return {\n      // default to html mode\n      startState: function() {\n        var htmlState = htmlMode.startState();\n        var rubyState = rubyMode.startState();\n        return {\n          htmlState: htmlState,\n          rubyState: rubyState,\n          indented: 0,\n          previousToken: { style: null, indented: 0},\n          tokenize: html\n        };\n      },\n\n      copyState: function(state) {\n        return {\n          htmlState : CodeMirror.copyState(htmlMode, state.htmlState),\n          rubyState: CodeMirror.copyState(rubyMode, state.rubyState),\n          indented: state.indented,\n          previousToken: state.previousToken,\n          tokenize: state.tokenize\n        };\n      },\n\n      token: function(stream, state) {\n        if (stream.sol()) {\n          state.indented = stream.indentation();\n          state.startOfLine = true;\n        }\n        if (stream.eatSpace()) return null;\n        var style = state.tokenize(stream, state);\n        state.startOfLine = false;\n        // dont record comment line as we only want to measure comment line with\n        // the opening comment block\n        if (style && style != \"commentLine\") {\n          state.previousToken = { style: style, indented: state.indented };\n        }\n        // if current state is ruby and the previous token is not `,` reset the\n        // tokenize to html\n        if (stream.eol() && state.tokenize == ruby) {\n          stream.backUp(1);\n          var ch = stream.peek();\n          stream.next();\n          if (ch && ch != \",\") {\n            state.tokenize = html;\n          }\n        }\n        // reprocess some of the specific style tag when finish setting previousToken\n        if (style == \"hamlTag\") {\n          style = \"tag\";\n        } else if (style == \"commentLine\") {\n          style = \"comment\";\n        } else if (style == \"hamlAttribute\") {\n          style = \"attribute\";\n        } else if (style == \"closeAttributeTag\") {\n          style = null;\n        }\n        return style;\n      }\n    };\n  }, \"htmlmixed\", \"ruby\");\n\n  CodeMirror.defineMIME(\"text/x-haml\", \"haml\");\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/haml/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: HAML mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../xml/xml.js\"></script>\n<script src=\"../htmlmixed/htmlmixed.js\"></script>\n<script src=\"../javascript/javascript.js\"></script>\n<script src=\"../ruby/ruby.js\"></script>\n<script src=\"haml.js\"></script>\n<style>.CodeMirror {background: #f8f8f8;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">HAML</a>\n  </ul>\n</div>\n\n<article>\n<h2>HAML mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n!!!\n#content\n.left.column(title=\"title\"){:href => \"/hello\", :test => \"#{hello}_#{world}\"}\n    <!-- This is a comment -->\n    %h2 Welcome to our site!\n    %p= puts \"HAML MODE\"\n  .right.column\n    = render :partial => \"sidebar\"\n\n.container\n  .row\n    .span8\n      %h1.title= @page_title\n%p.title= @page_title\n%p\n  /\n    The same as HTML comment\n    Hello multiline comment\n\n  -# haml comment\n      This wont be displayed\n      nor will this\n  Date/Time:\n  - now = DateTime.now\n  %strong= now\n  - if now > DateTime.parse(\"December 31, 2006\")\n    = \"Happy new \" + \"year!\"\n\n%title\n  = @title\n  \\= @title\n  <h1>Title</h1>\n  <h1 title=\"HELLO\">\n    Title\n  </h1>\n    </textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        mode: \"text/x-haml\"\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-haml</code>.</p>\n\n    <p><strong>Parsing/Highlighting Tests:</strong> <a href=\"../../test/index.html#haml_*\">normal</a>,  <a href=\"../../test/index.html#verbose,haml_*\">verbose</a>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/haml/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, \"haml\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }\n\n  // Requires at least one media query\n  MT(\"elementName\",\n     \"[tag %h1] Hey There\");\n\n  MT(\"oneElementPerLine\",\n     \"[tag %h1] Hey There %h2\");\n\n  MT(\"idSelector\",\n     \"[tag %h1][attribute #test] Hey There\");\n\n  MT(\"classSelector\",\n     \"[tag %h1][attribute .hello] Hey There\");\n\n  MT(\"docType\",\n     \"[tag !!! XML]\");\n\n  MT(\"comment\",\n     \"[comment / Hello WORLD]\");\n\n  MT(\"notComment\",\n     \"[tag %h1] This is not a / comment \");\n\n  MT(\"attributes\",\n     \"[tag %a]([variable title][operator =][string \\\"test\\\"]){[atom :title] [operator =>] [string \\\"test\\\"]}\");\n\n  MT(\"htmlCode\",\n     \"[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket </][tag h1][tag&bracket >]\");\n\n  MT(\"rubyBlock\",\n     \"[operator =][variable-2 @item]\");\n\n  MT(\"selectorRubyBlock\",\n     \"[tag %a.selector=] [variable-2 @item]\");\n\n  MT(\"nestedRubyBlock\",\n      \"[tag %a]\",\n      \"   [operator =][variable puts] [string \\\"test\\\"]\");\n\n  MT(\"multilinePlaintext\",\n      \"[tag %p]\",\n      \"  Hello,\",\n      \"  World\");\n\n  MT(\"multilineRuby\",\n      \"[tag %p]\",\n      \"  [comment -# this is a comment]\",\n      \"     [comment and this is a comment too]\",\n      \"  Date/Time\",\n      \"  [operator -] [variable now] [operator =] [tag DateTime][operator .][property now]\",\n      \"  [tag %strong=] [variable now]\",\n      \"  [operator -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \\\"December 31, 2006\\\"])\",\n      \"     [operator =][string \\\"Happy\\\"]\",\n      \"     [operator =][string \\\"Belated\\\"]\",\n      \"     [operator =][string \\\"Birthday\\\"]\");\n\n  MT(\"multilineComment\",\n      \"[comment /]\",\n      \"  [comment Multiline]\",\n      \"  [comment Comment]\");\n\n  MT(\"hamlComment\",\n     \"[comment -# this is a comment]\");\n\n  MT(\"multilineHamlComment\",\n     \"[comment -# this is a comment]\",\n     \"   [comment and this is a comment too]\");\n\n  MT(\"multilineHTMLComment\",\n    \"[comment <!--]\",\n    \"  [comment what a comment]\",\n    \"  [comment -->]\");\n\n  MT(\"hamlAfterRubyTag\",\n    \"[attribute .block]\",\n    \"  [tag %strong=] [variable now]\",\n    \"  [attribute .test]\",\n    \"     [operator =][variable now]\",\n    \"  [attribute .right]\");\n\n  MT(\"stretchedRuby\",\n     \"[operator =] [variable puts] [string \\\"Hello\\\"],\",\n     \"   [string \\\"World\\\"]\");\n\n  MT(\"interpolationInHashAttribute\",\n     //\"[tag %div]{[atom :id] [operator =>] [string \\\"#{][variable test][string }_#{][variable ting][string }\\\"]} test\");\n     \"[tag %div]{[atom :id] [operator =>] [string \\\"#{][variable test][string }_#{][variable ting][string }\\\"]} test\");\n\n  MT(\"interpolationInHTMLAttribute\",\n     \"[tag %div]([variable title][operator =][string \\\"#{][variable test][string }_#{][variable ting]()[string }\\\"]) Test\");\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/haskell/haskell.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"haskell\", function(_config, modeConfig) {\n\n  function switchState(source, setState, f) {\n    setState(f);\n    return f(source, setState);\n  }\n\n  // These should all be Unicode extended, as per the Haskell 2010 report\n  var smallRE = /[a-z_]/;\n  var largeRE = /[A-Z]/;\n  var digitRE = /\\d/;\n  var hexitRE = /[0-9A-Fa-f]/;\n  var octitRE = /[0-7]/;\n  var idRE = /[a-z_A-Z0-9'\\xa1-\\uffff]/;\n  var symbolRE = /[-!#$%&*+.\\/<=>?@\\\\^|~:]/;\n  var specialRE = /[(),;[\\]`{}]/;\n  var whiteCharRE = /[ \\t\\v\\f]/; // newlines are handled in tokenizer\n\n  function normal(source, setState) {\n    if (source.eatWhile(whiteCharRE)) {\n      return null;\n    }\n\n    var ch = source.next();\n    if (specialRE.test(ch)) {\n      if (ch == '{' && source.eat('-')) {\n        var t = \"comment\";\n        if (source.eat('#')) {\n          t = \"meta\";\n        }\n        return switchState(source, setState, ncomment(t, 1));\n      }\n      return null;\n    }\n\n    if (ch == '\\'') {\n      if (source.eat('\\\\')) {\n        source.next();  // should handle other escapes here\n      }\n      else {\n        source.next();\n      }\n      if (source.eat('\\'')) {\n        return \"string\";\n      }\n      return \"error\";\n    }\n\n    if (ch == '\"') {\n      return switchState(source, setState, stringLiteral);\n    }\n\n    if (largeRE.test(ch)) {\n      source.eatWhile(idRE);\n      if (source.eat('.')) {\n        return \"qualifier\";\n      }\n      return \"variable-2\";\n    }\n\n    if (smallRE.test(ch)) {\n      source.eatWhile(idRE);\n      return \"variable\";\n    }\n\n    if (digitRE.test(ch)) {\n      if (ch == '0') {\n        if (source.eat(/[xX]/)) {\n          source.eatWhile(hexitRE); // should require at least 1\n          return \"integer\";\n        }\n        if (source.eat(/[oO]/)) {\n          source.eatWhile(octitRE); // should require at least 1\n          return \"number\";\n        }\n      }\n      source.eatWhile(digitRE);\n      var t = \"number\";\n      if (source.match(/^\\.\\d+/)) {\n        t = \"number\";\n      }\n      if (source.eat(/[eE]/)) {\n        t = \"number\";\n        source.eat(/[-+]/);\n        source.eatWhile(digitRE); // should require at least 1\n      }\n      return t;\n    }\n\n    if (ch == \".\" && source.eat(\".\"))\n      return \"keyword\";\n\n    if (symbolRE.test(ch)) {\n      if (ch == '-' && source.eat(/-/)) {\n        source.eatWhile(/-/);\n        if (!source.eat(symbolRE)) {\n          source.skipToEnd();\n          return \"comment\";\n        }\n      }\n      var t = \"variable\";\n      if (ch == ':') {\n        t = \"variable-2\";\n      }\n      source.eatWhile(symbolRE);\n      return t;\n    }\n\n    return \"error\";\n  }\n\n  function ncomment(type, nest) {\n    if (nest == 0) {\n      return normal;\n    }\n    return function(source, setState) {\n      var currNest = nest;\n      while (!source.eol()) {\n        var ch = source.next();\n        if (ch == '{' && source.eat('-')) {\n          ++currNest;\n        }\n        else if (ch == '-' && source.eat('}')) {\n          --currNest;\n          if (currNest == 0) {\n            setState(normal);\n            return type;\n          }\n        }\n      }\n      setState(ncomment(type, currNest));\n      return type;\n    };\n  }\n\n  function stringLiteral(source, setState) {\n    while (!source.eol()) {\n      var ch = source.next();\n      if (ch == '\"') {\n        setState(normal);\n        return \"string\";\n      }\n      if (ch == '\\\\') {\n        if (source.eol() || source.eat(whiteCharRE)) {\n          setState(stringGap);\n          return \"string\";\n        }\n        if (source.eat('&')) {\n        }\n        else {\n          source.next(); // should handle other escapes here\n        }\n      }\n    }\n    setState(normal);\n    return \"error\";\n  }\n\n  function stringGap(source, setState) {\n    if (source.eat('\\\\')) {\n      return switchState(source, setState, stringLiteral);\n    }\n    source.next();\n    setState(normal);\n    return \"error\";\n  }\n\n\n  var wellKnownWords = (function() {\n    var wkw = {};\n    function setType(t) {\n      return function () {\n        for (var i = 0; i < arguments.length; i++)\n          wkw[arguments[i]] = t;\n      };\n    }\n\n    setType(\"keyword\")(\n      \"case\", \"class\", \"data\", \"default\", \"deriving\", \"do\", \"else\", \"foreign\",\n      \"if\", \"import\", \"in\", \"infix\", \"infixl\", \"infixr\", \"instance\", \"let\",\n      \"module\", \"newtype\", \"of\", \"then\", \"type\", \"where\", \"_\");\n\n    setType(\"keyword\")(\n      \"\\.\\.\", \":\", \"::\", \"=\", \"\\\\\", \"\\\"\", \"<-\", \"->\", \"@\", \"~\", \"=>\");\n\n    setType(\"builtin\")(\n      \"!!\", \"$!\", \"$\", \"&&\", \"+\", \"++\", \"-\", \".\", \"/\", \"/=\", \"<\", \"<=\", \"=<<\",\n      \"==\", \">\", \">=\", \">>\", \">>=\", \"^\", \"^^\", \"||\", \"*\", \"**\");\n\n    setType(\"builtin\")(\n      \"Bool\", \"Bounded\", \"Char\", \"Double\", \"EQ\", \"Either\", \"Enum\", \"Eq\",\n      \"False\", \"FilePath\", \"Float\", \"Floating\", \"Fractional\", \"Functor\", \"GT\",\n      \"IO\", \"IOError\", \"Int\", \"Integer\", \"Integral\", \"Just\", \"LT\", \"Left\",\n      \"Maybe\", \"Monad\", \"Nothing\", \"Num\", \"Ord\", \"Ordering\", \"Rational\", \"Read\",\n      \"ReadS\", \"Real\", \"RealFloat\", \"RealFrac\", \"Right\", \"Show\", \"ShowS\",\n      \"String\", \"True\");\n\n    setType(\"builtin\")(\n      \"abs\", \"acos\", \"acosh\", \"all\", \"and\", \"any\", \"appendFile\", \"asTypeOf\",\n      \"asin\", \"asinh\", \"atan\", \"atan2\", \"atanh\", \"break\", \"catch\", \"ceiling\",\n      \"compare\", \"concat\", \"concatMap\", \"const\", \"cos\", \"cosh\", \"curry\",\n      \"cycle\", \"decodeFloat\", \"div\", \"divMod\", \"drop\", \"dropWhile\", \"either\",\n      \"elem\", \"encodeFloat\", \"enumFrom\", \"enumFromThen\", \"enumFromThenTo\",\n      \"enumFromTo\", \"error\", \"even\", \"exp\", \"exponent\", \"fail\", \"filter\",\n      \"flip\", \"floatDigits\", \"floatRadix\", \"floatRange\", \"floor\", \"fmap\",\n      \"foldl\", \"foldl1\", \"foldr\", \"foldr1\", \"fromEnum\", \"fromInteger\",\n      \"fromIntegral\", \"fromRational\", \"fst\", \"gcd\", \"getChar\", \"getContents\",\n      \"getLine\", \"head\", \"id\", \"init\", \"interact\", \"ioError\", \"isDenormalized\",\n      \"isIEEE\", \"isInfinite\", \"isNaN\", \"isNegativeZero\", \"iterate\", \"last\",\n      \"lcm\", \"length\", \"lex\", \"lines\", \"log\", \"logBase\", \"lookup\", \"map\",\n      \"mapM\", \"mapM_\", \"max\", \"maxBound\", \"maximum\", \"maybe\", \"min\", \"minBound\",\n      \"minimum\", \"mod\", \"negate\", \"not\", \"notElem\", \"null\", \"odd\", \"or\",\n      \"otherwise\", \"pi\", \"pred\", \"print\", \"product\", \"properFraction\",\n      \"putChar\", \"putStr\", \"putStrLn\", \"quot\", \"quotRem\", \"read\", \"readFile\",\n      \"readIO\", \"readList\", \"readLn\", \"readParen\", \"reads\", \"readsPrec\",\n      \"realToFrac\", \"recip\", \"rem\", \"repeat\", \"replicate\", \"return\", \"reverse\",\n      \"round\", \"scaleFloat\", \"scanl\", \"scanl1\", \"scanr\", \"scanr1\", \"seq\",\n      \"sequence\", \"sequence_\", \"show\", \"showChar\", \"showList\", \"showParen\",\n      \"showString\", \"shows\", \"showsPrec\", \"significand\", \"signum\", \"sin\",\n      \"sinh\", \"snd\", \"span\", \"splitAt\", \"sqrt\", \"subtract\", \"succ\", \"sum\",\n      \"tail\", \"take\", \"takeWhile\", \"tan\", \"tanh\", \"toEnum\", \"toInteger\",\n      \"toRational\", \"truncate\", \"uncurry\", \"undefined\", \"unlines\", \"until\",\n      \"unwords\", \"unzip\", \"unzip3\", \"userError\", \"words\", \"writeFile\", \"zip\",\n      \"zip3\", \"zipWith\", \"zipWith3\");\n\n    var override = modeConfig.overrideKeywords;\n    if (override) for (var word in override) if (override.hasOwnProperty(word))\n      wkw[word] = override[word];\n\n    return wkw;\n  })();\n\n\n\n  return {\n    startState: function ()  { return { f: normal }; },\n    copyState:  function (s) { return { f: s.f }; },\n\n    token: function(stream, state) {\n      var t = state.f(stream, function(s) { state.f = s; });\n      var w = stream.current();\n      return wellKnownWords.hasOwnProperty(w) ? wellKnownWords[w] : t;\n    },\n\n    blockCommentStart: \"{-\",\n    blockCommentEnd: \"-}\",\n    lineComment: \"--\"\n  };\n\n});\n\nCodeMirror.defineMIME(\"text/x-haskell\", \"haskell\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/haskell/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Haskell mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../theme/elegant.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"haskell.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Haskell</a>\n  </ul>\n</div>\n\n<article>\n<h2>Haskell mode</h2>\n<form><textarea id=\"code\" name=\"code\">\nmodule UniquePerms (\n    uniquePerms\n    )\nwhere\n\n-- | Find all unique permutations of a list where there might be duplicates.\nuniquePerms :: (Eq a) => [a] -> [[a]]\nuniquePerms = permBag . makeBag\n\n-- | An unordered collection where duplicate values are allowed,\n-- but represented with a single value and a count.\ntype Bag a = [(a, Int)]\n\nmakeBag :: (Eq a) => [a] -> Bag a\nmakeBag [] = []\nmakeBag (a:as) = mix a $ makeBag as\n  where\n    mix a []                        = [(a,1)]\n    mix a (bn@(b,n):bs) | a == b    = (b,n+1):bs\n                        | otherwise = bn : mix a bs\n\npermBag :: Bag a -> [[a]]\npermBag [] = [[]]\npermBag bs = concatMap (\\(f,cs) -> map (f:) $ permBag cs) . oneOfEach $ bs\n  where\n    oneOfEach [] = []\n    oneOfEach (an@(a,n):bs) =\n        let bs' = if n == 1 then bs else (a,n-1):bs\n        in (a,bs') : mapSnd (an:) (oneOfEach bs)\n    \n    apSnd f (a,b) = (a, f b)\n    mapSnd = map . apSnd\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        theme: \"elegant\"\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-haskell</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/haxe/haxe.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"haxe\", function(config, parserConfig) {\n  var indentUnit = config.indentUnit;\n\n  // Tokenizer\n\n  var keywords = function(){\n    function kw(type) {return {type: type, style: \"keyword\"};}\n    var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\");\n    var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"}, attribute = {type:\"attribute\", style: \"attribute\"};\n  var type = kw(\"typedef\");\n    return {\n      \"if\": A, \"while\": A, \"else\": B, \"do\": B, \"try\": B,\n      \"return\": C, \"break\": C, \"continue\": C, \"new\": C, \"throw\": C,\n      \"var\": kw(\"var\"), \"inline\":attribute, \"static\": attribute, \"using\":kw(\"import\"),\n    \"public\": attribute, \"private\": attribute, \"cast\": kw(\"cast\"), \"import\": kw(\"import\"), \"macro\": kw(\"macro\"),\n      \"function\": kw(\"function\"), \"catch\": kw(\"catch\"), \"untyped\": kw(\"untyped\"), \"callback\": kw(\"cb\"),\n      \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n      \"in\": operator, \"never\": kw(\"property_access\"), \"trace\":kw(\"trace\"),\n    \"class\": type, \"abstract\":type, \"enum\":type, \"interface\":type, \"typedef\":type, \"extends\":type, \"implements\":type, \"dynamic\":type,\n      \"true\": atom, \"false\": atom, \"null\": atom\n    };\n  }();\n\n  var isOperatorChar = /[+\\-*&%=<>!?|]/;\n\n  function chain(stream, state, f) {\n    state.tokenize = f;\n    return f(stream, state);\n  }\n\n  function nextUntilUnescaped(stream, end) {\n    var escaped = false, next;\n    while ((next = stream.next()) != null) {\n      if (next == end && !escaped)\n        return false;\n      escaped = !escaped && next == \"\\\\\";\n    }\n    return escaped;\n  }\n\n  // Used as scratch variables to communicate multiple values without\n  // consing up tons of objects.\n  var type, content;\n  function ret(tp, style, cont) {\n    type = tp; content = cont;\n    return style;\n  }\n\n  function haxeTokenBase(stream, state) {\n    var ch = stream.next();\n    if (ch == '\"' || ch == \"'\")\n      return chain(stream, state, haxeTokenString(ch));\n    else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch))\n      return ret(ch);\n    else if (ch == \"0\" && stream.eat(/x/i)) {\n      stream.eatWhile(/[\\da-f]/i);\n      return ret(\"number\", \"number\");\n    }\n    else if (/\\d/.test(ch) || ch == \"-\" && stream.eat(/\\d/)) {\n      stream.match(/^\\d*(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/);\n      return ret(\"number\", \"number\");\n    }\n    else if (state.reAllowed && (ch == \"~\" && stream.eat(/\\//))) {\n      nextUntilUnescaped(stream, \"/\");\n      stream.eatWhile(/[gimsu]/);\n      return ret(\"regexp\", \"string-2\");\n    }\n    else if (ch == \"/\") {\n      if (stream.eat(\"*\")) {\n        return chain(stream, state, haxeTokenComment);\n      }\n      else if (stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return ret(\"comment\", \"comment\");\n      }\n      else {\n        stream.eatWhile(isOperatorChar);\n        return ret(\"operator\", null, stream.current());\n      }\n    }\n    else if (ch == \"#\") {\n        stream.skipToEnd();\n        return ret(\"conditional\", \"meta\");\n    }\n    else if (ch == \"@\") {\n      stream.eat(/:/);\n      stream.eatWhile(/[\\w_]/);\n      return ret (\"metadata\", \"meta\");\n    }\n    else if (isOperatorChar.test(ch)) {\n      stream.eatWhile(isOperatorChar);\n      return ret(\"operator\", null, stream.current());\n    }\n    else {\n    var word;\n    if(/[A-Z]/.test(ch))\n    {\n      stream.eatWhile(/[\\w_<>]/);\n      word = stream.current();\n      return ret(\"type\", \"variable-3\", word);\n    }\n    else\n    {\n        stream.eatWhile(/[\\w_]/);\n        var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word];\n        return (known && state.kwAllowed) ? ret(known.type, known.style, word) :\n                       ret(\"variable\", \"variable\", word);\n    }\n    }\n  }\n\n  function haxeTokenString(quote) {\n    return function(stream, state) {\n      if (!nextUntilUnescaped(stream, quote))\n        state.tokenize = haxeTokenBase;\n      return ret(\"string\", \"string\");\n    };\n  }\n\n  function haxeTokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = haxeTokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return ret(\"comment\", \"comment\");\n  }\n\n  // Parser\n\n  var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true, \"regexp\": true};\n\n  function HaxeLexical(indented, column, type, align, prev, info) {\n    this.indented = indented;\n    this.column = column;\n    this.type = type;\n    this.prev = prev;\n    this.info = info;\n    if (align != null) this.align = align;\n  }\n\n  function inScope(state, varname) {\n    for (var v = state.localVars; v; v = v.next)\n      if (v.name == varname) return true;\n  }\n\n  function parseHaxe(state, style, type, content, stream) {\n    var cc = state.cc;\n    // Communicate our context to the combinators.\n    // (Less wasteful than consing up a hundred closures on every call.)\n    cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc;\n\n    if (!state.lexical.hasOwnProperty(\"align\"))\n      state.lexical.align = true;\n\n    while(true) {\n      var combinator = cc.length ? cc.pop() : statement;\n      if (combinator(type, content)) {\n        while(cc.length && cc[cc.length - 1].lex)\n          cc.pop()();\n        if (cx.marked) return cx.marked;\n        if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n    if (type == \"variable\" && imported(state, content)) return \"variable-3\";\n        return style;\n      }\n    }\n  }\n\n  function imported(state, typename)\n  {\n  if (/[a-z]/.test(typename.charAt(0)))\n    return false;\n  var len = state.importedtypes.length;\n  for (var i = 0; i<len; i++)\n    if(state.importedtypes[i]==typename) return true;\n  }\n\n\n  function registerimport(importname) {\n  var state = cx.state;\n  for (var t = state.importedtypes; t; t = t.next)\n    if(t.name == importname) return;\n  state.importedtypes = { name: importname, next: state.importedtypes };\n  }\n  // Combinator utils\n\n  var cx = {state: null, column: null, marked: null, cc: null};\n  function pass() {\n    for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n  }\n  function cont() {\n    pass.apply(null, arguments);\n    return true;\n  }\n  function register(varname) {\n    var state = cx.state;\n    if (state.context) {\n      cx.marked = \"def\";\n      for (var v = state.localVars; v; v = v.next)\n        if (v.name == varname) return;\n      state.localVars = {name: varname, next: state.localVars};\n    }\n  }\n\n  // Combinators\n\n  var defaultVars = {name: \"this\", next: null};\n  function pushcontext() {\n    if (!cx.state.context) cx.state.localVars = defaultVars;\n    cx.state.context = {prev: cx.state.context, vars: cx.state.localVars};\n  }\n  function popcontext() {\n    cx.state.localVars = cx.state.context.vars;\n    cx.state.context = cx.state.context.prev;\n  }\n  function pushlex(type, info) {\n    var result = function() {\n      var state = cx.state;\n      state.lexical = new HaxeLexical(state.indented, cx.stream.column(), type, null, state.lexical, info);\n    };\n    result.lex = true;\n    return result;\n  }\n  function poplex() {\n    var state = cx.state;\n    if (state.lexical.prev) {\n      if (state.lexical.type == \")\")\n        state.indented = state.lexical.indented;\n      state.lexical = state.lexical.prev;\n    }\n  }\n  poplex.lex = true;\n\n  function expect(wanted) {\n    function f(type) {\n      if (type == wanted) return cont();\n      else if (wanted == \";\") return pass();\n      else return cont(f);\n    };\n    return f;\n  }\n\n  function statement(type) {\n    if (type == \"@\") return cont(metadef);\n    if (type == \"var\") return cont(pushlex(\"vardef\"), vardef1, expect(\";\"), poplex);\n    if (type == \"keyword a\") return cont(pushlex(\"form\"), expression, statement, poplex);\n    if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n    if (type == \"{\") return cont(pushlex(\"}\"), pushcontext, block, poplex, popcontext);\n    if (type == \";\") return cont();\n    if (type == \"attribute\") return cont(maybeattribute);\n    if (type == \"function\") return cont(functiondef);\n    if (type == \"for\") return cont(pushlex(\"form\"), expect(\"(\"), pushlex(\")\"), forspec1, expect(\")\"),\n                                      poplex, statement, poplex);\n    if (type == \"variable\") return cont(pushlex(\"stat\"), maybelabel);\n    if (type == \"switch\") return cont(pushlex(\"form\"), expression, pushlex(\"}\", \"switch\"), expect(\"{\"),\n                                         block, poplex, poplex);\n    if (type == \"case\") return cont(expression, expect(\":\"));\n    if (type == \"default\") return cont(expect(\":\"));\n    if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, expect(\"(\"), funarg, expect(\")\"),\n                                        statement, poplex, popcontext);\n    if (type == \"import\") return cont(importdef, expect(\";\"));\n    if (type == \"typedef\") return cont(typedef);\n    return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n  }\n  function expression(type) {\n    if (atomicTypes.hasOwnProperty(type)) return cont(maybeoperator);\n    if (type == \"function\") return cont(functiondef);\n    if (type == \"keyword c\") return cont(maybeexpression);\n    if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeoperator);\n    if (type == \"operator\") return cont(expression);\n    if (type == \"[\") return cont(pushlex(\"]\"), commasep(expression, \"]\"), poplex, maybeoperator);\n    if (type == \"{\") return cont(pushlex(\"}\"), commasep(objprop, \"}\"), poplex, maybeoperator);\n    return cont();\n  }\n  function maybeexpression(type) {\n    if (type.match(/[;\\}\\)\\],]/)) return pass();\n    return pass(expression);\n  }\n\n  function maybeoperator(type, value) {\n    if (type == \"operator\" && /\\+\\+|--/.test(value)) return cont(maybeoperator);\n    if (type == \"operator\" || type == \":\") return cont(expression);\n    if (type == \";\") return;\n    if (type == \"(\") return cont(pushlex(\")\"), commasep(expression, \")\"), poplex, maybeoperator);\n    if (type == \".\") return cont(property, maybeoperator);\n    if (type == \"[\") return cont(pushlex(\"]\"), expression, expect(\"]\"), poplex, maybeoperator);\n  }\n\n  function maybeattribute(type) {\n    if (type == \"attribute\") return cont(maybeattribute);\n    if (type == \"function\") return cont(functiondef);\n    if (type == \"var\") return cont(vardef1);\n  }\n\n  function metadef(type) {\n    if(type == \":\") return cont(metadef);\n    if(type == \"variable\") return cont(metadef);\n    if(type == \"(\") return cont(pushlex(\")\"), commasep(metaargs, \")\"), poplex, statement);\n  }\n  function metaargs(type) {\n    if(type == \"variable\") return cont();\n  }\n\n  function importdef (type, value) {\n  if(type == \"variable\" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); }\n  else if(type == \"variable\" || type == \"property\" || type == \".\" || value == \"*\") return cont(importdef);\n  }\n\n  function typedef (type, value)\n  {\n  if(type == \"variable\" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); }\n  else if (type == \"type\" && /[A-Z]/.test(value.charAt(0))) { return cont(); }\n  }\n\n  function maybelabel(type) {\n    if (type == \":\") return cont(poplex, statement);\n    return pass(maybeoperator, expect(\";\"), poplex);\n  }\n  function property(type) {\n    if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n  }\n  function objprop(type) {\n    if (type == \"variable\") cx.marked = \"property\";\n    if (atomicTypes.hasOwnProperty(type)) return cont(expect(\":\"), expression);\n  }\n  function commasep(what, end) {\n    function proceed(type) {\n      if (type == \",\") return cont(what, proceed);\n      if (type == end) return cont();\n      return cont(expect(end));\n    }\n    return function(type) {\n      if (type == end) return cont();\n      else return pass(what, proceed);\n    };\n  }\n  function block(type) {\n    if (type == \"}\") return cont();\n    return pass(statement, block);\n  }\n  function vardef1(type, value) {\n    if (type == \"variable\"){register(value); return cont(typeuse, vardef2);}\n    return cont();\n  }\n  function vardef2(type, value) {\n    if (value == \"=\") return cont(expression, vardef2);\n    if (type == \",\") return cont(vardef1);\n  }\n  function forspec1(type, value) {\n  if (type == \"variable\") {\n    register(value);\n  }\n  return cont(pushlex(\")\"), pushcontext, forin, expression, poplex, statement, popcontext);\n  }\n  function forin(_type, value) {\n    if (value == \"in\") return cont();\n  }\n  function functiondef(type, value) {\n    if (type == \"variable\") {register(value); return cont(functiondef);}\n    if (value == \"new\") return cont(functiondef);\n    if (type == \"(\") return cont(pushlex(\")\"), pushcontext, commasep(funarg, \")\"), poplex, typeuse, statement, popcontext);\n  }\n  function typeuse(type) {\n    if(type == \":\") return cont(typestring);\n  }\n  function typestring(type) {\n    if(type == \"type\") return cont();\n    if(type == \"variable\") return cont();\n    if(type == \"{\") return cont(pushlex(\"}\"), commasep(typeprop, \"}\"), poplex);\n  }\n  function typeprop(type) {\n    if(type == \"variable\") return cont(typeuse);\n  }\n  function funarg(type, value) {\n    if (type == \"variable\") {register(value); return cont(typeuse);}\n  }\n\n  // Interface\n\n  return {\n    startState: function(basecolumn) {\n    var defaulttypes = [\"Int\", \"Float\", \"String\", \"Void\", \"Std\", \"Bool\", \"Dynamic\", \"Array\"];\n      return {\n        tokenize: haxeTokenBase,\n        reAllowed: true,\n        kwAllowed: true,\n        cc: [],\n        lexical: new HaxeLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n        localVars: parserConfig.localVars,\n    importedtypes: defaulttypes,\n        context: parserConfig.localVars && {vars: parserConfig.localVars},\n        indented: 0\n      };\n    },\n\n    token: function(stream, state) {\n      if (stream.sol()) {\n        if (!state.lexical.hasOwnProperty(\"align\"))\n          state.lexical.align = false;\n        state.indented = stream.indentation();\n      }\n      if (stream.eatSpace()) return null;\n      var style = state.tokenize(stream, state);\n      if (type == \"comment\") return style;\n      state.reAllowed = !!(type == \"operator\" || type == \"keyword c\" || type.match(/^[\\[{}\\(,;:]$/));\n      state.kwAllowed = type != '.';\n      return parseHaxe(state, style, type, content, stream);\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize != haxeTokenBase) return 0;\n      var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical;\n      if (lexical.type == \"stat\" && firstChar == \"}\") lexical = lexical.prev;\n      var type = lexical.type, closing = firstChar == type;\n      if (type == \"vardef\") return lexical.indented + 4;\n      else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n      else if (type == \"stat\" || type == \"form\") return lexical.indented + indentUnit;\n      else if (lexical.info == \"switch\" && !closing)\n        return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n      else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n      else return lexical.indented + (closing ? 0 : indentUnit);\n    },\n\n    electricChars: \"{}\",\n    blockCommentStart: \"/*\",\n    blockCommentEnd: \"*/\",\n    lineComment: \"//\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-haxe\", \"haxe\");\n\nCodeMirror.defineMode(\"hxml\", function () {\n\n  return {\n    startState: function () {\n      return {\n        define: false,\n        inString: false\n      };\n    },\n    token: function (stream, state) {\n      var ch = stream.peek();\n      var sol = stream.sol();\n\n      ///* comments */\n      if (ch == \"#\") {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n      if (sol && ch == \"-\") {\n        var style = \"variable-2\";\n\n        stream.eat(/-/);\n\n        if (stream.peek() == \"-\") {\n          stream.eat(/-/);\n          style = \"keyword a\";\n        }\n\n        if (stream.peek() == \"D\") {\n          stream.eat(/[D]/);\n          style = \"keyword c\";\n          state.define = true;\n        }\n\n        stream.eatWhile(/[A-Z]/i);\n        return style;\n      }\n\n      var ch = stream.peek();\n\n      if (state.inString == false && ch == \"'\") {\n        state.inString = true;\n        ch = stream.next();\n      }\n\n      if (state.inString == true) {\n        if (stream.skipTo(\"'\")) {\n\n        } else {\n          stream.skipToEnd();\n        }\n\n        if (stream.peek() == \"'\") {\n          stream.next();\n          state.inString = false;\n        }\n\n        return \"string\";\n      }\n\n      stream.next();\n      return null;\n    },\n    lineComment: \"#\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-hxml\", \"hxml\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/haxe/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Haxe mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"haxe.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Haxe</a>\n  </ul>\n</div>\n\n<article>\n<h2>Haxe mode</h2>\n\n\n<div><p><textarea id=\"code-haxe\" name=\"code\">\nimport one.two.Three;\n\n@attr(\"test\")\nclass Foo&lt;T&gt; extends Three\n{\n\tpublic function new()\n\t{\n\t\tnoFoo = 12;\n\t}\n\t\n\tpublic static inline function doFoo(obj:{k:Int, l:Float}):Int\n\t{\n\t\tfor(i in 0...10)\n\t\t{\n\t\t\tobj.k++;\n\t\t\ttrace(i);\n\t\t\tvar var1 = new Array();\n\t\t\tif(var1.length > 1)\n\t\t\t\tthrow \"Error\";\n\t\t}\n\t\t// The following line should not be colored, the variable is scoped out\n\t\tvar1;\n\t\t/* Multi line\n\t\t * Comment test\n\t\t */\n\t\treturn obj.k;\n\t}\n\tprivate function bar():Void\n\t{\n\t\t#if flash\n\t\tvar t1:String = \"1.21\";\n\t\t#end\n\t\ttry {\n\t\t\tdoFoo({k:3, l:1.2});\n\t\t}\n\t\tcatch (e : String) {\n\t\t\ttrace(e);\n\t\t}\n\t\tvar t2:Float = cast(3.2);\n\t\tvar t3:haxe.Timer = new haxe.Timer();\n\t\tvar t4 = {k:Std.int(t2), l:Std.parseFloat(t1)};\n\t\tvar t5 = ~/123+.*$/i;\n\t\tdoFoo(t4);\n\t\tuntyped t1 = 4;\n\t\tbob = new Foo&lt;Int&gt;\n\t}\n\tpublic var okFoo(default, never):Float;\n\tvar noFoo(getFoo, null):Int;\n\tfunction getFoo():Int {\n\t\treturn noFoo;\n\t}\n\t\n\tpublic var three:Int;\n}\nenum Color\n{\n\tred;\n\tgreen;\n\tblue;\n\tgrey( v : Int );\n\trgb (r:Int,g:Int,b:Int);\n}\n</textarea></p>\n\n<p>Hxml mode:</p>\n\n<p><textarea id=\"code-hxml\">\n-cp test\n-js path/to/file.js\n#-remap nme:flash\n--next\n-D source-map-content\n-cmd 'test'\n-lib lime\n</textarea></p>\n</div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code-haxe\"), {\n      \tmode: \"haxe\",\n        lineNumbers: true,\n        indentUnit: 4,\n        indentWithTabs: true\n      });\n      \n      editor = CodeMirror.fromTextArea(document.getElementById(\"code-hxml\"), {\n      \tmode: \"hxml\",\n        lineNumbers: true,\n        indentUnit: 4,\n        indentWithTabs: true\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-haxe, text/x-hxml</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/htmlembedded/htmlembedded.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../htmlmixed/htmlmixed\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../htmlmixed/htmlmixed\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"htmlembedded\", function(config, parserConfig) {\n\n  //config settings\n  var scriptStartRegex = parserConfig.scriptStartRegex || /^<%/i,\n      scriptEndRegex = parserConfig.scriptEndRegex || /^%>/i;\n\n  //inner modes\n  var scriptingMode, htmlMixedMode;\n\n  //tokenizer when in html mode\n  function htmlDispatch(stream, state) {\n      if (stream.match(scriptStartRegex, false)) {\n          state.token=scriptingDispatch;\n          return scriptingMode.token(stream, state.scriptState);\n          }\n      else\n          return htmlMixedMode.token(stream, state.htmlState);\n    }\n\n  //tokenizer when in scripting mode\n  function scriptingDispatch(stream, state) {\n      if (stream.match(scriptEndRegex, false))  {\n          state.token=htmlDispatch;\n          return htmlMixedMode.token(stream, state.htmlState);\n         }\n      else\n          return scriptingMode.token(stream, state.scriptState);\n         }\n\n\n  return {\n    startState: function() {\n      scriptingMode = scriptingMode || CodeMirror.getMode(config, parserConfig.scriptingModeSpec);\n      htmlMixedMode = htmlMixedMode || CodeMirror.getMode(config, \"htmlmixed\");\n      return {\n          token :  parserConfig.startOpen ? scriptingDispatch : htmlDispatch,\n          htmlState : CodeMirror.startState(htmlMixedMode),\n          scriptState : CodeMirror.startState(scriptingMode)\n      };\n    },\n\n    token: function(stream, state) {\n      return state.token(stream, state);\n    },\n\n    indent: function(state, textAfter) {\n      if (state.token == htmlDispatch)\n        return htmlMixedMode.indent(state.htmlState, textAfter);\n      else if (scriptingMode.indent)\n        return scriptingMode.indent(state.scriptState, textAfter);\n    },\n\n    copyState: function(state) {\n      return {\n       token : state.token,\n       htmlState : CodeMirror.copyState(htmlMixedMode, state.htmlState),\n       scriptState : CodeMirror.copyState(scriptingMode, state.scriptState)\n      };\n    },\n\n    innerMode: function(state) {\n      if (state.token == scriptingDispatch) return {state: state.scriptState, mode: scriptingMode};\n      else return {state: state.htmlState, mode: htmlMixedMode};\n    }\n  };\n}, \"htmlmixed\");\n\nCodeMirror.defineMIME(\"application/x-ejs\", { name: \"htmlembedded\", scriptingModeSpec:\"javascript\"});\nCodeMirror.defineMIME(\"application/x-aspx\", { name: \"htmlembedded\", scriptingModeSpec:\"text/x-csharp\"});\nCodeMirror.defineMIME(\"application/x-jsp\", { name: \"htmlembedded\", scriptingModeSpec:\"text/x-java\"});\nCodeMirror.defineMIME(\"application/x-erb\", { name: \"htmlembedded\", scriptingModeSpec:\"ruby\"});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/htmlembedded/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Html Embedded Scripts mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../xml/xml.js\"></script>\n<script src=\"../javascript/javascript.js\"></script>\n<script src=\"../css/css.js\"></script>\n<script src=\"../htmlmixed/htmlmixed.js\"></script>\n<script src=\"htmlembedded.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Html Embedded Scripts</a>\n  </ul>\n</div>\n\n<article>\n<h2>Html Embedded Scripts mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n<%\nfunction hello(who) {\n\treturn \"Hello \" + who;\n}\n%>\nThis is an example of EJS (embedded javascript)\n<p>The program says <%= hello(\"world\") %>.</p>\n<script>\n\talert(\"And here is some normal JS code\"); // also colored\n</script>\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        mode: \"application/x-ejs\",\n        indentUnit: 4,\n        indentWithTabs: true\n      });\n    </script>\n\n    <p>Mode for html embedded scripts like JSP and ASP.NET. Depends on HtmlMixed which in turn depends on\n    JavaScript, CSS and XML.<br />Other dependancies include those of the scriping language chosen.</p>\n\n    <p><strong>MIME types defined:</strong> <code>application/x-aspx</code> (ASP.NET), \n    <code>application/x-ejs</code> (Embedded Javascript), <code>application/x-jsp</code> (JavaServer Pages)</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/htmlmixed/htmlmixed.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../javascript/javascript\"), require(\"../css/css\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\", \"../css/css\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"htmlmixed\", function(config, parserConfig) {\n  var htmlMode = CodeMirror.getMode(config, {name: \"xml\",\n                                             htmlMode: true,\n                                             multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,\n                                             multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag});\n  var cssMode = CodeMirror.getMode(config, \"css\");\n\n  var scriptTypes = [], scriptTypesConf = parserConfig && parserConfig.scriptTypes;\n  scriptTypes.push({matches: /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^$/i,\n                    mode: CodeMirror.getMode(config, \"javascript\")});\n  if (scriptTypesConf) for (var i = 0; i < scriptTypesConf.length; ++i) {\n    var conf = scriptTypesConf[i];\n    scriptTypes.push({matches: conf.matches, mode: conf.mode && CodeMirror.getMode(config, conf.mode)});\n  }\n  scriptTypes.push({matches: /./,\n                    mode: CodeMirror.getMode(config, \"text/plain\")});\n\n  function html(stream, state) {\n    var tagName = state.htmlState.tagName;\n    if (tagName) tagName = tagName.toLowerCase();\n    var style = htmlMode.token(stream, state.htmlState);\n    if (tagName == \"script\" && /\\btag\\b/.test(style) && stream.current() == \">\") {\n      // Script block: mode to change to depends on type attribute\n      var scriptType = stream.string.slice(Math.max(0, stream.pos - 100), stream.pos).match(/\\btype\\s*=\\s*(\"[^\"]+\"|'[^']+'|\\S+)[^<]*$/i);\n      scriptType = scriptType ? scriptType[1] : \"\";\n      if (scriptType && /[\\\"\\']/.test(scriptType.charAt(0))) scriptType = scriptType.slice(1, scriptType.length - 1);\n      for (var i = 0; i < scriptTypes.length; ++i) {\n        var tp = scriptTypes[i];\n        if (typeof tp.matches == \"string\" ? scriptType == tp.matches : tp.matches.test(scriptType)) {\n          if (tp.mode) {\n            state.token = script;\n            state.localMode = tp.mode;\n            state.localState = tp.mode.startState && tp.mode.startState(htmlMode.indent(state.htmlState, \"\"));\n          }\n          break;\n        }\n      }\n    } else if (tagName == \"style\" && /\\btag\\b/.test(style) && stream.current() == \">\") {\n      state.token = css;\n      state.localMode = cssMode;\n      state.localState = cssMode.startState(htmlMode.indent(state.htmlState, \"\"));\n    }\n    return style;\n  }\n  function maybeBackup(stream, pat, style) {\n    var cur = stream.current();\n    var close = cur.search(pat), m;\n    if (close > -1) stream.backUp(cur.length - close);\n    else if (m = cur.match(/<\\/?$/)) {\n      stream.backUp(cur.length);\n      if (!stream.match(pat, false)) stream.match(cur);\n    }\n    return style;\n  }\n  function script(stream, state) {\n    if (stream.match(/^<\\/\\s*script\\s*>/i, false)) {\n      state.token = html;\n      state.localState = state.localMode = null;\n      return null;\n    }\n    return maybeBackup(stream, /<\\/\\s*script\\s*>/,\n                       state.localMode.token(stream, state.localState));\n  }\n  function css(stream, state) {\n    if (stream.match(/^<\\/\\s*style\\s*>/i, false)) {\n      state.token = html;\n      state.localState = state.localMode = null;\n      return null;\n    }\n    return maybeBackup(stream, /<\\/\\s*style\\s*>/,\n                       cssMode.token(stream, state.localState));\n  }\n\n  return {\n    startState: function() {\n      var state = htmlMode.startState();\n      return {token: html, localMode: null, localState: null, htmlState: state};\n    },\n\n    copyState: function(state) {\n      if (state.localState)\n        var local = CodeMirror.copyState(state.localMode, state.localState);\n      return {token: state.token, localMode: state.localMode, localState: local,\n              htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};\n    },\n\n    token: function(stream, state) {\n      return state.token(stream, state);\n    },\n\n    indent: function(state, textAfter) {\n      if (!state.localMode || /^\\s*<\\//.test(textAfter))\n        return htmlMode.indent(state.htmlState, textAfter);\n      else if (state.localMode.indent)\n        return state.localMode.indent(state.localState, textAfter);\n      else\n        return CodeMirror.Pass;\n    },\n\n    innerMode: function(state) {\n      return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};\n    }\n  };\n}, \"xml\", \"javascript\", \"css\");\n\nCodeMirror.defineMIME(\"text/html\", \"htmlmixed\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/htmlmixed/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: HTML mixed mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/selection/selection-pointer.js\"></script>\n<script src=\"../xml/xml.js\"></script>\n<script src=\"../javascript/javascript.js\"></script>\n<script src=\"../css/css.js\"></script>\n<script src=\"../vbscript/vbscript.js\"></script>\n<script src=\"htmlmixed.js\"></script>\n<style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">HTML mixed</a>\n  </ul>\n</div>\n\n<article>\n<h2>HTML mixed mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n<html style=\"color: green\">\n  <!-- this is a comment -->\n  <head>\n    <title>Mixed HTML Example</title>\n    <style type=\"text/css\">\n      h1 {font-family: comic sans; color: #f0f;}\n      div {background: yellow !important;}\n      body {\n        max-width: 50em;\n        margin: 1em 2em 1em 5em;\n      }\n    </style>\n  </head>\n  <body>\n    <h1>Mixed HTML Example</h1>\n    <script>\n      function jsFunc(arg1, arg2) {\n        if (arg1 && arg2) document.body.innerHTML = \"achoo\";\n      }\n    </script>\n  </body>\n</html>\n</textarea></form>\n    <script>\n      // Define an extended mixed-mode that understands vbscript and\n      // leaves mustache/handlebars embedded templates in html mode\n      var mixedMode = {\n        name: \"htmlmixed\",\n        scriptTypes: [{matches: /\\/x-handlebars-template|\\/x-mustache/i,\n                       mode: null},\n                      {matches: /(text|application)\\/(x-)?vb(a|script)/i,\n                       mode: \"vbscript\"}]\n      };\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: mixedMode,\n        selectionPointer: true\n      });\n    </script>\n\n    <p>The HTML mixed mode depends on the XML, JavaScript, and CSS modes.</p>\n\n    <p>It takes an optional mode configuration\n    option, <code>scriptTypes</code>, which can be used to add custom\n    behavior for specific <code>&lt;script type=\"...\"></code> tags. If\n    given, it should hold an array of <code>{matches, mode}</code>\n    objects, where <code>matches</code> is a string or regexp that\n    matches the script type, and <code>mode</code> is\n    either <code>null</code>, for script types that should stay in\n    HTML mode, or a <a href=\"../../doc/manual.html#option_mode\">mode\n    spec</a> corresponding to the mode that should be used for the\n    script.</p>\n\n    <p><strong>MIME types defined:</strong> <code>text/html</code>\n    (redefined, only takes effect if you load this parser after the\n    XML parser).</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/http/http.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"http\", function() {\n  function failFirstLine(stream, state) {\n    stream.skipToEnd();\n    state.cur = header;\n    return \"error\";\n  }\n\n  function start(stream, state) {\n    if (stream.match(/^HTTP\\/\\d\\.\\d/)) {\n      state.cur = responseStatusCode;\n      return \"keyword\";\n    } else if (stream.match(/^[A-Z]+/) && /[ \\t]/.test(stream.peek())) {\n      state.cur = requestPath;\n      return \"keyword\";\n    } else {\n      return failFirstLine(stream, state);\n    }\n  }\n\n  function responseStatusCode(stream, state) {\n    var code = stream.match(/^\\d+/);\n    if (!code) return failFirstLine(stream, state);\n\n    state.cur = responseStatusText;\n    var status = Number(code[0]);\n    if (status >= 100 && status < 200) {\n      return \"positive informational\";\n    } else if (status >= 200 && status < 300) {\n      return \"positive success\";\n    } else if (status >= 300 && status < 400) {\n      return \"positive redirect\";\n    } else if (status >= 400 && status < 500) {\n      return \"negative client-error\";\n    } else if (status >= 500 && status < 600) {\n      return \"negative server-error\";\n    } else {\n      return \"error\";\n    }\n  }\n\n  function responseStatusText(stream, state) {\n    stream.skipToEnd();\n    state.cur = header;\n    return null;\n  }\n\n  function requestPath(stream, state) {\n    stream.eatWhile(/\\S/);\n    state.cur = requestProtocol;\n    return \"string-2\";\n  }\n\n  function requestProtocol(stream, state) {\n    if (stream.match(/^HTTP\\/\\d\\.\\d$/)) {\n      state.cur = header;\n      return \"keyword\";\n    } else {\n      return failFirstLine(stream, state);\n    }\n  }\n\n  function header(stream) {\n    if (stream.sol() && !stream.eat(/[ \\t]/)) {\n      if (stream.match(/^.*?:/)) {\n        return \"atom\";\n      } else {\n        stream.skipToEnd();\n        return \"error\";\n      }\n    } else {\n      stream.skipToEnd();\n      return \"string\";\n    }\n  }\n\n  function body(stream) {\n    stream.skipToEnd();\n    return null;\n  }\n\n  return {\n    token: function(stream, state) {\n      var cur = state.cur;\n      if (cur != header && cur != body && stream.eatSpace()) return null;\n      return cur(stream, state);\n    },\n\n    blankLine: function(state) {\n      state.cur = body;\n    },\n\n    startState: function() {\n      return {cur: start};\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"message/http\", \"http\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/http/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: HTTP mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"http.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">HTTP</a>\n  </ul>\n</div>\n\n<article>\n<h2>HTTP mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\nPOST /somewhere HTTP/1.1\nHost: example.com\nIf-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT\nContent-Type: application/x-www-form-urlencoded;\n\tcharset=utf-8\nUser-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.11 (KHTML, like Gecko) Ubuntu/12.04 Chromium/20.0.1132.47 Chrome/20.0.1132.47 Safari/536.11\n\nThis is the request body!\n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {});\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>message/http</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/idl/idl.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function wordRegexp(words) {\n    return new RegExp('^((' + words.join(')|(') + '))\\\\b', 'i');\n  };\n\n  var builtinArray = [\n    'a_correlate', 'abs', 'acos', 'adapt_hist_equal', 'alog',\n    'alog2', 'alog10', 'amoeba', 'annotate', 'app_user_dir',\n    'app_user_dir_query', 'arg_present', 'array_equal', 'array_indices',\n    'arrow', 'ascii_template', 'asin', 'assoc', 'atan',\n    'axis', 'axis', 'bandpass_filter', 'bandreject_filter', 'barplot',\n    'bar_plot', 'beseli', 'beselj', 'beselk', 'besely',\n    'beta', 'biginteger', 'bilinear', 'bin_date', 'binary_template',\n    'bindgen', 'binomial', 'bit_ffs', 'bit_population', 'blas_axpy',\n    'blk_con', 'boolarr', 'boolean', 'boxplot', 'box_cursor',\n    'breakpoint', 'broyden', 'bubbleplot', 'butterworth', 'bytarr',\n    'byte', 'byteorder', 'bytscl', 'c_correlate', 'calendar',\n    'caldat', 'call_external', 'call_function', 'call_method',\n    'call_procedure', 'canny', 'catch', 'cd', 'cdf', 'ceil',\n    'chebyshev', 'check_math', 'chisqr_cvf', 'chisqr_pdf', 'choldc',\n    'cholsol', 'cindgen', 'cir_3pnt', 'clipboard', 'close',\n    'clust_wts', 'cluster', 'cluster_tree', 'cmyk_convert', 'code_coverage',\n    'color_convert', 'color_exchange', 'color_quan', 'color_range_map',\n    'colorbar', 'colorize_sample', 'colormap_applicable',\n    'colormap_gradient', 'colormap_rotation', 'colortable',\n    'comfit', 'command_line_args', 'common', 'compile_opt', 'complex',\n    'complexarr', 'complexround', 'compute_mesh_normals', 'cond', 'congrid',\n    'conj', 'constrained_min', 'contour', 'contour', 'convert_coord',\n    'convol', 'convol_fft', 'coord2to3', 'copy_lun', 'correlate',\n    'cos', 'cosh', 'cpu', 'cramer', 'createboxplotdata',\n    'create_cursor', 'create_struct', 'create_view', 'crossp', 'crvlength',\n    'ct_luminance', 'cti_test', 'cursor', 'curvefit', 'cv_coord',\n    'cvttobm', 'cw_animate', 'cw_animate_getp', 'cw_animate_load',\n    'cw_animate_run', 'cw_arcball', 'cw_bgroup', 'cw_clr_index',\n    'cw_colorsel', 'cw_defroi', 'cw_field', 'cw_filesel', 'cw_form',\n    'cw_fslider', 'cw_light_editor', 'cw_light_editor_get',\n    'cw_light_editor_set', 'cw_orient', 'cw_palette_editor',\n    'cw_palette_editor_get', 'cw_palette_editor_set', 'cw_pdmenu',\n    'cw_rgbslider', 'cw_tmpl', 'cw_zoom', 'db_exists',\n    'dblarr', 'dcindgen', 'dcomplex', 'dcomplexarr', 'define_key',\n    'define_msgblk', 'define_msgblk_from_file', 'defroi', 'defsysv',\n    'delvar', 'dendro_plot', 'dendrogram', 'deriv', 'derivsig',\n    'determ', 'device', 'dfpmin', 'diag_matrix', 'dialog_dbconnect',\n    'dialog_message', 'dialog_pickfile', 'dialog_printersetup',\n    'dialog_printjob', 'dialog_read_image',\n    'dialog_write_image', 'dictionary', 'digital_filter', 'dilate', 'dindgen',\n    'dissolve', 'dist', 'distance_measure', 'dlm_load', 'dlm_register',\n    'doc_library', 'double', 'draw_roi', 'edge_dog', 'efont',\n    'eigenql', 'eigenvec', 'ellipse', 'elmhes', 'emboss',\n    'empty', 'enable_sysrtn', 'eof', 'eos', 'erase',\n    'erf', 'erfc', 'erfcx', 'erode', 'errorplot',\n    'errplot', 'estimator_filter', 'execute', 'exit', 'exp',\n    'expand', 'expand_path', 'expint', 'extrac', 'extract_slice',\n    'f_cvf', 'f_pdf', 'factorial', 'fft', 'file_basename',\n    'file_chmod', 'file_copy', 'file_delete', 'file_dirname',\n    'file_expand_path', 'file_gunzip', 'file_gzip', 'file_info',\n    'file_lines', 'file_link', 'file_mkdir', 'file_move',\n    'file_poll_input', 'file_readlink', 'file_same',\n    'file_search', 'file_tar', 'file_test', 'file_untar', 'file_unzip',\n    'file_which', 'file_zip', 'filepath', 'findgen', 'finite',\n    'fix', 'flick', 'float', 'floor', 'flow3',\n    'fltarr', 'flush', 'format_axis_values', 'forward_function', 'free_lun',\n    'fstat', 'fulstr', 'funct', 'function', 'fv_test',\n    'fx_root', 'fz_roots', 'gamma', 'gamma_ct', 'gauss_cvf',\n    'gauss_pdf', 'gauss_smooth', 'gauss2dfit', 'gaussfit',\n    'gaussian_function', 'gaussint', 'get_drive_list', 'get_dxf_objects',\n    'get_kbrd', 'get_login_info',\n    'get_lun', 'get_screen_size', 'getenv', 'getwindows', 'greg2jul',\n    'grib', 'grid_input', 'grid_tps', 'grid3', 'griddata',\n    'gs_iter', 'h_eq_ct', 'h_eq_int', 'hanning', 'hash',\n    'hdf', 'hdf5', 'heap_free', 'heap_gc', 'heap_nosave',\n    'heap_refcount', 'heap_save', 'help', 'hilbert', 'hist_2d',\n    'hist_equal', 'histogram', 'hls', 'hough', 'hqr',\n    'hsv', 'i18n_multibytetoutf8',\n    'i18n_multibytetowidechar', 'i18n_utf8tomultibyte',\n    'i18n_widechartomultibyte',\n    'ibeta', 'icontour', 'iconvertcoord', 'idelete', 'identity',\n    'idl_base64', 'idl_container', 'idl_validname',\n    'idlexbr_assistant', 'idlitsys_createtool',\n    'idlunit', 'iellipse', 'igamma', 'igetcurrent', 'igetdata',\n    'igetid', 'igetproperty', 'iimage', 'image', 'image_cont',\n    'image_statistics', 'image_threshold', 'imaginary', 'imap', 'indgen',\n    'int_2d', 'int_3d', 'int_tabulated', 'intarr', 'interpol',\n    'interpolate', 'interval_volume', 'invert', 'ioctl', 'iopen',\n    'ir_filter', 'iplot', 'ipolygon', 'ipolyline', 'iputdata',\n    'iregister', 'ireset', 'iresolve', 'irotate', 'isa',\n    'isave', 'iscale', 'isetcurrent', 'isetproperty', 'ishft',\n    'isocontour', 'isosurface', 'isurface', 'itext', 'itranslate',\n    'ivector', 'ivolume', 'izoom', 'journal', 'json_parse',\n    'json_serialize', 'jul2greg', 'julday', 'keyword_set', 'krig2d',\n    'kurtosis', 'kw_test', 'l64indgen', 'la_choldc', 'la_cholmprove',\n    'la_cholsol', 'la_determ', 'la_eigenproblem', 'la_eigenql', 'la_eigenvec',\n    'la_elmhes', 'la_gm_linear_model', 'la_hqr', 'la_invert',\n    'la_least_square_equality', 'la_least_squares', 'la_linear_equation',\n    'la_ludc', 'la_lumprove', 'la_lusol',\n    'la_svd', 'la_tridc', 'la_trimprove', 'la_triql', 'la_trired',\n    'la_trisol', 'label_date', 'label_region', 'ladfit', 'laguerre',\n    'lambda', 'lambdap', 'lambertw', 'laplacian', 'least_squares_filter',\n    'leefilt', 'legend', 'legendre', 'linbcg', 'lindgen',\n    'linfit', 'linkimage', 'list', 'll_arc_distance', 'lmfit',\n    'lmgr', 'lngamma', 'lnp_test', 'loadct', 'locale_get',\n    'logical_and', 'logical_or', 'logical_true', 'lon64arr', 'lonarr',\n    'long', 'long64', 'lsode', 'lu_complex', 'ludc',\n    'lumprove', 'lusol', 'm_correlate', 'machar', 'make_array',\n    'make_dll', 'make_rt', 'map', 'mapcontinents', 'mapgrid',\n    'map_2points', 'map_continents', 'map_grid', 'map_image', 'map_patch',\n    'map_proj_forward', 'map_proj_image', 'map_proj_info',\n    'map_proj_init', 'map_proj_inverse',\n    'map_set', 'matrix_multiply', 'matrix_power', 'max', 'md_test',\n    'mean', 'meanabsdev', 'mean_filter', 'median', 'memory',\n    'mesh_clip', 'mesh_decimate', 'mesh_issolid',\n    'mesh_merge', 'mesh_numtriangles',\n    'mesh_obj', 'mesh_smooth', 'mesh_surfacearea',\n    'mesh_validate', 'mesh_volume',\n    'message', 'min', 'min_curve_surf', 'mk_html_help', 'modifyct',\n    'moment', 'morph_close', 'morph_distance',\n    'morph_gradient', 'morph_hitormiss',\n    'morph_open', 'morph_thin', 'morph_tophat', 'multi', 'n_elements',\n    'n_params', 'n_tags', 'ncdf', 'newton', 'noise_hurl',\n    'noise_pick', 'noise_scatter', 'noise_slur', 'norm', 'obj_class',\n    'obj_destroy', 'obj_hasmethod', 'obj_isa', 'obj_new', 'obj_valid',\n    'objarr', 'on_error', 'on_ioerror', 'online_help', 'openr',\n    'openu', 'openw', 'oplot', 'oploterr', 'orderedhash',\n    'p_correlate', 'parse_url', 'particle_trace', 'path_cache', 'path_sep',\n    'pcomp', 'plot', 'plot3d', 'plot', 'plot_3dbox',\n    'plot_field', 'ploterr', 'plots', 'polar_contour', 'polar_surface',\n    'polyfill', 'polyshade', 'pnt_line', 'point_lun', 'polarplot',\n    'poly', 'poly_2d', 'poly_area', 'poly_fit', 'polyfillv',\n    'polygon', 'polyline', 'polywarp', 'popd', 'powell',\n    'pref_commit', 'pref_get', 'pref_set', 'prewitt', 'primes',\n    'print', 'printf', 'printd', 'pro', 'product',\n    'profile', 'profiler', 'profiles', 'project_vol', 'ps_show_fonts',\n    'psafm', 'pseudo', 'ptr_free', 'ptr_new', 'ptr_valid',\n    'ptrarr', 'pushd', 'qgrid3', 'qhull', 'qromb',\n    'qromo', 'qsimp', 'query_*', 'query_ascii', 'query_bmp',\n    'query_csv', 'query_dicom', 'query_gif', 'query_image', 'query_jpeg',\n    'query_jpeg2000', 'query_mrsid', 'query_pict', 'query_png', 'query_ppm',\n    'query_srf', 'query_tiff', 'query_video', 'query_wav', 'r_correlate',\n    'r_test', 'radon', 'randomn', 'randomu', 'ranks',\n    'rdpix', 'read', 'readf', 'read_ascii', 'read_binary',\n    'read_bmp', 'read_csv', 'read_dicom', 'read_gif', 'read_image',\n    'read_interfile', 'read_jpeg', 'read_jpeg2000', 'read_mrsid', 'read_pict',\n    'read_png', 'read_ppm', 'read_spr', 'read_srf', 'read_sylk',\n    'read_tiff', 'read_video', 'read_wav', 'read_wave', 'read_x11_bitmap',\n    'read_xwd', 'reads', 'readu', 'real_part', 'rebin',\n    'recall_commands', 'recon3', 'reduce_colors', 'reform', 'region_grow',\n    'register_cursor', 'regress', 'replicate',\n    'replicate_inplace', 'resolve_all',\n    'resolve_routine', 'restore', 'retall', 'return', 'reverse',\n    'rk4', 'roberts', 'rot', 'rotate', 'round',\n    'routine_filepath', 'routine_info', 'rs_test', 's_test', 'save',\n    'savgol', 'scale3', 'scale3d', 'scatterplot', 'scatterplot3d',\n    'scope_level', 'scope_traceback', 'scope_varfetch',\n    'scope_varname', 'search2d',\n    'search3d', 'sem_create', 'sem_delete', 'sem_lock', 'sem_release',\n    'set_plot', 'set_shading', 'setenv', 'sfit', 'shade_surf',\n    'shade_surf_irr', 'shade_volume', 'shift', 'shift_diff', 'shmdebug',\n    'shmmap', 'shmunmap', 'shmvar', 'show3', 'showfont',\n    'signum', 'simplex', 'sin', 'sindgen', 'sinh',\n    'size', 'skewness', 'skip_lun', 'slicer3', 'slide_image',\n    'smooth', 'sobel', 'socket', 'sort', 'spawn',\n    'sph_4pnt', 'sph_scat', 'spher_harm', 'spl_init', 'spl_interp',\n    'spline', 'spline_p', 'sprsab', 'sprsax', 'sprsin',\n    'sprstp', 'sqrt', 'standardize', 'stddev', 'stop',\n    'strarr', 'strcmp', 'strcompress', 'streamline', 'streamline',\n    'stregex', 'stretch', 'string', 'strjoin', 'strlen',\n    'strlowcase', 'strmatch', 'strmessage', 'strmid', 'strpos',\n    'strput', 'strsplit', 'strtrim', 'struct_assign', 'struct_hide',\n    'strupcase', 'surface', 'surface', 'surfr', 'svdc',\n    'svdfit', 'svsol', 'swap_endian', 'swap_endian_inplace', 'symbol',\n    'systime', 't_cvf', 't_pdf', 't3d', 'tag_names',\n    'tan', 'tanh', 'tek_color', 'temporary', 'terminal_size',\n    'tetra_clip', 'tetra_surface', 'tetra_volume', 'text', 'thin',\n    'thread', 'threed', 'tic', 'time_test2', 'timegen',\n    'timer', 'timestamp', 'timestamptovalues', 'tm_test', 'toc',\n    'total', 'trace', 'transpose', 'tri_surf', 'triangulate',\n    'trigrid', 'triql', 'trired', 'trisol', 'truncate_lun',\n    'ts_coef', 'ts_diff', 'ts_fcast', 'ts_smooth', 'tv',\n    'tvcrs', 'tvlct', 'tvrd', 'tvscl', 'typename',\n    'uindgen', 'uint', 'uintarr', 'ul64indgen', 'ulindgen',\n    'ulon64arr', 'ulonarr', 'ulong', 'ulong64', 'uniq',\n    'unsharp_mask', 'usersym', 'value_locate', 'variance', 'vector',\n    'vector_field', 'vel', 'velovect', 'vert_t3d', 'voigt',\n    'volume', 'voronoi', 'voxel_proj', 'wait', 'warp_tri',\n    'watershed', 'wdelete', 'wf_draw', 'where', 'widget_base',\n    'widget_button', 'widget_combobox', 'widget_control',\n    'widget_displaycontextmenu', 'widget_draw',\n    'widget_droplist', 'widget_event', 'widget_info',\n    'widget_label', 'widget_list',\n    'widget_propertysheet', 'widget_slider', 'widget_tab',\n    'widget_table', 'widget_text',\n    'widget_tree', 'widget_tree_move', 'widget_window',\n    'wiener_filter', 'window',\n    'window', 'write_bmp', 'write_csv', 'write_gif', 'write_image',\n    'write_jpeg', 'write_jpeg2000', 'write_nrif', 'write_pict', 'write_png',\n    'write_ppm', 'write_spr', 'write_srf', 'write_sylk', 'write_tiff',\n    'write_video', 'write_wav', 'write_wave', 'writeu', 'wset',\n    'wshow', 'wtn', 'wv_applet', 'wv_cwt', 'wv_cw_wavelet',\n    'wv_denoise', 'wv_dwt', 'wv_fn_coiflet',\n    'wv_fn_daubechies', 'wv_fn_gaussian',\n    'wv_fn_haar', 'wv_fn_morlet', 'wv_fn_paul',\n    'wv_fn_symlet', 'wv_import_data',\n    'wv_import_wavelet', 'wv_plot3d_wps', 'wv_plot_multires',\n    'wv_pwt', 'wv_tool_denoise',\n    'xbm_edit', 'xdisplayfile', 'xdxf', 'xfont', 'xinteranimate',\n    'xloadct', 'xmanager', 'xmng_tmpl', 'xmtool', 'xobjview',\n    'xobjview_rotate', 'xobjview_write_image',\n    'xpalette', 'xpcolor', 'xplot3d',\n    'xregistered', 'xroi', 'xsq_test', 'xsurface', 'xvaredit',\n    'xvolume', 'xvolume_rotate', 'xvolume_write_image',\n    'xyouts', 'zlib_compress', 'zlib_uncompress', 'zoom', 'zoom_24'\n  ];\n  var builtins = wordRegexp(builtinArray);\n\n  var keywordArray = [\n    'begin', 'end', 'endcase', 'endfor',\n    'endwhile', 'endif', 'endrep', 'endforeach',\n    'break', 'case', 'continue', 'for',\n    'foreach', 'goto', 'if', 'then', 'else',\n    'repeat', 'until', 'switch', 'while',\n    'do', 'pro', 'function'\n  ];\n  var keywords = wordRegexp(keywordArray);\n\n  CodeMirror.registerHelper(\"hintWords\", \"idl\", builtinArray.concat(keywordArray));\n\n  var identifiers = new RegExp('^[_a-z\\xa1-\\uffff][_a-z0-9\\xa1-\\uffff]*', 'i');\n\n  var singleOperators = /[+\\-*&=<>\\/@#~$]/;\n  var boolOperators = new RegExp('(and|or|eq|lt|le|gt|ge|ne|not)', 'i');\n\n  function tokenBase(stream) {\n    // whitespaces\n    if (stream.eatSpace()) return null;\n\n    // Handle one line Comments\n    if (stream.match(';')) {\n      stream.skipToEnd();\n      return 'comment';\n    }\n\n    // Handle Number Literals\n    if (stream.match(/^[0-9\\.+-]/, false)) {\n      if (stream.match(/^[+-]?0x[0-9a-fA-F]+/))\n        return 'number';\n      if (stream.match(/^[+-]?\\d*\\.\\d+([EeDd][+-]?\\d+)?/))\n        return 'number';\n      if (stream.match(/^[+-]?\\d+([EeDd][+-]?\\d+)?/))\n        return 'number';\n    }\n\n    // Handle Strings\n    if (stream.match(/^\"([^\"]|(\"\"))*\"/)) { return 'string'; }\n    if (stream.match(/^'([^']|(''))*'/)) { return 'string'; }\n\n    // Handle words\n    if (stream.match(keywords)) { return 'keyword'; }\n    if (stream.match(builtins)) { return 'builtin'; }\n    if (stream.match(identifiers)) { return 'variable'; }\n\n    if (stream.match(singleOperators) || stream.match(boolOperators)) {\n      return 'operator'; }\n\n    // Handle non-detected items\n    stream.next();\n    return null;\n  };\n\n  CodeMirror.defineMode('idl', function() {\n    return {\n      token: function(stream) {\n        return tokenBase(stream);\n      }\n    };\n  });\n\n  CodeMirror.defineMIME('text/x-idl', 'idl');\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/idl/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: IDL mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"idl.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">IDL</a>\n  </ul>\n</div>\n\n<article>\n<h2>IDL mode</h2>\n\n    <div><textarea id=\"code\" name=\"code\">\n;; Example IDL code\nFUNCTION mean_and_stddev,array\n  ;; This program reads in an array of numbers\n  ;; and returns a structure containing the\n  ;; average and standard deviation\n\n  ave = 0.0\n  count = 0.0\n\n  for i=0,N_ELEMENTS(array)-1 do begin\n      ave = ave + array[i]\n      count = count + 1\n  endfor\n  \n  ave = ave/count\n\n  std = stddev(array)  \n\n  return, {average:ave,std:std}\n\nEND\n\n    </textarea></div>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: {name: \"idl\",\n               version: 1,\n               singleLineStringErrors: false},\n        lineNumbers: true,\n        indentUnit: 4,\n        matchBrackets: true\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-idl</code>.</p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Language Modes</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../doc/docs.css\">\n\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../index.html\">Home</a>\n    <li><a href=\"../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a class=active href=\"#\">Language modes</a>\n  </ul>\n</div>\n\n<article>\n\n  <h2>Language modes</h2>\n\n  <p>This is a list of every mode in the distribution. Each mode lives\nin a subdirectory of the <code>mode/</code> directory, and typically\ndefines a single JavaScript file that implements the mode. Loading\nsuch file will make the language available to CodeMirror, through\nthe <a href=\"../doc/manual.html#option_mode\"><code>mode</code></a>\noption.</p>\n\n  <div style=\"-webkit-columns: 100px 2; -moz-columns: 100px 2; columns: 100px 2;\">\n    <ul style=\"margin-top: 0\">\n      <li><a href=\"apl/index.html\">APL</a></li>\n      <li><a href=\"asterisk/index.html\">Asterisk dialplan</a></li>\n      <li><a href=\"clike/index.html\">C, C++, C#</a></li>\n      <li><a href=\"clojure/index.html\">Clojure</a></li>\n      <li><a href=\"cobol/index.html\">COBOL</a></li>\n      <li><a href=\"coffeescript/index.html\">CoffeeScript</a></li>\n      <li><a href=\"commonlisp/index.html\">Common Lisp</a></li>\n      <li><a href=\"css/index.html\">CSS</a></li>\n      <li><a href=\"cypher/index.html\">Cypher</a></li>\n      <li><a href=\"python/index.html\">Cython</a></li>\n      <li><a href=\"d/index.html\">D</a></li>\n      <li><a href=\"dart/index.html\">Dart</a></li>\n      <li><a href=\"django/index.html\">Django</a> (templating language)</li>\n      <li><a href=\"dockerfile/index.html\">Dockerfile</a></li>\n      <li><a href=\"diff/index.html\">diff</a></li>\n      <li><a href=\"dtd/index.html\">DTD</a></li>\n      <li><a href=\"dylan/index.html\">Dylan</a></li>\n      <li><a href=\"ebnf/index.html\">EBNF</a></li>\n      <li><a href=\"ecl/index.html\">ECL</a></li>\n      <li><a href=\"eiffel/index.html\">Eiffel</a></li>\n      <li><a href=\"erlang/index.html\">Erlang</a></li>\n      <li><a href=\"forth/index.html\">Forth</a></li>\n      <li><a href=\"fortran/index.html\">Fortran</a></li>\n      <li><a href=\"mllike/index.html\">F#</a></li>\n      <li><a href=\"gas/index.html\">Gas</a> (AT&amp;T-style assembly)</li>\n      <li><a href=\"gherkin/index.html\">Gherkin</a></li>\n      <li><a href=\"go/index.html\">Go</a></li>\n      <li><a href=\"groovy/index.html\">Groovy</a></li>\n      <li><a href=\"haml/index.html\">HAML</a></li>\n      <li><a href=\"haskell/index.html\">Haskell</a></li>\n      <li><a href=\"haxe/index.html\">Haxe</a></li>\n      <li><a href=\"htmlembedded/index.html\">HTML embedded scripts</a></li>\n      <li><a href=\"htmlmixed/index.html\">HTML mixed-mode</a></li>\n      <li><a href=\"http/index.html\">HTTP</a></li>\n      <li><a href=\"idl/index.html\">IDL</a></li>\n      <li><a href=\"clike/index.html\">Java</a></li>\n      <li><a href=\"jade/index.html\">Jade</a></li>\n      <li><a href=\"javascript/index.html\">JavaScript</a></li>\n      <li><a href=\"jinja2/index.html\">Jinja2</a></li>\n      <li><a href=\"julia/index.html\">Julia</a></li>\n      <li><a href=\"kotlin/index.html\">Kotlin</a></li>\n      <li><a href=\"css/less.html\">LESS</a></li>\n      <li><a href=\"livescript/index.html\">LiveScript</a></li>\n      <li><a href=\"lua/index.html\">Lua</a></li>\n      <li><a href=\"markdown/index.html\">Markdown</a> (<a href=\"gfm/index.html\">GitHub-flavour</a>)</li>\n      <li><a href=\"mirc/index.html\">mIRC</a></li>\n      <li><a href=\"modelica/index.html\">Modelica</a></li>\n      <li><a href=\"nginx/index.html\">Nginx</a></li>\n      <li><a href=\"ntriples/index.html\">NTriples</a></li>\n      <li><a href=\"clike/index.html\">Objective C</a></li>\n      <li><a href=\"mllike/index.html\">OCaml</a></li>\n      <li><a href=\"octave/index.html\">Octave</a> (MATLAB)</li>\n      <li><a href=\"pascal/index.html\">Pascal</a></li>\n      <li><a href=\"pegjs/index.html\">PEG.js</a></li>\n      <li><a href=\"perl/index.html\">Perl</a></li>\n      <li><a href=\"php/index.html\">PHP</a></li>\n      <li><a href=\"pig/index.html\">Pig Latin</a></li>\n      <li><a href=\"properties/index.html\">Properties files</a></li>\n      <li><a href=\"puppet/index.html\">Puppet</a></li>\n      <li><a href=\"python/index.html\">Python</a></li>\n      <li><a href=\"q/index.html\">Q</a></li>\n      <li><a href=\"r/index.html\">R</a></li>\n      <li><a href=\"rpm/index.html\">RPM</a></li>\n      <li><a href=\"rst/index.html\">reStructuredText</a></li>\n      <li><a href=\"ruby/index.html\">Ruby</a></li>\n      <li><a href=\"rust/index.html\">Rust</a></li>\n      <li><a href=\"sass/index.html\">Sass</a></li>\n      <li><a href=\"spreadsheet/index.html\">Spreadsheet</a></li>\n      <li><a href=\"clike/scala.html\">Scala</a></li>\n      <li><a href=\"scheme/index.html\">Scheme</a></li>\n      <li><a href=\"css/scss.html\">SCSS</a></li>\n      <li><a href=\"shell/index.html\">Shell</a></li>\n      <li><a href=\"sieve/index.html\">Sieve</a></li>\n      <li><a href=\"slim/index.html\">Slim</a></li>\n      <li><a href=\"smalltalk/index.html\">Smalltalk</a></li>\n      <li><a href=\"smarty/index.html\">Smarty</a></li>\n      <li><a href=\"smartymixed/index.html\">Smarty/HTML mixed</a></li>\n      <li><a href=\"solr/index.html\">Solr</a></li>\n      <li><a href=\"soy/index.html\">Soy</a></li>\n      <li><a href=\"stylus/index.html\">Stylus</a></li>\n      <li><a href=\"sql/index.html\">SQL</a> (several dialects)</li>\n      <li><a href=\"sparql/index.html\">SPARQL</a></li>\n      <li><a href=\"stex/index.html\">sTeX, LaTeX</a></li>\n      <li><a href=\"tcl/index.html\">Tcl</a></li>\n      <li><a href=\"textile/index.html\">Textile</a></li>\n      <li><a href=\"tiddlywiki/index.html\">Tiddlywiki</a></li>\n      <li><a href=\"tiki/index.html\">Tiki wiki</a></li>\n      <li><a href=\"toml/index.html\">TOML</a></li>\n      <li><a href=\"tornado/index.html\">Tornado</a> (templating language)</li>\n      <li><a href=\"turtle/index.html\">Turtle</a></li>\n      <li><a href=\"vb/index.html\">VB.NET</a></li>\n      <li><a href=\"vbscript/index.html\">VBScript</a></li>\n      <li><a href=\"velocity/index.html\">Velocity</a></li>\n      <li><a href=\"verilog/index.html\">Verilog/SystemVerilog</a></li>\n      <li><a href=\"xml/index.html\">XML/HTML</a></li>\n      <li><a href=\"xquery/index.html\">XQuery</a></li>\n      <li><a href=\"yaml/index.html\">YAML</a></li>\n      <li><a href=\"z80/index.html\">Z80</a></li>\n    </ul>\n  </div>\n\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/jade/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Jade Templating Mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../javascript/javascript.js\"></script>\n<script src=\"../css/css.js\"></script>\n<script src=\"../xml/xml.js\"></script>\n<script src=\"../htmlmixed/htmlmixed.js\"></script>\n<script src=\"jade.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Jade Templating Mode</a>\n  </ul>\n</div>\n\n<article>\n<h2>Jade Templating Mode</h2>\n<form><textarea id=\"code\" name=\"code\">\ndoctype html\n  html\n    head\n      title= \"Jade Templating CodeMirror Mode Example\"\n      link(rel='stylesheet', href='/css/bootstrap.min.css')\n      link(rel='stylesheet', href='/css/index.css')\n      script(type='text/javascript', src='/js/jquery-1.9.1.min.js')\n      script(type='text/javascript', src='/js/bootstrap.min.js')\n    body\n      div.header\n        h1 Welcome to this Example\n      div.spots\n        if locals.spots\n          each spot in spots\n            div.spot.well\n         div\n           if spot.logo\n             img.img-rounded.logo(src=spot.logo)\n           else\n             img.img-rounded.logo(src=\"img/placeholder.png\")\n         h3\n           a(href=spot.hash) ##{spot.hash}\n           if spot.title\n             span.title #{spot.title}\n           if spot.desc\n             div #{spot.desc}\n        else\n          h3 There are no spots currently available.\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: {name: \"jade\", alignCDATA: true},\n        lineNumbers: true\n      });\n    </script>\n    <h3>The Jade Templating Mode</h3>\n      <p> Created by Forbes Lindesay. Managed as part of a Brackets extension at <a href=\"https://github.com/ForbesLindesay/jade-brackets\">https://github.com/ForbesLindesay/jade-brackets</a>.</p>\n    <p><strong>MIME type defined:</strong> <code>text/x-jade</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/jade/jade.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../javascript/javascript\"), require(\"../css/css\"), require(\"../htmlmixed/htmlmixed\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../javascript/javascript\", \"../css/css\", \"../htmlmixed/htmlmixed\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode('jade', function (config) {\n  // token types\n  var KEYWORD = 'keyword';\n  var DOCTYPE = 'meta';\n  var ID = 'builtin';\n  var CLASS = 'qualifier';\n\n  var ATTRS_NEST = {\n    '{': '}',\n    '(': ')',\n    '[': ']'\n  };\n\n  var jsMode = CodeMirror.getMode(config, 'javascript');\n\n  function State() {\n    this.javaScriptLine = false;\n    this.javaScriptLineExcludesColon = false;\n\n    this.javaScriptArguments = false;\n    this.javaScriptArgumentsDepth = 0;\n\n    this.isInterpolating = false;\n    this.interpolationNesting = 0;\n\n    this.jsState = jsMode.startState();\n\n    this.restOfLine = '';\n\n    this.isIncludeFiltered = false;\n    this.isEach = false;\n\n    this.lastTag = '';\n    this.scriptType = '';\n\n    // Attributes Mode\n    this.isAttrs = false;\n    this.attrsNest = [];\n    this.inAttributeName = true;\n    this.attributeIsType = false;\n    this.attrValue = '';\n\n    // Indented Mode\n    this.indentOf = Infinity;\n    this.indentToken = '';\n\n    this.innerMode = null;\n    this.innerState = null;\n\n    this.innerModeForLine = false;\n  }\n  /**\n   * Safely copy a state\n   *\n   * @return {State}\n   */\n  State.prototype.copy = function () {\n    var res = new State();\n    res.javaScriptLine = this.javaScriptLine;\n    res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon;\n    res.javaScriptArguments = this.javaScriptArguments;\n    res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth;\n    res.isInterpolating = this.isInterpolating;\n    res.interpolationNesting = this.intpolationNesting;\n\n    res.jsState = CodeMirror.copyState(jsMode, this.jsState);\n\n    res.innerMode = this.innerMode;\n    if (this.innerMode && this.innerState) {\n      res.innerState = CodeMirror.copyState(this.innerMode, this.innerState);\n    }\n\n    res.restOfLine = this.restOfLine;\n\n    res.isIncludeFiltered = this.isIncludeFiltered;\n    res.isEach = this.isEach;\n    res.lastTag = this.lastTag;\n    res.scriptType = this.scriptType;\n    res.isAttrs = this.isAttrs;\n    res.attrsNest = this.attrsNest.slice();\n    res.inAttributeName = this.inAttributeName;\n    res.attributeIsType = this.attributeIsType;\n    res.attrValue = this.attrValue;\n    res.indentOf = this.indentOf;\n    res.indentToken = this.indentToken;\n\n    res.innerModeForLine = this.innerModeForLine;\n\n    return res;\n  };\n\n  function javaScript(stream, state) {\n    if (stream.sol()) {\n      // if javaScriptLine was set at end of line, ignore it\n      state.javaScriptLine = false;\n      state.javaScriptLineExcludesColon = false;\n    }\n    if (state.javaScriptLine) {\n      if (state.javaScriptLineExcludesColon && stream.peek() === ':') {\n        state.javaScriptLine = false;\n        state.javaScriptLineExcludesColon = false;\n        return;\n      }\n      var tok = jsMode.token(stream, state.jsState);\n      if (stream.eol()) state.javaScriptLine = false;\n      return tok || true;\n    }\n  }\n  function javaScriptArguments(stream, state) {\n    if (state.javaScriptArguments) {\n      if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') {\n        state.javaScriptArguments = false;\n        return;\n      }\n      if (stream.peek() === '(') {\n        state.javaScriptArgumentsDepth++;\n      } else if (stream.peek() === ')') {\n        state.javaScriptArgumentsDepth--;\n      }\n      if (state.javaScriptArgumentsDepth === 0) {\n        state.javaScriptArguments = false;\n        return;\n      }\n\n      var tok = jsMode.token(stream, state.jsState);\n      return tok || true;\n    }\n  }\n\n  function yieldStatement(stream) {\n    if (stream.match(/^yield\\b/)) {\n        return 'keyword';\n    }\n  }\n\n  function doctype(stream) {\n    if (stream.match(/^(?:doctype) *([^\\n]+)?/)) {\n        return DOCTYPE;\n    }\n  }\n\n  function interpolation(stream, state) {\n    if (stream.match('#{')) {\n      state.isInterpolating = true;\n      state.interpolationNesting = 0;\n      return 'punctuation';\n    }\n  }\n\n  function interpolationContinued(stream, state) {\n    if (state.isInterpolating) {\n      if (stream.peek() === '}') {\n        state.interpolationNesting--;\n        if (state.interpolationNesting < 0) {\n          stream.next();\n          state.isInterpolating = false;\n          return 'puncutation';\n        }\n      } else if (stream.peek() === '{') {\n        state.interpolationNesting++;\n      }\n      return jsMode.token(stream, state.jsState) || true;\n    }\n  }\n\n  function caseStatement(stream, state) {\n    if (stream.match(/^case\\b/)) {\n      state.javaScriptLine = true;\n      return KEYWORD;\n    }\n  }\n\n  function when(stream, state) {\n    if (stream.match(/^when\\b/)) {\n      state.javaScriptLine = true;\n      state.javaScriptLineExcludesColon = true;\n      return KEYWORD;\n    }\n  }\n\n  function defaultStatement(stream) {\n    if (stream.match(/^default\\b/)) {\n      return KEYWORD;\n    }\n  }\n\n  function extendsStatement(stream, state) {\n    if (stream.match(/^extends?\\b/)) {\n      state.restOfLine = 'string';\n      return KEYWORD;\n    }\n  }\n\n  function append(stream, state) {\n    if (stream.match(/^append\\b/)) {\n      state.restOfLine = 'variable';\n      return KEYWORD;\n    }\n  }\n  function prepend(stream, state) {\n    if (stream.match(/^prepend\\b/)) {\n      state.restOfLine = 'variable';\n      return KEYWORD;\n    }\n  }\n  function block(stream, state) {\n    if (stream.match(/^block\\b *(?:(prepend|append)\\b)?/)) {\n      state.restOfLine = 'variable';\n      return KEYWORD;\n    }\n  }\n\n  function include(stream, state) {\n    if (stream.match(/^include\\b/)) {\n      state.restOfLine = 'string';\n      return KEYWORD;\n    }\n  }\n\n  function includeFiltered(stream, state) {\n    if (stream.match(/^include:([a-zA-Z0-9\\-]+)/, false) && stream.match('include')) {\n      state.isIncludeFiltered = true;\n      return KEYWORD;\n    }\n  }\n\n  function includeFilteredContinued(stream, state) {\n    if (state.isIncludeFiltered) {\n      var tok = filter(stream, state);\n      state.isIncludeFiltered = false;\n      state.restOfLine = 'string';\n      return tok;\n    }\n  }\n\n  function mixin(stream, state) {\n    if (stream.match(/^mixin\\b/)) {\n      state.javaScriptLine = true;\n      return KEYWORD;\n    }\n  }\n\n  function call(stream, state) {\n    if (stream.match(/^\\+([-\\w]+)/)) {\n      if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n        state.javaScriptArguments = true;\n        state.javaScriptArgumentsDepth = 0;\n      }\n      return 'variable';\n    }\n    if (stream.match(/^\\+#{/, false)) {\n      stream.next();\n      state.mixinCallAfter = true;\n      return interpolation(stream, state);\n    }\n  }\n  function callArguments(stream, state) {\n    if (state.mixinCallAfter) {\n      state.mixinCallAfter = false;\n      if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n        state.javaScriptArguments = true;\n        state.javaScriptArgumentsDepth = 0;\n      }\n      return true;\n    }\n  }\n\n  function conditional(stream, state) {\n    if (stream.match(/^(if|unless|else if|else)\\b/)) {\n      state.javaScriptLine = true;\n      return KEYWORD;\n    }\n  }\n\n  function each(stream, state) {\n    if (stream.match(/^(- *)?(each|for)\\b/)) {\n      state.isEach = true;\n      return KEYWORD;\n    }\n  }\n  function eachContinued(stream, state) {\n    if (state.isEach) {\n      if (stream.match(/^ in\\b/)) {\n        state.javaScriptLine = true;\n        state.isEach = false;\n        return KEYWORD;\n      } else if (stream.sol() || stream.eol()) {\n        state.isEach = false;\n      } else if (stream.next()) {\n        while (!stream.match(/^ in\\b/, false) && stream.next());\n        return 'variable';\n      }\n    }\n  }\n\n  function whileStatement(stream, state) {\n    if (stream.match(/^while\\b/)) {\n      state.javaScriptLine = true;\n      return KEYWORD;\n    }\n  }\n\n  function tag(stream, state) {\n    var captures;\n    if (captures = stream.match(/^(\\w(?:[-:\\w]*\\w)?)\\/?/)) {\n      state.lastTag = captures[1].toLowerCase();\n      if (state.lastTag === 'script') {\n        state.scriptType = 'application/javascript';\n      }\n      return 'tag';\n    }\n  }\n\n  function filter(stream, state) {\n    if (stream.match(/^:([\\w\\-]+)/)) {\n      var innerMode;\n      if (config && config.innerModes) {\n        innerMode = config.innerModes(stream.current().substring(1));\n      }\n      if (!innerMode) {\n        innerMode = stream.current().substring(1);\n      }\n      if (typeof innerMode === 'string') {\n        innerMode = CodeMirror.getMode(config, innerMode);\n      }\n      setInnerMode(stream, state, innerMode);\n      return 'atom';\n    }\n  }\n\n  function code(stream, state) {\n    if (stream.match(/^(!?=|-)/)) {\n      state.javaScriptLine = true;\n      return 'punctuation';\n    }\n  }\n\n  function id(stream) {\n    if (stream.match(/^#([\\w-]+)/)) {\n      return ID;\n    }\n  }\n\n  function className(stream) {\n    if (stream.match(/^\\.([\\w-]+)/)) {\n      return CLASS;\n    }\n  }\n\n  function attrs(stream, state) {\n    if (stream.peek() == '(') {\n      stream.next();\n      state.isAttrs = true;\n      state.attrsNest = [];\n      state.inAttributeName = true;\n      state.attrValue = '';\n      state.attributeIsType = false;\n      return 'punctuation';\n    }\n  }\n\n  function attrsContinued(stream, state) {\n    if (state.isAttrs) {\n      if (ATTRS_NEST[stream.peek()]) {\n        state.attrsNest.push(ATTRS_NEST[stream.peek()]);\n      }\n      if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) {\n        state.attrsNest.pop();\n      } else  if (stream.eat(')')) {\n        state.isAttrs = false;\n        return 'punctuation';\n      }\n      if (state.inAttributeName && stream.match(/^[^=,\\)!]+/)) {\n        if (stream.peek() === '=' || stream.peek() === '!') {\n          state.inAttributeName = false;\n          state.jsState = jsMode.startState();\n          if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') {\n            state.attributeIsType = true;\n          } else {\n            state.attributeIsType = false;\n          }\n        }\n        return 'attribute';\n      }\n\n      var tok = jsMode.token(stream, state.jsState);\n      if (state.attributeIsType && tok === 'string') {\n        state.scriptType = stream.current().toString();\n      }\n      if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) {\n        try {\n          Function('', 'var x ' + state.attrValue.replace(/,\\s*$/, '').replace(/^!/, ''));\n          state.inAttributeName = true;\n          state.attrValue = '';\n          stream.backUp(stream.current().length);\n          return attrsContinued(stream, state);\n        } catch (ex) {\n          //not the end of an attribute\n        }\n      }\n      state.attrValue += stream.current();\n      return tok || true;\n    }\n  }\n\n  function attributesBlock(stream, state) {\n    if (stream.match(/^&attributes\\b/)) {\n      state.javaScriptArguments = true;\n      state.javaScriptArgumentsDepth = 0;\n      return 'keyword';\n    }\n  }\n\n  function indent(stream) {\n    if (stream.sol() && stream.eatSpace()) {\n      return 'indent';\n    }\n  }\n\n  function comment(stream, state) {\n    if (stream.match(/^ *\\/\\/(-)?([^\\n]*)/)) {\n      state.indentOf = stream.indentation();\n      state.indentToken = 'comment';\n      return 'comment';\n    }\n  }\n\n  function colon(stream) {\n    if (stream.match(/^: */)) {\n      return 'colon';\n    }\n  }\n\n  function text(stream, state) {\n    if (stream.match(/^(?:\\| ?| )([^\\n]+)/)) {\n      return 'string';\n    }\n    if (stream.match(/^(<[^\\n]*)/, false)) {\n      // html string\n      setInnerMode(stream, state, 'htmlmixed');\n      state.innerModeForLine = true;\n      return innerMode(stream, state, true);\n    }\n  }\n\n  function dot(stream, state) {\n    if (stream.eat('.')) {\n      var innerMode = null;\n      if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) {\n        innerMode = state.scriptType.toLowerCase().replace(/\"|'/g, '');\n      } else if (state.lastTag === 'style') {\n        innerMode = 'css';\n      }\n      setInnerMode(stream, state, innerMode);\n      return 'dot';\n    }\n  }\n\n  function fail(stream) {\n    stream.next();\n    return null;\n  }\n\n\n  function setInnerMode(stream, state, mode) {\n    mode = CodeMirror.mimeModes[mode] || mode;\n    mode = config.innerModes ? config.innerModes(mode) || mode : mode;\n    mode = CodeMirror.mimeModes[mode] || mode;\n    mode = CodeMirror.getMode(config, mode);\n    state.indentOf = stream.indentation();\n\n    if (mode && mode.name !== 'null') {\n      state.innerMode = mode;\n    } else {\n      state.indentToken = 'string';\n    }\n  }\n  function innerMode(stream, state, force) {\n    if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) {\n      if (state.innerMode) {\n        if (!state.innerState) {\n          state.innerState = state.innerMode.startState ? state.innerMode.startState(stream.indentation()) : {};\n        }\n        return stream.hideFirstChars(state.indentOf + 2, function () {\n          return state.innerMode.token(stream, state.innerState) || true;\n        });\n      } else {\n        stream.skipToEnd();\n        return state.indentToken;\n      }\n    } else if (stream.sol()) {\n      state.indentOf = Infinity;\n      state.indentToken = null;\n      state.innerMode = null;\n      state.innerState = null;\n    }\n  }\n  function restOfLine(stream, state) {\n    if (stream.sol()) {\n      // if restOfLine was set at end of line, ignore it\n      state.restOfLine = '';\n    }\n    if (state.restOfLine) {\n      stream.skipToEnd();\n      var tok = state.restOfLine;\n      state.restOfLine = '';\n      return tok;\n    }\n  }\n\n\n  function startState() {\n    return new State();\n  }\n  function copyState(state) {\n    return state.copy();\n  }\n  /**\n   * Get the next token in the stream\n   *\n   * @param {Stream} stream\n   * @param {State} state\n   */\n  function nextToken(stream, state) {\n    var tok = innerMode(stream, state)\n      || restOfLine(stream, state)\n      || interpolationContinued(stream, state)\n      || includeFilteredContinued(stream, state)\n      || eachContinued(stream, state)\n      || attrsContinued(stream, state)\n      || javaScript(stream, state)\n      || javaScriptArguments(stream, state)\n      || callArguments(stream, state)\n\n      || yieldStatement(stream, state)\n      || doctype(stream, state)\n      || interpolation(stream, state)\n      || caseStatement(stream, state)\n      || when(stream, state)\n      || defaultStatement(stream, state)\n      || extendsStatement(stream, state)\n      || append(stream, state)\n      || prepend(stream, state)\n      || block(stream, state)\n      || include(stream, state)\n      || includeFiltered(stream, state)\n      || mixin(stream, state)\n      || call(stream, state)\n      || conditional(stream, state)\n      || each(stream, state)\n      || whileStatement(stream, state)\n      || tag(stream, state)\n      || filter(stream, state)\n      || code(stream, state)\n      || id(stream, state)\n      || className(stream, state)\n      || attrs(stream, state)\n      || attributesBlock(stream, state)\n      || indent(stream, state)\n      || text(stream, state)\n      || comment(stream, state)\n      || colon(stream, state)\n      || dot(stream, state)\n      || fail(stream, state);\n\n    return tok === true ? null : tok;\n  }\n  return {\n    startState: startState,\n    copyState: copyState,\n    token: nextToken\n  };\n});\n\nCodeMirror.defineMIME('text/x-jade', 'jade');\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/javascript/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: JavaScript mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"../../addon/comment/continuecomment.js\"></script>\n<script src=\"../../addon/comment/comment.js\"></script>\n<script src=\"javascript.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">JavaScript</a>\n  </ul>\n</div>\n\n<article>\n<h2>JavaScript mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\n// Demo code (the actual new parser character stream implementation)\n\nfunction StringStream(string) {\n  this.pos = 0;\n  this.string = string;\n}\n\nStringStream.prototype = {\n  done: function() {return this.pos >= this.string.length;},\n  peek: function() {return this.string.charAt(this.pos);},\n  next: function() {\n    if (this.pos &lt; this.string.length)\n      return this.string.charAt(this.pos++);\n  },\n  eat: function(match) {\n    var ch = this.string.charAt(this.pos);\n    if (typeof match == \"string\") var ok = ch == match;\n    else var ok = ch &amp;&amp; match.test ? match.test(ch) : match(ch);\n    if (ok) {this.pos++; return ch;}\n  },\n  eatWhile: function(match) {\n    var start = this.pos;\n    while (this.eat(match));\n    if (this.pos > start) return this.string.slice(start, this.pos);\n  },\n  backUp: function(n) {this.pos -= n;},\n  column: function() {return this.pos;},\n  eatSpace: function() {\n    var start = this.pos;\n    while (/\\s/.test(this.string.charAt(this.pos))) this.pos++;\n    return this.pos - start;\n  },\n  match: function(pattern, consume, caseInsensitive) {\n    if (typeof pattern == \"string\") {\n      function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}\n      if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) {\n        if (consume !== false) this.pos += str.length;\n        return true;\n      }\n    }\n    else {\n      var match = this.string.slice(this.pos).match(pattern);\n      if (match &amp;&amp; consume !== false) this.pos += match[0].length;\n      return match;\n    }\n  }\n};\n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        continueComments: \"Enter\",\n        extraKeys: {\"Ctrl-Q\": \"toggleComment\"}\n      });\n    </script>\n\n    <p>\n      JavaScript mode supports several configuration options:\n      <ul>\n        <li><code>json</code> which will set the mode to expect JSON\n        data rather than a JavaScript program.</li>\n        <li><code>jsonld</code> which will set the mode to expect\n        <a href=\"http://json-ld.org\">JSON-LD</a> linked data rather\n        than a JavaScript program (<a href=\"json-ld.html\">demo</a>).</li>\n        <li><code>typescript</code> which will activate additional\n        syntax highlighting and some other things for TypeScript code\n        (<a href=\"typescript.html\">demo</a>).</li>\n        <li><code>statementIndent</code> which (given a number) will\n        determine the amount of indentation to use for statements\n        continued on a new line.</li>\n        <li><code>wordCharacters</code>, a regexp that indicates which\n        characters should be considered part of an identifier.\n        Defaults to <code>/[\\w$]/</code>, which does not handle\n        non-ASCII identifiers. Can be set to something more elaborate\n        to improve Unicode support.</li>\n      </ul>\n    </p>\n\n    <p><strong>MIME types defined:</strong> <code>text/javascript</code>, <code>application/json</code>, <code>application/ld+json</code>, <code>text/typescript</code>, <code>application/typescript</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/javascript/javascript.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// TODO actually recognize syntax of TypeScript constructs\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n  var indentUnit = config.indentUnit;\n  var statementIndent = parserConfig.statementIndent;\n  var jsonldMode = parserConfig.jsonld;\n  var jsonMode = parserConfig.json || jsonldMode;\n  var isTS = parserConfig.typescript;\n  var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n  // Tokenizer\n\n  var keywords = function(){\n    function kw(type) {return {type: type, style: \"keyword\"};}\n    var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\");\n    var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n    var jsKeywords = {\n      \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n      \"return\": C, \"break\": C, \"continue\": C, \"new\": C, \"delete\": C, \"throw\": C, \"debugger\": C,\n      \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n      \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n      \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n      \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n      \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n      \"this\": kw(\"this\"), \"module\": kw(\"module\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n      \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C\n    };\n\n    // Extend the 'normal' keywords with the TypeScript language extensions\n    if (isTS) {\n      var type = {type: \"variable\", style: \"variable-3\"};\n      var tsKeywords = {\n        // object-like things\n        \"interface\": kw(\"interface\"),\n        \"extends\": kw(\"extends\"),\n        \"constructor\": kw(\"constructor\"),\n\n        // scope modifiers\n        \"public\": kw(\"public\"),\n        \"private\": kw(\"private\"),\n        \"protected\": kw(\"protected\"),\n        \"static\": kw(\"static\"),\n\n        // types\n        \"string\": type, \"number\": type, \"bool\": type, \"any\": type\n      };\n\n      for (var attr in tsKeywords) {\n        jsKeywords[attr] = tsKeywords[attr];\n      }\n    }\n\n    return jsKeywords;\n  }();\n\n  var isOperatorChar = /[+\\-*&%=<>!?|~^]/;\n  var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n  function readRegexp(stream) {\n    var escaped = false, next, inSet = false;\n    while ((next = stream.next()) != null) {\n      if (!escaped) {\n        if (next == \"/\" && !inSet) return;\n        if (next == \"[\") inSet = true;\n        else if (inSet && next == \"]\") inSet = false;\n      }\n      escaped = !escaped && next == \"\\\\\";\n    }\n  }\n\n  // Used as scratch variables to communicate multiple values without\n  // consing up tons of objects.\n  var type, content;\n  function ret(tp, style, cont) {\n    type = tp; content = cont;\n    return style;\n  }\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    if (ch == '\"' || ch == \"'\") {\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    } else if (ch == \".\" && stream.match(/^\\d+(?:[eE][+\\-]?\\d+)?/)) {\n      return ret(\"number\", \"number\");\n    } else if (ch == \".\" && stream.match(\"..\")) {\n      return ret(\"spread\", \"meta\");\n    } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n      return ret(ch);\n    } else if (ch == \"=\" && stream.eat(\">\")) {\n      return ret(\"=>\", \"operator\");\n    } else if (ch == \"0\" && stream.eat(/x/i)) {\n      stream.eatWhile(/[\\da-f]/i);\n      return ret(\"number\", \"number\");\n    } else if (/\\d/.test(ch)) {\n      stream.match(/^\\d*(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/);\n      return ret(\"number\", \"number\");\n    } else if (ch == \"/\") {\n      if (stream.eat(\"*\")) {\n        state.tokenize = tokenComment;\n        return tokenComment(stream, state);\n      } else if (stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return ret(\"comment\", \"comment\");\n      } else if (state.lastType == \"operator\" || state.lastType == \"keyword c\" ||\n               state.lastType == \"sof\" || /^[\\[{}\\(,;:]$/.test(state.lastType)) {\n        readRegexp(stream);\n        stream.match(/^\\b(([gimyu])(?![gimyu]*\\2))+\\b/);\n        return ret(\"regexp\", \"string-2\");\n      } else {\n        stream.eatWhile(isOperatorChar);\n        return ret(\"operator\", \"operator\", stream.current());\n      }\n    } else if (ch == \"`\") {\n      state.tokenize = tokenQuasi;\n      return tokenQuasi(stream, state);\n    } else if (ch == \"#\") {\n      stream.skipToEnd();\n      return ret(\"error\", \"error\");\n    } else if (isOperatorChar.test(ch)) {\n      stream.eatWhile(isOperatorChar);\n      return ret(\"operator\", \"operator\", stream.current());\n    } else if (wordRE.test(ch)) {\n      stream.eatWhile(wordRE);\n      var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word];\n      return (known && state.lastType != \".\") ? ret(known.type, known.style, word) :\n                     ret(\"variable\", \"variable\", word);\n    }\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, next;\n      if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n        state.tokenize = tokenBase;\n        return ret(\"jsonld-keyword\", \"meta\");\n      }\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) break;\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (!escaped) state.tokenize = tokenBase;\n      return ret(\"string\", \"string\");\n    };\n  }\n\n  function tokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return ret(\"comment\", \"comment\");\n  }\n\n  function tokenQuasi(stream, state) {\n    var escaped = false, next;\n    while ((next = stream.next()) != null) {\n      if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      escaped = !escaped && next == \"\\\\\";\n    }\n    return ret(\"quasi\", \"string-2\", stream.current());\n  }\n\n  var brackets = \"([{}])\";\n  // This is a crude lookahead trick to try and notice that we're\n  // parsing the argument patterns for a fat-arrow function before we\n  // actually hit the arrow token. It only works if the arrow is on\n  // the same line as the arguments and there's no strange noise\n  // (comments) in between. Fallback is to only notice when we hit the\n  // arrow, and not declare the arguments as locals for the arrow\n  // body.\n  function findFatArrow(stream, state) {\n    if (state.fatArrowAt) state.fatArrowAt = null;\n    var arrow = stream.string.indexOf(\"=>\", stream.start);\n    if (arrow < 0) return;\n\n    var depth = 0, sawSomething = false;\n    for (var pos = arrow - 1; pos >= 0; --pos) {\n      var ch = stream.string.charAt(pos);\n      var bracket = brackets.indexOf(ch);\n      if (bracket >= 0 && bracket < 3) {\n        if (!depth) { ++pos; break; }\n        if (--depth == 0) break;\n      } else if (bracket >= 3 && bracket < 6) {\n        ++depth;\n      } else if (wordRE.test(ch)) {\n        sawSomething = true;\n      } else if (/[\"'\\/]/.test(ch)) {\n        return;\n      } else if (sawSomething && !depth) {\n        ++pos;\n        break;\n      }\n    }\n    if (sawSomething && !depth) state.fatArrowAt = pos;\n  }\n\n  // Parser\n\n  var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true, \"regexp\": true, \"this\": true, \"jsonld-keyword\": true};\n\n  function JSLexical(indented, column, type, align, prev, info) {\n    this.indented = indented;\n    this.column = column;\n    this.type = type;\n    this.prev = prev;\n    this.info = info;\n    if (align != null) this.align = align;\n  }\n\n  function inScope(state, varname) {\n    for (var v = state.localVars; v; v = v.next)\n      if (v.name == varname) return true;\n    for (var cx = state.context; cx; cx = cx.prev) {\n      for (var v = cx.vars; v; v = v.next)\n        if (v.name == varname) return true;\n    }\n  }\n\n  function parseJS(state, style, type, content, stream) {\n    var cc = state.cc;\n    // Communicate our context to the combinators.\n    // (Less wasteful than consing up a hundred closures on every call.)\n    cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n    if (!state.lexical.hasOwnProperty(\"align\"))\n      state.lexical.align = true;\n\n    while(true) {\n      var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n      if (combinator(type, content)) {\n        while(cc.length && cc[cc.length - 1].lex)\n          cc.pop()();\n        if (cx.marked) return cx.marked;\n        if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n        return style;\n      }\n    }\n  }\n\n  // Combinator utils\n\n  var cx = {state: null, column: null, marked: null, cc: null};\n  function pass() {\n    for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n  }\n  function cont() {\n    pass.apply(null, arguments);\n    return true;\n  }\n  function register(varname) {\n    function inList(list) {\n      for (var v = list; v; v = v.next)\n        if (v.name == varname) return true;\n      return false;\n    }\n    var state = cx.state;\n    if (state.context) {\n      cx.marked = \"def\";\n      if (inList(state.localVars)) return;\n      state.localVars = {name: varname, next: state.localVars};\n    } else {\n      if (inList(state.globalVars)) return;\n      if (parserConfig.globalVars)\n        state.globalVars = {name: varname, next: state.globalVars};\n    }\n  }\n\n  // Combinators\n\n  var defaultVars = {name: \"this\", next: {name: \"arguments\"}};\n  function pushcontext() {\n    cx.state.context = {prev: cx.state.context, vars: cx.state.localVars};\n    cx.state.localVars = defaultVars;\n  }\n  function popcontext() {\n    cx.state.localVars = cx.state.context.vars;\n    cx.state.context = cx.state.context.prev;\n  }\n  function pushlex(type, info) {\n    var result = function() {\n      var state = cx.state, indent = state.indented;\n      if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n      else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n        indent = outer.indented;\n      state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n    };\n    result.lex = true;\n    return result;\n  }\n  function poplex() {\n    var state = cx.state;\n    if (state.lexical.prev) {\n      if (state.lexical.type == \")\")\n        state.indented = state.lexical.indented;\n      state.lexical = state.lexical.prev;\n    }\n  }\n  poplex.lex = true;\n\n  function expect(wanted) {\n    function exp(type) {\n      if (type == wanted) return cont();\n      else if (wanted == \";\") return pass();\n      else return cont(exp);\n    };\n    return exp;\n  }\n\n  function statement(type, value) {\n    if (type == \"var\") return cont(pushlex(\"vardef\", value.length), vardef, expect(\";\"), poplex);\n    if (type == \"keyword a\") return cont(pushlex(\"form\"), expression, statement, poplex);\n    if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n    if (type == \"{\") return cont(pushlex(\"}\"), block, poplex);\n    if (type == \";\") return cont();\n    if (type == \"if\") {\n      if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n        cx.state.cc.pop()();\n      return cont(pushlex(\"form\"), expression, statement, poplex, maybeelse);\n    }\n    if (type == \"function\") return cont(functiondef);\n    if (type == \"for\") return cont(pushlex(\"form\"), forspec, statement, poplex);\n    if (type == \"variable\") return cont(pushlex(\"stat\"), maybelabel);\n    if (type == \"switch\") return cont(pushlex(\"form\"), expression, pushlex(\"}\", \"switch\"), expect(\"{\"),\n                                      block, poplex, poplex);\n    if (type == \"case\") return cont(expression, expect(\":\"));\n    if (type == \"default\") return cont(expect(\":\"));\n    if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, expect(\"(\"), funarg, expect(\")\"),\n                                     statement, poplex, popcontext);\n    if (type == \"module\") return cont(pushlex(\"form\"), pushcontext, afterModule, popcontext, poplex);\n    if (type == \"class\") return cont(pushlex(\"form\"), className, poplex);\n    if (type == \"export\") return cont(pushlex(\"form\"), afterExport, poplex);\n    if (type == \"import\") return cont(pushlex(\"form\"), afterImport, poplex);\n    return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n  }\n  function expression(type) {\n    return expressionInner(type, false);\n  }\n  function expressionNoComma(type) {\n    return expressionInner(type, true);\n  }\n  function expressionInner(type, noComma) {\n    if (cx.state.fatArrowAt == cx.stream.start) {\n      var body = noComma ? arrowBodyNoComma : arrowBody;\n      if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(pattern, \")\"), poplex, expect(\"=>\"), body, popcontext);\n      else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n    }\n\n    var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n    if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n    if (type == \"function\") return cont(functiondef, maybeop);\n    if (type == \"keyword c\") return cont(noComma ? maybeexpressionNoComma : maybeexpression);\n    if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, comprehension, expect(\")\"), poplex, maybeop);\n    if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n    if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n    if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n    if (type == \"quasi\") { return pass(quasi, maybeop); }\n    return cont();\n  }\n  function maybeexpression(type) {\n    if (type.match(/[;\\}\\)\\],]/)) return pass();\n    return pass(expression);\n  }\n  function maybeexpressionNoComma(type) {\n    if (type.match(/[;\\}\\)\\],]/)) return pass();\n    return pass(expressionNoComma);\n  }\n\n  function maybeoperatorComma(type, value) {\n    if (type == \",\") return cont(expression);\n    return maybeoperatorNoComma(type, value, false);\n  }\n  function maybeoperatorNoComma(type, value, noComma) {\n    var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n    var expr = noComma == false ? expression : expressionNoComma;\n    if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n    if (type == \"operator\") {\n      if (/\\+\\+|--/.test(value)) return cont(me);\n      if (value == \"?\") return cont(expression, expect(\":\"), expr);\n      return cont(expr);\n    }\n    if (type == \"quasi\") { return pass(quasi, me); }\n    if (type == \";\") return;\n    if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n    if (type == \".\") return cont(property, me);\n    if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n  }\n  function quasi(type, value) {\n    if (type != \"quasi\") return pass();\n    if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n    return cont(expression, continueQuasi);\n  }\n  function continueQuasi(type) {\n    if (type == \"}\") {\n      cx.marked = \"string-2\";\n      cx.state.tokenize = tokenQuasi;\n      return cont(quasi);\n    }\n  }\n  function arrowBody(type) {\n    findFatArrow(cx.stream, cx.state);\n    return pass(type == \"{\" ? statement : expression);\n  }\n  function arrowBodyNoComma(type) {\n    findFatArrow(cx.stream, cx.state);\n    return pass(type == \"{\" ? statement : expressionNoComma);\n  }\n  function maybelabel(type) {\n    if (type == \":\") return cont(poplex, statement);\n    return pass(maybeoperatorComma, expect(\";\"), poplex);\n  }\n  function property(type) {\n    if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n  }\n  function objprop(type, value) {\n    if (type == \"variable\" || cx.style == \"keyword\") {\n      cx.marked = \"property\";\n      if (value == \"get\" || value == \"set\") return cont(getterSetter);\n      return cont(afterprop);\n    } else if (type == \"number\" || type == \"string\") {\n      cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n      return cont(afterprop);\n    } else if (type == \"jsonld-keyword\") {\n      return cont(afterprop);\n    } else if (type == \"[\") {\n      return cont(expression, expect(\"]\"), afterprop);\n    }\n  }\n  function getterSetter(type) {\n    if (type != \"variable\") return pass(afterprop);\n    cx.marked = \"property\";\n    return cont(functiondef);\n  }\n  function afterprop(type) {\n    if (type == \":\") return cont(expressionNoComma);\n    if (type == \"(\") return pass(functiondef);\n  }\n  function commasep(what, end) {\n    function proceed(type) {\n      if (type == \",\") {\n        var lex = cx.state.lexical;\n        if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n        return cont(what, proceed);\n      }\n      if (type == end) return cont();\n      return cont(expect(end));\n    }\n    return function(type) {\n      if (type == end) return cont();\n      return pass(what, proceed);\n    };\n  }\n  function contCommasep(what, end, info) {\n    for (var i = 3; i < arguments.length; i++)\n      cx.cc.push(arguments[i]);\n    return cont(pushlex(end, info), commasep(what, end), poplex);\n  }\n  function block(type) {\n    if (type == \"}\") return cont();\n    return pass(statement, block);\n  }\n  function maybetype(type) {\n    if (isTS && type == \":\") return cont(typedef);\n  }\n  function typedef(type) {\n    if (type == \"variable\"){cx.marked = \"variable-3\"; return cont();}\n  }\n  function vardef() {\n    return pass(pattern, maybetype, maybeAssign, vardefCont);\n  }\n  function pattern(type, value) {\n    if (type == \"variable\") { register(value); return cont(); }\n    if (type == \"[\") return contCommasep(pattern, \"]\");\n    if (type == \"{\") return contCommasep(proppattern, \"}\");\n  }\n  function proppattern(type, value) {\n    if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n      register(value);\n      return cont(maybeAssign);\n    }\n    if (type == \"variable\") cx.marked = \"property\";\n    return cont(expect(\":\"), pattern, maybeAssign);\n  }\n  function maybeAssign(_type, value) {\n    if (value == \"=\") return cont(expressionNoComma);\n  }\n  function vardefCont(type) {\n    if (type == \",\") return cont(vardef);\n  }\n  function maybeelse(type, value) {\n    if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n  }\n  function forspec(type) {\n    if (type == \"(\") return cont(pushlex(\")\"), forspec1, expect(\")\"), poplex);\n  }\n  function forspec1(type) {\n    if (type == \"var\") return cont(vardef, expect(\";\"), forspec2);\n    if (type == \";\") return cont(forspec2);\n    if (type == \"variable\") return cont(formaybeinof);\n    return pass(expression, expect(\";\"), forspec2);\n  }\n  function formaybeinof(_type, value) {\n    if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression); }\n    return cont(maybeoperatorComma, forspec2);\n  }\n  function forspec2(type, value) {\n    if (type == \";\") return cont(forspec3);\n    if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression); }\n    return pass(expression, expect(\";\"), forspec3);\n  }\n  function forspec3(type) {\n    if (type != \")\") cont(expression);\n  }\n  function functiondef(type, value) {\n    if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n    if (type == \"variable\") {register(value); return cont(functiondef);}\n    if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, statement, popcontext);\n  }\n  function funarg(type) {\n    if (type == \"spread\") return cont(funarg);\n    return pass(pattern, maybetype);\n  }\n  function className(type, value) {\n    if (type == \"variable\") {register(value); return cont(classNameAfter);}\n  }\n  function classNameAfter(type, value) {\n    if (value == \"extends\") return cont(expression, classNameAfter);\n    if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n  }\n  function classBody(type, value) {\n    if (type == \"variable\" || cx.style == \"keyword\") {\n      cx.marked = \"property\";\n      if (value == \"get\" || value == \"set\") return cont(classGetterSetter, functiondef, classBody);\n      return cont(functiondef, classBody);\n    }\n    if (value == \"*\") {\n      cx.marked = \"keyword\";\n      return cont(classBody);\n    }\n    if (type == \";\") return cont(classBody);\n    if (type == \"}\") return cont();\n  }\n  function classGetterSetter(type) {\n    if (type != \"variable\") return pass();\n    cx.marked = \"property\";\n    return cont();\n  }\n  function afterModule(type, value) {\n    if (type == \"string\") return cont(statement);\n    if (type == \"variable\") { register(value); return cont(maybeFrom); }\n  }\n  function afterExport(_type, value) {\n    if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n    if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n    return pass(statement);\n  }\n  function afterImport(type) {\n    if (type == \"string\") return cont();\n    return pass(importSpec, maybeFrom);\n  }\n  function importSpec(type, value) {\n    if (type == \"{\") return contCommasep(importSpec, \"}\");\n    if (type == \"variable\") register(value);\n    return cont();\n  }\n  function maybeFrom(_type, value) {\n    if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n  }\n  function arrayLiteral(type) {\n    if (type == \"]\") return cont();\n    return pass(expressionNoComma, maybeArrayComprehension);\n  }\n  function maybeArrayComprehension(type) {\n    if (type == \"for\") return pass(comprehension, expect(\"]\"));\n    if (type == \",\") return cont(commasep(maybeexpressionNoComma, \"]\"));\n    return pass(commasep(expressionNoComma, \"]\"));\n  }\n  function comprehension(type) {\n    if (type == \"for\") return cont(forspec, comprehension);\n    if (type == \"if\") return cont(expression, comprehension);\n  }\n\n  function isContinuedStatement(state, textAfter) {\n    return state.lastType == \"operator\" || state.lastType == \",\" ||\n      isOperatorChar.test(textAfter.charAt(0)) ||\n      /[,.]/.test(textAfter.charAt(0));\n  }\n\n  // Interface\n\n  return {\n    startState: function(basecolumn) {\n      var state = {\n        tokenize: tokenBase,\n        lastType: \"sof\",\n        cc: [],\n        lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n        localVars: parserConfig.localVars,\n        context: parserConfig.localVars && {vars: parserConfig.localVars},\n        indented: 0\n      };\n      if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n        state.globalVars = parserConfig.globalVars;\n      return state;\n    },\n\n    token: function(stream, state) {\n      if (stream.sol()) {\n        if (!state.lexical.hasOwnProperty(\"align\"))\n          state.lexical.align = false;\n        state.indented = stream.indentation();\n        findFatArrow(stream, state);\n      }\n      if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n      var style = state.tokenize(stream, state);\n      if (type == \"comment\") return style;\n      state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n      return parseJS(state, style, type, content, stream);\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize == tokenComment) return CodeMirror.Pass;\n      if (state.tokenize != tokenBase) return 0;\n      var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical;\n      // Kludge to prevent 'maybelse' from blocking lexical scope pops\n      if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n        var c = state.cc[i];\n        if (c == poplex) lexical = lexical.prev;\n        else if (c != maybeelse) break;\n      }\n      if (lexical.type == \"stat\" && firstChar == \"}\") lexical = lexical.prev;\n      if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n        lexical = lexical.prev;\n      var type = lexical.type, closing = firstChar == type;\n\n      if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info + 1 : 0);\n      else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n      else if (type == \"form\") return lexical.indented + indentUnit;\n      else if (type == \"stat\")\n        return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n      else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n        return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n      else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n      else return lexical.indented + (closing ? 0 : indentUnit);\n    },\n\n    electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n    blockCommentStart: jsonMode ? null : \"/*\",\n    blockCommentEnd: jsonMode ? null : \"*/\",\n    lineComment: jsonMode ? null : \"//\",\n    fold: \"brace\",\n\n    helperType: jsonMode ? \"json\" : \"javascript\",\n    jsonldMode: jsonldMode,\n    jsonMode: jsonMode\n  };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", {name: \"javascript\", json: true});\nCodeMirror.defineMIME(\"application/x-json\", {name: \"javascript\", json: true});\nCodeMirror.defineMIME(\"application/ld+json\", {name: \"javascript\", jsonld: true});\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/javascript/json-ld.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: JSON-LD mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"../../addon/comment/continuecomment.js\"></script>\n<script src=\"../../addon/comment/comment.js\"></script>\n<script src=\"javascript.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=\"nav\">\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"/></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">JSON-LD</a>\n  </ul>\n</div>\n\n<article>\n<h2>JSON-LD mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\n{\n  \"@context\": {\n    \"name\": \"http://schema.org/name\",\n    \"description\": \"http://schema.org/description\",\n    \"image\": {\n      \"@id\": \"http://schema.org/image\",\n      \"@type\": \"@id\"\n    },\n    \"geo\": \"http://schema.org/geo\",\n    \"latitude\": {\n      \"@id\": \"http://schema.org/latitude\",\n      \"@type\": \"xsd:float\"\n    },\n    \"longitude\": {\n      \"@id\": \"http://schema.org/longitude\",\n      \"@type\": \"xsd:float\"\n    },\n    \"xsd\": \"http://www.w3.org/2001/XMLSchema#\"\n  },\n  \"name\": \"The Empire State Building\",\n  \"description\": \"The Empire State Building is a 102-story landmark in New York City.\",\n  \"image\": \"http://www.civil.usherbrooke.ca/cours/gci215a/empire-state-building.jpg\",\n  \"geo\": {\n    \"latitude\": \"40.75\",\n    \"longitude\": \"73.98\"\n  }\n}\n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        matchBrackets: true,\n        autoCloseBrackets: true,\n        mode: \"application/ld+json\",\n        lineWrapping: true\n      });\n    </script>\n    \n    <p>This is a specialization of the <a href=\"index.html\">JavaScript mode</a>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/javascript/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  var mode = CodeMirror.getMode({indentUnit: 2}, \"javascript\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }\n\n  MT(\"locals\",\n     \"[keyword function] [variable foo]([def a], [def b]) { [keyword var] [def c] [operator =] [number 10]; [keyword return] [variable-2 a] [operator +] [variable-2 c] [operator +] [variable d]; }\");\n\n  MT(\"comma-and-binop\",\n     \"[keyword function](){ [keyword var] [def x] [operator =] [number 1] [operator +] [number 2], [def y]; }\");\n\n  MT(\"destructuring\",\n     \"([keyword function]([def a], [[[def b], [def c] ]]) {\",\n     \"  [keyword let] {[def d], [property foo]: [def c][operator =][number 10], [def x]} [operator =] [variable foo]([variable-2 a]);\",\n     \"  [[[variable-2 c], [variable y] ]] [operator =] [variable-2 c];\",\n     \"})();\");\n\n  MT(\"class_body\",\n     \"[keyword class] [variable Foo] {\",\n     \"  [property constructor]() {}\",\n     \"  [property sayName]() {\",\n     \"    [keyword return] [string-2 `foo${][variable foo][string-2 }oo`];\",\n     \"  }\",\n     \"}\");\n\n  MT(\"class\",\n     \"[keyword class] [variable Point] [keyword extends] [variable SuperThing] {\",\n     \"  [property get] [property prop]() { [keyword return] [number 24]; }\",\n     \"  [property constructor]([def x], [def y]) {\",\n     \"    [keyword super]([string 'something']);\",\n     \"    [keyword this].[property x] [operator =] [variable-2 x];\",\n     \"  }\",\n     \"}\");\n\n  MT(\"module\",\n     \"[keyword module] [string 'foo'] {\",\n     \"  [keyword export] [keyword let] [def x] [operator =] [number 42];\",\n     \"  [keyword export] [keyword *] [keyword from] [string 'somewhere'];\",\n     \"}\");\n\n  MT(\"import\",\n     \"[keyword function] [variable foo]() {\",\n     \"  [keyword import] [def $] [keyword from] [string 'jquery'];\",\n     \"  [keyword module] [def crypto] [keyword from] [string 'crypto'];\",\n     \"  [keyword import] { [def encrypt], [def decrypt] } [keyword from] [string 'crypto'];\",\n     \"}\");\n\n  MT(\"const\",\n     \"[keyword function] [variable f]() {\",\n     \"  [keyword const] [[ [def a], [def b] ]] [operator =] [[ [number 1], [number 2] ]];\",\n     \"}\");\n\n  MT(\"for/of\",\n     \"[keyword for]([keyword let] [variable of] [keyword of] [variable something]) {}\");\n\n  MT(\"generator\",\n     \"[keyword function*] [variable repeat]([def n]) {\",\n     \"  [keyword for]([keyword var] [def i] [operator =] [number 0]; [variable-2 i] [operator <] [variable-2 n]; [operator ++][variable-2 i])\",\n     \"    [keyword yield] [variable-2 i];\",\n     \"}\");\n\n  MT(\"quotedStringAddition\",\n     \"[keyword let] [variable f] [operator =] [variable a] [operator +] [string 'fatarrow'] [operator +] [variable c];\");\n\n  MT(\"quotedFatArrow\",\n     \"[keyword let] [variable f] [operator =] [variable a] [operator +] [string '=>'] [operator +] [variable c];\");\n\n  MT(\"fatArrow\",\n     \"[variable array].[property filter]([def a] [operator =>] [variable-2 a] [operator +] [number 1]);\",\n     \"[variable a];\", // No longer in scope\n     \"[keyword let] [variable f] [operator =] ([[ [def a], [def b] ]], [def c]) [operator =>] [variable-2 a] [operator +] [variable-2 c];\",\n     \"[variable c];\");\n\n  MT(\"spread\",\n     \"[keyword function] [variable f]([def a], [meta ...][def b]) {\",\n     \"  [variable something]([variable-2 a], [meta ...][variable-2 b]);\",\n     \"}\");\n\n  MT(\"comprehension\",\n     \"[keyword function] [variable f]() {\",\n     \"  [[([variable x] [operator +] [number 1]) [keyword for] ([keyword var] [def x] [keyword in] [variable y]) [keyword if] [variable pred]([variable-2 x]) ]];\",\n     \"  ([variable u] [keyword for] ([keyword var] [def u] [keyword of] [variable generateValues]()) [keyword if] ([variable-2 u].[property color] [operator ===] [string 'blue']));\",\n     \"}\");\n\n  MT(\"quasi\",\n     \"[variable re][string-2 `fofdlakj${][variable x] [operator +] ([variable re][string-2 `foo`]) [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]\");\n\n  MT(\"quasi_no_function\",\n     \"[variable x] [operator =] [string-2 `fofdlakj${][variable x] [operator +] [string-2 `foo`] [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]\");\n\n  MT(\"indent_statement\",\n     \"[keyword var] [variable x] [operator =] [number 10]\",\n     \"[variable x] [operator +=] [variable y] [operator +]\",\n     \"  [atom Infinity]\",\n     \"[keyword debugger];\");\n\n  MT(\"indent_if\",\n     \"[keyword if] ([number 1])\",\n     \"  [keyword break];\",\n     \"[keyword else] [keyword if] ([number 2])\",\n     \"  [keyword continue];\",\n     \"[keyword else]\",\n     \"  [number 10];\",\n     \"[keyword if] ([number 1]) {\",\n     \"  [keyword break];\",\n     \"} [keyword else] [keyword if] ([number 2]) {\",\n     \"  [keyword continue];\",\n     \"} [keyword else] {\",\n     \"  [number 10];\",\n     \"}\");\n\n  MT(\"indent_for\",\n     \"[keyword for] ([keyword var] [variable i] [operator =] [number 0];\",\n     \"     [variable i] [operator <] [number 100];\",\n     \"     [variable i][operator ++])\",\n     \"  [variable doSomething]([variable i]);\",\n     \"[keyword debugger];\");\n\n  MT(\"indent_c_style\",\n     \"[keyword function] [variable foo]()\",\n     \"{\",\n     \"  [keyword debugger];\",\n     \"}\");\n\n  MT(\"indent_else\",\n     \"[keyword for] (;;)\",\n     \"  [keyword if] ([variable foo])\",\n     \"    [keyword if] ([variable bar])\",\n     \"      [number 1];\",\n     \"    [keyword else]\",\n     \"      [number 2];\",\n     \"  [keyword else]\",\n     \"    [number 3];\");\n\n  MT(\"indent_funarg\",\n     \"[variable foo]([number 10000],\",\n     \"    [keyword function]([def a]) {\",\n     \"  [keyword debugger];\",\n     \"};\");\n\n  MT(\"indent_below_if\",\n     \"[keyword for] (;;)\",\n     \"  [keyword if] ([variable foo])\",\n     \"    [number 1];\",\n     \"[number 2];\");\n\n  MT(\"multilinestring\",\n     \"[keyword var] [variable x] [operator =] [string 'foo\\\\]\",\n     \"[string bar'];\");\n\n  MT(\"scary_regexp\",\n     \"[string-2 /foo[[/]]bar/];\");\n\n  MT(\"indent_strange_array\",\n     \"[keyword var] [variable x] [operator =] [[\",\n     \"  [number 1],,\",\n     \"  [number 2],\",\n     \"]];\",\n     \"[number 10];\");\n\n  var jsonld_mode = CodeMirror.getMode(\n    {indentUnit: 2},\n    {name: \"javascript\", jsonld: true}\n  );\n  function LD(name) {\n    test.mode(name, jsonld_mode, Array.prototype.slice.call(arguments, 1));\n  }\n\n  LD(\"json_ld_keywords\",\n    '{',\n    '  [meta \"@context\"]: {',\n    '    [meta \"@base\"]: [string \"http://example.com\"],',\n    '    [meta \"@vocab\"]: [string \"http://xmlns.com/foaf/0.1/\"],',\n    '    [property \"likesFlavor\"]: {',\n    '      [meta \"@container\"]: [meta \"@list\"]',\n    '      [meta \"@reverse\"]: [string \"@beFavoriteOf\"]',\n    '    },',\n    '    [property \"nick\"]: { [meta \"@container\"]: [meta \"@set\"] },',\n    '    [property \"nick\"]: { [meta \"@container\"]: [meta \"@index\"] }',\n    '  },',\n    '  [meta \"@graph\"]: [[ {',\n    '    [meta \"@id\"]: [string \"http://dbpedia.org/resource/John_Lennon\"],',\n    '    [property \"name\"]: [string \"John Lennon\"],',\n    '    [property \"modified\"]: {',\n    '      [meta \"@value\"]: [string \"2010-05-29T14:17:39+02:00\"],',\n    '      [meta \"@type\"]: [string \"http://www.w3.org/2001/XMLSchema#dateTime\"]',\n    '    }',\n    '  } ]]',\n    '}');\n\n  LD(\"json_ld_fake\",\n    '{',\n    '  [property \"@fake\"]: [string \"@fake\"],',\n    '  [property \"@contextual\"]: [string \"@identifier\"],',\n    '  [property \"user@domain.com\"]: [string \"@graphical\"],',\n    '  [property \"@ID\"]: [string \"@@ID\"]',\n    '}');\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/javascript/typescript.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: TypeScript mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"javascript.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">TypeScript</a>\n  </ul>\n</div>\n\n<article>\n<h2>TypeScript mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\nclass Greeter {\n\tgreeting: string;\n\tconstructor (message: string) {\n\t\tthis.greeting = message;\n\t}\n\tgreet() {\n\t\treturn \"Hello, \" + this.greeting;\n\t}\n}   \n\nvar greeter = new Greeter(\"world\");\n\nvar button = document.createElement('button')\nbutton.innerText = \"Say Hello\"\nbutton.onclick = function() {\n\talert(greeter.greet())\n}\n\ndocument.body.appendChild(button)\n\n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"text/typescript\"\n      });\n    </script>\n\n    <p>This is a specialization of the <a href=\"index.html\">JavaScript mode</a>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/jinja2/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Jinja2 mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"jinja2.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Jinja2</a>\n  </ul>\n</div>\n\n<article>\n<h2>Jinja2 mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n{# this is a comment #}\n{%- for item in li -%}\n  &lt;li&gt;{{ item.label }}&lt;/li&gt;\n{% endfor -%}\n{{ item.sand == true and item.keyword == false ? 1 : 0 }}\n{{ app.get(55, 1.2, true) }}\n{% if app.get(&#39;_route&#39;) == (&#39;_home&#39;) %}home{% endif %}\n{% if app.session.flashbag.has(&#39;message&#39;) %}\n  {% for message in app.session.flashbag.get(&#39;message&#39;) %}\n    {{ message.content }}\n  {% endfor %}\n{% endif %}\n{{ path(&#39;_home&#39;, {&#39;section&#39;: app.request.get(&#39;section&#39;)}) }}\n{{ path(&#39;_home&#39;, {\n    &#39;section&#39;: app.request.get(&#39;section&#39;),\n    &#39;boolean&#39;: true,\n    &#39;number&#39;: 55.33\n  })\n}}\n{% include (&#39;test.incl.html.twig&#39;) %}\n</textarea></form>\n    <script>\n      var editor =\n      CodeMirror.fromTextArea(document.getElementById(\"code\"), {mode:\n        {name: \"jinja2\", htmlMode: true}});\n    </script>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/jinja2/jinja2.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineMode(\"jinja2\", function() {\n    var keywords = [\"and\", \"as\", \"block\", \"endblock\", \"by\", \"cycle\", \"debug\", \"else\", \"elif\",\n      \"extends\", \"filter\", \"endfilter\", \"firstof\", \"for\",\n      \"endfor\", \"if\", \"endif\", \"ifchanged\", \"endifchanged\",\n      \"ifequal\", \"endifequal\", \"ifnotequal\",\n      \"endifnotequal\", \"in\", \"include\", \"load\", \"not\", \"now\", \"or\",\n      \"parsed\", \"regroup\", \"reversed\", \"spaceless\",\n      \"endspaceless\", \"ssi\", \"templatetag\", \"openblock\",\n      \"closeblock\", \"openvariable\", \"closevariable\",\n      \"openbrace\", \"closebrace\", \"opencomment\",\n      \"closecomment\", \"widthratio\", \"url\", \"with\", \"endwith\",\n      \"get_current_language\", \"trans\", \"endtrans\", \"noop\", \"blocktrans\",\n      \"endblocktrans\", \"get_available_languages\",\n      \"get_current_language_bidi\", \"plural\"],\n    operator = /^[+\\-*&%=<>!?|~^]/,\n    sign = /^[:\\[\\(\\{]/,\n    atom = [\"true\", \"false\"],\n    number = /^(\\d[+\\-\\*\\/])?\\d+(\\.\\d+)?/;\n\n    keywords = new RegExp(\"((\" + keywords.join(\")|(\") + \"))\\\\b\");\n    atom = new RegExp(\"((\" + atom.join(\")|(\") + \"))\\\\b\");\n\n    function tokenBase (stream, state) {\n      var ch = stream.peek();\n\n      //Comment\n      if (state.incomment) {\n        if(!stream.skipTo(\"#}\")) {\n          stream.skipToEnd();\n        } else {\n          stream.eatWhile(/\\#|}/);\n          state.incomment = false;\n        }\n        return \"comment\";\n      //Tag\n      } else if (state.intag) {\n        //After operator\n        if(state.operator) {\n          state.operator = false;\n          if(stream.match(atom)) {\n            return \"atom\";\n          }\n          if(stream.match(number)) {\n            return \"number\";\n          }\n        }\n        //After sign\n        if(state.sign) {\n          state.sign = false;\n          if(stream.match(atom)) {\n            return \"atom\";\n          }\n          if(stream.match(number)) {\n            return \"number\";\n          }\n        }\n\n        if(state.instring) {\n          if(ch == state.instring) {\n            state.instring = false;\n          }\n          stream.next();\n          return \"string\";\n        } else if(ch == \"'\" || ch == '\"') {\n          state.instring = ch;\n          stream.next();\n          return \"string\";\n        } else if(stream.match(state.intag + \"}\") || stream.eat(\"-\") && stream.match(state.intag + \"}\")) {\n          state.intag = false;\n          return \"tag\";\n        } else if(stream.match(operator)) {\n          state.operator = true;\n          return \"operator\";\n        } else if(stream.match(sign)) {\n          state.sign = true;\n        } else {\n          if(stream.eat(\" \") || stream.sol()) {\n            if(stream.match(keywords)) {\n              return \"keyword\";\n            }\n            if(stream.match(atom)) {\n              return \"atom\";\n            }\n            if(stream.match(number)) {\n              return \"number\";\n            }\n            if(stream.sol()) {\n              stream.next();\n            }\n          } else {\n            stream.next();\n          }\n\n        }\n        return \"variable\";\n      } else if (stream.eat(\"{\")) {\n        if (ch = stream.eat(\"#\")) {\n          state.incomment = true;\n          if(!stream.skipTo(\"#}\")) {\n            stream.skipToEnd();\n          } else {\n            stream.eatWhile(/\\#|}/);\n            state.incomment = false;\n          }\n          return \"comment\";\n        //Open tag\n        } else if (ch = stream.eat(/\\{|%/)) {\n          //Cache close tag\n          state.intag = ch;\n          if(ch == \"{\") {\n            state.intag = \"}\";\n          }\n          stream.eat(\"-\");\n          return \"tag\";\n        }\n      }\n      stream.next();\n    };\n\n    return {\n      startState: function () {\n        return {tokenize: tokenBase};\n      },\n      token: function (stream, state) {\n        return state.tokenize(stream, state);\n      }\n    };\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/julia/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Julia mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"julia.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Julia</a>\n  </ul>\n</div>\n\n<article>\n<h2>Julia mode</h2>\n\n    <div><textarea id=\"code\" name=\"code\">\n#numbers\n1234\n1234im\n.234\n.234im\n2.23im\n2.3f3\n23e2\n0x234\n\n#strings\n'a'\n\"asdf\"\nr\"regex\"\nb\"bytestring\"\n\n\"\"\"\nmultiline string\n\"\"\"\n\n#identifiers\na\nas123\nfunction_name!\n\n#unicode identifiers\n# a = x\\ddot\na⃗ = ẍ\n# a = v\\dot\na⃗ = v̇\n#F\\vec = m \\cdotp a\\vec\nF⃗ = m·a⃗\n\n#literal identifier multiples\n3x\n4[1, 2, 3]\n\n#dicts and indexing\nx=[1, 2, 3]\nx[end-1]\nx={\"julia\"=>\"language of technical computing\"}\n\n\n#exception handling\ntry\n  f()\ncatch\n  @printf \"Error\"\nfinally\n  g()\nend\n\n#types\nimmutable Color{T<:Number}\n  r::T\n  g::T\n  b::T\nend\n\n#functions\nfunction change!(x::Vector{Float64})\n  for i = 1:length(x)\n    x[i] *= 2\n  end\nend\n\n#function invocation\nf('b', (2, 3)...)\n\n#operators\n|=\n&=\n^=\n\\-\n%=\n*=\n+=\n-=\n<=\n>=\n!=\n==\n%\n*\n+\n-\n<\n>\n!\n=\n|\n&\n^\n\\\n?\n~\n:\n$\n<:\n.<\n.>\n<<\n<<=\n>>\n>>>>\n>>=\n>>>=\n<<=\n<<<=\n.<=\n.>=\n.==\n->\n//\nin\n...\n//\n:=\n.//=\n.*=\n./=\n.^=\n.%=\n.+=\n.-=\n\\=\n\\\\=\n||\n===\n&&\n|=\n.|=\n<:\n>:\n|>\n<|\n::\nx ? y : z\n\n#macros\n@spawnat 2 1+1\n@eval(:x)\n\n#keywords and operators\nif else elseif while for\n begin let end do\ntry catch finally return break continue\nglobal local const \nexport import importall using\nfunction macro module baremodule \ntype immutable quote\ntrue false enumerate\n\n\n    </textarea></div>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: {name: \"julia\",\n               },\n        lineNumbers: true,\n        indentUnit: 4,\n        matchBrackets: true\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-julia</code>.</p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/julia/julia.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"julia\", function(_conf, parserConf) {\n  var ERRORCLASS = 'error';\n\n  function wordRegexp(words) {\n    return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n  }\n\n  var operators = parserConf.operators || /^\\.?[|&^\\\\%*+\\-<>!=\\/]=?|\\?|~|:|\\$|\\.[<>]|<<=?|>>>?=?|\\.[<>=]=|->?|\\/\\/|\\bin\\b/;\n  var delimiters = parserConf.delimiters || /^[;,()[\\]{}]/;\n  var identifiers = parserConf.identifiers|| /^[_A-Za-z\\u00A1-\\uFFFF][_A-Za-z0-9\\u00A1-\\uFFFF]*!*/;\n  var blockOpeners = [\"begin\", \"function\", \"type\", \"immutable\", \"let\", \"macro\", \"for\", \"while\", \"quote\", \"if\", \"else\", \"elseif\", \"try\", \"finally\", \"catch\", \"do\"];\n  var blockClosers = [\"end\", \"else\", \"elseif\", \"catch\", \"finally\"];\n  var keywordList = ['if', 'else', 'elseif', 'while', 'for', 'begin', 'let', 'end', 'do', 'try', 'catch', 'finally', 'return', 'break', 'continue', 'global', 'local', 'const', 'export', 'import', 'importall', 'using', 'function', 'macro', 'module', 'baremodule', 'type', 'immutable', 'quote', 'typealias', 'abstract', 'bitstype', 'ccall'];\n  var builtinList = ['true', 'false', 'enumerate', 'open', 'close', 'nothing', 'NaN', 'Inf', 'print', 'println', 'Int', 'Int8', 'Uint8', 'Int16', 'Uint16', 'Int32', 'Uint32', 'Int64', 'Uint64', 'Int128', 'Uint128', 'Bool', 'Char', 'Float16', 'Float32', 'Float64', 'Array', 'Vector', 'Matrix', 'String', 'UTF8String', 'ASCIIString', 'error', 'warn', 'info', '@printf'];\n\n  //var stringPrefixes = new RegExp(\"^[br]?('|\\\")\")\n  var stringPrefixes = /^(`|'|\"{3}|([br]?\"))/;\n  var keywords = wordRegexp(keywordList);\n  var builtins = wordRegexp(builtinList);\n  var openers = wordRegexp(blockOpeners);\n  var closers = wordRegexp(blockClosers);\n  var macro = /^@[_A-Za-z][_A-Za-z0-9]*/;\n  var symbol = /^:[_A-Za-z][_A-Za-z0-9]*/;\n  var indentInfo = null;\n\n  function in_array(state) {\n    var ch = cur_scope(state);\n    if(ch==\"[\" || ch==\"{\") {\n      return true;\n    }\n    else {\n      return false;\n    }\n  }\n\n  function cur_scope(state) {\n    if(state.scopes.length==0) {\n      return null;\n    }\n    return state.scopes[state.scopes.length - 1];\n  }\n\n  // tokenizers\n  function tokenBase(stream, state) {\n    // Handle scope changes\n    var leaving_expr = state.leaving_expr;\n    if(stream.sol()) {\n      leaving_expr = false;\n    }\n    state.leaving_expr = false;\n    if(leaving_expr) {\n      if(stream.match(/^'+/)) {\n        return 'operator';\n      }\n\n    }\n\n    if(stream.match(/^\\.{2,3}/)) {\n      return 'operator';\n    }\n\n    if (stream.eatSpace()) {\n      return null;\n    }\n\n    var ch = stream.peek();\n    // Handle Comments\n    if (ch === '#') {\n        stream.skipToEnd();\n        return 'comment';\n    }\n    if(ch==='[') {\n      state.scopes.push(\"[\");\n    }\n\n    if(ch==='{') {\n      state.scopes.push(\"{\");\n    }\n\n    var scope=cur_scope(state);\n\n    if(scope==='[' && ch===']') {\n      state.scopes.pop();\n      state.leaving_expr=true;\n    }\n\n    if(scope==='{' && ch==='}') {\n      state.scopes.pop();\n      state.leaving_expr=true;\n    }\n\n    if(ch===')') {\n      state.leaving_expr = true;\n    }\n\n    var match;\n    if(!in_array(state) && (match=stream.match(openers, false))) {\n      state.scopes.push(match);\n    }\n\n    if(!in_array(state) && stream.match(closers, false)) {\n      state.scopes.pop();\n    }\n\n    if(in_array(state)) {\n      if(stream.match(/^end/)) {\n        return 'number';\n      }\n\n    }\n\n    if(stream.match(/^=>/)) {\n      return 'operator';\n    }\n\n\n    // Handle Number Literals\n    if (stream.match(/^[0-9\\.]/, false)) {\n      var imMatcher = RegExp(/^im\\b/);\n      var floatLiteral = false;\n      // Floats\n      if (stream.match(/^\\d*\\.(?!\\.)\\d+([ef][\\+\\-]?\\d+)?/i)) { floatLiteral = true; }\n      if (stream.match(/^\\d+\\.(?!\\.)\\d*/)) { floatLiteral = true; }\n      if (stream.match(/^\\.\\d+/)) { floatLiteral = true; }\n      if (floatLiteral) {\n          // Float literals may be \"imaginary\"\n          stream.match(imMatcher);\n          state.leaving_expr = true;\n          return 'number';\n      }\n      // Integers\n      var intLiteral = false;\n      // Hex\n      if (stream.match(/^0x[0-9a-f]+/i)) { intLiteral = true; }\n      // Binary\n      if (stream.match(/^0b[01]+/i)) { intLiteral = true; }\n      // Octal\n      if (stream.match(/^0o[0-7]+/i)) { intLiteral = true; }\n      // Decimal\n      if (stream.match(/^[1-9]\\d*(e[\\+\\-]?\\d+)?/)) {\n          intLiteral = true;\n      }\n      // Zero by itself with no other piece of number.\n      if (stream.match(/^0(?![\\dx])/i)) { intLiteral = true; }\n      if (intLiteral) {\n          // Integer literals may be \"long\"\n          stream.match(imMatcher);\n          state.leaving_expr = true;\n          return 'number';\n      }\n    }\n\n    if(stream.match(/^(::)|(<:)/)) {\n      return 'operator';\n    }\n\n    // Handle symbols\n    if(!leaving_expr && stream.match(symbol)) {\n      return 'string';\n    }\n\n    // Handle operators and Delimiters\n    if (stream.match(operators)) {\n      return 'operator';\n    }\n\n\n    // Handle Strings\n    if (stream.match(stringPrefixes)) {\n      state.tokenize = tokenStringFactory(stream.current());\n      return state.tokenize(stream, state);\n    }\n\n    if (stream.match(macro)) {\n      return 'meta';\n    }\n\n\n    if (stream.match(delimiters)) {\n      return null;\n    }\n\n    if (stream.match(keywords)) {\n      return 'keyword';\n    }\n\n    if (stream.match(builtins)) {\n      return 'builtin';\n    }\n\n\n    if (stream.match(identifiers)) {\n      state.leaving_expr=true;\n      return 'variable';\n    }\n    // Handle non-detected items\n    stream.next();\n    return ERRORCLASS;\n  }\n\n  function tokenStringFactory(delimiter) {\n    while ('rub'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) {\n      delimiter = delimiter.substr(1);\n    }\n    var singleline = delimiter.length == 1;\n    var OUTCLASS = 'string';\n\n    function tokenString(stream, state) {\n      while (!stream.eol()) {\n        stream.eatWhile(/[^'\"\\\\]/);\n        if (stream.eat('\\\\')) {\n            stream.next();\n            if (singleline && stream.eol()) {\n              return OUTCLASS;\n            }\n        } else if (stream.match(delimiter)) {\n            state.tokenize = tokenBase;\n            return OUTCLASS;\n        } else {\n            stream.eat(/['\"]/);\n        }\n      }\n      if (singleline) {\n        if (parserConf.singleLineStringErrors) {\n            return ERRORCLASS;\n        } else {\n            state.tokenize = tokenBase;\n        }\n      }\n      return OUTCLASS;\n    }\n    tokenString.isString = true;\n    return tokenString;\n  }\n\n  function tokenLexer(stream, state) {\n    indentInfo = null;\n    var style = state.tokenize(stream, state);\n    var current = stream.current();\n\n    // Handle '.' connected identifiers\n    if (current === '.') {\n      style = stream.match(identifiers, false) ? null : ERRORCLASS;\n      if (style === null && state.lastStyle === 'meta') {\n          // Apply 'meta' style to '.' connected identifiers when\n          // appropriate.\n        style = 'meta';\n      }\n      return style;\n    }\n\n    return style;\n  }\n\n  var external = {\n    startState: function() {\n      return {\n        tokenize: tokenBase,\n        scopes: [],\n        leaving_expr: false\n      };\n    },\n\n    token: function(stream, state) {\n      var style = tokenLexer(stream, state);\n      state.lastStyle = style;\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      var delta = 0;\n      if(textAfter==\"end\" || textAfter==\"]\" || textAfter==\"}\" || textAfter==\"else\" || textAfter==\"elseif\" || textAfter==\"catch\" || textAfter==\"finally\") {\n        delta = -1;\n      }\n      return (state.scopes.length + delta) * 4;\n    },\n\n    lineComment: \"#\",\n    fold: \"indent\",\n    electricChars: \"edlsifyh]}\"\n  };\n  return external;\n});\n\n\nCodeMirror.defineMIME(\"text/x-julia\", \"julia\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/kotlin/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Kotlin mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"kotlin.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Kotlin</a>\n  </ul>\n</div>\n\n<article>\n<h2>Kotlin mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\npackage org.wasabi.http\n\nimport java.util.concurrent.Executors\nimport java.net.InetSocketAddress\nimport org.wasabi.app.AppConfiguration\nimport io.netty.bootstrap.ServerBootstrap\nimport io.netty.channel.nio.NioEventLoopGroup\nimport io.netty.channel.socket.nio.NioServerSocketChannel\nimport org.wasabi.app.AppServer\n\npublic class HttpServer(private val appServer: AppServer) {\n\n    val bootstrap: ServerBootstrap\n    val primaryGroup: NioEventLoopGroup\n    val workerGroup:  NioEventLoopGroup\n\n    {\n        // Define worker groups\n        primaryGroup = NioEventLoopGroup()\n        workerGroup = NioEventLoopGroup()\n\n        // Initialize bootstrap of server\n        bootstrap = ServerBootstrap()\n\n        bootstrap.group(primaryGroup, workerGroup)\n        bootstrap.channel(javaClass<NioServerSocketChannel>())\n        bootstrap.childHandler(NettyPipelineInitializer(appServer))\n    }\n\n    public fun start(wait: Boolean = true) {\n        val channel = bootstrap.bind(appServer.configuration.port)?.sync()?.channel()\n\n        if (wait) {\n            channel?.closeFuture()?.sync()\n        }\n    }\n\n    public fun stop() {\n        // Shutdown all event loops\n        primaryGroup.shutdownGracefully()\n        workerGroup.shutdownGracefully()\n\n        // Wait till all threads are terminated\n        primaryGroup.terminationFuture().sync()\n        workerGroup.terminationFuture().sync()\n    }\n}\n</textarea></div>\n\n    <script>\n        var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n            mode: {name: \"kotlin\"},\n            lineNumbers: true,\n            indentUnit: 4\n        });\n    </script>\n    <h3>Mode for Kotlin (http://kotlin.jetbrains.org/)</h3>\n    <p>Developed by Hadi Hariri (https://github.com/hhariri).</p>\n    <p><strong>MIME type defined:</strong> <code>text/x-kotlin</code>.</p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/kotlin/kotlin.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"kotlin\", function (config, parserConfig) {\n  function words(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  var multiLineStrings = parserConfig.multiLineStrings;\n\n  var keywords = words(\n          \"package continue return object while break class data trait throw super\" +\n          \" when type this else This try val var fun for is in if do as true false null get set\");\n  var softKeywords = words(\"import\" +\n      \" where by get set abstract enum open annotation override private public internal\" +\n      \" protected catch out vararg inline finally final ref\");\n  var blockKeywords = words(\"catch class do else finally for if where try while enum\");\n  var atoms = words(\"null true false this\");\n\n  var curPunc;\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    if (ch == '\"' || ch == \"'\") {\n      return startString(ch, stream, state);\n    }\n    // Wildcard import w/o trailing semicolon (import smth.*)\n    if (ch == \".\" && stream.eat(\"*\")) {\n      return \"word\";\n    }\n    if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n      curPunc = ch;\n      return null;\n    }\n    if (/\\d/.test(ch)) {\n      if (stream.eat(/eE/)) {\n        stream.eat(/\\+\\-/);\n        stream.eatWhile(/\\d/);\n      }\n      return \"number\";\n    }\n    if (ch == \"/\") {\n      if (stream.eat(\"*\")) {\n        state.tokenize.push(tokenComment);\n        return tokenComment(stream, state);\n      }\n      if (stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n      if (expectExpression(state.lastToken)) {\n        return startString(ch, stream, state);\n      }\n    }\n    // Commented\n    if (ch == \"-\" && stream.eat(\">\")) {\n      curPunc = \"->\";\n      return null;\n    }\n    if (/[\\-+*&%=<>!?|\\/~]/.test(ch)) {\n      stream.eatWhile(/[\\-+*&%=<>|~]/);\n      return \"operator\";\n    }\n    stream.eatWhile(/[\\w\\$_]/);\n\n    var cur = stream.current();\n    if (atoms.propertyIsEnumerable(cur)) {\n      return \"atom\";\n    }\n    if (softKeywords.propertyIsEnumerable(cur)) {\n      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n      return \"softKeyword\";\n    }\n\n    if (keywords.propertyIsEnumerable(cur)) {\n      if (blockKeywords.propertyIsEnumerable(cur)) curPunc = \"newstatement\";\n      return \"keyword\";\n    }\n    return \"word\";\n  }\n\n  tokenBase.isBase = true;\n\n  function startString(quote, stream, state) {\n    var tripleQuoted = false;\n    if (quote != \"/\" && stream.eat(quote)) {\n      if (stream.eat(quote)) tripleQuoted = true;\n      else return \"string\";\n    }\n    function t(stream, state) {\n      var escaped = false, next, end = !tripleQuoted;\n\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) {\n          if (!tripleQuoted) {\n            break;\n          }\n          if (stream.match(quote + quote)) {\n            end = true;\n            break;\n          }\n        }\n\n        if (quote == '\"' && next == \"$\" && !escaped && stream.eat(\"{\")) {\n          state.tokenize.push(tokenBaseUntilBrace());\n          return \"string\";\n        }\n\n        if (next == \"$\" && !escaped && !stream.eat(\" \")) {\n          state.tokenize.push(tokenBaseUntilSpace());\n          return \"string\";\n        }\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (multiLineStrings)\n        state.tokenize.push(t);\n      if (end) state.tokenize.pop();\n      return \"string\";\n    }\n\n    state.tokenize.push(t);\n    return t(stream, state);\n  }\n\n  function tokenBaseUntilBrace() {\n    var depth = 1;\n\n    function t(stream, state) {\n      if (stream.peek() == \"}\") {\n        depth--;\n        if (depth == 0) {\n          state.tokenize.pop();\n          return state.tokenize[state.tokenize.length - 1](stream, state);\n        }\n      } else if (stream.peek() == \"{\") {\n        depth++;\n      }\n      return tokenBase(stream, state);\n    }\n\n    t.isBase = true;\n    return t;\n  }\n\n  function tokenBaseUntilSpace() {\n    function t(stream, state) {\n      if (stream.eat(/[\\w]/)) {\n        var isWord = stream.eatWhile(/[\\w]/);\n        if (isWord) {\n          state.tokenize.pop();\n          return \"word\";\n        }\n      }\n      state.tokenize.pop();\n      return \"string\";\n    }\n\n    t.isBase = true;\n    return t;\n  }\n\n  function tokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize.pop();\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return \"comment\";\n  }\n\n  function expectExpression(last) {\n    return !last || last == \"operator\" || last == \"->\" || /[\\.\\[\\{\\(,;:]/.test(last) ||\n        last == \"newstatement\" || last == \"keyword\" || last == \"proplabel\";\n  }\n\n  function Context(indented, column, type, align, prev) {\n    this.indented = indented;\n    this.column = column;\n    this.type = type;\n    this.align = align;\n    this.prev = prev;\n  }\n\n  function pushContext(state, col, type) {\n    return state.context = new Context(state.indented, col, type, null, state.context);\n  }\n\n  function popContext(state) {\n    var t = state.context.type;\n    if (t == \")\" || t == \"]\" || t == \"}\")\n      state.indented = state.context.indented;\n    return state.context = state.context.prev;\n  }\n\n  // Interface\n\n  return {\n    startState: function (basecolumn) {\n      return {\n        tokenize: [tokenBase],\n        context: new Context((basecolumn || 0) - config.indentUnit, 0, \"top\", false),\n        indented: 0,\n        startOfLine: true,\n        lastToken: null\n      };\n    },\n\n    token: function (stream, state) {\n      var ctx = state.context;\n      if (stream.sol()) {\n        if (ctx.align == null) ctx.align = false;\n        state.indented = stream.indentation();\n        state.startOfLine = true;\n        // Automatic semicolon insertion\n        if (ctx.type == \"statement\" && !expectExpression(state.lastToken)) {\n          popContext(state);\n          ctx = state.context;\n        }\n      }\n      if (stream.eatSpace()) return null;\n      curPunc = null;\n      var style = state.tokenize[state.tokenize.length - 1](stream, state);\n      if (style == \"comment\") return style;\n      if (ctx.align == null) ctx.align = true;\n      if ((curPunc == \";\" || curPunc == \":\") && ctx.type == \"statement\") popContext(state);\n      // Handle indentation for {x -> \\n ... }\n      else if (curPunc == \"->\" && ctx.type == \"statement\" && ctx.prev.type == \"}\") {\n        popContext(state);\n        state.context.align = false;\n      }\n      else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n      else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n      else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n      else if (curPunc == \"}\") {\n        while (ctx.type == \"statement\") ctx = popContext(state);\n        if (ctx.type == \"}\") ctx = popContext(state);\n        while (ctx.type == \"statement\") ctx = popContext(state);\n      }\n      else if (curPunc == ctx.type) popContext(state);\n      else if (ctx.type == \"}\" || ctx.type == \"top\" || (ctx.type == \"statement\" && curPunc == \"newstatement\"))\n        pushContext(state, stream.column(), \"statement\");\n      state.startOfLine = false;\n      state.lastToken = curPunc || style;\n      return style;\n    },\n\n    indent: function (state, textAfter) {\n      if (!state.tokenize[state.tokenize.length - 1].isBase) return 0;\n      var firstChar = textAfter && textAfter.charAt(0), ctx = state.context;\n      if (ctx.type == \"statement\" && !expectExpression(state.lastToken)) ctx = ctx.prev;\n      var closing = firstChar == ctx.type;\n      if (ctx.type == \"statement\") {\n        return ctx.indented + (firstChar == \"{\" ? 0 : config.indentUnit);\n      }\n      else if (ctx.align) return ctx.column + (closing ? 0 : 1);\n      else return ctx.indented + (closing ? 0 : config.indentUnit);\n    },\n\n    electricChars: \"{}\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-kotlin\", \"kotlin\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/livescript/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: LiveScript mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../theme/solarized.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"livescript.js\"></script>\n<style>.CodeMirror {font-size: 80%;border-top: 1px solid silver; border-bottom: 1px solid silver;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">LiveScript</a>\n  </ul>\n</div>\n\n<article>\n<h2>LiveScript mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n# LiveScript mode for CodeMirror\n# The following script, prelude.ls, is used to\n# demonstrate LiveScript mode for CodeMirror.\n#   https://github.com/gkz/prelude-ls\n\nexport objToFunc = objToFunc = (obj) ->\n  (key) -> obj[key]\n\nexport each = (f, xs) -->\n  if typeof! xs is \\Object\n    for , x of xs then f x\n  else\n    for x in xs then f x\n  xs\n\nexport map = (f, xs) -->\n  f = objToFunc f if typeof! f isnt \\Function\n  type = typeof! xs\n  if type is \\Object\n    {[key, f x] for key, x of xs}\n  else\n    result = [f x for x in xs]\n    if type is \\String then result * '' else result\n\nexport filter = (f, xs) -->\n  f = objToFunc f if typeof! f isnt \\Function\n  type = typeof! xs\n  if type is \\Object\n    {[key, x] for key, x of xs when f x}\n  else\n    result = [x for x in xs when f x]\n    if type is \\String then result * '' else result\n\nexport reject = (f, xs) -->\n  f = objToFunc f if typeof! f isnt \\Function\n  type = typeof! xs\n  if type is \\Object\n    {[key, x] for key, x of xs when not f x}\n  else\n    result = [x for x in xs when not f x]\n    if type is \\String then result * '' else result\n\nexport partition = (f, xs) -->\n  f = objToFunc f if typeof! f isnt \\Function\n  type = typeof! xs\n  if type is \\Object\n    passed = {}\n    failed = {}\n    for key, x of xs\n      (if f x then passed else failed)[key] = x\n  else\n    passed = []\n    failed = []\n    for x in xs\n      (if f x then passed else failed)push x\n    if type is \\String\n      passed *= ''\n      failed *= ''\n  [passed, failed]\n\nexport find = (f, xs) -->\n  f = objToFunc f if typeof! f isnt \\Function\n  if typeof! xs is \\Object\n    for , x of xs when f x then return x\n  else\n    for x in xs when f x then return x\n  void\n\nexport head = export first = (xs) ->\n  return void if not xs.length\n  xs.0\n\nexport tail = (xs) ->\n  return void if not xs.length\n  xs.slice 1\n\nexport last = (xs) ->\n  return void if not xs.length\n  xs[*-1]\n\nexport initial = (xs) ->\n  return void if not xs.length\n  xs.slice 0 xs.length - 1\n\nexport empty = (xs) ->\n  if typeof! xs is \\Object\n    for x of xs then return false\n    return yes\n  not xs.length\n\nexport values = (obj) ->\n  [x for , x of obj]\n\nexport keys = (obj) ->\n  [x for x of obj]\n\nexport len = (xs) ->\n  xs = values xs if typeof! xs is \\Object\n  xs.length\n\nexport cons = (x, xs) -->\n  if typeof! xs is \\String then x + xs else [x] ++ xs\n\nexport append = (xs, ys) -->\n  if typeof! ys is \\String then xs + ys else xs ++ ys\n\nexport join = (sep, xs) -->\n  xs = values xs if typeof! xs is \\Object\n  xs.join sep\n\nexport reverse = (xs) ->\n  if typeof! xs is \\String\n  then (xs / '')reverse! * ''\n  else xs.slice!reverse!\n\nexport fold = export foldl = (f, memo, xs) -->\n  if typeof! xs is \\Object\n    for , x of xs then memo = f memo, x\n  else\n    for x in xs then memo = f memo, x\n  memo\n\nexport fold1 = export foldl1 = (f, xs) --> fold f, xs.0, xs.slice 1\n\nexport foldr = (f, memo, xs) --> fold f, memo, xs.slice!reverse!\n\nexport foldr1 = (f, xs) -->\n  xs.=slice!reverse!\n  fold f, xs.0, xs.slice 1\n\nexport unfoldr = export unfold = (f, b) -->\n  if (f b)?\n    [that.0] ++ unfoldr f, that.1\n  else\n    []\n\nexport andList = (xs) ->\n  for x in xs when not x\n    return false\n  true\n\nexport orList = (xs) ->\n  for x in xs when x\n    return true\n  false\n\nexport any = (f, xs) -->\n  f = objToFunc f if typeof! f isnt \\Function\n  for x in xs when f x\n    return yes\n  no\n\nexport all = (f, xs) -->\n  f = objToFunc f if typeof! f isnt \\Function\n  for x in xs when not f x\n    return no\n  yes\n\nexport unique = (xs) ->\n  result = []\n  if typeof! xs is \\Object\n    for , x of xs when x not in result then result.push x\n  else\n    for x   in xs when x not in result then result.push x\n  if typeof! xs is \\String then result * '' else result\n\nexport sort = (xs) ->\n  xs.concat!sort (x, y) ->\n    | x > y =>  1\n    | x < y => -1\n    | _     =>  0\n\nexport sortBy = (f, xs) -->\n  return [] unless xs.length\n  xs.concat!sort f\n\nexport compare = (f, x, y) -->\n  | (f x) > (f y) =>  1\n  | (f x) < (f y) => -1\n  | otherwise     =>  0\n\nexport sum = (xs) ->\n  result = 0\n  if typeof! xs is \\Object\n    for , x of xs then result += x\n  else\n    for x   in xs then result += x\n  result\n\nexport product = (xs) ->\n  result = 1\n  if typeof! xs is \\Object\n    for , x of xs then result *= x\n  else\n    for x   in xs then result *= x\n  result\n\nexport mean = export average = (xs) -> (sum xs) / len xs\n\nexport concat = (xss) -> fold append, [], xss\n\nexport concatMap = (f, xs) --> fold ((memo, x) -> append memo, f x), [], xs\n\nexport listToObj = (xs) ->\n  {[x.0, x.1] for x in xs}\n\nexport maximum = (xs) -> fold1 (>?), xs\n\nexport minimum = (xs) -> fold1 (<?), xs\n\nexport scan = export scanl = (f, memo, xs) -->\n  last = memo\n  if typeof! xs is \\Object\n  then [memo] ++ [last = f last, x for , x of xs]\n  else [memo] ++ [last = f last, x for x in xs]\n\nexport scan1 = export scanl1 = (f, xs) --> scan f, xs.0, xs.slice 1\n\nexport scanr = (f, memo, xs) -->\n  xs.=slice!reverse!\n  scan f, memo, xs .reverse!\n\nexport scanr1 = (f, xs) -->\n  xs.=slice!reverse!\n  scan f, xs.0, xs.slice 1 .reverse!\n\nexport replicate = (n, x) -->\n  result = []\n  i = 0\n  while i < n, ++i then result.push x\n  result\n\nexport take = (n, xs) -->\n  | n <= 0\n    if typeof! xs is \\String then '' else []\n  | not xs.length => xs\n  | otherwise     => xs.slice 0, n\n\nexport drop = (n, xs) -->\n  | n <= 0        => xs\n  | not xs.length => xs\n  | otherwise     => xs.slice n\n\nexport splitAt = (n, xs) --> [(take n, xs), (drop n, xs)]\n\nexport takeWhile = (p, xs) -->\n  return xs if not xs.length\n  p = objToFunc p if typeof! p isnt \\Function\n  result = []\n  for x in xs\n    break if not p x\n    result.push x\n  if typeof! xs is \\String then result * '' else result\n\nexport dropWhile = (p, xs) -->\n  return xs if not xs.length\n  p = objToFunc p if typeof! p isnt \\Function\n  i = 0\n  for x in xs\n    break if not p x\n    ++i\n  drop i, xs\n\nexport span = (p, xs) --> [(takeWhile p, xs), (dropWhile p, xs)]\n\nexport breakIt = (p, xs) --> span (not) << p, xs\n\nexport zip = (xs, ys) -->\n  result = []\n  for zs, i in [xs, ys]\n    for z, j in zs\n      result.push [] if i is 0\n      result[j]?push z\n  result\n\nexport zipWith = (f,xs, ys) -->\n  f = objToFunc f if typeof! f isnt \\Function\n  if not xs.length or not ys.length\n    []\n  else\n    [f.apply this, zs for zs in zip.call this, xs, ys]\n\nexport zipAll = (...xss) ->\n  result = []\n  for xs, i in xss\n    for x, j in xs\n      result.push [] if i is 0\n      result[j]?push x\n  result\n\nexport zipAllWith = (f, ...xss) ->\n  f = objToFunc f if typeof! f isnt \\Function\n  if not xss.0.length or not xss.1.length\n    []\n  else\n    [f.apply this, xs for xs in zipAll.apply this, xss]\n\nexport compose = (...funcs) ->\n  ->\n    args = arguments\n    for f in funcs\n      args = [f.apply this, args]\n    args.0\n\nexport curry = (f) ->\n  curry$ f # using util method curry$ from livescript\n\nexport id = (x) -> x\n\nexport flip = (f, x, y) --> f y, x\n\nexport fix = (f) ->\n  ( (g, x) -> -> f(g g) ...arguments ) do\n    (g, x) -> -> f(g g) ...arguments\n\nexport lines = (str) ->\n  return [] if not str.length\n  str / \\\\n\n\nexport unlines = (strs) -> strs * \\\\n\n\nexport words = (str) ->\n  return [] if not str.length\n  str / /[ ]+/\n\nexport unwords = (strs) -> strs * ' '\n\nexport max = (>?)\n\nexport min = (<?)\n\nexport negate = (x) -> -x\n\nexport abs = Math.abs\n\nexport signum = (x) ->\n  | x < 0     => -1\n  | x > 0     =>  1\n  | otherwise =>  0\n\nexport quot = (x, y) --> ~~(x / y)\n\nexport rem = (%)\n\nexport div = (x, y) --> Math.floor x / y\n\nexport mod = (%%)\n\nexport recip = (1 /)\n\nexport pi = Math.PI\n\nexport tau = pi * 2\n\nexport exp = Math.exp\n\nexport sqrt = Math.sqrt\n\n# changed from log as log is a\n# common function for logging things\nexport ln = Math.log\n\nexport pow = (^)\n\nexport sin = Math.sin\n\nexport tan = Math.tan\n\nexport cos = Math.cos\n\nexport asin = Math.asin\n\nexport acos = Math.acos\n\nexport atan = Math.atan\n\nexport atan2 = (x, y) --> Math.atan2 x, y\n\n# sinh\n# tanh\n# cosh\n# asinh\n# atanh\n# acosh\n\nexport truncate = (x) -> ~~x\n\nexport round = Math.round\n\nexport ceiling = Math.ceil\n\nexport floor = Math.floor\n\nexport isItNaN = (x) -> x isnt x\n\nexport even = (x) -> x % 2 == 0\n\nexport odd = (x) -> x % 2 != 0\n\nexport gcd = (x, y) -->\n  x = Math.abs x\n  y = Math.abs y\n  until y is 0\n    z = x % y\n    x = y\n    y = z\n  x\n\nexport lcm = (x, y) -->\n  Math.abs Math.floor (x / (gcd x, y) * y)\n\n# meta\nexport installPrelude = !(target) ->\n  unless target.prelude?isInstalled\n    target <<< out$ # using out$ generated by livescript\n    target <<< target.prelude.isInstalled = true\n\nexport prelude = out$\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        theme: \"solarized light\",\n        lineNumbers: true\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-livescript</code>.</p>\n\n    <p>The LiveScript mode was written by Kenneth Bentley.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/livescript/livescript.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/**\n * Link to the project's GitHub page:\n * https://github.com/duralog/CodeMirror\n */\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineMode('livescript', function(){\n    var tokenBase = function(stream, state) {\n      var next_rule = state.next || \"start\";\n      if (next_rule) {\n        state.next = state.next;\n        var nr = Rules[next_rule];\n        if (nr.splice) {\n          for (var i$ = 0; i$ < nr.length; ++i$) {\n            var r = nr[i$], m;\n            if (r.regex && (m = stream.match(r.regex))) {\n              state.next = r.next || state.next;\n              return r.token;\n            }\n          }\n          stream.next();\n          return 'error';\n        }\n        if (stream.match(r = Rules[next_rule])) {\n          if (r.regex && stream.match(r.regex)) {\n            state.next = r.next;\n            return r.token;\n          } else {\n            stream.next();\n            return 'error';\n          }\n        }\n      }\n      stream.next();\n      return 'error';\n    };\n    var external = {\n      startState: function(){\n        return {\n          next: 'start',\n          lastToken: null\n        };\n      },\n      token: function(stream, state){\n        while (stream.pos == stream.start)\n          var style = tokenBase(stream, state);\n        state.lastToken = {\n          style: style,\n          indent: stream.indentation(),\n          content: stream.current()\n        };\n        return style.replace(/\\./g, ' ');\n      },\n      indent: function(state){\n        var indentation = state.lastToken.indent;\n        if (state.lastToken.content.match(indenter)) {\n          indentation += 2;\n        }\n        return indentation;\n      }\n    };\n    return external;\n  });\n\n  var identifier = '(?![\\\\d\\\\s])[$\\\\w\\\\xAA-\\\\uFFDC](?:(?!\\\\s)[$\\\\w\\\\xAA-\\\\uFFDC]|-[A-Za-z])*';\n  var indenter = RegExp('(?:[({[=:]|[-~]>|\\\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\\\s*all)?|const|var|let|new|catch(?:\\\\s*' + identifier + ')?))\\\\s*$');\n  var keywordend = '(?![$\\\\w]|-[A-Za-z]|\\\\s*:(?![:=]))';\n  var stringfill = {\n    token: 'string',\n    regex: '.+'\n  };\n  var Rules = {\n    start: [\n      {\n        token: 'comment.doc',\n        regex: '/\\\\*',\n        next: 'comment'\n      }, {\n        token: 'comment',\n        regex: '#.*'\n      }, {\n        token: 'keyword',\n        regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend\n      }, {\n        token: 'constant.language',\n        regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend\n      }, {\n        token: 'invalid.illegal',\n        regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend\n      }, {\n        token: 'language.support.class',\n        regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend\n      }, {\n        token: 'language.support.function',\n        regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend\n      }, {\n        token: 'variable.language',\n        regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend\n      }, {\n        token: 'identifier',\n        regex: identifier + '\\\\s*:(?![:=])'\n      }, {\n        token: 'variable',\n        regex: identifier\n      }, {\n        token: 'keyword.operator',\n        regex: '(?:\\\\.{3}|\\\\s+\\\\?)'\n      }, {\n        token: 'keyword.variable',\n        regex: '(?:@+|::|\\\\.\\\\.)',\n        next: 'key'\n      }, {\n        token: 'keyword.operator',\n        regex: '\\\\.\\\\s*',\n        next: 'key'\n      }, {\n        token: 'string',\n        regex: '\\\\\\\\\\\\S[^\\\\s,;)}\\\\]]*'\n      }, {\n        token: 'string.doc',\n        regex: '\\'\\'\\'',\n        next: 'qdoc'\n      }, {\n        token: 'string.doc',\n        regex: '\"\"\"',\n        next: 'qqdoc'\n      }, {\n        token: 'string',\n        regex: '\\'',\n        next: 'qstring'\n      }, {\n        token: 'string',\n        regex: '\"',\n        next: 'qqstring'\n      }, {\n        token: 'string',\n        regex: '`',\n        next: 'js'\n      }, {\n        token: 'string',\n        regex: '<\\\\[',\n        next: 'words'\n      }, {\n        token: 'string.regex',\n        regex: '//',\n        next: 'heregex'\n      }, {\n        token: 'string.regex',\n        regex: '\\\\/(?:[^[\\\\/\\\\n\\\\\\\\]*(?:(?:\\\\\\\\.|\\\\[[^\\\\]\\\\n\\\\\\\\]*(?:\\\\\\\\.[^\\\\]\\\\n\\\\\\\\]*)*\\\\])[^[\\\\/\\\\n\\\\\\\\]*)*)\\\\/[gimy$]{0,4}',\n        next: 'key'\n      }, {\n        token: 'constant.numeric',\n        regex: '(?:0x[\\\\da-fA-F][\\\\da-fA-F_]*|(?:[2-9]|[12]\\\\d|3[0-6])r[\\\\da-zA-Z][\\\\da-zA-Z_]*|(?:\\\\d[\\\\d_]*(?:\\\\.\\\\d[\\\\d_]*)?|\\\\.\\\\d[\\\\d_]*)(?:e[+-]?\\\\d[\\\\d_]*)?[\\\\w$]*)'\n      }, {\n        token: 'lparen',\n        regex: '[({[]'\n      }, {\n        token: 'rparen',\n        regex: '[)}\\\\]]',\n        next: 'key'\n      }, {\n        token: 'keyword.operator',\n        regex: '\\\\S+'\n      }, {\n        token: 'text',\n        regex: '\\\\s+'\n      }\n    ],\n    heregex: [\n      {\n        token: 'string.regex',\n        regex: '.*?//[gimy$?]{0,4}',\n        next: 'start'\n      }, {\n        token: 'string.regex',\n        regex: '\\\\s*#{'\n      }, {\n        token: 'comment.regex',\n        regex: '\\\\s+(?:#.*)?'\n      }, {\n        token: 'string.regex',\n        regex: '\\\\S+'\n      }\n    ],\n    key: [\n      {\n        token: 'keyword.operator',\n        regex: '[.?@!]+'\n      }, {\n        token: 'identifier',\n        regex: identifier,\n        next: 'start'\n      }, {\n        token: 'text',\n        regex: '',\n        next: 'start'\n      }\n    ],\n    comment: [\n      {\n        token: 'comment.doc',\n        regex: '.*?\\\\*/',\n        next: 'start'\n      }, {\n        token: 'comment.doc',\n        regex: '.+'\n      }\n    ],\n    qdoc: [\n      {\n        token: 'string',\n        regex: \".*?'''\",\n        next: 'key'\n      }, stringfill\n    ],\n    qqdoc: [\n      {\n        token: 'string',\n        regex: '.*?\"\"\"',\n        next: 'key'\n      }, stringfill\n    ],\n    qstring: [\n      {\n        token: 'string',\n        regex: '[^\\\\\\\\\\']*(?:\\\\\\\\.[^\\\\\\\\\\']*)*\\'',\n        next: 'key'\n      }, stringfill\n    ],\n    qqstring: [\n      {\n        token: 'string',\n        regex: '[^\\\\\\\\\"]*(?:\\\\\\\\.[^\\\\\\\\\"]*)*\"',\n        next: 'key'\n      }, stringfill\n    ],\n    js: [\n      {\n        token: 'string',\n        regex: '[^\\\\\\\\`]*(?:\\\\\\\\.[^\\\\\\\\`]*)*`',\n        next: 'key'\n      }, stringfill\n    ],\n    words: [\n      {\n        token: 'string',\n        regex: '.*?\\\\]>',\n        next: 'key'\n      }, stringfill\n    ]\n  };\n  for (var idx in Rules) {\n    var r = Rules[idx];\n    if (r.splice) {\n      for (var i = 0, len = r.length; i < len; ++i) {\n        var rr = r[i];\n        if (typeof rr.regex === 'string') {\n          Rules[idx][i].regex = new RegExp('^' + rr.regex);\n        }\n      }\n    } else if (typeof rr.regex === 'string') {\n      Rules[idx].regex = new RegExp('^' + r.regex);\n    }\n  }\n\n  CodeMirror.defineMIME('text/x-livescript', 'livescript');\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/lua/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Lua mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../theme/neat.css\">\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"lua.js\"></script>\n<style>.CodeMirror {border: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Lua</a>\n  </ul>\n</div>\n\n<article>\n<h2>Lua mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n--[[\nexample useless code to show lua syntax highlighting\nthis is multiline comment\n]]\n\nfunction blahblahblah(x)\n\n  local table = {\n    \"asd\" = 123,\n    \"x\" = 0.34,  \n  }\n  if x ~= 3 then\n    print( x )\n  elseif x == \"string\"\n    my_custom_function( 0x34 )\n  else\n    unknown_function( \"some string\" )\n  end\n\n  --single line comment\n  \nend\n\nfunction blablabla3()\n\n  for k,v in ipairs( table ) do\n    --abcde..\n    y=[=[\n  x=[[\n      x is a multi line string\n   ]]\n  but its definition is iside a highest level string!\n  ]=]\n    print(\" \\\"\\\" \")\n\n    s = math.sin( x )\n  end\n\nend\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        matchBrackets: true,\n        theme: \"neat\"\n      });\n    </script>\n\n    <p>Loosely based on Franciszek\n    Wawrzak's <a href=\"http://codemirror.net/1/contrib/lua\">CodeMirror\n    1 mode</a>. One configuration parameter is\n    supported, <code>specials</code>, to which you can provide an\n    array of strings to have those identifiers highlighted with\n    the <code>lua-special</code> style.</p>\n    <p><strong>MIME types defined:</strong> <code>text/x-lua</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/lua/lua.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// LUA mode. Ported to CodeMirror 2 from Franciszek Wawrzak's\n// CodeMirror 1 mode.\n// highlights keywords, strings, comments (no leveling supported! (\"[==[\")), tokens, basic indenting\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"lua\", function(config, parserConfig) {\n  var indentUnit = config.indentUnit;\n\n  function prefixRE(words) {\n    return new RegExp(\"^(?:\" + words.join(\"|\") + \")\", \"i\");\n  }\n  function wordRE(words) {\n    return new RegExp(\"^(?:\" + words.join(\"|\") + \")$\", \"i\");\n  }\n  var specials = wordRE(parserConfig.specials || []);\n\n  // long list of standard functions from lua manual\n  var builtins = wordRE([\n    \"_G\",\"_VERSION\",\"assert\",\"collectgarbage\",\"dofile\",\"error\",\"getfenv\",\"getmetatable\",\"ipairs\",\"load\",\n    \"loadfile\",\"loadstring\",\"module\",\"next\",\"pairs\",\"pcall\",\"print\",\"rawequal\",\"rawget\",\"rawset\",\"require\",\n    \"select\",\"setfenv\",\"setmetatable\",\"tonumber\",\"tostring\",\"type\",\"unpack\",\"xpcall\",\n\n    \"coroutine.create\",\"coroutine.resume\",\"coroutine.running\",\"coroutine.status\",\"coroutine.wrap\",\"coroutine.yield\",\n\n    \"debug.debug\",\"debug.getfenv\",\"debug.gethook\",\"debug.getinfo\",\"debug.getlocal\",\"debug.getmetatable\",\n    \"debug.getregistry\",\"debug.getupvalue\",\"debug.setfenv\",\"debug.sethook\",\"debug.setlocal\",\"debug.setmetatable\",\n    \"debug.setupvalue\",\"debug.traceback\",\n\n    \"close\",\"flush\",\"lines\",\"read\",\"seek\",\"setvbuf\",\"write\",\n\n    \"io.close\",\"io.flush\",\"io.input\",\"io.lines\",\"io.open\",\"io.output\",\"io.popen\",\"io.read\",\"io.stderr\",\"io.stdin\",\n    \"io.stdout\",\"io.tmpfile\",\"io.type\",\"io.write\",\n\n    \"math.abs\",\"math.acos\",\"math.asin\",\"math.atan\",\"math.atan2\",\"math.ceil\",\"math.cos\",\"math.cosh\",\"math.deg\",\n    \"math.exp\",\"math.floor\",\"math.fmod\",\"math.frexp\",\"math.huge\",\"math.ldexp\",\"math.log\",\"math.log10\",\"math.max\",\n    \"math.min\",\"math.modf\",\"math.pi\",\"math.pow\",\"math.rad\",\"math.random\",\"math.randomseed\",\"math.sin\",\"math.sinh\",\n    \"math.sqrt\",\"math.tan\",\"math.tanh\",\n\n    \"os.clock\",\"os.date\",\"os.difftime\",\"os.execute\",\"os.exit\",\"os.getenv\",\"os.remove\",\"os.rename\",\"os.setlocale\",\n    \"os.time\",\"os.tmpname\",\n\n    \"package.cpath\",\"package.loaded\",\"package.loaders\",\"package.loadlib\",\"package.path\",\"package.preload\",\n    \"package.seeall\",\n\n    \"string.byte\",\"string.char\",\"string.dump\",\"string.find\",\"string.format\",\"string.gmatch\",\"string.gsub\",\n    \"string.len\",\"string.lower\",\"string.match\",\"string.rep\",\"string.reverse\",\"string.sub\",\"string.upper\",\n\n    \"table.concat\",\"table.insert\",\"table.maxn\",\"table.remove\",\"table.sort\"\n  ]);\n  var keywords = wordRE([\"and\",\"break\",\"elseif\",\"false\",\"nil\",\"not\",\"or\",\"return\",\n                         \"true\",\"function\", \"end\", \"if\", \"then\", \"else\", \"do\",\n                         \"while\", \"repeat\", \"until\", \"for\", \"in\", \"local\" ]);\n\n  var indentTokens = wordRE([\"function\", \"if\",\"repeat\",\"do\", \"\\\\(\", \"{\"]);\n  var dedentTokens = wordRE([\"end\", \"until\", \"\\\\)\", \"}\"]);\n  var dedentPartial = prefixRE([\"end\", \"until\", \"\\\\)\", \"}\", \"else\", \"elseif\"]);\n\n  function readBracket(stream) {\n    var level = 0;\n    while (stream.eat(\"=\")) ++level;\n    stream.eat(\"[\");\n    return level;\n  }\n\n  function normal(stream, state) {\n    var ch = stream.next();\n    if (ch == \"-\" && stream.eat(\"-\")) {\n      if (stream.eat(\"[\") && stream.eat(\"[\"))\n        return (state.cur = bracketed(readBracket(stream), \"comment\"))(stream, state);\n      stream.skipToEnd();\n      return \"comment\";\n    }\n    if (ch == \"\\\"\" || ch == \"'\")\n      return (state.cur = string(ch))(stream, state);\n    if (ch == \"[\" && /[\\[=]/.test(stream.peek()))\n      return (state.cur = bracketed(readBracket(stream), \"string\"))(stream, state);\n    if (/\\d/.test(ch)) {\n      stream.eatWhile(/[\\w.%]/);\n      return \"number\";\n    }\n    if (/[\\w_]/.test(ch)) {\n      stream.eatWhile(/[\\w\\\\\\-_.]/);\n      return \"variable\";\n    }\n    return null;\n  }\n\n  function bracketed(level, style) {\n    return function(stream, state) {\n      var curlev = null, ch;\n      while ((ch = stream.next()) != null) {\n        if (curlev == null) {if (ch == \"]\") curlev = 0;}\n        else if (ch == \"=\") ++curlev;\n        else if (ch == \"]\" && curlev == level) { state.cur = normal; break; }\n        else curlev = null;\n      }\n      return style;\n    };\n  }\n\n  function string(quote) {\n    return function(stream, state) {\n      var escaped = false, ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == quote && !escaped) break;\n        escaped = !escaped && ch == \"\\\\\";\n      }\n      if (!escaped) state.cur = normal;\n      return \"string\";\n    };\n  }\n\n  return {\n    startState: function(basecol) {\n      return {basecol: basecol || 0, indentDepth: 0, cur: normal};\n    },\n\n    token: function(stream, state) {\n      if (stream.eatSpace()) return null;\n      var style = state.cur(stream, state);\n      var word = stream.current();\n      if (style == \"variable\") {\n        if (keywords.test(word)) style = \"keyword\";\n        else if (builtins.test(word)) style = \"builtin\";\n        else if (specials.test(word)) style = \"variable-2\";\n      }\n      if ((style != \"comment\") && (style != \"string\")){\n        if (indentTokens.test(word)) ++state.indentDepth;\n        else if (dedentTokens.test(word)) --state.indentDepth;\n      }\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      var closing = dedentPartial.test(textAfter);\n      return state.basecol + indentUnit * (state.indentDepth - (closing ? 1 : 0));\n    },\n\n    lineComment: \"--\",\n    blockCommentStart: \"--[[\",\n    blockCommentEnd: \"]]\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-lua\", \"lua\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/markdown/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Markdown mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/continuelist.js\"></script>\n<script src=\"../xml/xml.js\"></script>\n<script src=\"markdown.js\"></script>\n<style type=\"text/css\">\n      .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}\n      .cm-s-default .cm-trailing-space-a:before,\n      .cm-s-default .cm-trailing-space-b:before {position: absolute; content: \"\\00B7\"; color: #777;}\n      .cm-s-default .cm-trailing-space-new-line:before {position: absolute; content: \"\\21B5\"; color: #777;}\n    </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Markdown</a>\n  </ul>\n</div>\n\n<article>\n<h2>Markdown mode</h2>\n<form><textarea id=\"code\" name=\"code\">\nMarkdown: Basics\n================\n\n&lt;ul id=\"ProjectSubmenu\"&gt;\n    &lt;li&gt;&lt;a href=\"/projects/markdown/\" title=\"Markdown Project Page\"&gt;Main&lt;/a&gt;&lt;/li&gt;\n    &lt;li&gt;&lt;a class=\"selected\" title=\"Markdown Basics\"&gt;Basics&lt;/a&gt;&lt;/li&gt;\n    &lt;li&gt;&lt;a href=\"/projects/markdown/syntax\" title=\"Markdown Syntax Documentation\"&gt;Syntax&lt;/a&gt;&lt;/li&gt;\n    &lt;li&gt;&lt;a href=\"/projects/markdown/license\" title=\"Pricing and License Information\"&gt;License&lt;/a&gt;&lt;/li&gt;\n    &lt;li&gt;&lt;a href=\"/projects/markdown/dingus\" title=\"Online Markdown Web Form\"&gt;Dingus&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;\n\n\nGetting the Gist of Markdown's Formatting Syntax\n------------------------------------------------\n\nThis page offers a brief overview of what it's like to use Markdown.\nThe [syntax page] [s] provides complete, detailed documentation for\nevery feature, but Markdown should be very easy to pick up simply by\nlooking at a few examples of it in action. The examples on this page\nare written in a before/after style, showing example syntax and the\nHTML output produced by Markdown.\n\nIt's also helpful to simply try Markdown out; the [Dingus] [d] is a\nweb application that allows you type your own Markdown-formatted text\nand translate it to XHTML.\n\n**Note:** This document is itself written using Markdown; you\ncan [see the source for it by adding '.text' to the URL] [src].\n\n  [s]: /projects/markdown/syntax  \"Markdown Syntax\"\n  [d]: /projects/markdown/dingus  \"Markdown Dingus\"\n  [src]: /projects/markdown/basics.text\n\n\n## Paragraphs, Headers, Blockquotes ##\n\nA paragraph is simply one or more consecutive lines of text, separated\nby one or more blank lines. (A blank line is any line that looks like\na blank line -- a line containing nothing but spaces or tabs is\nconsidered blank.) Normal paragraphs should not be indented with\nspaces or tabs.\n\nMarkdown offers two styles of headers: *Setext* and *atx*.\nSetext-style headers for `&lt;h1&gt;` and `&lt;h2&gt;` are created by\n\"underlining\" with equal signs (`=`) and hyphens (`-`), respectively.\nTo create an atx-style header, you put 1-6 hash marks (`#`) at the\nbeginning of the line -- the number of hashes equals the resulting\nHTML header level.\n\nBlockquotes are indicated using email-style '`&gt;`' angle brackets.\n\nMarkdown:\n\n    A First Level Header\n    ====================\n    \n    A Second Level Header\n    ---------------------\n\n    Now is the time for all good men to come to\n    the aid of their country. This is just a\n    regular paragraph.\n\n    The quick brown fox jumped over the lazy\n    dog's back.\n    \n    ### Header 3\n\n    &gt; This is a blockquote.\n    &gt; \n    &gt; This is the second paragraph in the blockquote.\n    &gt;\n    &gt; ## This is an H2 in a blockquote\n\n\nOutput:\n\n    &lt;h1&gt;A First Level Header&lt;/h1&gt;\n    \n    &lt;h2&gt;A Second Level Header&lt;/h2&gt;\n    \n    &lt;p&gt;Now is the time for all good men to come to\n    the aid of their country. This is just a\n    regular paragraph.&lt;/p&gt;\n    \n    &lt;p&gt;The quick brown fox jumped over the lazy\n    dog's back.&lt;/p&gt;\n    \n    &lt;h3&gt;Header 3&lt;/h3&gt;\n    \n    &lt;blockquote&gt;\n        &lt;p&gt;This is a blockquote.&lt;/p&gt;\n        \n        &lt;p&gt;This is the second paragraph in the blockquote.&lt;/p&gt;\n        \n        &lt;h2&gt;This is an H2 in a blockquote&lt;/h2&gt;\n    &lt;/blockquote&gt;\n\n\n\n### Phrase Emphasis ###\n\nMarkdown uses asterisks and underscores to indicate spans of emphasis.\n\nMarkdown:\n\n    Some of these words *are emphasized*.\n    Some of these words _are emphasized also_.\n    \n    Use two asterisks for **strong emphasis**.\n    Or, if you prefer, __use two underscores instead__.\n\nOutput:\n\n    &lt;p&gt;Some of these words &lt;em&gt;are emphasized&lt;/em&gt;.\n    Some of these words &lt;em&gt;are emphasized also&lt;/em&gt;.&lt;/p&gt;\n    \n    &lt;p&gt;Use two asterisks for &lt;strong&gt;strong emphasis&lt;/strong&gt;.\n    Or, if you prefer, &lt;strong&gt;use two underscores instead&lt;/strong&gt;.&lt;/p&gt;\n   \n\n\n## Lists ##\n\nUnordered (bulleted) lists use asterisks, pluses, and hyphens (`*`,\n`+`, and `-`) as list markers. These three markers are\ninterchangable; this:\n\n    *   Candy.\n    *   Gum.\n    *   Booze.\n\nthis:\n\n    +   Candy.\n    +   Gum.\n    +   Booze.\n\nand this:\n\n    -   Candy.\n    -   Gum.\n    -   Booze.\n\nall produce the same output:\n\n    &lt;ul&gt;\n    &lt;li&gt;Candy.&lt;/li&gt;\n    &lt;li&gt;Gum.&lt;/li&gt;\n    &lt;li&gt;Booze.&lt;/li&gt;\n    &lt;/ul&gt;\n\nOrdered (numbered) lists use regular numbers, followed by periods, as\nlist markers:\n\n    1.  Red\n    2.  Green\n    3.  Blue\n\nOutput:\n\n    &lt;ol&gt;\n    &lt;li&gt;Red&lt;/li&gt;\n    &lt;li&gt;Green&lt;/li&gt;\n    &lt;li&gt;Blue&lt;/li&gt;\n    &lt;/ol&gt;\n\nIf you put blank lines between items, you'll get `&lt;p&gt;` tags for the\nlist item text. You can create multi-paragraph list items by indenting\nthe paragraphs by 4 spaces or 1 tab:\n\n    *   A list item.\n    \n        With multiple paragraphs.\n\n    *   Another item in the list.\n\nOutput:\n\n    &lt;ul&gt;\n    &lt;li&gt;&lt;p&gt;A list item.&lt;/p&gt;\n    &lt;p&gt;With multiple paragraphs.&lt;/p&gt;&lt;/li&gt;\n    &lt;li&gt;&lt;p&gt;Another item in the list.&lt;/p&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n    \n\n\n### Links ###\n\nMarkdown supports two styles for creating links: *inline* and\n*reference*. With both styles, you use square brackets to delimit the\ntext you want to turn into a link.\n\nInline-style links use parentheses immediately after the link text.\nFor example:\n\n    This is an [example link](http://example.com/).\n\nOutput:\n\n    &lt;p&gt;This is an &lt;a href=\"http://example.com/\"&gt;\n    example link&lt;/a&gt;.&lt;/p&gt;\n\nOptionally, you may include a title attribute in the parentheses:\n\n    This is an [example link](http://example.com/ \"With a Title\").\n\nOutput:\n\n    &lt;p&gt;This is an &lt;a href=\"http://example.com/\" title=\"With a Title\"&gt;\n    example link&lt;/a&gt;.&lt;/p&gt;\n\nReference-style links allow you to refer to your links by names, which\nyou define elsewhere in your document:\n\n    I get 10 times more traffic from [Google][1] than from\n    [Yahoo][2] or [MSN][3].\n\n    [1]: http://google.com/        \"Google\"\n    [2]: http://search.yahoo.com/  \"Yahoo Search\"\n    [3]: http://search.msn.com/    \"MSN Search\"\n\nOutput:\n\n    &lt;p&gt;I get 10 times more traffic from &lt;a href=\"http://google.com/\"\n    title=\"Google\"&gt;Google&lt;/a&gt; than from &lt;a href=\"http://search.yahoo.com/\"\n    title=\"Yahoo Search\"&gt;Yahoo&lt;/a&gt; or &lt;a href=\"http://search.msn.com/\"\n    title=\"MSN Search\"&gt;MSN&lt;/a&gt;.&lt;/p&gt;\n\nThe title attribute is optional. Link names may contain letters,\nnumbers and spaces, but are *not* case sensitive:\n\n    I start my morning with a cup of coffee and\n    [The New York Times][NY Times].\n\n    [ny times]: http://www.nytimes.com/\n\nOutput:\n\n    &lt;p&gt;I start my morning with a cup of coffee and\n    &lt;a href=\"http://www.nytimes.com/\"&gt;The New York Times&lt;/a&gt;.&lt;/p&gt;\n\n\n### Images ###\n\nImage syntax is very much like link syntax.\n\nInline (titles are optional):\n\n    ![alt text](/path/to/img.jpg \"Title\")\n\nReference-style:\n\n    ![alt text][id]\n\n    [id]: /path/to/img.jpg \"Title\"\n\nBoth of the above examples produce the same output:\n\n    &lt;img src=\"/path/to/img.jpg\" alt=\"alt text\" title=\"Title\" /&gt;\n\n\n\n### Code ###\n\nIn a regular paragraph, you can create code span by wrapping text in\nbacktick quotes. Any ampersands (`&amp;`) and angle brackets (`&lt;` or\n`&gt;`) will automatically be translated into HTML entities. This makes\nit easy to use Markdown to write about HTML example code:\n\n    I strongly recommend against using any `&lt;blink&gt;` tags.\n\n    I wish SmartyPants used named entities like `&amp;mdash;`\n    instead of decimal-encoded entites like `&amp;#8212;`.\n\nOutput:\n\n    &lt;p&gt;I strongly recommend against using any\n    &lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;\n    \n    &lt;p&gt;I wish SmartyPants used named entities like\n    &lt;code&gt;&amp;amp;mdash;&lt;/code&gt; instead of decimal-encoded\n    entites like &lt;code&gt;&amp;amp;#8212;&lt;/code&gt;.&lt;/p&gt;\n\n\nTo specify an entire block of pre-formatted code, indent every line of\nthe block by 4 spaces or 1 tab. Just like with code spans, `&amp;`, `&lt;`,\nand `&gt;` characters will be escaped automatically.\n\nMarkdown:\n\n    If you want your page to validate under XHTML 1.0 Strict,\n    you've got to put paragraph tags in your blockquotes:\n\n        &lt;blockquote&gt;\n            &lt;p&gt;For example.&lt;/p&gt;\n        &lt;/blockquote&gt;\n\nOutput:\n\n    &lt;p&gt;If you want your page to validate under XHTML 1.0 Strict,\n    you've got to put paragraph tags in your blockquotes:&lt;/p&gt;\n    \n    &lt;pre&gt;&lt;code&gt;&amp;lt;blockquote&amp;gt;\n        &amp;lt;p&amp;gt;For example.&amp;lt;/p&amp;gt;\n    &amp;lt;/blockquote&amp;gt;\n    &lt;/code&gt;&lt;/pre&gt;\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: 'markdown',\n        lineNumbers: true,\n        theme: \"default\",\n        extraKeys: {\"Enter\": \"newlineAndIndentContinueMarkdownList\"}\n      });\n    </script>\n\n    <p>Optionally depends on the XML mode for properly highlighted inline XML blocks.</p>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-markdown</code>.</p>\n\n    <p><strong>Parsing/Highlighting Tests:</strong> <a href=\"../../test/index.html#markdown_*\">normal</a>,  <a href=\"../../test/index.html#verbose,markdown_*\">verbose</a>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/markdown/markdown.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../meta\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../xml/xml\", \"../meta\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"markdown\", function(cmCfg, modeCfg) {\n\n  var htmlFound = CodeMirror.modes.hasOwnProperty(\"xml\");\n  var htmlMode = CodeMirror.getMode(cmCfg, htmlFound ? {name: \"xml\", htmlMode: true} : \"text/plain\");\n\n  function getMode(name) {\n    if (CodeMirror.findModeByName) {\n      var found = CodeMirror.findModeByName(name);\n      if (found) name = found.mime || found.mimes[0];\n    }\n    var mode = CodeMirror.getMode(cmCfg, name);\n    return mode.name == \"null\" ? null : mode;\n  }\n\n  // Should characters that affect highlighting be highlighted separate?\n  // Does not include characters that will be output (such as `1.` and `-` for lists)\n  if (modeCfg.highlightFormatting === undefined)\n    modeCfg.highlightFormatting = false;\n\n  // Maximum number of nested blockquotes. Set to 0 for infinite nesting.\n  // Excess `>` will emit `error` token.\n  if (modeCfg.maxBlockquoteDepth === undefined)\n    modeCfg.maxBlockquoteDepth = 0;\n\n  // Should underscores in words open/close em/strong?\n  if (modeCfg.underscoresBreakWords === undefined)\n    modeCfg.underscoresBreakWords = true;\n\n  // Turn on fenced code blocks? (\"```\" to start/end)\n  if (modeCfg.fencedCodeBlocks === undefined) modeCfg.fencedCodeBlocks = false;\n\n  // Turn on task lists? (\"- [ ] \" and \"- [x] \")\n  if (modeCfg.taskLists === undefined) modeCfg.taskLists = false;\n\n  // Turn on strikethrough syntax\n  if (modeCfg.strikethrough === undefined)\n    modeCfg.strikethrough = false;\n\n  var codeDepth = 0;\n\n  var header   = 'header'\n  ,   code     = 'comment'\n  ,   quote    = 'quote'\n  ,   list1    = 'variable-2'\n  ,   list2    = 'variable-3'\n  ,   list3    = 'keyword'\n  ,   hr       = 'hr'\n  ,   image    = 'tag'\n  ,   formatting = 'formatting'\n  ,   linkinline = 'link'\n  ,   linkemail = 'link'\n  ,   linktext = 'link'\n  ,   linkhref = 'string'\n  ,   em       = 'em'\n  ,   strong   = 'strong'\n  ,   strikethrough = 'strikethrough';\n\n  var hrRE = /^([*\\-=_])(?:\\s*\\1){2,}\\s*$/\n  ,   ulRE = /^[*\\-+]\\s+/\n  ,   olRE = /^[0-9]+\\.\\s+/\n  ,   taskListRE = /^\\[(x| )\\](?=\\s)/ // Must follow ulRE or olRE\n  ,   atxHeaderRE = /^#+/\n  ,   setextHeaderRE = /^(?:\\={1,}|-{1,})$/\n  ,   textRE = /^[^#!\\[\\]*_\\\\<>` \"'(~]+/;\n\n  function switchInline(stream, state, f) {\n    state.f = state.inline = f;\n    return f(stream, state);\n  }\n\n  function switchBlock(stream, state, f) {\n    state.f = state.block = f;\n    return f(stream, state);\n  }\n\n\n  // Blocks\n\n  function blankLine(state) {\n    // Reset linkTitle state\n    state.linkTitle = false;\n    // Reset EM state\n    state.em = false;\n    // Reset STRONG state\n    state.strong = false;\n    // Reset strikethrough state\n    state.strikethrough = false;\n    // Reset state.quote\n    state.quote = 0;\n    if (!htmlFound && state.f == htmlBlock) {\n      state.f = inlineNormal;\n      state.block = blockNormal;\n    }\n    // Reset state.trailingSpace\n    state.trailingSpace = 0;\n    state.trailingSpaceNewLine = false;\n    // Mark this line as blank\n    state.thisLineHasContent = false;\n    return null;\n  }\n\n  function blockNormal(stream, state) {\n\n    var sol = stream.sol();\n\n    var prevLineIsList = (state.list !== false);\n    if (state.list !== false && state.indentationDiff >= 0) { // Continued list\n      if (state.indentationDiff < 4) { // Only adjust indentation if *not* a code block\n        state.indentation -= state.indentationDiff;\n      }\n      state.list = null;\n    } else if (state.list !== false && state.indentation > 0) {\n      state.list = null;\n      state.listDepth = Math.floor(state.indentation / 4);\n    } else if (state.list !== false) { // No longer a list\n      state.list = false;\n      state.listDepth = 0;\n    }\n\n    var match = null;\n    if (state.indentationDiff >= 4) {\n      state.indentation -= 4;\n      stream.skipToEnd();\n      return code;\n    } else if (stream.eatSpace()) {\n      return null;\n    } else if (match = stream.match(atxHeaderRE)) {\n      state.header = match[0].length <= 6 ? match[0].length : 6;\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      state.f = state.inline;\n      return getType(state);\n    } else if (state.prevLineHasContent && (match = stream.match(setextHeaderRE))) {\n      state.header = match[0].charAt(0) == '=' ? 1 : 2;\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      state.f = state.inline;\n      return getType(state);\n    } else if (stream.eat('>')) {\n      state.indentation++;\n      state.quote = sol ? 1 : state.quote + 1;\n      if (modeCfg.highlightFormatting) state.formatting = \"quote\";\n      stream.eatSpace();\n      return getType(state);\n    } else if (stream.peek() === '[') {\n      return switchInline(stream, state, footnoteLink);\n    } else if (stream.match(hrRE, true)) {\n      return hr;\n    } else if ((!state.prevLineHasContent || prevLineIsList) && (stream.match(ulRE, false) || stream.match(olRE, false))) {\n      var listType = null;\n      if (stream.match(ulRE, true)) {\n        listType = 'ul';\n      } else {\n        stream.match(olRE, true);\n        listType = 'ol';\n      }\n      state.indentation += 4;\n      state.list = true;\n      state.listDepth++;\n      if (modeCfg.taskLists && stream.match(taskListRE, false)) {\n        state.taskList = true;\n      }\n      state.f = state.inline;\n      if (modeCfg.highlightFormatting) state.formatting = [\"list\", \"list-\" + listType];\n      return getType(state);\n    } else if (modeCfg.fencedCodeBlocks && stream.match(/^```[ \\t]*([\\w+#]*)/, true)) {\n      // try switching mode\n      state.localMode = getMode(RegExp.$1);\n      if (state.localMode) state.localState = state.localMode.startState();\n      state.f = state.block = local;\n      if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n      state.code = true;\n      return getType(state);\n    }\n\n    return switchInline(stream, state, state.inline);\n  }\n\n  function htmlBlock(stream, state) {\n    var style = htmlMode.token(stream, state.htmlState);\n    if ((htmlFound && state.htmlState.tagStart === null && !state.htmlState.context) ||\n        (state.md_inside && stream.current().indexOf(\">\") > -1)) {\n      state.f = inlineNormal;\n      state.block = blockNormal;\n      state.htmlState = null;\n    }\n    return style;\n  }\n\n  function local(stream, state) {\n    if (stream.sol() && stream.match(\"```\", false)) {\n      state.localMode = state.localState = null;\n      state.f = state.block = leavingLocal;\n      return null;\n    } else if (state.localMode) {\n      return state.localMode.token(stream, state.localState);\n    } else {\n      stream.skipToEnd();\n      return code;\n    }\n  }\n\n  function leavingLocal(stream, state) {\n    stream.match(\"```\");\n    state.block = blockNormal;\n    state.f = inlineNormal;\n    if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n    state.code = true;\n    var returnType = getType(state);\n    state.code = false;\n    return returnType;\n  }\n\n  // Inline\n  function getType(state) {\n    var styles = [];\n\n    if (state.formatting) {\n      styles.push(formatting);\n\n      if (typeof state.formatting === \"string\") state.formatting = [state.formatting];\n\n      for (var i = 0; i < state.formatting.length; i++) {\n        styles.push(formatting + \"-\" + state.formatting[i]);\n\n        if (state.formatting[i] === \"header\") {\n          styles.push(formatting + \"-\" + state.formatting[i] + \"-\" + state.header);\n        }\n\n        // Add `formatting-quote` and `formatting-quote-#` for blockquotes\n        // Add `error` instead if the maximum blockquote nesting depth is passed\n        if (state.formatting[i] === \"quote\") {\n          if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n            styles.push(formatting + \"-\" + state.formatting[i] + \"-\" + state.quote);\n          } else {\n            styles.push(\"error\");\n          }\n        }\n      }\n    }\n\n    if (state.taskOpen) {\n      styles.push(\"meta\");\n      return styles.length ? styles.join(' ') : null;\n    }\n    if (state.taskClosed) {\n      styles.push(\"property\");\n      return styles.length ? styles.join(' ') : null;\n    }\n\n    if (state.linkHref) {\n      styles.push(linkhref);\n      return styles.length ? styles.join(' ') : null;\n    }\n\n    if (state.strong) { styles.push(strong); }\n    if (state.em) { styles.push(em); }\n    if (state.strikethrough) { styles.push(strikethrough); }\n\n    if (state.linkText) { styles.push(linktext); }\n\n    if (state.code) { styles.push(code); }\n\n    if (state.header) { styles.push(header); styles.push(header + \"-\" + state.header); }\n\n    if (state.quote) {\n      styles.push(quote);\n\n      // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth\n      if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n        styles.push(quote + \"-\" + state.quote);\n      } else {\n        styles.push(quote + \"-\" + modeCfg.maxBlockquoteDepth);\n      }\n    }\n\n    if (state.list !== false) {\n      var listMod = (state.listDepth - 1) % 3;\n      if (!listMod) {\n        styles.push(list1);\n      } else if (listMod === 1) {\n        styles.push(list2);\n      } else {\n        styles.push(list3);\n      }\n    }\n\n    if (state.trailingSpaceNewLine) {\n      styles.push(\"trailing-space-new-line\");\n    } else if (state.trailingSpace) {\n      styles.push(\"trailing-space-\" + (state.trailingSpace % 2 ? \"a\" : \"b\"));\n    }\n\n    return styles.length ? styles.join(' ') : null;\n  }\n\n  function handleText(stream, state) {\n    if (stream.match(textRE, true)) {\n      return getType(state);\n    }\n    return undefined;\n  }\n\n  function inlineNormal(stream, state) {\n    var style = state.text(stream, state);\n    if (typeof style !== 'undefined')\n      return style;\n\n    if (state.list) { // List marker (*, +, -, 1., etc)\n      state.list = null;\n      return getType(state);\n    }\n\n    if (state.taskList) {\n      var taskOpen = stream.match(taskListRE, true)[1] !== \"x\";\n      if (taskOpen) state.taskOpen = true;\n      else state.taskClosed = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"task\";\n      state.taskList = false;\n      return getType(state);\n    }\n\n    state.taskOpen = false;\n    state.taskClosed = false;\n\n    if (state.header && stream.match(/^#+$/, true)) {\n      if (modeCfg.highlightFormatting) state.formatting = \"header\";\n      return getType(state);\n    }\n\n    // Get sol() value now, before character is consumed\n    var sol = stream.sol();\n\n    var ch = stream.next();\n\n    if (ch === '\\\\') {\n      stream.next();\n      if (modeCfg.highlightFormatting) {\n        var type = getType(state);\n        return type ? type + \" formatting-escape\" : \"formatting-escape\";\n      }\n    }\n\n    // Matches link titles present on next line\n    if (state.linkTitle) {\n      state.linkTitle = false;\n      var matchCh = ch;\n      if (ch === '(') {\n        matchCh = ')';\n      }\n      matchCh = (matchCh+'').replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n      var regex = '^\\\\s*(?:[^' + matchCh + '\\\\\\\\]+|\\\\\\\\\\\\\\\\|\\\\\\\\.)' + matchCh;\n      if (stream.match(new RegExp(regex), true)) {\n        return linkhref;\n      }\n    }\n\n    // If this block is changed, it may need to be updated in GFM mode\n    if (ch === '`') {\n      var previousFormatting = state.formatting;\n      if (modeCfg.highlightFormatting) state.formatting = \"code\";\n      var t = getType(state);\n      var before = stream.pos;\n      stream.eatWhile('`');\n      var difference = 1 + stream.pos - before;\n      if (!state.code) {\n        codeDepth = difference;\n        state.code = true;\n        return getType(state);\n      } else {\n        if (difference === codeDepth) { // Must be exact\n          state.code = false;\n          return t;\n        }\n        state.formatting = previousFormatting;\n        return getType(state);\n      }\n    } else if (state.code) {\n      return getType(state);\n    }\n\n    if (ch === '!' && stream.match(/\\[[^\\]]*\\] ?(?:\\(|\\[)/, false)) {\n      stream.match(/\\[[^\\]]*\\]/);\n      state.inline = state.f = linkHref;\n      return image;\n    }\n\n    if (ch === '[' && stream.match(/.*\\](\\(.*\\)| ?\\[.*\\])/, false)) {\n      state.linkText = true;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      return getType(state);\n    }\n\n    if (ch === ']' && state.linkText && stream.match(/\\(.*\\)| ?\\[.*\\]/, false)) {\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      state.linkText = false;\n      state.inline = state.f = linkHref;\n      return type;\n    }\n\n    if (ch === '<' && stream.match(/^(https?|ftps?):\\/\\/(?:[^\\\\>]|\\\\.)+>/, false)) {\n      state.f = state.inline = linkInline;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + linkinline;\n    }\n\n    if (ch === '<' && stream.match(/^[^> \\\\]+@(?:[^\\\\>]|\\\\.)+>/, false)) {\n      state.f = state.inline = linkInline;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + linkemail;\n    }\n\n    if (ch === '<' && stream.match(/^\\w/, false)) {\n      if (stream.string.indexOf(\">\") != -1) {\n        var atts = stream.string.substring(1,stream.string.indexOf(\">\"));\n        if (/markdown\\s*=\\s*('|\"){0,1}1('|\"){0,1}/.test(atts)) {\n          state.md_inside = true;\n        }\n      }\n      stream.backUp(1);\n      state.htmlState = CodeMirror.startState(htmlMode);\n      return switchBlock(stream, state, htmlBlock);\n    }\n\n    if (ch === '<' && stream.match(/^\\/\\w*?>/)) {\n      state.md_inside = false;\n      return \"tag\";\n    }\n\n    var ignoreUnderscore = false;\n    if (!modeCfg.underscoresBreakWords) {\n      if (ch === '_' && stream.peek() !== '_' && stream.match(/(\\w)/, false)) {\n        var prevPos = stream.pos - 2;\n        if (prevPos >= 0) {\n          var prevCh = stream.string.charAt(prevPos);\n          if (prevCh !== '_' && prevCh.match(/(\\w)/, false)) {\n            ignoreUnderscore = true;\n          }\n        }\n      }\n    }\n    if (ch === '*' || (ch === '_' && !ignoreUnderscore)) {\n      if (sol && stream.peek() === ' ') {\n        // Do nothing, surrounded by newline and space\n      } else if (state.strong === ch && stream.eat(ch)) { // Remove STRONG\n        if (modeCfg.highlightFormatting) state.formatting = \"strong\";\n        var t = getType(state);\n        state.strong = false;\n        return t;\n      } else if (!state.strong && stream.eat(ch)) { // Add STRONG\n        state.strong = ch;\n        if (modeCfg.highlightFormatting) state.formatting = \"strong\";\n        return getType(state);\n      } else if (state.em === ch) { // Remove EM\n        if (modeCfg.highlightFormatting) state.formatting = \"em\";\n        var t = getType(state);\n        state.em = false;\n        return t;\n      } else if (!state.em) { // Add EM\n        state.em = ch;\n        if (modeCfg.highlightFormatting) state.formatting = \"em\";\n        return getType(state);\n      }\n    } else if (ch === ' ') {\n      if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces\n        if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n          return getType(state);\n        } else { // Not surrounded by spaces, back up pointer\n          stream.backUp(1);\n        }\n      }\n    }\n\n    if (modeCfg.strikethrough) {\n      if (ch === '~' && stream.eatWhile(ch)) {\n        if (state.strikethrough) {// Remove strikethrough\n          if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n          var t = getType(state);\n          state.strikethrough = false;\n          return t;\n        } else if (stream.match(/^[^\\s]/, false)) {// Add strikethrough\n          state.strikethrough = true;\n          if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n          return getType(state);\n        }\n      } else if (ch === ' ') {\n        if (stream.match(/^~~/, true)) { // Probably surrounded by space\n          if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n            return getType(state);\n          } else { // Not surrounded by spaces, back up pointer\n            stream.backUp(2);\n          }\n        }\n      }\n    }\n\n    if (ch === ' ') {\n      if (stream.match(/ +$/, false)) {\n        state.trailingSpace++;\n      } else if (state.trailingSpace) {\n        state.trailingSpaceNewLine = true;\n      }\n    }\n\n    return getType(state);\n  }\n\n  function linkInline(stream, state) {\n    var ch = stream.next();\n\n    if (ch === \">\") {\n      state.f = state.inline = inlineNormal;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var type = getType(state);\n      if (type){\n        type += \" \";\n      } else {\n        type = \"\";\n      }\n      return type + linkinline;\n    }\n\n    stream.match(/^[^>]+/, true);\n\n    return linkinline;\n  }\n\n  function linkHref(stream, state) {\n    // Check if space, and return NULL if so (to avoid marking the space)\n    if(stream.eatSpace()){\n      return null;\n    }\n    var ch = stream.next();\n    if (ch === '(' || ch === '[') {\n      state.f = state.inline = getLinkHrefInside(ch === \"(\" ? \")\" : \"]\");\n      if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n      state.linkHref = true;\n      return getType(state);\n    }\n    return 'error';\n  }\n\n  function getLinkHrefInside(endChar) {\n    return function(stream, state) {\n      var ch = stream.next();\n\n      if (ch === endChar) {\n        state.f = state.inline = inlineNormal;\n        if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n        var returnState = getType(state);\n        state.linkHref = false;\n        return returnState;\n      }\n\n      if (stream.match(inlineRE(endChar), true)) {\n        stream.backUp(1);\n      }\n\n      state.linkHref = true;\n      return getType(state);\n    };\n  }\n\n  function footnoteLink(stream, state) {\n    if (stream.match(/^[^\\]]*\\]:/, false)) {\n      state.f = footnoteLinkInside;\n      stream.next(); // Consume [\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      state.linkText = true;\n      return getType(state);\n    }\n    return switchInline(stream, state, inlineNormal);\n  }\n\n  function footnoteLinkInside(stream, state) {\n    if (stream.match(/^\\]:/, true)) {\n      state.f = state.inline = footnoteUrl;\n      if (modeCfg.highlightFormatting) state.formatting = \"link\";\n      var returnType = getType(state);\n      state.linkText = false;\n      return returnType;\n    }\n\n    stream.match(/^[^\\]]+/, true);\n\n    return linktext;\n  }\n\n  function footnoteUrl(stream, state) {\n    // Check if space, and return NULL if so (to avoid marking the space)\n    if(stream.eatSpace()){\n      return null;\n    }\n    // Match URL\n    stream.match(/^[^\\s]+/, true);\n    // Check for link title\n    if (stream.peek() === undefined) { // End of line, set flag to check next line\n      state.linkTitle = true;\n    } else { // More content on line, check if link title\n      stream.match(/^(?:\\s+(?:\"(?:[^\"\\\\]|\\\\\\\\|\\\\.)+\"|'(?:[^'\\\\]|\\\\\\\\|\\\\.)+'|\\((?:[^)\\\\]|\\\\\\\\|\\\\.)+\\)))?/, true);\n    }\n    state.f = state.inline = inlineNormal;\n    return linkhref;\n  }\n\n  var savedInlineRE = [];\n  function inlineRE(endChar) {\n    if (!savedInlineRE[endChar]) {\n      // Escape endChar for RegExp (taken from http://stackoverflow.com/a/494122/526741)\n      endChar = (endChar+'').replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n      // Match any non-endChar, escaped character, as well as the closing\n      // endChar.\n      savedInlineRE[endChar] = new RegExp('^(?:[^\\\\\\\\]|\\\\\\\\.)*?(' + endChar + ')');\n    }\n    return savedInlineRE[endChar];\n  }\n\n  var mode = {\n    startState: function() {\n      return {\n        f: blockNormal,\n\n        prevLineHasContent: false,\n        thisLineHasContent: false,\n\n        block: blockNormal,\n        htmlState: null,\n        indentation: 0,\n\n        inline: inlineNormal,\n        text: handleText,\n\n        formatting: false,\n        linkText: false,\n        linkHref: false,\n        linkTitle: false,\n        em: false,\n        strong: false,\n        header: 0,\n        taskList: false,\n        list: false,\n        listDepth: 0,\n        quote: 0,\n        trailingSpace: 0,\n        trailingSpaceNewLine: false,\n        strikethrough: false\n      };\n    },\n\n    copyState: function(s) {\n      return {\n        f: s.f,\n\n        prevLineHasContent: s.prevLineHasContent,\n        thisLineHasContent: s.thisLineHasContent,\n\n        block: s.block,\n        htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState),\n        indentation: s.indentation,\n\n        localMode: s.localMode,\n        localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null,\n\n        inline: s.inline,\n        text: s.text,\n        formatting: false,\n        linkTitle: s.linkTitle,\n        em: s.em,\n        strong: s.strong,\n        strikethrough: s.strikethrough,\n        header: s.header,\n        taskList: s.taskList,\n        list: s.list,\n        listDepth: s.listDepth,\n        quote: s.quote,\n        trailingSpace: s.trailingSpace,\n        trailingSpaceNewLine: s.trailingSpaceNewLine,\n        md_inside: s.md_inside\n      };\n    },\n\n    token: function(stream, state) {\n\n      // Reset state.formatting\n      state.formatting = false;\n\n      if (stream.sol()) {\n        var forceBlankLine = !!state.header;\n\n        // Reset state.header\n        state.header = 0;\n\n        if (stream.match(/^\\s*$/, true) || forceBlankLine) {\n          state.prevLineHasContent = false;\n          blankLine(state);\n          return forceBlankLine ? this.token(stream, state) : null;\n        } else {\n          state.prevLineHasContent = state.thisLineHasContent;\n          state.thisLineHasContent = true;\n        }\n\n        // Reset state.taskList\n        state.taskList = false;\n\n        // Reset state.code\n        state.code = false;\n\n        // Reset state.trailingSpace\n        state.trailingSpace = 0;\n        state.trailingSpaceNewLine = false;\n\n        state.f = state.block;\n        var indentation = stream.match(/^\\s*/, true)[0].replace(/\\t/g, '    ').length;\n        var difference = Math.floor((indentation - state.indentation) / 4) * 4;\n        if (difference > 4) difference = 4;\n        var adjustedIndentation = state.indentation + difference;\n        state.indentationDiff = adjustedIndentation - state.indentation;\n        state.indentation = adjustedIndentation;\n        if (indentation > 0) return null;\n      }\n      return state.f(stream, state);\n    },\n\n    innerMode: function(state) {\n      if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode};\n      if (state.localState) return {state: state.localState, mode: state.localMode};\n      return {state: state, mode: mode};\n    },\n\n    blankLine: blankLine,\n\n    getType: getType,\n\n    fold: \"markdown\"\n  };\n  return mode;\n}, \"xml\");\n\nCodeMirror.defineMIME(\"text/x-markdown\", \"markdown\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/markdown/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  var mode = CodeMirror.getMode({tabSize: 4}, \"markdown\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }\n  var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: \"markdown\", highlightFormatting: true});\n  function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); }\n\n  FT(\"formatting_emAsterisk\",\n     \"[em&formatting&formatting-em *][em foo][em&formatting&formatting-em *]\");\n\n  FT(\"formatting_emUnderscore\",\n     \"[em&formatting&formatting-em _][em foo][em&formatting&formatting-em _]\");\n\n  FT(\"formatting_strongAsterisk\",\n     \"[strong&formatting&formatting-strong **][strong foo][strong&formatting&formatting-strong **]\");\n\n  FT(\"formatting_strongUnderscore\",\n     \"[strong&formatting&formatting-strong __][strong foo][strong&formatting&formatting-strong __]\");\n\n  FT(\"formatting_codeBackticks\",\n     \"[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]\");\n\n  FT(\"formatting_doubleBackticks\",\n     \"[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]\");\n\n  FT(\"formatting_atxHeader\",\n     \"[header&header-1&formatting&formatting-header&formatting-header-1 #][header&header-1  foo # bar ][header&header-1&formatting&formatting-header&formatting-header-1 #]\");\n\n  FT(\"formatting_setextHeader\",\n     \"foo\",\n     \"[header&header-1&formatting&formatting-header&formatting-header-1 =]\");\n\n  FT(\"formatting_blockquote\",\n     \"[quote&quote-1&formatting&formatting-quote&formatting-quote-1 > ][quote&quote-1 foo]\");\n\n  FT(\"formatting_list\",\n     \"[variable-2&formatting&formatting-list&formatting-list-ul - ][variable-2 foo]\");\n  FT(\"formatting_list\",\n     \"[variable-2&formatting&formatting-list&formatting-list-ol 1. ][variable-2 foo]\");\n\n  FT(\"formatting_link\",\n     \"[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string (][string http://example.com/][string&formatting&formatting-link-string )]\");\n\n  FT(\"formatting_linkReference\",\n     \"[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string [][string bar][string&formatting&formatting-link-string ]]]\",\n     \"[link&formatting&formatting-link [][link bar][link&formatting&formatting-link ]]:] [string http://example.com/]\");\n\n  FT(\"formatting_linkWeb\",\n     \"[link&formatting&formatting-link <][link http://example.com/][link&formatting&formatting-link >]\");\n\n  FT(\"formatting_linkEmail\",\n     \"[link&formatting&formatting-link <][link user@example.com][link&formatting&formatting-link >]\");\n\n  FT(\"formatting_escape\",\n     \"[formatting-escape \\\\*]\");\n\n  MT(\"plainText\",\n     \"foo\");\n\n  // Don't style single trailing space\n  MT(\"trailingSpace1\",\n     \"foo \");\n\n  // Two or more trailing spaces should be styled with line break character\n  MT(\"trailingSpace2\",\n     \"foo[trailing-space-a  ][trailing-space-new-line  ]\");\n\n  MT(\"trailingSpace3\",\n     \"foo[trailing-space-a  ][trailing-space-b  ][trailing-space-new-line  ]\");\n\n  MT(\"trailingSpace4\",\n     \"foo[trailing-space-a  ][trailing-space-b  ][trailing-space-a  ][trailing-space-new-line  ]\");\n\n  // Code blocks using 4 spaces (regardless of CodeMirror.tabSize value)\n  MT(\"codeBlocksUsing4Spaces\",\n     \"    [comment foo]\");\n\n  // Code blocks using 4 spaces with internal indentation\n  MT(\"codeBlocksUsing4SpacesIndentation\",\n     \"    [comment bar]\",\n     \"        [comment hello]\",\n     \"            [comment world]\",\n     \"    [comment foo]\",\n     \"bar\");\n\n  // Code blocks using 4 spaces with internal indentation\n  MT(\"codeBlocksUsing4SpacesIndentation\",\n     \" foo\",\n     \"    [comment bar]\",\n     \"        [comment hello]\",\n     \"    [comment world]\");\n\n  // Code blocks should end even after extra indented lines\n  MT(\"codeBlocksWithTrailingIndentedLine\",\n     \"    [comment foo]\",\n     \"        [comment bar]\",\n     \"    [comment baz]\",\n     \"    \",\n     \"hello\");\n\n  // Code blocks using 1 tab (regardless of CodeMirror.indentWithTabs value)\n  MT(\"codeBlocksUsing1Tab\",\n     \"\\t[comment foo]\");\n\n  // Inline code using backticks\n  MT(\"inlineCodeUsingBackticks\",\n     \"foo [comment `bar`]\");\n\n  // Block code using single backtick (shouldn't work)\n  MT(\"blockCodeSingleBacktick\",\n     \"[comment `]\",\n     \"foo\",\n     \"[comment `]\");\n\n  // Unclosed backticks\n  // Instead of simply marking as CODE, it would be nice to have an\n  // incomplete flag for CODE, that is styled slightly different.\n  MT(\"unclosedBackticks\",\n     \"foo [comment `bar]\");\n\n  // Per documentation: \"To include a literal backtick character within a\n  // code span, you can use multiple backticks as the opening and closing\n  // delimiters\"\n  MT(\"doubleBackticks\",\n     \"[comment ``foo ` bar``]\");\n\n  // Tests based on Dingus\n  // http://daringfireball.net/projects/markdown/dingus\n  //\n  // Multiple backticks within an inline code block\n  MT(\"consecutiveBackticks\",\n     \"[comment `foo```bar`]\");\n\n  // Multiple backticks within an inline code block with a second code block\n  MT(\"consecutiveBackticks\",\n     \"[comment `foo```bar`] hello [comment `world`]\");\n\n  // Unclosed with several different groups of backticks\n  MT(\"unclosedBackticks\",\n     \"[comment ``foo ``` bar` hello]\");\n\n  // Closed with several different groups of backticks\n  MT(\"closedBackticks\",\n     \"[comment ``foo ``` bar` hello``] world\");\n\n  // atx headers\n  // http://daringfireball.net/projects/markdown/syntax#header\n\n  MT(\"atxH1\",\n     \"[header&header-1 # foo]\");\n\n  MT(\"atxH2\",\n     \"[header&header-2 ## foo]\");\n\n  MT(\"atxH3\",\n     \"[header&header-3 ### foo]\");\n\n  MT(\"atxH4\",\n     \"[header&header-4 #### foo]\");\n\n  MT(\"atxH5\",\n     \"[header&header-5 ##### foo]\");\n\n  MT(\"atxH6\",\n     \"[header&header-6 ###### foo]\");\n\n  // H6 - 7x '#' should still be H6, per Dingus\n  // http://daringfireball.net/projects/markdown/dingus\n  MT(\"atxH6NotH7\",\n     \"[header&header-6 ####### foo]\");\n\n  // Inline styles should be parsed inside headers\n  MT(\"atxH1inline\",\n     \"[header&header-1 # foo ][header&header-1&em *bar*]\");\n\n  // Setext headers - H1, H2\n  // Per documentation, \"Any number of underlining =’s or -’s will work.\"\n  // http://daringfireball.net/projects/markdown/syntax#header\n  // Ideally, the text would be marked as `header` as well, but this is\n  // not really feasible at the moment. So, instead, we're testing against\n  // what works today, to avoid any regressions.\n  //\n  // Check if single underlining = works\n  MT(\"setextH1\",\n     \"foo\",\n     \"[header&header-1 =]\");\n\n  // Check if 3+ ='s work\n  MT(\"setextH1\",\n     \"foo\",\n     \"[header&header-1 ===]\");\n\n  // Check if single underlining - works\n  MT(\"setextH2\",\n     \"foo\",\n     \"[header&header-2 -]\");\n\n  // Check if 3+ -'s work\n  MT(\"setextH2\",\n     \"foo\",\n     \"[header&header-2 ---]\");\n\n  // Single-line blockquote with trailing space\n  MT(\"blockquoteSpace\",\n     \"[quote&quote-1 > foo]\");\n\n  // Single-line blockquote\n  MT(\"blockquoteNoSpace\",\n     \"[quote&quote-1 >foo]\");\n\n  // No blank line before blockquote\n  MT(\"blockquoteNoBlankLine\",\n     \"foo\",\n     \"[quote&quote-1 > bar]\");\n\n  // Nested blockquote\n  MT(\"blockquoteSpace\",\n     \"[quote&quote-1 > foo]\",\n     \"[quote&quote-1 >][quote&quote-2 > foo]\",\n     \"[quote&quote-1 >][quote&quote-2 >][quote&quote-3 > foo]\");\n\n  // Single-line blockquote followed by normal paragraph\n  MT(\"blockquoteThenParagraph\",\n     \"[quote&quote-1 >foo]\",\n     \"\",\n     \"bar\");\n\n  // Multi-line blockquote (lazy mode)\n  MT(\"multiBlockquoteLazy\",\n     \"[quote&quote-1 >foo]\",\n     \"[quote&quote-1 bar]\");\n\n  // Multi-line blockquote followed by normal paragraph (lazy mode)\n  MT(\"multiBlockquoteLazyThenParagraph\",\n     \"[quote&quote-1 >foo]\",\n     \"[quote&quote-1 bar]\",\n     \"\",\n     \"hello\");\n\n  // Multi-line blockquote (non-lazy mode)\n  MT(\"multiBlockquote\",\n     \"[quote&quote-1 >foo]\",\n     \"[quote&quote-1 >bar]\");\n\n  // Multi-line blockquote followed by normal paragraph (non-lazy mode)\n  MT(\"multiBlockquoteThenParagraph\",\n     \"[quote&quote-1 >foo]\",\n     \"[quote&quote-1 >bar]\",\n     \"\",\n     \"hello\");\n\n  // Check list types\n\n  MT(\"listAsterisk\",\n     \"foo\",\n     \"bar\",\n     \"\",\n     \"[variable-2 * foo]\",\n     \"[variable-2 * bar]\");\n\n  MT(\"listPlus\",\n     \"foo\",\n     \"bar\",\n     \"\",\n     \"[variable-2 + foo]\",\n     \"[variable-2 + bar]\");\n\n  MT(\"listDash\",\n     \"foo\",\n     \"bar\",\n     \"\",\n     \"[variable-2 - foo]\",\n     \"[variable-2 - bar]\");\n\n  MT(\"listNumber\",\n     \"foo\",\n     \"bar\",\n     \"\",\n     \"[variable-2 1. foo]\",\n     \"[variable-2 2. bar]\");\n\n  // Lists require a preceding blank line (per Dingus)\n  MT(\"listBogus\",\n     \"foo\",\n     \"1. bar\",\n     \"2. hello\");\n\n  // List after header\n  MT(\"listAfterHeader\",\n     \"[header&header-1 # foo]\",\n     \"[variable-2 - bar]\");\n\n  // Formatting in lists (*)\n  MT(\"listAsteriskFormatting\",\n     \"[variable-2 * ][variable-2&em *foo*][variable-2  bar]\",\n     \"[variable-2 * ][variable-2&strong **foo**][variable-2  bar]\",\n     \"[variable-2 * ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2  bar]\",\n     \"[variable-2 * ][variable-2&comment `foo`][variable-2  bar]\");\n\n  // Formatting in lists (+)\n  MT(\"listPlusFormatting\",\n     \"[variable-2 + ][variable-2&em *foo*][variable-2  bar]\",\n     \"[variable-2 + ][variable-2&strong **foo**][variable-2  bar]\",\n     \"[variable-2 + ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2  bar]\",\n     \"[variable-2 + ][variable-2&comment `foo`][variable-2  bar]\");\n\n  // Formatting in lists (-)\n  MT(\"listDashFormatting\",\n     \"[variable-2 - ][variable-2&em *foo*][variable-2  bar]\",\n     \"[variable-2 - ][variable-2&strong **foo**][variable-2  bar]\",\n     \"[variable-2 - ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2  bar]\",\n     \"[variable-2 - ][variable-2&comment `foo`][variable-2  bar]\");\n\n  // Formatting in lists (1.)\n  MT(\"listNumberFormatting\",\n     \"[variable-2 1. ][variable-2&em *foo*][variable-2  bar]\",\n     \"[variable-2 2. ][variable-2&strong **foo**][variable-2  bar]\",\n     \"[variable-2 3. ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2  bar]\",\n     \"[variable-2 4. ][variable-2&comment `foo`][variable-2  bar]\");\n\n  // Paragraph lists\n  MT(\"listParagraph\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"[variable-2 * bar]\");\n\n  // Multi-paragraph lists\n  //\n  // 4 spaces\n  MT(\"listMultiParagraph\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"[variable-2 * bar]\",\n     \"\",\n     \"    [variable-2 hello]\");\n\n  // 4 spaces, extra blank lines (should still be list, per Dingus)\n  MT(\"listMultiParagraphExtra\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"[variable-2 * bar]\",\n     \"\",\n     \"\",\n     \"    [variable-2 hello]\");\n\n  // 4 spaces, plus 1 space (should still be list, per Dingus)\n  MT(\"listMultiParagraphExtraSpace\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"[variable-2 * bar]\",\n     \"\",\n     \"     [variable-2 hello]\",\n     \"\",\n     \"    [variable-2 world]\");\n\n  // 1 tab\n  MT(\"listTab\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"[variable-2 * bar]\",\n     \"\",\n     \"\\t[variable-2 hello]\");\n\n  // No indent\n  MT(\"listNoIndent\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"[variable-2 * bar]\",\n     \"\",\n     \"hello\");\n\n  // Blockquote\n  MT(\"blockquote\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"[variable-2 * bar]\",\n     \"\",\n     \"    [variable-2&quote&quote-1 > hello]\");\n\n  // Code block\n  MT(\"blockquoteCode\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"[variable-2 * bar]\",\n     \"\",\n     \"        [comment > hello]\",\n     \"\",\n     \"    [variable-2 world]\");\n\n  // Code block followed by text\n  MT(\"blockquoteCodeText\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"    [variable-2 bar]\",\n     \"\",\n     \"        [comment hello]\",\n     \"\",\n     \"    [variable-2 world]\");\n\n  // Nested list\n\n  MT(\"listAsteriskNested\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"    [variable-3 * bar]\");\n\n  MT(\"listPlusNested\",\n     \"[variable-2 + foo]\",\n     \"\",\n     \"    [variable-3 + bar]\");\n\n  MT(\"listDashNested\",\n     \"[variable-2 - foo]\",\n     \"\",\n     \"    [variable-3 - bar]\");\n\n  MT(\"listNumberNested\",\n     \"[variable-2 1. foo]\",\n     \"\",\n     \"    [variable-3 2. bar]\");\n\n  MT(\"listMixed\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"    [variable-3 + bar]\",\n     \"\",\n     \"        [keyword - hello]\",\n     \"\",\n     \"            [variable-2 1. world]\");\n\n  MT(\"listBlockquote\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"    [variable-3 + bar]\",\n     \"\",\n     \"        [quote&quote-1&variable-3 > hello]\");\n\n  MT(\"listCode\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"    [variable-3 + bar]\",\n     \"\",\n     \"            [comment hello]\");\n\n  // Code with internal indentation\n  MT(\"listCodeIndentation\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"        [comment bar]\",\n     \"            [comment hello]\",\n     \"                [comment world]\",\n     \"        [comment foo]\",\n     \"    [variable-2 bar]\");\n\n  // List nesting edge cases\n  MT(\"listNested\",\n    \"[variable-2 * foo]\",\n    \"\",\n    \"    [variable-3 * bar]\",\n    \"\",\n    \"       [variable-2 hello]\"\n  );\n  MT(\"listNested\",\n    \"[variable-2 * foo]\",\n    \"\",\n    \"    [variable-3 * bar]\",\n    \"\",\n    \"      [variable-3 * foo]\"\n  );\n\n  // Code followed by text\n  MT(\"listCodeText\",\n     \"[variable-2 * foo]\",\n     \"\",\n     \"        [comment bar]\",\n     \"\",\n     \"hello\");\n\n  // Following tests directly from official Markdown documentation\n  // http://daringfireball.net/projects/markdown/syntax#hr\n\n  MT(\"hrSpace\",\n     \"[hr * * *]\");\n\n  MT(\"hr\",\n     \"[hr ***]\");\n\n  MT(\"hrLong\",\n     \"[hr *****]\");\n\n  MT(\"hrSpaceDash\",\n     \"[hr - - -]\");\n\n  MT(\"hrDashLong\",\n     \"[hr ---------------------------------------]\");\n\n  // Inline link with title\n  MT(\"linkTitle\",\n     \"[link [[foo]]][string (http://example.com/ \\\"bar\\\")] hello\");\n\n  // Inline link without title\n  MT(\"linkNoTitle\",\n     \"[link [[foo]]][string (http://example.com/)] bar\");\n\n  // Inline link with image\n  MT(\"linkImage\",\n     \"[link [[][tag ![[foo]]][string (http://example.com/)][link ]]][string (http://example.com/)] bar\");\n\n  // Inline link with Em\n  MT(\"linkEm\",\n     \"[link [[][link&em *foo*][link ]]][string (http://example.com/)] bar\");\n\n  // Inline link with Strong\n  MT(\"linkStrong\",\n     \"[link [[][link&strong **foo**][link ]]][string (http://example.com/)] bar\");\n\n  // Inline link with EmStrong\n  MT(\"linkEmStrong\",\n     \"[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string (http://example.com/)] bar\");\n\n  // Image with title\n  MT(\"imageTitle\",\n     \"[tag ![[foo]]][string (http://example.com/ \\\"bar\\\")] hello\");\n\n  // Image without title\n  MT(\"imageNoTitle\",\n     \"[tag ![[foo]]][string (http://example.com/)] bar\");\n\n  // Image with asterisks\n  MT(\"imageAsterisks\",\n     \"[tag ![[*foo*]]][string (http://example.com/)] bar\");\n\n  // Not a link. Should be normal text due to square brackets being used\n  // regularly in text, especially in quoted material, and no space is allowed\n  // between square brackets and parentheses (per Dingus).\n  MT(\"notALink\",\n     \"[[foo]] (bar)\");\n\n  // Reference-style links\n  MT(\"linkReference\",\n     \"[link [[foo]]][string [[bar]]] hello\");\n\n  // Reference-style links with Em\n  MT(\"linkReferenceEm\",\n     \"[link [[][link&em *foo*][link ]]][string [[bar]]] hello\");\n\n  // Reference-style links with Strong\n  MT(\"linkReferenceStrong\",\n     \"[link [[][link&strong **foo**][link ]]][string [[bar]]] hello\");\n\n  // Reference-style links with EmStrong\n  MT(\"linkReferenceEmStrong\",\n     \"[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string [[bar]]] hello\");\n\n  // Reference-style links with optional space separator (per docuentation)\n  // \"You can optionally use a space to separate the sets of brackets\"\n  MT(\"linkReferenceSpace\",\n     \"[link [[foo]]] [string [[bar]]] hello\");\n\n  // Should only allow a single space (\"...use *a* space...\")\n  MT(\"linkReferenceDoubleSpace\",\n     \"[[foo]]  [[bar]] hello\");\n\n  // Reference-style links with implicit link name\n  MT(\"linkImplicit\",\n     \"[link [[foo]]][string [[]]] hello\");\n\n  // @todo It would be nice if, at some point, the document was actually\n  // checked to see if the referenced link exists\n\n  // Link label, for reference-style links (taken from documentation)\n\n  MT(\"labelNoTitle\",\n     \"[link [[foo]]:] [string http://example.com/]\");\n\n  MT(\"labelIndented\",\n     \"   [link [[foo]]:] [string http://example.com/]\");\n\n  MT(\"labelSpaceTitle\",\n     \"[link [[foo bar]]:] [string http://example.com/ \\\"hello\\\"]\");\n\n  MT(\"labelDoubleTitle\",\n     \"[link [[foo bar]]:] [string http://example.com/ \\\"hello\\\"] \\\"world\\\"\");\n\n  MT(\"labelTitleDoubleQuotes\",\n     \"[link [[foo]]:] [string http://example.com/  \\\"bar\\\"]\");\n\n  MT(\"labelTitleSingleQuotes\",\n     \"[link [[foo]]:] [string http://example.com/  'bar']\");\n\n  MT(\"labelTitleParenthese\",\n     \"[link [[foo]]:] [string http://example.com/  (bar)]\");\n\n  MT(\"labelTitleInvalid\",\n     \"[link [[foo]]:] [string http://example.com/] bar\");\n\n  MT(\"labelLinkAngleBrackets\",\n     \"[link [[foo]]:] [string <http://example.com/>  \\\"bar\\\"]\");\n\n  MT(\"labelTitleNextDoubleQuotes\",\n     \"[link [[foo]]:] [string http://example.com/]\",\n     \"[string \\\"bar\\\"] hello\");\n\n  MT(\"labelTitleNextSingleQuotes\",\n     \"[link [[foo]]:] [string http://example.com/]\",\n     \"[string 'bar'] hello\");\n\n  MT(\"labelTitleNextParenthese\",\n     \"[link [[foo]]:] [string http://example.com/]\",\n     \"[string (bar)] hello\");\n\n  MT(\"labelTitleNextMixed\",\n     \"[link [[foo]]:] [string http://example.com/]\",\n     \"(bar\\\" hello\");\n\n  MT(\"linkWeb\",\n     \"[link <http://example.com/>] foo\");\n\n  MT(\"linkWebDouble\",\n     \"[link <http://example.com/>] foo [link <http://example.com/>]\");\n\n  MT(\"linkEmail\",\n     \"[link <user@example.com>] foo\");\n\n  MT(\"linkEmailDouble\",\n     \"[link <user@example.com>] foo [link <user@example.com>]\");\n\n  MT(\"emAsterisk\",\n     \"[em *foo*] bar\");\n\n  MT(\"emUnderscore\",\n     \"[em _foo_] bar\");\n\n  MT(\"emInWordAsterisk\",\n     \"foo[em *bar*]hello\");\n\n  MT(\"emInWordUnderscore\",\n     \"foo[em _bar_]hello\");\n\n  // Per documentation: \"...surround an * or _ with spaces, it’ll be\n  // treated as a literal asterisk or underscore.\"\n\n  MT(\"emEscapedBySpaceIn\",\n     \"foo [em _bar _ hello_] world\");\n\n  MT(\"emEscapedBySpaceOut\",\n     \"foo _ bar[em _hello_]world\");\n\n  MT(\"emEscapedByNewline\",\n     \"foo\",\n     \"_ bar[em _hello_]world\");\n\n  // Unclosed emphasis characters\n  // Instead of simply marking as EM / STRONG, it would be nice to have an\n  // incomplete flag for EM and STRONG, that is styled slightly different.\n  MT(\"emIncompleteAsterisk\",\n     \"foo [em *bar]\");\n\n  MT(\"emIncompleteUnderscore\",\n     \"foo [em _bar]\");\n\n  MT(\"strongAsterisk\",\n     \"[strong **foo**] bar\");\n\n  MT(\"strongUnderscore\",\n     \"[strong __foo__] bar\");\n\n  MT(\"emStrongAsterisk\",\n     \"[em *foo][em&strong **bar*][strong hello**] world\");\n\n  MT(\"emStrongUnderscore\",\n     \"[em _foo][em&strong __bar_][strong hello__] world\");\n\n  // \"...same character must be used to open and close an emphasis span.\"\"\n  MT(\"emStrongMixed\",\n     \"[em _foo][em&strong **bar*hello__ world]\");\n\n  MT(\"emStrongMixed\",\n     \"[em *foo][em&strong __bar_hello** world]\");\n\n  // These characters should be escaped:\n  // \\   backslash\n  // `   backtick\n  // *   asterisk\n  // _   underscore\n  // {}  curly braces\n  // []  square brackets\n  // ()  parentheses\n  // #   hash mark\n  // +   plus sign\n  // -   minus sign (hyphen)\n  // .   dot\n  // !   exclamation mark\n\n  MT(\"escapeBacktick\",\n     \"foo \\\\`bar\\\\`\");\n\n  MT(\"doubleEscapeBacktick\",\n     \"foo \\\\\\\\[comment `bar\\\\\\\\`]\");\n\n  MT(\"escapeAsterisk\",\n     \"foo \\\\*bar\\\\*\");\n\n  MT(\"doubleEscapeAsterisk\",\n     \"foo \\\\\\\\[em *bar\\\\\\\\*]\");\n\n  MT(\"escapeUnderscore\",\n     \"foo \\\\_bar\\\\_\");\n\n  MT(\"doubleEscapeUnderscore\",\n     \"foo \\\\\\\\[em _bar\\\\\\\\_]\");\n\n  MT(\"escapeHash\",\n     \"\\\\# foo\");\n\n  MT(\"doubleEscapeHash\",\n     \"\\\\\\\\# foo\");\n\n  MT(\"escapeNewline\",\n     \"\\\\\",\n     \"[em *foo*]\");\n\n\n  // Tests to make sure GFM-specific things aren't getting through\n\n  MT(\"taskList\",\n     \"[variable-2 * [ ]] bar]\");\n\n  MT(\"fencedCodeBlocks\",\n     \"[comment ```]\",\n     \"foo\",\n     \"[comment ```]\");\n\n  // Tests that require XML mode\n\n  MT(\"xmlMode\",\n     \"[tag&bracket <][tag div][tag&bracket >]\",\n     \"*foo*\",\n     \"[tag&bracket <][tag http://github.com][tag&bracket />]\",\n     \"[tag&bracket </][tag div][tag&bracket >]\",\n     \"[link <http://github.com/>]\");\n\n  MT(\"xmlModeWithMarkdownInside\",\n     \"[tag&bracket <][tag div] [attribute markdown]=[string 1][tag&bracket >]\",\n     \"[em *foo*]\",\n     \"[link <http://github.com/>]\",\n     \"[tag </div>]\",\n     \"[link <http://github.com/>]\",\n     \"[tag&bracket <][tag div][tag&bracket >]\",\n     \"[tag&bracket </][tag div][tag&bracket >]\");\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/meta.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.modeInfo = [\n    {name: \"APL\", mime: \"text/apl\", mode: \"apl\", ext: [\"dyalog\", \"apl\"]},\n    {name: \"Asterisk\", mime: \"text/x-asterisk\", mode: \"asterisk\", file: /^extensions\\.conf$/i},\n    {name: \"C\", mime: \"text/x-csrc\", mode: \"clike\", ext: [\"c\", \"h\"]},\n    {name: \"C++\", mime: \"text/x-c++src\", mode: \"clike\", ext: [\"cpp\", \"c++\", \"cc\", \"cxx\", \"hpp\", \"h++\", \"hh\", \"hxx\"], alias: [\"cpp\"]},\n    {name: \"Cobol\", mime: \"text/x-cobol\", mode: \"cobol\", ext: [\"cob\", \"cpy\"]},\n    {name: \"C#\", mime: \"text/x-csharp\", mode: \"clike\", ext: [\"cs\"], alias: [\"csharp\"]},\n    {name: \"Clojure\", mime: \"text/x-clojure\", mode: \"clojure\", ext: [\"clj\"]},\n    {name: \"CoffeeScript\", mime: \"text/x-coffeescript\", mode: \"coffeescript\", ext: [\"coffee\"], alias: [\"coffee\", \"coffee-script\"]},\n    {name: \"Common Lisp\", mime: \"text/x-common-lisp\", mode: \"commonlisp\", ext: [\"cl\", \"lisp\", \"el\"], alias: [\"lisp\"]},\n    {name: \"Cypher\", mime: \"application/x-cypher-query\", mode: \"cypher\", ext: [\"cyp\", \"cypher\"]},\n    {name: \"Cython\", mime: \"text/x-cython\", mode: \"python\", ext: [\"pyx\", \"pxd\", \"pxi\"]},\n    {name: \"CSS\", mime: \"text/css\", mode: \"css\", ext: [\"css\"]},\n    {name: \"CQL\", mime: \"text/x-cassandra\", mode: \"sql\", ext: [\"cql\"]},\n    {name: \"D\", mime: \"text/x-d\", mode: \"d\", ext: [\"d\"]},\n    {name: \"Dart\", mimes: [\"application/dart\", \"text/x-dart\"], mode: \"dart\", ext: [\"dart\"]},\n    {name: \"diff\", mime: \"text/x-diff\", mode: \"diff\", ext: [\"diff\", \"patch\"]},\n    {name: \"Django\", mime: \"text/x-django\", mode: \"django\"},\n    {name: \"Dockerfile\", mime: \"text/x-dockerfile\", mode: \"dockerfile\", file: /^Dockerfile$/},\n    {name: \"DTD\", mime: \"application/xml-dtd\", mode: \"dtd\", ext: [\"dtd\"]},\n    {name: \"Dylan\", mime: \"text/x-dylan\", mode: \"dylan\", ext: [\"dylan\", \"dyl\", \"intr\"]},\n    {name: \"EBNF\", mime: \"text/x-ebnf\", mode: \"ebnf\"},\n    {name: \"ECL\", mime: \"text/x-ecl\", mode: \"ecl\", ext: [\"ecl\"]},\n    {name: \"Eiffel\", mime: \"text/x-eiffel\", mode: \"eiffel\", ext: [\"e\"]},\n    {name: \"Embedded Javascript\", mime: \"application/x-ejs\", mode: \"htmlembedded\", ext: [\"ejs\"]},\n    {name: \"Embedded Ruby\", mime: \"application/x-erb\", mode: \"htmlembedded\", ext: [\"erb\"]},\n    {name: \"Erlang\", mime: \"text/x-erlang\", mode: \"erlang\", ext: [\"erl\"]},\n    {name: \"Forth\", mime: \"text/x-forth\", mode: \"forth\", ext: [\"forth\", \"fth\", \"4th\"]},\n    {name: \"Fortran\", mime: \"text/x-fortran\", mode: \"fortran\", ext: [\"f\", \"for\", \"f77\", \"f90\"]},\n    {name: \"F#\", mime: \"text/x-fsharp\", mode: \"mllike\", ext: [\"fs\"], alias: [\"fsharp\"]},\n    {name: \"Gas\", mime: \"text/x-gas\", mode: \"gas\", ext: [\"s\"]},\n    {name: \"Gherkin\", mime: \"text/x-feature\", mode: \"gherkin\", ext: [\"feature\"]},\n    {name: \"GitHub Flavored Markdown\", mime: \"text/x-gfm\", mode: \"gfm\", file: /^(readme|contributing|history).md$/i},\n    {name: \"Go\", mime: \"text/x-go\", mode: \"go\", ext: [\"go\"]},\n    {name: \"Groovy\", mime: \"text/x-groovy\", mode: \"groovy\", ext: [\"groovy\"]},\n    {name: \"HAML\", mime: \"text/x-haml\", mode: \"haml\", ext: [\"haml\"]},\n    {name: \"Haskell\", mime: \"text/x-haskell\", mode: \"haskell\", ext: [\"hs\"]},\n    {name: \"Haxe\", mime: \"text/x-haxe\", mode: \"haxe\", ext: [\"hx\"]},\n    {name: \"HXML\", mime: \"text/x-hxml\", mode: \"haxe\", ext: [\"hxml\"]},\n    {name: \"ASP.NET\", mime: \"application/x-aspx\", mode: \"htmlembedded\", ext: [\"aspx\"], alias: [\"asp\", \"aspx\"]},\n    {name: \"HTML\", mime: \"text/html\", mode: \"htmlmixed\", ext: [\"html\", \"htm\"], alias: [\"xhtml\"]},\n    {name: \"HTTP\", mime: \"message/http\", mode: \"http\"},\n    {name: \"IDL\", mime: \"text/x-idl\", mode: \"idl\", ext: [\"pro\"]},\n    {name: \"Jade\", mime: \"text/x-jade\", mode: \"jade\", ext: [\"jade\"]},\n    {name: \"Java\", mime: \"text/x-java\", mode: \"clike\", ext: [\"java\"]},\n    {name: \"Java Server Pages\", mime: \"application/x-jsp\", mode: \"htmlembedded\", ext: [\"jsp\"], alias: [\"jsp\"]},\n    {name: \"JavaScript\", mimes: [\"text/javascript\", \"text/ecmascript\", \"application/javascript\", \"application/x-javascript\", \"application/ecmascript\"],\n     mode: \"javascript\", ext: [\"js\"], alias: [\"ecmascript\", \"js\", \"node\"]},\n    {name: \"JSON\", mimes: [\"application/json\", \"application/x-json\"], mode: \"javascript\", ext: [\"json\", \"map\"], alias: [\"json5\"]},\n    {name: \"JSON-LD\", mime: \"application/ld+json\", mode: \"javascript\", ext: [\"jsonld\"], alias: [\"jsonld\"]},\n    {name: \"Jinja2\", mime: \"null\", mode: \"jinja2\"},\n    {name: \"Julia\", mime: \"text/x-julia\", mode: \"julia\", ext: [\"jl\"]},\n    {name: \"Kotlin\", mime: \"text/x-kotlin\", mode: \"kotlin\", ext: [\"kt\"]},\n    {name: \"LESS\", mime: \"text/x-less\", mode: \"css\", ext: [\"less\"]},\n    {name: \"LiveScript\", mime: \"text/x-livescript\", mode: \"livescript\", ext: [\"ls\"], alias: [\"ls\"]},\n    {name: \"Lua\", mime: \"text/x-lua\", mode: \"lua\", ext: [\"lua\"]},\n    {name: \"Markdown\", mime: \"text/x-markdown\", mode: \"markdown\", ext: [\"markdown\", \"md\", \"mkd\"]},\n    {name: \"mIRC\", mime: \"text/mirc\", mode: \"mirc\"},\n    {name: \"MariaDB SQL\", mime: \"text/x-mariadb\", mode: \"sql\"},\n    {name: \"Modelica\", mime: \"text/x-modelica\", mode: \"modelica\", ext: [\"mo\"]},\n    {name: \"MS SQL\", mime: \"text/x-mssql\", mode: \"sql\"},\n    {name: \"MySQL\", mime: \"text/x-mysql\", mode: \"sql\"},\n    {name: \"Nginx\", mime: \"text/x-nginx-conf\", mode: \"nginx\", file: /nginx.*\\.conf$/i},\n    {name: \"NTriples\", mime: \"text/n-triples\", mode: \"ntriples\", ext: [\"nt\"]},\n    {name: \"Objective C\", mime: \"text/x-objectivec\", mode: \"clike\", ext: [\"m\", \"mm\"]},\n    {name: \"OCaml\", mime: \"text/x-ocaml\", mode: \"mllike\", ext: [\"ml\", \"mli\", \"mll\", \"mly\"]},\n    {name: \"Octave\", mime: \"text/x-octave\", mode: \"octave\", ext: [\"m\"]},\n    {name: \"Pascal\", mime: \"text/x-pascal\", mode: \"pascal\", ext: [\"p\", \"pas\"]},\n    {name: \"PEG.js\", mime: \"null\", mode: \"pegjs\", ext: [\"jsonld\"]},\n    {name: \"Perl\", mime: \"text/x-perl\", mode: \"perl\", ext: [\"pl\", \"pm\"]},\n    {name: \"PHP\", mime: \"application/x-httpd-php\", mode: \"php\", ext: [\"php\", \"php3\", \"php4\", \"php5\", \"phtml\"]},\n    {name: \"Pig\", mime: \"text/x-pig\", mode: \"pig\", ext: [\"pig\"]},\n    {name: \"Plain Text\", mime: \"text/plain\", mode: \"null\", ext: [\"txt\", \"text\", \"conf\", \"def\", \"list\", \"log\"]},\n    {name: \"PLSQL\", mime: \"text/x-plsql\", mode: \"sql\", ext: [\"pls\"]},\n    {name: \"Properties files\", mime: \"text/x-properties\", mode: \"properties\", ext: [\"properties\", \"ini\", \"in\"], alias: [\"ini\", \"properties\"]},\n    {name: \"Python\", mime: \"text/x-python\", mode: \"python\", ext: [\"py\", \"pyw\"]},\n    {name: \"Puppet\", mime: \"text/x-puppet\", mode: \"puppet\", ext: [\"pp\"]},\n    {name: \"Q\", mime: \"text/x-q\", mode: \"q\", ext: [\"q\"]},\n    {name: \"R\", mime: \"text/x-rsrc\", mode: \"r\", ext: [\"r\"], alias: [\"rscript\"]},\n    {name: \"reStructuredText\", mime: \"text/x-rst\", mode: \"rst\", ext: [\"rst\"], alias: [\"rst\"]},\n    {name: \"RPM Changes\", mime: \"text/x-rpm-changes\", mode: \"rpm\"},\n    {name: \"RPM Spec\", mime: \"text/x-rpm-spec\", mode: \"rpm\", ext: [\"spec\"]},\n    {name: \"Ruby\", mime: \"text/x-ruby\", mode: \"ruby\", ext: [\"rb\"], alias: [\"jruby\", \"macruby\", \"rake\", \"rb\", \"rbx\"]},\n    {name: \"Rust\", mime: \"text/x-rustsrc\", mode: \"rust\", ext: [\"rs\"]},\n    {name: \"Sass\", mime: \"text/x-sass\", mode: \"sass\", ext: [\"sass\"]},\n    {name: \"Scala\", mime: \"text/x-scala\", mode: \"clike\", ext: [\"scala\"]},\n    {name: \"Scheme\", mime: \"text/x-scheme\", mode: \"scheme\", ext: [\"scm\", \"ss\"]},\n    {name: \"SCSS\", mime: \"text/x-scss\", mode: \"css\", ext: [\"scss\"]},\n    {name: \"Shell\", mime: \"text/x-sh\", mode: \"shell\", ext: [\"sh\", \"ksh\", \"bash\"], alias: [\"bash\", \"sh\", \"zsh\"]},\n    {name: \"Sieve\", mime: \"application/sieve\", mode: \"sieve\", ext: [\"siv\", \"sieve\"]},\n    {name: \"Slim\", mimes: [\"text/x-slim\", \"application/x-slim\"], mode: \"slim\", ext: [\"slim\"]},\n    {name: \"Smalltalk\", mime: \"text/x-stsrc\", mode: \"smalltalk\", ext: [\"st\"]},\n    {name: \"Smarty\", mime: \"text/x-smarty\", mode: \"smarty\", ext: [\"tpl\"]},\n    {name: \"SmartyMixed\", mime: \"text/x-smarty\", mode: \"smartymixed\"},\n    {name: \"Solr\", mime: \"text/x-solr\", mode: \"solr\"},\n    {name: \"Soy\", mime: \"text/x-soy\", mode: \"soy\", ext: [\"soy\"], alias: [\"closure template\"]},\n    {name: \"SPARQL\", mime: \"application/sparql-query\", mode: \"sparql\", ext: [\"rq\", \"sparql\"], alias: [\"sparul\"]},\n    {name: \"Spreadsheet\", mime: \"text/x-spreadsheet\", mode: \"spreadsheet\", alias: [\"excel\", \"formula\"]},\n    {name: \"SQL\", mime: \"text/x-sql\", mode: \"sql\", ext: [\"sql\"]},\n    {name: \"MariaDB\", mime: \"text/x-mariadb\", mode: \"sql\"},\n    {name: \"sTeX\", mime: \"text/x-stex\", mode: \"stex\"},\n    {name: \"LaTeX\", mime: \"text/x-latex\", mode: \"stex\", ext: [\"text\", \"ltx\"], alias: [\"tex\"]},\n    {name: \"SystemVerilog\", mime: \"text/x-systemverilog\", mode: \"verilog\", ext: [\"v\"]},\n    {name: \"Tcl\", mime: \"text/x-tcl\", mode: \"tcl\", ext: [\"tcl\"]},\n    {name: \"Textile\", mime: \"text/x-textile\", mode: \"textile\", ext: [\"textile\"]},\n    {name: \"TiddlyWiki \", mime: \"text/x-tiddlywiki\", mode: \"tiddlywiki\"},\n    {name: \"Tiki wiki\", mime: \"text/tiki\", mode: \"tiki\"},\n    {name: \"TOML\", mime: \"text/x-toml\", mode: \"toml\", ext: [\"toml\"]},\n    {name: \"Tornado\", mime: \"text/x-tornado\", mode: \"tornado\"},\n    {name: \"Turtle\", mime: \"text/turtle\", mode: \"turtle\", ext: [\"ttl\"]},\n    {name: \"TypeScript\", mime: \"application/typescript\", mode: \"javascript\", ext: [\"ts\"], alias: [\"ts\"]},\n    {name: \"VB.NET\", mime: \"text/x-vb\", mode: \"vb\", ext: [\"vb\"]},\n    {name: \"VBScript\", mime: \"text/vbscript\", mode: \"vbscript\", ext: [\"vbs\"]},\n    {name: \"Velocity\", mime: \"text/velocity\", mode: \"velocity\", ext: [\"vtl\"]},\n    {name: \"Verilog\", mime: \"text/x-verilog\", mode: \"verilog\", ext: [\"v\"]},\n    {name: \"XML\", mimes: [\"application/xml\", \"text/xml\"], mode: \"xml\", ext: [\"xml\", \"xsl\", \"xsd\"], alias: [\"rss\", \"wsdl\", \"xsd\"]},\n    {name: \"XQuery\", mime: \"application/xquery\", mode: \"xquery\", ext: [\"xy\", \"xquery\"]},\n    {name: \"YAML\", mime: \"text/x-yaml\", mode: \"yaml\", ext: [\"yaml\"], alias: [\"yml\"]},\n    {name: \"Z80\", mime: \"text/x-z80\", mode: \"z80\", ext: [\"z80\"]}\n  ];\n  // Ensure all modes have a mime property for backwards compatibility\n  for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n    var info = CodeMirror.modeInfo[i];\n    if (info.mimes) info.mime = info.mimes[0];\n  }\n\n  CodeMirror.findModeByMIME = function(mime) {\n    mime = mime.toLowerCase();\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.mime == mime) return info;\n      if (info.mimes) for (var j = 0; j < info.mimes.length; j++)\n        if (info.mimes[j] == mime) return info;\n    }\n  };\n\n  CodeMirror.findModeByExtension = function(ext) {\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.ext) for (var j = 0; j < info.ext.length; j++)\n        if (info.ext[j] == ext) return info;\n    }\n  };\n\n  CodeMirror.findModeByFileName = function(filename) {\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.file && info.file.test(filename)) return info;\n    }\n    var dot = filename.lastIndexOf(\".\");\n    var ext = dot > -1 && filename.substring(dot + 1, filename.length);\n    if (ext) return CodeMirror.findModeByExtension(ext);\n  };\n\n  CodeMirror.findModeByName = function(name) {\n    name = name.toLowerCase();\n    for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n      var info = CodeMirror.modeInfo[i];\n      if (info.name.toLowerCase() == name) return info;\n      if (info.alias) for (var j = 0; j < info.alias.length; j++)\n        if (info.alias[j].toLowerCase() == name) return info;\n    }\n  };\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/mirc/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: mIRC mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../theme/twilight.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"mirc.js\"></script>\n<style>.CodeMirror {border: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">mIRC</a>\n  </ul>\n</div>\n\n<article>\n<h2>mIRC mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n;AKA Nick Tracker by Ford_Lawnmower irc.GeekShed.net #Script-Help\n;*****************************************************************************;\n;**Start Setup\n;Change JoinDisplay, below, for On Join AKA Display. On = 1 - Off = 0\nalias -l JoinDisplay { return 1 }\n;Change MaxNicks, below, to the number of nicknames you want to store for each hostmask. I wouldn't go over 400 with this ;/\nalias -l MaxNicks { return 20 }\n;Change AKALogo, below, To the text you want displayed before each AKA result.\nalias -l AKALogo { return \u000306\u0007 \u000305A\u000306K\u000307A \u000306\u0007 }\n;**End Setup\n;*****************************************************************************;\nOn *:Join:#: {\n  if ($nick == $me) { .timer 1 1 ialupdateCheck $chan }\n  NickNamesAdd $nick $+($network,$wildsite)\n  if ($JoinDisplay) { .timerNickNames $+ $nick 1 2 NickNames.display $nick $chan $network $wildsite }\n}\non *:Nick: { NickNamesAdd $newnick $+($network,$wildsite) $nick }\nalias -l NickNames.display {\n  if ($gettok($hget(NickNames,$+($3,$4)),0,126) > 1) {\n    echo -g $2 $AKALogo $+(\u000309,$1) $AKALogo \u000307 $mid($replace($hget(NickNames,$+($3,$4)),$chr(126),$chr(44)),2,-1)\n  }\n}\nalias -l NickNamesAdd {\n  if ($hget(NickNames,$2)) {\n    if (!$regex($hget(NickNames,$2),/~\\Q $+ $replacecs($1,\\E,\\E\\\\E\\Q) $+ \\E~/i)) {\n      if ($gettok($hget(NickNames,$2),0,126) <= $MaxNicks) {\n        hadd NickNames $2 $+($hget(NickNames,$2),$1,~)\n      }\n      else {\n        hadd NickNames $2 $+($mid($hget(NickNames,$2),$pos($hget(NickNames,$2),~,2)),$1,~)\n      }\n    }\n  }\n  else {\n    hadd -m NickNames $2 $+(~,$1,~,$iif($3,$+($3,~)))\n  }\n}\nalias -l Fix.All.MindUser {\n  var %Fix.Count = $hfind(NickNames,/[^~]+[0-9]{4}~/,0,r).data\n  while (%Fix.Count) {\n    if ($Fix.MindUser($hget(NickNames,$hfind(NickNames,/[^~]+[0-9]{4}~/,%Fix.Count,r).data))) {\n      echo -ag Record %Fix.Count - $v1 - Was Cleaned\n      hadd NickNames $hfind(NickNames,/[^~]+[0-9]{4}~/,%Fix.Count,r).data $v1\n    }\n    dec %Fix.Count\n  }\n}\nalias -l Fix.MindUser { return $regsubex($1,/[^~]+[0-9]{4}~/g,$null) }\nmenu nicklist,query {\n  -\n  .AKA\n  ..Check $$1: {\n    if ($gettok($hget(NickNames,$+($network,$address($1,2))),0,126) > 1) {\n      NickNames.display $1 $active $network $address($1,2)\n    }\n    else { echo -ag $AKALogo $+(\u000309,$1) \u000307has not been known by any other nicknames while I have been watching. }\n  }\n  ..Cleanup $$1:hadd NickNames $+($network,$address($1,2)) $fix.minduser($hget(NickNames,$+($network,$address($1,2))))\n  ..Clear $$1:hadd NickNames $+($network,$address($1,2)) $+(~,$1,~)\n  ..AKA Search Dialog:dialog $iif($dialog(AKA_Search),-v,-m) AKA_Search AKA_Search\n  -\n}\nmenu status,channel {\n  -\n  .AKA\n  ..AKA Search Dialog:dialog $iif($dialog(AKA_Search),-v,-m) AKA_Search AKA_Search\n  ..Clean All Records:Fix.All.Minduser\n  -\n}\ndialog AKA_Search {\n  title \"AKA Search Engine\"\n  size -1 -1 206 221\n  option dbu\n  edit \"\", 1, 8 5 149 10, autohs\n  button \"Search\", 2, 163 4 32 12\n  radio \"Search HostMask\", 4, 61 22 55 10\n  radio \"Search Nicknames\", 5, 123 22 56 10\n  list 6, 8 38 190 169, sort extsel vsbar\n  button \"Check Selected\", 7, 67 206 40 12\n  button \"Close\", 8, 160 206 38 12, cancel\n  box \"Search Type\", 3, 11 17 183 18\n  button \"Copy to Clipboard\", 9, 111 206 46 12\n}\nOn *:Dialog:Aka_Search:init:*: { did -c $dname 5 }\nOn *:Dialog:Aka_Search:Sclick:2,7,9: {\n  if ($did == 2) && ($did($dname,1)) {\n    did -r $dname 6\n    var %search $+(*,$v1,*), %type $iif($did($dname,5).state,data,item), %matches = $hfind(NickNames,%search,0,w). [ $+ [ %type ] ]\n    while (%matches) {\n      did -a $dname 6 $hfind(NickNames,%search,%matches,w). [ $+ [ %type ] ]\n      dec %matches\n    }\n    did -c $dname 6 1\n  }\n  elseif ($did == 7) && ($did($dname,6).seltext) { echo -ga $AKALogo \u000307 $mid($replace($hget(NickNames,$v1),$chr(126),$chr(44)),2,-1) }\n  elseif ($did == 9) && ($did($dname,6).seltext) { clipboard $mid($v1,$pos($v1,*,1)) }\n}\nOn *:Start:{\n  if (!$hget(NickNames)) { hmake NickNames 10 }\n  if ($isfile(NickNames.hsh)) { hload  NickNames NickNames.hsh }\n}\nOn *:Exit: { if ($hget(NickNames)) { hsave NickNames NickNames.hsh } }\nOn *:Disconnect: { if ($hget(NickNames)) { hsave NickNames NickNames.hsh } }\nOn *:Unload: { hfree NickNames }\nalias -l ialupdateCheck {\n  inc -z $+(%,ialupdateCheck,$network) $calc($nick($1,0) / 4)\n  ;If your ial is already being updated on join .who $1 out.\n  ;If you are using /names to update ial you will still need this line.\n  .who $1\n}\nRaw 352:*: {\n  if ($($+(%,ialupdateCheck,$network),2)) haltdef\n  NickNamesAdd $6 $+($network,$address($6,2))\n}\nRaw 315:*: {\n  if ($($+(%,ialupdateCheck,$network),2)) haltdef\n}\n\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        theme: \"twilight\",\n        lineNumbers: true,\n        matchBrackets: true,\n        indentUnit: 4,\n        mode: \"text/mirc\"\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/mirc</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/mirc/mirc.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n//mIRC mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMIME(\"text/mirc\", \"mirc\");\nCodeMirror.defineMode(\"mirc\", function() {\n  function parseWords(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n  var specials = parseWords(\"$! $$ $& $? $+ $abook $abs $active $activecid \" +\n                            \"$activewid $address $addtok $agent $agentname $agentstat $agentver \" +\n                            \"$alias $and $anick $ansi2mirc $aop $appactive $appstate $asc $asctime \" +\n                            \"$asin $atan $avoice $away $awaymsg $awaytime $banmask $base $bfind \" +\n                            \"$binoff $biton $bnick $bvar $bytes $calc $cb $cd $ceil $chan $chanmodes \" +\n                            \"$chantypes $chat $chr $cid $clevel $click $cmdbox $cmdline $cnick $color \" +\n                            \"$com $comcall $comchan $comerr $compact $compress $comval $cos $count \" +\n                            \"$cr $crc $creq $crlf $ctime $ctimer $ctrlenter $date $day $daylight \" +\n                            \"$dbuh $dbuw $dccignore $dccport $dde $ddename $debug $decode $decompress \" +\n                            \"$deltok $devent $dialog $did $didreg $didtok $didwm $disk $dlevel $dll \" +\n                            \"$dllcall $dname $dns $duration $ebeeps $editbox $emailaddr $encode $error \" +\n                            \"$eval $event $exist $feof $ferr $fgetc $file $filename $filtered $finddir \" +\n                            \"$finddirn $findfile $findfilen $findtok $fline $floor $fopen $fread $fserve \" +\n                            \"$fulladdress $fulldate $fullname $fullscreen $get $getdir $getdot $gettok $gmt \" +\n                            \"$group $halted $hash $height $hfind $hget $highlight $hnick $hotline \" +\n                            \"$hotlinepos $ial $ialchan $ibl $idle $iel $ifmatch $ignore $iif $iil \" +\n                            \"$inelipse $ini $inmidi $inpaste $inpoly $input $inrect $inroundrect \" +\n                            \"$insong $instok $int $inwave $ip $isalias $isbit $isdde $isdir $isfile \" +\n                            \"$isid $islower $istok $isupper $keychar $keyrpt $keyval $knick $lactive \" +\n                            \"$lactivecid $lactivewid $left $len $level $lf $line $lines $link $lock \" +\n                            \"$lock $locked $log $logstamp $logstampfmt $longfn $longip $lower $ltimer \" +\n                            \"$maddress $mask $matchkey $matchtok $md5 $me $menu $menubar $menucontext \" +\n                            \"$menutype $mid $middir $mircdir $mircexe $mircini $mklogfn $mnick $mode \" +\n                            \"$modefirst $modelast $modespl $mouse $msfile $network $newnick $nick $nofile \" +\n                            \"$nopath $noqt $not $notags $notify $null $numeric $numok $oline $onpoly \" +\n                            \"$opnick $or $ord $os $passivedcc $pic $play $pnick $port $portable $portfree \" +\n                            \"$pos $prefix $prop $protect $puttok $qt $query $rand $r $rawmsg $read $readomo \" +\n                            \"$readn $regex $regml $regsub $regsubex $remove $remtok $replace $replacex \" +\n                            \"$reptok $result $rgb $right $round $scid $scon $script $scriptdir $scriptline \" +\n                            \"$sdir $send $server $serverip $sfile $sha1 $shortfn $show $signal $sin \" +\n                            \"$site $sline $snick $snicks $snotify $sock $sockbr $sockerr $sockname \" +\n                            \"$sorttok $sound $sqrt $ssl $sreq $sslready $status $strip $str $stripped \" +\n                            \"$syle $submenu $switchbar $tan $target $ticks $time $timer $timestamp \" +\n                            \"$timestampfmt $timezone $tip $titlebar $toolbar $treebar $trust $ulevel \" +\n                            \"$ulist $upper $uptime $url $usermode $v1 $v2 $var $vcmd $vcmdstat $vcmdver \" +\n                            \"$version $vnick $vol $wid $width $wildsite $wildtok $window $wrap $xor\");\n  var keywords = parseWords(\"abook ajinvite alias aline ame amsg anick aop auser autojoin avoice \" +\n                            \"away background ban bcopy beep bread break breplace bset btrunc bunset bwrite \" +\n                            \"channel clear clearall cline clipboard close cnick color comclose comopen \" +\n                            \"comreg continue copy creq ctcpreply ctcps dcc dccserver dde ddeserver \" +\n                            \"debug dec describe dialog did didtok disable disconnect dlevel dline dll \" +\n                            \"dns dqwindow drawcopy drawdot drawfill drawline drawpic drawrect drawreplace \" +\n                            \"drawrot drawsave drawscroll drawtext ebeeps echo editbox emailaddr enable \" +\n                            \"events exit fclose filter findtext finger firewall flash flist flood flush \" +\n                            \"flushini font fopen fseek fsend fserve fullname fwrite ghide gload gmove \" +\n                            \"gopts goto gplay gpoint gqreq groups gshow gsize gstop gtalk gunload hadd \" +\n                            \"halt haltdef hdec hdel help hfree hinc hload hmake hop hsave ial ialclear \" +\n                            \"ialmark identd if ignore iline inc invite iuser join kick linesep links list \" +\n                            \"load loadbuf localinfo log mdi me menubar mkdir mnick mode msg nick noop notice \" +\n                            \"notify omsg onotice part partall pdcc perform play playctrl pop protect pvoice \" +\n                            \"qme qmsg query queryn quit raw reload remini remote remove rename renwin \" +\n                            \"reseterror resetidle return rlevel rline rmdir run ruser save savebuf saveini \" +\n                            \"say scid scon server set showmirc signam sline sockaccept sockclose socklist \" +\n                            \"socklisten sockmark sockopen sockpause sockread sockrename sockudp sockwrite \" +\n                            \"sound speak splay sreq strip switchbar timer timestamp titlebar tnick tokenize \" +\n                            \"toolbar topic tray treebar ulist unload unset unsetall updatenl url uwho \" +\n                            \"var vcadd vcmd vcrem vol while whois window winhelp write writeint if isalnum \" +\n                            \"isalpha isaop isavoice isban ischan ishop isignore isin isincs isletter islower \" +\n                            \"isnotify isnum ison isop isprotect isreg isupper isvoice iswm iswmcs \" +\n                            \"elseif else goto menu nicklist status title icon size option text edit \" +\n                            \"button check radio box scroll list combo link tab item\");\n  var functions = parseWords(\"if elseif else and not or eq ne in ni for foreach while switch\");\n  var isOperatorChar = /[+\\-*&%=<>!?^\\/\\|]/;\n  function chain(stream, state, f) {\n    state.tokenize = f;\n    return f(stream, state);\n  }\n  function tokenBase(stream, state) {\n    var beforeParams = state.beforeParams;\n    state.beforeParams = false;\n    var ch = stream.next();\n    if (/[\\[\\]{}\\(\\),\\.]/.test(ch)) {\n      if (ch == \"(\" && beforeParams) state.inParams = true;\n      else if (ch == \")\") state.inParams = false;\n      return null;\n    }\n    else if (/\\d/.test(ch)) {\n      stream.eatWhile(/[\\w\\.]/);\n      return \"number\";\n    }\n    else if (ch == \"\\\\\") {\n      stream.eat(\"\\\\\");\n      stream.eat(/./);\n      return \"number\";\n    }\n    else if (ch == \"/\" && stream.eat(\"*\")) {\n      return chain(stream, state, tokenComment);\n    }\n    else if (ch == \";\" && stream.match(/ *\\( *\\(/)) {\n      return chain(stream, state, tokenUnparsed);\n    }\n    else if (ch == \";\" && !state.inParams) {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n    else if (ch == '\"') {\n      stream.eat(/\"/);\n      return \"keyword\";\n    }\n    else if (ch == \"$\") {\n      stream.eatWhile(/[$_a-z0-9A-Z\\.:]/);\n      if (specials && specials.propertyIsEnumerable(stream.current().toLowerCase())) {\n        return \"keyword\";\n      }\n      else {\n        state.beforeParams = true;\n        return \"builtin\";\n      }\n    }\n    else if (ch == \"%\") {\n      stream.eatWhile(/[^,^\\s^\\(^\\)]/);\n      state.beforeParams = true;\n      return \"string\";\n    }\n    else if (isOperatorChar.test(ch)) {\n      stream.eatWhile(isOperatorChar);\n      return \"operator\";\n    }\n    else {\n      stream.eatWhile(/[\\w\\$_{}]/);\n      var word = stream.current().toLowerCase();\n      if (keywords && keywords.propertyIsEnumerable(word))\n        return \"keyword\";\n      if (functions && functions.propertyIsEnumerable(word)) {\n        state.beforeParams = true;\n        return \"keyword\";\n      }\n      return null;\n    }\n  }\n  function tokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return \"comment\";\n  }\n  function tokenUnparsed(stream, state) {\n    var maybeEnd = 0, ch;\n    while (ch = stream.next()) {\n      if (ch == \";\" && maybeEnd == 2) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      if (ch == \")\")\n        maybeEnd++;\n      else if (ch != \" \")\n        maybeEnd = 0;\n    }\n    return \"meta\";\n  }\n  return {\n    startState: function() {\n      return {\n        tokenize: tokenBase,\n        beforeParams: false,\n        inParams: false\n      };\n    },\n    token: function(stream, state) {\n      if (stream.eatSpace()) return null;\n      return state.tokenize(stream, state);\n    }\n  };\n});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/mllike/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: ML-like mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=stylesheet href=../../lib/codemirror.css>\n<script src=../../lib/codemirror.js></script>\n<script src=../../addon/edit/matchbrackets.js></script>\n<script src=mllike.js></script>\n<style type=text/css>\n  .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}\n</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">ML-like</a>\n  </ul>\n</div>\n\n<article>\n<h2>OCaml mode</h2>\n\n\n<textarea id=\"ocamlCode\">\n(* Summing a list of integers *)\nlet rec sum xs =\n  match xs with\n    | []       -&gt; 0\n    | x :: xs' -&gt; x + sum xs'\n\n(* Quicksort *)\nlet rec qsort = function\n   | [] -&gt; []\n   | pivot :: rest -&gt;\n       let is_less x = x &lt; pivot in\n       let left, right = List.partition is_less rest in\n       qsort left @ [pivot] @ qsort right\n\n(* Fibonacci Sequence *)\nlet rec fib_aux n a b =\n  match n with\n  | 0 -&gt; a\n  | _ -&gt; fib_aux (n - 1) (a + b) a\nlet fib n = fib_aux n 0 1\n\n(* Birthday paradox *)\nlet year_size = 365.\n\nlet rec birthday_paradox prob people =\n    let prob' = (year_size -. float people) /. year_size *. prob  in\n    if prob' &lt; 0.5 then\n        Printf.printf \"answer = %d\\n\" (people+1)\n    else\n        birthday_paradox prob' (people+1) ;;\n\nbirthday_paradox 1.0 1\n\n(* Church numerals *)\nlet zero f x = x\nlet succ n f x = f (n f x)\nlet one = succ zero\nlet two = succ (succ zero)\nlet add n1 n2 f x = n1 f (n2 f x)\nlet to_string n = n (fun k -&gt; \"S\" ^ k) \"0\"\nlet _ = to_string (add (succ two) two)\n\n(* Elementary functions *)\nlet square x = x * x;;\nlet rec fact x =\n  if x &lt;= 1 then 1 else x * fact (x - 1);;\n\n(* Automatic memory management *)\nlet l = 1 :: 2 :: 3 :: [];;\n[1; 2; 3];;\n5 :: l;;\n\n(* Polymorphism: sorting lists *)\nlet rec sort = function\n  | [] -&gt; []\n  | x :: l -&gt; insert x (sort l)\n\nand insert elem = function\n  | [] -&gt; [elem]\n  | x :: l -&gt;\n      if elem &lt; x then elem :: x :: l else x :: insert elem l;;\n\n(* Imperative features *)\nlet add_polynom p1 p2 =\n  let n1 = Array.length p1\n  and n2 = Array.length p2 in\n  let result = Array.create (max n1 n2) 0 in\n  for i = 0 to n1 - 1 do result.(i) &lt;- p1.(i) done;\n  for i = 0 to n2 - 1 do result.(i) &lt;- result.(i) + p2.(i) done;\n  result;;\nadd_polynom [| 1; 2 |] [| 1; 2; 3 |];;\n\n(* We may redefine fact using a reference cell and a for loop *)\nlet fact n =\n  let result = ref 1 in\n  for i = 2 to n do\n    result := i * !result\n   done;\n   !result;;\nfact 5;;\n\n(* Triangle (graphics) *)\nlet () =\n  ignore( Glut.init Sys.argv );\n  Glut.initDisplayMode ~double_buffer:true ();\n  ignore (Glut.createWindow ~title:\"OpenGL Demo\");\n  let angle t = 10. *. t *. t in\n  let render () =\n    GlClear.clear [ `color ];\n    GlMat.load_identity ();\n    GlMat.rotate ~angle: (angle (Sys.time ())) ~z:1. ();\n    GlDraw.begins `triangles;\n    List.iter GlDraw.vertex2 [-1., -1.; 0., 1.; 1., -1.];\n    GlDraw.ends ();\n    Glut.swapBuffers () in\n  GlMat.mode `modelview;\n  Glut.displayFunc ~cb:render;\n  Glut.idleFunc ~cb:(Some Glut.postRedisplay);\n  Glut.mainLoop ()\n\n(* A Hundred Lines of Caml - http://caml.inria.fr/about/taste.en.html *)\n(* OCaml page on Wikipedia - http://en.wikipedia.org/wiki/OCaml *)\n</textarea>\n\n<h2>F# mode</h2>\n<textarea id=\"fsharpCode\">\nmodule CodeMirror.FSharp\n\nlet rec fib = function\n    | 0 -> 0\n    | 1 -> 1\n    | n -> fib (n - 1) + fib (n - 2)\n\ntype Point =\n    {\n        x : int\n        y : int\n    }\n\ntype Color =\n    | Red\n    | Green\n    | Blue\n\n[0 .. 10]\n|> List.map ((+) 2)\n|> List.fold (fun x y -> x + y) 0\n|> printf \"%i\"\n</textarea>\n\n\n<script>\n  var ocamlEditor = CodeMirror.fromTextArea(document.getElementById('ocamlCode'), {\n    mode: 'text/x-ocaml',\n    lineNumbers: true,\n    matchBrackets: true\n  });\n\n  var fsharpEditor = CodeMirror.fromTextArea(document.getElementById('fsharpCode'), {\n    mode: 'text/x-fsharp',\n    lineNumbers: true,\n    matchBrackets: true\n  });\n</script>\n\n<p><strong>MIME types defined:</strong> <code>text/x-ocaml</code> (OCaml) and <code>text/x-fsharp</code> (F#).</p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/mllike/mllike.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode('mllike', function(_config, parserConfig) {\n  var words = {\n    'let': 'keyword',\n    'rec': 'keyword',\n    'in': 'keyword',\n    'of': 'keyword',\n    'and': 'keyword',\n    'if': 'keyword',\n    'then': 'keyword',\n    'else': 'keyword',\n    'for': 'keyword',\n    'to': 'keyword',\n    'while': 'keyword',\n    'do': 'keyword',\n    'done': 'keyword',\n    'fun': 'keyword',\n    'function': 'keyword',\n    'val': 'keyword',\n    'type': 'keyword',\n    'mutable': 'keyword',\n    'match': 'keyword',\n    'with': 'keyword',\n    'try': 'keyword',\n    'open': 'builtin',\n    'ignore': 'builtin',\n    'begin': 'keyword',\n    'end': 'keyword'\n  };\n\n  var extraWords = parserConfig.extraWords || {};\n  for (var prop in extraWords) {\n    if (extraWords.hasOwnProperty(prop)) {\n      words[prop] = parserConfig.extraWords[prop];\n    }\n  }\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n\n    if (ch === '\"') {\n      state.tokenize = tokenString;\n      return state.tokenize(stream, state);\n    }\n    if (ch === '(') {\n      if (stream.eat('*')) {\n        state.commentLevel++;\n        state.tokenize = tokenComment;\n        return state.tokenize(stream, state);\n      }\n    }\n    if (ch === '~') {\n      stream.eatWhile(/\\w/);\n      return 'variable-2';\n    }\n    if (ch === '`') {\n      stream.eatWhile(/\\w/);\n      return 'quote';\n    }\n    if (ch === '/' && parserConfig.slashComments && stream.eat('/')) {\n      stream.skipToEnd();\n      return 'comment';\n    }\n    if (/\\d/.test(ch)) {\n      stream.eatWhile(/[\\d]/);\n      if (stream.eat('.')) {\n        stream.eatWhile(/[\\d]/);\n      }\n      return 'number';\n    }\n    if ( /[+\\-*&%=<>!?|]/.test(ch)) {\n      return 'operator';\n    }\n    stream.eatWhile(/\\w/);\n    var cur = stream.current();\n    return words[cur] || 'variable';\n  }\n\n  function tokenString(stream, state) {\n    var next, end = false, escaped = false;\n    while ((next = stream.next()) != null) {\n      if (next === '\"' && !escaped) {\n        end = true;\n        break;\n      }\n      escaped = !escaped && next === '\\\\';\n    }\n    if (end && !escaped) {\n      state.tokenize = tokenBase;\n    }\n    return 'string';\n  };\n\n  function tokenComment(stream, state) {\n    var prev, next;\n    while(state.commentLevel > 0 && (next = stream.next()) != null) {\n      if (prev === '(' && next === '*') state.commentLevel++;\n      if (prev === '*' && next === ')') state.commentLevel--;\n      prev = next;\n    }\n    if (state.commentLevel <= 0) {\n      state.tokenize = tokenBase;\n    }\n    return 'comment';\n  }\n\n  return {\n    startState: function() {return {tokenize: tokenBase, commentLevel: 0};},\n    token: function(stream, state) {\n      if (stream.eatSpace()) return null;\n      return state.tokenize(stream, state);\n    },\n\n    blockCommentStart: \"(*\",\n    blockCommentEnd: \"*)\",\n    lineComment: parserConfig.slashComments ? \"//\" : null\n  };\n});\n\nCodeMirror.defineMIME('text/x-ocaml', {\n  name: 'mllike',\n  extraWords: {\n    'succ': 'keyword',\n    'trace': 'builtin',\n    'exit': 'builtin',\n    'print_string': 'builtin',\n    'print_endline': 'builtin',\n    'true': 'atom',\n    'false': 'atom',\n    'raise': 'keyword'\n  }\n});\n\nCodeMirror.defineMIME('text/x-fsharp', {\n  name: 'mllike',\n  extraWords: {\n    'abstract': 'keyword',\n    'as': 'keyword',\n    'assert': 'keyword',\n    'base': 'keyword',\n    'class': 'keyword',\n    'default': 'keyword',\n    'delegate': 'keyword',\n    'downcast': 'keyword',\n    'downto': 'keyword',\n    'elif': 'keyword',\n    'exception': 'keyword',\n    'extern': 'keyword',\n    'finally': 'keyword',\n    'global': 'keyword',\n    'inherit': 'keyword',\n    'inline': 'keyword',\n    'interface': 'keyword',\n    'internal': 'keyword',\n    'lazy': 'keyword',\n    'let!': 'keyword',\n    'member' : 'keyword',\n    'module': 'keyword',\n    'namespace': 'keyword',\n    'new': 'keyword',\n    'null': 'keyword',\n    'override': 'keyword',\n    'private': 'keyword',\n    'public': 'keyword',\n    'return': 'keyword',\n    'return!': 'keyword',\n    'select': 'keyword',\n    'static': 'keyword',\n    'struct': 'keyword',\n    'upcast': 'keyword',\n    'use': 'keyword',\n    'use!': 'keyword',\n    'val': 'keyword',\n    'when': 'keyword',\n    'yield': 'keyword',\n    'yield!': 'keyword',\n\n    'List': 'builtin',\n    'Seq': 'builtin',\n    'Map': 'builtin',\n    'Set': 'builtin',\n    'int': 'builtin',\n    'string': 'builtin',\n    'raise': 'builtin',\n    'failwith': 'builtin',\n    'not': 'builtin',\n    'true': 'builtin',\n    'false': 'builtin'\n  },\n  slashComments: true\n});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/modelica/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Modelica mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<link rel=\"stylesheet\" href=\"../../addon/hint/show-hint.css\">\n<script src=\"../../addon/hint/show-hint.js\"></script>\n<script src=\"modelica.js\"></script>\n<style>.CodeMirror {border: 2px inset #dee;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Modelica</a>\n  </ul>\n</div>\n\n<article>\n<h2>Modelica mode</h2>\n\n<div><textarea id=\"modelica\">\nmodel BouncingBall\n  parameter Real e = 0.7;\n  parameter Real g = 9.81;\n  Real h(start=1);\n  Real v;\n  Boolean flying(start=true);\n  Boolean impact;\n  Real v_new;\nequation\n  impact = h <= 0.0;\n  der(v) = if flying then -g else 0;\n  der(h) = v;\n  when {h <= 0.0 and v <= 0.0, impact} then\n    v_new = if edge(impact) then -e*pre(v) else 0;\n    flying = v_new > 0;\n    reinit(v, v_new);\n  end when;\n  annotation (uses(Modelica(version=\"3.2\")));\nend BouncingBall;\n</textarea></div>\n\n    <script>\n      var modelicaEditor = CodeMirror.fromTextArea(document.getElementById(\"modelica\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"text/x-modelica\"\n      });\n      var mac = CodeMirror.keyMap.default == CodeMirror.keyMap.macDefault;\n      CodeMirror.keyMap.default[(mac ? \"Cmd\" : \"Ctrl\") + \"-Space\"] = \"autocomplete\";\n    </script>\n\n    <p>Simple mode that tries to handle Modelica as well as it can.</p>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-modelica</code>\n    (Modlica code).</p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/modelica/modelica.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Modelica support for CodeMirror, copyright (c) by Lennart Ochel\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})\n\n(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineMode(\"modelica\", function(config, parserConfig) {\n\n    var indentUnit = config.indentUnit;\n    var keywords = parserConfig.keywords || {};\n    var builtin = parserConfig.builtin || {};\n    var atoms = parserConfig.atoms || {};\n\n    var isSingleOperatorChar = /[;=\\(:\\),{}.*<>+\\-\\/^\\[\\]]/;\n    var isDoubleOperatorChar = /(:=|<=|>=|==|<>|\\.\\+|\\.\\-|\\.\\*|\\.\\/|\\.\\^)/;\n    var isDigit = /[0-9]/;\n    var isNonDigit = /[_a-zA-Z]/;\n\n    function tokenLineComment(stream, state) {\n      stream.skipToEnd();\n      state.tokenize = null;\n      return \"comment\";\n    }\n\n    function tokenBlockComment(stream, state) {\n      var maybeEnd = false, ch;\n      while (ch = stream.next()) {\n        if (maybeEnd && ch == \"/\") {\n          state.tokenize = null;\n          break;\n        }\n        maybeEnd = (ch == \"*\");\n      }\n      return \"comment\";\n    }\n\n    function tokenString(stream, state) {\n      var escaped = false, ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == '\"' && !escaped) {\n          state.tokenize = null;\n          state.sol = false;\n          break;\n        }\n        escaped = !escaped && ch == \"\\\\\";\n      }\n\n      return \"string\";\n    }\n\n    function tokenIdent(stream, state) {\n      stream.eatWhile(isDigit);\n      while (stream.eat(isDigit) || stream.eat(isNonDigit)) { }\n\n\n      var cur = stream.current();\n\n      if(state.sol && (cur == \"package\" || cur == \"model\" || cur == \"when\" || cur == \"connector\")) state.level++;\n      else if(state.sol && cur == \"end\" && state.level > 0) state.level--;\n\n      state.tokenize = null;\n      state.sol = false;\n\n      if (keywords.propertyIsEnumerable(cur)) return \"keyword\";\n      else if (builtin.propertyIsEnumerable(cur)) return \"builtin\";\n      else if (atoms.propertyIsEnumerable(cur)) return \"atom\";\n      else return \"variable\";\n    }\n\n    function tokenQIdent(stream, state) {\n      while (stream.eat(/[^']/)) { }\n\n      state.tokenize = null;\n      state.sol = false;\n\n      if(stream.eat(\"'\"))\n        return \"variable\";\n      else\n        return \"error\";\n    }\n\n    function tokenUnsignedNuber(stream, state) {\n      stream.eatWhile(isDigit);\n      if (stream.eat('.')) {\n        stream.eatWhile(isDigit);\n      }\n      if (stream.eat('e') || stream.eat('E')) {\n        if (!stream.eat('-'))\n          stream.eat('+');\n        stream.eatWhile(isDigit);\n      }\n\n      state.tokenize = null;\n      state.sol = false;\n      return \"number\";\n    }\n\n    // Interface\n    return {\n      startState: function() {\n        return {\n          tokenize: null,\n          level: 0,\n          sol: true\n        };\n      },\n\n      token: function(stream, state) {\n        if(state.tokenize != null) {\n          return state.tokenize(stream, state);\n        }\n\n        if(stream.sol()) {\n          state.sol = true;\n        }\n\n        // WHITESPACE\n        if(stream.eatSpace()) {\n          state.tokenize = null;\n          return null;\n        }\n\n        var ch = stream.next();\n\n        // LINECOMMENT\n        if(ch == '/' && stream.eat('/')) {\n          state.tokenize = tokenLineComment;\n        }\n        // BLOCKCOMMENT\n        else if(ch == '/' && stream.eat('*')) {\n          state.tokenize = tokenBlockComment;\n        }\n        // TWO SYMBOL TOKENS\n        else if(isDoubleOperatorChar.test(ch+stream.peek())) {\n          stream.next();\n          state.tokenize = null;\n          return \"operator\";\n        }\n        // SINGLE SYMBOL TOKENS\n        else if(isSingleOperatorChar.test(ch)) {\n          state.tokenize = null;\n          return \"operator\";\n        }\n        // IDENT\n        else if(isNonDigit.test(ch)) {\n          state.tokenize = tokenIdent;\n        }\n        // Q-IDENT\n        else if(ch == \"'\" && stream.peek() && stream.peek() != \"'\") {\n          state.tokenize = tokenQIdent;\n        }\n        // STRING\n        else if(ch == '\"') {\n          state.tokenize = tokenString;\n        }\n        // UNSIGNED_NUBER\n        else if(isDigit.test(ch)) {\n          state.tokenize = tokenUnsignedNuber;\n        }\n        // ERROR\n        else {\n          state.tokenize = null;\n          return \"error\";\n        }\n\n        return state.tokenize(stream, state);\n      },\n\n      indent: function(state, textAfter) {\n        if (state.tokenize != null) return CodeMirror.Pass;\n\n        var level = state.level;\n        if(/(algorithm)/.test(textAfter)) level--;\n        if(/(equation)/.test(textAfter)) level--;\n        if(/(initial algorithm)/.test(textAfter)) level--;\n        if(/(initial equation)/.test(textAfter)) level--;\n        if(/(end)/.test(textAfter)) level--;\n\n        if(level > 0)\n          return indentUnit*level;\n        else\n          return 0;\n      },\n\n      blockCommentStart: \"/*\",\n      blockCommentEnd: \"*/\",\n      lineComment: \"//\"\n    };\n  });\n\n  function words(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i=0; i<words.length; ++i)\n      obj[words[i]] = true;\n    return obj;\n  }\n\n  var modelicaKeywords = \"algorithm and annotation assert block break class connect connector constant constrainedby der discrete each else elseif elsewhen encapsulated end enumeration equation expandable extends external false final flow for function if import impure in initial inner input loop model not operator or outer output package parameter partial protected public pure record redeclare replaceable return stream then true type when while within\";\n  var modelicaBuiltin = \"abs acos actualStream asin atan atan2 cardinality ceil cos cosh delay div edge exp floor getInstanceName homotopy inStream integer log log10 mod pre reinit rem semiLinear sign sin sinh spatialDistribution sqrt tan tanh\";\n  var modelicaAtoms = \"Real Boolean Integer String\";\n\n  function def(mimes, mode) {\n    if (typeof mimes == \"string\")\n      mimes = [mimes];\n\n    var words = [];\n\n    function add(obj) {\n      if (obj)\n        for (var prop in obj)\n          if (obj.hasOwnProperty(prop))\n            words.push(prop);\n    }\n\n    add(mode.keywords);\n    add(mode.builtin);\n    add(mode.atoms);\n\n    if (words.length) {\n      mode.helperType = mimes[0];\n      CodeMirror.registerHelper(\"hintWords\", mimes[0], words);\n    }\n\n    for (var i=0; i<mimes.length; ++i)\n      CodeMirror.defineMIME(mimes[i], mode);\n  }\n\n  def([\"text/x-modelica\"], {\n    name: \"modelica\",\n    keywords: words(modelicaKeywords),\n    builtin: words(modelicaBuiltin),\n    atoms: words(modelicaAtoms)\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/nginx/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: NGINX mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"nginx.js\"></script>\n<style>.CodeMirror {background: #f8f8f8;}</style>\n    <link rel=\"stylesheet\" href=\"../../doc/docs.css\">\n  </head>\n\n  <style>\n    body {\n      margin: 0em auto;\n    }\n\n    .CodeMirror, .CodeMirror-scroll {\n      height: 600px;\n    }\n  </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">NGINX</a>\n  </ul>\n</div>\n\n<article>\n<h2>NGINX mode</h2>\n<form><textarea id=\"code\" name=\"code\" style=\"height: 800px;\">\nserver {\n  listen 173.255.219.235:80;\n  server_name website.com.au;\n  rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www\n}\n\nserver {\n  listen 173.255.219.235:443;\n  server_name website.com.au;\n  rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www\n}\n\nserver {\n\n  listen      173.255.219.235:80;\n  server_name www.website.com.au;\n\n\n\n  root        /data/www;\n  index       index.html index.php;\n\n  location / {\n    index index.html index.php;     ## Allow a static html file to be shown first\n    try_files $uri $uri/ @handler;  ## If missing pass the URI to Magento's front handler\n    expires 30d;                    ## Assume all files are cachable\n  }\n\n  ## These locations would be hidden by .htaccess normally\n  location /app/                { deny all; }\n  location /includes/           { deny all; }\n  location /lib/                { deny all; }\n  location /media/downloadable/ { deny all; }\n  location /pkginfo/            { deny all; }\n  location /report/config.xml   { deny all; }\n  location /var/                { deny all; }\n\n  location /var/export/ { ## Allow admins only to view export folder\n    auth_basic           \"Restricted\"; ## Message shown in login window\n    auth_basic_user_file /rs/passwords/testfile; ## See /etc/nginx/htpassword\n    autoindex            on;\n  }\n\n  location  /. { ## Disable .htaccess and other hidden files\n    return 404;\n  }\n\n  location @handler { ## Magento uses a common front handler\n    rewrite / /index.php;\n  }\n\n  location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler\n    rewrite ^/(.*.php)/ /$1 last;\n  }\n\n  location ~ \\.php$ {\n    if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss\n\n    fastcgi_pass   127.0.0.1:9000;\n    fastcgi_index  index.php;\n    fastcgi_param PATH_INFO $fastcgi_script_name;\n    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;\n    include        /rs/confs/nginx/fastcgi_params;\n  }\n\n}\n\n\nserver {\n\n  listen              173.255.219.235:443;\n  server_name         website.com.au www.website.com.au;\n\n  root   /data/www;\n  index index.html index.php;\n\n  ssl                 on;\n  ssl_certificate     /rs/ssl/ssl.crt;\n  ssl_certificate_key /rs/ssl/ssl.key;\n\n  ssl_session_timeout  5m;\n\n  ssl_protocols  SSLv2 SSLv3 TLSv1;\n  ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;\n  ssl_prefer_server_ciphers   on;\n\n\n\n  location / {\n    index index.html index.php; ## Allow a static html file to be shown first\n    try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler\n    expires 30d; ## Assume all files are cachable\n  }\n\n  ## These locations would be hidden by .htaccess normally\n  location /app/                { deny all; }\n  location /includes/           { deny all; }\n  location /lib/                { deny all; }\n  location /media/downloadable/ { deny all; }\n  location /pkginfo/            { deny all; }\n  location /report/config.xml   { deny all; }\n  location /var/                { deny all; }\n\n  location /var/export/ { ## Allow admins only to view export folder\n    auth_basic           \"Restricted\"; ## Message shown in login window\n    auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword\n    autoindex            on;\n  }\n\n  location  /. { ## Disable .htaccess and other hidden files\n    return 404;\n  }\n\n  location @handler { ## Magento uses a common front handler\n    rewrite / /index.php;\n  }\n\n  location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler\n    rewrite ^/(.*.php)/ /$1 last;\n  }\n\n  location ~ .php$ { ## Execute PHP scripts\n    if (!-e $request_filename) { rewrite  /index.php last; } ## Catch 404s that try_files miss\n\n    fastcgi_pass 127.0.0.1:9000;\n    fastcgi_index  index.php;\n    fastcgi_param PATH_INFO $fastcgi_script_name;\n    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;\n    include        /rs/confs/nginx/fastcgi_params;\n\n    fastcgi_param HTTPS on;\n  }\n\n}\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {});\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/nginx</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/nginx/nginx.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"nginx\", function(config) {\n\n  function words(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  var keywords = words(\n    /* ngxDirectiveControl */ \"break return rewrite set\" +\n    /* ngxDirective */ \" accept_mutex accept_mutex_delay access_log add_after_body add_before_body add_header addition_types aio alias allow ancient_browser ancient_browser_value auth_basic auth_basic_user_file auth_http auth_http_header auth_http_timeout autoindex autoindex_exact_size autoindex_localtime charset charset_types client_body_buffer_size client_body_in_file_only client_body_in_single_buffer client_body_temp_path client_body_timeout client_header_buffer_size client_header_timeout client_max_body_size connection_pool_size create_full_put_path daemon dav_access dav_methods debug_connection debug_points default_type degradation degrade deny devpoll_changes devpoll_events directio directio_alignment empty_gif env epoll_events error_log eventport_events expires fastcgi_bind fastcgi_buffer_size fastcgi_buffers fastcgi_busy_buffers_size fastcgi_cache fastcgi_cache_key fastcgi_cache_methods fastcgi_cache_min_uses fastcgi_cache_path fastcgi_cache_use_stale fastcgi_cache_valid fastcgi_catch_stderr fastcgi_connect_timeout fastcgi_hide_header fastcgi_ignore_client_abort fastcgi_ignore_headers fastcgi_index fastcgi_intercept_errors fastcgi_max_temp_file_size fastcgi_next_upstream fastcgi_param fastcgi_pass_header fastcgi_pass_request_body fastcgi_pass_request_headers fastcgi_read_timeout fastcgi_send_lowat fastcgi_send_timeout fastcgi_split_path_info fastcgi_store fastcgi_store_access fastcgi_temp_file_write_size fastcgi_temp_path fastcgi_upstream_fail_timeout fastcgi_upstream_max_fails flv geoip_city geoip_country google_perftools_profiles gzip gzip_buffers gzip_comp_level gzip_disable gzip_hash gzip_http_version gzip_min_length gzip_no_buffer gzip_proxied gzip_static gzip_types gzip_vary gzip_window if_modified_since ignore_invalid_headers image_filter image_filter_buffer image_filter_jpeg_quality image_filter_transparency imap_auth imap_capabilities imap_client_buffer index ip_hash keepalive_requests keepalive_timeout kqueue_changes kqueue_events large_client_header_buffers limit_conn limit_conn_log_level limit_rate limit_rate_after limit_req limit_req_log_level limit_req_zone limit_zone lingering_time lingering_timeout lock_file log_format log_not_found log_subrequest map_hash_bucket_size map_hash_max_size master_process memcached_bind memcached_buffer_size memcached_connect_timeout memcached_next_upstream memcached_read_timeout memcached_send_timeout memcached_upstream_fail_timeout memcached_upstream_max_fails merge_slashes min_delete_depth modern_browser modern_browser_value msie_padding msie_refresh multi_accept open_file_cache open_file_cache_errors open_file_cache_events open_file_cache_min_uses open_file_cache_valid open_log_file_cache output_buffers override_charset perl perl_modules perl_require perl_set pid pop3_auth pop3_capabilities port_in_redirect postpone_gzipping postpone_output protocol proxy proxy_bind proxy_buffer proxy_buffer_size proxy_buffering proxy_buffers proxy_busy_buffers_size proxy_cache proxy_cache_key proxy_cache_methods proxy_cache_min_uses proxy_cache_path proxy_cache_use_stale proxy_cache_valid proxy_connect_timeout proxy_headers_hash_bucket_size proxy_headers_hash_max_size proxy_hide_header proxy_ignore_client_abort proxy_ignore_headers proxy_intercept_errors proxy_max_temp_file_size proxy_method proxy_next_upstream proxy_pass_error_message proxy_pass_header proxy_pass_request_body proxy_pass_request_headers proxy_read_timeout proxy_redirect proxy_send_lowat proxy_send_timeout proxy_set_body proxy_set_header proxy_ssl_session_reuse proxy_store proxy_store_access proxy_temp_file_write_size proxy_temp_path proxy_timeout proxy_upstream_fail_timeout proxy_upstream_max_fails random_index read_ahead real_ip_header recursive_error_pages request_pool_size reset_timedout_connection resolver resolver_timeout rewrite_log rtsig_overflow_events rtsig_overflow_test rtsig_overflow_threshold rtsig_signo satisfy secure_link_secret send_lowat send_timeout sendfile sendfile_max_chunk server_name_in_redirect server_names_hash_bucket_size server_names_hash_max_size server_tokens set_real_ip_from smtp_auth smtp_capabilities smtp_client_buffer smtp_greeting_delay so_keepalive source_charset ssi ssi_ignore_recycled_buffers ssi_min_file_chunk ssi_silent_errors ssi_types ssi_value_length ssl ssl_certificate ssl_certificate_key ssl_ciphers ssl_client_certificate ssl_crl ssl_dhparam ssl_engine ssl_prefer_server_ciphers ssl_protocols ssl_session_cache ssl_session_timeout ssl_verify_client ssl_verify_depth starttls stub_status sub_filter sub_filter_once sub_filter_types tcp_nodelay tcp_nopush thread_stack_size timeout timer_resolution types_hash_bucket_size types_hash_max_size underscores_in_headers uninitialized_variable_warn use user userid userid_domain userid_expires userid_mark userid_name userid_p3p userid_path userid_service valid_referers variables_hash_bucket_size variables_hash_max_size worker_connections worker_cpu_affinity worker_priority worker_processes worker_rlimit_core worker_rlimit_nofile worker_rlimit_sigpending worker_threads working_directory xclient xml_entities xslt_stylesheet xslt_typesdrew@li229-23\"\n    );\n\n  var keywords_block = words(\n    /* ngxDirectiveBlock */ \"http mail events server types location upstream charset_map limit_except if geo map\"\n    );\n\n  var keywords_important = words(\n    /* ngxDirectiveImportant */ \"include root server server_name listen internal proxy_pass memcached_pass fastcgi_pass try_files\"\n    );\n\n  var indentUnit = config.indentUnit, type;\n  function ret(style, tp) {type = tp; return style;}\n\n  function tokenBase(stream, state) {\n\n\n    stream.eatWhile(/[\\w\\$_]/);\n\n    var cur = stream.current();\n\n\n    if (keywords.propertyIsEnumerable(cur)) {\n      return \"keyword\";\n    }\n    else if (keywords_block.propertyIsEnumerable(cur)) {\n      return \"variable-2\";\n    }\n    else if (keywords_important.propertyIsEnumerable(cur)) {\n      return \"string-2\";\n    }\n    /**/\n\n    var ch = stream.next();\n    if (ch == \"@\") {stream.eatWhile(/[\\w\\\\\\-]/); return ret(\"meta\", stream.current());}\n    else if (ch == \"/\" && stream.eat(\"*\")) {\n      state.tokenize = tokenCComment;\n      return tokenCComment(stream, state);\n    }\n    else if (ch == \"<\" && stream.eat(\"!\")) {\n      state.tokenize = tokenSGMLComment;\n      return tokenSGMLComment(stream, state);\n    }\n    else if (ch == \"=\") ret(null, \"compare\");\n    else if ((ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) return ret(null, \"compare\");\n    else if (ch == \"\\\"\" || ch == \"'\") {\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    }\n    else if (ch == \"#\") {\n      stream.skipToEnd();\n      return ret(\"comment\", \"comment\");\n    }\n    else if (ch == \"!\") {\n      stream.match(/^\\s*\\w*/);\n      return ret(\"keyword\", \"important\");\n    }\n    else if (/\\d/.test(ch)) {\n      stream.eatWhile(/[\\w.%]/);\n      return ret(\"number\", \"unit\");\n    }\n    else if (/[,.+>*\\/]/.test(ch)) {\n      return ret(null, \"select-op\");\n    }\n    else if (/[;{}:\\[\\]]/.test(ch)) {\n      return ret(null, ch);\n    }\n    else {\n      stream.eatWhile(/[\\w\\\\\\-]/);\n      return ret(\"variable\", \"variable\");\n    }\n  }\n\n  function tokenCComment(stream, state) {\n    var maybeEnd = false, ch;\n    while ((ch = stream.next()) != null) {\n      if (maybeEnd && ch == \"/\") {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return ret(\"comment\", \"comment\");\n  }\n\n  function tokenSGMLComment(stream, state) {\n    var dashes = 0, ch;\n    while ((ch = stream.next()) != null) {\n      if (dashes >= 2 && ch == \">\") {\n        state.tokenize = tokenBase;\n        break;\n      }\n      dashes = (ch == \"-\") ? dashes + 1 : 0;\n    }\n    return ret(\"comment\", \"comment\");\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == quote && !escaped)\n          break;\n        escaped = !escaped && ch == \"\\\\\";\n      }\n      if (!escaped) state.tokenize = tokenBase;\n      return ret(\"string\", \"string\");\n    };\n  }\n\n  return {\n    startState: function(base) {\n      return {tokenize: tokenBase,\n              baseIndent: base || 0,\n              stack: []};\n    },\n\n    token: function(stream, state) {\n      if (stream.eatSpace()) return null;\n      type = null;\n      var style = state.tokenize(stream, state);\n\n      var context = state.stack[state.stack.length-1];\n      if (type == \"hash\" && context == \"rule\") style = \"atom\";\n      else if (style == \"variable\") {\n        if (context == \"rule\") style = \"number\";\n        else if (!context || context == \"@media{\") style = \"tag\";\n      }\n\n      if (context == \"rule\" && /^[\\{\\};]$/.test(type))\n        state.stack.pop();\n      if (type == \"{\") {\n        if (context == \"@media\") state.stack[state.stack.length-1] = \"@media{\";\n        else state.stack.push(\"{\");\n      }\n      else if (type == \"}\") state.stack.pop();\n      else if (type == \"@media\") state.stack.push(\"@media\");\n      else if (context == \"{\" && type != \"comment\") state.stack.push(\"rule\");\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      var n = state.stack.length;\n      if (/^\\}/.test(textAfter))\n        n -= state.stack[state.stack.length-1] == \"rule\" ? 2 : 1;\n      return state.baseIndent + n * indentUnit;\n    },\n\n    electricChars: \"}\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/nginx\", \"text/x-nginx-conf\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/ntriples/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: NTriples mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"ntriples.js\"></script>\n<style type=\"text/css\">\n      .CodeMirror {\n        border: 1px solid #eee;\n      }\n    </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">NTriples</a>\n  </ul>\n</div>\n\n<article>\n<h2>NTriples mode</h2>\n<form>\n<textarea id=\"ntriples\" name=\"ntriples\">    \n<http://Sub1>     <http://pred1>     <http://obj> .\n<http://Sub2>     <http://pred2#an2> \"literal 1\" .\n<http://Sub3#an3> <http://pred3>     _:bnode3 .\n_:bnode4          <http://pred4>     \"literal 2\"@lang .\n_:bnode5          <http://pred5>     \"literal 3\"^^<http://type> .\n</textarea>\n</form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"ntriples\"), {});\n    </script>\n    <p><strong>MIME types defined:</strong> <code>text/n-triples</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/ntriples/ntriples.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/**********************************************************\n* This script provides syntax highlighting support for\n* the Ntriples format.\n* Ntriples format specification:\n*     http://www.w3.org/TR/rdf-testcases/#ntriples\n***********************************************************/\n\n/*\n    The following expression defines the defined ASF grammar transitions.\n\n    pre_subject ->\n        {\n        ( writing_subject_uri | writing_bnode_uri )\n            -> pre_predicate\n                -> writing_predicate_uri\n                    -> pre_object\n                        -> writing_object_uri | writing_object_bnode |\n                          (\n                            writing_object_literal\n                                -> writing_literal_lang | writing_literal_type\n                          )\n                            -> post_object\n                                -> BEGIN\n         } otherwise {\n             -> ERROR\n         }\n*/\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"ntriples\", function() {\n\n  var Location = {\n    PRE_SUBJECT         : 0,\n    WRITING_SUB_URI     : 1,\n    WRITING_BNODE_URI   : 2,\n    PRE_PRED            : 3,\n    WRITING_PRED_URI    : 4,\n    PRE_OBJ             : 5,\n    WRITING_OBJ_URI     : 6,\n    WRITING_OBJ_BNODE   : 7,\n    WRITING_OBJ_LITERAL : 8,\n    WRITING_LIT_LANG    : 9,\n    WRITING_LIT_TYPE    : 10,\n    POST_OBJ            : 11,\n    ERROR               : 12\n  };\n  function transitState(currState, c) {\n    var currLocation = currState.location;\n    var ret;\n\n    // Opening.\n    if     (currLocation == Location.PRE_SUBJECT && c == '<') ret = Location.WRITING_SUB_URI;\n    else if(currLocation == Location.PRE_SUBJECT && c == '_') ret = Location.WRITING_BNODE_URI;\n    else if(currLocation == Location.PRE_PRED    && c == '<') ret = Location.WRITING_PRED_URI;\n    else if(currLocation == Location.PRE_OBJ     && c == '<') ret = Location.WRITING_OBJ_URI;\n    else if(currLocation == Location.PRE_OBJ     && c == '_') ret = Location.WRITING_OBJ_BNODE;\n    else if(currLocation == Location.PRE_OBJ     && c == '\"') ret = Location.WRITING_OBJ_LITERAL;\n\n    // Closing.\n    else if(currLocation == Location.WRITING_SUB_URI     && c == '>') ret = Location.PRE_PRED;\n    else if(currLocation == Location.WRITING_BNODE_URI   && c == ' ') ret = Location.PRE_PRED;\n    else if(currLocation == Location.WRITING_PRED_URI    && c == '>') ret = Location.PRE_OBJ;\n    else if(currLocation == Location.WRITING_OBJ_URI     && c == '>') ret = Location.POST_OBJ;\n    else if(currLocation == Location.WRITING_OBJ_BNODE   && c == ' ') ret = Location.POST_OBJ;\n    else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '\"') ret = Location.POST_OBJ;\n    else if(currLocation == Location.WRITING_LIT_LANG && c == ' ') ret = Location.POST_OBJ;\n    else if(currLocation == Location.WRITING_LIT_TYPE && c == '>') ret = Location.POST_OBJ;\n\n    // Closing typed and language literal.\n    else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '@') ret = Location.WRITING_LIT_LANG;\n    else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '^') ret = Location.WRITING_LIT_TYPE;\n\n    // Spaces.\n    else if( c == ' ' &&\n             (\n               currLocation == Location.PRE_SUBJECT ||\n               currLocation == Location.PRE_PRED    ||\n               currLocation == Location.PRE_OBJ     ||\n               currLocation == Location.POST_OBJ\n             )\n           ) ret = currLocation;\n\n    // Reset.\n    else if(currLocation == Location.POST_OBJ && c == '.') ret = Location.PRE_SUBJECT;\n\n    // Error\n    else ret = Location.ERROR;\n\n    currState.location=ret;\n  }\n\n  return {\n    startState: function() {\n       return {\n           location : Location.PRE_SUBJECT,\n           uris     : [],\n           anchors  : [],\n           bnodes   : [],\n           langs    : [],\n           types    : []\n       };\n    },\n    token: function(stream, state) {\n      var ch = stream.next();\n      if(ch == '<') {\n         transitState(state, ch);\n         var parsedURI = '';\n         stream.eatWhile( function(c) { if( c != '#' && c != '>' ) { parsedURI += c; return true; } return false;} );\n         state.uris.push(parsedURI);\n         if( stream.match('#', false) ) return 'variable';\n         stream.next();\n         transitState(state, '>');\n         return 'variable';\n      }\n      if(ch == '#') {\n        var parsedAnchor = '';\n        stream.eatWhile(function(c) { if(c != '>' && c != ' ') { parsedAnchor+= c; return true; } return false;});\n        state.anchors.push(parsedAnchor);\n        return 'variable-2';\n      }\n      if(ch == '>') {\n          transitState(state, '>');\n          return 'variable';\n      }\n      if(ch == '_') {\n          transitState(state, ch);\n          var parsedBNode = '';\n          stream.eatWhile(function(c) { if( c != ' ' ) { parsedBNode += c; return true; } return false;});\n          state.bnodes.push(parsedBNode);\n          stream.next();\n          transitState(state, ' ');\n          return 'builtin';\n      }\n      if(ch == '\"') {\n          transitState(state, ch);\n          stream.eatWhile( function(c) { return c != '\"'; } );\n          stream.next();\n          if( stream.peek() != '@' && stream.peek() != '^' ) {\n              transitState(state, '\"');\n          }\n          return 'string';\n      }\n      if( ch == '@' ) {\n          transitState(state, '@');\n          var parsedLang = '';\n          stream.eatWhile(function(c) { if( c != ' ' ) { parsedLang += c; return true; } return false;});\n          state.langs.push(parsedLang);\n          stream.next();\n          transitState(state, ' ');\n          return 'string-2';\n      }\n      if( ch == '^' ) {\n          stream.next();\n          transitState(state, '^');\n          var parsedType = '';\n          stream.eatWhile(function(c) { if( c != '>' ) { parsedType += c; return true; } return false;} );\n          state.types.push(parsedType);\n          stream.next();\n          transitState(state, '>');\n          return 'variable';\n      }\n      if( ch == ' ' ) {\n          transitState(state, ch);\n      }\n      if( ch == '.' ) {\n          transitState(state, ch);\n      }\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/n-triples\", \"ntriples\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/octave/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Octave mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"octave.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Octave</a>\n  </ul>\n</div>\n\n<article>\n<h2>Octave mode</h2>\n\n    <div><textarea id=\"code\" name=\"code\">\n%numbers\n[1234 1234i 1234j]\n[.234 .234j 2.23i]\n[23e2 12E1j 123D-4 0x234]\n\n%strings\n'asda''a'\n\"asda\"\"a\"\n\n%identifiers\na + as123 - __asd__\n\n%operators\n-\n+\n=\n==\n>\n<\n>=\n<=\n&\n~\n...\nbreak zeros default margin round ones rand\nceil floor size clear zeros eye mean std cov\nerror eval function\nabs acos atan asin cos cosh exp log prod sum\nlog10 max min sign sin sinh sqrt tan reshape\nreturn\ncase switch\nelse elseif end if otherwise\ndo for while\ntry catch\nclassdef properties events methods\nglobal persistent\n\n%one line comment\n%{ multi \nline commment %}\n\n    </textarea></div>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: {name: \"octave\",\n               version: 2,\n               singleLineStringErrors: false},\n        lineNumbers: true,\n        indentUnit: 4,\n        matchBrackets: true\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-octave</code>.</p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/octave/octave.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"octave\", function() {\n  function wordRegexp(words) {\n    return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n  }\n\n  var singleOperators = new RegExp(\"^[\\\\+\\\\-\\\\*/&|\\\\^~<>!@'\\\\\\\\]\");\n  var singleDelimiters = new RegExp('^[\\\\(\\\\[\\\\{\\\\},:=;]');\n  var doubleOperators = new RegExp(\"^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\\\.[\\\\+\\\\-\\\\*/\\\\^\\\\\\\\]))\");\n  var doubleDelimiters = new RegExp(\"^((!=)|(\\\\+=)|(\\\\-=)|(\\\\*=)|(/=)|(&=)|(\\\\|=)|(\\\\^=))\");\n  var tripleDelimiters = new RegExp(\"^((>>=)|(<<=))\");\n  var expressionEnd = new RegExp(\"^[\\\\]\\\\)]\");\n  var identifiers = new RegExp(\"^[_A-Za-z\\xa1-\\uffff][_A-Za-z0-9\\xa1-\\uffff]*\");\n\n  var builtins = wordRegexp([\n    'error', 'eval', 'function', 'abs', 'acos', 'atan', 'asin', 'cos',\n    'cosh', 'exp', 'log', 'prod', 'sum', 'log10', 'max', 'min', 'sign', 'sin', 'sinh',\n    'sqrt', 'tan', 'reshape', 'break', 'zeros', 'default', 'margin', 'round', 'ones',\n    'rand', 'syn', 'ceil', 'floor', 'size', 'clear', 'zeros', 'eye', 'mean', 'std', 'cov',\n    'det', 'eig', 'inv', 'norm', 'rank', 'trace', 'expm', 'logm', 'sqrtm', 'linspace', 'plot',\n    'title', 'xlabel', 'ylabel', 'legend', 'text', 'grid', 'meshgrid', 'mesh', 'num2str',\n    'fft', 'ifft', 'arrayfun', 'cellfun', 'input', 'fliplr', 'flipud', 'ismember'\n  ]);\n\n  var keywords = wordRegexp([\n    'return', 'case', 'switch', 'else', 'elseif', 'end', 'endif', 'endfunction',\n    'if', 'otherwise', 'do', 'for', 'while', 'try', 'catch', 'classdef', 'properties', 'events',\n    'methods', 'global', 'persistent', 'endfor', 'endwhile', 'printf', 'sprintf', 'disp', 'until',\n    'continue', 'pkg'\n  ]);\n\n\n  // tokenizers\n  function tokenTranspose(stream, state) {\n    if (!stream.sol() && stream.peek() === '\\'') {\n      stream.next();\n      state.tokenize = tokenBase;\n      return 'operator';\n    }\n    state.tokenize = tokenBase;\n    return tokenBase(stream, state);\n  }\n\n\n  function tokenComment(stream, state) {\n    if (stream.match(/^.*%}/)) {\n      state.tokenize = tokenBase;\n      return 'comment';\n    };\n    stream.skipToEnd();\n    return 'comment';\n  }\n\n  function tokenBase(stream, state) {\n    // whitespaces\n    if (stream.eatSpace()) return null;\n\n    // Handle one line Comments\n    if (stream.match('%{')){\n      state.tokenize = tokenComment;\n      stream.skipToEnd();\n      return 'comment';\n    }\n\n    if (stream.match(/^[%#]/)){\n      stream.skipToEnd();\n      return 'comment';\n    }\n\n    // Handle Number Literals\n    if (stream.match(/^[0-9\\.+-]/, false)) {\n      if (stream.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/)) {\n        stream.tokenize = tokenBase;\n        return 'number'; };\n      if (stream.match(/^[+-]?\\d*\\.\\d+([EeDd][+-]?\\d+)?[ij]?/)) { return 'number'; };\n      if (stream.match(/^[+-]?\\d+([EeDd][+-]?\\d+)?[ij]?/)) { return 'number'; };\n    }\n    if (stream.match(wordRegexp(['nan','NaN','inf','Inf']))) { return 'number'; };\n\n    // Handle Strings\n    if (stream.match(/^\"([^\"]|(\"\"))*\"/)) { return 'string'; } ;\n    if (stream.match(/^'([^']|(''))*'/)) { return 'string'; } ;\n\n    // Handle words\n    if (stream.match(keywords)) { return 'keyword'; } ;\n    if (stream.match(builtins)) { return 'builtin'; } ;\n    if (stream.match(identifiers)) { return 'variable'; } ;\n\n    if (stream.match(singleOperators) || stream.match(doubleOperators)) { return 'operator'; };\n    if (stream.match(singleDelimiters) || stream.match(doubleDelimiters) || stream.match(tripleDelimiters)) { return null; };\n\n    if (stream.match(expressionEnd)) {\n      state.tokenize = tokenTranspose;\n      return null;\n    };\n\n\n    // Handle non-detected items\n    stream.next();\n    return 'error';\n  };\n\n\n  return {\n    startState: function() {\n      return {\n        tokenize: tokenBase\n      };\n    },\n\n    token: function(stream, state) {\n      var style = state.tokenize(stream, state);\n      if (style === 'number' || style === 'variable'){\n        state.tokenize = tokenTranspose;\n      }\n      return style;\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-octave\", \"octave\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/pascal/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Pascal mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"pascal.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Pascal</a>\n  </ul>\n</div>\n\n<article>\n<h2>Pascal mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\n(* Example Pascal code *)\n\nwhile a <> b do writeln('Waiting');\n \nif a > b then \n  writeln('Condition met')\nelse \n  writeln('Condition not met');\n \nfor i := 1 to 10 do \n  writeln('Iteration: ', i:1);\n \nrepeat\n  a := a + 1\nuntil a = 10;\n \ncase i of\n  0: write('zero');\n  1: write('one');\n  2: write('two')\nend;\n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        mode: \"text/x-pascal\"\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-pascal</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/pascal/pascal.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"pascal\", function() {\n  function words(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n  var keywords = words(\"and array begin case const div do downto else end file for forward integer \" +\n                       \"boolean char function goto if in label mod nil not of or packed procedure \" +\n                       \"program record repeat set string then to type until var while with\");\n  var atoms = {\"null\": true};\n\n  var isOperatorChar = /[+\\-*&%=<>!?|\\/]/;\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    if (ch == \"#\" && state.startOfLine) {\n      stream.skipToEnd();\n      return \"meta\";\n    }\n    if (ch == '\"' || ch == \"'\") {\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    }\n    if (ch == \"(\" && stream.eat(\"*\")) {\n      state.tokenize = tokenComment;\n      return tokenComment(stream, state);\n    }\n    if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n      return null;\n    }\n    if (/\\d/.test(ch)) {\n      stream.eatWhile(/[\\w\\.]/);\n      return \"number\";\n    }\n    if (ch == \"/\") {\n      if (stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n    }\n    if (isOperatorChar.test(ch)) {\n      stream.eatWhile(isOperatorChar);\n      return \"operator\";\n    }\n    stream.eatWhile(/[\\w\\$_]/);\n    var cur = stream.current();\n    if (keywords.propertyIsEnumerable(cur)) return \"keyword\";\n    if (atoms.propertyIsEnumerable(cur)) return \"atom\";\n    return \"variable\";\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, next, end = false;\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) {end = true; break;}\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (end || !escaped) state.tokenize = null;\n      return \"string\";\n    };\n  }\n\n  function tokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \")\" && maybeEnd) {\n        state.tokenize = null;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return \"comment\";\n  }\n\n  // Interface\n\n  return {\n    startState: function() {\n      return {tokenize: null};\n    },\n\n    token: function(stream, state) {\n      if (stream.eatSpace()) return null;\n      var style = (state.tokenize || tokenBase)(stream, state);\n      if (style == \"comment\" || style == \"meta\") return style;\n      return style;\n    },\n\n    electricChars: \"{}\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-pascal\", \"pascal\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/pegjs/index.html",
    "content": "<!doctype html>\n<html>\n  <head>\n    <title>CodeMirror: PEG.js Mode</title>\n    <meta charset=\"utf-8\"/>\n    <link rel=stylesheet href=\"../../doc/docs.css\">\n\n    <link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n    <script src=\"../../lib/codemirror.js\"></script>\n    <script src=\"../javascript/javascript.js\"></script>\n    <script src=\"pegjs.js\"></script>\n    <style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n  </head>\n  <body>\n    <div id=nav>\n      <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n      <ul>\n        <li><a href=\"../../index.html\">Home</a>\n        <li><a href=\"../../doc/manual.html\">Manual</a>\n        <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n      </ul>\n      <ul>\n        <li><a href=\"../index.html\">Language modes</a>\n        <li><a class=active href=\"#\">PEG.js Mode</a>\n      </ul>\n    </div>\n\n    <article>\n      <h2>PEG.js Mode</h2>\n      <form><textarea id=\"code\" name=\"code\">\n/*\n * Classic example grammar, which recognizes simple arithmetic expressions like\n * \"2*(3+4)\". The parser generated from this grammar then computes their value.\n */\n\nstart\n  = additive\n\nadditive\n  = left:multiplicative \"+\" right:additive { return left + right; }\n  / multiplicative\n\nmultiplicative\n  = left:primary \"*\" right:multiplicative { return left * right; }\n  / primary\n\nprimary\n  = integer\n  / \"(\" additive:additive \")\" { return additive; }\n\ninteger \"integer\"\n  = digits:[0-9]+ { return parseInt(digits.join(\"\"), 10); }\n\nletter = [a-z]+</textarea></form>\n      <script>\n        var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n          mode: {name: \"pegjs\"},\n          lineNumbers: true\n        });\n      </script>\n      <h3>The PEG.js Mode</h3>\n      <p> Created by Forbes Lindesay.</p>\n    </article>\n  </body>\n</html>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/pegjs/pegjs.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../javascript/javascript\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../javascript/javascript\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"pegjs\", function (config) {\n  var jsMode = CodeMirror.getMode(config, \"javascript\");\n\n  function identifier(stream) {\n    return stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);\n  }\n\n  return {\n    startState: function () {\n      return {\n        inString: false,\n        stringType: null,\n        inComment: false,\n        inChracterClass: false,\n        braced: 0,\n        lhs: true,\n        localState: null\n      };\n    },\n    token: function (stream, state) {\n      if (stream)\n\n      //check for state changes\n      if (!state.inString && !state.inComment && ((stream.peek() == '\"') || (stream.peek() == \"'\"))) {\n        state.stringType = stream.peek();\n        stream.next(); // Skip quote\n        state.inString = true; // Update state\n      }\n      if (!state.inString && !state.inComment && stream.match(/^\\/\\*/)) {\n        state.inComment = true;\n      }\n\n      //return state\n      if (state.inString) {\n        while (state.inString && !stream.eol()) {\n          if (stream.peek() === state.stringType) {\n            stream.next(); // Skip quote\n            state.inString = false; // Clear flag\n          } else if (stream.peek() === '\\\\') {\n            stream.next();\n            stream.next();\n          } else {\n            stream.match(/^.[^\\\\\\\"\\']*/);\n          }\n        }\n        return state.lhs ? \"property string\" : \"string\"; // Token style\n      } else if (state.inComment) {\n        while (state.inComment && !stream.eol()) {\n          if (stream.match(/\\*\\//)) {\n            state.inComment = false; // Clear flag\n          } else {\n            stream.match(/^.[^\\*]*/);\n          }\n        }\n        return \"comment\";\n      } else if (state.inChracterClass) {\n          while (state.inChracterClass && !stream.eol()) {\n            if (!(stream.match(/^[^\\]\\\\]+/) || stream.match(/^\\\\./))) {\n              state.inChracterClass = false;\n            }\n          }\n      } else if (stream.peek() === '[') {\n        stream.next();\n        state.inChracterClass = true;\n        return 'bracket';\n      } else if (stream.match(/^\\/\\//)) {\n        stream.skipToEnd();\n        return \"comment\";\n      } else if (state.braced || stream.peek() === '{') {\n        if (state.localState === null) {\n          state.localState = jsMode.startState();\n        }\n        var token = jsMode.token(stream, state.localState);\n        var text = stream.current();\n        if (!token) {\n          for (var i = 0; i < text.length; i++) {\n            if (text[i] === '{') {\n              state.braced++;\n            } else if (text[i] === '}') {\n              state.braced--;\n            }\n          };\n        }\n        return token;\n      } else if (identifier(stream)) {\n        if (stream.peek() === ':') {\n          return 'variable';\n        }\n        return 'variable-2';\n      } else if (['[', ']', '(', ')'].indexOf(stream.peek()) != -1) {\n        stream.next();\n        return 'bracket';\n      } else if (!stream.eatSpace()) {\n        stream.next();\n      }\n      return null;\n    }\n  };\n}, \"javascript\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/perl/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Perl mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"perl.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Perl</a>\n  </ul>\n</div>\n\n<article>\n<h2>Perl mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\n#!/usr/bin/perl\n\nuse Something qw(func1 func2);\n\n# strings\nmy $s1 = qq'single line';\nour $s2 = q(multi-\n              line);\n\n=item Something\n\tExample.\n=cut\n\nmy $html=<<'HTML'\n<html>\n<title>hi!</title>\n</html>\nHTML\n\nprint \"first,\".join(',', 'second', qq~third~);\n\nif($s1 =~ m[(?<!\\s)(l.ne)\\z]o) {\n\t$h->{$1}=$$.' predefined variables';\n\t$s2 =~ s/\\-line//ox;\n\t$s1 =~ s[\n\t\t  line ]\n\t\t[\n\t\t  block\n\t\t]ox;\n}\n\n1; # numbers and comments\n\n__END__\nsomething...\n\n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-perl</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/perl/perl.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// CodeMirror2 mode/perl/perl.js (text/x-perl) beta 0.10 (2011-11-08)\n// This is a part of CodeMirror from https://github.com/sabaca/CodeMirror_mode_perl (mail@sabaca.com)\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"perl\",function(){\n        // http://perldoc.perl.org\n        var PERL={                                      //   null - magic touch\n                                                        //   1 - keyword\n                                                        //   2 - def\n                                                        //   3 - atom\n                                                        //   4 - operator\n                                                        //   5 - variable-2 (predefined)\n                                                        //   [x,y] - x=1,2,3; y=must be defined if x{...}\n                                                //      PERL operators\n                '->'                            :   4,\n                '++'                            :   4,\n                '--'                            :   4,\n                '**'                            :   4,\n                                                        //   ! ~ \\ and unary + and -\n                '=~'                            :   4,\n                '!~'                            :   4,\n                '*'                             :   4,\n                '/'                             :   4,\n                '%'                             :   4,\n                'x'                             :   4,\n                '+'                             :   4,\n                '-'                             :   4,\n                '.'                             :   4,\n                '<<'                            :   4,\n                '>>'                            :   4,\n                                                        //   named unary operators\n                '<'                             :   4,\n                '>'                             :   4,\n                '<='                            :   4,\n                '>='                            :   4,\n                'lt'                            :   4,\n                'gt'                            :   4,\n                'le'                            :   4,\n                'ge'                            :   4,\n                '=='                            :   4,\n                '!='                            :   4,\n                '<=>'                           :   4,\n                'eq'                            :   4,\n                'ne'                            :   4,\n                'cmp'                           :   4,\n                '~~'                            :   4,\n                '&'                             :   4,\n                '|'                             :   4,\n                '^'                             :   4,\n                '&&'                            :   4,\n                '||'                            :   4,\n                '//'                            :   4,\n                '..'                            :   4,\n                '...'                           :   4,\n                '?'                             :   4,\n                ':'                             :   4,\n                '='                             :   4,\n                '+='                            :   4,\n                '-='                            :   4,\n                '*='                            :   4,  //   etc. ???\n                ','                             :   4,\n                '=>'                            :   4,\n                '::'                            :   4,\n                                                        //   list operators (rightward)\n                'not'                           :   4,\n                'and'                           :   4,\n                'or'                            :   4,\n                'xor'                           :   4,\n                                                //      PERL predefined variables (I know, what this is a paranoid idea, but may be needed for people, who learn PERL, and for me as well, ...and may be for you?;)\n                'BEGIN'                         :   [5,1],\n                'END'                           :   [5,1],\n                'PRINT'                         :   [5,1],\n                'PRINTF'                        :   [5,1],\n                'GETC'                          :   [5,1],\n                'READ'                          :   [5,1],\n                'READLINE'                      :   [5,1],\n                'DESTROY'                       :   [5,1],\n                'TIE'                           :   [5,1],\n                'TIEHANDLE'                     :   [5,1],\n                'UNTIE'                         :   [5,1],\n                'STDIN'                         :    5,\n                'STDIN_TOP'                     :    5,\n                'STDOUT'                        :    5,\n                'STDOUT_TOP'                    :    5,\n                'STDERR'                        :    5,\n                'STDERR_TOP'                    :    5,\n                '$ARG'                          :    5,\n                '$_'                            :    5,\n                '@ARG'                          :    5,\n                '@_'                            :    5,\n                '$LIST_SEPARATOR'               :    5,\n                '$\"'                            :    5,\n                '$PROCESS_ID'                   :    5,\n                '$PID'                          :    5,\n                '$$'                            :    5,\n                '$REAL_GROUP_ID'                :    5,\n                '$GID'                          :    5,\n                '$('                            :    5,\n                '$EFFECTIVE_GROUP_ID'           :    5,\n                '$EGID'                         :    5,\n                '$)'                            :    5,\n                '$PROGRAM_NAME'                 :    5,\n                '$0'                            :    5,\n                '$SUBSCRIPT_SEPARATOR'          :    5,\n                '$SUBSEP'                       :    5,\n                '$;'                            :    5,\n                '$REAL_USER_ID'                 :    5,\n                '$UID'                          :    5,\n                '$<'                            :    5,\n                '$EFFECTIVE_USER_ID'            :    5,\n                '$EUID'                         :    5,\n                '$>'                            :    5,\n                '$a'                            :    5,\n                '$b'                            :    5,\n                '$COMPILING'                    :    5,\n                '$^C'                           :    5,\n                '$DEBUGGING'                    :    5,\n                '$^D'                           :    5,\n                '${^ENCODING}'                  :    5,\n                '$ENV'                          :    5,\n                '%ENV'                          :    5,\n                '$SYSTEM_FD_MAX'                :    5,\n                '$^F'                           :    5,\n                '@F'                            :    5,\n                '${^GLOBAL_PHASE}'              :    5,\n                '$^H'                           :    5,\n                '%^H'                           :    5,\n                '@INC'                          :    5,\n                '%INC'                          :    5,\n                '$INPLACE_EDIT'                 :    5,\n                '$^I'                           :    5,\n                '$^M'                           :    5,\n                '$OSNAME'                       :    5,\n                '$^O'                           :    5,\n                '${^OPEN}'                      :    5,\n                '$PERLDB'                       :    5,\n                '$^P'                           :    5,\n                '$SIG'                          :    5,\n                '%SIG'                          :    5,\n                '$BASETIME'                     :    5,\n                '$^T'                           :    5,\n                '${^TAINT}'                     :    5,\n                '${^UNICODE}'                   :    5,\n                '${^UTF8CACHE}'                 :    5,\n                '${^UTF8LOCALE}'                :    5,\n                '$PERL_VERSION'                 :    5,\n                '$^V'                           :    5,\n                '${^WIN32_SLOPPY_STAT}'         :    5,\n                '$EXECUTABLE_NAME'              :    5,\n                '$^X'                           :    5,\n                '$1'                            :    5, // - regexp $1, $2...\n                '$MATCH'                        :    5,\n                '$&'                            :    5,\n                '${^MATCH}'                     :    5,\n                '$PREMATCH'                     :    5,\n                '$`'                            :    5,\n                '${^PREMATCH}'                  :    5,\n                '$POSTMATCH'                    :    5,\n                \"$'\"                            :    5,\n                '${^POSTMATCH}'                 :    5,\n                '$LAST_PAREN_MATCH'             :    5,\n                '$+'                            :    5,\n                '$LAST_SUBMATCH_RESULT'         :    5,\n                '$^N'                           :    5,\n                '@LAST_MATCH_END'               :    5,\n                '@+'                            :    5,\n                '%LAST_PAREN_MATCH'             :    5,\n                '%+'                            :    5,\n                '@LAST_MATCH_START'             :    5,\n                '@-'                            :    5,\n                '%LAST_MATCH_START'             :    5,\n                '%-'                            :    5,\n                '$LAST_REGEXP_CODE_RESULT'      :    5,\n                '$^R'                           :    5,\n                '${^RE_DEBUG_FLAGS}'            :    5,\n                '${^RE_TRIE_MAXBUF}'            :    5,\n                '$ARGV'                         :    5,\n                '@ARGV'                         :    5,\n                'ARGV'                          :    5,\n                'ARGVOUT'                       :    5,\n                '$OUTPUT_FIELD_SEPARATOR'       :    5,\n                '$OFS'                          :    5,\n                '$,'                            :    5,\n                '$INPUT_LINE_NUMBER'            :    5,\n                '$NR'                           :    5,\n                '$.'                            :    5,\n                '$INPUT_RECORD_SEPARATOR'       :    5,\n                '$RS'                           :    5,\n                '$/'                            :    5,\n                '$OUTPUT_RECORD_SEPARATOR'      :    5,\n                '$ORS'                          :    5,\n                '$\\\\'                           :    5,\n                '$OUTPUT_AUTOFLUSH'             :    5,\n                '$|'                            :    5,\n                '$ACCUMULATOR'                  :    5,\n                '$^A'                           :    5,\n                '$FORMAT_FORMFEED'              :    5,\n                '$^L'                           :    5,\n                '$FORMAT_PAGE_NUMBER'           :    5,\n                '$%'                            :    5,\n                '$FORMAT_LINES_LEFT'            :    5,\n                '$-'                            :    5,\n                '$FORMAT_LINE_BREAK_CHARACTERS' :    5,\n                '$:'                            :    5,\n                '$FORMAT_LINES_PER_PAGE'        :    5,\n                '$='                            :    5,\n                '$FORMAT_TOP_NAME'              :    5,\n                '$^'                            :    5,\n                '$FORMAT_NAME'                  :    5,\n                '$~'                            :    5,\n                '${^CHILD_ERROR_NATIVE}'        :    5,\n                '$EXTENDED_OS_ERROR'            :    5,\n                '$^E'                           :    5,\n                '$EXCEPTIONS_BEING_CAUGHT'      :    5,\n                '$^S'                           :    5,\n                '$WARNING'                      :    5,\n                '$^W'                           :    5,\n                '${^WARNING_BITS}'              :    5,\n                '$OS_ERROR'                     :    5,\n                '$ERRNO'                        :    5,\n                '$!'                            :    5,\n                '%OS_ERROR'                     :    5,\n                '%ERRNO'                        :    5,\n                '%!'                            :    5,\n                '$CHILD_ERROR'                  :    5,\n                '$?'                            :    5,\n                '$EVAL_ERROR'                   :    5,\n                '$@'                            :    5,\n                '$OFMT'                         :    5,\n                '$#'                            :    5,\n                '$*'                            :    5,\n                '$ARRAY_BASE'                   :    5,\n                '$['                            :    5,\n                '$OLD_PERL_VERSION'             :    5,\n                '$]'                            :    5,\n                                                //      PERL blocks\n                'if'                            :[1,1],\n                elsif                           :[1,1],\n                'else'                          :[1,1],\n                'while'                         :[1,1],\n                unless                          :[1,1],\n                'for'                           :[1,1],\n                foreach                         :[1,1],\n                                                //      PERL functions\n                'abs'                           :1,     // - absolute value function\n                accept                          :1,     // - accept an incoming socket connect\n                alarm                           :1,     // - schedule a SIGALRM\n                'atan2'                         :1,     // - arctangent of Y/X in the range -PI to PI\n                bind                            :1,     // - binds an address to a socket\n                binmode                         :1,     // - prepare binary files for I/O\n                bless                           :1,     // - create an object\n                bootstrap                       :1,     //\n                'break'                         :1,     // - break out of a \"given\" block\n                caller                          :1,     // - get context of the current subroutine call\n                chdir                           :1,     // - change your current working directory\n                chmod                           :1,     // - changes the permissions on a list of files\n                chomp                           :1,     // - remove a trailing record separator from a string\n                chop                            :1,     // - remove the last character from a string\n                chown                           :1,     // - change the owership on a list of files\n                chr                             :1,     // - get character this number represents\n                chroot                          :1,     // - make directory new root for path lookups\n                close                           :1,     // - close file (or pipe or socket) handle\n                closedir                        :1,     // - close directory handle\n                connect                         :1,     // - connect to a remote socket\n                'continue'                      :[1,1], // - optional trailing block in a while or foreach\n                'cos'                           :1,     // - cosine function\n                crypt                           :1,     // - one-way passwd-style encryption\n                dbmclose                        :1,     // - breaks binding on a tied dbm file\n                dbmopen                         :1,     // - create binding on a tied dbm file\n                'default'                       :1,     //\n                defined                         :1,     // - test whether a value, variable, or function is defined\n                'delete'                        :1,     // - deletes a value from a hash\n                die                             :1,     // - raise an exception or bail out\n                'do'                            :1,     // - turn a BLOCK into a TERM\n                dump                            :1,     // - create an immediate core dump\n                each                            :1,     // - retrieve the next key/value pair from a hash\n                endgrent                        :1,     // - be done using group file\n                endhostent                      :1,     // - be done using hosts file\n                endnetent                       :1,     // - be done using networks file\n                endprotoent                     :1,     // - be done using protocols file\n                endpwent                        :1,     // - be done using passwd file\n                endservent                      :1,     // - be done using services file\n                eof                             :1,     // - test a filehandle for its end\n                'eval'                          :1,     // - catch exceptions or compile and run code\n                'exec'                          :1,     // - abandon this program to run another\n                exists                          :1,     // - test whether a hash key is present\n                exit                            :1,     // - terminate this program\n                'exp'                           :1,     // - raise I to a power\n                fcntl                           :1,     // - file control system call\n                fileno                          :1,     // - return file descriptor from filehandle\n                flock                           :1,     // - lock an entire file with an advisory lock\n                fork                            :1,     // - create a new process just like this one\n                format                          :1,     // - declare a picture format with use by the write() function\n                formline                        :1,     // - internal function used for formats\n                getc                            :1,     // - get the next character from the filehandle\n                getgrent                        :1,     // - get next group record\n                getgrgid                        :1,     // - get group record given group user ID\n                getgrnam                        :1,     // - get group record given group name\n                gethostbyaddr                   :1,     // - get host record given its address\n                gethostbyname                   :1,     // - get host record given name\n                gethostent                      :1,     // - get next hosts record\n                getlogin                        :1,     // - return who logged in at this tty\n                getnetbyaddr                    :1,     // - get network record given its address\n                getnetbyname                    :1,     // - get networks record given name\n                getnetent                       :1,     // - get next networks record\n                getpeername                     :1,     // - find the other end of a socket connection\n                getpgrp                         :1,     // - get process group\n                getppid                         :1,     // - get parent process ID\n                getpriority                     :1,     // - get current nice value\n                getprotobyname                  :1,     // - get protocol record given name\n                getprotobynumber                :1,     // - get protocol record numeric protocol\n                getprotoent                     :1,     // - get next protocols record\n                getpwent                        :1,     // - get next passwd record\n                getpwnam                        :1,     // - get passwd record given user login name\n                getpwuid                        :1,     // - get passwd record given user ID\n                getservbyname                   :1,     // - get services record given its name\n                getservbyport                   :1,     // - get services record given numeric port\n                getservent                      :1,     // - get next services record\n                getsockname                     :1,     // - retrieve the sockaddr for a given socket\n                getsockopt                      :1,     // - get socket options on a given socket\n                given                           :1,     //\n                glob                            :1,     // - expand filenames using wildcards\n                gmtime                          :1,     // - convert UNIX time into record or string using Greenwich time\n                'goto'                          :1,     // - create spaghetti code\n                grep                            :1,     // - locate elements in a list test true against a given criterion\n                hex                             :1,     // - convert a string to a hexadecimal number\n                'import'                        :1,     // - patch a module's namespace into your own\n                index                           :1,     // - find a substring within a string\n                'int'                           :1,     // - get the integer portion of a number\n                ioctl                           :1,     // - system-dependent device control system call\n                'join'                          :1,     // - join a list into a string using a separator\n                keys                            :1,     // - retrieve list of indices from a hash\n                kill                            :1,     // - send a signal to a process or process group\n                last                            :1,     // - exit a block prematurely\n                lc                              :1,     // - return lower-case version of a string\n                lcfirst                         :1,     // - return a string with just the next letter in lower case\n                length                          :1,     // - return the number of bytes in a string\n                'link'                          :1,     // - create a hard link in the filesytem\n                listen                          :1,     // - register your socket as a server\n                local                           : 2,    // - create a temporary value for a global variable (dynamic scoping)\n                localtime                       :1,     // - convert UNIX time into record or string using local time\n                lock                            :1,     // - get a thread lock on a variable, subroutine, or method\n                'log'                           :1,     // - retrieve the natural logarithm for a number\n                lstat                           :1,     // - stat a symbolic link\n                m                               :null,  // - match a string with a regular expression pattern\n                map                             :1,     // - apply a change to a list to get back a new list with the changes\n                mkdir                           :1,     // - create a directory\n                msgctl                          :1,     // - SysV IPC message control operations\n                msgget                          :1,     // - get SysV IPC message queue\n                msgrcv                          :1,     // - receive a SysV IPC message from a message queue\n                msgsnd                          :1,     // - send a SysV IPC message to a message queue\n                my                              : 2,    // - declare and assign a local variable (lexical scoping)\n                'new'                           :1,     //\n                next                            :1,     // - iterate a block prematurely\n                no                              :1,     // - unimport some module symbols or semantics at compile time\n                oct                             :1,     // - convert a string to an octal number\n                open                            :1,     // - open a file, pipe, or descriptor\n                opendir                         :1,     // - open a directory\n                ord                             :1,     // - find a character's numeric representation\n                our                             : 2,    // - declare and assign a package variable (lexical scoping)\n                pack                            :1,     // - convert a list into a binary representation\n                'package'                       :1,     // - declare a separate global namespace\n                pipe                            :1,     // - open a pair of connected filehandles\n                pop                             :1,     // - remove the last element from an array and return it\n                pos                             :1,     // - find or set the offset for the last/next m//g search\n                print                           :1,     // - output a list to a filehandle\n                printf                          :1,     // - output a formatted list to a filehandle\n                prototype                       :1,     // - get the prototype (if any) of a subroutine\n                push                            :1,     // - append one or more elements to an array\n                q                               :null,  // - singly quote a string\n                qq                              :null,  // - doubly quote a string\n                qr                              :null,  // - Compile pattern\n                quotemeta                       :null,  // - quote regular expression magic characters\n                qw                              :null,  // - quote a list of words\n                qx                              :null,  // - backquote quote a string\n                rand                            :1,     // - retrieve the next pseudorandom number\n                read                            :1,     // - fixed-length buffered input from a filehandle\n                readdir                         :1,     // - get a directory from a directory handle\n                readline                        :1,     // - fetch a record from a file\n                readlink                        :1,     // - determine where a symbolic link is pointing\n                readpipe                        :1,     // - execute a system command and collect standard output\n                recv                            :1,     // - receive a message over a Socket\n                redo                            :1,     // - start this loop iteration over again\n                ref                             :1,     // - find out the type of thing being referenced\n                rename                          :1,     // - change a filename\n                require                         :1,     // - load in external functions from a library at runtime\n                reset                           :1,     // - clear all variables of a given name\n                'return'                        :1,     // - get out of a function early\n                reverse                         :1,     // - flip a string or a list\n                rewinddir                       :1,     // - reset directory handle\n                rindex                          :1,     // - right-to-left substring search\n                rmdir                           :1,     // - remove a directory\n                s                               :null,  // - replace a pattern with a string\n                say                             :1,     // - print with newline\n                scalar                          :1,     // - force a scalar context\n                seek                            :1,     // - reposition file pointer for random-access I/O\n                seekdir                         :1,     // - reposition directory pointer\n                select                          :1,     // - reset default output or do I/O multiplexing\n                semctl                          :1,     // - SysV semaphore control operations\n                semget                          :1,     // - get set of SysV semaphores\n                semop                           :1,     // - SysV semaphore operations\n                send                            :1,     // - send a message over a socket\n                setgrent                        :1,     // - prepare group file for use\n                sethostent                      :1,     // - prepare hosts file for use\n                setnetent                       :1,     // - prepare networks file for use\n                setpgrp                         :1,     // - set the process group of a process\n                setpriority                     :1,     // - set a process's nice value\n                setprotoent                     :1,     // - prepare protocols file for use\n                setpwent                        :1,     // - prepare passwd file for use\n                setservent                      :1,     // - prepare services file for use\n                setsockopt                      :1,     // - set some socket options\n                shift                           :1,     // - remove the first element of an array, and return it\n                shmctl                          :1,     // - SysV shared memory operations\n                shmget                          :1,     // - get SysV shared memory segment identifier\n                shmread                         :1,     // - read SysV shared memory\n                shmwrite                        :1,     // - write SysV shared memory\n                shutdown                        :1,     // - close down just half of a socket connection\n                'sin'                           :1,     // - return the sine of a number\n                sleep                           :1,     // - block for some number of seconds\n                socket                          :1,     // - create a socket\n                socketpair                      :1,     // - create a pair of sockets\n                'sort'                          :1,     // - sort a list of values\n                splice                          :1,     // - add or remove elements anywhere in an array\n                'split'                         :1,     // - split up a string using a regexp delimiter\n                sprintf                         :1,     // - formatted print into a string\n                'sqrt'                          :1,     // - square root function\n                srand                           :1,     // - seed the random number generator\n                stat                            :1,     // - get a file's status information\n                state                           :1,     // - declare and assign a state variable (persistent lexical scoping)\n                study                           :1,     // - optimize input data for repeated searches\n                'sub'                           :1,     // - declare a subroutine, possibly anonymously\n                'substr'                        :1,     // - get or alter a portion of a stirng\n                symlink                         :1,     // - create a symbolic link to a file\n                syscall                         :1,     // - execute an arbitrary system call\n                sysopen                         :1,     // - open a file, pipe, or descriptor\n                sysread                         :1,     // - fixed-length unbuffered input from a filehandle\n                sysseek                         :1,     // - position I/O pointer on handle used with sysread and syswrite\n                system                          :1,     // - run a separate program\n                syswrite                        :1,     // - fixed-length unbuffered output to a filehandle\n                tell                            :1,     // - get current seekpointer on a filehandle\n                telldir                         :1,     // - get current seekpointer on a directory handle\n                tie                             :1,     // - bind a variable to an object class\n                tied                            :1,     // - get a reference to the object underlying a tied variable\n                time                            :1,     // - return number of seconds since 1970\n                times                           :1,     // - return elapsed time for self and child processes\n                tr                              :null,  // - transliterate a string\n                truncate                        :1,     // - shorten a file\n                uc                              :1,     // - return upper-case version of a string\n                ucfirst                         :1,     // - return a string with just the next letter in upper case\n                umask                           :1,     // - set file creation mode mask\n                undef                           :1,     // - remove a variable or function definition\n                unlink                          :1,     // - remove one link to a file\n                unpack                          :1,     // - convert binary structure into normal perl variables\n                unshift                         :1,     // - prepend more elements to the beginning of a list\n                untie                           :1,     // - break a tie binding to a variable\n                use                             :1,     // - load in a module at compile time\n                utime                           :1,     // - set a file's last access and modify times\n                values                          :1,     // - return a list of the values in a hash\n                vec                             :1,     // - test or set particular bits in a string\n                wait                            :1,     // - wait for any child process to die\n                waitpid                         :1,     // - wait for a particular child process to die\n                wantarray                       :1,     // - get void vs scalar vs list context of current subroutine call\n                warn                            :1,     // - print debugging info\n                when                            :1,     //\n                write                           :1,     // - print a picture record\n                y                               :null}; // - transliterate a string\n\n        var RXstyle=\"string-2\";\n        var RXmodifiers=/[goseximacplud]/;              // NOTE: \"m\", \"s\", \"y\" and \"tr\" need to correct real modifiers for each regexp type\n\n        function tokenChain(stream,state,chain,style,tail){     // NOTE: chain.length > 2 is not working now (it's for s[...][...]geos;)\n                state.chain=null;                               //                                                          12   3tail\n                state.style=null;\n                state.tail=null;\n                state.tokenize=function(stream,state){\n                        var e=false,c,i=0;\n                        while(c=stream.next()){\n                                if(c===chain[i]&&!e){\n                                        if(chain[++i]!==undefined){\n                                                state.chain=chain[i];\n                                                state.style=style;\n                                                state.tail=tail;}\n                                        else if(tail)\n                                                stream.eatWhile(tail);\n                                        state.tokenize=tokenPerl;\n                                        return style;}\n                                e=!e&&c==\"\\\\\";}\n                        return style;};\n                return state.tokenize(stream,state);}\n\n        function tokenSOMETHING(stream,state,string){\n                state.tokenize=function(stream,state){\n                        if(stream.string==string)\n                                state.tokenize=tokenPerl;\n                        stream.skipToEnd();\n                        return \"string\";};\n                return state.tokenize(stream,state);}\n\n        function tokenPerl(stream,state){\n                if(stream.eatSpace())\n                        return null;\n                if(state.chain)\n                        return tokenChain(stream,state,state.chain,state.style,state.tail);\n                if(stream.match(/^\\-?[\\d\\.]/,false))\n                        if(stream.match(/^(\\-?(\\d*\\.\\d+(e[+-]?\\d+)?|\\d+\\.\\d*)|0x[\\da-fA-F]+|0b[01]+|\\d+(e[+-]?\\d+)?)/))\n                                return 'number';\n                if(stream.match(/^<<(?=\\w)/)){                  // NOTE: <<SOMETHING\\n...\\nSOMETHING\\n\n                        stream.eatWhile(/\\w/);\n                        return tokenSOMETHING(stream,state,stream.current().substr(2));}\n                if(stream.sol()&&stream.match(/^\\=item(?!\\w)/)){// NOTE: \\n=item...\\n=cut\\n\n                        return tokenSOMETHING(stream,state,'=cut');}\n                var ch=stream.next();\n                if(ch=='\"'||ch==\"'\"){                           // NOTE: ' or \" or <<'SOMETHING'\\n...\\nSOMETHING\\n or <<\"SOMETHING\"\\n...\\nSOMETHING\\n\n                        if(prefix(stream, 3)==\"<<\"+ch){\n                                var p=stream.pos;\n                                stream.eatWhile(/\\w/);\n                                var n=stream.current().substr(1);\n                                if(n&&stream.eat(ch))\n                                        return tokenSOMETHING(stream,state,n);\n                                stream.pos=p;}\n                        return tokenChain(stream,state,[ch],\"string\");}\n                if(ch==\"q\"){\n                        var c=look(stream, -2);\n                        if(!(c&&/\\w/.test(c))){\n                                c=look(stream, 0);\n                                if(c==\"x\"){\n                                        c=look(stream, 1);\n                                        if(c==\"(\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\")\"],RXstyle,RXmodifiers);}\n                                        if(c==\"[\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\"]\"],RXstyle,RXmodifiers);}\n                                        if(c==\"{\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\"}\"],RXstyle,RXmodifiers);}\n                                        if(c==\"<\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\">\"],RXstyle,RXmodifiers);}\n                                        if(/[\\^'\"!~\\/]/.test(c)){\n                                                eatSuffix(stream, 1);\n                                                return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}}\n                                else if(c==\"q\"){\n                                        c=look(stream, 1);\n                                        if(c==\"(\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\")\"],\"string\");}\n                                        if(c==\"[\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\"]\"],\"string\");}\n                                        if(c==\"{\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\"}\"],\"string\");}\n                                        if(c==\"<\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\">\"],\"string\");}\n                                        if(/[\\^'\"!~\\/]/.test(c)){\n                                                eatSuffix(stream, 1);\n                                                return tokenChain(stream,state,[stream.eat(c)],\"string\");}}\n                                else if(c==\"w\"){\n                                        c=look(stream, 1);\n                                        if(c==\"(\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\")\"],\"bracket\");}\n                                        if(c==\"[\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\"]\"],\"bracket\");}\n                                        if(c==\"{\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\"}\"],\"bracket\");}\n                                        if(c==\"<\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\">\"],\"bracket\");}\n                                        if(/[\\^'\"!~\\/]/.test(c)){\n                                                eatSuffix(stream, 1);\n                                                return tokenChain(stream,state,[stream.eat(c)],\"bracket\");}}\n                                else if(c==\"r\"){\n                                        c=look(stream, 1);\n                                        if(c==\"(\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\")\"],RXstyle,RXmodifiers);}\n                                        if(c==\"[\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\"]\"],RXstyle,RXmodifiers);}\n                                        if(c==\"{\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\"}\"],RXstyle,RXmodifiers);}\n                                        if(c==\"<\"){\n                                                eatSuffix(stream, 2);\n                                                return tokenChain(stream,state,[\">\"],RXstyle,RXmodifiers);}\n                                        if(/[\\^'\"!~\\/]/.test(c)){\n                                                eatSuffix(stream, 1);\n                                                return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}}\n                                else if(/[\\^'\"!~\\/(\\[{<]/.test(c)){\n                                        if(c==\"(\"){\n                                                eatSuffix(stream, 1);\n                                                return tokenChain(stream,state,[\")\"],\"string\");}\n                                        if(c==\"[\"){\n                                                eatSuffix(stream, 1);\n                                                return tokenChain(stream,state,[\"]\"],\"string\");}\n                                        if(c==\"{\"){\n                                                eatSuffix(stream, 1);\n                                                return tokenChain(stream,state,[\"}\"],\"string\");}\n                                        if(c==\"<\"){\n                                                eatSuffix(stream, 1);\n                                                return tokenChain(stream,state,[\">\"],\"string\");}\n                                        if(/[\\^'\"!~\\/]/.test(c)){\n                                                return tokenChain(stream,state,[stream.eat(c)],\"string\");}}}}\n                if(ch==\"m\"){\n                        var c=look(stream, -2);\n                        if(!(c&&/\\w/.test(c))){\n                                c=stream.eat(/[(\\[{<\\^'\"!~\\/]/);\n                                if(c){\n                                        if(/[\\^'\"!~\\/]/.test(c)){\n                                                return tokenChain(stream,state,[c],RXstyle,RXmodifiers);}\n                                        if(c==\"(\"){\n                                                return tokenChain(stream,state,[\")\"],RXstyle,RXmodifiers);}\n                                        if(c==\"[\"){\n                                                return tokenChain(stream,state,[\"]\"],RXstyle,RXmodifiers);}\n                                        if(c==\"{\"){\n                                                return tokenChain(stream,state,[\"}\"],RXstyle,RXmodifiers);}\n                                        if(c==\"<\"){\n                                                return tokenChain(stream,state,[\">\"],RXstyle,RXmodifiers);}}}}\n                if(ch==\"s\"){\n                        var c=/[\\/>\\]})\\w]/.test(look(stream, -2));\n                        if(!c){\n                                c=stream.eat(/[(\\[{<\\^'\"!~\\/]/);\n                                if(c){\n                                        if(c==\"[\")\n                                                return tokenChain(stream,state,[\"]\",\"]\"],RXstyle,RXmodifiers);\n                                        if(c==\"{\")\n                                                return tokenChain(stream,state,[\"}\",\"}\"],RXstyle,RXmodifiers);\n                                        if(c==\"<\")\n                                                return tokenChain(stream,state,[\">\",\">\"],RXstyle,RXmodifiers);\n                                        if(c==\"(\")\n                                                return tokenChain(stream,state,[\")\",\")\"],RXstyle,RXmodifiers);\n                                        return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}\n                if(ch==\"y\"){\n                        var c=/[\\/>\\]})\\w]/.test(look(stream, -2));\n                        if(!c){\n                                c=stream.eat(/[(\\[{<\\^'\"!~\\/]/);\n                                if(c){\n                                        if(c==\"[\")\n                                                return tokenChain(stream,state,[\"]\",\"]\"],RXstyle,RXmodifiers);\n                                        if(c==\"{\")\n                                                return tokenChain(stream,state,[\"}\",\"}\"],RXstyle,RXmodifiers);\n                                        if(c==\"<\")\n                                                return tokenChain(stream,state,[\">\",\">\"],RXstyle,RXmodifiers);\n                                        if(c==\"(\")\n                                                return tokenChain(stream,state,[\")\",\")\"],RXstyle,RXmodifiers);\n                                        return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}\n                if(ch==\"t\"){\n                        var c=/[\\/>\\]})\\w]/.test(look(stream, -2));\n                        if(!c){\n                                c=stream.eat(\"r\");if(c){\n                                c=stream.eat(/[(\\[{<\\^'\"!~\\/]/);\n                                if(c){\n                                        if(c==\"[\")\n                                                return tokenChain(stream,state,[\"]\",\"]\"],RXstyle,RXmodifiers);\n                                        if(c==\"{\")\n                                                return tokenChain(stream,state,[\"}\",\"}\"],RXstyle,RXmodifiers);\n                                        if(c==\"<\")\n                                                return tokenChain(stream,state,[\">\",\">\"],RXstyle,RXmodifiers);\n                                        if(c==\"(\")\n                                                return tokenChain(stream,state,[\")\",\")\"],RXstyle,RXmodifiers);\n                                        return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}}\n                if(ch==\"`\"){\n                        return tokenChain(stream,state,[ch],\"variable-2\");}\n                if(ch==\"/\"){\n                        if(!/~\\s*$/.test(prefix(stream)))\n                                return \"operator\";\n                        else\n                                return tokenChain(stream,state,[ch],RXstyle,RXmodifiers);}\n                if(ch==\"$\"){\n                        var p=stream.pos;\n                        if(stream.eatWhile(/\\d/)||stream.eat(\"{\")&&stream.eatWhile(/\\d/)&&stream.eat(\"}\"))\n                                return \"variable-2\";\n                        else\n                                stream.pos=p;}\n                if(/[$@%]/.test(ch)){\n                        var p=stream.pos;\n                        if(stream.eat(\"^\")&&stream.eat(/[A-Z]/)||!/[@$%&]/.test(look(stream, -2))&&stream.eat(/[=|\\\\\\-#?@;:&`~\\^!\\[\\]*'\"$+.,\\/<>()]/)){\n                                var c=stream.current();\n                                if(PERL[c])\n                                        return \"variable-2\";}\n                        stream.pos=p;}\n                if(/[$@%&]/.test(ch)){\n                        if(stream.eatWhile(/[\\w$\\[\\]]/)||stream.eat(\"{\")&&stream.eatWhile(/[\\w$\\[\\]]/)&&stream.eat(\"}\")){\n                                var c=stream.current();\n                                if(PERL[c])\n                                        return \"variable-2\";\n                                else\n                                        return \"variable\";}}\n                if(ch==\"#\"){\n                        if(look(stream, -2)!=\"$\"){\n                                stream.skipToEnd();\n                                return \"comment\";}}\n                if(/[:+\\-\\^*$&%@=<>!?|\\/~\\.]/.test(ch)){\n                        var p=stream.pos;\n                        stream.eatWhile(/[:+\\-\\^*$&%@=<>!?|\\/~\\.]/);\n                        if(PERL[stream.current()])\n                                return \"operator\";\n                        else\n                                stream.pos=p;}\n                if(ch==\"_\"){\n                        if(stream.pos==1){\n                                if(suffix(stream, 6)==\"_END__\"){\n                                        return tokenChain(stream,state,['\\0'],\"comment\");}\n                                else if(suffix(stream, 7)==\"_DATA__\"){\n                                        return tokenChain(stream,state,['\\0'],\"variable-2\");}\n                                else if(suffix(stream, 7)==\"_C__\"){\n                                        return tokenChain(stream,state,['\\0'],\"string\");}}}\n                if(/\\w/.test(ch)){\n                        var p=stream.pos;\n                        if(look(stream, -2)==\"{\"&&(look(stream, 0)==\"}\"||stream.eatWhile(/\\w/)&&look(stream, 0)==\"}\"))\n                                return \"string\";\n                        else\n                                stream.pos=p;}\n                if(/[A-Z]/.test(ch)){\n                        var l=look(stream, -2);\n                        var p=stream.pos;\n                        stream.eatWhile(/[A-Z_]/);\n                        if(/[\\da-z]/.test(look(stream, 0))){\n                                stream.pos=p;}\n                        else{\n                                var c=PERL[stream.current()];\n                                if(!c)\n                                        return \"meta\";\n                                if(c[1])\n                                        c=c[0];\n                                if(l!=\":\"){\n                                        if(c==1)\n                                                return \"keyword\";\n                                        else if(c==2)\n                                                return \"def\";\n                                        else if(c==3)\n                                                return \"atom\";\n                                        else if(c==4)\n                                                return \"operator\";\n                                        else if(c==5)\n                                                return \"variable-2\";\n                                        else\n                                                return \"meta\";}\n                                else\n                                        return \"meta\";}}\n                if(/[a-zA-Z_]/.test(ch)){\n                        var l=look(stream, -2);\n                        stream.eatWhile(/\\w/);\n                        var c=PERL[stream.current()];\n                        if(!c)\n                                return \"meta\";\n                        if(c[1])\n                                c=c[0];\n                        if(l!=\":\"){\n                                if(c==1)\n                                        return \"keyword\";\n                                else if(c==2)\n                                        return \"def\";\n                                else if(c==3)\n                                        return \"atom\";\n                                else if(c==4)\n                                        return \"operator\";\n                                else if(c==5)\n                                        return \"variable-2\";\n                                else\n                                        return \"meta\";}\n                        else\n                                return \"meta\";}\n                return null;}\n\n        return {\n            startState: function() {\n                return {\n                    tokenize: tokenPerl,\n                    chain: null,\n                    style: null,\n                    tail: null\n                };\n            },\n            token: function(stream, state) {\n                return (state.tokenize || tokenPerl)(stream, state);\n            },\n            lineComment: '#'\n        };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"perl\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/x-perl\", \"perl\");\n\n// it's like \"peek\", but need for look-ahead or look-behind if index < 0\nfunction look(stream, c){\n  return stream.string.charAt(stream.pos+(c||0));\n}\n\n// return a part of prefix of current stream from current position\nfunction prefix(stream, c){\n  if(c){\n    var x=stream.pos-c;\n    return stream.string.substr((x>=0?x:0),c);}\n  else{\n    return stream.string.substr(0,stream.pos-1);\n  }\n}\n\n// return a part of suffix of current stream from current position\nfunction suffix(stream, c){\n  var y=stream.string.length;\n  var x=y-stream.pos+1;\n  return stream.string.substr(stream.pos,(c&&c<y?c:x));\n}\n\n// eating and vomiting a part of stream from current position\nfunction eatSuffix(stream, c){\n  var x=stream.pos+c;\n  var y;\n  if(x<=0)\n    stream.pos=0;\n  else if(x>=(y=stream.string.length-1))\n    stream.pos=y;\n  else\n    stream.pos=x;\n}\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/php/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: PHP mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"../htmlmixed/htmlmixed.js\"></script>\n<script src=\"../xml/xml.js\"></script>\n<script src=\"../javascript/javascript.js\"></script>\n<script src=\"../css/css.js\"></script>\n<script src=\"../clike/clike.js\"></script>\n<script src=\"php.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">PHP</a>\n  </ul>\n</div>\n\n<article>\n<h2>PHP mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n<?php\n$a = array('a' => 1, 'b' => 2, 3 => 'c');\n\necho \"$a[a] ${a[3] /* } comment */} {$a[b]} \\$a[a]\";\n\nfunction hello($who) {\n\treturn \"Hello $who!\";\n}\n?>\n<p>The program says <?= hello(\"World\") ?>.</p>\n<script>\n\talert(\"And here is some JS code\"); // also colored\n</script>\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"application/x-httpd-php\",\n        indentUnit: 4,\n        indentWithTabs: true\n      });\n    </script>\n\n    <p>Simple HTML/PHP mode based on\n    the <a href=\"../clike/\">C-like</a> mode. Depends on XML,\n    JavaScript, CSS, HTMLMixed, and C-like modes.</p>\n\n    <p><strong>MIME types defined:</strong> <code>application/x-httpd-php</code> (HTML with PHP code), <code>text/x-php</code> (plain, non-wrapped PHP code).</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/php/php.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../htmlmixed/htmlmixed\"), require(\"../clike/clike\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../htmlmixed/htmlmixed\", \"../clike/clike\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function keywords(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  // Helper for stringWithEscapes\n  function matchSequence(list, end) {\n    if (list.length == 0) return stringWithEscapes(end);\n    return function (stream, state) {\n      var patterns = list[0];\n      for (var i = 0; i < patterns.length; i++) if (stream.match(patterns[i][0])) {\n        state.tokenize = matchSequence(list.slice(1), end);\n        return patterns[i][1];\n      }\n      state.tokenize = stringWithEscapes(end);\n      return \"string\";\n    };\n  }\n  function stringWithEscapes(closing) {\n    return function(stream, state) { return stringWithEscapes_(stream, state, closing); };\n  }\n  function stringWithEscapes_(stream, state, closing) {\n    // \"Complex\" syntax\n    if (stream.match(\"${\", false) || stream.match(\"{$\", false)) {\n      state.tokenize = null;\n      return \"string\";\n    }\n\n    // Simple syntax\n    if (stream.match(/^\\$[a-zA-Z_][a-zA-Z0-9_]*/)) {\n      // After the variable name there may appear array or object operator.\n      if (stream.match(\"[\", false)) {\n        // Match array operator\n        state.tokenize = matchSequence([\n          [[\"[\", null]],\n          [[/\\d[\\w\\.]*/, \"number\"],\n           [/\\$[a-zA-Z_][a-zA-Z0-9_]*/, \"variable-2\"],\n           [/[\\w\\$]+/, \"variable\"]],\n          [[\"]\", null]]\n        ], closing);\n      }\n      if (stream.match(/\\-\\>\\w/, false)) {\n        // Match object operator\n        state.tokenize = matchSequence([\n          [[\"->\", null]],\n          [[/[\\w]+/, \"variable\"]]\n        ], closing);\n      }\n      return \"variable-2\";\n    }\n\n    var escaped = false;\n    // Normal string\n    while (!stream.eol() &&\n           (escaped || (!stream.match(\"{$\", false) &&\n                        !stream.match(/^(\\$[a-zA-Z_][a-zA-Z0-9_]*|\\$\\{)/, false)))) {\n      if (!escaped && stream.match(closing)) {\n        state.tokenize = null;\n        state.tokStack.pop(); state.tokStack.pop();\n        break;\n      }\n      escaped = stream.next() == \"\\\\\" && !escaped;\n    }\n    return \"string\";\n  }\n\n  var phpKeywords = \"abstract and array as break case catch class clone const continue declare default \" +\n    \"do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final \" +\n    \"for foreach function global goto if implements interface instanceof namespace \" +\n    \"new or private protected public static switch throw trait try use var while xor \" +\n    \"die echo empty exit eval include include_once isset list require require_once return \" +\n    \"print unset __halt_compiler self static parent yield insteadof finally\";\n  var phpAtoms = \"true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__\";\n  var phpBuiltin = \"func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count\";\n  CodeMirror.registerHelper(\"hintWords\", \"php\", [phpKeywords, phpAtoms, phpBuiltin].join(\" \").split(\" \"));\n  CodeMirror.registerHelper(\"wordChars\", \"php\", /[\\w$]/);\n\n  var phpConfig = {\n    name: \"clike\",\n    helperType: \"php\",\n    keywords: keywords(phpKeywords),\n    blockKeywords: keywords(\"catch do else elseif for foreach if switch try while finally\"),\n    atoms: keywords(phpAtoms),\n    builtin: keywords(phpBuiltin),\n    multiLineStrings: true,\n    hooks: {\n      \"$\": function(stream) {\n        stream.eatWhile(/[\\w\\$_]/);\n        return \"variable-2\";\n      },\n      \"<\": function(stream, state) {\n        if (stream.match(/<</)) {\n          stream.eatWhile(/[\\w\\.]/);\n          var delim = stream.current().slice(3);\n          if (delim) {\n            (state.tokStack || (state.tokStack = [])).push(delim, 0);\n            state.tokenize = stringWithEscapes(delim);\n            return \"string\";\n          }\n        }\n        return false;\n      },\n      \"#\": function(stream) {\n        while (!stream.eol() && !stream.match(\"?>\", false)) stream.next();\n        return \"comment\";\n      },\n      \"/\": function(stream) {\n        if (stream.eat(\"/\")) {\n          while (!stream.eol() && !stream.match(\"?>\", false)) stream.next();\n          return \"comment\";\n        }\n        return false;\n      },\n      '\"': function(_stream, state) {\n        (state.tokStack || (state.tokStack = [])).push('\"', 0);\n        state.tokenize = stringWithEscapes('\"');\n        return \"string\";\n      },\n      \"{\": function(_stream, state) {\n        if (state.tokStack && state.tokStack.length)\n          state.tokStack[state.tokStack.length - 1]++;\n        return false;\n      },\n      \"}\": function(_stream, state) {\n        if (state.tokStack && state.tokStack.length > 0 &&\n            !--state.tokStack[state.tokStack.length - 1]) {\n          state.tokenize = stringWithEscapes(state.tokStack[state.tokStack.length - 2]);\n        }\n        return false;\n      }\n    }\n  };\n\n  CodeMirror.defineMode(\"php\", function(config, parserConfig) {\n    var htmlMode = CodeMirror.getMode(config, \"text/html\");\n    var phpMode = CodeMirror.getMode(config, phpConfig);\n\n    function dispatch(stream, state) {\n      var isPHP = state.curMode == phpMode;\n      if (stream.sol() && state.pending && state.pending != '\"' && state.pending != \"'\") state.pending = null;\n      if (!isPHP) {\n        if (stream.match(/^<\\?\\w*/)) {\n          state.curMode = phpMode;\n          state.curState = state.php;\n          return \"meta\";\n        }\n        if (state.pending == '\"' || state.pending == \"'\") {\n          while (!stream.eol() && stream.next() != state.pending) {}\n          var style = \"string\";\n        } else if (state.pending && stream.pos < state.pending.end) {\n          stream.pos = state.pending.end;\n          var style = state.pending.style;\n        } else {\n          var style = htmlMode.token(stream, state.curState);\n        }\n        if (state.pending) state.pending = null;\n        var cur = stream.current(), openPHP = cur.search(/<\\?/), m;\n        if (openPHP != -1) {\n          if (style == \"string\" && (m = cur.match(/[\\'\\\"]$/)) && !/\\?>/.test(cur)) state.pending = m[0];\n          else state.pending = {end: stream.pos, style: style};\n          stream.backUp(cur.length - openPHP);\n        }\n        return style;\n      } else if (isPHP && state.php.tokenize == null && stream.match(\"?>\")) {\n        state.curMode = htmlMode;\n        state.curState = state.html;\n        return \"meta\";\n      } else {\n        return phpMode.token(stream, state.curState);\n      }\n    }\n\n    return {\n      startState: function() {\n        var html = CodeMirror.startState(htmlMode), php = CodeMirror.startState(phpMode);\n        return {html: html,\n                php: php,\n                curMode: parserConfig.startOpen ? phpMode : htmlMode,\n                curState: parserConfig.startOpen ? php : html,\n                pending: null};\n      },\n\n      copyState: function(state) {\n        var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html),\n            php = state.php, phpNew = CodeMirror.copyState(phpMode, php), cur;\n        if (state.curMode == htmlMode) cur = htmlNew;\n        else cur = phpNew;\n        return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur,\n                pending: state.pending};\n      },\n\n      token: dispatch,\n\n      indent: function(state, textAfter) {\n        if ((state.curMode != phpMode && /^\\s*<\\//.test(textAfter)) ||\n            (state.curMode == phpMode && /^\\?>/.test(textAfter)))\n          return htmlMode.indent(state.html, textAfter);\n        return state.curMode.indent(state.curState, textAfter);\n      },\n\n      blockCommentStart: \"/*\",\n      blockCommentEnd: \"*/\",\n      lineComment: \"//\",\n\n      innerMode: function(state) { return {state: state.curState, mode: state.curMode}; }\n    };\n  }, \"htmlmixed\", \"clike\");\n\n  CodeMirror.defineMIME(\"application/x-httpd-php\", \"php\");\n  CodeMirror.defineMIME(\"application/x-httpd-php-open\", {name: \"php\", startOpen: true});\n  CodeMirror.defineMIME(\"text/x-php\", phpConfig);\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/php/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  var mode = CodeMirror.getMode({indentUnit: 2}, \"php\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }\n\n  MT('simple_test',\n     '[meta <?php] ' +\n     '[keyword echo] [string \"aaa\"]; ' +\n     '[meta ?>]');\n\n  MT('variable_interpolation_non_alphanumeric',\n     '[meta <?php]',\n     '[keyword echo] [string \"aaa$~$!$@$#$$$%$^$&$*$($)$.$<$>$/$\\\\$}$\\\\\\\"$:$;$?$|$[[$]]$+$=aaa\"]',\n     '[meta ?>]');\n\n  MT('variable_interpolation_digits',\n     '[meta <?php]',\n     '[keyword echo] [string \"aaa$1$2$3$4$5$6$7$8$9$0aaa\"]',\n     '[meta ?>]');\n\n  MT('variable_interpolation_simple_syntax_1',\n     '[meta <?php]',\n     '[keyword echo] [string \"aaa][variable-2 $aaa][string .aaa\"];',\n     '[meta ?>]');\n\n  MT('variable_interpolation_simple_syntax_2',\n     '[meta <?php]',\n     '[keyword echo] [string \"][variable-2 $aaaa][[','[number 2]',         ']][string aa\"];',\n     '[keyword echo] [string \"][variable-2 $aaaa][[','[number 2345]',      ']][string aa\"];',\n     '[keyword echo] [string \"][variable-2 $aaaa][[','[number 2.3]',       ']][string aa\"];',\n     '[keyword echo] [string \"][variable-2 $aaaa][[','[variable aaaaa]',   ']][string aa\"];',\n     '[keyword echo] [string \"][variable-2 $aaaa][[','[variable-2 $aaaaa]',']][string aa\"];',\n\n     '[keyword echo] [string \"1aaa][variable-2 $aaaa][[','[number 2]',         ']][string aa\"];',\n     '[keyword echo] [string \"aaa][variable-2 $aaaa][[','[number 2345]',      ']][string aa\"];',\n     '[keyword echo] [string \"aaa][variable-2 $aaaa][[','[number 2.3]',       ']][string aa\"];',\n     '[keyword echo] [string \"aaa][variable-2 $aaaa][[','[variable aaaaa]',   ']][string aa\"];',\n     '[keyword echo] [string \"aaa][variable-2 $aaaa][[','[variable-2 $aaaaa]',']][string aa\"];',\n     '[meta ?>]');\n\n  MT('variable_interpolation_simple_syntax_3',\n     '[meta <?php]',\n     '[keyword echo] [string \"aaa][variable-2 $aaaa]->[variable aaaaa][string .aaaaaa\"];',\n     '[keyword echo] [string \"aaa][variable-2 $aaaa][string ->][variable-2 $aaaaa][string .aaaaaa\"];',\n     '[keyword echo] [string \"aaa][variable-2 $aaaa]->[variable aaaaa][string [[2]].aaaaaa\"];',\n     '[keyword echo] [string \"aaa][variable-2 $aaaa]->[variable aaaaa][string ->aaaa2.aaaaaa\"];',\n     '[meta ?>]');\n\n  MT('variable_interpolation_escaping',\n     '[meta <?php] [comment /* Escaping */]',\n     '[keyword echo] [string \"aaa\\\\$aaaa->aaa.aaa\"];',\n     '[keyword echo] [string \"aaa\\\\$aaaa[[2]]aaa.aaa\"];',\n     '[keyword echo] [string \"aaa\\\\$aaaa[[asd]]aaa.aaa\"];',\n     '[keyword echo] [string \"aaa{\\\\$aaaa->aaa.aaa\"];',\n     '[keyword echo] [string \"aaa{\\\\$aaaa[[2]]aaa.aaa\"];',\n     '[keyword echo] [string \"aaa{\\\\aaaaa[[asd]]aaa.aaa\"];',\n     '[keyword echo] [string \"aaa\\\\${aaaa->aaa.aaa\"];',\n     '[keyword echo] [string \"aaa\\\\${aaaa[[2]]aaa.aaa\"];',\n     '[keyword echo] [string \"aaa\\\\${aaaa[[asd]]aaa.aaa\"];',\n     '[meta ?>]');\n\n  MT('variable_interpolation_complex_syntax_1',\n     '[meta <?php]',\n     '[keyword echo] [string \"aaa][variable-2 $]{[variable aaaa]}[string ->aaa.aaa\"];',\n     '[keyword echo] [string \"aaa][variable-2 $]{[variable-2 $aaaa]}[string ->aaa.aaa\"];',\n     '[keyword echo] [string \"aaa][variable-2 $]{[variable-2 $aaaa][[','  [number 42]',']]}[string ->aaa.aaa\"];',\n     '[keyword echo] [string \"aaa][variable-2 $]{[variable aaaa][meta ?>]aaaaaa');\n\n  MT('variable_interpolation_complex_syntax_2',\n     '[meta <?php] [comment /* Monsters */]',\n     '[keyword echo] [string \"][variable-2 $]{[variable aaa][comment /*}?>} $aaa<?php } */]}[string ->aaa.aaa\"];',\n     '[keyword echo] [string \"][variable-2 $]{[variable aaa][comment /*}?>*/][[','  [string \"aaa][variable-2 $aaa][string {}][variable-2 $]{[variable aaa]}[string \"]',']]}[string ->aaa.aaa\"];',\n     '[keyword echo] [string \"][variable-2 $]{[variable aaa][comment /*} } $aaa } */]}[string ->aaa.aaa\"];');\n\n\n  function build_recursive_monsters(nt, t, n){\n    var monsters = [t];\n    for (var i = 1; i <= n; ++i)\n      monsters[i] = nt.join(monsters[i - 1]);\n    return monsters;\n  }\n\n  var m1 = build_recursive_monsters(\n    ['[string \"][variable-2 $]{[variable aaa] [operator +] ', '}[string \"]'],\n    '[comment /* }?>} */] [string \"aaa][variable-2 $aaa][string .aaa\"]',\n    10\n  );\n\n  MT('variable_interpolation_complex_syntax_3_1',\n     '[meta <?php] [comment /* Recursive monsters */]',\n     '[keyword echo] ' + m1[4] + ';',\n     '[keyword echo] ' + m1[7] + ';',\n     '[keyword echo] ' + m1[8] + ';',\n     '[keyword echo] ' + m1[5] + ';',\n     '[keyword echo] ' + m1[1] + ';',\n     '[keyword echo] ' + m1[6] + ';',\n     '[keyword echo] ' + m1[9] + ';',\n     '[keyword echo] ' + m1[0] + ';',\n     '[keyword echo] ' + m1[10] + ';',\n     '[keyword echo] ' + m1[2] + ';',\n     '[keyword echo] ' + m1[3] + ';',\n     '[keyword echo] [string \"end\"];',\n     '[meta ?>]');\n\n  var m2 = build_recursive_monsters(\n    ['[string \"a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', '}[string .a\"]'],\n    '[comment /* }?>{{ */] [string \"a?>}{{aa][variable-2 $aaa][string .a}a?>a\"]',\n    5\n  );\n\n  MT('variable_interpolation_complex_syntax_3_2',\n     '[meta <?php] [comment /* Recursive monsters 2 */]',\n     '[keyword echo] ' + m2[0] + ';',\n     '[keyword echo] ' + m2[1] + ';',\n     '[keyword echo] ' + m2[5] + ';',\n     '[keyword echo] ' + m2[4] + ';',\n     '[keyword echo] ' + m2[2] + ';',\n     '[keyword echo] ' + m2[3] + ';',\n     '[keyword echo] [string \"end\"];',\n     '[meta ?>]');\n\n  function build_recursive_monsters_2(mf1, mf2, nt, t, n){\n    var monsters = [t];\n    for (var i = 1; i <= n; ++i)\n      monsters[i] = nt[0] + mf1[i - 1] + nt[1] + mf2[i - 1] + nt[2] + monsters[i - 1] + nt[3];\n    return monsters;\n  }\n\n  var m3 = build_recursive_monsters_2(\n    m1,\n    m2,\n    ['[string \"a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', ' [operator +] ', '}[string .a\"]'],\n    '[comment /* }?>{{ */] [string \"a?>}{{aa][variable-2 $aaa][string .a}a?>a\"]',\n    4\n  );\n\n  MT('variable_interpolation_complex_syntax_3_3',\n     '[meta <?php] [comment /* Recursive monsters 2 */]',\n     '[keyword echo] ' + m3[4] + ';',\n     '[keyword echo] ' + m3[0] + ';',\n     '[keyword echo] ' + m3[3] + ';',\n     '[keyword echo] ' + m3[1] + ';',\n     '[keyword echo] ' + m3[2] + ';',\n     '[keyword echo] [string \"end\"];',\n     '[meta ?>]');\n\n  MT(\"variable_interpolation_heredoc\",\n     \"[meta <?php]\",\n     \"[string <<<here]\",\n     \"[string doc ][variable-2 $]{[variable yay]}[string more]\",\n     \"[string here]; [comment // normal]\");\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/pig/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Pig Latin mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"pig.js\"></script>\n<style>.CodeMirror {border: 2px inset #dee;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Pig Latin</a>\n  </ul>\n</div>\n\n<article>\n<h2>Pig Latin mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n-- Apache Pig (Pig Latin Language) Demo\n/* \nThis is a multiline comment.\n*/\na = LOAD \"\\path\\to\\input\" USING PigStorage('\\t') AS (x:long, y:chararray, z:bytearray);\nb = GROUP a BY (x,y,3+4);\nc = FOREACH b GENERATE flatten(group) as (x,y), SUM(group.$2) as z;\nSTORE c INTO \"\\path\\to\\output\";\n\n--\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        indentUnit: 4,\n        mode: \"text/x-pig\"\n      });\n    </script>\n\n    <p>\n        Simple mode that handles Pig Latin language.\n    </p>\n\n    <p><strong>MIME type defined:</strong> <code>text/x-pig</code>\n    (PIG code)\n</html>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/pig/pig.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/*\n *      Pig Latin Mode for CodeMirror 2\n *      @author Prasanth Jayachandran\n *      @link   https://github.com/prasanthj/pig-codemirror-2\n *  This implementation is adapted from PL/SQL mode in CodeMirror 2.\n */\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"pig\", function(_config, parserConfig) {\n  var keywords = parserConfig.keywords,\n  builtins = parserConfig.builtins,\n  types = parserConfig.types,\n  multiLineStrings = parserConfig.multiLineStrings;\n\n  var isOperatorChar = /[*+\\-%<>=&?:\\/!|]/;\n\n  function chain(stream, state, f) {\n    state.tokenize = f;\n    return f(stream, state);\n  }\n\n  var type;\n  function ret(tp, style) {\n    type = tp;\n    return style;\n  }\n\n  function tokenComment(stream, state) {\n    var isEnd = false;\n    var ch;\n    while(ch = stream.next()) {\n      if(ch == \"/\" && isEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      isEnd = (ch == \"*\");\n    }\n    return ret(\"comment\", \"comment\");\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, next, end = false;\n      while((next = stream.next()) != null) {\n        if (next == quote && !escaped) {\n          end = true; break;\n        }\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (end || !(escaped || multiLineStrings))\n        state.tokenize = tokenBase;\n      return ret(\"string\", \"error\");\n    };\n  }\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n\n    // is a start of string?\n    if (ch == '\"' || ch == \"'\")\n      return chain(stream, state, tokenString(ch));\n    // is it one of the special chars\n    else if(/[\\[\\]{}\\(\\),;\\.]/.test(ch))\n      return ret(ch);\n    // is it a number?\n    else if(/\\d/.test(ch)) {\n      stream.eatWhile(/[\\w\\.]/);\n      return ret(\"number\", \"number\");\n    }\n    // multi line comment or operator\n    else if (ch == \"/\") {\n      if (stream.eat(\"*\")) {\n        return chain(stream, state, tokenComment);\n      }\n      else {\n        stream.eatWhile(isOperatorChar);\n        return ret(\"operator\", \"operator\");\n      }\n    }\n    // single line comment or operator\n    else if (ch==\"-\") {\n      if(stream.eat(\"-\")){\n        stream.skipToEnd();\n        return ret(\"comment\", \"comment\");\n      }\n      else {\n        stream.eatWhile(isOperatorChar);\n        return ret(\"operator\", \"operator\");\n      }\n    }\n    // is it an operator\n    else if (isOperatorChar.test(ch)) {\n      stream.eatWhile(isOperatorChar);\n      return ret(\"operator\", \"operator\");\n    }\n    else {\n      // get the while word\n      stream.eatWhile(/[\\w\\$_]/);\n      // is it one of the listed keywords?\n      if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) {\n        if (stream.eat(\")\") || stream.eat(\".\")) {\n          //keywords can be used as variables like flatten(group), group.$0 etc..\n        }\n        else {\n          return (\"keyword\", \"keyword\");\n        }\n      }\n      // is it one of the builtin functions?\n      if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase()))\n      {\n        return (\"keyword\", \"variable-2\");\n      }\n      // is it one of the listed types?\n      if (types && types.propertyIsEnumerable(stream.current().toUpperCase()))\n        return (\"keyword\", \"variable-3\");\n      // default is a 'variable'\n      return ret(\"variable\", \"pig-word\");\n    }\n  }\n\n  // Interface\n  return {\n    startState: function() {\n      return {\n        tokenize: tokenBase,\n        startOfLine: true\n      };\n    },\n\n    token: function(stream, state) {\n      if(stream.eatSpace()) return null;\n      var style = state.tokenize(stream, state);\n      return style;\n    }\n  };\n});\n\n(function() {\n  function keywords(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  // builtin funcs taken from trunk revision 1303237\n  var pBuiltins = \"ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL \"\n    + \"CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS \"\n    + \"DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG \"\n    + \"FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN \"\n    + \"INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER \"\n    + \"ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS \"\n    + \"LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA  \"\n    + \"PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE \"\n    + \"SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG \"\n    + \"TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER \";\n\n  // taken from QueryLexer.g\n  var pKeywords = \"VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP \"\n    + \"JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL \"\n    + \"PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE \"\n    + \"SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE \"\n    + \"NEQ MATCHES TRUE FALSE DUMP\";\n\n  // data types\n  var pTypes = \"BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP \";\n\n  CodeMirror.defineMIME(\"text/x-pig\", {\n    name: \"pig\",\n    builtins: keywords(pBuiltins),\n    keywords: keywords(pKeywords),\n    types: keywords(pTypes)\n  });\n\n  CodeMirror.registerHelper(\"hintWords\", \"pig\", (pBuiltins + pTypes + pKeywords).split(\" \"));\n}());\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/properties/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Properties files mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"properties.js\"></script>\n<style>.CodeMirror {border-top: 1px solid #ddd; border-bottom: 1px solid #ddd;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Properties files</a>\n  </ul>\n</div>\n\n<article>\n<h2>Properties files mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n# This is a properties file\na.key = A value\nanother.key = http://example.com\n! Exclamation mark as comment\nbut.not=Within ! A value # indeed\n   # Spaces at the beginning of a line\n   spaces.before.key=value\nbackslash=Used for multi\\\n          line entries,\\\n          that's convenient.\n# Unicode sequences\nunicode.key=This is \\u0020 Unicode\nno.multiline=here\n# Colons\ncolons : can be used too\n# Spaces\nspaces\\ in\\ keys=Not very common...\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {});\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-properties</code>,\n    <code>text/x-ini</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/properties/properties.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"properties\", function() {\n  return {\n    token: function(stream, state) {\n      var sol = stream.sol() || state.afterSection;\n      var eol = stream.eol();\n\n      state.afterSection = false;\n\n      if (sol) {\n        if (state.nextMultiline) {\n          state.inMultiline = true;\n          state.nextMultiline = false;\n        } else {\n          state.position = \"def\";\n        }\n      }\n\n      if (eol && ! state.nextMultiline) {\n        state.inMultiline = false;\n        state.position = \"def\";\n      }\n\n      if (sol) {\n        while(stream.eatSpace());\n      }\n\n      var ch = stream.next();\n\n      if (sol && (ch === \"#\" || ch === \"!\" || ch === \";\")) {\n        state.position = \"comment\";\n        stream.skipToEnd();\n        return \"comment\";\n      } else if (sol && ch === \"[\") {\n        state.afterSection = true;\n        stream.skipTo(\"]\"); stream.eat(\"]\");\n        return \"header\";\n      } else if (ch === \"=\" || ch === \":\") {\n        state.position = \"quote\";\n        return null;\n      } else if (ch === \"\\\\\" && state.position === \"quote\") {\n        if (stream.next() !== \"u\") {    // u = Unicode sequence \\u1234\n          // Multiline value\n          state.nextMultiline = true;\n        }\n      }\n\n      return state.position;\n    },\n\n    startState: function() {\n      return {\n        position : \"def\",       // Current position, \"def\", \"quote\" or \"comment\"\n        nextMultiline : false,  // Is the next line multiline value\n        inMultiline : false,    // Is the current line a multiline value\n        afterSection : false    // Did we just open a section\n      };\n    }\n\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-properties\", \"properties\");\nCodeMirror.defineMIME(\"text/x-ini\", \"properties\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/puppet/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Puppet mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"puppet.js\"></script>\n<style>\n      .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}\n      .cm-s-default span.cm-arrow { color: red; }\n    </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Puppet</a>\n  </ul>\n</div>\n\n<article>\n<h2>Puppet mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n# == Class: automysqlbackup\n#\n# Puppet module to install AutoMySQLBackup for periodic MySQL backups.\n#\n# class { 'automysqlbackup':\n#   backup_dir => '/mnt/backups',\n# }\n#\n\nclass automysqlbackup (\n  $bin_dir = $automysqlbackup::params::bin_dir,\n  $etc_dir = $automysqlbackup::params::etc_dir,\n  $backup_dir = $automysqlbackup::params::backup_dir,\n  $install_multicore = undef,\n  $config = {},\n  $config_defaults = {},\n) inherits automysqlbackup::params {\n\n# Ensure valid paths are assigned\n  validate_absolute_path($bin_dir)\n  validate_absolute_path($etc_dir)\n  validate_absolute_path($backup_dir)\n\n# Create a subdirectory in /etc for config files\n  file { $etc_dir:\n    ensure => directory,\n    owner => 'root',\n    group => 'root',\n    mode => '0750',\n  }\n\n# Create an example backup file, useful for reference\n  file { \"${etc_dir}/automysqlbackup.conf.example\":\n    ensure => file,\n    owner => 'root',\n    group => 'root',\n    mode => '0660',\n    source => 'puppet:///modules/automysqlbackup/automysqlbackup.conf',\n  }\n\n# Add files from the developer\n  file { \"${etc_dir}/AMB_README\":\n    ensure => file,\n    source => 'puppet:///modules/automysqlbackup/AMB_README',\n  }\n  file { \"${etc_dir}/AMB_LICENSE\":\n    ensure => file,\n    source => 'puppet:///modules/automysqlbackup/AMB_LICENSE',\n  }\n\n# Install the actual binary file\n  file { \"${bin_dir}/automysqlbackup\":\n    ensure => file,\n    owner => 'root',\n    group => 'root',\n    mode => '0755',\n    source => 'puppet:///modules/automysqlbackup/automysqlbackup',\n  }\n\n# Create the base backup directory\n  file { $backup_dir:\n    ensure => directory,\n    owner => 'root',\n    group => 'root',\n    mode => '0755',\n  }\n\n# If you'd like to keep your config in hiera and pass it to this class\n  if !empty($config) {\n    create_resources('automysqlbackup::backup', $config, $config_defaults)\n  }\n\n# If using RedHat family, must have the RPMforge repo's enabled\n  if $install_multicore {\n    package { ['pigz', 'pbzip2']: ensure => installed }\n  }\n\n}\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: \"text/x-puppet\",\n        matchBrackets: true,\n        indentUnit: 4\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-puppet</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/puppet/puppet.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"puppet\", function () {\n  // Stores the words from the define method\n  var words = {};\n  // Taken, mostly, from the Puppet official variable standards regex\n  var variable_regex = /({)?([a-z][a-z0-9_]*)?((::[a-z][a-z0-9_]*)*::)?[a-zA-Z0-9_]+(})?/;\n\n  // Takes a string of words separated by spaces and adds them as\n  // keys with the value of the first argument 'style'\n  function define(style, string) {\n    var split = string.split(' ');\n    for (var i = 0; i < split.length; i++) {\n      words[split[i]] = style;\n    }\n  }\n\n  // Takes commonly known puppet types/words and classifies them to a style\n  define('keyword', 'class define site node include import inherits');\n  define('keyword', 'case if else in and elsif default or');\n  define('atom', 'false true running present absent file directory undef');\n  define('builtin', 'action augeas burst chain computer cron destination dport exec ' +\n    'file filebucket group host icmp iniface interface jump k5login limit log_level ' +\n    'log_prefix macauthorization mailalias maillist mcx mount nagios_command ' +\n    'nagios_contact nagios_contactgroup nagios_host nagios_hostdependency ' +\n    'nagios_hostescalation nagios_hostextinfo nagios_hostgroup nagios_service ' +\n    'nagios_servicedependency nagios_serviceescalation nagios_serviceextinfo ' +\n    'nagios_servicegroup nagios_timeperiod name notify outiface package proto reject ' +\n    'resources router schedule scheduled_task selboolean selmodule service source ' +\n    'sport ssh_authorized_key sshkey stage state table tidy todest toports tosource ' +\n    'user vlan yumrepo zfs zone zpool');\n\n  // After finding a start of a string ('|\") this function attempts to find the end;\n  // If a variable is encountered along the way, we display it differently when it\n  // is encapsulated in a double-quoted string.\n  function tokenString(stream, state) {\n    var current, prev, found_var = false;\n    while (!stream.eol() && (current = stream.next()) != state.pending) {\n      if (current === '$' && prev != '\\\\' && state.pending == '\"') {\n        found_var = true;\n        break;\n      }\n      prev = current;\n    }\n    if (found_var) {\n      stream.backUp(1);\n    }\n    if (current == state.pending) {\n      state.continueString = false;\n    } else {\n      state.continueString = true;\n    }\n    return \"string\";\n  }\n\n  // Main function\n  function tokenize(stream, state) {\n    // Matches one whole word\n    var word = stream.match(/[\\w]+/, false);\n    // Matches attributes (i.e. ensure => present ; 'ensure' would be matched)\n    var attribute = stream.match(/(\\s+)?\\w+\\s+=>.*/, false);\n    // Matches non-builtin resource declarations\n    // (i.e. \"apache::vhost {\" or \"mycustomclasss {\" would be matched)\n    var resource = stream.match(/(\\s+)?[\\w:_]+(\\s+)?{/, false);\n    // Matches virtual and exported resources (i.e. @@user { ; and the like)\n    var special_resource = stream.match(/(\\s+)?[@]{1,2}[\\w:_]+(\\s+)?{/, false);\n\n    // Finally advance the stream\n    var ch = stream.next();\n\n    // Have we found a variable?\n    if (ch === '$') {\n      if (stream.match(variable_regex)) {\n        // If so, and its in a string, assign it a different color\n        return state.continueString ? 'variable-2' : 'variable';\n      }\n      // Otherwise return an invalid variable\n      return \"error\";\n    }\n    // Should we still be looking for the end of a string?\n    if (state.continueString) {\n      // If so, go through the loop again\n      stream.backUp(1);\n      return tokenString(stream, state);\n    }\n    // Are we in a definition (class, node, define)?\n    if (state.inDefinition) {\n      // If so, return def (i.e. for 'class myclass {' ; 'myclass' would be matched)\n      if (stream.match(/(\\s+)?[\\w:_]+(\\s+)?/)) {\n        return 'def';\n      }\n      // Match the rest it the next time around\n      stream.match(/\\s+{/);\n      state.inDefinition = false;\n    }\n    // Are we in an 'include' statement?\n    if (state.inInclude) {\n      // Match and return the included class\n      stream.match(/(\\s+)?\\S+(\\s+)?/);\n      state.inInclude = false;\n      return 'def';\n    }\n    // Do we just have a function on our hands?\n    // In 'ensure_resource(\"myclass\")', 'ensure_resource' is matched\n    if (stream.match(/(\\s+)?\\w+\\(/)) {\n      stream.backUp(1);\n      return 'def';\n    }\n    // Have we matched the prior attribute regex?\n    if (attribute) {\n      stream.match(/(\\s+)?\\w+/);\n      return 'tag';\n    }\n    // Do we have Puppet specific words?\n    if (word && words.hasOwnProperty(word)) {\n      // Negates the initial next()\n      stream.backUp(1);\n      // Acutally move the stream\n      stream.match(/[\\w]+/);\n      // We want to process these words differently\n      // do to the importance they have in Puppet\n      if (stream.match(/\\s+\\S+\\s+{/, false)) {\n        state.inDefinition = true;\n      }\n      if (word == 'include') {\n        state.inInclude = true;\n      }\n      // Returns their value as state in the prior define methods\n      return words[word];\n    }\n    // Is there a match on a reference?\n    if (/(^|\\s+)[A-Z][\\w:_]+/.test(word)) {\n      // Negate the next()\n      stream.backUp(1);\n      // Match the full reference\n      stream.match(/(^|\\s+)[A-Z][\\w:_]+/);\n      return 'def';\n    }\n    // Have we matched the prior resource regex?\n    if (resource) {\n      stream.match(/(\\s+)?[\\w:_]+/);\n      return 'def';\n    }\n    // Have we matched the prior special_resource regex?\n    if (special_resource) {\n      stream.match(/(\\s+)?[@]{1,2}/);\n      return 'special';\n    }\n    // Match all the comments. All of them.\n    if (ch == \"#\") {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n    // Have we found a string?\n    if (ch == \"'\" || ch == '\"') {\n      // Store the type (single or double)\n      state.pending = ch;\n      // Perform the looping function to find the end\n      return tokenString(stream, state);\n    }\n    // Match all the brackets\n    if (ch == '{' || ch == '}') {\n      return 'bracket';\n    }\n    // Match characters that we are going to assume\n    // are trying to be regex\n    if (ch == '/') {\n      stream.match(/.*?\\//);\n      return 'variable-3';\n    }\n    // Match all the numbers\n    if (ch.match(/[0-9]/)) {\n      stream.eatWhile(/[0-9]+/);\n      return 'number';\n    }\n    // Match the '=' and '=>' operators\n    if (ch == '=') {\n      if (stream.peek() == '>') {\n          stream.next();\n      }\n      return \"operator\";\n    }\n    // Keep advancing through all the rest\n    stream.eatWhile(/[\\w-]/);\n    // Return a blank line for everything else\n    return null;\n  }\n  // Start it all\n  return {\n    startState: function () {\n      var state = {};\n      state.inDefinition = false;\n      state.inInclude = false;\n      state.continueString = false;\n      state.pending = false;\n      return state;\n    },\n    token: function (stream, state) {\n      // Strip the spaces, but regex will account for them eitherway\n      if (stream.eatSpace()) return null;\n      // Go through the main process\n      return tokenize(stream, state);\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-puppet\", \"puppet\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/python/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Python mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"python.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Python</a>\n  </ul>\n</div>\n\n<article>\n<h2>Python mode</h2>\n\n    <div><textarea id=\"code\" name=\"code\">\n# Literals\n1234\n0.0e101\n.123\n0b01010011100\n0o01234567\n0x0987654321abcdef\n7\n2147483647\n3L\n79228162514264337593543950336L\n0x100000000L\n79228162514264337593543950336\n0xdeadbeef\n3.14j\n10.j\n10j\n.001j\n1e100j\n3.14e-10j\n\n\n# String Literals\n'For\\''\n\"God\\\"\"\n\"\"\"so loved\nthe world\"\"\"\n'''that he gave\nhis only begotten\\' '''\n'that whosoever believeth \\\nin him'\n''\n\n# Identifiers\n__a__\na.b\na.b.c\n\n#Unicode identifiers on Python3\n# a = x\\ddot\na⃗ = ẍ\n# a = v\\dot\na⃗ = v̇\n\n#F\\vec = m \\cdot a\\vec\nF⃗ = m•a⃗ \n\n# Operators\n+ - * / % & | ^ ~ < >\n== != <= >= <> << >> // **\nand or not in is\n\n#infix matrix multiplication operator (PEP 465)\nA @ B\n\n# Delimiters\n() [] {} , : ` = ; @ .  # Note that @ and . require the proper context on Python 2.\n+= -= *= /= %= &= |= ^=\n//= >>= <<= **=\n\n# Keywords\nas assert break class continue def del elif else except\nfinally for from global if import lambda pass raise\nreturn try while with yield\n\n# Python 2 Keywords (otherwise Identifiers)\nexec print\n\n# Python 3 Keywords (otherwise Identifiers)\nnonlocal\n\n# Types\nbool classmethod complex dict enumerate float frozenset int list object\nproperty reversed set slice staticmethod str super tuple type\n\n# Python 2 Types (otherwise Identifiers)\nbasestring buffer file long unicode xrange\n\n# Python 3 Types (otherwise Identifiers)\nbytearray bytes filter map memoryview open range zip\n\n# Some Example code\nimport os\nfrom package import ParentClass\n\n@nonsenseDecorator\ndef doesNothing():\n    pass\n\nclass ExampleClass(ParentClass):\n    @staticmethod\n    def example(inputStr):\n        a = list(inputStr)\n        a.reverse()\n        return ''.join(a)\n\n    def __init__(self, mixin = 'Hello'):\n        self.mixin = mixin\n\n</textarea></div>\n\n\n<h2>Cython mode</h2>\n\n<div><textarea id=\"code-cython\" name=\"code-cython\">\n\nimport numpy as np\ncimport cython\nfrom libc.math cimport sqrt\n\n@cython.boundscheck(False)\n@cython.wraparound(False)\ndef pairwise_cython(double[:, ::1] X):\n    cdef int M = X.shape[0]\n    cdef int N = X.shape[1]\n    cdef double tmp, d\n    cdef double[:, ::1] D = np.empty((M, M), dtype=np.float64)\n    for i in range(M):\n        for j in range(M):\n            d = 0.0\n            for k in range(N):\n                tmp = X[i, k] - X[j, k]\n                d += tmp * tmp\n            D[i, j] = sqrt(d)\n    return np.asarray(D)\n\n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: {name: \"python\",\n               version: 3,\n               singleLineStringErrors: false},\n        lineNumbers: true,\n        indentUnit: 4,\n        matchBrackets: true\n    });\n\n    CodeMirror.fromTextArea(document.getElementById(\"code-cython\"), {\n        mode: {name: \"text/x-cython\",\n               version: 2,\n               singleLineStringErrors: false},\n        lineNumbers: true,\n        indentUnit: 4,\n        matchBrackets: true\n      });\n    </script>\n    <h2>Configuration Options for Python mode:</h2>\n    <ul>\n      <li>version - 2/3 - The version of Python to recognize.  Default is 2.</li>\n      <li>singleLineStringErrors - true/false - If you have a single-line string that is not terminated at the end of the line, this will show subsequent lines as errors if true, otherwise it will consider the newline as the end of the string. Default is false.</li>\n      <li>hangingIndent - int - If you want to write long arguments to a function starting on a new line, how much that line should be indented. Defaults to one normal indentation unit.</li>\n    </ul>\n    <h2>Advanced Configuration Options:</h2>\n    <p>Usefull for superset of python syntax like Enthought enaml, IPython magics and  questionmark help</p>\n    <ul>\n      <li>singleOperators - RegEx - Regular Expression for single operator matching,  default : <pre>^[\\\\+\\\\-\\\\*/%&amp;|\\\\^~&lt;&gt;!]</pre> including <pre>@</pre> on Python 3</li>\n      <li>singleDelimiters - RegEx - Regular Expression for single delimiter matching, default :  <pre>^[\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}@,:`=;\\\\.]</pre></li>\n      <li>doubleOperators - RegEx - Regular Expression for double operators matching, default : <pre>^((==)|(!=)|(&lt;=)|(&gt;=)|(&lt;&gt;)|(&lt;&lt;)|(&gt;&gt;)|(//)|(\\\\*\\\\*))</pre></li>\n      <li>doubleDelimiters - RegEx - Regular Expressoin for double delimiters matching, default : <pre>^((\\\\+=)|(\\\\-=)|(\\\\*=)|(%=)|(/=)|(&amp;=)|(\\\\|=)|(\\\\^=))</pre></li>\n      <li>tripleDelimiters - RegEx - Regular Expression for triple delimiters matching, default : <pre>^((//=)|(&gt;&gt;=)|(&lt;&lt;=)|(\\\\*\\\\*=))</pre></li>\n      <li>identifiers - RegEx - Regular Expression for identifier, default : <pre>^[_A-Za-z][_A-Za-z0-9]*</pre> on Python 2 and <pre>^[_A-Za-z\\u00A1-\\uFFFF][_A-Za-z0-9\\u00A1-\\uFFFF]*</pre> on Python 3.</li>\n      <li>extra_keywords - list of string - List of extra words ton consider as keywords</li>\n      <li>extra_builtins - list of string - List of extra words ton consider as builtins</li>\n    </ul>\n\n\n    <p><strong>MIME types defined:</strong> <code>text/x-python</code> and <code>text/x-cython</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/python/python.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  function wordRegexp(words) {\n    return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n  }\n\n  var wordOperators = wordRegexp([\"and\", \"or\", \"not\", \"is\"]);\n  var commonKeywords = [\"as\", \"assert\", \"break\", \"class\", \"continue\",\n                        \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\",\n                        \"for\", \"from\", \"global\", \"if\", \"import\",\n                        \"lambda\", \"pass\", \"raise\", \"return\",\n                        \"try\", \"while\", \"with\", \"yield\", \"in\"];\n  var commonBuiltins = [\"abs\", \"all\", \"any\", \"bin\", \"bool\", \"bytearray\", \"callable\", \"chr\",\n                        \"classmethod\", \"compile\", \"complex\", \"delattr\", \"dict\", \"dir\", \"divmod\",\n                        \"enumerate\", \"eval\", \"filter\", \"float\", \"format\", \"frozenset\",\n                        \"getattr\", \"globals\", \"hasattr\", \"hash\", \"help\", \"hex\", \"id\",\n                        \"input\", \"int\", \"isinstance\", \"issubclass\", \"iter\", \"len\",\n                        \"list\", \"locals\", \"map\", \"max\", \"memoryview\", \"min\", \"next\",\n                        \"object\", \"oct\", \"open\", \"ord\", \"pow\", \"property\", \"range\",\n                        \"repr\", \"reversed\", \"round\", \"set\", \"setattr\", \"slice\",\n                        \"sorted\", \"staticmethod\", \"str\", \"sum\", \"super\", \"tuple\",\n                        \"type\", \"vars\", \"zip\", \"__import__\", \"NotImplemented\",\n                        \"Ellipsis\", \"__debug__\"];\n  var py2 = {builtins: [\"apply\", \"basestring\", \"buffer\", \"cmp\", \"coerce\", \"execfile\",\n                        \"file\", \"intern\", \"long\", \"raw_input\", \"reduce\", \"reload\",\n                        \"unichr\", \"unicode\", \"xrange\", \"False\", \"True\", \"None\"],\n             keywords: [\"exec\", \"print\"]};\n  var py3 = {builtins: [\"ascii\", \"bytes\", \"exec\", \"print\"],\n             keywords: [\"nonlocal\", \"False\", \"True\", \"None\"]};\n\n  CodeMirror.registerHelper(\"hintWords\", \"python\", commonKeywords.concat(commonBuiltins));\n\n  function top(state) {\n    return state.scopes[state.scopes.length - 1];\n  }\n\n  CodeMirror.defineMode(\"python\", function(conf, parserConf) {\n    var ERRORCLASS = \"error\";\n\n    var singleDelimiters = parserConf.singleDelimiters || new RegExp(\"^[\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}@,:`=;\\\\.]\");\n    var doubleOperators = parserConf.doubleOperators || new RegExp(\"^((==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\\\*\\\\*))\");\n    var doubleDelimiters = parserConf.doubleDelimiters || new RegExp(\"^((\\\\+=)|(\\\\-=)|(\\\\*=)|(%=)|(/=)|(&=)|(\\\\|=)|(\\\\^=))\");\n    var tripleDelimiters = parserConf.tripleDelimiters || new RegExp(\"^((//=)|(>>=)|(<<=)|(\\\\*\\\\*=))\");\n\n    if (parserConf.version && parseInt(parserConf.version, 10) == 3){\n        // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator\n        var singleOperators = parserConf.singleOperators || new RegExp(\"^[\\\\+\\\\-\\\\*/%&|\\\\^~<>!@]\");\n        var identifiers = parserConf.identifiers|| new RegExp(\"^[_A-Za-z\\u00A1-\\uFFFF][_A-Za-z0-9\\u00A1-\\uFFFF]*\");\n    } else {\n        var singleOperators = parserConf.singleOperators || new RegExp(\"^[\\\\+\\\\-\\\\*/%&|\\\\^~<>!]\");\n        var identifiers = parserConf.identifiers|| new RegExp(\"^[_A-Za-z][_A-Za-z0-9]*\");\n    }\n\n    var hangingIndent = parserConf.hangingIndent || conf.indentUnit;\n\n    var myKeywords = commonKeywords, myBuiltins = commonBuiltins;\n    if(parserConf.extra_keywords != undefined){\n      myKeywords = myKeywords.concat(parserConf.extra_keywords);\n    }\n    if(parserConf.extra_builtins != undefined){\n      myBuiltins = myBuiltins.concat(parserConf.extra_builtins);\n    }\n    if (parserConf.version && parseInt(parserConf.version, 10) == 3) {\n      myKeywords = myKeywords.concat(py3.keywords);\n      myBuiltins = myBuiltins.concat(py3.builtins);\n      var stringPrefixes = new RegExp(\"^(([rb]|(br))?('{3}|\\\"{3}|['\\\"]))\", \"i\");\n    } else {\n      myKeywords = myKeywords.concat(py2.keywords);\n      myBuiltins = myBuiltins.concat(py2.builtins);\n      var stringPrefixes = new RegExp(\"^(([rub]|(ur)|(br))?('{3}|\\\"{3}|['\\\"]))\", \"i\");\n    }\n    var keywords = wordRegexp(myKeywords);\n    var builtins = wordRegexp(myBuiltins);\n\n    // tokenizers\n    function tokenBase(stream, state) {\n      // Handle scope changes\n      if (stream.sol() && top(state).type == \"py\") {\n        var scopeOffset = top(state).offset;\n        if (stream.eatSpace()) {\n          var lineOffset = stream.indentation();\n          if (lineOffset > scopeOffset)\n            pushScope(stream, state, \"py\");\n          else if (lineOffset < scopeOffset && dedent(stream, state))\n            state.errorToken = true;\n          return null;\n        } else {\n          var style = tokenBaseInner(stream, state);\n          if (scopeOffset > 0 && dedent(stream, state))\n            style += \" \" + ERRORCLASS;\n          return style;\n        }\n      }\n      return tokenBaseInner(stream, state);\n    }\n\n    function tokenBaseInner(stream, state) {\n      if (stream.eatSpace()) return null;\n\n      var ch = stream.peek();\n\n      // Handle Comments\n      if (ch == \"#\") {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n\n      // Handle Number Literals\n      if (stream.match(/^[0-9\\.]/, false)) {\n        var floatLiteral = false;\n        // Floats\n        if (stream.match(/^\\d*\\.\\d+(e[\\+\\-]?\\d+)?/i)) { floatLiteral = true; }\n        if (stream.match(/^\\d+\\.\\d*/)) { floatLiteral = true; }\n        if (stream.match(/^\\.\\d+/)) { floatLiteral = true; }\n        if (floatLiteral) {\n          // Float literals may be \"imaginary\"\n          stream.eat(/J/i);\n          return \"number\";\n        }\n        // Integers\n        var intLiteral = false;\n        // Hex\n        if (stream.match(/^0x[0-9a-f]+/i)) intLiteral = true;\n        // Binary\n        if (stream.match(/^0b[01]+/i)) intLiteral = true;\n        // Octal\n        if (stream.match(/^0o[0-7]+/i)) intLiteral = true;\n        // Decimal\n        if (stream.match(/^[1-9]\\d*(e[\\+\\-]?\\d+)?/)) {\n          // Decimal literals may be \"imaginary\"\n          stream.eat(/J/i);\n          // TODO - Can you have imaginary longs?\n          intLiteral = true;\n        }\n        // Zero by itself with no other piece of number.\n        if (stream.match(/^0(?![\\dx])/i)) intLiteral = true;\n        if (intLiteral) {\n          // Integer literals may be \"long\"\n          stream.eat(/L/i);\n          return \"number\";\n        }\n      }\n\n      // Handle Strings\n      if (stream.match(stringPrefixes)) {\n        state.tokenize = tokenStringFactory(stream.current());\n        return state.tokenize(stream, state);\n      }\n\n      // Handle operators and Delimiters\n      if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters))\n        return null;\n\n      if (stream.match(doubleOperators)\n          || stream.match(singleOperators)\n          || stream.match(wordOperators))\n        return \"operator\";\n\n      if (stream.match(singleDelimiters))\n        return null;\n\n      if (stream.match(keywords))\n        return \"keyword\";\n\n      if (stream.match(builtins))\n        return \"builtin\";\n\n      if (stream.match(/^(self|cls)\\b/))\n        return \"variable-2\";\n\n      if (stream.match(identifiers)) {\n        if (state.lastToken == \"def\" || state.lastToken == \"class\")\n          return \"def\";\n        return \"variable\";\n      }\n\n      // Handle non-detected items\n      stream.next();\n      return ERRORCLASS;\n    }\n\n    function tokenStringFactory(delimiter) {\n      while (\"rub\".indexOf(delimiter.charAt(0).toLowerCase()) >= 0)\n        delimiter = delimiter.substr(1);\n\n      var singleline = delimiter.length == 1;\n      var OUTCLASS = \"string\";\n\n      function tokenString(stream, state) {\n        while (!stream.eol()) {\n          stream.eatWhile(/[^'\"\\\\]/);\n          if (stream.eat(\"\\\\\")) {\n            stream.next();\n            if (singleline && stream.eol())\n              return OUTCLASS;\n          } else if (stream.match(delimiter)) {\n            state.tokenize = tokenBase;\n            return OUTCLASS;\n          } else {\n            stream.eat(/['\"]/);\n          }\n        }\n        if (singleline) {\n          if (parserConf.singleLineStringErrors)\n            return ERRORCLASS;\n          else\n            state.tokenize = tokenBase;\n        }\n        return OUTCLASS;\n      }\n      tokenString.isString = true;\n      return tokenString;\n    }\n\n    function pushScope(stream, state, type) {\n      var offset = 0, align = null;\n      if (type == \"py\") {\n        while (top(state).type != \"py\")\n          state.scopes.pop();\n      }\n      offset = top(state).offset + (type == \"py\" ? conf.indentUnit : hangingIndent);\n      if (type != \"py\" && !stream.match(/^(\\s|#.*)*$/, false))\n        align = stream.column() + 1;\n      state.scopes.push({offset: offset, type: type, align: align});\n    }\n\n    function dedent(stream, state) {\n      var indented = stream.indentation();\n      while (top(state).offset > indented) {\n        if (top(state).type != \"py\") return true;\n        state.scopes.pop();\n      }\n      return top(state).offset != indented;\n    }\n\n    function tokenLexer(stream, state) {\n      var style = state.tokenize(stream, state);\n      var current = stream.current();\n\n      // Handle '.' connected identifiers\n      if (current == \".\") {\n        style = stream.match(identifiers, false) ? null : ERRORCLASS;\n        if (style == null && state.lastStyle == \"meta\") {\n          // Apply 'meta' style to '.' connected identifiers when\n          // appropriate.\n          style = \"meta\";\n        }\n        return style;\n      }\n\n      // Handle decorators\n      if (current == \"@\"){\n        if(parserConf.version && parseInt(parserConf.version, 10) == 3){\n            return stream.match(identifiers, false) ? \"meta\" : \"operator\";\n        } else {\n            return stream.match(identifiers, false) ? \"meta\" : ERRORCLASS;\n        }\n      }\n\n      if ((style == \"variable\" || style == \"builtin\")\n          && state.lastStyle == \"meta\")\n        style = \"meta\";\n\n      // Handle scope changes.\n      if (current == \"pass\" || current == \"return\")\n        state.dedent += 1;\n\n      if (current == \"lambda\") state.lambda = true;\n      if (current == \":\" && !state.lambda && top(state).type == \"py\")\n        pushScope(stream, state, \"py\");\n\n      var delimiter_index = current.length == 1 ? \"[({\".indexOf(current) : -1;\n      if (delimiter_index != -1)\n        pushScope(stream, state, \"])}\".slice(delimiter_index, delimiter_index+1));\n\n      delimiter_index = \"])}\".indexOf(current);\n      if (delimiter_index != -1) {\n        if (top(state).type == current) state.scopes.pop();\n        else return ERRORCLASS;\n      }\n      if (state.dedent > 0 && stream.eol() && top(state).type == \"py\") {\n        if (state.scopes.length > 1) state.scopes.pop();\n        state.dedent -= 1;\n      }\n\n      return style;\n    }\n\n    var external = {\n      startState: function(basecolumn) {\n        return {\n          tokenize: tokenBase,\n          scopes: [{offset: basecolumn || 0, type: \"py\", align: null}],\n          lastStyle: null,\n          lastToken: null,\n          lambda: false,\n          dedent: 0\n        };\n      },\n\n      token: function(stream, state) {\n        var addErr = state.errorToken;\n        if (addErr) state.errorToken = false;\n        var style = tokenLexer(stream, state);\n\n        state.lastStyle = style;\n\n        var current = stream.current();\n        if (current && style)\n          state.lastToken = current;\n\n        if (stream.eol() && state.lambda)\n          state.lambda = false;\n        return addErr ? style + \" \" + ERRORCLASS : style;\n      },\n\n      indent: function(state, textAfter) {\n        if (state.tokenize != tokenBase)\n          return state.tokenize.isString ? CodeMirror.Pass : 0;\n\n        var scope = top(state);\n        var closing = textAfter && textAfter.charAt(0) == scope.type;\n        if (scope.align != null)\n          return scope.align - (closing ? 1 : 0);\n        else if (closing && state.scopes.length > 1)\n          return state.scopes[state.scopes.length - 2].offset;\n        else\n          return scope.offset;\n      },\n\n      lineComment: \"#\",\n      fold: \"indent\"\n    };\n    return external;\n  });\n\n  CodeMirror.defineMIME(\"text/x-python\", \"python\");\n\n  var words = function(str) { return str.split(\" \"); };\n\n  CodeMirror.defineMIME(\"text/x-cython\", {\n    name: \"python\",\n    extra_keywords: words(\"by cdef cimport cpdef ctypedef enum except\"+\n                          \"extern gil include nogil property public\"+\n                          \"readonly struct union DEF IF ELIF ELSE\")\n  });\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/q/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Q mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"q.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Q</a>\n  </ul>\n</div>\n\n<article>\n<h2>Q mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\n/ utilities to quickly load a csv file - for more exhaustive analysis of the csv contents see csvguess.q\n/ 2009.09.20 - updated to match latest csvguess.q \n\n/ .csv.colhdrs[file] - return a list of colhdrs from file\n/ info:.csv.info[file] - return a table of information about the file\n/ columns are: \n/\tc - column name; ci - column index; t - load type; mw - max width; \n/\tdchar - distinct characters in values; rule - rule that caught the type\n/\tmaybe - needs checking, _could_ be say a date, but perhaps just a float?\n/ .csv.info0[file;onlycols] - like .csv.info except that it only analyses <onlycols>\n/ example:\n/\tinfo:.csv.info0[file;(.csv.colhdrs file)like\"*price\"]\n/\tinfo:.csv.infolike[file;\"*price\"]\n/\tshow delete from info where t=\" \"\n/ .csv.data[file;info] - use the info from .csv.info to read the data\n/ .csv.data10[file;info] - like .csv.data but only returns the first 10 rows\n/ bulkload[file;info] - bulk loads file into table DATA (which must be already defined :: DATA:() )\n/ .csv.read[file]/read10[file] - for when you don't care about checking/tweaking the <info> before reading \n\n\\d .csv\nDELIM:\",\"\nZAPHDRS:0b / lowercase and remove _ from colhdrs (junk characters are always removed)\nWIDTHHDR:25000 / number of characters read to get the header\nREADLINES:222 / number of lines read and used to guess the types\nSYMMAXWIDTH:11 / character columns narrower than this are stored as symbols\nSYMMAXGR:10 / max symbol granularity% before we give up and keep as a * string\nFORCECHARWIDTH:30 / every field (of any type) with values this wide or more is forced to character \"*\"\nDISCARDEMPTY:0b / completely ignore empty columns if true else set them to \"C\"\nCHUNKSIZE:50000000 / used in fs2 (modified .Q.fs)\n\nk)nameltrim:{$[~@x;.z.s'x;~(*x)in aA:.Q.a,.Q.A;(+/&\\~x in aA)_x;x]}\nk)fs2:{[f;s]((-7!s)>){[f;s;x]i:1+last@&0xa=r:1:(s;x;CHUNKSIZE);f@`\\:i#r;x+i}[f;s]/0j}\ncleanhdrs:{{$[ZAPHDRS;lower x except\"_\";x]}x where x in DELIM,.Q.an}\ncancast:{nw:x$\"\";if[not x in\"BXCS\";nw:(min 0#;max 0#;::)@\\:nw];$[not any nw in x$(11&count y)#y;$[11<count y;not any nw in x$y;1b];0b]}\n\nread:{[file]data[file;info[file]]}  \nread10:{[file]data10[file;info[file]]}  \n\ncolhdrs:{[file]\n\t`$nameltrim DELIM vs cleanhdrs first read0(file;0;1+first where 0xa=read1(file;0;WIDTHHDR))}\ndata:{[file;info]\n\t(exec c from info where not t=\" \")xcol(exec t from info;enlist DELIM)0:file}\ndata10:{[file;info]\n\tdata[;info](file;0;1+last 11#where 0xa=read1(file;0;15*WIDTHHDR))}\ninfo0:{[file;onlycols]\n\tcolhdrs:`$nameltrim DELIM vs cleanhdrs first head:read0(file;0;1+last where 0xa=read1(file;0;WIDTHHDR));\n\tloadfmts:(count colhdrs)#\"S\";if[count onlycols;loadfmts[where not colhdrs in onlycols]:\"C\"];\n\tbreaks:where 0xa=read1(file;0;floor(10+READLINES)*WIDTHHDR%count head);\n\tnas:count as:colhdrs xcol(loadfmts;enlist DELIM)0:(file;0;1+last((1+READLINES)&count breaks)#breaks);\n\tinfo:([]c:key flip as;v:value flip as);as:();\n\treserved:key`.q;reserved,:.Q.res;reserved,:`i;\n\tinfo:update res:c in reserved from info;\n\tinfo:update ci:i,t:\"?\",ipa:0b,mdot:0,mw:0,rule:0,gr:0,ndv:0,maybe:0b,empty:0b,j10:0b,j12:0b from info;\n\tinfo:update ci:`s#ci from info;\n\tif[count onlycols;info:update t:\" \",rule:10 from info where not c in onlycols];\n\tinfo:update sdv:{string(distinct x)except`}peach v from info; \n\tinfo:update ndv:count each sdv from info;\n\tinfo:update gr:floor 0.5+100*ndv%nas,mw:{max count each x}peach sdv from info where 0<ndv;\n\tinfo:update t:\"*\",rule:20 from info where mw>.csv.FORCECHARWIDTH; / long values\n\tinfo:update t:\"C \"[.csv.DISCARDEMPTY],rule:30,empty:1b from info where t=\"?\",mw=0; / empty columns\n\tinfo:update dchar:{asc distinct raze x}peach sdv from info where t=\"?\";\n\tinfo:update mdot:{max sum each\".\"=x}peach sdv from info where t=\"?\",{\".\"in x}each dchar;\n\tinfo:update t:\"n\",rule:40 from info where t=\"?\",{any x in\"0123456789\"}each dchar; / vaguely numeric..\n\tinfo:update t:\"I\",rule:50,ipa:1b from info where t=\"n\",mw within 7 15,mdot=3,{all x in\".0123456789\"}each dchar,.csv.cancast[\"I\"]peach sdv; / ip-address\n\tinfo:update t:\"J\",rule:60 from info where t=\"n\",mdot=0,{all x in\"+-0123456789\"}each dchar,.csv.cancast[\"J\"]peach sdv;\n\tinfo:update t:\"I\",rule:70 from info where t=\"J\",mw<12,.csv.cancast[\"I\"]peach sdv;\n\tinfo:update t:\"H\",rule:80 from info where t=\"I\",mw<7,.csv.cancast[\"H\"]peach sdv;\n\tinfo:update t:\"F\",rule:90 from info where t=\"n\",mdot<2,mw>1,.csv.cancast[\"F\"]peach sdv;\n\tinfo:update t:\"E\",rule:100,maybe:1b from info where t=\"F\",mw<9;\n\tinfo:update t:\"M\",rule:110,maybe:1b from info where t in\"nIHEF\",mdot<2,mw within 4 7,.csv.cancast[\"M\"]peach sdv; \n\tinfo:update t:\"D\",rule:120,maybe:1b from info where t in\"nI\",mdot in 0 2,mw within 6 11,.csv.cancast[\"D\"]peach sdv; \n\tinfo:update t:\"V\",rule:130,maybe:1b from info where t=\"I\",mw in 5 6,7<count each dchar,{all x like\"*[0-9][0-5][0-9][0-5][0-9]\"}peach sdv,.csv.cancast[\"V\"]peach sdv; / 235959 12345        \n\tinfo:update t:\"U\",rule:140,maybe:1b from info where t=\"H\",mw in 3 4,7<count each dchar,{all x like\"*[0-9][0-5][0-9]\"}peach sdv,.csv.cancast[\"U\"]peach sdv; /2359\n\tinfo:update t:\"U\",rule:150,maybe:0b from info where t=\"n\",mw in 4 5,mdot=0,{all x like\"*[0-9]:[0-5][0-9]\"}peach sdv,.csv.cancast[\"U\"]peach sdv;\n\tinfo:update t:\"T\",rule:160,maybe:0b from info where t=\"n\",mw within 7 12,mdot<2,{all x like\"*[0-9]:[0-5][0-9]:[0-5][0-9]*\"}peach sdv,.csv.cancast[\"T\"]peach sdv;\n\tinfo:update t:\"V\",rule:170,maybe:0b from info where t=\"T\",mw in 7 8,mdot=0,.csv.cancast[\"V\"]peach sdv;\n\tinfo:update t:\"T\",rule:180,maybe:1b from info where t in\"EF\",mw within 7 10,mdot=1,{all x like\"*[0-9][0-5][0-9][0-5][0-9].*\"}peach sdv,.csv.cancast[\"T\"]peach sdv;\n\tinfo:update t:\"Z\",rule:190,maybe:0b from info where t=\"n\",mw within 11 24,mdot<4,.csv.cancast[\"Z\"]peach sdv;\n\tinfo:update t:\"P\",rule:200,maybe:1b from info where t=\"n\",mw within 12 29,mdot<4,{all x like\"[12]*\"}peach sdv,.csv.cancast[\"P\"]peach sdv;\n\tinfo:update t:\"N\",rule:210,maybe:1b from info where t=\"n\",mw within 3 28,mdot=1,.csv.cancast[\"N\"]peach sdv;\n\tinfo:update t:\"?\",rule:220,maybe:0b from info where t=\"n\"; / reset remaining maybe numeric\n\tinfo:update t:\"C\",rule:230,maybe:0b from info where t=\"?\",mw=1; / char\n\tinfo:update t:\"B\",rule:240,maybe:0b from info where t in\"HC\",mw=1,mdot=0,{$[all x in\"01tTfFyYnN\";(any\"0fFnN\"in x)and any\"1tTyY\"in x;0b]}each dchar; / boolean\n\tinfo:update t:\"B\",rule:250,maybe:1b from info where t in\"HC\",mw=1,mdot=0,{all x in\"01tTfFyYnN\"}each dchar; / boolean\n\tinfo:update t:\"X\",rule:260,maybe:0b from info where t=\"?\",mw=2,{$[all x in\"0123456789abcdefABCDEF\";(any .Q.n in x)and any\"abcdefABCDEF\"in x;0b]}each dchar; /hex\n\tinfo:update t:\"S\",rule:270,maybe:1b from info where t=\"?\",mw<.csv.SYMMAXWIDTH,mw>1,gr<.csv.SYMMAXGR; / symbols (max width permitting)\n\tinfo:update t:\"*\",rule:280,maybe:0b from info where t=\"?\"; / the rest as strings\n\t/ flag those S/* columns which could be encoded to integers (.Q.j10/x10/j12/x12) to avoid symbols\n\tinfo:update j12:1b from info where t in\"S*\",mw<13,{all x in .Q.nA}each dchar;\n\tinfo:update j10:1b from info where t in\"S*\",mw<11,{all x in .Q.b6}each dchar; \n\tselect c,ci,t,maybe,empty,res,j10,j12,ipa,mw,mdot,rule,gr,ndv,dchar from info}\ninfo:info0[;()] / by default don't restrict columns\ninfolike:{[file;pattern] info0[file;{x where x like y}[lower colhdrs[file];pattern]]} / .csv.infolike[file;\"*time\"]\n\n\\d .\n/ DATA:()\nbulkload:{[file;info]\n\tif[not`DATA in system\"v\";'`DATA.not.defined];\n\tif[count DATA;'`DATA.not.empty];\n\tloadhdrs:exec c from info where not t=\" \";loadfmts:exec t from info;\n\t.csv.fs2[{[file;loadhdrs;loadfmts] `DATA insert $[count DATA;flip loadhdrs!(loadfmts;.csv.DELIM)0:file;loadhdrs xcol(loadfmts;enlist .csv.DELIM)0:file]}[file;loadhdrs;loadfmts]];\n\tcount DATA}\n@[.:;\"\\\\l csvutil.custom.q\";::]; / save your custom settings in csvutil.custom.q to override those set at the beginning of the file \n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true\n      });\n    </script>\n\n    <p><strong>MIME type defined:</strong> <code>text/x-q</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/q/q.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"q\",function(config){\n  var indentUnit=config.indentUnit,\n      curPunc,\n      keywords=buildRE([\"abs\",\"acos\",\"aj\",\"aj0\",\"all\",\"and\",\"any\",\"asc\",\"asin\",\"asof\",\"atan\",\"attr\",\"avg\",\"avgs\",\"bin\",\"by\",\"ceiling\",\"cols\",\"cor\",\"cos\",\"count\",\"cov\",\"cross\",\"csv\",\"cut\",\"delete\",\"deltas\",\"desc\",\"dev\",\"differ\",\"distinct\",\"div\",\"do\",\"each\",\"ej\",\"enlist\",\"eval\",\"except\",\"exec\",\"exit\",\"exp\",\"fby\",\"fills\",\"first\",\"fkeys\",\"flip\",\"floor\",\"from\",\"get\",\"getenv\",\"group\",\"gtime\",\"hclose\",\"hcount\",\"hdel\",\"hopen\",\"hsym\",\"iasc\",\"idesc\",\"if\",\"ij\",\"in\",\"insert\",\"inter\",\"inv\",\"key\",\"keys\",\"last\",\"like\",\"list\",\"lj\",\"load\",\"log\",\"lower\",\"lsq\",\"ltime\",\"ltrim\",\"mavg\",\"max\",\"maxs\",\"mcount\",\"md5\",\"mdev\",\"med\",\"meta\",\"min\",\"mins\",\"mmax\",\"mmin\",\"mmu\",\"mod\",\"msum\",\"neg\",\"next\",\"not\",\"null\",\"or\",\"over\",\"parse\",\"peach\",\"pj\",\"plist\",\"prd\",\"prds\",\"prev\",\"prior\",\"rand\",\"rank\",\"ratios\",\"raze\",\"read0\",\"read1\",\"reciprocal\",\"reverse\",\"rload\",\"rotate\",\"rsave\",\"rtrim\",\"save\",\"scan\",\"select\",\"set\",\"setenv\",\"show\",\"signum\",\"sin\",\"sqrt\",\"ss\",\"ssr\",\"string\",\"sublist\",\"sum\",\"sums\",\"sv\",\"system\",\"tables\",\"tan\",\"til\",\"trim\",\"txf\",\"type\",\"uj\",\"ungroup\",\"union\",\"update\",\"upper\",\"upsert\",\"value\",\"var\",\"view\",\"views\",\"vs\",\"wavg\",\"where\",\"where\",\"while\",\"within\",\"wj\",\"wj1\",\"wsum\",\"xasc\",\"xbar\",\"xcol\",\"xcols\",\"xdesc\",\"xexp\",\"xgroup\",\"xkey\",\"xlog\",\"xprev\",\"xrank\"]),\n      E=/[|/&^!+:\\\\\\-*%$=~#;@><,?_\\'\\\"\\[\\(\\]\\)\\s{}]/;\n  function buildRE(w){return new RegExp(\"^(\"+w.join(\"|\")+\")$\");}\n  function tokenBase(stream,state){\n    var sol=stream.sol(),c=stream.next();\n    curPunc=null;\n    if(sol)\n      if(c==\"/\")\n        return(state.tokenize=tokenLineComment)(stream,state);\n      else if(c==\"\\\\\"){\n        if(stream.eol()||/\\s/.test(stream.peek()))\n          return stream.skipToEnd(),/^\\\\\\s*$/.test(stream.current())?(state.tokenize=tokenCommentToEOF)(stream, state):state.tokenize=tokenBase,\"comment\";\n        else\n          return state.tokenize=tokenBase,\"builtin\";\n      }\n    if(/\\s/.test(c))\n      return stream.peek()==\"/\"?(stream.skipToEnd(),\"comment\"):\"whitespace\";\n    if(c=='\"')\n      return(state.tokenize=tokenString)(stream,state);\n    if(c=='`')\n      return stream.eatWhile(/[A-Z|a-z|\\d|_|:|\\/|\\.]/),\"symbol\";\n    if((\".\"==c&&/\\d/.test(stream.peek()))||/\\d/.test(c)){\n      var t=null;\n      stream.backUp(1);\n      if(stream.match(/^\\d{4}\\.\\d{2}(m|\\.\\d{2}([D|T](\\d{2}(:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?)?)?)?)/)\n      || stream.match(/^\\d+D(\\d{2}(:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?)?)/)\n      || stream.match(/^\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?/)\n      || stream.match(/^\\d+[ptuv]{1}/))\n        t=\"temporal\";\n      else if(stream.match(/^0[NwW]{1}/)\n      || stream.match(/^0x[\\d|a-f|A-F]*/)\n      || stream.match(/^[0|1]+[b]{1}/)\n      || stream.match(/^\\d+[chijn]{1}/)\n      || stream.match(/-?\\d*(\\.\\d*)?(e[+\\-]?\\d+)?(e|f)?/))\n        t=\"number\";\n      return(t&&(!(c=stream.peek())||E.test(c)))?t:(stream.next(),\"error\");\n    }\n    if(/[A-Z|a-z]|\\./.test(c))\n      return stream.eatWhile(/[A-Z|a-z|\\.|_|\\d]/),keywords.test(stream.current())?\"keyword\":\"variable\";\n    if(/[|/&^!+:\\\\\\-*%$=~#;@><\\.,?_\\']/.test(c))\n      return null;\n    if(/[{}\\(\\[\\]\\)]/.test(c))\n      return null;\n    return\"error\";\n  }\n  function tokenLineComment(stream,state){\n    return stream.skipToEnd(),/\\/\\s*$/.test(stream.current())?(state.tokenize=tokenBlockComment)(stream,state):(state.tokenize=tokenBase),\"comment\";\n  }\n  function tokenBlockComment(stream,state){\n    var f=stream.sol()&&stream.peek()==\"\\\\\";\n    stream.skipToEnd();\n    if(f&&/^\\\\\\s*$/.test(stream.current()))\n      state.tokenize=tokenBase;\n    return\"comment\";\n  }\n  function tokenCommentToEOF(stream){return stream.skipToEnd(),\"comment\";}\n  function tokenString(stream,state){\n    var escaped=false,next,end=false;\n    while((next=stream.next())){\n      if(next==\"\\\"\"&&!escaped){end=true;break;}\n      escaped=!escaped&&next==\"\\\\\";\n    }\n    if(end)state.tokenize=tokenBase;\n    return\"string\";\n  }\n  function pushContext(state,type,col){state.context={prev:state.context,indent:state.indent,col:col,type:type};}\n  function popContext(state){state.indent=state.context.indent;state.context=state.context.prev;}\n  return{\n    startState:function(){\n      return{tokenize:tokenBase,\n             context:null,\n             indent:0,\n             col:0};\n    },\n    token:function(stream,state){\n      if(stream.sol()){\n        if(state.context&&state.context.align==null)\n          state.context.align=false;\n        state.indent=stream.indentation();\n      }\n      //if (stream.eatSpace()) return null;\n      var style=state.tokenize(stream,state);\n      if(style!=\"comment\"&&state.context&&state.context.align==null&&state.context.type!=\"pattern\"){\n        state.context.align=true;\n      }\n      if(curPunc==\"(\")pushContext(state,\")\",stream.column());\n      else if(curPunc==\"[\")pushContext(state,\"]\",stream.column());\n      else if(curPunc==\"{\")pushContext(state,\"}\",stream.column());\n      else if(/[\\]\\}\\)]/.test(curPunc)){\n        while(state.context&&state.context.type==\"pattern\")popContext(state);\n        if(state.context&&curPunc==state.context.type)popContext(state);\n      }\n      else if(curPunc==\".\"&&state.context&&state.context.type==\"pattern\")popContext(state);\n      else if(/atom|string|variable/.test(style)&&state.context){\n        if(/[\\}\\]]/.test(state.context.type))\n          pushContext(state,\"pattern\",stream.column());\n        else if(state.context.type==\"pattern\"&&!state.context.align){\n          state.context.align=true;\n          state.context.col=stream.column();\n        }\n      }\n      return style;\n    },\n    indent:function(state,textAfter){\n      var firstChar=textAfter&&textAfter.charAt(0);\n      var context=state.context;\n      if(/[\\]\\}]/.test(firstChar))\n        while (context&&context.type==\"pattern\")context=context.prev;\n      var closing=context&&firstChar==context.type;\n      if(!context)\n        return 0;\n      else if(context.type==\"pattern\")\n        return context.col;\n      else if(context.align)\n        return context.col+(closing?0:1);\n      else\n        return context.indent+(closing?0:indentUnit);\n    }\n  };\n});\nCodeMirror.defineMIME(\"text/x-q\",\"q\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/r/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: R mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"r.js\"></script>\n<style>\n      .CodeMirror { border-top: 1px solid silver; border-bottom: 1px solid silver; }\n      .cm-s-default span.cm-semi { color: blue; font-weight: bold; }\n      .cm-s-default span.cm-dollar { color: orange; font-weight: bold; }\n      .cm-s-default span.cm-arrow { color: brown; }\n      .cm-s-default span.cm-arg-is { color: brown; }\n    </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">R</a>\n  </ul>\n</div>\n\n<article>\n<h2>R mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n# Code from http://www.mayin.org/ajayshah/KB/R/\n\n# FIRST LEARN ABOUT LISTS --\nX = list(height=5.4, weight=54)\nprint(\"Use default printing --\")\nprint(X)\nprint(\"Accessing individual elements --\")\ncat(\"Your height is \", X$height, \" and your weight is \", X$weight, \"\\n\")\n\n# FUNCTIONS --\nsquare <- function(x) {\n  return(x*x)\n}\ncat(\"The square of 3 is \", square(3), \"\\n\")\n\n                 # default value of the arg is set to 5.\ncube <- function(x=5) {\n  return(x*x*x);\n}\ncat(\"Calling cube with 2 : \", cube(2), \"\\n\")    # will give 2^3\ncat(\"Calling cube        : \", cube(), \"\\n\")     # will default to 5^3.\n\n# LEARN ABOUT FUNCTIONS THAT RETURN MULTIPLE OBJECTS --\npowers <- function(x) {\n  parcel = list(x2=x*x, x3=x*x*x, x4=x*x*x*x);\n  return(parcel);\n}\n\nX = powers(3);\nprint(\"Showing powers of 3 --\"); print(X);\n\n# WRITING THIS COMPACTLY (4 lines instead of 7)\n\npowerful <- function(x) {\n  return(list(x2=x*x, x3=x*x*x, x4=x*x*x*x));\n}\nprint(\"Showing powers of 3 --\"); print(powerful(3));\n\n# In R, the last expression in a function is, by default, what is\n# returned. So you could equally just say:\npowerful <- function(x) {list(x2=x*x, x3=x*x*x, x4=x*x*x*x)}\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {});\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-rsrc</code>.</p>\n\n    <p>Development of the CodeMirror R mode was kindly sponsored\n    by <a href=\"https://twitter.com/ubalo\">Ubalo</a>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/r/r.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"r\", function(config) {\n  function wordObj(str) {\n    var words = str.split(\" \"), res = {};\n    for (var i = 0; i < words.length; ++i) res[words[i]] = true;\n    return res;\n  }\n  var atoms = wordObj(\"NULL NA Inf NaN NA_integer_ NA_real_ NA_complex_ NA_character_\");\n  var builtins = wordObj(\"list quote bquote eval return call parse deparse\");\n  var keywords = wordObj(\"if else repeat while function for in next break\");\n  var blockkeywords = wordObj(\"if else repeat while function for\");\n  var opChars = /[+\\-*\\/^<>=!&|~$:]/;\n  var curPunc;\n\n  function tokenBase(stream, state) {\n    curPunc = null;\n    var ch = stream.next();\n    if (ch == \"#\") {\n      stream.skipToEnd();\n      return \"comment\";\n    } else if (ch == \"0\" && stream.eat(\"x\")) {\n      stream.eatWhile(/[\\da-f]/i);\n      return \"number\";\n    } else if (ch == \".\" && stream.eat(/\\d/)) {\n      stream.match(/\\d*(?:e[+\\-]?\\d+)?/);\n      return \"number\";\n    } else if (/\\d/.test(ch)) {\n      stream.match(/\\d*(?:\\.\\d+)?(?:e[+\\-]\\d+)?L?/);\n      return \"number\";\n    } else if (ch == \"'\" || ch == '\"') {\n      state.tokenize = tokenString(ch);\n      return \"string\";\n    } else if (ch == \".\" && stream.match(/.[.\\d]+/)) {\n      return \"keyword\";\n    } else if (/[\\w\\.]/.test(ch) && ch != \"_\") {\n      stream.eatWhile(/[\\w\\.]/);\n      var word = stream.current();\n      if (atoms.propertyIsEnumerable(word)) return \"atom\";\n      if (keywords.propertyIsEnumerable(word)) {\n        // Block keywords start new blocks, except 'else if', which only starts\n        // one new block for the 'if', no block for the 'else'.\n        if (blockkeywords.propertyIsEnumerable(word) &&\n            !stream.match(/\\s*if(\\s+|$)/, false))\n          curPunc = \"block\";\n        return \"keyword\";\n      }\n      if (builtins.propertyIsEnumerable(word)) return \"builtin\";\n      return \"variable\";\n    } else if (ch == \"%\") {\n      if (stream.skipTo(\"%\")) stream.next();\n      return \"variable-2\";\n    } else if (ch == \"<\" && stream.eat(\"-\")) {\n      return \"arrow\";\n    } else if (ch == \"=\" && state.ctx.argList) {\n      return \"arg-is\";\n    } else if (opChars.test(ch)) {\n      if (ch == \"$\") return \"dollar\";\n      stream.eatWhile(opChars);\n      return \"operator\";\n    } else if (/[\\(\\){}\\[\\];]/.test(ch)) {\n      curPunc = ch;\n      if (ch == \";\") return \"semi\";\n      return null;\n    } else {\n      return null;\n    }\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      if (stream.eat(\"\\\\\")) {\n        var ch = stream.next();\n        if (ch == \"x\") stream.match(/^[a-f0-9]{2}/i);\n        else if ((ch == \"u\" || ch == \"U\") && stream.eat(\"{\") && stream.skipTo(\"}\")) stream.next();\n        else if (ch == \"u\") stream.match(/^[a-f0-9]{4}/i);\n        else if (ch == \"U\") stream.match(/^[a-f0-9]{8}/i);\n        else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/);\n        return \"string-2\";\n      } else {\n        var next;\n        while ((next = stream.next()) != null) {\n          if (next == quote) { state.tokenize = tokenBase; break; }\n          if (next == \"\\\\\") { stream.backUp(1); break; }\n        }\n        return \"string\";\n      }\n    };\n  }\n\n  function push(state, type, stream) {\n    state.ctx = {type: type,\n                 indent: state.indent,\n                 align: null,\n                 column: stream.column(),\n                 prev: state.ctx};\n  }\n  function pop(state) {\n    state.indent = state.ctx.indent;\n    state.ctx = state.ctx.prev;\n  }\n\n  return {\n    startState: function() {\n      return {tokenize: tokenBase,\n              ctx: {type: \"top\",\n                    indent: -config.indentUnit,\n                    align: false},\n              indent: 0,\n              afterIdent: false};\n    },\n\n    token: function(stream, state) {\n      if (stream.sol()) {\n        if (state.ctx.align == null) state.ctx.align = false;\n        state.indent = stream.indentation();\n      }\n      if (stream.eatSpace()) return null;\n      var style = state.tokenize(stream, state);\n      if (style != \"comment\" && state.ctx.align == null) state.ctx.align = true;\n\n      var ctype = state.ctx.type;\n      if ((curPunc == \";\" || curPunc == \"{\" || curPunc == \"}\") && ctype == \"block\") pop(state);\n      if (curPunc == \"{\") push(state, \"}\", stream);\n      else if (curPunc == \"(\") {\n        push(state, \")\", stream);\n        if (state.afterIdent) state.ctx.argList = true;\n      }\n      else if (curPunc == \"[\") push(state, \"]\", stream);\n      else if (curPunc == \"block\") push(state, \"block\", stream);\n      else if (curPunc == ctype) pop(state);\n      state.afterIdent = style == \"variable\" || style == \"keyword\";\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize != tokenBase) return 0;\n      var firstChar = textAfter && textAfter.charAt(0), ctx = state.ctx,\n          closing = firstChar == ctx.type;\n      if (ctx.type == \"block\") return ctx.indent + (firstChar == \"{\" ? 0 : config.indentUnit);\n      else if (ctx.align) return ctx.column + (closing ? 0 : 1);\n      else return ctx.indent + (closing ? 0 : config.indentUnit);\n    },\n\n    lineComment: \"#\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-rsrc\", \"r\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/rpm/changes/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: RPM changes mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n    <link rel=\"stylesheet\" href=\"../../../lib/codemirror.css\">\n    <script src=\"../../../lib/codemirror.js\"></script>\n    <script src=\"changes.js\"></script>\n    <link rel=\"stylesheet\" href=\"../../../doc/docs.css\">\n    <style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../../index.html\">Home</a>\n    <li><a href=\"../../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">RPM changes</a>\n  </ul>\n</div>\n\n<article>\n<h2>RPM changes mode</h2>\n\n    <div><textarea id=\"code\" name=\"code\">\n-------------------------------------------------------------------\nTue Oct 18 13:58:40 UTC 2011 - misterx@example.com\n\n- Update to r60.3\n- Fixes bug in the reflect package\n  * disallow Interface method on Value obtained via unexported name\n\n-------------------------------------------------------------------\nThu Oct  6 08:14:24 UTC 2011 - misterx@example.com\n\n- Update to r60.2\n- Fixes memory leak in certain map types\n\n-------------------------------------------------------------------\nWed Oct  5 14:34:10 UTC 2011 - misterx@example.com\n\n- Tweaks for gdb debugging\n- go.spec changes:\n  - move %go_arch definition to %prep section\n  - pass correct location of go specific gdb pretty printer and\n    functions to cpp as HOST_EXTRA_CFLAGS macro\n  - install go gdb functions & printer\n- gdb-printer.patch\n  - patch linker (src/cmd/ld/dwarf.c) to emit correct location of go\n    gdb functions and pretty printer\n</textarea></div>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: {name: \"changes\"},\n        lineNumbers: true,\n        indentUnit: 4\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-rpm-changes</code>.</p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/rpm/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: RPM changes mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n    <link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n    <script src=\"../../lib/codemirror.js\"></script>\n    <script src=\"rpm.js\"></script>\n    <link rel=\"stylesheet\" href=\"../../doc/docs.css\">\n    <style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">RPM</a>\n  </ul>\n</div>\n\n<article>\n<h2>RPM changes mode</h2>\n\n    <div><textarea id=\"code\" name=\"code\">\n-------------------------------------------------------------------\nTue Oct 18 13:58:40 UTC 2011 - misterx@example.com\n\n- Update to r60.3\n- Fixes bug in the reflect package\n  * disallow Interface method on Value obtained via unexported name\n\n-------------------------------------------------------------------\nThu Oct  6 08:14:24 UTC 2011 - misterx@example.com\n\n- Update to r60.2\n- Fixes memory leak in certain map types\n\n-------------------------------------------------------------------\nWed Oct  5 14:34:10 UTC 2011 - misterx@example.com\n\n- Tweaks for gdb debugging\n- go.spec changes:\n  - move %go_arch definition to %prep section\n  - pass correct location of go specific gdb pretty printer and\n    functions to cpp as HOST_EXTRA_CFLAGS macro\n  - install go gdb functions & printer\n- gdb-printer.patch\n  - patch linker (src/cmd/ld/dwarf.c) to emit correct location of go\n    gdb functions and pretty printer\n</textarea></div>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: {name: \"rpm-changes\"},\n        lineNumbers: true,\n        indentUnit: 4\n      });\n    </script>\n\n<h2>RPM spec mode</h2>\n    \n    <div><textarea id=\"code2\" name=\"code2\">\n#\n# spec file for package minidlna\n#\n# Copyright (c) 2011, Sascha Peilicke <saschpe@gmx.de>\n#\n# All modifications and additions to the file contributed by third parties\n# remain the property of their copyright owners, unless otherwise agreed\n# upon. The license for this file, and modifications and additions to the\n# file, is the same license as for the pristine package itself (unless the\n# license for the pristine package is not an Open Source License, in which\n# case the license is the MIT License). An \"Open Source License\" is a\n# license that conforms to the Open Source Definition (Version 1.9)\n# published by the Open Source Initiative.\n\n\nName:           libupnp6\nVersion:        1.6.13\nRelease:        0\nSummary:        Portable Universal Plug and Play (UPnP) SDK\nGroup:          System/Libraries\nLicense:        BSD-3-Clause\nUrl:            http://sourceforge.net/projects/pupnp/\nSource0:        http://downloads.sourceforge.net/pupnp/libupnp-%{version}.tar.bz2\nBuildRoot:      %{_tmppath}/%{name}-%{version}-build\n\n%description\nThe portable Universal Plug and Play (UPnP) SDK provides support for building\nUPnP-compliant control points, devices, and bridges on several operating\nsystems.\n\n%package -n libupnp-devel\nSummary:        Portable Universal Plug and Play (UPnP) SDK\nGroup:          Development/Libraries/C and C++\nProvides:       pkgconfig(libupnp)\nRequires:       %{name} = %{version}\n\n%description -n libupnp-devel\nThe portable Universal Plug and Play (UPnP) SDK provides support for building\nUPnP-compliant control points, devices, and bridges on several operating\nsystems.\n\n%prep\n%setup -n libupnp-%{version}\n\n%build\n%configure --disable-static\nmake %{?_smp_mflags}\n\n%install\n%makeinstall\nfind %{buildroot} -type f -name '*.la' -exec rm -f {} ';'\n\n%post -p /sbin/ldconfig\n\n%postun -p /sbin/ldconfig\n\n%files\n%defattr(-,root,root,-)\n%doc ChangeLog NEWS README TODO\n%{_libdir}/libixml.so.*\n%{_libdir}/libthreadutil.so.*\n%{_libdir}/libupnp.so.*\n\n%files -n libupnp-devel\n%defattr(-,root,root,-)\n%{_libdir}/pkgconfig/libupnp.pc\n%{_libdir}/libixml.so\n%{_libdir}/libthreadutil.so\n%{_libdir}/libupnp.so\n%{_includedir}/upnp/\n\n%changelog</textarea></div>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code2\"), {\n        mode: {name: \"rpm-spec\"},\n        lineNumbers: true,\n        indentUnit: 4\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-rpm-spec</code>, <code>text/x-rpm-changes</code>.</p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/rpm/rpm.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"rpm-changes\", function() {\n  var headerSeperator = /^-+$/;\n  var headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)  ?\\d{1,2} \\d{2}:\\d{2}(:\\d{2})? [A-Z]{3,4} \\d{4} - /;\n  var simpleEmail = /^[\\w+.-]+@[\\w.-]+/;\n\n  return {\n    token: function(stream) {\n      if (stream.sol()) {\n        if (stream.match(headerSeperator)) { return 'tag'; }\n        if (stream.match(headerLine)) { return 'tag'; }\n      }\n      if (stream.match(simpleEmail)) { return 'string'; }\n      stream.next();\n      return null;\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-rpm-changes\", \"rpm-changes\");\n\n// Quick and dirty spec file highlighting\n\nCodeMirror.defineMode(\"rpm-spec\", function() {\n  var arch = /^(i386|i586|i686|x86_64|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/;\n\n  var preamble = /^(Name|Version|Release|License|Summary|Url|Group|Source|BuildArch|BuildRequires|BuildRoot|AutoReqProv|Provides|Requires(\\(\\w+\\))?|Obsoletes|Conflicts|Recommends|Source\\d*|Patch\\d*|ExclusiveArch|NoSource|Supplements):/;\n  var section = /^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pre|post|triggerin|triggerun|pretrans|posttrans|verifyscript|check|triggerpostun|triggerprein|trigger)/;\n  var control_flow_complex = /^%(ifnarch|ifarch|if)/; // rpm control flow macros\n  var control_flow_simple = /^%(else|endif)/; // rpm control flow macros\n  var operators = /^(\\!|\\?|\\<\\=|\\<|\\>\\=|\\>|\\=\\=|\\&\\&|\\|\\|)/; // operators in control flow macros\n\n  return {\n    startState: function () {\n        return {\n          controlFlow: false,\n          macroParameters: false,\n          section: false\n        };\n    },\n    token: function (stream, state) {\n      var ch = stream.peek();\n      if (ch == \"#\") { stream.skipToEnd(); return \"comment\"; }\n\n      if (stream.sol()) {\n        if (stream.match(preamble)) { return \"preamble\"; }\n        if (stream.match(section)) { return \"section\"; }\n      }\n\n      if (stream.match(/^\\$\\w+/)) { return \"def\"; } // Variables like '$RPM_BUILD_ROOT'\n      if (stream.match(/^\\$\\{\\w+\\}/)) { return \"def\"; } // Variables like '${RPM_BUILD_ROOT}'\n\n      if (stream.match(control_flow_simple)) { return \"keyword\"; }\n      if (stream.match(control_flow_complex)) {\n        state.controlFlow = true;\n        return \"keyword\";\n      }\n      if (state.controlFlow) {\n        if (stream.match(operators)) { return \"operator\"; }\n        if (stream.match(/^(\\d+)/)) { return \"number\"; }\n        if (stream.eol()) { state.controlFlow = false; }\n      }\n\n      if (stream.match(arch)) { return \"number\"; }\n\n      // Macros like '%make_install' or '%attr(0775,root,root)'\n      if (stream.match(/^%[\\w]+/)) {\n        if (stream.match(/^\\(/)) { state.macroParameters = true; }\n        return \"macro\";\n      }\n      if (state.macroParameters) {\n        if (stream.match(/^\\d+/)) { return \"number\";}\n        if (stream.match(/^\\)/)) {\n          state.macroParameters = false;\n          return \"macro\";\n        }\n      }\n      if (stream.match(/^%\\{\\??[\\w \\-]+\\}/)) { return \"macro\"; } // Macros like '%{defined fedora}'\n\n      //TODO: Include bash script sub-parser (CodeMirror supports that)\n      stream.next();\n      return null;\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-rpm-spec\", \"rpm-spec\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/rst/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: reStructuredText mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/mode/overlay.js\"></script>\n<script src=\"rst.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">reStructuredText</a>\n  </ul>\n</div>\n\n<article>\n<h2>reStructuredText mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n.. This is an excerpt from Sphinx documentation: http://sphinx.pocoo.org/_sources/rest.txt\n\n.. highlightlang:: rest\n\n.. _rst-primer:\n\nreStructuredText Primer\n=======================\n\nThis section is a brief introduction to reStructuredText (reST) concepts and\nsyntax, intended to provide authors with enough information to author documents\nproductively.  Since reST was designed to be a simple, unobtrusive markup\nlanguage, this will not take too long.\n\n.. seealso::\n\n   The authoritative `reStructuredText User Documentation\n   &lt;http://docutils.sourceforge.net/rst.html&gt;`_.  The \"ref\" links in this\n   document link to the description of the individual constructs in the reST\n   reference.\n\n\nParagraphs\n----------\n\nThe paragraph (:duref:`ref &lt;paragraphs&gt;`) is the most basic block in a reST\ndocument.  Paragraphs are simply chunks of text separated by one or more blank\nlines.  As in Python, indentation is significant in reST, so all lines of the\nsame paragraph must be left-aligned to the same level of indentation.\n\n\n.. _inlinemarkup:\n\nInline markup\n-------------\n\nThe standard reST inline markup is quite simple: use\n\n* one asterisk: ``*text*`` for emphasis (italics),\n* two asterisks: ``**text**`` for strong emphasis (boldface), and\n* backquotes: ````text```` for code samples.\n\nIf asterisks or backquotes appear in running text and could be confused with\ninline markup delimiters, they have to be escaped with a backslash.\n\nBe aware of some restrictions of this markup:\n\n* it may not be nested,\n* content may not start or end with whitespace: ``* text*`` is wrong,\n* it must be separated from surrounding text by non-word characters.  Use a\n  backslash escaped space to work around that: ``thisis\\ *one*\\ word``.\n\nThese restrictions may be lifted in future versions of the docutils.\n\nreST also allows for custom \"interpreted text roles\"', which signify that the\nenclosed text should be interpreted in a specific way.  Sphinx uses this to\nprovide semantic markup and cross-referencing of identifiers, as described in\nthe appropriate section.  The general syntax is ``:rolename:`content```.\n\nStandard reST provides the following roles:\n\n* :durole:`emphasis` -- alternate spelling for ``*emphasis*``\n* :durole:`strong` -- alternate spelling for ``**strong**``\n* :durole:`literal` -- alternate spelling for ````literal````\n* :durole:`subscript` -- subscript text\n* :durole:`superscript` -- superscript text\n* :durole:`title-reference` -- for titles of books, periodicals, and other\n  materials\n\nSee :ref:`inline-markup` for roles added by Sphinx.\n\n\nLists and Quote-like blocks\n---------------------------\n\nList markup (:duref:`ref &lt;bullet-lists&gt;`) is natural: just place an asterisk at\nthe start of a paragraph and indent properly.  The same goes for numbered lists;\nthey can also be autonumbered using a ``#`` sign::\n\n   * This is a bulleted list.\n   * It has two items, the second\n     item uses two lines.\n\n   1. This is a numbered list.\n   2. It has two items too.\n\n   #. This is a numbered list.\n   #. It has two items too.\n\n\nNested lists are possible, but be aware that they must be separated from the\nparent list items by blank lines::\n\n   * this is\n   * a list\n\n     * with a nested list\n     * and some subitems\n\n   * and here the parent list continues\n\nDefinition lists (:duref:`ref &lt;definition-lists&gt;`) are created as follows::\n\n   term (up to a line of text)\n      Definition of the term, which must be indented\n\n      and can even consist of multiple paragraphs\n\n   next term\n      Description.\n\nNote that the term cannot have more than one line of text.\n\nQuoted paragraphs (:duref:`ref &lt;block-quotes&gt;`) are created by just indenting\nthem more than the surrounding paragraphs.\n\nLine blocks (:duref:`ref &lt;line-blocks&gt;`) are a way of preserving line breaks::\n\n   | These lines are\n   | broken exactly like in\n   | the source file.\n\nThere are also several more special blocks available:\n\n* field lists (:duref:`ref &lt;field-lists&gt;`)\n* option lists (:duref:`ref &lt;option-lists&gt;`)\n* quoted literal blocks (:duref:`ref &lt;quoted-literal-blocks&gt;`)\n* doctest blocks (:duref:`ref &lt;doctest-blocks&gt;`)\n\n\nSource Code\n-----------\n\nLiteral code blocks (:duref:`ref &lt;literal-blocks&gt;`) are introduced by ending a\nparagraph with the special marker ``::``.  The literal block must be indented\n(and, like all paragraphs, separated from the surrounding ones by blank lines)::\n\n   This is a normal text paragraph. The next paragraph is a code sample::\n\n      It is not processed in any way, except\n      that the indentation is removed.\n\n      It can span multiple lines.\n\n   This is a normal text paragraph again.\n\nThe handling of the ``::`` marker is smart:\n\n* If it occurs as a paragraph of its own, that paragraph is completely left\n  out of the document.\n* If it is preceded by whitespace, the marker is removed.\n* If it is preceded by non-whitespace, the marker is replaced by a single\n  colon.\n\nThat way, the second sentence in the above example's first paragraph would be\nrendered as \"The next paragraph is a code sample:\".\n\n\n.. _rst-tables:\n\nTables\n------\n\nTwo forms of tables are supported.  For *grid tables* (:duref:`ref\n&lt;grid-tables&gt;`), you have to \"paint\" the cell grid yourself.  They look like\nthis::\n\n   +------------------------+------------+----------+----------+\n   | Header row, column 1   | Header 2   | Header 3 | Header 4 |\n   | (header rows optional) |            |          |          |\n   +========================+============+==========+==========+\n   | body row 1, column 1   | column 2   | column 3 | column 4 |\n   +------------------------+------------+----------+----------+\n   | body row 2             | ...        | ...      |          |\n   +------------------------+------------+----------+----------+\n\n*Simple tables* (:duref:`ref &lt;simple-tables&gt;`) are easier to write, but\nlimited: they must contain more than one row, and the first column cannot\ncontain multiple lines.  They look like this::\n\n   =====  =====  =======\n   A      B      A and B\n   =====  =====  =======\n   False  False  False\n   True   False  False\n   False  True   False\n   True   True   True\n   =====  =====  =======\n\n\nHyperlinks\n----------\n\nExternal links\n^^^^^^^^^^^^^^\n\nUse ```Link text &lt;http://example.com/&gt;`_`` for inline web links.  If the link\ntext should be the web address, you don't need special markup at all, the parser\nfinds links and mail addresses in ordinary text.\n\nYou can also separate the link and the target definition (:duref:`ref\n&lt;hyperlink-targets&gt;`), like this::\n\n   This is a paragraph that contains `a link`_.\n\n   .. _a link: http://example.com/\n\n\nInternal links\n^^^^^^^^^^^^^^\n\nInternal linking is done via a special reST role provided by Sphinx, see the\nsection on specific markup, :ref:`ref-role`.\n\n\nSections\n--------\n\nSection headers (:duref:`ref &lt;sections&gt;`) are created by underlining (and\noptionally overlining) the section title with a punctuation character, at least\nas long as the text::\n\n   =================\n   This is a heading\n   =================\n\nNormally, there are no heading levels assigned to certain characters as the\nstructure is determined from the succession of headings.  However, for the\nPython documentation, this convention is used which you may follow:\n\n* ``#`` with overline, for parts\n* ``*`` with overline, for chapters\n* ``=``, for sections\n* ``-``, for subsections\n* ``^``, for subsubsections\n* ``\"``, for paragraphs\n\nOf course, you are free to use your own marker characters (see the reST\ndocumentation), and use a deeper nesting level, but keep in mind that most\ntarget formats (HTML, LaTeX) have a limited supported nesting depth.\n\n\nExplicit Markup\n---------------\n\n\"Explicit markup\" (:duref:`ref &lt;explicit-markup-blocks&gt;`) is used in reST for\nmost constructs that need special handling, such as footnotes,\nspecially-highlighted paragraphs, comments, and generic directives.\n\nAn explicit markup block begins with a line starting with ``..`` followed by\nwhitespace and is terminated by the next paragraph at the same level of\nindentation.  (There needs to be a blank line between explicit markup and normal\nparagraphs.  This may all sound a bit complicated, but it is intuitive enough\nwhen you write it.)\n\n\n.. _directives:\n\nDirectives\n----------\n\nA directive (:duref:`ref &lt;directives&gt;`) is a generic block of explicit markup.\nBesides roles, it is one of the extension mechanisms of reST, and Sphinx makes\nheavy use of it.\n\nDocutils supports the following directives:\n\n* Admonitions: :dudir:`attention`, :dudir:`caution`, :dudir:`danger`,\n  :dudir:`error`, :dudir:`hint`, :dudir:`important`, :dudir:`note`,\n  :dudir:`tip`, :dudir:`warning` and the generic :dudir:`admonition`.\n  (Most themes style only \"note\" and \"warning\" specially.)\n\n* Images:\n\n  - :dudir:`image` (see also Images_ below)\n  - :dudir:`figure` (an image with caption and optional legend)\n\n* Additional body elements:\n\n  - :dudir:`contents` (a local, i.e. for the current file only, table of\n    contents)\n  - :dudir:`container` (a container with a custom class, useful to generate an\n    outer ``&lt;div&gt;`` in HTML)\n  - :dudir:`rubric` (a heading without relation to the document sectioning)\n  - :dudir:`topic`, :dudir:`sidebar` (special highlighted body elements)\n  - :dudir:`parsed-literal` (literal block that supports inline markup)\n  - :dudir:`epigraph` (a block quote with optional attribution line)\n  - :dudir:`highlights`, :dudir:`pull-quote` (block quotes with their own\n    class attribute)\n  - :dudir:`compound` (a compound paragraph)\n\n* Special tables:\n\n  - :dudir:`table` (a table with title)\n  - :dudir:`csv-table` (a table generated from comma-separated values)\n  - :dudir:`list-table` (a table generated from a list of lists)\n\n* Special directives:\n\n  - :dudir:`raw` (include raw target-format markup)\n  - :dudir:`include` (include reStructuredText from another file)\n    -- in Sphinx, when given an absolute include file path, this directive takes\n    it as relative to the source directory\n  - :dudir:`class` (assign a class attribute to the next element) [1]_\n\n* HTML specifics:\n\n  - :dudir:`meta` (generation of HTML ``&lt;meta&gt;`` tags)\n  - :dudir:`title` (override document title)\n\n* Influencing markup:\n\n  - :dudir:`default-role` (set a new default role)\n  - :dudir:`role` (create a new role)\n\n  Since these are only per-file, better use Sphinx' facilities for setting the\n  :confval:`default_role`.\n\nDo *not* use the directives :dudir:`sectnum`, :dudir:`header` and\n:dudir:`footer`.\n\nDirectives added by Sphinx are described in :ref:`sphinxmarkup`.\n\nBasically, a directive consists of a name, arguments, options and content. (Keep\nthis terminology in mind, it is used in the next chapter describing custom\ndirectives.)  Looking at this example, ::\n\n   .. function:: foo(x)\n                 foo(y, z)\n      :module: some.module.name\n\n      Return a line of text input from the user.\n\n``function`` is the directive name.  It is given two arguments here, the\nremainder of the first line and the second line, as well as one option\n``module`` (as you can see, options are given in the lines immediately following\nthe arguments and indicated by the colons).  Options must be indented to the\nsame level as the directive content.\n\nThe directive content follows after a blank line and is indented relative to the\ndirective start.\n\n\nImages\n------\n\nreST supports an image directive (:dudir:`ref &lt;image&gt;`), used like so::\n\n   .. image:: gnu.png\n      (options)\n\nWhen used within Sphinx, the file name given (here ``gnu.png``) must either be\nrelative to the source file, or absolute which means that they are relative to\nthe top source directory.  For example, the file ``sketch/spam.rst`` could refer\nto the image ``images/spam.png`` as ``../images/spam.png`` or\n``/images/spam.png``.\n\nSphinx will automatically copy image files over to a subdirectory of the output\ndirectory on building (e.g. the ``_static`` directory for HTML output.)\n\nInterpretation of image size options (``width`` and ``height``) is as follows:\nif the size has no unit or the unit is pixels, the given size will only be\nrespected for output channels that support pixels (i.e. not in LaTeX output).\nOther units (like ``pt`` for points) will be used for HTML and LaTeX output.\n\nSphinx extends the standard docutils behavior by allowing an asterisk for the\nextension::\n\n   .. image:: gnu.*\n\nSphinx then searches for all images matching the provided pattern and determines\ntheir type.  Each builder then chooses the best image out of these candidates.\nFor instance, if the file name ``gnu.*`` was given and two files :file:`gnu.pdf`\nand :file:`gnu.png` existed in the source tree, the LaTeX builder would choose\nthe former, while the HTML builder would prefer the latter.\n\n.. versionchanged:: 0.4\n   Added the support for file names ending in an asterisk.\n\n.. versionchanged:: 0.6\n   Image paths can now be absolute.\n\n\nFootnotes\n---------\n\nFor footnotes (:duref:`ref &lt;footnotes&gt;`), use ``[#name]_`` to mark the footnote\nlocation, and add the footnote body at the bottom of the document after a\n\"Footnotes\" rubric heading, like so::\n\n   Lorem ipsum [#f1]_ dolor sit amet ... [#f2]_\n\n   .. rubric:: Footnotes\n\n   .. [#f1] Text of the first footnote.\n   .. [#f2] Text of the second footnote.\n\nYou can also explicitly number the footnotes (``[1]_``) or use auto-numbered\nfootnotes without names (``[#]_``).\n\n\nCitations\n---------\n\nStandard reST citations (:duref:`ref &lt;citations&gt;`) are supported, with the\nadditional feature that they are \"global\", i.e. all citations can be referenced\nfrom all files.  Use them like so::\n\n   Lorem ipsum [Ref]_ dolor sit amet.\n\n   .. [Ref] Book or article reference, URL or whatever.\n\nCitation usage is similar to footnote usage, but with a label that is not\nnumeric or begins with ``#``.\n\n\nSubstitutions\n-------------\n\nreST supports \"substitutions\" (:duref:`ref &lt;substitution-definitions&gt;`), which\nare pieces of text and/or markup referred to in the text by ``|name|``.  They\nare defined like footnotes with explicit markup blocks, like this::\n\n   .. |name| replace:: replacement *text*\n\nor this::\n\n   .. |caution| image:: warning.png\n                :alt: Warning!\n\nSee the :duref:`reST reference for substitutions &lt;substitution-definitions&gt;`\nfor details.\n\nIf you want to use some substitutions for all documents, put them into\n:confval:`rst_prolog` or put them into a separate file and include it into all\ndocuments you want to use them in, using the :rst:dir:`include` directive.  (Be\nsure to give the include file a file name extension differing from that of other\nsource files, to avoid Sphinx finding it as a standalone document.)\n\nSphinx defines some default substitutions, see :ref:`default-substitutions`.\n\n\nComments\n--------\n\nEvery explicit markup block which isn't a valid markup construct (like the\nfootnotes above) is regarded as a comment (:duref:`ref &lt;comments&gt;`).  For\nexample::\n\n   .. This is a comment.\n\nYou can indent text after a comment start to form multiline comments::\n\n   ..\n      This whole indented block\n      is a comment.\n\n      Still in the comment.\n\n\nSource encoding\n---------------\n\nSince the easiest way to include special characters like em dashes or copyright\nsigns in reST is to directly write them as Unicode characters, one has to\nspecify an encoding.  Sphinx assumes source files to be encoded in UTF-8 by\ndefault; you can change this with the :confval:`source_encoding` config value.\n\n\nGotchas\n-------\n\nThere are some problems one commonly runs into while authoring reST documents:\n\n* **Separation of inline markup:** As said above, inline markup spans must be\n  separated from the surrounding text by non-word characters, you have to use a\n  backslash-escaped space to get around that.  See `the reference\n  &lt;http://docutils.sf.net/docs/ref/rst/restructuredtext.html#inline-markup&gt;`_\n  for the details.\n\n* **No nested inline markup:** Something like ``*see :func:`foo`*`` is not\n  possible.\n\n\n.. rubric:: Footnotes\n\n.. [1] When the default domain contains a :rst:dir:`class` directive, this directive\n       will be shadowed.  Therefore, Sphinx re-exports it as :rst:dir:`rst-class`.\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n      });\n    </script>\n    <p>\n        The <code>python</code> mode will be used for highlighting blocks\n        containing Python/IPython terminal sessions: blocks starting with\n        <code>&gt;&gt;&gt;</code> (for Python) or <code>In [num]:</code> (for\n        IPython).\n\n        Further, the <code>stex</code> mode will be used for highlighting\n        blocks containing LaTex code.\n    </p>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-rst</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/rst/rst.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../python/python\"), require(\"../stex/stex\"), require(\"../../addon/mode/overlay\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../python/python\", \"../stex/stex\", \"../../addon/mode/overlay\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode('rst', function (config, options) {\n\n  var rx_strong = /^\\*\\*[^\\*\\s](?:[^\\*]*[^\\*\\s])?\\*\\*/;\n  var rx_emphasis = /^\\*[^\\*\\s](?:[^\\*]*[^\\*\\s])?\\*/;\n  var rx_literal = /^``[^`\\s](?:[^`]*[^`\\s])``/;\n\n  var rx_number = /^(?:[\\d]+(?:[\\.,]\\d+)*)/;\n  var rx_positive = /^(?:\\s\\+[\\d]+(?:[\\.,]\\d+)*)/;\n  var rx_negative = /^(?:\\s\\-[\\d]+(?:[\\.,]\\d+)*)/;\n\n  var rx_uri_protocol = \"[Hh][Tt][Tt][Pp][Ss]?://\";\n  var rx_uri_domain = \"(?:[\\\\d\\\\w.-]+)\\\\.(?:\\\\w{2,6})\";\n  var rx_uri_path = \"(?:/[\\\\d\\\\w\\\\#\\\\%\\\\&\\\\-\\\\.\\\\,\\\\/\\\\:\\\\=\\\\?\\\\~]+)*\";\n  var rx_uri = new RegExp(\"^\" + rx_uri_protocol + rx_uri_domain + rx_uri_path);\n\n  var overlay = {\n    token: function (stream) {\n\n      if (stream.match(rx_strong) && stream.match (/\\W+|$/, false))\n        return 'strong';\n      if (stream.match(rx_emphasis) && stream.match (/\\W+|$/, false))\n        return 'em';\n      if (stream.match(rx_literal) && stream.match (/\\W+|$/, false))\n        return 'string-2';\n      if (stream.match(rx_number))\n        return 'number';\n      if (stream.match(rx_positive))\n        return 'positive';\n      if (stream.match(rx_negative))\n        return 'negative';\n      if (stream.match(rx_uri))\n        return 'link';\n\n      while (stream.next() != null) {\n        if (stream.match(rx_strong, false)) break;\n        if (stream.match(rx_emphasis, false)) break;\n        if (stream.match(rx_literal, false)) break;\n        if (stream.match(rx_number, false)) break;\n        if (stream.match(rx_positive, false)) break;\n        if (stream.match(rx_negative, false)) break;\n        if (stream.match(rx_uri, false)) break;\n      }\n\n      return null;\n    }\n  };\n\n  var mode = CodeMirror.getMode(\n    config, options.backdrop || 'rst-base'\n  );\n\n  return CodeMirror.overlayMode(mode, overlay, true); // combine\n}, 'python', 'stex');\n\n///////////////////////////////////////////////////////////////////////////////\n///////////////////////////////////////////////////////////////////////////////\n\nCodeMirror.defineMode('rst-base', function (config) {\n\n  ///////////////////////////////////////////////////////////////////////////\n  ///////////////////////////////////////////////////////////////////////////\n\n  function format(string) {\n    var args = Array.prototype.slice.call(arguments, 1);\n    return string.replace(/{(\\d+)}/g, function (match, n) {\n      return typeof args[n] != 'undefined' ? args[n] : match;\n    });\n  }\n\n  ///////////////////////////////////////////////////////////////////////////\n  ///////////////////////////////////////////////////////////////////////////\n\n  var mode_python = CodeMirror.getMode(config, 'python');\n  var mode_stex = CodeMirror.getMode(config, 'stex');\n\n  ///////////////////////////////////////////////////////////////////////////\n  ///////////////////////////////////////////////////////////////////////////\n\n  var SEPA = \"\\\\s+\";\n  var TAIL = \"(?:\\\\s*|\\\\W|$)\",\n  rx_TAIL = new RegExp(format('^{0}', TAIL));\n\n  var NAME =\n    \"(?:[^\\\\W\\\\d_](?:[\\\\w!\\\"#$%&'()\\\\*\\\\+,\\\\-\\\\.\\/:;<=>\\\\?]*[^\\\\W_])?)\",\n  rx_NAME = new RegExp(format('^{0}', NAME));\n  var NAME_WWS =\n    \"(?:[^\\\\W\\\\d_](?:[\\\\w\\\\s!\\\"#$%&'()\\\\*\\\\+,\\\\-\\\\.\\/:;<=>\\\\?]*[^\\\\W_])?)\";\n  var REF_NAME = format('(?:{0}|`{1}`)', NAME, NAME_WWS);\n\n  var TEXT1 = \"(?:[^\\\\s\\\\|](?:[^\\\\|]*[^\\\\s\\\\|])?)\";\n  var TEXT2 = \"(?:[^\\\\`]+)\",\n  rx_TEXT2 = new RegExp(format('^{0}', TEXT2));\n\n  var rx_section = new RegExp(\n    \"^([!'#$%&\\\"()*+,-./:;<=>?@\\\\[\\\\\\\\\\\\]^_`{|}~])\\\\1{3,}\\\\s*$\");\n  var rx_explicit = new RegExp(\n    format('^\\\\.\\\\.{0}', SEPA));\n  var rx_link = new RegExp(\n    format('^_{0}:{1}|^__:{1}', REF_NAME, TAIL));\n  var rx_directive = new RegExp(\n    format('^{0}::{1}', REF_NAME, TAIL));\n  var rx_substitution = new RegExp(\n    format('^\\\\|{0}\\\\|{1}{2}::{3}', TEXT1, SEPA, REF_NAME, TAIL));\n  var rx_footnote = new RegExp(\n    format('^\\\\[(?:\\\\d+|#{0}?|\\\\*)]{1}', REF_NAME, TAIL));\n  var rx_citation = new RegExp(\n    format('^\\\\[{0}\\\\]{1}', REF_NAME, TAIL));\n\n  var rx_substitution_ref = new RegExp(\n    format('^\\\\|{0}\\\\|', TEXT1));\n  var rx_footnote_ref = new RegExp(\n    format('^\\\\[(?:\\\\d+|#{0}?|\\\\*)]_', REF_NAME));\n  var rx_citation_ref = new RegExp(\n    format('^\\\\[{0}\\\\]_', REF_NAME));\n  var rx_link_ref1 = new RegExp(\n    format('^{0}__?', REF_NAME));\n  var rx_link_ref2 = new RegExp(\n    format('^`{0}`_', TEXT2));\n\n  var rx_role_pre = new RegExp(\n    format('^:{0}:`{1}`{2}', NAME, TEXT2, TAIL));\n  var rx_role_suf = new RegExp(\n    format('^`{1}`:{0}:{2}', NAME, TEXT2, TAIL));\n  var rx_role = new RegExp(\n    format('^:{0}:{1}', NAME, TAIL));\n\n  var rx_directive_name = new RegExp(format('^{0}', REF_NAME));\n  var rx_directive_tail = new RegExp(format('^::{0}', TAIL));\n  var rx_substitution_text = new RegExp(format('^\\\\|{0}\\\\|', TEXT1));\n  var rx_substitution_sepa = new RegExp(format('^{0}', SEPA));\n  var rx_substitution_name = new RegExp(format('^{0}', REF_NAME));\n  var rx_substitution_tail = new RegExp(format('^::{0}', TAIL));\n  var rx_link_head = new RegExp(\"^_\");\n  var rx_link_name = new RegExp(format('^{0}|_', REF_NAME));\n  var rx_link_tail = new RegExp(format('^:{0}', TAIL));\n\n  var rx_verbatim = new RegExp('^::\\\\s*$');\n  var rx_examples = new RegExp('^\\\\s+(?:>>>|In \\\\[\\\\d+\\\\]:)\\\\s');\n\n  ///////////////////////////////////////////////////////////////////////////\n  ///////////////////////////////////////////////////////////////////////////\n\n  function to_normal(stream, state) {\n    var token = null;\n\n    if (stream.sol() && stream.match(rx_examples, false)) {\n      change(state, to_mode, {\n        mode: mode_python, local: CodeMirror.startState(mode_python)\n      });\n    } else if (stream.sol() && stream.match(rx_explicit)) {\n      change(state, to_explicit);\n      token = 'meta';\n    } else if (stream.sol() && stream.match(rx_section)) {\n      change(state, to_normal);\n      token = 'header';\n    } else if (phase(state) == rx_role_pre ||\n               stream.match(rx_role_pre, false)) {\n\n      switch (stage(state)) {\n      case 0:\n        change(state, to_normal, context(rx_role_pre, 1));\n        stream.match(/^:/);\n        token = 'meta';\n        break;\n      case 1:\n        change(state, to_normal, context(rx_role_pre, 2));\n        stream.match(rx_NAME);\n        token = 'keyword';\n\n        if (stream.current().match(/^(?:math|latex)/)) {\n          state.tmp_stex = true;\n        }\n        break;\n      case 2:\n        change(state, to_normal, context(rx_role_pre, 3));\n        stream.match(/^:`/);\n        token = 'meta';\n        break;\n      case 3:\n        if (state.tmp_stex) {\n          state.tmp_stex = undefined; state.tmp = {\n            mode: mode_stex, local: CodeMirror.startState(mode_stex)\n          };\n        }\n\n        if (state.tmp) {\n          if (stream.peek() == '`') {\n            change(state, to_normal, context(rx_role_pre, 4));\n            state.tmp = undefined;\n            break;\n          }\n\n          token = state.tmp.mode.token(stream, state.tmp.local);\n          break;\n        }\n\n        change(state, to_normal, context(rx_role_pre, 4));\n        stream.match(rx_TEXT2);\n        token = 'string';\n        break;\n      case 4:\n        change(state, to_normal, context(rx_role_pre, 5));\n        stream.match(/^`/);\n        token = 'meta';\n        break;\n      case 5:\n        change(state, to_normal, context(rx_role_pre, 6));\n        stream.match(rx_TAIL);\n        break;\n      default:\n        change(state, to_normal);\n      }\n    } else if (phase(state) == rx_role_suf ||\n               stream.match(rx_role_suf, false)) {\n\n      switch (stage(state)) {\n      case 0:\n        change(state, to_normal, context(rx_role_suf, 1));\n        stream.match(/^`/);\n        token = 'meta';\n        break;\n      case 1:\n        change(state, to_normal, context(rx_role_suf, 2));\n        stream.match(rx_TEXT2);\n        token = 'string';\n        break;\n      case 2:\n        change(state, to_normal, context(rx_role_suf, 3));\n        stream.match(/^`:/);\n        token = 'meta';\n        break;\n      case 3:\n        change(state, to_normal, context(rx_role_suf, 4));\n        stream.match(rx_NAME);\n        token = 'keyword';\n        break;\n      case 4:\n        change(state, to_normal, context(rx_role_suf, 5));\n        stream.match(/^:/);\n        token = 'meta';\n        break;\n      case 5:\n        change(state, to_normal, context(rx_role_suf, 6));\n        stream.match(rx_TAIL);\n        break;\n      default:\n        change(state, to_normal);\n      }\n    } else if (phase(state) == rx_role || stream.match(rx_role, false)) {\n\n      switch (stage(state)) {\n      case 0:\n        change(state, to_normal, context(rx_role, 1));\n        stream.match(/^:/);\n        token = 'meta';\n        break;\n      case 1:\n        change(state, to_normal, context(rx_role, 2));\n        stream.match(rx_NAME);\n        token = 'keyword';\n        break;\n      case 2:\n        change(state, to_normal, context(rx_role, 3));\n        stream.match(/^:/);\n        token = 'meta';\n        break;\n      case 3:\n        change(state, to_normal, context(rx_role, 4));\n        stream.match(rx_TAIL);\n        break;\n      default:\n        change(state, to_normal);\n      }\n    } else if (phase(state) == rx_substitution_ref ||\n               stream.match(rx_substitution_ref, false)) {\n\n      switch (stage(state)) {\n      case 0:\n        change(state, to_normal, context(rx_substitution_ref, 1));\n        stream.match(rx_substitution_text);\n        token = 'variable-2';\n        break;\n      case 1:\n        change(state, to_normal, context(rx_substitution_ref, 2));\n        if (stream.match(/^_?_?/)) token = 'link';\n        break;\n      default:\n        change(state, to_normal);\n      }\n    } else if (stream.match(rx_footnote_ref)) {\n      change(state, to_normal);\n      token = 'quote';\n    } else if (stream.match(rx_citation_ref)) {\n      change(state, to_normal);\n      token = 'quote';\n    } else if (stream.match(rx_link_ref1)) {\n      change(state, to_normal);\n      if (!stream.peek() || stream.peek().match(/^\\W$/)) {\n        token = 'link';\n      }\n    } else if (phase(state) == rx_link_ref2 ||\n               stream.match(rx_link_ref2, false)) {\n\n      switch (stage(state)) {\n      case 0:\n        if (!stream.peek() || stream.peek().match(/^\\W$/)) {\n          change(state, to_normal, context(rx_link_ref2, 1));\n        } else {\n          stream.match(rx_link_ref2);\n        }\n        break;\n      case 1:\n        change(state, to_normal, context(rx_link_ref2, 2));\n        stream.match(/^`/);\n        token = 'link';\n        break;\n      case 2:\n        change(state, to_normal, context(rx_link_ref2, 3));\n        stream.match(rx_TEXT2);\n        break;\n      case 3:\n        change(state, to_normal, context(rx_link_ref2, 4));\n        stream.match(/^`_/);\n        token = 'link';\n        break;\n      default:\n        change(state, to_normal);\n      }\n    } else if (stream.match(rx_verbatim)) {\n      change(state, to_verbatim);\n    }\n\n    else {\n      if (stream.next()) change(state, to_normal);\n    }\n\n    return token;\n  }\n\n  ///////////////////////////////////////////////////////////////////////////\n  ///////////////////////////////////////////////////////////////////////////\n\n  function to_explicit(stream, state) {\n    var token = null;\n\n    if (phase(state) == rx_substitution ||\n        stream.match(rx_substitution, false)) {\n\n      switch (stage(state)) {\n      case 0:\n        change(state, to_explicit, context(rx_substitution, 1));\n        stream.match(rx_substitution_text);\n        token = 'variable-2';\n        break;\n      case 1:\n        change(state, to_explicit, context(rx_substitution, 2));\n        stream.match(rx_substitution_sepa);\n        break;\n      case 2:\n        change(state, to_explicit, context(rx_substitution, 3));\n        stream.match(rx_substitution_name);\n        token = 'keyword';\n        break;\n      case 3:\n        change(state, to_explicit, context(rx_substitution, 4));\n        stream.match(rx_substitution_tail);\n        token = 'meta';\n        break;\n      default:\n        change(state, to_normal);\n      }\n    } else if (phase(state) == rx_directive ||\n               stream.match(rx_directive, false)) {\n\n      switch (stage(state)) {\n      case 0:\n        change(state, to_explicit, context(rx_directive, 1));\n        stream.match(rx_directive_name);\n        token = 'keyword';\n\n        if (stream.current().match(/^(?:math|latex)/))\n          state.tmp_stex = true;\n        else if (stream.current().match(/^python/))\n          state.tmp_py = true;\n        break;\n      case 1:\n        change(state, to_explicit, context(rx_directive, 2));\n        stream.match(rx_directive_tail);\n        token = 'meta';\n\n        if (stream.match(/^latex\\s*$/) || state.tmp_stex) {\n          state.tmp_stex = undefined; change(state, to_mode, {\n            mode: mode_stex, local: CodeMirror.startState(mode_stex)\n          });\n        }\n        break;\n      case 2:\n        change(state, to_explicit, context(rx_directive, 3));\n        if (stream.match(/^python\\s*$/) || state.tmp_py) {\n          state.tmp_py = undefined; change(state, to_mode, {\n            mode: mode_python, local: CodeMirror.startState(mode_python)\n          });\n        }\n        break;\n      default:\n        change(state, to_normal);\n      }\n    } else if (phase(state) == rx_link || stream.match(rx_link, false)) {\n\n      switch (stage(state)) {\n      case 0:\n        change(state, to_explicit, context(rx_link, 1));\n        stream.match(rx_link_head);\n        stream.match(rx_link_name);\n        token = 'link';\n        break;\n      case 1:\n        change(state, to_explicit, context(rx_link, 2));\n        stream.match(rx_link_tail);\n        token = 'meta';\n        break;\n      default:\n        change(state, to_normal);\n      }\n    } else if (stream.match(rx_footnote)) {\n      change(state, to_normal);\n      token = 'quote';\n    } else if (stream.match(rx_citation)) {\n      change(state, to_normal);\n      token = 'quote';\n    }\n\n    else {\n      stream.eatSpace();\n      if (stream.eol()) {\n        change(state, to_normal);\n      } else {\n        stream.skipToEnd();\n        change(state, to_comment);\n        token = 'comment';\n      }\n    }\n\n    return token;\n  }\n\n  ///////////////////////////////////////////////////////////////////////////\n  ///////////////////////////////////////////////////////////////////////////\n\n  function to_comment(stream, state) {\n    return as_block(stream, state, 'comment');\n  }\n\n  function to_verbatim(stream, state) {\n    return as_block(stream, state, 'meta');\n  }\n\n  function as_block(stream, state, token) {\n    if (stream.eol() || stream.eatSpace()) {\n      stream.skipToEnd();\n      return token;\n    } else {\n      change(state, to_normal);\n      return null;\n    }\n  }\n\n  ///////////////////////////////////////////////////////////////////////////\n  ///////////////////////////////////////////////////////////////////////////\n\n  function to_mode(stream, state) {\n\n    if (state.ctx.mode && state.ctx.local) {\n\n      if (stream.sol()) {\n        if (!stream.eatSpace()) change(state, to_normal);\n        return null;\n      }\n\n      return state.ctx.mode.token(stream, state.ctx.local);\n    }\n\n    change(state, to_normal);\n    return null;\n  }\n\n  ///////////////////////////////////////////////////////////////////////////\n  ///////////////////////////////////////////////////////////////////////////\n\n  function context(phase, stage, mode, local) {\n    return {phase: phase, stage: stage, mode: mode, local: local};\n  }\n\n  function change(state, tok, ctx) {\n    state.tok = tok;\n    state.ctx = ctx || {};\n  }\n\n  function stage(state) {\n    return state.ctx.stage || 0;\n  }\n\n  function phase(state) {\n    return state.ctx.phase;\n  }\n\n  ///////////////////////////////////////////////////////////////////////////\n  ///////////////////////////////////////////////////////////////////////////\n\n  return {\n    startState: function () {\n      return {tok: to_normal, ctx: context(undefined, 0)};\n    },\n\n    copyState: function (state) {\n      var ctx = state.ctx, tmp = state.tmp;\n      if (ctx.local)\n        ctx = {mode: ctx.mode, local: CodeMirror.copyState(ctx.mode, ctx.local)};\n      if (tmp)\n        tmp = {mode: tmp.mode, local: CodeMirror.copyState(tmp.mode, tmp.local)};\n      return {tok: state.tok, ctx: ctx, tmp: tmp};\n    },\n\n    innerMode: function (state) {\n      return state.tmp      ? {state: state.tmp.local, mode: state.tmp.mode}\n      : state.ctx.mode ? {state: state.ctx.local, mode: state.ctx.mode}\n      : null;\n    },\n\n    token: function (stream, state) {\n      return state.tok(stream, state);\n    }\n  };\n}, 'python', 'stex');\n\n///////////////////////////////////////////////////////////////////////////////\n///////////////////////////////////////////////////////////////////////////////\n\nCodeMirror.defineMIME('text/x-rst', 'rst');\n\n///////////////////////////////////////////////////////////////////////////////\n///////////////////////////////////////////////////////////////////////////////\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/ruby/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Ruby mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"ruby.js\"></script>\n<style>\n      .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}\n      .cm-s-default span.cm-arrow { color: red; }\n    </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Ruby</a>\n  </ul>\n</div>\n\n<article>\n<h2>Ruby mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n# Code from http://sandbox.mc.edu/~bennet/ruby/code/poly_rb.html\n#\n# This program evaluates polynomials.  It first asks for the coefficients\n# of a polynomial, which must be entered on one line, highest-order first.\n# It then requests values of x and will compute the value of the poly for\n# each x.  It will repeatly ask for x values, unless you the user enters\n# a blank line.  It that case, it will ask for another polynomial.  If the\n# user types quit for either input, the program immediately exits.\n#\n\n#\n# Function to evaluate a polynomial at x.  The polynomial is given\n# as a list of coefficients, from the greatest to the least.\ndef polyval(x, coef)\n    sum = 0\n    coef = coef.clone           # Don't want to destroy the original\n    while true\n        sum += coef.shift       # Add and remove the next coef\n        break if coef.empty?    # If no more, done entirely.\n        sum *= x                # This happens the right number of times.\n    end\n    return sum\nend\n\n#\n# Function to read a line containing a list of integers and return\n# them as an array of integers.  If the string conversion fails, it\n# throws TypeError.  If the input line is the word 'quit', then it\n# converts it to an end-of-file exception\ndef readints(prompt)\n    # Read a line\n    print prompt\n    line = readline.chomp\n    raise EOFError.new if line == 'quit' # You can also use a real EOF.\n            \n    # Go through each item on the line, converting each one and adding it\n    # to retval.\n    retval = [ ]\n    for str in line.split(/\\s+/)\n        if str =~ /^\\-?\\d+$/\n            retval.push(str.to_i)\n        else\n            raise TypeError.new\n        end\n    end\n\n    return retval\nend\n\n#\n# Take a coeff and an exponent and return the string representation, ignoring\n# the sign of the coefficient.\ndef term_to_str(coef, exp)\n    ret = \"\"\n\n    # Show coeff, unless it's 1 or at the right\n    coef = coef.abs\n    ret = coef.to_s     unless coef == 1 && exp > 0\n    ret += \"x\" if exp > 0                               # x if exponent not 0\n    ret += \"^\" + exp.to_s if exp > 1                    # ^exponent, if > 1.\n\n    return ret\nend\n\n#\n# Create a string of the polynomial in sort-of-readable form.\ndef polystr(p)\n    # Get the exponent of first coefficient, plus 1.\n    exp = p.length\n\n    # Assign exponents to each term, making pairs of coeff and exponent,\n    # Then get rid of the zero terms.\n    p = (p.map { |c| exp -= 1; [ c, exp ] }).select { |p| p[0] != 0 }\n\n    # If there's nothing left, it's a zero\n    return \"0\" if p.empty?\n\n    # *** Now p is a non-empty list of [ coef, exponent ] pairs. ***\n\n    # Convert the first term, preceded by a \"-\" if it's negative.\n    result = (if p[0][0] < 0 then \"-\" else \"\" end) + term_to_str(*p[0])\n\n    # Convert the rest of the terms, in each case adding the appropriate\n    # + or - separating them.  \n    for term in p[1...p.length]\n        # Add the separator then the rep. of the term.\n        result += (if term[0] < 0 then \" - \" else \" + \" end) + \n                term_to_str(*term)\n    end\n\n    return result\nend\n        \n#\n# Run until some kind of endfile.\nbegin\n    # Repeat until an exception or quit gets us out.\n    while true\n        # Read a poly until it works.  An EOF will except out of the\n        # program.\n        print \"\\n\"\n        begin\n            poly = readints(\"Enter a polynomial coefficients: \")\n        rescue TypeError\n            print \"Try again.\\n\"\n            retry\n        end\n        break if poly.empty?\n\n        # Read and evaluate x values until the user types a blank line.\n        # Again, an EOF will except out of the pgm.\n        while true\n            # Request an integer.\n            print \"Enter x value or blank line: \"\n            x = readline.chomp\n            break if x == ''\n            raise EOFError.new if x == 'quit'\n\n            # If it looks bad, let's try again.\n            if x !~ /^\\-?\\d+$/\n                print \"That doesn't look like an integer.  Please try again.\\n\"\n                next\n            end\n\n            # Convert to an integer and print the result.\n            x = x.to_i\n            print \"p(x) = \", polystr(poly), \"\\n\"\n            print \"p(\", x, \") = \", polyval(x, poly), \"\\n\"\n        end\n    end\nrescue EOFError\n    print \"\\n=== EOF ===\\n\"\nrescue Interrupt, SignalException\n    print \"\\n=== Interrupted ===\\n\"\nelse\n    print \"--- Bye ---\\n\"\nend\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: \"text/x-ruby\",\n        matchBrackets: true,\n        indentUnit: 4\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-ruby</code>.</p>\n\n    <p>Development of the CodeMirror Ruby mode was kindly sponsored\n    by <a href=\"http://ubalo.com/\">Ubalo</a>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/ruby/ruby.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"ruby\", function(config) {\n  function wordObj(words) {\n    var o = {};\n    for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true;\n    return o;\n  }\n  var keywords = wordObj([\n    \"alias\", \"and\", \"BEGIN\", \"begin\", \"break\", \"case\", \"class\", \"def\", \"defined?\", \"do\", \"else\",\n    \"elsif\", \"END\", \"end\", \"ensure\", \"false\", \"for\", \"if\", \"in\", \"module\", \"next\", \"not\", \"or\",\n    \"redo\", \"rescue\", \"retry\", \"return\", \"self\", \"super\", \"then\", \"true\", \"undef\", \"unless\",\n    \"until\", \"when\", \"while\", \"yield\", \"nil\", \"raise\", \"throw\", \"catch\", \"fail\", \"loop\", \"callcc\",\n    \"caller\", \"lambda\", \"proc\", \"public\", \"protected\", \"private\", \"require\", \"load\",\n    \"require_relative\", \"extend\", \"autoload\", \"__END__\", \"__FILE__\", \"__LINE__\", \"__dir__\"\n  ]);\n  var indentWords = wordObj([\"def\", \"class\", \"case\", \"for\", \"while\", \"module\", \"then\",\n                             \"catch\", \"loop\", \"proc\", \"begin\"]);\n  var dedentWords = wordObj([\"end\", \"until\"]);\n  var matching = {\"[\": \"]\", \"{\": \"}\", \"(\": \")\"};\n  var curPunc;\n\n  function chain(newtok, stream, state) {\n    state.tokenize.push(newtok);\n    return newtok(stream, state);\n  }\n\n  function tokenBase(stream, state) {\n    curPunc = null;\n    if (stream.sol() && stream.match(\"=begin\") && stream.eol()) {\n      state.tokenize.push(readBlockComment);\n      return \"comment\";\n    }\n    if (stream.eatSpace()) return null;\n    var ch = stream.next(), m;\n    if (ch == \"`\" || ch == \"'\" || ch == '\"') {\n      return chain(readQuoted(ch, \"string\", ch == '\"' || ch == \"`\"), stream, state);\n    } else if (ch == \"/\") {\n      var currentIndex = stream.current().length;\n      if (stream.skipTo(\"/\")) {\n        var search_till = stream.current().length;\n        stream.backUp(stream.current().length - currentIndex);\n        var balance = 0;  // balance brackets\n        while (stream.current().length < search_till) {\n          var chchr = stream.next();\n          if (chchr == \"(\") balance += 1;\n          else if (chchr == \")\") balance -= 1;\n          if (balance < 0) break;\n        }\n        stream.backUp(stream.current().length - currentIndex);\n        if (balance == 0)\n          return chain(readQuoted(ch, \"string-2\", true), stream, state);\n      }\n      return \"operator\";\n    } else if (ch == \"%\") {\n      var style = \"string\", embed = true;\n      if (stream.eat(\"s\")) style = \"atom\";\n      else if (stream.eat(/[WQ]/)) style = \"string\";\n      else if (stream.eat(/[r]/)) style = \"string-2\";\n      else if (stream.eat(/[wxq]/)) { style = \"string\"; embed = false; }\n      var delim = stream.eat(/[^\\w\\s=]/);\n      if (!delim) return \"operator\";\n      if (matching.propertyIsEnumerable(delim)) delim = matching[delim];\n      return chain(readQuoted(delim, style, embed, true), stream, state);\n    } else if (ch == \"#\") {\n      stream.skipToEnd();\n      return \"comment\";\n    } else if (ch == \"<\" && (m = stream.match(/^<-?[\\`\\\"\\']?([a-zA-Z_?]\\w*)[\\`\\\"\\']?(?:;|$)/))) {\n      return chain(readHereDoc(m[1]), stream, state);\n    } else if (ch == \"0\") {\n      if (stream.eat(\"x\")) stream.eatWhile(/[\\da-fA-F]/);\n      else if (stream.eat(\"b\")) stream.eatWhile(/[01]/);\n      else stream.eatWhile(/[0-7]/);\n      return \"number\";\n    } else if (/\\d/.test(ch)) {\n      stream.match(/^[\\d_]*(?:\\.[\\d_]+)?(?:[eE][+\\-]?[\\d_]+)?/);\n      return \"number\";\n    } else if (ch == \"?\") {\n      while (stream.match(/^\\\\[CM]-/)) {}\n      if (stream.eat(\"\\\\\")) stream.eatWhile(/\\w/);\n      else stream.next();\n      return \"string\";\n    } else if (ch == \":\") {\n      if (stream.eat(\"'\")) return chain(readQuoted(\"'\", \"atom\", false), stream, state);\n      if (stream.eat('\"')) return chain(readQuoted('\"', \"atom\", true), stream, state);\n\n      // :> :>> :< :<< are valid symbols\n      if (stream.eat(/[\\<\\>]/)) {\n        stream.eat(/[\\<\\>]/);\n        return \"atom\";\n      }\n\n      // :+ :- :/ :* :| :& :! are valid symbols\n      if (stream.eat(/[\\+\\-\\*\\/\\&\\|\\:\\!]/)) {\n        return \"atom\";\n      }\n\n      // Symbols can't start by a digit\n      if (stream.eat(/[a-zA-Z$@_\\xa1-\\uffff]/)) {\n        stream.eatWhile(/[\\w$\\xa1-\\uffff]/);\n        // Only one ? ! = is allowed and only as the last character\n        stream.eat(/[\\?\\!\\=]/);\n        return \"atom\";\n      }\n      return \"operator\";\n    } else if (ch == \"@\" && stream.match(/^@?[a-zA-Z_\\xa1-\\uffff]/)) {\n      stream.eat(\"@\");\n      stream.eatWhile(/[\\w\\xa1-\\uffff]/);\n      return \"variable-2\";\n    } else if (ch == \"$\") {\n      if (stream.eat(/[a-zA-Z_]/)) {\n        stream.eatWhile(/[\\w]/);\n      } else if (stream.eat(/\\d/)) {\n        stream.eat(/\\d/);\n      } else {\n        stream.next(); // Must be a special global like $: or $!\n      }\n      return \"variable-3\";\n    } else if (/[a-zA-Z_\\xa1-\\uffff]/.test(ch)) {\n      stream.eatWhile(/[\\w\\xa1-\\uffff]/);\n      stream.eat(/[\\?\\!]/);\n      if (stream.eat(\":\")) return \"atom\";\n      return \"ident\";\n    } else if (ch == \"|\" && (state.varList || state.lastTok == \"{\" || state.lastTok == \"do\")) {\n      curPunc = \"|\";\n      return null;\n    } else if (/[\\(\\)\\[\\]{}\\\\;]/.test(ch)) {\n      curPunc = ch;\n      return null;\n    } else if (ch == \"-\" && stream.eat(\">\")) {\n      return \"arrow\";\n    } else if (/[=+\\-\\/*:\\.^%<>~|]/.test(ch)) {\n      var more = stream.eatWhile(/[=+\\-\\/*:\\.^%<>~|]/);\n      if (ch == \".\" && !more) curPunc = \".\";\n      return \"operator\";\n    } else {\n      return null;\n    }\n  }\n\n  function tokenBaseUntilBrace(depth) {\n    if (!depth) depth = 1;\n    return function(stream, state) {\n      if (stream.peek() == \"}\") {\n        if (depth == 1) {\n          state.tokenize.pop();\n          return state.tokenize[state.tokenize.length-1](stream, state);\n        } else {\n          state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth - 1);\n        }\n      } else if (stream.peek() == \"{\") {\n        state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth + 1);\n      }\n      return tokenBase(stream, state);\n    };\n  }\n  function tokenBaseOnce() {\n    var alreadyCalled = false;\n    return function(stream, state) {\n      if (alreadyCalled) {\n        state.tokenize.pop();\n        return state.tokenize[state.tokenize.length-1](stream, state);\n      }\n      alreadyCalled = true;\n      return tokenBase(stream, state);\n    };\n  }\n  function readQuoted(quote, style, embed, unescaped) {\n    return function(stream, state) {\n      var escaped = false, ch;\n\n      if (state.context.type === 'read-quoted-paused') {\n        state.context = state.context.prev;\n        stream.eat(\"}\");\n      }\n\n      while ((ch = stream.next()) != null) {\n        if (ch == quote && (unescaped || !escaped)) {\n          state.tokenize.pop();\n          break;\n        }\n        if (embed && ch == \"#\" && !escaped) {\n          if (stream.eat(\"{\")) {\n            if (quote == \"}\") {\n              state.context = {prev: state.context, type: 'read-quoted-paused'};\n            }\n            state.tokenize.push(tokenBaseUntilBrace());\n            break;\n          } else if (/[@\\$]/.test(stream.peek())) {\n            state.tokenize.push(tokenBaseOnce());\n            break;\n          }\n        }\n        escaped = !escaped && ch == \"\\\\\";\n      }\n      return style;\n    };\n  }\n  function readHereDoc(phrase) {\n    return function(stream, state) {\n      if (stream.match(phrase)) state.tokenize.pop();\n      else stream.skipToEnd();\n      return \"string\";\n    };\n  }\n  function readBlockComment(stream, state) {\n    if (stream.sol() && stream.match(\"=end\") && stream.eol())\n      state.tokenize.pop();\n    stream.skipToEnd();\n    return \"comment\";\n  }\n\n  return {\n    startState: function() {\n      return {tokenize: [tokenBase],\n              indented: 0,\n              context: {type: \"top\", indented: -config.indentUnit},\n              continuedLine: false,\n              lastTok: null,\n              varList: false};\n    },\n\n    token: function(stream, state) {\n      if (stream.sol()) state.indented = stream.indentation();\n      var style = state.tokenize[state.tokenize.length-1](stream, state), kwtype;\n      var thisTok = curPunc;\n      if (style == \"ident\") {\n        var word = stream.current();\n        style = state.lastTok == \".\" ? \"property\"\n          : keywords.propertyIsEnumerable(stream.current()) ? \"keyword\"\n          : /^[A-Z]/.test(word) ? \"tag\"\n          : (state.lastTok == \"def\" || state.lastTok == \"class\" || state.varList) ? \"def\"\n          : \"variable\";\n        if (style == \"keyword\") {\n          thisTok = word;\n          if (indentWords.propertyIsEnumerable(word)) kwtype = \"indent\";\n          else if (dedentWords.propertyIsEnumerable(word)) kwtype = \"dedent\";\n          else if ((word == \"if\" || word == \"unless\") && stream.column() == stream.indentation())\n            kwtype = \"indent\";\n          else if (word == \"do\" && state.context.indented < state.indented)\n            kwtype = \"indent\";\n        }\n      }\n      if (curPunc || (style && style != \"comment\")) state.lastTok = thisTok;\n      if (curPunc == \"|\") state.varList = !state.varList;\n\n      if (kwtype == \"indent\" || /[\\(\\[\\{]/.test(curPunc))\n        state.context = {prev: state.context, type: curPunc || style, indented: state.indented};\n      else if ((kwtype == \"dedent\" || /[\\)\\]\\}]/.test(curPunc)) && state.context.prev)\n        state.context = state.context.prev;\n\n      if (stream.eol())\n        state.continuedLine = (curPunc == \"\\\\\" || style == \"operator\");\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize[state.tokenize.length-1] != tokenBase) return 0;\n      var firstChar = textAfter && textAfter.charAt(0);\n      var ct = state.context;\n      var closing = ct.type == matching[firstChar] ||\n        ct.type == \"keyword\" && /^(?:end|until|else|elsif|when|rescue)\\b/.test(textAfter);\n      return ct.indented + (closing ? 0 : config.indentUnit) +\n        (state.continuedLine ? config.indentUnit : 0);\n    },\n\n    electricChars: \"}de\", // enD and rescuE\n    lineComment: \"#\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-ruby\", \"ruby\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/ruby/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  var mode = CodeMirror.getMode({indentUnit: 2}, \"ruby\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }\n\n  MT(\"divide_equal_operator\",\n     \"[variable bar] [operator /=] [variable foo]\");\n\n  MT(\"divide_equal_operator_no_spacing\",\n     \"[variable foo][operator /=][number 42]\");\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/rust/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Rust mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"rust.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Rust</a>\n  </ul>\n</div>\n\n<article>\n<h2>Rust mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\n// Demo code.\n\ntype foo<T> = int;\nenum bar {\n    some(int, foo<float>),\n    none\n}\n\nfn check_crate(x: int) {\n    let v = 10;\n    alt foo {\n      1 to 3 {\n        print_foo();\n        if x {\n            blah() + 10;\n        }\n      }\n      (x, y) { \"bye\" }\n      _ { \"hi\" }\n    }\n}\n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-rustsrc</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/rust/rust.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"rust\", function() {\n  var indentUnit = 4, altIndentUnit = 2;\n  var valKeywords = {\n    \"if\": \"if-style\", \"while\": \"if-style\", \"loop\": \"else-style\", \"else\": \"else-style\",\n    \"do\": \"else-style\", \"ret\": \"else-style\", \"fail\": \"else-style\",\n    \"break\": \"atom\", \"cont\": \"atom\", \"const\": \"let\", \"resource\": \"fn\",\n    \"let\": \"let\", \"fn\": \"fn\", \"for\": \"for\", \"alt\": \"alt\", \"iface\": \"iface\",\n    \"impl\": \"impl\", \"type\": \"type\", \"enum\": \"enum\", \"mod\": \"mod\",\n    \"as\": \"op\", \"true\": \"atom\", \"false\": \"atom\", \"assert\": \"op\", \"check\": \"op\",\n    \"claim\": \"op\", \"native\": \"ignore\", \"unsafe\": \"ignore\", \"import\": \"else-style\",\n    \"export\": \"else-style\", \"copy\": \"op\", \"log\": \"op\", \"log_err\": \"op\",\n    \"use\": \"op\", \"bind\": \"op\", \"self\": \"atom\", \"struct\": \"enum\"\n  };\n  var typeKeywords = function() {\n    var keywords = {\"fn\": \"fn\", \"block\": \"fn\", \"obj\": \"obj\"};\n    var atoms = \"bool uint int i8 i16 i32 i64 u8 u16 u32 u64 float f32 f64 str char\".split(\" \");\n    for (var i = 0, e = atoms.length; i < e; ++i) keywords[atoms[i]] = \"atom\";\n    return keywords;\n  }();\n  var operatorChar = /[+\\-*&%=<>!?|\\.@]/;\n\n  // Tokenizer\n\n  // Used as scratch variable to communicate multiple values without\n  // consing up tons of objects.\n  var tcat, content;\n  function r(tc, style) {\n    tcat = tc;\n    return style;\n  }\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    if (ch == '\"') {\n      state.tokenize = tokenString;\n      return state.tokenize(stream, state);\n    }\n    if (ch == \"'\") {\n      tcat = \"atom\";\n      if (stream.eat(\"\\\\\")) {\n        if (stream.skipTo(\"'\")) { stream.next(); return \"string\"; }\n        else { return \"error\"; }\n      } else {\n        stream.next();\n        return stream.eat(\"'\") ? \"string\" : \"error\";\n      }\n    }\n    if (ch == \"/\") {\n      if (stream.eat(\"/\")) { stream.skipToEnd(); return \"comment\"; }\n      if (stream.eat(\"*\")) {\n        state.tokenize = tokenComment(1);\n        return state.tokenize(stream, state);\n      }\n    }\n    if (ch == \"#\") {\n      if (stream.eat(\"[\")) { tcat = \"open-attr\"; return null; }\n      stream.eatWhile(/\\w/);\n      return r(\"macro\", \"meta\");\n    }\n    if (ch == \":\" && stream.match(\":<\")) {\n      return r(\"op\", null);\n    }\n    if (ch.match(/\\d/) || (ch == \".\" && stream.eat(/\\d/))) {\n      var flp = false;\n      if (!stream.match(/^x[\\da-f]+/i) && !stream.match(/^b[01]+/)) {\n        stream.eatWhile(/\\d/);\n        if (stream.eat(\".\")) { flp = true; stream.eatWhile(/\\d/); }\n        if (stream.match(/^e[+\\-]?\\d+/i)) { flp = true; }\n      }\n      if (flp) stream.match(/^f(?:32|64)/);\n      else stream.match(/^[ui](?:8|16|32|64)/);\n      return r(\"atom\", \"number\");\n    }\n    if (ch.match(/[()\\[\\]{}:;,]/)) return r(ch, null);\n    if (ch == \"-\" && stream.eat(\">\")) return r(\"->\", null);\n    if (ch.match(operatorChar)) {\n      stream.eatWhile(operatorChar);\n      return r(\"op\", null);\n    }\n    stream.eatWhile(/\\w/);\n    content = stream.current();\n    if (stream.match(/^::\\w/)) {\n      stream.backUp(1);\n      return r(\"prefix\", \"variable-2\");\n    }\n    if (state.keywords.propertyIsEnumerable(content))\n      return r(state.keywords[content], content.match(/true|false/) ? \"atom\" : \"keyword\");\n    return r(\"name\", \"variable\");\n  }\n\n  function tokenString(stream, state) {\n    var ch, escaped = false;\n    while (ch = stream.next()) {\n      if (ch == '\"' && !escaped) {\n        state.tokenize = tokenBase;\n        return r(\"atom\", \"string\");\n      }\n      escaped = !escaped && ch == \"\\\\\";\n    }\n    // Hack to not confuse the parser when a string is split in\n    // pieces.\n    return r(\"op\", \"string\");\n  }\n\n  function tokenComment(depth) {\n    return function(stream, state) {\n      var lastCh = null, ch;\n      while (ch = stream.next()) {\n        if (ch == \"/\" && lastCh == \"*\") {\n          if (depth == 1) {\n            state.tokenize = tokenBase;\n            break;\n          } else {\n            state.tokenize = tokenComment(depth - 1);\n            return state.tokenize(stream, state);\n          }\n        }\n        if (ch == \"*\" && lastCh == \"/\") {\n          state.tokenize = tokenComment(depth + 1);\n          return state.tokenize(stream, state);\n        }\n        lastCh = ch;\n      }\n      return \"comment\";\n    };\n  }\n\n  // Parser\n\n  var cx = {state: null, stream: null, marked: null, cc: null};\n  function pass() {\n    for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n  }\n  function cont() {\n    pass.apply(null, arguments);\n    return true;\n  }\n\n  function pushlex(type, info) {\n    var result = function() {\n      var state = cx.state;\n      state.lexical = {indented: state.indented, column: cx.stream.column(),\n                       type: type, prev: state.lexical, info: info};\n    };\n    result.lex = true;\n    return result;\n  }\n  function poplex() {\n    var state = cx.state;\n    if (state.lexical.prev) {\n      if (state.lexical.type == \")\")\n        state.indented = state.lexical.indented;\n      state.lexical = state.lexical.prev;\n    }\n  }\n  function typecx() { cx.state.keywords = typeKeywords; }\n  function valcx() { cx.state.keywords = valKeywords; }\n  poplex.lex = typecx.lex = valcx.lex = true;\n\n  function commasep(comb, end) {\n    function more(type) {\n      if (type == \",\") return cont(comb, more);\n      if (type == end) return cont();\n      return cont(more);\n    }\n    return function(type) {\n      if (type == end) return cont();\n      return pass(comb, more);\n    };\n  }\n\n  function stat_of(comb, tag) {\n    return cont(pushlex(\"stat\", tag), comb, poplex, block);\n  }\n  function block(type) {\n    if (type == \"}\") return cont();\n    if (type == \"let\") return stat_of(letdef1, \"let\");\n    if (type == \"fn\") return stat_of(fndef);\n    if (type == \"type\") return cont(pushlex(\"stat\"), tydef, endstatement, poplex, block);\n    if (type == \"enum\") return stat_of(enumdef);\n    if (type == \"mod\") return stat_of(mod);\n    if (type == \"iface\") return stat_of(iface);\n    if (type == \"impl\") return stat_of(impl);\n    if (type == \"open-attr\") return cont(pushlex(\"]\"), commasep(expression, \"]\"), poplex);\n    if (type == \"ignore\" || type.match(/[\\]\\);,]/)) return cont(block);\n    return pass(pushlex(\"stat\"), expression, poplex, endstatement, block);\n  }\n  function endstatement(type) {\n    if (type == \";\") return cont();\n    return pass();\n  }\n  function expression(type) {\n    if (type == \"atom\" || type == \"name\") return cont(maybeop);\n    if (type == \"{\") return cont(pushlex(\"}\"), exprbrace, poplex);\n    if (type.match(/[\\[\\(]/)) return matchBrackets(type, expression);\n    if (type.match(/[\\]\\)\\};,]/)) return pass();\n    if (type == \"if-style\") return cont(expression, expression);\n    if (type == \"else-style\" || type == \"op\") return cont(expression);\n    if (type == \"for\") return cont(pattern, maybetype, inop, expression, expression);\n    if (type == \"alt\") return cont(expression, altbody);\n    if (type == \"fn\") return cont(fndef);\n    if (type == \"macro\") return cont(macro);\n    return cont();\n  }\n  function maybeop(type) {\n    if (content == \".\") return cont(maybeprop);\n    if (content == \"::<\"){return cont(typarams, maybeop);}\n    if (type == \"op\" || content == \":\") return cont(expression);\n    if (type == \"(\" || type == \"[\") return matchBrackets(type, expression);\n    return pass();\n  }\n  function maybeprop() {\n    if (content.match(/^\\w+$/)) {cx.marked = \"variable\"; return cont(maybeop);}\n    return pass(expression);\n  }\n  function exprbrace(type) {\n    if (type == \"op\") {\n      if (content == \"|\") return cont(blockvars, poplex, pushlex(\"}\", \"block\"), block);\n      if (content == \"||\") return cont(poplex, pushlex(\"}\", \"block\"), block);\n    }\n    if (content == \"mutable\" || (content.match(/^\\w+$/) && cx.stream.peek() == \":\"\n                                 && !cx.stream.match(\"::\", false)))\n      return pass(record_of(expression));\n    return pass(block);\n  }\n  function record_of(comb) {\n    function ro(type) {\n      if (content == \"mutable\" || content == \"with\") {cx.marked = \"keyword\"; return cont(ro);}\n      if (content.match(/^\\w*$/)) {cx.marked = \"variable\"; return cont(ro);}\n      if (type == \":\") return cont(comb, ro);\n      if (type == \"}\") return cont();\n      return cont(ro);\n    }\n    return ro;\n  }\n  function blockvars(type) {\n    if (type == \"name\") {cx.marked = \"def\"; return cont(blockvars);}\n    if (type == \"op\" && content == \"|\") return cont();\n    return cont(blockvars);\n  }\n\n  function letdef1(type) {\n    if (type.match(/[\\]\\)\\};]/)) return cont();\n    if (content == \"=\") return cont(expression, letdef2);\n    if (type == \",\") return cont(letdef1);\n    return pass(pattern, maybetype, letdef1);\n  }\n  function letdef2(type) {\n    if (type.match(/[\\]\\)\\};,]/)) return pass(letdef1);\n    else return pass(expression, letdef2);\n  }\n  function maybetype(type) {\n    if (type == \":\") return cont(typecx, rtype, valcx);\n    return pass();\n  }\n  function inop(type) {\n    if (type == \"name\" && content == \"in\") {cx.marked = \"keyword\"; return cont();}\n    return pass();\n  }\n  function fndef(type) {\n    if (content == \"@\" || content == \"~\") {cx.marked = \"keyword\"; return cont(fndef);}\n    if (type == \"name\") {cx.marked = \"def\"; return cont(fndef);}\n    if (content == \"<\") return cont(typarams, fndef);\n    if (type == \"{\") return pass(expression);\n    if (type == \"(\") return cont(pushlex(\")\"), commasep(argdef, \")\"), poplex, fndef);\n    if (type == \"->\") return cont(typecx, rtype, valcx, fndef);\n    if (type == \";\") return cont();\n    return cont(fndef);\n  }\n  function tydef(type) {\n    if (type == \"name\") {cx.marked = \"def\"; return cont(tydef);}\n    if (content == \"<\") return cont(typarams, tydef);\n    if (content == \"=\") return cont(typecx, rtype, valcx);\n    return cont(tydef);\n  }\n  function enumdef(type) {\n    if (type == \"name\") {cx.marked = \"def\"; return cont(enumdef);}\n    if (content == \"<\") return cont(typarams, enumdef);\n    if (content == \"=\") return cont(typecx, rtype, valcx, endstatement);\n    if (type == \"{\") return cont(pushlex(\"}\"), typecx, enumblock, valcx, poplex);\n    return cont(enumdef);\n  }\n  function enumblock(type) {\n    if (type == \"}\") return cont();\n    if (type == \"(\") return cont(pushlex(\")\"), commasep(rtype, \")\"), poplex, enumblock);\n    if (content.match(/^\\w+$/)) cx.marked = \"def\";\n    return cont(enumblock);\n  }\n  function mod(type) {\n    if (type == \"name\") {cx.marked = \"def\"; return cont(mod);}\n    if (type == \"{\") return cont(pushlex(\"}\"), block, poplex);\n    return pass();\n  }\n  function iface(type) {\n    if (type == \"name\") {cx.marked = \"def\"; return cont(iface);}\n    if (content == \"<\") return cont(typarams, iface);\n    if (type == \"{\") return cont(pushlex(\"}\"), block, poplex);\n    return pass();\n  }\n  function impl(type) {\n    if (content == \"<\") return cont(typarams, impl);\n    if (content == \"of\" || content == \"for\") {cx.marked = \"keyword\"; return cont(rtype, impl);}\n    if (type == \"name\") {cx.marked = \"def\"; return cont(impl);}\n    if (type == \"{\") return cont(pushlex(\"}\"), block, poplex);\n    return pass();\n  }\n  function typarams() {\n    if (content == \">\") return cont();\n    if (content == \",\") return cont(typarams);\n    if (content == \":\") return cont(rtype, typarams);\n    return pass(rtype, typarams);\n  }\n  function argdef(type) {\n    if (type == \"name\") {cx.marked = \"def\"; return cont(argdef);}\n    if (type == \":\") return cont(typecx, rtype, valcx);\n    return pass();\n  }\n  function rtype(type) {\n    if (type == \"name\") {cx.marked = \"variable-3\"; return cont(rtypemaybeparam); }\n    if (content == \"mutable\") {cx.marked = \"keyword\"; return cont(rtype);}\n    if (type == \"atom\") return cont(rtypemaybeparam);\n    if (type == \"op\" || type == \"obj\") return cont(rtype);\n    if (type == \"fn\") return cont(fntype);\n    if (type == \"{\") return cont(pushlex(\"{\"), record_of(rtype), poplex);\n    return matchBrackets(type, rtype);\n  }\n  function rtypemaybeparam() {\n    if (content == \"<\") return cont(typarams);\n    return pass();\n  }\n  function fntype(type) {\n    if (type == \"(\") return cont(pushlex(\"(\"), commasep(rtype, \")\"), poplex, fntype);\n    if (type == \"->\") return cont(rtype);\n    return pass();\n  }\n  function pattern(type) {\n    if (type == \"name\") {cx.marked = \"def\"; return cont(patternmaybeop);}\n    if (type == \"atom\") return cont(patternmaybeop);\n    if (type == \"op\") return cont(pattern);\n    if (type.match(/[\\]\\)\\};,]/)) return pass();\n    return matchBrackets(type, pattern);\n  }\n  function patternmaybeop(type) {\n    if (type == \"op\" && content == \".\") return cont();\n    if (content == \"to\") {cx.marked = \"keyword\"; return cont(pattern);}\n    else return pass();\n  }\n  function altbody(type) {\n    if (type == \"{\") return cont(pushlex(\"}\", \"alt\"), altblock1, poplex);\n    return pass();\n  }\n  function altblock1(type) {\n    if (type == \"}\") return cont();\n    if (type == \"|\") return cont(altblock1);\n    if (content == \"when\") {cx.marked = \"keyword\"; return cont(expression, altblock2);}\n    if (type.match(/[\\]\\);,]/)) return cont(altblock1);\n    return pass(pattern, altblock2);\n  }\n  function altblock2(type) {\n    if (type == \"{\") return cont(pushlex(\"}\", \"alt\"), block, poplex, altblock1);\n    else return pass(altblock1);\n  }\n\n  function macro(type) {\n    if (type.match(/[\\[\\(\\{]/)) return matchBrackets(type, expression);\n    return pass();\n  }\n  function matchBrackets(type, comb) {\n    if (type == \"[\") return cont(pushlex(\"]\"), commasep(comb, \"]\"), poplex);\n    if (type == \"(\") return cont(pushlex(\")\"), commasep(comb, \")\"), poplex);\n    if (type == \"{\") return cont(pushlex(\"}\"), commasep(comb, \"}\"), poplex);\n    return cont();\n  }\n\n  function parse(state, stream, style) {\n    var cc = state.cc;\n    // Communicate our context to the combinators.\n    // (Less wasteful than consing up a hundred closures on every call.)\n    cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc;\n\n    while (true) {\n      var combinator = cc.length ? cc.pop() : block;\n      if (combinator(tcat)) {\n        while(cc.length && cc[cc.length - 1].lex)\n          cc.pop()();\n        return cx.marked || style;\n      }\n    }\n  }\n\n  return {\n    startState: function() {\n      return {\n        tokenize: tokenBase,\n        cc: [],\n        lexical: {indented: -indentUnit, column: 0, type: \"top\", align: false},\n        keywords: valKeywords,\n        indented: 0\n      };\n    },\n\n    token: function(stream, state) {\n      if (stream.sol()) {\n        if (!state.lexical.hasOwnProperty(\"align\"))\n          state.lexical.align = false;\n        state.indented = stream.indentation();\n      }\n      if (stream.eatSpace()) return null;\n      tcat = content = null;\n      var style = state.tokenize(stream, state);\n      if (style == \"comment\") return style;\n      if (!state.lexical.hasOwnProperty(\"align\"))\n        state.lexical.align = true;\n      if (tcat == \"prefix\") return style;\n      if (!content) content = stream.current();\n      return parse(state, stream, style);\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize != tokenBase) return 0;\n      var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical,\n          type = lexical.type, closing = firstChar == type;\n      if (type == \"stat\") return lexical.indented + indentUnit;\n      if (lexical.align) return lexical.column + (closing ? 0 : 1);\n      return lexical.indented + (closing ? 0 : (lexical.info == \"alt\" ? altIndentUnit : indentUnit));\n    },\n\n    electricChars: \"{}\",\n    blockCommentStart: \"/*\",\n    blockCommentEnd: \"*/\",\n    lineComment: \"//\",\n    fold: \"brace\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-rustsrc\", \"rust\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/sass/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Sass mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"sass.js\"></script>\n<style>.CodeMirror {border: 1px solid #ddd; font-size:12px; height: 400px}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Sass</a>\n  </ul>\n</div>\n\n<article>\n<h2>Sass mode</h2>\n<form><textarea id=\"code\" name=\"code\">// Variable Definitions\n\n$page-width:    800px\n$sidebar-width: 200px\n$primary-color: #eeeeee\n\n// Global Attributes\n\nbody\n  font:\n    family: sans-serif\n    size: 30em\n    weight: bold\n\n// Scoped Styles\n\n#contents\n  width: $page-width\n  #sidebar\n    float: right\n    width: $sidebar-width\n  #main\n    width: $page-width - $sidebar-width\n    background: $primary-color\n    h2\n      color: blue\n\n#footer\n  height: 200px\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers : true,\n        matchBrackets : true\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-sass</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/sass/sass.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"sass\", function(config) {\n  function tokenRegexp(words) {\n    return new RegExp(\"^\" + words.join(\"|\"));\n  }\n\n  var keywords = [\"true\", \"false\", \"null\", \"auto\"];\n  var keywordsRegexp = new RegExp(\"^\" + keywords.join(\"|\"));\n\n  var operators = [\"\\\\(\", \"\\\\)\", \"=\", \">\", \"<\", \"==\", \">=\", \"<=\", \"\\\\+\", \"-\",\n                   \"\\\\!=\", \"/\", \"\\\\*\", \"%\", \"and\", \"or\", \"not\", \";\",\"\\\\{\",\"\\\\}\",\":\"];\n  var opRegexp = tokenRegexp(operators);\n\n  var pseudoElementsRegexp = /^::?[a-zA-Z_][\\w\\-]*/;\n\n  function urlTokens(stream, state) {\n    var ch = stream.peek();\n\n    if (ch === \")\") {\n      stream.next();\n      state.tokenizer = tokenBase;\n      return \"operator\";\n    } else if (ch === \"(\") {\n      stream.next();\n      stream.eatSpace();\n\n      return \"operator\";\n    } else if (ch === \"'\" || ch === '\"') {\n      state.tokenizer = buildStringTokenizer(stream.next());\n      return \"string\";\n    } else {\n      state.tokenizer = buildStringTokenizer(\")\", false);\n      return \"string\";\n    }\n  }\n  function comment(indentation, multiLine) {\n    return function(stream, state) {\n      if (stream.sol() && stream.indentation() <= indentation) {\n        state.tokenizer = tokenBase;\n        return tokenBase(stream, state);\n      }\n\n      if (multiLine && stream.skipTo(\"*/\")) {\n        stream.next();\n        stream.next();\n        state.tokenizer = tokenBase;\n      } else {\n        stream.skipToEnd();\n      }\n\n      return \"comment\";\n    };\n  }\n\n  function buildStringTokenizer(quote, greedy) {\n    if (greedy == null) { greedy = true; }\n\n    function stringTokenizer(stream, state) {\n      var nextChar = stream.next();\n      var peekChar = stream.peek();\n      var previousChar = stream.string.charAt(stream.pos-2);\n\n      var endingString = ((nextChar !== \"\\\\\" && peekChar === quote) || (nextChar === quote && previousChar !== \"\\\\\"));\n\n      if (endingString) {\n        if (nextChar !== quote && greedy) { stream.next(); }\n        state.tokenizer = tokenBase;\n        return \"string\";\n      } else if (nextChar === \"#\" && peekChar === \"{\") {\n        state.tokenizer = buildInterpolationTokenizer(stringTokenizer);\n        stream.next();\n        return \"operator\";\n      } else {\n        return \"string\";\n      }\n    }\n\n    return stringTokenizer;\n  }\n\n  function buildInterpolationTokenizer(currentTokenizer) {\n    return function(stream, state) {\n      if (stream.peek() === \"}\") {\n        stream.next();\n        state.tokenizer = currentTokenizer;\n        return \"operator\";\n      } else {\n        return tokenBase(stream, state);\n      }\n    };\n  }\n\n  function indent(state) {\n    if (state.indentCount == 0) {\n      state.indentCount++;\n      var lastScopeOffset = state.scopes[0].offset;\n      var currentOffset = lastScopeOffset + config.indentUnit;\n      state.scopes.unshift({ offset:currentOffset });\n    }\n  }\n\n  function dedent(state) {\n    if (state.scopes.length == 1) return;\n\n    state.scopes.shift();\n  }\n\n  function tokenBase(stream, state) {\n    var ch = stream.peek();\n\n    // Comment\n    if (stream.match(\"/*\")) {\n      state.tokenizer = comment(stream.indentation(), true);\n      return state.tokenizer(stream, state);\n    }\n    if (stream.match(\"//\")) {\n      state.tokenizer = comment(stream.indentation(), false);\n      return state.tokenizer(stream, state);\n    }\n\n    // Interpolation\n    if (stream.match(\"#{\")) {\n      state.tokenizer = buildInterpolationTokenizer(tokenBase);\n      return \"operator\";\n    }\n\n    // Strings\n    if (ch === '\"' || ch === \"'\") {\n      stream.next();\n      state.tokenizer = buildStringTokenizer(ch);\n      return \"string\";\n    }\n\n    if(!state.cursorHalf){// state.cursorHalf === 0\n    // first half i.e. before : for key-value pairs\n    // including selectors\n\n      if (ch === \".\") {\n        stream.next();\n        if (stream.match(/^[\\w-]+/)) {\n          indent(state);\n          return \"atom\";\n        } else if (stream.peek() === \"#\") {\n          indent(state);\n          return \"atom\";\n        }\n      }\n\n      if (ch === \"#\") {\n        stream.next();\n        // ID selectors\n        if (stream.match(/^[\\w-]+/)) {\n          indent(state);\n          return \"atom\";\n        }\n        if (stream.peek() === \"#\") {\n          indent(state);\n          return \"atom\";\n        }\n      }\n\n      // Variables\n      if (ch === \"$\") {\n        stream.next();\n        stream.eatWhile(/[\\w-]/);\n        return \"variable-2\";\n      }\n\n      // Numbers\n      if (stream.match(/^-?[0-9\\.]+/))\n        return \"number\";\n\n      // Units\n      if (stream.match(/^(px|em|in)\\b/))\n        return \"unit\";\n\n      if (stream.match(keywordsRegexp))\n        return \"keyword\";\n\n      if (stream.match(/^url/) && stream.peek() === \"(\") {\n        state.tokenizer = urlTokens;\n        return \"atom\";\n      }\n\n      if (ch === \"=\") {\n        // Match shortcut mixin definition\n        if (stream.match(/^=[\\w-]+/)) {\n          indent(state);\n          return \"meta\";\n        }\n      }\n\n      if (ch === \"+\") {\n        // Match shortcut mixin definition\n        if (stream.match(/^\\+[\\w-]+/)){\n          return \"variable-3\";\n        }\n      }\n\n      if(ch === \"@\"){\n        if(stream.match(/@extend/)){\n          if(!stream.match(/\\s*[\\w]/))\n            dedent(state);\n        }\n      }\n\n\n      // Indent Directives\n      if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)) {\n        indent(state);\n        return \"meta\";\n      }\n\n      // Other Directives\n      if (ch === \"@\") {\n        stream.next();\n        stream.eatWhile(/[\\w-]/);\n        return \"meta\";\n      }\n\n      if (stream.eatWhile(/[\\w-]/)){\n        if(stream.match(/ *: *[\\w-\\+\\$#!\\(\"']/,false)){\n          return \"propery\";\n        }\n        else if(stream.match(/ *:/,false)){\n          indent(state);\n          state.cursorHalf = 1;\n          return \"atom\";\n        }\n        else if(stream.match(/ *,/,false)){\n          return \"atom\";\n        }\n        else{\n          indent(state);\n          return \"atom\";\n        }\n      }\n\n      if(ch === \":\"){\n        if (stream.match(pseudoElementsRegexp)){ // could be a pseudo-element\n          return \"keyword\";\n        }\n        stream.next();\n        state.cursorHalf=1;\n        return \"operator\";\n      }\n\n    } // cursorHalf===0 ends here\n    else{\n\n      if (ch === \"#\") {\n        stream.next();\n        // Hex numbers\n        if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){\n          if(!stream.peek()){\n            state.cursorHalf = 0;\n          }\n          return \"number\";\n        }\n      }\n\n      // Numbers\n      if (stream.match(/^-?[0-9\\.]+/)){\n        if(!stream.peek()){\n          state.cursorHalf = 0;\n        }\n        return \"number\";\n      }\n\n      // Units\n      if (stream.match(/^(px|em|in)\\b/)){\n        if(!stream.peek()){\n          state.cursorHalf = 0;\n        }\n        return \"unit\";\n      }\n\n      if (stream.match(keywordsRegexp)){\n        if(!stream.peek()){\n          state.cursorHalf = 0;\n        }\n        return \"keyword\";\n      }\n\n      if (stream.match(/^url/) && stream.peek() === \"(\") {\n        state.tokenizer = urlTokens;\n        if(!stream.peek()){\n          state.cursorHalf = 0;\n        }\n        return \"atom\";\n      }\n\n      // Variables\n      if (ch === \"$\") {\n        stream.next();\n        stream.eatWhile(/[\\w-]/);\n        if(!stream.peek()){\n          state.cursorHalf = 0;\n        }\n        return \"variable-3\";\n      }\n\n      // bang character for !important, !default, etc.\n      if (ch === \"!\") {\n        stream.next();\n        if(!stream.peek()){\n          state.cursorHalf = 0;\n        }\n        return stream.match(/^[\\w]+/) ? \"keyword\": \"operator\";\n      }\n\n      if (stream.match(opRegexp)){\n        if(!stream.peek()){\n          state.cursorHalf = 0;\n        }\n        return \"operator\";\n      }\n\n      // attributes\n      if (stream.eatWhile(/[\\w-]/)) {\n        if(!stream.peek()){\n          state.cursorHalf = 0;\n        }\n        return \"attribute\";\n      }\n\n      //stream.eatSpace();\n      if(!stream.peek()){\n        state.cursorHalf = 0;\n        return null;\n      }\n\n    } // else ends here\n\n    if (stream.match(opRegexp))\n      return \"operator\";\n\n    // If we haven't returned by now, we move 1 character\n    // and return an error\n    stream.next();\n    return null;\n  }\n\n  function tokenLexer(stream, state) {\n    if (stream.sol()) state.indentCount = 0;\n    var style = state.tokenizer(stream, state);\n    var current = stream.current();\n\n    if (current === \"@return\" || current === \"}\"){\n      dedent(state);\n    }\n\n    if (style !== null) {\n      var startOfToken = stream.pos - current.length;\n\n      var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount);\n\n      var newScopes = [];\n\n      for (var i = 0; i < state.scopes.length; i++) {\n        var scope = state.scopes[i];\n\n        if (scope.offset <= withCurrentIndent)\n          newScopes.push(scope);\n      }\n\n      state.scopes = newScopes;\n    }\n\n\n    return style;\n  }\n\n  return {\n    startState: function() {\n      return {\n        tokenizer: tokenBase,\n        scopes: [{offset: 0, type: \"sass\"}],\n        indentCount: 0,\n        cursorHalf: 0,  // cursor half tells us if cursor lies after (1)\n                        // or before (0) colon (well... more or less)\n        definedVars: [],\n        definedMixins: []\n      };\n    },\n    token: function(stream, state) {\n      var style = tokenLexer(stream, state);\n\n      state.lastToken = { style: style, content: stream.current() };\n\n      return style;\n    },\n\n    indent: function(state) {\n      return state.scopes[0].offset;\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-sass\", \"sass\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/scheme/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Scheme mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"scheme.js\"></script>\n<style>.CodeMirror {background: #f8f8f8;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Scheme</a>\n  </ul>\n</div>\n\n<article>\n<h2>Scheme mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n; See if the input starts with a given symbol.\n(define (match-symbol input pattern)\n  (cond ((null? (remain input)) #f)\n\t((eqv? (car (remain input)) pattern) (r-cdr input))\n\t(else #f)))\n\n; Allow the input to start with one of a list of patterns.\n(define (match-or input pattern)\n  (cond ((null? pattern) #f)\n\t((match-pattern input (car pattern)))\n\t(else (match-or input (cdr pattern)))))\n\n; Allow a sequence of patterns.\n(define (match-seq input pattern)\n  (if (null? pattern)\n      input\n      (let ((match (match-pattern input (car pattern))))\n\t(if match (match-seq match (cdr pattern)) #f))))\n\n; Match with the pattern but no problem if it does not match.\n(define (match-opt input pattern)\n  (let ((match (match-pattern input (car pattern))))\n    (if match match input)))\n\n; Match anything (other than '()), until pattern is found. The rather\n; clumsy form of requiring an ending pattern is needed to decide where\n; the end of the match is. If none is given, this will match the rest\n; of the sentence.\n(define (match-any input pattern)\n  (cond ((null? (remain input)) #f)\n\t((null? pattern) (f-cons (remain input) (clear-remain input)))\n\t(else\n\t (let ((accum-any (collector)))\n\t   (define (match-pattern-any input pattern)\n\t     (cond ((null? (remain input)) #f)\n\t\t   (else (accum-any (car (remain input)))\n\t\t\t (cond ((match-pattern (r-cdr input) pattern))\n\t\t\t       (else (match-pattern-any (r-cdr input) pattern))))))\n\t   (let ((retval (match-pattern-any input (car pattern))))\n\t     (if retval\n\t\t (f-cons (accum-any) retval)\n\t\t #f))))))\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {});\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-scheme</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/scheme/scheme.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/**\n * Author: Koh Zi Han, based on implementation by Koh Zi Chun\n */\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"scheme\", function () {\n    var BUILTIN = \"builtin\", COMMENT = \"comment\", STRING = \"string\",\n        ATOM = \"atom\", NUMBER = \"number\", BRACKET = \"bracket\";\n    var INDENT_WORD_SKIP = 2;\n\n    function makeKeywords(str) {\n        var obj = {}, words = str.split(\" \");\n        for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n        return obj;\n    }\n\n    var keywords = makeKeywords(\"λ case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt #f floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? #t tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?\");\n    var indentKeys = makeKeywords(\"define let letrec let* lambda\");\n\n    function stateStack(indent, type, prev) { // represents a state stack object\n        this.indent = indent;\n        this.type = type;\n        this.prev = prev;\n    }\n\n    function pushStack(state, indent, type) {\n        state.indentStack = new stateStack(indent, type, state.indentStack);\n    }\n\n    function popStack(state) {\n        state.indentStack = state.indentStack.prev;\n    }\n\n    var binaryMatcher = new RegExp(/^(?:[-+]i|[-+][01]+#*(?:\\/[01]+#*)?i|[-+]?[01]+#*(?:\\/[01]+#*)?@[-+]?[01]+#*(?:\\/[01]+#*)?|[-+]?[01]+#*(?:\\/[01]+#*)?[-+](?:[01]+#*(?:\\/[01]+#*)?)?i|[-+]?[01]+#*(?:\\/[01]+#*)?)(?=[()\\s;\"]|$)/i);\n    var octalMatcher = new RegExp(/^(?:[-+]i|[-+][0-7]+#*(?:\\/[0-7]+#*)?i|[-+]?[0-7]+#*(?:\\/[0-7]+#*)?@[-+]?[0-7]+#*(?:\\/[0-7]+#*)?|[-+]?[0-7]+#*(?:\\/[0-7]+#*)?[-+](?:[0-7]+#*(?:\\/[0-7]+#*)?)?i|[-+]?[0-7]+#*(?:\\/[0-7]+#*)?)(?=[()\\s;\"]|$)/i);\n    var hexMatcher = new RegExp(/^(?:[-+]i|[-+][\\da-f]+#*(?:\\/[\\da-f]+#*)?i|[-+]?[\\da-f]+#*(?:\\/[\\da-f]+#*)?@[-+]?[\\da-f]+#*(?:\\/[\\da-f]+#*)?|[-+]?[\\da-f]+#*(?:\\/[\\da-f]+#*)?[-+](?:[\\da-f]+#*(?:\\/[\\da-f]+#*)?)?i|[-+]?[\\da-f]+#*(?:\\/[\\da-f]+#*)?)(?=[()\\s;\"]|$)/i);\n    var decimalMatcher = new RegExp(/^(?:[-+]i|[-+](?:(?:(?:\\d+#+\\.?#*|\\d+\\.\\d*#*|\\.\\d+#*|\\d+)(?:[esfdl][-+]?\\d+)?)|\\d+#*\\/\\d+#*)i|[-+]?(?:(?:(?:\\d+#+\\.?#*|\\d+\\.\\d*#*|\\.\\d+#*|\\d+)(?:[esfdl][-+]?\\d+)?)|\\d+#*\\/\\d+#*)@[-+]?(?:(?:(?:\\d+#+\\.?#*|\\d+\\.\\d*#*|\\.\\d+#*|\\d+)(?:[esfdl][-+]?\\d+)?)|\\d+#*\\/\\d+#*)|[-+]?(?:(?:(?:\\d+#+\\.?#*|\\d+\\.\\d*#*|\\.\\d+#*|\\d+)(?:[esfdl][-+]?\\d+)?)|\\d+#*\\/\\d+#*)[-+](?:(?:(?:\\d+#+\\.?#*|\\d+\\.\\d*#*|\\.\\d+#*|\\d+)(?:[esfdl][-+]?\\d+)?)|\\d+#*\\/\\d+#*)?i|(?:(?:(?:\\d+#+\\.?#*|\\d+\\.\\d*#*|\\.\\d+#*|\\d+)(?:[esfdl][-+]?\\d+)?)|\\d+#*\\/\\d+#*))(?=[()\\s;\"]|$)/i);\n\n    function isBinaryNumber (stream) {\n        return stream.match(binaryMatcher);\n    }\n\n    function isOctalNumber (stream) {\n        return stream.match(octalMatcher);\n    }\n\n    function isDecimalNumber (stream, backup) {\n        if (backup === true) {\n            stream.backUp(1);\n        }\n        return stream.match(decimalMatcher);\n    }\n\n    function isHexNumber (stream) {\n        return stream.match(hexMatcher);\n    }\n\n    return {\n        startState: function () {\n            return {\n                indentStack: null,\n                indentation: 0,\n                mode: false,\n                sExprComment: false\n            };\n        },\n\n        token: function (stream, state) {\n            if (state.indentStack == null && stream.sol()) {\n                // update indentation, but only if indentStack is empty\n                state.indentation = stream.indentation();\n            }\n\n            // skip spaces\n            if (stream.eatSpace()) {\n                return null;\n            }\n            var returnType = null;\n\n            switch(state.mode){\n                case \"string\": // multi-line string parsing mode\n                    var next, escaped = false;\n                    while ((next = stream.next()) != null) {\n                        if (next == \"\\\"\" && !escaped) {\n\n                            state.mode = false;\n                            break;\n                        }\n                        escaped = !escaped && next == \"\\\\\";\n                    }\n                    returnType = STRING; // continue on in scheme-string mode\n                    break;\n                case \"comment\": // comment parsing mode\n                    var next, maybeEnd = false;\n                    while ((next = stream.next()) != null) {\n                        if (next == \"#\" && maybeEnd) {\n\n                            state.mode = false;\n                            break;\n                        }\n                        maybeEnd = (next == \"|\");\n                    }\n                    returnType = COMMENT;\n                    break;\n                case \"s-expr-comment\": // s-expr commenting mode\n                    state.mode = false;\n                    if(stream.peek() == \"(\" || stream.peek() == \"[\"){\n                        // actually start scheme s-expr commenting mode\n                        state.sExprComment = 0;\n                    }else{\n                        // if not we just comment the entire of the next token\n                        stream.eatWhile(/[^/s]/); // eat non spaces\n                        returnType = COMMENT;\n                        break;\n                    }\n                default: // default parsing mode\n                    var ch = stream.next();\n\n                    if (ch == \"\\\"\") {\n                        state.mode = \"string\";\n                        returnType = STRING;\n\n                    } else if (ch == \"'\") {\n                        returnType = ATOM;\n                    } else if (ch == '#') {\n                        if (stream.eat(\"|\")) {                    // Multi-line comment\n                            state.mode = \"comment\"; // toggle to comment mode\n                            returnType = COMMENT;\n                        } else if (stream.eat(/[tf]/i)) {            // #t/#f (atom)\n                            returnType = ATOM;\n                        } else if (stream.eat(';')) {                // S-Expr comment\n                            state.mode = \"s-expr-comment\";\n                            returnType = COMMENT;\n                        } else {\n                            var numTest = null, hasExactness = false, hasRadix = true;\n                            if (stream.eat(/[ei]/i)) {\n                                hasExactness = true;\n                            } else {\n                                stream.backUp(1);       // must be radix specifier\n                            }\n                            if (stream.match(/^#b/i)) {\n                                numTest = isBinaryNumber;\n                            } else if (stream.match(/^#o/i)) {\n                                numTest = isOctalNumber;\n                            } else if (stream.match(/^#x/i)) {\n                                numTest = isHexNumber;\n                            } else if (stream.match(/^#d/i)) {\n                                numTest = isDecimalNumber;\n                            } else if (stream.match(/^[-+0-9.]/, false)) {\n                                hasRadix = false;\n                                numTest = isDecimalNumber;\n                            // re-consume the intial # if all matches failed\n                            } else if (!hasExactness) {\n                                stream.eat('#');\n                            }\n                            if (numTest != null) {\n                                if (hasRadix && !hasExactness) {\n                                    // consume optional exactness after radix\n                                    stream.match(/^#[ei]/i);\n                                }\n                                if (numTest(stream))\n                                    returnType = NUMBER;\n                            }\n                        }\n                    } else if (/^[-+0-9.]/.test(ch) && isDecimalNumber(stream, true)) { // match non-prefixed number, must be decimal\n                        returnType = NUMBER;\n                    } else if (ch == \";\") { // comment\n                        stream.skipToEnd(); // rest of the line is a comment\n                        returnType = COMMENT;\n                    } else if (ch == \"(\" || ch == \"[\") {\n                      var keyWord = ''; var indentTemp = stream.column(), letter;\n                        /**\n                        Either\n                        (indent-word ..\n                        (non-indent-word ..\n                        (;something else, bracket, etc.\n                        */\n\n                        while ((letter = stream.eat(/[^\\s\\(\\[\\;\\)\\]]/)) != null) {\n                            keyWord += letter;\n                        }\n\n                        if (keyWord.length > 0 && indentKeys.propertyIsEnumerable(keyWord)) { // indent-word\n\n                            pushStack(state, indentTemp + INDENT_WORD_SKIP, ch);\n                        } else { // non-indent word\n                            // we continue eating the spaces\n                            stream.eatSpace();\n                            if (stream.eol() || stream.peek() == \";\") {\n                                // nothing significant after\n                                // we restart indentation 1 space after\n                                pushStack(state, indentTemp + 1, ch);\n                            } else {\n                                pushStack(state, indentTemp + stream.current().length, ch); // else we match\n                            }\n                        }\n                        stream.backUp(stream.current().length - 1); // undo all the eating\n\n                        if(typeof state.sExprComment == \"number\") state.sExprComment++;\n\n                        returnType = BRACKET;\n                    } else if (ch == \")\" || ch == \"]\") {\n                        returnType = BRACKET;\n                        if (state.indentStack != null && state.indentStack.type == (ch == \")\" ? \"(\" : \"[\")) {\n                            popStack(state);\n\n                            if(typeof state.sExprComment == \"number\"){\n                                if(--state.sExprComment == 0){\n                                    returnType = COMMENT; // final closing bracket\n                                    state.sExprComment = false; // turn off s-expr commenting mode\n                                }\n                            }\n                        }\n                    } else {\n                        stream.eatWhile(/[\\w\\$_\\-!$%&*+\\.\\/:<=>?@\\^~]/);\n\n                        if (keywords && keywords.propertyIsEnumerable(stream.current())) {\n                            returnType = BUILTIN;\n                        } else returnType = \"variable\";\n                    }\n            }\n            return (typeof state.sExprComment == \"number\") ? COMMENT : returnType;\n        },\n\n        indent: function (state) {\n            if (state.indentStack == null) return state.indentation;\n            return state.indentStack.indent;\n        },\n\n        lineComment: \";;\"\n    };\n});\n\nCodeMirror.defineMIME(\"text/x-scheme\", \"scheme\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/shell/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Shell mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=stylesheet href=../../lib/codemirror.css>\n<script src=../../lib/codemirror.js></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=shell.js></script>\n<style type=text/css>\n  .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}\n</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Shell</a>\n  </ul>\n</div>\n\n<article>\n<h2>Shell mode</h2>\n\n\n<textarea id=code>\n#!/bin/bash\n\n# clone the repository\ngit clone http://github.com/garden/tree\n\n# generate HTTPS credentials\ncd tree\nopenssl genrsa -aes256 -out https.key 1024\nopenssl req -new -nodes -key https.key -out https.csr\nopenssl x509 -req -days 365 -in https.csr -signkey https.key -out https.crt\ncp https.key{,.orig}\nopenssl rsa -in https.key.orig -out https.key\n\n# start the server in HTTPS mode\ncd web\nsudo node ../server.js 443 'yes' &gt;&gt; ../node.log &amp;\n\n# here is how to stop the server\nfor pid in `ps aux | grep 'node ../server.js' | awk '{print $2}'` ; do\n  sudo kill -9 $pid 2&gt; /dev/null\ndone\n\nexit 0</textarea>\n\n<script>\n  var editor = CodeMirror.fromTextArea(document.getElementById('code'), {\n    mode: 'shell',\n    lineNumbers: true,\n    matchBrackets: true\n  });\n</script>\n\n<p><strong>MIME types defined:</strong> <code>text/x-sh</code>.</p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/shell/shell.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode('shell', function() {\n\n  var words = {};\n  function define(style, string) {\n    var split = string.split(' ');\n    for(var i = 0; i < split.length; i++) {\n      words[split[i]] = style;\n    }\n  };\n\n  // Atoms\n  define('atom', 'true false');\n\n  // Keywords\n  define('keyword', 'if then do else elif while until for in esac fi fin ' +\n    'fil done exit set unset export function');\n\n  // Commands\n  define('builtin', 'ab awk bash beep cat cc cd chown chmod chroot clear cp ' +\n    'curl cut diff echo find gawk gcc get git grep kill killall ln ls make ' +\n    'mkdir openssl mv nc node npm ping ps restart rm rmdir sed service sh ' +\n    'shopt shred source sort sleep ssh start stop su sudo tee telnet top ' +\n    'touch vi vim wall wc wget who write yes zsh');\n\n  function tokenBase(stream, state) {\n    if (stream.eatSpace()) return null;\n\n    var sol = stream.sol();\n    var ch = stream.next();\n\n    if (ch === '\\\\') {\n      stream.next();\n      return null;\n    }\n    if (ch === '\\'' || ch === '\"' || ch === '`') {\n      state.tokens.unshift(tokenString(ch));\n      return tokenize(stream, state);\n    }\n    if (ch === '#') {\n      if (sol && stream.eat('!')) {\n        stream.skipToEnd();\n        return 'meta'; // 'comment'?\n      }\n      stream.skipToEnd();\n      return 'comment';\n    }\n    if (ch === '$') {\n      state.tokens.unshift(tokenDollar);\n      return tokenize(stream, state);\n    }\n    if (ch === '+' || ch === '=') {\n      return 'operator';\n    }\n    if (ch === '-') {\n      stream.eat('-');\n      stream.eatWhile(/\\w/);\n      return 'attribute';\n    }\n    if (/\\d/.test(ch)) {\n      stream.eatWhile(/\\d/);\n      if(stream.eol() || !/\\w/.test(stream.peek())) {\n        return 'number';\n      }\n    }\n    stream.eatWhile(/[\\w-]/);\n    var cur = stream.current();\n    if (stream.peek() === '=' && /\\w+/.test(cur)) return 'def';\n    return words.hasOwnProperty(cur) ? words[cur] : null;\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var next, end = false, escaped = false;\n      while ((next = stream.next()) != null) {\n        if (next === quote && !escaped) {\n          end = true;\n          break;\n        }\n        if (next === '$' && !escaped && quote !== '\\'') {\n          escaped = true;\n          stream.backUp(1);\n          state.tokens.unshift(tokenDollar);\n          break;\n        }\n        escaped = !escaped && next === '\\\\';\n      }\n      if (end || !escaped) {\n        state.tokens.shift();\n      }\n      return (quote === '`' || quote === ')' ? 'quote' : 'string');\n    };\n  };\n\n  var tokenDollar = function(stream, state) {\n    if (state.tokens.length > 1) stream.eat('$');\n    var ch = stream.next(), hungry = /\\w/;\n    if (ch === '{') hungry = /[^}]/;\n    if (ch === '(') {\n      state.tokens[0] = tokenString(')');\n      return tokenize(stream, state);\n    }\n    if (!/\\d/.test(ch)) {\n      stream.eatWhile(hungry);\n      stream.eat('}');\n    }\n    state.tokens.shift();\n    return 'def';\n  };\n\n  function tokenize(stream, state) {\n    return (state.tokens[0] || tokenBase) (stream, state);\n  };\n\n  return {\n    startState: function() {return {tokens:[]};},\n    token: function(stream, state) {\n      return tokenize(stream, state);\n    },\n    lineComment: '#',\n    fold: \"brace\"\n  };\n});\n\nCodeMirror.defineMIME('text/x-sh', 'shell');\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/shell/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  var mode = CodeMirror.getMode({}, \"shell\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }\n\n  MT(\"var\",\n     \"text [def $var] text\");\n  MT(\"varBraces\",\n     \"text[def ${var}]text\");\n  MT(\"varVar\",\n     \"text [def $a$b] text\");\n  MT(\"varBracesVarBraces\",\n     \"text[def ${a}${b}]text\");\n\n  MT(\"singleQuotedVar\",\n     \"[string 'text $var text']\");\n  MT(\"singleQuotedVarBraces\",\n     \"[string 'text ${var} text']\");\n\n  MT(\"doubleQuotedVar\",\n     '[string \"text ][def $var][string  text\"]');\n  MT(\"doubleQuotedVarBraces\",\n     '[string \"text][def ${var}][string text\"]');\n  MT(\"doubleQuotedVarPunct\",\n     '[string \"text ][def $@][string  text\"]');\n  MT(\"doubleQuotedVarVar\",\n     '[string \"][def $a$b][string \"]');\n  MT(\"doubleQuotedVarBracesVarBraces\",\n     '[string \"][def ${a}${b}][string \"]');\n\n  MT(\"notAString\",\n     \"text\\\\'text\");\n  MT(\"escapes\",\n     \"outside\\\\'\\\\\\\"\\\\`\\\\\\\\[string \\\"inside\\\\`\\\\'\\\\\\\"\\\\\\\\`\\\\$notAVar\\\"]outside\\\\$\\\\(notASubShell\\\\)\");\n\n  MT(\"subshell\",\n     \"[builtin echo] [quote $(whoami)] s log, stardate [quote `date`].\");\n  MT(\"doubleQuotedSubshell\",\n     \"[builtin echo] [string \\\"][quote $(whoami)][string 's log, stardate `date`.\\\"]\");\n\n  MT(\"hashbang\",\n     \"[meta #!/bin/bash]\");\n  MT(\"comment\",\n     \"text [comment # Blurb]\");\n\n  MT(\"numbers\",\n     \"[number 0] [number 1] [number 2]\");\n  MT(\"keywords\",\n     \"[keyword while] [atom true]; [keyword do]\",\n     \"  [builtin sleep] [number 3]\",\n     \"[keyword done]\");\n  MT(\"options\",\n     \"[builtin ls] [attribute -l] [attribute --human-readable]\");\n  MT(\"operator\",\n     \"[def var][operator =]value\");\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/sieve/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Sieve (RFC5228) mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"sieve.js\"></script>\n<style>.CodeMirror {background: #f8f8f8;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Sieve (RFC5228)</a>\n  </ul>\n</div>\n\n<article>\n<h2>Sieve (RFC5228) mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n#\n# Example Sieve Filter\n# Declare any optional features or extension used by the script\n#\n\nrequire [\"fileinto\", \"reject\"];\n\n#\n# Reject any large messages (note that the four leading dots get\n# \"stuffed\" to three)\n#\nif size :over 1M\n{\n  reject text:\nPlease do not send me large attachments.\nPut your file on a server and send me the URL.\nThank you.\n.... Fred\n.\n;\n  stop;\n}\n\n#\n# Handle messages from known mailing lists\n# Move messages from IETF filter discussion list to filter folder\n#\nif header :is \"Sender\" \"owner-ietf-mta-filters@imc.org\"\n{\n  fileinto \"filter\";  # move to \"filter\" folder\n}\n#\n# Keep all messages to or from people in my company\n#\nelsif address :domain :is [\"From\", \"To\"] \"example.com\"\n{\n  keep;               # keep in \"In\" folder\n}\n\n#\n# Try and catch unsolicited email.  If a message is not to me,\n# or it contains a subject known to be spam, file it away.\n#\nelsif anyof (not address :all :contains\n               [\"To\", \"Cc\", \"Bcc\"] \"me@example.com\",\n             header :matches \"subject\"\n               [\"*make*money*fast*\", \"*university*dipl*mas*\"])\n{\n  # If message header does not contain my address,\n  # it's from a list.\n  fileinto \"spam\";   # move to \"spam\" folder\n}\nelse\n{\n  # Move all other (non-company) mail to \"personal\"\n  # folder.\n  fileinto \"personal\";\n}\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {});\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>application/sieve</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/sieve/sieve.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"sieve\", function(config) {\n  function words(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  var keywords = words(\"if elsif else stop require\");\n  var atoms = words(\"true false not\");\n  var indentUnit = config.indentUnit;\n\n  function tokenBase(stream, state) {\n\n    var ch = stream.next();\n    if (ch == \"/\" && stream.eat(\"*\")) {\n      state.tokenize = tokenCComment;\n      return tokenCComment(stream, state);\n    }\n\n    if (ch === '#') {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n\n    if (ch == \"\\\"\") {\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    }\n\n    if (ch == \"(\") {\n      state._indent.push(\"(\");\n      // add virtual angel wings so that editor behaves...\n      // ...more sane incase of broken brackets\n      state._indent.push(\"{\");\n      return null;\n    }\n\n    if (ch === \"{\") {\n      state._indent.push(\"{\");\n      return null;\n    }\n\n    if (ch == \")\")  {\n      state._indent.pop();\n      state._indent.pop();\n    }\n\n    if (ch === \"}\") {\n      state._indent.pop();\n      return null;\n    }\n\n    if (ch == \",\")\n      return null;\n\n    if (ch == \";\")\n      return null;\n\n\n    if (/[{}\\(\\),;]/.test(ch))\n      return null;\n\n    // 1*DIGIT \"K\" / \"M\" / \"G\"\n    if (/\\d/.test(ch)) {\n      stream.eatWhile(/[\\d]/);\n      stream.eat(/[KkMmGg]/);\n      return \"number\";\n    }\n\n    // \":\" (ALPHA / \"_\") *(ALPHA / DIGIT / \"_\")\n    if (ch == \":\") {\n      stream.eatWhile(/[a-zA-Z_]/);\n      stream.eatWhile(/[a-zA-Z0-9_]/);\n\n      return \"operator\";\n    }\n\n    stream.eatWhile(/\\w/);\n    var cur = stream.current();\n\n    // \"text:\" *(SP / HTAB) (hash-comment / CRLF)\n    // *(multiline-literal / multiline-dotstart)\n    // \".\" CRLF\n    if ((cur == \"text\") && stream.eat(\":\"))\n    {\n      state.tokenize = tokenMultiLineString;\n      return \"string\";\n    }\n\n    if (keywords.propertyIsEnumerable(cur))\n      return \"keyword\";\n\n    if (atoms.propertyIsEnumerable(cur))\n      return \"atom\";\n\n    return null;\n  }\n\n  function tokenMultiLineString(stream, state)\n  {\n    state._multiLineString = true;\n    // the first line is special it may contain a comment\n    if (!stream.sol()) {\n      stream.eatSpace();\n\n      if (stream.peek() == \"#\") {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n\n      stream.skipToEnd();\n      return \"string\";\n    }\n\n    if ((stream.next() == \".\")  && (stream.eol()))\n    {\n      state._multiLineString = false;\n      state.tokenize = tokenBase;\n    }\n\n    return \"string\";\n  }\n\n  function tokenCComment(stream, state) {\n    var maybeEnd = false, ch;\n    while ((ch = stream.next()) != null) {\n      if (maybeEnd && ch == \"/\") {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return \"comment\";\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == quote && !escaped)\n          break;\n        escaped = !escaped && ch == \"\\\\\";\n      }\n      if (!escaped) state.tokenize = tokenBase;\n      return \"string\";\n    };\n  }\n\n  return {\n    startState: function(base) {\n      return {tokenize: tokenBase,\n              baseIndent: base || 0,\n              _indent: []};\n    },\n\n    token: function(stream, state) {\n      if (stream.eatSpace())\n        return null;\n\n      return (state.tokenize || tokenBase)(stream, state);;\n    },\n\n    indent: function(state, _textAfter) {\n      var length = state._indent.length;\n      if (_textAfter && (_textAfter[0] == \"}\"))\n        length--;\n\n      if (length <0)\n        length = 0;\n\n      return length * indentUnit;\n    },\n\n    electricChars: \"}\"\n  };\n});\n\nCodeMirror.defineMIME(\"application/sieve\", \"sieve\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/slim/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: SLIM mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../theme/ambiance.css\">\n<script src=\"https://code.jquery.com/jquery-1.11.1.min.js\"></script>\n<script src=\"https://code.jquery.com/ui/1.11.0/jquery-ui.min.js\"></script>\n<link rel=\"stylesheet\" href=\"https://code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../xml/xml.js\"></script>\n<script src=\"../htmlembedded/htmlembedded.js\"></script>\n<script src=\"../htmlmixed/htmlmixed.js\"></script>\n<script src=\"../coffeescript/coffeescript.js\"></script>\n<script src=\"../javascript/javascript.js\"></script>\n<script src=\"../ruby/ruby.js\"></script>\n<script src=\"../markdown/markdown.js\"></script>\n<script src=\"slim.js\"></script>\n<style>.CodeMirror {background: #f8f8f8;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">SLIM</a>\n  </ul>\n</div>\n\n<article>\n  <h2>SLIM mode</h2>\n  <form><textarea id=\"code\" name=\"code\">\nbody\n  table\n    - for user in users\n      td id=\"user_#{user.id}\" class=user.role\n        a href=user_action(user, :edit) Edit #{user.name}\n        a href=(path_to_user user) = user.name\nbody\n  h1(id=\"logo\") = page_logo\n  h2[id=\"tagline\" class=\"small tagline\"] = page_tagline\n\nh2[id=\"tagline\"\n   class=\"small tagline\"] = page_tagline\n\nh1 id = \"logo\" = page_logo\nh2 [ id = \"tagline\" ] = page_tagline\n\n/ comment\n  second line\n/! html comment\n   second line\n<!-- html comment -->\n<a href=\"#{'hello' if set}\">link</a>\na.slim href=\"work\" disabled=false running==:atom Text <b>bold</b>\n.clazz data-id=\"test\" == 'hello' unless quark\n | Text mode #{12}\n   Second line\n= x ||= :ruby_atom\n#menu.left\n  - @env.each do |x|\n    li: a = x\n*@dyntag attr=\"val\"\n.first *{:class => [:second, :third]} Text\n.second class=[\"text\",\"more\"]\n.third class=:text,:symbol\n\n  </textarea></form>\n  <script>\n    var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n      lineNumbers: true,\n      theme: \"ambiance\",\n      mode: \"application/x-slim\"\n    });\n    $('.CodeMirror').resizable({\n      resize: function() {\n        editor.setSize($(this).width(), $(this).height());\n        //editor.refresh();\n      }\n    });\n  </script>\n\n  <p><strong>MIME types defined:</strong> <code>application/x-slim</code>.</p>\n\n  <p>\n    <strong>Parsing/Highlighting Tests:</strong>\n    <a href=\"../../test/index.html#slim_*\">normal</a>,\n    <a href=\"../../test/index.html#verbose,slim_*\">verbose</a>.\n  </p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/slim/slim.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../htmlmixed/htmlmixed\"), require(\"../ruby/ruby\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../htmlmixed/htmlmixed\", \"../ruby/ruby\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\n  CodeMirror.defineMode(\"slim\", function(config) {\n    var htmlMode = CodeMirror.getMode(config, {name: \"htmlmixed\"});\n    var rubyMode = CodeMirror.getMode(config, \"ruby\");\n    var modes = { html: htmlMode, ruby: rubyMode };\n    var embedded = {\n      ruby: \"ruby\",\n      javascript: \"javascript\",\n      css: \"text/css\",\n      sass: \"text/x-sass\",\n      scss: \"text/x-scss\",\n      less: \"text/x-less\",\n      styl: \"text/x-styl\", // no highlighting so far\n      coffee: \"coffeescript\",\n      asciidoc: \"text/x-asciidoc\",\n      markdown: \"text/x-markdown\",\n      textile: \"text/x-textile\", // no highlighting so far\n      creole: \"text/x-creole\", // no highlighting so far\n      wiki: \"text/x-wiki\", // no highlighting so far\n      mediawiki: \"text/x-mediawiki\", // no highlighting so far\n      rdoc: \"text/x-rdoc\", // no highlighting so far\n      builder: \"text/x-builder\", // no highlighting so far\n      nokogiri: \"text/x-nokogiri\", // no highlighting so far\n      erb: \"application/x-erb\"\n    };\n    var embeddedRegexp = function(map){\n      var arr = [];\n      for(var key in map) arr.push(key);\n      return new RegExp(\"^(\"+arr.join('|')+\"):\");\n    }(embedded);\n\n    var styleMap = {\n      \"commentLine\": \"comment\",\n      \"slimSwitch\": \"operator special\",\n      \"slimTag\": \"tag\",\n      \"slimId\": \"attribute def\",\n      \"slimClass\": \"attribute qualifier\",\n      \"slimAttribute\": \"attribute\",\n      \"slimSubmode\": \"keyword special\",\n      \"closeAttributeTag\": null,\n      \"slimDoctype\": null,\n      \"lineContinuation\": null\n    };\n    var closing = {\n      \"{\": \"}\",\n      \"[\": \"]\",\n      \"(\": \")\"\n    };\n\n    var nameStartChar = \"_a-zA-Z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\";\n    var nameChar = nameStartChar + \"\\\\-0-9\\xB7\\u0300-\\u036F\\u203F-\\u2040\";\n    var nameRegexp = new RegExp(\"^[:\"+nameStartChar+\"](?::[\"+nameChar+\"]|[\"+nameChar+\"]*)\");\n    var attributeNameRegexp = new RegExp(\"^[:\"+nameStartChar+\"][:\\\\.\"+nameChar+\"]*(?=\\\\s*=)\");\n    var wrappedAttributeNameRegexp = new RegExp(\"^[:\"+nameStartChar+\"][:\\\\.\"+nameChar+\"]*\");\n    var classNameRegexp = /^\\.-?[_a-zA-Z]+[\\w\\-]*/;\n    var classIdRegexp = /^#[_a-zA-Z]+[\\w\\-]*/;\n\n    function backup(pos, tokenize, style) {\n      var restore = function(stream, state) {\n        state.tokenize = tokenize;\n        if (stream.pos < pos) {\n          stream.pos = pos;\n          return style;\n        }\n        return state.tokenize(stream, state);\n      };\n      return function(stream, state) {\n        state.tokenize = restore;\n        return tokenize(stream, state);\n      };\n    }\n\n    function maybeBackup(stream, state, pat, offset, style) {\n      var cur = stream.current();\n      var idx = cur.search(pat);\n      if (idx > -1) {\n        state.tokenize = backup(stream.pos, state.tokenize, style);\n        stream.backUp(cur.length - idx - offset);\n      }\n      return style;\n    }\n\n    function continueLine(state, column) {\n      state.stack = {\n        parent: state.stack,\n        style: \"continuation\",\n        indented: column,\n        tokenize: state.line\n      };\n      state.line = state.tokenize;\n    }\n    function finishContinue(state) {\n      if (state.line == state.tokenize) {\n        state.line = state.stack.tokenize;\n        state.stack = state.stack.parent;\n      }\n    }\n\n    function lineContinuable(column, tokenize) {\n      return function(stream, state) {\n        finishContinue(state);\n        if (stream.match(/^\\\\$/)) {\n          continueLine(state, column);\n          return \"lineContinuation\";\n        }\n        var style = tokenize(stream, state);\n        if (stream.eol() && stream.current().match(/(?:^|[^\\\\])(?:\\\\\\\\)*\\\\$/)) {\n          stream.backUp(1);\n        }\n        return style;\n      };\n    }\n    function commaContinuable(column, tokenize) {\n      return function(stream, state) {\n        finishContinue(state);\n        var style = tokenize(stream, state);\n        if (stream.eol() && stream.current().match(/,$/)) {\n          continueLine(state, column);\n        }\n        return style;\n      };\n    }\n\n    function rubyInQuote(endQuote, tokenize) {\n      // TODO: add multi line support\n      return function(stream, state) {\n        var ch = stream.peek();\n        if (ch == endQuote && state.rubyState.tokenize.length == 1) {\n          // step out of ruby context as it seems to complete processing all the braces\n          stream.next();\n          state.tokenize = tokenize;\n          return \"closeAttributeTag\";\n        } else {\n          return ruby(stream, state);\n        }\n      };\n    }\n    function startRubySplat(tokenize) {\n      var rubyState;\n      var runSplat = function(stream, state) {\n        if (state.rubyState.tokenize.length == 1 && !state.rubyState.context.prev) {\n          stream.backUp(1);\n          if (stream.eatSpace()) {\n            state.rubyState = rubyState;\n            state.tokenize = tokenize;\n            return tokenize(stream, state);\n          }\n          stream.next();\n        }\n        return ruby(stream, state);\n      };\n      return function(stream, state) {\n        rubyState = state.rubyState;\n        state.rubyState = rubyMode.startState();\n        state.tokenize = runSplat;\n        return ruby(stream, state);\n      };\n    }\n\n    function ruby(stream, state) {\n      return rubyMode.token(stream, state.rubyState);\n    }\n\n    function htmlLine(stream, state) {\n      if (stream.match(/^\\\\$/)) {\n        return \"lineContinuation\";\n      }\n      return html(stream, state);\n    }\n    function html(stream, state) {\n      if (stream.match(/^#\\{/)) {\n        state.tokenize = rubyInQuote(\"}\", state.tokenize);\n        return null;\n      }\n      return maybeBackup(stream, state, /[^\\\\]#\\{/, 1, htmlMode.token(stream, state.htmlState));\n    }\n\n    function startHtmlLine(lastTokenize) {\n      return function(stream, state) {\n        var style = htmlLine(stream, state);\n        if (stream.eol()) state.tokenize = lastTokenize;\n        return style;\n      };\n    }\n\n    function startHtmlMode(stream, state, offset) {\n      state.stack = {\n        parent: state.stack,\n        style: \"html\",\n        indented: stream.column() + offset, // pipe + space\n        tokenize: state.line\n      };\n      state.line = state.tokenize = html;\n      return null;\n    }\n\n    function comment(stream, state) {\n      stream.skipToEnd();\n      return state.stack.style;\n    }\n\n    function commentMode(stream, state) {\n      state.stack = {\n        parent: state.stack,\n        style: \"comment\",\n        indented: state.indented + 1,\n        tokenize: state.line\n      };\n      state.line = comment;\n      return comment(stream, state);\n    }\n\n    function attributeWrapper(stream, state) {\n      if (stream.eat(state.stack.endQuote)) {\n        state.line = state.stack.line;\n        state.tokenize = state.stack.tokenize;\n        state.stack = state.stack.parent;\n        return null;\n      }\n      if (stream.match(wrappedAttributeNameRegexp)) {\n        state.tokenize = attributeWrapperAssign;\n        return \"slimAttribute\";\n      }\n      stream.next();\n      return null;\n    }\n    function attributeWrapperAssign(stream, state) {\n      if (stream.match(/^==?/)) {\n        state.tokenize = attributeWrapperValue;\n        return null;\n      }\n      return attributeWrapper(stream, state);\n    }\n    function attributeWrapperValue(stream, state) {\n      var ch = stream.peek();\n      if (ch == '\"' || ch == \"\\'\") {\n        state.tokenize = readQuoted(ch, \"string\", true, false, attributeWrapper);\n        stream.next();\n        return state.tokenize(stream, state);\n      }\n      if (ch == '[') {\n        return startRubySplat(attributeWrapper)(stream, state);\n      }\n      if (stream.match(/^(true|false|nil)\\b/)) {\n        state.tokenize = attributeWrapper;\n        return \"keyword\";\n      }\n      return startRubySplat(attributeWrapper)(stream, state);\n    }\n\n    function startAttributeWrapperMode(state, endQuote, tokenize) {\n      state.stack = {\n        parent: state.stack,\n        style: \"wrapper\",\n        indented: state.indented + 1,\n        tokenize: tokenize,\n        line: state.line,\n        endQuote: endQuote\n      };\n      state.line = state.tokenize = attributeWrapper;\n      return null;\n    }\n\n    function sub(stream, state) {\n      if (stream.match(/^#\\{/)) {\n        state.tokenize = rubyInQuote(\"}\", state.tokenize);\n        return null;\n      }\n      var subStream = new CodeMirror.StringStream(stream.string.slice(state.stack.indented), stream.tabSize);\n      subStream.pos = stream.pos - state.stack.indented;\n      subStream.start = stream.start - state.stack.indented;\n      subStream.lastColumnPos = stream.lastColumnPos - state.stack.indented;\n      subStream.lastColumnValue = stream.lastColumnValue - state.stack.indented;\n      var style = state.subMode.token(subStream, state.subState);\n      stream.pos = subStream.pos + state.stack.indented;\n      return style;\n    }\n    function firstSub(stream, state) {\n      state.stack.indented = stream.column();\n      state.line = state.tokenize = sub;\n      return state.tokenize(stream, state);\n    }\n\n    function createMode(mode) {\n      var query = embedded[mode];\n      var spec = CodeMirror.mimeModes[query];\n      if (spec) {\n        return CodeMirror.getMode(config, spec);\n      }\n      var factory = CodeMirror.modes[query];\n      if (factory) {\n        return factory(config, {name: query});\n      }\n      return CodeMirror.getMode(config, \"null\");\n    }\n\n    function getMode(mode) {\n      if (!modes.hasOwnProperty(mode)) {\n        return modes[mode] = createMode(mode);\n      }\n      return modes[mode];\n    }\n\n    function startSubMode(mode, state) {\n      var subMode = getMode(mode);\n      var subState = subMode.startState && subMode.startState();\n\n      state.subMode = subMode;\n      state.subState = subState;\n\n      state.stack = {\n        parent: state.stack,\n        style: \"sub\",\n        indented: state.indented + 1,\n        tokenize: state.line\n      };\n      state.line = state.tokenize = firstSub;\n      return \"slimSubmode\";\n    }\n\n    function doctypeLine(stream, _state) {\n      stream.skipToEnd();\n      return \"slimDoctype\";\n    }\n\n    function startLine(stream, state) {\n      var ch = stream.peek();\n      if (ch == '<') {\n        return (state.tokenize = startHtmlLine(state.tokenize))(stream, state);\n      }\n      if (stream.match(/^[|']/)) {\n        return startHtmlMode(stream, state, 1);\n      }\n      if (stream.match(/^\\/(!|\\[\\w+])?/)) {\n        return commentMode(stream, state);\n      }\n      if (stream.match(/^(-|==?[<>]?)/)) {\n        state.tokenize = lineContinuable(stream.column(), commaContinuable(stream.column(), ruby));\n        return \"slimSwitch\";\n      }\n      if (stream.match(/^doctype\\b/)) {\n        state.tokenize = doctypeLine;\n        return \"keyword\";\n      }\n\n      var m = stream.match(embeddedRegexp);\n      if (m) {\n        return startSubMode(m[1], state);\n      }\n\n      return slimTag(stream, state);\n    }\n\n    function slim(stream, state) {\n      if (state.startOfLine) {\n        return startLine(stream, state);\n      }\n      return slimTag(stream, state);\n    }\n\n    function slimTag(stream, state) {\n      if (stream.eat('*')) {\n        state.tokenize = startRubySplat(slimTagExtras);\n        return null;\n      }\n      if (stream.match(nameRegexp)) {\n        state.tokenize = slimTagExtras;\n        return \"slimTag\";\n      }\n      return slimClass(stream, state);\n    }\n    function slimTagExtras(stream, state) {\n      if (stream.match(/^(<>?|><?)/)) {\n        state.tokenize = slimClass;\n        return null;\n      }\n      return slimClass(stream, state);\n    }\n    function slimClass(stream, state) {\n      if (stream.match(classIdRegexp)) {\n        state.tokenize = slimClass;\n        return \"slimId\";\n      }\n      if (stream.match(classNameRegexp)) {\n        state.tokenize = slimClass;\n        return \"slimClass\";\n      }\n      return slimAttribute(stream, state);\n    }\n    function slimAttribute(stream, state) {\n      if (stream.match(/^([\\[\\{\\(])/)) {\n        return startAttributeWrapperMode(state, closing[RegExp.$1], slimAttribute);\n      }\n      if (stream.match(attributeNameRegexp)) {\n        state.tokenize = slimAttributeAssign;\n        return \"slimAttribute\";\n      }\n      if (stream.peek() == '*') {\n        stream.next();\n        state.tokenize = startRubySplat(slimContent);\n        return null;\n      }\n      return slimContent(stream, state);\n    }\n    function slimAttributeAssign(stream, state) {\n      if (stream.match(/^==?/)) {\n        state.tokenize = slimAttributeValue;\n        return null;\n      }\n      // should never happen, because of forward lookup\n      return slimAttribute(stream, state);\n    }\n\n    function slimAttributeValue(stream, state) {\n      var ch = stream.peek();\n      if (ch == '\"' || ch == \"\\'\") {\n        state.tokenize = readQuoted(ch, \"string\", true, false, slimAttribute);\n        stream.next();\n        return state.tokenize(stream, state);\n      }\n      if (ch == '[') {\n        return startRubySplat(slimAttribute)(stream, state);\n      }\n      if (ch == ':') {\n        return startRubySplat(slimAttributeSymbols)(stream, state);\n      }\n      if (stream.match(/^(true|false|nil)\\b/)) {\n        state.tokenize = slimAttribute;\n        return \"keyword\";\n      }\n      return startRubySplat(slimAttribute)(stream, state);\n    }\n    function slimAttributeSymbols(stream, state) {\n      stream.backUp(1);\n      if (stream.match(/^[^\\s],(?=:)/)) {\n        state.tokenize = startRubySplat(slimAttributeSymbols);\n        return null;\n      }\n      stream.next();\n      return slimAttribute(stream, state);\n    }\n    function readQuoted(quote, style, embed, unescaped, nextTokenize) {\n      return function(stream, state) {\n        finishContinue(state);\n        var fresh = stream.current().length == 0;\n        if (stream.match(/^\\\\$/, fresh)) {\n          if (!fresh) return style;\n          continueLine(state, state.indented);\n          return \"lineContinuation\";\n        }\n        if (stream.match(/^#\\{/, fresh)) {\n          if (!fresh) return style;\n          state.tokenize = rubyInQuote(\"}\", state.tokenize);\n          return null;\n        }\n        var escaped = false, ch;\n        while ((ch = stream.next()) != null) {\n          if (ch == quote && (unescaped || !escaped)) {\n            state.tokenize = nextTokenize;\n            break;\n          }\n          if (embed && ch == \"#\" && !escaped) {\n            if (stream.eat(\"{\")) {\n              stream.backUp(2);\n              break;\n            }\n          }\n          escaped = !escaped && ch == \"\\\\\";\n        }\n        if (stream.eol() && escaped) {\n          stream.backUp(1);\n        }\n        return style;\n      };\n    }\n    function slimContent(stream, state) {\n      if (stream.match(/^==?/)) {\n        state.tokenize = ruby;\n        return \"slimSwitch\";\n      }\n      if (stream.match(/^\\/$/)) { // tag close hint\n        state.tokenize = slim;\n        return null;\n      }\n      if (stream.match(/^:/)) { // inline tag\n        state.tokenize = slimTag;\n        return \"slimSwitch\";\n      }\n      startHtmlMode(stream, state, 0);\n      return state.tokenize(stream, state);\n    }\n\n    var mode = {\n      // default to html mode\n      startState: function() {\n        var htmlState = htmlMode.startState();\n        var rubyState = rubyMode.startState();\n        return {\n          htmlState: htmlState,\n          rubyState: rubyState,\n          stack: null,\n          last: null,\n          tokenize: slim,\n          line: slim,\n          indented: 0\n        };\n      },\n\n      copyState: function(state) {\n        return {\n          htmlState : CodeMirror.copyState(htmlMode, state.htmlState),\n          rubyState: CodeMirror.copyState(rubyMode, state.rubyState),\n          subMode: state.subMode,\n          subState: state.subMode && CodeMirror.copyState(state.subMode, state.subState),\n          stack: state.stack,\n          last: state.last,\n          tokenize: state.tokenize,\n          line: state.line\n        };\n      },\n\n      token: function(stream, state) {\n        if (stream.sol()) {\n          state.indented = stream.indentation();\n          state.startOfLine = true;\n          state.tokenize = state.line;\n          while (state.stack && state.stack.indented > state.indented && state.last != \"slimSubmode\") {\n            state.line = state.tokenize = state.stack.tokenize;\n            state.stack = state.stack.parent;\n            state.subMode = null;\n            state.subState = null;\n          }\n        }\n        if (stream.eatSpace()) return null;\n        var style = state.tokenize(stream, state);\n        state.startOfLine = false;\n        if (style) state.last = style;\n        return styleMap.hasOwnProperty(style) ? styleMap[style] : style;\n      },\n\n      blankLine: function(state) {\n        if (state.subMode && state.subMode.blankLine) {\n          return state.subMode.blankLine(state.subState);\n        }\n      },\n\n      innerMode: function(state) {\n        if (state.subMode) return {state: state.subState, mode: state.subMode};\n        return {state: state, mode: mode};\n      }\n\n      //indent: function(state) {\n      //  return state.indented;\n      //}\n    };\n    return mode;\n  }, \"htmlmixed\", \"ruby\");\n\n  CodeMirror.defineMIME(\"text/x-slim\", \"slim\");\n  CodeMirror.defineMIME(\"application/x-slim\", \"slim\");\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/slim/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh\n\n(function() {\n  var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, \"slim\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }\n\n  // Requires at least one media query\n  MT(\"elementName\",\n     \"[tag h1] Hey There\");\n\n  MT(\"oneElementPerLine\",\n     \"[tag h1] Hey There .h2\");\n\n  MT(\"idShortcut\",\n     \"[attribute&def #test] Hey There\");\n\n  MT(\"tagWithIdShortcuts\",\n     \"[tag h1][attribute&def #test] Hey There\");\n\n  MT(\"classShortcut\",\n     \"[attribute&qualifier .hello] Hey There\");\n\n  MT(\"tagWithIdAndClassShortcuts\",\n     \"[tag h1][attribute&def #test][attribute&qualifier .hello] Hey There\");\n\n  MT(\"docType\",\n     \"[keyword doctype] xml\");\n\n  MT(\"comment\",\n     \"[comment / Hello WORLD]\");\n\n  MT(\"notComment\",\n     \"[tag h1] This is not a / comment \");\n\n  MT(\"attributes\",\n     \"[tag a]([attribute title]=[string \\\"test\\\"]) [attribute href]=[string \\\"link\\\"]}\");\n\n  MT(\"multiLineAttributes\",\n     \"[tag a]([attribute title]=[string \\\"test\\\"]\",\n     \"  ) [attribute href]=[string \\\"link\\\"]}\");\n\n  MT(\"htmlCode\",\n     \"[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket </][tag h1][tag&bracket >]\");\n\n  MT(\"rubyBlock\",\n     \"[operator&special =][variable-2 @item]\");\n\n  MT(\"selectorRubyBlock\",\n     \"[tag a][attribute&qualifier .test][operator&special =] [variable-2 @item]\");\n\n  MT(\"nestedRubyBlock\",\n      \"[tag a]\",\n      \"  [operator&special =][variable puts] [string \\\"test\\\"]\");\n\n  MT(\"multilinePlaintext\",\n      \"[tag p]\",\n      \"  | Hello,\",\n      \"    World\");\n\n  MT(\"multilineRuby\",\n      \"[tag p]\",\n      \"  [comment /# this is a comment]\",\n      \"     [comment and this is a comment too]\",\n      \"  | Date/Time\",\n      \"  [operator&special -] [variable now] [operator =] [tag DateTime][operator .][property now]\",\n      \"  [tag strong][operator&special =] [variable now]\",\n      \"  [operator&special -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \\\"December 31, 2006\\\"])\",\n      \"     [operator&special =][string \\\"Happy\\\"]\",\n      \"     [operator&special =][string \\\"Belated\\\"]\",\n      \"     [operator&special =][string \\\"Birthday\\\"]\");\n\n  MT(\"multilineComment\",\n      \"[comment /]\",\n      \"  [comment Multiline]\",\n      \"  [comment Comment]\");\n\n  MT(\"hamlAfterRubyTag\",\n    \"[attribute&qualifier .block]\",\n    \"  [tag strong][operator&special =] [variable now]\",\n    \"  [attribute&qualifier .test]\",\n    \"     [operator&special =][variable now]\",\n    \"  [attribute&qualifier .right]\");\n\n  MT(\"stretchedRuby\",\n     \"[operator&special =] [variable puts] [string \\\"Hello\\\"],\",\n     \"   [string \\\"World\\\"]\");\n\n  MT(\"interpolationInHashAttribute\",\n     \"[tag div]{[attribute id] = [string \\\"]#{[variable test]}[string _]#{[variable ting]}[string \\\"]} test\");\n\n  MT(\"interpolationInHTMLAttribute\",\n     \"[tag div]([attribute title]=[string \\\"]#{[variable test]}[string _]#{[variable ting]()}[string \\\"]) Test\");\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/smalltalk/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Smalltalk mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"smalltalk.js\"></script>\n<style>\n      .CodeMirror {border: 2px solid #dee; border-right-width: 10px;}\n      .CodeMirror-gutter {border: none; background: #dee;}\n      .CodeMirror-gutter pre {color: white; font-weight: bold;}\n    </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Smalltalk</a>\n  </ul>\n</div>\n\n<article>\n<h2>Smalltalk mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n\" \n    This is a test of the Smalltalk code\n\"\nSeaside.WAComponent subclass: #MyCounter [\n    | count |\n    MyCounter class &gt;&gt; canBeRoot [ ^true ]\n\n    initialize [\n        super initialize.\n        count := 0.\n    ]\n    states [ ^{ self } ]\n    renderContentOn: html [\n        html heading: count.\n        html anchor callback: [ count := count + 1 ]; with: '++'.\n        html space.\n        html anchor callback: [ count := count - 1 ]; with: '--'.\n    ]\n]\n\nMyCounter registerAsApplication: 'mycounter'\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"text/x-stsrc\",\n        indentUnit: 4\n      });\n    </script>\n\n    <p>Simple Smalltalk mode.</p>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-stsrc</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/smalltalk/smalltalk.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode('smalltalk', function(config) {\n\n  var specialChars = /[+\\-\\/\\\\*~<>=@%|&?!.,:;^]/;\n  var keywords = /true|false|nil|self|super|thisContext/;\n\n  var Context = function(tokenizer, parent) {\n    this.next = tokenizer;\n    this.parent = parent;\n  };\n\n  var Token = function(name, context, eos) {\n    this.name = name;\n    this.context = context;\n    this.eos = eos;\n  };\n\n  var State = function() {\n    this.context = new Context(next, null);\n    this.expectVariable = true;\n    this.indentation = 0;\n    this.userIndentationDelta = 0;\n  };\n\n  State.prototype.userIndent = function(indentation) {\n    this.userIndentationDelta = indentation > 0 ? (indentation / config.indentUnit - this.indentation) : 0;\n  };\n\n  var next = function(stream, context, state) {\n    var token = new Token(null, context, false);\n    var aChar = stream.next();\n\n    if (aChar === '\"') {\n      token = nextComment(stream, new Context(nextComment, context));\n\n    } else if (aChar === '\\'') {\n      token = nextString(stream, new Context(nextString, context));\n\n    } else if (aChar === '#') {\n      if (stream.peek() === '\\'') {\n        stream.next();\n        token = nextSymbol(stream, new Context(nextSymbol, context));\n      } else {\n        if (stream.eatWhile(/[^\\s.{}\\[\\]()]/))\n          token.name = 'string-2';\n        else\n          token.name = 'meta';\n      }\n\n    } else if (aChar === '$') {\n      if (stream.next() === '<') {\n        stream.eatWhile(/[^\\s>]/);\n        stream.next();\n      }\n      token.name = 'string-2';\n\n    } else if (aChar === '|' && state.expectVariable) {\n      token.context = new Context(nextTemporaries, context);\n\n    } else if (/[\\[\\]{}()]/.test(aChar)) {\n      token.name = 'bracket';\n      token.eos = /[\\[{(]/.test(aChar);\n\n      if (aChar === '[') {\n        state.indentation++;\n      } else if (aChar === ']') {\n        state.indentation = Math.max(0, state.indentation - 1);\n      }\n\n    } else if (specialChars.test(aChar)) {\n      stream.eatWhile(specialChars);\n      token.name = 'operator';\n      token.eos = aChar !== ';'; // ; cascaded message expression\n\n    } else if (/\\d/.test(aChar)) {\n      stream.eatWhile(/[\\w\\d]/);\n      token.name = 'number';\n\n    } else if (/[\\w_]/.test(aChar)) {\n      stream.eatWhile(/[\\w\\d_]/);\n      token.name = state.expectVariable ? (keywords.test(stream.current()) ? 'keyword' : 'variable') : null;\n\n    } else {\n      token.eos = state.expectVariable;\n    }\n\n    return token;\n  };\n\n  var nextComment = function(stream, context) {\n    stream.eatWhile(/[^\"]/);\n    return new Token('comment', stream.eat('\"') ? context.parent : context, true);\n  };\n\n  var nextString = function(stream, context) {\n    stream.eatWhile(/[^']/);\n    return new Token('string', stream.eat('\\'') ? context.parent : context, false);\n  };\n\n  var nextSymbol = function(stream, context) {\n    stream.eatWhile(/[^']/);\n    return new Token('string-2', stream.eat('\\'') ? context.parent : context, false);\n  };\n\n  var nextTemporaries = function(stream, context) {\n    var token = new Token(null, context, false);\n    var aChar = stream.next();\n\n    if (aChar === '|') {\n      token.context = context.parent;\n      token.eos = true;\n\n    } else {\n      stream.eatWhile(/[^|]/);\n      token.name = 'variable';\n    }\n\n    return token;\n  };\n\n  return {\n    startState: function() {\n      return new State;\n    },\n\n    token: function(stream, state) {\n      state.userIndent(stream.indentation());\n\n      if (stream.eatSpace()) {\n        return null;\n      }\n\n      var token = state.context.next(stream, state.context, state);\n      state.context = token.context;\n      state.expectVariable = token.eos;\n\n      return token.name;\n    },\n\n    blankLine: function(state) {\n      state.userIndent(0);\n    },\n\n    indent: function(state, textAfter) {\n      var i = state.context.next === next && textAfter && textAfter.charAt(0) === ']' ? -1 : state.userIndentationDelta;\n      return (state.indentation + i) * config.indentUnit;\n    },\n\n    electricChars: ']'\n  };\n\n});\n\nCodeMirror.defineMIME('text/x-stsrc', {name: 'smalltalk'});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/smarty/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Smarty mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"smarty.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Smarty</a>\n  </ul>\n</div>\n\n<article>\n<h2>Smarty mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n{extends file=\"parent.tpl\"}\n{include file=\"template.tpl\"}\n\n{* some example Smarty content *}\n{if isset($name) && $name == 'Blog'}\n  This is a {$var}.\n  {$integer = 451}, {$array[] = \"a\"}, {$stringvar = \"string\"}\n  {assign var='bob' value=$var.prop}\n{elseif $name == $foo}\n  {function name=menu level=0}\n    {foreach $data as $entry}\n      {if is_array($entry)}\n        - {$entry@key}\n        {menu data=$entry level=$level+1}\n      {else}\n        {$entry}\n      {/if}\n    {/foreach}\n  {/function}\n{/if}</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        mode: \"smarty\"\n      });\n    </script>\n\n    <br />\n\n\t<h3>Smarty 2, custom delimiters</h3>\n    <form><textarea id=\"code2\" name=\"code2\">\n{--extends file=\"parent.tpl\"--}\n{--include file=\"template.tpl\"--}\n\n{--* some example Smarty content *--}\n{--if isset($name) && $name == 'Blog'--}\n  This is a {--$var--}.\n  {--$integer = 451--}, {--$array[] = \"a\"--}, {--$stringvar = \"string\"--}\n  {--assign var='bob' value=$var.prop--}\n{--elseif $name == $foo--}\n  {--function name=menu level=0--}\n    {--foreach $data as $entry--}\n      {--if is_array($entry)--}\n        - {--$entry@key--}\n        {--menu data=$entry level=$level+1--}\n      {--else--}\n        {--$entry--}\n      {--/if--}\n    {--/foreach--}\n  {--/function--}\n{--/if--}</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code2\"), {\n        lineNumbers: true,\n        mode: {\n          name: \"smarty\",\n          leftDelimiter: \"{--\",\n          rightDelimiter: \"--}\"\n        }\n      });\n    </script>\n\n\t<br />\n\n\t<h3>Smarty 3</h3>\n\n\t<textarea id=\"code3\" name=\"code3\">\nNested tags {$foo={counter one=1 two={inception}}+3} are now valid in Smarty 3.\n\n<script>\nfunction test() {\n\tconsole.log(\"Smarty 3 permits single curly braces followed by whitespace to NOT slip into Smarty mode.\");\n}\n</script>\n\n{assign var=foo value=[1,2,3]}\n{assign var=foo value=['y'=>'yellow','b'=>'blue']}\n{assign var=foo value=[1,[9,8],3]}\n\n{$foo=$bar+2} {* a comment *}\n{$foo.bar=1}  {* another comment *}\n{$foo = myfunct(($x+$y)*3)}\n{$foo = strlen($bar)}\n{$foo.bar.baz=1}, {$foo[]=1}\n\nSmarty \"dot\" syntax (note: embedded {} are used to address ambiguities):\n\n{$foo.a.b.c}      => $foo['a']['b']['c']\n{$foo.a.$b.c}     => $foo['a'][$b]['c']\n{$foo.a.{$b+4}.c} => $foo['a'][$b+4]['c']\n{$foo.a.{$b.c}}   => $foo['a'][$b['c']]\n\n{$object->method1($x)->method2($y)}</textarea>\n\n\t<script>\n\t\tvar editor = CodeMirror.fromTextArea(document.getElementById(\"code3\"), {\n\t\t\tlineNumbers: true,\n\t\t\tmode: \"smarty\",\n\t\t\tsmartyVersion: 3\n\t\t});\n\t</script>\n\n\n    <p>A plain text/Smarty version 2 or 3 mode, which allows for custom delimiter tags.</p>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-smarty</code></p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/smarty/smarty.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/**\n * Smarty 2 and 3 mode.\n */\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"smarty\", function(config) {\n  \"use strict\";\n\n  // our default settings; check to see if they're overridden\n  var settings = {\n    rightDelimiter: '}',\n    leftDelimiter: '{',\n    smartyVersion: 2 // for backward compatibility\n  };\n  if (config.hasOwnProperty(\"leftDelimiter\")) {\n    settings.leftDelimiter = config.leftDelimiter;\n  }\n  if (config.hasOwnProperty(\"rightDelimiter\")) {\n    settings.rightDelimiter = config.rightDelimiter;\n  }\n  if (config.hasOwnProperty(\"smartyVersion\") && config.smartyVersion === 3) {\n    settings.smartyVersion = 3;\n  }\n\n  var keyFunctions = [\"debug\", \"extends\", \"function\", \"include\", \"literal\"];\n  var last;\n  var regs = {\n    operatorChars: /[+\\-*&%=<>!?]/,\n    validIdentifier: /[a-zA-Z0-9_]/,\n    stringChar: /['\"]/\n  };\n\n  var helpers = {\n    cont: function(style, lastType) {\n      last = lastType;\n      return style;\n    },\n    chain: function(stream, state, parser) {\n      state.tokenize = parser;\n      return parser(stream, state);\n    }\n  };\n\n\n  // our various parsers\n  var parsers = {\n\n    // the main tokenizer\n    tokenizer: function(stream, state) {\n      if (stream.match(settings.leftDelimiter, true)) {\n        if (stream.eat(\"*\")) {\n          return helpers.chain(stream, state, parsers.inBlock(\"comment\", \"*\" + settings.rightDelimiter));\n        } else {\n          // Smarty 3 allows { and } surrounded by whitespace to NOT slip into Smarty mode\n          state.depth++;\n          var isEol = stream.eol();\n          var isFollowedByWhitespace = /\\s/.test(stream.peek());\n          if (settings.smartyVersion === 3 && settings.leftDelimiter === \"{\" && (isEol || isFollowedByWhitespace)) {\n            state.depth--;\n            return null;\n          } else {\n            state.tokenize = parsers.smarty;\n            last = \"startTag\";\n            return \"tag\";\n          }\n        }\n      } else {\n        stream.next();\n        return null;\n      }\n    },\n\n    // parsing Smarty content\n    smarty: function(stream, state) {\n      if (stream.match(settings.rightDelimiter, true)) {\n        if (settings.smartyVersion === 3) {\n          state.depth--;\n          if (state.depth <= 0) {\n            state.tokenize = parsers.tokenizer;\n          }\n        } else {\n          state.tokenize = parsers.tokenizer;\n        }\n        return helpers.cont(\"tag\", null);\n      }\n\n      if (stream.match(settings.leftDelimiter, true)) {\n        state.depth++;\n        return helpers.cont(\"tag\", \"startTag\");\n      }\n\n      var ch = stream.next();\n      if (ch == \"$\") {\n        stream.eatWhile(regs.validIdentifier);\n        return helpers.cont(\"variable-2\", \"variable\");\n      } else if (ch == \"|\") {\n        return helpers.cont(\"operator\", \"pipe\");\n      } else if (ch == \".\") {\n        return helpers.cont(\"operator\", \"property\");\n      } else if (regs.stringChar.test(ch)) {\n        state.tokenize = parsers.inAttribute(ch);\n        return helpers.cont(\"string\", \"string\");\n      } else if (regs.operatorChars.test(ch)) {\n        stream.eatWhile(regs.operatorChars);\n        return helpers.cont(\"operator\", \"operator\");\n      } else if (ch == \"[\" || ch == \"]\") {\n        return helpers.cont(\"bracket\", \"bracket\");\n      } else if (ch == \"(\" || ch == \")\") {\n        return helpers.cont(\"bracket\", \"operator\");\n      } else if (/\\d/.test(ch)) {\n        stream.eatWhile(/\\d/);\n        return helpers.cont(\"number\", \"number\");\n      } else {\n\n        if (state.last == \"variable\") {\n          if (ch == \"@\") {\n            stream.eatWhile(regs.validIdentifier);\n            return helpers.cont(\"property\", \"property\");\n          } else if (ch == \"|\") {\n            stream.eatWhile(regs.validIdentifier);\n            return helpers.cont(\"qualifier\", \"modifier\");\n          }\n        } else if (state.last == \"pipe\") {\n          stream.eatWhile(regs.validIdentifier);\n          return helpers.cont(\"qualifier\", \"modifier\");\n        } else if (state.last == \"whitespace\") {\n          stream.eatWhile(regs.validIdentifier);\n          return helpers.cont(\"attribute\", \"modifier\");\n        } if (state.last == \"property\") {\n          stream.eatWhile(regs.validIdentifier);\n          return helpers.cont(\"property\", null);\n        } else if (/\\s/.test(ch)) {\n          last = \"whitespace\";\n          return null;\n        }\n\n        var str = \"\";\n        if (ch != \"/\") {\n          str += ch;\n        }\n        var c = null;\n        while (c = stream.eat(regs.validIdentifier)) {\n          str += c;\n        }\n        for (var i=0, j=keyFunctions.length; i<j; i++) {\n          if (keyFunctions[i] == str) {\n            return helpers.cont(\"keyword\", \"keyword\");\n          }\n        }\n        if (/\\s/.test(ch)) {\n          return null;\n        }\n        return helpers.cont(\"tag\", \"tag\");\n      }\n    },\n\n    inAttribute: function(quote) {\n      return function(stream, state) {\n        var prevChar = null;\n        var currChar = null;\n        while (!stream.eol()) {\n          currChar = stream.peek();\n          if (stream.next() == quote && prevChar !== '\\\\') {\n            state.tokenize = parsers.smarty;\n            break;\n          }\n          prevChar = currChar;\n        }\n        return \"string\";\n      };\n    },\n\n    inBlock: function(style, terminator) {\n      return function(stream, state) {\n        while (!stream.eol()) {\n          if (stream.match(terminator)) {\n            state.tokenize = parsers.tokenizer;\n            break;\n          }\n          stream.next();\n        }\n        return style;\n      };\n    }\n  };\n\n\n  // the public API for CodeMirror\n  return {\n    startState: function() {\n      return {\n        tokenize: parsers.tokenizer,\n        mode: \"smarty\",\n        last: null,\n        depth: 0\n      };\n    },\n    token: function(stream, state) {\n      var style = state.tokenize(stream, state);\n      state.last = last;\n      return style;\n    },\n    electricChars: \"\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-smarty\", \"smarty\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/smartymixed/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Smarty mixed mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../mode/xml/xml.js\"></script>\n<script src=\"../../mode/javascript/javascript.js\"></script>\n<script src=\"../../mode/css/css.js\"></script>\n<script src=\"../../mode/htmlmixed/htmlmixed.js\"></script>\n<script src=\"../../mode/smarty/smarty.js\"></script>\n<script src=\"../../mode/smartymixed/smartymixed.js\"></script>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Smarty mixed</a>\n  </ul>\n</div>\n\n<article>\n<h2>Smarty mixed mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n{**\n* @brief Smarty mixed mode\n* @author Ruslan Osmanov\n* @date 29.06.2013\n*}\n<html>\n<head>\n  <title>{$title|htmlspecialchars|truncate:30}</title>\n</head>\n<body class=\"{$bodyclass}\">\n  {* Multiline smarty\n  * comment, no {$variables} here\n  *}\n  {literal}\n  {literal} is just an HTML text.\n  <script type=\"text/javascript\">//<![CDATA[\n    var a = {$just_a_normal_js_object : \"value\"};\n    var myCodeMirror = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n      mode           : \"smartymixed\",\n      tabSize        : 2,\n      indentUnit     : 2,\n      indentWithTabs : false,\n      lineNumbers    : true,\n      smartyVersion  : 3\n    });\n    // ]]>\n  </script>\n  <style>\n    /* CSS content \n    {$no_smarty} */\n    .some-class { font-weight: bolder; color: \"orange\"; }\n  </style>\n  {/literal}\n\n  {extends file=\"parent.tpl\"}\n  {include file=\"template.tpl\"}\n\n  {* some example Smarty content *}\n  {if isset($name) && $name == 'Blog'}\n    This is a {$var}.\n    {$integer = 4511}, {$array[] = \"a\"}, {$stringvar = \"string\"}\n    {$integer = 4512} {$array[] = \"a\"} {$stringvar = \"string\"}\n    {assign var='bob' value=$var.prop}\n  {elseif $name == $foo}\n    {function name=menu level=0}\n    {foreach $data as $entry}\n      {if is_array($entry)}\n      - {$entry@key}\n      {menu data=$entry level=$level+1}\n      {else}\n      {$entry}\n      {* One\n      * Two\n      * Three\n      *}\n      {/if}\n    {/foreach}\n    {/function}\n  {/if}\n  </body>\n  <!-- R.O. -->\n</html>\n</textarea></form>\n\n    <script type=\"text/javascript\">\n      var myCodeMirror = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode           : \"smartymixed\",\n        tabSize        : 2,\n        indentUnit     : 2,\n        indentWithTabs : false,\n        lineNumbers    : true,\n        smartyVersion  : 3,\n        matchBrackets  : true,\n      });\n    </script>\n\n    <p>The Smarty mixed mode depends on the Smarty and HTML mixed modes. HTML\n    mixed mode itself depends on XML, JavaScript, and CSS modes.</p>\n\n    <p>It takes the same options, as Smarty and HTML mixed modes.</p>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-smarty</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/smartymixed/smartymixed.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/**\n* @file smartymixed.js\n* @brief Smarty Mixed Codemirror mode (Smarty + Mixed HTML)\n* @author Ruslan Osmanov <rrosmanov at gmail dot com>\n* @version 3.0\n* @date 05.07.2013\n*/\n\n// Warning: Don't base other modes on this one. This here is a\n// terrible way to write a mixed mode.\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../htmlmixed/htmlmixed\"), require(\"../smarty/smarty\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../htmlmixed/htmlmixed\", \"../smarty/smarty\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"smartymixed\", function(config) {\n  var htmlMixedMode = CodeMirror.getMode(config, \"htmlmixed\");\n  var smartyMode = CodeMirror.getMode(config, \"smarty\");\n\n  var settings = {\n    rightDelimiter: '}',\n    leftDelimiter: '{'\n  };\n\n  if (config.hasOwnProperty(\"leftDelimiter\")) {\n    settings.leftDelimiter = config.leftDelimiter;\n  }\n  if (config.hasOwnProperty(\"rightDelimiter\")) {\n    settings.rightDelimiter = config.rightDelimiter;\n  }\n\n  function reEsc(str) { return str.replace(/[^\\s\\w]/g, \"\\\\$&\"); }\n\n  var reLeft = reEsc(settings.leftDelimiter), reRight = reEsc(settings.rightDelimiter);\n  var regs = {\n    smartyComment: new RegExp(\"^\" + reRight + \"\\\\*\"),\n    literalOpen: new RegExp(reLeft + \"literal\" + reRight),\n    literalClose: new RegExp(reLeft + \"\\/literal\" + reRight),\n    hasLeftDelimeter: new RegExp(\".*\" + reLeft),\n    htmlHasLeftDelimeter: new RegExp(\"[^<>]*\" + reLeft)\n  };\n\n  var helpers = {\n    chain: function(stream, state, parser) {\n      state.tokenize = parser;\n      return parser(stream, state);\n    },\n\n    cleanChain: function(stream, state, parser) {\n      state.tokenize = null;\n      state.localState = null;\n      state.localMode = null;\n      return (typeof parser == \"string\") ? (parser ? parser : null) : parser(stream, state);\n    },\n\n    maybeBackup: function(stream, pat, style) {\n      var cur = stream.current();\n      var close = cur.search(pat),\n      m;\n      if (close > - 1) stream.backUp(cur.length - close);\n      else if (m = cur.match(/<\\/?$/)) {\n        stream.backUp(cur.length);\n        if (!stream.match(pat, false)) stream.match(cur[0]);\n      }\n      return style;\n    }\n  };\n\n  var parsers = {\n    html: function(stream, state) {\n      var htmlTagName = state.htmlMixedState.htmlState.context && state.htmlMixedState.htmlState.context.tagName\n        ? state.htmlMixedState.htmlState.context.tagName\n        : null;\n\n      if (!state.inLiteral && stream.match(regs.htmlHasLeftDelimeter, false) && htmlTagName === null) {\n        state.tokenize = parsers.smarty;\n        state.localMode = smartyMode;\n        state.localState = smartyMode.startState(htmlMixedMode.indent(state.htmlMixedState, \"\"));\n        return helpers.maybeBackup(stream, settings.leftDelimiter, smartyMode.token(stream, state.localState));\n      } else if (!state.inLiteral && stream.match(settings.leftDelimiter, false)) {\n        state.tokenize = parsers.smarty;\n        state.localMode = smartyMode;\n        state.localState = smartyMode.startState(htmlMixedMode.indent(state.htmlMixedState, \"\"));\n        return helpers.maybeBackup(stream, settings.leftDelimiter, smartyMode.token(stream, state.localState));\n      }\n      return htmlMixedMode.token(stream, state.htmlMixedState);\n    },\n\n    smarty: function(stream, state) {\n      if (stream.match(settings.leftDelimiter, false)) {\n        if (stream.match(regs.smartyComment, false)) {\n          return helpers.chain(stream, state, parsers.inBlock(\"comment\", \"*\" + settings.rightDelimiter));\n        }\n      } else if (stream.match(settings.rightDelimiter, false)) {\n        stream.eat(settings.rightDelimiter);\n        state.tokenize = parsers.html;\n        state.localMode = htmlMixedMode;\n        state.localState = state.htmlMixedState;\n        return \"tag\";\n      }\n\n      return helpers.maybeBackup(stream, settings.rightDelimiter, smartyMode.token(stream, state.localState));\n    },\n\n    inBlock: function(style, terminator) {\n      return function(stream, state) {\n        while (!stream.eol()) {\n          if (stream.match(terminator)) {\n            helpers.cleanChain(stream, state, \"\");\n            break;\n          }\n          stream.next();\n        }\n        return style;\n      };\n    }\n  };\n\n  return {\n    startState: function() {\n      var state = htmlMixedMode.startState();\n      return {\n        token: parsers.html,\n        localMode: null,\n        localState: null,\n        htmlMixedState: state,\n        tokenize: null,\n        inLiteral: false\n      };\n    },\n\n    copyState: function(state) {\n      var local = null, tok = (state.tokenize || state.token);\n      if (state.localState) {\n        local = CodeMirror.copyState((tok != parsers.html ? smartyMode : htmlMixedMode), state.localState);\n      }\n      return {\n        token: state.token,\n        tokenize: state.tokenize,\n        localMode: state.localMode,\n        localState: local,\n        htmlMixedState: CodeMirror.copyState(htmlMixedMode, state.htmlMixedState),\n        inLiteral: state.inLiteral\n      };\n    },\n\n    token: function(stream, state) {\n      if (stream.match(settings.leftDelimiter, false)) {\n        if (!state.inLiteral && stream.match(regs.literalOpen, true)) {\n          state.inLiteral = true;\n          return \"keyword\";\n        } else if (state.inLiteral && stream.match(regs.literalClose, true)) {\n          state.inLiteral = false;\n          return \"keyword\";\n        }\n      }\n      if (state.inLiteral && state.localState != state.htmlMixedState) {\n        state.tokenize = parsers.html;\n        state.localMode = htmlMixedMode;\n        state.localState = state.htmlMixedState;\n      }\n\n      var style = (state.tokenize || state.token)(stream, state);\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.localMode == smartyMode\n          || (state.inLiteral && !state.localMode)\n         || regs.hasLeftDelimeter.test(textAfter)) {\n        return CodeMirror.Pass;\n      }\n      return htmlMixedMode.indent(state.htmlMixedState, textAfter);\n    },\n\n    innerMode: function(state) {\n      return {\n        state: state.localState || state.htmlMixedState,\n        mode: state.localMode || htmlMixedMode\n      };\n    }\n  };\n}, \"htmlmixed\", \"smarty\");\n\nCodeMirror.defineMIME(\"text/x-smarty\", \"smartymixed\");\n// vim: et ts=2 sts=2 sw=2\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/solr/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Solr mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"solr.js\"></script>\n<style type=\"text/css\">\n  .CodeMirror {\n    border-top: 1px solid black;\n    border-bottom: 1px solid black;\n  }\n\n  .CodeMirror .cm-operator {\n    color: orange;\n  }\n</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Solr</a>\n  </ul>\n</div>\n\n<article>\n  <h2>Solr mode</h2>\n\n  <div>\n    <textarea id=\"code\" name=\"code\">author:Camus\n\ntitle:\"The Rebel\" and author:Camus\n\nphilosophy:Existentialism -author:Kierkegaard\n\nhardToSpell:Dostoevsky~\n\npublished:[194* TO 1960] and author:(Sartre or \"Simone de Beauvoir\")</textarea>\n  </div>\n\n  <script>\n    var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n      mode: 'solr',\n      lineNumbers: true\n    });\n  </script>\n\n  <p><strong>MIME types defined:</strong> <code>text/x-solr</code>.</p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/solr/solr.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"solr\", function() {\n  \"use strict\";\n\n  var isStringChar = /[^\\s\\|\\!\\+\\-\\*\\?\\~\\^\\&\\:\\(\\)\\[\\]\\{\\}\\^\\\"\\\\]/;\n  var isOperatorChar = /[\\|\\!\\+\\-\\*\\?\\~\\^\\&]/;\n  var isOperatorString = /^(OR|AND|NOT|TO)$/i;\n\n  function isNumber(word) {\n    return parseFloat(word, 10).toString() === word;\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, next;\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) break;\n        escaped = !escaped && next == \"\\\\\";\n      }\n\n      if (!escaped) state.tokenize = tokenBase;\n      return \"string\";\n    };\n  }\n\n  function tokenOperator(operator) {\n    return function(stream, state) {\n      var style = \"operator\";\n      if (operator == \"+\")\n        style += \" positive\";\n      else if (operator == \"-\")\n        style += \" negative\";\n      else if (operator == \"|\")\n        stream.eat(/\\|/);\n      else if (operator == \"&\")\n        stream.eat(/\\&/);\n      else if (operator == \"^\")\n        style += \" boost\";\n\n      state.tokenize = tokenBase;\n      return style;\n    };\n  }\n\n  function tokenWord(ch) {\n    return function(stream, state) {\n      var word = ch;\n      while ((ch = stream.peek()) && ch.match(isStringChar) != null) {\n        word += stream.next();\n      }\n\n      state.tokenize = tokenBase;\n      if (isOperatorString.test(word))\n        return \"operator\";\n      else if (isNumber(word))\n        return \"number\";\n      else if (stream.peek() == \":\")\n        return \"field\";\n      else\n        return \"string\";\n    };\n  }\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    if (ch == '\"')\n      state.tokenize = tokenString(ch);\n    else if (isOperatorChar.test(ch))\n      state.tokenize = tokenOperator(ch);\n    else if (isStringChar.test(ch))\n      state.tokenize = tokenWord(ch);\n\n    return (state.tokenize != tokenBase) ? state.tokenize(stream, state) : null;\n  }\n\n  return {\n    startState: function() {\n      return {\n        tokenize: tokenBase\n      };\n    },\n\n    token: function(stream, state) {\n      if (stream.eatSpace()) return null;\n      return state.tokenize(stream, state);\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-solr\", \"solr\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/soy/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Soy (Closure Template) mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"../htmlmixed/htmlmixed.js\"></script>\n<script src=\"../xml/xml.js\"></script>\n<script src=\"../javascript/javascript.js\"></script>\n<script src=\"../css/css.js\"></script>\n<script src=\"soy.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Soy (Closure Template)</a>\n  </ul>\n</div>\n\n<article>\n<h2>Soy (Closure Template) mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n{namespace example}\n\n/**\n * Says hello to the world.\n */\n{template .helloWorld}\n  {@param name: string}\n  {@param? score: number}\n  Hello <b>{$name}</b>!\n  <div>\n    {if $score}\n      <em>{$score} points</em>\n    {else}\n      no score\n    {/if}\n  </div>\n{/template}\n\n{template .alertHelloWorld kind=\"js\"}\n  alert('Hello World');\n{/template}\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        mode: \"text/x-soy\",\n        indentUnit: 2,\n        indentWithTabs: false\n      });\n    </script>\n\n    <p>A mode for <a href=\"https://developers.google.com/closure/templates/\">Closure Templates</a> (Soy).</p>\n    <p><strong>MIME type defined:</strong> <code>text/x-soy</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/soy/soy.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../htmlmixed/htmlmixed\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../htmlmixed/htmlmixed\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var indentingTags = [\"template\", \"literal\", \"msg\", \"fallbackmsg\", \"let\", \"if\", \"elseif\",\n                       \"else\", \"switch\", \"case\", \"default\", \"foreach\", \"ifempty\", \"for\",\n                       \"call\", \"param\", \"deltemplate\", \"delcall\", \"log\"];\n\n  CodeMirror.defineMode(\"soy\", function(config) {\n    var textMode = CodeMirror.getMode(config, \"text/plain\");\n    var modes = {\n      html: CodeMirror.getMode(config, {name: \"text/html\", multilineTagIndentFactor: 2, multilineTagIndentPastTag: false}),\n      attributes: textMode,\n      text: textMode,\n      uri: textMode,\n      css: CodeMirror.getMode(config, \"text/css\"),\n      js: CodeMirror.getMode(config, {name: \"text/javascript\", statementIndent: 2 * config.indentUnit})\n    };\n\n    function last(array) {\n      return array[array.length - 1];\n    }\n\n    function tokenUntil(stream, state, untilRegExp) {\n      var oldString = stream.string;\n      var match = untilRegExp.exec(oldString.substr(stream.pos));\n      if (match) {\n        // We don't use backUp because it backs up just the position, not the state.\n        // This uses an undocumented API.\n        stream.string = oldString.substr(0, stream.pos + match.index);\n      }\n      var result = stream.hideFirstChars(state.indent, function() {\n        return state.localMode.token(stream, state.localState);\n      });\n      stream.string = oldString;\n      return result;\n    }\n\n    return {\n      startState: function() {\n        return {\n          kind: [],\n          kindTag: [],\n          soyState: [],\n          indent: 0,\n          localMode: modes.html,\n          localState: CodeMirror.startState(modes.html)\n        };\n      },\n\n      copyState: function(state) {\n        return {\n          tag: state.tag, // Last seen Soy tag.\n          kind: state.kind.concat([]), // Values of kind=\"\" attributes.\n          kindTag: state.kindTag.concat([]), // Opened tags with kind=\"\" attributes.\n          soyState: state.soyState.concat([]),\n          indent: state.indent, // Indentation of the following line.\n          localMode: state.localMode,\n          localState: CodeMirror.copyState(state.localMode, state.localState)\n        };\n      },\n\n      token: function(stream, state) {\n        var match;\n\n        switch (last(state.soyState)) {\n          case \"comment\":\n            if (stream.match(/^.*?\\*\\//)) {\n              state.soyState.pop();\n            } else {\n              stream.skipToEnd();\n            }\n            return \"comment\";\n\n          case \"variable\":\n            if (stream.match(/^}/)) {\n              state.indent -= 2 * config.indentUnit;\n              state.soyState.pop();\n              return \"variable-2\";\n            }\n            stream.next();\n            return null;\n\n          case \"tag\":\n            if (stream.match(/^\\/?}/)) {\n              if (state.tag == \"/template\" || state.tag == \"/deltemplate\") state.indent = 0;\n              else state.indent -= (stream.current() == \"/}\" || indentingTags.indexOf(state.tag) == -1 ? 2 : 1) * config.indentUnit;\n              state.soyState.pop();\n              return \"keyword\";\n            } else if (stream.match(/^(\\w+)(?==)/)) {\n              if (stream.current() == \"kind\" && (match = stream.match(/^=\"([^\"]+)/, false))) {\n                var kind = match[1];\n                state.kind.push(kind);\n                state.kindTag.push(state.tag);\n                state.localMode = modes[kind] || modes.html;\n                state.localState = CodeMirror.startState(state.localMode);\n              }\n              return \"attribute\";\n            } else if (stream.match(/^\"/)) {\n              state.soyState.push(\"string\");\n              return \"string\";\n            }\n            stream.next();\n            return null;\n\n          case \"literal\":\n            if (stream.match(/^(?=\\{\\/literal})/)) {\n              state.indent -= config.indentUnit;\n              state.soyState.pop();\n              return this.token(stream, state);\n            }\n            return tokenUntil(stream, state, /\\{\\/literal}/);\n\n          case \"string\":\n            if (stream.match(/^.*?\"/)) {\n              state.soyState.pop();\n            } else {\n              stream.skipToEnd();\n            }\n            return \"string\";\n        }\n\n        if (stream.match(/^\\/\\*/)) {\n          state.soyState.push(\"comment\");\n          return \"comment\";\n        } else if (stream.match(stream.sol() ? /^\\s*\\/\\/.*/ : /^\\s+\\/\\/.*/)) {\n          return \"comment\";\n        } else if (stream.match(/^\\{\\$\\w*/)) {\n          state.indent += 2 * config.indentUnit;\n          state.soyState.push(\"variable\");\n          return \"variable-2\";\n        } else if (stream.match(/^\\{literal}/)) {\n          state.indent += config.indentUnit;\n          state.soyState.push(\"literal\");\n          return \"keyword\";\n        } else if (match = stream.match(/^\\{([\\/@\\\\]?\\w*)/)) {\n          if (match[1] != \"/switch\")\n            state.indent += (/^(\\/|(else|elseif|case|default)$)/.test(match[1]) && state.tag != \"switch\" ? 1 : 2) * config.indentUnit;\n          state.tag = match[1];\n          if (state.tag == \"/\" + last(state.kindTag)) {\n            // We found the tag that opened the current kind=\"\".\n            state.kind.pop();\n            state.kindTag.pop();\n            state.localMode = modes[last(state.kind)] || modes.html;\n            state.localState = CodeMirror.startState(state.localMode);\n          }\n          state.soyState.push(\"tag\");\n          return \"keyword\";\n        }\n\n        return tokenUntil(stream, state, /\\{|\\s+\\/\\/|\\/\\*/);\n      },\n\n      indent: function(state, textAfter) {\n        var indent = state.indent, top = last(state.soyState);\n        if (top == \"comment\") return CodeMirror.Pass;\n\n        if (top == \"literal\") {\n          if (/^\\{\\/literal}/.test(textAfter)) indent -= config.indentUnit;\n        } else {\n          if (/^\\s*\\{\\/(template|deltemplate)\\b/.test(textAfter)) return 0;\n          if (/^\\{(\\/|(fallbackmsg|elseif|else|ifempty)\\b)/.test(textAfter)) indent -= config.indentUnit;\n          if (state.tag != \"switch\" && /^\\{(case|default)\\b/.test(textAfter)) indent -= config.indentUnit;\n          if (/^\\{\\/switch\\b/.test(textAfter)) indent -= config.indentUnit;\n        }\n        if (indent && state.localMode.indent)\n          indent += state.localMode.indent(state.localState, textAfter);\n        return indent;\n      },\n\n      innerMode: function(state) {\n        if (state.soyState.length && last(state.soyState) != \"literal\") return null;\n        else return {state: state.localState, mode: state.localMode};\n      },\n\n      electricInput: /^\\s*\\{(\\/|\\/template|\\/deltemplate|\\/switch|fallbackmsg|elseif|else|case|default|ifempty|\\/literal\\})$/,\n      lineComment: \"//\",\n      blockCommentStart: \"/*\",\n      blockCommentEnd: \"*/\",\n      blockCommentContinue: \" * \",\n      fold: \"indent\"\n    };\n  }, \"htmlmixed\");\n\n  CodeMirror.registerHelper(\"hintWords\", \"soy\", indentingTags.concat(\n      [\"delpackage\", \"namespace\", \"alias\", \"print\", \"css\", \"debugger\"]));\n\n  CodeMirror.defineMIME(\"text/x-soy\", \"soy\");\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/sparql/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: SPARQL mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"sparql.js\"></script>\n<style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">SPARQL</a>\n  </ul>\n</div>\n\n<article>\n<h2>SPARQL mode</h2>\n<form><textarea id=\"code\" name=\"code\">\nPREFIX a: &lt;http://www.w3.org/2000/10/annotation-ns#>\nPREFIX dc: &lt;http://purl.org/dc/elements/1.1/>\nPREFIX foaf: &lt;http://xmlns.com/foaf/0.1/>\nPREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#>\n\n# Comment!\n\nSELECT ?given ?family\nWHERE {\n  {\n    ?annot a:annotates &lt;http://www.w3.org/TR/rdf-sparql-query/> .\n    ?annot dc:creator ?c .\n    OPTIONAL {?c foaf:givenName ?given ;\n                 foaf:familyName ?family }\n  } UNION {\n    ?c !foaf:knows/foaf:knows? ?thing.\n    ?thing rdfs\n  } MINUS {\n    ?thing rdfs:label \"剛柔流\"@jp\n  }\n  FILTER isBlank(?c)\n}\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: \"application/sparql-query\",\n        matchBrackets: true\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>application/sparql-query</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/sparql/sparql.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"sparql\", function(config) {\n  var indentUnit = config.indentUnit;\n  var curPunc;\n\n  function wordRegexp(words) {\n    return new RegExp(\"^(?:\" + words.join(\"|\") + \")$\", \"i\");\n  }\n  var ops = wordRegexp([\"str\", \"lang\", \"langmatches\", \"datatype\", \"bound\", \"sameterm\", \"isiri\", \"isuri\",\n                        \"iri\", \"uri\", \"bnode\", \"count\", \"sum\", \"min\", \"max\", \"avg\", \"sample\",\n                        \"group_concat\", \"rand\", \"abs\", \"ceil\", \"floor\", \"round\", \"concat\", \"substr\", \"strlen\",\n                        \"replace\", \"ucase\", \"lcase\", \"encode_for_uri\", \"contains\", \"strstarts\", \"strends\",\n                        \"strbefore\", \"strafter\", \"year\", \"month\", \"day\", \"hours\", \"minutes\", \"seconds\",\n                        \"timezone\", \"tz\", \"now\", \"uuid\", \"struuid\", \"md5\", \"sha1\", \"sha256\", \"sha384\",\n                        \"sha512\", \"coalesce\", \"if\", \"strlang\", \"strdt\", \"isnumeric\", \"regex\", \"exists\",\n                        \"isblank\", \"isliteral\", \"a\"]);\n  var keywords = wordRegexp([\"base\", \"prefix\", \"select\", \"distinct\", \"reduced\", \"construct\", \"describe\",\n                             \"ask\", \"from\", \"named\", \"where\", \"order\", \"limit\", \"offset\", \"filter\", \"optional\",\n                             \"graph\", \"by\", \"asc\", \"desc\", \"as\", \"having\", \"undef\", \"values\", \"group\",\n                             \"minus\", \"in\", \"not\", \"service\", \"silent\", \"using\", \"insert\", \"delete\", \"union\",\n                             \"true\", \"false\", \"with\",\n                             \"data\", \"copy\", \"to\", \"move\", \"add\", \"create\", \"drop\", \"clear\", \"load\"]);\n  var operatorChars = /[*+\\-<>=&|\\^\\/!\\?]/;\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    curPunc = null;\n    if (ch == \"$\" || ch == \"?\") {\n      if(ch == \"?\" && stream.match(/\\s/, false)){\n        return \"operator\";\n      }\n      stream.match(/^[\\w\\d]*/);\n      return \"variable-2\";\n    }\n    else if (ch == \"<\" && !stream.match(/^[\\s\\u00a0=]/, false)) {\n      stream.match(/^[^\\s\\u00a0>]*>?/);\n      return \"atom\";\n    }\n    else if (ch == \"\\\"\" || ch == \"'\") {\n      state.tokenize = tokenLiteral(ch);\n      return state.tokenize(stream, state);\n    }\n    else if (/[{}\\(\\),\\.;\\[\\]]/.test(ch)) {\n      curPunc = ch;\n      return \"bracket\";\n    }\n    else if (ch == \"#\") {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n    else if (operatorChars.test(ch)) {\n      stream.eatWhile(operatorChars);\n      return \"operator\";\n    }\n    else if (ch == \":\") {\n      stream.eatWhile(/[\\w\\d\\._\\-]/);\n      return \"atom\";\n    }\n    else if (ch == \"@\") {\n      stream.eatWhile(/[a-z\\d\\-]/i);\n      return \"meta\";\n    }\n    else {\n      stream.eatWhile(/[_\\w\\d]/);\n      if (stream.eat(\":\")) {\n        stream.eatWhile(/[\\w\\d_\\-]/);\n        return \"atom\";\n      }\n      var word = stream.current();\n      if (ops.test(word))\n        return \"builtin\";\n      else if (keywords.test(word))\n        return \"keyword\";\n      else\n        return \"variable\";\n    }\n  }\n\n  function tokenLiteral(quote) {\n    return function(stream, state) {\n      var escaped = false, ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == quote && !escaped) {\n          state.tokenize = tokenBase;\n          break;\n        }\n        escaped = !escaped && ch == \"\\\\\";\n      }\n      return \"string\";\n    };\n  }\n\n  function pushContext(state, type, col) {\n    state.context = {prev: state.context, indent: state.indent, col: col, type: type};\n  }\n  function popContext(state) {\n    state.indent = state.context.indent;\n    state.context = state.context.prev;\n  }\n\n  return {\n    startState: function() {\n      return {tokenize: tokenBase,\n              context: null,\n              indent: 0,\n              col: 0};\n    },\n\n    token: function(stream, state) {\n      if (stream.sol()) {\n        if (state.context && state.context.align == null) state.context.align = false;\n        state.indent = stream.indentation();\n      }\n      if (stream.eatSpace()) return null;\n      var style = state.tokenize(stream, state);\n\n      if (style != \"comment\" && state.context && state.context.align == null && state.context.type != \"pattern\") {\n        state.context.align = true;\n      }\n\n      if (curPunc == \"(\") pushContext(state, \")\", stream.column());\n      else if (curPunc == \"[\") pushContext(state, \"]\", stream.column());\n      else if (curPunc == \"{\") pushContext(state, \"}\", stream.column());\n      else if (/[\\]\\}\\)]/.test(curPunc)) {\n        while (state.context && state.context.type == \"pattern\") popContext(state);\n        if (state.context && curPunc == state.context.type) popContext(state);\n      }\n      else if (curPunc == \".\" && state.context && state.context.type == \"pattern\") popContext(state);\n      else if (/atom|string|variable/.test(style) && state.context) {\n        if (/[\\}\\]]/.test(state.context.type))\n          pushContext(state, \"pattern\", stream.column());\n        else if (state.context.type == \"pattern\" && !state.context.align) {\n          state.context.align = true;\n          state.context.col = stream.column();\n        }\n      }\n\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      var firstChar = textAfter && textAfter.charAt(0);\n      var context = state.context;\n      if (/[\\]\\}]/.test(firstChar))\n        while (context && context.type == \"pattern\") context = context.prev;\n\n      var closing = context && firstChar == context.type;\n      if (!context)\n        return 0;\n      else if (context.type == \"pattern\")\n        return context.col;\n      else if (context.align)\n        return context.col + (closing ? 0 : 1);\n      else\n        return context.indent + (closing ? 0 : indentUnit);\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"application/sparql-query\", \"sparql\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/spreadsheet/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Spreadsheet mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"spreadsheet.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Spreadsheet</a>\n  </ul>\n</div>\n\n<article>\n  <h2>Spreadsheet mode</h2>\n  <form><textarea id=\"code\" name=\"code\">=IF(A1:B2, TRUE, FALSE) / 100</textarea></form>\n\n  <script>\n    var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n      lineNumbers: true,\n      matchBrackets: true,\n      extraKeys: {\"Tab\":  \"indentAuto\"}\n    });\n  </script>\n\n  <p><strong>MIME types defined:</strong> <code>text/x-spreadsheet</code>.</p>\n  \n  <h3>The Spreadsheet Mode</h3>\n  <p> Created by <a href=\"https://github.com/robertleeplummerjr\">Robert Plummer</a></p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/spreadsheet/spreadsheet.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineMode(\"spreadsheet\", function () {\n    return {\n      startState: function () {\n        return {\n          stringType: null,\n          stack: []\n        };\n      },\n      token: function (stream, state) {\n        if (!stream) return;\n\n        //check for state changes\n        if (state.stack.length === 0) {\n          //strings\n          if ((stream.peek() == '\"') || (stream.peek() == \"'\")) {\n            state.stringType = stream.peek();\n            stream.next(); // Skip quote\n            state.stack.unshift(\"string\");\n          }\n        }\n\n        //return state\n        //stack has\n        switch (state.stack[0]) {\n        case \"string\":\n          while (state.stack[0] === \"string\" && !stream.eol()) {\n            if (stream.peek() === state.stringType) {\n              stream.next(); // Skip quote\n              state.stack.shift(); // Clear flag\n            } else if (stream.peek() === \"\\\\\") {\n              stream.next();\n              stream.next();\n            } else {\n              stream.match(/^.[^\\\\\\\"\\']*/);\n            }\n          }\n          return \"string\";\n\n        case \"characterClass\":\n          while (state.stack[0] === \"characterClass\" && !stream.eol()) {\n            if (!(stream.match(/^[^\\]\\\\]+/) || stream.match(/^\\\\./)))\n              state.stack.shift();\n          }\n          return \"operator\";\n        }\n\n        var peek = stream.peek();\n\n        //no stack\n        switch (peek) {\n        case \"[\":\n          stream.next();\n          state.stack.unshift(\"characterClass\");\n          return \"bracket\";\n        case \":\":\n          stream.next();\n          return \"operator\";\n        case \"\\\\\":\n          if (stream.match(/\\\\[a-z]+/)) return \"string-2\";\n          else return null;\n        case \".\":\n        case \",\":\n        case \";\":\n        case \"*\":\n        case \"-\":\n        case \"+\":\n        case \"^\":\n        case \"<\":\n        case \"/\":\n        case \"=\":\n          stream.next();\n          return \"atom\";\n        case \"$\":\n          stream.next();\n          return \"builtin\";\n        }\n\n        if (stream.match(/\\d+/)) {\n          if (stream.match(/^\\w+/)) return \"error\";\n          return \"number\";\n        } else if (stream.match(/^[a-zA-Z_]\\w*/)) {\n          if (stream.match(/(?=[\\(.])/, false)) return \"keyword\";\n          return \"variable-2\";\n        } else if ([\"[\", \"]\", \"(\", \")\", \"{\", \"}\"].indexOf(peek) != -1) {\n          stream.next();\n          return \"bracket\";\n        } else if (!stream.eatSpace()) {\n          stream.next();\n        }\n        return null;\n      }\n    };\n  });\n\n  CodeMirror.defineMIME(\"text/x-spreadsheet\", \"spreadsheet\");\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/sql/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: SQL Mode for CodeMirror</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\" />\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"sql.js\"></script>\n<link rel=\"stylesheet\" href=\"../../addon/hint/show-hint.css\" />\n<script src=\"../../addon/hint/show-hint.js\"></script>\n<script src=\"../../addon/hint/sql-hint.js\"></script>\n<style>\n.CodeMirror {\n    border-top: 1px solid black;\n    border-bottom: 1px solid black;\n}\n        </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">SQL Mode for CodeMirror</a>\n  </ul>\n</div>\n\n<article>\n<h2>SQL Mode for CodeMirror</h2>\n<form>\n            <textarea id=\"code\" name=\"code\">-- SQL Mode for CodeMirror\nSELECT SQL_NO_CACHE DISTINCT\n\t\t@var1 AS `val1`, @'val2', @global.'sql_mode',\n\t\t1.1 AS `float_val`, .14 AS `another_float`, 0.09e3 AS `int_with_esp`,\n\t\t0xFA5 AS `hex`, x'fa5' AS `hex2`, 0b101 AS `bin`, b'101' AS `bin2`,\n\t\tDATE '1994-01-01' AS `sql_date`, { T \"1994-01-01\" } AS `odbc_date`,\n\t\t'my string', _utf8'your string', N'her string',\n        TRUE, FALSE, UNKNOWN\n\tFROM DUAL\n\t-- space needed after '--'\n\t# 1 line comment\n\t/* multiline\n\tcomment! */\n\tLIMIT 1 OFFSET 0;\n</textarea>\n            </form>\n            <p><strong>MIME types defined:</strong> \n            <code><a href=\"?mime=text/x-sql\">text/x-sql</a></code>,\n            <code><a href=\"?mime=text/x-mysql\">text/x-mysql</a></code>,\n            <code><a href=\"?mime=text/x-mariadb\">text/x-mariadb</a></code>,\n            <code><a href=\"?mime=text/x-cassandra\">text/x-cassandra</a></code>,\n            <code><a href=\"?mime=text/x-plsql\">text/x-plsql</a></code>,\n            <code><a href=\"?mime=text/x-mssql\">text/x-mssql</a></code>,\n            <code><a href=\"?mime=text/x-hive\">text/x-hive</a></code>.\n        </p>\n<script>\nwindow.onload = function() {\n  var mime = 'text/x-mariadb';\n  // get mime type\n  if (window.location.href.indexOf('mime=') > -1) {\n    mime = window.location.href.substr(window.location.href.indexOf('mime=') + 5);\n  }\n  window.editor = CodeMirror.fromTextArea(document.getElementById('code'), {\n    mode: mime,\n    indentWithTabs: true,\n    smartIndent: true,\n    lineNumbers: true,\n    matchBrackets : true,\n    autofocus: true,\n    extraKeys: {\"Ctrl-Space\": \"autocomplete\"},\n    hintOptions: {tables: {\n      users: {name: null, score: null, birthDate: null},\n      countries: {name: null, population: null, size: null}\n    }}\n  });\n};\n</script>\n\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/sql/sql.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"sql\", function(config, parserConfig) {\n  \"use strict\";\n\n  var client         = parserConfig.client || {},\n      atoms          = parserConfig.atoms || {\"false\": true, \"true\": true, \"null\": true},\n      builtin        = parserConfig.builtin || {},\n      keywords       = parserConfig.keywords || {},\n      operatorChars  = parserConfig.operatorChars || /^[*+\\-%<>!=&|~^]/,\n      support        = parserConfig.support || {},\n      hooks          = parserConfig.hooks || {},\n      dateSQL        = parserConfig.dateSQL || {\"date\" : true, \"time\" : true, \"timestamp\" : true};\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n\n    // call hooks from the mime type\n    if (hooks[ch]) {\n      var result = hooks[ch](stream, state);\n      if (result !== false) return result;\n    }\n\n    if (support.hexNumber == true &&\n      ((ch == \"0\" && stream.match(/^[xX][0-9a-fA-F]+/))\n      || (ch == \"x\" || ch == \"X\") && stream.match(/^'[0-9a-fA-F]+'/))) {\n      // hex\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html\n      return \"number\";\n    } else if (support.binaryNumber == true &&\n      (((ch == \"b\" || ch == \"B\") && stream.match(/^'[01]+'/))\n      || (ch == \"0\" && stream.match(/^b[01]+/)))) {\n      // bitstring\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html\n      return \"number\";\n    } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) {\n      // numbers\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html\n          stream.match(/^[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?/);\n      support.decimallessFloat == true && stream.eat('.');\n      return \"number\";\n    } else if (ch == \"?\" && (stream.eatSpace() || stream.eol() || stream.eat(\";\"))) {\n      // placeholders\n      return \"variable-3\";\n    } else if (ch == \"'\" || (ch == '\"' && support.doubleQuote)) {\n      // strings\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html\n      state.tokenize = tokenLiteral(ch);\n      return state.tokenize(stream, state);\n    } else if ((((support.nCharCast == true && (ch == \"n\" || ch == \"N\"))\n        || (support.charsetCast == true && ch == \"_\" && stream.match(/[a-z][a-z0-9]*/i)))\n        && (stream.peek() == \"'\" || stream.peek() == '\"'))) {\n      // charset casting: _utf8'str', N'str', n'str'\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html\n      return \"keyword\";\n    } else if (/^[\\(\\),\\;\\[\\]]/.test(ch)) {\n      // no highlightning\n      return null;\n    } else if (support.commentSlashSlash && ch == \"/\" && stream.eat(\"/\")) {\n      // 1-line comment\n      stream.skipToEnd();\n      return \"comment\";\n    } else if ((support.commentHash && ch == \"#\")\n        || (ch == \"-\" && stream.eat(\"-\") && (!support.commentSpaceRequired || stream.eat(\" \")))) {\n      // 1-line comments\n      // ref: https://kb.askmonty.org/en/comment-syntax/\n      stream.skipToEnd();\n      return \"comment\";\n    } else if (ch == \"/\" && stream.eat(\"*\")) {\n      // multi-line comments\n      // ref: https://kb.askmonty.org/en/comment-syntax/\n      state.tokenize = tokenComment;\n      return state.tokenize(stream, state);\n    } else if (ch == \".\") {\n      // .1 for 0.1\n      if (support.zerolessFloat == true && stream.match(/^(?:\\d+(?:e[+-]?\\d+)?)/i)) {\n        return \"number\";\n      }\n      // .table_name (ODBC)\n      // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html\n      if (support.ODBCdotTable == true && stream.match(/^[a-zA-Z_]+/)) {\n        return \"variable-2\";\n      }\n    } else if (operatorChars.test(ch)) {\n      // operators\n      stream.eatWhile(operatorChars);\n      return null;\n    } else if (ch == '{' &&\n        (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*\"[^\"]*\"( )*}/))) {\n      // dates (weird ODBC syntax)\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html\n      return \"number\";\n    } else {\n      stream.eatWhile(/^[_\\w\\d]/);\n      var word = stream.current().toLowerCase();\n      // dates (standard SQL syntax)\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html\n      if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+\"[^\"]*\"/)))\n        return \"number\";\n      if (atoms.hasOwnProperty(word)) return \"atom\";\n      if (builtin.hasOwnProperty(word)) return \"builtin\";\n      if (keywords.hasOwnProperty(word)) return \"keyword\";\n      if (client.hasOwnProperty(word)) return \"string-2\";\n      return null;\n    }\n  }\n\n  // 'string', with char specified in quote escaped by '\\'\n  function tokenLiteral(quote) {\n    return function(stream, state) {\n      var escaped = false, ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == quote && !escaped) {\n          state.tokenize = tokenBase;\n          break;\n        }\n        escaped = !escaped && ch == \"\\\\\";\n      }\n      return \"string\";\n    };\n  }\n  function tokenComment(stream, state) {\n    while (true) {\n      if (stream.skipTo(\"*\")) {\n        stream.next();\n        if (stream.eat(\"/\")) {\n          state.tokenize = tokenBase;\n          break;\n        }\n      } else {\n        stream.skipToEnd();\n        break;\n      }\n    }\n    return \"comment\";\n  }\n\n  function pushContext(stream, state, type) {\n    state.context = {\n      prev: state.context,\n      indent: stream.indentation(),\n      col: stream.column(),\n      type: type\n    };\n  }\n\n  function popContext(state) {\n    state.indent = state.context.indent;\n    state.context = state.context.prev;\n  }\n\n  return {\n    startState: function() {\n      return {tokenize: tokenBase, context: null};\n    },\n\n    token: function(stream, state) {\n      if (stream.sol()) {\n        if (state.context && state.context.align == null)\n          state.context.align = false;\n      }\n      if (stream.eatSpace()) return null;\n\n      var style = state.tokenize(stream, state);\n      if (style == \"comment\") return style;\n\n      if (state.context && state.context.align == null)\n        state.context.align = true;\n\n      var tok = stream.current();\n      if (tok == \"(\")\n        pushContext(stream, state, \")\");\n      else if (tok == \"[\")\n        pushContext(stream, state, \"]\");\n      else if (state.context && state.context.type == tok)\n        popContext(state);\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      var cx = state.context;\n      if (!cx) return CodeMirror.Pass;\n      var closing = textAfter.charAt(0) == cx.type;\n      if (cx.align) return cx.col + (closing ? 0 : 1);\n      else return cx.indent + (closing ? 0 : config.indentUnit);\n    },\n\n    blockCommentStart: \"/*\",\n    blockCommentEnd: \"*/\",\n    lineComment: support.commentSlashSlash ? \"//\" : support.commentHash ? \"#\" : null\n  };\n});\n\n(function() {\n  \"use strict\";\n\n  // `identifier`\n  function hookIdentifier(stream) {\n    // MySQL/MariaDB identifiers\n    // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html\n    var ch;\n    while ((ch = stream.next()) != null) {\n      if (ch == \"`\" && !stream.eat(\"`\")) return \"variable-2\";\n    }\n    stream.backUp(stream.current().length - 1);\n    return stream.eatWhile(/\\w/) ? \"variable-2\" : null;\n  }\n\n  // variable token\n  function hookVar(stream) {\n    // variables\n    // @@prefix.varName @varName\n    // varName can be quoted with ` or ' or \"\n    // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html\n    if (stream.eat(\"@\")) {\n      stream.match(/^session\\./);\n      stream.match(/^local\\./);\n      stream.match(/^global\\./);\n    }\n\n    if (stream.eat(\"'\")) {\n      stream.match(/^.*'/);\n      return \"variable-2\";\n    } else if (stream.eat('\"')) {\n      stream.match(/^.*\"/);\n      return \"variable-2\";\n    } else if (stream.eat(\"`\")) {\n      stream.match(/^.*`/);\n      return \"variable-2\";\n    } else if (stream.match(/^[0-9a-zA-Z$\\.\\_]+/)) {\n      return \"variable-2\";\n    }\n    return null;\n  };\n\n  // short client keyword token\n  function hookClient(stream) {\n    // \\N means NULL\n    // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html\n    if (stream.eat(\"N\")) {\n        return \"atom\";\n    }\n    // \\g, etc\n    // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html\n    return stream.match(/^[a-zA-Z.#!?]/) ? \"variable-2\" : null;\n  }\n\n  // these keywords are used by all SQL dialects (however, a mode can still overwrite it)\n  var sqlKeywords = \"alter and as asc between by count create delete desc distinct drop from having in insert into is join like not on or order select set table union update values where \";\n\n  // turn a space-separated list into an array\n  function set(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  // A generic SQL Mode. It's not a standard, it just try to support what is generally supported\n  CodeMirror.defineMIME(\"text/x-sql\", {\n    name: \"sql\",\n    keywords: set(sqlKeywords + \"begin\"),\n    builtin: set(\"bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric\"),\n    atoms: set(\"false true null unknown\"),\n    operatorChars: /^[*+\\-%<>!=]/,\n    dateSQL: set(\"date time timestamp\"),\n    support: set(\"ODBCdotTable doubleQuote binaryNumber hexNumber\")\n  });\n\n  CodeMirror.defineMIME(\"text/x-mssql\", {\n    name: \"sql\",\n    client: set(\"charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee\"),\n    keywords: set(sqlKeywords + \"begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered\"),\n    builtin: set(\"bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table \"),\n    atoms: set(\"false true null unknown\"),\n    operatorChars: /^[*+\\-%<>!=]/,\n    dateSQL: set(\"date datetimeoffset datetime2 smalldatetime datetime time\"),\n    hooks: {\n      \"@\":   hookVar\n    }\n  });\n\n  CodeMirror.defineMIME(\"text/x-mysql\", {\n    name: \"sql\",\n    client: set(\"charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee\"),\n    keywords: set(sqlKeywords + \"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group groupby_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat\"),\n    builtin: set(\"bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric\"),\n    atoms: set(\"false true null unknown\"),\n    operatorChars: /^[*+\\-%<>!=&|^]/,\n    dateSQL: set(\"date time timestamp\"),\n    support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired\"),\n    hooks: {\n      \"@\":   hookVar,\n      \"`\":   hookIdentifier,\n      \"\\\\\":  hookClient\n    }\n  });\n\n  CodeMirror.defineMIME(\"text/x-mariadb\", {\n    name: \"sql\",\n    client: set(\"charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee\"),\n    keywords: set(sqlKeywords + \"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat\"),\n    builtin: set(\"bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric\"),\n    atoms: set(\"false true null unknown\"),\n    operatorChars: /^[*+\\-%<>!=&|^]/,\n    dateSQL: set(\"date time timestamp\"),\n    support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired\"),\n    hooks: {\n      \"@\":   hookVar,\n      \"`\":   hookIdentifier,\n      \"\\\\\":  hookClient\n    }\n  });\n\n  // the query language used by Apache Cassandra is called CQL, but this mime type\n  // is called Cassandra to avoid confusion with Contextual Query Language\n  CodeMirror.defineMIME(\"text/x-cassandra\", {\n    name: \"sql\",\n    client: { },\n    keywords: set(\"use select from using consistency where limit first reversed first and in insert into values using consistency ttl update set delete truncate begin batch apply create keyspace with columnfamily primary key index on drop alter type add any one quorum all local_quorum each_quorum\"),\n    builtin: set(\"ascii bigint blob boolean counter decimal double float int text timestamp uuid varchar varint\"),\n    atoms: set(\"false true\"),\n    operatorChars: /^[<>=]/,\n    dateSQL: { },\n    support: set(\"commentSlashSlash decimallessFloat\"),\n    hooks: { }\n  });\n\n  // this is based on Peter Raganitsch's 'plsql' mode\n  CodeMirror.defineMIME(\"text/x-plsql\", {\n    name:       \"sql\",\n    client:     set(\"appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap\"),\n    keywords:   set(\"abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work\"),\n    builtin:    set(\"abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least lenght lenghtb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml\"),\n    operatorChars: /^[*+\\-%<>!=~]/,\n    dateSQL:    set(\"date time timestamp\"),\n    support:    set(\"doubleQuote nCharCast zerolessFloat binaryNumber hexNumber\")\n  });\n\n  // Created to support specific hive keywords\n  CodeMirror.defineMIME(\"text/x-hive\", {\n    name: \"sql\",\n    keywords: set(\"select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external false fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger true unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with\"),\n    builtin: set(\"bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype\"),\n    atoms: set(\"false true null unknown\"),\n    operatorChars: /^[*+\\-%<>!=]/,\n    dateSQL: set(\"date timestamp\"),\n    support: set(\"ODBCdotTable doubleQuote binaryNumber hexNumber\")\n  });\n}());\n\n});\n\n/*\n  How Properties of Mime Types are used by SQL Mode\n  =================================================\n\n  keywords:\n    A list of keywords you want to be highlighted.\n  builtin:\n    A list of builtin types you want to be highlighted (if you want types to be of class \"builtin\" instead of \"keyword\").\n  operatorChars:\n    All characters that must be handled as operators.\n  client:\n    Commands parsed and executed by the client (not the server).\n  support:\n    A list of supported syntaxes which are not common, but are supported by more than 1 DBMS.\n    * ODBCdotTable: .tableName\n    * zerolessFloat: .1\n    * doubleQuote\n    * nCharCast: N'string'\n    * charsetCast: _utf8'string'\n    * commentHash: use # char for comments\n    * commentSlashSlash: use // for comments\n    * commentSpaceRequired: require a space after -- for comments\n  atoms:\n    Keywords that must be highlighted as atoms,. Some DBMS's support more atoms than others:\n    UNKNOWN, INFINITY, UNDERFLOW, NaN...\n  dateSQL:\n    Used for date/time SQL standard syntax, because not all DBMS's support same temporal types.\n*/\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/stex/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: sTeX mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"stex.js\"></script>\n<style>.CodeMirror {background: #f8f8f8;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">sTeX</a>\n  </ul>\n</div>\n\n<article>\n<h2>sTeX mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n\\begin{module}[id=bbt-size]\n\\importmodule[balanced-binary-trees]{balanced-binary-trees}\n\\importmodule[\\KWARCslides{dmath/en/cardinality}]{cardinality}\n\n\\begin{frame}\n  \\frametitle{Size Lemma for Balanced Trees}\n  \\begin{itemize}\n  \\item\n    \\begin{assertion}[id=size-lemma,type=lemma] \n    Let $G=\\tup{V,E}$ be a \\termref[cd=binary-trees]{balanced binary tree} \n    of \\termref[cd=graph-depth,name=vertex-depth]{depth}$n>i$, then the set\n     $\\defeq{\\livar{V}i}{\\setst{\\inset{v}{V}}{\\gdepth{v} = i}}$ of\n    \\termref[cd=graphs-intro,name=node]{nodes} at \n    \\termref[cd=graph-depth,name=vertex-depth]{depth} $i$ has\n    \\termref[cd=cardinality,name=cardinality]{cardinality} $\\power2i$.\n   \\end{assertion}\n  \\item\n    \\begin{sproof}[id=size-lemma-pf,proofend=,for=size-lemma]{via induction over the depth $i$.}\n      \\begin{spfcases}{We have to consider two cases}\n        \\begin{spfcase}{$i=0$}\n          \\begin{spfstep}[display=flow]\n            then $\\livar{V}i=\\set{\\livar{v}r}$, where $\\livar{v}r$ is the root, so\n            $\\eq{\\card{\\livar{V}0},\\card{\\set{\\livar{v}r}},1,\\power20}$.\n          \\end{spfstep}\n        \\end{spfcase}\n        \\begin{spfcase}{$i>0$}\n          \\begin{spfstep}[display=flow]\n           then $\\livar{V}{i-1}$ contains $\\power2{i-1}$ vertexes \n           \\begin{justification}[method=byIH](IH)\\end{justification}\n          \\end{spfstep}\n          \\begin{spfstep}\n           By the \\begin{justification}[method=byDef]definition of a binary\n              tree\\end{justification}, each $\\inset{v}{\\livar{V}{i-1}}$ is a leaf or has\n            two children that are at depth $i$.\n          \\end{spfstep}\n          \\begin{spfstep}\n           As $G$ is \\termref[cd=balanced-binary-trees,name=balanced-binary-tree]{balanced} and $\\gdepth{G}=n>i$, $\\livar{V}{i-1}$ cannot contain\n            leaves.\n          \\end{spfstep}\n          \\begin{spfstep}[type=conclusion]\n           Thus $\\eq{\\card{\\livar{V}i},{\\atimes[cdot]{2,\\card{\\livar{V}{i-1}}}},{\\atimes[cdot]{2,\\power2{i-1}}},\\power2i}$.\n          \\end{spfstep}\n        \\end{spfcase}\n      \\end{spfcases}\n    \\end{sproof}\n  \\item \n    \\begin{assertion}[id=fbbt,type=corollary]\t\n      A fully balanced tree of depth $d$ has $\\power2{d+1}-1$ nodes.\n    \\end{assertion}\n  \\item\n      \\begin{sproof}[for=fbbt,id=fbbt-pf]{}\n        \\begin{spfstep}\n          Let $\\defeq{G}{\\tup{V,E}}$ be a fully balanced tree\n        \\end{spfstep}\n        \\begin{spfstep}\n          Then $\\card{V}=\\Sumfromto{i}1d{\\power2i}= \\power2{d+1}-1$.\n        \\end{spfstep}\n      \\end{sproof}\n    \\end{itemize}\n  \\end{frame}\n\\begin{note}\n  \\begin{omtext}[type=conclusion,for=binary-tree]\n    This shows that balanced binary trees grow in breadth very quickly, a consequence of\n    this is that they are very shallow (and this compute very fast), which is the essence of\n    the next result.\n  \\end{omtext}\n\\end{note}\n\\end{module}\n\n%%% Local Variables: \n%%% mode: LaTeX\n%%% TeX-master: \"all\"\n%%% End: \\end{document}\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {});\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-stex</code>.</p>\n\n    <p><strong>Parsing/Highlighting Tests:</strong> <a href=\"../../test/index.html#stex_*\">normal</a>,  <a href=\"../../test/index.html#verbose,stex_*\">verbose</a>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/stex/stex.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/*\n * Author: Constantin Jucovschi (c.jucovschi@jacobs-university.de)\n * Licence: MIT\n */\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineMode(\"stex\", function() {\n    \"use strict\";\n\n    function pushCommand(state, command) {\n      state.cmdState.push(command);\n    }\n\n    function peekCommand(state) {\n      if (state.cmdState.length > 0) {\n        return state.cmdState[state.cmdState.length - 1];\n      } else {\n        return null;\n      }\n    }\n\n    function popCommand(state) {\n      var plug = state.cmdState.pop();\n      if (plug) {\n        plug.closeBracket();\n      }\n    }\n\n    // returns the non-default plugin closest to the end of the list\n    function getMostPowerful(state) {\n      var context = state.cmdState;\n      for (var i = context.length - 1; i >= 0; i--) {\n        var plug = context[i];\n        if (plug.name == \"DEFAULT\") {\n          continue;\n        }\n        return plug;\n      }\n      return { styleIdentifier: function() { return null; } };\n    }\n\n    function addPluginPattern(pluginName, cmdStyle, styles) {\n      return function () {\n        this.name = pluginName;\n        this.bracketNo = 0;\n        this.style = cmdStyle;\n        this.styles = styles;\n        this.argument = null;   // \\begin and \\end have arguments that follow. These are stored in the plugin\n\n        this.styleIdentifier = function() {\n          return this.styles[this.bracketNo - 1] || null;\n        };\n        this.openBracket = function() {\n          this.bracketNo++;\n          return \"bracket\";\n        };\n        this.closeBracket = function() {};\n      };\n    }\n\n    var plugins = {};\n\n    plugins[\"importmodule\"] = addPluginPattern(\"importmodule\", \"tag\", [\"string\", \"builtin\"]);\n    plugins[\"documentclass\"] = addPluginPattern(\"documentclass\", \"tag\", [\"\", \"atom\"]);\n    plugins[\"usepackage\"] = addPluginPattern(\"usepackage\", \"tag\", [\"atom\"]);\n    plugins[\"begin\"] = addPluginPattern(\"begin\", \"tag\", [\"atom\"]);\n    plugins[\"end\"] = addPluginPattern(\"end\", \"tag\", [\"atom\"]);\n\n    plugins[\"DEFAULT\"] = function () {\n      this.name = \"DEFAULT\";\n      this.style = \"tag\";\n\n      this.styleIdentifier = this.openBracket = this.closeBracket = function() {};\n    };\n\n    function setState(state, f) {\n      state.f = f;\n    }\n\n    // called when in a normal (no environment) context\n    function normal(source, state) {\n      var plug;\n      // Do we look like '\\command' ?  If so, attempt to apply the plugin 'command'\n      if (source.match(/^\\\\[a-zA-Z@]+/)) {\n        var cmdName = source.current().slice(1);\n        plug = plugins[cmdName] || plugins[\"DEFAULT\"];\n        plug = new plug();\n        pushCommand(state, plug);\n        setState(state, beginParams);\n        return plug.style;\n      }\n\n      // escape characters\n      if (source.match(/^\\\\[$&%#{}_]/)) {\n        return \"tag\";\n      }\n\n      // white space control characters\n      if (source.match(/^\\\\[,;!\\/\\\\]/)) {\n        return \"tag\";\n      }\n\n      // find if we're starting various math modes\n      if (source.match(\"\\\\[\")) {\n        setState(state, function(source, state){ return inMathMode(source, state, \"\\\\]\"); });\n        return \"keyword\";\n      }\n      if (source.match(\"$$\")) {\n        setState(state, function(source, state){ return inMathMode(source, state, \"$$\"); });\n        return \"keyword\";\n      }\n      if (source.match(\"$\")) {\n        setState(state, function(source, state){ return inMathMode(source, state, \"$\"); });\n        return \"keyword\";\n      }\n\n      var ch = source.next();\n      if (ch == \"%\") {\n        source.skipToEnd();\n        return \"comment\";\n      } else if (ch == '}' || ch == ']') {\n        plug = peekCommand(state);\n        if (plug) {\n          plug.closeBracket(ch);\n          setState(state, beginParams);\n        } else {\n          return \"error\";\n        }\n        return \"bracket\";\n      } else if (ch == '{' || ch == '[') {\n        plug = plugins[\"DEFAULT\"];\n        plug = new plug();\n        pushCommand(state, plug);\n        return \"bracket\";\n      } else if (/\\d/.test(ch)) {\n        source.eatWhile(/[\\w.%]/);\n        return \"atom\";\n      } else {\n        source.eatWhile(/[\\w\\-_]/);\n        plug = getMostPowerful(state);\n        if (plug.name == 'begin') {\n          plug.argument = source.current();\n        }\n        return plug.styleIdentifier();\n      }\n    }\n\n    function inMathMode(source, state, endModeSeq) {\n      if (source.eatSpace()) {\n        return null;\n      }\n      if (source.match(endModeSeq)) {\n        setState(state, normal);\n        return \"keyword\";\n      }\n      if (source.match(/^\\\\[a-zA-Z@]+/)) {\n        return \"tag\";\n      }\n      if (source.match(/^[a-zA-Z]+/)) {\n        return \"variable-2\";\n      }\n      // escape characters\n      if (source.match(/^\\\\[$&%#{}_]/)) {\n        return \"tag\";\n      }\n      // white space control characters\n      if (source.match(/^\\\\[,;!\\/]/)) {\n        return \"tag\";\n      }\n      // special math-mode characters\n      if (source.match(/^[\\^_&]/)) {\n        return \"tag\";\n      }\n      // non-special characters\n      if (source.match(/^[+\\-<>|=,\\/@!*:;'\"`~#?]/)) {\n        return null;\n      }\n      if (source.match(/^(\\d+\\.\\d*|\\d*\\.\\d+|\\d+)/)) {\n        return \"number\";\n      }\n      var ch = source.next();\n      if (ch == \"{\" || ch == \"}\" || ch == \"[\" || ch == \"]\" || ch == \"(\" || ch == \")\") {\n        return \"bracket\";\n      }\n\n      if (ch == \"%\") {\n        source.skipToEnd();\n        return \"comment\";\n      }\n      return \"error\";\n    }\n\n    function beginParams(source, state) {\n      var ch = source.peek(), lastPlug;\n      if (ch == '{' || ch == '[') {\n        lastPlug = peekCommand(state);\n        lastPlug.openBracket(ch);\n        source.eat(ch);\n        setState(state, normal);\n        return \"bracket\";\n      }\n      if (/[ \\t\\r]/.test(ch)) {\n        source.eat(ch);\n        return null;\n      }\n      setState(state, normal);\n      popCommand(state);\n\n      return normal(source, state);\n    }\n\n    return {\n      startState: function() {\n        return {\n          cmdState: [],\n          f: normal\n        };\n      },\n      copyState: function(s) {\n        return {\n          cmdState: s.cmdState.slice(),\n          f: s.f\n        };\n      },\n      token: function(stream, state) {\n        return state.f(stream, state);\n      },\n      blankLine: function(state) {\n        state.f = normal;\n        state.cmdState.length = 0;\n      },\n      lineComment: \"%\"\n    };\n  });\n\n  CodeMirror.defineMIME(\"text/x-stex\", \"stex\");\n  CodeMirror.defineMIME(\"text/x-latex\", \"stex\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/stex/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  var mode = CodeMirror.getMode({tabSize: 4}, \"stex\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }\n\n  MT(\"word\",\n     \"foo\");\n\n  MT(\"twoWords\",\n     \"foo bar\");\n\n  MT(\"beginEndDocument\",\n     \"[tag \\\\begin][bracket {][atom document][bracket }]\",\n     \"[tag \\\\end][bracket {][atom document][bracket }]\");\n\n  MT(\"beginEndEquation\",\n     \"[tag \\\\begin][bracket {][atom equation][bracket }]\",\n     \"  E=mc^2\",\n     \"[tag \\\\end][bracket {][atom equation][bracket }]\");\n\n  MT(\"beginModule\",\n     \"[tag \\\\begin][bracket {][atom module][bracket }[[]]]\");\n\n  MT(\"beginModuleId\",\n     \"[tag \\\\begin][bracket {][atom module][bracket }[[]id=bbt-size[bracket ]]]\");\n\n  MT(\"importModule\",\n     \"[tag \\\\importmodule][bracket [[][string b-b-t][bracket ]]{][builtin b-b-t][bracket }]\");\n\n  MT(\"importModulePath\",\n     \"[tag \\\\importmodule][bracket [[][tag \\\\KWARCslides][bracket {][string dmath/en/cardinality][bracket }]]{][builtin card][bracket }]\");\n\n  MT(\"psForPDF\",\n     \"[tag \\\\PSforPDF][bracket [[][atom 1][bracket ]]{]#1[bracket }]\");\n\n  MT(\"comment\",\n     \"[comment % foo]\");\n\n  MT(\"tagComment\",\n     \"[tag \\\\item][comment % bar]\");\n\n  MT(\"commentTag\",\n     \" [comment % \\\\item]\");\n\n  MT(\"commentLineBreak\",\n     \"[comment %]\",\n     \"foo\");\n\n  MT(\"tagErrorCurly\",\n     \"[tag \\\\begin][error }][bracket {]\");\n\n  MT(\"tagErrorSquare\",\n     \"[tag \\\\item][error ]]][bracket {]\");\n\n  MT(\"commentCurly\",\n     \"[comment % }]\");\n\n  MT(\"tagHash\",\n     \"the [tag \\\\#] key\");\n\n  MT(\"tagNumber\",\n     \"a [tag \\\\$][atom 5] stetson\");\n\n  MT(\"tagPercent\",\n     \"[atom 100][tag \\\\%] beef\");\n\n  MT(\"tagAmpersand\",\n     \"L [tag \\\\&] N\");\n\n  MT(\"tagUnderscore\",\n     \"foo[tag \\\\_]bar\");\n\n  MT(\"tagBracketOpen\",\n     \"[tag \\\\emph][bracket {][tag \\\\{][bracket }]\");\n\n  MT(\"tagBracketClose\",\n     \"[tag \\\\emph][bracket {][tag \\\\}][bracket }]\");\n\n  MT(\"tagLetterNumber\",\n     \"section [tag \\\\S][atom 1]\");\n\n  MT(\"textTagNumber\",\n     \"para [tag \\\\P][atom 2]\");\n\n  MT(\"thinspace\",\n     \"x[tag \\\\,]y\");\n\n  MT(\"thickspace\",\n     \"x[tag \\\\;]y\");\n\n  MT(\"negativeThinspace\",\n     \"x[tag \\\\!]y\");\n\n  MT(\"periodNotSentence\",\n     \"J.\\\\ L.\\\\ is\");\n\n  MT(\"periodSentence\",\n     \"X[tag \\\\@]. The\");\n\n  MT(\"italicCorrection\",\n     \"[bracket {][tag \\\\em] If[tag \\\\/][bracket }] I\");\n\n  MT(\"tagBracket\",\n     \"[tag \\\\newcommand][bracket {][tag \\\\pop][bracket }]\");\n\n  MT(\"inlineMathTagFollowedByNumber\",\n     \"[keyword $][tag \\\\pi][number 2][keyword $]\");\n\n  MT(\"inlineMath\",\n     \"[keyword $][number 3][variable-2 x][tag ^][number 2.45]-[tag \\\\sqrt][bracket {][tag \\\\$\\\\alpha][bracket }] = [number 2][keyword $] other text\");\n\n  MT(\"displayMath\",\n     \"More [keyword $$]\\t[variable-2 S][tag ^][variable-2 n][tag \\\\sum] [variable-2 i][keyword $$] other text\");\n\n  MT(\"mathWithComment\",\n     \"[keyword $][variable-2 x] [comment % $]\",\n     \"[variable-2 y][keyword $] other text\");\n\n  MT(\"lineBreakArgument\",\n    \"[tag \\\\\\\\][bracket [[][atom 1cm][bracket ]]]\");\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/stylus/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Stylus mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../addon/hint/show-hint.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"stylus.js\"></script>\n<script src=\"../../addon/hint/show-hint.js\"></script>\n<script src=\"../../addon/hint/css-hint.js\"></script>\n<style>.CodeMirror {background: #f8f8f8;} form{margin-bottom: .7em;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Stylus</a>\n  </ul>\n</div>\n\n<article>\n<h2>Stylus mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n/* Stylus mode */\n#id\n.class\narticle\n  font-family Arial, sans-serif\n\n#id,\n.class,\narticle {\n  font-family: Arial, sans-serif;\n}\n\n// Variables\nfont-size-base = 16px\nline-height-base = 1.5\nfont-family-base = \"Helvetica Neue\", Helvetica, Arial, sans-serif\ntext-color = lighten(#000, 20%)\n\nbody\n  font font-size-base/line-height-base font-family-base\n  color text-color\n\nbody {\n  font: 400 16px/1.5 \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  color: #333;\n}\n\n// Variables\nlink-color = darken(#428bca, 6.5%)\nlink-hover-color = darken(link-color, 15%)\nlink-decoration = none\nlink-hover-decoration = false\n\n// Mixin\ntab-focus()\n  outline thin dotted\n  outline 5px auto -webkit-focus-ring-color\n  outline-offset -2px\n\na\n  color link-color\n  if link-decoration\n    text-decoration link-decoration\n  &:hover\n  &:focus\n    color link-hover-color\n    if link-hover-decoration\n      text-decoration link-hover-decoration\n  &:focus\n    tab-focus()\n\na {\n  color: #3782c4;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #2f6ea7;\n}\na:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n</textarea>\n</form>\n<script>\n  var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n    extraKeys: {\"Ctrl-Space\": \"autocomplete\"},\n  });\n</script>\n\n<p><strong>MIME types defined:</strong> <code>text/x-styl</code>.</p>\n\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/stylus/stylus.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineMode(\"stylus\", function(config) {\n\n    var operatorsRegexp = /^(\\?:?|\\+[+=]?|-[\\-=]?|\\*[\\*=]?|\\/=?|[=!:\\?]?=|<=?|>=?|%=?|&&|\\|=?|\\~|!|\\^|\\\\)/,\n        delimitersRegexp = /^(?:[()\\[\\]{},:`=;]|\\.\\.?\\.?)/,\n        wordOperatorsRegexp = wordRegexp(wordOperators),\n        commonKeywordsRegexp = wordRegexp(commonKeywords),\n        commonAtomsRegexp = wordRegexp(commonAtoms),\n        commonDefRegexp = wordRegexp(commonDef),\n        vendorPrefixesRegexp = new RegExp(/^\\-(moz|ms|o|webkit)-/),\n        cssValuesWithBracketsRegexp = new RegExp(\"^(\" + cssValuesWithBrackets_.join(\"|\") + \")\\\\([\\\\w\\-\\\\#\\\\,\\\\.\\\\%\\\\s\\\\(\\\\)]*\\\\)\");\n\n    var tokenBase = function(stream, state) {\n\n      if (stream.eatSpace()) return null;\n\n      var ch = stream.peek();\n\n      // Single line Comment\n      if (stream.match('//')) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n\n      // Multiline Comment\n      if (stream.match('/*')) {\n        state.tokenizer = multilineComment;\n        return state.tokenizer(stream, state);\n      }\n\n      // Strings\n      if (ch === '\"' || ch === \"'\") {\n        stream.next();\n        state.tokenizer = buildStringTokenizer(ch);\n        return \"string\";\n      }\n\n      // Def\n      if (ch === \"@\") {\n        stream.next();\n        if (stream.match(/extend/)) {\n          dedent(state); // remove indentation after selectors\n        } else if (stream.match(/media[\\w-\\s]*[\\w-]/)) {\n          indent(state);\n        } else if(stream.eatWhile(/[\\w-]/)) {\n          if(stream.current().match(commonDefRegexp)) {\n            indent(state);\n          }\n        }\n        return \"def\";\n      }\n\n      // Number\n      if (stream.match(/^-?[0-9\\.]/, false)) {\n\n        // Floats\n        if (stream.match(/^-?\\d*\\.\\d+(e[\\+\\-]?\\d+)?/i) || stream.match(/^-?\\d+\\.\\d*/)) {\n\n          // Prevent from getting extra . on 1..\n          if (stream.peek() == \".\") {\n            stream.backUp(1);\n          }\n          // Units\n          stream.eatWhile(/[a-z%]/i);\n          return \"number\";\n        }\n        // Integers\n        if (stream.match(/^-?[1-9]\\d*(e[\\+\\-]?\\d+)?/) || stream.match(/^-?0(?![\\dx])/i)) {\n          // Units\n          stream.eatWhile(/[a-z%]/i);\n          return \"number\";\n        }\n      }\n\n      // Hex color and id selector\n      if (ch === \"#\") {\n        stream.next();\n\n        // Hex color\n        if (stream.match(/^[0-9a-f]{6}|[0-9a-f]{3}/i)) {\n          return \"atom\";\n        }\n\n        // ID selector\n        if (stream.match(/^[\\w-]+/i)) {\n          indent(state);\n          return \"builtin\";\n        }\n      }\n\n      // Vendor prefixes\n      if (stream.match(vendorPrefixesRegexp)) {\n        return \"meta\";\n      }\n\n      // Gradients and animation as CSS value\n      if (stream.match(cssValuesWithBracketsRegexp)) {\n        return \"atom\";\n      }\n\n      // Mixins / Functions with indentation\n      if (stream.sol() && stream.match(/^\\.?[a-z][\\w-]*\\(/i)) {\n        stream.backUp(1);\n        indent(state);\n        return \"keyword\";\n      }\n\n      // Mixins / Functions\n      if (stream.match(/^\\.?[a-z][\\w-]*\\(/i)) {\n        stream.backUp(1);\n        return \"keyword\";\n      }\n\n      // +Block mixins\n      if (stream.match(/^(\\+|\\-)[a-z][\\w-]+\\(/i)) {\n        stream.backUp(1);\n        indent(state);\n        return \"keyword\";\n      }\n\n      // url tokens\n      if (stream.match(/^url/) && stream.peek() === \"(\") {\n        state.tokenizer = urlTokens;\n        if(!stream.peek()) {\n          state.cursorHalf = 0;\n        }\n        return \"atom\";\n      }\n\n      // Class\n      if (stream.match(/^\\.[a-z][\\w-]*/i)) {\n        indent(state);\n        return \"qualifier\";\n      }\n\n      // & Parent Reference with BEM naming\n      if (stream.match(/^(_|__|-|--)[a-z0-9-]+/)) {\n        return \"qualifier\";\n      }\n\n      // Pseudo elements/classes\n      if (ch == ':' && stream.match(/^::?[\\w-]+/)) {\n        indent(state);\n        return \"variable-3\";\n      }\n\n      // Conditionals\n      if (stream.match(wordRegexp([\"for\", \"if\", \"else\", \"unless\"]))) {\n        indent(state);\n        return \"keyword\";\n      }\n\n      // Keywords\n      if (stream.match(commonKeywordsRegexp)) {\n        return \"keyword\";\n      }\n\n      // Atoms\n      if (stream.match(commonAtomsRegexp)) {\n        return \"atom\";\n      }\n\n      // Variables\n      if (stream.match(/^\\$?[a-z][\\w-]+\\s?=(\\s|[\\w-'\"\\$])/i)) {\n        stream.backUp(2);\n        var cssPropertie = stream.current().toLowerCase().match(/[\\w-]+/)[0];\n        return cssProperties[cssPropertie] === undefined ? \"variable-2\" : \"property\";\n      } else if (stream.match(/\\$[\\w-\\.]+/i)) {\n        return \"variable-2\";\n      } else if (stream.match(/\\$?[\\w-]+\\.[\\w-]+/i)) {\n        var cssTypeSelector = stream.current().toLowerCase().match(/[\\w]+/)[0];\n        if(cssTypeSelectors[cssTypeSelector] === undefined) {\n          return \"variable-2\";\n        } else stream.backUp(stream.current().length);\n      }\n\n      // !important\n      if (ch === \"!\") {\n        stream.next();\n        return stream.match(/^[\\w]+/) ? \"keyword\": \"operator\";\n      }\n\n      // / Root Reference\n      if (stream.match(/^\\/(:|\\.|#|[a-z])/)) {\n        stream.backUp(1);\n        return \"variable-3\";\n      }\n\n      // Operators and delimiters\n      if (stream.match(operatorsRegexp) || stream.match(wordOperatorsRegexp)) {\n        return \"operator\";\n      }\n      if (stream.match(delimitersRegexp)) {\n        return null;\n      }\n\n      // & Parent Reference\n      if (ch === \"&\") {\n        stream.next();\n        return \"variable-3\";\n      }\n\n      // Font family\n      if (stream.match(/^[A-Z][a-z0-9-]+/)) {\n        return \"string\";\n      }\n\n      // CSS rule\n      // NOTE: Some css selectors and property values have the same name\n      // (embed, menu, pre, progress, sub, table),\n      // so they will have the same color (.cm-atom).\n      if (stream.match(/[\\w-]*/i)) {\n\n        var word = stream.current().toLowerCase();\n\n        if(cssProperties[word] !== undefined) {\n          // CSS property\n          if(!stream.eol())\n            return \"property\";\n          else\n            return \"variable-2\";\n\n        } else if(cssValues[word] !== undefined) {\n          // CSS value\n          return \"atom\";\n\n        } else if(cssTypeSelectors[word] !== undefined) {\n          // CSS type selectors\n          indent(state);\n          return \"tag\";\n\n        } else if(word) {\n          // By default variable-2\n          return \"variable-2\";\n        }\n      }\n\n      // Handle non-detected items\n      stream.next();\n      return null;\n\n    };\n\n    var tokenLexer = function(stream, state) {\n\n      if (stream.sol()) {\n        state.indentCount = 0;\n      }\n\n      var style = state.tokenizer(stream, state);\n      var current = stream.current();\n\n      if (stream.eol() && (current === \"}\" || current === \",\")) {\n        dedent(state);\n      }\n\n      if (style !== null) {\n        var startOfToken = stream.pos - current.length;\n        var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount);\n\n        var newScopes = [];\n\n        for (var i = 0; i < state.scopes.length; i++) {\n          var scope = state.scopes[i];\n\n          if (scope.offset <= withCurrentIndent) {\n            newScopes.push(scope);\n          }\n        }\n\n        state.scopes = newScopes;\n      }\n\n      return style;\n    };\n\n    return {\n      startState: function() {\n        return {\n          tokenizer: tokenBase,\n          scopes: [{offset: 0, type: 'styl'}]\n        };\n      },\n\n      token: function(stream, state) {\n        var style = tokenLexer(stream, state);\n        state.lastToken = { style: style, content: stream.current() };\n        return style;\n      },\n\n      indent: function(state) {\n        return state.scopes[0].offset;\n      },\n\n      lineComment: \"//\",\n      fold: \"indent\"\n\n    };\n\n    function urlTokens(stream, state) {\n      var ch = stream.peek();\n\n      if (ch === \")\") {\n        stream.next();\n        state.tokenizer = tokenBase;\n        return \"operator\";\n      } else if (ch === \"(\") {\n        stream.next();\n        stream.eatSpace();\n\n        return \"operator\";\n      } else if (ch === \"'\" || ch === '\"') {\n        state.tokenizer = buildStringTokenizer(stream.next());\n        return \"string\";\n      } else {\n        state.tokenizer = buildStringTokenizer(\")\", false);\n        return \"string\";\n      }\n    }\n\n    function multilineComment(stream, state) {\n      if (stream.skipTo(\"*/\")) {\n        stream.next();\n        stream.next();\n        state.tokenizer = tokenBase;\n      } else {\n        stream.next();\n      }\n      return \"comment\";\n    }\n\n    function buildStringTokenizer(quote, greedy) {\n\n      if(greedy == null) {\n        greedy = true;\n      }\n\n      function stringTokenizer(stream, state) {\n        var nextChar = stream.next();\n        var peekChar = stream.peek();\n        var previousChar = stream.string.charAt(stream.pos-2);\n\n        var endingString = ((nextChar !== \"\\\\\" && peekChar === quote) ||\n                            (nextChar === quote && previousChar !== \"\\\\\"));\n\n        if (endingString) {\n          if (nextChar !== quote && greedy) {\n            stream.next();\n          }\n          state.tokenizer = tokenBase;\n          return \"string\";\n        } else if (nextChar === \"#\" && peekChar === \"{\") {\n          state.tokenizer = buildInterpolationTokenizer(stringTokenizer);\n          stream.next();\n          return \"operator\";\n        } else {\n          return \"string\";\n        }\n      }\n\n      return stringTokenizer;\n    }\n\n    function buildInterpolationTokenizer(currentTokenizer) {\n      return function(stream, state) {\n        if (stream.peek() === \"}\") {\n          stream.next();\n          state.tokenizer = currentTokenizer;\n          return \"operator\";\n        } else {\n          return tokenBase(stream, state);\n        }\n      };\n    }\n\n    function indent(state) {\n      if (state.indentCount == 0) {\n        state.indentCount++;\n        var lastScopeOffset = state.scopes[0].offset;\n        var currentOffset = lastScopeOffset + config.indentUnit;\n        state.scopes.unshift({ offset:currentOffset });\n      }\n    }\n\n    function dedent(state) {\n      if (state.scopes.length == 1) { return true; }\n      state.scopes.shift();\n    }\n\n  });\n\n  // https://developer.mozilla.org/en-US/docs/Web/HTML/Element\n  var cssTypeSelectors_ = [\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\", \"b\", \"base\",\"bdi\",\"bdo\",\"bgsound\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"nobr\",\"noframes\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\",\"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"title\",\"tr\",\"track\",\"u\",\"ul\",\"var\",\"video\",\"wbr\"];\n  // https://github.com/csscomb/csscomb.js/blob/master/config/zen.json\n  var cssProperties_ = [\"position\",\"top\",\"right\",\"bottom\",\"left\",\"z-index\",\"display\",\"visibility\",\"flex-direction\",\"flex-order\",\"flex-pack\",\"float\",\"clear\",\"flex-align\",\"overflow\",\"overflow-x\",\"overflow-y\",\"overflow-scrolling\",\"clip\",\"box-sizing\",\"margin\",\"margin-top\",\"margin-right\",\"margin-bottom\",\"margin-left\",\"padding\",\"padding-top\",\"padding-right\",\"padding-bottom\",\"padding-left\",\"min-width\",\"min-height\",\"max-width\",\"max-height\",\"width\",\"height\",\"outline\",\"outline-width\",\"outline-style\",\"outline-color\",\"outline-offset\",\"border\",\"border-spacing\",\"border-collapse\",\"border-width\",\"border-style\",\"border-color\",\"border-top\",\"border-top-width\",\"border-top-style\",\"border-top-color\",\"border-right\",\"border-right-width\",\"border-right-style\",\"border-right-color\",\"border-bottom\",\"border-bottom-width\",\"border-bottom-style\",\"border-bottom-color\",\"border-left\",\"border-left-width\",\"border-left-style\",\"border-left-color\",\"border-radius\",\"border-top-left-radius\",\"border-top-right-radius\",\"border-bottom-right-radius\",\"border-bottom-left-radius\",\"border-image\",\"border-image-source\",\"border-image-slice\",\"border-image-width\",\"border-image-outset\",\"border-image-repeat\",\"border-top-image\",\"border-right-image\",\"border-bottom-image\",\"border-left-image\",\"border-corner-image\",\"border-top-left-image\",\"border-top-right-image\",\"border-bottom-right-image\",\"border-bottom-left-image\",\"background\",\"filter:progid:DXImageTransform\\\\.Microsoft\\\\.AlphaImageLoader\",\"background-color\",\"background-image\",\"background-attachment\",\"background-position\",\"background-position-x\",\"background-position-y\",\"background-clip\",\"background-origin\",\"background-size\",\"background-repeat\",\"box-decoration-break\",\"box-shadow\",\"color\",\"table-layout\",\"caption-side\",\"empty-cells\",\"list-style\",\"list-style-position\",\"list-style-type\",\"list-style-image\",\"quotes\",\"content\",\"counter-increment\",\"counter-reset\",\"writing-mode\",\"vertical-align\",\"text-align\",\"text-align-last\",\"text-decoration\",\"text-emphasis\",\"text-emphasis-position\",\"text-emphasis-style\",\"text-emphasis-color\",\"text-indent\",\"-ms-text-justify\",\"text-justify\",\"text-outline\",\"text-transform\",\"text-wrap\",\"text-overflow\",\"text-overflow-ellipsis\",\"text-overflow-mode\",\"text-size-adjust\",\"text-shadow\",\"white-space\",\"word-spacing\",\"word-wrap\",\"word-break\",\"tab-size\",\"hyphens\",\"letter-spacing\",\"font\",\"font-weight\",\"font-style\",\"font-variant\",\"font-size-adjust\",\"font-stretch\",\"font-size\",\"font-family\",\"src\",\"line-height\",\"opacity\",\"filter:\\\\\\\\\\\\\\\\'progid:DXImageTransform.Microsoft.Alpha\",\"filter:progid:DXImageTransform.Microsoft.Alpha\\\\(Opacity\",\"interpolation-mode\",\"filter\",\"resize\",\"cursor\",\"nav-index\",\"nav-up\",\"nav-right\",\"nav-down\",\"nav-left\",\"transition\",\"transition-delay\",\"transition-timing-function\",\"transition-duration\",\"transition-property\",\"transform\",\"transform-origin\",\"animation\",\"animation-name\",\"animation-duration\",\"animation-play-state\",\"animation-timing-function\",\"animation-delay\",\"animation-iteration-count\",\"animation-direction\",\"pointer-events\",\"unicode-bidi\",\"direction\",\"columns\",\"column-span\",\"column-width\",\"column-count\",\"column-fill\",\"column-gap\",\"column-rule\",\"column-rule-width\",\"column-rule-style\",\"column-rule-color\",\"break-before\",\"break-inside\",\"break-after\",\"page-break-before\",\"page-break-inside\",\"page-break-after\",\"orphans\",\"widows\",\"zoom\",\"max-zoom\",\"min-zoom\",\"user-zoom\",\"orientation\",\"text-rendering\",\"speak\",\"animation-fill-mode\",\"backface-visibility\",\"user-drag\",\"user-select\",\"appearance\"];\n  // https://github.com/codemirror/CodeMirror/blob/master/mode/css/css.js#L501\n  var cssValues_ = [\"above\",\"absolute\",\"activeborder\",\"activecaption\",\"afar\",\"after-white-space\",\"ahead\",\"alias\",\"all\",\"all-scroll\",\"alternate\",\"always\",\"amharic\",\"amharic-abegede\",\"antialiased\",\"appworkspace\",\"arabic-indic\",\"armenian\",\"asterisks\",\"auto\",\"avoid\",\"avoid-column\",\"avoid-page\",\"avoid-region\",\"background\",\"backwards\",\"baseline\",\"below\",\"bidi-override\",\"binary\",\"bengali\",\"block\",\"block-axis\",\"bold\",\"bolder\",\"border\",\"border-box\",\"both\",\"bottom\",\"break\",\"break-all\",\"break-word\",\"button-bevel\",\"buttonface\",\"buttonhighlight\",\"buttonshadow\",\"buttontext\",\"cambodian\",\"capitalize\",\"caps-lock-indicator\",\"captiontext\",\"caret\",\"cell\",\"center\",\"checkbox\",\"circle\",\"cjk-earthly-branch\",\"cjk-heavenly-stem\",\"cjk-ideographic\",\"clear\",\"clip\",\"close-quote\",\"col-resize\",\"collapse\",\"column\",\"compact\",\"condensed\",\"contain\",\"content\",\"content-box\",\"context-menu\",\"continuous\",\"copy\",\"cover\",\"crop\",\"cross\",\"crosshair\",\"currentcolor\",\"cursive\",\"dashed\",\"decimal\",\"decimal-leading-zero\",\"default\",\"default-button\",\"destination-atop\",\"destination-in\",\"destination-out\",\"destination-over\",\"devanagari\",\"disc\",\"discard\",\"document\",\"dot-dash\",\"dot-dot-dash\",\"dotted\",\"double\",\"down\",\"e-resize\",\"ease\",\"ease-in\",\"ease-in-out\",\"ease-out\",\"element\",\"ellipse\",\"ellipsis\",\"embed\",\"end\",\"ethiopic\",\"ethiopic-abegede\",\"ethiopic-abegede-am-et\",\"ethiopic-abegede-gez\",\"ethiopic-abegede-ti-er\",\"ethiopic-abegede-ti-et\",\"ethiopic-halehame-aa-er\",\"ethiopic-halehame-aa-et\",\"ethiopic-halehame-am-et\",\"ethiopic-halehame-gez\",\"ethiopic-halehame-om-et\",\"ethiopic-halehame-sid-et\",\"ethiopic-halehame-so-et\",\"ethiopic-halehame-ti-er\",\"ethiopic-halehame-ti-et\",\"ethiopic-halehame-tig\",\"ew-resize\",\"expanded\",\"extra-condensed\",\"extra-expanded\",\"fantasy\",\"fast\",\"fill\",\"fixed\",\"flat\",\"footnotes\",\"forwards\",\"from\",\"geometricPrecision\",\"georgian\",\"graytext\",\"groove\",\"gujarati\",\"gurmukhi\",\"hand\",\"hangul\",\"hangul-consonant\",\"hebrew\",\"help\",\"hidden\",\"hide\",\"higher\",\"highlight\",\"highlighttext\",\"hiragana\",\"hiragana-iroha\",\"horizontal\",\"hsl\",\"hsla\",\"icon\",\"ignore\",\"inactiveborder\",\"inactivecaption\",\"inactivecaptiontext\",\"infinite\",\"infobackground\",\"infotext\",\"inherit\",\"initial\",\"inline\",\"inline-axis\",\"inline-block\",\"inline-table\",\"inset\",\"inside\",\"intrinsic\",\"invert\",\"italic\",\"justify\",\"kannada\",\"katakana\",\"katakana-iroha\",\"keep-all\",\"khmer\",\"landscape\",\"lao\",\"large\",\"larger\",\"left\",\"level\",\"lighter\",\"line-through\",\"linear\",\"lines\",\"list-item\",\"listbox\",\"listitem\",\"local\",\"logical\",\"loud\",\"lower\",\"lower-alpha\",\"lower-armenian\",\"lower-greek\",\"lower-hexadecimal\",\"lower-latin\",\"lower-norwegian\",\"lower-roman\",\"lowercase\",\"ltr\",\"malayalam\",\"match\",\"media-controls-background\",\"media-current-time-display\",\"media-fullscreen-button\",\"media-mute-button\",\"media-play-button\",\"media-return-to-realtime-button\",\"media-rewind-button\",\"media-seek-back-button\",\"media-seek-forward-button\",\"media-slider\",\"media-sliderthumb\",\"media-time-remaining-display\",\"media-volume-slider\",\"media-volume-slider-container\",\"media-volume-sliderthumb\",\"medium\",\"menu\",\"menulist\",\"menulist-button\",\"menulist-text\",\"menulist-textfield\",\"menutext\",\"message-box\",\"middle\",\"min-intrinsic\",\"mix\",\"mongolian\",\"monospace\",\"move\",\"multiple\",\"myanmar\",\"n-resize\",\"narrower\",\"ne-resize\",\"nesw-resize\",\"no-close-quote\",\"no-drop\",\"no-open-quote\",\"no-repeat\",\"none\",\"normal\",\"not-allowed\",\"nowrap\",\"ns-resize\",\"nw-resize\",\"nwse-resize\",\"oblique\",\"octal\",\"open-quote\",\"optimizeLegibility\",\"optimizeSpeed\",\"oriya\",\"oromo\",\"outset\",\"outside\",\"outside-shape\",\"overlay\",\"overline\",\"padding\",\"padding-box\",\"painted\",\"page\",\"paused\",\"persian\",\"plus-darker\",\"plus-lighter\",\"pointer\",\"polygon\",\"portrait\",\"pre\",\"pre-line\",\"pre-wrap\",\"preserve-3d\",\"progress\",\"push-button\",\"radio\",\"read-only\",\"read-write\",\"read-write-plaintext-only\",\"rectangle\",\"region\",\"relative\",\"repeat\",\"repeat-x\",\"repeat-y\",\"reset\",\"reverse\",\"rgb\",\"rgba\",\"ridge\",\"right\",\"round\",\"row-resize\",\"rtl\",\"run-in\",\"running\",\"s-resize\",\"sans-serif\",\"scroll\",\"scrollbar\",\"se-resize\",\"searchfield\",\"searchfield-cancel-button\",\"searchfield-decoration\",\"searchfield-results-button\",\"searchfield-results-decoration\",\"semi-condensed\",\"semi-expanded\",\"separate\",\"serif\",\"show\",\"sidama\",\"single\",\"skip-white-space\",\"slide\",\"slider-horizontal\",\"slider-vertical\",\"sliderthumb-horizontal\",\"sliderthumb-vertical\",\"slow\",\"small-caps\",\"small-caption\",\"smaller\",\"solid\",\"somali\",\"source-atop\",\"source-in\",\"source-out\",\"source-over\",\"space\",\"square\",\"square-button\",\"start\",\"static\",\"status-bar\",\"stretch\",\"stroke\",\"sub\",\"subpixel-antialiased\",\"super\",\"sw-resize\",\"table\",\"table-caption\",\"table-cell\",\"table-column\",\"table-column-group\",\"table-footer-group\",\"table-header-group\",\"table-row\",\"table-row-group\",\"telugu\",\"text\",\"text-bottom\",\"text-top\",\"textfield\",\"thai\",\"thick\",\"thin\",\"threeddarkshadow\",\"threedface\",\"threedhighlight\",\"threedlightshadow\",\"threedshadow\",\"tibetan\",\"tigre\",\"tigrinya-er\",\"tigrinya-er-abegede\",\"tigrinya-et\",\"tigrinya-et-abegede\",\"to\",\"top\",\"transparent\",\"ultra-condensed\",\"ultra-expanded\",\"underline\",\"up\",\"upper-alpha\",\"upper-armenian\",\"upper-greek\",\"upper-hexadecimal\",\"upper-latin\",\"upper-norwegian\",\"upper-roman\",\"uppercase\",\"urdu\",\"url\",\"vertical\",\"vertical-text\",\"visible\",\"visibleFill\",\"visiblePainted\",\"visibleStroke\",\"visual\",\"w-resize\",\"wait\",\"wave\",\"wider\",\"window\",\"windowframe\",\"windowtext\",\"x-large\",\"x-small\",\"xor\",\"xx-large\",\"xx-small\",\"bicubic\",\"optimizespeed\",\"grayscale\"];\n  var cssColorValues_ = [\"aliceblue\",\"antiquewhite\",\"aqua\",\"aquamarine\",\"azure\",\"beige\",\"bisque\",\"black\",\"blanchedalmond\",\"blue\",\"blueviolet\",\"brown\",\"burlywood\",\"cadetblue\",\"chartreuse\",\"chocolate\",\"coral\",\"cornflowerblue\",\"cornsilk\",\"crimson\",\"cyan\",\"darkblue\",\"darkcyan\",\"darkgoldenrod\",\"darkgray\",\"darkgreen\",\"darkkhaki\",\"darkmagenta\",\"darkolivegreen\",\"darkorange\",\"darkorchid\",\"darkred\",\"darksalmon\",\"darkseagreen\",\"darkslateblue\",\"darkslategray\",\"darkturquoise\",\"darkviolet\",\"deeppink\",\"deepskyblue\",\"dimgray\",\"dodgerblue\",\"firebrick\",\"floralwhite\",\"forestgreen\",\"fuchsia\",\"gainsboro\",\"ghostwhite\",\"gold\",\"goldenrod\",\"gray\",\"grey\",\"green\",\"greenyellow\",\"honeydew\",\"hotpink\",\"indianred\",\"indigo\",\"ivory\",\"khaki\",\"lavender\",\"lavenderblush\",\"lawngreen\",\"lemonchiffon\",\"lightblue\",\"lightcoral\",\"lightcyan\",\"lightgoldenrodyellow\",\"lightgray\",\"lightgreen\",\"lightpink\",\"lightsalmon\",\"lightseagreen\",\"lightskyblue\",\"lightslategray\",\"lightsteelblue\",\"lightyellow\",\"lime\",\"limegreen\",\"linen\",\"magenta\",\"maroon\",\"mediumaquamarine\",\"mediumblue\",\"mediumorchid\",\"mediumpurple\",\"mediumseagreen\",\"mediumslateblue\",\"mediumspringgreen\",\"mediumturquoise\",\"mediumvioletred\",\"midnightblue\",\"mintcream\",\"mistyrose\",\"moccasin\",\"navajowhite\",\"navy\",\"oldlace\",\"olive\",\"olivedrab\",\"orange\",\"orangered\",\"orchid\",\"palegoldenrod\",\"palegreen\",\"paleturquoise\",\"palevioletred\",\"papayawhip\",\"peachpuff\",\"peru\",\"pink\",\"plum\",\"powderblue\",\"purple\",\"red\",\"rosybrown\",\"royalblue\",\"saddlebrown\",\"salmon\",\"sandybrown\",\"seagreen\",\"seashell\",\"sienna\",\"silver\",\"skyblue\",\"slateblue\",\"slategray\",\"snow\",\"springgreen\",\"steelblue\",\"tan\",\"teal\",\"thistle\",\"tomato\",\"turquoise\",\"violet\",\"wheat\",\"white\",\"whitesmoke\",\"yellow\",\"yellowgreen\"];\n  var cssValuesWithBrackets_ = [\"gradient\",\"linear-gradient\",\"radial-gradient\",\"repeating-linear-gradient\",\"repeating-radial-gradient\",\"cubic-bezier\",\"translateX\",\"translateY\",\"translate3d\",\"rotate3d\",\"scale\",\"scale3d\",\"perspective\",\"skewX\"];\n\n  var wordOperators = [\"in\", \"and\", \"or\", \"not\", \"is a\", \"is\", \"isnt\", \"defined\", \"if unless\"],\n      commonKeywords = [\"for\", \"if\", \"else\", \"unless\", \"return\"],\n      commonAtoms = [\"null\", \"true\", \"false\", \"href\", \"title\", \"type\", \"not-allowed\", \"readonly\", \"disabled\"],\n      commonDef = [\"@font-face\", \"@keyframes\", \"@media\", \"@viewport\", \"@page\", \"@host\", \"@supports\", \"@block\", \"@css\"],\n      cssTypeSelectors = keySet(cssTypeSelectors_),\n      cssProperties = keySet(cssProperties_),\n      cssValues = keySet(cssValues_.concat(cssColorValues_)),\n      hintWords = wordOperators.concat(commonKeywords,\n                                       commonAtoms,\n                                       commonDef,\n                                       cssTypeSelectors_,\n                                       cssProperties_,\n                                       cssValues_,\n                                       cssValuesWithBrackets_,\n                                       cssColorValues_);\n\n  function wordRegexp(words) {\n    return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n  };\n\n  function keySet(array) {\n    var keys = {};\n    for (var i = 0; i < array.length; ++i) {\n      keys[array[i]] = true;\n    }\n    return keys;\n  };\n\n  CodeMirror.registerHelper(\"hintWords\", \"stylus\", hintWords);\n  CodeMirror.defineMIME(\"text/x-styl\", \"stylus\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/tcl/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Tcl mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../theme/night.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"tcl.js\"></script>\n<script src=\"../../addon/scroll/scrollpastend.js\"></script>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Tcl</a>\n  </ul>\n</div>\n\n<article>\n<h2>Tcl mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n##############################################################################################\n##  ##     whois.tcl for eggdrop by Ford_Lawnmower irc.geekshed.net #Script-Help        ##  ##\n##############################################################################################\n## To use this script you must set channel flag +whois (ie .chanset #chan +whois)           ##\n##############################################################################################\n##      ____                __                 ###########################################  ##\n##     / __/___ _ ___ _ ___/ /____ ___   ___   ###########################################  ##\n##    / _/ / _ `// _ `// _  // __// _ \\ / _ \\  ###########################################  ##\n##   /___/ \\_, / \\_, / \\_,_//_/   \\___// .__/  ###########################################  ##\n##        /___/ /___/                 /_/      ###########################################  ##\n##                                             ###########################################  ##\n##############################################################################################\n##  ##                             Start Setup.                                         ##  ##\n##############################################################################################\nnamespace eval whois {\n## change cmdchar to the trigger you want to use                                        ##  ##\n  variable cmdchar \"!\"\n## change command to the word trigger you would like to use.                            ##  ##\n## Keep in mind, This will also change the .chanset +/-command                          ##  ##\n  variable command \"whois\"\n## change textf to the colors you want for the text.                                    ##  ##\n  variable textf \"\\017\\00304\"\n## change tagf to the colors you want for tags:                                         ##  ##\n  variable tagf \"\\017\\002\"\n## Change logo to the logo you want at the start of the line.                           ##  ##\n  variable logo \"\\017\\00304\\002\\[\\00306W\\003hois\\00304\\]\\017\"\n## Change lineout to the results you want. Valid results are channel users modes topic  ##  ##\n  variable lineout \"channel users modes topic\"\n##############################################################################################\n##  ##                           End Setup.                                              ## ##\n##############################################################################################\n  variable channel \"\"\n  setudef flag $whois::command\n  bind pub -|- [string trimleft $whois::cmdchar]${whois::command} whois::list\n  bind raw -|- \"311\" whois::311\n  bind raw -|- \"312\" whois::312\n  bind raw -|- \"319\" whois::319\n  bind raw -|- \"317\" whois::317\n  bind raw -|- \"313\" whois::multi\n  bind raw -|- \"310\" whois::multi\n  bind raw -|- \"335\" whois::multi\n  bind raw -|- \"301\" whois::301\n  bind raw -|- \"671\" whois::multi\n  bind raw -|- \"320\" whois::multi\n  bind raw -|- \"401\" whois::multi\n  bind raw -|- \"318\" whois::318\n  bind raw -|- \"307\" whois::307\n}\nproc whois::311 {from key text} {\n  if {[regexp -- {^[^\\s]+\\s(.+?)\\s(.+?)\\s(.+?)\\s\\*\\s\\:(.+)$} $text wholematch nick ident host realname]} {\n    putserv \"PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Host:${whois::textf} \\\n        $nick \\(${ident}@${host}\\) ${whois::tagf}Realname:${whois::textf} $realname\"\n  }\n}\nproc whois::multi {from key text} {\n  if {[regexp {\\:(.*)$} $text match $key]} {\n    putserv \"PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Note:${whois::textf} [subst $$key]\"\n        return 1\n  }\n}\nproc whois::312 {from key text} {\n  regexp {([^\\s]+)\\s\\:} $text match server\n  putserv \"PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Server:${whois::textf} $server\"\n}\nproc whois::319 {from key text} {\n  if {[regexp {.+\\:(.+)$} $text match channels]} {\n    putserv \"PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Channels:${whois::textf} $channels\"\n  }\n}\nproc whois::317 {from key text} {\n  if {[regexp -- {.*\\s(\\d+)\\s(\\d+)\\s\\:} $text wholematch idle signon]} {\n    putserv \"PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Connected:${whois::textf} \\\n        [ctime $signon] ${whois::tagf}Idle:${whois::textf} [duration $idle]\"\n  }\n}\nproc whois::301 {from key text} {\n  if {[regexp {^.+\\s[^\\s]+\\s\\:(.*)$} $text match awaymsg]} {\n    putserv \"PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Away:${whois::textf} $awaymsg\"\n  }\n}\nproc whois::318 {from key text} {\n  namespace eval whois {\n        variable channel \"\"\n  }\n  variable whois::channel \"\"\n}\nproc whois::307 {from key text} {\n  putserv \"PRIVMSG $whois::channel :${whois::logo} ${whois::tagf}Services:${whois::textf} Registered Nick\"\n}\nproc whois::list {nick host hand chan text} {\n  if {[lsearch -exact [channel info $chan] \"+${whois::command}\"] != -1} {\n    namespace eval whois {\n          variable channel \"\"\n        }\n    variable whois::channel $chan\n    putserv \"WHOIS $text\"\n  }\n}\nputlog \"\\002*Loaded* \\017\\00304\\002\\[\\00306W\\003hois\\00304\\]\\017 \\002by \\\nFord_Lawnmower irc.GeekShed.net #Script-Help\"\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        theme: \"night\",\n        lineNumbers: true,\n        indentUnit: 2,\n        scrollPastEnd: true,\n        mode: \"text/x-tcl\"\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-tcl</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/tcl/tcl.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n//tcl mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"tcl\", function() {\n  function parseWords(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n  var keywords = parseWords(\"Tcl safe after append array auto_execok auto_import auto_load \" +\n        \"auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror \" +\n        \"binary break catch cd close concat continue dde eof encoding error \" +\n        \"eval exec exit expr fblocked fconfigure fcopy file fileevent filename \" +\n        \"filename flush for foreach format gets glob global history http if \" +\n        \"incr info interp join lappend lindex linsert list llength load lrange \" +\n        \"lreplace lsearch lset lsort memory msgcat namespace open package parray \" +\n        \"pid pkg::create pkg_mkIndex proc puts pwd re_syntax read regex regexp \" +\n        \"registry regsub rename resource return scan seek set socket source split \" +\n        \"string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord \" +\n        \"tcl_wordBreakAfter tcl_startOfPreviousWord tcl_wordBreakBefore tcltest \" +\n        \"tclvars tell time trace unknown unset update uplevel upvar variable \" +\n    \"vwait\");\n    var functions = parseWords(\"if elseif else and not or eq ne in ni for foreach while switch\");\n    var isOperatorChar = /[+\\-*&%=<>!?^\\/\\|]/;\n    function chain(stream, state, f) {\n      state.tokenize = f;\n      return f(stream, state);\n    }\n    function tokenBase(stream, state) {\n      var beforeParams = state.beforeParams;\n      state.beforeParams = false;\n      var ch = stream.next();\n      if ((ch == '\"' || ch == \"'\") && state.inParams)\n        return chain(stream, state, tokenString(ch));\n      else if (/[\\[\\]{}\\(\\),;\\.]/.test(ch)) {\n        if (ch == \"(\" && beforeParams) state.inParams = true;\n        else if (ch == \")\") state.inParams = false;\n          return null;\n      }\n      else if (/\\d/.test(ch)) {\n        stream.eatWhile(/[\\w\\.]/);\n        return \"number\";\n      }\n      else if (ch == \"#\" && stream.eat(\"*\")) {\n        return chain(stream, state, tokenComment);\n      }\n      else if (ch == \"#\" && stream.match(/ *\\[ *\\[/)) {\n        return chain(stream, state, tokenUnparsed);\n      }\n      else if (ch == \"#\" && stream.eat(\"#\")) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n      else if (ch == '\"') {\n        stream.skipTo(/\"/);\n        return \"comment\";\n      }\n      else if (ch == \"$\") {\n        stream.eatWhile(/[$_a-z0-9A-Z\\.{:]/);\n        stream.eatWhile(/}/);\n        state.beforeParams = true;\n        return \"builtin\";\n      }\n      else if (isOperatorChar.test(ch)) {\n        stream.eatWhile(isOperatorChar);\n        return \"comment\";\n      }\n      else {\n        stream.eatWhile(/[\\w\\$_{}\\xa1-\\uffff]/);\n        var word = stream.current().toLowerCase();\n        if (keywords && keywords.propertyIsEnumerable(word))\n          return \"keyword\";\n        if (functions && functions.propertyIsEnumerable(word)) {\n          state.beforeParams = true;\n          return \"keyword\";\n        }\n        return null;\n      }\n    }\n    function tokenString(quote) {\n      return function(stream, state) {\n      var escaped = false, next, end = false;\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) {\n          end = true;\n          break;\n        }\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (end) state.tokenize = tokenBase;\n        return \"string\";\n      };\n    }\n    function tokenComment(stream, state) {\n      var maybeEnd = false, ch;\n      while (ch = stream.next()) {\n        if (ch == \"#\" && maybeEnd) {\n          state.tokenize = tokenBase;\n          break;\n        }\n        maybeEnd = (ch == \"*\");\n      }\n      return \"comment\";\n    }\n    function tokenUnparsed(stream, state) {\n      var maybeEnd = 0, ch;\n      while (ch = stream.next()) {\n        if (ch == \"#\" && maybeEnd == 2) {\n          state.tokenize = tokenBase;\n          break;\n        }\n        if (ch == \"]\")\n          maybeEnd++;\n        else if (ch != \" \")\n          maybeEnd = 0;\n      }\n      return \"meta\";\n    }\n    return {\n      startState: function() {\n        return {\n          tokenize: tokenBase,\n          beforeParams: false,\n          inParams: false\n        };\n      },\n      token: function(stream, state) {\n        if (stream.eatSpace()) return null;\n        return state.tokenize(stream, state);\n      }\n    };\n});\nCodeMirror.defineMIME(\"text/x-tcl\", \"tcl\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/textile/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Textile mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"textile.js\"></script>\n<style>.CodeMirror {background: #f8f8f8;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/marijnh/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=\"active\" href=\"#\">Textile</a>\n  </ul>\n</div>\n\n<article>\n    <h2>Textile mode</h2>\n    <form><textarea id=\"code\" name=\"code\">\nh1. Textile Mode\n\nA paragraph without formatting.\n\np. A simple Paragraph.\n\n\nh2. Phrase Modifiers\n\nHere are some simple phrase modifiers: *strong*, _emphasis_, **bold**, and __italic__.\n\nA ??citation??, -deleted text-, +inserted text+, some ^superscript^, and some ~subscript~.\n\nA %span element% and @code element@\n\nA \"link\":http://example.com, a \"link with (alt text)\":urlAlias\n\n[urlAlias]http://example.com/\n\nAn image: !http://example.com/image.png! and an image with a link: !http://example.com/image.png!:http://example.com\n\nA sentence with a footnote.[123]\n\nfn123. The footnote is defined here.\n\nRegistered(r), Trademark(tm), and Copyright(c)\n\n\nh2. Headers\n\nh1. Top level\nh2. Second level\nh3. Third level\nh4. Fourth level\nh5. Fifth level\nh6. Lowest level\n\n\nh2.  Lists\n\n* An unordered list\n** foo bar\n*** foo bar\n**** foo bar\n** foo bar\n\n# An ordered list\n## foo bar\n### foo bar\n#### foo bar\n## foo bar\n\n- definition list := description\n- another item    := foo bar\n- spanning ines   :=\n                     foo bar\n\n                     foo bar =:\n\n\nh2. Attributes\n\nLayouts and phrase modifiers can be modified with various kinds of attributes: alignment, CSS ID, CSS class names, language, padding, and CSS styles.\n\nh3. Alignment\n\ndiv<. left align\ndiv>. right align\n\nh3. CSS ID and class name\n\nYou are a %(my-id#my-classname) rad% person.\n\nh3. Language\n\np[en_CA]. Strange weather, eh?\n\nh3. Horizontal Padding\n\np(())). 2em left padding, 3em right padding\n\nh3. CSS styling\n\np{background: red}. Fire!\n\n\nh2. Table\n\n|_.              Header 1               |_.      Header 2        |\n|{background:#ddd}. Cell with background|         Normal         |\n|\\2.         Cell spanning 2 columns                             |\n|/2.         Cell spanning 2 rows       |(cell-class). one       |\n|                                                two             |\n|>.                  Right aligned cell |<. Left aligned cell    |\n\n\nh3. A table with attributes:\n\ntable(#prices).\n|Adults|$5|\n|Children|$2|\n\n\nh2. Code blocks\n\nbc.\nfunction factorial(n) {\n    if (n === 0) {\n        return 1;\n    }\n    return n * factorial(n - 1);\n}\n\npre..\n                ,,,,,,\n            o#'9MMHb':'-,o,\n         .oH\":HH$' \"' ' -*R&o,\n        dMMM*\"\"'`'      .oM\"HM?.\n       ,MMM'          \"HLbd< ?&H\\\n      .:MH .\"\\          ` MM  MM&b\n     . \"*H    -        &MMMMMMMMMH:\n     .    dboo        MMMMMMMMMMMM.\n     .   dMMMMMMb      *MMMMMMMMMP.\n     .    MMMMMMMP        *MMMMMP .\n          `#MMMMM           MM6P ,\n       '    `MMMP\"           HM*`,\n        '    :MM             .- ,\n         '.   `#?..  .       ..'\n            -.   .         .-\n              ''-.oo,oo.-''\n\n\\. _(9>\n \\==_)\n  -'=\n\nh2. Temporarily disabling textile markup\n\nnotextile. Don't __touch this!__\n\nSurround text with double-equals to disable textile inline. Example: Use ==*asterisks*== for *strong* text.\n\n\nh2. HTML\n\nSome block layouts are simply textile versions of HTML tags with the same name, like @div@, @pre@, and @p@. HTML tags can also exist on their own line:\n\n<section>\n  <h1>Title</h1>\n  <p>Hello!</p>\n</section>\n\n</textarea></form>\n    <script>\n        var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n            lineNumbers: true,\n            mode: \"text/x-textile\"\n        });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-textile</code>.</p>\n\n    <p><strong>Parsing/Highlighting Tests:</strong> <a href=\"../../test/index.html#textile_*\">normal</a>,  <a href=\"../../test/index.html#verbose,textile_*\">verbose</a>.</p>\n\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/textile/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  var mode = CodeMirror.getMode({tabSize: 4}, 'textile');\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }\n\n  MT('simpleParagraphs',\n      'Some text.',\n      '',\n      'Some more text.');\n\n  /*\n   * Phrase Modifiers\n   */\n\n  MT('em',\n      'foo [em _bar_]');\n\n  MT('emBoogus',\n      'code_mirror');\n\n  MT('strong',\n      'foo [strong *bar*]');\n\n  MT('strongBogus',\n      '3 * 3 = 9');\n\n  MT('italic',\n      'foo [em __bar__]');\n\n  MT('italicBogus',\n      'code__mirror');\n\n  MT('bold',\n      'foo [strong **bar**]');\n\n  MT('boldBogus',\n      '3 ** 3 = 27');\n\n  MT('simpleLink',\n      '[link \"CodeMirror\":http://codemirror.net]');\n\n  MT('referenceLink',\n      '[link \"CodeMirror\":code_mirror]',\n      'Normal Text.',\n      '[link [[code_mirror]]http://codemirror.net]');\n\n  MT('footCite',\n      'foo bar[qualifier [[1]]]');\n\n  MT('footCiteBogus',\n      'foo bar[[1a2]]');\n\n  MT('special-characters',\n          'Registered [tag (r)], ' +\n          'Trademark [tag (tm)], and ' +\n          'Copyright [tag (c)] 2008');\n\n  MT('cite',\n      \"A book is [keyword ??The Count of Monte Cristo??] by Dumas.\");\n\n  MT('additionAndDeletion',\n      'The news networks declared [negative -Al Gore-] ' +\n        '[positive +George W. Bush+] the winner in Florida.');\n\n  MT('subAndSup',\n      'f(x, n) = log [builtin ~4~] x [builtin ^n^]');\n\n  MT('spanAndCode',\n      'A [quote %span element%] and [atom @code element@]');\n\n  MT('spanBogus',\n      'Percentage 25% is not a span.');\n\n  MT('citeBogus',\n      'Question? is not a citation.');\n\n  MT('codeBogus',\n      'user@example.com');\n\n  MT('subBogus',\n      '~username');\n\n  MT('supBogus',\n      'foo ^ bar');\n\n  MT('deletionBogus',\n      '3 - 3 = 0');\n\n  MT('additionBogus',\n      '3 + 3 = 6');\n\n  MT('image',\n      'An image: [string !http://www.example.com/image.png!]');\n\n  MT('imageWithAltText',\n      'An image: [string !http://www.example.com/image.png (Alt Text)!]');\n\n  MT('imageWithUrl',\n      'An image: [string !http://www.example.com/image.png!:http://www.example.com/]');\n\n  /*\n   * Headers\n   */\n\n  MT('h1',\n      '[header&header-1 h1. foo]');\n\n  MT('h2',\n      '[header&header-2 h2. foo]');\n\n  MT('h3',\n      '[header&header-3 h3. foo]');\n\n  MT('h4',\n      '[header&header-4 h4. foo]');\n\n  MT('h5',\n      '[header&header-5 h5. foo]');\n\n  MT('h6',\n      '[header&header-6 h6. foo]');\n\n  MT('h7Bogus',\n      'h7. foo');\n\n  MT('multipleHeaders',\n      '[header&header-1 h1. Heading 1]',\n      '',\n      'Some text.',\n      '',\n      '[header&header-2 h2. Heading 2]',\n      '',\n      'More text.');\n\n  MT('h1inline',\n      '[header&header-1 h1. foo ][header&header-1&em _bar_][header&header-1  baz]');\n\n  /*\n   * Lists\n   */\n\n  MT('ul',\n      'foo',\n      'bar',\n      '',\n      '[variable-2 * foo]',\n      '[variable-2 * bar]');\n\n  MT('ulNoBlank',\n      'foo',\n      'bar',\n      '[variable-2 * foo]',\n      '[variable-2 * bar]');\n\n  MT('ol',\n      'foo',\n      'bar',\n      '',\n      '[variable-2 # foo]',\n      '[variable-2 # bar]');\n\n  MT('olNoBlank',\n      'foo',\n      'bar',\n      '[variable-2 # foo]',\n      '[variable-2 # bar]');\n\n  MT('ulFormatting',\n      '[variable-2 * ][variable-2&em _foo_][variable-2  bar]',\n      '[variable-2 * ][variable-2&strong *][variable-2&em&strong _foo_]' +\n        '[variable-2&strong *][variable-2  bar]',\n      '[variable-2 * ][variable-2&strong *foo*][variable-2  bar]');\n\n  MT('olFormatting',\n      '[variable-2 # ][variable-2&em _foo_][variable-2  bar]',\n      '[variable-2 # ][variable-2&strong *][variable-2&em&strong _foo_]' +\n        '[variable-2&strong *][variable-2  bar]',\n      '[variable-2 # ][variable-2&strong *foo*][variable-2  bar]');\n\n  MT('ulNested',\n      '[variable-2 * foo]',\n      '[variable-3 ** bar]',\n      '[keyword *** bar]',\n      '[variable-2 **** bar]',\n      '[variable-3 ** bar]');\n\n  MT('olNested',\n      '[variable-2 # foo]',\n      '[variable-3 ## bar]',\n      '[keyword ### bar]',\n      '[variable-2 #### bar]',\n      '[variable-3 ## bar]');\n\n  MT('ulNestedWithOl',\n      '[variable-2 * foo]',\n      '[variable-3 ## bar]',\n      '[keyword *** bar]',\n      '[variable-2 #### bar]',\n      '[variable-3 ** bar]');\n\n  MT('olNestedWithUl',\n      '[variable-2 # foo]',\n      '[variable-3 ** bar]',\n      '[keyword ### bar]',\n      '[variable-2 **** bar]',\n      '[variable-3 ## bar]');\n\n  MT('definitionList',\n      '[number - coffee := Hot ][number&em _and_][number  black]',\n      '',\n      'Normal text.');\n\n  MT('definitionListSpan',\n      '[number - coffee :=]',\n      '',\n      '[number Hot ][number&em _and_][number  black =:]',\n      '',\n      'Normal text.');\n\n  MT('boo',\n      '[number - dog := woof woof]',\n      '[number - cat := meow meow]',\n      '[number - whale :=]',\n      '[number Whale noises.]',\n      '',\n      '[number Also, ][number&em _splashing_][number . =:]');\n\n  /*\n   * Attributes\n   */\n\n  MT('divWithAttribute',\n      '[punctuation div][punctuation&attribute (#my-id)][punctuation . foo bar]');\n\n  MT('divWithAttributeAnd2emRightPadding',\n      '[punctuation div][punctuation&attribute (#my-id)((][punctuation . foo bar]');\n\n  MT('divWithClassAndId',\n      '[punctuation div][punctuation&attribute (my-class#my-id)][punctuation . foo bar]');\n\n  MT('paragraphWithCss',\n      'p[attribute {color:red;}]. foo bar');\n\n  MT('paragraphNestedStyles',\n      'p. [strong *foo ][strong&em _bar_][strong *]');\n\n  MT('paragraphWithLanguage',\n      'p[attribute [[fr]]]. Parlez-vous français?');\n\n  MT('paragraphLeftAlign',\n      'p[attribute <]. Left');\n\n  MT('paragraphRightAlign',\n      'p[attribute >]. Right');\n\n  MT('paragraphRightAlign',\n      'p[attribute =]. Center');\n\n  MT('paragraphJustified',\n      'p[attribute <>]. Justified');\n\n  MT('paragraphWithLeftIndent1em',\n      'p[attribute (]. Left');\n\n  MT('paragraphWithRightIndent1em',\n      'p[attribute )]. Right');\n\n  MT('paragraphWithLeftIndent2em',\n      'p[attribute ((]. Left');\n\n  MT('paragraphWithRightIndent2em',\n      'p[attribute ))]. Right');\n\n  MT('paragraphWithLeftIndent3emRightIndent2em',\n      'p[attribute ((())]. Right');\n\n  MT('divFormatting',\n      '[punctuation div. ][punctuation&strong *foo ]' +\n        '[punctuation&strong&em _bar_][punctuation&strong *]');\n\n  MT('phraseModifierAttributes',\n      'p[attribute (my-class)]. This is a paragraph that has a class and' +\n      ' this [em _][em&attribute (#special-phrase)][em emphasized phrase_]' +\n      ' has an id.');\n\n  MT('linkWithClass',\n      '[link \"(my-class). This is a link with class\":http://redcloth.org]');\n\n  /*\n   * Layouts\n   */\n\n  MT('paragraphLayouts',\n      'p. This is one paragraph.',\n      '',\n      'p. This is another.');\n\n  MT('div',\n      '[punctuation div. foo bar]');\n\n  MT('pre',\n      '[operator pre. Text]');\n\n  MT('bq.',\n      '[bracket bq. foo bar]',\n      '',\n      'Normal text.');\n\n  MT('footnote',\n      '[variable fn123. foo ][variable&strong *bar*]');\n\n  /*\n   * Spanning Layouts\n   */\n\n  MT('bq..ThenParagraph',\n      '[bracket bq.. foo bar]',\n      '',\n      '[bracket More quote.]',\n      'p. Normal Text');\n\n  MT('bq..ThenH1',\n      '[bracket bq.. foo bar]',\n      '',\n      '[bracket More quote.]',\n      '[header&header-1 h1. Header Text]');\n\n  MT('bc..ThenParagraph',\n      '[atom bc.. # Some ruby code]',\n      '[atom obj = {foo: :bar}]',\n      '[atom puts obj]',\n      '',\n      '[atom obj[[:love]] = \"*love*\"]',\n      '[atom puts obj.love.upcase]',\n      '',\n      'p. Normal text.');\n\n  MT('fn1..ThenParagraph',\n      '[variable fn1.. foo bar]',\n      '',\n      '[variable More.]',\n      'p. Normal Text');\n\n  MT('pre..ThenParagraph',\n      '[operator pre.. foo bar]',\n      '',\n      '[operator More.]',\n      'p. Normal Text');\n\n  /*\n   * Tables\n   */\n\n  MT('table',\n      '[variable-3&operator |_. name |_. age|]',\n      '[variable-3 |][variable-3&strong *Walter*][variable-3 |   5  |]',\n      '[variable-3 |Florence|   6  |]',\n      '',\n      'p. Normal text.');\n\n  MT('tableWithAttributes',\n      '[variable-3&operator |_. name |_. age|]',\n      '[variable-3 |][variable-3&attribute /2.][variable-3  Jim |]',\n      '[variable-3 |][variable-3&attribute \\\\2{color: red}.][variable-3  Sam |]');\n\n  /*\n   * HTML\n   */\n\n  MT('html',\n      '[comment <div id=\"wrapper\">]',\n      '[comment <section id=\"introduction\">]',\n      '',\n      '[header&header-1 h1. Welcome]',\n      '',\n      '[variable-2 * Item one]',\n      '[variable-2 * Item two]',\n      '',\n      '[comment <a href=\"http://example.com\">Example</a>]',\n      '',\n      '[comment </section>]',\n      '[comment </div>]');\n\n  MT('inlineHtml',\n      'I can use HTML directly in my [comment <span class=\"youbetcha\">Textile</span>].');\n\n  /*\n   * No-Textile\n   */\n\n  MT('notextile',\n    '[string-2 notextile. *No* formatting]');\n\n  MT('notextileInline',\n      'Use [string-2 ==*asterisks*==] for [strong *strong*] text.');\n\n  MT('notextileWithPre',\n      '[operator pre. *No* formatting]');\n\n  MT('notextileWithSpanningPre',\n      '[operator pre.. *No* formatting]',\n      '',\n      '[operator *No* formatting]');\n\n  /* Only toggling phrases between non-word chars. */\n\n  MT('phrase-in-word',\n     'foo_bar_baz');\n\n  MT('phrase-non-word',\n     '[negative -x-] aaa-bbb ccc-ddd [negative -eee-] fff [negative -ggg-]');\n\n  MT('phrase-lone-dash',\n     'foo - bar - baz');\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/textile/textile.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") { // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  } else if (typeof define == \"function\" && define.amd) { // AMD\n    define([\"../../lib/codemirror\"], mod);\n  } else { // Plain browser env\n    mod(CodeMirror);\n  }\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var TOKEN_STYLES = {\n    addition: \"positive\",\n    attributes: \"attribute\",\n    bold: \"strong\",\n    cite: \"keyword\",\n    code: \"atom\",\n    definitionList: \"number\",\n    deletion: \"negative\",\n    div: \"punctuation\",\n    em: \"em\",\n    footnote: \"variable\",\n    footCite: \"qualifier\",\n    header: \"header\",\n    html: \"comment\",\n    image: \"string\",\n    italic: \"em\",\n    link: \"link\",\n    linkDefinition: \"link\",\n    list1: \"variable-2\",\n    list2: \"variable-3\",\n    list3: \"keyword\",\n    notextile: \"string-2\",\n    pre: \"operator\",\n    p: \"property\",\n    quote: \"bracket\",\n    span: \"quote\",\n    specialChar: \"tag\",\n    strong: \"strong\",\n    sub: \"builtin\",\n    sup: \"builtin\",\n    table: \"variable-3\",\n    tableHeading: \"operator\"\n  };\n\n  function startNewLine(stream, state) {\n    state.mode = Modes.newLayout;\n    state.tableHeading = false;\n\n    if (state.layoutType === \"definitionList\" && state.spanningLayout &&\n        stream.match(RE(\"definitionListEnd\"), false))\n      state.spanningLayout = false;\n  }\n\n  function handlePhraseModifier(stream, state, ch) {\n    if (ch === \"_\") {\n      if (stream.eat(\"_\"))\n        return togglePhraseModifier(stream, state, \"italic\", /__/, 2);\n      else\n        return togglePhraseModifier(stream, state, \"em\", /_/, 1);\n    }\n\n    if (ch === \"*\") {\n      if (stream.eat(\"*\")) {\n        return togglePhraseModifier(stream, state, \"bold\", /\\*\\*/, 2);\n      }\n      return togglePhraseModifier(stream, state, \"strong\", /\\*/, 1);\n    }\n\n    if (ch === \"[\") {\n      if (stream.match(/\\d+\\]/)) state.footCite = true;\n      return tokenStyles(state);\n    }\n\n    if (ch === \"(\") {\n      var spec = stream.match(/^(r|tm|c)\\)/);\n      if (spec)\n        return tokenStylesWith(state, TOKEN_STYLES.specialChar);\n    }\n\n    if (ch === \"<\" && stream.match(/(\\w+)[^>]+>[^<]+<\\/\\1>/))\n      return tokenStylesWith(state, TOKEN_STYLES.html);\n\n    if (ch === \"?\" && stream.eat(\"?\"))\n      return togglePhraseModifier(stream, state, \"cite\", /\\?\\?/, 2);\n\n    if (ch === \"=\" && stream.eat(\"=\"))\n      return togglePhraseModifier(stream, state, \"notextile\", /==/, 2);\n\n    if (ch === \"-\" && !stream.eat(\"-\"))\n      return togglePhraseModifier(stream, state, \"deletion\", /-/, 1);\n\n    if (ch === \"+\")\n      return togglePhraseModifier(stream, state, \"addition\", /\\+/, 1);\n\n    if (ch === \"~\")\n      return togglePhraseModifier(stream, state, \"sub\", /~/, 1);\n\n    if (ch === \"^\")\n      return togglePhraseModifier(stream, state, \"sup\", /\\^/, 1);\n\n    if (ch === \"%\")\n      return togglePhraseModifier(stream, state, \"span\", /%/, 1);\n\n    if (ch === \"@\")\n      return togglePhraseModifier(stream, state, \"code\", /@/, 1);\n\n    if (ch === \"!\") {\n      var type = togglePhraseModifier(stream, state, \"image\", /(?:\\([^\\)]+\\))?!/, 1);\n      stream.match(/^:\\S+/); // optional Url portion\n      return type;\n    }\n    return tokenStyles(state);\n  }\n\n  function togglePhraseModifier(stream, state, phraseModifier, closeRE, openSize) {\n    var charBefore = stream.pos > openSize ? stream.string.charAt(stream.pos - openSize - 1) : null;\n    var charAfter = stream.peek();\n    if (state[phraseModifier]) {\n      if ((!charAfter || /\\W/.test(charAfter)) && charBefore && /\\S/.test(charBefore)) {\n        var type = tokenStyles(state);\n        state[phraseModifier] = false;\n        return type;\n      }\n    } else if ((!charBefore || /\\W/.test(charBefore)) && charAfter && /\\S/.test(charAfter) &&\n               stream.match(new RegExp(\"^.*\\\\S\" + closeRE.source + \"(?:\\\\W|$)\"), false)) {\n      state[phraseModifier] = true;\n      state.mode = Modes.attributes;\n    }\n    return tokenStyles(state);\n  };\n\n  function tokenStyles(state) {\n    var disabled = textileDisabled(state);\n    if (disabled) return disabled;\n\n    var styles = [];\n    if (state.layoutType) styles.push(TOKEN_STYLES[state.layoutType]);\n\n    styles = styles.concat(activeStyles(\n      state, \"addition\", \"bold\", \"cite\", \"code\", \"deletion\", \"em\", \"footCite\",\n      \"image\", \"italic\", \"link\", \"span\", \"strong\", \"sub\", \"sup\", \"table\", \"tableHeading\"));\n\n    if (state.layoutType === \"header\")\n      styles.push(TOKEN_STYLES.header + \"-\" + state.header);\n\n    return styles.length ? styles.join(\" \") : null;\n  }\n\n  function textileDisabled(state) {\n    var type = state.layoutType;\n\n    switch(type) {\n    case \"notextile\":\n    case \"code\":\n    case \"pre\":\n      return TOKEN_STYLES[type];\n    default:\n      if (state.notextile)\n        return TOKEN_STYLES.notextile + (type ? (\" \" + TOKEN_STYLES[type]) : \"\");\n      return null;\n    }\n  }\n\n  function tokenStylesWith(state, extraStyles) {\n    var disabled = textileDisabled(state);\n    if (disabled) return disabled;\n\n    var type = tokenStyles(state);\n    if (extraStyles)\n      return type ? (type + \" \" + extraStyles) : extraStyles;\n    else\n      return type;\n  }\n\n  function activeStyles(state) {\n    var styles = [];\n    for (var i = 1; i < arguments.length; ++i) {\n      if (state[arguments[i]])\n        styles.push(TOKEN_STYLES[arguments[i]]);\n    }\n    return styles;\n  }\n\n  function blankLine(state) {\n    var spanningLayout = state.spanningLayout, type = state.layoutType;\n\n    for (var key in state) if (state.hasOwnProperty(key))\n      delete state[key];\n\n    state.mode = Modes.newLayout;\n    if (spanningLayout) {\n      state.layoutType = type;\n      state.spanningLayout = true;\n    }\n  }\n\n  var REs = {\n    cache: {},\n    single: {\n      bc: \"bc\",\n      bq: \"bq\",\n      definitionList: /- [^(?::=)]+:=+/,\n      definitionListEnd: /.*=:\\s*$/,\n      div: \"div\",\n      drawTable: /\\|.*\\|/,\n      foot: /fn\\d+/,\n      header: /h[1-6]/,\n      html: /\\s*<(?:\\/)?(\\w+)(?:[^>]+)?>(?:[^<]+<\\/\\1>)?/,\n      link: /[^\"]+\":\\S/,\n      linkDefinition: /\\[[^\\s\\]]+\\]\\S+/,\n      list: /(?:#+|\\*+)/,\n      notextile: \"notextile\",\n      para: \"p\",\n      pre: \"pre\",\n      table: \"table\",\n      tableCellAttributes: /[\\/\\\\]\\d+/,\n      tableHeading: /\\|_\\./,\n      tableText: /[^\"_\\*\\[\\(\\?\\+~\\^%@|-]+/,\n      text: /[^!\"_=\\*\\[\\(<\\?\\+~\\^%@-]+/\n    },\n    attributes: {\n      align: /(?:<>|<|>|=)/,\n      selector: /\\([^\\(][^\\)]+\\)/,\n      lang: /\\[[^\\[\\]]+\\]/,\n      pad: /(?:\\(+|\\)+){1,2}/,\n      css: /\\{[^\\}]+\\}/\n    },\n    createRe: function(name) {\n      switch (name) {\n      case \"drawTable\":\n        return REs.makeRe(\"^\", REs.single.drawTable, \"$\");\n      case \"html\":\n        return REs.makeRe(\"^\", REs.single.html, \"(?:\", REs.single.html, \")*\", \"$\");\n      case \"linkDefinition\":\n        return REs.makeRe(\"^\", REs.single.linkDefinition, \"$\");\n      case \"listLayout\":\n        return REs.makeRe(\"^\", REs.single.list, RE(\"allAttributes\"), \"*\\\\s+\");\n      case \"tableCellAttributes\":\n        return REs.makeRe(\"^\", REs.choiceRe(REs.single.tableCellAttributes,\n                                            RE(\"allAttributes\")), \"+\\\\.\");\n      case \"type\":\n        return REs.makeRe(\"^\", RE(\"allTypes\"));\n      case \"typeLayout\":\n        return REs.makeRe(\"^\", RE(\"allTypes\"), RE(\"allAttributes\"),\n                          \"*\\\\.\\\\.?\", \"(\\\\s+|$)\");\n      case \"attributes\":\n        return REs.makeRe(\"^\", RE(\"allAttributes\"), \"+\");\n\n      case \"allTypes\":\n        return REs.choiceRe(REs.single.div, REs.single.foot,\n                            REs.single.header, REs.single.bc, REs.single.bq,\n                            REs.single.notextile, REs.single.pre, REs.single.table,\n                            REs.single.para);\n\n      case \"allAttributes\":\n        return REs.choiceRe(REs.attributes.selector, REs.attributes.css,\n                            REs.attributes.lang, REs.attributes.align, REs.attributes.pad);\n\n      default:\n        return REs.makeRe(\"^\", REs.single[name]);\n      }\n    },\n    makeRe: function() {\n      var pattern = \"\";\n      for (var i = 0; i < arguments.length; ++i) {\n        var arg = arguments[i];\n        pattern += (typeof arg === \"string\") ? arg : arg.source;\n      }\n      return new RegExp(pattern);\n    },\n    choiceRe: function() {\n      var parts = [arguments[0]];\n      for (var i = 1; i < arguments.length; ++i) {\n        parts[i * 2 - 1] = \"|\";\n        parts[i * 2] = arguments[i];\n      }\n\n      parts.unshift(\"(?:\");\n      parts.push(\")\");\n      return REs.makeRe.apply(null, parts);\n    }\n  };\n\n  function RE(name) {\n    return (REs.cache[name] || (REs.cache[name] = REs.createRe(name)));\n  }\n\n  var Modes = {\n    newLayout: function(stream, state) {\n      if (stream.match(RE(\"typeLayout\"), false)) {\n        state.spanningLayout = false;\n        return (state.mode = Modes.blockType)(stream, state);\n      }\n      var newMode;\n      if (!textileDisabled(state)) {\n        if (stream.match(RE(\"listLayout\"), false))\n          newMode = Modes.list;\n        else if (stream.match(RE(\"drawTable\"), false))\n          newMode = Modes.table;\n        else if (stream.match(RE(\"linkDefinition\"), false))\n          newMode = Modes.linkDefinition;\n        else if (stream.match(RE(\"definitionList\")))\n          newMode = Modes.definitionList;\n        else if (stream.match(RE(\"html\"), false))\n          newMode = Modes.html;\n      }\n      return (state.mode = (newMode || Modes.text))(stream, state);\n    },\n\n    blockType: function(stream, state) {\n      var match, type;\n      state.layoutType = null;\n\n      if (match = stream.match(RE(\"type\")))\n        type = match[0];\n      else\n        return (state.mode = Modes.text)(stream, state);\n\n      if (match = type.match(RE(\"header\"))) {\n        state.layoutType = \"header\";\n        state.header = parseInt(match[0][1]);\n      } else if (type.match(RE(\"bq\"))) {\n        state.layoutType = \"quote\";\n      } else if (type.match(RE(\"bc\"))) {\n        state.layoutType = \"code\";\n      } else if (type.match(RE(\"foot\"))) {\n        state.layoutType = \"footnote\";\n      } else if (type.match(RE(\"notextile\"))) {\n        state.layoutType = \"notextile\";\n      } else if (type.match(RE(\"pre\"))) {\n        state.layoutType = \"pre\";\n      } else if (type.match(RE(\"div\"))) {\n        state.layoutType = \"div\";\n      } else if (type.match(RE(\"table\"))) {\n        state.layoutType = \"table\";\n      }\n\n      state.mode = Modes.attributes;\n      return tokenStyles(state);\n    },\n\n    text: function(stream, state) {\n      if (stream.match(RE(\"text\"))) return tokenStyles(state);\n\n      var ch = stream.next();\n      if (ch === '\"')\n        return (state.mode = Modes.link)(stream, state);\n      return handlePhraseModifier(stream, state, ch);\n    },\n\n    attributes: function(stream, state) {\n      state.mode = Modes.layoutLength;\n\n      if (stream.match(RE(\"attributes\")))\n        return tokenStylesWith(state, TOKEN_STYLES.attributes);\n      else\n        return tokenStyles(state);\n    },\n\n    layoutLength: function(stream, state) {\n      if (stream.eat(\".\") && stream.eat(\".\"))\n        state.spanningLayout = true;\n\n      state.mode = Modes.text;\n      return tokenStyles(state);\n    },\n\n    list: function(stream, state) {\n      var match = stream.match(RE(\"list\"));\n      state.listDepth = match[0].length;\n      var listMod = (state.listDepth - 1) % 3;\n      if (!listMod)\n        state.layoutType = \"list1\";\n      else if (listMod === 1)\n        state.layoutType = \"list2\";\n      else\n        state.layoutType = \"list3\";\n\n      state.mode = Modes.attributes;\n      return tokenStyles(state);\n    },\n\n    link: function(stream, state) {\n      state.mode = Modes.text;\n      if (stream.match(RE(\"link\"))) {\n        stream.match(/\\S+/);\n        return tokenStylesWith(state, TOKEN_STYLES.link);\n      }\n      return tokenStyles(state);\n    },\n\n    linkDefinition: function(stream, state) {\n      stream.skipToEnd();\n      return tokenStylesWith(state, TOKEN_STYLES.linkDefinition);\n    },\n\n    definitionList: function(stream, state) {\n      stream.match(RE(\"definitionList\"));\n\n      state.layoutType = \"definitionList\";\n\n      if (stream.match(/\\s*$/))\n        state.spanningLayout = true;\n      else\n        state.mode = Modes.attributes;\n\n      return tokenStyles(state);\n    },\n\n    html: function(stream, state) {\n      stream.skipToEnd();\n      return tokenStylesWith(state, TOKEN_STYLES.html);\n    },\n\n    table: function(stream, state) {\n      state.layoutType = \"table\";\n      return (state.mode = Modes.tableCell)(stream, state);\n    },\n\n    tableCell: function(stream, state) {\n      if (stream.match(RE(\"tableHeading\")))\n        state.tableHeading = true;\n      else\n        stream.eat(\"|\");\n\n      state.mode = Modes.tableCellAttributes;\n      return tokenStyles(state);\n    },\n\n    tableCellAttributes: function(stream, state) {\n      state.mode = Modes.tableText;\n\n      if (stream.match(RE(\"tableCellAttributes\")))\n        return tokenStylesWith(state, TOKEN_STYLES.attributes);\n      else\n        return tokenStyles(state);\n    },\n\n    tableText: function(stream, state) {\n      if (stream.match(RE(\"tableText\")))\n        return tokenStyles(state);\n\n      if (stream.peek() === \"|\") { // end of cell\n        state.mode = Modes.tableCell;\n        return tokenStyles(state);\n      }\n      return handlePhraseModifier(stream, state, stream.next());\n    }\n  };\n\n  CodeMirror.defineMode(\"textile\", function() {\n    return {\n      startState: function() {\n        return { mode: Modes.newLayout };\n      },\n      token: function(stream, state) {\n        if (stream.sol()) startNewLine(stream, state);\n        return state.mode(stream, state);\n      },\n      blankLine: blankLine\n    };\n  });\n\n  CodeMirror.defineMIME(\"text/x-textile\", \"textile\");\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/tiddlywiki/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: TiddlyWiki mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"tiddlywiki.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"tiddlywiki.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">TiddlyWiki</a>\n  </ul>\n</div>\n\n<article>\n<h2>TiddlyWiki mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\n!TiddlyWiki Formatting\n* Rendered versions can be found at: http://www.tiddlywiki.com/#Reference\n\n|!Option            | !Syntax            |\n|bold font          | ''bold''           |\n|italic type        | //italic//         |\n|underlined text    | __underlined__     |\n|strikethrough text | --strikethrough--  |\n|superscript text   | super^^script^^    |\n|subscript text     | sub~~script~~      |\n|highlighted text   | @@highlighted@@    |\n|preformatted text  | {{{preformatted}}} |\n\n!Block Elements\n<<<\n!Heading 1\n\n!!Heading 2\n\n!!!Heading 3\n\n!!!!Heading 4\n\n!!!!!Heading 5\n<<<\n\n!!Lists\n<<<\n* unordered list, level 1\n** unordered list, level 2\n*** unordered list, level 3\n\n# ordered list, level 1\n## ordered list, level 2\n### unordered list, level 3\n\n; definition list, term\n: definition list, description\n<<<\n\n!!Blockquotes\n<<<\n> blockquote, level 1\n>> blockquote, level 2\n>>> blockquote, level 3\n\n> blockquote\n<<<\n\n!!Preformatted Text\n<<<\n{{{\npreformatted (e.g. code)\n}}}\n<<<\n\n!!Code Sections\n<<<\n{{{\nText style code\n}}}\n\n//{{{\nJS styled code. TiddlyWiki mixed mode should support highlighter switching in the future.\n//}}}\n\n<!--{{{-->\nXML styled code. TiddlyWiki mixed mode should support highlighter switching in the future.\n<!--}}}-->\n<<<\n\n!!Tables\n<<<\n|CssClass|k\n|!heading column 1|!heading column 2|\n|row 1, column 1|row 1, column 2|\n|row 2, column 1|row 2, column 2|\n|>|COLSPAN|\n|ROWSPAN| ... |\n|~| ... |\n|CssProperty:value;...| ... |\n|caption|c\n\n''Annotation:''\n* The {{{>}}} marker creates a \"colspan\", causing the current cell to merge with the one to the right.\n* The {{{~}}} marker creates a \"rowspan\", causing the current cell to merge with the one above.\n<<<\n!!Images /% TODO %/\ncf. [[TiddlyWiki.com|http://www.tiddlywiki.com/#EmbeddedImages]]\n\n!Hyperlinks\n* [[WikiWords|WikiWord]] are automatically transformed to hyperlinks to the respective tiddler\n** the automatic transformation can be suppressed by preceding the respective WikiWord with a tilde ({{{~}}}): {{{~WikiWord}}}\n* [[PrettyLinks]] are enclosed in square brackets and contain the desired tiddler name: {{{[[tiddler name]]}}}\n** optionally, a custom title or description can be added, separated by a pipe character ({{{|}}}): {{{[[title|target]]}}}<br>'''N.B.:''' In this case, the target can also be any website (i.e. URL).\n\n!Custom Styling\n* {{{@@CssProperty:value;CssProperty:value;...@@}}}<br>''N.B.:'' CSS color definitions should use lowercase letters to prevent the inadvertent creation of WikiWords.\n* <html><code>{{customCssClass{...}}}</code></html>\n* raw HTML can be inserted by enclosing the respective code in HTML tags: {{{<html> ... </html>}}}\n\n!Special Markers\n* {{{<br>}}} forces a manual line break\n* {{{----}}} creates a horizontal ruler\n* [[HTML entities|http://www.tiddlywiki.com/#HtmlEntities]]\n* [[HTML entities local|HtmlEntities]]\n* {{{<<macroName>>}}} calls the respective [[macro|Macros]]\n* To hide text within a tiddler so that it is not displayed, it can be wrapped in {{{/%}}} and {{{%/}}}.<br/>This can be a useful trick for hiding drafts or annotating complex markup.\n* To prevent wiki markup from taking effect for a particular section, that section can be enclosed in three double quotes: e.g. {{{\"\"\"WikiWord\"\"\"}}}.\n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: 'tiddlywiki',      \n        lineNumbers: true,\n        matchBrackets: true\n      });\n    </script>\n\n    <p>TiddlyWiki mode supports a single configuration.</p>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-tiddlywiki</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/tiddlywiki/tiddlywiki.css",
    "content": "span.cm-underlined {\n  text-decoration: underline;\n}\nspan.cm-strikethrough {\n  text-decoration: line-through;\n}\nspan.cm-brace {\n  color: #170;\n  font-weight: bold;\n}\nspan.cm-table {\n  color: blue;\n  font-weight: bold;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/tiddlywiki/tiddlywiki.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/***\n    |''Name''|tiddlywiki.js|\n    |''Description''|Enables TiddlyWikiy syntax highlighting using CodeMirror|\n    |''Author''|PMario|\n    |''Version''|0.1.7|\n    |''Status''|''stable''|\n    |''Source''|[[GitHub|https://github.com/pmario/CodeMirror2/blob/tw-syntax/mode/tiddlywiki]]|\n    |''Documentation''|http://codemirror.tiddlyspace.com/|\n    |''License''|[[MIT License|http://www.opensource.org/licenses/mit-license.php]]|\n    |''CoreVersion''|2.5.0|\n    |''Requires''|codemirror.js|\n    |''Keywords''|syntax highlighting color code mirror codemirror|\n    ! Info\n    CoreVersion parameter is needed for TiddlyWiki only!\n***/\n//{{{\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"tiddlywiki\", function () {\n  // Tokenizer\n  var textwords = {};\n\n  var keywords = function () {\n    function kw(type) {\n      return { type: type, style: \"macro\"};\n    }\n    return {\n      \"allTags\": kw('allTags'), \"closeAll\": kw('closeAll'), \"list\": kw('list'),\n      \"newJournal\": kw('newJournal'), \"newTiddler\": kw('newTiddler'),\n      \"permaview\": kw('permaview'), \"saveChanges\": kw('saveChanges'),\n      \"search\": kw('search'), \"slider\": kw('slider'),   \"tabs\": kw('tabs'),\n      \"tag\": kw('tag'), \"tagging\": kw('tagging'),       \"tags\": kw('tags'),\n      \"tiddler\": kw('tiddler'), \"timeline\": kw('timeline'),\n      \"today\": kw('today'), \"version\": kw('version'),   \"option\": kw('option'),\n\n      \"with\": kw('with'),\n      \"filter\": kw('filter')\n    };\n  }();\n\n  var isSpaceName = /[\\w_\\-]/i,\n  reHR = /^\\-\\-\\-\\-+$/,                                 // <hr>\n  reWikiCommentStart = /^\\/\\*\\*\\*$/,            // /***\n  reWikiCommentStop = /^\\*\\*\\*\\/$/,             // ***/\n  reBlockQuote = /^<<<$/,\n\n  reJsCodeStart = /^\\/\\/\\{\\{\\{$/,                       // //{{{ js block start\n  reJsCodeStop = /^\\/\\/\\}\\}\\}$/,                        // //}}} js stop\n  reXmlCodeStart = /^<!--\\{\\{\\{-->$/,           // xml block start\n  reXmlCodeStop = /^<!--\\}\\}\\}-->$/,            // xml stop\n\n  reCodeBlockStart = /^\\{\\{\\{$/,                        // {{{ TW text div block start\n  reCodeBlockStop = /^\\}\\}\\}$/,                 // }}} TW text stop\n\n  reUntilCodeStop = /.*?\\}\\}\\}/;\n\n  function chain(stream, state, f) {\n    state.tokenize = f;\n    return f(stream, state);\n  }\n\n  // Used as scratch variables to communicate multiple values without\n  // consing up tons of objects.\n  var type, content;\n\n  function ret(tp, style, cont) {\n    type = tp;\n    content = cont;\n    return style;\n  }\n\n  function jsTokenBase(stream, state) {\n    var sol = stream.sol(), ch;\n\n    state.block = false;        // indicates the start of a code block.\n\n    ch = stream.peek();         // don't eat, to make matching simpler\n\n    // check start of  blocks\n    if (sol && /[<\\/\\*{}\\-]/.test(ch)) {\n      if (stream.match(reCodeBlockStart)) {\n        state.block = true;\n        return chain(stream, state, twTokenCode);\n      }\n      if (stream.match(reBlockQuote)) {\n        return ret('quote', 'quote');\n      }\n      if (stream.match(reWikiCommentStart) || stream.match(reWikiCommentStop)) {\n        return ret('code', 'comment');\n      }\n      if (stream.match(reJsCodeStart) || stream.match(reJsCodeStop) || stream.match(reXmlCodeStart) || stream.match(reXmlCodeStop)) {\n        return ret('code', 'comment');\n      }\n      if (stream.match(reHR)) {\n        return ret('hr', 'hr');\n      }\n    } // sol\n    ch = stream.next();\n\n    if (sol && /[\\/\\*!#;:>|]/.test(ch)) {\n      if (ch == \"!\") { // tw header\n        stream.skipToEnd();\n        return ret(\"header\", \"header\");\n      }\n      if (ch == \"*\") { // tw list\n        stream.eatWhile('*');\n        return ret(\"list\", \"comment\");\n      }\n      if (ch == \"#\") { // tw numbered list\n        stream.eatWhile('#');\n        return ret(\"list\", \"comment\");\n      }\n      if (ch == \";\") { // definition list, term\n        stream.eatWhile(';');\n        return ret(\"list\", \"comment\");\n      }\n      if (ch == \":\") { // definition list, description\n        stream.eatWhile(':');\n        return ret(\"list\", \"comment\");\n      }\n      if (ch == \">\") { // single line quote\n        stream.eatWhile(\">\");\n        return ret(\"quote\", \"quote\");\n      }\n      if (ch == '|') {\n        return ret('table', 'header');\n      }\n    }\n\n    if (ch == '{' && stream.match(/\\{\\{/)) {\n      return chain(stream, state, twTokenCode);\n    }\n\n    // rudimentary html:// file:// link matching. TW knows much more ...\n    if (/[hf]/i.test(ch)) {\n      if (/[ti]/i.test(stream.peek()) && stream.match(/\\b(ttps?|tp|ile):\\/\\/[\\-A-Z0-9+&@#\\/%?=~_|$!:,.;]*[A-Z0-9+&@#\\/%=~_|$]/i)) {\n        return ret(\"link\", \"link\");\n      }\n    }\n    // just a little string indicator, don't want to have the whole string covered\n    if (ch == '\"') {\n      return ret('string', 'string');\n    }\n    if (ch == '~') {    // _no_ CamelCase indicator should be bold\n      return ret('text', 'brace');\n    }\n    if (/[\\[\\]]/.test(ch)) { // check for [[..]]\n      if (stream.peek() == ch) {\n        stream.next();\n        return ret('brace', 'brace');\n      }\n    }\n    if (ch == \"@\") {    // check for space link. TODO fix @@...@@ highlighting\n      stream.eatWhile(isSpaceName);\n      return ret(\"link\", \"link\");\n    }\n    if (/\\d/.test(ch)) {        // numbers\n      stream.eatWhile(/\\d/);\n      return ret(\"number\", \"number\");\n    }\n    if (ch == \"/\") { // tw invisible comment\n      if (stream.eat(\"%\")) {\n        return chain(stream, state, twTokenComment);\n      }\n      else if (stream.eat(\"/\")) { //\n        return chain(stream, state, twTokenEm);\n      }\n    }\n    if (ch == \"_\") { // tw underline\n      if (stream.eat(\"_\")) {\n        return chain(stream, state, twTokenUnderline);\n      }\n    }\n    // strikethrough and mdash handling\n    if (ch == \"-\") {\n      if (stream.eat(\"-\")) {\n        // if strikethrough looks ugly, change CSS.\n        if (stream.peek() != ' ')\n          return chain(stream, state, twTokenStrike);\n        // mdash\n        if (stream.peek() == ' ')\n          return ret('text', 'brace');\n      }\n    }\n    if (ch == \"'\") { // tw bold\n      if (stream.eat(\"'\")) {\n        return chain(stream, state, twTokenStrong);\n      }\n    }\n    if (ch == \"<\") { // tw macro\n      if (stream.eat(\"<\")) {\n        return chain(stream, state, twTokenMacro);\n      }\n    }\n    else {\n      return ret(ch);\n    }\n\n    // core macro handling\n    stream.eatWhile(/[\\w\\$_]/);\n    var word = stream.current(),\n    known = textwords.propertyIsEnumerable(word) && textwords[word];\n\n    return known ? ret(known.type, known.style, word) : ret(\"text\", null, word);\n\n  } // jsTokenBase()\n\n  // tw invisible comment\n  function twTokenComment(stream, state) {\n    var maybeEnd = false,\n    ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = jsTokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"%\");\n    }\n    return ret(\"comment\", \"comment\");\n  }\n\n  // tw strong / bold\n  function twTokenStrong(stream, state) {\n    var maybeEnd = false,\n    ch;\n    while (ch = stream.next()) {\n      if (ch == \"'\" && maybeEnd) {\n        state.tokenize = jsTokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"'\");\n    }\n    return ret(\"text\", \"strong\");\n  }\n\n  // tw code\n  function twTokenCode(stream, state) {\n    var ch, sb = state.block;\n\n    if (sb && stream.current()) {\n      return ret(\"code\", \"comment\");\n    }\n\n    if (!sb && stream.match(reUntilCodeStop)) {\n      state.tokenize = jsTokenBase;\n      return ret(\"code\", \"comment\");\n    }\n\n    if (sb && stream.sol() && stream.match(reCodeBlockStop)) {\n      state.tokenize = jsTokenBase;\n      return ret(\"code\", \"comment\");\n    }\n\n    ch = stream.next();\n    return (sb) ? ret(\"code\", \"comment\") : ret(\"code\", \"comment\");\n  }\n\n  // tw em / italic\n  function twTokenEm(stream, state) {\n    var maybeEnd = false,\n    ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = jsTokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"/\");\n    }\n    return ret(\"text\", \"em\");\n  }\n\n  // tw underlined text\n  function twTokenUnderline(stream, state) {\n    var maybeEnd = false,\n    ch;\n    while (ch = stream.next()) {\n      if (ch == \"_\" && maybeEnd) {\n        state.tokenize = jsTokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"_\");\n    }\n    return ret(\"text\", \"underlined\");\n  }\n\n  // tw strike through text looks ugly\n  // change CSS if needed\n  function twTokenStrike(stream, state) {\n    var maybeEnd = false, ch;\n\n    while (ch = stream.next()) {\n      if (ch == \"-\" && maybeEnd) {\n        state.tokenize = jsTokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"-\");\n    }\n    return ret(\"text\", \"strikethrough\");\n  }\n\n  // macro\n  function twTokenMacro(stream, state) {\n    var ch, word, known;\n\n    if (stream.current() == '<<') {\n      return ret('brace', 'macro');\n    }\n\n    ch = stream.next();\n    if (!ch) {\n      state.tokenize = jsTokenBase;\n      return ret(ch);\n    }\n    if (ch == \">\") {\n      if (stream.peek() == '>') {\n        stream.next();\n        state.tokenize = jsTokenBase;\n        return ret(\"brace\", \"macro\");\n      }\n    }\n\n    stream.eatWhile(/[\\w\\$_]/);\n    word = stream.current();\n    known = keywords.propertyIsEnumerable(word) && keywords[word];\n\n    if (known) {\n      return ret(known.type, known.style, word);\n    }\n    else {\n      return ret(\"macro\", null, word);\n    }\n  }\n\n  // Interface\n  return {\n    startState: function () {\n      return {\n        tokenize: jsTokenBase,\n        indented: 0,\n        level: 0\n      };\n    },\n\n    token: function (stream, state) {\n      if (stream.eatSpace()) return null;\n      var style = state.tokenize(stream, state);\n      return style;\n    },\n\n    electricChars: \"\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-tiddlywiki\", \"tiddlywiki\");\n});\n\n//}}}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/tiki/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Tiki wiki mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"tiki.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"tiki.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Tiki wiki</a>\n  </ul>\n</div>\n\n<article>\n<h2>Tiki wiki mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\nHeadings\n!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5\n!!!!!!Header 6\n\nStyling\n-=titlebar=-\n^^ Box on multi\nlines\nof content^^\n__bold__\n''italic''\n===underline===\n::center::\n--Line Through--\n\nOperators\n~np~No parse~/np~\n\nLink\n[link|desc|nocache]\n\nWiki\n((Wiki))\n((Wiki|desc))\n((Wiki|desc|timeout))\n\nTable\n||row1 col1|row1 col2|row1 col3\nrow2 col1|row2 col2|row2 col3\nrow3 col1|row3 col2|row3 col3||\n\nLists:\n*bla\n**bla-1\n++continue-bla-1\n***bla-2\n++continue-bla-1\n*bla\n+continue-bla\n#bla\n** tra-la-la\n+continue-bla\n#bla\n\nPlugin (standard):\n{PLUGIN(attr=\"my attr\")}\nPlugin Body\n{PLUGIN}\n\nPlugin (inline):\n{plugin attr=\"my attr\"}\n</textarea></div>\n\n<script type=\"text/javascript\">\n\tvar editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: 'tiki',      \n        lineNumbers: true\n    });\n</script>\n\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/tiki/tiki.css",
    "content": ".cm-tw-syntaxerror {\n\tcolor: #FFF;\n\tbackground-color: #900;\n}\n\n.cm-tw-deleted {\n\ttext-decoration: line-through;\n}\n\n.cm-tw-header5 {\n\tfont-weight: bold;\n}\n.cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/\n\tpadding-left: 10px;\n}\n\n.cm-tw-box {\n\tborder-top-width: 0px ! important;\n\tborder-style: solid;\n\tborder-width: 1px;\n\tborder-color: inherit;\n}\n\n.cm-tw-underline {\n\ttext-decoration: underline;\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/tiki/tiki.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode('tiki', function(config) {\n  function inBlock(style, terminator, returnTokenizer) {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.match(terminator)) {\n          state.tokenize = inText;\n          break;\n        }\n        stream.next();\n      }\n\n      if (returnTokenizer) state.tokenize = returnTokenizer;\n\n      return style;\n    };\n  }\n\n  function inLine(style) {\n    return function(stream, state) {\n      while(!stream.eol()) {\n        stream.next();\n      }\n      state.tokenize = inText;\n      return style;\n    };\n  }\n\n  function inText(stream, state) {\n    function chain(parser) {\n      state.tokenize = parser;\n      return parser(stream, state);\n    }\n\n    var sol = stream.sol();\n    var ch = stream.next();\n\n    //non start of line\n    switch (ch) { //switch is generally much faster than if, so it is used here\n    case \"{\": //plugin\n      stream.eat(\"/\");\n      stream.eatSpace();\n      var tagName = \"\";\n      var c;\n      while ((c = stream.eat(/[^\\s\\u00a0=\\\"\\'\\/?(}]/))) tagName += c;\n      state.tokenize = inPlugin;\n      return \"tag\";\n      break;\n    case \"_\": //bold\n      if (stream.eat(\"_\")) {\n        return chain(inBlock(\"strong\", \"__\", inText));\n      }\n      break;\n    case \"'\": //italics\n      if (stream.eat(\"'\")) {\n        // Italic text\n        return chain(inBlock(\"em\", \"''\", inText));\n      }\n      break;\n    case \"(\":// Wiki Link\n      if (stream.eat(\"(\")) {\n        return chain(inBlock(\"variable-2\", \"))\", inText));\n      }\n      break;\n    case \"[\":// Weblink\n      return chain(inBlock(\"variable-3\", \"]\", inText));\n      break;\n    case \"|\": //table\n      if (stream.eat(\"|\")) {\n        return chain(inBlock(\"comment\", \"||\"));\n      }\n      break;\n    case \"-\":\n      if (stream.eat(\"=\")) {//titleBar\n        return chain(inBlock(\"header string\", \"=-\", inText));\n      } else if (stream.eat(\"-\")) {//deleted\n        return chain(inBlock(\"error tw-deleted\", \"--\", inText));\n      }\n      break;\n    case \"=\": //underline\n      if (stream.match(\"==\")) {\n        return chain(inBlock(\"tw-underline\", \"===\", inText));\n      }\n      break;\n    case \":\":\n      if (stream.eat(\":\")) {\n        return chain(inBlock(\"comment\", \"::\"));\n      }\n      break;\n    case \"^\": //box\n      return chain(inBlock(\"tw-box\", \"^\"));\n      break;\n    case \"~\": //np\n      if (stream.match(\"np~\")) {\n        return chain(inBlock(\"meta\", \"~/np~\"));\n      }\n      break;\n    }\n\n    //start of line types\n    if (sol) {\n      switch (ch) {\n      case \"!\": //header at start of line\n        if (stream.match('!!!!!')) {\n          return chain(inLine(\"header string\"));\n        } else if (stream.match('!!!!')) {\n          return chain(inLine(\"header string\"));\n        } else if (stream.match('!!!')) {\n          return chain(inLine(\"header string\"));\n        } else if (stream.match('!!')) {\n          return chain(inLine(\"header string\"));\n        } else {\n          return chain(inLine(\"header string\"));\n        }\n        break;\n      case \"*\": //unordered list line item, or <li /> at start of line\n      case \"#\": //ordered list line item, or <li /> at start of line\n      case \"+\": //ordered list line item, or <li /> at start of line\n        return chain(inLine(\"tw-listitem bracket\"));\n        break;\n      }\n    }\n\n    //stream.eatWhile(/[&{]/); was eating up plugins, turned off to act less like html and more like tiki\n    return null;\n  }\n\n  var indentUnit = config.indentUnit;\n\n  // Return variables for tokenizers\n  var pluginName, type;\n  function inPlugin(stream, state) {\n    var ch = stream.next();\n    var peek = stream.peek();\n\n    if (ch == \"}\") {\n      state.tokenize = inText;\n      //type = ch == \")\" ? \"endPlugin\" : \"selfclosePlugin\"; inPlugin\n      return \"tag\";\n    } else if (ch == \"(\" || ch == \")\") {\n      return \"bracket\";\n    } else if (ch == \"=\") {\n      type = \"equals\";\n\n      if (peek == \">\") {\n        ch = stream.next();\n        peek = stream.peek();\n      }\n\n      //here we detect values directly after equal character with no quotes\n      if (!/[\\'\\\"]/.test(peek)) {\n        state.tokenize = inAttributeNoQuote();\n      }\n      //end detect values\n\n      return \"operator\";\n    } else if (/[\\'\\\"]/.test(ch)) {\n      state.tokenize = inAttribute(ch);\n      return state.tokenize(stream, state);\n    } else {\n      stream.eatWhile(/[^\\s\\u00a0=\\\"\\'\\/?]/);\n      return \"keyword\";\n    }\n  }\n\n  function inAttribute(quote) {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.next() == quote) {\n          state.tokenize = inPlugin;\n          break;\n        }\n      }\n      return \"string\";\n    };\n  }\n\n  function inAttributeNoQuote() {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        var ch = stream.next();\n        var peek = stream.peek();\n        if (ch == \" \" || ch == \",\" || /[ )}]/.test(peek)) {\n      state.tokenize = inPlugin;\n      break;\n    }\n  }\n  return \"string\";\n};\n                     }\n\nvar curState, setStyle;\nfunction pass() {\n  for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]);\n}\n\nfunction cont() {\n  pass.apply(null, arguments);\n  return true;\n}\n\nfunction pushContext(pluginName, startOfLine) {\n  var noIndent = curState.context && curState.context.noIndent;\n  curState.context = {\n    prev: curState.context,\n    pluginName: pluginName,\n    indent: curState.indented,\n    startOfLine: startOfLine,\n    noIndent: noIndent\n  };\n}\n\nfunction popContext() {\n  if (curState.context) curState.context = curState.context.prev;\n}\n\nfunction element(type) {\n  if (type == \"openPlugin\") {curState.pluginName = pluginName; return cont(attributes, endplugin(curState.startOfLine));}\n  else if (type == \"closePlugin\") {\n    var err = false;\n    if (curState.context) {\n      err = curState.context.pluginName != pluginName;\n      popContext();\n    } else {\n      err = true;\n    }\n    if (err) setStyle = \"error\";\n    return cont(endcloseplugin(err));\n  }\n  else if (type == \"string\") {\n    if (!curState.context || curState.context.name != \"!cdata\") pushContext(\"!cdata\");\n    if (curState.tokenize == inText) popContext();\n    return cont();\n  }\n  else return cont();\n}\n\nfunction endplugin(startOfLine) {\n  return function(type) {\n    if (\n      type == \"selfclosePlugin\" ||\n        type == \"endPlugin\"\n    )\n      return cont();\n    if (type == \"endPlugin\") {pushContext(curState.pluginName, startOfLine); return cont();}\n    return cont();\n  };\n}\n\nfunction endcloseplugin(err) {\n  return function(type) {\n    if (err) setStyle = \"error\";\n    if (type == \"endPlugin\") return cont();\n    return pass();\n  };\n}\n\nfunction attributes(type) {\n  if (type == \"keyword\") {setStyle = \"attribute\"; return cont(attributes);}\n  if (type == \"equals\") return cont(attvalue, attributes);\n  return pass();\n}\nfunction attvalue(type) {\n  if (type == \"keyword\") {setStyle = \"string\"; return cont();}\n  if (type == \"string\") return cont(attvaluemaybe);\n  return pass();\n}\nfunction attvaluemaybe(type) {\n  if (type == \"string\") return cont(attvaluemaybe);\n  else return pass();\n}\nreturn {\n  startState: function() {\n    return {tokenize: inText, cc: [], indented: 0, startOfLine: true, pluginName: null, context: null};\n  },\n  token: function(stream, state) {\n    if (stream.sol()) {\n      state.startOfLine = true;\n      state.indented = stream.indentation();\n    }\n    if (stream.eatSpace()) return null;\n\n    setStyle = type = pluginName = null;\n    var style = state.tokenize(stream, state);\n    if ((style || type) && style != \"comment\") {\n      curState = state;\n      while (true) {\n        var comb = state.cc.pop() || element;\n        if (comb(type || style)) break;\n      }\n    }\n    state.startOfLine = false;\n    return setStyle || style;\n  },\n  indent: function(state, textAfter) {\n    var context = state.context;\n    if (context && context.noIndent) return 0;\n    if (context && /^{\\//.test(textAfter))\n        context = context.prev;\n        while (context && !context.startOfLine)\n          context = context.prev;\n        if (context) return context.indent + indentUnit;\n        else return 0;\n       },\n    electricChars: \"/\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/tiki\", \"tiki\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/toml/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: TOML Mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"toml.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">TOML Mode</a>\n  </ul>\n</div>\n\n<article>\n<h2>TOML Mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n# This is a TOML document. Boom.\n\ntitle = \"TOML Example\"\n\n[owner]\nname = \"Tom Preston-Werner\"\norganization = \"GitHub\"\nbio = \"GitHub Cofounder &amp; CEO\\nLikes tater tots and beer.\"\ndob = 1979-05-27T07:32:00Z # First class dates? Why not?\n\n[database]\nserver = \"192.168.1.1\"\nports = [ 8001, 8001, 8002 ]\nconnection_max = 5000\nenabled = true\n\n[servers]\n\n  # You can indent as you please. Tabs or spaces. TOML don't care.\n  [servers.alpha]\n  ip = \"10.0.0.1\"\n  dc = \"eqdc10\"\n  \n  [servers.beta]\n  ip = \"10.0.0.2\"\n  dc = \"eqdc10\"\n  \n[clients]\ndata = [ [\"gamma\", \"delta\"], [1, 2] ]\n\n# Line breaks are OK when inside arrays\nhosts = [\n  \"alpha\",\n  \"omega\"\n]\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: {name: \"toml\"},\n        lineNumbers: true\n      });\n    </script>\n    <h3>The TOML Mode</h3>\n      <p> Created by Forbes Lindesay.</p>\n    <p><strong>MIME type defined:</strong> <code>text/x-toml</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/toml/toml.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"toml\", function () {\n  return {\n    startState: function () {\n      return {\n        inString: false,\n        stringType: \"\",\n        lhs: true,\n        inArray: 0\n      };\n    },\n    token: function (stream, state) {\n      //check for state changes\n      if (!state.inString && ((stream.peek() == '\"') || (stream.peek() == \"'\"))) {\n        state.stringType = stream.peek();\n        stream.next(); // Skip quote\n        state.inString = true; // Update state\n      }\n      if (stream.sol() && state.inArray === 0) {\n        state.lhs = true;\n      }\n      //return state\n      if (state.inString) {\n        while (state.inString && !stream.eol()) {\n          if (stream.peek() === state.stringType) {\n            stream.next(); // Skip quote\n            state.inString = false; // Clear flag\n          } else if (stream.peek() === '\\\\') {\n            stream.next();\n            stream.next();\n          } else {\n            stream.match(/^.[^\\\\\\\"\\']*/);\n          }\n        }\n        return state.lhs ? \"property string\" : \"string\"; // Token style\n      } else if (state.inArray && stream.peek() === ']') {\n        stream.next();\n        state.inArray--;\n        return 'bracket';\n      } else if (state.lhs && stream.peek() === '[' && stream.skipTo(']')) {\n        stream.next();//skip closing ]\n        // array of objects has an extra open & close []\n        if (stream.peek() === ']') stream.next();\n        return \"atom\";\n      } else if (stream.peek() === \"#\") {\n        stream.skipToEnd();\n        return \"comment\";\n      } else if (stream.eatSpace()) {\n        return null;\n      } else if (state.lhs && stream.eatWhile(function (c) { return c != '=' && c != ' '; })) {\n        return \"property\";\n      } else if (state.lhs && stream.peek() === \"=\") {\n        stream.next();\n        state.lhs = false;\n        return null;\n      } else if (!state.lhs && stream.match(/^\\d\\d\\d\\d[\\d\\-\\:\\.T]*Z/)) {\n        return 'atom'; //date\n      } else if (!state.lhs && (stream.match('true') || stream.match('false'))) {\n        return 'atom';\n      } else if (!state.lhs && stream.peek() === '[') {\n        state.inArray++;\n        stream.next();\n        return 'bracket';\n      } else if (!state.lhs && stream.match(/^\\-?\\d+(?:\\.\\d+)?/)) {\n        return 'number';\n      } else if (!stream.eatSpace()) {\n        stream.next();\n      }\n      return null;\n    }\n  };\n});\n\nCodeMirror.defineMIME('text/x-toml', 'toml');\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/tornado/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Tornado template mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/mode/overlay.js\"></script>\n<script src=\"../xml/xml.js\"></script>\n<script src=\"../htmlmixed/htmlmixed.js\"></script>\n<script src=\"tornado.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/marijnh/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Tornado</a>\n  </ul>\n</div>\n\n<article>\n<h2>Tornado template mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n<!doctype html>\n<html>\n    <head>\n        <title>My Tornado web application</title>\n    </head>\n    <body>\n        <h1>\n            {{ title }}\n        </h1>\n        <ul class=\"my-list\">\n            {% for item in items %}\n                <li>{% item.name %}</li>\n            {% empty %}\n                <li>You have no items in your list.</li>\n            {% end %}\n        </ul>\n    </body>\n</html>\n</textarea></form>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        mode: \"tornado\",\n        indentUnit: 4,\n        indentWithTabs: true\n      });\n    </script>\n\n    <p>Mode for HTML with embedded Tornado template markup.</p>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-tornado</code></p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/tornado/tornado.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../htmlmixed/htmlmixed\"),\n        require(\"../../addon/mode/overlay\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../htmlmixed/htmlmixed\",\n            \"../../addon/mode/overlay\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  CodeMirror.defineMode(\"tornado:inner\", function() {\n    var keywords = [\"and\",\"as\",\"assert\",\"autoescape\",\"block\",\"break\",\"class\",\"comment\",\"context\",\n                    \"continue\",\"datetime\",\"def\",\"del\",\"elif\",\"else\",\"end\",\"escape\",\"except\",\n                    \"exec\",\"extends\",\"false\",\"finally\",\"for\",\"from\",\"global\",\"if\",\"import\",\"in\",\n                    \"include\",\"is\",\"json_encode\",\"lambda\",\"length\",\"linkify\",\"load\",\"module\",\n                    \"none\",\"not\",\"or\",\"pass\",\"print\",\"put\",\"raise\",\"raw\",\"return\",\"self\",\"set\",\n                    \"squeeze\",\"super\",\"true\",\"try\",\"url_escape\",\"while\",\"with\",\"without\",\"xhtml_escape\",\"yield\"];\n    keywords = new RegExp(\"^((\" + keywords.join(\")|(\") + \"))\\\\b\");\n\n    function tokenBase (stream, state) {\n      stream.eatWhile(/[^\\{]/);\n      var ch = stream.next();\n      if (ch == \"{\") {\n        if (ch = stream.eat(/\\{|%|#/)) {\n          state.tokenize = inTag(ch);\n          return \"tag\";\n        }\n      }\n    }\n    function inTag (close) {\n      if (close == \"{\") {\n        close = \"}\";\n      }\n      return function (stream, state) {\n        var ch = stream.next();\n        if ((ch == close) && stream.eat(\"}\")) {\n          state.tokenize = tokenBase;\n          return \"tag\";\n        }\n        if (stream.match(keywords)) {\n          return \"keyword\";\n        }\n        return close == \"#\" ? \"comment\" : \"string\";\n      };\n    }\n    return {\n      startState: function () {\n        return {tokenize: tokenBase};\n      },\n      token: function (stream, state) {\n        return state.tokenize(stream, state);\n      }\n    };\n  });\n\n  CodeMirror.defineMode(\"tornado\", function(config) {\n    var htmlBase = CodeMirror.getMode(config, \"text/html\");\n    var tornadoInner = CodeMirror.getMode(config, \"tornado:inner\");\n    return CodeMirror.overlayMode(htmlBase, tornadoInner);\n  });\n\n  CodeMirror.defineMIME(\"text/x-tornado\", \"tornado\");\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/turtle/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Turtle mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"turtle.js\"></script>\n<style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Turtle</a>\n  </ul>\n</div>\n\n<article>\n<h2>Turtle mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n@prefix foaf: <http://xmlns.com/foaf/0.1/> .\n@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n\n<http://purl.org/net/bsletten> \n    a foaf:Person;\n    foaf:interest <http://www.w3.org/2000/01/sw/>;\n    foaf:based_near [\n        geo:lat \"34.0736111\" ;\n        geo:lon \"-118.3994444\"\n   ]\n\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: \"text/turtle\",\n        matchBrackets: true\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/turtle</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/turtle/turtle.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"turtle\", function(config) {\n  var indentUnit = config.indentUnit;\n  var curPunc;\n\n  function wordRegexp(words) {\n    return new RegExp(\"^(?:\" + words.join(\"|\") + \")$\", \"i\");\n  }\n  var ops = wordRegexp([]);\n  var keywords = wordRegexp([\"@prefix\", \"@base\", \"a\"]);\n  var operatorChars = /[*+\\-<>=&|]/;\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n    curPunc = null;\n    if (ch == \"<\" && !stream.match(/^[\\s\\u00a0=]/, false)) {\n      stream.match(/^[^\\s\\u00a0>]*>?/);\n      return \"atom\";\n    }\n    else if (ch == \"\\\"\" || ch == \"'\") {\n      state.tokenize = tokenLiteral(ch);\n      return state.tokenize(stream, state);\n    }\n    else if (/[{}\\(\\),\\.;\\[\\]]/.test(ch)) {\n      curPunc = ch;\n      return null;\n    }\n    else if (ch == \"#\") {\n      stream.skipToEnd();\n      return \"comment\";\n    }\n    else if (operatorChars.test(ch)) {\n      stream.eatWhile(operatorChars);\n      return null;\n    }\n    else if (ch == \":\") {\n          return \"operator\";\n        } else {\n      stream.eatWhile(/[_\\w\\d]/);\n      if(stream.peek() == \":\") {\n        return \"variable-3\";\n      } else {\n             var word = stream.current();\n\n             if(keywords.test(word)) {\n                        return \"meta\";\n             }\n\n             if(ch >= \"A\" && ch <= \"Z\") {\n                    return \"comment\";\n                 } else {\n                        return \"keyword\";\n                 }\n      }\n      var word = stream.current();\n      if (ops.test(word))\n        return null;\n      else if (keywords.test(word))\n        return \"meta\";\n      else\n        return \"variable\";\n    }\n  }\n\n  function tokenLiteral(quote) {\n    return function(stream, state) {\n      var escaped = false, ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == quote && !escaped) {\n          state.tokenize = tokenBase;\n          break;\n        }\n        escaped = !escaped && ch == \"\\\\\";\n      }\n      return \"string\";\n    };\n  }\n\n  function pushContext(state, type, col) {\n    state.context = {prev: state.context, indent: state.indent, col: col, type: type};\n  }\n  function popContext(state) {\n    state.indent = state.context.indent;\n    state.context = state.context.prev;\n  }\n\n  return {\n    startState: function() {\n      return {tokenize: tokenBase,\n              context: null,\n              indent: 0,\n              col: 0};\n    },\n\n    token: function(stream, state) {\n      if (stream.sol()) {\n        if (state.context && state.context.align == null) state.context.align = false;\n        state.indent = stream.indentation();\n      }\n      if (stream.eatSpace()) return null;\n      var style = state.tokenize(stream, state);\n\n      if (style != \"comment\" && state.context && state.context.align == null && state.context.type != \"pattern\") {\n        state.context.align = true;\n      }\n\n      if (curPunc == \"(\") pushContext(state, \")\", stream.column());\n      else if (curPunc == \"[\") pushContext(state, \"]\", stream.column());\n      else if (curPunc == \"{\") pushContext(state, \"}\", stream.column());\n      else if (/[\\]\\}\\)]/.test(curPunc)) {\n        while (state.context && state.context.type == \"pattern\") popContext(state);\n        if (state.context && curPunc == state.context.type) popContext(state);\n      }\n      else if (curPunc == \".\" && state.context && state.context.type == \"pattern\") popContext(state);\n      else if (/atom|string|variable/.test(style) && state.context) {\n        if (/[\\}\\]]/.test(state.context.type))\n          pushContext(state, \"pattern\", stream.column());\n        else if (state.context.type == \"pattern\" && !state.context.align) {\n          state.context.align = true;\n          state.context.col = stream.column();\n        }\n      }\n\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      var firstChar = textAfter && textAfter.charAt(0);\n      var context = state.context;\n      if (/[\\]\\}]/.test(firstChar))\n        while (context && context.type == \"pattern\") context = context.prev;\n\n      var closing = context && firstChar == context.type;\n      if (!context)\n        return 0;\n      else if (context.type == \"pattern\")\n        return context.col;\n      else if (context.align)\n        return context.col + (closing ? 0 : 1);\n      else\n        return context.indent + (closing ? 0 : indentUnit);\n    },\n\n    lineComment: \"#\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/turtle\", \"turtle\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/vb/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: VB.NET mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link href=\"http://fonts.googleapis.com/css?family=Inconsolata\" rel=\"stylesheet\" type=\"text/css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"vb.js\"></script>\n<script type=\"text/javascript\" src=\"../../addon/runmode/runmode.js\"></script>\n<style>\n      .CodeMirror {border: 1px solid #aaa; height:210px; height: auto;}\n      .CodeMirror-scroll { overflow-x: auto; overflow-y: hidden;}\n      .CodeMirror pre { font-family: Inconsolata; font-size: 14px}\n    </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">VB.NET</a>\n  </ul>\n</div>\n\n<article>\n<h2>VB.NET mode</h2>\n\n<script type=\"text/javascript\">\nfunction test(golden, text) {\n  var ok = true;\n  var i = 0;\n  function callback(token, style, lineNo, pos){\n\t\t//console.log(String(token) + \" \" + String(style) + \" \" + String(lineNo) + \" \" + String(pos));\n    var result = [String(token), String(style)];\n    if (golden[i][0] != result[0] || golden[i][1] != result[1]){\n      return \"Error, expected: \" + String(golden[i]) + \", got: \" + String(result);\n      ok = false;\n    }\n    i++;\n  }\n  CodeMirror.runMode(text, \"text/x-vb\",callback); \n\n  if (ok) return \"Tests OK\";\n}\nfunction testTypes() {\n  var golden = [['Integer','keyword'],[' ','null'],['Float','keyword']]\n  var text =  \"Integer Float\";\n  return test(golden,text);\n}\nfunction testIf(){\n  var golden = [['If','keyword'],[' ','null'],['True','keyword'],[' ','null'],['End','keyword'],[' ','null'],['If','keyword']];\n  var text = 'If True End If';\n  return test(golden, text);\n}\nfunction testDecl(){\n   var golden = [['Dim','keyword'],[' ','null'],['x','variable'],[' ','null'],['as','keyword'],[' ','null'],['Integer','keyword']];\n   var text = 'Dim x as Integer';\n   return test(golden, text);\n}\nfunction testAll(){\n  var result = \"\";\n\n  result += testTypes() + \"\\n\";\n  result += testIf() + \"\\n\";\n  result += testDecl() + \"\\n\";\n  return result;\n\n}\nfunction initText(editor) {\n  var content = 'Class rocket\\nPrivate quality as Double\\nPublic Sub launch() as String\\nif quality > 0.8\\nlaunch = \"Successful\"\\nElse\\nlaunch = \"Failed\"\\nEnd If\\nEnd sub\\nEnd class\\n';\n  editor.setValue(content);\n  for (var i =0; i< editor.lineCount(); i++) editor.indentLine(i);\n}\nfunction init() {\n    editor = CodeMirror.fromTextArea(document.getElementById(\"solution\"), {\n        lineNumbers: true,\n        mode: \"text/x-vb\",\n        readOnly: false\n    });\n    runTest();\n}\nfunction runTest() {\n\tdocument.getElementById('testresult').innerHTML = testAll();\n  initText(editor);\n\t\n}\ndocument.body.onload = init;\n</script>\n\n  <div id=\"edit\">\n  <textarea style=\"width:95%;height:200px;padding:5px;\" name=\"solution\" id=\"solution\" ></textarea>\n  </div>\n  <pre id=\"testresult\"></pre>\n  <p>MIME type defined: <code>text/x-vb</code>.</p>\n\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/vb/vb.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"vb\", function(conf, parserConf) {\n    var ERRORCLASS = 'error';\n\n    function wordRegexp(words) {\n        return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\", \"i\");\n    }\n\n    var singleOperators = new RegExp(\"^[\\\\+\\\\-\\\\*/%&\\\\\\\\|\\\\^~<>!]\");\n    var singleDelimiters = new RegExp('^[\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}@,:`=;\\\\.]');\n    var doubleOperators = new RegExp(\"^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\\\*\\\\*))\");\n    var doubleDelimiters = new RegExp(\"^((\\\\+=)|(\\\\-=)|(\\\\*=)|(%=)|(/=)|(&=)|(\\\\|=)|(\\\\^=))\");\n    var tripleDelimiters = new RegExp(\"^((//=)|(>>=)|(<<=)|(\\\\*\\\\*=))\");\n    var identifiers = new RegExp(\"^[_A-Za-z][_A-Za-z0-9]*\");\n\n    var openingKeywords = ['class','module', 'sub','enum','select','while','if','function',  'get','set','property', 'try'];\n    var middleKeywords = ['else','elseif','case', 'catch'];\n    var endKeywords = ['next','loop'];\n\n    var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'in']);\n    var commonkeywords = ['as', 'dim', 'break',  'continue','optional', 'then',  'until',\n                          'goto', 'byval','byref','new','handles','property', 'return',\n                          'const','private', 'protected', 'friend', 'public', 'shared', 'static', 'true','false'];\n    var commontypes = ['integer','string','double','decimal','boolean','short','char', 'float','single'];\n\n    var keywords = wordRegexp(commonkeywords);\n    var types = wordRegexp(commontypes);\n    var stringPrefixes = '\"';\n\n    var opening = wordRegexp(openingKeywords);\n    var middle = wordRegexp(middleKeywords);\n    var closing = wordRegexp(endKeywords);\n    var doubleClosing = wordRegexp(['end']);\n    var doOpening = wordRegexp(['do']);\n\n    var indentInfo = null;\n\n\n\n\n    function indent(_stream, state) {\n      state.currentIndent++;\n    }\n\n    function dedent(_stream, state) {\n      state.currentIndent--;\n    }\n    // tokenizers\n    function tokenBase(stream, state) {\n        if (stream.eatSpace()) {\n            return null;\n        }\n\n        var ch = stream.peek();\n\n        // Handle Comments\n        if (ch === \"'\") {\n            stream.skipToEnd();\n            return 'comment';\n        }\n\n\n        // Handle Number Literals\n        if (stream.match(/^((&H)|(&O))?[0-9\\.a-f]/i, false)) {\n            var floatLiteral = false;\n            // Floats\n            if (stream.match(/^\\d*\\.\\d+F?/i)) { floatLiteral = true; }\n            else if (stream.match(/^\\d+\\.\\d*F?/)) { floatLiteral = true; }\n            else if (stream.match(/^\\.\\d+F?/)) { floatLiteral = true; }\n\n            if (floatLiteral) {\n                // Float literals may be \"imaginary\"\n                stream.eat(/J/i);\n                return 'number';\n            }\n            // Integers\n            var intLiteral = false;\n            // Hex\n            if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; }\n            // Octal\n            else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; }\n            // Decimal\n            else if (stream.match(/^[1-9]\\d*F?/)) {\n                // Decimal literals may be \"imaginary\"\n                stream.eat(/J/i);\n                // TODO - Can you have imaginary longs?\n                intLiteral = true;\n            }\n            // Zero by itself with no other piece of number.\n            else if (stream.match(/^0(?![\\dx])/i)) { intLiteral = true; }\n            if (intLiteral) {\n                // Integer literals may be \"long\"\n                stream.eat(/L/i);\n                return 'number';\n            }\n        }\n\n        // Handle Strings\n        if (stream.match(stringPrefixes)) {\n            state.tokenize = tokenStringFactory(stream.current());\n            return state.tokenize(stream, state);\n        }\n\n        // Handle operators and Delimiters\n        if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) {\n            return null;\n        }\n        if (stream.match(doubleOperators)\n            || stream.match(singleOperators)\n            || stream.match(wordOperators)) {\n            return 'operator';\n        }\n        if (stream.match(singleDelimiters)) {\n            return null;\n        }\n        if (stream.match(doOpening)) {\n            indent(stream,state);\n            state.doInCurrentLine = true;\n            return 'keyword';\n        }\n        if (stream.match(opening)) {\n            if (! state.doInCurrentLine)\n              indent(stream,state);\n            else\n              state.doInCurrentLine = false;\n            return 'keyword';\n        }\n        if (stream.match(middle)) {\n            return 'keyword';\n        }\n\n        if (stream.match(doubleClosing)) {\n            dedent(stream,state);\n            dedent(stream,state);\n            return 'keyword';\n        }\n        if (stream.match(closing)) {\n            dedent(stream,state);\n            return 'keyword';\n        }\n\n        if (stream.match(types)) {\n            return 'keyword';\n        }\n\n        if (stream.match(keywords)) {\n            return 'keyword';\n        }\n\n        if (stream.match(identifiers)) {\n            return 'variable';\n        }\n\n        // Handle non-detected items\n        stream.next();\n        return ERRORCLASS;\n    }\n\n    function tokenStringFactory(delimiter) {\n        var singleline = delimiter.length == 1;\n        var OUTCLASS = 'string';\n\n        return function(stream, state) {\n            while (!stream.eol()) {\n                stream.eatWhile(/[^'\"]/);\n                if (stream.match(delimiter)) {\n                    state.tokenize = tokenBase;\n                    return OUTCLASS;\n                } else {\n                    stream.eat(/['\"]/);\n                }\n            }\n            if (singleline) {\n                if (parserConf.singleLineStringErrors) {\n                    return ERRORCLASS;\n                } else {\n                    state.tokenize = tokenBase;\n                }\n            }\n            return OUTCLASS;\n        };\n    }\n\n\n    function tokenLexer(stream, state) {\n        var style = state.tokenize(stream, state);\n        var current = stream.current();\n\n        // Handle '.' connected identifiers\n        if (current === '.') {\n            style = state.tokenize(stream, state);\n            current = stream.current();\n            if (style === 'variable') {\n                return 'variable';\n            } else {\n                return ERRORCLASS;\n            }\n        }\n\n\n        var delimiter_index = '[({'.indexOf(current);\n        if (delimiter_index !== -1) {\n            indent(stream, state );\n        }\n        if (indentInfo === 'dedent') {\n            if (dedent(stream, state)) {\n                return ERRORCLASS;\n            }\n        }\n        delimiter_index = '])}'.indexOf(current);\n        if (delimiter_index !== -1) {\n            if (dedent(stream, state)) {\n                return ERRORCLASS;\n            }\n        }\n\n        return style;\n    }\n\n    var external = {\n        electricChars:\"dDpPtTfFeE \",\n        startState: function() {\n            return {\n              tokenize: tokenBase,\n              lastToken: null,\n              currentIndent: 0,\n              nextLineIndent: 0,\n              doInCurrentLine: false\n\n\n          };\n        },\n\n        token: function(stream, state) {\n            if (stream.sol()) {\n              state.currentIndent += state.nextLineIndent;\n              state.nextLineIndent = 0;\n              state.doInCurrentLine = 0;\n            }\n            var style = tokenLexer(stream, state);\n\n            state.lastToken = {style:style, content: stream.current()};\n\n\n\n            return style;\n        },\n\n        indent: function(state, textAfter) {\n            var trueText = textAfter.replace(/^\\s+|\\s+$/g, '') ;\n            if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1);\n            if(state.currentIndent < 0) return 0;\n            return state.currentIndent * conf.indentUnit;\n        }\n\n    };\n    return external;\n});\n\nCodeMirror.defineMIME(\"text/x-vb\", \"vb\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/vbscript/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: VBScript mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"vbscript.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">VBScript</a>\n  </ul>\n</div>\n\n<article>\n<h2>VBScript mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\n' Pete Guhl\n' 03-04-2012\n'\n' Basic VBScript support for codemirror2\n\nConst ForReading = 1, ForWriting = 2, ForAppending = 8\n\nCall Sub020_PostBroadcastToUrbanAirship(strUserName, strPassword, intTransmitID, strResponse)\n\nIf Not IsNull(strResponse) AND Len(strResponse) = 0 Then\n\tboolTransmitOkYN = False\nElse\n\t' WScript.Echo \"Oh Happy Day! Oh Happy DAY!\"\n\tboolTransmitOkYN = True\nEnd If\n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        indentUnit: 4\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/vbscript</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/vbscript/vbscript.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n/*\nFor extra ASP classic objects, initialize CodeMirror instance with this option:\n    isASP: true\n\nE.G.:\n    var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        isASP: true\n      });\n*/\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"vbscript\", function(conf, parserConf) {\n    var ERRORCLASS = 'error';\n\n    function wordRegexp(words) {\n        return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\", \"i\");\n    }\n\n    var singleOperators = new RegExp(\"^[\\\\+\\\\-\\\\*/&\\\\\\\\\\\\^<>=]\");\n    var doubleOperators = new RegExp(\"^((<>)|(<=)|(>=))\");\n    var singleDelimiters = new RegExp('^[\\\\.,]');\n    var brakets = new RegExp('^[\\\\(\\\\)]');\n    var identifiers = new RegExp(\"^[A-Za-z][_A-Za-z0-9]*\");\n\n    var openingKeywords = ['class','sub','select','while','if','function', 'property', 'with', 'for'];\n    var middleKeywords = ['else','elseif','case'];\n    var endKeywords = ['next','loop','wend'];\n\n    var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'is', 'mod', 'eqv', 'imp']);\n    var commonkeywords = ['dim', 'redim', 'then',  'until', 'randomize',\n                          'byval','byref','new','property', 'exit', 'in',\n                          'const','private', 'public',\n                          'get','set','let', 'stop', 'on error resume next', 'on error goto 0', 'option explicit', 'call', 'me'];\n\n    //This list was from: http://msdn.microsoft.com/en-us/library/f8tbc79x(v=vs.84).aspx\n    var atomWords = ['true', 'false', 'nothing', 'empty', 'null'];\n    //This list was from: http://msdn.microsoft.com/en-us/library/3ca8tfek(v=vs.84).aspx\n    var builtinFuncsWords = ['abs', 'array', 'asc', 'atn', 'cbool', 'cbyte', 'ccur', 'cdate', 'cdbl', 'chr', 'cint', 'clng', 'cos', 'csng', 'cstr', 'date', 'dateadd', 'datediff', 'datepart',\n                        'dateserial', 'datevalue', 'day', 'escape', 'eval', 'execute', 'exp', 'filter', 'formatcurrency', 'formatdatetime', 'formatnumber', 'formatpercent', 'getlocale', 'getobject',\n                        'getref', 'hex', 'hour', 'inputbox', 'instr', 'instrrev', 'int', 'fix', 'isarray', 'isdate', 'isempty', 'isnull', 'isnumeric', 'isobject', 'join', 'lbound', 'lcase', 'left',\n                        'len', 'loadpicture', 'log', 'ltrim', 'rtrim', 'trim', 'maths', 'mid', 'minute', 'month', 'monthname', 'msgbox', 'now', 'oct', 'replace', 'rgb', 'right', 'rnd', 'round',\n                        'scriptengine', 'scriptenginebuildversion', 'scriptenginemajorversion', 'scriptengineminorversion', 'second', 'setlocale', 'sgn', 'sin', 'space', 'split', 'sqr', 'strcomp',\n                        'string', 'strreverse', 'tan', 'time', 'timer', 'timeserial', 'timevalue', 'typename', 'ubound', 'ucase', 'unescape', 'vartype', 'weekday', 'weekdayname', 'year'];\n\n    //This list was from: http://msdn.microsoft.com/en-us/library/ydz4cfk3(v=vs.84).aspx\n    var builtinConsts = ['vbBlack', 'vbRed', 'vbGreen', 'vbYellow', 'vbBlue', 'vbMagenta', 'vbCyan', 'vbWhite', 'vbBinaryCompare', 'vbTextCompare',\n                         'vbSunday', 'vbMonday', 'vbTuesday', 'vbWednesday', 'vbThursday', 'vbFriday', 'vbSaturday', 'vbUseSystemDayOfWeek', 'vbFirstJan1', 'vbFirstFourDays', 'vbFirstFullWeek',\n                         'vbGeneralDate', 'vbLongDate', 'vbShortDate', 'vbLongTime', 'vbShortTime', 'vbObjectError',\n                         'vbOKOnly', 'vbOKCancel', 'vbAbortRetryIgnore', 'vbYesNoCancel', 'vbYesNo', 'vbRetryCancel', 'vbCritical', 'vbQuestion', 'vbExclamation', 'vbInformation', 'vbDefaultButton1', 'vbDefaultButton2',\n                         'vbDefaultButton3', 'vbDefaultButton4', 'vbApplicationModal', 'vbSystemModal', 'vbOK', 'vbCancel', 'vbAbort', 'vbRetry', 'vbIgnore', 'vbYes', 'vbNo',\n                         'vbCr', 'VbCrLf', 'vbFormFeed', 'vbLf', 'vbNewLine', 'vbNullChar', 'vbNullString', 'vbTab', 'vbVerticalTab', 'vbUseDefault', 'vbTrue', 'vbFalse',\n                         'vbEmpty', 'vbNull', 'vbInteger', 'vbLong', 'vbSingle', 'vbDouble', 'vbCurrency', 'vbDate', 'vbString', 'vbObject', 'vbError', 'vbBoolean', 'vbVariant', 'vbDataObject', 'vbDecimal', 'vbByte', 'vbArray'];\n    //This list was from: http://msdn.microsoft.com/en-us/library/hkc375ea(v=vs.84).aspx\n    var builtinObjsWords = ['WScript', 'err', 'debug', 'RegExp'];\n    var knownProperties = ['description', 'firstindex', 'global', 'helpcontext', 'helpfile', 'ignorecase', 'length', 'number', 'pattern', 'source', 'value', 'count'];\n    var knownMethods = ['clear', 'execute', 'raise', 'replace', 'test', 'write', 'writeline', 'close', 'open', 'state', 'eof', 'update', 'addnew', 'end', 'createobject', 'quit'];\n\n    var aspBuiltinObjsWords = ['server', 'response', 'request', 'session', 'application'];\n    var aspKnownProperties = ['buffer', 'cachecontrol', 'charset', 'contenttype', 'expires', 'expiresabsolute', 'isclientconnected', 'pics', 'status', //response\n                              'clientcertificate', 'cookies', 'form', 'querystring', 'servervariables', 'totalbytes', //request\n                              'contents', 'staticobjects', //application\n                              'codepage', 'lcid', 'sessionid', 'timeout', //session\n                              'scripttimeout']; //server\n    var aspKnownMethods = ['addheader', 'appendtolog', 'binarywrite', 'end', 'flush', 'redirect', //response\n                           'binaryread', //request\n                           'remove', 'removeall', 'lock', 'unlock', //application\n                           'abandon', //session\n                           'getlasterror', 'htmlencode', 'mappath', 'transfer', 'urlencode']; //server\n\n    var knownWords = knownMethods.concat(knownProperties);\n\n    builtinObjsWords = builtinObjsWords.concat(builtinConsts);\n\n    if (conf.isASP){\n        builtinObjsWords = builtinObjsWords.concat(aspBuiltinObjsWords);\n        knownWords = knownWords.concat(aspKnownMethods, aspKnownProperties);\n    };\n\n    var keywords = wordRegexp(commonkeywords);\n    var atoms = wordRegexp(atomWords);\n    var builtinFuncs = wordRegexp(builtinFuncsWords);\n    var builtinObjs = wordRegexp(builtinObjsWords);\n    var known = wordRegexp(knownWords);\n    var stringPrefixes = '\"';\n\n    var opening = wordRegexp(openingKeywords);\n    var middle = wordRegexp(middleKeywords);\n    var closing = wordRegexp(endKeywords);\n    var doubleClosing = wordRegexp(['end']);\n    var doOpening = wordRegexp(['do']);\n    var noIndentWords = wordRegexp(['on error resume next', 'exit']);\n    var comment = wordRegexp(['rem']);\n\n\n    function indent(_stream, state) {\n      state.currentIndent++;\n    }\n\n    function dedent(_stream, state) {\n      state.currentIndent--;\n    }\n    // tokenizers\n    function tokenBase(stream, state) {\n        if (stream.eatSpace()) {\n            return 'space';\n            //return null;\n        }\n\n        var ch = stream.peek();\n\n        // Handle Comments\n        if (ch === \"'\") {\n            stream.skipToEnd();\n            return 'comment';\n        }\n        if (stream.match(comment)){\n            stream.skipToEnd();\n            return 'comment';\n        }\n\n\n        // Handle Number Literals\n        if (stream.match(/^((&H)|(&O))?[0-9\\.]/i, false) && !stream.match(/^((&H)|(&O))?[0-9\\.]+[a-z_]/i, false)) {\n            var floatLiteral = false;\n            // Floats\n            if (stream.match(/^\\d*\\.\\d+/i)) { floatLiteral = true; }\n            else if (stream.match(/^\\d+\\.\\d*/)) { floatLiteral = true; }\n            else if (stream.match(/^\\.\\d+/)) { floatLiteral = true; }\n\n            if (floatLiteral) {\n                // Float literals may be \"imaginary\"\n                stream.eat(/J/i);\n                return 'number';\n            }\n            // Integers\n            var intLiteral = false;\n            // Hex\n            if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; }\n            // Octal\n            else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; }\n            // Decimal\n            else if (stream.match(/^[1-9]\\d*F?/)) {\n                // Decimal literals may be \"imaginary\"\n                stream.eat(/J/i);\n                // TODO - Can you have imaginary longs?\n                intLiteral = true;\n            }\n            // Zero by itself with no other piece of number.\n            else if (stream.match(/^0(?![\\dx])/i)) { intLiteral = true; }\n            if (intLiteral) {\n                // Integer literals may be \"long\"\n                stream.eat(/L/i);\n                return 'number';\n            }\n        }\n\n        // Handle Strings\n        if (stream.match(stringPrefixes)) {\n            state.tokenize = tokenStringFactory(stream.current());\n            return state.tokenize(stream, state);\n        }\n\n        // Handle operators and Delimiters\n        if (stream.match(doubleOperators)\n            || stream.match(singleOperators)\n            || stream.match(wordOperators)) {\n            return 'operator';\n        }\n        if (stream.match(singleDelimiters)) {\n            return null;\n        }\n\n        if (stream.match(brakets)) {\n            return \"bracket\";\n        }\n\n        if (stream.match(noIndentWords)) {\n            state.doInCurrentLine = true;\n\n            return 'keyword';\n        }\n\n        if (stream.match(doOpening)) {\n            indent(stream,state);\n            state.doInCurrentLine = true;\n\n            return 'keyword';\n        }\n        if (stream.match(opening)) {\n            if (! state.doInCurrentLine)\n              indent(stream,state);\n            else\n              state.doInCurrentLine = false;\n\n            return 'keyword';\n        }\n        if (stream.match(middle)) {\n            return 'keyword';\n        }\n\n\n        if (stream.match(doubleClosing)) {\n            dedent(stream,state);\n            dedent(stream,state);\n\n            return 'keyword';\n        }\n        if (stream.match(closing)) {\n            if (! state.doInCurrentLine)\n              dedent(stream,state);\n            else\n              state.doInCurrentLine = false;\n\n            return 'keyword';\n        }\n\n        if (stream.match(keywords)) {\n            return 'keyword';\n        }\n\n        if (stream.match(atoms)) {\n            return 'atom';\n        }\n\n        if (stream.match(known)) {\n            return 'variable-2';\n        }\n\n        if (stream.match(builtinFuncs)) {\n            return 'builtin';\n        }\n\n        if (stream.match(builtinObjs)){\n            return 'variable-2';\n        }\n\n        if (stream.match(identifiers)) {\n            return 'variable';\n        }\n\n        // Handle non-detected items\n        stream.next();\n        return ERRORCLASS;\n    }\n\n    function tokenStringFactory(delimiter) {\n        var singleline = delimiter.length == 1;\n        var OUTCLASS = 'string';\n\n        return function(stream, state) {\n            while (!stream.eol()) {\n                stream.eatWhile(/[^'\"]/);\n                if (stream.match(delimiter)) {\n                    state.tokenize = tokenBase;\n                    return OUTCLASS;\n                } else {\n                    stream.eat(/['\"]/);\n                }\n            }\n            if (singleline) {\n                if (parserConf.singleLineStringErrors) {\n                    return ERRORCLASS;\n                } else {\n                    state.tokenize = tokenBase;\n                }\n            }\n            return OUTCLASS;\n        };\n    }\n\n\n    function tokenLexer(stream, state) {\n        var style = state.tokenize(stream, state);\n        var current = stream.current();\n\n        // Handle '.' connected identifiers\n        if (current === '.') {\n            style = state.tokenize(stream, state);\n\n            current = stream.current();\n            if (style && (style.substr(0, 8) === 'variable' || style==='builtin' || style==='keyword')){//|| knownWords.indexOf(current.substring(1)) > -1) {\n                if (style === 'builtin' || style === 'keyword') style='variable';\n                if (knownWords.indexOf(current.substr(1)) > -1) style='variable-2';\n\n                return style;\n            } else {\n                return ERRORCLASS;\n            }\n        }\n\n        return style;\n    }\n\n    var external = {\n        electricChars:\"dDpPtTfFeE \",\n        startState: function() {\n            return {\n              tokenize: tokenBase,\n              lastToken: null,\n              currentIndent: 0,\n              nextLineIndent: 0,\n              doInCurrentLine: false,\n              ignoreKeyword: false\n\n\n          };\n        },\n\n        token: function(stream, state) {\n            if (stream.sol()) {\n              state.currentIndent += state.nextLineIndent;\n              state.nextLineIndent = 0;\n              state.doInCurrentLine = 0;\n            }\n            var style = tokenLexer(stream, state);\n\n            state.lastToken = {style:style, content: stream.current()};\n\n            if (style==='space') style=null;\n\n            return style;\n        },\n\n        indent: function(state, textAfter) {\n            var trueText = textAfter.replace(/^\\s+|\\s+$/g, '') ;\n            if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1);\n            if(state.currentIndent < 0) return 0;\n            return state.currentIndent * conf.indentUnit;\n        }\n\n    };\n    return external;\n});\n\nCodeMirror.defineMIME(\"text/vbscript\", \"vbscript\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/velocity/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Velocity mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../theme/night.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"velocity.js\"></script>\n<style>.CodeMirror {border: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Velocity</a>\n  </ul>\n</div>\n\n<article>\n<h2>Velocity mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n## Velocity Code Demo\n#*\n   based on PL/SQL mode by Peter Raganitsch, adapted to Velocity by Steve O'Hara ( http://www.pivotal-solutions.co.uk )\n   August 2011\n*#\n\n#*\n   This is a multiline comment.\n   This is the second line\n*#\n\n#[[ hello steve\n   This has invalid syntax that would normally need \"poor man's escaping\" like:\n\n   #define()\n\n   ${blah\n]]#\n\n#include( \"disclaimer.txt\" \"opinion.txt\" )\n#include( $foo $bar )\n\n#parse( \"lecorbusier.vm\" )\n#parse( $foo )\n\n#evaluate( 'string with VTL #if(true)will be displayed#end' )\n\n#define( $hello ) Hello $who #end #set( $who = \"World!\") $hello ## displays Hello World!\n\n#foreach( $customer in $customerList )\n\n    $foreach.count $customer.Name\n\n    #if( $foo == ${bar})\n        it's true!\n        #break\n    #{else}\n        it's not!\n        #stop\n    #end\n\n    #if ($foreach.parent.hasNext)\n        $velocityCount\n    #end\n#end\n\n$someObject.getValues(\"this is a string split\n        across lines\")\n\n$someObject(\"This plus $something in the middle\").method(7567).property\n\n#macro( tablerows $color $somelist )\n    #foreach( $something in $somelist )\n        <tr><td bgcolor=$color>$something</td></tr>\n        <tr><td bgcolor=$color>$bodyContent</td></tr>\n    #end\n#end\n\n#tablerows(\"red\" [\"dadsdf\",\"dsa\"])\n#@tablerows(\"red\" [\"dadsdf\",\"dsa\"]) some body content #end\n\n   Variable reference: #set( $monkey = $bill )\n   String literal: #set( $monkey.Friend = 'monica' )\n   Property reference: #set( $monkey.Blame = $whitehouse.Leak )\n   Method reference: #set( $monkey.Plan = $spindoctor.weave($web) )\n   Number literal: #set( $monkey.Number = 123 )\n   Range operator: #set( $monkey.Numbers = [1..3] )\n   Object list: #set( $monkey.Say = [\"Not\", $my, \"fault\"] )\n   Object map: #set( $monkey.Map = {\"banana\" : \"good\", \"roast beef\" : \"bad\"})\n\nThe RHS can also be a simple arithmetic expression, such as:\nAddition: #set( $value = $foo + 1 )\n   Subtraction: #set( $value = $bar - 1 )\n   Multiplication: #set( $value = $foo * $bar )\n   Division: #set( $value = $foo / $bar )\n   Remainder: #set( $value = $foo % $bar )\n\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        theme: \"night\",\n        lineNumbers: true,\n        indentUnit: 4,\n        mode: \"text/velocity\"\n      });\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/velocity</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/velocity/velocity.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"velocity\", function() {\n    function parseWords(str) {\n        var obj = {}, words = str.split(\" \");\n        for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n        return obj;\n    }\n\n    var keywords = parseWords(\"#end #else #break #stop #[[ #]] \" +\n                              \"#{end} #{else} #{break} #{stop}\");\n    var functions = parseWords(\"#if #elseif #foreach #set #include #parse #macro #define #evaluate \" +\n                               \"#{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}\");\n    var specials = parseWords(\"$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent\");\n    var isOperatorChar = /[+\\-*&%=<>!?:\\/|]/;\n\n    function chain(stream, state, f) {\n        state.tokenize = f;\n        return f(stream, state);\n    }\n    function tokenBase(stream, state) {\n        var beforeParams = state.beforeParams;\n        state.beforeParams = false;\n        var ch = stream.next();\n        // start of unparsed string?\n        if ((ch == \"'\") && state.inParams) {\n            state.lastTokenWasBuiltin = false;\n            return chain(stream, state, tokenString(ch));\n        }\n        // start of parsed string?\n        else if ((ch == '\"')) {\n            state.lastTokenWasBuiltin = false;\n            if (state.inString) {\n                state.inString = false;\n                return \"string\";\n            }\n            else if (state.inParams)\n                return chain(stream, state, tokenString(ch));\n        }\n        // is it one of the special signs []{}().,;? Seperator?\n        else if (/[\\[\\]{}\\(\\),;\\.]/.test(ch)) {\n            if (ch == \"(\" && beforeParams)\n                state.inParams = true;\n            else if (ch == \")\") {\n                state.inParams = false;\n                state.lastTokenWasBuiltin = true;\n            }\n            return null;\n        }\n        // start of a number value?\n        else if (/\\d/.test(ch)) {\n            state.lastTokenWasBuiltin = false;\n            stream.eatWhile(/[\\w\\.]/);\n            return \"number\";\n        }\n        // multi line comment?\n        else if (ch == \"#\" && stream.eat(\"*\")) {\n            state.lastTokenWasBuiltin = false;\n            return chain(stream, state, tokenComment);\n        }\n        // unparsed content?\n        else if (ch == \"#\" && stream.match(/ *\\[ *\\[/)) {\n            state.lastTokenWasBuiltin = false;\n            return chain(stream, state, tokenUnparsed);\n        }\n        // single line comment?\n        else if (ch == \"#\" && stream.eat(\"#\")) {\n            state.lastTokenWasBuiltin = false;\n            stream.skipToEnd();\n            return \"comment\";\n        }\n        // variable?\n        else if (ch == \"$\") {\n            stream.eatWhile(/[\\w\\d\\$_\\.{}]/);\n            // is it one of the specials?\n            if (specials && specials.propertyIsEnumerable(stream.current())) {\n                return \"keyword\";\n            }\n            else {\n                state.lastTokenWasBuiltin = true;\n                state.beforeParams = true;\n                return \"builtin\";\n            }\n        }\n        // is it a operator?\n        else if (isOperatorChar.test(ch)) {\n            state.lastTokenWasBuiltin = false;\n            stream.eatWhile(isOperatorChar);\n            return \"operator\";\n        }\n        else {\n            // get the whole word\n            stream.eatWhile(/[\\w\\$_{}@]/);\n            var word = stream.current();\n            // is it one of the listed keywords?\n            if (keywords && keywords.propertyIsEnumerable(word))\n                return \"keyword\";\n            // is it one of the listed functions?\n            if (functions && functions.propertyIsEnumerable(word) ||\n                    (stream.current().match(/^#@?[a-z0-9_]+ *$/i) && stream.peek()==\"(\") &&\n                     !(functions && functions.propertyIsEnumerable(word.toLowerCase()))) {\n                state.beforeParams = true;\n                state.lastTokenWasBuiltin = false;\n                return \"keyword\";\n            }\n            if (state.inString) {\n                state.lastTokenWasBuiltin = false;\n                return \"string\";\n            }\n            if (stream.pos > word.length && stream.string.charAt(stream.pos-word.length-1)==\".\" && state.lastTokenWasBuiltin)\n                return \"builtin\";\n            // default: just a \"word\"\n            state.lastTokenWasBuiltin = false;\n            return null;\n        }\n    }\n\n    function tokenString(quote) {\n        return function(stream, state) {\n            var escaped = false, next, end = false;\n            while ((next = stream.next()) != null) {\n                if ((next == quote) && !escaped) {\n                    end = true;\n                    break;\n                }\n                if (quote=='\"' && stream.peek() == '$' && !escaped) {\n                    state.inString = true;\n                    end = true;\n                    break;\n                }\n                escaped = !escaped && next == \"\\\\\";\n            }\n            if (end) state.tokenize = tokenBase;\n            return \"string\";\n        };\n    }\n\n    function tokenComment(stream, state) {\n        var maybeEnd = false, ch;\n        while (ch = stream.next()) {\n            if (ch == \"#\" && maybeEnd) {\n                state.tokenize = tokenBase;\n                break;\n            }\n            maybeEnd = (ch == \"*\");\n        }\n        return \"comment\";\n    }\n\n    function tokenUnparsed(stream, state) {\n        var maybeEnd = 0, ch;\n        while (ch = stream.next()) {\n            if (ch == \"#\" && maybeEnd == 2) {\n                state.tokenize = tokenBase;\n                break;\n            }\n            if (ch == \"]\")\n                maybeEnd++;\n            else if (ch != \" \")\n                maybeEnd = 0;\n        }\n        return \"meta\";\n    }\n    // Interface\n\n    return {\n        startState: function() {\n            return {\n                tokenize: tokenBase,\n                beforeParams: false,\n                inParams: false,\n                inString: false,\n                lastTokenWasBuiltin: false\n            };\n        },\n\n        token: function(stream, state) {\n            if (stream.eatSpace()) return null;\n            return state.tokenize(stream, state);\n        },\n        blockCommentStart: \"#*\",\n        blockCommentEnd: \"*#\",\n        lineComment: \"##\",\n        fold: \"velocity\"\n    };\n});\n\nCodeMirror.defineMIME(\"text/velocity\", \"velocity\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/verilog/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Verilog/SystemVerilog mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"../../addon/edit/matchbrackets.js\"></script>\n<script src=\"verilog.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Verilog/SystemVerilog</a>\n  </ul>\n</div>\n\n<article>\n<h2>SystemVerilog mode</h2>\n\n<div><textarea id=\"code\" name=\"code\">\n// Literals\n1'b0\n1'bx\n1'bz\n16'hDC78\n'hdeadbeef\n'b0011xxzz\n1234\n32'd5678\n3.4e6\n-128.7\n\n// Macro definition\n`define BUS_WIDTH = 8;\n\n// Module definition\nmodule block(\n  input                   clk,\n  input                   rst_n,\n  input  [`BUS_WIDTH-1:0] data_in,\n  output [`BUS_WIDTH-1:0] data_out\n);\n  \n  always @(posedge clk or negedge rst_n) begin\n\n    if (~rst_n) begin\n      data_out <= 8'b0;\n    end else begin\n      data_out <= data_in;\n    end\n    \n    if (~rst_n)\n      data_out <= 8'b0;\n    else\n      data_out <= data_in;\n    \n    if (~rst_n)\n      begin\n        data_out <= 8'b0;\n      end\n    else\n      begin\n        data_out <= data_in;\n      end\n\n  end\n  \nendmodule\n\n// Class definition\nclass test;\n\n  /**\n   * Sum two integers\n   */\n  function int sum(int a, int b);\n    int result = a + b;\n    string msg = $sformatf(\"%d + %d = %d\", a, b, result);\n    $display(msg);\n    return result;\n  endfunction\n  \n  task delay(int num_cycles);\n    repeat(num_cycles) #1;\n  endtask\n  \nendclass\n\n</textarea></div>\n\n<script>\n  var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n    lineNumbers: true,\n    matchBrackets: true,\n    mode: {\n      name: \"verilog\",\n      noIndentKeywords: [\"package\"]\n    }\n  });\n</script>\n\n<p>\nSyntax highlighting and indentation for the Verilog and SystemVerilog languages (IEEE 1800).\n<h2>Configuration options:</h2>\n  <ul>\n    <li><strong>noIndentKeywords</strong> - List of keywords which should not cause identation to increase. E.g. [\"package\", \"module\"]. Default: None</li>\n  </ul>\n</p>\n\n<p><strong>MIME types defined:</strong> <code>text/x-verilog</code> and <code>text/x-systemverilog</code>.</p>\n</article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/verilog/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  var mode = CodeMirror.getMode({indentUnit: 4}, \"verilog\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }\n\n  MT(\"binary_literals\",\n     \"[number 1'b0]\",\n     \"[number 1'b1]\",\n     \"[number 1'bx]\",\n     \"[number 1'bz]\",\n     \"[number 1'bX]\",\n     \"[number 1'bZ]\",\n     \"[number 1'B0]\",\n     \"[number 1'B1]\",\n     \"[number 1'Bx]\",\n     \"[number 1'Bz]\",\n     \"[number 1'BX]\",\n     \"[number 1'BZ]\",\n     \"[number 1'b0]\",\n     \"[number 1'b1]\",\n     \"[number 2'b01]\",\n     \"[number 2'bxz]\",\n     \"[number 2'b11]\",\n     \"[number 2'b10]\",\n     \"[number 2'b1Z]\",\n     \"[number 12'b0101_0101_0101]\",\n     \"[number 1'b 0]\",\n     \"[number 'b0101]\"\n  );\n\n  MT(\"octal_literals\",\n     \"[number 3'o7]\",\n     \"[number 3'O7]\",\n     \"[number 3'so7]\",\n     \"[number 3'SO7]\"\n  );\n\n  MT(\"decimal_literals\",\n     \"[number 0]\",\n     \"[number 1]\",\n     \"[number 7]\",\n     \"[number 123_456]\",\n     \"[number 'd33]\",\n     \"[number 8'd255]\",\n     \"[number 8'D255]\",\n     \"[number 8'sd255]\",\n     \"[number 8'SD255]\",\n     \"[number 32'd123]\",\n     \"[number 32 'd123]\",\n     \"[number 32 'd 123]\"\n  );\n\n  MT(\"hex_literals\",\n     \"[number 4'h0]\",\n     \"[number 4'ha]\",\n     \"[number 4'hF]\",\n     \"[number 4'hx]\",\n     \"[number 4'hz]\",\n     \"[number 4'hX]\",\n     \"[number 4'hZ]\",\n     \"[number 32'hdc78]\",\n     \"[number 32'hDC78]\",\n     \"[number 32 'hDC78]\",\n     \"[number 32'h DC78]\",\n     \"[number 32 'h DC78]\",\n     \"[number 32'h44x7]\",\n     \"[number 32'hFFF?]\"\n  );\n\n  MT(\"real_number_literals\",\n     \"[number 1.2]\",\n     \"[number 0.1]\",\n     \"[number 2394.26331]\",\n     \"[number 1.2E12]\",\n     \"[number 1.2e12]\",\n     \"[number 1.30e-2]\",\n     \"[number 0.1e-0]\",\n     \"[number 23E10]\",\n     \"[number 29E-2]\",\n     \"[number 236.123_763_e-12]\"\n  );\n\n  MT(\"operators\",\n     \"[meta ^]\"\n  );\n\n  MT(\"keywords\",\n     \"[keyword logic]\",\n     \"[keyword logic] [variable foo]\",\n     \"[keyword reg] [variable abc]\"\n  );\n\n  MT(\"variables\",\n     \"[variable _leading_underscore]\",\n     \"[variable _if]\",\n     \"[number 12] [variable foo]\",\n     \"[variable foo] [number 14]\"\n  );\n\n  MT(\"tick_defines\",\n     \"[def `FOO]\",\n     \"[def `foo]\",\n     \"[def `FOO_bar]\"\n  );\n\n  MT(\"system_calls\",\n     \"[meta $display]\",\n     \"[meta $vpi_printf]\"\n  );\n\n  MT(\"line_comment\", \"[comment // Hello world]\");\n\n  // Alignment tests\n  MT(\"align_port_map_style1\",\n     /**\n      * mod mod(.a(a),\n      *         .b(b)\n      *        );\n      */\n     \"[variable mod] [variable mod][bracket (].[variable a][bracket (][variable a][bracket )],\",\n     \"        .[variable b][bracket (][variable b][bracket )]\",\n     \"       [bracket )];\",\n     \"\"\n  );\n\n  MT(\"align_port_map_style2\",\n     /**\n      * mod mod(\n      *     .a(a),\n      *     .b(b)\n      * );\n      */\n     \"[variable mod] [variable mod][bracket (]\",\n     \"    .[variable a][bracket (][variable a][bracket )],\",\n     \"    .[variable b][bracket (][variable b][bracket )]\",\n     \"[bracket )];\",\n     \"\"\n  );\n\n  // Indentation tests\n  MT(\"indent_single_statement_if\",\n      \"[keyword if] [bracket (][variable foo][bracket )]\",\n      \"    [keyword break];\",\n      \"\"\n  );\n\n  MT(\"no_indent_after_single_line_if\",\n      \"[keyword if] [bracket (][variable foo][bracket )] [keyword break];\",\n      \"\"\n  );\n\n  MT(\"indent_after_if_begin_same_line\",\n      \"[keyword if] [bracket (][variable foo][bracket )] [keyword begin]\",\n      \"    [keyword break];\",\n      \"    [keyword break];\",\n      \"[keyword end]\",\n      \"\"\n  );\n\n  MT(\"indent_after_if_begin_next_line\",\n      \"[keyword if] [bracket (][variable foo][bracket )]\",\n      \"    [keyword begin]\",\n      \"        [keyword break];\",\n      \"        [keyword break];\",\n      \"    [keyword end]\",\n      \"\"\n  );\n\n  MT(\"indent_single_statement_if_else\",\n      \"[keyword if] [bracket (][variable foo][bracket )]\",\n      \"    [keyword break];\",\n      \"[keyword else]\",\n      \"    [keyword break];\",\n      \"\"\n  );\n\n  MT(\"indent_if_else_begin_same_line\",\n      \"[keyword if] [bracket (][variable foo][bracket )] [keyword begin]\",\n      \"    [keyword break];\",\n      \"    [keyword break];\",\n      \"[keyword end] [keyword else] [keyword begin]\",\n      \"    [keyword break];\",\n      \"    [keyword break];\",\n      \"[keyword end]\",\n      \"\"\n  );\n\n  MT(\"indent_if_else_begin_next_line\",\n      \"[keyword if] [bracket (][variable foo][bracket )]\",\n      \"    [keyword begin]\",\n      \"        [keyword break];\",\n      \"        [keyword break];\",\n      \"    [keyword end]\",\n      \"[keyword else]\",\n      \"    [keyword begin]\",\n      \"        [keyword break];\",\n      \"        [keyword break];\",\n      \"    [keyword end]\",\n      \"\"\n  );\n\n  MT(\"indent_if_nested_without_begin\",\n      \"[keyword if] [bracket (][variable foo][bracket )]\",\n      \"    [keyword if] [bracket (][variable foo][bracket )]\",\n      \"        [keyword if] [bracket (][variable foo][bracket )]\",\n      \"            [keyword break];\",\n      \"\"\n  );\n\n  MT(\"indent_case\",\n      \"[keyword case] [bracket (][variable state][bracket )]\",\n      \"    [variable FOO]:\",\n      \"        [keyword break];\",\n      \"    [variable BAR]:\",\n      \"        [keyword break];\",\n      \"[keyword endcase]\",\n      \"\"\n  );\n\n  MT(\"unindent_after_end_with_preceding_text\",\n      \"[keyword begin]\",\n      \"    [keyword break]; [keyword end]\",\n      \"\"\n  );\n\n  MT(\"export_function_one_line_does_not_indent\",\n     \"[keyword export] [string \\\"DPI-C\\\"] [keyword function] [variable helloFromSV];\",\n     \"\"\n  );\n\n  MT(\"export_task_one_line_does_not_indent\",\n     \"[keyword export] [string \\\"DPI-C\\\"] [keyword task] [variable helloFromSV];\",\n     \"\"\n  );\n\n  MT(\"export_function_two_lines_indents_properly\",\n    \"[keyword export]\",\n    \"    [string \\\"DPI-C\\\"] [keyword function] [variable helloFromSV];\",\n    \"\"\n  );\n\n  MT(\"export_task_two_lines_indents_properly\",\n    \"[keyword export]\",\n    \"    [string \\\"DPI-C\\\"] [keyword task] [variable helloFromSV];\",\n    \"\"\n  );\n\n  MT(\"import_function_one_line_does_not_indent\",\n    \"[keyword import] [string \\\"DPI-C\\\"] [keyword function] [variable helloFromC];\",\n    \"\"\n  );\n\n  MT(\"import_task_one_line_does_not_indent\",\n    \"[keyword import] [string \\\"DPI-C\\\"] [keyword task] [variable helloFromC];\",\n    \"\"\n  );\n\n  MT(\"import_package_single_line_does_not_indent\",\n    \"[keyword import] [variable p]::[variable x];\",\n    \"[keyword import] [variable p]::[variable y];\",\n    \"\"\n  );\n\n  MT(\"covergoup_with_function_indents_properly\",\n    \"[keyword covergroup] [variable cg] [keyword with] [keyword function] [variable sample][bracket (][keyword bit] [variable b][bracket )];\",\n    \"    [variable c] : [keyword coverpoint] [variable c];\",\n    \"[keyword endgroup]: [variable cg]\",\n    \"\"\n  );\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/verilog/verilog.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"verilog\", function(config, parserConfig) {\n\n  var indentUnit = config.indentUnit,\n      statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,\n      dontAlignCalls = parserConfig.dontAlignCalls,\n      noIndentKeywords = parserConfig.noIndentKeywords || [],\n      multiLineStrings = parserConfig.multiLineStrings,\n      hooks = parserConfig.hooks || {};\n\n  function words(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  /**\n   * Keywords from IEEE 1800-2012\n   */\n  var keywords = words(\n    \"accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind \" +\n    \"bins binsof bit break buf bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config \" +\n    \"const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable \" +\n    \"dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup \" +\n    \"endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask \" +\n    \"enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin \" +\n    \"function generate genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import \" +\n    \"incdir include initial inout input inside instance int integer interconnect interface intersect join join_any \" +\n    \"join_none large let liblist library local localparam logic longint macromodule matches medium modport module \" +\n    \"nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 null or output package packed \" +\n    \"parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup \" +\n    \"pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg \" +\n    \"reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime \" +\n    \"s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify \" +\n    \"specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on \" +\n    \"table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior \" +\n    \"trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void \" +\n    \"wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor\");\n\n  /** Operators from IEEE 1800-2012\n     unary_operator ::=\n       + | - | ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~\n     binary_operator ::=\n       + | - | * | / | % | == | != | === | !== | ==? | !=? | && | || | **\n       | < | <= | > | >= | & | | | ^ | ^~ | ~^ | >> | << | >>> | <<<\n       | -> | <->\n     inc_or_dec_operator ::= ++ | --\n     unary_module_path_operator ::=\n       ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~\n     binary_module_path_operator ::=\n       == | != | && | || | & | | | ^ | ^~ | ~^\n  */\n  var isOperatorChar = /[\\+\\-\\*\\/!~&|^%=?:]/;\n  var isBracketChar = /[\\[\\]{}()]/;\n\n  var unsignedNumber = /\\d[0-9_]*/;\n  var decimalLiteral = /\\d*\\s*'s?d\\s*\\d[0-9_]*/i;\n  var binaryLiteral = /\\d*\\s*'s?b\\s*[xz01][xz01_]*/i;\n  var octLiteral = /\\d*\\s*'s?o\\s*[xz0-7][xz0-7_]*/i;\n  var hexLiteral = /\\d*\\s*'s?h\\s*[0-9a-fxz?][0-9a-fxz?_]*/i;\n  var realLiteral = /(\\d[\\d_]*(\\.\\d[\\d_]*)?E-?[\\d_]+)|(\\d[\\d_]*\\.\\d[\\d_]*)/i;\n\n  var closingBracketOrWord = /^((\\w+)|[)}\\]])/;\n  var closingBracket = /[)}\\]]/;\n\n  var curPunc;\n  var curKeyword;\n\n  // Block openings which are closed by a matching keyword in the form of (\"end\" + keyword)\n  // E.g. \"task\" => \"endtask\"\n  var blockKeywords = words(\n    \"case checker class clocking config function generate interface module package\" +\n    \"primitive program property specify sequence table task\"\n  );\n\n  // Opening/closing pairs\n  var openClose = {};\n  for (var keyword in blockKeywords) {\n    openClose[keyword] = \"end\" + keyword;\n  }\n  openClose[\"begin\"] = \"end\";\n  openClose[\"casex\"] = \"endcase\";\n  openClose[\"casez\"] = \"endcase\";\n  openClose[\"do\"   ] = \"while\";\n  openClose[\"fork\" ] = \"join;join_any;join_none\";\n  openClose[\"covergroup\"] = \"endgroup\";\n\n  for (var i in noIndentKeywords) {\n    var keyword = noIndentKeywords[i];\n    if (openClose[keyword]) {\n      openClose[keyword] = undefined;\n    }\n  }\n\n  // Keywords which open statements that are ended with a semi-colon\n  var statementKeywords = words(\"always always_comb always_ff always_latch assert assign assume else export for foreach forever if import initial repeat while\");\n\n  function tokenBase(stream, state) {\n    var ch = stream.peek(), style;\n    if (hooks[ch] && (style = hooks[ch](stream, state)) != false) return style;\n    if (hooks.tokenBase && (style = hooks.tokenBase(stream, state)) != false)\n      return style;\n\n    if (/[,;:\\.]/.test(ch)) {\n      curPunc = stream.next();\n      return null;\n    }\n    if (isBracketChar.test(ch)) {\n      curPunc = stream.next();\n      return \"bracket\";\n    }\n    // Macros (tick-defines)\n    if (ch == '`') {\n      stream.next();\n      if (stream.eatWhile(/[\\w\\$_]/)) {\n        return \"def\";\n      } else {\n        return null;\n      }\n    }\n    // System calls\n    if (ch == '$') {\n      stream.next();\n      if (stream.eatWhile(/[\\w\\$_]/)) {\n        return \"meta\";\n      } else {\n        return null;\n      }\n    }\n    // Time literals\n    if (ch == '#') {\n      stream.next();\n      stream.eatWhile(/[\\d_.]/);\n      return \"def\";\n    }\n    // Strings\n    if (ch == '\"') {\n      stream.next();\n      state.tokenize = tokenString(ch);\n      return state.tokenize(stream, state);\n    }\n    // Comments\n    if (ch == \"/\") {\n      stream.next();\n      if (stream.eat(\"*\")) {\n        state.tokenize = tokenComment;\n        return tokenComment(stream, state);\n      }\n      if (stream.eat(\"/\")) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n      stream.backUp(1);\n    }\n\n    // Numeric literals\n    if (stream.match(realLiteral) ||\n        stream.match(decimalLiteral) ||\n        stream.match(binaryLiteral) ||\n        stream.match(octLiteral) ||\n        stream.match(hexLiteral) ||\n        stream.match(unsignedNumber) ||\n        stream.match(realLiteral)) {\n      return \"number\";\n    }\n\n    // Operators\n    if (stream.eatWhile(isOperatorChar)) {\n      return \"meta\";\n    }\n\n    // Keywords / plain variables\n    if (stream.eatWhile(/[\\w\\$_]/)) {\n      var cur = stream.current();\n      if (keywords[cur]) {\n        if (openClose[cur]) {\n          curPunc = \"newblock\";\n        }\n        if (statementKeywords[cur]) {\n          curPunc = \"newstatement\";\n        }\n        curKeyword = cur;\n        return \"keyword\";\n      }\n      return \"variable\";\n    }\n\n    stream.next();\n    return null;\n  }\n\n  function tokenString(quote) {\n    return function(stream, state) {\n      var escaped = false, next, end = false;\n      while ((next = stream.next()) != null) {\n        if (next == quote && !escaped) {end = true; break;}\n        escaped = !escaped && next == \"\\\\\";\n      }\n      if (end || !(escaped || multiLineStrings))\n        state.tokenize = tokenBase;\n      return \"string\";\n    };\n  }\n\n  function tokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while (ch = stream.next()) {\n      if (ch == \"/\" && maybeEnd) {\n        state.tokenize = tokenBase;\n        break;\n      }\n      maybeEnd = (ch == \"*\");\n    }\n    return \"comment\";\n  }\n\n  function Context(indented, column, type, align, prev) {\n    this.indented = indented;\n    this.column = column;\n    this.type = type;\n    this.align = align;\n    this.prev = prev;\n  }\n  function pushContext(state, col, type) {\n    var indent = state.indented;\n    var c = new Context(indent, col, type, null, state.context);\n    return state.context = c;\n  }\n  function popContext(state) {\n    var t = state.context.type;\n    if (t == \")\" || t == \"]\" || t == \"}\") {\n      state.indented = state.context.indented;\n    }\n    return state.context = state.context.prev;\n  }\n\n  function isClosing(text, contextClosing) {\n    if (text == contextClosing) {\n      return true;\n    } else {\n      // contextClosing may be mulitple keywords separated by ;\n      var closingKeywords = contextClosing.split(\";\");\n      for (var i in closingKeywords) {\n        if (text == closingKeywords[i]) {\n          return true;\n        }\n      }\n      return false;\n    }\n  }\n\n  function buildElectricInputRegEx() {\n    // Reindentation should occur on any bracket char: {}()[]\n    // or on a match of any of the block closing keywords, at\n    // the end of a line\n    var allClosings = [];\n    for (var i in openClose) {\n      if (openClose[i]) {\n        var closings = openClose[i].split(\";\");\n        for (var j in closings) {\n          allClosings.push(closings[j]);\n        }\n      }\n    }\n    var re = new RegExp(\"[{}()\\\\[\\\\]]|(\" + allClosings.join(\"|\") + \")$\");\n    return re;\n  }\n\n  // Interface\n  return {\n\n    // Regex to force current line to reindent\n    electricInput: buildElectricInputRegEx(),\n\n    startState: function(basecolumn) {\n      var state = {\n        tokenize: null,\n        context: new Context((basecolumn || 0) - indentUnit, 0, \"top\", false),\n        indented: 0,\n        startOfLine: true\n      };\n      if (hooks.startState) hooks.startState(state);\n      return state;\n    },\n\n    token: function(stream, state) {\n      var ctx = state.context;\n      if (stream.sol()) {\n        if (ctx.align == null) ctx.align = false;\n        state.indented = stream.indentation();\n        state.startOfLine = true;\n      }\n      if (hooks.token) hooks.token(stream, state);\n      if (stream.eatSpace()) return null;\n      curPunc = null;\n      curKeyword = null;\n      var style = (state.tokenize || tokenBase)(stream, state);\n      if (style == \"comment\" || style == \"meta\" || style == \"variable\") return style;\n      if (ctx.align == null) ctx.align = true;\n\n      if (curPunc == ctx.type) {\n        popContext(state);\n      } else if ((curPunc == \";\" && ctx.type == \"statement\") ||\n               (ctx.type && isClosing(curKeyword, ctx.type))) {\n        ctx = popContext(state);\n        while (ctx && ctx.type == \"statement\") ctx = popContext(state);\n      } else if (curPunc == \"{\") {\n        pushContext(state, stream.column(), \"}\");\n      } else if (curPunc == \"[\") {\n        pushContext(state, stream.column(), \"]\");\n      } else if (curPunc == \"(\") {\n        pushContext(state, stream.column(), \")\");\n      } else if (ctx && ctx.type == \"endcase\" && curPunc == \":\") {\n        pushContext(state, stream.column(), \"statement\");\n      } else if (curPunc == \"newstatement\") {\n        pushContext(state, stream.column(), \"statement\");\n      } else if (curPunc == \"newblock\") {\n        if (curKeyword == \"function\" && ctx && (ctx.type == \"statement\" || ctx.type == \"endgroup\")) {\n          // The 'function' keyword can appear in some other contexts where it actually does not\n          // indicate a function (import/export DPI and covergroup definitions).\n          // Do nothing in this case\n        } else if (curKeyword == \"task\" && ctx && ctx.type == \"statement\") {\n          // Same thing for task\n        } else {\n          var close = openClose[curKeyword];\n          pushContext(state, stream.column(), close);\n        }\n      }\n\n      state.startOfLine = false;\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass;\n      if (hooks.indent) {\n        var fromHook = hooks.indent(state);\n        if (fromHook >= 0) return fromHook;\n      }\n      var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);\n      if (ctx.type == \"statement\" && firstChar == \"}\") ctx = ctx.prev;\n      var closing = false;\n      var possibleClosing = textAfter.match(closingBracketOrWord);\n      if (possibleClosing)\n        closing = isClosing(possibleClosing[0], ctx.type);\n      if (ctx.type == \"statement\") return ctx.indented + (firstChar == \"{\" ? 0 : statementIndentUnit);\n      else if (closingBracket.test(ctx.type) && ctx.align && !dontAlignCalls) return ctx.column + (closing ? 0 : 1);\n      else if (ctx.type == \")\" && !closing) return ctx.indented + statementIndentUnit;\n      else return ctx.indented + (closing ? 0 : indentUnit);\n    },\n\n    blockCommentStart: \"/*\",\n    blockCommentEnd: \"*/\",\n    lineComment: \"//\"\n  };\n});\n\n  CodeMirror.defineMIME(\"text/x-verilog\", {\n    name: \"verilog\"\n  });\n\n  CodeMirror.defineMIME(\"text/x-systemverilog\", {\n    name: \"verilog\"\n  });\n\n  // SVXVerilog mode\n\n  var svxchScopePrefixes = {\n    \">\": \"property\", \"->\": \"property\", \"-\": \"hr\", \"|\": \"link\", \"?$\": \"qualifier\", \"?*\": \"qualifier\",\n    \"@-\": \"variable-3\", \"@\": \"variable-3\", \"?\": \"qualifier\"\n  };\n\n  function svxGenIndent(stream, state) {\n    var svxindentUnit = 2;\n    var rtnIndent = -1, indentUnitRq = 0, curIndent = stream.indentation();\n    switch (state.svxCurCtlFlowChar) {\n    case \"\\\\\":\n      curIndent = 0;\n      break;\n    case \"|\":\n      if (state.svxPrevPrevCtlFlowChar == \"@\") {\n        indentUnitRq = -2; //-2 new pipe rq after cur pipe\n        break;\n      }\n      if (svxchScopePrefixes[state.svxPrevCtlFlowChar])\n        indentUnitRq = 1; // +1 new scope\n      break;\n    case \"M\":  // m4\n      if (state.svxPrevPrevCtlFlowChar == \"@\") {\n        indentUnitRq = -2; //-2 new inst rq after  pipe\n        break;\n      }\n      if (svxchScopePrefixes[state.svxPrevCtlFlowChar])\n        indentUnitRq = 1; // +1 new scope\n      break;\n    case \"@\":\n      if (state.svxPrevCtlFlowChar == \"S\")\n        indentUnitRq = -1; // new pipe stage after stmts\n      if (state.svxPrevCtlFlowChar == \"|\")\n        indentUnitRq = 1; // 1st pipe stage\n      break;\n    case \"S\":\n      if (state.svxPrevCtlFlowChar == \"@\")\n        indentUnitRq = 1; // flow in pipe stage\n      if (svxchScopePrefixes[state.svxPrevCtlFlowChar])\n        indentUnitRq = 1; // +1 new scope\n      break;\n    }\n    var statementIndentUnit = svxindentUnit;\n    rtnIndent = curIndent + (indentUnitRq*statementIndentUnit);\n    return rtnIndent >= 0 ? rtnIndent : curIndent;\n  }\n\n  CodeMirror.defineMIME(\"text/x-svx\", {\n    name: \"verilog\",\n    hooks: {\n      \"\\\\\": function(stream, state) {\n        var vxIndent = 0, style = false;\n        var curPunc  = stream.string;\n        if ((stream.sol()) && (/\\\\SV/.test(stream.string))) {\n          curPunc = (/\\\\SVX_version/.test(stream.string))\n            ? \"\\\\SVX_version\" : stream.string;\n          stream.skipToEnd();\n          if (curPunc == \"\\\\SV\" && state.vxCodeActive) {state.vxCodeActive = false;};\n          if ((/\\\\SVX/.test(curPunc) && !state.vxCodeActive)\n            || (curPunc==\"\\\\SVX_version\" && state.vxCodeActive)) {state.vxCodeActive = true;};\n          style = \"keyword\";\n          state.svxCurCtlFlowChar  = state.svxPrevPrevCtlFlowChar\n            = state.svxPrevCtlFlowChar = \"\";\n          if (state.vxCodeActive == true) {\n            state.svxCurCtlFlowChar  = \"\\\\\";\n            vxIndent = svxGenIndent(stream, state);\n          }\n          state.vxIndentRq = vxIndent;\n        }\n        return style;\n      },\n      tokenBase: function(stream, state) {\n        var vxIndent = 0, style = false;\n        var svxisOperatorChar = /[\\[\\]=:]/;\n        var svxkpScopePrefixs = {\n          \"**\":\"variable-2\", \"*\":\"variable-2\", \"$$\":\"variable\", \"$\":\"variable\",\n          \"^^\":\"attribute\", \"^\":\"attribute\"};\n        var ch = stream.peek();\n        var vxCurCtlFlowCharValueAtStart = state.svxCurCtlFlowChar;\n        if (state.vxCodeActive == true) {\n          if (/[\\[\\]{}\\(\\);\\:]/.test(ch)) {\n            // bypass nesting and 1 char punc\n            style = \"meta\";\n            stream.next();\n          } else if (ch == \"/\") {\n            stream.next();\n            if (stream.eat(\"/\")) {\n              stream.skipToEnd();\n              style = \"comment\";\n              state.svxCurCtlFlowChar = \"S\";\n            } else {\n              stream.backUp(1);\n            }\n          } else if (ch == \"@\") {\n            // pipeline stage\n            style = svxchScopePrefixes[ch];\n            state.svxCurCtlFlowChar = \"@\";\n            stream.next();\n            stream.eatWhile(/[\\w\\$_]/);\n          } else if (stream.match(/\\b[mM]4+/, true)) { // match: function(pattern, consume, caseInsensitive)\n            // m4 pre proc\n            stream.skipTo(\"(\");\n            style = \"def\";\n            state.svxCurCtlFlowChar = \"M\";\n          } else if (ch == \"!\" && stream.sol()) {\n            // v stmt in svx region\n            // state.svxCurCtlFlowChar  = \"S\";\n            style = \"comment\";\n            stream.next();\n          } else if (svxisOperatorChar.test(ch)) {\n            // operators\n            stream.eatWhile(svxisOperatorChar);\n            style = \"operator\";\n          } else if (ch == \"#\") {\n            // phy hier\n            state.svxCurCtlFlowChar  = (state.svxCurCtlFlowChar == \"\")\n              ? ch : state.svxCurCtlFlowChar;\n            stream.next();\n            stream.eatWhile(/[+-]\\d/);\n            style = \"tag\";\n          } else if (svxkpScopePrefixs.propertyIsEnumerable(ch)) {\n            // special SVX operators\n            style = svxkpScopePrefixs[ch];\n            state.svxCurCtlFlowChar = state.svxCurCtlFlowChar == \"\" ? \"S\" : state.svxCurCtlFlowChar;  // stmt\n            stream.next();\n            stream.match(/[a-zA-Z_0-9]+/);\n          } else if (style = svxchScopePrefixes[ch] || false) {\n            // special SVX operators\n            state.svxCurCtlFlowChar = state.svxCurCtlFlowChar == \"\" ? ch : state.svxCurCtlFlowChar;\n            stream.next();\n            stream.match(/[a-zA-Z_0-9]+/);\n          }\n          if (state.svxCurCtlFlowChar != vxCurCtlFlowCharValueAtStart) { // flow change\n            vxIndent = svxGenIndent(stream, state);\n            state.vxIndentRq = vxIndent;\n          }\n        }\n        return style;\n      },\n      token: function(stream, state) {\n        if (state.vxCodeActive == true && stream.sol() && state.svxCurCtlFlowChar != \"\") {\n          state.svxPrevPrevCtlFlowChar = state.svxPrevCtlFlowChar;\n          state.svxPrevCtlFlowChar = state.svxCurCtlFlowChar;\n          state.svxCurCtlFlowChar = \"\";\n        }\n      },\n      indent: function(state) {\n        return (state.vxCodeActive == true) ? state.vxIndentRq : -1;\n      },\n      startState: function(state) {\n        state.svxCurCtlFlowChar = \"\";\n        state.svxPrevCtlFlowChar = \"\";\n        state.svxPrevPrevCtlFlowChar = \"\";\n        state.vxCodeActive = true;\n        state.vxIndentRq = 0;\n      }\n    }\n  });\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/xml/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: XML mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"xml.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">XML</a>\n  </ul>\n</div>\n\n<article>\n<h2>XML mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n&lt;html style=\"color: green\"&gt;\n  &lt;!-- this is a comment --&gt;\n  &lt;head&gt;\n    &lt;title&gt;HTML Example&lt;/title&gt;\n  &lt;/head&gt;\n  &lt;body&gt;\n    The indentation tries to be &lt;em&gt;somewhat &amp;quot;do what\n    I mean&amp;quot;&lt;/em&gt;... but might not match your style.\n  &lt;/body&gt;\n&lt;/html&gt;\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        mode: \"text/html\",\n        lineNumbers: true\n      });\n    </script>\n    <p>The XML mode supports two configuration parameters:</p>\n    <dl>\n      <dt><code>htmlMode (boolean)</code></dt>\n      <dd>This switches the mode to parse HTML instead of XML. This\n      means attributes do not have to be quoted, and some elements\n      (such as <code>br</code>) do not require a closing tag.</dd>\n      <dt><code>alignCDATA (boolean)</code></dt>\n      <dd>Setting this to true will force the opening tag of CDATA\n      blocks to not be indented.</dd>\n    </dl>\n\n    <p><strong>MIME types defined:</strong> <code>application/xml</code>, <code>text/html</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/xml/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function() {\n  var mode = CodeMirror.getMode({indentUnit: 2}, \"xml\"), mname = \"xml\";\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); }\n\n  MT(\"matching\",\n     \"[tag&bracket <][tag top][tag&bracket >]\",\n     \"  text\",\n     \"  [tag&bracket <][tag inner][tag&bracket />]\",\n     \"[tag&bracket </][tag top][tag&bracket >]\");\n\n  MT(\"nonmatching\",\n     \"[tag&bracket <][tag top][tag&bracket >]\",\n     \"  [tag&bracket <][tag inner][tag&bracket />]\",\n     \"  [tag&bracket </][tag&error tip][tag&bracket&error >]\");\n\n  MT(\"doctype\",\n     \"[meta <!doctype foobar>]\",\n     \"[tag&bracket <][tag top][tag&bracket />]\");\n\n  MT(\"cdata\",\n     \"[tag&bracket <][tag top][tag&bracket >]\",\n     \"  [atom <![CDATA[foo]\",\n     \"[atom barbazguh]]]]>]\",\n     \"[tag&bracket </][tag top][tag&bracket >]\");\n\n  // HTML tests\n  mode = CodeMirror.getMode({indentUnit: 2}, \"text/html\");\n\n  MT(\"selfclose\",\n     \"[tag&bracket <][tag html][tag&bracket >]\",\n     \"  [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \\\"/foobar\\\"][tag&bracket >]\",\n     \"[tag&bracket </][tag html][tag&bracket >]\");\n\n  MT(\"list\",\n     \"[tag&bracket <][tag ol][tag&bracket >]\",\n     \"  [tag&bracket <][tag li][tag&bracket >]one\",\n     \"  [tag&bracket <][tag li][tag&bracket >]two\",\n     \"[tag&bracket </][tag ol][tag&bracket >]\");\n\n  MT(\"valueless\",\n     \"[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]\");\n\n  MT(\"pThenArticle\",\n     \"[tag&bracket <][tag p][tag&bracket >]\",\n     \"  foo\",\n     \"[tag&bracket <][tag article][tag&bracket >]bar\");\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/xml/xml.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"xml\", function(config, parserConfig) {\n  var indentUnit = config.indentUnit;\n  var multilineTagIndentFactor = parserConfig.multilineTagIndentFactor || 1;\n  var multilineTagIndentPastTag = parserConfig.multilineTagIndentPastTag;\n  if (multilineTagIndentPastTag == null) multilineTagIndentPastTag = true;\n\n  var Kludges = parserConfig.htmlMode ? {\n    autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n                      'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n                      'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n                      'track': true, 'wbr': true, 'menuitem': true},\n    implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n                       'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n                       'th': true, 'tr': true},\n    contextGrabbers: {\n      'dd': {'dd': true, 'dt': true},\n      'dt': {'dd': true, 'dt': true},\n      'li': {'li': true},\n      'option': {'option': true, 'optgroup': true},\n      'optgroup': {'optgroup': true},\n      'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n            'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n            'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n            'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n            'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n      'rp': {'rp': true, 'rt': true},\n      'rt': {'rp': true, 'rt': true},\n      'tbody': {'tbody': true, 'tfoot': true},\n      'td': {'td': true, 'th': true},\n      'tfoot': {'tbody': true},\n      'th': {'td': true, 'th': true},\n      'thead': {'tbody': true, 'tfoot': true},\n      'tr': {'tr': true}\n    },\n    doNotIndent: {\"pre\": true},\n    allowUnquoted: true,\n    allowMissing: true,\n    caseFold: true\n  } : {\n    autoSelfClosers: {},\n    implicitlyClosed: {},\n    contextGrabbers: {},\n    doNotIndent: {},\n    allowUnquoted: false,\n    allowMissing: false,\n    caseFold: false\n  };\n  var alignCDATA = parserConfig.alignCDATA;\n\n  // Return variables for tokenizers\n  var type, setStyle;\n\n  function inText(stream, state) {\n    function chain(parser) {\n      state.tokenize = parser;\n      return parser(stream, state);\n    }\n\n    var ch = stream.next();\n    if (ch == \"<\") {\n      if (stream.eat(\"!\")) {\n        if (stream.eat(\"[\")) {\n          if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n          else return null;\n        } else if (stream.match(\"--\")) {\n          return chain(inBlock(\"comment\", \"-->\"));\n        } else if (stream.match(\"DOCTYPE\", true, true)) {\n          stream.eatWhile(/[\\w\\._\\-]/);\n          return chain(doctype(1));\n        } else {\n          return null;\n        }\n      } else if (stream.eat(\"?\")) {\n        stream.eatWhile(/[\\w\\._\\-]/);\n        state.tokenize = inBlock(\"meta\", \"?>\");\n        return \"meta\";\n      } else {\n        type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n        state.tokenize = inTag;\n        return \"tag bracket\";\n      }\n    } else if (ch == \"&\") {\n      var ok;\n      if (stream.eat(\"#\")) {\n        if (stream.eat(\"x\")) {\n          ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n        } else {\n          ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n        }\n      } else {\n        ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n      }\n      return ok ? \"atom\" : \"error\";\n    } else {\n      stream.eatWhile(/[^&<]/);\n      return null;\n    }\n  }\n\n  function inTag(stream, state) {\n    var ch = stream.next();\n    if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n      state.tokenize = inText;\n      type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n      return \"tag bracket\";\n    } else if (ch == \"=\") {\n      type = \"equals\";\n      return null;\n    } else if (ch == \"<\") {\n      state.tokenize = inText;\n      state.state = baseState;\n      state.tagName = state.tagStart = null;\n      var next = state.tokenize(stream, state);\n      return next ? next + \" tag error\" : \"tag error\";\n    } else if (/[\\'\\\"]/.test(ch)) {\n      state.tokenize = inAttribute(ch);\n      state.stringStartCol = stream.column();\n      return state.tokenize(stream, state);\n    } else {\n      stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n      return \"word\";\n    }\n  }\n\n  function inAttribute(quote) {\n    var closure = function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.next() == quote) {\n          state.tokenize = inTag;\n          break;\n        }\n      }\n      return \"string\";\n    };\n    closure.isInAttribute = true;\n    return closure;\n  }\n\n  function inBlock(style, terminator) {\n    return function(stream, state) {\n      while (!stream.eol()) {\n        if (stream.match(terminator)) {\n          state.tokenize = inText;\n          break;\n        }\n        stream.next();\n      }\n      return style;\n    };\n  }\n  function doctype(depth) {\n    return function(stream, state) {\n      var ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == \"<\") {\n          state.tokenize = doctype(depth + 1);\n          return state.tokenize(stream, state);\n        } else if (ch == \">\") {\n          if (depth == 1) {\n            state.tokenize = inText;\n            break;\n          } else {\n            state.tokenize = doctype(depth - 1);\n            return state.tokenize(stream, state);\n          }\n        }\n      }\n      return \"meta\";\n    };\n  }\n\n  function Context(state, tagName, startOfLine) {\n    this.prev = state.context;\n    this.tagName = tagName;\n    this.indent = state.indented;\n    this.startOfLine = startOfLine;\n    if (Kludges.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n      this.noIndent = true;\n  }\n  function popContext(state) {\n    if (state.context) state.context = state.context.prev;\n  }\n  function maybePopContext(state, nextTagName) {\n    var parentTagName;\n    while (true) {\n      if (!state.context) {\n        return;\n      }\n      parentTagName = state.context.tagName;\n      if (!Kludges.contextGrabbers.hasOwnProperty(parentTagName) ||\n          !Kludges.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {\n        return;\n      }\n      popContext(state);\n    }\n  }\n\n  function baseState(type, stream, state) {\n    if (type == \"openTag\") {\n      state.tagStart = stream.column();\n      return tagNameState;\n    } else if (type == \"closeTag\") {\n      return closeTagNameState;\n    } else {\n      return baseState;\n    }\n  }\n  function tagNameState(type, stream, state) {\n    if (type == \"word\") {\n      state.tagName = stream.current();\n      setStyle = \"tag\";\n      return attrState;\n    } else {\n      setStyle = \"error\";\n      return tagNameState;\n    }\n  }\n  function closeTagNameState(type, stream, state) {\n    if (type == \"word\") {\n      var tagName = stream.current();\n      if (state.context && state.context.tagName != tagName &&\n          Kludges.implicitlyClosed.hasOwnProperty(state.context.tagName))\n        popContext(state);\n      if (state.context && state.context.tagName == tagName) {\n        setStyle = \"tag\";\n        return closeState;\n      } else {\n        setStyle = \"tag error\";\n        return closeStateErr;\n      }\n    } else {\n      setStyle = \"error\";\n      return closeStateErr;\n    }\n  }\n\n  function closeState(type, _stream, state) {\n    if (type != \"endTag\") {\n      setStyle = \"error\";\n      return closeState;\n    }\n    popContext(state);\n    return baseState;\n  }\n  function closeStateErr(type, stream, state) {\n    setStyle = \"error\";\n    return closeState(type, stream, state);\n  }\n\n  function attrState(type, _stream, state) {\n    if (type == \"word\") {\n      setStyle = \"attribute\";\n      return attrEqState;\n    } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n      var tagName = state.tagName, tagStart = state.tagStart;\n      state.tagName = state.tagStart = null;\n      if (type == \"selfcloseTag\" ||\n          Kludges.autoSelfClosers.hasOwnProperty(tagName)) {\n        maybePopContext(state, tagName);\n      } else {\n        maybePopContext(state, tagName);\n        state.context = new Context(state, tagName, tagStart == state.indented);\n      }\n      return baseState;\n    }\n    setStyle = \"error\";\n    return attrState;\n  }\n  function attrEqState(type, stream, state) {\n    if (type == \"equals\") return attrValueState;\n    if (!Kludges.allowMissing) setStyle = \"error\";\n    return attrState(type, stream, state);\n  }\n  function attrValueState(type, stream, state) {\n    if (type == \"string\") return attrContinuedState;\n    if (type == \"word\" && Kludges.allowUnquoted) {setStyle = \"string\"; return attrState;}\n    setStyle = \"error\";\n    return attrState(type, stream, state);\n  }\n  function attrContinuedState(type, stream, state) {\n    if (type == \"string\") return attrContinuedState;\n    return attrState(type, stream, state);\n  }\n\n  return {\n    startState: function() {\n      return {tokenize: inText,\n              state: baseState,\n              indented: 0,\n              tagName: null, tagStart: null,\n              context: null};\n    },\n\n    token: function(stream, state) {\n      if (!state.tagName && stream.sol())\n        state.indented = stream.indentation();\n\n      if (stream.eatSpace()) return null;\n      type = null;\n      var style = state.tokenize(stream, state);\n      if ((style || type) && style != \"comment\") {\n        setStyle = null;\n        state.state = state.state(type || style, stream, state);\n        if (setStyle)\n          style = setStyle == \"error\" ? style + \" error\" : setStyle;\n      }\n      return style;\n    },\n\n    indent: function(state, textAfter, fullLine) {\n      var context = state.context;\n      // Indent multi-line strings (e.g. css).\n      if (state.tokenize.isInAttribute) {\n        if (state.tagStart == state.indented)\n          return state.stringStartCol + 1;\n        else\n          return state.indented + indentUnit;\n      }\n      if (context && context.noIndent) return CodeMirror.Pass;\n      if (state.tokenize != inTag && state.tokenize != inText)\n        return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n      // Indent the starts of attribute names.\n      if (state.tagName) {\n        if (multilineTagIndentPastTag)\n          return state.tagStart + state.tagName.length + 2;\n        else\n          return state.tagStart + indentUnit * multilineTagIndentFactor;\n      }\n      if (alignCDATA && /<!\\[CDATA\\[/.test(textAfter)) return 0;\n      var tagAfter = textAfter && /^<(\\/)?([\\w_:\\.-]*)/.exec(textAfter);\n      if (tagAfter && tagAfter[1]) { // Closing tag spotted\n        while (context) {\n          if (context.tagName == tagAfter[2]) {\n            context = context.prev;\n            break;\n          } else if (Kludges.implicitlyClosed.hasOwnProperty(context.tagName)) {\n            context = context.prev;\n          } else {\n            break;\n          }\n        }\n      } else if (tagAfter) { // Opening tag spotted\n        while (context) {\n          var grabbers = Kludges.contextGrabbers[context.tagName];\n          if (grabbers && grabbers.hasOwnProperty(tagAfter[2]))\n            context = context.prev;\n          else\n            break;\n        }\n      }\n      while (context && !context.startOfLine)\n        context = context.prev;\n      if (context) return context.indent + indentUnit;\n      else return 0;\n    },\n\n    electricInput: /<\\/[\\s\\w:]+>$/,\n    blockCommentStart: \"<!--\",\n    blockCommentEnd: \"-->\",\n\n    configuration: parserConfig.htmlMode ? \"html\" : \"xml\",\n    helperType: parserConfig.htmlMode ? \"html\" : \"xml\"\n  };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n  CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/xquery/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: XQuery mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"../../theme/xq-dark.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"xquery.js\"></script>\n<style type=\"text/css\">\n\t.CodeMirror {\n\t  border-top: 1px solid black; border-bottom: 1px solid black;\n\t  height:400px;\n\t}\n    </style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">XQuery</a>\n  </ul>\n</div>\n\n<article>\n<h2>XQuery mode</h2>\n \n \n<div class=\"cm-s-default\"> \n\t<textarea id=\"code\" name=\"code\"> \nxquery version &quot;1.0-ml&quot;;\n(: this is\n : a \n   \"comment\" :)\nlet $let := &lt;x attr=&quot;value&quot;&gt;&quot;test&quot;&lt;func&gt;function() $var {function()} {$var}&lt;/func&gt;&lt;/x&gt;\nlet $joe:=1\nreturn element element {\n\tattribute attribute { 1 },\n\telement test { &#39;a&#39; }, \n\tattribute foo { &quot;bar&quot; },\n\tfn:doc()[ foo/@bar eq $let ],\n\t//x }    \n \n(: a more 'evil' test :)\n(: Modified Blakeley example (: with nested comment :) ... :)\ndeclare private function local:declare() {()};\ndeclare private function local:private() {()};\ndeclare private function local:function() {()};\ndeclare private function local:local() {()};\nlet $let := &lt;let&gt;let $let := &quot;let&quot;&lt;/let&gt;\nreturn element element {\n\tattribute attribute { try { xdmp:version() } catch($e) { xdmp:log($e) } },\n\tattribute fn:doc { &quot;bar&quot; castable as xs:string },\n\telement text { text { &quot;text&quot; } },\n\tfn:doc()[ child::eq/(@bar | attribute::attribute) eq $let ],\n\t//fn:doc\n}\n\n\n\nxquery version &quot;1.0-ml&quot;;\n\n(: Copyright 2006-2010 Mark Logic Corporation. :)\n\n(:\n : Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);\n : you may not use this file except in compliance with the License.\n : You may obtain a copy of the License at\n :\n :     http://www.apache.org/licenses/LICENSE-2.0\n :\n : Unless required by applicable law or agreed to in writing, software\n : distributed under the License is distributed on an &quot;AS IS&quot; BASIS,\n : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n : See the License for the specific language governing permissions and\n : limitations under the License.\n :)\n\nmodule namespace json = &quot;http://marklogic.com/json&quot;;\ndeclare default function namespace &quot;http://www.w3.org/2005/xpath-functions&quot;;\n\n(: Need to backslash escape any double quotes, backslashes, and newlines :)\ndeclare function json:escape($s as xs:string) as xs:string {\n  let $s := replace($s, &quot;\\\\&quot;, &quot;\\\\\\\\&quot;)\n  let $s := replace($s, &quot;&quot;&quot;&quot;, &quot;\\\\&quot;&quot;&quot;)\n  let $s := replace($s, codepoints-to-string((13, 10)), &quot;\\\\n&quot;)\n  let $s := replace($s, codepoints-to-string(13), &quot;\\\\n&quot;)\n  let $s := replace($s, codepoints-to-string(10), &quot;\\\\n&quot;)\n  return $s\n};\n\ndeclare function json:atomize($x as element()) as xs:string {\n  if (count($x/node()) = 0) then 'null'\n  else if ($x/@type = &quot;number&quot;) then\n    let $castable := $x castable as xs:float or\n                     $x castable as xs:double or\n                     $x castable as xs:decimal\n    return\n    if ($castable) then xs:string($x)\n    else error(concat(&quot;Not a number: &quot;, xdmp:describe($x)))\n  else if ($x/@type = &quot;boolean&quot;) then\n    let $castable := $x castable as xs:boolean\n    return\n    if ($castable) then xs:string(xs:boolean($x))\n    else error(concat(&quot;Not a boolean: &quot;, xdmp:describe($x)))\n  else concat('&quot;', json:escape($x), '&quot;')\n};\n\n(: Print the thing that comes after the colon :)\ndeclare function json:print-value($x as element()) as xs:string {\n  if (count($x/*) = 0) then\n    json:atomize($x)\n  else if ($x/@quote = &quot;true&quot;) then\n    concat('&quot;', json:escape(xdmp:quote($x/node())), '&quot;')\n  else\n    string-join(('{',\n      string-join(for $i in $x/* return json:print-name-value($i), &quot;,&quot;),\n    '}'), &quot;&quot;)\n};\n\n(: Print the name and value both :)\ndeclare function json:print-name-value($x as element()) as xs:string? {\n  let $name := name($x)\n  let $first-in-array :=\n    count($x/preceding-sibling::*[name(.) = $name]) = 0 and\n    (count($x/following-sibling::*[name(.) = $name]) &gt; 0 or $x/@array = &quot;true&quot;)\n  let $later-in-array := count($x/preceding-sibling::*[name(.) = $name]) &gt; 0\n  return\n\n  if ($later-in-array) then\n    ()  (: I was handled previously :)\n  else if ($first-in-array) then\n    string-join(('&quot;', json:escape($name), '&quot;:[',\n      string-join((for $i in ($x, $x/following-sibling::*[name(.) = $name]) return json:print-value($i)), &quot;,&quot;),\n    ']'), &quot;&quot;)\n   else\n     string-join(('&quot;', json:escape($name), '&quot;:', json:print-value($x)), &quot;&quot;)\n};\n\n(:~\n  Transforms an XML element into a JSON string representation.  See http://json.org.\n  &lt;p/&gt;\n  Sample usage:\n  &lt;pre&gt;\n    xquery version &quot;1.0-ml&quot;;\n    import module namespace json=&quot;http://marklogic.com/json&quot; at &quot;json.xqy&quot;;\n    json:serialize(&amp;lt;foo&amp;gt;&amp;lt;bar&amp;gt;kid&amp;lt;/bar&amp;gt;&amp;lt;/foo&amp;gt;)\n  &lt;/pre&gt;\n  Sample transformations:\n  &lt;pre&gt;\n  &amp;lt;e/&amp;gt; becomes {&quot;e&quot;:null}\n  &amp;lt;e&amp;gt;text&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:&quot;text&quot;}\n  &amp;lt;e&amp;gt;quote &quot; escaping&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:&quot;quote \\&quot; escaping&quot;}\n  &amp;lt;e&amp;gt;backslash \\ escaping&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:&quot;backslash \\\\ escaping&quot;}\n  &amp;lt;e&amp;gt;&amp;lt;a&amp;gt;text1&amp;lt;/a&amp;gt;&amp;lt;b&amp;gt;text2&amp;lt;/b&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:&quot;text1&quot;,&quot;b&quot;:&quot;text2&quot;}}\n  &amp;lt;e&amp;gt;&amp;lt;a&amp;gt;text1&amp;lt;/a&amp;gt;&amp;lt;a&amp;gt;text2&amp;lt;/a&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:[&quot;text1&quot;,&quot;text2&quot;]}}\n  &amp;lt;e&amp;gt;&amp;lt;a array=&quot;true&quot;&amp;gt;text1&amp;lt;/a&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:[&quot;text1&quot;]}}\n  &amp;lt;e&amp;gt;&amp;lt;a type=&quot;boolean&quot;&amp;gt;false&amp;lt;/a&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:false}}\n  &amp;lt;e&amp;gt;&amp;lt;a type=&quot;number&quot;&amp;gt;123.5&amp;lt;/a&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:{&quot;a&quot;:123.5}}\n  &amp;lt;e quote=&quot;true&quot;&amp;gt;&amp;lt;div attrib=&quot;value&quot;/&amp;gt;&amp;lt;/e&amp;gt; becomes {&quot;e&quot;:&quot;&amp;lt;div attrib=\\&quot;value\\&quot;/&amp;gt;&quot;}\n  &lt;/pre&gt;\n  &lt;p/&gt;\n  Namespace URIs are ignored.  Namespace prefixes are included in the JSON name.\n  &lt;p/&gt;\n  Attributes are ignored, except for the special attribute @array=&quot;true&quot; that\n  indicates the JSON serialization should write the node, even if single, as an\n  array, and the attribute @type that can be set to &quot;boolean&quot; or &quot;number&quot; to\n  dictate the value should be written as that type (unquoted).  There's also\n  an @quote attribute that when set to true writes the inner content as text\n  rather than as structured JSON, useful for sending some XHTML over the\n  wire.\n  &lt;p/&gt;\n  Text nodes within mixed content are ignored.\n\n  @param $x Element node to convert\n  @return String holding JSON serialized representation of $x\n\n  @author Jason Hunter\n  @version 1.0.1\n  \n  Ported to xquery 1.0-ml; double escaped backslashes in json:escape\n:)\ndeclare function json:serialize($x as element())  as xs:string {\n  string-join(('{', json:print-name-value($x), '}'), &quot;&quot;)\n};\n  </textarea> \n</div> \n \n    <script> \n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true,\n        matchBrackets: true,\n        theme: \"xq-dark\"\n      });\n    </script> \n \n    <p><strong>MIME types defined:</strong> <code>application/xquery</code>.</p> \n \n    <p>Development of the CodeMirror XQuery mode was sponsored by \n      <a href=\"http://marklogic.com\">MarkLogic</a> and developed by \n      <a href=\"https://twitter.com/mbrevoort\">Mike Brevoort</a>.\n    </p>\n \n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/xquery/test.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// Don't take these too seriously -- the expected results appear to be\n// based on the results of actual runs without any serious manual\n// verification. If a change you made causes them to fail, the test is\n// as likely to wrong as the code.\n\n(function() {\n  var mode = CodeMirror.getMode({tabSize: 4}, \"xquery\");\n  function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }\n\n  MT(\"eviltest\",\n     \"[keyword xquery] [keyword version] [variable &quot;1][keyword .][atom 0][keyword -][variable ml&quot;][def&variable ;]      [comment (: this is       : a          \\\"comment\\\" :)]\",\n     \"      [keyword let] [variable $let] [keyword :=] [variable &lt;x] [variable attr][keyword =][variable &quot;value&quot;&gt;&quot;test&quot;&lt;func&gt][def&variable ;function]() [variable $var] {[keyword function]()} {[variable $var]}[variable &lt;][keyword /][variable func&gt;&lt;][keyword /][variable x&gt;]\",\n     \"      [keyword let] [variable $joe][keyword :=][atom 1]\",\n     \"      [keyword return] [keyword element] [variable element] {\",\n     \"          [keyword attribute] [variable attribute] { [atom 1] },\",\n     \"          [keyword element] [variable test] { [variable &#39;a&#39;] },           [keyword attribute] [variable foo] { [variable &quot;bar&quot;] },\",\n     \"          [def&variable fn:doc]()[[ [variable foo][keyword /][variable @bar] [keyword eq] [variable $let] ]],\",\n     \"          [keyword //][variable x] }                 [comment (: a more 'evil' test :)]\",\n     \"      [comment (: Modified Blakeley example (: with nested comment :) ... :)]\",\n     \"      [keyword declare] [keyword private] [keyword function] [def&variable local:declare]() {()}[variable ;]\",\n     \"      [keyword declare] [keyword private] [keyword function] [def&variable local:private]() {()}[variable ;]\",\n     \"      [keyword declare] [keyword private] [keyword function] [def&variable local:function]() {()}[variable ;]\",\n     \"      [keyword declare] [keyword private] [keyword function] [def&variable local:local]() {()}[variable ;]\",\n     \"      [keyword let] [variable $let] [keyword :=] [variable &lt;let&gt;let] [variable $let] [keyword :=] [variable &quot;let&quot;&lt;][keyword /let][variable &gt;]\",\n     \"      [keyword return] [keyword element] [variable element] {\",\n     \"          [keyword attribute] [variable attribute] { [keyword try] { [def&variable xdmp:version]() } [keyword catch]([variable $e]) { [def&variable xdmp:log]([variable $e]) } },\",\n     \"          [keyword attribute] [variable fn:doc] { [variable &quot;bar&quot;] [variable castable] [keyword as] [atom xs:string] },\",\n     \"          [keyword element] [variable text] { [keyword text] { [variable &quot;text&quot;] } },\",\n     \"          [def&variable fn:doc]()[[ [qualifier child::][variable eq][keyword /]([variable @bar] [keyword |] [qualifier attribute::][variable attribute]) [keyword eq] [variable $let] ]],\",\n     \"          [keyword //][variable fn:doc]\",\n     \"      }\");\n\n  MT(\"testEmptySequenceKeyword\",\n     \"[string \\\"foo\\\"] [keyword instance] [keyword of] [keyword empty-sequence]()\");\n\n  MT(\"testMultiAttr\",\n     \"[tag <p ][attribute a1]=[string \\\"foo\\\"] [attribute a2]=[string \\\"bar\\\"][tag >][variable hello] [variable world][tag </p>]\");\n\n  MT(\"test namespaced variable\",\n     \"[keyword declare] [keyword namespace] [variable e] [keyword =] [string \\\"http://example.com/ANamespace\\\"][variable ;declare] [keyword variable] [variable $e:exampleComThisVarIsNotRecognized] [keyword as] [keyword element]([keyword *]) [variable external;]\");\n\n  MT(\"test EQName variable\",\n     \"[keyword declare] [keyword variable] [variable $\\\"http://www.example.com/ns/my\\\":var] [keyword :=] [atom 12][variable ;]\",\n     \"[tag <out>]{[variable $\\\"http://www.example.com/ns/my\\\":var]}[tag </out>]\");\n\n  MT(\"test EQName function\",\n     \"[keyword declare] [keyword function] [def&variable \\\"http://www.example.com/ns/my\\\":fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {\",\n     \"   [variable $a] [keyword +] [atom 2]\",\n     \"}[variable ;]\",\n     \"[tag <out>]{[def&variable \\\"http://www.example.com/ns/my\\\":fn]([atom 12])}[tag </out>]\");\n\n  MT(\"test EQName function with single quotes\",\n     \"[keyword declare] [keyword function] [def&variable 'http://www.example.com/ns/my':fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {\",\n     \"   [variable $a] [keyword +] [atom 2]\",\n     \"}[variable ;]\",\n     \"[tag <out>]{[def&variable 'http://www.example.com/ns/my':fn]([atom 12])}[tag </out>]\");\n\n  MT(\"testProcessingInstructions\",\n     \"[def&variable data]([comment&meta <?target content?>]) [keyword instance] [keyword of] [atom xs:string]\");\n\n  MT(\"testQuoteEscapeDouble\",\n     \"[keyword let] [variable $rootfolder] [keyword :=] [string \\\"c:\\\\builds\\\\winnt\\\\HEAD\\\\qa\\\\scripts\\\\\\\"]\",\n     \"[keyword let] [variable $keysfolder] [keyword :=] [def&variable concat]([variable $rootfolder], [string \\\"keys\\\\\\\"])\");\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/xquery/xquery.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"xquery\", function() {\n\n  // The keywords object is set to the result of this self executing\n  // function. Each keyword is a property of the keywords object whose\n  // value is {type: atype, style: astyle}\n  var keywords = function(){\n    // conveinence functions used to build keywords object\n    function kw(type) {return {type: type, style: \"keyword\"};}\n    var A = kw(\"keyword a\")\n      , B = kw(\"keyword b\")\n      , C = kw(\"keyword c\")\n      , operator = kw(\"operator\")\n      , atom = {type: \"atom\", style: \"atom\"}\n      , punctuation = {type: \"punctuation\", style: null}\n      , qualifier = {type: \"axis_specifier\", style: \"qualifier\"};\n\n    // kwObj is what is return from this function at the end\n    var kwObj = {\n      'if': A, 'switch': A, 'while': A, 'for': A,\n      'else': B, 'then': B, 'try': B, 'finally': B, 'catch': B,\n      'element': C, 'attribute': C, 'let': C, 'implements': C, 'import': C, 'module': C, 'namespace': C,\n      'return': C, 'super': C, 'this': C, 'throws': C, 'where': C, 'private': C,\n      ',': punctuation,\n      'null': atom, 'fn:false()': atom, 'fn:true()': atom\n    };\n\n    // a list of 'basic' keywords. For each add a property to kwObj with the value of\n    // {type: basic[i], style: \"keyword\"} e.g. 'after' --> {type: \"after\", style: \"keyword\"}\n    var basic = ['after','ancestor','ancestor-or-self','and','as','ascending','assert','attribute','before',\n    'by','case','cast','child','comment','declare','default','define','descendant','descendant-or-self',\n    'descending','document','document-node','element','else','eq','every','except','external','following',\n    'following-sibling','follows','for','function','if','import','in','instance','intersect','item',\n    'let','module','namespace','node','node','of','only','or','order','parent','precedes','preceding',\n    'preceding-sibling','processing-instruction','ref','return','returns','satisfies','schema','schema-element',\n    'self','some','sortby','stable','text','then','to','treat','typeswitch','union','variable','version','where',\n    'xquery', 'empty-sequence'];\n    for(var i=0, l=basic.length; i < l; i++) { kwObj[basic[i]] = kw(basic[i]);};\n\n    // a list of types. For each add a property to kwObj with the value of\n    // {type: \"atom\", style: \"atom\"}\n    var types = ['xs:string', 'xs:float', 'xs:decimal', 'xs:double', 'xs:integer', 'xs:boolean', 'xs:date', 'xs:dateTime',\n    'xs:time', 'xs:duration', 'xs:dayTimeDuration', 'xs:time', 'xs:yearMonthDuration', 'numeric', 'xs:hexBinary',\n    'xs:base64Binary', 'xs:anyURI', 'xs:QName', 'xs:byte','xs:boolean','xs:anyURI','xf:yearMonthDuration'];\n    for(var i=0, l=types.length; i < l; i++) { kwObj[types[i]] = atom;};\n\n    // each operator will add a property to kwObj with value of {type: \"operator\", style: \"keyword\"}\n    var operators = ['eq', 'ne', 'lt', 'le', 'gt', 'ge', ':=', '=', '>', '>=', '<', '<=', '.', '|', '?', 'and', 'or', 'div', 'idiv', 'mod', '*', '/', '+', '-'];\n    for(var i=0, l=operators.length; i < l; i++) { kwObj[operators[i]] = operator;};\n\n    // each axis_specifiers will add a property to kwObj with value of {type: \"axis_specifier\", style: \"qualifier\"}\n    var axis_specifiers = [\"self::\", \"attribute::\", \"child::\", \"descendant::\", \"descendant-or-self::\", \"parent::\",\n    \"ancestor::\", \"ancestor-or-self::\", \"following::\", \"preceding::\", \"following-sibling::\", \"preceding-sibling::\"];\n    for(var i=0, l=axis_specifiers.length; i < l; i++) { kwObj[axis_specifiers[i]] = qualifier; };\n\n    return kwObj;\n  }();\n\n  // Used as scratch variables to communicate multiple values without\n  // consing up tons of objects.\n  var type, content;\n\n  function ret(tp, style, cont) {\n    type = tp; content = cont;\n    return style;\n  }\n\n  function chain(stream, state, f) {\n    state.tokenize = f;\n    return f(stream, state);\n  }\n\n  // the primary mode tokenizer\n  function tokenBase(stream, state) {\n    var ch = stream.next(),\n        mightBeFunction = false,\n        isEQName = isEQNameAhead(stream);\n\n    // an XML tag (if not in some sub, chained tokenizer)\n    if (ch == \"<\") {\n      if(stream.match(\"!--\", true))\n        return chain(stream, state, tokenXMLComment);\n\n      if(stream.match(\"![CDATA\", false)) {\n        state.tokenize = tokenCDATA;\n        return ret(\"tag\", \"tag\");\n      }\n\n      if(stream.match(\"?\", false)) {\n        return chain(stream, state, tokenPreProcessing);\n      }\n\n      var isclose = stream.eat(\"/\");\n      stream.eatSpace();\n      var tagName = \"\", c;\n      while ((c = stream.eat(/[^\\s\\u00a0=<>\\\"\\'\\/?]/))) tagName += c;\n\n      return chain(stream, state, tokenTag(tagName, isclose));\n    }\n    // start code block\n    else if(ch == \"{\") {\n      pushStateStack(state,{ type: \"codeblock\"});\n      return ret(\"\", null);\n    }\n    // end code block\n    else if(ch == \"}\") {\n      popStateStack(state);\n      return ret(\"\", null);\n    }\n    // if we're in an XML block\n    else if(isInXmlBlock(state)) {\n      if(ch == \">\")\n        return ret(\"tag\", \"tag\");\n      else if(ch == \"/\" && stream.eat(\">\")) {\n        popStateStack(state);\n        return ret(\"tag\", \"tag\");\n      }\n      else\n        return ret(\"word\", \"variable\");\n    }\n    // if a number\n    else if (/\\d/.test(ch)) {\n      stream.match(/^\\d*(?:\\.\\d*)?(?:E[+\\-]?\\d+)?/);\n      return ret(\"number\", \"atom\");\n    }\n    // comment start\n    else if (ch === \"(\" && stream.eat(\":\")) {\n      pushStateStack(state, { type: \"comment\"});\n      return chain(stream, state, tokenComment);\n    }\n    // quoted string\n    else if (  !isEQName && (ch === '\"' || ch === \"'\"))\n      return chain(stream, state, tokenString(ch));\n    // variable\n    else if(ch === \"$\") {\n      return chain(stream, state, tokenVariable);\n    }\n    // assignment\n    else if(ch ===\":\" && stream.eat(\"=\")) {\n      return ret(\"operator\", \"keyword\");\n    }\n    // open paren\n    else if(ch === \"(\") {\n      pushStateStack(state, { type: \"paren\"});\n      return ret(\"\", null);\n    }\n    // close paren\n    else if(ch === \")\") {\n      popStateStack(state);\n      return ret(\"\", null);\n    }\n    // open paren\n    else if(ch === \"[\") {\n      pushStateStack(state, { type: \"bracket\"});\n      return ret(\"\", null);\n    }\n    // close paren\n    else if(ch === \"]\") {\n      popStateStack(state);\n      return ret(\"\", null);\n    }\n    else {\n      var known = keywords.propertyIsEnumerable(ch) && keywords[ch];\n\n      // if there's a EQName ahead, consume the rest of the string portion, it's likely a function\n      if(isEQName && ch === '\\\"') while(stream.next() !== '\"'){}\n      if(isEQName && ch === '\\'') while(stream.next() !== '\\''){}\n\n      // gobble up a word if the character is not known\n      if(!known) stream.eatWhile(/[\\w\\$_-]/);\n\n      // gobble a colon in the case that is a lib func type call fn:doc\n      var foundColon = stream.eat(\":\");\n\n      // if there's not a second colon, gobble another word. Otherwise, it's probably an axis specifier\n      // which should get matched as a keyword\n      if(!stream.eat(\":\") && foundColon) {\n        stream.eatWhile(/[\\w\\$_-]/);\n      }\n      // if the next non whitespace character is an open paren, this is probably a function (if not a keyword of other sort)\n      if(stream.match(/^[ \\t]*\\(/, false)) {\n        mightBeFunction = true;\n      }\n      // is the word a keyword?\n      var word = stream.current();\n      known = keywords.propertyIsEnumerable(word) && keywords[word];\n\n      // if we think it's a function call but not yet known,\n      // set style to variable for now for lack of something better\n      if(mightBeFunction && !known) known = {type: \"function_call\", style: \"variable def\"};\n\n      // if the previous word was element, attribute, axis specifier, this word should be the name of that\n      if(isInXmlConstructor(state)) {\n        popStateStack(state);\n        return ret(\"word\", \"variable\", word);\n      }\n      // as previously checked, if the word is element,attribute, axis specifier, call it an \"xmlconstructor\" and\n      // push the stack so we know to look for it on the next word\n      if(word == \"element\" || word == \"attribute\" || known.type == \"axis_specifier\") pushStateStack(state, {type: \"xmlconstructor\"});\n\n      // if the word is known, return the details of that else just call this a generic 'word'\n      return known ? ret(known.type, known.style, word) :\n                     ret(\"word\", \"variable\", word);\n    }\n  }\n\n  // handle comments, including nested\n  function tokenComment(stream, state) {\n    var maybeEnd = false, maybeNested = false, nestedCount = 0, ch;\n    while (ch = stream.next()) {\n      if (ch == \")\" && maybeEnd) {\n        if(nestedCount > 0)\n          nestedCount--;\n        else {\n          popStateStack(state);\n          break;\n        }\n      }\n      else if(ch == \":\" && maybeNested) {\n        nestedCount++;\n      }\n      maybeEnd = (ch == \":\");\n      maybeNested = (ch == \"(\");\n    }\n\n    return ret(\"comment\", \"comment\");\n  }\n\n  // tokenizer for string literals\n  // optionally pass a tokenizer function to set state.tokenize back to when finished\n  function tokenString(quote, f) {\n    return function(stream, state) {\n      var ch;\n\n      if(isInString(state) && stream.current() == quote) {\n        popStateStack(state);\n        if(f) state.tokenize = f;\n        return ret(\"string\", \"string\");\n      }\n\n      pushStateStack(state, { type: \"string\", name: quote, tokenize: tokenString(quote, f) });\n\n      // if we're in a string and in an XML block, allow an embedded code block\n      if(stream.match(\"{\", false) && isInXmlAttributeBlock(state)) {\n        state.tokenize = tokenBase;\n        return ret(\"string\", \"string\");\n      }\n\n\n      while (ch = stream.next()) {\n        if (ch ==  quote) {\n          popStateStack(state);\n          if(f) state.tokenize = f;\n          break;\n        }\n        else {\n          // if we're in a string and in an XML block, allow an embedded code block in an attribute\n          if(stream.match(\"{\", false) && isInXmlAttributeBlock(state)) {\n            state.tokenize = tokenBase;\n            return ret(\"string\", \"string\");\n          }\n\n        }\n      }\n\n      return ret(\"string\", \"string\");\n    };\n  }\n\n  // tokenizer for variables\n  function tokenVariable(stream, state) {\n    var isVariableChar = /[\\w\\$_-]/;\n\n    // a variable may start with a quoted EQName so if the next character is quote, consume to the next quote\n    if(stream.eat(\"\\\"\")) {\n      while(stream.next() !== '\\\"'){};\n      stream.eat(\":\");\n    } else {\n      stream.eatWhile(isVariableChar);\n      if(!stream.match(\":=\", false)) stream.eat(\":\");\n    }\n    stream.eatWhile(isVariableChar);\n    state.tokenize = tokenBase;\n    return ret(\"variable\", \"variable\");\n  }\n\n  // tokenizer for XML tags\n  function tokenTag(name, isclose) {\n    return function(stream, state) {\n      stream.eatSpace();\n      if(isclose && stream.eat(\">\")) {\n        popStateStack(state);\n        state.tokenize = tokenBase;\n        return ret(\"tag\", \"tag\");\n      }\n      // self closing tag without attributes?\n      if(!stream.eat(\"/\"))\n        pushStateStack(state, { type: \"tag\", name: name, tokenize: tokenBase});\n      if(!stream.eat(\">\")) {\n        state.tokenize = tokenAttribute;\n        return ret(\"tag\", \"tag\");\n      }\n      else {\n        state.tokenize = tokenBase;\n      }\n      return ret(\"tag\", \"tag\");\n    };\n  }\n\n  // tokenizer for XML attributes\n  function tokenAttribute(stream, state) {\n    var ch = stream.next();\n\n    if(ch == \"/\" && stream.eat(\">\")) {\n      if(isInXmlAttributeBlock(state)) popStateStack(state);\n      if(isInXmlBlock(state)) popStateStack(state);\n      return ret(\"tag\", \"tag\");\n    }\n    if(ch == \">\") {\n      if(isInXmlAttributeBlock(state)) popStateStack(state);\n      return ret(\"tag\", \"tag\");\n    }\n    if(ch == \"=\")\n      return ret(\"\", null);\n    // quoted string\n    if (ch == '\"' || ch == \"'\")\n      return chain(stream, state, tokenString(ch, tokenAttribute));\n\n    if(!isInXmlAttributeBlock(state))\n      pushStateStack(state, { type: \"attribute\", tokenize: tokenAttribute});\n\n    stream.eat(/[a-zA-Z_:]/);\n    stream.eatWhile(/[-a-zA-Z0-9_:.]/);\n    stream.eatSpace();\n\n    // the case where the attribute has not value and the tag was closed\n    if(stream.match(\">\", false) || stream.match(\"/\", false)) {\n      popStateStack(state);\n      state.tokenize = tokenBase;\n    }\n\n    return ret(\"attribute\", \"attribute\");\n  }\n\n  // handle comments, including nested\n  function tokenXMLComment(stream, state) {\n    var ch;\n    while (ch = stream.next()) {\n      if (ch == \"-\" && stream.match(\"->\", true)) {\n        state.tokenize = tokenBase;\n        return ret(\"comment\", \"comment\");\n      }\n    }\n  }\n\n\n  // handle CDATA\n  function tokenCDATA(stream, state) {\n    var ch;\n    while (ch = stream.next()) {\n      if (ch == \"]\" && stream.match(\"]\", true)) {\n        state.tokenize = tokenBase;\n        return ret(\"comment\", \"comment\");\n      }\n    }\n  }\n\n  // handle preprocessing instructions\n  function tokenPreProcessing(stream, state) {\n    var ch;\n    while (ch = stream.next()) {\n      if (ch == \"?\" && stream.match(\">\", true)) {\n        state.tokenize = tokenBase;\n        return ret(\"comment\", \"comment meta\");\n      }\n    }\n  }\n\n\n  // functions to test the current context of the state\n  function isInXmlBlock(state) { return isIn(state, \"tag\"); }\n  function isInXmlAttributeBlock(state) { return isIn(state, \"attribute\"); }\n  function isInXmlConstructor(state) { return isIn(state, \"xmlconstructor\"); }\n  function isInString(state) { return isIn(state, \"string\"); }\n\n  function isEQNameAhead(stream) {\n    // assume we've already eaten a quote (\")\n    if(stream.current() === '\"')\n      return stream.match(/^[^\\\"]+\\\"\\:/, false);\n    else if(stream.current() === '\\'')\n      return stream.match(/^[^\\\"]+\\'\\:/, false);\n    else\n      return false;\n  }\n\n  function isIn(state, type) {\n    return (state.stack.length && state.stack[state.stack.length - 1].type == type);\n  }\n\n  function pushStateStack(state, newState) {\n    state.stack.push(newState);\n  }\n\n  function popStateStack(state) {\n    state.stack.pop();\n    var reinstateTokenize = state.stack.length && state.stack[state.stack.length-1].tokenize;\n    state.tokenize = reinstateTokenize || tokenBase;\n  }\n\n  // the interface for the mode API\n  return {\n    startState: function() {\n      return {\n        tokenize: tokenBase,\n        cc: [],\n        stack: []\n      };\n    },\n\n    token: function(stream, state) {\n      if (stream.eatSpace()) return null;\n      var style = state.tokenize(stream, state);\n      return style;\n    },\n\n    blockCommentStart: \"(:\",\n    blockCommentEnd: \":)\"\n\n  };\n\n});\n\nCodeMirror.defineMIME(\"application/xquery\", \"xquery\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/yaml/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: YAML mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"yaml.js\"></script>\n<style>.CodeMirror { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; }</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">YAML</a>\n  </ul>\n</div>\n\n<article>\n<h2>YAML mode</h2>\n<form><textarea id=\"code\" name=\"code\">\n--- # Favorite movies\n- Casablanca\n- North by Northwest\n- The Man Who Wasn't There\n--- # Shopping list\n[milk, pumpkin pie, eggs, juice]\n--- # Indented Blocks, common in YAML data files, use indentation and new lines to separate the key: value pairs\n  name: John Smith\n  age: 33\n--- # Inline Blocks, common in YAML data streams, use commas to separate the key: value pairs between braces\n{name: John Smith, age: 33}\n---\nreceipt:     Oz-Ware Purchase Invoice\ndate:        2007-08-06\ncustomer:\n    given:   Dorothy\n    family:  Gale\n\nitems:\n    - part_no:   A4786\n      descrip:   Water Bucket (Filled)\n      price:     1.47\n      quantity:  4\n\n    - part_no:   E1628\n      descrip:   High Heeled \"Ruby\" Slippers\n      size:       8\n      price:     100.27\n      quantity:  1\n\nbill-to:  &id001\n    street: |\n            123 Tornado Alley\n            Suite 16\n    city:   East Centerville\n    state:  KS\n\nship-to:  *id001\n\nspecialDelivery:  >\n    Follow the Yellow Brick\n    Road to the Emerald City.\n    Pay no attention to the\n    man behind the curtain.\n...\n</textarea></form>\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {});\n    </script>\n\n    <p><strong>MIME types defined:</strong> <code>text/x-yaml</code>.</p>\n\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/yaml/yaml.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"yaml\", function() {\n\n  var cons = ['true', 'false', 'on', 'off', 'yes', 'no'];\n  var keywordRegex = new RegExp(\"\\\\b((\"+cons.join(\")|(\")+\"))$\", 'i');\n\n  return {\n    token: function(stream, state) {\n      var ch = stream.peek();\n      var esc = state.escaped;\n      state.escaped = false;\n      /* comments */\n      if (ch == \"#\" && (stream.pos == 0 || /\\s/.test(stream.string.charAt(stream.pos - 1)))) {\n        stream.skipToEnd();\n        return \"comment\";\n      }\n\n      if (stream.match(/^('([^']|\\\\.)*'?|\"([^\"]|\\\\.)*\"?)/))\n        return \"string\";\n\n      if (state.literal && stream.indentation() > state.keyCol) {\n        stream.skipToEnd(); return \"string\";\n      } else if (state.literal) { state.literal = false; }\n      if (stream.sol()) {\n        state.keyCol = 0;\n        state.pair = false;\n        state.pairStart = false;\n        /* document start */\n        if(stream.match(/---/)) { return \"def\"; }\n        /* document end */\n        if (stream.match(/\\.\\.\\./)) { return \"def\"; }\n        /* array list item */\n        if (stream.match(/\\s*-\\s+/)) { return 'meta'; }\n      }\n      /* inline pairs/lists */\n      if (stream.match(/^(\\{|\\}|\\[|\\])/)) {\n        if (ch == '{')\n          state.inlinePairs++;\n        else if (ch == '}')\n          state.inlinePairs--;\n        else if (ch == '[')\n          state.inlineList++;\n        else\n          state.inlineList--;\n        return 'meta';\n      }\n\n      /* list seperator */\n      if (state.inlineList > 0 && !esc && ch == ',') {\n        stream.next();\n        return 'meta';\n      }\n      /* pairs seperator */\n      if (state.inlinePairs > 0 && !esc && ch == ',') {\n        state.keyCol = 0;\n        state.pair = false;\n        state.pairStart = false;\n        stream.next();\n        return 'meta';\n      }\n\n      /* start of value of a pair */\n      if (state.pairStart) {\n        /* block literals */\n        if (stream.match(/^\\s*(\\||\\>)\\s*/)) { state.literal = true; return 'meta'; };\n        /* references */\n        if (stream.match(/^\\s*(\\&|\\*)[a-z0-9\\._-]+\\b/i)) { return 'variable-2'; }\n        /* numbers */\n        if (state.inlinePairs == 0 && stream.match(/^\\s*-?[0-9\\.\\,]+\\s?$/)) { return 'number'; }\n        if (state.inlinePairs > 0 && stream.match(/^\\s*-?[0-9\\.\\,]+\\s?(?=(,|}))/)) { return 'number'; }\n        /* keywords */\n        if (stream.match(keywordRegex)) { return 'keyword'; }\n      }\n\n      /* pairs (associative arrays) -> key */\n      if (!state.pair && stream.match(/^\\s*(?:[,\\[\\]{}&*!|>'\"%@`][^\\s'\":]|[^,\\[\\]{}#&*!|>'\"%@`])[^#]*?(?=\\s*:($|\\s))/)) {\n        state.pair = true;\n        state.keyCol = stream.indentation();\n        return \"atom\";\n      }\n      if (state.pair && stream.match(/^:\\s*/)) { state.pairStart = true; return 'meta'; }\n\n      /* nothing found, continue */\n      state.pairStart = false;\n      state.escaped = (ch == '\\\\');\n      stream.next();\n      return null;\n    },\n    startState: function() {\n      return {\n        pair: false,\n        pairStart: false,\n        keyCol: 0,\n        inlinePairs: 0,\n        inlineList: 0,\n        literal: false,\n        escaped: false\n      };\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-yaml\", \"yaml\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/z80/index.html",
    "content": "<!doctype html>\n\n<title>CodeMirror: Z80 assembly mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css\">\n\n<link rel=\"stylesheet\" href=\"../../lib/codemirror.css\">\n<script src=\"../../lib/codemirror.js\"></script>\n<script src=\"z80.js\"></script>\n<style type=\"text/css\">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>\n<div id=nav>\n  <a href=\"http://codemirror.net\"><h1>CodeMirror</h1><img id=logo src=\"../../doc/logo.png\"></a>\n\n  <ul>\n    <li><a href=\"../../index.html\">Home</a>\n    <li><a href=\"../../doc/manual.html\">Manual</a>\n    <li><a href=\"https://github.com/codemirror/codemirror\">Code</a>\n  </ul>\n  <ul>\n    <li><a href=\"../index.html\">Language modes</a>\n    <li><a class=active href=\"#\">Z80 assembly</a>\n  </ul>\n</div>\n\n<article>\n<h2>Z80 assembly mode</h2>\n\n\n<div><textarea id=\"code\" name=\"code\">\n#include    \"ti83plus.inc\"\n#define     progStart   $9D95\n.org        progStart-2\n.db         $BB,$6D\n    bcall(_ClrLCDFull)\n    ld  HL, 0\n    ld  (PenCol),   HL\n    ld  HL, Message\n    bcall(_PutS) ; Displays the string\n    bcall(_NewLine)\n    ret\nMessage:\n.db         \"Hello world!\",0\n</textarea></div>\n\n    <script>\n      var editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {\n        lineNumbers: true\n      });\n    </script>\n\n    <p><strong>MIME type defined:</strong> <code>text/x-z80</code>.</p>\n  </article>\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/mode/z80/z80.js",
    "content": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode('z80', function() {\n  var keywords1 = /^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\\b/i;\n  var keywords2 = /^(call|j[pr]|ret[in]?)\\b/i;\n  var keywords3 = /^b_?(call|jump)\\b/i;\n  var variables1 = /^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\\b/i;\n  var variables2 = /^(n?[zc]|p[oe]?|m)\\b/i;\n  var errors = /^([hl][xy]|i[xy][hl]|slia|sll)\\b/i;\n  var numbers = /^([\\da-f]+h|[0-7]+o|[01]+b|\\d+)\\b/i;\n\n  return {\n    startState: function() {\n      return {context: 0};\n    },\n    token: function(stream, state) {\n      if (!stream.column())\n        state.context = 0;\n\n      if (stream.eatSpace())\n        return null;\n\n      var w;\n\n      if (stream.eatWhile(/\\w/)) {\n        w = stream.current();\n\n        if (stream.indentation()) {\n          if (state.context == 1 && variables1.test(w))\n            return 'variable-2';\n\n          if (state.context == 2 && variables2.test(w))\n            return 'variable-3';\n\n          if (keywords1.test(w)) {\n            state.context = 1;\n            return 'keyword';\n          } else if (keywords2.test(w)) {\n            state.context = 2;\n            return 'keyword';\n          } else if (keywords3.test(w)) {\n            state.context = 3;\n            return 'keyword';\n          }\n\n          if (errors.test(w))\n            return 'error';\n        } else if (numbers.test(w)) {\n          return 'number';\n        } else {\n          return null;\n        }\n      } else if (stream.eat(';')) {\n        stream.skipToEnd();\n        return 'comment';\n      } else if (stream.eat('\"')) {\n        while (w = stream.next()) {\n          if (w == '\"')\n            break;\n\n          if (w == '\\\\')\n            stream.next();\n        }\n        return 'string';\n      } else if (stream.eat('\\'')) {\n        if (stream.match(/\\\\?.'/))\n          return 'number';\n      } else if (stream.eat('.') || stream.sol() && stream.eat('#')) {\n        state.context = 4;\n\n        if (stream.eatWhile(/\\w/))\n          return 'def';\n      } else if (stream.eat('$')) {\n        if (stream.eatWhile(/[\\da-f]/i))\n          return 'number';\n      } else if (stream.eat('%')) {\n        if (stream.eatWhile(/[01]/))\n          return 'number';\n      } else {\n        stream.next();\n      }\n      return null;\n    }\n  };\n});\n\nCodeMirror.defineMIME(\"text/x-z80\", \"z80\");\n\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/package.json",
    "content": "{\n    \"name\": \"codemirror\",\n    \"version\":\"5.0.0\",\n    \"main\": \"lib/codemirror.js\",\n    \"description\": \"In-browser code editing made bearable\",\n    \"licenses\": [{\"type\": \"MIT\",\n                  \"url\": \"http://codemirror.net/LICENSE\"}],\n    \"directories\": {\"lib\": \"./lib\"},\n    \"scripts\": {\"test\": \"node ./test/run.js\"},\n    \"devDependencies\": {\"node-static\": \"0.6.0\",\n                        \"phantomjs\": \"1.9.2-5\",\n                        \"blint\": \">=0.1.1\"},\n    \"bugs\": \"http://github.com/codemirror/CodeMirror/issues\",\n    \"keywords\": [\"JavaScript\", \"CodeMirror\", \"Editor\"],\n    \"homepage\": \"http://codemirror.net\",\n    \"maintainers\":[{\"name\": \"Marijn Haverbeke\",\n                    \"email\": \"marijnh@gmail.com\",\n                    \"web\": \"http://marijnhaverbeke.nl\"}],\n    \"repository\": {\"type\": \"git\",\n                   \"url\": \"https://github.com/codemirror/CodeMirror.git\"}\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/3024-day.css",
    "content": "/*\n\n    Name:       3024 day\n    Author:     Jan T. Sott (http://github.com/idleberg)\n\n    CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)\n    Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)\n\n*/\n\n.cm-s-3024-day.CodeMirror {background: #f7f7f7; color: #3a3432;}\n.cm-s-3024-day div.CodeMirror-selected {background: #d6d5d4 !important;}\n.cm-s-3024-day.CodeMirror ::selection { background: #d6d5d4; }\n.cm-s-3024-day.CodeMirror ::-moz-selection { background: #d9d9d9; }\n\n.cm-s-3024-day .CodeMirror-gutters {background: #f7f7f7; border-right: 0px;}\n.cm-s-3024-day .CodeMirror-guttermarker { color: #db2d20; }\n.cm-s-3024-day .CodeMirror-guttermarker-subtle { color: #807d7c; }\n.cm-s-3024-day .CodeMirror-linenumber {color: #807d7c;}\n\n.cm-s-3024-day .CodeMirror-cursor {border-left: 1px solid #5c5855 !important;}\n\n.cm-s-3024-day span.cm-comment {color: #cdab53;}\n.cm-s-3024-day span.cm-atom {color: #a16a94;}\n.cm-s-3024-day span.cm-number {color: #a16a94;}\n\n.cm-s-3024-day span.cm-property, .cm-s-3024-day span.cm-attribute {color: #01a252;}\n.cm-s-3024-day span.cm-keyword {color: #db2d20;}\n.cm-s-3024-day span.cm-string {color: #fded02;}\n\n.cm-s-3024-day span.cm-variable {color: #01a252;}\n.cm-s-3024-day span.cm-variable-2 {color: #01a0e4;}\n.cm-s-3024-day span.cm-def {color: #e8bbd0;}\n.cm-s-3024-day span.cm-bracket {color: #3a3432;}\n.cm-s-3024-day span.cm-tag {color: #db2d20;}\n.cm-s-3024-day span.cm-link {color: #a16a94;}\n.cm-s-3024-day span.cm-error {background: #db2d20; color: #5c5855;}\n\n.cm-s-3024-day .CodeMirror-activeline-background {background: #e8f2ff !important;}\n.cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: #a16a94 !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/3024-night.css",
    "content": "/*\n\n    Name:       3024 night\n    Author:     Jan T. Sott (http://github.com/idleberg)\n\n    CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)\n    Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)\n\n*/\n\n.cm-s-3024-night.CodeMirror {background: #090300; color: #d6d5d4;}\n.cm-s-3024-night div.CodeMirror-selected {background: #3a3432 !important;}\n.cm-s-3024-night.CodeMirror ::selection { background: rgba(58, 52, 50, .99); }\n.cm-s-3024-night.CodeMirror ::-moz-selection { background: rgba(58, 52, 50, .99); }\n.cm-s-3024-night .CodeMirror-gutters {background: #090300; border-right: 0px;}\n.cm-s-3024-night .CodeMirror-guttermarker { color: #db2d20; }\n.cm-s-3024-night .CodeMirror-guttermarker-subtle { color: #5c5855; }\n.cm-s-3024-night .CodeMirror-linenumber {color: #5c5855;}\n\n.cm-s-3024-night .CodeMirror-cursor {border-left: 1px solid #807d7c !important;}\n\n.cm-s-3024-night span.cm-comment {color: #cdab53;}\n.cm-s-3024-night span.cm-atom {color: #a16a94;}\n.cm-s-3024-night span.cm-number {color: #a16a94;}\n\n.cm-s-3024-night span.cm-property, .cm-s-3024-night span.cm-attribute {color: #01a252;}\n.cm-s-3024-night span.cm-keyword {color: #db2d20;}\n.cm-s-3024-night span.cm-string {color: #fded02;}\n\n.cm-s-3024-night span.cm-variable {color: #01a252;}\n.cm-s-3024-night span.cm-variable-2 {color: #01a0e4;}\n.cm-s-3024-night span.cm-def {color: #e8bbd0;}\n.cm-s-3024-night span.cm-bracket {color: #d6d5d4;}\n.cm-s-3024-night span.cm-tag {color: #db2d20;}\n.cm-s-3024-night span.cm-link {color: #a16a94;}\n.cm-s-3024-night span.cm-error {background: #db2d20; color: #807d7c;}\n\n.cm-s-3024-night .CodeMirror-activeline-background {background: #2F2F2F !important;}\n.cm-s-3024-night .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/ambiance-mobile.css",
    "content": ".cm-s-ambiance.CodeMirror {\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/ambiance.css",
    "content": "/* ambiance theme for codemirror */\n\n/* Color scheme */\n\n.cm-s-ambiance .cm-keyword { color: #cda869; }\n.cm-s-ambiance .cm-atom { color: #CF7EA9; }\n.cm-s-ambiance .cm-number { color: #78CF8A; }\n.cm-s-ambiance .cm-def { color: #aac6e3; }\n.cm-s-ambiance .cm-variable { color: #ffb795; }\n.cm-s-ambiance .cm-variable-2 { color: #eed1b3; }\n.cm-s-ambiance .cm-variable-3 { color: #faded3; }\n.cm-s-ambiance .cm-property { color: #eed1b3; }\n.cm-s-ambiance .cm-operator {color: #fa8d6a;}\n.cm-s-ambiance .cm-comment { color: #555; font-style:italic; }\n.cm-s-ambiance .cm-string { color: #8f9d6a; }\n.cm-s-ambiance .cm-string-2 { color: #9d937c; }\n.cm-s-ambiance .cm-meta { color: #D2A8A1; }\n.cm-s-ambiance .cm-qualifier { color: yellow; }\n.cm-s-ambiance .cm-builtin { color: #9999cc; }\n.cm-s-ambiance .cm-bracket { color: #24C2C7; }\n.cm-s-ambiance .cm-tag { color: #fee4ff }\n.cm-s-ambiance .cm-attribute {  color: #9B859D; }\n.cm-s-ambiance .cm-header {color: blue;}\n.cm-s-ambiance .cm-quote { color: #24C2C7; }\n.cm-s-ambiance .cm-hr { color: pink; }\n.cm-s-ambiance .cm-link { color: #F4C20B; }\n.cm-s-ambiance .cm-special { color: #FF9D00; }\n.cm-s-ambiance .cm-error { color: #AF2018; }\n\n.cm-s-ambiance .CodeMirror-matchingbracket { color: #0f0; }\n.cm-s-ambiance .CodeMirror-nonmatchingbracket { color: #f22; }\n\n.cm-s-ambiance .CodeMirror-selected { background: rgba(255, 255, 255, 0.15); }\n.cm-s-ambiance.CodeMirror-focused .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-ambiance.CodeMirror ::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-ambiance.CodeMirror ::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n\n/* Editor styling */\n\n.cm-s-ambiance.CodeMirror {\n  line-height: 1.40em;\n  color: #E6E1DC;\n  background-color: #202020;\n  -webkit-box-shadow: inset 0 0 10px black;\n  -moz-box-shadow: inset 0 0 10px black;\n  box-shadow: inset 0 0 10px black;\n}\n\n.cm-s-ambiance .CodeMirror-gutters {\n  background: #3D3D3D;\n  border-right: 1px solid #4D4D4D;\n  box-shadow: 0 10px 20px black;\n}\n\n.cm-s-ambiance .CodeMirror-linenumber {\n  text-shadow: 0px 1px 1px #4d4d4d;\n  color: #111;\n  padding: 0 5px;\n}\n\n.cm-s-ambiance .CodeMirror-guttermarker { color: #aaa; }\n.cm-s-ambiance .CodeMirror-guttermarker-subtle { color: #111; }\n\n.cm-s-ambiance .CodeMirror-lines .CodeMirror-cursor {\n  border-left: 1px solid #7991E8;\n}\n\n.cm-s-ambiance .CodeMirror-activeline-background {\n  background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031);\n}\n\n.cm-s-ambiance.CodeMirror,\n.cm-s-ambiance .CodeMirror-gutters {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC\");\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/base16-dark.css",
    "content": "/*\n\n    Name:       Base16 Default Dark\n    Author:     Chris Kempson (http://chriskempson.com)\n\n    CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-chrome-devtools)\n    Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)\n\n*/\n\n.cm-s-base16-dark.CodeMirror {background: #151515; color: #e0e0e0;}\n.cm-s-base16-dark div.CodeMirror-selected {background: #303030 !important;}\n.cm-s-base16-dark.CodeMirror ::selection { background: rgba(48, 48, 48, .99); }\n.cm-s-base16-dark.CodeMirror ::-moz-selection { background: rgba(48, 48, 48, .99); }\n.cm-s-base16-dark .CodeMirror-gutters {background: #151515; border-right: 0px;}\n.cm-s-base16-dark .CodeMirror-guttermarker { color: #ac4142; }\n.cm-s-base16-dark .CodeMirror-guttermarker-subtle { color: #505050; }\n.cm-s-base16-dark .CodeMirror-linenumber {color: #505050;}\n.cm-s-base16-dark .CodeMirror-cursor {border-left: 1px solid #b0b0b0 !important;}\n\n.cm-s-base16-dark span.cm-comment {color: #8f5536;}\n.cm-s-base16-dark span.cm-atom {color: #aa759f;}\n.cm-s-base16-dark span.cm-number {color: #aa759f;}\n\n.cm-s-base16-dark span.cm-property, .cm-s-base16-dark span.cm-attribute {color: #90a959;}\n.cm-s-base16-dark span.cm-keyword {color: #ac4142;}\n.cm-s-base16-dark span.cm-string {color: #f4bf75;}\n\n.cm-s-base16-dark span.cm-variable {color: #90a959;}\n.cm-s-base16-dark span.cm-variable-2 {color: #6a9fb5;}\n.cm-s-base16-dark span.cm-def {color: #d28445;}\n.cm-s-base16-dark span.cm-bracket {color: #e0e0e0;}\n.cm-s-base16-dark span.cm-tag {color: #ac4142;}\n.cm-s-base16-dark span.cm-link {color: #aa759f;}\n.cm-s-base16-dark span.cm-error {background: #ac4142; color: #b0b0b0;}\n\n.cm-s-base16-dark .CodeMirror-activeline-background {background: #202020 !important;}\n.cm-s-base16-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/base16-light.css",
    "content": "/*\n\n    Name:       Base16 Default Light\n    Author:     Chris Kempson (http://chriskempson.com)\n\n    CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-chrome-devtools)\n    Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)\n\n*/\n\n.cm-s-base16-light.CodeMirror {background: #f5f5f5; color: #202020;}\n.cm-s-base16-light div.CodeMirror-selected {background: #e0e0e0 !important;}\n.cm-s-base16-light.CodeMirror ::selection { background: #e0e0e0; }\n.cm-s-base16-light.CodeMirror ::-moz-selection { background: #e0e0e0; }\n.cm-s-base16-light .CodeMirror-gutters {background: #f5f5f5; border-right: 0px;}\n.cm-s-base16-light .CodeMirror-guttermarker { color: #ac4142; }\n.cm-s-base16-light .CodeMirror-guttermarker-subtle { color: #b0b0b0; }\n.cm-s-base16-light .CodeMirror-linenumber {color: #b0b0b0;}\n.cm-s-base16-light .CodeMirror-cursor {border-left: 1px solid #505050 !important;}\n\n.cm-s-base16-light span.cm-comment {color: #8f5536;}\n.cm-s-base16-light span.cm-atom {color: #aa759f;}\n.cm-s-base16-light span.cm-number {color: #aa759f;}\n\n.cm-s-base16-light span.cm-property, .cm-s-base16-light span.cm-attribute {color: #90a959;}\n.cm-s-base16-light span.cm-keyword {color: #ac4142;}\n.cm-s-base16-light span.cm-string {color: #f4bf75;}\n\n.cm-s-base16-light span.cm-variable {color: #90a959;}\n.cm-s-base16-light span.cm-variable-2 {color: #6a9fb5;}\n.cm-s-base16-light span.cm-def {color: #d28445;}\n.cm-s-base16-light span.cm-bracket {color: #202020;}\n.cm-s-base16-light span.cm-tag {color: #ac4142;}\n.cm-s-base16-light span.cm-link {color: #aa759f;}\n.cm-s-base16-light span.cm-error {background: #ac4142; color: #505050;}\n\n.cm-s-base16-light .CodeMirror-activeline-background {background: #DDDCDC !important;}\n.cm-s-base16-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/blackboard.css",
    "content": "/* Port of TextMate's Blackboard theme */\n\n.cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; }\n.cm-s-blackboard .CodeMirror-selected { background: #253B76 !important; }\n.cm-s-blackboard.CodeMirror ::selection { background: rgba(37, 59, 118, .99); }\n.cm-s-blackboard.CodeMirror ::-moz-selection { background: rgba(37, 59, 118, .99); }\n.cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right: 0; }\n.cm-s-blackboard .CodeMirror-guttermarker { color: #FBDE2D; }\n.cm-s-blackboard .CodeMirror-guttermarker-subtle { color: #888; }\n.cm-s-blackboard .CodeMirror-linenumber { color: #888; }\n.cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7 !important; }\n\n.cm-s-blackboard .cm-keyword { color: #FBDE2D; }\n.cm-s-blackboard .cm-atom { color: #D8FA3C; }\n.cm-s-blackboard .cm-number { color: #D8FA3C; }\n.cm-s-blackboard .cm-def { color: #8DA6CE; }\n.cm-s-blackboard .cm-variable { color: #FF6400; }\n.cm-s-blackboard .cm-operator { color: #FBDE2D;}\n.cm-s-blackboard .cm-comment { color: #AEAEAE; }\n.cm-s-blackboard .cm-string { color: #61CE3C; }\n.cm-s-blackboard .cm-string-2 { color: #61CE3C; }\n.cm-s-blackboard .cm-meta { color: #D8FA3C; }\n.cm-s-blackboard .cm-builtin { color: #8DA6CE; }\n.cm-s-blackboard .cm-tag { color: #8DA6CE; }\n.cm-s-blackboard .cm-attribute { color: #8DA6CE; }\n.cm-s-blackboard .cm-header { color: #FF6400; }\n.cm-s-blackboard .cm-hr { color: #AEAEAE; }\n.cm-s-blackboard .cm-link { color: #8DA6CE; }\n.cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; }\n\n.cm-s-blackboard .CodeMirror-activeline-background {background: #3C3636 !important;}\n.cm-s-blackboard .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/cobalt.css",
    "content": ".cm-s-cobalt.CodeMirror { background: #002240; color: white; }\n.cm-s-cobalt div.CodeMirror-selected { background: #b36539 !important; }\n.cm-s-cobalt.CodeMirror ::selection { background: rgba(179, 101, 57, .99); }\n.cm-s-cobalt.CodeMirror ::-moz-selection { background: rgba(179, 101, 57, .99); }\n.cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; }\n.cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; }\n.cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; }\n.cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; }\n.cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white !important; }\n\n.cm-s-cobalt span.cm-comment { color: #08f; }\n.cm-s-cobalt span.cm-atom { color: #845dc4; }\n.cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; }\n.cm-s-cobalt span.cm-keyword { color: #ffee80; }\n.cm-s-cobalt span.cm-string { color: #3ad900; }\n.cm-s-cobalt span.cm-meta { color: #ff9d00; }\n.cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; }\n.cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; }\n.cm-s-cobalt span.cm-bracket { color: #d8d8d8; }\n.cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; }\n.cm-s-cobalt span.cm-link { color: #845dc4; }\n.cm-s-cobalt span.cm-error { color: #9d1e15; }\n\n.cm-s-cobalt .CodeMirror-activeline-background {background: #002D57 !important;}\n.cm-s-cobalt .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/colorforth.css",
    "content": ".cm-s-colorforth.CodeMirror { background: #000000; color: #f8f8f8; }\n.cm-s-colorforth .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; }\n.cm-s-colorforth .CodeMirror-guttermarker { color: #FFBD40; }\n.cm-s-colorforth .CodeMirror-guttermarker-subtle { color: #78846f; }\n.cm-s-colorforth .CodeMirror-linenumber { color: #bababa; }\n.cm-s-colorforth .CodeMirror-cursor { border-left: 1px solid white !important; }\n\n.cm-s-colorforth span.cm-comment     { color: #ededed; }\n.cm-s-colorforth span.cm-def         { color: #ff1c1c; font-weight:bold; }\n.cm-s-colorforth span.cm-keyword     { color: #ffd900; }\n.cm-s-colorforth span.cm-builtin     { color: #00d95a; }\n.cm-s-colorforth span.cm-variable    { color: #73ff00; }\n.cm-s-colorforth span.cm-string      { color: #007bff; }\n.cm-s-colorforth span.cm-number      { color: #00c4ff; }\n.cm-s-colorforth span.cm-atom        { color: #606060; }\n\n.cm-s-colorforth span.cm-variable-2  { color: #EEE; }\n.cm-s-colorforth span.cm-variable-3  { color: #DDD; }\n.cm-s-colorforth span.cm-property    {}\n.cm-s-colorforth span.cm-operator    {}\n\n.cm-s-colorforth span.cm-meta        { color: yellow; }\n.cm-s-colorforth span.cm-qualifier   { color: #FFF700; }\n.cm-s-colorforth span.cm-bracket     { color: #cc7; }\n.cm-s-colorforth span.cm-tag         { color: #FFBD40; }\n.cm-s-colorforth span.cm-attribute   { color: #FFF700; }\n.cm-s-colorforth span.cm-error       { color: #f00; }\n\n.cm-s-colorforth .CodeMirror-selected { background: #333d53 !important; }\n\n.cm-s-colorforth span.cm-compilation { background: rgba(255, 255, 255, 0.12); }\n\n.cm-s-colorforth .CodeMirror-activeline-background {background: #253540 !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/eclipse.css",
    "content": ".cm-s-eclipse span.cm-meta {color: #FF1717;}\n.cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; }\n.cm-s-eclipse span.cm-atom {color: #219;}\n.cm-s-eclipse span.cm-number {color: #164;}\n.cm-s-eclipse span.cm-def {color: #00f;}\n.cm-s-eclipse span.cm-variable {color: black;}\n.cm-s-eclipse span.cm-variable-2 {color: #0000C0;}\n.cm-s-eclipse span.cm-variable-3 {color: #0000C0;}\n.cm-s-eclipse span.cm-property {color: black;}\n.cm-s-eclipse span.cm-operator {color: black;}\n.cm-s-eclipse span.cm-comment {color: #3F7F5F;}\n.cm-s-eclipse span.cm-string {color: #2A00FF;}\n.cm-s-eclipse span.cm-string-2 {color: #f50;}\n.cm-s-eclipse span.cm-qualifier {color: #555;}\n.cm-s-eclipse span.cm-builtin {color: #30a;}\n.cm-s-eclipse span.cm-bracket {color: #cc7;}\n.cm-s-eclipse span.cm-tag {color: #170;}\n.cm-s-eclipse span.cm-attribute {color: #00c;}\n.cm-s-eclipse span.cm-link {color: #219;}\n.cm-s-eclipse span.cm-error {color: #f00;}\n\n.cm-s-eclipse .CodeMirror-activeline-background {background: #e8f2ff !important;}\n.cm-s-eclipse .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/elegant.css",
    "content": ".cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom {color: #762;}\n.cm-s-elegant span.cm-comment {color: #262; font-style: italic; line-height: 1em;}\n.cm-s-elegant span.cm-meta {color: #555; font-style: italic; line-height: 1em;}\n.cm-s-elegant span.cm-variable {color: black;}\n.cm-s-elegant span.cm-variable-2 {color: #b11;}\n.cm-s-elegant span.cm-qualifier {color: #555;}\n.cm-s-elegant span.cm-keyword {color: #730;}\n.cm-s-elegant span.cm-builtin {color: #30a;}\n.cm-s-elegant span.cm-link {color: #762;}\n.cm-s-elegant span.cm-error {background-color: #fdd;}\n\n.cm-s-elegant .CodeMirror-activeline-background {background: #e8f2ff !important;}\n.cm-s-elegant .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/erlang-dark.css",
    "content": ".cm-s-erlang-dark.CodeMirror { background: #002240; color: white; }\n.cm-s-erlang-dark div.CodeMirror-selected { background: #b36539 !important; }\n.cm-s-erlang-dark.CodeMirror ::selection { background: rgba(179, 101, 57, .99); }\n.cm-s-erlang-dark.CodeMirror ::-moz-selection { background: rgba(179, 101, 57, .99); }\n.cm-s-erlang-dark .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; }\n.cm-s-erlang-dark .CodeMirror-guttermarker { color: white; }\n.cm-s-erlang-dark .CodeMirror-guttermarker-subtle { color: #d0d0d0; }\n.cm-s-erlang-dark .CodeMirror-linenumber { color: #d0d0d0; }\n.cm-s-erlang-dark .CodeMirror-cursor { border-left: 1px solid white !important; }\n\n.cm-s-erlang-dark span.cm-atom       { color: #f133f1; }\n.cm-s-erlang-dark span.cm-attribute  { color: #ff80e1; }\n.cm-s-erlang-dark span.cm-bracket    { color: #ff9d00; }\n.cm-s-erlang-dark span.cm-builtin    { color: #eaa; }\n.cm-s-erlang-dark span.cm-comment    { color: #77f; }\n.cm-s-erlang-dark span.cm-def        { color: #e7a; }\n.cm-s-erlang-dark span.cm-keyword    { color: #ffee80; }\n.cm-s-erlang-dark span.cm-meta       { color: #50fefe; }\n.cm-s-erlang-dark span.cm-number     { color: #ffd0d0; }\n.cm-s-erlang-dark span.cm-operator   { color: #d55; }\n.cm-s-erlang-dark span.cm-property   { color: #ccc; }\n.cm-s-erlang-dark span.cm-qualifier  { color: #ccc; }\n.cm-s-erlang-dark span.cm-quote      { color: #ccc; }\n.cm-s-erlang-dark span.cm-special    { color: #ffbbbb; }\n.cm-s-erlang-dark span.cm-string     { color: #3ad900; }\n.cm-s-erlang-dark span.cm-string-2   { color: #ccc; }\n.cm-s-erlang-dark span.cm-tag        { color: #9effff; }\n.cm-s-erlang-dark span.cm-variable   { color: #50fe50; }\n.cm-s-erlang-dark span.cm-variable-2 { color: #e0e; }\n.cm-s-erlang-dark span.cm-variable-3 { color: #ccc; }\n.cm-s-erlang-dark span.cm-error      { color: #9d1e15; }\n\n.cm-s-erlang-dark .CodeMirror-activeline-background {background: #013461 !important;}\n.cm-s-erlang-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/lesser-dark.css",
    "content": "/*\nhttp://lesscss.org/ dark theme\nPorted to CodeMirror by Peter Kroon\n*/\n.cm-s-lesser-dark {\n  line-height: 1.3em;\n}\n.cm-s-lesser-dark.CodeMirror { background: #262626; color: #EBEFE7; text-shadow: 0 -1px 1px #262626; }\n.cm-s-lesser-dark div.CodeMirror-selected {background: #45443B !important;} /* 33322B*/\n.cm-s-lesser-dark.CodeMirror ::selection { background: rgba(69, 68, 59, .99); }\n.cm-s-lesser-dark.CodeMirror ::-moz-selection { background: rgba(69, 68, 59, .99); }\n.cm-s-lesser-dark .CodeMirror-cursor { border-left: 1px solid white !important; }\n.cm-s-lesser-dark pre { padding: 0 8px; }/*editable code holder*/\n\n.cm-s-lesser-dark.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/\n\n.cm-s-lesser-dark .CodeMirror-gutters { background: #262626; border-right:1px solid #aaa; }\n.cm-s-lesser-dark .CodeMirror-guttermarker { color: #599eff; }\n.cm-s-lesser-dark .CodeMirror-guttermarker-subtle { color: #777; }\n.cm-s-lesser-dark .CodeMirror-linenumber { color: #777; }\n\n.cm-s-lesser-dark span.cm-keyword { color: #599eff; }\n.cm-s-lesser-dark span.cm-atom { color: #C2B470; }\n.cm-s-lesser-dark span.cm-number { color: #B35E4D; }\n.cm-s-lesser-dark span.cm-def {color: white;}\n.cm-s-lesser-dark span.cm-variable { color:#D9BF8C; }\n.cm-s-lesser-dark span.cm-variable-2 { color: #669199; }\n.cm-s-lesser-dark span.cm-variable-3 { color: white; }\n.cm-s-lesser-dark span.cm-property {color: #92A75C;}\n.cm-s-lesser-dark span.cm-operator {color: #92A75C;}\n.cm-s-lesser-dark span.cm-comment { color: #666; }\n.cm-s-lesser-dark span.cm-string { color: #BCD279; }\n.cm-s-lesser-dark span.cm-string-2 {color: #f50;}\n.cm-s-lesser-dark span.cm-meta { color: #738C73; }\n.cm-s-lesser-dark span.cm-qualifier {color: #555;}\n.cm-s-lesser-dark span.cm-builtin { color: #ff9e59; }\n.cm-s-lesser-dark span.cm-bracket { color: #EBEFE7; }\n.cm-s-lesser-dark span.cm-tag { color: #669199; }\n.cm-s-lesser-dark span.cm-attribute {color: #00c;}\n.cm-s-lesser-dark span.cm-header {color: #a0a;}\n.cm-s-lesser-dark span.cm-quote {color: #090;}\n.cm-s-lesser-dark span.cm-hr {color: #999;}\n.cm-s-lesser-dark span.cm-link {color: #00c;}\n.cm-s-lesser-dark span.cm-error { color: #9d1e15; }\n\n.cm-s-lesser-dark .CodeMirror-activeline-background {background: #3C3A3A !important;}\n.cm-s-lesser-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/mbo.css",
    "content": "/****************************************************************/\n/*   Based on mbonaci's Brackets mbo theme                      */\n/*   https://github.com/mbonaci/global/blob/master/Mbo.tmTheme  */\n/*   Create your own: http://tmtheme-editor.herokuapp.com       */\n/****************************************************************/\n\n.cm-s-mbo.CodeMirror {background: #2c2c2c; color: #ffffec;}\n.cm-s-mbo div.CodeMirror-selected {background: #716C62 !important;}\n.cm-s-mbo.CodeMirror ::selection { background: rgba(113, 108, 98, .99); }\n.cm-s-mbo.CodeMirror ::-moz-selection { background: rgba(113, 108, 98, .99); }\n.cm-s-mbo .CodeMirror-gutters {background: #4e4e4e; border-right: 0px;}\n.cm-s-mbo .CodeMirror-guttermarker { color: white; }\n.cm-s-mbo .CodeMirror-guttermarker-subtle { color: grey; }\n.cm-s-mbo .CodeMirror-linenumber {color: #dadada;}\n.cm-s-mbo .CodeMirror-cursor {border-left: 1px solid #ffffec !important;}\n\n.cm-s-mbo span.cm-comment {color: #95958a;}\n.cm-s-mbo span.cm-atom {color: #00a8c6;}\n.cm-s-mbo span.cm-number {color: #00a8c6;}\n\n.cm-s-mbo span.cm-property, .cm-s-mbo span.cm-attribute {color: #9ddfe9;}\n.cm-s-mbo span.cm-keyword {color: #ffb928;}\n.cm-s-mbo span.cm-string {color: #ffcf6c;}\n.cm-s-mbo span.cm-string.cm-property {color: #ffffec;}\n\n.cm-s-mbo span.cm-variable {color: #ffffec;}\n.cm-s-mbo span.cm-variable-2 {color: #00a8c6;}\n.cm-s-mbo span.cm-def {color: #ffffec;}\n.cm-s-mbo span.cm-bracket {color: #fffffc; font-weight: bold;}\n.cm-s-mbo span.cm-tag {color: #9ddfe9;}\n.cm-s-mbo span.cm-link {color: #f54b07;}\n.cm-s-mbo span.cm-error {border-bottom: #636363; color: #ffffec;}\n.cm-s-mbo span.cm-qualifier {color: #ffffec;}\n\n.cm-s-mbo .CodeMirror-activeline-background {background: #494b41 !important;}\n.cm-s-mbo .CodeMirror-matchingbracket {color: #222 !important;}\n.cm-s-mbo .CodeMirror-matchingtag {background: rgba(255, 255, 255, .37);}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/mdn-like.css",
    "content": "/*\n  MDN-LIKE Theme - Mozilla\n  Ported to CodeMirror by Peter Kroon <plakroon@gmail.com>\n  Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues\n  GitHub: @peterkroon\n\n  The mdn-like theme is inspired on the displayed code examples at: https://developer.mozilla.org/en-US/docs/Web/CSS/animation\n\n*/\n.cm-s-mdn-like.CodeMirror { color: #999; background-color: #fff; }\n.cm-s-mdn-like .CodeMirror-selected { background: #cfc !important; }\n.cm-s-mdn-like.CodeMirror ::selection { background: #cfc; }\n.cm-s-mdn-like.CodeMirror ::-moz-selection { background: #cfc; }\n\n.cm-s-mdn-like .CodeMirror-gutters { background: #f8f8f8; border-left: 6px solid rgba(0,83,159,0.65); color: #333; }\n.cm-s-mdn-like .CodeMirror-linenumber { color: #aaa; margin-left: 3px; }\ndiv.cm-s-mdn-like .CodeMirror-cursor { border-left: 2px solid #222; }\n\n.cm-s-mdn-like .cm-keyword {  color: #6262FF; }\n.cm-s-mdn-like .cm-atom { color: #F90; }\n.cm-s-mdn-like .cm-number { color:  #ca7841; }\n.cm-s-mdn-like .cm-def { color: #8DA6CE; }\n.cm-s-mdn-like span.cm-variable-2, .cm-s-mdn-like span.cm-tag { color: #690; }\n.cm-s-mdn-like span.cm-variable-3, .cm-s-mdn-like span.cm-def { color: #07a; }\n\n.cm-s-mdn-like .cm-variable { color: #07a; }\n.cm-s-mdn-like .cm-property { color: #905; }\n.cm-s-mdn-like .cm-qualifier { color: #690; }\n\n.cm-s-mdn-like .cm-operator { color: #cda869; }\n.cm-s-mdn-like .cm-comment { color:#777; font-weight:normal; }\n.cm-s-mdn-like .cm-string { color:#07a; font-style:italic; }\n.cm-s-mdn-like .cm-string-2 { color:#bd6b18; } /*?*/\n.cm-s-mdn-like .cm-meta { color: #000; } /*?*/\n.cm-s-mdn-like .cm-builtin { color: #9B7536; } /*?*/\n.cm-s-mdn-like .cm-tag { color: #997643; }\n.cm-s-mdn-like .cm-attribute { color: #d6bb6d; } /*?*/\n.cm-s-mdn-like .cm-header { color: #FF6400; }\n.cm-s-mdn-like .cm-hr { color: #AEAEAE; }\n.cm-s-mdn-like .cm-link {   color:#ad9361; font-style:italic; text-decoration:none; }\n.cm-s-mdn-like .cm-error { border-bottom: 1px solid red; }\n\ndiv.cm-s-mdn-like .CodeMirror-activeline-background {background: #efefff;}\ndiv.cm-s-mdn-like span.CodeMirror-matchingbracket {outline:1px solid grey; color: inherit;}\n\n.cm-s-mdn-like.CodeMirror { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAyCAYAAAAp8UeFAAAHvklEQVR42s2b63bcNgyEQZCSHCdt2vd/0tWF7I+Q6XgMXiTtuvU5Pl57ZQKkKHzEAOtF5KeIJBGJ8uvL599FRFREZhFx8DeXv8trn68RuGaC8TRfo3SNp9dlDDHedyLyTUTeRWStXKPZrjtpZxaRw5hPqozRs1N8/enzIiQRWcCgy4MUA0f+XWliDhyL8Lfyvx7ei/Ae3iQFHyw7U/59pQVIMEEPEz0G7XiwdRjzSfC3UTtz9vchIntxvry5iMgfIhJoEflOz2CQr3F5h/HfeFe+GTdLaKcu9L8LTeQb/R/7GgbsfKedyNdoHsN31uRPWrfZ5wsj/NzzRQHuToIdU3ahwnsKPxXCjJITuOsi7XLc7SG/v5GdALs7wf8JjTFiB5+QvTEfRyGOfX3Lrx8wxyQi3sNq46O7QahQiCsRFgqddjBouVEHOKDgXAQHD9gJCr5sMKkEdjwsarG/ww3BMHBU7OBjXnzdyY7SfCxf5/z6ATccrwlKuwC/jhznnPF4CgVzhhVf4xp2EixcBActO75iZ8/fM9zAs2OMzKdslgXWJ9XG8PQoOAMA5fGcsvORgv0doBXyHrCwfLJAOwo71QLNkb8n2Pl6EWiR7OCibtkPaz4Kc/0NNAze2gju3zOwekALDaCFPI5vjPFmgGY5AZqyGEvH1x7QfIb8YtxMnA/b+QQ0aQDAwc6JMFg8CbQZ4qoYEEHbRwNojuK3EHwd7VALSgq+MNDKzfT58T8qdpADrgW0GmgcAS1lhzztJmkAzcPNOQbsWEALBDSlMKUG0Eq4CLAQWvEVQ9WU57gZJwZtgPO3r9oBTQ9WO8TjqXINx8R0EYpiZEUWOF3FxkbJkgU9B2f41YBrIj5ZfsQa0M5kTgiAAqM3ShXLgu8XMqcrQBvJ0CL5pnTsfMB13oB8athpAq2XOQmcGmoACCLydx7nToa23ATaSIY2ichfOdPTGxlasXMLaL0MLZAOwAKIM+y8CmicobGdCcbbK9DzN+yYGVoNNI5iUKTMyYOjPse4A8SM1MmcXgU0toOq1yO/v8FOxlASyc7TgeYaAMBJHcY1CcCwGI/TK4AmDbDyKYBBtFUkRwto8gygiQEaByFgJ00BH2M8JWwQS1nafDXQCidWyOI8AcjDCSjCLk8ngObuAm3JAHAdubAmOaK06V8MNEsKPJOhobSprwQa6gD7DclRQdqcwL4zxqgBrQcabUiBLclRDKAlWp+etPkBaNMA0AKlrHwTdEByZAA4GM+SNluSY6wAzcMNewxmgig5Ks0nkrSpBvSaQHMdKTBAnLojOdYyGpQ254602ZILPdTD1hdlggdIm74jbTp8vDwF5ZYUeLWGJpWsh6XNyXgcYwVoJQTEhhTYkxzZjiU5npU2TaB979TQehlaAVq4kaGpiPwwwLkYUuBbQwocyQTv1tA0+1UFWoJF3iv1oq+qoSk8EQdJmwHkziIF7oOZk14EGitibAdjLYYK78H5vZOhtWpoI0ATGHs0Q8OMb4Ey+2bU2UYztCtA0wFAs7TplGLRVQCcqaFdGSPCeTI1QNIC52iWNzof6Uib7xjEp07mNNoUYmVosVItHrHzRlLgBn9LFyRHaQCtVUMbtTNhoXWiTOO9k/V8BdAc1Oq0ArSQs6/5SU0hckNy9NnXqQY0PGYo5dWJ7nINaN6o958FWin27aBaWRka1r5myvLOAm0j30eBJqCxHLReVclxhxOEN2JfDWjxBtAC7MIH1fVaGdoOp4qJYDgKtKPSFNID2gSnGldrCqkFZ+5UeQXQBIRrSwocbdZYQT/2LwRahBPBXoHrB8nxaGROST62DKUbQOMMzZIC9abkuELfQzQALWTnDNAm8KHWFOJgJ5+SHIvTPcmx1xQyZRhNL5Qci689aXMEaN/uNIWkEwDAvFpOZmgsBaaGnbs1NPa1Jm32gBZAIh1pCtG7TSH4aE0y1uVY4uqoFPisGlpP2rSA5qTecWn5agK6BzSpgAyD+wFaqhnYoSZ1Vwr8CmlTQbrcO3ZaX0NAEyMbYaAlyquFoLKK3SPby9CeVUPThrSJmkCAE0CrKUQadi4DrdSlWhmah0YL9z9vClH59YGbHx1J8VZTyAjQepJjmXwAKTDQI3omc3p1U4gDUf6RfcdYfrUp5ClAi2J3Ba6UOXGo+K+bQrjjssitG2SJzshaLwMtXgRagUNpYYoVkMSBLM+9GGiJZMvduG6DRZ4qc04DMPtQQxOjEtACmhO7K1AbNbQDEggZyJwscFpAGwENhoBeUwh3bWolhe8BTYVKxQEWrSUn/uhcM5KhvUu/+eQu0Lzhi+VrK0PrZZNDQKs9cpYUuFYgMVpD4/NxenJTiMCNqdUEUf1qZWjppLT5qSkkUZbCwkbZMSuVnu80hfSkzRbQeqCZSAh6huR4VtoM2gHAlLf72smuWgE+VV7XpE25Ab2WFDgyhnSuKbs4GuGzCjR+tIoUuMFg3kgcWKLTwRqanJQ2W00hAsenfaApRC42hbCvK1SlE0HtE9BGgneJO+ELamitD1YjjOYnNYVcraGhtKkW0EqVVeDx733I2NH581k1NNxNLG0i0IJ8/NjVaOZ0tYZ2Vtr0Xv7tPV3hkWp9EFkgS/J0vosngTaSoaG06WHi+xObQkaAdlbanP8B2+2l0f90LmUAAAAASUVORK5CYII=); }\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/midnight.css",
    "content": "/* Based on the theme at http://bonsaiden.github.com/JavaScript-Garden */\n\n/*<!--match-->*/\n.cm-s-midnight span.CodeMirror-matchhighlight { background: #494949; }\n.cm-s-midnight.CodeMirror-focused span.CodeMirror-matchhighlight { background: #314D67 !important; }\n\n/*<!--activeline-->*/\n.cm-s-midnight .CodeMirror-activeline-background {background: #253540 !important;}\n\n.cm-s-midnight.CodeMirror {\n    background: #0F192A;\n    color: #D1EDFF;\n}\n\n.cm-s-midnight.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}\n\n.cm-s-midnight div.CodeMirror-selected {background: #314D67 !important;}\n.cm-s-midnight.CodeMirror ::selection { background: rgba(49, 77, 103, .99); }\n.cm-s-midnight.CodeMirror ::-moz-selection { background: rgba(49, 77, 103, .99); }\n.cm-s-midnight .CodeMirror-gutters {background: #0F192A; border-right: 1px solid;}\n.cm-s-midnight .CodeMirror-guttermarker { color: white; }\n.cm-s-midnight .CodeMirror-guttermarker-subtle { color: #d0d0d0; }\n.cm-s-midnight .CodeMirror-linenumber {color: #D0D0D0;}\n.cm-s-midnight .CodeMirror-cursor {\n    border-left: 1px solid #F8F8F0 !important;\n}\n\n.cm-s-midnight span.cm-comment {color: #428BDD;}\n.cm-s-midnight span.cm-atom {color: #AE81FF;}\n.cm-s-midnight span.cm-number {color: #D1EDFF;}\n\n.cm-s-midnight span.cm-property, .cm-s-midnight span.cm-attribute {color: #A6E22E;}\n.cm-s-midnight span.cm-keyword {color: #E83737;}\n.cm-s-midnight span.cm-string {color: #1DC116;}\n\n.cm-s-midnight span.cm-variable {color: #FFAA3E;}\n.cm-s-midnight span.cm-variable-2 {color: #FFAA3E;}\n.cm-s-midnight span.cm-def {color: #4DD;}\n.cm-s-midnight span.cm-bracket {color: #D1EDFF;}\n.cm-s-midnight span.cm-tag {color: #449;}\n.cm-s-midnight span.cm-link {color: #AE81FF;}\n.cm-s-midnight span.cm-error {background: #F92672; color: #F8F8F0;}\n\n.cm-s-midnight .CodeMirror-matchingbracket {\n  text-decoration: underline;\n  color: white !important;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/monokai.css",
    "content": "/* Based on Sublime Text's Monokai theme */\n\n.cm-s-monokai.CodeMirror {background: #272822; color: #f8f8f2;}\n.cm-s-monokai div.CodeMirror-selected {background: #49483E !important;}\n.cm-s-monokai.CodeMirror ::selection { background: rgba(73, 72, 62, .99); }\n.cm-s-monokai.CodeMirror ::-moz-selection { background: rgba(73, 72, 62, .99); }\n.cm-s-monokai .CodeMirror-gutters {background: #272822; border-right: 0px;}\n.cm-s-monokai .CodeMirror-guttermarker { color: white; }\n.cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; }\n.cm-s-monokai .CodeMirror-linenumber {color: #d0d0d0;}\n.cm-s-monokai .CodeMirror-cursor {border-left: 1px solid #f8f8f0 !important;}\n\n.cm-s-monokai span.cm-comment {color: #75715e;}\n.cm-s-monokai span.cm-atom {color: #ae81ff;}\n.cm-s-monokai span.cm-number {color: #ae81ff;}\n\n.cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute {color: #a6e22e;}\n.cm-s-monokai span.cm-keyword {color: #f92672;}\n.cm-s-monokai span.cm-string {color: #e6db74;}\n\n.cm-s-monokai span.cm-variable {color: #a6e22e;}\n.cm-s-monokai span.cm-variable-2 {color: #9effff;}\n.cm-s-monokai span.cm-def {color: #fd971f;}\n.cm-s-monokai span.cm-bracket {color: #f8f8f2;}\n.cm-s-monokai span.cm-tag {color: #f92672;}\n.cm-s-monokai span.cm-link {color: #ae81ff;}\n.cm-s-monokai span.cm-error {background: #f92672; color: #f8f8f0;}\n\n.cm-s-monokai .CodeMirror-activeline-background {background: #373831 !important;}\n.cm-s-monokai .CodeMirror-matchingbracket {\n  text-decoration: underline;\n  color: white !important;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/neat.css",
    "content": ".cm-s-neat span.cm-comment { color: #a86; }\n.cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; }\n.cm-s-neat span.cm-string { color: #a22; }\n.cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; }\n.cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; }\n.cm-s-neat span.cm-variable { color: black; }\n.cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; }\n.cm-s-neat span.cm-meta {color: #555;}\n.cm-s-neat span.cm-link { color: #3a3; }\n\n.cm-s-neat .CodeMirror-activeline-background {background: #e8f2ff !important;}\n.cm-s-neat .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/neo.css",
    "content": "/* neo theme for codemirror */\n\n/* Color scheme */\n\n.cm-s-neo.CodeMirror {\n  background-color:#ffffff;\n  color:#2e383c;\n  line-height:1.4375;\n}\n.cm-s-neo .cm-comment {color:#75787b}\n.cm-s-neo .cm-keyword, .cm-s-neo .cm-property {color:#1d75b3}\n.cm-s-neo .cm-atom,.cm-s-neo .cm-number {color:#75438a}\n.cm-s-neo .cm-node,.cm-s-neo .cm-tag {color:#9c3328}\n.cm-s-neo .cm-string {color:#b35e14}\n.cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier {color:#047d65}\n\n\n/* Editor styling */\n\n.cm-s-neo pre {\n  padding:0;\n}\n\n.cm-s-neo .CodeMirror-gutters {\n  border:none;\n  border-right:10px solid transparent;\n  background-color:transparent;\n}\n\n.cm-s-neo .CodeMirror-linenumber {\n  padding:0;\n  color:#e0e2e5;\n}\n\n.cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; }\n.cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; }\n\n.cm-s-neo div.CodeMirror-cursor {\n  width: auto;\n  border: 0;\n  background: rgba(155,157,162,0.37);\n  z-index: 1;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/night.css",
    "content": "/* Loosely based on the Midnight Textmate theme */\n\n.cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; }\n.cm-s-night div.CodeMirror-selected { background: #447 !important; }\n.cm-s-night.CodeMirror ::selection { background: rgba(68, 68, 119, .99); }\n.cm-s-night.CodeMirror ::-moz-selection { background: rgba(68, 68, 119, .99); }\n.cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; }\n.cm-s-night .CodeMirror-guttermarker { color: white; }\n.cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; }\n.cm-s-night .CodeMirror-linenumber { color: #f8f8f8; }\n.cm-s-night .CodeMirror-cursor { border-left: 1px solid white !important; }\n\n.cm-s-night span.cm-comment { color: #6900a1; }\n.cm-s-night span.cm-atom { color: #845dc4; }\n.cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; }\n.cm-s-night span.cm-keyword { color: #599eff; }\n.cm-s-night span.cm-string { color: #37f14a; }\n.cm-s-night span.cm-meta { color: #7678e2; }\n.cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; }\n.cm-s-night span.cm-variable-3, .cm-s-night span.cm-def { color: white; }\n.cm-s-night span.cm-bracket { color: #8da6ce; }\n.cm-s-night span.cm-comment { color: #6900a1; }\n.cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; }\n.cm-s-night span.cm-link { color: #845dc4; }\n.cm-s-night span.cm-error { color: #9d1e15; }\n\n.cm-s-night .CodeMirror-activeline-background {background: #1C005A !important;}\n.cm-s-night .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/paraiso-dark.css",
    "content": "/*\n\n    Name:       Paraíso (Dark)\n    Author:     Jan T. Sott\n\n    Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror)\n    Inspired by the art of Rubens LP (http://www.rubenslp.com.br)\n\n*/\n\n.cm-s-paraiso-dark.CodeMirror {background: #2f1e2e; color: #b9b6b0;}\n.cm-s-paraiso-dark div.CodeMirror-selected {background: #41323f !important;}\n.cm-s-paraiso-dark.CodeMirror ::selection { background: rgba(65, 50, 63, .99); }\n.cm-s-paraiso-dark.CodeMirror ::-moz-selection { background: rgba(65, 50, 63, .99); }\n.cm-s-paraiso-dark .CodeMirror-gutters {background: #2f1e2e; border-right: 0px;}\n.cm-s-paraiso-dark .CodeMirror-guttermarker { color: #ef6155; }\n.cm-s-paraiso-dark .CodeMirror-guttermarker-subtle { color: #776e71; }\n.cm-s-paraiso-dark .CodeMirror-linenumber {color: #776e71;}\n.cm-s-paraiso-dark .CodeMirror-cursor {border-left: 1px solid #8d8687 !important;}\n\n.cm-s-paraiso-dark span.cm-comment {color: #e96ba8;}\n.cm-s-paraiso-dark span.cm-atom {color: #815ba4;}\n.cm-s-paraiso-dark span.cm-number {color: #815ba4;}\n\n.cm-s-paraiso-dark span.cm-property, .cm-s-paraiso-dark span.cm-attribute {color: #48b685;}\n.cm-s-paraiso-dark span.cm-keyword {color: #ef6155;}\n.cm-s-paraiso-dark span.cm-string {color: #fec418;}\n\n.cm-s-paraiso-dark span.cm-variable {color: #48b685;}\n.cm-s-paraiso-dark span.cm-variable-2 {color: #06b6ef;}\n.cm-s-paraiso-dark span.cm-def {color: #f99b15;}\n.cm-s-paraiso-dark span.cm-bracket {color: #b9b6b0;}\n.cm-s-paraiso-dark span.cm-tag {color: #ef6155;}\n.cm-s-paraiso-dark span.cm-link {color: #815ba4;}\n.cm-s-paraiso-dark span.cm-error {background: #ef6155; color: #8d8687;}\n\n.cm-s-paraiso-dark .CodeMirror-activeline-background {background: #4D344A !important;}\n.cm-s-paraiso-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/paraiso-light.css",
    "content": "/*\n\n    Name:       Paraíso (Light)\n    Author:     Jan T. Sott\n\n    Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror)\n    Inspired by the art of Rubens LP (http://www.rubenslp.com.br)\n\n*/\n\n.cm-s-paraiso-light.CodeMirror {background: #e7e9db; color: #41323f;}\n.cm-s-paraiso-light div.CodeMirror-selected {background: #b9b6b0 !important;}\n.cm-s-paraiso-light.CodeMirror ::selection { background: #b9b6b0; }\n.cm-s-paraiso-light.CodeMirror ::-moz-selection { background: #b9b6b0; }\n.cm-s-paraiso-light .CodeMirror-gutters {background: #e7e9db; border-right: 0px;}\n.cm-s-paraiso-light .CodeMirror-guttermarker { color: black; }\n.cm-s-paraiso-light .CodeMirror-guttermarker-subtle { color: #8d8687; }\n.cm-s-paraiso-light .CodeMirror-linenumber {color: #8d8687;}\n.cm-s-paraiso-light .CodeMirror-cursor {border-left: 1px solid #776e71 !important;}\n\n.cm-s-paraiso-light span.cm-comment {color: #e96ba8;}\n.cm-s-paraiso-light span.cm-atom {color: #815ba4;}\n.cm-s-paraiso-light span.cm-number {color: #815ba4;}\n\n.cm-s-paraiso-light span.cm-property, .cm-s-paraiso-light span.cm-attribute {color: #48b685;}\n.cm-s-paraiso-light span.cm-keyword {color: #ef6155;}\n.cm-s-paraiso-light span.cm-string {color: #fec418;}\n\n.cm-s-paraiso-light span.cm-variable {color: #48b685;}\n.cm-s-paraiso-light span.cm-variable-2 {color: #06b6ef;}\n.cm-s-paraiso-light span.cm-def {color: #f99b15;}\n.cm-s-paraiso-light span.cm-bracket {color: #41323f;}\n.cm-s-paraiso-light span.cm-tag {color: #ef6155;}\n.cm-s-paraiso-light span.cm-link {color: #815ba4;}\n.cm-s-paraiso-light span.cm-error {background: #ef6155; color: #776e71;}\n\n.cm-s-paraiso-light .CodeMirror-activeline-background {background: #CFD1C4 !important;}\n.cm-s-paraiso-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/pastel-on-dark.css",
    "content": "/**\n * Pastel On Dark theme ported from ACE editor\n * @license MIT\n * @copyright AtomicPages LLC 2014\n * @author Dennis Thompson, AtomicPages LLC\n * @version 1.1\n * @source https://github.com/atomicpages/codemirror-pastel-on-dark-theme\n */\n\n.cm-s-pastel-on-dark.CodeMirror {\n\tbackground: #2c2827;\n\tcolor: #8F938F;\n\tline-height: 1.5;\n\tfont-size: 14px;\n}\n.cm-s-pastel-on-dark div.CodeMirror-selected { background: rgba(221,240,255,0.2) !important; }\n.cm-s-pastel-on-dark.CodeMirror ::selection { background: rgba(221,240,255,0.2); }\n.cm-s-pastel-on-dark.CodeMirror ::-moz-selection { background: rgba(221,240,255,0.2); }\n\n.cm-s-pastel-on-dark .CodeMirror-gutters {\n\tbackground: #34302f;\n\tborder-right: 0px;\n\tpadding: 0 3px;\n}\n.cm-s-pastel-on-dark .CodeMirror-guttermarker { color: white; }\n.cm-s-pastel-on-dark .CodeMirror-guttermarker-subtle { color: #8F938F; }\n.cm-s-pastel-on-dark .CodeMirror-linenumber { color: #8F938F; }\n.cm-s-pastel-on-dark .CodeMirror-cursor { border-left: 1px solid #A7A7A7 !important; }\n.cm-s-pastel-on-dark span.cm-comment { color: #A6C6FF; }\n.cm-s-pastel-on-dark span.cm-atom { color: #DE8E30; }\n.cm-s-pastel-on-dark span.cm-number { color: #CCCCCC; }\n.cm-s-pastel-on-dark span.cm-property { color: #8F938F; }\n.cm-s-pastel-on-dark span.cm-attribute { color: #a6e22e; }\n.cm-s-pastel-on-dark span.cm-keyword { color: #AEB2F8; }\n.cm-s-pastel-on-dark span.cm-string { color: #66A968; }\n.cm-s-pastel-on-dark span.cm-variable { color: #AEB2F8; }\n.cm-s-pastel-on-dark span.cm-variable-2 { color: #BEBF55; }\n.cm-s-pastel-on-dark span.cm-variable-3 { color: #DE8E30; }\n.cm-s-pastel-on-dark span.cm-def { color: #757aD8; }\n.cm-s-pastel-on-dark span.cm-bracket { color: #f8f8f2; }\n.cm-s-pastel-on-dark span.cm-tag { color: #C1C144; }\n.cm-s-pastel-on-dark span.cm-link { color: #ae81ff; }\n.cm-s-pastel-on-dark span.cm-qualifier,.cm-s-pastel-on-dark span.cm-builtin { color: #C1C144; }\n.cm-s-pastel-on-dark span.cm-error {\n\tbackground: #757aD8;\n\tcolor: #f8f8f0;\n}\n.cm-s-pastel-on-dark .CodeMirror-activeline-background { background: rgba(255, 255, 255, 0.031) !important; }\n.cm-s-pastel-on-dark .CodeMirror-matchingbracket {\n\tborder: 1px solid rgba(255,255,255,0.25);\n\tcolor: #8F938F !important;\n\tmargin: -1px -1px 0 -1px;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/rubyblue.css",
    "content": ".cm-s-rubyblue.CodeMirror { background: #112435; color: white; }\n.cm-s-rubyblue div.CodeMirror-selected { background: #38566F !important; }\n.cm-s-rubyblue.CodeMirror ::selection { background: rgba(56, 86, 111, 0.99); }\n.cm-s-rubyblue.CodeMirror ::-moz-selection { background: rgba(56, 86, 111, 0.99); }\n.cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; }\n.cm-s-rubyblue .CodeMirror-guttermarker { color: white; }\n.cm-s-rubyblue .CodeMirror-guttermarker-subtle { color: #3E7087; }\n.cm-s-rubyblue .CodeMirror-linenumber { color: white; }\n.cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white !important; }\n\n.cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; }\n.cm-s-rubyblue span.cm-atom { color: #F4C20B; }\n.cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color: #82C6E0; }\n.cm-s-rubyblue span.cm-keyword { color: #F0F; }\n.cm-s-rubyblue span.cm-string { color: #F08047; }\n.cm-s-rubyblue span.cm-meta { color: #F0F; }\n.cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; }\n.cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def { color: white; }\n.cm-s-rubyblue span.cm-bracket { color: #F0F; }\n.cm-s-rubyblue span.cm-link { color: #F4C20B; }\n.cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; }\n.cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; }\n.cm-s-rubyblue span.cm-error { color: #AF2018; }\n\n.cm-s-rubyblue .CodeMirror-activeline-background {background: #173047 !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/solarized.css",
    "content": "/*\nSolarized theme for code-mirror\nhttp://ethanschoonover.com/solarized\n*/\n\n/*\nSolarized color pallet\nhttp://ethanschoonover.com/solarized/img/solarized-palette.png\n*/\n\n.solarized.base03 { color: #002b36; }\n.solarized.base02 { color: #073642; }\n.solarized.base01 { color: #586e75; }\n.solarized.base00 { color: #657b83; }\n.solarized.base0 { color: #839496; }\n.solarized.base1 { color: #93a1a1; }\n.solarized.base2 { color: #eee8d5; }\n.solarized.base3  { color: #fdf6e3; }\n.solarized.solar-yellow  { color: #b58900; }\n.solarized.solar-orange  { color: #cb4b16; }\n.solarized.solar-red { color: #dc322f; }\n.solarized.solar-magenta { color: #d33682; }\n.solarized.solar-violet  { color: #6c71c4; }\n.solarized.solar-blue { color: #268bd2; }\n.solarized.solar-cyan { color: #2aa198; }\n.solarized.solar-green { color: #859900; }\n\n/* Color scheme for code-mirror */\n\n.cm-s-solarized {\n  line-height: 1.45em;\n  color-profile: sRGB;\n  rendering-intent: auto;\n}\n.cm-s-solarized.cm-s-dark {\n  color: #839496;\n  background-color:  #002b36;\n  text-shadow: #002b36 0 1px;\n}\n.cm-s-solarized.cm-s-light {\n  background-color: #fdf6e3;\n  color: #657b83;\n  text-shadow: #eee8d5 0 1px;\n}\n\n.cm-s-solarized .CodeMirror-widget {\n  text-shadow: none;\n}\n\n\n.cm-s-solarized .cm-keyword { color: #cb4b16 }\n.cm-s-solarized .cm-atom { color: #d33682; }\n.cm-s-solarized .cm-number { color: #d33682; }\n.cm-s-solarized .cm-def { color: #2aa198; }\n\n.cm-s-solarized .cm-variable { color: #268bd2; }\n.cm-s-solarized .cm-variable-2 { color: #b58900; }\n.cm-s-solarized .cm-variable-3 { color: #6c71c4; }\n\n.cm-s-solarized .cm-property { color: #2aa198; }\n.cm-s-solarized .cm-operator {color: #6c71c4;}\n\n.cm-s-solarized .cm-comment { color: #586e75; font-style:italic; }\n\n.cm-s-solarized .cm-string { color: #859900; }\n.cm-s-solarized .cm-string-2 { color: #b58900; }\n\n.cm-s-solarized .cm-meta { color: #859900; }\n.cm-s-solarized .cm-qualifier { color: #b58900; }\n.cm-s-solarized .cm-builtin { color: #d33682; }\n.cm-s-solarized .cm-bracket { color: #cb4b16; }\n.cm-s-solarized .CodeMirror-matchingbracket { color: #859900; }\n.cm-s-solarized .CodeMirror-nonmatchingbracket { color: #dc322f; }\n.cm-s-solarized .cm-tag { color: #93a1a1 }\n.cm-s-solarized .cm-attribute {  color: #2aa198; }\n.cm-s-solarized .cm-header { color: #586e75; }\n.cm-s-solarized .cm-quote { color: #93a1a1; }\n.cm-s-solarized .cm-hr {\n  color: transparent;\n  border-top: 1px solid #586e75;\n  display: block;\n}\n.cm-s-solarized .cm-link { color: #93a1a1; cursor: pointer; }\n.cm-s-solarized .cm-special { color: #6c71c4; }\n.cm-s-solarized .cm-em {\n  color: #999;\n  text-decoration: underline;\n  text-decoration-style: dotted;\n}\n.cm-s-solarized .cm-strong { color: #eee; }\n.cm-s-solarized .cm-error,\n.cm-s-solarized .cm-invalidchar {\n  color: #586e75;\n  border-bottom: 1px dotted #dc322f;\n}\n\n.cm-s-solarized.cm-s-dark .CodeMirror-selected { background: #073642; }\n.cm-s-solarized.cm-s-dark.CodeMirror ::selection { background: rgba(7, 54, 66, 0.99); }\n.cm-s-solarized.cm-s-dark.CodeMirror ::-moz-selection { background: rgba(7, 54, 66, 0.99); }\n\n.cm-s-solarized.cm-s-light .CodeMirror-selected { background: #eee8d5; }\n.cm-s-solarized.cm-s-light.CodeMirror ::selection { background: #eee8d5; }\n.cm-s-solarized.cm-s-lightCodeMirror ::-moz-selection { background: #eee8d5; }\n\n/* Editor styling */\n\n\n\n/* Little shadow on the view-port of the buffer view */\n.cm-s-solarized.CodeMirror {\n  -moz-box-shadow: inset 7px 0 12px -6px #000;\n  -webkit-box-shadow: inset 7px 0 12px -6px #000;\n  box-shadow: inset 7px 0 12px -6px #000;\n}\n\n/* Gutter border and some shadow from it  */\n.cm-s-solarized .CodeMirror-gutters {\n  border-right: 1px solid;\n}\n\n/* Gutter colors and line number styling based of color scheme (dark / light) */\n\n/* Dark */\n.cm-s-solarized.cm-s-dark .CodeMirror-gutters {\n  background-color:  #002b36;\n  border-color: #00232c;\n}\n\n.cm-s-solarized.cm-s-dark .CodeMirror-linenumber {\n  text-shadow: #021014 0 -1px;\n}\n\n/* Light */\n.cm-s-solarized.cm-s-light .CodeMirror-gutters {\n  background-color: #fdf6e3;\n  border-color: #eee8d5;\n}\n\n/* Common */\n.cm-s-solarized .CodeMirror-linenumber {\n  color: #586e75;\n  padding: 0 5px;\n}\n.cm-s-solarized .CodeMirror-guttermarker-subtle { color: #586e75; }\n.cm-s-solarized.cm-s-dark .CodeMirror-guttermarker { color: #ddd; }\n.cm-s-solarized.cm-s-light .CodeMirror-guttermarker { color: #cb4b16; }\n\n.cm-s-solarized .CodeMirror-gutter .CodeMirror-gutter-text {\n  color: #586e75;\n}\n\n.cm-s-solarized .CodeMirror-lines .CodeMirror-cursor {\n  border-left: 1px solid #819090;\n}\n\n/*\nActive line. Negative margin compensates left padding of the text in the\nview-port\n*/\n.cm-s-solarized.cm-s-dark .CodeMirror-activeline-background {\n  background: rgba(255, 255, 255, 0.10);\n}\n.cm-s-solarized.cm-s-light .CodeMirror-activeline-background {\n  background: rgba(0, 0, 0, 0.10);\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/the-matrix.css",
    "content": ".cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; }\n.cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D !important; }\n.cm-s-the-matrix.CodeMirror ::selection { background: rgba(45, 45, 45, 0.99); }\n.cm-s-the-matrix.CodeMirror ::-moz-selection { background: rgba(45, 45, 45, 0.99); }\n.cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px solid #00FF00; }\n.cm-s-the-matrix .CodeMirror-guttermarker { color: #0f0; }\n.cm-s-the-matrix .CodeMirror-guttermarker-subtle { color: white; }\n.cm-s-the-matrix .CodeMirror-linenumber { color: #FFFFFF; }\n.cm-s-the-matrix .CodeMirror-cursor { border-left: 1px solid #00FF00 !important; }\n\n.cm-s-the-matrix span.cm-keyword {color: #008803; font-weight: bold;}\n.cm-s-the-matrix span.cm-atom {color: #3FF;}\n.cm-s-the-matrix span.cm-number {color: #FFB94F;}\n.cm-s-the-matrix span.cm-def {color: #99C;}\n.cm-s-the-matrix span.cm-variable {color: #F6C;}\n.cm-s-the-matrix span.cm-variable-2 {color: #C6F;}\n.cm-s-the-matrix span.cm-variable-3 {color: #96F;}\n.cm-s-the-matrix span.cm-property {color: #62FFA0;}\n.cm-s-the-matrix span.cm-operator {color: #999}\n.cm-s-the-matrix span.cm-comment {color: #CCCCCC;}\n.cm-s-the-matrix span.cm-string {color: #39C;}\n.cm-s-the-matrix span.cm-meta {color: #C9F;}\n.cm-s-the-matrix span.cm-qualifier {color: #FFF700;}\n.cm-s-the-matrix span.cm-builtin {color: #30a;}\n.cm-s-the-matrix span.cm-bracket {color: #cc7;}\n.cm-s-the-matrix span.cm-tag {color: #FFBD40;}\n.cm-s-the-matrix span.cm-attribute {color: #FFF700;}\n.cm-s-the-matrix span.cm-error {color: #FF0000;}\n\n.cm-s-the-matrix .CodeMirror-activeline-background {background: #040;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/tomorrow-night-bright.css",
    "content": "/*\n\n    Name:       Tomorrow Night - Bright\n    Author:     Chris Kempson\n\n    Port done by Gerard Braad <me@gbraad.nl>\n\n*/\n\n.cm-s-tomorrow-night-bright.CodeMirror {background: #000000; color: #eaeaea;}\n.cm-s-tomorrow-night-bright div.CodeMirror-selected {background: #424242 !important;}\n.cm-s-tomorrow-night-bright .CodeMirror-gutters {background: #000000; border-right: 0px;}\n.cm-s-tomorrow-night-bright .CodeMirror-guttermarker { color: #e78c45; }\n.cm-s-tomorrow-night-bright .CodeMirror-guttermarker-subtle { color: #777; }\n.cm-s-tomorrow-night-bright .CodeMirror-linenumber {color: #424242;}\n.cm-s-tomorrow-night-bright .CodeMirror-cursor {border-left: 1px solid #6A6A6A !important;}\n\n.cm-s-tomorrow-night-bright span.cm-comment {color: #d27b53;}\n.cm-s-tomorrow-night-bright span.cm-atom {color: #a16a94;}\n.cm-s-tomorrow-night-bright span.cm-number {color: #a16a94;}\n\n.cm-s-tomorrow-night-bright span.cm-property, .cm-s-tomorrow-night-bright span.cm-attribute {color: #99cc99;}\n.cm-s-tomorrow-night-bright span.cm-keyword {color: #d54e53;}\n.cm-s-tomorrow-night-bright span.cm-string {color: #e7c547;}\n\n.cm-s-tomorrow-night-bright span.cm-variable {color: #b9ca4a;}\n.cm-s-tomorrow-night-bright span.cm-variable-2 {color: #7aa6da;}\n.cm-s-tomorrow-night-bright span.cm-def {color: #e78c45;}\n.cm-s-tomorrow-night-bright span.cm-bracket {color: #eaeaea;}\n.cm-s-tomorrow-night-bright span.cm-tag {color: #d54e53;}\n.cm-s-tomorrow-night-bright span.cm-link {color: #a16a94;}\n.cm-s-tomorrow-night-bright span.cm-error {background: #d54e53; color: #6A6A6A;}\n\n.cm-s-tomorrow-night-bright .CodeMirror-activeline-background {background: #2a2a2a !important;}\n.cm-s-tomorrow-night-bright .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/tomorrow-night-eighties.css",
    "content": "/*\n\n    Name:       Tomorrow Night - Eighties\n    Author:     Chris Kempson\n\n    CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)\n    Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)\n\n*/\n\n.cm-s-tomorrow-night-eighties.CodeMirror {background: #000000; color: #CCCCCC;}\n.cm-s-tomorrow-night-eighties div.CodeMirror-selected {background: #2D2D2D !important;}\n.cm-s-tomorrow-night-eighties.CodeMirror ::selection { background: rgba(45, 45, 45, 0.99); }\n.cm-s-tomorrow-night-eighties.CodeMirror ::-moz-selection { background: rgba(45, 45, 45, 0.99); }\n.cm-s-tomorrow-night-eighties .CodeMirror-gutters {background: #000000; border-right: 0px;}\n.cm-s-tomorrow-night-eighties .CodeMirror-guttermarker { color: #f2777a; }\n.cm-s-tomorrow-night-eighties .CodeMirror-guttermarker-subtle { color: #777; }\n.cm-s-tomorrow-night-eighties .CodeMirror-linenumber {color: #515151;}\n.cm-s-tomorrow-night-eighties .CodeMirror-cursor {border-left: 1px solid #6A6A6A !important;}\n\n.cm-s-tomorrow-night-eighties span.cm-comment {color: #d27b53;}\n.cm-s-tomorrow-night-eighties span.cm-atom {color: #a16a94;}\n.cm-s-tomorrow-night-eighties span.cm-number {color: #a16a94;}\n\n.cm-s-tomorrow-night-eighties span.cm-property, .cm-s-tomorrow-night-eighties span.cm-attribute {color: #99cc99;}\n.cm-s-tomorrow-night-eighties span.cm-keyword {color: #f2777a;}\n.cm-s-tomorrow-night-eighties span.cm-string {color: #ffcc66;}\n\n.cm-s-tomorrow-night-eighties span.cm-variable {color: #99cc99;}\n.cm-s-tomorrow-night-eighties span.cm-variable-2 {color: #6699cc;}\n.cm-s-tomorrow-night-eighties span.cm-def {color: #f99157;}\n.cm-s-tomorrow-night-eighties span.cm-bracket {color: #CCCCCC;}\n.cm-s-tomorrow-night-eighties span.cm-tag {color: #f2777a;}\n.cm-s-tomorrow-night-eighties span.cm-link {color: #a16a94;}\n.cm-s-tomorrow-night-eighties span.cm-error {background: #f2777a; color: #6A6A6A;}\n\n.cm-s-tomorrow-night-eighties .CodeMirror-activeline-background {background: #343600 !important;}\n.cm-s-tomorrow-night-eighties .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/twilight.css",
    "content": ".cm-s-twilight.CodeMirror { background: #141414; color: #f7f7f7; } /**/\n.cm-s-twilight .CodeMirror-selected { background: #323232 !important; } /**/\n.cm-s-twilight.CodeMirror ::selection { background: rgba(50, 50, 50, 0.99); }\n.cm-s-twilight.CodeMirror ::-moz-selection { background: rgba(50, 50, 50, 0.99); }\n\n.cm-s-twilight .CodeMirror-gutters { background: #222; border-right: 1px solid #aaa; }\n.cm-s-twilight .CodeMirror-guttermarker { color: white; }\n.cm-s-twilight .CodeMirror-guttermarker-subtle { color: #aaa; }\n.cm-s-twilight .CodeMirror-linenumber { color: #aaa; }\n.cm-s-twilight .CodeMirror-cursor { border-left: 1px solid white !important; }\n\n.cm-s-twilight .cm-keyword {  color: #f9ee98; } /**/\n.cm-s-twilight .cm-atom { color: #FC0; }\n.cm-s-twilight .cm-number { color:  #ca7841; } /**/\n.cm-s-twilight .cm-def { color: #8DA6CE; }\n.cm-s-twilight span.cm-variable-2, .cm-s-twilight span.cm-tag { color: #607392; } /**/\n.cm-s-twilight span.cm-variable-3, .cm-s-twilight span.cm-def { color: #607392; } /**/\n.cm-s-twilight .cm-operator { color: #cda869; } /**/\n.cm-s-twilight .cm-comment { color:#777; font-style:italic; font-weight:normal; } /**/\n.cm-s-twilight .cm-string { color:#8f9d6a; font-style:italic; } /**/\n.cm-s-twilight .cm-string-2 { color:#bd6b18 } /*?*/\n.cm-s-twilight .cm-meta { background-color:#141414; color:#f7f7f7; } /*?*/\n.cm-s-twilight .cm-builtin { color: #cda869; } /*?*/\n.cm-s-twilight .cm-tag { color: #997643; } /**/\n.cm-s-twilight .cm-attribute { color: #d6bb6d; } /*?*/\n.cm-s-twilight .cm-header { color: #FF6400; }\n.cm-s-twilight .cm-hr { color: #AEAEAE; }\n.cm-s-twilight .cm-link {   color:#ad9361; font-style:italic; text-decoration:none; } /**/\n.cm-s-twilight .cm-error { border-bottom: 1px solid red; }\n\n.cm-s-twilight .CodeMirror-activeline-background {background: #27282E !important;}\n.cm-s-twilight .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/vibrant-ink.css",
    "content": "/* Taken from the popular Visual Studio Vibrant Ink Schema */\n\n.cm-s-vibrant-ink.CodeMirror { background: black; color: white; }\n.cm-s-vibrant-ink .CodeMirror-selected { background: #35493c !important; }\n.cm-s-vibrant-ink.CodeMirror ::selection { background: rgba(53, 73, 60, 0.99); }\n.cm-s-vibrant-ink.CodeMirror ::-moz-selection { background: rgba(53, 73, 60, 0.99); }\n\n.cm-s-vibrant-ink .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; }\n.cm-s-vibrant-ink .CodeMirror-guttermarker { color: white; }\n.cm-s-vibrant-ink .CodeMirror-guttermarker-subtle { color: #d0d0d0; }\n.cm-s-vibrant-ink .CodeMirror-linenumber { color: #d0d0d0; }\n.cm-s-vibrant-ink .CodeMirror-cursor { border-left: 1px solid white !important; }\n\n.cm-s-vibrant-ink .cm-keyword {  color: #CC7832; }\n.cm-s-vibrant-ink .cm-atom { color: #FC0; }\n.cm-s-vibrant-ink .cm-number { color:  #FFEE98; }\n.cm-s-vibrant-ink .cm-def { color: #8DA6CE; }\n.cm-s-vibrant-ink span.cm-variable-2, .cm-s-vibrant span.cm-tag { color: #FFC66D }\n.cm-s-vibrant-ink span.cm-variable-3, .cm-s-vibrant span.cm-def { color: #FFC66D }\n.cm-s-vibrant-ink .cm-operator { color: #888; }\n.cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; }\n.cm-s-vibrant-ink .cm-string { color:  #A5C25C }\n.cm-s-vibrant-ink .cm-string-2 { color: red }\n.cm-s-vibrant-ink .cm-meta { color: #D8FA3C; }\n.cm-s-vibrant-ink .cm-builtin { color: #8DA6CE; }\n.cm-s-vibrant-ink .cm-tag { color: #8DA6CE; }\n.cm-s-vibrant-ink .cm-attribute { color: #8DA6CE; }\n.cm-s-vibrant-ink .cm-header { color: #FF6400; }\n.cm-s-vibrant-ink .cm-hr { color: #AEAEAE; }\n.cm-s-vibrant-ink .cm-link { color: blue; }\n.cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; }\n\n.cm-s-vibrant-ink .CodeMirror-activeline-background {background: #27282E !important;}\n.cm-s-vibrant-ink .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/xq-dark.css",
    "content": "/*\nCopyright (C) 2011 by MarkLogic Corporation\nAuthor: Mike Brevoort <mike@brevoort.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n.cm-s-xq-dark.CodeMirror { background: #0a001f; color: #f8f8f8; }\n.cm-s-xq-dark .CodeMirror-selected { background: #27007A !important; }\n.cm-s-xq-dark.CodeMirror ::selection { background: rgba(39, 0, 122, 0.99); }\n.cm-s-xq-dark.CodeMirror ::-moz-selection { background: rgba(39, 0, 122, 0.99); }\n.cm-s-xq-dark .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; }\n.cm-s-xq-dark .CodeMirror-guttermarker { color: #FFBD40; }\n.cm-s-xq-dark .CodeMirror-guttermarker-subtle { color: #f8f8f8; }\n.cm-s-xq-dark .CodeMirror-linenumber { color: #f8f8f8; }\n.cm-s-xq-dark .CodeMirror-cursor { border-left: 1px solid white !important; }\n\n.cm-s-xq-dark span.cm-keyword {color: #FFBD40;}\n.cm-s-xq-dark span.cm-atom {color: #6C8CD5;}\n.cm-s-xq-dark span.cm-number {color: #164;}\n.cm-s-xq-dark span.cm-def {color: #FFF; text-decoration:underline;}\n.cm-s-xq-dark span.cm-variable {color: #FFF;}\n.cm-s-xq-dark span.cm-variable-2 {color: #EEE;}\n.cm-s-xq-dark span.cm-variable-3 {color: #DDD;}\n.cm-s-xq-dark span.cm-property {}\n.cm-s-xq-dark span.cm-operator {}\n.cm-s-xq-dark span.cm-comment {color: gray;}\n.cm-s-xq-dark span.cm-string {color: #9FEE00;}\n.cm-s-xq-dark span.cm-meta {color: yellow;}\n.cm-s-xq-dark span.cm-qualifier {color: #FFF700;}\n.cm-s-xq-dark span.cm-builtin {color: #30a;}\n.cm-s-xq-dark span.cm-bracket {color: #cc7;}\n.cm-s-xq-dark span.cm-tag {color: #FFBD40;}\n.cm-s-xq-dark span.cm-attribute {color: #FFF700;}\n.cm-s-xq-dark span.cm-error {color: #f00;}\n\n.cm-s-xq-dark .CodeMirror-activeline-background {background: #27282E !important;}\n.cm-s-xq-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/xq-light.css",
    "content": "/*\nCopyright (C) 2011 by MarkLogic Corporation\nAuthor: Mike Brevoort <mike@brevoort.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n.cm-s-xq-light span.cm-keyword {line-height: 1em; font-weight: bold; color: #5A5CAD; }\n.cm-s-xq-light span.cm-atom {color: #6C8CD5;}\n.cm-s-xq-light span.cm-number {color: #164;}\n.cm-s-xq-light span.cm-def {text-decoration:underline;}\n.cm-s-xq-light span.cm-variable {color: black; }\n.cm-s-xq-light span.cm-variable-2 {color:black;}\n.cm-s-xq-light span.cm-variable-3 {color: black; }\n.cm-s-xq-light span.cm-property {}\n.cm-s-xq-light span.cm-operator {}\n.cm-s-xq-light span.cm-comment {color: #0080FF; font-style: italic;}\n.cm-s-xq-light span.cm-string {color: red;}\n.cm-s-xq-light span.cm-meta {color: yellow;}\n.cm-s-xq-light span.cm-qualifier {color: grey}\n.cm-s-xq-light span.cm-builtin {color: #7EA656;}\n.cm-s-xq-light span.cm-bracket {color: #cc7;}\n.cm-s-xq-light span.cm-tag {color: #3F7F7F;}\n.cm-s-xq-light span.cm-attribute {color: #7F007F;}\n.cm-s-xq-light span.cm-error {color: #f00;}\n\n.cm-s-xq-light .CodeMirror-activeline-background {background: #e8f2ff !important;}\n.cm-s-xq-light .CodeMirror-matchingbracket {outline:1px solid grey;color:black !important;background:yellow;}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/lib/codemirror/theme/zenburn.css",
    "content": "/**\n * \"\n *  Using Zenburn color palette from the Emacs Zenburn Theme\n *  https://github.com/bbatsov/zenburn-emacs/blob/master/zenburn-theme.el\n *\n *  Also using parts of https://github.com/xavi/coderay-lighttable-theme\n * \"\n * From: https://github.com/wisenomad/zenburn-lighttable-theme/blob/master/zenburn.css\n */\n\n.cm-s-zenburn .CodeMirror-gutters { background: #3f3f3f !important; }\n.cm-s-zenburn .CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded { color: #999; }\n.cm-s-zenburn .CodeMirror-cursor { border-left: 1px solid white !important; }\n.cm-s-zenburn { background-color: #3f3f3f; color: #dcdccc; }\n.cm-s-zenburn span.cm-builtin { color: #dcdccc; font-weight: bold; }\n.cm-s-zenburn span.cm-comment { color: #7f9f7f; }\n.cm-s-zenburn span.cm-keyword { color: #f0dfaf; font-weight: bold; }\n.cm-s-zenburn span.cm-atom { color: #bfebbf; }\n.cm-s-zenburn span.cm-def { color: #dcdccc; }\n.cm-s-zenburn span.cm-variable { color: #dfaf8f; }\n.cm-s-zenburn span.cm-variable-2 { color: #dcdccc; }\n.cm-s-zenburn span.cm-string { color: #cc9393; }\n.cm-s-zenburn span.cm-string-2 { color: #cc9393; }\n.cm-s-zenburn span.cm-number { color: #dcdccc; }\n.cm-s-zenburn span.cm-tag { color: #93e0e3; }\n.cm-s-zenburn span.cm-property { color: #dfaf8f; }\n.cm-s-zenburn span.cm-attribute { color: #dfaf8f; }\n.cm-s-zenburn span.cm-qualifier { color: #7cb8bb; }\n.cm-s-zenburn span.cm-meta { color: #f0dfaf; }\n.cm-s-zenburn span.cm-header { color: #f0efd0; }\n.cm-s-zenburn span.cm-operator { color: #f0efd0; }\n.cm-s-zenburn span.CodeMirror-matchingbracket { box-sizing: border-box; background: transparent; border-bottom: 1px solid; }\n.cm-s-zenburn span.CodeMirror-nonmatchingbracket { border-bottom: 1px solid; background: none; }\n.cm-s-zenburn .CodeMirror-activeline { background: #000000; }\n.cm-s-zenburn .CodeMirror-activeline-background { background: #000000; }\n.cm-s-zenburn .CodeMirror-selected { background: #545454; }\n.cm-s-zenburn .CodeMirror-focused .CodeMirror-selected { background: #4f4f4f; }\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/package.json",
    "content": "{\n  \"name\": \"editor.md\",\n  \"version\": \"1.5.0\",\n  \"description\": \"Open source online markdown editor.\",\n  \"directories\": {\n    \"doc\": \"docs\",\n    \"example\": \"examples\",\n    \"test\": \"tests\"\n  },\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pandao/editor.md.git\"\n  },\n  \"keywords\": [\n    \"editor.md\",\n    \"markdown\",\n    \"editor\"\n  ],\n  \"author\": \"Pandao\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/pandao/editor.md/issues\"\n  },\n  \"homepage\": \"https://github.com/pandao/editor.md\",\n  \"devDependencies\": {\n    \"dateformatter\": \"^0.1.0\",\n    \"gulp\": \"^3.8.11\",\n    \"gulp-concat\": \"^2.4.2\",\n    \"gulp-header\": \"^1.2.2\",\n    \"gulp-jshint\": \"^1.9.0\",\n    \"gulp-minify-css\": \"^0.4.4\",\n    \"gulp-notify\": \"^2.1.0\",\n    \"gulp-rename\": \"^1.2.0\",\n    \"gulp-replace\": \"^0.5.3\",\n    \"gulp-ruby-sass\": \"^1.0.1\",\n    \"gulp-uglifyjs\": \"^0.6.1\",\n    \"gulp-util\": \"^3.0.1\"\n  }\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/code-block-dialog/code-block-dialog.js",
    "content": "/*!\n * Code block dialog plugin for Editor.md\n *\n * @file        code-block-dialog.js\n * @author      pandao\n * @version     1.2.0\n * @updateTime  2015-03-07\n * {@link       https://github.com/pandao/editor.md}\n * @license     MIT\n */\n\n(function() {\n\n    var factory = function (exports) {\n\t\tvar cmEditor;\n\t\tvar pluginName    = \"code-block-dialog\";\n    \n\t\t// for CodeBlock dialog select\n\t\tvar codeLanguages = exports.codeLanguages = {\n\t\t\tasp           : [\"ASP\", \"vbscript\"],\n\t\t\tactionscript  : [\"ActionScript(3.0)/Flash/Flex\", \"clike\"],\n\t\t\tbash          : [\"Bash/Bat\", \"shell\"],\n\t\t\tcss           : [\"CSS\", \"css\"],\n\t\t\tc             : [\"C\", \"clike\"],\n\t\t\tcpp           : [\"C++\", \"clike\"],\n\t\t\tcsharp        : [\"C#\", \"clike\"],\n\t\t\tcoffeescript  : [\"CoffeeScript\", \"coffeescript\"],\n\t\t\td             : [\"D\", \"d\"],\n\t\t\tdart          : [\"Dart\", \"dart\"],\n\t\t\tdelphi        : [\"Delphi/Pascal\", \"pascal\"],\n\t\t\terlang        : [\"Erlang\", \"erlang\"],\n\t\t\tgo            : [\"Golang\", \"go\"],\n\t\t\tgroovy        : [\"Groovy\", \"groovy\"],\n\t\t\thtml          : [\"HTML\", \"text/html\"],\n\t\t\tjava          : [\"Java\", \"clike\"],\n\t\t\tjson          : [\"JSON\", \"text/json\"],\n\t\t\tjavascript    : [\"Javascript\", \"javascript\"],\n\t\t\tlua           : [\"Lua\", \"lua\"],\n\t\t\tless          : [\"LESS\", \"css\"],\n\t\t\tmarkdown      : [\"Markdown\", \"gfm\"],\n\t\t\t\"objective-c\" : [\"Objective-C\", \"clike\"],\n\t\t\tphp           : [\"PHP\", \"php\"],\n\t\t\tperl          : [\"Perl\", \"perl\"],\n\t\t\tpython        : [\"Python\", \"python\"],\n\t\t\tr             : [\"R\", \"r\"],\n\t\t\trst           : [\"reStructedText\", \"rst\"],\n\t\t\truby          : [\"Ruby\", \"ruby\"],\n\t\t\tsql           : [\"SQL\", \"sql\"],\n\t\t\tsass          : [\"SASS/SCSS\", \"sass\"],\n\t\t\tshell         : [\"Shell\", \"shell\"],\n\t\t\tscala         : [\"Scala\", \"clike\"],\n\t\t\tswift         : [\"Swift\", \"clike\"],\n\t\t\tvb            : [\"VB/VBScript\", \"vb\"],\n\t\t\txml           : [\"XML\", \"text/xml\"],\n\t\t\tyaml          : [\"YAML\", \"yaml\"]\n\t\t};\n\n\t\texports.fn.codeBlockDialog = function() {\n\n\t\t\tvar _this       = this;\n            var cm          = this.cm;\n            var lang        = this.lang;\n            var editor      = this.editor;\n            var settings    = this.settings;\n            var cursor      = cm.getCursor();\n            var selection   = cm.getSelection();\n            var classPrefix = this.classPrefix;\n\t\t\tvar dialogName  = classPrefix + pluginName, dialog;\n\t\t\tvar dialogLang  = lang.dialog.codeBlock;\n\n\t\t\tcm.focus();\n\n            if (editor.find(\".\" + dialogName).length > 0)\n            {\n                dialog = editor.find(\".\" + dialogName);\n                dialog.find(\"option:first\").attr(\"selected\", \"selected\");\n                dialog.find(\"textarea\").val(selection);\n\n                this.dialogShowMask(dialog);\n                this.dialogLockScreen();\n                dialog.show();\n            }\n            else \n            {      \n                var dialogHTML = \"<div class=\\\"\" + classPrefix + \"code-toolbar\\\">\" +\n                                        dialogLang.selectLabel + \"<select><option selected=\\\"selected\\\" value=\\\"\\\">\" + dialogLang.selectDefaultText + \"</option></select>\" +\n                                    \"</div>\" +\n                                    \"<textarea placeholder=\\\"coding now....\\\" style=\\\"display:none;\\\">\" + selection + \"</textarea>\";\n\n                dialog = this.createDialog({\n                    name   : dialogName,\n                    title  : dialogLang.title,\n                    width  : 780,\n                    height : 565,\n                    mask   : settings.dialogShowMask,\n                    drag   : settings.dialogDraggable,\n                    content    : dialogHTML,\n                    lockScreen : settings.dialogLockScreen,\n                    maskStyle  : {\n                        opacity         : settings.dialogMaskOpacity,\n                        backgroundColor : settings.dialogMaskBgColor\n                    },\n                    buttons : {\n                        enter  : [lang.buttons.enter, function() {\n                            var codeTexts  = this.find(\"textarea\").val();\n                            var langName   = this.find(\"select\").val();\n\n                            if (langName === \"\")\n                            {\n                                alert(lang.dialog.codeBlock.unselectedLanguageAlert);\n                                return false;\n                            }\n\n                            if (codeTexts === \"\")\n                            {\n                                alert(lang.dialog.codeBlock.codeEmptyAlert);\n                                return false;\n                            }\n\n                            langName = (langName === \"other\") ? \"\" : langName;\n\n                            cm.replaceSelection([\"```\" + langName, codeTexts, \"```\"].join(\"\\n\"));\n\n                            if (langName === \"\") {\n                                cm.setCursor(cursor.line, cursor.ch + 3);\n                            }\n\n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }],\n                        cancel : [lang.buttons.cancel, function() {                                   \n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }]\n                    }\n                });\n            }\n\n\t\t\tvar langSelect = dialog.find(\"select\");\n\n\t\t\tif (langSelect.find(\"option\").length === 1) \n\t\t\t{\n\t\t\t\tfor (var key in codeLanguages)\n\t\t\t\t{\n\t\t\t\t\tvar codeLang = codeLanguages[key];\n\t\t\t\t\tlangSelect.append(\"<option value=\\\"\" + key + \"\\\" mode=\\\"\" + codeLang[1] + \"\\\">\" + codeLang[0] + \"</option>\");\n\t\t\t\t}\n\n\t\t\t\tlangSelect.append(\"<option value=\\\"other\\\">\" + dialogLang.otherLanguage + \"</option>\");\n\t\t\t}\n\t\t\t\n\t\t\tvar mode   = langSelect.find(\"option:selected\").attr(\"mode\");\n\t\t\n\t\t\tvar cmConfig = {\n\t\t\t\tmode                      : (mode) ? mode : \"text/html\",\n\t\t\t\ttheme                     : settings.theme,\n\t\t\t\ttabSize                   : 4,\n\t\t\t\tautofocus                 : true,\n\t\t\t\tautoCloseTags             : true,\n\t\t\t\tindentUnit                : 4,\n\t\t\t\tlineNumbers               : true,\n\t\t\t\tlineWrapping              : true,\n\t\t\t\textraKeys                 : {\"Ctrl-Q\": function(cm){ cm.foldCode(cm.getCursor()); }},\n\t\t\t\tfoldGutter                : true,\n\t\t\t\tgutters                   : [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n\t\t\t\tmatchBrackets             : true,\n\t\t\t\tindentWithTabs            : true,\n\t\t\t\tstyleActiveLine           : true,\n\t\t\t\tstyleSelectedText         : true,\n\t\t\t\tautoCloseBrackets         : true,\n\t\t\t\tshowTrailingSpace         : true,\n\t\t\t\thighlightSelectionMatches : true\n\t\t\t};\n\t\t\t\n\t\t\tvar textarea = dialog.find(\"textarea\");\n\t\t\tvar cmObj    = dialog.find(\".CodeMirror\");\n\n\t\t\tif (dialog.find(\".CodeMirror\").length < 1) \n\t\t\t{\n\t\t\t\tcmEditor = exports.$CodeMirror.fromTextArea(textarea[0], cmConfig);\n\t\t\t\tcmObj    = dialog.find(\".CodeMirror\");\n\n\t\t\t\tcmObj.css({\n\t\t\t\t\t\"float\"   : \"none\", \n\t\t\t\t\tmargin    : \"8px 0\",\n\t\t\t\t\tborder    : \"1px solid #ddd\",\n\t\t\t\t\tfontSize  : settings.fontSize,\n\t\t\t\t\twidth     : \"100%\",\n\t\t\t\t\theight    : \"390px\"\n\t\t\t\t});\n\n\t\t\t\tcmEditor.on(\"change\", function(cm) {\n\t\t\t\t\ttextarea.val(cm.getValue());\n\t\t\t\t});\n\t\t\t} \n\t\t\telse \n\t\t\t{\n\n\t\t\t\tcmEditor.setValue(cm.getSelection());\n\t\t\t}\n\n\t\t\tlangSelect.change(function(){\n\t\t\t\tvar _mode = $(this).find(\"option:selected\").attr(\"mode\");\n\t\t\t\tcmEditor.setOption(\"mode\", _mode);\n\t\t\t});\n\t\t};\n\n\t};\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"./../../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t} \n\telse\n\t{\n        factory(window.editormd);\n\t}\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/emoji-dialog/emoji-dialog.js",
    "content": "/*!\n * Emoji dialog plugin for Editor.md\n *\n * @file        emoji-dialog.js\n * @author      pandao\n * @version     1.2.0\n * @updateTime  2015-03-08\n * {@link       https://github.com/pandao/editor.md}\n * @license     MIT\n */\n\n(function() {\n\n\tvar factory = function (exports) {\n\n\t\tvar $             = jQuery;\n\t\tvar pluginName    = \"emoji-dialog\";\n\t\tvar emojiTabIndex = 0;\n\t\tvar emojiData     = [];\n        var selecteds     = [];\n\n\t\tvar logoPrefix    = \"editormd-logo\";\n\t\tvar logos         = [\n\t\t\tlogoPrefix,\n\t\t\tlogoPrefix + \"-1x\",\n\t\t\tlogoPrefix + \"-2x\",\n\t\t\tlogoPrefix + \"-3x\",\n\t\t\tlogoPrefix + \"-4x\",\n\t\t\tlogoPrefix + \"-5x\",\n\t\t\tlogoPrefix + \"-6x\",\n\t\t\tlogoPrefix + \"-7x\",\n\t\t\tlogoPrefix + \"-8x\"\n\t\t];\n\n\t\tvar langs = {\n\t\t\t\"zh-cn\" : {\n\t\t\t\ttoolbar : {\n\t\t\t\t\temoji : \"Emoji 表情\"\n\t\t\t\t},\n\t\t\t\tdialog : {\n\t\t\t\t\temoji : {\n\t\t\t\t\t\ttitle : \"Emoji 表情\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"zh-tw\" : {\n\t\t\t\ttoolbar : {\n\t\t\t\t\temoji : \"Emoji 表情\"\n\t\t\t\t},\n\t\t\t\tdialog : {\n\t\t\t\t\temoji : {\n\t\t\t\t\t\ttitle : \"Emoji 表情\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"en\" : {\n\t\t\t\ttoolbar : {\n\t\t\t\t\temoji : \"Emoji\"\n\t\t\t\t},\n\t\t\t\tdialog : {\n\t\t\t\t\temoji : {\n\t\t\t\t\t\ttitle : \"Emoji\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\texports.fn.emojiDialog = function() {\n\t\t\tvar _this       = this;\n\t\t\tvar cm          = this.cm;\n\t\t\tvar settings    = _this.settings;\n            \n            if (!settings.emoji)\n            {\n                alert(\"settings.emoji == false\");\n                return ;\n            }\n            \n\t\t\tvar path        = settings.pluginPath + pluginName + \"/\";\n\t\t\tvar editor      = this.editor;\n\t\t\tvar cursor      = cm.getCursor();\n\t\t\tvar selection   = cm.getSelection();\n\t\t\tvar classPrefix = this.classPrefix;\n\n\t\t\t$.extend(true, this.lang, langs[this.lang.name]);\n\t\t\tthis.setToolbar();\n\n\t\t\tvar lang        = this.lang;\n\t\t\tvar dialogName  = classPrefix + pluginName, dialog;\n\t\t\tvar dialogLang  = lang.dialog.emoji;\n\t\t\t\n\t\t\tvar dialogContent = [\n\t\t\t\t\"<div class=\\\"\" + classPrefix + \"emoji-dialog-box\\\" style=\\\"width: 760px;height: 334px;margin-bottom: 8px;overflow: hidden;\\\">\",\n\t\t\t\t\"<div class=\\\"\" + classPrefix + \"tab\\\"></div>\",\n\t\t\t\t\"</div>\",\n\t\t\t].join(\"\\n\");\n\n\t\t\tcm.focus();\n\n\t\t\tif (editor.find(\".\" + dialogName).length > 0) \n\t\t\t{\n                dialog = editor.find(\".\" + dialogName);\n\n\t\t\t\tselecteds = [];\n\t\t\t\tdialog.find(\"a\").removeClass(\"selected\");\n\n\t\t\t\tthis.dialogShowMask(dialog);\n\t\t\t\tthis.dialogLockScreen();\n\t\t\t\tdialog.show();\n\t\t\t} \n\t\t\telse\n\t\t\t{\n\t\t\t\tdialog = this.createDialog({\n\t\t\t\t\tname       : dialogName,\n\t\t\t\t\ttitle      : dialogLang.title,\n\t\t\t\t\twidth      : 800,\n\t\t\t\t\theight     : 475,\n\t\t\t\t\tmask       : settings.dialogShowMask,\n\t\t\t\t\tdrag       : settings.dialogDraggable,\n\t\t\t\t\tcontent    : dialogContent,\n\t\t\t\t\tlockScreen : settings.dialogLockScreen,\n\t\t\t\t\tmaskStyle  : {\n\t\t\t\t\t\topacity         : settings.dialogMaskOpacity,\n\t\t\t\t\t\tbackgroundColor : settings.dialogMaskBgColor\n\t\t\t\t\t},\n\t\t\t\t\tbuttons    : {\n\t\t\t\t\t\tenter  : [lang.buttons.enter, function() {\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tcm.replaceSelection(selecteds.join(\" \"));\n\t\t\t\t\t\t\tthis.hide().lockScreen(false).hideMask();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tcancel : [lang.buttons.cancel, function() {                           \n\t\t\t\t\t\t\tthis.hide().lockScreen(false).hideMask();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}]\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tvar category = [\"Github emoji\", \"Twemoji\", \"Font awesome\", \"Editor.md logo\"];\n\t\t\tvar tab      = dialog.find(\".\" + classPrefix + \"tab\");\n\n\t\t\tif (tab.html() === \"\") \n\t\t\t{\n\t\t\t\tvar head = \"<ul class=\\\"\" + classPrefix + \"tab-head\\\">\";\n\n\t\t\t\tfor (var i = 0; i<4; i++) {\n\t\t\t\t\tvar active = (i === 0) ? \" class=\\\"active\\\"\" : \"\";\n\t\t\t\t\thead += \"<li\" + active + \"><a href=\\\"javascript:;\\\">\" + category[i] + \"</a></li>\";\n\t\t\t\t}\n\n\t\t\t\thead += \"</ul>\";\n\n\t\t\t\ttab.append(head);\n\n\t\t\t\tvar container = \"<div class=\\\"\" + classPrefix + \"tab-container\\\">\";\n\n\t\t\t\tfor (var x = 0; x < 4; x++) \n                {\n\t\t\t\t\tvar display = (x === 0) ? \"\" : \"display:none;\";\n\t\t\t\t\tcontainer += \"<div class=\\\"\" + classPrefix + \"tab-box\\\" style=\\\"height: 260px;overflow: hidden;overflow-y: auto;\" + display + \"\\\"></div>\";\n\t\t\t\t}\n\n\t\t\t\tcontainer += \"</div>\";\n\n\t\t\t\ttab.append(container);  \n\t\t\t}\n            \n\t\t\tvar tabBoxs = tab.find(\".\" + classPrefix + \"tab-box\");\n            var emojiCategories = [\"github-emoji\", \"twemoji\", \"font-awesome\", logoPrefix];\n\n\t\t\tvar drawTable = function() {\n                var cname = emojiCategories[emojiTabIndex];\n\t\t\t\tvar $data = emojiData[cname];\n                var $tab  = tabBoxs.eq(emojiTabIndex);\n\n\t\t\t\tif ($tab.html() !== \"\") {\n                    //console.log(\"break =>\", cname);\n                    return ;\n                }\n                \n                var pagination = function(data, type) {\n                    var rowNumber = (type === \"editormd-logo\") ? \"5\" : 20;\n                    var pageTotal = Math.ceil(data.length / rowNumber);\n                    var table     = \"<div class=\\\"\" + classPrefix + \"grid-table\\\">\";\n\n                    for (var i = 0; i < pageTotal; i++)\n                    {\n                        var row = \"<div class=\\\"\" + classPrefix + \"grid-table-row\\\">\";\n\n                        for (var x = 0; x < rowNumber; x++)\n                        {\n                            var emoji = $.trim(data[(i * rowNumber) + x]);\n                            \n                            if (typeof emoji !== \"undefined\" && emoji !== \"\")\n                            {\n                                var img = \"\", icon = \"\";\n                                \n                                if (type === \"github-emoji\")\n                                {\n                                    var src = (emoji === \"+1\") ? \"plus1\" : emoji;\n                                    src     = (src === \"black_large_square\") ? \"black_square\" : src;\n                                    src     = (src === \"moon\") ? \"waxing_gibbous_moon\" : src;\n                                    \n                                    src     = exports.emoji.path + src + exports.emoji.ext;\n                                    img     = \"<img src=\\\"\" + src + \"\\\" width=\\\"24\\\" class=\\\"emoji\\\" title=\\\"&#58;\" + emoji + \"&#58;\\\" alt=\\\"&#58;\" + emoji + \"&#58;\\\" />\";\n                                    row += \"<a href=\\\"javascript:;\\\" value=\\\":\" + emoji + \":\\\" title=\\\":\" + emoji + \":\\\" class=\\\"\" + classPrefix + \"emoji-btn\\\">\" + img + \"</a>\";\n                                }\n                                else if (type === \"twemoji\")\n                                {\n                                    var twemojiSrc = exports.twemoji.path + emoji + exports.twemoji.ext;\n                                    img = \"<img src=\\\"\" + twemojiSrc + \"\\\" width=\\\"24\\\" title=\\\"twemoji-\" + emoji + \"\\\" alt=\\\"twemoji-\" + emoji + \"\\\" class=\\\"emoji twemoji\\\" />\";\n                                    row += \"<a href=\\\"javascript:;\\\" value=\\\":tw-\" + emoji + \":\\\" title=\\\":tw-\" + emoji + \":\\\" class=\\\"\" + classPrefix + \"emoji-btn\\\">\" + img + \"</a>\";\n                                }\n                                else if (type === \"font-awesome\")\n                                {\n                                    icon = \"<i class=\\\"fa fa-\" + emoji + \" fa-emoji\\\" title=\\\"\" + emoji + \"\\\"></i>\";\n                                    row += \"<a href=\\\"javascript:;\\\" value=\\\":fa-\" + emoji + \":\\\" title=\\\":fa-\" + emoji + \":\\\" class=\\\"\" + classPrefix + \"emoji-btn\\\">\" + icon + \"</a>\";\n                                }\n                                else if (type === \"editormd-logo\")\n                                {\n                                    icon = \"<i class=\\\"\" + emoji + \"\\\" title=\\\"Editor.md logo (\" + emoji + \")\\\"></i>\";\n                                    row += \"<a href=\\\"javascript:;\\\" value=\\\":\" + emoji + \":\\\" title=\\\":\" + emoji + \":\\\" style=\\\"width:20%;\\\" class=\\\"\" + classPrefix + \"emoji-btn\\\">\" + icon + \"</a>\";\n                                }\n                            }\n                            else\n                            {\n                                row += \"<a href=\\\"javascript:;\\\" value=\\\"\\\"></a>\";                        \n                            }\n                        }\n\n                        row += \"</div>\";\n\n                        table += row;\n                    }\n\n                    table += \"</div>\";\n                    \n                    return table;\n                };\n                \n                if (emojiTabIndex === 0)\n                {\n                    for (var i = 0, len = $data.length; i < len; i++)\n                    {\n                        var h4Style = (i === 0) ? \" style=\\\"margin: 0 0 10px;\\\"\" : \" style=\\\"margin: 10px 0;\\\"\";\n                        $tab.append(\"<h4\" + h4Style + \">\" + $data[i].category + \"</h4>\");\n                        $tab.append(pagination($data[i].list, cname));\n                    }\n                }\n                else\n                {\n                    $tab.append(pagination($data, cname));\n                }\n\n\t\t\t\t$tab.find(\".\" + classPrefix + \"emoji-btn\").bind(exports.mouseOrTouch(\"click\", \"touchend\"), function() {\n\t\t\t\t\t$(this).toggleClass(\"selected\");\n\n\t\t\t\t\tif ($(this).hasClass(\"selected\")) \n\t\t\t\t\t{\n\t\t\t\t\t\tselecteds.push($(this).attr(\"value\"));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t\t\n\t\t\tif (emojiData.length < 1) \n\t\t\t{            \n\t\t\t\tif (typeof dialog.loading === \"function\") {\n                    dialog.loading(true);\n                }\n\n\t\t\t\t$.getJSON(path + \"emoji.json?temp=\" + Math.random(), function(json) {\n\n\t\t\t\t\tif (typeof dialog.loading === \"function\") {\n                        dialog.loading(false);\n                    }\n\n\t\t\t\t\temojiData = json;\n                    emojiData[logoPrefix] = logos;\n\t\t\t\t\tdrawTable();\n\t\t\t\t});\n\t\t\t} \n\t\t\telse \n\t\t\t{\n\t\t\t\tdrawTable();\n\t\t\t}\n\n\t\t\ttab.find(\"li\").bind(exports.mouseOrTouch(\"click\", \"touchend\"), function() {\n\t\t\t\tvar $this     = $(this);\n\t\t\t\temojiTabIndex = $this.index();\n\n\t\t\t\t$this.addClass(\"active\").siblings().removeClass(\"active\");\n\t\t\t\ttabBoxs.eq(emojiTabIndex).show().siblings().hide();\n\t\t\t\tdrawTable();\n\t\t\t});\n\t\t};\n\n\t};\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"./../../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t} \n\telse\n\t{\n        factory(window.editormd);\n\t}\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/emoji-dialog/emoji.json",
    "content": "{\n\t\"github-emoji\" : [\n\t\t{\n\t\t\t\"category\" :\"People\",\n\t\t\t\"list\" : [\"bowtie\",\"smile\",\"laughing\",\"blush\",\"smiley\",\"relaxed\",\"smirk\",\"heart_eyes\",\"kissing_heart\",\"kissing_closed_eyes\",\"flushed\",\"relieved\",\"satisfied\",\"grin\",\"wink\",\"stuck_out_tongue_winking_eye\",\"stuck_out_tongue_closed_eyes\",\"grinning\",\"kissing\",\"kissing_smiling_eyes\",\"stuck_out_tongue\",\"sleeping\",\"worried\",\"frowning\",\"anguished\",\"open_mouth\",\"grimacing\",\"confused\",\"hushed\",\"expressionless\",\"unamused\",\"sweat_smile\",\"sweat\",\"disappointed_relieved\",\"weary\",\"pensive\",\"disappointed\",\"confounded\",\"fearful\",\"cold_sweat\",\"persevere\",\"cry\",\"sob\",\"joy\",\"astonished\",\"scream\",\"neckbeard\",\"tired_face\",\"angry\",\"rage\",\"triumph\",\"sleepy\",\"yum\",\"mask\",\"sunglasses\",\"dizzy_face\",\"imp\",\"smiling_imp\",\"neutral_face\",\"no_mouth\",\"innocent\",\"alien\",\"yellow_heart\",\"blue_heart\",\"purple_heart\",\"heart\",\"green_heart\",\"broken_heart\",\"heartbeat\",\"heartpulse\",\"two_hearts\",\"revolving_hearts\",\"cupid\",\"sparkling_heart\",\"sparkles\",\"star\",\"star2\",\"dizzy\",\"boom\",\"collision\",\"anger\",\"exclamation\",\"question\",\"grey_exclamation\",\"grey_question\",\"zzz\",\"dash\",\"sweat_drops\",\"notes\",\"musical_note\",\"fire\",\"hankey\",\"poop\",\"shit\",\"+1\",\"thumbsup\",\"-1\",\"thumbsdown\",\"ok_hand\",\"punch\",\"facepunch\",\"fist\",\"v\",\"wave\",\"hand\",\"raised_hand\",\"open_hands\",\"point_up\",\"point_down\",\"point_left\",\"point_right\",\"raised_hands\",\"pray\",\"point_up_2\",\"clap\",\"muscle\",\"metal\",\"fu\",\"walking\",\"runner\",\"running\",\"couple\",\"family\",\"two_men_holding_hands\",\"two_women_holding_hands\",\"dancer\",\"dancers\",\"ok_woman\",\"no_good\",\"information_desk_person\",\"raising_hand\",\"bride_with_veil\",\"person_with_pouting_face\",\"person_frowning\",\"bow\",\"couplekiss\",\"couple_with_heart\",\"massage\",\"haircut\",\"nail_care\",\"boy\",\"girl\",\"woman\",\"man\",\"baby\",\"older_woman\",\"older_man\",\"person_with_blond_hair\",\"man_with_gua_pi_mao\",\"man_with_turban\",\"construction_worker\",\"cop\",\"angel\",\"princess\",\"smiley_cat\",\"smile_cat\",\"heart_eyes_cat\",\"kissing_cat\",\"smirk_cat\",\"scream_cat\",\"crying_cat_face\",\"joy_cat\",\"pouting_cat\",\"japanese_ogre\",\"japanese_goblin\",\"see_no_evil\",\"hear_no_evil\",\"speak_no_evil\",\"guardsman\",\"skull\",\"feet\",\"lips\",\"kiss\",\"droplet\",\"ear\",\"eyes\",\"nose\",\"tongue\",\"love_letter\",\"bust_in_silhouette\",\"busts_in_silhouette\",\"speech_balloon\",\"thought_balloon\",\"feelsgood\",\"finnadie\",\"goberserk\",\"godmode\",\"hurtrealbad\",\"rage1\",\"rage2\",\"rage3\",\"rage4\",\"suspect\",\"trollface\"]\n\t\t},\n\t\t{\n\t\t\t\"category\" :\"Nature\",\n\t\t\t\"list\" : [\"sunny\",\"umbrella\",\"cloud\",\"snowflake\",\"snowman\",\"zap\",\"cyclone\",\"foggy\",\"ocean\",\"cat\",\"dog\",\"mouse\",\"hamster\",\"rabbit\",\"wolf\",\"frog\",\"tiger\",\"koala\",\"bear\",\"pig\",\"pig_nose\",\"cow\",\"boar\",\"monkey_face\",\"monkey\",\"horse\",\"racehorse\",\"camel\",\"sheep\",\"elephant\",\"panda_face\",\"snake\",\"bird\",\"baby_chick\",\"hatched_chick\",\"hatching_chick\",\"chicken\",\"penguin\",\"turtle\",\"bug\",\"honeybee\",\"ant\",\"beetle\",\"snail\",\"octopus\",\"tropical_fish\",\"fish\",\"whale\",\"whale2\",\"dolphin\",\"cow2\",\"ram\",\"rat\",\"water_buffalo\",\"tiger2\",\"rabbit2\",\"dragon\",\"goat\",\"rooster\",\"dog2\",\"pig2\",\"mouse2\",\"ox\",\"dragon_face\",\"blowfish\",\"crocodile\",\"dromedary_camel\",\"leopard\",\"cat2\",\"poodle\",\"paw_prints\",\"bouquet\",\"cherry_blossom\",\"tulip\",\"four_leaf_clover\",\"rose\",\"sunflower\",\"hibiscus\",\"maple_leaf\",\"leaves\",\"fallen_leaf\",\"herb\",\"mushroom\",\"cactus\",\"palm_tree\",\"evergreen_tree\",\"deciduous_tree\",\"chestnut\",\"seedling\",\"blossom\",\"ear_of_rice\",\"shell\",\"globe_with_meridians\",\"sun_with_face\",\"full_moon_with_face\",\"new_moon_with_face\",\"new_moon\",\"waxing_crescent_moon\",\"first_quarter_moon\",\"waxing_gibbous_moon\",\"full_moon\",\"waning_gibbous_moon\",\"last_quarter_moon\",\"waning_crescent_moon\",\"last_quarter_moon_with_face\",\"first_quarter_moon_with_face\",\"moon\",\"earth_africa\",\"earth_americas\",\"earth_asia\",\"volcano\",\"milky_way\",\"partly_sunny\",\"octocat\",\"squirrel\"]\n\t\t},\n\t\t{\n\t\t\t\"category\" :\"Objects\",\n\t\t\t\"list\" : [\"bamboo\",\"gift_heart\",\"dolls\",\"school_satchel\",\"mortar_board\",\"flags\",\"fireworks\",\"sparkler\",\"wind_chime\",\"rice_scene\",\"jack_o_lantern\",\"ghost\",\"santa\",\"christmas_tree\",\"gift\",\"bell\",\"no_bell\",\"tanabata_tree\",\"tada\",\"confetti_ball\",\"balloon\",\"crystal_ball\",\"cd\",\"dvd\",\"floppy_disk\",\"camera\",\"video_camera\",\"movie_camera\",\"computer\",\"tv\",\"iphone\",\"phone\",\"telephone\",\"telephone_receiver\",\"pager\",\"fax\",\"minidisc\",\"vhs\",\"sound\",\"speaker\",\"mute\",\"loudspeaker\",\"mega\",\"hourglass\",\"hourglass_flowing_sand\",\"alarm_clock\",\"watch\",\"radio\",\"satellite\",\"loop\",\"mag\",\"mag_right\",\"unlock\",\"lock\",\"lock_with_ink_pen\",\"closed_lock_with_key\",\"key\",\"bulb\",\"flashlight\",\"high_brightness\",\"low_brightness\",\"electric_plug\",\"battery\",\"calling\",\"email\",\"mailbox\",\"postbox\",\"bath\",\"bathtub\",\"shower\",\"toilet\",\"wrench\",\"nut_and_bolt\",\"hammer\",\"seat\",\"moneybag\",\"yen\",\"dollar\",\"pound\",\"euro\",\"credit_card\",\"money_with_wings\",\"e-mail\",\"inbox_tray\",\"outbox_tray\",\"envelope\",\"incoming_envelope\",\"postal_horn\",\"mailbox_closed\",\"mailbox_with_mail\",\"mailbox_with_no_mail\",\"package\",\"door\",\"smoking\",\"bomb\",\"gun\",\"hocho\",\"pill\",\"syringe\",\"page_facing_up\",\"page_with_curl\",\"bookmark_tabs\",\"bar_chart\",\"chart_with_upwards_trend\",\"chart_with_downwards_trend\",\"scroll\",\"clipboard\",\"calendar\",\"date\",\"card_index\",\"file_folder\",\"open_file_folder\",\"scissors\",\"pushpin\",\"paperclip\",\"black_nib\",\"pencil2\",\"straight_ruler\",\"triangular_ruler\",\"closed_book\",\"green_book\",\"blue_book\",\"orange_book\",\"notebook\",\"notebook_with_decorative_cover\",\"ledger\",\"books\",\"bookmark\",\"name_badge\",\"microscope\",\"telescope\",\"newspaper\",\"football\",\"basketball\",\"soccer\",\"baseball\",\"tennis\",\"8ball\",\"rugby_football\",\"bowling\",\"golf\",\"mountain_bicyclist\",\"bicyclist\",\"horse_racing\",\"snowboarder\",\"swimmer\",\"surfer\",\"ski\",\"spades\",\"hearts\",\"clubs\",\"diamonds\",\"gem\",\"ring\",\"trophy\",\"musical_score\",\"musical_keyboard\",\"violin\",\"space_invader\",\"video_game\",\"black_joker\",\"flower_playing_cards\",\"game_die\",\"dart\",\"mahjong\",\"clapper\",\"memo\",\"pencil\",\"book\",\"art\",\"microphone\",\"headphones\",\"trumpet\",\"saxophone\",\"guitar\",\"shoe\",\"sandal\",\"high_heel\",\"lipstick\",\"boot\",\"shirt\",\"tshirt\",\"necktie\",\"womans_clothes\",\"dress\",\"running_shirt_with_sash\",\"jeans\",\"kimono\",\"bikini\",\"ribbon\",\"tophat\",\"crown\",\"womans_hat\",\"mans_shoe\",\"closed_umbrella\",\"briefcase\",\"handbag\",\"pouch\",\"purse\",\"eyeglasses\",\"fishing_pole_and_fish\",\"coffee\",\"tea\",\"sake\",\"baby_bottle\",\"beer\",\"beers\",\"cocktail\",\"tropical_drink\",\"wine_glass\",\"fork_and_knife\",\"pizza\",\"hamburger\",\"fries\",\"poultry_leg\",\"meat_on_bone\",\"spaghetti\",\"curry\",\"fried_shrimp\",\"bento\",\"sushi\",\"fish_cake\",\"rice_ball\",\"rice_cracker\",\"rice\",\"ramen\",\"stew\",\"oden\",\"dango\",\"egg\",\"bread\",\"doughnut\",\"custard\",\"icecream\",\"ice_cream\",\"shaved_ice\",\"birthday\",\"cake\",\"cookie\",\"chocolate_bar\",\"candy\",\"lollipop\",\"honey_pot\",\"apple\",\"green_apple\",\"tangerine\",\"lemon\",\"cherries\",\"grapes\",\"watermelon\",\"strawberry\",\"peach\",\"melon\",\"banana\",\"pear\",\"pineapple\",\"sweet_potato\",\"eggplant\",\"tomato\",\"corn\"]\n\t\t},\n\t\t{\n\t\t\t\"category\" :\"Places\",\n\t\t\t\"list\" : [\"house\",\"house_with_garden\",\"school\",\"office\",\"post_office\",\"hospital\",\"bank\",\"convenience_store\",\"love_hotel\",\"hotel\",\"wedding\",\"church\",\"department_store\",\"european_post_office\",\"city_sunrise\",\"city_sunset\",\"japanese_castle\",\"european_castle\",\"tent\",\"factory\",\"tokyo_tower\",\"japan\",\"mount_fuji\",\"sunrise_over_mountains\",\"sunrise\",\"stars\",\"statue_of_liberty\",\"bridge_at_night\",\"carousel_horse\",\"rainbow\",\"ferris_wheel\",\"fountain\",\"roller_coaster\",\"ship\",\"speedboat\",\"boat\",\"sailboat\",\"rowboat\",\"anchor\",\"rocket\",\"airplane\",\"helicopter\",\"steam_locomotive\",\"tram\",\"mountain_railway\",\"bike\",\"aerial_tramway\",\"suspension_railway\",\"mountain_cableway\",\"tractor\",\"blue_car\",\"oncoming_automobile\",\"car\",\"red_car\",\"taxi\",\"oncoming_taxi\",\"articulated_lorry\",\"bus\",\"oncoming_bus\",\"rotating_light\",\"police_car\",\"oncoming_police_car\",\"fire_engine\",\"ambulance\",\"minibus\",\"truck\",\"train\",\"station\",\"train2\",\"bullettrain_front\",\"bullettrain_side\",\"light_rail\",\"monorail\",\"railway_car\",\"trolleybus\",\"ticket\",\"fuelpump\",\"vertical_traffic_light\",\"traffic_light\",\"warning\",\"construction\",\"beginner\",\"atm\",\"slot_machine\",\"busstop\",\"barber\",\"hotsprings\",\"checkered_flag\",\"crossed_flags\",\"izakaya_lantern\",\"moyai\",\"circus_tent\",\"performing_arts\",\"round_pushpin\",\"triangular_flag_on_post\",\"jp\",\"kr\",\"cn\",\"us\",\"fr\",\"es\",\"it\",\"ru\",\"gb\",\"uk\",\"de\"]\n\t\t},\n\t\t{\n\t\t\t\"category\" :\"Symbols\",\n\t\t\t\"list\" : [\"one\",\"two\",\"three\",\"four\",\"five\",\"six\",\"seven\",\"eight\",\"nine\",\"keycap_ten\",\"1234\",\"zero\",\"hash\",\"symbols\",\"arrow_backward\",\"arrow_down\",\"arrow_forward\",\"arrow_left\",\"capital_abcd\",\"abcd\",\"abc\",\"arrow_lower_left\",\"arrow_lower_right\",\"arrow_right\",\"arrow_up\",\"arrow_upper_left\",\"arrow_upper_right\",\"arrow_double_down\",\"arrow_double_up\",\"arrow_down_small\",\"arrow_heading_down\",\"arrow_heading_up\",\"leftwards_arrow_with_hook\",\"arrow_right_hook\",\"left_right_arrow\",\"arrow_up_down\",\"arrow_up_small\",\"arrows_clockwise\",\"arrows_counterclockwise\",\"rewind\",\"fast_forward\",\"information_source\",\"ok\",\"twisted_rightwards_arrows\",\"repeat\",\"repeat_one\",\"new\",\"top\",\"up\",\"cool\",\"free\",\"ng\",\"cinema\",\"koko\",\"signal_strength\",\"u5272\",\"u5408\",\"u55b6\",\"u6307\",\"u6708\",\"u6709\",\"u6e80\",\"u7121\",\"u7533\",\"u7a7a\",\"u7981\",\"sa\",\"restroom\",\"mens\",\"womens\",\"baby_symbol\",\"no_smoking\",\"parking\",\"wheelchair\",\"metro\",\"baggage_claim\",\"accept\",\"wc\",\"potable_water\",\"put_litter_in_its_place\",\"secret\",\"congratulations\",\"m\",\"passport_control\",\"left_luggage\",\"customs\",\"ideograph_advantage\",\"cl\",\"sos\",\"id\",\"no_entry_sign\",\"underage\",\"no_mobile_phones\",\"do_not_litter\",\"non-potable_water\",\"no_bicycles\",\"no_pedestrians\",\"children_crossing\",\"no_entry\",\"eight_spoked_asterisk\",\"sparkle\",\"eight_pointed_black_star\",\"heart_decoration\",\"vs\",\"vibration_mode\",\"mobile_phone_off\",\"chart\",\"currency_exchange\",\"aries\",\"taurus\",\"gemini\",\"cancer\",\"leo\",\"virgo\",\"libra\",\"scorpius\",\"sagittarius\",\"capricorn\",\"aquarius\",\"pisces\",\"ophiuchus\",\"six_pointed_star\",\"negative_squared_cross_mark\",\"a\",\"b\",\"ab\",\"o2\",\"diamond_shape_with_a_dot_inside\",\"recycle\",\"end\",\"back\",\"on\",\"soon\",\"clock1\",\"clock130\",\"clock10\",\"clock1030\",\"clock11\",\"clock1130\",\"clock12\",\"clock1230\",\"clock2\",\"clock230\",\"clock3\",\"clock330\",\"clock4\",\"clock430\",\"clock5\",\"clock530\",\"clock6\",\"clock630\",\"clock7\",\"clock730\",\"clock8\",\"clock830\",\"clock9\",\"clock930\",\"heavy_dollar_sign\",\"copyright\",\"registered\",\"tm\",\"x\",\"heavy_exclamation_mark\",\"bangbang\",\"interrobang\",\"o\",\"heavy_multiplication_x\",\"heavy_plus_sign\",\"heavy_minus_sign\",\"heavy_division_sign\",\"white_flower\",\"100\",\"heavy_check_mark\",\"ballot_box_with_check\",\"radio_button\",\"link\",\"curly_loop\",\"wavy_dash\",\"part_alternation_mark\",\"trident\",\"black_small_square\",\"white_small_square\",\"black_medium_small_square\",\"white_medium_small_square\",\"black_medium_square\",\"white_medium_square\",\"black_large_square\",\"white_large_square\",\"white_check_mark\",\"black_square_button\",\"white_square_button\",\"black_circle\",\"white_circle\",\"red_circle\",\"large_blue_circle\",\"large_blue_diamond\",\"large_orange_diamond\",\"small_blue_diamond\",\"small_orange_diamond\",\"small_red_triangle\",\"small_red_triangle_down\",\"shipit\"]\n\t\t}\n\t],\n\n\t\"twemoji\" : [\"1f004\",\"1f0cf\",\"1f170\",\"1f171\",\"1f17e\",\"1f17f\",\"1f18e\",\"1f191\",\"1f192\",\"1f193\",\"1f194\",\"1f195\",\"1f196\",\"1f197\",\"1f198\",\"1f199\",\"1f19a\",\"1f1e6\",\"1f1e7\",\"1f1e8-1f1f3\",\"1f1e8\",\"1f1e9-1f1ea\",\"1f1e9\",\"1f1ea-1f1f8\",\"1f1ea\",\"1f1eb-1f1f7\",\"1f1eb\",\"1f1ec-1f1e7\",\"1f1ec\",\"1f1ed\",\"1f1ee-1f1f9\",\"1f1ee\",\"1f1ef-1f1f5\",\"1f1ef\",\"1f1f0-1f1f7\",\"1f1f0\",\"1f1f1\",\"1f1f2\",\"1f1f3\",\"1f1f4\",\"1f1f5\",\"1f1f6\",\"1f1f7-1f1fa\",\"1f1f7\",\"1f1f8\",\"1f1f9\",\"1f1fa-1f1f8\",\"1f1fa\",\"1f1fb\",\"1f1fc\",\"1f1fd\",\"1f1fe\",\"1f1ff\",\"1f201\",\"1f202\",\"1f21a\",\"1f22f\",\"1f232\",\"1f233\",\"1f234\",\"1f235\",\"1f236\",\"1f237\",\"1f238\",\"1f239\",\"1f23a\",\"1f250\",\"1f251\",\"1f300\",\"1f301\",\"1f302\",\"1f303\",\"1f304\",\"1f305\",\"1f306\",\"1f307\",\"1f308\",\"1f309\",\"1f30a\",\"1f30b\",\"1f30c\",\"1f30d\",\"1f30e\",\"1f30f\",\"1f310\",\"1f311\",\"1f312\",\"1f313\",\"1f314\",\"1f315\",\"1f316\",\"1f317\",\"1f318\",\"1f319\",\"1f31a\",\"1f31b\",\"1f31c\",\"1f31d\",\"1f31e\",\"1f31f\",\"1f320\",\"1f330\",\"1f331\",\"1f332\",\"1f333\",\"1f334\",\"1f335\",\"1f337\",\"1f338\",\"1f339\",\"1f33a\",\"1f33b\",\"1f33c\",\"1f33d\",\"1f33e\",\"1f33f\",\"1f340\",\"1f341\",\"1f342\",\"1f343\",\"1f344\",\"1f345\",\"1f346\",\"1f347\",\"1f348\",\"1f349\",\"1f34a\",\"1f34b\",\"1f34c\",\"1f34d\",\"1f34e\",\"1f34f\",\"1f350\",\"1f351\",\"1f352\",\"1f353\",\"1f354\",\"1f355\",\"1f356\",\"1f357\",\"1f358\",\"1f359\",\"1f35a\",\"1f35b\",\"1f35c\",\"1f35d\",\"1f35e\",\"1f35f\",\"1f360\",\"1f361\",\"1f362\",\"1f363\",\"1f364\",\"1f365\",\"1f366\",\"1f367\",\"1f368\",\"1f369\",\"1f36a\",\"1f36b\",\"1f36c\",\"1f36d\",\"1f36e\",\"1f36f\",\"1f370\",\"1f371\",\"1f372\",\"1f373\",\"1f374\",\"1f375\",\"1f376\",\"1f377\",\"1f378\",\"1f379\",\"1f37a\",\"1f37b\",\"1f37c\",\"1f380\",\"1f381\",\"1f382\",\"1f383\",\"1f384\",\"1f385\",\"1f386\",\"1f387\",\"1f388\",\"1f389\",\"1f38a\",\"1f38b\",\"1f38c\",\"1f38d\",\"1f38e\",\"1f38f\",\"1f390\",\"1f391\",\"1f392\",\"1f393\",\"1f3a0\",\"1f3a1\",\"1f3a2\",\"1f3a3\",\"1f3a4\",\"1f3a5\",\"1f3a6\",\"1f3a7\",\"1f3a8\",\"1f3a9\",\"1f3aa\",\"1f3ab\",\"1f3ac\",\"1f3ad\",\"1f3ae\",\"1f3af\",\"1f3b0\",\"1f3b1\",\"1f3b2\",\"1f3b3\",\"1f3b4\",\"1f3b5\",\"1f3b6\",\"1f3b7\",\"1f3b8\",\"1f3b9\",\"1f3ba\",\"1f3bb\",\"1f3bc\",\"1f3bd\",\"1f3be\",\"1f3bf\",\"1f3c0\",\"1f3c1\",\"1f3c2\",\"1f3c3\",\"1f3c4\",\"1f3c6\",\"1f3c7\",\"1f3c8\",\"1f3c9\",\"1f3ca\",\"1f3e0\",\"1f3e1\",\"1f3e2\",\"1f3e3\",\"1f3e4\",\"1f3e5\",\"1f3e6\",\"1f3e7\",\"1f3e8\",\"1f3e9\",\"1f3ea\",\"1f3eb\",\"1f3ec\",\"1f3ed\",\"1f3ee\",\"1f3ef\",\"1f3f0\",\"1f400\",\"1f401\",\"1f402\",\"1f403\",\"1f404\",\"1f405\",\"1f406\",\"1f407\",\"1f408\",\"1f409\",\"1f40a\",\"1f40b\",\"1f40c\",\"1f40d\",\"1f40e\",\"1f40f\",\"1f410\",\"1f411\",\"1f412\",\"1f413\",\"1f414\",\"1f415\",\"1f416\",\"1f417\",\"1f418\",\"1f419\",\"1f41a\",\"1f41b\",\"1f41c\",\"1f41d\",\"1f41e\",\"1f41f\",\"1f420\",\"1f421\",\"1f422\",\"1f423\",\"1f424\",\"1f425\",\"1f426\",\"1f427\",\"1f428\",\"1f429\",\"1f42a\",\"1f42b\",\"1f42c\",\"1f42d\",\"1f42e\",\"1f42f\",\"1f430\",\"1f431\",\"1f432\",\"1f433\",\"1f434\",\"1f435\",\"1f436\",\"1f437\",\"1f438\",\"1f439\",\"1f43a\",\"1f43b\",\"1f43c\",\"1f43d\",\"1f43e\",\"1f440\",\"1f442\",\"1f443\",\"1f444\",\"1f445\",\"1f446\",\"1f447\",\"1f448\",\"1f449\",\"1f44a\",\"1f44b\",\"1f44c\",\"1f44d\",\"1f44e\",\"1f44f\",\"1f450\",\"1f451\",\"1f452\",\"1f453\",\"1f454\",\"1f455\",\"1f456\",\"1f457\",\"1f458\",\"1f459\",\"1f45a\",\"1f45b\",\"1f45c\",\"1f45d\",\"1f45e\",\"1f45f\",\"1f460\",\"1f461\",\"1f462\",\"1f463\",\"1f464\",\"1f465\",\"1f466\",\"1f467\",\"1f468\",\"1f469\",\"1f46a\",\"1f46b\",\"1f46c\",\"1f46d\",\"1f46e\",\"1f46f\",\"1f470\",\"1f471\",\"1f472\",\"1f473\",\"1f474\",\"1f475\",\"1f476\",\"1f477\",\"1f478\",\"1f479\",\"1f47a\",\"1f47b\",\"1f47c\",\"1f47d\",\"1f47e\",\"1f47f\",\"1f480\",\"1f481\",\"1f482\",\"1f483\",\"1f484\",\"1f485\",\"1f486\",\"1f487\",\"1f488\",\"1f489\",\"1f48a\",\"1f48b\",\"1f48c\",\"1f48d\",\"1f48e\",\"1f48f\",\"1f490\",\"1f491\",\"1f492\",\"1f493\",\"1f494\",\"1f495\",\"1f496\",\"1f497\",\"1f498\",\"1f499\",\"1f49a\",\"1f49b\",\"1f49c\",\"1f49d\",\"1f49e\",\"1f49f\",\"1f4a0\",\"1f4a1\",\"1f4a2\",\"1f4a3\",\"1f4a4\",\"1f4a5\",\"1f4a6\",\"1f4a7\",\"1f4a8\",\"1f4a9\",\"1f4aa\",\"1f4ab\",\"1f4ac\",\"1f4ad\",\"1f4ae\",\"1f4af\",\"1f4b0\",\"1f4b1\",\"1f4b2\",\"1f4b3\",\"1f4b4\",\"1f4b5\",\"1f4b6\",\"1f4b7\",\"1f4b8\",\"1f4b9\",\"1f4ba\",\"1f4bb\",\"1f4bc\",\"1f4bd\",\"1f4be\",\"1f4bf\",\"1f4c0\",\"1f4c1\",\"1f4c2\",\"1f4c3\",\"1f4c4\",\"1f4c5\",\"1f4c6\",\"1f4c7\",\"1f4c8\",\"1f4c9\",\"1f4ca\",\"1f4cb\",\"1f4cc\",\"1f4cd\",\"1f4ce\",\"1f4cf\",\"1f4d0\",\"1f4d1\",\"1f4d2\",\"1f4d3\",\"1f4d4\",\"1f4d5\",\"1f4d6\",\"1f4d7\",\"1f4d8\",\"1f4d9\",\"1f4da\",\"1f4db\",\"1f4dc\",\"1f4dd\",\"1f4de\",\"1f4df\",\"1f4e0\",\"1f4e1\",\"1f4e2\",\"1f4e3\",\"1f4e4\",\"1f4e5\",\"1f4e6\",\"1f4e7\",\"1f4e8\",\"1f4e9\",\"1f4ea\",\"1f4eb\",\"1f4ec\",\"1f4ed\",\"1f4ee\",\"1f4ef\",\"1f4f0\",\"1f4f1\",\"1f4f2\",\"1f4f3\",\"1f4f4\",\"1f4f5\",\"1f4f6\",\"1f4f7\",\"1f4f9\",\"1f4fa\",\"1f4fb\",\"1f4fc\",\"1f500\",\"1f501\",\"1f502\",\"1f503\",\"1f504\",\"1f505\",\"1f506\",\"1f507\",\"1f508\",\"1f509\",\"1f50a\",\"1f50b\",\"1f50c\",\"1f50d\",\"1f50e\",\"1f50f\",\"1f510\",\"1f511\",\"1f512\",\"1f513\",\"1f514\",\"1f515\",\"1f516\",\"1f517\",\"1f518\",\"1f519\",\"1f51a\",\"1f51b\",\"1f51c\",\"1f51d\",\"1f51e\",\"1f51f\",\"1f520\",\"1f521\",\"1f522\",\"1f523\",\"1f524\",\"1f525\",\"1f526\",\"1f527\",\"1f528\",\"1f529\",\"1f52a\",\"1f52b\",\"1f52c\",\"1f52d\",\"1f52e\",\"1f52f\",\"1f530\",\"1f531\",\"1f532\",\"1f533\",\"1f534\",\"1f535\",\"1f536\",\"1f537\",\"1f538\",\"1f539\",\"1f53a\",\"1f53b\",\"1f53c\",\"1f53d\",\"1f550\",\"1f551\",\"1f552\",\"1f553\",\"1f554\",\"1f555\",\"1f556\",\"1f557\",\"1f558\",\"1f559\",\"1f55a\",\"1f55b\",\"1f55c\",\"1f55d\",\"1f55e\",\"1f55f\",\"1f560\",\"1f561\",\"1f562\",\"1f563\",\"1f564\",\"1f565\",\"1f566\",\"1f567\",\"1f5fb\",\"1f5fc\",\"1f5fd\",\"1f5fe\",\"1f5ff\",\"1f600\",\"1f601\",\"1f602\",\"1f603\",\"1f604\",\"1f605\",\"1f606\",\"1f607\",\"1f608\",\"1f609\",\"1f60a\",\"1f60b\",\"1f60c\",\"1f60d\",\"1f60e\",\"1f60f\",\"1f610\",\"1f611\",\"1f612\",\"1f613\",\"1f614\",\"1f615\",\"1f616\",\"1f617\",\"1f618\",\"1f619\",\"1f61a\",\"1f61b\",\"1f61c\",\"1f61d\",\"1f61e\",\"1f61f\",\"1f620\",\"1f621\",\"1f622\",\"1f623\",\"1f624\",\"1f625\",\"1f626\",\"1f627\",\"1f628\",\"1f629\",\"1f62a\",\"1f62b\",\"1f62c\",\"1f62d\",\"1f62e\",\"1f62f\",\"1f630\",\"1f631\",\"1f632\",\"1f633\",\"1f634\",\"1f635\",\"1f636\",\"1f637\",\"1f638\",\"1f639\",\"1f63a\",\"1f63b\",\"1f63c\",\"1f63d\",\"1f63e\",\"1f63f\",\"1f640\",\"1f645\",\"1f646\",\"1f647\",\"1f648\",\"1f649\",\"1f64a\",\"1f64b\",\"1f64c\",\"1f64d\",\"1f64e\",\"1f64f\",\"1f680\",\"1f681\",\"1f682\",\"1f683\",\"1f684\",\"1f685\",\"1f686\",\"1f687\",\"1f688\",\"1f689\",\"1f68a\",\"1f68b\",\"1f68c\",\"1f68d\",\"1f68e\",\"1f68f\",\"1f690\",\"1f691\",\"1f692\",\"1f693\",\"1f694\",\"1f695\",\"1f696\",\"1f697\",\"1f698\",\"1f699\",\"1f69a\",\"1f69b\",\"1f69c\",\"1f69d\",\"1f69e\",\"1f69f\",\"1f6a0\",\"1f6a1\",\"1f6a2\",\"1f6a3\",\"1f6a4\",\"1f6a5\",\"1f6a6\",\"1f6a7\",\"1f6a8\",\"1f6a9\",\"1f6aa\",\"1f6ab\",\"1f6ac\",\"1f6ad\",\"1f6ae\",\"1f6af\",\"1f6b0\",\"1f6b1\",\"1f6b2\",\"1f6b3\",\"1f6b4\",\"1f6b5\",\"1f6b6\",\"1f6b7\",\"1f6b8\",\"1f6b9\",\"1f6ba\",\"1f6bb\",\"1f6bc\",\"1f6bd\",\"1f6be\",\"1f6bf\",\"1f6c0\",\"1f6c1\",\"1f6c2\",\"1f6c3\",\"1f6c4\",\"1f6c5\",\"203c\",\"2049\",\"2122\",\"2139\",\"2194\",\"2195\",\"2196\",\"2197\",\"2198\",\"2199\",\"21a9\",\"21aa\",\"23-20e3\",\"231a\",\"231b\",\"23e9\",\"23ea\",\"23eb\",\"23ec\",\"23f0\",\"23f3\",\"24c2\",\"25aa\",\"25ab\",\"25b6\",\"25c0\",\"25fb\",\"25fc\",\"25fd\",\"25fe\",\"2600\",\"2601\",\"260e\",\"2611\",\"2614\",\"2615\",\"261d\",\"263a\",\"2648\",\"2649\",\"264a\",\"264b\",\"264c\",\"264d\",\"264e\",\"264f\",\"2650\",\"2651\",\"2652\",\"2653\",\"2660\",\"2663\",\"2665\",\"2666\",\"2668\",\"267b\",\"267f\",\"2693\",\"26a0\",\"26a1\",\"26aa\",\"26ab\",\"26bd\",\"26be\",\"26c4\",\"26c5\",\"26ce\",\"26d4\",\"26ea\",\"26f2\",\"26f3\",\"26f5\",\"26fa\",\"26fd\",\"2702\",\"2705\",\"2708\",\"2709\",\"270a\",\"270b\",\"270c\",\"270f\",\"2712\",\"2714\",\"2716\",\"2728\",\"2733\",\"2734\",\"2744\",\"2747\",\"274c\",\"274e\",\"2753\",\"2754\",\"2755\",\"2757\",\"2764\",\"2795\",\"2796\",\"2797\",\"27a1\",\"27b0\",\"27bf\",\"2934\",\"2935\",\"2b05\",\"2b06\",\"2b07\",\"2b1b\",\"2b1c\",\"2b50\",\"2b55\",\"30-20e3\",\"3030\",\"303d\",\"31-20e3\",\"32-20e3\",\"3297\",\"3299\",\"33-20e3\",\"34-20e3\",\"35-20e3\",\"36-20e3\",\"37-20e3\",\"38-20e3\",\"39-20e3\",\"a9\",\"ae\",\"e50a\"],\n\n\t\"font-awesome\" : [\"glass\",\"music\",\"search\",\"envelope-o\",\"heart\",\"star\",\"star-o\",\"user\",\"film\",\"th-large\",\"th\",\"th-list\",\"check\",\"times\",\"search-plus\",\"search-minus\",\"power-off\",\"signal\",\"cog\",\"trash-o\",\"home\",\"file-o\",\"clock-o\",\"road\",\"download\",\"arrow-circle-o-down\",\"arrow-circle-o-up\",\"inbox\",\"play-circle-o\",\"repeat\",\"refresh\",\"list-alt\",\"lock\",\"flag\",\"headphones\",\"volume-off\",\"volume-down\",\"volume-up\",\"qrcode\",\"barcode\",\"tag\",\"tags\",\"book\",\"bookmark\",\"print\",\"camera\",\"font\",\"bold\",\"italic\",\"text-height\",\"text-width\",\"align-left\",\"align-center\",\"align-right\",\"align-justify\",\"list\",\"outdent\",\"indent\",\"video-camera\",\"picture-o\",\"pencil\",\"map-marker\",\"adjust\",\"tint\",\"pencil-square-o\",\"share-square-o\",\"check-square-o\",\"arrows\",\"step-backward\",\"fast-backward\",\"backward\",\"play\",\"pause\",\"stop\",\"forward\",\"fast-forward\",\"step-forward\",\"eject\",\"chevron-left\",\"chevron-right\",\"plus-circle\",\"minus-circle\",\"times-circle\",\"check-circle\",\"question-circle\",\"info-circle\",\"crosshairs\",\"times-circle-o\",\"check-circle-o\",\"ban\",\"arrow-left\",\"arrow-right\",\"arrow-up\",\"arrow-down\",\"share\",\"expand\",\"compress\",\"plus\",\"minus\",\"asterisk\",\"exclamation-circle\",\"gift\",\"leaf\",\"fire\",\"eye\",\"eye-slash\",\"exclamation-triangle\",\"plane\",\"calendar\",\"random\",\"comment\",\"magnet\",\"chevron-up\",\"chevron-down\",\"retweet\",\"shopping-cart\",\"folder\",\"folder-open\",\"arrows-v\",\"arrows-h\",\"bar-chart\",\"twitter-square\",\"facebook-square\",\"camera-retro\",\"key\",\"cogs\",\"comments\",\"thumbs-o-up\",\"thumbs-o-down\",\"star-half\",\"heart-o\",\"sign-out\",\"linkedin-square\",\"thumb-tack\",\"external-link\",\"sign-in\",\"trophy\",\"github-square\",\"upload\",\"lemon-o\",\"phone\",\"square-o\",\"bookmark-o\",\"phone-square\",\"twitter\",\"facebook\",\"github\",\"unlock\",\"credit-card\",\"rss\",\"hdd-o\",\"bullhorn\",\"bell\",\"certificate\",\"hand-o-right\",\"hand-o-left\",\"hand-o-up\",\"hand-o-down\",\"arrow-circle-left\",\"arrow-circle-right\",\"arrow-circle-up\",\"arrow-circle-down\",\"globe\",\"wrench\",\"tasks\",\"filter\",\"briefcase\",\"arrows-alt\",\"users\",\"link\",\"cloud\",\"flask\",\"scissors\",\"files-o\",\"paperclip\",\"floppy-o\",\"square\",\"bars\",\"list-ul\",\"list-ol\",\"strikethrough\",\"underline\",\"table\",\"magic\",\"truck\",\"pinterest\",\"pinterest-square\",\"google-plus-square\",\"google-plus\",\"money\",\"caret-down\",\"caret-up\",\"caret-left\",\"caret-right\",\"columns\",\"sort\",\"sort-desc\",\"sort-asc\",\"envelope\",\"linkedin\",\"undo\",\"gavel\",\"tachometer\",\"comment-o\",\"comments-o\",\"bolt\",\"sitemap\",\"umbrella\",\"clipboard\",\"lightbulb-o\",\"exchange\",\"cloud-download\",\"cloud-upload\",\"user-md\",\"stethoscope\",\"suitcase\",\"bell-o\",\"coffee\",\"cutlery\",\"file-text-o\",\"building-o\",\"hospital-o\",\"ambulance\",\"medkit\",\"fighter-jet\",\"beer\",\"h-square\",\"plus-square\",\"angle-double-left\",\"angle-double-right\",\"angle-double-up\",\"angle-double-down\",\"angle-left\",\"angle-right\",\"angle-up\",\"angle-down\",\"desktop\",\"laptop\",\"tablet\",\"mobile\",\"circle-o\",\"quote-left\",\"quote-right\",\"spinner\",\"circle\",\"reply\",\"github-alt\",\"folder-o\",\"folder-open-o\",\"smile-o\",\"frown-o\",\"meh-o\",\"gamepad\",\"keyboard-o\",\"flag-o\",\"flag-checkered\",\"terminal\",\"code\",\"reply-all\",\"star-half-o\",\"location-arrow\",\"crop\",\"code-fork\",\"chain-broken\",\"question\",\"info\",\"exclamation\",\"superscript\",\"subscript\",\"eraser\",\"puzzle-piece\",\"microphone\",\"microphone-slash\",\"shield\",\"calendar-o\",\"fire-extinguisher\",\"rocket\",\"maxcdn\",\"chevron-circle-left\",\"chevron-circle-right\",\"chevron-circle-up\",\"chevron-circle-down\",\"html5\",\"css3\",\"anchor\",\"unlock-alt\",\"bullseye\",\"ellipsis-h\",\"ellipsis-v\",\"rss-square\",\"play-circle\",\"ticket\",\"minus-square\",\"minus-square-o\",\"level-up\",\"level-down\",\"check-square\",\"pencil-square\",\"share-square\",\"compass\",\"caret-square-o-down\",\"caret-square-o-up\",\"caret-square-o-right\",\"eur\",\"gbp\",\"usd\",\"inr\",\"jpy\",\"rub\",\"krw\",\"btc\",\"file\",\"file-text\",\"sort-alpha-asc\",\"sort-alpha-desc\",\"sort-amount-asc\",\"sort-amount-desc\",\"sort-numeric-asc\",\"sort-numeric-desc\",\"thumbs-up\",\"thumbs-down\",\"youtube-square\",\"youtube\",\"xing\",\"xing-square\",\"youtube-play\",\"dropbox\",\"stack-overflow\",\"instagram\",\"flickr\",\"adn\",\"bitbucket\",\"bitbucket-square\",\"tumblr\",\"tumblr-square\",\"long-arrow-down\",\"long-arrow-up\",\"long-arrow-left\",\"long-arrow-right\",\"apple\",\"windows\",\"android\",\"linux\",\"dribbble\",\"skype\",\"foursquare\",\"trello\",\"female\",\"male\",\"gratipay\",\"sun-o\",\"moon-o\",\"archive\",\"bug\",\"vk\",\"weibo\",\"renren\",\"pagelines\",\"stack-exchange\",\"arrow-circle-o-right\",\"arrow-circle-o-left\",\"caret-square-o-left\",\"dot-circle-o\",\"wheelchair\",\"vimeo-square\",\"try\",\"plus-square-o\",\"space-shuttle\",\"slack\",\"envelope-square\",\"wordpress\",\"openid\",\"university\",\"graduation-cap\",\"yahoo\",\"google\",\"reddit\",\"reddit-square\",\"stumbleupon-circle\",\"stumbleupon\",\"delicious\",\"digg\",\"pied-piper\",\"pied-piper-alt\",\"drupal\",\"joomla\",\"language\",\"fax\",\"building\",\"child\",\"paw\",\"spoon\",\"cube\",\"cubes\",\"behance\",\"behance-square\",\"steam\",\"steam-square\",\"recycle\",\"car\",\"taxi\",\"tree\",\"spotify\",\"deviantart\",\"soundcloud\",\"database\",\"file-pdf-o\",\"file-word-o\",\"file-excel-o\",\"file-powerpoint-o\",\"file-image-o\",\"file-archive-o\",\"file-audio-o\",\"file-video-o\",\"file-code-o\",\"vine\",\"codepen\",\"jsfiddle\",\"life-ring\",\"circle-o-notch\",\"rebel\",\"empire\",\"git-square\",\"git\",\"hacker-news\",\"tencent-weibo\",\"qq\",\"weixin\",\"paper-plane\",\"paper-plane-o\",\"history\",\"circle-thin\",\"header\",\"paragraph\",\"sliders\",\"share-alt\",\"share-alt-square\",\"bomb\",\"futbol-o\",\"tty\",\"binoculars\",\"plug\",\"slideshare\",\"twitch\",\"yelp\",\"newspaper-o\",\"wifi\",\"calculator\",\"paypal\",\"google-wallet\",\"cc-visa\",\"cc-mastercard\",\"cc-discover\",\"cc-amex\",\"cc-paypal\",\"cc-stripe\",\"bell-slash\",\"bell-slash-o\",\"trash\",\"copyright\",\"at\",\"eyedropper\",\"paint-brush\",\"birthday-cake\",\"area-chart\",\"pie-chart\",\"line-chart\",\"lastfm\",\"lastfm-square\",\"toggle-off\",\"toggle-on\",\"bicycle\",\"bus\",\"ioxhost\",\"angellist\",\"cc\",\"ils\",\"meanpath\",\"buysellads\",\"connectdevelop\",\"dashcube\",\"forumbee\",\"leanpub\",\"sellsy\",\"shirtsinbulk\",\"simplybuilt\",\"skyatlas\",\"cart-plus\",\"cart-arrow-down\",\"diamond\",\"ship\",\"user-secret\",\"motorcycle\",\"street-view\",\"heartbeat\",\"venus\",\"mars\",\"mercury\",\"transgender\",\"transgender-alt\",\"venus-double\",\"mars-double\",\"venus-mars\",\"mars-stroke\",\"mars-stroke-v\",\"mars-stroke-h\",\"neuter\",\"facebook-official\",\"pinterest-p\",\"whatsapp\",\"server\",\"user-plus\",\"user-times\",\"bed\",\"viacoin\",\"train\",\"subway\",\"medium\",\"GitHub\",\"bed\",\"buysellads\",\"cart-arrow-down\",\"cart-plus\",\"connectdevelop\",\"dashcube\",\"diamond\",\"facebook-official\",\"forumbee\",\"heartbeat\",\"hotel\",\"leanpub\",\"mars\",\"mars-double\",\"mars-stroke\",\"mars-stroke-h\",\"mars-stroke-v\",\"medium\",\"mercury\",\"motorcycle\",\"neuter\",\"pinterest-p\",\"sellsy\",\"server\",\"ship\",\"shirtsinbulk\",\"simplybuilt\",\"skyatlas\",\"street-view\",\"subway\",\"train\",\"transgender\",\"transgender-alt\",\"user-plus\",\"user-secret\",\"user-times\",\"venus\",\"venus-double\",\"venus-mars\",\"viacoin\",\"whatsapp\",\"adjust\",\"anchor\",\"archive\",\"area-chart\",\"arrows\",\"arrows-h\",\"arrows-v\",\"asterisk\",\"at\",\"automobile\",\"ban\",\"bank\",\"bar-chart\",\"bar-chart-o\",\"barcode\",\"bars\",\"bed\",\"beer\",\"bell\",\"bell-o\",\"bell-slash\",\"bell-slash-o\",\"bicycle\",\"binoculars\",\"birthday-cake\",\"bolt\",\"bomb\",\"book\",\"bookmark\",\"bookmark-o\",\"briefcase\",\"bug\",\"building\",\"building-o\",\"bullhorn\",\"bullseye\",\"bus\",\"cab\",\"calculator\",\"calendar\",\"calendar-o\",\"camera\",\"camera-retro\",\"car\",\"caret-square-o-down\",\"caret-square-o-left\",\"caret-square-o-right\",\"caret-square-o-up\",\"cart-arrow-down\",\"cart-plus\",\"cc\",\"certificate\",\"check\",\"check-circle\",\"check-circle-o\",\"check-square\",\"check-square-o\",\"child\",\"circle\",\"circle-o\",\"circle-o-notch\",\"circle-thin\",\"clock-o\",\"close\",\"cloud\",\"cloud-download\",\"cloud-upload\",\"code\",\"code-fork\",\"coffee\",\"cog\",\"cogs\",\"comment\",\"comment-o\",\"comments\",\"comments-o\",\"compass\",\"copyright\",\"credit-card\",\"crop\",\"crosshairs\",\"cube\",\"cubes\",\"cutlery\",\"dashboard\",\"database\",\"desktop\",\"diamond\",\"dot-circle-o\",\"download\",\"edit\",\"ellipsis-h\",\"ellipsis-v\",\"envelope\",\"envelope-o\",\"envelope-square\",\"eraser\",\"exchange\",\"exclamation\",\"exclamation-circle\",\"exclamation-triangle\",\"external-link\",\"external-link-square\",\"eye\",\"eye-slash\",\"eyedropper\",\"fax\",\"female\",\"fighter-jet\",\"file-archive-o\",\"file-audio-o\",\"file-code-o\",\"file-excel-o\",\"file-image-o\",\"file-movie-o\",\"file-pdf-o\",\"file-photo-o\",\"file-picture-o\",\"file-powerpoint-o\",\"file-sound-o\",\"file-video-o\",\"file-word-o\",\"file-zip-o\",\"film\",\"filter\",\"fire\",\"fire-extinguisher\",\"flag\",\"flag-checkered\",\"flag-o\",\"flash\",\"flask\",\"folder\",\"folder-o\",\"folder-open\",\"folder-open-o\",\"frown-o\",\"futbol-o\",\"gamepad\",\"gavel\",\"gear\",\"gears\",\"genderless\",\"gift\",\"glass\",\"globe\",\"graduation-cap\",\"group\",\"hdd-o\",\"headphones\",\"heart\",\"heart-o\",\"heartbeat\",\"history\",\"home\",\"hotel\",\"image\",\"inbox\",\"info\",\"info-circle\",\"institution\",\"key\",\"keyboard-o\",\"language\",\"laptop\",\"leaf\",\"legal\",\"lemon-o\",\"level-down\",\"level-up\",\"life-bouy\",\"life-buoy\",\"life-ring\",\"life-saver\",\"lightbulb-o\",\"line-chart\",\"location-arrow\",\"lock\",\"magic\",\"magnet\",\"mail-forward\",\"mail-reply\",\"mail-reply-all\",\"male\",\"map-marker\",\"meh-o\",\"microphone\",\"microphone-slash\",\"minus\",\"minus-circle\",\"minus-square\",\"minus-square-o\",\"mobile\",\"mobile-phone\",\"money\",\"moon-o\",\"mortar-board\",\"motorcycle\",\"music\",\"navicon\",\"newspaper-o\",\"paint-brush\",\"paper-plane\",\"paper-plane-o\",\"paw\",\"pencil\",\"pencil-square\",\"pencil-square-o\",\"phone\",\"phone-square\",\"photo\",\"picture-o\",\"pie-chart\",\"plane\",\"plug\",\"plus\",\"plus-circle\",\"plus-square\",\"plus-square-o\",\"power-off\",\"print\",\"puzzle-piece\",\"qrcode\",\"question\",\"question-circle\",\"quote-left\",\"quote-right\",\"random\",\"recycle\",\"refresh\",\"remove\",\"reorder\",\"reply\",\"reply-all\",\"retweet\",\"road\",\"rocket\",\"rss\",\"rss-square\",\"search\",\"search-minus\",\"search-plus\",\"send\",\"send-o\",\"server\",\"share\",\"share-alt\",\"share-alt-square\",\"share-square\",\"share-square-o\",\"shield\",\"ship\",\"shopping-cart\",\"sign-in\",\"sign-out\",\"signal\",\"sitemap\",\"sliders\",\"smile-o\",\"soccer-ball-o\",\"sort\",\"sort-alpha-asc\",\"sort-alpha-desc\",\"sort-amount-asc\",\"sort-amount-desc\",\"sort-asc\",\"sort-desc\",\"sort-down\",\"sort-numeric-asc\",\"sort-numeric-desc\",\"sort-up\",\"space-shuttle\",\"spinner\",\"spoon\",\"square\",\"square-o\",\"star\",\"star-half\",\"star-half-empty\",\"star-half-full\",\"star-half-o\",\"star-o\",\"street-view\",\"suitcase\",\"sun-o\",\"support\",\"tablet\",\"tachometer\",\"tag\",\"tags\",\"tasks\",\"taxi\",\"terminal\",\"thumb-tack\",\"thumbs-down\",\"thumbs-o-down\",\"thumbs-o-up\",\"thumbs-up\",\"ticket\",\"times\",\"times-circle\",\"times-circle-o\",\"tint\",\"toggle-down\",\"toggle-left\",\"toggle-off\",\"toggle-on\",\"toggle-right\",\"toggle-up\",\"trash\",\"trash-o\",\"tree\",\"trophy\",\"truck\",\"tty\",\"umbrella\",\"university\",\"unlock\",\"unlock-alt\",\"unsorted\",\"upload\",\"user\",\"user-plus\",\"user-secret\",\"user-times\",\"users\",\"video-camera\",\"volume-down\",\"volume-off\",\"volume-up\",\"warning\",\"wheelchair\",\"wifi\",\"wrench\",\"ambulance\",\"automobile\",\"bicycle\",\"bus\",\"cab\",\"car\",\"fighter-jet\",\"motorcycle\",\"plane\",\"rocket\",\"ship\",\"space-shuttle\",\"subway\",\"taxi\",\"train\",\"truck\",\"wheelchair\",\"circle-thin\",\"genderless\",\"mars\",\"mars-double\",\"mars-stroke\",\"mars-stroke-h\",\"mars-stroke-v\",\"mercury\",\"neuter\",\"transgender\",\"transgender-alt\",\"venus\",\"venus-double\",\"venus-mars\",\"file\",\"file-archive-o\",\"file-audio-o\",\"file-code-o\",\"file-excel-o\",\"file-image-o\",\"file-movie-o\",\"file-o\",\"file-pdf-o\",\"file-photo-o\",\"file-picture-o\",\"file-powerpoint-o\",\"file-sound-o\",\"file-text\",\"file-text-o\",\"file-video-o\",\"file-word-o\",\"file-zip-o\",\"circle-o-notch\",\"cog\",\"gear\",\"refresh\",\"spinner\",\"check-square\",\"check-square-o\",\"circle\",\"circle-o\",\"dot-circle-o\",\"minus-square\",\"minus-square-o\",\"plus-square\",\"plus-square-o\",\"square\",\"square-o\",\"cc-amex\",\"cc-discover\",\"cc-mastercard\",\"cc-paypal\",\"cc-stripe\",\"cc-visa\",\"credit-card\",\"google-wallet\",\"paypal\",\"area-chart\",\"bar-chart\",\"bar-chart-o\",\"line-chart\",\"pie-chart\",\"bitcoin\",\"btc\",\"cny\",\"dollar\",\"eur\",\"euro\",\"gbp\",\"ils\",\"inr\",\"jpy\",\"krw\",\"money\",\"rmb\",\"rouble\",\"rub\",\"ruble\",\"rupee\",\"shekel\",\"sheqel\",\"try\",\"turkish-lira\",\"usd\",\"won\",\"yen\",\"align-center\",\"align-justify\",\"align-left\",\"align-right\",\"bold\",\"chain\",\"chain-broken\",\"clipboard\",\"columns\",\"copy\",\"cut\",\"dedent\",\"eraser\",\"file\",\"file-o\",\"file-text\",\"file-text-o\",\"files-o\",\"floppy-o\",\"font\",\"header\",\"indent\",\"italic\",\"link\",\"list\",\"list-alt\",\"list-ol\",\"list-ul\",\"outdent\",\"paperclip\",\"paragraph\",\"paste\",\"repeat\",\"rotate-left\",\"rotate-right\",\"save\",\"scissors\",\"strikethrough\",\"subscript\",\"superscript\",\"table\",\"text-height\",\"text-width\",\"th\",\"th-large\",\"th-list\",\"underline\",\"undo\",\"unlink\",\"angle-double-down\",\"angle-double-left\",\"angle-double-right\",\"angle-double-up\",\"angle-down\",\"angle-left\",\"angle-right\",\"angle-up\",\"arrow-circle-down\",\"arrow-circle-left\",\"arrow-circle-o-down\",\"arrow-circle-o-left\",\"arrow-circle-o-right\",\"arrow-circle-o-up\",\"arrow-circle-right\",\"arrow-circle-up\",\"arrow-down\",\"arrow-left\",\"arrow-right\",\"arrow-up\",\"arrows\",\"arrows-alt\",\"arrows-h\",\"arrows-v\",\"caret-down\",\"caret-left\",\"caret-right\",\"caret-square-o-down\",\"caret-square-o-left\",\"caret-square-o-right\",\"caret-square-o-up\",\"caret-up\",\"chevron-circle-down\",\"chevron-circle-left\",\"chevron-circle-right\",\"chevron-circle-up\",\"chevron-down\",\"chevron-left\",\"chevron-right\",\"chevron-up\",\"hand-o-down\",\"hand-o-left\",\"hand-o-right\",\"hand-o-up\",\"long-arrow-down\",\"long-arrow-left\",\"long-arrow-right\",\"long-arrow-up\",\"toggle-down\",\"toggle-left\",\"toggle-right\",\"toggle-up\",\"arrows-alt\",\"backward\",\"compress\",\"eject\",\"expand\",\"fast-backward\",\"fast-forward\",\"forward\",\"pause\",\"play\",\"play-circle\",\"play-circle-o\",\"step-backward\",\"step-forward\",\"stop\",\"youtube-play\",\"report an issue with Adblock Plus\",\"adn\",\"android\",\"angellist\",\"apple\",\"behance\",\"behance-square\",\"bitbucket\",\"bitbucket-square\",\"bitcoin\",\"btc\",\"buysellads\",\"cc-amex\",\"cc-discover\",\"cc-mastercard\",\"cc-paypal\",\"cc-stripe\",\"cc-visa\",\"codepen\",\"connectdevelop\",\"css3\",\"dashcube\",\"delicious\",\"deviantart\",\"digg\",\"dribbble\",\"dropbox\",\"drupal\",\"empire\",\"facebook\",\"facebook-f\",\"facebook-official\",\"facebook-square\",\"flickr\",\"forumbee\",\"foursquare\",\"ge\",\"git\",\"git-square\",\"github\",\"github-alt\",\"github-square\",\"gittip\",\"google\",\"google-plus\",\"google-plus-square\",\"google-wallet\",\"gratipay\",\"hacker-news\",\"html5\",\"instagram\",\"ioxhost\",\"joomla\",\"jsfiddle\",\"lastfm\",\"lastfm-square\",\"leanpub\",\"linkedin\",\"linkedin-square\",\"linux\",\"maxcdn\",\"meanpath\",\"medium\",\"openid\",\"pagelines\",\"paypal\",\"pied-piper\",\"pied-piper-alt\",\"pinterest\",\"pinterest-p\",\"pinterest-square\",\"qq\",\"ra\",\"rebel\",\"reddit\",\"reddit-square\",\"renren\",\"sellsy\",\"share-alt\",\"share-alt-square\",\"shirtsinbulk\",\"simplybuilt\",\"skyatlas\",\"skype\",\"slack\",\"slideshare\",\"soundcloud\",\"spotify\",\"stack-exchange\",\"stack-overflow\",\"steam\",\"steam-square\",\"stumbleupon\",\"stumbleupon-circle\",\"tencent-weibo\",\"trello\",\"tumblr\",\"tumblr-square\",\"twitch\",\"twitter\",\"twitter-square\",\"viacoin\",\"vimeo-square\",\"vine\",\"vk\",\"wechat\",\"weibo\",\"weixin\",\"whatsapp\",\"windows\",\"wordpress\",\"xing\",\"xing-square\",\"yahoo\",\"yelp\",\"youtube\",\"youtube-play\",\"youtube-square\",\"ambulance\",\"h-square\",\"heart\",\"heart-o\",\"heartbeat\",\"hospital-o\",\"medkit\",\"plus-square\",\"stethoscope\",\"user-md\",\"wheelchair\"]\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/goto-line-dialog/goto-line-dialog.js",
    "content": "/*!\n * Goto line dialog plugin for Editor.md\n *\n * @file        goto-line-dialog.js\n * @author      pandao\n * @version     1.2.1\n * @updateTime  2015-06-09\n * {@link       https://github.com/pandao/editor.md}\n * @license     MIT\n */\n\n(function() {\n\n\tvar factory = function (exports) {\n\n\t\tvar $            = jQuery;\n\t\tvar pluginName   = \"goto-line-dialog\";\n\n\t\tvar langs = {\n\t\t\t\"zh-cn\" : {\n\t\t\t\ttoolbar : {\n\t\t\t\t\t\"goto-line\" : \"跳转到行\"\n\t\t\t\t},\n\t\t\t\tdialog : {\n\t\t\t\t\t\"goto-line\" : {\n\t\t\t\t\t\ttitle  : \"跳转到行\",\n\t\t\t\t\t\tlabel  : \"请输入行号\",\n\t\t\t\t\t\terror  : \"错误：\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"zh-tw\" : {\n\t\t\t\ttoolbar : {\n\t\t\t\t\t\"goto-line\" : \"跳轉到行\"\n\t\t\t\t},\n\t\t\t\tdialog : {\n\t\t\t\t\t\"goto-line\" : {\n\t\t\t\t\t\ttitle  : \"跳轉到行\",\n\t\t\t\t\t\tlabel  : \"請輸入行號\",\n\t\t\t\t\t\terror  : \"錯誤：\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"en\" : {\n\t\t\t\ttoolbar : {\n\t\t\t\t\t\"goto-line\" : \"Goto line\"\n\t\t\t\t},\n\t\t\t\tdialog : {\n\t\t\t\t\t\"goto-line\" : {\n\t\t\t\t\t\ttitle  : \"Goto line\",\n\t\t\t\t\t\tlabel  : \"Enter a line number, range \",\n\t\t\t\t\t\terror  : \"Error: \"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\texports.fn.gotoLineDialog = function() {\n\t\t\tvar _this       = this;\n\t\t\tvar cm          = this.cm;\n\t\t\tvar editor      = this.editor;\n\t\t\tvar settings    = this.settings;\n\t\t\tvar path        = settings.pluginPath + pluginName +\"/\";\n\t\t\tvar classPrefix = this.classPrefix;\n\t\t\tvar dialogName  = classPrefix + pluginName, dialog;\n\n\t\t\t$.extend(true, this.lang, langs[this.lang.name]);\n\t\t\tthis.setToolbar();\n\n\t\t\tvar lang        = this.lang;\n\t\t\tvar dialogLang  = lang.dialog[\"goto-line\"];\n\t\t\tvar lineCount   = cm.lineCount();\n\n\t\t\tdialogLang.error += dialogLang.label + \" 1-\" + lineCount;\n\n\t\t\tif (editor.find(\".\" + dialogName).length < 1) \n\t\t\t{\t\t\t\n\t\t\t\tvar dialogContent = [\n\t\t\t\t\t\"<div class=\\\"editormd-form\\\" style=\\\"padding: 10px 0;\\\">\",\n\t\t\t\t\t\"<p style=\\\"margin: 0;\\\">\" + dialogLang.label + \" 1-\" + lineCount +\"&nbsp;&nbsp;&nbsp;<input type=\\\"number\\\" class=\\\"number-input\\\" style=\\\"width: 60px;\\\" value=\\\"1\\\" max=\\\"\" + lineCount + \"\\\" min=\\\"1\\\" data-line-number /></p>\",\n\t\t\t\t\t\"</div>\"\n\t\t\t\t].join(\"\\n\");\n\n\t\t\t\tdialog = this.createDialog({\n\t\t\t\t\tname       : dialogName,\n\t\t\t\t\ttitle      : dialogLang.title,\n\t\t\t\t\twidth      : 400,\n\t\t\t\t\theight     : 180,\n\t\t\t\t\tmask       : settings.dialogShowMask,\n\t\t\t\t\tdrag       : settings.dialogDraggable,\n\t\t\t\t\tcontent    : dialogContent,\n\t\t\t\t\tlockScreen : settings.dialogLockScreen,\n\t\t\t\t\tmaskStyle  : {\n\t\t\t\t\t\topacity         : settings.dialogMaskOpacity,\n\t\t\t\t\t\tbackgroundColor : settings.dialogMaskBgColor\n\t\t\t\t\t},\n\t\t\t\t\tbuttons    : {\n                        enter : [lang.buttons.enter, function() {\n\t\t\t\t\t\t\tvar line   = parseInt(this.find(\"[data-line-number]\").val());\n\n\t\t\t\t\t\t\tif (line < 1 || line > lineCount) {\n\t\t\t\t\t\t\t\talert(dialogLang.error);\n\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_this.gotoLine(line);\n\n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }],\n\n                        cancel : [lang.buttons.cancel, function() {                                   \n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }]\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdialog = editor.find(\".\" + dialogName);\n\n\t\t\tthis.dialogShowMask(dialog);\n\t\t\tthis.dialogLockScreen();\n\t\t\tdialog.show();\n\t\t};\n\n\t};\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"./../../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t} \n\telse\n\t{\n        factory(window.editormd);\n\t}\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/help-dialog/help-dialog.js",
    "content": "/*!\n * Help dialog plugin for Editor.md\n *\n * @file        help-dialog.js\n * @author      pandao\n * @version     1.2.0\n * @updateTime  2015-03-08\n * {@link       https://github.com/pandao/editor.md}\n * @license     MIT\n */\n\n(function() {\n\n\tvar factory = function (exports) {\n\n\t\tvar $            = jQuery;\n\t\tvar pluginName   = \"help-dialog\";\n\n\t\texports.fn.helpDialog = function() {\n\t\t\tvar _this       = this;\n\t\t\tvar lang        = this.lang;\n\t\t\tvar editor      = this.editor;\n\t\t\tvar settings    = this.settings;\n\t\t\tvar path        = settings.pluginPath + pluginName + \"/\";\n\t\t\tvar classPrefix = this.classPrefix;\n\t\t\tvar dialogName  = classPrefix + pluginName, dialog;\n\t\t\tvar dialogLang  = lang.dialog.help;\n\n\t\t\tif (editor.find(\".\" + dialogName).length < 1)\n\t\t\t{\t\t\t\n\t\t\t\tvar dialogContent = \"<div class=\\\"markdown-body\\\" style=\\\"font-family:微软雅黑, Helvetica, Tahoma, STXihei,Arial;height:390px;overflow:auto;font-size:14px;border-bottom:1px solid #ddd;padding:0 20px 20px 0;\\\"></div>\";\n\n\t\t\t\tdialog = this.createDialog({\n\t\t\t\t\tname       : dialogName,\n\t\t\t\t\ttitle      : dialogLang.title,\n\t\t\t\t\twidth      : 840,\n\t\t\t\t\theight     : 540,\n\t\t\t\t\tmask       : settings.dialogShowMask,\n\t\t\t\t\tdrag       : settings.dialogDraggable,\n\t\t\t\t\tcontent    : dialogContent,\n\t\t\t\t\tlockScreen : settings.dialogLockScreen,\n\t\t\t\t\tmaskStyle  : {\n\t\t\t\t\t\topacity         : settings.dialogMaskOpacity,\n\t\t\t\t\t\tbackgroundColor : settings.dialogMaskBgColor\n\t\t\t\t\t},\n\t\t\t\t\tbuttons    : {\n\t\t\t\t\t\tclose : [lang.buttons.close, function() {      \n\t\t\t\t\t\t\tthis.hide().lockScreen(false).hideMask();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}]\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdialog = editor.find(\".\" + dialogName);\n\n\t\t\tthis.dialogShowMask(dialog);\n\t\t\tthis.dialogLockScreen();\n\t\t\tdialog.show();\n\n\t\t\tvar helpContent = dialog.find(\".markdown-body\");\n\n\t\t\tif (helpContent.html() === \"\") \n\t\t\t{\n\t\t\t\t$.get(path + \"help.md\", function(text) {\n\t\t\t\t\tvar md = exports.$marked(text);\n\t\t\t\t\thelpContent.html(md);\n                    \n                    helpContent.find(\"a\").attr(\"target\", \"_blank\");\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t};\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"./../../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t} \n\telse\n\t{\n        factory(window.editormd);\n\t}\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/help-dialog/help.md",
    "content": "##### Markdown语法教程 (Markdown syntax tutorial)\n\n- [Markdown Syntax](http://daringfireball.net/projects/markdown/syntax/ \"Markdown Syntax\")\n- [Mastering Markdown](https://guides.github.com/features/mastering-markdown/ \"Mastering Markdown\")\n- [Markdown Basics](https://help.github.com/articles/markdown-basics/ \"Markdown Basics\")\n- [GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/ \"GitHub Flavored Markdown\")\n- [Markdown 语法说明（简体中文）](http://www.markdown.cn/ \"Markdown 语法说明（简体中文）\")\n- [Markdown 語法說明（繁體中文）](http://markdown.tw/ \"Markdown 語法說明（繁體中文）\")\n\n##### 键盘快捷键 (Keyboard shortcuts)\n\n> If Editor.md code editor is on focus, you can use keyboard shortcuts.\n    \n| Keyboard shortcuts (键盘快捷键)                 |   说明                            | Description                                        |\n| :---------------------------------------------- |:--------------------------------- | :------------------------------------------------- |\n| F9                                              | 切换实时预览                      | Switch watch/unwatch                               |\n| F10                                             | 全屏HTML预览(按 Shift + ESC 退出) | Full preview HTML (Press Shift + ESC exit)         |\n| F11                                             | 切换全屏状态                      | Switch fullscreen (Press ESC exit)                 |\n| Ctrl + 1~6 / Command + 1~6                      | 插入标题1~6                       | Insert heading 1~6                                 |\n| Ctrl + A / Command + A                          | 全选                              | Select all                                         |\n| Ctrl + B / Command + B                          | 插入粗体                          | Insert bold                                        |\n| Ctrl + D / Command + D                          | 插入日期时间                      | Insert datetime                                    |\n| Ctrl + E / Command + E                          | 插入Emoji符号                     | Insert &#58;emoji&#58;                             |\n| Ctrl + F / Command + F                          | 查找/搜索                         | Start searching                                    |\n| Ctrl + G / Command + G                          | 切换到下一个搜索结果项            | Find next search results                           |\n| Ctrl + H / Command + H                          | 插入水平线                        | Insert horizontal rule                             |\n| Ctrl + I / Command + I                          | 插入斜体                          | Insert italic                                      |\n| Ctrl + K / Command + K                          | 插入行内代码                      | Insert inline code                                 |\n| Ctrl + L / Command + L                          | 插入链接                          | Insert link                                        |\n| Ctrl + U / Command + U                          | 插入无序列表                      | Insert unordered list                              |\n| Ctrl + Q                                        | 代码折叠切换                      | Switch code fold                                   |\n| Ctrl + Z / Command + Z                          | 撤销                              | Undo                                               |\n| Ctrl + Y / Command + Y                          | 重做                              | Redo                                               |\n| Ctrl + Shift + A                                | 插入@链接                         | Insert &#64;link                                   |\n| Ctrl + Shift + C                                | 插入行内代码                      | Insert inline code                                 |\n| Ctrl + Shift + E                                | 打开插入Emoji表情对话框           | Open emoji dialog                                  |\n| Ctrl + Shift + F / Command + Option + F         | 替换                              | Replace                                            |\n| Ctrl + Shift + G / Shift + Command + G          | 切换到上一个搜索结果项            | Find previous search results                       |\n| Ctrl + Shift + H                                | 打开HTML实体字符对话框            | Open HTML Entities dialog                          |\n| Ctrl + Shift + I                                | 插入图片                          | Insert image &#33;[]&#40;&#41;                     |\n| Ctrl + Shift + K                                | 插入TeX(KaTeX)公式符号            | Insert TeX(KaTeX) symbol &#36;&#36;TeX&#36;&#36;   |\n| Ctrl + Shift + L                                | 打开插入链接对话框                | Open link dialog                                   |\n| Ctrl + Shift + O                                | 插入有序列表                      | Insert ordered list                                |\n| Ctrl + Shift + P                                | 打开插入PRE对话框                 | Open Preformatted text dialog                      |\n| Ctrl + Shift + Q                                | 插入引用                          | Insert blockquotes                                 |\n| Ctrl + Shift + R / Shift + Command + Option + F | 全部替换                          | Replace all                                        |\n| Ctrl + Shift + S                                | 插入删除线                        | Insert strikethrough                               |\n| Ctrl + Shift + T                                | 打开插入表格对话框                | Open table dialog                                  |\n| Ctrl + Shift + U                                | 将所选文字转成大写                | Selection text convert to uppercase                |\n| Shift + Alt + C                                 | 插入```代码                       | Insert code blocks (```)                           |\n| Shift + Alt + H                                 | 打开使用帮助对话框                | Open help dialog                                   |\n| Shift + Alt + L                                 | 将所选文本转成小写                | Selection text convert to lowercase                |\n| Shift + Alt + P                                 | 插入分页符                        | Insert page break                                  |\n| Alt + L                                         | 将所选文本转成小写                | Selection text convert to lowercase                |\n| Shift + Alt + U                                 | 将所选的每个单词的首字母转成大写  | Selection words first letter convert to Uppercase  |\n| Ctrl + Shift + Alt + C                          | 打开插入代码块对话框层            | Open code blocks dialog                            |\n| Ctrl + Shift + Alt + I                          | 打开插入图片对话框层              | Open image dialog                                  |\n| Ctrl + Shift + Alt + U                          | 将所选文本的第一个首字母转成大写  | Selection text first letter convert to uppercase   |\n| Ctrl + Alt + G                                  | 跳转到指定的行                    | Goto line                                          |\n\n##### Emoji表情参考 (Emoji reference)\n\n- [Github emoji](http://www.emoji-cheat-sheet.com/ \"Github emoji\")\n- [Twitter Emoji \\(Twemoji\\)](http://twitter.github.io/twemoji/preview.html \"Twitter Emoji \\(Twemoji\\)\")\n- [FontAwesome icons emoji](http://fortawesome.github.io/Font-Awesome/icons/ \"FontAwesome icons emoji\")\n\n##### 流程图参考 (Flowchart reference)\n\n[http://adrai.github.io/flowchart.js/](http://adrai.github.io/flowchart.js/)\n\n##### 时序图参考 (SequenceDiagram reference)\n\n[http://bramp.github.io/js-sequence-diagrams/](http://bramp.github.io/js-sequence-diagrams/)\n\n##### TeX/LaTeX reference\n\n[http://meta.wikimedia.org/wiki/Help:Formula](http://meta.wikimedia.org/wiki/Help:Formula)\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/html-entities-dialog/html-entities-dialog.js",
    "content": "/*!\n * HTML entities dialog plugin for Editor.md\n *\n * @file        html-entities-dialog.js\n * @author      pandao\n * @version     1.2.0\n * @updateTime  2015-03-08\n * {@link       https://github.com/pandao/editor.md}\n * @license     MIT\n */\n\n(function() {\n\n\tvar factory = function (exports) {\n\n\t\tvar $            = jQuery;\n\t\tvar pluginName   = \"html-entities-dialog\";\n\t\tvar selecteds    = [];\n\t\tvar entitiesData = [];\n\n\t\texports.fn.htmlEntitiesDialog = function() {\n\t\t\tvar _this       = this;\n\t\t\tvar cm          = this.cm;\n\t\t\tvar lang        = _this.lang;\n\t\t\tvar settings    = _this.settings;\n\t\t\tvar path        = settings.pluginPath + pluginName + \"/\";\n\t\t\tvar editor      = this.editor;\n\t\t\tvar cursor      = cm.getCursor();\n\t\t\tvar selection   = cm.getSelection();\n\t\t\tvar classPrefix = _this.classPrefix;\n\n\t\t\tvar dialogName  = classPrefix + \"dialog-\" + pluginName, dialog;\n\t\t\tvar dialogLang  = lang.dialog.htmlEntities;\n\n\t\t\tvar dialogContent = [\n\t\t\t\t'<div class=\"' + classPrefix + 'html-entities-box\" style=\\\"width: 760px;height: 334px;margin-bottom: 8px;overflow: hidden;overflow-y: auto;\\\">',\n\t\t\t\t'<div class=\"' + classPrefix + 'grid-table\">',\n\t\t\t\t'</div>',\n\t\t\t\t'</div>',\n\t\t\t].join(\"\\r\\n\");\n\n\t\t\tcm.focus();\n\n\t\t\tif (editor.find(\".\" + dialogName).length > 0) \n\t\t\t{\n                dialog = editor.find(\".\" + dialogName);\n\n\t\t\t\tselecteds = [];\n\t\t\t\tdialog.find(\"a\").removeClass(\"selected\");\n\n\t\t\t\tthis.dialogShowMask(dialog);\n\t\t\t\tthis.dialogLockScreen();\n\t\t\t\tdialog.show();\n\t\t\t} \n\t\t\telse\n\t\t\t{\n\t\t\t\tdialog = this.createDialog({\n\t\t\t\t\tname       : dialogName,\n\t\t\t\t\ttitle      : dialogLang.title,\n\t\t\t\t\twidth      : 800,\n\t\t\t\t\theight     : 475,\n\t\t\t\t\tmask       : settings.dialogShowMask,\n\t\t\t\t\tdrag       : settings.dialogDraggable,\n\t\t\t\t\tcontent    : dialogContent,\n\t\t\t\t\tlockScreen : settings.dialogLockScreen,\n\t\t\t\t\tmaskStyle  : {\n\t\t\t\t\t\topacity         : settings.dialogMaskOpacity,\n\t\t\t\t\t\tbackgroundColor : settings.dialogMaskBgColor\n\t\t\t\t\t},\n\t\t\t\t\tbuttons    : {\n\t\t\t\t\t\tenter  : [lang.buttons.enter, function() {\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tcm.replaceSelection(selecteds.join(\" \"));\n\t\t\t\t\t\t\tthis.hide().lockScreen(false).hideMask();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tcancel : [lang.buttons.cancel, function() {                           \n\t\t\t\t\t\t\tthis.hide().lockScreen(false).hideMask();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}]\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\t\n\t\t\tvar table = dialog.find(\".\" + classPrefix + \"grid-table\");\n\n\t\t\tvar drawTable = function() {\n\n\t\t\t\tif (entitiesData.length < 1) return ;\n\n\t\t\t\tvar rowNumber = 20;\n\t\t\t\tvar pageTotal = Math.ceil(entitiesData.length / rowNumber);\n\n\t\t\t\ttable.html(\"\");\n\t\t\t\t\n\t\t\t\tfor (var i = 0; i < pageTotal; i++)\n\t\t\t\t{\n\t\t\t\t\tvar row = \"<div class=\\\"\" + classPrefix + \"grid-table-row\\\">\";\n\t\t\t\t\t\n\t\t\t\t\tfor (var x = 0; x < rowNumber; x++)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar entity = entitiesData[(i * rowNumber) + x];\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (typeof entity !== \"undefined\")\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar name = entity.name.replace(\"&amp;\", \"&\");\n\n\t\t\t\t\t\t\trow += \"<a href=\\\"javascript:;\\\" value=\\\"\" + entity.name + \"\\\" title=\\\"\" + name + \"\\\" class=\\\"\" + classPrefix + \"html-entity-btn\\\">\" + name + \"</a>\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow += \"</div>\";\n\t\t\t\t\t\n\t\t\t\t\ttable.append(row);\n\t\t\t\t}\n\n\t\t\t\tdialog.find(\".\" + classPrefix + \"html-entity-btn\").bind(exports.mouseOrTouch(\"click\", \"touchend\"), function() {\n\t\t\t\t\t$(this).toggleClass(\"selected\");\n\n\t\t\t\t\tif ($(this).hasClass(\"selected\")) \n\t\t\t\t\t{\n\t\t\t\t\t\tselecteds.push($(this).attr(\"value\"));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t\t\n\t\t\tif (entitiesData.length < 1) \n\t\t\t{            \n\t\t\t\tif (typeof (dialog.loading) == \"function\") dialog.loading(true);\n\n\t\t\t\t$.getJSON(path + pluginName.replace(\"-dialog\", \"\") + \".json\", function(json) {\n\n\t\t\t\t\tif (typeof (dialog.loading) == \"function\") dialog.loading(false);\n\n\t\t\t\t\tentitiesData = json;\n\t\t\t\t\tdrawTable();\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\t\t\n\t\t\t\tdrawTable();\n\t\t\t}\n\t\t};\n\n\t};\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"./../../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t} \n\telse\n\t{\n        factory(window.editormd);\n\t}\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/html-entities-dialog/html-entities.json",
    "content": "[\n\t{\n\t\t\"name\" : \"&amp;#64;\",\n\t\t\"description\":\"at symbol\"\t\t\n\t},\n\t{\n\t\t\"name\":\"&amp;copy;\",\n\t\t\"description\":\"copyright symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;reg;\",\n\t\t\"description\":\"registered symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;trade;\",\n\t\t\"description\":\"trademark symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;hearts;\",\n\t\t\"description\":\"heart\"\n\t},\n\t{\n\t\t\"name\":\"&amp;nbsp;\",\n\t\t\"description\":\"Inserts a non-breaking blank space\"\n\t},\n\t{\n\t\t\"name\":\"&amp;amp;\",\n\t\t\"description\":\"Ampersand\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#36;\",\n\t\t\"description\":\"dollar symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;cent;\",\n\t\t\"description\":\"Cent symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;pound;\",\n\t\t\"description\":\"Pound\"\n\t},\n\t{\n\t\t\"name\":\"&amp;yen;\",\n\t\t\"description\":\"Yen\"\n\t},\n\t{\n\t\t\"name\":\"&amp;euro;\",\n\t\t\"description\":\"Euro symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;quot;\",\n\t\t\"description\":\"quotation mark\"\n\t},\n\t{\n\t\t\"name\":\"&amp;ldquo;\",\n\t\t\"description\":\"Opening Double Quotes \"\n\t},\n\t{\n\t\t\"name\":\"&amp;rdquo;\",\n\t\t\"description\":\"Closing Double Quotes \"\n\t},\n\t{\n\t\t\"name\":\"&amp;lsquo;\",\n\t\t\"description\":\"Opening Single Quote Mark \"\n\t},\n\t{\n\t\t\"name\":\"&amp;rsquo;\",\n\t\t\"description\":\"Closing Single Quote Mark \"\n\t},\n\t{\n\t\t\"name\":\"&amp;laquo;\",\n\t\t\"description\":\"angle quotation mark (left)\"\n\t},\n\t{\n\t\t\"name\":\"&amp;raquo;\",\n\t\t\"description\":\"angle quotation mark (right)\"\n\t},\n\t{\n\t\t\"name\":\"&amp;lsaquo;\",\n\t\t\"description\":\"single left angle quotation\"\n\t},\n\t{\n\t\t\"name\":\"&amp;rsaquo;\",\n\t\t\"description\":\"single right angle quotation\"\n\t},\n\t{\n\t\t\"name\":\"&amp;sect;\",\n\t\t\"description\":\"Section Symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;micro;\",\n\t\t\"description\":\"micro sign\"\n\t},\n\t{\n\t\t\"name\":\"&amp;para;\",\n\t\t\"description\":\"Paragraph symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;bull;\",\n\t\t\"description\":\"Big List Dot\"\n\t},\n\t{\n\t\t\"name\":\"&amp;middot;\",\n\t\t\"description\":\"Medium List Dot\"\n\t},\n\t{\n\t\t\"name\":\"&amp;hellip;\",\n\t\t\"description\":\"horizontal ellipsis\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#124;\",\n\t\t\"description\":\"vertical bar\"\n\t},\n\t{\n\t\t\"name\":\"&amp;brvbar;\",\n\t\t\"description\":\"broken vertical bar\"\n\t},\n\t{\n\t\t\"name\":\"&amp;ndash;\",\n\t\t\"description\":\"en-dash\"\n\t},\n\t{\n\t\t\"name\":\"&amp;mdash;\",\n\t\t\"description\":\"em-dash\"\n\t},\n\t{\n\t\t\"name\":\"&amp;curren;\",\n\t\t\"description\":\"Generic currency symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#33;\",\n\t\t\"description\":\"exclamation point\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#35;\",\n\t\t\"description\":\"number sign\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#39;\",\n\t\t\"description\":\"single quote\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#40;\",\n\t\t\"description\":\"\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#41;\",\n\t\t\"description\":\"\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#42;\",\n\t\t\"description\":\"asterisk\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#43;\",\n\t\t\"description\":\"plus sign\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#44;\",\n\t\t\"description\":\"comma\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#45;\",\n\t\t\"description\":\"minus sign - hyphen\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#46;\",\n\t\t\"description\":\"period\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#47;\",\n\t\t\"description\":\"slash\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#48;\",\n\t\t\"description\":\"0\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#49;\",\n\t\t\"description\":\"1\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#50;\",\n\t\t\"description\":\"2\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#51;\",\n\t\t\"description\":\"3\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#52;\",\n\t\t\"description\":\"4\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#53;\",\n\t\t\"description\":\"5\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#54;\",\n\t\t\"description\":\"6\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#55;\",\n\t\t\"description\":\"7\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#56;\",\n\t\t\"description\":\"8\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#57;\",\n\t\t\"description\":\"9\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#58;\",\n\t\t\"description\":\"colon\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#59;\",\n\t\t\"description\":\"semicolon\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#61;\",\n\t\t\"description\":\"equal sign\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#63;\",\n\t\t\"description\":\"question mark\"\n\t},\n\t{\n\t\t\"name\":\"&amp;lt;\",\n\t\t\"description\":\"Less than\"\n\t},\n\t{\n\t\t\"name\":\"&amp;gt;\",\n\t\t\"description\":\"Greater than\"\n\t},\n\t{\n\t\t\"name\":\"&amp;le;\",\n\t\t\"description\":\"Less than or Equal to\"\n\t},\n\t{\n\t\t\"name\":\"&amp;ge;\",\n\t\t\"description\":\"Greater than or Equal to\"\n\t},\n\t{\n\t\t\"name\":\"&amp;times;\",\n\t\t\"description\":\"Multiplication symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;divide;\",\n\t\t\"description\":\"Division symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;minus;\",\n\t\t\"description\":\"Minus symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;plusmn;\",\n\t\t\"description\":\"Plus/minus symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;ne;\",\n\t\t\"description\":\"Not Equal\"\n\t},\n\t{\n\t\t\"name\":\"&amp;sup1;\",\n\t\t\"description\":\"Superscript 1\"\n\t},\n\t{\n\t\t\"name\":\"&amp;sup2;\",\n\t\t\"description\":\"Superscript 2\"\n\t},\n\t{\n\t\t\"name\":\"&amp;sup3;\",\n\t\t\"description\":\"Superscript 3\"\n\t},\n\t{\n\t\t\"name\":\"&amp;frac12;\",\n\t\t\"description\":\"Fraction ½\"\n\t},\n\t{\n\t\t\"name\":\"&amp;frac14;\",\n\t\t\"description\":\"Fraction ¼\"\n\t},\n\t{\n\t\t\"name\":\"&amp;frac34;\",\n\t\t\"description\":\"Fraction ¾\"\n\t},\n\t{\n\t\t\"name\":\"&amp;permil;\",\n\t\t\"description\":\"per mille\"\n\t},\n\t{\n\t\t\"name\":\"&amp;deg;\",\n\t\t\"description\":\"Degree symbol\"\n\t},\n\t{\n\t\t\"name\":\"&amp;radic;\",\n\t\t\"description\":\"square root\"\n\t},\n\t{\n\t\t\"name\":\"&amp;infin;\",\n\t\t\"description\":\"Infinity\"\n\t},\n\t{\n\t\t\"name\":\"&amp;larr;\",\n\t\t\"description\":\"left arrow\"\n\t},\n\t{\n\t\t\"name\":\"&amp;uarr;\",\n\t\t\"description\":\"up arrow\"\n\t},\n\t{\n\t\t\"name\":\"&amp;rarr;\",\n\t\t\"description\":\"right arrow\"\n\t},\n\t{\n\t\t\"name\":\"&amp;darr;\",\n\t\t\"description\":\"down arrow\"\n\t},\n\t{\n\t\t\"name\":\"&amp;harr;\",\n\t\t\"description\":\"left right arrow\"\n\t},\n\t{\n\t\t\"name\":\"&amp;crarr;\",\n\t\t\"description\":\"carriage return arrow\"\n\t},\n\t{\n\t\t\"name\":\"&amp;lceil;\",\n\t\t\"description\":\"left ceiling\"\n\t},\n\t{\n\t\t\"name\":\"&amp;rceil;\",\n\t\t\"description\":\"right ceiling\"\n\t},\n\t{\n\t\t\"name\":\"&amp;lfloor;\",\n\t\t\"description\":\"left floor\"\n\t},\n\t{\n\t\t\"name\":\"&amp;rfloor;\",\n\t\t\"description\":\"right floor\"\n\t},\n\t{\n\t\t\"name\":\"&amp;spades;\",\n\t\t\"description\":\"spade\"\n\t},\n\t{\n\t\t\"name\":\"&amp;clubs;\",\n\t\t\"description\":\"club\"\n\t},\n\t{\n\t\t\"name\":\"&amp;hearts;\",\n\t\t\"description\":\"heart\"\n\t},\n\t{\n\t\t\"name\":\"&amp;diams;\",\n\t\t\"description\":\"diamond\"\n\t},\n\t{\n\t\t\"name\":\"&amp;loz;\",\n\t\t\"description\":\"lozenge\"\n\t},\n\t{\n\t\t\"name\":\"&amp;dagger;\",\n\t\t\"description\":\"dagger\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Dagger;\",\n\t\t\"description\":\"double dagger\"\n\t},\n\t{\n\t\t\"name\":\"&amp;iexcl;\",\n\t\t\"description\":\"inverted exclamation mark\"\n\t},\n\t{\n\t\t\"name\":\"&amp;iquest;\",\n\t\t\"description\":\"inverted question mark\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#338;\",\n\t\t\"description\":\"latin capital letter OE\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#339;\",\n\t\t\"description\":\"latin small letter oe\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#352;\",\n\t\t\"description\":\"latin capital letter S with caron\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#353;\",\n\t\t\"description\":\"latin small letter s with caron\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#376;\",\n\t\t\"description\":\"latin capital letter Y with diaeresis\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#402;\",\n\t\t\"description\":\"latin small f with hook - function\"\n\t},\n\t{\n\t\t\"name\":\"&amp;not;\",\n\t\t\"description\":\"not sign\"\n\t},\n\t{\n\t\t\"name\":\"&amp;ordf;\",\n\t\t\"description\":\"feminine ordinal indicator\"\n\t},\n\t{\n\t\t\"name\":\"&amp;uml;\",\n\t\t\"description\":\"spacing diaeresis - umlaut\"\n\t},\n\t{\n\t\t\"name\":\"&amp;macr;\",\n\t\t\"description\":\"spacing macron - overline\"\n\t},\n\t{\n\t\t\"name\":\"&amp;acute;\",\n\t\t\"description\":\"acute accent - spacing acute\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Agrave;\",\n\t\t\"description\":\"latin capital letter A with grave\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Aacute;\",\n\t\t\"description\":\"latin capital letter A with acute\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Acirc;\",\n\t\t\"description\":\"latin capital letter A with circumflex\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Atilde;\",\n\t\t\"description\":\"latin capital letter A with tilde\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Auml;\",\n\t\t\"description\":\"latin capital letter A with diaeresis\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Aring;\",\n\t\t\"description\":\"latin capital letter A with ring above\"\n\t},\n\t{\n\t\t\"name\":\"&amp;AElig;\",\n\t\t\"description\":\"latin capital letter AE\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Ccedil;\",\n\t\t\"description\":\"latin capital letter C with cedilla\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Egrave;\",\n\t\t\"description\":\"latin capital letter E with grave\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Eacute;\",\n\t\t\"description\":\"latin capital letter E with acute\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Ecirc;\",\n\t\t\"description\":\"latin capital letter E with circumflex\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Euml;\",\n\t\t\"description\":\"latin capital letter E with diaeresis\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Igrave;\",\n\t\t\"description\":\"latin capital letter I with grave\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Iacute;\",\n\t\t\"description\":\"latin capital letter I with acute\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Icirc;\",\n\t\t\"description\":\"latin capital letter I with circumflex\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Iuml;\",\n\t\t\"description\":\"latin capital letter I with diaeresis\"\n\t},\n\n\t{\n\t\t\"name\":\"&amp;ETH;\",\n\t\t\"description\":\"latin capital letter ETH\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Ntilde;\",\n\t\t\"description\":\"latin capital letter N with tilde\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Ograve;\",\n\t\t\"description\":\"latin capital letter O with grave\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Oacute;\",\n\t\t\"description\":\"latin capital letter O with acute\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Ocirc;\",\n\t\t\"description\":\"latin capital letter O with circumflex\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Otilde;\",\n\t\t\"description\":\"latin capital letter O with tilde\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Ouml;\",\n\t\t\"description\":\"latin capital letter O with diaeresis\"\n\t},\n\t{\n\t\t\"name\":\"&amp;times;\",\n\t\t\"description\":\"multiplication sign\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Oslash;\",\n\t\t\"description\":\"latin capital letter O with slash\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Ugrave;\",\n\t\t\"description\":\"latin capital letter U with grave\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Uacute;\",\n\t\t\"description\":\"latin capital letter U with acute\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Ucirc;\",\n\t\t\"description\":\"latin capital letter U with circumflex\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Uuml;\",\n\t\t\"description\":\"latin capital letter U with diaeresis\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Yacute;\",\n\t\t\"description\":\"latin capital letter Y with acute\"\n\t},\n\t{\n\t\t\"name\":\"&amp;THORN;\",\n\t\t\"description\":\"latin capital letter THORN\"\n\t},\n\t{\n\t\t\"name\":\"&amp;szlig;\",\n\t\t\"description\":\"latin small letter sharp s - ess-zed\"\n\t},\n\n\n\t{\n\t\t\"name\":\"&amp;eth;\",\n\t\t\"description\":\"latin capital letter eth\"\n\t},\n\t{\n\t\t\"name\":\"&amp;ntilde;\",\n\t\t\"description\":\"latin capital letter n with tilde\"\n\t},\n\t{\n\t\t\"name\":\"&amp;ograve;\",\n\t\t\"description\":\"latin capital letter o with grave\"\n\t},\n\t{\n\t\t\"name\":\"&amp;oacute;\",\n\t\t\"description\":\"latin capital letter o with acute\"\n\t},\n\t{\n\t\t\"name\":\"&amp;ocirc;\",\n\t\t\"description\":\"latin capital letter o with circumflex\"\n\t},\n\t{\n\t\t\"name\":\"&amp;otilde;\",\n\t\t\"description\":\"latin capital letter o with tilde\"\n\t},\n\t{\n\t\t\"name\":\"&amp;ouml;\",\n\t\t\"description\":\"latin capital letter o with diaeresis\"\n\t},\n\t{\n\t\t\"name\":\"&amp;times;\",\n\t\t\"description\":\"multiplication sign\"\n\t},\n\t{\n\t\t\"name\":\"&amp;oslash;\",\n\t\t\"description\":\"latin capital letter o with slash\"\n\t},\n\t{\n\t\t\"name\":\"&amp;ugrave;\",\n\t\t\"description\":\"latin capital letter u with grave\"\n\t},\n\t{\n\t\t\"name\":\"&amp;uacute;\",\n\t\t\"description\":\"latin capital letter u with acute\"\n\t},\n\t{\n\t\t\"name\":\"&amp;ucirc;\",\n\t\t\"description\":\"latin capital letter u with circumflex\"\n\t},\n\t{\n\t\t\"name\":\"&amp;uuml;\",\n\t\t\"description\":\"latin capital letter u with diaeresis\"\n\t},\n\t{\n\t\t\"name\":\"&amp;yacute;\",\n\t\t\"description\":\"latin capital letter y with acute\"\n\t},\n\t{\n\t\t\"name\":\"&amp;thorn;\",\n\t\t\"description\":\"latin capital letter thorn\"\n\t},\n\t{\n\t\t\"name\":\"&amp;yuml;\",\n\t\t\"description\":\"latin small letter y with diaeresis\"\n\t},\n\n\t{\n\t\t\"name\":\"&amp;agrave;\",\n\t\t\"description\":\"latin capital letter a with grave\"\n\t},\n\t{\n\t\t\"name\":\"&amp;aacute;\",\n\t\t\"description\":\"latin capital letter a with acute\"\n\t},\n\t{\n\t\t\"name\":\"&amp;acirc;\",\n\t\t\"description\":\"latin capital letter a with circumflex\"\n\t},\n\t{\n\t\t\"name\":\"&amp;atilde;\",\n\t\t\"description\":\"latin capital letter a with tilde\"\n\t},\n\t{\n\t\t\"name\":\"&amp;auml;\",\n\t\t\"description\":\"latin capital letter a with diaeresis\"\n\t},\n\t{\n\t\t\"name\":\"&amp;aring;\",\n\t\t\"description\":\"latin capital letter a with ring above\"\n\t},\n\t{\n\t\t\"name\":\"&amp;aelig;\",\n\t\t\"description\":\"latin capital letter ae\"\n\t},\n\t{\n\t\t\"name\":\"&amp;ccedil;\",\n\t\t\"description\":\"latin capital letter c with cedilla\"\n\t},\n\t{\n\t\t\"name\":\"&amp;egrave;\",\n\t\t\"description\":\"latin capital letter e with grave\"\n\t},\n\t{\n\t\t\"name\":\"&amp;eacute;\",\n\t\t\"description\":\"latin capital letter e with acute\"\n\t},\n\t{\n\t\t\"name\":\"&amp;ecirc;\",\n\t\t\"description\":\"latin capital letter e with circumflex\"\n\t},\n\t{\n\t\t\"name\":\"&amp;euml;\",\n\t\t\"description\":\"latin capital letter e with diaeresis\"\n\t},\n\t{\n\t\t\"name\":\"&amp;igrave;\",\n\t\t\"description\":\"latin capital letter i with grave\"\n\t},\n\t{\n\t\t\"name\":\"&amp;Iacute;\",\n\t\t\"description\":\"latin capital letter i with acute\"\n\t},\n\t{\n\t\t\"name\":\"&amp;icirc;\",\n\t\t\"description\":\"latin capital letter i with circumflex\"\n\t},\n\t{\n\t\t\"name\":\"&amp;iuml;\",\n\t\t\"description\":\"latin capital letter i with diaeresis\"\n\t},\n\n\t{\n\t\t\"name\":\"&amp;#65;\",\n\t\t\"description\":\"A\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#66;\",\n\t\t\"description\":\"B\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#67;\",\n\t\t\"description\":\"C\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#68;\",\n\t\t\"description\":\"D\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#69;\",\n\t\t\"description\":\"E\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#70;\",\n\t\t\"description\":\"F\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#71;\",\n\t\t\"description\":\"G\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#72;\",\n\t\t\"description\":\"H\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#73;\",\n\t\t\"description\":\"I\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#74;\",\n\t\t\"description\":\"J\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#75;\",\n\t\t\"description\":\"K\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#76;\",\n\t\t\"description\":\"L\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#77;\",\n\t\t\"description\":\"M\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#78;\",\n\t\t\"description\":\"N\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#79;\",\n\t\t\"description\":\"O\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#80;\",\n\t\t\"description\":\"P\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#81;\",\n\t\t\"description\":\"Q\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#82;\",\n\t\t\"description\":\"R\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#83;\",\n\t\t\"description\":\"S\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#84;\",\n\t\t\"description\":\"T\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#85;\",\n\t\t\"description\":\"U\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#86;\",\n\t\t\"description\":\"V\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#87;\",\n\t\t\"description\":\"W\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#88;\",\n\t\t\"description\":\"X\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#89;\",\n\t\t\"description\":\"Y\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#90;\",\n\t\t\"description\":\"Z\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#91;\",\n\t\t\"description\":\"opening bracket\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#92;\",\n\t\t\"description\":\"backslash\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#93;\",\n\t\t\"description\":\"closing bracket\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#94;\",\n\t\t\"description\":\"caret - circumflex\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#95;\",\n\t\t\"description\":\"underscore\"\n\t},\n\n\t{\n\t\t\"name\":\"&amp;#96;\",\n\t\t\"description\":\"grave accent\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#97;\",\n\t\t\"description\":\"a\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#98;\",\n\t\t\"description\":\"b\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#99;\",\n\t\t\"description\":\"c\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#100;\",\n\t\t\"description\":\"d\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#101;\",\n\t\t\"description\":\"e\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#102;\",\n\t\t\"description\":\"f\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#103;\",\n\t\t\"description\":\"g\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#104;\",\n\t\t\"description\":\"h\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#105;\",\n\t\t\"description\":\"i\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#106;\",\n\t\t\"description\":\"j\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#107;\",\n\t\t\"description\":\"k\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#108;\",\n\t\t\"description\":\"l\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#109;\",\n\t\t\"description\":\"m\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#110;\",\n\t\t\"description\":\"n\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#111;\",\n\t\t\"description\":\"o\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#112;\",\n\t\t\"description\":\"p\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#113;\",\n\t\t\"description\":\"q\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#114;\",\n\t\t\"description\":\"r\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#115;\",\n\t\t\"description\":\"s\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#116;\",\n\t\t\"description\":\"t\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#117;\",\n\t\t\"description\":\"u\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#118;\",\n\t\t\"description\":\"v\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#119;\",\n\t\t\"description\":\"w\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#120;\",\n\t\t\"description\":\"x\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#121;\",\n\t\t\"description\":\"y\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#122;\",\n\t\t\"description\":\"z\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#123;\",\n\t\t\"description\":\"opening brace\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#124;\",\n\t\t\"description\":\"vertical bar\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#125;\",\n\t\t\"description\":\"closing brace\"\n\t},\n\t{\n\t\t\"name\":\"&amp;#126;\",\n\t\t\"description\":\"equivalency sign - tilde\"\n\t}\n]"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/image-dialog/image-dialog.js",
    "content": "/*!\n * Image (upload) dialog plugin for Editor.md\n *\n * @file        image-dialog.js\n * @author      pandao\n * @version     1.3.4\n * @updateTime  2015-06-09\n * {@link       https://github.com/pandao/editor.md}\n * @license     MIT\n */\n\n(function() {\n\n    var factory = function (exports) {\n\n\t\tvar pluginName   = \"image-dialog\";\n\n\t\texports.fn.imageDialog = function() {\n\n            var _this       = this;\n            var cm          = this.cm;\n            var lang        = this.lang;\n            var editor      = this.editor;\n            var settings    = this.settings;\n            var cursor      = cm.getCursor();\n            var selection   = cm.getSelection();\n            var imageLang   = lang.dialog.image;\n            var classPrefix = this.classPrefix;\n            var iframeName  = classPrefix + \"image-iframe\";\n\t\t\tvar dialogName  = classPrefix + pluginName, dialog;\n\n\t\t\tcm.focus();\n\n            var loading = function(show) {\n                var _loading = dialog.find(\".\" + classPrefix + \"dialog-mask\");\n                _loading[(show) ? \"show\" : \"hide\"]();\n            };\n\n            if (editor.find(\".\" + dialogName).length < 1)\n            {\n                var guid   = (new Date).getTime();\n                var action = settings.imageUploadURL + (settings.imageUploadURL.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + \"guid=\" + guid;\n\n                if (settings.crossDomainUpload)\n                {\n                    action += \"&callback=\" + settings.uploadCallbackURL + \"&dialog_id=editormd-image-dialog-\" + guid;\n                }\n\n                var dialogContent = ( (settings.imageUpload) ? \"<form action=\\\"\" + action +\"\\\" target=\\\"\" + iframeName + \"\\\" method=\\\"post\\\" enctype=\\\"multipart/form-data\\\" class=\\\"\" + classPrefix + \"form\\\">\" : \"<div class=\\\"\" + classPrefix + \"form\\\">\" ) +\n                                        ( (settings.imageUpload) ? \"<iframe name=\\\"\" + iframeName + \"\\\" id=\\\"\" + iframeName + \"\\\" guid=\\\"\" + guid + \"\\\"></iframe>\" : \"\" ) +\n                                        \"<label>\" + imageLang.url + \"</label>\" +\n                                        \"<input type=\\\"text\\\" data-url />\" + (function(){\n                                            return (settings.imageUpload) ? \"<div class=\\\"\" + classPrefix + \"file-input\\\">\" +\n                                                                                \"<input type=\\\"file\\\" name=\\\"\" + classPrefix + \"image-file\\\" accept=\\\"image/*\\\" />\" +\n                                                                                \"<input type=\\\"submit\\\" value=\\\"\" + imageLang.uploadButton + \"\\\" />\" +\n                                                                            \"</div>\" : \"\";\n                                        })() +\n                                        \"<br/>\" +\n                                        \"<label>\" + imageLang.alt + \"</label>\" +\n                                        \"<input type=\\\"text\\\" value=\\\"\" + selection + \"\\\" data-alt />\" +\n                                        \"<br/>\" +\n                                        \"<label>\" + imageLang.link + \"</label>\" +\n                                        \"<input type=\\\"text\\\" value=\\\"http://\\\" data-link />\" +\n                                        \"<br/>\" +\n                                    ( (settings.imageUpload) ? \"</form>\" : \"</div>\");\n\n                //var imageFooterHTML = \"<button class=\\\"\" + classPrefix + \"btn \" + classPrefix + \"image-manager-btn\\\" style=\\\"float:left;\\\">\" + imageLang.managerButton + \"</button>\";\n\n                dialog = this.createDialog({\n                    title      : imageLang.title,\n                    width      : (settings.imageUpload) ? 465 : 380,\n                    height     : 254,\n                    name       : dialogName,\n                    content    : dialogContent,\n                    mask       : settings.dialogShowMask,\n                    drag       : settings.dialogDraggable,\n                    lockScreen : settings.dialogLockScreen,\n                    maskStyle  : {\n                        opacity         : settings.dialogMaskOpacity,\n                        backgroundColor : settings.dialogMaskBgColor\n                    },\n                    buttons : {\n                        enter : [lang.buttons.enter, function() {\n                            var url  = this.find(\"[data-url]\").val();\n                            var alt  = this.find(\"[data-alt]\").val();\n                            var link = this.find(\"[data-link]\").val();\n\n                            if (url === \"\")\n                            {\n                                alert(imageLang.imageURLEmpty);\n                                return false;\n                            }\n\n\t\t\t\t\t\t\tvar altAttr = (alt !== \"\") ? \" \\\"\" + alt + \"\\\"\" : \"\";\n\n                            if (link === \"\" || link === \"http://\")\n                            {\n                                cm.replaceSelection(\"![\" + alt + \"](\" + url + altAttr + \")\");\n                            }\n                            else\n                            {\n                                cm.replaceSelection(\"[![\" + alt + \"](\" + url + altAttr + \")](\" + link + altAttr + \")\");\n                            }\n\n                            if (alt === \"\") {\n                                cm.setCursor(cursor.line, cursor.ch + 2);\n                            }\n\n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }],\n\n                        cancel : [lang.buttons.cancel, function() {\n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }]\n                    }\n                });\n\n                dialog.attr(\"id\", classPrefix + \"image-dialog-\" + guid);\n\n\t\t\t\tif (!settings.imageUpload) {\n                    return ;\n                }\n\n\t\t\t\tvar fileInput  = dialog.find(\"[name=\\\"\" + classPrefix + \"image-file\\\"]\");\n\n\t\t\t\tfileInput.bind(\"change\", function() {\n\t\t\t\t\tvar fileName  = fileInput.val();\n\t\t\t\t\tvar isImage   = new RegExp(\"(\\\\.(\" + settings.imageFormats.join(\"|\") + \"))$\"); // /(\\.(webp|jpg|jpeg|gif|bmp|png))$/\n\n\t\t\t\t\tif (fileName === \"\")\n\t\t\t\t\t{\n\t\t\t\t\t\talert(imageLang.uploadFileEmpty);\n                        \n                        return false;\n\t\t\t\t\t}\n\t\t\t\t\t\n                    if (!isImage.test(fileName))\n\t\t\t\t\t{\n\t\t\t\t\t\talert(imageLang.formatNotAllowed + settings.imageFormats.join(\", \"));\n                        \n                        return false;\n\t\t\t\t\t}\n\n                    loading(true);\n\n                    var submitHandler = function() {\n\n                        var uploadIframe = document.getElementById(iframeName);\n\n                        uploadIframe.onload = function() {\n                            \n                            loading(false);\n\n                            var body = (uploadIframe.contentWindow ? uploadIframe.contentWindow : uploadIframe.contentDocument).document.body;\n                            var json = (body.innerText) ? body.innerText : ( (body.textContent) ? body.textContent : null);\n\n                            json = json.substr(json.indexOf('{'));\n\n                            json = (typeof JSON.parse !== \"undefined\") ? JSON.parse(json) : eval(\"(\" + json + \")\");\n\n                            if (json.success === 1)\n                            {\n                                dialog.find(\"[data-url]\").val(json.url);\n                            }\n                            else\n                            {\n                                alert(json.message);\n                            }\n\n                            return false;\n                        };\n                    };\n\n                    dialog.find(\"[type=\\\"submit\\\"]\").bind(\"click\", submitHandler).trigger(\"click\");\n\t\t\t\t});\n            }\n\n\t\t\tdialog = editor.find(\".\" + dialogName);\n\t\t\tdialog.find(\"[type=\\\"text\\\"]\").val(\"\");\n\t\t\tdialog.find(\"[type=\\\"file\\\"]\").val(\"\");\n\t\t\tdialog.find(\"[data-link]\").val(\"http://\");\n\n\t\t\tthis.dialogShowMask(dialog);\n\t\t\tthis.dialogLockScreen();\n\t\t\tdialog.show();\n\n\t\t};\n\n\t};\n\n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    {\n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"./../../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t}\n\telse\n\t{\n        factory(window.editormd);\n\t}\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/link-dialog/link-dialog.js",
    "content": "/*!\n * Link dialog plugin for Editor.md\n *\n * @file        link-dialog.js\n * @author      pandao\n * @version     1.2.1\n * @updateTime  2015-06-09\n * {@link       https://github.com/pandao/editor.md}\n * @license     MIT\n */\n\n(function() {\n\n    var factory = function (exports) {\n\n\t\tvar pluginName   = \"link-dialog\";\n\n\t\texports.fn.linkDialog = function() {\n\n\t\t\tvar _this       = this;\n\t\t\tvar cm          = this.cm;\n            var editor      = this.editor;\n            var settings    = this.settings;\n            var selection   = cm.getSelection();\n            var lang        = this.lang;\n            var linkLang    = lang.dialog.link;\n            var classPrefix = this.classPrefix;\n\t\t\tvar dialogName  = classPrefix + pluginName, dialog;\n\n\t\t\tcm.focus();\n\n            if (editor.find(\".\" + dialogName).length > 0)\n            {\n                dialog = editor.find(\".\" + dialogName);\n                dialog.find(\"[data-url]\").val(\"http://\");\n                dialog.find(\"[data-title]\").val(selection);\n\n                this.dialogShowMask(dialog);\n                this.dialogLockScreen();\n                dialog.show();\n            }\n            else\n            {\n                var dialogHTML = \"<div class=\\\"\" + classPrefix + \"form\\\">\" + \n                                        \"<label>\" + linkLang.url + \"</label>\" + \n                                        \"<input type=\\\"text\\\" value=\\\"http://\\\" data-url />\" +\n                                        \"<br/>\" + \n                                        \"<label>\" + linkLang.urlTitle + \"</label>\" + \n                                        \"<input type=\\\"text\\\" value=\\\"\" + selection + \"\\\" data-title />\" + \n                                        \"<br/>\" +\n                                    \"</div>\";\n\n                dialog = this.createDialog({\n                    title      : linkLang.title,\n                    width      : 380,\n                    height     : 211,\n                    content    : dialogHTML,\n                    mask       : settings.dialogShowMask,\n                    drag       : settings.dialogDraggable,\n                    lockScreen : settings.dialogLockScreen,\n                    maskStyle  : {\n                        opacity         : settings.dialogMaskOpacity,\n                        backgroundColor : settings.dialogMaskBgColor\n                    },\n                    buttons    : {\n                        enter  : [lang.buttons.enter, function() {\n                            var url   = this.find(\"[data-url]\").val();\n                            var title = this.find(\"[data-title]\").val();\n\n                            if (url === \"http://\" || url === \"\")\n                            {\n                                alert(linkLang.urlEmpty);\n                                return false;\n                            }\n\n                            /*if (title === \"\")\n                            {\n                                alert(linkLang.titleEmpty);\n                                return false;\n                            }*/\n                            \n                            var str = \"[\" + title + \"](\" + url + \" \\\"\" + title + \"\\\")\";\n                            \n                            if (title == \"\")\n                            {\n                                str = \"[\" + url + \"](\" + url + \")\";\n                            }                                \n\n                            cm.replaceSelection(str);\n\n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }],\n\n                        cancel : [lang.buttons.cancel, function() {                                   \n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }]\n                    }\n                });\n\t\t\t}\n\t\t};\n\n\t};\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"./../../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t} \n\telse\n\t{\n        factory(window.editormd);\n\t}\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/plugin-template.js",
    "content": "/*!\n * Link dialog plugin for Editor.md\n *\n * @file        link-dialog.js\n * @author      pandao\n * @version     1.2.0\n * @updateTime  2015-03-07\n * {@link       https://github.com/pandao/editor.md}\n * @license     MIT\n */\n\n(function() {\n\n    var factory = function (exports) {\n\n\t\tvar $            = jQuery;           // if using module loader(Require.js/Sea.js).\n\n\t\tvar langs = {\n\t\t\t\"zh-cn\" : {\n\t\t\t\ttoolbar : {\n\t\t\t\t\ttable : \"表格\"\n\t\t\t\t},\n\t\t\t\tdialog : {\n\t\t\t\t\ttable : {\n\t\t\t\t\t\ttitle      : \"添加表格\",\n\t\t\t\t\t\tcellsLabel : \"单元格数\",\n\t\t\t\t\t\talignLabel : \"对齐方式\",\n\t\t\t\t\t\trows       : \"行数\",\n\t\t\t\t\t\tcols       : \"列数\",\n\t\t\t\t\t\taligns     : [\"默认\", \"左对齐\", \"居中对齐\", \"右对齐\"]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"zh-tw\" : {\n\t\t\t\ttoolbar : {\n\t\t\t\t\ttable : \"添加表格\"\n\t\t\t\t},\n\t\t\t\tdialog : {\n\t\t\t\t\ttable : {\n\t\t\t\t\t\ttitle      : \"添加表格\",\n\t\t\t\t\t\tcellsLabel : \"單元格數\",\n\t\t\t\t\t\talignLabel : \"對齊方式\",\n\t\t\t\t\t\trows       : \"行數\",\n\t\t\t\t\t\tcols       : \"列數\",\n\t\t\t\t\t\taligns     : [\"默認\", \"左對齊\", \"居中對齊\", \"右對齊\"]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"en\" : {\n\t\t\t\ttoolbar : {\n\t\t\t\t\ttable : \"Tables\"\n\t\t\t\t},\n\t\t\t\tdialog : {\n\t\t\t\t\ttable : {\n\t\t\t\t\t\ttitle      : \"Tables\",\n\t\t\t\t\t\tcellsLabel : \"Cells\",\n\t\t\t\t\t\talignLabel : \"Align\",\n\t\t\t\t\t\trows       : \"Rows\",\n\t\t\t\t\t\tcols       : \"Cols\",\n\t\t\t\t\t\taligns     : [\"Default\", \"Left align\", \"Center align\", \"Right align\"]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\texports.fn.htmlEntities = function() {\n\t\t\t/*\n\t\t\tvar _this       = this; // this == the current instance object of Editor.md\n\t\t\tvar lang        = _this.lang;\n\t\t\tvar settings    = _this.settings;\n\t\t\tvar editor      = this.editor;\n\t\t\tvar cursor      = cm.getCursor();\n\t\t\tvar selection   = cm.getSelection();\n\t\t\tvar classPrefix = this.classPrefix;\n\n\t\t\t$.extend(true, this.lang, langs[this.lang.name]); // l18n\n\t\t\tthis.setToolbar();\n\n\t\t\tcm.focus();\n\t\t\t*/\n\t\t\t//....\n\t\t};\n\n\t};\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"./../../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t} \n\telse\n\t{\n        factory(window.editormd);\n\t}\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/preformatted-text-dialog/preformatted-text-dialog.js",
    "content": "/*!\n * Preformatted text dialog plugin for Editor.md\n *\n * @file        preformatted-text-dialog.js\n * @author      pandao\n * @version     1.2.0\n * @updateTime  2015-03-07\n * {@link       https://github.com/pandao/editor.md}\n * @license     MIT\n */\n\n(function() {\n\n    var factory = function (exports) {\n\t\tvar cmEditor;\n\t\tvar pluginName   = \"preformatted-text-dialog\";\n\n\t\texports.fn.preformattedTextDialog = function() {\n\n            var _this       = this;\n            var cm          = this.cm;\n            var lang        = this.lang;\n\t\t\tvar editor      = this.editor;\n            var settings    = this.settings;\n            var cursor      = cm.getCursor();\n            var selection   = cm.getSelection();\n            var classPrefix = this.classPrefix;\n\t\t\tvar dialogLang  = lang.dialog.preformattedText;\n\t\t\tvar dialogName  = classPrefix + pluginName, dialog;\n\n\t\t\tcm.focus();\n\n            if (editor.find(\".\" + dialogName).length > 0)\n            {\n                dialog = editor.find(\".\" + dialogName);\n                dialog.find(\"textarea\").val(selection);\n\n                this.dialogShowMask(dialog);\n                this.dialogLockScreen();\n                dialog.show();\n            }\n            else \n            {      \n                var dialogContent = \"<textarea placeholder=\\\"coding now....\\\" style=\\\"display:none;\\\">\" + selection + \"</textarea>\";\n\n                dialog = this.createDialog({\n                    name   : dialogName,\n                    title  : dialogLang.title,\n                    width  : 780,\n                    height : 540,\n                    mask   : settings.dialogShowMask,\n                    drag   : settings.dialogDraggable,\n                    content : dialogContent,\n                    lockScreen : settings.dialogLockScreen,\n                    maskStyle  : {\n                        opacity         : settings.dialogMaskOpacity,\n                        backgroundColor : settings.dialogMaskBgColor\n                    },\n                    buttons : {\n                        enter  : [lang.buttons.enter, function() {\n                            var codeTexts  = this.find(\"textarea\").val();\n\n                            if (codeTexts === \"\")\n                            {\n                                alert(dialogLang.emptyAlert);\n                                return false;\n                            }\n\n                            codeTexts = codeTexts.split(\"\\n\");\n\n                            for (var i in codeTexts)\n                            {\n                                codeTexts[i] = \"    \" + codeTexts[i];\n                            }\n                            \n                            codeTexts = codeTexts.join(\"\\n\");\n                            \n                            if (cursor.ch !== 0) {\n                                codeTexts = \"\\r\\n\\r\\n\" + codeTexts;\n                            }\n\n                            cm.replaceSelection(codeTexts);\n\n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }],\n                        cancel : [lang.buttons.cancel, function() {                                  \n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }]\n                    }\n                });\n            }\n\t\t\n\t\t\tvar cmConfig = {\n\t\t\t\tmode                      : \"text/html\",\n\t\t\t\ttheme                     : settings.theme,\n\t\t\t\ttabSize                   : 4,\n\t\t\t\tautofocus                 : true,\n\t\t\t\tautoCloseTags             : true,\n\t\t\t\tindentUnit                : 4,\n\t\t\t\tlineNumbers               : true,\n\t\t\t\tlineWrapping              : true,\n\t\t\t\textraKeys                 : {\"Ctrl-Q\": function(cm){ cm.foldCode(cm.getCursor()); }},\n\t\t\t\tfoldGutter                : true,\n\t\t\t\tgutters                   : [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n\t\t\t\tmatchBrackets             : true,\n\t\t\t\tindentWithTabs            : true,\n\t\t\t\tstyleActiveLine           : true,\n\t\t\t\tstyleSelectedText         : true,\n\t\t\t\tautoCloseBrackets         : true,\n\t\t\t\tshowTrailingSpace         : true,\n\t\t\t\thighlightSelectionMatches : true\n\t\t\t};\n\t\t\t\n\t\t\tvar textarea = dialog.find(\"textarea\");\n\t\t\tvar cmObj    = dialog.find(\".CodeMirror\");\n\n\t\t\tif (dialog.find(\".CodeMirror\").length < 1) \n\t\t\t{\n\t\t\t\tcmEditor = exports.$CodeMirror.fromTextArea(textarea[0], cmConfig);\n\t\t\t\tcmObj    = dialog.find(\".CodeMirror\");\n\n\t\t\t\tcmObj.css({\n\t\t\t\t\t\"float\"   : \"none\", \n\t\t\t\t\tmargin    : \"0 0 5px\",\n\t\t\t\t\tborder    : \"1px solid #ddd\",\n\t\t\t\t\tfontSize  : settings.fontSize,\n\t\t\t\t\twidth     : \"100%\",\n\t\t\t\t\theight    : \"410px\"\n\t\t\t\t});\n\n\t\t\t\tcmEditor.on(\"change\", function(cm) {\n\t\t\t\t\ttextarea.val(cm.getValue());\n\t\t\t\t});\n\t\t\t} \n\t\t\telse \n\t\t\t{\n\t\t\t\tcmEditor.setValue(cm.getSelection());\n\t\t\t}\n\t\t};\n\n\t};\n\n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"./../../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t} \n\telse\n\t{\n        factory(window.editormd);\n\t}\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/reference-link-dialog/reference-link-dialog.js",
    "content": "/*!\n * Reference link dialog plugin for Editor.md\n *\n * @file        reference-link-dialog.js\n * @author      pandao\n * @version     1.2.1\n * @updateTime  2015-06-09\n * {@link       https://github.com/pandao/editor.md}\n * @license     MIT\n */\n\n(function() {\n\n    var factory = function (exports) {\n\n\t\tvar pluginName   = \"reference-link-dialog\";\n\t\tvar ReLinkId     = 1;\n\n\t\texports.fn.referenceLinkDialog = function() {\n\n            var _this       = this;\n            var cm          = this.cm;\n            var lang        = this.lang;\n\t\t\tvar editor      = this.editor;\n            var settings    = this.settings;\n            var cursor      = cm.getCursor();\n            var selection   = cm.getSelection();\n            var dialogLang  = lang.dialog.referenceLink;\n            var classPrefix = this.classPrefix;\n\t\t\tvar dialogName  = classPrefix + pluginName, dialog;\n\n\t\t\tcm.focus();\n\n            if (editor.find(\".\" + dialogName).length < 1)\n            {      \n                var dialogHTML = \"<div class=\\\"\" + classPrefix + \"form\\\">\" +\n                                        \"<label>\" + dialogLang.name + \"</label>\" +\n                                        \"<input type=\\\"text\\\" value=\\\"[\" + ReLinkId + \"]\\\" data-name />\" +  \n                                        \"<br/>\" +\n                                        \"<label>\" + dialogLang.urlId + \"</label>\" +\n                                        \"<input type=\\\"text\\\" data-url-id />\" +\n                                        \"<br/>\" +\n                                        \"<label>\" + dialogLang.url + \"</label>\" +\n                                        \"<input type=\\\"text\\\" value=\\\"http://\\\" data-url />\" + \n                                        \"<br/>\" +\n                                        \"<label>\" + dialogLang.urlTitle + \"</label>\" +\n                                        \"<input type=\\\"text\\\" value=\\\"\" + selection + \"\\\" data-title />\" +\n                                        \"<br/>\" +\n                                    \"</div>\";\n\n                dialog = this.createDialog({   \n                    name       : dialogName,\n                    title      : dialogLang.title,\n                    width      : 380,\n                    height     : 296,\n                    content    : dialogHTML,\n                    mask       : settings.dialogShowMask,\n                    drag       : settings.dialogDraggable,\n                    lockScreen : settings.dialogLockScreen,\n                    maskStyle  : {\n                        opacity         : settings.dialogMaskOpacity,\n                        backgroundColor : settings.dialogMaskBgColor\n                    },\n                    buttons : {\n                        enter  : [lang.buttons.enter, function() {\n                            var name  = this.find(\"[data-name]\").val();\n                            var url   = this.find(\"[data-url]\").val();\n                            var rid   = this.find(\"[data-url-id]\").val();\n                            var title = this.find(\"[data-title]\").val();\n\n                            if (name === \"\")\n                            {\n                                alert(dialogLang.nameEmpty);\n                                return false;\n                            }\n\n                            if (rid === \"\")\n                            {\n                                alert(dialogLang.idEmpty);\n                                return false;\n                            }\n\n                            if (url === \"http://\" || url === \"\")\n                            {\n                                alert(dialogLang.urlEmpty);\n                                return false;\n                            }\n\n                            //cm.replaceSelection(\"[\" + title + \"][\" + name + \"]\\n[\" + name + \"]: \" + url + \"\");\n                            cm.replaceSelection(\"[\" + name + \"][\" + rid + \"]\");\n\n                            if (selection === \"\") {\n                                cm.setCursor(cursor.line, cursor.ch + 1);\n                            }\n\n\t\t\t\t\t\t\ttitle = (title === \"\") ? \"\" : \" \\\"\" + title + \"\\\"\";\n\n\t\t\t\t\t\t\tcm.setValue(cm.getValue() + \"\\n[\" + rid + \"]: \" + url + title + \"\");\n\n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }],\n                        cancel : [lang.buttons.cancel, function() {                                   \n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }]\n                    }\n                });\n            }\n\n\t\t\tdialog = editor.find(\".\" + dialogName);\n\t\t\tdialog.find(\"[data-name]\").val(\"[\" + ReLinkId + \"]\");\n\t\t\tdialog.find(\"[data-url-id]\").val(\"\");\n\t\t\tdialog.find(\"[data-url]\").val(\"http://\");\n\t\t\tdialog.find(\"[data-title]\").val(selection);\n\n\t\t\tthis.dialogShowMask(dialog);\n\t\t\tthis.dialogLockScreen();\n\t\t\tdialog.show();\n\n\t\t\tReLinkId++;\n\t\t};\n\n\t};\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"./../../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t} \n\telse\n\t{\n        factory(window.editormd);\n\t}\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/table-dialog/table-dialog.js",
    "content": "/*!\n * Table dialog plugin for Editor.md\n *\n * @file        table-dialog.js\n * @author      pandao\n * @version     1.2.1\n * @updateTime  2015-06-09\n * {@link       https://github.com/pandao/editor.md}\n * @license     MIT\n */\n\n(function() {\n\n\tvar factory = function (exports) {\n\n\t\tvar $            = jQuery;\n\t\tvar pluginName   = \"table-dialog\";\n\n\t\tvar langs = {\n\t\t\t\"zh-cn\" : {\n\t\t\t\ttoolbar : {\n\t\t\t\t\ttable : \"表格\"\n\t\t\t\t},\n\t\t\t\tdialog : {\n\t\t\t\t\ttable : {\n\t\t\t\t\t\ttitle      : \"添加表格\",\n\t\t\t\t\t\tcellsLabel : \"单元格数\",\n\t\t\t\t\t\talignLabel : \"对齐方式\",\n\t\t\t\t\t\trows       : \"行数\",\n\t\t\t\t\t\tcols       : \"列数\",\n\t\t\t\t\t\taligns     : [\"默认\", \"左对齐\", \"居中对齐\", \"右对齐\"]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"zh-tw\" : {\n\t\t\t\ttoolbar : {\n\t\t\t\t\ttable : \"添加表格\"\n\t\t\t\t},\n\t\t\t\tdialog : {\n\t\t\t\t\ttable : {\n\t\t\t\t\t\ttitle      : \"添加表格\",\n\t\t\t\t\t\tcellsLabel : \"單元格數\",\n\t\t\t\t\t\talignLabel : \"對齊方式\",\n\t\t\t\t\t\trows       : \"行數\",\n\t\t\t\t\t\tcols       : \"列數\",\n\t\t\t\t\t\taligns     : [\"默認\", \"左對齊\", \"居中對齊\", \"右對齊\"]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"en\" : {\n\t\t\t\ttoolbar : {\n\t\t\t\t\ttable : \"Tables\"\n\t\t\t\t},\n\t\t\t\tdialog : {\n\t\t\t\t\ttable : {\n\t\t\t\t\t\ttitle      : \"Tables\",\n\t\t\t\t\t\tcellsLabel : \"Cells\",\n\t\t\t\t\t\talignLabel : \"Align\",\n\t\t\t\t\t\trows       : \"Rows\",\n\t\t\t\t\t\tcols       : \"Cols\",\n\t\t\t\t\t\taligns     : [\"Default\", \"Left align\", \"Center align\", \"Right align\"]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\texports.fn.tableDialog = function() {\n\t\t\tvar _this       = this;\n\t\t\tvar cm          = this.cm;\n\t\t\tvar editor      = this.editor;\n\t\t\tvar settings    = this.settings;\n\t\t\tvar path        = settings.path + \"../plugins/\" + pluginName +\"/\";\n\t\t\tvar classPrefix = this.classPrefix;\n\t\t\tvar dialogName  = classPrefix + pluginName, dialog;\n\n\t\t\t$.extend(true, this.lang, langs[this.lang.name]);\n\t\t\tthis.setToolbar();\n\n\t\t\tvar lang        = this.lang;\n\t\t\tvar dialogLang  = lang.dialog.table;\n\t\t\t\n\t\t\tvar dialogContent = [\n\t\t\t\t\"<div class=\\\"editormd-form\\\" style=\\\"padding: 13px 0;\\\">\",\n\t\t\t\t\"<label>\" + dialogLang.cellsLabel + \"</label>\",\n\t\t\t\tdialogLang.rows + \" <input type=\\\"number\\\" value=\\\"3\\\" class=\\\"number-input\\\" style=\\\"width:40px;\\\" max=\\\"100\\\" min=\\\"2\\\" data-rows />&nbsp;&nbsp;\",\n\t\t\t\tdialogLang.cols + \" <input type=\\\"number\\\" value=\\\"2\\\" class=\\\"number-input\\\" style=\\\"width:40px;\\\" max=\\\"100\\\" min=\\\"1\\\" data-cols /><br/>\",\n\t\t\t\t\"<label>\" + dialogLang.alignLabel + \"</label>\",\n\t\t\t\t\"<div class=\\\"fa-btns\\\"></div>\",\n\t\t\t\t\"</div>\"\n\t\t\t].join(\"\\n\");\n\n\t\t\tif (editor.find(\".\" + dialogName).length > 0) \n\t\t\t{\n                dialog = editor.find(\".\" + dialogName);\n\n\t\t\t\tthis.dialogShowMask(dialog);\n\t\t\t\tthis.dialogLockScreen();\n\t\t\t\tdialog.show();\n\t\t\t} \n\t\t\telse\n\t\t\t{\n\t\t\t\tdialog = this.createDialog({\n\t\t\t\t\tname       : dialogName,\n\t\t\t\t\ttitle      : dialogLang.title,\n\t\t\t\t\twidth      : 360,\n\t\t\t\t\theight     : 226,\n\t\t\t\t\tmask       : settings.dialogShowMask,\n\t\t\t\t\tdrag       : settings.dialogDraggable,\n\t\t\t\t\tcontent    : dialogContent,\n\t\t\t\t\tlockScreen : settings.dialogLockScreen,\n\t\t\t\t\tmaskStyle  : {\n\t\t\t\t\t\topacity         : settings.dialogMaskOpacity,\n\t\t\t\t\t\tbackgroundColor : settings.dialogMaskBgColor\n\t\t\t\t\t},\n\t\t\t\t\tbuttons    : {\n                        enter : [lang.buttons.enter, function() {\n\t\t\t\t\t\t\tvar rows   = parseInt(this.find(\"[data-rows]\").val());\n\t\t\t\t\t\t\tvar cols   = parseInt(this.find(\"[data-cols]\").val());\n\t\t\t\t\t\t\tvar align  = this.find(\"[name=\\\"table-align\\\"]:checked\").val();\n\t\t\t\t\t\t\tvar table  = \"\";\n\t\t\t\t\t\t\tvar hrLine = \"------------\";\n\n\t\t\t\t\t\t\tvar alignSign = {\n\t\t\t\t\t\t\t\t_default : hrLine,\n\t\t\t\t\t\t\t\tleft     : \":\" + hrLine,\n\t\t\t\t\t\t\t\tcenter   : \":\" + hrLine + \":\",\n\t\t\t\t\t\t\t\tright    : hrLine + \":\"\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif ( rows > 1 && cols > 0) \n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfor (var r = 0, len = rows; r < len; r++) \n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvar row = [];\n\t\t\t\t\t\t\t\t\tvar head = [];\n\n\t\t\t\t\t\t\t\t\tfor (var c = 0, len2 = cols; c < len2; c++) \n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (r === 1) {\n\t\t\t\t\t\t\t\t\t\t\thead.push(alignSign[align]);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\trow.push(\" \");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (r === 1) {\n\t\t\t\t\t\t\t\t\t\ttable += \"| \" + head.join(\" | \") + \" |\" + \"\\n\";\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\ttable += \"| \" + row.join( (cols === 1) ? \"\" : \" | \" ) + \" |\" + \"\\n\";\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcm.replaceSelection(table);\n\n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }],\n\n                        cancel : [lang.buttons.cancel, function() {                                   \n                            this.hide().lockScreen(false).hideMask();\n\n                            return false;\n                        }]\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar faBtns = dialog.find(\".fa-btns\");\n\n\t\t\tif (faBtns.html() === \"\")\n\t\t\t{\n\t\t\t\tvar icons  = [\"align-justify\", \"align-left\", \"align-center\", \"align-right\"];\n\t\t\t\tvar _lang  = dialogLang.aligns;\n\t\t\t\tvar values = [\"_default\", \"left\", \"center\", \"right\"];\n\n\t\t\t\tfor (var i = 0, len = icons.length; i < len; i++) \n\t\t\t\t{\n\t\t\t\t\tvar checked = (i === 0) ? \" checked=\\\"checked\\\"\" : \"\";\n\t\t\t\t\tvar btn = \"<a href=\\\"javascript:;\\\"><label for=\\\"editormd-table-dialog-radio\"+i+\"\\\" title=\\\"\" + _lang[i] + \"\\\">\";\n\t\t\t\t\tbtn += \"<input type=\\\"radio\\\" name=\\\"table-align\\\" id=\\\"editormd-table-dialog-radio\"+i+\"\\\" value=\\\"\" + values[i] + \"\\\"\" +checked + \" />&nbsp;\";\n\t\t\t\t\tbtn += \"<i class=\\\"fa fa-\" + icons[i] + \"\\\"></i>\";\n\t\t\t\t\tbtn += \"</label></a>\";\n\n\t\t\t\t\tfaBtns.append(btn);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t};\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"./../../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t} \n\telse\n\t{\n        factory(window.editormd);\n\t}\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/plugins/test-plugin/test-plugin.js",
    "content": "/*!\n * Test plugin for Editor.md\n *\n * @file        test-plugin.js\n * @author      pandao\n * @version     1.2.0\n * @updateTime  2015-03-07\n * {@link       https://github.com/pandao/editor.md}\n * @license     MIT\n */\n\n(function() {\n\n    var factory = function (exports) {\n\n\t\tvar $            = jQuery;           // if using module loader(Require.js/Sea.js).\n\n\t\texports.testPlugin = function(){\n\t\t\talert(\"testPlugin\");\n\t\t};\n\n\t\texports.fn.testPluginMethodA = function() {\n\t\t\t/*\n\t\t\tvar _this       = this; // this == the current instance object of Editor.md\n\t\t\tvar lang        = _this.lang;\n\t\t\tvar settings    = _this.settings;\n\t\t\tvar editor      = this.editor;\n\t\t\tvar cursor      = cm.getCursor();\n\t\t\tvar selection   = cm.getSelection();\n\t\t\tvar classPrefix = this.classPrefix;\n\n\t\t\tcm.focus();\n\t\t\t*/\n\t\t\t//....\n\n\t\t\talert(\"testPluginMethodA\");\n\t\t};\n\n\t};\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n    {\n\t\tif (define.amd) { // for Require.js\n\n\t\t\tdefine([\"editormd\"], function(editormd) {\n                factory(editormd);\n            });\n\n\t\t} else { // for Sea.js\n\t\t\tdefine(function(require) {\n                var editormd = require(\"./../../editormd\");\n                factory(editormd);\n            });\n\t\t}\n\t} \n\telse\n\t{\n        factory(window.editormd);\n\t}\n\n})();\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/editormd.codemirror.scss",
    "content": "@charset \"UTF-8\";\n\n.editormd .CodeMirror, #{$prefix}preview {\n    display: inline-block;\n    width: 50%;\n    height: 100%;\n    vertical-align: top;\n    @include box-sizing(border-box);\n    margin: 0;\n}\n\n#{$prefix}preview {\n    position: absolute;\n    top: 35px;\n    right: 0;\n    right: -1px\\0;\n    overflow: auto;\n    line-height: 1.6;\n    display: none;\n    background: #fff;\n}\n\n.editormd {\n    \n    .CodeMirror {\n        z-index: 10;\n        float: left;\n        border-right: 1px solid $borderColor;\n        font-size: 14px;\n        font-family: \"YaHei Consolas Hybrid\", Consolas, \"微软雅黑\", \"Meiryo UI\", \"Malgun Gothic\", \"Segoe UI\", \"Trebuchet MS\", Helvetica, \"Monaco\", courier, monospace;\n        line-height: 1.6;\n        margin-top: 35px;\n\n\t\tpre {\n\t\t\tfont-size: 14px;\n            padding: 0 12px;\n\t\t}\n    }\n    \n    .CodeMirror-linenumbers {\n        padding: 0 5px;\n    }\n\n    .CodeMirror-selected {\n        background: #70B7FF;\n    }\n\n    .CodeMirror-focused .CodeMirror-selected { \n        background: #70B7FF; \n    }\n\n    .CodeMirror, .CodeMirror-scroll, #{$prefix}preview {\n        -webkit-overflow-scrolling : touch;\n    }\n\n    .styled-background { \n        background-color: #ff7; \n    }\n\n    .CodeMirror-focused .cm-matchhighlight {\n        background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAFklEQVQI12NgYGBgkKzc8x9CMDAwAAAmhwSbidEoSQAAAABJRU5ErkJggg==);\n        background-position: bottom;\n        background-repeat: repeat-x;\n    }\n    \n    .CodeMirror-empty { \n        //outline: 1px solid #c22;\n        \n        &.CodeMirror-focused { \n            outline: none;\n        }\n    }\n    \n    .CodeMirror pre.CodeMirror-placeholder { \n        color: #999;\n    }\n\n    .cm-trailingspace {\n        background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAACCAYAAAB/qH1jAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QUXCToH00Y1UgAAACFJREFUCNdjPMDBUc/AwNDAAAFMTAwMDA0OP34wQgX/AQBYgwYEx4f9lQAAAABJRU5ErkJggg==);\n        background-position: bottom left;\n        background-repeat: repeat-x;\n    }\n\n    .cm-tab {\n        background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);\n        background-position: right;\n        background-repeat: no-repeat;\n    }\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/editormd.dialog.scss",
    "content": "@charset \"UTF-8\";\n\n#{$prefix}dialog {\n    color: $color;\n    position: fixed;\n    z-index: 99999;\n    display: none;\n    @include border-radius(3px);\n    @include box-shadow(0 0 10px rgba(0, 0, 0, 0.3));\n    //@include user-select(none); \n    background: #fff;\n    font-size: 14px;\n}\n\n#{$prefix}dialog-container {\n    position: relative;\n    padding: 20px;\n    line-height: 1.4;\n\n    h1 {\n        font-size: 24px;\n        margin-bottom: 10px;\n\n        .fa {\n            color: #2C7EEA;\n            padding-right: 5px;\n        }\n\n        small {\n            padding-left: 5px;\n            font-weight: normal;\n            font-size:  12px;\n            color: #999;\n        }\n    } \n    \n    select {\n        color: #999;\n        padding: 3px 8px;\n        border: 1px solid $borderColor;\n    }\n}\n\n#{$prefix}dialog-close {\n    position: absolute;\n    top: 12px;\n    right: 15px;\n    font-size: 18px;\n    color: #ccc;\n    @include transition(color 300ms ease-out);\n\n    &:hover {\n        color: #999;\n    }\n} \n            \n#{$prefix}dialog-header {\n    padding: 11px 20px;    \n    border-bottom: 1px solid #eee;\n    @include transition(background 300ms ease-out);\n\n    &:hover {\n        background: #f6f6f6;\n    }\n}\n\n#{$prefix}dialog-title {\n    font-size: 14px;             \n}\n            \n#{$prefix}dialog-footer {\n    padding: 10px 0 0 0;\n    text-align: right;\n}\n\n#{$prefix}dialog-info {\n    width: 420px;\n    \n    h1 {\n        font-weight: normal;\n    }\n\n    #{$prefix}dialog-container {\n        padding: 20px 25px 25px;\n    }\n\n    #{$prefix}dialog-close {\n        top: 10px;\n        right: 10px;\n    } \n    \n    p > a, .hover-link:hover {   \n        color: #2196F3;\n    }\n    \n    .hover-link {\n        color: #666;\n    }\n    \n    a {\n        .fa-external-link {\n            display: none;\n        }\n\n        &:hover {    \n            color: #2196F3;\n            \n            .fa-external-link {\n                display: inline-block;\n            }\n        }\n    }\n}\n\n#{$prefix}mask,\n#{$prefix}container-mask,\n#{$prefix}dialog-mask {\n    display: none;\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    top: 0;\n    left: 0;\n}\n\n#{$prefix}mask,\n#{$prefix}dialog-mask-bg {\n    background: #fff;\n    opacity: 0.5;\n    filter: alpha(opacity=50);\n}\n\n#{$prefix}mask {\n    position: fixed;\n    background: #000;\n    @include opacity(0.2); \n    z-index: 99998;  \n}\n\n#{$prefix}container-mask, \n#{$prefix}dialog-mask-con {\n    background: url(../images/loading.gif) no-repeat center center;\n    @include background-size(32px 32px);\n}\n\n#{$prefix}container-mask {\n    z-index: 20;  \n    display: block;\n    background-color: #fff;    \n}\n\n@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) {\n    #{$prefix}container-mask, \n    #{$prefix}dialog-mask-con {\n        background-image: url(../images/loading@2x.gif);\n    }\n}\n\n@media only screen and (-webkit-min-device-pixel-ratio: 3), only screen and (min-device-pixel-ratio: 3) {\n    #{$prefix}container-mask,\n    #{$prefix}dialog-mask-con {\n        background-image: url(../images/loading@3x.gif);\n    }\n}\n\n#{$prefix}code-block-dialog, \n#{$prefix}preformatted-text-dialog {\n    textarea {\n        width: 100%;\n        height: 400px;\n        margin-bottom: 6px;\n        overflow: auto;\n        border: 1px solid #eee;\n        background: #fff;\n        padding: 15px;\n        resize: none;\n    }\n}\n\n#{$prefix}code-toolbar {\n    color: #999;\n    font-size: 14px;\n    margin: -5px 0 10px;\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/editormd.form.scss",
    "content": "@charset \"UTF-8\";\n\n// Form\n            \n#{$prefix}form {\n    color: $color;\n    \n    label {\n        float: left;\n        display: block;\n        width: 75px;\n        text-align: left;\n        padding: 7px 0 15px 5px;\n        margin: 0 0 2px;\n        font-weight: normal;\n    }\n\n    br {\n        clear: both;\n    }\n\n    iframe {\n        display: none;\n    }\n\n    input:focus {\n        outline: 0;\n    }\n\n    input[type=\"text\"], input[type=\"number\"] {\n        color: #999;\n        padding: 8px;\n        border: 1px solid $borderColor;\n    }\n            \n    input[type=\"number\"] {\n        width: 40px;\n        display: inline-block;\n        padding: 6px 8px;\n    }\n\n    input[type=\"text\"] {\n        display: inline-block;\n        width: 264px;\n    }\n    \n    .fa-btns {\n        display: inline-block;\n\n        a {\n            color: #999;\n            padding: 7px 10px 0 0;\n            display: inline-block;\n            text-decoration: none;\n            text-align: center;\n        }\n\n        .fa {\n            font-size: 1.3em;\n        }\n\n        label {\n            float: none;\n            display: inline-block;\n            width: auto;\n            text-align: left;\n            padding: 0 0 0 5px;\n            cursor: pointer;\n        }\n    }\n}\n\n#{$prefix}form,\n#{$prefix}dialog-container,\n#{$prefix}dialog-footer {\n\n    input[type=\"submit\"], #{$prefix}btn, button {\n        color: $color;\n        min-width: 75px;\n        cursor: pointer;\n        background: #fff;\n        padding: 7px 10px;\n        border: 1px solid #ddd;\n        @include border-radius(3px);\n        @include transition(background 300ms ease-out);\n\n        &:hover {\n            background: #eee;\n        }\n    }\n\n    #{$prefix}btn {\n        padding: 5px 8px 4px\\0;\n    }\n\n    #{$prefix}btn + #{$prefix}btn {\n        margin-left: 8px;\n    }\n}\n\n#{$prefix}file-input {\n    width: 75px;\n    height: 32px;\n    margin-left: 8px;\n    position: relative;\n    display: inline-block;\n\n    input[type=\"file\"] {\n        width: 75px;\n        height: 32px;\n        opacity: 0;\n        cursor: pointer;\n        background: #000;\n        display: inline-block;\n        position: absolute;\n        top: 0;\n        right: 0;\n\n        &::-webkit-file-upload-button {\n            visibility: hidden;\n        }\n    }\n\n    input[type=\"submit\"]  {\n    }\n\n    &:hover input[type=\"submit\"]  {\n        background: #eee;\n    }\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/editormd.grid.scss",
    "content": "@charset \"utf-8\";\n\n.editormd-grid-table {\n    width: 99%;\n    display: table;\n    border: 1px solid #ddd;\n    border-collapse: collapse;\n}\n\n.editormd-grid-table-row {\n    width: 100%;\n    display: table-row;\n\n    a {\n        font-size: 1.4em;\n        width: 5%;\n        height: 36px;\n        color: #999;\n        text-align: center;\n        display: table-cell;\n        vertical-align: middle;\n        border: 1px solid #ddd;\n        text-decoration: none;\n        @include transition(background-color 300ms ease-out, color 100ms ease-in);\n\n        &.selected {\n            color: #666;\n            background-color: #eee;                \n        }\n\n        &:hover {\n            color: #777;\n            background-color: #f6f6f6;\n        }\n    }\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/editormd.logo.scss",
    "content": "@charset \"UTF-8\";\n\n@import \"lib/variables\";\n@import \"lib/prefixes\";\n\n@font-face {\n\tfont-family: 'editormd-logo';\n\tsrc:url('../fonts/editormd-logo.eot?-5y8q6h');\n\tsrc:url('.../fonts/editormd-logo.eot?#iefix-5y8q6h') format('embedded-opentype'),\n\t\turl('../fonts/editormd-logo.woff?-5y8q6h') format('woff'),\n\t\turl('../fonts/editormd-logo.ttf?-5y8q6h') format('truetype'),\n\t\turl('../fonts/editormd-logo.svg?-5y8q6h#icomoon') format('svg');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n#{$prefix}logo,\n#{$prefix}logo-1x,\n#{$prefix}logo-2x,\n#{$prefix}logo-3x,\n#{$prefix}logo-4x,\n#{$prefix}logo-5x,\n#{$prefix}logo-6x,\n#{$prefix}logo-7x,\n#{$prefix}logo-8x {\n\tfont-family: 'editormd-logo';\n\tspeak: none;\n\tfont-style: normal;\n\tfont-weight: normal;\n\tfont-variant: normal;\n\ttext-transform: none;\n    font-size: inherit;\n\tline-height: 1;\n    display: inline-block;\n    text-rendering: auto;\n    vertical-align: inherit;\n\n\t//Better Font Rendering\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\n    &:before {\n        content: \"\\e1987\";\n        /* \n        HTML Entity &#xe1987; \n        example: <span class=\"editormd-logo\">&#xe1987;</span>\n        */\n    }\n}\n\n#{$prefix}logo-1x {  \n    font-size: 1em;           \n}\n\n#{$prefix}logo-lg {  \n    font-size: 1.2em;           \n}\n\n#{$prefix}logo-2x {  \n    font-size: 2em;           \n}\n\n#{$prefix}logo-3x {  \n    font-size: 3em;           \n}\n\n#{$prefix}logo-4x {  \n    font-size: 4em;           \n}\n\n#{$prefix}logo-5x {  \n    font-size: 5em;      \n}\n\n#{$prefix}logo-6x {  \n    font-size: 6em;      \n}\n\n#{$prefix}logo-7x {  \n    font-size: 7em;      \n}\n\n#{$prefix}logo-8x {  \n    font-size: 8em;   \n}\n\n#{$prefix}logo-color {\n    color: $mainColor;\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/editormd.menu.scss",
    "content": "@charset \"UTF-8\";\n\n#{$prefix}menu {\n    margin: 0;\n    padding: 0;       \n    list-style: none;\n    \n    > li {\n        margin: 0;\n        padding: 5px 1px;\n        display: inline-block;\n        position: relative;\n\n        &.divider {\n            display: inline-block;\n            text-indent: -9999px;\n            margin: 0 5px; \n            height: 65%;\n            border-right: 1px solid $borderColor;\n        }\n\n        > a {\n            outline: 0;\n            color: $color;\n            display: inline-block;\n            min-width: 24px;\n            font-size: 16px;\n            text-decoration: none;\n            text-align: center;\n            @include border-radius(2px);\n            border: 1px solid #fff;\n            @include transition(all 300ms ease-out);\n\n            &:hover, &.active {\n                border: 1px solid $borderColor;\n                background: #eee;\n            }\n\n            > .fa { \n                text-align: center;\n                display: block;\n                padding: 5px;\n            }\n\n            > #{$prefix}bold {\n                padding: 5px 2px; \n                display: inline-block;\n                font-weight: bold;\n            }\n        }\n\n        &:hover #{$prefix}dropdown-menu {\n            display: block;\n        }\n    }\n\n    > li + li > a {\n        margin-left: 3px;\n    }\n}\n\n#{$prefix}dropdown-menu { \n    display: none;\n    background: #fff;\n    border: 1px solid $borderColor;\n    width: 148px;\n    list-style: none;\n    position: absolute;\n    top: 33px;\n    left: 0;\n    z-index: 100;\n    @include box-shadow(1px 2px 6px rgba(0, 0, 0, 0.15));\n\n    &:before, &:after {\n        width: 0;\n        height: 0;\n        display: block;\n        content: \"\";\n        position: absolute;\n        top: -11px;\n        left: 8px;\n        border: 5px solid transparent;\n    }\n\n    &:before { \n        border-bottom-color: #ccc;   \n    }\n\n    &:after { \n        border-bottom-color: #ffffff;  \n        top: -10px;\n    }\n\n\n    > li {\n        \n        > a {\n            color: $color;\n            display: block;\n            text-decoration: none;\n            padding: 8px 10px;\n\n            &:hover {\n                background: #f6f6f6;\n                @include transition(all 300ms ease-out);\n            }\n        }\n    }\n\n    > li + li {\n        border-top: 1px solid $borderColor;\n    }\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/editormd.preview.scss",
    "content": "@charset \"UTF-8\";\n\n@import \"lib/variables\";\n@import \"lib/prefixes\";\n@import \"font-awesome\";\n\n@import \"editormd.logo\";\n\n// github-markdown.css\n@import \"github-markdown\";  \n\n#{$prefix}preview-container, #{$prefix}html-preview {\n    text-align: left;\n    font-size: 14px;\n    line-height: 1.6;\n    padding: 20px;\n    overflow: auto;\n    width: 100%;\n    background-color: #fff;\n\n    blockquote {\n        color: $color;\n        border-left: 4px solid $borderColor;\n        padding-left: 20px;\n        margin-left: 0;\n        font-size: 14px;\n        font-style: italic;\n    }\n\n    p code {\n        margin-left: 5px;\n        margin-right: 4px;\n    }\n        \n    abbr {\n        background: #ffffdd;\n    }\n\n    hr {\n        height: 1px;\n        border: none;\n        border-top: 1px solid $borderColor;\n        background: none;\n    }\n\n    code {\n        border: 1px solid $borderColor;\n        background: #f6f6f6;\n        padding: 3px;\n        border-radius: 3px;\n        font-size: 14px;\n    }\n\n    pre {\n        border: 1px solid $borderColor;\n        background: #f6f6f6;\n        padding: 10px;\n        @include border-radius(3px);\n\n        code {\n            padding: 0;\n        }\n    }\n    \n    pre, code, kbd {        \n        font-family:  \"YaHei Consolas Hybrid\", Consolas, \"Meiryo UI\", \"Malgun Gothic\", \"Segoe UI\", \"Trebuchet MS\", Helvetica, monospace, monospace;\n    }\n\n    table thead tr {\n        background-color: #F8F8F8;\n    }\n\n    .markdown-toc {\n    }\n\n    .markdown-toc-list {\n    } \n    \n    p#{$prefix}tex {\n        text-align: center;\n    }\n    \n    span#{$prefix}tex {\n        margin: 0 5px;\n    }\n    \n    .emoji {\n        width: 24px;\n        height: 24px;\n    }\n    \n    .katex {\n        font-size: 1.4em;\n    }\n\n    .sequence-diagram, .flowchart {\n        margin: 0 auto;\n        text-align: center;\n        \n        svg {\n            margin: 0 auto;\n        }\n\n        text {\n            font-size  : 15px !important;\n            font-family: \"YaHei Consolas Hybrid\", Consolas, \"Microsoft YaHei\", \"Malgun Gothic\", \"Segoe UI\", Helvetica, Arial !important;\n        }\n    }\n}\n\n//Pretty printing styles. Used with prettify.js.\n\n@import \"prettify\";\n\n#{$prefix}preview-container, #{$prefix}html-preview {\n    pre.prettyprint { \n        padding: 10px; \n        border: 1px solid $borderColor; \n        white-space: pre-wrap;\n        word-wrap: break-word;\n    }\n\n    ol.linenums { \n        color: #999; \n        padding-left: 2.5em; \n    \n        li { \n            list-style-type: decimal; \n        \n            code {\n                border: none;\n                background:none;  \n                padding: 0;\n            }\n        }\n    }\n}    \n\n#{$prefix}preview-container, #{$prefix}html-preview {\n\n    #{$prefix}toc-menu {\n        margin: 8px 0 12px 0;\n        display: inline-block;\n\n        > .markdown-toc {\n            position: relative;\n            @include border-radius(4px);\n            border: 1px solid #ddd;\n            display: inline-block;\n            font-size: 1em;\n\n            > ul {\n                width : 160%;\n                min-width: 180px;\n                position: absolute;\n                left: -1px;\n                top: -2px;\n                z-index: 100;\n                padding: 0 10px 10px;    \n                display: none;\n                background: #fff;\n                border: 1px solid #ddd;\n                @include border-radius(4px);\n                @include box-shadow(0 3px 5px rgba(0, 0, 0, 0.2));\n\n                > li ul {\n                    width: 100%;\n                    min-width: 180px;\n                    border: 1px solid #ddd;\n                    display: none;\n                    background: #fff;\n                    @include border-radius(4px);\n                }\n\n                > li a {\n                    color: #666;\n                    padding: 6px 10px;\n                    display: block;\n                    @include transition(background-color 500ms ease-out);  \n\n                    &:hover {\n                        background-color: #f6f6f6;\n                    }       \n                }\n            }\n\n            li {\n                position: relative;\n\n                > ul {\n                    position: absolute;\n                    top: 32px;\n                    left: 10%;\n                    display: none;\n                    @include box-shadow(0 3px 5px rgba(0, 0, 0, 0.2));\n\n                    &:before, &:after {\n                        pointer-events: pointer-events;\n                        position: absolute;\n                        left: 15px;\n                        top: -6px;\n                        display: block;\n                        content: \"\";\n                        width: 0;\n                        height: 0;\n                        border: 6px solid transparent;\n                        border-width: 0 6px 6px; \n                        z-index: 10; \n                    }\n\n                    &:before {\n                        border-bottom-color: #ccc; \n                    }\n\n                    &:after {\n                        border-bottom-color: #ffffff;  \n                        top: -5px;\n                    }\n                }\n            }\n        }\n\n        ul {\n            list-style: none;\n        }\n\n        a {\n            text-decoration: none;\n        }\n\n        h1 {\n            font-size: 16px;\n            padding: 5px 0 10px 10px;\n            line-height: 1;\n            border-bottom: 1px solid #eee;\n\n            .fa {\n                padding-left: 10px;\n            }\n        }\n\n        .toc-menu-btn {\n            color: #666;\n            min-width: 180px;\n            padding: 5px 10px;\n            border-radius: 4px;\n            display: inline-block;\n            @include transition(background-color 500ms ease-out);\n\n            &:hover {\n                background-color: #f6f6f6;\n            }\n\n            .fa {\n                float: right;\n                padding: 3px 0 0 10px;\n                font-size: 1.3em;\n            }\n        }\n    }\n}\n\n.markdown-body {\n    #{$prefix}toc-menu {\n        ul {\n            padding-left: 0; \n        }\n    }\n\n    .highlight pre, pre {\n      line-height: 1.6;\n    }\n}\n\nhr.editormd-page-break {\n    border: 1px dotted #ccc;\n    font-size: 0;\n    height: 2px;\n}\n\n@media only print {\n    hr.editormd-page-break {\n        background: none;\n        border: none;\n        height: 0;\n    }\n}\n\n#{$prefix}html-preview {\n    textarea {\n        display : none;\n    }\n\n    hr.editormd-page-break {\n        background: none;\n        border: none;\n        height: 0;\n    }\n}\n\n#{$prefix}preview-close-btn {\n    color: #fff;\n    padding: 4px 6px;\n    font-size: 18px;\n    @include border-radius(500px);\n    display: none;\n    background-color: #ccc;\n    position: absolute;\n    top: 25px;\n    right: 35px;\n    z-index: 19;\n    @include transition(background-color 300ms ease-out);\n\n    &:hover {\n        background-color: #999;\n    }\n}\n\n.editormd-preview-active {\n    width: 100%;\n    padding: 40px;\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/editormd.preview.themes.scss",
    "content": "/* Preview dark theme */\n            \n#{$prefix}preview-theme-dark {\n    color: #777;\n    background:#2C2827;\n    \n    #{$prefix}preview-container {\n        color: #888;\n        background-color: #2C2827;  \n        //font-family: \"Meiryo UI\", \"Helvetica Neue\", \"Microsoft YaHei\";\n\n        pre.prettyprint {\n            border: none;\n        }\n\n        blockquote {\n            color: #555;\n            padding: 0.5em;\n            background: #222;\n            border-color: #333;\n        }\n\n        abbr {\n            color: #fff;\n            padding: 1px 3px;\n            @include border-radius(3px); \n            background:#ff9900;\n        }\n\n        code {\n            color: #fff;\n            border: none;\n            padding: 1px 3px;\n            @include border-radius(3px); \n            background: #5A9600;\n        }\n\n        table {\n            border: none;\n        }\n\n        .fa-emoji {\n            color: #B4BF42;\n        }\n\n        .katex {\n            color: #FEC93F;\n        }\n    }\n\n    .editormd-toc-menu {\n        > .markdown-toc {\n            background:#fff;\n            border:none;\n\n            h1 {\n                border-color:#ddd;\n            }\n        }\n    }\n    \n    .markdown-body {\n        h1, h2, hr {\n            border-color: #222;      \n        }    \n    }\n    \n    pre {\n        color: #999;\n        background-color: #111;\n        background-color: rgba(0,0,0,.4);\n\n        /* plain text */\n        .pln { \n            color: #999;\n        } \n    }\n\n    li.L1, li.L3, li.L5, li.L7, li.L9 { \n        background: none;\n    }\n\n    [class*=editormd-logo] {\n        color: #2196F3;\n    }\n\n    .sequence-diagram {\n        text {\n            fill: #fff;\n        }\n\n        rect, path {\n            color:#fff;\n            fill : #64D1CB;\n            stroke : #64D1CB;\n        }\n    }\n    \n    .flowchart {\n        rect, path {\n            stroke : #A6C6FF;\n        }\n\n        rect {\n            fill: #A6C6FF;\n        }\n\n        text {\n            fill: #5879B4;\n        }\n    }\n}\n\n@media screen {\n    \n    #{$prefix}preview-theme-dark {\n        .str { color: #080 }  /* string content */\n        .kwd { color: #ff9900; }  /* a keyword */\n        .com { color: #444444; }  /* a comment */\n        .typ { color: #606 }  /* a type name */\n        .lit { color: #066 }  /* a literal value */\n        /* punctuation, lisp open bracket, lisp close bracket */\n        .pun, .opn, .clo { color: #660 }\n        .tag { color: #ff9900; }  /* a markup tag name */\n        .atn { color: #6C95F5; }  /* a markup attribute name */\n        .atv { color: #080 }  /* a markup attribute value */\n        .dec, .var { color: #008BA7; }  /* a declaration; a variable name */\n        .fun { color: red }  /* a function name */\n    }\n    \n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/editormd.scss",
    "content": "@charset \"UTF-8\";\n\n@import \"lib/variables\";\n@import \"lib/prefixes\";\n        \n.editormd {\n    width: 90%;\n    height: 640px;\n    margin: 0 auto;\n    text-align: left;\n    overflow: hidden;  \n    position: relative;\n    margin-bottom: 15px;\n    border: 1px solid $borderColor;\n    font-family: \"Meiryo UI\", \"Microsoft YaHei\", \"Malgun Gothic\", \"Segoe UI\", \"Trebuchet MS\", Helvetica, \"Monaco\", monospace, Tahoma, STXihei, \"华文细黑\", STHeiti, \"Helvetica Neue\", \"Droid Sans\", \"wenquanyi micro hei\", FreeSans, Arimo, Arial, SimSun, \"宋体\", Heiti, \"黑体\", sans-serif;\n\n    *, *:before, *:after {\n        @include box-sizing(border-box);\n    }\n    \n    a {\n        text-decoration: none;\n    }\n\n    img {\n        border: none;\n        vertical-align: middle;\n    }            \n\n    > textarea,\n    #{$prefix}html-textarea,\n    #{$prefix}markdown-textarea {\n        width: 0;\n        height: 0;\n        outline: 0;\n        resize:none;\n    }\n    \n    #{$prefix}html-textarea,\n    #{$prefix}markdown-textarea {\n        display : none;\n    }\n\n    input[type=\"text\"], \n    input[type=\"button\"], \n    input[type=\"submit\"], \n    select, textarea, button {\n        @include appearance(none);\n    }\n            \n    ::-webkit-scrollbar {\n        height: 10px;\n        width: 7px;\n        background: rgba(0, 0, 0, .1);\n\n        &:hover {\n            background: rgba(0, 0, 0, .2);\n        }\n    }\n\n    ::-webkit-scrollbar-thumb {\n        background: rgba(0,0,0,0.3);\n        @include border-radius(6px);\n\n        &:hover {\n            @include box-shadow(inset 1px 1px 1px rgba(0, 0, 0, .25));\n            background-color: rgba(0, 0, 0, .4);\n        }\n    }\n}\n            \n#{$prefix}user-unselect { \n    @include user-select(none); \n}\n\n#{$prefix}toolbar {\n    width: 100%;\n    min-height: 37px;\n    background: #fff;\n    display: none;\n    position: absolute;\n    top: 0;\n    left: 0;\n    z-index: 10;\n    border-bottom: 1px solid $borderColor;\n}\n\n#{$prefix}toolbar-container {\n    padding: 0 8px;\n    min-height: 35px;\n    @include user-select(none);\n}\n\n@import \"editormd.menu\";\n\n#{$prefix}container {\n    margin: 0;\n    width: 100%;\n    height: 100%;\n    overflow: hidden;\n    padding: 35px 0 0;\n    position: relative;   \n    background: #fff;\n    @include box-sizing(border-box);\n}\n\n@import \"editormd.dialog\"; \n@import \"editormd.grid\"; \n@import \"editormd.tab\"; \n@import \"editormd.form\"; \n@import \"editormd.codemirror\"; \n@import \"editormd.preview\";\n@import \"editormd.preview.themes\";\n\n#{$prefix}onlyread {\n    #{$prefix}toolbar {\n        display: none;\n    }\n\n    .CodeMirror {\n        margin-top: 0;\n    }\n\n    #{$prefix}preview {\n        top: 0;\n    }\n}\n\n#{$prefix}fullscreen {\n    position: fixed; \n    top   : 0; \n    left  : 0; \n    border: none;\n    margin: 0 auto;\n}\n\n@import \"editormd.themes\";"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/editormd.tab.scss",
    "content": "@charset \"utf-8\";\n\n.editormd-tab {\n}\n\n.editormd-tab-head {\n    list-style: none;\n    border-bottom: 1px solid #ddd;\n\n    li {\n        display: inline-block;\n\n        a {\n            color: #999;\n            display: block;\n            padding: 6px 12px 5px;\n            text-align: center;\n            text-decoration: none;\n            margin-bottom: -1px;\n            border: 1px solid #ddd;\n            @include border-top-left-radius(3px);\n            @include border-top-right-radius(3px);\n            background: #f6f6f6;\n            @include transition(all 300ms ease-out);\n\n            &:hover {\n                color: #666;\n                background: #eee;\n            }\n        }\n\n        &.active a {\n            color: #666;\n            background: #fff;\n            border-bottom-color: #fff; \n        }\n    }\n    \n    li + li {\n        margin-left: 3px;\n    }\n}\n\n.editormd-tab-container {\n}\n\n.editormd-tab-box {\n    padding: 20px 0;\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/editormd.themes.scss",
    "content": "/* Editor.md Dark theme */\n\n#{$prefix}theme-dark {\n    border-color: #1a1a17;\n\n    #{$prefix}toolbar {\n        background: #1A1A17;\n        border-color: #1a1a17;\n    }\n\n    #{$prefix}menu > li > a {\n        color: #777;\n        border-color: #1a1a17;\n\n        &:hover, &.active {\n            border-color: #333;\n            background: #333;\n        }\n    }\n\n    #{$prefix}menu > li.divider {\n        border-right: 1px solid #111;\n    }\n    \n    .CodeMirror {\n        border-right: 1px solid rgba(0,0,0,0.1);\n    }\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/font-awesome.scss",
    "content": "/*!\n *  Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome\n *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */\n/* FONT PATH\n * -------------------------- */\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('../fonts/fontawesome-webfont.eot?v=4.3.0');\n  src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');\n  font-weight: normal;\n  font-style: normal;\n}\n.fa {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  transform: translate(0, 0);\n}\n/* makes the font 33% larger relative to the icon container */\n.fa-lg {\n  font-size: 1.33333333em;\n  line-height: 0.75em;\n  vertical-align: -15%;\n}\n.fa-2x {\n  font-size: 2em;\n}\n.fa-3x {\n  font-size: 3em;\n}\n.fa-4x {\n  font-size: 4em;\n}\n.fa-5x {\n  font-size: 5em;\n}\n.fa-fw {\n  width: 1.28571429em;\n  text-align: center;\n}\n.fa-ul {\n  padding-left: 0;\n  margin-left: 2.14285714em;\n  list-style-type: none;\n}\n.fa-ul > li {\n  position: relative;\n}\n.fa-li {\n  position: absolute;\n  left: -2.14285714em;\n  width: 2.14285714em;\n  top: 0.14285714em;\n  text-align: center;\n}\n.fa-li.fa-lg {\n  left: -1.85714286em;\n}\n.fa-border {\n  padding: .2em .25em .15em;\n  border: solid 0.08em #eeeeee;\n  border-radius: .1em;\n}\n.pull-right {\n  float: right;\n}\n.pull-left {\n  float: left;\n}\n.fa.pull-left {\n  margin-right: .3em;\n}\n.fa.pull-right {\n  margin-left: .3em;\n}\n.fa-spin {\n  -webkit-animation: fa-spin 2s infinite linear;\n  animation: fa-spin 2s infinite linear;\n}\n.fa-pulse {\n  -webkit-animation: fa-spin 1s infinite steps(8);\n  animation: fa-spin 1s infinite steps(8);\n}\n@-webkit-keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n    transform: rotate(359deg);\n  }\n}\n@keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n    transform: rotate(359deg);\n  }\n}\n.fa-rotate-90 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n  -webkit-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  transform: rotate(90deg);\n}\n.fa-rotate-180 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\n  -webkit-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  transform: rotate(180deg);\n}\n.fa-rotate-270 {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\n  -webkit-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  transform: rotate(270deg);\n}\n.fa-flip-horizontal {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);\n  -webkit-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n.fa-flip-vertical {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);\n  -webkit-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n  filter: none;\n}\n.fa-stack {\n  position: relative;\n  display: inline-block;\n  width: 2em;\n  height: 2em;\n  line-height: 2em;\n  vertical-align: middle;\n}\n.fa-stack-1x,\n.fa-stack-2x {\n  position: absolute;\n  left: 0;\n  width: 100%;\n  text-align: center;\n}\n.fa-stack-1x {\n  line-height: inherit;\n}\n.fa-stack-2x {\n  font-size: 2em;\n}\n.fa-inverse {\n  color: #ffffff;\n}\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n.fa-glass:before {\n  content: \"\\f000\";\n}\n.fa-music:before {\n  content: \"\\f001\";\n}\n.fa-search:before {\n  content: \"\\f002\";\n}\n.fa-envelope-o:before {\n  content: \"\\f003\";\n}\n.fa-heart:before {\n  content: \"\\f004\";\n}\n.fa-star:before {\n  content: \"\\f005\";\n}\n.fa-star-o:before {\n  content: \"\\f006\";\n}\n.fa-user:before {\n  content: \"\\f007\";\n}\n.fa-film:before {\n  content: \"\\f008\";\n}\n.fa-th-large:before {\n  content: \"\\f009\";\n}\n.fa-th:before {\n  content: \"\\f00a\";\n}\n.fa-th-list:before {\n  content: \"\\f00b\";\n}\n.fa-check:before {\n  content: \"\\f00c\";\n}\n.fa-remove:before,\n.fa-close:before,\n.fa-times:before {\n  content: \"\\f00d\";\n}\n.fa-search-plus:before {\n  content: \"\\f00e\";\n}\n.fa-search-minus:before {\n  content: \"\\f010\";\n}\n.fa-power-off:before {\n  content: \"\\f011\";\n}\n.fa-signal:before {\n  content: \"\\f012\";\n}\n.fa-gear:before,\n.fa-cog:before {\n  content: \"\\f013\";\n}\n.fa-trash-o:before {\n  content: \"\\f014\";\n}\n.fa-home:before {\n  content: \"\\f015\";\n}\n.fa-file-o:before {\n  content: \"\\f016\";\n}\n.fa-clock-o:before {\n  content: \"\\f017\";\n}\n.fa-road:before {\n  content: \"\\f018\";\n}\n.fa-download:before {\n  content: \"\\f019\";\n}\n.fa-arrow-circle-o-down:before {\n  content: \"\\f01a\";\n}\n.fa-arrow-circle-o-up:before {\n  content: \"\\f01b\";\n}\n.fa-inbox:before {\n  content: \"\\f01c\";\n}\n.fa-play-circle-o:before {\n  content: \"\\f01d\";\n}\n.fa-rotate-right:before,\n.fa-repeat:before {\n  content: \"\\f01e\";\n}\n.fa-refresh:before {\n  content: \"\\f021\";\n}\n.fa-list-alt:before {\n  content: \"\\f022\";\n}\n.fa-lock:before {\n  content: \"\\f023\";\n}\n.fa-flag:before {\n  content: \"\\f024\";\n}\n.fa-headphones:before {\n  content: \"\\f025\";\n}\n.fa-volume-off:before {\n  content: \"\\f026\";\n}\n.fa-volume-down:before {\n  content: \"\\f027\";\n}\n.fa-volume-up:before {\n  content: \"\\f028\";\n}\n.fa-qrcode:before {\n  content: \"\\f029\";\n}\n.fa-barcode:before {\n  content: \"\\f02a\";\n}\n.fa-tag:before {\n  content: \"\\f02b\";\n}\n.fa-tags:before {\n  content: \"\\f02c\";\n}\n.fa-book:before {\n  content: \"\\f02d\";\n}\n.fa-bookmark:before {\n  content: \"\\f02e\";\n}\n.fa-print:before {\n  content: \"\\f02f\";\n}\n.fa-camera:before {\n  content: \"\\f030\";\n}\n.fa-font:before {\n  content: \"\\f031\";\n}\n.fa-bold:before {\n  content: \"\\f032\";\n}\n.fa-italic:before {\n  content: \"\\f033\";\n}\n.fa-text-height:before {\n  content: \"\\f034\";\n}\n.fa-text-width:before {\n  content: \"\\f035\";\n}\n.fa-align-left:before {\n  content: \"\\f036\";\n}\n.fa-align-center:before {\n  content: \"\\f037\";\n}\n.fa-align-right:before {\n  content: \"\\f038\";\n}\n.fa-align-justify:before {\n  content: \"\\f039\";\n}\n.fa-list:before {\n  content: \"\\f03a\";\n}\n.fa-dedent:before,\n.fa-outdent:before {\n  content: \"\\f03b\";\n}\n.fa-indent:before {\n  content: \"\\f03c\";\n}\n.fa-video-camera:before {\n  content: \"\\f03d\";\n}\n.fa-photo:before,\n.fa-image:before,\n.fa-picture-o:before {\n  content: \"\\f03e\";\n}\n.fa-pencil:before {\n  content: \"\\f040\";\n}\n.fa-map-marker:before {\n  content: \"\\f041\";\n}\n.fa-adjust:before {\n  content: \"\\f042\";\n}\n.fa-tint:before {\n  content: \"\\f043\";\n}\n.fa-edit:before,\n.fa-pencil-square-o:before {\n  content: \"\\f044\";\n}\n.fa-share-square-o:before {\n  content: \"\\f045\";\n}\n.fa-check-square-o:before {\n  content: \"\\f046\";\n}\n.fa-arrows:before {\n  content: \"\\f047\";\n}\n.fa-step-backward:before {\n  content: \"\\f048\";\n}\n.fa-fast-backward:before {\n  content: \"\\f049\";\n}\n.fa-backward:before {\n  content: \"\\f04a\";\n}\n.fa-play:before {\n  content: \"\\f04b\";\n}\n.fa-pause:before {\n  content: \"\\f04c\";\n}\n.fa-stop:before {\n  content: \"\\f04d\";\n}\n.fa-forward:before {\n  content: \"\\f04e\";\n}\n.fa-fast-forward:before {\n  content: \"\\f050\";\n}\n.fa-step-forward:before {\n  content: \"\\f051\";\n}\n.fa-eject:before {\n  content: \"\\f052\";\n}\n.fa-chevron-left:before {\n  content: \"\\f053\";\n}\n.fa-chevron-right:before {\n  content: \"\\f054\";\n}\n.fa-plus-circle:before {\n  content: \"\\f055\";\n}\n.fa-minus-circle:before {\n  content: \"\\f056\";\n}\n.fa-times-circle:before {\n  content: \"\\f057\";\n}\n.fa-check-circle:before {\n  content: \"\\f058\";\n}\n.fa-question-circle:before {\n  content: \"\\f059\";\n}\n.fa-info-circle:before {\n  content: \"\\f05a\";\n}\n.fa-crosshairs:before {\n  content: \"\\f05b\";\n}\n.fa-times-circle-o:before {\n  content: \"\\f05c\";\n}\n.fa-check-circle-o:before {\n  content: \"\\f05d\";\n}\n.fa-ban:before {\n  content: \"\\f05e\";\n}\n.fa-arrow-left:before {\n  content: \"\\f060\";\n}\n.fa-arrow-right:before {\n  content: \"\\f061\";\n}\n.fa-arrow-up:before {\n  content: \"\\f062\";\n}\n.fa-arrow-down:before {\n  content: \"\\f063\";\n}\n.fa-mail-forward:before,\n.fa-share:before {\n  content: \"\\f064\";\n}\n.fa-expand:before {\n  content: \"\\f065\";\n}\n.fa-compress:before {\n  content: \"\\f066\";\n}\n.fa-plus:before {\n  content: \"\\f067\";\n}\n.fa-minus:before {\n  content: \"\\f068\";\n}\n.fa-asterisk:before {\n  content: \"\\f069\";\n}\n.fa-exclamation-circle:before {\n  content: \"\\f06a\";\n}\n.fa-gift:before {\n  content: \"\\f06b\";\n}\n.fa-leaf:before {\n  content: \"\\f06c\";\n}\n.fa-fire:before {\n  content: \"\\f06d\";\n}\n.fa-eye:before {\n  content: \"\\f06e\";\n}\n.fa-eye-slash:before {\n  content: \"\\f070\";\n}\n.fa-warning:before,\n.fa-exclamation-triangle:before {\n  content: \"\\f071\";\n}\n.fa-plane:before {\n  content: \"\\f072\";\n}\n.fa-calendar:before {\n  content: \"\\f073\";\n}\n.fa-random:before {\n  content: \"\\f074\";\n}\n.fa-comment:before {\n  content: \"\\f075\";\n}\n.fa-magnet:before {\n  content: \"\\f076\";\n}\n.fa-chevron-up:before {\n  content: \"\\f077\";\n}\n.fa-chevron-down:before {\n  content: \"\\f078\";\n}\n.fa-retweet:before {\n  content: \"\\f079\";\n}\n.fa-shopping-cart:before {\n  content: \"\\f07a\";\n}\n.fa-folder:before {\n  content: \"\\f07b\";\n}\n.fa-folder-open:before {\n  content: \"\\f07c\";\n}\n.fa-arrows-v:before {\n  content: \"\\f07d\";\n}\n.fa-arrows-h:before {\n  content: \"\\f07e\";\n}\n.fa-bar-chart-o:before,\n.fa-bar-chart:before {\n  content: \"\\f080\";\n}\n.fa-twitter-square:before {\n  content: \"\\f081\";\n}\n.fa-facebook-square:before {\n  content: \"\\f082\";\n}\n.fa-camera-retro:before {\n  content: \"\\f083\";\n}\n.fa-key:before {\n  content: \"\\f084\";\n}\n.fa-gears:before,\n.fa-cogs:before {\n  content: \"\\f085\";\n}\n.fa-comments:before {\n  content: \"\\f086\";\n}\n.fa-thumbs-o-up:before {\n  content: \"\\f087\";\n}\n.fa-thumbs-o-down:before {\n  content: \"\\f088\";\n}\n.fa-star-half:before {\n  content: \"\\f089\";\n}\n.fa-heart-o:before {\n  content: \"\\f08a\";\n}\n.fa-sign-out:before {\n  content: \"\\f08b\";\n}\n.fa-linkedin-square:before {\n  content: \"\\f08c\";\n}\n.fa-thumb-tack:before {\n  content: \"\\f08d\";\n}\n.fa-external-link:before {\n  content: \"\\f08e\";\n}\n.fa-sign-in:before {\n  content: \"\\f090\";\n}\n.fa-trophy:before {\n  content: \"\\f091\";\n}\n.fa-github-square:before {\n  content: \"\\f092\";\n}\n.fa-upload:before {\n  content: \"\\f093\";\n}\n.fa-lemon-o:before {\n  content: \"\\f094\";\n}\n.fa-phone:before {\n  content: \"\\f095\";\n}\n.fa-square-o:before {\n  content: \"\\f096\";\n}\n.fa-bookmark-o:before {\n  content: \"\\f097\";\n}\n.fa-phone-square:before {\n  content: \"\\f098\";\n}\n.fa-twitter:before {\n  content: \"\\f099\";\n}\n.fa-facebook-f:before,\n.fa-facebook:before {\n  content: \"\\f09a\";\n}\n.fa-github:before {\n  content: \"\\f09b\";\n}\n.fa-unlock:before {\n  content: \"\\f09c\";\n}\n.fa-credit-card:before {\n  content: \"\\f09d\";\n}\n.fa-rss:before {\n  content: \"\\f09e\";\n}\n.fa-hdd-o:before {\n  content: \"\\f0a0\";\n}\n.fa-bullhorn:before {\n  content: \"\\f0a1\";\n}\n.fa-bell:before {\n  content: \"\\f0f3\";\n}\n.fa-certificate:before {\n  content: \"\\f0a3\";\n}\n.fa-hand-o-right:before {\n  content: \"\\f0a4\";\n}\n.fa-hand-o-left:before {\n  content: \"\\f0a5\";\n}\n.fa-hand-o-up:before {\n  content: \"\\f0a6\";\n}\n.fa-hand-o-down:before {\n  content: \"\\f0a7\";\n}\n.fa-arrow-circle-left:before {\n  content: \"\\f0a8\";\n}\n.fa-arrow-circle-right:before {\n  content: \"\\f0a9\";\n}\n.fa-arrow-circle-up:before {\n  content: \"\\f0aa\";\n}\n.fa-arrow-circle-down:before {\n  content: \"\\f0ab\";\n}\n.fa-globe:before {\n  content: \"\\f0ac\";\n}\n.fa-wrench:before {\n  content: \"\\f0ad\";\n}\n.fa-tasks:before {\n  content: \"\\f0ae\";\n}\n.fa-filter:before {\n  content: \"\\f0b0\";\n}\n.fa-briefcase:before {\n  content: \"\\f0b1\";\n}\n.fa-arrows-alt:before {\n  content: \"\\f0b2\";\n}\n.fa-group:before,\n.fa-users:before {\n  content: \"\\f0c0\";\n}\n.fa-chain:before,\n.fa-link:before {\n  content: \"\\f0c1\";\n}\n.fa-cloud:before {\n  content: \"\\f0c2\";\n}\n.fa-flask:before {\n  content: \"\\f0c3\";\n}\n.fa-cut:before,\n.fa-scissors:before {\n  content: \"\\f0c4\";\n}\n.fa-copy:before,\n.fa-files-o:before {\n  content: \"\\f0c5\";\n}\n.fa-paperclip:before {\n  content: \"\\f0c6\";\n}\n.fa-save:before,\n.fa-floppy-o:before {\n  content: \"\\f0c7\";\n}\n.fa-square:before {\n  content: \"\\f0c8\";\n}\n.fa-navicon:before,\n.fa-reorder:before,\n.fa-bars:before {\n  content: \"\\f0c9\";\n}\n.fa-list-ul:before {\n  content: \"\\f0ca\";\n}\n.fa-list-ol:before {\n  content: \"\\f0cb\";\n}\n.fa-strikethrough:before {\n  content: \"\\f0cc\";\n}\n.fa-underline:before {\n  content: \"\\f0cd\";\n}\n.fa-table:before {\n  content: \"\\f0ce\";\n}\n.fa-magic:before {\n  content: \"\\f0d0\";\n}\n.fa-truck:before {\n  content: \"\\f0d1\";\n}\n.fa-pinterest:before {\n  content: \"\\f0d2\";\n}\n.fa-pinterest-square:before {\n  content: \"\\f0d3\";\n}\n.fa-google-plus-square:before {\n  content: \"\\f0d4\";\n}\n.fa-google-plus:before {\n  content: \"\\f0d5\";\n}\n.fa-money:before {\n  content: \"\\f0d6\";\n}\n.fa-caret-down:before {\n  content: \"\\f0d7\";\n}\n.fa-caret-up:before {\n  content: \"\\f0d8\";\n}\n.fa-caret-left:before {\n  content: \"\\f0d9\";\n}\n.fa-caret-right:before {\n  content: \"\\f0da\";\n}\n.fa-columns:before {\n  content: \"\\f0db\";\n}\n.fa-unsorted:before,\n.fa-sort:before {\n  content: \"\\f0dc\";\n}\n.fa-sort-down:before,\n.fa-sort-desc:before {\n  content: \"\\f0dd\";\n}\n.fa-sort-up:before,\n.fa-sort-asc:before {\n  content: \"\\f0de\";\n}\n.fa-envelope:before {\n  content: \"\\f0e0\";\n}\n.fa-linkedin:before {\n  content: \"\\f0e1\";\n}\n.fa-rotate-left:before,\n.fa-undo:before {\n  content: \"\\f0e2\";\n}\n.fa-legal:before,\n.fa-gavel:before {\n  content: \"\\f0e3\";\n}\n.fa-dashboard:before,\n.fa-tachometer:before {\n  content: \"\\f0e4\";\n}\n.fa-comment-o:before {\n  content: \"\\f0e5\";\n}\n.fa-comments-o:before {\n  content: \"\\f0e6\";\n}\n.fa-flash:before,\n.fa-bolt:before {\n  content: \"\\f0e7\";\n}\n.fa-sitemap:before {\n  content: \"\\f0e8\";\n}\n.fa-umbrella:before {\n  content: \"\\f0e9\";\n}\n.fa-paste:before,\n.fa-clipboard:before {\n  content: \"\\f0ea\";\n}\n.fa-lightbulb-o:before {\n  content: \"\\f0eb\";\n}\n.fa-exchange:before {\n  content: \"\\f0ec\";\n}\n.fa-cloud-download:before {\n  content: \"\\f0ed\";\n}\n.fa-cloud-upload:before {\n  content: \"\\f0ee\";\n}\n.fa-user-md:before {\n  content: \"\\f0f0\";\n}\n.fa-stethoscope:before {\n  content: \"\\f0f1\";\n}\n.fa-suitcase:before {\n  content: \"\\f0f2\";\n}\n.fa-bell-o:before {\n  content: \"\\f0a2\";\n}\n.fa-coffee:before {\n  content: \"\\f0f4\";\n}\n.fa-cutlery:before {\n  content: \"\\f0f5\";\n}\n.fa-file-text-o:before {\n  content: \"\\f0f6\";\n}\n.fa-building-o:before {\n  content: \"\\f0f7\";\n}\n.fa-hospital-o:before {\n  content: \"\\f0f8\";\n}\n.fa-ambulance:before {\n  content: \"\\f0f9\";\n}\n.fa-medkit:before {\n  content: \"\\f0fa\";\n}\n.fa-fighter-jet:before {\n  content: \"\\f0fb\";\n}\n.fa-beer:before {\n  content: \"\\f0fc\";\n}\n.fa-h-square:before {\n  content: \"\\f0fd\";\n}\n.fa-plus-square:before {\n  content: \"\\f0fe\";\n}\n.fa-angle-double-left:before {\n  content: \"\\f100\";\n}\n.fa-angle-double-right:before {\n  content: \"\\f101\";\n}\n.fa-angle-double-up:before {\n  content: \"\\f102\";\n}\n.fa-angle-double-down:before {\n  content: \"\\f103\";\n}\n.fa-angle-left:before {\n  content: \"\\f104\";\n}\n.fa-angle-right:before {\n  content: \"\\f105\";\n}\n.fa-angle-up:before {\n  content: \"\\f106\";\n}\n.fa-angle-down:before {\n  content: \"\\f107\";\n}\n.fa-desktop:before {\n  content: \"\\f108\";\n}\n.fa-laptop:before {\n  content: \"\\f109\";\n}\n.fa-tablet:before {\n  content: \"\\f10a\";\n}\n.fa-mobile-phone:before,\n.fa-mobile:before {\n  content: \"\\f10b\";\n}\n.fa-circle-o:before {\n  content: \"\\f10c\";\n}\n.fa-quote-left:before {\n  content: \"\\f10d\";\n}\n.fa-quote-right:before {\n  content: \"\\f10e\";\n}\n.fa-spinner:before {\n  content: \"\\f110\";\n}\n.fa-circle:before {\n  content: \"\\f111\";\n}\n.fa-mail-reply:before,\n.fa-reply:before {\n  content: \"\\f112\";\n}\n.fa-github-alt:before {\n  content: \"\\f113\";\n}\n.fa-folder-o:before {\n  content: \"\\f114\";\n}\n.fa-folder-open-o:before {\n  content: \"\\f115\";\n}\n.fa-smile-o:before {\n  content: \"\\f118\";\n}\n.fa-frown-o:before {\n  content: \"\\f119\";\n}\n.fa-meh-o:before {\n  content: \"\\f11a\";\n}\n.fa-gamepad:before {\n  content: \"\\f11b\";\n}\n.fa-keyboard-o:before {\n  content: \"\\f11c\";\n}\n.fa-flag-o:before {\n  content: \"\\f11d\";\n}\n.fa-flag-checkered:before {\n  content: \"\\f11e\";\n}\n.fa-terminal:before {\n  content: \"\\f120\";\n}\n.fa-code:before {\n  content: \"\\f121\";\n}\n.fa-mail-reply-all:before,\n.fa-reply-all:before {\n  content: \"\\f122\";\n}\n.fa-star-half-empty:before,\n.fa-star-half-full:before,\n.fa-star-half-o:before {\n  content: \"\\f123\";\n}\n.fa-location-arrow:before {\n  content: \"\\f124\";\n}\n.fa-crop:before {\n  content: \"\\f125\";\n}\n.fa-code-fork:before {\n  content: \"\\f126\";\n}\n.fa-unlink:before,\n.fa-chain-broken:before {\n  content: \"\\f127\";\n}\n.fa-question:before {\n  content: \"\\f128\";\n}\n.fa-info:before {\n  content: \"\\f129\";\n}\n.fa-exclamation:before {\n  content: \"\\f12a\";\n}\n.fa-superscript:before {\n  content: \"\\f12b\";\n}\n.fa-subscript:before {\n  content: \"\\f12c\";\n}\n.fa-eraser:before {\n  content: \"\\f12d\";\n}\n.fa-puzzle-piece:before {\n  content: \"\\f12e\";\n}\n.fa-microphone:before {\n  content: \"\\f130\";\n}\n.fa-microphone-slash:before {\n  content: \"\\f131\";\n}\n.fa-shield:before {\n  content: \"\\f132\";\n}\n.fa-calendar-o:before {\n  content: \"\\f133\";\n}\n.fa-fire-extinguisher:before {\n  content: \"\\f134\";\n}\n.fa-rocket:before {\n  content: \"\\f135\";\n}\n.fa-maxcdn:before {\n  content: \"\\f136\";\n}\n.fa-chevron-circle-left:before {\n  content: \"\\f137\";\n}\n.fa-chevron-circle-right:before {\n  content: \"\\f138\";\n}\n.fa-chevron-circle-up:before {\n  content: \"\\f139\";\n}\n.fa-chevron-circle-down:before {\n  content: \"\\f13a\";\n}\n.fa-html5:before {\n  content: \"\\f13b\";\n}\n.fa-css3:before {\n  content: \"\\f13c\";\n}\n.fa-anchor:before {\n  content: \"\\f13d\";\n}\n.fa-unlock-alt:before {\n  content: \"\\f13e\";\n}\n.fa-bullseye:before {\n  content: \"\\f140\";\n}\n.fa-ellipsis-h:before {\n  content: \"\\f141\";\n}\n.fa-ellipsis-v:before {\n  content: \"\\f142\";\n}\n.fa-rss-square:before {\n  content: \"\\f143\";\n}\n.fa-play-circle:before {\n  content: \"\\f144\";\n}\n.fa-ticket:before {\n  content: \"\\f145\";\n}\n.fa-minus-square:before {\n  content: \"\\f146\";\n}\n.fa-minus-square-o:before {\n  content: \"\\f147\";\n}\n.fa-level-up:before {\n  content: \"\\f148\";\n}\n.fa-level-down:before {\n  content: \"\\f149\";\n}\n.fa-check-square:before {\n  content: \"\\f14a\";\n}\n.fa-pencil-square:before {\n  content: \"\\f14b\";\n}\n.fa-external-link-square:before {\n  content: \"\\f14c\";\n}\n.fa-share-square:before {\n  content: \"\\f14d\";\n}\n.fa-compass:before {\n  content: \"\\f14e\";\n}\n.fa-toggle-down:before,\n.fa-caret-square-o-down:before {\n  content: \"\\f150\";\n}\n.fa-toggle-up:before,\n.fa-caret-square-o-up:before {\n  content: \"\\f151\";\n}\n.fa-toggle-right:before,\n.fa-caret-square-o-right:before {\n  content: \"\\f152\";\n}\n.fa-euro:before,\n.fa-eur:before {\n  content: \"\\f153\";\n}\n.fa-gbp:before {\n  content: \"\\f154\";\n}\n.fa-dollar:before,\n.fa-usd:before {\n  content: \"\\f155\";\n}\n.fa-rupee:before,\n.fa-inr:before {\n  content: \"\\f156\";\n}\n.fa-cny:before,\n.fa-rmb:before,\n.fa-yen:before,\n.fa-jpy:before {\n  content: \"\\f157\";\n}\n.fa-ruble:before,\n.fa-rouble:before,\n.fa-rub:before {\n  content: \"\\f158\";\n}\n.fa-won:before,\n.fa-krw:before {\n  content: \"\\f159\";\n}\n.fa-bitcoin:before,\n.fa-btc:before {\n  content: \"\\f15a\";\n}\n.fa-file:before {\n  content: \"\\f15b\";\n}\n.fa-file-text:before {\n  content: \"\\f15c\";\n}\n.fa-sort-alpha-asc:before {\n  content: \"\\f15d\";\n}\n.fa-sort-alpha-desc:before {\n  content: \"\\f15e\";\n}\n.fa-sort-amount-asc:before {\n  content: \"\\f160\";\n}\n.fa-sort-amount-desc:before {\n  content: \"\\f161\";\n}\n.fa-sort-numeric-asc:before {\n  content: \"\\f162\";\n}\n.fa-sort-numeric-desc:before {\n  content: \"\\f163\";\n}\n.fa-thumbs-up:before {\n  content: \"\\f164\";\n}\n.fa-thumbs-down:before {\n  content: \"\\f165\";\n}\n.fa-youtube-square:before {\n  content: \"\\f166\";\n}\n.fa-youtube:before {\n  content: \"\\f167\";\n}\n.fa-xing:before {\n  content: \"\\f168\";\n}\n.fa-xing-square:before {\n  content: \"\\f169\";\n}\n.fa-youtube-play:before {\n  content: \"\\f16a\";\n}\n.fa-dropbox:before {\n  content: \"\\f16b\";\n}\n.fa-stack-overflow:before {\n  content: \"\\f16c\";\n}\n.fa-instagram:before {\n  content: \"\\f16d\";\n}\n.fa-flickr:before {\n  content: \"\\f16e\";\n}\n.fa-adn:before {\n  content: \"\\f170\";\n}\n.fa-bitbucket:before {\n  content: \"\\f171\";\n}\n.fa-bitbucket-square:before {\n  content: \"\\f172\";\n}\n.fa-tumblr:before {\n  content: \"\\f173\";\n}\n.fa-tumblr-square:before {\n  content: \"\\f174\";\n}\n.fa-long-arrow-down:before {\n  content: \"\\f175\";\n}\n.fa-long-arrow-up:before {\n  content: \"\\f176\";\n}\n.fa-long-arrow-left:before {\n  content: \"\\f177\";\n}\n.fa-long-arrow-right:before {\n  content: \"\\f178\";\n}\n.fa-apple:before {\n  content: \"\\f179\";\n}\n.fa-windows:before {\n  content: \"\\f17a\";\n}\n.fa-android:before {\n  content: \"\\f17b\";\n}\n.fa-linux:before {\n  content: \"\\f17c\";\n}\n.fa-dribbble:before {\n  content: \"\\f17d\";\n}\n.fa-skype:before {\n  content: \"\\f17e\";\n}\n.fa-foursquare:before {\n  content: \"\\f180\";\n}\n.fa-trello:before {\n  content: \"\\f181\";\n}\n.fa-female:before {\n  content: \"\\f182\";\n}\n.fa-male:before {\n  content: \"\\f183\";\n}\n.fa-gittip:before,\n.fa-gratipay:before {\n  content: \"\\f184\";\n}\n.fa-sun-o:before {\n  content: \"\\f185\";\n}\n.fa-moon-o:before {\n  content: \"\\f186\";\n}\n.fa-archive:before {\n  content: \"\\f187\";\n}\n.fa-bug:before {\n  content: \"\\f188\";\n}\n.fa-vk:before {\n  content: \"\\f189\";\n}\n.fa-weibo:before {\n  content: \"\\f18a\";\n}\n.fa-renren:before {\n  content: \"\\f18b\";\n}\n.fa-pagelines:before {\n  content: \"\\f18c\";\n}\n.fa-stack-exchange:before {\n  content: \"\\f18d\";\n}\n.fa-arrow-circle-o-right:before {\n  content: \"\\f18e\";\n}\n.fa-arrow-circle-o-left:before {\n  content: \"\\f190\";\n}\n.fa-toggle-left:before,\n.fa-caret-square-o-left:before {\n  content: \"\\f191\";\n}\n.fa-dot-circle-o:before {\n  content: \"\\f192\";\n}\n.fa-wheelchair:before {\n  content: \"\\f193\";\n}\n.fa-vimeo-square:before {\n  content: \"\\f194\";\n}\n.fa-turkish-lira:before,\n.fa-try:before {\n  content: \"\\f195\";\n}\n.fa-plus-square-o:before {\n  content: \"\\f196\";\n}\n.fa-space-shuttle:before {\n  content: \"\\f197\";\n}\n.fa-slack:before {\n  content: \"\\f198\";\n}\n.fa-envelope-square:before {\n  content: \"\\f199\";\n}\n.fa-wordpress:before {\n  content: \"\\f19a\";\n}\n.fa-openid:before {\n  content: \"\\f19b\";\n}\n.fa-institution:before,\n.fa-bank:before,\n.fa-university:before {\n  content: \"\\f19c\";\n}\n.fa-mortar-board:before,\n.fa-graduation-cap:before {\n  content: \"\\f19d\";\n}\n.fa-yahoo:before {\n  content: \"\\f19e\";\n}\n.fa-google:before {\n  content: \"\\f1a0\";\n}\n.fa-reddit:before {\n  content: \"\\f1a1\";\n}\n.fa-reddit-square:before {\n  content: \"\\f1a2\";\n}\n.fa-stumbleupon-circle:before {\n  content: \"\\f1a3\";\n}\n.fa-stumbleupon:before {\n  content: \"\\f1a4\";\n}\n.fa-delicious:before {\n  content: \"\\f1a5\";\n}\n.fa-digg:before {\n  content: \"\\f1a6\";\n}\n.fa-pied-piper:before {\n  content: \"\\f1a7\";\n}\n.fa-pied-piper-alt:before {\n  content: \"\\f1a8\";\n}\n.fa-drupal:before {\n  content: \"\\f1a9\";\n}\n.fa-joomla:before {\n  content: \"\\f1aa\";\n}\n.fa-language:before {\n  content: \"\\f1ab\";\n}\n.fa-fax:before {\n  content: \"\\f1ac\";\n}\n.fa-building:before {\n  content: \"\\f1ad\";\n}\n.fa-child:before {\n  content: \"\\f1ae\";\n}\n.fa-paw:before {\n  content: \"\\f1b0\";\n}\n.fa-spoon:before {\n  content: \"\\f1b1\";\n}\n.fa-cube:before {\n  content: \"\\f1b2\";\n}\n.fa-cubes:before {\n  content: \"\\f1b3\";\n}\n.fa-behance:before {\n  content: \"\\f1b4\";\n}\n.fa-behance-square:before {\n  content: \"\\f1b5\";\n}\n.fa-steam:before {\n  content: \"\\f1b6\";\n}\n.fa-steam-square:before {\n  content: \"\\f1b7\";\n}\n.fa-recycle:before {\n  content: \"\\f1b8\";\n}\n.fa-automobile:before,\n.fa-car:before {\n  content: \"\\f1b9\";\n}\n.fa-cab:before,\n.fa-taxi:before {\n  content: \"\\f1ba\";\n}\n.fa-tree:before {\n  content: \"\\f1bb\";\n}\n.fa-spotify:before {\n  content: \"\\f1bc\";\n}\n.fa-deviantart:before {\n  content: \"\\f1bd\";\n}\n.fa-soundcloud:before {\n  content: \"\\f1be\";\n}\n.fa-database:before {\n  content: \"\\f1c0\";\n}\n.fa-file-pdf-o:before {\n  content: \"\\f1c1\";\n}\n.fa-file-word-o:before {\n  content: \"\\f1c2\";\n}\n.fa-file-excel-o:before {\n  content: \"\\f1c3\";\n}\n.fa-file-powerpoint-o:before {\n  content: \"\\f1c4\";\n}\n.fa-file-photo-o:before,\n.fa-file-picture-o:before,\n.fa-file-image-o:before {\n  content: \"\\f1c5\";\n}\n.fa-file-zip-o:before,\n.fa-file-archive-o:before {\n  content: \"\\f1c6\";\n}\n.fa-file-sound-o:before,\n.fa-file-audio-o:before {\n  content: \"\\f1c7\";\n}\n.fa-file-movie-o:before,\n.fa-file-video-o:before {\n  content: \"\\f1c8\";\n}\n.fa-file-code-o:before {\n  content: \"\\f1c9\";\n}\n.fa-vine:before {\n  content: \"\\f1ca\";\n}\n.fa-codepen:before {\n  content: \"\\f1cb\";\n}\n.fa-jsfiddle:before {\n  content: \"\\f1cc\";\n}\n.fa-life-bouy:before,\n.fa-life-buoy:before,\n.fa-life-saver:before,\n.fa-support:before,\n.fa-life-ring:before {\n  content: \"\\f1cd\";\n}\n.fa-circle-o-notch:before {\n  content: \"\\f1ce\";\n}\n.fa-ra:before,\n.fa-rebel:before {\n  content: \"\\f1d0\";\n}\n.fa-ge:before,\n.fa-empire:before {\n  content: \"\\f1d1\";\n}\n.fa-git-square:before {\n  content: \"\\f1d2\";\n}\n.fa-git:before {\n  content: \"\\f1d3\";\n}\n.fa-hacker-news:before {\n  content: \"\\f1d4\";\n}\n.fa-tencent-weibo:before {\n  content: \"\\f1d5\";\n}\n.fa-qq:before {\n  content: \"\\f1d6\";\n}\n.fa-wechat:before,\n.fa-weixin:before {\n  content: \"\\f1d7\";\n}\n.fa-send:before,\n.fa-paper-plane:before {\n  content: \"\\f1d8\";\n}\n.fa-send-o:before,\n.fa-paper-plane-o:before {\n  content: \"\\f1d9\";\n}\n.fa-history:before {\n  content: \"\\f1da\";\n}\n.fa-genderless:before,\n.fa-circle-thin:before {\n  content: \"\\f1db\";\n}\n.fa-header:before {\n  content: \"\\f1dc\";\n}\n.fa-paragraph:before {\n  content: \"\\f1dd\";\n}\n.fa-sliders:before {\n  content: \"\\f1de\";\n}\n.fa-share-alt:before {\n  content: \"\\f1e0\";\n}\n.fa-share-alt-square:before {\n  content: \"\\f1e1\";\n}\n.fa-bomb:before {\n  content: \"\\f1e2\";\n}\n.fa-soccer-ball-o:before,\n.fa-futbol-o:before {\n  content: \"\\f1e3\";\n}\n.fa-tty:before {\n  content: \"\\f1e4\";\n}\n.fa-binoculars:before {\n  content: \"\\f1e5\";\n}\n.fa-plug:before {\n  content: \"\\f1e6\";\n}\n.fa-slideshare:before {\n  content: \"\\f1e7\";\n}\n.fa-twitch:before {\n  content: \"\\f1e8\";\n}\n.fa-yelp:before {\n  content: \"\\f1e9\";\n}\n.fa-newspaper-o:before {\n  content: \"\\f1ea\";\n}\n.fa-wifi:before {\n  content: \"\\f1eb\";\n}\n.fa-calculator:before {\n  content: \"\\f1ec\";\n}\n.fa-paypal:before {\n  content: \"\\f1ed\";\n}\n.fa-google-wallet:before {\n  content: \"\\f1ee\";\n}\n.fa-cc-visa:before {\n  content: \"\\f1f0\";\n}\n.fa-cc-mastercard:before {\n  content: \"\\f1f1\";\n}\n.fa-cc-discover:before {\n  content: \"\\f1f2\";\n}\n.fa-cc-amex:before {\n  content: \"\\f1f3\";\n}\n.fa-cc-paypal:before {\n  content: \"\\f1f4\";\n}\n.fa-cc-stripe:before {\n  content: \"\\f1f5\";\n}\n.fa-bell-slash:before {\n  content: \"\\f1f6\";\n}\n.fa-bell-slash-o:before {\n  content: \"\\f1f7\";\n}\n.fa-trash:before {\n  content: \"\\f1f8\";\n}\n.fa-copyright:before {\n  content: \"\\f1f9\";\n}\n.fa-at:before {\n  content: \"\\f1fa\";\n}\n.fa-eyedropper:before {\n  content: \"\\f1fb\";\n}\n.fa-paint-brush:before {\n  content: \"\\f1fc\";\n}\n.fa-birthday-cake:before {\n  content: \"\\f1fd\";\n}\n.fa-area-chart:before {\n  content: \"\\f1fe\";\n}\n.fa-pie-chart:before {\n  content: \"\\f200\";\n}\n.fa-line-chart:before {\n  content: \"\\f201\";\n}\n.fa-lastfm:before {\n  content: \"\\f202\";\n}\n.fa-lastfm-square:before {\n  content: \"\\f203\";\n}\n.fa-toggle-off:before {\n  content: \"\\f204\";\n}\n.fa-toggle-on:before {\n  content: \"\\f205\";\n}\n.fa-bicycle:before {\n  content: \"\\f206\";\n}\n.fa-bus:before {\n  content: \"\\f207\";\n}\n.fa-ioxhost:before {\n  content: \"\\f208\";\n}\n.fa-angellist:before {\n  content: \"\\f209\";\n}\n.fa-cc:before {\n  content: \"\\f20a\";\n}\n.fa-shekel:before,\n.fa-sheqel:before,\n.fa-ils:before {\n  content: \"\\f20b\";\n}\n.fa-meanpath:before {\n  content: \"\\f20c\";\n}\n.fa-buysellads:before {\n  content: \"\\f20d\";\n}\n.fa-connectdevelop:before {\n  content: \"\\f20e\";\n}\n.fa-dashcube:before {\n  content: \"\\f210\";\n}\n.fa-forumbee:before {\n  content: \"\\f211\";\n}\n.fa-leanpub:before {\n  content: \"\\f212\";\n}\n.fa-sellsy:before {\n  content: \"\\f213\";\n}\n.fa-shirtsinbulk:before {\n  content: \"\\f214\";\n}\n.fa-simplybuilt:before {\n  content: \"\\f215\";\n}\n.fa-skyatlas:before {\n  content: \"\\f216\";\n}\n.fa-cart-plus:before {\n  content: \"\\f217\";\n}\n.fa-cart-arrow-down:before {\n  content: \"\\f218\";\n}\n.fa-diamond:before {\n  content: \"\\f219\";\n}\n.fa-ship:before {\n  content: \"\\f21a\";\n}\n.fa-user-secret:before {\n  content: \"\\f21b\";\n}\n.fa-motorcycle:before {\n  content: \"\\f21c\";\n}\n.fa-street-view:before {\n  content: \"\\f21d\";\n}\n.fa-heartbeat:before {\n  content: \"\\f21e\";\n}\n.fa-venus:before {\n  content: \"\\f221\";\n}\n.fa-mars:before {\n  content: \"\\f222\";\n}\n.fa-mercury:before {\n  content: \"\\f223\";\n}\n.fa-transgender:before {\n  content: \"\\f224\";\n}\n.fa-transgender-alt:before {\n  content: \"\\f225\";\n}\n.fa-venus-double:before {\n  content: \"\\f226\";\n}\n.fa-mars-double:before {\n  content: \"\\f227\";\n}\n.fa-venus-mars:before {\n  content: \"\\f228\";\n}\n.fa-mars-stroke:before {\n  content: \"\\f229\";\n}\n.fa-mars-stroke-v:before {\n  content: \"\\f22a\";\n}\n.fa-mars-stroke-h:before {\n  content: \"\\f22b\";\n}\n.fa-neuter:before {\n  content: \"\\f22c\";\n}\n.fa-facebook-official:before {\n  content: \"\\f230\";\n}\n.fa-pinterest-p:before {\n  content: \"\\f231\";\n}\n.fa-whatsapp:before {\n  content: \"\\f232\";\n}\n.fa-server:before {\n  content: \"\\f233\";\n}\n.fa-user-plus:before {\n  content: \"\\f234\";\n}\n.fa-user-times:before {\n  content: \"\\f235\";\n}\n.fa-hotel:before,\n.fa-bed:before {\n  content: \"\\f236\";\n}\n.fa-viacoin:before {\n  content: \"\\f237\";\n}\n.fa-train:before {\n  content: \"\\f238\";\n}\n.fa-subway:before {\n  content: \"\\f239\";\n}\n.fa-medium:before {\n  content: \"\\f23a\";\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/github-markdown.scss",
    "content": "@charset \"UTF-8\";\n\n/*! github-markdown-css | The MIT License (MIT) | Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) | https://github.com/sindresorhus/github-markdown-css */\n@font-face {\n  font-family: octicons-anchor;\n  src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAYcAA0AAAAACjQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABwAAAAca8vGTk9TLzIAAAFMAAAARAAAAFZG1VHVY21hcAAAAZAAAAA+AAABQgAP9AdjdnQgAAAB0AAAAAQAAAAEACICiGdhc3AAAAHUAAAACAAAAAj//wADZ2x5ZgAAAdwAAADRAAABEKyikaNoZWFkAAACsAAAAC0AAAA2AtXoA2hoZWEAAALgAAAAHAAAACQHngNFaG10eAAAAvwAAAAQAAAAEAwAACJsb2NhAAADDAAAAAoAAAAKALIAVG1heHAAAAMYAAAAHwAAACABEAB2bmFtZQAAAzgAAALBAAAFu3I9x/Nwb3N0AAAF/AAAAB0AAAAvaoFvbwAAAAEAAAAAzBdyYwAAAADP2IQvAAAAAM/bz7t4nGNgZGFgnMDAysDB1Ml0hoGBoR9CM75mMGLkYGBgYmBlZsAKAtJcUxgcPsR8iGF2+O/AEMPsznAYKMwIkgMA5REMOXicY2BgYGaAYBkGRgYQsAHyGMF8FgYFIM0ChED+h5j//yEk/3KoSgZGNgYYk4GRCUgwMaACRoZhDwCs7QgGAAAAIgKIAAAAAf//AAJ4nHWMMQrCQBBF/0zWrCCIKUQsTDCL2EXMohYGSSmorScInsRGL2DOYJe0Ntp7BK+gJ1BxF1stZvjz/v8DRghQzEc4kIgKwiAppcA9LtzKLSkdNhKFY3HF4lK69ExKslx7Xa+vPRVS43G98vG1DnkDMIBUgFN0MDXflU8tbaZOUkXUH0+U27RoRpOIyCKjbMCVejwypzJJG4jIwb43rfl6wbwanocrJm9XFYfskuVC5K/TPyczNU7b84CXcbxks1Un6H6tLH9vf2LRnn8Ax7A5WQAAAHicY2BkYGAA4teL1+yI57f5ysDNwgAC529f0kOmWRiYVgEpDgYmEA8AUzEKsQAAAHicY2BkYGB2+O/AEMPCAAJAkpEBFbAAADgKAe0EAAAiAAAAAAQAAAAEAAAAAAAAKgAqACoAiAAAeJxjYGRgYGBhsGFgYgABEMkFhAwM/xn0QAIAD6YBhwB4nI1Ty07cMBS9QwKlQapQW3VXySvEqDCZGbGaHULiIQ1FKgjWMxknMfLEke2A+IJu+wntrt/QbVf9gG75jK577Lg8K1qQPCfnnnt8fX1NRC/pmjrk/zprC+8D7tBy9DHgBXoWfQ44Av8t4Bj4Z8CLtBL9CniJluPXASf0Lm4CXqFX8Q84dOLnMB17N4c7tBo1AS/Qi+hTwBH4rwHHwN8DXqQ30XXAS7QaLwSc0Gn8NuAVWou/gFmnjLrEaEh9GmDdDGgL3B4JsrRPDU2hTOiMSuJUIdKQQayiAth69r6akSSFqIJuA19TrzCIaY8sIoxyrNIrL//pw7A2iMygkX5vDj+G+kuoLdX4GlGK/8Lnlz6/h9MpmoO9rafrz7ILXEHHaAx95s9lsI7AHNMBWEZHULnfAXwG9/ZqdzLI08iuwRloXE8kfhXYAvE23+23DU3t626rbs8/8adv+9DWknsHp3E17oCf+Z48rvEQNZ78paYM38qfk3v/u3l3u3GXN2Dmvmvpf1Srwk3pB/VSsp512bA/GG5i2WJ7wu430yQ5K3nFGiOqgtmSB5pJVSizwaacmUZzZhXLlZTq8qGGFY2YcSkqbth6aW1tRmlaCFs2016m5qn36SbJrqosG4uMV4aP2PHBmB3tjtmgN2izkGQyLWprekbIntJFing32a5rKWCN/SdSoga45EJykyQ7asZvHQ8PTm6cslIpwyeyjbVltNikc2HTR7YKh9LBl9DADC0U/jLcBZDKrMhUBfQBvXRzLtFtjU9eNHKin0x5InTqb8lNpfKv1s1xHzTXRqgKzek/mb7nB8RZTCDhGEX3kK/8Q75AmUM/eLkfA+0Hi908Kx4eNsMgudg5GLdRD7a84npi+YxNr5i5KIbW5izXas7cHXIMAau1OueZhfj+cOcP3P8MNIWLyYOBuxL6DRylJ4cAAAB4nGNgYoAALjDJyIAOWMCiTIxMLDmZedkABtIBygAAAA==) format('woff');\n}\n\n.markdown-body {\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n  color: #333;\n  overflow: hidden;\n  //font-family: \"Helvetica Neue\", Helvetica, \"Segoe UI\", Arial, freesans, sans-serif;\n  font-family: \"Microsoft YaHei\", Helvetica, \"Meiryo UI\", \"Malgun Gothic\", \"Segoe UI\", \"Trebuchet MS\", \"Monaco\", monospace, Tahoma, STXihei, \"华文细黑\", STHeiti, \"Helvetica Neue\", \"Droid Sans\", \"wenquanyi micro hei\", FreeSans, Arimo, Arial, SimSun, \"宋体\", Heiti, \"黑体\", sans-serif;\n  font-size: 16px;\n  line-height: 1.6;\n  word-wrap: break-word;\n}\n\n.markdown-body a {\n  background: transparent;\n}\n\n.markdown-body a:active,\n.markdown-body a:hover {\n  outline: 0;\n}\n\n.markdown-body strong {\n  font-weight: bold;\n}\n\n.markdown-body h1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n.markdown-body img {\n  border: 0;\n}\n\n.markdown-body hr {\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\n\n.markdown-body pre {\n  overflow: auto;\n}\n\n.markdown-body code,\n.markdown-body kbd,\n.markdown-body pre {\n  font-family: \"Meiryo UI\", \"YaHei Consolas Hybrid\", Consolas, \"Malgun Gothic\", \"Segoe UI\", \"Trebuchet MS\", Helvetica, monospace, monospace;\n  font-size: 1em;\n}\n\n.markdown-body input {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\n\n.markdown-body html input[disabled] {\n  cursor: default;\n}\n\n.markdown-body input {\n  line-height: normal;\n}\n\n.markdown-body input[type=\"checkbox\"] {\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n  padding: 0;\n}\n\n.markdown-body table {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\n.markdown-body td,\n.markdown-body th {\n  padding: 0;\n}\n\n.markdown-body * {\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n\n.markdown-body input {\n  font: 13px/1.4 Helvetica, arial, freesans, clean, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n}\n\n.markdown-body a {\n  color: #4183c4;\n  text-decoration: none;\n}\n\n.markdown-body a:hover,\n.markdown-body a:active {\n  text-decoration: underline;\n}\n\n.markdown-body hr {\n  height: 0;\n  margin: 15px 0;\n  overflow: hidden;\n  background: transparent;\n  border: 0;\n  border-bottom: 1px solid #ddd;\n}\n\n.markdown-body hr:before {\n  display: table;\n  content: \"\";\n}\n\n.markdown-body hr:after {\n  display: table;\n  clear: both;\n  content: \"\";\n}\n\n.markdown-body h1,\n.markdown-body h2,\n.markdown-body h3,\n.markdown-body h4,\n.markdown-body h5,\n.markdown-body h6 {\n  margin-top: 15px;\n  margin-bottom: 15px;\n  line-height: 1.1;\n}\n\n.markdown-body h1 {\n  font-size: 30px;\n}\n\n.markdown-body h2 {\n  font-size: 21px;\n}\n\n.markdown-body h3 {\n  font-size: 16px;\n}\n\n.markdown-body h4 {\n  font-size: 14px;\n}\n\n.markdown-body h5 {\n  font-size: 12px;\n}\n\n.markdown-body h6 {\n  font-size: 11px;\n}\n\n.markdown-body blockquote {\n  margin: 0;\n}\n\n.markdown-body ul,\n.markdown-body ol {\n  padding: 0;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n.markdown-body ol ol,\n.markdown-body ul ol {\n  list-style-type: lower-roman;\n}\n\n.markdown-body ul ul ol,\n.markdown-body ul ol ol,\n.markdown-body ol ul ol,\n.markdown-body ol ol ol {\n  list-style-type: lower-alpha;\n}\n\n.markdown-body dd {\n  margin-left: 0;\n}\n\n.markdown-body code {\n  font-family: Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n  font-size: 12px;\n}\n\n.markdown-body pre {\n  margin-top: 0;\n  margin-bottom: 0;\n  font: 12px Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n}\n\n.markdown-body .octicon {\n  font: normal normal 16px octicons-anchor;\n  line-height: 1;\n  display: inline-block;\n  text-decoration: none;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n\n.markdown-body .octicon-link:before {\n  content: '\\f05c';\n}\n\n.markdown-body>*:first-child {\n  margin-top: 0 !important;\n}\n\n.markdown-body>*:last-child {\n  margin-bottom: 0 !important;\n}\n\n.markdown-body .anchor {\n  position: absolute;\n  top: 0;\n  left: 0;\n  display: block;\n  padding-right: 6px;\n  padding-left: 30px;\n  margin-left: -30px;\n}\n\n.markdown-body .anchor:focus {\n  outline: none;\n}\n\n.markdown-body h1,\n.markdown-body h2,\n.markdown-body h3,\n.markdown-body h4,\n.markdown-body h5,\n.markdown-body h6 {\n  position: relative;\n  margin-top: 1em;\n  margin-bottom: 16px;\n  font-weight: bold;\n  line-height: 1.4;\n}\n\n.markdown-body h1 .octicon-link,\n.markdown-body h2 .octicon-link,\n.markdown-body h3 .octicon-link,\n.markdown-body h4 .octicon-link,\n.markdown-body h5 .octicon-link,\n.markdown-body h6 .octicon-link {\n  display: none;\n  color: #000;\n  vertical-align: middle;\n}\n\n.markdown-body h1:hover .anchor,\n.markdown-body h2:hover .anchor,\n.markdown-body h3:hover .anchor,\n.markdown-body h4:hover .anchor,\n.markdown-body h5:hover .anchor,\n.markdown-body h6:hover .anchor {\n  padding-left: 8px;\n  margin-left: -30px;\n  text-decoration: none;\n}\n\n.markdown-body h1:hover .anchor .octicon-link,\n.markdown-body h2:hover .anchor .octicon-link,\n.markdown-body h3:hover .anchor .octicon-link,\n.markdown-body h4:hover .anchor .octicon-link,\n.markdown-body h5:hover .anchor .octicon-link,\n.markdown-body h6:hover .anchor .octicon-link {\n  display: inline-block;\n}\n\n.markdown-body h1 {\n  padding-bottom: 0.3em;\n  font-size: 2.25em;\n  line-height: 1.2;\n  border-bottom: 1px solid #eee;\n}\n\n.markdown-body h1 .anchor {\n  line-height: 1;\n}\n\n.markdown-body h2 {\n  padding-bottom: 0.3em;\n  font-size: 1.75em;\n  line-height: 1.225;\n  border-bottom: 1px solid #eee;\n}\n\n.markdown-body h2 .anchor {\n  line-height: 1;\n}\n\n.markdown-body h3 {\n  font-size: 1.5em;\n  line-height: 1.43;\n}\n\n.markdown-body h3 .anchor {\n  line-height: 1.2;\n}\n\n.markdown-body h4 {\n  font-size: 1.25em;\n}\n\n.markdown-body h4 .anchor {\n  line-height: 1.2;\n}\n\n.markdown-body h5 {\n  font-size: 1em;\n}\n\n.markdown-body h5 .anchor {\n  line-height: 1.1;\n}\n\n.markdown-body h6 {\n  font-size: 1em;\n  color: #777;\n}\n\n.markdown-body h6 .anchor {\n  line-height: 1.1;\n}\n\n.markdown-body p,\n.markdown-body blockquote,\n.markdown-body ul,\n.markdown-body ol,\n.markdown-body dl,\n.markdown-body table,\n.markdown-body pre {\n  margin-top: 0;\n  margin-bottom: 16px;\n}\n/*\n.markdown-body hr {\n  height: 4px;\n  padding: 0;\n  margin: 16px 0;\n  background-color: #e7e7e7;\n  border: 0 none;\n}*/\n\n.markdown-body ul,\n.markdown-body ol {\n  padding-left: 2em;\n}\n\n.markdown-body ul ul,\n.markdown-body ul ol,\n.markdown-body ol ol,\n.markdown-body ol ul {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\n.markdown-body li>p {\n  margin-top: 16px;\n}\n\n.markdown-body dl {\n  padding: 0;\n}\n\n.markdown-body dl dt {\n  padding: 0;\n  margin-top: 16px;\n  font-size: 1em;\n  font-style: italic;\n  font-weight: bold;\n}\n\n.markdown-body dl dd {\n  padding: 0 16px;\n  margin-bottom: 16px;\n}\n\n.markdown-body blockquote {\n  padding: 0 15px;\n  color: #777;\n  border-left: 4px solid #ddd;\n}\n\n.markdown-body blockquote>:first-child {\n  margin-top: 0;\n}\n\n.markdown-body blockquote>:last-child {\n  margin-bottom: 0;\n}\n\n.markdown-body table {\n  display: block;\n  width: 100%;\n  overflow: auto;\n  word-break: normal;\n  word-break: keep-all;\n}\n\n.markdown-body table th {\n  font-weight: bold;\n}\n\n.markdown-body table th,\n.markdown-body table td {\n  padding: 6px 13px;\n  border: 1px solid #ddd;\n}\n\n.markdown-body table tr {\n  background-color: #fff;\n  border-top: 1px solid #ccc;\n}\n\n.markdown-body table tr:nth-child(2n) {\n  background-color: #f8f8f8;\n}\n\n.markdown-body img {\n  max-width: 100%;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n\n.markdown-body code {\n  padding: 0;\n  padding-top: 0.2em;\n  padding-bottom: 0.2em;\n  margin: 0;\n  font-size: 85%;\n  background-color: rgba(0,0,0,0.04);\n  border-radius: 3px;\n}\n\n.markdown-body code:before,\n.markdown-body code:after {\n  letter-spacing: -0.2em;\n  content: \"\\00a0\";\n}\n\n.markdown-body pre>code {\n  padding: 0;\n  margin: 0;\n  font-size: 100%;\n  word-break: normal;\n  white-space: pre;\n  background: transparent;\n  border: 0;\n}\n\n.markdown-body .highlight {\n  margin-bottom: 16px;\n}\n\n.markdown-body .highlight pre,\n.markdown-body pre {\n  padding: 16px;\n  overflow: auto;\n  font-size: 85%;\n  line-height: 1.45;\n  background-color: #f7f7f7;\n  border-radius: 3px;\n}\n\n.markdown-body .highlight pre {\n  margin-bottom: 0;\n  word-break: normal;\n}\n\n.markdown-body pre {\n  word-wrap: normal;\n}\n\n.markdown-body pre code {\n  display: inline;\n  max-width: initial;\n  padding: 0;\n  margin: 0;\n  overflow: initial;\n  line-height: inherit;\n  word-wrap: normal;\n  background-color: transparent;\n  border: 0;\n}\n\n.markdown-body pre code:before,\n.markdown-body pre code:after {\n  content: normal;\n}\n\n.markdown-body kbd {\n  display: inline-block;\n  padding: 3px 5px;\n  font-size: 11px;\n  line-height: 10px;\n  color: #555;\n  vertical-align: middle;\n  background-color: #fcfcfc;\n  border: solid 1px #ccc;\n  border-bottom-color: #bbb;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 #bbb;\n}\n\n.markdown-body .pl-c {\n  color: #969896;\n}\n\n.markdown-body .pl-c1,\n.markdown-body .pl-mdh,\n.markdown-body .pl-mm,\n.markdown-body .pl-mp,\n.markdown-body .pl-mr,\n.markdown-body .pl-s1 .pl-v,\n.markdown-body .pl-s3,\n.markdown-body .pl-sc,\n.markdown-body .pl-sv {\n  color: #0086b3;\n}\n\n.markdown-body .pl-e,\n.markdown-body .pl-en {\n  color: #795da3;\n}\n\n.markdown-body .pl-s1 .pl-s2,\n.markdown-body .pl-smi,\n.markdown-body .pl-smp,\n.markdown-body .pl-stj,\n.markdown-body .pl-vo,\n.markdown-body .pl-vpf {\n  color: #333;\n}\n\n.markdown-body .pl-ent {\n  color: #63a35c;\n}\n\n.markdown-body .pl-k,\n.markdown-body .pl-s,\n.markdown-body .pl-st {\n  color: #a71d5d;\n}\n\n.markdown-body .pl-pds,\n.markdown-body .pl-s1,\n.markdown-body .pl-s1 .pl-pse .pl-s2,\n.markdown-body .pl-sr,\n.markdown-body .pl-sr .pl-cce,\n.markdown-body .pl-sr .pl-sra,\n.markdown-body .pl-sr .pl-sre,\n.markdown-body .pl-src {\n  color: #df5000;\n}\n\n.markdown-body .pl-mo,\n.markdown-body .pl-v {\n  color: #1d3e81;\n}\n\n.markdown-body .pl-id {\n  color: #b52a1d;\n}\n\n.markdown-body .pl-ii {\n  background-color: #b52a1d;\n  color: #f8f8f8;\n}\n\n.markdown-body .pl-sr .pl-cce {\n  color: #63a35c;\n  font-weight: bold;\n}\n\n.markdown-body .pl-ml {\n  color: #693a17;\n}\n\n.markdown-body .pl-mh,\n.markdown-body .pl-mh .pl-en,\n.markdown-body .pl-ms {\n  color: #1d3e81;\n  font-weight: bold;\n}\n\n.markdown-body .pl-mq {\n  color: #008080;\n}\n\n.markdown-body .pl-mi {\n  color: #333;\n  font-style: italic;\n}\n\n.markdown-body .pl-mb {\n  color: #333;\n  font-weight: bold;\n}\n\n.markdown-body .pl-md,\n.markdown-body .pl-mdhf {\n  background-color: #ffecec;\n  color: #bd2c00;\n}\n\n.markdown-body .pl-mdht,\n.markdown-body .pl-mi1 {\n  background-color: #eaffea;\n  color: #55a532;\n}\n\n.markdown-body .pl-mdr {\n  color: #795da3;\n  font-weight: bold;\n}\n\n.markdown-body kbd {\n  display: inline-block;\n  padding: 3px 5px;\n  font: 11px Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n  line-height: 10px;\n  color: #555;\n  vertical-align: middle;\n  background-color: #fcfcfc;\n  border: solid 1px #ccc;\n  border-bottom-color: #bbb;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 #bbb;\n}\n\n.markdown-body .task-list-item {\n  list-style-type: none;\n}\n\n.markdown-body .task-list-item+.task-list-item {\n  margin-top: 3px;\n}\n\n.markdown-body .task-list-item input {\n  float: left;\n  margin: 0.3em 0 0.25em -1.6em;\n  vertical-align: middle;\n}\n\n.markdown-body :checked+.radio-label {\n  z-index: 1;\n  position: relative;\n  border-color: #4183c4;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/lib/prefixes.scss",
    "content": "@charset \"UTF-8\";\n\n/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */\n\n// appearance\n\n@mixin appearance($value) {\n    -webkit-appearance: $value;\n       -moz-appearance: $value;\n        -ms-appearance: $value;\n            appearance: $value;\n}\n\n// clearfix\n\n@mixin clearfix() { \n    &:before, &:after {\n        content: \" \";\n        display: table;\n    } \n    \n    &:after {\n        clear: both;\n    }\n}\n\n// viewport\n\n@mixin viewport-device-width() {\n    width: device-width;\n    user-zoom: fixed;\n}\n\n@mixin viewport() {\n    @-webkit-viewport { \n        @include viewport-device-width();\n    }\n    @-moz-viewport { \n        @include viewport-device-width();\n    }\n    \n    @-ms-viewport { \n        @include viewport-device-width();\n    }\n    \n    @-o-viewport { \n        @include viewport-device-width();\n    }\n    \n    @viewport { \n        @include viewport-device-width();\n    }\n}\n\n// Transform\n\n@mixin transform($transform) {\n    -webkit-transform: $transform;  /* Safari, Chrome */\n       -moz-transform: $transform;  /* Firefox 3.5~16.0 */\n        -ms-transform: $transform;  /* IE9~10 */\n         -o-transform: $transform;  /* Opera 10.5~12.10 */\n            transform: $transform;\n}\n\n@mixin transform-origin($origin) {\n    -webkit-transform-origin: $origin;\n       -moz-transform-origin: $origin;  /* Firefox 3.5~16.0 */\n        -ms-transform-origin: $origin;  /* IE9~10 */\n         -o-transform-origin: $origin;  /* Opera 10.5~12.10 */\n            transform-origin: $origin;\n}\n\n@mixin transform-origin-x($origin) {\n    -webkit-transform-origin-x: $origin; /* Blink, Webkit */\n            transform-origin-x: $origin; /* IE11+ */\n}\n\n@mixin transform-origin-y($origin) {\n    -webkit-transform-origin-y: $origin; /* Blink, Webkit */\n            transform-origin-y: $origin; /* IE11+ */\n}\n\n@mixin transform-origin-z($origin) {\n    -webkit-transform-origin-z: $origin; /* Blink, Webkit */\n            transform-origin-z: $origin; /* IE11+ */\n}\n\n@mixin transform-style($style) {\n    -webkit-transform-style: $style;\n       -moz-transform-style: $style;  /* Firefox 10~16.0 */\n        -ms-transform-style: $style;  /* IE9~10 */\n            transform-style: $style;  /* Firefox, Blink, IE11+ */\n}\n\n// perspective\n\n@mixin perspective($value) {\n    -webkit-perspective: $value;          /* Safari, Chrome */\n            perspective: $value;          /* None yet / Non-standard */\n}\n\n@mixin perspective-origin($value) {\n    -webkit-perspective-origin: $value;   /* Safari, Chrome 12+ */\n       -moz-perspective-origin: $value;   /* Firefox 10~16 */\n            perspective-origin: $value;   /* Opera 15+, IE10+ */\n}\n\n@mixin perspective-origin-x($value) {\n    -webkit-perspective-origin-x: $value;   /* Safari, Chrome 12+ */\n            perspective-origin-x: $value;   /* IE10+ */\n}\n\n@mixin perspective-origin-y($value) {\n    -webkit-perspective-origin-y: $value;   /* Safari, Chrome 12+ */\n            perspective-origin-y: $value;   /* IE10+ */\n}\n\n@mixin backface-visibility($value : hidden) {\n    -webkit-backface-visibility: $value;  /* Chrome, Safari, Opera 15+ */\n       -moz-backface-visibility: $value;  /* Firefox */\n        -ms-backface-visibility: $value;  /* IE10 */\n            backface-visibility: $value;\n}\n\n// Transitions IE10+\n\n@mixin transition($transition...) {\n    -webkit-transition: $transition;  /* Safari, Chrome */\n       -moz-transition: $transition;  /* Firefox 4.0~16.0 */\n            transition: $transition;  /* IE >9, FF >15, Opera >12.0 */\n}\n\n@mixin transition-property($property) {\n    -webkit-transition-property: $property;\n       -moz-transition-property: $property;  /* Firefox 4.0~16.0 */\n            transition-property: $property;\n}\n\n@mixin transition-duration($duration) {\n    -webkit-transition-duration: $duration;\n       -moz-transition-duration: $duration;  /* Firefox 4.0~16.0 */\n            transition-duration: $duration;\n}\n\n@mixin transition-timing-function($easing) {\n    -webkit-transition-timing-function: $easing;\n       -moz-transition-timing-function: $easing;  /* Firefox 4.0~16.0 */\n            transition-timing-function: $easing;\n}\n\n@mixin transition-delay($delay) {\n    -webkit-transition-delay: $delay;\n       -moz-transition-delay: $delay;  /* Firefox 4.0~16.0 */\n            transition-delay: $delay;\n}\n\n// Flex align\n\n@mixin align-content($value) {\n    -webkit-align-content: $value;  /* Chrome 21.0+, Safari Not supported. */\n            align-content: $value;  /* Firefox 28+, Opera 12.10, IE Not supported. */\n}\n\n@mixin align-items($value) {\n    -webkit-align-items: $value; /* Safari 7.0+, Chrome 21.0+ */\n            align-items: $value; /* Firefox 20.0+, IE11+, Opera 12.10 */\n}\n\n@mixin align-self($value) {\n    -webkit-align-self: $value; /* Chrome 21~36, Safari Not supported. */\n            align-self: $value; /* Firefox 28+, Opera 12.10, IE Not supported. */\n}\n\n// Animations IE10+\n\n@mixin keyframes($name) {\n    @-webkit-keyframes #{$name} {\n        @content;\n    } \n    \n    @-moz-keyframes #{$name} {\n        @content;\n    } \n    \n    @keyframes #{$name} {\n        @content;\n    }\n}\n\n@mixin animation($animation...) {\n    -webkit-animation: $animation;\n       -moz-animation: $animation;  /* Firefox 5.0~16.0 */\n            animation: $animation;  /* IE10+ */\n}\n\n@mixin animation-name($name) {\n    -webkit-animation-name: $name;\n       -moz-animation-name: $name; /* Firefox 5.0~16.0 */\n            animation-name: $name;\n}\n\n@mixin animation-duration($time : 1s) {\n    -webkit-animation-duration: $time;\n       -moz-animation-duration: $time; /* Firefox 5.0~16.0 */\n            animation-duration: $time;\n}\n\n@mixin animation-timing-function($easing : ease) {\n    -webkit-animation-timing-function: $easing;\n       -moz-animation-timing-function: $easing; /* Firefox 5.0~16.0 */\n            animation-timing-function: $easing;\n}\n\n@mixin animation-delay($delay : 1s) {\n    -webkit-animation-delay: $delay;\n       -moz-animation-delay: $delay; /* Firefox 5.0~16.0 */\n            animation-delay: $delay;\n}\n\n@mixin animation-iteration-count($count : infinite) {\n    -webkit-animation-iteration-count: $count;\n       -moz-animation-iteration-count: $count; /* Firefox 5.0~16.0 */\n            animation-iteration-count: $count;\n}\n\n// normal or alternate\n@mixin animation-direction($direction : normal) {\n    -webkit-animation-direction: $direction;\n       -moz-animation-direction: $direction; /* Firefox 5.0~16.0 */\n            animation-direction: $direction;\n}\n\n// paused or running\n\n@mixin animation-play-state($state) {\n    -webkit-animation-play-state: $state;\n       -moz-animation-play-state: $state;    /* Firefox 5.0~16.0 */\n            animation-play-state: $state;\n}\n\n// animation-fill-mode\n\n@mixin animation-fill-mode($mode) {\n    -webkit-animation-fill-mode: $mode;\n       -moz-animation-fill-mode: $mode;\n            animation-fill-mode: $mode;\n}\n\n// user-select\n\n@mixin user-select($type) {\n    -webkit-user-select: $type;\n       -moz-user-select: $type;\n        -ms-user-select: $type;\n         -o-user-select: $type;\n            user-select: $type;\n}\n\n// border-radius\n\n@mixin border-radius($radius: 4px) {    \n    -webkit-border-radius: $radius;\n       -moz-border-radius: $radius;\n        -ms-border-radius: $radius;\n         -o-border-radius: $radius;\n            border-radius: $radius;\n}\n\n@mixin border-top-left-radius($radius: 4px) {    \n    -webkit-border-top-left-radius: $radius;\n       -moz-border-top-left-radius: $radius;\n        -ms-border-top-left-radius: $radius;\n         -o-border-top-left-radius: $radius;\n            border-top-left-radius: $radius;\n}\n\n@mixin border-top-right-radius($radius: 4px) {    \n    -webkit-border-top-right-radius: $radius;\n       -moz-border-top-right-radius: $radius;\n        -ms-border-top-right-radius: $radius;\n         -o-border-top-right-radius: $radius;\n            border-top-right-radius: $radius;\n}\n\n@mixin border-bottom-left-radius($radius: 4px) {    \n    -webkit-border-bottom-left-radius: $radius;\n       -moz-border-bottom-left-radius: $radius;\n        -ms-border-bottom-left-radius: $radius;\n         -o-border-bottom-left-radius: $radius;\n            border-bottom-left-radius: $radius;\n}\n\n@mixin border-bottom-right-radius($radius: 4px) {    \n    -webkit-border-bottom-right-radius: $radius;\n       -moz-border-bottom-right-radius: $radius;\n        -ms-border-bottom-right-radius: $radius;\n         -o-border-bottom-right-radius: $radius;\n            border-bottom-right-radius: $radius;\n}\n\n// border-image\n\n@mixin border-image($value) {\n    -webkit-border-image: $value;   /* Safari 5, Chrome */\n       -moz-border-image: $value;   /* Firefox 3.5~15.0 */\n         -o-border-image: $value;   /* Opera */\n            border-image: $value;   /* Safari 6+, Chrome, New */\n}\n\n@mixin border-image-source($value) {\n    -webkit-border-image-source: $value;   /* Safari 5, Chrome */\n            border-image-source: $value;   /* Safari 6+, Chrome, IE11+, Opera 15+ */\n}\n\n@mixin border-image-slice($value) {\n    -webkit-border-image-slice: $value;   /* Safari 5, Chrome */\n            border-image-slice: $value;   /* Safari 6+, Chrome, IE11+, Opera 15+ */\n}\n\n@mixin border-image-width($value) {\n    -webkit-border-image-width: $value;   /* Safari 5, Chrome */\n            border-image-width: $value;   /* Safari 6+, Chrome, IE11+, Opera 15+ */\n}\n\n@mixin border-image-outset($value) {\n    -webkit-border-image-outset: $value;   /* Safari 5, Chrome */\n            border-image-outset: $value;   /* Safari 6+, Chrome, IE11+, Opera 15+ */\n}\n\n@mixin border-image-repeat($value) {\n    -webkit-border-image-repeat: $value;   /* Safari 5, Chrome */\n            border-image-repeat: $value;   /* Safari 6+, Chrome, IE11+, Opera 15+ */\n}\n\n// box-shadow\n\n@mixin box-shadow($value) {\n    -webkit-box-shadow: $value;      /* Webkit browsers */\n       -moz-box-shadow: $value;      /* Firefox */\n        -ms-box-shadow: $value;      /* IE9 */\n         -o-box-shadow: $value;      /* Opera(Old) */\n            box-shadow: $value;      /* IE9+, News */\n}\n\n//box-sizing\n\n@mixin box-sizing($value) {\n    -webkit-box-sizing: $value;\n       -moz-box-sizing: $value;\n            box-sizing: $value; \n}\n\n// box-reflect\n\n@mixin box-reflect($value) {\n    -webkit-box-reflect: $value; /* Chrome, Safari, iOS, Blackberry */\n            box-reflect: $value; /* None yet / Non-standard */\n}\n\n// background  \n\n@mixin linear-gradient($start-color, $end-color, $position : top, $perStart : 0%, $perEnd : 100%) {\n    background: -webkit-linear-gradient($position, $start-color, $end-color);        /* Webkit browsers */\n    background: -moz-linear-gradient( $position, $start-color, $end-color);          /* Firefox(old) */\n    background: -o-linear-gradient( $position, $start-color, $end-color);             /* Opera(old) */\n    background: -ms-linear-gradient( $position, $start-color $perStart, $end-color $perEnd);    /* IE10 */ \n        filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, start-colorstr=#{$start-color}, end-colorstr=#{$end-color});    /* IE9 */\n     ms-filter: \"progid:DXImageTransform.Microsoft.gradient (GradientType=0, start-colorstr=#{$start-color}, end-colorstr=#{$end-color})\";  /* IE8 */ \n    background: linear-gradient( $position, $start-color $perStart, $end-color $perEnd);        /* W3C */\n}\n\n@mixin background-clip($value) {\n    -webkit-background-clip: $value;\n            background-clip: $value;  /* Firefox 4.0, IE9+, Opera 10.5+, Chrome, Safari 3.0+ */\n}\n\n@mixin background-origin($value) {\n    -webkit-background-origin: $value; \n            background-origin: $value;  /* IE9+, Other */\n}\n\n@mixin background-size($value) {\n    -webkit-background-size: $value;  /* Chrome, iOS, Safari */\n       -moz-background-size: $value;  /* Firefox 3.6~4.0 */\n         -o-background-size: $value;  /* Opera 9.5 */\n            background-size: $value;  /* IE9+, New */\n}\n\n// Column\n\n@mixin column-count($value) {\n  -webkit-column-count: $value; /* Chrome, Safari, Android, Blackberry  */\n     -moz-column-count: $value; /* Firefox 34+ */\n          column-count: $value; /* IE 10+, Opera 11.1+, New */\n}\n\n@mixin column-gap($value) {\n  -webkit-column-gap: $value;  /* Chrome, Safari, Android, Blackberry  */\n     -moz-column-gap: $value;  /* Firefox 34+ */\n          column-gap: $value;  /* IE 10+, Opera 11.1+, New */\n}\n\n@mixin column-rule($value) {\n    -webkit-column-rule: $value;  /* Chrome, Safari, Android, Blackberry  */\n       -moz-column-rule: $value;  /* Firefox 34+ */\n            column-rule: $value;  /* IE 10+, Opera 11.1+, New */\n}\n\n@mixin column-rule-color($value) {\n    -webkit-column-rule-color: $value;  /* Chrome, Safari, Android, Blackberry  */\n       -moz-column-rule-color: $value;  /* Firefox 34+ */\n            column-rule-color: $value;  /* IE 10+, Opera 11.1+, New */\n}\n\n@mixin column-rule-style($value) {\n    -webkit-column-rule-style: $value;  /* Chrome, Safari, Android, Blackberry  */\n       -moz-column-rule-style: $value;  /* Firefox 34+ */\n            column-rule-style: $value;  /* IE 10+, Opera 11.1+, New */\n}\n\n@mixin column-rule-width($value) {\n    -webkit-column-rule-width: $value;  /* Chrome, Safari, Android, Blackberry  */\n       -moz-column-rule-width: $value;  /* Firefox 34+ */\n            column-rule-width: $value;  /* IE 10+, Opera 11.1+, New */\n}\n\n@mixin column-fill($value) {\n -webkit-column-fill: $value;  /* None yet */\n    -moz-column-fill: $value;  /* Firefox 13.0+ */\n         column-fill: $value;  /* None yet / Non-standard */\n}\n\n@mixin column-span($value) {\n    -webkit-column-span: $value;  /* Safari, Chrome, iOS 7.0+, Android, Opera 26+ */\n       -moz-column-span: $value;  /* Firefox 34+ */\n            column-span: $value;  /* IE10+, Opera Mini */\n}\n\n@mixin column-width($value) {\n    -webkit-column-width: $value; /* Safari, Chrome, iOS 7.0+, Android, Opera 26+ */\n       -moz-column-width: $value; /* Firefox */\n            column-width: $value; /* IE10+, Opera */\n}\n\n// columns: column-width column-count;\n\n@mixin columns($value) {\n    -webkit-columns: $value; /* Safari, Chrome, iOS 7.0+, Android, Opera 26+ */\n       -moz-columns: $value; /* Firefox */\n            columns: $value; /* IE10+, Opera */\n}\n\n// clip-path\n\n@mixin clip-path($value) {\n    -webkit-clip-path: $value; /* Chrome, iOS, Safari */\n            clip-path: $value;\n}\n\n// display\n\n@mixin display-grid() {\n    display: -ms-grid;     /* IE 10 */\n    display:     grid;     /* None yet */\n}\n\n@mixin display-flex() {\n    display: -webkit-box;  /* Old - iOS 6-, Safari 3.1~6, Blackberry 7 */\n    display: -ms-flexbox;  /* TWEENER - IE 10 */\n    display: -webkit-flex; /* New - Safari 6.1+. iOS 7.1+, Blackberry 10 */\n    display: flex;         /* New, Spec - Firefox, Chrome, Opera */\n}\n\n@mixin inline-flex($value) {\n    -webkit-inline-flex: $value; /* Chrome 21.0+ */\n            inline-flex: $value; /* Firefox 20+, Opera 12.5 */\n}\n\n@mixin flex($value) {\n    -webkit-box-flex: $value;   /* Old - iOS 6-, Safari 3.1~6 */\n        -webkit-flex: $value;   /* Safari 6.1+. iOS 7.1+, Blackberry 10 */\n            -ms-flex: $value;   /* IE 10 */\n                flex: $value;   /* New, Spec - Firefox, Chrome, Opera */\n}\n\n@mixin flex-direction($value) {\n    -webkit-flex-direction: $value;  /* Chrome 21.0+, But Safari & Android & iOS Not supported. */\n            flex-direction: $value;  /* Firefox 28+, IE11, Opera 12.10 */\n}\n\n@mixin flex-basis($value) {\n    -webkit-flex-basis: $value;  /* Chrome 21.0+, But Safari & Android & iOS Not supported. */\n            flex-basis: $value;  /* Firefox 22+, IE11, Opera 12.10 */\n}\n\n@mixin flex-flow($value) {\n    -webkit-flex-flow: $value;   /* Chrome 21.0+, But Safari & Android & iOS Not supported. */\n            flex-flow: $value;   /* Firefox 28+, IE11, Opera 12.10 */\n}\n\n@mixin flex-grow($value) {\n    -webkit-flex-grow: $value;   /* Chrome 21.0+, But Safari & Android & iOS Not supported. */\n            flex-grow: $value;   /* Firefox 20+, Opera 12.10, IE Not supported. */\n}\n\n@mixin flex-shrink($value) {\n    -webkit-flex-shrink: $value; /* Chrome 21.0+, But Safari & Android & iOS Not supported. */\n            flex-shrink: $value; /* Firefox 20+, Opera 12.10, IE Not supported. */\n}\n\n@mixin flex-wrap($value) {\n    -webkit-flex-wrap: $value;  /* Safari 6.1+, Chrome 21.0+, Android 4.4+, iOS 7.0+ */\n            flex-wrap: $value;  /* Firefox 28+, IE11, Opera 12.10 */\n}\n\n@mixin order($value) {\n     -webkit-order: $value; /* Chrome 21+, Safari Not supported. */\n    -ms-flex-order: $value; /* IE 10.0 */\n             order: $value; /* Firefox 20+, Opera 12.10 */\n}\n\n// flow\n\n@mixin flow-into($value) {\n    -webkit-flow-into: $value;  /* Safari 7.1+, iOS Safari 7.1+ */\n        -ms-flow-into: $value;  /* IE10+ */\n            flow-into: $value;  /* None yet */\n}\n\n@mixin flow-from($value) {\n    -webkit-flow-from: $value;  /* Safari 7.1+, iOS Safari 7.1+ */\n        -ms-flow-from: $value;  /* IE10+ */\n            flow-from: $value;  /* None yet */\n}\n\n// filter\n\n@mixin filter($value) {\n    -webkit-filter: $value;     /* Chrome 23+, Safari 6.0+, Blackberry 10.0+ */\n            filter: $value;     /* None yet */\n}\n\n// filter blur\n\n@mixin filter-blur($value : 10px, $ie-value : 10) { \n            filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=#{$ie-value}, MakeShadow=false);  /* IE6~IE9 */\n    -webkit-filter: blur($value); /* Chrome, Opera, iOS, Safari */\n       -moz-filter: blur($value); /* Firefox(Old) */\n        -ms-filter: blur($value);\n            filter: blur($value);\n}\n\n@mixin font-kerning($value) {\n    -webkit-font-kerning: $value;\n            font-kerning: $value;\n}\n\n// font-feature-settings\n\n@mixin font-feature-settings($value) {\n    -webkit-font-feature-settings: $value;  /* Chrome 16-26, Blackberry 10 */\n       -moz-font-feature-settings: $value;  /* Firefox 4-21 */\n            font-feature-settings: $value;  /* IE 10, Safari 4.0-6.0 */\n}\n\n@mixin font-variant-ligatures($value) {\n    -webkit-font-variant-ligatures: $value;\n            font-variant-ligatures: $value;\n}\n\n// hyphens\n\n@mixin hyphens($value : auto) {\n    // Chrome 29- and Android 4.0 Browser support \"-webkit-hyphens: none\", but not the \"auto\" property.\n    -webkit-hyphens: $value;  /* Safari 5.1+, Chrome */\n       -moz-hyphens: $value;  /* Firefox 6.0+ */\n        -ms-hyphens: $value;  /* IE 10+ */\n            hyphens: $value;  /* None yet */\n}\n\n@mixin justify-content($value) {\n    -webkit-justify-content: $value; /* Chrome 21+, Safari Not supported. */\n            justify-content: $value; /* Firefox 20+, Opera 12.10, IE Not supported. */\n}\n\n// line\n\n@mixin line-break($value) {\n    -webkit-line-break: $value;\n            line-break: $value;\n}\n\n// margin\n\n@mixin margin-start($value) {\n    -webkit-margin-start: $value;  /* Safari 3.0+, Chrome */\n       -moz-margin-start: $value;  /* Firefox 1.0+ */\n            margin-start: $value;  /* None yet / Non-standard */\n}\n\n@mixin margin-end($value) {\n    -webkit-margin-end: $value;  /* Safari 3.0+, Chrome */\n       -moz-margin-end: $value;  /* Firefox 1.0+ */\n            margin-end: $value;  /* None yet / Non-standard */\n}\n\n// mask\n\n@mixin mask-image($value) {\n    -webkit-mask-image: $value; /* Chrome, iOS, Safari */\n            mask-image: $value; /* None yet / Non-standard */\n}\n\n@mixin mask-size($value) {\n    -webkit-mask-size: $value; /* Chrome, iOS, Safari */\n            mask-size: $value; /* None yet / Non-standard */\n}\n\n@mixin mask-clip($value) {\n    -webkit-mask-clip: $value; /* Chrome, iOS, Safari */\n            mask-clip: $value; /* None yet / Non-standard */\n}\n\n@mixin mask-position($value) {\n    -webkit-mask-position: $value; /* Chrome, iOS, Safari */\n            mask-position: $value; /* None yet / Non-standard */\n}\n\n@mixin mask-position-x($value) {\n    -webkit-mask-position-x: $value; /* Chrome, iOS, Safari */\n            mask-position-x: $value; /* None yet / Non-standard */\n}\n\n@mixin mask-position-y($value) {\n    -webkit-mask-position-y: $value; /* Chrome, iOS, Safari */\n            mask-position-y: $value; /* None yet / Non-standard */\n}\n\n@mixin mask-origin($value) {\n    -webkit-mask-origin: $value; /* Chrome, iOS, Safari */\n            mask-origin: $value; /* None yet / Non-standard */\n}\n\n@mixin mask-repeat($value) {\n    -webkit-mask-repeat: $value; /* Chrome, iOS, Safari */\n            mask-repeat: $value; /* None yet / Non-standard */\n}\n\n@mixin mask-attachment($value) {\n    -webkit-mask-attachment: $value; /* Chrome, iOS, Safari */\n            mask-attachment: $value; /* None yet / Non-standard */\n}\n\n@mixin mask-composite($value) {\n    -webkit-mask-composite: $value; /* Chrome, iOS, Safari */\n            mask-composite: $value; /* None yet / Non-standard */\n}\n\n@mixin mask-box-image($value) {\n    -webkit-mask-box-image: $value; /* Chrome, iOS, Safari */\n            mask-box-image: $value; /* None yet / Non-standard */\n}\n\n// opacity\n\n@mixin opacity($opacity) {\n    opacity: $opacity; /* W3C */\n     filter: alpha(opacity=($opacity * 100)); /* IE */\n}\n\n// padding\n\n@mixin padding-start($value) {\n    -webkit-padding-start: $value; /* Safari, Chrome, WebKit */\n       -moz-padding-start: $value; /* Firefox 3+ */\n            padding-start: $value;\n}\n\n@mixin padding-end($value) {\n    -webkit-padding-end: $value; /* Safari, Chrome, WebKit */\n       -moz-padding-end: $value; /* Firefox 3+ */\n            padding-end: $value;\n}\n\n// ruby-position\n\n@mixin ruby-position($value) {\n    -webkit-ruby-position: $value; /* Blink, Webkit */\n            ruby-position: $value; /* Firefox, IE */\n}\n\n// Text\n\n@mixin text-size-adjust($value) {\n    -webkit-text-size-adjust: $value; /* Chrome 27+ */\n       -moz-text-size-adjust: $value; /* Firefox */\n            text-size-adjust: $value; /* None yet */\n}\n\n@mixin text-align-last($value) {\n    -webkit-text-align-last: $value;  /* Chrome 35+, Safari Not supported. */\n       -moz-text-align-last: $value;  /* Firefox 12.0 */\n            text-align-last: $value;  /* IE 5.5+ */\n}\n\n@mixin text-justify($value) {\n    -webkit-text-justify: $value;\n            text-justify: $value;\n}\n\n@mixin text-decoration-color($value) {\n    -webkit-text-decoration-color: $value;\n            text-decoration-color: $value;\n}\n\n@mixin text-decoration-line($value) {\n    -webkit-text-decoration-line: $value;\n            text-decoration-line: $value;\n}\n\n@mixin text-decoration-style($value) {\n    -webkit-text-decoration-style: $value;\n            text-decoration-style: $value;\n}\n\n@mixin text-orientation($value) {\n    -webkit-text-orientation: $value;\n            text-orientation: $value;\n}\n\n@mixin text-underline-position($value) {\n    -webkit-text-underline-position: $value; /* Chrome 33 not fully supported. */\n            text-underline-position: $value; /* IE 5 not fully supported. */\n}\n\n@mixin text-emphasis($value) {\n    -webkit-text-emphasis: $value; /* Blink */\n            text-emphasis: $value; /* WebKit */\n}\n\n@mixin text-emphasis-color($value) {\n    -webkit-text-emphasis-color: $value; /* Blink */\n            text-emphasis-color: $value; /* WebKit */\n}\n\n@mixin text-emphasis-style($value) {\n    -webkit-text-emphasis-style: $value; /* Blink */\n            text-emphasis-style: $value; /* WebKit */\n}\n\n@mixin text-emphasis-position($value) {\n    -webkit-text-emphasis-position: $value; /* Blink */\n            text-emphasis-position: $value; /* WebKit */\n}\n\n// tab\n\n@mixin tab-size($value) {\n    -webkit-tab-size: $value; /* Chrome 21+, Safari 6.1+ */\n       -moz-tab-size: $value; /* Firefox 4.0 */\n         -o-tab-size: $value; /* Opera 10.6~15 */\n            tab-size: $value; /* Blink & Webkit */\n}\n\n// input-placeholder\n\n@mixin input-placeholder($seletor) {\n    \n    #{$seletor}::-webkit-input-placeholder {\n        @content;\n    }\n    \n    #{$seletor}:-moz-placeholder {  /* Firefox 4~18 */\n        @content;\n    }\n    \n    #{$seletor}::-moz-placeholder {  /* Firefox 19+ */\n        @content;\n    }\n    \n    #{$seletor}:-ms-input-placeholder {  /* IE10+ */ \n        @content;\n    }\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/lib/variables.scss",
    "content": "@charset \"UTF-8\";\n\n// Global Variables\n\n$prefix       : \".editormd-\";\n$color        : #666;\n$mainColor    : #2196F3;\n$primaryColor : $mainColor;\n$secondColor  : #33CC66;\n$thirdColor   : #999999;\n$borderColor  : #ddd;"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/scss/prettify.scss",
    "content": "@charset \"UTF-8\";\n\n/*! Pretty printing styles. Used with prettify.js. */\n/* SPAN elements with the classes below are added by prettyprint. */\n.pln { color: #000 }  /* plain text */\n\n@media screen {\n  .str { color: #080 }  /* string content */\n  .kwd { color: #008 }  /* a keyword */\n  .com { color: #800 }  /* a comment */\n  .typ { color: #606 }  /* a type name */\n  .lit { color: #066 }  /* a literal value */\n  /* punctuation, lisp open bracket, lisp close bracket */\n  .pun, .opn, .clo { color: #660 }\n  .tag { color: #008 }  /* a markup tag name */\n  .atn { color: #606 }  /* a markup attribute name */\n  .atv { color: #080 }  /* a markup attribute value */\n  .dec, .var { color: #606 }  /* a declaration; a variable name */\n  .fun { color: red }  /* a function name */\n}\n\n/* Use higher contrast and text-weight for printable form. */\n@media print, projection {\n  .str { color: #060 }\n  .kwd { color: #006; font-weight: bold }\n  .com { color: #600; font-style: italic }\n  .typ { color: #404; font-weight: bold }\n  .lit { color: #044 }\n  .pun, .opn, .clo { color: #440 }\n  .tag { color: #006; font-weight: bold }\n  .atn { color: #404 }\n  .atv { color: #060 }\n}\n\n/* Put a border around prettyprinted code snippets. */\npre.prettyprint { padding: 2px; border: 1px solid #888 }\n\n/* Specify class=linenums on a pre to get line numbering */\nol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */\nli.L0,\nli.L1,\nli.L2,\nli.L3,\nli.L5,\nli.L6,\nli.L7,\nli.L8 { list-style-type: none }\n/* Alternate shading for lines */\nli.L1,\nli.L3,\nli.L5,\nli.L7,\nli.L9 { background: #eee }"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/editor-md/src/editormd.js",
    "content": ";(function(factory) {\n    \"use strict\";\n    \n\t// CommonJS/Node.js\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\")\n    { \n        module.exports = factory;\n    }\n\telse if (typeof define === \"function\")  // AMD/CMD/Sea.js\n\t{\n        if (define.amd) // for Require.js\n        {\n            /* Require.js define replace */\n        } \n        else \n        {\n\t\t    define([\"jquery\"], factory);  // for Sea.js\n        }\n\t} \n\telse\n\t{ \n        window.editormd = factory();\n\t}\n    \n}(function() {    \n\n    /* Require.js assignment replace */\n    \n    \"use strict\";\n    \n    var $ = (typeof (jQuery) !== \"undefined\") ? jQuery : Zepto;\n\n\tif (typeof ($) === \"undefined\") {\n\t\treturn ;\n\t}\n    \n    /**\n     * editormd\n     * \n     * @param   {String} id           编辑器的ID\n     * @param   {Object} options      配置选项 Key/Value\n     * @returns {Object} editormd     返回editormd对象\n     */\n    \n    var editormd         = function (id, options) {\n        return new editormd.fn.init(id, options);\n    };\n    \n    editormd.title        = editormd.$name = \"Editor.md\";\n    editormd.version      = \"1.5.0\";\n    editormd.homePage     = \"https://pandao.github.io/editor.md/\";\n    editormd.classPrefix  = \"editormd-\";\n    \n    editormd.toolbarModes = {\n        full : [\n            \"undo\", \"redo\", \"|\", \n            \"bold\", \"del\", \"italic\", \"quote\", \"ucwords\", \"uppercase\", \"lowercase\", \"|\", \n            \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"|\", \n            \"list-ul\", \"list-ol\", \"hr\", \"|\",\n            \"link\", \"reference-link\", \"image\", \"code\", \"preformatted-text\", \"code-block\", \"table\", \"datetime\", \"emoji\", \"html-entities\", \"pagebreak\", \"|\",\n            \"goto-line\", \"watch\", \"preview\", \"fullscreen\", \"clear\", \"search\", \"|\",\n            \"help\", \"info\"\n        ],\n        simple : [\n            \"undo\", \"redo\", \"|\", \n            \"bold\", \"del\", \"italic\", \"quote\", \"uppercase\", \"lowercase\", \"|\", \n            \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"|\", \n            \"list-ul\", \"list-ol\", \"hr\", \"|\",\n            \"watch\", \"preview\", \"fullscreen\", \"|\",\n            \"help\", \"info\"\n        ],\n        mini : [\n            \"undo\", \"redo\", \"|\",\n            \"watch\", \"preview\", \"|\",\n            \"help\", \"info\"\n        ]\n    };\n    \n    editormd.defaults     = {\n        mode                 : \"gfm\",          //gfm or markdown\n        name                 : \"\",             // Form element name\n        value                : \"\",             // value for CodeMirror, if mode not gfm/markdown\n        theme                : \"\",             // Editor.md self themes, before v1.5.0 is CodeMirror theme, default empty\n        editorTheme          : \"default\",      // Editor area, this is CodeMirror theme at v1.5.0\n        previewTheme         : \"\",             // Preview area theme, default empty\n        markdown             : \"\",             // Markdown source code\n        appendMarkdown       : \"\",             // if in init textarea value not empty, append markdown to textarea\n        width                : \"100%\",\n        height               : \"100%\",\n        path                 : \"./lib/\",       // Dependents module file directory\n        pluginPath           : \"\",             // If this empty, default use settings.path + \"../plugins/\"\n        delay                : 300,            // Delay parse markdown to html, Uint : ms\n        autoLoadModules      : true,           // Automatic load dependent module files\n        watch                : true,\n        placeholder          : \"Enjoy Markdown! coding now...\",\n        gotoLine             : true,\n        codeFold             : false,\n        autoHeight           : false,\n\t\tautoFocus            : true,\n        autoCloseTags        : true,\n        searchReplace        : true,\n        syncScrolling        : true,           // true | false | \"single\", default true\n        readOnly             : false,\n        tabSize              : 4,\n\t\tindentUnit           : 4,\n        lineNumbers          : true,\n\t\tlineWrapping         : true,\n\t\tautoCloseBrackets    : true,\n\t\tshowTrailingSpace    : true,\n\t\tmatchBrackets        : true,\n\t\tindentWithTabs       : true,\n\t\tstyleSelectedText    : true,\n        matchWordHighlight   : true,           // options: true, false, \"onselected\"\n        styleActiveLine      : true,           // Highlight the current line\n        dialogLockScreen     : true,\n        dialogShowMask       : true,\n        dialogDraggable      : true,\n        dialogMaskBgColor    : \"#fff\",\n        dialogMaskOpacity    : 0.1,\n        fontSize             : \"13px\",\n        saveHTMLToTextarea   : false,\n        disabledKeyMaps      : [],\n        \n        onload               : function() {},\n        onresize             : function() {},\n        onchange             : function() {},\n        onwatch              : null,\n        onunwatch            : null,\n        onpreviewing         : function() {},\n        onpreviewed          : function() {},\n        onfullscreen         : function() {},\n        onfullscreenExit     : function() {},\n        onscroll             : function() {},\n        onpreviewscroll      : function() {},\n        \n        imageUpload          : false,\n        imageFormats         : [\"jpg\", \"jpeg\", \"gif\", \"png\", \"bmp\", \"webp\"],\n        imageUploadURL       : \"\",\n        crossDomainUpload    : false,\n        uploadCallbackURL    : \"\",\n        \n        toc                  : true,           // Table of contents\n        tocm                 : false,           // Using [TOCM], auto create ToC dropdown menu\n        tocTitle             : \"\",             // for ToC dropdown menu btn\n        tocDropdown          : false,\n        tocContainer         : \"\",\n        tocStartLevel        : 1,              // Said from H1 to create ToC\n        htmlDecode           : false,          // Open the HTML tag identification \n        pageBreak            : true,           // Enable parse page break [========]\n        atLink               : true,           // for @link\n        emailLink            : true,           // for email address auto link\n        taskList             : false,          // Enable Github Flavored Markdown task lists\n        emoji                : false,          // :emoji: , Support Github emoji, Twitter Emoji (Twemoji);\n                                               // Support FontAwesome icon emoji :fa-xxx: > Using fontAwesome icon web fonts;\n                                               // Support Editor.md logo icon emoji :editormd-logo: :editormd-logo-1x: > 1~8x;\n        tex                  : false,          // TeX(LaTeX), based on KaTeX\n        flowChart            : false,          // flowChart.js only support IE9+\n        sequenceDiagram      : false,          // sequenceDiagram.js only support IE9+\n        previewCodeHighlight : true,\n                \n        toolbar              : true,           // show/hide toolbar\n        toolbarAutoFixed     : true,           // on window scroll auto fixed position\n        toolbarIcons         : \"full\",\n        toolbarTitles        : {},\n        toolbarHandlers      : {\n            ucwords : function() {\n                return editormd.toolbarHandlers.ucwords;\n            },\n            lowercase : function() {\n                return editormd.toolbarHandlers.lowercase;\n            }\n        },\n        toolbarCustomIcons   : {               // using html tag create toolbar icon, unused default <a> tag.\n            lowercase        : \"<a href=\\\"javascript:;\\\" title=\\\"Lowercase\\\" unselectable=\\\"on\\\"><i class=\\\"fa\\\" name=\\\"lowercase\\\" style=\\\"font-size:24px;margin-top: -10px;\\\">a</i></a>\",\n            \"ucwords\"        : \"<a href=\\\"javascript:;\\\" title=\\\"ucwords\\\" unselectable=\\\"on\\\"><i class=\\\"fa\\\" name=\\\"ucwords\\\" style=\\\"font-size:20px;margin-top: -3px;\\\">Aa</i></a>\"\n        }, \n        toolbarIconsClass    : {\n            undo             : \"fa-undo\",\n            redo             : \"fa-repeat\",\n            bold             : \"fa-bold\",\n            del              : \"fa-strikethrough\",\n            italic           : \"fa-italic\",\n            quote            : \"fa-quote-left\",\n            uppercase        : \"fa-font\",\n            h1               : editormd.classPrefix + \"bold\",\n            h2               : editormd.classPrefix + \"bold\",\n            h3               : editormd.classPrefix + \"bold\",\n            h4               : editormd.classPrefix + \"bold\",\n            h5               : editormd.classPrefix + \"bold\",\n            h6               : editormd.classPrefix + \"bold\",\n            \"list-ul\"        : \"fa-list-ul\",\n            \"list-ol\"        : \"fa-list-ol\",\n            hr               : \"fa-minus\",\n            link             : \"fa-link\",\n            \"reference-link\" : \"fa-anchor\",\n            image            : \"fa-picture-o\",\n            code             : \"fa-code\",\n            \"preformatted-text\" : \"fa-file-code-o\",\n            \"code-block\"     : \"fa-file-code-o\",\n            table            : \"fa-table\",\n            datetime         : \"fa-clock-o\",\n            emoji            : \"fa-smile-o\",\n            \"html-entities\"  : \"fa-copyright\",\n            pagebreak        : \"fa-newspaper-o\",\n            \"goto-line\"      : \"fa-terminal\", // fa-crosshairs\n            watch            : \"fa-eye-slash\",\n            unwatch          : \"fa-eye\",\n            preview          : \"fa-desktop\",\n            search           : \"fa-search\",\n            fullscreen       : \"fa-arrows-alt\",\n            clear            : \"fa-eraser\",\n            help             : \"fa-question-circle\",\n            info             : \"fa-info-circle\"\n        },        \n        toolbarIconTexts     : {},\n        \n        lang : {\n            name        : \"zh-cn\",\n            description : \"开源在线Markdown编辑器<br/>Open source online Markdown editor.\",\n            tocTitle    : \"目录\",\n            toolbar     : {\n                undo             : \"撤销（Ctrl+Z）\",\n                redo             : \"重做（Ctrl+Y）\",\n                bold             : \"粗体\",\n                del              : \"删除线\",\n                italic           : \"斜体\",\n                quote            : \"引用\",\n                ucwords          : \"将每个单词首字母转成大写\",\n                uppercase        : \"将所选转换成大写\",\n                lowercase        : \"将所选转换成小写\",\n                h1               : \"标题1\",\n                h2               : \"标题2\",\n                h3               : \"标题3\",\n                h4               : \"标题4\",\n                h5               : \"标题5\",\n                h6               : \"标题6\",\n                \"list-ul\"        : \"无序列表\",\n                \"list-ol\"        : \"有序列表\",\n                hr               : \"横线\",\n                link             : \"链接\",\n                \"reference-link\" : \"引用链接\",\n                image            : \"添加图片\",\n                code             : \"行内代码\",\n                \"preformatted-text\" : \"预格式文本 / 代码块（缩进风格）\",\n                \"code-block\"     : \"代码块（多语言风格）\",\n                table            : \"添加表格\",\n                datetime         : \"日期时间\",\n                emoji            : \"Emoji表情\",\n                \"html-entities\"  : \"HTML实体字符\",\n                pagebreak        : \"插入分页符\",\n                \"goto-line\"      : \"跳转到行\",\n                watch            : \"关闭实时预览\",\n                unwatch          : \"开启实时预览\",\n                preview          : \"全窗口预览HTML（按 Shift + ESC还原）\",\n                fullscreen       : \"全屏（按ESC还原）\",\n                clear            : \"清空\",\n                search           : \"搜索\",\n                help             : \"使用帮助\",\n                info             : \"关于\" + editormd.title\n            },\n            buttons : {\n                enter  : \"确定\",\n                cancel : \"取消\",\n                close  : \"关闭\"\n            },\n            dialog : {\n                link : {\n                    title    : \"添加链接\",\n                    url      : \"链接地址\",\n                    urlTitle : \"链接标题\",\n                    urlEmpty : \"错误：请填写链接地址。\"\n                },\n                referenceLink : {\n                    title    : \"添加引用链接\",\n                    name     : \"引用名称\",\n                    url      : \"链接地址\",\n                    urlId    : \"链接ID\",\n                    urlTitle : \"链接标题\",\n                    nameEmpty: \"错误：引用链接的名称不能为空。\",\n                    idEmpty  : \"错误：请填写引用链接的ID。\",\n                    urlEmpty : \"错误：请填写引用链接的URL地址。\"\n                },\n                image : {\n                    title    : \"添加图片\",\n                    url      : \"图片地址\",\n                    link     : \"图片链接\",\n                    alt      : \"图片描述\",\n                    uploadButton     : \"本地上传\",\n                    imageURLEmpty    : \"错误：图片地址不能为空。\",\n                    uploadFileEmpty  : \"错误：上传的图片不能为空。\",\n                    formatNotAllowed : \"错误：只允许上传图片文件，允许上传的图片文件格式有：\"\n                },\n                preformattedText : {\n                    title             : \"添加预格式文本或代码块\", \n                    emptyAlert        : \"错误：请填写预格式文本或代码的内容。\"\n                },\n                codeBlock : {\n                    title             : \"添加代码块\",                    \n                    selectLabel       : \"代码语言：\",\n                    selectDefaultText : \"请选择代码语言\",\n                    otherLanguage     : \"其他语言\",\n                    unselectedLanguageAlert : \"错误：请选择代码所属的语言类型。\",\n                    codeEmptyAlert    : \"错误：请填写代码内容。\"\n                },\n                htmlEntities : {\n                    title : \"HTML 实体字符\"\n                },\n                help : {\n                    title : \"使用帮助\"\n                }\n            }\n        }\n    };\n    \n    editormd.classNames  = {\n        tex : editormd.classPrefix + \"tex\"\n    };\n\n    editormd.dialogZindex = 99999;\n    \n    editormd.$katex       = null;\n    editormd.$marked      = null;\n    editormd.$CodeMirror  = null;\n    editormd.$prettyPrint = null;\n    \n    var timer, flowchartTimer;\n\n    editormd.prototype    = editormd.fn = {\n        state : {\n            watching   : false,\n            loaded     : false,\n            preview    : false,\n            fullscreen : false\n        },\n        \n        /**\n         * 构造函数/实例初始化\n         * Constructor / instance initialization\n         * \n         * @param   {String}   id            编辑器的ID\n         * @param   {Object}   [options={}]  配置选项 Key/Value\n         * @returns {editormd}               返回editormd的实例对象\n         */\n        \n        init : function (id, options) {\n            \n            options              = options || {};\n            \n            if (typeof id === \"object\")\n            {\n                options = id;\n            }\n            \n            var _this            = this;\n            var classPrefix      = this.classPrefix  = editormd.classPrefix; \n            var settings         = this.settings     = $.extend(true, editormd.defaults, options);\n            \n            id                   = (typeof id === \"object\") ? settings.id : id;\n            \n            var editor           = this.editor       = $(\"#\" + id);\n            \n            this.id              = id;\n            this.lang            = settings.lang;\n            \n            var classNames       = this.classNames   = {\n                textarea : {\n                    html     : classPrefix + \"html-textarea\",\n                    markdown : classPrefix + \"markdown-textarea\"\n                }\n            };\n            \n            settings.pluginPath = (settings.pluginPath === \"\") ? settings.path + \"../plugins/\" : settings.pluginPath; \n            \n            this.state.watching = (settings.watch) ? true : false;\n            \n            if ( !editor.hasClass(\"editormd\") ) {\n                editor.addClass(\"editormd\");\n            }\n            \n            editor.css({\n                width  : (typeof settings.width  === \"number\") ? settings.width  + \"px\" : settings.width,\n                height : (typeof settings.height === \"number\") ? settings.height + \"px\" : settings.height\n            });\n            \n            if (settings.autoHeight)\n            {\n                editor.css(\"height\", \"auto\");\n            }\n                        \n            var markdownTextarea = this.markdownTextarea = editor.children(\"textarea\");\n            \n            if (markdownTextarea.length < 1)\n            {\n                editor.append(\"<textarea></textarea>\");\n                markdownTextarea = this.markdownTextarea = editor.children(\"textarea\");\n            }\n            \n            markdownTextarea.addClass(classNames.textarea.markdown).attr(\"placeholder\", settings.placeholder);\n            \n            if (typeof markdownTextarea.attr(\"name\") === \"undefined\" || markdownTextarea.attr(\"name\") === \"\")\n            {\n                markdownTextarea.attr(\"name\", (settings.name !== \"\") ? settings.name : id + \"-markdown-doc\");\n            }\n            \n            var appendElements = [\n                (!settings.readOnly) ? \"<a href=\\\"javascript:;\\\" class=\\\"fa fa-close \" + classPrefix + \"preview-close-btn\\\"></a>\" : \"\",\n                ( (settings.saveHTMLToTextarea) ? \"<textarea class=\\\"\" + classNames.textarea.html + \"\\\" name=\\\"\" + id + \"-html-code\\\"></textarea>\" : \"\" ),\n                \"<div class=\\\"\" + classPrefix + \"preview\\\"><div class=\\\"markdown-body \" + classPrefix + \"preview-container\\\"></div></div>\",\n                \"<div class=\\\"\" + classPrefix + \"container-mask\\\" style=\\\"display:block;\\\"></div>\",\n                \"<div class=\\\"\" + classPrefix + \"mask\\\"></div>\"\n            ].join(\"\\n\");\n            \n            editor.append(appendElements).addClass(classPrefix + \"vertical\");\n            \n            if (settings.theme !== \"\") \n            {\n                editor.addClass(classPrefix + \"theme-\" + settings.theme);\n            }\n            \n            this.mask          = editor.children(\".\" + classPrefix + \"mask\");    \n            this.containerMask = editor.children(\".\" + classPrefix  + \"container-mask\");\n            \n            if (settings.markdown !== \"\")\n            {\n                markdownTextarea.val(settings.markdown);\n            }\n            \n            if (settings.appendMarkdown !== \"\")\n            {\n                markdownTextarea.val(markdownTextarea.val() + settings.appendMarkdown);\n            }\n            \n            this.htmlTextarea     = editor.children(\".\" + classNames.textarea.html);            \n            this.preview          = editor.children(\".\" + classPrefix + \"preview\");\n            this.previewContainer = this.preview.children(\".\" + classPrefix + \"preview-container\");\n            \n            if (settings.previewTheme !== \"\") \n            {\n                this.preview.addClass(classPrefix + \"preview-theme-\" + settings.previewTheme);\n            }\n            \n            if (typeof define === \"function\" && define.amd)\n            {\n                if (typeof katex !== \"undefined\") \n                {\n                    editormd.$katex = katex;\n                }\n                \n                if (settings.searchReplace && !settings.readOnly) \n                {\n                    editormd.loadCSS(settings.path + \"codemirror/addon/dialog/dialog\");\n                    editormd.loadCSS(settings.path + \"codemirror/addon/search/matchesonscrollbar\");\n                }\n            }\n            \n            if ((typeof define === \"function\" && define.amd) || !settings.autoLoadModules)\n            {\n                if (typeof CodeMirror !== \"undefined\") {\n                    editormd.$CodeMirror = CodeMirror;\n                }\n                \n                if (typeof marked     !== \"undefined\") {\n                    editormd.$marked     = marked;\n                }\n                \n                this.setCodeMirror().setToolbar().loadedDisplay();\n            } \n            else \n            {\n                this.loadQueues();\n            }\n\n            return this;\n        },\n        \n        /**\n         * 所需组件加载队列\n         * Required components loading queue\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        loadQueues : function() {\n            var _this        = this;\n            var settings     = this.settings;\n            var loadPath     = settings.path;\n                                \n            var loadFlowChartOrSequenceDiagram = function() {\n                \n                if (editormd.isIE8) \n                {\n                    _this.loadedDisplay();\n                    \n                    return ;\n                }\n\n                if (settings.flowChart || settings.sequenceDiagram) \n                {\n                    editormd.loadScript(loadPath + \"raphael.min\", function() {\n\n                        editormd.loadScript(loadPath + \"underscore.min\", function() {  \n\n                            if (!settings.flowChart && settings.sequenceDiagram) \n                            {\n                                editormd.loadScript(loadPath + \"sequence-diagram.min\", function() {\n                                    _this.loadedDisplay();\n                                });\n                            }\n                            else if (settings.flowChart && !settings.sequenceDiagram) \n                            {      \n                                editormd.loadScript(loadPath + \"flowchart.min\", function() {  \n                                    editormd.loadScript(loadPath + \"jquery.flowchart.min\", function() {\n                                        _this.loadedDisplay();\n                                    });\n                                });\n                            }\n                            else if (settings.flowChart && settings.sequenceDiagram) \n                            {  \n                                editormd.loadScript(loadPath + \"flowchart.min\", function() {  \n                                    editormd.loadScript(loadPath + \"jquery.flowchart.min\", function() {\n                                        editormd.loadScript(loadPath + \"sequence-diagram.min\", function() {\n                                            _this.loadedDisplay();\n                                        });\n                                    });\n                                });\n                            }\n                        });\n\n                    });\n                } \n                else\n                {\n                    _this.loadedDisplay();\n                }\n            }; \n\n            editormd.loadCSS(loadPath + \"codemirror/codemirror.min\");\n            \n            if (settings.searchReplace && !settings.readOnly)\n            {\n                editormd.loadCSS(loadPath + \"codemirror/addon/dialog/dialog\");\n                editormd.loadCSS(loadPath + \"codemirror/addon/search/matchesonscrollbar\");\n            }\n            \n            if (settings.codeFold)\n            {\n                editormd.loadCSS(loadPath + \"codemirror/addon/fold/foldgutter\");            \n            }\n            \n            editormd.loadScript(loadPath + \"codemirror/codemirror.min\", function() {\n                editormd.$CodeMirror = CodeMirror;\n                \n                editormd.loadScript(loadPath + \"codemirror/modes.min\", function() {\n                    \n                    editormd.loadScript(loadPath + \"codemirror/addons.min\", function() {\n                        \n                        _this.setCodeMirror();\n                        \n                        if (settings.mode !== \"gfm\" && settings.mode !== \"markdown\") \n                        {\n                            _this.loadedDisplay();\n                            \n                            return false;\n                        }\n                        \n                        _this.setToolbar();\n\n                        editormd.loadScript(loadPath + \"marked.min\", function() {\n\n                            editormd.$marked = marked;\n                                \n                            if (settings.previewCodeHighlight) \n                            {\n                                editormd.loadScript(loadPath + \"prettify.min\", function() {\n                                    loadFlowChartOrSequenceDiagram();\n                                });\n                            } \n                            else\n                            {                  \n                                loadFlowChartOrSequenceDiagram();\n                            }\n                        });\n                        \n                    });\n                    \n                });\n                \n            });\n\n            return this;\n        },\n        \n        /**\n         * 设置 Editor.md 的整体主题，主要是工具栏\n         * Setting Editor.md theme\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setTheme : function(theme) {\n            var editor      = this.editor;\n            var oldTheme    = this.settings.theme;\n            var themePrefix = this.classPrefix + \"theme-\";\n            \n            editor.removeClass(themePrefix + oldTheme).addClass(themePrefix + theme);\n            \n            this.settings.theme = theme;\n            \n            return this;\n        },\n        \n        /**\n         * 设置 CodeMirror（编辑区）的主题\n         * Setting CodeMirror (Editor area) theme\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setEditorTheme : function(theme) {  \n            var settings   = this.settings;  \n            settings.editorTheme = theme;  \n            \n            if (theme !== \"default\")\n            {\n                editormd.loadCSS(settings.path + \"codemirror/theme/\" + settings.editorTheme);\n            }\n            \n            this.cm.setOption(\"theme\", theme);\n            \n            return this;\n        },\n        \n        /**\n         * setEditorTheme() 的别名\n         * setEditorTheme() alias\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setCodeMirrorTheme : function (theme) {            \n            this.setEditorTheme(theme);\n            \n            return this;\n        },\n        \n        /**\n         * 设置 Editor.md 的主题\n         * Setting Editor.md theme\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setPreviewTheme : function(theme) {  \n            var preview     = this.preview;\n            var oldTheme    = this.settings.previewTheme;\n            var themePrefix = this.classPrefix + \"preview-theme-\";\n            \n            preview.removeClass(themePrefix + oldTheme).addClass(themePrefix + theme);\n            \n            this.settings.previewTheme = theme;\n            \n            return this;\n        },\n        \n        /**\n         * 配置和初始化CodeMirror组件\n         * CodeMirror initialization\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setCodeMirror : function() { \n            var settings         = this.settings;\n            var editor           = this.editor;\n            \n            if (settings.editorTheme !== \"default\")\n            {\n                editormd.loadCSS(settings.path + \"codemirror/theme/\" + settings.editorTheme);\n            }\n            \n            var codeMirrorConfig = {\n                mode                      : settings.mode,\n                theme                     : settings.editorTheme,\n                tabSize                   : settings.tabSize,\n                dragDrop                  : false,\n                autofocus                 : settings.autoFocus,\n                autoCloseTags             : settings.autoCloseTags,\n                readOnly                  : (settings.readOnly) ? \"nocursor\" : false,\n                indentUnit                : settings.indentUnit,\n                lineNumbers               : settings.lineNumbers,\n                lineWrapping              : settings.lineWrapping,\n                extraKeys                 : {\n                                                \"Ctrl-Q\": function(cm) { \n                                                    cm.foldCode(cm.getCursor()); \n                                                }\n                                            },\n                foldGutter                : settings.codeFold,\n                gutters                   : [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n                matchBrackets             : settings.matchBrackets,\n                indentWithTabs            : settings.indentWithTabs,\n                styleActiveLine           : settings.styleActiveLine,\n                styleSelectedText         : settings.styleSelectedText,\n                autoCloseBrackets         : settings.autoCloseBrackets,\n                showTrailingSpace         : settings.showTrailingSpace,\n                highlightSelectionMatches : ( (!settings.matchWordHighlight) ? false : { showToken: (settings.matchWordHighlight === \"onselected\") ? false : /\\w/ } )\n            };\n            \n            this.codeEditor = this.cm        = editormd.$CodeMirror.fromTextArea(this.markdownTextarea[0], codeMirrorConfig);\n            this.codeMirror = this.cmElement = editor.children(\".CodeMirror\");\n            \n            if (settings.value !== \"\")\n            {\n                this.cm.setValue(settings.value);\n            }\n\n            this.codeMirror.css({\n                fontSize : settings.fontSize,\n                width    : (!settings.watch) ? \"100%\" : \"50%\"\n            });\n            \n            if (settings.autoHeight)\n            {\n                this.codeMirror.css(\"height\", \"auto\");\n                this.cm.setOption(\"viewportMargin\", Infinity);\n            }\n            \n            if (!settings.lineNumbers)\n            {\n                this.codeMirror.find(\".CodeMirror-gutters\").css(\"border-right\", \"none\");\n            }\n\n            return this;\n        },\n        \n        /**\n         * 获取CodeMirror的配置选项\n         * Get CodeMirror setting options\n         * \n         * @returns {Mixed}                  return CodeMirror setting option value\n         */\n        \n        getCodeMirrorOption : function(key) {            \n            return this.cm.getOption(key);\n        },\n        \n        /**\n         * 配置和重配置CodeMirror的选项\n         * CodeMirror setting options / resettings\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setCodeMirrorOption : function(key, value) {\n            \n            this.cm.setOption(key, value);\n            \n            return this;\n        },\n        \n        /**\n         * 添加 CodeMirror 键盘快捷键\n         * Add CodeMirror keyboard shortcuts key map\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        addKeyMap : function(map, bottom) {\n            this.cm.addKeyMap(map, bottom);\n            \n            return this;\n        },\n        \n        /**\n         * 移除 CodeMirror 键盘快捷键\n         * Remove CodeMirror keyboard shortcuts key map\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        removeKeyMap : function(map) {\n            this.cm.removeKeyMap(map);\n            \n            return this;\n        },\n        \n        /**\n         * 跳转到指定的行\n         * Goto CodeMirror line\n         * \n         * @param   {String|Intiger}   line      line number or \"first\"|\"last\"\n         * @returns {editormd}                   返回editormd的实例对象\n         */\n        \n        gotoLine : function (line) {\n            \n            var settings = this.settings;\n            \n            if (!settings.gotoLine)\n            {\n                return this;\n            }\n            \n            var cm       = this.cm;\n            var editor   = this.editor;\n            var count    = cm.lineCount();\n            var preview  = this.preview;\n            \n            if (typeof line === \"string\")\n            {\n                if(line === \"last\")\n                {\n                    line = count;\n                }\n            \n                if (line === \"first\")\n                {\n                    line = 1;\n                }\n            }\n            \n            if (typeof line !== \"number\") \n            {  \n                alert(\"Error: The line number must be an integer.\");\n                return this;\n            }\n            \n            line  = parseInt(line) - 1;\n            \n            if (line > count)\n            {\n                alert(\"Error: The line number range 1-\" + count);\n                \n                return this;\n            }\n            \n            cm.setCursor( {line : line, ch : 0} );\n            \n            var scrollInfo   = cm.getScrollInfo();\n            var clientHeight = scrollInfo.clientHeight; \n            var coords       = cm.charCoords({line : line, ch : 0}, \"local\");\n            \n            cm.scrollTo(null, (coords.top + coords.bottom - clientHeight) / 2);\n            \n            if (settings.watch)\n            {            \n                var cmScroll  = this.codeMirror.find(\".CodeMirror-scroll\")[0];\n                var height    = $(cmScroll).height(); \n                var scrollTop = cmScroll.scrollTop;         \n                var percent   = (scrollTop / cmScroll.scrollHeight);\n\n                if (scrollTop === 0)\n                {\n                    preview.scrollTop(0);\n                } \n                else if (scrollTop + height >= cmScroll.scrollHeight - 16)\n                { \n                    preview.scrollTop(preview[0].scrollHeight);                    \n                } \n                else\n                {                    \n                    preview.scrollTop(preview[0].scrollHeight * percent);\n                }\n            }\n\n            cm.focus();\n            \n            return this;\n        },\n        \n        /**\n         * 扩展当前实例对象，可同时设置多个或者只设置一个\n         * Extend editormd instance object, can mutil setting.\n         * \n         * @returns {editormd}                  this(editormd instance object.)\n         */\n        \n        extend : function() {\n            if (typeof arguments[1] !== \"undefined\")\n            {\n                if (typeof arguments[1] === \"function\")\n                {\n                    arguments[1] = $.proxy(arguments[1], this);\n                }\n\n                this[arguments[0]] = arguments[1];\n            }\n            \n            if (typeof arguments[0] === \"object\" && typeof arguments[0].length === \"undefined\")\n            {\n                $.extend(true, this, arguments[0]);\n            }\n\n            return this;\n        },\n        \n        /**\n         * 设置或扩展当前实例对象，单个设置\n         * Extend editormd instance object, one by one\n         * \n         * @param   {String|Object}   key       option key\n         * @param   {String|Object}   value     option value\n         * @returns {editormd}                  this(editormd instance object.)\n         */\n        \n        set : function (key, value) {\n            \n            if (typeof value !== \"undefined\" && typeof value === \"function\")\n            {\n                value = $.proxy(value, this);\n            }\n            \n            this[key] = value;\n\n            return this;\n        },\n        \n        /**\n         * 重新配置\n         * Resetting editor options\n         * \n         * @param   {String|Object}   key       option key\n         * @param   {String|Object}   value     option value\n         * @returns {editormd}                  this(editormd instance object.)\n         */\n        \n        config : function(key, value) {\n            var settings = this.settings;\n            \n            if (typeof key === \"object\")\n            {\n                settings = $.extend(true, settings, key);\n            }\n            \n            if (typeof key === \"string\")\n            {\n                settings[key] = value;\n            }\n            \n            this.settings = settings;\n            this.recreate();\n            \n            return this;\n        },\n        \n        /**\n         * 注册事件处理方法\n         * Bind editor event handle\n         * \n         * @param   {String}     eventType      event type\n         * @param   {Function}   callback       回调函数\n         * @returns {editormd}                  this(editormd instance object.)\n         */\n        \n        on : function(eventType, callback) {\n            var settings = this.settings;\n            \n            if (typeof settings[\"on\" + eventType] !== \"undefined\") \n            {                \n                settings[\"on\" + eventType] = $.proxy(callback, this);      \n            }\n\n            return this;\n        },\n        \n        /**\n         * 解除事件处理方法\n         * Unbind editor event handle\n         * \n         * @param   {String}   eventType          event type\n         * @returns {editormd}                    this(editormd instance object.)\n         */\n        \n        off : function(eventType) {\n            var settings = this.settings;\n            \n            if (typeof settings[\"on\" + eventType] !== \"undefined\") \n            {\n                settings[\"on\" + eventType] = function(){};\n            }\n            \n            return this;\n        },\n        \n        /**\n         * 显示工具栏\n         * Display toolbar\n         * \n         * @param   {Function} [callback=function(){}] 回调函数\n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        showToolbar : function(callback) {\n            var settings = this.settings;\n            \n            if(settings.readOnly) {\n                return this;\n            }\n            \n            if (settings.toolbar && (this.toolbar.length < 1 || this.toolbar.find(\".\" + this.classPrefix + \"menu\").html() === \"\") )\n            {\n                this.setToolbar();\n            }\n            \n            settings.toolbar = true; \n            \n            this.toolbar.show();\n            this.resize();\n            \n            $.proxy(callback || function(){}, this)();\n\n            return this;\n        },\n        \n        /**\n         * 隐藏工具栏\n         * Hide toolbar\n         * \n         * @param   {Function} [callback=function(){}] 回调函数\n         * @returns {editormd}                         this(editormd instance object.)\n         */\n        \n        hideToolbar : function(callback) { \n            var settings = this.settings;\n            \n            settings.toolbar = false;  \n            this.toolbar.hide();\n            this.resize();\n            \n            $.proxy(callback || function(){}, this)();\n\n            return this;\n        },\n        \n        /**\n         * 页面滚动时工具栏的固定定位\n         * Set toolbar in window scroll auto fixed position\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setToolbarAutoFixed : function(fixed) {\n            \n            var state    = this.state;\n            var editor   = this.editor;\n            var toolbar  = this.toolbar;\n            var settings = this.settings;\n            \n            if (typeof fixed !== \"undefined\")\n            {\n                settings.toolbarAutoFixed = fixed;\n            }\n            \n            var autoFixedHandle = function(){\n                var $window = $(window);\n                var top     = $window.scrollTop();\n                \n                if (!settings.toolbarAutoFixed)\n                {\n                    return false;\n                }\n\n                if (top - editor.offset().top > 10 && top < editor.height())\n                {\n                    toolbar.css({\n                        position : \"fixed\",\n                        width    : editor.width() + \"px\",\n                        left     : ($window.width() - editor.width()) / 2 + \"px\"\n                    });\n                }\n                else\n                {\n                    toolbar.css({\n                        position : \"absolute\",\n                        width    : \"100%\",\n                        left     : 0\n                    });\n                }\n            };\n            \n            if (!state.fullscreen && !state.preview && settings.toolbar && settings.toolbarAutoFixed)\n            {\n                $(window).bind(\"scroll\", autoFixedHandle);\n            }\n\n            return this;\n        },\n        \n        /**\n         * 配置和初始化工具栏\n         * Set toolbar and Initialization\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setToolbar : function() {\n            var settings    = this.settings;  \n            \n            if(settings.readOnly) {\n                return this;\n            }\n            \n            var editor      = this.editor;\n            var preview     = this.preview;\n            var classPrefix = this.classPrefix;\n            \n            var toolbar     = this.toolbar = editor.children(\".\" + classPrefix + \"toolbar\");\n            \n            if (settings.toolbar && toolbar.length < 1)\n            {            \n                var toolbarHTML = \"<div class=\\\"\" + classPrefix + \"toolbar\\\"><div class=\\\"\" + classPrefix + \"toolbar-container\\\"><ul class=\\\"\" + classPrefix + \"menu\\\"></ul></div></div>\";\n                \n                editor.append(toolbarHTML);\n                toolbar = this.toolbar = editor.children(\".\" + classPrefix + \"toolbar\");\n            }\n            \n            if (!settings.toolbar) \n            {\n                toolbar.hide();\n                \n                return this;\n            }\n            \n            toolbar.show();\n            \n            var icons       = (typeof settings.toolbarIcons === \"function\") ? settings.toolbarIcons() \n                            : ((typeof settings.toolbarIcons === \"string\")  ? editormd.toolbarModes[settings.toolbarIcons] : settings.toolbarIcons);\n            \n            var toolbarMenu = toolbar.find(\".\" + this.classPrefix + \"menu\"), menu = \"\";\n            var pullRight   = false;\n            \n            for (var i = 0, len = icons.length; i < len; i++)\n            {\n                var name = icons[i];\n\n                if (name === \"||\") \n                { \n                    pullRight = true;\n                } \n                else if (name === \"|\")\n                {\n                    menu += \"<li class=\\\"divider\\\" unselectable=\\\"on\\\">|</li>\";\n                }\n                else\n                {\n                    var isHeader = (/h(\\d)/.test(name));\n                    var index    = name;\n                    \n                    if (name === \"watch\" && !settings.watch) {\n                        index = \"unwatch\";\n                    }\n                    \n                    var title     = settings.lang.toolbar[index];\n                    var iconTexts = settings.toolbarIconTexts[index];\n                    var iconClass = settings.toolbarIconsClass[index];\n                    \n                    title     = (typeof title     === \"undefined\") ? \"\" : title;\n                    iconTexts = (typeof iconTexts === \"undefined\") ? \"\" : iconTexts;\n                    iconClass = (typeof iconClass === \"undefined\") ? \"\" : iconClass;\n\n                    var menuItem = pullRight ? \"<li class=\\\"pull-right\\\">\" : \"<li>\";\n                    \n                    if (typeof settings.toolbarCustomIcons[name] !== \"undefined\" && typeof settings.toolbarCustomIcons[name] !== \"function\")\n                    {\n                        menuItem += settings.toolbarCustomIcons[name];\n                    }\n                    else \n                    {\n                        menuItem += \"<a href=\\\"javascript:;\\\" title=\\\"\" + title + \"\\\" unselectable=\\\"on\\\">\";\n                        menuItem += \"<i class=\\\"fa \" + iconClass + \"\\\" name=\\\"\"+name+\"\\\" unselectable=\\\"on\\\">\"+((isHeader) ? name.toUpperCase() : ( (iconClass === \"\") ? iconTexts : \"\") ) + \"</i>\";\n                        menuItem += \"</a>\";\n                    }\n\n                    menuItem += \"</li>\";\n\n                    menu = pullRight ? menuItem + menu : menu + menuItem;\n                }\n            }\n\n            toolbarMenu.html(menu);\n            \n            toolbarMenu.find(\"[title=\\\"Lowercase\\\"]\").attr(\"title\", settings.lang.toolbar.lowercase);\n            toolbarMenu.find(\"[title=\\\"ucwords\\\"]\").attr(\"title\", settings.lang.toolbar.ucwords);\n            \n            this.setToolbarHandler();\n            this.setToolbarAutoFixed();\n\n            return this;\n        },\n        \n        /**\n         * 工具栏图标事件处理对象序列\n         * Get toolbar icons event handlers\n         * \n         * @param   {Object}   cm    CodeMirror的实例对象\n         * @param   {String}   name  要获取的事件处理器名称\n         * @returns {Object}         返回处理对象序列\n         */\n            \n        dialogLockScreen : function() {\n            $.proxy(editormd.dialogLockScreen, this)();\n            \n            return this;\n        },\n\n        dialogShowMask : function(dialog) {\n            $.proxy(editormd.dialogShowMask, this)(dialog);\n            \n            return this;\n        },\n        \n        getToolbarHandles : function(name) {  \n            var toolbarHandlers = this.toolbarHandlers = editormd.toolbarHandlers;\n            \n            return (name && typeof toolbarIconHandlers[name] !== \"undefined\") ? toolbarHandlers[name] : toolbarHandlers;\n        },\n        \n        /**\n         * 工具栏图标事件处理器\n         * Bind toolbar icons event handle\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        setToolbarHandler : function() {\n            var _this               = this;\n            var settings            = this.settings;\n            \n            if (!settings.toolbar || settings.readOnly) {\n                return this;\n            }\n            \n            var toolbar             = this.toolbar;\n            var cm                  = this.cm;\n            var classPrefix         = this.classPrefix;           \n            var toolbarIcons        = this.toolbarIcons = toolbar.find(\".\" + classPrefix + \"menu > li > a\");  \n            var toolbarIconHandlers = this.getToolbarHandles();  \n                \n            toolbarIcons.bind(editormd.mouseOrTouch(\"click\", \"touchend\"), function(event) {\n\n                var icon                = $(this).children(\".fa\");\n                var name                = icon.attr(\"name\");\n                var cursor              = cm.getCursor();\n                var selection           = cm.getSelection();\n\n                if (name === \"\") {\n                    return ;\n                }\n                \n                _this.activeIcon = icon;\n\n                if (typeof toolbarIconHandlers[name] !== \"undefined\") \n                {\n                    $.proxy(toolbarIconHandlers[name], _this)(cm);\n                }\n                else \n                {\n                    if (typeof settings.toolbarHandlers[name] !== \"undefined\") \n                    {\n                        $.proxy(settings.toolbarHandlers[name], _this)(cm, icon, cursor, selection);\n                    }\n                }\n                \n                if (name !== \"link\" && name !== \"reference-link\" && name !== \"image\" && name !== \"code-block\" && \n                    name !== \"preformatted-text\" && name !== \"watch\" && name !== \"preview\" && name !== \"search\" && name !== \"fullscreen\" && name !== \"info\") \n                {\n                    cm.focus();\n                }\n\n                return false;\n\n            });\n\n            return this;\n        },\n        \n        /**\n         * 动态创建对话框\n         * Creating custom dialogs\n         * \n         * @param   {Object} options  配置项键值对 Key/Value\n         * @returns {dialog}          返回创建的dialog的jQuery实例对象\n         */\n        \n        createDialog : function(options) {            \n            return $.proxy(editormd.createDialog, this)(options);\n        },\n        \n        /**\n         * 创建关于Editor.md的对话框\n         * Create about Editor.md dialog\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        createInfoDialog : function() {\n            var _this        = this;\n\t\t\tvar editor       = this.editor;\n            var classPrefix  = this.classPrefix;  \n            \n            var infoDialogHTML = [\n                \"<div class=\\\"\" + classPrefix + \"dialog \" + classPrefix + \"dialog-info\\\" style=\\\"\\\">\",\n                \"<div class=\\\"\" + classPrefix + \"dialog-container\\\">\",\n                \"<h1><i class=\\\"editormd-logo editormd-logo-lg editormd-logo-color\\\"></i> \" + editormd.title + \"<small>v\" + editormd.version + \"</small></h1>\",\n                \"<p>\" + this.lang.description + \"</p>\",\n                \"<p style=\\\"margin: 10px 0 20px 0;\\\"><a href=\\\"\" + editormd.homePage + \"\\\" target=\\\"_blank\\\">\" + editormd.homePage + \" <i class=\\\"fa fa-external-link\\\"></i></a></p>\",\n                \"<p style=\\\"font-size: 0.85em;\\\">Copyright &copy; 2015 <a href=\\\"https://github.com/pandao\\\" target=\\\"_blank\\\" class=\\\"hover-link\\\">Pandao</a>, The <a href=\\\"https://github.com/pandao/editor.md/blob/master/LICENSE\\\" target=\\\"_blank\\\" class=\\\"hover-link\\\">MIT</a> License.</p>\",\n                \"</div>\",\n                \"<a href=\\\"javascript:;\\\" class=\\\"fa fa-close \" + classPrefix + \"dialog-close\\\"></a>\",\n                \"</div>\"\n            ].join(\"\\n\");\n\n            editor.append(infoDialogHTML);\n            \n            var infoDialog  = this.infoDialog = editor.children(\".\" + classPrefix + \"dialog-info\");\n\n            infoDialog.find(\".\" + classPrefix + \"dialog-close\").bind(editormd.mouseOrTouch(\"click\", \"touchend\"), function() {\n                _this.hideInfoDialog();\n            });\n            \n            infoDialog.css(\"border\", (editormd.isIE8) ? \"1px solid #ddd\" : \"\").css(\"z-index\", editormd.dialogZindex).show();\n            \n            this.infoDialogPosition();\n\n            return this;\n        },\n        \n        /**\n         * 关于Editor.md对话居中定位\n         * Editor.md dialog position handle\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        infoDialogPosition : function() {\n            var infoDialog = this.infoDialog;\n            \n\t\t\tvar _infoDialogPosition = function() {\n\t\t\t\tinfoDialog.css({\n\t\t\t\t\ttop  : ($(window).height() - infoDialog.height()) / 2 + \"px\",\n\t\t\t\t\tleft : ($(window).width()  - infoDialog.width()) / 2  + \"px\"\n\t\t\t\t});\n\t\t\t};\n\n\t\t\t_infoDialogPosition();\n\n\t\t\t$(window).resize(_infoDialogPosition);\n            \n            return this;\n        },\n        \n        /**\n         * 显示关于Editor.md\n         * Display about Editor.md dialog\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        showInfoDialog : function() {\n\n            $(\"html,body\").css(\"overflow-x\", \"hidden\");\n            \n            var _this       = this;\n\t\t\tvar editor      = this.editor;\n            var settings    = this.settings;         \n\t\t\tvar infoDialog  = this.infoDialog = editor.children(\".\" + this.classPrefix + \"dialog-info\");\n            \n            if (infoDialog.length < 1)\n            {\n                this.createInfoDialog();\n            }\n            \n            this.lockScreen(true);\n            \n            this.mask.css({\n\t\t\t\t\t\topacity         : settings.dialogMaskOpacity,\n\t\t\t\t\t\tbackgroundColor : settings.dialogMaskBgColor\n\t\t\t\t\t}).show();\n\n\t\t\tinfoDialog.css(\"z-index\", editormd.dialogZindex).show();\n\n\t\t\tthis.infoDialogPosition();\n\n            return this;\n        },\n        \n        /**\n         * 隐藏关于Editor.md\n         * Hide about Editor.md dialog\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        hideInfoDialog : function() {            \n            $(\"html,body\").css(\"overflow-x\", \"\");\n            this.infoDialog.hide();\n            this.mask.hide();\n            this.lockScreen(false);\n\n            return this;\n        },\n        \n        /**\n         * 锁屏\n         * lock screen\n         * \n         * @param   {Boolean}    lock    Boolean 布尔值，是否锁屏\n         * @returns {editormd}           返回editormd的实例对象\n         */\n        \n        lockScreen : function(lock) {\n            editormd.lockScreen(lock);\n            this.resize();\n\n            return this;\n        },\n        \n        /**\n         * 编辑器界面重建，用于动态语言包或模块加载等\n         * Recreate editor\n         * \n         * @returns {editormd}  返回editormd的实例对象\n         */\n        \n        recreate : function() {\n            var _this            = this;\n            var editor           = this.editor;\n            var settings         = this.settings;\n            \n            this.codeMirror.remove();\n            \n            this.setCodeMirror();\n\n            if (!settings.readOnly) \n            {\n                if (editor.find(\".editormd-dialog\").length > 0) {\n                    editor.find(\".editormd-dialog\").remove();\n                }\n                \n                if (settings.toolbar) \n                {  \n                    this.getToolbarHandles();                  \n                    this.setToolbar();\n                }\n            }\n            \n            this.loadedDisplay(true);\n\n            return this;\n        },\n        \n        /**\n         * 高亮预览HTML的pre代码部分\n         * highlight of preview codes\n         * \n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        previewCodeHighlight : function() {    \n            var settings         = this.settings;\n            var previewContainer = this.previewContainer;\n            \n            if (settings.previewCodeHighlight) \n            {\n                previewContainer.find(\"pre\").addClass(\"prettyprint linenums\");\n                \n                if (typeof prettyPrint !== \"undefined\")\n                {                    \n                    prettyPrint();\n                }\n            }\n\n            return this;\n        },\n        \n        /**\n         * 解析TeX(KaTeX)科学公式\n         * TeX(KaTeX) Renderer\n         * \n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        katexRender : function() {\n            \n            if (timer === null)\n            {\n                return this;\n            }\n            \n            this.previewContainer.find(\".\" + editormd.classNames.tex).each(function(){\n                var tex  = $(this);\n                editormd.$katex.render(tex.text(), tex[0]);\n                \n                tex.find(\".katex\").css(\"font-size\", \"1.6em\");\n            });   \n\n            return this;\n        },\n        \n        /**\n         * 解析和渲染流程图及时序图\n         * FlowChart and SequenceDiagram Renderer\n         * \n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        flowChartAndSequenceDiagramRender : function() {\n            var $this            = this;\n            var settings         = this.settings;\n            var previewContainer = this.previewContainer;\n            \n            if (editormd.isIE8) {\n                return this;\n            }\n\n            if (settings.flowChart) {\n                if (flowchartTimer === null) {\n                    return this;\n                }\n                \n                previewContainer.find(\".flowchart\").flowChart(); \n            }\n\n            if (settings.sequenceDiagram) {\n                previewContainer.find(\".sequence-diagram\").sequenceDiagram({theme: \"simple\"});\n            }\n                    \n            var preview    = $this.preview;\n            var codeMirror = $this.codeMirror;\n            var codeView   = codeMirror.find(\".CodeMirror-scroll\");\n\n            var height    = codeView.height();\n            var scrollTop = codeView.scrollTop();                    \n            var percent   = (scrollTop / codeView[0].scrollHeight);\n            var tocHeight = 0;\n\n            preview.find(\".markdown-toc-list\").each(function(){\n                tocHeight += $(this).height();\n            });\n\n            var tocMenuHeight = preview.find(\".editormd-toc-menu\").height(); \n            tocMenuHeight = (!tocMenuHeight) ? 0 : tocMenuHeight;\n\n            if (scrollTop === 0) \n            {\n                preview.scrollTop(0);\n            } \n            else if (scrollTop + height >= codeView[0].scrollHeight - 16)\n            { \n                preview.scrollTop(preview[0].scrollHeight);                        \n            } \n            else\n            {                  \n                preview.scrollTop((preview[0].scrollHeight + tocHeight + tocMenuHeight) * percent);\n            }\n\n            return this;\n        },\n        \n        /**\n         * 注册键盘快捷键处理\n         * Register CodeMirror keyMaps (keyboard shortcuts).\n         * \n         * @param   {Object}    keyMap      KeyMap key/value {\"(Ctrl/Shift/Alt)-Key\" : function(){}}\n         * @returns {editormd}              return this\n         */\n        \n        registerKeyMaps : function(keyMap) {\n            \n            var _this           = this;\n            var cm              = this.cm;\n            var settings        = this.settings;\n            var toolbarHandlers = editormd.toolbarHandlers;\n            var disabledKeyMaps = settings.disabledKeyMaps;\n            \n            keyMap              = keyMap || null;\n            \n            if (keyMap)\n            {\n                for (var i in keyMap)\n                {\n                    if ($.inArray(i, disabledKeyMaps) < 0)\n                    {\n                        var map = {};\n                        map[i]  = keyMap[i];\n\n                        cm.addKeyMap(keyMap);\n                    }\n                }\n            }\n            else\n            {\n                for (var k in editormd.keyMaps)\n                {\n                    var _keyMap = editormd.keyMaps[k];\n                    var handle = (typeof _keyMap === \"string\") ? $.proxy(toolbarHandlers[_keyMap], _this) : $.proxy(_keyMap, _this);\n                    \n                    if ($.inArray(k, [\"F9\", \"F10\", \"F11\"]) < 0 && $.inArray(k, disabledKeyMaps) < 0)\n                    {\n                        var _map = {};\n                        _map[k] = handle;\n\n                        cm.addKeyMap(_map);\n                    }\n                }\n                \n                $(window).keydown(function(event) {\n                    \n                    var keymaps = {\n                        \"120\" : \"F9\",\n                        \"121\" : \"F10\",\n                        \"122\" : \"F11\"\n                    };\n                    \n                    if ( $.inArray(keymaps[event.keyCode], disabledKeyMaps) < 0 )\n                    {\n                        switch (event.keyCode)\n                        {\n                            case 120:\n                                    $.proxy(toolbarHandlers[\"watch\"], _this)();\n                                    return false;\n                                break;\n                                \n                            case 121:\n                                    $.proxy(toolbarHandlers[\"preview\"], _this)();\n                                    return false;\n                                break;\n                                \n                            case 122:\n                                    $.proxy(toolbarHandlers[\"fullscreen\"], _this)();                        \n                                    return false;\n                                break;\n                                \n                            default:\n                                break;\n                        }\n                    }\n                });\n            }\n\n            return this;\n        },\n        \n        /**\n         * 绑定同步滚动\n         * \n         * @returns {editormd} return this\n         */\n        \n        bindScrollEvent : function() {\n            \n            var _this            = this;\n            var preview          = this.preview;\n            var settings         = this.settings;\n            var codeMirror       = this.codeMirror;\n            var mouseOrTouch     = editormd.mouseOrTouch;\n            \n            if (!settings.syncScrolling) {\n                return this;\n            }\n                \n            var cmBindScroll = function() {    \n                codeMirror.find(\".CodeMirror-scroll\").bind(mouseOrTouch(\"scroll\", \"touchmove\"), function(event) {\n                    var height    = $(this).height();\n                    var scrollTop = $(this).scrollTop();                    \n                    var percent   = (scrollTop / $(this)[0].scrollHeight);\n                    \n                    var tocHeight = 0;\n                    \n                    preview.find(\".markdown-toc-list\").each(function(){\n                        tocHeight += $(this).height();\n                    });\n                    \n                    var tocMenuHeight = preview.find(\".editormd-toc-menu\").height();\n                    tocMenuHeight = (!tocMenuHeight) ? 0 : tocMenuHeight;\n\n                    if (scrollTop === 0) \n                    {\n                        preview.scrollTop(0);\n                    } \n                    else if (scrollTop + height >= $(this)[0].scrollHeight - 16)\n                    { \n                        preview.scrollTop(preview[0].scrollHeight);                        \n                    } \n                    else\n                    {\n                        preview.scrollTop((preview[0].scrollHeight  + tocHeight + tocMenuHeight) * percent);\n                    }\n                    \n                    $.proxy(settings.onscroll, _this)(event);\n                });\n            };\n\n            var cmUnbindScroll = function() {\n                codeMirror.find(\".CodeMirror-scroll\").unbind(mouseOrTouch(\"scroll\", \"touchmove\"));\n            };\n\n            var previewBindScroll = function() {\n                \n                preview.bind(mouseOrTouch(\"scroll\", \"touchmove\"), function(event) {\n                    var height    = $(this).height();\n                    var scrollTop = $(this).scrollTop();         \n                    var percent   = (scrollTop / $(this)[0].scrollHeight);\n                    var codeView  = codeMirror.find(\".CodeMirror-scroll\");\n\n                    if(scrollTop === 0) \n                    {\n                        codeView.scrollTop(0);\n                    }\n                    else if (scrollTop + height >= $(this)[0].scrollHeight)\n                    {\n                        codeView.scrollTop(codeView[0].scrollHeight);                        \n                    }\n                    else \n                    {\n                        codeView.scrollTop(codeView[0].scrollHeight * percent);\n                    }\n                    \n                    $.proxy(settings.onpreviewscroll, _this)(event);\n                });\n\n            };\n\n            var previewUnbindScroll = function() {\n                preview.unbind(mouseOrTouch(\"scroll\", \"touchmove\"));\n            }; \n\n\t\t\tcodeMirror.bind({\n\t\t\t\tmouseover  : cmBindScroll,\n\t\t\t\tmouseout   : cmUnbindScroll,\n\t\t\t\ttouchstart : cmBindScroll,\n\t\t\t\ttouchend   : cmUnbindScroll\n\t\t\t});\n            \n            if (settings.syncScrolling === \"single\") {\n                return this;\n            }\n            \n\t\t\tpreview.bind({\n\t\t\t\tmouseover  : previewBindScroll,\n\t\t\t\tmouseout   : previewUnbindScroll,\n\t\t\t\ttouchstart : previewBindScroll,\n\t\t\t\ttouchend   : previewUnbindScroll\n\t\t\t});\n\n            return this;\n        },\n        \n        bindChangeEvent : function() {\n            \n            var _this            = this;\n            var cm               = this.cm;\n            var settings         = this.settings;\n            \n            if (!settings.syncScrolling) {\n                return this;\n            }\n            \n            cm.on(\"change\", function(_cm, changeObj) {\n                \n                if (settings.watch)\n                {\n                    _this.previewContainer.css(\"padding\", settings.autoHeight ? \"20px 20px 50px 40px\" : \"20px\");\n                }\n                \n                timer = setTimeout(function() {\n                    clearTimeout(timer);\n                    _this.save();\n                    timer = null;\n                }, settings.delay);\n            });\n\n            return this;\n        },\n        \n        /**\n         * 加载队列完成之后的显示处理\n         * Display handle of the module queues loaded after.\n         * \n         * @param   {Boolean}   recreate   是否为重建编辑器\n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        loadedDisplay : function(recreate) {\n            \n            recreate             = recreate || false;\n            \n            var _this            = this;\n            var editor           = this.editor;\n            var preview          = this.preview;\n            var settings         = this.settings;\n            \n            this.containerMask.hide();\n            \n            this.save();\n            \n            if (settings.watch) {\n                preview.show();\n            }\n            \n            editor.data(\"oldWidth\", editor.width()).data(\"oldHeight\", editor.height()); // 为了兼容Zepto\n            \n            this.resize();\n            this.registerKeyMaps();\n            \n            $(window).resize(function(){\n                _this.resize();\n            });\n            \n            this.bindScrollEvent().bindChangeEvent();\n            \n            if (!recreate)\n            {\n                $.proxy(settings.onload, this)();\n            }\n            \n            this.state.loaded = true;\n\n            return this;\n        },\n        \n        /**\n         * 设置编辑器的宽度\n         * Set editor width\n         * \n         * @param   {Number|String} width  编辑器宽度值\n         * @returns {editormd}             返回editormd的实例对象\n         */\n        \n        width : function(width) {\n                \n            this.editor.css(\"width\", (typeof width === \"number\") ? width  + \"px\" : width);            \n            this.resize();\n            \n            return this;\n        },\n        \n        /**\n         * 设置编辑器的高度\n         * Set editor height\n         * \n         * @param   {Number|String} height  编辑器高度值\n         * @returns {editormd}              返回editormd的实例对象\n         */\n        \n        height : function(height) {\n                \n            this.editor.css(\"height\", (typeof height === \"number\")  ? height  + \"px\" : height);            \n            this.resize();\n            \n            return this;\n        },\n        \n        /**\n         * 调整编辑器的尺寸和布局\n         * Resize editor layout\n         * \n         * @param   {Number|String} [width=null]  编辑器宽度值\n         * @param   {Number|String} [height=null] 编辑器高度值\n         * @returns {editormd}                    返回editormd的实例对象\n         */\n        \n        resize : function(width, height) {\n            \n            width  = width  || null;\n            height = height || null;\n            \n            var state      = this.state;\n            var editor     = this.editor;\n            var preview    = this.preview;\n            var toolbar    = this.toolbar;\n            var settings   = this.settings;\n            var codeMirror = this.codeMirror;\n            \n            if (width)\n            {\n                editor.css(\"width\", (typeof width  === \"number\") ? width  + \"px\" : width);\n            }\n            \n            if (settings.autoHeight && !state.fullscreen && !state.preview)\n            {\n                editor.css(\"height\", \"auto\");\n                codeMirror.css(\"height\", \"auto\");\n            } \n            else \n            {\n                if (height) \n                {\n                    editor.css(\"height\", (typeof height === \"number\") ? height + \"px\" : height);\n                }\n                \n                if (state.fullscreen)\n                {\n                    editor.height($(window).height());\n                }\n\n                if (settings.toolbar && !settings.readOnly) \n                {\n                    codeMirror.css(\"margin-top\", toolbar.height() + 1).height(editor.height() - toolbar.height());\n                } \n                else\n                {\n                    codeMirror.css(\"margin-top\", 0).height(editor.height());\n                }\n            }\n            \n            if(settings.watch) \n            {\n                codeMirror.width(editor.width() / 2);\n                preview.width((!state.preview) ? editor.width() / 2 : editor.width());\n                \n                this.previewContainer.css(\"padding\", settings.autoHeight ? \"20px 20px 50px 40px\" : \"20px\");\n                \n                if (settings.toolbar && !settings.readOnly) \n                {\n                    preview.css(\"top\", toolbar.height() + 1);\n                } \n                else \n                {\n                    preview.css(\"top\", 0);\n                }\n                \n                if (settings.autoHeight && !state.fullscreen && !state.preview)\n                {\n                    preview.height(\"\");\n                }\n                else\n                {                \n                    var previewHeight = (settings.toolbar && !settings.readOnly) ? editor.height() - toolbar.height() : editor.height();\n                    \n                    preview.height(previewHeight);\n                }\n            } \n            else \n            {\n                codeMirror.width(editor.width());\n                preview.hide();\n            }\n            \n            if (state.loaded) \n            {\n                $.proxy(settings.onresize, this)();\n            }\n\n            return this;\n        },\n        \n        /**\n         * 解析和保存Markdown代码\n         * Parse & Saving Markdown source code\n         * \n         * @returns {editormd}     返回editormd的实例对象\n         */\n        \n        save : function() {\n            \n            if (timer === null)\n            {\n                return this;\n            }\n            \n            var _this            = this;\n            var state            = this.state;\n            var settings         = this.settings;\n            var cm               = this.cm;            \n            var cmValue          = cm.getValue();\n            var previewContainer = this.previewContainer;\n\n            if (settings.mode !== \"gfm\" && settings.mode !== \"markdown\") \n            {\n                this.markdownTextarea.val(cmValue);\n                \n                return this;\n            }\n            \n            var marked          = editormd.$marked;\n            var markdownToC     = this.markdownToC = [];            \n            var rendererOptions = this.markedRendererOptions = {  \n                toc                  : settings.toc,\n                tocm                 : settings.tocm,\n                tocStartLevel        : settings.tocStartLevel,\n                pageBreak            : settings.pageBreak,\n                taskList             : settings.taskList,\n                emoji                : settings.emoji,\n                tex                  : settings.tex,\n                atLink               : settings.atLink,           // for @link\n                emailLink            : settings.emailLink,        // for mail address auto link\n                flowChart            : settings.flowChart,\n                sequenceDiagram      : settings.sequenceDiagram,\n                previewCodeHighlight : settings.previewCodeHighlight,\n            };\n            \n            var markedOptions = this.markedOptions = {\n                renderer    : editormd.markedRenderer(markdownToC, rendererOptions),\n                gfm         : true,\n                tables      : true,\n                breaks      : true,\n                pedantic    : false,\n                sanitize    : (settings.htmlDecode) ? false : true,  // 关闭忽略HTML标签，即开启识别HTML标签，默认为false\n                smartLists  : true,\n                smartypants : true\n            };\n            \n            marked.setOptions(markedOptions);\n                    \n            var newMarkdownDoc = editormd.$marked(cmValue, markedOptions);\n            \n            //console.info(\"cmValue\", cmValue, newMarkdownDoc);\n            \n            newMarkdownDoc = editormd.filterHTMLTags(newMarkdownDoc, settings.htmlDecode);\n            \n            //console.error(\"cmValue\", cmValue, newMarkdownDoc);\n            \n            this.markdownTextarea.text(cmValue);\n            \n            cm.save();\n            \n            if (settings.saveHTMLToTextarea) \n            {\n                this.htmlTextarea.text(newMarkdownDoc);\n            }\n            \n            if(settings.watch || (!settings.watch && state.preview))\n            {\n                previewContainer.html(newMarkdownDoc);\n\n                this.previewCodeHighlight();\n                \n                if (settings.toc) \n                {\n                    var tocContainer = (settings.tocContainer === \"\") ? previewContainer : $(settings.tocContainer);\n                    var tocMenu      = tocContainer.find(\".\" + this.classPrefix + \"toc-menu\");\n                    \n                    tocContainer.attr(\"previewContainer\", (settings.tocContainer === \"\") ? \"true\" : \"false\");\n                    \n                    if (settings.tocContainer !== \"\" && tocMenu.length > 0)\n                    {\n                        tocMenu.remove();\n                    }\n                    \n                    editormd.markdownToCRenderer(markdownToC, tocContainer, settings.tocDropdown, settings.tocStartLevel);\n            \n                    if (settings.tocDropdown || tocContainer.find(\".\" + this.classPrefix + \"toc-menu\").length > 0)\n                    {\n                        editormd.tocDropdownMenu(tocContainer, (settings.tocTitle !== \"\") ? settings.tocTitle : this.lang.tocTitle);\n                    }\n            \n                    if (settings.tocContainer !== \"\")\n                    {\n                        previewContainer.find(\".markdown-toc\").css(\"border\", \"none\");\n                    }\n                }\n                \n                if (settings.tex)\n                {\n                    if (!editormd.kaTeXLoaded && settings.autoLoadModules) \n                    {\n                        editormd.loadKaTeX(function() {\n                            editormd.$katex = katex;\n                            editormd.kaTeXLoaded = true;\n                            _this.katexRender();\n                        });\n                    } \n                    else \n                    {\n                        editormd.$katex = katex;\n                        this.katexRender();\n                    }\n                }                \n                \n                if (settings.flowChart || settings.sequenceDiagram)\n                {\n                    flowchartTimer = setTimeout(function(){\n                        clearTimeout(flowchartTimer);\n                        _this.flowChartAndSequenceDiagramRender();\n                        flowchartTimer = null;\n                    }, 10);\n                }\n\n                if (state.loaded) \n                {\n                    $.proxy(settings.onchange, this)();\n                }\n            }\n\n            return this;\n        },\n        \n        /**\n         * 聚焦光标位置\n         * Focusing the cursor position\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        focus : function() {\n            this.cm.focus();\n\n            return this;\n        },\n        \n        /**\n         * 设置光标的位置\n         * Set cursor position\n         * \n         * @param   {Object}    cursor 要设置的光标位置键值对象，例：{line:1, ch:0}\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        setCursor : function(cursor) {\n            this.cm.setCursor(cursor);\n\n            return this;\n        },\n        \n        /**\n         * 获取当前光标的位置\n         * Get the current position of the cursor\n         * \n         * @returns {Cursor}         返回一个光标Cursor对象\n         */\n        \n        getCursor : function() {\n            return this.cm.getCursor();\n        },\n        \n        /**\n         * 设置光标选中的范围\n         * Set cursor selected ranges\n         * \n         * @param   {Object}    from   开始位置的光标键值对象，例：{line:1, ch:0}\n         * @param   {Object}    to     结束位置的光标键值对象，例：{line:1, ch:0}\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        setSelection : function(from, to) {\n        \n            this.cm.setSelection(from, to);\n        \n            return this;\n        },\n        \n        /**\n         * 获取光标选中的文本\n         * Get the texts from cursor selected\n         * \n         * @returns {String}         返回选中文本的字符串形式\n         */\n        \n        getSelection : function() {\n            return this.cm.getSelection();\n        },\n        \n        /**\n         * 设置光标选中的文本范围\n         * Set the cursor selection ranges\n         * \n         * @param   {Array}    ranges  cursor selection ranges array\n         * @returns {Array}            return this\n         */\n        \n        setSelections : function(ranges) {\n            this.cm.setSelections(ranges);\n            \n            return this;\n        },\n        \n        /**\n         * 获取光标选中的文本范围\n         * Get the cursor selection ranges\n         * \n         * @returns {Array}         return selection ranges array\n         */\n        \n        getSelections : function() {\n            return this.cm.getSelections();\n        },\n        \n        /**\n         * 替换当前光标选中的文本或在当前光标处插入新字符\n         * Replace the text at the current cursor selected or insert a new character at the current cursor position\n         * \n         * @param   {String}    value  要插入的字符值\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        replaceSelection : function(value) {\n            this.cm.replaceSelection(value);\n\n            return this;\n        },\n        \n        /**\n         * 在当前光标处插入新字符\n         * Insert a new character at the current cursor position\n         *\n         * 同replaceSelection()方法\n         * With the replaceSelection() method\n         * \n         * @param   {String}    value  要插入的字符值\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        insertValue : function(value) {\n            this.replaceSelection(value);\n\n            return this;\n        },\n        \n        /**\n         * 追加markdown\n         * append Markdown to editor\n         * \n         * @param   {String}    md     要追加的markdown源文档\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        appendMarkdown : function(md) {\n            var settings = this.settings;\n            var cm       = this.cm;\n            \n            cm.setValue(cm.getValue() + md);\n            \n            return this;\n        },\n        \n        /**\n         * 设置和传入编辑器的markdown源文档\n         * Set Markdown source document\n         * \n         * @param   {String}    md     要传入的markdown源文档\n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        setMarkdown : function(md) {\n            this.cm.setValue(md || this.settings.markdown);\n            \n            return this;\n        },\n        \n        /**\n         * 获取编辑器的markdown源文档\n         * Set Editor.md markdown/CodeMirror value\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        getMarkdown : function() {\n            return this.cm.getValue();\n        },\n        \n        /**\n         * 获取编辑器的源文档\n         * Get CodeMirror value\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        getValue : function() {\n            return this.cm.getValue();\n        },\n        \n        /**\n         * 设置编辑器的源文档\n         * Set CodeMirror value\n         * \n         * @param   {String}     value   set code/value/string/text\n         * @returns {editormd}           返回editormd的实例对象\n         */\n        \n        setValue : function(value) {\n            this.cm.setValue(value);\n            \n            return this;\n        },\n        \n        /**\n         * 清空编辑器\n         * Empty CodeMirror editor container\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        clear : function() {\n            this.cm.setValue(\"\");\n            \n            return this;\n        },\n        \n        /**\n         * 获取解析后存放在Textarea的HTML源码\n         * Get parsed html code from Textarea\n         * \n         * @returns {String}               返回HTML源码\n         */\n        \n        getHTML : function() {\n            if (!this.settings.saveHTMLToTextarea)\n            {\n                alert(\"Error: settings.saveHTMLToTextarea == false\");\n\n                return false;\n            }\n            \n            return this.htmlTextarea.val();\n        },\n        \n        /**\n         * getHTML()的别名\n         * getHTML (alias)\n         * \n         * @returns {String}           Return html code 返回HTML源码\n         */\n        \n        getTextareaSavedHTML : function() {\n            return this.getHTML();\n        },\n        \n        /**\n         * 获取预览窗口的HTML源码\n         * Get html from preview container\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        getPreviewedHTML : function() {\n            if (!this.settings.watch)\n            {\n                alert(\"Error: settings.watch == false\");\n\n                return false;\n            }\n            \n            return this.previewContainer.html();\n        },\n        \n        /**\n         * 开启实时预览\n         * Enable real-time watching\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        watch : function(callback) {     \n            var settings        = this.settings;\n            \n            if ($.inArray(settings.mode, [\"gfm\", \"markdown\"]) < 0)\n            {\n                return this;\n            }\n            \n            this.state.watching = settings.watch = true;\n            this.preview.show();\n            \n            if (this.toolbar)\n            {\n                var watchIcon   = settings.toolbarIconsClass.watch;\n                var unWatchIcon = settings.toolbarIconsClass.unwatch;\n                \n                var icon        = this.toolbar.find(\".fa[name=watch]\");\n                icon.parent().attr(\"title\", settings.lang.toolbar.watch);\n                icon.removeClass(unWatchIcon).addClass(watchIcon);\n            }\n            \n            this.codeMirror.css(\"border-right\", \"1px solid #ddd\").width(this.editor.width() / 2); \n            \n            timer = 0;\n            \n            this.save().resize();\n            \n            if (!settings.onwatch)\n            {\n                settings.onwatch = callback || function() {};\n            }\n            \n            $.proxy(settings.onwatch, this)();\n            \n            return this;\n        },\n        \n        /**\n         * 关闭实时预览\n         * Disable real-time watching\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        unwatch : function(callback) {\n            var settings        = this.settings;\n            this.state.watching = settings.watch = false;\n            this.preview.hide();\n            \n            if (this.toolbar) \n            {\n                var watchIcon   = settings.toolbarIconsClass.watch;\n                var unWatchIcon = settings.toolbarIconsClass.unwatch;\n                \n                var icon    = this.toolbar.find(\".fa[name=watch]\");\n                icon.parent().attr(\"title\", settings.lang.toolbar.unwatch);\n                icon.removeClass(watchIcon).addClass(unWatchIcon);\n            }\n            \n            this.codeMirror.css(\"border-right\", \"none\").width(this.editor.width());\n            \n            this.resize();\n            \n            if (!settings.onunwatch)\n            {\n                settings.onunwatch = callback || function() {};\n            }\n            \n            $.proxy(settings.onunwatch, this)();\n            \n            return this;\n        },\n        \n        /**\n         * 显示编辑器\n         * Show editor\n         * \n         * @param   {Function} [callback=function()] 回调函数\n         * @returns {editormd}                       返回editormd的实例对象\n         */\n        \n        show : function(callback) {\n            callback  = callback || function() {};\n            \n            var _this = this;\n            this.editor.show(0, function() {\n                $.proxy(callback, _this)();\n            });\n            \n            return this;\n        },\n        \n        /**\n         * 隐藏编辑器\n         * Hide editor\n         * \n         * @param   {Function} [callback=function()] 回调函数\n         * @returns {editormd}                       返回editormd的实例对象\n         */\n        \n        hide : function(callback) {\n            callback  = callback || function() {};\n            \n            var _this = this;\n            this.editor.hide(0, function() {\n                $.proxy(callback, _this)();\n            });\n            \n            return this;\n        },\n        \n        /**\n         * 隐藏编辑器部分，只预览HTML\n         * Enter preview html state\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        previewing : function() {\n            \n            var _this            = this;\n            var editor           = this.editor;\n            var preview          = this.preview;\n            var toolbar          = this.toolbar;\n            var settings         = this.settings;\n            var codeMirror       = this.codeMirror;\n            var previewContainer = this.previewContainer;\n            \n            if ($.inArray(settings.mode, [\"gfm\", \"markdown\"]) < 0) {\n                return this;\n            }\n            \n            if (settings.toolbar && toolbar) {\n                toolbar.toggle();\n                toolbar.find(\".fa[name=preview]\").toggleClass(\"active\");\n            }\n            \n            codeMirror.toggle();\n            \n            var escHandle = function(event) {\n                if (event.shiftKey && event.keyCode === 27) {\n                    _this.previewed();\n                }\n            };\n\n            if (codeMirror.css(\"display\") === \"none\") // 为了兼容Zepto，而不使用codeMirror.is(\":hidden\")\n            {\n                this.state.preview = true;\n\n                if (this.state.fullscreen) {\n                    preview.css(\"background\", \"#fff\");\n                }\n                \n                editor.find(\".\" + this.classPrefix + \"preview-close-btn\").show().bind(editormd.mouseOrTouch(\"click\", \"touchend\"), function(){\n                    _this.previewed();\n                });\n            \n                if (!settings.watch)\n                {\n                    this.save();\n                } \n                else \n                {\n                    previewContainer.css(\"padding\", \"\");\n                }\n                \n                previewContainer.addClass(this.classPrefix + \"preview-active\");\n\n                preview.show().css({\n                    position  : \"\",\n                    top       : 0,\n                    width     : editor.width(),\n                    height    : (settings.autoHeight && !this.state.fullscreen) ? \"auto\" : editor.height()\n                });\n                \n                if (this.state.loaded)\n                {\n                    $.proxy(settings.onpreviewing, this)();\n                }\n\n                $(window).bind(\"keyup\", escHandle);\n            } \n            else \n            {\n                $(window).unbind(\"keyup\", escHandle);\n                this.previewed();\n            }\n        },\n        \n        /**\n         * 显示编辑器部分，退出只预览HTML\n         * Exit preview html state\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        previewed : function() {\n            \n            var editor           = this.editor;\n            var preview          = this.preview;\n            var toolbar          = this.toolbar;\n            var settings         = this.settings;\n            var previewContainer = this.previewContainer;\n            var previewCloseBtn  = editor.find(\".\" + this.classPrefix + \"preview-close-btn\");\n\n            this.state.preview   = false;\n            \n            this.codeMirror.show();\n            \n            if (settings.toolbar) {\n                toolbar.show();\n            }\n            \n            preview[(settings.watch) ? \"show\" : \"hide\"]();\n            \n            previewCloseBtn.hide().unbind(editormd.mouseOrTouch(\"click\", \"touchend\"));\n                \n            previewContainer.removeClass(this.classPrefix + \"preview-active\");\n                \n            if (settings.watch)\n            {\n                previewContainer.css(\"padding\", \"20px\");\n            }\n            \n            preview.css({ \n                background : null,\n                position   : \"absolute\",\n                width      : editor.width() / 2,\n                height     : (settings.autoHeight && !this.state.fullscreen) ? \"auto\" : editor.height() - toolbar.height(),\n                top        : (settings.toolbar)    ? toolbar.height() : 0\n            });\n\n            if (this.state.loaded)\n            {\n                $.proxy(settings.onpreviewed, this)();\n            }\n            \n            return this;\n        },\n        \n        /**\n         * 编辑器全屏显示\n         * Fullscreen show\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        fullscreen : function() {\n            \n            var _this            = this;\n            var state            = this.state;\n            var editor           = this.editor;\n            var preview          = this.preview;\n            var toolbar          = this.toolbar;\n            var settings         = this.settings;\n            var fullscreenClass  = this.classPrefix + \"fullscreen\";\n            \n            if (toolbar) {\n                toolbar.find(\".fa[name=fullscreen]\").parent().toggleClass(\"active\"); \n            }\n            \n            var escHandle = function(event) {\n                if (!event.shiftKey && event.keyCode === 27) \n                {\n                    if (state.fullscreen)\n                    {\n                        _this.fullscreenExit();\n                    }\n                }\n            };\n\n            if (!editor.hasClass(fullscreenClass)) \n            {\n                state.fullscreen = true;\n\n                $(\"html,body\").css(\"overflow\", \"hidden\");\n                \n                editor.css({\n                    width    : $(window).width(),\n                    height   : $(window).height()\n                }).addClass(fullscreenClass);\n\n                this.resize();\n    \n                $.proxy(settings.onfullscreen, this)();\n\n                $(window).bind(\"keyup\", escHandle);\n            }\n            else\n            {           \n                $(window).unbind(\"keyup\", escHandle); \n                this.fullscreenExit();\n            }\n\n            return this;\n        },\n        \n        /**\n         * 编辑器退出全屏显示\n         * Exit fullscreen state\n         * \n         * @returns {editormd}         返回editormd的实例对象\n         */\n        \n        fullscreenExit : function() {\n            \n            var editor            = this.editor;\n            var settings          = this.settings;\n            var toolbar           = this.toolbar;\n            var fullscreenClass   = this.classPrefix + \"fullscreen\";  \n            \n            this.state.fullscreen = false;\n            \n            if (toolbar) {\n                toolbar.find(\".fa[name=fullscreen]\").parent().removeClass(\"active\"); \n            }\n\n            $(\"html,body\").css(\"overflow\", \"\");\n\n            editor.css({\n                width    : editor.data(\"oldWidth\"),\n                height   : editor.data(\"oldHeight\")\n            }).removeClass(fullscreenClass);\n\n            this.resize();\n            \n            $.proxy(settings.onfullscreenExit, this)();\n\n            return this;\n        },\n        \n        /**\n         * 加载并执行插件\n         * Load and execute the plugin\n         * \n         * @param   {String}     name    plugin name / function name\n         * @param   {String}     path    plugin load path\n         * @returns {editormd}           返回editormd的实例对象\n         */\n        \n        executePlugin : function(name, path) {\n            \n            var _this    = this;\n            var cm       = this.cm;\n            var settings = this.settings;\n            \n            path = settings.pluginPath + path;\n            \n            if (typeof define === \"function\") \n            {            \n                if (typeof this[name] === \"undefined\")\n                {\n                    alert(\"Error: \" + name + \" plugin is not found, you are not load this plugin.\");\n                    \n                    return this;\n                }\n                \n                this[name](cm);\n                \n                return this;\n            }\n            \n            if ($.inArray(path, editormd.loadFiles.plugin) < 0)\n            {\n                editormd.loadPlugin(path, function() {\n                    editormd.loadPlugins[name] = _this[name];\n                    _this[name](cm);\n                });\n            }\n            else\n            {\n                $.proxy(editormd.loadPlugins[name], this)(cm);\n            }\n            \n            return this;\n        },\n                \n        /**\n         * 搜索替换\n         * Search & replace\n         * \n         * @param   {String}     command    CodeMirror serach commands, \"find, fintNext, fintPrev, clearSearch, replace, replaceAll\"\n         * @returns {editormd}              return this\n         */\n        \n        search : function(command) {\n            var settings = this.settings;\n            \n            if (!settings.searchReplace)\n            {\n                alert(\"Error: settings.searchReplace == false\");\n                return this;\n            }\n            \n            if (!settings.readOnly)\n            {\n                this.cm.execCommand(command || \"find\");\n            }\n            \n            return this;\n        },\n        \n        searchReplace : function() {            \n            this.search(\"replace\");\n            \n            return this;\n        },\n        \n        searchReplaceAll : function() {          \n            this.search(\"replaceAll\");\n            \n            return this;\n        }\n    };\n    \n    editormd.fn.init.prototype = editormd.fn; \n   \n    /**\n     * 锁屏\n     * lock screen when dialog opening\n     * \n     * @returns {void}\n     */\n\n    editormd.dialogLockScreen = function() {\n        var settings = this.settings || {dialogLockScreen : true};\n        \n        if (settings.dialogLockScreen) \n        {            \n            $(\"html,body\").css(\"overflow\", \"hidden\");\n            this.resize();\n        }\n    };\n   \n    /**\n     * 显示透明背景层\n     * Display mask layer when dialog opening\n     * \n     * @param   {Object}     dialog    dialog jQuery object\n     * @returns {void}\n     */\n    \n    editormd.dialogShowMask = function(dialog) {\n        var editor   = this.editor;\n        var settings = this.settings || {dialogShowMask : true};\n        \n        dialog.css({\n            top  : ($(window).height() - dialog.height()) / 2 + \"px\",\n            left : ($(window).width()  - dialog.width())  / 2 + \"px\"\n        });\n\n        if (settings.dialogShowMask) {\n            editor.children(\".\" + this.classPrefix + \"mask\").css(\"z-index\", parseInt(dialog.css(\"z-index\")) - 1).show();\n        }\n    };\n\n    editormd.toolbarHandlers = {\n        undo : function() {\n            this.cm.undo();\n        },\n        \n        redo : function() {\n            this.cm.redo();\n        },\n        \n        bold : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"**\" + selection + \"**\");\n\n            if(selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n        },\n        \n        del : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"~~\" + selection + \"~~\");\n\n            if(selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n        },\n\n        italic : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"*\" + selection + \"*\");\n\n            if(selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n\n        quote : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"> \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n            else\n            {\n                cm.replaceSelection(\"> \" + selection);\n            }\n\n            //cm.replaceSelection(\"> \" + selection);\n            //cm.setCursor(cursor.line, (selection === \"\") ? cursor.ch + 2 : cursor.ch + selection.length + 2);\n        },\n        \n        ucfirst : function() {\n            var cm         = this.cm;\n            var selection  = cm.getSelection();\n            var selections = cm.listSelections();\n\n            cm.replaceSelection(editormd.firstUpperCase(selection));\n            cm.setSelections(selections);\n        },\n        \n        ucwords : function() {\n            var cm         = this.cm;\n            var selection  = cm.getSelection();\n            var selections = cm.listSelections();\n\n            cm.replaceSelection(editormd.wordsFirstUpperCase(selection));\n            cm.setSelections(selections);\n        },\n        \n        uppercase : function() {\n            var cm         = this.cm;\n            var selection  = cm.getSelection();\n            var selections = cm.listSelections();\n\n            cm.replaceSelection(selection.toUpperCase());\n            cm.setSelections(selections);\n        },\n        \n        lowercase : function() {\n            var cm         = this.cm;\n            var cursor     = cm.getCursor();\n            var selection  = cm.getSelection();\n            var selections = cm.listSelections();\n            \n            cm.replaceSelection(selection.toLowerCase());\n            cm.setSelections(selections);\n        },\n\n        h1 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"# \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n            else\n            {\n                cm.replaceSelection(\"# \" + selection);\n            }\n        },\n\n        h2 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"## \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 3);\n            }\n            else\n            {\n                cm.replaceSelection(\"## \" + selection);\n            }\n        },\n\n        h3 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"### \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 4);\n            }\n            else\n            {\n                cm.replaceSelection(\"### \" + selection);\n            }\n        },\n\n        h4 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"#### \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 5);\n            }\n            else\n            {\n                cm.replaceSelection(\"#### \" + selection);\n            }\n        },\n\n        h5 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"##### \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 6);\n            }\n            else\n            {\n                cm.replaceSelection(\"##### \" + selection);\n            }\n        },\n\n        h6 : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (cursor.ch !== 0)\n            {\n                cm.setCursor(cursor.line, 0);\n                cm.replaceSelection(\"###### \" + selection);\n                cm.setCursor(cursor.line, cursor.ch + 7);\n            }\n            else\n            {\n                cm.replaceSelection(\"###### \" + selection);\n            }\n        },\n\n        \"list-ul\" : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if (selection === \"\") \n            {\n                cm.replaceSelection(\"- \" + selection);\n            } \n            else \n            {\n                var selectionText = selection.split(\"\\n\");\n\n                for (var i = 0, len = selectionText.length; i < len; i++) \n                {\n                    selectionText[i] = (selectionText[i] === \"\") ? \"\" : \"- \" + selectionText[i];\n                }\n\n                cm.replaceSelection(selectionText.join(\"\\n\"));\n            }\n        },\n\n        \"list-ol\" : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            if(selection === \"\") \n            {\n                cm.replaceSelection(\"1. \" + selection);\n            }\n            else\n            {\n                var selectionText = selection.split(\"\\n\");\n\n                for (var i = 0, len = selectionText.length; i < len; i++) \n                {\n                    selectionText[i] = (selectionText[i] === \"\") ? \"\" : (i+1) + \". \" + selectionText[i];\n                }\n\n                cm.replaceSelection(selectionText.join(\"\\n\"));\n            }\n        },\n\n        hr : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(((cursor.ch !== 0) ? \"\\n\\n\" : \"\\n\") + \"------------\\n\\n\");\n        },\n\n        tex : function() {\n            if (!this.settings.tex)\n            {\n                alert(\"settings.tex === false\");\n                return this;\n            }\n            \n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"$$\" + selection + \"$$\");\n\n            if(selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 2);\n            }\n        },\n\n        link : function() {\n            this.executePlugin(\"linkDialog\", \"link-dialog/link-dialog\");\n        },\n\n        \"reference-link\" : function() {\n            this.executePlugin(\"referenceLinkDialog\", \"reference-link-dialog/reference-link-dialog\");\n        },\n\n        pagebreak : function() {\n            if (!this.settings.pageBreak)\n            {\n                alert(\"settings.pageBreak === false\");\n                return this;\n            }\n            \n            var cm        = this.cm;\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"\\r\\n[========]\\r\\n\");\n        },\n\n        image : function() {\n            this.executePlugin(\"imageDialog\", \"image-dialog/image-dialog\");\n        },\n        \n        code : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n\n            cm.replaceSelection(\"`\" + selection + \"`\");\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n\n        \"code-block\" : function() {\n            this.executePlugin(\"codeBlockDialog\", \"code-block-dialog/code-block-dialog\");            \n        },\n\n        \"preformatted-text\" : function() {\n            this.executePlugin(\"preformattedTextDialog\", \"preformatted-text-dialog/preformatted-text-dialog\");\n        },\n        \n        table : function() {\n            this.executePlugin(\"tableDialog\", \"table-dialog/table-dialog\");         \n        },\n        \n        datetime : function() {\n            var cm        = this.cm;\n            var selection = cm.getSelection();\n            var date      = new Date();\n            var langName  = this.settings.lang.name;\n            var datefmt   = editormd.dateFormat() + \" \" + editormd.dateFormat((langName === \"zh-cn\" || langName === \"zh-tw\") ? \"cn-week-day\" : \"week-day\");\n\n            cm.replaceSelection(datefmt);\n        },\n        \n        emoji : function() {\n            this.executePlugin(\"emojiDialog\", \"emoji-dialog/emoji-dialog\");\n        },\n                \n        \"html-entities\" : function() {\n            this.executePlugin(\"htmlEntitiesDialog\", \"html-entities-dialog/html-entities-dialog\");\n        },\n                \n        \"goto-line\" : function() {\n            this.executePlugin(\"gotoLineDialog\", \"goto-line-dialog/goto-line-dialog\");\n        },\n\n        watch : function() {    \n            this[this.settings.watch ? \"unwatch\" : \"watch\"]();\n        },\n\n        preview : function() {\n            this.previewing();\n        },\n\n        fullscreen : function() {\n            this.fullscreen();\n        },\n\n        clear : function() {\n            this.clear();\n        },\n        \n        search : function() {\n            this.search();\n        },\n\n        help : function() {\n            this.executePlugin(\"helpDialog\", \"help-dialog/help-dialog\");\n        },\n\n        info : function() {\n            this.showInfoDialog();\n        }\n    };\n    \n    editormd.keyMaps = {\n        \"Ctrl-1\"       : \"h1\",\n        \"Ctrl-2\"       : \"h2\",\n        \"Ctrl-3\"       : \"h3\",\n        \"Ctrl-4\"       : \"h4\",\n        \"Ctrl-5\"       : \"h5\",\n        \"Ctrl-6\"       : \"h6\",\n        \"Ctrl-B\"       : \"bold\",  // if this is string ==  editormd.toolbarHandlers.xxxx\n        \"Ctrl-D\"       : \"datetime\",\n        \n        \"Ctrl-E\"       : function() { // emoji\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            if (!this.settings.emoji)\n            {\n                alert(\"Error: settings.emoji == false\");\n                return ;\n            }\n\n            cm.replaceSelection(\":\" + selection + \":\");\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n        \"Ctrl-Alt-G\"   : \"goto-line\",\n        \"Ctrl-H\"       : \"hr\",\n        \"Ctrl-I\"       : \"italic\",\n        \"Ctrl-K\"       : \"code\",\n        \n        \"Ctrl-L\"        : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            var title = (selection === \"\") ? \"\" : \" \\\"\"+selection+\"\\\"\";\n\n            cm.replaceSelection(\"[\" + selection + \"](\"+title+\")\");\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n        \"Ctrl-U\"         : \"list-ul\",\n        \n        \"Shift-Ctrl-A\"   : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            if (!this.settings.atLink)\n            {\n                alert(\"Error: settings.atLink == false\");\n                return ;\n            }\n\n            cm.replaceSelection(\"@\" + selection);\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 1);\n            }\n        },\n        \n        \"Shift-Ctrl-C\"     : \"code\",\n        \"Shift-Ctrl-Q\"     : \"quote\",\n        \"Shift-Ctrl-S\"     : \"del\",\n        \"Shift-Ctrl-K\"     : \"tex\",  // KaTeX\n        \n        \"Shift-Alt-C\"      : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            cm.replaceSelection([\"```\", selection, \"```\"].join(\"\\n\"));\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 3);\n            } \n        },\n        \n        \"Shift-Ctrl-Alt-C\" : \"code-block\",\n        \"Shift-Ctrl-H\"     : \"html-entities\",\n        \"Shift-Alt-H\"      : \"help\",\n        \"Shift-Ctrl-E\"     : \"emoji\",\n        \"Shift-Ctrl-U\"     : \"uppercase\",\n        \"Shift-Alt-U\"      : \"ucwords\",\n        \"Shift-Ctrl-Alt-U\" : \"ucfirst\",\n        \"Shift-Alt-L\"      : \"lowercase\",\n        \n        \"Shift-Ctrl-I\"     : function() {\n            var cm        = this.cm;\n            var cursor    = cm.getCursor();\n            var selection = cm.getSelection();\n            \n            var title = (selection === \"\") ? \"\" : \" \\\"\"+selection+\"\\\"\";\n\n            cm.replaceSelection(\"![\" + selection + \"](\"+title+\")\");\n\n            if (selection === \"\") {\n                cm.setCursor(cursor.line, cursor.ch + 4);\n            }\n        },\n        \n        \"Shift-Ctrl-Alt-I\" : \"image\",\n        \"Shift-Ctrl-L\"     : \"link\",\n        \"Shift-Ctrl-O\"     : \"list-ol\",\n        \"Shift-Ctrl-P\"     : \"preformatted-text\",\n        \"Shift-Ctrl-T\"     : \"table\",\n        \"Shift-Alt-P\"      : \"pagebreak\",\n        \"F9\"               : \"watch\",\n        \"F10\"              : \"preview\",\n        \"F11\"              : \"fullscreen\",\n    };\n    \n    /**\n     * 清除字符串两边的空格\n     * Clear the space of strings both sides.\n     * \n     * @param   {String}    str            string\n     * @returns {String}                   trimed string    \n     */\n    \n    var trim = function(str) {\n        return (!String.prototype.trim) ? str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\") : str.trim();\n    };\n    \n    editormd.trim = trim;\n    \n    /**\n     * 所有单词首字母大写\n     * Words first to uppercase\n     * \n     * @param   {String}    str            string\n     * @returns {String}                   string\n     */\n    \n    var ucwords = function (str) {\n        return str.toLowerCase().replace(/\\b(\\w)|\\s(\\w)/g, function($1) {  \n            return $1.toUpperCase();\n        });\n    };\n    \n    editormd.ucwords = editormd.wordsFirstUpperCase = ucwords;\n    \n    /**\n     * 字符串首字母大写\n     * Only string first char to uppercase\n     * \n     * @param   {String}    str            string\n     * @returns {String}                   string\n     */\n    \n    var firstUpperCase = function(str) {        \n        return str.toLowerCase().replace(/\\b(\\w)/, function($1){\n            return $1.toUpperCase();\n        });\n    };\n    \n    var ucfirst = firstUpperCase;\n    \n    editormd.firstUpperCase = editormd.ucfirst = firstUpperCase;\n    \n    editormd.urls = {\n        atLinkBase : \"https://github.com/\"\n    };\n    \n    editormd.regexs = {\n        atLink        : /@(\\w+)/g,\n        email         : /(\\w+)@(\\w+)\\.(\\w+)\\.?(\\w+)?/g,\n        emailLink     : /(mailto:)?([\\w\\.\\_]+)@(\\w+)\\.(\\w+)\\.?(\\w+)?/g,\n        emoji         : /:([\\w\\+-]+):/g,\n        emojiDatetime : /(\\d{2}:\\d{2}:\\d{2})/g,\n        twemoji       : /:(tw-([\\w]+)-?(\\w+)?):/g,\n        fontAwesome   : /:(fa-([\\w]+)(-(\\w+)){0,}):/g,\n        editormdLogo  : /:(editormd-logo-?(\\w+)?):/g,\n        pageBreak     : /^\\[[=]{8,}\\]$/\n    };\n\n    // Emoji graphics files url path\n    editormd.emoji     = {\n        path  : \"http://www.emoji-cheat-sheet.com/graphics/emojis/\",\n        ext   : \".png\"\n    };\n\n    // Twitter Emoji (Twemoji)  graphics files url path    \n    editormd.twemoji = {\n        path : \"http://twemoji.maxcdn.com/36x36/\",\n        ext  : \".png\"\n    };\n\n    /**\n     * 自定义marked的解析器\n     * Custom Marked renderer rules\n     * \n     * @param   {Array}    markdownToC     传入用于接收TOC的数组\n     * @returns {Renderer} markedRenderer  返回marked的Renderer自定义对象\n     */\n\n    editormd.markedRenderer = function(markdownToC, options) {\n        var defaults = {\n            toc                  : true,           // Table of contents\n            tocm                 : false,\n            tocStartLevel        : 1,              // Said from H1 to create ToC  \n            pageBreak            : true,\n            atLink               : true,           // for @link\n            emailLink            : true,           // for mail address auto link\n            taskList             : false,          // Enable Github Flavored Markdown task lists\n            emoji                : false,          // :emoji: , Support Twemoji, fontAwesome, Editor.md logo emojis.\n            tex                  : false,          // TeX(LaTeX), based on KaTeX\n            flowChart            : false,          // flowChart.js only support IE9+\n            sequenceDiagram      : false,          // sequenceDiagram.js only support IE9+\n        };\n        \n        var settings        = $.extend(defaults, options || {});    \n        var marked          = editormd.$marked;\n        var markedRenderer  = new marked.Renderer();\n        markdownToC         = markdownToC || [];        \n            \n        var regexs          = editormd.regexs;\n        var atLinkReg       = regexs.atLink;\n        var emojiReg        = regexs.emoji;\n        var emailReg        = regexs.email;\n        var emailLinkReg    = regexs.emailLink;\n        var twemojiReg      = regexs.twemoji;\n        var faIconReg       = regexs.fontAwesome;\n        var editormdLogoReg = regexs.editormdLogo;\n        var pageBreakReg    = regexs.pageBreak;\n\n        markedRenderer.emoji = function(text) {\n            \n            text = text.replace(editormd.regexs.emojiDatetime, function($1) {           \n                return $1.replace(/:/g, \"&#58;\");\n            });\n            \n            var matchs = text.match(emojiReg);\n\n            if (!matchs || !settings.emoji) {\n                return text;\n            }\n\n            for (var i = 0, len = matchs.length; i < len; i++)\n            {            \n                if (matchs[i] === \":+1:\") {\n                    matchs[i] = \":\\\\+1:\";\n                }\n\n                text = text.replace(new RegExp(matchs[i]), function($1, $2){\n                    var faMatchs = $1.match(faIconReg);\n                    var name     = $1.replace(/:/g, \"\");\n\n                    if (faMatchs)\n                    {                        \n                        for (var fa = 0, len1 = faMatchs.length; fa < len1; fa++)\n                        {\n                            var faName = faMatchs[fa].replace(/:/g, \"\");\n                            \n                            return \"<i class=\\\"fa \" + faName + \" fa-emoji\\\" title=\\\"\" + faName.replace(\"fa-\", \"\") + \"\\\"></i>\";\n                        }\n                    }\n                    else\n                    {\n                        var emdlogoMathcs = $1.match(editormdLogoReg);\n                        var twemojiMatchs = $1.match(twemojiReg);\n\n                        if (emdlogoMathcs)                                        \n                        {                            \n                            for (var x = 0, len2 = emdlogoMathcs.length; x < len2; x++)\n                            {\n                                var logoName = emdlogoMathcs[x].replace(/:/g, \"\");\n                                return \"<i class=\\\"\" + logoName + \"\\\" title=\\\"Editor.md logo (\" + logoName + \")\\\"></i>\";\n                            }\n                        }\n                        else if (twemojiMatchs) \n                        {\n                            for (var t = 0, len3 = twemojiMatchs.length; t < len3; t++)\n                            {\n                                var twe = twemojiMatchs[t].replace(/:/g, \"\").replace(\"tw-\", \"\");\n                                return \"<img src=\\\"\" + editormd.twemoji.path + twe + editormd.twemoji.ext + \"\\\" title=\\\"twemoji-\" + twe + \"\\\" alt=\\\"twemoji-\" + twe + \"\\\" class=\\\"emoji twemoji\\\" />\";\n                            }\n                        }\n                        else\n                        {\n                            var src = (name === \"+1\") ? \"plus1\" : name;\n                            src     = (src === \"black_large_square\") ? \"black_square\" : src;\n                            src     = (src === \"moon\") ? \"waxing_gibbous_moon\" : src;\n\n                            return \"<img src=\\\"\" + editormd.emoji.path + src + editormd.emoji.ext + \"\\\" class=\\\"emoji\\\" title=\\\"&#58;\" + name + \"&#58;\\\" alt=\\\"&#58;\" + name + \"&#58;\\\" />\";\n                        }\n                    }\n                });\n            }\n\n            return text;\n        };\n\n        markedRenderer.atLink = function(text) {\n\n            if (atLinkReg.test(text))\n            { \n                if (settings.atLink) \n                {\n                    text = text.replace(emailReg, function($1, $2, $3, $4) {\n                        return $1.replace(/@/g, \"_#_&#64;_#_\");\n                    });\n\n                    text = text.replace(atLinkReg, function($1, $2) {\n                        return \"<a href=\\\"\" + editormd.urls.atLinkBase + \"\" + $2 + \"\\\" title=\\\"&#64;\" + $2 + \"\\\" class=\\\"at-link\\\">\" + $1 + \"</a>\";\n                    }).replace(/_#_&#64;_#_/g, \"@\");\n                }\n                \n                if (settings.emailLink)\n                {\n                    text = text.replace(emailLinkReg, function($1, $2, $3, $4, $5) {\n                        return (!$2 && $.inArray($5, \"jpg|jpeg|png|gif|webp|ico|icon|pdf\".split(\"|\")) < 0) ? \"<a href=\\\"mailto:\" + $1 + \"\\\">\"+$1+\"</a>\" : $1;\n                    });\n                }\n\n                return text;\n            }\n\n            return text;\n        };\n                \n        markedRenderer.link = function (href, title, text) {\n\n            if (this.options.sanitize) {\n                try {\n                    var prot = decodeURIComponent(unescape(href)).replace(/[^\\w:]/g,\"\").toLowerCase();\n                } catch(e) {\n                    return \"\";\n                }\n\n                if (prot.indexOf(\"javascript:\") === 0) {\n                    return \"\";\n                }\n            }\n\n            var out = \"<a href=\\\"\" + href + \"\\\"\";\n            \n            if (atLinkReg.test(title) || atLinkReg.test(text))\n            {\n                if (title)\n                {\n                    out += \" title=\\\"\" + title.replace(/@/g, \"&#64;\");\n                }\n                \n                return out + \"\\\">\" + text.replace(/@/g, \"&#64;\") + \"</a>\";\n            }\n\n            if (title) {\n                out += \" title=\\\"\" + title + \"\\\"\";\n            }\n\n            out += \">\" + text + \"</a>\";\n\n            return out;\n        };\n        \n        markedRenderer.heading = function(text, level, raw) {\n                    \n            var linkText       = text;\n            var hasLinkReg     = /\\s*\\<a\\s*href\\=\\\"(.*)\\\"\\s*([^\\>]*)\\>(.*)\\<\\/a\\>\\s*/;\n            var getLinkTextReg = /\\s*\\<a\\s*([^\\>]+)\\>([^\\>]*)\\<\\/a\\>\\s*/g;\n\n            if (hasLinkReg.test(text)) \n            {\n                var tempText = [];\n                text         = text.split(/\\<a\\s*([^\\>]+)\\>([^\\>]*)\\<\\/a\\>/);\n\n                for (var i = 0, len = text.length; i < len; i++)\n                {\n                    tempText.push(text[i].replace(/\\s*href\\=\\\"(.*)\\\"\\s*/g, \"\"));\n                }\n\n                text = tempText.join(\" \");\n            }\n            \n            text = trim(text);\n            \n            var escapedText    = text.toLowerCase().replace(/[^\\w]+/g, \"-\");\n            var toc = {\n                text  : text,\n                level : level,\n                slug  : escapedText\n            };\n            \n            var isChinese = /^[\\u4e00-\\u9fa5]+$/.test(text);\n            var id        = (isChinese) ? escape(text).replace(/\\%/g, \"\") : text.toLowerCase().replace(/[^\\w]+/g, \"-\");\n\n            markdownToC.push(toc);\n            \n            var headingHTML = \"<h\" + level + \" id=\\\"h\"+ level + \"-\" + this.options.headerPrefix + id +\"\\\">\";\n            \n            headingHTML    += \"<a name=\\\"\" + text + \"\\\" class=\\\"reference-link\\\"></a>\";\n            headingHTML    += \"<span class=\\\"header-link octicon octicon-link\\\"></span>\";\n            headingHTML    += (hasLinkReg) ? this.atLink(this.emoji(linkText)) : this.atLink(this.emoji(text));\n            headingHTML    += \"</h\" + level + \">\";\n\n            return headingHTML;\n        };\n        \n        markedRenderer.pageBreak = function(text) {\n            if (pageBreakReg.test(text) && settings.pageBreak)\n            {\n                text = \"<hr style=\\\"page-break-after:always;\\\" class=\\\"page-break editormd-page-break\\\" />\";\n            }\n            \n            return text;\n        };\n\n        markedRenderer.paragraph = function(text) {\n            var isTeXInline     = /\\$\\$(.*)\\$\\$/g.test(text);\n            var isTeXLine       = /^\\$\\$(.*)\\$\\$$/.test(text);\n            var isTeXAddClass   = (isTeXLine)     ? \" class=\\\"\" + editormd.classNames.tex + \"\\\"\" : \"\";\n            var isToC           = (settings.tocm) ? /^(\\[TOC\\]|\\[TOCM\\])$/.test(text) : /^\\[TOC\\]$/.test(text);\n            var isToCMenu       = /^\\[TOCM\\]$/.test(text);\n            \n            if (!isTeXLine && isTeXInline) \n            {\n                text = text.replace(/(\\$\\$([^\\$]*)\\$\\$)+/g, function($1, $2) {\n                    return \"<span class=\\\"\" + editormd.classNames.tex + \"\\\">\" + $2.replace(/\\$/g, \"\") + \"</span>\";\n                });\n            } \n            else \n            {\n                text = (isTeXLine) ? text.replace(/\\$/g, \"\") : text;\n            }\n            \n            var tocHTML = \"<div class=\\\"markdown-toc editormd-markdown-toc\\\">\" + text + \"</div>\";\n            \n            return (isToC) ? ( (isToCMenu) ? \"<div class=\\\"editormd-toc-menu\\\">\" + tocHTML + \"</div><br/>\" : tocHTML )\n                           : ( (pageBreakReg.test(text)) ? this.pageBreak(text) : \"<p\" + isTeXAddClass + \">\" + this.atLink(this.emoji(text)) + \"</p>\\n\" );\n        };\n\n        markedRenderer.code = function (code, lang, escaped) { \n\n            if (lang === \"seq\" || lang === \"sequence\")\n            {\n                return \"<div class=\\\"sequence-diagram\\\">\" + code + \"</div>\";\n            } \n            else if ( lang === \"flow\")\n            {\n                return \"<div class=\\\"flowchart\\\">\" + code + \"</div>\";\n            } \n            else if ( lang === \"math\" || lang === \"latex\" || lang === \"katex\")\n            {\n                return \"<p class=\\\"\" + editormd.classNames.tex + \"\\\">\" + code + \"</p>\";\n            } \n            else \n            {\n\n                return marked.Renderer.prototype.code.apply(this, arguments);\n            }\n        };\n\n        markedRenderer.tablecell = function(content, flags) {\n            var type = (flags.header) ? \"th\" : \"td\";\n            var tag  = (flags.align)  ? \"<\" + type +\" style=\\\"text-align:\" + flags.align + \"\\\">\" : \"<\" + type + \">\";\n            \n            return tag + this.atLink(this.emoji(content)) + \"</\" + type + \">\\n\";\n        };\n\n        markedRenderer.listitem = function(text) {\n            if (settings.taskList && /^\\s*\\[[x\\s]\\]\\s*/.test(text)) \n            {\n                text = text.replace(/^\\s*\\[\\s\\]\\s*/, \"<input type=\\\"checkbox\\\" class=\\\"task-list-item-checkbox\\\" /> \")\n                           .replace(/^\\s*\\[x\\]\\s*/,  \"<input type=\\\"checkbox\\\" class=\\\"task-list-item-checkbox\\\" checked disabled /> \");\n\n                return \"<li style=\\\"list-style: none;\\\">\" + this.atLink(this.emoji(text)) + \"</li>\";\n            }\n            else \n            {\n                return \"<li>\" + this.atLink(this.emoji(text)) + \"</li>\";\n            }\n        };\n        \n        return markedRenderer;\n    };\n    \n    /**\n     *\n     * 生成TOC(Table of Contents)\n     * Creating ToC (Table of Contents)\n     * \n     * @param   {Array}    toc             从marked获取的TOC数组列表\n     * @param   {Element}  container       插入TOC的容器元素\n     * @param   {Integer}  startLevel      Hx 起始层级\n     * @returns {Object}   tocContainer    返回ToC列表容器层的jQuery对象元素\n     */\n    \n    editormd.markdownToCRenderer = function(toc, container, tocDropdown, startLevel) {\n        \n        var html        = \"\";    \n        var lastLevel   = 0;\n        var classPrefix = this.classPrefix;\n        \n        startLevel      = startLevel  || 1;\n        \n        for (var i = 0, len = toc.length; i < len; i++) \n        {\n            var text  = toc[i].text;\n            var level = toc[i].level;\n            \n            if (level < startLevel) {\n                continue;\n            }\n            \n            if (level > lastLevel) \n            {\n                html += \"\";\n            }\n            else if (level < lastLevel) \n            {\n                html += (new Array(lastLevel - level + 2)).join(\"</ul></li>\");\n            } \n            else \n            {\n                html += \"</ul></li>\";\n            }\n\n            html += \"<li><a class=\\\"toc-level-\" + level + \"\\\" href=\\\"#\" + text + \"\\\" level=\\\"\" + level + \"\\\">\" + text + \"</a><ul>\";\n            lastLevel = level;\n        }\n        \n        var tocContainer = container.find(\".markdown-toc\");\n        \n        if ((tocContainer.length < 1 && container.attr(\"previewContainer\") === \"false\"))\n        {\n            var tocHTML = \"<div class=\\\"markdown-toc \" + classPrefix + \"markdown-toc\\\"></div>\";\n            \n            tocHTML = (tocDropdown) ? \"<div class=\\\"\" + classPrefix + \"toc-menu\\\">\" + tocHTML + \"</div>\" : tocHTML;\n            \n            container.html(tocHTML);\n            \n            tocContainer = container.find(\".markdown-toc\");\n        }\n        \n        if (tocDropdown)\n        {\n            tocContainer.wrap(\"<div class=\\\"\" + classPrefix + \"toc-menu\\\"></div><br/>\");\n        }\n        \n        tocContainer.html(\"<ul class=\\\"markdown-toc-list\\\"></ul>\").children(\".markdown-toc-list\").html(html.replace(/\\r?\\n?\\<ul\\>\\<\\/ul\\>/g, \"\"));\n        \n        return tocContainer;\n    };\n    \n    /**\n     *\n     * 生成TOC下拉菜单\n     * Creating ToC dropdown menu\n     * \n     * @param   {Object}   container       插入TOC的容器jQuery对象元素\n     * @param   {String}   tocTitle        ToC title\n     * @returns {Object}                   return toc-menu object\n     */\n    \n    editormd.tocDropdownMenu = function(container, tocTitle) {\n        \n        tocTitle      = tocTitle || \"Table of Contents\";\n        \n        var zindex    = 400;\n        var tocMenus  = container.find(\".\" + this.classPrefix + \"toc-menu\");\n\n        tocMenus.each(function() {\n            var $this  = $(this);\n            var toc    = $this.children(\".markdown-toc\");\n            var icon   = \"<i class=\\\"fa fa-angle-down\\\"></i>\";\n            var btn    = \"<a href=\\\"javascript:;\\\" class=\\\"toc-menu-btn\\\">\" + icon + tocTitle + \"</a>\";\n            var menu   = toc.children(\"ul\");            \n            var list   = menu.find(\"li\");\n            \n            toc.append(btn);\n            \n            list.first().before(\"<li><h1>\" + tocTitle + \" \" + icon + \"</h1></li>\");\n            \n            $this.mouseover(function(){\n                menu.show();\n\n                list.each(function(){\n                    var li = $(this);\n                    var ul = li.children(\"ul\");\n\n                    if (ul.html() === \"\")\n                    {\n                        ul.remove();\n                    }\n\n                    if (ul.length > 0 && ul.html() !== \"\")\n                    {\n                        var firstA = li.children(\"a\").first();\n\n                        if (firstA.children(\".fa\").length < 1)\n                        {\n                            firstA.append( $(icon).css({ float:\"right\", paddingTop:\"4px\" }) );\n                        }\n                    }\n\n                    li.mouseover(function(){\n                        ul.css(\"z-index\", zindex).show();\n                        zindex += 1;\n                    }).mouseleave(function(){\n                        ul.hide();\n                    });\n                });\n            }).mouseleave(function(){\n                menu.hide();\n            }); \n        });       \n        \n        return tocMenus;\n    };\n    \n    /**\n     * 简单地过滤指定的HTML标签\n     * Filter custom html tags\n     * \n     * @param   {String}   html          要过滤HTML\n     * @param   {String}   filters       要过滤的标签\n     * @returns {String}   html          返回过滤的HTML\n     */\n    \n    editormd.filterHTMLTags = function(html, filters) {\n        \n        if (typeof html !== \"string\") {\n            html = new String(html);\n        }\n            \n        if (typeof filters !== \"string\") {\n            return html;\n        }\n\n        var expression = filters.split(\"|\");\n        var filterTags = expression[0].split(\",\");\n        var attrs      = expression[1];\n\n        for (var i = 0, len = filterTags.length; i < len; i++)\n        {\n            var tag = filterTags[i];\n\n            html = html.replace(new RegExp(\"\\<\\s*\" + tag + \"\\s*([^\\>]*)\\>([^\\>]*)\\<\\s*\\/\" + tag + \"\\s*\\>\", \"igm\"), \"\");\n        }\n        \n        //return html;\n\n        if (typeof attrs !== \"undefined\")\n        {\n            var htmlTagRegex = /\\<(\\w+)\\s*([^\\>]*)\\>([^\\>]*)\\<\\/(\\w+)\\>/ig;\n\n            if (attrs === \"*\")\n            {\n                html = html.replace(htmlTagRegex, function($1, $2, $3, $4, $5) {\n                    return \"<\" + $2 + \">\" + $4 + \"</\" + $5 + \">\";\n                });         \n            }\n            else if (attrs === \"on*\")\n            {\n                html = html.replace(htmlTagRegex, function($1, $2, $3, $4, $5) {\n                    var el = $(\"<\" + $2 + \">\" + $4 + \"</\" + $5 + \">\");\n                    var _attrs = $($1)[0].attributes;\n                    var $attrs = {};\n                    \n                    $.each(_attrs, function(i, e) {\n                        if (e.nodeName !== '\"') $attrs[e.nodeName] = e.nodeValue;\n                    });\n                    \n                    $.each($attrs, function(i) {                        \n                        if (i.indexOf(\"on\") === 0) {\n                            delete $attrs[i];\n                        }\n                    });\n                    \n                    el.attr($attrs);\n                    \n                    var text = (typeof el[1] !== \"undefined\") ? $(el[1]).text() : \"\";\n\n                    return el[0].outerHTML + text;\n                });\n            }\n            else\n            {\n                html = html.replace(htmlTagRegex, function($1, $2, $3, $4) {\n                    var filterAttrs = attrs.split(\",\");\n                    var el = $($1);\n                    el.html($4);\n\n                    $.each(filterAttrs, function(i) {\n                        el.attr(filterAttrs[i], null);\n                    });\n\n                    return el[0].outerHTML;\n                });\n            }\n        }\n        \n        return html;\n    };\n    \n    /**\n     * 将Markdown文档解析为HTML用于前台显示\n     * Parse Markdown to HTML for Font-end preview.\n     * \n     * @param   {String}   id            用于显示HTML的对象ID\n     * @param   {Object}   [options={}]  配置选项，可选\n     * @returns {Object}   div           返回jQuery对象元素\n     */\n    \n    editormd.markdownToHTML = function(id, options) {\n        var defaults = {\n            gfm                  : true,\n            toc                  : true,\n            tocm                 : false,\n            tocStartLevel        : 1,\n            tocTitle             : \"目录\",\n            tocDropdown          : false,\n            tocContainer         : \"\",\n            markdown             : \"\",\n            markdownSourceCode   : false,\n            htmlDecode           : false,\n            autoLoadKaTeX        : true,\n            pageBreak            : true,\n            atLink               : true,    // for @link\n            emailLink            : true,    // for mail address auto link\n            tex                  : false,\n            taskList             : false,   // Github Flavored Markdown task lists\n            emoji                : false,\n            flowChart            : false,\n            sequenceDiagram      : false,\n            previewCodeHighlight : true\n        };\n        \n        editormd.$marked  = marked;\n\n        var div           = $(\"#\" + id);\n        var settings      = div.settings = $.extend(true, defaults, options || {});\n        var saveTo        = div.find(\"textarea\");\n        \n        if (saveTo.length < 1)\n        {\n            div.append(\"<textarea></textarea>\");\n            saveTo        = div.find(\"textarea\");\n        }        \n        \n        var markdownDoc   = (settings.markdown === \"\") ? saveTo.val() : settings.markdown; \n        var markdownToC   = [];\n\n        var rendererOptions = {  \n            toc                  : settings.toc,\n            tocm                 : settings.tocm,\n            tocStartLevel        : settings.tocStartLevel,\n            taskList             : settings.taskList,\n            emoji                : settings.emoji,\n            tex                  : settings.tex,\n            pageBreak            : settings.pageBreak,\n            atLink               : settings.atLink,           // for @link\n            emailLink            : settings.emailLink,        // for mail address auto link\n            flowChart            : settings.flowChart,\n            sequenceDiagram      : settings.sequenceDiagram,\n            previewCodeHighlight : settings.previewCodeHighlight,\n        };\n\n        var markedOptions = {\n            renderer    : editormd.markedRenderer(markdownToC, rendererOptions),\n            gfm         : settings.gfm,\n            tables      : true,\n            breaks      : true,\n            pedantic    : false,\n            sanitize    : (settings.htmlDecode) ? false : true, // 是否忽略HTML标签，即是否开启HTML标签解析，为了安全性，默认不开启\n            smartLists  : true,\n            smartypants : true\n        };\n        \n\t\tmarkdownDoc = new String(markdownDoc);\n        \n        var markdownParsed = marked(markdownDoc, markedOptions);\n        \n        markdownParsed = editormd.filterHTMLTags(markdownParsed, settings.htmlDecode);\n        \n        if (settings.markdownSourceCode) {\n            saveTo.text(markdownDoc);\n        } else {\n            saveTo.remove();\n        }\n        \n        div.addClass(\"markdown-body \" + this.classPrefix + \"html-preview\").append(markdownParsed);\n        \n        var tocContainer = (settings.tocContainer !== \"\") ? $(settings.tocContainer) : div;\n        \n        if (settings.tocContainer !== \"\")\n        {\n            tocContainer.attr(\"previewContainer\", false);\n        }\n         \n        if (settings.toc) \n        {\n            div.tocContainer = this.markdownToCRenderer(markdownToC, tocContainer, settings.tocDropdown, settings.tocStartLevel);\n            \n            if (settings.tocDropdown || div.find(\".\" + this.classPrefix + \"toc-menu\").length > 0)\n            {\n                this.tocDropdownMenu(div, settings.tocTitle);\n            }\n            \n            if (settings.tocContainer !== \"\")\n            {\n                div.find(\".editormd-toc-menu, .editormd-markdown-toc\").remove();\n            }\n        }\n            \n        if (settings.previewCodeHighlight) \n        {\n            div.find(\"pre\").addClass(\"prettyprint linenums\");\n            prettyPrint();\n        }\n        \n        if (!editormd.isIE8) \n        {\n            if (settings.flowChart) {\n                div.find(\".flowchart\").flowChart(); \n            }\n\n            if (settings.sequenceDiagram) {\n                div.find(\".sequence-diagram\").sequenceDiagram({theme: \"simple\"});\n            }\n        }\n\n        if (settings.tex)\n        {\n            var katexHandle = function() {\n                div.find(\".\" + editormd.classNames.tex).each(function(){\n                    var tex  = $(this);                    \n                    katex.render(tex.html().replace(/&lt;/g, \"<\").replace(/&gt;/g, \">\"), tex[0]);                    \n                    tex.find(\".katex\").css(\"font-size\", \"1.6em\");\n                });\n            };\n            \n            if (settings.autoLoadKaTeX && !editormd.$katex && !editormd.kaTeXLoaded)\n            {\n                this.loadKaTeX(function() {\n                    editormd.$katex      = katex;\n                    editormd.kaTeXLoaded = true;\n                    katexHandle();\n                });\n            }\n            else\n            {\n                katexHandle();\n            }\n        }\n        \n        div.getMarkdown = function() {            \n            return saveTo.val();\n        };\n        \n        return div;\n    };\n    \n    // Editor.md themes, change toolbar themes etc.\n    // added @1.5.0\n    editormd.themes        = [\"default\", \"dark\"];\n    \n    // Preview area themes\n    // added @1.5.0\n    editormd.previewThemes = [\"default\", \"dark\"];\n    \n    // CodeMirror / editor area themes\n    // @1.5.0 rename -> editorThemes, old version -> themes\n    editormd.editorThemes = [\n        \"default\", \"3024-day\", \"3024-night\",\n        \"ambiance\", \"ambiance-mobile\",\n        \"base16-dark\", \"base16-light\", \"blackboard\",\n        \"cobalt\",\n        \"eclipse\", \"elegant\", \"erlang-dark\",\n        \"lesser-dark\",\n        \"mbo\", \"mdn-like\", \"midnight\", \"monokai\",\n        \"neat\", \"neo\", \"night\",\n        \"paraiso-dark\", \"paraiso-light\", \"pastel-on-dark\",\n        \"rubyblue\",\n        \"solarized\",\n        \"the-matrix\", \"tomorrow-night-eighties\", \"twilight\",\n        \"vibrant-ink\",\n        \"xq-dark\", \"xq-light\"\n    ];\n\n    editormd.loadPlugins = {};\n    \n    editormd.loadFiles = {\n        js     : [],\n        css    : [],\n        plugin : []\n    };\n    \n    /**\n     * 动态加载Editor.md插件，但不立即执行\n     * Load editor.md plugins\n     * \n     * @param {String}   fileName              插件文件路径\n     * @param {Function} [callback=function()] 加载成功后执行的回调函数\n     * @param {String}   [into=\"head\"]         嵌入页面的位置\n     */\n    \n    editormd.loadPlugin = function(fileName, callback, into) {\n        callback   = callback || function() {};\n        \n        this.loadScript(fileName, function() {\n            editormd.loadFiles.plugin.push(fileName);\n            callback();\n        }, into);\n    };\n    \n    /**\n     * 动态加载CSS文件的方法\n     * Load css file method\n     * \n     * @param {String}   fileName              CSS文件名\n     * @param {Function} [callback=function()] 加载成功后执行的回调函数\n     * @param {String}   [into=\"head\"]         嵌入页面的位置\n     */\n    \n    editormd.loadCSS   = function(fileName, callback, into) {\n        into       = into     || \"head\";        \n        callback   = callback || function() {};\n        \n        var css    = document.createElement(\"link\");\n        css.type   = \"text/css\";\n        css.rel    = \"stylesheet\";\n        css.onload = css.onreadystatechange = function() {\n            editormd.loadFiles.css.push(fileName);\n            callback();\n        };\n\n        css.href   = fileName + \".css\";\n\n        if(into === \"head\") {\n            document.getElementsByTagName(\"head\")[0].appendChild(css);\n        } else {\n            document.body.appendChild(css);\n        }\n    };\n    \n    editormd.isIE    = (navigator.appName == \"Microsoft Internet Explorer\");\n    editormd.isIE8   = (editormd.isIE && navigator.appVersion.match(/8./i) == \"8.\");\n\n    /**\n     * 动态加载JS文件的方法\n     * Load javascript file method\n     * \n     * @param {String}   fileName              JS文件名\n     * @param {Function} [callback=function()] 加载成功后执行的回调函数\n     * @param {String}   [into=\"head\"]         嵌入页面的位置\n     */\n\n    editormd.loadScript = function(fileName, callback, into) {\n        \n        into          = into     || \"head\";\n        callback      = callback || function() {};\n        \n        var script    = null; \n        script        = document.createElement(\"script\");\n        script.id     = fileName.replace(/[\\./]+/g, \"-\");\n        script.type   = \"text/javascript\";        \n        script.src    = fileName + \".js\";\n        \n        if (editormd.isIE8) \n        {            \n            script.onreadystatechange = function() {\n                if(script.readyState) \n                {\n                    if (script.readyState === \"loaded\" || script.readyState === \"complete\") \n                    {\n                        script.onreadystatechange = null; \n                        editormd.loadFiles.js.push(fileName);\n                        callback();\n                    }\n                } \n            };\n        }\n        else\n        {\n            script.onload = function() {\n                editormd.loadFiles.js.push(fileName);\n                callback();\n            };\n        }\n\n        if (into === \"head\") {\n            document.getElementsByTagName(\"head\")[0].appendChild(script);\n        } else {\n            document.body.appendChild(script);\n        }\n    };\n    \n    // 使用国外的CDN，加载速度有时会很慢，或者自定义URL\n    // You can custom KaTeX load url.\n    editormd.katexURL  = {\n        css : \"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min\",\n        js  : \"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min\"\n    };\n    \n    editormd.kaTeXLoaded = false;\n    \n    /**\n     * 加载KaTeX文件\n     * load KaTeX files\n     * \n     * @param {Function} [callback=function()]  加载成功后执行的回调函数\n     */\n    \n    editormd.loadKaTeX = function (callback) {\n        editormd.loadCSS(editormd.katexURL.css, function(){\n            editormd.loadScript(editormd.katexURL.js, callback || function(){});\n        });\n    };\n        \n    /**\n     * 锁屏\n     * lock screen\n     * \n     * @param   {Boolean}   lock   Boolean 布尔值，是否锁屏\n     * @returns {void}\n     */\n    \n    editormd.lockScreen = function(lock) {\n        $(\"html,body\").css(\"overflow\", (lock) ? \"hidden\" : \"\");\n    };\n        \n    /**\n     * 动态创建对话框\n     * Creating custom dialogs\n     * \n     * @param   {Object} options 配置项键值对 Key/Value\n     * @returns {dialog} 返回创建的dialog的jQuery实例对象\n     */\n\n    editormd.createDialog = function(options) {\n        var defaults = {\n            name : \"\",\n            width : 420,\n            height: 240,\n            title : \"\",\n            drag  : true,\n            closed : true,\n            content : \"\",\n            mask : true,\n            maskStyle : {\n                backgroundColor : \"#fff\",\n                opacity : 0.1\n            },\n            lockScreen : true,\n            footer : true,\n            buttons : false\n        };\n\n        options          = $.extend(true, defaults, options);\n        \n        var $this        = this;\n        var editor       = this.editor;\n        var classPrefix  = editormd.classPrefix;\n        var guid         = (new Date()).getTime();\n        var dialogName   = ( (options.name === \"\") ? classPrefix + \"dialog-\" + guid : options.name);\n        var mouseOrTouch = editormd.mouseOrTouch;\n\n        var html         = \"<div class=\\\"\" + classPrefix + \"dialog \" + dialogName + \"\\\">\";\n\n        if (options.title !== \"\")\n        {\n            html += \"<div class=\\\"\" + classPrefix + \"dialog-header\\\"\" + ( (options.drag) ? \" style=\\\"cursor: move;\\\"\" : \"\" ) + \">\";\n            html += \"<strong class=\\\"\" + classPrefix + \"dialog-title\\\">\" + options.title + \"</strong>\";\n            html += \"</div>\";\n        }\n\n        if (options.closed)\n        {\n            html += \"<a href=\\\"javascript:;\\\" class=\\\"fa fa-close \" + classPrefix + \"dialog-close\\\"></a>\";\n        }\n\n        html += \"<div class=\\\"\" + classPrefix + \"dialog-container\\\">\" + options.content;                    \n\n        if (options.footer || typeof options.footer === \"string\") \n        {\n            html += \"<div class=\\\"\" + classPrefix + \"dialog-footer\\\">\" + ( (typeof options.footer === \"boolean\") ? \"\" : options.footer) + \"</div>\";\n        }\n\n        html += \"</div>\";\n\n        html += \"<div class=\\\"\" + classPrefix + \"dialog-mask \" + classPrefix + \"dialog-mask-bg\\\"></div>\";\n        html += \"<div class=\\\"\" + classPrefix + \"dialog-mask \" + classPrefix + \"dialog-mask-con\\\"></div>\";\n        html += \"</div>\";\n\n        editor.append(html);\n\n        var dialog = editor.find(\".\" + dialogName);\n\n        dialog.lockScreen = function(lock) {\n            if (options.lockScreen)\n            {                \n                $(\"html,body\").css(\"overflow\", (lock) ? \"hidden\" : \"\");\n                $this.resize();\n            }\n\n            return dialog;\n        };\n\n        dialog.showMask = function() {\n            if (options.mask)\n            {\n                editor.find(\".\" + classPrefix + \"mask\").css(options.maskStyle).css(\"z-index\", editormd.dialogZindex - 1).show();\n            }\n            return dialog;\n        };\n\n        dialog.hideMask = function() {\n            if (options.mask)\n            {\n                editor.find(\".\" + classPrefix + \"mask\").hide();\n            }\n\n            return dialog;\n        };\n\n        dialog.loading = function(show) {                        \n            var loading = dialog.find(\".\" + classPrefix + \"dialog-mask\");\n            loading[(show) ? \"show\" : \"hide\"]();\n\n            return dialog;\n        };\n\n        dialog.lockScreen(true).showMask();\n\n        dialog.show().css({\n            zIndex : editormd.dialogZindex,\n            border : (editormd.isIE8) ? \"1px solid #ddd\" : \"\",\n            width  : (typeof options.width  === \"number\") ? options.width + \"px\"  : options.width,\n            height : (typeof options.height === \"number\") ? options.height + \"px\" : options.height\n        });\n\n        var dialogPosition = function(){\n            dialog.css({\n                top    : ($(window).height() - dialog.height()) / 2 + \"px\",\n                left   : ($(window).width() - dialog.width()) / 2 + \"px\"\n            });\n        };\n\n        dialogPosition();\n\n        $(window).resize(dialogPosition);\n\n        dialog.children(\".\" + classPrefix + \"dialog-close\").bind(mouseOrTouch(\"click\", \"touchend\"), function() {\n            dialog.hide().lockScreen(false).hideMask();\n        });\n\n        if (typeof options.buttons === \"object\")\n        {\n            var footer = dialog.footer = dialog.find(\".\" + classPrefix + \"dialog-footer\");\n\n            for (var key in options.buttons)\n            {\n                var btn = options.buttons[key];\n                var btnClassName = classPrefix + key + \"-btn\";\n\n                footer.append(\"<button class=\\\"\" + classPrefix + \"btn \" + btnClassName + \"\\\">\" + btn[0] + \"</button>\");\n                btn[1] = $.proxy(btn[1], dialog);\n                footer.children(\".\" + btnClassName).bind(mouseOrTouch(\"click\", \"touchend\"), btn[1]);\n            }\n        }\n\n        if (options.title !== \"\" && options.drag)\n        {                        \n            var posX, posY;\n            var dialogHeader = dialog.children(\".\" + classPrefix + \"dialog-header\");\n\n            if (!options.mask) {\n                dialogHeader.bind(mouseOrTouch(\"click\", \"touchend\"), function(){\n                    editormd.dialogZindex += 2;\n                    dialog.css(\"z-index\", editormd.dialogZindex);\n                });\n            }\n\n            dialogHeader.mousedown(function(e) {\n                e = e || window.event;  //IE\n                posX = e.clientX - parseInt(dialog[0].style.left);\n                posY = e.clientY - parseInt(dialog[0].style.top);\n\n                document.onmousemove = moveAction;                   \n            });\n\n            var userCanSelect = function (obj) {\n                obj.removeClass(classPrefix + \"user-unselect\").off(\"selectstart\");\n            };\n\n            var userUnselect = function (obj) {\n                obj.addClass(classPrefix + \"user-unselect\").on(\"selectstart\", function(event) { // selectstart for IE                        \n                    return false;\n                });\n            };\n\n            var moveAction = function (e) {\n                e = e || window.event;  //IE\n\n                var left, top, nowLeft = parseInt(dialog[0].style.left), nowTop = parseInt(dialog[0].style.top);\n\n                if( nowLeft >= 0 ) {\n                    if( nowLeft + dialog.width() <= $(window).width()) {\n                        left = e.clientX - posX;\n                    } else {\t\n                        left = $(window).width() - dialog.width();\n                        document.onmousemove = null;\n                    }\n                } else {\n                    left = 0;\n                    document.onmousemove = null;\n                }\n\n                if( nowTop >= 0 ) {\n                    top = e.clientY - posY;\n                } else {\n                    top = 0;\n                    document.onmousemove = null;\n                }\n\n\n                document.onselectstart = function() {\n                    return false;\n                };\n\n                userUnselect($(\"body\"));\n                userUnselect(dialog);\n                dialog[0].style.left = left + \"px\";\n                dialog[0].style.top  = top + \"px\";\n            };\n\n            document.onmouseup = function() {                            \n                userCanSelect($(\"body\"));\n                userCanSelect(dialog);\n\n                document.onselectstart = null;         \n                document.onmousemove = null;\n            };\n\n            dialogHeader.touchDraggable = function() {\n                var offset = null;\n                var start  = function(e) {\n                    var orig = e.originalEvent; \n                    var pos  = $(this).parent().position();\n\n                    offset = {\n                        x : orig.changedTouches[0].pageX - pos.left,\n                        y : orig.changedTouches[0].pageY - pos.top\n                    };\n                };\n\n                var move = function(e) {\n                    e.preventDefault();\n                    var orig = e.originalEvent;\n\n                    $(this).parent().css({\n                        top  : orig.changedTouches[0].pageY - offset.y,\n                        left : orig.changedTouches[0].pageX - offset.x\n                    });\n                };\n\n                this.bind(\"touchstart\", start).bind(\"touchmove\", move);\n            };\n\n            dialogHeader.touchDraggable();\n        }\n\n        editormd.dialogZindex += 2;\n\n        return dialog;\n    };\n    \n    /**\n     * 鼠标和触摸事件的判断/选择方法\n     * MouseEvent or TouchEvent type switch\n     * \n     * @param   {String} [mouseEventType=\"click\"]    供选择的鼠标事件\n     * @param   {String} [touchEventType=\"touchend\"] 供选择的触摸事件\n     * @returns {String} EventType                   返回事件类型名称\n     */\n    \n    editormd.mouseOrTouch = function(mouseEventType, touchEventType) {\n        mouseEventType = mouseEventType || \"click\";\n        touchEventType = touchEventType || \"touchend\";\n        \n        var eventType  = mouseEventType;\n\n        try {\n            document.createEvent(\"TouchEvent\");\n            eventType = touchEventType;\n        } catch(e) {}\n\n        return eventType;\n    };\n    \n    /**\n     * 日期时间的格式化方法\n     * Datetime format method\n     * \n     * @param   {String}   [format=\"\"]  日期时间的格式，类似PHP的格式\n     * @returns {String}   datefmt      返回格式化后的日期时间字符串\n     */\n    \n    editormd.dateFormat = function(format) {                \n        format      = format || \"\";\n\n        var addZero = function(d) {\n            return (d < 10) ? \"0\" + d : d;\n        };\n\n        var date    = new Date(); \n        var year    = date.getFullYear();\n        var year2   = year.toString().slice(2, 4);\n        var month   = addZero(date.getMonth() + 1);\n        var day     = addZero(date.getDate());\n        var weekDay = date.getDay();\n        var hour    = addZero(date.getHours());\n        var min     = addZero(date.getMinutes());\n        var second  = addZero(date.getSeconds());\n        var ms      = addZero(date.getMilliseconds()); \n        var datefmt = \"\";\n\n        var ymd     = year2 + \"-\" + month + \"-\" + day;\n        var fymd    = year  + \"-\" + month + \"-\" + day;\n        var hms     = hour  + \":\" + min   + \":\" + second;\n\n        switch (format) \n        {\n            case \"UNIX Time\" :\n                    datefmt = date.getTime();\n                break;\n\n            case \"UTC\" :\n                    datefmt = date.toUTCString();\n                break;\t\n\n            case \"yy\" :\n                    datefmt = year2;\n                break;\t\n\n            case \"year\" :\n            case \"yyyy\" :\n                    datefmt = year;\n                break;\n\n            case \"month\" :\n            case \"mm\" :\n                    datefmt = month;\n                break;                        \n\n            case \"cn-week-day\" :\n            case \"cn-wd\" :\n                    var cnWeekDays = [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"];\n                    datefmt = \"星期\" + cnWeekDays[weekDay];\n                break;\n\n            case \"week-day\" :\n            case \"wd\" :\n                    var weekDays = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n                    datefmt = weekDays[weekDay];\n                break;\n\n            case \"day\" :\n            case \"dd\" :\n                    datefmt = day;\n                break;\n\n            case \"hour\" :\n            case \"hh\" :\n                    datefmt = hour;\n                break;\n\n            case \"min\" :\n            case \"ii\" :\n                    datefmt = min;\n                break;\n\n            case \"second\" :\n            case \"ss\" :\n                    datefmt = second;\n                break;\n\n            case \"ms\" :\n                    datefmt = ms;\n                break;\n\n            case \"yy-mm-dd\" :\n                    datefmt = ymd;\n                break;\n\n            case \"yyyy-mm-dd\" :\n                    datefmt = fymd;\n                break;\n\n            case \"yyyy-mm-dd h:i:s ms\" :\n            case \"full + ms\" : \n                    datefmt = fymd + \" \" + hms + \" \" + ms;\n                break;\n\n            case \"full\" :\n            case \"yyyy-mm-dd h:i:s\" :\n                default:\n                    datefmt = fymd + \" \" + hms;\n                break;\n        }\n\n        return datefmt;\n    };\n\n    return editormd;\n\n}));\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/extensions/toastr.css",
    "content": "/* Version 2.1.4 */\n.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;line-height:1}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4}.rtl .toast-close-button{left:-.3em;float:left;right:.3em}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}.toast-container{position:fixed;z-index:999999;pointer-events:none}.toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.toast-container>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px 3px 3px 3px;-webkit-border-radius:3px 3px 3px 3px;border-radius:3px 3px 3px 3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;opacity:.8}.toast-container>div.rtl{direction:rtl;padding:15px 50px 15px 15px;background-position:right 15px center}.toast-container>div:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;cursor:pointer}.toast-container>.toast-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}.toast-container>.toast-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}.toast-container>.toast-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}.toast-container>.toast-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}.toast-container.toast-bottom-center>div,.toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}.toast-container.toast-bottom-full-width>div,.toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4}@media all and (max-width:240px){.toast-container>div{padding:8px 8px 8px 50px;width:11em}.toast-container>div.rtl{padding:8px 50px 8px 8px}.toast-container .toast-close-button{right:-.2em;top:-.2em}.toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:241px) and (max-width:480px){.toast-container>div{padding:8px 8px 8px 50px;width:18em}.toast-container>div.rtl{padding:8px 50px 8px 8px}.toast-container .toast-close-button{right:-.2em;top:-.2em}.toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:481px) and (max-width:768px){.toast-container>div{padding:15px 15px 15px 50px;width:25em}.toast-container>div.rtl{padding:15px 50px 15px 15px}}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/fontawesome-iconpicker/dist/css/fontawesome-iconpicker.css",
    "content": "/*!\n * Font Awesome Icon Picker\n * https://farbelous.github.io/fontawesome-iconpicker/\n *\n * Originally written by (c) 2016 Javi Aguilar\n * Licensed under the MIT License\n * https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE\n *\n */\n/*\n * Font Awesome Icon Picker\n * https://farbelous.github.io/fontawesome-iconpicker/\n *\n * Originally written by (c) 2016 Javi Aguilar\n * Licensed under the MIT License\n * https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE\n *\n */\n/*\n * Font Awesome Icon Picker\n * https://farbelous.github.io/fontawesome-iconpicker/\n *\n * Originally written by (c) 2016 Javi Aguilar\n * Licensed under the MIT License\n * https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE\n *\n */\n.iconpicker-popover.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  display: none;\n  max-width: none;\n  padding: 1px;\n  text-align: left;\n  width: 216px;\n  background: #f7f7f7;\n  z-index: 9;\n}\n.iconpicker-popover.popover.top,\n.iconpicker-popover.popover.topLeftCorner,\n.iconpicker-popover.popover.topLeft,\n.iconpicker-popover.popover.topRight,\n.iconpicker-popover.popover.topRightCorner {\n  margin-top: -10px;\n}\n.iconpicker-popover.popover.right,\n.iconpicker-popover.popover.rightTop,\n.iconpicker-popover.popover.rightBottom {\n  margin-left: 10px;\n}\n.iconpicker-popover.popover.bottom,\n.iconpicker-popover.popover.bottomRightCorner,\n.iconpicker-popover.popover.bottomRight,\n.iconpicker-popover.popover.bottomLeft,\n.iconpicker-popover.popover.bottomLeftCorner {\n  margin-top: 10px;\n}\n.iconpicker-popover.popover.left,\n.iconpicker-popover.popover.leftBottom,\n.iconpicker-popover.popover.leftTop {\n  margin-left: -10px;\n}\n.iconpicker-popover.popover.inline {\n  margin: 0 0 12px 0;\n  position: relative;\n  display: inline-block;\n  opacity: 1;\n  top: auto;\n  left: auto;\n  bottom: auto;\n  right: auto;\n  max-width: 100%;\n  box-shadow: none;\n  z-index: auto;\n  vertical-align: top;\n}\n.iconpicker-popover.popover.inline > .arrow {\n  display: none;\n}\n.dropdown-menu .iconpicker-popover.inline {\n  margin: 0;\n  border: none;\n}\n.dropdown-menu.iconpicker-container {\n  padding: 0;\n}\n.iconpicker-popover.popover .popover-title {\n  padding: 12px;\n  font-size: 13px;\n  line-height: 15px;\n  border-bottom: 1px solid #ebebeb;\n  background-color: #f7f7f7;\n}\n.iconpicker-popover.popover .popover-title input[type=search].iconpicker-search {\n  margin: 0 0 2px 0;\n}\n.iconpicker-popover.popover .popover-title-text ~ input[type=search].iconpicker-search {\n  margin-top: 12px;\n}\n.iconpicker-popover.popover .popover-content {\n  padding: 0px;\n  text-align: center;\n}\n.iconpicker-popover .popover-footer {\n  float: none;\n  clear: both;\n  padding: 12px;\n  text-align: right;\n  margin: 0;\n  border-top: 1px solid #ebebeb;\n  background-color: #f7f7f7;\n}\n.iconpicker-popover .popover-footer:before,\n.iconpicker-popover .popover-footer:after {\n  content: \" \";\n  display: table;\n}\n.iconpicker-popover .popover-footer:after {\n  clear: both;\n}\n.iconpicker-popover .popover-footer .iconpicker-btn {\n  margin-left: 10px;\n}\n.iconpicker-popover .popover-footer input[type=search].iconpicker-search {\n  /*width:auto;\n        float:left;*/\n  margin-bottom: 12px;\n}\n.iconpicker-popover.popover > .arrow,\n.iconpicker-popover.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.iconpicker-popover.popover > .arrow {\n  border-width: 11px;\n}\n.iconpicker-popover.popover > .arrow:after {\n  border-width: 10px;\n  content: \"\";\n}\n.iconpicker-popover.popover.top > .arrow,\n.iconpicker-popover.popover.topLeft > .arrow,\n.iconpicker-popover.popover.topRight > .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-bottom-width: 0;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  bottom: -11px;\n}\n.iconpicker-popover.popover.top > .arrow:after,\n.iconpicker-popover.popover.topLeft > .arrow:after,\n.iconpicker-popover.popover.topRight > .arrow:after {\n  content: \" \";\n  bottom: 1px;\n  margin-left: -10px;\n  border-bottom-width: 0;\n  border-top-color: #ffffff;\n}\n.iconpicker-popover.popover.topLeft > .arrow {\n  left: 8px;\n  margin-left: 0;\n}\n.iconpicker-popover.popover.topRight > .arrow {\n  left: auto;\n  right: 8px;\n  margin-left: 0;\n}\n.iconpicker-popover.popover.right > .arrow,\n.iconpicker-popover.popover.rightTop > .arrow,\n.iconpicker-popover.popover.rightBottom > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-left-width: 0;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.iconpicker-popover.popover.right > .arrow:after,\n.iconpicker-popover.popover.rightTop > .arrow:after,\n.iconpicker-popover.popover.rightBottom > .arrow:after {\n  content: \" \";\n  left: 1px;\n  bottom: -10px;\n  border-left-width: 0;\n  border-right-color: #ffffff;\n}\n.iconpicker-popover.popover.rightTop > .arrow {\n  top: auto;\n  bottom: 8px;\n  margin-top: 0;\n}\n.iconpicker-popover.popover.rightBottom > .arrow {\n  top: 8px;\n  margin-top: 0;\n}\n.iconpicker-popover.popover.bottom > .arrow,\n.iconpicker-popover.popover.bottomRight > .arrow,\n.iconpicker-popover.popover.bottomLeft > .arrow {\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n  top: -11px;\n}\n.iconpicker-popover.popover.bottom > .arrow:after,\n.iconpicker-popover.popover.bottomRight > .arrow:after,\n.iconpicker-popover.popover.bottomLeft > .arrow:after {\n  content: \" \";\n  top: 1px;\n  margin-left: -10px;\n  border-top-width: 0;\n  border-bottom-color: #ffffff;\n}\n.iconpicker-popover.popover.bottomLeft > .arrow {\n  left: 8px;\n  margin-left: 0;\n}\n.iconpicker-popover.popover.bottomRight > .arrow {\n  left: auto;\n  right: 8px;\n  margin-left: 0;\n}\n.iconpicker-popover.popover.left > .arrow,\n.iconpicker-popover.popover.leftBottom > .arrow,\n.iconpicker-popover.popover.leftTop > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.iconpicker-popover.popover.left > .arrow:after,\n.iconpicker-popover.popover.leftBottom > .arrow:after,\n.iconpicker-popover.popover.leftTop > .arrow:after {\n  content: \" \";\n  right: 1px;\n  border-right-width: 0;\n  border-left-color: #ffffff;\n  bottom: -10px;\n}\n.iconpicker-popover.popover.leftBottom > .arrow {\n  top: 8px;\n  margin-top: 0;\n}\n.iconpicker-popover.popover.leftTop > .arrow {\n  top: auto;\n  bottom: 8px;\n  margin-top: 0;\n}\n.iconpicker {\n  position: relative;\n  text-align: left;\n  text-shadow: none;\n  line-height: 0;\n  display: block;\n  margin: 0;\n  overflow: hidden;\n}\n.iconpicker * {\n  -webkit-box-sizing: content-box;\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  position: relative;\n}\n.iconpicker:before,\n.iconpicker:after {\n  content: \" \";\n  display: table;\n}\n.iconpicker:after {\n  clear: both;\n}\n.iconpicker .iconpicker-items {\n  position: relative;\n  clear: both;\n  float: none;\n  padding: 12px 0 0 12px;\n  background: #fff;\n  margin: 0;\n  overflow: hidden;\n  overflow-y: auto;\n  min-height: 49px;\n  max-height: 246px;\n}\n.iconpicker .iconpicker-items:before,\n.iconpicker .iconpicker-items:after {\n  content: \" \";\n  display: table;\n}\n.iconpicker .iconpicker-items:after {\n  clear: both;\n}\n.iconpicker .iconpicker-item {\n  float: left;\n  width: 14px;\n  height: 14px;\n  padding: 12px;\n  margin: 0 12px 12px 0;\n  text-align: center;\n  cursor: pointer;\n  border-radius: 3px;\n  font-size: 14px;\n  box-shadow: 0 0 0 1px #dddddd;\n  color: inherit;\n  /*&:nth-child(4n+4) {\n            margin-right: 0;\n        }\n        &:nth-last-child(-n+4) {\n            margin-bottom: 0;\n        }*/\n}\n.iconpicker .iconpicker-item:hover:not(.iconpicker-selected) {\n  background-color: #eeeeee;\n}\n.iconpicker .iconpicker-item.iconpicker-selected {\n  box-shadow: none;\n  color: #fff;\n  background: #000;\n}\n.iconpicker-component {\n  cursor: pointer;\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/fontawesome-iconpicker/dist/js/fontawesome-iconpicker.js",
    "content": "(function(a) {\n    if (typeof define === \"function\" && define.amd) {\n        define([ \"jquery\" ], a);\n    } else {\n        a(jQuery);\n    }\n})(function(a) {\n    a.ui = a.ui || {};\n    var b = a.ui.version = \"1.12.1\";\n    (function() {\n        var b, c = Math.max, d = Math.abs, e = /left|center|right/, f = /top|center|bottom/, g = /[\\+\\-]\\d+(\\.[\\d]+)?%?/, h = /^\\w+/, i = /%$/, j = a.fn.pos;\n        function k(a, b, c) {\n            return [ parseFloat(a[0]) * (i.test(a[0]) ? b / 100 : 1), parseFloat(a[1]) * (i.test(a[1]) ? c / 100 : 1) ];\n        }\n        function l(b, c) {\n            return parseInt(a.css(b, c), 10) || 0;\n        }\n        function m(b) {\n            var c = b[0];\n            if (c.nodeType === 9) {\n                return {\n                    width: b.width(),\n                    height: b.height(),\n                    offset: {\n                        top: 0,\n                        left: 0\n                    }\n                };\n            }\n            if (a.isWindow(c)) {\n                return {\n                    width: b.width(),\n                    height: b.height(),\n                    offset: {\n                        top: b.scrollTop(),\n                        left: b.scrollLeft()\n                    }\n                };\n            }\n            if (c.preventDefault) {\n                return {\n                    width: 0,\n                    height: 0,\n                    offset: {\n                        top: c.pageY,\n                        left: c.pageX\n                    }\n                };\n            }\n            return {\n                width: b.outerWidth(),\n                height: b.outerHeight(),\n                offset: b.offset()\n            };\n        }\n        a.pos = {\n            scrollbarWidth: function() {\n                if (b !== undefined) {\n                    return b;\n                }\n                var c, d, e = a(\"<div \" + \"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>\" + \"<div style='height:100px;width:auto;'></div></div>\"), f = e.children()[0];\n                a(\"body\").append(e);\n                c = f.offsetWidth;\n                e.css(\"overflow\", \"scroll\");\n                d = f.offsetWidth;\n                if (c === d) {\n                    d = e[0].clientWidth;\n                }\n                e.remove();\n                return b = c - d;\n            },\n            getScrollInfo: function(b) {\n                var c = b.isWindow || b.isDocument ? \"\" : b.element.css(\"overflow-x\"), d = b.isWindow || b.isDocument ? \"\" : b.element.css(\"overflow-y\"), e = c === \"scroll\" || c === \"auto\" && b.width < b.element[0].scrollWidth, f = d === \"scroll\" || d === \"auto\" && b.height < b.element[0].scrollHeight;\n                return {\n                    width: f ? a.pos.scrollbarWidth() : 0,\n                    height: e ? a.pos.scrollbarWidth() : 0\n                };\n            },\n            getWithinInfo: function(b) {\n                var c = a(b || window), d = a.isWindow(c[0]), e = !!c[0] && c[0].nodeType === 9, f = !d && !e;\n                return {\n                    element: c,\n                    isWindow: d,\n                    isDocument: e,\n                    offset: f ? a(b).offset() : {\n                        left: 0,\n                        top: 0\n                    },\n                    scrollLeft: c.scrollLeft(),\n                    scrollTop: c.scrollTop(),\n                    width: c.outerWidth(),\n                    height: c.outerHeight()\n                };\n            }\n        };\n        a.fn.pos = function(b) {\n            if (!b || !b.of) {\n                return j.apply(this, arguments);\n            }\n            b = a.extend({}, b);\n            var i, n, o, p, q, r, s = a(b.of), t = a.pos.getWithinInfo(b.within), u = a.pos.getScrollInfo(t), v = (b.collision || \"flip\").split(\" \"), w = {};\n            r = m(s);\n            if (s[0].preventDefault) {\n                b.at = \"left top\";\n            }\n            n = r.width;\n            o = r.height;\n            p = r.offset;\n            q = a.extend({}, p);\n            a.each([ \"my\", \"at\" ], function() {\n                var a = (b[this] || \"\").split(\" \"), c, d;\n                if (a.length === 1) {\n                    a = e.test(a[0]) ? a.concat([ \"center\" ]) : f.test(a[0]) ? [ \"center\" ].concat(a) : [ \"center\", \"center\" ];\n                }\n                a[0] = e.test(a[0]) ? a[0] : \"center\";\n                a[1] = f.test(a[1]) ? a[1] : \"center\";\n                c = g.exec(a[0]);\n                d = g.exec(a[1]);\n                w[this] = [ c ? c[0] : 0, d ? d[0] : 0 ];\n                b[this] = [ h.exec(a[0])[0], h.exec(a[1])[0] ];\n            });\n            if (v.length === 1) {\n                v[1] = v[0];\n            }\n            if (b.at[0] === \"right\") {\n                q.left += n;\n            } else if (b.at[0] === \"center\") {\n                q.left += n / 2;\n            }\n            if (b.at[1] === \"bottom\") {\n                q.top += o;\n            } else if (b.at[1] === \"center\") {\n                q.top += o / 2;\n            }\n            i = k(w.at, n, o);\n            q.left += i[0];\n            q.top += i[1];\n            return this.each(function() {\n                var e, f, g = a(this), h = g.outerWidth(), j = g.outerHeight(), m = l(this, \"marginLeft\"), r = l(this, \"marginTop\"), x = h + m + l(this, \"marginRight\") + u.width, y = j + r + l(this, \"marginBottom\") + u.height, z = a.extend({}, q), A = k(w.my, g.outerWidth(), g.outerHeight());\n                if (b.my[0] === \"right\") {\n                    z.left -= h;\n                } else if (b.my[0] === \"center\") {\n                    z.left -= h / 2;\n                }\n                if (b.my[1] === \"bottom\") {\n                    z.top -= j;\n                } else if (b.my[1] === \"center\") {\n                    z.top -= j / 2;\n                }\n                z.left += A[0];\n                z.top += A[1];\n                e = {\n                    marginLeft: m,\n                    marginTop: r\n                };\n                a.each([ \"left\", \"top\" ], function(c, d) {\n                    if (a.ui.pos[v[c]]) {\n                        a.ui.pos[v[c]][d](z, {\n                            targetWidth: n,\n                            targetHeight: o,\n                            elemWidth: h,\n                            elemHeight: j,\n                            collisionPosition: e,\n                            collisionWidth: x,\n                            collisionHeight: y,\n                            offset: [ i[0] + A[0], i[1] + A[1] ],\n                            my: b.my,\n                            at: b.at,\n                            within: t,\n                            elem: g\n                        });\n                    }\n                });\n                if (b.using) {\n                    f = function(a) {\n                        var e = p.left - z.left, f = e + n - h, i = p.top - z.top, k = i + o - j, l = {\n                            target: {\n                                element: s,\n                                left: p.left,\n                                top: p.top,\n                                width: n,\n                                height: o\n                            },\n                            element: {\n                                element: g,\n                                left: z.left,\n                                top: z.top,\n                                width: h,\n                                height: j\n                            },\n                            horizontal: f < 0 ? \"left\" : e > 0 ? \"right\" : \"center\",\n                            vertical: k < 0 ? \"top\" : i > 0 ? \"bottom\" : \"middle\"\n                        };\n                        if (n < h && d(e + f) < n) {\n                            l.horizontal = \"center\";\n                        }\n                        if (o < j && d(i + k) < o) {\n                            l.vertical = \"middle\";\n                        }\n                        if (c(d(e), d(f)) > c(d(i), d(k))) {\n                            l.important = \"horizontal\";\n                        } else {\n                            l.important = \"vertical\";\n                        }\n                        b.using.call(this, a, l);\n                    };\n                }\n                g.offset(a.extend(z, {\n                    using: f\n                }));\n            });\n        };\n        a.ui.pos = {\n            _trigger: function(a, b, c, d) {\n                if (b.elem) {\n                    b.elem.trigger({\n                        type: c,\n                        position: a,\n                        positionData: b,\n                        triggered: d\n                    });\n                }\n            },\n            fit: {\n                left: function(b, d) {\n                    a.ui.pos._trigger(b, d, \"posCollide\", \"fitLeft\");\n                    var e = d.within, f = e.isWindow ? e.scrollLeft : e.offset.left, g = e.width, h = b.left - d.collisionPosition.marginLeft, i = f - h, j = h + d.collisionWidth - g - f, k;\n                    if (d.collisionWidth > g) {\n                        if (i > 0 && j <= 0) {\n                            k = b.left + i + d.collisionWidth - g - f;\n                            b.left += i - k;\n                        } else if (j > 0 && i <= 0) {\n                            b.left = f;\n                        } else {\n                            if (i > j) {\n                                b.left = f + g - d.collisionWidth;\n                            } else {\n                                b.left = f;\n                            }\n                        }\n                    } else if (i > 0) {\n                        b.left += i;\n                    } else if (j > 0) {\n                        b.left -= j;\n                    } else {\n                        b.left = c(b.left - h, b.left);\n                    }\n                    a.ui.pos._trigger(b, d, \"posCollided\", \"fitLeft\");\n                },\n                top: function(b, d) {\n                    a.ui.pos._trigger(b, d, \"posCollide\", \"fitTop\");\n                    var e = d.within, f = e.isWindow ? e.scrollTop : e.offset.top, g = d.within.height, h = b.top - d.collisionPosition.marginTop, i = f - h, j = h + d.collisionHeight - g - f, k;\n                    if (d.collisionHeight > g) {\n                        if (i > 0 && j <= 0) {\n                            k = b.top + i + d.collisionHeight - g - f;\n                            b.top += i - k;\n                        } else if (j > 0 && i <= 0) {\n                            b.top = f;\n                        } else {\n                            if (i > j) {\n                                b.top = f + g - d.collisionHeight;\n                            } else {\n                                b.top = f;\n                            }\n                        }\n                    } else if (i > 0) {\n                        b.top += i;\n                    } else if (j > 0) {\n                        b.top -= j;\n                    } else {\n                        b.top = c(b.top - h, b.top);\n                    }\n                    a.ui.pos._trigger(b, d, \"posCollided\", \"fitTop\");\n                }\n            },\n            flip: {\n                left: function(b, c) {\n                    a.ui.pos._trigger(b, c, \"posCollide\", \"flipLeft\");\n                    var e = c.within, f = e.offset.left + e.scrollLeft, g = e.width, h = e.isWindow ? e.scrollLeft : e.offset.left, i = b.left - c.collisionPosition.marginLeft, j = i - h, k = i + c.collisionWidth - g - h, l = c.my[0] === \"left\" ? -c.elemWidth : c.my[0] === \"right\" ? c.elemWidth : 0, m = c.at[0] === \"left\" ? c.targetWidth : c.at[0] === \"right\" ? -c.targetWidth : 0, n = -2 * c.offset[0], o, p;\n                    if (j < 0) {\n                        o = b.left + l + m + n + c.collisionWidth - g - f;\n                        if (o < 0 || o < d(j)) {\n                            b.left += l + m + n;\n                        }\n                    } else if (k > 0) {\n                        p = b.left - c.collisionPosition.marginLeft + l + m + n - h;\n                        if (p > 0 || d(p) < k) {\n                            b.left += l + m + n;\n                        }\n                    }\n                    a.ui.pos._trigger(b, c, \"posCollided\", \"flipLeft\");\n                },\n                top: function(b, c) {\n                    a.ui.pos._trigger(b, c, \"posCollide\", \"flipTop\");\n                    var e = c.within, f = e.offset.top + e.scrollTop, g = e.height, h = e.isWindow ? e.scrollTop : e.offset.top, i = b.top - c.collisionPosition.marginTop, j = i - h, k = i + c.collisionHeight - g - h, l = c.my[1] === \"top\", m = l ? -c.elemHeight : c.my[1] === \"bottom\" ? c.elemHeight : 0, n = c.at[1] === \"top\" ? c.targetHeight : c.at[1] === \"bottom\" ? -c.targetHeight : 0, o = -2 * c.offset[1], p, q;\n                    if (j < 0) {\n                        q = b.top + m + n + o + c.collisionHeight - g - f;\n                        if (q < 0 || q < d(j)) {\n                            b.top += m + n + o;\n                        }\n                    } else if (k > 0) {\n                        p = b.top - c.collisionPosition.marginTop + m + n + o - h;\n                        if (p > 0 || d(p) < k) {\n                            b.top += m + n + o;\n                        }\n                    }\n                    a.ui.pos._trigger(b, c, \"posCollided\", \"flipTop\");\n                }\n            },\n            flipfit: {\n                left: function() {\n                    a.ui.pos.flip.left.apply(this, arguments);\n                    a.ui.pos.fit.left.apply(this, arguments);\n                },\n                top: function() {\n                    a.ui.pos.flip.top.apply(this, arguments);\n                    a.ui.pos.fit.top.apply(this, arguments);\n                }\n            }\n        };\n        (function() {\n            var b, c, d, e, f, g = document.getElementsByTagName(\"body\")[0], h = document.createElement(\"div\");\n            b = document.createElement(g ? \"div\" : \"body\");\n            d = {\n                visibility: \"hidden\",\n                width: 0,\n                height: 0,\n                border: 0,\n                margin: 0,\n                background: \"none\"\n            };\n            if (g) {\n                a.extend(d, {\n                    position: \"absolute\",\n                    left: \"-1000px\",\n                    top: \"-1000px\"\n                });\n            }\n            for (f in d) {\n                b.style[f] = d[f];\n            }\n            b.appendChild(h);\n            c = g || document.documentElement;\n            c.insertBefore(b, c.firstChild);\n            h.style.cssText = \"position: absolute; left: 10.7432222px;\";\n            e = a(h).offset().left;\n            a.support.offsetFractions = e > 10 && e < 11;\n            b.innerHTML = \"\";\n            c.removeChild(b);\n        })();\n    })();\n    var c = a.ui.position;\n});\n\n(function(a) {\n    \"use strict\";\n    if (typeof define === \"function\" && define.amd) {\n        define([ \"jquery\" ], a);\n    } else if (window.jQuery && !window.jQuery.fn.iconpicker) {\n        a(window.jQuery);\n    }\n})(function(a) {\n    \"use strict\";\n    var b = {\n        isEmpty: function(a) {\n            return a === false || a === \"\" || a === null || a === undefined;\n        },\n        isEmptyObject: function(a) {\n            return this.isEmpty(a) === true || a.length === 0;\n        },\n        isElement: function(b) {\n            return a(b).length > 0;\n        },\n        isString: function(a) {\n            return typeof a === \"string\" || a instanceof String;\n        },\n        isArray: function(b) {\n            return a.isArray(b);\n        },\n        inArray: function(b, c) {\n            return a.inArray(b, c) !== -1;\n        },\n        throwError: function(a) {\n            throw \"Font Awesome Icon Picker Exception: \" + a;\n        }\n    };\n    var c = function(d, e) {\n        this._id = c._idCounter++;\n        this.element = a(d).addClass(\"iconpicker-element\");\n        this._trigger(\"iconpickerCreate\");\n        this.options = a.extend({}, c.defaultOptions, this.element.data(), e);\n        this.options.templates = a.extend({}, c.defaultOptions.templates, this.options.templates);\n        this.options.originalPlacement = this.options.placement;\n        this.container = b.isElement(this.options.container) ? a(this.options.container) : false;\n        if (this.container === false) {\n            if (this.element.is(\".dropdown-toggle\")) {\n                this.container = a(\"~ .dropdown-menu:first\", this.element);\n            } else {\n                this.container = this.element.is(\"input,textarea,button,.btn\") ? this.element.parent() : this.element;\n            }\n        }\n        this.container.addClass(\"iconpicker-container\");\n        if (this.isDropdownMenu()) {\n            this.options.templates.search = false;\n            this.options.templates.buttons = false;\n            this.options.placement = \"inline\";\n        }\n        this.input = this.element.is(\"input,textarea\") ? this.element.addClass(\"iconpicker-input\") : false;\n        if (this.input === false) {\n            this.input = this.container.find(this.options.input);\n            if (!this.input.is(\"input,textarea\")) {\n                this.input = false;\n            }\n        }\n        this.component = this.isDropdownMenu() ? this.container.parent().find(this.options.component) : this.container.find(this.options.component);\n        if (this.component.length === 0) {\n            this.component = false;\n        } else {\n            this.component.find(\"i\").addClass(\"iconpicker-component\");\n        }\n        this._createPopover();\n        this._createIconpicker();\n        if (this.getAcceptButton().length === 0) {\n            this.options.mustAccept = false;\n        }\n        if (this.isInputGroup()) {\n            this.container.parent().append(this.popover);\n        } else {\n            this.container.append(this.popover);\n        }\n        this._bindElementEvents();\n        this._bindWindowEvents();\n        this.update(this.options.selected);\n        if (this.isInline()) {\n            this.show();\n        }\n        this._trigger(\"iconpickerCreated\");\n    };\n    c._idCounter = 0;\n    c.defaultOptions = {\n        title: false,\n        selected: false,\n        defaultValue: false,\n        placement: \"bottom\",\n        collision: \"none\",\n        animation: true,\n        hideOnSelect: false,\n        showFooter: false,\n        searchInFooter: false,\n        mustAccept: false,\n        selectedCustomClass: \"bg-primary\",\n        icons: [],\n        fullClassFormatter: function(a) {\n            return \"fa \" + a;\n        },\n        input: \"input,.iconpicker-input\",\n        inputSearch: false,\n        container: false,\n        component: \".input-group-addon,.iconpicker-component\",\n        templates: {\n            popover: '<div class=\"iconpicker-popover popover\"><div class=\"arrow\"></div>' + '<div class=\"popover-title\"></div><div class=\"popover-content\"></div></div>',\n            footer: '<div class=\"popover-footer\"></div>',\n            buttons: '<button class=\"iconpicker-btn iconpicker-btn-cancel btn btn-default btn-sm\">Cancel</button>' + ' <button class=\"iconpicker-btn iconpicker-btn-accept btn btn-primary btn-sm\">Accept</button>',\n            search: '<input type=\"search\" class=\"form-control iconpicker-search\" placeholder=\"Type to filter\" />',\n            iconpicker: '<div class=\"iconpicker\"><div class=\"iconpicker-items\"></div></div>',\n            iconpickerItem: '<a role=\"button\" href=\"#\" class=\"iconpicker-item\"><i></i></a>'\n        }\n    };\n    c.batch = function(b, c) {\n        var d = Array.prototype.slice.call(arguments, 2);\n        return a(b).each(function() {\n            var b = a(this).data(\"iconpicker\");\n            if (!!b) {\n                b[c].apply(b, d);\n            }\n        });\n    };\n    c.prototype = {\n        constructor: c,\n        options: {},\n        _id: 0,\n        _trigger: function(b, c) {\n            c = c || {};\n            this.element.trigger(a.extend({\n                type: b,\n                iconpickerInstance: this\n            }, c));\n        },\n        _createPopover: function() {\n            this.popover = a(this.options.templates.popover);\n            var c = this.popover.find(\".popover-title\");\n            if (!!this.options.title) {\n                c.append(a('<div class=\"popover-title-text\">' + this.options.title + \"</div>\"));\n            }\n            if (this.hasSeparatedSearchInput() && !this.options.searchInFooter) {\n                c.append(this.options.templates.search);\n            } else if (!this.options.title) {\n                c.remove();\n            }\n            if (this.options.showFooter && !b.isEmpty(this.options.templates.footer)) {\n                var d = a(this.options.templates.footer);\n                if (this.hasSeparatedSearchInput() && this.options.searchInFooter) {\n                    d.append(a(this.options.templates.search));\n                }\n                if (!b.isEmpty(this.options.templates.buttons)) {\n                    d.append(a(this.options.templates.buttons));\n                }\n                this.popover.append(d);\n            }\n            if (this.options.animation === true) {\n                this.popover.addClass(\"fade\");\n            }\n            return this.popover;\n        },\n        _createIconpicker: function() {\n            var b = this;\n            this.iconpicker = a(this.options.templates.iconpicker);\n            var c = function(c) {\n                var d = a(this);\n                if (d.is(\"i\")) {\n                    d = d.parent();\n                }\n                b._trigger(\"iconpickerSelect\", {\n                    iconpickerItem: d,\n                    iconpickerValue: b.iconpickerValue\n                });\n                if (b.options.mustAccept === false) {\n                    b.update(d.data(\"iconpickerValue\"));\n                    b._trigger(\"iconpickerSelected\", {\n                        iconpickerItem: this,\n                        iconpickerValue: b.iconpickerValue\n                    });\n                } else {\n                    b.update(d.data(\"iconpickerValue\"), true);\n                }\n                if (b.options.hideOnSelect && b.options.mustAccept === false) {\n                    b.hide();\n                }\n                c.preventDefault();\n                return false;\n            };\n            for (var d in this.options.icons) {\n                if (typeof this.options.icons[d] === \"string\") {\n                    var e = a(this.options.templates.iconpickerItem);\n                    e.find(\"i\").addClass(this.options.fullClassFormatter(this.options.icons[d]));\n                    e.data(\"iconpickerValue\", this.options.icons[d]).on(\"click.iconpicker\", c);\n                    this.iconpicker.find(\".iconpicker-items\").append(e.attr(\"title\", \".\" + this.options.icons[d]));\n                }\n            }\n            this.popover.find(\".popover-content\").append(this.iconpicker);\n            return this.iconpicker;\n        },\n        _isEventInsideIconpicker: function(b) {\n            var c = a(b.target);\n            if ((!c.hasClass(\"iconpicker-element\") || c.hasClass(\"iconpicker-element\") && !c.is(this.element)) && c.parents(\".iconpicker-popover\").length === 0) {\n                return false;\n            }\n            return true;\n        },\n        _bindElementEvents: function() {\n            var c = this;\n            this.getSearchInput().on(\"keyup.iconpicker\", function() {\n                c.filter(a(this).val().toLowerCase());\n            });\n            this.getAcceptButton().on(\"click.iconpicker\", function() {\n                var a = c.iconpicker.find(\".iconpicker-selected\").get(0);\n                c.update(c.iconpickerValue);\n                c._trigger(\"iconpickerSelected\", {\n                    iconpickerItem: a,\n                    iconpickerValue: c.iconpickerValue\n                });\n                if (!c.isInline()) {\n                    c.hide();\n                }\n            });\n            this.getCancelButton().on(\"click.iconpicker\", function() {\n                if (!c.isInline()) {\n                    c.hide();\n                }\n            });\n            this.element.on(\"focus.iconpicker\", function(a) {\n                c.show();\n                a.stopPropagation();\n            });\n            if (this.hasComponent()) {\n                this.component.on(\"click.iconpicker\", function() {\n                    c.toggle();\n                });\n            }\n            if (this.hasInput()) {\n                this.input.on(\"keyup.iconpicker\", function(d) {\n                    if (!b.inArray(d.keyCode, [ 38, 40, 37, 39, 16, 17, 18, 9, 8, 91, 93, 20, 46, 186, 190, 46, 78, 188, 44, 86 ])) {\n                        c.update();\n                    } else {\n                        c._updateFormGroupStatus(c.getValid(this.value) !== false);\n                    }\n                    if (c.options.inputSearch === true) {\n                        c.filter(a(this).val().toLowerCase());\n                    }\n                });\n            }\n        },\n        _bindWindowEvents: function() {\n            var b = a(window.document);\n            var c = this;\n            var d = \".iconpicker.inst\" + this._id;\n            a(window).on(\"resize.iconpicker\" + d + \" orientationchange.iconpicker\" + d, function(a) {\n                if (c.popover.hasClass(\"in\")) {\n                    c.updatePlacement();\n                }\n            });\n            if (!c.isInline()) {\n                b.on(\"mouseup\" + d, function(a) {\n                    if (!c._isEventInsideIconpicker(a) && !c.isInline()) {\n                        c.hide();\n                    }\n                    a.stopPropagation();\n                    a.preventDefault();\n                    return false;\n                });\n            }\n            return false;\n        },\n        _unbindElementEvents: function() {\n            this.popover.off(\".iconpicker\");\n            this.element.off(\".iconpicker\");\n            if (this.hasInput()) {\n                this.input.off(\".iconpicker\");\n            }\n            if (this.hasComponent()) {\n                this.component.off(\".iconpicker\");\n            }\n            if (this.hasContainer()) {\n                this.container.off(\".iconpicker\");\n            }\n        },\n        _unbindWindowEvents: function() {\n            a(window).off(\".iconpicker.inst\" + this._id);\n            a(window.document).off(\".iconpicker.inst\" + this._id);\n        },\n        updatePlacement: function(b, c) {\n            b = b || this.options.placement;\n            this.options.placement = b;\n            c = c || this.options.collision;\n            c = c === true ? \"flip\" : c;\n            var d = {\n                at: \"right bottom\",\n                my: \"right top\",\n                of: this.hasInput() && !this.isInputGroup() ? this.input : this.container,\n                collision: c === true ? \"flip\" : c,\n                within: window\n            };\n            this.popover.removeClass(\"inline topLeftCorner topLeft top topRight topRightCorner \" + \"rightTop right rightBottom bottomRight bottomRightCorner \" + \"bottom bottomLeft bottomLeftCorner leftBottom left leftTop\");\n            if (typeof b === \"object\") {\n                return this.popover.pos(a.extend({}, d, b));\n            }\n            switch (b) {\n              case \"inline\":\n                {\n                    d = false;\n                }\n                break;\n\n              case \"topLeftCorner\":\n                {\n                    d.my = \"right bottom\";\n                    d.at = \"left top\";\n                }\n                break;\n\n              case \"topLeft\":\n                {\n                    d.my = \"left bottom\";\n                    d.at = \"left top\";\n                }\n                break;\n\n              case \"top\":\n                {\n                    d.my = \"center bottom\";\n                    d.at = \"center top\";\n                }\n                break;\n\n              case \"topRight\":\n                {\n                    d.my = \"right bottom\";\n                    d.at = \"right top\";\n                }\n                break;\n\n              case \"topRightCorner\":\n                {\n                    d.my = \"left bottom\";\n                    d.at = \"right top\";\n                }\n                break;\n\n              case \"rightTop\":\n                {\n                    d.my = \"left bottom\";\n                    d.at = \"right center\";\n                }\n                break;\n\n              case \"right\":\n                {\n                    d.my = \"left center\";\n                    d.at = \"right center\";\n                }\n                break;\n\n              case \"rightBottom\":\n                {\n                    d.my = \"left top\";\n                    d.at = \"right center\";\n                }\n                break;\n\n              case \"bottomRightCorner\":\n                {\n                    d.my = \"left top\";\n                    d.at = \"right bottom\";\n                }\n                break;\n\n              case \"bottomRight\":\n                {\n                    d.my = \"right top\";\n                    d.at = \"right bottom\";\n                }\n                break;\n\n              case \"bottom\":\n                {\n                    d.my = \"center top\";\n                    d.at = \"center bottom\";\n                }\n                break;\n\n              case \"bottomLeft\":\n                {\n                    d.my = \"left top\";\n                    d.at = \"left bottom\";\n                }\n                break;\n\n              case \"bottomLeftCorner\":\n                {\n                    d.my = \"right top\";\n                    d.at = \"left bottom\";\n                }\n                break;\n\n              case \"leftBottom\":\n                {\n                    d.my = \"right top\";\n                    d.at = \"left center\";\n                }\n                break;\n\n              case \"left\":\n                {\n                    d.my = \"right center\";\n                    d.at = \"left center\";\n                }\n                break;\n\n              case \"leftTop\":\n                {\n                    d.my = \"right bottom\";\n                    d.at = \"left center\";\n                }\n                break;\n\n              default:\n                {\n                    return false;\n                }\n                break;\n            }\n            this.popover.css({\n                display: this.options.placement === \"inline\" ? \"\" : \"block\"\n            });\n            if (d !== false) {\n                this.popover.pos(d).css(\"maxWidth\", a(window).width() - this.container.offset().left - 5);\n            } else {\n                this.popover.css({\n                    top: \"auto\",\n                    right: \"auto\",\n                    bottom: \"auto\",\n                    left: \"auto\",\n                    maxWidth: \"none\"\n                });\n            }\n            this.popover.addClass(this.options.placement);\n            return true;\n        },\n        _updateComponents: function() {\n            this.iconpicker.find(\".iconpicker-item.iconpicker-selected\").removeClass(\"iconpicker-selected \" + this.options.selectedCustomClass);\n            if (this.iconpickerValue) {\n                this.iconpicker.find(\".\" + this.options.fullClassFormatter(this.iconpickerValue).replace(/ /g, \".\")).parent().addClass(\"iconpicker-selected \" + this.options.selectedCustomClass);\n            }\n            if (this.hasComponent()) {\n                var a = this.component.find(\"i\");\n                if (a.length > 0) {\n                    a.attr(\"class\", this.options.fullClassFormatter(this.iconpickerValue));\n                } else {\n                    this.component.html(this.getHtml());\n                }\n            }\n        },\n        _updateFormGroupStatus: function(a) {\n            if (this.hasInput()) {\n                // if (a !== false) {\n                //     this.input.parents(\".form-group:first\").removeClass(\"has-error\");\n                // } else {\n                //     this.input.parents(\".form-group:first\").addClass(\"has-error\");\n                // }\n                return true;\n            }\n            return false;\n        },\n        getValid: function(c) {\n            if (!b.isString(c)) {\n                c = \"\";\n            }\n            var d = c === \"\";\n            c = a.trim(c);\n            if (b.inArray(c, this.options.icons) || d) {\n                return c;\n            }\n            return false;\n        },\n        setValue: function(a) {\n            var b = this.getValid(a);\n            if (b !== false) {\n                this.iconpickerValue = b;\n                this._trigger(\"iconpickerSetValue\", {\n                    iconpickerValue: b\n                });\n                return this.iconpickerValue;\n            } else {\n                this._trigger(\"iconpickerInvalid\", {\n                    iconpickerValue: a\n                });\n                return false;\n            }\n        },\n        getHtml: function() {\n            return '<i class=\"' + this.options.fullClassFormatter(this.iconpickerValue) + '\"></i>';\n        },\n        setSourceValue: function(a) {\n            a = this.setValue(a);\n            if (a !== false && a !== \"\") {\n                if (this.hasInput()) {\n                    this.input.val(this.iconpickerValue);\n                } else {\n                    this.element.data(\"iconpickerValue\", this.iconpickerValue);\n                }\n                this._trigger(\"iconpickerSetSourceValue\", {\n                    iconpickerValue: a\n                });\n            }\n            return a;\n        },\n        getSourceValue: function(a) {\n            a = a || this.options.defaultValue;\n            var b = a;\n            if (this.hasInput()) {\n                b = this.input.val();\n            } else {\n                b = this.element.data(\"iconpickerValue\");\n            }\n            if (b === undefined || b === \"\" || b === null || b === false) {\n                b = a;\n            }\n            return b;\n        },\n        hasInput: function() {\n            return this.input !== false;\n        },\n        isInputSearch: function() {\n            return this.hasInput() && this.options.inputSearch === true;\n        },\n        isInputGroup: function() {\n            return this.container.is(\".input-group\");\n        },\n        isDropdownMenu: function() {\n            return this.container.is(\".dropdown-menu\");\n        },\n        hasSeparatedSearchInput: function() {\n            return this.options.templates.search !== false && !this.isInputSearch();\n        },\n        hasComponent: function() {\n            return this.component !== false;\n        },\n        hasContainer: function() {\n            return this.container !== false;\n        },\n        getAcceptButton: function() {\n            return this.popover.find(\".iconpicker-btn-accept\");\n        },\n        getCancelButton: function() {\n            return this.popover.find(\".iconpicker-btn-cancel\");\n        },\n        getSearchInput: function() {\n            return this.popover.find(\".iconpicker-search\");\n        },\n        filter: function(c) {\n            if (b.isEmpty(c)) {\n                this.iconpicker.find(\".iconpicker-item\").show();\n                return a(false);\n            } else {\n                var d = [];\n                this.iconpicker.find(\".iconpicker-item\").each(function() {\n                    var b = a(this);\n                    var e = b.attr(\"title\").toLowerCase();\n                    var f = false;\n                    try {\n                        f = new RegExp(c, \"g\");\n                    } catch (a) {\n                        f = false;\n                    }\n                    if (f !== false && e.match(f)) {\n                        d.push(b);\n                        b.show();\n                    } else {\n                        b.hide();\n                    }\n                });\n                return d;\n            }\n        },\n        show: function() {\n            if (this.popover.hasClass(\"in\")) {\n                return false;\n            }\n            a.iconpicker.batch(a(\".iconpicker-popover.in:not(.inline)\").not(this.popover), \"hide\");\n            this._trigger(\"iconpickerShow\");\n            this.updatePlacement();\n            this.popover.addClass(\"in\");\n            setTimeout(a.proxy(function() {\n                this.popover.css(\"display\", this.isInline() ? \"\" : \"block\");\n                this._trigger(\"iconpickerShown\");\n            }, this), this.options.animation ? 300 : 1);\n        },\n        hide: function() {\n            if (!this.popover.hasClass(\"in\")) {\n                return false;\n            }\n            this._trigger(\"iconpickerHide\");\n            this.popover.removeClass(\"in\");\n            setTimeout(a.proxy(function() {\n                this.popover.css(\"display\", \"none\");\n                this.getSearchInput().val(\"\");\n                this.filter(\"\");\n                this._trigger(\"iconpickerHidden\");\n            }, this), this.options.animation ? 300 : 1);\n        },\n        toggle: function() {\n            if (this.popover.is(\":visible\")) {\n                this.hide();\n            } else {\n                this.show(true);\n            }\n        },\n        update: function(a, b) {\n            a = a ? a : this.getSourceValue(this.iconpickerValue);\n            this._trigger(\"iconpickerUpdate\");\n            if (b === true) {\n                a = this.setValue(a);\n            } else {\n                a = this.setSourceValue(a);\n                this._updateFormGroupStatus(a !== false);\n            }\n            if (a !== false) {\n                this._updateComponents();\n            }\n            this._trigger(\"iconpickerUpdated\");\n            return a;\n        },\n        destroy: function() {\n            this._trigger(\"iconpickerDestroy\");\n            this.element.removeData(\"iconpicker\").removeData(\"iconpickerValue\").removeClass(\"iconpicker-element\");\n            this._unbindElementEvents();\n            this._unbindWindowEvents();\n            a(this.popover).remove();\n            this._trigger(\"iconpickerDestroyed\");\n        },\n        disable: function() {\n            if (this.hasInput()) {\n                this.input.prop(\"disabled\", true);\n                return true;\n            }\n            return false;\n        },\n        enable: function() {\n            if (this.hasInput()) {\n                this.input.prop(\"disabled\", false);\n                return true;\n            }\n            return false;\n        },\n        isDisabled: function() {\n            if (this.hasInput()) {\n                return this.input.prop(\"disabled\") === true;\n            }\n            return false;\n        },\n        isInline: function() {\n            return this.options.placement === \"inline\" || this.popover.hasClass(\"inline\");\n        }\n    };\n    a.iconpicker = c;\n    a.fn.iconpicker = function(b) {\n        return this.each(function() {\n            var d = a(this);\n            if (!d.data(\"iconpicker\")) {\n                d.data(\"iconpicker\", new c(this, typeof b === \"object\" ? b : {}));\n            }\n        });\n    };\n    c.defaultOptions.icons = [ \"fa-500px\", \"fa-address-book\", \"fa-address-book-o\", \"fa-address-card\", \"fa-address-card-o\", \"fa-adjust\", \"fa-adn\", \"fa-align-center\", \"fa-align-justify\", \"fa-align-left\", \"fa-align-right\", \"fa-amazon\", \"fa-ambulance\", \"fa-american-sign-language-interpreting\", \"fa-anchor\", \"fa-android\", \"fa-angellist\", \"fa-angle-double-down\", \"fa-angle-double-left\", \"fa-angle-double-right\", \"fa-angle-double-up\", \"fa-angle-down\", \"fa-angle-left\", \"fa-angle-right\", \"fa-angle-up\", \"fa-apple\", \"fa-archive\", \"fa-area-chart\", \"fa-arrow-circle-down\", \"fa-arrow-circle-left\", \"fa-arrow-circle-o-down\", \"fa-arrow-circle-o-left\", \"fa-arrow-circle-o-right\", \"fa-arrow-circle-o-up\", \"fa-arrow-circle-right\", \"fa-arrow-circle-up\", \"fa-arrow-down\", \"fa-arrow-left\", \"fa-arrow-right\", \"fa-arrow-up\", \"fa-arrows\", \"fa-arrows-alt\", \"fa-arrows-h\", \"fa-arrows-v\", \"fa-asl-interpreting\", \"fa-assistive-listening-systems\", \"fa-asterisk\", \"fa-at\", \"fa-audio-description\", \"fa-automobile\", \"fa-backward\", \"fa-balance-scale\", \"fa-ban\", \"fa-bandcamp\", \"fa-bank\", \"fa-bar-chart\", \"fa-bar-chart-o\", \"fa-barcode\", \"fa-bars\", \"fa-bath\", \"fa-bathtub\", \"fa-battery\", \"fa-battery-0\", \"fa-battery-1\", \"fa-battery-2\", \"fa-battery-3\", \"fa-battery-4\", \"fa-battery-empty\", \"fa-battery-full\", \"fa-battery-half\", \"fa-battery-quarter\", \"fa-battery-three-quarters\", \"fa-bed\", \"fa-beer\", \"fa-behance\", \"fa-behance-square\", \"fa-bell\", \"fa-bell-o\", \"fa-bell-slash\", \"fa-bell-slash-o\", \"fa-bicycle\", \"fa-binoculars\", \"fa-birthday-cake\", \"fa-bitbucket\", \"fa-bitbucket-square\", \"fa-bitcoin\", \"fa-black-tie\", \"fa-blind\", \"fa-bluetooth\", \"fa-bluetooth-b\", \"fa-bold\", \"fa-bolt\", \"fa-bomb\", \"fa-book\", \"fa-bookmark\", \"fa-bookmark-o\", \"fa-braille\", \"fa-briefcase\", \"fa-btc\", \"fa-bug\", \"fa-building\", \"fa-building-o\", \"fa-bullhorn\", \"fa-bullseye\", \"fa-bus\", \"fa-buysellads\", \"fa-cab\", \"fa-calculator\", \"fa-calendar\", \"fa-calendar-check-o\", \"fa-calendar-minus-o\", \"fa-calendar-o\", \"fa-calendar-plus-o\", \"fa-calendar-times-o\", \"fa-camera\", \"fa-camera-retro\", \"fa-car\", \"fa-caret-down\", \"fa-caret-left\", \"fa-caret-right\", \"fa-caret-square-o-down\", \"fa-caret-square-o-left\", \"fa-caret-square-o-right\", \"fa-caret-square-o-up\", \"fa-caret-up\", \"fa-cart-arrow-down\", \"fa-cart-plus\", \"fa-cc\", \"fa-cc-amex\", \"fa-cc-diners-club\", \"fa-cc-discover\", \"fa-cc-jcb\", \"fa-cc-mastercard\", \"fa-cc-paypal\", \"fa-cc-stripe\", \"fa-cc-visa\", \"fa-certificate\", \"fa-chain\", \"fa-chain-broken\", \"fa-check\", \"fa-check-circle\", \"fa-check-circle-o\", \"fa-check-square\", \"fa-check-square-o\", \"fa-chevron-circle-down\", \"fa-chevron-circle-left\", \"fa-chevron-circle-right\", \"fa-chevron-circle-up\", \"fa-chevron-down\", \"fa-chevron-left\", \"fa-chevron-right\", \"fa-chevron-up\", \"fa-child\", \"fa-chrome\", \"fa-circle\", \"fa-circle-o\", \"fa-circle-o-notch\", \"fa-circle-thin\", \"fa-clipboard\", \"fa-clock-o\", \"fa-clone\", \"fa-close\", \"fa-cloud\", \"fa-cloud-download\", \"fa-cloud-upload\", \"fa-cny\", \"fa-code\", \"fa-code-fork\", \"fa-codepen\", \"fa-codiepie\", \"fa-coffee\", \"fa-cog\", \"fa-cogs\", \"fa-columns\", \"fa-comment\", \"fa-comment-o\", \"fa-commenting\", \"fa-commenting-o\", \"fa-comments\", \"fa-comments-o\", \"fa-compass\", \"fa-compress\", \"fa-connectdevelop\", \"fa-contao\", \"fa-copy\", \"fa-copyright\", \"fa-creative-commons\", \"fa-credit-card\", \"fa-credit-card-alt\", \"fa-crop\", \"fa-crosshairs\", \"fa-css3\", \"fa-cube\", \"fa-cubes\", \"fa-cut\", \"fa-cutlery\", \"fa-dashboard\", \"fa-dashcube\", \"fa-database\", \"fa-deaf\", \"fa-deafness\", \"fa-dedent\", \"fa-delicious\", \"fa-desktop\", \"fa-deviantart\", \"fa-diamond\", \"fa-digg\", \"fa-dollar\", \"fa-dot-circle-o\", \"fa-download\", \"fa-dribbble\", \"fa-drivers-license\", \"fa-drivers-license-o\", \"fa-dropbox\", \"fa-drupal\", \"fa-edge\", \"fa-edit\", \"fa-eercast\", \"fa-eject\", \"fa-ellipsis-h\", \"fa-ellipsis-v\", \"fa-empire\", \"fa-envelope\", \"fa-envelope-o\", \"fa-envelope-open\", \"fa-envelope-open-o\", \"fa-envelope-square\", \"fa-envira\", \"fa-eraser\", \"fa-etsy\", \"fa-eur\", \"fa-euro\", \"fa-exchange\", \"fa-exclamation\", \"fa-exclamation-circle\", \"fa-exclamation-triangle\", \"fa-expand\", \"fa-expeditedssl\", \"fa-external-link\", \"fa-external-link-square\", \"fa-eye\", \"fa-eye-slash\", \"fa-eyedropper\", \"fa-fa\", \"fa-facebook\", \"fa-facebook-f\", \"fa-facebook-official\", \"fa-facebook-square\", \"fa-fast-backward\", \"fa-fast-forward\", \"fa-fax\", \"fa-feed\", \"fa-female\", \"fa-fighter-jet\", \"fa-file\", \"fa-file-archive-o\", \"fa-file-audio-o\", \"fa-file-code-o\", \"fa-file-excel-o\", \"fa-file-image-o\", \"fa-file-movie-o\", \"fa-file-o\", \"fa-file-pdf-o\", \"fa-file-photo-o\", \"fa-file-picture-o\", \"fa-file-powerpoint-o\", \"fa-file-sound-o\", \"fa-file-text\", \"fa-file-text-o\", \"fa-file-video-o\", \"fa-file-word-o\", \"fa-file-zip-o\", \"fa-files-o\", \"fa-film\", \"fa-filter\", \"fa-fire\", \"fa-fire-extinguisher\", \"fa-firefox\", \"fa-first-order\", \"fa-flag\", \"fa-flag-checkered\", \"fa-flag-o\", \"fa-flash\", \"fa-flask\", \"fa-flickr\", \"fa-floppy-o\", \"fa-folder\", \"fa-folder-o\", \"fa-folder-open\", \"fa-folder-open-o\", \"fa-font\", \"fa-font-awesome\", \"fa-fonticons\", \"fa-fort-awesome\", \"fa-forumbee\", \"fa-forward\", \"fa-foursquare\", \"fa-free-code-camp\", \"fa-frown-o\", \"fa-futbol-o\", \"fa-gamepad\", \"fa-gavel\", \"fa-gbp\", \"fa-ge\", \"fa-gear\", \"fa-gears\", \"fa-genderless\", \"fa-get-pocket\", \"fa-gg\", \"fa-gg-circle\", \"fa-gift\", \"fa-git\", \"fa-git-square\", \"fa-github\", \"fa-github-alt\", \"fa-github-square\", \"fa-gitlab\", \"fa-gittip\", \"fa-glass\", \"fa-glide\", \"fa-glide-g\", \"fa-globe\", \"fa-google\", \"fa-google-plus\", \"fa-google-plus-circle\", \"fa-google-plus-official\", \"fa-google-plus-square\", \"fa-google-wallet\", \"fa-graduation-cap\", \"fa-gratipay\", \"fa-grav\", \"fa-group\", \"fa-h-square\", \"fa-hacker-news\", \"fa-hand-grab-o\", \"fa-hand-lizard-o\", \"fa-hand-o-down\", \"fa-hand-o-left\", \"fa-hand-o-right\", \"fa-hand-o-up\", \"fa-hand-paper-o\", \"fa-hand-peace-o\", \"fa-hand-pointer-o\", \"fa-hand-rock-o\", \"fa-hand-scissors-o\", \"fa-hand-spock-o\", \"fa-hand-stop-o\", \"fa-handshake-o\", \"fa-hard-of-hearing\", \"fa-hashtag\", \"fa-hdd-o\", \"fa-header\", \"fa-headphones\", \"fa-heart\", \"fa-heart-o\", \"fa-heartbeat\", \"fa-history\", \"fa-home\", \"fa-hospital-o\", \"fa-hotel\", \"fa-hourglass\", \"fa-hourglass-1\", \"fa-hourglass-2\", \"fa-hourglass-3\", \"fa-hourglass-end\", \"fa-hourglass-half\", \"fa-hourglass-o\", \"fa-hourglass-start\", \"fa-houzz\", \"fa-html5\", \"fa-i-cursor\", \"fa-id-badge\", \"fa-id-card\", \"fa-id-card-o\", \"fa-ils\", \"fa-image\", \"fa-imdb\", \"fa-inbox\", \"fa-indent\", \"fa-industry\", \"fa-info\", \"fa-info-circle\", \"fa-inr\", \"fa-instagram\", \"fa-institution\", \"fa-internet-explorer\", \"fa-intersex\", \"fa-ioxhost\", \"fa-italic\", \"fa-joomla\", \"fa-jpy\", \"fa-jsfiddle\", \"fa-key\", \"fa-keyboard-o\", \"fa-krw\", \"fa-language\", \"fa-laptop\", \"fa-lastfm\", \"fa-lastfm-square\", \"fa-leaf\", \"fa-leanpub\", \"fa-legal\", \"fa-lemon-o\", \"fa-level-down\", \"fa-level-up\", \"fa-life-bouy\", \"fa-life-buoy\", \"fa-life-ring\", \"fa-life-saver\", \"fa-lightbulb-o\", \"fa-line-chart\", \"fa-link\", \"fa-linkedin\", \"fa-linkedin-square\", \"fa-linode\", \"fa-linux\", \"fa-list\", \"fa-list-alt\", \"fa-list-ol\", \"fa-list-ul\", \"fa-location-arrow\", \"fa-lock\", \"fa-long-arrow-down\", \"fa-long-arrow-left\", \"fa-long-arrow-right\", \"fa-long-arrow-up\", \"fa-low-vision\", \"fa-magic\", \"fa-magnet\", \"fa-mail-forward\", \"fa-mail-reply\", \"fa-mail-reply-all\", \"fa-male\", \"fa-map\", \"fa-map-marker\", \"fa-map-o\", \"fa-map-pin\", \"fa-map-signs\", \"fa-mars\", \"fa-mars-double\", \"fa-mars-stroke\", \"fa-mars-stroke-h\", \"fa-mars-stroke-v\", \"fa-maxcdn\", \"fa-meanpath\", \"fa-medium\", \"fa-medkit\", \"fa-meetup\", \"fa-meh-o\", \"fa-mercury\", \"fa-microchip\", \"fa-microphone\", \"fa-microphone-slash\", \"fa-minus\", \"fa-minus-circle\", \"fa-minus-square\", \"fa-minus-square-o\", \"fa-mixcloud\", \"fa-mobile\", \"fa-mobile-phone\", \"fa-modx\", \"fa-money\", \"fa-moon-o\", \"fa-mortar-board\", \"fa-motorcycle\", \"fa-mouse-pointer\", \"fa-music\", \"fa-navicon\", \"fa-neuter\", \"fa-newspaper-o\", \"fa-object-group\", \"fa-object-ungroup\", \"fa-odnoklassniki\", \"fa-odnoklassniki-square\", \"fa-opencart\", \"fa-openid\", \"fa-opera\", \"fa-optin-monster\", \"fa-outdent\", \"fa-pagelines\", \"fa-paint-brush\", \"fa-paper-plane\", \"fa-paper-plane-o\", \"fa-paperclip\", \"fa-paragraph\", \"fa-paste\", \"fa-pause\", \"fa-pause-circle\", \"fa-pause-circle-o\", \"fa-paw\", \"fa-paypal\", \"fa-pencil\", \"fa-pencil-square\", \"fa-pencil-square-o\", \"fa-percent\", \"fa-phone\", \"fa-phone-square\", \"fa-photo\", \"fa-picture-o\", \"fa-pie-chart\", \"fa-pied-piper\", \"fa-pied-piper-alt\", \"fa-pied-piper-pp\", \"fa-pinterest\", \"fa-pinterest-p\", \"fa-pinterest-square\", \"fa-plane\", \"fa-play\", \"fa-play-circle\", \"fa-play-circle-o\", \"fa-plug\", \"fa-plus\", \"fa-plus-circle\", \"fa-plus-square\", \"fa-plus-square-o\", \"fa-podcast\", \"fa-power-off\", \"fa-print\", \"fa-product-hunt\", \"fa-puzzle-piece\", \"fa-qq\", \"fa-qrcode\", \"fa-question\", \"fa-question-circle\", \"fa-question-circle-o\", \"fa-quora\", \"fa-quote-left\", \"fa-quote-right\", \"fa-ra\", \"fa-random\", \"fa-ravelry\", \"fa-rebel\", \"fa-recycle\", \"fa-reddit\", \"fa-reddit-alien\", \"fa-reddit-square\", \"fa-refresh\", \"fa-registered\", \"fa-remove\", \"fa-renren\", \"fa-reorder\", \"fa-repeat\", \"fa-reply\", \"fa-reply-all\", \"fa-resistance\", \"fa-retweet\", \"fa-rmb\", \"fa-road\", \"fa-rocket\", \"fa-rotate-left\", \"fa-rotate-right\", \"fa-rouble\", \"fa-rss\", \"fa-rss-square\", \"fa-rub\", \"fa-ruble\", \"fa-rupee\", \"fa-s15\", \"fa-safari\", \"fa-save\", \"fa-scissors\", \"fa-scribd\", \"fa-search\", \"fa-search-minus\", \"fa-search-plus\", \"fa-sellsy\", \"fa-send\", \"fa-send-o\", \"fa-server\", \"fa-share\", \"fa-share-alt\", \"fa-share-alt-square\", \"fa-share-square\", \"fa-share-square-o\", \"fa-shekel\", \"fa-sheqel\", \"fa-shield\", \"fa-ship\", \"fa-shirtsinbulk\", \"fa-shopping-bag\", \"fa-shopping-basket\", \"fa-shopping-cart\", \"fa-shower\", \"fa-sign-in\", \"fa-sign-language\", \"fa-sign-out\", \"fa-signal\", \"fa-signing\", \"fa-simplybuilt\", \"fa-sitemap\", \"fa-skyatlas\", \"fa-skype\", \"fa-slack\", \"fa-sliders\", \"fa-slideshare\", \"fa-smile-o\", \"fa-snapchat\", \"fa-snapchat-ghost\", \"fa-snapchat-square\", \"fa-snowflake-o\", \"fa-soccer-ball-o\", \"fa-sort\", \"fa-sort-alpha-asc\", \"fa-sort-alpha-desc\", \"fa-sort-amount-asc\", \"fa-sort-amount-desc\", \"fa-sort-asc\", \"fa-sort-desc\", \"fa-sort-down\", \"fa-sort-numeric-asc\", \"fa-sort-numeric-desc\", \"fa-sort-up\", \"fa-soundcloud\", \"fa-space-shuttle\", \"fa-spinner\", \"fa-spoon\", \"fa-spotify\", \"fa-square\", \"fa-square-o\", \"fa-stack-exchange\", \"fa-stack-overflow\", \"fa-star\", \"fa-star-half\", \"fa-star-half-empty\", \"fa-star-half-full\", \"fa-star-half-o\", \"fa-star-o\", \"fa-steam\", \"fa-steam-square\", \"fa-step-backward\", \"fa-step-forward\", \"fa-stethoscope\", \"fa-sticky-note\", \"fa-sticky-note-o\", \"fa-stop\", \"fa-stop-circle\", \"fa-stop-circle-o\", \"fa-street-view\", \"fa-strikethrough\", \"fa-stumbleupon\", \"fa-stumbleupon-circle\", \"fa-subscript\", \"fa-subway\", \"fa-suitcase\", \"fa-sun-o\", \"fa-superpowers\", \"fa-superscript\", \"fa-support\", \"fa-table\", \"fa-tablet\", \"fa-tachometer\", \"fa-tag\", \"fa-tags\", \"fa-tasks\", \"fa-taxi\", \"fa-telegram\", \"fa-television\", \"fa-tencent-weibo\", \"fa-terminal\", \"fa-text-height\", \"fa-text-width\", \"fa-th\", \"fa-th-large\", \"fa-th-list\", \"fa-themeisle\", \"fa-thermometer\", \"fa-thermometer-0\", \"fa-thermometer-1\", \"fa-thermometer-2\", \"fa-thermometer-3\", \"fa-thermometer-4\", \"fa-thermometer-empty\", \"fa-thermometer-full\", \"fa-thermometer-half\", \"fa-thermometer-quarter\", \"fa-thermometer-three-quarters\", \"fa-thumb-tack\", \"fa-thumbs-down\", \"fa-thumbs-o-down\", \"fa-thumbs-o-up\", \"fa-thumbs-up\", \"fa-ticket\", \"fa-times\", \"fa-times-circle\", \"fa-times-circle-o\", \"fa-times-rectangle\", \"fa-times-rectangle-o\", \"fa-tint\", \"fa-toggle-down\", \"fa-toggle-left\", \"fa-toggle-off\", \"fa-toggle-on\", \"fa-toggle-right\", \"fa-toggle-up\", \"fa-trademark\", \"fa-train\", \"fa-transgender\", \"fa-transgender-alt\", \"fa-trash\", \"fa-trash-o\", \"fa-tree\", \"fa-trello\", \"fa-tripadvisor\", \"fa-trophy\", \"fa-truck\", \"fa-try\", \"fa-tty\", \"fa-tumblr\", \"fa-tumblr-square\", \"fa-turkish-lira\", \"fa-tv\", \"fa-twitch\", \"fa-twitter\", \"fa-twitter-square\", \"fa-umbrella\", \"fa-underline\", \"fa-undo\", \"fa-universal-access\", \"fa-university\", \"fa-unlink\", \"fa-unlock\", \"fa-unlock-alt\", \"fa-unsorted\", \"fa-upload\", \"fa-usb\", \"fa-usd\", \"fa-user\", \"fa-user-circle\", \"fa-user-circle-o\", \"fa-user-md\", \"fa-user-o\", \"fa-user-plus\", \"fa-user-secret\", \"fa-user-times\", \"fa-users\", \"fa-vcard\", \"fa-vcard-o\", \"fa-venus\", \"fa-venus-double\", \"fa-venus-mars\", \"fa-viacoin\", \"fa-viadeo\", \"fa-viadeo-square\", \"fa-video-camera\", \"fa-vimeo\", \"fa-vimeo-square\", \"fa-vine\", \"fa-vk\", \"fa-volume-control-phone\", \"fa-volume-down\", \"fa-volume-off\", \"fa-volume-up\", \"fa-warning\", \"fa-wechat\", \"fa-weibo\", \"fa-weixin\", \"fa-whatsapp\", \"fa-wheelchair\", \"fa-wheelchair-alt\", \"fa-wifi\", \"fa-wikipedia-w\", \"fa-window-close\", \"fa-window-close-o\", \"fa-window-maximize\", \"fa-window-minimize\", \"fa-window-restore\", \"fa-windows\", \"fa-won\", \"fa-wordpress\", \"fa-wpbeginner\", \"fa-wpexplorer\", \"fa-wpforms\", \"fa-wrench\", \"fa-xing\", \"fa-xing-square\", \"fa-y-combinator\", \"fa-y-combinator-square\", \"fa-yahoo\", \"fa-yc\", \"fa-yc-square\", \"fa-yelp\", \"fa-yen\", \"fa-yoast\", \"fa-youtube\", \"fa-youtube-play\", \"fa-youtube-square\" ];\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/input-mask/phone-codes/phone-be.json",
    "content": "[\n\t{ \"mask\": \"+32(53)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Aalst (Alost)\" },\n\t{ \"mask\": \"+32(3)###-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Antwerpen (Anvers)\" },\n\t{ \"mask\": \"+32(63)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Arlon\" },\n\t{ \"mask\": \"+32(67)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Ath\" },\n\t{ \"mask\": \"+32(50)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Brugge (Bruges)\" },\n\t{ \"mask\": \"+32(2)###-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Brussel/Bruxelles (Brussels)\" },\n\t{ \"mask\": \"+32(71)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Charleroi\" },\n\t{ \"mask\": \"+32(60)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Chimay\" },\n\t{ \"mask\": \"+32(83)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Ciney\" },\n\t{ \"mask\": \"+32(52)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Dendermonde\" },\n\t{ \"mask\": \"+32(13)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Diest\" },\n\t{ \"mask\": \"+32(82)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Dinant\" },\n\t{ \"mask\": \"+32(86)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Durbuy\" },\n\t{ \"mask\": \"+32(89)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Genk\" },\n\t{ \"mask\": \"+32(9)###-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Gent (Gand)\" },\n\t{ \"mask\": \"+32(11)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Hasselt\" },\n\t{ \"mask\": \"+32(14)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Herentals\" },\n\t{ \"mask\": \"+32(85)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Huy (Hoei)\" },\n\t{ \"mask\": \"+32(64)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"La Louvière\" },\n\t{ \"mask\": \"+32(16)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Leuven (Louvain)\" },\n\t{ \"mask\": \"+32(61)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Libramont\" },\n\t{ \"mask\": \"+32(4)###-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Liège (Luik)\" },\n\t{ \"mask\": \"+32(15)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Mechelen (Malines)\" },\n\t{ \"mask\": \"+32(47#)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Mobile Phones\" },    \n\t{ \"mask\": \"+32(48#)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Mobile Phones\" },    \n\t{ \"mask\": \"+32(49#)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Mobile Phones\" },    \n\t{ \"mask\": \"+32(65)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Mons (Bergen)\" },\n\t{ \"mask\": \"+32(81)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Namur (Namen)\" },\t\n\t{ \"mask\": \"+32(58)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Nieuwpoort (Nieuport)\" },\t\n\t{ \"mask\": \"+32(54)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Ninove\" },\n\t{ \"mask\": \"+32(67)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Nivelles (Nijvel)\" },\n\t{ \"mask\": \"+32(59)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Oostende (Ostende)\" },\n\t{ \"mask\": \"+32(51)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Roeselare (Roulers)\" },\n\t{ \"mask\": \"+32(55)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Ronse\" },\t\n\t{ \"mask\": \"+32(80)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Stavelot\" },\n\t{ \"mask\": \"+32(12)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Tongeren (Tongres)\" },\n\t{ \"mask\": \"+32(69)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Tounai\" },\n\t{ \"mask\": \"+32(14)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Turnhout\" },\n\t{ \"mask\": \"+32(87)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Verviers\" },\n\t{ \"mask\": \"+32(58)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Veurne\" },\n\t{ \"mask\": \"+32(19)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Wareme\" },\n\t{ \"mask\": \"+32(10)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Wavre (Waver)\" },\n\t{ \"mask\": \"+32(50)##-##-##\", \"cc\": \"BE\", \"cd\": \"Belgium\", \"city\": \"Zeebrugge\" }\n]"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/input-mask/phone-codes/phone-codes.json",
    "content": "[\n\t{ \"mask\": \"+247-####\", \"cc\": \"AC\", \"name_en\": \"Ascension\", \"desc_en\": \"\", \"name_ru\": \"Остров Вознесения\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+376-###-###\", \"cc\": \"AD\", \"name_en\": \"Andorra\", \"desc_en\": \"\", \"name_ru\": \"Андорра\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+971-5#-###-####\", \"cc\": \"AE\", \"name_en\": \"United Arab Emirates\", \"desc_en\": \"mobile\", \"name_ru\": \"Объединенные Арабские Эмираты\", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+971-#-###-####\", \"cc\": \"AE\", \"name_en\": \"United Arab Emirates\", \"desc_en\": \"\", \"name_ru\": \"Объединенные Арабские Эмираты\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+93-##-###-####\", \"cc\": \"AF\", \"name_en\": \"Afghanistan\", \"desc_en\": \"\", \"name_ru\": \"Афганистан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(268)###-####\", \"cc\": \"AG\", \"name_en\": \"Antigua & Barbuda\", \"desc_en\": \"\", \"name_ru\": \"Антигуа и Барбуда\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(264)###-####\", \"cc\": \"AI\", \"name_en\": \"Anguilla\", \"desc_en\": \"\", \"name_ru\": \"Ангилья\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+355(###)###-###\", \"cc\": \"AL\", \"name_en\": \"Albania\", \"desc_en\": \"\", \"name_ru\": \"Албания\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+374-##-###-###\", \"cc\": \"AM\", \"name_en\": \"Armenia\", \"desc_en\": \"\", \"name_ru\": \"Армения\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+599-###-####\", \"cc\": \"AN\", \"name_en\": \"Caribbean Netherlands\", \"desc_en\": \"\", \"name_ru\": \"Карибские Нидерланды\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+599-###-####\", \"cc\": \"AN\", \"name_en\": \"Netherlands Antilles\", \"desc_en\": \"\", \"name_ru\": \"Нидерландские Антильские острова\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+599-9###-####\", \"cc\": \"AN\", \"name_en\": \"Netherlands Antilles\", \"desc_en\": \"Curacao\", \"name_ru\": \"Нидерландские Антильские острова\", \"desc_ru\": \"Кюрасао\" },\n\t{ \"mask\": \"+244(###)###-###\", \"cc\": \"AO\", \"name_en\": \"Angola\", \"desc_en\": \"\", \"name_ru\": \"Ангола\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+672-1##-###\", \"cc\": \"AQ\", \"name_en\": \"Australian bases in Antarctica\", \"desc_en\": \"\", \"name_ru\": \"Австралийская антарктическая база\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+54(###)###-####\", \"cc\": \"AR\", \"name_en\": \"Argentina\", \"desc_en\": \"\", \"name_ru\": \"Аргентина\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(684)###-####\", \"cc\": \"AS\", \"name_en\": \"American Samoa\", \"desc_en\": \"\", \"name_ru\": \"Американское Самоа\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+43(###)###-####\", \"cc\": \"AT\", \"name_en\": \"Austria\", \"desc_en\": \"\", \"name_ru\": \"Австрия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+61-#-####-####\", \"cc\": \"AU\", \"name_en\": \"Australia\", \"desc_en\": \"\", \"name_ru\": \"Австралия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+297-###-####\", \"cc\": \"AW\", \"name_en\": \"Aruba\", \"desc_en\": \"\", \"name_ru\": \"Аруба\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+994-##-###-##-##\", \"cc\": \"AZ\", \"name_en\": \"Azerbaijan\", \"desc_en\": \"\", \"name_ru\": \"Азербайджан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+387-##-#####\", \"cc\": \"BA\", \"name_en\": \"Bosnia and Herzegovina\", \"desc_en\": \"\", \"name_ru\": \"Босния и Герцеговина\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+387-##-####\", \"cc\": \"BA\", \"name_en\": \"Bosnia and Herzegovina\", \"desc_en\": \"\", \"name_ru\": \"Босния и Герцеговина\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(246)###-####\", \"cc\": \"BB\", \"name_en\": \"Barbados\", \"desc_en\": \"\", \"name_ru\": \"Барбадос\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+880-##-###-###\", \"cc\": \"BD\", \"name_en\": \"Bangladesh\", \"desc_en\": \"\", \"name_ru\": \"Бангладеш\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+32(###)###-###\", \"cc\": \"BE\", \"name_en\": \"Belgium\", \"desc_en\": \"\", \"name_ru\": \"Бельгия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+226-##-##-####\", \"cc\": \"BF\", \"name_en\": \"Burkina Faso\", \"desc_en\": \"\", \"name_ru\": \"Буркина Фасо\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+359(###)###-###\", \"cc\": \"BG\", \"name_en\": \"Bulgaria\", \"desc_en\": \"\", \"name_ru\": \"Болгария\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+973-####-####\", \"cc\": \"BH\", \"name_en\": \"Bahrain\", \"desc_en\": \"\", \"name_ru\": \"Бахрейн\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+257-##-##-####\", \"cc\": \"BI\", \"name_en\": \"Burundi\", \"desc_en\": \"\", \"name_ru\": \"Бурунди\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+229-##-##-####\", \"cc\": \"BJ\", \"name_en\": \"Benin\", \"desc_en\": \"\", \"name_ru\": \"Бенин\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(441)###-####\", \"cc\": \"BM\", \"name_en\": \"Bermuda\", \"desc_en\": \"\", \"name_ru\": \"Бермудские острова\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+673-###-####\", \"cc\": \"BN\", \"name_en\": \"Brunei Darussalam\", \"desc_en\": \"\", \"name_ru\": \"Бруней-Даруссалам\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+591-#-###-####\", \"cc\": \"BO\", \"name_en\": \"Bolivia\", \"desc_en\": \"\", \"name_ru\": \"Боливия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+55-##-####[#]-####\", \"cc\": \"BR\", \"name_en\": \"Brazil\", \"desc_en\": \"\", \"name_ru\": \"Бразилия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(242)###-####\", \"cc\": \"BS\", \"name_en\": \"Bahamas\", \"desc_en\": \"\", \"name_ru\": \"Багамские Острова\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+975-17-###-###\", \"cc\": \"BT\", \"name_en\": \"Bhutan\", \"desc_en\": \"\", \"name_ru\": \"Бутан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+975-#-###-###\", \"cc\": \"BT\", \"name_en\": \"Bhutan\", \"desc_en\": \"\", \"name_ru\": \"Бутан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+267-##-###-###\", \"cc\": \"BW\", \"name_en\": \"Botswana\", \"desc_en\": \"\", \"name_ru\": \"Ботсвана\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+375(##)###-##-##\", \"cc\": \"BY\", \"name_en\": \"Belarus\", \"desc_en\": \"\", \"name_ru\": \"Беларусь (Белоруссия)\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+501-###-####\", \"cc\": \"BZ\", \"name_en\": \"Belize\", \"desc_en\": \"\", \"name_ru\": \"Белиз\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+243(###)###-###\", \"cc\": \"CD\", \"name_en\": \"Dem. Rep. Congo\", \"desc_en\": \"\", \"name_ru\": \"Дем. Респ. Конго (Киншаса)\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+236-##-##-####\", \"cc\": \"CF\", \"name_en\": \"Central African Republic\", \"desc_en\": \"\", \"name_ru\": \"Центральноафриканская Республика\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+242-##-###-####\", \"cc\": \"CG\", \"name_en\": \"Congo (Brazzaville)\", \"desc_en\": \"\", \"name_ru\": \"Конго (Браззавиль)\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+41-##-###-####\", \"cc\": \"CH\", \"name_en\": \"Switzerland\", \"desc_en\": \"\", \"name_ru\": \"Швейцария\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+225-##-###-###\", \"cc\": \"CI\", \"name_en\": \"Cote d’Ivoire (Ivory Coast)\", \"desc_en\": \"\", \"name_ru\": \"Кот-д’Ивуар\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+682-##-###\", \"cc\": \"CK\", \"name_en\": \"Cook Islands\", \"desc_en\": \"\", \"name_ru\": \"Острова Кука\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+56-#-####-####\", \"cc\": \"CL\", \"name_en\": \"Chile\", \"desc_en\": \"\", \"name_ru\": \"Чили\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+237-####-####\", \"cc\": \"CM\", \"name_en\": \"Cameroon\", \"desc_en\": \"\", \"name_ru\": \"Камерун\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+86(###)####-####\", \"cc\": \"CN\", \"name_en\": \"China (PRC)\", \"desc_en\": \"\", \"name_ru\": \"Китайская Н.Р.\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+86(###)####-###\", \"cc\": \"CN\", \"name_en\": \"China (PRC)\", \"desc_en\": \"\", \"name_ru\": \"Китайская Н.Р.\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+86-##-#####-#####\", \"cc\": \"CN\", \"name_en\": \"China (PRC)\", \"desc_en\": \"\", \"name_ru\": \"Китайская Н.Р.\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+57(###)###-####\", \"cc\": \"CO\", \"name_en\": \"Colombia\", \"desc_en\": \"\", \"name_ru\": \"Колумбия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+506-####-####\", \"cc\": \"CR\", \"name_en\": \"Costa Rica\", \"desc_en\": \"\", \"name_ru\": \"Коста-Рика\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+53-#-###-####\", \"cc\": \"CU\", \"name_en\": \"Cuba\", \"desc_en\": \"\", \"name_ru\": \"Куба\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+238(###)##-##\", \"cc\": \"CV\", \"name_en\": \"Cape Verde\", \"desc_en\": \"\", \"name_ru\": \"Кабо-Верде\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+599-###-####\", \"cc\": \"CW\", \"name_en\": \"Curacao\", \"desc_en\": \"\", \"name_ru\": \"Кюрасао\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+357-##-###-###\", \"cc\": \"CY\", \"name_en\": \"Cyprus\", \"desc_en\": \"\", \"name_ru\": \"Кипр\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+420(###)###-###\", \"cc\": \"CZ\", \"name_en\": \"Czech Republic\", \"desc_en\": \"\", \"name_ru\": \"Чехия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+49(####)###-####\", \"cc\": \"DE\", \"name_en\": \"Germany\", \"desc_en\": \"\", \"name_ru\": \"Германия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+49(###)###-####\", \"cc\": \"DE\", \"name_en\": \"Germany\", \"desc_en\": \"\", \"name_ru\": \"Германия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+49(###)##-####\", \"cc\": \"DE\", \"name_en\": \"Germany\", \"desc_en\": \"\", \"name_ru\": \"Германия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+49(###)##-###\", \"cc\": \"DE\", \"name_en\": \"Germany\", \"desc_en\": \"\", \"name_ru\": \"Германия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+49(###)##-##\", \"cc\": \"DE\", \"name_en\": \"Germany\", \"desc_en\": \"\", \"name_ru\": \"Германия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+49-###-###\", \"cc\": \"DE\", \"name_en\": \"Germany\", \"desc_en\": \"\", \"name_ru\": \"Германия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+253-##-##-##-##\", \"cc\": \"DJ\", \"name_en\": \"Djibouti\", \"desc_en\": \"\", \"name_ru\": \"Джибути\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+45-##-##-##-##\", \"cc\": \"DK\", \"name_en\": \"Denmark\", \"desc_en\": \"\", \"name_ru\": \"Дания\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(767)###-####\", \"cc\": \"DM\", \"name_en\": \"Dominica\", \"desc_en\": \"\", \"name_ru\": \"Доминика\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(809)###-####\", \"cc\": \"DO\", \"name_en\": \"Dominican Republic\", \"desc_en\": \"\", \"name_ru\": \"Доминиканская Республика\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(829)###-####\", \"cc\": \"DO\", \"name_en\": \"Dominican Republic\", \"desc_en\": \"\", \"name_ru\": \"Доминиканская Республика\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(849)###-####\", \"cc\": \"DO\", \"name_en\": \"Dominican Republic\", \"desc_en\": \"\", \"name_ru\": \"Доминиканская Республика\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+213-##-###-####\", \"cc\": \"DZ\", \"name_en\": \"Algeria\", \"desc_en\": \"\", \"name_ru\": \"Алжир\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+593-##-###-####\", \"cc\": \"EC\", \"name_en\": \"Ecuador \", \"desc_en\": \"mobile\", \"name_ru\": \"Эквадор \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+593-#-###-####\", \"cc\": \"EC\", \"name_en\": \"Ecuador\", \"desc_en\": \"\", \"name_ru\": \"Эквадор\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+372-####-####\", \"cc\": \"EE\", \"name_en\": \"Estonia \", \"desc_en\": \"mobile\", \"name_ru\": \"Эстония \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+372-###-####\", \"cc\": \"EE\", \"name_en\": \"Estonia\", \"desc_en\": \"\", \"name_ru\": \"Эстония\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+20(###)###-####\", \"cc\": \"EG\", \"name_en\": \"Egypt\", \"desc_en\": \"\", \"name_ru\": \"Египет\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+291-#-###-###\", \"cc\": \"ER\", \"name_en\": \"Eritrea\", \"desc_en\": \"\", \"name_ru\": \"Эритрея\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+34(###)###-###\", \"cc\": \"ES\", \"name_en\": \"Spain\", \"desc_en\": \"\", \"name_ru\": \"Испания\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+251-##-###-####\", \"cc\": \"ET\", \"name_en\": \"Ethiopia\", \"desc_en\": \"\", \"name_ru\": \"Эфиопия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+358(###)###-##-##\", \"cc\": \"FI\", \"name_en\": \"Finland\", \"desc_en\": \"\", \"name_ru\": \"Финляндия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+679-##-#####\", \"cc\": \"FJ\", \"name_en\": \"Fiji\", \"desc_en\": \"\", \"name_ru\": \"Фиджи\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+500-#####\", \"cc\": \"FK\", \"name_en\": \"Falkland Islands\", \"desc_en\": \"\", \"name_ru\": \"Фолклендские острова\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+691-###-####\", \"cc\": \"FM\", \"name_en\": \"F.S. Micronesia\", \"desc_en\": \"\", \"name_ru\": \"Ф.Ш. Микронезии\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+298-###-###\", \"cc\": \"FO\", \"name_en\": \"Faroe Islands\", \"desc_en\": \"\", \"name_ru\": \"Фарерские острова\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+262-#####-####\", \"cc\": \"FR\", \"name_en\": \"Mayotte\", \"desc_en\": \"\", \"name_ru\": \"Майотта\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+33(###)###-###\", \"cc\": \"FR\", \"name_en\": \"France\", \"desc_en\": \"\", \"name_ru\": \"Франция\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+508-##-####\", \"cc\": \"FR\", \"name_en\": \"St Pierre & Miquelon\", \"desc_en\": \"\", \"name_ru\": \"Сен-Пьер и Микелон\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+590(###)###-###\", \"cc\": \"FR\", \"name_en\": \"Guadeloupe\", \"desc_en\": \"\", \"name_ru\": \"Гваделупа\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+241-#-##-##-##\", \"cc\": \"GA\", \"name_en\": \"Gabon\", \"desc_en\": \"\", \"name_ru\": \"Габон\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(473)###-####\", \"cc\": \"GD\", \"name_en\": \"Grenada\", \"desc_en\": \"\", \"name_ru\": \"Гренада\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+995(###)###-###\", \"cc\": \"GE\", \"name_en\": \"Rep. of Georgia\", \"desc_en\": \"\", \"name_ru\": \"Грузия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+594-#####-####\", \"cc\": \"GF\", \"name_en\": \"Guiana (French)\", \"desc_en\": \"\", \"name_ru\": \"Фр. Гвиана\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+233(###)###-###\", \"cc\": \"GH\", \"name_en\": \"Ghana\", \"desc_en\": \"\", \"name_ru\": \"Гана\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+350-###-#####\", \"cc\": \"GI\", \"name_en\": \"Gibraltar\", \"desc_en\": \"\", \"name_ru\": \"Гибралтар\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+299-##-##-##\", \"cc\": \"GL\", \"name_en\": \"Greenland\", \"desc_en\": \"\", \"name_ru\": \"Гренландия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+220(###)##-##\", \"cc\": \"GM\", \"name_en\": \"Gambia\", \"desc_en\": \"\", \"name_ru\": \"Гамбия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+224-##-###-###\", \"cc\": \"GN\", \"name_en\": \"Guinea\", \"desc_en\": \"\", \"name_ru\": \"Гвинея\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+240-##-###-####\", \"cc\": \"GQ\", \"name_en\": \"Equatorial Guinea\", \"desc_en\": \"\", \"name_ru\": \"Экваториальная Гвинея\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+30(###)###-####\", \"cc\": \"GR\", \"name_en\": \"Greece\", \"desc_en\": \"\", \"name_ru\": \"Греция\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+502-#-###-####\", \"cc\": \"GT\", \"name_en\": \"Guatemala\", \"desc_en\": \"\", \"name_ru\": \"Гватемала\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(671)###-####\", \"cc\": \"GU\", \"name_en\": \"Guam\", \"desc_en\": \"\", \"name_ru\": \"Гуам\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+245-#-######\", \"cc\": \"GW\", \"name_en\": \"Guinea-Bissau\", \"desc_en\": \"\", \"name_ru\": \"Гвинея-Бисау\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+592-###-####\", \"cc\": \"GY\", \"name_en\": \"Guyana\", \"desc_en\": \"\", \"name_ru\": \"Гайана\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+852-####-####\", \"cc\": \"HK\", \"name_en\": \"Hong Kong\", \"desc_en\": \"\", \"name_ru\": \"Гонконг\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+504-####-####\", \"cc\": \"HN\", \"name_en\": \"Honduras\", \"desc_en\": \"\", \"name_ru\": \"Гондурас\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+385-##-###-###\", \"cc\": \"HR\", \"name_en\": \"Croatia\", \"desc_en\": \"\", \"name_ru\": \"Хорватия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+509-##-##-####\", \"cc\": \"HT\", \"name_en\": \"Haiti\", \"desc_en\": \"\", \"name_ru\": \"Гаити\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+36(###)###-###\", \"cc\": \"HU\", \"name_en\": \"Hungary\", \"desc_en\": \"\", \"name_ru\": \"Венгрия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+62(8##)###-####\", \"cc\": \"ID\", \"name_en\": \"Indonesia \", \"desc_en\": \"mobile\", \"name_ru\": \"Индонезия \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+62-##-###-##\", \"cc\": \"ID\", \"name_en\": \"Indonesia\", \"desc_en\": \"\", \"name_ru\": \"Индонезия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+62-##-###-###\", \"cc\": \"ID\", \"name_en\": \"Indonesia\", \"desc_en\": \"\", \"name_ru\": \"Индонезия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+62-##-###-####\", \"cc\": \"ID\", \"name_en\": \"Indonesia\", \"desc_en\": \"\", \"name_ru\": \"Индонезия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+62(8##)###-###\", \"cc\": \"ID\", \"name_en\": \"Indonesia \", \"desc_en\": \"mobile\", \"name_ru\": \"Индонезия \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+62(8##)###-##-###\", \"cc\": \"ID\", \"name_en\": \"Indonesia \", \"desc_en\": \"mobile\", \"name_ru\": \"Индонезия \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+353(###)###-###\", \"cc\": \"IE\", \"name_en\": \"Ireland\", \"desc_en\": \"\", \"name_ru\": \"Ирландия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+972-5#-###-####\", \"cc\": \"IL\", \"name_en\": \"Israel \", \"desc_en\": \"mobile\", \"name_ru\": \"Израиль \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+972-#-###-####\", \"cc\": \"IL\", \"name_en\": \"Israel\", \"desc_en\": \"\", \"name_ru\": \"Израиль\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+91(####)###-###\", \"cc\": \"IN\", \"name_en\": \"India\", \"desc_en\": \"\", \"name_ru\": \"Индия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+246-###-####\", \"cc\": \"IO\", \"name_en\": \"Diego Garcia\", \"desc_en\": \"\", \"name_ru\": \"Диего-Гарсия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+964(###)###-####\", \"cc\": \"IQ\", \"name_en\": \"Iraq\", \"desc_en\": \"\", \"name_ru\": \"Ирак\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+98(###)###-####\", \"cc\": \"IR\", \"name_en\": \"Iran\", \"desc_en\": \"\", \"name_ru\": \"Иран\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+354-###-####\", \"cc\": \"IS\", \"name_en\": \"Iceland\", \"desc_en\": \"\", \"name_ru\": \"Исландия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+39(###)####-###\", \"cc\": \"IT\", \"name_en\": \"Italy\", \"desc_en\": \"\", \"name_ru\": \"Италия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(876)###-####\", \"cc\": \"JM\", \"name_en\": \"Jamaica\", \"desc_en\": \"\", \"name_ru\": \"Ямайка\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+962-#-####-####\", \"cc\": \"JO\", \"name_en\": \"Jordan\", \"desc_en\": \"\", \"name_ru\": \"Иордания\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+81-##-####-####\", \"cc\": \"JP\", \"name_en\": \"Japan \", \"desc_en\": \"mobile\", \"name_ru\": \"Япония \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+81(###)###-###\", \"cc\": \"JP\", \"name_en\": \"Japan\", \"desc_en\": \"\", \"name_ru\": \"Япония\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+254-###-######\", \"cc\": \"KE\", \"name_en\": \"Kenya\", \"desc_en\": \"\", \"name_ru\": \"Кения\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+996(###)###-###\", \"cc\": \"KG\", \"name_en\": \"Kyrgyzstan\", \"desc_en\": \"\", \"name_ru\": \"Киргизия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+855-##-###-###\", \"cc\": \"KH\", \"name_en\": \"Cambodia\", \"desc_en\": \"\", \"name_ru\": \"Камбоджа\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+686-##-###\", \"cc\": \"KI\", \"name_en\": \"Kiribati\", \"desc_en\": \"\", \"name_ru\": \"Кирибати\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+269-##-#####\", \"cc\": \"KM\", \"name_en\": \"Comoros\", \"desc_en\": \"\", \"name_ru\": \"Коморы\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(869)###-####\", \"cc\": \"KN\", \"name_en\": \"Saint Kitts & Nevis\", \"desc_en\": \"\", \"name_ru\": \"Сент-Китс и Невис\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+850-191-###-####\", \"cc\": \"KP\", \"name_en\": \"DPR Korea (North) \", \"desc_en\": \"mobile\", \"name_ru\": \"Корейская НДР \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+850-##-###-###\", \"cc\": \"KP\", \"name_en\": \"DPR Korea (North)\", \"desc_en\": \"\", \"name_ru\": \"Корейская НДР\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+850-###-####-###\", \"cc\": \"KP\", \"name_en\": \"DPR Korea (North)\", \"desc_en\": \"\", \"name_ru\": \"Корейская НДР\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+850-###-###\", \"cc\": \"KP\", \"name_en\": \"DPR Korea (North)\", \"desc_en\": \"\", \"name_ru\": \"Корейская НДР\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+850-####-####\", \"cc\": \"KP\", \"name_en\": \"DPR Korea (North)\", \"desc_en\": \"\", \"name_ru\": \"Корейская НДР\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+850-####-#############\", \"cc\": \"KP\", \"name_en\": \"DPR Korea (North)\", \"desc_en\": \"\", \"name_ru\": \"Корейская НДР\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+82-##-###-####\", \"cc\": \"KR\", \"name_en\": \"Korea (South)\", \"desc_en\": \"\", \"name_ru\": \"Респ. Корея\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+965-####-####\", \"cc\": \"KW\", \"name_en\": \"Kuwait\", \"desc_en\": \"\", \"name_ru\": \"Кувейт\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(345)###-####\", \"cc\": \"KY\", \"name_en\": \"Cayman Islands\", \"desc_en\": \"\", \"name_ru\": \"Каймановы острова\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+7(6##)###-##-##\", \"cc\": \"KZ\", \"name_en\": \"Kazakhstan\", \"desc_en\": \"\", \"name_ru\": \"Казахстан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+7(7##)###-##-##\", \"cc\": \"KZ\", \"name_en\": \"Kazakhstan\", \"desc_en\": \"\", \"name_ru\": \"Казахстан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+856(20##)###-###\", \"cc\": \"LA\", \"name_en\": \"Laos \", \"desc_en\": \"mobile\", \"name_ru\": \"Лаос \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+856-##-###-###\", \"cc\": \"LA\", \"name_en\": \"Laos\", \"desc_en\": \"\", \"name_ru\": \"Лаос\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+961-##-###-###\", \"cc\": \"LB\", \"name_en\": \"Lebanon \", \"desc_en\": \"mobile\", \"name_ru\": \"Ливан \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+961-#-###-###\", \"cc\": \"LB\", \"name_en\": \"Lebanon\", \"desc_en\": \"\", \"name_ru\": \"Ливан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(758)###-####\", \"cc\": \"LC\", \"name_en\": \"Saint Lucia\", \"desc_en\": \"\", \"name_ru\": \"Сент-Люсия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+423(###)###-####\", \"cc\": \"LI\", \"name_en\": \"Liechtenstein\", \"desc_en\": \"\", \"name_ru\": \"Лихтенштейн\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+94-##-###-####\", \"cc\": \"LK\", \"name_en\": \"Sri Lanka\", \"desc_en\": \"\", \"name_ru\": \"Шри-Ланка\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+231-##-###-###\", \"cc\": \"LR\", \"name_en\": \"Liberia\", \"desc_en\": \"\", \"name_ru\": \"Либерия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+266-#-###-####\", \"cc\": \"LS\", \"name_en\": \"Lesotho\", \"desc_en\": \"\", \"name_ru\": \"Лесото\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+370(###)##-###\", \"cc\": \"LT\", \"name_en\": \"Lithuania\", \"desc_en\": \"\", \"name_ru\": \"Литва\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+352(###)###-###\", \"cc\": \"LU\", \"name_en\": \"Luxembourg\", \"desc_en\": \"\", \"name_ru\": \"Люксембург\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+371-##-###-###\", \"cc\": \"LV\", \"name_en\": \"Latvia\", \"desc_en\": \"\", \"name_ru\": \"Латвия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+218-##-###-###\", \"cc\": \"LY\", \"name_en\": \"Libya\", \"desc_en\": \"\", \"name_ru\": \"Ливия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+218-21-###-####\", \"cc\": \"LY\", \"name_en\": \"Libya\", \"desc_en\": \"Tripoli\", \"name_ru\": \"Ливия\", \"desc_ru\": \"Триполи\" },\n\t{ \"mask\": \"+212-##-####-###\", \"cc\": \"MA\", \"name_en\": \"Morocco\", \"desc_en\": \"\", \"name_ru\": \"Марокко\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+377(###)###-###\", \"cc\": \"MC\", \"name_en\": \"Monaco\", \"desc_en\": \"\", \"name_ru\": \"Монако\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+377-##-###-###\", \"cc\": \"MC\", \"name_en\": \"Monaco\", \"desc_en\": \"\", \"name_ru\": \"Монако\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+373-####-####\", \"cc\": \"MD\", \"name_en\": \"Moldova\", \"desc_en\": \"\", \"name_ru\": \"Молдова\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+382-##-###-###\", \"cc\": \"ME\", \"name_en\": \"Montenegro\", \"desc_en\": \"\", \"name_ru\": \"Черногория\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+261-##-##-#####\", \"cc\": \"MG\", \"name_en\": \"Madagascar\", \"desc_en\": \"\", \"name_ru\": \"Мадагаскар\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+692-###-####\", \"cc\": \"MH\", \"name_en\": \"Marshall Islands\", \"desc_en\": \"\", \"name_ru\": \"Маршалловы Острова\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+389-##-###-###\", \"cc\": \"MK\", \"name_en\": \"Republic of Macedonia\", \"desc_en\": \"\", \"name_ru\": \"Респ. Македония\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+223-##-##-####\", \"cc\": \"ML\", \"name_en\": \"Mali\", \"desc_en\": \"\", \"name_ru\": \"Мали\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+95-##-###-###\", \"cc\": \"MM\", \"name_en\": \"Burma (Myanmar)\", \"desc_en\": \"\", \"name_ru\": \"Бирма (Мьянма)\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+95-#-###-###\", \"cc\": \"MM\", \"name_en\": \"Burma (Myanmar)\", \"desc_en\": \"\", \"name_ru\": \"Бирма (Мьянма)\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+95-###-###\", \"cc\": \"MM\", \"name_en\": \"Burma (Myanmar)\", \"desc_en\": \"\", \"name_ru\": \"Бирма (Мьянма)\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+976-##-##-####\", \"cc\": \"MN\", \"name_en\": \"Mongolia\", \"desc_en\": \"\", \"name_ru\": \"Монголия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+853-####-####\", \"cc\": \"MO\", \"name_en\": \"Macau\", \"desc_en\": \"\", \"name_ru\": \"Макао\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(670)###-####\", \"cc\": \"MP\", \"name_en\": \"Northern Mariana Islands\", \"desc_en\": \"\", \"name_ru\": \"Северные Марианские острова Сайпан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+596(###)##-##-##\", \"cc\": \"MQ\", \"name_en\": \"Martinique\", \"desc_en\": \"\", \"name_ru\": \"Мартиника\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+222-##-##-####\", \"cc\": \"MR\", \"name_en\": \"Mauritania\", \"desc_en\": \"\", \"name_ru\": \"Мавритания\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(664)###-####\", \"cc\": \"MS\", \"name_en\": \"Montserrat\", \"desc_en\": \"\", \"name_ru\": \"Монтсеррат\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+356-####-####\", \"cc\": \"MT\", \"name_en\": \"Malta\", \"desc_en\": \"\", \"name_ru\": \"Мальта\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+230-###-####\", \"cc\": \"MU\", \"name_en\": \"Mauritius\", \"desc_en\": \"\", \"name_ru\": \"Маврикий\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+960-###-####\", \"cc\": \"MV\", \"name_en\": \"Maldives\", \"desc_en\": \"\", \"name_ru\": \"Мальдивские острова\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+265-1-###-###\", \"cc\": \"MW\", \"name_en\": \"Malawi\", \"desc_en\": \"Telecom Ltd\", \"name_ru\": \"Малави\", \"desc_ru\": \"Telecom Ltd\" },\n\t{ \"mask\": \"+265-#-####-####\", \"cc\": \"MW\", \"name_en\": \"Malawi\", \"desc_en\": \"\", \"name_ru\": \"Малави\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+52(###)###-####\", \"cc\": \"MX\", \"name_en\": \"Mexico\", \"desc_en\": \"\", \"name_ru\": \"Мексика\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+52-##-##-####\", \"cc\": \"MX\", \"name_en\": \"Mexico\", \"desc_en\": \"\", \"name_ru\": \"Мексика\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+60-##-###-####\", \"cc\": \"MY\", \"name_en\": \"Malaysia \", \"desc_en\": \"mobile\", \"name_ru\": \"Малайзия \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+60(###)###-###\", \"cc\": \"MY\", \"name_en\": \"Malaysia\", \"desc_en\": \"\", \"name_ru\": \"Малайзия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+60-##-###-###\", \"cc\": \"MY\", \"name_en\": \"Malaysia\", \"desc_en\": \"\", \"name_ru\": \"Малайзия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+60-#-###-###\", \"cc\": \"MY\", \"name_en\": \"Malaysia\", \"desc_en\": \"\", \"name_ru\": \"Малайзия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+258-##-###-###\", \"cc\": \"MZ\", \"name_en\": \"Mozambique\", \"desc_en\": \"\", \"name_ru\": \"Мозамбик\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+264-##-###-####\", \"cc\": \"NA\", \"name_en\": \"Namibia\", \"desc_en\": \"\", \"name_ru\": \"Намибия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+687-##-####\", \"cc\": \"NC\", \"name_en\": \"New Caledonia\", \"desc_en\": \"\", \"name_ru\": \"Новая Каледония\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+227-##-##-####\", \"cc\": \"NE\", \"name_en\": \"Niger\", \"desc_en\": \"\", \"name_ru\": \"Нигер\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+672-3##-###\", \"cc\": \"NF\", \"name_en\": \"Norfolk Island\", \"desc_en\": \"\", \"name_ru\": \"Норфолк (остров)\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+234(###)###-####\", \"cc\": \"NG\", \"name_en\": \"Nigeria\", \"desc_en\": \"\", \"name_ru\": \"Нигерия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+234-##-###-###\", \"cc\": \"NG\", \"name_en\": \"Nigeria\", \"desc_en\": \"\", \"name_ru\": \"Нигерия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+234-##-###-##\", \"cc\": \"NG\", \"name_en\": \"Nigeria\", \"desc_en\": \"\", \"name_ru\": \"Нигерия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+234(###)###-####\", \"cc\": \"NG\", \"name_en\": \"Nigeria \", \"desc_en\": \"mobile\", \"name_ru\": \"Нигерия \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+505-####-####\", \"cc\": \"NI\", \"name_en\": \"Nicaragua\", \"desc_en\": \"\", \"name_ru\": \"Никарагуа\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+31-##-###-####\", \"cc\": \"NL\", \"name_en\": \"Netherlands\", \"desc_en\": \"\", \"name_ru\": \"Нидерланды\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+47(###)##-###\", \"cc\": \"NO\", \"name_en\": \"Norway\", \"desc_en\": \"\", \"name_ru\": \"Норвегия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+977-##-###-###\", \"cc\": \"NP\", \"name_en\": \"Nepal\", \"desc_en\": \"\", \"name_ru\": \"Непал\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+674-###-####\", \"cc\": \"NR\", \"name_en\": \"Nauru\", \"desc_en\": \"\", \"name_ru\": \"Науру\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+683-####\", \"cc\": \"NU\", \"name_en\": \"Niue\", \"desc_en\": \"\", \"name_ru\": \"Ниуэ\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+64(###)###-###\", \"cc\": \"NZ\", \"name_en\": \"New Zealand\", \"desc_en\": \"\", \"name_ru\": \"Новая Зеландия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+64-##-###-###\", \"cc\": \"NZ\", \"name_en\": \"New Zealand\", \"desc_en\": \"\", \"name_ru\": \"Новая Зеландия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+64(###)###-####\", \"cc\": \"NZ\", \"name_en\": \"New Zealand\", \"desc_en\": \"\", \"name_ru\": \"Новая Зеландия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+968-##-###-###\", \"cc\": \"OM\", \"name_en\": \"Oman\", \"desc_en\": \"\", \"name_ru\": \"Оман\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+507-###-####\", \"cc\": \"PA\", \"name_en\": \"Panama\", \"desc_en\": \"\", \"name_ru\": \"Панама\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+51(###)###-###\", \"cc\": \"PE\", \"name_en\": \"Peru\", \"desc_en\": \"\", \"name_ru\": \"Перу\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+689-##-##-##\", \"cc\": \"PF\", \"name_en\": \"French Polynesia\", \"desc_en\": \"\", \"name_ru\": \"Французская Полинезия (Таити)\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+675(###)##-###\", \"cc\": \"PG\", \"name_en\": \"Papua New Guinea\", \"desc_en\": \"\", \"name_ru\": \"Папуа-Новая Гвинея\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+63(###)###-####\", \"cc\": \"PH\", \"name_en\": \"Philippines\", \"desc_en\": \"\", \"name_ru\": \"Филиппины\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+92(###)###-####\", \"cc\": \"PK\", \"name_en\": \"Pakistan\", \"desc_en\": \"\", \"name_ru\": \"Пакистан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+48(###)###-###\", \"cc\": \"PL\", \"name_en\": \"Poland\", \"desc_en\": \"\", \"name_ru\": \"Польша\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+970-##-###-####\", \"cc\": \"PS\", \"name_en\": \"Palestine\", \"desc_en\": \"\", \"name_ru\": \"Палестина\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+351-##-###-####\", \"cc\": \"PT\", \"name_en\": \"Portugal\", \"desc_en\": \"\", \"name_ru\": \"Португалия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+680-###-####\", \"cc\": \"PW\", \"name_en\": \"Palau\", \"desc_en\": \"\", \"name_ru\": \"Палау\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+595(###)###-###\", \"cc\": \"PY\", \"name_en\": \"Paraguay\", \"desc_en\": \"\", \"name_ru\": \"Парагвай\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+974-####-####\", \"cc\": \"QA\", \"name_en\": \"Qatar\", \"desc_en\": \"\", \"name_ru\": \"Катар\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+262-#####-####\", \"cc\": \"RE\", \"name_en\": \"Reunion\", \"desc_en\": \"\", \"name_ru\": \"Реюньон\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+40-##-###-####\", \"cc\": \"RO\", \"name_en\": \"Romania\", \"desc_en\": \"\", \"name_ru\": \"Румыния\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+381-##-###-####\", \"cc\": \"RS\", \"name_en\": \"Serbia\", \"desc_en\": \"\", \"name_ru\": \"Сербия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+7(###)###-##-##\", \"cc\": \"RU\", \"name_en\": \"Russia\", \"desc_en\": \"\", \"name_ru\": \"Россия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+250(###)###-###\", \"cc\": \"RW\", \"name_en\": \"Rwanda\", \"desc_en\": \"\", \"name_ru\": \"Руанда\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+966-5-####-####\", \"cc\": \"SA\", \"name_en\": \"Saudi Arabia \", \"desc_en\": \"mobile\", \"name_ru\": \"Саудовская Аравия \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+966-#-###-####\", \"cc\": \"SA\", \"name_en\": \"Saudi Arabia\", \"desc_en\": \"\", \"name_ru\": \"Саудовская Аравия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+677-###-####\", \"cc\": \"SB\", \"name_en\": \"Solomon Islands \", \"desc_en\": \"mobile\", \"name_ru\": \"Соломоновы Острова \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+677-#####\", \"cc\": \"SB\", \"name_en\": \"Solomon Islands\", \"desc_en\": \"\", \"name_ru\": \"Соломоновы Острова\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+248-#-###-###\", \"cc\": \"SC\", \"name_en\": \"Seychelles\", \"desc_en\": \"\", \"name_ru\": \"Сейшелы\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+249-##-###-####\", \"cc\": \"SD\", \"name_en\": \"Sudan\", \"desc_en\": \"\", \"name_ru\": \"Судан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+46-##-###-####\", \"cc\": \"SE\", \"name_en\": \"Sweden\", \"desc_en\": \"\", \"name_ru\": \"Швеция\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+65-####-####\", \"cc\": \"SG\", \"name_en\": \"Singapore\", \"desc_en\": \"\", \"name_ru\": \"Сингапур\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+290-####\", \"cc\": \"SH\", \"name_en\": \"Saint Helena\", \"desc_en\": \"\", \"name_ru\": \"Остров Святой Елены\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+290-####\", \"cc\": \"SH\", \"name_en\": \"Tristan da Cunha\", \"desc_en\": \"\", \"name_ru\": \"Тристан-да-Кунья\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+386-##-###-###\", \"cc\": \"SI\", \"name_en\": \"Slovenia\", \"desc_en\": \"\", \"name_ru\": \"Словения\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+421(###)###-###\", \"cc\": \"SK\", \"name_en\": \"Slovakia\", \"desc_en\": \"\", \"name_ru\": \"Словакия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+232-##-######\", \"cc\": \"SL\", \"name_en\": \"Sierra Leone\", \"desc_en\": \"\", \"name_ru\": \"Сьерра-Леоне\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+378-####-######\", \"cc\": \"SM\", \"name_en\": \"San Marino\", \"desc_en\": \"\", \"name_ru\": \"Сан-Марино\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+221-##-###-####\", \"cc\": \"SN\", \"name_en\": \"Senegal\", \"desc_en\": \"\", \"name_ru\": \"Сенегал\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+252-##-###-###\", \"cc\": \"SO\", \"name_en\": \"Somalia\", \"desc_en\": \"\", \"name_ru\": \"Сомали\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+252-#-###-###\", \"cc\": \"SO\", \"name_en\": \"Somalia\", \"desc_en\": \"\", \"name_ru\": \"Сомали\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+252-#-###-###\", \"cc\": \"SO\", \"name_en\": \"Somalia \", \"desc_en\": \"mobile\", \"name_ru\": \"Сомали \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+597-###-####\", \"cc\": \"SR\", \"name_en\": \"Suriname \", \"desc_en\": \"mobile\", \"name_ru\": \"Суринам \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+597-###-###\", \"cc\": \"SR\", \"name_en\": \"Suriname\", \"desc_en\": \"\", \"name_ru\": \"Суринам\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+211-##-###-####\", \"cc\": \"SS\", \"name_en\": \"South Sudan\", \"desc_en\": \"\", \"name_ru\": \"Южный Судан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+239-##-#####\", \"cc\": \"ST\", \"name_en\": \"Sao Tome and Principe\", \"desc_en\": \"\", \"name_ru\": \"Сан-Томе и Принсипи\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+503-##-##-####\", \"cc\": \"SV\", \"name_en\": \"El Salvador\", \"desc_en\": \"\", \"name_ru\": \"Сальвадор\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(721)###-####\", \"cc\": \"SX\", \"name_en\": \"Sint Maarten\", \"desc_en\": \"\", \"name_ru\": \"Синт-Маартен\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+963-##-####-###\", \"cc\": \"SY\", \"name_en\": \"Syrian Arab Republic\", \"desc_en\": \"\", \"name_ru\": \"Сирийская арабская республика\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+268-##-##-####\", \"cc\": \"SZ\", \"name_en\": \"Swaziland\", \"desc_en\": \"\", \"name_ru\": \"Свазиленд\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(649)###-####\", \"cc\": \"TC\", \"name_en\": \"Turks & Caicos\", \"desc_en\": \"\", \"name_ru\": \"Тёркс и Кайкос\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+235-##-##-##-##\", \"cc\": \"TD\", \"name_en\": \"Chad\", \"desc_en\": \"\", \"name_ru\": \"Чад\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+228-##-###-###\", \"cc\": \"TG\", \"name_en\": \"Togo\", \"desc_en\": \"\", \"name_ru\": \"Того\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+66-##-###-####\", \"cc\": \"TH\", \"name_en\": \"Thailand \", \"desc_en\": \"mobile\", \"name_ru\": \"Таиланд \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+66-##-###-###\", \"cc\": \"TH\", \"name_en\": \"Thailand\", \"desc_en\": \"\", \"name_ru\": \"Таиланд\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+992-##-###-####\", \"cc\": \"TJ\", \"name_en\": \"Tajikistan\", \"desc_en\": \"\", \"name_ru\": \"Таджикистан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+690-####\", \"cc\": \"TK\", \"name_en\": \"Tokelau\", \"desc_en\": \"\", \"name_ru\": \"Токелау\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+670-###-####\", \"cc\": \"TL\", \"name_en\": \"East Timor\", \"desc_en\": \"\", \"name_ru\": \"Восточный Тимор\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+670-77#-#####\", \"cc\": \"TL\", \"name_en\": \"East Timor\", \"desc_en\": \"Timor Telecom\", \"name_ru\": \"Восточный Тимор\", \"desc_ru\": \"Timor Telecom\" },\n\t{ \"mask\": \"+670-78#-#####\", \"cc\": \"TL\", \"name_en\": \"East Timor\", \"desc_en\": \"Timor Telecom\", \"name_ru\": \"Восточный Тимор\", \"desc_ru\": \"Timor Telecom\" },\n\t{ \"mask\": \"+993-#-###-####\", \"cc\": \"TM\", \"name_en\": \"Turkmenistan\", \"desc_en\": \"\", \"name_ru\": \"Туркменистан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+216-##-###-###\", \"cc\": \"TN\", \"name_en\": \"Tunisia\", \"desc_en\": \"\", \"name_ru\": \"Тунис\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+676-#####\", \"cc\": \"TO\", \"name_en\": \"Tonga\", \"desc_en\": \"\", \"name_ru\": \"Тонга\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+90(###)###-####\", \"cc\": \"TR\", \"name_en\": \"Turkey\", \"desc_en\": \"\", \"name_ru\": \"Турция\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(868)###-####\", \"cc\": \"TT\", \"name_en\": \"Trinidad & Tobago\", \"desc_en\": \"\", \"name_ru\": \"Тринидад и Тобаго\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+688-90####\", \"cc\": \"TV\", \"name_en\": \"Tuvalu \", \"desc_en\": \"mobile\", \"name_ru\": \"Тувалу \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+688-2####\", \"cc\": \"TV\", \"name_en\": \"Tuvalu\", \"desc_en\": \"\", \"name_ru\": \"Тувалу\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+886-#-####-####\", \"cc\": \"TW\", \"name_en\": \"Taiwan\", \"desc_en\": \"\", \"name_ru\": \"Тайвань\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+886-####-####\", \"cc\": \"TW\", \"name_en\": \"Taiwan\", \"desc_en\": \"\", \"name_ru\": \"Тайвань\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+255-##-###-####\", \"cc\": \"TZ\", \"name_en\": \"Tanzania\", \"desc_en\": \"\", \"name_ru\": \"Танзания\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+380(##)###-##-##\", \"cc\": \"UA\", \"name_en\": \"Ukraine\", \"desc_en\": \"\", \"name_ru\": \"Украина\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+256(###)###-###\", \"cc\": \"UG\", \"name_en\": \"Uganda\", \"desc_en\": \"\", \"name_ru\": \"Уганда\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+44-##-####-####\", \"cc\": \"UK\", \"name_en\": \"United Kingdom\", \"desc_en\": \"\", \"name_ru\": \"Великобритания\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+598-#-###-##-##\", \"cc\": \"UY\", \"name_en\": \"Uruguay\", \"desc_en\": \"\", \"name_ru\": \"Уругвай\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+998-##-###-####\", \"cc\": \"UZ\", \"name_en\": \"Uzbekistan\", \"desc_en\": \"\", \"name_ru\": \"Узбекистан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+39-6-698-#####\", \"cc\": \"VA\", \"name_en\": \"Vatican City\", \"desc_en\": \"\", \"name_ru\": \"Ватикан\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(784)###-####\", \"cc\": \"VC\", \"name_en\": \"Saint Vincent & the Grenadines\", \"desc_en\": \"\", \"name_ru\": \"Сент-Винсент и Гренадины\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+58(###)###-####\", \"cc\": \"VE\", \"name_en\": \"Venezuela\", \"desc_en\": \"\", \"name_ru\": \"Венесуэла\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(284)###-####\", \"cc\": \"VG\", \"name_en\": \"British Virgin Islands\", \"desc_en\": \"\", \"name_ru\": \"Британские Виргинские острова\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(340)###-####\", \"cc\": \"VI\", \"name_en\": \"US Virgin Islands\", \"desc_en\": \"\", \"name_ru\": \"Американские Виргинские острова\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+84-##-####-###\", \"cc\": \"VN\", \"name_en\": \"Vietnam\", \"desc_en\": \"\", \"name_ru\": \"Вьетнам\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+84(###)####-###\", \"cc\": \"VN\", \"name_en\": \"Vietnam\", \"desc_en\": \"\", \"name_ru\": \"Вьетнам\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+678-##-#####\", \"cc\": \"VU\", \"name_en\": \"Vanuatu \", \"desc_en\": \"mobile\", \"name_ru\": \"Вануату \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+678-#####\", \"cc\": \"VU\", \"name_en\": \"Vanuatu\", \"desc_en\": \"\", \"name_ru\": \"Вануату\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+681-##-####\", \"cc\": \"WF\", \"name_en\": \"Wallis and Futuna\", \"desc_en\": \"\", \"name_ru\": \"Уоллис и Футуна\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+685-##-####\", \"cc\": \"WS\", \"name_en\": \"Samoa\", \"desc_en\": \"\", \"name_ru\": \"Самоа\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+967-###-###-###\", \"cc\": \"YE\", \"name_en\": \"Yemen \", \"desc_en\": \"mobile\", \"name_ru\": \"Йемен \", \"desc_ru\": \"мобильные\" },\n\t{ \"mask\": \"+967-#-###-###\", \"cc\": \"YE\", \"name_en\": \"Yemen\", \"desc_en\": \"\", \"name_ru\": \"Йемен\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+967-##-###-###\", \"cc\": \"YE\", \"name_en\": \"Yemen\", \"desc_en\": \"\", \"name_ru\": \"Йемен\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+27-##-###-####\", \"cc\": \"ZA\", \"name_en\": \"South Africa\", \"desc_en\": \"\", \"name_ru\": \"Южно-Африканская Респ.\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+260-##-###-####\", \"cc\": \"ZM\", \"name_en\": \"Zambia\", \"desc_en\": \"\", \"name_ru\": \"Замбия\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+263-#-######\", \"cc\": \"ZW\", \"name_en\": \"Zimbabwe\", \"desc_en\": \"\", \"name_ru\": \"Зимбабве\", \"desc_ru\": \"\" },\n\t{ \"mask\": \"+1(###)###-####\", \"cc\": [\"US\", \"CA\"], \"name_en\": \"USA and Canada\", \"desc_en\": \"\", \"name_ru\": \"США и Канада\", \"desc_ru\": \"\" }\n]\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/input-mask/phone-codes/readme.txt",
    "content": "more phone masks can be found at https://github.com/andr-04/inputmask-multi "
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/ionslider/ion.rangeSlider.css",
    "content": "/* Ion.RangeSlider\n// css version 1.8.5\n// by Denis Ineshin | ionden.com\n// ===================================================================================================================*/\n\n/* =====================================================================================================================\n// RangeSlider */\n\n.irs {\n    position: relative; display: block;\n}\n    .irs-line {\n        position: relative; display: block;\n        overflow: hidden;\n    }\n        .irs-line-left, .irs-line-mid, .irs-line-right {\n            position: absolute; display: block;\n            top: 0;\n        }\n        .irs-line-left {\n            left: 0; width: 10%;\n        }\n        .irs-line-mid {\n            left: 10%; width: 80%;\n        }\n        .irs-line-right {\n            right: 0; width: 10%;\n        }\n\n    .irs-diapason {\n        position: absolute; display: block;\n        left: 0; width: 100%;\n    }\n    .irs-slider {\n        position: absolute; display: block;\n        cursor: default;\n        z-index: 1;\n    }\n        .irs-slider.single {\n            left: 10px;\n        }\n            .irs-slider.single:before {\n                position: absolute; display: block; content: \"\";\n                top: -30%; left: -30%;\n                width: 160%; height: 160%;\n                background: rgba(0,0,0,0.0);\n            }\n        .irs-slider.from {\n            left: 100px;\n        }\n            .irs-slider.from:before {\n                position: absolute; display: block; content: \"\";\n                top: -30%; left: -30%;\n                width: 130%; height: 160%;\n                background: rgba(0,0,0,0.0);\n            }\n        .irs-slider.to {\n            left: 300px;\n        }\n            .irs-slider.to:before {\n                position: absolute; display: block; content: \"\";\n                top: -30%; left: 0;\n                width: 130%; height: 160%;\n                background: rgba(0,0,0,0.0);\n            }\n        .irs-slider.last {\n            z-index: 2;\n        }\n\n    .irs-min {\n        position: absolute; display: block;\n        left: 0;\n        cursor: default;\n    }\n    .irs-max {\n        position: absolute; display: block;\n        right: 0;\n        cursor: default;\n    }\n\n    .irs-from, .irs-to, .irs-single {\n        position: absolute; display: block;\n        top: 0; left: 0;\n        cursor: default;\n        white-space: nowrap;\n    }\n\n\n.irs-grid {\n    position: absolute; display: none;\n    bottom: 0; left: 0;\n    width: 100%; height: 20px;\n}\n.irs-with-grid .irs-grid {\n    display: block;\n}\n    .irs-grid-pol {\n        position: absolute;\n        top: 0; left: 0;\n        width: 1px; height: 8px;\n        background: #000;\n    }\n    .irs-grid-pol.small {\n        height: 4px;\n    }\n    .irs-grid-text {\n        position: absolute;\n        bottom: 0; left: 0;\n        width: 100px;\n        white-space: nowrap;\n        text-align: center;\n        font-size: 9px; line-height: 9px;\n        color: #000;\n    }\n\n.irs-disable-mask {\n    position: absolute; display: block;\n    top: 0; left: 0;\n    width: 100%; height: 100%;\n    cursor: default;\n    background: rgba(0,0,0,0.0);\n    z-index: 2;\n}\n.irs-disabled {\n    opacity: 0.4;\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/ionslider/ion.rangeSlider.skinFlat.css",
    "content": "/* Ion.RangeSlider, Flat UI Skin\n// css version 1.8.5\n// by Denis Ineshin | ionden.com\n// ===================================================================================================================*/\n\n/* =====================================================================================================================\n// Skin details */\n\n.irs-line-mid,\n.irs-line-left,\n.irs-line-right,\n.irs-diapason,\n.irs-slider {\n    background: url(img/sprite-skin-flat.png) repeat-x;\n}\n\n.irs {\n    height: 40px;\n}\n.irs-with-grid {\n    height: 60px;\n}\n.irs-line {\n    height: 12px; top: 25px;\n}\n    .irs-line-left {\n        height: 12px;\n        background-position: 0 -30px;\n    }\n    .irs-line-mid {\n        height: 12px;\n        background-position: 0 0;\n    }\n    .irs-line-right {\n        height: 12px;\n        background-position: 100% -30px;\n    }\n\n.irs-diapason {\n    height: 12px; top: 25px;\n    background-position: 0 -60px;\n}\n\n.irs-slider {\n    width: 16px; height: 18px;\n    top: 22px;\n    background-position: 0 -90px;\n}\n#irs-active-slider, .irs-slider:hover {\n    background-position: 0 -120px;\n}\n\n.irs-min, .irs-max {\n    color: #999;\n    font-size: 10px; line-height: 1.333;\n    text-shadow: none;\n    top: 0; padding: 1px 3px;\n    background: #e1e4e9;\n    border-radius: 4px;\n}\n\n.irs-from, .irs-to, .irs-single {\n    color: #fff;\n    font-size: 10px; line-height: 1.333;\n    text-shadow: none;\n    padding: 1px 5px;\n    background: #ed5565;\n    border-radius: 4px;\n}\n.irs-from:after, .irs-to:after, .irs-single:after {\n    position: absolute; display: block; content: \"\";\n    bottom: -6px; left: 50%;\n    width: 0; height: 0;\n    margin-left: -3px;\n    overflow: hidden;\n    border: 3px solid transparent;\n    border-top-color: #ed5565;\n}\n\n\n.irs-grid-pol {\n    background: #e1e4e9;\n}\n.irs-grid-text {\n    color: #999;\n}\n\n.irs-disabled {\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/ionslider/ion.rangeSlider.skinNice.css",
    "content": "/* Ion.RangeSlider, Nice Skin\n// css version 1.8.5\n// by Denis Ineshin | ionden.com\n// ===================================================================================================================*/\n\n/* =====================================================================================================================\n// Skin details */\n\n.irs-line-mid,\n.irs-line-left,\n.irs-line-right,\n.irs-diapason,\n.irs-slider {\n    background: url(img/sprite-skin-nice.png) repeat-x;\n}\n\n.irs {\n    height: 40px;\n}\n.irs-with-grid {\n    height: 60px;\n}\n.irs-line {\n    height: 8px; top: 25px;\n}\n    .irs-line-left {\n        height: 8px;\n        background-position: 0 -30px;\n    }\n    .irs-line-mid {\n        height: 8px;\n        background-position: 0 0;\n    }\n    .irs-line-right {\n        height: 8px;\n        background-position: 100% -30px;\n    }\n\n.irs-diapason {\n    height: 8px; top: 25px;\n    background-position: 0 -60px;\n}\n\n.irs-slider {\n    width: 22px; height: 22px;\n    top: 17px;\n    background-position: 0 -90px;\n}\n#irs-active-slider, .irs-slider:hover {\n    background-position: 0 -120px;\n}\n\n.irs-min, .irs-max {\n    color: #999;\n    font-size: 10px; line-height: 1.333;\n    text-shadow: none;\n    top: 0; padding: 1px 3px;\n    background: rgba(0,0,0,0.1);\n    border-radius: 3px;\n}\n.lt-ie9 .irs-min, .lt-ie9 .irs-max {\n    background: #ccc;\n}\n\n.irs-from, .irs-to, .irs-single {\n    color: #fff;\n    font-size: 10px; line-height: 1.333;\n    text-shadow: none;\n    padding: 1px 5px;\n    background: rgba(0,0,0,0.3);\n    border-radius: 3px;\n}\n.lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single {\n    background: #999;\n}\n\n.irs-grid-pol {\n    background: #99a4ac;\n}\n.irs-grid-text {\n    color: #99a4ac;\n}\n\n.irs-disabled {\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/jquery-pjax/jquery.pjax.js",
    "content": "/*! Sea.js 2.2.3 | seajs.org/LICENSE.md */\n!function(a,b){function c(a){return function(b){return{}.toString.call(b)==\"[object \"+a+\"]\"}}function d(){return B++}function e(a){return a.match(E)[0]}function f(a){for(a=a.replace(F,\"/\");a.match(G);)a=a.replace(G,\"/\");return a=a.replace(H,\"$1/\")}function g(a){var b=a.length-1,c=a.charAt(b);return\"#\"===c?a.substring(0,b):\".js\"===a.substring(b-2)||a.indexOf(\"?\")>0||\".css\"===a.substring(b-3)||\"/\"===c?a:a+\".js\"}function h(a){var b=v.alias;return b&&x(b[a])?b[a]:a}function i(a){var b=v.paths,c;return b&&(c=a.match(I))&&x(b[c[1]])&&(a=b[c[1]]+c[2]),a}function j(a){var b=v.vars;return b&&a.indexOf(\"{\")>-1&&(a=a.replace(J,function(a,c){return x(b[c])?b[c]:a})),a}function k(a){var b=v.map,c=a;if(b)for(var d=0,e=b.length;e>d;d++){var f=b[d];if(c=z(f)?f(a)||a:a.replace(f[0],f[1]),c!==a)break}return c}function l(a,b){var c,d=a.charAt(0);if(K.test(a))c=a;else if(\".\"===d)c=f((b?e(b):v.cwd)+a);else if(\"/\"===d){var g=v.cwd.match(L);c=g?g[0]+a.substring(1):a}else c=v.base+a;return 0===c.indexOf(\"//\")&&(c=location.protocol+c),c}function m(a,b){if(!a)return\"\";a=h(a),a=i(a),a=j(a),a=g(a);var c=l(a,b);return c=k(c)}function n(a){return a.hasAttribute?a.src:a.getAttribute(\"src\",4)}function o(a,b,c,d){var e=T.test(a),f=M.createElement(e?\"link\":\"script\");c&&(f.charset=c),A(d)||f.setAttribute(\"crossorigin\",d),p(f,b,e,a),e?(f.rel=\"stylesheet\",f.href=a):(f.async=!0,f.src=a),U=f,S?R.insertBefore(f,S):R.appendChild(f),U=null}function p(a,c,d,e){function f(){a.onload=a.onerror=a.onreadystatechange=null,d||v.debug||R.removeChild(a),a=null,c()}var g=\"onload\"in a;return!d||!W&&g?(g?(a.onload=f,a.onerror=function(){D(\"error\",{uri:e,node:a}),f()}):a.onreadystatechange=function(){/loaded|complete/.test(a.readyState)&&f()},b):(setTimeout(function(){q(a,c)},1),b)}function q(a,b){var c=a.sheet,d;if(W)c&&(d=!0);else if(c)try{c.cssRules&&(d=!0)}catch(e){\"NS_ERROR_DOM_SECURITY_ERR\"===e.name&&(d=!0)}setTimeout(function(){d?b():q(a,b)},20)}function r(){if(U)return U;if(V&&\"interactive\"===V.readyState)return V;for(var a=R.getElementsByTagName(\"script\"),b=a.length-1;b>=0;b--){var c=a[b];if(\"interactive\"===c.readyState)return V=c}}function s(a){var b=[];return a.replace(Y,\"\").replace(X,function(a,c,d){d&&b.push(d)}),b}function t(a,b){this.uri=a,this.dependencies=b||[],this.exports=null,this.status=0,this._waitings={},this._remain=0}if(!a.seajs){var u=a.seajs={version:\"2.2.3\"},v=u.data={},w=c(\"Object\"),x=c(\"String\"),y=Array.isArray||c(\"Array\"),z=c(\"Function\"),A=c(\"Undefined\"),B=0,C=v.events={};u.on=function(a,b){var c=C[a]||(C[a]=[]);return c.push(b),u},u.off=function(a,b){if(!a&&!b)return C=v.events={},u;var c=C[a];if(c)if(b)for(var d=c.length-1;d>=0;d--)c[d]===b&&c.splice(d,1);else delete C[a];return u};var D=u.emit=function(a,b){var c=C[a],d;if(c)for(c=c.slice();d=c.shift();)d(b);return u},E=/[^?#]*\\//,F=/\\/\\.\\//g,G=/\\/[^/]+\\/\\.\\.\\//,H=/([^:/])\\/\\//g,I=/^([^/:]+)(\\/.+)$/,J=/{([^{]+)}/g,K=/^\\/\\/.|:\\//,L=/^.*?\\/\\/.*?\\//,M=document,N=e(M.URL),O=M.scripts,P=M.getElementById(\"seajsnode\")||O[O.length-1],Q=e(n(P)||N);u.resolve=m;var R=M.head||M.getElementsByTagName(\"head\")[0]||M.documentElement,S=R.getElementsByTagName(\"base\")[0],T=/\\.css(?:\\?|$)/i,U,V,W=+navigator.userAgent.replace(/.*(?:AppleWebKit|AndroidWebKit)\\/(\\d+).*/,\"$1\")<536;u.request=o;var X=/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|\\/\\*[\\S\\s]*?\\*\\/|\\/(?:\\\\\\/|[^\\/\\r\\n])+\\/(?=[^\\/])|\\/\\/.*|\\.\\s*require|(?:^|[^$])\\brequire\\s*\\(\\s*([\"'])(.+?)\\1\\s*\\)/g,Y=/\\\\\\\\/g,Z=u.cache={},$,_={},ab={},bb={},cb=t.STATUS={FETCHING:1,SAVED:2,LOADING:3,LOADED:4,EXECUTING:5,EXECUTED:6};t.prototype.resolve=function(){for(var a=this,b=a.dependencies,c=[],d=0,e=b.length;e>d;d++)c[d]=t.resolve(b[d],a.uri);return c},t.prototype.load=function(){var a=this;if(!(a.status>=cb.LOADING)){a.status=cb.LOADING;var c=a.resolve();D(\"load\",c);for(var d=a._remain=c.length,e,f=0;d>f;f++)e=t.get(c[f]),e.status<cb.LOADED?e._waitings[a.uri]=(e._waitings[a.uri]||0)+1:a._remain--;if(0===a._remain)return a.onload(),b;var g={};for(f=0;d>f;f++)e=Z[c[f]],e.status<cb.FETCHING?e.fetch(g):e.status===cb.SAVED&&e.load();for(var h in g)g.hasOwnProperty(h)&&g[h]()}},t.prototype.onload=function(){var a=this;a.status=cb.LOADED,a.callback&&a.callback();var b=a._waitings,c,d;for(c in b)b.hasOwnProperty(c)&&(d=Z[c],d._remain-=b[c],0===d._remain&&d.onload());delete a._waitings,delete a._remain},t.prototype.fetch=function(a){function c(){u.request(g.requestUri,g.onRequest,g.charset,g.crossorigin)}function d(){delete _[h],ab[h]=!0,$&&(t.save(f,$),$=null);var a,b=bb[h];for(delete bb[h];a=b.shift();)a.load()}var e=this,f=e.uri;e.status=cb.FETCHING;var g={uri:f};D(\"fetch\",g);var h=g.requestUri||f;return!h||ab[h]?(e.load(),b):_[h]?(bb[h].push(e),b):(_[h]=!0,bb[h]=[e],D(\"request\",g={uri:f,requestUri:h,onRequest:d,charset:z(v.charset)?v.charset(h):v.charset,crossorigin:z(v.crossorigin)?v.crossorigin(h):v.crossorigin}),g.requested||(a?a[g.requestUri]=c:c()),b)},t.prototype.exec=function(){function a(b){return t.get(a.resolve(b)).exec()}var c=this;if(c.status>=cb.EXECUTING)return c.exports;c.status=cb.EXECUTING;var e=c.uri;a.resolve=function(a){return t.resolve(a,e)},a.async=function(b,c){return t.use(b,c,e+\"_async_\"+d()),a};var f=c.factory,g=z(f)?f(a,c.exports={},c):f;return g===b&&(g=c.exports),delete c.factory,c.exports=g,c.status=cb.EXECUTED,D(\"exec\",c),g},t.resolve=function(a,b){var c={id:a,refUri:b};return D(\"resolve\",c),c.uri||u.resolve(c.id,b)},t.define=function(a,c,d){var e=arguments.length;1===e?(d=a,a=b):2===e&&(d=c,y(a)?(c=a,a=b):c=b),!y(c)&&z(d)&&(c=s(\"\"+d));var f={id:a,uri:t.resolve(a),deps:c,factory:d};if(!f.uri&&M.attachEvent){var g=r();g&&(f.uri=g.src)}D(\"define\",f),f.uri?t.save(f.uri,f):$=f},t.save=function(a,b){var c=t.get(a);c.status<cb.SAVED&&(c.id=b.id||a,c.dependencies=b.deps||[],c.factory=b.factory,c.status=cb.SAVED)},t.get=function(a,b){return Z[a]||(Z[a]=new t(a,b))},t.use=function(b,c,d){var e=t.get(d,y(b)?b:[b]);e.callback=function(){for(var b=[],d=e.resolve(),f=0,g=d.length;g>f;f++)b[f]=Z[d[f]].exec();c&&c.apply(a,b),delete e.callback},e.load()},t.preload=function(a){var b=v.preload,c=b.length;c?t.use(b,function(){b.splice(0,c),t.preload(a)},v.cwd+\"_preload_\"+d()):a()},u.use=function(a,b){return t.preload(function(){t.use(a,b,v.cwd+\"_use_\"+d())}),u},t.define.cmd={},a.define=t.define,u.Module=t,v.fetchedList=ab,v.cid=d,u.require=function(a){var b=t.get(t.resolve(a));return b.status<cb.EXECUTING&&(b.onload(),b.exec()),b.exports};var db=/^(.+?\\/)(\\?\\?)?(seajs\\/)+/;v.base=(Q.match(db)||[\"\",Q])[1],v.dir=Q,v.cwd=N,v.charset=\"utf-8\",v.preload=function(){var a=[],b=location.search.replace(/(seajs-\\w+)(&|$)/g,\"$1=1$2\");return b+=\" \"+M.cookie,b.replace(/(seajs-\\w+)=1/g,function(b,c){a.push(c)}),a}(),u.config=function(a){for(var b in a){var c=a[b],d=v[b];if(d&&w(d))for(var e in c)d[e]=c[e];else y(d)?c=d.concat(c):\"base\"===b&&(\"/\"!==c.slice(-1)&&(c+=\"/\"),c=l(c)),v[b]=c}return D(\"config\",a),u}}}(this);\nwindow.require = window.define = window.exports = window.module = undefined;\n\n/*!\n * v2.0.1\n *\n * Copyright 2012, Chris Wanstrath\n * Released under the MIT License\n * https://github.com/defunkt/jquery-pjax\n */\n\n(function($){\n\n// When called on a container with a selector, fetches the href with\n// ajax into the container or with the data-pjax attribute on the link\n// itself.\n//\n// Tries to make sure the back button and ctrl+click work the way\n// you'd expect.\n//\n// Exported as $.fn.pjax\n//\n// Accepts a jQuery ajax options object that may include these\n// pjax specific options:\n//\n//\n// container - String selector for the element where to place the response body.\n//      push - Whether to pushState the URL. Defaults to true (of course).\n//   replace - Want to use replaceState instead? That's cool.\n//\n// For convenience the second parameter can be either the container or\n// the options object.\n//\n// Returns the jQuery object\nfunction fnPjax(selector, container, options) {\n  options = optionsFor(container, options);\n  return this.on('click.pjax', selector, function(event) {\n    var opts = options;\n    if (!opts.container) {\n      opts = $.extend({}, options);\n      opts.container = $(this).attr('data-pjax')\n    }\n    handleClick(event, opts)\n  })\n}\n\n// Public: pjax on click handler\n//\n// Exported as $.pjax.click.\n//\n// event   - \"click\" jQuery.Event\n// options - pjax options\n//\n// Examples\n//\n//   $(document).on('click', 'a', $.pjax.click)\n//   // is the same as\n//   $(document).pjax('a')\n//\n// Returns nothing.\nfunction handleClick(event, container, options) {\n  options = optionsFor(container, options);\n\n  var link = event.currentTarget;\n  var $link = $(link);\n\n  if (link.tagName.toUpperCase() !== 'A')\n    throw \"$.fn.pjax or $.pjax.click requires an anchor element\";\n\n  // Middle click, cmd click, and ctrl click should open\n  // links in a new tab as normal.\n  if ( event.which > 1 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey )\n    return;\n\n  // Ignore cross origin links\n  if ( location.protocol !== link.protocol || location.hostname !== link.hostname )\n    return;\n\n  // Ignore case when a hash is being tacked on the current URL\n  if ( link.href.indexOf('#') > -1 && stripHash(link) == stripHash(location) )\n    return;\n\n  // Ignore event with default prevented\n  if (event.isDefaultPrevented())\n    return;\n\n  var defaults = {\n    url: link.href,\n    container: $link.attr('data-pjax'),\n    target: link\n  };\n\n  var opts = $.extend({}, defaults, options);\n  var clickEvent = $.Event('pjax:click');\n  $link.trigger(clickEvent, [opts]);\n\n  if (!clickEvent.isDefaultPrevented()) {\n    pjax(opts);\n    event.preventDefault();\n    $link.trigger('pjax:clicked', [opts])\n  }\n}\n\n// Public: pjax on form submit handler\n//\n// Exported as $.pjax.submit\n//\n// event   - \"click\" jQuery.Event\n// options - pjax options\n//\n// Examples\n//\n//  $(document).on('submit', 'form', function(event) {\n//    $.pjax.submit(event, '[data-pjax-container]')\n//  })\n//\n// Returns nothing.\nfunction handleSubmit(event, container, options) {\n  options = optionsFor(container, options);\n\n  var form = event.currentTarget;\n  var $form = $(form);\n\n  if (form.tagName.toUpperCase() !== 'FORM')\n    throw \"$.pjax.submit requires a form element\";\n\n  var defaults = {\n    type: ($form.attr('method') || 'GET').toUpperCase(),\n    url: $form.attr('action'),\n    container: $form.attr('data-pjax'),\n    target: form\n  };\n\n  if (defaults.type !== 'GET' && window.FormData !== undefined) {\n    defaults.data = new FormData(form);\n    defaults.processData = false;\n    defaults.contentType = false;\n  } else {\n    // Can't handle file uploads, exit\n    if ($form.find(':file').length) {\n      return\n    }\n\n    // Fallback to manually serializing the fields\n    defaults.data = $form.serializeArray()\n  }\n\n  pjax($.extend({}, defaults, options));\n\n  event.preventDefault()\n}\n\n// Loads a URL with ajax, puts the response body inside a container,\n// then pushState()'s the loaded URL.\n//\n// Works just like $.ajax in that it accepts a jQuery ajax\n// settings object (with keys like url, type, data, etc).\n//\n// Accepts these extra keys:\n//\n// container - String selector for where to stick the response body.\n//      push - Whether to pushState the URL. Defaults to true (of course).\n//   replace - Want to use replaceState instead? That's cool.\n//\n// Use it just like $.ajax:\n//\n//   var xhr = $.pjax({ url: this.href, container: '#main' })\n//   console.log( xhr.readyState )\n//\n// Returns whatever $.ajax returns.\nfunction pjax(options) {\n  options = $.extend(true, {}, $.ajaxSettings, pjax.defaults, options);\n\n  if ($.isFunction(options.url)) {\n    options.url = options.url()\n  }\n\n  var hash = parseURL(options.url).hash;\n\n  var containerType = $.type(options.container);\n  if (containerType !== 'string') {\n    throw \"expected string value for 'container' option; got \" + containerType\n  }\n  var context = options.context = $(options.container);\n  if (!context.length) {\n    throw \"the container selector '\" + options.container + \"' did not match anything\"\n  }\n\n  // We want the browser to maintain two separate internal caches: one\n  // for pjax'd partial page loads and one for normal page loads.\n  // Without adding this secret parameter, some browsers will often\n  // confuse the two.\n  if (!options.data) options.data = {};\n  if ($.isArray(options.data)) {\n    options.data.push({name: '_pjax', value: options.container})\n  } else {\n    options.data._pjax = options.container\n  }\n\n  function fire(type, args, props) {\n    if (!props) props = {};\n    props.relatedTarget = options.target;\n    var event = $.Event(type, props);\n    context.trigger(event, args);\n    return !event.isDefaultPrevented()\n  }\n\n  var timeoutTimer;\n\n  options.beforeSend = function(xhr, settings) {\n    // No timeout for non-GET requests\n    // Its not safe to request the resource again with a fallback method.\n    if (settings.type !== 'GET') {\n      settings.timeout = 0\n    }\n\n    xhr.setRequestHeader('X-PJAX', 'true');\n    xhr.setRequestHeader('X-PJAX-Container', options.container);\n\n    if (!fire('pjax:beforeSend', [xhr, settings]))\n      return false;\n\n    if (settings.timeout > 0) {\n      timeoutTimer = setTimeout(function() {\n        if (fire('pjax:timeout', [xhr, options]))\n          xhr.abort('timeout')\n      }, settings.timeout);\n\n      // Clear timeout setting so jquerys internal timeout isn't invoked\n      settings.timeout = 0\n    }\n\n    var url = parseURL(settings.url);\n    if (hash) url.hash = hash;\n    options.requestUrl = stripInternalParams(url)\n  };\n\n  options.complete = function(xhr, textStatus) {\n    if (timeoutTimer)\n      clearTimeout(timeoutTimer);\n\n    fire('pjax:complete', [xhr, textStatus, options]);\n\n    fire('pjax:end', [xhr, options])\n  };\n\n  options.error = function(xhr, textStatus, errorThrown) {\n    var container = extractContainer(\"\", xhr, options);\n\n    var allowed = fire('pjax:error', [xhr, textStatus, errorThrown, options]);\n    if (options.type == 'GET' && textStatus !== 'abort' && allowed) {\n      locationReplace(container.url)\n    }\n  };\n\n  options.success = function(data, status, xhr) {\n    var previousState = pjax.state;\n\n    // If $.pjax.defaults.version is a function, invoke it first.\n    // Otherwise it can be a static string.\n    var currentVersion = typeof $.pjax.defaults.version === 'function' ?\n      $.pjax.defaults.version() :\n      $.pjax.defaults.version;\n\n    var latestVersion = xhr.getResponseHeader('X-PJAX-Version');\n\n    var container = extractContainer(data, xhr, options);\n\n    var url = parseURL(container.url);\n    if (hash) {\n      url.hash = hash;\n      container.url = url.href\n    }\n\n    // If there is a layout version mismatch, hard load the new url\n    if (currentVersion && latestVersion && currentVersion !== latestVersion) {\n      locationReplace(container.url);\n      return\n    }\n\n    // If the new response is missing a body, hard load the page\n    if (!container.contents) {\n      locationReplace(container.url);\n      return\n    }\n\n    pjax.state = {\n      id: options.id || uniqueId(),\n      url: container.url,\n      title: container.title,\n      container: options.container,\n      fragment: options.fragment,\n      timeout: options.timeout\n    };\n\n    if (options.push || options.replace) {\n      window.history.replaceState(pjax.state, container.title, container.url)\n    }\n\n    // Only blur the focus if the focused element is within the container.\n    var blurFocus = $.contains(context, document.activeElement);\n\n    // Clear out any focused controls before inserting new page contents.\n    if (blurFocus) {\n      try {\n        document.activeElement.blur()\n      } catch (e) { /* ignore */ }\n    }\n\n    if (container.title) document.title = container.title;\n\n    fire('pjax:beforeReplace', [container.contents, options], {\n      state: pjax.state,\n      previousState: previousState\n    });\n    context.html(container.contents);\n\n    // FF bug: Won't autofocus fields that are inserted via JS.\n    // This behavior is incorrect. So if theres no current focus, autofocus\n    // the last field.\n    //\n    // http://www.w3.org/html/wg/drafts/html/master/forms.html\n    var autofocusEl = context.find('input[autofocus], textarea[autofocus]').last()[0];\n    if (autofocusEl && document.activeElement !== autofocusEl) {\n      autofocusEl.focus()\n    }\n\n    executeStyleTags(container.styles);\n    executeScriptTags(container.scripts);\n\n    var scrollTo = options.scrollTo;\n\n    // Ensure browser scrolls to the element referenced by the URL anchor\n    if (hash) {\n      var name = decodeURIComponent(hash.slice(1));\n      var target = document.getElementById(name) || document.getElementsByName(name)[0];\n      if (target) scrollTo = $(target).offset().top\n    }\n\n    if (typeof scrollTo == 'number') $(window).scrollTop(scrollTo);\n\n    fire('pjax:success', [data, status, xhr, options])\n  };\n\n  function executeScriptTags(scripts) {\n    if (!scripts) return;\n\n    var urls = [];\n    scripts.each(function() {\n      urls.unshift($(this).attr('src'));\n    });\n    loadAssets(urls, true);\n  }\n  function executeStyleTags(styles) {\n    if (!styles) return;\n\n    var hrefs = [];\n    styles.each(function() {\n      hrefs.unshift($(this).attr('href'));\n    });\n    loadAssets(hrefs);\n  }\n  // 按顺序加载静态资源\n  function loadAssets(urls, trigger) {\n    if (urls.length < 1) {\n      if (trigger) {\n        fire('pjax:loaded');\n      }\n      return;\n    }\n    seajs.use([urls.pop()], function () {\n      loadAssets(urls, trigger);\n    });\n  }\n\n  // Initialize pjax.state for the initial page load. Assume we're\n  // using the container and options of the link we're loading for the\n  // back button to the initial page. This ensures good back button\n  // behavior.\n  if (!pjax.state) {\n    pjax.state = {\n      id: uniqueId(),\n      url: window.location.href,\n      title: document.title,\n      container: options.container,\n      fragment: options.fragment,\n      timeout: options.timeout\n    };\n    window.history.replaceState(pjax.state, document.title)\n  }\n\n  // Cancel the current request if we're already pjaxing\n  abortXHR(pjax.xhr);\n\n  pjax.options = options;\n  var xhr = pjax.xhr = $.ajax(options);\n\n  if (xhr.readyState > 0) {\n    if (options.push && !options.replace) {\n      // Cache current container element before replacing it\n      cachePush(pjax.state.id, [options.container, cloneContents(context)]);\n\n      window.history.pushState(null, \"\", options.requestUrl)\n    }\n\n    fire('pjax:start', [xhr, options]);\n    fire('pjax:send', [xhr, options])\n  }\n\n  return pjax.xhr\n}\n\n// Public: Reload current page with pjax.\n//\n// Returns whatever $.pjax returns.\nfunction pjaxReload(container, options) {\n  var defaults = {\n    url: window.location.href,\n    push: false,\n    replace: true,\n    scrollTo: false\n  };\n\n  return pjax($.extend(defaults, optionsFor(container, options)))\n}\n\n// Internal: Hard replace current state with url.\n//\n// Work for around WebKit\n//   https://bugs.webkit.org/show_bug.cgi?id=93506\n//\n// Returns nothing.\nfunction locationReplace(url) {\n  window.history.replaceState(null, \"\", pjax.state.url);\n  window.location.replace(url)\n}\n\n\nvar initialPop = true;\nvar initialURL = window.location.href;\nvar initialState = window.history.state;\n\n// Initialize $.pjax.state if possible\n// Happens when reloading a page and coming forward from a different\n// session history.\nif (initialState && initialState.container) {\n  pjax.state = initialState\n}\n\n// Non-webkit browsers don't fire an initial popstate event\nif ('state' in window.history) {\n  initialPop = false\n}\n\n// popstate handler takes care of the back and forward buttons\n//\n// You probably shouldn't use pjax on pages with other pushState\n// stuff yet.\nfunction onPjaxPopstate(event) {\n\n  // Hitting back or forward should override any pending PJAX request.\n  if (!initialPop) {\n    abortXHR(pjax.xhr)\n  }\n\n  var previousState = pjax.state;\n  var state = event.state;\n  var direction;\n\n  if (state && state.container) {\n    // When coming forward from a separate history session, will get an\n    // initial pop with a state we are already at. Skip reloading the current\n    // page.\n    if (initialPop && initialURL == state.url) return;\n\n    if (previousState) {\n      // If popping back to the same state, just skip.\n      // Could be clicking back from hashchange rather than a pushState.\n      if (previousState.id === state.id) return;\n\n      // Since state IDs always increase, we can deduce the navigation direction\n      direction = previousState.id < state.id ? 'forward' : 'back'\n    }\n\n    var cache = cacheMapping[state.id] || [];\n    var containerSelector = cache[0] || state.container;\n    var container = $(containerSelector), contents = cache[1];\n\n    if (container.length) {\n      if (previousState) {\n        // Cache current container before replacement and inform the\n        // cache which direction the history shifted.\n        cachePop(direction, previousState.id, [containerSelector, cloneContents(container)])\n      }\n\n      var popstateEvent = $.Event('pjax:popstate', {\n        state: state,\n        direction: direction\n      });\n      container.trigger(popstateEvent);\n\n      var options = {\n        id: state.id,\n        url: state.url,\n        container: containerSelector,\n        push: false,\n        fragment: state.fragment,\n        timeout: state.timeout,\n        scrollTo: false\n      };\n\n      if (contents) {\n        container.trigger('pjax:start', [null, options]);\n\n        pjax.state = state;\n        if (state.title) document.title = state.title;\n        var beforeReplaceEvent = $.Event('pjax:beforeReplace', {\n          state: state,\n          previousState: previousState\n        });\n        container.trigger(beforeReplaceEvent, [contents, options]);\n        container.html(contents);\n\n        container.trigger('pjax:end', [null, options])\n      } else {\n        pjax(options)\n      }\n\n      // Force reflow/relayout before the browser tries to restore the\n      // scroll position.\n      container[0].offsetHeight // eslint-disable-line no-unused-expressions\n    } else {\n      locationReplace(location.href)\n    }\n  }\n  initialPop = false\n}\n\n// Fallback version of main pjax function for browsers that don't\n// support pushState.\n//\n// Returns nothing since it retriggers a hard form submission.\nfunction fallbackPjax(options) {\n  var url = $.isFunction(options.url) ? options.url() : options.url,\n      method = options.type ? options.type.toUpperCase() : 'GET';\n\n  var form = $('<form>', {\n    method: method === 'GET' ? 'GET' : 'POST',\n    action: url,\n    style: 'display:none'\n  });\n\n  if (method !== 'GET' && method !== 'POST') {\n    form.append($('<input>', {\n      type: 'hidden',\n      name: '_method',\n      value: method.toLowerCase()\n    }))\n  }\n\n  var data = options.data;\n  if (typeof data === 'string') {\n    $.each(data.split('&'), function(index, value) {\n      var pair = value.split('=');\n      form.append($('<input>', {type: 'hidden', name: pair[0], value: pair[1]}))\n    })\n  } else if ($.isArray(data)) {\n    $.each(data, function(index, value) {\n      form.append($('<input>', {type: 'hidden', name: value.name, value: value.value}))\n    })\n  } else if (typeof data === 'object') {\n    var key;\n    for (key in data)\n      form.append($('<input>', {type: 'hidden', name: key, value: data[key]}))\n  }\n\n  $(document.body).append(form);\n  form.submit()\n}\n\n// Internal: Abort an XmlHttpRequest if it hasn't been completed,\n// also removing its event handlers.\nfunction abortXHR(xhr) {\n  if ( xhr && xhr.readyState < 4) {\n    xhr.onreadystatechange = $.noop;\n    xhr.abort()\n  }\n}\n\n// Internal: Generate unique id for state object.\n//\n// Use a timestamp instead of a counter since ids should still be\n// unique across page loads.\n//\n// Returns Number.\nfunction uniqueId() {\n  return (new Date).getTime()\n}\n\nfunction cloneContents(container) {\n  var cloned = container.clone();\n  // Unmark script tags as already being eval'd so they can get executed again\n  // when restored from cache. HAXX: Uses jQuery internal method.\n  cloned.find('script').each(function(){\n    if (!this.src) $._data(this, 'globalEval', false)\n  });\n  return cloned.contents()\n}\n\n// Internal: Strip internal query params from parsed URL.\n//\n// Returns sanitized url.href String.\nfunction stripInternalParams(url) {\n  url.search = url.search.replace(/([?&])(_pjax|_)=[^&]*/g, '').replace(/^&/, '');\n  return url.href.replace(/\\?($|#)/, '$1')\n}\n\n// Internal: Parse URL components and returns a Locationish object.\n//\n// url - String URL\n//\n// Returns HTMLAnchorElement that acts like Location.\nfunction parseURL(url) {\n  var a = document.createElement('a');\n  a.href = url;\n  return a\n}\n\n// Internal: Return the `href` component of given URL object with the hash\n// portion removed.\n//\n// location - Location or HTMLAnchorElement\n//\n// Returns String\nfunction stripHash(location) {\n  return location.href.replace(/#.*/, '')\n}\n\n// Internal: Build options Object for arguments.\n//\n// For convenience the first parameter can be either the container or\n// the options object.\n//\n// Examples\n//\n//   optionsFor('#container')\n//   // => {container: '#container'}\n//\n//   optionsFor('#container', {push: true})\n//   // => {container: '#container', push: true}\n//\n//   optionsFor({container: '#container', push: true})\n//   // => {container: '#container', push: true}\n//\n// Returns options Object.\nfunction optionsFor(container, options) {\n  if (container && options) {\n    options = $.extend({}, options);\n    options.container = container;\n    return options\n  } else if ($.isPlainObject(container)) {\n    return container\n  } else {\n    return {container: container}\n  }\n}\n\n// Internal: Filter and find all elements matching the selector.\n//\n// Where $.fn.find only matches descendants, findAll will test all the\n// top level elements in the jQuery object as well.\n//\n// elems    - jQuery object of Elements\n// selector - String selector to match\n//\n// Returns a jQuery object.\nfunction findAll(elems, selector) {\n  return elems.filter(selector).add(elems.find(selector))\n}\n\nfunction parseHTML(html) {\n  return $.parseHTML(html, document, true)\n}\n\n// Internal: Extracts container and metadata from response.\n//\n// 1. Extracts X-PJAX-URL header if set\n// 2. Extracts inline <title> tags\n// 3. Builds response Element and extracts fragment if set\n//\n// data    - String response data\n// xhr     - XHR response\n// options - pjax options Object\n//\n// Returns an Object with url, title, and contents keys.\nfunction extractContainer(data, xhr, options) {\n  var obj = {}, fullDocument = /<html/i.test(data);\n\n  // Prefer X-PJAX-URL header if it was set, otherwise fallback to\n  // using the original requested url.\n  var serverUrl = xhr.getResponseHeader('X-PJAX-URL');\n  obj.url = serverUrl ? stripInternalParams(parseURL(serverUrl)) : options.requestUrl;\n\n  var $head, $body;\n  // Attempt to parse response html into elements\n  if (fullDocument) {\n    $body = $(parseHTML(data.match(/<body[^>]*>([\\s\\S.]*)<\\/body>/i)[0]));\n    var head = data.match(/<head[^>]*>([\\s\\S.]*)<\\/head>/i);\n    $head = head != null ? $(parseHTML(head[0])) : $body\n  } else {\n    $head = $body = $(parseHTML(data))\n  }\n\n  // If response data is empty, return fast\n  if ($body.length === 0)\n    return obj;\n\n  // If there's a <title> tag in the header, use it as\n  // the page's title.\n  obj.title = findAll($head, 'title').last().text();\n\n  if (options.fragment) {\n    var $fragment = $body;\n    // If they specified a fragment, look for it in the response\n    // and pull it out.\n    if (options.fragment !== 'body') {\n      $fragment = findAll($fragment, options.fragment).first()\n    }\n\n    if ($fragment.length) {\n      obj.contents = options.fragment === 'body' ? $fragment : $fragment.contents();\n\n      // If there's no title, look for data-title and title attributes\n      // on the fragment\n      if (!obj.title)\n        obj.title = $fragment.attr('title') || $fragment.data('title')\n    }\n\n  } else if (!fullDocument) {\n    obj.contents = $body\n  }\n\n  // Clean up any <title> tags\n  if (obj.contents) {\n    // Remove any parent title elements\n    obj.contents = obj.contents.not(function() { return $(this).is('title') });\n\n    // Then scrub any titles from their descendants\n    obj.contents.find('title').remove();\n\n    // Gather all script[src] elements\n    obj.scripts = findAll(obj.contents, 'script[src]').remove();\n    obj.contents = obj.contents.not(obj.scripts);\n\n    // Collect all link[type=\"text/css\"] elements\n    obj.styles =  findAll(obj.contents, 'link[type=\"text/css\"]').remove();\n    obj.contents = obj.contents.not(obj.styles);\n  }\n\n  // Trim any whitespace off the title\n  if (obj.title) obj.title = $.trim(obj.title);\n\n  return obj\n}\n\n// Internal: History DOM caching class.\nvar cacheMapping      = {};\nvar cacheForwardStack = [];\nvar cacheBackStack    = [];\n\n// Push previous state id and container contents into the history\n// cache. Should be called in conjunction with `pushState` to save the\n// previous container contents.\n//\n// id    - State ID Number\n// value - DOM Element to cache\n//\n// Returns nothing.\nfunction cachePush(id, value) {\n  cacheMapping[id] = value;\n  cacheBackStack.push(id);\n\n  // Remove all entries in forward history stack after pushing a new page.\n  trimCacheStack(cacheForwardStack, 0);\n\n  // Trim back history stack to max cache length.\n  trimCacheStack(cacheBackStack, pjax.defaults.maxCacheLength)\n}\n\n// Shifts cache from directional history cache. Should be\n// called on `popstate` with the previous state id and container\n// contents.\n//\n// direction - \"forward\" or \"back\" String\n// id        - State ID Number\n// value     - DOM Element to cache\n//\n// Returns nothing.\nfunction cachePop(direction, id, value) {\n  var pushStack, popStack;\n  cacheMapping[id] = value;\n\n  if (direction === 'forward') {\n    pushStack = cacheBackStack;\n    popStack  = cacheForwardStack\n  } else {\n    pushStack = cacheForwardStack;\n    popStack  = cacheBackStack\n  }\n\n  pushStack.push(id);\n  id = popStack.pop();\n  if (id) delete cacheMapping[id];\n\n  // Trim whichever stack we just pushed to to max cache length.\n  trimCacheStack(pushStack, pjax.defaults.maxCacheLength)\n}\n\n// Trim a cache stack (either cacheBackStack or cacheForwardStack) to be no\n// longer than the specified length, deleting cached DOM elements as necessary.\n//\n// stack  - Array of state IDs\n// length - Maximum length to trim to\n//\n// Returns nothing.\nfunction trimCacheStack(stack, length) {\n  while (stack.length > length)\n    delete cacheMapping[stack.shift()]\n}\n\n// Public: Find version identifier for the initial page load.\n//\n// Returns String version or undefined.\nfunction findVersion() {\n  return $('meta').filter(function() {\n    var name = $(this).attr('http-equiv');\n    return name && name.toUpperCase() === 'X-PJAX-VERSION'\n  }).attr('content')\n}\n\n// Install pjax functions on $.pjax to enable pushState behavior.\n//\n// Does nothing if already enabled.\n//\n// Examples\n//\n//     $.pjax.enable()\n//\n// Returns nothing.\nfunction enable() {\n  $.fn.pjax = fnPjax;\n  $.pjax = pjax;\n  $.pjax.enable = $.noop;\n  $.pjax.disable = disable;\n  $.pjax.click = handleClick;\n  $.pjax.submit = handleSubmit;\n  $.pjax.reload = pjaxReload;\n  $.pjax.defaults = {\n    timeout: 650,\n    push: true,\n    replace: false,\n    type: 'GET',\n    dataType: 'html',\n    scrollTo: 0,\n    maxCacheLength: 20,\n    version: findVersion\n  };\n  $(window).on('popstate.pjax', onPjaxPopstate)\n}\n\n// Disable pushState behavior.\n//\n// This is the case when a browser doesn't support pushState. It is\n// sometimes useful to disable pushState for debugging on a modern\n// browser.\n//\n// Examples\n//\n//     $.pjax.disable()\n//\n// Returns nothing.\nfunction disable() {\n  $.fn.pjax = function() { return this };\n  $.pjax = fallbackPjax;\n  $.pjax.enable = enable;\n  $.pjax.disable = $.noop;\n  $.pjax.click = $.noop;\n  $.pjax.submit = $.noop;\n  $.pjax.reload = function() { window.location.reload() };\n\n  $(window).off('popstate.pjax', onPjaxPopstate)\n}\n\n\n// Add the state property to jQuery's event object so we can use it in\n// $(window).bind('popstate')\nif ($.event.props && $.inArray('state', $.event.props) < 0) {\n  $.event.props.push('state')\n} else if (!('state' in $.Event.prototype)) {\n  $.event.addProp('state')\n}\n\n// Is pjax supported by this browser?\n$.support.pjax =\n  window.history && window.history.pushState && window.history.replaceState &&\n  // pushState isn't reliable on iOS until 5.\n  !navigator.userAgent.match(/((iPod|iPhone|iPad).+\\bOS\\s+[1-4]\\D|WebApps\\/.+CFNetwork)/);\n\nif ($.support.pjax) {\n  enable()\n} else {\n  disable()\n}\n\n})(jQuery);\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/jquery-qrcode/dist/jquery-qrcode.js",
    "content": "/*! jquery-qrcode v0.17.0 - https://larsjung.de/jquery-qrcode/ */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"jquery-qrcode\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"jquery-qrcode\"] = factory();\n\telse\n\t\troot[\"jquery-qrcode\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var WIN = global.window;\nvar JQ = WIN.jQuery; // Check if canvas is available in the browser (as Modernizr does)\n\nvar HAS_CANVAS = function () {\n  var el = WIN.document.createElement('canvas');\n  return !!(el.getContext && el.getContext('2d'));\n}();\n\nvar is_img_el = function is_img_el(x) {\n  return x && typeof x.tagName === 'string' && x.tagName.toUpperCase() === 'IMG';\n}; // Wrapper for the original QR code generator.\n\n\nvar create_qrcode = function create_qrcode(text, level, version, quiet) {\n  var qr = {};\n\n  var qr_gen = __webpack_require__(2);\n\n  qr_gen.stringToBytes = qr_gen.stringToBytesFuncs['UTF-8'];\n  var vqr = qr_gen(version, level);\n  vqr.addData(text);\n  vqr.make();\n  quiet = quiet || 0;\n  var module_count = vqr.getModuleCount();\n  var quiet_module_count = module_count + 2 * quiet;\n\n  var is_dark = function is_dark(row, col) {\n    row -= quiet;\n    col -= quiet;\n    return row >= 0 && row < module_count && col >= 0 && col < module_count && vqr.isDark(row, col);\n  };\n\n  var add_blank = function add_blank(l, t, r, b) {\n    var prev_is_dark = qr.is_dark;\n    var module_size = 1 / quiet_module_count;\n\n    qr.is_dark = function (row, col) {\n      var ml = col * module_size;\n      var mt = row * module_size;\n      var mr = ml + module_size;\n      var mb = mt + module_size;\n      return prev_is_dark(row, col) && (l > mr || ml > r || t > mb || mt > b);\n    };\n  };\n\n  qr.text = text;\n  qr.level = level;\n  qr.version = version;\n  qr.module_count = quiet_module_count;\n  qr.is_dark = is_dark;\n  qr.add_blank = add_blank;\n  return qr;\n}; // Returns a minimal QR code for the given text starting with version `min_ver`.\n// Returns `undefined` if `text` is too long to be encoded in `max_ver`.\n\n\nvar create_min_qrcode = function create_min_qrcode(text, level, min_ver, max_ver, quiet) {\n  min_ver = Math.max(1, min_ver || 1);\n  max_ver = Math.min(40, max_ver || 40);\n\n  for (var ver = min_ver; ver <= max_ver; ver += 1) {\n    try {\n      return create_qrcode(text, level, ver, quiet);\n    } catch (err) {\n      /* empty */\n    }\n  }\n\n  return undefined;\n};\n\nvar draw_background_label = function draw_background_label(qr, context, settings) {\n  var size = settings.size;\n  var font = 'bold ' + settings.mSize * size + 'px ' + settings.fontname;\n  var ctx = JQ('<canvas/>')[0].getContext('2d');\n  ctx.font = font;\n  var w = ctx.measureText(settings.label).width;\n  var sh = settings.mSize;\n  var sw = w / size;\n  var sl = (1 - sw) * settings.mPosX;\n  var st = (1 - sh) * settings.mPosY;\n  var sr = sl + sw;\n  var sb = st + sh;\n  var pad = 0.01;\n\n  if (settings.mode === 1) {\n    // Strip\n    qr.add_blank(0, st - pad, size, sb + pad);\n  } else {\n    // Box\n    qr.add_blank(sl - pad, st - pad, sr + pad, sb + pad);\n  }\n\n  context.fillStyle = settings.fontcolor;\n  context.font = font;\n  context.fillText(settings.label, sl * size, st * size + 0.75 * settings.mSize * size);\n};\n\nvar draw_background_img = function draw_background_img(qr, context, settings) {\n  var size = settings.size;\n  var w = settings.image.naturalWidth || 1;\n  var h = settings.image.naturalHeight || 1;\n  var sh = settings.mSize;\n  var sw = sh * w / h;\n  var sl = (1 - sw) * settings.mPosX;\n  var st = (1 - sh) * settings.mPosY;\n  var sr = sl + sw;\n  var sb = st + sh;\n  var pad = 0.01;\n\n  if (settings.mode === 3) {\n    // Strip\n    qr.add_blank(0, st - pad, size, sb + pad);\n  } else {\n    // Box\n    qr.add_blank(sl - pad, st - pad, sr + pad, sb + pad);\n  }\n\n  context.drawImage(settings.image, sl * size, st * size, sw * size, sh * size);\n};\n\nvar draw_background = function draw_background(qr, context, settings) {\n  if (is_img_el(settings.background)) {\n    context.drawImage(settings.background, 0, 0, settings.size, settings.size);\n  } else if (settings.background) {\n    context.fillStyle = settings.background;\n    context.fillRect(settings.left, settings.top, settings.size, settings.size);\n  }\n\n  var mode = settings.mode;\n\n  if (mode === 1 || mode === 2) {\n    draw_background_label(qr, context, settings);\n  } else if (is_img_el(settings.image) && (mode === 3 || mode === 4)) {\n    draw_background_img(qr, context, settings);\n  }\n};\n\nvar draw_modules_default = function draw_modules_default(qr, context, settings, left, top, width, row, col) {\n  if (qr.is_dark(row, col)) {\n    context.rect(left, top, width, width);\n  }\n};\n\nvar draw_modules_rounded_dark = function draw_modules_rounded_dark(ctx, l, t, r, b, rad, nw, ne, se, sw) {\n  if (nw) {\n    ctx.moveTo(l + rad, t);\n  } else {\n    ctx.moveTo(l, t);\n  }\n\n  if (ne) {\n    ctx.lineTo(r - rad, t);\n    ctx.arcTo(r, t, r, b, rad);\n  } else {\n    ctx.lineTo(r, t);\n  }\n\n  if (se) {\n    ctx.lineTo(r, b - rad);\n    ctx.arcTo(r, b, l, b, rad);\n  } else {\n    ctx.lineTo(r, b);\n  }\n\n  if (sw) {\n    ctx.lineTo(l + rad, b);\n    ctx.arcTo(l, b, l, t, rad);\n  } else {\n    ctx.lineTo(l, b);\n  }\n\n  if (nw) {\n    ctx.lineTo(l, t + rad);\n    ctx.arcTo(l, t, r, t, rad);\n  } else {\n    ctx.lineTo(l, t);\n  }\n};\n\nvar draw_modules_rounded_light = function draw_modules_rounded_light(ctx, l, t, r, b, rad, nw, ne, se, sw) {\n  if (nw) {\n    ctx.moveTo(l + rad, t);\n    ctx.lineTo(l, t);\n    ctx.lineTo(l, t + rad);\n    ctx.arcTo(l, t, l + rad, t, rad);\n  }\n\n  if (ne) {\n    ctx.moveTo(r - rad, t);\n    ctx.lineTo(r, t);\n    ctx.lineTo(r, t + rad);\n    ctx.arcTo(r, t, r - rad, t, rad);\n  }\n\n  if (se) {\n    ctx.moveTo(r - rad, b);\n    ctx.lineTo(r, b);\n    ctx.lineTo(r, b - rad);\n    ctx.arcTo(r, b, r - rad, b, rad);\n  }\n\n  if (sw) {\n    ctx.moveTo(l + rad, b);\n    ctx.lineTo(l, b);\n    ctx.lineTo(l, b - rad);\n    ctx.arcTo(l, b, l + rad, b, rad);\n  }\n};\n\nvar draw_modules_rounded = function draw_modules_rounded(qr, context, settings, left, top, width, row, col) {\n  var is_dark = qr.is_dark;\n  var right = left + width;\n  var bottom = top + width;\n  var radius = settings.radius * width;\n  var rowT = row - 1;\n  var rowB = row + 1;\n  var colL = col - 1;\n  var colR = col + 1;\n  var center = is_dark(row, col);\n  var northwest = is_dark(rowT, colL);\n  var north = is_dark(rowT, col);\n  var northeast = is_dark(rowT, colR);\n  var east = is_dark(row, colR);\n  var southeast = is_dark(rowB, colR);\n  var south = is_dark(rowB, col);\n  var southwest = is_dark(rowB, colL);\n  var west = is_dark(row, colL);\n\n  if (center) {\n    draw_modules_rounded_dark(context, left, top, right, bottom, radius, !north && !west, !north && !east, !south && !east, !south && !west);\n  } else {\n    draw_modules_rounded_light(context, left, top, right, bottom, radius, north && west && northwest, north && east && northeast, south && east && southeast, south && west && southwest);\n  }\n};\n\nvar draw_modules = function draw_modules(qr, context, settings) {\n  var module_count = qr.module_count;\n  var module_size = settings.size / module_count;\n  var fn = draw_modules_default;\n  var row;\n  var col;\n\n  if (settings.radius > 0 && settings.radius <= 0.5) {\n    fn = draw_modules_rounded;\n  }\n\n  context.beginPath();\n\n  for (row = 0; row < module_count; row += 1) {\n    for (col = 0; col < module_count; col += 1) {\n      var l = settings.left + col * module_size;\n      var t = settings.top + row * module_size;\n      var w = module_size;\n      fn(qr, context, settings, l, t, w, row, col);\n    }\n  }\n\n  if (is_img_el(settings.fill)) {\n    context.strokeStyle = 'rgba(0,0,0,0.5)';\n    context.lineWidth = 2;\n    context.stroke();\n    var prev = context.globalCompositeOperation;\n    context.globalCompositeOperation = 'destination-out';\n    context.fill();\n    context.globalCompositeOperation = prev;\n    context.clip();\n    context.drawImage(settings.fill, 0, 0, settings.size, settings.size);\n    context.restore();\n  } else {\n    context.fillStyle = settings.fill;\n    context.fill();\n  }\n}; // Draws QR code to the given `canvas` and returns it.\n\n\nvar draw_on_canvas = function draw_on_canvas(canvas, settings) {\n  var qr = create_min_qrcode(settings.text, settings.ecLevel, settings.minVersion, settings.maxVersion, settings.quiet);\n\n  if (!qr) {\n    return null;\n  }\n\n  var $canvas = JQ(canvas).data('qrcode', qr);\n  var context = $canvas[0].getContext('2d');\n  draw_background(qr, context, settings);\n  draw_modules(qr, context, settings);\n  return $canvas;\n}; // Returns a `canvas` element representing the QR code for the given settings.\n\n\nvar create_canvas = function create_canvas(settings) {\n  var $canvas = JQ('<canvas/>').attr('width', settings.size).attr('height', settings.size);\n  return draw_on_canvas($canvas, settings);\n}; // Returns an `image` element representing the QR code for the given settings.\n\n\nvar create_img = function create_img(settings) {\n  return JQ('<img/>').attr('src', create_canvas(settings)[0].toDataURL('image/png'));\n}; // Returns a `div` element representing the QR code for the given settings.\n\n\nvar create_div = function create_div(settings) {\n  var qr = create_min_qrcode(settings.text, settings.ecLevel, settings.minVersion, settings.maxVersion, settings.quiet);\n\n  if (!qr) {\n    return null;\n  } // some shortcuts to improve compression\n\n\n  var settings_size = settings.size;\n  var settings_bgColor = settings.background;\n  var math_floor = Math.floor;\n  var module_count = qr.module_count;\n  var module_size = math_floor(settings_size / module_count);\n  var offset = math_floor(0.5 * (settings_size - module_size * module_count));\n  var row;\n  var col;\n  var container_css = {\n    position: 'relative',\n    left: 0,\n    top: 0,\n    padding: 0,\n    margin: 0,\n    width: settings_size,\n    height: settings_size\n  };\n  var dark_css = {\n    position: 'absolute',\n    padding: 0,\n    margin: 0,\n    width: module_size,\n    height: module_size,\n    'background-color': settings.fill\n  };\n  var $div = JQ('<div/>').data('qrcode', qr).css(container_css);\n\n  if (settings_bgColor) {\n    $div.css('background-color', settings_bgColor);\n  }\n\n  for (row = 0; row < module_count; row += 1) {\n    for (col = 0; col < module_count; col += 1) {\n      if (qr.is_dark(row, col)) {\n        JQ('<div/>').css(dark_css).css({\n          left: offset + col * module_size,\n          top: offset + row * module_size\n        }).appendTo($div);\n      }\n    }\n  }\n\n  return $div;\n};\n\nvar create_html = function create_html(settings) {\n  if (HAS_CANVAS && settings.render === 'canvas') {\n    return create_canvas(settings);\n  } else if (HAS_CANVAS && settings.render === 'image') {\n    return create_img(settings);\n  }\n\n  return create_div(settings);\n};\n\nvar DEFAULTS = {\n  // render method: `'canvas'`, `'image'` or `'div'`\n  render: 'canvas',\n  // version range somewhere in 1 .. 40\n  minVersion: 1,\n  maxVersion: 40,\n  // error correction level: `'L'`, `'M'`, `'Q'` or `'H'`\n  ecLevel: 'L',\n  // offset in pixel if drawn onto existing canvas\n  left: 0,\n  top: 0,\n  // size in pixel\n  size: 200,\n  // code color or image element\n  fill: '#000',\n  // background color or image element, `null` for transparent background\n  background: '#fff',\n  // content\n  text: 'no text',\n  // corner radius relative to module width: 0.0 .. 0.5\n  radius: 0,\n  // quiet zone in modules\n  quiet: 0,\n  // modes\n  // 0: normal\n  // 1: label strip\n  // 2: label box\n  // 3: image strip\n  // 4: image box\n  mode: 0,\n  mSize: 0.1,\n  mPosX: 0.5,\n  mPosY: 0.5,\n  label: 'no label',\n  fontname: 'sans',\n  fontcolor: '#000',\n  image: null\n};\n\nJQ.fn.qrcode = module.exports = function main(options) {\n  var settings = JQ.extend({}, DEFAULTS, options);\n  return this.each(function (idx, el) {\n    if (el.nodeName.toLowerCase() === 'canvas') {\n      draw_on_canvas(el, settings);\n    } else {\n      JQ(el).append(create_html(settings));\n    }\n  });\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1)))\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n//  http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n//  http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n  //---------------------------------------------------------------------\n  // qrcode\n  //---------------------------------------------------------------------\n\n  /**\n   * qrcode\n   * @param typeNumber 1 to 40\n   * @param errorCorrectionLevel 'L','M','Q','H'\n   */\n  var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n    var PAD0 = 0xEC;\n    var PAD1 = 0x11;\n\n    var _typeNumber = typeNumber;\n    var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n    var _modules = null;\n    var _moduleCount = 0;\n    var _dataCache = null;\n    var _dataList = [];\n\n    var _this = {};\n\n    var makeImpl = function(test, maskPattern) {\n\n      _moduleCount = _typeNumber * 4 + 17;\n      _modules = function(moduleCount) {\n        var modules = new Array(moduleCount);\n        for (var row = 0; row < moduleCount; row += 1) {\n          modules[row] = new Array(moduleCount);\n          for (var col = 0; col < moduleCount; col += 1) {\n            modules[row][col] = null;\n          }\n        }\n        return modules;\n      }(_moduleCount);\n\n      setupPositionProbePattern(0, 0);\n      setupPositionProbePattern(_moduleCount - 7, 0);\n      setupPositionProbePattern(0, _moduleCount - 7);\n      setupPositionAdjustPattern();\n      setupTimingPattern();\n      setupTypeInfo(test, maskPattern);\n\n      if (_typeNumber >= 7) {\n        setupTypeNumber(test);\n      }\n\n      if (_dataCache == null) {\n        _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n      }\n\n      mapData(_dataCache, maskPattern);\n    };\n\n    var setupPositionProbePattern = function(row, col) {\n\n      for (var r = -1; r <= 7; r += 1) {\n\n        if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n        for (var c = -1; c <= 7; c += 1) {\n\n          if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n          if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n              || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n              || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n            _modules[row + r][col + c] = true;\n          } else {\n            _modules[row + r][col + c] = false;\n          }\n        }\n      }\n    };\n\n    var getBestMaskPattern = function() {\n\n      var minLostPoint = 0;\n      var pattern = 0;\n\n      for (var i = 0; i < 8; i += 1) {\n\n        makeImpl(true, i);\n\n        var lostPoint = QRUtil.getLostPoint(_this);\n\n        if (i == 0 || minLostPoint > lostPoint) {\n          minLostPoint = lostPoint;\n          pattern = i;\n        }\n      }\n\n      return pattern;\n    };\n\n    var setupTimingPattern = function() {\n\n      for (var r = 8; r < _moduleCount - 8; r += 1) {\n        if (_modules[r][6] != null) {\n          continue;\n        }\n        _modules[r][6] = (r % 2 == 0);\n      }\n\n      for (var c = 8; c < _moduleCount - 8; c += 1) {\n        if (_modules[6][c] != null) {\n          continue;\n        }\n        _modules[6][c] = (c % 2 == 0);\n      }\n    };\n\n    var setupPositionAdjustPattern = function() {\n\n      var pos = QRUtil.getPatternPosition(_typeNumber);\n\n      for (var i = 0; i < pos.length; i += 1) {\n\n        for (var j = 0; j < pos.length; j += 1) {\n\n          var row = pos[i];\n          var col = pos[j];\n\n          if (_modules[row][col] != null) {\n            continue;\n          }\n\n          for (var r = -2; r <= 2; r += 1) {\n\n            for (var c = -2; c <= 2; c += 1) {\n\n              if (r == -2 || r == 2 || c == -2 || c == 2\n                  || (r == 0 && c == 0) ) {\n                _modules[row + r][col + c] = true;\n              } else {\n                _modules[row + r][col + c] = false;\n              }\n            }\n          }\n        }\n      }\n    };\n\n    var setupTypeNumber = function(test) {\n\n      var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n      for (var i = 0; i < 18; i += 1) {\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n        _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n      }\n\n      for (var i = 0; i < 18; i += 1) {\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n        _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n      }\n    };\n\n    var setupTypeInfo = function(test, maskPattern) {\n\n      var data = (_errorCorrectionLevel << 3) | maskPattern;\n      var bits = QRUtil.getBCHTypeInfo(data);\n\n      // vertical\n      for (var i = 0; i < 15; i += 1) {\n\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n\n        if (i < 6) {\n          _modules[i][8] = mod;\n        } else if (i < 8) {\n          _modules[i + 1][8] = mod;\n        } else {\n          _modules[_moduleCount - 15 + i][8] = mod;\n        }\n      }\n\n      // horizontal\n      for (var i = 0; i < 15; i += 1) {\n\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n\n        if (i < 8) {\n          _modules[8][_moduleCount - i - 1] = mod;\n        } else if (i < 9) {\n          _modules[8][15 - i - 1 + 1] = mod;\n        } else {\n          _modules[8][15 - i - 1] = mod;\n        }\n      }\n\n      // fixed module\n      _modules[_moduleCount - 8][8] = (!test);\n    };\n\n    var mapData = function(data, maskPattern) {\n\n      var inc = -1;\n      var row = _moduleCount - 1;\n      var bitIndex = 7;\n      var byteIndex = 0;\n      var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n      for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n        if (col == 6) col -= 1;\n\n        while (true) {\n\n          for (var c = 0; c < 2; c += 1) {\n\n            if (_modules[row][col - c] == null) {\n\n              var dark = false;\n\n              if (byteIndex < data.length) {\n                dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n              }\n\n              var mask = maskFunc(row, col - c);\n\n              if (mask) {\n                dark = !dark;\n              }\n\n              _modules[row][col - c] = dark;\n              bitIndex -= 1;\n\n              if (bitIndex == -1) {\n                byteIndex += 1;\n                bitIndex = 7;\n              }\n            }\n          }\n\n          row += inc;\n\n          if (row < 0 || _moduleCount <= row) {\n            row -= inc;\n            inc = -inc;\n            break;\n          }\n        }\n      }\n    };\n\n    var createBytes = function(buffer, rsBlocks) {\n\n      var offset = 0;\n\n      var maxDcCount = 0;\n      var maxEcCount = 0;\n\n      var dcdata = new Array(rsBlocks.length);\n      var ecdata = new Array(rsBlocks.length);\n\n      for (var r = 0; r < rsBlocks.length; r += 1) {\n\n        var dcCount = rsBlocks[r].dataCount;\n        var ecCount = rsBlocks[r].totalCount - dcCount;\n\n        maxDcCount = Math.max(maxDcCount, dcCount);\n        maxEcCount = Math.max(maxEcCount, ecCount);\n\n        dcdata[r] = new Array(dcCount);\n\n        for (var i = 0; i < dcdata[r].length; i += 1) {\n          dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n        }\n        offset += dcCount;\n\n        var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n        var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n        var modPoly = rawPoly.mod(rsPoly);\n        ecdata[r] = new Array(rsPoly.getLength() - 1);\n        for (var i = 0; i < ecdata[r].length; i += 1) {\n          var modIndex = i + modPoly.getLength() - ecdata[r].length;\n          ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n        }\n      }\n\n      var totalCodeCount = 0;\n      for (var i = 0; i < rsBlocks.length; i += 1) {\n        totalCodeCount += rsBlocks[i].totalCount;\n      }\n\n      var data = new Array(totalCodeCount);\n      var index = 0;\n\n      for (var i = 0; i < maxDcCount; i += 1) {\n        for (var r = 0; r < rsBlocks.length; r += 1) {\n          if (i < dcdata[r].length) {\n            data[index] = dcdata[r][i];\n            index += 1;\n          }\n        }\n      }\n\n      for (var i = 0; i < maxEcCount; i += 1) {\n        for (var r = 0; r < rsBlocks.length; r += 1) {\n          if (i < ecdata[r].length) {\n            data[index] = ecdata[r][i];\n            index += 1;\n          }\n        }\n      }\n\n      return data;\n    };\n\n    var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n      var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n      var buffer = qrBitBuffer();\n\n      for (var i = 0; i < dataList.length; i += 1) {\n        var data = dataList[i];\n        buffer.put(data.getMode(), 4);\n        buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n        data.write(buffer);\n      }\n\n      // calc num max data.\n      var totalDataCount = 0;\n      for (var i = 0; i < rsBlocks.length; i += 1) {\n        totalDataCount += rsBlocks[i].dataCount;\n      }\n\n      if (buffer.getLengthInBits() > totalDataCount * 8) {\n        throw 'code length overflow. ('\n          + buffer.getLengthInBits()\n          + '>'\n          + totalDataCount * 8\n          + ')';\n      }\n\n      // end code\n      if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n        buffer.put(0, 4);\n      }\n\n      // padding\n      while (buffer.getLengthInBits() % 8 != 0) {\n        buffer.putBit(false);\n      }\n\n      // padding\n      while (true) {\n\n        if (buffer.getLengthInBits() >= totalDataCount * 8) {\n          break;\n        }\n        buffer.put(PAD0, 8);\n\n        if (buffer.getLengthInBits() >= totalDataCount * 8) {\n          break;\n        }\n        buffer.put(PAD1, 8);\n      }\n\n      return createBytes(buffer, rsBlocks);\n    };\n\n    _this.addData = function(data, mode) {\n\n      mode = mode || 'Byte';\n\n      var newData = null;\n\n      switch(mode) {\n      case 'Numeric' :\n        newData = qrNumber(data);\n        break;\n      case 'Alphanumeric' :\n        newData = qrAlphaNum(data);\n        break;\n      case 'Byte' :\n        newData = qr8BitByte(data);\n        break;\n      case 'Kanji' :\n        newData = qrKanji(data);\n        break;\n      default :\n        throw 'mode:' + mode;\n      }\n\n      _dataList.push(newData);\n      _dataCache = null;\n    };\n\n    _this.isDark = function(row, col) {\n      if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n        throw row + ',' + col;\n      }\n      return _modules[row][col];\n    };\n\n    _this.getModuleCount = function() {\n      return _moduleCount;\n    };\n\n    _this.make = function() {\n      if (_typeNumber < 1) {\n        var typeNumber = 1;\n\n        for (; typeNumber < 40; typeNumber++) {\n          var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n          var buffer = qrBitBuffer();\n\n          for (var i = 0; i < _dataList.length; i++) {\n            var data = _dataList[i];\n            buffer.put(data.getMode(), 4);\n            buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n            data.write(buffer);\n          }\n\n          var totalDataCount = 0;\n          for (var i = 0; i < rsBlocks.length; i++) {\n            totalDataCount += rsBlocks[i].dataCount;\n          }\n\n          if (buffer.getLengthInBits() <= totalDataCount * 8) {\n            break;\n          }\n        }\n\n        _typeNumber = typeNumber;\n      }\n\n      makeImpl(false, getBestMaskPattern() );\n    };\n\n    _this.createTableTag = function(cellSize, margin) {\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      var qrHtml = '';\n\n      qrHtml += '<table style=\"';\n      qrHtml += ' border-width: 0px; border-style: none;';\n      qrHtml += ' border-collapse: collapse;';\n      qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n      qrHtml += '\">';\n      qrHtml += '<tbody>';\n\n      for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n        qrHtml += '<tr>';\n\n        for (var c = 0; c < _this.getModuleCount(); c += 1) {\n          qrHtml += '<td style=\"';\n          qrHtml += ' border-width: 0px; border-style: none;';\n          qrHtml += ' border-collapse: collapse;';\n          qrHtml += ' padding: 0px; margin: 0px;';\n          qrHtml += ' width: ' + cellSize + 'px;';\n          qrHtml += ' height: ' + cellSize + 'px;';\n          qrHtml += ' background-color: ';\n          qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n          qrHtml += ';';\n          qrHtml += '\"/>';\n        }\n\n        qrHtml += '</tr>';\n      }\n\n      qrHtml += '</tbody>';\n      qrHtml += '</table>';\n\n      return qrHtml;\n    };\n\n    _this.createSvgTag = function(cellSize, margin) {\n\n      var opts = {};\n      if (typeof arguments[0] == 'object') {\n        // Called by options.\n        opts = arguments[0];\n        // overwrite cellSize and margin.\n        cellSize = opts.cellSize;\n        margin = opts.margin;\n      }\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var c, mc, r, mr, qrSvg='', rect;\n\n      rect = 'l' + cellSize + ',0 0,' + cellSize +\n        ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n      qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n      qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n      qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n      qrSvg += ' preserveAspectRatio=\"xMinYMin meet\">';\n      qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n      qrSvg += '<path d=\"';\n\n      for (r = 0; r < _this.getModuleCount(); r += 1) {\n        mr = r * cellSize + margin;\n        for (c = 0; c < _this.getModuleCount(); c += 1) {\n          if (_this.isDark(r, c) ) {\n            mc = c*cellSize+margin;\n            qrSvg += 'M' + mc + ',' + mr + rect;\n          }\n        }\n      }\n\n      qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n      qrSvg += '</svg>';\n\n      return qrSvg;\n    };\n\n    _this.createDataURL = function(cellSize, margin) {\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var min = margin;\n      var max = size - margin;\n\n      return createDataURL(size, size, function(x, y) {\n        if (min <= x && x < max && min <= y && y < max) {\n          var c = Math.floor( (x - min) / cellSize);\n          var r = Math.floor( (y - min) / cellSize);\n          return _this.isDark(r, c)? 0 : 1;\n        } else {\n          return 1;\n        }\n      } );\n    };\n\n    _this.createImgTag = function(cellSize, margin, alt) {\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n\n      var img = '';\n      img += '<img';\n      img += '\\u0020src=\"';\n      img += _this.createDataURL(cellSize, margin);\n      img += '\"';\n      img += '\\u0020width=\"';\n      img += size;\n      img += '\"';\n      img += '\\u0020height=\"';\n      img += size;\n      img += '\"';\n      if (alt) {\n        img += '\\u0020alt=\"';\n        img += alt;\n        img += '\"';\n      }\n      img += '/>';\n\n      return img;\n    };\n\n    var _createHalfASCII = function(margin) {\n      var cellSize = 1;\n      margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var min = margin;\n      var max = size - margin;\n\n      var y, x, r1, r2, p;\n\n      var blocks = {\n        '██': '█',\n        '█ ': '▀',\n        ' █': '▄',\n        '  ': ' '\n      };\n\n      var blocksLastLineNoMargin = {\n        '██': '▀',\n        '█ ': '▀',\n        ' █': ' ',\n        '  ': ' '\n      };\n\n      var ascii = '';\n      for (y = 0; y < size; y += 2) {\n        r1 = Math.floor((y - min) / cellSize);\n        r2 = Math.floor((y + 1 - min) / cellSize);\n        for (x = 0; x < size; x += 1) {\n          p = '█';\n\n          if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n            p = ' ';\n          }\n\n          if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n            p += ' ';\n          }\n          else {\n            p += '█';\n          }\n\n          // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n          ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n        }\n\n        ascii += '\\n';\n      }\n\n      if (size % 2 && margin > 0) {\n        return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n      }\n\n      return ascii.substring(0, ascii.length-1);\n    };\n\n    _this.createASCII = function(cellSize, margin) {\n      cellSize = cellSize || 1;\n\n      if (cellSize < 2) {\n        return _createHalfASCII(margin);\n      }\n\n      cellSize -= 1;\n      margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var min = margin;\n      var max = size - margin;\n\n      var y, x, r, p;\n\n      var white = Array(cellSize+1).join('██');\n      var black = Array(cellSize+1).join('  ');\n\n      var ascii = '';\n      var line = '';\n      for (y = 0; y < size; y += 1) {\n        r = Math.floor( (y - min) / cellSize);\n        line = '';\n        for (x = 0; x < size; x += 1) {\n          p = 1;\n\n          if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n            p = 0;\n          }\n\n          // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n          line += p ? white : black;\n        }\n\n        for (r = 0; r < cellSize; r += 1) {\n          ascii += line + '\\n';\n        }\n      }\n\n      return ascii.substring(0, ascii.length-1);\n    };\n\n    _this.renderTo2dContext = function(context, cellSize) {\n      cellSize = cellSize || 2;\n      var length = _this.getModuleCount();\n      for (var row = 0; row < length; row++) {\n        for (var col = 0; col < length; col++) {\n          context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n          context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n        }\n      }\n    }\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrcode.stringToBytes\n  //---------------------------------------------------------------------\n\n  qrcode.stringToBytesFuncs = {\n    'default' : function(s) {\n      var bytes = [];\n      for (var i = 0; i < s.length; i += 1) {\n        var c = s.charCodeAt(i);\n        bytes.push(c & 0xff);\n      }\n      return bytes;\n    }\n  };\n\n  qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n  //---------------------------------------------------------------------\n  // qrcode.createStringToBytes\n  //---------------------------------------------------------------------\n\n  /**\n   * @param unicodeData base64 string of byte array.\n   * [16bit Unicode],[16bit Bytes], ...\n   * @param numChars\n   */\n  qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n    // create conversion map.\n\n    var unicodeMap = function() {\n\n      var bin = base64DecodeInputStream(unicodeData);\n      var read = function() {\n        var b = bin.read();\n        if (b == -1) throw 'eof';\n        return b;\n      };\n\n      var count = 0;\n      var unicodeMap = {};\n      while (true) {\n        var b0 = bin.read();\n        if (b0 == -1) break;\n        var b1 = read();\n        var b2 = read();\n        var b3 = read();\n        var k = String.fromCharCode( (b0 << 8) | b1);\n        var v = (b2 << 8) | b3;\n        unicodeMap[k] = v;\n        count += 1;\n      }\n      if (count != numChars) {\n        throw count + ' != ' + numChars;\n      }\n\n      return unicodeMap;\n    }();\n\n    var unknownChar = '?'.charCodeAt(0);\n\n    return function(s) {\n      var bytes = [];\n      for (var i = 0; i < s.length; i += 1) {\n        var c = s.charCodeAt(i);\n        if (c < 128) {\n          bytes.push(c);\n        } else {\n          var b = unicodeMap[s.charAt(i)];\n          if (typeof b == 'number') {\n            if ( (b & 0xff) == b) {\n              // 1byte\n              bytes.push(b);\n            } else {\n              // 2bytes\n              bytes.push(b >>> 8);\n              bytes.push(b & 0xff);\n            }\n          } else {\n            bytes.push(unknownChar);\n          }\n        }\n      }\n      return bytes;\n    };\n  };\n\n  //---------------------------------------------------------------------\n  // QRMode\n  //---------------------------------------------------------------------\n\n  var QRMode = {\n    MODE_NUMBER :    1 << 0,\n    MODE_ALPHA_NUM : 1 << 1,\n    MODE_8BIT_BYTE : 1 << 2,\n    MODE_KANJI :     1 << 3\n  };\n\n  //---------------------------------------------------------------------\n  // QRErrorCorrectionLevel\n  //---------------------------------------------------------------------\n\n  var QRErrorCorrectionLevel = {\n    L : 1,\n    M : 0,\n    Q : 3,\n    H : 2\n  };\n\n  //---------------------------------------------------------------------\n  // QRMaskPattern\n  //---------------------------------------------------------------------\n\n  var QRMaskPattern = {\n    PATTERN000 : 0,\n    PATTERN001 : 1,\n    PATTERN010 : 2,\n    PATTERN011 : 3,\n    PATTERN100 : 4,\n    PATTERN101 : 5,\n    PATTERN110 : 6,\n    PATTERN111 : 7\n  };\n\n  //---------------------------------------------------------------------\n  // QRUtil\n  //---------------------------------------------------------------------\n\n  var QRUtil = function() {\n\n    var PATTERN_POSITION_TABLE = [\n      [],\n      [6, 18],\n      [6, 22],\n      [6, 26],\n      [6, 30],\n      [6, 34],\n      [6, 22, 38],\n      [6, 24, 42],\n      [6, 26, 46],\n      [6, 28, 50],\n      [6, 30, 54],\n      [6, 32, 58],\n      [6, 34, 62],\n      [6, 26, 46, 66],\n      [6, 26, 48, 70],\n      [6, 26, 50, 74],\n      [6, 30, 54, 78],\n      [6, 30, 56, 82],\n      [6, 30, 58, 86],\n      [6, 34, 62, 90],\n      [6, 28, 50, 72, 94],\n      [6, 26, 50, 74, 98],\n      [6, 30, 54, 78, 102],\n      [6, 28, 54, 80, 106],\n      [6, 32, 58, 84, 110],\n      [6, 30, 58, 86, 114],\n      [6, 34, 62, 90, 118],\n      [6, 26, 50, 74, 98, 122],\n      [6, 30, 54, 78, 102, 126],\n      [6, 26, 52, 78, 104, 130],\n      [6, 30, 56, 82, 108, 134],\n      [6, 34, 60, 86, 112, 138],\n      [6, 30, 58, 86, 114, 142],\n      [6, 34, 62, 90, 118, 146],\n      [6, 30, 54, 78, 102, 126, 150],\n      [6, 24, 50, 76, 102, 128, 154],\n      [6, 28, 54, 80, 106, 132, 158],\n      [6, 32, 58, 84, 110, 136, 162],\n      [6, 26, 54, 82, 110, 138, 166],\n      [6, 30, 58, 86, 114, 142, 170]\n    ];\n    var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n    var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n    var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n    var _this = {};\n\n    var getBCHDigit = function(data) {\n      var digit = 0;\n      while (data != 0) {\n        digit += 1;\n        data >>>= 1;\n      }\n      return digit;\n    };\n\n    _this.getBCHTypeInfo = function(data) {\n      var d = data << 10;\n      while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n        d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n      }\n      return ( (data << 10) | d) ^ G15_MASK;\n    };\n\n    _this.getBCHTypeNumber = function(data) {\n      var d = data << 12;\n      while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n        d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n      }\n      return (data << 12) | d;\n    };\n\n    _this.getPatternPosition = function(typeNumber) {\n      return PATTERN_POSITION_TABLE[typeNumber - 1];\n    };\n\n    _this.getMaskFunction = function(maskPattern) {\n\n      switch (maskPattern) {\n\n      case QRMaskPattern.PATTERN000 :\n        return function(i, j) { return (i + j) % 2 == 0; };\n      case QRMaskPattern.PATTERN001 :\n        return function(i, j) { return i % 2 == 0; };\n      case QRMaskPattern.PATTERN010 :\n        return function(i, j) { return j % 3 == 0; };\n      case QRMaskPattern.PATTERN011 :\n        return function(i, j) { return (i + j) % 3 == 0; };\n      case QRMaskPattern.PATTERN100 :\n        return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n      case QRMaskPattern.PATTERN101 :\n        return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n      case QRMaskPattern.PATTERN110 :\n        return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n      case QRMaskPattern.PATTERN111 :\n        return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n      default :\n        throw 'bad maskPattern:' + maskPattern;\n      }\n    };\n\n    _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n      var a = qrPolynomial([1], 0);\n      for (var i = 0; i < errorCorrectLength; i += 1) {\n        a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n      }\n      return a;\n    };\n\n    _this.getLengthInBits = function(mode, type) {\n\n      if (1 <= type && type < 10) {\n\n        // 1 - 9\n\n        switch(mode) {\n        case QRMode.MODE_NUMBER    : return 10;\n        case QRMode.MODE_ALPHA_NUM : return 9;\n        case QRMode.MODE_8BIT_BYTE : return 8;\n        case QRMode.MODE_KANJI     : return 8;\n        default :\n          throw 'mode:' + mode;\n        }\n\n      } else if (type < 27) {\n\n        // 10 - 26\n\n        switch(mode) {\n        case QRMode.MODE_NUMBER    : return 12;\n        case QRMode.MODE_ALPHA_NUM : return 11;\n        case QRMode.MODE_8BIT_BYTE : return 16;\n        case QRMode.MODE_KANJI     : return 10;\n        default :\n          throw 'mode:' + mode;\n        }\n\n      } else if (type < 41) {\n\n        // 27 - 40\n\n        switch(mode) {\n        case QRMode.MODE_NUMBER    : return 14;\n        case QRMode.MODE_ALPHA_NUM : return 13;\n        case QRMode.MODE_8BIT_BYTE : return 16;\n        case QRMode.MODE_KANJI     : return 12;\n        default :\n          throw 'mode:' + mode;\n        }\n\n      } else {\n        throw 'type:' + type;\n      }\n    };\n\n    _this.getLostPoint = function(qrcode) {\n\n      var moduleCount = qrcode.getModuleCount();\n\n      var lostPoint = 0;\n\n      // LEVEL1\n\n      for (var row = 0; row < moduleCount; row += 1) {\n        for (var col = 0; col < moduleCount; col += 1) {\n\n          var sameCount = 0;\n          var dark = qrcode.isDark(row, col);\n\n          for (var r = -1; r <= 1; r += 1) {\n\n            if (row + r < 0 || moduleCount <= row + r) {\n              continue;\n            }\n\n            for (var c = -1; c <= 1; c += 1) {\n\n              if (col + c < 0 || moduleCount <= col + c) {\n                continue;\n              }\n\n              if (r == 0 && c == 0) {\n                continue;\n              }\n\n              if (dark == qrcode.isDark(row + r, col + c) ) {\n                sameCount += 1;\n              }\n            }\n          }\n\n          if (sameCount > 5) {\n            lostPoint += (3 + sameCount - 5);\n          }\n        }\n      };\n\n      // LEVEL2\n\n      for (var row = 0; row < moduleCount - 1; row += 1) {\n        for (var col = 0; col < moduleCount - 1; col += 1) {\n          var count = 0;\n          if (qrcode.isDark(row, col) ) count += 1;\n          if (qrcode.isDark(row + 1, col) ) count += 1;\n          if (qrcode.isDark(row, col + 1) ) count += 1;\n          if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n          if (count == 0 || count == 4) {\n            lostPoint += 3;\n          }\n        }\n      }\n\n      // LEVEL3\n\n      for (var row = 0; row < moduleCount; row += 1) {\n        for (var col = 0; col < moduleCount - 6; col += 1) {\n          if (qrcode.isDark(row, col)\n              && !qrcode.isDark(row, col + 1)\n              &&  qrcode.isDark(row, col + 2)\n              &&  qrcode.isDark(row, col + 3)\n              &&  qrcode.isDark(row, col + 4)\n              && !qrcode.isDark(row, col + 5)\n              &&  qrcode.isDark(row, col + 6) ) {\n            lostPoint += 40;\n          }\n        }\n      }\n\n      for (var col = 0; col < moduleCount; col += 1) {\n        for (var row = 0; row < moduleCount - 6; row += 1) {\n          if (qrcode.isDark(row, col)\n              && !qrcode.isDark(row + 1, col)\n              &&  qrcode.isDark(row + 2, col)\n              &&  qrcode.isDark(row + 3, col)\n              &&  qrcode.isDark(row + 4, col)\n              && !qrcode.isDark(row + 5, col)\n              &&  qrcode.isDark(row + 6, col) ) {\n            lostPoint += 40;\n          }\n        }\n      }\n\n      // LEVEL4\n\n      var darkCount = 0;\n\n      for (var col = 0; col < moduleCount; col += 1) {\n        for (var row = 0; row < moduleCount; row += 1) {\n          if (qrcode.isDark(row, col) ) {\n            darkCount += 1;\n          }\n        }\n      }\n\n      var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n      lostPoint += ratio * 10;\n\n      return lostPoint;\n    };\n\n    return _this;\n  }();\n\n  //---------------------------------------------------------------------\n  // QRMath\n  //---------------------------------------------------------------------\n\n  var QRMath = function() {\n\n    var EXP_TABLE = new Array(256);\n    var LOG_TABLE = new Array(256);\n\n    // initialize tables\n    for (var i = 0; i < 8; i += 1) {\n      EXP_TABLE[i] = 1 << i;\n    }\n    for (var i = 8; i < 256; i += 1) {\n      EXP_TABLE[i] = EXP_TABLE[i - 4]\n        ^ EXP_TABLE[i - 5]\n        ^ EXP_TABLE[i - 6]\n        ^ EXP_TABLE[i - 8];\n    }\n    for (var i = 0; i < 255; i += 1) {\n      LOG_TABLE[EXP_TABLE[i] ] = i;\n    }\n\n    var _this = {};\n\n    _this.glog = function(n) {\n\n      if (n < 1) {\n        throw 'glog(' + n + ')';\n      }\n\n      return LOG_TABLE[n];\n    };\n\n    _this.gexp = function(n) {\n\n      while (n < 0) {\n        n += 255;\n      }\n\n      while (n >= 256) {\n        n -= 255;\n      }\n\n      return EXP_TABLE[n];\n    };\n\n    return _this;\n  }();\n\n  //---------------------------------------------------------------------\n  // qrPolynomial\n  //---------------------------------------------------------------------\n\n  function qrPolynomial(num, shift) {\n\n    if (typeof num.length == 'undefined') {\n      throw num.length + '/' + shift;\n    }\n\n    var _num = function() {\n      var offset = 0;\n      while (offset < num.length && num[offset] == 0) {\n        offset += 1;\n      }\n      var _num = new Array(num.length - offset + shift);\n      for (var i = 0; i < num.length - offset; i += 1) {\n        _num[i] = num[i + offset];\n      }\n      return _num;\n    }();\n\n    var _this = {};\n\n    _this.getAt = function(index) {\n      return _num[index];\n    };\n\n    _this.getLength = function() {\n      return _num.length;\n    };\n\n    _this.multiply = function(e) {\n\n      var num = new Array(_this.getLength() + e.getLength() - 1);\n\n      for (var i = 0; i < _this.getLength(); i += 1) {\n        for (var j = 0; j < e.getLength(); j += 1) {\n          num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n        }\n      }\n\n      return qrPolynomial(num, 0);\n    };\n\n    _this.mod = function(e) {\n\n      if (_this.getLength() - e.getLength() < 0) {\n        return _this;\n      }\n\n      var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n      var num = new Array(_this.getLength() );\n      for (var i = 0; i < _this.getLength(); i += 1) {\n        num[i] = _this.getAt(i);\n      }\n\n      for (var i = 0; i < e.getLength(); i += 1) {\n        num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n      }\n\n      // recursive call\n      return qrPolynomial(num, 0).mod(e);\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // QRRSBlock\n  //---------------------------------------------------------------------\n\n  var QRRSBlock = function() {\n\n    var RS_BLOCK_TABLE = [\n\n      // L\n      // M\n      // Q\n      // H\n\n      // 1\n      [1, 26, 19],\n      [1, 26, 16],\n      [1, 26, 13],\n      [1, 26, 9],\n\n      // 2\n      [1, 44, 34],\n      [1, 44, 28],\n      [1, 44, 22],\n      [1, 44, 16],\n\n      // 3\n      [1, 70, 55],\n      [1, 70, 44],\n      [2, 35, 17],\n      [2, 35, 13],\n\n      // 4\n      [1, 100, 80],\n      [2, 50, 32],\n      [2, 50, 24],\n      [4, 25, 9],\n\n      // 5\n      [1, 134, 108],\n      [2, 67, 43],\n      [2, 33, 15, 2, 34, 16],\n      [2, 33, 11, 2, 34, 12],\n\n      // 6\n      [2, 86, 68],\n      [4, 43, 27],\n      [4, 43, 19],\n      [4, 43, 15],\n\n      // 7\n      [2, 98, 78],\n      [4, 49, 31],\n      [2, 32, 14, 4, 33, 15],\n      [4, 39, 13, 1, 40, 14],\n\n      // 8\n      [2, 121, 97],\n      [2, 60, 38, 2, 61, 39],\n      [4, 40, 18, 2, 41, 19],\n      [4, 40, 14, 2, 41, 15],\n\n      // 9\n      [2, 146, 116],\n      [3, 58, 36, 2, 59, 37],\n      [4, 36, 16, 4, 37, 17],\n      [4, 36, 12, 4, 37, 13],\n\n      // 10\n      [2, 86, 68, 2, 87, 69],\n      [4, 69, 43, 1, 70, 44],\n      [6, 43, 19, 2, 44, 20],\n      [6, 43, 15, 2, 44, 16],\n\n      // 11\n      [4, 101, 81],\n      [1, 80, 50, 4, 81, 51],\n      [4, 50, 22, 4, 51, 23],\n      [3, 36, 12, 8, 37, 13],\n\n      // 12\n      [2, 116, 92, 2, 117, 93],\n      [6, 58, 36, 2, 59, 37],\n      [4, 46, 20, 6, 47, 21],\n      [7, 42, 14, 4, 43, 15],\n\n      // 13\n      [4, 133, 107],\n      [8, 59, 37, 1, 60, 38],\n      [8, 44, 20, 4, 45, 21],\n      [12, 33, 11, 4, 34, 12],\n\n      // 14\n      [3, 145, 115, 1, 146, 116],\n      [4, 64, 40, 5, 65, 41],\n      [11, 36, 16, 5, 37, 17],\n      [11, 36, 12, 5, 37, 13],\n\n      // 15\n      [5, 109, 87, 1, 110, 88],\n      [5, 65, 41, 5, 66, 42],\n      [5, 54, 24, 7, 55, 25],\n      [11, 36, 12, 7, 37, 13],\n\n      // 16\n      [5, 122, 98, 1, 123, 99],\n      [7, 73, 45, 3, 74, 46],\n      [15, 43, 19, 2, 44, 20],\n      [3, 45, 15, 13, 46, 16],\n\n      // 17\n      [1, 135, 107, 5, 136, 108],\n      [10, 74, 46, 1, 75, 47],\n      [1, 50, 22, 15, 51, 23],\n      [2, 42, 14, 17, 43, 15],\n\n      // 18\n      [5, 150, 120, 1, 151, 121],\n      [9, 69, 43, 4, 70, 44],\n      [17, 50, 22, 1, 51, 23],\n      [2, 42, 14, 19, 43, 15],\n\n      // 19\n      [3, 141, 113, 4, 142, 114],\n      [3, 70, 44, 11, 71, 45],\n      [17, 47, 21, 4, 48, 22],\n      [9, 39, 13, 16, 40, 14],\n\n      // 20\n      [3, 135, 107, 5, 136, 108],\n      [3, 67, 41, 13, 68, 42],\n      [15, 54, 24, 5, 55, 25],\n      [15, 43, 15, 10, 44, 16],\n\n      // 21\n      [4, 144, 116, 4, 145, 117],\n      [17, 68, 42],\n      [17, 50, 22, 6, 51, 23],\n      [19, 46, 16, 6, 47, 17],\n\n      // 22\n      [2, 139, 111, 7, 140, 112],\n      [17, 74, 46],\n      [7, 54, 24, 16, 55, 25],\n      [34, 37, 13],\n\n      // 23\n      [4, 151, 121, 5, 152, 122],\n      [4, 75, 47, 14, 76, 48],\n      [11, 54, 24, 14, 55, 25],\n      [16, 45, 15, 14, 46, 16],\n\n      // 24\n      [6, 147, 117, 4, 148, 118],\n      [6, 73, 45, 14, 74, 46],\n      [11, 54, 24, 16, 55, 25],\n      [30, 46, 16, 2, 47, 17],\n\n      // 25\n      [8, 132, 106, 4, 133, 107],\n      [8, 75, 47, 13, 76, 48],\n      [7, 54, 24, 22, 55, 25],\n      [22, 45, 15, 13, 46, 16],\n\n      // 26\n      [10, 142, 114, 2, 143, 115],\n      [19, 74, 46, 4, 75, 47],\n      [28, 50, 22, 6, 51, 23],\n      [33, 46, 16, 4, 47, 17],\n\n      // 27\n      [8, 152, 122, 4, 153, 123],\n      [22, 73, 45, 3, 74, 46],\n      [8, 53, 23, 26, 54, 24],\n      [12, 45, 15, 28, 46, 16],\n\n      // 28\n      [3, 147, 117, 10, 148, 118],\n      [3, 73, 45, 23, 74, 46],\n      [4, 54, 24, 31, 55, 25],\n      [11, 45, 15, 31, 46, 16],\n\n      // 29\n      [7, 146, 116, 7, 147, 117],\n      [21, 73, 45, 7, 74, 46],\n      [1, 53, 23, 37, 54, 24],\n      [19, 45, 15, 26, 46, 16],\n\n      // 30\n      [5, 145, 115, 10, 146, 116],\n      [19, 75, 47, 10, 76, 48],\n      [15, 54, 24, 25, 55, 25],\n      [23, 45, 15, 25, 46, 16],\n\n      // 31\n      [13, 145, 115, 3, 146, 116],\n      [2, 74, 46, 29, 75, 47],\n      [42, 54, 24, 1, 55, 25],\n      [23, 45, 15, 28, 46, 16],\n\n      // 32\n      [17, 145, 115],\n      [10, 74, 46, 23, 75, 47],\n      [10, 54, 24, 35, 55, 25],\n      [19, 45, 15, 35, 46, 16],\n\n      // 33\n      [17, 145, 115, 1, 146, 116],\n      [14, 74, 46, 21, 75, 47],\n      [29, 54, 24, 19, 55, 25],\n      [11, 45, 15, 46, 46, 16],\n\n      // 34\n      [13, 145, 115, 6, 146, 116],\n      [14, 74, 46, 23, 75, 47],\n      [44, 54, 24, 7, 55, 25],\n      [59, 46, 16, 1, 47, 17],\n\n      // 35\n      [12, 151, 121, 7, 152, 122],\n      [12, 75, 47, 26, 76, 48],\n      [39, 54, 24, 14, 55, 25],\n      [22, 45, 15, 41, 46, 16],\n\n      // 36\n      [6, 151, 121, 14, 152, 122],\n      [6, 75, 47, 34, 76, 48],\n      [46, 54, 24, 10, 55, 25],\n      [2, 45, 15, 64, 46, 16],\n\n      // 37\n      [17, 152, 122, 4, 153, 123],\n      [29, 74, 46, 14, 75, 47],\n      [49, 54, 24, 10, 55, 25],\n      [24, 45, 15, 46, 46, 16],\n\n      // 38\n      [4, 152, 122, 18, 153, 123],\n      [13, 74, 46, 32, 75, 47],\n      [48, 54, 24, 14, 55, 25],\n      [42, 45, 15, 32, 46, 16],\n\n      // 39\n      [20, 147, 117, 4, 148, 118],\n      [40, 75, 47, 7, 76, 48],\n      [43, 54, 24, 22, 55, 25],\n      [10, 45, 15, 67, 46, 16],\n\n      // 40\n      [19, 148, 118, 6, 149, 119],\n      [18, 75, 47, 31, 76, 48],\n      [34, 54, 24, 34, 55, 25],\n      [20, 45, 15, 61, 46, 16]\n    ];\n\n    var qrRSBlock = function(totalCount, dataCount) {\n      var _this = {};\n      _this.totalCount = totalCount;\n      _this.dataCount = dataCount;\n      return _this;\n    };\n\n    var _this = {};\n\n    var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n      switch(errorCorrectionLevel) {\n      case QRErrorCorrectionLevel.L :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n      case QRErrorCorrectionLevel.M :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n      case QRErrorCorrectionLevel.Q :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n      case QRErrorCorrectionLevel.H :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n      default :\n        return undefined;\n      }\n    };\n\n    _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n      var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n      if (typeof rsBlock == 'undefined') {\n        throw 'bad rs block @ typeNumber:' + typeNumber +\n            '/errorCorrectionLevel:' + errorCorrectionLevel;\n      }\n\n      var length = rsBlock.length / 3;\n\n      var list = [];\n\n      for (var i = 0; i < length; i += 1) {\n\n        var count = rsBlock[i * 3 + 0];\n        var totalCount = rsBlock[i * 3 + 1];\n        var dataCount = rsBlock[i * 3 + 2];\n\n        for (var j = 0; j < count; j += 1) {\n          list.push(qrRSBlock(totalCount, dataCount) );\n        }\n      }\n\n      return list;\n    };\n\n    return _this;\n  }();\n\n  //---------------------------------------------------------------------\n  // qrBitBuffer\n  //---------------------------------------------------------------------\n\n  var qrBitBuffer = function() {\n\n    var _buffer = [];\n    var _length = 0;\n\n    var _this = {};\n\n    _this.getBuffer = function() {\n      return _buffer;\n    };\n\n    _this.getAt = function(index) {\n      var bufIndex = Math.floor(index / 8);\n      return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n    };\n\n    _this.put = function(num, length) {\n      for (var i = 0; i < length; i += 1) {\n        _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n      }\n    };\n\n    _this.getLengthInBits = function() {\n      return _length;\n    };\n\n    _this.putBit = function(bit) {\n\n      var bufIndex = Math.floor(_length / 8);\n      if (_buffer.length <= bufIndex) {\n        _buffer.push(0);\n      }\n\n      if (bit) {\n        _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n      }\n\n      _length += 1;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrNumber\n  //---------------------------------------------------------------------\n\n  var qrNumber = function(data) {\n\n    var _mode = QRMode.MODE_NUMBER;\n    var _data = data;\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return _data.length;\n    };\n\n    _this.write = function(buffer) {\n\n      var data = _data;\n\n      var i = 0;\n\n      while (i + 2 < data.length) {\n        buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n        i += 3;\n      }\n\n      if (i < data.length) {\n        if (data.length - i == 1) {\n          buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n        } else if (data.length - i == 2) {\n          buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n        }\n      }\n    };\n\n    var strToNum = function(s) {\n      var num = 0;\n      for (var i = 0; i < s.length; i += 1) {\n        num = num * 10 + chatToNum(s.charAt(i) );\n      }\n      return num;\n    };\n\n    var chatToNum = function(c) {\n      if ('0' <= c && c <= '9') {\n        return c.charCodeAt(0) - '0'.charCodeAt(0);\n      }\n      throw 'illegal char :' + c;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrAlphaNum\n  //---------------------------------------------------------------------\n\n  var qrAlphaNum = function(data) {\n\n    var _mode = QRMode.MODE_ALPHA_NUM;\n    var _data = data;\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return _data.length;\n    };\n\n    _this.write = function(buffer) {\n\n      var s = _data;\n\n      var i = 0;\n\n      while (i + 1 < s.length) {\n        buffer.put(\n          getCode(s.charAt(i) ) * 45 +\n          getCode(s.charAt(i + 1) ), 11);\n        i += 2;\n      }\n\n      if (i < s.length) {\n        buffer.put(getCode(s.charAt(i) ), 6);\n      }\n    };\n\n    var getCode = function(c) {\n\n      if ('0' <= c && c <= '9') {\n        return c.charCodeAt(0) - '0'.charCodeAt(0);\n      } else if ('A' <= c && c <= 'Z') {\n        return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n      } else {\n        switch (c) {\n        case ' ' : return 36;\n        case '$' : return 37;\n        case '%' : return 38;\n        case '*' : return 39;\n        case '+' : return 40;\n        case '-' : return 41;\n        case '.' : return 42;\n        case '/' : return 43;\n        case ':' : return 44;\n        default :\n          throw 'illegal char :' + c;\n        }\n      }\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qr8BitByte\n  //---------------------------------------------------------------------\n\n  var qr8BitByte = function(data) {\n\n    var _mode = QRMode.MODE_8BIT_BYTE;\n    var _data = data;\n    var _bytes = qrcode.stringToBytes(data);\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return _bytes.length;\n    };\n\n    _this.write = function(buffer) {\n      for (var i = 0; i < _bytes.length; i += 1) {\n        buffer.put(_bytes[i], 8);\n      }\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrKanji\n  //---------------------------------------------------------------------\n\n  var qrKanji = function(data) {\n\n    var _mode = QRMode.MODE_KANJI;\n    var _data = data;\n\n    var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n    if (!stringToBytes) {\n      throw 'sjis not supported.';\n    }\n    !function(c, code) {\n      // self test for sjis support.\n      var test = stringToBytes(c);\n      if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n        throw 'sjis not supported.';\n      }\n    }('\\u53cb', 0x9746);\n\n    var _bytes = stringToBytes(data);\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return ~~(_bytes.length / 2);\n    };\n\n    _this.write = function(buffer) {\n\n      var data = _bytes;\n\n      var i = 0;\n\n      while (i + 1 < data.length) {\n\n        var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n        if (0x8140 <= c && c <= 0x9FFC) {\n          c -= 0x8140;\n        } else if (0xE040 <= c && c <= 0xEBBF) {\n          c -= 0xC140;\n        } else {\n          throw 'illegal char at ' + (i + 1) + '/' + c;\n        }\n\n        c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n        buffer.put(c, 13);\n\n        i += 2;\n      }\n\n      if (i < data.length) {\n        throw 'illegal char at ' + (i + 1);\n      }\n    };\n\n    return _this;\n  };\n\n  //=====================================================================\n  // GIF Support etc.\n  //\n\n  //---------------------------------------------------------------------\n  // byteArrayOutputStream\n  //---------------------------------------------------------------------\n\n  var byteArrayOutputStream = function() {\n\n    var _bytes = [];\n\n    var _this = {};\n\n    _this.writeByte = function(b) {\n      _bytes.push(b & 0xff);\n    };\n\n    _this.writeShort = function(i) {\n      _this.writeByte(i);\n      _this.writeByte(i >>> 8);\n    };\n\n    _this.writeBytes = function(b, off, len) {\n      off = off || 0;\n      len = len || b.length;\n      for (var i = 0; i < len; i += 1) {\n        _this.writeByte(b[i + off]);\n      }\n    };\n\n    _this.writeString = function(s) {\n      for (var i = 0; i < s.length; i += 1) {\n        _this.writeByte(s.charCodeAt(i) );\n      }\n    };\n\n    _this.toByteArray = function() {\n      return _bytes;\n    };\n\n    _this.toString = function() {\n      var s = '';\n      s += '[';\n      for (var i = 0; i < _bytes.length; i += 1) {\n        if (i > 0) {\n          s += ',';\n        }\n        s += _bytes[i];\n      }\n      s += ']';\n      return s;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // base64EncodeOutputStream\n  //---------------------------------------------------------------------\n\n  var base64EncodeOutputStream = function() {\n\n    var _buffer = 0;\n    var _buflen = 0;\n    var _length = 0;\n    var _base64 = '';\n\n    var _this = {};\n\n    var writeEncoded = function(b) {\n      _base64 += String.fromCharCode(encode(b & 0x3f) );\n    };\n\n    var encode = function(n) {\n      if (n < 0) {\n        // error.\n      } else if (n < 26) {\n        return 0x41 + n;\n      } else if (n < 52) {\n        return 0x61 + (n - 26);\n      } else if (n < 62) {\n        return 0x30 + (n - 52);\n      } else if (n == 62) {\n        return 0x2b;\n      } else if (n == 63) {\n        return 0x2f;\n      }\n      throw 'n:' + n;\n    };\n\n    _this.writeByte = function(n) {\n\n      _buffer = (_buffer << 8) | (n & 0xff);\n      _buflen += 8;\n      _length += 1;\n\n      while (_buflen >= 6) {\n        writeEncoded(_buffer >>> (_buflen - 6) );\n        _buflen -= 6;\n      }\n    };\n\n    _this.flush = function() {\n\n      if (_buflen > 0) {\n        writeEncoded(_buffer << (6 - _buflen) );\n        _buffer = 0;\n        _buflen = 0;\n      }\n\n      if (_length % 3 != 0) {\n        // padding\n        var padlen = 3 - _length % 3;\n        for (var i = 0; i < padlen; i += 1) {\n          _base64 += '=';\n        }\n      }\n    };\n\n    _this.toString = function() {\n      return _base64;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // base64DecodeInputStream\n  //---------------------------------------------------------------------\n\n  var base64DecodeInputStream = function(str) {\n\n    var _str = str;\n    var _pos = 0;\n    var _buffer = 0;\n    var _buflen = 0;\n\n    var _this = {};\n\n    _this.read = function() {\n\n      while (_buflen < 8) {\n\n        if (_pos >= _str.length) {\n          if (_buflen == 0) {\n            return -1;\n          }\n          throw 'unexpected end of file./' + _buflen;\n        }\n\n        var c = _str.charAt(_pos);\n        _pos += 1;\n\n        if (c == '=') {\n          _buflen = 0;\n          return -1;\n        } else if (c.match(/^\\s$/) ) {\n          // ignore if whitespace.\n          continue;\n        }\n\n        _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n        _buflen += 6;\n      }\n\n      var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n      _buflen -= 8;\n      return n;\n    };\n\n    var decode = function(c) {\n      if (0x41 <= c && c <= 0x5a) {\n        return c - 0x41;\n      } else if (0x61 <= c && c <= 0x7a) {\n        return c - 0x61 + 26;\n      } else if (0x30 <= c && c <= 0x39) {\n        return c - 0x30 + 52;\n      } else if (c == 0x2b) {\n        return 62;\n      } else if (c == 0x2f) {\n        return 63;\n      } else {\n        throw 'c:' + c;\n      }\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // gifImage (B/W)\n  //---------------------------------------------------------------------\n\n  var gifImage = function(width, height) {\n\n    var _width = width;\n    var _height = height;\n    var _data = new Array(width * height);\n\n    var _this = {};\n\n    _this.setPixel = function(x, y, pixel) {\n      _data[y * _width + x] = pixel;\n    };\n\n    _this.write = function(out) {\n\n      //---------------------------------\n      // GIF Signature\n\n      out.writeString('GIF87a');\n\n      //---------------------------------\n      // Screen Descriptor\n\n      out.writeShort(_width);\n      out.writeShort(_height);\n\n      out.writeByte(0x80); // 2bit\n      out.writeByte(0);\n      out.writeByte(0);\n\n      //---------------------------------\n      // Global Color Map\n\n      // black\n      out.writeByte(0x00);\n      out.writeByte(0x00);\n      out.writeByte(0x00);\n\n      // white\n      out.writeByte(0xff);\n      out.writeByte(0xff);\n      out.writeByte(0xff);\n\n      //---------------------------------\n      // Image Descriptor\n\n      out.writeString(',');\n      out.writeShort(0);\n      out.writeShort(0);\n      out.writeShort(_width);\n      out.writeShort(_height);\n      out.writeByte(0);\n\n      //---------------------------------\n      // Local Color Map\n\n      //---------------------------------\n      // Raster Data\n\n      var lzwMinCodeSize = 2;\n      var raster = getLZWRaster(lzwMinCodeSize);\n\n      out.writeByte(lzwMinCodeSize);\n\n      var offset = 0;\n\n      while (raster.length - offset > 255) {\n        out.writeByte(255);\n        out.writeBytes(raster, offset, 255);\n        offset += 255;\n      }\n\n      out.writeByte(raster.length - offset);\n      out.writeBytes(raster, offset, raster.length - offset);\n      out.writeByte(0x00);\n\n      //---------------------------------\n      // GIF Terminator\n      out.writeString(';');\n    };\n\n    var bitOutputStream = function(out) {\n\n      var _out = out;\n      var _bitLength = 0;\n      var _bitBuffer = 0;\n\n      var _this = {};\n\n      _this.write = function(data, length) {\n\n        if ( (data >>> length) != 0) {\n          throw 'length over';\n        }\n\n        while (_bitLength + length >= 8) {\n          _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n          length -= (8 - _bitLength);\n          data >>>= (8 - _bitLength);\n          _bitBuffer = 0;\n          _bitLength = 0;\n        }\n\n        _bitBuffer = (data << _bitLength) | _bitBuffer;\n        _bitLength = _bitLength + length;\n      };\n\n      _this.flush = function() {\n        if (_bitLength > 0) {\n          _out.writeByte(_bitBuffer);\n        }\n      };\n\n      return _this;\n    };\n\n    var getLZWRaster = function(lzwMinCodeSize) {\n\n      var clearCode = 1 << lzwMinCodeSize;\n      var endCode = (1 << lzwMinCodeSize) + 1;\n      var bitLength = lzwMinCodeSize + 1;\n\n      // Setup LZWTable\n      var table = lzwTable();\n\n      for (var i = 0; i < clearCode; i += 1) {\n        table.add(String.fromCharCode(i) );\n      }\n      table.add(String.fromCharCode(clearCode) );\n      table.add(String.fromCharCode(endCode) );\n\n      var byteOut = byteArrayOutputStream();\n      var bitOut = bitOutputStream(byteOut);\n\n      // clear code\n      bitOut.write(clearCode, bitLength);\n\n      var dataIndex = 0;\n\n      var s = String.fromCharCode(_data[dataIndex]);\n      dataIndex += 1;\n\n      while (dataIndex < _data.length) {\n\n        var c = String.fromCharCode(_data[dataIndex]);\n        dataIndex += 1;\n\n        if (table.contains(s + c) ) {\n\n          s = s + c;\n\n        } else {\n\n          bitOut.write(table.indexOf(s), bitLength);\n\n          if (table.size() < 0xfff) {\n\n            if (table.size() == (1 << bitLength) ) {\n              bitLength += 1;\n            }\n\n            table.add(s + c);\n          }\n\n          s = c;\n        }\n      }\n\n      bitOut.write(table.indexOf(s), bitLength);\n\n      // end code\n      bitOut.write(endCode, bitLength);\n\n      bitOut.flush();\n\n      return byteOut.toByteArray();\n    };\n\n    var lzwTable = function() {\n\n      var _map = {};\n      var _size = 0;\n\n      var _this = {};\n\n      _this.add = function(key) {\n        if (_this.contains(key) ) {\n          throw 'dup key:' + key;\n        }\n        _map[key] = _size;\n        _size += 1;\n      };\n\n      _this.size = function() {\n        return _size;\n      };\n\n      _this.indexOf = function(key) {\n        return _map[key];\n      };\n\n      _this.contains = function(key) {\n        return typeof _map[key] != 'undefined';\n      };\n\n      return _this;\n    };\n\n    return _this;\n  };\n\n  var createDataURL = function(width, height, getPixel) {\n    var gif = gifImage(width, height);\n    for (var y = 0; y < height; y += 1) {\n      for (var x = 0; x < width; x += 1) {\n        gif.setPixel(x, y, getPixel(x, y) );\n      }\n    }\n\n    var b = byteArrayOutputStream();\n    gif.write(b);\n\n    var base64 = base64EncodeOutputStream();\n    var bytes = b.toByteArray();\n    for (var i = 0; i < bytes.length; i += 1) {\n      base64.writeByte(bytes[i]);\n    }\n    base64.flush();\n\n    return 'data:image/gif;base64,' + base64;\n  };\n\n  //---------------------------------------------------------------------\n  // returns qrcode function.\n\n  return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n  qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n    // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n    function toUTF8Array(str) {\n      var utf8 = [];\n      for (var i=0; i < str.length; i++) {\n        var charcode = str.charCodeAt(i);\n        if (charcode < 0x80) utf8.push(charcode);\n        else if (charcode < 0x800) {\n          utf8.push(0xc0 | (charcode >> 6),\n              0x80 | (charcode & 0x3f));\n        }\n        else if (charcode < 0xd800 || charcode >= 0xe000) {\n          utf8.push(0xe0 | (charcode >> 12),\n              0x80 | ((charcode>>6) & 0x3f),\n              0x80 | (charcode & 0x3f));\n        }\n        // surrogate pair\n        else {\n          i++;\n          // UTF-16 encodes 0x10000-0x10FFFF by\n          // subtracting 0x10000 and splitting the\n          // 20 bits of 0x0-0xFFFFF into two halves\n          charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n            | (str.charCodeAt(i) & 0x3ff));\n          utf8.push(0xf0 | (charcode >>18),\n              0x80 | ((charcode>>12) & 0x3f),\n              0x80 | ((charcode>>6) & 0x3f),\n              0x80 | (charcode & 0x3f));\n        }\n      }\n      return utf8;\n    }\n    return toUTF8Array(s);\n  };\n\n}();\n\n(function (factory) {\n  if (true) {\n      !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  } else {}\n}(function () {\n    return qrcode;\n}));\n\n\n/***/ })\n/******/ ]);\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/jquery.initialize/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015-2016 Adam Pietrasiak\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/jquery.initialize/jquery.initialize.js",
    "content": "/*!\n * https://github.com/adampietrasiak/jquery.initialize\n *\n * Copyright (c) 2015-2016 Adam Pietrasiak\n * Released under the MIT license\n * https://github.com/timpler/jquery.initialize/blob/master/LICENSE\n *\n * This is based on MutationObserver\n * https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver\n */\n;(function ($) {\n\n    \"use strict\";\n\n    var combinators = [' ', '>', '+', '~']; // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors#Combinators\n    var fraternisers = ['+', '~']; // These combinators involve siblings.\n    var complexTypes = ['ATTR', 'PSEUDO', 'ID', 'CLASS']; // These selectors are based upon attributes.\n\n    //Check if browser supports \"matches\" function\n    if (!Element.prototype.matches) {\n        Element.prototype.matches = Element.prototype.matchesSelector ||\n            Element.prototype.webkitMatchesSelector ||\n            Element.prototype.mozMatchesSelector ||\n            Element.prototype.msMatchesSelector;\n    }\n\n    // Understand what kind of selector the initializer is based upon.\n    function grok(msobserver) {\n        if (!$.find.tokenize) {\n            // This is an old version of jQuery, so cannot parse the selector.\n            // Therefore we must assume the worst case scenario. That is, that\n            // this is a complicated selector. This feature was available in:\n            // https://github.com/jquery/sizzle/issues/242\n            msobserver.isCombinatorial = true;\n            msobserver.isFraternal = true;\n            msobserver.isComplex = true;\n            return;\n        }\n\n        // Parse the selector.\n        msobserver.isCombinatorial = false;\n        msobserver.isFraternal = false;\n        msobserver.isComplex = false;\n        var token = $.find.tokenize(msobserver.selector);\n        for (var i = 0; i < token.length; i++) {\n            for (var j = 0; j < token[i].length; j++) {\n                if (combinators.indexOf(token[i][j].type) != -1)\n                    msobserver.isCombinatorial = true; // This selector uses combinators.\n\n                if (fraternisers.indexOf(token[i][j].type) != -1)\n                    msobserver.isFraternal = true; // This selector uses sibling combinators.\n\n                if (complexTypes.indexOf(token[i][j].type) != -1)\n                    msobserver.isComplex = true; // This selector is based on attributes.\n            }\n        }\n    }\n\n    // MutationSelectorObserver represents a selector and it's associated initialization callback.\n    var MutationSelectorObserver = function (selector, callback, options) {\n        this.selector = selector.trim();\n        this.callback = callback;\n        this.options = options;\n\n        grok(this);\n    };\n\n    // List of MutationSelectorObservers.\n    var msobservers = [];\n    msobservers.initialize = function (selector, callback, options) {\n\n        // Wrap the callback so that we can ensure that it is only\n        // called once per element.\n        var seen = [];\n        var callbackOnce = function () {\n            if (seen.indexOf(this) == -1) {\n                seen.push(this);\n                $(this).each(callback);\n            }\n        };\n\n        // See if the selector matches any elements already on the page.\n        $(options.target).find(selector).each(callbackOnce);\n\n        // Then, add it to the list of selector observers.\n        var msobserver = new MutationSelectorObserver(selector, callbackOnce, options)\n        this.push(msobserver);\n\n        // The MutationObserver watches for when new elements are added to the DOM.\n        var observer = new MutationObserver(function (mutations) {\n            var matches = [];\n\n            // For each mutation.\n            for (var m = 0; m < mutations.length; m++) {\n\n                // If this is an attributes mutation, then the target is the node upon which the mutation occurred.\n                if (mutations[m].type == 'attributes') {\n                    // Check if the mutated node matchs.\n                    if (mutations[m].target.matches(msobserver.selector))\n                        matches.push(mutations[m].target);\n\n                    // If the selector is fraternal, query siblings of the mutated node for matches.\n                    if (msobserver.isFraternal)\n                        matches.push.apply(matches, mutations[m].target.parentElement.querySelectorAll(msobserver.selector));\n                    else\n                        matches.push.apply(matches, mutations[m].target.querySelectorAll(msobserver.selector));\n                }\n\n                // If this is an childList mutation, then inspect added nodes.\n                if (mutations[m].type == 'childList') {\n                    // Search added nodes for matching selectors.\n                    for (var n = 0; n < mutations[m].addedNodes.length; n++) {\n                        if (!(mutations[m].addedNodes[n] instanceof Element)) continue;\n\n                        // Check if the added node matches the selector\n                        if (mutations[m].addedNodes[n].matches(msobserver.selector))\n                            matches.push(mutations[m].addedNodes[n]);\n\n                        // If the selector is fraternal, query siblings for matches.\n                        if (msobserver.isFraternal)\n                            matches.push.apply(matches, mutations[m].addedNodes[n].parentElement.querySelectorAll(msobserver.selector));\n                        else\n                            matches.push.apply(matches, mutations[m].addedNodes[n].querySelectorAll(msobserver.selector));\n                    }\n                }\n            }\n\n            // For each match, call the callback using jQuery.each() to initialize the element (once only.)\n            for (var i = 0; i < matches.length; i++) {\n                $(matches[i]).each(msobserver.callback);\n            }\n        });\n\n        // Observe the target element.\n        var defaultObeserverOpts = { childList: true, subtree: true, attributes: msobserver.isComplex };\n        observer.observe(options.target, options.observer || defaultObeserverOpts );\n\n        return observer;\n    };\n\n    // Deprecated API (does not work with jQuery >= 3.1.1):\n    $.fn.initialize = function (callback, options) {\n        return msobservers.initialize(this.selector, callback, $.extend({}, $.initialize.defaults, options));\n    };\n\n    // Supported API\n    $.initialize = function (selector, callback, options) {\n        return msobservers.initialize(selector, callback, $.extend({}, $.initialize.defaults, options));\n    };\n\n    // Options\n    $.initialize.defaults = {\n        target: document.documentElement, // Defaults to observe the entire document.\n        observer: null // MutationObserverInit: Defaults to internal configuration if not provided.\n    }\n\n})(jQuery);"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/jstree-theme/jstree.js",
    "content": "/*globals jQuery, define, exports, require, window, document */\n(function (factory) {\n\t\"use strict\";\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(['jquery'], factory);\n\t}\n\telse if(typeof exports === 'object') {\n\t\tfactory(require('jquery'));\n\t}\n\telse {\n\t\tfactory(jQuery);\n\t}\n}(function ($, undefined) {\n\t\"use strict\";\n/*!\n * jsTree 3.0.4\n * http://jstree.com/\n *\n * Copyright (c) 2014 Ivan Bozhanov (http://vakata.com)\n *\n * Licensed same as jquery - under the terms of the MIT License\n *   http://www.opensource.org/licenses/mit-license.php\n */\n/*!\n * if using jslint please allow for the jQuery global and use following options: \n * jslint: browser: true, ass: true, bitwise: true, continue: true, nomen: true, plusplus: true, regexp: true, unparam: true, todo: true, white: true\n */\n\n\t// prevent another load? maybe there is a better way?\n\tif($.jstree) {\n\t\treturn;\n\t}\n\n\t/**\n\t * ### jsTree core functionality\n\t */\n\n\t// internal variables\n\tvar instance_counter = 0,\n\t\tccp_node = false,\n\t\tccp_mode = false,\n\t\tccp_inst = false,\n\t\tthemes_loaded = [],\n\t\tsrc = $('script:last').attr('src'),\n\t\t_d = document, _node = _d.createElement('LI'), _temp1, _temp2;\n\n\t_node.setAttribute('role', 'treeitem');\n\t_temp1 = _d.createElement('I');\n\t_temp1.className = 'jstree-icon jstree-ocl';\n\t_node.appendChild(_temp1);\n\t_temp1 = _d.createElement('A');\n\t_temp1.className = 'jstree-anchor';\n\t_temp1.setAttribute('href','#');\n\t_temp2 = _d.createElement('I');\n\t_temp2.className = 'jstree-icon jstree-themeicon';\n\t_temp1.appendChild(_temp2);\n\t_node.appendChild(_temp1);\n\t_temp1 = _temp2 = null;\n\n\n\t/**\n\t * holds all jstree related functions and variables, including the actual class and methods to create, access and manipulate instances.\n\t * @name $.jstree\n\t */\n\t$.jstree = {\n\t\t/** \n\t\t * specifies the jstree version in use\n\t\t * @name $.jstree.version\n\t\t */\n\t\tversion : '3.0.4',\n\t\t/**\n\t\t * holds all the default options used when creating new instances\n\t\t * @name $.jstree.defaults\n\t\t */\n\t\tdefaults : {\n\t\t\t/**\n\t\t\t * configure which plugins will be active on an instance. Should be an array of strings, where each element is a plugin name. The default is `[]`\n\t\t\t * @name $.jstree.defaults.plugins\n\t\t\t */\n\t\t\tplugins : []\n\t\t},\n\t\t/**\n\t\t * stores all loaded jstree plugins (used internally)\n\t\t * @name $.jstree.plugins\n\t\t */\n\t\tplugins : {},\n\t\tpath : src && src.indexOf('/') !== -1 ? src.replace(/\\/[^\\/]+$/,'') : '',\n\t\tidregex : /[\\\\:&!^|()\\[\\]<>@*'+~#\";.,=\\- \\/${}%]/g\n\t};\n\t/**\n\t * creates a jstree instance\n\t * @name $.jstree.create(el [, options])\n\t * @param {DOMElement|jQuery|String} el the element to create the instance on, can be jQuery extended or a selector\n\t * @param {Object} options options for this instance (extends `$.jstree.defaults`)\n\t * @return {jsTree} the new instance\n\t */\n\t$.jstree.create = function (el, options) {\n\t\tvar tmp = new $.jstree.core(++instance_counter),\n\t\t\topt = options;\n\t\toptions = $.extend(true, {}, $.jstree.defaults, options);\n\t\tif(opt && opt.plugins) {\n\t\t\toptions.plugins = opt.plugins;\n\t\t}\n\t\t$.each(options.plugins, function (i, k) {\n\t\t\tif(i !== 'core') {\n\t\t\t\ttmp = tmp.plugin(k, options[k]);\n\t\t\t}\n\t\t});\n\t\ttmp.init(el, options);\n\t\treturn tmp;\n\t};\n\t/**\n\t * remove all traces of jstree from the DOM and destroy all instances\n\t * @name $.jstree.destroy()\n\t */\n\t$.jstree.destroy = function () {\n\t\t$('.jstree:jstree').jstree('destroy');\n\t\t$(document).off('.jstree');\n\t};\n\t/**\n\t * the jstree class constructor, used only internally\n\t * @private\n\t * @name $.jstree.core(id)\n\t * @param {Number} id this instance's index\n\t */\n\t$.jstree.core = function (id) {\n\t\tthis._id = id;\n\t\tthis._cnt = 0;\n\t\tthis._wrk = null;\n\t\tthis._data = {\n\t\t\tcore : {\n\t\t\t\tthemes : {\n\t\t\t\t\tname : false,\n\t\t\t\t\tdots : false,\n\t\t\t\t\ticons : false\n\t\t\t\t},\n\t\t\t\tselected : [],\n\t\t\t\tlast_error : {},\n\t\t\t\tworking : false,\n\t\t\t\tworker_queue : [],\n\t\t\t\tfocused : null\n\t\t\t}\n\t\t};\n\t};\n\t/**\n\t * get a reference to an existing instance\n\t *\n\t * __Examples__\n\t *\n\t *\t// provided a container with an ID of \"tree\", and a nested node with an ID of \"branch\"\n\t *\t// all of there will return the same instance\n\t *\t$.jstree.reference('tree');\n\t *\t$.jstree.reference('#tree');\n\t *\t$.jstree.reference($('#tree'));\n\t *\t$.jstree.reference(document.getElementByID('tree'));\n\t *\t$.jstree.reference('branch');\n\t *\t$.jstree.reference('#branch');\n\t *\t$.jstree.reference($('#branch'));\n\t *\t$.jstree.reference(document.getElementByID('branch'));\n\t *\n\t * @name $.jstree.reference(needle)\n\t * @param {DOMElement|jQuery|String} needle\n\t * @return {jsTree|null} the instance or `null` if not found\n\t */\n\t$.jstree.reference = function (needle) {\n\t\tvar tmp = null,\n\t\t\tobj = null;\n\t\tif(needle && needle.id) { needle = needle.id; }\n\n\t\tif(!obj || !obj.length) {\n\t\t\ttry { obj = $(needle); } catch (ignore) { }\n\t\t}\n\t\tif(!obj || !obj.length) {\n\t\t\ttry { obj = $('#' + needle.replace($.jstree.idregex,'\\\\$&')); } catch (ignore) { }\n\t\t}\n\t\tif(obj && obj.length && (obj = obj.closest('.jstree')).length && (obj = obj.data('jstree'))) {\n\t\t\ttmp = obj;\n\t\t}\n\t\telse {\n\t\t\t$('.jstree').each(function () {\n\t\t\t\tvar inst = $(this).data('jstree');\n\t\t\t\tif(inst && inst._model.data[needle]) {\n\t\t\t\t\ttmp = inst;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn tmp;\n\t};\n\t/**\n\t * Create an instance, get an instance or invoke a command on a instance. \n\t * \n\t * If there is no instance associated with the current node a new one is created and `arg` is used to extend `$.jstree.defaults` for this new instance. There would be no return value (chaining is not broken).\n\t * \n\t * If there is an existing instance and `arg` is a string the command specified by `arg` is executed on the instance, with any additional arguments passed to the function. If the function returns a value it will be returned (chaining could break depending on function).\n\t * \n\t * If there is an existing instance and `arg` is not a string the instance itself is returned (similar to `$.jstree.reference`).\n\t * \n\t * In any other case - nothing is returned and chaining is not broken.\n\t *\n\t * __Examples__\n\t *\n\t *\t$('#tree1').jstree(); // creates an instance\n\t *\t$('#tree2').jstree({ plugins : [] }); // create an instance with some options\n\t *\t$('#tree1').jstree('open_node', '#branch_1'); // call a method on an existing instance, passing additional arguments\n\t *\t$('#tree2').jstree(); // get an existing instance (or create an instance)\n\t *\t$('#tree2').jstree(true); // get an existing instance (will not create new instance)\n\t *\t$('#branch_1').jstree().select_node('#branch_1'); // get an instance (using a nested element and call a method)\n\t *\n\t * @name $().jstree([arg])\n\t * @param {String|Object} arg\n\t * @return {Mixed}\n\t */\n\t$.fn.jstree = function (arg) {\n\t\t// check for string argument\n\t\tvar is_method\t= (typeof arg === 'string'),\n\t\t\targs\t\t= Array.prototype.slice.call(arguments, 1),\n\t\t\tresult\t\t= null;\n\t\tthis.each(function () {\n\t\t\t// get the instance (if there is one) and method (if it exists)\n\t\t\tvar instance = $.jstree.reference(this),\n\t\t\t\tmethod = is_method && instance ? instance[arg] : null;\n\t\t\t// if calling a method, and method is available - execute on the instance\n\t\t\tresult = is_method && method ?\n\t\t\t\tmethod.apply(instance, args) :\n\t\t\t\tnull;\n\t\t\t// if there is no instance and no method is being called - create one\n\t\t\tif(!instance && !is_method && (arg === undefined || $.isPlainObject(arg))) {\n\t\t\t\t$(this).data('jstree', new $.jstree.create(this, arg));\n\t\t\t}\n\t\t\t// if there is an instance and no method is called - return the instance\n\t\t\tif( (instance && !is_method) || arg === true ) {\n\t\t\t\tresult = instance || false;\n\t\t\t}\n\t\t\t// if there was a method call which returned a result - break and return the value\n\t\t\tif(result !== null && result !== undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\t// if there was a method call with a valid return value - return that, otherwise continue the chain\n\t\treturn result !== null && result !== undefined ?\n\t\t\tresult : this;\n\t};\n\t/**\n\t * used to find elements containing an instance\n\t *\n\t * __Examples__\n\t *\n\t *\t$('div:jstree').each(function () {\n\t *\t\t$(this).jstree('destroy');\n\t *\t});\n\t *\n\t * @name $(':jstree')\n\t * @return {jQuery}\n\t */\n\t$.expr[':'].jstree = $.expr.createPseudo(function(search) {\n\t\treturn function(a) {\n\t\t\treturn $(a).hasClass('jstree') &&\n\t\t\t\t$(a).data('jstree') !== undefined;\n\t\t};\n\t});\n\n\t/**\n\t * stores all defaults for the core\n\t * @name $.jstree.defaults.core\n\t */\n\t$.jstree.defaults.core = {\n\t\t/**\n\t\t * data configuration\n\t\t * \n\t\t * If left as `false` the HTML inside the jstree container element is used to populate the tree (that should be an unordered list with list items).\n\t\t *\n\t\t * You can also pass in a HTML string or a JSON array here.\n\t\t * \n\t\t * It is possible to pass in a standard jQuery-like AJAX config and jstree will automatically determine if the response is JSON or HTML and use that to populate the tree. \n\t\t * In addition to the standard jQuery ajax options here you can suppy functions for `data` and `url`, the functions will be run in the current instance's scope and a param will be passed indicating which node is being loaded, the return value of those functions will be used.\n\t\t * \n\t\t * The last option is to specify a function, that function will receive the node being loaded as argument and a second param which is a function which should be called with the result.\n\t\t *\n\t\t * __Examples__\n\t\t *\n\t\t *\t// AJAX\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'data' : {\n\t\t *\t\t\t\t'url' : '/get/children/',\n\t\t *\t\t\t\t'data' : function (node) {\n\t\t *\t\t\t\t\treturn { 'id' : node.id };\n\t\t *\t\t\t\t}\n\t\t *\t\t\t}\n\t\t *\t\t});\n\t\t *\n\t\t *\t// direct data\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'data' : [\n\t\t *\t\t\t\t'Simple root node',\n\t\t *\t\t\t\t{\n\t\t *\t\t\t\t\t'id' : 'node_2',\n\t\t *\t\t\t\t\t'text' : 'Root node with options',\n\t\t *\t\t\t\t\t'state' : { 'opened' : true, 'selected' : true },\n\t\t *\t\t\t\t\t'children' : [ { 'text' : 'Child 1' }, 'Child 2']\n\t\t *\t\t\t\t}\n\t\t *\t\t\t]\n\t\t *\t\t});\n\t\t *\t\n\t\t *\t// function\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'data' : function (obj, callback) {\n\t\t *\t\t\t\tcallback.call(this, ['Root 1', 'Root 2']);\n\t\t *\t\t\t}\n\t\t *\t\t});\n\t\t * \n\t\t * @name $.jstree.defaults.core.data\n\t\t */\n\t\tdata\t\t\t: false,\n\t\t/**\n\t\t * configure the various strings used throughout the tree\n\t\t *\n\t\t * You can use an object where the key is the string you need to replace and the value is your replacement.\n\t\t * Another option is to specify a function which will be called with an argument of the needed string and should return the replacement.\n\t\t * If left as `false` no replacement is made.\n\t\t *\n\t\t * __Examples__\n\t\t *\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'strings' : {\n\t\t *\t\t\t\t'Loading ...' : 'Please wait ...'\n\t\t *\t\t\t}\n\t\t *\t\t}\n\t\t *\t});\n\t\t *\n\t\t * @name $.jstree.defaults.core.strings\n\t\t */\n\t\tstrings\t\t\t: false,\n\t\t/**\n\t\t * determines what happens when a user tries to modify the structure of the tree\n\t\t * If left as `false` all operations like create, rename, delete, move or copy are prevented.\n\t\t * You can set this to `true` to allow all interactions or use a function to have better control.\n\t\t *\n\t\t * __Examples__\n\t\t *\n\t\t *\t$('#tree').jstree({\n\t\t *\t\t'core' : {\n\t\t *\t\t\t'check_callback' : function (operation, node, node_parent, node_position, more) {\n\t\t *\t\t\t\t// operation can be 'create_node', 'rename_node', 'delete_node', 'move_node' or 'copy_node'\n\t\t *\t\t\t\t// in case of 'rename_node' node_position is filled with the new node name\n\t\t *\t\t\t\treturn operation === 'rename_node' ? true : false;\n\t\t *\t\t\t}\n\t\t *\t\t}\n\t\t *\t});\n\t\t * \n\t\t * @name $.jstree.defaults.core.check_callback\n\t\t */\n\t\tcheck_callback\t: false,\n\t\t/**\n\t\t * a callback called with a single object parameter in the instance's scope when something goes wrong (operation prevented, ajax failed, etc)\n\t\t * @name $.jstree.defaults.core.error\n\t\t */\n\t\terror\t\t\t: $.noop,\n\t\t/**\n\t\t * the open / close animation duration in milliseconds - set this to `false` to disable the animation (default is `200`)\n\t\t * @name $.jstree.defaults.core.animation\n\t\t */\n\t\tanimation\t\t: 200,\n\t\t/**\n\t\t * a boolean indicating if multiple nodes can be selected\n\t\t * @name $.jstree.defaults.core.multiple\n\t\t */\n\t\tmultiple\t\t: true,\n\t\t/**\n\t\t * theme configuration object\n\t\t * @name $.jstree.defaults.core.themes\n\t\t */\n\t\tthemes\t\t\t: {\n\t\t\t/**\n\t\t\t * the name of the theme to use (if left as `false` the default theme is used)\n\t\t\t * @name $.jstree.defaults.core.themes.name\n\t\t\t */\n\t\t\tname\t\t\t: false,\n\t\t\t/**\n\t\t\t * the URL of the theme's CSS file, leave this as `false` if you have manually included the theme CSS (recommended). You can set this to `true` too which will try to autoload the theme.\n\t\t\t * @name $.jstree.defaults.core.themes.url\n\t\t\t */\n\t\t\turl\t\t\t\t: false,\n\t\t\t/**\n\t\t\t * the location of all jstree themes - only used if `url` is set to `true`\n\t\t\t * @name $.jstree.defaults.core.themes.dir\n\t\t\t */\n\t\t\tdir\t\t\t\t: false,\n\t\t\t/**\n\t\t\t * a boolean indicating if connecting dots are shown\n\t\t\t * @name $.jstree.defaults.core.themes.dots\n\t\t\t */\n\t\t\tdots\t\t\t: true,\n\t\t\t/**\n\t\t\t * a boolean indicating if node icons are shown\n\t\t\t * @name $.jstree.defaults.core.themes.icons\n\t\t\t */\n\t\t\ticons\t\t\t: true,\n\t\t\t/**\n\t\t\t * a boolean indicating if the tree background is striped\n\t\t\t * @name $.jstree.defaults.core.themes.stripes\n\t\t\t */\n\t\t\tstripes\t\t\t: false,\n\t\t\t/**\n\t\t\t * a string (or boolean `false`) specifying the theme variant to use (if the theme supports variants)\n\t\t\t * @name $.jstree.defaults.core.themes.variant\n\t\t\t */\n\t\t\tvariant\t\t\t: false,\n\t\t\t/**\n\t\t\t * a boolean specifying if a reponsive version of the theme should kick in on smaller screens (if the theme supports it). Defaults to `false`.\n\t\t\t * @name $.jstree.defaults.core.themes.responsive\n\t\t\t */\n\t\t\tresponsive\t\t: false\n\t\t},\n\t\t/**\n\t\t * if left as `true` all parents of all selected nodes will be opened once the tree loads (so that all selected nodes are visible to the user)\n\t\t * @name $.jstree.defaults.core.expand_selected_onload\n\t\t */\n\t\texpand_selected_onload : true,\n\t\t/**\n\t\t * if left as `true` web workers will be used to parse incoming JSON data where possible, so that the UI will not be blocked by large requests. Workers are however about 30% slower. Defaults to `true`\n\t\t * @name $.jstree.defaults.core.worker\n\t\t */\n\t\tworker : true,\n\t\t/**\n\t\t * Force node text to plain text (and escape HTML). Defaults to `false`\n\t\t * @name $.jstree.defaults.core.force_text\n\t\t */\n\t\tforce_text : false\n\t};\n\t$.jstree.core.prototype = {\n\t\t/**\n\t\t * used to decorate an instance with a plugin. Used internally.\n\t\t * @private\n\t\t * @name plugin(deco [, opts])\n\t\t * @param  {String} deco the plugin to decorate with\n\t\t * @param  {Object} opts options for the plugin\n\t\t * @return {jsTree}\n\t\t */\n\t\tplugin : function (deco, opts) {\n\t\t\tvar Child = $.jstree.plugins[deco];\n\t\t\tif(Child) {\n\t\t\t\tthis._data[deco] = {};\n\t\t\t\tChild.prototype = this;\n\t\t\t\treturn new Child(opts, this);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t/**\n\t\t * used to decorate an instance with a plugin. Used internally.\n\t\t * @private\n\t\t * @name init(el, optons)\n\t\t * @param {DOMElement|jQuery|String} el the element we are transforming\n\t\t * @param {Object} options options for this instance\n\t\t * @trigger init.jstree, loading.jstree, loaded.jstree, ready.jstree, changed.jstree\n\t\t */\n\t\tinit : function (el, options) {\n\t\t\tthis._model = {\n\t\t\t\tdata : {\n\t\t\t\t\t'#' : {\n\t\t\t\t\t\tid : '#',\n\t\t\t\t\t\tparent : null,\n\t\t\t\t\t\tparents : [],\n\t\t\t\t\t\tchildren : [],\n\t\t\t\t\t\tchildren_d : [],\n\t\t\t\t\t\tstate : { loaded : false }\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tchanged : [],\n\t\t\t\tforce_full_redraw : false,\n\t\t\t\tredraw_timeout : false,\n\t\t\t\tdefault_state : {\n\t\t\t\t\tloaded : true,\n\t\t\t\t\topened : false,\n\t\t\t\t\tselected : false,\n\t\t\t\t\tdisabled : false\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.element = $(el).addClass('jstree jstree-' + this._id);\n\t\t\tthis.settings = options;\n\t\t\tthis.element.bind(\"destroyed\", $.proxy(this.teardown, this));\n\n\t\t\tthis._data.core.ready = false;\n\t\t\tthis._data.core.loaded = false;\n\t\t\tthis._data.core.rtl = (this.element.css(\"direction\") === \"rtl\");\n\t\t\tthis.element[this._data.core.rtl ? 'addClass' : 'removeClass'](\"jstree-rtl\");\n\t\t\tthis.element.attr('role','tree');\n\n\t\t\tthis.bind();\n\t\t\t/**\n\t\t\t * triggered after all events are bound\n\t\t\t * @event\n\t\t\t * @name init.jstree\n\t\t\t */\n\t\t\tthis.trigger(\"init\");\n\n\t\t\tthis._data.core.original_container_html = this.element.find(\" > ul > li\").clone(true);\n\t\t\tthis._data.core.original_container_html\n\t\t\t\t.find(\"li\").addBack()\n\t\t\t\t.contents().filter(function() {\n\t\t\t\t\treturn this.nodeType === 3 && (!this.nodeValue || /^\\s+$/.test(this.nodeValue));\n\t\t\t\t})\n\t\t\t\t.remove();\n\t\t\tthis.element.html(\"<\"+\"ul class='jstree-container-ul jstree-children'><\"+\"li class='jstree-initial-node jstree-loading jstree-leaf jstree-last'><i class='jstree-icon jstree-ocl'></i><\"+\"a class='jstree-anchor' href='#'><i class='jstree-icon jstree-themeicon-hidden'></i>\" + this.get_string(\"Loading ...\") + \"</a></li></ul>\");\n\t\t\tthis._data.core.li_height = this.get_container_ul().children(\"li:eq(0)\").height() || 24;\n\t\t\t/**\n\t\t\t * triggered after the loading text is shown and before loading starts\n\t\t\t * @event\n\t\t\t * @name loading.jstree\n\t\t\t */\n\t\t\tthis.trigger(\"loading\");\n\t\t\tthis.load_node('#');\n\t\t},\n\t\t/**\n\t\t * destroy an instance\n\t\t * @name destroy()\n\t\t * @param  {Boolean} keep_html if not set to `true` the container will be emptied, otherwise the current DOM elements will be kept intact\n\t\t */\n\t\tdestroy : function (keep_html) {\n\t\t\tif(this._wrk) {\n\t\t\t\ttry {\n\t\t\t\t\twindow.URL.revokeObjectURL(this._wrk);\n\t\t\t\t\tthis._wrk = null;\n\t\t\t\t}\n\t\t\t\tcatch (ignore) { }\n\t\t\t}\n\t\t\tif(!keep_html) { this.element.empty(); }\n\t\t\tthis.element.unbind(\"destroyed\", this.teardown);\n\t\t\tthis.teardown();\n\t\t},\n\t\t/**\n\t\t * part of the destroying of an instance. Used internally.\n\t\t * @private\n\t\t * @name teardown()\n\t\t */\n\t\tteardown : function () {\n\t\t\tthis.unbind();\n\t\t\tthis.element\n\t\t\t\t.removeClass('jstree')\n\t\t\t\t.removeData('jstree')\n\t\t\t\t.find(\"[class^='jstree']\")\n\t\t\t\t\t.addBack()\n\t\t\t\t\t.attr(\"class\", function () { return this.className.replace(/jstree[^ ]*|$/ig,''); });\n\t\t\tthis.element = null;\n\t\t},\n\t\t/**\n\t\t * bind all events. Used internally.\n\t\t * @private\n\t\t * @name bind()\n\t\t */\n\t\tbind : function () {\n\t\t\tthis.element\n\t\t\t\t.on(\"dblclick.jstree\", function () {\n\t\t\t\t\t\tif(document.selection && document.selection.empty) {\n\t\t\t\t\t\t\tdocument.selection.empty();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif(window.getSelection) {\n\t\t\t\t\t\t\t\tvar sel = window.getSelection();\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tsel.removeAllRanges();\n\t\t\t\t\t\t\t\t\tsel.collapse();\n\t\t\t\t\t\t\t\t} catch (ignore) { }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t.on(\"click.jstree\", \".jstree-ocl\", $.proxy(function (e) {\n\t\t\t\t\t\tthis.toggle_node(e.target);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"click.jstree\", \".jstree-anchor\", $.proxy(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tif(e.currentTarget !== document.activeElement) { $(e.currentTarget).focus(); }\n\t\t\t\t\t\tthis.activate_node(e.currentTarget, e);\n\t\t\t\t\t}, this))\n\t\t\t\t.on('keydown.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tif(e.target.tagName === \"INPUT\") { return true; }\n\t\t\t\t\t\tvar o = null;\n\t\t\t\t\t\tswitch(e.which) {\n\t\t\t\t\t\t\tcase 13:\n\t\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\t\te.type = \"click\";\n\t\t\t\t\t\t\t\t$(e.currentTarget).trigger(e);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 37:\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tif(this.is_open(e.currentTarget)) {\n\t\t\t\t\t\t\t\t\tthis.close_node(e.currentTarget);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\to = this.get_prev_dom(e.currentTarget);\n\t\t\t\t\t\t\t\t\tif(o && o.length) { o.children('.jstree-anchor').focus(); }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 38:\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\to = this.get_prev_dom(e.currentTarget);\n\t\t\t\t\t\t\t\tif(o && o.length) { o.children('.jstree-anchor').focus(); }\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 39:\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tif(this.is_closed(e.currentTarget)) {\n\t\t\t\t\t\t\t\t\tthis.open_node(e.currentTarget, function (o) { this.get_node(o, true).children('.jstree-anchor').focus(); });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\to = this.get_next_dom(e.currentTarget);\n\t\t\t\t\t\t\t\t\tif(o && o.length) { o.children('.jstree-anchor').focus(); }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 40:\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\to = this.get_next_dom(e.currentTarget);\n\t\t\t\t\t\t\t\tif(o && o.length) { o.children('.jstree-anchor').focus(); }\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// delete\n\t\t\t\t\t\t\tcase 46:\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\to = this.get_node(e.currentTarget);\n\t\t\t\t\t\t\t\tif(o && o.id && o.id !== '#') {\n\t\t\t\t\t\t\t\t\to = this.is_selected(o) ? this.get_selected() : o;\n\t\t\t\t\t\t\t\t\t// this.delete_node(o);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// f2\n\t\t\t\t\t\t\tcase 113:\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\to = this.get_node(e.currentTarget);\n\t\t\t\t\t\t\t\t/*!\n\t\t\t\t\t\t\t\tif(o && o.id && o.id !== '#') {\n\t\t\t\t\t\t\t\t\t// this.edit(o);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t// console.log(e.which);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"load_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tif(data.status) {\n\t\t\t\t\t\t\tif(data.node.id === '#' && !this._data.core.loaded) {\n\t\t\t\t\t\t\t\tthis._data.core.loaded = true;\n\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t * triggered after the root node is loaded for the first time\n\t\t\t\t\t\t\t\t * @event\n\t\t\t\t\t\t\t\t * @name loaded.jstree\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tthis.trigger(\"loaded\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!this._data.core.ready && !this.get_container_ul().find('.jstree-loading:eq(0)').length) {\n\t\t\t\t\t\t\t\tthis._data.core.ready = true;\n\t\t\t\t\t\t\t\tif(this._data.core.selected.length) {\n\t\t\t\t\t\t\t\t\tif(this.settings.core.expand_selected_onload) {\n\t\t\t\t\t\t\t\t\t\tvar tmp = [], i, j;\n\t\t\t\t\t\t\t\t\t\tfor(i = 0, j = this._data.core.selected.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\t\ttmp = tmp.concat(this._model.data[this._data.core.selected[i]].parents);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ttmp = $.vakata.array_unique(tmp);\n\t\t\t\t\t\t\t\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\t\tthis.open_node(tmp[i], false, 0);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tthis.trigger('changed', { 'action' : 'ready', 'selected' : this._data.core.selected });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t * triggered after all nodes are finished loading\n\t\t\t\t\t\t\t\t * @event\n\t\t\t\t\t\t\t\t * @name ready.jstree\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\tsetTimeout($.proxy(function () { this.trigger(\"ready\"); }, this), 0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t// THEME RELATED\n\t\t\t\t.on(\"init.jstree\", $.proxy(function () {\n\t\t\t\t\t\tvar s = this.settings.core.themes;\n\t\t\t\t\t\tthis._data.core.themes.dots\t\t\t= s.dots;\n\t\t\t\t\t\tthis._data.core.themes.stripes\t\t= s.stripes;\n\t\t\t\t\t\tthis._data.core.themes.icons\t\t= s.icons;\n\t\t\t\t\t\tthis.set_theme(s.name || \"default\", s.url);\n\t\t\t\t\t\tthis.set_theme_variant(s.variant);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"loading.jstree\", $.proxy(function () {\n\t\t\t\t\t\tthis[ this._data.core.themes.dots ? \"show_dots\" : \"hide_dots\" ]();\n\t\t\t\t\t\tthis[ this._data.core.themes.icons ? \"show_icons\" : \"hide_icons\" ]();\n\t\t\t\t\t\tthis[ this._data.core.themes.stripes ? \"show_stripes\" : \"hide_stripes\" ]();\n\t\t\t\t\t}, this))\n\t\t\t\t.on('blur.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tthis._data.core.focused = null;\n\t\t\t\t\t\t$(e.currentTarget).filter('.jstree-hovered').mouseleave();\n\t\t\t\t\t}, this))\n\t\t\t\t.on('focus.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tvar tmp = this.get_node(e.currentTarget);\n\t\t\t\t\t\tif(tmp && tmp.id) {\n\t\t\t\t\t\t\tthis._data.core.focused = tmp.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.element.find('.jstree-hovered').not(e.currentTarget).mouseleave();\n\t\t\t\t\t\t$(e.currentTarget).mouseenter();\n\t\t\t\t\t}, this))\n\t\t\t\t.on('mouseenter.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tthis.hover_node(e.currentTarget);\n\t\t\t\t\t}, this))\n\t\t\t\t.on('mouseleave.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\t\tthis.dehover_node(e.currentTarget);\n\t\t\t\t\t}, this));\n\t\t},\n\t\t/**\n\t\t * part of the destroying of an instance. Used internally.\n\t\t * @private\n\t\t * @name unbind()\n\t\t */\n\t\tunbind : function () {\n\t\t\tthis.element.off('.jstree');\n\t\t\t$(document).off('.jstree-' + this._id);\n\t\t},\n\t\t/**\n\t\t * trigger an event. Used internally.\n\t\t * @private\n\t\t * @name trigger(ev [, data])\n\t\t * @param  {String} ev the name of the event to trigger\n\t\t * @param  {Object} data additional data to pass with the event\n\t\t */\n\t\ttrigger : function (ev, data) {\n\t\t\tif(!data) {\n\t\t\t\tdata = {};\n\t\t\t}\n\t\t\tdata.instance = this;\n\t\t\tthis.element.triggerHandler(ev.replace('.jstree','') + '.jstree', data);\n\t\t},\n\t\t/**\n\t\t * returns the jQuery extended instance container\n\t\t * @name get_container()\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_container : function () {\n\t\t\treturn this.element;\n\t\t},\n\t\t/**\n\t\t * returns the jQuery extended main UL node inside the instance container. Used internally.\n\t\t * @private\n\t\t * @name get_container_ul()\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_container_ul : function () {\n\t\t\treturn this.element.children(\".jstree-children:eq(0)\");\n\t\t},\n\t\t/**\n\t\t * gets string replacements (localization). Used internally.\n\t\t * @private\n\t\t * @name get_string(key)\n\t\t * @param  {String} key\n\t\t * @return {String}\n\t\t */\n\t\tget_string : function (key) {\n\t\t\tvar a = this.settings.core.strings;\n\t\t\tif($.isFunction(a)) { return a.call(this, key); }\n\t\t\tif(a && a[key]) { return a[key]; }\n\t\t\treturn key;\n\t\t},\n\t\t/**\n\t\t * gets the first child of a DOM node. Used internally.\n\t\t * @private\n\t\t * @name _firstChild(dom)\n\t\t * @param  {DOMElement} dom\n\t\t * @return {DOMElement}\n\t\t */\n\t\t_firstChild : function (dom) {\n\t\t\tdom = dom ? dom.firstChild : null;\n\t\t\twhile(dom !== null && dom.nodeType !== 1) {\n\t\t\t\tdom = dom.nextSibling;\n\t\t\t}\n\t\t\treturn dom;\n\t\t},\n\t\t/**\n\t\t * gets the next sibling of a DOM node. Used internally.\n\t\t * @private\n\t\t * @name _nextSibling(dom)\n\t\t * @param  {DOMElement} dom\n\t\t * @return {DOMElement}\n\t\t */\n\t\t_nextSibling : function (dom) {\n\t\t\tdom = dom ? dom.nextSibling : null;\n\t\t\twhile(dom !== null && dom.nodeType !== 1) {\n\t\t\t\tdom = dom.nextSibling;\n\t\t\t}\n\t\t\treturn dom;\n\t\t},\n\t\t/**\n\t\t * gets the previous sibling of a DOM node. Used internally.\n\t\t * @private\n\t\t * @name _previousSibling(dom)\n\t\t * @param  {DOMElement} dom\n\t\t * @return {DOMElement}\n\t\t */\n\t\t_previousSibling : function (dom) {\n\t\t\tdom = dom ? dom.previousSibling : null;\n\t\t\twhile(dom !== null && dom.nodeType !== 1) {\n\t\t\t\tdom = dom.previousSibling;\n\t\t\t}\n\t\t\treturn dom;\n\t\t},\n\t\t/**\n\t\t * get the JSON representation of a node (or the actual jQuery extended DOM node) by using any input (child DOM element, ID string, selector, etc)\n\t\t * @name get_node(obj [, as_dom])\n\t\t * @param  {mixed} obj\n\t\t * @param  {Boolean} as_dom\n\t\t * @return {Object|jQuery}\n\t\t */\n\t\tget_node : function (obj, as_dom) {\n\t\t\tif(obj && obj.id) {\n\t\t\t\tobj = obj.id;\n\t\t\t}\n\t\t\tvar dom;\n\t\t\ttry {\n\t\t\t\tif(this._model.data[obj]) {\n\t\t\t\t\tobj = this._model.data[obj];\n\t\t\t\t}\n\t\t\t\telse if(((dom = $(obj, this.element)).length || (dom = $('#' + obj.replace($.jstree.idregex,'\\\\$&'), this.element)).length) && this._model.data[dom.closest('.jstree-node').attr('id')]) {\n\t\t\t\t\tobj = this._model.data[dom.closest('.jstree-node').attr('id')];\n\t\t\t\t}\n\t\t\t\telse if((dom = $(obj, this.element)).length && dom.hasClass('jstree')) {\n\t\t\t\t\tobj = this._model.data['#'];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif(as_dom) {\n\t\t\t\t\tobj = obj.id === '#' ? this.element : $('#' + obj.id.replace($.jstree.idregex,'\\\\$&'), this.element);\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t} catch (ex) { return false; }\n\t\t},\n\t\t/**\n\t\t * get the path to a node, either consisting of node texts, or of node IDs, optionally glued together (otherwise an array)\n\t\t * @name get_path(obj [, glue, ids])\n\t\t * @param  {mixed} obj the node\n\t\t * @param  {String} glue if you want the path as a string - pass the glue here (for example '/'), if a falsy value is supplied here, an array is returned\n\t\t * @param  {Boolean} ids if set to true build the path using ID, otherwise node text is used\n\t\t * @return {mixed}\n\t\t */\n\t\tget_path : function (obj, glue, ids) {\n\t\t\tobj = obj.parents ? obj : this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#' || !obj.parents) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar i, j, p = [];\n\t\t\tp.push(ids ? obj.id : obj.text);\n\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\tp.push(ids ? obj.parents[i] : this.get_text(obj.parents[i]));\n\t\t\t}\n\t\t\tp = p.reverse().slice(1);\n\t\t\treturn glue ? p.join(glue) : p;\n\t\t},\n\t\t/**\n\t\t * get the next visible node that is below the `obj` node. If `strict` is set to `true` only sibling nodes are returned.\n\t\t * @name get_next_dom(obj [, strict])\n\t\t * @param  {mixed} obj\n\t\t * @param  {Boolean} strict\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_next_dom : function (obj, strict) {\n\t\t\tvar tmp;\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(obj[0] === this.element[0]) {\n\t\t\t\ttmp = this._firstChild(this.get_container_ul()[0]);\n\t\t\t\twhile (tmp && tmp.offsetHeight === 0) {\n\t\t\t\t\ttmp = this._nextSibling(tmp);\n\t\t\t\t}\n\t\t\t\treturn tmp ? $(tmp) : false;\n\t\t\t}\n\t\t\tif(!obj || !obj.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(strict) {\n\t\t\t\ttmp = obj[0];\n\t\t\t\tdo {\n\t\t\t\t\ttmp = this._nextSibling(tmp);\n\t\t\t\t} while (tmp && tmp.offsetHeight === 0);\n\t\t\t\treturn tmp ? $(tmp) : false;\n\t\t\t}\n\t\t\tif(obj.hasClass(\"jstree-open\")) {\n\t\t\t\ttmp = this._firstChild(obj.children('.jstree-children')[0]);\n\t\t\t\twhile (tmp && tmp.offsetHeight === 0) {\n\t\t\t\t\ttmp = this._nextSibling(tmp);\n\t\t\t\t}\n\t\t\t\tif(tmp !== null) {\n\t\t\t\t\treturn $(tmp);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = obj[0];\n\t\t\tdo {\n\t\t\t\ttmp = this._nextSibling(tmp);\n\t\t\t} while (tmp && tmp.offsetHeight === 0);\n\t\t\tif(tmp !== null) {\n\t\t\t\treturn $(tmp);\n\t\t\t}\n\t\t\treturn obj.parentsUntil(\".jstree\",\".jstree-node\").next(\".jstree-node:visible\").eq(0);\n\t\t},\n\t\t/**\n\t\t * get the previous visible node that is above the `obj` node. If `strict` is set to `true` only sibling nodes are returned.\n\t\t * @name get_prev_dom(obj [, strict])\n\t\t * @param  {mixed} obj\n\t\t * @param  {Boolean} strict\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_prev_dom : function (obj, strict) {\n\t\t\tvar tmp;\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(obj[0] === this.element[0]) {\n\t\t\t\ttmp = this.get_container_ul()[0].lastChild;\n\t\t\t\twhile (tmp && tmp.offsetHeight === 0) {\n\t\t\t\t\ttmp = this._previousSibling(tmp);\n\t\t\t\t}\n\t\t\t\treturn tmp ? $(tmp) : false;\n\t\t\t}\n\t\t\tif(!obj || !obj.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(strict) {\n\t\t\t\ttmp = obj[0];\n\t\t\t\tdo {\n\t\t\t\t\ttmp = this._previousSibling(tmp);\n\t\t\t\t} while (tmp && tmp.offsetHeight === 0);\n\t\t\t\treturn tmp ? $(tmp) : false;\n\t\t\t}\n\t\t\ttmp = obj[0];\n\t\t\tdo {\n\t\t\t\ttmp = this._previousSibling(tmp);\n\t\t\t} while (tmp && tmp.offsetHeight === 0);\n\t\t\tif(tmp !== null) {\n\t\t\t\tobj = $(tmp);\n\t\t\t\twhile(obj.hasClass(\"jstree-open\")) {\n\t\t\t\t\tobj = obj.children(\".jstree-children:eq(0)\").children(\".jstree-node:visible:last\");\n\t\t\t\t}\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t\ttmp = obj[0].parentNode.parentNode;\n\t\t\treturn tmp && tmp.className && tmp.className.indexOf('jstree-node') !== -1 ? $(tmp) : false;\n\t\t},\n\t\t/**\n\t\t * get the parent ID of a node\n\t\t * @name get_parent(obj)\n\t\t * @param  {mixed} obj\n\t\t * @return {String}\n\t\t */\n\t\tget_parent : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn obj.parent;\n\t\t},\n\t\t/**\n\t\t * get a jQuery collection of all the children of a node (node must be rendered)\n\t\t * @name get_children_dom(obj)\n\t\t * @param  {mixed} obj\n\t\t * @return {jQuery}\n\t\t */\n\t\tget_children_dom : function (obj) {\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(obj[0] === this.element[0]) {\n\t\t\t\treturn this.get_container_ul().children(\".jstree-node\");\n\t\t\t}\n\t\t\tif(!obj || !obj.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn obj.children(\".jstree-children\").children(\".jstree-node\");\n\t\t},\n\t\t/**\n\t\t * checks if a node has children\n\t\t * @name is_parent(obj)\n\t\t * @param  {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_parent : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && (obj.state.loaded === false || obj.children.length > 0);\n\t\t},\n\t\t/**\n\t\t * checks if a node is loaded (its children are available)\n\t\t * @name is_loaded(obj)\n\t\t * @param  {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_loaded : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && obj.state.loaded;\n\t\t},\n\t\t/**\n\t\t * check if a node is currently loading (fetching children)\n\t\t * @name is_loading(obj)\n\t\t * @param  {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_loading : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && obj.state && obj.state.loading;\n\t\t},\n\t\t/**\n\t\t * check if a node is opened\n\t\t * @name is_open(obj)\n\t\t * @param  {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_open : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && obj.state.opened;\n\t\t},\n\t\t/**\n\t\t * check if a node is in a closed state\n\t\t * @name is_closed(obj)\n\t\t * @param  {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_closed : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && this.is_parent(obj) && !obj.state.opened;\n\t\t},\n\t\t/**\n\t\t * check if a node has no children\n\t\t * @name is_leaf(obj)\n\t\t * @param  {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_leaf : function (obj) {\n\t\t\treturn !this.is_parent(obj);\n\t\t},\n\t\t/**\n\t\t * loads a node (fetches its children using the `core.data` setting). Multiple nodes can be passed to by using an array.\n\t\t * @name load_node(obj [, callback])\n\t\t * @param  {mixed} obj\n\t\t * @param  {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives two arguments - the node and a boolean status\n\t\t * @return {Boolean}\n\t\t * @trigger load_node.jstree\n\t\t */\n\t\tload_node : function (obj, callback) {\n\t\t\tvar k, l, i, j, c;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tthis._load_nodes(obj.slice(), callback);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) {\n\t\t\t\tif(callback) { callback.call(this, obj, false); }\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// if(obj.state.loading) { } // the node is already loading - just wait for it to load and invoke callback? but if called implicitly it should be loaded again?\n\t\t\tif(obj.state.loaded) {\n\t\t\t\tobj.state.loaded = false;\n\t\t\t\tfor(k = 0, l = obj.children_d.length; k < l; k++) {\n\t\t\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\t\t\tthis._model.data[obj.parents[i]].children_d = $.vakata.array_remove_item(this._model.data[obj.parents[i]].children_d, obj.children_d[k]);\n\t\t\t\t\t}\n\t\t\t\t\tif(this._model.data[obj.children_d[k]].state.selected) {\n\t\t\t\t\t\tc = true;\n\t\t\t\t\t\tthis._data.core.selected = $.vakata.array_remove_item(this._data.core.selected, obj.children_d[k]);\n\t\t\t\t\t}\n\t\t\t\t\tdelete this._model.data[obj.children_d[k]];\n\t\t\t\t}\n\t\t\t\tobj.children = [];\n\t\t\t\tobj.children_d = [];\n\t\t\t\tif(c) {\n\t\t\t\t\tthis.trigger('changed', { 'action' : 'load_node', 'node' : obj, 'selected' : this._data.core.selected });\n\t\t\t\t}\n\t\t\t}\n\t\t\tobj.state.loading = true;\n\t\t\tthis.get_node(obj, true).addClass(\"jstree-loading\");\n\t\t\tthis._load_node(obj, $.proxy(function (status) {\n\t\t\t\tobj = this._model.data[obj.id];\n\t\t\t\tobj.state.loading = false;\n\t\t\t\tobj.state.loaded = status;\n\t\t\t\tvar dom = this.get_node(obj, true);\n\t\t\t\tif(obj.state.loaded && !obj.children.length && dom && dom.length && !dom.hasClass('jstree-leaf')) {\n\t\t\t\t\tdom.removeClass('jstree-closed jstree-open').addClass('jstree-leaf');\n\t\t\t\t}\n\t\t\t\tdom.removeClass(\"jstree-loading\");\n\t\t\t\t/**\n\t\t\t\t * triggered after a node is loaded\n\t\t\t\t * @event\n\t\t\t\t * @name load_node.jstree\n\t\t\t\t * @param {Object} node the node that was loading\n\t\t\t\t * @param {Boolean} status was the node loaded successfully\n\t\t\t\t */\n\t\t\t\tthis.trigger('load_node', { \"node\" : obj, \"status\" : status });\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback.call(this, obj, status);\n\t\t\t\t}\n\t\t\t}, this));\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * load an array of nodes (will also load unavailable nodes as soon as the appear in the structure). Used internally.\n\t\t * @private\n\t\t * @name _load_nodes(nodes [, callback])\n\t\t * @param  {array} nodes\n\t\t * @param  {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives one argument - the array passed to _load_nodes\n\t\t */\n\t\t_load_nodes : function (nodes, callback, is_callback) {\n\t\t\tvar r = true,\n\t\t\t\tc = function () { this._load_nodes(nodes, callback, true); },\n\t\t\t\tm = this._model.data, i, j;\n\t\t\tfor(i = 0, j = nodes.length; i < j; i++) {\n\t\t\t\tif(m[nodes[i]] && (!m[nodes[i]].state.loaded || !is_callback)) {\n\t\t\t\t\tif(!this.is_loading(nodes[i])) {\n\t\t\t\t\t\tthis.load_node(nodes[i], c);\n\t\t\t\t\t}\n\t\t\t\t\tr = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(r) {\n\t\t\t\tif(callback && !callback.done) {\n\t\t\t\t\tcallback.call(this, nodes);\n\t\t\t\t\tcallback.done = true;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * handles the actual loading of a node. Used only internally.\n\t\t * @private\n\t\t * @name _load_node(obj [, callback])\n\t\t * @param  {mixed} obj\n\t\t * @param  {function} callback a function to be executed once loading is complete, the function is executed in the instance's scope and receives one argument - a boolean status\n\t\t * @return {Boolean}\n\t\t */\n\t\t_load_node : function (obj, callback) {\n\t\t\tvar s = this.settings.core.data, t;\n\t\t\t// use original HTML\n\t\t\tif(!s) {\n\t\t\t\tif(obj.id === '#') {\n\t\t\t\t\treturn this._append_html_data(obj, this._data.core.original_container_html.clone(true), function (status) {\n\t\t\t\t\t\tcallback.call(this, status);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn callback.call(this, false);\n\t\t\t\t}\n\t\t\t\t// return callback.call(this, obj.id === '#' ? this._append_html_data(obj, this._data.core.original_container_html.clone(true)) : false);\n\t\t\t}\n\t\t\tif($.isFunction(s)) {\n\t\t\t\treturn s.call(this, obj, $.proxy(function (d) {\n\t\t\t\t\tif(d === false) {\n\t\t\t\t\t\tcallback.call(this, false);\n\t\t\t\t\t}\n\t\t\t\t\tthis[typeof d === 'string' ? '_append_html_data' : '_append_json_data'](obj, typeof d === 'string' ? $(d) : d, function (status) {\n\t\t\t\t\t\tcallback.call(this, status);\n\t\t\t\t\t});\n\t\t\t\t\t// return d === false ? callback.call(this, false) : callback.call(this, this[typeof d === 'string' ? '_append_html_data' : '_append_json_data'](obj, typeof d === 'string' ? $(d) : d));\n\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif(typeof s === 'object') {\n\t\t\t\tif(s.url) {\n\t\t\t\t\ts = $.extend(true, {}, s);\n\t\t\t\t\tif($.isFunction(s.url)) {\n\t\t\t\t\t\ts.url = s.url.call(this, obj);\n\t\t\t\t\t}\n\t\t\t\t\tif($.isFunction(s.data)) {\n\t\t\t\t\t\ts.data = s.data.call(this, obj);\n\t\t\t\t\t}\n\t\t\t\t\treturn $.ajax(s)\n\t\t\t\t\t\t.done($.proxy(function (d,t,x) {\n\t\t\t\t\t\t\t\tvar type = x.getResponseHeader('Content-Type');\n\t\t\t\t\t\t\t\tif(type.indexOf('json') !== -1 || typeof d === \"object\") {\n\t\t\t\t\t\t\t\t\treturn this._append_json_data(obj, d, function (status) { callback.call(this, status); });\n\t\t\t\t\t\t\t\t\t//return callback.call(this, this._append_json_data(obj, d));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(type.indexOf('html') !== -1 || typeof d === \"string\") {\n\t\t\t\t\t\t\t\t\treturn this._append_html_data(obj, $(d), function (status) { callback.call(this, status); });\n\t\t\t\t\t\t\t\t\t// return callback.call(this, this._append_html_data(obj, $(d)));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'core', 'id' : 'core_04', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id, 'xhr' : x }) };\n\t\t\t\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\t\t\t\treturn callback.call(this, false);\n\t\t\t\t\t\t\t}, this))\n\t\t\t\t\t\t.fail($.proxy(function (f) {\n\t\t\t\t\t\t\t\tcallback.call(this, false);\n\t\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'core', 'id' : 'core_04', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id, 'xhr' : f }) };\n\t\t\t\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\tt = ($.isArray(s) || $.isPlainObject(s)) ? JSON.parse(JSON.stringify(s)) : s;\n\t\t\t\tif(obj.id === '#') {\n\t\t\t\t\treturn this._append_json_data(obj, t, function (status) {\n\t\t\t\t\t\tcallback.call(this, status);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._data.core.last_error = { 'error' : 'nodata', 'plugin' : 'core', 'id' : 'core_05', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id }) };\n\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\treturn callback.call(this, false);\n\t\t\t\t}\n\t\t\t\t//return callback.call(this, (obj.id === \"#\" ? this._append_json_data(obj, t) : false) );\n\t\t\t}\n\t\t\tif(typeof s === 'string') {\n\t\t\t\tif(obj.id === '#') {\n\t\t\t\t\treturn this._append_html_data(obj, $(s), function (status) {\n\t\t\t\t\t\tcallback.call(this, status);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._data.core.last_error = { 'error' : 'nodata', 'plugin' : 'core', 'id' : 'core_06', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id }) };\n\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\treturn callback.call(this, false);\n\t\t\t\t}\n\t\t\t\t//return callback.call(this, (obj.id === \"#\" ? this._append_html_data(obj, $(s)) : false) );\n\t\t\t}\n\t\t\treturn callback.call(this, false);\n\t\t},\n\t\t/**\n\t\t * adds a node to the list of nodes to redraw. Used only internally.\n\t\t * @private\n\t\t * @name _node_changed(obj [, callback])\n\t\t * @param  {mixed} obj\n\t\t */\n\t\t_node_changed : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(obj) {\n\t\t\t\tthis._model.changed.push(obj.id);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * appends HTML content to the tree. Used internally.\n\t\t * @private\n\t\t * @name _append_html_data(obj, data)\n\t\t * @param  {mixed} obj the node to append to\n\t\t * @param  {String} data the HTML string to parse and append\n\t\t * @trigger model.jstree, changed.jstree\n\t\t */\n\t\t_append_html_data : function (dom, data, cb) {\n\t\t\tdom = this.get_node(dom);\n\t\t\tdom.children = [];\n\t\t\tdom.children_d = [];\n\t\t\tvar dat = data.is('ul') ? data.children() : data,\n\t\t\t\tpar = dom.id,\n\t\t\t\tchd = [],\n\t\t\t\tdpc = [],\n\t\t\t\tm = this._model.data,\n\t\t\t\tp = m[par],\n\t\t\t\ts = this._data.core.selected.length,\n\t\t\t\ttmp, i, j;\n\t\t\tdat.each($.proxy(function (i, v) {\n\t\t\t\ttmp = this._parse_model_from_html($(v), par, p.parents.concat());\n\t\t\t\tif(tmp) {\n\t\t\t\t\tchd.push(tmp);\n\t\t\t\t\tdpc.push(tmp);\n\t\t\t\t\tif(m[tmp].children_d.length) {\n\t\t\t\t\t\tdpc = dpc.concat(m[tmp].children_d);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this));\n\t\t\tp.children = chd;\n\t\t\tp.children_d = dpc;\n\t\t\tfor(i = 0, j = p.parents.length; i < j; i++) {\n\t\t\t\tm[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc);\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when new data is inserted to the tree model\n\t\t\t * @event\n\t\t\t * @name model.jstree\n\t\t\t * @param {Array} nodes an array of node IDs\n\t\t\t * @param {String} parent the parent ID of the nodes\n\t\t\t */\n\t\t\tthis.trigger('model', { \"nodes\" : dpc, 'parent' : par });\n\t\t\tif(par !== '#') {\n\t\t\t\tthis._node_changed(par);\n\t\t\t\tthis.redraw();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.get_container_ul().children('.jstree-initial-node').remove();\n\t\t\t\tthis.redraw(true);\n\t\t\t}\n\t\t\tif(this._data.core.selected.length !== s) {\n\t\t\t\tthis.trigger('changed', { 'action' : 'model', 'selected' : this._data.core.selected });\n\t\t\t}\n\t\t\tcb.call(this, true);\n\t\t},\n\t\t/**\n\t\t * appends JSON content to the tree. Used internally.\n\t\t * @private\n\t\t * @name _append_json_data(obj, data)\n\t\t * @param  {mixed} obj the node to append to\n\t\t * @param  {String} data the JSON object to parse and append\n\t\t * @param  {Boolean} force_processing internal param - do not set\n\t\t * @trigger model.jstree, changed.jstree\n\t\t */\n\t\t_append_json_data : function (dom, data, cb, force_processing) {\n\t\t\tdom = this.get_node(dom);\n\t\t\tdom.children = [];\n\t\t\tdom.children_d = [];\n\t\t\t// *%$@!!!\n\t\t\tif(data.d) {\n\t\t\t\tdata = data.d;\n\t\t\t\tif(typeof data === \"string\") {\n\t\t\t\t\tdata = JSON.parse(data);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!$.isArray(data)) { data = [data]; }\n\t\t\tvar w = null,\n\t\t\t\targs = {\n\t\t\t\t\t'df'\t: this._model.default_state,\n\t\t\t\t\t'dat'\t: data,\n\t\t\t\t\t'par'\t: dom.id,\n\t\t\t\t\t'm'\t\t: this._model.data,\n\t\t\t\t\t't_id'\t: this._id,\n\t\t\t\t\t't_cnt'\t: this._cnt,\n\t\t\t\t\t'sel'\t: this._data.core.selected\n\t\t\t\t},\n\t\t\t\tfunc = function (data, undefined) {\n\t\t\t\t\tif(data.data) { data = data.data; }\n\t\t\t\t\tvar dat = data.dat,\n\t\t\t\t\t\tpar = data.par,\n\t\t\t\t\t\tchd = [],\n\t\t\t\t\t\tdpc = [],\n\t\t\t\t\t\tadd = [],\n\t\t\t\t\t\tdf = data.df,\n\t\t\t\t\t\tt_id = data.t_id,\n\t\t\t\t\t\tt_cnt = data.t_cnt,\n\t\t\t\t\t\tm = data.m,\n\t\t\t\t\t\tp = m[par],\n\t\t\t\t\t\tsel = data.sel,\n\t\t\t\t\t\ttmp, i, j, rslt,\n\t\t\t\t\t\tparse_flat = function (d, p, ps) {\n\t\t\t\t\t\t\tif(!ps) { ps = []; }\n\t\t\t\t\t\t\telse { ps = ps.concat(); }\n\t\t\t\t\t\t\tif(p) { ps.unshift(p); }\n\t\t\t\t\t\t\tvar tid = d.id.toString(),\n\t\t\t\t\t\t\t\ti, j, c, e,\n\t\t\t\t\t\t\t\ttmp = {\n\t\t\t\t\t\t\t\t\tid\t\t\t: tid,\n\t\t\t\t\t\t\t\t\ttext\t\t: d.text || '',\n\t\t\t\t\t\t\t\t\ticon\t\t: d.icon !== undefined ? d.icon : true,\n\t\t\t\t\t\t\t\t\tparent\t\t: p,\n\t\t\t\t\t\t\t\t\tparents\t\t: ps,\n\t\t\t\t\t\t\t\t\tchildren\t: d.children || [],\n\t\t\t\t\t\t\t\t\tchildren_d\t: d.children_d || [],\n\t\t\t\t\t\t\t\t\tdata\t\t: d.data,\n\t\t\t\t\t\t\t\t\tstate\t\t: { },\n\t\t\t\t\t\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\t\t\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\t\t\t\t\t\toriginal\t: false\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor(i in df) {\n\t\t\t\t\t\t\t\tif(df.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\ttmp.state[i] = df[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.data && d.data.jstree && d.data.jstree.icon) {\n\t\t\t\t\t\t\t\ttmp.icon = d.data.jstree.icon;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.data) {\n\t\t\t\t\t\t\t\ttmp.data = d.data;\n\t\t\t\t\t\t\t\tif(d.data.jstree) {\n\t\t\t\t\t\t\t\t\tfor(i in d.data.jstree) {\n\t\t\t\t\t\t\t\t\t\tif(d.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.state[i] = d.data.jstree[i];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.state === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.state) {\n\t\t\t\t\t\t\t\t\tif(d.state.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.state[i] = d.state[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.li_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.li_attr) {\n\t\t\t\t\t\t\t\t\tif(d.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.li_attr[i] = d.li_attr[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!tmp.li_attr.id) {\n\t\t\t\t\t\t\t\ttmp.li_attr.id = tid;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.a_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.a_attr) {\n\t\t\t\t\t\t\t\t\tif(d.a_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.a_attr[i] = d.a_attr[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.children && d.children === true) {\n\t\t\t\t\t\t\t\ttmp.state.loaded = false;\n\t\t\t\t\t\t\t\ttmp.children = [];\n\t\t\t\t\t\t\t\ttmp.children_d = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tm[tmp.id] = tmp;\n\t\t\t\t\t\t\tfor(i = 0, j = tmp.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\tc = parse_flat(m[tmp.children[i]], tmp.id, ps);\n\t\t\t\t\t\t\t\te = m[c];\n\t\t\t\t\t\t\t\ttmp.children_d.push(c);\n\t\t\t\t\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\t\t\t\t\ttmp.children_d = tmp.children_d.concat(e.children_d);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdelete d.data;\n\t\t\t\t\t\t\tdelete d.children;\n\t\t\t\t\t\t\tm[tmp.id].original = d;\n\t\t\t\t\t\t\tif(tmp.state.selected) {\n\t\t\t\t\t\t\t\tadd.push(tmp.id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn tmp.id;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tparse_nest = function (d, p, ps) {\n\t\t\t\t\t\t\tif(!ps) { ps = []; }\n\t\t\t\t\t\t\telse { ps = ps.concat(); }\n\t\t\t\t\t\t\tif(p) { ps.unshift(p); }\n\t\t\t\t\t\t\tvar tid = false, i, j, c, e, tmp;\n\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\ttid = 'j' + t_id + '_' + (++t_cnt);\n\t\t\t\t\t\t\t} while(m[tid]);\n\n\t\t\t\t\t\t\ttmp = {\n\t\t\t\t\t\t\t\tid\t\t\t: false,\n\t\t\t\t\t\t\t\ttext\t\t: typeof d === 'string' ? d : '',\n\t\t\t\t\t\t\t\ticon\t\t: typeof d === 'object' && d.icon !== undefined ? d.icon : true,\n\t\t\t\t\t\t\t\tparent\t\t: p,\n\t\t\t\t\t\t\t\tparents\t\t: ps,\n\t\t\t\t\t\t\t\tchildren\t: [],\n\t\t\t\t\t\t\t\tchildren_d\t: [],\n\t\t\t\t\t\t\t\tdata\t\t: null,\n\t\t\t\t\t\t\t\tstate\t\t: { },\n\t\t\t\t\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\t\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\t\t\t\t\toriginal\t: false\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor(i in df) {\n\t\t\t\t\t\t\t\tif(df.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\ttmp.state[i] = df[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.id) { tmp.id = d.id.toString(); }\n\t\t\t\t\t\t\tif(d && d.text) { tmp.text = d.text; }\n\t\t\t\t\t\t\tif(d && d.data && d.data.jstree && d.data.jstree.icon) {\n\t\t\t\t\t\t\t\ttmp.icon = d.data.jstree.icon;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.data) {\n\t\t\t\t\t\t\t\ttmp.data = d.data;\n\t\t\t\t\t\t\t\tif(d.data.jstree) {\n\t\t\t\t\t\t\t\t\tfor(i in d.data.jstree) {\n\t\t\t\t\t\t\t\t\t\tif(d.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.state[i] = d.data.jstree[i];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.state === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.state) {\n\t\t\t\t\t\t\t\t\tif(d.state.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.state[i] = d.state[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.li_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.li_attr) {\n\t\t\t\t\t\t\t\t\tif(d.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.li_attr[i] = d.li_attr[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(tmp.li_attr.id && !tmp.id) {\n\t\t\t\t\t\t\t\ttmp.id = tmp.li_attr.id.toString();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!tmp.id) {\n\t\t\t\t\t\t\t\ttmp.id = tid;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!tmp.li_attr.id) {\n\t\t\t\t\t\t\t\ttmp.li_attr.id = tmp.id;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && typeof d.a_attr === 'object') {\n\t\t\t\t\t\t\t\tfor (i in d.a_attr) {\n\t\t\t\t\t\t\t\t\tif(d.a_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\t\t\t\t\ttmp.a_attr[i] = d.a_attr[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.children && d.children.length) {\n\t\t\t\t\t\t\t\tfor(i = 0, j = d.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\tc = parse_nest(d.children[i], tmp.id, ps);\n\t\t\t\t\t\t\t\t\te = m[c];\n\t\t\t\t\t\t\t\t\ttmp.children.push(c);\n\t\t\t\t\t\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\t\t\t\t\t\ttmp.children_d = tmp.children_d.concat(e.children_d);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttmp.children_d = tmp.children_d.concat(tmp.children);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(d && d.children && d.children === true) {\n\t\t\t\t\t\t\t\ttmp.state.loaded = false;\n\t\t\t\t\t\t\t\ttmp.children = [];\n\t\t\t\t\t\t\t\ttmp.children_d = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdelete d.data;\n\t\t\t\t\t\t\tdelete d.children;\n\t\t\t\t\t\t\ttmp.original = d;\n\t\t\t\t\t\t\tm[tmp.id] = tmp;\n\t\t\t\t\t\t\tif(tmp.state.selected) {\n\t\t\t\t\t\t\t\tadd.push(tmp.id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn tmp.id;\n\t\t\t\t\t\t};\n\n\t\t\t\t\tif(dat.length && dat[0].id !== undefined && dat[0].parent !== undefined) {\n\t\t\t\t\t\t// Flat JSON support (for easy import from DB):\n\t\t\t\t\t\t// 1) convert to object (foreach)\n\t\t\t\t\t\tfor(i = 0, j = dat.length; i < j; i++) {\n\t\t\t\t\t\t\tif(!dat[i].children) {\n\t\t\t\t\t\t\t\tdat[i].children = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tm[dat[i].id.toString()] = dat[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// 2) populate children (foreach)\n\t\t\t\t\t\tfor(i = 0, j = dat.length; i < j; i++) {\n\t\t\t\t\t\t\tm[dat[i].parent.toString()].children.push(dat[i].id.toString());\n\t\t\t\t\t\t\t// populate parent.children_d\n\t\t\t\t\t\t\tp.children_d.push(dat[i].id.toString());\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// 3) normalize && populate parents and children_d with recursion\n\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\ttmp = parse_flat(m[p.children[i]], par, p.parents.concat());\n\t\t\t\t\t\t\tdpc.push(tmp);\n\t\t\t\t\t\t\tif(m[tmp].children_d.length) {\n\t\t\t\t\t\t\t\tdpc = dpc.concat(m[tmp].children_d);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(i = 0, j = p.parents.length; i < j; i++) {\n\t\t\t\t\t\t\tm[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ?) three_state selection - p.state.selected && t - (if three_state foreach(dat => ch) -> foreach(parents) if(parent.selected) child.selected = true;\n\t\t\t\t\t\trslt = {\n\t\t\t\t\t\t\t'cnt' : t_cnt,\n\t\t\t\t\t\t\t'mod' : m,\n\t\t\t\t\t\t\t'sel' : sel,\n\t\t\t\t\t\t\t'par' : par,\n\t\t\t\t\t\t\t'dpc' : dpc,\n\t\t\t\t\t\t\t'add' : add\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tfor(i = 0, j = dat.length; i < j; i++) {\n\t\t\t\t\t\t\ttmp = parse_nest(dat[i], par, p.parents.concat());\n\t\t\t\t\t\t\tif(tmp) {\n\t\t\t\t\t\t\t\tchd.push(tmp);\n\t\t\t\t\t\t\t\tdpc.push(tmp);\n\t\t\t\t\t\t\t\tif(m[tmp].children_d.length) {\n\t\t\t\t\t\t\t\t\tdpc = dpc.concat(m[tmp].children_d);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tp.children = chd;\n\t\t\t\t\t\tp.children_d = dpc;\n\t\t\t\t\t\tfor(i = 0, j = p.parents.length; i < j; i++) {\n\t\t\t\t\t\t\tm[p.parents[i]].children_d = m[p.parents[i]].children_d.concat(dpc);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trslt = {\n\t\t\t\t\t\t\t'cnt' : t_cnt,\n\t\t\t\t\t\t\t'mod' : m,\n\t\t\t\t\t\t\t'sel' : sel,\n\t\t\t\t\t\t\t'par' : par,\n\t\t\t\t\t\t\t'dpc' : dpc,\n\t\t\t\t\t\t\t'add' : add\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn rslt;\n\t\t\t\t},\n\t\t\t\trslt = function (rslt, worker) {\n\t\t\t\t\tthis._cnt = rslt.cnt;\n\t\t\t\t\tthis._model.data = rslt.mod; // breaks the reference in load_node - careful\n\n\t\t\t\t\tif(worker) {\n\t\t\t\t\t\tvar i, j, a = rslt.add, r = rslt.sel, s = this._data.core.selected.slice(), m = this._model.data;\n\t\t\t\t\t\t// if selection was changed while calculating in worker\n\t\t\t\t\t\tif(r.length !== s.length || $.vakata.array_unique(r.concat(s)).length !== r.length) {\n\t\t\t\t\t\t\t// deselect nodes that are no longer selected\n\t\t\t\t\t\t\tfor(i = 0, j = r.length; i < j; i++) {\n\t\t\t\t\t\t\t\tif($.inArray(r[i], a) === -1 && $.inArray(r[i], s) === -1) {\n\t\t\t\t\t\t\t\t\tm[r[i]].state.selected = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// select nodes that were selected in the mean time\n\t\t\t\t\t\t\tfor(i = 0, j = s.length; i < j; i++) {\n\t\t\t\t\t\t\t\tif($.inArray(s[i], r) === -1) {\n\t\t\t\t\t\t\t\t\tm[s[i]].state.selected = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(rslt.add.length) {\n\t\t\t\t\t\tthis._data.core.selected = this._data.core.selected.concat(rslt.add);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.trigger('model', { \"nodes\" : rslt.dpc, 'parent' : rslt.par });\n\n\t\t\t\t\tif(rslt.par !== '#') {\n\t\t\t\t\t\tthis._node_changed(rslt.par);\n\t\t\t\t\t\tthis.redraw();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// this.get_container_ul().children('.jstree-initial-node').remove();\n\t\t\t\t\t\tthis.redraw(true);\n\t\t\t\t\t}\n\t\t\t\t\tif(rslt.add.length) {\n\t\t\t\t\t\tthis.trigger('changed', { 'action' : 'model', 'selected' : this._data.core.selected });\n\t\t\t\t\t}\n\t\t\t\t\tcb.call(this, true);\n\t\t\t\t};\n\t\t\tif(this.settings.core.worker && window.Blob && window.URL && window.Worker) {\n\t\t\t\ttry {\n\t\t\t\t\tif(this._wrk === null) {\n\t\t\t\t\t\tthis._wrk = window.URL.createObjectURL(\n\t\t\t\t\t\t\tnew window.Blob(\n\t\t\t\t\t\t\t\t['self.onmessage = ' + func.toString().replace(/return ([^;}]+)[\\s;}]+$/, 'postMessage($1);}')],\n\t\t\t\t\t\t\t\t{type:\"text/javascript\"}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif(!this._data.core.working || force_processing) {\n\t\t\t\t\t\tthis._data.core.working = true;\n\t\t\t\t\t\tw = new window.Worker(this._wrk);\n\t\t\t\t\t\tw.onmessage = $.proxy(function (e) {\n\t\t\t\t\t\t\trslt.call(this, e.data, true);\n\t\t\t\t\t\t\ttry { w.terminate(); w = null; } catch(ignore) { }\n\t\t\t\t\t\t\tif(this._data.core.worker_queue.length) {\n\t\t\t\t\t\t\t\tthis._append_json_data.apply(this, this._data.core.worker_queue.shift());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tthis._data.core.working = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t\tif(!args.par) {\n\t\t\t\t\t\t\tif(this._data.core.worker_queue.length) {\n\t\t\t\t\t\t\t\tthis._append_json_data.apply(this, this._data.core.worker_queue.shift());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tthis._data.core.working = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tw.postMessage(args);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._data.core.worker_queue.push([dom, data, cb, true]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch(e) {\n\t\t\t\t\trslt.call(this, func(args), false);\n\t\t\t\t\tif(this._data.core.worker_queue.length) {\n\t\t\t\t\t\tthis._append_json_data.apply(this, this._data.core.worker_queue.shift());\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._data.core.working = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\trslt.call(this, func(args), false);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * parses a node from a jQuery object and appends them to the in memory tree model. Used internally.\n\t\t * @private\n\t\t * @name _parse_model_from_html(d [, p, ps])\n\t\t * @param  {jQuery} d the jQuery object to parse\n\t\t * @param  {String} p the parent ID\n\t\t * @param  {Array} ps list of all parents\n\t\t * @return {String} the ID of the object added to the model\n\t\t */\n\t\t_parse_model_from_html : function (d, p, ps) {\n\t\t\tif(!ps) { ps = []; }\n\t\t\telse { ps = [].concat(ps); }\n\t\t\tif(p) { ps.unshift(p); }\n\t\t\tvar c, e, m = this._model.data,\n\t\t\t\tdata = {\n\t\t\t\t\tid\t\t\t: false,\n\t\t\t\t\ttext\t\t: false,\n\t\t\t\t\ticon\t\t: true,\n\t\t\t\t\tparent\t\t: p,\n\t\t\t\t\tparents\t\t: ps,\n\t\t\t\t\tchildren\t: [],\n\t\t\t\t\tchildren_d\t: [],\n\t\t\t\t\tdata\t\t: null,\n\t\t\t\t\tstate\t\t: { },\n\t\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\t\toriginal\t: false\n\t\t\t\t}, i, tmp, tid;\n\t\t\tfor(i in this._model.default_state) {\n\t\t\t\tif(this._model.default_state.hasOwnProperty(i)) {\n\t\t\t\t\tdata.state[i] = this._model.default_state[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = $.vakata.attributes(d, true);\n\t\t\t$.each(tmp, function (i, v) {\n\t\t\t\tv = $.trim(v);\n\t\t\t\tif(!v.length) { return true; }\n\t\t\t\tdata.li_attr[i] = v;\n\t\t\t\tif(i === 'id') {\n\t\t\t\t\tdata.id = v.toString();\n\t\t\t\t}\n\t\t\t});\n\t\t\ttmp = d.children('a').eq(0);\n\t\t\tif(tmp.length) {\n\t\t\t\ttmp = $.vakata.attributes(tmp, true);\n\t\t\t\t$.each(tmp, function (i, v) {\n\t\t\t\t\tv = $.trim(v);\n\t\t\t\t\tif(v.length) {\n\t\t\t\t\t\tdata.a_attr[i] = v;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\ttmp = d.children(\"a:eq(0)\").length ? d.children(\"a:eq(0)\").clone() : d.clone();\n\t\t\ttmp.children(\"ins, i, ul\").remove();\n\t\t\ttmp = tmp.html();\n\t\t\ttmp = $('<div />').html(tmp);\n\t\t\tdata.text = this.settings.core.force_text ? tmp.text() : tmp.html();\n\t\t\ttmp = d.data();\n\t\t\tdata.data = tmp ? $.extend(true, {}, tmp) : null;\n\t\t\tdata.state.opened = d.hasClass('jstree-open');\n\t\t\tdata.state.selected = d.children('a').hasClass('jstree-clicked');\n\t\t\tdata.state.disabled = d.children('a').hasClass('jstree-disabled');\n\t\t\tif(data.data && data.data.jstree) {\n\t\t\t\tfor(i in data.data.jstree) {\n\t\t\t\t\tif(data.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\tdata.state[i] = data.data.jstree[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = d.children(\"a\").children(\".jstree-themeicon\");\n\t\t\tif(tmp.length) {\n\t\t\t\tdata.icon = tmp.hasClass('jstree-themeicon-hidden') ? false : tmp.attr('rel');\n\t\t\t}\n\t\t\tif(data.state.icon) {\n\t\t\t\tdata.icon = data.state.icon;\n\t\t\t}\n\t\t\ttmp = d.children(\"ul\").children(\"li\");\n\t\t\tdo {\n\t\t\t\ttid = 'j' + this._id + '_' + (++this._cnt);\n\t\t\t} while(m[tid]);\n\t\t\tdata.id = data.li_attr.id ? data.li_attr.id.toString() : tid;\n\t\t\tif(tmp.length) {\n\t\t\t\ttmp.each($.proxy(function (i, v) {\n\t\t\t\t\tc = this._parse_model_from_html($(v), data.id, ps);\n\t\t\t\t\te = this._model.data[c];\n\t\t\t\t\tdata.children.push(c);\n\t\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\t\tdata.children_d = data.children_d.concat(e.children_d);\n\t\t\t\t\t}\n\t\t\t\t}, this));\n\t\t\t\tdata.children_d = data.children_d.concat(data.children);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif(d.hasClass('jstree-closed')) {\n\t\t\t\t\tdata.state.loaded = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(data.li_attr['class']) {\n\t\t\t\tdata.li_attr['class'] = data.li_attr['class'].replace('jstree-closed','').replace('jstree-open','');\n\t\t\t}\n\t\t\tif(data.a_attr['class']) {\n\t\t\t\tdata.a_attr['class'] = data.a_attr['class'].replace('jstree-clicked','').replace('jstree-disabled','');\n\t\t\t}\n\t\t\tm[data.id] = data;\n\t\t\tif(data.state.selected) {\n\t\t\t\tthis._data.core.selected.push(data.id);\n\t\t\t}\n\t\t\treturn data.id;\n\t\t},\n\t\t/**\n\t\t * parses a node from a JSON object (used when dealing with flat data, which has no nesting of children, but has id and parent properties) and appends it to the in memory tree model. Used internally.\n\t\t * @private\n\t\t * @name _parse_model_from_flat_json(d [, p, ps])\n\t\t * @param  {Object} d the JSON object to parse\n\t\t * @param  {String} p the parent ID\n\t\t * @param  {Array} ps list of all parents\n\t\t * @return {String} the ID of the object added to the model\n\t\t */\n\t\t_parse_model_from_flat_json : function (d, p, ps) {\n\t\t\tif(!ps) { ps = []; }\n\t\t\telse { ps = ps.concat(); }\n\t\t\tif(p) { ps.unshift(p); }\n\t\t\tvar tid = d.id.toString(),\n\t\t\t\tm = this._model.data,\n\t\t\t\tdf = this._model.default_state,\n\t\t\t\ti, j, c, e,\n\t\t\t\ttmp = {\n\t\t\t\t\tid\t\t\t: tid,\n\t\t\t\t\ttext\t\t: d.text || '',\n\t\t\t\t\ticon\t\t: d.icon !== undefined ? d.icon : true,\n\t\t\t\t\tparent\t\t: p,\n\t\t\t\t\tparents\t\t: ps,\n\t\t\t\t\tchildren\t: d.children || [],\n\t\t\t\t\tchildren_d\t: d.children_d || [],\n\t\t\t\t\tdata\t\t: d.data,\n\t\t\t\t\tstate\t\t: { },\n\t\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\t\toriginal\t: false\n\t\t\t\t};\n\t\t\tfor(i in df) {\n\t\t\t\tif(df.hasOwnProperty(i)) {\n\t\t\t\t\ttmp.state[i] = df[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && d.data && d.data.jstree && d.data.jstree.icon) {\n\t\t\t\ttmp.icon = d.data.jstree.icon;\n\t\t\t}\n\t\t\tif(d && d.data) {\n\t\t\t\ttmp.data = d.data;\n\t\t\t\tif(d.data.jstree) {\n\t\t\t\t\tfor(i in d.data.jstree) {\n\t\t\t\t\t\tif(d.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\t\ttmp.state[i] = d.data.jstree[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && typeof d.state === 'object') {\n\t\t\t\tfor (i in d.state) {\n\t\t\t\t\tif(d.state.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.state[i] = d.state[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && typeof d.li_attr === 'object') {\n\t\t\t\tfor (i in d.li_attr) {\n\t\t\t\t\tif(d.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.li_attr[i] = d.li_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!tmp.li_attr.id) {\n\t\t\t\ttmp.li_attr.id = tid;\n\t\t\t}\n\t\t\tif(d && typeof d.a_attr === 'object') {\n\t\t\t\tfor (i in d.a_attr) {\n\t\t\t\t\tif(d.a_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.a_attr[i] = d.a_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && d.children && d.children === true) {\n\t\t\t\ttmp.state.loaded = false;\n\t\t\t\ttmp.children = [];\n\t\t\t\ttmp.children_d = [];\n\t\t\t}\n\t\t\tm[tmp.id] = tmp;\n\t\t\tfor(i = 0, j = tmp.children.length; i < j; i++) {\n\t\t\t\tc = this._parse_model_from_flat_json(m[tmp.children[i]], tmp.id, ps);\n\t\t\t\te = m[c];\n\t\t\t\ttmp.children_d.push(c);\n\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\ttmp.children_d = tmp.children_d.concat(e.children_d);\n\t\t\t\t}\n\t\t\t}\n\t\t\tdelete d.data;\n\t\t\tdelete d.children;\n\t\t\tm[tmp.id].original = d;\n\t\t\tif(tmp.state.selected) {\n\t\t\t\tthis._data.core.selected.push(tmp.id);\n\t\t\t}\n\t\t\treturn tmp.id;\n\t\t},\n\t\t/**\n\t\t * parses a node from a JSON object and appends it to the in memory tree model. Used internally.\n\t\t * @private\n\t\t * @name _parse_model_from_json(d [, p, ps])\n\t\t * @param  {Object} d the JSON object to parse\n\t\t * @param  {String} p the parent ID\n\t\t * @param  {Array} ps list of all parents\n\t\t * @return {String} the ID of the object added to the model\n\t\t */\n\t\t_parse_model_from_json : function (d, p, ps) {\n\t\t\tif(!ps) { ps = []; }\n\t\t\telse { ps = ps.concat(); }\n\t\t\tif(p) { ps.unshift(p); }\n\t\t\tvar tid = false, i, j, c, e, m = this._model.data, df = this._model.default_state, tmp;\n\t\t\tdo {\n\t\t\t\ttid = 'j' + this._id + '_' + (++this._cnt);\n\t\t\t} while(m[tid]);\n\n\t\t\ttmp = {\n\t\t\t\tid\t\t\t: false,\n\t\t\t\ttext\t\t: typeof d === 'string' ? d : '',\n\t\t\t\ticon\t\t: typeof d === 'object' && d.icon !== undefined ? d.icon : true,\n\t\t\t\tparent\t\t: p,\n\t\t\t\tparents\t\t: ps,\n\t\t\t\tchildren\t: [],\n\t\t\t\tchildren_d\t: [],\n\t\t\t\tdata\t\t: null,\n\t\t\t\tstate\t\t: { },\n\t\t\t\tli_attr\t\t: { id : false },\n\t\t\t\ta_attr\t\t: { href : '#' },\n\t\t\t\toriginal\t: false\n\t\t\t};\n\t\t\tfor(i in df) {\n\t\t\t\tif(df.hasOwnProperty(i)) {\n\t\t\t\t\ttmp.state[i] = df[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && d.id) { tmp.id = d.id.toString(); }\n\t\t\tif(d && d.text) { tmp.text = d.text; }\n\t\t\tif(d && d.data && d.data.jstree && d.data.jstree.icon) {\n\t\t\t\ttmp.icon = d.data.jstree.icon;\n\t\t\t}\n\t\t\tif(d && d.data) {\n\t\t\t\ttmp.data = d.data;\n\t\t\t\tif(d.data.jstree) {\n\t\t\t\t\tfor(i in d.data.jstree) {\n\t\t\t\t\t\tif(d.data.jstree.hasOwnProperty(i)) {\n\t\t\t\t\t\t\ttmp.state[i] = d.data.jstree[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && typeof d.state === 'object') {\n\t\t\t\tfor (i in d.state) {\n\t\t\t\t\tif(d.state.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.state[i] = d.state[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && typeof d.li_attr === 'object') {\n\t\t\t\tfor (i in d.li_attr) {\n\t\t\t\t\tif(d.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.li_attr[i] = d.li_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(tmp.li_attr.id && !tmp.id) {\n\t\t\t\ttmp.id = tmp.li_attr.id.toString();\n\t\t\t}\n\t\t\tif(!tmp.id) {\n\t\t\t\ttmp.id = tid;\n\t\t\t}\n\t\t\tif(!tmp.li_attr.id) {\n\t\t\t\ttmp.li_attr.id = tmp.id;\n\t\t\t}\n\t\t\tif(d && typeof d.a_attr === 'object') {\n\t\t\t\tfor (i in d.a_attr) {\n\t\t\t\t\tif(d.a_attr.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.a_attr[i] = d.a_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(d && d.children && d.children.length) {\n\t\t\t\tfor(i = 0, j = d.children.length; i < j; i++) {\n\t\t\t\t\tc = this._parse_model_from_json(d.children[i], tmp.id, ps);\n\t\t\t\t\te = m[c];\n\t\t\t\t\ttmp.children.push(c);\n\t\t\t\t\tif(e.children_d.length) {\n\t\t\t\t\t\ttmp.children_d = tmp.children_d.concat(e.children_d);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttmp.children_d = tmp.children_d.concat(tmp.children);\n\t\t\t}\n\t\t\tif(d && d.children && d.children === true) {\n\t\t\t\ttmp.state.loaded = false;\n\t\t\t\ttmp.children = [];\n\t\t\t\ttmp.children_d = [];\n\t\t\t}\n\t\t\tdelete d.data;\n\t\t\tdelete d.children;\n\t\t\ttmp.original = d;\n\t\t\tm[tmp.id] = tmp;\n\t\t\tif(tmp.state.selected) {\n\t\t\t\tthis._data.core.selected.push(tmp.id);\n\t\t\t}\n\t\t\treturn tmp.id;\n\t\t},\n\t\t/**\n\t\t * redraws all nodes that need to be redrawn. Used internally.\n\t\t * @private\n\t\t * @name _redraw()\n\t\t * @trigger redraw.jstree\n\t\t */\n\t\t_redraw : function () {\n\t\t\tvar nodes = this._model.force_full_redraw ? this._model.data['#'].children.concat([]) : this._model.changed.concat([]),\n\t\t\t\tf = document.createElement('UL'), tmp, i, j, fe = this._data.core.focused;\n\t\t\tfor(i = 0, j = nodes.length; i < j; i++) {\n\t\t\t\ttmp = this.redraw_node(nodes[i], true, this._model.force_full_redraw);\n\t\t\t\tif(tmp && this._model.force_full_redraw) {\n\t\t\t\t\tf.appendChild(tmp);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(this._model.force_full_redraw) {\n\t\t\t\tf.className = this.get_container_ul()[0].className;\n\t\t\t\tthis.element.empty().append(f);\n\t\t\t\t//this.get_container_ul()[0].appendChild(f);\n\t\t\t}\n\t\t\tif(fe !== null) {\n\t\t\t\ttmp = this.get_node(fe, true);\n\t\t\t\tif(tmp && tmp.length && tmp.children('.jstree-anchor')[0] !== document.activeElement) {\n\t\t\t\t\ttmp.children('.jstree-anchor').focus();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._data.core.focused = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._model.force_full_redraw = false;\n\t\t\tthis._model.changed = [];\n\t\t\t/**\n\t\t\t * triggered after nodes are redrawn\n\t\t\t * @event\n\t\t\t * @name redraw.jstree\n\t\t\t * @param {array} nodes the redrawn nodes\n\t\t\t */\n\t\t\tthis.trigger('redraw', { \"nodes\" : nodes });\n\t\t},\n\t\t/**\n\t\t * redraws all nodes that need to be redrawn or optionally - the whole tree\n\t\t * @name redraw([full])\n\t\t * @param {Boolean} full if set to `true` all nodes are redrawn.\n\t\t */\n\t\tredraw : function (full) {\n\t\t\tif(full) {\n\t\t\t\tthis._model.force_full_redraw = true;\n\t\t\t}\n\t\t\t//if(this._model.redraw_timeout) {\n\t\t\t//\tclearTimeout(this._model.redraw_timeout);\n\t\t\t//}\n\t\t\t//this._model.redraw_timeout = setTimeout($.proxy(this._redraw, this),0);\n\t\t\tthis._redraw();\n\t\t},\n\t\t/**\n\t\t * redraws a single node. Used internally.\n\t\t * @private\n\t\t * @name redraw_node(node, deep, is_callback)\n\t\t * @param {mixed} node the node to redraw\n\t\t * @param {Boolean} deep should child nodes be redrawn too\n\t\t * @param {Boolean} is_callback is this a recursion call\n\t\t */\n\t\tredraw_node : function (node, deep, is_callback) {\n\t\t\tvar obj = this.get_node(node),\n\t\t\t\tpar = false,\n\t\t\t\tind = false,\n\t\t\t\told = false,\n\t\t\t\ti = false,\n\t\t\t\tj = false,\n\t\t\t\tk = false,\n\t\t\t\tc = '',\n\t\t\t\td = document,\n\t\t\t\tm = this._model.data,\n\t\t\t\tf = false,\n\t\t\t\ts = false,\n\t\t\t\ttmp = null;\n\t\t\tif(!obj) { return false; }\n\t\t\tif(obj.id === '#') {  return this.redraw(true); }\n\t\t\tdeep = deep || obj.children.length === 0;\n\t\t\tnode = !document.querySelector ? document.getElementById(obj.id) : this.element[0].querySelector('#' + (\"0123456789\".indexOf(obj.id[0]) !== -1 ? '\\\\3' + obj.id[0] + ' ' + obj.id.substr(1).replace($.jstree.idregex,'\\\\$&') : obj.id.replace($.jstree.idregex,'\\\\$&')) ); //, this.element);\n\t\t\tif(!node) {\n\t\t\t\tdeep = true;\n\t\t\t\t//node = d.createElement('LI');\n\t\t\t\tif(!is_callback) {\n\t\t\t\t\tpar = obj.parent !== '#' ? $('#' + obj.parent.replace($.jstree.idregex,'\\\\$&'), this.element)[0] : null;\n\t\t\t\t\tif(par !== null && (!par || !m[obj.parent].state.opened)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tind = $.inArray(obj.id, par === null ? m['#'].children : m[obj.parent].children);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnode = $(node);\n\t\t\t\tif(!is_callback) {\n\t\t\t\t\tpar = node.parent().parent()[0];\n\t\t\t\t\tif(par === this.element[0]) {\n\t\t\t\t\t\tpar = null;\n\t\t\t\t\t}\n\t\t\t\t\tind = node.index();\n\t\t\t\t}\n\t\t\t\t// m[obj.id].data = node.data(); // use only node's data, no need to touch jquery storage\n\t\t\t\tif(!deep && obj.children.length && !node.children('.jstree-children').length) {\n\t\t\t\t\tdeep = true;\n\t\t\t\t}\n\t\t\t\tif(!deep) {\n\t\t\t\t\told = node.children('.jstree-children')[0];\n\t\t\t\t}\n\t\t\t\ts = node.attr('aria-selected');\n\t\t\t\tf = node.children('.jstree-anchor')[0] === document.activeElement;\n\t\t\t\tnode.remove();\n\t\t\t\t//node = d.createElement('LI');\n\t\t\t\t//node = node[0];\n\t\t\t}\n\t\t\tnode = _node.cloneNode(true);\n\t\t\t// node is DOM, deep is boolean\n\n\t\t\tc = 'jstree-node ';\n\t\t\tfor(i in obj.li_attr) {\n\t\t\t\tif(obj.li_attr.hasOwnProperty(i)) {\n\t\t\t\t\tif(i === 'id') { continue; }\n\t\t\t\t\tif(i !== 'class') {\n\t\t\t\t\t\tnode.setAttribute(i, obj.li_attr[i]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tc += obj.li_attr[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(s && s !== \"false\") {\n\t\t\t\tnode.setAttribute('aria-selected', true);\n\t\t\t}\n\t\t\tif(obj.state.loaded && !obj.children.length) {\n\t\t\t\tc += ' jstree-leaf';\n\t\t\t}\n\t\t\telse {\n\t\t\t\tc += obj.state.opened && obj.state.loaded ? ' jstree-open' : ' jstree-closed';\n\t\t\t\tnode.setAttribute('aria-expanded', (obj.state.opened && obj.state.loaded) );\n\t\t\t}\n\t\t\tif(obj.parent !== null && m[obj.parent].children[m[obj.parent].children.length - 1] === obj.id) {\n\t\t\t\tc += ' jstree-last';\n\t\t\t}\n\t\t\tnode.id = obj.id;\n\t\t\tnode.className = c;\n\t\t\tc = ( obj.state.selected ? ' jstree-clicked' : '') + ( obj.state.disabled ? ' jstree-disabled' : '');\n\t\t\tfor(j in obj.a_attr) {\n\t\t\t\tif(obj.a_attr.hasOwnProperty(j)) {\n\t\t\t\t\tif(j === 'href' && obj.a_attr[j] === '#') { continue; }\n\t\t\t\t\tif(j !== 'class') {\n\t\t\t\t\t\tnode.childNodes[1].setAttribute(j, obj.a_attr[j]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tc += ' ' + obj.a_attr[j];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(c.length) {\n\t\t\t\tnode.childNodes[1].className = 'jstree-anchor ' + c;\n\t\t\t}\n\t\t\tif((obj.icon && obj.icon !== true) || obj.icon === false) {\n\t\t\t\tif(obj.icon === false) {\n\t\t\t\t\tnode.childNodes[1].childNodes[0].className += ' jstree-themeicon-hidden';\n\t\t\t\t}\n\t\t\t\telse if(obj.icon.indexOf('/') === -1 && obj.icon.indexOf('.') === -1) {\n\t\t\t\t\tnode.childNodes[1].childNodes[0].className += ' ' + obj.icon + ' jstree-themeicon-custom';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnode.childNodes[1].childNodes[0].style.backgroundImage = 'url('+obj.icon+')';\n\t\t\t\t\tnode.childNodes[1].childNodes[0].style.backgroundPosition = 'center center';\n\t\t\t\t\tnode.childNodes[1].childNodes[0].style.backgroundSize = 'auto';\n\t\t\t\t\tnode.childNodes[1].childNodes[0].className += ' jstree-themeicon-custom';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.settings.core.force_text) {\n\t\t\t\tnode.childNodes[1].appendChild(d.createTextNode(obj.text));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnode.childNodes[1].innerHTML += obj.text;\n\t\t\t}\n\n\t\t\tif(deep && obj.children.length && obj.state.opened && obj.state.loaded) {\n\t\t\t\tk = d.createElement('UL');\n\t\t\t\tk.setAttribute('role', 'group');\n\t\t\t\tk.className = 'jstree-children';\n\t\t\t\tfor(i = 0, j = obj.children.length; i < j; i++) {\n\t\t\t\t\tk.appendChild(this.redraw_node(obj.children[i], deep, true));\n\t\t\t\t}\n\t\t\t\tnode.appendChild(k);\n\t\t\t}\n\t\t\tif(old) {\n\t\t\t\tnode.appendChild(old);\n\t\t\t}\n\t\t\tif(!is_callback) {\n\t\t\t\t// append back using par / ind\n\t\t\t\tif(!par) {\n\t\t\t\t\tpar = this.element[0];\n\t\t\t\t}\n\t\t\t\tfor(i = 0, j = par.childNodes.length; i < j; i++) {\n\t\t\t\t\tif(par.childNodes[i] && par.childNodes[i].className && par.childNodes[i].className.indexOf('jstree-children') !== -1) {\n\t\t\t\t\t\ttmp = par.childNodes[i];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!tmp) {\n\t\t\t\t\ttmp = d.createElement('UL');\n\t\t\t\t\ttmp.setAttribute('role', 'group');\n\t\t\t\t\ttmp.className = 'jstree-children';\n\t\t\t\t\tpar.appendChild(tmp);\n\t\t\t\t}\n\t\t\t\tpar = tmp;\n\n\t\t\t\tif(ind < par.childNodes.length) {\n\t\t\t\t\tpar.insertBefore(node, par.childNodes[ind]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpar.appendChild(node);\n\t\t\t\t}\n\t\t\t\tif(f) {\n\t\t\t\t\tnode.childNodes[1].focus();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(obj.state.opened && !obj.state.loaded) {\n\t\t\t\tobj.state.opened = false;\n\t\t\t\tsetTimeout($.proxy(function () {\n\t\t\t\t\tthis.open_node(obj.id, false, 0);\n\t\t\t\t}, this), 0);\n\t\t\t}\n\t\t\treturn node;\n\t\t},\n\t\t/**\n\t\t * opens a node, revaling its children. If the node is not loaded it will be loaded and opened once ready.\n\t\t * @name open_node(obj [, callback, animation])\n\t\t * @param {mixed} obj the node to open\n\t\t * @param {Function} callback a function to execute once the node is opened\n\t\t * @param {Number} animation the animation duration in milliseconds when opening the node (overrides the `core.animation` setting). Use `false` for no animation.\n\t\t * @trigger open_node.jstree, after_open.jstree, before_open.jstree\n\t\t */\n\t\topen_node : function (obj, callback, animation) {\n\t\t\tvar t1, t2, d, t;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.open_node(obj[t1], callback, animation);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tanimation = animation === undefined ? this.settings.core.animation : animation;\n\t\t\tif(!this.is_closed(obj)) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback.call(this, obj, false);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(!this.is_loaded(obj)) {\n\t\t\t\tif(this.is_loading(obj)) {\n\t\t\t\t\treturn setTimeout($.proxy(function () {\n\t\t\t\t\t\tthis.open_node(obj, callback, animation);\n\t\t\t\t\t}, this), 500);\n\t\t\t\t}\n\t\t\t\tthis.load_node(obj, function (o, ok) {\n\t\t\t\t\treturn ok ? this.open_node(o, callback, animation) : (callback ? callback.call(this, o, false) : false);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\td = this.get_node(obj, true);\n\t\t\t\tt = this;\n\t\t\t\tif(d.length) {\n\t\t\t\t\tif(obj.children.length && !this._firstChild(d.children('.jstree-children')[0])) {\n\t\t\t\t\t\tobj.state.opened = true;\n\t\t\t\t\t\tthis.redraw_node(obj, true);\n\t\t\t\t\t\td = this.get_node(obj, true);\n\t\t\t\t\t}\n\t\t\t\t\tif(!animation) {\n\t\t\t\t\t\tthis.trigger('before_open', { \"node\" : obj });\n\t\t\t\t\t\td[0].className = d[0].className.replace('jstree-closed', 'jstree-open');\n\t\t\t\t\t\td[0].setAttribute(\"aria-expanded\", true);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.trigger('before_open', { \"node\" : obj });\n\t\t\t\t\t\td\n\t\t\t\t\t\t\t.children(\".jstree-children\").css(\"display\",\"none\").end()\n\t\t\t\t\t\t\t.removeClass(\"jstree-closed\").addClass(\"jstree-open\").attr(\"aria-expanded\", true)\n\t\t\t\t\t\t\t.children(\".jstree-children\").stop(true, true)\n\t\t\t\t\t\t\t\t.slideDown(animation, function () {\n\t\t\t\t\t\t\t\t\tthis.style.display = \"\";\n\t\t\t\t\t\t\t\t\tt.trigger(\"after_open\", { \"node\" : obj });\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tobj.state.opened = true;\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback.call(this, obj, true);\n\t\t\t\t}\n\t\t\t\tif(!d.length) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered when a node is about to be opened (if the node is supposed to be in the DOM, it will be, but it won't be visible yet)\n\t\t\t\t\t * @event\n\t\t\t\t\t * @name before_open.jstree\n\t\t\t\t\t * @param {Object} node the opened node\n\t\t\t\t\t */\n\t\t\t\t\tthis.trigger('before_open', { \"node\" : obj });\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when a node is opened (if there is an animation it will not be completed yet)\n\t\t\t\t * @event\n\t\t\t\t * @name open_node.jstree\n\t\t\t\t * @param {Object} node the opened node\n\t\t\t\t */\n\t\t\t\tthis.trigger('open_node', { \"node\" : obj });\n\t\t\t\tif(!animation || !d.length) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered when a node is opened and the animation is complete\n\t\t\t\t\t * @event\n\t\t\t\t\t * @name after_open.jstree\n\t\t\t\t\t * @param {Object} node the opened node\n\t\t\t\t\t */\n\t\t\t\t\tthis.trigger(\"after_open\", { \"node\" : obj });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * opens every parent of a node (node should be loaded)\n\t\t * @name _open_to(obj)\n\t\t * @param {mixed} obj the node to reveal\n\t\t * @private\n\t\t */\n\t\t_open_to : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar i, j, p = obj.parents;\n\t\t\tfor(i = 0, j = p.length; i < j; i+=1) {\n\t\t\t\tif(i !== '#') {\n\t\t\t\t\tthis.open_node(p[i], false, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn $('#' + obj.id.replace($.jstree.idregex,'\\\\$&'), this.element);\n\t\t},\n\t\t/**\n\t\t * closes a node, hiding its children\n\t\t * @name close_node(obj [, animation])\n\t\t * @param {mixed} obj the node to close\n\t\t * @param {Number} animation the animation duration in milliseconds when closing the node (overrides the `core.animation` setting). Use `false` for no animation.\n\t\t * @trigger close_node.jstree, after_close.jstree\n\t\t */\n\t\tclose_node : function (obj, animation) {\n\t\t\tvar t1, t2, t, d;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.close_node(obj[t1], animation);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(this.is_closed(obj)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tanimation = animation === undefined ? this.settings.core.animation : animation;\n\t\t\tt = this;\n\t\t\td = this.get_node(obj, true);\n\t\t\tif(d.length) {\n\t\t\t\tif(!animation) {\n\t\t\t\t\td[0].className = d[0].className.replace('jstree-open', 'jstree-closed');\n\t\t\t\t\td.attr(\"aria-expanded\", false).children('.jstree-children').remove();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\td\n\t\t\t\t\t\t.children(\".jstree-children\").attr(\"style\",\"display:block !important\").end()\n\t\t\t\t\t\t.removeClass(\"jstree-open\").addClass(\"jstree-closed\").attr(\"aria-expanded\", false)\n\t\t\t\t\t\t.children(\".jstree-children\").stop(true, true).slideUp(animation, function () {\n\t\t\t\t\t\t\tthis.style.display = \"\";\n\t\t\t\t\t\t\td.children('.jstree-children').remove();\n\t\t\t\t\t\t\tt.trigger(\"after_close\", { \"node\" : obj });\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tobj.state.opened = false;\n\t\t\t/**\n\t\t\t * triggered when a node is closed (if there is an animation it will not be complete yet)\n\t\t\t * @event\n\t\t\t * @name close_node.jstree\n\t\t\t * @param {Object} node the closed node\n\t\t\t */\n\t\t\tthis.trigger('close_node',{ \"node\" : obj });\n\t\t\tif(!animation || !d.length) {\n\t\t\t\t/**\n\t\t\t\t * triggered when a node is closed and the animation is complete\n\t\t\t\t * @event\n\t\t\t\t * @name after_close.jstree\n\t\t\t\t * @param {Object} node the closed node\n\t\t\t\t */\n\t\t\t\tthis.trigger(\"after_close\", { \"node\" : obj });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * toggles a node - closing it if it is open, opening it if it is closed\n\t\t * @name toggle_node(obj)\n\t\t * @param {mixed} obj the node to toggle\n\t\t */\n\t\ttoggle_node : function (obj) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.toggle_node(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.is_closed(obj)) {\n\t\t\t\treturn this.open_node(obj);\n\t\t\t}\n\t\t\tif(this.is_open(obj)) {\n\t\t\t\treturn this.close_node(obj);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * opens all nodes within a node (or the tree), revaling their children. If the node is not loaded it will be loaded and opened once ready.\n\t\t * @name open_all([obj, animation, original_obj])\n\t\t * @param {mixed} obj the node to open recursively, omit to open all nodes in the tree\n\t\t * @param {Number} animation the animation duration in milliseconds when opening the nodes, the default is no animation\n\t\t * @param {jQuery} reference to the node that started the process (internal use)\n\t\t * @trigger open_all.jstree\n\t\t */\n\t\topen_all : function (obj, animation, original_obj) {\n\t\t\tif(!obj) { obj = '#'; }\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) { return false; }\n\t\t\tvar dom = obj.id === '#' ? this.get_container_ul() : this.get_node(obj, true), i, j, _this;\n\t\t\tif(!dom.length) {\n\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\tif(this.is_closed(this._model.data[obj.children_d[i]])) {\n\t\t\t\t\t\tthis._model.data[obj.children_d[i]].state.opened = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.trigger('open_all', { \"node\" : obj });\n\t\t\t}\n\t\t\toriginal_obj = original_obj || dom;\n\t\t\t_this = this;\n\t\t\tdom = this.is_closed(obj) ? dom.find('.jstree-closed').addBack() : dom.find('.jstree-closed');\n\t\t\tdom.each(function () {\n\t\t\t\t_this.open_node(\n\t\t\t\t\tthis,\n\t\t\t\t\tfunction(node, status) { if(status && this.is_parent(node)) { this.open_all(node, animation, original_obj); } },\n\t\t\t\t\tanimation || 0\n\t\t\t\t);\n\t\t\t});\n\t\t\tif(original_obj.find('.jstree-closed').length === 0) {\n\t\t\t\t/**\n\t\t\t\t * triggered when an `open_all` call completes\n\t\t\t\t * @event\n\t\t\t\t * @name open_all.jstree\n\t\t\t\t * @param {Object} node the opened node\n\t\t\t\t */\n\t\t\t\tthis.trigger('open_all', { \"node\" : this.get_node(original_obj) });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * closes all nodes within a node (or the tree), revaling their children\n\t\t * @name close_all([obj, animation])\n\t\t * @param {mixed} obj the node to close recursively, omit to close all nodes in the tree\n\t\t * @param {Number} animation the animation duration in milliseconds when closing the nodes, the default is no animation\n\t\t * @trigger close_all.jstree\n\t\t */\n\t\tclose_all : function (obj, animation) {\n\t\t\tif(!obj) { obj = '#'; }\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) { return false; }\n\t\t\tvar dom = obj.id === '#' ? this.get_container_ul() : this.get_node(obj, true),\n\t\t\t\t_this = this, i, j;\n\t\t\tif(!dom.length) {\n\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\tthis._model.data[obj.children_d[i]].state.opened = false;\n\t\t\t\t}\n\t\t\t\treturn this.trigger('close_all', { \"node\" : obj });\n\t\t\t}\n\t\t\tdom = this.is_open(obj) ? dom.find('.jstree-open').addBack() : dom.find('.jstree-open');\n\t\t\t$(dom.get().reverse()).each(function () { _this.close_node(this, animation || 0); });\n\t\t\t/**\n\t\t\t * triggered when an `close_all` call completes\n\t\t\t * @event\n\t\t\t * @name close_all.jstree\n\t\t\t * @param {Object} node the closed node\n\t\t\t */\n\t\t\tthis.trigger('close_all', { \"node\" : obj });\n\t\t},\n\t\t/**\n\t\t * checks if a node is disabled (not selectable)\n\t\t * @name is_disabled(obj)\n\t\t * @param  {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_disabled : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn obj && obj.state && obj.state.disabled;\n\t\t},\n\t\t/**\n\t\t * enables a node - so that it can be selected\n\t\t * @name enable_node(obj)\n\t\t * @param {mixed} obj the node to enable\n\t\t * @trigger enable_node.jstree\n\t\t */\n\t\tenable_node : function (obj) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.enable_node(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tobj.state.disabled = false;\n\t\t\tthis.get_node(obj,true).children('.jstree-anchor').removeClass('jstree-disabled');\n\t\t\t/**\n\t\t\t * triggered when an node is enabled\n\t\t\t * @event\n\t\t\t * @name enable_node.jstree\n\t\t\t * @param {Object} node the enabled node\n\t\t\t */\n\t\t\tthis.trigger('enable_node', { 'node' : obj });\n\t\t},\n\t\t/**\n\t\t * disables a node - so that it can not be selected\n\t\t * @name disable_node(obj)\n\t\t * @param {mixed} obj the node to disable\n\t\t * @trigger disable_node.jstree\n\t\t */\n\t\tdisable_node : function (obj) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.disable_node(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tobj.state.disabled = true;\n\t\t\tthis.get_node(obj,true).children('.jstree-anchor').addClass('jstree-disabled');\n\t\t\t/**\n\t\t\t * triggered when an node is disabled\n\t\t\t * @event\n\t\t\t * @name disable_node.jstree\n\t\t\t * @param {Object} node the disabled node\n\t\t\t */\n\t\t\tthis.trigger('disable_node', { 'node' : obj });\n\t\t},\n\t\t/**\n\t\t * called when a node is selected by the user. Used internally.\n\t\t * @private\n\t\t * @name activate_node(obj, e)\n\t\t * @param {mixed} obj the node\n\t\t * @param {Object} e the related event\n\t\t * @trigger activate_node.jstree\n\t\t */\n\t\tactivate_node : function (obj, e) {\n\t\t\tif(this.is_disabled(obj)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// ensure last_clicked is still in the DOM, make it fresh (maybe it was moved?) and make sure it is still selected, if not - make last_clicked the last selected node\n\t\t\tthis._data.core.last_clicked = this._data.core.last_clicked && this._data.core.last_clicked.id !== undefined ? this.get_node(this._data.core.last_clicked.id) : null;\n\t\t\tif(this._data.core.last_clicked && !this._data.core.last_clicked.state.selected) { this._data.core.last_clicked = null; }\n\t\t\tif(!this._data.core.last_clicked && this._data.core.selected.length) { this._data.core.last_clicked = this.get_node(this._data.core.selected[this._data.core.selected.length - 1]); }\n\n\t\t\tif(!this.settings.core.multiple || (!e.metaKey && !e.ctrlKey && !e.shiftKey) || (e.shiftKey && (!this._data.core.last_clicked || !this.get_parent(obj) || this.get_parent(obj) !== this._data.core.last_clicked.parent ) )) {\n\t\t\t\tif(!this.settings.core.multiple && (e.metaKey || e.ctrlKey || e.shiftKey) && this.is_selected(obj)) {\n\t\t\t\t\tthis.deselect_node(obj, false, e);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.deselect_all(true);\n\t\t\t\t\tthis.select_node(obj, false, false, e);\n\t\t\t\t\tthis._data.core.last_clicked = this.get_node(obj);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif(e.shiftKey) {\n\t\t\t\t\tvar o = this.get_node(obj).id,\n\t\t\t\t\t\tl = this._data.core.last_clicked.id,\n\t\t\t\t\t\tp = this.get_node(this._data.core.last_clicked.parent).children,\n\t\t\t\t\t\tc = false,\n\t\t\t\t\t\ti, j;\n\t\t\t\t\tfor(i = 0, j = p.length; i < j; i += 1) {\n\t\t\t\t\t\t// separate IFs work whem o and l are the same\n\t\t\t\t\t\tif(p[i] === o) {\n\t\t\t\t\t\t\tc = !c;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(p[i] === l) {\n\t\t\t\t\t\t\tc = !c;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(c || p[i] === o || p[i] === l) {\n\t\t\t\t\t\t\tthis.select_node(p[i], false, false, e);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.deselect_node(p[i], false, e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(!this.is_selected(obj)) {\n\t\t\t\t\t\tthis.select_node(obj, false, false, e);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.deselect_node(obj, false, e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when an node is clicked or intercated with by the user\n\t\t\t * @event\n\t\t\t * @name activate_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t */\n\t\t\tthis.trigger('activate_node', { 'node' : this.get_node(obj) });\n\t\t},\n\t\t/**\n\t\t * applies the hover state on a node, called when a node is hovered by the user. Used internally.\n\t\t * @private\n\t\t * @name hover_node(obj)\n\t\t * @param {mixed} obj\n\t\t * @trigger hover_node.jstree\n\t\t */\n\t\thover_node : function (obj) {\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(!obj || !obj.length || obj.children('.jstree-hovered').length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar o = this.element.find('.jstree-hovered'), t = this.element;\n\t\t\tif(o && o.length) { this.dehover_node(o); }\n\n\t\t\tobj.children('.jstree-anchor').addClass('jstree-hovered');\n\t\t\t/**\n\t\t\t * triggered when an node is hovered\n\t\t\t * @event\n\t\t\t * @name hover_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t */\n\t\t\tthis.trigger('hover_node', { 'node' : this.get_node(obj) });\n\t\t\tsetTimeout(function () { t.attr('aria-activedescendant', obj[0].id); obj.attr('aria-selected', true); }, 0);\n\t\t},\n\t\t/**\n\t\t * removes the hover state from a nodecalled when a node is no longer hovered by the user. Used internally.\n\t\t * @private\n\t\t * @name dehover_node(obj)\n\t\t * @param {mixed} obj\n\t\t * @trigger dehover_node.jstree\n\t\t */\n\t\tdehover_node : function (obj) {\n\t\t\tobj = this.get_node(obj, true);\n\t\t\tif(!obj || !obj.length || !obj.children('.jstree-hovered').length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tobj.attr('aria-selected', false).children('.jstree-anchor').removeClass('jstree-hovered');\n\t\t\t/**\n\t\t\t * triggered when an node is no longer hovered\n\t\t\t * @event\n\t\t\t * @name dehover_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t */\n\t\t\tthis.trigger('dehover_node', { 'node' : this.get_node(obj) });\n\t\t},\n\t\t/**\n\t\t * select a node\n\t\t * @name select_node(obj [, supress_event, prevent_open])\n\t\t * @param {mixed} obj an array can be used to select multiple nodes\n\t\t * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered\n\t\t * @param {Boolean} prevent_open if set to `true` parents of the selected node won't be opened\n\t\t * @trigger select_node.jstree, changed.jstree\n\t\t */\n\t\tselect_node : function (obj, supress_event, prevent_open, e) {\n\t\t\tvar dom, t1, t2, th;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.select_node(obj[t1], supress_event, prevent_open, e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(!obj.state.selected) {\n\t\t\t\tobj.state.selected = true;\n\t\t\t\tthis._data.core.selected.push(obj.id);\n\t\t\t\tif(!prevent_open) {\n\t\t\t\t\tdom = this._open_to(obj);\n\t\t\t\t}\n\t\t\t\tif(dom && dom.length) {\n\t\t\t\t\tdom.children('.jstree-anchor').addClass('jstree-clicked');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is selected\n\t\t\t\t * @event\n\t\t\t\t * @name select_node.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t * @param {Object} event the event (if any) that triggered this select_node\n\t\t\t\t */\n\t\t\t\tthis.trigger('select_node', { 'node' : obj, 'selected' : this._data.core.selected, 'event' : e });\n\t\t\t\tif(!supress_event) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered when selection changes\n\t\t\t\t\t * @event\n\t\t\t\t\t * @name changed.jstree\n\t\t\t\t\t * @param {Object} node\n\t\t\t\t\t * @param {Object} action the action that caused the selection to change\n\t\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t\t * @param {Object} event the event (if any) that triggered this changed event\n\t\t\t\t\t */\n\t\t\t\t\tthis.trigger('changed', { 'action' : 'select_node', 'node' : obj, 'selected' : this._data.core.selected, 'event' : e });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * deselect a node\n\t\t * @name deselect_node(obj [, supress_event])\n\t\t * @param {mixed} obj an array can be used to deselect multiple nodes\n\t\t * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered\n\t\t * @trigger deselect_node.jstree, changed.jstree\n\t\t */\n\t\tdeselect_node : function (obj, supress_event, e) {\n\t\t\tvar t1, t2, dom;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.deselect_node(obj[t1], supress_event, e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(obj.state.selected) {\n\t\t\t\tobj.state.selected = false;\n\t\t\t\tthis._data.core.selected = $.vakata.array_remove_item(this._data.core.selected, obj.id);\n\t\t\t\tif(dom.length) {\n\t\t\t\t\tdom.children('.jstree-anchor').removeClass('jstree-clicked');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is deselected\n\t\t\t\t * @event\n\t\t\t\t * @name deselect_node.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t * @param {Object} event the event (if any) that triggered this deselect_node\n\t\t\t\t */\n\t\t\t\tthis.trigger('deselect_node', { 'node' : obj, 'selected' : this._data.core.selected, 'event' : e });\n\t\t\t\tif(!supress_event) {\n\t\t\t\t\tthis.trigger('changed', { 'action' : 'deselect_node', 'node' : obj, 'selected' : this._data.core.selected, 'event' : e });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * select all nodes in the tree\n\t\t * @name select_all([supress_event])\n\t\t * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered\n\t\t * @trigger select_all.jstree, changed.jstree\n\t\t */\n\t\tselect_all : function (supress_event) {\n\t\t\tvar tmp = this._data.core.selected.concat([]), i, j;\n\t\t\tthis._data.core.selected = this._model.data['#'].children_d.concat();\n\t\t\tfor(i = 0, j = this._data.core.selected.length; i < j; i++) {\n\t\t\t\tif(this._model.data[this._data.core.selected[i]]) {\n\t\t\t\t\tthis._model.data[this._data.core.selected[i]].state.selected = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.redraw(true);\n\t\t\t/**\n\t\t\t * triggered when all nodes are selected\n\t\t\t * @event\n\t\t\t * @name select_all.jstree\n\t\t\t * @param {Array} selected the current selection\n\t\t\t */\n\t\t\tthis.trigger('select_all', { 'selected' : this._data.core.selected });\n\t\t\tif(!supress_event) {\n\t\t\t\tthis.trigger('changed', { 'action' : 'select_all', 'selected' : this._data.core.selected, 'old_selection' : tmp });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * deselect all selected nodes\n\t\t * @name deselect_all([supress_event])\n\t\t * @param {Boolean} supress_event if set to `true` the `changed.jstree` event won't be triggered\n\t\t * @trigger deselect_all.jstree, changed.jstree\n\t\t */\n\t\tdeselect_all : function (supress_event) {\n\t\t\tvar tmp = this._data.core.selected.concat([]), i, j;\n\t\t\tfor(i = 0, j = this._data.core.selected.length; i < j; i++) {\n\t\t\t\tif(this._model.data[this._data.core.selected[i]]) {\n\t\t\t\t\tthis._model.data[this._data.core.selected[i]].state.selected = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._data.core.selected = [];\n\t\t\tthis.element.find('.jstree-clicked').removeClass('jstree-clicked');\n\t\t\t/**\n\t\t\t * triggered when all nodes are deselected\n\t\t\t * @event\n\t\t\t * @name deselect_all.jstree\n\t\t\t * @param {Object} node the previous selection\n\t\t\t * @param {Array} selected the current selection\n\t\t\t */\n\t\t\tthis.trigger('deselect_all', { 'selected' : this._data.core.selected, 'node' : tmp });\n\t\t\tif(!supress_event) {\n\t\t\t\tthis.trigger('changed', { 'action' : 'deselect_all', 'selected' : this._data.core.selected, 'old_selection' : tmp });\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * checks if a node is selected\n\t\t * @name is_selected(obj)\n\t\t * @param  {mixed}  obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tis_selected : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn obj.state.selected;\n\t\t},\n\t\t/**\n\t\t * get an array of all selected nodes\n\t\t * @name get_selected([full])\n\t\t * @param  {mixed}  full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t */\n\t\tget_selected : function (full) {\n\t\t\treturn full ? $.map(this._data.core.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.core.selected.slice();\n\t\t},\n\t\t/**\n\t\t * get an array of all top level selected nodes (ignoring children of selected nodes)\n\t\t * @name get_top_selected([full])\n\t\t * @param  {mixed}  full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t */\n\t\tget_top_selected : function (full) {\n\t\t\tvar tmp = this.get_selected(true),\n\t\t\t\tobj = {}, i, j, k, l;\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tobj[tmp[i].id] = tmp[i];\n\t\t\t}\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tfor(k = 0, l = tmp[i].children_d.length; k < l; k++) {\n\t\t\t\t\tif(obj[tmp[i].children_d[k]]) {\n\t\t\t\t\t\tdelete obj[tmp[i].children_d[k]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = [];\n\t\t\tfor(i in obj) {\n\t\t\t\tif(obj.hasOwnProperty(i)) {\n\t\t\t\t\ttmp.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp;\n\t\t},\n\t\t/**\n\t\t * get an array of all bottom level selected nodes (ignoring selected parents)\n\t\t * @name get_bottom_selected([full])\n\t\t * @param  {mixed}  full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t */\n\t\tget_bottom_selected : function (full) {\n\t\t\tvar tmp = this.get_selected(true),\n\t\t\t\tobj = [], i, j;\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tif(!tmp[i].children.length) {\n\t\t\t\t\tobj.push(tmp[i].id);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj;\n\t\t},\n\t\t/**\n\t\t * gets the current state of the tree so that it can be restored later with `set_state(state)`. Used internally.\n\t\t * @name get_state()\n\t\t * @private\n\t\t * @return {Object}\n\t\t */\n\t\tget_state : function () {\n\t\t\tvar state\t= {\n\t\t\t\t'core' : {\n\t\t\t\t\t'open' : [],\n\t\t\t\t\t'scroll' : {\n\t\t\t\t\t\t'left' : this.element.scrollLeft(),\n\t\t\t\t\t\t'top' : this.element.scrollTop()\n\t\t\t\t\t},\n\t\t\t\t\t/*!\n\t\t\t\t\t'themes' : {\n\t\t\t\t\t\t'name' : this.get_theme(),\n\t\t\t\t\t\t'icons' : this._data.core.themes.icons,\n\t\t\t\t\t\t'dots' : this._data.core.themes.dots\n\t\t\t\t\t},\n\t\t\t\t\t*/\n\t\t\t\t\t'selected' : []\n\t\t\t\t}\n\t\t\t}, i;\n\t\t\tfor(i in this._model.data) {\n\t\t\t\tif(this._model.data.hasOwnProperty(i)) {\n\t\t\t\t\tif(i !== '#') {\n\t\t\t\t\t\tif(this._model.data[i].state.opened) {\n\t\t\t\t\t\t\tstate.core.open.push(i);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(this._model.data[i].state.selected) {\n\t\t\t\t\t\t\tstate.core.selected.push(i);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn state;\n\t\t},\n\t\t/**\n\t\t * sets the state of the tree. Used internally.\n\t\t * @name set_state(state [, callback])\n\t\t * @private\n\t\t * @param {Object} state the state to restore\n\t\t * @param {Function} callback an optional function to execute once the state is restored.\n\t\t * @trigger set_state.jstree\n\t\t */\n\t\tset_state : function (state, callback) {\n\t\t\tif(state) {\n\t\t\t\tif(state.core) {\n\t\t\t\t\tvar res, n, t, _this;\n\t\t\t\t\tif(state.core.open) {\n\t\t\t\t\t\tif(!$.isArray(state.core.open)) {\n\t\t\t\t\t\t\tdelete state.core.open;\n\t\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tres = true;\n\t\t\t\t\t\tn = false;\n\t\t\t\t\t\tt = this;\n\t\t\t\t\t\t$.each(state.core.open.concat([]), function (i, v) {\n\t\t\t\t\t\t\tn = t.get_node(v);\n\t\t\t\t\t\t\tif(n) {\n\t\t\t\t\t\t\t\tif(t.is_loaded(v)) {\n\t\t\t\t\t\t\t\t\tif(t.is_closed(v)) {\n\t\t\t\t\t\t\t\t\t\tt.open_node(v, false, 0);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif(state && state.core && state.core.open) {\n\t\t\t\t\t\t\t\t\t\t$.vakata.array_remove_item(state.core.open, v);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif(!t.is_loading(v)) {\n\t\t\t\t\t\t\t\t\t\tt.open_node(v, $.proxy(function (o, s) {\n\t\t\t\t\t\t\t\t\t\t\tif(!s && state && state.core && state.core.open) {\n\t\t\t\t\t\t\t\t\t\t\t\t$.vakata.array_remove_item(state.core.open, o.id);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\t\t\t\t\t}, t), 0);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// there will be some async activity - so wait for it\n\t\t\t\t\t\t\t\t\tres = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif(res) {\n\t\t\t\t\t\t\tdelete state.core.open;\n\t\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif(state.core.scroll) {\n\t\t\t\t\t\tif(state.core.scroll && state.core.scroll.left !== undefined) {\n\t\t\t\t\t\t\tthis.element.scrollLeft(state.core.scroll.left);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(state.core.scroll && state.core.scroll.top !== undefined) {\n\t\t\t\t\t\t\tthis.element.scrollTop(state.core.scroll.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete state.core.scroll;\n\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t/*!\n\t\t\t\t\tif(state.core.themes) {\n\t\t\t\t\t\tif(state.core.themes.name) {\n\t\t\t\t\t\t\tthis.set_theme(state.core.themes.name);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(typeof state.core.themes.dots !== 'undefined') {\n\t\t\t\t\t\t\tthis[ state.core.themes.dots ? \"show_dots\" : \"hide_dots\" ]();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(typeof state.core.themes.icons !== 'undefined') {\n\t\t\t\t\t\t\tthis[ state.core.themes.icons ? \"show_icons\" : \"hide_icons\" ]();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete state.core.themes;\n\t\t\t\t\t\tdelete state.core.open;\n\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t*/\n\t\t\t\t\tif(state.core.selected) {\n\t\t\t\t\t\t_this = this;\n\t\t\t\t\t\tthis.deselect_all();\n\t\t\t\t\t\t$.each(state.core.selected, function (i, v) {\n\t\t\t\t\t\t\t_this.select_node(v);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdelete state.core.selected;\n\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif($.isEmptyObject(state.core)) {\n\t\t\t\t\t\tdelete state.core;\n\t\t\t\t\t\tthis.set_state(state, callback);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif($.isEmptyObject(state)) {\n\t\t\t\t\tstate = null;\n\t\t\t\t\tif(callback) { callback.call(this); }\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered when a `set_state` call completes\n\t\t\t\t\t * @event\n\t\t\t\t\t * @name set_state.jstree\n\t\t\t\t\t */\n\t\t\t\t\tthis.trigger('set_state');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t/**\n\t\t * refreshes the tree - all nodes are reloaded with calls to `load_node`.\n\t\t * @name refresh()\n\t\t * @param {Boolean} skip_loading an option to skip showing the loading indicator\n\t\t * @param {Mixed} forget_state if set to `true` state will not be reapplied, if set to a function (receiving the current state as argument) the result of that function will be used as state\n\t\t * @trigger refresh.jstree\n\t\t */\n\t\trefresh : function (skip_loading, forget_state) {\n\t\t\tthis._data.core.state = forget_state === true ? {} : this.get_state();\n\t\t\tif(forget_state && $.isFunction(forget_state)) { this._data.core.state = forget_state.call(this, this._data.core.state); }\n\t\t\tthis._cnt = 0;\n\t\t\tthis._model.data = {\n\t\t\t\t'#' : {\n\t\t\t\t\tid : '#',\n\t\t\t\t\tparent : null,\n\t\t\t\t\tparents : [],\n\t\t\t\t\tchildren : [],\n\t\t\t\t\tchildren_d : [],\n\t\t\t\t\tstate : { loaded : false }\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar c = this.get_container_ul()[0].className;\n\t\t\tif(!skip_loading) {\n\t\t\t\tthis.element.html(\"<\"+\"ul class='\"+c+\"'><\"+\"li class='jstree-initial-node jstree-loading jstree-leaf jstree-last'><i class='jstree-icon jstree-ocl'></i><\"+\"a class='jstree-anchor' href='#'><i class='jstree-icon jstree-themeicon-hidden'></i>\" + this.get_string(\"Loading ...\") + \"</a></li></ul>\");\n\t\t\t}\n\t\t\tthis.load_node('#', function (o, s) {\n\t\t\t\tif(s) {\n\t\t\t\t\tthis.get_container_ul()[0].className = c;\n\t\t\t\t\tthis.set_state($.extend(true, {}, this._data.core.state), function () {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * triggered when a `refresh` call completes\n\t\t\t\t\t\t * @event\n\t\t\t\t\t\t * @name refresh.jstree\n\t\t\t\t\t\t */\n\t\t\t\t\t\tthis.trigger('refresh');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis._data.core.state = null;\n\t\t\t});\n\t\t},\n\t\t/**\n\t\t * refreshes a node in the tree (reload its children) all opened nodes inside that node are reloaded with calls to `load_node`.\n\t\t * @name refresh_node(obj)\n\t\t * @param  {mixed} obj the node\n\t\t * @trigger refresh_node.jstree\n\t\t */\n\t\trefresh_node : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\tvar opened = [], to_load = [], s = this._data.core.selected.concat([]);\n\t\t\tto_load.push(obj.id);\n\t\t\tif(obj.state.opened === true) { opened.push(obj.id); }\n\t\t\tthis.get_node(obj, true).find('.jstree-open').each(function() { opened.push(this.id); });\n\t\t\tthis._load_nodes(to_load, $.proxy(function (nodes) {\n\t\t\t\tthis.open_node(opened, false, 0);\n\t\t\t\tthis.select_node(this._data.core.selected);\n\t\t\t\t/**\n\t\t\t\t * triggered when a node is refreshed\n\t\t\t\t * @event\n\t\t\t\t * @name refresh_node.jstree\n\t\t\t\t * @param {Object} node - the refreshed node\n\t\t\t\t * @param {Array} nodes - an array of the IDs of the nodes that were reloaded\n\t\t\t\t */\n\t\t\t\tthis.trigger('refresh_node', { 'node' : obj, 'nodes' : nodes });\n\t\t\t}, this));\n\t\t},\n\t\t/**\n\t\t * set (change) the ID of a node\n\t\t * @name set_id(obj, id)\n\t\t * @param  {mixed} obj the node\n\t\t * @param  {String} id the new ID\n\t\t * @return {Boolean}\n\t\t */\n\t\tset_id : function (obj, id) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\tvar i, j, m = this._model.data;\n\t\t\tid = id.toString();\n\t\t\t// update parents (replace current ID with new one in children and children_d)\n\t\t\tm[obj.parent].children[$.inArray(obj.id, m[obj.parent].children)] = id;\n\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\tm[obj.parents[i]].children_d[$.inArray(obj.id, m[obj.parents[i]].children_d)] = id;\n\t\t\t}\n\t\t\t// update children (replace current ID with new one in parent and parents)\n\t\t\tfor(i = 0, j = obj.children.length; i < j; i++) {\n\t\t\t\tm[obj.children[i]].parent = id;\n\t\t\t}\n\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\tm[obj.children_d[i]].parents[$.inArray(obj.id, m[obj.children_d[i]].parents)] = id;\n\t\t\t}\n\t\t\ti = $.inArray(obj.id, this._data.core.selected);\n\t\t\tif(i !== -1) { this._data.core.selected[i] = id; }\n\t\t\t// update model and obj itself (obj.id, this._model.data[KEY])\n\t\t\ti = this.get_node(obj.id, true);\n\t\t\tif(i) {\n\t\t\t\ti.attr('id', id);\n\t\t\t}\n\t\t\tdelete m[obj.id];\n\t\t\tobj.id = id;\n\t\t\tm[id] = obj;\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * get the text value of a node\n\t\t * @name get_text(obj)\n\t\t * @param  {mixed} obj the node\n\t\t * @return {String}\n\t\t */\n\t\tget_text : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn (!obj || obj.id === '#') ? false : obj.text;\n\t\t},\n\t\t/**\n\t\t * set the text value of a node. Used internally, please use `rename_node(obj, val)`.\n\t\t * @private\n\t\t * @name set_text(obj, val)\n\t\t * @param  {mixed} obj the node, you can pass an array to set the text on multiple nodes\n\t\t * @param  {String} val the new text value\n\t\t * @return {Boolean}\n\t\t * @trigger set_text.jstree\n\t\t */\n\t\tset_text : function (obj, val) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.set_text(obj[t1], val);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\tobj.text = val;\n\t\t\tif(this.get_node(obj, true).length) {\n\t\t\t\tthis.redraw_node(obj.id);\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when a node text value is changed\n\t\t\t * @event\n\t\t\t * @name set_text.jstree\n\t\t\t * @param {Object} obj\n\t\t\t * @param {String} text the new value\n\t\t\t */\n\t\t\tthis.trigger('set_text',{ \"obj\" : obj, \"text\" : val });\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * gets a JSON representation of a node (or the whole tree)\n\t\t * @name get_json([obj, options])\n\t\t * @param  {mixed} obj\n\t\t * @param  {Object} options\n\t\t * @param  {Boolean} options.no_state do not return state information\n\t\t * @param  {Boolean} options.no_id do not return ID\n\t\t * @param  {Boolean} options.no_children do not include children\n\t\t * @param  {Boolean} options.no_data do not include node data\n\t\t * @param  {Boolean} options.flat return flat JSON instead of nested\n\t\t * @return {Object}\n\t\t */\n\t\tget_json : function (obj, options, flat) {\n\t\t\tobj = this.get_node(obj || '#');\n\t\t\tif(!obj) { return false; }\n\t\t\tif(options && options.flat && !flat) { flat = []; }\n\t\t\tvar tmp = {\n\t\t\t\t'id' : obj.id,\n\t\t\t\t'text' : obj.text,\n\t\t\t\t'icon' : this.get_icon(obj),\n\t\t\t\t'li_attr' : $.extend(true, {}, obj.li_attr),\n\t\t\t\t'a_attr' : $.extend(true, {}, obj.a_attr),\n\t\t\t\t'state' : {},\n\t\t\t\t'data' : options && options.no_data ? false : $.extend(true, {}, obj.data)\n\t\t\t\t//( this.get_node(obj, true).length ? this.get_node(obj, true).data() : obj.data ),\n\t\t\t}, i, j;\n\t\t\tif(options && options.flat) {\n\t\t\t\ttmp.parent = obj.parent;\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttmp.children = [];\n\t\t\t}\n\t\t\tif(!options || !options.no_state) {\n\t\t\t\tfor(i in obj.state) {\n\t\t\t\t\tif(obj.state.hasOwnProperty(i)) {\n\t\t\t\t\t\ttmp.state[i] = obj.state[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(options && options.no_id) {\n\t\t\t\tdelete tmp.id;\n\t\t\t\tif(tmp.li_attr && tmp.li_attr.id) {\n\t\t\t\t\tdelete tmp.li_attr.id;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(options && options.flat && obj.id !== '#') {\n\t\t\t\tflat.push(tmp);\n\t\t\t}\n\t\t\tif(!options || !options.no_children) {\n\t\t\t\tfor(i = 0, j = obj.children.length; i < j; i++) {\n\t\t\t\t\tif(options && options.flat) {\n\t\t\t\t\t\tthis.get_json(obj.children[i], options, flat);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\ttmp.children.push(this.get_json(obj.children[i], options));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn options && options.flat ? flat : (obj.id === '#' ? tmp.children : tmp);\n\t\t},\n\t\t/**\n\t\t * create a new node (do not confuse with load_node)\n\t\t * @name create_node([obj, node, pos, callback, is_loaded])\n\t\t * @param  {mixed}   par       the parent node (to create a root node use either \"#\" (string) or `null`)\n\t\t * @param  {mixed}   node      the data for the new node (a valid JSON object, or a simple string with the name)\n\t\t * @param  {mixed}   pos       the index at which to insert the node, \"first\" and \"last\" are also supported, default is \"last\"\n\t\t * @param  {Function} callback a function to be called once the node is created\n\t\t * @param  {Boolean} is_loaded internal argument indicating if the parent node was succesfully loaded\n\t\t * @return {String}            the ID of the newly create node\n\t\t * @trigger model.jstree, create_node.jstree\n\t\t */\n\t\tcreate_node : function (par, node, pos, callback, is_loaded) {\n\t\t\tif(par === null) { par = \"#\"; }\n\t\t\tpar = this.get_node(par);\n\t\t\tif(!par) { return false; }\n\t\t\tpos = pos === undefined ? \"last\" : pos;\n\t\t\tif(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) {\n\t\t\t\treturn this.load_node(par, function () { this.create_node(par, node, pos, callback, true); });\n\t\t\t}\n\t\t\tif(!node) { node = { \"text\" : this.get_string('New node') }; }\n\t\t\tif(node.text === undefined) { node.text = this.get_string('New node'); }\n\t\t\tvar tmp, dpc, i, j;\n\n\t\t\tif(par.id === '#') {\n\t\t\t\tif(pos === \"before\") { pos = \"first\"; }\n\t\t\t\tif(pos === \"after\") { pos = \"last\"; }\n\t\t\t}\n\t\t\tswitch(pos) {\n\t\t\t\tcase \"before\":\n\t\t\t\t\ttmp = this.get_node(par.parent);\n\t\t\t\t\tpos = $.inArray(par.id, tmp.children);\n\t\t\t\t\tpar = tmp;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"after\" :\n\t\t\t\t\ttmp = this.get_node(par.parent);\n\t\t\t\t\tpos = $.inArray(par.id, tmp.children) + 1;\n\t\t\t\t\tpar = tmp;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inside\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\tpos = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"last\":\n\t\t\t\t\tpos = par.children.length;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif(!pos) { pos = 0; }\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(pos > par.children.length) { pos = par.children.length; }\n\t\t\tif(!node.id) { node.id = true; }\n\t\t\tif(!this.check(\"create_node\", node, par, pos)) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(node.id === true) { delete node.id; }\n\t\t\tnode = this._parse_model_from_json(node, par.id, par.parents.concat());\n\t\t\tif(!node) { return false; }\n\t\t\ttmp = this.get_node(node);\n\t\t\tdpc = [];\n\t\t\tdpc.push(node);\n\t\t\tdpc = dpc.concat(tmp.children_d);\n\t\t\tthis.trigger('model', { \"nodes\" : dpc, \"parent\" : par.id });\n\n\t\t\tpar.children_d = par.children_d.concat(dpc);\n\t\t\tfor(i = 0, j = par.parents.length; i < j; i++) {\n\t\t\t\tthis._model.data[par.parents[i]].children_d = this._model.data[par.parents[i]].children_d.concat(dpc);\n\t\t\t}\n\t\t\tnode = tmp;\n\t\t\ttmp = [];\n\t\t\tfor(i = 0, j = par.children.length; i < j; i++) {\n\t\t\t\ttmp[i >= pos ? i+1 : i] = par.children[i];\n\t\t\t}\n\t\t\ttmp[pos] = node.id;\n\t\t\tpar.children = tmp;\n\n\t\t\tthis.redraw_node(par, true);\n\t\t\tif(callback) { callback.call(this, this.get_node(node)); }\n\t\t\t/**\n\t\t\t * triggered when a node is created\n\t\t\t * @event\n\t\t\t * @name create_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {String} parent the parent's ID\n\t\t\t * @param {Number} position the position of the new node among the parent's children\n\t\t\t */\n\t\t\tthis.trigger('create_node', { \"node\" : this.get_node(node), \"parent\" : par.id, \"position\" : pos });\n\t\t\treturn node.id;\n\t\t},\n\t\t/**\n\t\t * set the text value of a node\n\t\t * @name rename_node(obj, val)\n\t\t * @param  {mixed} obj the node, you can pass an array to rename multiple nodes to the same name\n\t\t * @param  {String} val the new text value\n\t\t * @return {Boolean}\n\t\t * @trigger rename_node.jstree\n\t\t */\n\t\trename_node : function (obj, val) {\n\t\t\tvar t1, t2, old;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.rename_node(obj[t1], val);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\told = obj.text;\n\t\t\tif(!this.check(\"rename_node\", obj, this.get_parent(obj), val)) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.set_text(obj, val); // .apply(this, Array.prototype.slice.call(arguments))\n\t\t\t/**\n\t\t\t * triggered when a node is renamed\n\t\t\t * @event\n\t\t\t * @name rename_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {String} text the new value\n\t\t\t * @param {String} old the old value\n\t\t\t */\n\t\t\tthis.trigger('rename_node', { \"node\" : obj, \"text\" : val, \"old\" : old });\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * remove a node\n\t\t * @name delete_node(obj)\n\t\t * @param  {mixed} obj the node, you can pass an array to delete multiple nodes\n\t\t * @return {Boolean}\n\t\t * @trigger delete_node.jstree, changed.jstree\n\t\t */\n\t\tdelete_node : function (obj) {\n\t\t\tvar t1, t2, par, pos, tmp, i, j, k, l, c;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.delete_node(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\tpar = this.get_node(obj.parent);\n\t\t\tpos = $.inArray(obj.id, par.children);\n\t\t\tc = false;\n\t\t\tif(!this.check(\"delete_node\", obj, par, pos)) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(pos !== -1) {\n\t\t\t\tpar.children = $.vakata.array_remove(par.children, pos);\n\t\t\t}\n\t\t\ttmp = obj.children_d.concat([]);\n\t\t\ttmp.push(obj.id);\n\t\t\tfor(k = 0, l = tmp.length; k < l; k++) {\n\t\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\t\tpos = $.inArray(tmp[k], this._model.data[obj.parents[i]].children_d);\n\t\t\t\t\tif(pos !== -1) {\n\t\t\t\t\t\tthis._model.data[obj.parents[i]].children_d = $.vakata.array_remove(this._model.data[obj.parents[i]].children_d, pos);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(this._model.data[tmp[k]].state.selected) {\n\t\t\t\t\tc = true;\n\t\t\t\t\tpos = $.inArray(tmp[k], this._data.core.selected);\n\t\t\t\t\tif(pos !== -1) {\n\t\t\t\t\t\tthis._data.core.selected = $.vakata.array_remove(this._data.core.selected, pos);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered when a node is deleted\n\t\t\t * @event\n\t\t\t * @name delete_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {String} parent the parent's ID\n\t\t\t */\n\t\t\tthis.trigger('delete_node', { \"node\" : obj, \"parent\" : par.id });\n\t\t\tif(c) {\n\t\t\t\tthis.trigger('changed', { 'action' : 'delete_node', 'node' : obj, 'selected' : this._data.core.selected, 'parent' : par.id });\n\t\t\t}\n\t\t\tfor(k = 0, l = tmp.length; k < l; k++) {\n\t\t\t\tdelete this._model.data[tmp[k]];\n\t\t\t}\n\t\t\tthis.redraw_node(par, true);\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * check if an operation is premitted on the tree. Used internally.\n\t\t * @private\n\t\t * @name check(chk, obj, par, pos)\n\t\t * @param  {String} chk the operation to check, can be \"create_node\", \"rename_node\", \"delete_node\", \"copy_node\" or \"move_node\"\n\t\t * @param  {mixed} obj the node\n\t\t * @param  {mixed} par the parent\n\t\t * @param  {mixed} pos the position to insert at, or if \"rename_node\" - the new name\n\t\t * @param  {mixed} more some various additional information, for example if a \"move_node\" operations is triggered by DND this will be the hovered node\n\t\t * @return {Boolean}\n\t\t */\n\t\tcheck : function (chk, obj, par, pos, more) {\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\t\t\tpar = par && par.id ? par : this.get_node(par);\n\t\t\tvar tmp = chk.match(/^move_node|copy_node|create_node$/i) ? par : obj,\n\t\t\t\tchc = this.settings.core.check_callback;\n\t\t\tif(chk === \"move_node\" || chk === \"copy_node\") {\n\t\t\t\tif((!more || !more.is_multi) && (obj.id === par.id || $.inArray(obj.id, par.children) === pos || $.inArray(par.id, obj.children_d) !== -1)) {\n\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_01', 'reason' : 'Moving parent inside child', 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(tmp && tmp.data) { tmp = tmp.data; }\n\t\t\tif(tmp && tmp.functions && (tmp.functions[chk] === false || tmp.functions[chk] === true)) {\n\t\t\t\tif(tmp.functions[chk] === false) {\n\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_02', 'reason' : 'Node data prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t}\n\t\t\t\treturn tmp.functions[chk];\n\t\t\t}\n\t\t\tif(chc === false || ($.isFunction(chc) && chc.call(this, chk, obj, par, pos, more) === false) || (chc && chc[chk] === false)) {\n\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_03', 'reason' : 'User config for core.check_callback prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * get the last error\n\t\t * @name last_error()\n\t\t * @return {Object}\n\t\t */\n\t\tlast_error : function () {\n\t\t\treturn this._data.core.last_error;\n\t\t},\n\t\t/**\n\t\t * move a node to a new parent\n\t\t * @name move_node(obj, par [, pos, callback, is_loaded])\n\t\t * @param  {mixed} obj the node to move, pass an array to move multiple nodes\n\t\t * @param  {mixed} par the new parent\n\t\t * @param  {mixed} pos the position to insert at (besides integer values, \"first\" and \"last\" are supported, as well as \"before\" and \"after\"), defaults to integer `0`\n\t\t * @param  {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position\n\t\t * @param  {Boolean} internal parameter indicating if the parent node has been loaded\n\t\t * @trigger move_node.jstree\n\t\t */\n\t\tmove_node : function (obj, par, pos, callback, is_loaded) {\n\t\t\tvar t1, t2, old_par, old_pos, new_par, old_ins, is_multi, dpc, tmp, i, j, k, l, p;\n\n\t\t\tpar = this.get_node(par);\n\t\t\tpos = pos === undefined ? 0 : pos;\n\t\t\tif(!par) { return false; }\n\t\t\tif(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) {\n\t\t\t\treturn this.load_node(par, function () { this.move_node(obj, par, pos, callback, true); });\n\t\t\t}\n\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.reverse().slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.move_node(obj[t1], par, pos, callback, is_loaded);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\n\t\t\told_par = (obj.parent || '#').toString();\n\t\t\tnew_par = (!pos.toString().match(/^(before|after)$/) || par.id === '#') ? par : this.get_node(par.parent);\n\t\t\told_ins = obj.instance ? obj.instance : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id));\n\t\t\tis_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id);\n\t\t\told_pos = old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1;\n\t\t\tif(is_multi) {\n\t\t\t\tif(this.copy_node(obj, par, pos, callback, is_loaded)) {\n\t\t\t\t\tif(old_ins) { old_ins.delete_node(obj); }\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t//var m = this._model.data;\n\t\t\tif(new_par.id === '#') {\n\t\t\t\tif(pos === \"before\") { pos = \"first\"; }\n\t\t\t\tif(pos === \"after\") { pos = \"last\"; }\n\t\t\t}\n\t\t\tswitch(pos) {\n\t\t\t\tcase \"before\":\n\t\t\t\t\tpos = $.inArray(par.id, new_par.children);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"after\" :\n\t\t\t\t\tpos = $.inArray(par.id, new_par.children) + 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inside\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\tpos = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"last\":\n\t\t\t\t\tpos = new_par.children.length;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif(!pos) { pos = 0; }\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(pos > new_par.children.length) { pos = new_par.children.length; }\n\t\t\tif(!this.check(\"move_node\", obj, new_par, pos, { 'core' : true, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(obj.parent === new_par.id) {\n\t\t\t\tdpc = new_par.children.concat();\n\t\t\t\ttmp = $.inArray(obj.id, dpc);\n\t\t\t\tif(tmp !== -1) {\n\t\t\t\t\tdpc = $.vakata.array_remove(dpc, tmp);\n\t\t\t\t\tif(pos > tmp) { pos--; }\n\t\t\t\t}\n\t\t\t\ttmp = [];\n\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\ttmp[i >= pos ? i+1 : i] = dpc[i];\n\t\t\t\t}\n\t\t\t\ttmp[pos] = obj.id;\n\t\t\t\tnew_par.children = tmp;\n\t\t\t\tthis._node_changed(new_par.id);\n\t\t\t\tthis.redraw(new_par.id === '#');\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// clean old parent and up\n\t\t\t\ttmp = obj.children_d.concat();\n\t\t\t\ttmp.push(obj.id);\n\t\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\t\tdpc = [];\n\t\t\t\t\tp = old_ins._model.data[obj.parents[i]].children_d;\n\t\t\t\t\tfor(k = 0, l = p.length; k < l; k++) {\n\t\t\t\t\t\tif($.inArray(p[k], tmp) === -1) {\n\t\t\t\t\t\t\tdpc.push(p[k]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\told_ins._model.data[obj.parents[i]].children_d = dpc;\n\t\t\t\t}\n\t\t\t\told_ins._model.data[old_par].children = $.vakata.array_remove_item(old_ins._model.data[old_par].children, obj.id);\n\n\t\t\t\t// insert into new parent and up\n\t\t\t\tfor(i = 0, j = new_par.parents.length; i < j; i++) {\n\t\t\t\t\tthis._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(tmp);\n\t\t\t\t}\n\t\t\t\tdpc = [];\n\t\t\t\tfor(i = 0, j = new_par.children.length; i < j; i++) {\n\t\t\t\t\tdpc[i >= pos ? i+1 : i] = new_par.children[i];\n\t\t\t\t}\n\t\t\t\tdpc[pos] = obj.id;\n\t\t\t\tnew_par.children = dpc;\n\t\t\t\tnew_par.children_d.push(obj.id);\n\t\t\t\tnew_par.children_d = new_par.children_d.concat(obj.children_d);\n\n\t\t\t\t// update object\n\t\t\t\tobj.parent = new_par.id;\n\t\t\t\ttmp = new_par.parents.concat();\n\t\t\t\ttmp.unshift(new_par.id);\n\t\t\t\tp = obj.parents.length;\n\t\t\t\tobj.parents = tmp;\n\n\t\t\t\t// update object children\n\t\t\t\ttmp = tmp.concat();\n\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\tthis._model.data[obj.children_d[i]].parents = this._model.data[obj.children_d[i]].parents.slice(0,p*-1);\n\t\t\t\t\tArray.prototype.push.apply(this._model.data[obj.children_d[i]].parents, tmp);\n\t\t\t\t}\n\n\t\t\t\tthis._node_changed(old_par);\n\t\t\t\tthis._node_changed(new_par.id);\n\t\t\t\tthis.redraw(old_par === '#' || new_par.id === '#');\n\t\t\t}\n\t\t\tif(callback) { callback.call(this, obj, new_par, pos); }\n\t\t\t/**\n\t\t\t * triggered when a node is moved\n\t\t\t * @event\n\t\t\t * @name move_node.jstree\n\t\t\t * @param {Object} node\n\t\t\t * @param {String} parent the parent's ID\n\t\t\t * @param {Number} position the position of the node among the parent's children\n\t\t\t * @param {String} old_parent the old parent of the node\n\t\t\t * @param {Number} old_position the old position of the node\n\t\t\t * @param {Boolean} is_multi do the node and new parent belong to different instances\n\t\t\t * @param {jsTree} old_instance the instance the node came from\n\t\t\t * @param {jsTree} new_instance the instance of the new parent\n\t\t\t */\n\t\t\tthis.trigger('move_node', { \"node\" : obj, \"parent\" : new_par.id, \"position\" : pos, \"old_parent\" : old_par, \"old_position\" : old_pos, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this });\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * copy a node to a new parent\n\t\t * @name copy_node(obj, par [, pos, callback, is_loaded])\n\t\t * @param  {mixed} obj the node to copy, pass an array to copy multiple nodes\n\t\t * @param  {mixed} par the new parent\n\t\t * @param  {mixed} pos the position to insert at (besides integer values, \"first\" and \"last\" are supported, as well as \"before\" and \"after\"), defaults to integer `0`\n\t\t * @param  {function} callback a function to call once the move is completed, receives 3 arguments - the node, the new parent and the position\n\t\t * @param  {Boolean} internal parameter indicating if the parent node has been loaded\n\t\t * @trigger model.jstree copy_node.jstree\n\t\t */\n\t\tcopy_node : function (obj, par, pos, callback, is_loaded) {\n\t\t\tvar t1, t2, dpc, tmp, i, j, node, old_par, new_par, old_ins, is_multi;\n\n\t\t\tpar = this.get_node(par);\n\t\t\tpos = pos === undefined ? 0 : pos;\n\t\t\tif(!par) { return false; }\n\t\t\tif(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) {\n\t\t\t\treturn this.load_node(par, function () { this.copy_node(obj, par, pos, callback, true); });\n\t\t\t}\n\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.reverse().slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.copy_node(obj[t1], par, pos, callback, is_loaded);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\n\t\t\told_par = (obj.parent || '#').toString();\n\t\t\tnew_par = (!pos.toString().match(/^(before|after)$/) || par.id === '#') ? par : this.get_node(par.parent);\n\t\t\told_ins = obj.instance ? obj.instance : (this._model.data[obj.id] ? this : $.jstree.reference(obj.id));\n\t\t\tis_multi = !old_ins || !old_ins._id || (this._id !== old_ins._id);\n\t\t\tif(new_par.id === '#') {\n\t\t\t\tif(pos === \"before\") { pos = \"first\"; }\n\t\t\t\tif(pos === \"after\") { pos = \"last\"; }\n\t\t\t}\n\t\t\tswitch(pos) {\n\t\t\t\tcase \"before\":\n\t\t\t\t\tpos = $.inArray(par.id, new_par.children);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"after\" :\n\t\t\t\t\tpos = $.inArray(par.id, new_par.children) + 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inside\":\n\t\t\t\tcase \"first\":\n\t\t\t\t\tpos = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"last\":\n\t\t\t\t\tpos = new_par.children.length;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif(!pos) { pos = 0; }\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(pos > new_par.children.length) { pos = new_par.children.length; }\n\t\t\tif(!this.check(\"copy_node\", obj, new_par, pos, { 'core' : true, 'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id) })) {\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tnode = old_ins ? old_ins.get_json(obj, { no_id : true, no_data : true, no_state : true }) : obj;\n\t\t\tif(!node) { return false; }\n\t\t\tif(node.id === true) { delete node.id; }\n\t\t\tnode = this._parse_model_from_json(node, new_par.id, new_par.parents.concat());\n\t\t\tif(!node) { return false; }\n\t\t\ttmp = this.get_node(node);\n\t\t\tif(obj && obj.state && obj.state.loaded === false) { tmp.state.loaded = false; }\n\t\t\tdpc = [];\n\t\t\tdpc.push(node);\n\t\t\tdpc = dpc.concat(tmp.children_d);\n\t\t\tthis.trigger('model', { \"nodes\" : dpc, \"parent\" : new_par.id });\n\n\t\t\t// insert into new parent and up\n\t\t\tfor(i = 0, j = new_par.parents.length; i < j; i++) {\n\t\t\t\tthis._model.data[new_par.parents[i]].children_d = this._model.data[new_par.parents[i]].children_d.concat(dpc);\n\t\t\t}\n\t\t\tdpc = [];\n\t\t\tfor(i = 0, j = new_par.children.length; i < j; i++) {\n\t\t\t\tdpc[i >= pos ? i+1 : i] = new_par.children[i];\n\t\t\t}\n\t\t\tdpc[pos] = tmp.id;\n\t\t\tnew_par.children = dpc;\n\t\t\tnew_par.children_d.push(tmp.id);\n\t\t\tnew_par.children_d = new_par.children_d.concat(tmp.children_d);\n\n\t\t\tthis._node_changed(new_par.id);\n\t\t\tthis.redraw(new_par.id === '#');\n\t\t\tif(callback) { callback.call(this, tmp, new_par, pos); }\n\t\t\t/**\n\t\t\t * triggered when a node is copied\n\t\t\t * @event\n\t\t\t * @name copy_node.jstree\n\t\t\t * @param {Object} node the copied node\n\t\t\t * @param {Object} original the original node\n\t\t\t * @param {String} parent the parent's ID\n\t\t\t * @param {Number} position the position of the node among the parent's children\n\t\t\t * @param {String} old_parent the old parent of the node\n\t\t\t * @param {Number} old_position the position of the original node\n\t\t\t * @param {Boolean} is_multi do the node and new parent belong to different instances\n\t\t\t * @param {jsTree} old_instance the instance the node came from\n\t\t\t * @param {jsTree} new_instance the instance of the new parent\n\t\t\t */\n\t\t\tthis.trigger('copy_node', { \"node\" : tmp, \"original\" : obj, \"parent\" : new_par.id, \"position\" : pos, \"old_parent\" : old_par, \"old_position\" : old_ins && old_ins._id && old_par && old_ins._model.data[old_par] && old_ins._model.data[old_par].children ? $.inArray(obj.id, old_ins._model.data[old_par].children) : -1,'is_multi' : (old_ins && old_ins._id && old_ins._id !== this._id), 'is_foreign' : (!old_ins || !old_ins._id), 'old_instance' : old_ins, 'new_instance' : this });\n\t\t\treturn tmp.id;\n\t\t},\n\t\t/**\n\t\t * cut a node (a later call to `paste(obj)` would move the node)\n\t\t * @name cut(obj)\n\t\t * @param  {mixed} obj multiple objects can be passed using an array\n\t\t * @trigger cut.jstree\n\t\t */\n\t\tcut : function (obj) {\n\t\t\tif(!obj) { obj = this._data.core.selected.concat(); }\n\t\t\tif(!$.isArray(obj)) { obj = [obj]; }\n\t\t\tif(!obj.length) { return false; }\n\t\t\tvar tmp = [], o, t1, t2;\n\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\to = this.get_node(obj[t1]);\n\t\t\t\tif(o && o.id && o.id !== '#') { tmp.push(o); }\n\t\t\t}\n\t\t\tif(!tmp.length) { return false; }\n\t\t\tccp_node = tmp;\n\t\t\tccp_inst = this;\n\t\t\tccp_mode = 'move_node';\n\t\t\t/**\n\t\t\t * triggered when nodes are added to the buffer for moving\n\t\t\t * @event\n\t\t\t * @name cut.jstree\n\t\t\t * @param {Array} node\n\t\t\t */\n\t\t\tthis.trigger('cut', { \"node\" : obj });\n\t\t},\n\t\t/**\n\t\t * copy a node (a later call to `paste(obj)` would copy the node)\n\t\t * @name copy(obj)\n\t\t * @param  {mixed} obj multiple objects can be passed using an array\n\t\t * @trigger copy.jstre\n\t\t */\n\t\tcopy : function (obj) {\n\t\t\tif(!obj) { obj = this._data.core.selected.concat(); }\n\t\t\tif(!$.isArray(obj)) { obj = [obj]; }\n\t\t\tif(!obj.length) { return false; }\n\t\t\tvar tmp = [], o, t1, t2;\n\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\to = this.get_node(obj[t1]);\n\t\t\t\tif(o && o.id && o.id !== '#') { tmp.push(o); }\n\t\t\t}\n\t\t\tif(!tmp.length) { return false; }\n\t\t\tccp_node = tmp;\n\t\t\tccp_inst = this;\n\t\t\tccp_mode = 'copy_node';\n\t\t\t/**\n\t\t\t * triggered when nodes are added to the buffer for copying\n\t\t\t * @event\n\t\t\t * @name copy.jstree\n\t\t\t * @param {Array} node\n\t\t\t */\n\t\t\tthis.trigger('copy', { \"node\" : obj });\n\t\t},\n\t\t/**\n\t\t * get the current buffer (any nodes that are waiting for a paste operation)\n\t\t * @name get_buffer()\n\t\t * @return {Object} an object consisting of `mode` (\"copy_node\" or \"move_node\"), `node` (an array of objects) and `inst` (the instance)\n\t\t */\n\t\tget_buffer : function () {\n\t\t\treturn { 'mode' : ccp_mode, 'node' : ccp_node, 'inst' : ccp_inst };\n\t\t},\n\t\t/**\n\t\t * check if there is something in the buffer to paste\n\t\t * @name can_paste()\n\t\t * @return {Boolean}\n\t\t */\n\t\tcan_paste : function () {\n\t\t\treturn ccp_mode !== false && ccp_node !== false; // && ccp_inst._model.data[ccp_node];\n\t\t},\n\t\t/**\n\t\t * copy or move the previously cut or copied nodes to a new parent\n\t\t * @name paste(obj [, pos])\n\t\t * @param  {mixed} obj the new parent\n\t\t * @param  {mixed} pos the position to insert at (besides integer, \"first\" and \"last\" are supported), defaults to integer `0`\n\t\t * @trigger paste.jstree\n\t\t */\n\t\tpaste : function (obj, pos) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || !ccp_mode || !ccp_mode.match(/^(copy_node|move_node)$/) || !ccp_node) { return false; }\n\t\t\tif(this[ccp_mode](ccp_node, obj, pos)) {\n\t\t\t\t/**\n\t\t\t\t * triggered when paste is invoked\n\t\t\t\t * @event\n\t\t\t\t * @name paste.jstree\n\t\t\t\t * @param {String} parent the ID of the receiving node\n\t\t\t\t * @param {Array} node the nodes in the buffer\n\t\t\t\t * @param {String} mode the performed operation - \"copy_node\" or \"move_node\"\n\t\t\t\t */\n\t\t\t\tthis.trigger('paste', { \"parent\" : obj.id, \"node\" : ccp_node, \"mode\" : ccp_mode });\n\t\t\t}\n\t\t\tccp_node = false;\n\t\t\tccp_mode = false;\n\t\t\tccp_inst = false;\n\t\t},\n\t\t/**\n\t\t * put a node in edit mode (input field to rename the node)\n\t\t * @name edit(obj [, default_text])\n\t\t * @param  {mixed} obj\n\t\t * @param  {String} default_text the text to populate the input with (if omitted the node text value is used)\n\t\t */\n\t\tedit : function (obj, default_text) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) { return false; }\n\t\t\tif(this.settings.core.check_callback === false) {\n\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_07', 'reason' : 'Could not edit node because of check_callback' };\n\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdefault_text = typeof default_text === 'string' ? default_text : obj.text;\n\t\t\tthis.set_text(obj, \"\");\n\t\t\tobj = this._open_to(obj);\n\n\t\t\tvar rtl = this._data.core.rtl,\n\t\t\t\tw  = this.element.width(),\n\t\t\t\ta  = obj.children('.jstree-anchor'),\n\t\t\t\ts  = $('<span>'),\n\t\t\t\t/*!\n\t\t\t\toi = obj.children(\"i:visible\"),\n\t\t\t\tai = a.children(\"i:visible\"),\n\t\t\t\tw1 = oi.width() * oi.length,\n\t\t\t\tw2 = ai.width() * ai.length,\n\t\t\t\t*/\n\t\t\t\tt  = default_text,\n\t\t\t\th1 = $(\"<\"+\"div />\", { css : { \"position\" : \"absolute\", \"top\" : \"-200px\", \"left\" : (rtl ? \"0px\" : \"-1000px\"), \"visibility\" : \"hidden\" } }).appendTo(\"body\"),\n\t\t\t\th2 = $(\"<\"+\"input />\", {\n\t\t\t\t\t\t\"value\" : t,\n\t\t\t\t\t\t\"class\" : \"jstree-rename-input\",\n\t\t\t\t\t\t// \"size\" : t.length,\n\t\t\t\t\t\t\"css\" : {\n\t\t\t\t\t\t\t\"padding\" : \"0\",\n\t\t\t\t\t\t\t\"border\" : \"1px solid silver\",\n\t\t\t\t\t\t\t\"box-sizing\" : \"border-box\",\n\t\t\t\t\t\t\t\"display\" : \"inline-block\",\n\t\t\t\t\t\t\t\"height\" : (this._data.core.li_height) + \"px\",\n\t\t\t\t\t\t\t\"lineHeight\" : (this._data.core.li_height) + \"px\",\n\t\t\t\t\t\t\t\"width\" : \"150px\" // will be set a bit further down\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"blur\" : $.proxy(function () {\n\t\t\t\t\t\t\tvar i = s.children(\".jstree-rename-input\"),\n\t\t\t\t\t\t\t\tv = i.val();\n\t\t\t\t\t\t\tif(v === \"\") { v = t; }\n\t\t\t\t\t\t\th1.remove();\n\t\t\t\t\t\t\ts.replaceWith(a);\n\t\t\t\t\t\t\ts.remove();\n\t\t\t\t\t\t\tthis.set_text(obj, t);\n\t\t\t\t\t\t\tif(this.rename_node(obj, $('<div></div>').text(v)[this.settings.core.force_text ? 'text' : 'html']()) === false) {\n\t\t\t\t\t\t\t\tthis.set_text(obj, t); // move this up? and fix #483\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\t\"keydown\" : function (event) {\n\t\t\t\t\t\t\tvar key = event.which;\n\t\t\t\t\t\t\tif(key === 27) {\n\t\t\t\t\t\t\t\tthis.value = t;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(key === 27 || key === 13 || key === 37 || key === 38 || key === 39 || key === 40 || key === 32) {\n\t\t\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(key === 27 || key === 13) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tthis.blur();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"click\" : function (e) { e.stopImmediatePropagation(); },\n\t\t\t\t\t\t\"mousedown\" : function (e) { e.stopImmediatePropagation(); },\n\t\t\t\t\t\t\"keyup\" : function (event) {\n\t\t\t\t\t\t\th2.width(Math.min(h1.text(\"pW\" + this.value).width(),w));\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"keypress\" : function(event) {\n\t\t\t\t\t\t\tif(event.which === 13) { return false; }\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\tfn = {\n\t\t\t\t\t\tfontFamily\t\t: a.css('fontFamily')\t\t|| '',\n\t\t\t\t\t\tfontSize\t\t: a.css('fontSize')\t\t\t|| '',\n\t\t\t\t\t\tfontWeight\t\t: a.css('fontWeight')\t\t|| '',\n\t\t\t\t\t\tfontStyle\t\t: a.css('fontStyle')\t\t|| '',\n\t\t\t\t\t\tfontStretch\t\t: a.css('fontStretch')\t\t|| '',\n\t\t\t\t\t\tfontVariant\t\t: a.css('fontVariant')\t\t|| '',\n\t\t\t\t\t\tletterSpacing\t: a.css('letterSpacing')\t|| '',\n\t\t\t\t\t\twordSpacing\t\t: a.css('wordSpacing')\t\t|| ''\n\t\t\t\t};\n\t\t\ts.attr('class', a.attr('class')).append(a.contents().clone()).append(h2);\n\t\t\ta.replaceWith(s);\n\t\t\th1.css(fn);\n\t\t\th2.css(fn).width(Math.min(h1.text(\"pW\" + h2[0].value).width(),w))[0].select();\n\t\t},\n\n\n\t\t/**\n\t\t * changes the theme\n\t\t * @name set_theme(theme_name [, theme_url])\n\t\t * @param {String} theme_name the name of the new theme to apply\n\t\t * @param {mixed} theme_url  the location of the CSS file for this theme. Omit or set to `false` if you manually included the file. Set to `true` to autoload from the `core.themes.dir` directory.\n\t\t * @trigger set_theme.jstree\n\t\t */\n\t\tset_theme : function (theme_name, theme_url) {\n\t\t\tif(!theme_name) { return false; }\n\t\t\tif(theme_url === true) {\n\t\t\t\tvar dir = this.settings.core.themes.dir;\n\t\t\t\tif(!dir) { dir = $.jstree.path + '/themes'; }\n\t\t\t\ttheme_url = dir + '/' + theme_name + '/style.css';\n\t\t\t}\n\t\t\tif(theme_url && $.inArray(theme_url, themes_loaded) === -1) {\n\t\t\t\t$('head').append('<'+'link rel=\"stylesheet\" href=\"' + theme_url + '\" type=\"text/css\" />');\n\t\t\t\tthemes_loaded.push(theme_url);\n\t\t\t}\n\t\t\tif(this._data.core.themes.name) {\n\t\t\t\tthis.element.removeClass('jstree-' + this._data.core.themes.name);\n\t\t\t}\n\t\t\tthis._data.core.themes.name = theme_name;\n\t\t\tthis.element.addClass('jstree-' + theme_name);\n\t\t\tthis.element[this.settings.core.themes.responsive ? 'addClass' : 'removeClass' ]('jstree-' + theme_name + '-responsive');\n\t\t\t/**\n\t\t\t * triggered when a theme is set\n\t\t\t * @event\n\t\t\t * @name set_theme.jstree\n\t\t\t * @param {String} theme the new theme\n\t\t\t */\n\t\t\tthis.trigger('set_theme', { 'theme' : theme_name });\n\t\t},\n\t\t/**\n\t\t * gets the name of the currently applied theme name\n\t\t * @name get_theme()\n\t\t * @return {String}\n\t\t */\n\t\tget_theme : function () { return this._data.core.themes.name; },\n\t\t/**\n\t\t * changes the theme variant (if the theme has variants)\n\t\t * @name set_theme_variant(variant_name)\n\t\t * @param {String|Boolean} variant_name the variant to apply (if `false` is used the current variant is removed)\n\t\t */\n\t\tset_theme_variant : function (variant_name) {\n\t\t\tif(this._data.core.themes.variant) {\n\t\t\t\tthis.element.removeClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant);\n\t\t\t}\n\t\t\tthis._data.core.themes.variant = variant_name;\n\t\t\tif(variant_name) {\n\t\t\t\tthis.element.addClass('jstree-' + this._data.core.themes.name + '-' + this._data.core.themes.variant);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * gets the name of the currently applied theme variant\n\t\t * @name get_theme()\n\t\t * @return {String}\n\t\t */\n\t\tget_theme_variant : function () { return this._data.core.themes.variant; },\n\t\t/**\n\t\t * shows a striped background on the container (if the theme supports it)\n\t\t * @name show_stripes()\n\t\t */\n\t\tshow_stripes : function () { this._data.core.themes.stripes = true; this.get_container_ul().addClass(\"jstree-striped\"); },\n\t\t/**\n\t\t * hides the striped background on the container\n\t\t * @name hide_stripes()\n\t\t */\n\t\thide_stripes : function () { this._data.core.themes.stripes = false; this.get_container_ul().removeClass(\"jstree-striped\"); },\n\t\t/**\n\t\t * toggles the striped background on the container\n\t\t * @name toggle_stripes()\n\t\t */\n\t\ttoggle_stripes : function () { if(this._data.core.themes.stripes) { this.hide_stripes(); } else { this.show_stripes(); } },\n\t\t/**\n\t\t * shows the connecting dots (if the theme supports it)\n\t\t * @name show_dots()\n\t\t */\n\t\tshow_dots : function () { this._data.core.themes.dots = true; this.get_container_ul().removeClass(\"jstree-no-dots\"); },\n\t\t/**\n\t\t * hides the connecting dots\n\t\t * @name hide_dots()\n\t\t */\n\t\thide_dots : function () { this._data.core.themes.dots = false; this.get_container_ul().addClass(\"jstree-no-dots\"); },\n\t\t/**\n\t\t * toggles the connecting dots\n\t\t * @name toggle_dots()\n\t\t */\n\t\ttoggle_dots : function () { if(this._data.core.themes.dots) { this.hide_dots(); } else { this.show_dots(); } },\n\t\t/**\n\t\t * show the node icons\n\t\t * @name show_icons()\n\t\t */\n\t\tshow_icons : function () { this._data.core.themes.icons = true; this.get_container_ul().removeClass(\"jstree-no-icons\"); },\n\t\t/**\n\t\t * hide the node icons\n\t\t * @name hide_icons()\n\t\t */\n\t\thide_icons : function () { this._data.core.themes.icons = false; this.get_container_ul().addClass(\"jstree-no-icons\"); },\n\t\t/**\n\t\t * toggle the node icons\n\t\t * @name toggle_icons()\n\t\t */\n\t\ttoggle_icons : function () { if(this._data.core.themes.icons) { this.hide_icons(); } else { this.show_icons(); } },\n\t\t/**\n\t\t * set the node icon for a node\n\t\t * @name set_icon(obj, icon)\n\t\t * @param {mixed} obj\n\t\t * @param {String} icon the new icon - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class\n\t\t */\n\t\tset_icon : function (obj, icon) {\n\t\t\tvar t1, t2, dom, old;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.set_icon(obj[t1], icon);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\told = obj.icon;\n\t\t\tobj.icon = icon;\n\t\t\tdom = this.get_node(obj, true).children(\".jstree-anchor\").children(\".jstree-themeicon\");\n\t\t\tif(icon === false) {\n\t\t\t\tthis.hide_icon(obj);\n\t\t\t}\n\t\t\telse if(icon === true) {\n\t\t\t\tdom.removeClass('jstree-themeicon-custom ' + old).css(\"background\",\"\").removeAttr(\"rel\");\n\t\t\t}\n\t\t\telse if(icon.indexOf(\"/\") === -1 && icon.indexOf(\".\") === -1) {\n\t\t\t\tdom.removeClass(old).css(\"background\",\"\");\n\t\t\t\tdom.addClass(icon + ' jstree-themeicon-custom').attr(\"rel\",icon);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdom.removeClass(old).css(\"background\",\"\");\n\t\t\t\tdom.addClass('jstree-themeicon-custom').css(\"background\", \"url('\" + icon + \"') center center no-repeat\").attr(\"rel\",icon);\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * get the node icon for a node\n\t\t * @name get_icon(obj)\n\t\t * @param {mixed} obj\n\t\t * @return {String}\n\t\t */\n\t\tget_icon : function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn (!obj || obj.id === '#') ? false : obj.icon;\n\t\t},\n\t\t/**\n\t\t * hide the icon on an individual node\n\t\t * @name hide_icon(obj)\n\t\t * @param {mixed} obj\n\t\t */\n\t\thide_icon : function (obj) {\n\t\t\tvar t1, t2;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.hide_icon(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj === '#') { return false; }\n\t\t\tobj.icon = false;\n\t\t\tthis.get_node(obj, true).children(\".jstree-anchor\").children(\".jstree-themeicon\").addClass('jstree-themeicon-hidden');\n\t\t\treturn true;\n\t\t},\n\t\t/**\n\t\t * show the icon on an individual node\n\t\t * @name show_icon(obj)\n\t\t * @param {mixed} obj\n\t\t */\n\t\tshow_icon : function (obj) {\n\t\t\tvar t1, t2, dom;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.show_icon(obj[t1]);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj === '#') { return false; }\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tobj.icon = dom.length ? dom.children(\".jstree-anchor\").children(\".jstree-themeicon\").attr('rel') : true;\n\t\t\tif(!obj.icon) { obj.icon = true; }\n\t\t\tdom.children(\".jstree-anchor\").children(\".jstree-themeicon\").removeClass('jstree-themeicon-hidden');\n\t\t\treturn true;\n\t\t}\n\t};\n\n\t// helpers\n\t$.vakata = {};\n\t// collect attributes\n\t$.vakata.attributes = function(node, with_values) {\n\t\tnode = $(node)[0];\n\t\tvar attr = with_values ? {} : [];\n\t\tif(node && node.attributes) {\n\t\t\t$.each(node.attributes, function (i, v) {\n\t\t\t\tif($.inArray(v.name.toLowerCase(),['style','contenteditable','hasfocus','tabindex']) !== -1) { return; }\n\t\t\t\tif(v.value !== null && $.trim(v.value) !== '') {\n\t\t\t\t\tif(with_values) { attr[v.name] = v.value; }\n\t\t\t\t\telse { attr.push(v.name); }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn attr;\n\t};\n\t$.vakata.array_unique = function(array) {\n\t\tvar a = [], i, j, l;\n\t\tfor(i = 0, l = array.length; i < l; i++) {\n\t\t\tfor(j = 0; j <= i; j++) {\n\t\t\t\tif(array[i] === array[j]) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(j === i) { a.push(array[i]); }\n\t\t}\n\t\treturn a;\n\t};\n\t// remove item from array\n\t$.vakata.array_remove = function(array, from, to) {\n\t\tvar rest = array.slice((to || from) + 1 || array.length);\n\t\tarray.length = from < 0 ? array.length + from : from;\n\t\tarray.push.apply(array, rest);\n\t\treturn array;\n\t};\n\t// remove item from array\n\t$.vakata.array_remove_item = function(array, item) {\n\t\tvar tmp = $.inArray(item, array);\n\t\treturn tmp !== -1 ? $.vakata.array_remove(array, tmp) : array;\n\t};\n\n/**\n * ### Checkbox plugin\n *\n * This plugin renders checkbox icons in front of each node, making multiple selection much easier. \n * It also supports tri-state behavior, meaning that if a node has a few of its children checked it will be rendered as undetermined, and state will be propagated up.\n */\n\n\tvar _i = document.createElement('I');\n\t_i.className = 'jstree-icon jstree-checkbox';\n\t/**\n\t * stores all defaults for the checkbox plugin\n\t * @name $.jstree.defaults.checkbox\n\t * @plugin checkbox\n\t */\n\t$.jstree.defaults.checkbox = {\n\t\t/**\n\t\t * a boolean indicating if checkboxes should be visible (can be changed at a later time using `show_checkboxes()` and `hide_checkboxes`). Defaults to `true`.\n\t\t * @name $.jstree.defaults.checkbox.visible\n\t\t * @plugin checkbox\n\t\t */\n\t\tvisible\t\t\t\t: true,\n\t\t/**\n\t\t * a boolean indicating if checkboxes should cascade down and have an undetermined state. Defaults to `true`.\n\t\t * @name $.jstree.defaults.checkbox.three_state\n\t\t * @plugin checkbox\n\t\t */\n\t\tthree_state\t\t\t: true,\n\t\t/**\n\t\t * a boolean indicating if clicking anywhere on the node should act as clicking on the checkbox. Defaults to `true`.\n\t\t * @name $.jstree.defaults.checkbox.whole_node\n\t\t * @plugin checkbox\n\t\t */\n\t\twhole_node\t\t\t: true,\n\t\t/**\n\t\t * a boolean indicating if the selected style of a node should be kept, or removed. Defaults to `true`.\n\t\t * @name $.jstree.defaults.checkbox.keep_selected_style\n\t\t * @plugin checkbox\n\t\t */\n\t\tkeep_selected_style\t: true,\n\t\t/**\n\t\t * This setting controls how cascading and undetermined nodes are applied. \n\t\t * If 'up' is in the string - cascading up is enabled, if 'down' is in the string - cascading down is enabled, if 'undetermined' is in the string - undetermined nodes will be used. \n\t\t * If `three_state` is set to `true` this setting is automatically set to 'up+down+undetermined'. Defaults to ''.\n\t\t * @name $.jstree.defaults.checkbox.cascade\n\t\t * @plugin checkbox\n\t\t */\n\t\tcascade\t\t\t\t: '',\n\t\t/**\n\t\t * This setting controls if checkbox are bound to the general tree selection or to an internal array maintained by the checkbox plugin. Defaults to `true`, only set to `false` if you know exactly what you are doing. \n\t\t * @name $.jstree.defaults.checkbox.tie_selection\n\t\t * @plugin checkbox\n\t\t */\n\t\ttie_selection\t\t: true\n\t};\n\t$.jstree.plugins.checkbox = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\t\t\tthis._data.checkbox.uto = false;\n\t\t\tthis._data.checkbox.selected = [];\n\t\t\tif(this.settings.checkbox.three_state) {\n\t\t\t\tthis.settings.checkbox.cascade = 'up+down+undetermined';\n\t\t\t}\n\t\t\tthis.element\n\t\t\t\t.on(\"init.jstree\", $.proxy(function () {\n\t\t\t\t\t\tthis._data.checkbox.visible = this.settings.checkbox.visible;\n\t\t\t\t\t\tif(!this.settings.checkbox.keep_selected_style) {\n\t\t\t\t\t\t\tthis.element.addClass('jstree-checkbox-no-clicked');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(this.settings.checkbox.tie_selection) {\n\t\t\t\t\t\t\tthis.element.addClass('jstree-checkbox-selection');\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"loading.jstree\", $.proxy(function () {\n\t\t\t\t\t\tthis[ this._data.checkbox.visible ? 'show_checkboxes' : 'hide_checkboxes' ]();\n\t\t\t\t\t}, this));\n\t\t\tif(this.settings.checkbox.cascade.indexOf('undetermined') !== -1) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on('changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree', $.proxy(function () {\n\t\t\t\t\t\t\t// only if undetermined is in setting\n\t\t\t\t\t\t\tif(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); }\n\t\t\t\t\t\t\tthis._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50);\n\t\t\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif(!this.settings.checkbox.tie_selection) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on('model.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\tvar m = this._model.data,\n\t\t\t\t\t\t\tp = m[data.parent],\n\t\t\t\t\t\t\tdpc = data.nodes,\n\t\t\t\t\t\t\ti, j;\n\t\t\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\t\t\tm[dpc[i]].state.checked = (m[dpc[i]].original && m[dpc[i]].original.state && m[dpc[i]].original.state.checked);\n\t\t\t\t\t\t\tif(m[dpc[i]].state.checked) {\n\t\t\t\t\t\t\t\tthis._data.checkbox.selected.push(dpc[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif(this.settings.checkbox.cascade.indexOf('up') !== -1 || this.settings.checkbox.cascade.indexOf('down') !== -1) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on('model.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\tvar m = this._model.data,\n\t\t\t\t\t\t\t\tp = m[data.parent],\n\t\t\t\t\t\t\t\tdpc = data.nodes,\n\t\t\t\t\t\t\t\tchd = [],\n\t\t\t\t\t\t\t\tc, i, j, k, l, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection;\n\n\t\t\t\t\t\t\tif(s.indexOf('down') !== -1) {\n\t\t\t\t\t\t\t\t// apply down\n\t\t\t\t\t\t\t\tif(p.state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\tm[dpc[i]].state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(dpc);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\tif(m[dpc[i]].state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\t\t\t\tfor(k = 0, l = m[dpc[i]].children_d.length; k < l; k++) {\n\t\t\t\t\t\t\t\t\t\t\t\tm[m[dpc[i]].children_d[k]].state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(m[dpc[i]].children_d);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(s.indexOf('up') !== -1) {\n\t\t\t\t\t\t\t\t// apply up\n\t\t\t\t\t\t\t\tfor(i = 0, j = p.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\tif(!m[p.children_d[i]].children.length) {\n\t\t\t\t\t\t\t\t\t\tchd.push(m[p.children_d[i]].parent);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchd = $.vakata.array_unique(chd);\n\t\t\t\t\t\t\t\tfor(k = 0, l = chd.length; k < l; k++) {\n\t\t\t\t\t\t\t\t\tp = m[chd[k]];\n\t\t\t\t\t\t\t\t\twhile(p && p.id !== '#') {\n\t\t\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\t\tc += m[p.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif(c === j) {\n\t\t\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(p.id);\n\t\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').addClass( t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tp = this.get_node(p.parent);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected);\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t.on(this.settings.checkbox.tie_selection ? 'select_node.jstree' : 'check_node.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\tvar obj = data.node,\n\t\t\t\t\t\t\t\tm = this._model.data,\n\t\t\t\t\t\t\t\tpar = this.get_node(obj.parent),\n\t\t\t\t\t\t\t\tdom = this.get_node(obj, true),\n\t\t\t\t\t\t\t\ti, j, c, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection;\n\n\t\t\t\t\t\t\t// apply down\n\t\t\t\t\t\t\tif(s.indexOf('down') !== -1) {\n\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected.concat(obj.children_d));\n\t\t\t\t\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\ttmp = m[obj.children_d[i]];\n\t\t\t\t\t\t\t\t\ttmp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\tif(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) {\n\t\t\t\t\t\t\t\t\t\ttmp.original.state.undetermined = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// apply up\n\t\t\t\t\t\t\tif(s.indexOf('up') !== -1) {\n\t\t\t\t\t\t\t\twhile(par && par.id !== '#') {\n\t\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\t\tfor(i = 0, j = par.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\tc += m[par.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif(c === j) {\n\t\t\t\t\t\t\t\t\t\tpar.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(par.id);\n\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(par, true);\n\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tpar = this.get_node(par.parent);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// apply down (process .children separately?)\n\t\t\t\t\t\t\tif(s.indexOf('down') !== -1 && dom.length) {\n\t\t\t\t\t\t\t\tdom.find('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t.on(this.settings.checkbox.tie_selection ? 'deselect_all.jstree' : 'uncheck_all.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\tvar obj = this.get_node('#'),\n\t\t\t\t\t\t\t\tm = this._model.data,\n\t\t\t\t\t\t\t\ti, j, tmp;\n\t\t\t\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\t\ttmp = m[obj.children_d[i]];\n\t\t\t\t\t\t\t\tif(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) {\n\t\t\t\t\t\t\t\t\ttmp.original.state.undetermined = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t.on(this.settings.checkbox.tie_selection ? 'deselect_node.jstree' : 'uncheck_node.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\tvar obj = data.node,\n\t\t\t\t\t\t\t\tdom = this.get_node(obj, true),\n\t\t\t\t\t\t\t\ti, j, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection;\n\t\t\t\t\t\t\tif(obj && obj.original && obj.original.state && obj.original.state.undetermined) {\n\t\t\t\t\t\t\t\tobj.original.state.undetermined = false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// apply down\n\t\t\t\t\t\t\tif(s.indexOf('down') !== -1) {\n\t\t\t\t\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\ttmp = this._model.data[obj.children_d[i]];\n\t\t\t\t\t\t\t\t\ttmp.state[ t ? 'selected' : 'checked' ] = false;\n\t\t\t\t\t\t\t\t\tif(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) {\n\t\t\t\t\t\t\t\t\t\ttmp.original.state.undetermined = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// apply up\n\t\t\t\t\t\t\tif(s.indexOf('up') !== -1) {\n\t\t\t\t\t\t\t\tfor(i = 0, j = obj.parents.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\ttmp = this._model.data[obj.parents[i]];\n\t\t\t\t\t\t\t\t\ttmp.state[ t ? 'selected' : 'checked' ] = false;\n\t\t\t\t\t\t\t\t\tif(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) {\n\t\t\t\t\t\t\t\t\t\ttmp.original.state.undetermined = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\ttmp = this.get_node(obj.parents[i], true);\n\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttmp = [];\n\t\t\t\t\t\t\tfor(i = 0, j = this._data[ t ? 'core' : 'checkbox' ].selected.length; i < j; i++) {\n\t\t\t\t\t\t\t\t// apply down + apply up\n\t\t\t\t\t\t\t\tif(\n\t\t\t\t\t\t\t\t\t(s.indexOf('down') === -1 || $.inArray(this._data[ t ? 'core' : 'checkbox' ].selected[i], obj.children_d) === -1) &&\n\t\t\t\t\t\t\t\t\t(s.indexOf('up') === -1 || $.inArray(this._data[ t ? 'core' : 'checkbox' ].selected[i], obj.parents) === -1)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\ttmp.push(this._data[ t ? 'core' : 'checkbox' ].selected[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(tmp);\n\n\t\t\t\t\t\t\t// apply down (process .children separately?)\n\t\t\t\t\t\t\tif(s.indexOf('down') !== -1 && dom.length) {\n\t\t\t\t\t\t\t\tdom.find('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif(this.settings.checkbox.cascade.indexOf('up') !== -1) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on('delete_node.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\t// apply up (whole handler)\n\t\t\t\t\t\t\tvar p = this.get_node(data.parent),\n\t\t\t\t\t\t\t\tm = this._model.data,\n\t\t\t\t\t\t\t\ti, j, c, tmp, t = this.settings.checkbox.tie_selection;\n\t\t\t\t\t\t\twhile(p && p.id !== '#') {\n\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\tc += m[p.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(c === j) {\n\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(p.id);\n\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tp = this.get_node(p.parent);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t.on('move_node.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\t\t// apply up (whole handler)\n\t\t\t\t\t\t\tvar is_multi = data.is_multi,\n\t\t\t\t\t\t\t\told_par = data.old_parent,\n\t\t\t\t\t\t\t\tnew_par = this.get_node(data.parent),\n\t\t\t\t\t\t\t\tm = this._model.data,\n\t\t\t\t\t\t\t\tp, c, i, j, tmp, t = this.settings.checkbox.tie_selection;\n\t\t\t\t\t\t\tif(!is_multi) {\n\t\t\t\t\t\t\t\tp = this.get_node(old_par);\n\t\t\t\t\t\t\t\twhile(p && p.id !== '#') {\n\t\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\t\tc += m[p.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif(c === j) {\n\t\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(p.id);\n\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tp = this.get_node(p.parent);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tp = new_par;\n\t\t\t\t\t\t\twhile(p && p.id !== '#') {\n\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t\tfor(i = 0, j = p.children.length; i < j; i++) {\n\t\t\t\t\t\t\t\t\tc += m[p.children[i]].state[ t ? 'selected' : 'checked' ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(c === j) {\n\t\t\t\t\t\t\t\t\tif(!p.state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = true;\n\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected.push(p.id);\n\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif(p.state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\t\t\t\t\t\tp.state[ t ? 'selected' : 'checked' ] = false;\n\t\t\t\t\t\t\t\t\t\tthis._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_remove_item(this._data[ t ? 'core' : 'checkbox' ].selected, p.id);\n\t\t\t\t\t\t\t\t\t\ttmp = this.get_node(p, true);\n\t\t\t\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\t\t\t\ttmp.children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tp = this.get_node(p.parent);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this));\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * set the undetermined state where and if necessary. Used internally.\n\t\t * @private\n\t\t * @name _undetermined()\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis._undetermined = function () {\n\t\t\tvar i, j, m = this._model.data, t = this.settings.checkbox.tie_selection, s = this._data[ t ? 'core' : 'checkbox' ].selected, p = [], tt = this;\n\t\t\tfor(i = 0, j = s.length; i < j; i++) {\n\t\t\t\tif(m[s[i]] && m[s[i]].parents) {\n\t\t\t\t\tp = p.concat(m[s[i]].parents);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// attempt for server side undetermined state\n\t\t\tthis.element.find('.jstree-closed').not(':has(.jstree-children)')\n\t\t\t\t.each(function () {\n\t\t\t\t\tvar tmp = tt.get_node(this), tmp2;\n\t\t\t\t\tif(!tmp.state.loaded) {\n\t\t\t\t\t\tif(tmp.original && tmp.original.state && tmp.original.state.undetermined && tmp.original.state.undetermined === true) {\n\t\t\t\t\t\t\tp.push(tmp.id);\n\t\t\t\t\t\t\tp = p.concat(tmp.parents);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tfor(i = 0, j = tmp.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\ttmp2 = m[tmp.children_d[i]];\n\t\t\t\t\t\t\tif(!tmp2.state.loaded && tmp2.original && tmp2.original.state && tmp2.original.state.undetermined && tmp2.original.state.undetermined === true) {\n\t\t\t\t\t\t\t\tp.push(tmp2.id);\n\t\t\t\t\t\t\t\tp = p.concat(tmp2.parents);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\tp = $.vakata.array_unique(p);\n\t\t\tp = $.vakata.array_remove_item(p,'#');\n\n\t\t\tthis.element.find('.jstree-undetermined').removeClass('jstree-undetermined');\n\t\t\tfor(i = 0, j = p.length; i < j; i++) {\n\t\t\t\tif(!m[p[i]].state[ t ? 'selected' : 'checked' ]) {\n\t\t\t\t\ts = this.get_node(p[i], true);\n\t\t\t\t\tif(s && s.length) {\n\t\t\t\t\t\ts.children('.jstree-anchor').children('.jstree-checkbox').addClass('jstree-undetermined');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tthis.redraw_node = function(obj, deep, is_callback) {\n\t\t\tobj = parent.redraw_node.call(this, obj, deep, is_callback);\n\t\t\tif(obj) {\n\t\t\t\tvar i, j, tmp = null;\n\t\t\t\tfor(i = 0, j = obj.childNodes.length; i < j; i++) {\n\t\t\t\t\tif(obj.childNodes[i] && obj.childNodes[i].className && obj.childNodes[i].className.indexOf(\"jstree-anchor\") !== -1) {\n\t\t\t\t\t\ttmp = obj.childNodes[i];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(tmp) {\n\t\t\t\t\tif(!this.settings.checkbox.tie_selection && this._model.data[obj.id].state.checked) { tmp.className += ' jstree-checked'; }\n\t\t\t\t\ttmp.insertBefore(_i.cloneNode(false), tmp.childNodes[0]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!is_callback && this.settings.checkbox.cascade.indexOf('undetermined') !== -1) {\n\t\t\t\tif(this._data.checkbox.uto) { clearTimeout(this._data.checkbox.uto); }\n\t\t\t\tthis._data.checkbox.uto = setTimeout($.proxy(this._undetermined, this), 50);\n\t\t\t}\n\t\t\treturn obj;\n\t\t};\n\t\t/**\n\t\t * show the node checkbox icons\n\t\t * @name show_checkboxes()\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.show_checkboxes = function () { this._data.core.themes.checkboxes = true; this.get_container_ul().removeClass(\"jstree-no-checkboxes\"); };\n\t\t/**\n\t\t * hide the node checkbox icons\n\t\t * @name hide_checkboxes()\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.hide_checkboxes = function () { this._data.core.themes.checkboxes = false; this.get_container_ul().addClass(\"jstree-no-checkboxes\"); };\n\t\t/**\n\t\t * toggle the node icons\n\t\t * @name toggle_checkboxes()\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.toggle_checkboxes = function () { if(this._data.core.themes.checkboxes) { this.hide_checkboxes(); } else { this.show_checkboxes(); } };\n\t\t/**\n\t\t * checks if a node is in an undetermined state\n\t\t * @name is_undetermined(obj)\n\t\t * @param  {mixed} obj\n\t\t * @return {Boolean}\n\t\t */\n\t\tthis.is_undetermined = function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tvar s = this.settings.checkbox.cascade, i, j, t = this.settings.checkbox.tie_selection, d = this._data[ t ? 'core' : 'checkbox' ].selected, m = this._model.data;\n\t\t\tif(!obj || obj.state[ t ? 'selected' : 'checked' ] === true || s.indexOf('undetermined') === -1 || (s.indexOf('down') === -1 && s.indexOf('up') === -1)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif(!obj.state.loaded && obj.original.state.undetermined === true) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\tif($.inArray(obj.children_d[i], d) !== -1 || (!m[obj.children_d[i]].state.loaded && m[obj.children_d[i]].original.state.undetermined)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t\tthis.activate_node = function (obj, e) {\n\t\t\tif(this.settings.checkbox.tie_selection && (this.settings.checkbox.whole_node || $(e.target).hasClass('jstree-checkbox'))) {\n\t\t\t\te.ctrlKey = true;\n\t\t\t}\n\t\t\tif(this.settings.checkbox.tie_selection || (!this.settings.checkbox.whole_node && !$(e.target).hasClass('jstree-checkbox'))) {\n\t\t\t\treturn parent.activate_node.call(this, obj, e);\n\t\t\t}\n\t\t\tif(this.is_checked(obj)) {\n\t\t\t\tthis.uncheck_node(obj, e);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.check_node(obj, e);\n\t\t\t}\n\t\t\tthis.trigger('activate_node', { 'node' : this.get_node(obj) });\n\t\t};\n\n\t\t/**\n\t\t * check a node (only if tie_selection in checkbox settings is false, otherwise select_node will be called internally)\n\t\t * @name check_node(obj)\n\t\t * @param {mixed} obj an array can be used to check multiple nodes\n\t\t * @trigger check_node.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.check_node = function (obj, e) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.select_node(obj, false, true, e); }\n\t\t\tvar dom, t1, t2, th;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.check_node(obj[t1], e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(!obj.state.checked) {\n\t\t\t\tobj.state.checked = true;\n\t\t\t\tthis._data.checkbox.selected.push(obj.id);\n\t\t\t\tif(dom && dom.length) {\n\t\t\t\t\tdom.children('.jstree-anchor').addClass('jstree-checked');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is checked (only if tie_selection in checkbox settings is false)\n\t\t\t\t * @event\n\t\t\t\t * @name check_node.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t * @param {Object} event the event (if any) that triggered this check_node\n\t\t\t\t * @plugin checkbox\n\t\t\t\t */\n\t\t\t\tthis.trigger('check_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e });\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * uncheck a node (only if tie_selection in checkbox settings is false, otherwise deselect_node will be called internally)\n\t\t * @name deselect_node(obj)\n\t\t * @param {mixed} obj an array can be used to deselect multiple nodes\n\t\t * @trigger uncheck_node.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.uncheck_node = function (obj, e) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.deselect_node(obj, false, e); }\n\t\t\tvar t1, t2, dom;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.uncheck_node(obj[t1], e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdom = this.get_node(obj, true);\n\t\t\tif(obj.state.checked) {\n\t\t\t\tobj.state.checked = false;\n\t\t\t\tthis._data.checkbox.selected = $.vakata.array_remove_item(this._data.checkbox.selected, obj.id);\n\t\t\t\tif(dom.length) {\n\t\t\t\t\tdom.children('.jstree-anchor').removeClass('jstree-checked');\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered when an node is unchecked (only if tie_selection in checkbox settings is false)\n\t\t\t\t * @event\n\t\t\t\t * @name uncheck_node.jstree\n\t\t\t\t * @param {Object} node\n\t\t\t\t * @param {Array} selected the current selection\n\t\t\t\t * @param {Object} event the event (if any) that triggered this uncheck_node\n\t\t\t\t * @plugin checkbox\n\t\t\t\t */\n\t\t\t\tthis.trigger('uncheck_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e });\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * checks all nodes in the tree (only if tie_selection in checkbox settings is false, otherwise select_all will be called internally)\n\t\t * @name check_all()\n\t\t * @trigger check_all.jstree, changed.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.check_all = function () {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.select_all(); }\n\t\t\tvar tmp = this._data.checkbox.selected.concat([]), i, j;\n\t\t\tthis._data.checkbox.selected = this._model.data['#'].children_d.concat();\n\t\t\tfor(i = 0, j = this._data.checkbox.selected.length; i < j; i++) {\n\t\t\t\tif(this._model.data[this._data.checkbox.selected[i]]) {\n\t\t\t\t\tthis._model.data[this._data.checkbox.selected[i]].state.checked = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.redraw(true);\n\t\t\t/**\n\t\t\t * triggered when all nodes are checked (only if tie_selection in checkbox settings is false)\n\t\t\t * @event\n\t\t\t * @name check_all.jstree\n\t\t\t * @param {Array} selected the current selection\n\t\t\t * @plugin checkbox\n\t\t\t */\n\t\t\tthis.trigger('check_all', { 'selected' : this._data.checkbox.selected });\n\t\t};\n\t\t/**\n\t\t * uncheck all checked nodes (only if tie_selection in checkbox settings is false, otherwise deselect_all will be called internally)\n\t\t * @name uncheck_all()\n\t\t * @trigger uncheck_all.jstree\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.uncheck_all = function () {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.deselect_all(); }\n\t\t\tvar tmp = this._data.checkbox.selected.concat([]), i, j;\n\t\t\tfor(i = 0, j = this._data.checkbox.selected.length; i < j; i++) {\n\t\t\t\tif(this._model.data[this._data.checkbox.selected[i]]) {\n\t\t\t\t\tthis._model.data[this._data.checkbox.selected[i]].state.checked = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._data.checkbox.selected = [];\n\t\t\tthis.element.find('.jstree-checked').removeClass('jstree-checked');\n\t\t\t/**\n\t\t\t * triggered when all nodes are unchecked (only if tie_selection in checkbox settings is false)\n\t\t\t * @event\n\t\t\t * @name uncheck_all.jstree\n\t\t\t * @param {Object} node the previous selection\n\t\t\t * @param {Array} selected the current selection\n\t\t\t * @plugin checkbox\n\t\t\t */\n\t\t\tthis.trigger('uncheck_all', { 'selected' : this._data.checkbox.selected, 'node' : tmp });\n\t\t};\n\t\t/**\n\t\t * checks if a node is checked (if tie_selection is on in the settings this function will return the same as is_selected)\n\t\t * @name is_checked(obj)\n\t\t * @param  {mixed}  obj\n\t\t * @return {Boolean}\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.is_checked = function (obj) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.is_selected(obj); }\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\treturn obj.state.checked;\n\t\t};\n\t\t/**\n\t\t * get an array of all checked nodes (if tie_selection is on in the settings this function will return the same as get_selected)\n\t\t * @name get_checked([full])\n\t\t * @param  {mixed}  full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.get_checked = function (full) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.get_selected(full); }\n\t\t\treturn full ? $.map(this._data.checkbox.selected, $.proxy(function (i) { return this.get_node(i); }, this)) : this._data.checkbox.selected;\n\t\t};\n\t\t/**\n\t\t * get an array of all top level checked nodes (ignoring children of checked nodes) (if tie_selection is on in the settings this function will return the same as get_top_selected)\n\t\t * @name get_top_checked([full])\n\t\t * @param  {mixed}  full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.get_top_checked = function (full) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.get_top_selected(full); }\n\t\t\tvar tmp = this.get_checked(true),\n\t\t\t\tobj = {}, i, j, k, l;\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tobj[tmp[i].id] = tmp[i];\n\t\t\t}\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tfor(k = 0, l = tmp[i].children_d.length; k < l; k++) {\n\t\t\t\t\tif(obj[tmp[i].children_d[k]]) {\n\t\t\t\t\t\tdelete obj[tmp[i].children_d[k]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = [];\n\t\t\tfor(i in obj) {\n\t\t\t\tif(obj.hasOwnProperty(i)) {\n\t\t\t\t\ttmp.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn full ? $.map(tmp, $.proxy(function (i) { return this.get_node(i); }, this)) : tmp;\n\t\t};\n\t\t/**\n\t\t * get an array of all bottom level checked nodes (ignoring selected parents) (if tie_selection is on in the settings this function will return the same as get_bottom_selected)\n\t\t * @name get_bottom_checked([full])\n\t\t * @param  {mixed}  full if set to `true` the returned array will consist of the full node objects, otherwise - only IDs will be returned\n\t\t * @return {Array}\n\t\t * @plugin checkbox\n\t\t */\n\t\tthis.get_bottom_checked = function (full) {\n\t\t\tif(this.settings.checkbox.tie_selection) { return this.get_bottom_selected(full); }\n\t\t\tvar tmp = this.get_checked(true),\n\t\t\t\tobj = [], i, j;\n\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\tif(!tmp[i].children.length) {\n\t\t\t\t\tobj.push(tmp[i].id);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn full ? $.map(obj, $.proxy(function (i) { return this.get_node(i); }, this)) : obj;\n\t\t};\n\t};\n\n\t// include the checkbox plugin by default\n\t// $.jstree.defaults.plugins.push(\"checkbox\");\n\n/**\n * ### Contextmenu plugin\n *\n * Shows a context menu when a node is right-clicked.\n */\n// TODO: move logic outside of function + check multiple move\n\n\t/**\n\t * stores all defaults for the contextmenu plugin\n\t * @name $.jstree.defaults.contextmenu\n\t * @plugin contextmenu\n\t */\n\t$.jstree.defaults.contextmenu = {\n\t\t/**\n\t\t * a boolean indicating if the node should be selected when the context menu is invoked on it. Defaults to `true`.\n\t\t * @name $.jstree.defaults.contextmenu.select_node\n\t\t * @plugin contextmenu\n\t\t */\n\t\tselect_node : true,\n\t\t/**\n\t\t * a boolean indicating if the menu should be shown aligned with the node. Defaults to `true`, otherwise the mouse coordinates are used.\n\t\t * @name $.jstree.defaults.contextmenu.show_at_node\n\t\t * @plugin contextmenu\n\t\t */\n\t\tshow_at_node : true,\n\t\t/**\n\t\t * an object of actions, or a function that accepts a node and a callback function and calls the callback function with an object of actions available for that node (you can also return the items too).\n\t\t * \n\t\t * Each action consists of a key (a unique name) and a value which is an object with the following properties (only label and action are required):\n\t\t * \n\t\t * * `separator_before` - a boolean indicating if there should be a separator before this item\n\t\t * * `separator_after` - a boolean indicating if there should be a separator after this item\n\t\t * * `_disabled` - a boolean indicating if this action should be disabled\n\t\t * * `label` - a string - the name of the action (could be a function returning a string)\n\t\t * * `action` - a function to be executed if this item is chosen\n\t\t * * `icon` - a string, can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class\n\t\t * * `shortcut` - keyCode which will trigger the action if the menu is open (for example `113` for rename, which equals F2)\n\t\t * * `shortcut_label` - shortcut label (like for example `F2` for rename)\n\t\t * \n\t\t * @name $.jstree.defaults.contextmenu.items\n\t\t * @plugin contextmenu\n\t\t */\n\t\titems : function (o, cb) { // Could be an object directly\n\t\t\treturn {\n\t\t\t\t\"create\" : {\n\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\"separator_after\"\t: true,\n\t\t\t\t\t\"_disabled\"\t\t\t: false, //(this.check(\"create_node\", data.reference, {}, \"last\")),\n\t\t\t\t\t\"label\"\t\t\t\t: \"Create\",\n\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\tinst.create_node(obj, {}, \"last\", function (new_node) {\n\t\t\t\t\t\t\tsetTimeout(function () { inst.edit(new_node); },0);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"rename\" : {\n\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\"_disabled\"\t\t\t: false, //(this.check(\"rename_node\", data.reference, this.get_parent(data.reference), \"\")),\n\t\t\t\t\t\"label\"\t\t\t\t: \"Rename\",\n\t\t\t\t\t/*\n\t\t\t\t\t\"shortcut\"\t\t\t: 113,\n\t\t\t\t\t\"shortcut_label\"\t: 'F2',\n\t\t\t\t\t\"icon\"\t\t\t\t: \"glyphicon glyphicon-leaf\",\n\t\t\t\t\t*/\n\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\tinst.edit(obj);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"remove\" : {\n\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\"icon\"\t\t\t\t: false,\n\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\"_disabled\"\t\t\t: false, //(this.check(\"delete_node\", data.reference, this.get_parent(data.reference), \"\")),\n\t\t\t\t\t\"label\"\t\t\t\t: \"Delete\",\n\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\tif(inst.is_selected(obj)) {\n\t\t\t\t\t\t\tinst.delete_node(inst.get_selected());\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tinst.delete_node(obj);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"ccp\" : {\n\t\t\t\t\t\"separator_before\"\t: true,\n\t\t\t\t\t\"icon\"\t\t\t\t: false,\n\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\"label\"\t\t\t\t: \"Edit\",\n\t\t\t\t\t\"action\"\t\t\t: false,\n\t\t\t\t\t\"submenu\" : {\n\t\t\t\t\t\t\"cut\" : {\n\t\t\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\t\t\"label\"\t\t\t\t: \"Cut\",\n\t\t\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\t\t\tif(inst.is_selected(obj)) {\n\t\t\t\t\t\t\t\t\tinst.cut(inst.get_selected());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tinst.cut(obj);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"copy\" : {\n\t\t\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\t\t\"icon\"\t\t\t\t: false,\n\t\t\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\t\t\"label\"\t\t\t\t: \"Copy\",\n\t\t\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\t\t\tif(inst.is_selected(obj)) {\n\t\t\t\t\t\t\t\t\tinst.copy(inst.get_selected());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tinst.copy(obj);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"paste\" : {\n\t\t\t\t\t\t\t\"separator_before\"\t: false,\n\t\t\t\t\t\t\t\"icon\"\t\t\t\t: false,\n\t\t\t\t\t\t\t\"_disabled\"\t\t\t: function (data) {\n\t\t\t\t\t\t\t\treturn !$.jstree.reference(data.reference).can_paste();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"separator_after\"\t: false,\n\t\t\t\t\t\t\t\"label\"\t\t\t\t: \"Paste\",\n\t\t\t\t\t\t\t\"action\"\t\t\t: function (data) {\n\t\t\t\t\t\t\t\tvar inst = $.jstree.reference(data.reference),\n\t\t\t\t\t\t\t\t\tobj = inst.get_node(data.reference);\n\t\t\t\t\t\t\t\tinst.paste(obj);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n\n\t$.jstree.plugins.contextmenu = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\n\t\t\tvar last_ts = 0;\n\t\t\tthis.element\n\t\t\t\t.on(\"contextmenu.jstree\", \".jstree-anchor\", $.proxy(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tlast_ts = e.ctrlKey ? e.timeStamp : 0;\n\t\t\t\t\t\tif(!this.is_loading(e.currentTarget)) {\n\t\t\t\t\t\t\tthis.show_contextmenu(e.currentTarget, e.pageX, e.pageY, e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"click.jstree\", \".jstree-anchor\", $.proxy(function (e) {\n\t\t\t\t\t\tif(this._data.contextmenu.visible && (!last_ts || e.timeStamp - last_ts > 250)) { // work around safari & macOS ctrl+click\n\t\t\t\t\t\t\t$.vakata.context.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this));\n\t\t\t/*\n\t\t\tif(!('oncontextmenu' in document.body) && ('ontouchstart' in document.body)) {\n\t\t\t\tvar el = null, tm = null;\n\t\t\t\tthis.element\n\t\t\t\t\t.on(\"touchstart\", \".jstree-anchor\", function (e) {\n\t\t\t\t\t\tel = e.currentTarget;\n\t\t\t\t\t\ttm = +new Date();\n\t\t\t\t\t\t$(document).one(\"touchend\", function (e) {\n\t\t\t\t\t\t\te.target = document.elementFromPoint(e.originalEvent.targetTouches[0].pageX - window.pageXOffset, e.originalEvent.targetTouches[0].pageY - window.pageYOffset);\n\t\t\t\t\t\t\te.currentTarget = e.target;\n\t\t\t\t\t\t\ttm = ((+(new Date())) - tm);\n\t\t\t\t\t\t\tif(e.target === el && tm > 600 && tm < 1000) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t$(el).trigger('contextmenu', e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tel = null;\n\t\t\t\t\t\t\ttm = null;\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t}\n\t\t\t*/\n\t\t\t$(document).on(\"context_hide.vakata.jstree\", $.proxy(function () { this._data.contextmenu.visible = false; }, this));\n\t\t};\n\t\tthis.teardown = function () {\n\t\t\tif(this._data.contextmenu.visible) {\n\t\t\t\t$.vakata.context.hide();\n\t\t\t}\n\t\t\tparent.teardown.call(this);\n\t\t};\n\n\t\t/**\n\t\t * prepare and show the context menu for a node\n\t\t * @name show_contextmenu(obj [, x, y])\n\t\t * @param {mixed} obj the node\n\t\t * @param {Number} x the x-coordinate relative to the document to show the menu at\n\t\t * @param {Number} y the y-coordinate relative to the document to show the menu at\n\t\t * @param {Object} e the event if available that triggered the contextmenu\n\t\t * @plugin contextmenu\n\t\t * @trigger show_contextmenu.jstree\n\t\t */\n\t\tthis.show_contextmenu = function (obj, x, y, e) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj || obj.id === '#') { return false; }\n\t\t\tvar s = this.settings.contextmenu,\n\t\t\t\td = this.get_node(obj, true),\n\t\t\t\ta = d.children(\".jstree-anchor\"),\n\t\t\t\to = false,\n\t\t\t\ti = false;\n\t\t\tif(s.show_at_node || x === undefined || y === undefined) {\n\t\t\t\to = a.offset();\n\t\t\t\tx = o.left;\n\t\t\t\ty = o.top + this._data.core.li_height;\n\t\t\t}\n\t\t\tif(this.settings.contextmenu.select_node && !this.is_selected(obj)) {\n\t\t\t\tthis.activate_node(obj, e);\n\t\t\t}\n\n\t\t\ti = s.items;\n\t\t\tif($.isFunction(i)) {\n\t\t\t\ti = i.call(this, obj, $.proxy(function (i) {\n\t\t\t\t\tthis._show_contextmenu(obj, x, y, i);\n\t\t\t\t}, this));\n\t\t\t}\n\t\t\tif($.isPlainObject(i)) {\n\t\t\t\tthis._show_contextmenu(obj, x, y, i);\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * show the prepared context menu for a node\n\t\t * @name _show_contextmenu(obj, x, y, i)\n\t\t * @param {mixed} obj the node\n\t\t * @param {Number} x the x-coordinate relative to the document to show the menu at\n\t\t * @param {Number} y the y-coordinate relative to the document to show the menu at\n\t\t * @param {Number} i the object of items to show\n\t\t * @plugin contextmenu\n\t\t * @trigger show_contextmenu.jstree\n\t\t * @private\n\t\t */\n\t\tthis._show_contextmenu = function (obj, x, y, i) {\n\t\t\tvar d = this.get_node(obj, true),\n\t\t\t\ta = d.children(\".jstree-anchor\");\n\t\t\t$(document).one(\"context_show.vakata.jstree\", $.proxy(function (e, data) {\n\t\t\t\tvar cls = 'jstree-contextmenu jstree-' + this.get_theme() + '-contextmenu';\n\t\t\t\t$(data.element).addClass(cls);\n\t\t\t}, this));\n\t\t\tthis._data.contextmenu.visible = true;\n\t\t\t$.vakata.context.show(a, { 'x' : x, 'y' : y }, i);\n\t\t\t/**\n\t\t\t * triggered when the contextmenu is shown for a node\n\t\t\t * @event\n\t\t\t * @name show_contextmenu.jstree\n\t\t\t * @param {Object} node the node\n\t\t\t * @param {Number} x the x-coordinate of the menu relative to the document\n\t\t\t * @param {Number} y the y-coordinate of the menu relative to the document\n\t\t\t * @plugin contextmenu\n\t\t\t */\n\t\t\tthis.trigger('show_contextmenu', { \"node\" : obj, \"x\" : x, \"y\" : y });\n\t\t};\n\t};\n\n\t// contextmenu helper\n\t(function ($) {\n\t\tvar right_to_left = false,\n\t\t\tvakata_context = {\n\t\t\t\telement\t\t: false,\n\t\t\t\treference\t: false,\n\t\t\t\tposition_x\t: 0,\n\t\t\t\tposition_y\t: 0,\n\t\t\t\titems\t\t: [],\n\t\t\t\thtml\t\t: \"\",\n\t\t\t\tis_visible\t: false\n\t\t\t};\n\n\t\t$.vakata.context = {\n\t\t\tsettings : {\n\t\t\t\thide_onmouseleave\t: 0,\n\t\t\t\ticons\t\t\t\t: true\n\t\t\t},\n\t\t\t_trigger : function (event_name) {\n\t\t\t\t$(document).triggerHandler(\"context_\" + event_name + \".vakata\", {\n\t\t\t\t\t\"reference\"\t: vakata_context.reference,\n\t\t\t\t\t\"element\"\t: vakata_context.element,\n\t\t\t\t\t\"position\"\t: {\n\t\t\t\t\t\t\"x\" : vakata_context.position_x,\n\t\t\t\t\t\t\"y\" : vakata_context.position_y\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t_execute : function (i) {\n\t\t\t\ti = vakata_context.items[i];\n\t\t\t\treturn i && (!i._disabled || ($.isFunction(i._disabled) && !i._disabled({ \"item\" : i, \"reference\" : vakata_context.reference, \"element\" : vakata_context.element }))) && i.action ? i.action.call(null, {\n\t\t\t\t\t\t\t\"item\"\t\t: i,\n\t\t\t\t\t\t\t\"reference\"\t: vakata_context.reference,\n\t\t\t\t\t\t\t\"element\"\t: vakata_context.element,\n\t\t\t\t\t\t\t\"position\"\t: {\n\t\t\t\t\t\t\t\t\"x\" : vakata_context.position_x,\n\t\t\t\t\t\t\t\t\"y\" : vakata_context.position_y\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}) : false;\n\t\t\t},\n\t\t\t_parse : function (o, is_callback) {\n\t\t\t\tif(!o) { return false; }\n\t\t\t\tif(!is_callback) {\n\t\t\t\t\tvakata_context.html\t\t= \"\";\n\t\t\t\t\tvakata_context.items\t= [];\n\t\t\t\t}\n\t\t\t\tvar str = \"\",\n\t\t\t\t\tsep = false,\n\t\t\t\t\ttmp;\n\n\t\t\t\tif(is_callback) { str += \"<\"+\"ul>\"; }\n\t\t\t\t$.each(o, function (i, val) {\n\t\t\t\t\tif(!val) { return true; }\n\t\t\t\t\tvakata_context.items.push(val);\n\t\t\t\t\tif(!sep && val.separator_before) {\n\t\t\t\t\t\tstr += \"<\"+\"li class='vakata-context-separator'><\"+\"a href='#' \" + ($.vakata.context.settings.icons ? '' : 'style=\"margin-left:0px;\"') + \">&#160;<\"+\"/a><\"+\"/li>\";\n\t\t\t\t\t}\n\t\t\t\t\tsep = false;\n\t\t\t\t\tstr += \"<\"+\"li class='\" + (val._class || \"\") + (val._disabled === true || ($.isFunction(val._disabled) && val._disabled({ \"item\" : val, \"reference\" : vakata_context.reference, \"element\" : vakata_context.element })) ? \" vakata-contextmenu-disabled \" : \"\") + \"' \"+(val.shortcut?\" data-shortcut='\"+val.shortcut+\"' \":'')+\">\";\n\t\t\t\t\tstr += \"<\"+\"a href='#' rel='\" + (vakata_context.items.length - 1) + \"'>\";\n\t\t\t\t\tif($.vakata.context.settings.icons) {\n\t\t\t\t\t\tstr += \"<\"+\"i \";\n\t\t\t\t\t\tif(val.icon) {\n\t\t\t\t\t\t\tif(val.icon.indexOf(\"/\") !== -1 || val.icon.indexOf(\".\") !== -1) { str += \" style='background:url(\\\"\" + val.icon + \"\\\") center center no-repeat' \"; }\n\t\t\t\t\t\t\telse { str += \" class='\" + val.icon + \"' \"; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstr += \"><\"+\"/i><\"+\"span class='vakata-contextmenu-sep'>&#160;<\"+\"/span>\";\n\t\t\t\t\t}\n\t\t\t\t\tstr += ($.isFunction(val.label) ? val.label({ \"item\" : i, \"reference\" : vakata_context.reference, \"element\" : vakata_context.element }) : val.label) + (val.shortcut?' <span class=\"vakata-contextmenu-shortcut vakata-contextmenu-shortcut-'+val.shortcut+'\">'+ (val.shortcut_label || '') +'</span>':'') + \"<\"+\"/a>\";\n\t\t\t\t\tif(val.submenu) {\n\t\t\t\t\t\ttmp = $.vakata.context._parse(val.submenu, true);\n\t\t\t\t\t\tif(tmp) { str += tmp; }\n\t\t\t\t\t}\n\t\t\t\t\tstr += \"<\"+\"/li>\";\n\t\t\t\t\tif(val.separator_after) {\n\t\t\t\t\t\tstr += \"<\"+\"li class='vakata-context-separator'><\"+\"a href='#' \" + ($.vakata.context.settings.icons ? '' : 'style=\"margin-left:0px;\"') + \">&#160;<\"+\"/a><\"+\"/li>\";\n\t\t\t\t\t\tsep = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tstr  = str.replace(/<li class\\='vakata-context-separator'\\><\\/li\\>$/,\"\");\n\t\t\t\tif(is_callback) { str += \"</ul>\"; }\n\t\t\t\t/**\n\t\t\t\t * triggered on the document when the contextmenu is parsed (HTML is built)\n\t\t\t\t * @event\n\t\t\t\t * @plugin contextmenu\n\t\t\t\t * @name context_parse.vakata\n\t\t\t\t * @param {jQuery} reference the element that was right clicked\n\t\t\t\t * @param {jQuery} element the DOM element of the menu itself\n\t\t\t\t * @param {Object} position the x & y coordinates of the menu\n\t\t\t\t */\n\t\t\t\tif(!is_callback) { vakata_context.html = str; $.vakata.context._trigger(\"parse\"); }\n\t\t\t\treturn str.length > 10 ? str : false;\n\t\t\t},\n\t\t\t_show_submenu : function (o) {\n\t\t\t\to = $(o);\n\t\t\t\tif(!o.length || !o.children(\"ul\").length) { return; }\n\t\t\t\tvar e = o.children(\"ul\"),\n\t\t\t\t\tx = o.offset().left + o.outerWidth(),\n\t\t\t\t\ty = o.offset().top,\n\t\t\t\t\tw = e.width(),\n\t\t\t\t\th = e.height(),\n\t\t\t\t\tdw = $(window).width() + $(window).scrollLeft(),\n\t\t\t\t\tdh = $(window).height() + $(window).scrollTop();\n\t\t\t\t// може да се спести е една проверка - дали няма някой от класовете вече нагоре\n\t\t\t\tif(right_to_left) {\n\t\t\t\t\to[x - (w + 10 + o.outerWidth()) < 0 ? \"addClass\" : \"removeClass\"](\"vakata-context-left\");\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to[x + w + 10 > dw ? \"addClass\" : \"removeClass\"](\"vakata-context-right\");\n\t\t\t\t}\n\t\t\t\tif(y + h + 10 > dh) {\n\t\t\t\t\te.css(\"bottom\",\"-1px\");\n\t\t\t\t}\n\t\t\t\te.show();\n\t\t\t},\n\t\t\tshow : function (reference, position, data) {\n\t\t\t\tvar o, e, x, y, w, h, dw, dh, cond = true;\n\t\t\t\tif(vakata_context.element && vakata_context.element.length) {\n\t\t\t\t\tvakata_context.element.width('');\n\t\t\t\t}\n\t\t\t\tswitch(cond) {\n\t\t\t\t\tcase (!position && !reference):\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tcase (!!position && !!reference):\n\t\t\t\t\t\tvakata_context.reference\t= reference;\n\t\t\t\t\t\tvakata_context.position_x\t= position.x;\n\t\t\t\t\t\tvakata_context.position_y\t= position.y;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase (!position && !!reference):\n\t\t\t\t\t\tvakata_context.reference\t= reference;\n\t\t\t\t\t\to = reference.offset();\n\t\t\t\t\t\tvakata_context.position_x\t= o.left + reference.outerHeight();\n\t\t\t\t\t\tvakata_context.position_y\t= o.top;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase (!!position && !reference):\n\t\t\t\t\t\tvakata_context.position_x\t= position.x;\n\t\t\t\t\t\tvakata_context.position_y\t= position.y;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!!reference && !data && $(reference).data('vakata_contextmenu')) {\n\t\t\t\t\tdata = $(reference).data('vakata_contextmenu');\n\t\t\t\t}\n\t\t\t\tif($.vakata.context._parse(data)) {\n\t\t\t\t\tvakata_context.element.html(vakata_context.html);\n\t\t\t\t}\n\t\t\t\tif(vakata_context.items.length) {\n\t\t\t\t\tvakata_context.element.appendTo(\"body\");\n\t\t\t\t\te = vakata_context.element;\n\t\t\t\t\tx = vakata_context.position_x;\n\t\t\t\t\ty = vakata_context.position_y;\n\t\t\t\t\tw = e.width();\n\t\t\t\t\th = e.height();\n\t\t\t\t\tdw = $(window).width() + $(window).scrollLeft();\n\t\t\t\t\tdh = $(window).height() + $(window).scrollTop();\n\t\t\t\t\tif(right_to_left) {\n\t\t\t\t\t\tx -= e.outerWidth();\n\t\t\t\t\t\tif(x < $(window).scrollLeft() + 20) {\n\t\t\t\t\t\t\tx = $(window).scrollLeft() + 20;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(x + w + 20 > dw) {\n\t\t\t\t\t\tx = dw - (w + 20);\n\t\t\t\t\t}\n\t\t\t\t\tif(y + h + 20 > dh) {\n\t\t\t\t\t\ty = dh - (h + 20);\n\t\t\t\t\t}\n\n\t\t\t\t\tvakata_context.element\n\t\t\t\t\t\t.css({ \"left\" : x, \"top\" : y })\n\t\t\t\t\t\t.show()\n\t\t\t\t\t\t.find('a:eq(0)').focus().parent().addClass(\"vakata-context-hover\");\n\t\t\t\t\tvakata_context.is_visible = true;\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered on the document when the contextmenu is shown\n\t\t\t\t\t * @event\n\t\t\t\t\t * @plugin contextmenu\n\t\t\t\t\t * @name context_show.vakata\n\t\t\t\t\t * @param {jQuery} reference the element that was right clicked\n\t\t\t\t\t * @param {jQuery} element the DOM element of the menu itself\n\t\t\t\t\t * @param {Object} position the x & y coordinates of the menu\n\t\t\t\t\t */\n\t\t\t\t\t$.vakata.context._trigger(\"show\");\n\t\t\t\t}\n\t\t\t},\n\t\t\thide : function () {\n\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\tvakata_context.element.hide().find(\"ul\").hide().end().find(':focus').blur().end().detach();\n\t\t\t\t\tvakata_context.is_visible = false;\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered on the document when the contextmenu is hidden\n\t\t\t\t\t * @event\n\t\t\t\t\t * @plugin contextmenu\n\t\t\t\t\t * @name context_hide.vakata\n\t\t\t\t\t * @param {jQuery} reference the element that was right clicked\n\t\t\t\t\t * @param {jQuery} element the DOM element of the menu itself\n\t\t\t\t\t * @param {Object} position the x & y coordinates of the menu\n\t\t\t\t\t */\n\t\t\t\t\t$.vakata.context._trigger(\"hide\");\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\t$(function () {\n\t\t\tright_to_left = $(\"body\").css(\"direction\") === \"rtl\";\n\t\t\tvar to = false;\n\n\t\t\tvakata_context.element = $(\"<ul class='vakata-context'></ul>\");\n\t\t\tvakata_context.element\n\t\t\t\t.on(\"mouseenter\", \"li\", function (e) {\n\t\t\t\t\te.stopImmediatePropagation();\n\n\t\t\t\t\tif($.contains(this, e.relatedTarget)) {\n\t\t\t\t\t\t// премахнато заради delegate mouseleave по-долу\n\t\t\t\t\t\t// $(this).find(\".vakata-context-hover\").removeClass(\"vakata-context-hover\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(to) { clearTimeout(to); }\n\t\t\t\t\tvakata_context.element.find(\".vakata-context-hover\").removeClass(\"vakata-context-hover\").end();\n\n\t\t\t\t\t$(this)\n\t\t\t\t\t\t.siblings().find(\"ul\").hide().end().end()\n\t\t\t\t\t\t.parentsUntil(\".vakata-context\", \"li\").addBack().addClass(\"vakata-context-hover\");\n\t\t\t\t\t$.vakata.context._show_submenu(this);\n\t\t\t\t})\n\t\t\t\t// тестово - дали не натоварва?\n\t\t\t\t.on(\"mouseleave\", \"li\", function (e) {\n\t\t\t\t\tif($.contains(this, e.relatedTarget)) { return; }\n\t\t\t\t\t$(this).find(\".vakata-context-hover\").addBack().removeClass(\"vakata-context-hover\");\n\t\t\t\t})\n\t\t\t\t.on(\"mouseleave\", function (e) {\n\t\t\t\t\t$(this).find(\".vakata-context-hover\").removeClass(\"vakata-context-hover\");\n\t\t\t\t\tif($.vakata.context.settings.hide_onmouseleave) {\n\t\t\t\t\t\tto = setTimeout(\n\t\t\t\t\t\t\t(function (t) {\n\t\t\t\t\t\t\t\treturn function () { $.vakata.context.hide(); };\n\t\t\t\t\t\t\t}(this)), $.vakata.context.settings.hide_onmouseleave);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on(\"click\", \"a\", function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t//})\n\t\t\t\t//.on(\"mouseup\", \"a\", function (e) {\n\t\t\t\t\tif(!$(this).blur().parent().hasClass(\"vakata-context-disabled\") && $.vakata.context._execute($(this).attr(\"rel\")) !== false) {\n\t\t\t\t\t\t$.vakata.context.hide();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on('keydown', 'a', function (e) {\n\t\t\t\t\t\tvar o = null;\n\t\t\t\t\t\tswitch(e.which) {\n\t\t\t\t\t\t\tcase 13:\n\t\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\t\te.type = \"mouseup\";\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t$(e.currentTarget).trigger(e);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 37:\n\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\t\t\t\t\tvakata_context.element.find(\".vakata-context-hover\").last().parents(\"li:eq(0)\").find(\"ul\").hide().find(\".vakata-context-hover\").removeClass(\"vakata-context-hover\").end().end().children('a').focus();\n\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 38:\n\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\t\t\t\t\to = vakata_context.element.find(\"ul:visible\").addBack().last().children(\".vakata-context-hover\").removeClass(\"vakata-context-hover\").prevAll(\"li:not(.vakata-context-separator)\").first();\n\t\t\t\t\t\t\t\t\tif(!o.length) { o = vakata_context.element.find(\"ul:visible\").addBack().last().children(\"li:not(.vakata-context-separator)\").last(); }\n\t\t\t\t\t\t\t\t\to.addClass(\"vakata-context-hover\").children('a').focus();\n\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 39:\n\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\t\t\t\t\tvakata_context.element.find(\".vakata-context-hover\").last().children(\"ul\").show().children(\"li:not(.vakata-context-separator)\").removeClass(\"vakata-context-hover\").first().addClass(\"vakata-context-hover\").children('a').focus();\n\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 40:\n\t\t\t\t\t\t\t\tif(vakata_context.is_visible) {\n\t\t\t\t\t\t\t\t\to = vakata_context.element.find(\"ul:visible\").addBack().last().children(\".vakata-context-hover\").removeClass(\"vakata-context-hover\").nextAll(\"li:not(.vakata-context-separator)\").first();\n\t\t\t\t\t\t\t\t\tif(!o.length) { o = vakata_context.element.find(\"ul:visible\").addBack().last().children(\"li:not(.vakata-context-separator)\").first(); }\n\t\t\t\t\t\t\t\t\to.addClass(\"vakata-context-hover\").children('a').focus();\n\t\t\t\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 27:\n\t\t\t\t\t\t\t\t$.vakata.context.hide();\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t//console.log(e.which);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t.on('keydown', function (e) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar a = vakata_context.element.find('.vakata-contextmenu-shortcut-' + e.which).parent();\n\t\t\t\t\tif(a.parent().not('.vakata-context-disabled')) {\n\t\t\t\t\t\ta.click();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t$(document)\n\t\t\t\t.on(\"mousedown.vakata.jstree\", function (e) {\n\t\t\t\t\tif(vakata_context.is_visible && !$.contains(vakata_context.element[0], e.target)) { $.vakata.context.hide(); }\n\t\t\t\t})\n\t\t\t\t.on(\"context_show.vakata.jstree\", function (e, data) {\n\t\t\t\t\tvakata_context.element.find(\"li:has(ul)\").children(\"a\").addClass(\"vakata-context-parent\");\n\t\t\t\t\tif(right_to_left) {\n\t\t\t\t\t\tvakata_context.element.addClass(\"vakata-context-rtl\").css(\"direction\", \"rtl\");\n\t\t\t\t\t}\n\t\t\t\t\t// also apply a RTL class?\n\t\t\t\t\tvakata_context.element.find(\"ul\").hide().end();\n\t\t\t\t});\n\t\t});\n\t}($));\n\t// $.jstree.defaults.plugins.push(\"contextmenu\");\n\n/**\n * ### Drag'n'drop plugin\n *\n * Enables dragging and dropping of nodes in the tree, resulting in a move or copy operations.\n */\n\n\t/**\n\t * stores all defaults for the drag'n'drop plugin\n\t * @name $.jstree.defaults.dnd\n\t * @plugin dnd\n\t */\n\t$.jstree.defaults.dnd = {\n\t\t/**\n\t\t * a boolean indicating if a copy should be possible while dragging (by pressint the meta key or Ctrl). Defaults to `true`.\n\t\t * @name $.jstree.defaults.dnd.copy\n\t\t * @plugin dnd\n\t\t */\n\t\tcopy : true,\n\t\t/**\n\t\t * a number indicating how long a node should remain hovered while dragging to be opened. Defaults to `500`.\n\t\t * @name $.jstree.defaults.dnd.open_timeout\n\t\t * @plugin dnd\n\t\t */\n\t\topen_timeout : 500,\n\t\t/**\n\t\t * a function invoked each time a node is about to be dragged, invoked in the tree's scope and receives the nodes about to be dragged as an argument (array) - return `false` to prevent dragging\n\t\t * @name $.jstree.defaults.dnd.is_draggable\n\t\t * @plugin dnd\n\t\t */\n\t\tis_draggable : true,\n\t\t/**\n\t\t * a boolean indicating if checks should constantly be made while the user is dragging the node (as opposed to checking only on drop), default is `true`\n\t\t * @name $.jstree.defaults.dnd.check_while_dragging\n\t\t * @plugin dnd\n\t\t */\n\t\tcheck_while_dragging : true,\n\t\t/**\n\t\t * a boolean indicating if nodes from this tree should only be copied with dnd (as opposed to moved), default is `false`\n\t\t * @name $.jstree.defaults.dnd.always_copy\n\t\t * @plugin dnd\n\t\t */\n\t\talways_copy : false,\n\t\t/**\n\t\t * when dropping a node \"inside\", this setting indicates the position the node should go to - it can be an integer or a string: \"first\" (same as 0) or \"last\", default is `0`\n\t\t * @name $.jstree.defaults.dnd.inside_pos\n\t\t * @plugin dnd\n\t\t */\n\t\tinside_pos : 0\n\t};\n\t// TODO: now check works by checking for each node individually, how about max_children, unique, etc?\n\t// TODO: drop somewhere else - maybe demo only?\n\t$.jstree.plugins.dnd = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\n\t\t\tthis.element\n\t\t\t\t.on('mousedown.jstree touchstart.jstree', '.jstree-anchor', $.proxy(function (e) {\n\t\t\t\t\tvar obj = this.get_node(e.target),\n\t\t\t\t\t\tmlt = this.is_selected(obj) ? this.get_selected().length : 1;\n\t\t\t\t\tif(obj && obj.id && obj.id !== \"#\" && (e.which === 1 || e.type === \"touchstart\") &&\n\t\t\t\t\t\t(this.settings.dnd.is_draggable === true || ($.isFunction(this.settings.dnd.is_draggable) && this.settings.dnd.is_draggable.call(this, (mlt > 1 ? this.get_selected(true) : [obj]))))\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.element.trigger('mousedown.jstree');\n\t\t\t\t\t\treturn $.vakata.dnd.start(e, { 'jstree' : true, 'origin' : this, 'obj' : this.get_node(obj,true), 'nodes' : mlt > 1 ? this.get_selected() : [obj.id] }, '<div id=\"jstree-dnd\" class=\"jstree-' + this.get_theme() + ' jstree-' + this.get_theme() + '-' + this.get_theme_variant() + ' ' + ( this.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' ) + '\"><i class=\"jstree-icon jstree-er\"></i>' + (mlt > 1 ? mlt + ' ' + this.get_string('nodes') : this.get_text(e.currentTarget, true)) + '<ins class=\"jstree-copy\" style=\"display:none;\">+</ins></div>');\n\t\t\t\t\t}\n\t\t\t\t}, this));\n\t\t};\n\t};\n\n\t$(function() {\n\t\t// bind only once for all instances\n\t\tvar lastmv = false,\n\t\t\tlaster = false,\n\t\t\topento = false,\n\t\t\tmarker = $('<div id=\"jstree-marker\">&#160;</div>').hide(); //.appendTo('body');\n\n\t\t$(document)\n\t\t\t.on('dnd_start.vakata.jstree', function (e, data) {\n\t\t\t\tlastmv = false;\n\t\t\t\tif(!data || !data.data || !data.data.jstree) { return; }\n\t\t\t\tmarker.appendTo('body'); //.show();\n\t\t\t})\n\t\t\t.on('dnd_move.vakata.jstree', function (e, data) {\n\t\t\t\tif(opento) { clearTimeout(opento); }\n\t\t\t\tif(!data || !data.data || !data.data.jstree) { return; }\n\n\t\t\t\t// if we are hovering the marker image do nothing (can happen on \"inside\" drags)\n\t\t\t\tif(data.event.target.id && data.event.target.id === 'jstree-marker') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar ins = $.jstree.reference(data.event.target),\n\t\t\t\t\tref = false,\n\t\t\t\t\toff = false,\n\t\t\t\t\trel = false,\n\t\t\t\t\tl, t, h, p, i, o, ok, t1, t2, op, ps, pr, ip, tm;\n\t\t\t\t// if we are over an instance\n\t\t\t\tif(ins && ins._data && ins._data.dnd) {\n\t\t\t\t\tmarker.attr('class', 'jstree-' + ins.get_theme() + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' ));\n\t\t\t\t\tdata.helper\n\t\t\t\t\t\t.children().attr('class', 'jstree-' + ins.get_theme() + ' jstree-' + ins.get_theme() + '-' + ins.get_theme_variant() + ' ' + ( ins.settings.core.themes.responsive ? ' jstree-dnd-responsive' : '' ))\n\t\t\t\t\t\t.find('.jstree-copy:eq(0)')[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? 'show' : 'hide' ]();\n\n\n\t\t\t\t\t// if are hovering the container itself add a new root node\n\t\t\t\t\tif( (data.event.target === ins.element[0] || data.event.target === ins.get_container_ul()[0]) && ins.get_container_ul().children().length === 0) {\n\t\t\t\t\t\tok = true;\n\t\t\t\t\t\tfor(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) {\n\t\t\t\t\t\t\tok = ok && ins.check( (data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey)) ) ? \"copy_node\" : \"move_node\"), (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), '#', 'last', { 'dnd' : true, 'ref' : ins.get_node('#'), 'pos' : 'i', 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) });\n\t\t\t\t\t\t\tif(!ok) { break; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ok) {\n\t\t\t\t\t\t\tlastmv = { 'ins' : ins, 'par' : '#', 'pos' : 'last' };\n\t\t\t\t\t\t\tmarker.hide();\n\t\t\t\t\t\t\tdata.helper.find('.jstree-icon:eq(0)').removeClass('jstree-er').addClass('jstree-ok');\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// if we are hovering a tree node\n\t\t\t\t\t\tref = $(data.event.target).closest('.jstree-anchor');\n\t\t\t\t\t\tif(ref && ref.length && ref.parent().is('.jstree-closed, .jstree-open, .jstree-leaf')) {\n\t\t\t\t\t\t\toff = ref.offset();\n\t\t\t\t\t\t\trel = data.event.pageY - off.top;\n\t\t\t\t\t\t\th = ref.height();\n\t\t\t\t\t\t\tif(rel < h / 3) {\n\t\t\t\t\t\t\t\to = ['b', 'i', 'a'];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if(rel > h - h / 3) {\n\t\t\t\t\t\t\t\to = ['a', 'i', 'b'];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\to = rel > h / 2 ? ['i', 'a', 'b'] : ['i', 'b', 'a'];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$.each(o, function (j, v) {\n\t\t\t\t\t\t\t\tswitch(v) {\n\t\t\t\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\t\t\t\tl = off.left - 6;\n\t\t\t\t\t\t\t\t\t\tt = off.top;\n\t\t\t\t\t\t\t\t\t\tp = ins.get_parent(ref);\n\t\t\t\t\t\t\t\t\t\ti = ref.parent().index();\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 'i':\n\t\t\t\t\t\t\t\t\t\tip = ins.settings.dnd.inside_pos;\n\t\t\t\t\t\t\t\t\t\ttm = ins.get_node(ref.parent());\n\t\t\t\t\t\t\t\t\t\tl = off.left - 2;\n\t\t\t\t\t\t\t\t\t\tt = off.top + h / 2 + 1;\n\t\t\t\t\t\t\t\t\t\tp = tm.id;\n\t\t\t\t\t\t\t\t\t\ti = ip === 'first' ? 0 : (ip === 'last' ? tm.children.length : Math.min(ip, tm.children.length));\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 'a':\n\t\t\t\t\t\t\t\t\t\tl = off.left - 6;\n\t\t\t\t\t\t\t\t\t\tt = off.top + h;\n\t\t\t\t\t\t\t\t\t\tp = ins.get_parent(ref);\n\t\t\t\t\t\t\t\t\t\ti = ref.parent().index() + 1;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/*!\n\t\t\t\t\t\t\t\t// TODO: moving inside, but the node is not yet loaded?\n\t\t\t\t\t\t\t\t// the check will work anyway, as when moving the node will be loaded first and checked again\n\t\t\t\t\t\t\t\tif(v === 'i' && !ins.is_loaded(p)) { }\n\t\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\t\tok = true;\n\t\t\t\t\t\t\t\tfor(t1 = 0, t2 = data.data.nodes.length; t1 < t2; t1++) {\n\t\t\t\t\t\t\t\t\top = data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? \"copy_node\" : \"move_node\";\n\t\t\t\t\t\t\t\t\tps = i;\n\t\t\t\t\t\t\t\t\tif(op === \"move_node\" && v === 'a' && (data.data.origin && data.data.origin === ins) && p === ins.get_parent(data.data.nodes[t1])) {\n\t\t\t\t\t\t\t\t\t\tpr = ins.get_node(p);\n\t\t\t\t\t\t\t\t\t\tif(ps > $.inArray(data.data.nodes[t1], pr.children)) {\n\t\t\t\t\t\t\t\t\t\t\tps -= 1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tok = ok && ( (ins && ins.settings && ins.settings.dnd && ins.settings.dnd.check_while_dragging === false) || ins.check(op, (data.data.origin && data.data.origin !== ins ? data.data.origin.get_node(data.data.nodes[t1]) : data.data.nodes[t1]), p, ps, { 'dnd' : true, 'ref' : ins.get_node(ref.parent()), 'pos' : v, 'is_multi' : (data.data.origin && data.data.origin !== ins), 'is_foreign' : (!data.data.origin) }) );\n\t\t\t\t\t\t\t\t\tif(!ok) {\n\t\t\t\t\t\t\t\t\t\tif(ins && ins.last_error) { laster = ins.last_error(); }\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(ok) {\n\t\t\t\t\t\t\t\t\tif(v === 'i' && ref.parent().is('.jstree-closed') && ins.settings.dnd.open_timeout) {\n\t\t\t\t\t\t\t\t\t\topento = setTimeout((function (x, z) { return function () { x.open_node(z); }; }(ins, ref)), ins.settings.dnd.open_timeout);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tlastmv = { 'ins' : ins, 'par' : p, 'pos' : v === 'i' && ip === 'last' && i === 0 && !ins.is_loaded(tm) ? 'last' : i };\n\t\t\t\t\t\t\t\t\tmarker.css({ 'left' : l + 'px', 'top' : t + 'px' }).show();\n\t\t\t\t\t\t\t\t\tdata.helper.find('.jstree-icon:eq(0)').removeClass('jstree-er').addClass('jstree-ok');\n\t\t\t\t\t\t\t\t\tlaster = {};\n\t\t\t\t\t\t\t\t\to = true;\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif(o === true) { return; }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastmv = false;\n\t\t\t\tdata.helper.find('.jstree-icon').removeClass('jstree-ok').addClass('jstree-er');\n\t\t\t\tmarker.hide();\n\t\t\t})\n\t\t\t.on('dnd_scroll.vakata.jstree', function (e, data) {\n\t\t\t\tif(!data || !data.data || !data.data.jstree) { return; }\n\t\t\t\tmarker.hide();\n\t\t\t\tlastmv = false;\n\t\t\t\tdata.helper.find('.jstree-icon:eq(0)').removeClass('jstree-ok').addClass('jstree-er');\n\t\t\t})\n\t\t\t.on('dnd_stop.vakata.jstree', function (e, data) {\n\t\t\t\tif(opento) { clearTimeout(opento); }\n\t\t\t\tif(!data || !data.data || !data.data.jstree) { return; }\n\t\t\t\tmarker.hide().detach();\n\t\t\t\tvar i, j, nodes = [];\n\t\t\t\tif(lastmv) {\n\t\t\t\t\tfor(i = 0, j = data.data.nodes.length; i < j; i++) {\n\t\t\t\t\t\tnodes[i] = data.data.origin ? data.data.origin.get_node(data.data.nodes[i]) : data.data.nodes[i];\n\t\t\t\t\t\tif(data.data.origin) {\n\t\t\t\t\t\t\tnodes[i].instance = data.data.origin;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlastmv.ins[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (data.event.metaKey || data.event.ctrlKey))) ? 'copy_node' : 'move_node' ](nodes, lastmv.par, lastmv.pos);\n\t\t\t\t\tfor(i = 0, j = nodes.length; i < j; i++) {\n\t\t\t\t\t\tif(nodes[i].instance) {\n\t\t\t\t\t\t\tnodes[i].instance = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ti = $(data.event.target).closest('.jstree');\n\t\t\t\t\tif(i.length && laster && laster.error && laster.error === 'check') {\n\t\t\t\t\t\ti = i.jstree(true);\n\t\t\t\t\t\tif(i) {\n\t\t\t\t\t\t\ti.settings.core.error.call(this, laster);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('keyup.jstree keydown.jstree', function (e, data) {\n\t\t\t\tdata = $.vakata.dnd._get();\n\t\t\t\tif(data && data.data && data.data.jstree) {\n\t\t\t\t\tdata.helper.find('.jstree-copy:eq(0)')[ data.data.origin && (data.data.origin.settings.dnd.always_copy || (data.data.origin.settings.dnd.copy && (e.metaKey || e.ctrlKey))) ? 'show' : 'hide' ]();\n\t\t\t\t}\n\t\t\t});\n\t});\n\n\t// helpers\n\t(function ($) {\n\t\t// private variable\n\t\tvar vakata_dnd = {\n\t\t\telement\t: false,\n\t\t\ttarget\t: false,\n\t\t\tis_down\t: false,\n\t\t\tis_drag\t: false,\n\t\t\thelper\t: false,\n\t\t\thelper_w: 0,\n\t\t\tdata\t: false,\n\t\t\tinit_x\t: 0,\n\t\t\tinit_y\t: 0,\n\t\t\tscroll_l: 0,\n\t\t\tscroll_t: 0,\n\t\t\tscroll_e: false,\n\t\t\tscroll_i: false,\n\t\t\tis_touch: false\n\t\t};\n\t\t$.vakata.dnd = {\n\t\t\tsettings : {\n\t\t\t\tscroll_speed\t\t: 10,\n\t\t\t\tscroll_proximity\t: 20,\n\t\t\t\thelper_left\t\t\t: 5,\n\t\t\t\thelper_top\t\t\t: 10,\n\t\t\t\tthreshold\t\t\t: 5,\n\t\t\t\tthreshold_touch\t\t: 50\n\t\t\t},\n\t\t\t_trigger : function (event_name, e) {\n\t\t\t\tvar data = $.vakata.dnd._get();\n\t\t\t\tdata.event = e;\n\t\t\t\t$(document).triggerHandler(\"dnd_\" + event_name + \".vakata\", data);\n\t\t\t},\n\t\t\t_get : function () {\n\t\t\t\treturn {\n\t\t\t\t\t\"data\"\t\t: vakata_dnd.data,\n\t\t\t\t\t\"element\"\t: vakata_dnd.element,\n\t\t\t\t\t\"helper\"\t: vakata_dnd.helper\n\t\t\t\t};\n\t\t\t},\n\t\t\t_clean : function () {\n\t\t\t\tif(vakata_dnd.helper) { vakata_dnd.helper.remove(); }\n\t\t\t\tif(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; }\n\t\t\t\tvakata_dnd = {\n\t\t\t\t\telement\t: false,\n\t\t\t\t\ttarget\t: false,\n\t\t\t\t\tis_down\t: false,\n\t\t\t\t\tis_drag\t: false,\n\t\t\t\t\thelper\t: false,\n\t\t\t\t\thelper_w: 0,\n\t\t\t\t\tdata\t: false,\n\t\t\t\t\tinit_x\t: 0,\n\t\t\t\t\tinit_y\t: 0,\n\t\t\t\t\tscroll_l: 0,\n\t\t\t\t\tscroll_t: 0,\n\t\t\t\t\tscroll_e: false,\n\t\t\t\t\tscroll_i: false,\n\t\t\t\t\tis_touch: false\n\t\t\t\t};\n\t\t\t\t$(document).off(\"mousemove.vakata.jstree touchmove.vakata.jstree\", $.vakata.dnd.drag);\n\t\t\t\t$(document).off(\"mouseup.vakata.jstree touchend.vakata.jstree\", $.vakata.dnd.stop);\n\t\t\t},\n\t\t\t_scroll : function (init_only) {\n\t\t\t\tif(!vakata_dnd.scroll_e || (!vakata_dnd.scroll_l && !vakata_dnd.scroll_t)) {\n\t\t\t\t\tif(vakata_dnd.scroll_i) { clearInterval(vakata_dnd.scroll_i); vakata_dnd.scroll_i = false; }\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif(!vakata_dnd.scroll_i) {\n\t\t\t\t\tvakata_dnd.scroll_i = setInterval($.vakata.dnd._scroll, 100);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif(init_only === true) { return false; }\n\n\t\t\t\tvar i = vakata_dnd.scroll_e.scrollTop(),\n\t\t\t\t\tj = vakata_dnd.scroll_e.scrollLeft();\n\t\t\t\tvakata_dnd.scroll_e.scrollTop(i + vakata_dnd.scroll_t * $.vakata.dnd.settings.scroll_speed);\n\t\t\t\tvakata_dnd.scroll_e.scrollLeft(j + vakata_dnd.scroll_l * $.vakata.dnd.settings.scroll_speed);\n\t\t\t\tif(i !== vakata_dnd.scroll_e.scrollTop() || j !== vakata_dnd.scroll_e.scrollLeft()) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered on the document when a drag causes an element to scroll\n\t\t\t\t\t * @event\n\t\t\t\t\t * @plugin dnd\n\t\t\t\t\t * @name dnd_scroll.vakata\n\t\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n\t\t\t\t\t * @param {DOM} element the DOM element being dragged\n\t\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n\t\t\t\t\t * @param {jQuery} event the element that is scrolling\n\t\t\t\t\t */\n\t\t\t\t\t$.vakata.dnd._trigger(\"scroll\", vakata_dnd.scroll_e);\n\t\t\t\t}\n\t\t\t},\n\t\t\tstart : function (e, data, html) {\n\t\t\t\tif(e.type === \"touchstart\" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) {\n\t\t\t\t\te.pageX = e.originalEvent.changedTouches[0].pageX;\n\t\t\t\t\te.pageY = e.originalEvent.changedTouches[0].pageY;\n\t\t\t\t\te.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset);\n\t\t\t\t}\n\t\t\t\tif(vakata_dnd.is_drag) { $.vakata.dnd.stop({}); }\n\t\t\t\ttry {\n\t\t\t\t\te.currentTarget.unselectable = \"on\";\n\t\t\t\t\te.currentTarget.onselectstart = function() { return false; };\n\t\t\t\t\tif(e.currentTarget.style) { e.currentTarget.style.MozUserSelect = \"none\"; }\n\t\t\t\t} catch(ignore) { }\n\t\t\t\tvakata_dnd.init_x\t= e.pageX;\n\t\t\t\tvakata_dnd.init_y\t= e.pageY;\n\t\t\t\tvakata_dnd.data\t\t= data;\n\t\t\t\tvakata_dnd.is_down\t= true;\n\t\t\t\tvakata_dnd.element\t= e.currentTarget;\n\t\t\t\tvakata_dnd.target\t= e.target;\n\t\t\t\tvakata_dnd.is_touch\t= e.type === \"touchstart\";\n\t\t\t\tif(html !== false) {\n\t\t\t\t\tvakata_dnd.helper = $(\"<div id='vakata-dnd'></div>\").html(html).css({\n\t\t\t\t\t\t\"display\"\t\t: \"block\",\n\t\t\t\t\t\t\"margin\"\t\t: \"0\",\n\t\t\t\t\t\t\"padding\"\t\t: \"0\",\n\t\t\t\t\t\t\"position\"\t\t: \"absolute\",\n\t\t\t\t\t\t\"top\"\t\t\t: \"-2000px\",\n\t\t\t\t\t\t\"lineHeight\"\t: \"16px\",\n\t\t\t\t\t\t\"zIndex\"\t\t: \"10000\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t$(document).on(\"mousemove.vakata.jstree touchmove.vakata.jstree\", $.vakata.dnd.drag);\n\t\t\t\t$(document).on(\"mouseup.vakata.jstree touchend.vakata.jstree\", $.vakata.dnd.stop);\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tdrag : function (e) {\n\t\t\t\tif(e.type === \"touchmove\" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) {\n\t\t\t\t\te.pageX = e.originalEvent.changedTouches[0].pageX;\n\t\t\t\t\te.pageY = e.originalEvent.changedTouches[0].pageY;\n\t\t\t\t\te.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset);\n\t\t\t\t}\n\t\t\t\tif(!vakata_dnd.is_down) { return; }\n\t\t\t\tif(!vakata_dnd.is_drag) {\n\t\t\t\t\tif(\n\t\t\t\t\t\tMath.abs(e.pageX - vakata_dnd.init_x) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold) ||\n\t\t\t\t\t\tMath.abs(e.pageY - vakata_dnd.init_y) > (vakata_dnd.is_touch ? $.vakata.dnd.settings.threshold_touch : $.vakata.dnd.settings.threshold)\n\t\t\t\t\t) {\n\t\t\t\t\t\tif(vakata_dnd.helper) {\n\t\t\t\t\t\t\tvakata_dnd.helper.appendTo(\"body\");\n\t\t\t\t\t\t\tvakata_dnd.helper_w = vakata_dnd.helper.outerWidth();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvakata_dnd.is_drag = true;\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * triggered on the document when a drag starts\n\t\t\t\t\t\t * @event\n\t\t\t\t\t\t * @plugin dnd\n\t\t\t\t\t\t * @name dnd_start.vakata\n\t\t\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n\t\t\t\t\t\t * @param {DOM} element the DOM element being dragged\n\t\t\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n\t\t\t\t\t\t * @param {Object} event the event that caused the start (probably mousemove)\n\t\t\t\t\t\t */\n\t\t\t\t\t\t$.vakata.dnd._trigger(\"start\", e);\n\t\t\t\t\t}\n\t\t\t\t\telse { return; }\n\t\t\t\t}\n\n\t\t\t\tvar d  = false, w  = false,\n\t\t\t\t\tdh = false, wh = false,\n\t\t\t\t\tdw = false, ww = false,\n\t\t\t\t\tdt = false, dl = false,\n\t\t\t\t\tht = false, hl = false;\n\n\t\t\t\tvakata_dnd.scroll_t = 0;\n\t\t\t\tvakata_dnd.scroll_l = 0;\n\t\t\t\tvakata_dnd.scroll_e = false;\n\t\t\t\t$($(e.target).parentsUntil(\"body\").addBack().get().reverse())\n\t\t\t\t\t.filter(function () {\n\t\t\t\t\t\treturn\t(/^auto|scroll$/).test($(this).css(\"overflow\")) &&\n\t\t\t\t\t\t\t\t(this.scrollHeight > this.offsetHeight || this.scrollWidth > this.offsetWidth);\n\t\t\t\t\t})\n\t\t\t\t\t.each(function () {\n\t\t\t\t\t\tvar t = $(this), o = t.offset();\n\t\t\t\t\t\tif(this.scrollHeight > this.offsetHeight) {\n\t\t\t\t\t\t\tif(o.top + t.height() - e.pageY < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_t = 1; }\n\t\t\t\t\t\t\tif(e.pageY - o.top < $.vakata.dnd.settings.scroll_proximity)\t\t\t\t{ vakata_dnd.scroll_t = -1; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(this.scrollWidth > this.offsetWidth) {\n\t\t\t\t\t\t\tif(o.left + t.width() - e.pageX < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_l = 1; }\n\t\t\t\t\t\t\tif(e.pageX - o.left < $.vakata.dnd.settings.scroll_proximity)\t\t\t\t{ vakata_dnd.scroll_l = -1; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(vakata_dnd.scroll_t || vakata_dnd.scroll_l) {\n\t\t\t\t\t\t\tvakata_dnd.scroll_e = $(this);\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\tif(!vakata_dnd.scroll_e) {\n\t\t\t\t\td  = $(document); w = $(window);\n\t\t\t\t\tdh = d.height(); wh = w.height();\n\t\t\t\t\tdw = d.width(); ww = w.width();\n\t\t\t\t\tdt = d.scrollTop(); dl = d.scrollLeft();\n\t\t\t\t\tif(dh > wh && e.pageY - dt < $.vakata.dnd.settings.scroll_proximity)\t\t{ vakata_dnd.scroll_t = -1;  }\n\t\t\t\t\tif(dh > wh && wh - (e.pageY - dt) < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_t = 1; }\n\t\t\t\t\tif(dw > ww && e.pageX - dl < $.vakata.dnd.settings.scroll_proximity)\t\t{ vakata_dnd.scroll_l = -1; }\n\t\t\t\t\tif(dw > ww && ww - (e.pageX - dl) < $.vakata.dnd.settings.scroll_proximity)\t{ vakata_dnd.scroll_l = 1; }\n\t\t\t\t\tif(vakata_dnd.scroll_t || vakata_dnd.scroll_l) {\n\t\t\t\t\t\tvakata_dnd.scroll_e = d;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(vakata_dnd.scroll_e) { $.vakata.dnd._scroll(true); }\n\n\t\t\t\tif(vakata_dnd.helper) {\n\t\t\t\t\tht = parseInt(e.pageY + $.vakata.dnd.settings.helper_top, 10);\n\t\t\t\t\thl = parseInt(e.pageX + $.vakata.dnd.settings.helper_left, 10);\n\t\t\t\t\tif(dh && ht + 25 > dh) { ht = dh - 50; }\n\t\t\t\t\tif(dw && hl + vakata_dnd.helper_w > dw) { hl = dw - (vakata_dnd.helper_w + 2); }\n\t\t\t\t\tvakata_dnd.helper.css({\n\t\t\t\t\t\tleft\t: hl + \"px\",\n\t\t\t\t\t\ttop\t\t: ht + \"px\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t * triggered on the document when a drag is in progress\n\t\t\t\t * @event\n\t\t\t\t * @plugin dnd\n\t\t\t\t * @name dnd_move.vakata\n\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n\t\t\t\t * @param {DOM} element the DOM element being dragged\n\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n\t\t\t\t * @param {Object} event the event that caused this to trigger (most likely mousemove)\n\t\t\t\t */\n\t\t\t\t$.vakata.dnd._trigger(\"move\", e);\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tstop : function (e) {\n\t\t\t\tif(e.type === \"touchend\" && e.originalEvent && e.originalEvent.changedTouches && e.originalEvent.changedTouches[0]) {\n\t\t\t\t\te.pageX = e.originalEvent.changedTouches[0].pageX;\n\t\t\t\t\te.pageY = e.originalEvent.changedTouches[0].pageY;\n\t\t\t\t\te.target = document.elementFromPoint(e.originalEvent.changedTouches[0].pageX - window.pageXOffset, e.originalEvent.changedTouches[0].pageY - window.pageYOffset);\n\t\t\t\t}\n\t\t\t\tif(vakata_dnd.is_drag) {\n\t\t\t\t\t/**\n\t\t\t\t\t * triggered on the document when a drag stops (the dragged element is dropped)\n\t\t\t\t\t * @event\n\t\t\t\t\t * @plugin dnd\n\t\t\t\t\t * @name dnd_stop.vakata\n\t\t\t\t\t * @param {Mixed} data any data supplied with the call to $.vakata.dnd.start\n\t\t\t\t\t * @param {DOM} element the DOM element being dragged\n\t\t\t\t\t * @param {jQuery} helper the helper shown next to the mouse\n\t\t\t\t\t * @param {Object} event the event that caused the stop\n\t\t\t\t\t */\n\t\t\t\t\t$.vakata.dnd._trigger(\"stop\", e);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(e.type === \"touchend\" && e.target === vakata_dnd.target) {\n\t\t\t\t\t\tvar to = setTimeout(function () { $(e.target).click(); }, 100);\n\t\t\t\t\t\t$(e.target).one('click', function() { if(to) { clearTimeout(to); } });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$.vakata.dnd._clean();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\t}($));\n\n\t// include the dnd plugin by default\n\t// $.jstree.defaults.plugins.push(\"dnd\");\n\n\n/**\n * ### Search plugin\n *\n * Adds search functionality to jsTree.\n */\n\n\t/**\n\t * stores all defaults for the search plugin\n\t * @name $.jstree.defaults.search\n\t * @plugin search\n\t */\n\t$.jstree.defaults.search = {\n\t\t/**\n\t\t * a jQuery-like AJAX config, which jstree uses if a server should be queried for results. \n\t\t * \n\t\t * A `str` (which is the search string) parameter will be added with the request. The expected result is a JSON array with nodes that need to be opened so that matching nodes will be revealed.\n\t\t * Leave this setting as `false` to not query the server. You can also set this to a function, which will be invoked in the instance's scope and receive 2 parameters - the search string and the callback to call with the array of nodes to load.\n\t\t * @name $.jstree.defaults.search.ajax\n\t\t * @plugin search\n\t\t */\n\t\tajax : false,\n\t\t/**\n\t\t * Indicates if the search should be fuzzy or not (should `chnd3` match `child node 3`). Default is `false`.\n\t\t * @name $.jstree.defaults.search.fuzzy\n\t\t * @plugin search\n\t\t */\n\t\tfuzzy : false,\n\t\t/**\n\t\t * Indicates if the search should be case sensitive. Default is `false`.\n\t\t * @name $.jstree.defaults.search.case_sensitive\n\t\t * @plugin search\n\t\t */\n\t\tcase_sensitive : false,\n\t\t/**\n\t\t * Indicates if the tree should be filtered to show only matching nodes (keep in mind this can be a heavy on large trees in old browsers). Default is `false`.\n\t\t * @name $.jstree.defaults.search.show_only_matches\n\t\t * @plugin search\n\t\t */\n\t\tshow_only_matches : false,\n\t\t/**\n\t\t * Indicates if all nodes opened to reveal the search result, should be closed when the search is cleared or a new search is performed. Default is `true`.\n\t\t * @name $.jstree.defaults.search.close_opened_onclear\n\t\t * @plugin search\n\t\t */\n\t\tclose_opened_onclear : true,\n\t\t/**\n\t\t * Indicates if only leaf nodes should be included in search results. Default is `false`.\n\t\t * @name $.jstree.defaults.search.search_leaves_only\n\t\t * @plugin search\n\t\t */\n\t\tsearch_leaves_only : false,\n\t\t/**\n\t\t * If set to a function it wil be called in the instance's scope with two arguments - search string and node (where node will be every node in the structure, so use with caution).\n\t\t * If the function returns a truthy value the node will be considered a match (it might not be displayed if search_only_leaves is set to true and the node is not a leaf). Default is `false`.\n\t\t * @name $.jstree.defaults.search.search_callback\n\t\t * @plugin search\n\t\t */\n\t\tsearch_callback : false\n\t};\n\n\t$.jstree.plugins.search = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\n\t\t\tthis._data.search.str = \"\";\n\t\t\tthis._data.search.dom = $();\n\t\t\tthis._data.search.res = [];\n\t\t\tthis._data.search.opn = [];\n\n\t\t\tthis.element.on('before_open.jstree', $.proxy(function (e, data) {\n\t\t\t\tvar i, j, f, r = this._data.search.res, s = [], o = $();\n\t\t\t\tif(r && r.length) {\n\t\t\t\t\tthis._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return \"0123456789\".indexOf(v[0]) !== -1 ? '\\\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\\\$&') : v.replace($.jstree.idregex,'\\\\$&'); }).join(', #')));\n\t\t\t\t\tthis._data.search.dom.children(\".jstree-anchor\").addClass('jstree-search');\n\t\t\t\t\tif(this.settings.search.show_only_matches && this._data.search.res.length) {\n\t\t\t\t\t\tfor(i = 0, j = r.length; i < j; i++) {\n\t\t\t\t\t\t\ts = s.concat(this.get_node(r[i]).parents);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ts = $.vakata.array_remove_item($.vakata.array_unique(s),'#');\n\t\t\t\t\t\to = s.length ? $(this.element[0].querySelectorAll('#' + $.map(s, function (v) { return \"0123456789\".indexOf(v[0]) !== -1 ? '\\\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\\\$&') : v.replace($.jstree.idregex,'\\\\$&'); }).join(', #'))) : $();\n\n\t\t\t\t\t\tthis.element.find(\".jstree-node\").hide().filter('.jstree-last').filter(function() { return this.nextSibling; }).removeClass('jstree-last');\n\t\t\t\t\t\to = o.add(this._data.search.dom);\n\t\t\t\t\t\to.parentsUntil(\".jstree\").addBack().show()\n\t\t\t\t\t\t\t.filter(\".jstree-children\").each(function () { $(this).children(\".jstree-node:visible\").eq(-1).addClass(\"jstree-last\"); });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this));\n\t\t\tif(this.settings.search.show_only_matches) {\n\t\t\t\tthis.element\n\t\t\t\t\t.on(\"search.jstree\", function (e, data) {\n\t\t\t\t\t\tif(data.nodes.length) {\n\t\t\t\t\t\t\t$(this).find(\".jstree-node\").hide().filter('.jstree-last').filter(function() { return this.nextSibling; }).removeClass('jstree-last');\n\t\t\t\t\t\t\tdata.nodes.parentsUntil(\".jstree\").addBack().show()\n\t\t\t\t\t\t\t\t.filter(\".jstree-children\").each(function () { $(this).children(\".jstree-node:visible\").eq(-1).addClass(\"jstree-last\"); });\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.on(\"clear_search.jstree\", function (e, data) {\n\t\t\t\t\t\tif(data.nodes.length) {\n\t\t\t\t\t\t\t$(this).find(\".jstree-node\").css(\"display\",\"\").filter('.jstree-last').filter(function() { return this.nextSibling; }).removeClass('jstree-last');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * used to search the tree nodes for a given string\n\t\t * @name search(str [, skip_async])\n\t\t * @param {String} str the search string\n\t\t * @param {Boolean} skip_async if set to true server will not be queried even if configured\n\t\t * @plugin search\n\t\t * @trigger search.jstree\n\t\t */\n\t\tthis.search = function (str, skip_async) {\n\t\t\tif(str === false || $.trim(str.toString()) === \"\") {\n\t\t\t\treturn this.clear_search();\n\t\t\t}\n\t\t\tstr = str.toString();\n\t\t\tvar s = this.settings.search,\n\t\t\t\ta = s.ajax ? s.ajax : false,\n\t\t\t\tf = null,\n\t\t\t\tr = [],\n\t\t\t\tp = [], i, j;\n\t\t\tif(this._data.search.res.length) {\n\t\t\t\tthis.clear_search();\n\t\t\t}\n\t\t\tif(!skip_async && a !== false) {\n\t\t\t\tif($.isFunction(a)) {\n\t\t\t\t\treturn a.call(this, str, $.proxy(function (d) {\n\t\t\t\t\t\t\tif(d && d.d) { d = d.d; }\n\t\t\t\t\t\t\tthis._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () {\n\t\t\t\t\t\t\t\tthis.search(str, true);\n\t\t\t\t\t\t\t}, true);\n\t\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ta = $.extend({}, a);\n\t\t\t\t\tif(!a.data) { a.data = {}; }\n\t\t\t\t\ta.data.str = str;\n\t\t\t\t\treturn $.ajax(a)\n\t\t\t\t\t\t.fail($.proxy(function () {\n\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'search', 'id' : 'search_01', 'reason' : 'Could not load search parents', 'data' : JSON.stringify(a) };\n\t\t\t\t\t\t\tthis.settings.core.error.call(this, this._data.core.last_error);\n\t\t\t\t\t\t}, this))\n\t\t\t\t\t\t.done($.proxy(function (d) {\n\t\t\t\t\t\t\tif(d && d.d) { d = d.d; }\n\t\t\t\t\t\t\tthis._load_nodes(!$.isArray(d) ? [] : $.vakata.array_unique(d), function () {\n\t\t\t\t\t\t\t\tthis.search(str, true);\n\t\t\t\t\t\t\t}, true);\n\t\t\t\t\t\t}, this));\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._data.search.str = str;\n\t\t\tthis._data.search.dom = $();\n\t\t\tthis._data.search.res = [];\n\t\t\tthis._data.search.opn = [];\n\n\t\t\tf = new $.vakata.search(str, true, { caseSensitive : s.case_sensitive, fuzzy : s.fuzzy });\n\n\t\t\t$.each(this._model.data, function (i, v) {\n\t\t\t\tif(v.text && ( (s.search_callback && s.search_callback.call(this, str, v)) || (!s.search_callback && f.search(v.text).isMatch) ) && (!s.search_leaves_only || (v.state.loaded && v.children.length === 0)) ) {\n\t\t\t\t\tr.push(i);\n\t\t\t\t\tp = p.concat(v.parents);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(r.length) {\n\t\t\t\tp = $.vakata.array_unique(p);\n\t\t\t\tthis._search_open(p);\n\t\t\t\tthis._data.search.dom = $(this.element[0].querySelectorAll('#' + $.map(r, function (v) { return \"0123456789\".indexOf(v[0]) !== -1 ? '\\\\3' + v[0] + ' ' + v.substr(1).replace($.jstree.idregex,'\\\\$&') : v.replace($.jstree.idregex,'\\\\$&'); }).join(', #')));\n\t\t\t\tthis._data.search.res = r;\n\t\t\t\tthis._data.search.dom.children(\".jstree-anchor\").addClass('jstree-search');\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered after search is complete\n\t\t\t * @event\n\t\t\t * @name search.jstree\n\t\t\t * @param {jQuery} nodes a jQuery collection of matching nodes\n\t\t\t * @param {String} str the search string\n\t\t\t * @param {Array} res a collection of objects represeing the matching nodes\n\t\t\t * @plugin search\n\t\t\t */\n\t\t\tthis.trigger('search', { nodes : this._data.search.dom, str : str, res : this._data.search.res });\n\t\t};\n\t\t/**\n\t\t * used to clear the last search (removes classes and shows all nodes if filtering is on)\n\t\t * @name clear_search()\n\t\t * @plugin search\n\t\t * @trigger clear_search.jstree\n\t\t */\n\t\tthis.clear_search = function () {\n\t\t\tthis._data.search.dom.children(\".jstree-anchor\").removeClass(\"jstree-search\");\n\t\t\tif(this.settings.search.close_opened_onclear) {\n\t\t\t\tthis.close_node(this._data.search.opn, 0);\n\t\t\t}\n\t\t\t/**\n\t\t\t * triggered after search is complete\n\t\t\t * @event\n\t\t\t * @name clear_search.jstree\n\t\t\t * @param {jQuery} nodes a jQuery collection of matching nodes (the result from the last search)\n\t\t\t * @param {String} str the search string (the last search string)\n\t\t\t * @param {Array} res a collection of objects represeing the matching nodes (the result from the last search)\n\t\t\t * @plugin search\n\t\t\t */\n\t\t\tthis.trigger('clear_search', { 'nodes' : this._data.search.dom, str : this._data.search.str, res : this._data.search.res });\n\t\t\tthis._data.search.str = \"\";\n\t\t\tthis._data.search.res = [];\n\t\t\tthis._data.search.opn = [];\n\t\t\tthis._data.search.dom = $();\n\t\t};\n\t\t/**\n\t\t * opens nodes that need to be opened to reveal the search results. Used only internally.\n\t\t * @private\n\t\t * @name _search_open(d)\n\t\t * @param {Array} d an array of node IDs\n\t\t * @plugin search\n\t\t */\n\t\tthis._search_open = function (d) {\n\t\t\tvar t = this;\n\t\t\t$.each(d.concat([]), function (i, v) {\n\t\t\t\tif(v === \"#\") { return true; }\n\t\t\t\ttry { v = $('#' + v.replace($.jstree.idregex,'\\\\$&'), t.element); } catch(ignore) { }\n\t\t\t\tif(v && v.length) {\n\t\t\t\t\tif(t.is_closed(v)) {\n\t\t\t\t\t\tt._data.search.opn.push(v[0].id);\n\t\t\t\t\t\tt.open_node(v, function () { t._search_open(d); }, 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t};\n\n\t// helpers\n\t(function ($) {\n\t\t// from http://kiro.me/projects/fuse.html\n\t\t$.vakata.search = function(pattern, txt, options) {\n\t\t\toptions = options || {};\n\t\t\tif(options.fuzzy !== false) {\n\t\t\t\toptions.fuzzy = true;\n\t\t\t}\n\t\t\tpattern = options.caseSensitive ? pattern : pattern.toLowerCase();\n\t\t\tvar MATCH_LOCATION\t= options.location || 0,\n\t\t\t\tMATCH_DISTANCE\t= options.distance || 100,\n\t\t\t\tMATCH_THRESHOLD\t= options.threshold || 0.6,\n\t\t\t\tpatternLen = pattern.length,\n\t\t\t\tmatchmask, pattern_alphabet, match_bitapScore, search;\n\t\t\tif(patternLen > 32) {\n\t\t\t\toptions.fuzzy = false;\n\t\t\t}\n\t\t\tif(options.fuzzy) {\n\t\t\t\tmatchmask = 1 << (patternLen - 1);\n\t\t\t\tpattern_alphabet = (function () {\n\t\t\t\t\tvar mask = {},\n\t\t\t\t\t\ti = 0;\n\t\t\t\t\tfor (i = 0; i < patternLen; i++) {\n\t\t\t\t\t\tmask[pattern.charAt(i)] = 0;\n\t\t\t\t\t}\n\t\t\t\t\tfor (i = 0; i < patternLen; i++) {\n\t\t\t\t\t\tmask[pattern.charAt(i)] |= 1 << (patternLen - i - 1);\n\t\t\t\t\t}\n\t\t\t\t\treturn mask;\n\t\t\t\t}());\n\t\t\t\tmatch_bitapScore = function (e, x) {\n\t\t\t\t\tvar accuracy = e / patternLen,\n\t\t\t\t\t\tproximity = Math.abs(MATCH_LOCATION - x);\n\t\t\t\t\tif(!MATCH_DISTANCE) {\n\t\t\t\t\t\treturn proximity ? 1.0 : accuracy;\n\t\t\t\t\t}\n\t\t\t\t\treturn accuracy + (proximity / MATCH_DISTANCE);\n\t\t\t\t};\n\t\t\t}\n\t\t\tsearch = function (text) {\n\t\t\t\ttext = options.caseSensitive ? text : text.toLowerCase();\n\t\t\t\tif(pattern === text || text.indexOf(pattern) !== -1) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tisMatch: true,\n\t\t\t\t\t\tscore: 0\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif(!options.fuzzy) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tisMatch: false,\n\t\t\t\t\t\tscore: 1\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tvar i, j,\n\t\t\t\t\ttextLen = text.length,\n\t\t\t\t\tscoreThreshold = MATCH_THRESHOLD,\n\t\t\t\t\tbestLoc = text.indexOf(pattern, MATCH_LOCATION),\n\t\t\t\t\tbinMin, binMid,\n\t\t\t\t\tbinMax = patternLen + textLen,\n\t\t\t\t\tlastRd, start, finish, rd, charMatch,\n\t\t\t\t\tscore = 1,\n\t\t\t\t\tlocations = [];\n\t\t\t\tif (bestLoc !== -1) {\n\t\t\t\t\tscoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold);\n\t\t\t\t\tbestLoc = text.lastIndexOf(pattern, MATCH_LOCATION + patternLen);\n\t\t\t\t\tif (bestLoc !== -1) {\n\t\t\t\t\t\tscoreThreshold = Math.min(match_bitapScore(0, bestLoc), scoreThreshold);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbestLoc = -1;\n\t\t\t\tfor (i = 0; i < patternLen; i++) {\n\t\t\t\t\tbinMin = 0;\n\t\t\t\t\tbinMid = binMax;\n\t\t\t\t\twhile (binMin < binMid) {\n\t\t\t\t\t\tif (match_bitapScore(i, MATCH_LOCATION + binMid) <= scoreThreshold) {\n\t\t\t\t\t\t\tbinMin = binMid;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbinMax = binMid;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbinMid = Math.floor((binMax - binMin) / 2 + binMin);\n\t\t\t\t\t}\n\t\t\t\t\tbinMax = binMid;\n\t\t\t\t\tstart = Math.max(1, MATCH_LOCATION - binMid + 1);\n\t\t\t\t\tfinish = Math.min(MATCH_LOCATION + binMid, textLen) + patternLen;\n\t\t\t\t\trd = new Array(finish + 2);\n\t\t\t\t\trd[finish + 1] = (1 << i) - 1;\n\t\t\t\t\tfor (j = finish; j >= start; j--) {\n\t\t\t\t\t\tcharMatch = pattern_alphabet[text.charAt(j - 1)];\n\t\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\t\trd[j] = ((rd[j + 1] << 1) | 1) & charMatch;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trd[j] = ((rd[j + 1] << 1) | 1) & charMatch | (((lastRd[j + 1] | lastRd[j]) << 1) | 1) | lastRd[j + 1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (rd[j] & matchmask) {\n\t\t\t\t\t\t\tscore = match_bitapScore(i, j - 1);\n\t\t\t\t\t\t\tif (score <= scoreThreshold) {\n\t\t\t\t\t\t\t\tscoreThreshold = score;\n\t\t\t\t\t\t\t\tbestLoc = j - 1;\n\t\t\t\t\t\t\t\tlocations.push(bestLoc);\n\t\t\t\t\t\t\t\tif (bestLoc > MATCH_LOCATION) {\n\t\t\t\t\t\t\t\t\tstart = Math.max(1, 2 * MATCH_LOCATION - bestLoc);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (match_bitapScore(i + 1, MATCH_LOCATION) > scoreThreshold) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tlastRd = rd;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tisMatch: bestLoc >= 0,\n\t\t\t\t\tscore: score\n\t\t\t\t};\n\t\t\t};\n\t\t\treturn txt === true ? { 'search' : search } : search(txt);\n\t\t};\n\t}($));\n\n\t// include the search plugin by default\n\t// $.jstree.defaults.plugins.push(\"search\");\n\n/**\n * ### Sort plugin\n *\n * Automatically sorts all siblings in the tree according to a sorting function.\n */\n\n\t/**\n\t * the settings function used to sort the nodes.\n\t * It is executed in the tree's context, accepts two nodes as arguments and should return `1` or `-1`.\n\t * @name $.jstree.defaults.sort\n\t * @plugin sort\n\t */\n\t$.jstree.defaults.sort = function (a, b) {\n\t\t//return this.get_type(a) === this.get_type(b) ? (this.get_text(a) > this.get_text(b) ? 1 : -1) : this.get_type(a) >= this.get_type(b);\n\t\treturn this.get_text(a) > this.get_text(b) ? 1 : -1;\n\t};\n\t$.jstree.plugins.sort = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\t\t\tthis.element\n\t\t\t\t.on(\"model.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.sort(data.parent, true);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"rename_node.jstree create_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.sort(data.parent || data.node.parent, false);\n\t\t\t\t\t\tthis.redraw_node(data.parent || data.node.parent, true);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"move_node.jstree copy_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.sort(data.parent, false);\n\t\t\t\t\t\tthis.redraw_node(data.parent, true);\n\t\t\t\t\t}, this));\n\t\t};\n\t\t/**\n\t\t * used to sort a node's children\n\t\t * @private\n\t\t * @name sort(obj [, deep])\n\t\t * @param  {mixed} obj the node\n\t\t * @param {Boolean} deep if set to `true` nodes are sorted recursively.\n\t\t * @plugin sort\n\t\t * @trigger search.jstree\n\t\t */\n\t\tthis.sort = function (obj, deep) {\n\t\t\tvar i, j;\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(obj && obj.children && obj.children.length) {\n\t\t\t\tobj.children.sort($.proxy(this.settings.sort, this));\n\t\t\t\tif(deep) {\n\t\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\t\tthis.sort(obj.children_d[i], false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t};\n\n\t// include the sort plugin by default\n\t// $.jstree.defaults.plugins.push(\"sort\");\n\n/**\n * ### State plugin\n *\n * Saves the state of the tree (selected nodes, opened nodes) on the user's computer using available options (localStorage, cookies, etc)\n */\n\n\tvar to = false;\n\t/**\n\t * stores all defaults for the state plugin\n\t * @name $.jstree.defaults.state\n\t * @plugin state\n\t */\n\t$.jstree.defaults.state = {\n\t\t/**\n\t\t * A string for the key to use when saving the current tree (change if using multiple trees in your project). Defaults to `jstree`.\n\t\t * @name $.jstree.defaults.state.key\n\t\t * @plugin state\n\t\t */\n\t\tkey\t\t: 'jstree',\n\t\t/**\n\t\t * A space separated list of events that trigger a state save. Defaults to `changed.jstree open_node.jstree close_node.jstree`.\n\t\t * @name $.jstree.defaults.state.events\n\t\t * @plugin state\n\t\t */\n\t\tevents\t: 'changed.jstree open_node.jstree close_node.jstree',\n\t\t/**\n\t\t * Time in milliseconds after which the state will expire. Defaults to 'false' meaning - no expire.\n\t\t * @name $.jstree.defaults.state.ttl\n\t\t * @plugin state\n\t\t */\n\t\tttl\t\t: false,\n\t\t/**\n\t\t * A function that will be executed prior to restoring state with one argument - the state object. Can be used to clear unwanted parts of the state.\n\t\t * @name $.jstree.defaults.state.filter\n\t\t * @plugin state\n\t\t */\n\t\tfilter\t: false\n\t};\n\t$.jstree.plugins.state = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\t\t\tvar bind = $.proxy(function () {\n\t\t\t\tthis.element.on(this.settings.state.events, $.proxy(function () {\n\t\t\t\t\tif(to) { clearTimeout(to); }\n\t\t\t\t\tto = setTimeout($.proxy(function () { this.save_state(); }, this), 100);\n\t\t\t\t}, this));\n\t\t\t}, this);\n\t\t\tthis.element\n\t\t\t\t.on(\"ready.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.element.one(\"restore_state.jstree\", bind);\n\t\t\t\t\t\tif(!this.restore_state()) { bind(); }\n\t\t\t\t\t}, this));\n\t\t};\n\t\t/**\n\t\t * save the state\n\t\t * @name save_state()\n\t\t * @plugin state\n\t\t */\n\t\tthis.save_state = function () {\n\t\t\tvar st = { 'state' : this.get_state(), 'ttl' : this.settings.state.ttl, 'sec' : +(new Date()) };\n\t\t\t$.vakata.storage.set(this.settings.state.key, JSON.stringify(st));\n\t\t};\n\t\t/**\n\t\t * restore the state from the user's computer\n\t\t * @name restore_state()\n\t\t * @plugin state\n\t\t */\n\t\tthis.restore_state = function () {\n\t\t\tvar k = $.vakata.storage.get(this.settings.state.key);\n\t\t\tif(!!k) { try { k = JSON.parse(k); } catch(ex) { return false; } }\n\t\t\tif(!!k && k.ttl && k.sec && +(new Date()) - k.sec > k.ttl) { return false; }\n\t\t\tif(!!k && k.state) { k = k.state; }\n\t\t\tif(!!k && $.isFunction(this.settings.state.filter)) { k = this.settings.state.filter.call(this, k); }\n\t\t\tif(!!k) {\n\t\t\t\tthis.element.one(\"set_state.jstree\", function (e, data) { data.instance.trigger('restore_state', { 'state' : $.extend(true, {}, k) }); });\n\t\t\t\tthis.set_state(k);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t\t/**\n\t\t * clear the state on the user's computer\n\t\t * @name clear_state()\n\t\t * @plugin state\n\t\t */\n\t\tthis.clear_state = function () {\n\t\t\treturn $.vakata.storage.del(this.settings.state.key);\n\t\t};\n\t};\n\n\t(function ($, undefined) {\n\t\t$.vakata.storage = {\n\t\t\t// simply specifying the functions in FF throws an error\n\t\t\tset : function (key, val) { return window.localStorage.setItem(key, val); },\n\t\t\tget : function (key) { return window.localStorage.getItem(key); },\n\t\t\tdel : function (key) { return window.localStorage.removeItem(key); }\n\t\t};\n\t}($));\n\n\t// include the state plugin by default\n\t// $.jstree.defaults.plugins.push(\"state\");\n\n/**\n * ### Types plugin\n *\n * Makes it possible to add predefined types for groups of nodes, which make it possible to easily control nesting rules and icon for each group.\n */\n\n\t/**\n\t * An object storing all types as key value pairs, where the key is the type name and the value is an object that could contain following keys (all optional).\n\t * \n\t * * `max_children` the maximum number of immediate children this node type can have. Do not specify or set to `-1` for unlimited.\n\t * * `max_depth` the maximum number of nesting this node type can have. A value of `1` would mean that the node can have children, but no grandchildren. Do not specify or set to `-1` for unlimited.\n\t * * `valid_children` an array of node type strings, that nodes of this type can have as children. Do not specify or set to `-1` for no limits.\n\t * * `icon` a string - can be a path to an icon or a className, if using an image that is in the current directory use a `./` prefix, otherwise it will be detected as a class. Omit to use the default icon from your theme.\n\t *\n\t * There are two predefined types:\n\t * \n\t * * `#` represents the root of the tree, for example `max_children` would control the maximum number of root nodes.\n\t * * `default` represents the default node - any settings here will be applied to all nodes that do not have a type specified.\n\t * \n\t * @name $.jstree.defaults.types\n\t * @plugin types\n\t */\n\t$.jstree.defaults.types = {\n\t\t'#' : {},\n\t\t'default' : {}\n\t};\n\n\t$.jstree.plugins.types = function (options, parent) {\n\t\tthis.init = function (el, options) {\n\t\t\tvar i, j;\n\t\t\tif(options && options.types && options.types['default']) {\n\t\t\t\tfor(i in options.types) {\n\t\t\t\t\tif(i !== \"default\" && i !== \"#\" && options.types.hasOwnProperty(i)) {\n\t\t\t\t\t\tfor(j in options.types['default']) {\n\t\t\t\t\t\t\tif(options.types['default'].hasOwnProperty(j) && options.types[i][j] === undefined) {\n\t\t\t\t\t\t\t\toptions.types[i][j] = options.types['default'][j];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tparent.init.call(this, el, options);\n\t\t\tthis._model.data['#'].type = '#';\n\t\t};\n\t\tthis.refresh = function (skip_loading, forget_state) {\n\t\t\tparent.refresh.call(this, skip_loading, forget_state);\n\t\t\tthis._model.data['#'].type = '#';\n\t\t};\n\t\tthis.bind = function () {\n\t\t\tthis.element\n\t\t\t\t.on('model.jstree', $.proxy(function (e, data) {\n\t\t\t\t\t\tvar m = this._model.data,\n\t\t\t\t\t\t\tdpc = data.nodes,\n\t\t\t\t\t\t\tt = this.settings.types,\n\t\t\t\t\t\t\ti, j, c = 'default';\n\t\t\t\t\t\tfor(i = 0, j = dpc.length; i < j; i++) {\n\t\t\t\t\t\t\tc = 'default';\n\t\t\t\t\t\t\tif(m[dpc[i]].original && m[dpc[i]].original.type && t[m[dpc[i]].original.type]) {\n\t\t\t\t\t\t\t\tc = m[dpc[i]].original.type;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(m[dpc[i]].data && m[dpc[i]].data.jstree && m[dpc[i]].data.jstree.type && t[m[dpc[i]].data.jstree.type]) {\n\t\t\t\t\t\t\t\tc = m[dpc[i]].data.jstree.type;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tm[dpc[i]].type = c;\n\t\t\t\t\t\t\tif(m[dpc[i]].icon === true && t[c].icon !== undefined) {\n\t\t\t\t\t\t\t\tm[dpc[i]].icon = t[c].icon;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tm['#'].type = '#';\n\t\t\t\t\t}, this));\n\t\t\tparent.bind.call(this);\n\t\t};\n\t\tthis.get_json = function (obj, options, flat) {\n\t\t\tvar i, j,\n\t\t\t\tm = this._model.data,\n\t\t\t\topt = options ? $.extend(true, {}, options, {no_id:false}) : {},\n\t\t\t\ttmp = parent.get_json.call(this, obj, opt, flat);\n\t\t\tif(tmp === false) { return false; }\n\t\t\tif($.isArray(tmp)) {\n\t\t\t\tfor(i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\t\ttmp[i].type = tmp[i].id && m[tmp[i].id] && m[tmp[i].id].type ? m[tmp[i].id].type : \"default\";\n\t\t\t\t\tif(options && options.no_id) {\n\t\t\t\t\t\tdelete tmp[i].id;\n\t\t\t\t\t\tif(tmp[i].li_attr && tmp[i].li_attr.id) {\n\t\t\t\t\t\t\tdelete tmp[i].li_attr.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttmp.type = tmp.id && m[tmp.id] && m[tmp.id].type ? m[tmp.id].type : \"default\";\n\t\t\t\tif(options && options.no_id) {\n\t\t\t\t\ttmp = this._delete_ids(tmp);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn tmp;\n\t\t};\n\t\tthis._delete_ids = function (tmp) {\n\t\t\tif($.isArray(tmp)) {\n\t\t\t\tfor(var i = 0, j = tmp.length; i < j; i++) {\n\t\t\t\t\ttmp[i] = this._delete_ids(tmp[i]);\n\t\t\t\t}\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\tdelete tmp.id;\n\t\t\tif(tmp.li_attr && tmp.li_attr.id) {\n\t\t\t\tdelete tmp.li_attr.id;\n\t\t\t}\n\t\t\tif(tmp.children && $.isArray(tmp.children)) {\n\t\t\t\ttmp.children = this._delete_ids(tmp.children);\n\t\t\t}\n\t\t\treturn tmp;\n\t\t};\n\t\tthis.check = function (chk, obj, par, pos, more) {\n\t\t\tif(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; }\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\t\t\tpar = par && par.id ? par : this.get_node(par);\n\t\t\tvar m = obj && obj.id ? $.jstree.reference(obj.id) : null, tmp, d, i, j;\n\t\t\tm = m && m._model && m._model.data ? m._model.data : null;\n\t\t\tswitch(chk) {\n\t\t\t\tcase \"create_node\":\n\t\t\t\tcase \"move_node\":\n\t\t\t\tcase \"copy_node\":\n\t\t\t\t\tif(chk !== 'move_node' || $.inArray(obj.id, par.children) === -1) {\n\t\t\t\t\t\ttmp = this.get_rules(par);\n\t\t\t\t\t\tif(tmp.max_children !== undefined && tmp.max_children !== -1 && tmp.max_children === par.children.length) {\n\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_01', 'reason' : 'max_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(tmp.valid_children !== undefined && tmp.valid_children !== -1 && $.inArray((obj.type || 'default'), tmp.valid_children) === -1) {\n\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_02', 'reason' : 'valid_children prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(m && obj.children_d && obj.parents) {\n\t\t\t\t\t\t\td = 0;\n\t\t\t\t\t\t\tfor(i = 0, j = obj.children_d.length; i < j; i++) {\n\t\t\t\t\t\t\t\td = Math.max(d, m[obj.children_d[i]].parents.length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\td = d - obj.parents.length + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(d <= 0 || d === undefined) { d = 1; }\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tif(tmp.max_depth !== undefined && tmp.max_depth !== -1 && tmp.max_depth < d) {\n\t\t\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'types', 'id' : 'types_03', 'reason' : 'max_depth prevents function: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpar = this.get_node(par.parent);\n\t\t\t\t\t\t\ttmp = this.get_rules(par);\n\t\t\t\t\t\t\td++;\n\t\t\t\t\t\t} while(par);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\t/**\n\t\t * used to retrieve the type settings object for a node\n\t\t * @name get_rules(obj)\n\t\t * @param {mixed} obj the node to find the rules for\n\t\t * @return {Object}\n\t\t * @plugin types\n\t\t */\n\t\tthis.get_rules = function (obj) {\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!obj) { return false; }\n\t\t\tvar tmp = this.get_type(obj, true);\n\t\t\tif(tmp.max_depth === undefined) { tmp.max_depth = -1; }\n\t\t\tif(tmp.max_children === undefined) { tmp.max_children = -1; }\n\t\t\tif(tmp.valid_children === undefined) { tmp.valid_children = -1; }\n\t\t\treturn tmp;\n\t\t};\n\t\t/**\n\t\t * used to retrieve the type string or settings object for a node\n\t\t * @name get_type(obj [, rules])\n\t\t * @param {mixed} obj the node to find the rules for\n\t\t * @param {Boolean} rules if set to `true` instead of a string the settings object will be returned\n\t\t * @return {String|Object}\n\t\t * @plugin types\n\t\t */\n\t\tthis.get_type = function (obj, rules) {\n\t\t\tobj = this.get_node(obj);\n\t\t\treturn (!obj) ? false : ( rules ? $.extend({ 'type' : obj.type }, this.settings.types[obj.type]) : obj.type);\n\t\t};\n\t\t/**\n\t\t * used to change a node's type\n\t\t * @name set_type(obj, type)\n\t\t * @param {mixed} obj the node to change\n\t\t * @param {String} type the new type\n\t\t * @plugin types\n\t\t */\n\t\tthis.set_type = function (obj, type) {\n\t\t\tvar t, t1, t2, old_type, old_icon;\n\t\t\tif($.isArray(obj)) {\n\t\t\t\tobj = obj.slice();\n\t\t\t\tfor(t1 = 0, t2 = obj.length; t1 < t2; t1++) {\n\t\t\t\t\tthis.set_type(obj[t1], type);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tt = this.settings.types;\n\t\t\tobj = this.get_node(obj);\n\t\t\tif(!t[type] || !obj) { return false; }\n\t\t\told_type = obj.type;\n\t\t\told_icon = this.get_icon(obj);\n\t\t\tobj.type = type;\n\t\t\tif(old_icon === true || (t[old_type] && t[old_type].icon && old_icon === t[old_type].icon)) {\n\t\t\t\tthis.set_icon(obj, t[type].icon !== undefined ? t[type].icon : true);\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t};\n\t// include the types plugin by default\n\t// $.jstree.defaults.plugins.push(\"types\");\n\n/**\n * ### Unique plugin\n *\n * Enforces that no nodes with the same name can coexist as siblings.\n */\n\n\t/**\n\t * stores all defaults for the unique plugin\n\t * @name $.jstree.defaults.unique\n\t * @plugin unique\n\t */\n\t$.jstree.defaults.unique = {\n\t\t/**\n\t\t * Indicates if the comparison should be case sensitive. Default is `false`.\n\t\t * @name $.jstree.defaults.unique.case_sensitive\n\t\t * @plugin unique\n\t\t */\n\t\tcase_sensitive : false,\n\t\t/**\n\t\t * A callback executed in the instance's scope when a new node is created and the name is already taken, the two arguments are the conflicting name and the counter. The default will produce results like `New node (2)`.\n\t\t * @name $.jstree.defaults.unique.duplicate\n\t\t * @plugin unique\n\t\t */\n\t\tduplicate : function (name, counter) {\n\t\t\treturn name + ' (' + counter + ')';\n\t\t}\n\t};\n\n\t$.jstree.plugins.unique = function (options, parent) {\n\t\tthis.check = function (chk, obj, par, pos, more) {\n\t\t\tif(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; }\n\t\t\tobj = obj && obj.id ? obj : this.get_node(obj);\n\t\t\tpar = par && par.id ? par : this.get_node(par);\n\t\t\tif(!par || !par.children) { return true; }\n\t\t\tvar n = chk === \"rename_node\" ? pos : obj.text,\n\t\t\t\tc = [],\n\t\t\t\ts = this.settings.unique.case_sensitive,\n\t\t\t\tm = this._model.data, i, j;\n\t\t\tfor(i = 0, j = par.children.length; i < j; i++) {\n\t\t\t\tc.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase());\n\t\t\t}\n\t\t\tif(!s) { n = n.toLowerCase(); }\n\t\t\tswitch(chk) {\n\t\t\t\tcase \"delete_node\":\n\t\t\t\t\treturn true;\n\t\t\t\tcase \"rename_node\":\n\t\t\t\t\ti = ($.inArray(n, c) === -1 || (obj.text && obj.text[ s ? 'toString' : 'toLowerCase']() === n));\n\t\t\t\t\tif(!i) {\n\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_01', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t}\n\t\t\t\t\treturn i;\n\t\t\t\tcase \"create_node\":\n\t\t\t\t\ti = ($.inArray(n, c) === -1);\n\t\t\t\t\tif(!i) {\n\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_04', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t}\n\t\t\t\t\treturn i;\n\t\t\t\tcase \"copy_node\":\n\t\t\t\t\ti = ($.inArray(n, c) === -1);\n\t\t\t\t\tif(!i) {\n\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_02', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t}\n\t\t\t\t\treturn i;\n\t\t\t\tcase \"move_node\":\n\t\t\t\t\ti = (obj.parent === par.id || $.inArray(n, c) === -1);\n\t\t\t\t\tif(!i) {\n\t\t\t\t\t\tthis._data.core.last_error = { 'error' : 'check', 'plugin' : 'unique', 'id' : 'unique_03', 'reason' : 'Child with name ' + n + ' already exists. Preventing: ' + chk, 'data' : JSON.stringify({ 'chk' : chk, 'pos' : pos, 'obj' : obj && obj.id ? obj.id : false, 'par' : par && par.id ? par.id : false }) };\n\t\t\t\t\t}\n\t\t\t\t\treturn i;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\tthis.create_node = function (par, node, pos, callback, is_loaded) {\n\t\t\tif(!node || node.text === undefined) {\n\t\t\t\tif(par === null) {\n\t\t\t\t\tpar = \"#\";\n\t\t\t\t}\n\t\t\t\tpar = this.get_node(par);\n\t\t\t\tif(!par) {\n\t\t\t\t\treturn parent.create_node.call(this, par, node, pos, callback, is_loaded);\n\t\t\t\t}\n\t\t\t\tpos = pos === undefined ? \"last\" : pos;\n\t\t\t\tif(!pos.toString().match(/^(before|after)$/) && !is_loaded && !this.is_loaded(par)) {\n\t\t\t\t\treturn parent.create_node.call(this, par, node, pos, callback, is_loaded);\n\t\t\t\t}\n\t\t\t\tif(!node) { node = {}; }\n\t\t\t\tvar tmp, n, dpc, i, j, m = this._model.data, s = this.settings.unique.case_sensitive, cb = this.settings.unique.duplicate;\n\t\t\t\tn = tmp = this.get_string('New node');\n\t\t\t\tdpc = [];\n\t\t\t\tfor(i = 0, j = par.children.length; i < j; i++) {\n\t\t\t\t\tdpc.push(s ? m[par.children[i]].text : m[par.children[i]].text.toLowerCase());\n\t\t\t\t}\n\t\t\t\ti = 1;\n\t\t\t\twhile($.inArray(s ? n : n.toLowerCase(), dpc) !== -1) {\n\t\t\t\t\tn = cb.call(this, tmp, (++i)).toString();\n\t\t\t\t}\n\t\t\t\tnode.text = n;\n\t\t\t}\n\t\t\treturn parent.create_node.call(this, par, node, pos, callback, is_loaded);\n\t\t};\n\t};\n\n\t// include the unique plugin by default\n\t// $.jstree.defaults.plugins.push(\"unique\");\n\n\n/**\n * ### Wholerow plugin\n *\n * Makes each node appear block level. Making selection easier. May cause slow down for large trees in old browsers.\n */\n\n\tvar div = document.createElement('DIV');\n\tdiv.setAttribute('unselectable','on');\n\tdiv.className = 'jstree-wholerow';\n\tdiv.innerHTML = '&#160;';\n\t$.jstree.plugins.wholerow = function (options, parent) {\n\t\tthis.bind = function () {\n\t\t\tparent.bind.call(this);\n\n\t\t\tthis.element\n\t\t\t\t.on('ready.jstree set_state.jstree', $.proxy(function () {\n\t\t\t\t\t\tthis.hide_dots();\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"init.jstree loading.jstree ready.jstree\", $.proxy(function () {\n\t\t\t\t\t\t//div.style.height = this._data.core.li_height + 'px';\n\t\t\t\t\t\tthis.get_container_ul().addClass('jstree-wholerow-ul');\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"deselect_all.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked');\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"changed.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.element.find('.jstree-wholerow-clicked').removeClass('jstree-wholerow-clicked');\n\t\t\t\t\t\tvar tmp = false, i, j;\n\t\t\t\t\t\tfor(i = 0, j = data.selected.length; i < j; i++) {\n\t\t\t\t\t\t\ttmp = this.get_node(data.selected[i], true);\n\t\t\t\t\t\t\tif(tmp && tmp.length) {\n\t\t\t\t\t\t\t\ttmp.children('.jstree-wholerow').addClass('jstree-wholerow-clicked');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"open_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.get_node(data.node, true).find('.jstree-clicked').parent().children('.jstree-wholerow').addClass('jstree-wholerow-clicked');\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"hover_node.jstree dehover_node.jstree\", $.proxy(function (e, data) {\n\t\t\t\t\t\tthis.get_node(data.node, true).children('.jstree-wholerow')[e.type === \"hover_node\"?\"addClass\":\"removeClass\"]('jstree-wholerow-hovered');\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"contextmenu.jstree\", \".jstree-wholerow\", $.proxy(function (e) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tvar tmp = $.Event('contextmenu', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey, pageX : e.pageX, pageY : e.pageY });\n\t\t\t\t\t\t$(e.currentTarget).closest(\".jstree-node\").children(\".jstree-anchor:eq(0)\").trigger(tmp);\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"click.jstree\", \".jstree-wholerow\", function (e) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\tvar tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });\n\t\t\t\t\t\t$(e.currentTarget).closest(\".jstree-node\").children(\".jstree-anchor:eq(0)\").trigger(tmp).focus();\n\t\t\t\t\t})\n\t\t\t\t.on(\"click.jstree\", \".jstree-leaf > .jstree-ocl\", $.proxy(function (e) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\tvar tmp = $.Event('click', { metaKey : e.metaKey, ctrlKey : e.ctrlKey, altKey : e.altKey, shiftKey : e.shiftKey });\n\t\t\t\t\t\t$(e.currentTarget).closest(\".jstree-node\").children(\".jstree-anchor:eq(0)\").trigger(tmp).focus();\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"mouseover.jstree\", \".jstree-wholerow, .jstree-icon\", $.proxy(function (e) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\tthis.hover_node(e.currentTarget);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}, this))\n\t\t\t\t.on(\"mouseleave.jstree\", \".jstree-node\", $.proxy(function (e) {\n\t\t\t\t\t\tthis.dehover_node(e.currentTarget);\n\t\t\t\t\t}, this));\n\t\t};\n\t\tthis.teardown = function () {\n\t\t\tif(this.settings.wholerow) {\n\t\t\t\tthis.element.find(\".jstree-wholerow\").remove();\n\t\t\t}\n\t\t\tparent.teardown.call(this);\n\t\t};\n\t\tthis.redraw_node = function(obj, deep, callback) {\n\t\t\tobj = parent.redraw_node.call(this, obj, deep, callback);\n\t\t\tif(obj) {\n\t\t\t\tvar tmp = div.cloneNode(true);\n\t\t\t\t//tmp.style.height = this._data.core.li_height + 'px';\n\t\t\t\tif($.inArray(obj.id, this._data.core.selected) !== -1) { tmp.className += ' jstree-wholerow-clicked'; }\n\t\t\t\tobj.insertBefore(tmp, obj.childNodes[0]);\n\t\t\t}\n\t\t\treturn obj;\n\t\t};\n\t};\n\t// include the wholerow plugin by default\n\t// $.jstree.defaults.plugins.push(\"wholerow\");\n\n\n(function ($) {\n\tif(document.registerElement) {\n\t\tvar proto = Object.create(HTMLElement.prototype);\n\t\tproto.createdCallback = function () {\n\t\t\tvar c = { core : {}, plugins : [] }, i;\n\t\t\tfor(i in $.jstree.plugins) {\n\t\t\t\tif($.jstree.plugins.hasOwnProperty(i) && this.attributes[i]) {\n\t\t\t\t\tc.plugins.push(i);\n\t\t\t\t\tif(this.getAttribute(i) && JSON.parse(this.getAttribute(i))) {\n\t\t\t\t\t\tc[i] = JSON.parse(this.getAttribute(i));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(i in $.jstree.defaults.core) {\n\t\t\t\tif($.jstree.defaults.core.hasOwnProperty(i) && this.attributes[i]) {\n\t\t\t\t\tc.core[i] = JSON.parse(this.getAttribute(i)) || this.getAttribute(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\tjQuery(this).jstree(c);\n\t\t};\n\t\t// proto.attributeChangedCallback = function (name, previous, value) { };\n\t\ttry {\n\t\t\tdocument.registerElement(\"vakata-jstree\", { prototype: proto });\n\t\t} catch(ignore) { }\n\t}\n}(jQuery));\n}));"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/jstree-theme/themes/default/style.css",
    "content": "/* jsTree default theme */\n.jstree-node,\n.jstree-children,\n.jstree-container-ul {\n  display: block;\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n  list-style-image: none;\n}\n.jstree-node {\n  white-space: nowrap;\n}\n.jstree-anchor {\n  display: inline-block;\n  color: black;\n  white-space: nowrap;\n  padding: 0 4px 0 1px;\n  margin: 0;\n  vertical-align: top;\n}\n.jstree-anchor:focus {\n  outline: 0;\n}\n.jstree-anchor,\n.jstree-anchor:link,\n.jstree-anchor:visited,\n.jstree-anchor:hover,\n.jstree-anchor:active {\n  text-decoration: none;\n  color: inherit;\n}\n.jstree-icon {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0;\n  vertical-align: top;\n  text-align: center;\n}\n.jstree-icon:empty {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0;\n  vertical-align: top;\n  text-align: center;\n}\n.jstree-ocl {\n  cursor: pointer;\n}\n.jstree-leaf > .jstree-ocl {\n  cursor: default;\n}\n.jstree .jstree-open > .jstree-children {\n  display: block;\n}\n.jstree .jstree-closed > .jstree-children,\n.jstree .jstree-leaf > .jstree-children {\n  display: none;\n}\n.jstree-anchor > .jstree-themeicon {\n  margin-right: 2px;\n}\n.jstree-no-icons .jstree-themeicon,\n.jstree-anchor > .jstree-themeicon-hidden {\n  display: none;\n}\n.jstree-rtl .jstree-anchor {\n  padding: 0 1px 0 4px;\n}\n.jstree-rtl .jstree-anchor > .jstree-themeicon {\n  margin-left: 2px;\n  margin-right: 0;\n}\n.jstree-rtl .jstree-node {\n  margin-left: 0;\n}\n.jstree-rtl .jstree-container-ul > .jstree-node {\n  margin-right: 0;\n}\n.jstree-wholerow-ul {\n  position: relative;\n  display: inline-block;\n  min-width: 100%;\n}\n.jstree-wholerow-ul .jstree-leaf > .jstree-ocl {\n  cursor: pointer;\n}\n.jstree-wholerow-ul .jstree-anchor,\n.jstree-wholerow-ul .jstree-icon {\n  position: relative;\n}\n.jstree-wholerow-ul .jstree-wholerow {\n  width: 100%;\n  cursor: pointer;\n  position: absolute;\n  left: 0;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.vakata-context {\n  display: none;\n}\n.vakata-context,\n.vakata-context ul {\n  margin: 0;\n  padding: 2px;\n  position: absolute;\n  background: #f5f5f5;\n  border: 1px solid #979797;\n  -moz-box-shadow: 5px 5px 4px -4px #666666;\n  -webkit-box-shadow: 2px 2px 2px #999999;\n  box-shadow: 2px 2px 2px #999999;\n}\n.vakata-context ul {\n  list-style: none;\n  left: 100%;\n  margin-top: -2.7em;\n  margin-left: -4px;\n}\n.vakata-context .vakata-context-right ul {\n  left: auto;\n  right: 100%;\n  margin-left: auto;\n  margin-right: -4px;\n}\n.vakata-context li {\n  list-style: none;\n  display: inline;\n}\n.vakata-context li > a {\n  display: block;\n  padding: 0 2em 0 2em;\n  text-decoration: none;\n  width: auto;\n  color: black;\n  white-space: nowrap;\n  line-height: 2.4em;\n  -moz-text-shadow: 1px 1px 0 white;\n  -webkit-text-shadow: 1px 1px 0 white;\n  text-shadow: 1px 1px 0 white;\n  -moz-border-radius: 1px;\n  -webkit-border-radius: 1px;\n  border-radius: 1px;\n}\n.vakata-context li > a:hover {\n  position: relative;\n  background-color: #e8eff7;\n  -moz-box-shadow: 0 0 2px #0a6aa1;\n  -webkit-box-shadow: 0 0 2px #0a6aa1;\n  box-shadow: 0 0 2px #0a6aa1;\n}\n.vakata-context li > a.vakata-context-parent {\n  background-image: url(\"data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==\");\n  background-position: right center;\n  background-repeat: no-repeat;\n}\n.vakata-context li > a:focus {\n  outline: 0;\n}\n.vakata-context .vakata-context-hover > a {\n  position: relative;\n  background-color: #e8eff7;\n  -moz-box-shadow: 0 0 2px #0a6aa1;\n  -webkit-box-shadow: 0 0 2px #0a6aa1;\n  box-shadow: 0 0 2px #0a6aa1;\n}\n.vakata-context .vakata-context-separator > a,\n.vakata-context .vakata-context-separator > a:hover {\n  background: white;\n  border: 0;\n  border-top: 1px solid #e2e3e3;\n  height: 1px;\n  min-height: 1px;\n  max-height: 1px;\n  padding: 0;\n  margin: 0 0 0 2.4em;\n  border-left: 1px solid #e0e0e0;\n  -moz-text-shadow: 0 0 0 transparent;\n  -webkit-text-shadow: 0 0 0 transparent;\n  text-shadow: 0 0 0 transparent;\n  -moz-box-shadow: 0 0 0 transparent;\n  -webkit-box-shadow: 0 0 0 transparent;\n  box-shadow: 0 0 0 transparent;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.vakata-context .vakata-contextmenu-disabled a,\n.vakata-context .vakata-contextmenu-disabled a:hover {\n  color: silver;\n  background-color: transparent;\n  border: 0;\n  box-shadow: 0 0 0;\n}\n.vakata-context li > a > i {\n  text-decoration: none;\n  display: inline-block;\n  width: 2.4em;\n  height: 2.4em;\n  background: transparent;\n  margin: 0 0 0 -2em;\n  vertical-align: top;\n  text-align: center;\n  line-height: 2.4em;\n}\n.vakata-context li > a > i:empty {\n  width: 2.4em;\n  line-height: 2.4em;\n}\n.vakata-context li > a .vakata-contextmenu-sep {\n  display: inline-block;\n  width: 1px;\n  height: 2.4em;\n  background: white;\n  margin: 0 0.5em 0 0;\n  border-left: 1px solid #e2e3e3;\n}\n.vakata-context .vakata-contextmenu-shortcut {\n  font-size: 0.8em;\n  color: silver;\n  opacity: 0.5;\n  display: none;\n}\n.vakata-context-rtl ul {\n  left: auto;\n  right: 100%;\n  margin-left: auto;\n  margin-right: -4px;\n}\n.vakata-context-rtl li > a.vakata-context-parent {\n  background-image: url(\"data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7\");\n  background-position: left center;\n  background-repeat: no-repeat;\n}\n.vakata-context-rtl .vakata-context-separator > a {\n  margin: 0 2.4em 0 0;\n  border-left: 0;\n  border-right: 1px solid #e2e3e3;\n}\n.vakata-context-rtl .vakata-context-left ul {\n  right: auto;\n  left: 100%;\n  margin-left: -4px;\n  margin-right: auto;\n}\n.vakata-context-rtl li > a > i {\n  margin: 0 -2em 0 0;\n}\n.vakata-context-rtl li > a .vakata-contextmenu-sep {\n  margin: 0 0 0 0.5em;\n  border-left-color: white;\n  background: #e2e3e3;\n}\n#jstree-marker {\n  position: absolute;\n  top: 0;\n  left: 0;\n  margin: -5px 0 0 0;\n  padding: 0;\n  border-right: 0;\n  border-top: 5px solid transparent;\n  border-bottom: 5px solid transparent;\n  border-left: 5px solid;\n  width: 0;\n  height: 0;\n  font-size: 0;\n  line-height: 0;\n}\n#jstree-dnd {\n  line-height: 16px;\n  margin: 0;\n  padding: 4px;\n}\n#jstree-dnd .jstree-icon,\n#jstree-dnd .jstree-copy {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0 2px 0 0;\n  padding: 0;\n  width: 16px;\n  height: 16px;\n}\n#jstree-dnd .jstree-ok {\n  background: green;\n}\n#jstree-dnd .jstree-er {\n  background: red;\n}\n#jstree-dnd .jstree-copy {\n  margin: 0 2px 0 2px;\n}\n.jstree-default .jstree-node,\n.jstree-default .jstree-icon {\n  background-repeat: no-repeat;\n  background-color: transparent;\n}\n.jstree-default .jstree-anchor,\n.jstree-default .jstree-wholerow {\n  transition: background-color 0.15s, box-shadow 0.15s;\n}\n.jstree-default .jstree-hovered {\n  background: #e7f4f9;\n  border-radius: 2px;\n  box-shadow: inset 0 0 1px #cccccc;\n}\n.jstree-default .jstree-clicked {\n  background: #beebff;\n  border-radius: 2px;\n  box-shadow: inset 0 0 1px #999999;\n}\n.jstree-default .jstree-no-icons .jstree-anchor > .jstree-themeicon {\n  display: none;\n}\n.jstree-default .jstree-disabled {\n  background: transparent;\n  color: #666666;\n}\n.jstree-default .jstree-disabled.jstree-hovered {\n  background: transparent;\n  box-shadow: none;\n}\n.jstree-default .jstree-disabled.jstree-clicked {\n  background: #efefef;\n}\n.jstree-default .jstree-disabled > .jstree-icon {\n  opacity: 0.8;\n  filter: url(\"data:image/svg+xml;utf8,<svg xmlns=\\'http://www.w3.org/2000/svg\\'><filter id=\\'jstree-grayscale\\'><feColorMatrix type=\\'matrix\\' values=\\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\\'/></filter></svg>#jstree-grayscale\");\n  /* Firefox 10+ */\n  filter: gray;\n  /* IE6-9 */\n  -webkit-filter: grayscale(100%);\n  /* Chrome 19+ & Safari 6+ */\n}\n.jstree-default .jstree-search {\n  font-style: italic;\n  color: #8b0000;\n  font-weight: bold;\n}\n.jstree-default .jstree-no-checkboxes .jstree-checkbox {\n  display: none !important;\n}\n.jstree-default.jstree-checkbox-no-clicked .jstree-clicked {\n  background: transparent;\n  box-shadow: none;\n}\n.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered {\n  background: #e7f4f9;\n}\n.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked {\n  background: transparent;\n}\n.jstree-default.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered {\n  background: #e7f4f9;\n}\n.jstree-default > .jstree-striped {\n  background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==\") left top repeat;\n}\n.jstree-default > .jstree-wholerow-ul .jstree-hovered,\n.jstree-default > .jstree-wholerow-ul .jstree-clicked {\n  background: transparent;\n  box-shadow: none;\n  border-radius: 0;\n}\n.jstree-default .jstree-wholerow {\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n}\n.jstree-default .jstree-wholerow-hovered {\n  background: #e7f4f9;\n}\n.jstree-default .jstree-wholerow-clicked {\n  background: #beebff;\n  background: -moz-linear-gradient(top, #beebff 0%, #a8e4ff 100%);\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #beebff), color-stop(100%, #a8e4ff));\n  background: -webkit-linear-gradient(top, #beebff 0%, #a8e4ff 100%);\n  background: -o-linear-gradient(top, #beebff 0%, #a8e4ff 100%);\n  background: -ms-linear-gradient(top, #beebff 0%, #a8e4ff 100%);\n  background: linear-gradient(to bottom, #beebff 0%, #a8e4ff 100%);\n  /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='@color1', endColorstr='@color2',GradientType=0 );*/\n}\n.jstree-default .jstree-node {\n  min-height: 24px;\n  line-height: 24px;\n  margin-left: 24px;\n  min-width: 24px;\n}\n.jstree-default .jstree-anchor {\n  line-height: 24px;\n  height: 24px;\n}\n.jstree-default .jstree-icon {\n  width: 24px;\n  height: 24px;\n  line-height: 24px;\n}\n.jstree-default .jstree-icon:empty {\n  width: 24px;\n  height: 24px;\n  line-height: 24px;\n}\n.jstree-default.jstree-rtl .jstree-node {\n  margin-right: 24px;\n}\n.jstree-default .jstree-wholerow {\n  height: 24px;\n}\n.jstree-default .jstree-node,\n.jstree-default .jstree-icon {\n  background-image: url(\"32px.png\");\n}\n.jstree-default .jstree-node {\n  background-position: -292px -4px;\n  background-repeat: repeat-y;\n}\n.jstree-default .jstree-last {\n  background: transparent;\n}\n.jstree-default .jstree-open > .jstree-ocl {\n  background-position: -132px -4px;\n}\n.jstree-default .jstree-closed > .jstree-ocl {\n  background-position: -100px -4px;\n}\n.jstree-default .jstree-leaf > .jstree-ocl {\n  background-position: -68px -4px;\n}\n.jstree-default .jstree-themeicon {\n  background-position: -260px -4px;\n}\n.jstree-default > .jstree-no-dots .jstree-node,\n.jstree-default > .jstree-no-dots .jstree-leaf > .jstree-ocl {\n  background: transparent;\n}\n.jstree-default > .jstree-no-dots .jstree-open > .jstree-ocl {\n  background-position: -36px -4px;\n}\n.jstree-default > .jstree-no-dots .jstree-closed > .jstree-ocl {\n  background-position: -4px -4px;\n}\n.jstree-default .jstree-disabled {\n  background: transparent;\n}\n.jstree-default .jstree-disabled.jstree-hovered {\n  background: transparent;\n}\n.jstree-default .jstree-disabled.jstree-clicked {\n  background: #efefef;\n}\n.jstree-default .jstree-checkbox {\n  background-position: -164px -4px;\n}\n.jstree-default .jstree-checkbox:hover {\n  background-position: -164px -36px;\n}\n.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,\n.jstree-default .jstree-checked > .jstree-checkbox {\n  background-position: -228px -4px;\n}\n.jstree-default.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,\n.jstree-default .jstree-checked > .jstree-checkbox:hover {\n  background-position: -228px -36px;\n}\n.jstree-default .jstree-anchor > .jstree-undetermined {\n  background-position: -196px -4px;\n}\n.jstree-default .jstree-anchor > .jstree-undetermined:hover {\n  background-position: -196px -36px;\n}\n.jstree-default > .jstree-striped {\n  background-size: auto 48px;\n}\n.jstree-default.jstree-rtl .jstree-node {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==\");\n  background-position: 100% 1px;\n  background-repeat: repeat-y;\n}\n.jstree-default.jstree-rtl .jstree-last {\n  background: transparent;\n}\n.jstree-default.jstree-rtl .jstree-open > .jstree-ocl {\n  background-position: -132px -36px;\n}\n.jstree-default.jstree-rtl .jstree-closed > .jstree-ocl {\n  background-position: -100px -36px;\n}\n.jstree-default.jstree-rtl .jstree-leaf > .jstree-ocl {\n  background-position: -68px -36px;\n}\n.jstree-default.jstree-rtl > .jstree-no-dots .jstree-node,\n.jstree-default.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {\n  background: transparent;\n}\n.jstree-default.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {\n  background-position: -36px -36px;\n}\n.jstree-default.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {\n  background-position: -4px -36px;\n}\n.jstree-default .jstree-themeicon-custom {\n  background-color: transparent;\n  background-image: none;\n  background-position: 0 0;\n}\n.jstree-default > .jstree-container-ul .jstree-loading > .jstree-ocl {\n  background: url(\"throbber.gif\") center center no-repeat;\n}\n.jstree-default .jstree-file {\n  background: url(\"32px.png\") -100px -68px no-repeat;\n}\n.jstree-default .jstree-folder {\n  background: url(\"32px.png\") -260px -4px no-repeat;\n}\n.jstree-default > .jstree-container-ul > .jstree-node {\n  margin-left: 0;\n  margin-right: 0;\n}\n#jstree-dnd.jstree-default {\n  line-height: 24px;\n  padding: 0 4px;\n}\n#jstree-dnd.jstree-default .jstree-ok,\n#jstree-dnd.jstree-default .jstree-er {\n  background-image: url(\"32px.png\");\n  background-repeat: no-repeat;\n  background-color: transparent;\n}\n#jstree-dnd.jstree-default i {\n  background: transparent;\n  width: 24px;\n  height: 24px;\n  line-height: 24px;\n}\n#jstree-dnd.jstree-default .jstree-ok {\n  background-position: -4px -68px;\n}\n#jstree-dnd.jstree-default .jstree-er {\n  background-position: -36px -68px;\n}\n.jstree-default.jstree-rtl .jstree-node {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==\");\n}\n.jstree-default.jstree-rtl .jstree-last {\n  background: transparent;\n}\n.jstree-default-small .jstree-node {\n  min-height: 18px;\n  line-height: 18px;\n  margin-left: 18px;\n  min-width: 18px;\n}\n.jstree-default-small .jstree-anchor {\n  line-height: 18px;\n  height: 18px;\n}\n.jstree-default-small .jstree-icon {\n  width: 18px;\n  height: 18px;\n  line-height: 18px;\n}\n.jstree-default-small .jstree-icon:empty {\n  width: 18px;\n  height: 18px;\n  line-height: 18px;\n}\n.jstree-default-small.jstree-rtl .jstree-node {\n  margin-right: 18px;\n}\n.jstree-default-small .jstree-wholerow {\n  height: 18px;\n}\n.jstree-default-small .jstree-node,\n.jstree-default-small .jstree-icon {\n  background-image: url(\"32px.png\");\n}\n.jstree-default-small .jstree-node {\n  background-position: -295px -7px;\n  background-repeat: repeat-y;\n}\n.jstree-default-small .jstree-last {\n  background: transparent;\n}\n.jstree-default-small .jstree-open > .jstree-ocl {\n  background-position: -135px -7px;\n}\n.jstree-default-small .jstree-closed > .jstree-ocl {\n  background-position: -103px -7px;\n}\n.jstree-default-small .jstree-leaf > .jstree-ocl {\n  background-position: -71px -7px;\n}\n.jstree-default-small .jstree-themeicon {\n  background-position: -263px -7px;\n}\n.jstree-default-small > .jstree-no-dots .jstree-node,\n.jstree-default-small > .jstree-no-dots .jstree-leaf > .jstree-ocl {\n  background: transparent;\n}\n.jstree-default-small > .jstree-no-dots .jstree-open > .jstree-ocl {\n  background-position: -39px -7px;\n}\n.jstree-default-small > .jstree-no-dots .jstree-closed > .jstree-ocl {\n  background-position: -7px -7px;\n}\n.jstree-default-small .jstree-disabled {\n  background: transparent;\n}\n.jstree-default-small .jstree-disabled.jstree-hovered {\n  background: transparent;\n}\n.jstree-default-small .jstree-disabled.jstree-clicked {\n  background: #efefef;\n}\n.jstree-default-small .jstree-checkbox {\n  background-position: -167px -7px;\n}\n.jstree-default-small .jstree-checkbox:hover {\n  background-position: -167px -39px;\n}\n.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,\n.jstree-default-small .jstree-checked > .jstree-checkbox {\n  background-position: -231px -7px;\n}\n.jstree-default-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,\n.jstree-default-small .jstree-checked > .jstree-checkbox:hover {\n  background-position: -231px -39px;\n}\n.jstree-default-small .jstree-anchor > .jstree-undetermined {\n  background-position: -199px -7px;\n}\n.jstree-default-small .jstree-anchor > .jstree-undetermined:hover {\n  background-position: -199px -39px;\n}\n.jstree-default-small > .jstree-striped {\n  background-size: auto 36px;\n}\n.jstree-default-small.jstree-rtl .jstree-node {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==\");\n  background-position: 100% 1px;\n  background-repeat: repeat-y;\n}\n.jstree-default-small.jstree-rtl .jstree-last {\n  background: transparent;\n}\n.jstree-default-small.jstree-rtl .jstree-open > .jstree-ocl {\n  background-position: -135px -39px;\n}\n.jstree-default-small.jstree-rtl .jstree-closed > .jstree-ocl {\n  background-position: -103px -39px;\n}\n.jstree-default-small.jstree-rtl .jstree-leaf > .jstree-ocl {\n  background-position: -71px -39px;\n}\n.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-node,\n.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {\n  background: transparent;\n}\n.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {\n  background-position: -39px -39px;\n}\n.jstree-default-small.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {\n  background-position: -7px -39px;\n}\n.jstree-default-small .jstree-themeicon-custom {\n  background-color: transparent;\n  background-image: none;\n  background-position: 0 0;\n}\n.jstree-default-small > .jstree-container-ul .jstree-loading > .jstree-ocl {\n  background: url(\"throbber.gif\") center center no-repeat;\n}\n.jstree-default-small .jstree-file {\n  background: url(\"32px.png\") -103px -71px no-repeat;\n}\n.jstree-default-small .jstree-folder {\n  background: url(\"32px.png\") -263px -7px no-repeat;\n}\n.jstree-default-small > .jstree-container-ul > .jstree-node {\n  margin-left: 0;\n  margin-right: 0;\n}\n#jstree-dnd.jstree-default-small {\n  line-height: 18px;\n  padding: 0 4px;\n}\n#jstree-dnd.jstree-default-small .jstree-ok,\n#jstree-dnd.jstree-default-small .jstree-er {\n  background-image: url(\"32px.png\");\n  background-repeat: no-repeat;\n  background-color: transparent;\n}\n#jstree-dnd.jstree-default-small i {\n  background: transparent;\n  width: 18px;\n  height: 18px;\n  line-height: 18px;\n}\n#jstree-dnd.jstree-default-small .jstree-ok {\n  background-position: -7px -71px;\n}\n#jstree-dnd.jstree-default-small .jstree-er {\n  background-position: -39px -71px;\n}\n.jstree-default-small.jstree-rtl .jstree-node {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==\");\n}\n.jstree-default-small.jstree-rtl .jstree-last {\n  background: transparent;\n}\n.jstree-default-large .jstree-node {\n  min-height: 32px;\n  line-height: 32px;\n  margin-left: 32px;\n  min-width: 32px;\n}\n.jstree-default-large .jstree-anchor {\n  line-height: 32px;\n  height: 32px;\n}\n.jstree-default-large .jstree-icon {\n  width: 32px;\n  height: 32px;\n  line-height: 32px;\n}\n.jstree-default-large .jstree-icon:empty {\n  width: 32px;\n  height: 32px;\n  line-height: 32px;\n}\n.jstree-default-large.jstree-rtl .jstree-node {\n  margin-right: 32px;\n}\n.jstree-default-large .jstree-wholerow {\n  height: 32px;\n}\n.jstree-default-large .jstree-node,\n.jstree-default-large .jstree-icon {\n  background-image: url(\"32px.png\");\n}\n.jstree-default-large .jstree-node {\n  background-position: -288px 0px;\n  background-repeat: repeat-y;\n}\n.jstree-default-large .jstree-last {\n  background: transparent;\n}\n.jstree-default-large .jstree-open > .jstree-ocl {\n  background-position: -128px 0px;\n}\n.jstree-default-large .jstree-closed > .jstree-ocl {\n  background-position: -96px 0px;\n}\n.jstree-default-large .jstree-leaf > .jstree-ocl {\n  background-position: -64px 0px;\n}\n.jstree-default-large .jstree-themeicon {\n  background-position: -256px 0px;\n}\n.jstree-default-large > .jstree-no-dots .jstree-node,\n.jstree-default-large > .jstree-no-dots .jstree-leaf > .jstree-ocl {\n  background: transparent;\n}\n.jstree-default-large > .jstree-no-dots .jstree-open > .jstree-ocl {\n  background-position: -32px 0px;\n}\n.jstree-default-large > .jstree-no-dots .jstree-closed > .jstree-ocl {\n  background-position: 0px 0px;\n}\n.jstree-default-large .jstree-disabled {\n  background: transparent;\n}\n.jstree-default-large .jstree-disabled.jstree-hovered {\n  background: transparent;\n}\n.jstree-default-large .jstree-disabled.jstree-clicked {\n  background: #efefef;\n}\n.jstree-default-large .jstree-checkbox {\n  background-position: -160px 0px;\n}\n.jstree-default-large .jstree-checkbox:hover {\n  background-position: -160px -32px;\n}\n.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,\n.jstree-default-large .jstree-checked > .jstree-checkbox {\n  background-position: -224px 0px;\n}\n.jstree-default-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,\n.jstree-default-large .jstree-checked > .jstree-checkbox:hover {\n  background-position: -224px -32px;\n}\n.jstree-default-large .jstree-anchor > .jstree-undetermined {\n  background-position: -192px 0px;\n}\n.jstree-default-large .jstree-anchor > .jstree-undetermined:hover {\n  background-position: -192px -32px;\n}\n.jstree-default-large > .jstree-striped {\n  background-size: auto 64px;\n}\n.jstree-default-large.jstree-rtl .jstree-node {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==\");\n  background-position: 100% 1px;\n  background-repeat: repeat-y;\n}\n.jstree-default-large.jstree-rtl .jstree-last {\n  background: transparent;\n}\n.jstree-default-large.jstree-rtl .jstree-open > .jstree-ocl {\n  background-position: -128px -32px;\n}\n.jstree-default-large.jstree-rtl .jstree-closed > .jstree-ocl {\n  background-position: -96px -32px;\n}\n.jstree-default-large.jstree-rtl .jstree-leaf > .jstree-ocl {\n  background-position: -64px -32px;\n}\n.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-node,\n.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {\n  background: transparent;\n}\n.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {\n  background-position: -32px -32px;\n}\n.jstree-default-large.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {\n  background-position: 0px -32px;\n}\n.jstree-default-large .jstree-themeicon-custom {\n  background-color: transparent;\n  background-image: none;\n  background-position: 0 0;\n}\n.jstree-default-large > .jstree-container-ul .jstree-loading > .jstree-ocl {\n  background: url(\"throbber.gif\") center center no-repeat;\n}\n.jstree-default-large .jstree-file {\n  background: url(\"32px.png\") -96px -64px no-repeat;\n}\n.jstree-default-large .jstree-folder {\n  background: url(\"32px.png\") -256px 0px no-repeat;\n}\n.jstree-default-large > .jstree-container-ul > .jstree-node {\n  margin-left: 0;\n  margin-right: 0;\n}\n#jstree-dnd.jstree-default-large {\n  line-height: 32px;\n  padding: 0 4px;\n}\n#jstree-dnd.jstree-default-large .jstree-ok,\n#jstree-dnd.jstree-default-large .jstree-er {\n  background-image: url(\"32px.png\");\n  background-repeat: no-repeat;\n  background-color: transparent;\n}\n#jstree-dnd.jstree-default-large i {\n  background: transparent;\n  width: 32px;\n  height: 32px;\n  line-height: 32px;\n}\n#jstree-dnd.jstree-default-large .jstree-ok {\n  background-position: 0px -64px;\n}\n#jstree-dnd.jstree-default-large .jstree-er {\n  background-position: -32px -64px;\n}\n.jstree-default-large.jstree-rtl .jstree-node {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==\");\n}\n.jstree-default-large.jstree-rtl .jstree-last {\n  background: transparent;\n}\n@media (max-width: 768px) {\n  #jstree-dnd.jstree-dnd-responsive {\n    line-height: 40px;\n    font-weight: bold;\n    font-size: 1.1em;\n    text-shadow: 1px 1px white;\n  }\n  #jstree-dnd.jstree-dnd-responsive > i {\n    background: transparent;\n    width: 40px;\n    height: 40px;\n  }\n  #jstree-dnd.jstree-dnd-responsive > .jstree-ok {\n    background-image: url(\"40px.png\");\n    background-position: 0 -200px;\n    background-size: 120px 240px;\n  }\n  #jstree-dnd.jstree-dnd-responsive > .jstree-er {\n    background-image: url(\"40px.png\");\n    background-position: -40px -200px;\n    background-size: 120px 240px;\n  }\n  #jstree-marker.jstree-dnd-responsive {\n    border-left-width: 10px;\n    border-top-width: 10px;\n    border-bottom-width: 10px;\n    margin-top: -10px;\n  }\n}\n@media (max-width: 768px) {\n  .jstree-default-responsive {\n    /*\n\t.jstree-open > .jstree-ocl,\n\t.jstree-closed > .jstree-ocl { border-radius:20px; background-color:white; }\n\t*/\n  }\n  .jstree-default-responsive .jstree-icon {\n    background-image: url(\"40px.png\");\n  }\n  .jstree-default-responsive .jstree-node,\n  .jstree-default-responsive .jstree-leaf > .jstree-ocl {\n    background: transparent;\n  }\n  .jstree-default-responsive .jstree-node {\n    min-height: 40px;\n    line-height: 40px;\n    margin-left: 40px;\n    min-width: 40px;\n    white-space: nowrap;\n  }\n  .jstree-default-responsive .jstree-anchor {\n    line-height: 40px;\n    height: 40px;\n  }\n  .jstree-default-responsive .jstree-icon,\n  .jstree-default-responsive .jstree-icon:empty {\n    width: 40px;\n    height: 40px;\n    line-height: 40px;\n  }\n  .jstree-default-responsive > .jstree-container-ul > .jstree-node {\n    margin-left: 0;\n  }\n  .jstree-default-responsive.jstree-rtl .jstree-node {\n    margin-left: 0;\n    margin-right: 40px;\n  }\n  .jstree-default-responsive.jstree-rtl .jstree-container-ul > .jstree-node {\n    margin-right: 0;\n  }\n  .jstree-default-responsive .jstree-ocl,\n  .jstree-default-responsive .jstree-themeicon,\n  .jstree-default-responsive .jstree-checkbox {\n    background-size: 120px 240px;\n  }\n  .jstree-default-responsive .jstree-leaf > .jstree-ocl {\n    background: transparent;\n  }\n  .jstree-default-responsive .jstree-open > .jstree-ocl {\n    background-position: 0 0px !important;\n  }\n  .jstree-default-responsive .jstree-closed > .jstree-ocl {\n    background-position: 0 -40px !important;\n  }\n  .jstree-default-responsive.jstree-rtl .jstree-closed > .jstree-ocl {\n    background-position: -40px 0px !important;\n  }\n  .jstree-default-responsive .jstree-themeicon {\n    background-position: -40px -40px;\n  }\n  .jstree-default-responsive .jstree-checkbox,\n  .jstree-default-responsive .jstree-checkbox:hover {\n    background-position: -40px -80px;\n  }\n  .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,\n  .jstree-default-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,\n  .jstree-default-responsive .jstree-checked > .jstree-checkbox,\n  .jstree-default-responsive .jstree-checked > .jstree-checkbox:hover {\n    background-position: 0 -80px;\n  }\n  .jstree-default-responsive .jstree-anchor > .jstree-undetermined,\n  .jstree-default-responsive .jstree-anchor > .jstree-undetermined:hover {\n    background-position: 0 -120px;\n  }\n  .jstree-default-responsive .jstree-anchor {\n    font-weight: bold;\n    font-size: 1.1em;\n    text-shadow: 1px 1px white;\n  }\n  .jstree-default-responsive > .jstree-striped {\n    background: transparent;\n  }\n  .jstree-default-responsive .jstree-wholerow {\n    border-top: 1px solid rgba(255, 255, 255, 0.7);\n    border-bottom: 1px solid rgba(64, 64, 64, 0.2);\n    background: #ebebeb;\n    height: 40px;\n  }\n  .jstree-default-responsive .jstree-wholerow-hovered {\n    background: #e7f4f9;\n  }\n  .jstree-default-responsive .jstree-wholerow-clicked {\n    background: #beebff;\n  }\n  .jstree-default-responsive .jstree-children .jstree-last > .jstree-wholerow {\n    box-shadow: inset 0 -6px 3px -5px #666666;\n  }\n  .jstree-default-responsive .jstree-children .jstree-open > .jstree-wholerow {\n    box-shadow: inset 0 6px 3px -5px #666666;\n    border-top: 0;\n  }\n  .jstree-default-responsive .jstree-children .jstree-open + .jstree-open {\n    box-shadow: none;\n  }\n  .jstree-default-responsive .jstree-node,\n  .jstree-default-responsive .jstree-icon,\n  .jstree-default-responsive .jstree-node > .jstree-ocl,\n  .jstree-default-responsive .jstree-themeicon,\n  .jstree-default-responsive .jstree-checkbox {\n    background-image: url(\"40px.png\");\n    background-size: 120px 240px;\n  }\n  .jstree-default-responsive .jstree-node {\n    background-position: -80px 0;\n    background-repeat: repeat-y;\n  }\n  .jstree-default-responsive .jstree-last {\n    background: transparent;\n  }\n  .jstree-default-responsive .jstree-leaf > .jstree-ocl {\n    background-position: -40px -120px;\n  }\n  .jstree-default-responsive .jstree-last > .jstree-ocl {\n    background-position: -40px -160px;\n  }\n  .jstree-default-responsive .jstree-themeicon-custom {\n    background-color: transparent;\n    background-image: none;\n    background-position: 0 0;\n  }\n  .jstree-default-responsive .jstree-file {\n    background: url(\"40px.png\") 0 -160px no-repeat;\n    background-size: 120px 240px;\n  }\n  .jstree-default-responsive .jstree-folder {\n    background: url(\"40px.png\") -40px -40px no-repeat;\n    background-size: 120px 240px;\n  }\n  .jstree-default-responsive > .jstree-container-ul > .jstree-node {\n    margin-left: 0;\n    margin-right: 0;\n  }\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/jstree-theme/themes/proton/style.css",
    "content": "/* jsTree default theme */\n.jstree-node,\n.jstree-children,\n.jstree-container-ul {\n  display: block;\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n  list-style-image: none;\n}\n.jstree-node {\n  white-space: nowrap;\n}\n.jstree-anchor {\n  display: inline-block;\n  color: #333;\n  white-space: nowrap;\n  padding: 0 4px 0 1px;\n  margin: 0;\n  vertical-align: top;\n}\n.jstree-anchor:focus {\n  outline: 0;\n}\n.jstree-anchor,\n.jstree-anchor:link,\n.jstree-anchor:visited,\n.jstree-anchor:hover,\n.jstree-anchor:active {\n  text-decoration: none;\n  color: inherit;\n}\n.jstree-icon {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0;\n  vertical-align: top;\n  text-align: center;\n}\n.jstree-icon:empty {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0;\n  padding: 0;\n  vertical-align: top;\n  text-align: center;\n}\n.jstree-ocl {\n  cursor: pointer;\n}\n.jstree-leaf > .jstree-ocl {\n  cursor: default;\n}\n.jstree .jstree-open > .jstree-children {\n  display: block;\n}\n.jstree .jstree-closed > .jstree-children,\n.jstree .jstree-leaf > .jstree-children {\n  display: none;\n}\n.jstree-anchor > .jstree-themeicon {\n  margin-right: 2px;\n}\n.jstree-no-icons .jstree-themeicon,\n.jstree-anchor > .jstree-themeicon-hidden {\n  display: none;\n}\n.jstree-rtl .jstree-anchor {\n  padding: 0 1px 0 4px;\n}\n.jstree-rtl .jstree-anchor > .jstree-themeicon {\n  margin-left: 2px;\n  margin-right: 0;\n}\n.jstree-rtl .jstree-node {\n  margin-left: 0;\n}\n.jstree-rtl .jstree-container-ul > .jstree-node {\n  margin-right: 0;\n}\n.jstree-wholerow-ul {\n  position: relative;\n  display: inline-block;\n  min-width: 100%;\n}\n.jstree-wholerow-ul .jstree-leaf > .jstree-ocl {\n  cursor: pointer;\n}\n.jstree-wholerow-ul .jstree-anchor,\n.jstree-wholerow-ul .jstree-icon {\n  position: relative;\n}\n.jstree-wholerow-ul .jstree-wholerow {\n  width: 100%;\n  cursor: pointer;\n  position: absolute;\n  left: 0;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.vakata-context {\n  display: none;\n}\n.vakata-context,\n.vakata-context ul {\n  margin: 0;\n  padding: 2px;\n  position: absolute;\n  background: #f5f5f5;\n  border: 1px solid #979797;\n  -moz-box-shadow: 5px 5px 4px -4px #666666;\n  -webkit-box-shadow: 2px 2px 2px #999999;\n  box-shadow: 2px 2px 2px #999999;\n}\n.vakata-context ul {\n  list-style: none;\n  left: 100%;\n  margin-top: -2.7em;\n  margin-left: -4px;\n}\n.vakata-context .vakata-context-right ul {\n  left: auto;\n  right: 100%;\n  margin-left: auto;\n  margin-right: -4px;\n}\n.vakata-context li {\n  list-style: none;\n  display: inline;\n}\n.vakata-context li > a {\n  display: block;\n  padding: 0 2em 0 2em;\n  text-decoration: none;\n  width: auto;\n  color: black;\n  white-space: nowrap;\n  line-height: 2.4em;\n  -moz-text-shadow: 1px 1px 0 white;\n  -webkit-text-shadow: 1px 1px 0 white;\n  text-shadow: 1px 1px 0 white;\n  -moz-border-radius: 1px;\n  -webkit-border-radius: 1px;\n  border-radius: 1px;\n}\n.vakata-context li > a:hover {\n  position: relative;\n  background-color: #e8eff7;\n  -moz-box-shadow: 0 0 2px #0a6aa1;\n  -webkit-box-shadow: 0 0 2px #0a6aa1;\n  box-shadow: 0 0 2px #0a6aa1;\n}\n.vakata-context li > a.vakata-context-parent {\n  background-image: url(\"data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==\");\n  background-position: right center;\n  background-repeat: no-repeat;\n}\n.vakata-context li > a:focus {\n  outline: 0;\n}\n.vakata-context .vakata-context-hover > a {\n  position: relative;\n  background-color: #e8eff7;\n  -moz-box-shadow: 0 0 2px #0a6aa1;\n  -webkit-box-shadow: 0 0 2px #0a6aa1;\n  box-shadow: 0 0 2px #0a6aa1;\n}\n.vakata-context .vakata-context-separator > a,\n.vakata-context .vakata-context-separator > a:hover {\n  background: white;\n  border: 0;\n  border-top: 1px solid #e2e3e3;\n  height: 1px;\n  min-height: 1px;\n  max-height: 1px;\n  padding: 0;\n  margin: 0 0 0 2.4em;\n  border-left: 1px solid #e0e0e0;\n  -moz-text-shadow: 0 0 0 transparent;\n  -webkit-text-shadow: 0 0 0 transparent;\n  text-shadow: 0 0 0 transparent;\n  -moz-box-shadow: 0 0 0 transparent;\n  -webkit-box-shadow: 0 0 0 transparent;\n  box-shadow: 0 0 0 transparent;\n  -moz-border-radius: 0;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n}\n.vakata-context .vakata-contextmenu-disabled a,\n.vakata-context .vakata-contextmenu-disabled a:hover {\n  color: silver;\n  background-color: transparent;\n  border: 0;\n  box-shadow: 0 0 0;\n}\n.vakata-context li > a > i {\n  text-decoration: none;\n  display: inline-block;\n  width: 2.4em;\n  height: 2.4em;\n  background: transparent;\n  margin: 0 0 0 -2em;\n  vertical-align: top;\n  text-align: center;\n  line-height: 2.4em;\n}\n.vakata-context li > a > i:empty {\n  width: 2.4em;\n  line-height: 2.4em;\n}\n.vakata-context li > a .vakata-contextmenu-sep {\n  display: inline-block;\n  width: 1px;\n  height: 2.4em;\n  background: white;\n  margin: 0 0.5em 0 0;\n  border-left: 1px solid #e2e3e3;\n}\n.vakata-context .vakata-contextmenu-shortcut {\n  font-size: 0.8em;\n  color: silver;\n  opacity: 0.5;\n  display: none;\n}\n.vakata-context-rtl ul {\n  left: auto;\n  right: 100%;\n  margin-left: auto;\n  margin-right: -4px;\n}\n.vakata-context-rtl li > a.vakata-context-parent {\n  background-image: url(\"data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7\");\n  background-position: left center;\n  background-repeat: no-repeat;\n}\n.vakata-context-rtl .vakata-context-separator > a {\n  margin: 0 2.4em 0 0;\n  border-left: 0;\n  border-right: 1px solid #e2e3e3;\n}\n.vakata-context-rtl .vakata-context-left ul {\n  right: auto;\n  left: 100%;\n  margin-left: -4px;\n  margin-right: auto;\n}\n.vakata-context-rtl li > a > i {\n  margin: 0 -2em 0 0;\n}\n.vakata-context-rtl li > a .vakata-contextmenu-sep {\n  margin: 0 0 0 0.5em;\n  border-left-color: white;\n  background: #e2e3e3;\n}\n#jstree-marker {\n  position: absolute;\n  top: 0;\n  left: 0;\n  margin: -5px 0 0 0;\n  padding: 0;\n  border-right: 0;\n  border-top: 5px solid transparent;\n  border-bottom: 5px solid transparent;\n  border-left: 5px solid;\n  width: 0;\n  height: 0;\n  font-size: 0;\n  line-height: 0;\n}\n#jstree-dnd {\n  line-height: 16px;\n  margin: 0;\n  padding: 4px;\n}\n#jstree-dnd .jstree-icon,\n#jstree-dnd .jstree-copy {\n  display: inline-block;\n  text-decoration: none;\n  margin: 0 2px 0 0;\n  padding: 0;\n  width: 16px;\n  height: 16px;\n}\n#jstree-dnd .jstree-ok {\n  background: green;\n}\n#jstree-dnd .jstree-er {\n  background: red;\n}\n#jstree-dnd .jstree-copy {\n  margin: 0 2px 0 2px;\n}\n.jstree-proton .jstree-node,\n.jstree-proton .jstree-icon {\n  background-repeat: no-repeat;\n  background-color: transparent;\n}\n.jstree-proton .jstree-anchor,\n.jstree-proton .jstree-wholerow {\n  transition: background-color 0.15s, box-shadow 0.15s, color 0.15s;\n}\n.jstree-proton .jstree-hovered {\n  background: #76b6ec;\n  color: #ffffff;\n  border-radius: 3px;\n  box-shadow: inset 0 0 1px #76b6ec;\n}\n.jstree-proton .jstree-clicked {\n  background: #3392e3;\n  color: #ffffff;\n  border-radius: 3px;\n  box-shadow: inset 0 0 1px #3392e3;\n}\n.jstree-proton .jstree-no-icons .jstree-anchor > .jstree-themeicon {\n  display: none;\n}\n.jstree-proton .jstree-disabled {\n  background: transparent;\n  color: #666666;\n}\n.jstree-proton .jstree-disabled.jstree-hovered {\n  background: transparent;\n  box-shadow: none;\n}\n.jstree-proton .jstree-disabled.jstree-clicked {\n  background: #efefef;\n}\n.jstree-proton .jstree-disabled > .jstree-icon {\n  opacity: 0.8;\n  filter: url(\"data:image/svg+xml;utf8,<svg xmlns=\\'http://www.w3.org/2000/svg\\'><filter id=\\'jstree-grayscale\\'><feColorMatrix type=\\'matrix\\' values=\\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\\'/></filter></svg>#jstree-grayscale\");\n  /* Firefox 10+ *\nfilter: gray;\n/* IE6-9 */\n  -webkit-filter: grayscale(100%);\n  /* Chrome 19+ & Safari 6+ */\n}\n.jstree-proton .jstree-search {\n  font-style: italic;\n  color: #8b0000;\n  font-weight: bold;\n}\n.jstree-proton .jstree-no-checkboxes .jstree-checkbox {\n  display: none !important;\n}\n.jstree-proton.jstree-checkbox-no-clicked .jstree-clicked {\n  background: transparent;\n  color: inherit;\n  box-shadow: none;\n}\n.jstree-proton.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered {\n  background: #76b6ec;\n  color: #ffffff;\n}\n.jstree-proton.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked {\n  background: transparent;\n  color: inherit;\n}\n.jstree-proton.jstree-checkbox-no-clicked > .jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered {\n  background: #76b6ec;\n  color: #ffffff;\n}\n.jstree-proton > .jstree-striped {\n  background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==\") left top repeat;\n}\n.jstree-proton > .jstree-wholerow-ul .jstree-hovered,\n.jstree-proton > .jstree-wholerow-ul .jstree-clicked {\n  background: transparent;\n  box-shadow: none;\n  border-radius: 0;\n}\n.jstree-proton .jstree-wholerow {\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n}\n.jstree-proton .jstree-wholerow-hovered {\n  background: #76b6ec;\n}\n.jstree-proton .jstree-wholerow-clicked {\n  background: #3392e3;\n  background: -moz-linear-gradient(top, #3392e3 0%, #3392e3 100%);\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #3392e3), color-stop(100%, #3392e3));\n  background: -webkit-linear-gradient(top, #3392e3 0%, #3392e3 100%);\n  background: -o-linear-gradient(top, #3392e3 0%, #3392e3 100%);\n  background: -ms-linear-gradient(top, #3392e3 0%, #3392e3 100%);\n  background: linear-gradient(to bottom, #3392e3 0%, #3392e3 100%);\n  /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='@color1', endColorstr='@color2',GradientType=0 );*/\n}\n.jstree-proton .jstree-node {\n  min-height: 22px;\n  line-height: 22px;\n  margin-left: 22px;\n  min-width: 22px;\n}\n.jstree-proton .jstree-anchor {\n  line-height: 22px;\n  margin: 1px 0 2px;\n  height: 22px;\n}\n.jstree-proton .jstree-icon {\n  width: 22px;\n  height: 22px;\n  line-height: 22px;\n}\n.jstree-proton .jstree-icon:empty {\n  width: 22px;\n  height: 22px;\n  line-height: 22px;\n}\n.jstree-proton.jstree-rtl .jstree-node {\n  margin-right: 22px;\n}\n.jstree-proton .jstree-wholerow {\n  height: 22px;\n}\n.jstree-proton .jstree-node,\n.jstree-proton .jstree-icon {\n  background-size: 320px 96px;\n  background-image: url(\"32px.png\");\n}\n.jstree-proton .jstree-node {\n  background-position: -293px -5px;\n  background-repeat: repeat-y;\n}\n.jstree-proton .jstree-last {\n  background: transparent;\n}\n.jstree-proton .jstree-open > .jstree-ocl {\n  background-position: -133px -5px;\n}\n.jstree-proton .jstree-closed > .jstree-ocl {\n  background-position: -101px -5px;\n}\n.jstree-proton .jstree-leaf > .jstree-ocl {\n  background-position: -69px -5px;\n}\n.jstree-proton .jstree-themeicon {\n  background-position: -261px -7px;\n}\n.jstree-proton > .jstree-no-dots .jstree-node,\n.jstree-proton > .jstree-no-dots .jstree-leaf > .jstree-ocl {\n  background: transparent;\n}\n.jstree-proton > .jstree-no-dots .jstree-open > .jstree-ocl {\n  background-position: -37px -5px;\n}\n.jstree-proton > .jstree-no-dots .jstree-closed > .jstree-ocl {\n  background-position: -5px -5px;\n}\n.jstree-proton .jstree-disabled {\n  background: transparent;\n}\n.jstree-proton .jstree-disabled.jstree-hovered {\n  background: transparent;\n}\n.jstree-proton .jstree-disabled.jstree-clicked {\n  background: #efefef;\n}\n.jstree-proton .jstree-checkbox {\n  background-position: -165px -5px;\n}\n.jstree-proton .jstree-checkbox:hover {\n  background-position: -165px -37px;\n}\n.jstree-proton.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,\n.jstree-proton .jstree-checked > .jstree-checkbox {\n  background-position: -229px -5px;\n}\n.jstree-proton.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,\n.jstree-proton .jstree-checked > .jstree-checkbox:hover {\n  background-position: -229px -37px;\n}\n.jstree-proton .jstree-anchor > .jstree-undetermined {\n  background-position: -197px -5px;\n}\n.jstree-proton .jstree-anchor > .jstree-undetermined:hover {\n  background-position: -197px -37px;\n}\n.jstree-proton > .jstree-striped {\n  background-size: auto 44px;\n}\n.jstree-proton.jstree-rtl .jstree-node {\n  background-size: 320px 96px;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==\");\n  background-position: 100% 1px;\n  background-repeat: repeat-y;\n}\n.jstree-proton.jstree-rtl .jstree-last {\n  background: transparent;\n}\n.jstree-proton.jstree-rtl .jstree-open > .jstree-ocl {\n  background-position: -133px -37px;\n}\n.jstree-proton.jstree-rtl .jstree-closed > .jstree-ocl {\n  background-position: -101px -37px;\n}\n.jstree-proton.jstree-rtl .jstree-leaf > .jstree-ocl {\n  background-position: -69px -37px;\n}\n.jstree-proton.jstree-rtl > .jstree-no-dots .jstree-node,\n.jstree-proton.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {\n  background: transparent;\n}\n.jstree-proton.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {\n  background-position: -37px -37px;\n}\n.jstree-proton.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {\n  background-position: -5px -37px;\n}\n.jstree-proton .jstree-themeicon-custom {\n  background-color: transparent;\n  background-size: 320px 96px;\n  background-image: none;\n  background-position: 0 0;\n}\n.jstree-proton > .jstree-container-ul .jstree-loading > .jstree-ocl {\n  background: url(\"throbber.gif\") center center no-repeat;\n}\n.jstree-proton .jstree-file {\n  background: url(\"32px.png\") -101px -69px no-repeat;\n}\n.jstree-proton .jstree-folder {\n  background: url(\"32px.png\") -261px -5px no-repeat;\n}\n.jstree-proton > .jstree-container-ul > .jstree-node {\n  margin-left: 0;\n  margin-right: 0;\n}\n#jstree-dnd.jstree-proton {\n  line-height: 22px;\n  padding: 0 4px;\n}\n#jstree-dnd.jstree-proton .jstree-ok,\n#jstree-dnd.jstree-proton .jstree-er {\n  background-size: 320px 96px;\n  background-image: url(\"32px.png\");\n  background-repeat: no-repeat;\n  background-color: transparent;\n}\n#jstree-dnd.jstree-proton i {\n  background: transparent;\n  width: 22px;\n  height: 22px;\n  line-height: 22px;\n}\n#jstree-dnd.jstree-proton .jstree-ok {\n  background-position: -5px -69px;\n}\n#jstree-dnd.jstree-proton .jstree-er {\n  background-position: -37px -69px;\n}\n.jstree-proton.jstree-rtl .jstree-node {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==\");\n}\n.jstree-proton.jstree-rtl .jstree-last {\n  background: transparent;\n}\n.jstree-proton-small .jstree-node {\n  min-height: 18px;\n  line-height: 18px;\n  margin-left: 18px;\n  min-width: 18px;\n}\n.jstree-proton-small .jstree-anchor {\n  line-height: 18px;\n  margin: 1px 0 2px;\n  height: 18px;\n}\n.jstree-proton-small .jstree-icon {\n  width: 18px;\n  height: 18px;\n  line-height: 18px;\n}\n.jstree-proton-small .jstree-icon:empty {\n  width: 18px;\n  height: 18px;\n  line-height: 18px;\n}\n.jstree-proton-small.jstree-rtl .jstree-node {\n  margin-right: 18px;\n}\n.jstree-proton-small .jstree-wholerow {\n  height: 18px;\n}\n.jstree-proton-small .jstree-node,\n.jstree-proton-small .jstree-icon {\n  background-size: 320px 96px;\n  background-image: url(\"32px.png\");\n}\n.jstree-proton-small .jstree-node {\n  background-position: -295px -7px;\n  background-repeat: repeat-y;\n}\n.jstree-proton-small .jstree-last {\n  background: transparent;\n}\n.jstree-proton-small .jstree-open > .jstree-ocl {\n  background-position: -135px -7px;\n}\n.jstree-proton-small .jstree-closed > .jstree-ocl {\n  background-position: -103px -7px;\n}\n.jstree-proton-small .jstree-leaf > .jstree-ocl {\n  background-position: -71px -7px;\n}\n.jstree-proton-small .jstree-themeicon {\n  background-position: -263px -9px;\n}\n.jstree-proton-small > .jstree-no-dots .jstree-node,\n.jstree-proton-small > .jstree-no-dots .jstree-leaf > .jstree-ocl {\n  background: transparent;\n}\n.jstree-proton-small > .jstree-no-dots .jstree-open > .jstree-ocl {\n  background-position: -39px -7px;\n}\n.jstree-proton-small > .jstree-no-dots .jstree-closed > .jstree-ocl {\n  background-position: -7px -7px;\n}\n.jstree-proton-small .jstree-disabled {\n  background: transparent;\n}\n.jstree-proton-small .jstree-disabled.jstree-hovered {\n  background: transparent;\n}\n.jstree-proton-small .jstree-disabled.jstree-clicked {\n  background: #efefef;\n}\n.jstree-proton-small .jstree-checkbox {\n  background-position: -167px -7px;\n}\n.jstree-proton-small .jstree-checkbox:hover {\n  background-position: -167px -39px;\n}\n.jstree-proton-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,\n.jstree-proton-small .jstree-checked > .jstree-checkbox {\n  background-position: -231px -7px;\n}\n.jstree-proton-small.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,\n.jstree-proton-small .jstree-checked > .jstree-checkbox:hover {\n  background-position: -231px -39px;\n}\n.jstree-proton-small .jstree-anchor > .jstree-undetermined {\n  background-position: -199px -7px;\n}\n.jstree-proton-small .jstree-anchor > .jstree-undetermined:hover {\n  background-position: -199px -39px;\n}\n.jstree-proton-small > .jstree-striped {\n  background-size: auto 36px;\n}\n.jstree-proton-small.jstree-rtl .jstree-node {\n  background-size: 320px 96px;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==\");\n  background-position: 100% 1px;\n  background-repeat: repeat-y;\n}\n.jstree-proton-small.jstree-rtl .jstree-last {\n  background: transparent;\n}\n.jstree-proton-small.jstree-rtl .jstree-open > .jstree-ocl {\n  background-position: -135px -39px;\n}\n.jstree-proton-small.jstree-rtl .jstree-closed > .jstree-ocl {\n  background-position: -103px -39px;\n}\n.jstree-proton-small.jstree-rtl .jstree-leaf > .jstree-ocl {\n  background-position: -71px -39px;\n}\n.jstree-proton-small.jstree-rtl > .jstree-no-dots .jstree-node,\n.jstree-proton-small.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {\n  background: transparent;\n}\n.jstree-proton-small.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {\n  background-position: -39px -39px;\n}\n.jstree-proton-small.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {\n  background-position: -7px -39px;\n}\n.jstree-proton-small .jstree-themeicon-custom {\n  background-color: transparent;\n  background-size: 320px 96px;\n  background-image: none;\n  background-position: 0 0;\n}\n.jstree-proton-small > .jstree-container-ul .jstree-loading > .jstree-ocl {\n  background: url(\"throbber.gif\") center center no-repeat;\n}\n.jstree-proton-small .jstree-file {\n  background: url(\"32px.png\") -103px -71px no-repeat;\n}\n.jstree-proton-small .jstree-folder {\n  background: url(\"32px.png\") -263px -7px no-repeat;\n}\n.jstree-proton-small > .jstree-container-ul > .jstree-node {\n  margin-left: 0;\n  margin-right: 0;\n}\n#jstree-dnd.jstree-proton-small {\n  line-height: 18px;\n  padding: 0 4px;\n}\n#jstree-dnd.jstree-proton-small .jstree-ok,\n#jstree-dnd.jstree-proton-small .jstree-er {\n  background-size: 320px 96px;\n  background-image: url(\"32px.png\");\n  background-repeat: no-repeat;\n  background-color: transparent;\n}\n#jstree-dnd.jstree-proton-small i {\n  background: transparent;\n  width: 18px;\n  height: 18px;\n  line-height: 18px;\n}\n#jstree-dnd.jstree-proton-small .jstree-ok {\n  background-position: -7px -71px;\n}\n#jstree-dnd.jstree-proton-small .jstree-er {\n  background-position: -39px -71px;\n}\n.jstree-proton-small.jstree-rtl .jstree-node {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==\");\n}\n.jstree-proton-small.jstree-rtl .jstree-last {\n  background: transparent;\n}\n.jstree-proton-large .jstree-node {\n  min-height: 32px;\n  line-height: 32px;\n  margin-left: 32px;\n  min-width: 32px;\n}\n.jstree-proton-large .jstree-anchor {\n  line-height: 32px;\n  margin: 1px 0 2px;\n  height: 32px;\n}\n.jstree-proton-large .jstree-icon {\n  width: 32px;\n  height: 32px;\n  line-height: 32px;\n}\n.jstree-proton-large .jstree-icon:empty {\n  width: 32px;\n  height: 32px;\n  line-height: 32px;\n}\n.jstree-proton-large.jstree-rtl .jstree-node {\n  margin-right: 32px;\n}\n.jstree-proton-large .jstree-wholerow {\n  height: 32px;\n}\n.jstree-proton-large .jstree-node,\n.jstree-proton-large .jstree-icon {\n  background-size: 320px 96px;\n  background-image: url(\"32px.png\");\n}\n.jstree-proton-large .jstree-node {\n  background-position: -288px 0px;\n  background-repeat: repeat-y;\n}\n.jstree-proton-large .jstree-last {\n  background: transparent;\n}\n.jstree-proton-large .jstree-open > .jstree-ocl {\n  background-position: -128px 0px;\n}\n.jstree-proton-large .jstree-closed > .jstree-ocl {\n  background-position: -96px 0px;\n}\n.jstree-proton-large .jstree-leaf > .jstree-ocl {\n  background-position: -64px 0px;\n}\n.jstree-proton-large .jstree-themeicon {\n  background-position: -256px -2px;\n}\n.jstree-proton-large > .jstree-no-dots .jstree-node,\n.jstree-proton-large > .jstree-no-dots .jstree-leaf > .jstree-ocl {\n  background: transparent;\n}\n.jstree-proton-large > .jstree-no-dots .jstree-open > .jstree-ocl {\n  background-position: -32px 0px;\n}\n.jstree-proton-large > .jstree-no-dots .jstree-closed > .jstree-ocl {\n  background-position: 0px 0px;\n}\n.jstree-proton-large .jstree-disabled {\n  background: transparent;\n}\n.jstree-proton-large .jstree-disabled.jstree-hovered {\n  background: transparent;\n}\n.jstree-proton-large .jstree-disabled.jstree-clicked {\n  background: #efefef;\n}\n.jstree-proton-large .jstree-checkbox {\n  background-position: -160px 0px;\n}\n.jstree-proton-large .jstree-checkbox:hover {\n  background-position: -160px -32px;\n}\n.jstree-proton-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,\n.jstree-proton-large .jstree-checked > .jstree-checkbox {\n  background-position: -224px 0px;\n}\n.jstree-proton-large.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,\n.jstree-proton-large .jstree-checked > .jstree-checkbox:hover {\n  background-position: -224px -32px;\n}\n.jstree-proton-large .jstree-anchor > .jstree-undetermined {\n  background-position: -192px 0px;\n}\n.jstree-proton-large .jstree-anchor > .jstree-undetermined:hover {\n  background-position: -192px -32px;\n}\n.jstree-proton-large > .jstree-striped {\n  background-size: auto 64px;\n}\n.jstree-proton-large.jstree-rtl .jstree-node {\n  background-size: 320px 96px;\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==\");\n  background-position: 100% 1px;\n  background-repeat: repeat-y;\n}\n.jstree-proton-large.jstree-rtl .jstree-last {\n  background: transparent;\n}\n.jstree-proton-large.jstree-rtl .jstree-open > .jstree-ocl {\n  background-position: -128px -32px;\n}\n.jstree-proton-large.jstree-rtl .jstree-closed > .jstree-ocl {\n  background-position: -96px -32px;\n}\n.jstree-proton-large.jstree-rtl .jstree-leaf > .jstree-ocl {\n  background-position: -64px -32px;\n}\n.jstree-proton-large.jstree-rtl > .jstree-no-dots .jstree-node,\n.jstree-proton-large.jstree-rtl > .jstree-no-dots .jstree-leaf > .jstree-ocl {\n  background: transparent;\n}\n.jstree-proton-large.jstree-rtl > .jstree-no-dots .jstree-open > .jstree-ocl {\n  background-position: -32px -32px;\n}\n.jstree-proton-large.jstree-rtl > .jstree-no-dots .jstree-closed > .jstree-ocl {\n  background-position: 0px -32px;\n}\n.jstree-proton-large .jstree-themeicon-custom {\n  background-color: transparent;\n  background-size: 320px 96px;\n  background-image: none;\n  background-position: 0 0;\n}\n.jstree-proton-large > .jstree-container-ul .jstree-loading > .jstree-ocl {\n  background: url(\"throbber.gif\") center center no-repeat;\n}\n.jstree-proton-large .jstree-file {\n  background: url(\"32px.png\") -96px -64px no-repeat;\n}\n.jstree-proton-large .jstree-folder {\n  background: url(\"32px.png\") -256px 0px no-repeat;\n}\n.jstree-proton-large > .jstree-container-ul > .jstree-node {\n  margin-left: 0;\n  margin-right: 0;\n}\n#jstree-dnd.jstree-proton-large {\n  line-height: 32px;\n  padding: 0 4px;\n}\n#jstree-dnd.jstree-proton-large .jstree-ok,\n#jstree-dnd.jstree-proton-large .jstree-er {\n  background-size: 320px 96px;\n  background-image: url(\"32px.png\");\n  background-repeat: no-repeat;\n  background-color: transparent;\n}\n#jstree-dnd.jstree-proton-large i {\n  background: transparent;\n  width: 32px;\n  height: 32px;\n  line-height: 32px;\n}\n#jstree-dnd.jstree-proton-large .jstree-ok {\n  background-position: 0px -64px;\n}\n#jstree-dnd.jstree-proton-large .jstree-er {\n  background-position: -32px -64px;\n}\n.jstree-proton-large.jstree-rtl .jstree-node {\n  background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==\");\n}\n.jstree-proton-large.jstree-rtl .jstree-last {\n  background: transparent;\n}\n@media (max-width: 768px) {\n  #jstree-dnd.jstree-dnd-responsive {\n    line-height: 30px;\n    font-weight: bold;\n    font-size: 1.1em;\n    text-shadow: 1px 1px white;\n  }\n  #jstree-dnd.jstree-dnd-responsive > i {\n    background: transparent;\n    width: 30px;\n    height: 30px;\n  }\n  #jstree-dnd.jstree-dnd-responsive > .jstree-ok {\n    background-image: url(\"30px.png\");\n    background-position: 0 -150px;\n    background-size: 90px 180px;\n  }\n  #jstree-dnd.jstree-dnd-responsive > .jstree-er {\n    background-image: url(\"30px.png\");\n    background-position: -30px -150px;\n    background-size: 90px 180px;\n  }\n  #jstree-marker.jstree-dnd-responsive {\n    border-left-width: 10px;\n    border-top-width: 10px;\n    border-bottom-width: 10px;\n    margin-top: -10px;\n  }\n}\n@media (max-width: 768px) {\n  .jstree-proton-responsive {\n    /*\n\t.jstree-open > .jstree-ocl,\n\t.jstree-closed > .jstree-ocl {\n\tborder-radius:20px;\n\tbackground-color:white;\n\t}\n\t*/\n  }\n  .jstree-proton-responsive .jstree-container-ul {\n    overflow: hidden;\n  }\n  .jstree-proton-responsive .jstree-icon {\n    background-image: url(\"30px.png\");\n    background-size: 90px 180px;\n  }\n  .jstree-proton-responsive .jstree-node,\n  .jstree-proton-responsive .jstree-leaf > .jstree-ocl {\n    background: transparent;\n  }\n  .jstree-proton-responsive .jstree-node {\n    min-height: 30px;\n    line-height: 30px;\n    margin-left: 30px;\n    min-width: 30px;\n    white-space: nowrap;\n  }\n  .jstree-proton-responsive .jstree-anchor {\n    line-height: 38px;\n    height: 38px;\n    margin: 0;\n  }\n  .jstree-proton-responsive .jstree-icon,\n  .jstree-proton-responsive .jstree-icon:empty {\n    margin-top: 4px;\n    width: 30px;\n    height: 30px;\n    line-height: 30px;\n  }\n  .jstree-proton-responsive > .jstree-container-ul > .jstree-node {\n    margin-left: 0;\n  }\n  .jstree-proton-responsive.jstree-rtl .jstree-node {\n    margin-left: 0;\n    margin-right: 30px;\n  }\n  .jstree-proton-responsive.jstree-rtl .jstree-container-ul > .jstree-node {\n    margin-right: 0;\n  }\n  .jstree-proton-responsive .jstree-ocl,\n  .jstree-proton-responsive .jstree-themeicon,\n  .jstree-proton-responsive .jstree-checkbox {\n    background-size: 90px 180px;\n  }\n  .jstree-proton-responsive .jstree-leaf > .jstree-ocl {\n    background: transparent;\n  }\n  .jstree-proton-responsive .jstree-open > .jstree-ocl {\n    background-position: 0 0px !important;\n  }\n  .jstree-proton-responsive .jstree-closed > .jstree-ocl {\n    background-position: 0 -30px !important;\n  }\n  .jstree-proton-responsive.jstree-rtl .jstree-closed > .jstree-ocl {\n    background-position: -30px 0px !important;\n  }\n  .jstree-proton-responsive .jstree-themeicon {\n    background-position: -30px -30px;\n  }\n  .jstree-proton-responsive .jstree-checkbox,\n  .jstree-proton-responsive .jstree-checkbox:hover {\n    background-position: -30px -60px;\n  }\n  .jstree-proton-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox,\n  .jstree-proton-responsive.jstree-checkbox-selection .jstree-clicked > .jstree-checkbox:hover,\n  .jstree-proton-responsive .jstree-checked > .jstree-checkbox,\n  .jstree-proton-responsive .jstree-checked > .jstree-checkbox:hover {\n    background-position: 0 -60px;\n  }\n  .jstree-proton-responsive .jstree-anchor > .jstree-undetermined,\n  .jstree-proton-responsive .jstree-anchor > .jstree-undetermined:hover {\n    background-position: 0 -90px;\n  }\n  .jstree-proton-responsive > .jstree-striped {\n    background: transparent;\n  }\n  .jstree-proton-responsive .jstree-wholerow-ul li {\n    position: relative;\n  }\n  .jstree-proton-responsive .jstree-wholerow-ul .jstree-wholerow {\n    position: absolute;\n    top: 0;\n    left: -1000px;\n    right: -1000px;\n    width: auto;\n    height: 100%;\n  }\n  .jstree-proton-responsive .jstree-wholerow {\n    border-top: 1px solid rgba(0, 0, 0, 0.05);\n    background: rgba(0, 0, 0, 0.02);\n    height: 30px;\n  }\n  .jstree-proton-responsive .jstree-wholerow-hovered {\n    background: #76b6ec;\n  }\n  .jstree-proton-responsive .jstree-wholerow-clicked {\n    background: #3392e3;\n  }\n  .jstree-proton-responsive .jstree-children .jstree-open + .jstree-open {\n    box-shadow: none;\n  }\n  .jstree-proton-responsive .jstree-node,\n  .jstree-proton-responsive .jstree-icon,\n  .jstree-proton-responsive .jstree-node > .jstree-ocl,\n  .jstree-proton-responsive .jstree-themeicon,\n  .jstree-proton-responsive .jstree-checkbox {\n    background-image: url(\"30px.png\");\n    background-size: 90px 180px;\n  }\n  .jstree-proton-responsive .jstree-node {\n    background-position: -60px 0;\n    background-repeat: repeat-y;\n  }\n  .jstree-proton-responsive .jstree-last {\n    background: transparent;\n  }\n  .jstree-proton-responsive .jstree-leaf > .jstree-ocl {\n    background-position: -30px -90px;\n  }\n  .jstree-proton-responsive .jstree-last > .jstree-ocl {\n    background-position: -30px -120px;\n  }\n  .jstree-proton-responsive .jstree-themeicon-custom {\n    background-color: transparent;\n    background-image: none;\n    background-position: 0 0;\n  }\n  .jstree-proton-responsive .jstree-file {\n    background: url(\"30px.png\") 0 -120px no-repeat;\n    background-size: 90px 180px;\n  }\n  .jstree-proton-responsive .jstree-folder {\n    background: url(\"30px.png\") -30px -30px no-repeat;\n    background-size: 90px 180px;\n  }\n  .jstree-proton-responsive > .jstree-container-ul > .jstree-node {\n    margin-left: 0;\n    margin-right: 0;\n  }\n}\n@font-face {\n  font-family: 'Titillium Web';\n  src: url('fonts/titillium/titilliumweb-extralight-webfont.eot');\n  src: url('fonts/titillium/titilliumweb-extralight-webfont.eot?#iefix') format('embedded-opentype'), url('fonts/titillium/titilliumweb-extralight-webfont.woff') format('woff'), url('fonts/titillium/titilliumweb-extralight-webfont.ttf') format('truetype'), url('fonts/titillium/titilliumweb-extralight-webfont.svg#titillium_webthin') format('svg');\n  font-weight: 300;\n  font-style: normal;\n}\n@font-face {\n  font-family: 'Titillium Web';\n  src: url('fonts/titillium/titilliumweb-regular-webfont.eot');\n  src: url('fonts/titillium/titilliumweb-regular-webfont.eot?#iefix') format('embedded-opentype'), url('fonts/titillium/titilliumweb-regular-webfont.woff') format('woff'), url('fonts/titillium/titilliumweb-regular-webfont.ttf') format('truetype'), url('fonts/titillium/titilliumweb-regular-webfont.svg#titillium_webregular') format('svg');\n  font-weight: 400;\n  font-style: normal;\n}\n@font-face {\n  font-family: 'Titillium Web';\n  src: url('fonts/titillium/titilliumweb-bold-webfont.eot');\n  src: url('fonts/titillium/titilliumweb-bold-webfont.eot?#iefix') format('embedded-opentype'), url('fonts/titillium/titilliumweb-bold-webfont.woff') format('woff'), url('fonts/titillium/titilliumweb-bold-webfont.ttf') format('truetype'), url('fonts/titillium/titilliumweb-bold-webfont.svg#titillium_webbold') format('svg');\n  font-weight: 700;\n  font-style: normal;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  @font-face {\n    font-family: 'Titillium Web';\n    src: url('fonts/titillium/titilliumweb-extralight-webfont.svg#titillium_webthin') format('svg');\n    font-weight: 300;\n    font-style: normal;\n  }\n  @font-face {\n    font-family: 'Titillium Web';\n    src: url('fonts/titillium/titilliumweb-regular-webfont.svg#titillium_webregular') format('svg');\n    font-weight: 400;\n    font-style: normal;\n  }\n  @font-face {\n    font-family: 'Titillium Web';\n    src: url('fonts/titillium/titilliumweb-bold-webfont.svg#titillium_webbold') format('svg');\n    font-weight: 700;\n    font-style: normal;\n  }\n}\n.jstree-proton {\n  font-family: 'Titillium Web', sans-serif, Arial, sans-serif;\n}\n\n.jstree-wrapper .jstree-container-ul .jstree-node:not(.jstree-leaf) {\n  display: block;\n  clear: both;\n}\n.jstree-wrapper .jstree-leaf {\n  float: left;\n  margin-left: 0;\n  padding-left: 24px;\n  /*width: 80px;*/\n  clear: none;\n  color: #777;\n}\n.jstree-wrapper .jstree-leaf:not(first-child) {\n  background: none;\n}\n.jstree-wrapper .jstree-leaf > .jstree-icon, #treeview .jstree-leaf .jstree-themeicon {\n  display: none;\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/layer/layer.js",
    "content": "/*! layer-v3.1.1 Web弹层组件 MIT License  http://layer.layui.com/  By 贤心 */\neval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p}(';!j(e,t){\"6G 6f\";q i,n,a=e.m&&m.1W,o={4j:j(){q e=1g.4i?1g.4i.18:j(){25(q e,t=1g.6a,i=t.15-1,n=i;n>0;n--)J(\"67\"===t[n].66){e=t[n].18;23}D e||t[i].18}();D e.65(0,e.63(\"/\")+1)}(),L:{},1j:{},2k:0,1f:[],M:[\"&#4g;&#4f;\",\"&#4e;&#4d;\"],x:[\"2S\",\"2T\",\"1k\",\"2X\",\"N\"],4a:j(t,i){q n=t.49?t.49:e.5S(t,1Y);D n[n.48?\"48\":\"5K\"](i)},2l:j(t,i,n){J(r.1B){q a=1g.5C(\"5z\")[0],s=1g.5n(\"2l\");\"24\"==R i&&(n=i);q l=(n||t).5m(/\\\\.|\\\\//g,\"\"),f=\"54-\"+l,c=0;s.4T=\"4R\",s.1K=r.1B+t,s.1v=f,1g.3M(f)||a.4L(s),\"j\"==R i&&!j u(){D++c>4I?e.3I&&3I.4F(\"k.A: 4D\"):3D(4u===3A(o.4a(1g.3M(f),\"F\"))?i():1R(u,1H))}()}}},r={v:\"3.1.1\",1x:j(){q t=6A.6z.6y();D!!(e.3z||\"3z\"3a e)&&((t.6h(/6g\\\\s(\\\\d+)/)||[])[1]||\"11\")}(),C:e.k&&e.k.v?6d:0,1B:o.4j,L:j(e,t){D e=e||{},r.2R=o.L=i.Y({},o.L,e),r.1B=o.L.1B||r.1B,\"24\"==R e.Y&&(e.Y=[e.Y]),o.L.1B&&r.2H(),e.Y?(a?m.3y(\"3t/k/\"+e.Y):o.2l(\"3s/\"+e.Y),K):K},2H:j(e){q t=\"k\",i=\"\",n=(a?\"3t/k/\":\"3s/\")+\"3r/k.A?v=\"+r.v+i;D a?m.3y(n,e,t):o.2l(n,e,t),K},5T:j(e,t,n){q a=\"j\"==R t;D a&&(n=t),r.1w(i.Y({H:e,1T:n},a?{}:t))},5R:j(e,t,n,a){q s=\"j\"==R t;D s&&(a=n,n=t),r.1w(i.Y({H:e,M:o.M,1T:n,5O:a},s?{}:t))},2a:j(e,n,a){q s=\"j\"==R n,f=o.L.17,c=(f?f+\" \"+f+\"-2a\":\"\")||\"m-k-2a\",u=l.Q.15-1;D s&&(a=n),r.1w(i.Y({H:e,1J:3q,W:!1,17:c,T:!1,1G:!1,M:!1,1e:!1,1j:a},s&&!o.L.17?{17:c+\" m-k-3p\",Q:u}:j(){D n=n||{},(n.1p===-1||n.1p===t&&!o.L.17)&&(n.17=c+\" \"+(n.17||\"m-k-3p\")),n}()))},2w:j(e,t){D r.1w(i.Y({x:3,1p:e||0,1e:!1,W:.3o},t))},N:j(e,t,n){D r.1w(i.Y({x:4,H:[e,t],1G:!1,1J:3q,W:!1,1e:!1,1d:!1,20:5F},n))}},s=j(e){q t=K;t.C=++r.C,t.L=i.Y({},t.L,o.L,e),1g.2c?t.32():1R(j(){t.32()},30)};s.1m=s.5q;q l=[\"m-k\",\".m-k-T\",\".m-k-5l\",\".m-k-2S\",\"m-k-1k\",\"m-k-H\",\"m-k-M\",\"m-k-1a\"];l.Q=[\"k-Q-5k\",\"k-Q-3o\",\"k-Q-5i\",\"k-Q-5c\",\"k-Q-4W\",\"k-Q-4O\",\"k-Q-4B\"],s.1m.L={x:0,W:.3,1d:!0,1n:l[1],T:\"&#4A;&#4v;\",I:\"1r\",P:\"1r\",1G:1,1J:0,1s:6k,20:6c,Q:0,1P:!0,1p:-1,3k:1,1e:!0,2z:!0,N:2},s.1m.3j=j(e,t){q n=K,a=n.C,r=n.L,s=r.1s+a,f=\"1U\"==R r.T,c=r.2n&&(1===r.x||2===r.x),u=r.T?\\'<V G=\"m-k-T\" 19=\"\\'+(f?r.T[1]:\"\")+\\'\">\\'+(f?r.T[0]:r.T)+\"</V>\":\"\";D r.1s=s,t([r.W?\\'<V G=\"m-k-W\" 1v=\"m-k-W\\'+a+\\'\" 2e=\"\\'+a+\\'\" 19=\"\\'+(\"z-C:\"+(s-1)+\"; \")+\\'\"></V>\\':\"\",\\'<V G=\"\\'+l[0]+(\" m-k-\"+o.x[r.x])+(0!=r.x&&2!=r.x||r.W?\"\":\" m-k-2d\")+\" \"+(r.17||\"\")+\\'\" 1v=\"\\'+l[0]+a+\\'\" x=\"\\'+o.x[r.x]+\\'\" 2e=\"\\'+a+\\'\" 60=\"\\'+r.1J+\\'\" 3i=\"\\'+(e?\"1U\":\"24\")+\\'\" 19=\"z-C: \\'+s+\"; F:\"+r.P[0]+\";E:\"+r.P[1]+(r.1d?\"\":\";1o:5Y;\")+\\'\">\\'+(e&&2!=r.x?\"\":u)+\\'<V 1v=\"\\'+(r.1v||\"\")+\\'\" G=\"m-k-H\\'+(0==r.x&&r.1p!==-1?\" m-k-2f\":\"\")+(3==r.x?\" m-k-2X\"+r.1p:\"\")+\\'\">\\'+(0==r.x&&r.1p!==-1?\\'<i G=\"m-k-2i m-k-2i\\'+r.1p+\\'\"></i>\\':\"\")+(1==r.x&&e?\"\":r.H||\"\")+\\'</V><1b G=\"m-k-5W\">\\'+j(){q e=c?\\'<a G=\"m-k-1y\" 1K=\"1O:;\"><3h></3h></a><a G=\"m-k-2i m-k-2E\" 1K=\"1O:;\"></a>\\':\"\";D r.1G&&(e+=\\'<a G=\"m-k-2i \\'+l[7]+\" \"+l[7]+(r.T?r.1G:4==r.x?\"1\":\"2\")+\\'\" 1K=\"1O:;\"></a>\\'),e}()+\"</1b>\"+(r.M?j(){q e=\"\";\"24\"==R r.M&&(r.M=[r.M]);25(q t=0,i=r.M.15;t<i;t++)e+=\\'<a G=\"\\'+l[6]+t+\\'\">\\'+r.M[t]+\"</a>\";D\\'<V G=\"\\'+l[6]+\" m-k-M-\"+(r.5J||\"\")+\\'\">\\'+e+\"</V>\"}():\"\")+(r.1e?\\'<1b G=\"m-k-1e\"></1b>\\':\"\")+\"</V>\"],u,i(\\'<V G=\"m-k-1n\"></V>\\')),n},s.1m.32=j(){q e=K,t=e.L,a=e.C,s=t.H,f=\"1U\"==R s,c=i(\"2c\");J(!t.1v||!i(\"#\"+t.1v)[0]){3g(\"24\"==R t.P&&(t.P=\"1r\"===t.P?[\"\",\"\"]:[t.P,\"\"]),t.35&&(t.Q=t.35),6==r.1x&&(t.1d=!1),t.x){2b 0:t.M=\"M\"3a t?t.M:o.M[0],r.2I(\"2S\");23;2b 2:q s=t.H=f?t.H:[t.H||\"4U://k.m.4C\",\"1r\"];t.H=\\'<1k 6K=\"\\'+(t.H[1]||\"1r\")+\\'\" 69=\"61\" 1v=\"\\'+l[4]+a+\\'\" 5L=\"\\'+l[4]+a+\\'\" 3d=\"K.5H=\\\\\\'\\\\\\';\" G=\"m-k-2w\" 52=\"0\" 18=\"\\'+t.H[0]+\\'\"></1k>\\';23;2b 3:1q t.T,1q t.1G,t.1p===-1&&0===t.1p,r.2I(\"2X\");23;2b 4:f||(t.H=[t.H,\"2c\"]),t.3R=t.H[1],t.H=t.H[0]+\\'<i G=\"m-k-3f\"></i>\\',1q t.T,t.N=\"1U\"==R t.N?t.N:[t.N,!0],t.5Z||r.2I(\"N\")}J(e.3j(f,j(n,r,u){c.2M(n[0]),f?j(){2==t.x||4==t.x?j(){i(\"2c\").2M(n[1])}():j(){s.2L(\".\"+l[0])[0]||(s.1I(\"1Z\",s.A(\"1Z\")).1E().1u(\"m-k-33\").33(n[1]),i(\"#\"+l[0]+a).w(\".\"+l[5]).5X(r))}()}():c.2M(n[1]),i(\".m-k-1n\")[0]||c.2M(o.2h=u),e.1F=i(\"#\"+l[0]+a),t.2z||l.1h.A(\"1X\",\"2P\").B(\"k-1i\",a)}).1r(a),i(\"#m-k-W\"+e.C).A({\"3l-1V\":t.W[1]||\"#4x\",4z:t.W[0]||t.W}),2==t.x&&6==r.1x&&e.1F.w(\"1k\").B(\"18\",s[0]),4==t.x?e.N():e.I(),t.1d&&n.X(\"1e\",j(){e.I(),(/^\\\\d+%$/.2o(t.P[0])||/^\\\\d+%$/.2o(t.P[1]))&&e.1r(a),4==t.x&&e.N()}),t.1J<=0||1R(j(){r.1a(e.C)},t.1J),e.1n().3m(),l.Q[t.Q]){q u=\"k-Q \"+l.Q[t.Q];e.1F.1u(u).4E(\"4G 4H 4J 4M 4N\",j(){i(K).1D(u)})}t.1P&&e.1F.1I(\"1P\",!0)}},s.1m.1r=j(e){q t=K,a=t.L,o=i(\"#\"+l[0]+e);\"\"===a.P[0]&&a.20>0&&(r.1x&&r.1x<8&&a.M&&o.F(o.3n()),o.21()>a.20&&o.F(a.20));q s=[o.3n(),o.51()],f=o.w(l[1]).13()||0,c=o.w(\".\"+l[6]).13()||0,u=j(e){e=o.w(e),e.E(s[1]-f-c-2*(0|U(e.A(\"2f-S\"))))};3g(a.x){2b 2:u(\"1k\");23;3r:\"\"===a.P[1]?a.38>0&&o.13()>a.38?(s[1]=a.38,u(\".\"+l[5])):a.1d&&s[1]>=n.E()&&(s[1]=n.E(),u(\".\"+l[5])):u(\".\"+l[5])}D t},s.1m.I=j(){q e=K,t=e.L,i=e.1F,a=[i.21(),i.13()],o=\"1U\"==R t.I;e.Z=(n.E()-a[1])/2,e.14=(n.F()-a[0])/2,o?(e.Z=t.I[0],e.14=t.I[1]||e.14):\"1r\"!==t.I&&(\"t\"===t.I?e.Z=0:\"r\"===t.I?e.14=n.F()-a[0]:\"b\"===t.I?e.Z=n.E()-a[1]:\"l\"===t.I?e.14=0:\"5A\"===t.I?(e.Z=0,e.14=0):\"5B\"===t.I?(e.Z=n.E()-a[1],e.14=0):\"5D\"===t.I?(e.Z=0,e.14=n.F()-a[0]):\"5E\"===t.I?(e.Z=n.E()-a[1],e.14=n.F()-a[0]):e.Z=t.I),t.1d||(e.Z=/%$/.2o(e.Z)?n.E()*U(e.Z)/1H:U(e.Z),e.14=/%$/.2o(e.14)?n.F()*U(e.14)/1H:U(e.14),e.Z+=n.1N(),e.14+=n.2u()),i.B(\"1f\")&&(e.Z=n.E()-(i.w(l[1]).13()||0),e.14=i.A(\"O\")),i.A({S:e.Z,O:e.14})},s.1m.N=j(){q e=K,t=e.L,a=e.1F,o=[a.21(),a.13()],r=i(t.3R);r[0]||(r=i(\"2c\"));q s={F:r.21(),E:r.13(),S:r.I().S,O:r.I().O},f=a.w(\".m-k-3f\"),c=t.N[0];t.N[1]||f.2B(),s.36=j(){s.O+o[0]-n.F()>0?(s.26=s.O+s.F-o[0],f.A({2C:12,O:\"1r\"})):s.26=s.O},s.1S=[j(){s.36(),s.22=s.S-o[1]-10,f.1D(\"m-k-3u\").1u(\"m-k-3v\").A(\"2d-2C-1V\",t.N[1])},j(){s.26=s.O+s.F+10,s.22=s.S,f.1D(\"m-k-3w\").1u(\"m-k-3x\").A(\"2d-2U-1V\",t.N[1])},j(){s.36(),s.22=s.S+s.E+10,f.1D(\"m-k-3v\").1u(\"m-k-3u\").A(\"2d-2C-1V\",t.N[1])},j(){s.26=s.O-o[0]-10,s.22=s.S,f.1D(\"m-k-3x\").1u(\"m-k-3w\").A(\"2d-2U-1V\",t.N[1])}],s.1S[c-1](),1===c?s.S-(n.1N()+o[1]+16)<0&&s.1S[2]():2===c?n.F()-(s.O+s.F+o[0]+16)>0||s.1S[3]():3===c?s.S-n.1N()+s.E+o[1]+16-n.E()>0&&s.1S[0]():4===c&&o[0]+16-s.O>0&&s.1S[1](),a.w(\".\"+l[5]).A({\"3l-1V\":t.N[1],\"2f-2C\":t.1G?\"6e\":\"\"}),a.A({O:s.26-(t.1d?n.2u():0),S:s.22-(t.1d?n.1N():0)})},s.1m.1n=j(){q e=K,t=e.L,a=i(1g),s=e.1F,l=s.w(t.1n),f=s.w(\".m-k-1e\"),c={};D t.1n&&l.A(\"2O\",\"1n\"),l.X(\"2N\",j(e){e.1L(),t.1n&&(c.2K=!0,c.I=[e.2J-U(s.A(\"O\")),e.2G-U(s.A(\"S\"))],o.2h.A(\"2O\",\"1n\").1E())}),f.X(\"2N\",j(e){e.1L(),c.2D=!0,c.I=[e.2J,e.2G],c.P=[s.21(),s.13()],o.2h.A(\"2O\",\"6B-1e\").1E()}),a.X(\"6H\",j(i){J(c.2K){q a=i.2J-c.I[0],o=i.2G-c.I[1],l=\"1d\"===s.A(\"1o\");J(i.1L(),c.2y=l?0:n.2u(),c.2x=l?0:n.1N(),!t.3B){q f=n.F()-s.21()+c.2y,u=n.E()-s.13()+c.2x;a<c.2y&&(a=c.2y),a>f&&(a=f),o<c.2x&&(o=c.2x),o>u&&(o=u)}s.A({O:a,S:o})}J(t.1e&&c.2D){q a=i.2J-c.I[0],o=i.2G-c.I[1];i.1L(),r.19(e.C,{F:c.P[0]+a,E:c.P[1]+o}),c.4w=!0,t.3C&&t.3C(s)}}).X(\"4y\",j(e){c.2K&&(1q c.2K,o.2h.1z(),t.3E&&t.3E(s)),c.2D&&(1q c.2D,o.2h.1z())}),e},s.1m.3m=j(){j e(){q e=a.3F&&a.3F(t.C,n);e===!1||r.1a(t.C)}q t=K,n=t.1F,a=t.L;t.3G(),a.1c&&(2==a.x?n.w(\"1k\").X(\"2w\",j(){a.1c(n,t.C)}):a.1c(n,t.C)),6==r.1x&&t.3H(n),n.w(\".\"+l[6]).2t(\"a\").X(\"1C\",j(){q e=i(K).C();J(0===e)a.1T?a.1T(t.C,n):a.3J?a.3J(t.C,n):r.1a(t.C);31{q o=a[\"M\"+(e+1)]&&a[\"M\"+(e+1)](t.C,n);o===!1||r.1a(t.C)}}),n.w(\".\"+l[7]).X(\"1C\",e),a.3K&&i(\"#m-k-W\"+t.C).X(\"1C\",j(){r.1a(t.C)}),n.w(\".m-k-1y\").X(\"1C\",j(){q e=a.1y&&a.1y(n);e===!1||r.1y(t.C,a)}),n.w(\".m-k-2E\").X(\"1C\",j(){i(K).4K(\"m-k-2n\")?(r.2s(t.C),a.2s&&a.2s(n)):(r.1i(t.C,a),1R(j(){a.1i&&a.1i(n)},1H))}),a.1j&&(o.1j[t.C]=a.1j)},o.3L=j(){i.2r(i(\"3N\"),j(e,t){q n=i(K);n.2L(\".\"+l[0])[0]||1==n.B(\"k\")&&i(\".\"+l[0]).15<1&&n.3O(\"k\").1E(),n=1Y})},s.1m.3H=j(e){i(\"3N\").2r(j(e,t){q n=i(K);n.2L(\".\"+l[0])[0]||\"4P\"===n.A(\"1Z\")||n.B({k:\"1\"}).1z(),n=1Y})},s.1m.3G=j(){q e=K;r.1s=e.L.1s,r.4Q=j(e){q t=j(){r.1s++,e.A(\"z-C\",r.1s+1)};D r.1s=3A(e[0].19.1s),e.X(\"2N\",t),r.1s}},o.2V=j(e){q t=[e.F(),e.E(),e.1o().S,e.1o().O+U(e.A(\"4S-O\"))];e.w(\".m-k-2E\").1u(\"m-k-2n\"),e.B({P:t})},o.2q=j(e){l.1h.B(\"k-1i\")==e&&(l.1h[0].19.3P?l.1h[0].19.3P(\"1X\"):l.1h[0].19.4V(\"1X\"),l.1h.3O(\"k-1i\"))},e.k=r,r.3Q=j(e,t){D t=t||i(\".\"+l[4]).B(\"2e\"),i(\"#\"+l[0]+t).w(\"1k\").4X().w(e)},r.4Y=j(e){D i(\"#\"+e).2L(\".\"+l[4]).B(\"2e\")},r.4Z=j(e){J(e){q t=r.3Q(\"1h\",e).13(),n=i(\"#\"+l[0]+e),a=n.w(l[1]).13()||0,o=n.w(\".\"+l[6]).13()||0;n.A({E:t+a+o}),n.w(\"1k\").A({E:t})}},r.50=j(e,t){i(\"#\"+l[0]+e).w(\"1k\").B(\"18\",t)},r.19=j(e,t,n){q a=i(\"#\"+l[0]+e),r=a.w(\".m-k-H\"),s=a.B(\"x\"),f=a.w(l[1]).13()||0,c=a.w(\".\"+l[6]).13()||0;a.B(\"1f\");s!==o.x[3]&&s!==o.x[4]&&(n||(U(t.F)<=3e&&(t.F=3e),U(t.E)-f-c<=64&&(t.E=64+f+c)),a.A(t),c=a.w(\".\"+l[6]).13(),s===o.x[2]?a.w(\"1k\").A({E:U(t.E)-f-c}):r.A({E:U(t.E)-f-c-U(r.A(\"2f-S\"))-U(r.A(\"2f-2U\"))}))},r.1y=j(e,t){q a=i(\"#\"+l[0]+e),s=a.w(l[1]).13()||0,f=a.B(\"1f\")||53*o.2k+\"2Q\",c=a.A(\"1o\");o.2V(a),o.1f[0]&&(f=o.1f[0],o.1f.35()),a.B(\"1o\",c),r.19(e,{F:55,E:s,O:f,S:n.E()-s,1o:\"1d\",1X:\"2P\"},!0),a.w(\".m-k-1y\").1z(),\"2T\"===a.B(\"x\")&&a.w(l[4]).1z(),o.2q(e),a.B(\"1f\")||o.2k++,a.B(\"1f\",f)},r.2s=j(e){q t=i(\"#\"+l[0]+e),n=t.B(\"P\").56(\",\");t.B(\"x\");r.19(e,{F:U(n[0]),E:U(n[1]),S:U(n[2]),O:U(n[3]),1o:t.B(\"1o\"),1X:\"57\"},!0),t.w(\".m-k-2E\").1D(\"m-k-2n\"),t.w(\".m-k-1y\").1E(),\"2T\"===t.B(\"x\")&&t.w(l[4]).1E(),o.2q(e)},r.1i=j(e){q t,a=i(\"#\"+l[0]+e);o.2V(a),l.1h.B(\"k-1i\")||l.1h.A(\"1X\",\"2P\").B(\"k-1i\",e),58(t),t=1R(j(){q t=\"1d\"===a.A(\"1o\");r.19(e,{S:t?0:n.1N(),O:t?0:n.2u(),F:n.F(),E:n.E()},!0),a.w(\".m-k-1y\").1z()},1H)},r.T=j(e,t){q n=i(\"#\"+l[0]+(t||r.C)).w(l[1]);n.1h(e)},r.1a=j(e){q t=i(\"#\"+l[0]+e),n=t.B(\"x\"),a=\"k-Q-1a\";J(t[0]){q s=\"m-k-33\",f=j(){J(n===o.x[1]&&\"1U\"===t.B(\"3i\")){t.2t(\":59(.\"+l[5]+\")\").2B();25(q a=t.w(\".\"+s),r=0;r<2;r++)a.5a();a.A(\"1Z\",a.1I(\"1Z\")).1D(s)}31{J(n===o.x[2])5b{q f=i(\"#\"+l[4]+e)[0];f.3S.1g.5d(\"\"),f.3S.1a(),t.w(\".\"+l[5])[0].5e(f)}5f(c){}t[0].5g=\"\",t.2B()}\"j\"==R o.1j[e]&&o.1j[e](),1q o.1j[e]};t.1I(\"1P\")&&t.1u(\"k-Q \"+a),i(\"#m-k-5h, #m-k-W\"+e).2B(),6==r.1x&&o.3L(),o.2q(e),t.B(\"1f\")&&(o.2k--,o.1f.3T(t.B(\"1f\"))),r.1x&&r.1x<10||!t.1I(\"1P\")?f():1R(j(){f()},5j)}},r.2I=j(e){i.2r(i(\".\"+l[0]),j(){q t=i(K),n=e?t.B(\"x\")===e:1;n&&r.1a(t.B(\"2e\")),n=1Y})};q f=r.2R||{},c=j(e){D f.17?\" \"+f.17+\" \"+f.17+\"-\"+e:\"\"};r.3c=j(e,t){q a=\"\";J(e=e||{},\"j\"==R e&&(t=e),e.P){q o=e.P;a=\\'19=\"F: \\'+o[0]+\"; E: \"+o[1]+\\';\"\\',1q e.P}q s,l=2==e.3U?\\'<3V G=\"m-k-2p\"\\'+a+\">\"+(e.2Z||\"\")+\"</3V>\":j(){D\\'<2p x=\"\\'+(1==e.3U?\"5o\":\"5p\")+\\'\" G=\"m-k-2p\" 2Z=\"\\'+(e.2Z||\"\")+\\'\">\\'}(),f=e.1c;D 1q e.1c,r.1w(i.Y({x:1,M:[\"&#4g;&#4f;\",\"&#4e;&#4d;\"],H:l,17:\"m-k-3c\"+c(\"3c\"),20:n.F(),1c:j(e){s=e.w(\".m-k-2p\"),s.3W(),\"j\"==R f&&f(e)},1e:!1,1T:j(i){q n=s.5r();\"\"===n?s.3W():n.15>(e.3X||3Y)?r.N(\"&#5s;&#5t;&#5u;&#5v;\"+(e.3X||3Y)+\"&#5w;&#5x;&#5y;\",s,{N:1}):t&&t(n,i,s)}},e))},r.1A=j(e){e=e||{};q t=e.1A||{},n=\"m-K\",a=e.1c;D 1q e.1c,r.1w(i.Y({x:1,17:\"m-k-1A\"+c(\"1A\"),1e:!1,T:j(){q e=t.15,i=1,a=\"\";J(e>0)25(a=\\'<1b G=\"\\'+n+\\'\">\\'+t[0].T+\"</1b>\";i<e;i++)a+=\"<1b>\"+t[i].T+\"</1b>\";D a}(),H:\\'<3Z G=\"m-k-40\">\\'+j(){q e=t.15,i=1,a=\"\";J(e>0)25(a=\\'<2m G=\"m-k-41 \\'+n+\\'\">\\'+(t[0].H||\"42 H\")+\"</2m>\";i<e;i++)a+=\\'<2m G=\"m-k-41\">\\'+(t[i].H||\"42  H\")+\"</2m>\";D a}()+\"</3Z>\",1c:j(t){q o=t.w(\".m-k-T\").2t(),r=t.w(\".m-k-40\").2t();o.X(\"2N\",j(t){t.43?t.43():t.5G=!0;q a=i(K),o=a.C();a.1u(n).44().1D(n),r.5I(o).1E().44().1z(),\"j\"==R e.45&&e.45(o)}),\"j\"==R a&&a(t)}},e))},r.1l=j(t,n,a){j o(e,t,i){q n=46 5M;D n.18=e,n.5N?t(n):(n.3d=j(){n.3d=1Y,t(n)},3D(n.47=j(e){n.47=1Y,i(e)}))}q s={};J(t=t||{},t.1l){q l=t.1l.5P===5Q,f=l?t.1l:{},u=f.1I||[],d=f.3b||0;s.1t=(0|d)+1,t.1M=t.1M||\"1M\";q y=t.1c;J(1q t.1c,l){J(0===u.15)D r.2a(\"&#5U;&#5V;&#4b;&#4c;\")}31{q p=i(t.1l),h=j(){u=[],p.w(t.1M).2r(j(e){q t=i(K);t.B(\"k-C\",e),u.3T({2g:t.B(\"2g\"),2j:t.B(\"k-2j\"),18:t.B(\"k-18\")||t.B(\"18\"),62:t.B(\"18\")})})};J(h(),0===u.15)D;J(n||p.X(\"1C\",t.1M,j(){q e=i(K),n=e.B(\"k-C\");r.1l(i.Y(t,{1l:{3b:n,1I:u,1A:t.1A},1i:t.1i}),!0),h()}),!n)D}s.28=j(e){s.1t--,s.1t<1&&(s.1t=u.15),s.34(e)},s.1Q=j(e,t){s.1t++,s.1t>u.15&&(s.1t=1,t)||s.34(e)},s.29=j(e){J(!s.1j){q t=e.68;e.1L(),37===t?s.28(!0):39===t?s.1Q(!0):27===t&&r.1a(s.C)}},s.34=j(e){J(!(u.15<=1))D f.3b=s.1t-1,r.1a(s.C),r.1l(t,!0,e)},s.4h=j(){s.2v.6b(j(){s.2A.1E()},j(){s.2A.1z()}),s.2v.w(\".m-k-28\").X(\"1C\",j(e){e.1L(),s.28()}),s.2v.w(\".m-k-1Q\").X(\"1C\",j(e){e.1L(),s.1Q()}),i(1g).X(\"29\",s.29)},s.2W=r.2w(1,{W:!(\"W\"3a t)&&.9,2z:!1}),o(u[d].18,j(n){r.1a(s.2W),s.C=r.1w(i.Y({x:1,1v:\"m-k-1l\",P:j(){q a=[n.F,n.E],o=[i(e).F()-1H,i(e).E()-1H];J(!t.1i&&(a[0]>o[0]||a[1]>o[1])){q r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]<r[1]&&(a[0]=a[0]/r[1],a[1]=a[1]/r[1])}D[a[0]+\"2Q\",a[1]+\"2Q\"]}(),T:!1,W:.9,3K:!0,1G:!1,1n:\".m-k-2Y 1M\",3k:1,2z:!1,3B:!0,1P:!1,17:\"m-k-1l\"+c(\"1l\"),H:\\'<V G=\"m-k-2Y\"><1M 18=\"\\'+u[d].18+\\'\" 2g=\"\\'+(u[d].2g||\"\")+\\'\" k-2j=\"\\'+u[d].2j+\\'\"><V G=\"m-k-2A\">\\'+(u.15>1?\\'<1b G=\"m-k-4k\"><a 1K=\"1O:;\" G=\"m-k-4l m-k-28\"></a><a 1K=\"1O:;\" G=\"m-k-4l m-k-1Q\"></a></1b>\\':\"\")+\\'<V G=\"m-k-4m\" 19=\"1Z:\\'+(a?\"6i\":\"\")+\\'\"><1b G=\"m-k-6j\"><a 1K=\"1O:;\">\\'+(u[d].2g||\"\")+\"</a><4n>\"+s.1t+\"/\"+u.15+\"</4n></1b></V></V></V>\",1c:j(e,i){s.2v=e.w(\".m-k-2Y\"),s.2A=e.w(\".m-k-4k,.m-k-4m\"),s.4h(e),t.1A&&t.1A(u[d],e),\"j\"==R y&&y(e)},1j:j(){s.1j=!0,i(1g).6l(\"29\",s.29)}},t))},j(){r.1a(s.2W),r.2a(\"&#6m;&#6n;&#4b;&#4c;&#6o;&#6p;&#6q;&#6r;<6s>&#6t;&#6u;&#6v;&#6w;&#6x;&#4o;&#4p;&#4q;&#4r;&#6C;\",{1J:6D,M:[\"&#4p;&#4q;&#4r;\",\"&#6E;&#4o;&#6F;\"],1T:j(){u.15>1&&s.1Q(!0,!0)}})})}},o.2F=j(t){i=t,n=i(e),l.1h=i(\"1h\"),r.1w=j(e){q t=46 s(e);D t.C}},e.m&&m.1W?(r.2H(),m.1W(\"4s\",j(t){r.1B=m.2R.6I,o.2F(m.$),e.k=r,t(\"k\",r)})):\"j\"==R 1W&&1W.6J?1W([\"4s\"],j(){D o.2F(e.4t),r}):j(){o.2F(e.4t),r.2H()}()}(6L);',62,420,'|||||||||||||||||||function|layer||layui||||var||||||find|type|||css|attr|index|return|height|width|class|content|offset|if|this|config|btn|tips|left|area|anim|typeof|top|title|parseFloat|div|shade|on|extend|offsetTop||||outerHeight|offsetLeft|length||skin|src|style|close|span|success|fixed|resize|minLeft|document|html|full|end|iframe|photos|pt|move|position|icon|delete|auto|zIndex|imgIndex|addClass|id|open|ie|min|hide|tab|path|click|removeClass|show|layero|closeBtn|100|data|time|href|preventDefault|img|scrollTop|javascript|isOutAnim|imgnext|setTimeout|where|yes|object|color|define|overflow|null|display|maxWidth|outerWidth|tipTop|break|string|for|tipLeft||imgprev|keyup|msg|case|body|border|times|padding|alt|moveElem|ico|pid|minIndex|link|li|maxmin|test|input|rescollbar|each|restore|children|scrollLeft|bigimg|load|stY|stX|scrollbar|imgsee|remove|right|resizeStart|max|run|clientY|ready|closeAll|clientX|moveStart|parents|append|mousedown|cursor|hidden|px|cache|dialog|page|bottom|record|loadi|loading|phimg|value||else|creat|wrap|tabimg|shift|autoLeft||maxHeight||in|start|prompt|onload|260|TipsG|switch|cite|conType|vessel|moveType|background|callback|innerWidth|01|hui|3e3|default|theme|modules|TipsB|TipsT|TipsL|TipsR|addcss|ActiveXObject|parseInt|moveOut|resizing|void|moveEnd|cancel|openLayer|IE6|console|btn1|shadeClose|reselect|getElementById|select|removeAttr|removeProperty|getChildFrame|follow|contentWindow|push|formType|textarea|focus|maxlength|500|ul|tabmain|tabli|no|stopPropagation|siblings|change|new|onerror|getPropertyValue|currentStyle|getStyle|x56FE|x7247|x6D88|x53D6|x5B9A|x786E|event|currentScript|getPath|imguide|iconext|imgbar|em|x770B|x4E0B|x4E00|x5F20|jquery|jQuery|1989|x606F|isResize|000|mouseup|opacity|x4FE1|06|com|Invalid|one|error|webkitAnimationEnd|mozAnimationEnd|80|MSAnimationEnd|hasClass|appendChild|oanimationend|animationend|05|none|setTop|stylesheet|margin|rel|http|removeAttribute|04|contents|getFrameIndex|iframeAuto|iframeSrc|innerHeight|frameborder|181|layuicss|180|split|visible|clearTimeout|not|unwrap|try|03|write|removeChild|catch|innerHTML|moves|02|200|00|main|replace|createElement|password|text|prototype|val|x6700|x591A|x8F93|x5165|x4E2A|x5B57|x6570|head|lt|lb|getElementsByTagName|rt|rb|210|cancelBubble|className|eq|btnAlign|getAttribute|name|Image|complete|btn2|constructor|Object|confirm|getComputedStyle|alert|x6CA1|x6709|setwin|before|absolute|tipsMore|showtime|true|thumb|lastIndexOf||substring|readyState|interactive|keyCode|allowtransparency|scripts|hover|360|1e5|30px|strict|msie|match|block|imgtit|19891014|off|x5F53|x524D|x5730|x5740|x5F02|x5E38|br|x662F|x5426|x7EE7|x7EED|x67E5|toLowerCase|userAgent|navigator|se|xFF1F|3e4|x4E0D|x4E86|use|mousemove|dir|amd|scrolling|window'.split('|'),0,{}))"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/layer/mobile/layer.js",
    "content": "/*! layer mobile-v2.0.0 Web弹层组件 MIT License  http://layer.layui.com/mobile  By 贤心 */\n ;!function(e){\"use strict\";var t=document,n=\"querySelectorAll\",i=\"getElementsByClassName\",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:\"scale\"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener(\"click\",function(e){t.call(this,e)},!1)};var r=0,o=[\"layui-m-layer\"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement(\"div\");e.id=s.id=o[0]+r,s.setAttribute(\"class\",o[0]+\" \"+o[0]+(n.type||0)),s.setAttribute(\"index\",r);var l=function(){var e=\"object\"==typeof n.title;return n.title?'<h3 style=\"'+(e?n.title[1]:\"\")+'\">'+(e?n.title[0]:n.title)+\"</h3>\":\"\"}(),c=function(){\"string\"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e='<span yes type=\"1\">'+n.btn[0]+\"</span>\",2===t&&(e='<span no type=\"0\">'+n.btn[1]+\"</span>\"+e),'<div class=\"layui-m-layerbtn\">'+e+\"</div>\"):\"\"}();if(n.fixed||(n.top=n.hasOwnProperty(\"top\")?n.top:100,n.style=n.style||\"\",n.style+=\" top:\"+(t.body.scrollTop+n.top)+\"px\"),2===n.type&&(n.content='<i></i><i class=\"layui-m-layerload\"></i><i></i><p>'+(n.content||\"\")+\"</p>\"),n.skin&&(n.anim=\"up\"),\"msg\"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?\"<div \"+(\"string\"==typeof n.shade?'style=\"'+n.shade+'\"':\"\")+' class=\"layui-m-layershade\"></div>':\"\")+'<div class=\"layui-m-layermain\" '+(n.fixed?\"\":'style=\"position:static;\"')+'><div class=\"layui-m-layersection\"><div class=\"layui-m-layerchild '+(n.skin?\"layui-m-layer-\"+n.skin+\" \":\"\")+(n.className?n.className:\"\")+\" \"+(n.anim?\"layui-m-anim-\"+n.anim:\"\")+'\" '+(n.style?'style=\"'+n.style+'\"':\"\")+\">\"+l+'<div class=\"layui-m-layercont\">'+n.content+\"</div>\"+c+\"</div></div></div>\",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute(\"index\"))}document.body.appendChild(s);var u=e.elem=a(\"#\"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute(\"type\");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i](\"layui-m-layerbtn\")[0].children,r=s.length,o=0;o<r;o++)l.touch(s[o],a);if(e.shade&&e.shadeClose){var c=t[i](\"layui-m-layershade\")[0];l.touch(c,function(){layer.close(n.index,e.end)})}e.end&&(l.end[n.index]=e.end)},e.layer={v:\"2.0\",index:r,open:function(e){var t=new c(e||{});return t.index},close:function(e){var n=a(\"#\"+o[0]+e)[0];n&&(n.innerHTML=\"\",t.body.removeChild(n),clearTimeout(l.timer[e]),delete l.timer[e],\"function\"==typeof l.end[e]&&l.end[e](),delete l.end[e])},closeAll:function(){for(var e=t[i](o[0]),n=0,a=e.length;n<a;n++)layer.close(0|e[0].getAttribute(\"index\"))}},\"function\"==typeof define?define(function(){return layer}):function(){var e=document.scripts,n=e[e.length-1],i=n.src,a=i.substring(0,i.lastIndexOf(\"/\")+1);n.getAttribute(\"merge\")||document.head.appendChild(function(){var e=t.createElement(\"link\");return e.href=a+\"need/layer.css?2.0\",e.type=\"text/css\",e.rel=\"styleSheet\",e.id=\"layermcss\",e}())}()}(window);"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/layer/mobile/need/layer.css",
    "content": ".layui-m-layer{position:relative;z-index:19891014}.layui-m-layer *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.layui-m-layermain,.layui-m-layershade{position:fixed;left:0;top:0;width:100%;height:100%}.layui-m-layershade{background-color:rgba(0,0,0,.7);pointer-events:auto}.layui-m-layermain{display:table;font-family:Helvetica,arial,sans-serif;pointer-events:none}.layui-m-layermain .layui-m-layersection{display:table-cell;vertical-align:middle;text-align:center}.layui-m-layerchild{position:relative;display:inline-block;text-align:left;background-color:#fff;font-size:14px;border-radius:5px;box-shadow:0 0 8px rgba(0,0,0,.1);pointer-events:auto;-webkit-overflow-scrolling:touch;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@-webkit-keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.layui-m-anim-scale{animation-name:layui-m-anim-scale;-webkit-animation-name:layui-m-anim-scale}@-webkit-keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.layui-m-anim-up{-webkit-animation-name:layui-m-anim-up;animation-name:layui-m-anim-up}.layui-m-layer0 .layui-m-layerchild{width:90%;max-width:640px}.layui-m-layer1 .layui-m-layerchild{border:none;border-radius:0}.layui-m-layer2 .layui-m-layerchild{width:auto;max-width:260px;min-width:40px;border:none;background:0 0;box-shadow:none;color:#fff}.layui-m-layerchild h3{padding:0 10px;height:60px;line-height:60px;font-size:16px;font-weight:400;border-radius:5px 5px 0 0;text-align:center}.layui-m-layerbtn span,.layui-m-layerchild h3{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-m-layercont{padding:50px 30px;line-height:22px;text-align:center}.layui-m-layer1 .layui-m-layercont{padding:0;text-align:left}.layui-m-layer2 .layui-m-layercont{text-align:center;padding:0;line-height:0}.layui-m-layer2 .layui-m-layercont i{width:25px;height:25px;margin-left:8px;display:inline-block;background-color:#fff;border-radius:100%;-webkit-animation:layui-m-anim-loading 1.4s infinite ease-in-out;animation:layui-m-anim-loading 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-m-layerbtn,.layui-m-layerbtn span{position:relative;text-align:center;border-radius:0 0 5px 5px}.layui-m-layer2 .layui-m-layercont p{margin-top:20px}@-webkit-keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}@keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.layui-m-layer2 .layui-m-layercont i:first-child{margin-left:0;-webkit-animation-delay:-.32s;animation-delay:-.32s}.layui-m-layer2 .layui-m-layercont i.layui-m-layerload{-webkit-animation-delay:-.16s;animation-delay:-.16s}.layui-m-layer2 .layui-m-layercont>div{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40AFFE}.layui-m-layerbtn span[no]{border-right:1px solid #D0D0D0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#FD482C;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;bottom:-150px;background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/layer/theme/default/layer.css",
    "content": ".layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .layui-layer-title span,.layui-layer-title{text-overflow:ellipsis;white-space:nowrap}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+\"px\")}.layui-layer{-webkit-overflow-scrolling:touch;top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-load{background:url(loading-1.gif) center center no-repeat #eee}.layui-layer-ico{background:url(icon.png) no-repeat}.layui-layer-btn a,.layui-layer-dialog .layui-layer-ico,.layui-layer-setwin a{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-layer-title{padding:0 80px 0 20px;height:42px;line-height:42px;border-bottom:1px solid #eee;font-size:14px;color:#333;overflow:hidden;background-color:#F8F8F8;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:15px;font-size:0;line-height:initial}.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:10px;font-size:12px;_overflow:hidden}.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#2E2D3C;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA}.layui-layer-setwin .layui-layer-max{background-position:-32px -40px}.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px}.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px}.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px}.layui-layer-setwin .layui-layer-close1{background-position:1px -40px;cursor:pointer}.layui-layer-setwin .layui-layer-close1:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px;margin-left:0;background-position:-149px -31px;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{background-position:-180px -31px}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#1E9FFF;background-color:#1E9FFF;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:260px}.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:16px;left:15px;_left:-40px;width:30px;height:30px}.layui-layer-ico1{background-position:-30px 0}.layui-layer-ico2{background-position:-60px 0}.layui-layer-ico3{background-position:-90px 0}.layui-layer-ico4{background-position:-120px 0}.layui-layer-ico5{background-position:-150px 0}.layui-layer-ico6{background-position:-180px 0}.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:20px 20px 20px 55px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(loading-2.gif) no-repeat}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan[type=dialog]{min-width:280px}.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;border-top:1px solid #E9E7E7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#E9E7E7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1}.layui-layer-iconext{background:url(icon-ext.png) no-repeat}.layui-layer-prompt .layui-layer-input{display:block;width:230px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:20px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:260px;padding:0 20px;text-align:center;overflow:hidden;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:43px;border-left:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{-webkit-animation-duration:.8s;animation-duration:.8s}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgbar,.layui-layer-imguide{display:none}.layui-layer-imgnext,.layui-layer-imgprev{position:absolute;top:50%;width:27px;_width:44px;height:44px;margin-top:-22px;outline:0;blr:expression(this.onFocus=this.blur())}.layui-layer-imgprev{left:10px;background-position:-5px -5px;_background-position:-70px -5px}.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px}.layui-layer-imgnext{right:10px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px}.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px}.layui-layer-imgbar{position:absolute;left:0;bottom:0;width:100%;height:32px;line-height:32px;background-color:rgba(0,0,0,.8);background-color:#000\\9;filter:Alpha(opacity=80);color:#fff;overflow:hidden;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px}.layui-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{padding-left:10px;font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/moment-timezone/moment-timezone-with-data-10-year-range.js",
    "content": "//! moment-timezone.js\n//! version : 0.5.28\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory);                 // AMD\n\t} else {\n\t\tfactory(root.moment);                        // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.28\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils  = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname       : data[0],\n\t\t\tabbrs      : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets    : mapIndices(offsets, indices),\n\t\t\tuntils     : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name       = unpacked.name;\n\t\t\tthis.abbrs      = unpacked.abbrs;\n\t\t\tthis.untils     = unpacked.untils;\n\t\t\tthis.offsets    = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target  = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils  = this.untils,\n\t\t\t\tmax     = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset     = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout  = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version      = VERSION;\n\ttz.dataVersion  = '';\n\ttz._zones       = zones;\n\ttz._links       = links;\n\ttz._names       = names;\n\ttz._countries\t= countries;\n\ttz.add          = addZone;\n\ttz.link         = addLink;\n\ttz.load         = loadData;\n\ttz.zone         = getZone;\n\ttz.zoneExists   = zoneExists; // deprecated in 0.1.0\n\ttz.guess        = guess;\n\ttz.names        = getNames;\n\ttz.Zone         = Zone;\n\ttz.unpack       = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset  = needsOffset;\n\ttz.moveInvalidForward   = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries    = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName  = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr  = abbrWrap(fn.zoneAbbr);\n\tfn.utc       = resetZoneWrap(fn.utc);\n\tfn.local     = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\tloadData({\n\t\t\"version\": \"2019c\",\n\t\t\"zones\": [\n\t\t\t\"Africa/Abidjan|GMT|0|0||48e5\",\n\t\t\t\"Africa/Nairobi|EAT|-30|0||47e5\",\n\t\t\t\"Africa/Algiers|CET|-10|0||26e5\",\n\t\t\t\"Africa/Lagos|WAT|-10|0||17e6\",\n\t\t\t\"Africa/Maputo|CAT|-20|0||26e5\",\n\t\t\t\"Africa/Cairo|EET|-20|0||15e6\",\n\t\t\t\"Africa/Casablanca|+00 +01|0 -10|010101010101010101010101010101|1O9e0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5\",\n\t\t\t\"Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6\",\n\t\t\t\"Africa/Johannesburg|SAST|-20|0||84e5\",\n\t\t\t\"Africa/Khartoum|EAT CAT|-30 -20|01|1Usl0|51e5\",\n\t\t\t\"Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00|\",\n\t\t\t\"Africa/Windhoek|CAT WAT|-20 -10|0101010|1Oc00 11B0 1nX0 11B0 1nX0 11B0|32e4\",\n\t\t\t\"America/Adak|HST HDT|a0 90|01010101010101010101010|1O100 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326\",\n\t\t\t\"America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1O0X0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4\",\n\t\t\t\"America/Santo_Domingo|AST|40|0||29e5\",\n\t\t\t\"America/Fortaleza|-03|30|0||34e5\",\n\t\t\t\"America/Asuncion|-03 -04|30 40|01010101010101010101010|1O6r0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0|28e5\",\n\t\t\t\"America/Panama|EST|50|0||15e5\",\n\t\t\t\"America/Mexico_City|CST CDT|60 50|01010101010101010101010|1Oc80 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6\",\n\t\t\t\"America/Managua|CST|60|0||22e5\",\n\t\t\t\"America/La_Paz|-04|40|0||19e5\",\n\t\t\t\"America/Lima|-05|50|0||11e6\",\n\t\t\t\"America/Denver|MST MDT|70 60|01010101010101010101010|1O0V0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5\",\n\t\t\t\"America/Campo_Grande|-03 -04|30 40|0101010101|1NTf0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4\",\n\t\t\t\"America/Cancun|CST EST|60 50|01|1NKU0|63e4\",\n\t\t\t\"America/Caracas|-0430 -04|4u 40|01|1QMT0|29e5\",\n\t\t\t\"America/Chicago|CST CDT|60 50|01010101010101010101010|1O0U0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5\",\n\t\t\t\"America/Chihuahua|MST MDT|70 60|01010101010101010101010|1Oc90 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4\",\n\t\t\t\"America/Phoenix|MST|70|0||42e5\",\n\t\t\t\"America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1O0W0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6\",\n\t\t\t\"America/New_York|EST EDT|50 40|01010101010101010101010|1O0T0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6\",\n\t\t\t\"America/Fort_Nelson|PST MST|80 70|01|1O0W0|39e2\",\n\t\t\t\"America/Halifax|AST ADT|40 30|01010101010101010101010|1O0S0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4\",\n\t\t\t\"America/Godthab|-03 -02|30 20|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3\",\n\t\t\t\"America/Grand_Turk|EST EDT AST|50 40 40|0121010101010101010|1O0T0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2\",\n\t\t\t\"America/Havana|CST CDT|50 40|01010101010101010101010|1O0R0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5\",\n\t\t\t\"America/Metlakatla|PST AKST AKDT|80 90 80|01212120121212121212121|1PAa0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\n\t\t\t\"America/Miquelon|-03 -02|30 20|01010101010101010101010|1O0R0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2\",\n\t\t\t\"America/Montevideo|-02 -03|20 30|01|1O0Q0|17e5\",\n\t\t\t\"America/Noronha|-02|20|0||30e2\",\n\t\t\t\"America/Port-au-Prince|EST EDT|50 40|010101010101010101010|1O0T0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\n\t\t\t\"Antarctica/Palmer|-03 -04|30 40|010|1QSr0 Ap0|40\",\n\t\t\t\"America/Santiago|-03 -04|30 40|010101010101010101010|1QSr0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0|62e5\",\n\t\t\t\"America/Sao_Paulo|-02 -03|20 30|0101010101|1NTe0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6\",\n\t\t\t\"Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4\",\n\t\t\t\"America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1O0Ru 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\n\t\t\t\"Antarctica/Casey|+08 +11|-80 -b0|010|1RWg0 3m10|10\",\n\t\t\t\"Asia/Bangkok|+07|-70|0||15e6\",\n\t\t\t\"Asia/Vladivostok|+10|-a0|0||60e4\",\n\t\t\t\"Pacific/Bougainville|+11|-b0|0||18e4\",\n\t\t\t\"Asia/Tashkent|+05|-50|0||23e5\",\n\t\t\t\"Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1ObO0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00|14e5\",\n\t\t\t\"Asia/Baghdad|+03|-30|0||66e5\",\n\t\t\t\"Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40\",\n\t\t\t\"Asia/Dhaka|+06|-60|0||16e6\",\n\t\t\t\"Asia/Amman|EET EEST|-20 -30|01010101010101010101010|1O8m0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|25e5\",\n\t\t\t\"Asia/Kamchatka|+12|-c0|0||18e4\",\n\t\t\t\"Asia/Baku|+04 +05|-40 -50|010|1O9c0 1o00|27e5\",\n\t\t\t\"Asia/Barnaul|+06 +07|-60 -70|01|1QyI0|\",\n\t\t\t\"Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1O9a0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5\",\n\t\t\t\"Asia/Kuala_Lumpur|+08|-80|0||71e5\",\n\t\t\t\"Asia/Kolkata|IST|-5u|0||15e6\",\n\t\t\t\"Asia/Chita|+08 +09|-80 -90|01|1QyG0|33e4\",\n\t\t\t\"Asia/Ulaanbaatar|+08 +09|-80 -90|01010|1O8G0 1cJ0 1cP0 1cJ0|12e5\",\n\t\t\t\"Asia/Shanghai|CST|-80|0||23e6\",\n\t\t\t\"Asia/Colombo|+0530|-5u|0||22e5\",\n\t\t\t\"Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1O8m0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|26e5\",\n\t\t\t\"Asia/Yakutsk|+09|-90|0||28e4\",\n\t\t\t\"Asia/Dubai|+04|-40|0||39e5\",\n\t\t\t\"Asia/Famagusta|EET EEST +03|-20 -30 -30|0101201010101010101010|1O9d0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|\",\n\t\t\t\"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1O8K0 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0|18e5\",\n\t\t\t\"Asia/Hong_Kong|HKT|-80|0||73e5\",\n\t\t\t\"Asia/Hovd|+07 +08|-70 -80|01010|1O8H0 1cJ0 1cP0 1cJ0|81e3\",\n\t\t\t\"Europe/Istanbul|EET EEST +03|-20 -30 -30|01012|1O9d0 1tA0 U00 15w0|13e6\",\n\t\t\t\"Asia/Jakarta|WIB|-70|0||31e6\",\n\t\t\t\"Asia/Jayapura|WIT|-90|0||26e4\",\n\t\t\t\"Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1O8o0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4\",\n\t\t\t\"Asia/Kabul|+0430|-4u|0||46e5\",\n\t\t\t\"Asia/Karachi|PKT|-50|0||24e6\",\n\t\t\t\"Asia/Kathmandu|+0545|-5J|0||12e5\",\n\t\t\t\"Asia/Magadan|+10 +11|-a0 -b0|01|1QJQ0|95e3\",\n\t\t\t\"Asia/Makassar|WITA|-80|0||15e5\",\n\t\t\t\"Asia/Manila|PST|-80|0||24e6\",\n\t\t\t\"Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5\",\n\t\t\t\"Asia/Novosibirsk|+06 +07|-60 -70|01|1Rmk0|15e5\",\n\t\t\t\"Asia/Pyongyang|KST KST|-90 -8u|010|1P4D0 6BA0|29e5\",\n\t\t\t\"Asia/Qyzylorda|+06 +05|-60 -50|01|1Xei0|73e4\",\n\t\t\t\"Asia/Rangoon|+0630|-6u|0||48e5\",\n\t\t\t\"Asia/Sakhalin|+10 +11|-a0 -b0|01|1QyE0|58e4\",\n\t\t\t\"Asia/Seoul|KST|-90|0||23e6\",\n\t\t\t\"Asia/Tehran|+0330 +0430|-3u -4u|01010101010101010101010|1O6ku 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0|14e6\",\n\t\t\t\"Asia/Tokyo|JST|-90|0||38e6\",\n\t\t\t\"Asia/Tomsk|+06 +07|-60 -70|01|1QXU0|10e5\",\n\t\t\t\"Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5\",\n\t\t\t\"Atlantic/Cape_Verde|-01|10|0||50e4\",\n\t\t\t\"Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1ObQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0|40e5\",\n\t\t\t\"Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1ObQu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0|11e5\",\n\t\t\t\"Australia/Brisbane|AEST|-a0|0||20e5\",\n\t\t\t\"Australia/Darwin|ACST|-9u|0||12e4\",\n\t\t\t\"Australia/Eucla|+0845|-8J|0||368\",\n\t\t\t\"Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1ObP0 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu|347\",\n\t\t\t\"Australia/Perth|AWST|-80|0||18e5\",\n\t\t\t\"Pacific/Easter|-05 -06|50 60|010101010101010101010|1QSr0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0|30e2\",\n\t\t\t\"Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\n\t\t\t\"Etc/GMT-1|+01|-10|0||\",\n\t\t\t\"Pacific/Fakaofo|+13|-d0|0||483\",\n\t\t\t\"Pacific/Kiritimati|+14|-e0|0||51e2\",\n\t\t\t\"Etc/GMT-2|+02|-20|0||\",\n\t\t\t\"Pacific/Tahiti|-10|a0|0||18e4\",\n\t\t\t\"Pacific/Niue|-11|b0|0||12e2\",\n\t\t\t\"Etc/GMT+12|-12|c0|0||\",\n\t\t\t\"Pacific/Galapagos|-06|60|0||25e3\",\n\t\t\t\"Etc/GMT+7|-07|70|0||\",\n\t\t\t\"Pacific/Pitcairn|-08|80|0||56\",\n\t\t\t\"Pacific/Gambier|-09|90|0||125\",\n\t\t\t\"Etc/UTC|UTC|0|0||\",\n\t\t\t\"Europe/Ulyanovsk|+03 +04|-30 -40|01|1QyL0|13e5\",\n\t\t\t\"Europe/London|GMT BST|0 -10|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6\",\n\t\t\t\"Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1O9c0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4\",\n\t\t\t\"Europe/Moscow|MSK|-30|0||16e6\",\n\t\t\t\"Europe/Saratov|+03 +04|-30 -40|01|1Sfz0|\",\n\t\t\t\"Europe/Volgograd|+03 +04|-30 -40|01|1WQL0|10e5\",\n\t\t\t\"Pacific/Honolulu|HST|a0|0||37e4\",\n\t\t\t\"MET|MET MEST|-10 -20|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|\",\n\t\t\t\"Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1ObO0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00|600\",\n\t\t\t\"Pacific/Apia|+14 +13|-e0 -d0|01010101010101010101010|1ObO0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00|37e3\",\n\t\t\t\"Pacific/Fiji|+13 +12|-d0 -c0|01010101010101010101010|1NF20 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 20o0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0|88e4\",\n\t\t\t\"Pacific/Guam|ChST|-a0|0||17e4\",\n\t\t\t\"Pacific/Marquesas|-0930|9u|0||86e2\",\n\t\t\t\"Pacific/Pago_Pago|SST|b0|0||37e2\",\n\t\t\t\"Pacific/Norfolk|+1130 +11 +12|-bu -b0 -c0|012121212121212|1PoCu 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0|25e4\",\n\t\t\t\"Pacific/Tongatapu|+13 +14|-d0 -e0|010|1S4d0 s00|75e3\"\n\t\t],\n\t\t\"links\": [\n\t\t\t\"Africa/Abidjan|Africa/Accra\",\n\t\t\t\"Africa/Abidjan|Africa/Bamako\",\n\t\t\t\"Africa/Abidjan|Africa/Banjul\",\n\t\t\t\"Africa/Abidjan|Africa/Bissau\",\n\t\t\t\"Africa/Abidjan|Africa/Conakry\",\n\t\t\t\"Africa/Abidjan|Africa/Dakar\",\n\t\t\t\"Africa/Abidjan|Africa/Freetown\",\n\t\t\t\"Africa/Abidjan|Africa/Lome\",\n\t\t\t\"Africa/Abidjan|Africa/Monrovia\",\n\t\t\t\"Africa/Abidjan|Africa/Nouakchott\",\n\t\t\t\"Africa/Abidjan|Africa/Ouagadougou\",\n\t\t\t\"Africa/Abidjan|Africa/Timbuktu\",\n\t\t\t\"Africa/Abidjan|America/Danmarkshavn\",\n\t\t\t\"Africa/Abidjan|Atlantic/Reykjavik\",\n\t\t\t\"Africa/Abidjan|Atlantic/St_Helena\",\n\t\t\t\"Africa/Abidjan|Etc/GMT\",\n\t\t\t\"Africa/Abidjan|Etc/GMT+0\",\n\t\t\t\"Africa/Abidjan|Etc/GMT-0\",\n\t\t\t\"Africa/Abidjan|Etc/GMT0\",\n\t\t\t\"Africa/Abidjan|Etc/Greenwich\",\n\t\t\t\"Africa/Abidjan|GMT\",\n\t\t\t\"Africa/Abidjan|GMT+0\",\n\t\t\t\"Africa/Abidjan|GMT-0\",\n\t\t\t\"Africa/Abidjan|GMT0\",\n\t\t\t\"Africa/Abidjan|Greenwich\",\n\t\t\t\"Africa/Abidjan|Iceland\",\n\t\t\t\"Africa/Algiers|Africa/Tunis\",\n\t\t\t\"Africa/Cairo|Africa/Tripoli\",\n\t\t\t\"Africa/Cairo|Egypt\",\n\t\t\t\"Africa/Cairo|Europe/Kaliningrad\",\n\t\t\t\"Africa/Cairo|Libya\",\n\t\t\t\"Africa/Casablanca|Africa/El_Aaiun\",\n\t\t\t\"Africa/Johannesburg|Africa/Maseru\",\n\t\t\t\"Africa/Johannesburg|Africa/Mbabane\",\n\t\t\t\"Africa/Lagos|Africa/Bangui\",\n\t\t\t\"Africa/Lagos|Africa/Brazzaville\",\n\t\t\t\"Africa/Lagos|Africa/Douala\",\n\t\t\t\"Africa/Lagos|Africa/Kinshasa\",\n\t\t\t\"Africa/Lagos|Africa/Libreville\",\n\t\t\t\"Africa/Lagos|Africa/Luanda\",\n\t\t\t\"Africa/Lagos|Africa/Malabo\",\n\t\t\t\"Africa/Lagos|Africa/Ndjamena\",\n\t\t\t\"Africa/Lagos|Africa/Niamey\",\n\t\t\t\"Africa/Lagos|Africa/Porto-Novo\",\n\t\t\t\"Africa/Maputo|Africa/Blantyre\",\n\t\t\t\"Africa/Maputo|Africa/Bujumbura\",\n\t\t\t\"Africa/Maputo|Africa/Gaborone\",\n\t\t\t\"Africa/Maputo|Africa/Harare\",\n\t\t\t\"Africa/Maputo|Africa/Kigali\",\n\t\t\t\"Africa/Maputo|Africa/Lubumbashi\",\n\t\t\t\"Africa/Maputo|Africa/Lusaka\",\n\t\t\t\"Africa/Nairobi|Africa/Addis_Ababa\",\n\t\t\t\"Africa/Nairobi|Africa/Asmara\",\n\t\t\t\"Africa/Nairobi|Africa/Asmera\",\n\t\t\t\"Africa/Nairobi|Africa/Dar_es_Salaam\",\n\t\t\t\"Africa/Nairobi|Africa/Djibouti\",\n\t\t\t\"Africa/Nairobi|Africa/Juba\",\n\t\t\t\"Africa/Nairobi|Africa/Kampala\",\n\t\t\t\"Africa/Nairobi|Africa/Mogadishu\",\n\t\t\t\"Africa/Nairobi|Indian/Antananarivo\",\n\t\t\t\"Africa/Nairobi|Indian/Comoro\",\n\t\t\t\"Africa/Nairobi|Indian/Mayotte\",\n\t\t\t\"America/Adak|America/Atka\",\n\t\t\t\"America/Adak|US/Aleutian\",\n\t\t\t\"America/Anchorage|America/Juneau\",\n\t\t\t\"America/Anchorage|America/Nome\",\n\t\t\t\"America/Anchorage|America/Sitka\",\n\t\t\t\"America/Anchorage|America/Yakutat\",\n\t\t\t\"America/Anchorage|US/Alaska\",\n\t\t\t\"America/Campo_Grande|America/Cuiaba\",\n\t\t\t\"America/Chicago|America/Indiana/Knox\",\n\t\t\t\"America/Chicago|America/Indiana/Tell_City\",\n\t\t\t\"America/Chicago|America/Knox_IN\",\n\t\t\t\"America/Chicago|America/Matamoros\",\n\t\t\t\"America/Chicago|America/Menominee\",\n\t\t\t\"America/Chicago|America/North_Dakota/Beulah\",\n\t\t\t\"America/Chicago|America/North_Dakota/Center\",\n\t\t\t\"America/Chicago|America/North_Dakota/New_Salem\",\n\t\t\t\"America/Chicago|America/Rainy_River\",\n\t\t\t\"America/Chicago|America/Rankin_Inlet\",\n\t\t\t\"America/Chicago|America/Resolute\",\n\t\t\t\"America/Chicago|America/Winnipeg\",\n\t\t\t\"America/Chicago|CST6CDT\",\n\t\t\t\"America/Chicago|Canada/Central\",\n\t\t\t\"America/Chicago|US/Central\",\n\t\t\t\"America/Chicago|US/Indiana-Starke\",\n\t\t\t\"America/Chihuahua|America/Mazatlan\",\n\t\t\t\"America/Chihuahua|Mexico/BajaSur\",\n\t\t\t\"America/Denver|America/Boise\",\n\t\t\t\"America/Denver|America/Cambridge_Bay\",\n\t\t\t\"America/Denver|America/Edmonton\",\n\t\t\t\"America/Denver|America/Inuvik\",\n\t\t\t\"America/Denver|America/Ojinaga\",\n\t\t\t\"America/Denver|America/Shiprock\",\n\t\t\t\"America/Denver|America/Yellowknife\",\n\t\t\t\"America/Denver|Canada/Mountain\",\n\t\t\t\"America/Denver|MST7MDT\",\n\t\t\t\"America/Denver|Navajo\",\n\t\t\t\"America/Denver|US/Mountain\",\n\t\t\t\"America/Fortaleza|America/Araguaina\",\n\t\t\t\"America/Fortaleza|America/Argentina/Buenos_Aires\",\n\t\t\t\"America/Fortaleza|America/Argentina/Catamarca\",\n\t\t\t\"America/Fortaleza|America/Argentina/ComodRivadavia\",\n\t\t\t\"America/Fortaleza|America/Argentina/Cordoba\",\n\t\t\t\"America/Fortaleza|America/Argentina/Jujuy\",\n\t\t\t\"America/Fortaleza|America/Argentina/La_Rioja\",\n\t\t\t\"America/Fortaleza|America/Argentina/Mendoza\",\n\t\t\t\"America/Fortaleza|America/Argentina/Rio_Gallegos\",\n\t\t\t\"America/Fortaleza|America/Argentina/Salta\",\n\t\t\t\"America/Fortaleza|America/Argentina/San_Juan\",\n\t\t\t\"America/Fortaleza|America/Argentina/San_Luis\",\n\t\t\t\"America/Fortaleza|America/Argentina/Tucuman\",\n\t\t\t\"America/Fortaleza|America/Argentina/Ushuaia\",\n\t\t\t\"America/Fortaleza|America/Bahia\",\n\t\t\t\"America/Fortaleza|America/Belem\",\n\t\t\t\"America/Fortaleza|America/Buenos_Aires\",\n\t\t\t\"America/Fortaleza|America/Catamarca\",\n\t\t\t\"America/Fortaleza|America/Cayenne\",\n\t\t\t\"America/Fortaleza|America/Cordoba\",\n\t\t\t\"America/Fortaleza|America/Jujuy\",\n\t\t\t\"America/Fortaleza|America/Maceio\",\n\t\t\t\"America/Fortaleza|America/Mendoza\",\n\t\t\t\"America/Fortaleza|America/Paramaribo\",\n\t\t\t\"America/Fortaleza|America/Recife\",\n\t\t\t\"America/Fortaleza|America/Rosario\",\n\t\t\t\"America/Fortaleza|America/Santarem\",\n\t\t\t\"America/Fortaleza|Antarctica/Rothera\",\n\t\t\t\"America/Fortaleza|Atlantic/Stanley\",\n\t\t\t\"America/Fortaleza|Etc/GMT+3\",\n\t\t\t\"America/Halifax|America/Glace_Bay\",\n\t\t\t\"America/Halifax|America/Goose_Bay\",\n\t\t\t\"America/Halifax|America/Moncton\",\n\t\t\t\"America/Halifax|America/Thule\",\n\t\t\t\"America/Halifax|Atlantic/Bermuda\",\n\t\t\t\"America/Halifax|Canada/Atlantic\",\n\t\t\t\"America/Havana|Cuba\",\n\t\t\t\"America/La_Paz|America/Boa_Vista\",\n\t\t\t\"America/La_Paz|America/Guyana\",\n\t\t\t\"America/La_Paz|America/Manaus\",\n\t\t\t\"America/La_Paz|America/Porto_Velho\",\n\t\t\t\"America/La_Paz|Brazil/West\",\n\t\t\t\"America/La_Paz|Etc/GMT+4\",\n\t\t\t\"America/Lima|America/Bogota\",\n\t\t\t\"America/Lima|America/Eirunepe\",\n\t\t\t\"America/Lima|America/Guayaquil\",\n\t\t\t\"America/Lima|America/Porto_Acre\",\n\t\t\t\"America/Lima|America/Rio_Branco\",\n\t\t\t\"America/Lima|Brazil/Acre\",\n\t\t\t\"America/Lima|Etc/GMT+5\",\n\t\t\t\"America/Los_Angeles|America/Dawson\",\n\t\t\t\"America/Los_Angeles|America/Ensenada\",\n\t\t\t\"America/Los_Angeles|America/Santa_Isabel\",\n\t\t\t\"America/Los_Angeles|America/Tijuana\",\n\t\t\t\"America/Los_Angeles|America/Vancouver\",\n\t\t\t\"America/Los_Angeles|America/Whitehorse\",\n\t\t\t\"America/Los_Angeles|Canada/Pacific\",\n\t\t\t\"America/Los_Angeles|Canada/Yukon\",\n\t\t\t\"America/Los_Angeles|Mexico/BajaNorte\",\n\t\t\t\"America/Los_Angeles|PST8PDT\",\n\t\t\t\"America/Los_Angeles|US/Pacific\",\n\t\t\t\"America/Los_Angeles|US/Pacific-New\",\n\t\t\t\"America/Managua|America/Belize\",\n\t\t\t\"America/Managua|America/Costa_Rica\",\n\t\t\t\"America/Managua|America/El_Salvador\",\n\t\t\t\"America/Managua|America/Guatemala\",\n\t\t\t\"America/Managua|America/Regina\",\n\t\t\t\"America/Managua|America/Swift_Current\",\n\t\t\t\"America/Managua|America/Tegucigalpa\",\n\t\t\t\"America/Managua|Canada/Saskatchewan\",\n\t\t\t\"America/Mexico_City|America/Bahia_Banderas\",\n\t\t\t\"America/Mexico_City|America/Merida\",\n\t\t\t\"America/Mexico_City|America/Monterrey\",\n\t\t\t\"America/Mexico_City|Mexico/General\",\n\t\t\t\"America/New_York|America/Detroit\",\n\t\t\t\"America/New_York|America/Fort_Wayne\",\n\t\t\t\"America/New_York|America/Indiana/Indianapolis\",\n\t\t\t\"America/New_York|America/Indiana/Marengo\",\n\t\t\t\"America/New_York|America/Indiana/Petersburg\",\n\t\t\t\"America/New_York|America/Indiana/Vevay\",\n\t\t\t\"America/New_York|America/Indiana/Vincennes\",\n\t\t\t\"America/New_York|America/Indiana/Winamac\",\n\t\t\t\"America/New_York|America/Indianapolis\",\n\t\t\t\"America/New_York|America/Iqaluit\",\n\t\t\t\"America/New_York|America/Kentucky/Louisville\",\n\t\t\t\"America/New_York|America/Kentucky/Monticello\",\n\t\t\t\"America/New_York|America/Louisville\",\n\t\t\t\"America/New_York|America/Montreal\",\n\t\t\t\"America/New_York|America/Nassau\",\n\t\t\t\"America/New_York|America/Nipigon\",\n\t\t\t\"America/New_York|America/Pangnirtung\",\n\t\t\t\"America/New_York|America/Thunder_Bay\",\n\t\t\t\"America/New_York|America/Toronto\",\n\t\t\t\"America/New_York|Canada/Eastern\",\n\t\t\t\"America/New_York|EST5EDT\",\n\t\t\t\"America/New_York|US/East-Indiana\",\n\t\t\t\"America/New_York|US/Eastern\",\n\t\t\t\"America/New_York|US/Michigan\",\n\t\t\t\"America/Noronha|Atlantic/South_Georgia\",\n\t\t\t\"America/Noronha|Brazil/DeNoronha\",\n\t\t\t\"America/Noronha|Etc/GMT+2\",\n\t\t\t\"America/Panama|America/Atikokan\",\n\t\t\t\"America/Panama|America/Cayman\",\n\t\t\t\"America/Panama|America/Coral_Harbour\",\n\t\t\t\"America/Panama|America/Jamaica\",\n\t\t\t\"America/Panama|EST\",\n\t\t\t\"America/Panama|Jamaica\",\n\t\t\t\"America/Phoenix|America/Creston\",\n\t\t\t\"America/Phoenix|America/Dawson_Creek\",\n\t\t\t\"America/Phoenix|America/Hermosillo\",\n\t\t\t\"America/Phoenix|MST\",\n\t\t\t\"America/Phoenix|US/Arizona\",\n\t\t\t\"America/Santiago|Chile/Continental\",\n\t\t\t\"America/Santo_Domingo|America/Anguilla\",\n\t\t\t\"America/Santo_Domingo|America/Antigua\",\n\t\t\t\"America/Santo_Domingo|America/Aruba\",\n\t\t\t\"America/Santo_Domingo|America/Barbados\",\n\t\t\t\"America/Santo_Domingo|America/Blanc-Sablon\",\n\t\t\t\"America/Santo_Domingo|America/Curacao\",\n\t\t\t\"America/Santo_Domingo|America/Dominica\",\n\t\t\t\"America/Santo_Domingo|America/Grenada\",\n\t\t\t\"America/Santo_Domingo|America/Guadeloupe\",\n\t\t\t\"America/Santo_Domingo|America/Kralendijk\",\n\t\t\t\"America/Santo_Domingo|America/Lower_Princes\",\n\t\t\t\"America/Santo_Domingo|America/Marigot\",\n\t\t\t\"America/Santo_Domingo|America/Martinique\",\n\t\t\t\"America/Santo_Domingo|America/Montserrat\",\n\t\t\t\"America/Santo_Domingo|America/Port_of_Spain\",\n\t\t\t\"America/Santo_Domingo|America/Puerto_Rico\",\n\t\t\t\"America/Santo_Domingo|America/St_Barthelemy\",\n\t\t\t\"America/Santo_Domingo|America/St_Kitts\",\n\t\t\t\"America/Santo_Domingo|America/St_Lucia\",\n\t\t\t\"America/Santo_Domingo|America/St_Thomas\",\n\t\t\t\"America/Santo_Domingo|America/St_Vincent\",\n\t\t\t\"America/Santo_Domingo|America/Tortola\",\n\t\t\t\"America/Santo_Domingo|America/Virgin\",\n\t\t\t\"America/Sao_Paulo|Brazil/East\",\n\t\t\t\"America/St_Johns|Canada/Newfoundland\",\n\t\t\t\"Antarctica/Palmer|America/Punta_Arenas\",\n\t\t\t\"Asia/Baghdad|Antarctica/Syowa\",\n\t\t\t\"Asia/Baghdad|Asia/Aden\",\n\t\t\t\"Asia/Baghdad|Asia/Bahrain\",\n\t\t\t\"Asia/Baghdad|Asia/Kuwait\",\n\t\t\t\"Asia/Baghdad|Asia/Qatar\",\n\t\t\t\"Asia/Baghdad|Asia/Riyadh\",\n\t\t\t\"Asia/Baghdad|Etc/GMT-3\",\n\t\t\t\"Asia/Baghdad|Europe/Kirov\",\n\t\t\t\"Asia/Baghdad|Europe/Minsk\",\n\t\t\t\"Asia/Bangkok|Antarctica/Davis\",\n\t\t\t\"Asia/Bangkok|Asia/Ho_Chi_Minh\",\n\t\t\t\"Asia/Bangkok|Asia/Krasnoyarsk\",\n\t\t\t\"Asia/Bangkok|Asia/Novokuznetsk\",\n\t\t\t\"Asia/Bangkok|Asia/Phnom_Penh\",\n\t\t\t\"Asia/Bangkok|Asia/Saigon\",\n\t\t\t\"Asia/Bangkok|Asia/Vientiane\",\n\t\t\t\"Asia/Bangkok|Etc/GMT-7\",\n\t\t\t\"Asia/Bangkok|Indian/Christmas\",\n\t\t\t\"Asia/Dhaka|Antarctica/Vostok\",\n\t\t\t\"Asia/Dhaka|Asia/Almaty\",\n\t\t\t\"Asia/Dhaka|Asia/Bishkek\",\n\t\t\t\"Asia/Dhaka|Asia/Dacca\",\n\t\t\t\"Asia/Dhaka|Asia/Kashgar\",\n\t\t\t\"Asia/Dhaka|Asia/Omsk\",\n\t\t\t\"Asia/Dhaka|Asia/Qostanay\",\n\t\t\t\"Asia/Dhaka|Asia/Thimbu\",\n\t\t\t\"Asia/Dhaka|Asia/Thimphu\",\n\t\t\t\"Asia/Dhaka|Asia/Urumqi\",\n\t\t\t\"Asia/Dhaka|Etc/GMT-6\",\n\t\t\t\"Asia/Dhaka|Indian/Chagos\",\n\t\t\t\"Asia/Dubai|Asia/Muscat\",\n\t\t\t\"Asia/Dubai|Asia/Tbilisi\",\n\t\t\t\"Asia/Dubai|Asia/Yerevan\",\n\t\t\t\"Asia/Dubai|Etc/GMT-4\",\n\t\t\t\"Asia/Dubai|Europe/Samara\",\n\t\t\t\"Asia/Dubai|Indian/Mahe\",\n\t\t\t\"Asia/Dubai|Indian/Mauritius\",\n\t\t\t\"Asia/Dubai|Indian/Reunion\",\n\t\t\t\"Asia/Gaza|Asia/Hebron\",\n\t\t\t\"Asia/Hong_Kong|Hongkong\",\n\t\t\t\"Asia/Jakarta|Asia/Pontianak\",\n\t\t\t\"Asia/Jerusalem|Asia/Tel_Aviv\",\n\t\t\t\"Asia/Jerusalem|Israel\",\n\t\t\t\"Asia/Kamchatka|Asia/Anadyr\",\n\t\t\t\"Asia/Kamchatka|Etc/GMT-12\",\n\t\t\t\"Asia/Kamchatka|Kwajalein\",\n\t\t\t\"Asia/Kamchatka|Pacific/Funafuti\",\n\t\t\t\"Asia/Kamchatka|Pacific/Kwajalein\",\n\t\t\t\"Asia/Kamchatka|Pacific/Majuro\",\n\t\t\t\"Asia/Kamchatka|Pacific/Nauru\",\n\t\t\t\"Asia/Kamchatka|Pacific/Tarawa\",\n\t\t\t\"Asia/Kamchatka|Pacific/Wake\",\n\t\t\t\"Asia/Kamchatka|Pacific/Wallis\",\n\t\t\t\"Asia/Kathmandu|Asia/Katmandu\",\n\t\t\t\"Asia/Kolkata|Asia/Calcutta\",\n\t\t\t\"Asia/Kuala_Lumpur|Asia/Brunei\",\n\t\t\t\"Asia/Kuala_Lumpur|Asia/Irkutsk\",\n\t\t\t\"Asia/Kuala_Lumpur|Asia/Kuching\",\n\t\t\t\"Asia/Kuala_Lumpur|Asia/Singapore\",\n\t\t\t\"Asia/Kuala_Lumpur|Etc/GMT-8\",\n\t\t\t\"Asia/Kuala_Lumpur|Singapore\",\n\t\t\t\"Asia/Makassar|Asia/Ujung_Pandang\",\n\t\t\t\"Asia/Rangoon|Asia/Yangon\",\n\t\t\t\"Asia/Rangoon|Indian/Cocos\",\n\t\t\t\"Asia/Seoul|ROK\",\n\t\t\t\"Asia/Shanghai|Asia/Chongqing\",\n\t\t\t\"Asia/Shanghai|Asia/Chungking\",\n\t\t\t\"Asia/Shanghai|Asia/Harbin\",\n\t\t\t\"Asia/Shanghai|Asia/Macao\",\n\t\t\t\"Asia/Shanghai|Asia/Macau\",\n\t\t\t\"Asia/Shanghai|Asia/Taipei\",\n\t\t\t\"Asia/Shanghai|PRC\",\n\t\t\t\"Asia/Shanghai|ROC\",\n\t\t\t\"Asia/Tashkent|Antarctica/Mawson\",\n\t\t\t\"Asia/Tashkent|Asia/Aqtau\",\n\t\t\t\"Asia/Tashkent|Asia/Aqtobe\",\n\t\t\t\"Asia/Tashkent|Asia/Ashgabat\",\n\t\t\t\"Asia/Tashkent|Asia/Ashkhabad\",\n\t\t\t\"Asia/Tashkent|Asia/Atyrau\",\n\t\t\t\"Asia/Tashkent|Asia/Dushanbe\",\n\t\t\t\"Asia/Tashkent|Asia/Oral\",\n\t\t\t\"Asia/Tashkent|Asia/Samarkand\",\n\t\t\t\"Asia/Tashkent|Asia/Yekaterinburg\",\n\t\t\t\"Asia/Tashkent|Etc/GMT-5\",\n\t\t\t\"Asia/Tashkent|Indian/Kerguelen\",\n\t\t\t\"Asia/Tashkent|Indian/Maldives\",\n\t\t\t\"Asia/Tehran|Iran\",\n\t\t\t\"Asia/Tokyo|Japan\",\n\t\t\t\"Asia/Ulaanbaatar|Asia/Choibalsan\",\n\t\t\t\"Asia/Ulaanbaatar|Asia/Ulan_Bator\",\n\t\t\t\"Asia/Vladivostok|Antarctica/DumontDUrville\",\n\t\t\t\"Asia/Vladivostok|Asia/Ust-Nera\",\n\t\t\t\"Asia/Vladivostok|Etc/GMT-10\",\n\t\t\t\"Asia/Vladivostok|Pacific/Chuuk\",\n\t\t\t\"Asia/Vladivostok|Pacific/Port_Moresby\",\n\t\t\t\"Asia/Vladivostok|Pacific/Truk\",\n\t\t\t\"Asia/Vladivostok|Pacific/Yap\",\n\t\t\t\"Asia/Yakutsk|Asia/Dili\",\n\t\t\t\"Asia/Yakutsk|Asia/Khandyga\",\n\t\t\t\"Asia/Yakutsk|Etc/GMT-9\",\n\t\t\t\"Asia/Yakutsk|Pacific/Palau\",\n\t\t\t\"Atlantic/Azores|America/Scoresbysund\",\n\t\t\t\"Atlantic/Cape_Verde|Etc/GMT+1\",\n\t\t\t\"Australia/Adelaide|Australia/Broken_Hill\",\n\t\t\t\"Australia/Adelaide|Australia/South\",\n\t\t\t\"Australia/Adelaide|Australia/Yancowinna\",\n\t\t\t\"Australia/Brisbane|Australia/Lindeman\",\n\t\t\t\"Australia/Brisbane|Australia/Queensland\",\n\t\t\t\"Australia/Darwin|Australia/North\",\n\t\t\t\"Australia/Lord_Howe|Australia/LHI\",\n\t\t\t\"Australia/Perth|Australia/West\",\n\t\t\t\"Australia/Sydney|Australia/ACT\",\n\t\t\t\"Australia/Sydney|Australia/Canberra\",\n\t\t\t\"Australia/Sydney|Australia/Currie\",\n\t\t\t\"Australia/Sydney|Australia/Hobart\",\n\t\t\t\"Australia/Sydney|Australia/Melbourne\",\n\t\t\t\"Australia/Sydney|Australia/NSW\",\n\t\t\t\"Australia/Sydney|Australia/Tasmania\",\n\t\t\t\"Australia/Sydney|Australia/Victoria\",\n\t\t\t\"Etc/UTC|Etc/UCT\",\n\t\t\t\"Etc/UTC|Etc/Universal\",\n\t\t\t\"Etc/UTC|Etc/Zulu\",\n\t\t\t\"Etc/UTC|UCT\",\n\t\t\t\"Etc/UTC|UTC\",\n\t\t\t\"Etc/UTC|Universal\",\n\t\t\t\"Etc/UTC|Zulu\",\n\t\t\t\"Europe/Athens|Asia/Nicosia\",\n\t\t\t\"Europe/Athens|EET\",\n\t\t\t\"Europe/Athens|Europe/Bucharest\",\n\t\t\t\"Europe/Athens|Europe/Helsinki\",\n\t\t\t\"Europe/Athens|Europe/Kiev\",\n\t\t\t\"Europe/Athens|Europe/Mariehamn\",\n\t\t\t\"Europe/Athens|Europe/Nicosia\",\n\t\t\t\"Europe/Athens|Europe/Riga\",\n\t\t\t\"Europe/Athens|Europe/Sofia\",\n\t\t\t\"Europe/Athens|Europe/Tallinn\",\n\t\t\t\"Europe/Athens|Europe/Uzhgorod\",\n\t\t\t\"Europe/Athens|Europe/Vilnius\",\n\t\t\t\"Europe/Athens|Europe/Zaporozhye\",\n\t\t\t\"Europe/Chisinau|Europe/Tiraspol\",\n\t\t\t\"Europe/Dublin|Eire\",\n\t\t\t\"Europe/Istanbul|Asia/Istanbul\",\n\t\t\t\"Europe/Istanbul|Turkey\",\n\t\t\t\"Europe/Lisbon|Atlantic/Canary\",\n\t\t\t\"Europe/Lisbon|Atlantic/Faeroe\",\n\t\t\t\"Europe/Lisbon|Atlantic/Faroe\",\n\t\t\t\"Europe/Lisbon|Atlantic/Madeira\",\n\t\t\t\"Europe/Lisbon|Portugal\",\n\t\t\t\"Europe/Lisbon|WET\",\n\t\t\t\"Europe/London|Europe/Belfast\",\n\t\t\t\"Europe/London|Europe/Guernsey\",\n\t\t\t\"Europe/London|Europe/Isle_of_Man\",\n\t\t\t\"Europe/London|Europe/Jersey\",\n\t\t\t\"Europe/London|GB\",\n\t\t\t\"Europe/London|GB-Eire\",\n\t\t\t\"Europe/Moscow|Europe/Simferopol\",\n\t\t\t\"Europe/Moscow|W-SU\",\n\t\t\t\"Europe/Paris|Africa/Ceuta\",\n\t\t\t\"Europe/Paris|Arctic/Longyearbyen\",\n\t\t\t\"Europe/Paris|Atlantic/Jan_Mayen\",\n\t\t\t\"Europe/Paris|CET\",\n\t\t\t\"Europe/Paris|Europe/Amsterdam\",\n\t\t\t\"Europe/Paris|Europe/Andorra\",\n\t\t\t\"Europe/Paris|Europe/Belgrade\",\n\t\t\t\"Europe/Paris|Europe/Berlin\",\n\t\t\t\"Europe/Paris|Europe/Bratislava\",\n\t\t\t\"Europe/Paris|Europe/Brussels\",\n\t\t\t\"Europe/Paris|Europe/Budapest\",\n\t\t\t\"Europe/Paris|Europe/Busingen\",\n\t\t\t\"Europe/Paris|Europe/Copenhagen\",\n\t\t\t\"Europe/Paris|Europe/Gibraltar\",\n\t\t\t\"Europe/Paris|Europe/Ljubljana\",\n\t\t\t\"Europe/Paris|Europe/Luxembourg\",\n\t\t\t\"Europe/Paris|Europe/Madrid\",\n\t\t\t\"Europe/Paris|Europe/Malta\",\n\t\t\t\"Europe/Paris|Europe/Monaco\",\n\t\t\t\"Europe/Paris|Europe/Oslo\",\n\t\t\t\"Europe/Paris|Europe/Podgorica\",\n\t\t\t\"Europe/Paris|Europe/Prague\",\n\t\t\t\"Europe/Paris|Europe/Rome\",\n\t\t\t\"Europe/Paris|Europe/San_Marino\",\n\t\t\t\"Europe/Paris|Europe/Sarajevo\",\n\t\t\t\"Europe/Paris|Europe/Skopje\",\n\t\t\t\"Europe/Paris|Europe/Stockholm\",\n\t\t\t\"Europe/Paris|Europe/Tirane\",\n\t\t\t\"Europe/Paris|Europe/Vaduz\",\n\t\t\t\"Europe/Paris|Europe/Vatican\",\n\t\t\t\"Europe/Paris|Europe/Vienna\",\n\t\t\t\"Europe/Paris|Europe/Warsaw\",\n\t\t\t\"Europe/Paris|Europe/Zagreb\",\n\t\t\t\"Europe/Paris|Europe/Zurich\",\n\t\t\t\"Europe/Paris|Poland\",\n\t\t\t\"Europe/Ulyanovsk|Europe/Astrakhan\",\n\t\t\t\"Pacific/Auckland|Antarctica/McMurdo\",\n\t\t\t\"Pacific/Auckland|Antarctica/South_Pole\",\n\t\t\t\"Pacific/Auckland|NZ\",\n\t\t\t\"Pacific/Bougainville|Antarctica/Macquarie\",\n\t\t\t\"Pacific/Bougainville|Asia/Srednekolymsk\",\n\t\t\t\"Pacific/Bougainville|Etc/GMT-11\",\n\t\t\t\"Pacific/Bougainville|Pacific/Efate\",\n\t\t\t\"Pacific/Bougainville|Pacific/Guadalcanal\",\n\t\t\t\"Pacific/Bougainville|Pacific/Kosrae\",\n\t\t\t\"Pacific/Bougainville|Pacific/Noumea\",\n\t\t\t\"Pacific/Bougainville|Pacific/Pohnpei\",\n\t\t\t\"Pacific/Bougainville|Pacific/Ponape\",\n\t\t\t\"Pacific/Chatham|NZ-CHAT\",\n\t\t\t\"Pacific/Easter|Chile/EasterIsland\",\n\t\t\t\"Pacific/Fakaofo|Etc/GMT-13\",\n\t\t\t\"Pacific/Fakaofo|Pacific/Enderbury\",\n\t\t\t\"Pacific/Galapagos|Etc/GMT+6\",\n\t\t\t\"Pacific/Gambier|Etc/GMT+9\",\n\t\t\t\"Pacific/Guam|Pacific/Saipan\",\n\t\t\t\"Pacific/Honolulu|HST\",\n\t\t\t\"Pacific/Honolulu|Pacific/Johnston\",\n\t\t\t\"Pacific/Honolulu|US/Hawaii\",\n\t\t\t\"Pacific/Kiritimati|Etc/GMT-14\",\n\t\t\t\"Pacific/Niue|Etc/GMT+11\",\n\t\t\t\"Pacific/Pago_Pago|Pacific/Midway\",\n\t\t\t\"Pacific/Pago_Pago|Pacific/Samoa\",\n\t\t\t\"Pacific/Pago_Pago|US/Samoa\",\n\t\t\t\"Pacific/Pitcairn|Etc/GMT+8\",\n\t\t\t\"Pacific/Tahiti|Etc/GMT+10\",\n\t\t\t\"Pacific/Tahiti|Pacific/Rarotonga\"\n\t\t],\n\t\t\"countries\": [\n\t\t\t\"AD|Europe/Andorra\",\n\t\t\t\"AE|Asia/Dubai\",\n\t\t\t\"AF|Asia/Kabul\",\n\t\t\t\"AG|America/Port_of_Spain America/Antigua\",\n\t\t\t\"AI|America/Port_of_Spain America/Anguilla\",\n\t\t\t\"AL|Europe/Tirane\",\n\t\t\t\"AM|Asia/Yerevan\",\n\t\t\t\"AO|Africa/Lagos Africa/Luanda\",\n\t\t\t\"AQ|Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Pacific/Auckland Antarctica/McMurdo\",\n\t\t\t\"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia\",\n\t\t\t\"AS|Pacific/Pago_Pago\",\n\t\t\t\"AT|Europe/Vienna\",\n\t\t\t\"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Currie Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla\",\n\t\t\t\"AW|America/Curacao America/Aruba\",\n\t\t\t\"AX|Europe/Helsinki Europe/Mariehamn\",\n\t\t\t\"AZ|Asia/Baku\",\n\t\t\t\"BA|Europe/Belgrade Europe/Sarajevo\",\n\t\t\t\"BB|America/Barbados\",\n\t\t\t\"BD|Asia/Dhaka\",\n\t\t\t\"BE|Europe/Brussels\",\n\t\t\t\"BF|Africa/Abidjan Africa/Ouagadougou\",\n\t\t\t\"BG|Europe/Sofia\",\n\t\t\t\"BH|Asia/Qatar Asia/Bahrain\",\n\t\t\t\"BI|Africa/Maputo Africa/Bujumbura\",\n\t\t\t\"BJ|Africa/Lagos Africa/Porto-Novo\",\n\t\t\t\"BL|America/Port_of_Spain America/St_Barthelemy\",\n\t\t\t\"BM|Atlantic/Bermuda\",\n\t\t\t\"BN|Asia/Brunei\",\n\t\t\t\"BO|America/La_Paz\",\n\t\t\t\"BQ|America/Curacao America/Kralendijk\",\n\t\t\t\"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco\",\n\t\t\t\"BS|America/Nassau\",\n\t\t\t\"BT|Asia/Thimphu\",\n\t\t\t\"BW|Africa/Maputo Africa/Gaborone\",\n\t\t\t\"BY|Europe/Minsk\",\n\t\t\t\"BZ|America/Belize\",\n\t\t\t\"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Vancouver America/Whitehorse America/Dawson\",\n\t\t\t\"CC|Indian/Cocos\",\n\t\t\t\"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi\",\n\t\t\t\"CF|Africa/Lagos Africa/Bangui\",\n\t\t\t\"CG|Africa/Lagos Africa/Brazzaville\",\n\t\t\t\"CH|Europe/Zurich\",\n\t\t\t\"CI|Africa/Abidjan\",\n\t\t\t\"CK|Pacific/Rarotonga\",\n\t\t\t\"CL|America/Santiago America/Punta_Arenas Pacific/Easter\",\n\t\t\t\"CM|Africa/Lagos Africa/Douala\",\n\t\t\t\"CN|Asia/Shanghai Asia/Urumqi\",\n\t\t\t\"CO|America/Bogota\",\n\t\t\t\"CR|America/Costa_Rica\",\n\t\t\t\"CU|America/Havana\",\n\t\t\t\"CV|Atlantic/Cape_Verde\",\n\t\t\t\"CW|America/Curacao\",\n\t\t\t\"CX|Indian/Christmas\",\n\t\t\t\"CY|Asia/Nicosia Asia/Famagusta\",\n\t\t\t\"CZ|Europe/Prague\",\n\t\t\t\"DE|Europe/Zurich Europe/Berlin Europe/Busingen\",\n\t\t\t\"DJ|Africa/Nairobi Africa/Djibouti\",\n\t\t\t\"DK|Europe/Copenhagen\",\n\t\t\t\"DM|America/Port_of_Spain America/Dominica\",\n\t\t\t\"DO|America/Santo_Domingo\",\n\t\t\t\"DZ|Africa/Algiers\",\n\t\t\t\"EC|America/Guayaquil Pacific/Galapagos\",\n\t\t\t\"EE|Europe/Tallinn\",\n\t\t\t\"EG|Africa/Cairo\",\n\t\t\t\"EH|Africa/El_Aaiun\",\n\t\t\t\"ER|Africa/Nairobi Africa/Asmara\",\n\t\t\t\"ES|Europe/Madrid Africa/Ceuta Atlantic/Canary\",\n\t\t\t\"ET|Africa/Nairobi Africa/Addis_Ababa\",\n\t\t\t\"FI|Europe/Helsinki\",\n\t\t\t\"FJ|Pacific/Fiji\",\n\t\t\t\"FK|Atlantic/Stanley\",\n\t\t\t\"FM|Pacific/Chuuk Pacific/Pohnpei Pacific/Kosrae\",\n\t\t\t\"FO|Atlantic/Faroe\",\n\t\t\t\"FR|Europe/Paris\",\n\t\t\t\"GA|Africa/Lagos Africa/Libreville\",\n\t\t\t\"GB|Europe/London\",\n\t\t\t\"GD|America/Port_of_Spain America/Grenada\",\n\t\t\t\"GE|Asia/Tbilisi\",\n\t\t\t\"GF|America/Cayenne\",\n\t\t\t\"GG|Europe/London Europe/Guernsey\",\n\t\t\t\"GH|Africa/Accra\",\n\t\t\t\"GI|Europe/Gibraltar\",\n\t\t\t\"GL|America/Godthab America/Danmarkshavn America/Scoresbysund America/Thule\",\n\t\t\t\"GM|Africa/Abidjan Africa/Banjul\",\n\t\t\t\"GN|Africa/Abidjan Africa/Conakry\",\n\t\t\t\"GP|America/Port_of_Spain America/Guadeloupe\",\n\t\t\t\"GQ|Africa/Lagos Africa/Malabo\",\n\t\t\t\"GR|Europe/Athens\",\n\t\t\t\"GS|Atlantic/South_Georgia\",\n\t\t\t\"GT|America/Guatemala\",\n\t\t\t\"GU|Pacific/Guam\",\n\t\t\t\"GW|Africa/Bissau\",\n\t\t\t\"GY|America/Guyana\",\n\t\t\t\"HK|Asia/Hong_Kong\",\n\t\t\t\"HN|America/Tegucigalpa\",\n\t\t\t\"HR|Europe/Belgrade Europe/Zagreb\",\n\t\t\t\"HT|America/Port-au-Prince\",\n\t\t\t\"HU|Europe/Budapest\",\n\t\t\t\"ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura\",\n\t\t\t\"IE|Europe/Dublin\",\n\t\t\t\"IL|Asia/Jerusalem\",\n\t\t\t\"IM|Europe/London Europe/Isle_of_Man\",\n\t\t\t\"IN|Asia/Kolkata\",\n\t\t\t\"IO|Indian/Chagos\",\n\t\t\t\"IQ|Asia/Baghdad\",\n\t\t\t\"IR|Asia/Tehran\",\n\t\t\t\"IS|Atlantic/Reykjavik\",\n\t\t\t\"IT|Europe/Rome\",\n\t\t\t\"JE|Europe/London Europe/Jersey\",\n\t\t\t\"JM|America/Jamaica\",\n\t\t\t\"JO|Asia/Amman\",\n\t\t\t\"JP|Asia/Tokyo\",\n\t\t\t\"KE|Africa/Nairobi\",\n\t\t\t\"KG|Asia/Bishkek\",\n\t\t\t\"KH|Asia/Bangkok Asia/Phnom_Penh\",\n\t\t\t\"KI|Pacific/Tarawa Pacific/Enderbury Pacific/Kiritimati\",\n\t\t\t\"KM|Africa/Nairobi Indian/Comoro\",\n\t\t\t\"KN|America/Port_of_Spain America/St_Kitts\",\n\t\t\t\"KP|Asia/Pyongyang\",\n\t\t\t\"KR|Asia/Seoul\",\n\t\t\t\"KW|Asia/Riyadh Asia/Kuwait\",\n\t\t\t\"KY|America/Panama America/Cayman\",\n\t\t\t\"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral\",\n\t\t\t\"LA|Asia/Bangkok Asia/Vientiane\",\n\t\t\t\"LB|Asia/Beirut\",\n\t\t\t\"LC|America/Port_of_Spain America/St_Lucia\",\n\t\t\t\"LI|Europe/Zurich Europe/Vaduz\",\n\t\t\t\"LK|Asia/Colombo\",\n\t\t\t\"LR|Africa/Monrovia\",\n\t\t\t\"LS|Africa/Johannesburg Africa/Maseru\",\n\t\t\t\"LT|Europe/Vilnius\",\n\t\t\t\"LU|Europe/Luxembourg\",\n\t\t\t\"LV|Europe/Riga\",\n\t\t\t\"LY|Africa/Tripoli\",\n\t\t\t\"MA|Africa/Casablanca\",\n\t\t\t\"MC|Europe/Monaco\",\n\t\t\t\"MD|Europe/Chisinau\",\n\t\t\t\"ME|Europe/Belgrade Europe/Podgorica\",\n\t\t\t\"MF|America/Port_of_Spain America/Marigot\",\n\t\t\t\"MG|Africa/Nairobi Indian/Antananarivo\",\n\t\t\t\"MH|Pacific/Majuro Pacific/Kwajalein\",\n\t\t\t\"MK|Europe/Belgrade Europe/Skopje\",\n\t\t\t\"ML|Africa/Abidjan Africa/Bamako\",\n\t\t\t\"MM|Asia/Yangon\",\n\t\t\t\"MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan\",\n\t\t\t\"MO|Asia/Macau\",\n\t\t\t\"MP|Pacific/Guam Pacific/Saipan\",\n\t\t\t\"MQ|America/Martinique\",\n\t\t\t\"MR|Africa/Abidjan Africa/Nouakchott\",\n\t\t\t\"MS|America/Port_of_Spain America/Montserrat\",\n\t\t\t\"MT|Europe/Malta\",\n\t\t\t\"MU|Indian/Mauritius\",\n\t\t\t\"MV|Indian/Maldives\",\n\t\t\t\"MW|Africa/Maputo Africa/Blantyre\",\n\t\t\t\"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Mazatlan America/Chihuahua America/Ojinaga America/Hermosillo America/Tijuana America/Bahia_Banderas\",\n\t\t\t\"MY|Asia/Kuala_Lumpur Asia/Kuching\",\n\t\t\t\"MZ|Africa/Maputo\",\n\t\t\t\"NA|Africa/Windhoek\",\n\t\t\t\"NC|Pacific/Noumea\",\n\t\t\t\"NE|Africa/Lagos Africa/Niamey\",\n\t\t\t\"NF|Pacific/Norfolk\",\n\t\t\t\"NG|Africa/Lagos\",\n\t\t\t\"NI|America/Managua\",\n\t\t\t\"NL|Europe/Amsterdam\",\n\t\t\t\"NO|Europe/Oslo\",\n\t\t\t\"NP|Asia/Kathmandu\",\n\t\t\t\"NR|Pacific/Nauru\",\n\t\t\t\"NU|Pacific/Niue\",\n\t\t\t\"NZ|Pacific/Auckland Pacific/Chatham\",\n\t\t\t\"OM|Asia/Dubai Asia/Muscat\",\n\t\t\t\"PA|America/Panama\",\n\t\t\t\"PE|America/Lima\",\n\t\t\t\"PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier\",\n\t\t\t\"PG|Pacific/Port_Moresby Pacific/Bougainville\",\n\t\t\t\"PH|Asia/Manila\",\n\t\t\t\"PK|Asia/Karachi\",\n\t\t\t\"PL|Europe/Warsaw\",\n\t\t\t\"PM|America/Miquelon\",\n\t\t\t\"PN|Pacific/Pitcairn\",\n\t\t\t\"PR|America/Puerto_Rico\",\n\t\t\t\"PS|Asia/Gaza Asia/Hebron\",\n\t\t\t\"PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores\",\n\t\t\t\"PW|Pacific/Palau\",\n\t\t\t\"PY|America/Asuncion\",\n\t\t\t\"QA|Asia/Qatar\",\n\t\t\t\"RE|Indian/Reunion\",\n\t\t\t\"RO|Europe/Bucharest\",\n\t\t\t\"RS|Europe/Belgrade\",\n\t\t\t\"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Astrakhan Europe/Volgograd Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr\",\n\t\t\t\"RW|Africa/Maputo Africa/Kigali\",\n\t\t\t\"SA|Asia/Riyadh\",\n\t\t\t\"SB|Pacific/Guadalcanal\",\n\t\t\t\"SC|Indian/Mahe\",\n\t\t\t\"SD|Africa/Khartoum\",\n\t\t\t\"SE|Europe/Stockholm\",\n\t\t\t\"SG|Asia/Singapore\",\n\t\t\t\"SH|Africa/Abidjan Atlantic/St_Helena\",\n\t\t\t\"SI|Europe/Belgrade Europe/Ljubljana\",\n\t\t\t\"SJ|Europe/Oslo Arctic/Longyearbyen\",\n\t\t\t\"SK|Europe/Prague Europe/Bratislava\",\n\t\t\t\"SL|Africa/Abidjan Africa/Freetown\",\n\t\t\t\"SM|Europe/Rome Europe/San_Marino\",\n\t\t\t\"SN|Africa/Abidjan Africa/Dakar\",\n\t\t\t\"SO|Africa/Nairobi Africa/Mogadishu\",\n\t\t\t\"SR|America/Paramaribo\",\n\t\t\t\"SS|Africa/Juba\",\n\t\t\t\"ST|Africa/Sao_Tome\",\n\t\t\t\"SV|America/El_Salvador\",\n\t\t\t\"SX|America/Curacao America/Lower_Princes\",\n\t\t\t\"SY|Asia/Damascus\",\n\t\t\t\"SZ|Africa/Johannesburg Africa/Mbabane\",\n\t\t\t\"TC|America/Grand_Turk\",\n\t\t\t\"TD|Africa/Ndjamena\",\n\t\t\t\"TF|Indian/Reunion Indian/Kerguelen\",\n\t\t\t\"TG|Africa/Abidjan Africa/Lome\",\n\t\t\t\"TH|Asia/Bangkok\",\n\t\t\t\"TJ|Asia/Dushanbe\",\n\t\t\t\"TK|Pacific/Fakaofo\",\n\t\t\t\"TL|Asia/Dili\",\n\t\t\t\"TM|Asia/Ashgabat\",\n\t\t\t\"TN|Africa/Tunis\",\n\t\t\t\"TO|Pacific/Tongatapu\",\n\t\t\t\"TR|Europe/Istanbul\",\n\t\t\t\"TT|America/Port_of_Spain\",\n\t\t\t\"TV|Pacific/Funafuti\",\n\t\t\t\"TW|Asia/Taipei\",\n\t\t\t\"TZ|Africa/Nairobi Africa/Dar_es_Salaam\",\n\t\t\t\"UA|Europe/Simferopol Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye\",\n\t\t\t\"UG|Africa/Nairobi Africa/Kampala\",\n\t\t\t\"UM|Pacific/Pago_Pago Pacific/Wake Pacific/Honolulu Pacific/Midway\",\n\t\t\t\"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu\",\n\t\t\t\"UY|America/Montevideo\",\n\t\t\t\"UZ|Asia/Samarkand Asia/Tashkent\",\n\t\t\t\"VA|Europe/Rome Europe/Vatican\",\n\t\t\t\"VC|America/Port_of_Spain America/St_Vincent\",\n\t\t\t\"VE|America/Caracas\",\n\t\t\t\"VG|America/Port_of_Spain America/Tortola\",\n\t\t\t\"VI|America/Port_of_Spain America/St_Thomas\",\n\t\t\t\"VN|Asia/Bangkok Asia/Ho_Chi_Minh\",\n\t\t\t\"VU|Pacific/Efate\",\n\t\t\t\"WF|Pacific/Wallis\",\n\t\t\t\"WS|Pacific/Apia\",\n\t\t\t\"YE|Asia/Riyadh Asia/Aden\",\n\t\t\t\"YT|Africa/Nairobi Indian/Mayotte\",\n\t\t\t\"ZA|Africa/Johannesburg\",\n\t\t\t\"ZM|Africa/Maputo Africa/Lusaka\",\n\t\t\t\"ZW|Africa/Maputo Africa/Harare\"\n\t\t]\n\t});\n\n\n\treturn moment;\n}));\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/moment-timezone/moment-timezone-with-data-1970-2030.js",
    "content": "//! moment-timezone.js\n//! version : 0.5.28\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory);                 // AMD\n\t} else {\n\t\tfactory(root.moment);                        // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.28\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils  = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname       : data[0],\n\t\t\tabbrs      : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets    : mapIndices(offsets, indices),\n\t\t\tuntils     : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name       = unpacked.name;\n\t\t\tthis.abbrs      = unpacked.abbrs;\n\t\t\tthis.untils     = unpacked.untils;\n\t\t\tthis.offsets    = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target  = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils  = this.untils,\n\t\t\t\tmax     = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset     = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout  = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version      = VERSION;\n\ttz.dataVersion  = '';\n\ttz._zones       = zones;\n\ttz._links       = links;\n\ttz._names       = names;\n\ttz._countries\t= countries;\n\ttz.add          = addZone;\n\ttz.link         = addLink;\n\ttz.load         = loadData;\n\ttz.zone         = getZone;\n\ttz.zoneExists   = zoneExists; // deprecated in 0.1.0\n\ttz.guess        = guess;\n\ttz.names        = getNames;\n\ttz.Zone         = Zone;\n\ttz.unpack       = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset  = needsOffset;\n\ttz.moveInvalidForward   = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries    = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName  = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr  = abbrWrap(fn.zoneAbbr);\n\tfn.utc       = resetZoneWrap(fn.utc);\n\tfn.local     = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\tloadData({\n\t\t\"version\": \"2019c\",\n\t\t\"zones\": [\n\t\t\t\"Africa/Abidjan|GMT|0|0||48e5\",\n\t\t\t\"Africa/Nairobi|EAT|-30|0||47e5\",\n\t\t\t\"Africa/Algiers|WET WEST CET CEST|0 -10 -10 -20|01012320102|3bX0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5\",\n\t\t\t\"Africa/Lagos|WAT|-10|0||17e6\",\n\t\t\t\"Africa/Bissau|-01 GMT|10 0|01|cap0|39e4\",\n\t\t\t\"Africa/Maputo|CAT|-20|0||26e5\",\n\t\t\t\"Africa/Cairo|EET EEST|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|LX0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6\",\n\t\t\t\"Africa/Casablanca|+00 +01|0 -10|01010101010101010101010101010101010101010101010101010101010101010101010|aS00 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600|32e5\",\n\t\t\t\"Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|0101010102323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|aS00 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|85e3\",\n\t\t\t\"Africa/El_Aaiun|-01 +00 +01|10 0 -10|01212121212121212121212121212121212121212121212121212121212121212121|fi10 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600|20e4\",\n\t\t\t\"Africa/Johannesburg|SAST|-20|0||84e5\",\n\t\t\t\"Africa/Juba|CAT CAST EAT|-20 -30 -30|0101010101010101010101010101010102|LW0 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0|\",\n\t\t\t\"Africa/Khartoum|CAT CAST EAT|-20 -30 -30|01010101010101010101010101010101020|LW0 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5\",\n\t\t\t\"Africa/Monrovia|MMT GMT|I.u 0|01|4SoI.u|11e5\",\n\t\t\t\"Africa/Ndjamena|WAT WAST|-10 -20|010|nNb0 Wn0|13e5\",\n\t\t\t\"Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00|\",\n\t\t\t\"Africa/Tripoli|EET CET CEST|-20 -10 -20|0121212121212121210120120|tda0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5\",\n\t\t\t\"Africa/Tunis|CET CEST|-10 -20|0101010101010101010|hOn0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5\",\n\t\t\t\"Africa/Windhoek|SAST CAT WAT|-20 -20 -10|01212121212121212121212121212121212121212121212121|Ndy0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4\",\n\t\t\t\"America/Adak|BST BDT AHST HST HDT|b0 a0 a0 a0 90|0101010101010101010101010101234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|Kd0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326\",\n\t\t\t\"America/Anchorage|AHST AHDT YST AKST AKDT|a0 90 90 90 80|0101010101010101010101010101234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|Kc0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4\",\n\t\t\t\"America/Puerto_Rico|AST|40|0||24e5\",\n\t\t\t\"America/Araguaina|-03 -02|30 20|01010101010101010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4\",\n\t\t\t\"America/Argentina/Buenos_Aires|-03 -02|30 20|01010101010101010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|\",\n\t\t\t\"America/Argentina/Catamarca|-03 -02 -04|30 20 40|01010101210102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|\",\n\t\t\t\"America/Argentina/Cordoba|-03 -02 -04|30 20 40|01010101210101010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|\",\n\t\t\t\"America/Argentina/Jujuy|-03 -02 -04|30 20 40|010101202101010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|\",\n\t\t\t\"America/Argentina/La_Rioja|-03 -02 -04|30 20 40|010101012010102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|\",\n\t\t\t\"America/Argentina/Mendoza|-03 -02 -04|30 20 40|01010120202102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|\",\n\t\t\t\"America/Argentina/Rio_Gallegos|-03 -02 -04|30 20 40|01010101010102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|\",\n\t\t\t\"America/Argentina/Salta|-03 -02 -04|30 20 40|010101012101010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|\",\n\t\t\t\"America/Argentina/San_Juan|-03 -02 -04|30 20 40|010101012010102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|\",\n\t\t\t\"America/Argentina/San_Luis|-03 -02 -04|30 20 40|010101202020102020|9Rf0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|\",\n\t\t\t\"America/Argentina/Tucuman|-03 -02 -04|30 20 40|0101010121010201010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|\",\n\t\t\t\"America/Argentina/Ushuaia|-03 -02 -04|30 20 40|01010101010102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|\",\n\t\t\t\"America/Asuncion|-04 -03|40 30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|6FE0 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0|28e5\",\n\t\t\t\"America/Panama|EST|50|0||15e5\",\n\t\t\t\"America/Bahia_Banderas|PST MST MDT CDT CST|80 70 60 50 60|012121212121212121212121212121343434343434343434343434343434343434343434|80 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0|84e3\",\n\t\t\t\"America/Bahia|-03 -02|30 20|010101010101010101010101010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5\",\n\t\t\t\"America/Barbados|AST ADT|40 30|010101010|i7G0 IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4\",\n\t\t\t\"America/Belem|-03 -02|30 20|0101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0|20e5\",\n\t\t\t\"America/Belize|CST CDT|60 50|01010|9xG0 qn0 lxB0 mn0|57e3\",\n\t\t\t\"America/Boa_Vista|-04 -03|40 30|01010101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2\",\n\t\t\t\"America/Bogota|-05 -04|50 40|010|Snh0 2en0|90e5\",\n\t\t\t\"America/Boise|MST MDT|70 60|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4\",\n\t\t\t\"America/Cambridge_Bay|MST MDT CST CDT EST|70 60 60 50 50|01010101010101010101010101010101010101012342101010101010101010101010101010101010101010101010101010101010|p7J0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2\",\n\t\t\t\"America/Campo_Grande|-04 -03|40 30|010101010101010101010101010101010101010101010101010101010101010101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4\",\n\t\t\t\"America/Cancun|CST EST EDT CDT|60 50 40 50|012121230303030303030303030303030303030301|t9G0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4\",\n\t\t\t\"America/Caracas|-04 -0430|40 4u|010|1wmv0 kqo0|29e5\",\n\t\t\t\"America/Cayenne|-03|30|0||58e3\",\n\t\t\t\"America/Chicago|CST CDT|60 50|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K80 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5\",\n\t\t\t\"America/Chihuahua|CST CDT MDT MST|60 50 60 70|01010232323232323232323232323232323232323232323232323232323232323232323|13Vk0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0|81e4\",\n\t\t\t\"America/Costa_Rica|CST CDT|60 50|010101010|mgS0 Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5\",\n\t\t\t\"America/Phoenix|MST|70|0||42e5\",\n\t\t\t\"America/Cuiaba|-04 -03|40 30|0101010101010101010101010101010101010101010101010101010101010101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4\",\n\t\t\t\"America/Danmarkshavn|-03 -02 GMT|30 20 0|0101010101010101010101010101010102|oXh0 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8\",\n\t\t\t\"America/Dawson_Creek|PST PDT MST|80 70 70|0101012|Ka0 1cL0 1cN0 1fz0 1cN0 ML0|12e3\",\n\t\t\t\"America/Dawson|YST PST PDT|90 80 70|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|9ix0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2\",\n\t\t\t\"America/Denver|MST MDT|70 60|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5\",\n\t\t\t\"America/Detroit|EST EDT|50 40|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|85H0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5\",\n\t\t\t\"America/Edmonton|MST MDT|70 60|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|5E90 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5\",\n\t\t\t\"America/Eirunepe|-05 -04|50 40|01010101010|CxF0 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3\",\n\t\t\t\"America/El_Salvador|CST CDT|60 50|01010|Gcu0 WL0 1qN0 WL0|11e5\",\n\t\t\t\"America/Tijuana|PST PDT|80 70|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|fmy0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5\",\n\t\t\t\"America/Fort_Nelson|PST PDT MST|80 70 70|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010102|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2\",\n\t\t\t\"America/Fort_Wayne|EST EDT|50 40|01010101010101010101010101010101010101010101010101010|K70 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Fortaleza|-03 -02|30 20|01010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5\",\n\t\t\t\"America/Glace_Bay|AST ADT|40 30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|5E60 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\n\t\t\t\"America/Godthab|-03 -02|30 20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXh0 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|17e3\",\n\t\t\t\"America/Goose_Bay|AST ADT ADDT|40 30 20|010101010101010101010101010101010101020101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K60 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2\",\n\t\t\t\"America/Grand_Turk|EST EDT AST|50 40 40|01010101010101010101010101010101010101010101010101010101010101010101010101210101010101010101010101010|mG70 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2\",\n\t\t\t\"America/Guatemala|CST CDT|60 50|010101010|9tG0 An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5\",\n\t\t\t\"America/Guayaquil|-05 -04|50 40|010|TKR0 rz0|27e5\",\n\t\t\t\"America/Guyana|-0345 -03 -04|3J 30 40|012|dyPJ Bxbf|80e4\",\n\t\t\t\"America/Halifax|AST ADT|40 30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K60 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4\",\n\t\t\t\"America/Havana|CST CDT|50 40|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K50 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5\",\n\t\t\t\"America/Hermosillo|PST MST MDT|80 70 60|01212121|80 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4\",\n\t\t\t\"America/Indiana/Knox|CST CDT EST|60 50 50|01010101010101010101010101010101010101010101210101010101010101010101010101010101010101010101010|K80 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Indiana/Marengo|EST EDT CDT|50 40 50|010101010201010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Indiana/Petersburg|CST CDT EST EDT|60 50 50 40|0101010101010101210123232323232323232323232323232323232323232323232|K80 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Indiana/Tell_City|EST EDT CDT CST|50 40 50 60|01023232323232323232323232323232323232323232323232323|K70 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Indiana/Vevay|EST EDT|50 40|010101010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Indiana/Vincennes|EST EDT CDT CST|50 40 50 60|01023201010101010101010101010101010101010101010101010|K70 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Indiana/Winamac|EST EDT CDT CST|50 40 50 60|01023101010101010101010101010101010101010101010101010|K70 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Inuvik|PST MST MDT|80 70 60|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|mGa0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2\",\n\t\t\t\"America/Iqaluit|EST EDT CST CDT|50 40 60 50|0101010101010101010101010101010101010101230101010101010101010101010101010101010101010101010101010101010|p7H0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2\",\n\t\t\t\"America/Jamaica|EST EDT|50 40|010101010101010101010|9Kv0 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4\",\n\t\t\t\"America/Juneau|PST PDT YDT YST AKST AKDT|80 70 80 90 90 80|0101010101010101010102010101345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3\",\n\t\t\t\"America/Kentucky/Louisville|EST EDT CDT|50 40 50|010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Kentucky/Monticello|CST CDT EST EDT|60 50 50 40|010101010101010101010101010101010101010101010101010101010101012323232323232323232323232323232323232323232323232323232323232|K80 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/La_Paz|-04|40|0||19e5\",\n\t\t\t\"America/Lima|-05 -04|50 40|010101010|CVF0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6\",\n\t\t\t\"America/Los_Angeles|PST PDT|80 70|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6\",\n\t\t\t\"America/Maceio|-03 -02|30 20|0101010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4\",\n\t\t\t\"America/Managua|CST EST CDT|60 50 50|010202010102020|86u0 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5\",\n\t\t\t\"America/Manaus|-04 -03|40 30|010101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5\",\n\t\t\t\"America/Martinique|AST ADT|40 30|010|oXg0 19X0|39e4\",\n\t\t\t\"America/Matamoros|CST CDT|60 50|0101010101010101010101010101010101010101010101010101010101010101010101010|IqU0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4\",\n\t\t\t\"America/Mazatlan|PST MST MDT|80 70 60|012121212121212121212121212121212121212121212121212121212121212121212121|80 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0|44e4\",\n\t\t\t\"America/Menominee|EST CDT CST|50 50 60|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|85H0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2\",\n\t\t\t\"America/Merida|CST EST CDT|60 50 50|0102020202020202020202020202020202020202020202020202020202020202020202020|t9G0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0|11e5\",\n\t\t\t\"America/Metlakatla|PST PDT AKST AKDT|80 70 90 80|0101010101010101010101010101023232302323232323232323232323232|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\n\t\t\t\"America/Mexico_City|CST CDT|60 50|01010101010101010101010101010101010101010101010101010101010101010101010|13Vk0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0|20e6\",\n\t\t\t\"America/Miquelon|AST -03 -02|40 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|p9g0 gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2\",\n\t\t\t\"America/Moncton|AST ADT|40 30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K60 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3\",\n\t\t\t\"America/Monterrey|CST CDT|60 50|0101010101010101010101010101010101010101010101010101010101010101010101010|IqU0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0|41e5\",\n\t\t\t\"America/Montevideo|-03 -02 -0130 -0230|30 20 1u 2u|0101023010101010101010101010101010101010101010101010|JD0 jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5\",\n\t\t\t\"America/Toronto|EST EDT|50 40|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5\",\n\t\t\t\"America/New_York|EST EDT|50 40|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6\",\n\t\t\t\"America/Nipigon|EST EDT|50 40|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|avj0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2\",\n\t\t\t\"America/Nome|BST BDT YST AKST AKDT|b0 a0 90 90 80|0101010101010101010101010101234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|Kd0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2\",\n\t\t\t\"America/Noronha|-02 -01|20 10|01010101010101010|CxC0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2\",\n\t\t\t\"America/North_Dakota/Beulah|MST MDT CST CDT|70 60 60 50|010101010101010101010101010101010101010101010101010101010101010101010101010101010123232323232323232323232323232323232323232|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/North_Dakota/Center|MST MDT CST CDT|70 60 60 50|010101010101010101010101010101010101010101010123232323232323232323232323232323232323232323232323232323232323232323232323232|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/North_Dakota/New_Salem|MST MDT CST CDT|70 60 60 50|010101010101010101010101010101010101010101010101010101010101010101012323232323232323232323232323232323232323232323232323232|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Ojinaga|CST CDT MDT MST|60 50 60 70|01010232323232323232323232323232323232323232323232323232323232323232323|13Vk0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\n\t\t\t\"America/Pangnirtung|AST ADT EDT EST CST CDT|40 30 40 50 60 50|0101010101010101010101010101010232323232453232323232323232323232323232323232323232323232323232323232323|p7G0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\n\t\t\t\"America/Paramaribo|-0330 -03|3u 30|01|zSPu|24e4\",\n\t\t\t\"America/Port-au-Prince|EST EDT|50 40|01010101010101010101010101010101010101010101010101010101010101010101010|wu50 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\n\t\t\t\"America/Rio_Branco|-05 -04|50 40|010101010|CxF0 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4\",\n\t\t\t\"America/Porto_Velho|-04 -03|40 30|0101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0|37e4\",\n\t\t\t\"America/Punta_Arenas|-03 -04|30 40|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|\",\n\t\t\t\"America/Rainy_River|CST CDT|60 50|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|avk0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842\",\n\t\t\t\"America/Rankin_Inlet|CST CDT EST|60 50 50|0101010101010101010101010101010101010101012101010101010101010101010101010101010101010101010101010101010|p7I0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2\",\n\t\t\t\"America/Recife|-03 -02|30 20|01010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5\",\n\t\t\t\"America/Regina|CST|60|0||19e4\",\n\t\t\t\"America/Resolute|CST CDT EST|60 50 50|0101010101010101010101010101010101010101012101010101012101010101010101010101010101010101010101010101010|p7I0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229\",\n\t\t\t\"America/Santarem|-04 -03|40 30|01010101|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4\",\n\t\t\t\"America/Santiago|-03 -04|30 40|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|62e5\",\n\t\t\t\"America/Santo_Domingo|-0430 EST AST|4u 50 40|0101010101212|ksu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5\",\n\t\t\t\"America/Sao_Paulo|-03 -02|30 20|010101010101010101010101010101010101010101010101010101010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6\",\n\t\t\t\"America/Scoresbysund|-02 -01 +00|20 10 0|0102121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|oXg0 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|452\",\n\t\t\t\"America/Sitka|PST PDT YST AKST AKDT|80 70 90 90 80|0101010101010101010101010101234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2\",\n\t\t\t\"America/St_Johns|NST NDT NDDT|3u 2u 1u|010101010101010101010101010101010101020101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K5u 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\n\t\t\t\"America/Swift_Current|MST CST|70 60|01|5E90|16e3\",\n\t\t\t\"America/Tegucigalpa|CST CDT|60 50|0101010|Gcu0 WL0 1qN0 WL0 GRd0 AL0|11e5\",\n\t\t\t\"America/Thule|AST ADT|40 30|010101010101010101010101010101010101010101010101010101010101010101010101010101010|PHG0 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656\",\n\t\t\t\"America/Thunder_Bay|EST EDT|50 40|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\n\t\t\t\"America/Vancouver|PST PDT|80 70|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\n\t\t\t\"America/Whitehorse|PST PDT|80 70|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|p7K0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\n\t\t\t\"America/Winnipeg|CST CDT|60 50|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K80 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4\",\n\t\t\t\"America/Yakutat|YST YDT AKST AKDT|90 80 90 80|0101010101010101010101010101023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|Kb0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642\",\n\t\t\t\"America/Yellowknife|MST MDT|70 60|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|p7J0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\n\t\t\t\"Antarctica/Casey|+08 +11|-80 -b0|0101010|1ARS0 T90 40P0 KL0 blz0 3m10|10\",\n\t\t\t\"Antarctica/Davis|+07 +05|-70 -50|01010|1ART0 VB0 3Wn0 KN0|70\",\n\t\t\t\"Pacific/Port_Moresby|+10|-a0|0||25e4\",\n\t\t\t\"Antarctica/Macquarie|AEDT AEST +11|-b0 -a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010102|qg0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1\",\n\t\t\t\"Antarctica/Mawson|+06 +05|-60 -50|01|1ARU0|60\",\n\t\t\t\"Pacific/Auckland|NZST NZDT|-c0 -d0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|bKC0 IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00|14e5\",\n\t\t\t\"Antarctica/Palmer|-03 -02 -04|30 20 40|01020202020202020202020202020202020202020202020202020202020202020202020|9Rf0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40\",\n\t\t\t\"Antarctica/Rothera|-00 -03|0 30|01|gOo0|130\",\n\t\t\t\"Asia/Riyadh|+03|-30|0||57e5\",\n\t\t\t\"Antarctica/Troll|-00 +00 +02|0 0 -20|012121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|40\",\n\t\t\t\"Asia/Urumqi|+06|-60|0||32e5\",\n\t\t\t\"Europe/Berlin|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXd0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|41e5\",\n\t\t\t\"Asia/Almaty|+06 +07 +05|-60 -70 -50|0101010101010101010102010101010101010101010101010|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5\",\n\t\t\t\"Asia/Amman|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|8kK0 KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|25e5\",\n\t\t\t\"Asia/Anadyr|+13 +14 +12 +11|-d0 -e0 -c0 -b0|010202020202020202023202020202020202020202020202020202020232|rmX0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3\",\n\t\t\t\"Asia/Aqtau|+05 +06 +04|-50 -60 -40|0101010101010101010201010120202020202020202020|sAj0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4\",\n\t\t\t\"Asia/Aqtobe|+05 +06 +04|-50 -60 -40|01010101010101010102010101010101010101010101010|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4\",\n\t\t\t\"Asia/Ashgabat|+05 +06 +04|-50 -60 -40|01010101010101010101020|rn70 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4\",\n\t\t\t\"Asia/Atyrau|+05 +06 +04|-50 -60 -40|010101010101010101020101010101010102020202020|sAj0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|\",\n\t\t\t\"Asia/Baghdad|+03 +04|-30 -40|01010101010101010101010101010101010101010101010101010|u190 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5\",\n\t\t\t\"Asia/Qatar|+04 +03|-40 -30|01|5QI0|96e4\",\n\t\t\t\"Asia/Baku|+04 +05 +03|-40 -50 -30|010101010101010101010201010101010101010101010101010101010101010|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5\",\n\t\t\t\"Asia/Bangkok|+07|-70|0||15e6\",\n\t\t\t\"Asia/Barnaul|+07 +08 +06|-70 -80 -60|01010101010101010101020101010102020202020202020202020202020202020|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|\",\n\t\t\t\"Asia/Beirut|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|61a0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0|22e5\",\n\t\t\t\"Asia/Bishkek|+06 +07 +05|-60 -70 -50|0101010101010101010102020202020202020202020202020|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4\",\n\t\t\t\"Asia/Brunei|+08|-80|0||42e4\",\n\t\t\t\"Asia/Kolkata|IST|-5u|0||15e6\",\n\t\t\t\"Asia/Chita|+09 +10 +08|-90 -a0 -80|0101010101010101010102010101010101010101010101010101010101010120|rn30 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4\",\n\t\t\t\"Asia/Choibalsan|+07 +08 +10 +09|-70 -80 -a0 -90|012323232323232323232323232323232323232323232313131|jsF0 cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3\",\n\t\t\t\"Asia/Shanghai|CST CDT|-80 -90|0101010101010|DKG0 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6\",\n\t\t\t\"Asia/Colombo|+0530 +0630 +06|-5u -6u -60|0120|14giu 11zu n3cu|22e5\",\n\t\t\t\"Asia/Dhaka|+06 +07|-60 -70|010|1A5R0 1i00|16e6\",\n\t\t\t\"Asia/Damascus|EET EEST|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|M00 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|26e5\",\n\t\t\t\"Asia/Dili|+09 +08|-90 -80|010|fpr0 Xld0|19e4\",\n\t\t\t\"Asia/Dubai|+04|-40|0||39e5\",\n\t\t\t\"Asia/Dushanbe|+06 +07 +05|-60 -70 -50|0101010101010101010102|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4\",\n\t\t\t\"Asia/Famagusta|EET EEST +03|-20 -30 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101012010101010101010101010101010|cPa0 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|\",\n\t\t\t\"Asia/Gaza|IST IDT EET EEST|-20 -30 -20 -30|010101010101010101010101010101023232323232323232323232323232323232323232323232323232323232323232323232|aXa0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0|18e5\",\n\t\t\t\"Asia/Hebron|IST IDT EET EEST|-20 -30 -20 -30|01010101010101010101010101010102323232323232323232323232323232323232323232323232323232323232323232323232|aXa0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0|25e4\",\n\t\t\t\"Asia/Ho_Chi_Minh|+08 +07|-80 -70|01|dfs0|90e5\",\n\t\t\t\"Asia/Hong_Kong|HKT HKST|-80 -90|01010101010101010|H7u 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5\",\n\t\t\t\"Asia/Hovd|+06 +07 +08|-60 -70 -80|01212121212121212121212121212121212121212121212121|jsG0 cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3\",\n\t\t\t\"Asia/Irkutsk|+08 +09 +07|-80 -90 -70|010101010101010101010201010101010101010101010101010101010101010|rn40 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\n\t\t\t\"Europe/Istanbul|EET EEST +03 +04|-20 -30 -30 -40|01010101010123201010101010101010101010101010101010101010101010101010101010101012|8jz0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6\",\n\t\t\t\"Asia/Jakarta|WIB|-70|0||31e6\",\n\t\t\t\"Asia/Jayapura|WIT|-90|0||26e4\",\n\t\t\t\"Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|aXa0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0|81e4\",\n\t\t\t\"Asia/Kabul|+0430|-4u|0||46e5\",\n\t\t\t\"Asia/Kamchatka|+12 +13 +11|-c0 -d0 -b0|0101010101010101010102010101010101010101010101010101010101020|rn00 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4\",\n\t\t\t\"Asia/Karachi|+05 PKT PKST|-50 -50 -60|01212121|2Xv0 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6\",\n\t\t\t\"Asia/Kathmandu|+0530 +0545|-5u -5J|01|CVuu|12e5\",\n\t\t\t\"Asia/Khandyga|+09 +10 +08 +11|-90 -a0 -80 -b0|01010101010101010101020101010101010101010101010131313131313131310|rn30 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2\",\n\t\t\t\"Asia/Krasnoyarsk|+07 +08 +06|-70 -80 -60|010101010101010101010201010101010101010101010101010101010101010|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5\",\n\t\t\t\"Asia/Kuala_Lumpur|+0730 +08|-7u -80|01|td4u|71e5\",\n\t\t\t\"Asia/Macau|CST CDT|-80 -90|01010101010101010|H7u 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4\",\n\t\t\t\"Asia/Magadan|+11 +12 +10|-b0 -c0 -a0|0101010101010101010102010101010101010101010101010101010101010120|rn10 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3\",\n\t\t\t\"Asia/Makassar|WITA|-80|0||15e5\",\n\t\t\t\"Asia/Manila|PST PDT|-80 -90|010|k0E0 1db0|24e6\",\n\t\t\t\"Asia/Nicosia|EET EEST|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|cPa0 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|32e4\",\n\t\t\t\"Asia/Novokuznetsk|+07 +08 +06|-70 -80 -60|0101010101010101010102010101010101010101010101010101010101020|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4\",\n\t\t\t\"Asia/Novosibirsk|+07 +08 +06|-70 -80 -60|01010101010101010101020101020202020202020202020202020202020202020|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5\",\n\t\t\t\"Asia/Omsk|+06 +07 +05|-60 -70 -50|010101010101010101010201010101010101010101010101010101010101010|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5\",\n\t\t\t\"Asia/Oral|+05 +06 +04|-50 -60 -40|010101010101010202020202020202020202020202020|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4\",\n\t\t\t\"Asia/Pontianak|WITA WIB|-80 -70|01|HNs0|23e4\",\n\t\t\t\"Asia/Pyongyang|KST KST|-90 -8u|010|1P4D0 6BA0|29e5\",\n\t\t\t\"Asia/Qostanay|+05 +06 +04|-50 -60 -40|0101010101010101010201010101010101010101010101|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|\",\n\t\t\t\"Asia/Qyzylorda|+05 +06|-50 -60|010101010101010101010101010101010101010101010|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4\",\n\t\t\t\"Asia/Rangoon|+0630|-6u|0||48e5\",\n\t\t\t\"Asia/Sakhalin|+11 +12 +10|-b0 -c0 -a0|010101010101010101010201010101010202020202020202020202020202020|rn10 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4\",\n\t\t\t\"Asia/Samarkand|+05 +06|-50 -60|010101010101010101010|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4\",\n\t\t\t\"Asia/Seoul|KST KDT|-90 -a0|01010|Gf50 11A0 1o00 11A0|23e6\",\n\t\t\t\"Asia/Srednekolymsk|+11 +12 +10|-b0 -c0 -a0|010101010101010101010201010101010101010101010101010101010101010|rn10 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2\",\n\t\t\t\"Asia/Taipei|CST CDT|-80 -90|0101010|akg0 1db0 1cN0 1db0 97B0 AL0|74e5\",\n\t\t\t\"Asia/Tashkent|+06 +07 +05|-60 -70 -50|0101010101010101010102|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5\",\n\t\t\t\"Asia/Tbilisi|+04 +05 +03|-40 -50 -30|01010101010101010101020202010101010101010101020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5\",\n\t\t\t\"Asia/Tehran|+0330 +04 +05 +0430|-3u -40 -50 -4u|0121030303030303030303030303030303030303030303030303030303030303030303030303030303030|j4ku TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0|14e6\",\n\t\t\t\"Asia/Thimphu|+0530 +06|-5u -60|01|HcGu|79e3\",\n\t\t\t\"Asia/Tokyo|JST|-90|0||38e6\",\n\t\t\t\"Asia/Tomsk|+07 +08 +06|-70 -80 -60|01010101010101010101020101010101010101010101020202020202020202020|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5\",\n\t\t\t\"Asia/Ulaanbaatar|+07 +08 +09|-70 -80 -90|01212121212121212121212121212121212121212121212121|jsF0 cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5\",\n\t\t\t\"Asia/Ust-Nera|+09 +12 +11 +10|-90 -c0 -b0 -a0|0121212121212121212123212121212121212121212121212121212121212123|rn30 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2\",\n\t\t\t\"Asia/Vladivostok|+10 +11 +09|-a0 -b0 -90|010101010101010101010201010101010101010101010101010101010101010|rn20 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\n\t\t\t\"Asia/Yakutsk|+09 +10 +08|-90 -a0 -80|010101010101010101010201010101010101010101010101010101010101010|rn30 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4\",\n\t\t\t\"Asia/Yekaterinburg|+05 +06 +04|-50 -60 -40|010101010101010101010201010101010101010101010101010101010101010|rn70 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5\",\n\t\t\t\"Asia/Yerevan|+04 +05 +03|-40 -50 -30|01010101010101010101020202020101010101010101010101010101010|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5\",\n\t\t\t\"Atlantic/Azores|-01 +00 WET|10 0 0|0101010101010101010101010101010121010101010101010101010101010101010101010101010101010101010101010101010101010|hAN0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|25e4\",\n\t\t\t\"Atlantic/Bermuda|AST ADT|40 30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|avi0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3\",\n\t\t\t\"Atlantic/Canary|WET WEST|0 -10|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXc0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|54e4\",\n\t\t\t\"Atlantic/Cape_Verde|-02 -01|20 10|01|elE0|50e4\",\n\t\t\t\"Atlantic/Faroe|WET WEST|0 -10|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|rm10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|49e3\",\n\t\t\t\"Atlantic/Madeira|WET WEST|0 -10|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hAM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|27e4\",\n\t\t\t\"Atlantic/South_Georgia|-02|20|0||30\",\n\t\t\t\"Atlantic/Stanley|-04 -03 -02|40 30 20|01212101010101010101010101010101010101010101010101010101|wrg0 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2\",\n\t\t\t\"Australia/Sydney|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r40 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|40e5\",\n\t\t\t\"Australia/Adelaide|ACST ACDT|-9u -au|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r4u LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|11e5\",\n\t\t\t\"Australia/Brisbane|AEST AEDT|-a0 -b0|010101010|4r40 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5\",\n\t\t\t\"Australia/Broken_Hill|ACST ACDT|-9u -au|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r4u LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|18e3\",\n\t\t\t\"Australia/Currie|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r40 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|746\",\n\t\t\t\"Australia/Darwin|ACST|-9u|0||12e4\",\n\t\t\t\"Australia/Eucla|+0845 +0945|-8J -9J|0101010101010|bHRf Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368\",\n\t\t\t\"Australia/Hobart|AEDT AEST|-b0 -a0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|qg0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|21e4\",\n\t\t\t\"Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|01212121213131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu|347\",\n\t\t\t\"Australia/Lindeman|AEST AEDT|-a0 -b0|0101010101010|4r40 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10\",\n\t\t\t\"Australia/Melbourne|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r40 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|39e5\",\n\t\t\t\"Australia/Perth|AWST AWDT|-80 -90|0101010101010|bHS0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5\",\n\t\t\t\"Europe/Brussels|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|21e5\",\n\t\t\t\"Pacific/Easter|-06 -07 -05|60 70 50|010101010101010101010101020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|30e2\",\n\t\t\t\"EET|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|\",\n\t\t\t\"Europe/Dublin|IST GMT|-10 0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4re0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5\",\n\t\t\t\"Etc/GMT-1|+01|-10|0||\",\n\t\t\t\"Pacific/Guadalcanal|+11|-b0|0||11e4\",\n\t\t\t\"Pacific/Tarawa|+12|-c0|0||29e3\",\n\t\t\t\"Etc/GMT-13|+13|-d0|0||\",\n\t\t\t\"Etc/GMT-14|+14|-e0|0||\",\n\t\t\t\"Etc/GMT-2|+02|-20|0||\",\n\t\t\t\"Indian/Maldives|+05|-50|0||35e4\",\n\t\t\t\"Pacific/Palau|+09|-90|0||21e3\",\n\t\t\t\"Etc/GMT+1|-01|10|0||\",\n\t\t\t\"Pacific/Tahiti|-10|a0|0||18e4\",\n\t\t\t\"Etc/GMT+11|-11|b0|0||\",\n\t\t\t\"Etc/GMT+12|-12|c0|0||\",\n\t\t\t\"Etc/GMT+5|-05|50|0||\",\n\t\t\t\"Etc/GMT+6|-06|60|0||\",\n\t\t\t\"Etc/GMT+7|-07|70|0||\",\n\t\t\t\"Etc/GMT+8|-08|80|0||\",\n\t\t\t\"Pacific/Gambier|-09|90|0||125\",\n\t\t\t\"Etc/UTC|UTC|0|0||\",\n\t\t\t\"Europe/Andorra|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|B7d0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|79e3\",\n\t\t\t\"Europe/Astrakhan|+04 +05 +03|-40 -50 -30|0101010101010101020202020202020202020202020202020202020202020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5\",\n\t\t\t\"Europe/Athens|EET EEST|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|cOK0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|35e5\",\n\t\t\t\"Europe/London|BST GMT|-10 0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4re0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|10e6\",\n\t\t\t\"Europe/Belgrade|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|wdd0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5\",\n\t\t\t\"Europe/Prague|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|muN0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|13e5\",\n\t\t\t\"Europe/Bucharest|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|mRa0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|19e5\",\n\t\t\t\"Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXc0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|17e5\",\n\t\t\t\"Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|rm10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|38e4\",\n\t\t\t\"Europe/Chisinau|MSK MSD EEST EET|-30 -40 -30 -20|010101010101010101012323232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|67e4\",\n\t\t\t\"Europe/Gibraltar|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|tLB0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|30e3\",\n\t\t\t\"Europe/Helsinki|EET EEST|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|rm00 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5\",\n\t\t\t\"Europe/Kaliningrad|MSK MSD EEST EET +03|-30 -40 -30 -20 -30|010101010101010102323232323232323232323232323232323232323232343|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4\",\n\t\t\t\"Europe/Kiev|MSK MSD EEST EET|-30 -40 -30 -20|0101010101010101010123232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|34e5\",\n\t\t\t\"Europe/Kirov|+04 +05 +03|-40 -50 -30|010101010101010102020202020202020202020202020202020202020202|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4\",\n\t\t\t\"Europe/Lisbon|CET WET WEST CEST|-10 0 -10 -20|01212121212121212121212121212121203030302121212121212121212121212121212121212121212121212121212121212121212121|go00 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|27e5\",\n\t\t\t\"Europe/Madrid|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|apy0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|62e5\",\n\t\t\t\"Europe/Malta|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|XX0 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|42e4\",\n\t\t\t\"Europe/Minsk|MSK MSD EEST EET +03|-30 -40 -30 -20 -30|010101010101010101023232323232323232323232323232323232323234|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5\",\n\t\t\t\"Europe/Paris|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|fbc0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|11e6\",\n\t\t\t\"Europe/Moscow|MSK MSD EEST EET MSK|-30 -40 -30 -20 -40|0101010101010101010102301010101010101010101010101010101010101040|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6\",\n\t\t\t\"Europe/Riga|MSK MSD EEST EET|-30 -40 -30 -20|010101010101010102323232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|64e4\",\n\t\t\t\"Europe/Rome|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|XX0 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|39e5\",\n\t\t\t\"Europe/Samara|+04 +05 +03|-40 -50 -30|01010101010101010202010101010101010101010101010101010101020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5\",\n\t\t\t\"Europe/Saratov|+04 +05 +03|-40 -50 -30|0101010101010102020202020202020202020202020202020202020202020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|\",\n\t\t\t\"Europe/Simferopol|MSK MSD EET EEST MSK|-30 -40 -20 -30 -40|0101010101010101010232323101010323232323232323232323232323232323240|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4\",\n\t\t\t\"Europe/Sofia|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|muJ0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5\",\n\t\t\t\"Europe/Tallinn|MSK MSD EEST EET|-30 -40 -30 -20|0101010101010101023232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|41e4\",\n\t\t\t\"Europe/Tirane|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|axz0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|42e4\",\n\t\t\t\"Europe/Ulyanovsk|+04 +05 +03 +02|-40 -50 -30 -20|010101010101010102023202020202020202020202020202020202020202020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5\",\n\t\t\t\"Europe/Uzhgorod|MSK MSD CET EET EEST|-30 -40 -10 -20 -30|010101010101010101023434343434343434343434343434343434343434343434343434343434343434343434343434343|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|11e4\",\n\t\t\t\"Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXb0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|18e5\",\n\t\t\t\"Europe/Vilnius|MSK MSD EEST EET CEST CET|-30 -40 -30 -20 -20 -10|01010101010101010232323232323232323454323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|54e4\",\n\t\t\t\"Europe/Volgograd|+04 +05 +03|-40 -50 -30|0101010101010102020202020202020202020202020202020202020202020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0|10e5\",\n\t\t\t\"Europe/Warsaw|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|17e5\",\n\t\t\t\"Europe/Zaporozhye|MSK MSD EEST EET|-30 -40 -30 -20|01010101010101010101023232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|77e4\",\n\t\t\t\"Pacific/Honolulu|HST|a0|0||37e4\",\n\t\t\t\"Indian/Chagos|+05 +06|-50 -60|01|13ij0|30e2\",\n\t\t\t\"Indian/Mauritius|+04 +05|-40 -50|01010|v5U0 14L0 12kr0 11z0|15e4\",\n\t\t\t\"Pacific/Kwajalein|-12 +12|c0 -c0|01|Vxo0|14e3\",\n\t\t\t\"MET|MET MEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|\",\n\t\t\t\"Pacific/Chatham|+1245 +1345|-cJ -dJ|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|bKC0 IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00|600\",\n\t\t\t\"Pacific/Apia|-11 -10 +14 +13|b0 a0 -e0 -d0|0101232323232323232323232323232323232323232|1Dbn0 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00|37e3\",\n\t\t\t\"Pacific/Bougainville|+10 +11|-a0 -b0|01|1NwE0|18e4\",\n\t\t\t\"Pacific/Efate|+11 +12|-b0 -c0|010101010101010101010|xpN0 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3\",\n\t\t\t\"Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B7X0|1\",\n\t\t\t\"Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483\",\n\t\t\t\"Pacific/Fiji|+12 +13|-c0 -d0|010101010101010101010101010101010101010101010101|1ace0 LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 20o0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0|88e4\",\n\t\t\t\"Pacific/Galapagos|-05 -06|50 60|0101|CVF0 gNd0 rz0|25e3\",\n\t\t\t\"Pacific/Guam|GST GDT ChST|-a0 -b0 -a0|010101010102|JQ0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4\",\n\t\t\t\"Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2\",\n\t\t\t\"Pacific/Kosrae|+12 +11|-c0 -b0|01|1aAA0|66e2\",\n\t\t\t\"Pacific/Marquesas|-0930|9u|0||86e2\",\n\t\t\t\"Pacific/Pago_Pago|SST|b0|0||37e2\",\n\t\t\t\"Pacific/Nauru|+1130 +12|-bu -c0|01|maCu|10e3\",\n\t\t\t\"Pacific/Niue|-1130 -11|bu b0|01|libu|12e2\",\n\t\t\t\"Pacific/Norfolk|+1130 +1230 +11 +12|-bu -cu -b0 -c0|010232323232323232323232323|bHOu Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|25e4\",\n\t\t\t\"Pacific/Noumea|+11 +12|-b0 -c0|0101010|jhp0 xX0 1PB0 yn0 HeP0 Ao0|98e3\",\n\t\t\t\"Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56\",\n\t\t\t\"Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3\",\n\t\t\t\"Pacific/Tongatapu|+13 +14|-d0 -e0|010101010|1csd0 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3\",\n\t\t\t\"WET|WET WEST|0 -10|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|\"\n\t\t],\n\t\t\"links\": [\n\t\t\t\"Africa/Abidjan|Africa/Accra\",\n\t\t\t\"Africa/Abidjan|Africa/Bamako\",\n\t\t\t\"Africa/Abidjan|Africa/Banjul\",\n\t\t\t\"Africa/Abidjan|Africa/Conakry\",\n\t\t\t\"Africa/Abidjan|Africa/Dakar\",\n\t\t\t\"Africa/Abidjan|Africa/Freetown\",\n\t\t\t\"Africa/Abidjan|Africa/Lome\",\n\t\t\t\"Africa/Abidjan|Africa/Nouakchott\",\n\t\t\t\"Africa/Abidjan|Africa/Ouagadougou\",\n\t\t\t\"Africa/Abidjan|Africa/Timbuktu\",\n\t\t\t\"Africa/Abidjan|Atlantic/Reykjavik\",\n\t\t\t\"Africa/Abidjan|Atlantic/St_Helena\",\n\t\t\t\"Africa/Abidjan|Etc/GMT\",\n\t\t\t\"Africa/Abidjan|Etc/GMT+0\",\n\t\t\t\"Africa/Abidjan|Etc/GMT-0\",\n\t\t\t\"Africa/Abidjan|Etc/GMT0\",\n\t\t\t\"Africa/Abidjan|Etc/Greenwich\",\n\t\t\t\"Africa/Abidjan|GMT\",\n\t\t\t\"Africa/Abidjan|GMT+0\",\n\t\t\t\"Africa/Abidjan|GMT-0\",\n\t\t\t\"Africa/Abidjan|GMT0\",\n\t\t\t\"Africa/Abidjan|Greenwich\",\n\t\t\t\"Africa/Abidjan|Iceland\",\n\t\t\t\"Africa/Cairo|Egypt\",\n\t\t\t\"Africa/Johannesburg|Africa/Maseru\",\n\t\t\t\"Africa/Johannesburg|Africa/Mbabane\",\n\t\t\t\"Africa/Lagos|Africa/Bangui\",\n\t\t\t\"Africa/Lagos|Africa/Brazzaville\",\n\t\t\t\"Africa/Lagos|Africa/Douala\",\n\t\t\t\"Africa/Lagos|Africa/Kinshasa\",\n\t\t\t\"Africa/Lagos|Africa/Libreville\",\n\t\t\t\"Africa/Lagos|Africa/Luanda\",\n\t\t\t\"Africa/Lagos|Africa/Malabo\",\n\t\t\t\"Africa/Lagos|Africa/Niamey\",\n\t\t\t\"Africa/Lagos|Africa/Porto-Novo\",\n\t\t\t\"Africa/Maputo|Africa/Blantyre\",\n\t\t\t\"Africa/Maputo|Africa/Bujumbura\",\n\t\t\t\"Africa/Maputo|Africa/Gaborone\",\n\t\t\t\"Africa/Maputo|Africa/Harare\",\n\t\t\t\"Africa/Maputo|Africa/Kigali\",\n\t\t\t\"Africa/Maputo|Africa/Lubumbashi\",\n\t\t\t\"Africa/Maputo|Africa/Lusaka\",\n\t\t\t\"Africa/Nairobi|Africa/Addis_Ababa\",\n\t\t\t\"Africa/Nairobi|Africa/Asmara\",\n\t\t\t\"Africa/Nairobi|Africa/Asmera\",\n\t\t\t\"Africa/Nairobi|Africa/Dar_es_Salaam\",\n\t\t\t\"Africa/Nairobi|Africa/Djibouti\",\n\t\t\t\"Africa/Nairobi|Africa/Kampala\",\n\t\t\t\"Africa/Nairobi|Africa/Mogadishu\",\n\t\t\t\"Africa/Nairobi|Indian/Antananarivo\",\n\t\t\t\"Africa/Nairobi|Indian/Comoro\",\n\t\t\t\"Africa/Nairobi|Indian/Mayotte\",\n\t\t\t\"Africa/Tripoli|Libya\",\n\t\t\t\"America/Adak|America/Atka\",\n\t\t\t\"America/Adak|US/Aleutian\",\n\t\t\t\"America/Anchorage|US/Alaska\",\n\t\t\t\"America/Argentina/Buenos_Aires|America/Buenos_Aires\",\n\t\t\t\"America/Argentina/Catamarca|America/Argentina/ComodRivadavia\",\n\t\t\t\"America/Argentina/Catamarca|America/Catamarca\",\n\t\t\t\"America/Argentina/Cordoba|America/Cordoba\",\n\t\t\t\"America/Argentina/Cordoba|America/Rosario\",\n\t\t\t\"America/Argentina/Jujuy|America/Jujuy\",\n\t\t\t\"America/Argentina/Mendoza|America/Mendoza\",\n\t\t\t\"America/Cayenne|Etc/GMT+3\",\n\t\t\t\"America/Chicago|CST6CDT\",\n\t\t\t\"America/Chicago|US/Central\",\n\t\t\t\"America/Denver|America/Shiprock\",\n\t\t\t\"America/Denver|MST7MDT\",\n\t\t\t\"America/Denver|Navajo\",\n\t\t\t\"America/Denver|US/Mountain\",\n\t\t\t\"America/Detroit|US/Michigan\",\n\t\t\t\"America/Edmonton|Canada/Mountain\",\n\t\t\t\"America/Fort_Wayne|America/Indiana/Indianapolis\",\n\t\t\t\"America/Fort_Wayne|America/Indianapolis\",\n\t\t\t\"America/Fort_Wayne|US/East-Indiana\",\n\t\t\t\"America/Halifax|Canada/Atlantic\",\n\t\t\t\"America/Havana|Cuba\",\n\t\t\t\"America/Indiana/Knox|America/Knox_IN\",\n\t\t\t\"America/Indiana/Knox|US/Indiana-Starke\",\n\t\t\t\"America/Jamaica|Jamaica\",\n\t\t\t\"America/Kentucky/Louisville|America/Louisville\",\n\t\t\t\"America/La_Paz|Etc/GMT+4\",\n\t\t\t\"America/Los_Angeles|PST8PDT\",\n\t\t\t\"America/Los_Angeles|US/Pacific\",\n\t\t\t\"America/Los_Angeles|US/Pacific-New\",\n\t\t\t\"America/Manaus|Brazil/West\",\n\t\t\t\"America/Mazatlan|Mexico/BajaSur\",\n\t\t\t\"America/Mexico_City|Mexico/General\",\n\t\t\t\"America/New_York|EST5EDT\",\n\t\t\t\"America/New_York|US/Eastern\",\n\t\t\t\"America/Noronha|Brazil/DeNoronha\",\n\t\t\t\"America/Panama|America/Atikokan\",\n\t\t\t\"America/Panama|America/Cayman\",\n\t\t\t\"America/Panama|America/Coral_Harbour\",\n\t\t\t\"America/Panama|EST\",\n\t\t\t\"America/Phoenix|America/Creston\",\n\t\t\t\"America/Phoenix|MST\",\n\t\t\t\"America/Phoenix|US/Arizona\",\n\t\t\t\"America/Puerto_Rico|America/Anguilla\",\n\t\t\t\"America/Puerto_Rico|America/Antigua\",\n\t\t\t\"America/Puerto_Rico|America/Aruba\",\n\t\t\t\"America/Puerto_Rico|America/Blanc-Sablon\",\n\t\t\t\"America/Puerto_Rico|America/Curacao\",\n\t\t\t\"America/Puerto_Rico|America/Dominica\",\n\t\t\t\"America/Puerto_Rico|America/Grenada\",\n\t\t\t\"America/Puerto_Rico|America/Guadeloupe\",\n\t\t\t\"America/Puerto_Rico|America/Kralendijk\",\n\t\t\t\"America/Puerto_Rico|America/Lower_Princes\",\n\t\t\t\"America/Puerto_Rico|America/Marigot\",\n\t\t\t\"America/Puerto_Rico|America/Montserrat\",\n\t\t\t\"America/Puerto_Rico|America/Port_of_Spain\",\n\t\t\t\"America/Puerto_Rico|America/St_Barthelemy\",\n\t\t\t\"America/Puerto_Rico|America/St_Kitts\",\n\t\t\t\"America/Puerto_Rico|America/St_Lucia\",\n\t\t\t\"America/Puerto_Rico|America/St_Thomas\",\n\t\t\t\"America/Puerto_Rico|America/St_Vincent\",\n\t\t\t\"America/Puerto_Rico|America/Tortola\",\n\t\t\t\"America/Puerto_Rico|America/Virgin\",\n\t\t\t\"America/Regina|Canada/Saskatchewan\",\n\t\t\t\"America/Rio_Branco|America/Porto_Acre\",\n\t\t\t\"America/Rio_Branco|Brazil/Acre\",\n\t\t\t\"America/Santiago|Chile/Continental\",\n\t\t\t\"America/Sao_Paulo|Brazil/East\",\n\t\t\t\"America/St_Johns|Canada/Newfoundland\",\n\t\t\t\"America/Tijuana|America/Ensenada\",\n\t\t\t\"America/Tijuana|America/Santa_Isabel\",\n\t\t\t\"America/Tijuana|Mexico/BajaNorte\",\n\t\t\t\"America/Toronto|America/Montreal\",\n\t\t\t\"America/Toronto|America/Nassau\",\n\t\t\t\"America/Toronto|Canada/Eastern\",\n\t\t\t\"America/Vancouver|Canada/Pacific\",\n\t\t\t\"America/Whitehorse|Canada/Yukon\",\n\t\t\t\"America/Winnipeg|Canada/Central\",\n\t\t\t\"Asia/Ashgabat|Asia/Ashkhabad\",\n\t\t\t\"Asia/Bangkok|Asia/Phnom_Penh\",\n\t\t\t\"Asia/Bangkok|Asia/Vientiane\",\n\t\t\t\"Asia/Bangkok|Etc/GMT-7\",\n\t\t\t\"Asia/Bangkok|Indian/Christmas\",\n\t\t\t\"Asia/Brunei|Asia/Kuching\",\n\t\t\t\"Asia/Brunei|Etc/GMT-8\",\n\t\t\t\"Asia/Dhaka|Asia/Dacca\",\n\t\t\t\"Asia/Dubai|Asia/Muscat\",\n\t\t\t\"Asia/Dubai|Etc/GMT-4\",\n\t\t\t\"Asia/Dubai|Indian/Mahe\",\n\t\t\t\"Asia/Dubai|Indian/Reunion\",\n\t\t\t\"Asia/Ho_Chi_Minh|Asia/Saigon\",\n\t\t\t\"Asia/Hong_Kong|Hongkong\",\n\t\t\t\"Asia/Jerusalem|Asia/Tel_Aviv\",\n\t\t\t\"Asia/Jerusalem|Israel\",\n\t\t\t\"Asia/Kathmandu|Asia/Katmandu\",\n\t\t\t\"Asia/Kolkata|Asia/Calcutta\",\n\t\t\t\"Asia/Kuala_Lumpur|Asia/Singapore\",\n\t\t\t\"Asia/Kuala_Lumpur|Singapore\",\n\t\t\t\"Asia/Macau|Asia/Macao\",\n\t\t\t\"Asia/Makassar|Asia/Ujung_Pandang\",\n\t\t\t\"Asia/Nicosia|Europe/Nicosia\",\n\t\t\t\"Asia/Qatar|Asia/Bahrain\",\n\t\t\t\"Asia/Rangoon|Asia/Yangon\",\n\t\t\t\"Asia/Rangoon|Indian/Cocos\",\n\t\t\t\"Asia/Riyadh|Antarctica/Syowa\",\n\t\t\t\"Asia/Riyadh|Asia/Aden\",\n\t\t\t\"Asia/Riyadh|Asia/Kuwait\",\n\t\t\t\"Asia/Riyadh|Etc/GMT-3\",\n\t\t\t\"Asia/Seoul|ROK\",\n\t\t\t\"Asia/Shanghai|Asia/Chongqing\",\n\t\t\t\"Asia/Shanghai|Asia/Chungking\",\n\t\t\t\"Asia/Shanghai|Asia/Harbin\",\n\t\t\t\"Asia/Shanghai|PRC\",\n\t\t\t\"Asia/Taipei|ROC\",\n\t\t\t\"Asia/Tehran|Iran\",\n\t\t\t\"Asia/Thimphu|Asia/Thimbu\",\n\t\t\t\"Asia/Tokyo|Japan\",\n\t\t\t\"Asia/Ulaanbaatar|Asia/Ulan_Bator\",\n\t\t\t\"Asia/Urumqi|Antarctica/Vostok\",\n\t\t\t\"Asia/Urumqi|Asia/Kashgar\",\n\t\t\t\"Asia/Urumqi|Etc/GMT-6\",\n\t\t\t\"Atlantic/Faroe|Atlantic/Faeroe\",\n\t\t\t\"Atlantic/South_Georgia|Etc/GMT+2\",\n\t\t\t\"Australia/Adelaide|Australia/South\",\n\t\t\t\"Australia/Brisbane|Australia/Queensland\",\n\t\t\t\"Australia/Broken_Hill|Australia/Yancowinna\",\n\t\t\t\"Australia/Darwin|Australia/North\",\n\t\t\t\"Australia/Hobart|Australia/Tasmania\",\n\t\t\t\"Australia/Lord_Howe|Australia/LHI\",\n\t\t\t\"Australia/Melbourne|Australia/Victoria\",\n\t\t\t\"Australia/Perth|Australia/West\",\n\t\t\t\"Australia/Sydney|Australia/ACT\",\n\t\t\t\"Australia/Sydney|Australia/Canberra\",\n\t\t\t\"Australia/Sydney|Australia/NSW\",\n\t\t\t\"Etc/UTC|Etc/UCT\",\n\t\t\t\"Etc/UTC|Etc/Universal\",\n\t\t\t\"Etc/UTC|Etc/Zulu\",\n\t\t\t\"Etc/UTC|UCT\",\n\t\t\t\"Etc/UTC|UTC\",\n\t\t\t\"Etc/UTC|Universal\",\n\t\t\t\"Etc/UTC|Zulu\",\n\t\t\t\"Europe/Belgrade|Europe/Ljubljana\",\n\t\t\t\"Europe/Belgrade|Europe/Podgorica\",\n\t\t\t\"Europe/Belgrade|Europe/Sarajevo\",\n\t\t\t\"Europe/Belgrade|Europe/Skopje\",\n\t\t\t\"Europe/Belgrade|Europe/Zagreb\",\n\t\t\t\"Europe/Berlin|Arctic/Longyearbyen\",\n\t\t\t\"Europe/Berlin|Atlantic/Jan_Mayen\",\n\t\t\t\"Europe/Berlin|Europe/Copenhagen\",\n\t\t\t\"Europe/Berlin|Europe/Oslo\",\n\t\t\t\"Europe/Berlin|Europe/Stockholm\",\n\t\t\t\"Europe/Brussels|CET\",\n\t\t\t\"Europe/Brussels|Europe/Amsterdam\",\n\t\t\t\"Europe/Brussels|Europe/Luxembourg\",\n\t\t\t\"Europe/Chisinau|Europe/Tiraspol\",\n\t\t\t\"Europe/Dublin|Eire\",\n\t\t\t\"Europe/Helsinki|Europe/Mariehamn\",\n\t\t\t\"Europe/Istanbul|Asia/Istanbul\",\n\t\t\t\"Europe/Istanbul|Turkey\",\n\t\t\t\"Europe/Lisbon|Portugal\",\n\t\t\t\"Europe/London|Europe/Belfast\",\n\t\t\t\"Europe/London|Europe/Guernsey\",\n\t\t\t\"Europe/London|Europe/Isle_of_Man\",\n\t\t\t\"Europe/London|Europe/Jersey\",\n\t\t\t\"Europe/London|GB\",\n\t\t\t\"Europe/London|GB-Eire\",\n\t\t\t\"Europe/Moscow|W-SU\",\n\t\t\t\"Europe/Paris|Europe/Monaco\",\n\t\t\t\"Europe/Prague|Europe/Bratislava\",\n\t\t\t\"Europe/Rome|Europe/San_Marino\",\n\t\t\t\"Europe/Rome|Europe/Vatican\",\n\t\t\t\"Europe/Warsaw|Poland\",\n\t\t\t\"Europe/Zurich|Europe/Busingen\",\n\t\t\t\"Europe/Zurich|Europe/Vaduz\",\n\t\t\t\"Indian/Maldives|Etc/GMT-5\",\n\t\t\t\"Indian/Maldives|Indian/Kerguelen\",\n\t\t\t\"Pacific/Auckland|Antarctica/McMurdo\",\n\t\t\t\"Pacific/Auckland|Antarctica/South_Pole\",\n\t\t\t\"Pacific/Auckland|NZ\",\n\t\t\t\"Pacific/Chatham|NZ-CHAT\",\n\t\t\t\"Pacific/Easter|Chile/EasterIsland\",\n\t\t\t\"Pacific/Gambier|Etc/GMT+9\",\n\t\t\t\"Pacific/Guadalcanal|Etc/GMT-11\",\n\t\t\t\"Pacific/Guadalcanal|Pacific/Pohnpei\",\n\t\t\t\"Pacific/Guadalcanal|Pacific/Ponape\",\n\t\t\t\"Pacific/Guam|Pacific/Saipan\",\n\t\t\t\"Pacific/Honolulu|HST\",\n\t\t\t\"Pacific/Honolulu|Pacific/Johnston\",\n\t\t\t\"Pacific/Honolulu|US/Hawaii\",\n\t\t\t\"Pacific/Kwajalein|Kwajalein\",\n\t\t\t\"Pacific/Pago_Pago|Pacific/Midway\",\n\t\t\t\"Pacific/Pago_Pago|Pacific/Samoa\",\n\t\t\t\"Pacific/Pago_Pago|US/Samoa\",\n\t\t\t\"Pacific/Palau|Etc/GMT-9\",\n\t\t\t\"Pacific/Port_Moresby|Antarctica/DumontDUrville\",\n\t\t\t\"Pacific/Port_Moresby|Etc/GMT-10\",\n\t\t\t\"Pacific/Port_Moresby|Pacific/Chuuk\",\n\t\t\t\"Pacific/Port_Moresby|Pacific/Truk\",\n\t\t\t\"Pacific/Port_Moresby|Pacific/Yap\",\n\t\t\t\"Pacific/Tahiti|Etc/GMT+10\",\n\t\t\t\"Pacific/Tarawa|Etc/GMT-12\",\n\t\t\t\"Pacific/Tarawa|Pacific/Funafuti\",\n\t\t\t\"Pacific/Tarawa|Pacific/Majuro\",\n\t\t\t\"Pacific/Tarawa|Pacific/Wake\",\n\t\t\t\"Pacific/Tarawa|Pacific/Wallis\"\n\t\t],\n\t\t\"countries\": [\n\t\t\t\"AD|Europe/Andorra\",\n\t\t\t\"AE|Asia/Dubai\",\n\t\t\t\"AF|Asia/Kabul\",\n\t\t\t\"AG|America/Port_of_Spain America/Antigua\",\n\t\t\t\"AI|America/Port_of_Spain America/Anguilla\",\n\t\t\t\"AL|Europe/Tirane\",\n\t\t\t\"AM|Asia/Yerevan\",\n\t\t\t\"AO|Africa/Lagos Africa/Luanda\",\n\t\t\t\"AQ|Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Pacific/Auckland Antarctica/McMurdo\",\n\t\t\t\"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia\",\n\t\t\t\"AS|Pacific/Pago_Pago\",\n\t\t\t\"AT|Europe/Vienna\",\n\t\t\t\"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Currie Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla\",\n\t\t\t\"AW|America/Curacao America/Aruba\",\n\t\t\t\"AX|Europe/Helsinki Europe/Mariehamn\",\n\t\t\t\"AZ|Asia/Baku\",\n\t\t\t\"BA|Europe/Belgrade Europe/Sarajevo\",\n\t\t\t\"BB|America/Barbados\",\n\t\t\t\"BD|Asia/Dhaka\",\n\t\t\t\"BE|Europe/Brussels\",\n\t\t\t\"BF|Africa/Abidjan Africa/Ouagadougou\",\n\t\t\t\"BG|Europe/Sofia\",\n\t\t\t\"BH|Asia/Qatar Asia/Bahrain\",\n\t\t\t\"BI|Africa/Maputo Africa/Bujumbura\",\n\t\t\t\"BJ|Africa/Lagos Africa/Porto-Novo\",\n\t\t\t\"BL|America/Port_of_Spain America/St_Barthelemy\",\n\t\t\t\"BM|Atlantic/Bermuda\",\n\t\t\t\"BN|Asia/Brunei\",\n\t\t\t\"BO|America/La_Paz\",\n\t\t\t\"BQ|America/Curacao America/Kralendijk\",\n\t\t\t\"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco\",\n\t\t\t\"BS|America/Nassau\",\n\t\t\t\"BT|Asia/Thimphu\",\n\t\t\t\"BW|Africa/Maputo Africa/Gaborone\",\n\t\t\t\"BY|Europe/Minsk\",\n\t\t\t\"BZ|America/Belize\",\n\t\t\t\"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Vancouver America/Whitehorse America/Dawson\",\n\t\t\t\"CC|Indian/Cocos\",\n\t\t\t\"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi\",\n\t\t\t\"CF|Africa/Lagos Africa/Bangui\",\n\t\t\t\"CG|Africa/Lagos Africa/Brazzaville\",\n\t\t\t\"CH|Europe/Zurich\",\n\t\t\t\"CI|Africa/Abidjan\",\n\t\t\t\"CK|Pacific/Rarotonga\",\n\t\t\t\"CL|America/Santiago America/Punta_Arenas Pacific/Easter\",\n\t\t\t\"CM|Africa/Lagos Africa/Douala\",\n\t\t\t\"CN|Asia/Shanghai Asia/Urumqi\",\n\t\t\t\"CO|America/Bogota\",\n\t\t\t\"CR|America/Costa_Rica\",\n\t\t\t\"CU|America/Havana\",\n\t\t\t\"CV|Atlantic/Cape_Verde\",\n\t\t\t\"CW|America/Curacao\",\n\t\t\t\"CX|Indian/Christmas\",\n\t\t\t\"CY|Asia/Nicosia Asia/Famagusta\",\n\t\t\t\"CZ|Europe/Prague\",\n\t\t\t\"DE|Europe/Zurich Europe/Berlin Europe/Busingen\",\n\t\t\t\"DJ|Africa/Nairobi Africa/Djibouti\",\n\t\t\t\"DK|Europe/Copenhagen\",\n\t\t\t\"DM|America/Port_of_Spain America/Dominica\",\n\t\t\t\"DO|America/Santo_Domingo\",\n\t\t\t\"DZ|Africa/Algiers\",\n\t\t\t\"EC|America/Guayaquil Pacific/Galapagos\",\n\t\t\t\"EE|Europe/Tallinn\",\n\t\t\t\"EG|Africa/Cairo\",\n\t\t\t\"EH|Africa/El_Aaiun\",\n\t\t\t\"ER|Africa/Nairobi Africa/Asmara\",\n\t\t\t\"ES|Europe/Madrid Africa/Ceuta Atlantic/Canary\",\n\t\t\t\"ET|Africa/Nairobi Africa/Addis_Ababa\",\n\t\t\t\"FI|Europe/Helsinki\",\n\t\t\t\"FJ|Pacific/Fiji\",\n\t\t\t\"FK|Atlantic/Stanley\",\n\t\t\t\"FM|Pacific/Chuuk Pacific/Pohnpei Pacific/Kosrae\",\n\t\t\t\"FO|Atlantic/Faroe\",\n\t\t\t\"FR|Europe/Paris\",\n\t\t\t\"GA|Africa/Lagos Africa/Libreville\",\n\t\t\t\"GB|Europe/London\",\n\t\t\t\"GD|America/Port_of_Spain America/Grenada\",\n\t\t\t\"GE|Asia/Tbilisi\",\n\t\t\t\"GF|America/Cayenne\",\n\t\t\t\"GG|Europe/London Europe/Guernsey\",\n\t\t\t\"GH|Africa/Accra\",\n\t\t\t\"GI|Europe/Gibraltar\",\n\t\t\t\"GL|America/Godthab America/Danmarkshavn America/Scoresbysund America/Thule\",\n\t\t\t\"GM|Africa/Abidjan Africa/Banjul\",\n\t\t\t\"GN|Africa/Abidjan Africa/Conakry\",\n\t\t\t\"GP|America/Port_of_Spain America/Guadeloupe\",\n\t\t\t\"GQ|Africa/Lagos Africa/Malabo\",\n\t\t\t\"GR|Europe/Athens\",\n\t\t\t\"GS|Atlantic/South_Georgia\",\n\t\t\t\"GT|America/Guatemala\",\n\t\t\t\"GU|Pacific/Guam\",\n\t\t\t\"GW|Africa/Bissau\",\n\t\t\t\"GY|America/Guyana\",\n\t\t\t\"HK|Asia/Hong_Kong\",\n\t\t\t\"HN|America/Tegucigalpa\",\n\t\t\t\"HR|Europe/Belgrade Europe/Zagreb\",\n\t\t\t\"HT|America/Port-au-Prince\",\n\t\t\t\"HU|Europe/Budapest\",\n\t\t\t\"ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura\",\n\t\t\t\"IE|Europe/Dublin\",\n\t\t\t\"IL|Asia/Jerusalem\",\n\t\t\t\"IM|Europe/London Europe/Isle_of_Man\",\n\t\t\t\"IN|Asia/Kolkata\",\n\t\t\t\"IO|Indian/Chagos\",\n\t\t\t\"IQ|Asia/Baghdad\",\n\t\t\t\"IR|Asia/Tehran\",\n\t\t\t\"IS|Atlantic/Reykjavik\",\n\t\t\t\"IT|Europe/Rome\",\n\t\t\t\"JE|Europe/London Europe/Jersey\",\n\t\t\t\"JM|America/Jamaica\",\n\t\t\t\"JO|Asia/Amman\",\n\t\t\t\"JP|Asia/Tokyo\",\n\t\t\t\"KE|Africa/Nairobi\",\n\t\t\t\"KG|Asia/Bishkek\",\n\t\t\t\"KH|Asia/Bangkok Asia/Phnom_Penh\",\n\t\t\t\"KI|Pacific/Tarawa Pacific/Enderbury Pacific/Kiritimati\",\n\t\t\t\"KM|Africa/Nairobi Indian/Comoro\",\n\t\t\t\"KN|America/Port_of_Spain America/St_Kitts\",\n\t\t\t\"KP|Asia/Pyongyang\",\n\t\t\t\"KR|Asia/Seoul\",\n\t\t\t\"KW|Asia/Riyadh Asia/Kuwait\",\n\t\t\t\"KY|America/Panama America/Cayman\",\n\t\t\t\"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral\",\n\t\t\t\"LA|Asia/Bangkok Asia/Vientiane\",\n\t\t\t\"LB|Asia/Beirut\",\n\t\t\t\"LC|America/Port_of_Spain America/St_Lucia\",\n\t\t\t\"LI|Europe/Zurich Europe/Vaduz\",\n\t\t\t\"LK|Asia/Colombo\",\n\t\t\t\"LR|Africa/Monrovia\",\n\t\t\t\"LS|Africa/Johannesburg Africa/Maseru\",\n\t\t\t\"LT|Europe/Vilnius\",\n\t\t\t\"LU|Europe/Luxembourg\",\n\t\t\t\"LV|Europe/Riga\",\n\t\t\t\"LY|Africa/Tripoli\",\n\t\t\t\"MA|Africa/Casablanca\",\n\t\t\t\"MC|Europe/Monaco\",\n\t\t\t\"MD|Europe/Chisinau\",\n\t\t\t\"ME|Europe/Belgrade Europe/Podgorica\",\n\t\t\t\"MF|America/Port_of_Spain America/Marigot\",\n\t\t\t\"MG|Africa/Nairobi Indian/Antananarivo\",\n\t\t\t\"MH|Pacific/Majuro Pacific/Kwajalein\",\n\t\t\t\"MK|Europe/Belgrade Europe/Skopje\",\n\t\t\t\"ML|Africa/Abidjan Africa/Bamako\",\n\t\t\t\"MM|Asia/Yangon\",\n\t\t\t\"MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan\",\n\t\t\t\"MO|Asia/Macau\",\n\t\t\t\"MP|Pacific/Guam Pacific/Saipan\",\n\t\t\t\"MQ|America/Martinique\",\n\t\t\t\"MR|Africa/Abidjan Africa/Nouakchott\",\n\t\t\t\"MS|America/Port_of_Spain America/Montserrat\",\n\t\t\t\"MT|Europe/Malta\",\n\t\t\t\"MU|Indian/Mauritius\",\n\t\t\t\"MV|Indian/Maldives\",\n\t\t\t\"MW|Africa/Maputo Africa/Blantyre\",\n\t\t\t\"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Mazatlan America/Chihuahua America/Ojinaga America/Hermosillo America/Tijuana America/Bahia_Banderas\",\n\t\t\t\"MY|Asia/Kuala_Lumpur Asia/Kuching\",\n\t\t\t\"MZ|Africa/Maputo\",\n\t\t\t\"NA|Africa/Windhoek\",\n\t\t\t\"NC|Pacific/Noumea\",\n\t\t\t\"NE|Africa/Lagos Africa/Niamey\",\n\t\t\t\"NF|Pacific/Norfolk\",\n\t\t\t\"NG|Africa/Lagos\",\n\t\t\t\"NI|America/Managua\",\n\t\t\t\"NL|Europe/Amsterdam\",\n\t\t\t\"NO|Europe/Oslo\",\n\t\t\t\"NP|Asia/Kathmandu\",\n\t\t\t\"NR|Pacific/Nauru\",\n\t\t\t\"NU|Pacific/Niue\",\n\t\t\t\"NZ|Pacific/Auckland Pacific/Chatham\",\n\t\t\t\"OM|Asia/Dubai Asia/Muscat\",\n\t\t\t\"PA|America/Panama\",\n\t\t\t\"PE|America/Lima\",\n\t\t\t\"PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier\",\n\t\t\t\"PG|Pacific/Port_Moresby Pacific/Bougainville\",\n\t\t\t\"PH|Asia/Manila\",\n\t\t\t\"PK|Asia/Karachi\",\n\t\t\t\"PL|Europe/Warsaw\",\n\t\t\t\"PM|America/Miquelon\",\n\t\t\t\"PN|Pacific/Pitcairn\",\n\t\t\t\"PR|America/Puerto_Rico\",\n\t\t\t\"PS|Asia/Gaza Asia/Hebron\",\n\t\t\t\"PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores\",\n\t\t\t\"PW|Pacific/Palau\",\n\t\t\t\"PY|America/Asuncion\",\n\t\t\t\"QA|Asia/Qatar\",\n\t\t\t\"RE|Indian/Reunion\",\n\t\t\t\"RO|Europe/Bucharest\",\n\t\t\t\"RS|Europe/Belgrade\",\n\t\t\t\"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Astrakhan Europe/Volgograd Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr\",\n\t\t\t\"RW|Africa/Maputo Africa/Kigali\",\n\t\t\t\"SA|Asia/Riyadh\",\n\t\t\t\"SB|Pacific/Guadalcanal\",\n\t\t\t\"SC|Indian/Mahe\",\n\t\t\t\"SD|Africa/Khartoum\",\n\t\t\t\"SE|Europe/Stockholm\",\n\t\t\t\"SG|Asia/Singapore\",\n\t\t\t\"SH|Africa/Abidjan Atlantic/St_Helena\",\n\t\t\t\"SI|Europe/Belgrade Europe/Ljubljana\",\n\t\t\t\"SJ|Europe/Oslo Arctic/Longyearbyen\",\n\t\t\t\"SK|Europe/Prague Europe/Bratislava\",\n\t\t\t\"SL|Africa/Abidjan Africa/Freetown\",\n\t\t\t\"SM|Europe/Rome Europe/San_Marino\",\n\t\t\t\"SN|Africa/Abidjan Africa/Dakar\",\n\t\t\t\"SO|Africa/Nairobi Africa/Mogadishu\",\n\t\t\t\"SR|America/Paramaribo\",\n\t\t\t\"SS|Africa/Juba\",\n\t\t\t\"ST|Africa/Sao_Tome\",\n\t\t\t\"SV|America/El_Salvador\",\n\t\t\t\"SX|America/Curacao America/Lower_Princes\",\n\t\t\t\"SY|Asia/Damascus\",\n\t\t\t\"SZ|Africa/Johannesburg Africa/Mbabane\",\n\t\t\t\"TC|America/Grand_Turk\",\n\t\t\t\"TD|Africa/Ndjamena\",\n\t\t\t\"TF|Indian/Reunion Indian/Kerguelen\",\n\t\t\t\"TG|Africa/Abidjan Africa/Lome\",\n\t\t\t\"TH|Asia/Bangkok\",\n\t\t\t\"TJ|Asia/Dushanbe\",\n\t\t\t\"TK|Pacific/Fakaofo\",\n\t\t\t\"TL|Asia/Dili\",\n\t\t\t\"TM|Asia/Ashgabat\",\n\t\t\t\"TN|Africa/Tunis\",\n\t\t\t\"TO|Pacific/Tongatapu\",\n\t\t\t\"TR|Europe/Istanbul\",\n\t\t\t\"TT|America/Port_of_Spain\",\n\t\t\t\"TV|Pacific/Funafuti\",\n\t\t\t\"TW|Asia/Taipei\",\n\t\t\t\"TZ|Africa/Nairobi Africa/Dar_es_Salaam\",\n\t\t\t\"UA|Europe/Simferopol Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye\",\n\t\t\t\"UG|Africa/Nairobi Africa/Kampala\",\n\t\t\t\"UM|Pacific/Pago_Pago Pacific/Wake Pacific/Honolulu Pacific/Midway\",\n\t\t\t\"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu\",\n\t\t\t\"UY|America/Montevideo\",\n\t\t\t\"UZ|Asia/Samarkand Asia/Tashkent\",\n\t\t\t\"VA|Europe/Rome Europe/Vatican\",\n\t\t\t\"VC|America/Port_of_Spain America/St_Vincent\",\n\t\t\t\"VE|America/Caracas\",\n\t\t\t\"VG|America/Port_of_Spain America/Tortola\",\n\t\t\t\"VI|America/Port_of_Spain America/St_Thomas\",\n\t\t\t\"VN|Asia/Bangkok Asia/Ho_Chi_Minh\",\n\t\t\t\"VU|Pacific/Efate\",\n\t\t\t\"WF|Pacific/Wallis\",\n\t\t\t\"WS|Pacific/Apia\",\n\t\t\t\"YE|Asia/Riyadh Asia/Aden\",\n\t\t\t\"YT|Africa/Nairobi Indian/Mayotte\",\n\t\t\t\"ZA|Africa/Johannesburg\",\n\t\t\t\"ZM|Africa/Maputo Africa/Lusaka\",\n\t\t\t\"ZW|Africa/Maputo Africa/Harare\"\n\t\t]\n\t});\n\n\n\treturn moment;\n}));\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/moment-timezone/moment-timezone-with-data-2012-2022.js",
    "content": "//! moment-timezone.js\n//! version : 0.5.28\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory);                 // AMD\n\t} else {\n\t\tfactory(root.moment);                        // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.28\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils  = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname       : data[0],\n\t\t\tabbrs      : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets    : mapIndices(offsets, indices),\n\t\t\tuntils     : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name       = unpacked.name;\n\t\t\tthis.abbrs      = unpacked.abbrs;\n\t\t\tthis.untils     = unpacked.untils;\n\t\t\tthis.offsets    = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target  = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils  = this.untils,\n\t\t\t\tmax     = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset     = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout  = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version      = VERSION;\n\ttz.dataVersion  = '';\n\ttz._zones       = zones;\n\ttz._links       = links;\n\ttz._names       = names;\n\ttz._countries\t= countries;\n\ttz.add          = addZone;\n\ttz.link         = addLink;\n\ttz.load         = loadData;\n\ttz.zone         = getZone;\n\ttz.zoneExists   = zoneExists; // deprecated in 0.1.0\n\ttz.guess        = guess;\n\ttz.names        = getNames;\n\ttz.Zone         = Zone;\n\ttz.unpack       = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset  = needsOffset;\n\ttz.moveInvalidForward   = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries    = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName  = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr  = abbrWrap(fn.zoneAbbr);\n\tfn.utc       = resetZoneWrap(fn.utc);\n\tfn.local     = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\tloadData({\n\t\t\"version\": \"2019c\",\n\t\t\"zones\": [\n\t\t\t\"Africa/Abidjan|GMT|0|0||48e5\",\n\t\t\t\"Africa/Nairobi|EAT|-30|0||47e5\",\n\t\t\t\"Africa/Algiers|CET|-10|0||26e5\",\n\t\t\t\"Africa/Lagos|WAT|-10|0||17e6\",\n\t\t\t\"Africa/Maputo|CAT|-20|0||26e5\",\n\t\t\t\"Africa/Cairo|EET EEST|-20 -30|01010|1M2m0 gL0 e10 mn0|15e6\",\n\t\t\t\"Africa/Casablanca|+00 +01|0 -10|010101010101010101010101010101010101|1H3C0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0|32e5\",\n\t\t\t\"Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|11e6\",\n\t\t\t\"Africa/Johannesburg|SAST|-20|0||84e5\",\n\t\t\t\"Africa/Khartoum|EAT CAT|-30 -20|01|1Usl0|51e5\",\n\t\t\t\"Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00|\",\n\t\t\t\"Africa/Tripoli|EET CET CEST|-20 -10 -20|0120|1IlA0 TA0 1o00|11e5\",\n\t\t\t\"Africa/Windhoek|CAT WAT|-20 -10|0101010101010|1GQo0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4\",\n\t\t\t\"America/Adak|HST HDT|a0 90|01010101010101010101010|1GIc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|326\",\n\t\t\t\"America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1GIb0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|30e4\",\n\t\t\t\"America/Santo_Domingo|AST|40|0||29e5\",\n\t\t\t\"America/Araguaina|-03 -02|30 20|010|1IdD0 Lz0|14e4\",\n\t\t\t\"America/Fortaleza|-03|30|0||34e5\",\n\t\t\t\"America/Asuncion|-03 -04|30 40|01010101010101010101010|1GTf0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0|28e5\",\n\t\t\t\"America/Panama|EST|50|0||15e5\",\n\t\t\t\"America/Mexico_City|CST CDT|60 50|01010101010101010101010|1GQw0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6\",\n\t\t\t\"America/Bahia|-02 -03|20 30|01|1GCq0|27e5\",\n\t\t\t\"America/Managua|CST|60|0||22e5\",\n\t\t\t\"America/La_Paz|-04|40|0||19e5\",\n\t\t\t\"America/Lima|-05|50|0||11e6\",\n\t\t\t\"America/Denver|MST MDT|70 60|01010101010101010101010|1GI90 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|26e5\",\n\t\t\t\"America/Campo_Grande|-03 -04|30 40|0101010101010101|1GCr0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4\",\n\t\t\t\"America/Cancun|CST CDT EST|60 50 50|01010102|1GQw0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4\",\n\t\t\t\"America/Caracas|-0430 -04|4u 40|01|1QMT0|29e5\",\n\t\t\t\"America/Chicago|CST CDT|60 50|01010101010101010101010|1GI80 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|92e5\",\n\t\t\t\"America/Chihuahua|MST MDT|70 60|01010101010101010101010|1GQx0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4\",\n\t\t\t\"America/Phoenix|MST|70|0||42e5\",\n\t\t\t\"America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1GIa0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|15e6\",\n\t\t\t\"America/New_York|EST EDT|50 40|01010101010101010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|21e6\",\n\t\t\t\"America/Rio_Branco|-04 -05|40 50|01|1KLE0|31e4\",\n\t\t\t\"America/Fort_Nelson|PST PDT MST|80 70 70|01010102|1GIa0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2\",\n\t\t\t\"America/Halifax|AST ADT|40 30|01010101010101010101010|1GI60 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|39e4\",\n\t\t\t\"America/Godthab|-03 -02|30 20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|17e3\",\n\t\t\t\"America/Grand_Turk|EST EDT AST|50 40 40|0101010121010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|37e2\",\n\t\t\t\"America/Havana|CST CDT|50 40|01010101010101010101010|1GQt0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0|21e5\",\n\t\t\t\"America/Metlakatla|PST AKST AKDT|80 90 80|01212120121212121|1PAa0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|14e2\",\n\t\t\t\"America/Miquelon|-03 -02|30 20|01010101010101010101010|1GI50 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|61e2\",\n\t\t\t\"America/Montevideo|-02 -03|20 30|01010101|1GI40 1o10 11z0 1o10 11z0 1o10 11z0|17e5\",\n\t\t\t\"America/Noronha|-02|20|0||30e2\",\n\t\t\t\"America/Port-au-Prince|EST EDT|50 40|010101010101010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|23e5\",\n\t\t\t\"Antarctica/Palmer|-03 -04|30 40|010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40\",\n\t\t\t\"America/Santiago|-03 -04|30 40|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|62e5\",\n\t\t\t\"America/Sao_Paulo|-02 -03|20 30|0101010101010101|1GCq0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6\",\n\t\t\t\"Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e4\",\n\t\t\t\"America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1GI5u 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|11e4\",\n\t\t\t\"Antarctica/Casey|+11 +08|-b0 -80|0101|1GAF0 blz0 3m10|10\",\n\t\t\t\"Antarctica/Davis|+05 +07|-50 -70|01|1GAI0|70\",\n\t\t\t\"Pacific/Port_Moresby|+10|-a0|0||25e4\",\n\t\t\t\"Pacific/Guadalcanal|+11|-b0|0||11e4\",\n\t\t\t\"Asia/Tashkent|+05|-50|0||23e5\",\n\t\t\t\"Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5\",\n\t\t\t\"Asia/Baghdad|+03|-30|0||66e5\",\n\t\t\t\"Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|40\",\n\t\t\t\"Asia/Dhaka|+06|-60|0||16e6\",\n\t\t\t\"Asia/Amman|EET EEST|-20 -30|010101010101010101010|1GPy0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00|25e5\",\n\t\t\t\"Asia/Kamchatka|+12|-c0|0||18e4\",\n\t\t\t\"Asia/Baku|+04 +05|-40 -50|010101010|1GNA0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5\",\n\t\t\t\"Asia/Bangkok|+07|-70|0||15e6\",\n\t\t\t\"Asia/Barnaul|+07 +06|-70 -60|010|1N7v0 3rd0|\",\n\t\t\t\"Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1GNy0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|22e5\",\n\t\t\t\"Asia/Kuala_Lumpur|+08|-80|0||71e5\",\n\t\t\t\"Asia/Kolkata|IST|-5u|0||15e6\",\n\t\t\t\"Asia/Chita|+10 +08 +09|-a0 -80 -90|012|1N7s0 3re0|33e4\",\n\t\t\t\"Asia/Ulaanbaatar|+08 +09|-80 -90|01010|1O8G0 1cJ0 1cP0 1cJ0|12e5\",\n\t\t\t\"Asia/Shanghai|CST|-80|0||23e6\",\n\t\t\t\"Asia/Colombo|+0530|-5u|0||22e5\",\n\t\t\t\"Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1GPy0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5\",\n\t\t\t\"Asia/Dili|+09|-90|0||19e4\",\n\t\t\t\"Asia/Dubai|+04|-40|0||39e5\",\n\t\t\t\"Asia/Famagusta|EET EEST +03|-20 -30 -30|0101010101201010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|\",\n\t\t\t\"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1GPy0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0|18e5\",\n\t\t\t\"Asia/Hong_Kong|HKT|-80|0||73e5\",\n\t\t\t\"Asia/Hovd|+07 +08|-70 -80|01010|1O8H0 1cJ0 1cP0 1cJ0|81e3\",\n\t\t\t\"Asia/Irkutsk|+09 +08|-90 -80|01|1N7t0|60e4\",\n\t\t\t\"Europe/Istanbul|EET EEST +03|-20 -30 -30|01010101012|1GNB0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6\",\n\t\t\t\"Asia/Jakarta|WIB|-70|0||31e6\",\n\t\t\t\"Asia/Jayapura|WIT|-90|0||26e4\",\n\t\t\t\"Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1GPA0 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0|81e4\",\n\t\t\t\"Asia/Kabul|+0430|-4u|0||46e5\",\n\t\t\t\"Asia/Karachi|PKT|-50|0||24e6\",\n\t\t\t\"Asia/Kathmandu|+0545|-5J|0||12e5\",\n\t\t\t\"Asia/Yakutsk|+10 +09|-a0 -90|01|1N7s0|28e4\",\n\t\t\t\"Asia/Krasnoyarsk|+08 +07|-80 -70|01|1N7u0|10e5\",\n\t\t\t\"Asia/Magadan|+12 +10 +11|-c0 -a0 -b0|012|1N7q0 3Cq0|95e3\",\n\t\t\t\"Asia/Makassar|WITA|-80|0||15e5\",\n\t\t\t\"Asia/Manila|PST|-80|0||24e6\",\n\t\t\t\"Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|35e5\",\n\t\t\t\"Asia/Novosibirsk|+07 +06|-70 -60|010|1N7v0 4eN0|15e5\",\n\t\t\t\"Asia/Omsk|+07 +06|-70 -60|01|1N7v0|12e5\",\n\t\t\t\"Asia/Pyongyang|KST KST|-90 -8u|010|1P4D0 6BA0|29e5\",\n\t\t\t\"Asia/Qyzylorda|+06 +05|-60 -50|01|1Xei0|73e4\",\n\t\t\t\"Asia/Rangoon|+0630|-6u|0||48e5\",\n\t\t\t\"Asia/Sakhalin|+11 +10|-b0 -a0|010|1N7r0 3rd0|58e4\",\n\t\t\t\"Asia/Seoul|KST|-90|0||23e6\",\n\t\t\t\"Asia/Srednekolymsk|+12 +11|-c0 -b0|01|1N7q0|35e2\",\n\t\t\t\"Asia/Tehran|+0330 +0430|-3u -4u|01010101010101010101010|1GLUu 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6\",\n\t\t\t\"Asia/Tokyo|JST|-90|0||38e6\",\n\t\t\t\"Asia/Tomsk|+07 +06|-70 -60|010|1N7v0 3Qp0|10e5\",\n\t\t\t\"Asia/Vladivostok|+11 +10|-b0 -a0|01|1N7r0|60e4\",\n\t\t\t\"Asia/Yekaterinburg|+06 +05|-60 -50|01|1N7w0|14e5\",\n\t\t\t\"Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|27e5\",\n\t\t\t\"Atlantic/Cape_Verde|-01|10|0||50e4\",\n\t\t\t\"Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1GQg0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5\",\n\t\t\t\"Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1GQgu 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5\",\n\t\t\t\"Australia/Brisbane|AEST|-a0|0||20e5\",\n\t\t\t\"Australia/Darwin|ACST|-9u|0||12e4\",\n\t\t\t\"Australia/Eucla|+0845|-8J|0||368\",\n\t\t\t\"Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1GQf0 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347\",\n\t\t\t\"Australia/Perth|AWST|-80|0||18e5\",\n\t\t\t\"Pacific/Easter|-05 -06|50 60|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|30e2\",\n\t\t\t\"Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|12e5\",\n\t\t\t\"Etc/GMT-1|+01|-10|0||\",\n\t\t\t\"Pacific/Fakaofo|+13|-d0|0||483\",\n\t\t\t\"Pacific/Kiritimati|+14|-e0|0||51e2\",\n\t\t\t\"Etc/GMT-2|+02|-20|0||\",\n\t\t\t\"Pacific/Tahiti|-10|a0|0||18e4\",\n\t\t\t\"Pacific/Niue|-11|b0|0||12e2\",\n\t\t\t\"Etc/GMT+12|-12|c0|0||\",\n\t\t\t\"Pacific/Galapagos|-06|60|0||25e3\",\n\t\t\t\"Etc/GMT+7|-07|70|0||\",\n\t\t\t\"Pacific/Pitcairn|-08|80|0||56\",\n\t\t\t\"Pacific/Gambier|-09|90|0||125\",\n\t\t\t\"Etc/UTC|UTC|0|0||\",\n\t\t\t\"Europe/Ulyanovsk|+04 +03|-40 -30|010|1N7y0 3rd0|13e5\",\n\t\t\t\"Europe/London|GMT BST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|10e6\",\n\t\t\t\"Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1GNA0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|67e4\",\n\t\t\t\"Europe/Kaliningrad|+03 EET|-30 -20|01|1N7z0|44e4\",\n\t\t\t\"Europe/Kirov|+04 +03|-40 -30|01|1N7y0|48e4\",\n\t\t\t\"Europe/Moscow|MSK MSK|-40 -30|01|1N7y0|16e6\",\n\t\t\t\"Europe/Saratov|+04 +03|-40 -30|010|1N7y0 5810|\",\n\t\t\t\"Europe/Simferopol|EET EEST MSK MSK|-20 -30 -40 -30|0101023|1GNB0 1qM0 11A0 1o00 11z0 1nW0|33e4\",\n\t\t\t\"Europe/Volgograd|+04 +03|-40 -30|010|1N7y0 9Jd0|10e5\",\n\t\t\t\"Pacific/Honolulu|HST|a0|0||37e4\",\n\t\t\t\"MET|MET MEST|-10 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|\",\n\t\t\t\"Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|600\",\n\t\t\t\"Pacific/Apia|+14 +13|-e0 -d0|01010101010101010101010|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|37e3\",\n\t\t\t\"Pacific/Bougainville|+10 +11|-a0 -b0|01|1NwE0|18e4\",\n\t\t\t\"Pacific/Fiji|+13 +12|-d0 -c0|01010101010101010101010|1Goe0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 20o0 s00 20o0 pc0 20o0|88e4\",\n\t\t\t\"Pacific/Guam|ChST|-a0|0||17e4\",\n\t\t\t\"Pacific/Marquesas|-0930|9u|0||86e2\",\n\t\t\t\"Pacific/Pago_Pago|SST|b0|0||37e2\",\n\t\t\t\"Pacific/Norfolk|+1130 +11 +12|-bu -b0 -c0|012121212|1PoCu 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4\",\n\t\t\t\"Pacific/Tongatapu|+13 +14|-d0 -e0|010|1S4d0 s00|75e3\"\n\t\t],\n\t\t\"links\": [\n\t\t\t\"Africa/Abidjan|Africa/Accra\",\n\t\t\t\"Africa/Abidjan|Africa/Bamako\",\n\t\t\t\"Africa/Abidjan|Africa/Banjul\",\n\t\t\t\"Africa/Abidjan|Africa/Bissau\",\n\t\t\t\"Africa/Abidjan|Africa/Conakry\",\n\t\t\t\"Africa/Abidjan|Africa/Dakar\",\n\t\t\t\"Africa/Abidjan|Africa/Freetown\",\n\t\t\t\"Africa/Abidjan|Africa/Lome\",\n\t\t\t\"Africa/Abidjan|Africa/Monrovia\",\n\t\t\t\"Africa/Abidjan|Africa/Nouakchott\",\n\t\t\t\"Africa/Abidjan|Africa/Ouagadougou\",\n\t\t\t\"Africa/Abidjan|Africa/Timbuktu\",\n\t\t\t\"Africa/Abidjan|America/Danmarkshavn\",\n\t\t\t\"Africa/Abidjan|Atlantic/Reykjavik\",\n\t\t\t\"Africa/Abidjan|Atlantic/St_Helena\",\n\t\t\t\"Africa/Abidjan|Etc/GMT\",\n\t\t\t\"Africa/Abidjan|Etc/GMT+0\",\n\t\t\t\"Africa/Abidjan|Etc/GMT-0\",\n\t\t\t\"Africa/Abidjan|Etc/GMT0\",\n\t\t\t\"Africa/Abidjan|Etc/Greenwich\",\n\t\t\t\"Africa/Abidjan|GMT\",\n\t\t\t\"Africa/Abidjan|GMT+0\",\n\t\t\t\"Africa/Abidjan|GMT-0\",\n\t\t\t\"Africa/Abidjan|GMT0\",\n\t\t\t\"Africa/Abidjan|Greenwich\",\n\t\t\t\"Africa/Abidjan|Iceland\",\n\t\t\t\"Africa/Algiers|Africa/Tunis\",\n\t\t\t\"Africa/Cairo|Egypt\",\n\t\t\t\"Africa/Casablanca|Africa/El_Aaiun\",\n\t\t\t\"Africa/Johannesburg|Africa/Maseru\",\n\t\t\t\"Africa/Johannesburg|Africa/Mbabane\",\n\t\t\t\"Africa/Lagos|Africa/Bangui\",\n\t\t\t\"Africa/Lagos|Africa/Brazzaville\",\n\t\t\t\"Africa/Lagos|Africa/Douala\",\n\t\t\t\"Africa/Lagos|Africa/Kinshasa\",\n\t\t\t\"Africa/Lagos|Africa/Libreville\",\n\t\t\t\"Africa/Lagos|Africa/Luanda\",\n\t\t\t\"Africa/Lagos|Africa/Malabo\",\n\t\t\t\"Africa/Lagos|Africa/Ndjamena\",\n\t\t\t\"Africa/Lagos|Africa/Niamey\",\n\t\t\t\"Africa/Lagos|Africa/Porto-Novo\",\n\t\t\t\"Africa/Maputo|Africa/Blantyre\",\n\t\t\t\"Africa/Maputo|Africa/Bujumbura\",\n\t\t\t\"Africa/Maputo|Africa/Gaborone\",\n\t\t\t\"Africa/Maputo|Africa/Harare\",\n\t\t\t\"Africa/Maputo|Africa/Kigali\",\n\t\t\t\"Africa/Maputo|Africa/Lubumbashi\",\n\t\t\t\"Africa/Maputo|Africa/Lusaka\",\n\t\t\t\"Africa/Nairobi|Africa/Addis_Ababa\",\n\t\t\t\"Africa/Nairobi|Africa/Asmara\",\n\t\t\t\"Africa/Nairobi|Africa/Asmera\",\n\t\t\t\"Africa/Nairobi|Africa/Dar_es_Salaam\",\n\t\t\t\"Africa/Nairobi|Africa/Djibouti\",\n\t\t\t\"Africa/Nairobi|Africa/Juba\",\n\t\t\t\"Africa/Nairobi|Africa/Kampala\",\n\t\t\t\"Africa/Nairobi|Africa/Mogadishu\",\n\t\t\t\"Africa/Nairobi|Indian/Antananarivo\",\n\t\t\t\"Africa/Nairobi|Indian/Comoro\",\n\t\t\t\"Africa/Nairobi|Indian/Mayotte\",\n\t\t\t\"Africa/Tripoli|Libya\",\n\t\t\t\"America/Adak|America/Atka\",\n\t\t\t\"America/Adak|US/Aleutian\",\n\t\t\t\"America/Anchorage|America/Juneau\",\n\t\t\t\"America/Anchorage|America/Nome\",\n\t\t\t\"America/Anchorage|America/Sitka\",\n\t\t\t\"America/Anchorage|America/Yakutat\",\n\t\t\t\"America/Anchorage|US/Alaska\",\n\t\t\t\"America/Campo_Grande|America/Cuiaba\",\n\t\t\t\"America/Chicago|America/Indiana/Knox\",\n\t\t\t\"America/Chicago|America/Indiana/Tell_City\",\n\t\t\t\"America/Chicago|America/Knox_IN\",\n\t\t\t\"America/Chicago|America/Matamoros\",\n\t\t\t\"America/Chicago|America/Menominee\",\n\t\t\t\"America/Chicago|America/North_Dakota/Beulah\",\n\t\t\t\"America/Chicago|America/North_Dakota/Center\",\n\t\t\t\"America/Chicago|America/North_Dakota/New_Salem\",\n\t\t\t\"America/Chicago|America/Rainy_River\",\n\t\t\t\"America/Chicago|America/Rankin_Inlet\",\n\t\t\t\"America/Chicago|America/Resolute\",\n\t\t\t\"America/Chicago|America/Winnipeg\",\n\t\t\t\"America/Chicago|CST6CDT\",\n\t\t\t\"America/Chicago|Canada/Central\",\n\t\t\t\"America/Chicago|US/Central\",\n\t\t\t\"America/Chicago|US/Indiana-Starke\",\n\t\t\t\"America/Chihuahua|America/Mazatlan\",\n\t\t\t\"America/Chihuahua|Mexico/BajaSur\",\n\t\t\t\"America/Denver|America/Boise\",\n\t\t\t\"America/Denver|America/Cambridge_Bay\",\n\t\t\t\"America/Denver|America/Edmonton\",\n\t\t\t\"America/Denver|America/Inuvik\",\n\t\t\t\"America/Denver|America/Ojinaga\",\n\t\t\t\"America/Denver|America/Shiprock\",\n\t\t\t\"America/Denver|America/Yellowknife\",\n\t\t\t\"America/Denver|Canada/Mountain\",\n\t\t\t\"America/Denver|MST7MDT\",\n\t\t\t\"America/Denver|Navajo\",\n\t\t\t\"America/Denver|US/Mountain\",\n\t\t\t\"America/Fortaleza|America/Argentina/Buenos_Aires\",\n\t\t\t\"America/Fortaleza|America/Argentina/Catamarca\",\n\t\t\t\"America/Fortaleza|America/Argentina/ComodRivadavia\",\n\t\t\t\"America/Fortaleza|America/Argentina/Cordoba\",\n\t\t\t\"America/Fortaleza|America/Argentina/Jujuy\",\n\t\t\t\"America/Fortaleza|America/Argentina/La_Rioja\",\n\t\t\t\"America/Fortaleza|America/Argentina/Mendoza\",\n\t\t\t\"America/Fortaleza|America/Argentina/Rio_Gallegos\",\n\t\t\t\"America/Fortaleza|America/Argentina/Salta\",\n\t\t\t\"America/Fortaleza|America/Argentina/San_Juan\",\n\t\t\t\"America/Fortaleza|America/Argentina/San_Luis\",\n\t\t\t\"America/Fortaleza|America/Argentina/Tucuman\",\n\t\t\t\"America/Fortaleza|America/Argentina/Ushuaia\",\n\t\t\t\"America/Fortaleza|America/Belem\",\n\t\t\t\"America/Fortaleza|America/Buenos_Aires\",\n\t\t\t\"America/Fortaleza|America/Catamarca\",\n\t\t\t\"America/Fortaleza|America/Cayenne\",\n\t\t\t\"America/Fortaleza|America/Cordoba\",\n\t\t\t\"America/Fortaleza|America/Jujuy\",\n\t\t\t\"America/Fortaleza|America/Maceio\",\n\t\t\t\"America/Fortaleza|America/Mendoza\",\n\t\t\t\"America/Fortaleza|America/Paramaribo\",\n\t\t\t\"America/Fortaleza|America/Recife\",\n\t\t\t\"America/Fortaleza|America/Rosario\",\n\t\t\t\"America/Fortaleza|America/Santarem\",\n\t\t\t\"America/Fortaleza|Antarctica/Rothera\",\n\t\t\t\"America/Fortaleza|Atlantic/Stanley\",\n\t\t\t\"America/Fortaleza|Etc/GMT+3\",\n\t\t\t\"America/Halifax|America/Glace_Bay\",\n\t\t\t\"America/Halifax|America/Goose_Bay\",\n\t\t\t\"America/Halifax|America/Moncton\",\n\t\t\t\"America/Halifax|America/Thule\",\n\t\t\t\"America/Halifax|Atlantic/Bermuda\",\n\t\t\t\"America/Halifax|Canada/Atlantic\",\n\t\t\t\"America/Havana|Cuba\",\n\t\t\t\"America/La_Paz|America/Boa_Vista\",\n\t\t\t\"America/La_Paz|America/Guyana\",\n\t\t\t\"America/La_Paz|America/Manaus\",\n\t\t\t\"America/La_Paz|America/Porto_Velho\",\n\t\t\t\"America/La_Paz|Brazil/West\",\n\t\t\t\"America/La_Paz|Etc/GMT+4\",\n\t\t\t\"America/Lima|America/Bogota\",\n\t\t\t\"America/Lima|America/Guayaquil\",\n\t\t\t\"America/Lima|Etc/GMT+5\",\n\t\t\t\"America/Los_Angeles|America/Dawson\",\n\t\t\t\"America/Los_Angeles|America/Ensenada\",\n\t\t\t\"America/Los_Angeles|America/Santa_Isabel\",\n\t\t\t\"America/Los_Angeles|America/Tijuana\",\n\t\t\t\"America/Los_Angeles|America/Vancouver\",\n\t\t\t\"America/Los_Angeles|America/Whitehorse\",\n\t\t\t\"America/Los_Angeles|Canada/Pacific\",\n\t\t\t\"America/Los_Angeles|Canada/Yukon\",\n\t\t\t\"America/Los_Angeles|Mexico/BajaNorte\",\n\t\t\t\"America/Los_Angeles|PST8PDT\",\n\t\t\t\"America/Los_Angeles|US/Pacific\",\n\t\t\t\"America/Los_Angeles|US/Pacific-New\",\n\t\t\t\"America/Managua|America/Belize\",\n\t\t\t\"America/Managua|America/Costa_Rica\",\n\t\t\t\"America/Managua|America/El_Salvador\",\n\t\t\t\"America/Managua|America/Guatemala\",\n\t\t\t\"America/Managua|America/Regina\",\n\t\t\t\"America/Managua|America/Swift_Current\",\n\t\t\t\"America/Managua|America/Tegucigalpa\",\n\t\t\t\"America/Managua|Canada/Saskatchewan\",\n\t\t\t\"America/Mexico_City|America/Bahia_Banderas\",\n\t\t\t\"America/Mexico_City|America/Merida\",\n\t\t\t\"America/Mexico_City|America/Monterrey\",\n\t\t\t\"America/Mexico_City|Mexico/General\",\n\t\t\t\"America/New_York|America/Detroit\",\n\t\t\t\"America/New_York|America/Fort_Wayne\",\n\t\t\t\"America/New_York|America/Indiana/Indianapolis\",\n\t\t\t\"America/New_York|America/Indiana/Marengo\",\n\t\t\t\"America/New_York|America/Indiana/Petersburg\",\n\t\t\t\"America/New_York|America/Indiana/Vevay\",\n\t\t\t\"America/New_York|America/Indiana/Vincennes\",\n\t\t\t\"America/New_York|America/Indiana/Winamac\",\n\t\t\t\"America/New_York|America/Indianapolis\",\n\t\t\t\"America/New_York|America/Iqaluit\",\n\t\t\t\"America/New_York|America/Kentucky/Louisville\",\n\t\t\t\"America/New_York|America/Kentucky/Monticello\",\n\t\t\t\"America/New_York|America/Louisville\",\n\t\t\t\"America/New_York|America/Montreal\",\n\t\t\t\"America/New_York|America/Nassau\",\n\t\t\t\"America/New_York|America/Nipigon\",\n\t\t\t\"America/New_York|America/Pangnirtung\",\n\t\t\t\"America/New_York|America/Thunder_Bay\",\n\t\t\t\"America/New_York|America/Toronto\",\n\t\t\t\"America/New_York|Canada/Eastern\",\n\t\t\t\"America/New_York|EST5EDT\",\n\t\t\t\"America/New_York|US/East-Indiana\",\n\t\t\t\"America/New_York|US/Eastern\",\n\t\t\t\"America/New_York|US/Michigan\",\n\t\t\t\"America/Noronha|Atlantic/South_Georgia\",\n\t\t\t\"America/Noronha|Brazil/DeNoronha\",\n\t\t\t\"America/Noronha|Etc/GMT+2\",\n\t\t\t\"America/Panama|America/Atikokan\",\n\t\t\t\"America/Panama|America/Cayman\",\n\t\t\t\"America/Panama|America/Coral_Harbour\",\n\t\t\t\"America/Panama|America/Jamaica\",\n\t\t\t\"America/Panama|EST\",\n\t\t\t\"America/Panama|Jamaica\",\n\t\t\t\"America/Phoenix|America/Creston\",\n\t\t\t\"America/Phoenix|America/Dawson_Creek\",\n\t\t\t\"America/Phoenix|America/Hermosillo\",\n\t\t\t\"America/Phoenix|MST\",\n\t\t\t\"America/Phoenix|US/Arizona\",\n\t\t\t\"America/Rio_Branco|America/Eirunepe\",\n\t\t\t\"America/Rio_Branco|America/Porto_Acre\",\n\t\t\t\"America/Rio_Branco|Brazil/Acre\",\n\t\t\t\"America/Santiago|Chile/Continental\",\n\t\t\t\"America/Santo_Domingo|America/Anguilla\",\n\t\t\t\"America/Santo_Domingo|America/Antigua\",\n\t\t\t\"America/Santo_Domingo|America/Aruba\",\n\t\t\t\"America/Santo_Domingo|America/Barbados\",\n\t\t\t\"America/Santo_Domingo|America/Blanc-Sablon\",\n\t\t\t\"America/Santo_Domingo|America/Curacao\",\n\t\t\t\"America/Santo_Domingo|America/Dominica\",\n\t\t\t\"America/Santo_Domingo|America/Grenada\",\n\t\t\t\"America/Santo_Domingo|America/Guadeloupe\",\n\t\t\t\"America/Santo_Domingo|America/Kralendijk\",\n\t\t\t\"America/Santo_Domingo|America/Lower_Princes\",\n\t\t\t\"America/Santo_Domingo|America/Marigot\",\n\t\t\t\"America/Santo_Domingo|America/Martinique\",\n\t\t\t\"America/Santo_Domingo|America/Montserrat\",\n\t\t\t\"America/Santo_Domingo|America/Port_of_Spain\",\n\t\t\t\"America/Santo_Domingo|America/Puerto_Rico\",\n\t\t\t\"America/Santo_Domingo|America/St_Barthelemy\",\n\t\t\t\"America/Santo_Domingo|America/St_Kitts\",\n\t\t\t\"America/Santo_Domingo|America/St_Lucia\",\n\t\t\t\"America/Santo_Domingo|America/St_Thomas\",\n\t\t\t\"America/Santo_Domingo|America/St_Vincent\",\n\t\t\t\"America/Santo_Domingo|America/Tortola\",\n\t\t\t\"America/Santo_Domingo|America/Virgin\",\n\t\t\t\"America/Sao_Paulo|Brazil/East\",\n\t\t\t\"America/St_Johns|Canada/Newfoundland\",\n\t\t\t\"Antarctica/Palmer|America/Punta_Arenas\",\n\t\t\t\"Asia/Baghdad|Antarctica/Syowa\",\n\t\t\t\"Asia/Baghdad|Asia/Aden\",\n\t\t\t\"Asia/Baghdad|Asia/Bahrain\",\n\t\t\t\"Asia/Baghdad|Asia/Kuwait\",\n\t\t\t\"Asia/Baghdad|Asia/Qatar\",\n\t\t\t\"Asia/Baghdad|Asia/Riyadh\",\n\t\t\t\"Asia/Baghdad|Etc/GMT-3\",\n\t\t\t\"Asia/Baghdad|Europe/Minsk\",\n\t\t\t\"Asia/Bangkok|Asia/Ho_Chi_Minh\",\n\t\t\t\"Asia/Bangkok|Asia/Novokuznetsk\",\n\t\t\t\"Asia/Bangkok|Asia/Phnom_Penh\",\n\t\t\t\"Asia/Bangkok|Asia/Saigon\",\n\t\t\t\"Asia/Bangkok|Asia/Vientiane\",\n\t\t\t\"Asia/Bangkok|Etc/GMT-7\",\n\t\t\t\"Asia/Bangkok|Indian/Christmas\",\n\t\t\t\"Asia/Dhaka|Antarctica/Vostok\",\n\t\t\t\"Asia/Dhaka|Asia/Almaty\",\n\t\t\t\"Asia/Dhaka|Asia/Bishkek\",\n\t\t\t\"Asia/Dhaka|Asia/Dacca\",\n\t\t\t\"Asia/Dhaka|Asia/Kashgar\",\n\t\t\t\"Asia/Dhaka|Asia/Qostanay\",\n\t\t\t\"Asia/Dhaka|Asia/Thimbu\",\n\t\t\t\"Asia/Dhaka|Asia/Thimphu\",\n\t\t\t\"Asia/Dhaka|Asia/Urumqi\",\n\t\t\t\"Asia/Dhaka|Etc/GMT-6\",\n\t\t\t\"Asia/Dhaka|Indian/Chagos\",\n\t\t\t\"Asia/Dili|Etc/GMT-9\",\n\t\t\t\"Asia/Dili|Pacific/Palau\",\n\t\t\t\"Asia/Dubai|Asia/Muscat\",\n\t\t\t\"Asia/Dubai|Asia/Tbilisi\",\n\t\t\t\"Asia/Dubai|Asia/Yerevan\",\n\t\t\t\"Asia/Dubai|Etc/GMT-4\",\n\t\t\t\"Asia/Dubai|Europe/Samara\",\n\t\t\t\"Asia/Dubai|Indian/Mahe\",\n\t\t\t\"Asia/Dubai|Indian/Mauritius\",\n\t\t\t\"Asia/Dubai|Indian/Reunion\",\n\t\t\t\"Asia/Gaza|Asia/Hebron\",\n\t\t\t\"Asia/Hong_Kong|Hongkong\",\n\t\t\t\"Asia/Jakarta|Asia/Pontianak\",\n\t\t\t\"Asia/Jerusalem|Asia/Tel_Aviv\",\n\t\t\t\"Asia/Jerusalem|Israel\",\n\t\t\t\"Asia/Kamchatka|Asia/Anadyr\",\n\t\t\t\"Asia/Kamchatka|Etc/GMT-12\",\n\t\t\t\"Asia/Kamchatka|Kwajalein\",\n\t\t\t\"Asia/Kamchatka|Pacific/Funafuti\",\n\t\t\t\"Asia/Kamchatka|Pacific/Kwajalein\",\n\t\t\t\"Asia/Kamchatka|Pacific/Majuro\",\n\t\t\t\"Asia/Kamchatka|Pacific/Nauru\",\n\t\t\t\"Asia/Kamchatka|Pacific/Tarawa\",\n\t\t\t\"Asia/Kamchatka|Pacific/Wake\",\n\t\t\t\"Asia/Kamchatka|Pacific/Wallis\",\n\t\t\t\"Asia/Kathmandu|Asia/Katmandu\",\n\t\t\t\"Asia/Kolkata|Asia/Calcutta\",\n\t\t\t\"Asia/Kuala_Lumpur|Asia/Brunei\",\n\t\t\t\"Asia/Kuala_Lumpur|Asia/Kuching\",\n\t\t\t\"Asia/Kuala_Lumpur|Asia/Singapore\",\n\t\t\t\"Asia/Kuala_Lumpur|Etc/GMT-8\",\n\t\t\t\"Asia/Kuala_Lumpur|Singapore\",\n\t\t\t\"Asia/Makassar|Asia/Ujung_Pandang\",\n\t\t\t\"Asia/Rangoon|Asia/Yangon\",\n\t\t\t\"Asia/Rangoon|Indian/Cocos\",\n\t\t\t\"Asia/Seoul|ROK\",\n\t\t\t\"Asia/Shanghai|Asia/Chongqing\",\n\t\t\t\"Asia/Shanghai|Asia/Chungking\",\n\t\t\t\"Asia/Shanghai|Asia/Harbin\",\n\t\t\t\"Asia/Shanghai|Asia/Macao\",\n\t\t\t\"Asia/Shanghai|Asia/Macau\",\n\t\t\t\"Asia/Shanghai|Asia/Taipei\",\n\t\t\t\"Asia/Shanghai|PRC\",\n\t\t\t\"Asia/Shanghai|ROC\",\n\t\t\t\"Asia/Tashkent|Antarctica/Mawson\",\n\t\t\t\"Asia/Tashkent|Asia/Aqtau\",\n\t\t\t\"Asia/Tashkent|Asia/Aqtobe\",\n\t\t\t\"Asia/Tashkent|Asia/Ashgabat\",\n\t\t\t\"Asia/Tashkent|Asia/Ashkhabad\",\n\t\t\t\"Asia/Tashkent|Asia/Atyrau\",\n\t\t\t\"Asia/Tashkent|Asia/Dushanbe\",\n\t\t\t\"Asia/Tashkent|Asia/Oral\",\n\t\t\t\"Asia/Tashkent|Asia/Samarkand\",\n\t\t\t\"Asia/Tashkent|Etc/GMT-5\",\n\t\t\t\"Asia/Tashkent|Indian/Kerguelen\",\n\t\t\t\"Asia/Tashkent|Indian/Maldives\",\n\t\t\t\"Asia/Tehran|Iran\",\n\t\t\t\"Asia/Tokyo|Japan\",\n\t\t\t\"Asia/Ulaanbaatar|Asia/Choibalsan\",\n\t\t\t\"Asia/Ulaanbaatar|Asia/Ulan_Bator\",\n\t\t\t\"Asia/Vladivostok|Asia/Ust-Nera\",\n\t\t\t\"Asia/Yakutsk|Asia/Khandyga\",\n\t\t\t\"Atlantic/Azores|America/Scoresbysund\",\n\t\t\t\"Atlantic/Cape_Verde|Etc/GMT+1\",\n\t\t\t\"Australia/Adelaide|Australia/Broken_Hill\",\n\t\t\t\"Australia/Adelaide|Australia/South\",\n\t\t\t\"Australia/Adelaide|Australia/Yancowinna\",\n\t\t\t\"Australia/Brisbane|Australia/Lindeman\",\n\t\t\t\"Australia/Brisbane|Australia/Queensland\",\n\t\t\t\"Australia/Darwin|Australia/North\",\n\t\t\t\"Australia/Lord_Howe|Australia/LHI\",\n\t\t\t\"Australia/Perth|Australia/West\",\n\t\t\t\"Australia/Sydney|Australia/ACT\",\n\t\t\t\"Australia/Sydney|Australia/Canberra\",\n\t\t\t\"Australia/Sydney|Australia/Currie\",\n\t\t\t\"Australia/Sydney|Australia/Hobart\",\n\t\t\t\"Australia/Sydney|Australia/Melbourne\",\n\t\t\t\"Australia/Sydney|Australia/NSW\",\n\t\t\t\"Australia/Sydney|Australia/Tasmania\",\n\t\t\t\"Australia/Sydney|Australia/Victoria\",\n\t\t\t\"Etc/UTC|Etc/UCT\",\n\t\t\t\"Etc/UTC|Etc/Universal\",\n\t\t\t\"Etc/UTC|Etc/Zulu\",\n\t\t\t\"Etc/UTC|UCT\",\n\t\t\t\"Etc/UTC|UTC\",\n\t\t\t\"Etc/UTC|Universal\",\n\t\t\t\"Etc/UTC|Zulu\",\n\t\t\t\"Europe/Athens|Asia/Nicosia\",\n\t\t\t\"Europe/Athens|EET\",\n\t\t\t\"Europe/Athens|Europe/Bucharest\",\n\t\t\t\"Europe/Athens|Europe/Helsinki\",\n\t\t\t\"Europe/Athens|Europe/Kiev\",\n\t\t\t\"Europe/Athens|Europe/Mariehamn\",\n\t\t\t\"Europe/Athens|Europe/Nicosia\",\n\t\t\t\"Europe/Athens|Europe/Riga\",\n\t\t\t\"Europe/Athens|Europe/Sofia\",\n\t\t\t\"Europe/Athens|Europe/Tallinn\",\n\t\t\t\"Europe/Athens|Europe/Uzhgorod\",\n\t\t\t\"Europe/Athens|Europe/Vilnius\",\n\t\t\t\"Europe/Athens|Europe/Zaporozhye\",\n\t\t\t\"Europe/Chisinau|Europe/Tiraspol\",\n\t\t\t\"Europe/Dublin|Eire\",\n\t\t\t\"Europe/Istanbul|Asia/Istanbul\",\n\t\t\t\"Europe/Istanbul|Turkey\",\n\t\t\t\"Europe/Lisbon|Atlantic/Canary\",\n\t\t\t\"Europe/Lisbon|Atlantic/Faeroe\",\n\t\t\t\"Europe/Lisbon|Atlantic/Faroe\",\n\t\t\t\"Europe/Lisbon|Atlantic/Madeira\",\n\t\t\t\"Europe/Lisbon|Portugal\",\n\t\t\t\"Europe/Lisbon|WET\",\n\t\t\t\"Europe/London|Europe/Belfast\",\n\t\t\t\"Europe/London|Europe/Guernsey\",\n\t\t\t\"Europe/London|Europe/Isle_of_Man\",\n\t\t\t\"Europe/London|Europe/Jersey\",\n\t\t\t\"Europe/London|GB\",\n\t\t\t\"Europe/London|GB-Eire\",\n\t\t\t\"Europe/Moscow|W-SU\",\n\t\t\t\"Europe/Paris|Africa/Ceuta\",\n\t\t\t\"Europe/Paris|Arctic/Longyearbyen\",\n\t\t\t\"Europe/Paris|Atlantic/Jan_Mayen\",\n\t\t\t\"Europe/Paris|CET\",\n\t\t\t\"Europe/Paris|Europe/Amsterdam\",\n\t\t\t\"Europe/Paris|Europe/Andorra\",\n\t\t\t\"Europe/Paris|Europe/Belgrade\",\n\t\t\t\"Europe/Paris|Europe/Berlin\",\n\t\t\t\"Europe/Paris|Europe/Bratislava\",\n\t\t\t\"Europe/Paris|Europe/Brussels\",\n\t\t\t\"Europe/Paris|Europe/Budapest\",\n\t\t\t\"Europe/Paris|Europe/Busingen\",\n\t\t\t\"Europe/Paris|Europe/Copenhagen\",\n\t\t\t\"Europe/Paris|Europe/Gibraltar\",\n\t\t\t\"Europe/Paris|Europe/Ljubljana\",\n\t\t\t\"Europe/Paris|Europe/Luxembourg\",\n\t\t\t\"Europe/Paris|Europe/Madrid\",\n\t\t\t\"Europe/Paris|Europe/Malta\",\n\t\t\t\"Europe/Paris|Europe/Monaco\",\n\t\t\t\"Europe/Paris|Europe/Oslo\",\n\t\t\t\"Europe/Paris|Europe/Podgorica\",\n\t\t\t\"Europe/Paris|Europe/Prague\",\n\t\t\t\"Europe/Paris|Europe/Rome\",\n\t\t\t\"Europe/Paris|Europe/San_Marino\",\n\t\t\t\"Europe/Paris|Europe/Sarajevo\",\n\t\t\t\"Europe/Paris|Europe/Skopje\",\n\t\t\t\"Europe/Paris|Europe/Stockholm\",\n\t\t\t\"Europe/Paris|Europe/Tirane\",\n\t\t\t\"Europe/Paris|Europe/Vaduz\",\n\t\t\t\"Europe/Paris|Europe/Vatican\",\n\t\t\t\"Europe/Paris|Europe/Vienna\",\n\t\t\t\"Europe/Paris|Europe/Warsaw\",\n\t\t\t\"Europe/Paris|Europe/Zagreb\",\n\t\t\t\"Europe/Paris|Europe/Zurich\",\n\t\t\t\"Europe/Paris|Poland\",\n\t\t\t\"Europe/Ulyanovsk|Europe/Astrakhan\",\n\t\t\t\"Pacific/Auckland|Antarctica/McMurdo\",\n\t\t\t\"Pacific/Auckland|Antarctica/South_Pole\",\n\t\t\t\"Pacific/Auckland|NZ\",\n\t\t\t\"Pacific/Chatham|NZ-CHAT\",\n\t\t\t\"Pacific/Easter|Chile/EasterIsland\",\n\t\t\t\"Pacific/Fakaofo|Etc/GMT-13\",\n\t\t\t\"Pacific/Fakaofo|Pacific/Enderbury\",\n\t\t\t\"Pacific/Galapagos|Etc/GMT+6\",\n\t\t\t\"Pacific/Gambier|Etc/GMT+9\",\n\t\t\t\"Pacific/Guadalcanal|Antarctica/Macquarie\",\n\t\t\t\"Pacific/Guadalcanal|Etc/GMT-11\",\n\t\t\t\"Pacific/Guadalcanal|Pacific/Efate\",\n\t\t\t\"Pacific/Guadalcanal|Pacific/Kosrae\",\n\t\t\t\"Pacific/Guadalcanal|Pacific/Noumea\",\n\t\t\t\"Pacific/Guadalcanal|Pacific/Pohnpei\",\n\t\t\t\"Pacific/Guadalcanal|Pacific/Ponape\",\n\t\t\t\"Pacific/Guam|Pacific/Saipan\",\n\t\t\t\"Pacific/Honolulu|HST\",\n\t\t\t\"Pacific/Honolulu|Pacific/Johnston\",\n\t\t\t\"Pacific/Honolulu|US/Hawaii\",\n\t\t\t\"Pacific/Kiritimati|Etc/GMT-14\",\n\t\t\t\"Pacific/Niue|Etc/GMT+11\",\n\t\t\t\"Pacific/Pago_Pago|Pacific/Midway\",\n\t\t\t\"Pacific/Pago_Pago|Pacific/Samoa\",\n\t\t\t\"Pacific/Pago_Pago|US/Samoa\",\n\t\t\t\"Pacific/Pitcairn|Etc/GMT+8\",\n\t\t\t\"Pacific/Port_Moresby|Antarctica/DumontDUrville\",\n\t\t\t\"Pacific/Port_Moresby|Etc/GMT-10\",\n\t\t\t\"Pacific/Port_Moresby|Pacific/Chuuk\",\n\t\t\t\"Pacific/Port_Moresby|Pacific/Truk\",\n\t\t\t\"Pacific/Port_Moresby|Pacific/Yap\",\n\t\t\t\"Pacific/Tahiti|Etc/GMT+10\",\n\t\t\t\"Pacific/Tahiti|Pacific/Rarotonga\"\n\t\t],\n\t\t\"countries\": [\n\t\t\t\"AD|Europe/Andorra\",\n\t\t\t\"AE|Asia/Dubai\",\n\t\t\t\"AF|Asia/Kabul\",\n\t\t\t\"AG|America/Port_of_Spain America/Antigua\",\n\t\t\t\"AI|America/Port_of_Spain America/Anguilla\",\n\t\t\t\"AL|Europe/Tirane\",\n\t\t\t\"AM|Asia/Yerevan\",\n\t\t\t\"AO|Africa/Lagos Africa/Luanda\",\n\t\t\t\"AQ|Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Pacific/Auckland Antarctica/McMurdo\",\n\t\t\t\"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia\",\n\t\t\t\"AS|Pacific/Pago_Pago\",\n\t\t\t\"AT|Europe/Vienna\",\n\t\t\t\"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Currie Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla\",\n\t\t\t\"AW|America/Curacao America/Aruba\",\n\t\t\t\"AX|Europe/Helsinki Europe/Mariehamn\",\n\t\t\t\"AZ|Asia/Baku\",\n\t\t\t\"BA|Europe/Belgrade Europe/Sarajevo\",\n\t\t\t\"BB|America/Barbados\",\n\t\t\t\"BD|Asia/Dhaka\",\n\t\t\t\"BE|Europe/Brussels\",\n\t\t\t\"BF|Africa/Abidjan Africa/Ouagadougou\",\n\t\t\t\"BG|Europe/Sofia\",\n\t\t\t\"BH|Asia/Qatar Asia/Bahrain\",\n\t\t\t\"BI|Africa/Maputo Africa/Bujumbura\",\n\t\t\t\"BJ|Africa/Lagos Africa/Porto-Novo\",\n\t\t\t\"BL|America/Port_of_Spain America/St_Barthelemy\",\n\t\t\t\"BM|Atlantic/Bermuda\",\n\t\t\t\"BN|Asia/Brunei\",\n\t\t\t\"BO|America/La_Paz\",\n\t\t\t\"BQ|America/Curacao America/Kralendijk\",\n\t\t\t\"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco\",\n\t\t\t\"BS|America/Nassau\",\n\t\t\t\"BT|Asia/Thimphu\",\n\t\t\t\"BW|Africa/Maputo Africa/Gaborone\",\n\t\t\t\"BY|Europe/Minsk\",\n\t\t\t\"BZ|America/Belize\",\n\t\t\t\"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Vancouver America/Whitehorse America/Dawson\",\n\t\t\t\"CC|Indian/Cocos\",\n\t\t\t\"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi\",\n\t\t\t\"CF|Africa/Lagos Africa/Bangui\",\n\t\t\t\"CG|Africa/Lagos Africa/Brazzaville\",\n\t\t\t\"CH|Europe/Zurich\",\n\t\t\t\"CI|Africa/Abidjan\",\n\t\t\t\"CK|Pacific/Rarotonga\",\n\t\t\t\"CL|America/Santiago America/Punta_Arenas Pacific/Easter\",\n\t\t\t\"CM|Africa/Lagos Africa/Douala\",\n\t\t\t\"CN|Asia/Shanghai Asia/Urumqi\",\n\t\t\t\"CO|America/Bogota\",\n\t\t\t\"CR|America/Costa_Rica\",\n\t\t\t\"CU|America/Havana\",\n\t\t\t\"CV|Atlantic/Cape_Verde\",\n\t\t\t\"CW|America/Curacao\",\n\t\t\t\"CX|Indian/Christmas\",\n\t\t\t\"CY|Asia/Nicosia Asia/Famagusta\",\n\t\t\t\"CZ|Europe/Prague\",\n\t\t\t\"DE|Europe/Zurich Europe/Berlin Europe/Busingen\",\n\t\t\t\"DJ|Africa/Nairobi Africa/Djibouti\",\n\t\t\t\"DK|Europe/Copenhagen\",\n\t\t\t\"DM|America/Port_of_Spain America/Dominica\",\n\t\t\t\"DO|America/Santo_Domingo\",\n\t\t\t\"DZ|Africa/Algiers\",\n\t\t\t\"EC|America/Guayaquil Pacific/Galapagos\",\n\t\t\t\"EE|Europe/Tallinn\",\n\t\t\t\"EG|Africa/Cairo\",\n\t\t\t\"EH|Africa/El_Aaiun\",\n\t\t\t\"ER|Africa/Nairobi Africa/Asmara\",\n\t\t\t\"ES|Europe/Madrid Africa/Ceuta Atlantic/Canary\",\n\t\t\t\"ET|Africa/Nairobi Africa/Addis_Ababa\",\n\t\t\t\"FI|Europe/Helsinki\",\n\t\t\t\"FJ|Pacific/Fiji\",\n\t\t\t\"FK|Atlantic/Stanley\",\n\t\t\t\"FM|Pacific/Chuuk Pacific/Pohnpei Pacific/Kosrae\",\n\t\t\t\"FO|Atlantic/Faroe\",\n\t\t\t\"FR|Europe/Paris\",\n\t\t\t\"GA|Africa/Lagos Africa/Libreville\",\n\t\t\t\"GB|Europe/London\",\n\t\t\t\"GD|America/Port_of_Spain America/Grenada\",\n\t\t\t\"GE|Asia/Tbilisi\",\n\t\t\t\"GF|America/Cayenne\",\n\t\t\t\"GG|Europe/London Europe/Guernsey\",\n\t\t\t\"GH|Africa/Accra\",\n\t\t\t\"GI|Europe/Gibraltar\",\n\t\t\t\"GL|America/Godthab America/Danmarkshavn America/Scoresbysund America/Thule\",\n\t\t\t\"GM|Africa/Abidjan Africa/Banjul\",\n\t\t\t\"GN|Africa/Abidjan Africa/Conakry\",\n\t\t\t\"GP|America/Port_of_Spain America/Guadeloupe\",\n\t\t\t\"GQ|Africa/Lagos Africa/Malabo\",\n\t\t\t\"GR|Europe/Athens\",\n\t\t\t\"GS|Atlantic/South_Georgia\",\n\t\t\t\"GT|America/Guatemala\",\n\t\t\t\"GU|Pacific/Guam\",\n\t\t\t\"GW|Africa/Bissau\",\n\t\t\t\"GY|America/Guyana\",\n\t\t\t\"HK|Asia/Hong_Kong\",\n\t\t\t\"HN|America/Tegucigalpa\",\n\t\t\t\"HR|Europe/Belgrade Europe/Zagreb\",\n\t\t\t\"HT|America/Port-au-Prince\",\n\t\t\t\"HU|Europe/Budapest\",\n\t\t\t\"ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura\",\n\t\t\t\"IE|Europe/Dublin\",\n\t\t\t\"IL|Asia/Jerusalem\",\n\t\t\t\"IM|Europe/London Europe/Isle_of_Man\",\n\t\t\t\"IN|Asia/Kolkata\",\n\t\t\t\"IO|Indian/Chagos\",\n\t\t\t\"IQ|Asia/Baghdad\",\n\t\t\t\"IR|Asia/Tehran\",\n\t\t\t\"IS|Atlantic/Reykjavik\",\n\t\t\t\"IT|Europe/Rome\",\n\t\t\t\"JE|Europe/London Europe/Jersey\",\n\t\t\t\"JM|America/Jamaica\",\n\t\t\t\"JO|Asia/Amman\",\n\t\t\t\"JP|Asia/Tokyo\",\n\t\t\t\"KE|Africa/Nairobi\",\n\t\t\t\"KG|Asia/Bishkek\",\n\t\t\t\"KH|Asia/Bangkok Asia/Phnom_Penh\",\n\t\t\t\"KI|Pacific/Tarawa Pacific/Enderbury Pacific/Kiritimati\",\n\t\t\t\"KM|Africa/Nairobi Indian/Comoro\",\n\t\t\t\"KN|America/Port_of_Spain America/St_Kitts\",\n\t\t\t\"KP|Asia/Pyongyang\",\n\t\t\t\"KR|Asia/Seoul\",\n\t\t\t\"KW|Asia/Riyadh Asia/Kuwait\",\n\t\t\t\"KY|America/Panama America/Cayman\",\n\t\t\t\"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral\",\n\t\t\t\"LA|Asia/Bangkok Asia/Vientiane\",\n\t\t\t\"LB|Asia/Beirut\",\n\t\t\t\"LC|America/Port_of_Spain America/St_Lucia\",\n\t\t\t\"LI|Europe/Zurich Europe/Vaduz\",\n\t\t\t\"LK|Asia/Colombo\",\n\t\t\t\"LR|Africa/Monrovia\",\n\t\t\t\"LS|Africa/Johannesburg Africa/Maseru\",\n\t\t\t\"LT|Europe/Vilnius\",\n\t\t\t\"LU|Europe/Luxembourg\",\n\t\t\t\"LV|Europe/Riga\",\n\t\t\t\"LY|Africa/Tripoli\",\n\t\t\t\"MA|Africa/Casablanca\",\n\t\t\t\"MC|Europe/Monaco\",\n\t\t\t\"MD|Europe/Chisinau\",\n\t\t\t\"ME|Europe/Belgrade Europe/Podgorica\",\n\t\t\t\"MF|America/Port_of_Spain America/Marigot\",\n\t\t\t\"MG|Africa/Nairobi Indian/Antananarivo\",\n\t\t\t\"MH|Pacific/Majuro Pacific/Kwajalein\",\n\t\t\t\"MK|Europe/Belgrade Europe/Skopje\",\n\t\t\t\"ML|Africa/Abidjan Africa/Bamako\",\n\t\t\t\"MM|Asia/Yangon\",\n\t\t\t\"MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan\",\n\t\t\t\"MO|Asia/Macau\",\n\t\t\t\"MP|Pacific/Guam Pacific/Saipan\",\n\t\t\t\"MQ|America/Martinique\",\n\t\t\t\"MR|Africa/Abidjan Africa/Nouakchott\",\n\t\t\t\"MS|America/Port_of_Spain America/Montserrat\",\n\t\t\t\"MT|Europe/Malta\",\n\t\t\t\"MU|Indian/Mauritius\",\n\t\t\t\"MV|Indian/Maldives\",\n\t\t\t\"MW|Africa/Maputo Africa/Blantyre\",\n\t\t\t\"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Mazatlan America/Chihuahua America/Ojinaga America/Hermosillo America/Tijuana America/Bahia_Banderas\",\n\t\t\t\"MY|Asia/Kuala_Lumpur Asia/Kuching\",\n\t\t\t\"MZ|Africa/Maputo\",\n\t\t\t\"NA|Africa/Windhoek\",\n\t\t\t\"NC|Pacific/Noumea\",\n\t\t\t\"NE|Africa/Lagos Africa/Niamey\",\n\t\t\t\"NF|Pacific/Norfolk\",\n\t\t\t\"NG|Africa/Lagos\",\n\t\t\t\"NI|America/Managua\",\n\t\t\t\"NL|Europe/Amsterdam\",\n\t\t\t\"NO|Europe/Oslo\",\n\t\t\t\"NP|Asia/Kathmandu\",\n\t\t\t\"NR|Pacific/Nauru\",\n\t\t\t\"NU|Pacific/Niue\",\n\t\t\t\"NZ|Pacific/Auckland Pacific/Chatham\",\n\t\t\t\"OM|Asia/Dubai Asia/Muscat\",\n\t\t\t\"PA|America/Panama\",\n\t\t\t\"PE|America/Lima\",\n\t\t\t\"PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier\",\n\t\t\t\"PG|Pacific/Port_Moresby Pacific/Bougainville\",\n\t\t\t\"PH|Asia/Manila\",\n\t\t\t\"PK|Asia/Karachi\",\n\t\t\t\"PL|Europe/Warsaw\",\n\t\t\t\"PM|America/Miquelon\",\n\t\t\t\"PN|Pacific/Pitcairn\",\n\t\t\t\"PR|America/Puerto_Rico\",\n\t\t\t\"PS|Asia/Gaza Asia/Hebron\",\n\t\t\t\"PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores\",\n\t\t\t\"PW|Pacific/Palau\",\n\t\t\t\"PY|America/Asuncion\",\n\t\t\t\"QA|Asia/Qatar\",\n\t\t\t\"RE|Indian/Reunion\",\n\t\t\t\"RO|Europe/Bucharest\",\n\t\t\t\"RS|Europe/Belgrade\",\n\t\t\t\"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Astrakhan Europe/Volgograd Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr\",\n\t\t\t\"RW|Africa/Maputo Africa/Kigali\",\n\t\t\t\"SA|Asia/Riyadh\",\n\t\t\t\"SB|Pacific/Guadalcanal\",\n\t\t\t\"SC|Indian/Mahe\",\n\t\t\t\"SD|Africa/Khartoum\",\n\t\t\t\"SE|Europe/Stockholm\",\n\t\t\t\"SG|Asia/Singapore\",\n\t\t\t\"SH|Africa/Abidjan Atlantic/St_Helena\",\n\t\t\t\"SI|Europe/Belgrade Europe/Ljubljana\",\n\t\t\t\"SJ|Europe/Oslo Arctic/Longyearbyen\",\n\t\t\t\"SK|Europe/Prague Europe/Bratislava\",\n\t\t\t\"SL|Africa/Abidjan Africa/Freetown\",\n\t\t\t\"SM|Europe/Rome Europe/San_Marino\",\n\t\t\t\"SN|Africa/Abidjan Africa/Dakar\",\n\t\t\t\"SO|Africa/Nairobi Africa/Mogadishu\",\n\t\t\t\"SR|America/Paramaribo\",\n\t\t\t\"SS|Africa/Juba\",\n\t\t\t\"ST|Africa/Sao_Tome\",\n\t\t\t\"SV|America/El_Salvador\",\n\t\t\t\"SX|America/Curacao America/Lower_Princes\",\n\t\t\t\"SY|Asia/Damascus\",\n\t\t\t\"SZ|Africa/Johannesburg Africa/Mbabane\",\n\t\t\t\"TC|America/Grand_Turk\",\n\t\t\t\"TD|Africa/Ndjamena\",\n\t\t\t\"TF|Indian/Reunion Indian/Kerguelen\",\n\t\t\t\"TG|Africa/Abidjan Africa/Lome\",\n\t\t\t\"TH|Asia/Bangkok\",\n\t\t\t\"TJ|Asia/Dushanbe\",\n\t\t\t\"TK|Pacific/Fakaofo\",\n\t\t\t\"TL|Asia/Dili\",\n\t\t\t\"TM|Asia/Ashgabat\",\n\t\t\t\"TN|Africa/Tunis\",\n\t\t\t\"TO|Pacific/Tongatapu\",\n\t\t\t\"TR|Europe/Istanbul\",\n\t\t\t\"TT|America/Port_of_Spain\",\n\t\t\t\"TV|Pacific/Funafuti\",\n\t\t\t\"TW|Asia/Taipei\",\n\t\t\t\"TZ|Africa/Nairobi Africa/Dar_es_Salaam\",\n\t\t\t\"UA|Europe/Simferopol Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye\",\n\t\t\t\"UG|Africa/Nairobi Africa/Kampala\",\n\t\t\t\"UM|Pacific/Pago_Pago Pacific/Wake Pacific/Honolulu Pacific/Midway\",\n\t\t\t\"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu\",\n\t\t\t\"UY|America/Montevideo\",\n\t\t\t\"UZ|Asia/Samarkand Asia/Tashkent\",\n\t\t\t\"VA|Europe/Rome Europe/Vatican\",\n\t\t\t\"VC|America/Port_of_Spain America/St_Vincent\",\n\t\t\t\"VE|America/Caracas\",\n\t\t\t\"VG|America/Port_of_Spain America/Tortola\",\n\t\t\t\"VI|America/Port_of_Spain America/St_Thomas\",\n\t\t\t\"VN|Asia/Bangkok Asia/Ho_Chi_Minh\",\n\t\t\t\"VU|Pacific/Efate\",\n\t\t\t\"WF|Pacific/Wallis\",\n\t\t\t\"WS|Pacific/Apia\",\n\t\t\t\"YE|Asia/Riyadh Asia/Aden\",\n\t\t\t\"YT|Africa/Nairobi Indian/Mayotte\",\n\t\t\t\"ZA|Africa/Johannesburg\",\n\t\t\t\"ZM|Africa/Maputo Africa/Lusaka\",\n\t\t\t\"ZW|Africa/Maputo Africa/Harare\"\n\t\t]\n\t});\n\n\n\treturn moment;\n}));\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/moment-timezone/moment-timezone-with-data.js",
    "content": "//! moment-timezone.js\n//! version : 0.5.28\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory);                 // AMD\n\t} else {\n\t\tfactory(root.moment);                        // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.28\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils  = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname       : data[0],\n\t\t\tabbrs      : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets    : mapIndices(offsets, indices),\n\t\t\tuntils     : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name       = unpacked.name;\n\t\t\tthis.abbrs      = unpacked.abbrs;\n\t\t\tthis.untils     = unpacked.untils;\n\t\t\tthis.offsets    = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target  = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils  = this.untils,\n\t\t\t\tmax     = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset     = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout  = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version      = VERSION;\n\ttz.dataVersion  = '';\n\ttz._zones       = zones;\n\ttz._links       = links;\n\ttz._names       = names;\n\ttz._countries\t= countries;\n\ttz.add          = addZone;\n\ttz.link         = addLink;\n\ttz.load         = loadData;\n\ttz.zone         = getZone;\n\ttz.zoneExists   = zoneExists; // deprecated in 0.1.0\n\ttz.guess        = guess;\n\ttz.names        = getNames;\n\ttz.Zone         = Zone;\n\ttz.unpack       = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset  = needsOffset;\n\ttz.moveInvalidForward   = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries    = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName  = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr  = abbrWrap(fn.zoneAbbr);\n\tfn.utc       = resetZoneWrap(fn.utc);\n\tfn.local     = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\tloadData({\n\t\t\"version\": \"2019c\",\n\t\t\"zones\": [\n\t\t\t\"Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5\",\n\t\t\t\"Africa/Accra|LMT GMT +0020|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5\",\n\t\t\t\"Africa/Nairobi|LMT EAT +0230 +0245|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5\",\n\t\t\t\"Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5\",\n\t\t\t\"Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6\",\n\t\t\t\"Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4\",\n\t\t\t\"Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5\",\n\t\t\t\"Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6\",\n\t\t\t\"Africa/Casablanca|LMT +00 +01|u.k 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5\",\n\t\t\t\"Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3\",\n\t\t\t\"Africa/El_Aaiun|LMT -01 +00 +01|Q.M 10 0 -10|012323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|20e4\",\n\t\t\t\"Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5\",\n\t\t\t\"Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|01212121212121212121212121212121213|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0|\",\n\t\t\t\"Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5\",\n\t\t\t\"Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5\",\n\t\t\t\"Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5\",\n\t\t\t\"Africa/Sao_Tome|LMT GMT WAT|A.J 0 -10|0121|-2le00 4i6N0 2q00|\",\n\t\t\t\"Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5\",\n\t\t\t\"Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5\",\n\t\t\t\"Africa/Windhoek|+0130 SAST SAST CAT WAT|-1u -20 -30 -20 -10|01213434343434343434343434343434343434343434343434343|-2GJdu 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4\",\n\t\t\t\"America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326\",\n\t\t\t\"America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4\",\n\t\t\t\"America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3\",\n\t\t\t\"America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4\",\n\t\t\t\"America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|\",\n\t\t\t\"America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|\",\n\t\t\t\"America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|\",\n\t\t\t\"America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|\",\n\t\t\t\"America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|\",\n\t\t\t\"America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|\",\n\t\t\t\"America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|\",\n\t\t\t\"America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|\",\n\t\t\t\"America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|\",\n\t\t\t\"America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|\",\n\t\t\t\"America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|\",\n\t\t\t\"America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|\",\n\t\t\t\"America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4\",\n\t\t\t\"America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5\",\n\t\t\t\"America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2\",\n\t\t\t\"America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3\",\n\t\t\t\"America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5\",\n\t\t\t\"America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4\",\n\t\t\t\"America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5\",\n\t\t\t\"America/Belize|LMT CST -0530 CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3\",\n\t\t\t\"America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2\",\n\t\t\t\"America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2\",\n\t\t\t\"America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5\",\n\t\t\t\"America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4\",\n\t\t\t\"America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2\",\n\t\t\t\"America/Campo_Grande|LMT -04 -03|3C.s 40 30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4\",\n\t\t\t\"America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4\",\n\t\t\t\"America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5\",\n\t\t\t\"America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3\",\n\t\t\t\"America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5\",\n\t\t\t\"America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5\",\n\t\t\t\"America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4\",\n\t\t\t\"America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5\",\n\t\t\t\"America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2\",\n\t\t\t\"America/Cuiaba|LMT -04 -03|3I.k 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4\",\n\t\t\t\"America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8\",\n\t\t\t\"America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3\",\n\t\t\t\"America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2\",\n\t\t\t\"America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5\",\n\t\t\t\"America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|0123425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 JxX1 SMX 1cN0 1cL0 aW10 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5\",\n\t\t\t\"America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|0121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 XQp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5\",\n\t\t\t\"America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3\",\n\t\t\t\"America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5\",\n\t\t\t\"America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5\",\n\t\t\t\"America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2\",\n\t\t\t\"America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5\",\n\t\t\t\"America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\n\t\t\t\"America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3\",\n\t\t\t\"America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2\",\n\t\t\t\"America/Grand_Turk|KMT EST EDT AST|57.a 50 40 40|01212121212121212121212121212121212121212121212121212121212121212121212121232121212121212121212121212121212121212121|-2l1uQ.O 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2\",\n\t\t\t\"America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5\",\n\t\t\t\"America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5\",\n\t\t\t\"America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4\",\n\t\t\t\"America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4\",\n\t\t\t\"America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5\",\n\t\t\t\"America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4\",\n\t\t\t\"America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010401054541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 8wn0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2\",\n\t\t\t\"America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2\",\n\t\t\t\"America/Jamaica|KMT EST EDT|57.a 50 40|0121212121212121212121|-2l1uQ.O 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4\",\n\t\t\t\"America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3\",\n\t\t\t\"America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 1nX1 e0X 9vd0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/La_Paz|CMT BST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5\",\n\t\t\t\"America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6\",\n\t\t\t\"America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6\",\n\t\t\t\"America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4\",\n\t\t\t\"America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5\",\n\t\t\t\"America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5\",\n\t\t\t\"America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4\",\n\t\t\t\"America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4\",\n\t\t\t\"America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4\",\n\t\t\t\"America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2\",\n\t\t\t\"America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5\",\n\t\t\t\"America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|01203030303030303030303030303030304545450454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\n\t\t\t\"America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6\",\n\t\t\t\"America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2\",\n\t\t\t\"America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3\",\n\t\t\t\"America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5\",\n\t\t\t\"America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5\",\n\t\t\t\"America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5\",\n\t\t\t\"America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4\",\n\t\t\t\"America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6\",\n\t\t\t\"America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2\",\n\t\t\t\"America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2\",\n\t\t\t\"America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2\",\n\t\t\t\"America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\n\t\t\t\"America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\n\t\t\t\"America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4\",\n\t\t\t\"America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5\",\n\t\t\t\"America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\n\t\t\t\"America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4\",\n\t\t\t\"America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4\",\n\t\t\t\"America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5\",\n\t\t\t\"America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|\",\n\t\t\t\"America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842\",\n\t\t\t\"America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2\",\n\t\t\t\"America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5\",\n\t\t\t\"America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4\",\n\t\t\t\"America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229\",\n\t\t\t\"America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4\",\n\t\t\t\"America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|62e5\",\n\t\t\t\"America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5\",\n\t\t\t\"America/Sao_Paulo|LMT -03 -02|36.s 30 20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6\",\n\t\t\t\"America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452\",\n\t\t\t\"America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2\",\n\t\t\t\"America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\n\t\t\t\"America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3\",\n\t\t\t\"America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5\",\n\t\t\t\"America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656\",\n\t\t\t\"America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\n\t\t\t\"America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\n\t\t\t\"America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\n\t\t\t\"America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4\",\n\t\t\t\"America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642\",\n\t\t\t\"America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\n\t\t\t\"Antarctica/Casey|-00 +08 +11|0 -80 -b0|01212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10|10\",\n\t\t\t\"Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70\",\n\t\t\t\"Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80\",\n\t\t\t\"Antarctica/Macquarie|AEST AEDT -00 +11|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1\",\n\t\t\t\"Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60\",\n\t\t\t\"Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5\",\n\t\t\t\"Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40\",\n\t\t\t\"Antarctica/Rothera|-00 -03|0 30|01|gOo0|130\",\n\t\t\t\"Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20\",\n\t\t\t\"Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40\",\n\t\t\t\"Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25\",\n\t\t\t\"Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4\",\n\t\t\t\"Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5\",\n\t\t\t\"Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5\",\n\t\t\t\"Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5\",\n\t\t\t\"Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3\",\n\t\t\t\"Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4\",\n\t\t\t\"Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4\",\n\t\t\t\"Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4\",\n\t\t\t\"Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|\",\n\t\t\t\"Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5\",\n\t\t\t\"Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4\",\n\t\t\t\"Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5\",\n\t\t\t\"Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6\",\n\t\t\t\"Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|\",\n\t\t\t\"Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5\",\n\t\t\t\"Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4\",\n\t\t\t\"Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4\",\n\t\t\t\"Asia/Kolkata|MMT IST +0630|-5l.a -5u -6u|012121|-2zOtl.a 1r2LP.a 1un0 HB0 7zX0|15e6\",\n\t\t\t\"Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4\",\n\t\t\t\"Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3\",\n\t\t\t\"Asia/Shanghai|CST CDT|-80 -90|010101010101010101010101010|-1c2w0 Rz0 11d0 1wL0 A10 8HX0 1G10 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 aL0 1tU30 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6\",\n\t\t\t\"Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5\",\n\t\t\t\"Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6\",\n\t\t\t\"Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5\",\n\t\t\t\"Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4\",\n\t\t\t\"Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5\",\n\t\t\t\"Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4\",\n\t\t\t\"Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|\",\n\t\t\t\"Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|0101010101010101010101010101010123232323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0|18e5\",\n\t\t\t\"Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0|25e4\",\n\t\t\t\"Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5\",\n\t\t\t\"Asia/Hong_Kong|LMT HKT HKST HKWT JST|-7A.G -80 -90 -8u -90|0123412121212121212121212121212121212121212121212121212121212121212121|-2CFH0 1taO0 Hc0 xUu 9tBu 11z0 1tDu Rc0 1wo0 11A0 1cM0 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5\",\n\t\t\t\"Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3\",\n\t\t\t\"Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\n\t\t\t\"Europe/Istanbul|IMT EET EEST +03 +04|-1U.U -20 -30 -30 -40|0121212121212121212121212121212121212121212121234312121212121212121212121212121212121212121212121212121212121212123|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSN0 CL0 mp0 1Vz0 1gN0 8yn0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1ip0 19X0 1ip0 17b0 qdB0 38L0 1jd0 Tz0 l6O0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6\",\n\t\t\t\"Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6\",\n\t\t\t\"Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4\",\n\t\t\t\"Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4\",\n\t\t\t\"Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5\",\n\t\t\t\"Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4\",\n\t\t\t\"Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6\",\n\t\t\t\"Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5\",\n\t\t\t\"Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5\",\n\t\t\t\"Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2\",\n\t\t\t\"Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5\",\n\t\t\t\"Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5\",\n\t\t\t\"Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4\",\n\t\t\t\"Asia/Macau|LMT CST +09 +10 CDT|-7y.a -80 -90 -a0 -90|012323214141414141414141414141414141414141414141414141414141414141414141|-2CFHy.a 1uqKy.a PX0 1kn0 15B0 11b0 4Qq0 1oM0 11c0 1ko0 1u00 11A0 1cM0 11c0 1o00 11A0 1o00 11A0 1oo0 1400 1o00 11A0 1o00 U00 1tA0 U00 1wo0 Rc0 1wru U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cK0 1cO0 1cK0 1cO0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4\",\n\t\t\t\"Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3\",\n\t\t\t\"Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5\",\n\t\t\t\"Asia/Manila|PST PDT JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6\",\n\t\t\t\"Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4\",\n\t\t\t\"Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4\",\n\t\t\t\"Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5\",\n\t\t\t\"Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5\",\n\t\t\t\"Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4\",\n\t\t\t\"Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4\",\n\t\t\t\"Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BA0|29e5\",\n\t\t\t\"Asia/Qostanay|LMT +04 +05 +06|-4e.s -40 -50 -60|012323232323232323232123232323232323232323232323|-1Pc4e.s eUoe.s 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|\",\n\t\t\t\"Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|01232323232323232323232323232323232323232323232|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4\",\n\t\t\t\"Asia/Rangoon|RMT +0630 +09|-6o.L -6u -90|0121|-21Jio.L SmnS.L 7j9u|48e5\",\n\t\t\t\"Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4\",\n\t\t\t\"Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4\",\n\t\t\t\"Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -a0 -9u|012343434343151515151515134343|-2um8r.Q 97XV.Q 1m1zu 6CM0 Fz0 1kN0 14n0 1kN0 14L0 1zd0 On0 69B0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6\",\n\t\t\t\"Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2\",\n\t\t\t\"Asia/Taipei|CST JST CDT|-80 -90 -90|01020202020202020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5\",\n\t\t\t\"Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5\",\n\t\t\t\"Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5\",\n\t\t\t\"Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6\",\n\t\t\t\"Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3\",\n\t\t\t\"Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJJ0 Rc0 1lc0 14o0 1zc0 Oo0 1zc0 Oo0|38e6\",\n\t\t\t\"Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5\",\n\t\t\t\"Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5\",\n\t\t\t\"Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2\",\n\t\t\t\"Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\n\t\t\t\"Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4\",\n\t\t\t\"Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5\",\n\t\t\t\"Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5\",\n\t\t\t\"Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4\",\n\t\t\t\"Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3\",\n\t\t\t\"Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\n\t\t\t\"Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4\",\n\t\t\t\"Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3\",\n\t\t\t\"Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldX0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4\",\n\t\t\t\"Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4\",\n\t\t\t\"Atlantic/South_Georgia|-02|20|0||30\",\n\t\t\t\"Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2\",\n\t\t\t\"Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5\",\n\t\t\t\"Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5\",\n\t\t\t\"Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5\",\n\t\t\t\"Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3\",\n\t\t\t\"Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746\",\n\t\t\t\"Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4\",\n\t\t\t\"Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368\",\n\t\t\t\"Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4\",\n\t\t\t\"Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347\",\n\t\t\t\"Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10\",\n\t\t\t\"Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5\",\n\t\t\t\"Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5\",\n\t\t\t\"CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|\",\n\t\t\t\"Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|30e2\",\n\t\t\t\"CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|\",\n\t\t\t\"Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\n\t\t\t\"EST|EST|50|0||\",\n\t\t\t\"EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"Etc/GMT-0|GMT|0|0||\",\n\t\t\t\"Etc/GMT-1|+01|-10|0||\",\n\t\t\t\"Pacific/Port_Moresby|+10|-a0|0||25e4\",\n\t\t\t\"Etc/GMT-11|+11|-b0|0||\",\n\t\t\t\"Pacific/Tarawa|+12|-c0|0||29e3\",\n\t\t\t\"Etc/GMT-13|+13|-d0|0||\",\n\t\t\t\"Etc/GMT-14|+14|-e0|0||\",\n\t\t\t\"Etc/GMT-2|+02|-20|0||\",\n\t\t\t\"Etc/GMT-3|+03|-30|0||\",\n\t\t\t\"Etc/GMT-4|+04|-40|0||\",\n\t\t\t\"Etc/GMT-5|+05|-50|0||\",\n\t\t\t\"Etc/GMT-6|+06|-60|0||\",\n\t\t\t\"Indian/Christmas|+07|-70|0||21e2\",\n\t\t\t\"Etc/GMT-8|+08|-80|0||\",\n\t\t\t\"Pacific/Palau|+09|-90|0||21e3\",\n\t\t\t\"Etc/GMT+1|-01|10|0||\",\n\t\t\t\"Etc/GMT+10|-10|a0|0||\",\n\t\t\t\"Etc/GMT+11|-11|b0|0||\",\n\t\t\t\"Etc/GMT+12|-12|c0|0||\",\n\t\t\t\"Etc/GMT+3|-03|30|0||\",\n\t\t\t\"Etc/GMT+4|-04|40|0||\",\n\t\t\t\"Etc/GMT+5|-05|50|0||\",\n\t\t\t\"Etc/GMT+6|-06|60|0||\",\n\t\t\t\"Etc/GMT+7|-07|70|0||\",\n\t\t\t\"Etc/GMT+8|-08|80|0||\",\n\t\t\t\"Etc/GMT+9|-09|90|0||\",\n\t\t\t\"Etc/UTC|UTC|0|0||\",\n\t\t\t\"Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5\",\n\t\t\t\"Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3\",\n\t\t\t\"Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5\",\n\t\t\t\"Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5\",\n\t\t\t\"Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6\",\n\t\t\t\"Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\n\t\t\t\"Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5\",\n\t\t\t\"Europe/Prague|CET CEST GMT|-10 -20 0|01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5\",\n\t\t\t\"Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5\",\n\t\t\t\"Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5\",\n\t\t\t\"Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\n\t\t\t\"Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4\",\n\t\t\t\"Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4\",\n\t\t\t\"Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\n\t\t\t\"Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3\",\n\t\t\t\"Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\n\t\t\t\"Europe/Kaliningrad|CET CEST EET EEST MSK MSD +03|-10 -20 -20 -30 -30 -40 -30|01010101010101232454545454545454543232323232323232323232323232323232323232323262|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 390 7A0 1en0 12N0 1pbb0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4\",\n\t\t\t\"Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5\",\n\t\t\t\"Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4\",\n\t\t\t\"Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5\",\n\t\t\t\"Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\n\t\t\t\"Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5\",\n\t\t\t\"Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\n\t\t\t\"Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5\",\n\t\t\t\"Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3\",\n\t\t\t\"Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6\",\n\t\t\t\"Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6\",\n\t\t\t\"Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4\",\n\t\t\t\"Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5\",\n\t\t\t\"Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5\",\n\t\t\t\"Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|\",\n\t\t\t\"Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4\",\n\t\t\t\"Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\n\t\t\t\"Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5\",\n\t\t\t\"Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4\",\n\t\t\t\"Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\n\t\t\t\"Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5\",\n\t\t\t\"Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4\",\n\t\t\t\"Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1ao0 1co0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5\",\n\t\t\t\"Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\n\t\t\t\"Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0|10e5\",\n\t\t\t\"Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\n\t\t\t\"Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4\",\n\t\t\t\"HST|HST|a0|0||\",\n\t\t\t\"Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2\",\n\t\t\t\"Indian/Cocos|+0630|-6u|0||596\",\n\t\t\t\"Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130\",\n\t\t\t\"Indian/Mahe|LMT +04|-3F.M -40|01|-2yO3F.M|79e3\",\n\t\t\t\"Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4\",\n\t\t\t\"Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4\",\n\t\t\t\"Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4\",\n\t\t\t\"Pacific/Kwajalein|+11 +10 +09 -12 +12|-b0 -a0 -90 c0 -c0|012034|-1kln0 akp0 6Up0 12ry0 Wan0|14e3\",\n\t\t\t\"MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|\",\n\t\t\t\"MST|MST|70|0||\",\n\t\t\t\"MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600\",\n\t\t\t\"Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3\",\n\t\t\t\"Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4\",\n\t\t\t\"Pacific/Chuuk|+10 +09|-a0 -90|01010|-2ewy0 axB0 RVX0 axd0|49e3\",\n\t\t\t\"Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3\",\n\t\t\t\"Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B7X0|1\",\n\t\t\t\"Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483\",\n\t\t\t\"Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 20o0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0 s00|88e4\",\n\t\t\t\"Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3\",\n\t\t\t\"Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125\",\n\t\t\t\"Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4\",\n\t\t\t\"Pacific/Guam|GST +09 GDT ChST|-a0 -90 -b0 -a0|01020202020202020203|-18jK0 6pB0 AhB0 3QL0 g2p0 3p91 WOX rX0 1zd0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4\",\n\t\t\t\"Pacific/Honolulu|HST HDT HWT HPT HST|au 9u 9u 9u a0|0102304|-1thLu 8x0 lef0 8wWu iAu 46p0|37e4\",\n\t\t\t\"Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2\",\n\t\t\t\"Pacific/Kosrae|+11 +09 +10 +12|-b0 -90 -a0 -c0|01021030|-2ewz0 axC0 HBy0 akp0 axd0 WOK0 1bdz0|66e2\",\n\t\t\t\"Pacific/Majuro|+11 +09 +10 +12|-b0 -90 -a0 -c0|0102103|-2ewz0 axC0 HBy0 akp0 6RB0 12um0|28e3\",\n\t\t\t\"Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2\",\n\t\t\t\"Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2\",\n\t\t\t\"Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E QCnB.E 7mqu 1lnbu|10e3\",\n\t\t\t\"Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2\",\n\t\t\t\"Pacific/Norfolk|+1112 +1130 +1230 +11 +12|-bc -bu -cu -b0 -c0|012134343434343434343434343434343434343434|-Kgbc W01G Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|25e4\",\n\t\t\t\"Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3\",\n\t\t\t\"Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56\",\n\t\t\t\"Pacific/Pohnpei|+11 +09 +10|-b0 -90 -a0|010210|-2ewz0 axC0 HBy0 akp0 axd0|34e3\",\n\t\t\t\"Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3\",\n\t\t\t\"Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4\",\n\t\t\t\"Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3\",\n\t\t\t\"PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|\",\n\t\t\t\"WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|\"\n\t\t],\n\t\t\"links\": [\n\t\t\t\"Africa/Abidjan|Africa/Bamako\",\n\t\t\t\"Africa/Abidjan|Africa/Banjul\",\n\t\t\t\"Africa/Abidjan|Africa/Conakry\",\n\t\t\t\"Africa/Abidjan|Africa/Dakar\",\n\t\t\t\"Africa/Abidjan|Africa/Freetown\",\n\t\t\t\"Africa/Abidjan|Africa/Lome\",\n\t\t\t\"Africa/Abidjan|Africa/Nouakchott\",\n\t\t\t\"Africa/Abidjan|Africa/Ouagadougou\",\n\t\t\t\"Africa/Abidjan|Africa/Timbuktu\",\n\t\t\t\"Africa/Abidjan|Atlantic/St_Helena\",\n\t\t\t\"Africa/Cairo|Egypt\",\n\t\t\t\"Africa/Johannesburg|Africa/Maseru\",\n\t\t\t\"Africa/Johannesburg|Africa/Mbabane\",\n\t\t\t\"Africa/Lagos|Africa/Bangui\",\n\t\t\t\"Africa/Lagos|Africa/Brazzaville\",\n\t\t\t\"Africa/Lagos|Africa/Douala\",\n\t\t\t\"Africa/Lagos|Africa/Kinshasa\",\n\t\t\t\"Africa/Lagos|Africa/Libreville\",\n\t\t\t\"Africa/Lagos|Africa/Luanda\",\n\t\t\t\"Africa/Lagos|Africa/Malabo\",\n\t\t\t\"Africa/Lagos|Africa/Niamey\",\n\t\t\t\"Africa/Lagos|Africa/Porto-Novo\",\n\t\t\t\"Africa/Maputo|Africa/Blantyre\",\n\t\t\t\"Africa/Maputo|Africa/Bujumbura\",\n\t\t\t\"Africa/Maputo|Africa/Gaborone\",\n\t\t\t\"Africa/Maputo|Africa/Harare\",\n\t\t\t\"Africa/Maputo|Africa/Kigali\",\n\t\t\t\"Africa/Maputo|Africa/Lubumbashi\",\n\t\t\t\"Africa/Maputo|Africa/Lusaka\",\n\t\t\t\"Africa/Nairobi|Africa/Addis_Ababa\",\n\t\t\t\"Africa/Nairobi|Africa/Asmara\",\n\t\t\t\"Africa/Nairobi|Africa/Asmera\",\n\t\t\t\"Africa/Nairobi|Africa/Dar_es_Salaam\",\n\t\t\t\"Africa/Nairobi|Africa/Djibouti\",\n\t\t\t\"Africa/Nairobi|Africa/Kampala\",\n\t\t\t\"Africa/Nairobi|Africa/Mogadishu\",\n\t\t\t\"Africa/Nairobi|Indian/Antananarivo\",\n\t\t\t\"Africa/Nairobi|Indian/Comoro\",\n\t\t\t\"Africa/Nairobi|Indian/Mayotte\",\n\t\t\t\"Africa/Tripoli|Libya\",\n\t\t\t\"America/Adak|America/Atka\",\n\t\t\t\"America/Adak|US/Aleutian\",\n\t\t\t\"America/Anchorage|US/Alaska\",\n\t\t\t\"America/Argentina/Buenos_Aires|America/Buenos_Aires\",\n\t\t\t\"America/Argentina/Catamarca|America/Argentina/ComodRivadavia\",\n\t\t\t\"America/Argentina/Catamarca|America/Catamarca\",\n\t\t\t\"America/Argentina/Cordoba|America/Cordoba\",\n\t\t\t\"America/Argentina/Cordoba|America/Rosario\",\n\t\t\t\"America/Argentina/Jujuy|America/Jujuy\",\n\t\t\t\"America/Argentina/Mendoza|America/Mendoza\",\n\t\t\t\"America/Atikokan|America/Coral_Harbour\",\n\t\t\t\"America/Chicago|US/Central\",\n\t\t\t\"America/Curacao|America/Aruba\",\n\t\t\t\"America/Curacao|America/Kralendijk\",\n\t\t\t\"America/Curacao|America/Lower_Princes\",\n\t\t\t\"America/Denver|America/Shiprock\",\n\t\t\t\"America/Denver|Navajo\",\n\t\t\t\"America/Denver|US/Mountain\",\n\t\t\t\"America/Detroit|US/Michigan\",\n\t\t\t\"America/Edmonton|Canada/Mountain\",\n\t\t\t\"America/Fort_Wayne|America/Indiana/Indianapolis\",\n\t\t\t\"America/Fort_Wayne|America/Indianapolis\",\n\t\t\t\"America/Fort_Wayne|US/East-Indiana\",\n\t\t\t\"America/Halifax|Canada/Atlantic\",\n\t\t\t\"America/Havana|Cuba\",\n\t\t\t\"America/Indiana/Knox|America/Knox_IN\",\n\t\t\t\"America/Indiana/Knox|US/Indiana-Starke\",\n\t\t\t\"America/Jamaica|Jamaica\",\n\t\t\t\"America/Kentucky/Louisville|America/Louisville\",\n\t\t\t\"America/Los_Angeles|US/Pacific\",\n\t\t\t\"America/Los_Angeles|US/Pacific-New\",\n\t\t\t\"America/Manaus|Brazil/West\",\n\t\t\t\"America/Mazatlan|Mexico/BajaSur\",\n\t\t\t\"America/Mexico_City|Mexico/General\",\n\t\t\t\"America/New_York|US/Eastern\",\n\t\t\t\"America/Noronha|Brazil/DeNoronha\",\n\t\t\t\"America/Panama|America/Cayman\",\n\t\t\t\"America/Phoenix|US/Arizona\",\n\t\t\t\"America/Port_of_Spain|America/Anguilla\",\n\t\t\t\"America/Port_of_Spain|America/Antigua\",\n\t\t\t\"America/Port_of_Spain|America/Dominica\",\n\t\t\t\"America/Port_of_Spain|America/Grenada\",\n\t\t\t\"America/Port_of_Spain|America/Guadeloupe\",\n\t\t\t\"America/Port_of_Spain|America/Marigot\",\n\t\t\t\"America/Port_of_Spain|America/Montserrat\",\n\t\t\t\"America/Port_of_Spain|America/St_Barthelemy\",\n\t\t\t\"America/Port_of_Spain|America/St_Kitts\",\n\t\t\t\"America/Port_of_Spain|America/St_Lucia\",\n\t\t\t\"America/Port_of_Spain|America/St_Thomas\",\n\t\t\t\"America/Port_of_Spain|America/St_Vincent\",\n\t\t\t\"America/Port_of_Spain|America/Tortola\",\n\t\t\t\"America/Port_of_Spain|America/Virgin\",\n\t\t\t\"America/Regina|Canada/Saskatchewan\",\n\t\t\t\"America/Rio_Branco|America/Porto_Acre\",\n\t\t\t\"America/Rio_Branco|Brazil/Acre\",\n\t\t\t\"America/Santiago|Chile/Continental\",\n\t\t\t\"America/Sao_Paulo|Brazil/East\",\n\t\t\t\"America/St_Johns|Canada/Newfoundland\",\n\t\t\t\"America/Tijuana|America/Ensenada\",\n\t\t\t\"America/Tijuana|America/Santa_Isabel\",\n\t\t\t\"America/Tijuana|Mexico/BajaNorte\",\n\t\t\t\"America/Toronto|America/Montreal\",\n\t\t\t\"America/Toronto|Canada/Eastern\",\n\t\t\t\"America/Vancouver|Canada/Pacific\",\n\t\t\t\"America/Whitehorse|Canada/Yukon\",\n\t\t\t\"America/Winnipeg|Canada/Central\",\n\t\t\t\"Asia/Ashgabat|Asia/Ashkhabad\",\n\t\t\t\"Asia/Bangkok|Asia/Phnom_Penh\",\n\t\t\t\"Asia/Bangkok|Asia/Vientiane\",\n\t\t\t\"Asia/Dhaka|Asia/Dacca\",\n\t\t\t\"Asia/Dubai|Asia/Muscat\",\n\t\t\t\"Asia/Ho_Chi_Minh|Asia/Saigon\",\n\t\t\t\"Asia/Hong_Kong|Hongkong\",\n\t\t\t\"Asia/Jerusalem|Asia/Tel_Aviv\",\n\t\t\t\"Asia/Jerusalem|Israel\",\n\t\t\t\"Asia/Kathmandu|Asia/Katmandu\",\n\t\t\t\"Asia/Kolkata|Asia/Calcutta\",\n\t\t\t\"Asia/Kuala_Lumpur|Asia/Singapore\",\n\t\t\t\"Asia/Kuala_Lumpur|Singapore\",\n\t\t\t\"Asia/Macau|Asia/Macao\",\n\t\t\t\"Asia/Makassar|Asia/Ujung_Pandang\",\n\t\t\t\"Asia/Nicosia|Europe/Nicosia\",\n\t\t\t\"Asia/Qatar|Asia/Bahrain\",\n\t\t\t\"Asia/Rangoon|Asia/Yangon\",\n\t\t\t\"Asia/Riyadh|Asia/Aden\",\n\t\t\t\"Asia/Riyadh|Asia/Kuwait\",\n\t\t\t\"Asia/Seoul|ROK\",\n\t\t\t\"Asia/Shanghai|Asia/Chongqing\",\n\t\t\t\"Asia/Shanghai|Asia/Chungking\",\n\t\t\t\"Asia/Shanghai|Asia/Harbin\",\n\t\t\t\"Asia/Shanghai|PRC\",\n\t\t\t\"Asia/Taipei|ROC\",\n\t\t\t\"Asia/Tehran|Iran\",\n\t\t\t\"Asia/Thimphu|Asia/Thimbu\",\n\t\t\t\"Asia/Tokyo|Japan\",\n\t\t\t\"Asia/Ulaanbaatar|Asia/Ulan_Bator\",\n\t\t\t\"Asia/Urumqi|Asia/Kashgar\",\n\t\t\t\"Atlantic/Faroe|Atlantic/Faeroe\",\n\t\t\t\"Atlantic/Reykjavik|Iceland\",\n\t\t\t\"Atlantic/South_Georgia|Etc/GMT+2\",\n\t\t\t\"Australia/Adelaide|Australia/South\",\n\t\t\t\"Australia/Brisbane|Australia/Queensland\",\n\t\t\t\"Australia/Broken_Hill|Australia/Yancowinna\",\n\t\t\t\"Australia/Darwin|Australia/North\",\n\t\t\t\"Australia/Hobart|Australia/Tasmania\",\n\t\t\t\"Australia/Lord_Howe|Australia/LHI\",\n\t\t\t\"Australia/Melbourne|Australia/Victoria\",\n\t\t\t\"Australia/Perth|Australia/West\",\n\t\t\t\"Australia/Sydney|Australia/ACT\",\n\t\t\t\"Australia/Sydney|Australia/Canberra\",\n\t\t\t\"Australia/Sydney|Australia/NSW\",\n\t\t\t\"Etc/GMT-0|Etc/GMT\",\n\t\t\t\"Etc/GMT-0|Etc/GMT+0\",\n\t\t\t\"Etc/GMT-0|Etc/GMT0\",\n\t\t\t\"Etc/GMT-0|Etc/Greenwich\",\n\t\t\t\"Etc/GMT-0|GMT\",\n\t\t\t\"Etc/GMT-0|GMT+0\",\n\t\t\t\"Etc/GMT-0|GMT-0\",\n\t\t\t\"Etc/GMT-0|GMT0\",\n\t\t\t\"Etc/GMT-0|Greenwich\",\n\t\t\t\"Etc/UTC|Etc/UCT\",\n\t\t\t\"Etc/UTC|Etc/Universal\",\n\t\t\t\"Etc/UTC|Etc/Zulu\",\n\t\t\t\"Etc/UTC|UCT\",\n\t\t\t\"Etc/UTC|UTC\",\n\t\t\t\"Etc/UTC|Universal\",\n\t\t\t\"Etc/UTC|Zulu\",\n\t\t\t\"Europe/Belgrade|Europe/Ljubljana\",\n\t\t\t\"Europe/Belgrade|Europe/Podgorica\",\n\t\t\t\"Europe/Belgrade|Europe/Sarajevo\",\n\t\t\t\"Europe/Belgrade|Europe/Skopje\",\n\t\t\t\"Europe/Belgrade|Europe/Zagreb\",\n\t\t\t\"Europe/Chisinau|Europe/Tiraspol\",\n\t\t\t\"Europe/Dublin|Eire\",\n\t\t\t\"Europe/Helsinki|Europe/Mariehamn\",\n\t\t\t\"Europe/Istanbul|Asia/Istanbul\",\n\t\t\t\"Europe/Istanbul|Turkey\",\n\t\t\t\"Europe/Lisbon|Portugal\",\n\t\t\t\"Europe/London|Europe/Belfast\",\n\t\t\t\"Europe/London|Europe/Guernsey\",\n\t\t\t\"Europe/London|Europe/Isle_of_Man\",\n\t\t\t\"Europe/London|Europe/Jersey\",\n\t\t\t\"Europe/London|GB\",\n\t\t\t\"Europe/London|GB-Eire\",\n\t\t\t\"Europe/Moscow|W-SU\",\n\t\t\t\"Europe/Oslo|Arctic/Longyearbyen\",\n\t\t\t\"Europe/Oslo|Atlantic/Jan_Mayen\",\n\t\t\t\"Europe/Prague|Europe/Bratislava\",\n\t\t\t\"Europe/Rome|Europe/San_Marino\",\n\t\t\t\"Europe/Rome|Europe/Vatican\",\n\t\t\t\"Europe/Warsaw|Poland\",\n\t\t\t\"Europe/Zurich|Europe/Busingen\",\n\t\t\t\"Europe/Zurich|Europe/Vaduz\",\n\t\t\t\"Indian/Christmas|Etc/GMT-7\",\n\t\t\t\"Pacific/Auckland|Antarctica/McMurdo\",\n\t\t\t\"Pacific/Auckland|Antarctica/South_Pole\",\n\t\t\t\"Pacific/Auckland|NZ\",\n\t\t\t\"Pacific/Chatham|NZ-CHAT\",\n\t\t\t\"Pacific/Chuuk|Pacific/Truk\",\n\t\t\t\"Pacific/Chuuk|Pacific/Yap\",\n\t\t\t\"Pacific/Easter|Chile/EasterIsland\",\n\t\t\t\"Pacific/Guam|Pacific/Saipan\",\n\t\t\t\"Pacific/Honolulu|Pacific/Johnston\",\n\t\t\t\"Pacific/Honolulu|US/Hawaii\",\n\t\t\t\"Pacific/Kwajalein|Kwajalein\",\n\t\t\t\"Pacific/Pago_Pago|Pacific/Midway\",\n\t\t\t\"Pacific/Pago_Pago|Pacific/Samoa\",\n\t\t\t\"Pacific/Pago_Pago|US/Samoa\",\n\t\t\t\"Pacific/Palau|Etc/GMT-9\",\n\t\t\t\"Pacific/Pohnpei|Pacific/Ponape\",\n\t\t\t\"Pacific/Port_Moresby|Etc/GMT-10\",\n\t\t\t\"Pacific/Tarawa|Etc/GMT-12\",\n\t\t\t\"Pacific/Tarawa|Pacific/Funafuti\",\n\t\t\t\"Pacific/Tarawa|Pacific/Wake\",\n\t\t\t\"Pacific/Tarawa|Pacific/Wallis\"\n\t\t],\n\t\t\"countries\": [\n\t\t\t\"AD|Europe/Andorra\",\n\t\t\t\"AE|Asia/Dubai\",\n\t\t\t\"AF|Asia/Kabul\",\n\t\t\t\"AG|America/Port_of_Spain America/Antigua\",\n\t\t\t\"AI|America/Port_of_Spain America/Anguilla\",\n\t\t\t\"AL|Europe/Tirane\",\n\t\t\t\"AM|Asia/Yerevan\",\n\t\t\t\"AO|Africa/Lagos Africa/Luanda\",\n\t\t\t\"AQ|Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Pacific/Auckland Antarctica/McMurdo\",\n\t\t\t\"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia\",\n\t\t\t\"AS|Pacific/Pago_Pago\",\n\t\t\t\"AT|Europe/Vienna\",\n\t\t\t\"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Currie Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla\",\n\t\t\t\"AW|America/Curacao America/Aruba\",\n\t\t\t\"AX|Europe/Helsinki Europe/Mariehamn\",\n\t\t\t\"AZ|Asia/Baku\",\n\t\t\t\"BA|Europe/Belgrade Europe/Sarajevo\",\n\t\t\t\"BB|America/Barbados\",\n\t\t\t\"BD|Asia/Dhaka\",\n\t\t\t\"BE|Europe/Brussels\",\n\t\t\t\"BF|Africa/Abidjan Africa/Ouagadougou\",\n\t\t\t\"BG|Europe/Sofia\",\n\t\t\t\"BH|Asia/Qatar Asia/Bahrain\",\n\t\t\t\"BI|Africa/Maputo Africa/Bujumbura\",\n\t\t\t\"BJ|Africa/Lagos Africa/Porto-Novo\",\n\t\t\t\"BL|America/Port_of_Spain America/St_Barthelemy\",\n\t\t\t\"BM|Atlantic/Bermuda\",\n\t\t\t\"BN|Asia/Brunei\",\n\t\t\t\"BO|America/La_Paz\",\n\t\t\t\"BQ|America/Curacao America/Kralendijk\",\n\t\t\t\"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco\",\n\t\t\t\"BS|America/Nassau\",\n\t\t\t\"BT|Asia/Thimphu\",\n\t\t\t\"BW|Africa/Maputo Africa/Gaborone\",\n\t\t\t\"BY|Europe/Minsk\",\n\t\t\t\"BZ|America/Belize\",\n\t\t\t\"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Vancouver America/Whitehorse America/Dawson\",\n\t\t\t\"CC|Indian/Cocos\",\n\t\t\t\"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi\",\n\t\t\t\"CF|Africa/Lagos Africa/Bangui\",\n\t\t\t\"CG|Africa/Lagos Africa/Brazzaville\",\n\t\t\t\"CH|Europe/Zurich\",\n\t\t\t\"CI|Africa/Abidjan\",\n\t\t\t\"CK|Pacific/Rarotonga\",\n\t\t\t\"CL|America/Santiago America/Punta_Arenas Pacific/Easter\",\n\t\t\t\"CM|Africa/Lagos Africa/Douala\",\n\t\t\t\"CN|Asia/Shanghai Asia/Urumqi\",\n\t\t\t\"CO|America/Bogota\",\n\t\t\t\"CR|America/Costa_Rica\",\n\t\t\t\"CU|America/Havana\",\n\t\t\t\"CV|Atlantic/Cape_Verde\",\n\t\t\t\"CW|America/Curacao\",\n\t\t\t\"CX|Indian/Christmas\",\n\t\t\t\"CY|Asia/Nicosia Asia/Famagusta\",\n\t\t\t\"CZ|Europe/Prague\",\n\t\t\t\"DE|Europe/Zurich Europe/Berlin Europe/Busingen\",\n\t\t\t\"DJ|Africa/Nairobi Africa/Djibouti\",\n\t\t\t\"DK|Europe/Copenhagen\",\n\t\t\t\"DM|America/Port_of_Spain America/Dominica\",\n\t\t\t\"DO|America/Santo_Domingo\",\n\t\t\t\"DZ|Africa/Algiers\",\n\t\t\t\"EC|America/Guayaquil Pacific/Galapagos\",\n\t\t\t\"EE|Europe/Tallinn\",\n\t\t\t\"EG|Africa/Cairo\",\n\t\t\t\"EH|Africa/El_Aaiun\",\n\t\t\t\"ER|Africa/Nairobi Africa/Asmara\",\n\t\t\t\"ES|Europe/Madrid Africa/Ceuta Atlantic/Canary\",\n\t\t\t\"ET|Africa/Nairobi Africa/Addis_Ababa\",\n\t\t\t\"FI|Europe/Helsinki\",\n\t\t\t\"FJ|Pacific/Fiji\",\n\t\t\t\"FK|Atlantic/Stanley\",\n\t\t\t\"FM|Pacific/Chuuk Pacific/Pohnpei Pacific/Kosrae\",\n\t\t\t\"FO|Atlantic/Faroe\",\n\t\t\t\"FR|Europe/Paris\",\n\t\t\t\"GA|Africa/Lagos Africa/Libreville\",\n\t\t\t\"GB|Europe/London\",\n\t\t\t\"GD|America/Port_of_Spain America/Grenada\",\n\t\t\t\"GE|Asia/Tbilisi\",\n\t\t\t\"GF|America/Cayenne\",\n\t\t\t\"GG|Europe/London Europe/Guernsey\",\n\t\t\t\"GH|Africa/Accra\",\n\t\t\t\"GI|Europe/Gibraltar\",\n\t\t\t\"GL|America/Godthab America/Danmarkshavn America/Scoresbysund America/Thule\",\n\t\t\t\"GM|Africa/Abidjan Africa/Banjul\",\n\t\t\t\"GN|Africa/Abidjan Africa/Conakry\",\n\t\t\t\"GP|America/Port_of_Spain America/Guadeloupe\",\n\t\t\t\"GQ|Africa/Lagos Africa/Malabo\",\n\t\t\t\"GR|Europe/Athens\",\n\t\t\t\"GS|Atlantic/South_Georgia\",\n\t\t\t\"GT|America/Guatemala\",\n\t\t\t\"GU|Pacific/Guam\",\n\t\t\t\"GW|Africa/Bissau\",\n\t\t\t\"GY|America/Guyana\",\n\t\t\t\"HK|Asia/Hong_Kong\",\n\t\t\t\"HN|America/Tegucigalpa\",\n\t\t\t\"HR|Europe/Belgrade Europe/Zagreb\",\n\t\t\t\"HT|America/Port-au-Prince\",\n\t\t\t\"HU|Europe/Budapest\",\n\t\t\t\"ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura\",\n\t\t\t\"IE|Europe/Dublin\",\n\t\t\t\"IL|Asia/Jerusalem\",\n\t\t\t\"IM|Europe/London Europe/Isle_of_Man\",\n\t\t\t\"IN|Asia/Kolkata\",\n\t\t\t\"IO|Indian/Chagos\",\n\t\t\t\"IQ|Asia/Baghdad\",\n\t\t\t\"IR|Asia/Tehran\",\n\t\t\t\"IS|Atlantic/Reykjavik\",\n\t\t\t\"IT|Europe/Rome\",\n\t\t\t\"JE|Europe/London Europe/Jersey\",\n\t\t\t\"JM|America/Jamaica\",\n\t\t\t\"JO|Asia/Amman\",\n\t\t\t\"JP|Asia/Tokyo\",\n\t\t\t\"KE|Africa/Nairobi\",\n\t\t\t\"KG|Asia/Bishkek\",\n\t\t\t\"KH|Asia/Bangkok Asia/Phnom_Penh\",\n\t\t\t\"KI|Pacific/Tarawa Pacific/Enderbury Pacific/Kiritimati\",\n\t\t\t\"KM|Africa/Nairobi Indian/Comoro\",\n\t\t\t\"KN|America/Port_of_Spain America/St_Kitts\",\n\t\t\t\"KP|Asia/Pyongyang\",\n\t\t\t\"KR|Asia/Seoul\",\n\t\t\t\"KW|Asia/Riyadh Asia/Kuwait\",\n\t\t\t\"KY|America/Panama America/Cayman\",\n\t\t\t\"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral\",\n\t\t\t\"LA|Asia/Bangkok Asia/Vientiane\",\n\t\t\t\"LB|Asia/Beirut\",\n\t\t\t\"LC|America/Port_of_Spain America/St_Lucia\",\n\t\t\t\"LI|Europe/Zurich Europe/Vaduz\",\n\t\t\t\"LK|Asia/Colombo\",\n\t\t\t\"LR|Africa/Monrovia\",\n\t\t\t\"LS|Africa/Johannesburg Africa/Maseru\",\n\t\t\t\"LT|Europe/Vilnius\",\n\t\t\t\"LU|Europe/Luxembourg\",\n\t\t\t\"LV|Europe/Riga\",\n\t\t\t\"LY|Africa/Tripoli\",\n\t\t\t\"MA|Africa/Casablanca\",\n\t\t\t\"MC|Europe/Monaco\",\n\t\t\t\"MD|Europe/Chisinau\",\n\t\t\t\"ME|Europe/Belgrade Europe/Podgorica\",\n\t\t\t\"MF|America/Port_of_Spain America/Marigot\",\n\t\t\t\"MG|Africa/Nairobi Indian/Antananarivo\",\n\t\t\t\"MH|Pacific/Majuro Pacific/Kwajalein\",\n\t\t\t\"MK|Europe/Belgrade Europe/Skopje\",\n\t\t\t\"ML|Africa/Abidjan Africa/Bamako\",\n\t\t\t\"MM|Asia/Yangon\",\n\t\t\t\"MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan\",\n\t\t\t\"MO|Asia/Macau\",\n\t\t\t\"MP|Pacific/Guam Pacific/Saipan\",\n\t\t\t\"MQ|America/Martinique\",\n\t\t\t\"MR|Africa/Abidjan Africa/Nouakchott\",\n\t\t\t\"MS|America/Port_of_Spain America/Montserrat\",\n\t\t\t\"MT|Europe/Malta\",\n\t\t\t\"MU|Indian/Mauritius\",\n\t\t\t\"MV|Indian/Maldives\",\n\t\t\t\"MW|Africa/Maputo Africa/Blantyre\",\n\t\t\t\"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Mazatlan America/Chihuahua America/Ojinaga America/Hermosillo America/Tijuana America/Bahia_Banderas\",\n\t\t\t\"MY|Asia/Kuala_Lumpur Asia/Kuching\",\n\t\t\t\"MZ|Africa/Maputo\",\n\t\t\t\"NA|Africa/Windhoek\",\n\t\t\t\"NC|Pacific/Noumea\",\n\t\t\t\"NE|Africa/Lagos Africa/Niamey\",\n\t\t\t\"NF|Pacific/Norfolk\",\n\t\t\t\"NG|Africa/Lagos\",\n\t\t\t\"NI|America/Managua\",\n\t\t\t\"NL|Europe/Amsterdam\",\n\t\t\t\"NO|Europe/Oslo\",\n\t\t\t\"NP|Asia/Kathmandu\",\n\t\t\t\"NR|Pacific/Nauru\",\n\t\t\t\"NU|Pacific/Niue\",\n\t\t\t\"NZ|Pacific/Auckland Pacific/Chatham\",\n\t\t\t\"OM|Asia/Dubai Asia/Muscat\",\n\t\t\t\"PA|America/Panama\",\n\t\t\t\"PE|America/Lima\",\n\t\t\t\"PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier\",\n\t\t\t\"PG|Pacific/Port_Moresby Pacific/Bougainville\",\n\t\t\t\"PH|Asia/Manila\",\n\t\t\t\"PK|Asia/Karachi\",\n\t\t\t\"PL|Europe/Warsaw\",\n\t\t\t\"PM|America/Miquelon\",\n\t\t\t\"PN|Pacific/Pitcairn\",\n\t\t\t\"PR|America/Puerto_Rico\",\n\t\t\t\"PS|Asia/Gaza Asia/Hebron\",\n\t\t\t\"PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores\",\n\t\t\t\"PW|Pacific/Palau\",\n\t\t\t\"PY|America/Asuncion\",\n\t\t\t\"QA|Asia/Qatar\",\n\t\t\t\"RE|Indian/Reunion\",\n\t\t\t\"RO|Europe/Bucharest\",\n\t\t\t\"RS|Europe/Belgrade\",\n\t\t\t\"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Astrakhan Europe/Volgograd Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr\",\n\t\t\t\"RW|Africa/Maputo Africa/Kigali\",\n\t\t\t\"SA|Asia/Riyadh\",\n\t\t\t\"SB|Pacific/Guadalcanal\",\n\t\t\t\"SC|Indian/Mahe\",\n\t\t\t\"SD|Africa/Khartoum\",\n\t\t\t\"SE|Europe/Stockholm\",\n\t\t\t\"SG|Asia/Singapore\",\n\t\t\t\"SH|Africa/Abidjan Atlantic/St_Helena\",\n\t\t\t\"SI|Europe/Belgrade Europe/Ljubljana\",\n\t\t\t\"SJ|Europe/Oslo Arctic/Longyearbyen\",\n\t\t\t\"SK|Europe/Prague Europe/Bratislava\",\n\t\t\t\"SL|Africa/Abidjan Africa/Freetown\",\n\t\t\t\"SM|Europe/Rome Europe/San_Marino\",\n\t\t\t\"SN|Africa/Abidjan Africa/Dakar\",\n\t\t\t\"SO|Africa/Nairobi Africa/Mogadishu\",\n\t\t\t\"SR|America/Paramaribo\",\n\t\t\t\"SS|Africa/Juba\",\n\t\t\t\"ST|Africa/Sao_Tome\",\n\t\t\t\"SV|America/El_Salvador\",\n\t\t\t\"SX|America/Curacao America/Lower_Princes\",\n\t\t\t\"SY|Asia/Damascus\",\n\t\t\t\"SZ|Africa/Johannesburg Africa/Mbabane\",\n\t\t\t\"TC|America/Grand_Turk\",\n\t\t\t\"TD|Africa/Ndjamena\",\n\t\t\t\"TF|Indian/Reunion Indian/Kerguelen\",\n\t\t\t\"TG|Africa/Abidjan Africa/Lome\",\n\t\t\t\"TH|Asia/Bangkok\",\n\t\t\t\"TJ|Asia/Dushanbe\",\n\t\t\t\"TK|Pacific/Fakaofo\",\n\t\t\t\"TL|Asia/Dili\",\n\t\t\t\"TM|Asia/Ashgabat\",\n\t\t\t\"TN|Africa/Tunis\",\n\t\t\t\"TO|Pacific/Tongatapu\",\n\t\t\t\"TR|Europe/Istanbul\",\n\t\t\t\"TT|America/Port_of_Spain\",\n\t\t\t\"TV|Pacific/Funafuti\",\n\t\t\t\"TW|Asia/Taipei\",\n\t\t\t\"TZ|Africa/Nairobi Africa/Dar_es_Salaam\",\n\t\t\t\"UA|Europe/Simferopol Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye\",\n\t\t\t\"UG|Africa/Nairobi Africa/Kampala\",\n\t\t\t\"UM|Pacific/Pago_Pago Pacific/Wake Pacific/Honolulu Pacific/Midway\",\n\t\t\t\"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu\",\n\t\t\t\"UY|America/Montevideo\",\n\t\t\t\"UZ|Asia/Samarkand Asia/Tashkent\",\n\t\t\t\"VA|Europe/Rome Europe/Vatican\",\n\t\t\t\"VC|America/Port_of_Spain America/St_Vincent\",\n\t\t\t\"VE|America/Caracas\",\n\t\t\t\"VG|America/Port_of_Spain America/Tortola\",\n\t\t\t\"VI|America/Port_of_Spain America/St_Thomas\",\n\t\t\t\"VN|Asia/Bangkok Asia/Ho_Chi_Minh\",\n\t\t\t\"VU|Pacific/Efate\",\n\t\t\t\"WF|Pacific/Wallis\",\n\t\t\t\"WS|Pacific/Apia\",\n\t\t\t\"YE|Asia/Riyadh Asia/Aden\",\n\t\t\t\"YT|Africa/Nairobi Indian/Mayotte\",\n\t\t\t\"ZA|Africa/Johannesburg\",\n\t\t\t\"ZM|Africa/Maputo Africa/Lusaka\",\n\t\t\t\"ZW|Africa/Maputo Africa/Harare\"\n\t\t]\n\t});\n\n\n\treturn moment;\n}));\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/nestable/jquery.nestable.js",
    "content": "/*!\n * Nestable jQuery Plugin - Copyright (c) 2012 David Bushell - http://dbushell.com/\n * Dual-licensed under the BSD or MIT licenses\n */\n;(function($, window, document, undefined)\n{\n    var hasTouch = 'ontouchstart' in document;\n\n    /**\n     * Detect CSS pointer-events property\n     * events are normally disabled on the dragging element to avoid conflicts\n     * https://github.com/ausi/Feature-detection-technique-for-pointer-events/blob/master/modernizr-pointerevents.js\n     */\n    var hasPointerEvents = (function()\n    {\n        var el    = document.createElement('div'),\n            docEl = document.documentElement;\n        if (!('pointerEvents' in el.style)) {\n            return false;\n        }\n        el.style.pointerEvents = 'auto';\n        el.style.pointerEvents = 'x';\n        docEl.appendChild(el);\n        var supports = window.getComputedStyle && window.getComputedStyle(el, '').pointerEvents === 'auto';\n        docEl.removeChild(el);\n        return !!supports;\n    })();\n\n    var defaults = {\n            listNodeName    : 'ol',\n            itemNodeName    : 'li',\n            rootClass       : 'dd',\n            listClass       : 'dd-list',\n            itemClass       : 'dd-item',\n            dragClass       : 'dd-dragel',\n            handleClass     : 'dd-handle',\n            collapsedClass  : 'dd-collapsed',\n            placeClass      : 'dd-placeholder',\n            noDragClass     : 'dd-nodrag',\n            emptyClass      : 'dd-empty',\n            expandBtnHTML   : '<button data-action=\"expand\" type=\"button\">Expand</button>',\n            collapseBtnHTML : '<button data-action=\"collapse\" type=\"button\">Collapse</button>',\n            group           : 0,\n            maxDepth        : 5,\n            threshold       : 20\n        };\n\n    function Plugin(element, options)\n    {\n        this.w  = $(document);\n        this.el = $(element);\n        this.options = $.extend({}, defaults, options);\n        this.init();\n    }\n\n    Plugin.prototype = {\n\n        init: function()\n        {\n            var list = this;\n\n            list.reset();\n\n            list.el.data('nestable-group', this.options.group);\n\n            list.placeEl = $('<div class=\"' + list.options.placeClass + '\"/>');\n\n            $.each(this.el.find(list.options.itemNodeName), function(k, el) {\n                list.setParent($(el));\n            });\n\n            list.el.on('click', 'button', function(e) {\n                if (list.dragEl) {\n                    return;\n                }\n                var target = $(e.currentTarget),\n                    action = target.data('action'),\n                    item   = target.parent(list.options.itemNodeName);\n                if (action === 'collapse') {\n                    list.collapseItem(item);\n                }\n                if (action === 'expand') {\n                    list.expandItem(item);\n                }\n            });\n\n            var onStartEvent = function(e)\n            {\n                var handle = $(e.target);\n                if (!handle.hasClass(list.options.handleClass)) {\n                    if (handle.closest('.' + list.options.noDragClass).length) {\n                        return;\n                    }\n                    handle = handle.closest('.' + list.options.handleClass);\n                }\n\n                if (!handle.length || list.dragEl) {\n                    return;\n                }\n\n                list.isTouch = /^touch/.test(e.type);\n                if (list.isTouch && e.touches.length !== 1) {\n                    return;\n                }\n\n                e.preventDefault();\n                list.dragStart(e.touches ? e.touches[0] : e);\n            };\n\n            var onMoveEvent = function(e)\n            {\n                if (list.dragEl) {\n                    e.preventDefault();\n                    list.dragMove(e.touches ? e.touches[0] : e);\n                }\n            };\n\n            var onEndEvent = function(e)\n            {\n                if (list.dragEl) {\n                    e.preventDefault();\n                    list.dragStop(e.touches ? e.touches[0] : e);\n                }\n            };\n\n            if (hasTouch) {\n                list.el[0].addEventListener('touchstart', onStartEvent, false);\n                window.addEventListener('touchmove', onMoveEvent, false);\n                window.addEventListener('touchend', onEndEvent, false);\n                window.addEventListener('touchcancel', onEndEvent, false);\n            }\n\n            list.el.on('mousedown', onStartEvent);\n            list.w.on('mousemove', onMoveEvent);\n            list.w.on('mouseup', onEndEvent);\n\n        },\n\n        serialize: function()\n        {\n            var data,\n                depth = 0,\n                list  = this;\n                step  = function(level, depth)\n                {\n                    var array = [ ],\n                        items = level.children(list.options.itemNodeName);\n                    items.each(function()\n                    {\n                        var li   = $(this),\n                            item = $.extend({}, li.data()),\n                            sub  = li.children(list.options.listNodeName);\n                        if (sub.length) {\n                            item.children = step(sub, depth + 1);\n                        }\n                        array.push(item);\n                    });\n                    return array;\n                };\n            data = step(list.el.find(list.options.listNodeName).first(), depth);\n            return data;\n        },\n\n        serialise: function()\n        {\n            return this.serialize();\n        },\n\n        reset: function()\n        {\n            this.mouse = {\n                offsetX   : 0,\n                offsetY   : 0,\n                startX    : 0,\n                startY    : 0,\n                lastX     : 0,\n                lastY     : 0,\n                nowX      : 0,\n                nowY      : 0,\n                distX     : 0,\n                distY     : 0,\n                dirAx     : 0,\n                dirX      : 0,\n                dirY      : 0,\n                lastDirX  : 0,\n                lastDirY  : 0,\n                distAxX   : 0,\n                distAxY   : 0\n            };\n            this.isTouch    = false;\n            this.moving     = false;\n            this.dragEl     = null;\n            this.dragRootEl = null;\n            this.dragDepth  = 0;\n            this.hasNewRoot = false;\n            this.pointEl    = null;\n        },\n\n        expandItem: function(li)\n        {\n            li.removeClass(this.options.collapsedClass);\n            li.children('[data-action=\"expand\"]').hide();\n            li.children('[data-action=\"collapse\"]').show();\n            li.children(this.options.listNodeName).show();\n        },\n\n        collapseItem: function(li)\n        {\n            var lists = li.children(this.options.listNodeName);\n            if (lists.length) {\n                li.addClass(this.options.collapsedClass);\n                li.children('[data-action=\"collapse\"]').hide();\n                li.children('[data-action=\"expand\"]').show();\n                li.children(this.options.listNodeName).hide();\n            }\n        },\n\n        expandAll: function()\n        {\n            var list = this;\n            list.el.find(list.options.itemNodeName).each(function() {\n                list.expandItem($(this));\n            });\n        },\n\n        collapseAll: function()\n        {\n            var list = this;\n            list.el.find(list.options.itemNodeName).each(function() {\n                list.collapseItem($(this));\n            });\n        },\n\n        setParent: function(li)\n        {\n            if (li.children(this.options.listNodeName).length) {\n                li.prepend($(this.options.expandBtnHTML));\n                li.prepend($(this.options.collapseBtnHTML));\n            }\n            li.children('[data-action=\"expand\"]').hide();\n        },\n\n        unsetParent: function(li)\n        {\n            li.removeClass(this.options.collapsedClass);\n            li.children('[data-action]').remove();\n            li.children(this.options.listNodeName).remove();\n        },\n\n        dragStart: function(e)\n        {\n            var mouse    = this.mouse,\n                target   = $(e.target),\n                dragItem = target.closest(this.options.itemNodeName);\n\n            this.placeEl.css('height', dragItem.height());\n\n            mouse.offsetX = e.offsetX !== undefined ? e.offsetX : e.pageX - target.offset().left;\n            mouse.offsetY = e.offsetY !== undefined ? e.offsetY : e.pageY - target.offset().top;\n            mouse.startX = mouse.lastX = e.pageX;\n            mouse.startY = mouse.lastY = e.pageY;\n\n            this.dragRootEl = this.el;\n\n            this.dragEl = $(document.createElement(this.options.listNodeName)).addClass(this.options.listClass + ' ' + this.options.dragClass);\n            this.dragEl.css('width', dragItem.width());\n\n            dragItem.after(this.placeEl);\n            dragItem[0].parentNode.removeChild(dragItem[0]);\n            dragItem.appendTo(this.dragEl);\n\n            $(document.body).append(this.dragEl);\n            this.dragEl.css({\n                'left' : e.pageX - mouse.offsetX,\n                'top'  : e.pageY - mouse.offsetY\n            });\n            // total depth of dragging item\n            var i, depth,\n                items = this.dragEl.find(this.options.itemNodeName);\n            for (i = 0; i < items.length; i++) {\n                depth = $(items[i]).parents(this.options.listNodeName).length;\n                if (depth > this.dragDepth) {\n                    this.dragDepth = depth;\n                }\n            }\n        },\n\n        dragStop: function(e)\n        {\n            var el = this.dragEl.children(this.options.itemNodeName).first();\n            el[0].parentNode.removeChild(el[0]);\n            this.placeEl.replaceWith(el);\n\n            this.dragEl.remove();\n            this.el.trigger('change');\n            if (this.hasNewRoot) {\n                this.dragRootEl.trigger('change');\n            }\n            this.reset();\n        },\n\n        dragMove: function(e)\n        {\n            var list, parent, prev, next, depth,\n                opt   = this.options,\n                mouse = this.mouse;\n\n            this.dragEl.css({\n                'left' : e.pageX - mouse.offsetX,\n                'top'  : e.pageY - mouse.offsetY\n            });\n\n            // mouse position last events\n            mouse.lastX = mouse.nowX;\n            mouse.lastY = mouse.nowY;\n            // mouse position this events\n            mouse.nowX  = e.pageX;\n            mouse.nowY  = e.pageY;\n            // distance mouse moved between events\n            mouse.distX = mouse.nowX - mouse.lastX;\n            mouse.distY = mouse.nowY - mouse.lastY;\n            // direction mouse was moving\n            mouse.lastDirX = mouse.dirX;\n            mouse.lastDirY = mouse.dirY;\n            // direction mouse is now moving (on both axis)\n            mouse.dirX = mouse.distX === 0 ? 0 : mouse.distX > 0 ? 1 : -1;\n            mouse.dirY = mouse.distY === 0 ? 0 : mouse.distY > 0 ? 1 : -1;\n            // axis mouse is now moving on\n            var newAx   = Math.abs(mouse.distX) > Math.abs(mouse.distY) ? 1 : 0;\n\n            // do nothing on first move\n            if (!mouse.moving) {\n                mouse.dirAx  = newAx;\n                mouse.moving = true;\n                return;\n            }\n\n            // calc distance moved on this axis (and direction)\n            if (mouse.dirAx !== newAx) {\n                mouse.distAxX = 0;\n                mouse.distAxY = 0;\n            } else {\n                mouse.distAxX += Math.abs(mouse.distX);\n                if (mouse.dirX !== 0 && mouse.dirX !== mouse.lastDirX) {\n                    mouse.distAxX = 0;\n                }\n                mouse.distAxY += Math.abs(mouse.distY);\n                if (mouse.dirY !== 0 && mouse.dirY !== mouse.lastDirY) {\n                    mouse.distAxY = 0;\n                }\n            }\n            mouse.dirAx = newAx;\n\n            /**\n             * move horizontal\n             */\n            if (mouse.dirAx && mouse.distAxX >= opt.threshold) {\n                // reset move distance on x-axis for new phase\n                mouse.distAxX = 0;\n                prev = this.placeEl.prev(opt.itemNodeName);\n                // increase horizontal level if previous sibling exists and is not collapsed\n                if (mouse.distX > 0 && prev.length && !prev.hasClass(opt.collapsedClass)) {\n                    // cannot increase level when item above is collapsed\n                    list = prev.find(opt.listNodeName).last();\n                    // check if depth limit has reached\n                    depth = this.placeEl.parents(opt.listNodeName).length;\n                    if (depth + this.dragDepth <= opt.maxDepth) {\n                        // create new sub-level if one doesn't exist\n                        if (!list.length) {\n                            list = $('<' + opt.listNodeName + '/>').addClass(opt.listClass);\n                            list.append(this.placeEl);\n                            prev.append(list);\n                            this.setParent(prev);\n                        } else {\n                            // else append to next level up\n                            list = prev.children(opt.listNodeName).last();\n                            list.append(this.placeEl);\n                        }\n                    }\n                }\n                // decrease horizontal level\n                if (mouse.distX < 0) {\n                    // we can't decrease a level if an item preceeds the current one\n                    next = this.placeEl.next(opt.itemNodeName);\n                    if (!next.length) {\n                        parent = this.placeEl.parent();\n                        this.placeEl.closest(opt.itemNodeName).after(this.placeEl);\n                        if (!parent.children().length) {\n                            this.unsetParent(parent.parent());\n                        }\n                    }\n                }\n            }\n\n            var isEmpty = false;\n\n            // find list item under cursor\n            if (!hasPointerEvents) {\n                this.dragEl[0].style.visibility = 'hidden';\n            }\n            this.pointEl = $(document.elementFromPoint(e.pageX - document.body.scrollLeft, e.pageY - (window.pageYOffset || document.documentElement.scrollTop)));\n            if (!hasPointerEvents) {\n                this.dragEl[0].style.visibility = 'visible';\n            }\n            if (this.pointEl.hasClass(opt.handleClass)) {\n                this.pointEl = this.pointEl.parent(opt.itemNodeName);\n            }\n            if (this.pointEl.hasClass(opt.emptyClass)) {\n                isEmpty = true;\n            }\n            else if (!this.pointEl.length || !this.pointEl.hasClass(opt.itemClass)) {\n                return;\n            }\n\n            // find parent list of item under cursor\n            var pointElRoot = this.pointEl.closest('.' + opt.rootClass),\n                isNewRoot   = this.dragRootEl.data('nestable-id') !== pointElRoot.data('nestable-id');\n\n            /**\n             * move vertical\n             */\n            if (!mouse.dirAx || isNewRoot || isEmpty) {\n                // check if groups match if dragging over new root\n                if (isNewRoot && opt.group !== pointElRoot.data('nestable-group')) {\n                    return;\n                }\n                // check depth limit\n                depth = this.dragDepth - 1 + this.pointEl.parents(opt.listNodeName).length;\n                if (depth > opt.maxDepth) {\n                    return;\n                }\n                var before = e.pageY < (this.pointEl.offset().top + this.pointEl.height() / 2);\n                    parent = this.placeEl.parent();\n                // if empty create new list to replace empty placeholder\n                if (isEmpty) {\n                    list = $(document.createElement(opt.listNodeName)).addClass(opt.listClass);\n                    list.append(this.placeEl);\n                    this.pointEl.replaceWith(list);\n                }\n                else if (before) {\n                    this.pointEl.before(this.placeEl);\n                }\n                else {\n                    this.pointEl.after(this.placeEl);\n                }\n                if (!parent.children().length) {\n                    this.unsetParent(parent.parent());\n                }\n                if (!this.dragRootEl.find(opt.itemNodeName).length) {\n                    this.dragRootEl.append('<div class=\"' + opt.emptyClass + '\"/>');\n                }\n                // parent root list has changed\n                if (isNewRoot) {\n                    this.dragRootEl = pointElRoot;\n                    this.hasNewRoot = this.el[0] !== this.dragRootEl[0];\n                }\n            }\n        }\n\n    };\n\n    $.fn.nestable = function(params)\n    {\n        var lists  = this,\n            retval = this;\n\n        lists.each(function()\n        {\n            var plugin = $(this).data(\"nestable\");\n\n            if (!plugin) {\n                $(this).data(\"nestable\", new Plugin(this, params));\n                $(this).data(\"nestable-id\", new Date().getTime());\n            } else {\n                if (typeof params === 'string' && typeof plugin[params] === 'function') {\n                    retval = plugin[params]();\n                }\n            }\n        });\n\n        return retval || lists;\n    };\n\n})(window.jQuery || window.Zepto, window, document);\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/nestable/nestable.css",
    "content": ".dd { position: relative; display: block; margin: 10px; padding: 0; list-style: none; font-size: 13px; line-height: 20px; }\n\n.dd-list { display: block; position: relative; margin: 0; padding: 0; list-style: none; }\n.dd-list .dd-list { padding-left: 30px; }\n.dd-collapsed .dd-list { display: none; }\n\n.dd-item,\n.dd-empty,\n.dd-placeholder { display: block; position: relative; margin: 0; padding: 0;}\n\n.dd-handle {\n    display: block;\n\n    margin: 1px 0;\n    padding: 8px 10px;\n    color: #333;\n    text-decoration: none;\n    border: 1px solid #ddd;\n    background: #fff;\n}\n.dd-handle:hover { color: var(--primary); background: #fff; }\n\n.dd-item > button { display: block; position: relative; cursor: pointer; float: left; width: 25px; height: 20px; margin: 5px 0; padding: 0; text-indent: 100%; white-space: nowrap; overflow: hidden; border: 0; background: transparent; font-size: 12px; line-height: 1; text-align: center; font-weight: bold; }\n.dd-item > button:before { content: '+'; display: block; position: absolute; width: 100%; text-align: center; text-indent: 0; }\n.dd-item > button[data-action=\"collapse\"]:before { content: '-'; }\n\n.dd-placeholder { margin: 5px 0; padding: 0; min-height: 30px; background: #f2fbff; border: 1px dashed #b6bcbf; box-sizing: border-box; -moz-box-sizing: border-box; }\n\n.dd-dragel { position: absolute; pointer-events: none; z-index: 9999; }\n.dd-dragel > .dd-item .dd-handle { margin-top: 0; }\n.dd-dragel .dd-handle {\n-webkit-box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);\nbox-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);\n}"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/number-input/bootstrap-number-input.js",
    "content": "/* ========================================================================\n * bootstrap-spin - v1.0\n * https://github.com/wpic/bootstrap-spin\n * ========================================================================\n * Copyright 2014 WPIC, Hamed Abdollahpour\n *\n * ========================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================================\n */\n\n(function ($) {\n\n    $.fn.bootstrapNumber = function (options) {\n\n        var settings = $.extend({\n            upClass: 'default',\n            downClass: 'default',\n            center: true\n        }, options);\n\n        return this.each(function (e) {\n            var self = $(this);\n            var clone = self.clone();\n\n            var min = self.attr('min');\n            var max = self.attr('max');\n\n            function getVal() {\n                var val = clone.val();\n\n                if (! val || val === \"NaN\") {\n                    return 0;\n                }\n\n                return parseInt(val);\n            }\n\n            function setText(n) {\n                if ((min && n < min) || (max && n > max)) {\n                    return false;\n                }\n\n                clone.focus().val(n);\n                clone.trigger('change');\n                return true;\n            }\n\n            var group = $(\"<div class='input-group'></div>\");\n            var down = $(\"<button type='button'>-</button>\").attr('class', 'btn btn-' + settings.downClass).click(function () {\n                setText(getVal() - 1);\n            });\n            var up = $(\"<button type='button'>+</button>\").attr('class', 'btn btn-' + settings.upClass).click(function () {\n                setText(getVal() + 1);\n            });\n            $(\"<span class='input-group-btn'></span>\").append(down).appendTo(group);\n            clone.appendTo(group);\n            if (clone) {\n                clone.css('text-align', 'center');\n            }\n            $(\"<span class='input-group-btn'></span>\").append(up).appendTo(group);\n\n            // remove spins from original\n            clone.prop('type', 'text').keydown(function (e) {\n                if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||\n                    (e.keyCode == 65 && e.ctrlKey === true) ||\n                    (e.keyCode >= 35 && e.keyCode <= 39)) {\n                    return;\n                }\n                if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {\n                    e.preventDefault();\n                }\n\n                var c = String.fromCharCode(e.which);\n                var n = (getVal() + c);\n\n                //if ((min && n < min) || (max && n > max)) {\n                //    e.preventDefault();\n                //}\n            });\n\n            clone.prop('type', 'text').blur(function (e) {\n                var c = parseInt(String.fromCharCode(e.which));\n                if (isNaN(c)) {\n                    c = 0;\n                }\n\n                var n = getVal() + c;\n\n                if ((min && n < min)) {\n                    setText(min);\n                }\n                else if (max && n > max) {\n                    setText(max);\n                }\n            });\n\n\n            self.replaceWith(group);\n        });\n    };\n}(jQuery));\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/af.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/af\",[],function(){return{errorLoading:function(){return\"Die resultate kon nie gelaai word nie.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Verwyders asseblief \"+n+\" character\";return 1!=n&&(r+=\"s\"),r},inputTooShort:function(e){return\"Voer asseblief \"+(e.minimum-e.input.length)+\" of meer karakters\"},loadingMore:function(){return\"Meer resultate word gelaai…\"},maximumSelected:function(e){var n=\"Kies asseblief net \"+e.maximum+\" item\";return 1!=e.maximum&&(n+=\"s\"),n},noResults:function(){return\"Geen resultate gevind\"},searching:function(){return\"Besig…\"},removeAllItems:function(){return\"Verwyder alle items\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/ar.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ar\",[],function(){return{errorLoading:function(){return\"لا يمكن تحميل النتائج\"},inputTooLong:function(n){return\"الرجاء حذف \"+(n.input.length-n.maximum)+\" عناصر\"},inputTooShort:function(n){return\"الرجاء إضافة \"+(n.minimum-n.input.length)+\" عناصر\"},loadingMore:function(){return\"جاري تحميل نتائج إضافية...\"},maximumSelected:function(n){return\"تستطيع إختيار \"+n.maximum+\" بنود فقط\"},noResults:function(){return\"لم يتم العثور على أي نتائج\"},searching:function(){return\"جاري البحث…\"},removeAllItems:function(){return\"قم بإزالة كل العناصر\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/az.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/az\",[],function(){return{inputTooLong:function(n){return n.input.length-n.maximum+\" simvol silin\"},inputTooShort:function(n){return n.minimum-n.input.length+\" simvol daxil edin\"},loadingMore:function(){return\"Daha çox nəticə yüklənir…\"},maximumSelected:function(n){return\"Sadəcə \"+n.maximum+\" element seçə bilərsiniz\"},noResults:function(){return\"Nəticə tapılmadı\"},searching:function(){return\"Axtarılır…\"},removeAllItems:function(){return\"Bütün elementləri sil\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/bg.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/bg\",[],function(){return{inputTooLong:function(n){var e=n.input.length-n.maximum,u=\"Моля въведете с \"+e+\" по-малко символ\";return e>1&&(u+=\"a\"),u},inputTooShort:function(n){var e=n.minimum-n.input.length,u=\"Моля въведете още \"+e+\" символ\";return e>1&&(u+=\"a\"),u},loadingMore:function(){return\"Зареждат се още…\"},maximumSelected:function(n){var e=\"Можете да направите до \"+n.maximum+\" \";return n.maximum>1?e+=\"избора\":e+=\"избор\",e},noResults:function(){return\"Няма намерени съвпадения\"},searching:function(){return\"Търсене…\"},removeAllItems:function(){return\"Премахнете всички елементи\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/bn.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/bn\",[],function(){return{errorLoading:function(){return\"ফলাফলগুলি লোড করা যায়নি।\"},inputTooLong:function(n){var e=n.input.length-n.maximum,u=\"অনুগ্রহ করে \"+e+\" টি অক্ষর মুছে দিন।\";return 1!=e&&(u=\"অনুগ্রহ করে \"+e+\" টি অক্ষর মুছে দিন।\"),u},inputTooShort:function(n){return n.minimum-n.input.length+\" টি অক্ষর অথবা অধিক অক্ষর লিখুন।\"},loadingMore:function(){return\"আরো ফলাফল লোড হচ্ছে ...\"},maximumSelected:function(n){var e=n.maximum+\" টি আইটেম নির্বাচন করতে পারবেন।\";return 1!=n.maximum&&(e=n.maximum+\" টি আইটেম নির্বাচন করতে পারবেন।\"),e},noResults:function(){return\"কোন ফলাফল পাওয়া যায়নি।\"},searching:function(){return\"অনুসন্ধান করা হচ্ছে ...\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/bs.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/bs\",[],function(){function e(e,n,r,t){return e%10==1&&e%100!=11?n:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?r:t}return{errorLoading:function(){return\"Preuzimanje nije uspijelo.\"},inputTooLong:function(n){var r=n.input.length-n.maximum,t=\"Obrišite \"+r+\" simbol\";return t+=e(r,\"\",\"a\",\"a\")},inputTooShort:function(n){var r=n.minimum-n.input.length,t=\"Ukucajte bar još \"+r+\" simbol\";return t+=e(r,\"\",\"a\",\"a\")},loadingMore:function(){return\"Preuzimanje još rezultata…\"},maximumSelected:function(n){var r=\"Možete izabrati samo \"+n.maximum+\" stavk\";return r+=e(n.maximum,\"u\",\"e\",\"i\")},noResults:function(){return\"Ništa nije pronađeno\"},searching:function(){return\"Pretraga…\"},removeAllItems:function(){return\"Uklonite sve stavke\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/ca.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/ca\",[],function(){return{errorLoading:function(){return\"La càrrega ha fallat\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Si us plau, elimina \"+n+\" car\";return r+=1==n?\"àcter\":\"àcters\"},inputTooShort:function(e){var n=e.minimum-e.input.length,r=\"Si us plau, introdueix \"+n+\" car\";return r+=1==n?\"àcter\":\"àcters\"},loadingMore:function(){return\"Carregant més resultats…\"},maximumSelected:function(e){var n=\"Només es pot seleccionar \"+e.maximum+\" element\";return 1!=e.maximum&&(n+=\"s\"),n},noResults:function(){return\"No s'han trobat resultats\"},searching:function(){return\"Cercant…\"},removeAllItems:function(){return\"Treu tots els elements\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/cs.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/cs\",[],function(){function e(e,n){switch(e){case 2:return n?\"dva\":\"dvě\";case 3:return\"tři\";case 4:return\"čtyři\"}return\"\"}return{errorLoading:function(){return\"Výsledky nemohly být načteny.\"},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?\"Prosím, zadejte o jeden znak méně.\":t<=4?\"Prosím, zadejte o \"+e(t,!0)+\" znaky méně.\":\"Prosím, zadejte o \"+t+\" znaků méně.\"},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?\"Prosím, zadejte ještě jeden znak.\":t<=4?\"Prosím, zadejte ještě další \"+e(t,!0)+\" znaky.\":\"Prosím, zadejte ještě dalších \"+t+\" znaků.\"},loadingMore:function(){return\"Načítají se další výsledky…\"},maximumSelected:function(n){var t=n.maximum;return 1==t?\"Můžete zvolit jen jednu položku.\":t<=4?\"Můžete zvolit maximálně \"+e(t,!1)+\" položky.\":\"Můžete zvolit maximálně \"+t+\" položek.\"},noResults:function(){return\"Nenalezeny žádné položky.\"},searching:function(){return\"Vyhledávání…\"},removeAllItems:function(){return\"Odstraňte všechny položky\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/da.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/da\",[],function(){return{errorLoading:function(){return\"Resultaterne kunne ikke indlæses.\"},inputTooLong:function(e){return\"Angiv venligst \"+(e.input.length-e.maximum)+\" tegn mindre\"},inputTooShort:function(e){return\"Angiv venligst \"+(e.minimum-e.input.length)+\" tegn mere\"},loadingMore:function(){return\"Indlæser flere resultater…\"},maximumSelected:function(e){var n=\"Du kan kun vælge \"+e.maximum+\" emne\";return 1!=e.maximum&&(n+=\"r\"),n},noResults:function(){return\"Ingen resultater fundet\"},searching:function(){return\"Søger…\"},removeAllItems:function(){return\"Fjern alle elementer\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/de.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/de\",[],function(){return{errorLoading:function(){return\"Die Ergebnisse konnten nicht geladen werden.\"},inputTooLong:function(e){return\"Bitte \"+(e.input.length-e.maximum)+\" Zeichen weniger eingeben\"},inputTooShort:function(e){return\"Bitte \"+(e.minimum-e.input.length)+\" Zeichen mehr eingeben\"},loadingMore:function(){return\"Lade mehr Ergebnisse…\"},maximumSelected:function(e){var n=\"Sie können nur \"+e.maximum+\" Element\";return 1!=e.maximum&&(n+=\"e\"),n+=\" auswählen\"},noResults:function(){return\"Keine Übereinstimmungen gefunden\"},searching:function(){return\"Suche…\"},removeAllItems:function(){return\"Entferne alle Elemente\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/dsb.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/dsb\",[],function(){var n=[\"znamuško\",\"znamušce\",\"znamuška\",\"znamuškow\"],e=[\"zapisk\",\"zapiska\",\"zapiski\",\"zapiskow\"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return\"Wuslědki njejsu se dali zacytaś.\"},inputTooLong:function(e){var a=e.input.length-e.maximum;return\"Pšosym lašuj \"+a+\" \"+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return\"Pšosym zapódaj nanejmjenjej \"+a+\" \"+u(a,n)},loadingMore:function(){return\"Dalšne wuslědki se zacytaju…\"},maximumSelected:function(n){return\"Móžoš jano \"+n.maximum+\" \"+u(n.maximum,e)+\"wubraś.\"},noResults:function(){return\"Žedne wuslědki namakane\"},searching:function(){return\"Pyta se…\"},removeAllItems:function(){return\"Remove all items\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/el.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/el\",[],function(){return{errorLoading:function(){return\"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν.\"},inputTooLong:function(n){var e=n.input.length-n.maximum,u=\"Παρακαλώ διαγράψτε \"+e+\" χαρακτήρ\";return 1==e&&(u+=\"α\"),1!=e&&(u+=\"ες\"),u},inputTooShort:function(n){return\"Παρακαλώ συμπληρώστε \"+(n.minimum-n.input.length)+\" ή περισσότερους χαρακτήρες\"},loadingMore:function(){return\"Φόρτωση περισσότερων αποτελεσμάτων…\"},maximumSelected:function(n){var e=\"Μπορείτε να επιλέξετε μόνο \"+n.maximum+\" επιλογ\";return 1==n.maximum&&(e+=\"ή\"),1!=n.maximum&&(e+=\"ές\"),e},noResults:function(){return\"Δεν βρέθηκαν αποτελέσματα\"},searching:function(){return\"Αναζήτηση…\"},removeAllItems:function(){return\"Καταργήστε όλα τα στοιχεία\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/en.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/en\",[],function(){return{errorLoading:function(){return\"The results could not be loaded.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Please delete \"+n+\" character\";return 1!=n&&(r+=\"s\"),r},inputTooShort:function(e){return\"Please enter \"+(e.minimum-e.input.length)+\" or more characters\"},loadingMore:function(){return\"Loading more results…\"},maximumSelected:function(e){var n=\"You can only select \"+e.maximum+\" item\";return 1!=e.maximum&&(n+=\"s\"),n},noResults:function(){return\"No results found\"},searching:function(){return\"Searching…\"},removeAllItems:function(){return\"Remove all items\"},removeItem:function(){return\"Remove item\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/eo.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/eo\",[],function(){return{errorLoading:function(){return\"La rezultoj ne povas esti ŝargitaj.\"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=\"Bonvolu forigi \"+e+\" signo\";return r+=1==e?\"n\":\"jn\"},inputTooShort:function(n){return\"Bv. enigi \"+(n.minimum-n.input.length)+\" aŭ pli multajn signojn\"},loadingMore:function(){return\"Ŝargado de pliaj rezultoj…\"},maximumSelected:function(n){var e=\"Vi povas elekti nur \"+n.maximum+\" ero\";return 1==n.maximum?e+=\"n\":e+=\"jn\",e},noResults:function(){return\"Neniuj rezultoj trovitaj\"},searching:function(){return\"Serĉado…\"},removeAllItems:function(){return\"Forigi ĉiujn erojn\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/es.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/es\",[],function(){return{errorLoading:function(){return\"No se pudieron cargar los resultados\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Por favor, elimine \"+n+\" car\";return r+=1==n?\"ácter\":\"acteres\"},inputTooShort:function(e){var n=e.minimum-e.input.length,r=\"Por favor, introduzca \"+n+\" car\";return r+=1==n?\"ácter\":\"acteres\"},loadingMore:function(){return\"Cargando más resultados…\"},maximumSelected:function(e){var n=\"Sólo puede seleccionar \"+e.maximum+\" elemento\";return 1!=e.maximum&&(n+=\"s\"),n},noResults:function(){return\"No se encontraron resultados\"},searching:function(){return\"Buscando…\"},removeAllItems:function(){return\"Eliminar todos los elementos\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/et.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/et\",[],function(){return{inputTooLong:function(e){var n=e.input.length-e.maximum,t=\"Sisesta \"+n+\" täht\";return 1!=n&&(t+=\"e\"),t+=\" vähem\"},inputTooShort:function(e){var n=e.minimum-e.input.length,t=\"Sisesta \"+n+\" täht\";return 1!=n&&(t+=\"e\"),t+=\" rohkem\"},loadingMore:function(){return\"Laen tulemusi…\"},maximumSelected:function(e){var n=\"Saad vaid \"+e.maximum+\" tulemus\";return 1==e.maximum?n+=\"e\":n+=\"t\",n+=\" valida\"},noResults:function(){return\"Tulemused puuduvad\"},searching:function(){return\"Otsin…\"},removeAllItems:function(){return\"Eemalda kõik esemed\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/eu.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/eu\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Idatzi \";return n+=1==t?\"karaktere bat\":t+\" karaktere\",n+=\" gutxiago\"},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Idatzi \";return n+=1==t?\"karaktere bat\":t+\" karaktere\",n+=\" gehiago\"},loadingMore:function(){return\"Emaitza gehiago kargatzen…\"},maximumSelected:function(e){return 1===e.maximum?\"Elementu bakarra hauta dezakezu\":e.maximum+\" elementu hauta ditzakezu soilik\"},noResults:function(){return\"Ez da bat datorrenik aurkitu\"},searching:function(){return\"Bilatzen…\"},removeAllItems:function(){return\"Kendu elementu guztiak\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/fa.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/fa\",[],function(){return{errorLoading:function(){return\"امکان بارگذاری نتایج وجود ندارد.\"},inputTooLong:function(n){return\"لطفاً \"+(n.input.length-n.maximum)+\" کاراکتر را حذف نمایید\"},inputTooShort:function(n){return\"لطفاً تعداد \"+(n.minimum-n.input.length)+\" کاراکتر یا بیشتر وارد نمایید\"},loadingMore:function(){return\"در حال بارگذاری نتایج بیشتر...\"},maximumSelected:function(n){return\"شما تنها می‌توانید \"+n.maximum+\" آیتم را انتخاب نمایید\"},noResults:function(){return\"هیچ نتیجه‌ای یافت نشد\"},searching:function(){return\"در حال جستجو...\"},removeAllItems:function(){return\"همه موارد را حذف کنید\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/fi.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/fi\",[],function(){return{errorLoading:function(){return\"Tuloksia ei saatu ladattua.\"},inputTooLong:function(n){return\"Ole hyvä ja anna \"+(n.input.length-n.maximum)+\" merkkiä vähemmän\"},inputTooShort:function(n){return\"Ole hyvä ja anna \"+(n.minimum-n.input.length)+\" merkkiä lisää\"},loadingMore:function(){return\"Ladataan lisää tuloksia…\"},maximumSelected:function(n){return\"Voit valita ainoastaan \"+n.maximum+\" kpl\"},noResults:function(){return\"Ei tuloksia\"},searching:function(){return\"Haetaan…\"},removeAllItems:function(){return\"Poista kaikki kohteet\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/fr.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/fr\",[],function(){return{errorLoading:function(){return\"Les résultats ne peuvent pas être chargés.\"},inputTooLong:function(e){var n=e.input.length-e.maximum;return\"Supprimez \"+n+\" caractère\"+(n>1?\"s\":\"\")},inputTooShort:function(e){var n=e.minimum-e.input.length;return\"Saisissez au moins \"+n+\" caractère\"+(n>1?\"s\":\"\")},loadingMore:function(){return\"Chargement de résultats supplémentaires…\"},maximumSelected:function(e){return\"Vous pouvez seulement sélectionner \"+e.maximum+\" élément\"+(e.maximum>1?\"s\":\"\")},noResults:function(){return\"Aucun résultat trouvé\"},searching:function(){return\"Recherche en cours…\"},removeAllItems:function(){return\"Supprimer tous les éléments\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/gl.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/gl\",[],function(){return{errorLoading:function(){return\"Non foi posíbel cargar os resultados.\"},inputTooLong:function(e){var n=e.input.length-e.maximum;return 1===n?\"Elimine un carácter\":\"Elimine \"+n+\" caracteres\"},inputTooShort:function(e){var n=e.minimum-e.input.length;return 1===n?\"Engada un carácter\":\"Engada \"+n+\" caracteres\"},loadingMore:function(){return\"Cargando máis resultados…\"},maximumSelected:function(e){return 1===e.maximum?\"Só pode seleccionar un elemento\":\"Só pode seleccionar \"+e.maximum+\" elementos\"},noResults:function(){return\"Non se atoparon resultados\"},searching:function(){return\"Buscando…\"},removeAllItems:function(){return\"Elimina todos os elementos\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/he.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/he\",[],function(){return{errorLoading:function(){return\"שגיאה בטעינת התוצאות\"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=\"נא למחוק \";return r+=1===e?\"תו אחד\":e+\" תווים\"},inputTooShort:function(n){var e=n.minimum-n.input.length,r=\"נא להכניס \";return r+=1===e?\"תו אחד\":e+\" תווים\",r+=\" או יותר\"},loadingMore:function(){return\"טוען תוצאות נוספות…\"},maximumSelected:function(n){var e=\"באפשרותך לבחור עד \";return 1===n.maximum?e+=\"פריט אחד\":e+=n.maximum+\" פריטים\",e},noResults:function(){return\"לא נמצאו תוצאות\"},searching:function(){return\"מחפש…\"},removeAllItems:function(){return\"הסר את כל הפריטים\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/hi.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/hi\",[],function(){return{errorLoading:function(){return\"परिणामों को लोड नहीं किया जा सका।\"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=e+\" अक्षर को हटा दें\";return e>1&&(r=e+\" अक्षरों को हटा दें \"),r},inputTooShort:function(n){return\"कृपया \"+(n.minimum-n.input.length)+\" या अधिक अक्षर दर्ज करें\"},loadingMore:function(){return\"अधिक परिणाम लोड हो रहे है...\"},maximumSelected:function(n){return\"आप केवल \"+n.maximum+\" आइटम का चयन कर सकते हैं\"},noResults:function(){return\"कोई परिणाम नहीं मिला\"},searching:function(){return\"खोज रहा है...\"},removeAllItems:function(){return\"सभी वस्तुओं को हटा दें\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/hr.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/hr\",[],function(){function n(n){var e=\" \"+n+\" znak\";return n%10<5&&n%10>0&&(n%100<5||n%100>19)?n%10>1&&(e+=\"a\"):e+=\"ova\",e}return{errorLoading:function(){return\"Preuzimanje nije uspjelo.\"},inputTooLong:function(e){return\"Unesite \"+n(e.input.length-e.maximum)},inputTooShort:function(e){return\"Unesite još \"+n(e.minimum-e.input.length)},loadingMore:function(){return\"Učitavanje rezultata…\"},maximumSelected:function(n){return\"Maksimalan broj odabranih stavki je \"+n.maximum},noResults:function(){return\"Nema rezultata\"},searching:function(){return\"Pretraga…\"},removeAllItems:function(){return\"Ukloni sve stavke\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/hsb.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/hsb\",[],function(){var n=[\"znamješko\",\"znamješce\",\"znamješka\",\"znamješkow\"],e=[\"zapisk\",\"zapiskaj\",\"zapiski\",\"zapiskow\"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return\"Wuslědki njedachu so začitać.\"},inputTooLong:function(e){var a=e.input.length-e.maximum;return\"Prošu zhašej \"+a+\" \"+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return\"Prošu zapodaj znajmjeńša \"+a+\" \"+u(a,n)},loadingMore:function(){return\"Dalše wuslědki so začitaja…\"},maximumSelected:function(n){return\"Móžeš jenož \"+n.maximum+\" \"+u(n.maximum,e)+\"wubrać\"},noResults:function(){return\"Žane wuslědki namakane\"},searching:function(){return\"Pyta so…\"},removeAllItems:function(){return\"Remove all items\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/hu.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/hu\",[],function(){return{errorLoading:function(){return\"Az eredmények betöltése nem sikerült.\"},inputTooLong:function(e){return\"Túl hosszú. \"+(e.input.length-e.maximum)+\" karakterrel több, mint kellene.\"},inputTooShort:function(e){return\"Túl rövid. Még \"+(e.minimum-e.input.length)+\" karakter hiányzik.\"},loadingMore:function(){return\"Töltés…\"},maximumSelected:function(e){return\"Csak \"+e.maximum+\" elemet lehet kiválasztani.\"},noResults:function(){return\"Nincs találat.\"},searching:function(){return\"Keresés…\"},removeAllItems:function(){return\"Távolítson el minden elemet\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/hy.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/hy\",[],function(){return{errorLoading:function(){return\"Արդյունքները հնարավոր չէ բեռնել։\"},inputTooLong:function(n){return\"Խնդրում ենք հեռացնել \"+(n.input.length-n.maximum)+\" նշան\"},inputTooShort:function(n){return\"Խնդրում ենք մուտքագրել \"+(n.minimum-n.input.length)+\" կամ ավել նշաններ\"},loadingMore:function(){return\"Բեռնվում են նոր արդյունքներ․․․\"},maximumSelected:function(n){return\"Դուք կարող եք ընտրել առավելագույնը \"+n.maximum+\" կետ\"},noResults:function(){return\"Արդյունքներ չեն գտնվել\"},searching:function(){return\"Որոնում․․․\"},removeAllItems:function(){return\"Հեռացնել բոլոր տարրերը\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/id.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/id\",[],function(){return{errorLoading:function(){return\"Data tidak boleh diambil.\"},inputTooLong:function(n){return\"Hapuskan \"+(n.input.length-n.maximum)+\" huruf\"},inputTooShort:function(n){return\"Masukkan \"+(n.minimum-n.input.length)+\" huruf lagi\"},loadingMore:function(){return\"Mengambil data…\"},maximumSelected:function(n){return\"Anda hanya dapat memilih \"+n.maximum+\" pilihan\"},noResults:function(){return\"Tidak ada data yang sesuai\"},searching:function(){return\"Mencari…\"},removeAllItems:function(){return\"Hapus semua item\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/is.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/is\",[],function(){return{inputTooLong:function(n){var t=n.input.length-n.maximum,e=\"Vinsamlegast styttið texta um \"+t+\" staf\";return t<=1?e:e+\"i\"},inputTooShort:function(n){var t=n.minimum-n.input.length,e=\"Vinsamlegast skrifið \"+t+\" staf\";return t>1&&(e+=\"i\"),e+=\" í viðbót\"},loadingMore:function(){return\"Sæki fleiri niðurstöður…\"},maximumSelected:function(n){return\"Þú getur aðeins valið \"+n.maximum+\" atriði\"},noResults:function(){return\"Ekkert fannst\"},searching:function(){return\"Leita…\"},removeAllItems:function(){return\"Fjarlægðu öll atriði\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/it.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/it\",[],function(){return{errorLoading:function(){return\"I risultati non possono essere caricati.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,t=\"Per favore cancella \"+n+\" caratter\";return t+=1!==n?\"i\":\"e\"},inputTooShort:function(e){return\"Per favore inserisci \"+(e.minimum-e.input.length)+\" o più caratteri\"},loadingMore:function(){return\"Caricando più risultati…\"},maximumSelected:function(e){var n=\"Puoi selezionare solo \"+e.maximum+\" element\";return 1!==e.maximum?n+=\"i\":n+=\"o\",n},noResults:function(){return\"Nessun risultato trovato\"},searching:function(){return\"Sto cercando…\"},removeAllItems:function(){return\"Rimuovi tutti gli oggetti\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/ja.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ja\",[],function(){return{errorLoading:function(){return\"結果が読み込まれませんでした\"},inputTooLong:function(n){return n.input.length-n.maximum+\" 文字を削除してください\"},inputTooShort:function(n){return\"少なくとも \"+(n.minimum-n.input.length)+\" 文字を入力してください\"},loadingMore:function(){return\"読み込み中…\"},maximumSelected:function(n){return n.maximum+\" 件しか選択できません\"},noResults:function(){return\"対象が見つかりません\"},searching:function(){return\"検索しています…\"},removeAllItems:function(){return\"すべてのアイテムを削除\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/ka.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ka\",[],function(){return{errorLoading:function(){return\"მონაცემების ჩატვირთვა შეუძლებელია.\"},inputTooLong:function(n){return\"გთხოვთ აკრიფეთ \"+(n.input.length-n.maximum)+\" სიმბოლოთი ნაკლები\"},inputTooShort:function(n){return\"გთხოვთ აკრიფეთ \"+(n.minimum-n.input.length)+\" სიმბოლო ან მეტი\"},loadingMore:function(){return\"მონაცემების ჩატვირთვა…\"},maximumSelected:function(n){return\"თქვენ შეგიძლიათ აირჩიოთ არაუმეტეს \"+n.maximum+\" ელემენტი\"},noResults:function(){return\"რეზულტატი არ მოიძებნა\"},searching:function(){return\"ძიება…\"},removeAllItems:function(){return\"ამოიღე ყველა ელემენტი\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/km.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/km\",[],function(){return{errorLoading:function(){return\"មិនអាចទាញយកទិន្នន័យ\"},inputTooLong:function(n){return\"សូមលុបចេញ  \"+(n.input.length-n.maximum)+\" អក្សរ\"},inputTooShort:function(n){return\"សូមបញ្ចូល\"+(n.minimum-n.input.length)+\" អក្សរ រឺ ច្រើនជាងនេះ\"},loadingMore:function(){return\"កំពុងទាញយកទិន្នន័យបន្ថែម...\"},maximumSelected:function(n){return\"អ្នកអាចជ្រើសរើសបានតែ \"+n.maximum+\" ជម្រើសប៉ុណ្ណោះ\"},noResults:function(){return\"មិនមានលទ្ធផល\"},searching:function(){return\"កំពុងស្វែងរក...\"},removeAllItems:function(){return\"លុបធាតុទាំងអស់\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/ko.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ko\",[],function(){return{errorLoading:function(){return\"결과를 불러올 수 없습니다.\"},inputTooLong:function(n){return\"너무 깁니다. \"+(n.input.length-n.maximum)+\" 글자 지워주세요.\"},inputTooShort:function(n){return\"너무 짧습니다. \"+(n.minimum-n.input.length)+\" 글자 더 입력해주세요.\"},loadingMore:function(){return\"불러오는 중…\"},maximumSelected:function(n){return\"최대 \"+n.maximum+\"개까지만 선택 가능합니다.\"},noResults:function(){return\"결과가 없습니다.\"},searching:function(){return\"검색 중…\"},removeAllItems:function(){return\"모든 항목 삭제\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/lt.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/lt\",[],function(){function n(n,e,i,t){return n%10==1&&(n%100<11||n%100>19)?e:n%10>=2&&n%10<=9&&(n%100<11||n%100>19)?i:t}return{inputTooLong:function(e){var i=e.input.length-e.maximum,t=\"Pašalinkite \"+i+\" simbol\";return t+=n(i,\"į\",\"ius\",\"ių\")},inputTooShort:function(e){var i=e.minimum-e.input.length,t=\"Įrašykite dar \"+i+\" simbol\";return t+=n(i,\"į\",\"ius\",\"ių\")},loadingMore:function(){return\"Kraunama daugiau rezultatų…\"},maximumSelected:function(e){var i=\"Jūs galite pasirinkti tik \"+e.maximum+\" element\";return i+=n(e.maximum,\"ą\",\"us\",\"ų\")},noResults:function(){return\"Atitikmenų nerasta\"},searching:function(){return\"Ieškoma…\"},removeAllItems:function(){return\"Pašalinti visus elementus\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/lv.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/lv\",[],function(){function e(e,n,u,i){return 11===e?n:e%10==1?u:i}return{inputTooLong:function(n){var u=n.input.length-n.maximum,i=\"Lūdzu ievadiet par  \"+u;return(i+=\" simbol\"+e(u,\"iem\",\"u\",\"iem\"))+\" mazāk\"},inputTooShort:function(n){var u=n.minimum-n.input.length,i=\"Lūdzu ievadiet vēl \"+u;return i+=\" simbol\"+e(u,\"us\",\"u\",\"us\")},loadingMore:function(){return\"Datu ielāde…\"},maximumSelected:function(n){var u=\"Jūs varat izvēlēties ne vairāk kā \"+n.maximum;return u+=\" element\"+e(n.maximum,\"us\",\"u\",\"us\")},noResults:function(){return\"Sakritību nav\"},searching:function(){return\"Meklēšana…\"},removeAllItems:function(){return\"Noņemt visus vienumus\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/mk.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/mk\",[],function(){return{inputTooLong:function(n){var e=(n.input.length,n.maximum,\"Ве молиме внесете \"+n.maximum+\" помалку карактер\");return 1!==n.maximum&&(e+=\"и\"),e},inputTooShort:function(n){var e=(n.minimum,n.input.length,\"Ве молиме внесете уште \"+n.maximum+\" карактер\");return 1!==n.maximum&&(e+=\"и\"),e},loadingMore:function(){return\"Вчитување резултати…\"},maximumSelected:function(n){var e=\"Можете да изберете само \"+n.maximum+\" ставк\";return 1===n.maximum?e+=\"а\":e+=\"и\",e},noResults:function(){return\"Нема пронајдено совпаѓања\"},searching:function(){return\"Пребарување…\"},removeAllItems:function(){return\"Отстрани ги сите предмети\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/ms.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ms\",[],function(){return{errorLoading:function(){return\"Keputusan tidak berjaya dimuatkan.\"},inputTooLong:function(n){return\"Sila hapuskan \"+(n.input.length-n.maximum)+\" aksara\"},inputTooShort:function(n){return\"Sila masukkan \"+(n.minimum-n.input.length)+\" atau lebih aksara\"},loadingMore:function(){return\"Sedang memuatkan keputusan…\"},maximumSelected:function(n){return\"Anda hanya boleh memilih \"+n.maximum+\" pilihan\"},noResults:function(){return\"Tiada padanan yang ditemui\"},searching:function(){return\"Mencari…\"},removeAllItems:function(){return\"Keluarkan semua item\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/nb.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/nb\",[],function(){return{errorLoading:function(){return\"Kunne ikke hente resultater.\"},inputTooLong:function(e){return\"Vennligst fjern \"+(e.input.length-e.maximum)+\" tegn\"},inputTooShort:function(e){return\"Vennligst skriv inn \"+(e.minimum-e.input.length)+\" tegn til\"},loadingMore:function(){return\"Laster flere resultater…\"},maximumSelected:function(e){return\"Du kan velge maks \"+e.maximum+\" elementer\"},noResults:function(){return\"Ingen treff\"},searching:function(){return\"Søker…\"},removeAllItems:function(){return\"Fjern alle elementer\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/ne.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ne\",[],function(){return{errorLoading:function(){return\"नतिजाहरु देखाउन सकिएन।\"},inputTooLong:function(n){var e=n.input.length-n.maximum,u=\"कृपया \"+e+\" अक्षर मेटाउनुहोस्।\";return 1!=e&&(u+=\"कृपया \"+e+\" अक्षरहरु मेटाउनुहोस्।\"),u},inputTooShort:function(n){return\"कृपया बाँकी रहेका \"+(n.minimum-n.input.length)+\" वा अरु धेरै अक्षरहरु भर्नुहोस्।\"},loadingMore:function(){return\"अरु नतिजाहरु भरिँदैछन् …\"},maximumSelected:function(n){var e=\"तँपाई \"+n.maximum+\" वस्तु मात्र छान्न पाउँनुहुन्छ।\";return 1!=n.maximum&&(e=\"तँपाई \"+n.maximum+\" वस्तुहरु मात्र छान्न पाउँनुहुन्छ।\"),e},noResults:function(){return\"कुनै पनि नतिजा भेटिएन।\"},searching:function(){return\"खोजि हुँदैछ…\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/nl.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/nl\",[],function(){return{errorLoading:function(){return\"De resultaten konden niet worden geladen.\"},inputTooLong:function(e){return\"Gelieve \"+(e.input.length-e.maximum)+\" karakters te verwijderen\"},inputTooShort:function(e){return\"Gelieve \"+(e.minimum-e.input.length)+\" of meer karakters in te voeren\"},loadingMore:function(){return\"Meer resultaten laden…\"},maximumSelected:function(e){var n=1==e.maximum?\"kan\":\"kunnen\",r=\"Er \"+n+\" maar \"+e.maximum+\" item\";return 1!=e.maximum&&(r+=\"s\"),r+=\" worden geselecteerd\"},noResults:function(){return\"Geen resultaten gevonden…\"},searching:function(){return\"Zoeken…\"},removeAllItems:function(){return\"Verwijder alle items\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/pa.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/pa\",[],function(){return{errorLoading:function(){return\"ਨਤੀਜੇ ਲੋਡ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ ।\"},inputTooLong:function(n){var e=n.input.length-n.maximum;return\"ਕ੍ਰਿਪਾ ਕਰਕੇ \"+e+(1!=e?\" ਅੱਖਰਾਂ ਨੂੰ \":\" ਅੱਖਰ \")+\"ਮਿਟਾਓ ।\"},inputTooShort:function(n){var e=n.minimum-n.input.length;return\"ਕ੍ਰਿਪਾ ਕਰਕੇ \"+e+\" ਜਾਂ \"+e+\" ਤੋਂ ਵੱਧ\"+(e>1?\" ਅੱਖਰਾਂ \":\" ਅੱਖਰ \")+\"ਦੀ ਵਰਤੋਂ ਕਰੋ ।\"},loadingMore:function(){return\"ਹੋਰ ਨਤੀਜੇ ਲੋਡ ਹੋ ਰਹੇ ਹਨ ...।\"},maximumSelected:function(n){var e=\"ਤੁਸੀਂ ਸਿਰਫ਼ \"+n.maximum+\" ਨਤੀਜਾ ਚੁਣ ਸਕਦੇ ਹੋ ।\";return 1!=n.maximum&&(e=\"ਤੁਸੀਂ ਸਿਰਫ਼ \"+n.maximum+\" ਨਤੀਜੇ ਚੁਣ ਸਕਦੇ ਹੋ ।\"),e},noResults:function(){return\"ਨਤੀਜਾ ਨਹੀਂ ਮਿਲ ਰਿਹਾ ਹੈ ।\"},searching:function(){return\"ਖ਼ੋਜ ਕਰ ਰਹੇਂ ਹਾਂ ...।\"},removeAllItems:function(){return\"ਸਾਰੇ ਨਤੀਜੇ ਮਿਟਾਓ ।\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/pl.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/pl\",[],function(){var n=[\"znak\",\"znaki\",\"znaków\"],e=[\"element\",\"elementy\",\"elementów\"],r=function(n,e){return 1===n?e[0]:n>1&&n<=4?e[1]:n>=5?e[2]:void 0};return{errorLoading:function(){return\"Nie można załadować wyników.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Usuń \"+t+\" \"+r(t,n)},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Podaj przynajmniej \"+t+\" \"+r(t,n)},loadingMore:function(){return\"Trwa ładowanie…\"},maximumSelected:function(n){return\"Możesz zaznaczyć tylko \"+n.maximum+\" \"+r(n.maximum,e)},noResults:function(){return\"Brak wyników\"},searching:function(){return\"Trwa wyszukiwanie…\"},removeAllItems:function(){return\"Usuń wszystkie przedmioty\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/ps.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ps\",[],function(){return{errorLoading:function(){return\"پايلي نه سي ترلاسه کېدای\"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=\"د مهربانۍ لمخي \"+e+\" توری ړنګ کړئ\";return 1!=e&&(r=r.replace(\"توری\",\"توري\")),r},inputTooShort:function(n){return\"لږ تر لږه \"+(n.minimum-n.input.length)+\" يا ډېر توري وليکئ\"},loadingMore:function(){return\"نوري پايلي ترلاسه کيږي...\"},maximumSelected:function(n){var e=\"تاسو يوازي \"+n.maximum+\" قلم په نښه کولای سی\";return 1!=n.maximum&&(e=e.replace(\"قلم\",\"قلمونه\")),e},noResults:function(){return\"پايلي و نه موندل سوې\"},searching:function(){return\"لټول کيږي...\"},removeAllItems:function(){return\"ټول توکي لرې کړئ\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/pt-BR.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/pt-BR\",[],function(){return{errorLoading:function(){return\"Os resultados não puderam ser carregados.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Apague \"+n+\" caracter\";return 1!=n&&(r+=\"es\"),r},inputTooShort:function(e){return\"Digite \"+(e.minimum-e.input.length)+\" ou mais caracteres\"},loadingMore:function(){return\"Carregando mais resultados…\"},maximumSelected:function(e){var n=\"Você só pode selecionar \"+e.maximum+\" ite\";return 1==e.maximum?n+=\"m\":n+=\"ns\",n},noResults:function(){return\"Nenhum resultado encontrado\"},searching:function(){return\"Buscando…\"},removeAllItems:function(){return\"Remover todos os itens\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/pt.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/pt\",[],function(){return{errorLoading:function(){return\"Os resultados não puderam ser carregados.\"},inputTooLong:function(e){var r=e.input.length-e.maximum,n=\"Por favor apague \"+r+\" \";return n+=1!=r?\"caracteres\":\"caractere\"},inputTooShort:function(e){return\"Introduza \"+(e.minimum-e.input.length)+\" ou mais caracteres\"},loadingMore:function(){return\"A carregar mais resultados…\"},maximumSelected:function(e){var r=\"Apenas pode seleccionar \"+e.maximum+\" \";return r+=1!=e.maximum?\"itens\":\"item\"},noResults:function(){return\"Sem resultados\"},searching:function(){return\"A procurar…\"},removeAllItems:function(){return\"Remover todos os itens\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/ro.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/ro\",[],function(){return{errorLoading:function(){return\"Rezultatele nu au putut fi incărcate.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Vă rugăm să ștergeți\"+t+\" caracter\";return 1!==t&&(n+=\"e\"),n},inputTooShort:function(e){return\"Vă rugăm să introduceți \"+(e.minimum-e.input.length)+\" sau mai multe caractere\"},loadingMore:function(){return\"Se încarcă mai multe rezultate…\"},maximumSelected:function(e){var t=\"Aveți voie să selectați cel mult \"+e.maximum;return t+=\" element\",1!==e.maximum&&(t+=\"e\"),t},noResults:function(){return\"Nu au fost găsite rezultate\"},searching:function(){return\"Căutare…\"},removeAllItems:function(){return\"Eliminați toate elementele\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/ru.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ru\",[],function(){function n(n,e,r,u){return n%10<5&&n%10>0&&n%100<5||n%100>20?n%10>1?r:e:u}return{errorLoading:function(){return\"Невозможно загрузить результаты\"},inputTooLong:function(e){var r=e.input.length-e.maximum,u=\"Пожалуйста, введите на \"+r+\" символ\";return u+=n(r,\"\",\"a\",\"ов\"),u+=\" меньше\"},inputTooShort:function(e){var r=e.minimum-e.input.length,u=\"Пожалуйста, введите ещё хотя бы \"+r+\" символ\";return u+=n(r,\"\",\"a\",\"ов\")},loadingMore:function(){return\"Загрузка данных…\"},maximumSelected:function(e){var r=\"Вы можете выбрать не более \"+e.maximum+\" элемент\";return r+=n(e.maximum,\"\",\"a\",\"ов\")},noResults:function(){return\"Совпадений не найдено\"},searching:function(){return\"Поиск…\"},removeAllItems:function(){return\"Удалить все элементы\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/sk.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/sk\",[],function(){var e={2:function(e){return e?\"dva\":\"dve\"},3:function(){return\"tri\"},4:function(){return\"štyri\"}};return{errorLoading:function(){return\"Výsledky sa nepodarilo načítať.\"},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?\"Prosím, zadajte o jeden znak menej\":t>=2&&t<=4?\"Prosím, zadajte o \"+e[t](!0)+\" znaky menej\":\"Prosím, zadajte o \"+t+\" znakov menej\"},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?\"Prosím, zadajte ešte jeden znak\":t<=4?\"Prosím, zadajte ešte ďalšie \"+e[t](!0)+\" znaky\":\"Prosím, zadajte ešte ďalších \"+t+\" znakov\"},loadingMore:function(){return\"Načítanie ďalších výsledkov…\"},maximumSelected:function(n){return 1==n.maximum?\"Môžete zvoliť len jednu položku\":n.maximum>=2&&n.maximum<=4?\"Môžete zvoliť najviac \"+e[n.maximum](!1)+\" položky\":\"Môžete zvoliť najviac \"+n.maximum+\" položiek\"},noResults:function(){return\"Nenašli sa žiadne položky\"},searching:function(){return\"Vyhľadávanie…\"},removeAllItems:function(){return\"Odstráňte všetky položky\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/sl.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/sl\",[],function(){return{errorLoading:function(){return\"Zadetkov iskanja ni bilo mogoče naložiti.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,t=\"Prosim zbrišite \"+n+\" znak\";return 2==n?t+=\"a\":1!=n&&(t+=\"e\"),t},inputTooShort:function(e){var n=e.minimum-e.input.length,t=\"Prosim vpišite še \"+n+\" znak\";return 2==n?t+=\"a\":1!=n&&(t+=\"e\"),t},loadingMore:function(){return\"Nalagam več zadetkov…\"},maximumSelected:function(e){var n=\"Označite lahko največ \"+e.maximum+\" predmet\";return 2==e.maximum?n+=\"a\":1!=e.maximum&&(n+=\"e\"),n},noResults:function(){return\"Ni zadetkov.\"},searching:function(){return\"Iščem…\"},removeAllItems:function(){return\"Odstranite vse elemente\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/sq.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/sq\",[],function(){return{errorLoading:function(){return\"Rezultatet nuk mund të ngarkoheshin.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,t=\"Të lutem fshi \"+n+\" karakter\";return 1!=n&&(t+=\"e\"),t},inputTooShort:function(e){return\"Të lutem shkruaj \"+(e.minimum-e.input.length)+\" ose më shumë karaktere\"},loadingMore:function(){return\"Duke ngarkuar më shumë rezultate…\"},maximumSelected:function(e){var n=\"Mund të zgjedhësh vetëm \"+e.maximum+\" element\";return 1!=e.maximum&&(n+=\"e\"),n},noResults:function(){return\"Nuk u gjet asnjë rezultat\"},searching:function(){return\"Duke kërkuar…\"},removeAllItems:function(){return\"Hiq të gjitha sendet\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/sr-Cyrl.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/sr-Cyrl\",[],function(){function n(n,e,r,u){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:u}return{errorLoading:function(){return\"Преузимање није успело.\"},inputTooLong:function(e){var r=e.input.length-e.maximum,u=\"Обришите \"+r+\" симбол\";return u+=n(r,\"\",\"а\",\"а\")},inputTooShort:function(e){var r=e.minimum-e.input.length,u=\"Укуцајте бар још \"+r+\" симбол\";return u+=n(r,\"\",\"а\",\"а\")},loadingMore:function(){return\"Преузимање још резултата…\"},maximumSelected:function(e){var r=\"Можете изабрати само \"+e.maximum+\" ставк\";return r+=n(e.maximum,\"у\",\"е\",\"и\")},noResults:function(){return\"Ништа није пронађено\"},searching:function(){return\"Претрага…\"},removeAllItems:function(){return\"Уклоните све ставке\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/sr.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/sr\",[],function(){function n(n,e,r,t){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:t}return{errorLoading:function(){return\"Preuzimanje nije uspelo.\"},inputTooLong:function(e){var r=e.input.length-e.maximum,t=\"Obrišite \"+r+\" simbol\";return t+=n(r,\"\",\"a\",\"a\")},inputTooShort:function(e){var r=e.minimum-e.input.length,t=\"Ukucajte bar još \"+r+\" simbol\";return t+=n(r,\"\",\"a\",\"a\")},loadingMore:function(){return\"Preuzimanje još rezultata…\"},maximumSelected:function(e){var r=\"Možete izabrati samo \"+e.maximum+\" stavk\";return r+=n(e.maximum,\"u\",\"e\",\"i\")},noResults:function(){return\"Ništa nije pronađeno\"},searching:function(){return\"Pretraga…\"},removeAllItems:function(){return\"Уклоните све ставке\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/sv.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/sv\",[],function(){return{errorLoading:function(){return\"Resultat kunde inte laddas.\"},inputTooLong:function(n){return\"Vänligen sudda ut \"+(n.input.length-n.maximum)+\" tecken\"},inputTooShort:function(n){return\"Vänligen skriv in \"+(n.minimum-n.input.length)+\" eller fler tecken\"},loadingMore:function(){return\"Laddar fler resultat…\"},maximumSelected:function(n){return\"Du kan max välja \"+n.maximum+\" element\"},noResults:function(){return\"Inga träffar\"},searching:function(){return\"Söker…\"},removeAllItems:function(){return\"Ta bort alla objekt\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/th.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/th\",[],function(){return{errorLoading:function(){return\"ไม่สามารถค้นข้อมูลได้\"},inputTooLong:function(n){return\"โปรดลบออก \"+(n.input.length-n.maximum)+\" ตัวอักษร\"},inputTooShort:function(n){return\"โปรดพิมพ์เพิ่มอีก \"+(n.minimum-n.input.length)+\" ตัวอักษร\"},loadingMore:function(){return\"กำลังค้นข้อมูลเพิ่ม…\"},maximumSelected:function(n){return\"คุณสามารถเลือกได้ไม่เกิน \"+n.maximum+\" รายการ\"},noResults:function(){return\"ไม่พบข้อมูล\"},searching:function(){return\"กำลังค้นข้อมูล…\"},removeAllItems:function(){return\"ลบรายการทั้งหมด\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/tk.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/tk\",[],function(){return{errorLoading:function(){return\"Netije ýüklenmedi.\"},inputTooLong:function(e){return e.input.length-e.maximum+\" harp bozuň.\"},inputTooShort:function(e){return\"Ýene-de iň az \"+(e.minimum-e.input.length)+\" harp ýazyň.\"},loadingMore:function(){return\"Köpräk netije görkezilýär…\"},maximumSelected:function(e){return\"Diňe \"+e.maximum+\" sanysyny saýlaň.\"},noResults:function(){return\"Netije tapylmady.\"},searching:function(){return\"Gözlenýär…\"},removeAllItems:function(){return\"Remove all items\"}}}),e.define,e.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/tr.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/tr\",[],function(){return{errorLoading:function(){return\"Sonuç yüklenemedi\"},inputTooLong:function(n){return n.input.length-n.maximum+\" karakter daha girmelisiniz\"},inputTooShort:function(n){return\"En az \"+(n.minimum-n.input.length)+\" karakter daha girmelisiniz\"},loadingMore:function(){return\"Daha fazla…\"},maximumSelected:function(n){return\"Sadece \"+n.maximum+\" seçim yapabilirsiniz\"},noResults:function(){return\"Sonuç bulunamadı\"},searching:function(){return\"Aranıyor…\"},removeAllItems:function(){return\"Tüm öğeleri kaldır\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/uk.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/uk\",[],function(){function n(n,e,u,r){return n%100>10&&n%100<15?r:n%10==1?e:n%10>1&&n%10<5?u:r}return{errorLoading:function(){return\"Неможливо завантажити результати\"},inputTooLong:function(e){return\"Будь ласка, видаліть \"+(e.input.length-e.maximum)+\" \"+n(e.maximum,\"літеру\",\"літери\",\"літер\")},inputTooShort:function(n){return\"Будь ласка, введіть \"+(n.minimum-n.input.length)+\" або більше літер\"},loadingMore:function(){return\"Завантаження інших результатів…\"},maximumSelected:function(e){return\"Ви можете вибрати лише \"+e.maximum+\" \"+n(e.maximum,\"пункт\",\"пункти\",\"пунктів\")},noResults:function(){return\"Нічого не знайдено\"},searching:function(){return\"Пошук…\"},removeAllItems:function(){return\"Видалити всі елементи\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/vi.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/vi\",[],function(){return{inputTooLong:function(n){return\"Vui lòng xóa bớt \"+(n.input.length-n.maximum)+\" ký tự\"},inputTooShort:function(n){return\"Vui lòng nhập thêm từ \"+(n.minimum-n.input.length)+\" ký tự trở lên\"},loadingMore:function(){return\"Đang lấy thêm kết quả…\"},maximumSelected:function(n){return\"Chỉ có thể chọn được \"+n.maximum+\" lựa chọn\"},noResults:function(){return\"Không tìm thấy kết quả\"},searching:function(){return\"Đang tìm…\"},removeAllItems:function(){return\"Xóa tất cả các mục\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/zh-CN.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/zh-CN\",[],function(){return{errorLoading:function(){return\"无法载入结果。\"},inputTooLong:function(n){return\"请删除\"+(n.input.length-n.maximum)+\"个字符\"},inputTooShort:function(n){return\"请再输入至少\"+(n.minimum-n.input.length)+\"个字符\"},loadingMore:function(){return\"载入更多结果…\"},maximumSelected:function(n){return\"最多只能选择\"+n.maximum+\"个项目\"},noResults:function(){return\"未找到结果\"},searching:function(){return\"搜索中…\"},removeAllItems:function(){return\"删除所有项目\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/i18n/zh-TW.js",
    "content": "/*! Select2 4.1.0-beta.1 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/zh-TW\",[],function(){return{inputTooLong:function(n){return\"請刪掉\"+(n.input.length-n.maximum)+\"個字元\"},inputTooShort:function(n){return\"請再輸入\"+(n.minimum-n.input.length)+\"個字元\"},loadingMore:function(){return\"載入中…\"},maximumSelected:function(n){return\"你只能選擇最多\"+n.maximum+\"項\"},noResults:function(){return\"沒有找到相符的項目\"},searching:function(){return\"搜尋中…\"},removeAllItems:function(){return\"刪除所有項目\"}}}),n.define,n.require}();"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/select2.css",
    "content": ".select2-container {\n  box-sizing: border-box;\n  display: inline-block;\n  margin: 0;\n  position: relative;\n  vertical-align: middle; }\n  .select2-container .select2-selection--single {\n    box-sizing: border-box;\n    cursor: pointer;\n    display: block;\n    height: 28px;\n    user-select: none;\n    -webkit-user-select: none; }\n    .select2-container .select2-selection--single .select2-selection__rendered {\n      display: block;\n      padding-left: 8px;\n      padding-right: 20px;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap; }\n    .select2-container .select2-selection--single .select2-selection__clear {\n      background-color: transparent;\n      border: none;\n      font-size: 1em; }\n  .select2-container[dir=\"rtl\"] .select2-selection--single .select2-selection__rendered {\n    padding-right: 8px;\n    padding-left: 20px; }\n  .select2-container .select2-selection--multiple {\n    box-sizing: border-box;\n    cursor: pointer;\n    display: block;\n    min-height: 32px;\n    user-select: none;\n    -webkit-user-select: none; }\n    .select2-container .select2-selection--multiple .select2-selection__rendered {\n      display: inline;\n      list-style: none;\n      padding: 0; }\n    .select2-container .select2-selection--multiple .select2-selection__clear {\n      background-color: transparent;\n      border: none;\n      font-size: 1em; }\n  .select2-container .select2-search--inline .select2-search__field {\n    box-sizing: border-box;\n    border: none;\n    font-size: 100%;\n    margin-top: 5px;\n    margin-left: 5px;\n    padding: 0; }\n    .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {\n      -webkit-appearance: none; }\n\n.select2-dropdown {\n  background-color: white;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  box-sizing: border-box;\n  display: block;\n  position: absolute;\n  left: -100000px;\n  width: 100%;\n  z-index: 1051; }\n\n.select2-results {\n  display: block; }\n\n.select2-results__options {\n  list-style: none;\n  margin: 0;\n  padding: 0; }\n\n.select2-results__option {\n  padding: 6px;\n  user-select: none;\n  -webkit-user-select: none; }\n\n.select2-results__option--selectable {\n  cursor: pointer; }\n\n.select2-container--open .select2-dropdown {\n  left: 0; }\n\n.select2-container--open .select2-dropdown--above {\n  border-bottom: none;\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.select2-container--open .select2-dropdown--below {\n  border-top: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0; }\n\n.select2-search--dropdown {\n  display: block;\n  padding: 4px; }\n  .select2-search--dropdown .select2-search__field {\n    padding: 4px;\n    width: 100%;\n    box-sizing: border-box; }\n    .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {\n      -webkit-appearance: none; }\n  .select2-search--dropdown.select2-search--hide {\n    display: none; }\n\n.select2-close-mask {\n  border: 0;\n  margin: 0;\n  padding: 0;\n  display: block;\n  position: fixed;\n  left: 0;\n  top: 0;\n  min-height: 100%;\n  min-width: 100%;\n  height: auto;\n  width: auto;\n  opacity: 0;\n  z-index: 99;\n  background-color: #fff;\n  filter: alpha(opacity=0); }\n\n.select2-hidden-accessible {\n  border: 0 !important;\n  clip: rect(0 0 0 0) !important;\n  -webkit-clip-path: inset(50%) !important;\n  clip-path: inset(50%) !important;\n  height: 1px !important;\n  overflow: hidden !important;\n  padding: 0 !important;\n  position: absolute !important;\n  width: 1px !important;\n  white-space: nowrap !important; }\n\n.select2-container--default .select2-selection--single {\n  background-color: #fff;\n  border: 1px solid #aaa;\n  border-radius: 4px; }\n  .select2-container--default .select2-selection--single .select2-selection__rendered {\n    color: #444;\n    line-height: 28px; }\n  .select2-container--default .select2-selection--single .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold;\n    height: 26px;\n    margin-right: 20px;\n    padding-right: 0px; }\n  .select2-container--default .select2-selection--single .select2-selection__placeholder {\n    color: #999; }\n  .select2-container--default .select2-selection--single .select2-selection__arrow {\n    height: 26px;\n    position: absolute;\n    top: 1px;\n    right: 1px;\n    width: 20px; }\n    .select2-container--default .select2-selection--single .select2-selection__arrow b {\n      border-color: #888 transparent transparent transparent;\n      border-style: solid;\n      border-width: 5px 4px 0 4px;\n      height: 0;\n      left: 50%;\n      margin-left: -4px;\n      margin-top: -2px;\n      position: absolute;\n      top: 50%;\n      width: 0; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--single .select2-selection__clear {\n  float: left; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow {\n  left: 1px;\n  right: auto; }\n\n.select2-container--default.select2-container--disabled .select2-selection--single {\n  background-color: #eee;\n  cursor: default; }\n  .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {\n    display: none; }\n\n.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {\n  border-color: transparent transparent #888 transparent;\n  border-width: 0 4px 5px 4px; }\n\n.select2-container--default .select2-selection--multiple {\n  background-color: white;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  cursor: text;\n  padding-bottom: 5px;\n  padding-right: 5px; }\n  .select2-container--default .select2-selection--multiple .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold;\n    height: 20px;\n    margin-right: 10px;\n    margin-top: 5px;\n    padding: 1px; }\n  .select2-container--default .select2-selection--multiple .select2-selection__choice {\n    background-color: #e4e4e4;\n    border: 1px solid #aaa;\n    border-radius: 4px;\n    display: inline-block;\n    margin-left: 5px;\n    margin-top: 5px;\n    padding: 0; }\n  .select2-container--default .select2-selection--multiple .select2-selection__choice__display {\n    cursor: default;\n    padding-left: 2px;\n    padding-right: 5px; }\n  .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n    background-color: transparent;\n    border: none;\n    border-right: 1px solid #aaa;\n    border-top-left-radius: 4px;\n    border-bottom-left-radius: 4px;\n    color: #999;\n    cursor: pointer;\n    font-size: 1em;\n    font-weight: bold;\n    padding: 0 4px; }\n    .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover, .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:focus {\n      background-color: #f1f1f1;\n      color: #333;\n      outline: none; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice {\n  margin-left: 5px;\n  margin-right: auto; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__display {\n  padding-left: 5px;\n  padding-right: 2px; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove {\n  border-left: 1px solid #aaa;\n  border-right: none;\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__clear {\n  float: left;\n  margin-left: 10px;\n  margin-right: auto; }\n\n.select2-container--default.select2-container--focus .select2-selection--multiple {\n  border: solid black 1px;\n  outline: 0; }\n\n.select2-container--default.select2-container--disabled .select2-selection--multiple {\n  background-color: #eee;\n  cursor: default; }\n\n.select2-container--default.select2-container--disabled .select2-selection__choice__remove {\n  display: none; }\n\n.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0; }\n\n.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.select2-container--default .select2-search--dropdown .select2-search__field {\n  border: 1px solid #aaa; }\n\n.select2-container--default .select2-search--inline .select2-search__field {\n  background: transparent;\n  border: none;\n  outline: 0;\n  box-shadow: none;\n  -webkit-appearance: textfield; }\n\n.select2-container--default .select2-results > .select2-results__options {\n  max-height: 200px;\n  overflow-y: auto; }\n\n.select2-container--default .select2-results__option .select2-results__option {\n  padding-left: 1em; }\n  .select2-container--default .select2-results__option .select2-results__option .select2-results__group {\n    padding-left: 0; }\n  .select2-container--default .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -1em;\n    padding-left: 2em; }\n    .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n      margin-left: -2em;\n      padding-left: 3em; }\n      .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n        margin-left: -3em;\n        padding-left: 4em; }\n        .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n          margin-left: -4em;\n          padding-left: 5em; }\n          .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n            margin-left: -5em;\n            padding-left: 6em; }\n\n.select2-container--default .select2-results__option--group {\n  padding: 0; }\n\n.select2-container--default .select2-results__option--disabled {\n  color: #999; }\n\n.select2-container--default .select2-results__option--selected {\n  background-color: #ddd; }\n\n.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable {\n  background-color: #5897fb;\n  color: white; }\n\n.select2-container--default .select2-results__group {\n  cursor: default;\n  display: block;\n  padding: 6px; }\n\n.select2-container--classic .select2-selection--single {\n  background-color: #f7f7f7;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  outline: 0;\n  background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);\n  background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);\n  background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }\n  .select2-container--classic .select2-selection--single:focus {\n    border: 1px solid #5897fb; }\n  .select2-container--classic .select2-selection--single .select2-selection__rendered {\n    color: #444;\n    line-height: 28px; }\n  .select2-container--classic .select2-selection--single .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold;\n    height: 26px;\n    margin-right: 20px; }\n  .select2-container--classic .select2-selection--single .select2-selection__placeholder {\n    color: #999; }\n  .select2-container--classic .select2-selection--single .select2-selection__arrow {\n    background-color: #ddd;\n    border: none;\n    border-left: 1px solid #aaa;\n    border-top-right-radius: 4px;\n    border-bottom-right-radius: 4px;\n    height: 26px;\n    position: absolute;\n    top: 1px;\n    right: 1px;\n    width: 20px;\n    background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);\n    background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);\n    background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);\n    background-repeat: repeat-x;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }\n    .select2-container--classic .select2-selection--single .select2-selection__arrow b {\n      border-color: #888 transparent transparent transparent;\n      border-style: solid;\n      border-width: 5px 4px 0 4px;\n      height: 0;\n      left: 50%;\n      margin-left: -4px;\n      margin-top: -2px;\n      position: absolute;\n      top: 50%;\n      width: 0; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--single .select2-selection__clear {\n  float: left; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow {\n  border: none;\n  border-right: 1px solid #aaa;\n  border-radius: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  left: 1px;\n  right: auto; }\n\n.select2-container--classic.select2-container--open .select2-selection--single {\n  border: 1px solid #5897fb; }\n  .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {\n    background: transparent;\n    border: none; }\n    .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {\n      border-color: transparent transparent #888 transparent;\n      border-width: 0 4px 5px 4px; }\n\n.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {\n  border-top: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);\n  background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);\n  background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }\n\n.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {\n  border-bottom: none;\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0;\n  background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);\n  background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);\n  background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }\n\n.select2-container--classic .select2-selection--multiple {\n  background-color: white;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  cursor: text;\n  outline: 0;\n  padding-bottom: 5px;\n  padding-right: 5px; }\n  .select2-container--classic .select2-selection--multiple:focus {\n    border: 1px solid #5897fb; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__clear {\n    display: none; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__choice {\n    background-color: #e4e4e4;\n    border: 1px solid #aaa;\n    border-radius: 4px;\n    display: inline-block;\n    margin-left: 5px;\n    margin-top: 5px;\n    padding: 0; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__choice__display {\n    cursor: default;\n    padding-left: 2px;\n    padding-right: 5px; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {\n    background-color: transparent;\n    border: none;\n    border-top-left-radius: 4px;\n    border-bottom-left-radius: 4px;\n    color: #888;\n    cursor: pointer;\n    font-size: 1em;\n    font-weight: bold;\n    padding: 0 4px; }\n    .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {\n      color: #555;\n      outline: none; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice {\n  margin-left: 5px;\n  margin-right: auto; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__display {\n  padding-left: 5px;\n  padding-right: 2px; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px; }\n\n.select2-container--classic.select2-container--open .select2-selection--multiple {\n  border: 1px solid #5897fb; }\n\n.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {\n  border-top: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0; }\n\n.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {\n  border-bottom: none;\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.select2-container--classic .select2-search--dropdown .select2-search__field {\n  border: 1px solid #aaa;\n  outline: 0; }\n\n.select2-container--classic .select2-search--inline .select2-search__field {\n  outline: 0;\n  box-shadow: none; }\n\n.select2-container--classic .select2-dropdown {\n  background-color: white;\n  border: 1px solid transparent; }\n\n.select2-container--classic .select2-dropdown--above {\n  border-bottom: none; }\n\n.select2-container--classic .select2-dropdown--below {\n  border-top: none; }\n\n.select2-container--classic .select2-results > .select2-results__options {\n  max-height: 200px;\n  overflow-y: auto; }\n\n.select2-container--classic .select2-results__option--group {\n  padding: 0; }\n\n.select2-container--classic .select2-results__option--disabled {\n  color: grey; }\n\n.select2-container--classic .select2-results__option--highlighted.select2-results__option--selectable {\n  background-color: #3875d7;\n  color: white; }\n\n.select2-container--classic .select2-results__group {\n  cursor: default;\n  display: block;\n  padding: 6px; }\n\n.select2-container--classic.select2-container--open .select2-dropdown {\n  border-color: #5897fb; }\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/select2.full.js",
    "content": "/*!\n * Select2 4.1.0-beta.1\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    // Node/CommonJS\n    module.exports = function (root, jQuery) {\n      if (jQuery === undefined) {\n        // require('jQuery') returns a factory that requires window to\n        // build a jQuery instance, we normalize how we use modules\n        // that require this pattern but the window provided is a noop\n        // if it's defined (how jquery works)\n        if (typeof window !== 'undefined') {\n          jQuery = require('jquery');\n        }\n        else {\n          jQuery = require('jquery')(root);\n        }\n      }\n      factory(jQuery);\n      return jQuery;\n    };\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n} (function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 =(function () {\n  // Restore the Select2 AMD loader so it can be used\n  // Needed mostly in the language files, where the loader is not inserted\n  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n    var S2 = jQuery.fn.select2.amd;\n  }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n    var main, req, makeMap, handlers,\n        defined = {},\n        waiting = {},\n        config = {},\n        defining = {},\n        hasOwn = Object.prototype.hasOwnProperty,\n        aps = [].slice,\n        jsSuffixRegExp = /\\.js$/;\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    /**\n     * Given a relative module name, like ./something, normalize it to\n     * a real name that can be mapped to a path.\n     * @param {String} name the relative name\n     * @param {String} baseName a real name that the name arg is relative\n     * to.\n     * @returns {String} normalized name\n     */\n    function normalize(name, baseName) {\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n            foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n            baseParts = baseName && baseName.split(\"/\"),\n            map = config.map,\n            starMap = (map && map['*']) || {};\n\n        //Adjust any relative paths.\n        if (name) {\n            name = name.split('/');\n            lastIndex = name.length - 1;\n\n            // If wanting node ID compatibility, strip .js from end\n            // of IDs. Have to do this here, and not in nameToUrl\n            // because node allows either .js or non .js to map\n            // to same file.\n            if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n            }\n\n            // Starts with a '.' so need the baseName\n            if (name[0].charAt(0) === '.' && baseParts) {\n                //Convert baseName to array, and lop off the last part,\n                //so that . matches that 'directory' and not name of the baseName's\n                //module. For instance, baseName of 'one/two/three', maps to\n                //'one/two/three.js', but we want the directory, 'one/two' for\n                //this normalization.\n                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n                name = normalizedBaseParts.concat(name);\n            }\n\n            //start trimDots\n            for (i = 0; i < name.length; i++) {\n                part = name[i];\n                if (part === '.') {\n                    name.splice(i, 1);\n                    i -= 1;\n                } else if (part === '..') {\n                    // If at the start, or previous value is still ..,\n                    // keep them so that when converted to a path it may\n                    // still work when converted to a path, even though\n                    // as an ID it is less than ideal. In larger point\n                    // releases, may be better to just kick out an error.\n                    if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n                        continue;\n                    } else if (i > 0) {\n                        name.splice(i - 1, 2);\n                        i -= 2;\n                    }\n                }\n            }\n            //end trimDots\n\n            name = name.join('/');\n        }\n\n        //Apply map config if available.\n        if ((baseParts || starMap) && map) {\n            nameParts = name.split('/');\n\n            for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                    //Find the longest baseName segment match in the config.\n                    //So, do joins on the biggest to smallest lengths of baseParts.\n                    for (j = baseParts.length; j > 0; j -= 1) {\n                        mapValue = map[baseParts.slice(0, j).join('/')];\n\n                        //baseName segment has  config, find if it has one for\n                        //this name.\n                        if (mapValue) {\n                            mapValue = mapValue[nameSegment];\n                            if (mapValue) {\n                                //Match, update name to the new value.\n                                foundMap = mapValue;\n                                foundI = i;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                if (foundMap) {\n                    break;\n                }\n\n                //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                    foundStarMap = starMap[nameSegment];\n                    starI = i;\n                }\n            }\n\n            if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n            }\n\n            if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n            }\n        }\n\n        return name;\n    }\n\n    function makeRequire(relName, forceSync) {\n        return function () {\n            //A version of a require function that passes a moduleName\n            //value for items that may need to\n            //look up paths relative to the moduleName\n            var args = aps.call(arguments, 0);\n\n            //If first arg is not require('string'), and there is only\n            //one arg, it is the array form without a callback. Insert\n            //a null so that the following concat is correct.\n            if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n            }\n            return req.apply(undef, args.concat([relName, forceSync]));\n        };\n    }\n\n    function makeNormalize(relName) {\n        return function (name) {\n            return normalize(name, relName);\n        };\n    }\n\n    function makeLoad(depName) {\n        return function (value) {\n            defined[depName] = value;\n        };\n    }\n\n    function callDep(name) {\n        if (hasProp(waiting, name)) {\n            var args = waiting[name];\n            delete waiting[name];\n            defining[name] = true;\n            main.apply(undef, args);\n        }\n\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\n            throw new Error('No ' + name);\n        }\n        return defined[name];\n    }\n\n    //Turns a plugin!resource to [plugin, resource]\n    //with the plugin being undefined if the name\n    //did not have a plugin prefix.\n    function splitPrefix(name) {\n        var prefix,\n            index = name ? name.indexOf('!') : -1;\n        if (index > -1) {\n            prefix = name.substring(0, index);\n            name = name.substring(index + 1, name.length);\n        }\n        return [prefix, name];\n    }\n\n    //Creates a parts array for a relName where first part is plugin ID,\n    //second part is resource ID. Assumes relName has already been normalized.\n    function makeRelParts(relName) {\n        return relName ? splitPrefix(relName) : [];\n    }\n\n    /**\n     * Makes a name map, normalizing the name, and using a plugin\n     * for normalization if necessary. Grabs a ref to plugin\n     * too, as an optimization.\n     */\n    makeMap = function (name, relParts) {\n        var plugin,\n            parts = splitPrefix(name),\n            prefix = parts[0],\n            relResourceName = relParts[1];\n\n        name = parts[1];\n\n        if (prefix) {\n            prefix = normalize(prefix, relResourceName);\n            plugin = callDep(prefix);\n        }\n\n        //Normalize according\n        if (prefix) {\n            if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relResourceName));\n            } else {\n                name = normalize(name, relResourceName);\n            }\n        } else {\n            name = normalize(name, relResourceName);\n            parts = splitPrefix(name);\n            prefix = parts[0];\n            name = parts[1];\n            if (prefix) {\n                plugin = callDep(prefix);\n            }\n        }\n\n        //Using ridiculous property names for space reasons\n        return {\n            f: prefix ? prefix + '!' + name : name, //fullName\n            n: name,\n            pr: prefix,\n            p: plugin\n        };\n    };\n\n    function makeConfig(name) {\n        return function () {\n            return (config && config.config && config.config[name]) || {};\n        };\n    }\n\n    handlers = {\n        require: function (name) {\n            return makeRequire(name);\n        },\n        exports: function (name) {\n            var e = defined[name];\n            if (typeof e !== 'undefined') {\n                return e;\n            } else {\n                return (defined[name] = {});\n            }\n        },\n        module: function (name) {\n            return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n            };\n        }\n    };\n\n    main = function (name, deps, callback, relName) {\n        var cjsModule, depName, ret, map, i, relParts,\n            args = [],\n            callbackType = typeof callback,\n            usingExports;\n\n        //Use name if no relName\n        relName = relName || name;\n        relParts = makeRelParts(relName);\n\n        //Call the callback to define the module, if necessary.\n        if (callbackType === 'undefined' || callbackType === 'function') {\n            //Pull out the defined dependencies and pass the ordered\n            //values to the callback.\n            //Default to [require, exports, module] if no deps\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n            for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relParts);\n                depName = map.f;\n\n                //Fast path CommonJS standard dependencies.\n                if (depName === \"require\") {\n                    args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                    //CommonJS module spec 1.1\n                    args[i] = handlers.exports(name);\n                    usingExports = true;\n                } else if (depName === \"module\") {\n                    //CommonJS module spec 1.1\n                    cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) ||\n                           hasProp(waiting, depName) ||\n                           hasProp(defining, depName)) {\n                    args[i] = callDep(depName);\n                } else if (map.p) {\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                    args[i] = defined[depName];\n                } else {\n                    throw new Error(name + ' missing ' + depName);\n                }\n            }\n\n            ret = callback ? callback.apply(defined[name], args) : undefined;\n\n            if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef &&\n                        cjsModule.exports !== defined[name]) {\n                    defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                    //Use the return value from the function.\n                    defined[name] = ret;\n                }\n            }\n        } else if (name) {\n            //May just be an object definition for the module. Only\n            //worry about defining if have a module name.\n            defined[name] = callback;\n        }\n    };\n\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n        if (typeof deps === \"string\") {\n            if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n            }\n            //Just return the module wanted. In this scenario, the\n            //deps arg is the module name, and second arg (if passed)\n            //is just the relName.\n            //Normalize module name, if it contains . or ..\n            return callDep(makeMap(deps, makeRelParts(callback)).f);\n        } else if (!deps.splice) {\n            //deps is a config object, not an array.\n            config = deps;\n            if (config.deps) {\n                req(config.deps, config.callback);\n            }\n            if (!callback) {\n                return;\n            }\n\n            if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n            } else {\n                deps = undef;\n            }\n        }\n\n        //Support require(['a'])\n        callback = callback || function () {};\n\n        //If relName is a function, it is an errback handler,\n        //so remove it.\n        if (typeof relName === 'function') {\n            relName = forceSync;\n            forceSync = alt;\n        }\n\n        //Simulate async callback;\n        if (forceSync) {\n            main(undef, deps, callback, relName);\n        } else {\n            //Using a non-zero value because of concern for what old browsers\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n            //If want a value immediately, use require('id') instead -- something\n            //that works in almond on the global level, but not guaranteed and\n            //unlikely to work in other AMD implementations.\n            setTimeout(function () {\n                main(undef, deps, callback, relName);\n            }, 4);\n        }\n\n        return req;\n    };\n\n    /**\n     * Just drops the config on the floor, but returns req in case\n     * the config return value is used.\n     */\n    req.config = function (cfg) {\n        return req(cfg);\n    };\n\n    /**\n     * Expose module registry for debugging and tooling\n     */\n    requirejs._defined = defined;\n\n    define = function (name, deps, callback) {\n        if (typeof name !== 'string') {\n            throw new Error('See almond README: incorrect module build, no module name');\n        }\n\n        //This module may not have dependencies\n        if (!deps.splice) {\n            //deps is not an array, so probably means\n            //an object literal or factory function for\n            //the value. Adjust args.\n            callback = deps;\n            deps = [];\n        }\n\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n            waiting[name] = [name, deps, callback];\n        }\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n  var _$ = jQuery || $;\n\n  if (_$ == null && console && console.error) {\n    console.error(\n      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n      'found. Make sure that you are including jQuery before Select2 on your ' +\n      'web page.'\n    );\n  }\n\n  return _$;\n});\n\nS2.define('select2/utils',[\n  'jquery'\n], function ($) {\n  var Utils = {};\n\n  Utils.Extend = function (ChildClass, SuperClass) {\n    var __hasProp = {}.hasOwnProperty;\n\n    function BaseConstructor () {\n      this.constructor = ChildClass;\n    }\n\n    for (var key in SuperClass) {\n      if (__hasProp.call(SuperClass, key)) {\n        ChildClass[key] = SuperClass[key];\n      }\n    }\n\n    BaseConstructor.prototype = SuperClass.prototype;\n    ChildClass.prototype = new BaseConstructor();\n    ChildClass.__super__ = SuperClass.prototype;\n\n    return ChildClass;\n  };\n\n  function getMethods (theClass) {\n    var proto = theClass.prototype;\n\n    var methods = [];\n\n    for (var methodName in proto) {\n      var m = proto[methodName];\n\n      if (typeof m !== 'function') {\n        continue;\n      }\n\n      if (methodName === 'constructor') {\n        continue;\n      }\n\n      methods.push(methodName);\n    }\n\n    return methods;\n  }\n\n  Utils.Decorate = function (SuperClass, DecoratorClass) {\n    var decoratedMethods = getMethods(DecoratorClass);\n    var superMethods = getMethods(SuperClass);\n\n    function DecoratedClass () {\n      var unshift = Array.prototype.unshift;\n\n      var argCount = DecoratorClass.prototype.constructor.length;\n\n      var calledConstructor = SuperClass.prototype.constructor;\n\n      if (argCount > 0) {\n        unshift.call(arguments, SuperClass.prototype.constructor);\n\n        calledConstructor = DecoratorClass.prototype.constructor;\n      }\n\n      calledConstructor.apply(this, arguments);\n    }\n\n    DecoratorClass.displayName = SuperClass.displayName;\n\n    function ctr () {\n      this.constructor = DecoratedClass;\n    }\n\n    DecoratedClass.prototype = new ctr();\n\n    for (var m = 0; m < superMethods.length; m++) {\n      var superMethod = superMethods[m];\n\n      DecoratedClass.prototype[superMethod] =\n        SuperClass.prototype[superMethod];\n    }\n\n    var calledMethod = function (methodName) {\n      // Stub out the original method if it's not decorating an actual method\n      var originalMethod = function () {};\n\n      if (methodName in DecoratedClass.prototype) {\n        originalMethod = DecoratedClass.prototype[methodName];\n      }\n\n      var decoratedMethod = DecoratorClass.prototype[methodName];\n\n      return function () {\n        var unshift = Array.prototype.unshift;\n\n        unshift.call(arguments, originalMethod);\n\n        return decoratedMethod.apply(this, arguments);\n      };\n    };\n\n    for (var d = 0; d < decoratedMethods.length; d++) {\n      var decoratedMethod = decoratedMethods[d];\n\n      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n    }\n\n    return DecoratedClass;\n  };\n\n  var Observable = function () {\n    this.listeners = {};\n  };\n\n  Observable.prototype.on = function (event, callback) {\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.listeners[event].push(callback);\n    } else {\n      this.listeners[event] = [callback];\n    }\n  };\n\n  Observable.prototype.trigger = function (event) {\n    var slice = Array.prototype.slice;\n    var params = slice.call(arguments, 1);\n\n    this.listeners = this.listeners || {};\n\n    // Params should always come in as an array\n    if (params == null) {\n      params = [];\n    }\n\n    // If there are no arguments to the event, use a temporary object\n    if (params.length === 0) {\n      params.push({});\n    }\n\n    // Set the `_type` of the first object to the event\n    params[0]._type = event;\n\n    if (event in this.listeners) {\n      this.invoke(this.listeners[event], slice.call(arguments, 1));\n    }\n\n    if ('*' in this.listeners) {\n      this.invoke(this.listeners['*'], arguments);\n    }\n  };\n\n  Observable.prototype.invoke = function (listeners, params) {\n    for (var i = 0, len = listeners.length; i < len; i++) {\n      listeners[i].apply(this, params);\n    }\n  };\n\n  Utils.Observable = Observable;\n\n  Utils.generateChars = function (length) {\n    var chars = '';\n\n    for (var i = 0; i < length; i++) {\n      var randomChar = Math.floor(Math.random() * 36);\n      chars += randomChar.toString(36);\n    }\n\n    return chars;\n  };\n\n  Utils.bind = function (func, context) {\n    return function () {\n      func.apply(context, arguments);\n    };\n  };\n\n  Utils._convertData = function (data) {\n    for (var originalKey in data) {\n      var keys = originalKey.split('-');\n\n      var dataLevel = data;\n\n      if (keys.length === 1) {\n        continue;\n      }\n\n      for (var k = 0; k < keys.length; k++) {\n        var key = keys[k];\n\n        // Lowercase the first letter\n        // By default, dash-separated becomes camelCase\n        key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n        if (!(key in dataLevel)) {\n          dataLevel[key] = {};\n        }\n\n        if (k == keys.length - 1) {\n          dataLevel[key] = data[originalKey];\n        }\n\n        dataLevel = dataLevel[key];\n      }\n\n      delete data[originalKey];\n    }\n\n    return data;\n  };\n\n  Utils.hasScroll = function (index, el) {\n    // Adapted from the function created by @ShadowScripter\n    // and adapted by @BillBarry on the Stack Exchange Code Review website.\n    // The original code can be found at\n    // http://codereview.stackexchange.com/q/13338\n    // and was designed to be used with the Sizzle selector engine.\n\n    var $el = $(el);\n    var overflowX = el.style.overflowX;\n    var overflowY = el.style.overflowY;\n\n    //Check both x and y declarations\n    if (overflowX === overflowY &&\n        (overflowY === 'hidden' || overflowY === 'visible')) {\n      return false;\n    }\n\n    if (overflowX === 'scroll' || overflowY === 'scroll') {\n      return true;\n    }\n\n    return ($el.innerHeight() < el.scrollHeight ||\n      $el.innerWidth() < el.scrollWidth);\n  };\n\n  Utils.escapeMarkup = function (markup) {\n    var replaceMap = {\n      '\\\\': '&#92;',\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '/': '&#47;'\n    };\n\n    // Do not try to escape the markup if it's not a string\n    if (typeof markup !== 'string') {\n      return markup;\n    }\n\n    return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n      return replaceMap[match];\n    });\n  };\n\n  // Cache objects in Utils.__cache instead of $.data (see #4346)\n  Utils.__cache = {};\n\n  var id = 0;\n  Utils.GetUniqueElementId = function (element) {\n    // Get a unique element Id. If element has no id,\n    // creates a new unique number, stores it in the id\n    // attribute and returns the new id with a prefix.\n    // If an id already exists, it simply returns it with a prefix.\n\n    var select2Id = element.getAttribute('data-select2-id');\n\n    if (select2Id != null) {\n      return select2Id;\n    }\n\n    // If element has id, use it.\n    if (element.id) {\n      select2Id = 'select2-data-' + element.id;\n    } else {\n      select2Id = 'select2-data-' + (++id).toString() +\n        '-' + Utils.generateChars(4);\n    }\n\n    element.setAttribute('data-select2-id', select2Id);\n\n    return select2Id;\n  };\n\n  Utils.StoreData = function (element, name, value) {\n    // Stores an item in the cache for a specified element.\n    // name is the cache key.\n    var id = Utils.GetUniqueElementId(element);\n    if (!Utils.__cache[id]) {\n      Utils.__cache[id] = {};\n    }\n\n    Utils.__cache[id][name] = value;\n  };\n\n  Utils.GetData = function (element, name) {\n    // Retrieves a value from the cache by its key (name)\n    // name is optional. If no name specified, return\n    // all cache items for the specified element.\n    // and for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (name) {\n      if (Utils.__cache[id]) {\n        if (Utils.__cache[id][name] != null) {\n          return Utils.__cache[id][name];\n        }\n        return $(element).data(name); // Fallback to HTML5 data attribs.\n      }\n      return $(element).data(name); // Fallback to HTML5 data attribs.\n    } else {\n      return Utils.__cache[id];\n    }\n  };\n\n  Utils.RemoveData = function (element) {\n    // Removes all cached items for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (Utils.__cache[id] != null) {\n      delete Utils.__cache[id];\n    }\n\n    element.removeAttribute('data-select2-id');\n  };\n\n  Utils.copyNonInternalCssClasses = function (dest, src) {\n    var classes;\n\n    var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n    destinationClasses = destinationClasses.filter(function (clazz) {\n      // Save all Select2 classes\n      return clazz.indexOf('select2-') === 0;\n    });\n\n    var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n    sourceClasses = sourceClasses.filter(function (clazz) {\n      // Only copy non-Select2 classes\n      return clazz.indexOf('select2-') !== 0;\n    });\n\n    var replacements = destinationClasses.concat(sourceClasses);\n\n    dest.setAttribute('class', replacements.join(' '));\n  };\n\n  return Utils;\n});\n\nS2.define('select2/results',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Results ($element, options, dataAdapter) {\n    this.$element = $element;\n    this.data = dataAdapter;\n    this.options = options;\n\n    Results.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Results, Utils.Observable);\n\n  Results.prototype.render = function () {\n    var $results = $(\n      '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n    );\n\n    if (this.options.get('multiple')) {\n      $results.attr('aria-multiselectable', 'true');\n    }\n\n    this.$results = $results;\n\n    return $results;\n  };\n\n  Results.prototype.clear = function () {\n    this.$results.empty();\n  };\n\n  Results.prototype.displayMessage = function (params) {\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    this.clear();\n    this.hideLoading();\n\n    var $message = $(\n      '<li role=\"alert\" aria-live=\"assertive\"' +\n      ' class=\"select2-results__option\"></li>'\n    );\n\n    var message = this.options.get('translations').get(params.message);\n\n    $message.append(\n      escapeMarkup(\n        message(params.args)\n      )\n    );\n\n    $message[0].className += ' select2-results__message';\n\n    this.$results.append($message);\n  };\n\n  Results.prototype.hideMessages = function () {\n    this.$results.find('.select2-results__message').remove();\n  };\n\n  Results.prototype.append = function (data) {\n    this.hideLoading();\n\n    var $options = [];\n\n    if (data.results == null || data.results.length === 0) {\n      if (this.$results.children().length === 0) {\n        this.trigger('results:message', {\n          message: 'noResults'\n        });\n      }\n\n      return;\n    }\n\n    data.results = this.sort(data.results);\n\n    for (var d = 0; d < data.results.length; d++) {\n      var item = data.results[d];\n\n      var $option = this.option(item);\n\n      $options.push($option);\n    }\n\n    this.$results.append($options);\n  };\n\n  Results.prototype.position = function ($results, $dropdown) {\n    var $resultsContainer = $dropdown.find('.select2-results');\n    $resultsContainer.append($results);\n  };\n\n  Results.prototype.sort = function (data) {\n    var sorter = this.options.get('sorter');\n\n    return sorter(data);\n  };\n\n  Results.prototype.highlightFirstItem = function () {\n    var $options = this.$results\n      .find('.select2-results__option--selectable');\n\n    var $selected = $options.filter('.select2-results__option--selected');\n\n    // Check if there are any selected options\n    if ($selected.length > 0) {\n      // If there are selected options, highlight the first\n      $selected.first().trigger('mouseenter');\n    } else {\n      // If there are no selected options, highlight the first option\n      // in the dropdown\n      $options.first().trigger('mouseenter');\n    }\n\n    this.ensureHighlightVisible();\n  };\n\n  Results.prototype.setClasses = function () {\n    var self = this;\n\n    this.data.current(function (selected) {\n      var selectedIds = selected.map(function (s) {\n        return s.id.toString();\n      });\n\n      var $options = self.$results\n        .find('.select2-results__option--selectable');\n\n      $options.each(function () {\n        var $option = $(this);\n\n        var item = Utils.GetData(this, 'data');\n\n        // id needs to be converted to a string when comparing\n        var id = '' + item.id;\n\n        if ((item.element != null && item.element.selected) ||\n            (item.element == null && selectedIds.indexOf(id) > -1)) {\n          this.classList.add('select2-results__option--selected');\n          $option.attr('aria-selected', 'true');\n        } else {\n          this.classList.remove('select2-results__option--selected');\n          $option.attr('aria-selected', 'false');\n        }\n      });\n\n    });\n  };\n\n  Results.prototype.showLoading = function (params) {\n    this.hideLoading();\n\n    var loadingMore = this.options.get('translations').get('searching');\n\n    var loading = {\n      disabled: true,\n      loading: true,\n      text: loadingMore(params)\n    };\n    var $loading = this.option(loading);\n    $loading.className += ' loading-results';\n\n    this.$results.prepend($loading);\n  };\n\n  Results.prototype.hideLoading = function () {\n    this.$results.find('.loading-results').remove();\n  };\n\n  Results.prototype.option = function (data) {\n    var option = document.createElement('li');\n    option.classList.add('select2-results__option');\n    option.classList.add('select2-results__option--selectable');\n\n    var attrs = {\n      'role': 'option'\n    };\n\n    var matches = window.Element.prototype.matches ||\n      window.Element.prototype.msMatchesSelector ||\n      window.Element.prototype.webkitMatchesSelector;\n\n    if ((data.element != null && matches.call(data.element, ':disabled')) ||\n        (data.element == null && data.disabled)) {\n      attrs['aria-disabled'] = 'true';\n\n      option.classList.remove('select2-results__option--selectable');\n      option.classList.add('select2-results__option--disabled');\n    }\n\n    if (data.id == null) {\n      option.classList.remove('select2-results__option--selectable');\n    }\n\n    if (data._resultId != null) {\n      option.id = data._resultId;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    if (data.children) {\n      attrs.role = 'group';\n      attrs['aria-label'] = data.text;\n\n      option.classList.remove('select2-results__option--selectable');\n      option.classList.add('select2-results__option--group');\n    }\n\n    for (var attr in attrs) {\n      var val = attrs[attr];\n\n      option.setAttribute(attr, val);\n    }\n\n    if (data.children) {\n      var $option = $(option);\n\n      var label = document.createElement('strong');\n      label.className = 'select2-results__group';\n\n      this.template(data, label);\n\n      var $children = [];\n\n      for (var c = 0; c < data.children.length; c++) {\n        var child = data.children[c];\n\n        var $child = this.option(child);\n\n        $children.push($child);\n      }\n\n      var $childrenContainer = $('<ul></ul>', {\n        'class': 'select2-results__options select2-results__options--nested'\n      });\n\n      $childrenContainer.append($children);\n\n      $option.append(label);\n      $option.append($childrenContainer);\n    } else {\n      this.template(data, option);\n    }\n\n    Utils.StoreData(option, 'data', data);\n\n    return option;\n  };\n\n  Results.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-results';\n\n    this.$results.attr('id', id);\n\n    container.on('results:all', function (params) {\n      self.clear();\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('results:append', function (params) {\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('query', function (params) {\n      self.hideMessages();\n      self.showLoading(params);\n    });\n\n    container.on('select', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('unselect', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expended=\"true\"\n      self.$results.attr('aria-expanded', 'true');\n      self.$results.attr('aria-hidden', 'false');\n\n      self.setClasses();\n      self.ensureHighlightVisible();\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expended=\"false\"\n      self.$results.attr('aria-expanded', 'false');\n      self.$results.attr('aria-hidden', 'true');\n      self.$results.removeAttr('aria-activedescendant');\n    });\n\n    container.on('results:toggle', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      $highlighted.trigger('mouseup');\n    });\n\n    container.on('results:select', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      var data = Utils.GetData($highlighted[0], 'data');\n\n      if ($highlighted.hasClass('select2-results__option--selected')) {\n        self.trigger('close', {});\n      } else {\n        self.trigger('select', {\n          data: data\n        });\n      }\n    });\n\n    container.on('results:previous', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('.select2-results__option--selectable');\n\n      var currentIndex = $options.index($highlighted);\n\n      // If we are already at the top, don't move further\n      // If no options, currentIndex will be -1\n      if (currentIndex <= 0) {\n        return;\n      }\n\n      var nextIndex = currentIndex - 1;\n\n      // If none are highlighted, highlight the first\n      if ($highlighted.length === 0) {\n        nextIndex = 0;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top;\n      var nextTop = $next.offset().top;\n      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextTop - currentOffset < 0) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:next', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('.select2-results__option--selectable');\n\n      var currentIndex = $options.index($highlighted);\n\n      var nextIndex = currentIndex + 1;\n\n      // If we are at the last option, stay there\n      if (nextIndex >= $options.length) {\n        return;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var nextBottom = $next.offset().top + $next.outerHeight(false);\n      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextBottom > currentOffset) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      params.element[0].classList.add('select2-results__option--highlighted');\n      params.element[0].setAttribute('aria-selected', 'true');\n    });\n\n    container.on('results:message', function (params) {\n      self.displayMessage(params);\n    });\n\n    if ($.fn.mousewheel) {\n      this.$results.on('mousewheel', function (e) {\n        var top = self.$results.scrollTop();\n\n        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n        if (isAtTop) {\n          self.$results.scrollTop(0);\n\n          e.preventDefault();\n          e.stopPropagation();\n        } else if (isAtBottom) {\n          self.$results.scrollTop(\n            self.$results.get(0).scrollHeight - self.$results.height()\n          );\n\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      });\n    }\n\n    this.$results.on('mouseup', '.select2-results__option--selectable',\n      function (evt) {\n      var $this = $(this);\n\n      var data = Utils.GetData(this, 'data');\n\n      if ($this.hasClass('select2-results__option--selected')) {\n        if (self.options.get('multiple')) {\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        } else {\n          self.trigger('close', {});\n        }\n\n        return;\n      }\n\n      self.trigger('select', {\n        originalEvent: evt,\n        data: data\n      });\n    });\n\n    this.$results.on('mouseenter', '.select2-results__option--selectable',\n      function (evt) {\n      var data = Utils.GetData(this, 'data');\n\n      self.getHighlightedResults()\n          .removeClass('select2-results__option--highlighted')\n          .attr('aria-selected', 'false');\n\n      self.trigger('results:focus', {\n        data: data,\n        element: $(this)\n      });\n    });\n  };\n\n  Results.prototype.getHighlightedResults = function () {\n    var $highlighted = this.$results\n    .find('.select2-results__option--highlighted');\n\n    return $highlighted;\n  };\n\n  Results.prototype.destroy = function () {\n    this.$results.remove();\n  };\n\n  Results.prototype.ensureHighlightVisible = function () {\n    var $highlighted = this.getHighlightedResults();\n\n    if ($highlighted.length === 0) {\n      return;\n    }\n\n    var $options = this.$results.find('.select2-results__option--selectable');\n\n    var currentIndex = $options.index($highlighted);\n\n    var currentOffset = this.$results.offset().top;\n    var nextTop = $highlighted.offset().top;\n    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n    var offsetDelta = nextTop - currentOffset;\n    nextOffset -= $highlighted.outerHeight(false) * 2;\n\n    if (currentIndex <= 2) {\n      this.$results.scrollTop(0);\n    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n      this.$results.scrollTop(nextOffset);\n    }\n  };\n\n  Results.prototype.template = function (result, container) {\n    var template = this.options.get('templateResult');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    var content = template(result, container);\n\n    if (content == null) {\n      container.style.display = 'none';\n    } else if (typeof content === 'string') {\n      container.innerHTML = escapeMarkup(content);\n    } else {\n      $(container).append(content);\n    }\n  };\n\n  return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n  var KEYS = {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    SHIFT: 16,\n    CTRL: 17,\n    ALT: 18,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n\n  return KEYS;\n});\n\nS2.define('select2/selection/base',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function BaseSelection ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    BaseSelection.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseSelection, Utils.Observable);\n\n  BaseSelection.prototype.render = function () {\n    var $selection = $(\n      '<span class=\"select2-selection\" role=\"combobox\" ' +\n      ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n      '</span>'\n    );\n\n    this._tabindex = 0;\n\n    if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n      this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n    } else if (this.$element.attr('tabindex') != null) {\n      this._tabindex = this.$element.attr('tabindex');\n    }\n\n    $selection.attr('title', this.$element.attr('title'));\n    $selection.attr('tabindex', this._tabindex);\n    $selection.attr('aria-disabled', 'false');\n\n    this.$selection = $selection;\n\n    return $selection;\n  };\n\n  BaseSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    this.container = container;\n\n    this.$selection.on('focus', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('blur', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      if (evt.which === KEYS.SPACE) {\n        evt.preventDefault();\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      self.$selection.attr('aria-activedescendant', params.data._resultId);\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expanded=\"true\"\n      self.$selection.attr('aria-expanded', 'true');\n      self.$selection.attr('aria-owns', resultsId);\n\n      self._attachCloseHandler(container);\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expanded=\"false\"\n      self.$selection.attr('aria-expanded', 'false');\n      self.$selection.removeAttr('aria-activedescendant');\n      self.$selection.removeAttr('aria-owns');\n\n      self.$selection.trigger('focus');\n\n      self._detachCloseHandler(container);\n    });\n\n    container.on('enable', function () {\n      self.$selection.attr('tabindex', self._tabindex);\n      self.$selection.attr('aria-disabled', 'false');\n    });\n\n    container.on('disable', function () {\n      self.$selection.attr('tabindex', '-1');\n      self.$selection.attr('aria-disabled', 'true');\n    });\n  };\n\n  BaseSelection.prototype._handleBlur = function (evt) {\n    var self = this;\n\n    // This needs to be delayed as the active element is the body when the tab\n    // key is pressed, possibly along with others.\n    window.setTimeout(function () {\n      // Don't trigger `blur` if the focus is still in the selection\n      if (\n        (document.activeElement == self.$selection[0]) ||\n        ($.contains(self.$selection[0], document.activeElement))\n      ) {\n        return;\n      }\n\n      self.trigger('blur', evt);\n    }, 1);\n  };\n\n  BaseSelection.prototype._attachCloseHandler = function (container) {\n\n    $(document.body).on('mousedown.select2.' + container.id, function (e) {\n      var $target = $(e.target);\n\n      var $select = $target.closest('.select2');\n\n      var $all = $('.select2.select2-container--open');\n\n      $all.each(function () {\n        if (this == $select[0]) {\n          return;\n        }\n\n        var $element = Utils.GetData(this, 'element');\n\n        $element.select2('close');\n      });\n    });\n  };\n\n  BaseSelection.prototype._detachCloseHandler = function (container) {\n    $(document.body).off('mousedown.select2.' + container.id);\n  };\n\n  BaseSelection.prototype.position = function ($selection, $container) {\n    var $selectionContainer = $container.find('.selection');\n    $selectionContainer.append($selection);\n  };\n\n  BaseSelection.prototype.destroy = function () {\n    this._detachCloseHandler(this.container);\n  };\n\n  BaseSelection.prototype.update = function (data) {\n    throw new Error('The `update` method must be defined in child classes.');\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  BaseSelection.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  BaseSelection.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n  'jquery',\n  './base',\n  '../utils',\n  '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n  function SingleSelection () {\n    SingleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(SingleSelection, BaseSelection);\n\n  SingleSelection.prototype.render = function () {\n    var $selection = SingleSelection.__super__.render.call(this);\n\n    $selection[0].classList.add('select2-selection--single');\n\n    $selection.html(\n      '<span class=\"select2-selection__rendered\"></span>' +\n      '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n        '<b role=\"presentation\"></b>' +\n      '</span>'\n    );\n\n    return $selection;\n  };\n\n  SingleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    SingleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n\n    this.$selection.find('.select2-selection__rendered')\n      .attr('id', id)\n      .attr('role', 'textbox')\n      .attr('aria-readonly', 'true');\n    this.$selection.attr('aria-labelledby', id);\n\n    this.$selection.on('mousedown', function (evt) {\n      // Only respond to left clicks\n      if (evt.which !== 1) {\n        return;\n      }\n\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on('focus', function (evt) {\n      // User focuses on the container\n    });\n\n    this.$selection.on('blur', function (evt) {\n      // User exits the container\n    });\n\n    container.on('focus', function (evt) {\n      if (!container.isOpen()) {\n        self.$selection.trigger('focus');\n      }\n    });\n  };\n\n  SingleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title'); // clear tooltip on empty\n  };\n\n  SingleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  SingleSelection.prototype.selectionContainer = function () {\n    return $('<span></span>');\n  };\n\n  SingleSelection.prototype.update = function (data) {\n    if (data.length === 0) {\n      this.clear();\n      return;\n    }\n\n    var selection = data[0];\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    var formatted = this.display(selection, $rendered);\n\n    $rendered.empty().append(formatted);\n\n    var title = selection.title || selection.text;\n\n    if (title) {\n      $rendered.attr('title', title);\n    } else {\n      $rendered.removeAttr('title');\n    }\n  };\n\n  return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n  'jquery',\n  './base',\n  '../utils'\n], function ($, BaseSelection, Utils) {\n  function MultipleSelection ($element, options) {\n    MultipleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(MultipleSelection, BaseSelection);\n\n  MultipleSelection.prototype.render = function () {\n    var $selection = MultipleSelection.__super__.render.call(this);\n\n    $selection[0].classList.add('select2-selection--multiple');\n\n    $selection.html(\n      '<ul class=\"select2-selection__rendered\"></ul>'\n    );\n\n    return $selection;\n  };\n\n  MultipleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    MultipleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n    this.$selection.find('.select2-selection__rendered').attr('id', id);\n\n    this.$selection.on('click', function (evt) {\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on(\n      'click',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        var $remove = $(this);\n        var $selection = $remove.parent();\n\n        var data = Utils.GetData($selection[0], 'data');\n\n        self.trigger('unselect', {\n          originalEvent: evt,\n          data: data\n        });\n      }\n    );\n\n    this.$selection.on(\n      'keydown',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        evt.stopPropagation();\n      }\n    );\n  };\n\n  MultipleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title');\n  };\n\n  MultipleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  MultipleSelection.prototype.selectionContainer = function () {\n    var $container = $(\n      '<li class=\"select2-selection__choice\">' +\n        '<button type=\"button\" class=\"select2-selection__choice__remove\" ' +\n        'tabindex=\"-1\">' +\n          '<span aria-hidden=\"true\">&times;</span>' +\n        '</button>' +\n        '<span class=\"select2-selection__choice__display\"></span>' +\n      '</li>'\n    );\n\n    return $container;\n  };\n\n  MultipleSelection.prototype.update = function (data) {\n    this.clear();\n\n    if (data.length === 0) {\n      return;\n    }\n\n    var $selections = [];\n\n    var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n      .attr('id') + '-choice-';\n\n    for (var d = 0; d < data.length; d++) {\n      var selection = data[d];\n\n      var $selection = this.selectionContainer();\n      var formatted = this.display(selection, $selection);\n\n      var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n      if (selection.id) {\n        selectionId += selection.id;\n      } else {\n        selectionId += Utils.generateChars(4);\n      }\n\n      $selection.find('.select2-selection__choice__display')\n        .append(formatted)\n        .attr('id', selectionId);\n\n      var title = selection.title || selection.text;\n\n      if (title) {\n        $selection.attr('title', title);\n      }\n\n      var removeItem = this.options.get('translations').get('removeItem');\n\n      var $remove = $selection.find('.select2-selection__choice__remove');\n\n      $remove.attr('title', removeItem());\n      $remove.attr('aria-label', removeItem());\n      $remove.attr('aria-describedby', selectionId);\n\n      Utils.StoreData($selection[0], 'data', selection);\n\n      $selections.push($selection);\n    }\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n\n    $rendered.append($selections);\n  };\n\n  return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\n  function Placeholder (decorated, $element, options) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options);\n  }\n\n  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n    var $placeholder = this.selectionContainer();\n\n    $placeholder.html(this.display(placeholder));\n    $placeholder[0].classList.add('select2-selection__placeholder');\n    $placeholder[0].classList.remove('select2-selection__choice');\n\n    return $placeholder;\n  };\n\n  Placeholder.prototype.update = function (decorated, data) {\n    var singlePlaceholder = (\n      data.length == 1 && data[0].id != this.placeholder.id\n    );\n    var multipleSelections = data.length > 1;\n\n    if (multipleSelections || singlePlaceholder) {\n      return decorated.call(this, data);\n    }\n\n    this.clear();\n\n    var $placeholder = this.createPlaceholder(this.placeholder);\n\n    this.$selection.find('.select2-selection__rendered').append($placeholder);\n  };\n\n  return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n  'jquery',\n  '../keys',\n  '../utils'\n], function ($, KEYS, Utils) {\n  function AllowClear () { }\n\n  AllowClear.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    if (this.placeholder == null) {\n      if (this.options.get('debug') && window.console && console.error) {\n        console.error(\n          'Select2: The `allowClear` option should be used in combination ' +\n          'with the `placeholder` option.'\n        );\n      }\n    }\n\n    this.$selection.on('mousedown', '.select2-selection__clear',\n      function (evt) {\n        self._handleClear(evt);\n    });\n\n    container.on('keypress', function (evt) {\n      self._handleKeyboardClear(evt, container);\n    });\n  };\n\n  AllowClear.prototype._handleClear = function (_, evt) {\n    // Ignore the event if it is disabled\n    if (this.isDisabled()) {\n      return;\n    }\n\n    var $clear = this.$selection.find('.select2-selection__clear');\n\n    // Ignore the event if nothing has been selected\n    if ($clear.length === 0) {\n      return;\n    }\n\n    evt.stopPropagation();\n\n    var data = Utils.GetData($clear[0], 'data');\n\n    var previousVal = this.$element.val();\n    this.$element.val(this.placeholder.id);\n\n    var unselectData = {\n      data: data\n    };\n    this.trigger('clear', unselectData);\n    if (unselectData.prevented) {\n      this.$element.val(previousVal);\n      return;\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      unselectData = {\n        data: data[d]\n      };\n\n      // Trigger the `unselect` event, so people can prevent it from being\n      // cleared.\n      this.trigger('unselect', unselectData);\n\n      // If the event was prevented, don't clear it out.\n      if (unselectData.prevented) {\n        this.$element.val(previousVal);\n        return;\n      }\n    }\n\n    this.$element.trigger('input').trigger('change');\n\n    this.trigger('toggle', {});\n  };\n\n  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n    if (container.isOpen()) {\n      return;\n    }\n\n    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n      this._handleClear(evt);\n    }\n  };\n\n  AllowClear.prototype.update = function (decorated, data) {\n    decorated.call(this, data);\n\n    this.$selection.find('.select2-selection__clear').remove();\n\n    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n        data.length === 0) {\n      return;\n    }\n\n    var selectionId = this.$selection.find('.select2-selection__rendered')\n      .attr('id');\n\n    var removeAll = this.options.get('translations').get('removeAllItems');\n\n    var $remove = $(\n      '<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' +\n        '<span aria-hidden=\"true\">&times;</span>' +\n      '</button>'\n    );\n    $remove.attr('title', removeAll());\n    $remove.attr('aria-label', removeAll());\n    $remove.attr('aria-describedby', selectionId);\n    Utils.StoreData($remove[0], 'data', data);\n\n    this.$selection.prepend($remove);\n  };\n\n  return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function Search (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  Search.prototype.render = function (decorated) {\n    var $search = $(\n      '<span class=\"select2-search select2-search--inline\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    this.$search.prop('autocomplete', this.options.get('autocomplete'));\n\n    var $rendered = decorated.call(this);\n\n    this._transferTabIndex();\n    $rendered.append(this.$searchContainer);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n    var selectionId = container.id + '-container';\n\n    decorated.call(this, container, $container);\n\n    self.$search.attr('aria-describedby', selectionId);\n\n    container.on('open', function () {\n      self.$search.attr('aria-controls', resultsId);\n      self.$search.trigger('focus');\n    });\n\n    container.on('close', function () {\n      self.$search.val('');\n      self.resizeSearch();\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n      self.$search.trigger('focus');\n    });\n\n    container.on('enable', function () {\n      self.$search.prop('disabled', false);\n\n      self._transferTabIndex();\n    });\n\n    container.on('disable', function () {\n      self.$search.prop('disabled', true);\n    });\n\n    container.on('focus', function (evt) {\n      self.$search.trigger('focus');\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n\n    this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n      evt.stopPropagation();\n\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n\n      var key = evt.which;\n\n      if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n        var $previousChoice = self.$selection\n          .find('.select2-selection__choice').last();\n\n        if ($previousChoice.length > 0) {\n          var item = Utils.GetData($previousChoice[0], 'data');\n\n          self.searchRemoveChoice(item);\n\n          evt.preventDefault();\n        }\n      }\n    });\n\n    this.$selection.on('click', '.select2-search--inline', function (evt) {\n      if (self.$search.val()) {\n        evt.stopPropagation();\n      }\n    });\n\n    // Try to detect the IE version should the `documentMode` property that\n    // is stored on the document. This is only implemented in IE and is\n    // slightly cleaner than doing a user agent check.\n    // This property is not available in Edge, but Edge also doesn't have\n    // this bug.\n    var msie = document.documentMode;\n    var disableInputEvents = msie && msie <= 11;\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$selection.on(\n      'input.searchcheck',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents) {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        // Unbind the duplicated `keyup` event\n        self.$selection.off('keyup.search');\n      }\n    );\n\n    this.$selection.on(\n      'keyup.search input.search',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents && evt.type === 'input') {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        var key = evt.which;\n\n        // We can freely ignore events from modifier keys\n        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n          return;\n        }\n\n        // Tabbing will be handled during the `keydown` phase\n        if (key == KEYS.TAB) {\n          return;\n        }\n\n        self.handleSearch(evt);\n      }\n    );\n  };\n\n  /**\n   * This method will transfer the tabindex attribute from the rendered\n   * selection to the search box. This allows for the search box to be used as\n   * the primary focus instead of the selection container.\n   *\n   * @private\n   */\n  Search.prototype._transferTabIndex = function (decorated) {\n    this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n    this.$selection.attr('tabindex', '-1');\n  };\n\n  Search.prototype.createPlaceholder = function (decorated, placeholder) {\n    this.$search.attr('placeholder', placeholder.text);\n  };\n\n  Search.prototype.update = function (decorated, data) {\n    var searchHadFocus = this.$search[0] == document.activeElement;\n\n    this.$search.attr('placeholder', '');\n\n    decorated.call(this, data);\n\n    this.resizeSearch();\n    if (searchHadFocus) {\n      this.$search.trigger('focus');\n    }\n  };\n\n  Search.prototype.handleSearch = function () {\n    this.resizeSearch();\n\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.searchRemoveChoice = function (decorated, item) {\n    this.trigger('unselect', {\n      data: item\n    });\n\n    this.$search.val(item.text);\n    this.handleSearch();\n  };\n\n  Search.prototype.resizeSearch = function () {\n    this.$search.css('width', '25px');\n\n    var width = '100%';\n\n    if (this.$search.attr('placeholder') === '') {\n      var minimumWidth = this.$search.val().length + 1;\n\n      width = (minimumWidth * 0.75) + 'em';\n    }\n\n    this.$search.css('width', width);\n  };\n\n  return Search;\n});\n\nS2.define('select2/selection/selectionCss',[\n  '../utils'\n], function (Utils) {\n  function SelectionCSS () { }\n\n  SelectionCSS.prototype.render = function (decorated) {\n    var $selection = decorated.call(this);\n\n    var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n    if (selectionCssClass.indexOf(':all:') !== -1) {\n      selectionCssClass = selectionCssClass.replace(':all:', '');\n\n      Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n    }\n\n    $selection.addClass(selectionCssClass);\n\n    return $selection;\n  };\n\n  return SelectionCSS;\n});\n\nS2.define('select2/selection/eventRelay',[\n  'jquery'\n], function ($) {\n  function EventRelay () { }\n\n  EventRelay.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n    var relayEvents = [\n      'open', 'opening',\n      'close', 'closing',\n      'select', 'selecting',\n      'unselect', 'unselecting',\n      'clear', 'clearing'\n    ];\n\n    var preventableEvents = [\n      'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n    ];\n\n    decorated.call(this, container, $container);\n\n    container.on('*', function (name, params) {\n      // Ignore events that should not be relayed\n      if (relayEvents.indexOf(name) === -1) {\n        return;\n      }\n\n      // The parameters should always be an object\n      params = params || {};\n\n      // Generate the jQuery event for the Select2 event\n      var evt = $.Event('select2:' + name, {\n        params: params\n      });\n\n      self.$element.trigger(evt);\n\n      // Only handle preventable events if it was one\n      if (preventableEvents.indexOf(name) === -1) {\n        return;\n      }\n\n      params.prevented = evt.isDefaultPrevented();\n    });\n  };\n\n  return EventRelay;\n});\n\nS2.define('select2/translation',[\n  'jquery',\n  'require'\n], function ($, require) {\n  function Translation (dict) {\n    this.dict = dict || {};\n  }\n\n  Translation.prototype.all = function () {\n    return this.dict;\n  };\n\n  Translation.prototype.get = function (key) {\n    return this.dict[key];\n  };\n\n  Translation.prototype.extend = function (translation) {\n    this.dict = $.extend({}, translation.all(), this.dict);\n  };\n\n  // Static functions\n\n  Translation._cache = {};\n\n  Translation.loadPath = function (path) {\n    if (!(path in Translation._cache)) {\n      var translations = require(path);\n\n      Translation._cache[path] = translations;\n    }\n\n    return new Translation(Translation._cache[path]);\n  };\n\n  return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n  var diacritics = {\n    '\\u24B6': 'A',\n    '\\uFF21': 'A',\n    '\\u00C0': 'A',\n    '\\u00C1': 'A',\n    '\\u00C2': 'A',\n    '\\u1EA6': 'A',\n    '\\u1EA4': 'A',\n    '\\u1EAA': 'A',\n    '\\u1EA8': 'A',\n    '\\u00C3': 'A',\n    '\\u0100': 'A',\n    '\\u0102': 'A',\n    '\\u1EB0': 'A',\n    '\\u1EAE': 'A',\n    '\\u1EB4': 'A',\n    '\\u1EB2': 'A',\n    '\\u0226': 'A',\n    '\\u01E0': 'A',\n    '\\u00C4': 'A',\n    '\\u01DE': 'A',\n    '\\u1EA2': 'A',\n    '\\u00C5': 'A',\n    '\\u01FA': 'A',\n    '\\u01CD': 'A',\n    '\\u0200': 'A',\n    '\\u0202': 'A',\n    '\\u1EA0': 'A',\n    '\\u1EAC': 'A',\n    '\\u1EB6': 'A',\n    '\\u1E00': 'A',\n    '\\u0104': 'A',\n    '\\u023A': 'A',\n    '\\u2C6F': 'A',\n    '\\uA732': 'AA',\n    '\\u00C6': 'AE',\n    '\\u01FC': 'AE',\n    '\\u01E2': 'AE',\n    '\\uA734': 'AO',\n    '\\uA736': 'AU',\n    '\\uA738': 'AV',\n    '\\uA73A': 'AV',\n    '\\uA73C': 'AY',\n    '\\u24B7': 'B',\n    '\\uFF22': 'B',\n    '\\u1E02': 'B',\n    '\\u1E04': 'B',\n    '\\u1E06': 'B',\n    '\\u0243': 'B',\n    '\\u0182': 'B',\n    '\\u0181': 'B',\n    '\\u24B8': 'C',\n    '\\uFF23': 'C',\n    '\\u0106': 'C',\n    '\\u0108': 'C',\n    '\\u010A': 'C',\n    '\\u010C': 'C',\n    '\\u00C7': 'C',\n    '\\u1E08': 'C',\n    '\\u0187': 'C',\n    '\\u023B': 'C',\n    '\\uA73E': 'C',\n    '\\u24B9': 'D',\n    '\\uFF24': 'D',\n    '\\u1E0A': 'D',\n    '\\u010E': 'D',\n    '\\u1E0C': 'D',\n    '\\u1E10': 'D',\n    '\\u1E12': 'D',\n    '\\u1E0E': 'D',\n    '\\u0110': 'D',\n    '\\u018B': 'D',\n    '\\u018A': 'D',\n    '\\u0189': 'D',\n    '\\uA779': 'D',\n    '\\u01F1': 'DZ',\n    '\\u01C4': 'DZ',\n    '\\u01F2': 'Dz',\n    '\\u01C5': 'Dz',\n    '\\u24BA': 'E',\n    '\\uFF25': 'E',\n    '\\u00C8': 'E',\n    '\\u00C9': 'E',\n    '\\u00CA': 'E',\n    '\\u1EC0': 'E',\n    '\\u1EBE': 'E',\n    '\\u1EC4': 'E',\n    '\\u1EC2': 'E',\n    '\\u1EBC': 'E',\n    '\\u0112': 'E',\n    '\\u1E14': 'E',\n    '\\u1E16': 'E',\n    '\\u0114': 'E',\n    '\\u0116': 'E',\n    '\\u00CB': 'E',\n    '\\u1EBA': 'E',\n    '\\u011A': 'E',\n    '\\u0204': 'E',\n    '\\u0206': 'E',\n    '\\u1EB8': 'E',\n    '\\u1EC6': 'E',\n    '\\u0228': 'E',\n    '\\u1E1C': 'E',\n    '\\u0118': 'E',\n    '\\u1E18': 'E',\n    '\\u1E1A': 'E',\n    '\\u0190': 'E',\n    '\\u018E': 'E',\n    '\\u24BB': 'F',\n    '\\uFF26': 'F',\n    '\\u1E1E': 'F',\n    '\\u0191': 'F',\n    '\\uA77B': 'F',\n    '\\u24BC': 'G',\n    '\\uFF27': 'G',\n    '\\u01F4': 'G',\n    '\\u011C': 'G',\n    '\\u1E20': 'G',\n    '\\u011E': 'G',\n    '\\u0120': 'G',\n    '\\u01E6': 'G',\n    '\\u0122': 'G',\n    '\\u01E4': 'G',\n    '\\u0193': 'G',\n    '\\uA7A0': 'G',\n    '\\uA77D': 'G',\n    '\\uA77E': 'G',\n    '\\u24BD': 'H',\n    '\\uFF28': 'H',\n    '\\u0124': 'H',\n    '\\u1E22': 'H',\n    '\\u1E26': 'H',\n    '\\u021E': 'H',\n    '\\u1E24': 'H',\n    '\\u1E28': 'H',\n    '\\u1E2A': 'H',\n    '\\u0126': 'H',\n    '\\u2C67': 'H',\n    '\\u2C75': 'H',\n    '\\uA78D': 'H',\n    '\\u24BE': 'I',\n    '\\uFF29': 'I',\n    '\\u00CC': 'I',\n    '\\u00CD': 'I',\n    '\\u00CE': 'I',\n    '\\u0128': 'I',\n    '\\u012A': 'I',\n    '\\u012C': 'I',\n    '\\u0130': 'I',\n    '\\u00CF': 'I',\n    '\\u1E2E': 'I',\n    '\\u1EC8': 'I',\n    '\\u01CF': 'I',\n    '\\u0208': 'I',\n    '\\u020A': 'I',\n    '\\u1ECA': 'I',\n    '\\u012E': 'I',\n    '\\u1E2C': 'I',\n    '\\u0197': 'I',\n    '\\u24BF': 'J',\n    '\\uFF2A': 'J',\n    '\\u0134': 'J',\n    '\\u0248': 'J',\n    '\\u24C0': 'K',\n    '\\uFF2B': 'K',\n    '\\u1E30': 'K',\n    '\\u01E8': 'K',\n    '\\u1E32': 'K',\n    '\\u0136': 'K',\n    '\\u1E34': 'K',\n    '\\u0198': 'K',\n    '\\u2C69': 'K',\n    '\\uA740': 'K',\n    '\\uA742': 'K',\n    '\\uA744': 'K',\n    '\\uA7A2': 'K',\n    '\\u24C1': 'L',\n    '\\uFF2C': 'L',\n    '\\u013F': 'L',\n    '\\u0139': 'L',\n    '\\u013D': 'L',\n    '\\u1E36': 'L',\n    '\\u1E38': 'L',\n    '\\u013B': 'L',\n    '\\u1E3C': 'L',\n    '\\u1E3A': 'L',\n    '\\u0141': 'L',\n    '\\u023D': 'L',\n    '\\u2C62': 'L',\n    '\\u2C60': 'L',\n    '\\uA748': 'L',\n    '\\uA746': 'L',\n    '\\uA780': 'L',\n    '\\u01C7': 'LJ',\n    '\\u01C8': 'Lj',\n    '\\u24C2': 'M',\n    '\\uFF2D': 'M',\n    '\\u1E3E': 'M',\n    '\\u1E40': 'M',\n    '\\u1E42': 'M',\n    '\\u2C6E': 'M',\n    '\\u019C': 'M',\n    '\\u24C3': 'N',\n    '\\uFF2E': 'N',\n    '\\u01F8': 'N',\n    '\\u0143': 'N',\n    '\\u00D1': 'N',\n    '\\u1E44': 'N',\n    '\\u0147': 'N',\n    '\\u1E46': 'N',\n    '\\u0145': 'N',\n    '\\u1E4A': 'N',\n    '\\u1E48': 'N',\n    '\\u0220': 'N',\n    '\\u019D': 'N',\n    '\\uA790': 'N',\n    '\\uA7A4': 'N',\n    '\\u01CA': 'NJ',\n    '\\u01CB': 'Nj',\n    '\\u24C4': 'O',\n    '\\uFF2F': 'O',\n    '\\u00D2': 'O',\n    '\\u00D3': 'O',\n    '\\u00D4': 'O',\n    '\\u1ED2': 'O',\n    '\\u1ED0': 'O',\n    '\\u1ED6': 'O',\n    '\\u1ED4': 'O',\n    '\\u00D5': 'O',\n    '\\u1E4C': 'O',\n    '\\u022C': 'O',\n    '\\u1E4E': 'O',\n    '\\u014C': 'O',\n    '\\u1E50': 'O',\n    '\\u1E52': 'O',\n    '\\u014E': 'O',\n    '\\u022E': 'O',\n    '\\u0230': 'O',\n    '\\u00D6': 'O',\n    '\\u022A': 'O',\n    '\\u1ECE': 'O',\n    '\\u0150': 'O',\n    '\\u01D1': 'O',\n    '\\u020C': 'O',\n    '\\u020E': 'O',\n    '\\u01A0': 'O',\n    '\\u1EDC': 'O',\n    '\\u1EDA': 'O',\n    '\\u1EE0': 'O',\n    '\\u1EDE': 'O',\n    '\\u1EE2': 'O',\n    '\\u1ECC': 'O',\n    '\\u1ED8': 'O',\n    '\\u01EA': 'O',\n    '\\u01EC': 'O',\n    '\\u00D8': 'O',\n    '\\u01FE': 'O',\n    '\\u0186': 'O',\n    '\\u019F': 'O',\n    '\\uA74A': 'O',\n    '\\uA74C': 'O',\n    '\\u0152': 'OE',\n    '\\u01A2': 'OI',\n    '\\uA74E': 'OO',\n    '\\u0222': 'OU',\n    '\\u24C5': 'P',\n    '\\uFF30': 'P',\n    '\\u1E54': 'P',\n    '\\u1E56': 'P',\n    '\\u01A4': 'P',\n    '\\u2C63': 'P',\n    '\\uA750': 'P',\n    '\\uA752': 'P',\n    '\\uA754': 'P',\n    '\\u24C6': 'Q',\n    '\\uFF31': 'Q',\n    '\\uA756': 'Q',\n    '\\uA758': 'Q',\n    '\\u024A': 'Q',\n    '\\u24C7': 'R',\n    '\\uFF32': 'R',\n    '\\u0154': 'R',\n    '\\u1E58': 'R',\n    '\\u0158': 'R',\n    '\\u0210': 'R',\n    '\\u0212': 'R',\n    '\\u1E5A': 'R',\n    '\\u1E5C': 'R',\n    '\\u0156': 'R',\n    '\\u1E5E': 'R',\n    '\\u024C': 'R',\n    '\\u2C64': 'R',\n    '\\uA75A': 'R',\n    '\\uA7A6': 'R',\n    '\\uA782': 'R',\n    '\\u24C8': 'S',\n    '\\uFF33': 'S',\n    '\\u1E9E': 'S',\n    '\\u015A': 'S',\n    '\\u1E64': 'S',\n    '\\u015C': 'S',\n    '\\u1E60': 'S',\n    '\\u0160': 'S',\n    '\\u1E66': 'S',\n    '\\u1E62': 'S',\n    '\\u1E68': 'S',\n    '\\u0218': 'S',\n    '\\u015E': 'S',\n    '\\u2C7E': 'S',\n    '\\uA7A8': 'S',\n    '\\uA784': 'S',\n    '\\u24C9': 'T',\n    '\\uFF34': 'T',\n    '\\u1E6A': 'T',\n    '\\u0164': 'T',\n    '\\u1E6C': 'T',\n    '\\u021A': 'T',\n    '\\u0162': 'T',\n    '\\u1E70': 'T',\n    '\\u1E6E': 'T',\n    '\\u0166': 'T',\n    '\\u01AC': 'T',\n    '\\u01AE': 'T',\n    '\\u023E': 'T',\n    '\\uA786': 'T',\n    '\\uA728': 'TZ',\n    '\\u24CA': 'U',\n    '\\uFF35': 'U',\n    '\\u00D9': 'U',\n    '\\u00DA': 'U',\n    '\\u00DB': 'U',\n    '\\u0168': 'U',\n    '\\u1E78': 'U',\n    '\\u016A': 'U',\n    '\\u1E7A': 'U',\n    '\\u016C': 'U',\n    '\\u00DC': 'U',\n    '\\u01DB': 'U',\n    '\\u01D7': 'U',\n    '\\u01D5': 'U',\n    '\\u01D9': 'U',\n    '\\u1EE6': 'U',\n    '\\u016E': 'U',\n    '\\u0170': 'U',\n    '\\u01D3': 'U',\n    '\\u0214': 'U',\n    '\\u0216': 'U',\n    '\\u01AF': 'U',\n    '\\u1EEA': 'U',\n    '\\u1EE8': 'U',\n    '\\u1EEE': 'U',\n    '\\u1EEC': 'U',\n    '\\u1EF0': 'U',\n    '\\u1EE4': 'U',\n    '\\u1E72': 'U',\n    '\\u0172': 'U',\n    '\\u1E76': 'U',\n    '\\u1E74': 'U',\n    '\\u0244': 'U',\n    '\\u24CB': 'V',\n    '\\uFF36': 'V',\n    '\\u1E7C': 'V',\n    '\\u1E7E': 'V',\n    '\\u01B2': 'V',\n    '\\uA75E': 'V',\n    '\\u0245': 'V',\n    '\\uA760': 'VY',\n    '\\u24CC': 'W',\n    '\\uFF37': 'W',\n    '\\u1E80': 'W',\n    '\\u1E82': 'W',\n    '\\u0174': 'W',\n    '\\u1E86': 'W',\n    '\\u1E84': 'W',\n    '\\u1E88': 'W',\n    '\\u2C72': 'W',\n    '\\u24CD': 'X',\n    '\\uFF38': 'X',\n    '\\u1E8A': 'X',\n    '\\u1E8C': 'X',\n    '\\u24CE': 'Y',\n    '\\uFF39': 'Y',\n    '\\u1EF2': 'Y',\n    '\\u00DD': 'Y',\n    '\\u0176': 'Y',\n    '\\u1EF8': 'Y',\n    '\\u0232': 'Y',\n    '\\u1E8E': 'Y',\n    '\\u0178': 'Y',\n    '\\u1EF6': 'Y',\n    '\\u1EF4': 'Y',\n    '\\u01B3': 'Y',\n    '\\u024E': 'Y',\n    '\\u1EFE': 'Y',\n    '\\u24CF': 'Z',\n    '\\uFF3A': 'Z',\n    '\\u0179': 'Z',\n    '\\u1E90': 'Z',\n    '\\u017B': 'Z',\n    '\\u017D': 'Z',\n    '\\u1E92': 'Z',\n    '\\u1E94': 'Z',\n    '\\u01B5': 'Z',\n    '\\u0224': 'Z',\n    '\\u2C7F': 'Z',\n    '\\u2C6B': 'Z',\n    '\\uA762': 'Z',\n    '\\u24D0': 'a',\n    '\\uFF41': 'a',\n    '\\u1E9A': 'a',\n    '\\u00E0': 'a',\n    '\\u00E1': 'a',\n    '\\u00E2': 'a',\n    '\\u1EA7': 'a',\n    '\\u1EA5': 'a',\n    '\\u1EAB': 'a',\n    '\\u1EA9': 'a',\n    '\\u00E3': 'a',\n    '\\u0101': 'a',\n    '\\u0103': 'a',\n    '\\u1EB1': 'a',\n    '\\u1EAF': 'a',\n    '\\u1EB5': 'a',\n    '\\u1EB3': 'a',\n    '\\u0227': 'a',\n    '\\u01E1': 'a',\n    '\\u00E4': 'a',\n    '\\u01DF': 'a',\n    '\\u1EA3': 'a',\n    '\\u00E5': 'a',\n    '\\u01FB': 'a',\n    '\\u01CE': 'a',\n    '\\u0201': 'a',\n    '\\u0203': 'a',\n    '\\u1EA1': 'a',\n    '\\u1EAD': 'a',\n    '\\u1EB7': 'a',\n    '\\u1E01': 'a',\n    '\\u0105': 'a',\n    '\\u2C65': 'a',\n    '\\u0250': 'a',\n    '\\uA733': 'aa',\n    '\\u00E6': 'ae',\n    '\\u01FD': 'ae',\n    '\\u01E3': 'ae',\n    '\\uA735': 'ao',\n    '\\uA737': 'au',\n    '\\uA739': 'av',\n    '\\uA73B': 'av',\n    '\\uA73D': 'ay',\n    '\\u24D1': 'b',\n    '\\uFF42': 'b',\n    '\\u1E03': 'b',\n    '\\u1E05': 'b',\n    '\\u1E07': 'b',\n    '\\u0180': 'b',\n    '\\u0183': 'b',\n    '\\u0253': 'b',\n    '\\u24D2': 'c',\n    '\\uFF43': 'c',\n    '\\u0107': 'c',\n    '\\u0109': 'c',\n    '\\u010B': 'c',\n    '\\u010D': 'c',\n    '\\u00E7': 'c',\n    '\\u1E09': 'c',\n    '\\u0188': 'c',\n    '\\u023C': 'c',\n    '\\uA73F': 'c',\n    '\\u2184': 'c',\n    '\\u24D3': 'd',\n    '\\uFF44': 'd',\n    '\\u1E0B': 'd',\n    '\\u010F': 'd',\n    '\\u1E0D': 'd',\n    '\\u1E11': 'd',\n    '\\u1E13': 'd',\n    '\\u1E0F': 'd',\n    '\\u0111': 'd',\n    '\\u018C': 'd',\n    '\\u0256': 'd',\n    '\\u0257': 'd',\n    '\\uA77A': 'd',\n    '\\u01F3': 'dz',\n    '\\u01C6': 'dz',\n    '\\u24D4': 'e',\n    '\\uFF45': 'e',\n    '\\u00E8': 'e',\n    '\\u00E9': 'e',\n    '\\u00EA': 'e',\n    '\\u1EC1': 'e',\n    '\\u1EBF': 'e',\n    '\\u1EC5': 'e',\n    '\\u1EC3': 'e',\n    '\\u1EBD': 'e',\n    '\\u0113': 'e',\n    '\\u1E15': 'e',\n    '\\u1E17': 'e',\n    '\\u0115': 'e',\n    '\\u0117': 'e',\n    '\\u00EB': 'e',\n    '\\u1EBB': 'e',\n    '\\u011B': 'e',\n    '\\u0205': 'e',\n    '\\u0207': 'e',\n    '\\u1EB9': 'e',\n    '\\u1EC7': 'e',\n    '\\u0229': 'e',\n    '\\u1E1D': 'e',\n    '\\u0119': 'e',\n    '\\u1E19': 'e',\n    '\\u1E1B': 'e',\n    '\\u0247': 'e',\n    '\\u025B': 'e',\n    '\\u01DD': 'e',\n    '\\u24D5': 'f',\n    '\\uFF46': 'f',\n    '\\u1E1F': 'f',\n    '\\u0192': 'f',\n    '\\uA77C': 'f',\n    '\\u24D6': 'g',\n    '\\uFF47': 'g',\n    '\\u01F5': 'g',\n    '\\u011D': 'g',\n    '\\u1E21': 'g',\n    '\\u011F': 'g',\n    '\\u0121': 'g',\n    '\\u01E7': 'g',\n    '\\u0123': 'g',\n    '\\u01E5': 'g',\n    '\\u0260': 'g',\n    '\\uA7A1': 'g',\n    '\\u1D79': 'g',\n    '\\uA77F': 'g',\n    '\\u24D7': 'h',\n    '\\uFF48': 'h',\n    '\\u0125': 'h',\n    '\\u1E23': 'h',\n    '\\u1E27': 'h',\n    '\\u021F': 'h',\n    '\\u1E25': 'h',\n    '\\u1E29': 'h',\n    '\\u1E2B': 'h',\n    '\\u1E96': 'h',\n    '\\u0127': 'h',\n    '\\u2C68': 'h',\n    '\\u2C76': 'h',\n    '\\u0265': 'h',\n    '\\u0195': 'hv',\n    '\\u24D8': 'i',\n    '\\uFF49': 'i',\n    '\\u00EC': 'i',\n    '\\u00ED': 'i',\n    '\\u00EE': 'i',\n    '\\u0129': 'i',\n    '\\u012B': 'i',\n    '\\u012D': 'i',\n    '\\u00EF': 'i',\n    '\\u1E2F': 'i',\n    '\\u1EC9': 'i',\n    '\\u01D0': 'i',\n    '\\u0209': 'i',\n    '\\u020B': 'i',\n    '\\u1ECB': 'i',\n    '\\u012F': 'i',\n    '\\u1E2D': 'i',\n    '\\u0268': 'i',\n    '\\u0131': 'i',\n    '\\u24D9': 'j',\n    '\\uFF4A': 'j',\n    '\\u0135': 'j',\n    '\\u01F0': 'j',\n    '\\u0249': 'j',\n    '\\u24DA': 'k',\n    '\\uFF4B': 'k',\n    '\\u1E31': 'k',\n    '\\u01E9': 'k',\n    '\\u1E33': 'k',\n    '\\u0137': 'k',\n    '\\u1E35': 'k',\n    '\\u0199': 'k',\n    '\\u2C6A': 'k',\n    '\\uA741': 'k',\n    '\\uA743': 'k',\n    '\\uA745': 'k',\n    '\\uA7A3': 'k',\n    '\\u24DB': 'l',\n    '\\uFF4C': 'l',\n    '\\u0140': 'l',\n    '\\u013A': 'l',\n    '\\u013E': 'l',\n    '\\u1E37': 'l',\n    '\\u1E39': 'l',\n    '\\u013C': 'l',\n    '\\u1E3D': 'l',\n    '\\u1E3B': 'l',\n    '\\u017F': 'l',\n    '\\u0142': 'l',\n    '\\u019A': 'l',\n    '\\u026B': 'l',\n    '\\u2C61': 'l',\n    '\\uA749': 'l',\n    '\\uA781': 'l',\n    '\\uA747': 'l',\n    '\\u01C9': 'lj',\n    '\\u24DC': 'm',\n    '\\uFF4D': 'm',\n    '\\u1E3F': 'm',\n    '\\u1E41': 'm',\n    '\\u1E43': 'm',\n    '\\u0271': 'm',\n    '\\u026F': 'm',\n    '\\u24DD': 'n',\n    '\\uFF4E': 'n',\n    '\\u01F9': 'n',\n    '\\u0144': 'n',\n    '\\u00F1': 'n',\n    '\\u1E45': 'n',\n    '\\u0148': 'n',\n    '\\u1E47': 'n',\n    '\\u0146': 'n',\n    '\\u1E4B': 'n',\n    '\\u1E49': 'n',\n    '\\u019E': 'n',\n    '\\u0272': 'n',\n    '\\u0149': 'n',\n    '\\uA791': 'n',\n    '\\uA7A5': 'n',\n    '\\u01CC': 'nj',\n    '\\u24DE': 'o',\n    '\\uFF4F': 'o',\n    '\\u00F2': 'o',\n    '\\u00F3': 'o',\n    '\\u00F4': 'o',\n    '\\u1ED3': 'o',\n    '\\u1ED1': 'o',\n    '\\u1ED7': 'o',\n    '\\u1ED5': 'o',\n    '\\u00F5': 'o',\n    '\\u1E4D': 'o',\n    '\\u022D': 'o',\n    '\\u1E4F': 'o',\n    '\\u014D': 'o',\n    '\\u1E51': 'o',\n    '\\u1E53': 'o',\n    '\\u014F': 'o',\n    '\\u022F': 'o',\n    '\\u0231': 'o',\n    '\\u00F6': 'o',\n    '\\u022B': 'o',\n    '\\u1ECF': 'o',\n    '\\u0151': 'o',\n    '\\u01D2': 'o',\n    '\\u020D': 'o',\n    '\\u020F': 'o',\n    '\\u01A1': 'o',\n    '\\u1EDD': 'o',\n    '\\u1EDB': 'o',\n    '\\u1EE1': 'o',\n    '\\u1EDF': 'o',\n    '\\u1EE3': 'o',\n    '\\u1ECD': 'o',\n    '\\u1ED9': 'o',\n    '\\u01EB': 'o',\n    '\\u01ED': 'o',\n    '\\u00F8': 'o',\n    '\\u01FF': 'o',\n    '\\u0254': 'o',\n    '\\uA74B': 'o',\n    '\\uA74D': 'o',\n    '\\u0275': 'o',\n    '\\u0153': 'oe',\n    '\\u01A3': 'oi',\n    '\\u0223': 'ou',\n    '\\uA74F': 'oo',\n    '\\u24DF': 'p',\n    '\\uFF50': 'p',\n    '\\u1E55': 'p',\n    '\\u1E57': 'p',\n    '\\u01A5': 'p',\n    '\\u1D7D': 'p',\n    '\\uA751': 'p',\n    '\\uA753': 'p',\n    '\\uA755': 'p',\n    '\\u24E0': 'q',\n    '\\uFF51': 'q',\n    '\\u024B': 'q',\n    '\\uA757': 'q',\n    '\\uA759': 'q',\n    '\\u24E1': 'r',\n    '\\uFF52': 'r',\n    '\\u0155': 'r',\n    '\\u1E59': 'r',\n    '\\u0159': 'r',\n    '\\u0211': 'r',\n    '\\u0213': 'r',\n    '\\u1E5B': 'r',\n    '\\u1E5D': 'r',\n    '\\u0157': 'r',\n    '\\u1E5F': 'r',\n    '\\u024D': 'r',\n    '\\u027D': 'r',\n    '\\uA75B': 'r',\n    '\\uA7A7': 'r',\n    '\\uA783': 'r',\n    '\\u24E2': 's',\n    '\\uFF53': 's',\n    '\\u00DF': 's',\n    '\\u015B': 's',\n    '\\u1E65': 's',\n    '\\u015D': 's',\n    '\\u1E61': 's',\n    '\\u0161': 's',\n    '\\u1E67': 's',\n    '\\u1E63': 's',\n    '\\u1E69': 's',\n    '\\u0219': 's',\n    '\\u015F': 's',\n    '\\u023F': 's',\n    '\\uA7A9': 's',\n    '\\uA785': 's',\n    '\\u1E9B': 's',\n    '\\u24E3': 't',\n    '\\uFF54': 't',\n    '\\u1E6B': 't',\n    '\\u1E97': 't',\n    '\\u0165': 't',\n    '\\u1E6D': 't',\n    '\\u021B': 't',\n    '\\u0163': 't',\n    '\\u1E71': 't',\n    '\\u1E6F': 't',\n    '\\u0167': 't',\n    '\\u01AD': 't',\n    '\\u0288': 't',\n    '\\u2C66': 't',\n    '\\uA787': 't',\n    '\\uA729': 'tz',\n    '\\u24E4': 'u',\n    '\\uFF55': 'u',\n    '\\u00F9': 'u',\n    '\\u00FA': 'u',\n    '\\u00FB': 'u',\n    '\\u0169': 'u',\n    '\\u1E79': 'u',\n    '\\u016B': 'u',\n    '\\u1E7B': 'u',\n    '\\u016D': 'u',\n    '\\u00FC': 'u',\n    '\\u01DC': 'u',\n    '\\u01D8': 'u',\n    '\\u01D6': 'u',\n    '\\u01DA': 'u',\n    '\\u1EE7': 'u',\n    '\\u016F': 'u',\n    '\\u0171': 'u',\n    '\\u01D4': 'u',\n    '\\u0215': 'u',\n    '\\u0217': 'u',\n    '\\u01B0': 'u',\n    '\\u1EEB': 'u',\n    '\\u1EE9': 'u',\n    '\\u1EEF': 'u',\n    '\\u1EED': 'u',\n    '\\u1EF1': 'u',\n    '\\u1EE5': 'u',\n    '\\u1E73': 'u',\n    '\\u0173': 'u',\n    '\\u1E77': 'u',\n    '\\u1E75': 'u',\n    '\\u0289': 'u',\n    '\\u24E5': 'v',\n    '\\uFF56': 'v',\n    '\\u1E7D': 'v',\n    '\\u1E7F': 'v',\n    '\\u028B': 'v',\n    '\\uA75F': 'v',\n    '\\u028C': 'v',\n    '\\uA761': 'vy',\n    '\\u24E6': 'w',\n    '\\uFF57': 'w',\n    '\\u1E81': 'w',\n    '\\u1E83': 'w',\n    '\\u0175': 'w',\n    '\\u1E87': 'w',\n    '\\u1E85': 'w',\n    '\\u1E98': 'w',\n    '\\u1E89': 'w',\n    '\\u2C73': 'w',\n    '\\u24E7': 'x',\n    '\\uFF58': 'x',\n    '\\u1E8B': 'x',\n    '\\u1E8D': 'x',\n    '\\u24E8': 'y',\n    '\\uFF59': 'y',\n    '\\u1EF3': 'y',\n    '\\u00FD': 'y',\n    '\\u0177': 'y',\n    '\\u1EF9': 'y',\n    '\\u0233': 'y',\n    '\\u1E8F': 'y',\n    '\\u00FF': 'y',\n    '\\u1EF7': 'y',\n    '\\u1E99': 'y',\n    '\\u1EF5': 'y',\n    '\\u01B4': 'y',\n    '\\u024F': 'y',\n    '\\u1EFF': 'y',\n    '\\u24E9': 'z',\n    '\\uFF5A': 'z',\n    '\\u017A': 'z',\n    '\\u1E91': 'z',\n    '\\u017C': 'z',\n    '\\u017E': 'z',\n    '\\u1E93': 'z',\n    '\\u1E95': 'z',\n    '\\u01B6': 'z',\n    '\\u0225': 'z',\n    '\\u0240': 'z',\n    '\\u2C6C': 'z',\n    '\\uA763': 'z',\n    '\\u0386': '\\u0391',\n    '\\u0388': '\\u0395',\n    '\\u0389': '\\u0397',\n    '\\u038A': '\\u0399',\n    '\\u03AA': '\\u0399',\n    '\\u038C': '\\u039F',\n    '\\u038E': '\\u03A5',\n    '\\u03AB': '\\u03A5',\n    '\\u038F': '\\u03A9',\n    '\\u03AC': '\\u03B1',\n    '\\u03AD': '\\u03B5',\n    '\\u03AE': '\\u03B7',\n    '\\u03AF': '\\u03B9',\n    '\\u03CA': '\\u03B9',\n    '\\u0390': '\\u03B9',\n    '\\u03CC': '\\u03BF',\n    '\\u03CD': '\\u03C5',\n    '\\u03CB': '\\u03C5',\n    '\\u03B0': '\\u03C5',\n    '\\u03CE': '\\u03C9',\n    '\\u03C2': '\\u03C3',\n    '\\u2019': '\\''\n  };\n\n  return diacritics;\n});\n\nS2.define('select2/data/base',[\n  '../utils'\n], function (Utils) {\n  function BaseAdapter ($element, options) {\n    BaseAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseAdapter, Utils.Observable);\n\n  BaseAdapter.prototype.current = function (callback) {\n    throw new Error('The `current` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.query = function (params, callback) {\n    throw new Error('The `query` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.bind = function (container, $container) {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.destroy = function () {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.generateResultId = function (container, data) {\n    var id = container.id + '-result-';\n\n    id += Utils.generateChars(4);\n\n    if (data.id != null) {\n      id += '-' + data.id.toString();\n    } else {\n      id += '-' + Utils.generateChars(4);\n    }\n    return id;\n  };\n\n  return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n  './base',\n  '../utils',\n  'jquery'\n], function (BaseAdapter, Utils, $) {\n  function SelectAdapter ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    SelectAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(SelectAdapter, BaseAdapter);\n\n  SelectAdapter.prototype.current = function (callback) {\n    var self = this;\n\n    var data = Array.prototype.map.call(\n      this.$element[0].querySelectorAll(':checked'),\n      function (selectedElement) {\n        return self.item($(selectedElement));\n      }\n    );\n\n    callback(data);\n  };\n\n  SelectAdapter.prototype.select = function (data) {\n    var self = this;\n\n    data.selected = true;\n\n    // If data.element is a DOM node, use it instead\n    if (\n      data.element != null && data.element.tagName.toLowerCase() === 'option'\n    ) {\n      data.element.selected = true;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    if (this.$element.prop('multiple')) {\n      this.current(function (currentData) {\n        var val = [];\n\n        data = [data];\n        data.push.apply(data, currentData);\n\n        for (var d = 0; d < data.length; d++) {\n          var id = data[d].id;\n\n          if (val.indexOf(id) === -1) {\n            val.push(id);\n          }\n        }\n\n        self.$element.val(val);\n        self.$element.trigger('input').trigger('change');\n      });\n    } else {\n      var val = data.id;\n\n      this.$element.val(val);\n      this.$element.trigger('input').trigger('change');\n    }\n  };\n\n  SelectAdapter.prototype.unselect = function (data) {\n    var self = this;\n\n    if (!this.$element.prop('multiple')) {\n      return;\n    }\n\n    data.selected = false;\n\n    if (\n      data.element != null &&\n      data.element.tagName.toLowerCase() === 'option'\n    ) {\n      data.element.selected = false;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    this.current(function (currentData) {\n      var val = [];\n\n      for (var d = 0; d < currentData.length; d++) {\n        var id = currentData[d].id;\n\n        if (id !== data.id && val.indexOf(id) === -1) {\n          val.push(id);\n        }\n      }\n\n      self.$element.val(val);\n\n      self.$element.trigger('input').trigger('change');\n    });\n  };\n\n  SelectAdapter.prototype.bind = function (container, $container) {\n    var self = this;\n\n    this.container = container;\n\n    container.on('select', function (params) {\n      self.select(params.data);\n    });\n\n    container.on('unselect', function (params) {\n      self.unselect(params.data);\n    });\n  };\n\n  SelectAdapter.prototype.destroy = function () {\n    // Remove anything added to child elements\n    this.$element.find('*').each(function () {\n      // Remove any custom data set by Select2\n      Utils.RemoveData(this);\n    });\n  };\n\n  SelectAdapter.prototype.query = function (params, callback) {\n    var data = [];\n    var self = this;\n\n    var $options = this.$element.children();\n\n    $options.each(function () {\n      if (\n        this.tagName.toLowerCase() !== 'option' &&\n        this.tagName.toLowerCase() !== 'optgroup'\n      ) {\n        return;\n      }\n\n      var $option = $(this);\n\n      var option = self.item($option);\n\n      var matches = self.matches(params, option);\n\n      if (matches !== null) {\n        data.push(matches);\n      }\n    });\n\n    callback({\n      results: data\n    });\n  };\n\n  SelectAdapter.prototype.addOptions = function ($options) {\n    this.$element.append($options);\n  };\n\n  SelectAdapter.prototype.option = function (data) {\n    var option;\n\n    if (data.children) {\n      option = document.createElement('optgroup');\n      option.label = data.text;\n    } else {\n      option = document.createElement('option');\n\n      if (option.textContent !== undefined) {\n        option.textContent = data.text;\n      } else {\n        option.innerText = data.text;\n      }\n    }\n\n    if (data.id !== undefined) {\n      option.value = data.id;\n    }\n\n    if (data.disabled) {\n      option.disabled = true;\n    }\n\n    if (data.selected) {\n      option.selected = true;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    var normalizedData = this._normalizeItem(data);\n    normalizedData.element = option;\n\n    // Override the option's data with the combined data\n    Utils.StoreData(option, 'data', normalizedData);\n\n    return $(option);\n  };\n\n  SelectAdapter.prototype.item = function ($option) {\n    var data = {};\n\n    data = Utils.GetData($option[0], 'data');\n\n    if (data != null) {\n      return data;\n    }\n\n    var option = $option[0];\n\n    if (option.tagName.toLowerCase() === 'option') {\n      data = {\n        id: $option.val(),\n        text: $option.text(),\n        disabled: $option.prop('disabled'),\n        selected: $option.prop('selected'),\n        title: $option.prop('title')\n      };\n    } else if (option.tagName.toLowerCase() === 'optgroup') {\n      data = {\n        text: $option.prop('label'),\n        children: [],\n        title: $option.prop('title')\n      };\n\n      var $children = $option.children('option');\n      var children = [];\n\n      for (var c = 0; c < $children.length; c++) {\n        var $child = $($children[c]);\n\n        var child = this.item($child);\n\n        children.push(child);\n      }\n\n      data.children = children;\n    }\n\n    data = this._normalizeItem(data);\n    data.element = $option[0];\n\n    Utils.StoreData($option[0], 'data', data);\n\n    return data;\n  };\n\n  SelectAdapter.prototype._normalizeItem = function (item) {\n    if (item !== Object(item)) {\n      item = {\n        id: item,\n        text: item\n      };\n    }\n\n    item = $.extend({}, {\n      text: ''\n    }, item);\n\n    var defaults = {\n      selected: false,\n      disabled: false\n    };\n\n    if (item.id != null) {\n      item.id = item.id.toString();\n    }\n\n    if (item.text != null) {\n      item.text = item.text.toString();\n    }\n\n    if (item._resultId == null && item.id && this.container != null) {\n      item._resultId = this.generateResultId(this.container, item);\n    }\n\n    return $.extend({}, defaults, item);\n  };\n\n  SelectAdapter.prototype.matches = function (params, data) {\n    var matcher = this.options.get('matcher');\n\n    return matcher(params, data);\n  };\n\n  return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n  './select',\n  '../utils',\n  'jquery'\n], function (SelectAdapter, Utils, $) {\n  function ArrayAdapter ($element, options) {\n    this._dataToConvert = options.get('data') || [];\n\n    ArrayAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(ArrayAdapter, SelectAdapter);\n\n  ArrayAdapter.prototype.bind = function (container, $container) {\n    ArrayAdapter.__super__.bind.call(this, container, $container);\n\n    this.addOptions(this.convertToOptions(this._dataToConvert));\n  };\n\n  ArrayAdapter.prototype.select = function (data) {\n    var $option = this.$element.find('option').filter(function (i, elm) {\n      return elm.value == data.id.toString();\n    });\n\n    if ($option.length === 0) {\n      $option = this.option(data);\n\n      this.addOptions($option);\n    }\n\n    ArrayAdapter.__super__.select.call(this, data);\n  };\n\n  ArrayAdapter.prototype.convertToOptions = function (data) {\n    var self = this;\n\n    var $existing = this.$element.find('option');\n    var existingIds = $existing.map(function () {\n      return self.item($(this)).id;\n    }).get();\n\n    var $options = [];\n\n    // Filter out all items except for the one passed in the argument\n    function onlyItem (item) {\n      return function () {\n        return $(this).val() == item.id;\n      };\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      var item = this._normalizeItem(data[d]);\n\n      // Skip items which were pre-loaded, only merge the data\n      if (existingIds.indexOf(item.id) >= 0) {\n        var $existingOption = $existing.filter(onlyItem(item));\n\n        var existingData = this.item($existingOption);\n        var newData = $.extend(true, {}, item, existingData);\n\n        var $newOption = this.option(newData);\n\n        $existingOption.replaceWith($newOption);\n\n        continue;\n      }\n\n      var $option = this.option(item);\n\n      if (item.children) {\n        var $children = this.convertToOptions(item.children);\n\n        $option.append($children);\n      }\n\n      $options.push($option);\n    }\n\n    return $options;\n  };\n\n  return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n  './array',\n  '../utils',\n  'jquery'\n], function (ArrayAdapter, Utils, $) {\n  function AjaxAdapter ($element, options) {\n    this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n    if (this.ajaxOptions.processResults != null) {\n      this.processResults = this.ajaxOptions.processResults;\n    }\n\n    AjaxAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n  AjaxAdapter.prototype._applyDefaults = function (options) {\n    var defaults = {\n      data: function (params) {\n        return $.extend({}, params, {\n          q: params.term\n        });\n      },\n      transport: function (params, success, failure) {\n        var $request = $.ajax(params);\n\n        $request.then(success);\n        $request.fail(failure);\n\n        return $request;\n      }\n    };\n\n    return $.extend({}, defaults, options, true);\n  };\n\n  AjaxAdapter.prototype.processResults = function (results) {\n    return results;\n  };\n\n  AjaxAdapter.prototype.query = function (params, callback) {\n    var matches = [];\n    var self = this;\n\n    if (this._request != null) {\n      // JSONP requests cannot always be aborted\n      if ($.isFunction(this._request.abort)) {\n        this._request.abort();\n      }\n\n      this._request = null;\n    }\n\n    var options = $.extend({\n      type: 'GET'\n    }, this.ajaxOptions);\n\n    if (typeof options.url === 'function') {\n      options.url = options.url.call(this.$element, params);\n    }\n\n    if (typeof options.data === 'function') {\n      options.data = options.data.call(this.$element, params);\n    }\n\n    function request () {\n      var $request = options.transport(options, function (data) {\n        var results = self.processResults(data, params);\n\n        if (self.options.get('debug') && window.console && console.error) {\n          // Check to make sure that the response included a `results` key.\n          if (!results || !results.results || !Array.isArray(results.results)) {\n            console.error(\n              'Select2: The AJAX results did not return an array in the ' +\n              '`results` key of the response.'\n            );\n          }\n        }\n\n        callback(results);\n      }, function () {\n        // Attempt to detect if a request was aborted\n        // Only works if the transport exposes a status property\n        if ('status' in $request &&\n            ($request.status === 0 || $request.status === '0')) {\n          return;\n        }\n\n        self.trigger('results:message', {\n          message: 'errorLoading'\n        });\n      });\n\n      self._request = $request;\n    }\n\n    if (this.ajaxOptions.delay && params.term != null) {\n      if (this._queryTimeout) {\n        window.clearTimeout(this._queryTimeout);\n      }\n\n      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n    } else {\n      request();\n    }\n  };\n\n  return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n  'jquery'\n], function ($) {\n  function Tags (decorated, $element, options) {\n    var tags = options.get('tags');\n\n    var createTag = options.get('createTag');\n\n    if (createTag !== undefined) {\n      this.createTag = createTag;\n    }\n\n    var insertTag = options.get('insertTag');\n\n    if (insertTag !== undefined) {\n        this.insertTag = insertTag;\n    }\n\n    decorated.call(this, $element, options);\n\n    if (Array.isArray(tags)) {\n      for (var t = 0; t < tags.length; t++) {\n        var tag = tags[t];\n        var item = this._normalizeItem(tag);\n\n        var $option = this.option(item);\n\n        this.$element.append($option);\n      }\n    }\n  }\n\n  Tags.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    this._removeOldTags();\n\n    if (params.term == null || params.page != null) {\n      decorated.call(this, params, callback);\n      return;\n    }\n\n    function wrapper (obj, child) {\n      var data = obj.results;\n\n      for (var i = 0; i < data.length; i++) {\n        var option = data[i];\n\n        var checkChildren = (\n          option.children != null &&\n          !wrapper({\n            results: option.children\n          }, true)\n        );\n\n        var optionText = (option.text || '').toUpperCase();\n        var paramsTerm = (params.term || '').toUpperCase();\n\n        var checkText = optionText === paramsTerm;\n\n        if (checkText || checkChildren) {\n          if (child) {\n            return false;\n          }\n\n          obj.data = data;\n          callback(obj);\n\n          return;\n        }\n      }\n\n      if (child) {\n        return true;\n      }\n\n      var tag = self.createTag(params);\n\n      if (tag != null) {\n        var $option = self.option(tag);\n        $option.attr('data-select2-tag', true);\n\n        self.addOptions([$option]);\n\n        self.insertTag(data, tag);\n      }\n\n      obj.results = data;\n\n      callback(obj);\n    }\n\n    decorated.call(this, params, wrapper);\n  };\n\n  Tags.prototype.createTag = function (decorated, params) {\n    if (params.term == null) {\n      return null;\n    }\n\n    var term = params.term.trim();\n\n    if (term === '') {\n      return null;\n    }\n\n    return {\n      id: term,\n      text: term\n    };\n  };\n\n  Tags.prototype.insertTag = function (_, data, tag) {\n    data.unshift(tag);\n  };\n\n  Tags.prototype._removeOldTags = function (_) {\n    var $options = this.$element.find('option[data-select2-tag]');\n\n    $options.each(function () {\n      if (this.selected) {\n        return;\n      }\n\n      $(this).remove();\n    });\n  };\n\n  return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n  'jquery'\n], function ($) {\n  function Tokenizer (decorated, $element, options) {\n    var tokenizer = options.get('tokenizer');\n\n    if (tokenizer !== undefined) {\n      this.tokenizer = tokenizer;\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Tokenizer.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    this.$search =  container.dropdown.$search || container.selection.$search ||\n      $container.find('.select2-search__field');\n  };\n\n  Tokenizer.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    function createAndSelect (data) {\n      // Normalize the data object so we can use it for checks\n      var item = self._normalizeItem(data);\n\n      // Check if the data object already exists as a tag\n      // Select it if it doesn't\n      var $existingOptions = self.$element.find('option').filter(function () {\n        return $(this).val() === item.id;\n      });\n\n      // If an existing option wasn't found for it, create the option\n      if (!$existingOptions.length) {\n        var $option = self.option(item);\n        $option.attr('data-select2-tag', true);\n\n        self._removeOldTags();\n        self.addOptions([$option]);\n      }\n\n      // Select the item, now that we know there is an option for it\n      select(item);\n    }\n\n    function select (data) {\n      self.trigger('select', {\n        data: data\n      });\n    }\n\n    params.term = params.term || '';\n\n    var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n    if (tokenData.term !== params.term) {\n      // Replace the search term if we have the search box\n      if (this.$search.length) {\n        this.$search.val(tokenData.term);\n        this.$search.trigger('focus');\n      }\n\n      params.term = tokenData.term;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n    var separators = options.get('tokenSeparators') || [];\n    var term = params.term;\n    var i = 0;\n\n    var createTag = this.createTag || function (params) {\n      return {\n        id: params.term,\n        text: params.term\n      };\n    };\n\n    while (i < term.length) {\n      var termChar = term[i];\n\n      if (separators.indexOf(termChar) === -1) {\n        i++;\n\n        continue;\n      }\n\n      var part = term.substr(0, i);\n      var partParams = $.extend({}, params, {\n        term: part\n      });\n\n      var data = createTag(partParams);\n\n      if (data == null) {\n        i++;\n        continue;\n      }\n\n      callback(data);\n\n      // Reset the term to not include the tokenized portion\n      term = term.substr(i + 1) || '';\n      i = 0;\n    }\n\n    return {\n      term: term\n    };\n  };\n\n  return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n  function MinimumInputLength (decorated, $e, options) {\n    this.minimumInputLength = options.get('minimumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MinimumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (params.term.length < this.minimumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooShort',\n        args: {\n          minimum: this.minimumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n  function MaximumInputLength (decorated, $e, options) {\n    this.maximumInputLength = options.get('maximumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (this.maximumInputLength > 0 &&\n        params.term.length > this.maximumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooLong',\n        args: {\n          maximum: this.maximumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n  function MaximumSelectionLength (decorated, $e, options) {\n    this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumSelectionLength.prototype.bind =\n    function (decorated, container, $container) {\n      var self = this;\n\n      decorated.call(this, container, $container);\n\n      container.on('select', function () {\n        self._checkIfMaximumSelected();\n      });\n  };\n\n  MaximumSelectionLength.prototype.query =\n    function (decorated, params, callback) {\n      var self = this;\n\n      this._checkIfMaximumSelected(function () {\n        decorated.call(self, params, callback);\n      });\n  };\n\n  MaximumSelectionLength.prototype._checkIfMaximumSelected =\n    function (_, successCallback) {\n      var self = this;\n\n      this.current(function (currentData) {\n        var count = currentData != null ? currentData.length : 0;\n        if (self.maximumSelectionLength > 0 &&\n          count >= self.maximumSelectionLength) {\n          self.trigger('results:message', {\n            message: 'maximumSelected',\n            args: {\n              maximum: self.maximumSelectionLength\n            }\n          });\n          return;\n        }\n\n        if (successCallback) {\n          successCallback();\n        }\n      });\n  };\n\n  return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Dropdown ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    Dropdown.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Dropdown, Utils.Observable);\n\n  Dropdown.prototype.render = function () {\n    var $dropdown = $(\n      '<span class=\"select2-dropdown\">' +\n        '<span class=\"select2-results\"></span>' +\n      '</span>'\n    );\n\n    $dropdown.attr('dir', this.options.get('dir'));\n\n    this.$dropdown = $dropdown;\n\n    return $dropdown;\n  };\n\n  Dropdown.prototype.bind = function () {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.position = function ($dropdown, $container) {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.destroy = function () {\n    // Remove the dropdown from the DOM\n    this.$dropdown.remove();\n  };\n\n  return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n  'jquery'\n], function ($) {\n  function Search () { }\n\n  Search.prototype.render = function (decorated) {\n    var $rendered = decorated.call(this);\n\n    var $search = $(\n      '<span class=\"select2-search select2-search--dropdown\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    this.$search.prop('autocomplete', this.options.get('autocomplete'));\n\n    $rendered.prepend($search);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    decorated.call(this, container, $container);\n\n    this.$search.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n    });\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$search.on('input', function (evt) {\n      // Unbind the duplicated `keyup` event\n      $(this).off('keyup');\n    });\n\n    this.$search.on('keyup input', function (evt) {\n      self.handleSearch(evt);\n    });\n\n    container.on('open', function () {\n      self.$search.attr('tabindex', 0);\n      self.$search.attr('aria-controls', resultsId);\n\n      self.$search.trigger('focus');\n\n      window.setTimeout(function () {\n        self.$search.trigger('focus');\n      }, 0);\n    });\n\n    container.on('close', function () {\n      self.$search.attr('tabindex', -1);\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n\n      self.$search.val('');\n      self.$search.trigger('blur');\n    });\n\n    container.on('focus', function () {\n      if (!container.isOpen()) {\n        self.$search.trigger('focus');\n      }\n    });\n\n    container.on('results:all', function (params) {\n      if (params.query.term == null || params.query.term === '') {\n        var showSearch = self.showSearch(params);\n\n        if (showSearch) {\n          self.$searchContainer[0].classList.remove('select2-search--hide');\n        } else {\n          self.$searchContainer[0].classList.add('select2-search--hide');\n        }\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n  };\n\n  Search.prototype.handleSearch = function (evt) {\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.showSearch = function (_, params) {\n    return true;\n  };\n\n  return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n  function HidePlaceholder (decorated, $element, options, dataAdapter) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  HidePlaceholder.prototype.append = function (decorated, data) {\n    data.results = this.removePlaceholder(data.results);\n\n    decorated.call(this, data);\n  };\n\n  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n    var modifiedData = data.slice(0);\n\n    for (var d = data.length - 1; d >= 0; d--) {\n      var item = data[d];\n\n      if (this.placeholder.id === item.id) {\n        modifiedData.splice(d, 1);\n      }\n    }\n\n    return modifiedData;\n  };\n\n  return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n  'jquery'\n], function ($) {\n  function InfiniteScroll (decorated, $element, options, dataAdapter) {\n    this.lastParams = {};\n\n    decorated.call(this, $element, options, dataAdapter);\n\n    this.$loadingMore = this.createLoadingMore();\n    this.loading = false;\n  }\n\n  InfiniteScroll.prototype.append = function (decorated, data) {\n    this.$loadingMore.remove();\n    this.loading = false;\n\n    decorated.call(this, data);\n\n    if (this.showLoadingMore(data)) {\n      this.$results.append(this.$loadingMore);\n      this.loadMoreIfNeeded();\n    }\n  };\n\n  InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('query', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    container.on('query:append', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n  };\n\n  InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n    var isLoadMoreVisible = $.contains(\n      document.documentElement,\n      this.$loadingMore[0]\n    );\n\n    if (this.loading || !isLoadMoreVisible) {\n      return;\n    }\n\n    var currentOffset = this.$results.offset().top +\n      this.$results.outerHeight(false);\n    var loadingMoreOffset = this.$loadingMore.offset().top +\n      this.$loadingMore.outerHeight(false);\n\n    if (currentOffset + 50 >= loadingMoreOffset) {\n      this.loadMore();\n    }\n  };\n\n  InfiniteScroll.prototype.loadMore = function () {\n    this.loading = true;\n\n    var params = $.extend({}, {page: 1}, this.lastParams);\n\n    params.page++;\n\n    this.trigger('query:append', params);\n  };\n\n  InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n    return data.pagination && data.pagination.more;\n  };\n\n  InfiniteScroll.prototype.createLoadingMore = function () {\n    var $option = $(\n      '<li ' +\n      'class=\"select2-results__option select2-results__option--load-more\"' +\n      'role=\"option\" aria-disabled=\"true\"></li>'\n    );\n\n    var message = this.options.get('translations').get('loadingMore');\n\n    $option.html(message(this.lastParams));\n\n    return $option;\n  };\n\n  return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function AttachBody (decorated, $element, options) {\n    this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n    decorated.call(this, $element, options);\n  }\n\n  AttachBody.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self._showDropdown();\n      self._attachPositioningHandler(container);\n\n      // Must bind after the results handlers to ensure correct sizing\n      self._bindContainerResultHandlers(container);\n    });\n\n    container.on('close', function () {\n      self._hideDropdown();\n      self._detachPositioningHandler(container);\n    });\n\n    this.$dropdownContainer.on('mousedown', function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  AttachBody.prototype.destroy = function (decorated) {\n    decorated.call(this);\n\n    this.$dropdownContainer.remove();\n  };\n\n  AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n    // Clone all of the container classes\n    $dropdown.attr('class', $container.attr('class'));\n\n    $dropdown[0].classList.remove('select2');\n    $dropdown[0].classList.add('select2-container--open');\n\n    $dropdown.css({\n      position: 'absolute',\n      top: -999999\n    });\n\n    this.$container = $container;\n  };\n\n  AttachBody.prototype.render = function (decorated) {\n    var $container = $('<span></span>');\n\n    var $dropdown = decorated.call(this);\n    $container.append($dropdown);\n\n    this.$dropdownContainer = $container;\n\n    return $container;\n  };\n\n  AttachBody.prototype._hideDropdown = function (decorated) {\n    this.$dropdownContainer.detach();\n  };\n\n  AttachBody.prototype._bindContainerResultHandlers =\n      function (decorated, container) {\n\n    // These should only be bound once\n    if (this._containerResultsHandlersBound) {\n      return;\n    }\n\n    var self = this;\n\n    container.on('results:all', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:append', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:message', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('select', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('unselect', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    this._containerResultsHandlersBound = true;\n  };\n\n  AttachBody.prototype._attachPositioningHandler =\n      function (decorated, container) {\n    var self = this;\n\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.each(function () {\n      Utils.StoreData(this, 'select2-scroll-position', {\n        x: $(this).scrollLeft(),\n        y: $(this).scrollTop()\n      });\n    });\n\n    $watchers.on(scrollEvent, function (ev) {\n      var position = Utils.GetData(this, 'select2-scroll-position');\n      $(this).scrollTop(position.y);\n    });\n\n    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n      function (e) {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n  };\n\n  AttachBody.prototype._detachPositioningHandler =\n      function (decorated, container) {\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.off(scrollEvent);\n\n    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n  };\n\n  AttachBody.prototype._positionDropdown = function () {\n    var $window = $(window);\n\n    var isCurrentlyAbove = this.$dropdown[0].classList\n      .contains('select2-dropdown--above');\n    var isCurrentlyBelow = this.$dropdown[0].classList\n      .contains('select2-dropdown--below');\n\n    var newDirection = null;\n\n    var offset = this.$container.offset();\n\n    offset.bottom = offset.top + this.$container.outerHeight(false);\n\n    var container = {\n      height: this.$container.outerHeight(false)\n    };\n\n    container.top = offset.top;\n    container.bottom = offset.top + container.height;\n\n    var dropdown = {\n      height: this.$dropdown.outerHeight(false)\n    };\n\n    var viewport = {\n      top: $window.scrollTop(),\n      bottom: $window.scrollTop() + $window.height()\n    };\n\n    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n    var css = {\n      left: offset.left,\n      top: container.bottom\n    };\n\n    // Determine what the parent element is to use for calculating the offset\n    var $offsetParent = this.$dropdownParent;\n\n    // For statically positioned elements, we need to get the element\n    // that is determining the offset\n    if ($offsetParent.css('position') === 'static') {\n      $offsetParent = $offsetParent.offsetParent();\n    }\n\n    var parentOffset = {\n      top: 0,\n      left: 0\n    };\n\n    if (\n      $.contains(document.body, $offsetParent[0]) ||\n      $offsetParent[0].isConnected\n      ) {\n      parentOffset = $offsetParent.offset();\n    }\n\n    css.top -= parentOffset.top;\n    css.left -= parentOffset.left;\n\n    if (!isCurrentlyAbove && !isCurrentlyBelow) {\n      newDirection = 'below';\n    }\n\n    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n      newDirection = 'above';\n    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n      newDirection = 'below';\n    }\n\n    if (newDirection == 'above' ||\n      (isCurrentlyAbove && newDirection !== 'below')) {\n      css.top = container.top - parentOffset.top - dropdown.height;\n    }\n\n    if (newDirection != null) {\n      this.$dropdown[0].classList.remove('select2-dropdown--below');\n      this.$dropdown[0].classList.remove('select2-dropdown--above');\n      this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n\n      this.$container[0].classList.remove('select2-container--below');\n      this.$container[0].classList.remove('select2-container--above');\n      this.$container[0].classList.add('select2-container--' + newDirection);\n    }\n\n    this.$dropdownContainer.css(css);\n  };\n\n  AttachBody.prototype._resizeDropdown = function () {\n    var css = {\n      width: this.$container.outerWidth(false) + 'px'\n    };\n\n    if (this.options.get('dropdownAutoWidth')) {\n      css.minWidth = css.width;\n      css.position = 'relative';\n      css.width = 'auto';\n    }\n\n    this.$dropdown.css(css);\n  };\n\n  AttachBody.prototype._showDropdown = function (decorated) {\n    this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n    this._positionDropdown();\n    this._resizeDropdown();\n  };\n\n  return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n  function countResults (data) {\n    var count = 0;\n\n    for (var d = 0; d < data.length; d++) {\n      var item = data[d];\n\n      if (item.children) {\n        count += countResults(item.children);\n      } else {\n        count++;\n      }\n    }\n\n    return count;\n  }\n\n  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n    this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n    if (this.minimumResultsForSearch < 0) {\n      this.minimumResultsForSearch = Infinity;\n    }\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n    if (countResults(params.data.results) < this.minimumResultsForSearch) {\n      return false;\n    }\n\n    return decorated.call(this, params);\n  };\n\n  return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n  '../utils'\n], function (Utils) {\n  function SelectOnClose () { }\n\n  SelectOnClose.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('close', function (params) {\n      self._handleSelectOnClose(params);\n    });\n  };\n\n  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n    if (params && params.originalSelect2Event != null) {\n      var event = params.originalSelect2Event;\n\n      // Don't select an item if the close event was triggered from a select or\n      // unselect event\n      if (event._type === 'select' || event._type === 'unselect') {\n        return;\n      }\n    }\n\n    var $highlightedResults = this.getHighlightedResults();\n\n    // Only select highlighted results\n    if ($highlightedResults.length < 1) {\n      return;\n    }\n\n    var data = Utils.GetData($highlightedResults[0], 'data');\n\n    // Don't re-select already selected resulte\n    if (\n      (data.element != null && data.element.selected) ||\n      (data.element == null && data.selected)\n    ) {\n      return;\n    }\n\n    this.trigger('select', {\n        data: data\n    });\n  };\n\n  return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n  function CloseOnSelect () { }\n\n  CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('select', function (evt) {\n      self._selectTriggered(evt);\n    });\n\n    container.on('unselect', function (evt) {\n      self._selectTriggered(evt);\n    });\n  };\n\n  CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n    var originalEvent = evt.originalEvent;\n\n    // Don't close if the control key is being held\n    if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n      return;\n    }\n\n    this.trigger('close', {\n      originalEvent: originalEvent,\n      originalSelect2Event: evt\n    });\n  };\n\n  return CloseOnSelect;\n});\n\nS2.define('select2/dropdown/dropdownCss',[\n  '../utils'\n], function (Utils) {\n  function DropdownCSS () { }\n\n  DropdownCSS.prototype.render = function (decorated) {\n    var $dropdown = decorated.call(this);\n\n    var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n    if (dropdownCssClass.indexOf(':all:') !== -1) {\n      dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n      Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n    }\n\n    $dropdown.addClass(dropdownCssClass);\n\n    return $dropdown;\n  };\n\n  return DropdownCSS;\n});\n\nS2.define('select2/i18n/en',[],function () {\n  // English\n  return {\n    errorLoading: function () {\n      return 'The results could not be loaded.';\n    },\n    inputTooLong: function (args) {\n      var overChars = args.input.length - args.maximum;\n\n      var message = 'Please delete ' + overChars + ' character';\n\n      if (overChars != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    inputTooShort: function (args) {\n      var remainingChars = args.minimum - args.input.length;\n\n      var message = 'Please enter ' + remainingChars + ' or more characters';\n\n      return message;\n    },\n    loadingMore: function () {\n      return 'Loading more results…';\n    },\n    maximumSelected: function (args) {\n      var message = 'You can only select ' + args.maximum + ' item';\n\n      if (args.maximum != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    noResults: function () {\n      return 'No results found';\n    },\n    searching: function () {\n      return 'Searching…';\n    },\n    removeAllItems: function () {\n      return 'Remove all items';\n    },\n    removeItem: function () {\n      return 'Remove item';\n    }\n  };\n});\n\nS2.define('select2/defaults',[\n  'jquery',\n\n  './results',\n\n  './selection/single',\n  './selection/multiple',\n  './selection/placeholder',\n  './selection/allowClear',\n  './selection/search',\n  './selection/selectionCss',\n  './selection/eventRelay',\n\n  './utils',\n  './translation',\n  './diacritics',\n\n  './data/select',\n  './data/array',\n  './data/ajax',\n  './data/tags',\n  './data/tokenizer',\n  './data/minimumInputLength',\n  './data/maximumInputLength',\n  './data/maximumSelectionLength',\n\n  './dropdown',\n  './dropdown/search',\n  './dropdown/hidePlaceholder',\n  './dropdown/infiniteScroll',\n  './dropdown/attachBody',\n  './dropdown/minimumResultsForSearch',\n  './dropdown/selectOnClose',\n  './dropdown/closeOnSelect',\n  './dropdown/dropdownCss',\n\n  './i18n/en'\n], function ($,\n\n             ResultsList,\n\n             SingleSelection, MultipleSelection, Placeholder, AllowClear,\n             SelectionSearch, SelectionCSS, EventRelay,\n\n             Utils, Translation, DIACRITICS,\n\n             SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n             DropdownCSS,\n\n             EnglishTranslation) {\n  function Defaults () {\n    this.reset();\n  }\n\n  Defaults.prototype.apply = function (options) {\n    options = $.extend(true, {}, this.defaults, options);\n\n    if (options.dataAdapter == null) {\n      if (options.ajax != null) {\n        options.dataAdapter = AjaxData;\n      } else if (options.data != null) {\n        options.dataAdapter = ArrayData;\n      } else {\n        options.dataAdapter = SelectData;\n      }\n\n      if (options.minimumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MinimumInputLength\n        );\n      }\n\n      if (options.maximumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumInputLength\n        );\n      }\n\n      if (options.maximumSelectionLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumSelectionLength\n        );\n      }\n\n      if (options.tags) {\n        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n      }\n\n      if (options.tokenSeparators != null || options.tokenizer != null) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Tokenizer\n        );\n      }\n    }\n\n    if (options.resultsAdapter == null) {\n      options.resultsAdapter = ResultsList;\n\n      if (options.ajax != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          InfiniteScroll\n        );\n      }\n\n      if (options.placeholder != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          HidePlaceholder\n        );\n      }\n\n      if (options.selectOnClose) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          SelectOnClose\n        );\n      }\n    }\n\n    if (options.dropdownAdapter == null) {\n      if (options.multiple) {\n        options.dropdownAdapter = Dropdown;\n      } else {\n        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n        options.dropdownAdapter = SearchableDropdown;\n      }\n\n      if (options.minimumResultsForSearch !== 0) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          MinimumResultsForSearch\n        );\n      }\n\n      if (options.closeOnSelect) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          CloseOnSelect\n        );\n      }\n\n      if (options.dropdownCssClass != null) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          DropdownCSS\n        );\n      }\n\n      options.dropdownAdapter = Utils.Decorate(\n        options.dropdownAdapter,\n        AttachBody\n      );\n    }\n\n    if (options.selectionAdapter == null) {\n      if (options.multiple) {\n        options.selectionAdapter = MultipleSelection;\n      } else {\n        options.selectionAdapter = SingleSelection;\n      }\n\n      // Add the placeholder mixin if a placeholder was specified\n      if (options.placeholder != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          Placeholder\n        );\n      }\n\n      if (options.allowClear) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          AllowClear\n        );\n      }\n\n      if (options.multiple) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionSearch\n        );\n      }\n\n      if (options.selectionCssClass != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionCSS\n        );\n      }\n\n      options.selectionAdapter = Utils.Decorate(\n        options.selectionAdapter,\n        EventRelay\n      );\n    }\n\n    // If the defaults were not previously applied from an element, it is\n    // possible for the language option to have not been resolved\n    options.language = this._resolveLanguage(options.language);\n\n    // Always fall back to English since it will always be complete\n    options.language.push('en');\n\n    var uniqueLanguages = [];\n\n    for (var l = 0; l < options.language.length; l++) {\n      var language = options.language[l];\n\n      if (uniqueLanguages.indexOf(language) === -1) {\n        uniqueLanguages.push(language);\n      }\n    }\n\n    options.language = uniqueLanguages;\n\n    options.translations = this._processTranslations(\n      options.language,\n      options.debug\n    );\n\n    return options;\n  };\n\n  Defaults.prototype.reset = function () {\n    function stripDiacritics (text) {\n      // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n      function match(a) {\n        return DIACRITICS[a] || a;\n      }\n\n      return text.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function matcher (params, data) {\n      // Always return the object if there is nothing to compare\n      if (params.term == null || params.term.trim() === '') {\n        return data;\n      }\n\n      // Do a recursive check for options with children\n      if (data.children && data.children.length > 0) {\n        // Clone the data object if there are children\n        // This is required as we modify the object to remove any non-matches\n        var match = $.extend(true, {}, data);\n\n        // Check each child of the option\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          var matches = matcher(params, child);\n\n          // If there wasn't a match, remove the object in the array\n          if (matches == null) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        // If any children matched, return the new object\n        if (match.children.length > 0) {\n          return match;\n        }\n\n        // If there were no matching children, check just the plain object\n        return matcher(params, match);\n      }\n\n      var original = stripDiacritics(data.text).toUpperCase();\n      var term = stripDiacritics(params.term).toUpperCase();\n\n      // Check if the text contains the term\n      if (original.indexOf(term) > -1) {\n        return data;\n      }\n\n      // If it doesn't contain the term, don't return anything\n      return null;\n    }\n\n    this.defaults = {\n      amdLanguageBase: './i18n/',\n      autocomplete: 'off',\n      closeOnSelect: true,\n      debug: false,\n      dropdownAutoWidth: false,\n      escapeMarkup: Utils.escapeMarkup,\n      language: {},\n      matcher: matcher,\n      minimumInputLength: 0,\n      maximumInputLength: 0,\n      maximumSelectionLength: 0,\n      minimumResultsForSearch: 0,\n      selectOnClose: false,\n      scrollAfterSelect: false,\n      sorter: function (data) {\n        return data;\n      },\n      templateResult: function (result) {\n        return result.text;\n      },\n      templateSelection: function (selection) {\n        return selection.text;\n      },\n      theme: 'default',\n      width: 'resolve'\n    };\n  };\n\n  Defaults.prototype.applyFromElement = function (options, $element) {\n    var optionLanguage = options.language;\n    var defaultLanguage = this.defaults.language;\n    var elementLanguage = $element.prop('lang');\n    var parentLanguage = $element.closest('[lang]').prop('lang');\n\n    var languages = Array.prototype.concat.call(\n      this._resolveLanguage(elementLanguage),\n      this._resolveLanguage(optionLanguage),\n      this._resolveLanguage(defaultLanguage),\n      this._resolveLanguage(parentLanguage)\n    );\n\n    options.language = languages;\n\n    return options;\n  };\n\n  Defaults.prototype._resolveLanguage = function (language) {\n    if (!language) {\n      return [];\n    }\n\n    if ($.isEmptyObject(language)) {\n      return [];\n    }\n\n    if ($.isPlainObject(language)) {\n      return [language];\n    }\n\n    var languages;\n\n    if (!Array.isArray(language)) {\n      languages = [language];\n    } else {\n      languages = language;\n    }\n\n    var resolvedLanguages = [];\n\n    for (var l = 0; l < languages.length; l++) {\n      resolvedLanguages.push(languages[l]);\n\n      if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n        // Extract the region information if it is included\n        var languageParts = languages[l].split('-');\n        var baseLanguage = languageParts[0];\n\n        resolvedLanguages.push(baseLanguage);\n      }\n    }\n\n    return resolvedLanguages;\n  };\n\n  Defaults.prototype._processTranslations = function (languages, debug) {\n    var translations = new Translation();\n\n    for (var l = 0; l < languages.length; l++) {\n      var languageData = new Translation();\n\n      var language = languages[l];\n\n      if (typeof language === 'string') {\n        try {\n          // Try to load it with the original name\n          languageData = Translation.loadPath(language);\n        } catch (e) {\n          try {\n            // If we couldn't load it, check if it wasn't the full path\n            language = this.defaults.amdLanguageBase + language;\n            languageData = Translation.loadPath(language);\n          } catch (ex) {\n            // The translation could not be loaded at all. Sometimes this is\n            // because of a configuration problem, other times this can be\n            // because of how Select2 helps load all possible translation files\n            if (debug && window.console && console.warn) {\n              console.warn(\n                'Select2: The language file for \"' + language + '\" could ' +\n                'not be automatically loaded. A fallback will be used instead.'\n              );\n            }\n          }\n        }\n      } else if ($.isPlainObject(language)) {\n        languageData = new Translation(language);\n      } else {\n        languageData = language;\n      }\n\n      translations.extend(languageData);\n    }\n\n    return translations;\n  };\n\n  Defaults.prototype.set = function (key, value) {\n    var camelKey = $.camelCase(key);\n\n    var data = {};\n    data[camelKey] = value;\n\n    var convertedData = Utils._convertData(data);\n\n    $.extend(true, this.defaults, convertedData);\n  };\n\n  var defaults = new Defaults();\n\n  return defaults;\n});\n\nS2.define('select2/options',[\n  'jquery',\n  './defaults',\n  './utils'\n], function ($, Defaults, Utils) {\n  function Options (options, $element) {\n    this.options = options;\n\n    if ($element != null) {\n      this.fromElement($element);\n    }\n\n    if ($element != null) {\n      this.options = Defaults.applyFromElement(this.options, $element);\n    }\n\n    this.options = Defaults.apply(this.options);\n  }\n\n  Options.prototype.fromElement = function ($e) {\n    var excludedData = ['select2'];\n\n    if (this.options.multiple == null) {\n      this.options.multiple = $e.prop('multiple');\n    }\n\n    if (this.options.disabled == null) {\n      this.options.disabled = $e.prop('disabled');\n    }\n\n    if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n      this.options.autocomplete = $e.prop('autocomplete');\n    }\n\n    if (this.options.dir == null) {\n      if ($e.prop('dir')) {\n        this.options.dir = $e.prop('dir');\n      } else if ($e.closest('[dir]').prop('dir')) {\n        this.options.dir = $e.closest('[dir]').prop('dir');\n      } else {\n        this.options.dir = 'ltr';\n      }\n    }\n\n    $e.prop('disabled', this.options.disabled);\n    $e.prop('multiple', this.options.multiple);\n\n    if (Utils.GetData($e[0], 'select2Tags')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-select2-tags` attribute has been changed to ' +\n          'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n          'removed in future versions of Select2.'\n        );\n      }\n\n      Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n      Utils.StoreData($e[0], 'tags', true);\n    }\n\n    if (Utils.GetData($e[0], 'ajaxUrl')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-ajax-url` attribute has been changed to ' +\n          '`data-ajax--url` and support for the old attribute will be removed' +\n          ' in future versions of Select2.'\n        );\n      }\n\n      $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n      Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n    }\n\n    var dataset = {};\n\n    function upperCaseLetter(_, letter) {\n      return letter.toUpperCase();\n    }\n\n    // Pre-load all of the attributes which are prefixed with `data-`\n    for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n      var attributeName = $e[0].attributes[attr].name;\n      var prefix = 'data-';\n\n      if (attributeName.substr(0, prefix.length) == prefix) {\n        // Get the contents of the attribute after `data-`\n        var dataName = attributeName.substring(prefix.length);\n\n        // Get the data contents from the consistent source\n        // This is more than likely the jQuery data helper\n        var dataValue = Utils.GetData($e[0], dataName);\n\n        // camelCase the attribute name to match the spec\n        var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n        // Store the data attribute contents into the dataset since\n        dataset[camelDataName] = dataValue;\n      }\n    }\n\n    // Prefer the element's `dataset` attribute if it exists\n    // jQuery 1.x does not correctly handle data attributes with multiple dashes\n    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n      dataset = $.extend(true, {}, $e[0].dataset, dataset);\n    }\n\n    // Prefer our internal data cache if it exists\n    var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n    data = Utils._convertData(data);\n\n    for (var key in data) {\n      if (excludedData.indexOf(key) > -1) {\n        continue;\n      }\n\n      if ($.isPlainObject(this.options[key])) {\n        $.extend(this.options[key], data[key]);\n      } else {\n        this.options[key] = data[key];\n      }\n    }\n\n    return this;\n  };\n\n  Options.prototype.get = function (key) {\n    return this.options[key];\n  };\n\n  Options.prototype.set = function (key, val) {\n    this.options[key] = val;\n  };\n\n  return Options;\n});\n\nS2.define('select2/core',[\n  'jquery',\n  './options',\n  './utils',\n  './keys'\n], function ($, Options, Utils, KEYS) {\n  var Select2 = function ($element, options) {\n    if (Utils.GetData($element[0], 'select2') != null) {\n      Utils.GetData($element[0], 'select2').destroy();\n    }\n\n    this.$element = $element;\n\n    this.id = this._generateId($element);\n\n    options = options || {};\n\n    this.options = new Options(options, $element);\n\n    Select2.__super__.constructor.call(this);\n\n    // Set up the tabindex\n\n    var tabindex = $element.attr('tabindex') || 0;\n    Utils.StoreData($element[0], 'old-tabindex', tabindex);\n    $element.attr('tabindex', '-1');\n\n    // Set up containers and adapters\n\n    var DataAdapter = this.options.get('dataAdapter');\n    this.dataAdapter = new DataAdapter($element, this.options);\n\n    var $container = this.render();\n\n    this._placeContainer($container);\n\n    var SelectionAdapter = this.options.get('selectionAdapter');\n    this.selection = new SelectionAdapter($element, this.options);\n    this.$selection = this.selection.render();\n\n    this.selection.position(this.$selection, $container);\n\n    var DropdownAdapter = this.options.get('dropdownAdapter');\n    this.dropdown = new DropdownAdapter($element, this.options);\n    this.$dropdown = this.dropdown.render();\n\n    this.dropdown.position(this.$dropdown, $container);\n\n    var ResultsAdapter = this.options.get('resultsAdapter');\n    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n    this.$results = this.results.render();\n\n    this.results.position(this.$results, this.$dropdown);\n\n    // Bind events\n\n    var self = this;\n\n    // Bind the container to all of the adapters\n    this._bindAdapters();\n\n    // Register any DOM event handlers\n    this._registerDomEvents();\n\n    // Register any internal event handlers\n    this._registerDataEvents();\n    this._registerSelectionEvents();\n    this._registerDropdownEvents();\n    this._registerResultsEvents();\n    this._registerEvents();\n\n    // Set the initial state\n    this.dataAdapter.current(function (initialData) {\n      self.trigger('selection:update', {\n        data: initialData\n      });\n    });\n\n    // Hide the original select\n    $element[0].classList.add('select2-hidden-accessible');\n    $element.attr('aria-hidden', 'true');\n\n    // Synchronize any monitored attributes\n    this._syncAttributes();\n\n    Utils.StoreData($element[0], 'select2', this);\n\n    // Ensure backwards compatibility with $element.data('select2').\n    $element.data('select2', this);\n  };\n\n  Utils.Extend(Select2, Utils.Observable);\n\n  Select2.prototype._generateId = function ($element) {\n    var id = '';\n\n    if ($element.attr('id') != null) {\n      id = $element.attr('id');\n    } else if ($element.attr('name') != null) {\n      id = $element.attr('name') + '-' + Utils.generateChars(2);\n    } else {\n      id = Utils.generateChars(4);\n    }\n\n    id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n    id = 'select2-' + id;\n\n    return id;\n  };\n\n  Select2.prototype._placeContainer = function ($container) {\n    $container.insertAfter(this.$element);\n\n    var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n    if (width != null) {\n      $container.css('width', width);\n    }\n  };\n\n  Select2.prototype._resolveWidth = function ($element, method) {\n    var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n    if (method == 'resolve') {\n      var styleWidth = this._resolveWidth($element, 'style');\n\n      if (styleWidth != null) {\n        return styleWidth;\n      }\n\n      return this._resolveWidth($element, 'element');\n    }\n\n    if (method == 'element') {\n      var elementWidth = $element.outerWidth(false);\n\n      if (elementWidth <= 0) {\n        return 'auto';\n      }\n\n      return elementWidth + 'px';\n    }\n\n    if (method == 'style') {\n      var style = $element.attr('style');\n\n      if (typeof(style) !== 'string') {\n        return null;\n      }\n\n      var attrs = style.split(';');\n\n      for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n        var attr = attrs[i].replace(/\\s/g, '');\n        var matches = attr.match(WIDTH);\n\n        if (matches !== null && matches.length >= 1) {\n          return matches[1];\n        }\n      }\n\n      return null;\n    }\n\n    if (method == 'computedstyle') {\n      var computedStyle = window.getComputedStyle($element[0]);\n\n      return computedStyle.width;\n    }\n\n    return method;\n  };\n\n  Select2.prototype._bindAdapters = function () {\n    this.dataAdapter.bind(this, this.$container);\n    this.selection.bind(this, this.$container);\n\n    this.dropdown.bind(this, this.$container);\n    this.results.bind(this, this.$container);\n  };\n\n  Select2.prototype._registerDomEvents = function () {\n    var self = this;\n\n    this.$element.on('change.select2', function () {\n      self.dataAdapter.current(function (data) {\n        self.trigger('selection:update', {\n          data: data\n        });\n      });\n    });\n\n    this.$element.on('focus.select2', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this._syncA = Utils.bind(this._syncAttributes, this);\n    this._syncS = Utils.bind(this._syncSubtree, this);\n\n    this._observer = new window.MutationObserver(function (mutations) {\n      self._syncA();\n      self._syncS(mutations);\n    });\n    this._observer.observe(this.$element[0], {\n      attributes: true,\n      childList: true,\n      subtree: false\n    });\n  };\n\n  Select2.prototype._registerDataEvents = function () {\n    var self = this;\n\n    this.dataAdapter.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerSelectionEvents = function () {\n    var self = this;\n    var nonRelayEvents = ['toggle', 'focus'];\n\n    this.selection.on('toggle', function () {\n      self.toggleDropdown();\n    });\n\n    this.selection.on('focus', function (params) {\n      self.focus(params);\n    });\n\n    this.selection.on('*', function (name, params) {\n      if (nonRelayEvents.indexOf(name) !== -1) {\n        return;\n      }\n\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerDropdownEvents = function () {\n    var self = this;\n\n    this.dropdown.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerResultsEvents = function () {\n    var self = this;\n\n    this.results.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerEvents = function () {\n    var self = this;\n\n    this.on('open', function () {\n      self.$container[0].classList.add('select2-container--open');\n    });\n\n    this.on('close', function () {\n      self.$container[0].classList.remove('select2-container--open');\n    });\n\n    this.on('enable', function () {\n      self.$container[0].classList.remove('select2-container--disabled');\n    });\n\n    this.on('disable', function () {\n      self.$container[0].classList.add('select2-container--disabled');\n    });\n\n    this.on('blur', function () {\n      self.$container[0].classList.remove('select2-container--focus');\n    });\n\n    this.on('query', function (params) {\n      if (!self.isOpen()) {\n        self.trigger('open', {});\n      }\n\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:all', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('query:append', function (params) {\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:append', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('keypress', function (evt) {\n      var key = evt.which;\n\n      if (self.isOpen()) {\n        if (key === KEYS.ESC || key === KEYS.TAB ||\n            (key === KEYS.UP && evt.altKey)) {\n          self.close(evt);\n\n          evt.preventDefault();\n        } else if (key === KEYS.ENTER) {\n          self.trigger('results:select', {});\n\n          evt.preventDefault();\n        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n          self.trigger('results:toggle', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.UP) {\n          self.trigger('results:previous', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.DOWN) {\n          self.trigger('results:next', {});\n\n          evt.preventDefault();\n        }\n      } else {\n        if (key === KEYS.ENTER || key === KEYS.SPACE ||\n            (key === KEYS.DOWN && evt.altKey)) {\n          self.open();\n\n          evt.preventDefault();\n        }\n      }\n    });\n  };\n\n  Select2.prototype._syncAttributes = function () {\n    this.options.set('disabled', this.$element.prop('disabled'));\n\n    if (this.isDisabled()) {\n      if (this.isOpen()) {\n        this.close();\n      }\n\n      this.trigger('disable', {});\n    } else {\n      this.trigger('enable', {});\n    }\n  };\n\n  Select2.prototype._isChangeMutation = function (mutations) {\n    var self = this;\n\n    if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n      for (var n = 0; n < mutations.addedNodes.length; n++) {\n        var node = mutations.addedNodes[n];\n\n        if (node.selected) {\n          return true;\n        }\n      }\n    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n      return true;\n    } else if (Array.isArray(mutations)) {\n      return mutations.some(function (mutation) {\n        return self._isChangeMutation(mutation);\n      });\n    }\n\n    return false;\n  };\n\n  Select2.prototype._syncSubtree = function (mutations) {\n    var changed = this._isChangeMutation(mutations);\n    var self = this;\n\n    // Only re-pull the data if we think there is a change\n    if (changed) {\n      this.dataAdapter.current(function (currentData) {\n        self.trigger('selection:update', {\n          data: currentData\n        });\n      });\n    }\n  };\n\n  /**\n   * Override the trigger method to automatically trigger pre-events when\n   * there are events that can be prevented.\n   */\n  Select2.prototype.trigger = function (name, args) {\n    var actualTrigger = Select2.__super__.trigger;\n    var preTriggerMap = {\n      'open': 'opening',\n      'close': 'closing',\n      'select': 'selecting',\n      'unselect': 'unselecting',\n      'clear': 'clearing'\n    };\n\n    if (args === undefined) {\n      args = {};\n    }\n\n    if (name in preTriggerMap) {\n      var preTriggerName = preTriggerMap[name];\n      var preTriggerArgs = {\n        prevented: false,\n        name: name,\n        args: args\n      };\n\n      actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n      if (preTriggerArgs.prevented) {\n        args.prevented = true;\n\n        return;\n      }\n    }\n\n    actualTrigger.call(this, name, args);\n  };\n\n  Select2.prototype.toggleDropdown = function () {\n    if (this.isDisabled()) {\n      return;\n    }\n\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  };\n\n  Select2.prototype.open = function () {\n    if (this.isOpen()) {\n      return;\n    }\n\n    if (this.isDisabled()) {\n      return;\n    }\n\n    this.trigger('query', {});\n  };\n\n  Select2.prototype.close = function (evt) {\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.trigger('close', { originalEvent : evt });\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  Select2.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  Select2.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  Select2.prototype.isOpen = function () {\n    return this.$container[0].classList.contains('select2-container--open');\n  };\n\n  Select2.prototype.hasFocus = function () {\n    return this.$container[0].classList.contains('select2-container--focus');\n  };\n\n  Select2.prototype.focus = function (data) {\n    // No need to re-trigger focus events if we are already focused\n    if (this.hasFocus()) {\n      return;\n    }\n\n    this.$container[0].classList.add('select2-container--focus');\n    this.trigger('focus', {});\n  };\n\n  Select2.prototype.enable = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n        ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n        ' instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      args = [true];\n    }\n\n    var disabled = !args[0];\n\n    this.$element.prop('disabled', disabled);\n  };\n\n  Select2.prototype.data = function () {\n    if (this.options.get('debug') &&\n        arguments.length > 0 && window.console && console.warn) {\n      console.warn(\n        'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n        'should consider setting the value instead using `$element.val()`.'\n      );\n    }\n\n    var data = [];\n\n    this.dataAdapter.current(function (currentData) {\n      data = currentData;\n    });\n\n    return data;\n  };\n\n  Select2.prototype.val = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n        ' removed in later Select2 versions. Use $element.val() instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      return this.$element.val();\n    }\n\n    var newVal = args[0];\n\n    if (Array.isArray(newVal)) {\n      newVal = newVal.map(function (obj) {\n        return obj.toString();\n      });\n    }\n\n    this.$element.val(newVal).trigger('input').trigger('change');\n  };\n\n  Select2.prototype.destroy = function () {\n    this.$container.remove();\n\n    this._observer.disconnect();\n    this._observer = null;\n\n    this._syncA = null;\n    this._syncS = null;\n\n    this.$element.off('.select2');\n    this.$element.attr('tabindex',\n    Utils.GetData(this.$element[0], 'old-tabindex'));\n\n    this.$element[0].classList.remove('select2-hidden-accessible');\n    this.$element.attr('aria-hidden', 'false');\n    Utils.RemoveData(this.$element[0]);\n    this.$element.removeData('select2');\n\n    this.dataAdapter.destroy();\n    this.selection.destroy();\n    this.dropdown.destroy();\n    this.results.destroy();\n\n    this.dataAdapter = null;\n    this.selection = null;\n    this.dropdown = null;\n    this.results = null;\n  };\n\n  Select2.prototype.render = function () {\n    var $container = $(\n      '<span class=\"select2 select2-container\">' +\n        '<span class=\"selection\"></span>' +\n        '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n      '</span>'\n    );\n\n    $container.attr('dir', this.options.get('dir'));\n\n    this.$container = $container;\n\n    this.$container[0].classList\n      .add('select2-container--' + this.options.get('theme'));\n\n    Utils.StoreData($container[0], 'element', this.$element);\n\n    return $container;\n  };\n\n  return Select2;\n});\n\nS2.define('select2/dropdown/attachContainer',[\n\n], function () {\n  function AttachContainer (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  AttachContainer.prototype.position =\n    function (decorated, $dropdown, $container) {\n    var $dropdownContainer = $container.find('.dropdown-wrapper');\n    $dropdownContainer.append($dropdown);\n\n    $dropdown[0].classList.add('select2-dropdown--below');\n    $container[0].classList.add('select2-container--below');\n  };\n\n  return AttachContainer;\n});\n\nS2.define('select2/dropdown/stopPropagation',[\n\n], function () {\n  function StopPropagation () { }\n\n  StopPropagation.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    var stoppedEvents = [\n    'blur',\n    'change',\n    'click',\n    'dblclick',\n    'focus',\n    'focusin',\n    'focusout',\n    'input',\n    'keydown',\n    'keyup',\n    'keypress',\n    'mousedown',\n    'mouseenter',\n    'mouseleave',\n    'mousemove',\n    'mouseover',\n    'mouseup',\n    'search',\n    'touchend',\n    'touchstart'\n    ];\n\n    this.$dropdown.on(stoppedEvents.join(' '), function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  return StopPropagation;\n});\n\nS2.define('select2/selection/stopPropagation',[\n\n], function () {\n  function StopPropagation () { }\n\n  StopPropagation.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    var stoppedEvents = [\n      'blur',\n      'change',\n      'click',\n      'dblclick',\n      'focus',\n      'focusin',\n      'focusout',\n      'input',\n      'keydown',\n      'keyup',\n      'keypress',\n      'mousedown',\n      'mouseenter',\n      'mouseleave',\n      'mousemove',\n      'mouseover',\n      'mouseup',\n      'search',\n      'touchend',\n      'touchstart'\n    ];\n\n    this.$selection.on(stoppedEvents.join(' '), function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  return StopPropagation;\n});\n\n/*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n\n(function (factory) {\n    if ( typeof S2.define === 'function' && S2.define.amd ) {\n        // AMD. Register as an anonymous module.\n        S2.define('jquery-mousewheel',['jquery'], factory);\n    } else if (typeof exports === 'object') {\n        // Node/CommonJS style for Browserify\n        module.exports = factory;\n    } else {\n        // Browser globals\n        factory(jQuery);\n    }\n}(function ($) {\n\n    var toFix  = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n        toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?\n                    ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n        slice  = Array.prototype.slice,\n        nullLowestDeltaTimeout, lowestDelta;\n\n    if ( $.event.fixHooks ) {\n        for ( var i = toFix.length; i; ) {\n            $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;\n        }\n    }\n\n    var special = $.event.special.mousewheel = {\n        version: '3.1.12',\n\n        setup: function() {\n            if ( this.addEventListener ) {\n                for ( var i = toBind.length; i; ) {\n                    this.addEventListener( toBind[--i], handler, false );\n                }\n            } else {\n                this.onmousewheel = handler;\n            }\n            // Store the line height and page height for this particular element\n            $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n            $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n        },\n\n        teardown: function() {\n            if ( this.removeEventListener ) {\n                for ( var i = toBind.length; i; ) {\n                    this.removeEventListener( toBind[--i], handler, false );\n                }\n            } else {\n                this.onmousewheel = null;\n            }\n            // Clean up the data we added to the element\n            $.removeData(this, 'mousewheel-line-height');\n            $.removeData(this, 'mousewheel-page-height');\n        },\n\n        getLineHeight: function(elem) {\n            var $elem = $(elem),\n                $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();\n            if (!$parent.length) {\n                $parent = $('body');\n            }\n            return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;\n        },\n\n        getPageHeight: function(elem) {\n            return $(elem).height();\n        },\n\n        settings: {\n            adjustOldDeltas: true, // see shouldAdjustOldDeltas() below\n            normalizeOffset: true  // calls getBoundingClientRect for each event\n        }\n    };\n\n    $.fn.extend({\n        mousewheel: function(fn) {\n            return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n        },\n\n        unmousewheel: function(fn) {\n            return this.unbind('mousewheel', fn);\n        }\n    });\n\n\n    function handler(event) {\n        var orgEvent   = event || window.event,\n            args       = slice.call(arguments, 1),\n            delta      = 0,\n            deltaX     = 0,\n            deltaY     = 0,\n            absDelta   = 0,\n            offsetX    = 0,\n            offsetY    = 0;\n        event = $.event.fix(orgEvent);\n        event.type = 'mousewheel';\n\n        // Old school scrollwheel delta\n        if ( 'detail'      in orgEvent ) { deltaY = orgEvent.detail * -1;      }\n        if ( 'wheelDelta'  in orgEvent ) { deltaY = orgEvent.wheelDelta;       }\n        if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY;      }\n        if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }\n\n        // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n        if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n            deltaX = deltaY * -1;\n            deltaY = 0;\n        }\n\n        // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n        delta = deltaY === 0 ? deltaX : deltaY;\n\n        // New school wheel delta (wheel event)\n        if ( 'deltaY' in orgEvent ) {\n            deltaY = orgEvent.deltaY * -1;\n            delta  = deltaY;\n        }\n        if ( 'deltaX' in orgEvent ) {\n            deltaX = orgEvent.deltaX;\n            if ( deltaY === 0 ) { delta  = deltaX * -1; }\n        }\n\n        // No change actually happened, no reason to go any further\n        if ( deltaY === 0 && deltaX === 0 ) { return; }\n\n        // Need to convert lines and pages to pixels if we aren't already in pixels\n        // There are three delta modes:\n        //   * deltaMode 0 is by pixels, nothing to do\n        //   * deltaMode 1 is by lines\n        //   * deltaMode 2 is by pages\n        if ( orgEvent.deltaMode === 1 ) {\n            var lineHeight = $.data(this, 'mousewheel-line-height');\n            delta  *= lineHeight;\n            deltaY *= lineHeight;\n            deltaX *= lineHeight;\n        } else if ( orgEvent.deltaMode === 2 ) {\n            var pageHeight = $.data(this, 'mousewheel-page-height');\n            delta  *= pageHeight;\n            deltaY *= pageHeight;\n            deltaX *= pageHeight;\n        }\n\n        // Store lowest absolute delta to normalize the delta values\n        absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );\n\n        if ( !lowestDelta || absDelta < lowestDelta ) {\n            lowestDelta = absDelta;\n\n            // Adjust older deltas if necessary\n            if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n                lowestDelta /= 40;\n            }\n        }\n\n        // Adjust older deltas if necessary\n        if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n            // Divide all the things by 40!\n            delta  /= 40;\n            deltaX /= 40;\n            deltaY /= 40;\n        }\n\n        // Get a whole, normalized value for the deltas\n        delta  = Math[ delta  >= 1 ? 'floor' : 'ceil' ](delta  / lowestDelta);\n        deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);\n        deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);\n\n        // Normalise offsetX and offsetY properties\n        if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {\n            var boundingRect = this.getBoundingClientRect();\n            offsetX = event.clientX - boundingRect.left;\n            offsetY = event.clientY - boundingRect.top;\n        }\n\n        // Add information to the event object\n        event.deltaX = deltaX;\n        event.deltaY = deltaY;\n        event.deltaFactor = lowestDelta;\n        event.offsetX = offsetX;\n        event.offsetY = offsetY;\n        // Go ahead and set deltaMode to 0 since we converted to pixels\n        // Although this is a little odd since we overwrite the deltaX/Y\n        // properties with normalized deltas.\n        event.deltaMode = 0;\n\n        // Add event and delta to the front of the arguments\n        args.unshift(event, delta, deltaX, deltaY);\n\n        // Clearout lowestDelta after sometime to better\n        // handle multiple device types that give different\n        // a different lowestDelta\n        // Ex: trackpad = 3 and mouse wheel = 120\n        if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }\n        nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n\n        return ($.event.dispatch || $.event.handle).apply(this, args);\n    }\n\n    function nullLowestDelta() {\n        lowestDelta = null;\n    }\n\n    function shouldAdjustOldDeltas(orgEvent, absDelta) {\n        // If this is an older event and the delta is divisable by 120,\n        // then we are assuming that the browser is treating this as an\n        // older mouse wheel event and that we should divide the deltas\n        // by 40 to try and get a more usable deltaFactor.\n        // Side note, this actually impacts the reported scroll distance\n        // in older browsers and can cause scrolling to be slower than native.\n        // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n        return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n    }\n\n}));\n\nS2.define('jquery.select2',[\n  'jquery',\n  'jquery-mousewheel',\n\n  './select2/core',\n  './select2/defaults',\n  './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n  if ($.fn.select2 == null) {\n    // All methods that should return the element\n    var thisMethods = ['open', 'close', 'destroy'];\n\n    $.fn.select2 = function (options) {\n      options = options || {};\n\n      if (typeof options === 'object') {\n        this.each(function () {\n          var instanceOptions = $.extend(true, {}, options);\n\n          var instance = new Select2($(this), instanceOptions);\n        });\n\n        return this;\n      } else if (typeof options === 'string') {\n        var ret;\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        this.each(function () {\n          var instance = Utils.GetData(this, 'select2');\n\n          if (instance == null && window.console && console.error) {\n            console.error(\n              'The select2(\\'' + options + '\\') method was called on an ' +\n              'element that is not using Select2.'\n            );\n          }\n\n          ret = instance[options].apply(instance, args);\n        });\n\n        // Check if we should be returning `this`\n        if (thisMethods.indexOf(options) > -1) {\n          return this;\n        }\n\n        return ret;\n      } else {\n        throw new Error('Invalid arguments for Select2: ' + options);\n      }\n    };\n  }\n\n  if ($.fn.select2.defaults == null) {\n    $.fn.select2.defaults = Defaults;\n  }\n\n  return Select2;\n});\n\n  // Return the AMD loader configuration so it can be used outside of this file\n  return {\n    define: S2.define,\n    require: S2.require\n  };\n}());\n\n  // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n  var select2 = S2.require('jquery.select2');\n\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  jQuery.fn.select2.amd = S2;\n\n  // Return the Select2 instance for anyone who is importing it.\n  return select2;\n}));\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/select/select2.js",
    "content": "/*!\n * Select2 4.1.0-beta.1\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    // Node/CommonJS\n    module.exports = function (root, jQuery) {\n      if (jQuery === undefined) {\n        // require('jQuery') returns a factory that requires window to\n        // build a jQuery instance, we normalize how we use modules\n        // that require this pattern but the window provided is a noop\n        // if it's defined (how jquery works)\n        if (typeof window !== 'undefined') {\n          jQuery = require('jquery');\n        }\n        else {\n          jQuery = require('jquery')(root);\n        }\n      }\n      factory(jQuery);\n      return jQuery;\n    };\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n} (function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 =(function () {\n  // Restore the Select2 AMD loader so it can be used\n  // Needed mostly in the language files, where the loader is not inserted\n  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n    var S2 = jQuery.fn.select2.amd;\n  }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n    var main, req, makeMap, handlers,\n        defined = {},\n        waiting = {},\n        config = {},\n        defining = {},\n        hasOwn = Object.prototype.hasOwnProperty,\n        aps = [].slice,\n        jsSuffixRegExp = /\\.js$/;\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    /**\n     * Given a relative module name, like ./something, normalize it to\n     * a real name that can be mapped to a path.\n     * @param {String} name the relative name\n     * @param {String} baseName a real name that the name arg is relative\n     * to.\n     * @returns {String} normalized name\n     */\n    function normalize(name, baseName) {\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n            foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n            baseParts = baseName && baseName.split(\"/\"),\n            map = config.map,\n            starMap = (map && map['*']) || {};\n\n        //Adjust any relative paths.\n        if (name) {\n            name = name.split('/');\n            lastIndex = name.length - 1;\n\n            // If wanting node ID compatibility, strip .js from end\n            // of IDs. Have to do this here, and not in nameToUrl\n            // because node allows either .js or non .js to map\n            // to same file.\n            if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n            }\n\n            // Starts with a '.' so need the baseName\n            if (name[0].charAt(0) === '.' && baseParts) {\n                //Convert baseName to array, and lop off the last part,\n                //so that . matches that 'directory' and not name of the baseName's\n                //module. For instance, baseName of 'one/two/three', maps to\n                //'one/two/three.js', but we want the directory, 'one/two' for\n                //this normalization.\n                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n                name = normalizedBaseParts.concat(name);\n            }\n\n            //start trimDots\n            for (i = 0; i < name.length; i++) {\n                part = name[i];\n                if (part === '.') {\n                    name.splice(i, 1);\n                    i -= 1;\n                } else if (part === '..') {\n                    // If at the start, or previous value is still ..,\n                    // keep them so that when converted to a path it may\n                    // still work when converted to a path, even though\n                    // as an ID it is less than ideal. In larger point\n                    // releases, may be better to just kick out an error.\n                    if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n                        continue;\n                    } else if (i > 0) {\n                        name.splice(i - 1, 2);\n                        i -= 2;\n                    }\n                }\n            }\n            //end trimDots\n\n            name = name.join('/');\n        }\n\n        //Apply map config if available.\n        if ((baseParts || starMap) && map) {\n            nameParts = name.split('/');\n\n            for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                    //Find the longest baseName segment match in the config.\n                    //So, do joins on the biggest to smallest lengths of baseParts.\n                    for (j = baseParts.length; j > 0; j -= 1) {\n                        mapValue = map[baseParts.slice(0, j).join('/')];\n\n                        //baseName segment has  config, find if it has one for\n                        //this name.\n                        if (mapValue) {\n                            mapValue = mapValue[nameSegment];\n                            if (mapValue) {\n                                //Match, update name to the new value.\n                                foundMap = mapValue;\n                                foundI = i;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                if (foundMap) {\n                    break;\n                }\n\n                //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                    foundStarMap = starMap[nameSegment];\n                    starI = i;\n                }\n            }\n\n            if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n            }\n\n            if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n            }\n        }\n\n        return name;\n    }\n\n    function makeRequire(relName, forceSync) {\n        return function () {\n            //A version of a require function that passes a moduleName\n            //value for items that may need to\n            //look up paths relative to the moduleName\n            var args = aps.call(arguments, 0);\n\n            //If first arg is not require('string'), and there is only\n            //one arg, it is the array form without a callback. Insert\n            //a null so that the following concat is correct.\n            if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n            }\n            return req.apply(undef, args.concat([relName, forceSync]));\n        };\n    }\n\n    function makeNormalize(relName) {\n        return function (name) {\n            return normalize(name, relName);\n        };\n    }\n\n    function makeLoad(depName) {\n        return function (value) {\n            defined[depName] = value;\n        };\n    }\n\n    function callDep(name) {\n        if (hasProp(waiting, name)) {\n            var args = waiting[name];\n            delete waiting[name];\n            defining[name] = true;\n            main.apply(undef, args);\n        }\n\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\n            throw new Error('No ' + name);\n        }\n        return defined[name];\n    }\n\n    //Turns a plugin!resource to [plugin, resource]\n    //with the plugin being undefined if the name\n    //did not have a plugin prefix.\n    function splitPrefix(name) {\n        var prefix,\n            index = name ? name.indexOf('!') : -1;\n        if (index > -1) {\n            prefix = name.substring(0, index);\n            name = name.substring(index + 1, name.length);\n        }\n        return [prefix, name];\n    }\n\n    //Creates a parts array for a relName where first part is plugin ID,\n    //second part is resource ID. Assumes relName has already been normalized.\n    function makeRelParts(relName) {\n        return relName ? splitPrefix(relName) : [];\n    }\n\n    /**\n     * Makes a name map, normalizing the name, and using a plugin\n     * for normalization if necessary. Grabs a ref to plugin\n     * too, as an optimization.\n     */\n    makeMap = function (name, relParts) {\n        var plugin,\n            parts = splitPrefix(name),\n            prefix = parts[0],\n            relResourceName = relParts[1];\n\n        name = parts[1];\n\n        if (prefix) {\n            prefix = normalize(prefix, relResourceName);\n            plugin = callDep(prefix);\n        }\n\n        //Normalize according\n        if (prefix) {\n            if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relResourceName));\n            } else {\n                name = normalize(name, relResourceName);\n            }\n        } else {\n            name = normalize(name, relResourceName);\n            parts = splitPrefix(name);\n            prefix = parts[0];\n            name = parts[1];\n            if (prefix) {\n                plugin = callDep(prefix);\n            }\n        }\n\n        //Using ridiculous property names for space reasons\n        return {\n            f: prefix ? prefix + '!' + name : name, //fullName\n            n: name,\n            pr: prefix,\n            p: plugin\n        };\n    };\n\n    function makeConfig(name) {\n        return function () {\n            return (config && config.config && config.config[name]) || {};\n        };\n    }\n\n    handlers = {\n        require: function (name) {\n            return makeRequire(name);\n        },\n        exports: function (name) {\n            var e = defined[name];\n            if (typeof e !== 'undefined') {\n                return e;\n            } else {\n                return (defined[name] = {});\n            }\n        },\n        module: function (name) {\n            return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n            };\n        }\n    };\n\n    main = function (name, deps, callback, relName) {\n        var cjsModule, depName, ret, map, i, relParts,\n            args = [],\n            callbackType = typeof callback,\n            usingExports;\n\n        //Use name if no relName\n        relName = relName || name;\n        relParts = makeRelParts(relName);\n\n        //Call the callback to define the module, if necessary.\n        if (callbackType === 'undefined' || callbackType === 'function') {\n            //Pull out the defined dependencies and pass the ordered\n            //values to the callback.\n            //Default to [require, exports, module] if no deps\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n            for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relParts);\n                depName = map.f;\n\n                //Fast path CommonJS standard dependencies.\n                if (depName === \"require\") {\n                    args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                    //CommonJS module spec 1.1\n                    args[i] = handlers.exports(name);\n                    usingExports = true;\n                } else if (depName === \"module\") {\n                    //CommonJS module spec 1.1\n                    cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) ||\n                           hasProp(waiting, depName) ||\n                           hasProp(defining, depName)) {\n                    args[i] = callDep(depName);\n                } else if (map.p) {\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                    args[i] = defined[depName];\n                } else {\n                    throw new Error(name + ' missing ' + depName);\n                }\n            }\n\n            ret = callback ? callback.apply(defined[name], args) : undefined;\n\n            if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef &&\n                        cjsModule.exports !== defined[name]) {\n                    defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                    //Use the return value from the function.\n                    defined[name] = ret;\n                }\n            }\n        } else if (name) {\n            //May just be an object definition for the module. Only\n            //worry about defining if have a module name.\n            defined[name] = callback;\n        }\n    };\n\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n        if (typeof deps === \"string\") {\n            if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n            }\n            //Just return the module wanted. In this scenario, the\n            //deps arg is the module name, and second arg (if passed)\n            //is just the relName.\n            //Normalize module name, if it contains . or ..\n            return callDep(makeMap(deps, makeRelParts(callback)).f);\n        } else if (!deps.splice) {\n            //deps is a config object, not an array.\n            config = deps;\n            if (config.deps) {\n                req(config.deps, config.callback);\n            }\n            if (!callback) {\n                return;\n            }\n\n            if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n            } else {\n                deps = undef;\n            }\n        }\n\n        //Support require(['a'])\n        callback = callback || function () {};\n\n        //If relName is a function, it is an errback handler,\n        //so remove it.\n        if (typeof relName === 'function') {\n            relName = forceSync;\n            forceSync = alt;\n        }\n\n        //Simulate async callback;\n        if (forceSync) {\n            main(undef, deps, callback, relName);\n        } else {\n            //Using a non-zero value because of concern for what old browsers\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n            //If want a value immediately, use require('id') instead -- something\n            //that works in almond on the global level, but not guaranteed and\n            //unlikely to work in other AMD implementations.\n            setTimeout(function () {\n                main(undef, deps, callback, relName);\n            }, 4);\n        }\n\n        return req;\n    };\n\n    /**\n     * Just drops the config on the floor, but returns req in case\n     * the config return value is used.\n     */\n    req.config = function (cfg) {\n        return req(cfg);\n    };\n\n    /**\n     * Expose module registry for debugging and tooling\n     */\n    requirejs._defined = defined;\n\n    define = function (name, deps, callback) {\n        if (typeof name !== 'string') {\n            throw new Error('See almond README: incorrect module build, no module name');\n        }\n\n        //This module may not have dependencies\n        if (!deps.splice) {\n            //deps is not an array, so probably means\n            //an object literal or factory function for\n            //the value. Adjust args.\n            callback = deps;\n            deps = [];\n        }\n\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n            waiting[name] = [name, deps, callback];\n        }\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n  var _$ = jQuery || $;\n\n  if (_$ == null && console && console.error) {\n    console.error(\n      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n      'found. Make sure that you are including jQuery before Select2 on your ' +\n      'web page.'\n    );\n  }\n\n  return _$;\n});\n\nS2.define('select2/utils',[\n  'jquery'\n], function ($) {\n  var Utils = {};\n\n  Utils.Extend = function (ChildClass, SuperClass) {\n    var __hasProp = {}.hasOwnProperty;\n\n    function BaseConstructor () {\n      this.constructor = ChildClass;\n    }\n\n    for (var key in SuperClass) {\n      if (__hasProp.call(SuperClass, key)) {\n        ChildClass[key] = SuperClass[key];\n      }\n    }\n\n    BaseConstructor.prototype = SuperClass.prototype;\n    ChildClass.prototype = new BaseConstructor();\n    ChildClass.__super__ = SuperClass.prototype;\n\n    return ChildClass;\n  };\n\n  function getMethods (theClass) {\n    var proto = theClass.prototype;\n\n    var methods = [];\n\n    for (var methodName in proto) {\n      var m = proto[methodName];\n\n      if (typeof m !== 'function') {\n        continue;\n      }\n\n      if (methodName === 'constructor') {\n        continue;\n      }\n\n      methods.push(methodName);\n    }\n\n    return methods;\n  }\n\n  Utils.Decorate = function (SuperClass, DecoratorClass) {\n    var decoratedMethods = getMethods(DecoratorClass);\n    var superMethods = getMethods(SuperClass);\n\n    function DecoratedClass () {\n      var unshift = Array.prototype.unshift;\n\n      var argCount = DecoratorClass.prototype.constructor.length;\n\n      var calledConstructor = SuperClass.prototype.constructor;\n\n      if (argCount > 0) {\n        unshift.call(arguments, SuperClass.prototype.constructor);\n\n        calledConstructor = DecoratorClass.prototype.constructor;\n      }\n\n      calledConstructor.apply(this, arguments);\n    }\n\n    DecoratorClass.displayName = SuperClass.displayName;\n\n    function ctr () {\n      this.constructor = DecoratedClass;\n    }\n\n    DecoratedClass.prototype = new ctr();\n\n    for (var m = 0; m < superMethods.length; m++) {\n      var superMethod = superMethods[m];\n\n      DecoratedClass.prototype[superMethod] =\n        SuperClass.prototype[superMethod];\n    }\n\n    var calledMethod = function (methodName) {\n      // Stub out the original method if it's not decorating an actual method\n      var originalMethod = function () {};\n\n      if (methodName in DecoratedClass.prototype) {\n        originalMethod = DecoratedClass.prototype[methodName];\n      }\n\n      var decoratedMethod = DecoratorClass.prototype[methodName];\n\n      return function () {\n        var unshift = Array.prototype.unshift;\n\n        unshift.call(arguments, originalMethod);\n\n        return decoratedMethod.apply(this, arguments);\n      };\n    };\n\n    for (var d = 0; d < decoratedMethods.length; d++) {\n      var decoratedMethod = decoratedMethods[d];\n\n      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n    }\n\n    return DecoratedClass;\n  };\n\n  var Observable = function () {\n    this.listeners = {};\n  };\n\n  Observable.prototype.on = function (event, callback) {\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.listeners[event].push(callback);\n    } else {\n      this.listeners[event] = [callback];\n    }\n  };\n\n  Observable.prototype.trigger = function (event) {\n    var slice = Array.prototype.slice;\n    var params = slice.call(arguments, 1);\n\n    this.listeners = this.listeners || {};\n\n    // Params should always come in as an array\n    if (params == null) {\n      params = [];\n    }\n\n    // If there are no arguments to the event, use a temporary object\n    if (params.length === 0) {\n      params.push({});\n    }\n\n    // Set the `_type` of the first object to the event\n    params[0]._type = event;\n\n    if (event in this.listeners) {\n      this.invoke(this.listeners[event], slice.call(arguments, 1));\n    }\n\n    if ('*' in this.listeners) {\n      this.invoke(this.listeners['*'], arguments);\n    }\n  };\n\n  Observable.prototype.invoke = function (listeners, params) {\n    for (var i = 0, len = listeners.length; i < len; i++) {\n      listeners[i].apply(this, params);\n    }\n  };\n\n  Utils.Observable = Observable;\n\n  Utils.generateChars = function (length) {\n    var chars = '';\n\n    for (var i = 0; i < length; i++) {\n      var randomChar = Math.floor(Math.random() * 36);\n      chars += randomChar.toString(36);\n    }\n\n    return chars;\n  };\n\n  Utils.bind = function (func, context) {\n    return function () {\n      func.apply(context, arguments);\n    };\n  };\n\n  Utils._convertData = function (data) {\n    for (var originalKey in data) {\n      var keys = originalKey.split('-');\n\n      var dataLevel = data;\n\n      if (keys.length === 1) {\n        continue;\n      }\n\n      for (var k = 0; k < keys.length; k++) {\n        var key = keys[k];\n\n        // Lowercase the first letter\n        // By default, dash-separated becomes camelCase\n        key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n        if (!(key in dataLevel)) {\n          dataLevel[key] = {};\n        }\n\n        if (k == keys.length - 1) {\n          dataLevel[key] = data[originalKey];\n        }\n\n        dataLevel = dataLevel[key];\n      }\n\n      delete data[originalKey];\n    }\n\n    return data;\n  };\n\n  Utils.hasScroll = function (index, el) {\n    // Adapted from the function created by @ShadowScripter\n    // and adapted by @BillBarry on the Stack Exchange Code Review website.\n    // The original code can be found at\n    // http://codereview.stackexchange.com/q/13338\n    // and was designed to be used with the Sizzle selector engine.\n\n    var $el = $(el);\n    var overflowX = el.style.overflowX;\n    var overflowY = el.style.overflowY;\n\n    //Check both x and y declarations\n    if (overflowX === overflowY &&\n        (overflowY === 'hidden' || overflowY === 'visible')) {\n      return false;\n    }\n\n    if (overflowX === 'scroll' || overflowY === 'scroll') {\n      return true;\n    }\n\n    return ($el.innerHeight() < el.scrollHeight ||\n      $el.innerWidth() < el.scrollWidth);\n  };\n\n  Utils.escapeMarkup = function (markup) {\n    var replaceMap = {\n      '\\\\': '&#92;',\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '/': '&#47;'\n    };\n\n    // Do not try to escape the markup if it's not a string\n    if (typeof markup !== 'string') {\n      return markup;\n    }\n\n    return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n      return replaceMap[match];\n    });\n  };\n\n  // Cache objects in Utils.__cache instead of $.data (see #4346)\n  Utils.__cache = {};\n\n  var id = 0;\n  Utils.GetUniqueElementId = function (element) {\n    // Get a unique element Id. If element has no id,\n    // creates a new unique number, stores it in the id\n    // attribute and returns the new id with a prefix.\n    // If an id already exists, it simply returns it with a prefix.\n\n    var select2Id = element.getAttribute('data-select2-id');\n\n    if (select2Id != null) {\n      return select2Id;\n    }\n\n    // If element has id, use it.\n    if (element.id) {\n      select2Id = 'select2-data-' + element.id;\n    } else {\n      select2Id = 'select2-data-' + (++id).toString() +\n        '-' + Utils.generateChars(4);\n    }\n\n    element.setAttribute('data-select2-id', select2Id);\n\n    return select2Id;\n  };\n\n  Utils.StoreData = function (element, name, value) {\n    // Stores an item in the cache for a specified element.\n    // name is the cache key.\n    var id = Utils.GetUniqueElementId(element);\n    if (!Utils.__cache[id]) {\n      Utils.__cache[id] = {};\n    }\n\n    Utils.__cache[id][name] = value;\n  };\n\n  Utils.GetData = function (element, name) {\n    // Retrieves a value from the cache by its key (name)\n    // name is optional. If no name specified, return\n    // all cache items for the specified element.\n    // and for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (name) {\n      if (Utils.__cache[id]) {\n        if (Utils.__cache[id][name] != null) {\n          return Utils.__cache[id][name];\n        }\n        return $(element).data(name); // Fallback to HTML5 data attribs.\n      }\n      return $(element).data(name); // Fallback to HTML5 data attribs.\n    } else {\n      return Utils.__cache[id];\n    }\n  };\n\n  Utils.RemoveData = function (element) {\n    // Removes all cached items for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (Utils.__cache[id] != null) {\n      delete Utils.__cache[id];\n    }\n\n    element.removeAttribute('data-select2-id');\n  };\n\n  Utils.copyNonInternalCssClasses = function (dest, src) {\n    var classes;\n\n    var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n    destinationClasses = destinationClasses.filter(function (clazz) {\n      // Save all Select2 classes\n      return clazz.indexOf('select2-') === 0;\n    });\n\n    var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n    sourceClasses = sourceClasses.filter(function (clazz) {\n      // Only copy non-Select2 classes\n      return clazz.indexOf('select2-') !== 0;\n    });\n\n    var replacements = destinationClasses.concat(sourceClasses);\n\n    dest.setAttribute('class', replacements.join(' '));\n  };\n\n  return Utils;\n});\n\nS2.define('select2/results',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Results ($element, options, dataAdapter) {\n    this.$element = $element;\n    this.data = dataAdapter;\n    this.options = options;\n\n    Results.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Results, Utils.Observable);\n\n  Results.prototype.render = function () {\n    var $results = $(\n      '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n    );\n\n    if (this.options.get('multiple')) {\n      $results.attr('aria-multiselectable', 'true');\n    }\n\n    this.$results = $results;\n\n    return $results;\n  };\n\n  Results.prototype.clear = function () {\n    this.$results.empty();\n  };\n\n  Results.prototype.displayMessage = function (params) {\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    this.clear();\n    this.hideLoading();\n\n    var $message = $(\n      '<li role=\"alert\" aria-live=\"assertive\"' +\n      ' class=\"select2-results__option\"></li>'\n    );\n\n    var message = this.options.get('translations').get(params.message);\n\n    $message.append(\n      escapeMarkup(\n        message(params.args)\n      )\n    );\n\n    $message[0].className += ' select2-results__message';\n\n    this.$results.append($message);\n  };\n\n  Results.prototype.hideMessages = function () {\n    this.$results.find('.select2-results__message').remove();\n  };\n\n  Results.prototype.append = function (data) {\n    this.hideLoading();\n\n    var $options = [];\n\n    if (data.results == null || data.results.length === 0) {\n      if (this.$results.children().length === 0) {\n        this.trigger('results:message', {\n          message: 'noResults'\n        });\n      }\n\n      return;\n    }\n\n    data.results = this.sort(data.results);\n\n    for (var d = 0; d < data.results.length; d++) {\n      var item = data.results[d];\n\n      var $option = this.option(item);\n\n      $options.push($option);\n    }\n\n    this.$results.append($options);\n  };\n\n  Results.prototype.position = function ($results, $dropdown) {\n    var $resultsContainer = $dropdown.find('.select2-results');\n    $resultsContainer.append($results);\n  };\n\n  Results.prototype.sort = function (data) {\n    var sorter = this.options.get('sorter');\n\n    return sorter(data);\n  };\n\n  Results.prototype.highlightFirstItem = function () {\n    var $options = this.$results\n      .find('.select2-results__option--selectable');\n\n    var $selected = $options.filter('.select2-results__option--selected');\n\n    // Check if there are any selected options\n    if ($selected.length > 0) {\n      // If there are selected options, highlight the first\n      $selected.first().trigger('mouseenter');\n    } else {\n      // If there are no selected options, highlight the first option\n      // in the dropdown\n      $options.first().trigger('mouseenter');\n    }\n\n    this.ensureHighlightVisible();\n  };\n\n  Results.prototype.setClasses = function () {\n    var self = this;\n\n    this.data.current(function (selected) {\n      var selectedIds = selected.map(function (s) {\n        return s.id.toString();\n      });\n\n      var $options = self.$results\n        .find('.select2-results__option--selectable');\n\n      $options.each(function () {\n        var $option = $(this);\n\n        var item = Utils.GetData(this, 'data');\n\n        // id needs to be converted to a string when comparing\n        var id = '' + item.id;\n\n        if ((item.element != null && item.element.selected) ||\n            (item.element == null && selectedIds.indexOf(id) > -1)) {\n          this.classList.add('select2-results__option--selected');\n          $option.attr('aria-selected', 'true');\n        } else {\n          this.classList.remove('select2-results__option--selected');\n          $option.attr('aria-selected', 'false');\n        }\n      });\n\n    });\n  };\n\n  Results.prototype.showLoading = function (params) {\n    this.hideLoading();\n\n    var loadingMore = this.options.get('translations').get('searching');\n\n    var loading = {\n      disabled: true,\n      loading: true,\n      text: loadingMore(params)\n    };\n    var $loading = this.option(loading);\n    $loading.className += ' loading-results';\n\n    this.$results.prepend($loading);\n  };\n\n  Results.prototype.hideLoading = function () {\n    this.$results.find('.loading-results').remove();\n  };\n\n  Results.prototype.option = function (data) {\n    var option = document.createElement('li');\n    option.classList.add('select2-results__option');\n    option.classList.add('select2-results__option--selectable');\n\n    var attrs = {\n      'role': 'option'\n    };\n\n    var matches = window.Element.prototype.matches ||\n      window.Element.prototype.msMatchesSelector ||\n      window.Element.prototype.webkitMatchesSelector;\n\n    if ((data.element != null && matches.call(data.element, ':disabled')) ||\n        (data.element == null && data.disabled)) {\n      attrs['aria-disabled'] = 'true';\n\n      option.classList.remove('select2-results__option--selectable');\n      option.classList.add('select2-results__option--disabled');\n    }\n\n    if (data.id == null) {\n      option.classList.remove('select2-results__option--selectable');\n    }\n\n    if (data._resultId != null) {\n      option.id = data._resultId;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    if (data.children) {\n      attrs.role = 'group';\n      attrs['aria-label'] = data.text;\n\n      option.classList.remove('select2-results__option--selectable');\n      option.classList.add('select2-results__option--group');\n    }\n\n    for (var attr in attrs) {\n      var val = attrs[attr];\n\n      option.setAttribute(attr, val);\n    }\n\n    if (data.children) {\n      var $option = $(option);\n\n      var label = document.createElement('strong');\n      label.className = 'select2-results__group';\n\n      this.template(data, label);\n\n      var $children = [];\n\n      for (var c = 0; c < data.children.length; c++) {\n        var child = data.children[c];\n\n        var $child = this.option(child);\n\n        $children.push($child);\n      }\n\n      var $childrenContainer = $('<ul></ul>', {\n        'class': 'select2-results__options select2-results__options--nested'\n      });\n\n      $childrenContainer.append($children);\n\n      $option.append(label);\n      $option.append($childrenContainer);\n    } else {\n      this.template(data, option);\n    }\n\n    Utils.StoreData(option, 'data', data);\n\n    return option;\n  };\n\n  Results.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-results';\n\n    this.$results.attr('id', id);\n\n    container.on('results:all', function (params) {\n      self.clear();\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('results:append', function (params) {\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('query', function (params) {\n      self.hideMessages();\n      self.showLoading(params);\n    });\n\n    container.on('select', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('unselect', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expended=\"true\"\n      self.$results.attr('aria-expanded', 'true');\n      self.$results.attr('aria-hidden', 'false');\n\n      self.setClasses();\n      self.ensureHighlightVisible();\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expended=\"false\"\n      self.$results.attr('aria-expanded', 'false');\n      self.$results.attr('aria-hidden', 'true');\n      self.$results.removeAttr('aria-activedescendant');\n    });\n\n    container.on('results:toggle', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      $highlighted.trigger('mouseup');\n    });\n\n    container.on('results:select', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      var data = Utils.GetData($highlighted[0], 'data');\n\n      if ($highlighted.hasClass('select2-results__option--selected')) {\n        self.trigger('close', {});\n      } else {\n        self.trigger('select', {\n          data: data\n        });\n      }\n    });\n\n    container.on('results:previous', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('.select2-results__option--selectable');\n\n      var currentIndex = $options.index($highlighted);\n\n      // If we are already at the top, don't move further\n      // If no options, currentIndex will be -1\n      if (currentIndex <= 0) {\n        return;\n      }\n\n      var nextIndex = currentIndex - 1;\n\n      // If none are highlighted, highlight the first\n      if ($highlighted.length === 0) {\n        nextIndex = 0;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top;\n      var nextTop = $next.offset().top;\n      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextTop - currentOffset < 0) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:next', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('.select2-results__option--selectable');\n\n      var currentIndex = $options.index($highlighted);\n\n      var nextIndex = currentIndex + 1;\n\n      // If we are at the last option, stay there\n      if (nextIndex >= $options.length) {\n        return;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var nextBottom = $next.offset().top + $next.outerHeight(false);\n      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextBottom > currentOffset) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      params.element[0].classList.add('select2-results__option--highlighted');\n      params.element[0].setAttribute('aria-selected', 'true');\n    });\n\n    container.on('results:message', function (params) {\n      self.displayMessage(params);\n    });\n\n    if ($.fn.mousewheel) {\n      this.$results.on('mousewheel', function (e) {\n        var top = self.$results.scrollTop();\n\n        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n        if (isAtTop) {\n          self.$results.scrollTop(0);\n\n          e.preventDefault();\n          e.stopPropagation();\n        } else if (isAtBottom) {\n          self.$results.scrollTop(\n            self.$results.get(0).scrollHeight - self.$results.height()\n          );\n\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      });\n    }\n\n    this.$results.on('mouseup', '.select2-results__option--selectable',\n      function (evt) {\n      var $this = $(this);\n\n      var data = Utils.GetData(this, 'data');\n\n      if ($this.hasClass('select2-results__option--selected')) {\n        if (self.options.get('multiple')) {\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        } else {\n          self.trigger('close', {});\n        }\n\n        return;\n      }\n\n      self.trigger('select', {\n        originalEvent: evt,\n        data: data\n      });\n    });\n\n    this.$results.on('mouseenter', '.select2-results__option--selectable',\n      function (evt) {\n      var data = Utils.GetData(this, 'data');\n\n      self.getHighlightedResults()\n          .removeClass('select2-results__option--highlighted')\n          .attr('aria-selected', 'false');\n\n      self.trigger('results:focus', {\n        data: data,\n        element: $(this)\n      });\n    });\n  };\n\n  Results.prototype.getHighlightedResults = function () {\n    var $highlighted = this.$results\n    .find('.select2-results__option--highlighted');\n\n    return $highlighted;\n  };\n\n  Results.prototype.destroy = function () {\n    this.$results.remove();\n  };\n\n  Results.prototype.ensureHighlightVisible = function () {\n    var $highlighted = this.getHighlightedResults();\n\n    if ($highlighted.length === 0) {\n      return;\n    }\n\n    var $options = this.$results.find('.select2-results__option--selectable');\n\n    var currentIndex = $options.index($highlighted);\n\n    var currentOffset = this.$results.offset().top;\n    var nextTop = $highlighted.offset().top;\n    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n    var offsetDelta = nextTop - currentOffset;\n    nextOffset -= $highlighted.outerHeight(false) * 2;\n\n    if (currentIndex <= 2) {\n      this.$results.scrollTop(0);\n    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n      this.$results.scrollTop(nextOffset);\n    }\n  };\n\n  Results.prototype.template = function (result, container) {\n    var template = this.options.get('templateResult');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    var content = template(result, container);\n\n    if (content == null) {\n      container.style.display = 'none';\n    } else if (typeof content === 'string') {\n      container.innerHTML = escapeMarkup(content);\n    } else {\n      $(container).append(content);\n    }\n  };\n\n  return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n  var KEYS = {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    SHIFT: 16,\n    CTRL: 17,\n    ALT: 18,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n\n  return KEYS;\n});\n\nS2.define('select2/selection/base',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function BaseSelection ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    BaseSelection.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseSelection, Utils.Observable);\n\n  BaseSelection.prototype.render = function () {\n    var $selection = $(\n      '<span class=\"select2-selection\" role=\"combobox\" ' +\n      ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n      '</span>'\n    );\n\n    this._tabindex = 0;\n\n    if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n      this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n    } else if (this.$element.attr('tabindex') != null) {\n      this._tabindex = this.$element.attr('tabindex');\n    }\n\n    $selection.attr('title', this.$element.attr('title'));\n    $selection.attr('tabindex', this._tabindex);\n    $selection.attr('aria-disabled', 'false');\n\n    this.$selection = $selection;\n\n    return $selection;\n  };\n\n  BaseSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    this.container = container;\n\n    this.$selection.on('focus', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('blur', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      if (evt.which === KEYS.SPACE) {\n        evt.preventDefault();\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      self.$selection.attr('aria-activedescendant', params.data._resultId);\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expanded=\"true\"\n      self.$selection.attr('aria-expanded', 'true');\n      self.$selection.attr('aria-owns', resultsId);\n\n      self._attachCloseHandler(container);\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expanded=\"false\"\n      self.$selection.attr('aria-expanded', 'false');\n      self.$selection.removeAttr('aria-activedescendant');\n      self.$selection.removeAttr('aria-owns');\n\n      self.$selection.trigger('focus');\n\n      self._detachCloseHandler(container);\n    });\n\n    container.on('enable', function () {\n      self.$selection.attr('tabindex', self._tabindex);\n      self.$selection.attr('aria-disabled', 'false');\n    });\n\n    container.on('disable', function () {\n      self.$selection.attr('tabindex', '-1');\n      self.$selection.attr('aria-disabled', 'true');\n    });\n  };\n\n  BaseSelection.prototype._handleBlur = function (evt) {\n    var self = this;\n\n    // This needs to be delayed as the active element is the body when the tab\n    // key is pressed, possibly along with others.\n    window.setTimeout(function () {\n      // Don't trigger `blur` if the focus is still in the selection\n      if (\n        (document.activeElement == self.$selection[0]) ||\n        ($.contains(self.$selection[0], document.activeElement))\n      ) {\n        return;\n      }\n\n      self.trigger('blur', evt);\n    }, 1);\n  };\n\n  BaseSelection.prototype._attachCloseHandler = function (container) {\n\n    $(document.body).on('mousedown.select2.' + container.id, function (e) {\n      var $target = $(e.target);\n\n      var $select = $target.closest('.select2');\n\n      var $all = $('.select2.select2-container--open');\n\n      $all.each(function () {\n        if (this == $select[0]) {\n          return;\n        }\n\n        var $element = Utils.GetData(this, 'element');\n\n        $element.select2('close');\n      });\n    });\n  };\n\n  BaseSelection.prototype._detachCloseHandler = function (container) {\n    $(document.body).off('mousedown.select2.' + container.id);\n  };\n\n  BaseSelection.prototype.position = function ($selection, $container) {\n    var $selectionContainer = $container.find('.selection');\n    $selectionContainer.append($selection);\n  };\n\n  BaseSelection.prototype.destroy = function () {\n    this._detachCloseHandler(this.container);\n  };\n\n  BaseSelection.prototype.update = function (data) {\n    throw new Error('The `update` method must be defined in child classes.');\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  BaseSelection.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  BaseSelection.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n  'jquery',\n  './base',\n  '../utils',\n  '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n  function SingleSelection () {\n    SingleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(SingleSelection, BaseSelection);\n\n  SingleSelection.prototype.render = function () {\n    var $selection = SingleSelection.__super__.render.call(this);\n\n    $selection[0].classList.add('select2-selection--single');\n\n    $selection.html(\n      '<span class=\"select2-selection__rendered\"></span>' +\n      '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n        '<b role=\"presentation\"></b>' +\n      '</span>'\n    );\n\n    return $selection;\n  };\n\n  SingleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    SingleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n\n    this.$selection.find('.select2-selection__rendered')\n      .attr('id', id)\n      .attr('role', 'textbox')\n      .attr('aria-readonly', 'true');\n    this.$selection.attr('aria-labelledby', id);\n\n    this.$selection.on('mousedown', function (evt) {\n      // Only respond to left clicks\n      if (evt.which !== 1) {\n        return;\n      }\n\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on('focus', function (evt) {\n      // User focuses on the container\n    });\n\n    this.$selection.on('blur', function (evt) {\n      // User exits the container\n    });\n\n    container.on('focus', function (evt) {\n      if (!container.isOpen()) {\n        self.$selection.trigger('focus');\n      }\n    });\n  };\n\n  SingleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title'); // clear tooltip on empty\n  };\n\n  SingleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  SingleSelection.prototype.selectionContainer = function () {\n    return $('<span></span>');\n  };\n\n  SingleSelection.prototype.update = function (data) {\n    if (data.length === 0) {\n      this.clear();\n      return;\n    }\n\n    var selection = data[0];\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    var formatted = this.display(selection, $rendered);\n\n    $rendered.empty().append(formatted);\n\n    var title = selection.title || selection.text;\n\n    if (title) {\n      $rendered.attr('title', title);\n    } else {\n      $rendered.removeAttr('title');\n    }\n  };\n\n  return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n  'jquery',\n  './base',\n  '../utils'\n], function ($, BaseSelection, Utils) {\n  function MultipleSelection ($element, options) {\n    MultipleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(MultipleSelection, BaseSelection);\n\n  MultipleSelection.prototype.render = function () {\n    var $selection = MultipleSelection.__super__.render.call(this);\n\n    $selection[0].classList.add('select2-selection--multiple');\n\n    $selection.html(\n      '<ul class=\"select2-selection__rendered\"></ul>'\n    );\n\n    return $selection;\n  };\n\n  MultipleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    MultipleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n    this.$selection.find('.select2-selection__rendered').attr('id', id);\n\n    this.$selection.on('click', function (evt) {\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on(\n      'click',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        var $remove = $(this);\n        var $selection = $remove.parent();\n\n        var data = Utils.GetData($selection[0], 'data');\n\n        self.trigger('unselect', {\n          originalEvent: evt,\n          data: data\n        });\n      }\n    );\n\n    this.$selection.on(\n      'keydown',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        evt.stopPropagation();\n      }\n    );\n  };\n\n  MultipleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title');\n  };\n\n  MultipleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  MultipleSelection.prototype.selectionContainer = function () {\n    var $container = $(\n      '<li class=\"select2-selection__choice\">' +\n        '<button type=\"button\" class=\"select2-selection__choice__remove\" ' +\n        'tabindex=\"-1\">' +\n          '<span aria-hidden=\"true\">&times;</span>' +\n        '</button>' +\n        '<span class=\"select2-selection__choice__display\"></span>' +\n      '</li>'\n    );\n\n    return $container;\n  };\n\n  MultipleSelection.prototype.update = function (data) {\n    this.clear();\n\n    if (data.length === 0) {\n      return;\n    }\n\n    var $selections = [];\n\n    var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n      .attr('id') + '-choice-';\n\n    for (var d = 0; d < data.length; d++) {\n      var selection = data[d];\n\n      var $selection = this.selectionContainer();\n      var formatted = this.display(selection, $selection);\n\n      var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n      if (selection.id) {\n        selectionId += selection.id;\n      } else {\n        selectionId += Utils.generateChars(4);\n      }\n\n      $selection.find('.select2-selection__choice__display')\n        .append(formatted)\n        .attr('id', selectionId);\n\n      var title = selection.title || selection.text;\n\n      if (title) {\n        $selection.attr('title', title);\n      }\n\n      var removeItem = this.options.get('translations').get('removeItem');\n\n      var $remove = $selection.find('.select2-selection__choice__remove');\n\n      $remove.attr('title', removeItem());\n      $remove.attr('aria-label', removeItem());\n      $remove.attr('aria-describedby', selectionId);\n\n      Utils.StoreData($selection[0], 'data', selection);\n\n      $selections.push($selection);\n    }\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n\n    $rendered.append($selections);\n  };\n\n  return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\n  function Placeholder (decorated, $element, options) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options);\n  }\n\n  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n    var $placeholder = this.selectionContainer();\n\n    $placeholder.html(this.display(placeholder));\n    $placeholder[0].classList.add('select2-selection__placeholder');\n    $placeholder[0].classList.remove('select2-selection__choice');\n\n    return $placeholder;\n  };\n\n  Placeholder.prototype.update = function (decorated, data) {\n    var singlePlaceholder = (\n      data.length == 1 && data[0].id != this.placeholder.id\n    );\n    var multipleSelections = data.length > 1;\n\n    if (multipleSelections || singlePlaceholder) {\n      return decorated.call(this, data);\n    }\n\n    this.clear();\n\n    var $placeholder = this.createPlaceholder(this.placeholder);\n\n    this.$selection.find('.select2-selection__rendered').append($placeholder);\n  };\n\n  return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n  'jquery',\n  '../keys',\n  '../utils'\n], function ($, KEYS, Utils) {\n  function AllowClear () { }\n\n  AllowClear.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    if (this.placeholder == null) {\n      if (this.options.get('debug') && window.console && console.error) {\n        console.error(\n          'Select2: The `allowClear` option should be used in combination ' +\n          'with the `placeholder` option.'\n        );\n      }\n    }\n\n    this.$selection.on('mousedown', '.select2-selection__clear',\n      function (evt) {\n        self._handleClear(evt);\n    });\n\n    container.on('keypress', function (evt) {\n      self._handleKeyboardClear(evt, container);\n    });\n  };\n\n  AllowClear.prototype._handleClear = function (_, evt) {\n    // Ignore the event if it is disabled\n    if (this.isDisabled()) {\n      return;\n    }\n\n    var $clear = this.$selection.find('.select2-selection__clear');\n\n    // Ignore the event if nothing has been selected\n    if ($clear.length === 0) {\n      return;\n    }\n\n    evt.stopPropagation();\n\n    var data = Utils.GetData($clear[0], 'data');\n\n    var previousVal = this.$element.val();\n    this.$element.val(this.placeholder.id);\n\n    var unselectData = {\n      data: data\n    };\n    this.trigger('clear', unselectData);\n    if (unselectData.prevented) {\n      this.$element.val(previousVal);\n      return;\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      unselectData = {\n        data: data[d]\n      };\n\n      // Trigger the `unselect` event, so people can prevent it from being\n      // cleared.\n      this.trigger('unselect', unselectData);\n\n      // If the event was prevented, don't clear it out.\n      if (unselectData.prevented) {\n        this.$element.val(previousVal);\n        return;\n      }\n    }\n\n    this.$element.trigger('input').trigger('change');\n\n    this.trigger('toggle', {});\n  };\n\n  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n    if (container.isOpen()) {\n      return;\n    }\n\n    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n      this._handleClear(evt);\n    }\n  };\n\n  AllowClear.prototype.update = function (decorated, data) {\n    decorated.call(this, data);\n\n    this.$selection.find('.select2-selection__clear').remove();\n\n    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n        data.length === 0) {\n      return;\n    }\n\n    var selectionId = this.$selection.find('.select2-selection__rendered')\n      .attr('id');\n\n    var removeAll = this.options.get('translations').get('removeAllItems');\n\n    var $remove = $(\n      '<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' +\n        '<span aria-hidden=\"true\">&times;</span>' +\n      '</button>'\n    );\n    $remove.attr('title', removeAll());\n    $remove.attr('aria-label', removeAll());\n    $remove.attr('aria-describedby', selectionId);\n    Utils.StoreData($remove[0], 'data', data);\n\n    this.$selection.prepend($remove);\n  };\n\n  return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function Search (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  Search.prototype.render = function (decorated) {\n    var $search = $(\n      '<span class=\"select2-search select2-search--inline\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    this.$search.prop('autocomplete', this.options.get('autocomplete'));\n\n    var $rendered = decorated.call(this);\n\n    this._transferTabIndex();\n    $rendered.append(this.$searchContainer);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n    var selectionId = container.id + '-container';\n\n    decorated.call(this, container, $container);\n\n    self.$search.attr('aria-describedby', selectionId);\n\n    container.on('open', function () {\n      self.$search.attr('aria-controls', resultsId);\n      self.$search.trigger('focus');\n    });\n\n    container.on('close', function () {\n      self.$search.val('');\n      self.resizeSearch();\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n      self.$search.trigger('focus');\n    });\n\n    container.on('enable', function () {\n      self.$search.prop('disabled', false);\n\n      self._transferTabIndex();\n    });\n\n    container.on('disable', function () {\n      self.$search.prop('disabled', true);\n    });\n\n    container.on('focus', function (evt) {\n      self.$search.trigger('focus');\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n\n    this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n      evt.stopPropagation();\n\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n\n      var key = evt.which;\n\n      if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n        var $previousChoice = self.$selection\n          .find('.select2-selection__choice').last();\n\n        if ($previousChoice.length > 0) {\n          var item = Utils.GetData($previousChoice[0], 'data');\n\n          self.searchRemoveChoice(item);\n\n          evt.preventDefault();\n        }\n      }\n    });\n\n    this.$selection.on('click', '.select2-search--inline', function (evt) {\n      if (self.$search.val()) {\n        evt.stopPropagation();\n      }\n    });\n\n    // Try to detect the IE version should the `documentMode` property that\n    // is stored on the document. This is only implemented in IE and is\n    // slightly cleaner than doing a user agent check.\n    // This property is not available in Edge, but Edge also doesn't have\n    // this bug.\n    var msie = document.documentMode;\n    var disableInputEvents = msie && msie <= 11;\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$selection.on(\n      'input.searchcheck',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents) {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        // Unbind the duplicated `keyup` event\n        self.$selection.off('keyup.search');\n      }\n    );\n\n    this.$selection.on(\n      'keyup.search input.search',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents && evt.type === 'input') {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        var key = evt.which;\n\n        // We can freely ignore events from modifier keys\n        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n          return;\n        }\n\n        // Tabbing will be handled during the `keydown` phase\n        if (key == KEYS.TAB) {\n          return;\n        }\n\n        self.handleSearch(evt);\n      }\n    );\n  };\n\n  /**\n   * This method will transfer the tabindex attribute from the rendered\n   * selection to the search box. This allows for the search box to be used as\n   * the primary focus instead of the selection container.\n   *\n   * @private\n   */\n  Search.prototype._transferTabIndex = function (decorated) {\n    this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n    this.$selection.attr('tabindex', '-1');\n  };\n\n  Search.prototype.createPlaceholder = function (decorated, placeholder) {\n    this.$search.attr('placeholder', placeholder.text);\n  };\n\n  Search.prototype.update = function (decorated, data) {\n    var searchHadFocus = this.$search[0] == document.activeElement;\n\n    this.$search.attr('placeholder', '');\n\n    decorated.call(this, data);\n\n    this.resizeSearch();\n    if (searchHadFocus) {\n      this.$search.trigger('focus');\n    }\n  };\n\n  Search.prototype.handleSearch = function () {\n    this.resizeSearch();\n\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.searchRemoveChoice = function (decorated, item) {\n    this.trigger('unselect', {\n      data: item\n    });\n\n    this.$search.val(item.text);\n    this.handleSearch();\n  };\n\n  Search.prototype.resizeSearch = function () {\n    this.$search.css('width', '25px');\n\n    var width = '100%';\n\n    if (this.$search.attr('placeholder') === '') {\n      var minimumWidth = this.$search.val().length + 1;\n\n      width = (minimumWidth * 0.75) + 'em';\n    }\n\n    this.$search.css('width', width);\n  };\n\n  return Search;\n});\n\nS2.define('select2/selection/selectionCss',[\n  '../utils'\n], function (Utils) {\n  function SelectionCSS () { }\n\n  SelectionCSS.prototype.render = function (decorated) {\n    var $selection = decorated.call(this);\n\n    var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n    if (selectionCssClass.indexOf(':all:') !== -1) {\n      selectionCssClass = selectionCssClass.replace(':all:', '');\n\n      Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n    }\n\n    $selection.addClass(selectionCssClass);\n\n    return $selection;\n  };\n\n  return SelectionCSS;\n});\n\nS2.define('select2/selection/eventRelay',[\n  'jquery'\n], function ($) {\n  function EventRelay () { }\n\n  EventRelay.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n    var relayEvents = [\n      'open', 'opening',\n      'close', 'closing',\n      'select', 'selecting',\n      'unselect', 'unselecting',\n      'clear', 'clearing'\n    ];\n\n    var preventableEvents = [\n      'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n    ];\n\n    decorated.call(this, container, $container);\n\n    container.on('*', function (name, params) {\n      // Ignore events that should not be relayed\n      if (relayEvents.indexOf(name) === -1) {\n        return;\n      }\n\n      // The parameters should always be an object\n      params = params || {};\n\n      // Generate the jQuery event for the Select2 event\n      var evt = $.Event('select2:' + name, {\n        params: params\n      });\n\n      self.$element.trigger(evt);\n\n      // Only handle preventable events if it was one\n      if (preventableEvents.indexOf(name) === -1) {\n        return;\n      }\n\n      params.prevented = evt.isDefaultPrevented();\n    });\n  };\n\n  return EventRelay;\n});\n\nS2.define('select2/translation',[\n  'jquery',\n  'require'\n], function ($, require) {\n  function Translation (dict) {\n    this.dict = dict || {};\n  }\n\n  Translation.prototype.all = function () {\n    return this.dict;\n  };\n\n  Translation.prototype.get = function (key) {\n    return this.dict[key];\n  };\n\n  Translation.prototype.extend = function (translation) {\n    this.dict = $.extend({}, translation.all(), this.dict);\n  };\n\n  // Static functions\n\n  Translation._cache = {};\n\n  Translation.loadPath = function (path) {\n    if (!(path in Translation._cache)) {\n      var translations = require(path);\n\n      Translation._cache[path] = translations;\n    }\n\n    return new Translation(Translation._cache[path]);\n  };\n\n  return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n  var diacritics = {\n    '\\u24B6': 'A',\n    '\\uFF21': 'A',\n    '\\u00C0': 'A',\n    '\\u00C1': 'A',\n    '\\u00C2': 'A',\n    '\\u1EA6': 'A',\n    '\\u1EA4': 'A',\n    '\\u1EAA': 'A',\n    '\\u1EA8': 'A',\n    '\\u00C3': 'A',\n    '\\u0100': 'A',\n    '\\u0102': 'A',\n    '\\u1EB0': 'A',\n    '\\u1EAE': 'A',\n    '\\u1EB4': 'A',\n    '\\u1EB2': 'A',\n    '\\u0226': 'A',\n    '\\u01E0': 'A',\n    '\\u00C4': 'A',\n    '\\u01DE': 'A',\n    '\\u1EA2': 'A',\n    '\\u00C5': 'A',\n    '\\u01FA': 'A',\n    '\\u01CD': 'A',\n    '\\u0200': 'A',\n    '\\u0202': 'A',\n    '\\u1EA0': 'A',\n    '\\u1EAC': 'A',\n    '\\u1EB6': 'A',\n    '\\u1E00': 'A',\n    '\\u0104': 'A',\n    '\\u023A': 'A',\n    '\\u2C6F': 'A',\n    '\\uA732': 'AA',\n    '\\u00C6': 'AE',\n    '\\u01FC': 'AE',\n    '\\u01E2': 'AE',\n    '\\uA734': 'AO',\n    '\\uA736': 'AU',\n    '\\uA738': 'AV',\n    '\\uA73A': 'AV',\n    '\\uA73C': 'AY',\n    '\\u24B7': 'B',\n    '\\uFF22': 'B',\n    '\\u1E02': 'B',\n    '\\u1E04': 'B',\n    '\\u1E06': 'B',\n    '\\u0243': 'B',\n    '\\u0182': 'B',\n    '\\u0181': 'B',\n    '\\u24B8': 'C',\n    '\\uFF23': 'C',\n    '\\u0106': 'C',\n    '\\u0108': 'C',\n    '\\u010A': 'C',\n    '\\u010C': 'C',\n    '\\u00C7': 'C',\n    '\\u1E08': 'C',\n    '\\u0187': 'C',\n    '\\u023B': 'C',\n    '\\uA73E': 'C',\n    '\\u24B9': 'D',\n    '\\uFF24': 'D',\n    '\\u1E0A': 'D',\n    '\\u010E': 'D',\n    '\\u1E0C': 'D',\n    '\\u1E10': 'D',\n    '\\u1E12': 'D',\n    '\\u1E0E': 'D',\n    '\\u0110': 'D',\n    '\\u018B': 'D',\n    '\\u018A': 'D',\n    '\\u0189': 'D',\n    '\\uA779': 'D',\n    '\\u01F1': 'DZ',\n    '\\u01C4': 'DZ',\n    '\\u01F2': 'Dz',\n    '\\u01C5': 'Dz',\n    '\\u24BA': 'E',\n    '\\uFF25': 'E',\n    '\\u00C8': 'E',\n    '\\u00C9': 'E',\n    '\\u00CA': 'E',\n    '\\u1EC0': 'E',\n    '\\u1EBE': 'E',\n    '\\u1EC4': 'E',\n    '\\u1EC2': 'E',\n    '\\u1EBC': 'E',\n    '\\u0112': 'E',\n    '\\u1E14': 'E',\n    '\\u1E16': 'E',\n    '\\u0114': 'E',\n    '\\u0116': 'E',\n    '\\u00CB': 'E',\n    '\\u1EBA': 'E',\n    '\\u011A': 'E',\n    '\\u0204': 'E',\n    '\\u0206': 'E',\n    '\\u1EB8': 'E',\n    '\\u1EC6': 'E',\n    '\\u0228': 'E',\n    '\\u1E1C': 'E',\n    '\\u0118': 'E',\n    '\\u1E18': 'E',\n    '\\u1E1A': 'E',\n    '\\u0190': 'E',\n    '\\u018E': 'E',\n    '\\u24BB': 'F',\n    '\\uFF26': 'F',\n    '\\u1E1E': 'F',\n    '\\u0191': 'F',\n    '\\uA77B': 'F',\n    '\\u24BC': 'G',\n    '\\uFF27': 'G',\n    '\\u01F4': 'G',\n    '\\u011C': 'G',\n    '\\u1E20': 'G',\n    '\\u011E': 'G',\n    '\\u0120': 'G',\n    '\\u01E6': 'G',\n    '\\u0122': 'G',\n    '\\u01E4': 'G',\n    '\\u0193': 'G',\n    '\\uA7A0': 'G',\n    '\\uA77D': 'G',\n    '\\uA77E': 'G',\n    '\\u24BD': 'H',\n    '\\uFF28': 'H',\n    '\\u0124': 'H',\n    '\\u1E22': 'H',\n    '\\u1E26': 'H',\n    '\\u021E': 'H',\n    '\\u1E24': 'H',\n    '\\u1E28': 'H',\n    '\\u1E2A': 'H',\n    '\\u0126': 'H',\n    '\\u2C67': 'H',\n    '\\u2C75': 'H',\n    '\\uA78D': 'H',\n    '\\u24BE': 'I',\n    '\\uFF29': 'I',\n    '\\u00CC': 'I',\n    '\\u00CD': 'I',\n    '\\u00CE': 'I',\n    '\\u0128': 'I',\n    '\\u012A': 'I',\n    '\\u012C': 'I',\n    '\\u0130': 'I',\n    '\\u00CF': 'I',\n    '\\u1E2E': 'I',\n    '\\u1EC8': 'I',\n    '\\u01CF': 'I',\n    '\\u0208': 'I',\n    '\\u020A': 'I',\n    '\\u1ECA': 'I',\n    '\\u012E': 'I',\n    '\\u1E2C': 'I',\n    '\\u0197': 'I',\n    '\\u24BF': 'J',\n    '\\uFF2A': 'J',\n    '\\u0134': 'J',\n    '\\u0248': 'J',\n    '\\u24C0': 'K',\n    '\\uFF2B': 'K',\n    '\\u1E30': 'K',\n    '\\u01E8': 'K',\n    '\\u1E32': 'K',\n    '\\u0136': 'K',\n    '\\u1E34': 'K',\n    '\\u0198': 'K',\n    '\\u2C69': 'K',\n    '\\uA740': 'K',\n    '\\uA742': 'K',\n    '\\uA744': 'K',\n    '\\uA7A2': 'K',\n    '\\u24C1': 'L',\n    '\\uFF2C': 'L',\n    '\\u013F': 'L',\n    '\\u0139': 'L',\n    '\\u013D': 'L',\n    '\\u1E36': 'L',\n    '\\u1E38': 'L',\n    '\\u013B': 'L',\n    '\\u1E3C': 'L',\n    '\\u1E3A': 'L',\n    '\\u0141': 'L',\n    '\\u023D': 'L',\n    '\\u2C62': 'L',\n    '\\u2C60': 'L',\n    '\\uA748': 'L',\n    '\\uA746': 'L',\n    '\\uA780': 'L',\n    '\\u01C7': 'LJ',\n    '\\u01C8': 'Lj',\n    '\\u24C2': 'M',\n    '\\uFF2D': 'M',\n    '\\u1E3E': 'M',\n    '\\u1E40': 'M',\n    '\\u1E42': 'M',\n    '\\u2C6E': 'M',\n    '\\u019C': 'M',\n    '\\u24C3': 'N',\n    '\\uFF2E': 'N',\n    '\\u01F8': 'N',\n    '\\u0143': 'N',\n    '\\u00D1': 'N',\n    '\\u1E44': 'N',\n    '\\u0147': 'N',\n    '\\u1E46': 'N',\n    '\\u0145': 'N',\n    '\\u1E4A': 'N',\n    '\\u1E48': 'N',\n    '\\u0220': 'N',\n    '\\u019D': 'N',\n    '\\uA790': 'N',\n    '\\uA7A4': 'N',\n    '\\u01CA': 'NJ',\n    '\\u01CB': 'Nj',\n    '\\u24C4': 'O',\n    '\\uFF2F': 'O',\n    '\\u00D2': 'O',\n    '\\u00D3': 'O',\n    '\\u00D4': 'O',\n    '\\u1ED2': 'O',\n    '\\u1ED0': 'O',\n    '\\u1ED6': 'O',\n    '\\u1ED4': 'O',\n    '\\u00D5': 'O',\n    '\\u1E4C': 'O',\n    '\\u022C': 'O',\n    '\\u1E4E': 'O',\n    '\\u014C': 'O',\n    '\\u1E50': 'O',\n    '\\u1E52': 'O',\n    '\\u014E': 'O',\n    '\\u022E': 'O',\n    '\\u0230': 'O',\n    '\\u00D6': 'O',\n    '\\u022A': 'O',\n    '\\u1ECE': 'O',\n    '\\u0150': 'O',\n    '\\u01D1': 'O',\n    '\\u020C': 'O',\n    '\\u020E': 'O',\n    '\\u01A0': 'O',\n    '\\u1EDC': 'O',\n    '\\u1EDA': 'O',\n    '\\u1EE0': 'O',\n    '\\u1EDE': 'O',\n    '\\u1EE2': 'O',\n    '\\u1ECC': 'O',\n    '\\u1ED8': 'O',\n    '\\u01EA': 'O',\n    '\\u01EC': 'O',\n    '\\u00D8': 'O',\n    '\\u01FE': 'O',\n    '\\u0186': 'O',\n    '\\u019F': 'O',\n    '\\uA74A': 'O',\n    '\\uA74C': 'O',\n    '\\u0152': 'OE',\n    '\\u01A2': 'OI',\n    '\\uA74E': 'OO',\n    '\\u0222': 'OU',\n    '\\u24C5': 'P',\n    '\\uFF30': 'P',\n    '\\u1E54': 'P',\n    '\\u1E56': 'P',\n    '\\u01A4': 'P',\n    '\\u2C63': 'P',\n    '\\uA750': 'P',\n    '\\uA752': 'P',\n    '\\uA754': 'P',\n    '\\u24C6': 'Q',\n    '\\uFF31': 'Q',\n    '\\uA756': 'Q',\n    '\\uA758': 'Q',\n    '\\u024A': 'Q',\n    '\\u24C7': 'R',\n    '\\uFF32': 'R',\n    '\\u0154': 'R',\n    '\\u1E58': 'R',\n    '\\u0158': 'R',\n    '\\u0210': 'R',\n    '\\u0212': 'R',\n    '\\u1E5A': 'R',\n    '\\u1E5C': 'R',\n    '\\u0156': 'R',\n    '\\u1E5E': 'R',\n    '\\u024C': 'R',\n    '\\u2C64': 'R',\n    '\\uA75A': 'R',\n    '\\uA7A6': 'R',\n    '\\uA782': 'R',\n    '\\u24C8': 'S',\n    '\\uFF33': 'S',\n    '\\u1E9E': 'S',\n    '\\u015A': 'S',\n    '\\u1E64': 'S',\n    '\\u015C': 'S',\n    '\\u1E60': 'S',\n    '\\u0160': 'S',\n    '\\u1E66': 'S',\n    '\\u1E62': 'S',\n    '\\u1E68': 'S',\n    '\\u0218': 'S',\n    '\\u015E': 'S',\n    '\\u2C7E': 'S',\n    '\\uA7A8': 'S',\n    '\\uA784': 'S',\n    '\\u24C9': 'T',\n    '\\uFF34': 'T',\n    '\\u1E6A': 'T',\n    '\\u0164': 'T',\n    '\\u1E6C': 'T',\n    '\\u021A': 'T',\n    '\\u0162': 'T',\n    '\\u1E70': 'T',\n    '\\u1E6E': 'T',\n    '\\u0166': 'T',\n    '\\u01AC': 'T',\n    '\\u01AE': 'T',\n    '\\u023E': 'T',\n    '\\uA786': 'T',\n    '\\uA728': 'TZ',\n    '\\u24CA': 'U',\n    '\\uFF35': 'U',\n    '\\u00D9': 'U',\n    '\\u00DA': 'U',\n    '\\u00DB': 'U',\n    '\\u0168': 'U',\n    '\\u1E78': 'U',\n    '\\u016A': 'U',\n    '\\u1E7A': 'U',\n    '\\u016C': 'U',\n    '\\u00DC': 'U',\n    '\\u01DB': 'U',\n    '\\u01D7': 'U',\n    '\\u01D5': 'U',\n    '\\u01D9': 'U',\n    '\\u1EE6': 'U',\n    '\\u016E': 'U',\n    '\\u0170': 'U',\n    '\\u01D3': 'U',\n    '\\u0214': 'U',\n    '\\u0216': 'U',\n    '\\u01AF': 'U',\n    '\\u1EEA': 'U',\n    '\\u1EE8': 'U',\n    '\\u1EEE': 'U',\n    '\\u1EEC': 'U',\n    '\\u1EF0': 'U',\n    '\\u1EE4': 'U',\n    '\\u1E72': 'U',\n    '\\u0172': 'U',\n    '\\u1E76': 'U',\n    '\\u1E74': 'U',\n    '\\u0244': 'U',\n    '\\u24CB': 'V',\n    '\\uFF36': 'V',\n    '\\u1E7C': 'V',\n    '\\u1E7E': 'V',\n    '\\u01B2': 'V',\n    '\\uA75E': 'V',\n    '\\u0245': 'V',\n    '\\uA760': 'VY',\n    '\\u24CC': 'W',\n    '\\uFF37': 'W',\n    '\\u1E80': 'W',\n    '\\u1E82': 'W',\n    '\\u0174': 'W',\n    '\\u1E86': 'W',\n    '\\u1E84': 'W',\n    '\\u1E88': 'W',\n    '\\u2C72': 'W',\n    '\\u24CD': 'X',\n    '\\uFF38': 'X',\n    '\\u1E8A': 'X',\n    '\\u1E8C': 'X',\n    '\\u24CE': 'Y',\n    '\\uFF39': 'Y',\n    '\\u1EF2': 'Y',\n    '\\u00DD': 'Y',\n    '\\u0176': 'Y',\n    '\\u1EF8': 'Y',\n    '\\u0232': 'Y',\n    '\\u1E8E': 'Y',\n    '\\u0178': 'Y',\n    '\\u1EF6': 'Y',\n    '\\u1EF4': 'Y',\n    '\\u01B3': 'Y',\n    '\\u024E': 'Y',\n    '\\u1EFE': 'Y',\n    '\\u24CF': 'Z',\n    '\\uFF3A': 'Z',\n    '\\u0179': 'Z',\n    '\\u1E90': 'Z',\n    '\\u017B': 'Z',\n    '\\u017D': 'Z',\n    '\\u1E92': 'Z',\n    '\\u1E94': 'Z',\n    '\\u01B5': 'Z',\n    '\\u0224': 'Z',\n    '\\u2C7F': 'Z',\n    '\\u2C6B': 'Z',\n    '\\uA762': 'Z',\n    '\\u24D0': 'a',\n    '\\uFF41': 'a',\n    '\\u1E9A': 'a',\n    '\\u00E0': 'a',\n    '\\u00E1': 'a',\n    '\\u00E2': 'a',\n    '\\u1EA7': 'a',\n    '\\u1EA5': 'a',\n    '\\u1EAB': 'a',\n    '\\u1EA9': 'a',\n    '\\u00E3': 'a',\n    '\\u0101': 'a',\n    '\\u0103': 'a',\n    '\\u1EB1': 'a',\n    '\\u1EAF': 'a',\n    '\\u1EB5': 'a',\n    '\\u1EB3': 'a',\n    '\\u0227': 'a',\n    '\\u01E1': 'a',\n    '\\u00E4': 'a',\n    '\\u01DF': 'a',\n    '\\u1EA3': 'a',\n    '\\u00E5': 'a',\n    '\\u01FB': 'a',\n    '\\u01CE': 'a',\n    '\\u0201': 'a',\n    '\\u0203': 'a',\n    '\\u1EA1': 'a',\n    '\\u1EAD': 'a',\n    '\\u1EB7': 'a',\n    '\\u1E01': 'a',\n    '\\u0105': 'a',\n    '\\u2C65': 'a',\n    '\\u0250': 'a',\n    '\\uA733': 'aa',\n    '\\u00E6': 'ae',\n    '\\u01FD': 'ae',\n    '\\u01E3': 'ae',\n    '\\uA735': 'ao',\n    '\\uA737': 'au',\n    '\\uA739': 'av',\n    '\\uA73B': 'av',\n    '\\uA73D': 'ay',\n    '\\u24D1': 'b',\n    '\\uFF42': 'b',\n    '\\u1E03': 'b',\n    '\\u1E05': 'b',\n    '\\u1E07': 'b',\n    '\\u0180': 'b',\n    '\\u0183': 'b',\n    '\\u0253': 'b',\n    '\\u24D2': 'c',\n    '\\uFF43': 'c',\n    '\\u0107': 'c',\n    '\\u0109': 'c',\n    '\\u010B': 'c',\n    '\\u010D': 'c',\n    '\\u00E7': 'c',\n    '\\u1E09': 'c',\n    '\\u0188': 'c',\n    '\\u023C': 'c',\n    '\\uA73F': 'c',\n    '\\u2184': 'c',\n    '\\u24D3': 'd',\n    '\\uFF44': 'd',\n    '\\u1E0B': 'd',\n    '\\u010F': 'd',\n    '\\u1E0D': 'd',\n    '\\u1E11': 'd',\n    '\\u1E13': 'd',\n    '\\u1E0F': 'd',\n    '\\u0111': 'd',\n    '\\u018C': 'd',\n    '\\u0256': 'd',\n    '\\u0257': 'd',\n    '\\uA77A': 'd',\n    '\\u01F3': 'dz',\n    '\\u01C6': 'dz',\n    '\\u24D4': 'e',\n    '\\uFF45': 'e',\n    '\\u00E8': 'e',\n    '\\u00E9': 'e',\n    '\\u00EA': 'e',\n    '\\u1EC1': 'e',\n    '\\u1EBF': 'e',\n    '\\u1EC5': 'e',\n    '\\u1EC3': 'e',\n    '\\u1EBD': 'e',\n    '\\u0113': 'e',\n    '\\u1E15': 'e',\n    '\\u1E17': 'e',\n    '\\u0115': 'e',\n    '\\u0117': 'e',\n    '\\u00EB': 'e',\n    '\\u1EBB': 'e',\n    '\\u011B': 'e',\n    '\\u0205': 'e',\n    '\\u0207': 'e',\n    '\\u1EB9': 'e',\n    '\\u1EC7': 'e',\n    '\\u0229': 'e',\n    '\\u1E1D': 'e',\n    '\\u0119': 'e',\n    '\\u1E19': 'e',\n    '\\u1E1B': 'e',\n    '\\u0247': 'e',\n    '\\u025B': 'e',\n    '\\u01DD': 'e',\n    '\\u24D5': 'f',\n    '\\uFF46': 'f',\n    '\\u1E1F': 'f',\n    '\\u0192': 'f',\n    '\\uA77C': 'f',\n    '\\u24D6': 'g',\n    '\\uFF47': 'g',\n    '\\u01F5': 'g',\n    '\\u011D': 'g',\n    '\\u1E21': 'g',\n    '\\u011F': 'g',\n    '\\u0121': 'g',\n    '\\u01E7': 'g',\n    '\\u0123': 'g',\n    '\\u01E5': 'g',\n    '\\u0260': 'g',\n    '\\uA7A1': 'g',\n    '\\u1D79': 'g',\n    '\\uA77F': 'g',\n    '\\u24D7': 'h',\n    '\\uFF48': 'h',\n    '\\u0125': 'h',\n    '\\u1E23': 'h',\n    '\\u1E27': 'h',\n    '\\u021F': 'h',\n    '\\u1E25': 'h',\n    '\\u1E29': 'h',\n    '\\u1E2B': 'h',\n    '\\u1E96': 'h',\n    '\\u0127': 'h',\n    '\\u2C68': 'h',\n    '\\u2C76': 'h',\n    '\\u0265': 'h',\n    '\\u0195': 'hv',\n    '\\u24D8': 'i',\n    '\\uFF49': 'i',\n    '\\u00EC': 'i',\n    '\\u00ED': 'i',\n    '\\u00EE': 'i',\n    '\\u0129': 'i',\n    '\\u012B': 'i',\n    '\\u012D': 'i',\n    '\\u00EF': 'i',\n    '\\u1E2F': 'i',\n    '\\u1EC9': 'i',\n    '\\u01D0': 'i',\n    '\\u0209': 'i',\n    '\\u020B': 'i',\n    '\\u1ECB': 'i',\n    '\\u012F': 'i',\n    '\\u1E2D': 'i',\n    '\\u0268': 'i',\n    '\\u0131': 'i',\n    '\\u24D9': 'j',\n    '\\uFF4A': 'j',\n    '\\u0135': 'j',\n    '\\u01F0': 'j',\n    '\\u0249': 'j',\n    '\\u24DA': 'k',\n    '\\uFF4B': 'k',\n    '\\u1E31': 'k',\n    '\\u01E9': 'k',\n    '\\u1E33': 'k',\n    '\\u0137': 'k',\n    '\\u1E35': 'k',\n    '\\u0199': 'k',\n    '\\u2C6A': 'k',\n    '\\uA741': 'k',\n    '\\uA743': 'k',\n    '\\uA745': 'k',\n    '\\uA7A3': 'k',\n    '\\u24DB': 'l',\n    '\\uFF4C': 'l',\n    '\\u0140': 'l',\n    '\\u013A': 'l',\n    '\\u013E': 'l',\n    '\\u1E37': 'l',\n    '\\u1E39': 'l',\n    '\\u013C': 'l',\n    '\\u1E3D': 'l',\n    '\\u1E3B': 'l',\n    '\\u017F': 'l',\n    '\\u0142': 'l',\n    '\\u019A': 'l',\n    '\\u026B': 'l',\n    '\\u2C61': 'l',\n    '\\uA749': 'l',\n    '\\uA781': 'l',\n    '\\uA747': 'l',\n    '\\u01C9': 'lj',\n    '\\u24DC': 'm',\n    '\\uFF4D': 'm',\n    '\\u1E3F': 'm',\n    '\\u1E41': 'm',\n    '\\u1E43': 'm',\n    '\\u0271': 'm',\n    '\\u026F': 'm',\n    '\\u24DD': 'n',\n    '\\uFF4E': 'n',\n    '\\u01F9': 'n',\n    '\\u0144': 'n',\n    '\\u00F1': 'n',\n    '\\u1E45': 'n',\n    '\\u0148': 'n',\n    '\\u1E47': 'n',\n    '\\u0146': 'n',\n    '\\u1E4B': 'n',\n    '\\u1E49': 'n',\n    '\\u019E': 'n',\n    '\\u0272': 'n',\n    '\\u0149': 'n',\n    '\\uA791': 'n',\n    '\\uA7A5': 'n',\n    '\\u01CC': 'nj',\n    '\\u24DE': 'o',\n    '\\uFF4F': 'o',\n    '\\u00F2': 'o',\n    '\\u00F3': 'o',\n    '\\u00F4': 'o',\n    '\\u1ED3': 'o',\n    '\\u1ED1': 'o',\n    '\\u1ED7': 'o',\n    '\\u1ED5': 'o',\n    '\\u00F5': 'o',\n    '\\u1E4D': 'o',\n    '\\u022D': 'o',\n    '\\u1E4F': 'o',\n    '\\u014D': 'o',\n    '\\u1E51': 'o',\n    '\\u1E53': 'o',\n    '\\u014F': 'o',\n    '\\u022F': 'o',\n    '\\u0231': 'o',\n    '\\u00F6': 'o',\n    '\\u022B': 'o',\n    '\\u1ECF': 'o',\n    '\\u0151': 'o',\n    '\\u01D2': 'o',\n    '\\u020D': 'o',\n    '\\u020F': 'o',\n    '\\u01A1': 'o',\n    '\\u1EDD': 'o',\n    '\\u1EDB': 'o',\n    '\\u1EE1': 'o',\n    '\\u1EDF': 'o',\n    '\\u1EE3': 'o',\n    '\\u1ECD': 'o',\n    '\\u1ED9': 'o',\n    '\\u01EB': 'o',\n    '\\u01ED': 'o',\n    '\\u00F8': 'o',\n    '\\u01FF': 'o',\n    '\\u0254': 'o',\n    '\\uA74B': 'o',\n    '\\uA74D': 'o',\n    '\\u0275': 'o',\n    '\\u0153': 'oe',\n    '\\u01A3': 'oi',\n    '\\u0223': 'ou',\n    '\\uA74F': 'oo',\n    '\\u24DF': 'p',\n    '\\uFF50': 'p',\n    '\\u1E55': 'p',\n    '\\u1E57': 'p',\n    '\\u01A5': 'p',\n    '\\u1D7D': 'p',\n    '\\uA751': 'p',\n    '\\uA753': 'p',\n    '\\uA755': 'p',\n    '\\u24E0': 'q',\n    '\\uFF51': 'q',\n    '\\u024B': 'q',\n    '\\uA757': 'q',\n    '\\uA759': 'q',\n    '\\u24E1': 'r',\n    '\\uFF52': 'r',\n    '\\u0155': 'r',\n    '\\u1E59': 'r',\n    '\\u0159': 'r',\n    '\\u0211': 'r',\n    '\\u0213': 'r',\n    '\\u1E5B': 'r',\n    '\\u1E5D': 'r',\n    '\\u0157': 'r',\n    '\\u1E5F': 'r',\n    '\\u024D': 'r',\n    '\\u027D': 'r',\n    '\\uA75B': 'r',\n    '\\uA7A7': 'r',\n    '\\uA783': 'r',\n    '\\u24E2': 's',\n    '\\uFF53': 's',\n    '\\u00DF': 's',\n    '\\u015B': 's',\n    '\\u1E65': 's',\n    '\\u015D': 's',\n    '\\u1E61': 's',\n    '\\u0161': 's',\n    '\\u1E67': 's',\n    '\\u1E63': 's',\n    '\\u1E69': 's',\n    '\\u0219': 's',\n    '\\u015F': 's',\n    '\\u023F': 's',\n    '\\uA7A9': 's',\n    '\\uA785': 's',\n    '\\u1E9B': 's',\n    '\\u24E3': 't',\n    '\\uFF54': 't',\n    '\\u1E6B': 't',\n    '\\u1E97': 't',\n    '\\u0165': 't',\n    '\\u1E6D': 't',\n    '\\u021B': 't',\n    '\\u0163': 't',\n    '\\u1E71': 't',\n    '\\u1E6F': 't',\n    '\\u0167': 't',\n    '\\u01AD': 't',\n    '\\u0288': 't',\n    '\\u2C66': 't',\n    '\\uA787': 't',\n    '\\uA729': 'tz',\n    '\\u24E4': 'u',\n    '\\uFF55': 'u',\n    '\\u00F9': 'u',\n    '\\u00FA': 'u',\n    '\\u00FB': 'u',\n    '\\u0169': 'u',\n    '\\u1E79': 'u',\n    '\\u016B': 'u',\n    '\\u1E7B': 'u',\n    '\\u016D': 'u',\n    '\\u00FC': 'u',\n    '\\u01DC': 'u',\n    '\\u01D8': 'u',\n    '\\u01D6': 'u',\n    '\\u01DA': 'u',\n    '\\u1EE7': 'u',\n    '\\u016F': 'u',\n    '\\u0171': 'u',\n    '\\u01D4': 'u',\n    '\\u0215': 'u',\n    '\\u0217': 'u',\n    '\\u01B0': 'u',\n    '\\u1EEB': 'u',\n    '\\u1EE9': 'u',\n    '\\u1EEF': 'u',\n    '\\u1EED': 'u',\n    '\\u1EF1': 'u',\n    '\\u1EE5': 'u',\n    '\\u1E73': 'u',\n    '\\u0173': 'u',\n    '\\u1E77': 'u',\n    '\\u1E75': 'u',\n    '\\u0289': 'u',\n    '\\u24E5': 'v',\n    '\\uFF56': 'v',\n    '\\u1E7D': 'v',\n    '\\u1E7F': 'v',\n    '\\u028B': 'v',\n    '\\uA75F': 'v',\n    '\\u028C': 'v',\n    '\\uA761': 'vy',\n    '\\u24E6': 'w',\n    '\\uFF57': 'w',\n    '\\u1E81': 'w',\n    '\\u1E83': 'w',\n    '\\u0175': 'w',\n    '\\u1E87': 'w',\n    '\\u1E85': 'w',\n    '\\u1E98': 'w',\n    '\\u1E89': 'w',\n    '\\u2C73': 'w',\n    '\\u24E7': 'x',\n    '\\uFF58': 'x',\n    '\\u1E8B': 'x',\n    '\\u1E8D': 'x',\n    '\\u24E8': 'y',\n    '\\uFF59': 'y',\n    '\\u1EF3': 'y',\n    '\\u00FD': 'y',\n    '\\u0177': 'y',\n    '\\u1EF9': 'y',\n    '\\u0233': 'y',\n    '\\u1E8F': 'y',\n    '\\u00FF': 'y',\n    '\\u1EF7': 'y',\n    '\\u1E99': 'y',\n    '\\u1EF5': 'y',\n    '\\u01B4': 'y',\n    '\\u024F': 'y',\n    '\\u1EFF': 'y',\n    '\\u24E9': 'z',\n    '\\uFF5A': 'z',\n    '\\u017A': 'z',\n    '\\u1E91': 'z',\n    '\\u017C': 'z',\n    '\\u017E': 'z',\n    '\\u1E93': 'z',\n    '\\u1E95': 'z',\n    '\\u01B6': 'z',\n    '\\u0225': 'z',\n    '\\u0240': 'z',\n    '\\u2C6C': 'z',\n    '\\uA763': 'z',\n    '\\u0386': '\\u0391',\n    '\\u0388': '\\u0395',\n    '\\u0389': '\\u0397',\n    '\\u038A': '\\u0399',\n    '\\u03AA': '\\u0399',\n    '\\u038C': '\\u039F',\n    '\\u038E': '\\u03A5',\n    '\\u03AB': '\\u03A5',\n    '\\u038F': '\\u03A9',\n    '\\u03AC': '\\u03B1',\n    '\\u03AD': '\\u03B5',\n    '\\u03AE': '\\u03B7',\n    '\\u03AF': '\\u03B9',\n    '\\u03CA': '\\u03B9',\n    '\\u0390': '\\u03B9',\n    '\\u03CC': '\\u03BF',\n    '\\u03CD': '\\u03C5',\n    '\\u03CB': '\\u03C5',\n    '\\u03B0': '\\u03C5',\n    '\\u03CE': '\\u03C9',\n    '\\u03C2': '\\u03C3',\n    '\\u2019': '\\''\n  };\n\n  return diacritics;\n});\n\nS2.define('select2/data/base',[\n  '../utils'\n], function (Utils) {\n  function BaseAdapter ($element, options) {\n    BaseAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseAdapter, Utils.Observable);\n\n  BaseAdapter.prototype.current = function (callback) {\n    throw new Error('The `current` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.query = function (params, callback) {\n    throw new Error('The `query` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.bind = function (container, $container) {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.destroy = function () {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.generateResultId = function (container, data) {\n    var id = container.id + '-result-';\n\n    id += Utils.generateChars(4);\n\n    if (data.id != null) {\n      id += '-' + data.id.toString();\n    } else {\n      id += '-' + Utils.generateChars(4);\n    }\n    return id;\n  };\n\n  return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n  './base',\n  '../utils',\n  'jquery'\n], function (BaseAdapter, Utils, $) {\n  function SelectAdapter ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    SelectAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(SelectAdapter, BaseAdapter);\n\n  SelectAdapter.prototype.current = function (callback) {\n    var self = this;\n\n    var data = Array.prototype.map.call(\n      this.$element[0].querySelectorAll(':checked'),\n      function (selectedElement) {\n        return self.item($(selectedElement));\n      }\n    );\n\n    callback(data);\n  };\n\n  SelectAdapter.prototype.select = function (data) {\n    var self = this;\n\n    data.selected = true;\n\n    // If data.element is a DOM node, use it instead\n    if (\n      data.element != null && data.element.tagName.toLowerCase() === 'option'\n    ) {\n      data.element.selected = true;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    if (this.$element.prop('multiple')) {\n      this.current(function (currentData) {\n        var val = [];\n\n        data = [data];\n        data.push.apply(data, currentData);\n\n        for (var d = 0; d < data.length; d++) {\n          var id = data[d].id;\n\n          if (val.indexOf(id) === -1) {\n            val.push(id);\n          }\n        }\n\n        self.$element.val(val);\n        self.$element.trigger('input').trigger('change');\n      });\n    } else {\n      var val = data.id;\n\n      this.$element.val(val);\n      this.$element.trigger('input').trigger('change');\n    }\n  };\n\n  SelectAdapter.prototype.unselect = function (data) {\n    var self = this;\n\n    if (!this.$element.prop('multiple')) {\n      return;\n    }\n\n    data.selected = false;\n\n    if (\n      data.element != null &&\n      data.element.tagName.toLowerCase() === 'option'\n    ) {\n      data.element.selected = false;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    this.current(function (currentData) {\n      var val = [];\n\n      for (var d = 0; d < currentData.length; d++) {\n        var id = currentData[d].id;\n\n        if (id !== data.id && val.indexOf(id) === -1) {\n          val.push(id);\n        }\n      }\n\n      self.$element.val(val);\n\n      self.$element.trigger('input').trigger('change');\n    });\n  };\n\n  SelectAdapter.prototype.bind = function (container, $container) {\n    var self = this;\n\n    this.container = container;\n\n    container.on('select', function (params) {\n      self.select(params.data);\n    });\n\n    container.on('unselect', function (params) {\n      self.unselect(params.data);\n    });\n  };\n\n  SelectAdapter.prototype.destroy = function () {\n    // Remove anything added to child elements\n    this.$element.find('*').each(function () {\n      // Remove any custom data set by Select2\n      Utils.RemoveData(this);\n    });\n  };\n\n  SelectAdapter.prototype.query = function (params, callback) {\n    var data = [];\n    var self = this;\n\n    var $options = this.$element.children();\n\n    $options.each(function () {\n      if (\n        this.tagName.toLowerCase() !== 'option' &&\n        this.tagName.toLowerCase() !== 'optgroup'\n      ) {\n        return;\n      }\n\n      var $option = $(this);\n\n      var option = self.item($option);\n\n      var matches = self.matches(params, option);\n\n      if (matches !== null) {\n        data.push(matches);\n      }\n    });\n\n    callback({\n      results: data\n    });\n  };\n\n  SelectAdapter.prototype.addOptions = function ($options) {\n    this.$element.append($options);\n  };\n\n  SelectAdapter.prototype.option = function (data) {\n    var option;\n\n    if (data.children) {\n      option = document.createElement('optgroup');\n      option.label = data.text;\n    } else {\n      option = document.createElement('option');\n\n      if (option.textContent !== undefined) {\n        option.textContent = data.text;\n      } else {\n        option.innerText = data.text;\n      }\n    }\n\n    if (data.id !== undefined) {\n      option.value = data.id;\n    }\n\n    if (data.disabled) {\n      option.disabled = true;\n    }\n\n    if (data.selected) {\n      option.selected = true;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    var normalizedData = this._normalizeItem(data);\n    normalizedData.element = option;\n\n    // Override the option's data with the combined data\n    Utils.StoreData(option, 'data', normalizedData);\n\n    return $(option);\n  };\n\n  SelectAdapter.prototype.item = function ($option) {\n    var data = {};\n\n    data = Utils.GetData($option[0], 'data');\n\n    if (data != null) {\n      return data;\n    }\n\n    var option = $option[0];\n\n    if (option.tagName.toLowerCase() === 'option') {\n      data = {\n        id: $option.val(),\n        text: $option.text(),\n        disabled: $option.prop('disabled'),\n        selected: $option.prop('selected'),\n        title: $option.prop('title')\n      };\n    } else if (option.tagName.toLowerCase() === 'optgroup') {\n      data = {\n        text: $option.prop('label'),\n        children: [],\n        title: $option.prop('title')\n      };\n\n      var $children = $option.children('option');\n      var children = [];\n\n      for (var c = 0; c < $children.length; c++) {\n        var $child = $($children[c]);\n\n        var child = this.item($child);\n\n        children.push(child);\n      }\n\n      data.children = children;\n    }\n\n    data = this._normalizeItem(data);\n    data.element = $option[0];\n\n    Utils.StoreData($option[0], 'data', data);\n\n    return data;\n  };\n\n  SelectAdapter.prototype._normalizeItem = function (item) {\n    if (item !== Object(item)) {\n      item = {\n        id: item,\n        text: item\n      };\n    }\n\n    item = $.extend({}, {\n      text: ''\n    }, item);\n\n    var defaults = {\n      selected: false,\n      disabled: false\n    };\n\n    if (item.id != null) {\n      item.id = item.id.toString();\n    }\n\n    if (item.text != null) {\n      item.text = item.text.toString();\n    }\n\n    if (item._resultId == null && item.id && this.container != null) {\n      item._resultId = this.generateResultId(this.container, item);\n    }\n\n    return $.extend({}, defaults, item);\n  };\n\n  SelectAdapter.prototype.matches = function (params, data) {\n    var matcher = this.options.get('matcher');\n\n    return matcher(params, data);\n  };\n\n  return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n  './select',\n  '../utils',\n  'jquery'\n], function (SelectAdapter, Utils, $) {\n  function ArrayAdapter ($element, options) {\n    this._dataToConvert = options.get('data') || [];\n\n    ArrayAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(ArrayAdapter, SelectAdapter);\n\n  ArrayAdapter.prototype.bind = function (container, $container) {\n    ArrayAdapter.__super__.bind.call(this, container, $container);\n\n    this.addOptions(this.convertToOptions(this._dataToConvert));\n  };\n\n  ArrayAdapter.prototype.select = function (data) {\n    var $option = this.$element.find('option').filter(function (i, elm) {\n      return elm.value == data.id.toString();\n    });\n\n    if ($option.length === 0) {\n      $option = this.option(data);\n\n      this.addOptions($option);\n    }\n\n    ArrayAdapter.__super__.select.call(this, data);\n  };\n\n  ArrayAdapter.prototype.convertToOptions = function (data) {\n    var self = this;\n\n    var $existing = this.$element.find('option');\n    var existingIds = $existing.map(function () {\n      return self.item($(this)).id;\n    }).get();\n\n    var $options = [];\n\n    // Filter out all items except for the one passed in the argument\n    function onlyItem (item) {\n      return function () {\n        return $(this).val() == item.id;\n      };\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      var item = this._normalizeItem(data[d]);\n\n      // Skip items which were pre-loaded, only merge the data\n      if (existingIds.indexOf(item.id) >= 0) {\n        var $existingOption = $existing.filter(onlyItem(item));\n\n        var existingData = this.item($existingOption);\n        var newData = $.extend(true, {}, item, existingData);\n\n        var $newOption = this.option(newData);\n\n        $existingOption.replaceWith($newOption);\n\n        continue;\n      }\n\n      var $option = this.option(item);\n\n      if (item.children) {\n        var $children = this.convertToOptions(item.children);\n\n        $option.append($children);\n      }\n\n      $options.push($option);\n    }\n\n    return $options;\n  };\n\n  return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n  './array',\n  '../utils',\n  'jquery'\n], function (ArrayAdapter, Utils, $) {\n  function AjaxAdapter ($element, options) {\n    this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n    if (this.ajaxOptions.processResults != null) {\n      this.processResults = this.ajaxOptions.processResults;\n    }\n\n    AjaxAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n  AjaxAdapter.prototype._applyDefaults = function (options) {\n    var defaults = {\n      data: function (params) {\n        return $.extend({}, params, {\n          q: params.term\n        });\n      },\n      transport: function (params, success, failure) {\n        var $request = $.ajax(params);\n\n        $request.then(success);\n        $request.fail(failure);\n\n        return $request;\n      }\n    };\n\n    return $.extend({}, defaults, options, true);\n  };\n\n  AjaxAdapter.prototype.processResults = function (results) {\n    return results;\n  };\n\n  AjaxAdapter.prototype.query = function (params, callback) {\n    var matches = [];\n    var self = this;\n\n    if (this._request != null) {\n      // JSONP requests cannot always be aborted\n      if ($.isFunction(this._request.abort)) {\n        this._request.abort();\n      }\n\n      this._request = null;\n    }\n\n    var options = $.extend({\n      type: 'GET'\n    }, this.ajaxOptions);\n\n    if (typeof options.url === 'function') {\n      options.url = options.url.call(this.$element, params);\n    }\n\n    if (typeof options.data === 'function') {\n      options.data = options.data.call(this.$element, params);\n    }\n\n    function request () {\n      var $request = options.transport(options, function (data) {\n        var results = self.processResults(data, params);\n\n        if (self.options.get('debug') && window.console && console.error) {\n          // Check to make sure that the response included a `results` key.\n          if (!results || !results.results || !Array.isArray(results.results)) {\n            console.error(\n              'Select2: The AJAX results did not return an array in the ' +\n              '`results` key of the response.'\n            );\n          }\n        }\n\n        callback(results);\n      }, function () {\n        // Attempt to detect if a request was aborted\n        // Only works if the transport exposes a status property\n        if ('status' in $request &&\n            ($request.status === 0 || $request.status === '0')) {\n          return;\n        }\n\n        self.trigger('results:message', {\n          message: 'errorLoading'\n        });\n      });\n\n      self._request = $request;\n    }\n\n    if (this.ajaxOptions.delay && params.term != null) {\n      if (this._queryTimeout) {\n        window.clearTimeout(this._queryTimeout);\n      }\n\n      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n    } else {\n      request();\n    }\n  };\n\n  return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n  'jquery'\n], function ($) {\n  function Tags (decorated, $element, options) {\n    var tags = options.get('tags');\n\n    var createTag = options.get('createTag');\n\n    if (createTag !== undefined) {\n      this.createTag = createTag;\n    }\n\n    var insertTag = options.get('insertTag');\n\n    if (insertTag !== undefined) {\n        this.insertTag = insertTag;\n    }\n\n    decorated.call(this, $element, options);\n\n    if (Array.isArray(tags)) {\n      for (var t = 0; t < tags.length; t++) {\n        var tag = tags[t];\n        var item = this._normalizeItem(tag);\n\n        var $option = this.option(item);\n\n        this.$element.append($option);\n      }\n    }\n  }\n\n  Tags.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    this._removeOldTags();\n\n    if (params.term == null || params.page != null) {\n      decorated.call(this, params, callback);\n      return;\n    }\n\n    function wrapper (obj, child) {\n      var data = obj.results;\n\n      for (var i = 0; i < data.length; i++) {\n        var option = data[i];\n\n        var checkChildren = (\n          option.children != null &&\n          !wrapper({\n            results: option.children\n          }, true)\n        );\n\n        var optionText = (option.text || '').toUpperCase();\n        var paramsTerm = (params.term || '').toUpperCase();\n\n        var checkText = optionText === paramsTerm;\n\n        if (checkText || checkChildren) {\n          if (child) {\n            return false;\n          }\n\n          obj.data = data;\n          callback(obj);\n\n          return;\n        }\n      }\n\n      if (child) {\n        return true;\n      }\n\n      var tag = self.createTag(params);\n\n      if (tag != null) {\n        var $option = self.option(tag);\n        $option.attr('data-select2-tag', true);\n\n        self.addOptions([$option]);\n\n        self.insertTag(data, tag);\n      }\n\n      obj.results = data;\n\n      callback(obj);\n    }\n\n    decorated.call(this, params, wrapper);\n  };\n\n  Tags.prototype.createTag = function (decorated, params) {\n    if (params.term == null) {\n      return null;\n    }\n\n    var term = params.term.trim();\n\n    if (term === '') {\n      return null;\n    }\n\n    return {\n      id: term,\n      text: term\n    };\n  };\n\n  Tags.prototype.insertTag = function (_, data, tag) {\n    data.unshift(tag);\n  };\n\n  Tags.prototype._removeOldTags = function (_) {\n    var $options = this.$element.find('option[data-select2-tag]');\n\n    $options.each(function () {\n      if (this.selected) {\n        return;\n      }\n\n      $(this).remove();\n    });\n  };\n\n  return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n  'jquery'\n], function ($) {\n  function Tokenizer (decorated, $element, options) {\n    var tokenizer = options.get('tokenizer');\n\n    if (tokenizer !== undefined) {\n      this.tokenizer = tokenizer;\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Tokenizer.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    this.$search =  container.dropdown.$search || container.selection.$search ||\n      $container.find('.select2-search__field');\n  };\n\n  Tokenizer.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    function createAndSelect (data) {\n      // Normalize the data object so we can use it for checks\n      var item = self._normalizeItem(data);\n\n      // Check if the data object already exists as a tag\n      // Select it if it doesn't\n      var $existingOptions = self.$element.find('option').filter(function () {\n        return $(this).val() === item.id;\n      });\n\n      // If an existing option wasn't found for it, create the option\n      if (!$existingOptions.length) {\n        var $option = self.option(item);\n        $option.attr('data-select2-tag', true);\n\n        self._removeOldTags();\n        self.addOptions([$option]);\n      }\n\n      // Select the item, now that we know there is an option for it\n      select(item);\n    }\n\n    function select (data) {\n      self.trigger('select', {\n        data: data\n      });\n    }\n\n    params.term = params.term || '';\n\n    var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n    if (tokenData.term !== params.term) {\n      // Replace the search term if we have the search box\n      if (this.$search.length) {\n        this.$search.val(tokenData.term);\n        this.$search.trigger('focus');\n      }\n\n      params.term = tokenData.term;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n    var separators = options.get('tokenSeparators') || [];\n    var term = params.term;\n    var i = 0;\n\n    var createTag = this.createTag || function (params) {\n      return {\n        id: params.term,\n        text: params.term\n      };\n    };\n\n    while (i < term.length) {\n      var termChar = term[i];\n\n      if (separators.indexOf(termChar) === -1) {\n        i++;\n\n        continue;\n      }\n\n      var part = term.substr(0, i);\n      var partParams = $.extend({}, params, {\n        term: part\n      });\n\n      var data = createTag(partParams);\n\n      if (data == null) {\n        i++;\n        continue;\n      }\n\n      callback(data);\n\n      // Reset the term to not include the tokenized portion\n      term = term.substr(i + 1) || '';\n      i = 0;\n    }\n\n    return {\n      term: term\n    };\n  };\n\n  return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n  function MinimumInputLength (decorated, $e, options) {\n    this.minimumInputLength = options.get('minimumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MinimumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (params.term.length < this.minimumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooShort',\n        args: {\n          minimum: this.minimumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n  function MaximumInputLength (decorated, $e, options) {\n    this.maximumInputLength = options.get('maximumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (this.maximumInputLength > 0 &&\n        params.term.length > this.maximumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooLong',\n        args: {\n          maximum: this.maximumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n  function MaximumSelectionLength (decorated, $e, options) {\n    this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumSelectionLength.prototype.bind =\n    function (decorated, container, $container) {\n      var self = this;\n\n      decorated.call(this, container, $container);\n\n      container.on('select', function () {\n        self._checkIfMaximumSelected();\n      });\n  };\n\n  MaximumSelectionLength.prototype.query =\n    function (decorated, params, callback) {\n      var self = this;\n\n      this._checkIfMaximumSelected(function () {\n        decorated.call(self, params, callback);\n      });\n  };\n\n  MaximumSelectionLength.prototype._checkIfMaximumSelected =\n    function (_, successCallback) {\n      var self = this;\n\n      this.current(function (currentData) {\n        var count = currentData != null ? currentData.length : 0;\n        if (self.maximumSelectionLength > 0 &&\n          count >= self.maximumSelectionLength) {\n          self.trigger('results:message', {\n            message: 'maximumSelected',\n            args: {\n              maximum: self.maximumSelectionLength\n            }\n          });\n          return;\n        }\n\n        if (successCallback) {\n          successCallback();\n        }\n      });\n  };\n\n  return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Dropdown ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    Dropdown.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Dropdown, Utils.Observable);\n\n  Dropdown.prototype.render = function () {\n    var $dropdown = $(\n      '<span class=\"select2-dropdown\">' +\n        '<span class=\"select2-results\"></span>' +\n      '</span>'\n    );\n\n    $dropdown.attr('dir', this.options.get('dir'));\n\n    this.$dropdown = $dropdown;\n\n    return $dropdown;\n  };\n\n  Dropdown.prototype.bind = function () {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.position = function ($dropdown, $container) {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.destroy = function () {\n    // Remove the dropdown from the DOM\n    this.$dropdown.remove();\n  };\n\n  return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n  'jquery'\n], function ($) {\n  function Search () { }\n\n  Search.prototype.render = function (decorated) {\n    var $rendered = decorated.call(this);\n\n    var $search = $(\n      '<span class=\"select2-search select2-search--dropdown\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    this.$search.prop('autocomplete', this.options.get('autocomplete'));\n\n    $rendered.prepend($search);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    decorated.call(this, container, $container);\n\n    this.$search.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n    });\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$search.on('input', function (evt) {\n      // Unbind the duplicated `keyup` event\n      $(this).off('keyup');\n    });\n\n    this.$search.on('keyup input', function (evt) {\n      self.handleSearch(evt);\n    });\n\n    container.on('open', function () {\n      self.$search.attr('tabindex', 0);\n      self.$search.attr('aria-controls', resultsId);\n\n      self.$search.trigger('focus');\n\n      window.setTimeout(function () {\n        self.$search.trigger('focus');\n      }, 0);\n    });\n\n    container.on('close', function () {\n      self.$search.attr('tabindex', -1);\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n\n      self.$search.val('');\n      self.$search.trigger('blur');\n    });\n\n    container.on('focus', function () {\n      if (!container.isOpen()) {\n        self.$search.trigger('focus');\n      }\n    });\n\n    container.on('results:all', function (params) {\n      if (params.query.term == null || params.query.term === '') {\n        var showSearch = self.showSearch(params);\n\n        if (showSearch) {\n          self.$searchContainer[0].classList.remove('select2-search--hide');\n        } else {\n          self.$searchContainer[0].classList.add('select2-search--hide');\n        }\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n  };\n\n  Search.prototype.handleSearch = function (evt) {\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.showSearch = function (_, params) {\n    return true;\n  };\n\n  return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n  function HidePlaceholder (decorated, $element, options, dataAdapter) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  HidePlaceholder.prototype.append = function (decorated, data) {\n    data.results = this.removePlaceholder(data.results);\n\n    decorated.call(this, data);\n  };\n\n  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n    var modifiedData = data.slice(0);\n\n    for (var d = data.length - 1; d >= 0; d--) {\n      var item = data[d];\n\n      if (this.placeholder.id === item.id) {\n        modifiedData.splice(d, 1);\n      }\n    }\n\n    return modifiedData;\n  };\n\n  return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n  'jquery'\n], function ($) {\n  function InfiniteScroll (decorated, $element, options, dataAdapter) {\n    this.lastParams = {};\n\n    decorated.call(this, $element, options, dataAdapter);\n\n    this.$loadingMore = this.createLoadingMore();\n    this.loading = false;\n  }\n\n  InfiniteScroll.prototype.append = function (decorated, data) {\n    this.$loadingMore.remove();\n    this.loading = false;\n\n    decorated.call(this, data);\n\n    if (this.showLoadingMore(data)) {\n      this.$results.append(this.$loadingMore);\n      this.loadMoreIfNeeded();\n    }\n  };\n\n  InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('query', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    container.on('query:append', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n  };\n\n  InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n    var isLoadMoreVisible = $.contains(\n      document.documentElement,\n      this.$loadingMore[0]\n    );\n\n    if (this.loading || !isLoadMoreVisible) {\n      return;\n    }\n\n    var currentOffset = this.$results.offset().top +\n      this.$results.outerHeight(false);\n    var loadingMoreOffset = this.$loadingMore.offset().top +\n      this.$loadingMore.outerHeight(false);\n\n    if (currentOffset + 50 >= loadingMoreOffset) {\n      this.loadMore();\n    }\n  };\n\n  InfiniteScroll.prototype.loadMore = function () {\n    this.loading = true;\n\n    var params = $.extend({}, {page: 1}, this.lastParams);\n\n    params.page++;\n\n    this.trigger('query:append', params);\n  };\n\n  InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n    return data.pagination && data.pagination.more;\n  };\n\n  InfiniteScroll.prototype.createLoadingMore = function () {\n    var $option = $(\n      '<li ' +\n      'class=\"select2-results__option select2-results__option--load-more\"' +\n      'role=\"option\" aria-disabled=\"true\"></li>'\n    );\n\n    var message = this.options.get('translations').get('loadingMore');\n\n    $option.html(message(this.lastParams));\n\n    return $option;\n  };\n\n  return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function AttachBody (decorated, $element, options) {\n    this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n    decorated.call(this, $element, options);\n  }\n\n  AttachBody.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self._showDropdown();\n      self._attachPositioningHandler(container);\n\n      // Must bind after the results handlers to ensure correct sizing\n      self._bindContainerResultHandlers(container);\n    });\n\n    container.on('close', function () {\n      self._hideDropdown();\n      self._detachPositioningHandler(container);\n    });\n\n    this.$dropdownContainer.on('mousedown', function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  AttachBody.prototype.destroy = function (decorated) {\n    decorated.call(this);\n\n    this.$dropdownContainer.remove();\n  };\n\n  AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n    // Clone all of the container classes\n    $dropdown.attr('class', $container.attr('class'));\n\n    $dropdown[0].classList.remove('select2');\n    $dropdown[0].classList.add('select2-container--open');\n\n    $dropdown.css({\n      position: 'absolute',\n      top: -999999\n    });\n\n    this.$container = $container;\n  };\n\n  AttachBody.prototype.render = function (decorated) {\n    var $container = $('<span></span>');\n\n    var $dropdown = decorated.call(this);\n    $container.append($dropdown);\n\n    this.$dropdownContainer = $container;\n\n    return $container;\n  };\n\n  AttachBody.prototype._hideDropdown = function (decorated) {\n    this.$dropdownContainer.detach();\n  };\n\n  AttachBody.prototype._bindContainerResultHandlers =\n      function (decorated, container) {\n\n    // These should only be bound once\n    if (this._containerResultsHandlersBound) {\n      return;\n    }\n\n    var self = this;\n\n    container.on('results:all', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:append', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:message', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('select', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('unselect', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    this._containerResultsHandlersBound = true;\n  };\n\n  AttachBody.prototype._attachPositioningHandler =\n      function (decorated, container) {\n    var self = this;\n\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.each(function () {\n      Utils.StoreData(this, 'select2-scroll-position', {\n        x: $(this).scrollLeft(),\n        y: $(this).scrollTop()\n      });\n    });\n\n    $watchers.on(scrollEvent, function (ev) {\n      var position = Utils.GetData(this, 'select2-scroll-position');\n      $(this).scrollTop(position.y);\n    });\n\n    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n      function (e) {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n  };\n\n  AttachBody.prototype._detachPositioningHandler =\n      function (decorated, container) {\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.off(scrollEvent);\n\n    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n  };\n\n  AttachBody.prototype._positionDropdown = function () {\n    var $window = $(window);\n\n    var isCurrentlyAbove = this.$dropdown[0].classList\n      .contains('select2-dropdown--above');\n    var isCurrentlyBelow = this.$dropdown[0].classList\n      .contains('select2-dropdown--below');\n\n    var newDirection = null;\n\n    var offset = this.$container.offset();\n\n    offset.bottom = offset.top + this.$container.outerHeight(false);\n\n    var container = {\n      height: this.$container.outerHeight(false)\n    };\n\n    container.top = offset.top;\n    container.bottom = offset.top + container.height;\n\n    var dropdown = {\n      height: this.$dropdown.outerHeight(false)\n    };\n\n    var viewport = {\n      top: $window.scrollTop(),\n      bottom: $window.scrollTop() + $window.height()\n    };\n\n    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n    var css = {\n      left: offset.left,\n      top: container.bottom\n    };\n\n    // Determine what the parent element is to use for calculating the offset\n    var $offsetParent = this.$dropdownParent;\n\n    // For statically positioned elements, we need to get the element\n    // that is determining the offset\n    if ($offsetParent.css('position') === 'static') {\n      $offsetParent = $offsetParent.offsetParent();\n    }\n\n    var parentOffset = {\n      top: 0,\n      left: 0\n    };\n\n    if (\n      $.contains(document.body, $offsetParent[0]) ||\n      $offsetParent[0].isConnected\n      ) {\n      parentOffset = $offsetParent.offset();\n    }\n\n    css.top -= parentOffset.top;\n    css.left -= parentOffset.left;\n\n    if (!isCurrentlyAbove && !isCurrentlyBelow) {\n      newDirection = 'below';\n    }\n\n    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n      newDirection = 'above';\n    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n      newDirection = 'below';\n    }\n\n    if (newDirection == 'above' ||\n      (isCurrentlyAbove && newDirection !== 'below')) {\n      css.top = container.top - parentOffset.top - dropdown.height;\n    }\n\n    if (newDirection != null) {\n      this.$dropdown[0].classList.remove('select2-dropdown--below');\n      this.$dropdown[0].classList.remove('select2-dropdown--above');\n      this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n\n      this.$container[0].classList.remove('select2-container--below');\n      this.$container[0].classList.remove('select2-container--above');\n      this.$container[0].classList.add('select2-container--' + newDirection);\n    }\n\n    this.$dropdownContainer.css(css);\n  };\n\n  AttachBody.prototype._resizeDropdown = function () {\n    var css = {\n      width: this.$container.outerWidth(false) + 'px'\n    };\n\n    if (this.options.get('dropdownAutoWidth')) {\n      css.minWidth = css.width;\n      css.position = 'relative';\n      css.width = 'auto';\n    }\n\n    this.$dropdown.css(css);\n  };\n\n  AttachBody.prototype._showDropdown = function (decorated) {\n    this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n    this._positionDropdown();\n    this._resizeDropdown();\n  };\n\n  return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n  function countResults (data) {\n    var count = 0;\n\n    for (var d = 0; d < data.length; d++) {\n      var item = data[d];\n\n      if (item.children) {\n        count += countResults(item.children);\n      } else {\n        count++;\n      }\n    }\n\n    return count;\n  }\n\n  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n    this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n    if (this.minimumResultsForSearch < 0) {\n      this.minimumResultsForSearch = Infinity;\n    }\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n    if (countResults(params.data.results) < this.minimumResultsForSearch) {\n      return false;\n    }\n\n    return decorated.call(this, params);\n  };\n\n  return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n  '../utils'\n], function (Utils) {\n  function SelectOnClose () { }\n\n  SelectOnClose.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('close', function (params) {\n      self._handleSelectOnClose(params);\n    });\n  };\n\n  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n    if (params && params.originalSelect2Event != null) {\n      var event = params.originalSelect2Event;\n\n      // Don't select an item if the close event was triggered from a select or\n      // unselect event\n      if (event._type === 'select' || event._type === 'unselect') {\n        return;\n      }\n    }\n\n    var $highlightedResults = this.getHighlightedResults();\n\n    // Only select highlighted results\n    if ($highlightedResults.length < 1) {\n      return;\n    }\n\n    var data = Utils.GetData($highlightedResults[0], 'data');\n\n    // Don't re-select already selected resulte\n    if (\n      (data.element != null && data.element.selected) ||\n      (data.element == null && data.selected)\n    ) {\n      return;\n    }\n\n    this.trigger('select', {\n        data: data\n    });\n  };\n\n  return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n  function CloseOnSelect () { }\n\n  CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('select', function (evt) {\n      self._selectTriggered(evt);\n    });\n\n    container.on('unselect', function (evt) {\n      self._selectTriggered(evt);\n    });\n  };\n\n  CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n    var originalEvent = evt.originalEvent;\n\n    // Don't close if the control key is being held\n    if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n      return;\n    }\n\n    this.trigger('close', {\n      originalEvent: originalEvent,\n      originalSelect2Event: evt\n    });\n  };\n\n  return CloseOnSelect;\n});\n\nS2.define('select2/dropdown/dropdownCss',[\n  '../utils'\n], function (Utils) {\n  function DropdownCSS () { }\n\n  DropdownCSS.prototype.render = function (decorated) {\n    var $dropdown = decorated.call(this);\n\n    var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n    if (dropdownCssClass.indexOf(':all:') !== -1) {\n      dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n      Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n    }\n\n    $dropdown.addClass(dropdownCssClass);\n\n    return $dropdown;\n  };\n\n  return DropdownCSS;\n});\n\nS2.define('select2/i18n/en',[],function () {\n  // English\n  return {\n    errorLoading: function () {\n      return 'The results could not be loaded.';\n    },\n    inputTooLong: function (args) {\n      var overChars = args.input.length - args.maximum;\n\n      var message = 'Please delete ' + overChars + ' character';\n\n      if (overChars != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    inputTooShort: function (args) {\n      var remainingChars = args.minimum - args.input.length;\n\n      var message = 'Please enter ' + remainingChars + ' or more characters';\n\n      return message;\n    },\n    loadingMore: function () {\n      return 'Loading more results…';\n    },\n    maximumSelected: function (args) {\n      var message = 'You can only select ' + args.maximum + ' item';\n\n      if (args.maximum != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    noResults: function () {\n      return 'No results found';\n    },\n    searching: function () {\n      return 'Searching…';\n    },\n    removeAllItems: function () {\n      return 'Remove all items';\n    },\n    removeItem: function () {\n      return 'Remove item';\n    }\n  };\n});\n\nS2.define('select2/defaults',[\n  'jquery',\n\n  './results',\n\n  './selection/single',\n  './selection/multiple',\n  './selection/placeholder',\n  './selection/allowClear',\n  './selection/search',\n  './selection/selectionCss',\n  './selection/eventRelay',\n\n  './utils',\n  './translation',\n  './diacritics',\n\n  './data/select',\n  './data/array',\n  './data/ajax',\n  './data/tags',\n  './data/tokenizer',\n  './data/minimumInputLength',\n  './data/maximumInputLength',\n  './data/maximumSelectionLength',\n\n  './dropdown',\n  './dropdown/search',\n  './dropdown/hidePlaceholder',\n  './dropdown/infiniteScroll',\n  './dropdown/attachBody',\n  './dropdown/minimumResultsForSearch',\n  './dropdown/selectOnClose',\n  './dropdown/closeOnSelect',\n  './dropdown/dropdownCss',\n\n  './i18n/en'\n], function ($,\n\n             ResultsList,\n\n             SingleSelection, MultipleSelection, Placeholder, AllowClear,\n             SelectionSearch, SelectionCSS, EventRelay,\n\n             Utils, Translation, DIACRITICS,\n\n             SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n             DropdownCSS,\n\n             EnglishTranslation) {\n  function Defaults () {\n    this.reset();\n  }\n\n  Defaults.prototype.apply = function (options) {\n    options = $.extend(true, {}, this.defaults, options);\n\n    if (options.dataAdapter == null) {\n      if (options.ajax != null) {\n        options.dataAdapter = AjaxData;\n      } else if (options.data != null) {\n        options.dataAdapter = ArrayData;\n      } else {\n        options.dataAdapter = SelectData;\n      }\n\n      if (options.minimumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MinimumInputLength\n        );\n      }\n\n      if (options.maximumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumInputLength\n        );\n      }\n\n      if (options.maximumSelectionLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumSelectionLength\n        );\n      }\n\n      if (options.tags) {\n        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n      }\n\n      if (options.tokenSeparators != null || options.tokenizer != null) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Tokenizer\n        );\n      }\n    }\n\n    if (options.resultsAdapter == null) {\n      options.resultsAdapter = ResultsList;\n\n      if (options.ajax != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          InfiniteScroll\n        );\n      }\n\n      if (options.placeholder != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          HidePlaceholder\n        );\n      }\n\n      if (options.selectOnClose) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          SelectOnClose\n        );\n      }\n    }\n\n    if (options.dropdownAdapter == null) {\n      if (options.multiple) {\n        options.dropdownAdapter = Dropdown;\n      } else {\n        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n        options.dropdownAdapter = SearchableDropdown;\n      }\n\n      if (options.minimumResultsForSearch !== 0) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          MinimumResultsForSearch\n        );\n      }\n\n      if (options.closeOnSelect) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          CloseOnSelect\n        );\n      }\n\n      if (options.dropdownCssClass != null) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          DropdownCSS\n        );\n      }\n\n      options.dropdownAdapter = Utils.Decorate(\n        options.dropdownAdapter,\n        AttachBody\n      );\n    }\n\n    if (options.selectionAdapter == null) {\n      if (options.multiple) {\n        options.selectionAdapter = MultipleSelection;\n      } else {\n        options.selectionAdapter = SingleSelection;\n      }\n\n      // Add the placeholder mixin if a placeholder was specified\n      if (options.placeholder != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          Placeholder\n        );\n      }\n\n      if (options.allowClear) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          AllowClear\n        );\n      }\n\n      if (options.multiple) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionSearch\n        );\n      }\n\n      if (options.selectionCssClass != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionCSS\n        );\n      }\n\n      options.selectionAdapter = Utils.Decorate(\n        options.selectionAdapter,\n        EventRelay\n      );\n    }\n\n    // If the defaults were not previously applied from an element, it is\n    // possible for the language option to have not been resolved\n    options.language = this._resolveLanguage(options.language);\n\n    // Always fall back to English since it will always be complete\n    options.language.push('en');\n\n    var uniqueLanguages = [];\n\n    for (var l = 0; l < options.language.length; l++) {\n      var language = options.language[l];\n\n      if (uniqueLanguages.indexOf(language) === -1) {\n        uniqueLanguages.push(language);\n      }\n    }\n\n    options.language = uniqueLanguages;\n\n    options.translations = this._processTranslations(\n      options.language,\n      options.debug\n    );\n\n    return options;\n  };\n\n  Defaults.prototype.reset = function () {\n    function stripDiacritics (text) {\n      // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n      function match(a) {\n        return DIACRITICS[a] || a;\n      }\n\n      return text.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function matcher (params, data) {\n      // Always return the object if there is nothing to compare\n      if (params.term == null || params.term.trim() === '') {\n        return data;\n      }\n\n      // Do a recursive check for options with children\n      if (data.children && data.children.length > 0) {\n        // Clone the data object if there are children\n        // This is required as we modify the object to remove any non-matches\n        var match = $.extend(true, {}, data);\n\n        // Check each child of the option\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          var matches = matcher(params, child);\n\n          // If there wasn't a match, remove the object in the array\n          if (matches == null) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        // If any children matched, return the new object\n        if (match.children.length > 0) {\n          return match;\n        }\n\n        // If there were no matching children, check just the plain object\n        return matcher(params, match);\n      }\n\n      var original = stripDiacritics(data.text).toUpperCase();\n      var term = stripDiacritics(params.term).toUpperCase();\n\n      // Check if the text contains the term\n      if (original.indexOf(term) > -1) {\n        return data;\n      }\n\n      // If it doesn't contain the term, don't return anything\n      return null;\n    }\n\n    this.defaults = {\n      amdLanguageBase: './i18n/',\n      autocomplete: 'off',\n      closeOnSelect: true,\n      debug: false,\n      dropdownAutoWidth: false,\n      escapeMarkup: Utils.escapeMarkup,\n      language: {},\n      matcher: matcher,\n      minimumInputLength: 0,\n      maximumInputLength: 0,\n      maximumSelectionLength: 0,\n      minimumResultsForSearch: 0,\n      selectOnClose: false,\n      scrollAfterSelect: false,\n      sorter: function (data) {\n        return data;\n      },\n      templateResult: function (result) {\n        return result.text;\n      },\n      templateSelection: function (selection) {\n        return selection.text;\n      },\n      theme: 'default',\n      width: 'resolve'\n    };\n  };\n\n  Defaults.prototype.applyFromElement = function (options, $element) {\n    var optionLanguage = options.language;\n    var defaultLanguage = this.defaults.language;\n    var elementLanguage = $element.prop('lang');\n    var parentLanguage = $element.closest('[lang]').prop('lang');\n\n    var languages = Array.prototype.concat.call(\n      this._resolveLanguage(elementLanguage),\n      this._resolveLanguage(optionLanguage),\n      this._resolveLanguage(defaultLanguage),\n      this._resolveLanguage(parentLanguage)\n    );\n\n    options.language = languages;\n\n    return options;\n  };\n\n  Defaults.prototype._resolveLanguage = function (language) {\n    if (!language) {\n      return [];\n    }\n\n    if ($.isEmptyObject(language)) {\n      return [];\n    }\n\n    if ($.isPlainObject(language)) {\n      return [language];\n    }\n\n    var languages;\n\n    if (!Array.isArray(language)) {\n      languages = [language];\n    } else {\n      languages = language;\n    }\n\n    var resolvedLanguages = [];\n\n    for (var l = 0; l < languages.length; l++) {\n      resolvedLanguages.push(languages[l]);\n\n      if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n        // Extract the region information if it is included\n        var languageParts = languages[l].split('-');\n        var baseLanguage = languageParts[0];\n\n        resolvedLanguages.push(baseLanguage);\n      }\n    }\n\n    return resolvedLanguages;\n  };\n\n  Defaults.prototype._processTranslations = function (languages, debug) {\n    var translations = new Translation();\n\n    for (var l = 0; l < languages.length; l++) {\n      var languageData = new Translation();\n\n      var language = languages[l];\n\n      if (typeof language === 'string') {\n        try {\n          // Try to load it with the original name\n          languageData = Translation.loadPath(language);\n        } catch (e) {\n          try {\n            // If we couldn't load it, check if it wasn't the full path\n            language = this.defaults.amdLanguageBase + language;\n            languageData = Translation.loadPath(language);\n          } catch (ex) {\n            // The translation could not be loaded at all. Sometimes this is\n            // because of a configuration problem, other times this can be\n            // because of how Select2 helps load all possible translation files\n            if (debug && window.console && console.warn) {\n              console.warn(\n                'Select2: The language file for \"' + language + '\" could ' +\n                'not be automatically loaded. A fallback will be used instead.'\n              );\n            }\n          }\n        }\n      } else if ($.isPlainObject(language)) {\n        languageData = new Translation(language);\n      } else {\n        languageData = language;\n      }\n\n      translations.extend(languageData);\n    }\n\n    return translations;\n  };\n\n  Defaults.prototype.set = function (key, value) {\n    var camelKey = $.camelCase(key);\n\n    var data = {};\n    data[camelKey] = value;\n\n    var convertedData = Utils._convertData(data);\n\n    $.extend(true, this.defaults, convertedData);\n  };\n\n  var defaults = new Defaults();\n\n  return defaults;\n});\n\nS2.define('select2/options',[\n  'jquery',\n  './defaults',\n  './utils'\n], function ($, Defaults, Utils) {\n  function Options (options, $element) {\n    this.options = options;\n\n    if ($element != null) {\n      this.fromElement($element);\n    }\n\n    if ($element != null) {\n      this.options = Defaults.applyFromElement(this.options, $element);\n    }\n\n    this.options = Defaults.apply(this.options);\n  }\n\n  Options.prototype.fromElement = function ($e) {\n    var excludedData = ['select2'];\n\n    if (this.options.multiple == null) {\n      this.options.multiple = $e.prop('multiple');\n    }\n\n    if (this.options.disabled == null) {\n      this.options.disabled = $e.prop('disabled');\n    }\n\n    if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n      this.options.autocomplete = $e.prop('autocomplete');\n    }\n\n    if (this.options.dir == null) {\n      if ($e.prop('dir')) {\n        this.options.dir = $e.prop('dir');\n      } else if ($e.closest('[dir]').prop('dir')) {\n        this.options.dir = $e.closest('[dir]').prop('dir');\n      } else {\n        this.options.dir = 'ltr';\n      }\n    }\n\n    $e.prop('disabled', this.options.disabled);\n    $e.prop('multiple', this.options.multiple);\n\n    if (Utils.GetData($e[0], 'select2Tags')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-select2-tags` attribute has been changed to ' +\n          'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n          'removed in future versions of Select2.'\n        );\n      }\n\n      Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n      Utils.StoreData($e[0], 'tags', true);\n    }\n\n    if (Utils.GetData($e[0], 'ajaxUrl')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-ajax-url` attribute has been changed to ' +\n          '`data-ajax--url` and support for the old attribute will be removed' +\n          ' in future versions of Select2.'\n        );\n      }\n\n      $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n      Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n    }\n\n    var dataset = {};\n\n    function upperCaseLetter(_, letter) {\n      return letter.toUpperCase();\n    }\n\n    // Pre-load all of the attributes which are prefixed with `data-`\n    for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n      var attributeName = $e[0].attributes[attr].name;\n      var prefix = 'data-';\n\n      if (attributeName.substr(0, prefix.length) == prefix) {\n        // Get the contents of the attribute after `data-`\n        var dataName = attributeName.substring(prefix.length);\n\n        // Get the data contents from the consistent source\n        // This is more than likely the jQuery data helper\n        var dataValue = Utils.GetData($e[0], dataName);\n\n        // camelCase the attribute name to match the spec\n        var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n        // Store the data attribute contents into the dataset since\n        dataset[camelDataName] = dataValue;\n      }\n    }\n\n    // Prefer the element's `dataset` attribute if it exists\n    // jQuery 1.x does not correctly handle data attributes with multiple dashes\n    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n      dataset = $.extend(true, {}, $e[0].dataset, dataset);\n    }\n\n    // Prefer our internal data cache if it exists\n    var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n    data = Utils._convertData(data);\n\n    for (var key in data) {\n      if (excludedData.indexOf(key) > -1) {\n        continue;\n      }\n\n      if ($.isPlainObject(this.options[key])) {\n        $.extend(this.options[key], data[key]);\n      } else {\n        this.options[key] = data[key];\n      }\n    }\n\n    return this;\n  };\n\n  Options.prototype.get = function (key) {\n    return this.options[key];\n  };\n\n  Options.prototype.set = function (key, val) {\n    this.options[key] = val;\n  };\n\n  return Options;\n});\n\nS2.define('select2/core',[\n  'jquery',\n  './options',\n  './utils',\n  './keys'\n], function ($, Options, Utils, KEYS) {\n  var Select2 = function ($element, options) {\n    if (Utils.GetData($element[0], 'select2') != null) {\n      Utils.GetData($element[0], 'select2').destroy();\n    }\n\n    this.$element = $element;\n\n    this.id = this._generateId($element);\n\n    options = options || {};\n\n    this.options = new Options(options, $element);\n\n    Select2.__super__.constructor.call(this);\n\n    // Set up the tabindex\n\n    var tabindex = $element.attr('tabindex') || 0;\n    Utils.StoreData($element[0], 'old-tabindex', tabindex);\n    $element.attr('tabindex', '-1');\n\n    // Set up containers and adapters\n\n    var DataAdapter = this.options.get('dataAdapter');\n    this.dataAdapter = new DataAdapter($element, this.options);\n\n    var $container = this.render();\n\n    this._placeContainer($container);\n\n    var SelectionAdapter = this.options.get('selectionAdapter');\n    this.selection = new SelectionAdapter($element, this.options);\n    this.$selection = this.selection.render();\n\n    this.selection.position(this.$selection, $container);\n\n    var DropdownAdapter = this.options.get('dropdownAdapter');\n    this.dropdown = new DropdownAdapter($element, this.options);\n    this.$dropdown = this.dropdown.render();\n\n    this.dropdown.position(this.$dropdown, $container);\n\n    var ResultsAdapter = this.options.get('resultsAdapter');\n    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n    this.$results = this.results.render();\n\n    this.results.position(this.$results, this.$dropdown);\n\n    // Bind events\n\n    var self = this;\n\n    // Bind the container to all of the adapters\n    this._bindAdapters();\n\n    // Register any DOM event handlers\n    this._registerDomEvents();\n\n    // Register any internal event handlers\n    this._registerDataEvents();\n    this._registerSelectionEvents();\n    this._registerDropdownEvents();\n    this._registerResultsEvents();\n    this._registerEvents();\n\n    // Set the initial state\n    this.dataAdapter.current(function (initialData) {\n      self.trigger('selection:update', {\n        data: initialData\n      });\n    });\n\n    // Hide the original select\n    $element[0].classList.add('select2-hidden-accessible');\n    $element.attr('aria-hidden', 'true');\n\n    // Synchronize any monitored attributes\n    this._syncAttributes();\n\n    Utils.StoreData($element[0], 'select2', this);\n\n    // Ensure backwards compatibility with $element.data('select2').\n    $element.data('select2', this);\n  };\n\n  Utils.Extend(Select2, Utils.Observable);\n\n  Select2.prototype._generateId = function ($element) {\n    var id = '';\n\n    if ($element.attr('id') != null) {\n      id = $element.attr('id');\n    } else if ($element.attr('name') != null) {\n      id = $element.attr('name') + '-' + Utils.generateChars(2);\n    } else {\n      id = Utils.generateChars(4);\n    }\n\n    id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n    id = 'select2-' + id;\n\n    return id;\n  };\n\n  Select2.prototype._placeContainer = function ($container) {\n    $container.insertAfter(this.$element);\n\n    var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n    if (width != null) {\n      $container.css('width', width);\n    }\n  };\n\n  Select2.prototype._resolveWidth = function ($element, method) {\n    var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n    if (method == 'resolve') {\n      var styleWidth = this._resolveWidth($element, 'style');\n\n      if (styleWidth != null) {\n        return styleWidth;\n      }\n\n      return this._resolveWidth($element, 'element');\n    }\n\n    if (method == 'element') {\n      var elementWidth = $element.outerWidth(false);\n\n      if (elementWidth <= 0) {\n        return 'auto';\n      }\n\n      return elementWidth + 'px';\n    }\n\n    if (method == 'style') {\n      var style = $element.attr('style');\n\n      if (typeof(style) !== 'string') {\n        return null;\n      }\n\n      var attrs = style.split(';');\n\n      for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n        var attr = attrs[i].replace(/\\s/g, '');\n        var matches = attr.match(WIDTH);\n\n        if (matches !== null && matches.length >= 1) {\n          return matches[1];\n        }\n      }\n\n      return null;\n    }\n\n    if (method == 'computedstyle') {\n      var computedStyle = window.getComputedStyle($element[0]);\n\n      return computedStyle.width;\n    }\n\n    return method;\n  };\n\n  Select2.prototype._bindAdapters = function () {\n    this.dataAdapter.bind(this, this.$container);\n    this.selection.bind(this, this.$container);\n\n    this.dropdown.bind(this, this.$container);\n    this.results.bind(this, this.$container);\n  };\n\n  Select2.prototype._registerDomEvents = function () {\n    var self = this;\n\n    this.$element.on('change.select2', function () {\n      self.dataAdapter.current(function (data) {\n        self.trigger('selection:update', {\n          data: data\n        });\n      });\n    });\n\n    this.$element.on('focus.select2', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this._syncA = Utils.bind(this._syncAttributes, this);\n    this._syncS = Utils.bind(this._syncSubtree, this);\n\n    this._observer = new window.MutationObserver(function (mutations) {\n      self._syncA();\n      self._syncS(mutations);\n    });\n    this._observer.observe(this.$element[0], {\n      attributes: true,\n      childList: true,\n      subtree: false\n    });\n  };\n\n  Select2.prototype._registerDataEvents = function () {\n    var self = this;\n\n    this.dataAdapter.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerSelectionEvents = function () {\n    var self = this;\n    var nonRelayEvents = ['toggle', 'focus'];\n\n    this.selection.on('toggle', function () {\n      self.toggleDropdown();\n    });\n\n    this.selection.on('focus', function (params) {\n      self.focus(params);\n    });\n\n    this.selection.on('*', function (name, params) {\n      if (nonRelayEvents.indexOf(name) !== -1) {\n        return;\n      }\n\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerDropdownEvents = function () {\n    var self = this;\n\n    this.dropdown.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerResultsEvents = function () {\n    var self = this;\n\n    this.results.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerEvents = function () {\n    var self = this;\n\n    this.on('open', function () {\n      self.$container[0].classList.add('select2-container--open');\n    });\n\n    this.on('close', function () {\n      self.$container[0].classList.remove('select2-container--open');\n    });\n\n    this.on('enable', function () {\n      self.$container[0].classList.remove('select2-container--disabled');\n    });\n\n    this.on('disable', function () {\n      self.$container[0].classList.add('select2-container--disabled');\n    });\n\n    this.on('blur', function () {\n      self.$container[0].classList.remove('select2-container--focus');\n    });\n\n    this.on('query', function (params) {\n      if (!self.isOpen()) {\n        self.trigger('open', {});\n      }\n\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:all', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('query:append', function (params) {\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:append', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('keypress', function (evt) {\n      var key = evt.which;\n\n      if (self.isOpen()) {\n        if (key === KEYS.ESC || key === KEYS.TAB ||\n            (key === KEYS.UP && evt.altKey)) {\n          self.close(evt);\n\n          evt.preventDefault();\n        } else if (key === KEYS.ENTER) {\n          self.trigger('results:select', {});\n\n          evt.preventDefault();\n        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n          self.trigger('results:toggle', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.UP) {\n          self.trigger('results:previous', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.DOWN) {\n          self.trigger('results:next', {});\n\n          evt.preventDefault();\n        }\n      } else {\n        if (key === KEYS.ENTER || key === KEYS.SPACE ||\n            (key === KEYS.DOWN && evt.altKey)) {\n          self.open();\n\n          evt.preventDefault();\n        }\n      }\n    });\n  };\n\n  Select2.prototype._syncAttributes = function () {\n    this.options.set('disabled', this.$element.prop('disabled'));\n\n    if (this.isDisabled()) {\n      if (this.isOpen()) {\n        this.close();\n      }\n\n      this.trigger('disable', {});\n    } else {\n      this.trigger('enable', {});\n    }\n  };\n\n  Select2.prototype._isChangeMutation = function (mutations) {\n    var self = this;\n\n    if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n      for (var n = 0; n < mutations.addedNodes.length; n++) {\n        var node = mutations.addedNodes[n];\n\n        if (node.selected) {\n          return true;\n        }\n      }\n    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n      return true;\n    } else if (Array.isArray(mutations)) {\n      return mutations.some(function (mutation) {\n        return self._isChangeMutation(mutation);\n      });\n    }\n\n    return false;\n  };\n\n  Select2.prototype._syncSubtree = function (mutations) {\n    var changed = this._isChangeMutation(mutations);\n    var self = this;\n\n    // Only re-pull the data if we think there is a change\n    if (changed) {\n      this.dataAdapter.current(function (currentData) {\n        self.trigger('selection:update', {\n          data: currentData\n        });\n      });\n    }\n  };\n\n  /**\n   * Override the trigger method to automatically trigger pre-events when\n   * there are events that can be prevented.\n   */\n  Select2.prototype.trigger = function (name, args) {\n    var actualTrigger = Select2.__super__.trigger;\n    var preTriggerMap = {\n      'open': 'opening',\n      'close': 'closing',\n      'select': 'selecting',\n      'unselect': 'unselecting',\n      'clear': 'clearing'\n    };\n\n    if (args === undefined) {\n      args = {};\n    }\n\n    if (name in preTriggerMap) {\n      var preTriggerName = preTriggerMap[name];\n      var preTriggerArgs = {\n        prevented: false,\n        name: name,\n        args: args\n      };\n\n      actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n      if (preTriggerArgs.prevented) {\n        args.prevented = true;\n\n        return;\n      }\n    }\n\n    actualTrigger.call(this, name, args);\n  };\n\n  Select2.prototype.toggleDropdown = function () {\n    if (this.isDisabled()) {\n      return;\n    }\n\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  };\n\n  Select2.prototype.open = function () {\n    if (this.isOpen()) {\n      return;\n    }\n\n    if (this.isDisabled()) {\n      return;\n    }\n\n    this.trigger('query', {});\n  };\n\n  Select2.prototype.close = function (evt) {\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.trigger('close', { originalEvent : evt });\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  Select2.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  Select2.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  Select2.prototype.isOpen = function () {\n    return this.$container[0].classList.contains('select2-container--open');\n  };\n\n  Select2.prototype.hasFocus = function () {\n    return this.$container[0].classList.contains('select2-container--focus');\n  };\n\n  Select2.prototype.focus = function (data) {\n    // No need to re-trigger focus events if we are already focused\n    if (this.hasFocus()) {\n      return;\n    }\n\n    this.$container[0].classList.add('select2-container--focus');\n    this.trigger('focus', {});\n  };\n\n  Select2.prototype.enable = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n        ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n        ' instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      args = [true];\n    }\n\n    var disabled = !args[0];\n\n    this.$element.prop('disabled', disabled);\n  };\n\n  Select2.prototype.data = function () {\n    if (this.options.get('debug') &&\n        arguments.length > 0 && window.console && console.warn) {\n      console.warn(\n        'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n        'should consider setting the value instead using `$element.val()`.'\n      );\n    }\n\n    var data = [];\n\n    this.dataAdapter.current(function (currentData) {\n      data = currentData;\n    });\n\n    return data;\n  };\n\n  Select2.prototype.val = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n        ' removed in later Select2 versions. Use $element.val() instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      return this.$element.val();\n    }\n\n    var newVal = args[0];\n\n    if (Array.isArray(newVal)) {\n      newVal = newVal.map(function (obj) {\n        return obj.toString();\n      });\n    }\n\n    this.$element.val(newVal).trigger('input').trigger('change');\n  };\n\n  Select2.prototype.destroy = function () {\n    this.$container.remove();\n\n    this._observer.disconnect();\n    this._observer = null;\n\n    this._syncA = null;\n    this._syncS = null;\n\n    this.$element.off('.select2');\n    this.$element.attr('tabindex',\n    Utils.GetData(this.$element[0], 'old-tabindex'));\n\n    this.$element[0].classList.remove('select2-hidden-accessible');\n    this.$element.attr('aria-hidden', 'false');\n    Utils.RemoveData(this.$element[0]);\n    this.$element.removeData('select2');\n\n    this.dataAdapter.destroy();\n    this.selection.destroy();\n    this.dropdown.destroy();\n    this.results.destroy();\n\n    this.dataAdapter = null;\n    this.selection = null;\n    this.dropdown = null;\n    this.results = null;\n  };\n\n  Select2.prototype.render = function () {\n    var $container = $(\n      '<span class=\"select2 select2-container\">' +\n        '<span class=\"selection\"></span>' +\n        '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n      '</span>'\n    );\n\n    $container.attr('dir', this.options.get('dir'));\n\n    this.$container = $container;\n\n    this.$container[0].classList\n      .add('select2-container--' + this.options.get('theme'));\n\n    Utils.StoreData($container[0], 'element', this.$element);\n\n    return $container;\n  };\n\n  return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n  'jquery'\n], function ($) {\n  // Used to shim jQuery.mousewheel for non-full builds.\n  return $;\n});\n\nS2.define('jquery.select2',[\n  'jquery',\n  'jquery-mousewheel',\n\n  './select2/core',\n  './select2/defaults',\n  './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n  if ($.fn.select2 == null) {\n    // All methods that should return the element\n    var thisMethods = ['open', 'close', 'destroy'];\n\n    $.fn.select2 = function (options) {\n      options = options || {};\n\n      if (typeof options === 'object') {\n        this.each(function () {\n          var instanceOptions = $.extend(true, {}, options);\n\n          var instance = new Select2($(this), instanceOptions);\n        });\n\n        return this;\n      } else if (typeof options === 'string') {\n        var ret;\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        this.each(function () {\n          var instance = Utils.GetData(this, 'select2');\n\n          if (instance == null && window.console && console.error) {\n            console.error(\n              'The select2(\\'' + options + '\\') method was called on an ' +\n              'element that is not using Select2.'\n            );\n          }\n\n          ret = instance[options].apply(instance, args);\n        });\n\n        // Check if we should be returning `this`\n        if (thisMethods.indexOf(options) > -1) {\n          return this;\n        }\n\n        return ret;\n      } else {\n        throw new Error('Invalid arguments for Select2: ' + options);\n      }\n    };\n  }\n\n  if ($.fn.select2.defaults == null) {\n    $.fn.select2.defaults = Defaults;\n  }\n\n  return Select2;\n});\n\n  // Return the AMD loader configuration so it can be used outside of this file\n  return {\n    define: S2.define,\n    require: S2.require\n  };\n}());\n\n  // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n  var select2 = S2.require('jquery.select2');\n\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  jQuery.fn.select2.amd = S2;\n\n  // Return the Select2 instance for anyone who is importing it.\n  return select2;\n}));\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/ar.js",
    "content": "tinymce.addI18n('ar',{\n\"Redo\": \"\\u0625\\u0639\\u0627\\u062f\\u0629\",\n\"Undo\": \"\\u062a\\u0631\\u0627\\u062c\\u0639\",\n\"Cut\": \"\\u0642\\u0635\",\n\"Copy\": \"\\u0646\\u0633\\u062e\",\n\"Paste\": \"\\u0644\\u0635\\u0642\",\n\"Select all\": \"\\u062a\\u062d\\u062f\\u064a\\u062f \\u0627\\u0644\\u0643\\u0644\",\n\"New document\": \"\\u0645\\u0633\\u062a\\u0646\\u062f \\u062c\\u062f\\u064a\\u062f\",\n\"Ok\": \"\\u0645\\u0648\\u0627\\u0641\\u0642\",\n\"Cancel\": \"\\u0625\\u0644\\u063a\\u0627\\u0621 \\u0627\\u0644\\u0623\\u0645\\u0631\",\n\"Visual aids\": \"\\u0623\\u062f\\u0648\\u0627\\u062a \\u0627\\u0644\\u0645\\u0633\\u0627\\u0639\\u062f\\u0629 \\u0627\\u0644\\u0628\\u0635\\u0631\\u064a\\u0629\",\n\"Bold\": \"\\u063a\\u0627\\u0645\\u0642\",\n\"Italic\": \"\\u0645\\u0627\\u0626\\u0644\",\n\"Underline\": \"\\u062a\\u0633\\u0637\\u064a\\u0631\",\n\"Strikethrough\": \"\\u064a\\u062a\\u0648\\u0633\\u0637\\u0647 \\u062e\\u0637\",\n\"Superscript\": \"\\u0645\\u0631\\u062a\\u0641\\u0639\",\n\"Subscript\": \"\\u0645\\u0646\\u062e\\u0641\\u0636\",\n\"Clear formatting\": \"\\u0645\\u0633\\u062d \\u0627\\u0644\\u062a\\u0646\\u0633\\u064a\\u0642\",\n\"Align left\": \"\\u0645\\u062d\\u0627\\u0630\\u0627\\u0629 \\u0625\\u0644\\u0649 \\u0627\\u0644\\u064a\\u0633\\u0627\\u0631\",\n\"Align center\": \"\\u0645\\u062d\\u0627\\u0630\\u0627\\u0629 \\u0625\\u0644\\u0649 \\u0627\\u0644\\u0648\\u0633\\u0637\",\n\"Align right\": \"\\u0645\\u062d\\u0627\\u0630\\u0627\\u0629 \\u0625\\u0644\\u0649 \\u0627\\u0644\\u064a\\u0645\\u064a\\u0646\",\n\"Justify\": \"\\u0636\\u0628\\u0637\",\n\"Bullet list\": \"\\u0642\\u0627\\u0626\\u0645\\u0629 \\u062a\\u0639\\u062f\\u0627\\u062f \\u0646\\u0642\\u0637\\u064a\",\n\"Numbered list\": \"\\u0642\\u0627\\u0626\\u0645\\u0629 \\u0645\\u0631\\u0642\\u0645\\u0651\\u064e\\u0629\",\n\"Decrease indent\": \"\\u062a\\u0642\\u0644\\u064a\\u0644 \\u0627\\u0644\\u0645\\u0633\\u0627\\u0641\\u0629 \\u0627\\u0644\\u0628\\u0627\\u062f\\u0626\\u0629\",\n\"Increase indent\": \"\\u0632\\u064a\\u0627\\u062f\\u0629 \\u0627\\u0644\\u0645\\u0633\\u0627\\u0641\\u0629 \\u0627\\u0644\\u0628\\u0627\\u062f\\u0626\\u0629\",\n\"Close\": \"\\u0625\\u063a\\u0644\\u0627\\u0642\",\n\"Formats\": \"\\u0627\\u0644\\u062a\\u0646\\u0633\\u064a\\u0642\\u0627\\u062a\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u0645\\u062a\\u0635\\u0641\\u062d\\u0643 \\u0644\\u0627 \\u064a\\u062f\\u0639\\u0645 \\u0627\\u0644\\u0648\\u0635\\u0648\\u0644 \\u0627\\u0644\\u0645\\u0628\\u0627\\u0634\\u0631 \\u0625\\u0644\\u0649 \\u0627\\u0644\\u062d\\u0627\\u0641\\u0638\\u0629. \\u064a\\u064f\\u0631\\u062c\\u0649 \\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 \\u0627\\u062e\\u062a\\u0635\\u0627\\u0631\\u0627\\u062a \\u0644\\u0648\\u062d\\u0629 \\u0627\\u0644\\u0645\\u0641\\u0627\\u062a\\u064a\\u062d Ctrl+X\\/C\\/V \\u0628\\u062f\\u0644\\u0627\\u064b \\u0645\\u0646 \\u0630\\u0644\\u0643.\",\n\"Headers\": \"\\u0627\\u0644\\u0639\\u0646\\u0627\\u0648\\u064a\\u0646\",\n\"Header 1\": \"\\u0627\\u0644\\u0639\\u0646\\u0648\\u0627\\u0646 1\",\n\"Header 2\": \"\\u0627\\u0644\\u0639\\u0646\\u0648\\u0627\\u0646 2\",\n\"Header 3\": \"\\u0627\\u0644\\u0639\\u0646\\u0648\\u0627\\u0646 3\",\n\"Header 4\": \"\\u0627\\u0644\\u0639\\u0646\\u0648\\u0627\\u0646 4\",\n\"Header 5\": \"\\u0627\\u0644\\u0639\\u0646\\u0648\\u0627\\u0646 5\",\n\"Header 6\": \"\\u0627\\u0644\\u0639\\u0646\\u0648\\u0627\\u0646 6\",\n\"Headings\": \"\\u0627\\u0644\\u0639\\u0646\\u0627\\u0648\\u064a\\u0646\",\n\"Heading 1\": \"\\u0639\\u0646\\u0648\\u0627\\u0646 \\u0661\",\n\"Heading 2\": \"\\u0639\\u0646\\u0648\\u0627\\u0646 2\",\n\"Heading 3\": \"\\u0639\\u0646\\u0648\\u0627\\u0646 3\",\n\"Heading 4\": \"\\u0639\\u0646\\u0648\\u0627\\u0646 4\",\n\"Heading 5\": \"\\u0639\\u0646\\u0648\\u0627\\u0646 5\",\n\"Heading 6\": \"\\u0639\\u0646\\u0648\\u0627\\u0646 6\",\n\"Preformatted\": \"\\u0645\\u0646\\u0633\\u0642 \\u0645\\u0633\\u0628\\u0642\\u064b\\u0627\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"\\u0631\\u0645\\u0632\",\n\"Paragraph\": \"\\u0627\\u0644\\u0641\\u0642\\u0631\\u0629\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"\\u062f\\u0627\\u062e\\u0644\\u064a\",\n\"Blocks\": \"\\u0627\\u0644\\u0643\\u062a\\u0644\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u064a\\u062a\\u0645 \\u0627\\u0644\\u0644\\u0635\\u0642 \\u062d\\u0627\\u0644\\u064a\\u0627\\u064b \\u0643\\u0646\\u0635 \\u0639\\u0627\\u062f\\u064a. \\u0627\\u0644\\u0645\\u062d\\u062a\\u0648\\u0649 \\u0633\\u064a\\u0628\\u0642\\u0649 \\u0643\\u0646\\u0635 \\u0639\\u0627\\u062f\\u064a \\u062d\\u062a\\u0649 \\u062a\\u0642\\u0648\\u0645 \\u0628\\u062a\\u0639\\u0637\\u064a\\u0644 \\u0647\\u0630\\u0627 \\u0627\\u0644\\u062e\\u064a\\u0627\\u0631.\",\n\"Fonts\": \"\\u0627\\u0644\\u062e\\u0637\\u0648\\u0637\",\n\"Font Sizes\": \"\\u0623\\u062d\\u062c\\u0627\\u0645 \\u0627\\u0644\\u062e\\u0637\\u0648\\u0637\",\n\"Class\": \"\\u0627\\u0644\\u0641\\u0626\\u0629\",\n\"Browse for an image\": \"\\u0627\\u0633\\u062a\\u0639\\u0631\\u0627\\u0636 \\u0635\\u0648\\u0631\\u0629\",\n\"OR\": \"\\u0623\\u0648\",\n\"Drop an image here\": \"\\u0625\\u0641\\u0644\\u0627\\u062a \\u0635\\u0648\\u0631\\u0629 \\u0647\\u0646\\u0627\",\n\"Upload\": \"\\u062a\\u062d\\u0645\\u064a\\u0644\",\n\"Block\": \"\\u062d\\u0638\\u0631\",\n\"Align\": \"\\u0645\\u062d\\u0627\\u0630\\u0627\\u0629\",\n\"Default\": \"\\u0627\\u0644\\u0627\\u0641\\u062a\\u0631\\u0627\\u0636\\u064a\",\n\"Circle\": \"\\u062f\\u0627\\u0626\\u0631\\u0629\",\n\"Disc\": \"\\u0642\\u0631\\u0635\",\n\"Square\": \"\\u0645\\u0631\\u0628\\u0639\",\n\"Lower Alpha\": \"\\u062a\\u0631\\u0642\\u064a\\u0645 \\u0623\\u062e\\u0631\\u0641 \\u0635\\u063a\\u064a\\u0631\\u0629\",\n\"Lower Greek\": \"\\u062a\\u0631\\u0642\\u064a\\u0645 \\u064a\\u0648\\u0646\\u0627\\u0646\\u064a \\u0635\\u063a\\u064a\\u0631\",\n\"Lower Roman\": \"\\u062a\\u0631\\u0642\\u064a\\u0645 \\u0631\\u0648\\u0645\\u0627\\u0646\\u064a \\u0635\\u063a\\u064a\\u0631\",\n\"Upper Alpha\": \"\\u062a\\u0631\\u0642\\u064a\\u0645 \\u0623\\u062d\\u0631\\u0641 \\u0643\\u0628\\u064a\\u0631\\u0629\",\n\"Upper Roman\": \"\\u062a\\u0631\\u0642\\u064a\\u0645 \\u0631\\u0648\\u0645\\u0627\\u0646\\u064a \\u0643\\u0628\\u064a\\u0631\",\n\"Anchor...\": \"\\u0645\\u0631\\u0633\\u0627\\u0629...\",\n\"Name\": \"\\u0627\\u0644\\u0627\\u0633\\u0645\",\n\"Id\": \"\\u0631\\u0642\\u0645 \\u0627\\u0644\\u0645\\u0639\\u0631\\u0641\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"\\u0631\\u0642\\u0645 \\u0627\\u0644\\u0645\\u0639\\u0631\\u0641 \\u064a\\u062c\\u0628 \\u0623\\u0646 \\u062a\\u0628\\u062f\\u0623 \\u0628\\u062d\\u0631\\u0641\\u060c \\u064a\\u062a\\u0628\\u0639 \\u0641\\u0642\\u0637 \\u0628\\u062d\\u0631\\u0648\\u0641 \\u0648\\u0623\\u0631\\u0642\\u0627\\u0645\\u060c \\u0634\\u0631\\u0637\\u0627\\u062a\\u060c \\u0623\\u0648 \\u0627\\u0644\\u0646\\u0642\\u0627\\u0637\\u060c \\u0627\\u0644\\u0646\\u0642\\u0637\\u062a\\u064a\\u0646 \\u0623\\u0648 \\u0627\\u0644\\u0634\\u0631\\u0637\\u0627\\u062a \\u0627\\u0644\\u0633\\u0641\\u0644\\u064a\\u0629.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u0644\\u062f\\u064a\\u0643 \\u062a\\u063a\\u064a\\u064a\\u0631\\u0627\\u062a \\u0644\\u0645 \\u064a\\u062a\\u0645 \\u062d\\u0641\\u0638\\u0647\\u0627 \\u0647\\u0644 \\u0623\\u0646\\u062a \\u0645\\u062a\\u0623\\u0643\\u062f \\u0623\\u0646\\u0643 \\u062a\\u0631\\u063a\\u0628 \\u0641\\u064a \\u0627\\u0644\\u0627\\u0646\\u062a\\u0642\\u0627\\u0644 \\u0628\\u0639\\u064a\\u062f\\u0627\\u061f\",\n\"Restore last draft\": \"\\u0627\\u0633\\u062a\\u0639\\u0627\\u062f\\u0629 \\u0623\\u062e\\u0631 \\u0645\\u0633\\u0648\\u062f\\u0629\",\n\"Special character...\": \"\\u0631\\u0645\\u0632 \\u062e\\u0627\\u0635...\",\n\"Source code\": \"\\u0634\\u0641\\u0631\\u0629 \\u0627\\u0644\\u0645\\u0635\\u062f\\u0631\",\n\"Insert\\/Edit code sample\": \"\\u0625\\u062f\\u0631\\u0627\\u062c\\/\\u062a\\u062d\\u0631\\u064a\\u0631 \\u0627\\u0644\\u0643\\u0648\\u062f\",\n\"Language\": \"\\u0627\\u0644\\u0644\\u063a\\u0629\",\n\"Code sample...\": \"\\u0639\\u064a\\u0646\\u0629 \\u0627\\u0644\\u0631\\u0645\\u0632...\",\n\"Color Picker\": \"\\u0645\\u0646\\u062a\\u0642\\u064a \\u0627\\u0644\\u0623\\u0644\\u0648\\u0627\\u0646\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"\\u0645\\u0646 \\u0627\\u0644\\u064a\\u0633\\u0627\\u0631 \\u0644\\u0644\\u064a\\u0645\\u064a\\u0646\",\n\"Right to left\": \"\\u0645\\u0646 \\u0627\\u0644\\u064a\\u0645\\u064a\\u0646 \\u0644\\u0644\\u064a\\u0633\\u0627\\u0631\",\n\"Emoticons...\": \"\\u0631\\u0645\\u0648\\u0632 \\u0627\\u0644\\u0645\\u0634\\u0627\\u0639\\u0631...\",\n\"Metadata and Document Properties\": \"\\u062e\\u0635\\u0627\\u0626\\u0635 \\u0628\\u064a\\u0627\\u0646\\u0627\\u062a \\u0627\\u0644\\u062a\\u0639\\u0631\\u064a\\u0641 \\u0648\\u0627\\u0644\\u0645\\u0633\\u062a\\u0646\\u062f\",\n\"Title\": \"\\u0627\\u0644\\u0639\\u0646\\u0648\\u0627\\u0646\",\n\"Keywords\": \"\\u0643\\u0644\\u0645\\u0627\\u062a \\u0627\\u0644\\u0628\\u062d\\u062b\",\n\"Description\": \"\\u0627\\u0644\\u0648\\u0635\\u0641\",\n\"Robots\": \"\\u0627\\u0644\\u0631\\u0648\\u0628\\u0648\\u062a\\u0627\\u062a\",\n\"Author\": \"\\u0627\\u0644\\u0643\\u0627\\u062a\\u0628\",\n\"Encoding\": \"\\u0627\\u0644\\u062a\\u0631\\u0645\\u064a\\u0632\",\n\"Fullscreen\": \"\\u0645\\u0644\\u0621 \\u0627\\u0644\\u0634\\u0627\\u0634\\u0629\",\n\"Action\": \"\\u0627\\u0644\\u0639\\u0645\\u0644\\u064a\\u0629\",\n\"Shortcut\": \"\\u0627\\u0644\\u0627\\u062e\\u062a\\u0635\\u0627\\u0631\",\n\"Help\": \"\\u0627\\u0644\\u0645\\u0633\\u0627\\u0639\\u062f\\u0629\",\n\"Address\": \"\\u0627\\u0644\\u0639\\u0646\\u0648\\u0627\\u0646\",\n\"Focus to menubar\": \"\\u0627\\u0644\\u062a\\u0631\\u0643\\u064a\\u0632 \\u0639\\u0644\\u0649 \\u0634\\u0631\\u064a\\u0637 \\u0627\\u0644\\u0642\\u0648\\u0627\\u0626\\u0645\",\n\"Focus to toolbar\": \"\\u0627\\u0644\\u062a\\u0631\\u0643\\u064a\\u0632 \\u0639\\u0644\\u0649 \\u0634\\u0631\\u064a\\u0637 \\u0627\\u0644\\u0623\\u062f\\u0648\\u0627\\u062a\",\n\"Focus to element path\": \"\\u0627\\u0644\\u062a\\u0631\\u0643\\u064a\\u0632 \\u0639\\u0644\\u0649 \\u0645\\u0633\\u0627\\u0631 \\u0627\\u0644\\u0639\\u0646\\u0635\\u0631\",\n\"Focus to contextual toolbar\": \"\\u0627\\u0644\\u062a\\u0631\\u0643\\u064a\\u0632 \\u0639\\u0644\\u0649 \\u0634\\u0631\\u064a\\u0637 \\u0623\\u062f\\u0648\\u0627\\u062a \\u0627\\u0644\\u0633\\u064a\\u0627\\u0642\",\n\"Insert link (if link plugin activated)\": \"\\u0625\\u0636\\u0627\\u0641\\u0629 \\u0631\\u0627\\u0628\\u0637 (\\u0625\\u0630\\u0627 \\u0643\\u0627\\u0646\\u062a \\u0625\\u0636\\u0627\\u0641\\u0629 \\u0627\\u0644\\u0631\\u0648\\u0627\\u0628\\u0637 \\u0645\\u0641\\u0639\\u0644\\u0629)\",\n\"Save (if save plugin activated)\": \"\\u062d\\u0641\\u0638 (\\u0625\\u0630\\u0627 \\u0643\\u0627\\u0646\\u062a \\u0625\\u0636\\u0627\\u0641\\u0629 \\u0627\\u0644\\u062d\\u0641\\u0638 \\u0645\\u0641\\u0639\\u0644\\u0629)\",\n\"Find (if searchreplace plugin activated)\": \"\\u0627\\u0644\\u0628\\u062d\\u062b (\\u0625\\u0630\\u0627 \\u0643\\u0627\\u0646\\u062a \\u0625\\u0636\\u0627\\u0641\\u0629 \\u0627\\u0644\\u0628\\u062d\\u062b \\u0645\\u0641\\u0639\\u0644\\u0629)\",\n\"Plugins installed ({0}):\": \"\\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u0627\\u062a \\u0627\\u0644\\u0645\\u062b\\u0628\\u062a\\u0629 ({0}):\",\n\"Premium plugins:\": \"\\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u0627\\u062a \\u0627\\u0644\\u0645\\u0645\\u064a\\u0632\\u0629:\",\n\"Learn more...\": \"\\u0645\\u0639\\u0631\\u0641\\u0629 \\u0627\\u0644\\u0645\\u0632\\u064a\\u062f...\",\n\"You are using {0}\": \"\\u0623\\u0646\\u062a \\u062a\\u0633\\u062a\\u062e\\u062f\\u0645 {0}\",\n\"Plugins\": \"\\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u0627\\u062a\",\n\"Handy Shortcuts\": \"\\u0627\\u062e\\u062a\\u0635\\u0627\\u0631\\u0627\\u062a \\u0645\\u0633\\u0627\\u0639\\u0650\\u062f\\u0629\",\n\"Horizontal line\": \"\\u062e\\u0637 \\u0623\\u0641\\u0642\\u064a\",\n\"Insert\\/edit image\": \"\\u0625\\u062f\\u0631\\u0627\\u062c\\/\\u062a\\u062d\\u0631\\u064a\\u0631 \\u0635\\u0648\\u0631\\u0629\",\n\"Image description\": \"\\u0648\\u0635\\u0641 \\u0627\\u0644\\u0635\\u0648\\u0631\\u0629\",\n\"Source\": \"\\u0627\\u0644\\u0645\\u0635\\u062f\\u0631\",\n\"Dimensions\": \"\\u0627\\u0644\\u0623\\u0628\\u0639\\u0627\\u062f\",\n\"Constrain proportions\": \"\\u0627\\u0644\\u062a\\u0646\\u0627\\u0633\\u0628\",\n\"General\": \"\\u0639\\u0627\\u0645\",\n\"Advanced\": \"\\u062e\\u0635\\u0627\\u0626\\u0635 \\u0645\\u062a\\u0642\\u062f\\u0645\\u0647\",\n\"Style\": \"\\u0627\\u0644\\u0646\\u0645\\u0637 \\/ \\u0627\\u0644\\u0634\\u0643\\u0644\",\n\"Vertical space\": \"\\u0645\\u0633\\u0627\\u0641\\u0629 \\u0639\\u0645\\u0648\\u062f\\u064a\\u0629\",\n\"Horizontal space\": \"\\u0645\\u0633\\u0627\\u0641\\u0629 \\u0623\\u0641\\u0642\\u064a\\u0629\",\n\"Border\": \"\\u062d\\u062f\\u0648\\u062f\",\n\"Insert image\": \"\\u0625\\u062f\\u0631\\u0627\\u062c \\u0635\\u0648\\u0631\\u0629\",\n\"Image...\": \"\\u0635\\u0648\\u0631\\u0629...\",\n\"Image list\": \"\\u0642\\u0627\\u0626\\u0645\\u0629 \\u0627\\u0644\\u0635\\u0648\\u0631\",\n\"Rotate counterclockwise\": \"\\u062a\\u062f\\u0648\\u064a\\u0631 \\u0639\\u0643\\u0633 \\u0627\\u062a\\u062c\\u0627\\u0647 \\u0639\\u0642\\u0627\\u0631\\u0628 \\u0627\\u0644\\u0633\\u0627\\u0639\\u0629\",\n\"Rotate clockwise\": \"\\u062a\\u062f\\u0648\\u064a\\u0631 \\u0641\\u064a \\u0627\\u062a\\u062c\\u0627\\u0647 \\u0639\\u0642\\u0627\\u0631\\u0628 \\u0627\\u0644\\u0633\\u0627\\u0639\\u0629\",\n\"Flip vertically\": \"\\u0627\\u0646\\u0639\\u0643\\u0627\\u0633 \\u0639\\u0627\\u0645\\u0648\\u062f\\u064a\",\n\"Flip horizontally\": \"\\u0627\\u0646\\u0639\\u0643\\u0627\\u0633 \\u0623\\u0641\\u0642\\u064a\",\n\"Edit image\": \"\\u062a\\u062d\\u0631\\u064a\\u0631 \\u0627\\u0644\\u0635\\u0648\\u0631\\u0629\",\n\"Image options\": \"\\u0627\\u0639\\u062f\\u0627\\u062f\\u0627\\u062a \\u0627\\u0644\\u0635\\u0648\\u0631\\u0629\",\n\"Zoom in\": \"\\u062a\\u0643\\u0628\\u064a\\u0631\",\n\"Zoom out\": \"\\u062a\\u0635\\u063a\\u064a\\u0631\",\n\"Crop\": \"\\u0642\\u0635\",\n\"Resize\": \"\\u062a\\u063a\\u064a\\u064a\\u0631 \\u062d\\u062c\\u0645\",\n\"Orientation\": \"\\u0627\\u0644\\u0645\\u062d\\u0627\\u0630\\u0627\\u0629\",\n\"Brightness\": \"\\u0627\\u0644\\u0625\\u0636\\u0627\\u0621\\u0629\",\n\"Sharpen\": \"\\u062d\\u0627\\u062f\\u0629\",\n\"Contrast\": \"\\u0627\\u0644\\u062a\\u0628\\u0627\\u064a\\u0646\",\n\"Color levels\": \"\\u0645\\u0633\\u062a\\u0648\\u0649 \\u0627\\u0644\\u0644\\u0648\\u0646\",\n\"Gamma\": \"\\u063a\\u0627\\u0645\\u0627\",\n\"Invert\": \"\\u0639\\u0643\\u0633\",\n\"Apply\": \"\\u062a\\u0637\\u0628\\u064a\\u0642\",\n\"Back\": \"\\u0644\\u0644\\u062e\\u0644\\u0641\",\n\"Insert date\\/time\": \"\\u0625\\u062f\\u0631\\u0627\\u062c \\u062a\\u0627\\u0631\\u064a\\u062e\\/\\u0648\\u0642\\u062a\",\n\"Date\\/time\": \"\\u0627\\u0644\\u062a\\u0627\\u0631\\u064a\\u062e\\/\\u0627\\u0644\\u0648\\u0642\\u062a\",\n\"Insert\\/Edit Link\": \"\\u0625\\u062f\\u0631\\u0627\\u062c\\/\\u062a\\u062d\\u0631\\u064a\\u0631 \\u0627\\u0631\\u062a\\u0628\\u0627\\u0637\",\n\"Insert\\/edit link\": \"\\u0625\\u062f\\u0631\\u0627\\u062c\\/\\u062a\\u062d\\u0631\\u064a\\u0631 \\u0631\\u0627\\u0628\\u0637\",\n\"Text to display\": \"\\u0627\\u0644\\u0646\\u0635 \\u0627\\u0644\\u0645\\u0637\\u0644\\u0648\\u0628 \\u0639\\u0631\\u0636\\u0647\",\n\"Url\": \"\\u0627\\u0644\\u0639\\u0646\\u0648\\u0627\\u0646\",\n\"Open link in...\": \"\\u062c\\u0627\\u0631\\u064d \\u0641\\u062a\\u062d \\u0627\\u0644\\u0627\\u0631\\u062a\\u0628\\u0627\\u0637.\",\n\"Current window\": \"\\u0627\\u0644\\u0646\\u0627\\u0641\\u0630\\u0629 \\u0627\\u0644\\u062d\\u0627\\u0644\\u064a\\u0629\",\n\"None\": \"\\u0628\\u0644\\u0627\",\n\"New window\": \"\\u0646\\u0627\\u0641\\u0630\\u0629 \\u062c\\u062f\\u064a\\u062f\\u0629\",\n\"Remove link\": \"\\u062d\\u0630\\u0641 \\u0627\\u0644\\u0631\\u0627\\u0628\\u0637\",\n\"Anchors\": \"\\u0627\\u0644\\u0645\\u0631\\u0633\\u0627\\u0629\",\n\"Link...\": \"\\u0627\\u0631\\u062a\\u0628\\u0627\\u0637...\",\n\"Paste or type a link\": \"\\u0623\\u062f\\u062e\\u0644 \\u0623\\u0648 \\u0627\\u0643\\u062a\\u0628 \\u0627\\u0644\\u0631\\u0627\\u0628\\u0637\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u0627\\u0644\\u0631\\u0627\\u0628\\u0637 \\u0627\\u0644\\u0630\\u064a \\u0642\\u0645\\u062a \\u0628\\u0625\\u062f\\u0631\\u0627\\u062c\\u0647 \\u064a\\u0634\\u0627\\u0628\\u0647 \\u0627\\u0644\\u0628\\u0631\\u064a\\u062f \\u0627\\u0644\\u0627\\u0644\\u0643\\u062a\\u0631\\u0648\\u0646\\u064a. \\u0647\\u0644 \\u062a\\u0631\\u064a\\u062f \\u0627\\u0646 \\u062a\\u0636\\u064a\\u0641 \\u0627\\u0644\\u0644\\u0627\\u062d\\u0642\\u0629 mailto: \\u0645\\u0639\\u062a\\u0628\\u0631\\u0627\\u064b \\u0647\\u0630\\u0627 \\u0627\\u0644\\u0631\\u0627\\u0628\\u0637 \\u0628\\u0631\\u064a\\u062f\\u0627 \\u0627\\u0644\\u0643\\u062a\\u0631\\u0648\\u0646\\u064a\\u0627\\u064b\\u061f\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u0646\\u062a\\u0648\\u0642\\u0639 \\u0627\\u0646\\u0643 \\u0642\\u0645\\u062a \\u0628\\u0625\\u062f\\u0631\\u0627\\u062c \\u0631\\u0627\\u0628\\u0637 \\u0644\\u0645\\u0648\\u0642\\u0639 \\u062e\\u0627\\u0631\\u062c\\u064a. \\u0647\\u0644 \\u062a\\u0631\\u064a\\u062f \\u0627\\u0646 \\u0646\\u0636\\u064a\\u0641 \\u0627\\u0644\\u0644\\u0627\\u062d\\u0642\\u0629 http:\\/\\/ \\u0644\\u0644\\u0631\\u0627\\u0628\\u0637 \\u0627\\u0644\\u0630\\u064a \\u0627\\u062f\\u062e\\u0644\\u062a\\u0647\\u061f\",\n\"Link list\": \"\\u0642\\u0627\\u0626\\u0645\\u0629 \\u0627\\u0644\\u0631\\u0648\\u0627\\u0628\\u0637\",\n\"Insert video\": \"\\u0625\\u062f\\u0631\\u0627\\u062c \\u0641\\u064a\\u062f\\u064a\\u0648\",\n\"Insert\\/edit video\": \"\\u0625\\u062f\\u0631\\u0627\\u062c\\/\\u062a\\u062d\\u0631\\u064a\\u0631 \\u0641\\u064a\\u062f\\u064a\\u0648\",\n\"Insert\\/edit media\": \"\\u0625\\u062f\\u0631\\u0627\\u062c\\/\\u062a\\u062d\\u0631\\u064a\\u0631 \\u0627\\u0644\\u0648\\u0633\\u0627\\u0626\\u0637 \\u0627\\u0644\\u0645\\u062a\\u0639\\u062f\\u062f\\u0629\",\n\"Alternative source\": \"\\u0645\\u0635\\u062f\\u0631 \\u0628\\u062f\\u064a\\u0644\",\n\"Alternative source URL\": \"\\u0639\\u0646\\u0648\\u0627\\u0646 URL \\u0644\\u0644\\u0645\\u0635\\u062f\\u0631 \\u0627\\u0644\\u0628\\u062f\\u064a\\u0644\",\n\"Media poster (Image URL)\": \"\\u0645\\u0644\\u0635\\u0642 \\u0627\\u0644\\u0648\\u0633\\u0627\\u0626\\u0637 (\\u0639\\u0646\\u0648\\u0627\\u0646 URL \\u0644\\u0644\\u0635\\u0648\\u0631\\u0629)\",\n\"Paste your embed code below:\": \"\\u0644\\u0635\\u0642 \\u0643\\u0648\\u062f \\u0627\\u0644\\u062a\\u0636\\u0645\\u064a\\u0646 \\u0647\\u0646\\u0627:\",\n\"Embed\": \"\\u062a\\u0636\\u0645\\u064a\\u0646\",\n\"Media...\": \"\\u0627\\u0644\\u0648\\u0633\\u0627\\u0626\\u0637...\",\n\"Nonbreaking space\": \"\\u0645\\u0633\\u0627\\u0641\\u0629 \\u063a\\u064a\\u0631 \\u0645\\u0646\\u0642\\u0633\\u0645\\u0629\",\n\"Page break\": \"\\u0641\\u0627\\u0635\\u0644 \\u0644\\u0644\\u0635\\u0641\\u062d\\u0629\",\n\"Paste as text\": \"\\u0644\\u0635\\u0642 \\u0643\\u0646\\u0635\",\n\"Preview\": \"\\u0645\\u0639\\u0627\\u064a\\u0646\\u0629\",\n\"Print...\": \"\\u0637\\u0628\\u0627\\u0639\\u0629...\",\n\"Save\": \"\\u062d\\u0641\\u0638\",\n\"Find\": \"\\u0628\\u062d\\u062b\",\n\"Replace with\": \"\\u0627\\u0633\\u062a\\u0628\\u062f\\u0627\\u0644 \\u0628\\u0640\",\n\"Replace\": \"\\u0627\\u0633\\u062a\\u0628\\u062f\\u0627\\u0644\",\n\"Replace all\": \"\\u0627\\u0633\\u062a\\u0628\\u062f\\u0627\\u0644 \\u0627\\u0644\\u0643\\u0644\",\n\"Previous\": \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n\"Next\": \"\\u0627\\u0644\\u062a\\u0627\\u0644\\u064a\",\n\"Find and replace...\": \"\\u062c\\u0627\\u0631\\u064d \\u0627\\u0644\\u0628\\u062d\\u062b \\u0648\\u0627\\u0644\\u0627\\u0633\\u062a\\u0628\\u062f\\u0627\\u0644...\",\n\"Could not find the specified string.\": \"\\u062a\\u0639\\u0630\\u0631 \\u0627\\u0644\\u0639\\u062b\\u0648\\u0631 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0643\\u0644\\u0645\\u0629 \\u0627\\u0644\\u0645\\u062d\\u062f\\u062f\\u0629\",\n\"Match case\": \"\\u0645\\u0637\\u0627\\u0628\\u0642\\u0629 \\u062d\\u0627\\u0644\\u0629 \\u0627\\u0644\\u0623\\u062d\\u0631\\u0641\",\n\"Find whole words only\": \"\\u0628\\u062d\\u062b \\u0643\\u0644\\u0645\\u0627\\u062a \\u0628\\u0623\\u0643\\u0645\\u0644\\u0647\\u0627 \\u0641\\u0642\\u0637\",\n\"Spell check\": \"\\u062a\\u062f\\u0642\\u064a\\u0642 \\u0625\\u0645\\u0644\\u0627\\u0626\\u064a\",\n\"Ignore\": \"\\u062a\\u062c\\u0627\\u0647\\u0644\",\n\"Ignore all\": \"\\u062a\\u062c\\u0627\\u0647\\u0644 \\u0627\\u0644\\u0643\\u0644\",\n\"Finish\": \"\\u0627\\u0646\\u062a\\u0647\\u064a\",\n\"Add to Dictionary\": \"\\u0627\\u0636\\u0641 \\u0627\\u0644\\u064a \\u0627\\u0644\\u0642\\u0627\\u0645\\u0648\\u0633\",\n\"Insert table\": \"\\u0625\\u062f\\u0631\\u0627\\u062c \\u062c\\u062f\\u0648\\u0644\",\n\"Table properties\": \"\\u062e\\u0635\\u0627\\u0626\\u0635 \\u0627\\u0644\\u062c\\u062f\\u0648\\u0644\",\n\"Delete table\": \"\\u062d\\u0630\\u0641 \\u062c\\u062f\\u0648\\u0644\",\n\"Cell\": \"\\u062e\\u0644\\u064a\\u0629\",\n\"Row\": \"\\u0635\\u0641\",\n\"Column\": \"\\u0639\\u0645\\u0648\\u062f\",\n\"Cell properties\": \"\\u062e\\u0635\\u0627\\u0626\\u0635 \\u0627\\u0644\\u062e\\u0644\\u064a\\u0629\",\n\"Merge cells\": \"\\u062f\\u0645\\u062c \\u062e\\u0644\\u0627\\u064a\\u0627\",\n\"Split cell\": \"\\u062a\\u0642\\u0633\\u064a\\u0645 \\u0627\\u0644\\u062e\\u0644\\u0627\\u064a\\u0627\",\n\"Insert row before\": \"\\u0625\\u062f\\u0631\\u0627\\u062c \\u0635\\u0641 \\u0644\\u0644\\u0623\\u0639\\u0644\\u0649\",\n\"Insert row after\": \"\\u0625\\u062f\\u0631\\u0627\\u062c \\u0635\\u0641 \\u0644\\u0644\\u0623\\u0633\\u0641\\u0644\",\n\"Delete row\": \"\\u062d\\u0630\\u0641 \\u0635\\u0641\",\n\"Row properties\": \"\\u062e\\u0635\\u0627\\u0626\\u0635 \\u0627\\u0644\\u0635\\u0641\",\n\"Cut row\": \"\\u0642\\u0635 \\u0627\\u0644\\u0635\\u0641\",\n\"Copy row\": \"\\u0646\\u0633\\u062e \\u0627\\u0644\\u0635\\u0641\",\n\"Paste row before\": \"\\u0644\\u0635\\u0642 \\u0627\\u0644\\u0635\\u0641 \\u0644\\u0644\\u0623\\u0639\\u0644\\u0649\",\n\"Paste row after\": \"\\u0644\\u0635\\u0642 \\u0627\\u0644\\u0635\\u0641 \\u0644\\u0644\\u0623\\u0633\\u0641\\u0644\",\n\"Insert column before\": \"\\u0625\\u062f\\u0631\\u0627\\u062c \\u0639\\u0645\\u0648\\u062f \\u0644\\u0644\\u064a\\u0633\\u0627\\u0631\",\n\"Insert column after\": \"\\u0625\\u062f\\u0631\\u0627\\u062c \\u0639\\u0645\\u0648\\u062f \\u0644\\u0644\\u064a\\u0645\\u064a\\u0646\",\n\"Delete column\": \"\\u062d\\u0630\\u0641 \\u0639\\u0645\\u0648\\u062f\",\n\"Cols\": \"\\u0639\\u062f\\u062f \\u0627\\u0644\\u0623\\u0639\\u0645\\u062f\\u0629\",\n\"Rows\": \"\\u0639\\u062f\\u062f \\u0627\\u0644\\u0635\\u0641\\u0648\\u0641\",\n\"Width\": \"\\u0639\\u0631\\u0636\",\n\"Height\": \"\\u0627\\u0631\\u062a\\u0641\\u0627\\u0639\",\n\"Cell spacing\": \"\\u0627\\u0644\\u0645\\u0633\\u0627\\u0641\\u0629 \\u0628\\u064a\\u0646 \\u0627\\u0644\\u062e\\u0644\\u0627\\u064a\\u0627\",\n\"Cell padding\": \"\\u062a\\u0628\\u0627\\u0639\\u062f \\u0627\\u0644\\u062e\\u0644\\u064a\\u0629\",\n\"Show caption\": \"\\u0625\\u0638\\u0647\\u0627\\u0631 \\u0627\\u0644\\u062a\\u0633\\u0645\\u064a\\u0629 \\u0627\\u0644\\u062a\\u0648\\u0636\\u064a\\u062d\\u064a\\u0629\",\n\"Left\": \"\\u064a\\u0633\\u0627\\u0631\",\n\"Center\": \"\\u062a\\u0648\\u0633\\u064a\\u0637\",\n\"Right\": \"\\u064a\\u0645\\u064a\\u0646\",\n\"Cell type\": \"\\u0646\\u0648\\u0639 \\u0627\\u0644\\u062e\\u0644\\u064a\\u0629\",\n\"Scope\": \"\\u0627\\u0644\\u0645\\u062c\\u0627\\u0644\",\n\"Alignment\": \"\\u0645\\u062d\\u0627\\u0630\\u0627\\u0629\",\n\"H Align\": \"\\u0645\\u062d\\u0627\\u0630\\u0627\\u0629 \\u0623\\u0641\\u0642\\u064a\\u0629\",\n\"V Align\": \"\\u0645\\u062d\\u0627\\u0630\\u0627\\u0629 \\u0631\\u0623\\u0633\\u064a\\u0629\",\n\"Top\": \"\\u0623\\u0639\\u0644\\u064a\",\n\"Middle\": \"\\u0627\\u0644\\u0648\\u0633\\u0637\",\n\"Bottom\": \"\\u0627\\u0644\\u0623\\u0633\\u0641\\u0644\",\n\"Header cell\": \"\\u0631\\u0623\\u0633 \\u0627\\u0644\\u062e\\u0644\\u064a\\u0629\",\n\"Row group\": \"\\u0645\\u062c\\u0645\\u0648\\u0639\\u0629 \\u0635\\u0641\",\n\"Column group\": \"\\u0645\\u062c\\u0645\\u0648\\u0639\\u0629 \\u0639\\u0645\\u0648\\u062f\",\n\"Row type\": \"\\u0646\\u0648\\u0639 \\u0627\\u0644\\u0635\\u0641\",\n\"Header\": \"\\u0627\\u0644\\u0631\\u0623\\u0633\",\n\"Body\": \"\\u0647\\u064a\\u0643\\u0644\",\n\"Footer\": \"\\u062a\\u0630\\u064a\\u064a\\u0644\",\n\"Border color\": \"\\u0644\\u0648\\u0646 \\u0627\\u0644\\u0625\\u0637\\u0627\\u0631\",\n\"Insert template...\": \"\\u062c\\u0627\\u0631\\u064d \\u0625\\u062f\\u0631\\u0627\\u062c \\u0642\\u0627\\u0644\\u0628...\",\n\"Templates\": \"\\u0642\\u0648\\u0627\\u0644\\u0628\",\n\"Template\": \"\\u0627\\u0644\\u0642\\u0627\\u0644\\u0628\",\n\"Text color\": \"\\u0644\\u0648\\u0646 \\u0627\\u0644\\u0646\\u0635\",\n\"Background color\": \"\\u0644\\u0648\\u0646 \\u0627\\u0644\\u062e\\u0644\\u0641\\u064a\\u0629\",\n\"Custom...\": \"\\u062a\\u062e\\u0635\\u064a\\u0635 ...\",\n\"Custom color\": \"\\u0644\\u0648\\u0646 \\u0645\\u062e\\u0635\\u0635\",\n\"No color\": \"\\u0628\\u062f\\u0648\\u0646 \\u0644\\u0648\\u0646\",\n\"Remove color\": \"\\u0625\\u0632\\u0627\\u0644\\u0629 \\u0644\\u0648\\u0646\",\n\"Table of Contents\": \"\\u062c\\u062f\\u0648\\u0644 \\u0627\\u0644\\u0645\\u062d\\u062a\\u0648\\u064a\\u0627\\u062a\",\n\"Show blocks\": \"\\u0645\\u0634\\u0627\\u0647\\u062f\\u0629 \\u0627\\u0644\\u0643\\u062a\\u0644\",\n\"Show invisible characters\": \"\\u0623\\u0638\\u0647\\u0631 \\u0627\\u0644\\u0623\\u062d\\u0631\\u0641 \\u0627\\u0644\\u063a\\u064a\\u0631 \\u0645\\u0631\\u0626\\u064a\\u0629\",\n\"Word count\": \"\\u0639\\u062f\\u062f \\u0627\\u0644\\u0643\\u0644\\u0645\\u0627\\u062a\",\n\"Count\": \"\\u0627\\u0644\\u0639\\u062f\\u062f\",\n\"Document\": \"\\u0627\\u0644\\u0645\\u0633\\u062a\\u0646\\u062f\",\n\"Selection\": \"\\u0627\\u0644\\u062a\\u062d\\u062f\\u064a\\u062f\",\n\"Words\": \"\\u0627\\u0644\\u0643\\u0644\\u0645\\u0627\\u062a\",\n\"Words: {0}\": \"\\u0627\\u0644\\u0643\\u0644\\u0645\\u0627\\u062a:{0}\",\n\"{0} words\": \"{0} \\u0643\\u0644\\u0645\\u0627\\u062a\",\n\"File\": \"\\u0645\\u0644\\u0641\",\n\"Edit\": \"\\u062a\\u062d\\u0631\\u064a\\u0631\",\n\"Insert\": \"\\u0625\\u062f\\u0631\\u0627\\u062c\",\n\"View\": \"\\u0639\\u0631\\u0636\",\n\"Format\": \"\\u062a\\u0646\\u0633\\u064a\\u0642\",\n\"Table\": \"\\u062c\\u062f\\u0648\\u0644\",\n\"Tools\": \"\\u0623\\u062f\\u0627\\u0648\\u0627\\u062a\",\n\"Powered by {0}\": \"\\u0645\\u062f\\u0639\\u0648\\u0645 \\u0645\\u0646 {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u0645\\u0646\\u0637\\u0642\\u0629 \\u0646\\u0635 \\u0645\\u0646\\u0633\\u0642. \\u0627\\u0636\\u063a\\u0637 ALT-F9 \\u0644\\u0644\\u0642\\u0627\\u0626\\u0645\\u0629. \\u0627\\u0636\\u063a\\u0637 ALT-F10 \\u0644\\u0634\\u0631\\u064a\\u0637 \\u0627\\u0644\\u0623\\u062f\\u0648\\u0627\\u062a. \\u0627\\u0636\\u063a\\u0637 ALT-0 \\u0644\\u0644\\u062d\\u0635\\u0648\\u0644 \\u0639\\u0644\\u0649 \\u0645\\u0633\\u0627\\u0639\\u062f\\u0629\",\n\"Image title\": \"\\u0639\\u0646\\u0648\\u0627\\u0646 \\u0627\\u0644\\u0635\\u0648\\u0631\\u0629\",\n\"Border width\": \"\\u0639\\u0631\\u0636 \\u0627\\u0644\\u062d\\u062f\",\n\"Border style\": \"\\u0646\\u0645\\u0637 \\u0627\\u0644\\u062d\\u062f\",\n\"Error\": \"\\u062e\\u0637\\u0623\",\n\"Warn\": \"\\u062a\\u062d\\u0630\\u064a\\u0631\",\n\"Valid\": \"\\u0635\\u062d\\u064a\\u062d\",\n\"To open the popup, press Shift+Enter\": \"\\u0644\\u0641\\u062a\\u062d \\u0627\\u0644\\u0642\\u0627\\u0626\\u0645\\u0629 \\u0627\\u0644\\u0645\\u0646\\u0628\\u062b\\u0642\\u0629\\u060c \\u0627\\u0636\\u063a\\u0637 \\u0639\\u0644\\u0649 Shift\\u200f+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u0645\\u0646\\u0637\\u0642\\u0629 \\u0646\\u0635 \\u0645\\u0646\\u0633\\u0642. \\u0627\\u0636\\u063a\\u0637 ALT-0 \\u0644\\u0644\\u062d\\u0635\\u0648\\u0644 \\u0639\\u0644\\u0649 \\u0627\\u0644\\u0645\\u0633\\u0627\\u0639\\u062f\\u0629.\",\n\"System Font\": \"\\u062e\\u0637 \\u0627\\u0644\\u0646\\u0638\\u0627\\u0645\",\n\"Failed to upload image: {0}\": \"\\u0641\\u0634\\u0644 \\u062a\\u062d\\u0645\\u064a\\u0644 \\u0627\\u0644\\u0635\\u0648\\u0631\\u0629: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u0641\\u0634\\u0644 \\u062a\\u062d\\u0645\\u064a\\u0644 \\u0627\\u0644\\u0645\\u0643\\u0648\\u0651\\u0650\\u0646 \\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u064a: {0} \\u0645\\u0646 url \\u200f{1}\",\n\"Failed to load plugin url: {0}\": \"\\u0641\\u0634\\u0644 \\u062a\\u062d\\u0645\\u064a\\u0644 url \\u0644\\u0644\\u0645\\u0643\\u0648\\u0651\\u0650\\u0646 \\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u064a: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u0641\\u0634\\u0644\\u062a \\u062a\\u0647\\u064a\\u0626\\u0629 \\u0627\\u0644\\u0645\\u0643\\u0648\\u0651\\u0650\\u0646 \\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u064a: {0}\",\n\"example\": \"\\u0645\\u062b\\u0627\\u0644\",\n\"Search\": \"\\u0628\\u062d\\u062b\",\n\"All\": \"\\u0627\\u0644\\u0643\\u0644\",\n\"Currency\": \"\\u0627\\u0644\\u0639\\u0645\\u0644\\u0629\",\n\"Text\": \"\\u0627\\u0644\\u0646\\u0635\",\n\"Quotations\": \"\\u0639\\u0631\\u0648\\u0636 \\u0627\\u0644\\u0623\\u0633\\u0639\\u0627\\u0631\",\n\"Mathematical\": \"\\u0631\\u064a\\u0627\\u0636\\u064a\\u0629\",\n\"Extended Latin\": \"\\u0627\\u0644\\u0644\\u0627\\u062a\\u064a\\u0646\\u064a\\u0629 \\u0627\\u0644\\u0645\\u0648\\u0633\\u0639\\u0629\",\n\"Symbols\": \"\\u0627\\u0644\\u0631\\u0645\\u0648\\u0632\",\n\"Arrows\": \"\\u0627\\u0644\\u0623\\u0633\\u0647\\u0645\",\n\"User Defined\": \"\\u0645\\u0639\\u0631\\u0651\\u064e\\u0641 \\u0645\\u0646 \\u0642\\u0628\\u0644 \\u0627\\u0644\\u0645\\u0633\\u062a\\u062e\\u062f\\u0645\",\n\"dollar sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u062f\\u0648\\u0644\\u0627\\u0631\",\n\"currency sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0639\\u0645\\u0644\\u0629\",\n\"euro-currency sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0639\\u0645\\u0644\\u0629 \\u0627\\u0644\\u064a\\u0648\\u0631\\u0648\",\n\"colon sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0646\\u0642\\u0637\\u062a\\u064a\\u0646\",\n\"cruzeiro sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0643\\u0631\\u0648\\u0632\\u064a\\u0631\\u0648\",\n\"french franc sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0641\\u0631\\u0646\\u0643 \\u0627\\u0644\\u0641\\u0631\\u0646\\u0633\\u064a\",\n\"lira sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0644\\u064a\\u0631\\u0629\",\n\"mill sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0645\\u0644\",\n\"naira sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0646\\u064a\\u0631\\u0629\",\n\"peseta sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0628\\u064a\\u0632\\u064a\\u062a\\u0627\",\n\"rupee sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0631\\u0648\\u0628\\u064a\\u0629\",\n\"won sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0648\\u0646\",\n\"new sheqel sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0634\\u064a\\u0643\\u0644 \\u0627\\u0644\\u062c\\u062f\\u064a\\u062f\",\n\"dong sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u062f\\u0648\\u0646\\u062c\",\n\"kip sign\": \"\\u0639\\u0645\\u0644\\u0629 \\u0627\\u0644\\u0643\\u064a\\u0628\",\n\"tugrik sign\": \"\\u0639\\u0645\\u0644\\u0629 \\u0627\\u0644\\u062a\\u0648\\u063a\\u0631\\u064a\\u0643\",\n\"drachma sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u062f\\u0631\\u0627\\u062e\\u0645\\u0627\",\n\"german penny symbol\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0628\\u0646\\u0633 \\u0627\\u0644\\u0623\\u0644\\u0645\\u0627\\u0646\\u064a\",\n\"peso sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0628\\u064a\\u0632\\u0648\",\n\"guarani sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u062c\\u0648\\u0627\\u0631\\u0627\\u0646\\u064a\",\n\"austral sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0623\\u0648\\u0633\\u062a\\u0631\\u0627\\u0644\",\n\"hryvnia sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0647\\u0631\\u064a\\u0641\\u0646\\u064a\\u0627\",\n\"cedi sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0633\\u064a\\u062f\\u064a\",\n\"livre tournois sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0644\\u064a\\u0641\\u0631 \\u062a\\u0648\\u0631\\u0646\\u0648\\u064a\\u0632\",\n\"spesmilo sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0627\\u0633\\u0628\\u064a\\u0632\\u0645\\u0627\\u064a\\u0644\\u0648\",\n\"tenge sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u062a\\u064a\\u0646\\u062c\",\n\"indian rupee sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0631\\u0648\\u0628\\u064a\\u0629 \\u0627\\u0644\\u0647\\u0646\\u062f\\u064a\\u0629\",\n\"turkish lira sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0644\\u064a\\u0631\\u0629 \\u0627\\u0644\\u062a\\u0631\\u0643\\u064a\\u0629\",\n\"nordic mark sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0646\\u0648\\u0631\\u062f\\u0643\",\n\"manat sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0645\\u0627\\u0646\\u0627\\u062a\",\n\"ruble sign\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0631\\u0648\\u0628\\u0644\",\n\"yen character\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u064a\\u0646\",\n\"yuan character\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u064a\\u0648\\u0627\\u0646\",\n\"yuan character, in hong kong and taiwan\": \"\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u064a\\u0648\\u0627\\u0646 \\u0641\\u064a \\u0647\\u0648\\u0646\\u062c \\u0643\\u0648\\u0646\\u062c \\u0648\\u062a\\u0627\\u064a\\u0648\\u0627\\u0646\",\n\"yen\\/yuan character variant one\": \"\\u0627\\u0644\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u0628\\u062f\\u064a\\u0644\\u0629 \\u0644\\u0639\\u0644\\u0627\\u0645\\u0629 \\u0627\\u0644\\u064a\\u0646\\/\\u0627\\u0644\\u064a\\u0648\\u0627\\u0646\",\n\"Loading emoticons...\": \"\\u062c\\u0627\\u0631\\u064d \\u062a\\u062d\\u0645\\u064a\\u0644 \\u0631\\u0645\\u0648\\u0632 \\u0627\\u0644\\u0645\\u0634\\u0627\\u0639\\u0631...\",\n\"Could not load emoticons\": \"\\u062c\\u0627\\u0631\\u064d \\u062a\\u062d\\u0645\\u064a\\u0644 \\u0631\\u0645\\u0648\\u0632 \\u0627\\u0644\\u0645\\u0634\\u0627\\u0639\\u0631\",\n\"People\": \"\\u0623\\u0634\\u062e\\u0627\\u0635\",\n\"Animals and Nature\": \"\\u0627\\u0644\\u062d\\u064a\\u0648\\u0627\\u0646\\u0627\\u062a \\u0648\\u0627\\u0644\\u0637\\u0628\\u064a\\u0639\\u0629\",\n\"Food and Drink\": \"\\u0627\\u0644\\u0623\\u0637\\u0639\\u0645\\u0629 \\u0648\\u0627\\u0644\\u0645\\u0634\\u0631\\u0648\\u0628\\u0627\\u062a\",\n\"Activity\": \"\\u0627\\u0644\\u0646\\u0634\\u0627\\u0637\",\n\"Travel and Places\": \"\\u0627\\u0644\\u0633\\u0641\\u0631 \\u0648\\u0627\\u0644\\u0623\\u0645\\u0627\\u0643\\u0646 \\u0633\\u064a\\u0627\\u062d\\u064a\\u0629\",\n\"Objects\": \"\\u0643\\u0627\\u0626\\u0646\\u0627\\u062a\",\n\"Flags\": \"\\u0627\\u0644\\u0639\\u0644\\u0627\\u0645\\u0627\\u062a\",\n\"Characters\": \"\\u0627\\u0644\\u0623\\u062d\\u0631\\u0641\",\n\"Characters (no spaces)\": \"\\u0627\\u0644\\u0623\\u062d\\u0631\\u0641 (\\u062f\\u0648\\u0646 \\u0627\\u0644\\u0645\\u0633\\u0627\\u0641\\u0627\\u062a)\",\n\"{0} characters\": \"{0} \\u0631\\u0645\\u0648\\u0632\",\n\"Error: Form submit field collision.\": \"\\u062e\\u0637\\u0623: \\u062a\\u0636\\u0627\\u0631\\u0628 \\u0641\\u064a \\u062d\\u0642\\u0644 \\u0625\\u0631\\u0633\\u0627\\u0644 \\u0627\\u0644\\u0646\\u0645\\u0648\\u0630\\u062c.\",\n\"Error: No form element found.\": \"\\u0627\\u0644\\u062e\\u0637\\u0623: \\u0644\\u0645 \\u064a\\u062a\\u0645 \\u0627\\u0644\\u0639\\u062b\\u0648\\u0631 \\u0639\\u0644\\u0649 \\u0639\\u0646\\u0635\\u0631 \\u0646\\u0645\\u0648\\u0630\\u062c.\",\n\"Update\": \"\\u062a\\u062d\\u062f\\u064a\\u062b\",\n\"Color swatch\": \"\\u0639\\u064a\\u0646\\u0627\\u062a \\u0627\\u0644\\u0623\\u0644\\u0648\\u0627\\u0646\",\n\"Turquoise\": \"\\u0641\\u064a\\u0631\\u0648\\u0632\\u064a\",\n\"Green\": \"\\u0623\\u062e\\u0636\\u0631\",\n\"Blue\": \"\\u0623\\u0632\\u0631\\u0642\",\n\"Purple\": \"\\u0628\\u0646\\u0641\\u0633\\u062c\\u064a\",\n\"Navy Blue\": \"\\u0623\\u0632\\u0631\\u0642 \\u0646\\u064a\\u0644\\u064a\",\n\"Dark Turquoise\": \"\\u0641\\u064a\\u0631\\u0648\\u0632\\u064a \\u062f\\u0627\\u0643\\u0646\",\n\"Dark Green\": \"\\u0623\\u062e\\u0636\\u0631 \\u062f\\u0627\\u0643\\u0646\",\n\"Medium Blue\": \"\\u0623\\u0632\\u0631\\u0642 \\u0645\\u062a\\u0648\\u0633\\u0637\",\n\"Medium Purple\": \"\\u0628\\u0646\\u0641\\u0633\\u062c\\u064a \\u0645\\u062a\\u0648\\u0633\\u0637\",\n\"Midnight Blue\": \"\\u0623\\u0632\\u0631\\u0642 \\u062f\\u0627\\u0643\\u0646 \\u062c\\u062f\\u0627\\u064b\",\n\"Yellow\": \"\\u0623\\u0635\\u0641\\u0631\",\n\"Orange\": \"\\u0628\\u0631\\u062a\\u0642\\u0627\\u0644\\u064a\",\n\"Red\": \"\\u0623\\u062d\\u0645\\u0631\",\n\"Light Gray\": \"\\u0631\\u0645\\u0627\\u062f\\u064a \\u0641\\u0627\\u062a\\u062d\",\n\"Gray\": \"\\u0631\\u0645\\u0627\\u062f\\u064a\",\n\"Dark Yellow\": \"\\u0623\\u0635\\u0641\\u0631 \\u062f\\u0627\\u0643\\u0646\",\n\"Dark Orange\": \"\\u0628\\u0631\\u062a\\u0642\\u0627\\u0644\\u064a \\u062f\\u0627\\u0643\\u0646\",\n\"Dark Red\": \"\\u0623\\u062d\\u0645\\u0631 \\u062f\\u0627\\u0643\\u0646\",\n\"Medium Gray\": \"\\u0631\\u0645\\u0627\\u062f\\u064a \\u0645\\u062a\\u0648\\u0633\\u0637\",\n\"Dark Gray\": \"\\u0631\\u0645\\u0627\\u062f\\u064a \\u062f\\u0627\\u0643\\u0646\",\n\"Light Green\": \"\\u0623\\u062e\\u0636\\u0631 \\u0641\\u0627\\u062a\\u062d\",\n\"Light Yellow\": \"\\u0623\\u0635\\u0641\\u0631 \\u0641\\u0627\\u062a\\u062d\",\n\"Light Red\": \"\\u0623\\u062d\\u0645\\u0631 \\u0641\\u0627\\u062a\\u062d\",\n\"Light Purple\": \"\\u0628\\u0646\\u0641\\u0633\\u062c\\u064a \\u0641\\u0627\\u062a\\u062d\",\n\"Light Blue\": \"\\u0623\\u0632\\u0631\\u0642 \\u0641\\u0627\\u062a\\u062d\",\n\"Dark Purple\": \"\\u0623\\u0631\\u062c\\u0648\\u0627\\u0646\\u064a \\u062f\\u0627\\u0643\\u0646\",\n\"Dark Blue\": \"\\u0623\\u0632\\u0631\\u0642 \\u062f\\u0627\\u0643\\u0646\",\n\"Black\": \"\\u0623\\u0633\\u0648\\u062f\",\n\"White\": \"\\u0623\\u0628\\u064a\\u0636\",\n\"Switch to or from fullscreen mode\": \"\\u0627\\u0644\\u062a\\u0628\\u062f\\u064a\\u0644 \\u0625\\u0644\\u0649 \\u0623\\u0648 \\u0645\\u0646 \\u0648\\u0636\\u0639 \\u0645\\u0644\\u0621 \\u0627\\u0644\\u0634\\u0627\\u0634\\u0629\",\n\"Open help dialog\": \"\\u0627\\u0641\\u062a\\u062d \\u062d\\u0648\\u0627\\u0631 \\u0627\\u0644\\u062a\\u0639\\u0644\\u064a\\u0645\\u0627\\u062a\",\n\"history\": \"\\u0627\\u0644\\u0645\\u062d\\u0641\\u0648\\u0638\\u0627\\u062a\",\n\"styles\": \"\\u0627\\u0644\\u0623\\u0646\\u0645\\u0627\\u0637\",\n\"formatting\": \"\\u062a\\u0646\\u0633\\u064a\\u0642\",\n\"alignment\": \"\\u0645\\u062d\\u0627\\u0630\\u0627\\u0629\",\n\"indentation\": \"\\u0645\\u0633\\u0627\\u0641\\u0629 \\u0628\\u0627\\u062f\\u0626\\u0629\",\n\"permanent pen\": \"\\u0642\\u0644\\u0645 \\u062b\\u0627\\u0628\\u062a\",\n\"comments\": \"\\u0627\\u0644\\u062a\\u0639\\u0644\\u064a\\u0642\\u0627\\u062a\",\n\"Format Painter\": \"\\u0646\\u0627\\u0633\\u062e \\u0627\\u0644\\u062a\\u0646\\u0633\\u064a\\u0642\",\n\"Insert\\/edit iframe\": \"\\u0625\\u062f\\u0631\\u0627\\u062c\\/\\u062a\\u062d\\u0631\\u064a\\u0631 \\u0625\\u0637\\u0627\\u0631 \\u0645\\u062f\\u0645\\u062c\",\n\"Capitalization\": \"\\u0643\\u062a\\u0627\\u0628\\u0629 \\u0628\\u0627\\u0644\\u0623\\u062d\\u0631\\u0641 \\u0627\\u0644\\u0643\\u0628\\u064a\\u0631\\u0629\",\n\"lowercase\": \"\\u0623\\u062d\\u0631\\u0641 \\u0635\\u063a\\u064a\\u0631\\u0629\",\n\"UPPERCASE\": \"\\u0623\\u062d\\u0631\\u0641 \\u0643\\u0628\\u064a\\u0631\\u0629\",\n\"Title Case\": \"\\u062d\\u0627\\u0644\\u0629 \\u0623\\u062d\\u0631\\u0641 \\u0627\\u0644\\u0639\\u0646\\u0648\\u0627\\u0646\",\n\"Permanent Pen Properties\": \"\\u062e\\u0635\\u0627\\u0626\\u0635 \\u0627\\u0644\\u0642\\u0644\\u0645 \\u0627\\u0644\\u062b\\u0627\\u0628\\u062a\",\n\"Permanent pen properties...\": \"\\u062e\\u0635\\u0627\\u0626\\u0635 \\u0627\\u0644\\u0642\\u0644\\u0645 \\u0627\\u0644\\u062b\\u0627\\u0628\\u062a...\",\n\"Font\": \"\\u0627\\u0644\\u062e\\u0637\",\n\"Size\": \"\\u0627\\u0644\\u062d\\u062c\\u0645\",\n\"More...\": \"\\u0627\\u0644\\u0645\\u0632\\u064a\\u062f...\",\n\"Spellcheck Language\": \"\\u0644\\u063a\\u0629 \\u0627\\u0644\\u062a\\u062f\\u0642\\u064a\\u0642 \\u0627\\u0644\\u0625\\u0645\\u0644\\u0627\\u0626\\u064a\",\n\"Select...\": \"\\u062a\\u062d\\u062f\\u064a\\u062f...\",\n\"Preferences\": \"\\u0627\\u0644\\u062a\\u0641\\u0636\\u064a\\u0644\\u0627\\u062a\",\n\"Yes\": \"\\u0646\\u0639\\u0645\",\n\"No\": \"\\u0644\\u0627\",\n\"Keyboard Navigation\": \"\\u0627\\u0644\\u062a\\u0646\\u0642\\u0644 \\u0628\\u0648\\u0627\\u0633\\u0637\\u0629 \\u0644\\u0648\\u062d\\u0629 \\u0627\\u0644\\u0645\\u0641\\u0627\\u062a\\u064a\\u062d\",\n\"Version\": \"\\u0627\\u0644\\u0625\\u0635\\u062f\\u0627\\u0631\",\n\"Anchor\": \"\\u0645\\u0631\\u0633\\u0627\\u0629\",\n\"Special character\": \"\\u0631\\u0645\\u0632\",\n\"Code sample\": \"\\u0639\\u064a\\u0651\\u0646\\u0629 \\u0639\\u0646 \\u0627\\u0644\\u0643\\u0648\\u062f \\u0627\\u0644\\u0628\\u0631\\u0645\\u062c\\u064a\",\n\"Color\": \"\\u0627\\u0644\\u0644\\u0648\\u0646\",\n\"Emoticons\": \"\\u0627\\u0644\\u0631\\u0645\\u0648\\u0632\",\n\"Document properties\": \"\\u062e\\u0635\\u0627\\u0626\\u0635 \\u0627\\u0644\\u0645\\u0633\\u062a\\u0646\\u062f\",\n\"Image\": \"\\u0627\\u0644\\u0635\\u0648\\u0631\\u0629\",\n\"Insert link\": \"\\u0625\\u062f\\u0631\\u0627\\u062c \\u0631\\u0627\\u0628\\u0637\",\n\"Target\": \"\\u0627\\u0644\\u0625\\u0637\\u0627\\u0631 \\u0627\\u0644\\u0647\\u062f\\u0641\",\n\"Link\": \"\\u0627\\u0644\\u0631\\u0627\\u0628\\u0637\",\n\"Poster\": \"\\u0645\\u0644\\u0635\\u0642\",\n\"Media\": \"\\u0627\\u0644\\u0648\\u0633\\u0627\\u0626\\u0637 \\u0627\\u0644\\u0645\\u062a\\u0639\\u062f\\u062f\\u0629\",\n\"Print\": \"\\u0637\\u0628\\u0627\\u0639\\u0629\",\n\"Prev\": \"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\",\n\"Find and replace\": \"\\u0628\\u062d\\u062b \\u0648\\u0627\\u0633\\u062a\\u0628\\u062f\\u0627\\u0644\",\n\"Whole words\": \"\\u0645\\u0637\\u0627\\u0628\\u0642\\u0629 \\u0627\\u0644\\u0643\\u0644\\u0645\\u0627\\u062a \\u0628\\u0627\\u0644\\u0643\\u0627\\u0645\\u0644\",\n\"Spellcheck\": \"\\u062a\\u062f\\u0642\\u064a\\u0642 \\u0625\\u0645\\u0644\\u0627\\u0626\\u064a\",\n\"Caption\": \"\\u0634\\u0631\\u062d\",\n\"Insert template\": \"\\u0625\\u062f\\u0631\\u0627\\u062c \\u0642\\u0627\\u0644\\u0628\",\n\"_dir\": \"rtl\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/bg_BG.js",
    "content": "tinymce.addI18n('bg_BG',{\n\"Redo\": \"\\u041e\\u0442\\u043c\\u0435\\u043d\\u044f\\u043d\\u0435\",\n\"Undo\": \"\\u0412\\u0440\\u044a\\u0449\\u0430\\u043d\\u0435\",\n\"Cut\": \"\\u0418\\u0437\\u0440\\u044f\\u0437\\u0432\\u0430\\u043d\\u0435\",\n\"Copy\": \"\\u041a\\u043e\\u043f\\u0438\\u0440\\u0430\\u043d\\u0435\",\n\"Paste\": \"\\u041f\\u043e\\u0441\\u0442\\u0430\\u0432\\u044f\\u043d\\u0435\",\n\"Select all\": \"\\u041c\\u0430\\u0440\\u043a\\u0438\\u0440\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0446\\u044f\\u043b\\u043e\\u0442\\u043e \\u0441\\u044a\\u0434\\u044a\\u0440\\u0436\\u0430\\u043d\\u0438\\u0435\",\n\"New document\": \"\\u041d\\u043e\\u0432 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\",\n\"Ok\": \"\\u0414\\u043e\\u0431\\u0440\\u0435\",\n\"Cancel\": \"\\u041e\\u0442\\u043a\\u0430\\u0437\",\n\"Visual aids\": \"\\u0412\\u0438\\u0437\\u0443\\u0430\\u043b\\u043d\\u043e \\u043e\\u0442\\u043a\\u0440\\u043e\\u044f\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u0438 \\u0431\\u0435\\u0437 \\u043a\\u0430\\u043d\\u0442\\u043e\\u0432\\u0435 (\\u0440\\u0430\\u043c\\u043a\\u0438)\",\n\"Bold\": \"\\u0423\\u0434\\u0435\\u0431\\u0435\\u043b\\u0435\\u043d (\\u043f\\u043e\\u043b\\u0443\\u0447\\u0435\\u0440)\",\n\"Italic\": \"\\u041d\\u0430\\u043a\\u043b\\u043e\\u043d\\u0435\\u043d (\\u043a\\u0443\\u0440\\u0441\\u0438\\u0432)\",\n\"Underline\": \"\\u041f\\u043e\\u0434\\u0447\\u0435\\u0440\\u0442\\u0430\\u0432\\u0430\\u043d\\u0435\",\n\"Strikethrough\": \"\\u0417\\u0430\\u0447\\u0435\\u0440\\u0442\\u0430\\u0432\\u0430\\u043d\\u0435\",\n\"Superscript\": \"\\u0413\\u043e\\u0440\\u0435\\u043d \\u0438\\u043d\\u0434\\u0435\\u043a\\u0441\",\n\"Subscript\": \"\\u0414\\u043e\\u043b\\u0435\\u043d \\u0438\\u043d\\u0434\\u0435\\u043a\\u0441\",\n\"Clear formatting\": \"\\u0418\\u0437\\u0447\\u0438\\u0441\\u0442\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\\u0440\\u0430\\u043d\\u0435\\u0442\\u043e\",\n\"Align left\": \"\\u041f\\u043e\\u0434\\u0440\\u0430\\u0432\\u043d\\u044f\\u0432\\u0430\\u043d\\u0435 \\u043e\\u0442\\u043b\\u044f\\u0432\\u043e\",\n\"Align center\": \"\\u0426\\u0435\\u043d\\u0442\\u0440\\u0438\\u0440\\u0430\\u043d\\u0435\",\n\"Align right\": \"\\u041f\\u043e\\u0434\\u0440\\u0430\\u0432\\u043d\\u044f\\u0432\\u0430\\u043d\\u0435 \\u043e\\u0442\\u0434\\u044f\\u0441\\u043d\\u043e\",\n\"Justify\": \"\\u0414\\u0432\\u0443\\u0441\\u0442\\u0440\\u0430\\u043d\\u043d\\u043e \\u043f\\u043e\\u0434\\u0440\\u0430\\u0432\\u043d\\u044f\\u0432\\u0430\\u043d\\u0435\",\n\"Bullet list\": \"\\u0421\\u043f\\u0438\\u0441\\u044a\\u043a \\u0441 \\u0432\\u043e\\u0434\\u0430\\u0447\\u0438\",\n\"Numbered list\": \"\\u041d\\u043e\\u043c\\u0435\\u0440\\u0438\\u0440\\u0430\\u043d \\u0441\\u043f\\u0438\\u0441\\u044a\\u043a\",\n\"Decrease indent\": \"\\u041d\\u0430\\u043c\\u0430\\u043b\\u044f\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u043e\\u0442\\u0441\\u0442\\u044a\\u043f\\u0430\",\n\"Increase indent\": \"\\u0423\\u0432\\u0435\\u043b\\u0438\\u0447\\u0430\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u043e\\u0442\\u0441\\u0442\\u044a\\u043f\\u0430\",\n\"Close\": \"\\u0417\\u0430\\u0442\\u0432\\u0430\\u0440\\u044f\\u043d\\u0435\",\n\"Formats\": \"\\u0424\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\\u0440\\u0430\\u043d\\u0435\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u0412\\u0430\\u0448\\u0438\\u044f\\u0442 \\u0431\\u0440\\u0430\\u0443\\u0437\\u044a\\u0440 \\u043d\\u0435 \\u043f\\u043e\\u0434\\u0434\\u044a\\u0440\\u0436\\u0430 \\u0434\\u0438\\u0440\\u0435\\u043a\\u0442\\u0435\\u043d \\u0434\\u043e\\u0441\\u0442\\u044a\\u043f \\u0434\\u043e \\u043a\\u043b\\u0438\\u043f\\u0431\\u043e\\u0440\\u0434\\u0430. \\u0412\\u043c\\u0435\\u0441\\u0442\\u043e \\u0442\\u043e\\u0432\\u0430 \\u0438\\u0437\\u043f\\u043e\\u043b\\u0437\\u0432\\u0430\\u0439\\u0442\\u0435 \\u043a\\u043b\\u0430\\u0432\\u0438\\u0448\\u043d\\u0438\\u0442\\u0435 \\u043a\\u043e\\u043c\\u0431\\u0438\\u043d\\u0430\\u0446\\u0438\\u0438 Ctrl+X (\\u0437\\u0430 \\u0438\\u0437\\u0440\\u044f\\u0437\\u0432\\u0430\\u043d\\u0435), Ctrl+C (\\u0437\\u0430 \\u043a\\u043e\\u043f\\u0438\\u0440\\u0430\\u043d\\u0435) \\u0438 Ctrl+V (\\u0437\\u0430 \\u043f\\u043e\\u0441\\u0442\\u0430\\u0432\\u044f\\u043d\\u0435).\",\n\"Headers\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u044f\",\n\"Header 1\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 1\",\n\"Header 2\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 2\",\n\"Header 3\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 3\",\n\"Header 4\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 4\",\n\"Header 5\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 5\",\n\"Header 6\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 6\",\n\"Headings\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u044f\",\n\"Heading 1\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 1\",\n\"Heading 2\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 2\",\n\"Heading 3\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 3\",\n\"Heading 4\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 4\",\n\"Heading 5\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 5\",\n\"Heading 6\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 6\",\n\"Preformatted\": \"\\u041f\\u0440\\u0435\\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\\u0440\\u0430\\u043d\",\n\"Div\": \"\\u0411\\u043b\\u043e\\u043a\",\n\"Pre\": \"\\u041f\\u0440\\u0435\\u0434\\u0432\\u0430\\u0440\\u0438\\u0442\\u0435\\u043b\\u043d\\u043e \\u043e\\u0444\\u043e\\u0440\\u043c\\u0435\\u043d \\u0442\\u0435\\u043a\\u0441\\u0442\",\n\"Code\": \"\\u041a\\u043e\\u0434\",\n\"Paragraph\": \"\\u041f\\u0430\\u0440\\u0430\\u0433\\u0440\\u0430\\u0444\",\n\"Blockquote\": \"\\u0426\\u0438\\u0442\\u0430\\u0442\",\n\"Inline\": \"\\u041d\\u0430 \\u0435\\u0434\\u0438\\u043d \\u0440\\u0435\\u0434\",\n\"Blocks\": \"\\u0411\\u043b\\u043e\\u043a\\u043e\\u0432\\u0435\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u041f\\u043e\\u0441\\u0442\\u0430\\u0432\\u044f\\u043d\\u0435\\u0442\\u043e \\u0432 \\u043c\\u043e\\u043c\\u0435\\u043d\\u0442\\u0430 \\u0435 \\u0432 \\u043e\\u0431\\u0438\\u043a\\u043d\\u043e\\u0432\\u0435\\u043d \\u0440\\u0435\\u0436\\u0438\\u043c. \\u0421\\u044a\\u0434\\u044a\\u0440\\u0436\\u0430\\u043d\\u0438\\u0435\\u0442\\u043e \\u0449\\u0435 \\u0431\\u044a\\u0434\\u0435 \\u043f\\u043e\\u0441\\u0442\\u0430\\u0432\\u0435\\u043d\\u043e \\u043a\\u0430\\u0442\\u043e \\u043d\\u0435\\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\\u0440\\u0430\\u043d \\u0442\\u0435\\u043a\\u0441\\u0442, \\u0434\\u043e\\u043a\\u0430\\u0442\\u043e \\u0438\\u0437\\u043a\\u043b\\u044e\\u0447\\u0438\\u0442\\u0435 \\u0442\\u0430\\u0437\\u0438 \\u043e\\u043f\\u0446\\u0438\\u044f.\",\n\"Fonts\": \"\\u0428\\u0440\\u0438\\u0444\\u0442\\u043e\\u0432\\u0435\",\n\"Font Sizes\": \"\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440 \\u043d\\u0430 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430\",\n\"Class\": \"\\u041a\\u043b\\u0430\\u0441\",\n\"Browse for an image\": \"\\u041f\\u043e\\u0442\\u044a\\u0440\\u0441\\u0435\\u0442\\u0435 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435\",\n\"OR\": \"\\u0418\\u041b\\u0418\",\n\"Drop an image here\": \"\\u041f\\u0443\\u0441\\u043d\\u0435\\u0442\\u0435 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435\\u0442\\u043e \\u0442\\u0443\\u043a\",\n\"Upload\": \"\\u041a\\u0430\\u0447\\u0432\\u0430\\u043d\\u0435\",\n\"Block\": \"\\u0411\\u043b\\u043e\\u043a\",\n\"Align\": \"\\u041f\\u043e\\u0434\\u0440\\u0430\\u0432\\u043d\\u044f\\u0432\\u0430\\u043d\\u0435\",\n\"Default\": \"\\u041f\\u043e \\u043f\\u043e\\u0434\\u0440\\u0430\\u0437\\u0431\\u0438\\u0440\\u0430\\u043d\\u0435\",\n\"Circle\": \"\\u041e\\u043a\\u0440\\u044a\\u0436\\u043d\\u043e\\u0441\\u0442\\u0438\",\n\"Disc\": \"\\u041a\\u0440\\u044a\\u0433\\u0447\\u0435\\u0442\\u0430\",\n\"Square\": \"\\u0417\\u0430\\u043f\\u044a\\u043b\\u043d\\u0435\\u043d\\u0438 \\u043a\\u0432\\u0430\\u0434\\u0440\\u0430\\u0442\\u0438\",\n\"Lower Alpha\": \"\\u041c\\u0430\\u043b\\u043a\\u0438 \\u0431\\u0443\\u043a\\u0432\\u0438\",\n\"Lower Greek\": \"\\u041c\\u0430\\u043b\\u043a\\u0438 \\u0433\\u0440\\u044a\\u0446\\u043a\\u0438 \\u0431\\u0443\\u043a\\u0432\\u0438\",\n\"Lower Roman\": \"\\u0420\\u0438\\u043c\\u0441\\u043a\\u0438 \\u0447\\u0438\\u0441\\u043b\\u0430 \\u0441 \\u043c\\u0430\\u043b\\u043a\\u0438 \\u0431\\u0443\\u043a\\u0432\\u0438\",\n\"Upper Alpha\": \"\\u0413\\u043b\\u0430\\u0432\\u043d\\u0438 \\u0431\\u0443\\u043a\\u0432\\u0438\",\n\"Upper Roman\": \"\\u0420\\u0438\\u043c\\u0441\\u043a\\u0438 \\u0447\\u0438\\u0441\\u043b\\u0430 \\u0441 \\u0433\\u043b\\u0430\\u0432\\u043d\\u0438 \\u0431\\u0443\\u043a\\u0432\\u0438\",\n\"Anchor...\": \"\\u041a\\u043e\\u0442\\u0432\\u0430...\",\n\"Name\": \"\\u041d\\u0430\\u0438\\u043c\\u0435\\u043d\\u043e\\u0432\\u0430\\u043d\\u0438\\u0435\",\n\"Id\": \"\\u0418\\u0434\\u0435\\u043d\\u0442\\u0438\\u0444\\u0438\\u043a\\u0430\\u0442\\u043e\\u0440 (id)\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"\\u0418\\u0434\\u0435\\u043d\\u0442\\u0438\\u0444\\u0438\\u043a\\u0430\\u0442\\u043e\\u0440\\u0430 (id) \\u0442\\u0440\\u044f\\u0431\\u0432\\u0430 \\u0434\\u0430 \\u0437\\u0430\\u043f\\u043e\\u0447\\u0432\\u0430 \\u0441 \\u0431\\u0443\\u043a\\u0432\\u0430, \\u043f\\u043e\\u0441\\u043b\\u0435\\u0434\\u0432\\u0430\\u043d \\u043e\\u0442 \\u0431\\u0443\\u043a\\u0432\\u0438, \\u0447\\u0438\\u0444\\u0440\\u0438, \\u0442\\u0438\\u0440\\u0435\\u0442\\u0430, \\u0442\\u043e\\u0447\\u043a\\u0438, \\u0434\\u0432\\u043e\\u0435\\u0442\\u043e\\u0447\\u0438\\u0435 \\u0438 \\u0434\\u043e\\u043b\\u043d\\u043e \\u0442\\u0438\\u0440\\u0435.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u0412 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\\u0430 \\u0438\\u043c\\u0430 \\u043d\\u0435\\u0437\\u0430\\u043f\\u0430\\u0437\\u0435\\u043d\\u0438 \\u043f\\u0440\\u043e\\u043c\\u0435\\u043d\\u0438. \\u0429\\u0435 \\u043f\\u0440\\u043e\\u0434\\u044a\\u043b\\u0436\\u0438\\u0442\\u0435 \\u043b\\u0438?\",\n\"Restore last draft\": \"\\u0412\\u044a\\u0437\\u0441\\u0442\\u0430\\u043d\\u043e\\u0432\\u044f\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u043f\\u043e\\u0441\\u043b\\u0435\\u0434\\u043d\\u0430\\u0442\\u0430 \\u0447\\u0435\\u0440\\u043d\\u043e\\u0432\\u0430\",\n\"Special character...\": \"\\u0421\\u043f\\u0435\\u0446\\u0438\\u0430\\u043b\\u0435\\u043d \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b...\",\n\"Source code\": \"\\u0418\\u0437\\u0445\\u043e\\u0434\\u0435\\u043d \\u043a\\u043e\\u0434 \\u043d\\u0430 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\\u0430 \\u0432 HTML\",\n\"Insert\\/Edit code sample\": \"\\u0412\\u043c\\u044a\\u043a\\u043d\\u0438\\/ \\u0440\\u0435\\u0434\\u0430\\u043a\\u0442\\u0438\\u0440\\u0430\\u0439 \\u043f\\u0440\\u0438\\u043c\\u0435\\u0440\\u0435\\u043d \\u043a\\u043e\\u0434\",\n\"Language\": \"\\u0415\\u0437\\u0438\\u043a\",\n\"Code sample...\": \"\\u041f\\u0440\\u0438\\u043c\\u0435\\u0440\\u0435\\u043d \\u043a\\u043e\\u0434...\",\n\"Color Picker\": \"\\u0418\\u0437\\u0431\\u0438\\u0440\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0446\\u0432\\u044f\\u0442\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"\\u041e\\u0442\\u043b\\u044f\\u0432\\u043e \\u043d\\u0430\\u0434\\u044f\\u0441\\u043d\\u043e\",\n\"Right to left\": \"\\u041e\\u0442\\u0434\\u044f\\u0441\\u043d\\u043e \\u043d\\u0430\\u043b\\u044f\\u0432\\u043e\",\n\"Emoticons...\": \"\\u0415\\u043c\\u043e\\u0442\\u0438\\u043a\\u043e\\u043d\\u0438...\",\n\"Metadata and Document Properties\": \"\\u041c\\u0435\\u0442\\u0430\\u0434\\u0430\\u043d\\u043d\\u0438 \\u0438 \\u0441\\u0432\\u043e\\u0439\\u0441\\u0442\\u0432\\u0430 \\u043d\\u0430 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\\u0430\",\n\"Title\": \"\\u041d\\u0430\\u0438\\u043c\\u0435\\u043d\\u043e\\u0432\\u0430\\u043d\\u0438\\u0435\",\n\"Keywords\": \"\\u041a\\u043b\\u044e\\u0447\\u043e\\u0432\\u0438 \\u0434\\u0443\\u043c\\u0438\",\n\"Description\": \"\\u041e\\u043f\\u0438\\u0441\\u0430\\u043d\\u0438\\u0435\",\n\"Robots\": \"\\u0420\\u043e\\u0431\\u043e\\u0442\\u0438 \\u043d\\u0430 \\u0443\\u0435\\u0431 \\u0442\\u044a\\u0440\\u0441\\u0430\\u0447\\u043a\\u0438\",\n\"Author\": \"\\u0410\\u0432\\u0442\\u043e\\u0440\",\n\"Encoding\": \"\\u041a\\u043e\\u0434\\u0438\\u0440\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0437\\u043d\\u0430\\u0446\\u0438\\u0442\\u0435\",\n\"Fullscreen\": \"\\u041d\\u0430 \\u0446\\u044f\\u043b \\u0435\\u043a\\u0440\\u0430\\u043d\",\n\"Action\": \"\\u0414\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435\",\n\"Shortcut\": \"\\u0411\\u044a\\u0440\\u0437 \\u043a\\u043b\\u0430\\u0432\\u0438\\u0448\",\n\"Help\": \"\\u041f\\u043e\\u043c\\u043e\\u0449\",\n\"Address\": \"\\u0410\\u0434\\u0440\\u0435\\u0441\",\n\"Focus to menubar\": \"Focus to menubar\",\n\"Focus to toolbar\": \"Focus to toolbar\",\n\"Focus to element path\": \"Focus to element path\",\n\"Focus to contextual toolbar\": \"Focus to contextual toolbar\",\n\"Insert link (if link plugin activated)\": \"\\u041f\\u043e\\u0441\\u0442\\u0430\\u0432\\u0438 \\u0432\\u0440\\u044a\\u0437\\u043a\\u0430 (\\u0430\\u043a\\u043e \\u043f\\u043b\\u044a\\u0433\\u0438\\u043d\\u0430 \\u0437\\u0430 \\u0432\\u0440\\u044a\\u0437\\u043a\\u0438 \\u0435 \\u0430\\u043a\\u0442\\u0438\\u0432\\u0438\\u0440\\u0430\\u043d)\",\n\"Save (if save plugin activated)\": \"\\u0417\\u0430\\u043f\\u0438\\u0448\\u0438 (\\u0430\\u043a\\u043e \\u043f\\u043b\\u044a\\u0433\\u0438\\u043d\\u0430 \\u0437\\u0430 \\u0437\\u0430\\u043f\\u0438\\u0441 \\u0435 \\u0430\\u043a\\u0442\\u0438\\u0432\\u0438\\u0440\\u0430\\u043d)\",\n\"Find (if searchreplace plugin activated)\": \"\\u041d\\u0430\\u043c\\u0435\\u0440\\u0438 (\\u0430\\u043a\\u043e \\u043f\\u043b\\u044a\\u0433\\u0438\\u043d\\u0430 \\u0437\\u0430 \\u0442\\u044a\\u0440\\u0441\\u0435\\u043d\\u0435\\/\\u0437\\u0430\\u043c\\u044f\\u043d\\u0430 \\u0435 \\u0430\\u043a\\u0442\\u0438\\u0432\\u0438\\u0440\\u0430\\u043d)\",\n\"Plugins installed ({0}):\": \"\\u0418\\u043d\\u0441\\u0442\\u0430\\u043b\\u0438\\u0440\\u0430\\u043d\\u0438 \\u043f\\u043b\\u044a\\u0433\\u0438\\u043d\\u0438 ({0}):\",\n\"Premium plugins:\": \"\\u041f\\u0440\\u0435\\u043c\\u0438\\u0439\\u043d\\u0438 \\u043f\\u043b\\u044a\\u0433\\u0438\\u043d\\u0438:\",\n\"Learn more...\": \"\\u041d\\u0430\\u0443\\u0447\\u0435\\u0442\\u0435 \\u043f\\u043e\\u0432\\u0435\\u0447\\u0435...\",\n\"You are using {0}\": \"\\u0418\\u0437\\u043f\\u043e\\u043b\\u0437\\u0432\\u0430\\u0442\\u0435 {0}\",\n\"Plugins\": \"Plugins\",\n\"Handy Shortcuts\": \"Handy Shortcuts\",\n\"Horizontal line\": \"\\u0425\\u043e\\u0440\\u0438\\u0437\\u043e\\u043d\\u0442\\u0430\\u043b\\u043d\\u0430 \\u0447\\u0435\\u0440\\u0442\\u0430\",\n\"Insert\\/edit image\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u044f\\u043d\\u0435\\/\\u043a\\u043e\\u0440\\u0435\\u043a\\u0446\\u0438\\u044f \\u043d\\u0430 \\u043a\\u0430\\u0440\\u0442\\u0438\\u043d\\u043a\\u0430\",\n\"Image description\": \"\\u041e\\u043f\\u0438\\u0441\\u0430\\u043d\\u0438\\u0435 \\u043d\\u0430 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435\\u0442\\u043e\",\n\"Source\": \"\\u0410\\u0434\\u0440\\u0435\\u0441\",\n\"Dimensions\": \"\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440\",\n\"Constrain proportions\": \"\\u0417\\u0430\\u0432\\u0430\\u0437\\u043d\\u0430\\u0432\\u0435 \\u043d\\u0430 \\u043f\\u0440\\u043e\\u043f\\u043e\\u0440\\u0446\\u0438\\u0438\\u0442\\u0435\",\n\"General\": \"\\u041e\\u0431\\u0449\\u043e\",\n\"Advanced\": \"\\u041f\\u043e\\u0434\\u0440\\u043e\\u0431\\u043d\\u043e\",\n\"Style\": \"\\u0421\\u0442\\u0438\\u043b\",\n\"Vertical space\": \"\\u0412\\u0435\\u0440\\u0442\\u0438\\u043a\\u0430\\u043b\\u043d\\u043e \\u043f\\u0440\\u043e\\u0441\\u0442\\u0440\\u0430\\u043d\\u0441\\u0442\\u0432\\u043e\",\n\"Horizontal space\": \"\\u0425\\u043e\\u0440\\u0438\\u0437\\u043e\\u043d\\u0442\\u0430\\u043b\\u043d\\u043e \\u043f\\u0440\\u043e\\u0441\\u0442\\u0440\\u0430\\u043d\\u0441\\u0442\\u0432\\u043e\",\n\"Border\": \"\\u041a\\u0430\\u043d\\u0442 (\\u0440\\u0430\\u043c\\u043a\\u0430)\",\n\"Insert image\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u044f\\u043d\\u0435 \\u043d\\u0430 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435\",\n\"Image...\": \"\\u0418\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435...\",\n\"Image list\": \"\\u0421\\u043f\\u0438\\u0441\\u044a\\u043a \\u0441 \\u043a\\u0430\\u0440\\u0442\\u0438\\u043d\\u043a\\u0438\",\n\"Rotate counterclockwise\": \"\\u0417\\u0430\\u0432\\u044a\\u0440\\u0442\\u0430\\u043d\\u0435 \\u043e\\u0431\\u0440\\u0430\\u0442\\u043d\\u043e \\u043d\\u0430 \\u0447\\u0430\\u0441\\u043e\\u0432\\u043d\\u0438\\u043a\\u0430\",\n\"Rotate clockwise\": \"\\u0417\\u0430\\u0432\\u044a\\u0440\\u0442\\u0430\\u043d\\u0435 \\u043f\\u043e \\u0447\\u0430\\u0441\\u043e\\u0432\\u043d\\u0438\\u043a\\u0430\",\n\"Flip vertically\": \"\\u041e\\u0431\\u044a\\u0440\\u043d\\u0438 \\u0432\\u0435\\u0440\\u0442\\u0438\\u043a\\u0430\\u043b\\u043d\\u043e\",\n\"Flip horizontally\": \"\\u041e\\u0431\\u044a\\u0440\\u043d\\u0438 \\u0445\\u043e\\u0440\\u0438\\u0437\\u043e\\u043d\\u0442\\u0430\\u043b\\u043d\\u043e\",\n\"Edit image\": \"\\u0420\\u0435\\u0434\\u0430\\u043a\\u0442\\u0438\\u0440\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435\\u0442\\u043e\",\n\"Image options\": \"\\u041d\\u0430\\u0441\\u0442\\u0440\\u043e\\u0439\\u043a\\u0438 \\u043d\\u0430 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435\\u0442\\u043e\",\n\"Zoom in\": \"\\u041f\\u0440\\u0438\\u0431\\u043b\\u0438\\u0436\\u0438\",\n\"Zoom out\": \"\\u041e\\u0442\\u0434\\u0430\\u043b\\u0435\\u0447\\u0438\",\n\"Crop\": \"\\u0418\\u0437\\u0440\\u044f\\u0437\\u0432\\u0430\\u043d\\u0435\",\n\"Resize\": \"\\u041f\\u0440\\u0435\\u043e\\u0440\\u0430\\u0437\\u043c\\u0435\\u0440\\u044f\\u0432\\u0430\\u043d\\u0435\",\n\"Orientation\": \"\\u041e\\u0440\\u0438\\u0435\\u043d\\u0442\\u0430\\u0446\\u0438\\u044f\",\n\"Brightness\": \"\\u042f\\u0440\\u043a\\u043e\\u0441\\u0442\",\n\"Sharpen\": \"\\u0418\\u0437\\u043e\\u0441\\u0442\\u0440\\u044f\\u043d\\u0435\",\n\"Contrast\": \"\\u041a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0441\\u0442\",\n\"Color levels\": \"\\u0426\\u0432\\u0435\\u0442\\u043d\\u0438 \\u043d\\u0438\\u0432\\u0430\",\n\"Gamma\": \"\\u0413\\u0430\\u043c\\u0430\",\n\"Invert\": \"\\u0418\\u043d\\u0432\\u0435\\u0440\\u0441\\u0438\\u044f\",\n\"Apply\": \"\\u041f\\u0440\\u0438\\u043b\\u043e\\u0436\\u0438\",\n\"Back\": \"\\u041d\\u0430\\u0437\\u0430\\u0434\",\n\"Insert date\\/time\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u044f\\u043d\\u0435 \\u043d\\u0430 \\u0434\\u0430\\u0442\\u0430\\/\\u0447\\u0430\\u0441\",\n\"Date\\/time\": \"\\u0414\\u0430\\u0442\\u0430\\/\\u0447\\u0430\\u0441\",\n\"Insert\\/Edit Link\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u044f\\u043d\\u0435\\/\\u0440\\u0435\\u0434\\u0430\\u043a\\u0442\\u0438\\u0440\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0445\\u0438\\u043f\\u0435\\u0440\\u0432\\u0440\\u044a\\u0437\\u043a\\u0430 (\\u043b\\u0438\\u043d\\u043a)\",\n\"Insert\\/edit link\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u044f\\u043d\\u0435\\/\\u043a\\u043e\\u0440\\u0435\\u043a\\u0446\\u0438\\u044f \\u043d\\u0430 \\u0445\\u0438\\u043f\\u0435\\u0440\\u0432\\u0440\\u044a\\u0437\\u043a\\u0430 (\\u043b\\u0438\\u043d\\u043a)\",\n\"Text to display\": \"\\u0422\\u0435\\u043a\\u0441\\u0442\",\n\"Url\": \"\\u0410\\u0434\\u0440\\u0435\\u0441 (URL)\",\n\"Open link in...\": \"\\u041e\\u0442\\u0432\\u0430\\u0440\\u044f\\u043d\\u0435 \\u043d\\u0430 \\u0445\\u0438\\u043f\\u0435\\u0440\\u0432\\u0440\\u044a\\u0437\\u043a\\u0430 \\u0432...\",\n\"Current window\": \"\\u0422\\u0435\\u043a\\u0443\\u0449 \\u043f\\u0440\\u043e\\u0437\\u043e\\u0440\\u0435\\u0446\",\n\"None\": \"\\u0411\\u0435\\u0437\",\n\"New window\": \"\\u0412 \\u043d\\u043e\\u0432 \\u043f\\u0440\\u043e\\u0437\\u043e\\u0440\\u0435\\u0446 (\\u043f\\u043e\\u0434\\u043f\\u0440\\u043e\\u0437\\u043e\\u0440\\u0435\\u0446)\",\n\"Remove link\": \"\\u041f\\u0440\\u0435\\u043c\\u0430\\u0445\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0445\\u0438\\u043f\\u0435\\u0440\\u0432\\u0440\\u044a\\u0437\\u043a\\u0430\",\n\"Anchors\": \"\\u041a\\u043e\\u0442\\u0432\\u0438\",\n\"Link...\": \"\\u0425\\u0438\\u043f\\u0435\\u0440\\u0432\\u0440\\u044a\\u0437\\u043a\\u0430...\",\n\"Paste or type a link\": \"\\u041f\\u043e\\u0441\\u0442\\u0430\\u0432\\u0435\\u0442\\u0435 \\u0438\\u043b\\u0438 \\u043d\\u0430\\u043f\\u0438\\u0448\\u0435\\u0442\\u0435 \\u0432\\u0440\\u044a\\u0437\\u043a\\u0430(\\u043b\\u0438\\u043d\\u043a)\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"URL \\u0430\\u0434\\u0440\\u0435\\u0441\\u044a\\u0442, \\u043a\\u043e\\u0439\\u0442\\u043e \\u0432\\u044a\\u0432\\u0434\\u043e\\u0445\\u0442\\u0435 \\u043f\\u0440\\u0438\\u043b\\u0438\\u0447\\u0430 \\u043d\\u0430 \\u0435-\\u043c\\u0435\\u0439\\u043b \\u0430\\u0434\\u0440\\u0435\\u0441. \\u0418\\u0441\\u043a\\u0430\\u0442\\u0435 \\u043b\\u0438 \\u0434\\u0430 \\u0434\\u043e\\u0431\\u0430\\u0432\\u0438\\u0442\\u0435 \\u043d\\u0435\\u043e\\u0431\\u0445\\u043e\\u0434\\u0438\\u043c\\u0438\\u044f mailto: \\u043f\\u0440\\u0435\\u0444\\u0438\\u043a\\u0441?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"URL \\u0430\\u0434\\u0440\\u0435\\u0441\\u044a\\u0442, \\u043a\\u043e\\u0439\\u0442\\u043e \\u0432\\u044a\\u0432\\u0434\\u043e\\u0445\\u0442\\u0435 \\u043f\\u0440\\u0438\\u043b\\u0438\\u0447\\u0430 \\u0432\\u044a\\u043d\\u0448\\u0435\\u043d \\u0430\\u0434\\u0440\\u0435\\u0441. \\u0418\\u0441\\u043a\\u0430\\u0442\\u0435 \\u043b\\u0438 \\u0434\\u0430 \\u0434\\u043e\\u0431\\u0430\\u0432\\u0438\\u0442\\u0435 \\u043d\\u0435\\u043e\\u0431\\u0445\\u043e\\u0434\\u0438\\u043c\\u0438\\u044f http:\\/\\/ \\u043f\\u0440\\u0435\\u0444\\u0438\\u043a\\u0441?\",\n\"Link list\": \"\\u0421\\u043f\\u0438\\u0441\\u044a\\u043a \\u0441 \\u0432\\u0440\\u044a\\u0437\\u043a\\u0438\",\n\"Insert video\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u044f\\u043d\\u0435 \\u043d\\u0430 \\u0432\\u0438\\u0434\\u0435\\u043e\",\n\"Insert\\/edit video\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u044f\\u043d\\u0435\\/\\u043a\\u043e\\u0440\\u0435\\u043a\\u0446\\u0438\\u044f \\u043d\\u0430 \\u0432\\u0438\\u0434\\u0435\\u043e\",\n\"Insert\\/edit media\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u044f\\u043d\\u0435\\/\\u0440\\u0435\\u0434\\u0430\\u043a\\u0442\\u0438\\u0440\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u043c\\u0435\\u0434\\u0438\\u044f\",\n\"Alternative source\": \"\\u0410\\u043b\\u0442\\u0435\\u0440\\u043d\\u0430\\u0442\\u0438\\u0432\\u0435\\u043d \\u0430\\u0434\\u0440\\u0435\\u0441\",\n\"Alternative source URL\": \"\\u0410\\u043b\\u0442\\u0435\\u0440\\u043d\\u0430\\u0442\\u0438\\u0432\\u0435\\u043d \\u0430\\u0434\\u0440\\u0435\\u0441 URL\",\n\"Media poster (Image URL)\": \"\\u041c\\u0435\\u0434\\u0438\\u0435\\u043d \\u043f\\u043b\\u0430\\u043a\\u0430\\u0442 (\\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435 URL)\",\n\"Paste your embed code below:\": \"\\u041f\\u043e\\u0441\\u0442\\u0430\\u0432\\u0435\\u0442\\u0435 \\u043a\\u043e\\u0434\\u0430 \\u0437\\u0430 \\u0432\\u0433\\u0440\\u0430\\u0436\\u0434\\u0430\\u043d\\u0435 \\u0432 \\u043f\\u043e\\u043b\\u0435\\u0442\\u043e \\u043f\\u043e-\\u0434\\u043e\\u043b\\u0443:\",\n\"Embed\": \"\\u0412\\u0433\\u0440\\u0430\\u0436\\u0434\\u0430\\u043d\\u0435\",\n\"Media...\": \"\\u041c\\u0435\\u0434\\u0438\\u044f...\",\n\"Nonbreaking space\": \"\\u0418\\u043d\\u0442\\u0435\\u0440\\u0432\\u0430\\u043b\",\n\"Page break\": \"\\u041d\\u043e\\u0432\\u0430 \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u0430\",\n\"Paste as text\": \"\\u041f\\u043e\\u0441\\u0442\\u0430\\u0432\\u0438 \\u043a\\u0430\\u0442\\u043e \\u0442\\u0435\\u043a\\u0441\\u0442\",\n\"Preview\": \"\\u041f\\u0440\\u0435\\u0434\\u0432\\u0430\\u0440\\u0438\\u0442\\u0435\\u043b\\u0435\\u043d \\u0438\\u0437\\u0433\\u043b\\u0435\\u0434\",\n\"Print...\": \"\\u041e\\u0442\\u043f\\u0435\\u0447\\u0430\\u0442\\u0432\\u0430\\u043d\\u0435...\",\n\"Save\": \"\\u0421\\u044a\\u0445\\u0440\\u0430\\u043d\\u044f\\u0432\\u0430\\u043d\\u0435\",\n\"Find\": \"\\u0422\\u044a\\u0440\\u0441\\u0435\\u043d\\u0435 \\u0437\\u0430\",\n\"Replace with\": \"\\u0417\\u0430\\u043c\\u044f\\u043d\\u0430 \\u0441\",\n\"Replace\": \"\\u0417\\u0430\\u043c\\u044f\\u043d\\u0430\",\n\"Replace all\": \"\\u0417\\u0430\\u043c\\u044f\\u043d\\u0430 \\u043d\\u0430 \\u0432\\u0441\\u0438\\u0447\\u043a\\u0438 \\u0441\\u0440\\u0435\\u0449\\u0430\\u043d\\u0438\\u044f\",\n\"Previous\": \"\\u041f\\u0440\\u0435\\u0434\\u0438\\u0448\\u0435\\u043d\",\n\"Next\": \"\\u0421\\u043b\\u0435\\u0434\\u0432\\u0430\\u0449\",\n\"Find and replace...\": \"\\u041d\\u0430\\u043c\\u0438\\u0440\\u0430\\u043d\\u0435 \\u0438 \\u0437\\u0430\\u043c\\u044f\\u043d\\u0430...\",\n\"Could not find the specified string.\": \"\\u0422\\u044a\\u0440\\u0441\\u0435\\u043d\\u0438\\u044f\\u0442 \\u0442\\u0435\\u043a\\u0441\\u0442 \\u043d\\u0435 \\u0435 \\u043d\\u0430\\u043c\\u0435\\u0440\\u0435\\u043d.\",\n\"Match case\": \"\\u0421\\u044a\\u0432\\u043f\\u0430\\u0434\\u0435\\u043d\\u0438\\u0435 \\u043d\\u0430 \\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u044a\\u0440\\u0430 (\\u043c\\u0430\\u043b\\u043a\\u0438\\/\\u0433\\u043b\\u0430\\u0432\\u043d\\u0438 \\u0431\\u0443\\u043a\\u0432\\u0438)\",\n\"Find whole words only\": \"\\u0422\\u044a\\u0440\\u0441\\u0435\\u043d\\u0435 \\u0441\\u0430\\u043c\\u043e \\u043d\\u0430 \\u0446\\u0435\\u043b\\u0438 \\u0434\\u0443\\u043c\\u0438\",\n\"Spell check\": \"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u043a\\u0430 \\u043d\\u0430 \\u043f\\u0440\\u0430\\u0432\\u043e\\u043f\\u0438\\u0441\\u0430\",\n\"Ignore\": \"\\u0418\\u0433\\u043d\\u043e\\u0440\\u0438\\u0440\\u0430\\u043d\\u0435\",\n\"Ignore all\": \"\\u0418\\u0433\\u043d\\u043e\\u0440\\u0438\\u0440\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0432\\u0441\\u0438\\u0447\\u043a\\u043e\",\n\"Finish\": \"\\u041a\\u0440\\u0430\\u0439\",\n\"Add to Dictionary\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u0438 \\u0432 \\u0440\\u0435\\u0447\\u043d\\u0438\\u043a\\u0430\",\n\"Insert table\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u044f\\u043d\\u0435 \\u043d\\u0430 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u0430\",\n\"Table properties\": \"\\u0421\\u0432\\u043e\\u0439\\u0441\\u0442\\u0432\\u0430 \\u043d\\u0430 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u0430\\u0442\\u0430\",\n\"Delete table\": \"\\u0418\\u0437\\u0442\\u0440\\u0438\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u0430\\u0442\\u0430\",\n\"Cell\": \"\\u041a\\u043b\\u0435\\u0442\\u043a\\u0430\",\n\"Row\": \"\\u0420\\u0435\\u0434\",\n\"Column\": \"\\u041a\\u043e\\u043b\\u043e\\u043d\\u0430\",\n\"Cell properties\": \"\\u0421\\u0432\\u043e\\u0439\\u0441\\u0442\\u0432\\u0430 \\u043d\\u0430 \\u043a\\u043b\\u0435\\u0442\\u043a\\u0430\\u0442\\u0430\",\n\"Merge cells\": \"\\u0421\\u043b\\u0438\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u043a\\u043b\\u0435\\u0442\\u043a\\u0438\\u0442\\u0435\",\n\"Split cell\": \"\\u0420\\u0430\\u0437\\u0434\\u0435\\u043b\\u044f\\u043d\\u0435 \\u043d\\u0430 \\u043a\\u043b\\u0435\\u0442\\u043a\\u0430\",\n\"Insert row before\": \"\\u0412\\u043c\\u044a\\u043a\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0440\\u0435\\u0434 \\u043f\\u0440\\u0435\\u0434\\u0438\",\n\"Insert row after\": \"\\u0412\\u043c\\u044a\\u043a\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0440\\u0435\\u0434 \\u0441\\u043b\\u0435\\u0434\",\n\"Delete row\": \"\\u0418\\u0437\\u0442\\u0440\\u0438\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0440\\u0435\\u0434\\u0430\",\n\"Row properties\": \"\\u0421\\u0432\\u043e\\u0439\\u0441\\u0442\\u0432\\u0430 \\u043d\\u0430 \\u0440\\u0435\\u0434\\u0430\",\n\"Cut row\": \"\\u0418\\u0437\\u0440\\u044f\\u0437\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0440\\u0435\\u0434\",\n\"Copy row\": \"\\u041a\\u043e\\u043f\\u0438\\u0440\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0440\\u0435\\u0434\",\n\"Paste row before\": \"\\u041f\\u043e\\u0441\\u0442\\u0430\\u0432\\u044f\\u043d\\u0435 \\u043d\\u0430 \\u0440\\u0435\\u0434 \\u043f\\u0440\\u0435\\u0434\\u0438\",\n\"Paste row after\": \"\\u041f\\u043e\\u0441\\u0442\\u0430\\u0432\\u044f\\u043d\\u0435 \\u043d\\u0430 \\u0440\\u0435\\u0434 \\u0441\\u043b\\u0435\\u0434\",\n\"Insert column before\": \"\\u0412\\u043c\\u044a\\u043a\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u043a\\u043e\\u043b\\u043e\\u043d\\u0430 \\u043f\\u0440\\u0435\\u0434\\u0438\",\n\"Insert column after\": \"\\u0412\\u043c\\u044a\\u043a\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u043a\\u043e\\u043b\\u043e\\u043d\\u0430 \\u0441\\u043b\\u0435\\u0434\",\n\"Delete column\": \"\\u0418\\u0437\\u0442\\u0440\\u0438\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u043a\\u043e\\u043b\\u043e\\u043d\\u0430\\u0442\\u0430\",\n\"Cols\": \"\\u041a\\u043e\\u043b\\u043e\\u043d\\u0438\",\n\"Rows\": \"\\u0420\\u0435\\u0434\\u043e\\u0432\\u0435\",\n\"Width\": \"\\u0428\\u0438\\u0440\\u0438\\u043d\\u0430\",\n\"Height\": \"\\u0412\\u0438\\u0441\\u043e\\u0447\\u0438\\u043d\\u0430\",\n\"Cell spacing\": \"\\u0420\\u0430\\u0437\\u0441\\u0442\\u043e\\u044f\\u043d\\u0438\\u0435 \\u043c\\u0435\\u0436\\u0434\\u0443 \\u043a\\u043b\\u0435\\u0442\\u043a\\u0438\\u0442\\u0435\",\n\"Cell padding\": \"\\u0420\\u0430\\u0437\\u0441\\u0442\\u043e\\u044f\\u043d\\u0438\\u0435 \\u0434\\u043e \\u0441\\u044a\\u0434\\u044a\\u0440\\u0436\\u0430\\u043d\\u0438\\u0435\\u0442\\u043e\",\n\"Show caption\": \"\\u041f\\u043e\\u043a\\u0430\\u0437\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u043d\\u0430\\u0434\\u043f\\u0438\\u0441\",\n\"Left\": \"\\u041b\\u044f\\u0432\\u043e\",\n\"Center\": \"\\u0426\\u0435\\u043d\\u0442\\u0440\\u0438\\u0440\\u0430\\u043d\\u043e\",\n\"Right\": \"\\u0414\\u044f\\u0441\\u043d\\u043e\",\n\"Cell type\": \"\\u0422\\u0438\\u043f \\u043d\\u0430 \\u043a\\u043b\\u0435\\u0442\\u043a\\u0430\\u0442\\u0430\",\n\"Scope\": \"\\u041e\\u0431\\u0445\\u0432\\u0430\\u0442\",\n\"Alignment\": \"\\u041f\\u043e\\u0434\\u0440\\u0430\\u0432\\u043d\\u044f\\u0432\\u0430\\u043d\\u0435\",\n\"H Align\": \"\\u0425\\u043e\\u0440\\u0438\\u0437\\u043e\\u043d\\u0442\\u0430\\u043b\\u043d\\u043e \\u043f\\u043e\\u0434\\u0440\\u0430\\u0432\\u043d\\u044f\\u0432\\u0430\\u043d\\u0435\",\n\"V Align\": \"\\u0412\\u0435\\u0440\\u0442\\u0438\\u043a\\u0430\\u043b\\u043d\\u043e \\u043f\\u043e\\u0434\\u0440\\u0430\\u0432\\u043d\\u044f\\u0432\\u0430\\u043d\\u0435\",\n\"Top\": \"\\u0413\\u043e\\u0440\\u0435\",\n\"Middle\": \"\\u041f\\u043e \\u0441\\u0440\\u0435\\u0434\\u0430\\u0442\\u0430\",\n\"Bottom\": \"\\u0414\\u043e\\u043b\\u0443\",\n\"Header cell\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u043d\\u0430 \\u043a\\u043b\\u0435\\u0442\\u043a\\u0430 (\\u0430\\u043d\\u0442\\u0435\\u0442\\u043a\\u0430)\",\n\"Row group\": \"Row group\",\n\"Column group\": \"Column group\",\n\"Row type\": \"\\u0422\\u0438\\u043f \\u043d\\u0430 \\u0440\\u0435\\u0434\\u0430\",\n\"Header\": \"\\u0413\\u043e\\u0440\\u0435\\u043d \\u043a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b (header)\",\n\"Body\": \"\\u0421\\u044a\\u0434\\u044a\\u0440\\u0436\\u0430\\u043d\\u0438\\u0435 (body)\",\n\"Footer\": \"\\u0414\\u043e\\u043b\\u0435\\u043d \\u043a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b (footer)\",\n\"Border color\": \"\\u0426\\u0432\\u044f\\u0442 \\u043d\\u0430 \\u0440\\u0430\\u043c\\u043a\\u0430\\u0442\\u0430\",\n\"Insert template...\": \"\\u0412\\u043c\\u044a\\u043a\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0448\\u0430\\u0431\\u043b\\u043e\\u043d...\",\n\"Templates\": \"\\u0428\\u0430\\u0431\\u043b\\u043e\\u043d\\u0438\",\n\"Template\": \"\\u0428\\u0430\\u0431\\u043b\\u043e\\u043d\",\n\"Text color\": \"\\u0426\\u0432\\u044f\\u0442 \\u043d\\u0430 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430\",\n\"Background color\": \"\\u0424\\u043e\\u043d\\u043e\\u0432 \\u0446\\u0432\\u044f\\u0442\",\n\"Custom...\": \"\\u0418\\u0437\\u0431\\u0440\\u0430\\u043d...\",\n\"Custom color\": \"\\u0426\\u0432\\u044f\\u0442 \\u043f\\u043e \\u0438\\u0437\\u0431\\u043e\\u0440\",\n\"No color\": \"\\u0411\\u0435\\u0437 \\u0446\\u0432\\u044f\\u0442\",\n\"Remove color\": \"\\u041f\\u0440\\u0435\\u043c\\u0430\\u0445\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0446\\u0432\\u0435\\u0442\\u0430\",\n\"Table of Contents\": \"\\u0421\\u044a\\u0434\\u044a\\u0440\\u0436\\u0430\\u043d\\u0438\\u0435\",\n\"Show blocks\": \"\\u041f\\u043e\\u043a\\u0430\\u0437\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0431\\u043b\\u043e\\u043a\\u043e\\u0432\\u0435\\u0442\\u0435\",\n\"Show invisible characters\": \"\\u041f\\u043e\\u043a\\u0430\\u0437\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u043d\\u0435\\u043f\\u0435\\u0447\\u0430\\u0442\\u0430\\u0435\\u043c\\u0438 \\u0437\\u043d\\u0430\\u0446\\u0438\",\n\"Word count\": \"\\u0411\\u0440\\u043e\\u0435\\u043d\\u0435 \\u043d\\u0430 \\u0434\\u0443\\u043c\\u0438\",\n\"Count\": \"\\u0411\\u0440\\u043e\\u0439\",\n\"Document\": \"\\u0414\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\",\n\"Selection\": \"\\u0418\\u0437\\u0431\\u0440\\u0430\\u043d\\u043e\",\n\"Words\": \"\\u0414\\u0443\\u043c\\u0438\",\n\"Words: {0}\": \"\\u0411\\u0440\\u043e\\u0439 \\u0434\\u0443\\u043c\\u0438: {0}\",\n\"{0} words\": \"{0} \\u0431\\u0440\\u043e\\u0439 \\u0434\\u0443\\u043c\\u0438\",\n\"File\": \"\\u0424\\u0430\\u0439\\u043b\",\n\"Edit\": \"\\u0420\\u0435\\u0434\\u0430\\u043a\\u0442\\u0438\\u0440\\u0430\\u043d\\u0435\",\n\"Insert\": \"\\u0412\\u043c\\u044a\\u043a\\u0432\\u0430\\u043d\\u0435\",\n\"View\": \"\\u0418\\u0437\\u0433\\u043b\\u0435\\u0434\",\n\"Format\": \"\\u0424\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\\u0440\\u0430\\u043d\\u0435\",\n\"Table\": \"\\u0422\\u0430\\u0431\\u043b\\u0438\\u0446\\u0430\",\n\"Tools\": \"\\u0418\\u043d\\u0441\\u0442\\u0440\\u0443\\u043c\\u0435\\u043d\\u0442\\u0438\",\n\"Powered by {0}\": \"\\u0421\\u044a\\u0437\\u0434\\u0430\\u0434\\u0435\\u043d\\u043e \\u0441 {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u041f\\u043e\\u043b\\u0435 \\u0437\\u0430 \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\\u0440\\u0430\\u043d \\u0442\\u0435\\u043a\\u0441\\u0442. \\u041d\\u0430\\u0442\\u0438\\u0441\\u043d\\u0435\\u0442\\u0435 Alt+F9 \\u0437\\u0430 \\u043c\\u0435\\u043d\\u044e; Alt+F10 \\u0437\\u0430 \\u043b\\u0435\\u043d\\u0442\\u0430 \\u0441 \\u0438\\u043d\\u0441\\u0442\\u0440\\u0443\\u043c\\u0435\\u043d\\u0442\\u0438; Alt+0 \\u0437\\u0430 \\u043f\\u043e\\u043c\\u043e\\u0449.\",\n\"Image title\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 \\u043d\\u0430 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435\\u0442\\u043e\",\n\"Border width\": \"\\u0428\\u0438\\u0440\\u0438\\u043d\\u0430 \\u043d\\u0430 \\u0440\\u0430\\u043c\\u043a\\u0430\\u0442\\u0430\",\n\"Border style\": \"\\u0421\\u0442\\u0438\\u043b \\u043d\\u0430 \\u0440\\u0430\\u043c\\u043a\\u0430\\u0442\\u0430\",\n\"Error\": \"\\u0413\\u0440\\u0435\\u0448\\u043a\\u0430\",\n\"Warn\": \"\\u041f\\u0440\\u0435\\u0434\\u0443\\u043f\\u0440\\u0435\\u0436\\u0434\\u0435\\u043d\\u0438\\u0435\",\n\"Valid\": \"\\u0412\\u0430\\u043b\\u0438\\u0434\\u043d\\u043e\",\n\"To open the popup, press Shift+Enter\": \"\\u0417\\u0430 \\u0434\\u0430 \\u043e\\u0442\\u0432\\u043e\\u0440\\u0438\\u0442\\u0435 \\u0438\\u0437\\u0441\\u043a\\u0430\\u0447\\u0430\\u0449\\u0438\\u044f \\u043f\\u0440\\u043e\\u0437\\u043e\\u0440\\u0435\\u0446, \\u043d\\u0430\\u0442\\u0438\\u0441\\u043d\\u0435\\u0442\\u0435 Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u041f\\u043e\\u043b\\u0435 \\u0437\\u0430 \\u043e\\u0431\\u043e\\u0433\\u0430\\u0442\\u0435\\u043d \\u0442\\u0435\\u043a\\u0441\\u0442. \\u041d\\u0430\\u0442\\u0438\\u0441\\u043d\\u0435\\u0442\\u0435 ALT+0 \\u0437\\u0430 \\u043f\\u043e\\u043c\\u043e\\u0449.\",\n\"System Font\": \"\\u0421\\u0438\\u0441\\u0442\\u0435\\u043c\\u0435\\u043d \\u0448\\u0440\\u0438\\u0444\\u0442\",\n\"Failed to upload image: {0}\": \"\\u041d\\u0435\\u0443\\u0441\\u043f\\u0435\\u0448\\u043d\\u043e \\u043a\\u0430\\u0447\\u0432\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u041d\\u0435\\u0443\\u0441\\u043f\\u0435\\u0448\\u043d\\u043e \\u0437\\u0430\\u0440\\u0435\\u0436\\u0434\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u043f\\u043b\\u044a\\u0433\\u0438\\u043d {0} \\u043e\\u0442 URL {1}\",\n\"Failed to load plugin url: {0}\": \"\\u041d\\u0435\\u0443\\u0441\\u043f\\u0435\\u0448\\u043d\\u043e \\u0437\\u0430\\u0440\\u0435\\u0436\\u0434\\u0430\\u043d\\u0435 \\u043d\\u0430 URL \\u043d\\u0430 \\u043f\\u043b\\u044a\\u0433\\u0438\\u043d: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u041d\\u0435\\u0443\\u0441\\u043f\\u0435\\u0448\\u043d\\u043e \\u0438\\u043d\\u0438\\u0446\\u0438\\u0430\\u043b\\u0438\\u0437\\u0438\\u0440\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u043f\\u043b\\u044a\\u0433\\u0438\\u043d: {0}\",\n\"example\": \"\\u043f\\u0440\\u0438\\u043c\\u0435\\u0440\",\n\"Search\": \"\\u0422\\u044a\\u0440\\u0441\\u0435\\u043d\\u0435\",\n\"All\": \"\\u0412\\u0441\\u0438\\u0447\\u043a\\u0438\",\n\"Currency\": \"\\u0412\\u0430\\u043b\\u0443\\u0442\\u0430\",\n\"Text\": \"\\u0422\\u0435\\u043a\\u0441\\u0442\",\n\"Quotations\": \"\\u0426\\u0438\\u0442\\u0430\\u0442\\u0438\",\n\"Mathematical\": \"\\u041c\\u0430\\u0442\\u0435\\u043c\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043a\\u0438\",\n\"Extended Latin\": \"\\u0420\\u0430\\u0437\\u0448\\u0438\\u0440\\u0435\\u043d\\u0438 \\u043b\\u0430\\u0442\\u0438\\u043d\\u0441\\u043a\\u0438 \\u0431\\u0443\\u043a\\u0432\\u0438\",\n\"Symbols\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b\\u0438\",\n\"Arrows\": \"\\u0421\\u0442\\u0440\\u0435\\u043b\\u043a\\u0438\",\n\"User Defined\": \"\\u0417\\u0430\\u0434\\u0430\\u0434\\u0435\\u043d\\u0438 \\u043e\\u0442 \\u043f\\u043e\\u0442\\u0440\\u0435\\u0431\\u0438\\u0442\\u0435\\u043b\\u044f\",\n\"dollar sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0434\\u043e\\u043b\\u0430\\u0440\",\n\"currency sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0432\\u0430\\u043b\\u0443\\u0442\\u0430\",\n\"euro-currency sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0435\\u0432\\u0440\\u043e \\u0432\\u0430\\u043b\\u0443\\u0442\\u0430\",\n\"colon sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043a\\u043e\\u043b\\u043e\\u043d\",\n\"cruzeiro sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043a\\u0440\\u0443\\u0437\\u0435\\u0439\\u0440\\u043e\",\n\"french franc sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0444\\u0440\\u0435\\u043d\\u0441\\u043a\\u0438 \\u0444\\u0440\\u0430\\u043d\\u043a\",\n\"lira sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043b\\u0438\\u0440\\u0430\",\n\"mill sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043c\\u0438\\u043b\",\n\"naira sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043d\\u0430\\u0439\\u0440\\u0430\",\n\"peseta sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043f\\u0435\\u0441\\u0435\\u0442\\u0430\",\n\"rupee sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0440\\u0443\\u043f\\u0438\\u044f\",\n\"won sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043a\\u043e\\u0440\\u0435\\u0439\\u0441\\u043a\\u0438 \\u0432\\u043e\\u043d\",\n\"new sheqel sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043d\\u043e\\u0432 \\u0448\\u0435\\u043a\\u0435\\u043b\",\n\"dong sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0432\\u0438\\u0435\\u0442\\u043d\\u0430\\u043c\\u0441\\u043a\\u0438 \\u0434\\u043e\\u043d\\u0433\",\n\"kip sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043b\\u0430\\u043e\\u0441\\u043a\\u0438 \\u043a\\u0438\\u043f\",\n\"tugrik sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043c\\u043e\\u043d\\u0433\\u043e\\u043b\\u0441\\u043a\\u0438 \\u0442\\u0443\\u0433\\u0440\\u0438\\u043a\",\n\"drachma sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0434\\u0440\\u0430\\u0445\\u043c\\u0430\",\n\"german penny symbol\": \"\\u0441\\u0438\\u043c\\u0432\\u043e\\u043b \\u0437\\u0430 \\u0433\\u0435\\u0440\\u043c\\u0430\\u043d\\u0441\\u043a\\u043e \\u043f\\u0435\\u043d\\u0438\",\n\"peso sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043f\\u0435\\u0441\\u043e\",\n\"guarani sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0433\\u0443\\u0430\\u0440\\u0430\\u043d\\u0438\",\n\"austral sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0430\\u0443\\u0441\\u0442\\u0440\\u0430\\u043b\",\n\"hryvnia sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0433\\u0440\\u0438\\u0432\\u043d\\u044f\",\n\"cedi sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0441\\u0435\\u0434\\u0438\",\n\"livre tournois sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043b\\u0438\\u0432\\u0440 \\u0442\\u0443\\u0440\\u043d\\u0443\\u0430\",\n\"spesmilo sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0441\\u043f\\u0435\\u0441\\u043c\\u0438\\u043b\\u043e\",\n\"tenge sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0442\\u0435\\u043d\\u0433\\u0435\",\n\"indian rupee sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0438\\u043d\\u0434\\u0438\\u0439\\u0441\\u043a\\u0430 \\u0440\\u0443\\u043f\\u0438\\u044f\",\n\"turkish lira sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0442\\u0443\\u0440\\u0441\\u043a\\u0430 \\u043b\\u0438\\u0440\\u0430\",\n\"nordic mark sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043d\\u043e\\u0440\\u0434\\u0441\\u043a\\u0430 \\u043c\\u0430\\u0440\\u043a\\u0430\",\n\"manat sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u043c\\u0430\\u043d\\u0430\\u0442\",\n\"ruble sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0437\\u0430 \\u0440\\u0443\\u0431\\u043b\\u0430\",\n\"yen character\": \"\\u0441\\u0438\\u043c\\u0432\\u043e\\u043b \\u0437\\u0430 \\u0439\\u0435\\u043d\\u0430\",\n\"yuan character\": \"\\u0441\\u0438\\u043c\\u0432\\u043e\\u043b \\u0437\\u0430 \\u044e\\u0430\\u043d\",\n\"yuan character, in hong kong and taiwan\": \"\\u0441\\u0438\\u043c\\u0432\\u043e\\u043b \\u0437\\u0430 \\u044e\\u0430\\u043d \\u0432 \\u0425\\u043e\\u043d\\u043a\\u043e\\u043d\\u0433 \\u0438 \\u0422\\u0430\\u0439\\u0432\\u0430\\u043d\",\n\"yen\\/yuan character variant one\": \"\\u0441\\u0438\\u043c\\u0432\\u043e\\u043b \\u0437\\u0430 \\u0439\\u0435\\u043d\\u0430\\/\\u044e\\u0430\\u043d \\u0432\\u0430\\u0440\\u0438\\u0430\\u043d\\u0442 \\u0435\\u0434\\u043d\\u043e\",\n\"Loading emoticons...\": \"\\u0417\\u0430\\u0440\\u0435\\u0436\\u0434\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0435\\u043c\\u043e\\u0442\\u0438\\u043a\\u043e\\u043d\\u0438...\",\n\"Could not load emoticons\": \"\\u041d\\u0435\\u0443\\u0441\\u043f\\u0435\\u0448\\u043d\\u043e \\u0437\\u0430\\u0440\\u0435\\u0436\\u0434\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0435\\u043c\\u043e\\u0442\\u0438\\u043a\\u043e\\u043d\\u0438\",\n\"People\": \"\\u0425\\u043e\\u0440\\u0430\",\n\"Animals and Nature\": \"\\u0416\\u0438\\u0432\\u043e\\u0442\\u043d\\u0438 \\u0438 \\u043f\\u0440\\u0438\\u0440\\u043e\\u0434\\u0430\",\n\"Food and Drink\": \"\\u0425\\u0440\\u0430\\u043d\\u0430 \\u0438 \\u043d\\u0430\\u043f\\u0438\\u0442\\u043a\\u0438\",\n\"Activity\": \"\\u0414\\u0435\\u0439\\u043d\\u043e\\u0441\\u0442\\u0438\",\n\"Travel and Places\": \"\\u041f\\u044a\\u0442\\u0443\\u0432\\u0430\\u043d\\u0435 \\u0438 \\u043c\\u0435\\u0441\\u0442\\u0430\",\n\"Objects\": \"\\u041f\\u0440\\u0435\\u0434\\u043c\\u0435\\u0442\\u0438\",\n\"Flags\": \"\\u0417\\u043d\\u0430\\u043c\\u0435\\u043d\\u0430\",\n\"Characters\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b\\u0438\",\n\"Characters (no spaces)\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b\\u0438 (\\u0431\\u0435\\u0437 \\u0438\\u043d\\u0442\\u0435\\u0440\\u0432\\u0430\\u043b\\u0438)\",\n\"{0} characters\": \"{0} \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b\\u0430\",\n\"Error: Form submit field collision.\": \"\\u0413\\u0440\\u0435\\u0448\\u043a\\u0430: \\u041d\\u0435\\u0441\\u044a\\u043e\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0438\\u0435 \\u043d\\u0430 \\u043f\\u043e\\u043b\\u0435 \\u043f\\u0440\\u0438 \\u0438\\u0437\\u043f\\u0440\\u0430\\u0449\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0444\\u043e\\u0440\\u043c\\u0443\\u043b\\u044f\\u0440.\",\n\"Error: No form element found.\": \"\\u0413\\u0440\\u0435\\u0448\\u043a\\u0430: \\u041d\\u0435 \\u0435 \\u043e\\u0442\\u043a\\u0440\\u0438\\u0442 \\u0435\\u043b\\u0435\\u043c\\u0435\\u043d\\u0442 \\u043d\\u0430 \\u0444\\u043e\\u0440\\u043c\\u0443\\u043b\\u044f\\u0440\\u0430.\",\n\"Update\": \"\\u0410\\u043a\\u0442\\u0443\\u0430\\u043b\\u0438\\u0437\\u0438\\u0440\\u0430\\u043d\\u0435\",\n\"Color swatch\": \"\\u0426\\u0432\\u0435\\u0442\\u043d\\u0430 \\u043c\\u043e\\u0441\\u0442\\u0440\\u0430\",\n\"Turquoise\": \"\\u0422\\u044e\\u0440\\u043a\\u043e\\u0430\\u0437\\u0435\\u043d\\u043e\",\n\"Green\": \"\\u0417\\u0435\\u043b\\u0435\\u043d\\u043e\",\n\"Blue\": \"\\u0421\\u0438\\u043d\\u044c\\u043e\",\n\"Purple\": \"\\u041b\\u0438\\u043b\\u0430\\u0432\\u043e\",\n\"Navy Blue\": \"\\u041c\\u043e\\u0440\\u0441\\u043a\\u043e\\u0441\\u0438\\u043d\\u044c\\u043e\",\n\"Dark Turquoise\": \"\\u0422\\u044a\\u043c\\u043d\\u043e\\u0442\\u044e\\u0440\\u043a\\u043e\\u0430\\u0437\\u0435\\u043d\\u043e\",\n\"Dark Green\": \"\\u0422\\u044a\\u043c\\u043d\\u043e\\u0437\\u0435\\u043b\\u0435\\u043d\\u043e\",\n\"Medium Blue\": \"\\u0421\\u0440\\u0435\\u0434\\u043d\\u043e\\u0441\\u0438\\u043d\\u044c\\u043e\",\n\"Medium Purple\": \"\\u0421\\u0440\\u0435\\u0434\\u043d\\u043e\\u043b\\u0438\\u043b\\u0430\\u0432\\u043e\",\n\"Midnight Blue\": \"\\u0421\\u0440\\u0435\\u0434\\u043d\\u043e\\u0449\\u043d\\u043e \\u0441\\u0438\\u043d\\u044c\\u043e\",\n\"Yellow\": \"\\u0416\\u044a\\u043b\\u0442\\u043e\",\n\"Orange\": \"\\u041e\\u0440\\u0430\\u043d\\u0436\\u0435\\u0432\\u043e\",\n\"Red\": \"\\u0427\\u0435\\u0440\\u0432\\u0435\\u043d\\u043e\",\n\"Light Gray\": \"\\u0421\\u0432\\u0435\\u0442\\u043b\\u043e\\u0441\\u0438\\u0432\\u043e\",\n\"Gray\": \"\\u0421\\u0438\\u0432\\u043e\",\n\"Dark Yellow\": \"\\u0422\\u044a\\u043c\\u043d\\u043e\\u0436\\u044a\\u043b\\u0442\\u043e\",\n\"Dark Orange\": \"\\u0422\\u044a\\u043c\\u043d\\u043e\\u043e\\u0440\\u0430\\u043d\\u0436\\u0435\\u0432\\u043e\",\n\"Dark Red\": \"\\u0422\\u044a\\u043c\\u043d\\u043e\\u0447\\u0435\\u0440\\u0432\\u0435\\u043d\\u043e\",\n\"Medium Gray\": \"\\u0421\\u0440\\u0435\\u0434\\u043d\\u043e\\u0441\\u0438\\u0432\\u043e\",\n\"Dark Gray\": \"\\u0422\\u044a\\u043c\\u043d\\u043e\\u0441\\u0438\\u0432\\u043e\",\n\"Light Green\": \"\\u0421\\u0432\\u0435\\u0442\\u043b\\u043e\\u0437\\u0435\\u043b\\u0435\\u043d\",\n\"Light Yellow\": \"\\u0421\\u0432\\u0435\\u0442\\u043b\\u043e\\u0436\\u044a\\u043b\\u0442\",\n\"Light Red\": \"\\u0421\\u0432\\u0435\\u0442\\u043b\\u043e\\u0447\\u0435\\u0440\\u0432\\u0435\\u043d\",\n\"Light Purple\": \"\\u0421\\u0432\\u0435\\u0442\\u043b\\u043e\\u043b\\u0438\\u043b\\u0430\\u0432\",\n\"Light Blue\": \"\\u0421\\u0432\\u0435\\u0442\\u043b\\u043e\\u0441\\u0438\\u043d\",\n\"Dark Purple\": \"\\u0422\\u044a\\u043c\\u043d\\u043e\\u043b\\u0438\\u043b\\u0430\\u0432\",\n\"Dark Blue\": \"\\u0422\\u044a\\u043c\\u043d\\u043e\\u0441\\u0438\\u043d\",\n\"Black\": \"\\u0427\\u0435\\u0440\\u043d\\u043e\",\n\"White\": \"\\u0411\\u044f\\u043b\\u043e\",\n\"Switch to or from fullscreen mode\": \"\\u041f\\u0440\\u0435\\u0432\\u043a\\u043b\\u044e\\u0447\\u0432\\u0430\\u043d\\u0435 \\u043a\\u044a\\u043c \\u0438\\u043b\\u0438 \\u043e\\u0442 \\u0440\\u0435\\u0436\\u0438\\u043c \\u043d\\u0430 \\u0446\\u044f\\u043b \\u0435\\u043a\\u0440\\u0430\\u043d\",\n\"Open help dialog\": \"\\u041e\\u0442\\u0432\\u0430\\u0440\\u044f\\u043d\\u0435 \\u043d\\u0430 \\u0434\\u0438\\u0430\\u043b\\u043e\\u0433\\u043e\\u0432 \\u043f\\u0440\\u043e\\u0437\\u043e\\u0440\\u0435\\u0446 \\u0437\\u0430 \\u043f\\u043e\\u043c\\u043e\\u0449\",\n\"history\": \"\\u0438\\u0441\\u0442\\u043e\\u0440\\u0438\\u044f\",\n\"styles\": \"\\u0441\\u0442\\u0438\\u043b\\u043e\\u0432\\u0435\",\n\"formatting\": \"\\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\\u0440\\u0430\\u043d\\u0435\",\n\"alignment\": \"\\u043f\\u043e\\u0434\\u0440\\u0430\\u0432\\u043d\\u044f\\u0432\\u0430\\u043d\\u0435\",\n\"indentation\": \"\\u043e\\u0442\\u0441\\u0442\\u044a\\u043f\",\n\"permanent pen\": \"\\u043f\\u043e\\u0441\\u0442\\u043e\\u044f\\u043d\\u043d\\u0430 \\u0445\\u0438\\u043c\\u0438\\u043a\\u0430\\u043b\\u043a\\u0430\",\n\"comments\": \"\\u043a\\u043e\\u043c\\u0435\\u043d\\u0442\\u0430\\u0440\\u0438\",\n\"Format Painter\": \"\\u041a\\u043e\\u043f\\u0438\\u0440\\u0430\\u043d\\u0435 \\u043d\\u0430 \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\\u0440\\u0430\\u043d\\u0435\\u0442\\u043e\",\n\"Insert\\/edit iframe\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u044f\\u043d\\u0435\\/\\u0440\\u0435\\u0434\\u0430\\u043a\\u0442\\u0438\\u0440\\u043d\\u0435 \\u043d\\u0430 iframe\",\n\"Capitalization\": \"\\u0413\\u043b\\u0430\\u0432\\u043d\\u0430 \\u0431\\u0443\\u043a\\u0432\\u0430\",\n\"lowercase\": \"\\u043c\\u0430\\u043b\\u043a\\u0438 \\u0431\\u0443\\u043a\\u0432\\u0438\",\n\"UPPERCASE\": \"\\u0413\\u041e\\u041b\\u0415\\u041c\\u0418 \\u0411\\u0423\\u041a\\u0412\\u0418\",\n\"Title Case\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u043d\\u0438 \\u0411\\u0443\\u043a\\u0432\\u0438\",\n\"Permanent Pen Properties\": \"\\u0421\\u0432\\u043e\\u0439\\u0441\\u0442\\u0432\\u0430 \\u043d\\u0430 \\u041f\\u0435\\u0440\\u043c\\u0430\\u043d\\u0435\\u043d\\u0442\\u043d\\u0438\\u044f \\u041c\\u0430\\u0440\\u043a\\u0435\\u0440\",\n\"Permanent pen properties...\": \"\\u0421\\u0432\\u043e\\u0439\\u0441\\u0442\\u0432\\u0430 \\u043d\\u0430 \\u043f\\u0435\\u0440\\u043c\\u0430\\u043d\\u0435\\u043d\\u0442\\u043d\\u0438\\u044f \\u043c\\u0430\\u0440\\u043a\\u0435\\u0440...\",\n\"Font\": \"\\u0428\\u0440\\u0438\\u0444\\u0442\",\n\"Size\": \"\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440\",\n\"More...\": \"\\u041e\\u0449\\u0435...\",\n\"Spellcheck Language\": \"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438 \\u041f\\u0440\\u0430\\u0432\\u043e\\u043f\\u0438\\u0441\\u0430\",\n\"Select...\": \"\\u0418\\u0437\\u0431\\u0435\\u0440\\u0438...\",\n\"Preferences\": \"\\u041f\\u0440\\u0435\\u0434\\u043f\\u043e\\u0447\\u0438\\u0442\\u0430\\u043d\\u0438\\u044f\",\n\"Yes\": \"\\u0414\\u0430\",\n\"No\": \"\\u041d\\u0435\",\n\"Keyboard Navigation\": \"\\u041d\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u044f \\u0441 \\u043a\\u043b\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u0430\",\n\"Version\": \"\\u0412\\u0435\\u0440\\u0441\\u0438\\u044f\",\n\"Anchor\": \"\\u041a\\u043e\\u0442\\u0432\\u0430 (\\u0432\\u0440\\u044a\\u0437\\u043a\\u0430 \\u0432 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\\u0430)\",\n\"Special character\": \"\\u0421\\u043f\\u0435\\u0446\\u0438\\u0430\\u043b\\u0435\\u043d \\u0437\\u043d\\u0430\\u043a\",\n\"Code sample\": \"\\u041f\\u0440\\u0438\\u043c\\u0435\\u0440\\u0435\\u043d \\u043a\\u043e\\u0434\",\n\"Color\": \"\\u0426\\u0432\\u044f\\u0442\",\n\"Emoticons\": \"\\u0415\\u043c\\u043e\\u0442\\u0438\\u043a\\u043e\\u043d\\u0438\",\n\"Document properties\": \"\\u0421\\u0432\\u043e\\u0439\\u0441\\u0442\\u0432\\u0430 \\u043d\\u0430 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\\u0430\",\n\"Image\": \"\\u041a\\u0430\\u0440\\u0442\\u0438\\u043d\\u043a\\u0430\",\n\"Insert link\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u044f\\u043d\\u0435 \\u043d\\u0430 \\u0445\\u0438\\u043f\\u0435\\u0440\\u0432\\u0440\\u044a\\u0437\\u043a\\u0430 (\\u043b\\u0438\\u043d\\u043a)\",\n\"Target\": \"\\u0426\\u0435\\u043b \\u0432 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\\u0430\",\n\"Link\": \"\\u0412\\u0440\\u044a\\u0437\\u043a\\u0430(\\u043b\\u0438\\u043d\\u043a)\",\n\"Poster\": \"\\u041f\\u043e\\u0441\\u0442\\u0435\\u0440\",\n\"Media\": \"\\u041c\\u0435\\u0434\\u0438\\u044f\",\n\"Print\": \"\\u041f\\u0435\\u0447\\u0430\\u0442\",\n\"Prev\": \"\\u041f\\u0440\\u0435\\u0434\\u0438\\u0448\\u0435\\u043d\",\n\"Find and replace\": \"\\u0422\\u044a\\u0440\\u0441\\u0435\\u043d\\u0435 \\u0438 \\u0437\\u0430\\u043c\\u044f\\u043d\\u0430\",\n\"Whole words\": \"\\u0421\\u0430\\u043c\\u043e \\u0446\\u0435\\u043b\\u0438 \\u0434\\u0443\\u043c\\u0438\",\n\"Spellcheck\": \"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u043a\\u0430 \\u043d\\u0430 \\u043f\\u0440\\u0430\\u0432\\u043e\\u043f\\u0438\\u0441\\u0430\",\n\"Caption\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u044f\\u043d\\u0435 \\u043d\\u0430 \\u0437\\u0430\\u0433\\u043b\\u0430\\u0432\\u0438\\u0435 \\u043f\\u0440\\u0435\\u0434\\u0438 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u0430\\u0442\\u0430\",\n\"Insert template\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u044f\\u043d\\u0435 \\u043d\\u0430 \\u0448\\u0430\\u0431\\u043b\\u043e\\u043d\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/bn_BD.js",
    "content": "tinymce.addI18n('bn_BD',{\n\"Redo\": \"\\u09aa\\u09c1\\u09a8\\u09b0\\u09be\\u09af\\u09bc \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Undo\": \"\\u09aa\\u09c2\\u09b0\\u09cd\\u09ac\\u09be\\u09ac\\u09b8\\u09cd\\u09a5\\u09be\\u09af\\u09bc \\u09ab\\u09bf\\u09b0\\u09c1\\u09a8\",\n\"Cut\": \"\\u0995\\u09b0\\u09cd\\u09a4\\u09a8\",\n\"Copy\": \"\\u0985\\u09a8\\u09c1\\u0995\\u09b0\\u09a3\",\n\"Paste\": \"\\u09aa\\u09cd\\u09b0\\u09a4\\u09bf\\u09b2\\u09c7\\u09aa\\u09a8 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Select all\": \"\\u09b8\\u09ac \\u09a8\\u09bf\\u09b0\\u09cd\\u09ac\\u09be\\u099a\\u09a8 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"New document\": \"\\u09a8\\u09a4\\u09c1\\u09a8 \\u09a6\\u09b8\\u09cd\\u09a4\\u09be\\u09ac\\u09c7\\u099c\",\n\"Ok\": \"\\u09a0\\u09bf\\u0995 \\u0986\\u099b\\u09c7\",\n\"Cancel\": \"\\u09ac\\u09be\\u09a4\\u09bf\\u09b2\",\n\"Visual aids\": \"\\u09ac\\u09cd\\u09af\\u09be\\u0996\\u09cd\\u09af\\u09be\\u09ae\\u09c2\\u09b2\\u0995 \\u09b8\\u09be\\u09b9\\u09be\\u09af\\u09cd\\u09af\",\n\"Bold\": \"\\u09b8\\u09cd\\u09a5\\u09c2\\u09b2\",\n\"Italic\": \"\\u09a4\\u09bf\\u09b0\\u09cd\\u09af\\u0995\",\n\"Underline\": \"\\u09a8\\u09bf\\u09ae\\u09cd\\u09a8\\u09b0\\u09c7\\u0996\\u09be\",\n\"Strikethrough\": \"\\u09b8\\u09cd\\u099f\\u09cd\\u09b0\\u09be\\u0987\\u0995\\u09a5\\u09cd\\u09b0\\u09c1\",\n\"Superscript\": \"\\u098a\\u09b0\\u09cd\\u09a7\\u09cd\\u09ac\\u09b2\\u09bf\\u09aa\\u09bf\",\n\"Subscript\": \"\\u09a8\\u09bf\\u09ae\\u09cd\\u09a8\\u09b2\\u09bf\\u09aa\\u09bf\",\n\"Clear formatting\": \"\\u09ac\\u09bf\\u09a8\\u09cd\\u09af\\u09be\\u09b8 \\u0985\\u09aa\\u09b8\\u09be\\u09b0\\u09a3\",\n\"Align left\": \"\\u09ac\\u09be\\u09ae\\u09c7 \\u09b8\\u09be\\u09b0\\u09bf\\u0995\\u09b0\\u09a3\",\n\"Align center\": \"\\u09ae\\u09a7\\u09cd\\u09af\\u09b8\\u09cd\\u09a5\\u09be\\u09a8\\u09c7 \\u09b8\\u09be\\u09b0\\u09bf\\u0995\\u09b0\\u09a3\",\n\"Align right\": \"\\u09a1\\u09be\\u09a8\\u09c7 \\u09b8\\u09be\\u09b0\\u09bf\\u0995\\u09b0\\u09a3\",\n\"Justify\": \"\\u0989\\u09ad\\u09af\\u09bc\\u09aa\\u09cd\\u09b0\\u09be\\u09a8\\u09cd\\u09a4\\u09c7 \\u09b8\\u09ae\\u09be\\u09a8 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Bullet list\": \"\\u09ac\\u09c1\\u09b2\\u09c7\\u099f \\u09a4\\u09be\\u09b2\\u09bf\\u0995\\u09be\",\n\"Numbered list\": \"\\u09b8\\u0982\\u0996\\u09cd\\u09af\\u09be\\u09af\\u09c1\\u0995\\u09cd\\u09a4 \\u09a4\\u09be\\u09b2\\u09bf\\u0995\\u09be\",\n\"Decrease indent\": \"\\u0987\\u09a8\\u09cd\\u09a1\\u09c7\\u09a8\\u09cd\\u099f \\u0995\\u09ae\\u09be\\u09a8\",\n\"Increase indent\": \"\\u0987\\u09a8\\u09cd\\u09a1\\u09c7\\u09a8\\u09cd\\u099f \\u09ac\\u09be\\u09a1\\u09bc\\u09be\\u09a8\",\n\"Close\": \"\\u09ac\\u09a8\\u09cd\\u09a7\",\n\"Formats\": \"\\u09ac\\u09bf\\u09a8\\u09cd\\u09af\\u09be\\u09b8\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u0986\\u09aa\\u09a8\\u09be\\u09b0 \\u09ac\\u09cd\\u09b0\\u09be\\u0989\\u099c\\u09be\\u09b0 \\u0995\\u09cd\\u09b2\\u09bf\\u09aa\\u09ac\\u09cb\\u09b0\\u09cd\\u09a1 \\u09a5\\u09c7\\u0995\\u09c7 \\u09b8\\u09b0\\u09be\\u09b8\\u09b0\\u09bf \\u09aa\\u09cd\\u09b0\\u09ac\\u09c7\\u09b6\\u09be\\u09a7\\u09bf\\u0995\\u09be\\u09b0 \\u09b8\\u09ae\\u09b0\\u09cd\\u09a5\\u09a8 \\u0995\\u09b0\\u09c7 \\u09a8\\u09be\\u0964 \\u0985\\u09a8\\u09c1\\u0997\\u09cd\\u09b0\\u09b9 \\u0995\\u09b0\\u09c7 \\u0995\\u09c0\\u09ac\\u09cb\\u09b0\\u09cd\\u09a1 \\u09b6\\u09b0\\u09cd\\u099f\\u0995\\u09be\\u099f Ctrl +X\\/C\\/V \\u09ac\\u09cd\\u09af\\u09ac\\u09b9\\u09be\\u09b0 \\u0995\\u09b0\\u09c1\\u09a8\\u0964\",\n\"Headers\": \"\\u09b9\\u09c7\\u09a1\\u09be\\u09b0 \\u09b8\\u09ae\\u09c1\\u09b9\",\n\"Header 1\": \"\\u09b9\\u09c7\\u09a1\\u09be\\u09b0 \\u09e7\",\n\"Header 2\": \"\\u09b9\\u09c7\\u09a1\\u09be\\u09b0 \\u09e8\",\n\"Header 3\": \"\\u09b9\\u09c7\\u09a1\\u09be\\u09b0 \\u09e9\",\n\"Header 4\": \"\\u09b9\\u09c7\\u09a1\\u09be\\u09b0 \\u09ea\",\n\"Header 5\": \"\\u09b9\\u09c7\\u09a1\\u09be\\u09b0 \\u09eb\",\n\"Header 6\": \"\\u09b9\\u09c7\\u09a1\\u09be\\u09b0 \\u09ec\",\n\"Headings\": \"\\u09b6\\u09bf\\u09b0\\u09cb\\u09a8\\u09be\\u09ae\",\n\"Heading 1\": \"\\u09b6\\u09bf\\u09b0\\u09cb\\u09a8\\u09be\\u09ae \\u09e7\",\n\"Heading 2\": \"\\u09b6\\u09bf\\u09b0\\u09cb\\u09a8\\u09be\\u09ae \\u09e8\",\n\"Heading 3\": \"\\u09b6\\u09bf\\u09b0\\u09cb\\u09a8\\u09be\\u09ae \\u09e9\",\n\"Heading 4\": \"\\u09b6\\u09bf\\u09b0\\u09cb\\u09a8\\u09be\\u09ae \\u09ea\",\n\"Heading 5\": \"\\u09b6\\u09bf\\u09b0\\u09cb\\u09a8\\u09be\\u09ae \\u09eb\",\n\"Heading 6\": \"\\u09b6\\u09bf\\u09b0\\u09cb\\u09a8\\u09be\\u09ae \\u09ec\",\n\"Preformatted\": \"\\u09aa\\u09c2\\u09b0\\u09cd\\u09ac\\u09ac\\u09bf\\u09a8\\u09cd\\u09af\\u09be\\u09b8\\u09bf\\u09a4\",\n\"Div\": \"\\u09a1\\u09bf\\u09ad\",\n\"Pre\": \"\\u09aa\\u09cd\\u09b0\\u09be\\u0995\",\n\"Code\": \"\\u09b8\\u0982\\u0995\\u09c7\\u09a4\\u09b2\\u09bf\\u09aa\\u09bf\",\n\"Paragraph\": \"\\u09aa\\u09cd\\u09af\\u09be\\u09b0\\u09be\\u0997\\u09cd\\u09b0\\u09be\\u09ab\",\n\"Blockquote\": \"\\u09ac\\u09cd\\u09b2\\u0995\\u0995\\u09cb\\u099f\",\n\"Inline\": \"\\u09b8\\u0999\\u09cd\\u0997\\u09a4\\u09bf\\u09aa\\u09c2\\u09b0\\u09cd\\u09a3\\u09ad\\u09be\\u09ac\\u09c7\",\n\"Blocks\": \"\\u09b8\\u09cd\\u09a5\\u09c2\\u09b2 \",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u09aa\\u09c7\\u09b8\\u09cd\\u099f \\u098f\\u0996\\u09a8 \\u09aa\\u09cd\\u09b2\\u09c7\\u0987\\u09a8 \\u099f\\u09c7\\u0995\\u09cd\\u09b8\\u099f \\u09ae\\u09cb\\u09a1\\u09c7\\u0964 \\u0986\\u09aa\\u09a8\\u09bf \\u098f\\u0996\\u09a8 \\u098f\\u0987 \\u09ac\\u09bf\\u0995\\u09b2\\u09cd\\u09aa \\u09ac\\u09a8\\u09cd\\u09a7 \\u099f\\u0997\\u09b2 \\u09aa\\u09b0\\u09cd\\u09af\\u09a8\\u09cd\\u09a4 \\u09ac\\u09bf\\u09b7\\u09af\\u09bc\\u09ac\\u09b8\\u09cd\\u09a4\\u09c1 \\u098f\\u0996\\u09a8 \\u09aa\\u09cd\\u09b2\\u09c7\\u0987\\u09a8 \\u099f\\u09c7\\u0995\\u09cd\\u09b8\\u099f \\u09b9\\u09bf\\u09b8\\u09be\\u09ac\\u09c7 \\u0986\\u099f\\u0995\\u09be\\u09a8\\u09cb \\u09b9\\u09ac\\u09c7\\u0964\",\n\"Fonts\": \"\\u09ab\\u09a8\\u09cd\\u099f\\u09b8\",\n\"Font Sizes\": \"\\u09ab\\u09a8\\u09cd\\u099f \\u09ae\\u09be\\u09aa\",\n\"Class\": \"\\u0995\\u09cd\\u09b2\\u09be\\u09b8\",\n\"Browse for an image\": \"\\u098f\\u0995\\u099f\\u09bf \\u099b\\u09ac\\u09bf \\u09ac\\u09cd\\u09b0\\u09be\\u0989\\u099c \\u0995\\u09b0\\u09c1\\u09a8\",\n\"OR\": \"\\u0985\\u09a5\\u09ac\\u09be\",\n\"Drop an image here\": \"\\u098f\\u0996\\u09be\\u09a8\\u09c7 \\u098f\\u0995\\u099f\\u09bf \\u099b\\u09ac\\u09bf \\u09a1\\u09cd\\u09b0\\u09aa \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Upload\": \"\\u0986\\u09aa\\u09b2\\u09cb\\u09a1\",\n\"Block\": \"\\u09ac\\u09cd\\u09b2\\u0995\",\n\"Align\": \"\\u09ac\\u09bf\\u09a8\\u09cd\\u09af\\u09b8\\u09cd\\u09a4\\u0995\\u09b0\\u09c1\\u09a8\",\n\"Default\": \"\\u09a1\\u09bf\\u09ab\\u09b2\\u09cd\\u099f\",\n\"Circle\": \"\\u09ac\\u09c3\\u09a4\\u09cd\\u09a4\",\n\"Disc\": \"\\u09a1\\u09bf\\u09b8\\u09cd\\u0995\",\n\"Square\": \"\\u09ac\\u09b0\\u09cd\\u0997\\u0995\\u09cd\\u09b7\\u09c7\\u09a4\\u09cd\\u09b0\",\n\"Lower Alpha\": \"\\u09a8\\u09bf\\u09ae\\u09cd\\u09a8 \\u0986\\u09b2\\u09ab\\u09be\",\n\"Lower Greek\": \"\\u09a8\\u09bf\\u09ae\\u09cd\\u09a8 \\u0997\\u09cd\\u09b0\\u09bf\\u0995\",\n\"Lower Roman\": \"\\u09a8\\u09bf\\u09ae\\u09cd\\u09a8 \\u09b0\\u09cb\\u09ae\\u09be\\u09a8\",\n\"Upper Alpha\": \"\\u0989\\u099a\\u09cd\\u099a\\u09a4\\u09b0 \\u0986\\u09b2\\u09ab\\u09be\",\n\"Upper Roman\": \"\\u098a\\u09b0\\u09cd\\u09a7\\u09cd\\u09ac \\u09b0\\u09cb\\u09ae\\u09be\\u09a8\",\n\"Anchor...\": \"\\u098f\\u0999\\u09cd\\u0995\\u09b0...\",\n\"Name\": \"\\u09a8\\u09be\\u09ae\",\n\"Id\": \"\\u0986\\u0987\\u09a1\\u09bf\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"\\u0986\\u0987\\u09a1\\u09bf\\u099f\\u09bf \\u0985\\u0995\\u09cd\\u09b7\\u09b0, \\u09b8\\u0982\\u0996\\u09cd\\u09af\\u09be, \\u09a1\\u09cd\\u09af\\u09be\\u09b6, \\u09a1\\u099f\\u09b8, \\u0995\\u09b2\\u09cb\\u09a8 \\u09ac\\u09be \\u0986\\u09a8\\u09cd\\u09a1\\u09be\\u09b0\\u09b8\\u09cd\\u0995\\u09cb\\u09b0 \\u09a6\\u09cd\\u09ac\\u09be\\u09b0\\u09be \\u0985\\u09a8\\u09c1\\u09b8\\u09b0\\u09a3 \\u0995\\u09b0\\u09be \\u098f\\u0995\\u099f\\u09bf \\u099a\\u09bf\\u09a0\\u09bf \\u09a6\\u09bf\\u09af\\u09bc\\u09c7 \\u09b6\\u09c1\\u09b0\\u09c1 \\u0995\\u09b0\\u09be \\u0989\\u099a\\u09bf\\u09a4\\u0964\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u0986\\u09aa\\u09a8\\u09be\\u09b0 \\u0985\\u09b8\\u0982\\u09b0\\u0995\\u09cd\\u09b7\\u09bf\\u09a4 \\u09aa\\u09b0\\u09bf\\u09ac\\u09b0\\u09cd\\u09a4\\u09a8\\u0997\\u09c1\\u09b2\\u09bf \\u0986\\u09aa\\u09a8\\u09bf \\u0995\\u09bf \\u09a8\\u09bf\\u09b6\\u09cd\\u099a\\u09bf\\u09a4 \\u09af\\u09c7 \\u0986\\u09aa\\u09a8\\u09bf \\u09a8\\u09c7\\u09ad\\u09bf\\u0997\\u09c7\\u099f \\u0995\\u09b0\\u09a4\\u09c7 \\u099a\\u09be\\u09a8?\",\n\"Restore last draft\": \"\\u09b6\\u09c7\\u09b7 \\u0996\\u09b8\\u09a1\\u09bc\\u09be\\u099f\\u09bf \\u09aa\\u09c1\\u09a8\\u09b0\\u09c1\\u09a6\\u09cd\\u09a7\\u09be\\u09b0 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Special character...\": \"\\u09ac\\u09bf\\u09b6\\u09c7\\u09b7 \\u09ac\\u09b0\\u09cd\\u09a3...\",\n\"Source code\": \"\\u09b8\\u09cb\\u09b0\\u09cd\\u09b8 \\u0995\\u09cb\\u09a1\",\n\"Insert\\/Edit code sample\": \"\\u0995\\u09cb\\u09a1 \\u09a8\\u09ae\\u09c1\\u09a8\\u09be \\u09a2\\u09cb\\u0995\\u09be\\u09a8 \\/ \\u09b8\\u09ae\\u09cd\\u09aa\\u09be\\u09a6\\u09a8\\u09be \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Language\": \"\\u09ad\\u09be\\u09b7\\u09be\",\n\"Code sample...\": \"\\u09a8\\u09ae\\u09c1\\u09a8\\u09be \\u0995\\u09cb\\u09a1\",\n\"Color Picker\": \"\\u09b0\\u0999 \\u099a\\u09af\\u09bc\\u09a8\\u0995\\u09be\\u09b0\\u09c0\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"\\u09ac\\u09be\\u09ae \\u09a5\\u09c7\\u0995\\u09c7 \\u09a1\\u09be\\u09a8\",\n\"Right to left\": \"\\u09a1\\u09be\\u09a8 \\u09a5\\u09c7\\u0995\\u09c7 \\u09ac\\u09be\\u09ae\",\n\"Emoticons...\": \"\\u0987\\u09ae\\u09cb\\u099f\\u09bf\\u0995\\u09a8\",\n\"Metadata and Document Properties\": \"\\u09ae\\u09c7\\u099f\\u09be\\u09a1\\u09c7\\u099f\\u09be \\u098f\\u09ac\\u0982 \\u09a1\\u0995\\u09c1\\u09ae\\u09c7\\u09a8\\u09cd\\u099f\\u09c7\\u09b0 \\u09ac\\u09c8\\u09b6\\u09bf\\u09b7\\u09cd\\u099f\\u09cd\\u09af\",\n\"Title\": \"\\u09b6\\u09bf\\u09b0\\u09cb\\u09a8\\u09be\\u09ae\",\n\"Keywords\": \"\\u0995\\u09c0\\u0993\\u09af\\u09bc\\u09be\\u09b0\\u09cd\\u09a1\",\n\"Description\": \"\\u09ac\\u09bf\\u09ac\\u09b0\\u09a3\",\n\"Robots\": \"\\u09b0\\u09cb\\u09ac\\u099f\",\n\"Author\": \"\\u09b2\\u09c7\\u0996\\u0995\",\n\"Encoding\": \"\\u098f\\u09a8\\u0995\\u09cb\\u09a1\\u09bf\\u0982\",\n\"Fullscreen\": \"\\u09aa\\u09c2\\u09b0\\u09cd\\u09a3 \\u09aa\\u09b0\\u09cd\\u09a6\\u09be\",\n\"Action\": \"\\u0995\\u09b0\\u09cd\\u09ae\",\n\"Shortcut\": \"\\u09b6\\u09b0\\u09cd\\u099f\\u0995\\u09be\\u099f\",\n\"Help\": \"\\u09b8\\u09be\\u09b9\\u09be\\u09af\\u09cd\\u09af \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Address\": \"\\u09a0\\u09bf\\u0995\\u09be\\u09a8\\u09be\",\n\"Focus to menubar\": \"\\u09ae\\u09c7\\u09a8\\u09c1\\u09ac\\u09be\\u09b0\\u09c7 \\u09ab\\u09cb\\u0995\\u09be\\u09b8 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Focus to toolbar\": \"\\u099f\\u09c1\\u09b2\\u09ac\\u09be\\u09b0\\u09c7 \\u09ab\\u09cb\\u0995\\u09be\\u09b8 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Focus to element path\": \"\\u0989\\u09aa\\u09be\\u09a6\\u09be\\u09a8 \\u09aa\\u09be\\u09a5 \\u09ab\\u09cb\\u0995\\u09be\\u09b8 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Focus to contextual toolbar\": \"\\u09aa\\u09cd\\u09b0\\u09be\\u09b8\\u0999\\u09cd\\u0997\\u09bf\\u0995 \\u099f\\u09c1\\u09b2\\u09ac\\u09be\\u09b0\\u09c7 \\u09ab\\u09cb\\u0995\\u09be\\u09b8 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Insert link (if link plugin activated)\": \"\\u09b2\\u09bf\\u0999\\u09cd\\u0995 \\u09b8\\u09a8\\u09cd\\u09a8\\u09bf\\u09ac\\u09c7\\u09b6 \\u0995\\u09b0\\u09c1\\u09a8 (\\u09af\\u09a6\\u09bf \\u09b2\\u09bf\\u0999\\u09cd\\u0995 \\u09aa\\u09cd\\u09b2\\u09be\\u0997\\u0987\\u09a8 \\u0985\\u09cd\\u09af\\u09be\\u0995\\u09cd\\u099f\\u09bf\\u09ad\\u09c7\\u099f \\u0995\\u09b0\\u09be \\u09b9\\u09af\\u09bc)\",\n\"Save (if save plugin activated)\": \"\\u09b8\\u0982\\u09b0\\u0995\\u09cd\\u09b7\\u09a3 \\u0995\\u09b0\\u09c1\\u09a8 (\\u09aa\\u09cd\\u09b2\\u09be\\u0997\\u0987\\u09a8 \\u0985\\u09cd\\u09af\\u09be\\u0995\\u09cd\\u099f\\u09bf\\u09ad\\u09c7\\u099f \\u09b9\\u09b2\\u09c7)\",\n\"Find (if searchreplace plugin activated)\": \"\\u09b8\\u09a8\\u09cd\\u09a7\\u09be\\u09a8 \\u0995\\u09b0\\u09c1\\u09a8 (\\u09af\\u09a6\\u09bf \\u0985\\u09a8\\u09c1\\u09b8\\u09a8\\u09cd\\u09a7\\u09be\\u09a8\\u09af\\u09cb\\u0997\\u09cd\\u09af \\u09aa\\u09cd\\u09b2\\u09be\\u0997\\u0987\\u09a8 \\u09b8\\u0995\\u09cd\\u09b0\\u09bf\\u09af\\u09bc \\u0995\\u09b0\\u09be \\u09b9\\u09af\\u09bc)\",\n\"Plugins installed ({0}):\": \"\\u09aa\\u09cd\\u09b2\\u09be\\u0997\\u0987\\u09a8 \\u0987\\u09a8\\u09b8\\u09cd\\u099f\\u09b2 ({0}):\",\n\"Premium plugins:\": \"\\u09aa\\u09cd\\u09b0\\u09bf\\u09ae\\u09bf\\u09af\\u09bc\\u09be\\u09ae \\u09aa\\u09cd\\u09b2\\u09be\\u0997\\u0987\\u09a8:\",\n\"Learn more...\": \"\\u0986\\u09b0\\u0993 \\u099c\\u09be\\u09a8\\u09c1\\u09a8...\",\n\"You are using {0}\": \"\\u0986\\u09aa\\u09a8\\u09bf \\u09ac\\u09cd\\u09af\\u09ac\\u09b9\\u09be\\u09b0 \\u0995\\u09b0\\u099b\\u09c7\\u09a8 {0}\",\n\"Plugins\": \"\\u09aa\\u09cd\\u09b2\\u09be\\u0997\\u0987\\u09a8\",\n\"Handy Shortcuts\": \"\\u09b8\\u09b9\\u099c \\u09b6\\u09b0\\u09cd\\u099f\\u0995\\u09be\\u099f \",\n\"Horizontal line\": \"\\u0985\\u09a8\\u09c1\\u09ad\\u09c2\\u09ae\\u09bf\\u0995 \\u09b0\\u09c7\\u0996\\u09be\",\n\"Insert\\/edit image\": \"\\u0987\\u09ae\\u09c7\\u099c \\u09b8\\u09a8\\u09cd\\u09a8\\u09bf\\u09ac\\u09c7\\u09b6 \\/ \\u09b8\\u09ae\\u09cd\\u09aa\\u09be\\u09a6\\u09a8\\u09be \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Image description\": \"\\u099b\\u09ac\\u09bf\\u09b0 \\u09ac\\u09b0\\u09cd\\u09a3\\u09a8\\u09be\",\n\"Source\": \"\\u0989\\u09ce\\u09b8\",\n\"Dimensions\": \"\\u09ae\\u09be\\u09a4\\u09cd\\u09b0\\u09be\",\n\"Constrain proportions\": \"\\u0985\\u09a8\\u09c1\\u09aa\\u09be\\u09a4 \\u09b8\\u09c0\\u09ae\\u09be\\u09ac\\u09a6\\u09cd\\u09a7\",\n\"General\": \"\\u09b8\\u09be\\u09a7\\u09be\\u09b0\\u09a3\",\n\"Advanced\": \"\\u0985\\u0997\\u09cd\\u09b0\\u09b8\\u09b0\",\n\"Style\": \"\\u09b6\\u09c8\\u09b2\\u09c0\",\n\"Vertical space\": \"\\u0989\\u09b2\\u09cd\\u09b2\\u09ae\\u09cd\\u09ac \\u09b8\\u09cd\\u09a5\\u09be\\u09a8\",\n\"Horizontal space\": \"\\u0985\\u09a8\\u09c1\\u09ad\\u09c2\\u09ae\\u09bf\\u0995 \\u09b8\\u09cd\\u09a5\\u09be\\u09a8\",\n\"Border\": \"\\u09b8\\u09c0\\u09ae\\u09be\\u09a8\\u09cd\\u09a4\",\n\"Insert image\": \"\\u099a\\u09bf\\u09a4\\u09cd\\u09b0 \\u09a2\\u09cb\\u0995\\u09be\\u09a8\",\n\"Image...\": \"\\u0987\\u09ae\\u09c7\\u099c...\",\n\"Image list\": \"\\u099a\\u09bf\\u09a4\\u09cd\\u09b0 \\u09a4\\u09be\\u09b2\\u09bf\\u0995\\u09be\",\n\"Rotate counterclockwise\": \"\\u09ac\\u09be\\u09ae\\u09be\\u09ac\\u09b0\\u09cd\\u09a4\\u09c7 \\u0998\\u09cb\\u09b0\\u09be\\u09a4\\u09c7\",\n\"Rotate clockwise\": \"\\u0998\\u09a1\\u09bc\\u09bf\\u09b0 \\u0995\\u09be\\u0981\\u099f\\u09be\\u09b0 \\u09a6\\u09bf\\u0995\\u09c7 \\u0998\\u09cb\\u09b0\\u09be\\u09a8\",\n\"Flip vertically\": \"\\u0989\\u09b2\\u09cd\\u09b2\\u09ae\\u09cd\\u09ac\\u09ad\\u09be\\u09ac\\u09c7 \\u09ab\\u09cd\\u09b2\\u09bf\\u09aa \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Flip horizontally\": \"\\u0985\\u09a8\\u09c1\\u09ad\\u09c2\\u09ae\\u09bf\\u0995\\u09ad\\u09be\\u09ac\\u09c7 \\u09ab\\u09cd\\u09b2\\u09bf\\u09aa \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Edit image\": \"\\u099a\\u09bf\\u09a4\\u09cd\\u09b0 \\u09b8\\u09ae\\u09cd\\u09aa\\u09be\\u09a6\\u09a8\\u09be \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Image options\": \"\\u099a\\u09bf\\u09a4\\u09cd\\u09b0 \\u09ac\\u09bf\\u0995\\u09b2\\u09cd\\u09aa\\u0997\\u09c1\\u09b2\\u09bf\",\n\"Zoom in\": \"\\u09aa\\u09cd\\u09b0\\u09b8\\u09be\\u09b0\\u09bf\\u09a4 \\u0995\\u09b0\\u09cb\",\n\"Zoom out\": \"\\u099b\\u09cb\\u099f \\u0995\\u09b0\\u09be\",\n\"Crop\": \"\\u0995\\u09be\\u099f\\u09be\",\n\"Resize\": \"\\u09ae\\u09be\\u09aa \\u09aa\\u09b0\\u09bf\\u09ac\\u09b0\\u09cd\\u09a4\\u09a8 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Orientation\": \"\\u099d\\u09cb\\u0981\\u0995\",\n\"Brightness\": \"\\u0989\\u099c\\u09cd\\u099c\\u09cd\\u09ac\\u09b2\\u09a4\\u09be\",\n\"Sharpen\": \"\\u09a7\\u09be\\u09b0 \\u0995\\u09b0\\u09be\",\n\"Contrast\": \"\\u09ac\\u09bf\\u09aa\\u09b0\\u09c0\\u09a4 \\u09b9\\u09a4\\u09cd\\u09a4\\u09af\\u09bc\\u09be\",\n\"Color levels\": \"\\u09b0\\u0999\\u09c7\\u09b0 \\u09ae\\u09be\\u09a4\\u09cd\\u09b0\\u09be\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"\\u09ac\\u09bf\\u09a8\\u09b7\\u09cd\\u099f \\u0995\\u09b0\\u09be\",\n\"Apply\": \"\\u09aa\\u09cd\\u09b0\\u09af\\u09bc\\u09cb\\u0997 \\u0995\\u09b0\\u09be\",\n\"Back\": \"\\u09aa\\u09bf\\u099b\\u09a8\\u09c7\",\n\"Insert date\\/time\": \"\\u09a4\\u09be\\u09b0\\u09bf\\u0996 \\/ \\u09b8\\u09ae\\u09af\\u09bc \\u09b8\\u09a8\\u09cd\\u09a8\\u09bf\\u09ac\\u09c7\\u09b6 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Date\\/time\": \"\\u09a4\\u09be\\u09b0\\u09bf\\u0996 \\/ \\u09b8\\u09ae\\u09af\\u09bc\",\n\"Insert\\/Edit Link\": \"\\u09b8\\u09a8\\u09cd\\u09a8\\u09bf\\u09ac\\u09c7\\u09b6\\/\\u09b8\\u09ae\\u09cd\\u09aa\\u09be\\u09a6\\u09a8\\u09be \\u09b2\\u09bf\\u0999\\u09cd\\u0995\",\n\"Insert\\/edit link\": \"\\u09b8\\u09a8\\u09cd\\u09a8\\u09bf\\u09ac\\u09c7\\u09b6 \\/ \\u09b8\\u09ae\\u09cd\\u09aa\\u09be\\u09a6\\u09a8\\u09be \\u09b2\\u09bf\\u0999\\u09cd\\u0995\",\n\"Text to display\": \"\\u09aa\\u09cd\\u09b0\\u09a6\\u09b0\\u09cd\\u09b6\\u09a8 \\u099f\\u09c7\\u0995\\u09cd\\u09b8\\u099f\",\n\"Url\": \"URL\",\n\"Open link in...\": \"\\u09b2\\u09bf\\u0999\\u09cd\\u0995\\u099f\\u09bf \\u0996\\u09c1\\u09b2\\u09c1\\u09a8...\",\n\"Current window\": \"\\u09ac\\u09b0\\u09cd\\u09a4\\u09ae\\u09be\\u09a8 \\u0989\\u0987\\u09a8\\u09cd\\u09a1\\u09cb\",\n\"None\": \"\\u09a8\\u09be\",\n\"New window\": \"\\u09a8\\u09a4\\u09c1\\u09a8 \\u0989\\u0987\\u09a8\\u09cd\\u09a1\\u09cb\",\n\"Remove link\": \"\\u09b2\\u09bf\\u0999\\u09cd\\u0995 \\u09b8\\u09b0\\u09be\\u09a8\",\n\"Anchors\": \"\\u09a8\\u09cb\\u0999\\u09cd\\u0997\\u09b0\",\n\"Link...\": \"\\u09b2\\u09bf\\u0982\\u0995...\",\n\"Paste or type a link\": \"\\u098f\\u0995\\u099f\\u09bf \\u09b2\\u09bf\\u0999\\u09cd\\u0995 \\u0986\\u099f\\u0995\\u09be\\u09a8 \\u09ac\\u09be \\u099f\\u09be\\u0987\\u09aa \\u0995\\u09b0\\u09c1\\u09a8\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u0986\\u09aa\\u09a8\\u09be\\u09b0 \\u09aa\\u09cd\\u09b0\\u09ac\\u09c7\\u09b6 \\u0995\\u09b0\\u09be URL\\u099f\\u09bf \\u098f\\u0995\\u099f\\u09bf \\u0987\\u09ae\\u09c7\\u09b2 \\u09a0\\u09bf\\u0995\\u09be\\u09a8\\u09be \\u09ac\\u09b2\\u09c7 \\u09ae\\u09a8\\u09c7 \\u09b9\\u099a\\u09cd\\u099b\\u09c7\\u0964 \\u0986\\u09aa\\u09a8\\u09bf \\u09aa\\u09cd\\u09b0\\u09af\\u09bc\\u09cb\\u099c\\u09a8\\u09c0\\u09af\\u09bc \\u09ae\\u09c7\\u0987\\u09b2\\u099f\\u09cb \\u09af\\u09cb\\u0997 \\u0995\\u09b0\\u09a4\\u09c7 \\u099a\\u09be\\u09a8: \\u0989\\u09aa\\u09b8\\u09b0\\u09cd\\u0997?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u0986\\u09aa\\u09a8\\u09be\\u09b0 \\u09aa\\u09cd\\u09b0\\u09ac\\u09c7\\u09b6 \\u0995\\u09b0\\u09be URL\\u099f\\u09bf \\u098f\\u0995\\u099f\\u09bf \\u09ac\\u09b9\\u09bf\\u09b0\\u09be\\u0997\\u09a4 \\u09b2\\u09bf\\u0999\\u09cd\\u0995 \\u09ac\\u09b2\\u09c7 \\u09ae\\u09a8\\u09c7 \\u09b9\\u099a\\u09cd\\u099b\\u09c7\\u0964 \\u0986\\u09aa\\u09a8\\u09bf \\u0995\\u09bf \\u09aa\\u09cd\\u09b0\\u09af\\u09bc\\u09cb\\u099c\\u09a8\\u09c0\\u09af\\u09bc http:\\/\\/ \\u09aa\\u09cd\\u09b0\\u09bf\\u09ab\\u09bf\\u0995\\u09cd\\u09b8 \\u09af\\u09cb\\u0997 \\u0995\\u09b0\\u09a4\\u09c7 \\u099a\\u09be\\u09a8?\",\n\"Link list\": \"\\u09b2\\u09bf\\u0999\\u09cd\\u0995 \\u09a4\\u09be\\u09b2\\u09bf\\u0995\\u09be\",\n\"Insert video\": \"\\u09ad\\u09bf\\u09a1\\u09bf\\u0993 \\u09a2\\u09cb\\u0995\\u09be\\u09a8\",\n\"Insert\\/edit video\": \"\\u09ad\\u09bf\\u09a1\\u09bf\\u0993 \\u09b8\\u09a8\\u09cd\\u09a8\\u09bf\\u09ac\\u09c7\\u09b6 \\/ \\u09b8\\u09ae\\u09cd\\u09aa\\u09be\\u09a6\\u09a8\\u09be \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Insert\\/edit media\": \"\\u09ae\\u09bf\\u09a1\\u09bf\\u09af\\u09bc\\u09be \\u09b8\\u09a8\\u09cd\\u09a8\\u09bf\\u09ac\\u09c7\\u09b6 \\u0995\\u09b0\\u09c1\\u09a8 \\/ \\u09b8\\u09ae\\u09cd\\u09aa\\u09be\\u09a6\\u09a8\\u09be \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Alternative source\": \"\\u09ac\\u09bf\\u0995\\u09b2\\u09cd\\u09aa \\u0989\\u09ce\\u09b8\",\n\"Alternative source URL\": \"\\u09ac\\u09bf\\u0995\\u09b2\\u09cd\\u09aa \\u0989\\u09ce\\u09b8 \\u0987\\u0986\\u09b0\\u098f\\u09b2\",\n\"Media poster (Image URL)\": \"\\u09ae\\u09bf\\u09a1\\u09bf\\u09af\\u09bc\\u09be \\u09aa\\u09cb\\u09b8\\u09cd\\u099f\\u09be\\u09b0 (\\u0987\\u09ae\\u09c7\\u099c \\u0987\\u0989\\u0986\\u09b0\\u098f\\u09b2)\",\n\"Paste your embed code below:\": \"\\u09a8\\u09c0\\u099a\\u09c7\\u09b0 \\u0986\\u09aa\\u09a8\\u09be\\u09b0 \\u098f\\u09ae\\u09cd\\u09ac\\u09c7\\u09a1 \\u0995\\u09cb\\u09a1 \\u0986\\u099f\\u0995\\u09be\\u09a8:\",\n\"Embed\": \"\\u098f\\u09ae\\u09cd\\u09ac\\u09c7\\u09a1\",\n\"Media...\": \"\\u09ae\\u09bf\\u09a1\\u09bf\\u09af\\u09bc\\u09be...\",\n\"Nonbreaking space\": \"\\u0985\\u09ac\\u09bf\\u099a\\u09cd\\u099b\\u09bf\\u09a8\\u09cd\\u09a8 \\u09b8\\u09cd\\u09a5\\u09be\\u09a8\",\n\"Page break\": \"\\u09aa\\u09c3\\u09b7\\u09cd\\u09a0\\u09be \\u09ac\\u09bf\\u09b0\\u09a4\\u09bf\",\n\"Paste as text\": \"\\u09aa\\u09be\\u09a0\\u09cd\\u09af \\u09b9\\u09bf\\u09b8\\u09be\\u09ac\\u09c7 \\u09aa\\u09c7\\u09b8\\u09cd\\u099f \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Preview\": \"\\u09aa\\u09c2\\u09b0\\u09cd\\u09ac\\u09b0\\u09c2\\u09aa\",\n\"Print...\": \"\\u09ae\\u09c1\\u09a6\\u09cd\\u09b0\\u09a8...\",\n\"Save\": \"\\u09b8\\u0982\\u09b0\\u0995\\u09cd\\u09b7\\u09a3\",\n\"Find\": \"\\u0986\\u09ac\\u09bf\\u09b7\\u09cd\\u0995\\u09be\\u09b0\",\n\"Replace with\": \"\\u09aa\\u09cd\\u09b0\\u09a4\\u09bf\\u09b8\\u09cd\\u09a5\\u09be\\u09aa\\u09a8\",\n\"Replace\": \"\\u09aa\\u09cd\\u09b0\\u09a4\\u09bf\\u09b8\\u09cd\\u09a5\\u09be\\u09aa\\u09a8 \\u0995\\u09b0\\u09be\",\n\"Replace all\": \"\\u09b8\\u09ae\\u09b8\\u09cd\\u09a4 \\u09aa\\u09cd\\u09b0\\u09a4\\u09bf\\u09b8\\u09cd\\u09a5\\u09be\\u09aa\\u09a8\",\n\"Previous\": \"\\u09aa\\u09c2\\u09b0\\u09cd\\u09ac\\u09ac\\u09b0\\u09cd\\u09a4\\u09c0\",\n\"Next\": \"\\u09aa\\u09b0\\u09ac\\u09b0\\u09cd\\u09a4\\u09c0\",\n\"Find and replace...\": \"\\u0996\\u09c1\\u0981\\u099c\\u09c1\\u09a8 \\u0993 \\u09aa\\u09cd\\u09b0\\u09a4\\u09bf\\u09b8\\u09cd\\u09a5\\u09be\\u09aa\\u09a8 \\u0995\\u09b0\\u09c1\\u09a8...\",\n\"Could not find the specified string.\": \"\\u09a8\\u09bf\\u09b0\\u09cd\\u09a6\\u09bf\\u09b7\\u09cd\\u099f \\u09b8\\u09cd\\u099f\\u09cd\\u09b0\\u09bf\\u0982\\u099f\\u09bf \\u0996\\u09c1\\u0981\\u099c\\u09c7 \\u09aa\\u09be\\u0993\\u09af\\u09bc\\u09be \\u09af\\u09be\\u09af\\u09bc\\u09a8\\u09bf\\u0964\",\n\"Match case\": \"\\u09ae\\u09cd\\u09af\\u09be\\u099a \\u0995\\u09cd\\u09b7\\u09c7\\u09a4\\u09cd\\u09b0\\u09c7\",\n\"Find whole words only\": \"\\u09b6\\u09c1\\u09a7\\u09c1\\u09ae\\u09be\\u09a4\\u09cd\\u09b0 \\u09aa\\u09c1\\u09b0\\u09cb \\u09b6\\u09ac\\u09cd\\u09a6\\u0997\\u09c1\\u09b2\\u09bf \\u09b8\\u09a8\\u09cd\\u09a7\\u09be\\u09a8 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Spell check\": \"\\u09ac\\u09be\\u09a8\\u09be\\u09a8 \\u09af\\u09be\\u099a\\u09be\\u0987\",\n\"Ignore\": \"\\u0989\\u09aa\\u09c7\\u0995\\u09cd\\u09b7\\u09be \\u0995\\u09b0\\u09be\",\n\"Ignore all\": \"\\u09b8\\u09ac\\u0997\\u09c1\\u09b2\\u09cb \\u0989\\u09aa\\u09c7\\u0995\\u09cd\\u09b7\\u09be \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Finish\": \"\\u09b6\\u09c7\\u09b7\",\n\"Add to Dictionary\": \"\\u0985\\u09ad\\u09bf\\u09a7\\u09be\\u09a8 \\u09af\\u09cb\\u0997 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Insert table\": \"\\u099f\\u09c7\\u09ac\\u09bf\\u09b2 \\u09b8\\u09a8\\u09cd\\u09a8\\u09bf\\u09ac\\u09c7\\u09b6 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Table properties\": \"\\u099f\\u09c7\\u09ac\\u09bf\\u09b2 \\u09ac\\u09c8\\u09b6\\u09bf\\u09b7\\u09cd\\u099f\\u09cd\\u09af\",\n\"Delete table\": \"\\u09b8\\u09be\\u09b0\\u09a3\\u09bf \\u09ae\\u09c1\\u099b\\u09c1\\u09a8\",\n\"Cell\": \"\\u09b8\\u09c7\\u09b2\",\n\"Row\": \"\\u09b8\\u09be\\u09b0\\u09bf\",\n\"Column\": \"\\u0995\\u09b2\\u09be\\u09ae\",\n\"Cell properties\": \"\\u09b8\\u09c7\\u09b2 \\u09ac\\u09c8\\u09b6\\u09bf\\u09b7\\u09cd\\u099f\\u09cd\\u09af\",\n\"Merge cells\": \"\\u09b8\\u09c7\\u09b2 \\u09ae\\u09be\\u09b0\\u09cd\\u099c \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Split cell\": \"\\u09b8\\u09cd\\u09aa\\u09cd\\u09b2\\u09bf\\u099f \\u09b8\\u09c7\\u09b2\",\n\"Insert row before\": \"\\u0986\\u0997\\u09c7 \\u09b8\\u09be\\u09b0\\u09bf \\u09a2\\u09cb\\u0995\\u09be\\u09a8\",\n\"Insert row after\": \"\\u09aa\\u09b0\\u09c7 \\u09b8\\u09be\\u09b0\\u09bf \\u09a2\\u09cb\\u0995\\u09be\\u09a8\",\n\"Delete row\": \"\\u09b8\\u09be\\u09b0\\u09bf \\u09ae\\u09c1\\u099b\\u09c1\\u09a8\",\n\"Row properties\": \"\\u09b8\\u09be\\u09b0\\u09bf \\u09ac\\u09c8\\u09b6\\u09bf\\u09b7\\u09cd\\u099f\\u09cd\\u09af\",\n\"Cut row\": \"\\u09b8\\u09be\\u09b0\\u09bf \\u0995\\u09be\\u099f\\u09c1\\u09a8\",\n\"Copy row\": \"\\u09b8\\u09be\\u09b0\\u09bf \\u0985\\u09a8\\u09c1\\u09b2\\u09bf\\u09aa\\u09bf \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Paste row before\": \"\\u0986\\u0997\\u09c7 \\u09b8\\u09be\\u09b0\\u09bf \\u09aa\\u09c7\\u09b8\\u09cd\\u099f \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Paste row after\": \"\\u09aa\\u09b0\\u09c7 \\u09b8\\u09be\\u09b0\\u09bf \\u09aa\\u09c7\\u09b8\\u09cd\\u099f \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Insert column before\": \"\\u0986\\u0997\\u09c7 \\u0995\\u09b2\\u09be\\u09ae \\u09a2\\u09cb\\u0995\\u09be\\u09a8\",\n\"Insert column after\": \"\\u09aa\\u09b0\\u09c7 \\u0995\\u09b2\\u09be\\u09ae \\u09b8\\u09a8\\u09cd\\u09a8\\u09bf\\u09ac\\u09c7\\u09b6 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Delete column\": \"\\u0995\\u09b2\\u09be\\u09ae \\u09ae\\u09c1\\u099b\\u09c1\\u09a8\",\n\"Cols\": \"\\u0995\\u09b2\\u09be\\u09ae \\u0997\\u09c1\\u09b2\\u09cb\",\n\"Rows\": \"\\u09b8\\u09be\\u09b0\\u09bf\\u0997\\u09c1\\u09b2\\u09cb\",\n\"Width\": \"\\u09aa\\u09cd\\u09b0\\u09b8\\u09cd\\u09a5\",\n\"Height\": \"\\u0989\\u099a\\u09cd\\u099a\\u09a4\\u09be\",\n\"Cell spacing\": \"\\u09b8\\u09c7\\u09b2 \\u09ab\\u09be\\u0981\\u0995\\u09be\",\n\"Cell padding\": \"\\u09b8\\u09c7\\u09b2 \\u09aa\\u09cd\\u09af\\u09be\\u09a1\\u09bf\\u0982\",\n\"Show caption\": \"\\u0995\\u09cd\\u09af\\u09be\\u09aa\\u09b6\\u09a8 \\u09a6\\u09c7\\u0996\\u09be\\u09a8\",\n\"Left\": \"\\u09ac\\u09be\\u09ae\",\n\"Center\": \"\\u0995\\u09c7\\u09a8\\u09cd\\u09a6\\u09cd\\u09b0\",\n\"Right\": \"\\u09a1\\u09be\\u09a8\",\n\"Cell type\": \"\\u09b8\\u09c7\\u09b2 \\u099f\\u09be\\u0987\\u09aa\",\n\"Scope\": \"\\u09ac\\u09cd\\u09af\\u09be\\u09aa\\u09cd\\u09a4\\u09bf\",\n\"Alignment\": \"\\u09b6\\u09cd\\u09b0\\u09c7\\u09a3\\u09c0\\u09ac\\u09bf\\u09a8\\u09cd\\u09af\\u09be\\u09b8\",\n\"H Align\": \"H \\u09b8\\u09be\\u09b0\\u09bf\\u09ac\\u09a6\\u09cd\\u09a7\",\n\"V Align\": \"V \\u09b8\\u09be\\u09b0\\u09bf\\u09ac\\u09a6\\u09cd\\u09a7\",\n\"Top\": \"\\u0989\\u09aa\\u09b0\",\n\"Middle\": \"\\u09ae\\u09a7\\u09cd\\u09af\\u09ae\",\n\"Bottom\": \"\\u09a8\\u09bf\\u099a\\u09c7\",\n\"Header cell\": \"\\u09b9\\u09c7\\u09a1\\u09be\\u09b0 \\u09b8\\u09c7\\u09b2\",\n\"Row group\": \"\\u09b8\\u09be\\u09b0\\u09bf \\u0997\\u09cd\\u09b0\\u09c1\\u09aa\",\n\"Column group\": \"\\u0995\\u09b2\\u09be\\u09ae \\u0997\\u09cd\\u09b0\\u09c1\\u09aa\",\n\"Row type\": \"\\u09b8\\u09be\\u09b0\\u09bf\\u09b0 \\u09a7\\u09b0\\u09a8\",\n\"Header\": \"\\u09b9\\u09c7\\u09a1\\u09be\\u09b0\",\n\"Body\": \"\\u09ac\\u09a1\\u09bf\",\n\"Footer\": \"\\u09ab\\u09c1\\u099f\\u09be\\u09b0\",\n\"Border color\": \"\\u09b8\\u09c0\\u09ae\\u09be\\u09a8\\u09cd\\u09a4 \\u09b0\\u0999\",\n\"Insert template...\": \"\\u099f\\u09c7\\u09ae\\u09aa\\u09cd\\u09b2\\u09c7\\u099f \\u09a2\\u09cb\\u0995\\u09be\\u09a8...\",\n\"Templates\": \"\\u099f\\u09c7\\u09ae\\u09aa\\u09cd\\u09b2\\u09c7\\u099f\",\n\"Template\": \"\\u099f\\u09c7\\u09ae\\u09aa\\u09cd\\u09b2\\u09c7\\u099f\",\n\"Text color\": \"\\u09b2\\u09c7\\u0996\\u09be\\u09b0 \\u09b0\\u0999\",\n\"Background color\": \"\\u09aa\\u09c7\\u099b\\u09a8\\u09c7\\u09b0 \\u09b0\\u0982\",\n\"Custom...\": \"\\u0995\\u09be\\u09b8\\u09cd\\u099f\\u09ae...\",\n\"Custom color\": \"\\u0995\\u09be\\u09b8\\u09cd\\u099f\\u09ae \\u09b0\\u0982\",\n\"No color\": \"\\u0995\\u09cb\\u09a8 \\u09b0\\u0982 \\u09a8\\u09c7\\u0987\",\n\"Remove color\": \"\\u09b0\\u0999 \\u09b8\\u09b0\\u09be\\u09a8\",\n\"Table of Contents\": \"\\u09b8\\u09c1\\u099a\\u09bf\\u09aa\\u09a4\\u09cd\\u09b0\",\n\"Show blocks\": \"\\u09ac\\u09cd\\u09b2\\u0995 \\u09a6\\u09c7\\u0996\\u09be\\u09a8\",\n\"Show invisible characters\": \"\\u0985\\u09a6\\u09c3\\u09b6\\u09cd\\u09af \\u0985\\u0995\\u09cd\\u09b7\\u09b0 \\u09a6\\u09c7\\u0996\\u09be\\u09a8\",\n\"Word count\": \"\\u09b6\\u09ac\\u09cd\\u09a6 \\u0997\\u09a3\\u09a8\\u09be\",\n\"Count\": \"\\u0997\\u09a3\\u09a8\\u09be\",\n\"Document\": \"\\u09a6\\u09b2\\u09bf\\u09b2\",\n\"Selection\": \"\\u09a8\\u09bf\\u09b0\\u09cd\\u09ac\\u09be\\u099a\\u09a8\",\n\"Words\": \"\\u09b6\\u09ac\\u09cd\\u09a6\\u09b8\\u09ae\\u09c2\\u09b9\",\n\"Words: {0}\": \"\\u09b6\\u09ac\\u09cd\\u09a6: {0}\",\n\"{0} words\": \"{0} \\u09b6\\u09ac\\u09cd\\u09a6\",\n\"File\": \"\\u09ab\\u09be\\u0987\\u09b2\",\n\"Edit\": \"\\u09b8\\u09ae\\u09cd\\u09aa\\u09be\\u09a6\\u09a8 \\u0995\\u09b0\\u09be\",\n\"Insert\": \"\\u09b8\\u09a8\\u09cd\\u09a8\\u09bf\\u09ac\\u09c7\\u09b6\",\n\"View\": \"\\u09a6\\u09c3\\u09b6\\u09cd\\u09af\",\n\"Format\": \"\\u09ac\\u09bf\\u09a8\\u09cd\\u09af\\u09be\\u09b8\",\n\"Table\": \"\\u099f\\u09c7\\u09ac\\u09bf\\u09b2\",\n\"Tools\": \"\\u09b8\\u09b0\\u099e\\u09cd\\u099c\\u09be\\u09ae\\u09b8\\u09ae\\u09c2\\u09b9\",\n\"Powered by {0}\": \"{0} \\u09a6\\u09cd\\u09ac\\u09be\\u09b0\\u09be \\u099a\\u09be\\u09b2\\u09bf\\u09a4\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u09b0\\u09bf\\u099a \\u099f\\u09c7\\u0995\\u09cd\\u09b8\\u099f \\u098f\\u09b0\\u09bf\\u09af\\u09bc\\u09be \\u09ae\\u09c7\\u09a8\\u09c1 \\u099c\\u09a8\\u09cd\\u09af ALT-F9 \\u099a\\u09be\\u09aa\\u09c1\\u09a8 \\u099f\\u09c1\\u09b2\\u09ac\\u09be\\u09b0\\u09c7\\u09b0 \\u099c\\u09a8\\u09cd\\u09af ALT-F10 \\u099f\\u09bf\\u09aa\\u09c1\\u09a8 \\u09b8\\u09be\\u09b9\\u09be\\u09af\\u09cd\\u09af\\u09c7\\u09b0 \\u099c\\u09a8\\u09cd\\u09af ALT-0 \\u099a\\u09be\\u09aa\\u09c1\\u09a8\",\n\"Image title\": \"\\u0987\\u09ae\\u09c7\\u099c\\u09c7\\u09b0 \\u09b6\\u09bf\\u09b0\\u09cb\\u09a8\\u09be\\u09ae\",\n\"Border width\": \"\\u09b8\\u09c0\\u09ae\\u09be\\u09a8\\u09be\\u09b0 \\u09aa\\u09cd\\u09b0\\u09b6\\u09b8\\u09cd\\u09a5\\u09a4\\u09be\",\n\"Border style\": \"\\u09b8\\u09c0\\u09ae\\u09be\\u09a8\\u09be \\u09b6\\u09c8\\u09b2\\u09c0\",\n\"Error\": \"\\u09a4\\u09cd\\u09b0\\u09c1\\u099f\\u09bf\",\n\"Warn\": \"\\u09b8\\u09be\\u09ac\\u09a7\\u09be\\u09a8\",\n\"Valid\": \"\\u09ac\\u09c8\\u09a7\",\n\"To open the popup, press Shift+Enter\": \"\\u09aa\\u09aa\\u0986\\u09aa \\u0996\\u09c1\\u09b2\\u09a4\\u09c7, \\u09b6\\u09bf\\u09ab\\u099f + \\u098f\\u09a8\\u09cd\\u099f\\u09be\\u09b0 \\u099f\\u09bf\\u09aa\\u09c1\\u09a8\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u09b8\\u09ae\\u09c3\\u09a6\\u09cd\\u09a7 \\u09aa\\u09be\\u09a0\\u09cd\\u09af \\u0985\\u099e\\u09cd\\u099a\\u09b2\\u0964 \\u09b8\\u09b9\\u09be\\u09af\\u09bc\\u09a4\\u09be\\u09b0 \\u099c\\u09a8\\u09cd\\u09af ALT-0 \\u099f\\u09bf\\u09aa\\u09c1\\u09a8\\u0964\",\n\"System Font\": \"\\u09b8\\u09bf\\u09b8\\u09cd\\u099f\\u09c7\\u09ae \\u09ab\\u09a8\\u09cd\\u099f\",\n\"Failed to upload image: {0}\": \"\\u099a\\u09bf\\u09a4\\u09cd\\u09b0 \\u0986\\u09aa\\u09b2\\u09cb\\u09a1 \\u0995\\u09b0\\u09a4\\u09c7 \\u09ac\\u09cd\\u09af\\u09b0\\u09cd\\u09a5 \\u09b9\\u09df\\u09c7\\u099b\\u09c7: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u09aa\\u09cd\\u09b2\\u09be\\u0997\\u0987\\u09a8 \\u09b2\\u09cb\\u09a1 \\u0995\\u09b0\\u09a4\\u09c7 \\u09ac\\u09cd\\u09af\\u09b0\\u09cd\\u09a5: {0} \\u0987\\u0989\\u0986\\u09b0\\u098f\\u09b2 \\u09a5\\u09c7\\u0995\\u09c7 {1}\",\n\"Failed to load plugin url: {0}\": \"\\u09aa\\u09cd\\u09b2\\u09be\\u0997\\u0987\\u09a8 \\u0987\\u0989\\u0986\\u09b0\\u098f\\u09b2 \\u09b2\\u09cb\\u09a1 \\u0995\\u09b0\\u09a4\\u09c7 \\u09ac\\u09cd\\u09af\\u09b0\\u09cd\\u09a5: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u09aa\\u09cd\\u09b2\\u09be\\u0997\\u0987\\u09a8 \\u099a\\u09be\\u09b2\\u09c1 \\u0995\\u09b0\\u09a4\\u09c7 \\u09ac\\u09cd\\u09af\\u09b0\\u09cd\\u09a5 \\u09b9\\u09df\\u09c7\\u099b\\u09c7: {0}\",\n\"example\": \"\\u0989\\u09a6\\u09be\\u09b9\\u09b0\\u09a3\",\n\"Search\": \"\\u0985\\u09a8\\u09c1\\u09b8\\u09a8\\u09cd\\u09a7\\u09be\\u09a8 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"All\": \"\\u09b8\\u0995\\u09b2\",\n\"Currency\": \"\\u09ae\\u09c1\\u09a6\\u09cd\\u09b0\\u09be\",\n\"Text\": \"\\u099f\\u09c7\\u0995\\u09cd\\u09b8\\u099f\",\n\"Quotations\": \"\\u0989\\u09a6\\u09cd\\u09a7\\u09c3\\u09a4\\u09bf\",\n\"Mathematical\": \"\\u0997\\u09be\\u09a3\\u09bf\\u09a4\\u09bf\\u0995\",\n\"Extended Latin\": \"\\u09ac\\u09b0\\u09cd\\u09a7\\u09bf\\u09a4 \\u09b2\\u09be\\u09a4\\u09bf\\u09a8\",\n\"Symbols\": \"\\u09aa\\u09cd\\u09b0\\u09a4\\u09c0\\u0995\",\n\"Arrows\": \"\\u09a4\\u09c0\\u09b0\",\n\"User Defined\": \"\\u09ac\\u09cd\\u09af\\u09ac\\u09b9\\u09be\\u09b0\\u0995\\u09be\\u09b0\\u09c0 \\u09b8\\u0982\\u099c\\u09cd\\u099e\\u09be\\u09af\\u09bc\\u09bf\\u09a4\",\n\"dollar sign\": \"\\u09a1\\u09b2\\u09be\\u09b0 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"currency sign\": \"\\u09ae\\u09c1\\u09a6\\u09cd\\u09b0\\u09be\\u09b0 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"euro-currency sign\": \"\\u0987\\u0989\\u09b0\\u09cb-\\u09ae\\u09c1\\u09a6\\u09cd\\u09b0\\u09be \\u09b8\\u09be\\u0987\\u09a8\",\n\"colon sign\": \"\\u0995\\u09cb\\u09b2\\u09a8 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"cruzeiro sign\": \"\\u0995\\u09cd\\u09b0\\u09c1\\u099c\\u09c1\\u0987\\u09b0\\u09cb \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"french franc sign\": \"\\u09ab\\u09cd\\u09b0\\u09c7\\u099e\\u09cd\\u099a \\u09ab\\u09cd\\u09b0\\u09cd\\u09af\\u09be\\u0999\\u09cd\\u0995 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"lira sign\": \"\\u09b2\\u09bf\\u09b0\\u09be \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"mill sign\": \"\\u09ae\\u09bf\\u09b2 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"naira sign\": \"\\u09a8\\u09be\\u09df\\u09b0\\u09be \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"peseta sign\": \"\\u09aa\\u09c7\\u09b8\\u09c7\\u099f\\u09be \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"rupee sign\": \"\\u09b0\\u09c1\\u09aa\\u09bf \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"won sign\": \"\\u0989\\u09a8 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"new sheqel sign\": \"\\u09a8\\u09a4\\u09c1\\u09a8 \\u09b6\\u09bf\\u0995\\u09c7\\u09b2 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"dong sign\": \"\\u09a1\\u0982 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"kip sign\": \"\\u0995\\u09bf\\u09aa \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"tugrik sign\": \"\\u09a4\\u09c1\\u0997\\u09b0\\u09bf\\u0995 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"drachma sign\": \"\\u09a1\\u09cd\\u09b0\\u09be\\u099a\\u09ae\\u09be \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"german penny symbol\": \"\\u099c\\u09be\\u09b0\\u09cd\\u09ae\\u09be\\u09a8 \\u09aa\\u09c7\\u09a8\\u09bf \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"peso sign\": \"\\u09aa\\u09c7\\u09b8\\u09cb \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"guarani sign\": \"\\u0997\\u09c1\\u09df\\u09be\\u09b0\\u09be\\u09a8\\u09c0 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"austral sign\": \"\\u0993\\u09b8\\u09cd\\u099f\\u09cd\\u09b0\\u09be\\u09b2 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"hryvnia sign\": \"\\u09b9\\u09be\\u09b0\\u09ad\\u09a8\\u09bf\\u09df\\u09be \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"cedi sign\": \"\\u09b8\\u09c7\\u09a1\\u09bf \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"livre tournois sign\": \"\\u09b2\\u09bf\\u09ad\\u09cd\\u09b0\\u09c7 \\u099f\\u09c1\\u09b0\\u09a8\\u0987\\u09b8 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"spesmilo sign\": \"\\u09b8\\u09cd\\u09aa\\u09c7\\u09b8\\u09ae\\u09bf\\u09b2\\u09cb \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"tenge sign\": \"\\u099f\\u09bf\\u09a8\\u0997\\u09c7 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"indian rupee sign\": \"\\u0987\\u09a8\\u09cd\\u09a1\\u09bf\\u09df\\u09be\\u09a8 \\u09b0\\u09c1\\u09aa\\u09bf \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"turkish lira sign\": \"\\u09a4\\u09c1\\u0995\\u09bf\\u09b8\\u09cd\\u09a4\\u09be\\u09a8 \\u09b2\\u09bf\\u09b0\\u09be \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"nordic mark sign\": \"\\u09a8\\u09b0\\u09a1\\u09bf\\u0995 \\u09ae\\u09be\\u09b0\\u09cd\\u0995 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"manat sign\": \"\\u09ae\\u09be\\u09a8\\u09be\\u099f \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"ruble sign\": \"\\u09b0\\u09c1\\u09ac\\u09c7\\u09b2 \\u099a\\u09bf\\u09b9\\u09cd\\u09a8\",\n\"yen character\": \"\\u0987\\u09df\\u09c7\\u09a8 \\u0985\\u0995\\u09cd\\u09b7\\u09b0\",\n\"yuan character\": \"\\u0987\\u0989\\u09af\\u09bc\\u09be\\u09a8 \\u0985\\u0995\\u09cd\\u09b7\\u09b0\",\n\"yuan character, in hong kong and taiwan\": \"\\u09b9\\u0982\\u0995\\u0982 \\u098f\\u09ac\\u0982 \\u09a4\\u09be\\u0987\\u0993\\u09af\\u09bc\\u09be\\u09a8\\u09c7 \\u0987\\u0989\\u09af\\u09bc\\u09be\\u09a8 \\u0985\\u0995\\u09cd\\u09b7\\u09b0\",\n\"yen\\/yuan character variant one\": \"\\u0987\\u09af\\u09bc\\u09c7\\u09a8\\/\\u0987\\u0989\\u09af\\u09bc\\u09be\\u09a8 \\u0985\\u0995\\u09cd\\u09b7\\u09b0\\u09c7\\u09b0 \\u098f\\u0995\\u099f\\u09bf \\u09ac\\u09c8\\u0995\\u09b2\\u09cd\\u09aa\\u09bf\\u0995\",\n\"Loading emoticons...\": \"\\u0987\\u09ae\\u09cb\\u099f\\u09bf\\u0995\\u09a8 \\u09b2\\u09cb\\u09a1 \\u09b9\\u099a\\u09cd\\u099b\\u09c7...\",\n\"Could not load emoticons\": \"\\u0987\\u09ae\\u09cb\\u099f\\u09bf\\u0995\\u09a8 \\u09b2\\u09cb\\u09a1 \\u0995\\u09b0\\u09be \\u09af\\u09be\\u09af\\u09bc\\u09a8\\u09bf\",\n\"People\": \"\\u099c\\u09a8\\u09b8\\u09be\\u09a7\\u09be\\u09b0\\u09a3\",\n\"Animals and Nature\": \"\\u09aa\\u09cd\\u09b0\\u09be\\u09a3\\u09c0 \\u098f\\u09ac\\u0982 \\u09aa\\u09cd\\u09b0\\u0995\\u09c3\\u09a4\\u09bf\",\n\"Food and Drink\": \"\\u0996\\u09be\\u09a6\\u09cd\\u09af \\u0993 \\u09aa\\u09be\\u09a8\\u09c0\\u09af\\u09bc\",\n\"Activity\": \"\\u0995\\u09be\\u09b0\\u09cd\\u09af\\u0995\\u09b2\\u09be\\u09aa\",\n\"Travel and Places\": \"\\u09ad\\u09cd\\u09b0\\u09ae\\u09a3 \\u098f\\u09ac\\u0982 \\u09b8\\u09cd\\u09a5\\u09be\\u09a8\",\n\"Objects\": \"\\u0989\\u09a6\\u09cd\\u09a6\\u09c7\\u09b6\\u09cd\\u09af\",\n\"Flags\": \"\\u09aa\\u09a4\\u09be\\u0995\\u09be\",\n\"Characters\": \"\\u0985\\u0995\\u09cd\\u09b7\\u09b0\",\n\"Characters (no spaces)\": \"\\u0985\\u0995\\u09cd\\u09b7\\u09b0 (\\u0995\\u09cb\\u09a8\\u0993 \\u09b8\\u09cd\\u09aa\\u09c7\\u09b8 \\u09a8\\u09c7\\u0987)\",\n\"{0} characters\": \"{0} \\u0985\\u0995\\u09cd\\u09b7\\u09b0\",\n\"Error: Form submit field collision.\": \"\\u09a4\\u09cd\\u09b0\\u09c1\\u099f\\u09bf: \\u09ab\\u09b0\\u09cd\\u09ae \\u099c\\u09ae\\u09be \\u09a6\\u09c7\\u0993\\u09af\\u09bc\\u09be\\u09b0 \\u0995\\u09cd\\u09b7\\u09c7\\u09a4\\u09cd\\u09b0\\u09c7 \\u09b8\\u0982\\u0998\\u09b0\\u09cd\\u09b7\\u0964\",\n\"Error: No form element found.\": \"\\u09a4\\u09cd\\u09b0\\u09c1\\u099f\\u09bf: \\u0995\\u09cb\\u09a8\\u0993 \\u09ab\\u09b0\\u09cd\\u09ae \\u0989\\u09aa\\u09be\\u09a6\\u09be\\u09a8 \\u09aa\\u09be\\u0993\\u09af\\u09bc\\u09be \\u09af\\u09be\\u09af\\u09bc \\u09a8\\u09bf\\u0964\",\n\"Update\": \"\\u09b9\\u09be\\u09b2\\u09a8\\u09be\\u0997\\u09be\\u09a6\",\n\"Color swatch\": \"\\u09b0\\u0999\\u09cd\\u0997\\u09c7\\u09b0 \\u09aa\\u09cd\\u09b2\\u09c7\\u099f\",\n\"Turquoise\": \"\\u09ab\\u09bf\\u09b0\\u09cb\\u099c\\u09be\",\n\"Green\": \"\\u09b8\\u09ac\\u09c1\\u099c\",\n\"Blue\": \"\\u09a8\\u09c0\\u09b2\",\n\"Purple\": \"\\u09ac\\u09c7\\u0997\\u09c1\\u09a8\\u09c0\",\n\"Navy Blue\": \"\\u0986\\u0995\\u09be\\u09b6\\u09c0\",\n\"Dark Turquoise\": \"\\u0997\\u09be\\u09a2\\u09bc \\u09ab\\u09bf\\u09b0\\u09cb\\u099c\\u09be\",\n\"Dark Green\": \"\\u0997\\u09be\\u09a2\\u09bc \\u09b8\\u09ac\\u09c1\\u099c\",\n\"Medium Blue\": \"\\u09ae\\u09be\\u099d\\u09be\\u09b0\\u09bf \\u09a8\\u09c0\\u09b2\",\n\"Medium Purple\": \"\\u09ae\\u09be\\u099d\\u09be\\u09b0\\u09bf \\u09ac\\u09c7\\u0997\\u09c1\\u09a8\\u09bf\",\n\"Midnight Blue\": \"\\u09ae\\u09be\\u099d\\u09b0\\u09be\\u09a4\\u09c7\\u09b0 \\u09a8\\u09c0\\u09b2\",\n\"Yellow\": \"\\u09b9\\u09b2\\u09c1\\u09a6\",\n\"Orange\": \"\\u0995\\u09ae\\u09b2\\u09be\",\n\"Red\": \"\\u09b2\\u09be\\u09b2\",\n\"Light Gray\": \"\\u09b9\\u09be\\u09b2\\u0995\\u09be \\u09a7\\u09c2\\u09b8\\u09b0\",\n\"Gray\": \"\\u09a7\\u09c2\\u09b8\\u09b0\",\n\"Dark Yellow\": \"\\u0997\\u09be\\u09a2\\u09bc \\u09b9\\u09b2\\u09c1\\u09a6\",\n\"Dark Orange\": \"\\u0997\\u09be\\u09a2\\u09bc \\u0995\\u09ae\\u09b2\\u09be\",\n\"Dark Red\": \"\\u0997\\u09be\\u09a2\\u09bc \\u09b2\\u09be\\u09b2\",\n\"Medium Gray\": \"\\u09ae\\u09cb\\u099f\\u09be\\u09ae\\u09c1\\u099f\\u09bf \\u09a7\\u09c2\\u09b8\\u09b0\",\n\"Dark Gray\": \"\\u0997\\u09be\\u09a2\\u09bc \\u09a7\\u09c2\\u09b8\\u09b0\",\n\"Light Green\": \"\\u09b9\\u09be\\u09b2\\u0995\\u09be \\u09b8\\u09ac\\u09c1\\u099c\",\n\"Light Yellow\": \"\\u09b9\\u09be\\u09b2\\u0995\\u09be \\u09b9\\u09b2\\u09c1\\u09a6\",\n\"Light Red\": \"\\u09b9\\u09be\\u09b2\\u0995\\u09be \\u09b2\\u09be\\u09b2\",\n\"Light Purple\": \"\\u09b9\\u09be\\u09b2\\u0995\\u09be \\u09b0\\u0995\\u09cd\\u09a4\\u09ac\\u09b0\\u09cd\\u09a3\",\n\"Light Blue\": \"\\u09b9\\u09be\\u09b2\\u0995\\u09be \\u09a8\\u09c0\\u09b2\",\n\"Dark Purple\": \"\\u0997\\u09be\\u09a2\\u09bc \\u09b0\\u0995\\u09cd\\u09a4\\u09ac\\u09b0\\u09cd\\u09a3\",\n\"Dark Blue\": \"\\u0997\\u09be\\u09a2\\u09bc \\u09a8\\u09c0\\u09b2\",\n\"Black\": \"\\u0995\\u09be\\u09b2\\u09cb\",\n\"White\": \"\\u09b8\\u09be\\u09a6\\u09be\",\n\"Switch to or from fullscreen mode\": \"\\u09aa\\u09c2\\u09b0\\u09cd\\u09a3\\u09b8\\u09cd\\u0995\\u09cd\\u09b0\\u09bf\\u09a8 \\u09ae\\u09cb\\u09a1\\u09c7 \\u09ac\\u09be \\u09a5\\u09c7\\u0995\\u09c7 \\u09b8\\u09cd\\u09af\\u09c1\\u0987\\u099a \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Open help dialog\": \"\\u09b8\\u09b9\\u09be\\u09af\\u09bc\\u09a4\\u09be \\u09a1\\u09be\\u09af\\u09bc\\u09be\\u09b2\\u0997 \\u0996\\u09c1\\u09b2\\u09c1\\u09a8\",\n\"history\": \"\\u0987\\u09a4\\u09bf\\u09b9\\u09be\\u09b8\",\n\"styles\": \"\\u09b6\\u09c8\\u09b2\\u09c0\",\n\"formatting\": \"\\u09ac\\u09bf\\u09a8\\u09cd\\u09af\\u09be\\u09b8\",\n\"alignment\": \"\\u09b8\\u09ae\\u09a4\\u09b2\\u09a4\\u09be\",\n\"indentation\": \"\\u0996\\u09be\\u0981\\u099c\",\n\"permanent pen\": \"\\u09b8\\u09cd\\u09a5\\u09be\\u09af\\u09bc\\u09c0 \\u0995\\u09b2\\u09ae\",\n\"comments\": \"\\u09ae\\u09a8\\u09cd\\u09a4\\u09ac\\u09cd\\u09af\",\n\"Format Painter\": \"\\u099a\\u09bf\\u09a4\\u09cd\\u09b0\\u0995\\u09b0 \\u09ac\\u09bf\\u09a8\\u09cd\\u09af\\u09be\\u09b8\",\n\"Insert\\/edit iframe\": \"\\u0986\\u0987\\u09ab\\u09cd\\u09b0\\u09c7\\u09ae \\u09b8\\u09a8\\u09cd\\u09a8\\u09bf\\u09ac\\u09c7\\u09b6\\/\\u09b8\\u09ae\\u09cd\\u09aa\\u09be\\u09a6\\u09a8\",\n\"Capitalization\": \"\\u09aa\\u09cd\\u09b0\\u09a5\\u09ae \\u0985\\u0995\\u09cd\\u09b7\\u09b0 \\u09ac\\u09dc \\u09b9\\u09be\\u09a4\\u09c7\\u09b0\",\n\"lowercase\": \"\\u099a\\u09cb\\u099f \\u09b9\\u09be\\u09a4\\u09c7\\u09b0\",\n\"UPPERCASE\": \"\\u09ac\\u09dc \\u09b9\\u09be\\u09a4\\u09c7\\u09b0\",\n\"Title Case\": \"\\u09b6\\u09bf\\u09b0\\u09cb\\u09a8\\u09be\\u09ae \\u0995\\u09c7\\u09b8\",\n\"Permanent Pen Properties\": \"\\u09b8\\u09cd\\u09a5\\u09be\\u09af\\u09bc\\u09c0 \\u0995\\u09b2\\u09ae\\u09c7\\u09b0 \\u09ac\\u09c8\\u09b6\\u09bf\\u09b7\\u09cd\\u099f\\u09cd\\u09af\",\n\"Permanent pen properties...\": \"\\u09b8\\u09cd\\u09a5\\u09be\\u09af\\u09bc\\u09c0 \\u0995\\u09b2\\u09ae\\u09c7\\u09b0 \\u09ac\\u09c8\\u09b6\\u09bf\\u09b7\\u09cd\\u099f\\u09cd\\u09af...\",\n\"Font\": \"\\u09ab\\u09a8\\u09cd\\u099f\",\n\"Size\": \"\\u0986\\u09df\\u09a4\\u09a8\",\n\"More...\": \"\\u0986\\u09b0\\u09cb...\",\n\"Spellcheck Language\": \"\\u09ad\\u09be\\u09b7\\u09be\\u09b0 \\u09ac\\u09be\\u09a8\\u09be\\u09a8 \\u099a\\u09c7\\u0995\",\n\"Select...\": \"\\u09a8\\u09bf\\u09b0\\u09cd\\u09ac\\u09be\\u099a\\u09a8...\",\n\"Preferences\": \"\\u09aa\\u099b\\u09a8\\u09cd\\u09a6\\u09b8\\u09ae\\u09c2\\u09b9\",\n\"Yes\": \"\\u09b9\\u09cd\\u09af\\u09be\\u0981\",\n\"No\": \"\\u09a8\\u09be\",\n\"Keyboard Navigation\": \"\\u0995\\u09c0\\u09ac\\u09cb\\u09b0\\u09cd\\u09a1 \\u09a8\\u09c7\\u09ad\\u09bf\\u0997\\u09c7\\u09b6\\u09a8\",\n\"Version\": \"\\u09b8\\u0982\\u09b8\\u09cd\\u0995\\u09b0\\u09a3\",\n\"Anchor\": \"\\u09a8\\u09cb\\u0999\\u09cd\\u0997\\u09b0\",\n\"Special character\": \"\\u09ac\\u09bf\\u09b6\\u09c7\\u09b7 \\u099a\\u09b0\\u09bf\\u09a4\\u09cd\\u09b0\",\n\"Code sample\": \"\\u09a8\\u09ae\\u09c1\\u09a8\\u09be \\u0995\\u09cb\\u09a1\",\n\"Color\": \"\\u09b0\\u0999\",\n\"Emoticons\": \"\\u0987\\u09ae\\u09cb\\u099f\\u09bf\\u0995\\u09a8\",\n\"Document properties\": \"\\u09a8\\u09a5\\u09bf\\u09b0 \\u09ac\\u09c8\\u09b6\\u09bf\\u09b7\\u09cd\\u099f\\u09cd\\u09af\",\n\"Image\": \"\\u099b\\u09ac\\u09bf\",\n\"Insert link\": \"\\u09b2\\u09bf\\u0999\\u09cd\\u0995 \\u09b8\\u09a8\\u09cd\\u09a8\\u09bf\\u09ac\\u09c7\\u09b6 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Target\": \"\\u09b2\\u0995\\u09cd\\u09b7\\u09cd\\u09af\",\n\"Link\": \"\\u09b2\\u09bf\\u0982\\u0995\",\n\"Poster\": \"\\u09aa\\u09cb\\u09b8\\u09cd\\u099f\\u09be\\u09b0\",\n\"Media\": \"\\u09ae\\u09bf\\u09a1\\u09bf\\u09af\\u09bc\\u09be\",\n\"Print\": \"\\u099b\\u09be\\u09aa\\u09be\",\n\"Prev\": \"\\u09aa\\u09c2\\u09b0\\u09cd\\u09ac\\u09ac\\u09b0\\u09cd\\u09a4\\u09c0\",\n\"Find and replace\": \"\\u0996\\u09c1\\u0981\\u099c\\u09c1\\u09a8 \\u0993 \\u09aa\\u09cd\\u09b0\\u09a4\\u09bf\\u09b8\\u09cd\\u09a5\\u09be\\u09aa\\u09a8 \\u0995\\u09b0\\u09c1\\u09a8\",\n\"Whole words\": \"\\u09b8\\u09ae\\u09cd\\u09aa\\u09c2\\u09b0\\u09cd\\u09a3 \\u09b6\\u09ac\\u09cd\\u09a6\\u09c7\\u09b0\",\n\"Spellcheck\": \"\\u09ac\\u09be\\u09a8\\u09be\\u09a8 \\u09af\\u09be\\u099a\\u09be\\u0987\",\n\"Caption\": \"\\u0995\\u09cd\\u09af\\u09be\\u09aa\\u09b6\\u09a8\",\n\"Insert template\": \"\\u099f\\u09c7\\u09ae\\u09aa\\u09cd\\u09b2\\u09c7\\u099f \\u09a2\\u09cb\\u0995\\u09be\\u09a8\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/ca.js",
    "content": "tinymce.addI18n('ca',{\n\"Redo\": \"Refer\",\n\"Undo\": \"Desfer\",\n\"Cut\": \"Retalla\",\n\"Copy\": \"Copia\",\n\"Paste\": \"Enganxa\",\n\"Select all\": \"Seleccionar-ho tot\",\n\"New document\": \"Nou document\",\n\"Ok\": \"Acceptar\",\n\"Cancel\": \"Cancel\\u00b7la\",\n\"Visual aids\": \"Assist\\u00e8ncia visual\",\n\"Bold\": \"Negreta\",\n\"Italic\": \"Cursiva\",\n\"Underline\": \"Subratllat\",\n\"Strikethrough\": \"Barrat\",\n\"Superscript\": \"Super\\u00edndex\",\n\"Subscript\": \"Sub\\u00edndex\",\n\"Clear formatting\": \"Eliminar format\",\n\"Align left\": \"Alinea a l'esquerra\",\n\"Align center\": \"Alinea al centre\",\n\"Align right\": \"Alinea a la dreta\",\n\"Justify\": \"Justificat\",\n\"Bullet list\": \"Llista no ordenada\",\n\"Numbered list\": \"Llista enumerada\",\n\"Decrease indent\": \"Disminuir sagnat\",\n\"Increase indent\": \"Augmentar sagnat\",\n\"Close\": \"Tancar\",\n\"Formats\": \"Formats\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"El vostre navegador no suporta l'acc\\u00e9s directe al portaobjectes. Si us plau, feu servir les dreceres de teclat Ctrl+X\\/C\\/V.\",\n\"Headers\": \"Encap\\u00e7alaments\",\n\"Header 1\": \"Encap\\u00e7alament 1\",\n\"Header 2\": \"Encap\\u00e7alament 2\",\n\"Header 3\": \"Encap\\u00e7alament 3\",\n\"Header 4\": \"Encap\\u00e7alament 4\",\n\"Header 5\": \"Encap\\u00e7alament 5\",\n\"Header 6\": \"Encap\\u00e7alament 6\",\n\"Headings\": \"Encap\\u00e7alaments\",\n\"Heading 1\": \"Encap\\u00e7alament 1\",\n\"Heading 2\": \"Encap\\u00e7alament 2\",\n\"Heading 3\": \"Encap\\u00e7alament 3\",\n\"Heading 4\": \"Encap\\u00e7alament 4\",\n\"Heading 5\": \"Encap\\u00e7alament 5\",\n\"Heading 6\": \"Encap\\u00e7alament 6\",\n\"Preformatted\": \"Preformatat\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Codi\",\n\"Paragraph\": \"Par\\u00e0graf\",\n\"Blockquote\": \"Cita\",\n\"Inline\": \"En l\\u00ednia\",\n\"Blocks\": \"Blocs\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Enganxar ara est\\u00e0 en mode text pla. Els continguts s'enganxaran com a text pla fins que desactivis aquesta opci\\u00f3. \",\n\"Fonts\": \"Fonts\",\n\"Font Sizes\": \"Mides de la font\",\n\"Class\": \"Classe\",\n\"Browse for an image\": \"Explorar per cercar una imatge\",\n\"OR\": \"O\",\n\"Drop an image here\": \"Deixar anar una imatge aqu\\u00ed\",\n\"Upload\": \"Pujar\",\n\"Block\": \"Bloc\",\n\"Align\": \"Alinea\",\n\"Default\": \"Per defecte\",\n\"Circle\": \"Cercle\",\n\"Disc\": \"Disc\",\n\"Square\": \"Quadrat\",\n\"Lower Alpha\": \"Alfa menor\",\n\"Lower Greek\": \"Grec menor\",\n\"Lower Roman\": \"Roman menor\",\n\"Upper Alpha\": \"Alfa major\",\n\"Upper Roman\": \"Roman major\",\n\"Anchor...\": \"Ancoratge...\",\n\"Name\": \"Nom\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"La Id ha de comen\\u00e7ar amb una lletra, seguida d'altres lletres, n\\u00fameros, punts, ratlles, comes, o guions baixos\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Teniu canvis sense desar, esteu segur que voleu deixar-ho ara?\",\n\"Restore last draft\": \"Restaurar l'\\u00faltim esborrany\",\n\"Special character...\": \"Car\\u00e0cters especials\\u2026\",\n\"Source code\": \"Codi font\",\n\"Insert\\/Edit code sample\": \"Inserir\\/Editar tros de codi\",\n\"Language\": \"Idioma\",\n\"Code sample...\": \"Mostra de codi...\",\n\"Color Picker\": \"Selector de colors\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"D'esquerra a dreta\",\n\"Right to left\": \"De dreta a esquerra\",\n\"Emoticons...\": \"Emoticones...\",\n\"Metadata and Document Properties\": \"Metadades i propietats del document\",\n\"Title\": \"T\\u00edtol\",\n\"Keywords\": \"Paraules clau\",\n\"Description\": \"Descripci\\u00f3\",\n\"Robots\": \"Robots\",\n\"Author\": \"Autor\",\n\"Encoding\": \"Codificaci\\u00f3\",\n\"Fullscreen\": \"Pantalla completa\",\n\"Action\": \"Acci\\u00f3\",\n\"Shortcut\": \"Drecera\",\n\"Help\": \"Ajuda\",\n\"Address\": \"Adre\\u00e7a\",\n\"Focus to menubar\": \"Enfocar la barra de men\\u00fa\",\n\"Focus to toolbar\": \"Enfocar la barra d'eines\",\n\"Focus to element path\": \"Enfocar la ruta d'elements\",\n\"Focus to contextual toolbar\": \"Enfocar la barra d'eines contextual\",\n\"Insert link (if link plugin activated)\": \"Inserir enlla\\u00e7 (si el complement d'enlla\\u00e7 est\\u00e0 activat)\",\n\"Save (if save plugin activated)\": \"Desar (si el complement desar est\\u00e0 activat)\",\n\"Find (if searchreplace plugin activated)\": \"Cercar (si el complement cercar-reempla\\u00e7ar est\\u00e0 activat)\",\n\"Plugins installed ({0}):\": \"Complements instal\\u00b7lats ({0}):\",\n\"Premium plugins:\": \"Complements premium\",\n\"Learn more...\": \"Apr\\u00e8n m\\u00e9s...\",\n\"You are using {0}\": \"Est\\u00e0s utilitzant {0}\",\n\"Plugins\": \"Complements\",\n\"Handy Shortcuts\": \"Dreceres a m\\u00e0\",\n\"Horizontal line\": \"L\\u00ednia horitzontal\",\n\"Insert\\/edit image\": \"Inserir\\/editar imatge\",\n\"Image description\": \"Descripci\\u00f3 de la imatge\",\n\"Source\": \"Font\",\n\"Dimensions\": \"Dimensions\",\n\"Constrain proportions\": \"Mantenir proporcions\",\n\"General\": \"General\",\n\"Advanced\": \"Avan\\u00e7at\",\n\"Style\": \"Estil\",\n\"Vertical space\": \"Espai vertical\",\n\"Horizontal space\": \"Espai horitzontal\",\n\"Border\": \"Vora\",\n\"Insert image\": \"Inserir imatge\",\n\"Image...\": \"Imatge...\",\n\"Image list\": \"Llista d'imatges\",\n\"Rotate counterclockwise\": \"Girar a l'esquerra\",\n\"Rotate clockwise\": \"Girar a la dreta\",\n\"Flip vertically\": \"Capgirar verticalment\",\n\"Flip horizontally\": \"Capgirar horitzontalment\",\n\"Edit image\": \"Editar imatge\",\n\"Image options\": \"Opcions d'imatge\",\n\"Zoom in\": \"Ampliar\",\n\"Zoom out\": \"Empetitir\",\n\"Crop\": \"Escap\\u00e7ar\",\n\"Resize\": \"Canviar mida\",\n\"Orientation\": \"Orientaci\\u00f3\",\n\"Brightness\": \"Brillantor\",\n\"Sharpen\": \"Remarcar vores\",\n\"Contrast\": \"Contrast\",\n\"Color levels\": \"Nivells de color\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Invertir\",\n\"Apply\": \"Aplicar\",\n\"Back\": \"Tornar\",\n\"Insert date\\/time\": \"Inserir data\\/hora\",\n\"Date\\/time\": \"Data\\/hora\",\n\"Insert\\/Edit Link\": \"Inserir\\/editar l'enlla\\u00e7\",\n\"Insert\\/edit link\": \"Inserir\\/editar enlla\\u00e7\",\n\"Text to display\": \"Text per mostrar\",\n\"Url\": \"URL\",\n\"Open link in...\": \"Obrir l'enlla\\u00e7 a...\",\n\"Current window\": \"Finestra actual\",\n\"None\": \"Cap\",\n\"New window\": \"Finestra nova\",\n\"Remove link\": \"Treure enlla\\u00e7\",\n\"Anchors\": \"\\u00c0ncores\",\n\"Link...\": \"Enlla\\u00e7...\",\n\"Paste or type a link\": \"Enganxa o escriu un enlla\\u00e7\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"L'URL que has escrit sembla una adre\\u00e7a de correu electr\\u00f2nic. Vols afegir-li el prefix obligatori mailto: ?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"L'URL que has escrit sembla un enlla\\u00e7 extern. Vols afegir-li el prefix obligatori http:\\/\\/ ?\",\n\"Link list\": \"Llista d'enlla\\u00e7os\",\n\"Insert video\": \"Inserir v\\u00eddeo\",\n\"Insert\\/edit video\": \"Inserir\\/editar v\\u00eddeo\",\n\"Insert\\/edit media\": \"Inserir\\/editar mitj\\u00e0\",\n\"Alternative source\": \"Font alternativa\",\n\"Alternative source URL\": \"URL de font alternativa\",\n\"Media poster (Image URL)\": \"Cartell de multim\\u00e8dia (URL d'imatge)\",\n\"Paste your embed code below:\": \"Enganxau el codi a sota:\",\n\"Embed\": \"Incloure\",\n\"Media...\": \"Multim\\u00e8dia...\",\n\"Nonbreaking space\": \"Espai fixe\",\n\"Page break\": \"Salt de p\\u00e0gina\",\n\"Paste as text\": \"Enganxar com a text\",\n\"Preview\": \"Previsualitzaci\\u00f3\",\n\"Print...\": \"Imprimir...\",\n\"Save\": \"Desa\",\n\"Find\": \"Buscar\",\n\"Replace with\": \"Rempla\\u00e7ar amb\",\n\"Replace\": \"Rempla\\u00e7ar\",\n\"Replace all\": \"Rempla\\u00e7ar-ho tot\",\n\"Previous\": \"Anterior\",\n\"Next\": \"Seg\\u00fcent\",\n\"Find and replace...\": \"Cercar i reempla\\u00e7ar...\",\n\"Could not find the specified string.\": \"No es pot trobar el text especificat.\",\n\"Match case\": \"Coincidir maj\\u00fascules\",\n\"Find whole words only\": \"Cercar nom\\u00e9s paraules completes\",\n\"Spell check\": \"Corrector ortogr\\u00e0fic\",\n\"Ignore\": \"Ignorar\",\n\"Ignore all\": \"Ignorar tots\",\n\"Finish\": \"Finalitzar\",\n\"Add to Dictionary\": \"Afegir al diccionari\",\n\"Insert table\": \"Inserir taula\",\n\"Table properties\": \"Propietats de taula\",\n\"Delete table\": \"Esborrar taula\",\n\"Cell\": \"Cel\\u00b7la\",\n\"Row\": \"Fila\",\n\"Column\": \"Columna\",\n\"Cell properties\": \"Propietats de cel\\u00b7la\",\n\"Merge cells\": \"Fusionar cel\\u00b7les\",\n\"Split cell\": \"Dividir cel\\u00b7les\",\n\"Insert row before\": \"Inserir fila a sobre\",\n\"Insert row after\": \"Inserir fila a sota\",\n\"Delete row\": \"Esborrar fila\",\n\"Row properties\": \"Propietats de fila\",\n\"Cut row\": \"Retallar fila\",\n\"Copy row\": \"Copiar fila\",\n\"Paste row before\": \"Enganxar fila a sobre\",\n\"Paste row after\": \"Enganxar fila a sota\",\n\"Insert column before\": \"Inserir columna abans\",\n\"Insert column after\": \"Inserir columna despr\\u00e9s\",\n\"Delete column\": \"Esborrar columna\",\n\"Cols\": \"Cols\",\n\"Rows\": \"Files\",\n\"Width\": \"Amplada\",\n\"Height\": \"Al\\u00e7ada\",\n\"Cell spacing\": \"Espai entre cel\\u00b7les\",\n\"Cell padding\": \"Marge intern\",\n\"Show caption\": \"Mostrar encap\\u00e7alament\",\n\"Left\": \"A l'esquerra\",\n\"Center\": \"Centrat\",\n\"Right\": \"A la dreta\",\n\"Cell type\": \"Tipus de cel\\u00b7la\",\n\"Scope\": \"\\u00c0mbit\",\n\"Alignment\": \"Aliniament\",\n\"H Align\": \"Al\\u00edniament H\",\n\"V Align\": \"Al\\u00edniament V\",\n\"Top\": \"Superior\",\n\"Middle\": \"Mitj\\u00e0\",\n\"Bottom\": \"Inferior\",\n\"Header cell\": \"Cel\\u00b7la de cap\\u00e7alera\",\n\"Row group\": \"Grup de fila\",\n\"Column group\": \"Grup de columna\",\n\"Row type\": \"Tipus de fila\",\n\"Header\": \"Cap\\u00e7alera\",\n\"Body\": \"Cos\",\n\"Footer\": \"Peu\",\n\"Border color\": \"Color de vora\",\n\"Insert template...\": \"Inserir plantilla...\",\n\"Templates\": \"Plantilles\",\n\"Template\": \"Plantilla\",\n\"Text color\": \"Color del text\",\n\"Background color\": \"Color del fons\",\n\"Custom...\": \"Personalitzar...\",\n\"Custom color\": \"Personalitzar el color\",\n\"No color\": \"Sense color\",\n\"Remove color\": \"Eliminar el color\",\n\"Table of Contents\": \"Taula de continguts\",\n\"Show blocks\": \"Mostrar blocs\",\n\"Show invisible characters\": \"Mostrar car\\u00e0cters invisibles\",\n\"Word count\": \"Recompte de paraules\",\n\"Count\": \"Compta\",\n\"Document\": \"Document\",\n\"Selection\": \"Selecci\\u00f3\",\n\"Words\": \"Paraules\",\n\"Words: {0}\": \"Paraules: {0}\",\n\"{0} words\": \"{0} paraules\",\n\"File\": \"Arxiu\",\n\"Edit\": \"Edici\\u00f3\",\n\"Insert\": \"Inserir\",\n\"View\": \"Veure\",\n\"Format\": \"Format\",\n\"Table\": \"Taula\",\n\"Tools\": \"Eines\",\n\"Powered by {0}\": \"Impulsat per {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u00c0rea de text amb format. Premeu ALT-F9 per mostrar el men\\u00fa, ALT F10 per la barra d'eines i ALT-0 per ajuda.\",\n\"Image title\": \"T\\u00edtol de la imatge\",\n\"Border width\": \"Amplada de la vora\",\n\"Border style\": \"Estil de la vora\",\n\"Error\": \"Error\",\n\"Warn\": \"Alerta\",\n\"Valid\": \"V\\u00e0lid\",\n\"To open the popup, press Shift+Enter\": \"Per obrir la finestra emergent, premeu Maj.+Retorn\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u00c0rea de Text enriquit. Premeu ALT-0 per obtenir ajuda.\",\n\"System Font\": \"Font del sistema\",\n\"Failed to upload image: {0}\": \"No s'ha pogut carregar la imatge: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"No s'ha pogut carregar el complement: {0} de l\\u2019URL {1}\",\n\"Failed to load plugin url: {0}\": \"No s'ha pogut carregar l\\u2019URL del complement: {0}\",\n\"Failed to initialize plugin: {0}\": \"No s'ha pogut inicialitzar el complement: {0}\",\n\"example\": \"exemple\",\n\"Search\": \"Cerca\",\n\"All\": \"Tot\",\n\"Currency\": \"Moneda\",\n\"Text\": \"Text\",\n\"Quotations\": \"Cites\",\n\"Mathematical\": \"S\\u00edmbols matem\\u00e0tics\",\n\"Extended Latin\": \"Llat\\u00ed ampliat\",\n\"Symbols\": \"S\\u00edmbols\",\n\"Arrows\": \"Fletxes\",\n\"User Defined\": \"Definit per l'usuari\",\n\"dollar sign\": \"signe del d\\u00f2lar\",\n\"currency sign\": \"signe de la moneda\",\n\"euro-currency sign\": \"signe de l'euro\",\n\"colon sign\": \"signe del col\\u00f3n\",\n\"cruzeiro sign\": \"signe del cruzeiro\",\n\"french franc sign\": \"signe del franc franc\\u00e8s\",\n\"lira sign\": \"signe de la lira\",\n\"mill sign\": \"signe del mill\",\n\"naira sign\": \"signe de la naira\",\n\"peseta sign\": \"signe de la pesseta\",\n\"rupee sign\": \"signe de la rupia\",\n\"won sign\": \"signe del won\",\n\"new sheqel sign\": \"signe del nou x\\u00e9quel\",\n\"dong sign\": \"signe del dong\",\n\"kip sign\": \"signe del kip\",\n\"tugrik sign\": \"signe del t\\u00f6gr\\u00f6g\",\n\"drachma sign\": \"signe del dracma\",\n\"german penny symbol\": \"signe del penic alemany\",\n\"peso sign\": \"signe del peso\",\n\"guarani sign\": \"signe del guaran\\u00ed\",\n\"austral sign\": \"signe de l\\u2019austral\",\n\"hryvnia sign\": \"signe de la hr\\u00edvnia\",\n\"cedi sign\": \"signe del cedi\",\n\"livre tournois sign\": \"signe de la lliura tornesa\",\n\"spesmilo sign\": \"signe de l\\u2019spesmilo\",\n\"tenge sign\": \"signe del tenge\",\n\"indian rupee sign\": \"signe de la rupia \\u00edndia\",\n\"turkish lira sign\": \"signe de la lira turca\",\n\"nordic mark sign\": \"signe del marc n\\u00f2rdic\",\n\"manat sign\": \"signe del manat\",\n\"ruble sign\": \"signe del ruble\",\n\"yen character\": \"signe del ien\",\n\"yuan character\": \"signe del iuan\",\n\"yuan character, in hong kong and taiwan\": \"signe del iuan en Hong Kong i Taiwan\",\n\"yen\\/yuan character variant one\": \"variaci\\u00f3 1 del signe del ien\\/iuan\",\n\"Loading emoticons...\": \"Carregant les emoticones...\",\n\"Could not load emoticons\": \"No s'han pogut carregar les emoticones\",\n\"People\": \"Gent\",\n\"Animals and Nature\": \"Animals i natura\",\n\"Food and Drink\": \"Menjar i beure\",\n\"Activity\": \"Activitat\",\n\"Travel and Places\": \"Viatges i llocs\",\n\"Objects\": \"Objectes\",\n\"Flags\": \"Banderes\",\n\"Characters\": \"Car\\u00e0cters\",\n\"Characters (no spaces)\": \"Car\\u00e0cters (sense espais)\",\n\"{0} characters\": \"{0} car\\u00e0cters\",\n\"Error: Form submit field collision.\": \"Error: error en el camp d\\u2019enviament del formulari.\",\n\"Error: No form element found.\": \"Error: no s'ha trobat l'element del formulari.\",\n\"Update\": \"Actualitzar\",\n\"Color swatch\": \"Mostra de color\",\n\"Turquoise\": \"Turquesa\",\n\"Green\": \"Verd\",\n\"Blue\": \"Blau\",\n\"Purple\": \"Violeta\",\n\"Navy Blue\": \"Blau mar\\u00ed\",\n\"Dark Turquoise\": \"Turquesa fosc\",\n\"Dark Green\": \"Verd fosc\",\n\"Medium Blue\": \"Blau mitj\\u00e0\",\n\"Medium Purple\": \"Violeta mitj\\u00e0\",\n\"Midnight Blue\": \"Blau mitjanit\",\n\"Yellow\": \"Groc\",\n\"Orange\": \"Taronja\",\n\"Red\": \"Vermell\",\n\"Light Gray\": \"Gris clar\",\n\"Gray\": \"Gris\",\n\"Dark Yellow\": \"Groc fosc\",\n\"Dark Orange\": \"Taronja fosc\",\n\"Dark Red\": \"Vermell fosc\",\n\"Medium Gray\": \"Gris mitj\\u00e0\",\n\"Dark Gray\": \"Gris fosc\",\n\"Light Green\": \"Verd clar\",\n\"Light Yellow\": \"Groc clar\",\n\"Light Red\": \"Vermell clar\",\n\"Light Purple\": \"Porpra clar\",\n\"Light Blue\": \"Blau clar\",\n\"Dark Purple\": \"Porpra fosc\",\n\"Dark Blue\": \"Blau fosc\",\n\"Black\": \"Negre\",\n\"White\": \"Blanc\",\n\"Switch to or from fullscreen mode\": \"Canviar a o del mode de pantalla completa\",\n\"Open help dialog\": \"Obrir el quadre de di\\u00e0leg d'ajuda\",\n\"history\": \"historial\",\n\"styles\": \"estils\",\n\"formatting\": \"format\",\n\"alignment\": \"alineaci\\u00f3\",\n\"indentation\": \"sagnat\",\n\"permanent pen\": \"retolador permanent\",\n\"comments\": \"comentaris\",\n\"Format Painter\": \"Formata el Painter\",\n\"Insert\\/edit iframe\": \"Insereix\\/edita iframe\",\n\"Capitalization\": \"Capitalitzaci\\u00f3\",\n\"lowercase\": \"min\\u00fascules\",\n\"UPPERCASE\": \"MAJ\\u00daSCULES\",\n\"Title Case\": \"Caixa del t\\u00edtol\",\n\"Permanent Pen Properties\": \"Par\\u00e0metres permanents del llapis\",\n\"Permanent pen properties...\": \"Par\\u00e0metres permanents del llapis\\u2026\",\n\"Font\": \"Font\",\n\"Size\": \"Mida\",\n\"More...\": \"M\\u00e9s\\u2026\",\n\"Spellcheck Language\": \"Idioma de la comprovaci\\u00f3 d'ortografia\",\n\"Select...\": \"Selecciona\\u2026\",\n\"Preferences\": \"Par\\u00e0metres\",\n\"Yes\": \"S\\u00ed\",\n\"No\": \"No\",\n\"Keyboard Navigation\": \"Navegaci\\u00f3 per teclat\",\n\"Version\": \"Versi\\u00f3\",\n\"Anchor\": \"\\u00c0ncora\",\n\"Special character\": \"Car\\u00e0cter especial\",\n\"Code sample\": \"Mostra de codi\",\n\"Color\": \"Color\",\n\"Emoticons\": \"Emoticones\",\n\"Document properties\": \"Propietats del document\",\n\"Image\": \"Imatge\",\n\"Insert link\": \"Inserir enlla\\u00e7\",\n\"Target\": \"Dest\\u00ed\",\n\"Link\": \"Enlla\\u00e7\",\n\"Poster\": \"P\\u00f3ster\",\n\"Media\": \"Mitjans\",\n\"Print\": \"Imprimir\",\n\"Prev\": \"Anterior\",\n\"Find and replace\": \"Buscar i rempla\\u00e7ar\",\n\"Whole words\": \"Paraules senceres\",\n\"Spellcheck\": \"Comprovar ortrografia\",\n\"Caption\": \"Encap\\u00e7alament\",\n\"Insert template\": \"Inserir plantilla\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/cs.js",
    "content": "tinymce.addI18n('cs',{\n\"Redo\": \"Opakovat\",\n\"Undo\": \"Zp\\u011bt\",\n\"Cut\": \"Vyjmout\",\n\"Copy\": \"Kop\\u00edrovat\",\n\"Paste\": \"Vlo\\u017eit\",\n\"Select all\": \"Vybrat v\\u0161e\",\n\"New document\": \"Nov\\u00fd dokument\",\n\"Ok\": \"OK\",\n\"Cancel\": \"Storno\",\n\"Visual aids\": \"Vizu\\u00e1ln\\u00ed pom\\u016fcky\",\n\"Bold\": \"Tu\\u010dn\\u00e9\",\n\"Italic\": \"Kurz\\u00edva\",\n\"Underline\": \"Podtr\\u017een\\u00ed\",\n\"Strikethrough\": \"P\\u0159e\\u0161krtnut\\u00e9\",\n\"Superscript\": \"Horn\\u00ed index\",\n\"Subscript\": \"Doln\\u00ed index\",\n\"Clear formatting\": \"Vymazat form\\u00e1tov\\u00e1n\\u00ed\",\n\"Align left\": \"Zarovnat doleva\",\n\"Align center\": \"Zarovnat na st\\u0159ed\",\n\"Align right\": \"Zarovnat doprava\",\n\"Justify\": \"Zarovnat do bloku\",\n\"Bullet list\": \"Odr\\u00e1\\u017eky\",\n\"Numbered list\": \"\\u010c\\u00edslov\\u00e1n\\u00ed\",\n\"Decrease indent\": \"Zmen\\u0161it odsazen\\u00ed\",\n\"Increase indent\": \"Zv\\u011bt\\u0161it odsazen\\u00ed\",\n\"Close\": \"Zav\\u0159\\u00edt\",\n\"Formats\": \"Form\\u00e1ty\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"V\\u00e1\\u0161 prohl\\u00ed\\u017ee\\u010d nepodporuje p\\u0159\\u00edm\\u00fd p\\u0159\\u00edstup do schr\\u00e1nky. Pou\\u017eijte pros\\u00edm kl\\u00e1vesov\\u00e9 zkratky Ctrl+X\\/C\\/V.\",\n\"Headers\": \"Nadpisy\",\n\"Header 1\": \"Nadpis 1\",\n\"Header 2\": \"Nadpis 2\",\n\"Header 3\": \"Nadpis 3\",\n\"Header 4\": \"Nadpis 4\",\n\"Header 5\": \"Nadpis 5\",\n\"Header 6\": \"Nadpis 6\",\n\"Headings\": \"Nadpisy\",\n\"Heading 1\": \"Nadpis 1\",\n\"Heading 2\": \"Nadpis 2\",\n\"Heading 3\": \"Nadpis 3\",\n\"Heading 4\": \"Nadpis 4\",\n\"Heading 5\": \"Nadpis 5\",\n\"Heading 6\": \"Nadpis 6\",\n\"Preformatted\": \"P\\u0159edform\\u00e1tovan\\u00fd text\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"K\\u00f3d\",\n\"Paragraph\": \"Odstavec\",\n\"Blockquote\": \"Blokov\\u00e1 citace\",\n\"Inline\": \"\\u0158\\u00e1dkov\\u00e9 zobrazen\\u00ed (inline)\",\n\"Blocks\": \"Bloky\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Je zapnuto vkl\\u00e1d\\u00e1n\\u00ed \\u010dist\\u00e9ho textu. Dokud nebude tato volba vypnuta, bude ve\\u0161ker\\u00fd obsah vlo\\u017een jako \\u010dist\\u00fd text.\",\n\"Fonts\": \"P\\u00edsma\",\n\"Font Sizes\": \"Velikost p\\u00edsma\",\n\"Class\": \"T\\u0159\\u00edda\",\n\"Browse for an image\": \"Vyhledat obr\\u00e1zek\",\n\"OR\": \"OR\",\n\"Drop an image here\": \"P\\u0159esu\\u0148te obr\\u00e1zek sem\",\n\"Upload\": \"Nahr\\u00e1t\",\n\"Block\": \"Do bloku\",\n\"Align\": \"Zarovnat\",\n\"Default\": \"V\\u00fdchoz\\u00ed\",\n\"Circle\": \"Kole\\u010dko\",\n\"Disc\": \"Punt\\u00edk\",\n\"Square\": \"\\u010ctvere\\u010dek\",\n\"Lower Alpha\": \"Norm\\u00e1ln\\u00ed \\u010d\\u00edslov\\u00e1n\\u00ed\",\n\"Lower Greek\": \"Mal\\u00e9 p\\u00edsmenkov\\u00e1n\\u00ed\",\n\"Lower Roman\": \"Mal\\u00e9 \\u0159\\u00edmsk\\u00e9 \\u010d\\u00edslice\",\n\"Upper Alpha\": \"velk\\u00e9 p\\u00edsmenkov\\u00e1n\\u00ed\",\n\"Upper Roman\": \"\\u0158\\u00edmsk\\u00e9 \\u010d\\u00edslice\",\n\"Anchor...\": \"Kotva...\",\n\"Name\": \"N\\u00e1zev\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id by m\\u011blo za\\u010d\\u00ednat p\\u00edsmenem a d\\u00e1le obsahovat pouze p\\u00edsmena, \\u010d\\u00edsla, poml\\u010dky, te\\u010dky, dvojte\\u010dky, nebo podtr\\u017e\\u00edtka.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"M\\u00e1te neulo\\u017een\\u00e9 zm\\u011bny. Opravdu chcete opustit str\\u00e1nku?\",\n\"Restore last draft\": \"Obnovit posledn\\u00ed koncept\",\n\"Special character...\": \"Speci\\u00e1ln\\u00ed znak\\u2026\",\n\"Source code\": \"Zdrojov\\u00fd k\\u00f3d\",\n\"Insert\\/Edit code sample\": \"Vlo\\u017eit \\/ Upravit uk\\u00e1zkov\\u00fd k\\u00f3d\",\n\"Language\": \"Jazyk\",\n\"Code sample...\": \"Uk\\u00e1zkov\\u00fd k\\u00f3d...\",\n\"Color Picker\": \"V\\u00fdb\\u011br barvy\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Zleva doprava\",\n\"Right to left\": \"Zprava doleva\",\n\"Emoticons...\": \"Emotikony...\",\n\"Metadata and Document Properties\": \"Metadata a vlastnosti dokumentu\",\n\"Title\": \"Titulek\",\n\"Keywords\": \"Kl\\u00ed\\u010dov\\u00e1 slova\",\n\"Description\": \"Popis\",\n\"Robots\": \"Roboti\",\n\"Author\": \"Autor\",\n\"Encoding\": \"K\\u00f3dov\\u00e1n\\u00ed\",\n\"Fullscreen\": \"Na celou obrazovku\",\n\"Action\": \"Akce\",\n\"Shortcut\": \"Kl\\u00e1vesov\\u00e1 zkratka\",\n\"Help\": \"N\\u00e1pov\\u011bda\",\n\"Address\": \"Blok s po\\u0161tovn\\u00ed adresou\",\n\"Focus to menubar\": \"P\\u0159ej\\u00edt do menu\",\n\"Focus to toolbar\": \"P\\u0159ej\\u00edt na panel n\\u00e1stroj\\u016f\",\n\"Focus to element path\": \"P\\u0159ej\\u00edt na element path\",\n\"Focus to contextual toolbar\": \"P\\u0159ej\\u00edt na kontextov\\u00fd panel n\\u00e1stroj\\u016f\",\n\"Insert link (if link plugin activated)\": \"Vlo\\u017eit odkaz (pokud je aktivn\\u00ed link plugin)\",\n\"Save (if save plugin activated)\": \"Ulo\\u017eit (pokud je aktivni save plugin)\",\n\"Find (if searchreplace plugin activated)\": \"Hledat (pokud je aktivn\\u00ed plugin searchreplace)\",\n\"Plugins installed ({0}):\": \"Instalovan\\u00e9 pluginy ({0}):\",\n\"Premium plugins:\": \"Pr\\u00e9miov\\u00e9 pluginy:\",\n\"Learn more...\": \"Zjistit v\\u00edce...\",\n\"You are using {0}\": \"Pou\\u017e\\u00edv\\u00e1te {0}\",\n\"Plugins\": \"Pluginy\",\n\"Handy Shortcuts\": \"U\\u017eite\\u010dn\\u00e9 kl\\u00e1vesov\\u00e9 zkratky\",\n\"Horizontal line\": \"Vodorovn\\u00e1 \\u010d\\u00e1ra\",\n\"Insert\\/edit image\": \"Vlo\\u017eit \\/ upravit obr\\u00e1zek\",\n\"Image description\": \"Popis obr\\u00e1zku\",\n\"Source\": \"URL\",\n\"Dimensions\": \"Rozm\\u011bry\",\n\"Constrain proportions\": \"Zachovat proporce\",\n\"General\": \"Obecn\\u00e9\",\n\"Advanced\": \"Pokro\\u010dil\\u00e9\",\n\"Style\": \"Styl\",\n\"Vertical space\": \"Vertik\\u00e1ln\\u00ed mezera\",\n\"Horizontal space\": \"Horizont\\u00e1ln\\u00ed mezera\",\n\"Border\": \"R\\u00e1me\\u010dek\",\n\"Insert image\": \"Vlo\\u017eit obr\\u00e1zek\",\n\"Image...\": \"Obr\\u00e1zek\\u2026\",\n\"Image list\": \"Seznam obr\\u00e1zk\\u016f\",\n\"Rotate counterclockwise\": \"Oto\\u010dit doleva\",\n\"Rotate clockwise\": \"Oto\\u010dit doprava\",\n\"Flip vertically\": \"P\\u0159evr\\u00e1tit svisle\",\n\"Flip horizontally\": \"P\\u0159evr\\u00e1tit vodorovn\\u011b\",\n\"Edit image\": \"Upravit obr\\u00e1zek\",\n\"Image options\": \"Vlastnosti obr\\u00e1zku\",\n\"Zoom in\": \"P\\u0159ibl\\u00ed\\u017eit\",\n\"Zoom out\": \"Odd\\u00e1lit\",\n\"Crop\": \"O\\u0159\\u00edznout\",\n\"Resize\": \"Zm\\u011bnit velikost\",\n\"Orientation\": \"Transformovat\",\n\"Brightness\": \"Jas\",\n\"Sharpen\": \"Ostrost\",\n\"Contrast\": \"Kontrast\",\n\"Color levels\": \"\\u00darovn\\u011b barev\",\n\"Gamma\": \"Gama\",\n\"Invert\": \"Invertovat\",\n\"Apply\": \"Pou\\u017e\\u00edt\",\n\"Back\": \"Zp\\u011bt\",\n\"Insert date\\/time\": \"Vlo\\u017eit datum \\/ \\u010das\",\n\"Date\\/time\": \"Datum\\/\\u010das\",\n\"Insert\\/Edit Link\": \"P\\u0159idat\\/upravit odkaz\",\n\"Insert\\/edit link\": \"Vlo\\u017eit \\/ upravit odkaz\",\n\"Text to display\": \"Text k zobrazen\\u00ed\",\n\"Url\": \"URL\",\n\"Open link in...\": \"Otev\\u0159\\u00edt odkaz v...\",\n\"Current window\": \"Aktu\\u00e1ln\\u00ed okno\",\n\"None\": \"\\u017d\\u00e1dn\\u00e9\",\n\"New window\": \"Nov\\u00e9 okno\",\n\"Remove link\": \"Odstranit odkaz\",\n\"Anchors\": \"Kotvy\",\n\"Link...\": \"Odkaz...\",\n\"Paste or type a link\": \"Vlo\\u017eit nebo napsat odkaz\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Zadan\\u00e9 URL vypad\\u00e1 jako e-mailov\\u00e1 adresa. Chcete doplnit povinn\\u00fd prefix mailto:?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Zadan\\u00e9 URL vypad\\u00e1 jako odkaz na jin\\u00fd web. Chcete doplnit povinn\\u00fd prefix http:\\/\\/?\",\n\"Link list\": \"Seznam odkaz\\u016f\",\n\"Insert video\": \"Vlo\\u017eit video\",\n\"Insert\\/edit video\": \"Vlo\\u017eit \\/ upravit video\",\n\"Insert\\/edit media\": \"Vlo\\u017eit \\/ upravit m\\u00e9dia\",\n\"Alternative source\": \"Alternativn\\u00ed zdroj\",\n\"Alternative source URL\": \"Alternativn\\u00ed zdrojov\\u00e1 URL\",\n\"Media poster (Image URL)\": \"Medi\\u00e1ln\\u00ed plak\\u00e1t (URL obr\\u00e1zku)\",\n\"Paste your embed code below:\": \"Vlo\\u017ete k\\u00f3d pro vlo\\u017een\\u00ed n\\u00ed\\u017ee:\",\n\"Embed\": \"Vlo\\u017eit\",\n\"Media...\": \"M\\u00e9dium...\",\n\"Nonbreaking space\": \"Pevn\\u00e1 mezera\",\n\"Page break\": \"Konec str\\u00e1nky\",\n\"Paste as text\": \"Vlo\\u017eit jako \\u010dist\\u00fd text\",\n\"Preview\": \"N\\u00e1hled\",\n\"Print...\": \"Tisk...\",\n\"Save\": \"Ulo\\u017eit\",\n\"Find\": \"Naj\\u00edt\",\n\"Replace with\": \"Nahradit za\",\n\"Replace\": \"Nahradit\",\n\"Replace all\": \"Nahradit v\\u0161e\",\n\"Previous\": \"P\\u0159edchoz\\u00ed\",\n\"Next\": \"Dal\\u0161\\u00ed\",\n\"Find and replace...\": \"Naj\\u00edt a nahradit...\",\n\"Could not find the specified string.\": \"Zadan\\u00fd \\u0159et\\u011bzec nebyl nalezen.\",\n\"Match case\": \"Rozli\\u0161ovat mal\\u00e1 a velk\\u00e1 p\\u00edsmena\",\n\"Find whole words only\": \"Hledat pouze cel\\u00e1 slova\",\n\"Spell check\": \"Kontrola pravopisu\",\n\"Ignore\": \"Ignorovat\",\n\"Ignore all\": \"Ignorovat v\\u0161e\",\n\"Finish\": \"Ukon\\u010dit\",\n\"Add to Dictionary\": \"P\\u0159idat do slovn\\u00edku\",\n\"Insert table\": \"Vlo\\u017eit tabulku\",\n\"Table properties\": \"Vlastnosti tabulky\",\n\"Delete table\": \"Smazat tabulku\",\n\"Cell\": \"Bu\\u0148ka\",\n\"Row\": \"\\u0158\\u00e1dek\",\n\"Column\": \"Sloupec\",\n\"Cell properties\": \"Vlastnosti bu\\u0148ky\",\n\"Merge cells\": \"Slou\\u010dit bu\\u0148ky\",\n\"Split cell\": \"Rozd\\u011blit bu\\u0148ky\",\n\"Insert row before\": \"Vlo\\u017eit \\u0159\\u00e1dek nad\",\n\"Insert row after\": \"Vlo\\u017eit \\u0159\\u00e1dek pod\",\n\"Delete row\": \"Smazat \\u0159\\u00e1dek\",\n\"Row properties\": \"Vlastnosti \\u0159\\u00e1dku\",\n\"Cut row\": \"Vyjmout \\u0159\\u00e1dek\",\n\"Copy row\": \"Kop\\u00edrovat \\u0159\\u00e1dek\",\n\"Paste row before\": \"Vlo\\u017eit \\u0159\\u00e1dek nad\",\n\"Paste row after\": \"Vlo\\u017eit \\u0159\\u00e1dek pod\",\n\"Insert column before\": \"Vlo\\u017eit sloupec vlevo\",\n\"Insert column after\": \"Vlo\\u017eit sloupec vpravo\",\n\"Delete column\": \"Smazat sloupec\",\n\"Cols\": \"Sloupc\\u016f\",\n\"Rows\": \"\\u0158\\u00e1dek\",\n\"Width\": \"\\u0160\\u00ed\\u0159ka\",\n\"Height\": \"V\\u00fd\\u0161ka\",\n\"Cell spacing\": \"Vn\\u011bj\\u0161\\u00ed okraj bun\\u011bk\",\n\"Cell padding\": \"Vnit\\u0159n\\u00ed okraj bun\\u011bk\",\n\"Show caption\": \"Zobrazit titulku\",\n\"Left\": \"Vlevo\",\n\"Center\": \"Na st\\u0159ed\",\n\"Right\": \"Vpravo\",\n\"Cell type\": \"Typ bu\\u0148ky\",\n\"Scope\": \"Rozsah\",\n\"Alignment\": \"Zarovn\\u00e1n\\u00ed\",\n\"H Align\": \"Horizont\\u00e1ln\\u00ed zarovn\\u00e1n\\u00ed\",\n\"V Align\": \"Vertik\\u00e1ln\\u00ed zarovn\\u00e1n\\u00ed\",\n\"Top\": \"Nahoru\",\n\"Middle\": \"Uprost\\u0159ed\",\n\"Bottom\": \"Dol\\u016f\",\n\"Header cell\": \"Hlavi\\u010dkov\\u00e1 bu\\u0148ka\",\n\"Row group\": \"Skupina \\u0159\\u00e1dk\\u016f\",\n\"Column group\": \"Skupina sloupc\\u016f\",\n\"Row type\": \"Typ \\u0159\\u00e1dku\",\n\"Header\": \"Hlavi\\u010dka\",\n\"Body\": \"T\\u011blo\",\n\"Footer\": \"Pati\\u010dka\",\n\"Border color\": \"Barva r\\u00e1me\\u010dku\",\n\"Insert template...\": \"Vlo\\u017eit \\u0161ablonu...\",\n\"Templates\": \"\\u0160ablony\",\n\"Template\": \"\\u0160ablona\",\n\"Text color\": \"Barva p\\u00edsma\",\n\"Background color\": \"Barva pozad\\u00ed\",\n\"Custom...\": \"Vlastn\\u00ed...\",\n\"Custom color\": \"Vlastn\\u00ed barva\",\n\"No color\": \"Bez barvy\",\n\"Remove color\": \"Odebrat barvu\",\n\"Table of Contents\": \"Obsah\",\n\"Show blocks\": \"Uk\\u00e1zat bloky\",\n\"Show invisible characters\": \"Zobrazit speci\\u00e1ln\\u00ed znaky\",\n\"Word count\": \"Po\\u010det slov\",\n\"Count\": \"Po\\u010det\",\n\"Document\": \"Dokument\",\n\"Selection\": \"V\\u00fdb\\u011br\",\n\"Words\": \"Slova\",\n\"Words: {0}\": \"Po\\u010det slov: {0}\",\n\"{0} words\": \"Po\\u010det slov: {0}\",\n\"File\": \"Soubor\",\n\"Edit\": \"\\u00dapravy\",\n\"Insert\": \"Vlo\\u017eit\",\n\"View\": \"Zobrazit\",\n\"Format\": \"Form\\u00e1t\",\n\"Table\": \"Tabulka\",\n\"Tools\": \"N\\u00e1stroje\",\n\"Powered by {0}\": \"Vytvo\\u0159il {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Editor. Stiskn\\u011bte ALT-F9 pro menu, ALT-F10 pro n\\u00e1strojovou li\\u0161tu a ALT-0 pro n\\u00e1pov\\u011bdu.\",\n\"Image title\": \"N\\u00e1zev obr\\u00e1zku\",\n\"Border width\": \"\\u0160\\u00ed\\u0159ka ohrani\\u010den\\u00ed\",\n\"Border style\": \"Styl ohrani\\u010den\\u00ed\",\n\"Error\": \"Chyba\",\n\"Warn\": \"Varov\\u00e1n\\u00ed\",\n\"Valid\": \"Platn\\u00fd\",\n\"To open the popup, press Shift+Enter\": \"Vyskakovac\\u00ed okno otev\\u0159ete stisknut\\u00edm Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Oblast Rich Text, stiskn\\u011bte ALT-0 pro n\\u00e1pov\\u011bdu.\",\n\"System Font\": \"Syst\\u00e9mov\\u00e9 p\\u00edsmo\",\n\"Failed to upload image: {0}\": \"Nahr\\u00e1n\\u00ed obr\\u00e1zku selhalo:\",\n\"Failed to load plugin: {0} from url {1}\": \"Na\\u010dten\\u00ed z\\u00e1suvn\\u00e9ho modulu selhalo: {0} z URL {1}\",\n\"Failed to load plugin url: {0}\": \"Na\\u010dten\\u00ed z\\u00e1suvn\\u00e9ho modulu URL selhalo: {0}\",\n\"Failed to initialize plugin: {0}\": \"Inicializace z\\u00e1suvn\\u00e9ho modulu selhala:\",\n\"example\": \"p\\u0159\\u00edklad\",\n\"Search\": \"Hledat\",\n\"All\": \"V\\u0161e\",\n\"Currency\": \"M\\u011bna\",\n\"Text\": \"Text\",\n\"Quotations\": \"Citace\",\n\"Mathematical\": \"Matematick\\u00e9 symboly\",\n\"Extended Latin\": \"Roz\\u0161\\u00ed\\u0159en\\u00e9 Latin\",\n\"Symbols\": \"Symboly\",\n\"Arrows\": \"\\u0160ipky\",\n\"User Defined\": \"Definovan\\u00e9 u\\u017eivatelem\",\n\"dollar sign\": \"znak dolaru\",\n\"currency sign\": \"znak m\\u011bny\",\n\"euro-currency sign\": \"znak m\\u011bny euro\",\n\"colon sign\": \"znak dvojte\\u010dky\",\n\"cruzeiro sign\": \"znak cruzeiro\",\n\"french franc sign\": \"znak francouzsk\\u00e9ho franku\",\n\"lira sign\": \"znak liry\",\n\"mill sign\": \"znak mill\",\n\"naira sign\": \"znak nairy\",\n\"peseta sign\": \"znak pesety\",\n\"rupee sign\": \"znak rupie\",\n\"won sign\": \"znak wonu\",\n\"new sheqel sign\": \"znak nov\\u00e9ho \\u0161ekelu\",\n\"dong sign\": \"znak dongu\",\n\"kip sign\": \"znak kipu\",\n\"tugrik sign\": \"znak tugriku\",\n\"drachma sign\": \"znak drachmy\",\n\"german penny symbol\": \"znak n\\u011bmeck\\u00e9ho feniku\",\n\"peso sign\": \"znak pesa\",\n\"guarani sign\": \"znak guaran\\u00ed\",\n\"austral sign\": \"znak austral\",\n\"hryvnia sign\": \"znak h\\u0159ivny\",\n\"cedi sign\": \"znak cedi\",\n\"livre tournois sign\": \"znak tournois libry\",\n\"spesmilo sign\": \"znak spesmilo\",\n\"tenge sign\": \"znak tenge\",\n\"indian rupee sign\": \"znak indick\\u00e9 rupie\",\n\"turkish lira sign\": \"znak tureck\\u00e9 liry\",\n\"nordic mark sign\": \"znak norsk\\u00e9 marky\",\n\"manat sign\": \"znak manatu\",\n\"ruble sign\": \"znak rublu\",\n\"yen character\": \"znak jenu\",\n\"yuan character\": \"znak juanu\",\n\"yuan character, in hong kong and taiwan\": \"znak juanu v hongkongu a tchaj-wanu\",\n\"yen\\/yuan character variant one\": \"znak jenu\\/juanu, varianta 1\",\n\"Loading emoticons...\": \"Na\\u010d\\u00edt\\u00e1n\\u00ed emotikon\\u016f...\",\n\"Could not load emoticons\": \"Nelze na\\u010d\\u00edst emotikony\",\n\"People\": \"Lid\\u00e9\",\n\"Animals and Nature\": \"Zv\\u00ed\\u0159ata a p\\u0159\\u00edroda\",\n\"Food and Drink\": \"J\\u00eddlo a pit\\u00ed\",\n\"Activity\": \"Aktivita\",\n\"Travel and Places\": \"Cestov\\u00e1n\\u00ed a m\\u00edsta\",\n\"Objects\": \"Objekty\",\n\"Flags\": \"Vlajky\",\n\"Characters\": \"Znaky\",\n\"Characters (no spaces)\": \"Znaky (bez mezer)\",\n\"{0} characters\": \"{0} znak\\u016f\",\n\"Error: Form submit field collision.\": \"Chyba: Kolize odes\\u00edlac\\u00edho formul\\u00e1\\u0159ov\\u00e9ho pole.\",\n\"Error: No form element found.\": \"Chyba: Nebyl nalezen \\u017e\\u00e1dn\\u00fd prvek formul\\u00e1\\u0159e.\",\n\"Update\": \"Aktualizovat\",\n\"Color swatch\": \"Vzorek barvy\",\n\"Turquoise\": \"Tyrkysov\\u00e1\",\n\"Green\": \"Zelen\\u00e1\",\n\"Blue\": \"Modr\\u00e1\",\n\"Purple\": \"Fialov\\u00e1\",\n\"Navy Blue\": \"N\\u00e1mo\\u0159nick\\u00e1 mod\\u0159\",\n\"Dark Turquoise\": \"Tmav\\u011b tyrkysov\\u00e1\",\n\"Dark Green\": \"Tmav\\u011b zelen\\u00e1\",\n\"Medium Blue\": \"St\\u0159edn\\u011b modr\\u00e1\",\n\"Medium Purple\": \"St\\u0159edn\\u011b fialov\\u00e1\",\n\"Midnight Blue\": \"P\\u016flno\\u010dn\\u00ed modr\\u00e1\",\n\"Yellow\": \"\\u017dlut\\u00e1\",\n\"Orange\": \"Oran\\u017eov\\u00e1\",\n\"Red\": \"\\u010cerven\\u00e1\",\n\"Light Gray\": \"Sv\\u011btle \\u0161ed\\u00e1\",\n\"Gray\": \"\\u0160ed\\u00e1\",\n\"Dark Yellow\": \"Tmav\\u011b \\u017elut\\u00e1\",\n\"Dark Orange\": \"Tmav\\u011b oran\\u017eov\\u00e1\",\n\"Dark Red\": \"Tmav\\u011b \\u010derven\\u00e1\",\n\"Medium Gray\": \"St\\u0159edn\\u011b \\u0161ed\\u00e1\",\n\"Dark Gray\": \"Tmav\\u011b \\u0161ed\\u00e1\",\n\"Light Green\": \"Sv\\u011btle zelen\\u00e1\",\n\"Light Yellow\": \"Sv\\u011btle \\u017elut\\u00e1\",\n\"Light Red\": \"Sv\\u011btle \\u010derven\\u00e1\",\n\"Light Purple\": \"Sv\\u011btle fialov\\u00e1\",\n\"Light Blue\": \"Sv\\u011btle modr\\u00e1\",\n\"Dark Purple\": \"Tmav\\u011b fialov\\u00e1\",\n\"Dark Blue\": \"Tmav\\u011b modr\\u00e1\",\n\"Black\": \"\\u010cern\\u00e1\",\n\"White\": \"B\\u00edl\\u00e1\",\n\"Switch to or from fullscreen mode\": \"P\\u0159ep\\u00edn\\u00e1n\\u00ed mezi re\\u017eimem cel\\u00e9 obrazovky\",\n\"Open help dialog\": \"Otev\\u0159\\u00edt okno n\\u00e1pov\\u011bdy\",\n\"history\": \"historie\",\n\"styles\": \"styly\",\n\"formatting\": \"form\\u00e1tov\\u00e1n\\u00ed\",\n\"alignment\": \"zarovn\\u00e1n\\u00ed\",\n\"indentation\": \"odsazen\\u00ed\",\n\"permanent pen\": \"permanentn\\u00ed pero\",\n\"comments\": \"koment\\u00e1\\u0159e\",\n\"Format Painter\": \"Kop\\u00edrovat form\\u00e1t\",\n\"Insert\\/edit iframe\": \"Vlo\\u017eit\\/upravit prvek iframe\",\n\"Capitalization\": \"Velk\\u00e1 p\\u00edsmena\",\n\"lowercase\": \"mal\\u00e1 p\\u00edsmena\",\n\"UPPERCASE\": \"VELK\\u00c1 P\\u00cdSMENA\",\n\"Title Case\": \"V\\u0161echna Prvn\\u00ed Velk\\u00e1\",\n\"Permanent Pen Properties\": \"Vlastnosti permanentn\\u00edho pera\",\n\"Permanent pen properties...\": \"Vlastnosti permanentn\\u00edho pera\\u2026\",\n\"Font\": \"P\\u00edsmo\",\n\"Size\": \"Velikost\",\n\"More...\": \"Dal\\u0161\\u00ed\\u2026\",\n\"Spellcheck Language\": \"Jazyk kontroly pravopisu\",\n\"Select...\": \"Vybrat\\u2026\",\n\"Preferences\": \"P\\u0159edvolby\",\n\"Yes\": \"Ano\",\n\"No\": \"Ne\",\n\"Keyboard Navigation\": \"Navigace pomoc\\u00ed kl\\u00e1vesnice\",\n\"Version\": \"Verze\",\n\"Anchor\": \"Kotva\",\n\"Special character\": \"Speci\\u00e1ln\\u00ed znak\",\n\"Code sample\": \"Uk\\u00e1zkov\\u00fd k\\u00f3d\",\n\"Color\": \"Barva\",\n\"Emoticons\": \"Emotikony\",\n\"Document properties\": \"Vlastnosti dokumentu\",\n\"Image\": \"Obr\\u00e1zek\",\n\"Insert link\": \"Vlo\\u017eit odkaz\",\n\"Target\": \"C\\u00edl\",\n\"Link\": \"Odkaz\",\n\"Poster\": \"N\\u00e1hled\",\n\"Media\": \"M\\u00e9dia\",\n\"Print\": \"Tisk\",\n\"Prev\": \"P\\u0159edchoz\\u00ed\",\n\"Find and replace\": \"Naj\\u00edt a nahradit\",\n\"Whole words\": \"Pouze cel\\u00e1 slova\",\n\"Spellcheck\": \"Kontrola pravopisu\",\n\"Caption\": \"Nadpis\",\n\"Insert template\": \"Vlo\\u017eit \\u0161ablonu\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/cy.js",
    "content": "tinymce.addI18n('cy',{\n\"Redo\": \"Ailwneud\",\n\"Undo\": \"Dadwneud\",\n\"Cut\": \"Torri\",\n\"Copy\": \"Cop\\u00efo\",\n\"Paste\": \"Gludo\",\n\"Select all\": \"Dewis popeth\",\n\"New document\": \"Dogfen newydd\",\n\"Ok\": \"Iawn\",\n\"Cancel\": \"Canslo\",\n\"Visual aids\": \"Cymorth gweledol\",\n\"Bold\": \"Bras\",\n\"Italic\": \"Italig\",\n\"Underline\": \"Tanlinellu\",\n\"Strikethrough\": \"Llinell drwodd\",\n\"Superscript\": \"Uwchsgript\",\n\"Subscript\": \"Is-sgript\",\n\"Clear formatting\": \"Clirio pob fformat\",\n\"Align left\": \"Aliniad chwith\",\n\"Align center\": \"Aliniad canol\",\n\"Align right\": \"Aliniad de\",\n\"Justify\": \"Unioni\",\n\"Bullet list\": \"Rhestr fwled\",\n\"Numbered list\": \"Rhestr rifol\",\n\"Decrease indent\": \"Lleihau mewnoliad\",\n\"Increase indent\": \"Cynyddu mewnoliad\",\n\"Close\": \"Cau\",\n\"Formats\": \"Fformatau\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Dyw eich porwr ddim yn cynnal mynediad uniongyrchol i'r clipfwrdd. Yn hytrach defnyddiwch y bysellau llwybrau byr Ctrl+X\\/C\\/V.\",\n\"Headers\": \"Penawdau\",\n\"Header 1\": \"Pennawd 1\",\n\"Header 2\": \"Pennawd 2\",\n\"Header 3\": \"Pennawd 3\",\n\"Header 4\": \"Pennawd 4\",\n\"Header 5\": \"Pennawd 5\",\n\"Header 6\": \"Pennawd 6\",\n\"Headings\": \"Penawdau\",\n\"Heading 1\": \"Pennawd 1\",\n\"Heading 2\": \"Pennawd 2\",\n\"Heading 3\": \"Pennawd 3\",\n\"Heading 4\": \"Pennawd 4\",\n\"Heading 5\": \"Pennawd 5\",\n\"Heading 6\": \"Pennawd 6\",\n\"Preformatted\": \"Wedi ei rag-fformatio\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Cod\",\n\"Paragraph\": \"Paragraff\",\n\"Blockquote\": \"Dyfyniad Bloc\",\n\"Inline\": \"Mewnlin\",\n\"Blocks\": \"Blociau\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Mae gludo nawr yn gweithio yn y modd testun plaen.  Caiff testun plaen ei ludo nawr tan gaiff yr opsiwn ei doglo i'w ddiffodd.\",\n\"Fonts\": \"Ffontau\",\n\"Font Sizes\": \"Meintiau Ffont\",\n\"Class\": \"Dosbarth\",\n\"Browse for an image\": \"Pori am ddelwedd\",\n\"OR\": \"NEU\",\n\"Drop an image here\": \"Gollwng delwedd yma\",\n\"Upload\": \"Uwchlwytho\",\n\"Block\": \"Bloc\",\n\"Align\": \"Alinio\",\n\"Default\": \"Diofyn\",\n\"Circle\": \"Cylch\",\n\"Disc\": \"Disg\",\n\"Square\": \"Sgw\\u00e2r\",\n\"Lower Alpha\": \"Alffa Is\",\n\"Lower Greek\": \"Groeg Is\",\n\"Lower Roman\": \"Rhufeinig Is\",\n\"Upper Alpha\": \"Alffa Uwch\",\n\"Upper Roman\": \"Rhufeinig Uwch\",\n\"Anchor...\": \"Angor...\",\n\"Name\": \"Enw\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Dylai Id gychwyn gyda llythyren ac yna dim ond llythrennau, rhifau, llinellau toriad,dotiau, colonau neu danlinellau.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Mae newidiadau heb eu cadw - ydych chi wir am symud i ffwrdd?\",\n\"Restore last draft\": \"Adfer y drafft olaf\",\n\"Special character...\": \"Nod arbennig...\",\n\"Source code\": \"Cod gwreiddiol\",\n\"Insert\\/Edit code sample\": \"Mewnosod\\/golygu sampl cod\",\n\"Language\": \"Iaith\",\n\"Code sample...\": \"Sampl cod...\",\n\"Color Picker\": \"Dewisydd Lliw\",\n\"R\": \"C\",\n\"G\": \"Gw\",\n\"B\": \"Gl\",\n\"Left to right\": \"Chwith i'r dde\",\n\"Right to left\": \"De i'r chwith\",\n\"Emoticons...\": \"Gwenogluniau...\",\n\"Metadata and Document Properties\": \"Metaddata a Priodweddau'r ddogfen\",\n\"Title\": \"Teitl\",\n\"Keywords\": \"Allweddeiriau\",\n\"Description\": \"Disgrifiad\",\n\"Robots\": \"Robotiaid\",\n\"Author\": \"Awdur\",\n\"Encoding\": \"Amgodiad\",\n\"Fullscreen\": \"Sgrin llawn\",\n\"Action\": \"Gweithred\",\n\"Shortcut\": \"Llwybr Byr\",\n\"Help\": \"Help\",\n\"Address\": \"Cyfeiriad\",\n\"Focus to menubar\": \"Ffocws i'r bar dewislen\",\n\"Focus to toolbar\": \"Ffocws i'r bar offer\",\n\"Focus to element path\": \"Ffocws i lwybr elfen\",\n\"Focus to contextual toolbar\": \"Ffocws i far offer y cyd-destun\",\n\"Insert link (if link plugin activated)\": \"Mewnosod dolen (os yw'r ategyn dolen yn weithredol)\",\n\"Save (if save plugin activated)\": \"Cadw (os yw'r ategyn cadw yn weithredol)\",\n\"Find (if searchreplace plugin activated)\": \"Canfod (os yw'r ategyn chwilio ac amnewid yn weithredol)\",\n\"Plugins installed ({0}):\": \"Ategio wedi eu gosod ({0}):\",\n\"Premium plugins:\": \"Ategion premiwm:\",\n\"Learn more...\": \"Dysgu Mwy...\",\n\"You are using {0}\": \"Rydych yn defnyddio {0}\",\n\"Plugins\": \"Ategion\",\n\"Handy Shortcuts\": \"Llwybrau byr cyfleus\",\n\"Horizontal line\": \"Llinell lorweddol\",\n\"Insert\\/edit image\": \"Mewnosod\\/golygu delwedd\",\n\"Image description\": \"Disgrifiad y ddelwedd\",\n\"Source\": \"Ffynhonnell\",\n\"Dimensions\": \"Dimensiynau\",\n\"Constrain proportions\": \"Gorfodi cyfrannedd\",\n\"General\": \"Cyffredinol\",\n\"Advanced\": \"Uwch\",\n\"Style\": \"Arddull\",\n\"Vertical space\": \"Gofod fertigol\",\n\"Horizontal space\": \"Gofod llorweddol\",\n\"Border\": \"Border\",\n\"Insert image\": \"Mewnosod delwedd\",\n\"Image...\": \"Delwedd...\",\n\"Image list\": \"Rhestr delweddau\",\n\"Rotate counterclockwise\": \"Troi gwrthgloc\",\n\"Rotate clockwise\": \"Troi clocwedd\",\n\"Flip vertically\": \"Fflipio fertigol\",\n\"Flip horizontally\": \"Fflipio llorweddol\",\n\"Edit image\": \"Golygu delwedd\",\n\"Image options\": \"Dewisiadau delwedd\",\n\"Zoom in\": \"Chwyddo mewn\",\n\"Zoom out\": \"Chwyddo allan\",\n\"Crop\": \"Tocio\",\n\"Resize\": \"Ailfeintio\",\n\"Orientation\": \"Cyfeiriadaeth\",\n\"Brightness\": \"Disgleirdeb\",\n\"Sharpen\": \"Hogi\",\n\"Contrast\": \"Cyferbynnedd\",\n\"Color levels\": \"Lefelau Lliw\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Gwrthdroi\",\n\"Apply\": \"Rhoi ar waith\",\n\"Back\": \"Nol\",\n\"Insert date\\/time\": \"Mewnosod dyddiad\\/amser\",\n\"Date\\/time\": \"Dyddiad\\/amser\",\n\"Insert\\/Edit Link\": \"Mewnosod\\/Golygu dolen\",\n\"Insert\\/edit link\": \"Mewnosod\\/golygu dolen\",\n\"Text to display\": \"Testun i'w ddangos\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Agor dolen yn...\",\n\"Current window\": \"Ffenestr gyfredol\",\n\"None\": \"Dim\",\n\"New window\": \"Ffenest newydd\",\n\"Remove link\": \"Tynnu dolen\",\n\"Anchors\": \"Angorau\",\n\"Link...\": \"Dolen...\",\n\"Paste or type a link\": \"Pastio neu deipio dolen\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Mae'n debyg mai cyfeiriad e-bost yw'r URL hwn. Ydych chi am ychwanegu'r rhagddoddiad mailto:?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Mae'n debyg mai dolen allanol yw'r URL hwn. Ydych chi am ychwanegu'r rhagddodiad http:\\/\\/ ?\",\n\"Link list\": \"Rhestr dolenni\",\n\"Insert video\": \"Mewnosod fideo\",\n\"Insert\\/edit video\": \"Mewnosod\\/golygu fideo\",\n\"Insert\\/edit media\": \"Mewnosod\\/golygu cyfrwng\",\n\"Alternative source\": \"Ffynhonnell amgen\",\n\"Alternative source URL\": \"Ffynhonnell URL arall\",\n\"Media poster (Image URL)\": \"Poster cyfrwng (URL delwedd)\",\n\"Paste your embed code below:\": \"Gludwch eich cod mewnosod isod:\",\n\"Embed\": \"Mewnosod\",\n\"Media...\": \"Cyfrwng...\",\n\"Nonbreaking space\": \"Bwlch heb dorri\",\n\"Page break\": \"Toriad tudalen\",\n\"Paste as text\": \"Gludo fel testun\",\n\"Preview\": \"Rhagolwg\",\n\"Print...\": \"Argraffu...\",\n\"Save\": \"Cadw\",\n\"Find\": \"Chwilio\",\n\"Replace with\": \"Amnewid gyda\",\n\"Replace\": \"Amnewid\",\n\"Replace all\": \"Amnewid y cwbl\",\n\"Previous\": \"Blaenorol\",\n\"Next\": \"Nesaf\",\n\"Find and replace...\": \"Chwilio ac amnewid\",\n\"Could not find the specified string.\": \"Methu ffeindio'r llinyn hwnnw.\",\n\"Match case\": \"Cas yn cyfateb\",\n\"Find whole words only\": \"Canfod geiriau llawn yn unig\",\n\"Spell check\": \"Gwirwr sillafu\",\n\"Ignore\": \"Anwybyddu\",\n\"Ignore all\": \"Amwybyddu pob\",\n\"Finish\": \"Gorffen\",\n\"Add to Dictionary\": \"Adio i'r Geiriadur\",\n\"Insert table\": \"Mewnosod tabl\",\n\"Table properties\": \"Priodweddau tabl\",\n\"Delete table\": \"Dileu'r tabl\",\n\"Cell\": \"Cell\",\n\"Row\": \"Rhes\",\n\"Column\": \"Colofn\",\n\"Cell properties\": \"Priodweddau'r gell\",\n\"Merge cells\": \"Cyfuno celloedd\",\n\"Split cell\": \"Hollti celloedd\",\n\"Insert row before\": \"Mewnosod rhes cyn\",\n\"Insert row after\": \"Mewnosod rhes ar \\u00f4l\",\n\"Delete row\": \"Dileu rhes\",\n\"Row properties\": \"Priodweddau rhes\",\n\"Cut row\": \"Torri rhes\",\n\"Copy row\": \"Cop\\u00efo rhes\",\n\"Paste row before\": \"Gludo rhes cyn\",\n\"Paste row after\": \"Gludo rhes ar \\u00f4l\",\n\"Insert column before\": \"Mewnosod colofn cyn\",\n\"Insert column after\": \"Mewnosod colofn ar \\u00f4l\",\n\"Delete column\": \"Dileu colofn\",\n\"Cols\": \"Colofnau\",\n\"Rows\": \"Rhesi\",\n\"Width\": \"Lled\",\n\"Height\": \"Uchder\",\n\"Cell spacing\": \"Bylchiad celloedd\",\n\"Cell padding\": \"Padio celloedd\",\n\"Show caption\": \"Dangos capsiwn\",\n\"Left\": \"Chwith\",\n\"Center\": \"Canol\",\n\"Right\": \"De\",\n\"Cell type\": \"Math y gell\",\n\"Scope\": \"Cwmpas\",\n\"Alignment\": \"Aliniad\",\n\"H Align\": \"Aliniad Ll\",\n\"V Align\": \"Aliniad F\",\n\"Top\": \"Brig\",\n\"Middle\": \"Canol\",\n\"Bottom\": \"Gwaelod\",\n\"Header cell\": \"Cell bennawd\",\n\"Row group\": \"Gr\\u0175p rhes\",\n\"Column group\": \"Gr\\u0175p colofn\",\n\"Row type\": \"Math y rhes\",\n\"Header\": \"Pennyn\",\n\"Body\": \"Corff\",\n\"Footer\": \"Troedyn\",\n\"Border color\": \"Lliw Border\",\n\"Insert template...\": \"Mewnosod templed...\",\n\"Templates\": \"Templedi\",\n\"Template\": \"Templed\",\n\"Text color\": \"Lliw testun\",\n\"Background color\": \"Lliw cefndir\",\n\"Custom...\": \"Personol...\",\n\"Custom color\": \"Lliw personol\",\n\"No color\": \"Dim Lliw\",\n\"Remove color\": \"Tynnu lliw\",\n\"Table of Contents\": \"Tabl Cynnwys\",\n\"Show blocks\": \"Dangos blociau\",\n\"Show invisible characters\": \"Dangos nodau anweledig\",\n\"Word count\": \"Cyfri geiriau\",\n\"Count\": \"Cyfrif\",\n\"Document\": \"Dogfen\",\n\"Selection\": \"Dewis\",\n\"Words\": \"Geiriau\",\n\"Words: {0}\": \"Geiriau: {0}\",\n\"{0} words\": \"{0} o eiriau\",\n\"File\": \"Ffeil\",\n\"Edit\": \"Golygu\",\n\"Insert\": \"Mewnosod\",\n\"View\": \"Dangos\",\n\"Format\": \"Fformat\",\n\"Table\": \"Tabl\",\n\"Tools\": \"Offer\",\n\"Powered by {0}\": \"Gyrrir gan {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Ardal Testun Uwch. Pwyswch ALT-F9 ar gyfer y ddewislen, Pwyswch ALT-F10 ar gyfer y bar offer. Pwyswch ALT-0 am gymorth\",\n\"Image title\": \"Teitl delwedd\",\n\"Border width\": \"Lled border\",\n\"Border style\": \"Steil border\",\n\"Error\": \"Gwall\",\n\"Warn\": \"Rhybuddio\",\n\"Valid\": \"Dilys\",\n\"To open the popup, press Shift+Enter\": \"I agor y llamlen, pwyswch Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Ardal testun cyfoethog. Pwyswch ALT-0 am help.\",\n\"System Font\": \"Ffont system\",\n\"Failed to upload image: {0}\": \"Wedi methu uwchlwytho'r ddelwedd: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Wedi methu llwytho'r ategyn: {0} o'r url {1}\",\n\"Failed to load plugin url: {0}\": \"Wedi methu llwytho url yr ategyn: {0}\",\n\"Failed to initialize plugin: {0}\": \"Wedi methu ymgychwyn yr ategyn: {0}\",\n\"example\": \"enghraifft\",\n\"Search\": \"Chwilio\",\n\"All\": \"Y cwbl\",\n\"Currency\": \"Arian cyfred\",\n\"Text\": \"Testun\",\n\"Quotations\": \"Dyfyniadau\",\n\"Mathematical\": \"Mathemategol\",\n\"Extended Latin\": \"Lladin estynedig\",\n\"Symbols\": \"Symbolau\",\n\"Arrows\": \"Saethau\",\n\"User Defined\": \"Diffinir gan y defnyddiwr\",\n\"dollar sign\": \"Arwydd dolar\",\n\"currency sign\": \"Arwydd arian cyfred\",\n\"euro-currency sign\": \"Arwydd euro\",\n\"colon sign\": \"Arwydd colon\",\n\"cruzeiro sign\": \"Arwydd cruzeiro\",\n\"french franc sign\": \"Arwydd ffranc Ffrengig\",\n\"lira sign\": \"Arwydd lira\",\n\"mill sign\": \"arwydd mill\",\n\"naira sign\": \"arwydd naira\",\n\"peseta sign\": \"arwydd peseta\",\n\"rupee sign\": \"arwydd rupee\",\n\"won sign\": \"arwydd won\",\n\"new sheqel sign\": \"arwydd sheqel newydd\",\n\"dong sign\": \"arwydd dong\",\n\"kip sign\": \"arwydd kip\",\n\"tugrik sign\": \"arwydd tugrik\",\n\"drachma sign\": \"arwydd drachma\",\n\"german penny symbol\": \"arwydd ceiniog almaenig\",\n\"peso sign\": \"arwydd peso\",\n\"guarani sign\": \"arwydd quarani\",\n\"austral sign\": \"arwydd austral\",\n\"hryvnia sign\": \"arwydd hryvnia\",\n\"cedi sign\": \"arwydd cedi\",\n\"livre tournois sign\": \"arwydd punt tournois\",\n\"spesmilo sign\": \"arwydd spesmilo\",\n\"tenge sign\": \"arwydd tenge\",\n\"indian rupee sign\": \"arwydd rupee india\",\n\"turkish lira sign\": \"arwydd lira twrcaidd\",\n\"nordic mark sign\": \"arwydd marc nordig\",\n\"manat sign\": \"arwydd manat\",\n\"ruble sign\": \"arwydd ruble\",\n\"yen character\": \"nod yen\",\n\"yuan character\": \"nod yuan\",\n\"yuan character, in hong kong and taiwan\": \"nod yuan yn Hong Kong a Taiwan\",\n\"yen\\/yuan character variant one\": \"nod yen\\/yuan amrywiad un\",\n\"Loading emoticons...\": \"Yn llwytho gwenogluniau\",\n\"Could not load emoticons\": \"Wedi methu llwytho gwenogluniau\",\n\"People\": \"Pobl\",\n\"Animals and Nature\": \"Anifeiliaid a Natur\",\n\"Food and Drink\": \"Bwyd a Diod\",\n\"Activity\": \"Gweithgaredd\",\n\"Travel and Places\": \"Teithio a lleoedd\",\n\"Objects\": \"Gwrthrychau\",\n\"Flags\": \"Baneri\",\n\"Characters\": \"Nodau\",\n\"Characters (no spaces)\": \"Nodau (dim gofod)\",\n\"{0} characters\": \"{0} nod\",\n\"Error: Form submit field collision.\": \"Gwall: Gwrthdrawiad maes cyflwyno ffurflen\",\n\"Error: No form element found.\": \"Gwall: Ni chafwyd elfen ffurflen\",\n\"Update\": \"Diweddaru\",\n\"Color swatch\": \"Casgliad lliwiau\",\n\"Turquoise\": \"Gwyrddlas\",\n\"Green\": \"Gwyrdd\",\n\"Blue\": \"Glas\",\n\"Purple\": \"Porffor\",\n\"Navy Blue\": \"Dulas\",\n\"Dark Turquoise\": \"Gwyrddlas tywyll\",\n\"Dark Green\": \"Gwyrdd tywyll\",\n\"Medium Blue\": \"Glas canolig\",\n\"Medium Purple\": \"Porffor canolig\",\n\"Midnight Blue\": \"Glas y nos\",\n\"Yellow\": \"Melyn\",\n\"Orange\": \"Oren\",\n\"Red\": \"Coch\",\n\"Light Gray\": \"Llwyd golau\",\n\"Gray\": \"d\",\n\"Dark Yellow\": \"Melyn tywyll\",\n\"Dark Orange\": \"Oren tywyll\",\n\"Dark Red\": \"Coch tywyll\",\n\"Medium Gray\": \"Llwyd canolig\",\n\"Dark Gray\": \"Llwyd tywyll\",\n\"Light Green\": \"Gwyrdd Golau\",\n\"Light Yellow\": \"Melyn Golau\",\n\"Light Red\": \"Coch Golau\",\n\"Light Purple\": \"Porffor Golau\",\n\"Light Blue\": \"Glas Golau\",\n\"Dark Purple\": \"Porffor Tywyll\",\n\"Dark Blue\": \"Glas Tywyll\",\n\"Black\": \"Du\",\n\"White\": \"Gwyn\",\n\"Switch to or from fullscreen mode\": \"Newid i neu o'r modd sgr\\u00een llawn\",\n\"Open help dialog\": \"Agor y ddeialog gymorth\",\n\"history\": \"hanes\",\n\"styles\": \"steiliau\",\n\"formatting\": \"fformatio\",\n\"alignment\": \"aliniad\",\n\"indentation\": \"mewnoli\",\n\"permanent pen\": \"pen sefydlog\",\n\"comments\": \"Sylwadau\",\n\"Format Painter\": \"Brwsh Fformat\",\n\"Insert\\/edit iframe\": \"Mewnosod\\/golygu iframe\",\n\"Capitalization\": \"Priflythrennu\",\n\"lowercase\": \"llythrennau bach\",\n\"UPPERCASE\": \"Priflythrennau\",\n\"Title Case\": \"Priflythyren i bob gair\",\n\"Permanent Pen Properties\": \"Priodweddau Yswgrifbin Parhaol\",\n\"Permanent pen properties...\": \"Priodweddau ysgrifbin parhaol...\",\n\"Font\": \"Ffont\",\n\"Size\": \"Maint\",\n\"More...\": \"Mwy...\",\n\"Spellcheck Language\": \"Iaith Gwirio Sillafu\",\n\"Select...\": \"Dewis...\",\n\"Preferences\": \"Dewisiadau\",\n\"Yes\": \"Iawn\",\n\"No\": \"Na\",\n\"Keyboard Navigation\": \"Llywio Bysellfwrdd\",\n\"Version\": \"Fersiwn\",\n\"Anchor\": \"Angor\",\n\"Special character\": \"Nod arbennig\",\n\"Color\": \"Lliw\",\n\"Emoticons\": \"Gwenogluniau\",\n\"Document properties\": \"Priodweddau'r ddogfen\",\n\"Image\": \"Delwedd\",\n\"Insert link\": \"Mewnosod dolen\",\n\"Link\": \"Dolen\",\n\"Target\": \"Targed\",\n\"Media\": \"Cyfrwng\",\n\"Poster\": \"Poster\",\n\"Print\": \"Argraffu\",\n\"Whole words\": \"Geiriau cyfan\",\n\"Find and replace\": \"Chwilio ac amnewid\",\n\"Prev\": \"Blaenorol\",\n\"Spellcheck\": \"Sillafydd\",\n\"Caption\": \"Pennawd\",\n\"Insert template\": \"Mewnosod templed\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/da.js",
    "content": "tinymce.addI18n('da',{\n\"Redo\": \"Gendan\",\n\"Undo\": \"Fortryd\",\n\"Cut\": \"Klip\",\n\"Copy\": \"Kopier\",\n\"Paste\": \"S\\u00e6t ind\",\n\"Select all\": \"V\\u00e6lg alle\",\n\"New document\": \"Nyt dokument\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Annuller\",\n\"Visual aids\": \"Visuel hj\\u00e6lp\",\n\"Bold\": \"Fed\",\n\"Italic\": \"Kursiv\",\n\"Underline\": \"Understreget\",\n\"Strikethrough\": \"Gennemstreget\",\n\"Superscript\": \"H\\u00e6vet skrift\",\n\"Subscript\": \"S\\u00e6nket skrift\",\n\"Clear formatting\": \"Nulstil formattering\",\n\"Align left\": \"Opstil til venstre\",\n\"Align center\": \"Centrer\",\n\"Align right\": \"Opstil til h\\u00f8jre\",\n\"Justify\": \"Justering\",\n\"Bullet list\": \"Punktopstillet liste\",\n\"Numbered list\": \"Nummereret liste\",\n\"Decrease indent\": \"Formindsk indrykning\",\n\"Increase indent\": \"For\\u00f8g indrykning\",\n\"Close\": \"Luk\",\n\"Formats\": \"Formater\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Din browser underst\\u00f8tter ikke direkte adgang til udklipsholder. Benyt Ctrl+X\\/C\\/ tastaturgenveje i stedet for.\",\n\"Headers\": \"Overskrifter\",\n\"Header 1\": \"Overskrift 1\",\n\"Header 2\": \"Overskrift 2\",\n\"Header 3\": \"Overskrift 3\",\n\"Header 4\": \"Overskrift 4\",\n\"Header 5\": \"Overskrift 5\",\n\"Header 6\": \"Overskrift 6\",\n\"Headings\": \"Overskrifter\",\n\"Heading 1\": \"Overskrift 1\",\n\"Heading 2\": \"Overskrift 2\",\n\"Heading 3\": \"Overskrift 3\",\n\"Heading 4\": \"Overskrift 4\",\n\"Heading 5\": \"Overskrift 5\",\n\"Heading 6\": \"Overskrift 6\",\n\"Preformatted\": \"Forudformateret\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Kode\",\n\"Paragraph\": \"Afsnit\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Inline\",\n\"Blocks\": \"Blokke\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"S\\u00e6t ind er indstillet til at inds\\u00e6tte som ren tekst. Indhold bliver nu indsat uden formatering indtil du \\u00e6ndrer indstillingen.\",\n\"Fonts\": \"Skrifttyper\",\n\"Font Sizes\": \"Skriftst\\u00f8rrelse\",\n\"Class\": \"Class\",\n\"Browse for an image\": \"S\\u00f8g efter et billede\",\n\"OR\": \"OR\",\n\"Drop an image here\": \"Slip et billede her\",\n\"Upload\": \"Upload\",\n\"Block\": \"Blok\\u00e9r\",\n\"Align\": \"Align\",\n\"Default\": \"Standard\",\n\"Circle\": \"Cirkel\",\n\"Disc\": \"Disk\",\n\"Square\": \"Kvadrat\",\n\"Lower Alpha\": \"Lower Alpha\",\n\"Lower Greek\": \"Lower Gr\\u00e6sk\",\n\"Lower Roman\": \"Lower Roman\",\n\"Upper Alpha\": \"Upper Alpha\",\n\"Upper Roman\": \"Upper Roman\",\n\"Anchor...\": \"Anker...\",\n\"Name\": \"Navn\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id b\\u00f8r starte med et bogstav, efterfulgt af bogstaver, tal, bindestreger, punktummer, koloner eller underscores.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Du har ikke gemte \\u00e6ndringer. Er du sikker p\\u00e5 at du vil forts\\u00e6tte?\",\n\"Restore last draft\": \"Genopret sidste kladde\",\n\"Special character...\": \"Specielle tegn...\",\n\"Source code\": \"Kildekode\",\n\"Insert\\/Edit code sample\": \"Inds\\u00e6t\\/Ret kodeeksempel\",\n\"Language\": \"Sprog\",\n\"Code sample...\": \"Kodeeksempel...\",\n\"Color Picker\": \"Farvev\\u00e6lger\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Venstre til h\\u00f8jre\",\n\"Right to left\": \"H\\u00f8jre til venstre\",\n\"Emoticons...\": \"Emotikoner...\",\n\"Metadata and Document Properties\": \"Metadata og dokumentegenskaber\",\n\"Title\": \"Titel\",\n\"Keywords\": \"S\\u00f8geord\",\n\"Description\": \"Beskrivelse\",\n\"Robots\": \"Robotter\",\n\"Author\": \"Forfatter\",\n\"Encoding\": \"Kodning\",\n\"Fullscreen\": \"Fuldsk\\u00e6rm\",\n\"Action\": \"Handling\",\n\"Shortcut\": \"Genvej\",\n\"Help\": \"Hj\\u00e6lp\",\n\"Address\": \"Adresse\",\n\"Focus to menubar\": \"Fokus p\\u00e5 menulinjen\",\n\"Focus to toolbar\": \"Fokus p\\u00e5 v\\u00e6rkt\\u00f8jslinjen\",\n\"Focus to element path\": \"Fokuser p\\u00e5 elementvej\",\n\"Focus to contextual toolbar\": \"Fokuser p\\u00e5 kontekstuelle v\\u00e6rkt\\u00f8jslinje\",\n\"Insert link (if link plugin activated)\": \"Inds\\u00e6t link (hvis link plugin er aktiveret)\",\n\"Save (if save plugin activated)\": \"Gem (hvis save plugin er aktiveret)\",\n\"Find (if searchreplace plugin activated)\": \"Find (hvis searchreplace plugin er aktiveret)\",\n\"Plugins installed ({0}):\": \"Installerede plugins ({0}):\",\n\"Premium plugins:\": \"Premium plugins:\",\n\"Learn more...\": \"L\\u00e6r mere...\",\n\"You are using {0}\": \"Du benytter {0}\",\n\"Plugins\": \"Plugins\",\n\"Handy Shortcuts\": \"Praktiske Genveje\",\n\"Horizontal line\": \"Vandret linie\",\n\"Insert\\/edit image\": \"Inds\\u00e6t\\/ret billede\",\n\"Image description\": \"Billede beskrivelse\",\n\"Source\": \"Kilde\",\n\"Dimensions\": \"Dimensioner\",\n\"Constrain proportions\": \"Behold propertioner\",\n\"General\": \"Generet\",\n\"Advanced\": \"Avanceret\",\n\"Style\": \"Stil\",\n\"Vertical space\": \"Lodret afstand\",\n\"Horizontal space\": \"Vandret afstand\",\n\"Border\": \"Kant\",\n\"Insert image\": \"Inds\\u00e6t billede\",\n\"Image...\": \"Billede...\",\n\"Image list\": \"Billede liste\",\n\"Rotate counterclockwise\": \"Drej modsat urets retning\",\n\"Rotate clockwise\": \"Drej med urets retning\",\n\"Flip vertically\": \"Flip vertikalt\",\n\"Flip horizontally\": \"Flip horisontalt\",\n\"Edit image\": \"Rediger billede\",\n\"Image options\": \"Billede indstillinger\",\n\"Zoom in\": \"Zoom ind\",\n\"Zoom out\": \"Zoom ud\",\n\"Crop\": \"Besk\\u00e6r\",\n\"Resize\": \"Skaler\",\n\"Orientation\": \"Retning\",\n\"Brightness\": \"Lysstyrke\",\n\"Sharpen\": \"G\\u00f8r skarpere\",\n\"Contrast\": \"Kontrast\",\n\"Color levels\": \"Farve niveauer\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Inverter\",\n\"Apply\": \"Anvend\",\n\"Back\": \"Tilbage\",\n\"Insert date\\/time\": \"Inds\\u00e6t dato\\/klokkeslet\",\n\"Date\\/time\": \"Dato\\/klokkeslet\",\n\"Insert\\/Edit Link\": \"Inds\\u00e6t\\/rediger link\",\n\"Insert\\/edit link\": \"Inds\\u00e6t\\/ret link\",\n\"Text to display\": \"Vis tekst\",\n\"Url\": \"Url\",\n\"Open link in...\": \"\\u00c5bn link med...\",\n\"Current window\": \"Aktuelle vindue\",\n\"None\": \"Ingen\",\n\"New window\": \"Nyt vindue\",\n\"Remove link\": \"Fjern link\",\n\"Anchors\": \"Ankre\",\n\"Link...\": \"Link...\",\n\"Paste or type a link\": \"Inds\\u00e6t eller skriv et link\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"URLen som du angav ser ud til at v\\u00e6re en email adresse. \\u00d8nsker du at tilf\\u00f8je det kr\\u00e6vede prefiks  mailto: ?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"URLen som du angav ser ud til at v\\u00e6re et eksternt link. \\u00d8nsker du at tilf\\u00f8je det kr\\u00e6vede prefiks http:\\/\\/ ?\",\n\"Link list\": \"Link liste\",\n\"Insert video\": \"Inds\\u00e6t video\",\n\"Insert\\/edit video\": \"Inds\\u00e6t\\/ret video\",\n\"Insert\\/edit media\": \"Inds\\u00e6t\\/ret medier\",\n\"Alternative source\": \"Alternativ kilde\",\n\"Alternative source URL\": \"Alternativ kilde URL\",\n\"Media poster (Image URL)\": \"Medieplakat (billede URL)\",\n\"Paste your embed code below:\": \"Inds\\u00e6t din embed kode herunder:\",\n\"Embed\": \"Integrer\",\n\"Media...\": \"Medie...\",\n\"Nonbreaking space\": \"H\\u00e5rdt mellemrum\",\n\"Page break\": \"Sideskift\",\n\"Paste as text\": \"Inds\\u00e6t som ren tekst\",\n\"Preview\": \"Forh\\u00e5ndsvisning\",\n\"Print...\": \"Udskriv...\",\n\"Save\": \"Gem\",\n\"Find\": \"Find\",\n\"Replace with\": \"Erstat med\",\n\"Replace\": \"Erstat\",\n\"Replace all\": \"Erstat alt\",\n\"Previous\": \"Forrige\",\n\"Next\": \"N\\u00e6ste\",\n\"Find and replace...\": \"Find og erstat...\",\n\"Could not find the specified string.\": \"Kunne ikke finde s\\u00f8getekst\",\n\"Match case\": \"STORE og sm\\u00e5 bogstaver\",\n\"Find whole words only\": \"Find kun hele ord\",\n\"Spell check\": \"Stavekontrol\",\n\"Ignore\": \"Ignorer\",\n\"Ignore all\": \"Ignorer alt\",\n\"Finish\": \"F\\u00e6rdig\",\n\"Add to Dictionary\": \"Tilf\\u00f8j til ordbog\",\n\"Insert table\": \"Inds\\u00e6t tabel\",\n\"Table properties\": \"Tabel egenskaber\",\n\"Delete table\": \"Slet tabel\",\n\"Cell\": \"Celle\",\n\"Row\": \"R\\u00e6kke\",\n\"Column\": \"Kolonne\",\n\"Cell properties\": \"Celle egenskaber\",\n\"Merge cells\": \"Flet celler\",\n\"Split cell\": \"Split celle\",\n\"Insert row before\": \"Inds\\u00e6t r\\u00e6kke f\\u00f8r\",\n\"Insert row after\": \"Inds\\u00e6t r\\u00e6kke efter\",\n\"Delete row\": \"Slet r\\u00e6kke\",\n\"Row properties\": \"R\\u00e6kke egenskaber\",\n\"Cut row\": \"Klip r\\u00e6kke\",\n\"Copy row\": \"Kopier r\\u00e6kke\",\n\"Paste row before\": \"Inds\\u00e6t r\\u00e6kke f\\u00f8r\",\n\"Paste row after\": \"Inds\\u00e6t r\\u00e6kke efter\",\n\"Insert column before\": \"Inds\\u00e6t kolonne f\\u00f8r\",\n\"Insert column after\": \"Inds\\u00e6t kolonne efter\",\n\"Delete column\": \"Slet kolonne\",\n\"Cols\": \"Kolonne\",\n\"Rows\": \"R\\u00e6kker\",\n\"Width\": \"Bredde\",\n\"Height\": \"H\\u00f8jde\",\n\"Cell spacing\": \"Celle afstand\",\n\"Cell padding\": \"Celle padding\",\n\"Show caption\": \"Vis overskrift\",\n\"Left\": \"Venstre\",\n\"Center\": \"Centrering\",\n\"Right\": \"H\\u00f8jre\",\n\"Cell type\": \"Celle type\",\n\"Scope\": \"Anvendelsesomr\\u00e5de\",\n\"Alignment\": \"Tilpasning\",\n\"H Align\": \"H juster\",\n\"V Align\": \"V juster\",\n\"Top\": \"Top\",\n\"Middle\": \"Midt\",\n\"Bottom\": \"Bund\",\n\"Header cell\": \"Sidehoved celle\",\n\"Row group\": \"R\\u00e6kke gruppe\",\n\"Column group\": \"Kolonne gruppe\",\n\"Row type\": \"R\\u00e6kke type\",\n\"Header\": \"Sidehoved\",\n\"Body\": \"Krop\",\n\"Footer\": \"Sidefod\",\n\"Border color\": \"Kant farve\",\n\"Insert template...\": \"Inds\\u00e6t skabelon...\",\n\"Templates\": \"Skabeloner\",\n\"Template\": \"Skabelon\",\n\"Text color\": \"Tekst farve\",\n\"Background color\": \"Baggrunds farve\",\n\"Custom...\": \"Brugerdefineret...\",\n\"Custom color\": \"Brugerdefineret farve\",\n\"No color\": \"Ingen farve\",\n\"Remove color\": \"Fjern farve\",\n\"Table of Contents\": \"Indholdsfortegnelse\",\n\"Show blocks\": \"Vis klokke\",\n\"Show invisible characters\": \"Vis usynlige tegn\",\n\"Word count\": \"Optalte ord\",\n\"Count\": \"Antal\",\n\"Document\": \"Dokument\",\n\"Selection\": \"Valg\",\n\"Words\": \"Ord\",\n\"Words: {0}\": \"Ord: {0}\",\n\"{0} words\": \"{0} ord\",\n\"File\": \"Fil\",\n\"Edit\": \"Rediger\",\n\"Insert\": \"Inds\\u00e6t\",\n\"View\": \"Vis\",\n\"Format\": \"Format\",\n\"Table\": \"Tabel\",\n\"Tools\": \"V\\u00e6rkt\\u00f8j\",\n\"Powered by {0}\": \"Drevet af {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Rich Text omr\\u00e5de. Tryk ALT-F9 for menu. Tryk ALT-F10 for toolbar. Tryk ALT-0 for hj\\u00e6lp\",\n\"Image title\": \"Billedtitel\",\n\"Border width\": \"Kantbredde\",\n\"Border style\": \"Kantstil\",\n\"Error\": \"Fejl\",\n\"Warn\": \"Advar\",\n\"Valid\": \"Gyldig\",\n\"To open the popup, press Shift+Enter\": \"Tryk skift + enter for at \\u00e5bne pop op\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Rich tekst omr\\u00e5de. Tryk p\\u00e5 ALT-0 for hj\\u00e6lp.\",\n\"System Font\": \"Systemskrifttype\",\n\"Failed to upload image: {0}\": \"Mislykket billed-upload:\",\n\"Failed to load plugin: {0} from url {1}\": \"Mislykket plugin indl\\u00e6sning: {0}  fra url {1}\",\n\"Failed to load plugin url: {0}\": \"Mislykket indl\\u00e6sning af plugin-url: {0}\",\n\"Failed to initialize plugin: {0}\": \"Mislykket initiering a plugin: {0}\",\n\"example\": \"eksempel\",\n\"Search\": \"S\\u00f8g\",\n\"All\": \"Alle\",\n\"Currency\": \"Valuta\",\n\"Text\": \"Tekst\",\n\"Quotations\": \"Anf\\u00f8rselstegn\",\n\"Mathematical\": \"Matematiske tegn\",\n\"Extended Latin\": \"Udvidet Latin\",\n\"Symbols\": \"Symboler\",\n\"Arrows\": \"Pile\",\n\"User Defined\": \"Brugerdefineret\",\n\"dollar sign\": \"dollartegn\",\n\"currency sign\": \"valutategn\",\n\"euro-currency sign\": \"euro-tegn\",\n\"colon sign\": \"kolontegn\",\n\"cruzeiro sign\": \"cruzeiro-tegn\",\n\"french franc sign\": \"fransk frank-tegn\",\n\"lira sign\": \"lira-tegn\",\n\"mill sign\": \"mill-tegn\",\n\"naira sign\": \"naira-tegn\",\n\"peseta sign\": \"peseta-tegn\",\n\"rupee sign\": \"rupee-tegn\",\n\"won sign\": \"won-tegn\",\n\"new sheqel sign\": \"ny sheqel-tegn\",\n\"dong sign\": \"dong-tegn\",\n\"kip sign\": \"kip-tegn\",\n\"tugrik sign\": \"tugrik-tegn\",\n\"drachma sign\": \"drakmer-tegn\",\n\"german penny symbol\": \"tysk penny-symbol\",\n\"peso sign\": \"peso-tegn\",\n\"guarani sign\": \"guarani-tegn\",\n\"austral sign\": \"austral-tegn\",\n\"hryvnia sign\": \"hryvnia-tegn\",\n\"cedi sign\": \"cedi-tegn\",\n\"livre tournois sign\": \"livre tournois-tegn\",\n\"spesmilo sign\": \"spesmilo-tegn\",\n\"tenge sign\": \"tenge-tegn\",\n\"indian rupee sign\": \"indisk rupee-tegn\",\n\"turkish lira sign\": \"tyrkisk lira-tegn\",\n\"nordic mark sign\": \"nordisk mark-tegn\",\n\"manat sign\": \"manat-tegn\",\n\"ruble sign\": \"rubel-tegn\",\n\"yen character\": \"yen-tegn\",\n\"yuan character\": \"yuan-tegn\",\n\"yuan character, in hong kong and taiwan\": \"yuan-tegn, i hong kong og taiwan\",\n\"yen\\/yuan character variant one\": \"yen\\/yuan-tegn variant en\",\n\"Loading emoticons...\": \"Indl\\u00e6ser emotikoner...\",\n\"Could not load emoticons\": \"Kunne ikke indl\\u00e6se emotikoner\",\n\"People\": \"Folk\",\n\"Animals and Nature\": \"Dyr og natur\",\n\"Food and Drink\": \"F\\u00f8de og drikke\",\n\"Activity\": \"Aktivitet\",\n\"Travel and Places\": \"Rejser og steder\",\n\"Objects\": \"Objekter\",\n\"Flags\": \"Flag\",\n\"Characters\": \"Tegn\",\n\"Characters (no spaces)\": \"Tegn (uden mellemrum)\",\n\"{0} characters\": \"{0} tegn\",\n\"Error: Form submit field collision.\": \"Fejl: Form submit felt kollision\",\n\"Error: No form element found.\": \"Fejl: Ingen form element fundet.\",\n\"Update\": \"Opdater\",\n\"Color swatch\": \"Farvepr\\u00f8ve\",\n\"Turquoise\": \"Turkis\",\n\"Green\": \"Gr\\u00f8n\",\n\"Blue\": \"Bl\\u00e5\",\n\"Purple\": \"Lilla\",\n\"Navy Blue\": \"Marinebl\\u00e5\",\n\"Dark Turquoise\": \"M\\u00f8rketurkis\",\n\"Dark Green\": \"M\\u00f8rkegr\\u00f8n\",\n\"Medium Blue\": \"Medium bl\\u00e5\",\n\"Medium Purple\": \"Medium lilla\",\n\"Midnight Blue\": \"Midnatsbl\\u00e5\",\n\"Yellow\": \"Gul\",\n\"Orange\": \"Orange\",\n\"Red\": \"R\\u00f8d\",\n\"Light Gray\": \"Lysegr\\u00e5\",\n\"Gray\": \"Gr\\u00e5\",\n\"Dark Yellow\": \"M\\u00f8rkegul\",\n\"Dark Orange\": \"M\\u00f8rkeorange\",\n\"Dark Red\": \"M\\u00f8rker\\u00f8d\",\n\"Medium Gray\": \"Mellemgr\\u00e5\",\n\"Dark Gray\": \"M\\u00f8rkegr\\u00e5\",\n\"Light Green\": \"Lysegr\\u00f8n\",\n\"Light Yellow\": \"Lysegul\",\n\"Light Red\": \"Lyser\\u00f8d\",\n\"Light Purple\": \"Lyslilla\",\n\"Light Blue\": \"Lysebl\\u00e5\",\n\"Dark Purple\": \"M\\u00f8rkelilla\",\n\"Dark Blue\": \"M\\u00f8rkebl\\u00e5\",\n\"Black\": \"Sort\",\n\"White\": \"Hvid\",\n\"Switch to or from fullscreen mode\": \"Skift til eller fra fuldsk\\u00e6rmstilstand\",\n\"Open help dialog\": \"\\u00c5bn hj\\u00e6lpedialog\",\n\"history\": \"historie\",\n\"styles\": \"stile\",\n\"formatting\": \"formatering\",\n\"alignment\": \"justering\",\n\"indentation\": \"indrykning\",\n\"permanent pen\": \"permanent pen\",\n\"comments\": \"kommentarer\",\n\"Format Painter\": \"Formatpensel\",\n\"Insert\\/edit iframe\": \"Inds\\u00e6t\\/rediger iframe\",\n\"Capitalization\": \"Store bogstaver\",\n\"lowercase\": \"sm\\u00e5 bogstaver\",\n\"UPPERCASE\": \"STORE BOGSTAVER\",\n\"Title Case\": \"Stort begyndelsesbogstav\",\n\"Permanent Pen Properties\": \"Permanente penegenskaber\",\n\"Permanent pen properties...\": \"Permanente penegenskaber...\",\n\"Font\": \"Skrifttype\",\n\"Size\": \"St\\u00f8rrelse\",\n\"More...\": \"Mere...\",\n\"Spellcheck Language\": \"Sprog til stavekontrol\",\n\"Select...\": \"V\\u00e6lg...\",\n\"Preferences\": \"Pr\\u00e6ferencer\",\n\"Yes\": \"Ja\",\n\"No\": \"Nej\",\n\"Keyboard Navigation\": \"Navigation med tastatur\",\n\"Version\": \"Version\",\n\"Anchor\": \"Anchor\",\n\"Special character\": \"Specielle tegn\",\n\"Code sample\": \"Kodepr\\u00f8ve\",\n\"Color\": \"Farve\",\n\"Emoticons\": \"Emot-ikoner\",\n\"Document properties\": \"Dokument egenskaber\",\n\"Image\": \"Billede\",\n\"Insert link\": \"Inds\\u00e6t link\",\n\"Target\": \"Target\",\n\"Link\": \"Link\",\n\"Poster\": \"Poster\",\n\"Media\": \"Medier\",\n\"Print\": \"Udskriv\",\n\"Prev\": \"Forrige\",\n\"Find and replace\": \"Find og erstat\",\n\"Whole words\": \"Hele ord\",\n\"Spellcheck\": \"Stavekontrol\",\n\"Caption\": \"Tekst\",\n\"Insert template\": \"Inds\\u00e6t skabelon\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/de.js",
    "content": "tinymce.addI18n('de',{\n\"Redo\": \"Wiederholen\",\n\"Undo\": \"R\\u00fcckg\\u00e4ngig machen\",\n\"Cut\": \"Ausschneiden\",\n\"Copy\": \"Kopieren\",\n\"Paste\": \"Einf\\u00fcgen\",\n\"Select all\": \"Alles ausw\\u00e4hlen\",\n\"New document\": \"Neues Dokument\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Abbrechen\",\n\"Visual aids\": \"Visuelle Hilfen\",\n\"Bold\": \"Fett\",\n\"Italic\": \"Kursiv\",\n\"Underline\": \"Unterstrichen\",\n\"Strikethrough\": \"Durchgestrichen\",\n\"Superscript\": \"Hochgestellt\",\n\"Subscript\": \"Tiefgestellt\",\n\"Clear formatting\": \"Formatierung entfernen\",\n\"Align left\": \"Linksb\\u00fcndig ausrichten\",\n\"Align center\": \"Zentrieren\",\n\"Align right\": \"Rechtsb\\u00fcndig ausrichten\",\n\"Justify\": \"Blocksatz\",\n\"Bullet list\": \"Aufz\\u00e4hlung\",\n\"Numbered list\": \"Nummerierte Liste\",\n\"Decrease indent\": \"Einzug verkleinern\",\n\"Increase indent\": \"Einzug vergr\\u00f6\\u00dfern\",\n\"Close\": \"Schlie\\u00dfen\",\n\"Formats\": \"Formate\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Ihr Browser unterst\\u00fctzt leider keinen direkten Zugriff auf die Zwischenablage. Bitte benutzen Sie die Tastenkombinationen Strg+X\\/C\\/V.\",\n\"Headers\": \"\\u00dcberschriften\",\n\"Header 1\": \"\\u00dcberschrift 1\",\n\"Header 2\": \"\\u00dcberschrift 2\",\n\"Header 3\": \"\\u00dcberschrift 3\",\n\"Header 4\": \"\\u00dcberschrift 4\",\n\"Header 5\": \"\\u00dcberschrift 5\",\n\"Header 6\": \"\\u00dcberschrift 6\",\n\"Headings\": \"\\u00dcberschriften\",\n\"Heading 1\": \"Kopfzeile 1\",\n\"Heading 2\": \"Kopfzeile 2\",\n\"Heading 3\": \"Kopfzeile 3\",\n\"Heading 4\": \"Kopfzeile 4\",\n\"Heading 5\": \"Kopfzeile 5\",\n\"Heading 6\": \"Kopfzeile 6\",\n\"Preformatted\": \"Vorformatiert\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Code\",\n\"Paragraph\": \"Absatz\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Zeichenformate\",\n\"Blocks\": \"Bl\\u00f6cke\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Einf\\u00fcgen ist nun im einfachen Textmodus. Inhalte werden ab jetzt als unformatierter Text eingef\\u00fcgt, bis Sie diese Einstellung wieder ausschalten!\",\n\"Fonts\": \"Schriftarten\",\n\"Font Sizes\": \"Schriftgr\\u00f6\\u00dfe\",\n\"Class\": \"Klasse\",\n\"Browse for an image\": \"Bild...\",\n\"OR\": \"ODER\",\n\"Drop an image here\": \"Bild hier ablegen\",\n\"Upload\": \"Hochladen\",\n\"Block\": \"Blocksatz\",\n\"Align\": \"Ausrichten\",\n\"Default\": \"Standard\",\n\"Circle\": \"Kreis\",\n\"Disc\": \"Punkt\",\n\"Square\": \"Quadrat\",\n\"Lower Alpha\": \"Kleinbuchstaben\",\n\"Lower Greek\": \"Griechische Kleinbuchstaben\",\n\"Lower Roman\": \"R\\u00f6mische Zahlen (Kleinbuchstaben)\",\n\"Upper Alpha\": \"Gro\\u00dfbuchstaben\",\n\"Upper Roman\": \"R\\u00f6mische Zahlen (Gro\\u00dfbuchstaben)\",\n\"Anchor...\": \"Textmarke\",\n\"Name\": \"Name\",\n\"Id\": \"Kennung\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Die Kennung sollte mit einem Buchstaben anfangen. Nachfolgend nur Buchstaben, Zahlen, Striche (Minus), Punkte, Kommas und Unterstriche.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Die \\u00c4nderungen wurden noch nicht gespeichert, sind Sie sicher, dass Sie diese Seite verlassen wollen?\",\n\"Restore last draft\": \"Letzten Entwurf wiederherstellen\",\n\"Special character...\": \"Sonderzeichen...\",\n\"Source code\": \"Quelltext\",\n\"Insert\\/Edit code sample\": \"Codebeispiel einf\\u00fcgen\\/bearbeiten\",\n\"Language\": \"Sprache\",\n\"Code sample...\": \"Codebeispiel...\",\n\"Color Picker\": \"Farbwahl\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Von links nach rechts\",\n\"Right to left\": \"Von rechts nach links\",\n\"Emoticons...\": \"Emoticons...\",\n\"Metadata and Document Properties\": \"Dokument-Eigenschaften und -Metadaten\",\n\"Title\": \"Titel\",\n\"Keywords\": \"Sch\\u00fcsselw\\u00f6rter\",\n\"Description\": \"Beschreibung\",\n\"Robots\": \"Robots\",\n\"Author\": \"Verfasser\",\n\"Encoding\": \"Zeichenkodierung\",\n\"Fullscreen\": \"Vollbild\",\n\"Action\": \"Aktion\",\n\"Shortcut\": \"Shortcut\",\n\"Help\": \"Hilfe\",\n\"Address\": \"Adresse\",\n\"Focus to menubar\": \"Fokus auf Men\\u00fcleiste\",\n\"Focus to toolbar\": \"Fokus auf Werkzeugleiste\",\n\"Focus to element path\": \"Fokus auf Elementpfad\",\n\"Focus to contextual toolbar\": \"Fokus auf kontextbezogene Werkzeugleiste\",\n\"Insert link (if link plugin activated)\": \"Link einf\\u00fcgen (wenn Link-Plugin aktiviert ist)\",\n\"Save (if save plugin activated)\": \"Speichern (wenn Save-Plugin aktiviert ist)\",\n\"Find (if searchreplace plugin activated)\": \"Suchen einf\\u00fcgen (wenn Suchen\\/Ersetzen-Plugin aktiviert ist)\",\n\"Plugins installed ({0}):\": \"installierte Plugins ({0}):\",\n\"Premium plugins:\": \"Premium Plugins:\",\n\"Learn more...\": \"Erfahren Sie mehr dazu...\",\n\"You are using {0}\": \"Sie verwenden {0}\",\n\"Plugins\": \"Plugins\",\n\"Handy Shortcuts\": \"Praktische Tastenkombinationen\",\n\"Horizontal line\": \"Horizontale Linie\",\n\"Insert\\/edit image\": \"Bild einf\\u00fcgen\\/bearbeiten\",\n\"Image description\": \"Bildbeschreibung\",\n\"Source\": \"Quelle\",\n\"Dimensions\": \"Abmessungen\",\n\"Constrain proportions\": \"Seitenverh\\u00e4ltnis beibehalten\",\n\"General\": \"Allgemein\",\n\"Advanced\": \"Erweitert\",\n\"Style\": \"Stil\",\n\"Vertical space\": \"Vertikaler Abstand\",\n\"Horizontal space\": \"Horizontaler Abstand\",\n\"Border\": \"Rahmen\",\n\"Insert image\": \"Bild einf\\u00fcgen\",\n\"Image...\": \"Bild...\",\n\"Image list\": \"Bildliste\",\n\"Rotate counterclockwise\": \"Gegen den Uhrzeigersinn drehen\",\n\"Rotate clockwise\": \"Im Uhrzeigersinn drehen\",\n\"Flip vertically\": \"Vertikal spiegeln\",\n\"Flip horizontally\": \"Horizontal spiegeln\",\n\"Edit image\": \"Bild bearbeiten\",\n\"Image options\": \"Bildeigenschaften\",\n\"Zoom in\": \"Ansicht vergr\\u00f6\\u00dfern\",\n\"Zoom out\": \"Ansicht verkleinern\",\n\"Crop\": \"Bescheiden\",\n\"Resize\": \"Skalieren\",\n\"Orientation\": \"Ausrichtung\",\n\"Brightness\": \"Helligkeit\",\n\"Sharpen\": \"Sch\\u00e4rfen\",\n\"Contrast\": \"Kontrast\",\n\"Color levels\": \"Farbwerte\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Invertieren\",\n\"Apply\": \"Anwenden\",\n\"Back\": \"Zur\\u00fcck\",\n\"Insert date\\/time\": \"Datum\\/Uhrzeit einf\\u00fcgen \",\n\"Date\\/time\": \"Datum\\/Uhrzeit\",\n\"Insert\\/Edit Link\": \"Link einf\\u00fcgen\\/bearbeiten\",\n\"Insert\\/edit link\": \"Link einf\\u00fcgen\\/bearbeiten\",\n\"Text to display\": \"Anzuzeigender Text\",\n\"Url\": \"URL\",\n\"Open link in...\": \"Link \\u00f6ffnen in...\",\n\"Current window\": \"Aktuelles Fenster\",\n\"None\": \"Keine\",\n\"New window\": \"Neues Fenster\",\n\"Remove link\": \"Link entfernen\",\n\"Anchors\": \"Textmarken\",\n\"Link...\": \"Link...\",\n\"Paste or type a link\": \"Link einf\\u00fcgen oder eintippen\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Diese Adresse scheint eine E-Mail-Adresse zu sein. M\\u00f6chten Sie das dazu ben\\u00f6tigte \\\"mailto:\\\" voranstellen?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Diese Adresse scheint ein externer Link zu sein. M\\u00f6chten Sie das dazu ben\\u00f6tigte \\\"http:\\/\\/\\\" voranstellen?\",\n\"Link list\": \"Linkliste\",\n\"Insert video\": \"Video einf\\u00fcgen\",\n\"Insert\\/edit video\": \"Video einf\\u00fcgen\\/bearbeiten\",\n\"Insert\\/edit media\": \"Medien einf\\u00fcgen\\/bearbeiten\",\n\"Alternative source\": \"Alternative Quelle\",\n\"Alternative source URL\": \"URL der alternativen Quelle\",\n\"Media poster (Image URL)\": \"Medienposter (Bild-URL)\",\n\"Paste your embed code below:\": \"F\\u00fcgen Sie Ihren Einbettungscode hier ein:\",\n\"Embed\": \"Einbetten\",\n\"Media...\": \"Medien...\",\n\"Nonbreaking space\": \"Gesch\\u00fctztes Leerzeichen\",\n\"Page break\": \"Seitenumbruch\",\n\"Paste as text\": \"Als Text einf\\u00fcgen\",\n\"Preview\": \"Vorschau\",\n\"Print...\": \"Drucken...\",\n\"Save\": \"Speichern\",\n\"Find\": \"Suchen\",\n\"Replace with\": \"Ersetzen durch\",\n\"Replace\": \"Ersetzen\",\n\"Replace all\": \"Alles ersetzen\",\n\"Previous\": \"Vorherige\",\n\"Next\": \"Weiter\",\n\"Find and replace...\": \"Suchen und ersetzen...\",\n\"Could not find the specified string.\": \"Die Zeichenfolge wurde nicht gefunden.\",\n\"Match case\": \"Gro\\u00df-\\/Kleinschreibung beachten\",\n\"Find whole words only\": \"Nur ganze W\\u00f6rter suchen\",\n\"Spell check\": \"Rechschreibpr\\u00fcfung\",\n\"Ignore\": \"Ignorieren\",\n\"Ignore all\": \"Alles Ignorieren\",\n\"Finish\": \"Ende\",\n\"Add to Dictionary\": \"Zum W\\u00f6rterbuch hinzuf\\u00fcgen\",\n\"Insert table\": \"Tabelle einf\\u00fcgen\",\n\"Table properties\": \"Tabelleneigenschaften\",\n\"Delete table\": \"Tabelle l\\u00f6schen\",\n\"Cell\": \"Zelle\",\n\"Row\": \"Zeile\",\n\"Column\": \"Spalte\",\n\"Cell properties\": \"Zelleneigenschaften\",\n\"Merge cells\": \"Zellen verbinden\",\n\"Split cell\": \"Zelle aufteilen\",\n\"Insert row before\": \"Neue Zeile davor einf\\u00fcgen \",\n\"Insert row after\": \"Neue Zeile danach einf\\u00fcgen\",\n\"Delete row\": \"Zeile l\\u00f6schen\",\n\"Row properties\": \"Zeileneigenschaften\",\n\"Cut row\": \"Zeile ausschneiden\",\n\"Copy row\": \"Zeile kopieren\",\n\"Paste row before\": \"Zeile davor einf\\u00fcgen\",\n\"Paste row after\": \"Zeile danach einf\\u00fcgen\",\n\"Insert column before\": \"Neue Spalte davor einf\\u00fcgen\",\n\"Insert column after\": \"Neue Spalte danach einf\\u00fcgen\",\n\"Delete column\": \"Spalte l\\u00f6schen\",\n\"Cols\": \"Spalten\",\n\"Rows\": \"Zeilen\",\n\"Width\": \"Breite\",\n\"Height\": \"H\\u00f6he\",\n\"Cell spacing\": \"Zellenabstand\",\n\"Cell padding\": \"Zelleninnenabstand\",\n\"Show caption\": \"Beschriftung anzeigen\",\n\"Left\": \"Linksb\\u00fcndig\",\n\"Center\": \"Zentriert\",\n\"Right\": \"Rechtsb\\u00fcndig\",\n\"Cell type\": \"Zellentyp\",\n\"Scope\": \"G\\u00fcltigkeitsbereich\",\n\"Alignment\": \"Ausrichtung\",\n\"H Align\": \"Horizontale Ausrichtung\",\n\"V Align\": \"Vertikale Ausrichtung\",\n\"Top\": \"Oben\",\n\"Middle\": \"Mitte\",\n\"Bottom\": \"Unten\",\n\"Header cell\": \"Kopfzelle\",\n\"Row group\": \"Zeilengruppe\",\n\"Column group\": \"Spaltengruppe\",\n\"Row type\": \"Zeilentyp\",\n\"Header\": \"Kopfzeile\",\n\"Body\": \"Inhalt\",\n\"Footer\": \"Fu\\u00dfzeile\",\n\"Border color\": \"Rahmenfarbe\",\n\"Insert template...\": \"Vorlage einf\\u00fcgen...\",\n\"Templates\": \"Vorlagen\",\n\"Template\": \"Vorlage\",\n\"Text color\": \"Textfarbe\",\n\"Background color\": \"Hintergrundfarbe\",\n\"Custom...\": \"Benutzerdefiniert...\",\n\"Custom color\": \"Benutzerdefinierte Farbe\",\n\"No color\": \"Keine Farbe\",\n\"Remove color\": \"Farbauswahl aufheben\",\n\"Table of Contents\": \"Inhaltsverzeichnis\",\n\"Show blocks\": \"Bl\\u00f6cke anzeigen\",\n\"Show invisible characters\": \"Unsichtbare Zeichen anzeigen\",\n\"Word count\": \"Anzahl der W\\u00f6rter\",\n\"Count\": \"Anzahl\",\n\"Document\": \"Dokument\",\n\"Selection\": \"Auswahl\",\n\"Words\": \"W\\u00f6rter\",\n\"Words: {0}\": \"W\\u00f6rter: {0}\",\n\"{0} words\": \"{0} W\\u00f6rter\",\n\"File\": \"Datei\",\n\"Edit\": \"Bearbeiten\",\n\"Insert\": \"Einf\\u00fcgen\",\n\"View\": \"Ansicht\",\n\"Format\": \"Format\",\n\"Table\": \"Tabelle\",\n\"Tools\": \"Werkzeuge\",\n\"Powered by {0}\": \"Betrieben von {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Rich-Text- Area. Dr\\u00fccken Sie ALT-F9 f\\u00fcr das Men\\u00fc. Dr\\u00fccken Sie ALT-F10 f\\u00fcr Symbolleiste. Dr\\u00fccken Sie ALT-0 f\\u00fcr Hilfe\",\n\"Image title\": \"Bildtitel\",\n\"Border width\": \"Rahmenbreite\",\n\"Border style\": \"Rahmenstil\",\n\"Error\": \"Fehler\",\n\"Warn\": \"Warnung\",\n\"Valid\": \"G\\u00fcltig\",\n\"To open the popup, press Shift+Enter\": \"Dr\\u00fccken Sie Umschalt+Eingabe, um das Popup-Fenster zu \\u00f6ffnen.\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Rich-Text-Bereich. Dr\\u00fccken Sie Alt+0 f\\u00fcr Hilfe.\",\n\"System Font\": \"Betriebssystemschriftart\",\n\"Failed to upload image: {0}\": \"Bild konnte nicht hochgeladen werden: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Plugin konnte nicht geladen werden: {0} von URL {1}\",\n\"Failed to load plugin url: {0}\": \"Plugin-URL konnte nicht geladen werden: {0}\",\n\"Failed to initialize plugin: {0}\": \"Plugin konnte nicht initialisiert werden: {0}\",\n\"example\": \"Beispiel\",\n\"Search\": \"Suchen\",\n\"All\": \"Alles\",\n\"Currency\": \"W\\u00e4hrung\",\n\"Text\": \"Text\",\n\"Quotations\": \"Anf\\u00fchrungszeichen\",\n\"Mathematical\": \"Mathematisch\",\n\"Extended Latin\": \"Erweitertes Latein\",\n\"Symbols\": \"Symbole\",\n\"Arrows\": \"Pfeile\",\n\"User Defined\": \"Benutzerdefiniert\",\n\"dollar sign\": \"Dollarzeichen\",\n\"currency sign\": \"W\\u00e4hrungssymbol\",\n\"euro-currency sign\": \"Eurozeichen\",\n\"colon sign\": \"Doppelpunkt\",\n\"cruzeiro sign\": \"Cruzeirozeichen\",\n\"french franc sign\": \"Franczeichen\",\n\"lira sign\": \"Lirezeichen\",\n\"mill sign\": \"Millzeichen\",\n\"naira sign\": \"Nairazeichen\",\n\"peseta sign\": \"Pesetazeichen\",\n\"rupee sign\": \"Rupiezeichen\",\n\"won sign\": \"Wonzeichen\",\n\"new sheqel sign\": \"Schekelzeichen\",\n\"dong sign\": \"Dongzeichen\",\n\"kip sign\": \"Kipzeichen\",\n\"tugrik sign\": \"Tugrikzeichen\",\n\"drachma sign\": \"Drachmezeichen\",\n\"german penny symbol\": \"Pfennigzeichen\",\n\"peso sign\": \"Pesozeichen\",\n\"guarani sign\": \"Guaranizeichen\",\n\"austral sign\": \"Australzeichen\",\n\"hryvnia sign\": \"Hrywnjazeichen\",\n\"cedi sign\": \"Cedizeichen\",\n\"livre tournois sign\": \"Livrezeichen\",\n\"spesmilo sign\": \"Spesmilozeichen\",\n\"tenge sign\": \"Tengezeichen\",\n\"indian rupee sign\": \"Indisches Rupiezeichen\",\n\"turkish lira sign\": \"T\\u00fcrkisches Lirazeichen\",\n\"nordic mark sign\": \"Zeichen nordische Mark\",\n\"manat sign\": \"Manatzeichen\",\n\"ruble sign\": \"Rubelzeichen\",\n\"yen character\": \"Yenzeichen\",\n\"yuan character\": \"Yuanzeichen\",\n\"yuan character, in hong kong and taiwan\": \"Yuanzeichen in Hongkong und Taiwan\",\n\"yen\\/yuan character variant one\": \"Yen-\\/Yuanzeichen Variante 1\",\n\"Loading emoticons...\": \"Emoticons werden geladen...\",\n\"Could not load emoticons\": \"Emoticons konnten nicht geladen werden\",\n\"People\": \"Menschen\",\n\"Animals and Nature\": \"Tiere und Natur\",\n\"Food and Drink\": \"Essen und Trinken\",\n\"Activity\": \"Aktivit\\u00e4t\",\n\"Travel and Places\": \"Reisen und Orte\",\n\"Objects\": \"Objekte\",\n\"Flags\": \"Flaggen\",\n\"Characters\": \"Zeichen\",\n\"Characters (no spaces)\": \"Zeichen (ohne Leerzeichen)\",\n\"{0} characters\": \"{0}\\u00a0Zeichen\",\n\"Error: Form submit field collision.\": \"Fehler: Kollision der Formularbest\\u00e4tigungsfelder.\",\n\"Error: No form element found.\": \"Fehler: Kein Formularelement gefunden.\",\n\"Update\": \"Aktualisieren\",\n\"Color swatch\": \"Farbpalette\",\n\"Turquoise\": \"T\\u00fcrkis\",\n\"Green\": \"Gr\\u00fcn\",\n\"Blue\": \"Blau\",\n\"Purple\": \"Violett\",\n\"Navy Blue\": \"Marineblau\",\n\"Dark Turquoise\": \"Dunkelt\\u00fcrkis\",\n\"Dark Green\": \"Dunkelgr\\u00fcn\",\n\"Medium Blue\": \"Mittleres Blau\",\n\"Medium Purple\": \"Mittelviolett\",\n\"Midnight Blue\": \"Mitternachtsblau\",\n\"Yellow\": \"Gelb\",\n\"Orange\": \"Orange\",\n\"Red\": \"Rot\",\n\"Light Gray\": \"Hellgrau\",\n\"Gray\": \"Grau\",\n\"Dark Yellow\": \"Dunkelgelb\",\n\"Dark Orange\": \"Dunkelorange\",\n\"Dark Red\": \"Dunkelrot\",\n\"Medium Gray\": \"Mittelgrau\",\n\"Dark Gray\": \"Dunkelgrau\",\n\"Light Green\": \"Hellgr\\u00fcn\",\n\"Light Yellow\": \"Hellgelb\",\n\"Light Red\": \"Hellrot\",\n\"Light Purple\": \"Helllila\",\n\"Light Blue\": \"Hellblau\",\n\"Dark Purple\": \"Dunkellila\",\n\"Dark Blue\": \"Dunkelblau\",\n\"Black\": \"Schwarz\",\n\"White\": \"Wei\\u00df\",\n\"Switch to or from fullscreen mode\": \"Vollbildmodus umschalten\",\n\"Open help dialog\": \"Hilfe-Dialog \\u00f6ffnen\",\n\"history\": \"Historie\",\n\"styles\": \"Stile\",\n\"formatting\": \"Formatierung\",\n\"alignment\": \"Ausrichtung\",\n\"indentation\": \"Einr\\u00fcckungen\",\n\"permanent pen\": \"Textmarker\",\n\"comments\": \"Anmerkungen\",\n\"Format Painter\": \"Format-Painter\",\n\"Insert\\/edit iframe\": \"iframe einf\\u00fcgen\\/bearbeiten\",\n\"Capitalization\": \"Gro\\u00dfschreibung\",\n\"lowercase\": \"Kleinbuchstaben\",\n\"UPPERCASE\": \"Gro\\u00dfbuchstaben\",\n\"Title Case\": \"Gro\\u00df-\\/Kleinschreibung des Titels\",\n\"Permanent Pen Properties\": \"Eigenschaften von Permanent Pen\",\n\"Permanent pen properties...\": \"Eigenschaften von Permanent Pen...\",\n\"Font\": \"Schriftart\",\n\"Size\": \"Schriftgr\\u00f6\\u00dfe\",\n\"More...\": \"Mehr...\",\n\"Spellcheck Language\": \"Sprache f\\u00fcr die Rechtschreibpr\\u00fcfung\",\n\"Select...\": \"Auswahl...\",\n\"Preferences\": \"Einstellungen\",\n\"Yes\": \"Ja\",\n\"No\": \"Nein\",\n\"Keyboard Navigation\": \"Tastaturnavigation\",\n\"Version\": \"Version\",\n\"Anchor\": \"Textmarke\",\n\"Special character\": \"Sonderzeichen\",\n\"Code sample\": \"Codebeispiel\",\n\"Color\": \"Farbe\",\n\"Emoticons\": \"Emoticons\",\n\"Document properties\": \"Dokumenteigenschaften\",\n\"Image\": \"Bild\",\n\"Insert link\": \"Link einf\\u00fcgen\",\n\"Target\": \"Ziel\",\n\"Link\": \"Link\",\n\"Poster\": \"Poster\",\n\"Media\": \"Medium\",\n\"Print\": \"Drucken\",\n\"Prev\": \"Zur\\u00fcck\",\n\"Find and replace\": \"Suchen und ersetzen\",\n\"Whole words\": \"Nur ganze W\\u00f6rter\",\n\"Spellcheck\": \"Rechtschreibpr\\u00fcfung\",\n\"Caption\": \"Beschriftung\",\n\"Insert template\": \"Vorlage einf\\u00fcgen \"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/el.js",
    "content": "tinymce.addI18n('el',{\n\"Redo\": \"\\u0395\\u03c0\\u03b1\\u03bd\\u03ac\\u03bb\\u03b7\\u03c8\\u03b7\",\n\"Undo\": \"\\u0391\\u03bd\\u03b1\\u03af\\u03c1\\u03b5\\u03c3\\u03b7\",\n\"Cut\": \"\\u0391\\u03c0\\u03bf\\u03ba\\u03bf\\u03c0\\u03ae\",\n\"Copy\": \"\\u0391\\u03bd\\u03c4\\u03b9\\u03b3\\u03c1\\u03b1\\u03c6\\u03ae\",\n\"Paste\": \"\\u0395\\u03c0\\u03b9\\u03ba\\u03cc\\u03bb\\u03bb\\u03b7\\u03c3\\u03b7\",\n\"Select all\": \"\\u0395\\u03c0\\u03b9\\u03bb\\u03bf\\u03b3\\u03ae \\u03cc\\u03bb\\u03c9\\u03bd\",\n\"New document\": \"\\u039d\\u03ad\\u03bf \\u03ad\\u03b3\\u03b3\\u03c1\\u03b1\\u03c6\\u03bf\",\n\"Ok\": \"\\u0395\\u03bd\\u03c4\\u03ac\\u03be\\u03b5\\u03b9\",\n\"Cancel\": \"\\u0391\\u03ba\\u03cd\\u03c1\\u03c9\\u03c3\\u03b7\",\n\"Visual aids\": \"O\\u03c0\\u03c4\\u03b9\\u03ba\\u03ac \\u03b2\\u03bf\\u03b7\\u03b8\\u03ae\\u03bc\\u03b1\\u03c4\\u03b1 \",\n\"Bold\": \"\\u0388\\u03bd\\u03c4\\u03bf\\u03bd\\u03b7\",\n\"Italic\": \"\\u03a0\\u03bb\\u03ac\\u03b3\\u03b9\\u03b1\",\n\"Underline\": \"\\u03a5\\u03c0\\u03bf\\u03b3\\u03c1\\u03ac\\u03bc\\u03bc\\u03b9\\u03c3\\u03b7\",\n\"Strikethrough\": \"\\u0394\\u03b9\\u03b1\\u03ba\\u03c1\\u03b9\\u03c4\\u03ae \\u03b4\\u03b9\\u03b1\\u03b3\\u03c1\\u03b1\\u03c6\\u03ae\",\n\"Superscript\": \"\\u0395\\u03ba\\u03b8\\u03ad\\u03c4\\u03b7\\u03c2\",\n\"Subscript\": \"\\u0394\\u03b5\\u03af\\u03ba\\u03c4\\u03b7\\u03c2\",\n\"Clear formatting\": \"\\u0391\\u03c0\\u03b1\\u03bb\\u03bf\\u03b9\\u03c6\\u03ae \\u03bc\\u03bf\\u03c1\\u03c6\\u03bf\\u03c0\\u03bf\\u03af\\u03b7\\u03c3\\u03b7\\u03c2\",\n\"Align left\": \"\\u03a3\\u03c4\\u03bf\\u03af\\u03c7\\u03b9\\u03c3\\u03b7 \\u03b1\\u03c1\\u03b9\\u03c3\\u03c4\\u03b5\\u03c1\\u03ac\",\n\"Align center\": \"\\u03a3\\u03c4\\u03bf\\u03af\\u03c7\\u03b9\\u03c3\\u03b7 \\u03c3\\u03c4\\u03bf \\u03ba\\u03ad\\u03bd\\u03c4\\u03c1\\u03bf\",\n\"Align right\": \"\\u03a3\\u03c4\\u03bf\\u03af\\u03c7\\u03b9\\u03c3\\u03b7 \\u03b4\\u03b5\\u03be\\u03b9\\u03ac\",\n\"Justify\": \"\\u03a0\\u03bb\\u03ae\\u03c1\\u03b7\\u03c2 \\u03c3\\u03c4\\u03bf\\u03af\\u03c7\\u03b9\\u03c3\\u03b7\",\n\"Bullet list\": \"\\u039b\\u03af\\u03c3\\u03c4\\u03b1 \\u03bc\\u03b5 \\u03ba\\u03bf\\u03c5\\u03ba\\u03ba\\u03af\\u03b4\\u03b5\\u03c2\",\n\"Numbered list\": \"\\u0391\\u03c1\\u03b9\\u03b8\\u03bc\\u03b7\\u03bc\\u03ad\\u03bd\\u03b7 \\u03bb\\u03af\\u03c3\\u03c4\\u03b1\",\n\"Decrease indent\": \"\\u039c\\u03b5\\u03af\\u03c9\\u03c3\\u03b7 \\u03b5\\u03c3\\u03bf\\u03c7\\u03ae\\u03c2\",\n\"Increase indent\": \"\\u0391\\u03cd\\u03be\\u03b7\\u03c3\\u03b7 \\u03b5\\u03c3\\u03bf\\u03c7\\u03ae\\u03c2\",\n\"Close\": \"\\u039a\\u03bb\\u03b5\\u03af\\u03c3\\u03b9\\u03bc\\u03bf\",\n\"Formats\": \"\\u039c\\u03bf\\u03c1\\u03c6\\u03bf\\u03c0\\u03bf\\u03af\\u03b7\\u03c3\\u03b7\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u039f \\u03c0\\u03b5\\u03c1\\u03b9\\u03b7\\u03b3\\u03b7\\u03c4\\u03ae\\u03c2 \\u03c3\\u03b1\\u03c2 \\u03b4\\u03b5\\u03bd \\u03c5\\u03c0\\u03bf\\u03c3\\u03c4\\u03b7\\u03c1\\u03af\\u03b6\\u03b5\\u03b9 \\u03ac\\u03bc\\u03b5\\u03c3\\u03b7 \\u03c0\\u03c1\\u03cc\\u03c3\\u03b2\\u03b1\\u03c3\\u03b7 \\u03c3\\u03c4\\u03bf \\u03c0\\u03c1\\u03cc\\u03c7\\u03b5\\u03b9\\u03c1\\u03bf. \\u03a0\\u03b1\\u03c1\\u03b1\\u03ba\\u03b1\\u03bb\\u03ce \\u03c7\\u03c1\\u03b7\\u03c3\\u03b9\\u03bc\\u03bf\\u03c0\\u03bf\\u03b9\\u03ae\\u03c3\\u03c4\\u03b5 \\u03c4\\u03b9\\u03c2 \\u03c3\\u03c5\\u03bd\\u03c4\\u03bf\\u03bc\\u03b5\\u03cd\\u03c3\\u03b5\\u03b9\\u03c2 \\u03c0\\u03bb\\u03b7\\u03ba\\u03c4\\u03c1\\u03bf\\u03bb\\u03bf\\u03b3\\u03af\\u03bf\\u03c5 Ctrl+X\\/C\\/V.\",\n\"Headers\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b5\\u03c2\",\n\"Header 1\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1 1\",\n\"Header 2\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1 2\",\n\"Header 3\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1 3\",\n\"Header 4\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1 4\",\n\"Header 5\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1 5\",\n\"Header 6\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1 6\",\n\"Headings\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b5\\u03c2\",\n\"Heading 1\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1 1\",\n\"Heading 2\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1 2\",\n\"Heading 3\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1 3\",\n\"Heading 4\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1 4\",\n\"Heading 5\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1 5\",\n\"Heading 6\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1 6\",\n\"Preformatted\": \"\\u03a0\\u03c1\\u03bf\\u03b4\\u03b9\\u03b1\\u03bc\\u03bf\\u03c1\\u03c6\\u03c9\\u03bc\\u03ad\\u03bd\\u03bf\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"\\u039a\\u03ce\\u03b4\\u03b9\\u03ba\\u03b1\\u03c2\",\n\"Paragraph\": \"\\u03a0\\u03b1\\u03c1\\u03ac\\u03b3\\u03c1\\u03b1\\u03c6\\u03bf\\u03c2\",\n\"Blockquote\": \"\\u03a0\\u03b5\\u03c1\\u03b9\\u03bf\\u03c7\\u03ae \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03b5\\u03c3\\u03b7\\u03c2\",\n\"Inline\": \"\\u0395\\u03bd\\u03c3\\u03c9\\u03bc\\u03b1\\u03c4\\u03c9\\u03bc\\u03ad\\u03bd\\u03b7\",\n\"Blocks\": \"\\u03a4\\u03bc\\u03ae\\u03bc\\u03b1\\u03c4\\u03b1\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u0397 \\u03b5\\u03c0\\u03b9\\u03ba\\u03cc\\u03bb\\u03bb\\u03b7\\u03c3\\u03b7 \\u03b5\\u03af\\u03bd\\u03b1\\u03b9 \\u03c4\\u03ce\\u03c1\\u03b1 \\u03c3\\u03b5 \\u03bb\\u03b5\\u03b9\\u03c4\\u03bf\\u03c5\\u03c1\\u03b3\\u03af\\u03b1 \\u03b1\\u03c0\\u03bb\\u03bf\\u03cd \\u03ba\\u03b5\\u03b9\\u03bc\\u03ad\\u03bd\\u03bf\\u03c5. \\u03a4\\u03b1 \\u03c0\\u03b5\\u03c1\\u03b9\\u03b5\\u03c7\\u03cc\\u03bc\\u03b5\\u03bd\\u03b1 \\u03bc\\u03b9\\u03b1\\u03c2 \\u03b5\\u03c0\\u03b9\\u03ba\\u03cc\\u03bb\\u03bb\\u03b7\\u03c3\\u03b7\\u03c2 \\u03b8\\u03b1 \\u03b5\\u03c0\\u03b9\\u03ba\\u03bf\\u03bb\\u03bb\\u03bf\\u03cd\\u03bd\\u03c4\\u03b1\\u03b9 \\u03c9\\u03c2 \\u03b1\\u03c0\\u03bb\\u03cc \\u03ba\\u03b5\\u03af\\u03bc\\u03b5\\u03bd\\u03bf \\u03cc\\u03c3\\u03bf \\u03b7 \\u03bb\\u03b5\\u03b9\\u03c4\\u03bf\\u03c5\\u03c1\\u03b3\\u03af\\u03b1 \\u03b1\\u03c5\\u03c4\\u03ae \\u03c0\\u03b1\\u03c1\\u03b1\\u03bc\\u03ad\\u03bd\\u03b5\\u03b9 \\u03b5\\u03bd\\u03b5\\u03c1\\u03b3\\u03ae.\",\n\"Font Family\": \"\\u0393\\u03c1\\u03b1\\u03bc\\u03bc\\u03b1\\u03c4\\u03bf\\u03c3\\u03b5\\u03b9\\u03c1\\u03ac\",\n\"Font Sizes\": \"\\u039c\\u03ad\\u03b3\\u03b5\\u03b8\\u03bf\\u03c2\",\n\"Class\": \"\\u039a\\u03bb\\u03ac\\u03c3\\u03b7\",\n\"Browse for an image\": \"\\u0391\\u03bd\\u03b1\\u03b6\\u03b7\\u03c4\\u03ae\\u03c3\\u03c4\\u03b5 \\u03bc\\u03b9\\u03b1 \\u03b5\\u03b9\\u03ba\\u03cc\\u03bd\\u03b1\",\n\"OR\": \"\\u0389\",\n\"Drop an image here\": \"\\u03a1\\u03af\\u03be\\u03c4\\u03b5 \\u03bc\\u03b9\\u03b1 \\u03b5\\u03b9\\u03ba\\u03cc\\u03bd\\u03b1 \\u03b5\\u03b4\\u03ce\",\n\"Upload\": \"\\u039c\\u03b5\\u03c4\\u03b1\\u03c6\\u03cc\\u03c1\\u03c4\\u03c9\\u03c3\\u03b7\",\n\"Block\": \"\\u03a4\\u03bc\\u03ae\\u03bc\\u03b1\",\n\"Align\": \"\\u03a3\\u03c4\\u03bf\\u03af\\u03c7\\u03b9\\u03c3\\u03b7\",\n\"Default\": \"\\u03a0\\u03c1\\u03bf\\u03ba\\u03b1\\u03b8\\u03bf\\u03c1\\u03b9\\u03c3\\u03bc\\u03ad\\u03bd\\u03bf\",\n\"Circle\": \"\\u039a\\u03cd\\u03ba\\u03bb\\u03bf\\u03c2\",\n\"Disc\": \"\\u0394\\u03af\\u03c3\\u03ba\\u03bf\\u03c2\",\n\"Square\": \"\\u03a4\\u03b5\\u03c4\\u03c1\\u03ac\\u03b3\\u03c9\\u03bd\\u03bf\",\n\"Lower Alpha\": \"\\u03a0\\u03b5\\u03b6\\u03ac \\u03bb\\u03b1\\u03c4\\u03b9\\u03bd\\u03b9\\u03ba\\u03ac\",\n\"Lower Greek\": \"\\u03a0\\u03b5\\u03b6\\u03ac \\u03b5\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac\",\n\"Lower Roman\": \"\\u03a0\\u03b5\\u03b6\\u03ac \\u03c1\\u03c9\\u03bc\\u03b1\\u03ca\\u03ba\\u03ac\",\n\"Upper Alpha\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03b1\\u03af\\u03b1 \\u03bb\\u03b1\\u03c4\\u03b9\\u03bd\\u03b9\\u03ba\\u03ac\",\n\"Upper Roman\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03b1\\u03af\\u03b1 \\u03c1\\u03c9\\u03bc\\u03b1\\u03ca\\u03ba\\u03ac\",\n\"Anchor\": \"\\u0391\\u03b3\\u03ba\\u03cd\\u03c1\\u03c9\\u03c3\\u03b7\",\n\"Name\": \"\\u038c\\u03bd\\u03bf\\u03bc\\u03b1\",\n\"Id\": \"\\u039a\\u03c9\\u03b4\\u03b9\\u03ba\\u03cc\\u03c2\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"\\u039f \\u039a\\u03c9\\u03b4\\u03b9\\u03ba\\u03cc\\u03c2 \\u03c0\\u03c1\\u03ad\\u03c0\\u03b5\\u03b9 \\u03bd\\u03b1 \\u03b1\\u03c1\\u03c7\\u03af\\u03b6\\u03b5\\u03b9 \\u03bc\\u03b5 \\u03ad\\u03bd\\u03b1 \\u03b3\\u03c1\\u03ac\\u03bc\\u03bc\\u03b1, \\u03b1\\u03ba\\u03bf\\u03bb\\u03bf\\u03c5\\u03b8\\u03bf\\u03cd\\u03bc\\u03b5\\u03bd\\u03bf \\u03bc\\u03cc\\u03bd\\u03bf \\u03b1\\u03c0\\u03cc \\u03b3\\u03c1\\u03ac\\u03bc\\u03bc\\u03b1\\u03c4\\u03b1, \\u03b1\\u03c1\\u03b9\\u03b8\\u03bc\\u03bf\\u03cd\\u03c2, \\u03c0\\u03b1\\u03cd\\u03bb\\u03b5\\u03c2, \\u03c4\\u03b5\\u03bb\\u03b5\\u03af\\u03b5\\u03c2, \\u03ac\\u03bd\\u03c9 \\u03c4\\u03b5\\u03bb\\u03b5\\u03af\\u03b1 \\u03ae \\u03c5\\u03c0\\u03bf\\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03af\\u03c3\\u03b5\\u03b9\\u03c2.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u0388\\u03c7\\u03b5\\u03c4\\u03b5 \\u03bc\\u03b7 \\u03b1\\u03c0\\u03bf\\u03b8\\u03b7\\u03ba\\u03b5\\u03c5\\u03bc\\u03ad\\u03bd\\u03b5\\u03c2 \\u03b1\\u03bb\\u03bb\\u03b1\\u03b3\\u03ad\\u03c2. \\u0395\\u03af\\u03c3\\u03c4\\u03b5 \\u03b2\\u03ad\\u03b2\\u03b1\\u03b9\\u03bf\\u03b9 \\u03cc\\u03c4\\u03b9 \\u03b8\\u03ad\\u03bb\\u03b5\\u03c4\\u03b5 \\u03bd\\u03b1 \\u03c6\\u03cd\\u03b3\\u03b5\\u03c4\\u03b5 \\u03b1\\u03c0\\u03cc \\u03c4\\u03b7\\u03bd \\u03c3\\u03b5\\u03bb\\u03af\\u03b4\\u03b1;\",\n\"Restore last draft\": \"\\u0395\\u03c0\\u03b1\\u03bd\\u03b1\\u03c6\\u03bf\\u03c1\\u03ac \\u03c4\\u03b5\\u03bb\\u03b5\\u03c5\\u03c4\\u03b1\\u03af\\u03bf\\u03c5 \\u03c3\\u03c7\\u03b5\\u03b4\\u03af\\u03bf\\u03c5\",\n\"Special character\": \"\\u0395\\u03b9\\u03b4\\u03b9\\u03ba\\u03cc\\u03c2 \\u03c7\\u03b1\\u03c1\\u03b1\\u03ba\\u03c4\\u03ae\\u03c1\\u03b1\\u03c2\",\n\"Source code\": \"\\u03a0\\u03b7\\u03b3\\u03b1\\u03af\\u03bf\\u03c2 \\u03ba\\u03ce\\u03b4\\u03b9\\u03ba\\u03b1\\u03c2\",\n\"Insert\\/Edit code sample\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae\\/\\u0395\\u03c0\\u03b5\\u03be\\u03b5\\u03c1\\u03b3\\u03b1\\u03c3\\u03af\\u03b1 \\u03b4\\u03b5\\u03af\\u03b3\\u03bc\\u03b1\\u03c4\\u03bf\\u03c2 \\u03ba\\u03ce\\u03b4\\u03b9\\u03ba\\u03b1\",\n\"Language\": \"\\u0393\\u03bb\\u03ce\\u03c3\\u03c3\\u03b1\",\n\"Code sample\": \"\\u0394\\u03b5\\u03af\\u03b3\\u03bc\\u03b1 \\u039a\\u03ce\\u03b4\\u03b9\\u03ba\\u03b1\",\n\"Color\": \"\\u03a7\\u03c1\\u03ce\\u03bc\\u03b1\",\n\"R\": \"\\u03ba\",\n\"G\": \"\\u03a0\",\n\"B\": \"\\u039c\",\n\"Left to right\": \"\\u0391\\u03c0\\u03cc \\u03b1\\u03c1\\u03b9\\u03c3\\u03c4\\u03b5\\u03c1\\u03ac \\u03c0\\u03c1\\u03bf\\u03c2 \\u03c4\\u03b1 \\u03b4\\u03b5\\u03be\\u03b9\\u03ac\",\n\"Right to left\": \"\\u0391\\u03c0\\u03cc \\u03b4\\u03b5\\u03be\\u03b9\\u03ac \\u03c0\\u03c1\\u03bf\\u03c2 \\u03c4\\u03b1 \\u03b1\\u03c1\\u03b9\\u03c3\\u03c4\\u03b5\\u03c1\\u03ac\",\n\"Emoticons\": \"\\u03a6\\u03b1\\u03c4\\u03c3\\u03bf\\u03cd\\u03bb\\u03b5\\u03c2\",\n\"Document properties\": \"\\u0399\\u03b4\\u03b9\\u03cc\\u03c4\\u03b7\\u03c4\\u03b5\\u03c2 \\u03b5\\u03b3\\u03b3\\u03c1\\u03ac\\u03c6\\u03bf\\u03c5\",\n\"Title\": \"\\u03a4\\u03af\\u03c4\\u03bb\\u03bf\\u03c2\",\n\"Keywords\": \"\\u039b\\u03ad\\u03be\\u03b5\\u03b9\\u03c2 \\u03ba\\u03bb\\u03b5\\u03b9\\u03b4\\u03b9\\u03ac\",\n\"Description\": \"\\u03a0\\u03b5\\u03c1\\u03b9\\u03b3\\u03c1\\u03b1\\u03c6\\u03ae\",\n\"Robots\": \"\\u03a1\\u03bf\\u03bc\\u03c0\\u03cc\\u03c4\",\n\"Author\": \"\\u03a3\\u03c5\\u03bd\\u03c4\\u03ac\\u03ba\\u03c4\\u03b7\\u03c2\",\n\"Encoding\": \"\\u039a\\u03c9\\u03b4\\u03b9\\u03ba\\u03bf\\u03c0\\u03bf\\u03af\\u03b7\\u03c3\\u03b7\",\n\"Fullscreen\": \"\\u03a0\\u03bb\\u03ae\\u03c1\\u03b7\\u03c2 \\u03bf\\u03b8\\u03cc\\u03bd\\u03b7\",\n\"Action\": \"\\u0395\\u03bd\\u03ad\\u03c1\\u03b3\\u03b5\\u03b9\\u03b1\",\n\"Shortcut\": \"\\u03a3\\u03c5\\u03bd\\u03c4\\u03cc\\u03bc\\u03b5\\u03c5\\u03c3\\u03b7\",\n\"Help\": \"\\u0392\\u03bf\\u03ae\\u03b8\\u03b5\\u03b9\\u03b1\",\n\"Address\": \"\\u0394\\u03b9\\u03b5\\u03cd\\u03b8\\u03c5\\u03bd\\u03c3\\u03b7\",\n\"Focus to menubar\": \"\\u0395\\u03c3\\u03c4\\u03af\\u03b1\\u03c3\\u03b7 \\u03c3\\u03c4\\u03bf \\u03bc\\u03b5\\u03bd\\u03bf\\u03cd\",\n\"Focus to toolbar\": \"\\u0395\\u03c3\\u03c4\\u03af\\u03b1\\u03c3\\u03b7 \\u03c3\\u03c4\\u03b7 \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae \\u03b5\\u03c1\\u03b3\\u03b1\\u03bb\\u03b5\\u03af\\u03c9\\u03bd\",\n\"Focus to element path\": \"\\u0395\\u03c3\\u03c4\\u03af\\u03b1\\u03c3\\u03b7 \\u03c3\\u03c4\\u03b7 \\u03b4\\u03b9\\u03b1\\u03b4\\u03c1\\u03bf\\u03bc\\u03ae \\u03c3\\u03c4\\u03bf\\u03b9\\u03c7\\u03b5\\u03af\\u03bf\\u03c5\",\n\"Focus to contextual toolbar\": \"\\u0395\\u03c3\\u03c4\\u03af\\u03b1\\u03c3\\u03b7 \\u03c3\\u03c4\\u03b7 \\u03c3\\u03c5\\u03bd\\u03b1\\u03c6\\u03ae \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae \\u03b5\\u03c1\\u03b3\\u03b1\\u03bb\\u03b5\\u03af\\u03c9\\u03bd\",\n\"Insert link (if link plugin activated)\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae \\u03c3\\u03c5\\u03bd\\u03b4\\u03ad\\u03c3\\u03bc\\u03bf\\u03c5 (\\u03b5\\u03ac\\u03bd \\u03b5\\u03af\\u03bd\\u03b1\\u03b9 \\u03b5\\u03bd\\u03b5\\u03c1\\u03b3\\u03bf\\u03c0\\u03bf\\u03b9\\u03b7\\u03bc\\u03ad\\u03bd\\u03bf \\u03c4\\u03bf \\u03c0\\u03c1\\u03cc\\u03c3\\u03b8\\u03b5\\u03c4\\u03bf \\u03c4\\u03bf\\u03c5 \\u03c3\\u03c5\\u03bd\\u03b4\\u03ad\\u03c3\\u03bc\\u03bf\\u03c5)\",\n\"Save (if save plugin activated)\": \"\\u0391\\u03c0\\u03bf\\u03b8\\u03ae\\u03ba\\u03b5\\u03c5\\u03c3\\u03b7 (\\u03b5\\u03ac\\u03bd \\u03b5\\u03af\\u03bd\\u03b1\\u03b9 \\u03b5\\u03bd\\u03b5\\u03c1\\u03b3\\u03bf\\u03c0\\u03bf\\u03b9\\u03b7\\u03bc\\u03ad\\u03bd\\u03bf \\u03c4\\u03bf \\u03c0\\u03c1\\u03cc\\u03c3\\u03b8\\u03b5\\u03c4\\u03bf \\u03c4\\u03b7\\u03c2 \\u03b1\\u03c0\\u03bf\\u03b8\\u03ae\\u03ba\\u03b5\\u03c5\\u03c3\\u03b7\\u03c2)\",\n\"Find (if searchreplace plugin activated)\": \"\\u0395\\u03cd\\u03c1\\u03b5\\u03c3\\u03b7 (\\u03b5\\u03ac\\u03bd \\u03b5\\u03af\\u03bd\\u03b1\\u03b9 \\u03b5\\u03bd\\u03b5\\u03c1\\u03b3\\u03bf\\u03c0\\u03bf\\u03b9\\u03b7\\u03bc\\u03ad\\u03bd\\u03bf \\u03c4\\u03bf \\u03c0\\u03c1\\u03cc\\u03c3\\u03b8\\u03b5\\u03c4\\u03bf \\u03c4\\u03b7\\u03c2 \\u03b1\\u03bd\\u03b1\\u03b6\\u03ae\\u03c4\\u03b7\\u03c3\\u03b7\\u03c2)\",\n\"Plugins installed ({0}):\": \"\\u0395\\u03b3\\u03ba\\u03b1\\u03c4\\u03b5\\u03c3\\u03c4\\u03b7\\u03bc\\u03ad\\u03bd\\u03b1 \\u03c0\\u03c1\\u03cc\\u03c3\\u03b8\\u03b5\\u03c4\\u03b1 ({0}):\",\n\"Premium plugins:\": \"\\u03a0\\u03c1\\u03cc\\u03c3\\u03b8\\u03b5\\u03c4\\u03b1 \\u03c5\\u03c8\\u03b7\\u03bb\\u03ae\\u03c2 \\u03c0\\u03bf\\u03b9\\u03cc\\u03c4\\u03b7\\u03c4\\u03b1\\u03c2:\",\n\"Learn more...\": \"\\u039c\\u03ac\\u03b8\\u03b5\\u03c4\\u03b5 \\u03c0\\u03b5\\u03c1\\u03b9\\u03c3\\u03c3\\u03cc\\u03c4\\u03b5\\u03c1\\u03b1...\",\n\"You are using {0}\": \"\\u03a7\\u03c1\\u03b7\\u03c3\\u03b9\\u03bc\\u03bf\\u03c0\\u03bf\\u03b9\\u03b5\\u03af\\u03c4\\u03b5 {0}\",\n\"Plugins\": \"\\u03a0\\u03c1\\u03cc\\u03c3\\u03b8\\u03b5\\u03c4\\u03b1\",\n\"Handy Shortcuts\": \"\\u03a7\\u03c1\\u03ae\\u03c3\\u03b9\\u03bc\\u03b5\\u03c2 \\u03c3\\u03c5\\u03bd\\u03c4\\u03bf\\u03bc\\u03b5\\u03cd\\u03c3\\u03b5\\u03b9\\u03c2\",\n\"Horizontal line\": \"\\u039f\\u03c1\\u03b9\\u03b6\\u03cc\\u03bd\\u03c4\\u03b9\\u03b1 \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae\",\n\"Insert\\/edit image\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae\\/\\u03b5\\u03c0\\u03b5\\u03be\\u03b5\\u03c1\\u03b3\\u03b1\\u03c3\\u03af\\u03b1 \\u03b5\\u03b9\\u03ba\\u03cc\\u03bd\\u03b1\\u03c2\",\n\"Image description\": \"\\u03a0\\u03b5\\u03c1\\u03b9\\u03b3\\u03c1\\u03b1\\u03c6\\u03ae \\u03b5\\u03b9\\u03ba\\u03cc\\u03bd\\u03b1\\u03c2\",\n\"Source\": \"\\u03a0\\u03b7\\u03b3\\u03ae\",\n\"Dimensions\": \"\\u0394\\u03b9\\u03b1\\u03c3\\u03c4\\u03ac\\u03c3\\u03b5\\u03b9\\u03c2\",\n\"Constrain proportions\": \"\\u03a0\\u03b5\\u03c1\\u03b9\\u03bf\\u03c1\\u03b9\\u03c3\\u03bc\\u03cc\\u03c2 \\u03b1\\u03bd\\u03b1\\u03bb\\u03bf\\u03b3\\u03b9\\u03ce\\u03bd\",\n\"General\": \"\\u0393\\u03b5\\u03bd\\u03b9\\u03ba\\u03ac\",\n\"Advanced\": \"\\u0393\\u03b9\\u03b1 \\u03a0\\u03c1\\u03bf\\u03c7\\u03c9\\u03c1\\u03b7\\u03bc\\u03ad\\u03bd\\u03bf\\u03c5\\u03c2\",\n\"Style\": \"\\u0395\\u03bc\\u03c6\\u03ac\\u03bd\\u03b9\\u03c3\\u03b7\",\n\"Vertical space\": \"\\u039a\\u03ac\\u03b8\\u03b5\\u03c4\\u03bf \\u03b4\\u03b9\\u03ac\\u03c3\\u03c4\\u03b7\\u03bc\\u03b1\",\n\"Horizontal space\": \"\\u039f\\u03c1\\u03b9\\u03b6\\u03cc\\u03bd\\u03c4\\u03b9\\u03bf \\u03b4\\u03b9\\u03ac\\u03c3\\u03c4\\u03b7\\u03bc\\u03b1\",\n\"Border\": \"\\u03a0\\u03bb\\u03b1\\u03af\\u03c3\\u03b9\\u03bf\",\n\"Insert image\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae \\u03b5\\u03b9\\u03ba\\u03cc\\u03bd\\u03b1\\u03c2\",\n\"Image\": \"\\u0395\\u03b9\\u03ba\\u03cc\\u03bd\\u03b1\",\n\"Image list\": \"\\u039b\\u03af\\u03c3\\u03c4\\u03b1 \\u03b5\\u03b9\\u03ba\\u03cc\\u03bd\\u03c9\\u03bd\",\n\"Rotate counterclockwise\": \"\\u03a0\\u03b5\\u03c1\\u03b9\\u03c3\\u03c4\\u03c1\\u03bf\\u03c6\\u03ae \\u03b1\\u03c1\\u03b9\\u03c3\\u03c4\\u03b5\\u03c1\\u03cc\\u03c3\\u03c4\\u03c1\\u03bf\\u03c6\\u03b1\",\n\"Rotate clockwise\": \"\\u03a0\\u03b5\\u03c1\\u03b9\\u03c3\\u03c4\\u03c1\\u03bf\\u03c6\\u03ae \\u03b4\\u03b5\\u03be\\u03b9\\u03cc\\u03c3\\u03c4\\u03c1\\u03bf\\u03c6\\u03b1\",\n\"Flip vertically\": \"\\u0391\\u03bd\\u03b1\\u03c3\\u03c4\\u03c1\\u03bf\\u03c6\\u03ae \\u03ba\\u03b1\\u03b8\\u03ad\\u03c4\\u03c9\\u03c2\",\n\"Flip horizontally\": \"\\u0391\\u03bd\\u03b1\\u03c3\\u03c4\\u03c1\\u03bf\\u03c6\\u03ae \\u03bf\\u03c1\\u03b9\\u03b6\\u03bf\\u03bd\\u03c4\\u03af\\u03c9\\u03c2\",\n\"Edit image\": \"\\u0395\\u03c0\\u03b5\\u03be\\u03b5\\u03c1\\u03b3\\u03b1\\u03c3\\u03af\\u03b1 \\u03b5\\u03b9\\u03ba\\u03cc\\u03bd\\u03b1\\u03c2\",\n\"Image options\": \"\\u0395\\u03c0\\u03b9\\u03bb\\u03bf\\u03b3\\u03ad\\u03c2 \\u03b5\\u03b9\\u03ba\\u03cc\\u03bd\\u03b1\\u03c2\",\n\"Zoom in\": \"\\u039c\\u03b5\\u03b3\\u03ad\\u03b8\\u03c5\\u03bd\\u03c3\\u03b7\",\n\"Zoom out\": \"\\u03a3\\u03bc\\u03af\\u03ba\\u03c1\\u03c5\\u03bd\\u03c3\\u03b7\",\n\"Crop\": \"\\u03a0\\u03b5\\u03c1\\u03b9\\u03ba\\u03bf\\u03c0\\u03ae\",\n\"Resize\": \"\\u0391\\u03bb\\u03bb\\u03b1\\u03b3\\u03ae \\u03bc\\u03b5\\u03b3\\u03ad\\u03b8\\u03bf\\u03c5\\u03c2\",\n\"Orientation\": \"\\u03a0\\u03c1\\u03bf\\u03c3\\u03b1\\u03bd\\u03b1\\u03c4\\u03bf\\u03bb\\u03b9\\u03c3\\u03bc\\u03cc\\u03c2\",\n\"Brightness\": \"\\u03a6\\u03c9\\u03c4\\u03b5\\u03b9\\u03bd\\u03cc\\u03c4\\u03b7\\u03c4\\u03b1\",\n\"Sharpen\": \"\\u038c\\u03be\\u03c5\\u03bd\\u03c3\\u03b7\",\n\"Contrast\": \"\\u0391\\u03bd\\u03c4\\u03af\\u03b8\\u03b5\\u03c3\\u03b7\",\n\"Color levels\": \"\\u0395\\u03c0\\u03af\\u03c0\\u03b5\\u03b4\\u03b1 \\u03c7\\u03c1\\u03ce\\u03bc\\u03b1\\u03c4\\u03bf\\u03c2\",\n\"Gamma\": \"\\u0393\\u03ac\\u03bc\\u03bc\\u03b1\",\n\"Invert\": \"\\u0391\\u03bd\\u03c4\\u03b9\\u03c3\\u03c4\\u03c1\\u03bf\\u03c6\\u03ae\",\n\"Apply\": \"\\u0395\\u03c6\\u03b1\\u03c1\\u03bc\\u03bf\\u03b3\\u03ae\",\n\"Back\": \"\\u03a0\\u03af\\u03c3\\u03c9\",\n\"Insert date\\/time\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae \\u03b7\\u03bc\\u03b5\\u03c1\\u03bf\\u03bc\\u03b7\\u03bd\\u03af\\u03b1\\u03c2\\/\\u03ce\\u03c1\\u03b1\\u03c2\",\n\"Date\\/time\": \"\\u0397\\u03bc\\u03b5\\u03c1\\u03bf\\u03bc\\u03b7\\u03bd\\u03af\\u03b1\\/\\u03ce\\u03c1\\u03b1\",\n\"Insert link\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae \\u03c3\\u03c5\\u03bd\\u03b4\\u03ad\\u03c3\\u03bc\\u03bf\\u03c5\",\n\"Insert\\/edit link\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae\\/\\u03b5\\u03c0\\u03b5\\u03be\\u03b5\\u03c1\\u03b3\\u03b1\\u03c3\\u03af\\u03b1 \\u03c3\\u03c5\\u03bd\\u03b4\\u03ad\\u03c3\\u03bc\\u03bf\\u03c5\",\n\"Text to display\": \"\\u039a\\u03b5\\u03af\\u03bc\\u03b5\\u03bd\\u03bf \\u03b3\\u03b9\\u03b1 \\u03b5\\u03bc\\u03c6\\u03ac\\u03bd\\u03b9\\u03c3\\u03b7\",\n\"Url\": \"URL\",\n\"Target\": \"\\u03a0\\u03c1\\u03bf\\u03bf\\u03c1\\u03b9\\u03c3\\u03bc\\u03cc\\u03c2\",\n\"None\": \"\\u039a\\u03b1\\u03bc\\u03af\\u03b1\",\n\"New window\": \"\\u039d\\u03ad\\u03bf \\u03c0\\u03b1\\u03c1\\u03ac\\u03b8\\u03c5\\u03c1\\u03bf\",\n\"Remove link\": \"\\u0391\\u03c6\\u03b1\\u03af\\u03c1\\u03b5\\u03c3\\u03b7 \\u03c3\\u03c5\\u03bd\\u03b4\\u03ad\\u03c3\\u03bc\\u03bf\\u03c5\",\n\"Anchors\": \"\\u0386\\u03b3\\u03ba\\u03c5\\u03c1\\u03b5\\u03c2\",\n\"Link\": \"\\u03a3\\u03cd\\u03bd\\u03b4\\u03b5\\u03c3\\u03bc\\u03bf\\u03c2\",\n\"Paste or type a link\": \"\\u0395\\u03c0\\u03b9\\u03ba\\u03bf\\u03bb\\u03bb\\u03ae\\u03c3\\u03c4\\u03b5 \\u03ae \\u03c0\\u03bb\\u03b7\\u03ba\\u03c4\\u03c1\\u03bf\\u03bb\\u03bf\\u03b3\\u03ae\\u03c3\\u03c4\\u03b5 \\u03ad\\u03bd\\u03b1 \\u03c3\\u03cd\\u03bd\\u03b4\\u03b5\\u03c3\\u03bc\\u03bf\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u0397 \\u03b4\\u03b9\\u03b5\\u03cd\\u03b8\\u03c5\\u03bd\\u03c3\\u03b7 URL \\u03c0\\u03bf\\u03c5 \\u03b5\\u03b9\\u03c3\\u03ac\\u03c7\\u03b8\\u03b7\\u03ba\\u03b5 \\u03c0\\u03b9\\u03b8\\u03b1\\u03bd\\u03ce\\u03c2 \\u03b5\\u03af\\u03bd\\u03b1\\u03b9 \\u03b4\\u03b9\\u03b5\\u03cd\\u03b8\\u03c5\\u03bd\\u03c3\\u03b7 email. \\u0398\\u03ad\\u03bb\\u03b5\\u03c4\\u03b5 \\u03bd\\u03b1 \\u03c0\\u03c1\\u03bf\\u03c3\\u03b8\\u03ad\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c0\\u03b1\\u03b9\\u03c4\\u03bf\\u03cd\\u03bc\\u03b5\\u03bd\\u03bf \\u03c0\\u03c1\\u03cc\\u03b8\\u03b7\\u03bc\\u03b1 mailto:;\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u0397 \\u03b4\\u03b9\\u03b5\\u03cd\\u03b8\\u03c5\\u03bd\\u03c3\\u03b7 URL \\u03c0\\u03bf\\u03c5 \\u03b5\\u03b9\\u03c3\\u03ac\\u03c7\\u03b8\\u03b7\\u03ba\\u03b5 \\u03c0\\u03b9\\u03b8\\u03b1\\u03bd\\u03ce\\u03c2 \\u03b5\\u03af\\u03bd\\u03b1\\u03b9 \\u03b5\\u03be\\u03c9\\u03c4\\u03b5\\u03c1\\u03b9\\u03ba\\u03cc\\u03c2 \\u03c3\\u03cd\\u03bd\\u03b4\\u03b5\\u03c3\\u03bc\\u03bf\\u03c2. \\u0398\\u03ad\\u03bb\\u03b5\\u03c4\\u03b5 \\u03bd\\u03b1 \\u03c0\\u03c1\\u03bf\\u03c3\\u03b8\\u03ad\\u03c3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf \\u03b1\\u03c0\\u03b1\\u03b9\\u03c4\\u03bf\\u03cd\\u03bc\\u03b5\\u03bd\\u03bf \\u03c0\\u03c1\\u03cc\\u03b8\\u03b7\\u03bc\\u03b1 http:\\/\\/;\",\n\"Link list\": \"\\u039b\\u03af\\u03c3\\u03c4\\u03b1 \\u03c3\\u03c5\\u03bd\\u03b4\\u03ad\\u03c3\\u03bc\\u03c9\\u03bd\",\n\"Insert video\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae \\u03b2\\u03af\\u03bd\\u03c4\\u03b5\\u03bf\",\n\"Insert\\/edit video\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae\\/\\u03b5\\u03c0\\u03b5\\u03be\\u03b5\\u03c1\\u03b3\\u03b1\\u03c3\\u03af\\u03b1 \\u03b2\\u03af\\u03bd\\u03c4\\u03b5\\u03bf\",\n\"Insert\\/edit media\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae\\/\\u03b5\\u03c0\\u03b5\\u03be\\u03b5\\u03c1\\u03b3\\u03b1\\u03c3\\u03af\\u03b1 media\",\n\"Alternative source\": \"\\u0395\\u03bd\\u03b1\\u03bb\\u03bb\\u03b1\\u03ba\\u03c4\\u03b9\\u03ba\\u03ae \\u03c0\\u03c1\\u03bf\\u03ad\\u03bb\\u03b5\\u03c5\\u03c3\\u03b7\",\n\"Poster\": \"\\u0391\\u03c6\\u03af\\u03c3\\u03b1\",\n\"Paste your embed code below:\": \"\\u0395\\u03b9\\u03c3\\u03ac\\u03b3\\u03b5\\u03c4\\u03b5 \\u03c4\\u03bf\\u03bd \\u03b5\\u03bd\\u03c3\\u03c9\\u03bc\\u03b1\\u03c4\\u03c9\\u03bc\\u03ad\\u03bd\\u03bf \\u03ba\\u03ce\\u03b4\\u03b9\\u03ba\\u03b1 \\u03c0\\u03b1\\u03c1\\u03b1\\u03ba\\u03ac\\u03c4\\u03c9:\",\n\"Embed\": \"\\u0395\\u03bd\\u03c3\\u03c9\\u03bc\\u03ac\\u03c4\\u03c9\\u03c3\\u03b7\",\n\"Media\": \"\\u039c\\u03ad\\u03c3\\u03b1 (\\u03bc\\u03af\\u03bd\\u03c4\\u03b9\\u03b1)\",\n\"Nonbreaking space\": \"\\u039a\\u03b5\\u03bd\\u03cc \\u03c7\\u03c9\\u03c1\\u03af\\u03c2 \\u03b4\\u03b9\\u03b1\\u03ba\\u03bf\\u03c0\\u03ae\",\n\"Page break\": \"\\u0391\\u03bb\\u03bb\\u03b1\\u03b3\\u03ae \\u03c3\\u03b5\\u03bb\\u03af\\u03b4\\u03b1\\u03c2\",\n\"Paste as text\": \"\\u0395\\u03c0\\u03b9\\u03ba\\u03cc\\u03bb\\u03bb\\u03b7\\u03c3\\u03b7 \\u03c9\\u03c2 \\u03ba\\u03b5\\u03af\\u03bc\\u03b5\\u03bd\\u03bf\",\n\"Preview\": \"\\u03a0\\u03c1\\u03bf\\u03b5\\u03c0\\u03b9\\u03c3\\u03ba\\u03cc\\u03c0\\u03b7\\u03c3\\u03b7\",\n\"Print\": \"\\u0395\\u03ba\\u03c4\\u03cd\\u03c0\\u03c9\\u03c3\\u03b7\",\n\"Save\": \"\\u0391\\u03c0\\u03bf\\u03b8\\u03ae\\u03ba\\u03b5\\u03c5\\u03c3\\u03b7\",\n\"Find\": \"\\u0395\\u03cd\\u03c1\\u03b5\\u03c3\\u03b7\",\n\"Replace with\": \"\\u0391\\u03bd\\u03c4\\u03b9\\u03ba\\u03b1\\u03c4\\u03ac\\u03c3\\u03c4\\u03b1\\u03c3\\u03b7 \\u03bc\\u03b5\",\n\"Replace\": \"\\u0391\\u03bd\\u03c4\\u03b9\\u03ba\\u03b1\\u03c4\\u03ac\\u03c3\\u03c4\\u03b1\\u03c3\\u03b7\",\n\"Replace all\": \"\\u0391\\u03bd\\u03c4\\u03b9\\u03ba\\u03b1\\u03c4\\u03ac\\u03c3\\u03c4\\u03b1\\u03c3\\u03b7 \\u03cc\\u03bb\\u03c9\\u03bd\",\n\"Prev\": \"\\u03a0\\u03c1\\u03bf\\u03b7\\u03b3.\",\n\"Next\": \"\\u0395\\u03c0\\u03cc\\u03bc.\",\n\"Find and replace\": \"\\u0395\\u03cd\\u03c1\\u03b5\\u03c3\\u03b7 \\u03ba\\u03b1\\u03b9 \\u03b1\\u03bd\\u03c4\\u03b9\\u03ba\\u03b1\\u03c4\\u03ac\\u03c3\\u03c4\\u03b1\\u03c3\\u03b7\",\n\"Could not find the specified string.\": \"\\u0394\\u03b5\\u03bd \\u03ae\\u03c4\\u03b1\\u03bd \\u03b4\\u03c5\\u03bd\\u03b1\\u03c4\\u03ae \\u03b7 \\u03b5\\u03cd\\u03c1\\u03b5\\u03c3\\u03b7 \\u03c4\\u03bf\\u03c5 \\u03ba\\u03b1\\u03b8\\u03bf\\u03c1\\u03b9\\u03c3\\u03bc\\u03ad\\u03bd\\u03bf\\u03c5 \\u03b1\\u03bb\\u03c6\\u03b1\\u03c1\\u03b9\\u03b8\\u03bc\\u03b7\\u03c4\\u03b9\\u03ba\\u03bf\\u03cd.\",\n\"Match case\": \"\\u03a4\\u03b1\\u03af\\u03c1\\u03b9\\u03b1\\u03c3\\u03bc\\u03b1 \\u03c0\\u03b5\\u03b6\\u03ce\\u03bd\\/\\u03ba\\u03b5\\u03c6\\u03b1\\u03bb\\u03b1\\u03af\\u03c9\\u03bd\",\n\"Whole words\": \"\\u039f\\u03bb\\u03cc\\u03ba\\u03bb\\u03b7\\u03c1\\u03b5\\u03c2 \\u03bb\\u03ad\\u03be\\u03b5\\u03b9\\u03c2\",\n\"Spellcheck\": \"\\u039f\\u03c1\\u03b8\\u03bf\\u03b3\\u03c1\\u03b1\\u03c6\\u03b9\\u03ba\\u03cc\\u03c2 \\u03ad\\u03bb\\u03b5\\u03b3\\u03c7\\u03bf\\u03c2 \",\n\"Ignore\": \"\\u03a0\\u03b1\\u03c1\\u03ac\\u03b2\\u03bb\\u03b5\\u03c8\\u03b7\",\n\"Ignore all\": \"\\u03a0\\u03b1\\u03c1\\u03ac\\u03b2\\u03bb\\u03b5\\u03c8\\u03b7 \\u03cc\\u03bb\\u03c9\\u03bd\",\n\"Finish\": \"\\u03a4\\u03ad\\u03bb\\u03bf\\u03c2\",\n\"Add to Dictionary\": \"\\u03a0\\u03c1\\u03bf\\u03c3\\u03b8\\u03ae\\u03ba\\u03b7 \\u03c3\\u03c4\\u03bf \\u039b\\u03b5\\u03be\\u03b9\\u03ba\\u03cc\",\n\"Insert table\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae \\u03c0\\u03af\\u03bd\\u03b1\\u03ba\\u03b1\",\n\"Table properties\": \"\\u0399\\u03b4\\u03b9\\u03cc\\u03c4\\u03b7\\u03c4\\u03b5\\u03c2 \\u03c0\\u03af\\u03bd\\u03b1\\u03ba\\u03b1\",\n\"Delete table\": \"\\u0394\\u03b9\\u03b1\\u03b3\\u03c1\\u03b1\\u03c6\\u03ae \\u03c0\\u03af\\u03bd\\u03b1\\u03ba\\u03b1\",\n\"Cell\": \"\\u039a\\u03b5\\u03bb\\u03af\",\n\"Row\": \"\\u0393\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae\",\n\"Column\": \"\\u03a3\\u03c4\\u03ae\\u03bb\\u03b7\",\n\"Cell properties\": \"\\u0399\\u03b4\\u03b9\\u03cc\\u03c4\\u03b7\\u03c4\\u03b5\\u03c2 \\u03ba\\u03b5\\u03bb\\u03b9\\u03bf\\u03cd\",\n\"Merge cells\": \"\\u03a3\\u03c5\\u03b3\\u03c7\\u03ce\\u03bd\\u03b5\\u03c5\\u03c3\\u03b7 \\u03ba\\u03b5\\u03bb\\u03b9\\u03ce\\u03bd\",\n\"Split cell\": \"\\u0394\\u03b9\\u03b1\\u03af\\u03c1\\u03b5\\u03c3\\u03b7 \\u03ba\\u03b5\\u03bb\\u03b9\\u03bf\\u03cd\",\n\"Insert row before\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae\\u03c2 \\u03b5\\u03c0\\u03ac\\u03bd\\u03c9\",\n\"Insert row after\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae\\u03c2 \\u03ba\\u03ac\\u03c4\\u03c9\",\n\"Delete row\": \"\\u0394\\u03b9\\u03b1\\u03b3\\u03c1\\u03b1\\u03c6\\u03ae \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae\\u03c2\",\n\"Row properties\": \"\\u0399\\u03b4\\u03b9\\u03cc\\u03c4\\u03b7\\u03c4\\u03b5\\u03c2 \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae\\u03c2\",\n\"Cut row\": \"\\u0391\\u03c0\\u03bf\\u03ba\\u03bf\\u03c0\\u03ae \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae\\u03c2\",\n\"Copy row\": \"\\u0391\\u03bd\\u03c4\\u03b9\\u03b3\\u03c1\\u03b1\\u03c6\\u03ae \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae\\u03c2\",\n\"Paste row before\": \"\\u0395\\u03c0\\u03b9\\u03ba\\u03cc\\u03bb\\u03bb\\u03b7\\u03c3\\u03b7 \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae\\u03c2 \\u03b5\\u03c0\\u03ac\\u03bd\\u03c9\",\n\"Paste row after\": \"\\u0395\\u03c0\\u03b9\\u03ba\\u03cc\\u03bb\\u03bb\\u03b7\\u03c3\\u03b7 \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae\\u03c2 \\u03ba\\u03ac\\u03c4\\u03c9\",\n\"Insert column before\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae \\u03c3\\u03c4\\u03ae\\u03bb\\u03b7\\u03c2 \\u03b1\\u03c1\\u03b9\\u03c3\\u03c4\\u03b5\\u03c1\\u03ac\",\n\"Insert column after\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae \\u03c3\\u03c4\\u03ae\\u03bb\\u03b7\\u03c2 \\u03b4\\u03b5\\u03be\\u03b9\\u03ac\",\n\"Delete column\": \"\\u0394\\u03b9\\u03b1\\u03b3\\u03c1\\u03b1\\u03c6\\u03ae \\u03c3\\u03c4\\u03ae\\u03bb\\u03b7\\u03c2\",\n\"Cols\": \"\\u03a3\\u03c4\\u03ae\\u03bb\\u03b5\\u03c2\",\n\"Rows\": \"\\u0393\\u03c1\\u03b1\\u03bc\\u03bc\\u03ad\\u03c2\",\n\"Width\": \"\\u03a0\\u03bb\\u03ac\\u03c4\\u03bf\\u03c2\",\n\"Height\": \"\\u038e\\u03c8\\u03bf\\u03c2\",\n\"Cell spacing\": \"\\u0391\\u03c0\\u03cc\\u03c3\\u03c4\\u03b1\\u03c3\\u03b7 \\u03ba\\u03b5\\u03bb\\u03b9\\u03ce\\u03bd\",\n\"Cell padding\": \"\\u0391\\u03bd\\u03b1\\u03c0\\u03bb\\u03ae\\u03c1\\u03c9\\u03c3\\u03b7 \\u03ba\\u03b5\\u03bb\\u03b9\\u03ce\\u03bd\",\n\"Caption\": \"\\u039b\\u03b5\\u03b6\\u03ac\\u03bd\\u03c4\\u03b1\",\n\"Left\": \"\\u0391\\u03c1\\u03b9\\u03c3\\u03c4\\u03b5\\u03c1\\u03ac\",\n\"Center\": \"\\u039a\\u03b5\\u03bd\\u03c4\\u03c1\\u03b1\\u03c1\\u03b9\\u03c3\\u03bc\\u03ad\\u03bd\\u03b7\",\n\"Right\": \"\\u0394\\u03b5\\u03be\\u03b9\\u03ac\",\n\"Cell type\": \"\\u03a4\\u03cd\\u03c0\\u03bf\\u03c2 \\u03ba\\u03b5\\u03bb\\u03b9\\u03bf\\u03cd\",\n\"Scope\": \"\\u0388\\u03ba\\u03c4\\u03b1\\u03c3\\u03b7\",\n\"Alignment\": \"\\u03a3\\u03c4\\u03bf\\u03af\\u03c7\\u03b9\\u03c3\\u03b7\",\n\"H Align\": \"\\u039f\\u03c1. \\u03a3\\u03c4\\u03bf\\u03af\\u03c7\\u03b9\\u03c3\\u03b7\",\n\"V Align\": \"\\u039a. \\u03a3\\u03c4\\u03bf\\u03af\\u03c7\\u03b9\\u03c3\\u03b7\",\n\"Top\": \"\\u039a\\u03bf\\u03c1\\u03c5\\u03c6\\u03ae\",\n\"Middle\": \"\\u039c\\u03ad\\u03c3\\u03b7\",\n\"Bottom\": \"\\u039a\\u03ac\\u03c4\\u03c9\",\n\"Header cell\": \"\\u039a\\u03b5\\u03bb\\u03af-\\u03ba\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1\",\n\"Row group\": \"\\u039f\\u03bc\\u03ac\\u03b4\\u03b1 \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ce\\u03bd\",\n\"Column group\": \"\\u039f\\u03bc\\u03ac\\u03b4\\u03b1 \\u03c3\\u03c4\\u03b7\\u03bb\\u03ce\\u03bd\",\n\"Row type\": \"\\u03a4\\u03cd\\u03c0\\u03bf\\u03c2 \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae\\u03c2\",\n\"Header\": \"\\u039a\\u03b5\\u03c6\\u03b1\\u03bb\\u03af\\u03b4\\u03b1\",\n\"Body\": \"\\u03a3\\u03ce\\u03bc\\u03b1\",\n\"Footer\": \"\\u03a5\\u03c0\\u03bf\\u03c3\\u03ad\\u03bb\\u03b9\\u03b4\\u03bf\",\n\"Border color\": \"\\u03a7\\u03c1\\u03ce\\u03bc\\u03b1 \\u03c0\\u03bb\\u03b1\\u03b9\\u03c3\\u03af\\u03bf\\u03c5\",\n\"Insert template\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae \\u03c0\\u03c1\\u03bf\\u03c4\\u03cd\\u03c0\\u03bf\\u03c5 \",\n\"Templates\": \"\\u03a0\\u03c1\\u03cc\\u03c4\\u03c5\\u03c0\\u03b1\",\n\"Template\": \"\\u03a0\\u03c1\\u03cc\\u03c4\\u03c5\\u03c0\\u03bf\",\n\"Text color\": \"\\u03a7\\u03c1\\u03ce\\u03bc\\u03b1 \\u03ba\\u03b5\\u03b9\\u03bc\\u03ad\\u03bd\\u03bf\\u03c5 \",\n\"Background color\": \"\\u03a7\\u03c1\\u03ce\\u03bc\\u03b1 \\u03c6\\u03cc\\u03bd\\u03c4\\u03bf\\u03c5\",\n\"Custom...\": \"\\u03a0\\u03c1\\u03bf\\u03c3\\u03b1\\u03c1\\u03bc\\u03bf\\u03b3\\u03ae...\",\n\"Custom color\": \"\\u03a0\\u03c1\\u03bf\\u03c3\\u03b1\\u03c1\\u03bc\\u03bf\\u03c3\\u03bc\\u03ad\\u03bd\\u03bf \\u03c7\\u03c1\\u03ce\\u03bc\\u03b1\",\n\"No color\": \"\\u03a7\\u03c9\\u03c1\\u03af\\u03c2 \\u03c7\\u03c1\\u03ce\\u03bc\\u03b1\",\n\"Table of Contents\": \"\\u03a0\\u03af\\u03bd\\u03b1\\u03ba\\u03b1\\u03c2 \\u03a0\\u03b5\\u03c1\\u03b9\\u03b5\\u03c7\\u03bf\\u03bc\\u03ad\\u03bd\\u03c9\\u03bd\",\n\"Show blocks\": \"\\u0395\\u03bc\\u03c6\\u03ac\\u03bd\\u03b9\\u03c3\\u03b7 \\u03c4\\u03bc\\u03b7\\u03bc\\u03ac\\u03c4\\u03c9\\u03bd\",\n\"Show invisible characters\": \"\\u0395\\u03bc\\u03c6\\u03ac\\u03bd\\u03b9\\u03c3\\u03b7 \\u03ba\\u03c1\\u03c5\\u03c6\\u03ce\\u03bd \\u03c7\\u03b1\\u03c1\\u03b1\\u03ba\\u03c4\\u03ae\\u03c1\\u03c9\\u03bd\",\n\"Words: {0}\": \"\\u039b\\u03ad\\u03be\\u03b5\\u03b9\\u03c2: {0}\",\n\"{0} words\": \"{0} \\u03bb\\u03ad\\u03be\\u03b5\\u03b9\\u03c2\",\n\"File\": \"\\u0391\\u03c1\\u03c7\\u03b5\\u03af\\u03bf\",\n\"Edit\": \"\\u0395\\u03c0\\u03b5\\u03be\\u03b5\\u03c1\\u03b3\\u03b1\\u03c3\\u03af\\u03b1\",\n\"Insert\": \"\\u0395\\u03b9\\u03c3\\u03b1\\u03b3\\u03c9\\u03b3\\u03ae\",\n\"View\": \"\\u03a0\\u03c1\\u03bf\\u03b2\\u03bf\\u03bb\\u03ae\",\n\"Format\": \"\\u039c\\u03bf\\u03c1\\u03c6\\u03bf\\u03c0\\u03bf\\u03af\\u03b7\\u03c3\\u03b7\",\n\"Table\": \"\\u03a0\\u03af\\u03bd\\u03b1\\u03ba\\u03b1\\u03c2\",\n\"Tools\": \"\\u0395\\u03c1\\u03b3\\u03b1\\u03bb\\u03b5\\u03af\\u03b1\",\n\"Powered by {0}\": \"\\u03a4\\u03c1\\u03bf\\u03c6\\u03bf\\u03b4\\u03bf\\u03c4\\u03b5\\u03af\\u03c4\\u03b1\\u03b9 \\u03b1\\u03c0\\u03cc {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u03a0\\u03b5\\u03c1\\u03b9\\u03bf\\u03c7\\u03ae \\u0395\\u03bc\\u03c0\\u03bb\\u03bf\\u03c5\\u03c4\\u03b9\\u03c3\\u03bc\\u03ad\\u03bd\\u03bf \\u039a\\u03b5\\u03b9\\u03bc\\u03ad\\u03bd\\u03bf\\u03c5. \\u03a0\\u03b1\\u03c4\\u03ae\\u03c3\\u03c4\\u03b5 ALT-F9 \\u03b3\\u03b9\\u03b1 \\u03c4\\u03bf \\u03bc\\u03b5\\u03bd\\u03bf\\u03cd. \\u03a0\\u03b1\\u03c4\\u03ae\\u03c3\\u03c4\\u03b5 ALT-F10 \\u03b3\\u03b9\\u03b1  \\u03c4\\u03b7 \\u03b3\\u03c1\\u03b1\\u03bc\\u03bc\\u03ae \\u03b5\\u03c1\\u03b3\\u03b1\\u03bb\\u03b5\\u03af\\u03c9\\u03bd. \\u03a0\\u03b1\\u03c4\\u03ae\\u03c3\\u03c4\\u03b5 ALT-0 \\u03b3\\u03b9\\u03b1 \\u03b2\\u03bf\\u03ae\\u03b8\\u03b5\\u03b9\\u03b1\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/eo.js",
    "content": "tinymce.addI18n('eo',{\n\"Cut\": \"Eltran\\u0109i\",\n\"Heading 5\": \"Titolo 5\",\n\"Header 2\": \"\\u0108apo 2\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Via retumilo ne subtenas rektan aliron al bufro. Bonvolu antata\\u016de uzi klavarajn kombinojn Ctrl+X\\/C\\/V.\",\n\"Heading 4\": \"Titolo 4\",\n\"Div\": \"Div\",\n\"Heading 2\": \"Titolo 2\",\n\"Paste\": \"Englui\",\n\"Close\": \"Fermi\",\n\"Font Family\": \"Tipara familio\",\n\"Pre\": \"Pre\",\n\"Align right\": \"Ordigu dekstren\",\n\"New document\": \"Nova dokumento\",\n\"Blockquote\": \"Mar\\u011denigo\",\n\"Numbered list\": \"Numera listo\",\n\"Heading 1\": \"Titolo 1\",\n\"Headings\": \"Titoloj\",\n\"Increase indent\": \"Pliigu alineon\",\n\"Formats\": \"Formatoj\",\n\"Headers\": \"\\u0108apoj\",\n\"Select all\": \"Elekti \\u0109ion\",\n\"Header 3\": \"\\u0108apo 3\",\n\"Blocks\": \"Blokoj\",\n\"Undo\": \"Malfari\",\n\"Strikethrough\": \"Trastreki\",\n\"Bullet list\": \"Punkta listo\",\n\"Header 1\": \"\\u0108apo 1\",\n\"Superscript\": \"Superskribi\",\n\"Clear formatting\": \"Forigi formatigon\",\n\"Font Sizes\": \"Tiparaj grandoj\",\n\"Subscript\": \"Malsuperskribi\",\n\"Header 6\": \"\\u0108apo 6\",\n\"Redo\": \"Refari\",\n\"Paragraph\": \"Alineo\",\n\"Ok\": \"Bone\",\n\"Bold\": \"Dika\",\n\"Code\": \"Kodo\",\n\"Italic\": \"Oblikva\",\n\"Align center\": \"Ordigu centren\",\n\"Header 5\": \"\\u0108apo 5\",\n\"Heading 6\": \"Titolo 6\",\n\"Heading 3\": \"Titolo 3\",\n\"Decrease indent\": \"Malpliigu alineon\",\n\"Header 4\": \"\\u0108apo 4\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"La engluado nun okazas en simpla teksta re\\u011dimo. La enhavo estos engluata kiel simpla teksto \\u011dis anta\\u016d vi for\\u015daltos tiun \\u0109i opcion.\",\n\"Underline\": \"Substreki\",\n\"Cancel\": \"Nuligi\",\n\"Justify\": \"Ordigu la\\u016dflanke\",\n\"Inline\": \"Enlinie\",\n\"Copy\": \"Kopii\",\n\"Align left\": \"Ordigu maldekstren\",\n\"Visual aids\": \"Videblaj helpiloj\",\n\"Lower Greek\": \"Minuskla greka\",\n\"Square\": \"Kvadrato\",\n\"Default\": \"Implicite\",\n\"Lower Alpha\": \"Minuskla alfabeta\",\n\"Circle\": \"Cirklo\",\n\"Disc\": \"Disko\",\n\"Upper Alpha\": \"Majuskla alfabeta\",\n\"Upper Roman\": \"Majuskla latina\",\n\"Lower Roman\": \"Minuskla latina\",\n\"Name\": \"Nomo\",\n\"Anchor\": \"Ankro\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Vi havas nekonservitajn \\u015dan\\u011dojn, \\u0109u vi certe deziras eliri?\",\n\"Restore last draft\": \"Restarigu lastan malneton\",\n\"Special character\": \"Speciala karaktro\",\n\"Source code\": \"Fonta kodo\",\n\"B\": \"B\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"Color\": \"Koloro\",\n\"Right to left\": \"Dekstro maldekstren\",\n\"Left to right\": \"Maldekstro dekstren\",\n\"Emoticons\": \"Emociikonoj\",\n\"Robots\": \"Robotoj\",\n\"Document properties\": \"Dokumentaj trajtoj\",\n\"Title\": \"Titolo\",\n\"Keywords\": \"\\u015closilvortoj\",\n\"Encoding\": \"Enkodigo\",\n\"Description\": \"Priskribo\",\n\"Author\": \"A\\u016dtoro\",\n\"Fullscreen\": \"Tutekrane\",\n\"Horizontal line\": \"Horizontala linio\",\n\"Horizontal space\": \"Horizontala spaco\",\n\"Insert\\/edit image\": \"Enmetu\\/redaktu bildon\",\n\"General\": \"\\u011cenerale\",\n\"Advanced\": \"Por spertuloj\",\n\"Source\": \"Fonto\",\n\"Border\": \"Limo\",\n\"Constrain proportions\": \"Relativigu proporciojn\",\n\"Vertical space\": \"Vertikala spaco\",\n\"Image description\": \"Bilda priskribo\",\n\"Style\": \"Stilo\",\n\"Dimensions\": \"Dimensioj\",\n\"Insert image\": \"Enmetu bildon\",\n\"Zoom in\": \"Plilar\\u011digu\",\n\"Contrast\": \"Kontrasto\",\n\"Back\": \"Reen\",\n\"Gamma\": \"Gamo\",\n\"Flip horizontally\": \"Respegulu horizontale\",\n\"Resize\": \"\\u015can\\u011du dimensiojn\",\n\"Sharpen\": \"Akrigu\",\n\"Zoom out\": \"Malplilar\\u011digu\",\n\"Image options\": \"Bildaj opcioj\",\n\"Apply\": \"Apliku\",\n\"Brightness\": \"Heleco\",\n\"Rotate clockwise\": \"Rotaciu la\\u016d horlo\\u011do\",\n\"Rotate counterclockwise\": \"Rotaciu kontra\\u016d horlo\\u011do\",\n\"Edit image\": \"Redaktu bildon\",\n\"Color levels\": \"Kolorniveloj\",\n\"Crop\": \"Randtran\\u0109u\",\n\"Orientation\": \"Orientigo\",\n\"Flip vertically\": \"Respegulu vertikale\",\n\"Invert\": \"Inversigu\",\n\"Insert date\\/time\": \"Enmetu daton\\/tempon\",\n\"Remove link\": \"Forigu ligilon\",\n\"Url\": \"Urlo\",\n\"Text to display\": \"Montrata teksto\",\n\"Anchors\": \"Ankroj\",\n\"Insert link\": \"Enmetu ligilon\",\n\"New window\": \"Nova fenestro\",\n\"None\": \"Nenio\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"La enmetita URLo \\u015dajnas esti ekstera ligilo. \\u0108u vi deziras aldoni nepran prefikson http:\\/\\/?\",\n\"Target\": \"Celo\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"La enmetita URLo \\u015dajnas esti retadreso. \\u0108u vi deziras aldoni prefikson mailto:?\",\n\"Insert\\/edit link\": \"Enmetu\\/redaktu ligilon\",\n\"Insert\\/edit video\": \"Enmetu\\/redaktu videon\",\n\"Poster\": \"Afi\\u015do\",\n\"Alternative source\": \"Alternativa fonto\",\n\"Paste your embed code below:\": \"Engluu vian internan kodon \\u0109i-sube:\",\n\"Insert video\": \"Enmetu videon\",\n\"Embed\": \"Enkonstruu\",\n\"Nonbreaking space\": \"Nerompebla spaco\",\n\"Page break\": \"Pa\\u011da fino\",\n\"Paste as text\": \"Engluu kiel tekston\",\n\"Preview\": \"Provrigardo\",\n\"Print\": \"Presu\",\n\"Save\": \"Konservi\",\n\"Could not find the specified string.\": \"Malsukceso trovi la indikitan sinsekvon\",\n\"Replace\": \"Anstata\\u016digi\",\n\"Next\": \"Posta\",\n\"Whole words\": \"Tutaj vortoj\",\n\"Find and replace\": \"Trovi kaj anstata\\u016digi\",\n\"Replace with\": \"Anstata\\u016digi per\",\n\"Find\": \"Trovi\",\n\"Replace all\": \"Anstata\\u016digi\\u0109ion\",\n\"Match case\": \"Sekvi usklecon\",\n\"Prev\": \"Anta\\u016da\",\n\"Spellcheck\": \"Literumu\",\n\"Finish\": \"Finu\",\n\"Ignore all\": \"Ignoru \\u0109ion\",\n\"Ignore\": \"Ignoru\",\n\"Add to Dictionary\": \"Aldonu al vortaro\",\n\"Insert row before\": \"Enmetu vicon anta\\u016d\",\n\"Rows\": \"Vicoj\",\n\"Height\": \"Alto\",\n\"Paste row after\": \"Engluu vicon poste\",\n\"Alignment\": \"Aligo\",\n\"Border color\": \"Lima koloro\",\n\"Column group\": \"Kolumna grupo\",\n\"Row\": \"Vico\",\n\"Insert column before\": \"Enmetu kolumnon anta\\u016d\",\n\"Split cell\": \"Disdividu \\u0109elon\",\n\"Cell padding\": \"\\u0108elmar\\u011denoj\",\n\"Cell spacing\": \"\\u0108elspacoj\",\n\"Row type\": \"Vica tipo\",\n\"Insert table\": \"Enmetu tabelon\",\n\"Body\": \"Korpo\",\n\"Caption\": \"Cita\\u0135o\",\n\"Footer\": \"Piedo\",\n\"Delete row\": \"Forigu vicon\",\n\"Paste row before\": \"Engluu vicon anta\\u016d\",\n\"Scope\": \"Amplekso\",\n\"Delete table\": \"Forigu tabelon\",\n\"H Align\": \"H aligo\",\n\"Top\": \"Supro\",\n\"Header cell\": \"\\u0108apa \\u0109elo\",\n\"Column\": \"Kolumno\",\n\"Row group\": \"Vica grupo\",\n\"Cell\": \"\\u0108elo\",\n\"Middle\": \"Mezo\",\n\"Cell type\": \"\\u0108ela tipo\",\n\"Copy row\": \"Kopiu vicon\",\n\"Row properties\": \"Vicaj ecoj\",\n\"Table properties\": \"Tabelaj ecoj\",\n\"Bottom\": \"Subo\",\n\"V Align\": \"V aligo\",\n\"Header\": \"\\u0108apo\",\n\"Right\": \"Dekstro\",\n\"Insert column after\": \"Enmetu kolumnon poste\",\n\"Cols\": \"Kolumonoj\",\n\"Insert row after\": \"Enmetu vicon poste\",\n\"Width\": \"Lar\\u011do\",\n\"Cell properties\": \"\\u0108elaj ecoj\",\n\"Left\": \"Maldekstro\",\n\"Cut row\": \"Eltran\\u0109u vicon\",\n\"Delete column\": \"Forigu kolumnon\",\n\"Center\": \"Centro\",\n\"Merge cells\": \"Kunigu \\u0109elojn\",\n\"Insert template\": \"Enmetu \\u015dablonon\",\n\"Templates\": \"\\u015cablonoj\",\n\"Background color\": \"Fona koloro\",\n\"Custom...\": \"Propra...\",\n\"Custom color\": \"Propra koloro\",\n\"No color\": \"Neniu koloro\",\n\"Text color\": \"Teksta koloro\",\n\"Show blocks\": \"Montru blokojn\",\n\"Show invisible characters\": \"Montru nevideblajn karaktrojn\",\n\"Words: {0}\": \"Vortoj: {0}\",\n\"Insert\": \"Enmeti\",\n\"File\": \"Dokumento\",\n\"Edit\": \"Redakti\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Ri\\u0109teksta Areo. Premu ALT-F9 por menuo. Premu ALT-F10 por menuejo. Premu ALT-0 por helpo\",\n\"Tools\": \"Iloj\",\n\"View\": \"Vidi\",\n\"Table\": \"Tabelo\",\n\"Format\": \"Aspektigi\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/es.js",
    "content": "tinymce.addI18n('es',{\n\"Redo\": \"Rehacer\",\n\"Undo\": \"Deshacer\",\n\"Cut\": \"Cortar\",\n\"Copy\": \"Copiar\",\n\"Paste\": \"Pegar\",\n\"Select all\": \"Seleccionar todo\",\n\"New document\": \"Nuevo documento\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Cancelar\",\n\"Visual aids\": \"Ayudas visuales\",\n\"Bold\": \"Negrita\",\n\"Italic\": \"Cursiva\",\n\"Underline\": \"Subrayado\",\n\"Strikethrough\": \"Tachado\",\n\"Superscript\": \"Super\\u00edndice\",\n\"Subscript\": \"Sub\\u00edndice\",\n\"Clear formatting\": \"Limpiar formato\",\n\"Align left\": \"Alinear a la izquierda\",\n\"Align center\": \"Alinear al centro\",\n\"Align right\": \"Alinear a la derecha\",\n\"Justify\": \"Justificar\",\n\"Bullet list\": \"Lista de vi\\u00f1etas\",\n\"Numbered list\": \"Lista numerada\",\n\"Decrease indent\": \"Disminuir sangr\\u00eda\",\n\"Increase indent\": \"Incrementar sangr\\u00eda\",\n\"Close\": \"Cerrar\",\n\"Formats\": \"Formatos\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Su navegador no es compatible con el acceso directo al portapapeles. Use las teclas Crtl+X\\/C\\/V de su teclado.\",\n\"Headers\": \"Encabezados\",\n\"Header 1\": \"Encabezado 1\",\n\"Header 2\": \"Encabezado 2\",\n\"Header 3\": \"Encabezado 3\",\n\"Header 4\": \"Encabezado 4\",\n\"Header 5\": \"Encabezado 5\",\n\"Header 6\": \"Encabezado 6\",\n\"Headings\": \"Encabezados\",\n\"Heading 1\": \"Encabezado 1\",\n\"Heading 2\": \"Encabezado 2\",\n\"Heading 3\": \"Encabezado 3\",\n\"Heading 4\": \"Encabezado 4\",\n\"Heading 5\": \"Encabezado 5\",\n\"Heading 6\": \"Encabezado 6\",\n\"Preformatted\": \"Con formato previo\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"C\\u00f3digo\",\n\"Paragraph\": \"P\\u00e1rrafo\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Alineado\",\n\"Blocks\": \"Bloques\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Pegar est\\u00e1 ahora en modo de texto plano. El contenido se pegar\\u00e1 como texto plano hasta que desactive esta opci\\u00f3n.\",\n\"Fonts\": \"Fuentes\",\n\"Font Sizes\": \"Tama\\u00f1os de fuente\",\n\"Class\": \"Clase\",\n\"Browse for an image\": \"Buscar una imagen\",\n\"OR\": \"OR\",\n\"Drop an image here\": \"Arrastre una imagen aqu\\u00ed\",\n\"Upload\": \"Cargar\",\n\"Block\": \"Bloque\",\n\"Align\": \"Alinear\",\n\"Default\": \"Por defecto\",\n\"Circle\": \"C\\u00edrculo\",\n\"Disc\": \"Disco\",\n\"Square\": \"Cuadrado\",\n\"Lower Alpha\": \"Inferior Alfa\",\n\"Lower Greek\": \"Inferior Griega\",\n\"Lower Roman\": \"Inferior Romana\",\n\"Upper Alpha\": \"Superior Alfa\",\n\"Upper Roman\": \"Superior Romana\",\n\"Anchor...\": \"Anclaje...\",\n\"Name\": \"Nombre\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Deber\\u00eda comenzar por una letra, seguida solo de letras, n\\u00fameros, guiones, puntos, dos puntos o guiones bajos.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Tiene cambios sin guardar. \\u00bfEst\\u00e1 seguro de que quiere salir?\",\n\"Restore last draft\": \"Restaurar el \\u00faltimo borrador\",\n\"Special character...\": \"Car\\u00e1cter especial...\",\n\"Source code\": \"C\\u00f3digo fuente\",\n\"Insert\\/Edit code sample\": \"Insertar\\/editar c\\u00f3digo de prueba\",\n\"Language\": \"Idioma\",\n\"Code sample...\": \"Ejemplo de c\\u00f3digo...\",\n\"Color Picker\": \"Selector de colores\",\n\"R\": \"R\",\n\"G\": \"V\",\n\"B\": \"A\",\n\"Left to right\": \"De izquierda a derecha\",\n\"Right to left\": \"De derecha a izquierda\",\n\"Emoticons...\": \"Emoticones...\",\n\"Metadata and Document Properties\": \"Metadatos y propiedades del documento\",\n\"Title\": \"T\\u00edtulo\",\n\"Keywords\": \"Palabras clave\",\n\"Description\": \"Descripci\\u00f3n\",\n\"Robots\": \"Robots\",\n\"Author\": \"Autor\",\n\"Encoding\": \"Codificaci\\u00f3n\",\n\"Fullscreen\": \"Pantalla completa\",\n\"Action\": \"Acci\\u00f3n\",\n\"Shortcut\": \"Atajo\",\n\"Help\": \"Ayuda\",\n\"Address\": \"Direcci\\u00f3n\",\n\"Focus to menubar\": \"Enfocar la barra del men\\u00fa\",\n\"Focus to toolbar\": \"Enfocar la barra de herramientas\",\n\"Focus to element path\": \"Enfocar la ruta del elemento\",\n\"Focus to contextual toolbar\": \"Enfocar la barra de herramientas contextual\",\n\"Insert link (if link plugin activated)\": \"Insertar enlace (si el complemento de enlace est\\u00e1 activado)\",\n\"Save (if save plugin activated)\": \"Guardar (si el componente de salvar est\\u00e1 activado)\",\n\"Find (if searchreplace plugin activated)\": \"Buscar (si el complemento buscar-remplazar est\\u00e1 activado)\",\n\"Plugins installed ({0}):\": \"Plugins instalados ({0}):\",\n\"Premium plugins:\": \"Complementos premium:\",\n\"Learn more...\": \"Aprende m\\u00e1s...\",\n\"You are using {0}\": \"Estas usando {0}\",\n\"Plugins\": \"Complementos\",\n\"Handy Shortcuts\": \"Accesos directos\",\n\"Horizontal line\": \"L\\u00ednea horizontal\",\n\"Insert\\/edit image\": \"Insertar\\/editar imagen\",\n\"Image description\": \"Descripci\\u00f3n de la imagen\",\n\"Source\": \"Enlace\",\n\"Dimensions\": \"Dimensiones\",\n\"Constrain proportions\": \"Restringir proporciones\",\n\"General\": \"General\",\n\"Advanced\": \"Avanzado\",\n\"Style\": \"Estilo\",\n\"Vertical space\": \"Espacio vertical\",\n\"Horizontal space\": \"Espacio horizontal\",\n\"Border\": \"Borde\",\n\"Insert image\": \"Insertar imagen\",\n\"Image...\": \"Imagen...\",\n\"Image list\": \"Lista de im\\u00e1genes\",\n\"Rotate counterclockwise\": \"Girar a la izquierda\",\n\"Rotate clockwise\": \"Girar a la derecha\",\n\"Flip vertically\": \"Invertir verticalmente\",\n\"Flip horizontally\": \"Invertir horizontalmente\",\n\"Edit image\": \"Editar imagen\",\n\"Image options\": \"Opciones de imagen\",\n\"Zoom in\": \"Acercar\",\n\"Zoom out\": \"Alejar\",\n\"Crop\": \"Recortar\",\n\"Resize\": \"Redimensionar\",\n\"Orientation\": \"Orientaci\\u00f3n\",\n\"Brightness\": \"Brillo\",\n\"Sharpen\": \"Forma\",\n\"Contrast\": \"Contraste\",\n\"Color levels\": \"Niveles de color\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Invertir\",\n\"Apply\": \"Aplicar\",\n\"Back\": \"Atr\\u00e1s\",\n\"Insert date\\/time\": \"Insertar fecha\\/hora\",\n\"Date\\/time\": \"Fecha\\/hora\",\n\"Insert\\/Edit Link\": \"Insertar\\/editar enlace\",\n\"Insert\\/edit link\": \"Insertar\\/editar enlace\",\n\"Text to display\": \"Texto para mostrar\",\n\"Url\": \"URL\",\n\"Open link in...\": \"Abrir enlace en...\",\n\"Current window\": \"Ventana actual\",\n\"None\": \"Ninguno\",\n\"New window\": \"Nueva ventana\",\n\"Remove link\": \"Quitar enlace\",\n\"Anchors\": \"Anclas\",\n\"Link...\": \"Enlace...\",\n\"Paste or type a link\": \"Pega o introduce un enlace\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"El enlace que has introducido no parece ser una direcci\\u00f3n de correo electr\\u00f3nico. Quieres a\\u00f1adir el prefijo necesario mailto: ?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"El enlace que has introducido no parece ser una enlace externo. Quieres a\\u00f1adir el prefijo necesario http:\\/\\/ ?\",\n\"Link list\": \"Lista de enlaces\",\n\"Insert video\": \"Insertar video\",\n\"Insert\\/edit video\": \"Insertar\\/editar video\",\n\"Insert\\/edit media\": \"Insertar\\/editar medio\",\n\"Alternative source\": \"Enlace alternativo\",\n\"Alternative source URL\": \"Origen de URL alternativo\",\n\"Media poster (Image URL)\": \"P\\u00f3ster de medio (URL de imagen)\",\n\"Paste your embed code below:\": \"Pega tu c\\u00f3digo embebido debajo\",\n\"Embed\": \"Incrustado\",\n\"Media...\": \"Medios...\",\n\"Nonbreaking space\": \"Espacio fijo\",\n\"Page break\": \"Salto de p\\u00e1gina\",\n\"Paste as text\": \"Pegar como texto\",\n\"Preview\": \"Previsualizar\",\n\"Print...\": \"Imprimir...\",\n\"Save\": \"Guardar\",\n\"Find\": \"Buscar\",\n\"Replace with\": \"Reemplazar con\",\n\"Replace\": \"Reemplazar\",\n\"Replace all\": \"Reemplazar todo\",\n\"Previous\": \"Anterior\",\n\"Next\": \"Siguiente\",\n\"Find and replace...\": \"Buscar y reemplazar...\",\n\"Could not find the specified string.\": \"No se encuentra la cadena de texto especificada\",\n\"Match case\": \"Coincidencia exacta\",\n\"Find whole words only\": \"Solo palabras completas\",\n\"Spell check\": \"Revisar ortograf\\u00eda\",\n\"Ignore\": \"Ignorar\",\n\"Ignore all\": \"Ignorar todos\",\n\"Finish\": \"Finalizar\",\n\"Add to Dictionary\": \"A\\u00f1adir al Diccionario\",\n\"Insert table\": \"Insertar tabla\",\n\"Table properties\": \"Propiedades de la tabla\",\n\"Delete table\": \"Eliminar tabla\",\n\"Cell\": \"Celda\",\n\"Row\": \"Fila\",\n\"Column\": \"Columna\",\n\"Cell properties\": \"Propiedades de la celda\",\n\"Merge cells\": \"Combinar celdas\",\n\"Split cell\": \"Dividir celdas\",\n\"Insert row before\": \"Insertar fila antes\",\n\"Insert row after\": \"Insertar fila despu\\u00e9s \",\n\"Delete row\": \"Eliminar fila\",\n\"Row properties\": \"Propiedades de la fila\",\n\"Cut row\": \"Cortar fila\",\n\"Copy row\": \"Copiar fila\",\n\"Paste row before\": \"Pegar la fila antes\",\n\"Paste row after\": \"Pegar la fila despu\\u00e9s\",\n\"Insert column before\": \"Insertar columna antes\",\n\"Insert column after\": \"Insertar columna despu\\u00e9s\",\n\"Delete column\": \"Eliminar columna\",\n\"Cols\": \"Columnas\",\n\"Rows\": \"Filas\",\n\"Width\": \"Ancho\",\n\"Height\": \"Alto\",\n\"Cell spacing\": \"Espacio entre celdas\",\n\"Cell padding\": \"Relleno de celda\",\n\"Show caption\": \"Mostrar t\\u00edtulo\",\n\"Left\": \"Izquierda\",\n\"Center\": \"Centrado\",\n\"Right\": \"Derecha\",\n\"Cell type\": \"Tipo de celda\",\n\"Scope\": \"\\u00c1mbito\",\n\"Alignment\": \"Alineaci\\u00f3n\",\n\"H Align\": \"Alineamiento Horizontal\",\n\"V Align\": \"Alineamiento Vertical\",\n\"Top\": \"Arriba\",\n\"Middle\": \"Centro\",\n\"Bottom\": \"Abajo\",\n\"Header cell\": \"Celda de la cebecera\",\n\"Row group\": \"Grupo de filas\",\n\"Column group\": \"Grupo de columnas\",\n\"Row type\": \"Tipo de fila\",\n\"Header\": \"Cabecera\",\n\"Body\": \"Cuerpo\",\n\"Footer\": \"Pie de p\\u00e1gina\",\n\"Border color\": \"Color del borde\",\n\"Insert template...\": \"Insertar plantilla...\",\n\"Templates\": \"Plantillas\",\n\"Template\": \"Plantilla\",\n\"Text color\": \"Color del texto\",\n\"Background color\": \"Color de fondo\",\n\"Custom...\": \"Personalizar...\",\n\"Custom color\": \"Color personalizado\",\n\"No color\": \"Sin color\",\n\"Remove color\": \"Quitar color\",\n\"Table of Contents\": \"Tabla de contenidos\",\n\"Show blocks\": \"Mostrar bloques\",\n\"Show invisible characters\": \"Mostrar caracteres invisibles\",\n\"Word count\": \"Contar palabras\",\n\"Count\": \"Recuento\",\n\"Document\": \"Documento\",\n\"Selection\": \"Selecci\\u00f3n\",\n\"Words\": \"Palabras\",\n\"Words: {0}\": \"Palabras: {0}\",\n\"{0} words\": \"{0} palabras\",\n\"File\": \"Archivo\",\n\"Edit\": \"Editar\",\n\"Insert\": \"Insertar\",\n\"View\": \"Ver\",\n\"Format\": \"Formato\",\n\"Table\": \"Tabla\",\n\"Tools\": \"Herramientas\",\n\"Powered by {0}\": \"Desarrollado por {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u00c1rea de texto enriquecido. Pulse ALT-F9 para el menu. Pulse ALT-F10 para la barra de herramientas. Pulse ALT-0 para ayuda\",\n\"Image title\": \"Titulo de imagen\",\n\"Border width\": \"Ancho de borde\",\n\"Border style\": \"Estilo de borde\",\n\"Error\": \"Error\",\n\"Warn\": \"Advertencia\",\n\"Valid\": \"V\\u00e1lido\",\n\"To open the popup, press Shift+Enter\": \"Para abrir el elemento emergente, pulse May\\u00fas+Intro\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u00c1rea de texto enriquecido. Pulse ALT-0 para abrir la ayuda.\",\n\"System Font\": \"Fuente de sistema\",\n\"Failed to upload image: {0}\": \"Fallo al cargar imagen: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Fallo al cargar complemento: {0} desde URL {1}\",\n\"Failed to load plugin url: {0}\": \"Fallo al cargar URL del complemento: {0}\",\n\"Failed to initialize plugin: {0}\": \"Fallo al iniciar el complemento: {0}\",\n\"example\": \"ejemplo\",\n\"Search\": \"Buscar\",\n\"All\": \"Todo\",\n\"Currency\": \"Divisa\",\n\"Text\": \"Texto\",\n\"Quotations\": \"Comillas\",\n\"Mathematical\": \"S\\u00edmbolo matem\\u00e1tico\",\n\"Extended Latin\": \"Latino extendido A\",\n\"Symbols\": \"S\\u00edmbolos\",\n\"Arrows\": \"Flechas\",\n\"User Defined\": \"Definido por el usuario\",\n\"dollar sign\": \"signo de d\\u00f3lar\",\n\"currency sign\": \"signo de divisa\",\n\"euro-currency sign\": \"signo de euro\",\n\"colon sign\": \"signo de dos puntos\",\n\"cruzeiro sign\": \"signo de cruceiro\",\n\"french franc sign\": \"signo de franco franc\\u00e9s\",\n\"lira sign\": \"signo de lira\",\n\"mill sign\": \"signo de mill\",\n\"naira sign\": \"signo de naira\",\n\"peseta sign\": \"signo de peseta\",\n\"rupee sign\": \"signo de rupia\",\n\"won sign\": \"signo de won\",\n\"new sheqel sign\": \"signo de nuevo s\\u00e9quel\",\n\"dong sign\": \"signo de dong\",\n\"kip sign\": \"signo de kip\",\n\"tugrik sign\": \"signo de tugrik\",\n\"drachma sign\": \"signo de dracma\",\n\"german penny symbol\": \"signo de penique alem\\u00e1n\",\n\"peso sign\": \"signo de peso\",\n\"guarani sign\": \"signo de guaran\\u00ed\",\n\"austral sign\": \"signo de austral\",\n\"hryvnia sign\": \"signo de grivna\",\n\"cedi sign\": \"signo de cedi\",\n\"livre tournois sign\": \"signo de libra tornesa\",\n\"spesmilo sign\": \"signo de spesmilo\",\n\"tenge sign\": \"signo de tenge\",\n\"indian rupee sign\": \"signo de rupia india\",\n\"turkish lira sign\": \"signo de lira turca\",\n\"nordic mark sign\": \"signo de marco n\\u00f3rdico\",\n\"manat sign\": \"signo de manat\",\n\"ruble sign\": \"signo de rublo\",\n\"yen character\": \"car\\u00e1cter de yen\",\n\"yuan character\": \"car\\u00e1cter de yuan\",\n\"yuan character, in hong kong and taiwan\": \"car\\u00e1cter de yuan en Hong Kong y Taiw\\u00e1n\",\n\"yen\\/yuan character variant one\": \"Variante uno de car\\u00e1cter de yen\\/yuan\",\n\"Loading emoticons...\": \"Cargando emoticonos...\",\n\"Could not load emoticons\": \"No se han podido cargar los emoticonos\",\n\"People\": \"Personas\",\n\"Animals and Nature\": \"Animales y naturaleza\",\n\"Food and Drink\": \"Comida y bebida\",\n\"Activity\": \"Actividad\",\n\"Travel and Places\": \"Viajes y lugares\",\n\"Objects\": \"Objetos\",\n\"Flags\": \"Banderas\",\n\"Characters\": \"Caracteres\",\n\"Characters (no spaces)\": \"Caracteres (sin espacios)\",\n\"{0} characters\": \"{0} caracteres\",\n\"Error: Form submit field collision.\": \"Error: Colisi\\u00f3n de campo al enviar formulario.\",\n\"Error: No form element found.\": \"Error: No se encuentra ning\\u00fan elemento de formulario.\",\n\"Update\": \"Actualizar\",\n\"Color swatch\": \"Muestrario de colores\",\n\"Turquoise\": \"Turquesa\",\n\"Green\": \"Verde\",\n\"Blue\": \"Azul\",\n\"Purple\": \"P\\u00farpura\",\n\"Navy Blue\": \"Azul marino\",\n\"Dark Turquoise\": \"Turquesa oscuro\",\n\"Dark Green\": \"Verde oscuro\",\n\"Medium Blue\": \"Azul medio\",\n\"Medium Purple\": \"P\\u00farpura medio\",\n\"Midnight Blue\": \"Azul medio\",\n\"Yellow\": \"Amarillo\",\n\"Orange\": \"Naranja\",\n\"Red\": \"Rojo\",\n\"Light Gray\": \"Gris claro\",\n\"Gray\": \"Gris\",\n\"Dark Yellow\": \"Amarillo oscuro\",\n\"Dark Orange\": \"Naranja oscuro\",\n\"Dark Red\": \"Rojo oscuro\",\n\"Medium Gray\": \"Gris medio\",\n\"Dark Gray\": \"Gris oscuro\",\n\"Light Green\": \"Verde claro\",\n\"Light Yellow\": \"Amarillo claro\",\n\"Light Red\": \"Rojo claro\",\n\"Light Purple\": \"Morado claro\",\n\"Light Blue\": \"Azul claro\",\n\"Dark Purple\": \"Morado oscuro\",\n\"Dark Blue\": \"Azul oscuro\",\n\"Black\": \"Negro\",\n\"White\": \"Blanco\",\n\"Switch to or from fullscreen mode\": \"Activar o desactivar modo pantalla completa\",\n\"Open help dialog\": \"Abrir di\\u00e1logo de ayuda\",\n\"history\": \"historial\",\n\"styles\": \"estilos\",\n\"formatting\": \"formato\",\n\"alignment\": \"alineaci\\u00f3n\",\n\"indentation\": \"sangr\\u00eda\",\n\"permanent pen\": \"bol\\u00edgrafo permanente\",\n\"comments\": \"comentarios\",\n\"Format Painter\": \"Copiar formato\",\n\"Insert\\/edit iframe\": \"Insertar\\/editar iframe\",\n\"Capitalization\": \"Uso de may\\u00fasculas\",\n\"lowercase\": \"min\\u00fasculas\",\n\"UPPERCASE\": \"MAY\\u00daSCULAS\",\n\"Title Case\": \"Tipo T\\u00edtulo\",\n\"Permanent Pen Properties\": \"Propiedades del bol\\u00edgrafo permanente\",\n\"Permanent pen properties...\": \"Propiedades del bol\\u00edgrafo permanente...\",\n\"Font\": \"Fuente\",\n\"Size\": \"Tama\\u00f1o\",\n\"More...\": \"M\\u00e1s...\",\n\"Spellcheck Language\": \"Corrector\",\n\"Select...\": \"Seleccionar...\",\n\"Preferences\": \"Preferencias\",\n\"Yes\": \"S\\u00ed\",\n\"No\": \"No\",\n\"Keyboard Navigation\": \"Navegaci\\u00f3n con el teclado\",\n\"Version\": \"Versi\\u00f3n\",\n\"Anchor\": \"Ancla\",\n\"Special character\": \"Car\\u00e1cter especial\",\n\"Code sample\": \"Ejemplo de c\\u00f3digo\",\n\"Color\": \"Color\",\n\"Emoticons\": \"Emoticonos\",\n\"Document properties\": \"Propiedades del documento\",\n\"Image\": \"Imagen\",\n\"Insert link\": \"Insertar enlace\",\n\"Target\": \"Destino\",\n\"Link\": \"Enlace\",\n\"Poster\": \"Miniatura\",\n\"Media\": \"Media\",\n\"Print\": \"Imprimir\",\n\"Prev\": \"Anterior\",\n\"Find and replace\": \"Buscar y reemplazar\",\n\"Whole words\": \"Palabras completas\",\n\"Spellcheck\": \"Corrector ortogr\\u00e1fico\",\n\"Caption\": \"Subt\\u00edtulo\",\n\"Insert template\": \"Insertar plantilla\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/es_ES.js",
    "content": "tinymce.addI18n('es_ES',{\n\"Redo\": \"Rehacer\",\n\"Undo\": \"Deshacer\",\n\"Cut\": \"Cortar\",\n\"Copy\": \"Copiar\",\n\"Paste\": \"Pegar\",\n\"Select all\": \"Seleccionar todo\",\n\"New document\": \"Nuevo documento\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Cancelar\",\n\"Visual aids\": \"Ayudas visuales\",\n\"Bold\": \"Negrita\",\n\"Italic\": \"Cursiva\",\n\"Underline\": \"Subrayado\",\n\"Strikethrough\": \"Tachado\",\n\"Superscript\": \"Super\\u00edndice\",\n\"Subscript\": \"Sub\\u00edndice\",\n\"Clear formatting\": \"Limpiar formato\",\n\"Align left\": \"Alinear a la izquierda\",\n\"Align center\": \"Alinear al centro\",\n\"Align right\": \"Alinear a la derecha\",\n\"Justify\": \"Justificar\",\n\"Bullet list\": \"Lista de vi\\u00f1etas\",\n\"Numbered list\": \"Lista numerada\",\n\"Decrease indent\": \"Disminuir sangr\\u00eda\",\n\"Increase indent\": \"Incrementar sangr\\u00eda\",\n\"Close\": \"Cerrar\",\n\"Formats\": \"Formatos\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Su navegador no es compatible con el acceso directo al portapapeles. Use las teclas Crtl+X\\/C\\/V de su teclado.\",\n\"Headers\": \"Encabezados\",\n\"Header 1\": \"Encabezado 1\",\n\"Header 2\": \"Encabezado 2\",\n\"Header 3\": \"Encabezado 3\",\n\"Header 4\": \"Encabezado 4\",\n\"Header 5\": \"Encabezado 5\",\n\"Header 6\": \"Encabezado 6\",\n\"Headings\": \"Encabezados\",\n\"Heading 1\": \"Encabezado 1\",\n\"Heading 2\": \"Encabezado 2\",\n\"Heading 3\": \"Encabezado 3\",\n\"Heading 4\": \"Encabezado 4\",\n\"Heading 5\": \"Encabezado 5\",\n\"Heading 6\": \"Encabezado 6\",\n\"Preformatted\": \"Con formato previo\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"C\\u00f3digo\",\n\"Paragraph\": \"P\\u00e1rrafo\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Alineado\",\n\"Blocks\": \"Bloques\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Pegar est\\u00e1 ahora en modo de texto sin formato. El contenido se pegar\\u00e1 ahora como texto sin formato hasta que desactive esta opci\\u00f3n.\",\n\"Fonts\": \"Fuentes\",\n\"Font Sizes\": \"Tama\\u00f1os de fuente\",\n\"Class\": \"Clase\",\n\"Browse for an image\": \"Buscar una imagen\",\n\"OR\": \"O\",\n\"Drop an image here\": \"Arrastre una imagen aqu\\u00ed\",\n\"Upload\": \"Cargar\",\n\"Block\": \"Bloque\",\n\"Align\": \"Alinear\",\n\"Default\": \"Por defecto\",\n\"Circle\": \"C\\u00edrculo\",\n\"Disc\": \"Disco\",\n\"Square\": \"Cuadrado\",\n\"Lower Alpha\": \"Letras min\\u00fasculas\",\n\"Lower Greek\": \"Griego en min\\u00fasculas\",\n\"Lower Roman\": \"Romano en min\\u00fasculas\",\n\"Upper Alpha\": \"Letras may\\u00fasculas\",\n\"Upper Roman\": \"Romano en may\\u00fasculas\",\n\"Anchor...\": \"Anclaje...\",\n\"Name\": \"Nombre\",\n\"Id\": \"Id.\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"El Id. debe comenzar por una letra, seguida solo de letras, n\\u00fameros, guiones, puntos, dos puntos o guiones bajos.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Tiene cambios sin guardar. \\u00bfEst\\u00e1 seguro de que quiere salir?\",\n\"Restore last draft\": \"Restaurar el \\u00faltimo borrador\",\n\"Special characters...\": \"Caracteres especiales...\",\n\"Source code\": \"C\\u00f3digo fuente\",\n\"Insert\\/Edit code sample\": \"Insertar\\/editar ejemplo de c\\u00f3digo\",\n\"Language\": \"Idioma\",\n\"Code sample...\": \"Ejemplo de c\\u00f3digo...\",\n\"Color Picker\": \"Selector de colores\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Izquierda a derecha\",\n\"Right to left\": \"Derecha a izquierda\",\n\"Emoticons...\": \"Emoticones...\",\n\"Metadata and Document Properties\": \"Metadatos y propiedades del documento\",\n\"Title\": \"T\\u00edtulo\",\n\"Keywords\": \"Palabras clave\",\n\"Description\": \"Descripci\\u00f3n\",\n\"Robots\": \"Robots\",\n\"Author\": \"Autor\",\n\"Encoding\": \"Codificaci\\u00f3n\",\n\"Fullscreen\": \"Pantalla completa\",\n\"Action\": \"Acci\\u00f3n\",\n\"Shortcut\": \"Acceso directo\",\n\"Help\": \"Ayuda\",\n\"Address\": \"Direcci\\u00f3n\",\n\"Focus to menubar\": \"Enfocar la barra del men\\u00fa\",\n\"Focus to toolbar\": \"Enfocar la barra de herramientas\",\n\"Focus to element path\": \"Enfocar la ruta del elemento\",\n\"Focus to contextual toolbar\": \"Enfocar la barra de herramientas contextual\",\n\"Insert link (if link plugin activated)\": \"Insertar enlace (si el complemento de enlace est\\u00e1 activado)\",\n\"Save (if save plugin activated)\": \"Guardar (si el complemento de guardar est\\u00e1 activado)\",\n\"Find (if searchreplace plugin activated)\": \"Buscar (si el complemento buscar-reemplazar est\\u00e1 activado)\",\n\"Plugins installed ({0}):\": \"Complementos instalados ({0}):\",\n\"Premium plugins:\": \"Complementos premium:\",\n\"Learn more...\": \"M\\u00e1s informaci\\u00f3n...\",\n\"You are using {0}\": \"Est\\u00e1 usando {0}\",\n\"Plugins\": \"Complementos\",\n\"Handy Shortcuts\": \"Accesos pr\\u00e1cticos\",\n\"Horizontal line\": \"L\\u00ednea horizontal\",\n\"Insert\\/edit image\": \"Insertar\\/editar imagen\",\n\"Image description\": \"Descripci\\u00f3n de la imagen\",\n\"Source\": \"C\\u00f3digo fuente\",\n\"Dimensions\": \"Dimensiones\",\n\"Constrain proportions\": \"Restringir proporciones\",\n\"General\": \"General\",\n\"Advanced\": \"Avanzado\",\n\"Style\": \"Estilo\",\n\"Vertical space\": \"Espacio vertical\",\n\"Horizontal space\": \"Espacio horizontal\",\n\"Border\": \"Borde\",\n\"Insert image\": \"Insertar imagen\",\n\"Image...\": \"Imagen...\",\n\"Image list\": \"Lista de im\\u00e1genes\",\n\"Rotate counterclockwise\": \"Girar a la izquierda\",\n\"Rotate clockwise\": \"Girar a la derecha\",\n\"Flip vertically\": \"Invertir verticalmente\",\n\"Flip horizontally\": \"Invertir horizontalmente\",\n\"Edit image\": \"Editar imagen\",\n\"Image options\": \"Opciones de imagen\",\n\"Zoom in\": \"Acercar\",\n\"Zoom out\": \"Alejar\",\n\"Crop\": \"Recortar\",\n\"Resize\": \"Redimensionar\",\n\"Orientation\": \"Orientaci\\u00f3n\",\n\"Brightness\": \"Brillo\",\n\"Sharpen\": \"Enfocar\",\n\"Contrast\": \"Contraste\",\n\"Color levels\": \"Niveles de color\",\n\"Gamma\": \"Gama\",\n\"Invert\": \"Invertir\",\n\"Apply\": \"Aplicar\",\n\"Back\": \"Atr\\u00e1s\",\n\"Insert date\\/time\": \"Insertar fecha\\/hora\",\n\"Date\\/time\": \"Fecha\\/hora\",\n\"Insert\\/Edit Link\": \"Insertar\\/editar enlace\",\n\"Insert\\/edit link\": \"Insertar\\/editar enlace\",\n\"Text to display\": \"Texto que mostrar\",\n\"Url\": \"URL\",\n\"Open link in...\": \"Abrir enlace en...\",\n\"Current window\": \"Ventana actual\",\n\"None\": \"Ninguno\",\n\"New window\": \"Nueva ventana\",\n\"Remove link\": \"Quitar enlace\",\n\"Anchors\": \"Anclajes\",\n\"Link...\": \"Enlace...\",\n\"Paste or type a link\": \"Pegue o escriba un enlace\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"La URL que ha introducido parece ser una direcci\\u00f3n de correo electr\\u00f3nico. \\u00bfQuiere a\\u00f1adir el prefijo necesario mailto:?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"La URL que ha introducido parece ser un enlace externo. \\u00bfQuiere a\\u00f1adir el prefijo necesario http:\\/\\/?\",\n\"Link list\": \"Lista de enlaces\",\n\"Insert video\": \"Insertar v\\u00eddeo\",\n\"Insert\\/edit video\": \"Insertar\\/editar v\\u00eddeo\",\n\"Insert\\/edit media\": \"Insertar\\/editar medio\",\n\"Alternative source\": \"Enlace alternativo\",\n\"Alternative source URL\": \"Origen de URL alternativo\",\n\"Media poster (Image URL)\": \"P\\u00f3ster de medio (URL de imagen)\",\n\"Paste your embed code below:\": \"Pegue el c\\u00f3digo para insertar a continuaci\\u00f3n:\",\n\"Embed\": \"Insertar\",\n\"Media...\": \"Medios...\",\n\"Nonbreaking space\": \"Espacio de no separaci\\u00f3n\",\n\"Page break\": \"Salto de p\\u00e1gina\",\n\"Paste as text\": \"Pegar como texto\",\n\"Preview\": \"Previsualizar\",\n\"Print...\": \"Imprimir...\",\n\"Save\": \"Guardar\",\n\"Find\": \"Buscar\",\n\"Replace with\": \"Reemplazar por\",\n\"Replace\": \"Reemplazar\",\n\"Replace all\": \"Reemplazar todo\",\n\"Previous\": \"Anterior\",\n\"Next\": \"Siguiente\",\n\"Find and replace...\": \"Buscar y reemplazar...\",\n\"Could not find the specified string.\": \"No se encuentra la cadena especificada.\",\n\"Match case\": \"Coincidir may\\u00fasculas y min\\u00fasculas\",\n\"Find whole words only\": \"Solo palabras completas\",\n\"Spell check\": \"Revisar ortograf\\u00eda\",\n\"Ignore\": \"Ignorar\",\n\"Ignore all\": \"Ignorar todo\",\n\"Finish\": \"Fin\\u00e9s\",\n\"Add to Dictionary\": \"A\\u00f1adir al Diccionario\",\n\"Insert table\": \"Insertar tabla\",\n\"Table properties\": \"Propiedades de la tabla\",\n\"Delete table\": \"Eliminar tabla\",\n\"Cell\": \"Celda\",\n\"Row\": \"Fila\",\n\"Column\": \"Columna\",\n\"Cell properties\": \"Propiedades de la celda\",\n\"Merge cells\": \"Combinar celdas\",\n\"Split cell\": \"Dividir celda\",\n\"Insert row before\": \"Insertar fila antes\",\n\"Insert row after\": \"Insertar fila despu\\u00e9s\",\n\"Delete row\": \"Eliminar fila\",\n\"Row properties\": \"Propiedades de la fila\",\n\"Cut row\": \"Cortar fila\",\n\"Copy row\": \"Copiar fila\",\n\"Paste row before\": \"Pegar la fila antes\",\n\"Paste row after\": \"Pegar la fila despu\\u00e9s\",\n\"Insert column before\": \"Insertar columna antes\",\n\"Insert column after\": \"Insertar columna despu\\u00e9s\",\n\"Delete column\": \"Eliminar columna\",\n\"Cols\": \"Columnas\",\n\"Rows\": \"Filas\",\n\"Width\": \"Ancho\",\n\"Height\": \"Altura\",\n\"Cell spacing\": \"Espacio entre celdas\",\n\"Cell padding\": \"Relleno de celda\",\n\"Show caption\": \"Mostrar t\\u00edtulo\",\n\"Left\": \"Izquierda\",\n\"Center\": \"Centro\",\n\"Right\": \"Derecha\",\n\"Cell type\": \"Tipo de celda\",\n\"Scope\": \"\\u00c1mbito\",\n\"Alignment\": \"Alineaci\\u00f3n\",\n\"H Align\": \"Alineaci\\u00f3n horizontal\",\n\"V Align\": \"Alineaci\\u00f3n vertical\",\n\"Top\": \"Superior\",\n\"Middle\": \"Central\",\n\"Bottom\": \"Inferior\",\n\"Header cell\": \"Celda de encabezado\",\n\"Row group\": \"Grupo de filas\",\n\"Column group\": \"Grupo de columnas\",\n\"Row type\": \"Tipo de fila\",\n\"Header\": \"Encabezado\",\n\"Body\": \"Cuerpo\",\n\"Footer\": \"Pie de p\\u00e1gina\",\n\"Border color\": \"Color de borde\",\n\"Insert template...\": \"Insertar plantilla...\",\n\"Templates\": \"Plantillas\",\n\"Template\": \"Plantilla\",\n\"Text color\": \"Color del texto\",\n\"Background color\": \"Color de fondo\",\n\"Custom...\": \"Personalizado...\",\n\"Custom color\": \"Color personalizado\",\n\"No color\": \"Sin color\",\n\"Remove color\": \"Quitar color\",\n\"Table of Contents\": \"Tabla de contenido\",\n\"Show blocks\": \"Mostrar bloques\",\n\"Show invisible characters\": \"Mostrar caracteres invisibles\",\n\"Word count\": \"Contar palabras\",\n\"Words: {0}\": \"Palabras: {0}\",\n\"{0} words\": \"{0} palabras\",\n\"File\": \"Archivo\",\n\"Edit\": \"Editar\",\n\"Insert\": \"Insertar\",\n\"View\": \"Ver\",\n\"Format\": \"Formato\",\n\"Table\": \"Tabla\",\n\"Tools\": \"Herramientas\",\n\"Powered by {0}\": \"Con tecnolog\\u00eda de {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u00c1rea de texto enriquecido. Pulse ALT-F9 para el men\\u00fa. Pulse ALT-F10 para la barra de herramientas. Pulse ALT-0 para la ayuda.\",\n\"Image title\": \"Titulo de imagen\",\n\"Border width\": \"Ancho de borde\",\n\"Border style\": \"Estilo de borde\",\n\"Error\": \"Error\",\n\"Warn\": \"Advertencia\",\n\"Valid\": \"V\\u00e1lido\",\n\"To open the popup, press Shift+Enter\": \"Para abrir el elemento emergente, pulse May\\u00fas+Intro\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u00c1rea de texto enriquecido. Pulse ALT-0 para abrir la ayuda.\",\n\"System Font\": \"Fuente de sistema\",\n\"Failed to upload image: {0}\": \"Fallo al cargar imagen: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Fallo al cargar complemento: {0} desde URL {1}\",\n\"Failed to load plugin url: {0}\": \"Fallo al cargar URL del complemento: {0}\",\n\"Failed to initialize plugin: {0}\": \"Fallo al iniciar el complemento: {0}\",\n\"example\": \"ejemplo\",\n\"Search\": \"Buscar\",\n\"All\": \"Todo\",\n\"Currency\": \"Divisa\",\n\"Text\": \"Texto\",\n\"Quotations\": \"Comillas\",\n\"Mathematical\": \"S\\u00edmbolo matem\\u00e1tico\",\n\"Extended Latin\": \"Latino extendido A\",\n\"Symbols\": \"S\\u00edmbolos\",\n\"Arrows\": \"Flechas\",\n\"User Defined\": \"Definido por el usuario\",\n\"dollar sign\": \"signo de d\\u00f3lar\",\n\"currency sign\": \"signo de divisa\",\n\"euro-currency sign\": \"signo de euro\",\n\"colon sign\": \"signo de dos puntos\",\n\"cruzeiro sign\": \"signo de cruceiro\",\n\"french franc sign\": \"signo de franco franc\\u00e9s\",\n\"lira sign\": \"signo de lira\",\n\"mill sign\": \"signo de mill\",\n\"naira sign\": \"signo de naira\",\n\"peseta sign\": \"signo de peseta\",\n\"rupee sign\": \"signo de rupia\",\n\"won sign\": \"signo de won\",\n\"new sheqel sign\": \"signo de nuevo s\\u00e9quel\",\n\"dong sign\": \"signo de dong\",\n\"kip sign\": \"signo de kip\",\n\"tugrik sign\": \"signo de tugrik\",\n\"drachma sign\": \"signo de dracma\",\n\"german penny symbol\": \"signo de penique alem\\u00e1n\",\n\"peso sign\": \"signo de peso\",\n\"guarani sign\": \"signo de guaran\\u00ed\",\n\"austral sign\": \"signo de austral\",\n\"hryvnia sign\": \"signo de grivna\",\n\"cedi sign\": \"signo de cedi\",\n\"livre tournois sign\": \"signo de libra tornesa\",\n\"spesmilo sign\": \"signo de spesmilo\",\n\"tenge sign\": \"signo de tenge\",\n\"indian rupee sign\": \"signo de rupia india\",\n\"turkish lira sign\": \"signo de lira turca\",\n\"nordic mark sign\": \"signo de marco n\\u00f3rdico\",\n\"manat sign\": \"signo de manat\",\n\"ruble sign\": \"signo de rublo\",\n\"yen character\": \"car\\u00e1cter de yen\",\n\"yuan character\": \"car\\u00e1cter de yuan\",\n\"yuan character, in hong kong and taiwan\": \"car\\u00e1cter de yuan en Hong Kong y Taiw\\u00e1n\",\n\"yen\\/yuan character variant one\": \"Variante uno de car\\u00e1cter de yen\\/yuan\",\n\"Loading emoticons...\": \"Cargando emoticonos...\",\n\"Could not load emoticons\": \"No se han podido cargar los emoticonos\",\n\"People\": \"Personas\",\n\"Animals and Nature\": \"Animales y naturaleza\",\n\"Food and Drink\": \"Comida y bebida\",\n\"Activity\": \"Actividad\",\n\"Travel and Places\": \"Viajes y lugares\",\n\"Objects\": \"Objetos\",\n\"Flags\": \"Banderas\",\n\"Characters\": \"Caracteres\",\n\"Characters (no spaces)\": \"Caracteres (sin espacios)\",\n\"Error: Form submit field collision.\": \"Error: Colisi\\u00f3n de campo al enviar formulario.\",\n\"Error: No form element found.\": \"Error: No se encuentra ning\\u00fan elemento de formulario.\",\n\"Update\": \"Actualizar\",\n\"Color swatch\": \"Muestrario de colores\",\n\"Turquoise\": \"Turquesa\",\n\"Green\": \"Verde\",\n\"Blue\": \"Azul\",\n\"Purple\": \"P\\u00farpura\",\n\"Navy Blue\": \"Azul marino\",\n\"Dark Turquoise\": \"Turquesa oscuro\",\n\"Dark Green\": \"Verde oscuro\",\n\"Medium Blue\": \"Azul medio\",\n\"Medium Purple\": \"P\\u00farpura medio\",\n\"Midnight Blue\": \"Azul medio\",\n\"Yellow\": \"Amarillo\",\n\"Orange\": \"Naranja\",\n\"Red\": \"Rojo\",\n\"Light Gray\": \"Gris claro\",\n\"Gray\": \"Gris\",\n\"Dark Yellow\": \"Amarillo oscuro\",\n\"Dark Orange\": \"Naranja oscuro\",\n\"Dark Red\": \"Rojo oscuro\",\n\"Medium Gray\": \"Gris medio\",\n\"Dark Gray\": \"Gris oscuro\",\n\"Black\": \"Negro\",\n\"White\": \"Blanco\",\n\"Switch to or from fullscreen mode\": \"Activar o desactivar modo pantalla completa\",\n\"Open help dialog\": \"Abrir di\\u00e1logo de ayuda\",\n\"history\": \"historial\",\n\"styles\": \"estilos\",\n\"formatting\": \"formato\",\n\"alignment\": \"alineaci\\u00f3n\",\n\"indentation\": \"sangr\\u00eda\",\n\"permanent pen\": \"bol\\u00edgrafo permanente\",\n\"comments\": \"comentarios\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/es_MX.js",
    "content": "tinymce.addI18n('es_MX',{\n\"Redo\": \"Rehacer\",\n\"Undo\": \"Deshacer\",\n\"Cut\": \"Cortar\",\n\"Copy\": \"Copiar\",\n\"Paste\": \"Pegar\",\n\"Select all\": \"Seleccionar todo\",\n\"New document\": \"Nuevo documento\",\n\"Ok\": \"Aceptar\",\n\"Cancel\": \"Cancelar\",\n\"Visual aids\": \"Ayudas visuales\",\n\"Bold\": \"Negrita\",\n\"Italic\": \"Cursiva\",\n\"Underline\": \"Subrayado\",\n\"Strikethrough\": \"Tachado\",\n\"Superscript\": \"Super\\u00edndice\",\n\"Subscript\": \"Sub\\u00edndice\",\n\"Clear formatting\": \"Borrar formato\",\n\"Align left\": \"Alinear a la izquierda\",\n\"Align center\": \"Alinear al centro\",\n\"Align right\": \"Alinear a la derecha\",\n\"Justify\": \"Justificar\",\n\"Bullet list\": \"Lista de vi\\u00f1etas\",\n\"Numbered list\": \"Lista numerada\",\n\"Decrease indent\": \"Reducir sangr\\u00eda\",\n\"Increase indent\": \"Aumentar sangr\\u00eda\",\n\"Close\": \"Cerrar\",\n\"Formats\": \"Formatos\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Su navegador no admite el acceso directo al portapapeles. Utilice los m\\u00e9todos abreviados de teclado Ctrl+ X\\/C\\/V.\",\n\"Headers\": \"Encabezados\",\n\"Header 1\": \"Encabezado 1\",\n\"Header 2\": \"Encabezado 2\",\n\"Header 3\": \"Encabezado 3\",\n\"Header 4\": \"Encabezado 4\",\n\"Header 5\": \"Encabezado 5\",\n\"Header 6\": \"Encabezado 6\",\n\"Headings\": \"T\\u00edtulos\",\n\"Heading 1\": \"T\\u00edtulo 1\",\n\"Heading 2\": \"T\\u00edtulo 2\",\n\"Heading 3\": \"T\\u00edtulo 3\",\n\"Heading 4\": \"T\\u00edtulo 4\",\n\"Heading 5\": \"T\\u00edtulo 5\",\n\"Heading 6\": \"T\\u00edtulo 6\",\n\"Preformatted\": \"Con formato previo\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"C\\u00f3digo\",\n\"Paragraph\": \"P\\u00e1rrafo\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"En l\\u00ednea\",\n\"Blocks\": \"Bloques\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Se pegar\\u00e1 en texto plano. El contenido se pegar\\u00e1 como texto plano hasta que desactive esta opci\\u00f3n.\",\n\"Fonts\": \"Fuentes\",\n\"Font Sizes\": \"Tama\\u00f1os de fuente\",\n\"Class\": \"Clase\",\n\"Browse for an image\": \"Buscar una imagen\",\n\"OR\": \"O\",\n\"Drop an image here\": \"Soltar una imagen aqu\\u00ed\",\n\"Upload\": \"Cargar\",\n\"Block\": \"Bloque\",\n\"Align\": \"Alinear\",\n\"Default\": \"Por defecto\",\n\"Circle\": \"Circulo\",\n\"Disc\": \"Disco\",\n\"Square\": \"Cuadro\",\n\"Lower Alpha\": \"Alfa min\\u00fascula\",\n\"Lower Greek\": \"Griega min\\u00fascula\",\n\"Lower Roman\": \"Romano min\\u00fascula\",\n\"Upper Alpha\": \"Alfa may\\u00fascula\",\n\"Upper Roman\": \"May\\u00fascula Romana\",\n\"Anchor...\": \"Marcador...\",\n\"Name\": \"Nombre\",\n\"Id\": \"Identificador\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"El Identificador debe comenzar con una letra, seguido solo por letras, n\\u00fameros, puntos, guiones medios o guiones bajos.  \",\n\"You have unsaved changes are you sure you want to navigate away?\": \"No se  han guardado los cambios. \\u00bfSeguro que desea abandonar la p\\u00e1gina?\",\n\"Restore last draft\": \"Restaurar el \\u00faltimo borrador\",\n\"Special character...\": \"Car\\u00e1cter especial...\",\n\"Source code\": \"C\\u00f3digo fuente\",\n\"Insert\\/Edit code sample\": \"Insertar\\/Editar c\\u00f3digo muestra\",\n\"Language\": \"idioma\",\n\"Code sample...\": \"Ejemplo de c\\u00f3digo...\",\n\"Color Picker\": \"Selector de colores\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Izquierda a derecha\",\n\"Right to left\": \"Derecha a Izquierda\",\n\"Emoticons...\": \"Emoticonos...\",\n\"Metadata and Document Properties\": \"Metadatos y propiedades del documento\",\n\"Title\": \"T\\u00edtulo\",\n\"Keywords\": \"Palabras clave\",\n\"Description\": \"Descripci\\u00f3n \",\n\"Robots\": \"Robots\",\n\"Author\": \"Autor\",\n\"Encoding\": \"Codificaci\\u00f3n\",\n\"Fullscreen\": \"Pantalla completa\",\n\"Action\": \"Acci\\u00f3n\",\n\"Shortcut\": \"Atajo\",\n\"Help\": \"Ayuda\",\n\"Address\": \"Direcci\\u00f3n\",\n\"Focus to menubar\": \"Enfocar en barra de menu\",\n\"Focus to toolbar\": \"Enfocar en barra de herramientas\",\n\"Focus to element path\": \"Enfocar ruta del elemento\",\n\"Focus to contextual toolbar\": \"Enfocar en barra de herramientas contextual\",\n\"Insert link (if link plugin activated)\": \"Insertar enlace (si enlace del plugin est\\u00e1 activo)\",\n\"Save (if save plugin activated)\": \"Guardar (si el plugin guardar est\\u00e1 activo)\",\n\"Find (if searchreplace plugin activated)\": \"Buscar (si el plugin buscar\\/reemplazar est\\u00e1 activo)\",\n\"Plugins installed ({0}):\": \"Plugins instalados ({0}):\",\n\"Premium plugins:\": \"Plugins premium:\",\n\"Learn more...\": \"Aprende m\\u00e1s...\",\n\"You are using {0}\": \"est\\u00e1s usando {0}\",\n\"Plugins\": \"Plugins\",\n\"Handy Shortcuts\": \"Atajos \\u00fatiles\",\n\"Horizontal line\": \"L\\u00ednea Horizontal\",\n\"Insert\\/edit image\": \"Insertar\\/editar imagen\",\n\"Image description\": \"Descripci\\u00f3n de imagen\",\n\"Source\": \"Origen\",\n\"Dimensions\": \"Dimensiones\",\n\"Constrain proportions\": \"Restringir proporciones\",\n\"General\": \"General\",\n\"Advanced\": \"Avanzado\",\n\"Style\": \"Estilo\",\n\"Vertical space\": \"Espacio vertical\",\n\"Horizontal space\": \"Espacio horizontal\",\n\"Border\": \"Borde\",\n\"Insert image\": \"Insertar imagen\",\n\"Image...\": \"Imagen...\",\n\"Image list\": \"Lista de im\\u00e1genes\",\n\"Rotate counterclockwise\": \"Rotar en sentido contrario a las manecillas\",\n\"Rotate clockwise\": \"Rotar en sentido de las manecillas\",\n\"Flip vertically\": \"Voltear verticalmente\",\n\"Flip horizontally\": \"Volter horizontalmente\",\n\"Edit image\": \"Editar imagen\",\n\"Image options\": \"Opciones de la imagen\",\n\"Zoom in\": \"Acercar\",\n\"Zoom out\": \"Alejar\",\n\"Crop\": \"Recortar\",\n\"Resize\": \"Cambiar tama\\u00f1o\",\n\"Orientation\": \"Orientaci\\u00f3n\",\n\"Brightness\": \"Brillo\",\n\"Sharpen\": \"Nitidez\",\n\"Contrast\": \"Contraste\",\n\"Color levels\": \"Niveles de Color\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Invertir\",\n\"Apply\": \"Aplicar\",\n\"Back\": \"Regresar\",\n\"Insert date\\/time\": \"Insertar fecha\\/hora\",\n\"Date\\/time\": \"Fecha\\/hora\",\n\"Insert\\/Edit Link\": \"Insertar\\/editar v\\u00ednculo\",\n\"Insert\\/edit link\": \"Inserta\\/editar enlace\",\n\"Text to display\": \"Texto a mostrar\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Abrir v\\u00ednculo en...\",\n\"Current window\": \"Ventana actual\",\n\"None\": \"Ninguno\",\n\"New window\": \"Nueva ventana\",\n\"Remove link\": \"Eliminar elnace\",\n\"Anchors\": \"Anclas\",\n\"Link...\": \"V\\u00ednculo...\",\n\"Paste or type a link\": \"Pega o escribe un enlace\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"El URL que ha insertado tiene formato de correo electr\\u00f3nico. \\u00bfDesea agregar con prefijo \\\"mailto:\\\"?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"El URL que ha ingresado es un enlace externo. \\u00bfDesea agregar el prefijo \\\"http:\\/\\/\\\"?\",\n\"Link list\": \"Lista de enlaces\",\n\"Insert video\": \"Insertar video\",\n\"Insert\\/edit video\": \"Insertar\\/editar video\",\n\"Insert\\/edit media\": \"Insertar\\/editar multimedia\",\n\"Alternative source\": \"Fuente alternativa\",\n\"Alternative source URL\": \"URL de origen alternativo\",\n\"Media poster (Image URL)\": \"P\\u00f3ster multimedia (URL de la imagen)\",\n\"Paste your embed code below:\": \"Pegue su c\\u00f3digo de inserci\\u00f3n abajo:\",\n\"Embed\": \"Incrustar\",\n\"Media...\": \"Elemento multimedia...\",\n\"Nonbreaking space\": \"Espacio de no separaci\\u00f3n\",\n\"Page break\": \"Salto de p\\u00e1gina \",\n\"Paste as text\": \"Copiar como texto\",\n\"Preview\": \"Vista previa \",\n\"Print...\": \"Imprimir...\",\n\"Save\": \"Guardar\",\n\"Find\": \"Buscar\",\n\"Replace with\": \"Remplazar con\",\n\"Replace\": \"Remplazar\",\n\"Replace all\": \"Remplazar todo\",\n\"Previous\": \"Anterior\",\n\"Next\": \"Siguiente\",\n\"Find and replace...\": \"Buscar y reemplazar...\",\n\"Could not find the specified string.\": \"No se ha encontrado la cadena especificada.\",\n\"Match case\": \"Coincidencia\",\n\"Find whole words only\": \"Buscar solo palabras completas\",\n\"Spell check\": \"Corrector ortogr\\u00e1fico\",\n\"Ignore\": \"Ignorar\",\n\"Ignore all\": \"Ignorar todo\",\n\"Finish\": \"Terminar\",\n\"Add to Dictionary\": \"Agregar al diccionario \",\n\"Insert table\": \"Insertar tabla\",\n\"Table properties\": \"Propiedades de tabla\",\n\"Delete table\": \"Eliminar tabla\",\n\"Cell\": \"Celda\",\n\"Row\": \"Rengl\\u00f3n \",\n\"Column\": \"Columna\",\n\"Cell properties\": \"Propiedades de celda\",\n\"Merge cells\": \"Unir celdas\",\n\"Split cell\": \"Dividir celdas\",\n\"Insert row before\": \"Insertar rengl\\u00f3n antes\",\n\"Insert row after\": \"Insertar rengl\\u00f3n despu\\u00e9s\",\n\"Delete row\": \"Eliminar rengl\\u00f3n \",\n\"Row properties\": \"Propiedades del rengl\\u00f3n \",\n\"Cut row\": \"Cortar renglon\",\n\"Copy row\": \"Copiar rengl\\u00f3n \",\n\"Paste row before\": \"Pegar rengl\\u00f3n antes\",\n\"Paste row after\": \"Pegar rengl\\u00f3n despu\\u00e9s\",\n\"Insert column before\": \"Insertar columna antes\",\n\"Insert column after\": \"Insertar columna despu\\u00e9s\",\n\"Delete column\": \"Eliminar columna\",\n\"Cols\": \"Columnas\",\n\"Rows\": \"Renglones \",\n\"Width\": \"Ancho\",\n\"Height\": \"Alto\",\n\"Cell spacing\": \"Espacio entre celdas\",\n\"Cell padding\": \"Relleno de la celda\",\n\"Show caption\": \"Mostrar leyenda\",\n\"Left\": \"Izquierda\",\n\"Center\": \"Centro\",\n\"Right\": \"Derecha\",\n\"Cell type\": \"Tipo de celda\",\n\"Scope\": \"Alcance\",\n\"Alignment\": \"Alineaci\\u00f3n \",\n\"H Align\": \"Alineaci\\u00f3n Horizontal\",\n\"V Align\": \"Alineaci\\u00f3n Vertical\",\n\"Top\": \"Arriba\",\n\"Middle\": \"Centrado\",\n\"Bottom\": \"Abajo\",\n\"Header cell\": \"Celda de encabezado\",\n\"Row group\": \"Grupo de renglones\",\n\"Column group\": \"Grupo de columnas\",\n\"Row type\": \"Tipo de rengl\\u00f3n \",\n\"Header\": \"Encabezado\",\n\"Body\": \"Cuerpo\",\n\"Footer\": \"Pie\",\n\"Border color\": \"Color del borde\",\n\"Insert template...\": \"Insertar plantilla...\",\n\"Templates\": \"Plantilla\",\n\"Template\": \"Plantilla\",\n\"Text color\": \"Color de letra\",\n\"Background color\": \"Color de fondo\",\n\"Custom...\": \"Personalizar\",\n\"Custom color\": \"Perzonalizar color\",\n\"No color\": \"Sin color\",\n\"Remove color\": \"Eliminar color\",\n\"Table of Contents\": \"Tabla de Contenidos\",\n\"Show blocks\": \"Mostrar bloques\",\n\"Show invisible characters\": \"Mostrar caracteres invisibles\",\n\"Word count\": \"Contar palabras\",\n\"Count\": \"Recuento\",\n\"Document\": \"Documento\",\n\"Selection\": \"Selecci\\u00f3n\",\n\"Words\": \"Palabras\",\n\"Words: {0}\": \"Palabras:{0}\",\n\"{0} words\": \"{0} palabras\",\n\"File\": \"Archivo\",\n\"Edit\": \"Editar\",\n\"Insert\": \"Insertar\",\n\"View\": \"Vistas\",\n\"Format\": \"Formato\",\n\"Table\": \"Tabla\",\n\"Tools\": \"Herramientas\",\n\"Powered by {0}\": \"Creado con {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Presione dentro del \\u00e1rea de texto ALT-F9 para invocar el men\\u00fa, ALT-F10 para la barra de herramientas y ALT-0 para la ayuda.\",\n\"Image title\": \"T\\u00edtulo de la imagen\",\n\"Border width\": \"Ancho del borde\",\n\"Border style\": \"Estilo del borde\",\n\"Error\": \"Error\",\n\"Warn\": \"Advertencia\",\n\"Valid\": \"V\\u00e1lido\",\n\"To open the popup, press Shift+Enter\": \"Para abrir la ventana emergente, pulse May\\u00fas+Intro\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u00c1rea de texto enriquecido. Pulse ALT-0 para obtener ayuda.\",\n\"System Font\": \"Fuente del sistema\",\n\"Failed to upload image: {0}\": \"Error al cargar la imagen: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Error al cargar el complemento: {0} desde la url {1}\",\n\"Failed to load plugin url: {0}\": \"Error al cargar la url del complemento: {0}\",\n\"Failed to initialize plugin: {0}\": \"Error al inicializar el complemento: {0}\",\n\"example\": \"ejemplo\",\n\"Search\": \"Buscar\",\n\"All\": \"Todo\",\n\"Currency\": \"Moneda\",\n\"Text\": \"Texto\",\n\"Quotations\": \"Comillas\",\n\"Mathematical\": \"Matem\\u00e1ticos\",\n\"Extended Latin\": \"Lat\\u00edn extendido\",\n\"Symbols\": \"S\\u00edmbolos\",\n\"Arrows\": \"Flechas\",\n\"User Defined\": \"Definido por el usuario\",\n\"dollar sign\": \"signo de d\\u00f3lar\",\n\"currency sign\": \"signo de moneda\",\n\"euro-currency sign\": \"signo de euro\",\n\"colon sign\": \"signo del col\\u00f3n\",\n\"cruzeiro sign\": \"signo del cruzeiro\",\n\"french franc sign\": \"signo del franco franc\\u00e9s\",\n\"lira sign\": \"signo de la lira\",\n\"mill sign\": \"signo de mil\",\n\"naira sign\": \"signo del naira\",\n\"peseta sign\": \"signo de la peseta\",\n\"rupee sign\": \"signo de la rupia\",\n\"won sign\": \"signo del won\",\n\"new sheqel sign\": \"signo de nuevo shequel\",\n\"dong sign\": \"signo del dong\",\n\"kip sign\": \"signo del kip\",\n\"tugrik sign\": \"signo del tugrik\",\n\"drachma sign\": \"signo del dracma\",\n\"german penny symbol\": \"signo del penique alem\\u00e1n\",\n\"peso sign\": \"signo del peso\",\n\"guarani sign\": \"signo del guaran\\u00ed\",\n\"austral sign\": \"signo del austral\",\n\"hryvnia sign\": \"signo de hryvnia\",\n\"cedi sign\": \"signo de cedi\",\n\"livre tournois sign\": \"signo de livre tournois\",\n\"spesmilo sign\": \"signo de spesmilo\",\n\"tenge sign\": \"signo de tenge\",\n\"indian rupee sign\": \"signo de la rupia india\",\n\"turkish lira sign\": \"signo de la lira turca\",\n\"nordic mark sign\": \"signo del marco n\\u00f3rdico\",\n\"manat sign\": \"signo de manat\",\n\"ruble sign\": \"signo de rublo\",\n\"yen character\": \"car\\u00e1cter del yen\",\n\"yuan character\": \"car\\u00e1cter del yuan\",\n\"yuan character, in hong kong and taiwan\": \"car\\u00e1cter del yuan, en Hong Kong y Taiw\\u00e1n\",\n\"yen\\/yuan character variant one\": \"variante uno del car\\u00e1cter del yen\\/yuan\",\n\"Loading emoticons...\": \"Cargando emoticonos...\",\n\"Could not load emoticons\": \"No se pudieron cargar los emoticonos\",\n\"People\": \"Personas\",\n\"Animals and Nature\": \"Animales y naturaleza\",\n\"Food and Drink\": \"Comida y bebida\",\n\"Activity\": \"Actividad\",\n\"Travel and Places\": \"Viajes y lugares\",\n\"Objects\": \"Objetos\",\n\"Flags\": \"Banderas\",\n\"Characters\": \"Caracteres\",\n\"Characters (no spaces)\": \"Caracteres (sin espacios)\",\n\"{0} characters\": \"{0} caracteres\",\n\"Error: Form submit field collision.\": \"Error: colisi\\u00f3n de campo env\\u00edo de formulario.\",\n\"Error: No form element found.\": \"Error: no se encontr\\u00f3 ning\\u00fan elemento de formulario.\",\n\"Update\": \"Actualizar\",\n\"Color swatch\": \"Muestrario de colores\",\n\"Turquoise\": \"Turquesa\",\n\"Green\": \"Verde\",\n\"Blue\": \"Azul\",\n\"Purple\": \"Morado\",\n\"Navy Blue\": \"Azul marino\",\n\"Dark Turquoise\": \"Turquesa oscuro\",\n\"Dark Green\": \"Verde oscuro\",\n\"Medium Blue\": \"Azul medio\",\n\"Medium Purple\": \"Morado medio\",\n\"Midnight Blue\": \"Azul noche\",\n\"Yellow\": \"Amarillo\",\n\"Orange\": \"Anaranjado\",\n\"Red\": \"Rojo\",\n\"Light Gray\": \"Gris claro\",\n\"Gray\": \"Gris\",\n\"Dark Yellow\": \"Amarillo oscuro\",\n\"Dark Orange\": \"Anaranjado oscuro\",\n\"Dark Red\": \"Rojo oscuro\",\n\"Medium Gray\": \"Gris medio\",\n\"Dark Gray\": \"Gris oscuro\",\n\"Light Green\": \"Verde claro\",\n\"Light Yellow\": \"Amarillo claro\",\n\"Light Red\": \"Rojo claro\",\n\"Light Purple\": \"Morado claro\",\n\"Light Blue\": \"Azul claro\",\n\"Dark Purple\": \"Morado oscuro\",\n\"Dark Blue\": \"Azul oscuro\",\n\"Black\": \"Negro\",\n\"White\": \"Blanco\",\n\"Switch to or from fullscreen mode\": \"Cambiar a modo de pantalla completa o salir de \\u00e9l\",\n\"Open help dialog\": \"Abrir di\\u00e1logo de ayuda\",\n\"history\": \"historial\",\n\"styles\": \"estilos\",\n\"formatting\": \"formato\",\n\"alignment\": \"alineaci\\u00f3n\",\n\"indentation\": \"sangr\\u00eda\",\n\"permanent pen\": \"l\\u00e1piz permanente\",\n\"comments\": \"comentarios\",\n\"Format Painter\": \"Copiar formato\",\n\"Insert\\/edit iframe\": \"Insertar\\/editar marco flotante\",\n\"Capitalization\": \"Uso de may\\u00fasculas\",\n\"lowercase\": \"min\\u00fascula\",\n\"UPPERCASE\": \"MAY\\u00daSCULA\",\n\"Title Case\": \"Tipo t\\u00edtulo\",\n\"Permanent Pen Properties\": \"Propiedades del l\\u00e1piz permanente\",\n\"Permanent pen properties...\": \"Propiedades del l\\u00e1piz permanente...\",\n\"Font\": \"Fuente\",\n\"Size\": \"Tama\\u00f1o\",\n\"More...\": \"M\\u00e1s...\",\n\"Spellcheck Language\": \"Idioma de la revisi\\u00f3n ortogr\\u00e1fica\",\n\"Select...\": \"Seleccionar...\",\n\"Preferences\": \"Preferencias\",\n\"Yes\": \"S\\u00ed\",\n\"No\": \"No\",\n\"Keyboard Navigation\": \"Navegaci\\u00f3n con el teclado\",\n\"Version\": \"Versi\\u00f3n\",\n\"Anchor\": \"Anclar\",\n\"Special character\": \"Caracter especial\",\n\"Code sample\": \"C\\u00f3digo muestra\",\n\"Color\": \"Color\",\n\"Emoticons\": \"Emoticones\",\n\"Document properties\": \"Propiedades del documento\",\n\"Image\": \"Imagen\",\n\"Insert link\": \"Insertar enlace\",\n\"Target\": \"Objetivo\",\n\"Link\": \"Enlace\",\n\"Poster\": \"Cartel\",\n\"Media\": \"Multimedia\",\n\"Print\": \"Imprimir\",\n\"Prev\": \"Anterior\",\n\"Find and replace\": \"Buscar y reemplazar\",\n\"Whole words\": \"Palabras completas\",\n\"Spellcheck\": \"Revisi\\u00f3n ortogr\\u00e1fica\",\n\"Caption\": \"Subt\\u00edtulo\",\n\"Insert template\": \"Insertar plantilla\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/et.js",
    "content": "tinymce.addI18n('et',{\n\"Redo\": \"Tee uuesti\",\n\"Undo\": \"V\\u00f5ta tagasi\",\n\"Cut\": \"L\\u00f5ika\",\n\"Copy\": \"Kopeeri\",\n\"Paste\": \"Kleebi\",\n\"Select all\": \"Vali k\\u00f5ik\",\n\"New document\": \"Uus dokument\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Katkesta\",\n\"Visual aids\": \"N\\u00e4itevahendid\",\n\"Bold\": \"Rasvane\",\n\"Italic\": \"Kaldkiri\",\n\"Underline\": \"Allakriipsutatud\",\n\"Strikethrough\": \"L\\u00e4bikriipsutatud\",\n\"Superscript\": \"\\u00dclaindeks\",\n\"Subscript\": \"Alaindeks\",\n\"Clear formatting\": \"Puhasta vorming\",\n\"Align left\": \"Joonda vasakule\",\n\"Align center\": \"Joonda keskele\",\n\"Align right\": \"Joonda paremale\",\n\"Justify\": \"Joonda r\\u00f6\\u00f6pselt\",\n\"Bullet list\": \"J\\u00e4rjestamata loend\",\n\"Numbered list\": \"J\\u00e4rjestatud loend\",\n\"Decrease indent\": \"V\\u00e4henda taanet\",\n\"Increase indent\": \"Suurenda taanet\",\n\"Close\": \"Sulge\",\n\"Formats\": \"Vormingud\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Sinu veebilehitseja ei toeta otsest ligip\\u00e4\\u00e4su l\\u00f5ikelauale. Palun kasuta selle asemel klaviatuuri kiirk\\u00e4sklusi Ctrl+X\\/C\\/V.\",\n\"Headers\": \"P\\u00e4ised\",\n\"Header 1\": \"Pealkiri 1\",\n\"Header 2\": \"Pealkiri 2\",\n\"Header 3\": \"Pealkiri 3\",\n\"Header 4\": \"Pealkiri 4\",\n\"Header 5\": \"Pealkiri 5\",\n\"Header 6\": \"Pealkiri 6\",\n\"Headings\": \"Pealkirjad\",\n\"Heading 1\": \"Pealkiri 1\",\n\"Heading 2\": \"Pealkiri 2\",\n\"Heading 3\": \"Pealkiri 3\",\n\"Heading 4\": \"Pealkiri 4\",\n\"Heading 5\": \"Pealkiri 5\",\n\"Heading 6\": \"Pealkiri 6\",\n\"Preformatted\": \"Eelvormindaud\",\n\"Div\": \"Sektsioon\",\n\"Pre\": \"Eelvormindatud\",\n\"Code\": \"Kood\",\n\"Paragraph\": \"L\\u00f5ik\",\n\"Blockquote\": \"Plokktsitaat\",\n\"Inline\": \"Reasisene\",\n\"Blocks\": \"Plokid\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Asetamine on n\\u00fc\\u00fcd tekstire\\u017eiimis. Sisu asetatakse n\\u00fc\\u00fcd lihttekstina, kuni sa l\\u00fclitad selle valiku v\\u00e4lja.\",\n\"Fonts\": \"Fondid\",\n\"Font Sizes\": \"Kirja suurused\",\n\"Class\": \"Klass\",\n\"Browse for an image\": \"Sirvi pilte\",\n\"OR\": \"V\\u00d5I\",\n\"Drop an image here\": \"Kukuta pilt siia\",\n\"Upload\": \"\\u00dcles laadimine\",\n\"Block\": \"Plokk\",\n\"Align\": \"Joonda\",\n\"Default\": \"Vaikimisi\",\n\"Circle\": \"Ring\",\n\"Disc\": \"Ketas\",\n\"Square\": \"Ruut\",\n\"Lower Alpha\": \"V\\u00e4iket\\u00e4hed (a, b, c)\",\n\"Lower Greek\": \"Kreeka v\\u00e4iket\\u00e4hed (\\u03b1, \\u03b2, \\u03b3)\",\n\"Lower Roman\": \"Rooma v\\u00e4iket\\u00e4hed (i, ii, iii)\",\n\"Upper Alpha\": \"Suurt\\u00e4hed (A, B, C)\",\n\"Upper Roman\": \"Rooma suurt\\u00e4hed (I, II, III)\",\n\"Anchor...\": \"Ankur ...\",\n\"Name\": \"Nimi\",\n\"Id\": \"ID\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"ID peaks algama t\\u00e4hega ning sellele peaks j\\u00e4rgnema ainult t\\u00e4hed, arvud, sidekriipsud, punktid, koolonid v\\u00f5i alakriipsud.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Sul on salvestamata muudatusi. Oled Sa kindel, et soovid mujale navigeeruda?\",\n\"Restore last draft\": \"Taasta viimane mustand\",\n\"Special character...\": \"Eriline tegelane ...\",\n\"Source code\": \"L\\u00e4htekood\",\n\"Insert\\/Edit code sample\": \"Sisesta\\/muuda koodin\\u00e4idis\",\n\"Language\": \"Keel\",\n\"Code sample...\": \"Koodin\\u00e4ide ...\",\n\"Color Picker\": \"V\\u00e4rvivalija\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Vasakult paremale\",\n\"Right to left\": \"Paremalt vasakule\",\n\"Emoticons...\": \"Emotikonid ...\",\n\"Metadata and Document Properties\": \"Metaandmed ja dokumendi atribuudid\",\n\"Title\": \"Pealkiri\",\n\"Keywords\": \"M\\u00e4rks\\u00f5nad\",\n\"Description\": \"Kirjeldus\",\n\"Robots\": \"Robotid\",\n\"Author\": \"Autor\",\n\"Encoding\": \"M\\u00e4rgistik\",\n\"Fullscreen\": \"T\\u00e4isekraan\",\n\"Action\": \"Tegevus\",\n\"Shortcut\": \"Otsetee\",\n\"Help\": \"Abiinfo\",\n\"Address\": \"Aadress\",\n\"Focus to menubar\": \"Fookus men\\u00fc\\u00fcribale\",\n\"Focus to toolbar\": \"Fookus t\\u00f6\\u00f6riistaribale\",\n\"Focus to element path\": \"Fookus elemendi asukohale\",\n\"Focus to contextual toolbar\": \"Fookus kontekstimen\\u00fc\\u00fcle\",\n\"Insert link (if link plugin activated)\": \"Sisesta link (kui lingi plugin on aktiveeritud)\",\n\"Save (if save plugin activated)\": \"Salvesta (kui salvestamise plugin on aktiveeritud)\",\n\"Find (if searchreplace plugin activated)\": \"Otsi (kui plugin searchreplace on aktiveeritud)\",\n\"Plugins installed ({0}):\": \"Pluginad on paigaldatud ({0}):\",\n\"Premium plugins:\": \"Tasulised pluginad:\",\n\"Learn more...\": \"Vaata lisainfot...\",\n\"You are using {0}\": \"Sa kasutad {0}\",\n\"Plugins\": \"Pluginad\",\n\"Handy Shortcuts\": \"Mugavad otseteed\",\n\"Horizontal line\": \"Horisontaaljoon\",\n\"Insert\\/edit image\": \"Lisa\\/muuda pilt\",\n\"Image description\": \"Pildi kirjeldus\",\n\"Source\": \"Allikas\",\n\"Dimensions\": \"M\\u00f5\\u00f5tmed\",\n\"Constrain proportions\": \"S\\u00e4ilita kuvasuhe\",\n\"General\": \"\\u00dcldine\",\n\"Advanced\": \"T\\u00e4iendavad seaded\",\n\"Style\": \"Stiil\",\n\"Vertical space\": \"P\\u00fcstine vahe\",\n\"Horizontal space\": \"Reavahe\",\n\"Border\": \"\\u00c4\\u00e4ris\",\n\"Insert image\": \"Lisa pilt\",\n\"Image...\": \"Pilt ...\",\n\"Image list\": \"Piltide nimekiri\",\n\"Rotate counterclockwise\": \"P\\u00f6\\u00f6ra vastup\\u00e4eva\",\n\"Rotate clockwise\": \"P\\u00f6\\u00f6ra p\\u00e4rip\\u00e4eva\",\n\"Flip vertically\": \"Peegelda vertikaalselt\",\n\"Flip horizontally\": \"Peegelda horisontaalselt\",\n\"Edit image\": \"Muuda pilti\",\n\"Image options\": \"Pildi valikud\",\n\"Zoom in\": \"Suumi sisse\",\n\"Zoom out\": \"Suumi v\\u00e4lja\",\n\"Crop\": \"L\\u00f5ika\",\n\"Resize\": \"Muuda suurust\",\n\"Orientation\": \"Suund\",\n\"Brightness\": \"Heledus\",\n\"Sharpen\": \"Teravamaks\",\n\"Contrast\": \"Kontrast\",\n\"Color levels\": \"V\\u00e4rvi tasemed\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"P\\u00f6\\u00f6ra v\\u00e4rvid\",\n\"Apply\": \"Rakenda\",\n\"Back\": \"Tagasi\",\n\"Insert date\\/time\": \"Lisa kuup\\u00e4ev\\/kellaaeg\",\n\"Date\\/time\": \"Kuup\\u00e4ev\\/kellaaeg\",\n\"Insert\\/Edit Link\": \"Lingi lisamine \\/ muutmine\",\n\"Insert\\/edit link\": \"Lisa\\/muuda link\",\n\"Text to display\": \"Kuvatav tekst\",\n\"Url\": \"Viide (url)\",\n\"Open link in...\": \"Ava link saidil ...\",\n\"Current window\": \"Praegune aken\",\n\"None\": \"Puudub\",\n\"New window\": \"Uus aken\",\n\"Remove link\": \"Eemalda link\",\n\"Anchors\": \"Ankrud\",\n\"Link...\": \"Link...\",\n\"Paste or type a link\": \"Aseta v\\u00f5i sisesta link\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"URL, mille sa sisestasid, n\\u00e4ib olevat e-posti aadress. Kas sa soovid lisada sellele eesliite mailto: ?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"URL, mille sa sisestasid, n\\u00e4ib olevat v\\u00e4line link. Kas sa soovid lisada sellele eesliite http:\\/\\/ ?\",\n\"Link list\": \"Linkide nimekiri\",\n\"Insert video\": \"Lisa video\",\n\"Insert\\/edit video\": \"Lisa\\/muuda video\",\n\"Insert\\/edit media\": \"Lisa\\/muuda multimeediat\",\n\"Alternative source\": \"Teine allikas\",\n\"Alternative source URL\": \"Alternatiivne allika URL\",\n\"Media poster (Image URL)\": \"Meediaplakat (pildi URL)\",\n\"Paste your embed code below:\": \"Kleebi oma manustamiskood siia alla:\",\n\"Embed\": \"Manusta\",\n\"Media...\": \"Meedia ...\",\n\"Nonbreaking space\": \"T\\u00fchim\\u00e4rk (nbsp)\",\n\"Page break\": \"Lehevahetus\",\n\"Paste as text\": \"Aseta tekstina\",\n\"Preview\": \"Eelvaade\",\n\"Print...\": \"Prindi ...\",\n\"Save\": \"Salvesta\",\n\"Find\": \"Otsi\",\n\"Replace with\": \"Asendus\",\n\"Replace\": \"Asenda\",\n\"Replace all\": \"Asenda k\\u00f5ik\",\n\"Previous\": \"Eelmine\",\n\"Next\": \"J\\u00e4rg\",\n\"Find and replace...\": \"Leidke ja asendage ...\",\n\"Could not find the specified string.\": \"Ei suutnud leida etteantud s\\u00f5net.\",\n\"Match case\": \"Erista suur- ja v\\u00e4iket\\u00e4hti\",\n\"Find whole words only\": \"Leidke ainult terved s\\u00f5nad\",\n\"Spell check\": \"\\u00d5igekirja kontroll\",\n\"Ignore\": \"Eira\",\n\"Ignore all\": \"Eira k\\u00f5iki\",\n\"Finish\": \"L\\u00f5peta\",\n\"Add to Dictionary\": \"Lisa s\\u00f5naraamatusse\",\n\"Insert table\": \"Lisa tabel\",\n\"Table properties\": \"Tabeli omadused\",\n\"Delete table\": \"Kustuta tabel\",\n\"Cell\": \"Lahter\",\n\"Row\": \"Rida\",\n\"Column\": \"Tulp\",\n\"Cell properties\": \"Lahtri omadused\",\n\"Merge cells\": \"\\u00dchenda lahtrid\",\n\"Split cell\": \"T\\u00fckelda lahter\",\n\"Insert row before\": \"Lisa rida enne\",\n\"Insert row after\": \"Lisa rida j\\u00e4rele\",\n\"Delete row\": \"Kustuta rida\",\n\"Row properties\": \"Rea omadused\",\n\"Cut row\": \"L\\u00f5ika rida\",\n\"Copy row\": \"Kopeeri rida\",\n\"Paste row before\": \"Kleebi rida enne\",\n\"Paste row after\": \"Kleebi rida j\\u00e4rele\",\n\"Insert column before\": \"Lisa tulp enne\",\n\"Insert column after\": \"Lisa tulp j\\u00e4rele\",\n\"Delete column\": \"Kustuta tulp\",\n\"Cols\": \"Veerud\",\n\"Rows\": \"Read\",\n\"Width\": \"Laius\",\n\"Height\": \"K\\u00f5rgus\",\n\"Cell spacing\": \"Lahtrivahe\",\n\"Cell padding\": \"Lahtri sisu ja tabeli \\u00e4\\u00e4rise vahe\",\n\"Show caption\": \"Kuva pealdis\",\n\"Left\": \"Vasakul\",\n\"Center\": \"Keskel\",\n\"Right\": \"Paremal\",\n\"Cell type\": \"Lahtri t\\u00fc\\u00fcp\",\n\"Scope\": \"Ulatus\",\n\"Alignment\": \"Joondus\",\n\"H Align\": \"H Joondus\",\n\"V Align\": \"V Joondus\",\n\"Top\": \"\\u00dcleval\",\n\"Middle\": \"Keskel\",\n\"Bottom\": \"All\",\n\"Header cell\": \"P\\u00e4islahter\",\n\"Row group\": \"Ridade r\\u00fchm\",\n\"Column group\": \"Veergude r\\u00fchm\",\n\"Row type\": \"Rea t\\u00fc\\u00fcp\",\n\"Header\": \"P\\u00e4is\",\n\"Body\": \"P\\u00f5hiosa\",\n\"Footer\": \"Jalus\",\n\"Border color\": \"Piirjoone v\\u00e4rv\",\n\"Insert template...\": \"Sisesta mall ...\",\n\"Templates\": \"Mallid\",\n\"Template\": \"Mall\",\n\"Text color\": \"Teksti v\\u00e4rv\",\n\"Background color\": \"Tausta v\\u00e4rv\",\n\"Custom...\": \"Kohandatud...\",\n\"Custom color\": \"Kohandatud v\\u00e4rv\",\n\"No color\": \"V\\u00e4rvi pole\",\n\"Remove color\": \"Eemaldage v\\u00e4rv\",\n\"Table of Contents\": \"Sisukord\",\n\"Show blocks\": \"N\\u00e4ita plokke\",\n\"Show invisible characters\": \"N\\u00e4ita peidetud m\\u00e4rke\",\n\"Word count\": \"S\\u00f5nade arv\",\n\"Count\": \"Krahv\",\n\"Document\": \"Dokument\",\n\"Selection\": \"Valik\",\n\"Words\": \"S\\u00f5nad\",\n\"Words: {0}\": \"S\\u00f5nu: {0}\",\n\"{0} words\": \"{0} s\\u00f5na\",\n\"File\": \"Fail\",\n\"Edit\": \"Muuda\",\n\"Insert\": \"Sisesta\",\n\"View\": \"Vaade\",\n\"Format\": \"Vorming\",\n\"Table\": \"Tabel\",\n\"Tools\": \"T\\u00f6\\u00f6riistad\",\n\"Powered by {0}\": \"Kasutatud tarkvara {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Rikastatud teksti ala. Men\\u00fc\\u00fc jaoks vajuta ALT-F9. T\\u00f6\\u00f6riistariba jaoks vajuta ALT-F10. Abi saamiseks vajuta ALT-0.\",\n\"Image title\": \"Pildi pealkiri\",\n\"Border width\": \"\\u00c4\\u00e4rise laius\",\n\"Border style\": \"Piiri stiil\",\n\"Error\": \"Viga\",\n\"Warn\": \"Hoiatage\",\n\"Valid\": \"Kehtib\",\n\"To open the popup, press Shift+Enter\": \"H\\u00fcpikakna avamiseks vajutage t\\u00f5stuklahvi + sisestusklahvi\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Rikasteksti ala. Abi saamiseks vajutage ALT-0.\",\n\"System Font\": \"S\\u00fcsteemi font\",\n\"Failed to upload image: {0}\": \"Pildi \\u00fcleslaadimine eba\\u00f5nnestus: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Pistikprogrammi laadimine nurjus: {0} URL-ist {1}\",\n\"Failed to load plugin url: {0}\": \"Pistikprogrammi URL-i laadimine nurjus: {0}\",\n\"Failed to initialize plugin: {0}\": \"Pistikprogrammi l\\u00e4htestamine eba\\u00f5nnestus: {0}\",\n\"example\": \"n\\u00e4ide\",\n\"Search\": \"Otsing\",\n\"All\": \"K\\u00f5ik\",\n\"Currency\": \"Valuuta\",\n\"Text\": \"Tekst\",\n\"Quotations\": \"Tsitaadid\",\n\"Mathematical\": \"Matemaatiline\",\n\"Extended Latin\": \"Laiendatud ladina keel\",\n\"Symbols\": \"S\\u00fcmbolid\",\n\"Arrows\": \"Nooled\",\n\"User Defined\": \"Kasutaja m\\u00e4\\u00e4ratud\",\n\"dollar sign\": \"dollari m\\u00e4rk\",\n\"currency sign\": \"v\\u00e4\\u00e4ringu m\\u00e4rk\",\n\"euro-currency sign\": \"euro v\\u00e4\\u00e4ringu m\\u00e4rk\",\n\"colon sign\": \"j\\u00e4mesoole m\\u00e4rk\",\n\"cruzeiro sign\": \"cruzeiro m\\u00e4rk\",\n\"french franc sign\": \"Prantsuse frangi m\\u00e4rk\",\n\"lira sign\": \"liiri m\\u00e4rk\",\n\"mill sign\": \"veskim\\u00e4rk\",\n\"naira sign\": \"naira m\\u00e4rk\",\n\"peseta sign\": \"peseta m\\u00e4rk\",\n\"rupee sign\": \"ruupia m\\u00e4rk\",\n\"won sign\": \"v\\u00f5itis m\\u00e4rgi\",\n\"new sheqel sign\": \"uus \\u0161ekeli m\\u00e4rk\",\n\"dong sign\": \"dongi m\\u00e4rk\",\n\"kip sign\": \"kip m\\u00e4rk\",\n\"tugrik sign\": \"tugriku m\\u00e4rk\",\n\"drachma sign\": \"drahmam\\u00e4rk\",\n\"german penny symbol\": \"saksa senti s\\u00fcmbol\",\n\"peso sign\": \"peeso m\\u00e4rk\",\n\"guarani sign\": \"guarani m\\u00e4rk\",\n\"austral sign\": \"austraalne m\\u00e4rk\",\n\"hryvnia sign\": \"grivna m\\u00e4rk\",\n\"cedi sign\": \"cedi m\\u00e4rk\",\n\"livre tournois sign\": \"elav turniiri m\\u00e4rk\",\n\"spesmilo sign\": \"spesmilo m\\u00e4rk\",\n\"tenge sign\": \"tenge m\\u00e4rk\",\n\"indian rupee sign\": \"India ruupia m\\u00e4rk\",\n\"turkish lira sign\": \"t\\u00fcrgi liiri m\\u00e4rk\",\n\"nordic mark sign\": \"p\\u00f5hjam\\u00e4rgi m\\u00e4rk\",\n\"manat sign\": \"manati m\\u00e4rk\",\n\"ruble sign\": \"rubla m\\u00e4rk\",\n\"yen character\": \"jeeni tegelaskuju\",\n\"yuan character\": \"j\\u00fcaani tegelaskuju\",\n\"yuan character, in hong kong and taiwan\": \"j\\u00fcaani tegelane, Hongkongis ja Taiwanis\",\n\"yen\\/yuan character variant one\": \"jeeni \\/ j\\u00fcaani t\\u00e4hem\\u00e4rgi variant \\u00fcks\",\n\"Loading emoticons...\": \"Emotikonide laadimine ...\",\n\"Could not load emoticons\": \"Emotikonide laadimine nurjus\",\n\"People\": \"Inimesed\",\n\"Animals and Nature\": \"Loomad ja loodus\",\n\"Food and Drink\": \"Toit ja jook\",\n\"Activity\": \"Tegevus\",\n\"Travel and Places\": \"Reisimine ja kohad\",\n\"Objects\": \"Objektid\",\n\"Flags\": \"Lipud\",\n\"Characters\": \"Tegelased\",\n\"Characters (no spaces)\": \"M\\u00e4rgid (t\\u00fchikud puuduvad)\",\n\"{0} characters\": \"{0} t\\u00e4hem\\u00e4rki\",\n\"Error: Form submit field collision.\": \"Viga: vormi esitamise v\\u00e4lja kokkup\\u00f5rge.\",\n\"Error: No form element found.\": \"Viga: vormielementi ei leitud.\",\n\"Update\": \"Uuenda\",\n\"Color swatch\": \"V\\u00e4rvivalik\",\n\"Turquoise\": \"T\\u00fcrkiis\",\n\"Green\": \"Roheline\",\n\"Blue\": \"Sinine\",\n\"Purple\": \"Lilla\",\n\"Navy Blue\": \"Merev\\u00e4e sinine\",\n\"Dark Turquoise\": \"Tume t\\u00fcrkiissinine\",\n\"Dark Green\": \"Tumeroheline\",\n\"Medium Blue\": \"Keskmine sinine\",\n\"Medium Purple\": \"Keskmine lilla\",\n\"Midnight Blue\": \"Kesk\\u00f6ine sinine\",\n\"Yellow\": \"Kollane\",\n\"Orange\": \"Oran\\u017e\",\n\"Red\": \"Punane\",\n\"Light Gray\": \"Helehall\",\n\"Gray\": \"Hall\",\n\"Dark Yellow\": \"Tumekollane\",\n\"Dark Orange\": \"Tumeoran\\u017e\",\n\"Dark Red\": \"Tumepunane\",\n\"Medium Gray\": \"Keskmiselt hall\",\n\"Dark Gray\": \"Tumehall\",\n\"Light Green\": \"Heleroheline\",\n\"Light Yellow\": \"Helekollane\",\n\"Light Red\": \"Helepunane\",\n\"Light Purple\": \"Helelilla\",\n\"Light Blue\": \"Helesinine\",\n\"Dark Purple\": \"Tumelilla\",\n\"Dark Blue\": \"Tumesinine\",\n\"Black\": \"Must\",\n\"White\": \"Valge\",\n\"Switch to or from fullscreen mode\": \"L\\u00fclitumine t\\u00e4isekraanre\\u017eiimile v\\u00f5i sellest v\\u00e4lja\",\n\"Open help dialog\": \"Ava dialoog\",\n\"history\": \"ajalugu\",\n\"styles\": \"stiilid\",\n\"formatting\": \"vormindamine\",\n\"alignment\": \"joondamine\",\n\"indentation\": \"taane\",\n\"permanent pen\": \"p\\u00fcsiv pliiats\",\n\"comments\": \"kommentaare\",\n\"Format Painter\": \"Format Painter\",\n\"Insert\\/edit iframe\": \"Sisesta \\/ redigeeri iframe\",\n\"Capitalization\": \"Suurt\\u00e4htede kasutamine\",\n\"lowercase\": \"v\\u00e4iket\\u00e4hed\",\n\"UPPERCASE\": \"\\u00dcLEMINEK\",\n\"Title Case\": \"Pealkirja juhtum\",\n\"Permanent Pen Properties\": \"P\\u00fcsivad pliiatsi omadused\",\n\"Permanent pen properties...\": \"Pliiatsi p\\u00fcsivad omadused ...\",\n\"Font\": \"Font\",\n\"Size\": \"Suurus\",\n\"More...\": \"Veel ...\",\n\"Spellcheck Language\": \"\\u00d5igekirjakontroll\",\n\"Select...\": \"Valige ...\",\n\"Preferences\": \"Eelistused\",\n\"Yes\": \"Jah\",\n\"No\": \"Ei\",\n\"Keyboard Navigation\": \"Klaviatuuril navigeerimine\",\n\"Version\": \"Versioon\",\n\"Anchor\": \"Ankur\",\n\"Special character\": \"Erim\\u00e4rk\",\n\"Code sample\": \"Koodi n\\u00e4idis\",\n\"Color\": \"V\\u00e4rv\",\n\"Emoticons\": \"Emotikonid\",\n\"Document properties\": \"Dokumendi omadused\",\n\"Image\": \"Pilt\",\n\"Insert link\": \"Lisa link\",\n\"Target\": \"Sihtm\\u00e4rk\",\n\"Link\": \"Link\",\n\"Poster\": \"Lisaja\",\n\"Media\": \"Multimeedia\",\n\"Print\": \"Tr\\u00fcki\",\n\"Prev\": \"Eelm\",\n\"Find and replace\": \"Otsi ja asenda\",\n\"Whole words\": \"Terviks\\u00f5nad\",\n\"Spellcheck\": \"\\u00d5igekirja kontroll\",\n\"Caption\": \"Alapealkiri\",\n\"Insert template\": \"Lisa mall\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/eu.js",
    "content": "tinymce.addI18n('eu',{\n\"Redo\": \"Berregin\",\n\"Undo\": \"Desegin\",\n\"Cut\": \"Ebaki\",\n\"Copy\": \"Kopiatu\",\n\"Paste\": \"Itsatsi\",\n\"Select all\": \"Hautatu dena\",\n\"New document\": \"Dokumentu berria\",\n\"Ok\": \"Ondo\",\n\"Cancel\": \"Ezeztatu\",\n\"Visual aids\": \"Laguntza bisualak\",\n\"Bold\": \"Lodia\",\n\"Italic\": \"Etzana\",\n\"Underline\": \"Azpimarratua\",\n\"Strikethrough\": \"Marratua\",\n\"Superscript\": \"Goi-indizea\",\n\"Subscript\": \"Azpiindizea\",\n\"Clear formatting\": \"Ezabatu formatua\",\n\"Align left\": \"Lerrokatu ezkerrean\",\n\"Align center\": \"Lerrokatu erdian\",\n\"Align right\": \"Lerrokatu eskuinean\",\n\"Justify\": \"Justifikatuta\",\n\"Bullet list\": \"Bulet zerrenda\",\n\"Numbered list\": \"Zenbaki-zerrenda\",\n\"Decrease indent\": \"Txikitu koska\",\n\"Increase indent\": \"Handitu koska\",\n\"Close\": \"Itxi\",\n\"Formats\": \"Formatuak\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Zure nabigatzaileak ez du arbela zuzenean erabiltzeko euskarririk. Mesedez erabili CTRL+X\\/C\\/V teklatuko lasterbideak.\",\n\"Headers\": \"Goiburuak\",\n\"Header 1\": \"1. goiburua\",\n\"Header 2\": \"2. goiburua\",\n\"Header 3\": \"3. goiburua\",\n\"Header 4\": \"4. goiburua\",\n\"Header 5\": \"5. goiburua\",\n\"Header 6\": \"6. goiburua\",\n\"Headings\": \"Izenburuak\",\n\"Heading 1\": \"1. izenburua\",\n\"Heading 2\": \"2. izenburua\",\n\"Heading 3\": \"3. izenburua\",\n\"Heading 4\": \"4. izenburua\",\n\"Heading 5\": \"5. izenburua\",\n\"Heading 6\": \"6. izenburua\",\n\"Preformatted\": \"Aurreformateatuta\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Kodea\",\n\"Paragraph\": \"Paragrafoa\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Txertatuta\",\n\"Blocks\": \"Blokeak\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Itsatsi testu arrunt moduan dago orain. Edukiak testu arruntak bezala itsatsiko dira aukera hau itzaltzen duzunera arte.\",\n\"Fonts\": \"Letra-motak\",\n\"Font Sizes\": \"Letra-tamainak\",\n\"Class\": \"Klasea\",\n\"Browse for an image\": \"Irudia arakatu\",\n\"OR\": \"EDO\",\n\"Drop an image here\": \"Irudia hona ekarri\",\n\"Upload\": \"Kargatu\",\n\"Block\": \"Blokea\",\n\"Align\": \"Lerrokatu\",\n\"Default\": \"Lehenetstia\",\n\"Circle\": \"Zirkulua\",\n\"Disc\": \"Diskoa\",\n\"Square\": \"Karratua\",\n\"Lower Alpha\": \"Behe alfa\",\n\"Lower Greek\": \"Behe grekoa\",\n\"Lower Roman\": \"Behe erromatarra\",\n\"Upper Alpha\": \"Goi alfa\",\n\"Upper Roman\": \"Goi erromatarra\",\n\"Anchor...\": \"Aingura...\",\n\"Name\": \"Izena\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Ida hizki batekin hasi behar da, jarraian hizkiak, zenbakiak, gidoiak, puntuak, bi-puntu edo azpiko marrak bakarrik izan ditzake.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Gorde gabeko aldaketak dituzu, zihur zaude hemendik irten nahi duzula?\",\n\"Restore last draft\": \"Leheneratu azken zirriborroa\",\n\"Special character...\": \"Karaktere bereziak...\",\n\"Source code\": \"Iturburu-kodea\",\n\"Insert\\/Edit code sample\": \"Txertatu\\/editatu kode adibidea\",\n\"Language\": \"Hizkuntza\",\n\"Code sample...\": \"Kode adibidea...\",\n\"Color Picker\": \"Kolore-hautatzailea\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Ezkerretik eskuinera\",\n\"Right to left\": \"Eskuinetik ezkerrera\",\n\"Emoticons...\": \"Emotikonoak...\",\n\"Metadata and Document Properties\": \"Metadatuak eta dokumentuaren propietateak\",\n\"Title\": \"Titulua\",\n\"Keywords\": \"Hitz gakoak\",\n\"Description\": \"Deskribapena\",\n\"Robots\": \"Robotak\",\n\"Author\": \"Egilea\",\n\"Encoding\": \"Encoding\",\n\"Fullscreen\": \"Pantaila osoa\",\n\"Action\": \"Akzioa\",\n\"Shortcut\": \"Laster tekla\",\n\"Help\": \"Laguntza\",\n\"Address\": \"Helbidea\",\n\"Focus to menubar\": \"Fokoa menu-barrara eraman\",\n\"Focus to toolbar\": \"Fokoa tresna-barrara eraman\",\n\"Focus to element path\": \"Fokoa elementuaren bidera eraman\",\n\"Focus to contextual toolbar\": \"Fokoa kontestuko tresna-barrara eraman\",\n\"Insert link (if link plugin activated)\": \"Lotura txertatu (lotura plugina aktibatuta badago)\",\n\"Save (if save plugin activated)\": \"Gorde (gordetzeko plugina aktibatuta badago)\",\n\"Find (if searchreplace plugin activated)\": \"Bilatu (bilatuordezkatu plugina instalatuta badago)\",\n\"Plugins installed ({0}):\": \"Instalatutako pluginak ({0}):\",\n\"Premium plugins:\": \"Premium pluginak:\",\n\"Learn more...\": \"Gehiago ikasi...\",\n\"You are using {0}\": \"{0} erabiltzen ari zara\",\n\"Plugins\": \"Pluginak\",\n\"Handy Shortcuts\": \"Laster-tekla erabilgarriak\",\n\"Horizontal line\": \"Marra horizontala\",\n\"Insert\\/edit image\": \"Irudia txertatu\\/editatu\",\n\"Image description\": \"Irudiaren deskribapena\",\n\"Source\": \"Iturburua\",\n\"Dimensions\": \"Neurriak\",\n\"Constrain proportions\": \"Zerraditu proportzioak\",\n\"General\": \"Orokorra\",\n\"Advanced\": \"Aurreratua\",\n\"Style\": \"Estiloa\",\n\"Vertical space\": \"Hutsune bertikala\",\n\"Horizontal space\": \"Hutsune horizontala\",\n\"Border\": \"Ertza\",\n\"Insert image\": \"Irudia txertatu\",\n\"Image...\": \"Irudia...\",\n\"Image list\": \"Irudi zerrenda\",\n\"Rotate counterclockwise\": \"Erlojuaren aurkako eran biratu\",\n\"Rotate clockwise\": \"Erlojuaren eran biratu\",\n\"Flip vertically\": \"Bertikalki irauli\",\n\"Flip horizontally\": \"Horizontalki irauli\",\n\"Edit image\": \"Irudia editatu\",\n\"Image options\": \"Irudiaren aukerak\",\n\"Zoom in\": \"Zooma handiagotu\",\n\"Zoom out\": \"Zooma txikiagotu\",\n\"Crop\": \"Moztu\",\n\"Resize\": \"Tamaina aldatu\",\n\"Orientation\": \"Orientazioa\",\n\"Brightness\": \"Distira\",\n\"Sharpen\": \"Zorroztu\",\n\"Contrast\": \"Kontrastatu\",\n\"Color levels\": \"Kolore mailak\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Biratu\",\n\"Apply\": \"Gorde\",\n\"Back\": \"Atzera\",\n\"Insert date\\/time\": \"Data\\/ordua txertatu\",\n\"Date\\/time\": \"Data\\/ordua\",\n\"Insert\\/Edit Link\": \"Lotura txertatu\\/aldatu...\",\n\"Insert\\/edit link\": \"Esteka txertatu\\/editatu\",\n\"Text to display\": \"Bistaratzeko testua\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Lotura hemen ireki...\",\n\"Current window\": \"Leiho hau\",\n\"None\": \"Bat ere ez\",\n\"New window\": \"Lehio berria\",\n\"Remove link\": \"Kendu esteka\",\n\"Anchors\": \"Estekak\",\n\"Link...\": \"Esteka...\",\n\"Paste or type a link\": \"Itsatsu edo idatzi lotura\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Sartu duzun URL-ak e-posta helbidea dela dirudi. Nahi duzu dagokion mailto: aurrizkia gehitzea?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Sartu duzun URL-ak kanpoko esteka dela dirudi. Nahi duzu dagokion http:\\/\\/ aurrizkia gehitzea?\",\n\"Link list\": \"Loturen zerrenda\",\n\"Insert video\": \"Bideoa txertatu\",\n\"Insert\\/edit video\": \"Bideoa txertatu\\/editatu\",\n\"Insert\\/edit media\": \"Media txertatu\\/editatu\",\n\"Alternative source\": \"Iturburu alternatiboa\",\n\"Alternative source URL\": \"Ordezko jatorri URL-a\",\n\"Media poster (Image URL)\": \"Media posterra (irudiaren URL-a)\",\n\"Paste your embed code below:\": \"Itsatsi hemen zure enkapsulatzeko kodea:\",\n\"Embed\": \"Kapsulatu\",\n\"Media...\": \"Multimedia...\",\n\"Nonbreaking space\": \"Zuriune zatiezina\",\n\"Page break\": \"Orrialde-jauzia\",\n\"Paste as text\": \"Itsatsi testu bezala\",\n\"Preview\": \"Aurrebista\",\n\"Print...\": \"Inprimatu...\",\n\"Save\": \"Gorde\",\n\"Find\": \"Bilatu\",\n\"Replace with\": \"Honekin ordeztu\",\n\"Replace\": \"Ordeztu\",\n\"Replace all\": \"Ordeztu dena\",\n\"Previous\": \"Aurrekoa\",\n\"Next\": \"Hurrengoa\",\n\"Find and replace...\": \"Bilatu eta ordezkatu...\",\n\"Could not find the specified string.\": \"Ezin izan da zehaztutako katea aurkitu.\",\n\"Match case\": \"Maiuskula\\/minuskula\",\n\"Find whole words only\": \"Hitz osoak bakarrik bilatu\",\n\"Spell check\": \"Hizkuntza zuzenketa\",\n\"Ignore\": \"Ez ikusi\",\n\"Ignore all\": \"Ez ikusi guztia\",\n\"Finish\": \"Amaitu\",\n\"Add to Dictionary\": \"Hiztegira gehitu\",\n\"Insert table\": \"Txertatu taula\",\n\"Table properties\": \"Taularen propietateak\",\n\"Delete table\": \"Taula ezabatu\",\n\"Cell\": \"Gelaxka\",\n\"Row\": \"Errenkada\",\n\"Column\": \"Zutabea\",\n\"Cell properties\": \"Gelaxkaren propietateak\",\n\"Merge cells\": \"Batu gelaxkak\",\n\"Split cell\": \"Banatu gelaxkak\",\n\"Insert row before\": \"Txertatu errenkada aurretik\",\n\"Insert row after\": \"Txertatu errenkada ostean\",\n\"Delete row\": \"Ezabatu errenkada\",\n\"Row properties\": \"Errenkadaren propietateak\",\n\"Cut row\": \"Ebaki errenkada\",\n\"Copy row\": \"Kopiatu errenkada\",\n\"Paste row before\": \"Itsatsi errenkada aurretik\",\n\"Paste row after\": \"Itsatsi errenkada ostean\",\n\"Insert column before\": \"Txertatu zutabe aurretik\",\n\"Insert column after\": \"Txertatu zutabea ostean\",\n\"Delete column\": \"Ezabatu zutabea\",\n\"Cols\": \"Zutabeak\",\n\"Rows\": \"Errenkadak\",\n\"Width\": \"Zabalera\",\n\"Height\": \"Altuera\",\n\"Cell spacing\": \"Gelaxka arteko tartea\",\n\"Cell padding\": \"Gelaxken betegarria\",\n\"Show caption\": \"Erakutsi irudi-oina erakutsi\",\n\"Left\": \"Ezkerra\",\n\"Center\": \"Erdia\",\n\"Right\": \"Eskuina\",\n\"Cell type\": \"Gelaxka mota\",\n\"Scope\": \"Esparrua\",\n\"Alignment\": \"Lerrokatzea\",\n\"H Align\": \"Lerrokatze horizontala\",\n\"V Align\": \"Lerrokatze bertikala\",\n\"Top\": \"Goian\",\n\"Middle\": \"Erdian\",\n\"Bottom\": \"Behean\",\n\"Header cell\": \"Goiburuko gelaxka\",\n\"Row group\": \"Lerro taldea\",\n\"Column group\": \"Zutabe taldea\",\n\"Row type\": \"Lerro mota\",\n\"Header\": \"Goiburua\",\n\"Body\": \"Gorputza\",\n\"Footer\": \"Oina\",\n\"Border color\": \"Inguruko marraren kolorea\",\n\"Insert template...\": \"Txantiloia txertatu...\",\n\"Templates\": \"Txantiloiak\",\n\"Template\": \"Txantiloia\",\n\"Text color\": \"Testuaren kolorea\",\n\"Background color\": \"Atzeko kolorea\",\n\"Custom...\": \"Pertsonalizatu\",\n\"Custom color\": \"Pertsonalizatutako kolorea\",\n\"No color\": \"Kolorerik ez\",\n\"Remove color\": \"Kendu kolorea\",\n\"Table of Contents\": \"Edukien taula\",\n\"Show blocks\": \"Erakutsi blokeak\",\n\"Show invisible characters\": \"Erakutsi karaktere izkutuak\",\n\"Word count\": \"Hizki-kontaketa\",\n\"Count\": \"Zenbatu\",\n\"Document\": \"Dokumentua\",\n\"Selection\": \"Aukera\",\n\"Words\": \"Hitzak\",\n\"Words: {0}\": \"Hitzak: {0}\",\n\"{0} words\": \"{0} hitz\",\n\"File\": \"Fitxategia\",\n\"Edit\": \"Editatu\",\n\"Insert\": \"Sartu\",\n\"View\": \"Ikusi\",\n\"Format\": \"Formatua\",\n\"Table\": \"Taula\",\n\"Tools\": \"Tresnak\",\n\"Powered by {0}\": \"{0}rekin egina\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Testu aberastuko area. Sakatu ALT-F9 menurako. Sakatu ALT-F10 tresna-barrarako. Sakatu ALT-0 laguntzarako\",\n\"Image title\": \"Irudiaren izenburua\",\n\"Border width\": \"Ertzaren zabalera\",\n\"Border style\": \"Ertzaren estiloa\",\n\"Error\": \"Errorea\",\n\"Warn\": \"Oharra\",\n\"Valid\": \"Zuzena\",\n\"To open the popup, press Shift+Enter\": \"Leiho berria irekitzeko, sakatu Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Testu aberastuko area. Sakatu ALT-0 laguntza lortzeko.\",\n\"System Font\": \"Sistemaren letra-mota\",\n\"Failed to upload image: {0}\": \"Errorea gertatu da irudia igotzean: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Errorea gertatu da {0} plugina kargatzean {1} url-tik\",\n\"Failed to load plugin url: {0}\": \"Errorea gertatu da pluginaren url-a kargatzean: {0}\",\n\"Failed to initialize plugin: {0}\": \"Errorea gertatu da plugina hasieratzean: {0}\",\n\"example\": \"adibidea\",\n\"Search\": \"Bilatu\",\n\"All\": \"Guztiak\",\n\"Currency\": \"Moneta\",\n\"Text\": \"Testua\",\n\"Quotations\": \"Aipuak\",\n\"Mathematical\": \"Matematika\",\n\"Extended Latin\": \"Latin zabaldua\",\n\"Symbols\": \"Ikurrak\",\n\"Arrows\": \"Geziak\",\n\"User Defined\": \"Erabiltzaileak definitutakoak\",\n\"dollar sign\": \"dolarraren ikurra\",\n\"currency sign\": \"monetaren ikurra\",\n\"euro-currency sign\": \"euroaren ikurra\",\n\"colon sign\": \"bi puntuen ikurra\",\n\"cruzeiro sign\": \"cruzeiroaren ikurra\",\n\"french franc sign\": \"libera frantsesaren ikurra\",\n\"lira sign\": \"liraren ikurra\",\n\"mill sign\": \"millaren ikurra\",\n\"naira sign\": \"naira ikurra\",\n\"peseta sign\": \"pezetaren ikurra\",\n\"rupee sign\": \"rupiaren ikurra\",\n\"won sign\": \"wonaren ikurra\",\n\"new sheqel sign\": \"sheqel berriaren ikurra\",\n\"dong sign\": \"dongaren ikurra\",\n\"kip sign\": \"kiparen ikurra\",\n\"tugrik sign\": \"tugrikaren ikurra\",\n\"drachma sign\": \"drakmaren ikurra\",\n\"german penny symbol\": \"alemaniako peniaren ikurra\",\n\"peso sign\": \"pesoaren ikurra\",\n\"guarani sign\": \"guaraniaren ikurra\",\n\"austral sign\": \"australaren ikurra\",\n\"hryvnia sign\": \"hryvniaren ikurra\",\n\"cedi sign\": \"cediaren ikurra\",\n\"livre tournois sign\": \"libre tournoisaren ikurra\",\n\"spesmilo sign\": \"spesmiloaren ikurra\",\n\"tenge sign\": \"tengearen ikurra\",\n\"indian rupee sign\": \"indiako rupiaren ikurra\",\n\"turkish lira sign\": \"lira turkiarraren ikurra\",\n\"nordic mark sign\": \"iparraldeko markoaren ikurra\",\n\"manat sign\": \"manataren ikurra\",\n\"ruble sign\": \"rubloaren ikurra\",\n\"yen character\": \"yenaren karakterea\",\n\"yuan character\": \"yuanaren karakterea\",\n\"yuan character, in hong kong and taiwan\": \"yuanaren karakterea, hong kong eta taiwanen\",\n\"yen\\/yuan character variant one\": \"yen\\/yuan karakterearen 1go bariantea\",\n\"Loading emoticons...\": \"Emotikonoak kargatzen...\",\n\"Could not load emoticons\": \"Ezin izan dira emotikonoak kargatu\",\n\"People\": \"Jendea\",\n\"Animals and Nature\": \"Animaliak eta natura\",\n\"Food and Drink\": \"Janari eta edaria\",\n\"Activity\": \"Ekintzak\",\n\"Travel and Places\": \"Bidaiak eta lekuak\",\n\"Objects\": \"Objektuak\",\n\"Flags\": \"Banderak\",\n\"Characters\": \"Karaktereak\",\n\"Characters (no spaces)\": \"Karaktereak (espaziorik gabe)\",\n\"{0} characters\": \"{0} karaktere\",\n\"Error: Form submit field collision.\": \"Errorea: formularioaren eremuetan talka gertatu da.\",\n\"Error: No form element found.\": \"Errorea: ez da formularioa aurkitu.\",\n\"Update\": \"Eguneratu\",\n\"Color swatch\": \"Koloreak\",\n\"Turquoise\": \"Turkesa\",\n\"Green\": \"Berdea\",\n\"Blue\": \"Urdina\",\n\"Purple\": \"Morea\",\n\"Navy Blue\": \"Itsas-urdina\",\n\"Dark Turquoise\": \"Turkesa iluna\",\n\"Dark Green\": \"Berde iluna\",\n\"Medium Blue\": \"Tarteko urdina\",\n\"Medium Purple\": \"Tarteko morea\",\n\"Midnight Blue\": \"Gauerdiko urdina\",\n\"Yellow\": \"Horia\",\n\"Orange\": \"Laranja\",\n\"Red\": \"Gorria\",\n\"Light Gray\": \"Gris argia\",\n\"Gray\": \"Grisa\",\n\"Dark Yellow\": \"Hori iluna\",\n\"Dark Orange\": \"Laranja iluna\",\n\"Dark Red\": \"Gorri iluna\",\n\"Medium Gray\": \"Tarteko grisa\",\n\"Dark Gray\": \"Gris iluna\",\n\"Light Green\": \"Berde argia\",\n\"Light Yellow\": \"Hori argia\",\n\"Light Red\": \"Gorri argia\",\n\"Light Purple\": \"More argia\",\n\"Light Blue\": \"Urdin argia\",\n\"Dark Purple\": \"More iluna\",\n\"Dark Blue\": \"Urdin iluna\",\n\"Black\": \"Beltza\",\n\"White\": \"Zuria\",\n\"Switch to or from fullscreen mode\": \"Pantaila osoko modura joan edo handik itzuli\",\n\"Open help dialog\": \"Laguntza elkarrizketa ireki\",\n\"history\": \"historia\",\n\"styles\": \"estiloak\",\n\"formatting\": \"formatua\",\n\"alignment\": \"lerrokatzea\",\n\"indentation\": \"koska\",\n\"permanent pen\": \"boligrafo iraunkorra\",\n\"comments\": \"iruzkinak\",\n\"Format Painter\": \"Formatua kopiatu\",\n\"Insert\\/edit iframe\": \"Txertatu\\/editatu bideoa\",\n\"Capitalization\": \"Letra larriak\",\n\"lowercase\": \"Letra xeheak\",\n\"UPPERCASE\": \"Maiuskula\",\n\"Title Case\": \"Izenburu kasua\",\n\"Permanent Pen Properties\": \"Boligrafo iraunkorraren ezaugarriak\",\n\"Permanent pen properties...\": \"Boligrafo iraunkorraren ezaugarriak...\",\n\"Font\": \"Letra-motak\",\n\"Size\": \"Tamaina\",\n\"More...\": \"Gehiago...\",\n\"Spellcheck Language\": \"Zuzenketa ortografikoaren hizkuntza\",\n\"Select...\": \"Aukeratu...\",\n\"Preferences\": \"Lehentasunak\",\n\"Yes\": \"Bai\",\n\"No\": \"Ez\",\n\"Keyboard Navigation\": \"Teklatuaren nabigazioa\",\n\"Version\": \"Bertsioa\",\n\"Anchor\": \"Esteka\",\n\"Special character\": \"Karaktere bereziak\",\n\"Code sample\": \"Kode adibidea\",\n\"Color\": \"Kolorea\",\n\"Emoticons\": \"Irrifartxoak\",\n\"Document properties\": \"Dokumentuaren propietateak\",\n\"Image\": \"Irudia\",\n\"Insert link\": \"Esteka txertatu\",\n\"Target\": \"Target\",\n\"Link\": \"Lotura\",\n\"Poster\": \"Poster-a\",\n\"Media\": \"Media\",\n\"Print\": \"Inprimatu\",\n\"Prev\": \"Aurrekoa\",\n\"Find and replace\": \"Bilatu eta ordeztu\",\n\"Whole words\": \"hitz osoak\",\n\"Spellcheck\": \"Egiaztapenak\",\n\"Caption\": \"Epigrafea\",\n\"Insert template\": \"Txertatu txantiloia\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/fa.js",
    "content": "tinymce.addI18n('fa',{\n\"Redo\": \"\\u0628\\u0627\\u0632\\u0627\\u0646\\u062c\\u0627\\u0645\",\n\"Undo\": \"\\u0648\\u0627\\u06af\\u0631\\u062f\",\n\"Cut\": \"\\u0628\\u0631\\u0634\",\n\"Copy\": \"\\u06a9\\u067e\\u06cc\",\n\"Paste\": \"\\u0686\\u0633\\u0628\\u0627\\u0646\\u062f\\u0646\",\n\"Select all\": \"\\u0627\\u0646\\u062a\\u062e\\u0627\\u0628 \\u0647\\u0645\\u0647\",\n\"New document\": \"\\u0633\\u0646\\u062f \\u062c\\u062f\\u06cc\\u062f\",\n\"Ok\": \"\\u062a\\u0623\\u06cc\\u06cc\\u062f\",\n\"Cancel\": \"\\u0644\\u063a\\u0648\",\n\"Visual aids\": \"\\u06a9\\u0645\\u06a9\\u200c\\u0647\\u0627\\u06cc \\u0628\\u0635\\u0631\\u06cc\",\n\"Bold\": \"\\u067e\\u0631\\u0631\\u0646\\u06af\",\n\"Italic\": \"\\u06a9\\u062c\",\n\"Underline\": \"\\u0632\\u06cc\\u0631 \\u062e\\u0637 \\u062f\\u0627\\u0631\",\n\"Strikethrough\": \"\\u062e\\u0637 \\u0632\\u062f\\u0646\",\n\"Superscript\": \"\\u0628\\u0627\\u0644\\u0627\\u0646\\u06af\\u0627\\u0634\\u062a\",\n\"Subscript\": \"\\u0632\\u06cc\\u0631\\u0646\\u06af\\u0627\\u0634\\u062a\",\n\"Clear formatting\": \"\\u067e\\u0627\\u06a9 \\u06a9\\u0631\\u062f\\u0646 \\u0642\\u0627\\u0644\\u0628\\u200c\\u0628\\u0646\\u062f\\u06cc\",\n\"Align left\": \"\\u062a\\u0631\\u0627\\u0632\\u0628\\u0646\\u062f\\u06cc \\u0627\\u0632 \\u0686\\u067e\",\n\"Align center\": \"\\u062a\\u0631\\u0627\\u0632\\u0628\\u0646\\u062f\\u06cc \\u0627\\u0632 \\u0648\\u0633\\u0637\",\n\"Align right\": \"\\u062a\\u0631\\u0627\\u0632\\u0628\\u0646\\u062f\\u06cc \\u0627\\u0632 \\u0631\\u0627\\u0633\\u062a\",\n\"Justify\": \"\\u062a\\u0631\\u0627\\u0632\\u0628\\u0646\\u062f\\u06cc \\u062f\\u0648\\u0637\\u0631\\u0641\\u0647\",\n\"Bullet list\": \"\\u0641\\u0647\\u0631\\u0633\\u062a \\u0646\\u0634\\u0627\\u0646\\u0647\\u200c\\u062f\\u0627\\u0631\",\n\"Numbered list\": \"\\u0641\\u0647\\u0631\\u0633\\u062a \\u0634\\u0645\\u0627\\u0631\\u0647\\u200c\\u062f\\u0627\\u0631\",\n\"Decrease indent\": \"\\u06a9\\u0627\\u0647\\u0634 \\u062a\\u0648\\u0631\\u0641\\u062a\\u06af\\u06cc\",\n\"Increase indent\": \"\\u0627\\u0641\\u0632\\u0627\\u06cc\\u0634 \\u062a\\u0648\\u0631\\u0641\\u062a\\u06af\\u06cc\",\n\"Close\": \"\\u0628\\u0633\\u062a\\u0646\",\n\"Formats\": \"\\u0642\\u0627\\u0644\\u0628\\u200c\\u0628\\u0646\\u062f\\u06cc\\u200c\\u0647\\u0627\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u0645\\u0631\\u0648\\u0631\\u06af\\u0631 \\u0634\\u0645\\u0627 \\u0627\\u0632 \\u062f\\u0633\\u062a\\u0631\\u0633\\u06cc \\u0645\\u0633\\u062a\\u0642\\u06cc\\u0645 \\u0628\\u0647 \\u06a9\\u0644\\u06cc\\u067e\\u200c\\u0628\\u0648\\u0631\\u062f \\u067e\\u0634\\u062a\\u06cc\\u0628\\u0627\\u0646\\u06cc \\u0646\\u0645\\u06cc\\u200c\\u06a9\\u0646\\u062f\\u060c \\u0644\\u0637\\u0641\\u0627\\u064b \\u0627\\u0632 \\u0645\\u06cc\\u0627\\u0646\\u0628\\u0631\\u0647\\u0627\\u06cc Ctrl+X\\/C\\/V \\u0635\\u0641\\u062d\\u0647 \\u06a9\\u0644\\u06cc\\u062f \\u0627\\u0633\\u062a\\u0641\\u0627\\u062f\\u0647 \\u06a9\\u0646\\u06cc\\u062f.\",\n\"Headers\": \"\\u0633\\u0631\\u0628\\u0631\\u06af\\u200c\\u0647\\u0627\",\n\"Header 1\": \"\\u0633\\u0631\\u0628\\u0631\\u06af 1\",\n\"Header 2\": \"\\u0633\\u0631\\u0628\\u0631\\u06af 2\",\n\"Header 3\": \"\\u0633\\u0631\\u0628\\u0631\\u06af 3\",\n\"Header 4\": \"\\u0633\\u0631\\u0628\\u0631\\u06af 4\",\n\"Header 5\": \"\\u0633\\u0631\\u0628\\u0631\\u06af 5\",\n\"Header 6\": \"\\u0633\\u0631\\u0628\\u0631\\u06af 6\",\n\"Headings\": \"\\u0633\\u0631\\u0641\\u0635\\u0644\\u200c\\u0647\\u0627\",\n\"Heading 1\": \"\\u0633\\u0631\\u0641\\u0635\\u0644 1\",\n\"Heading 2\": \"\\u0633\\u0631\\u0641\\u0635\\u0644 2\",\n\"Heading 3\": \"\\u0633\\u0631\\u0641\\u0635\\u0644 3\",\n\"Heading 4\": \"\\u0633\\u0631\\u0641\\u0635\\u0644 4\",\n\"Heading 5\": \"\\u0633\\u0631\\u0641\\u0635\\u0644 5\",\n\"Heading 6\": \"\\u0633\\u0631\\u0641\\u0635\\u0644 6\",\n\"Preformatted\": \"\\u0627\\u0632 \\u067e\\u06cc\\u0634 \\u0642\\u0627\\u0644\\u0628\\u200c\\u0628\\u0646\\u062f\\u06cc\\u200c\\u0634\\u062f\\u0647\",\n\"Div\": \"\\u0628\\u062e\\u0634\",\n\"Pre\": \"\\u067e\\u06cc\\u0634\",\n\"Code\": \"\\u06a9\\u062f\",\n\"Paragraph\": \"\\u067e\\u0627\\u0631\\u0627\\u06af\\u0631\\u0627\\u0641\",\n\"Blockquote\": \"\\u0646\\u0642\\u0644 \\u0642\\u0648\\u0644 \\u0628\\u0644\\u0648\\u06a9\\u06cc\",\n\"Inline\": \"\\u0647\\u0645\\u200c\\u0631\\u0627\\u0633\\u062a\\u0627\",\n\"Blocks\": \"\\u0628\\u0644\\u0648\\u06a9\\u200c\\u0647\\u0627\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u0686\\u0633\\u0628\\u0627\\u0646\\u062f\\u0646 \\u0647\\u0645 \\u0627\\u06a9\\u0646\\u0648\\u0646 \\u062f\\u0631 \\u062d\\u0627\\u0644\\u062a \\u0645\\u062a\\u0646 \\u0633\\u0627\\u062f\\u0647 \\u0627\\u0633\\u062a. \\u062a\\u0627 \\u0632\\u0645\\u0627\\u0646\\u06cc \\u06a9\\u0647 \\u0627\\u06cc\\u0646 \\u062d\\u0627\\u0644\\u062a \\u0631\\u0627 \\u063a\\u06cc\\u0631\\u200c\\u0641\\u0639\\u0627\\u0644 \\u0646\\u06a9\\u0646\\u06cc\\u062f\\u060c \\u0645\\u062d\\u062a\\u0648\\u0627 \\u062f\\u0631 \\u062d\\u0627\\u0644\\u062a \\u0645\\u062a\\u0646 \\u0633\\u0627\\u062f\\u0647 \\u0627\\u0636\\u0627\\u0641\\u0647 \\u0645\\u06cc\\u200c\\u0634\\u0648\\u062f.\",\n\"Fonts\": \"\\u0641\\u0648\\u0646\\u062a\\u200c\\u200c\\u0647\\u0627\",\n\"Font Sizes\": \"\\u0627\\u0646\\u062f\\u0627\\u0632\\u0647\\u0654 \\u0641\\u0648\\u0646\\u062a\",\n\"Class\": \"\\u0637\\u0628\\u0642\\u0647\",\n\"Browse for an image\": \"\\u06af\\u0634\\u062a\\u0646 \\u0628\\u0631\\u0627\\u06cc \\u0639\\u06a9\\u0633 \\u0645\\u0648\\u0631\\u062f \\u0646\\u0638\\u0631\",\n\"OR\": \"OR\",\n\"Drop an image here\": \"\\u062a\\u0635\\u0648\\u06cc\\u0631 \\u0645\\u0648\\u0631\\u062f \\u0646\\u0638\\u0631 \\u0631\\u0627 \\u0627\\u06cc\\u0646\\u062c\\u0627 \\u0631\\u0647\\u0627 \\u06a9\\u0646\\u06cc\\u062f\",\n\"Upload\": \"\\u0622\\u067e\\u0644\\u0648\\u062f\",\n\"Block\": \"\\u0628\\u0644\\u0648\\u06a9\",\n\"Align\": \"\\u062a\\u0631\\u0627\\u0632\\u0628\\u0646\\u062f\\u06cc\",\n\"Default\": \"\\u067e\\u06cc\\u0634\\u0641\\u0631\\u0636\",\n\"Circle\": \"\\u062f\\u0627\\u06cc\\u0631\\u0647\",\n\"Disc\": \"\\u062f\\u06cc\\u0633\\u06a9\",\n\"Square\": \"\\u0645\\u0631\\u0628\\u0639\",\n\"Lower Alpha\": \"\\u0622\\u0644\\u0641\\u0627\\u0621 \\u06a9\\u0648\\u0686\\u06a9\",\n\"Lower Greek\": \"\\u06cc\\u0648\\u0646\\u0627\\u0646\\u06cc \\u06a9\\u0648\\u0686\\u06a9\",\n\"Lower Roman\": \"\\u0631\\u0648\\u0645\\u06cc \\u06a9\\u0648\\u0686\\u06a9\",\n\"Upper Alpha\": \"\\u0622\\u0644\\u0641\\u0627\\u0621 \\u0628\\u0632\\u0631\\u06af\",\n\"Upper Roman\": \"\\u0631\\u0648\\u0645\\u06cc \\u0628\\u0632\\u0631\\u06af\",\n\"Anchor...\": \"\\u0642\\u0644\\u0627\\u0628...\",\n\"Name\": \"\\u0646\\u0627\\u0645\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u0634\\u0645\\u0627 \\u062a\\u063a\\u06cc\\u06cc\\u0631\\u0627\\u062a \\u0630\\u062e\\u06cc\\u0631\\u0647 \\u0646\\u0634\\u062f\\u0647 \\u0627\\u06cc \\u062f\\u0627\\u0631\\u06cc\\u062f\\u060c \\u0622\\u06cc\\u0627 \\u0645\\u0637\\u0645\\u0626\\u0646\\u06cc\\u062f \\u06a9\\u0647 \\u0645\\u06cc\\u062e\\u0648\\u0627\\u0647\\u06cc\\u062f \\u0627\\u0632 \\u0627\\u06cc\\u0646 \\u0635\\u0641\\u062d\\u0647 \\u0628\\u0631\\u0648\\u06cc\\u062f\\u061f\",\n\"Restore last draft\": \"\\u0628\\u0627\\u0632\\u06af\\u0631\\u062f\\u0627\\u0646\\u062f\\u0646 \\u0622\\u062e\\u0631\\u06cc\\u0646 \\u067e\\u06cc\\u0634 \\u0646\\u0648\\u06cc\\u0633\",\n\"Special character...\": \"\\u0646\\u0648\\u06cc\\u0633\\u06c0 \\u0648\\u06cc\\u0698\\u0647...\",\n\"Source code\": \"\\u06a9\\u062f \\u0645\\u0646\\u0628\\u0639\",\n\"Insert\\/Edit code sample\": \"Insert\\/Edit code sample\",\n\"Language\": \"Language\",\n\"Code sample...\": \"\\u0646\\u0645\\u0648\\u0646\\u0647 \\u06a9\\u062f...\",\n\"Color Picker\": \"\\u0627\\u0646\\u062a\\u062e\\u0627\\u0628\\u200c\\u06a9\\u0646\\u0646\\u062f\\u0647 \\u0631\\u0646\\u06af\",\n\"R\": \"\\u0642\\u0631\\u0645\\u0632\",\n\"G\": \"\\u0633\\u0628\\u0632\",\n\"B\": \"\\u0622\\u0628\\u06cc\",\n\"Left to right\": \"\\u0686\\u067e \\u0628\\u0647 \\u0631\\u0627\\u0633\\u062a\",\n\"Right to left\": \"\\u0631\\u0627\\u0633\\u062a \\u0628\\u0647 \\u0686\\u067e\",\n\"Emoticons...\": \"\\u0635\\u0648\\u0631\\u062a\\u06a9\\u200c\\u0647\\u0627...\",\n\"Metadata and Document Properties\": \"\\u0641\\u0631\\u0627\\u062f\\u0627\\u062f\\u0647 \\u0648 \\u0645\\u0634\\u062e\\u0635\\u0627\\u062a \\u0633\\u0646\\u062f\",\n\"Title\": \"\\u0639\\u0646\\u0648\\u0627\\u0646\",\n\"Keywords\": \"\\u06a9\\u0644\\u0645\\u0627\\u062a \\u06a9\\u0644\\u06cc\\u062f\\u06cc\",\n\"Description\": \"\\u062a\\u0648\\u0636\\u06cc\\u062d\\u0627\\u062a\",\n\"Robots\": \"\\u0631\\u0628\\u0627\\u062a\\u200c\\u0647\\u0627\",\n\"Author\": \"\\u0646\\u0648\\u06cc\\u0633\\u0646\\u062f\\u0647\",\n\"Encoding\": \"\\u06a9\\u062f \\u06af\\u0630\\u0627\\u0631\\u06cc\",\n\"Fullscreen\": \"\\u062a\\u0645\\u0627\\u0645 \\u0635\\u0641\\u062d\\u0647\",\n\"Action\": \"\\u0627\\u0642\\u062f\\u0627\\u0645\",\n\"Shortcut\": \"\\u0645\\u06cc\\u0627\\u0646\\u0628\\u0631\",\n\"Help\": \"\\u0631\\u0627\\u0647\\u0646\\u0645\\u0627\",\n\"Address\": \"\\u0622\\u062f\\u0631\\u0633\",\n\"Focus to menubar\": \"\\u062a\\u0645\\u0631\\u06a9\\u0632 \\u0628\\u0631 \\u0646\\u0648\\u0627\\u0631 \\u0645\\u0646\\u0648\",\n\"Focus to toolbar\": \"\\u062a\\u0645\\u0631\\u06a9\\u0632 \\u0628\\u0631 \\u0646\\u0648\\u0627\\u0631 \\u0627\\u0628\\u0632\\u0627\\u0631\",\n\"Focus to element path\": \"\\u062a\\u0645\\u0631\\u06a9\\u0632 \\u0628\\u0631 \\u0645\\u0633\\u06cc\\u0631 \\u0627\\u0644\\u0645\\u0627\\u0646\",\n\"Focus to contextual toolbar\": \"\\u062a\\u0645\\u0631\\u06a9\\u0632 \\u0628\\u0631 \\u0646\\u0648\\u0627\\u0631 \\u0627\\u0628\\u0632\\u0627\\u0631 \\u0628\\u0627\\u0641\\u062a\\u0627\\u0631\\u06cc\",\n\"Insert link (if link plugin activated)\": \"\\u062f\\u0631\\u062c \\u067e\\u06cc\\u0648\\u0646\\u062f (\\u062f\\u0631 \\u0635\\u0648\\u0631\\u062a \\u0641\\u0639\\u0627\\u0644 \\u0628\\u0648\\u062f\\u0646 \\u0627\\u0641\\u0632\\u0648\\u0646\\u0647\\u0654 \\u067e\\u06cc\\u0648\\u0646\\u062f)\",\n\"Save (if save plugin activated)\": \"\\u0630\\u062e\\u06cc\\u0631\\u0647\\u00a0(\\u062f\\u0631 \\u0635\\u0648\\u0631\\u062a \\u0641\\u0639\\u0627\\u0644 \\u0628\\u0648\\u062f\\u0646 \\u0627\\u0641\\u0632\\u0648\\u0646\\u0647\\u0654 \\u0630\\u062e\\u06cc\\u0631\\u0647)\",\n\"Find (if searchreplace plugin activated)\": \"\\u06cc\\u0627\\u0641\\u062a\\u0646 (\\u062f\\u0631 \\u0635\\u0648\\u0631\\u062a \\u0641\\u0639\\u0627\\u0644 \\u0628\\u0648\\u062f\\u0646 \\u0627\\u0641\\u0632\\u0648\\u0646\\u0647\\u0654 \\u062c\\u0633\\u062a\\u062c\\u0648\\/\\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646\\u06cc)\",\n\"Plugins installed ({0}):\": \"\\u0627\\u0641\\u0632\\u0648\\u0646\\u0647\\u200c\\u0647\\u0627\\u06cc \\u0646\\u0635\\u0628\\u200c\\u0634\\u062f\\u0647 ({0}):\",\n\"Premium plugins:\": \"\\u0627\\u0641\\u0632\\u0648\\u0646\\u0647\\u200c\\u0647\\u0627\\u06cc \\u067e\\u0648\\u0644\\u06cc:\",\n\"Learn more...\": \"\\u06cc\\u0627\\u062f\\u06af\\u06cc\\u0631\\u06cc \\u0628\\u06cc\\u0634\\u062a\\u0631...\",\n\"You are using {0}\": \"\\u062f\\u0631 \\u062d\\u0627\\u0644 \\u0627\\u0633\\u062a\\u0641\\u0627\\u062f\\u0647 \\u0627\\u0632 {0} \\u0647\\u0633\\u062a\\u06cc\\u062f\",\n\"Plugins\": \"\\u0627\\u0641\\u0632\\u0648\\u0646\\u0647\\u200c\\u0647\\u0627\",\n\"Handy Shortcuts\": \"\\u0645\\u06cc\\u0627\\u0646\\u0628\\u0631\\u0647\\u0627\\u06cc \\u0645\\u0641\\u06cc\\u062f\",\n\"Horizontal line\": \"\\u062e\\u0637 \\u0627\\u0641\\u0642\\u06cc\",\n\"Insert\\/edit image\": \"\\u0627\\u0636\\u0627\\u0641\\u0647\\/\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634 \\u06a9\\u0631\\u062f\\u0646 \\u062a\\u0635\\u0648\\u06cc\\u0631\",\n\"Image description\": \"\\u062a\\u0648\\u0636\\u06cc\\u062d\\u0627\\u062a \\u0639\\u06a9\\u0633\",\n\"Source\": \"\\u0645\\u0646\\u0628\\u0639\",\n\"Dimensions\": \"\\u0627\\u0628\\u0639\\u0627\\u062f\",\n\"Constrain proportions\": \"\\u062d\\u0641\\u0638 \\u062a\\u0646\\u0627\\u0633\\u0628\",\n\"General\": \"\\u0639\\u0645\\u0648\\u0645\\u06cc\",\n\"Advanced\": \"\\u067e\\u06cc\\u0634\\u0631\\u0641\\u062a\\u0647\",\n\"Style\": \"\\u0633\\u0628\\u06a9\",\n\"Vertical space\": \"\\u0641\\u0636\\u0627\\u06cc \\u0639\\u0645\\u0648\\u062f\\u06cc\",\n\"Horizontal space\": \"\\u0641\\u0636\\u0627\\u06cc \\u0627\\u0641\\u0642\\u06cc\",\n\"Border\": \"\\u062d\\u0627\\u0634\\u06cc\\u0647\",\n\"Insert image\": \"\\u0627\\u0636\\u0627\\u0641\\u0647 \\u06a9\\u0631\\u062f\\u0646 \\u062a\\u0635\\u0648\\u06cc\\u0631\",\n\"Image...\": \"\\u062a\\u0635\\u0648\\u06cc\\u0631...\",\n\"Image list\": \"\\u0641\\u0647\\u0631\\u0633\\u062a \\u062a\\u0635\\u0648\\u06cc\\u0631\",\n\"Rotate counterclockwise\": \"Rotate counterclockwise\",\n\"Rotate clockwise\": \"Rotate clockwise\",\n\"Flip vertically\": \"Flip vertically\",\n\"Flip horizontally\": \"Flip horizontally\",\n\"Edit image\": \"Edit image\",\n\"Image options\": \"Image options\",\n\"Zoom in\": \"Zoom in\",\n\"Zoom out\": \"Zoom out\",\n\"Crop\": \"Crop\",\n\"Resize\": \"Resize\",\n\"Orientation\": \"Orientation\",\n\"Brightness\": \"Brightness\",\n\"Sharpen\": \"Sharpen\",\n\"Contrast\": \"Contrast\",\n\"Color levels\": \"Color levels\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Invert\",\n\"Apply\": \"Apply\",\n\"Back\": \"Back\",\n\"Insert date\\/time\": \"\\u0627\\u0636\\u0627\\u0641\\u0647 \\u06a9\\u0631\\u062f\\u0646 \\u062a\\u0627\\u0631\\u06cc\\u062e\\/\\u0632\\u0645\\u0627\\u0646\",\n\"Date\\/time\": \"Date\\/time\",\n\"Insert\\/Edit Link\": \"\\u062f\\u0631\\u062c\\/\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634 \\u067e\\u06cc\\u0648\\u0646\\u062f\",\n\"Insert\\/edit link\": \"\\u0627\\u0636\\u0627\\u0641\\u0647\\/\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634 \\u06a9\\u0631\\u062f\\u0646 \\u0644\\u06cc\\u0646\\u06a9\",\n\"Text to display\": \"\\u0645\\u062a\\u0646 \\u0628\\u0631\\u0627\\u06cc \\u0646\\u0645\\u0627\\u06cc\\u0634\",\n\"Url\": \"\\u0627\\u062f\\u0631\\u0633 \\u0644\\u06cc\\u0646\\u06a9\",\n\"Open link in...\": \"\\u0628\\u0627\\u0632 \\u06a9\\u0631\\u062f\\u0646 \\u067e\\u06cc\\u0648\\u0646\\u062f \\u062f\\u0631...\",\n\"Current window\": \"\\u067e\\u0646\\u062c\\u0631\\u0647 \\u062c\\u0627\\u0631\\u06cc\",\n\"None\": \"\\u0647\\u06cc\\u0686 \\u06a9\\u062f\\u0627\\u0645\",\n\"New window\": \"\\u067e\\u0646\\u062c\\u0631\\u0647 \\u062c\\u062f\\u06cc\\u062f\",\n\"Remove link\": \"\\u062d\\u0630\\u0641 \\u0644\\u06cc\\u0646\\u06a9\",\n\"Anchors\": \"\\u0644\\u0646\\u06af\\u0631 - \\u0644\\u06cc\\u0646\\u06a9 \\u062f\\u0627\\u062e\\u0644 \\u0635\\u0641\\u062d\\u0647\",\n\"Link...\": \"\\u067e\\u06cc\\u0648\\u0646\\u062f...\",\n\"Paste or type a link\": \"Paste or type a link\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\",\n\"Link list\": \"\\u0641\\u0647\\u0631\\u0633\\u062a \\u067e\\u06cc\\u0648\\u0646\\u062f\\u0647\\u0627\",\n\"Insert video\": \"\\u0627\\u0636\\u0627\\u0641\\u0647 \\u06a9\\u0631\\u062f\\u0646 \\u0641\\u0627\\u06cc\\u0644 \\u062a\\u0635\\u0648\\u06cc\\u0631\\u06cc\",\n\"Insert\\/edit video\": \"\\u0627\\u0636\\u0627\\u0641\\u0647\\/\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634 \\u06a9\\u0631\\u062f\\u0646 \\u0641\\u0627\\u06cc\\u0644 \\u062a\\u0635\\u0648\\u06cc\\u0631\\u06cc\",\n\"Insert\\/edit media\": \"Insert\\/edit media\",\n\"Alternative source\": \"\\u0645\\u0646\\u0628\\u0639 \\u062f\\u06cc\\u06af\\u0631\",\n\"Alternative source URL\": \"\\u0646\\u0634\\u0627\\u0646\\u06cc \\u0648\\u0628 \\u0645\\u0646\\u0628\\u0639 \\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646\",\n\"Media poster (Image URL)\": \"\\u067e\\u0648\\u0633\\u062a\\u0631 \\u0631\\u0633\\u0627\\u0646\\u0647 (\\u0646\\u0634\\u0627\\u0646\\u06cc \\u0648\\u0628 \\u062a\\u0635\\u0648\\u06cc\\u0631)\",\n\"Paste your embed code below:\": \"\\u06a9\\u062f \\u062e\\u0648\\u062f \\u0631\\u0627 \\u0628\\u0631\\u0627\\u06cc \\u062c\\u0627 \\u062f\\u0627\\u062f\\u0646 \\u062f\\u0631 \\u0633\\u0627\\u06cc\\u062a - embed - \\u060c \\u062f\\u0631 \\u0632\\u06cc\\u0631 \\u0642\\u0631\\u0627\\u0631 \\u062f\\u0647\\u06cc\\u062f:\",\n\"Embed\": \"\\u062c\\u0627 \\u062f\\u0627\\u062f\\u0646\",\n\"Media...\": \"\\u0631\\u0633\\u0627\\u0646\\u0647...\",\n\"Nonbreaking space\": \"\\u0641\\u0636\\u0627\\u06cc \\u063a\\u06cc\\u0631 \\u0634\\u06a9\\u0633\\u062a\\u0646\",\n\"Page break\": \"\\u0634\\u06a9\\u0633\\u062a\\u0646 \\u0635\\u0641\\u062d\\u0647\",\n\"Paste as text\": \"\\u0686\\u0633\\u0628\\u0627\\u0646\\u062f\\u0646 \\u0628\\u0647 \\u0639\\u0646\\u0648\\u0627\\u0646 \\u0645\\u062a\\u0646\",\n\"Preview\": \"\\u067e\\u06cc\\u0634 \\u0646\\u0645\\u0627\\u06cc\\u0634\",\n\"Print...\": \"\\u0686\\u0627\\u067e...\",\n\"Save\": \"\\u0630\\u062e\\u06cc\\u0631\\u0647\",\n\"Find\": \"\\u062c\\u0633\\u062a\\u200c\\u0648\\u200c\\u062c\\u0648\",\n\"Replace with\": \"\\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646 \\u06a9\\u0631\\u062f\\u0646 \\u0628\\u0627\",\n\"Replace\": \"\\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646 \\u06a9\\u0631\\u062f\\u0646\",\n\"Replace all\": \"\\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646 \\u06a9\\u0631\\u062f\\u0646 \\u0647\\u0645\\u0647\",\n\"Previous\": \"\\u0642\\u0628\\u0644\\u06cc\",\n\"Next\": \"\\u0628\\u0639\\u062f\\u06cc\",\n\"Find and replace...\": \"\\u06cc\\u0627\\u0641\\u062a\\u0646 \\u0648 \\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646 \\u06a9\\u0631\\u062f\\u0646...\",\n\"Could not find the specified string.\": \"\\u0631\\u0634\\u062a\\u0647 \\u0645\\u062a\\u0646\\u06cc \\u0645\\u0648\\u0631\\u062f \\u0646\\u0638\\u0631 \\u067e\\u06cc\\u062f\\u0627 \\u0646\\u0634\\u062f.\",\n\"Match case\": \"\\u062d\\u0633\\u0627\\u0633 \\u0628\\u0647 \\u062d\\u0631\\u0648\\u0641 \\u06a9\\u0648\\u0686\\u06a9 \\u0648 \\u0628\\u0632\\u0631\\u06af\",\n\"Find whole words only\": \"\\u06cc\\u0627\\u0641\\u062a\\u0646 \\u062f\\u0642\\u06cc\\u0642\\u0627\\u064b \\u06a9\\u0644 \\u0648\\u0627\\u0698\\u0647\",\n\"Spell check\": \"\\u0628\\u0631\\u0631\\u0633\\u06cc \\u0627\\u0645\\u0644\\u0627\",\n\"Ignore\": \"\\u0646\\u0627\\u062f\\u06cc\\u062f\\u0647 \\u06af\\u0631\\u0641\\u062a\\u0646\",\n\"Ignore all\": \"\\u0646\\u0627\\u062f\\u06cc\\u062f\\u0647 \\u06af\\u0631\\u0641\\u062a\\u0646 \\u0647\\u0645\\u0647\",\n\"Finish\": \"\\u067e\\u0627\\u06cc\\u0627\\u0646\",\n\"Add to Dictionary\": \"Add to Dictionary\",\n\"Insert table\": \"\\u0627\\u0636\\u0627\\u0641\\u0647 \\u06a9\\u0631\\u062f\\u0646 \\u062c\\u062f\\u0648\\u0644\",\n\"Table properties\": \"\\u0648\\u06cc\\u0698\\u06af\\u06cc\\u200c\\u0647\\u0627\\u06cc \\u062c\\u062f\\u0648\\u0644\",\n\"Delete table\": \"\\u062d\\u0630\\u0641 \\u062c\\u062f\\u0648\\u0644\",\n\"Cell\": \"\\u0633\\u0644\\u0648\\u0644\",\n\"Row\": \"\\u0633\\u0637\\u0631\",\n\"Column\": \"\\u0633\\u062a\\u0648\\u0646\",\n\"Cell properties\": \"\\u0648\\u06cc\\u0698\\u06af\\u06cc\\u200c\\u0647\\u0627\\u06cc \\u0633\\u0644\\u0648\\u0644\",\n\"Merge cells\": \"\\u0627\\u062f\\u063a\\u0627\\u0645 \\u0633\\u0644\\u0648\\u0644\\u200c\\u0647\\u0627\",\n\"Split cell\": \"\\u062a\\u0642\\u0633\\u06cc\\u0645 \\u0633\\u0644\\u0648\\u0644 \\u062c\\u062f\\u0648\\u0644\",\n\"Insert row before\": \"\\u0627\\u0636\\u0627\\u0641\\u0647 \\u06a9\\u0631\\u062f\\u0646 \\u0633\\u0637\\u0631 \\u062c\\u062f\\u06cc\\u062f \\u0642\\u0628\\u0644 \\u0627\\u0632 \\u0627\\u06cc\\u0646 \\u0633\\u0637\\u0631\",\n\"Insert row after\": \"\\u0627\\u0636\\u0627\\u0641\\u0647 \\u06a9\\u0631\\u062f\\u0646 \\u0633\\u0637\\u0631 \\u062c\\u062f\\u06cc\\u062f \\u0628\\u0639\\u062f \\u0627\\u0632 \\u0627\\u06cc\\u0646 \\u0633\\u0637\\u0631\",\n\"Delete row\": \"\\u062d\\u0630\\u0641 \\u0633\\u0637\\u0631\",\n\"Row properties\": \"\\u0648\\u06cc\\u0698\\u06af\\u06cc\\u200c\\u0647\\u0627\\u06cc \\u0633\\u0637\\u0631\",\n\"Cut row\": \"\\u0628\\u0631\\u0634 \\u0633\\u0637\\u0631\",\n\"Copy row\": \"\\u06a9\\u067e\\u06cc \\u0633\\u0637\\u0631\",\n\"Paste row before\": \"\\u0686\\u0633\\u0628\\u0627\\u0646\\u062f\\u0646 \\u0633\\u0637\\u0631\\u060c \\u0642\\u0628\\u0644 \\u0627\\u0632 \\u0627\\u06cc\\u0646 \\u0633\\u0637\\u0631\",\n\"Paste row after\": \"\\u0686\\u0633\\u0628\\u0627\\u0646\\u062f\\u0646 \\u0633\\u0637\\u0631\\u060c \\u0628\\u0639\\u062f \\u0627\\u0632 \\u0627\\u06cc\\u0646 \\u0633\\u0637\\u0631\",\n\"Insert column before\": \"\\u0627\\u0636\\u0627\\u0641\\u0647 \\u06a9\\u0631\\u062f\\u0646 \\u0633\\u062a\\u0648\\u0646 \\u062c\\u062f\\u06cc\\u062f \\u0642\\u0628\\u0644 \\u0627\\u0632 \\u0627\\u06cc\\u0646 \\u0633\\u062a\\u0648\\u0646\",\n\"Insert column after\": \"\\u0627\\u0636\\u0627\\u0641\\u0647 \\u06a9\\u0631\\u062f\\u0646 \\u0633\\u062a\\u0648\\u0646 \\u062c\\u062f\\u06cc\\u062f \\u0628\\u0639\\u062f \\u0627\\u0632 \\u0627\\u06cc\\u0646 \\u0633\\u062a\\u0648\\u0646\",\n\"Delete column\": \"\\u062d\\u0630\\u0641 \\u0633\\u062a\\u0648\\u0646\",\n\"Cols\": \"\\u062a\\u0639\\u062f\\u0627\\u062f \\u0633\\u062a\\u0648\\u0646\\u200c\\u0647\\u0627\",\n\"Rows\": \"\\u062a\\u0639\\u062f\\u0627\\u062f \\u0633\\u0637\\u0631\\u200c\\u0647\\u0627\",\n\"Width\": \"\\u0639\\u0631\\u0636\",\n\"Height\": \"\\u0627\\u0631\\u062a\\u0641\\u0627\\u0639\",\n\"Cell spacing\": \"\\u0641\\u0627\\u0635\\u0644\\u0647\\u200c\\u06cc \\u0628\\u06cc\\u0646 \\u0633\\u0644\\u0648\\u0644 \\u0647\\u0627\",\n\"Cell padding\": \"\\u062d\\u0627\\u0634\\u06cc\\u0647 \\u0633\\u0644\\u0648\\u0644 \\u0647\\u0627\",\n\"Show caption\": \"\\u0646\\u0645\\u0627\\u06cc\\u0634 \\u0639\\u0646\\u0648\\u0627\\u0646\",\n\"Left\": \"\\u0686\\u067e\",\n\"Center\": \"\\u0648\\u0633\\u0637\",\n\"Right\": \"\\u0631\\u0627\\u0633\\u062a\",\n\"Cell type\": \"\\u0646\\u0648\\u0639 \\u0633\\u0644\\u0648\\u0644\",\n\"Scope\": \"\\u0645\\u062d\\u062f\\u0648\\u062f\\u0647\\u200c\\u06cc \\u0639\\u0646\\u0648\\u0627\\u0646\",\n\"Alignment\": \"\\u0631\\u062f\\u06cc\\u0641 \\u0628\\u0646\\u062f\\u06cc \\u0646\\u0648\\u0634\\u062a\\u0647\",\n\"H Align\": \"H Align\",\n\"V Align\": \"V Align\",\n\"Top\": \"Top\",\n\"Middle\": \"Middle\",\n\"Bottom\": \"Bottom\",\n\"Header cell\": \"\\u0633\\u0631\\u0622\\u06cc\\u0646\\u062f \\u0633\\u0644\\u0648\\u0644\",\n\"Row group\": \"\\u06af\\u0631\\u0648\\u0647 \\u0633\\u0637\\u0631\",\n\"Column group\": \"\\u06af\\u0631\\u0648\\u0647 \\u0633\\u062a\\u0648\\u0646\",\n\"Row type\": \"\\u0646\\u0648\\u0639 \\u0633\\u0637\\u0631\",\n\"Header\": \"\\u0633\\u0631\\u0622\\u06cc\\u0646\\u062f\",\n\"Body\": \"\\u0628\\u062f\\u0646\\u0647\",\n\"Footer\": \"\\u067e\\u0627\\u0646\\u0648\\u06cc\\u0633\",\n\"Border color\": \"Border color\",\n\"Insert template...\": \"\\u062f\\u0631\\u062c \\u0627\\u0644\\u06af\\u0648...\",\n\"Templates\": \"\\u0627\\u0644\\u06af\\u0648\\u200c\\u0647\\u0627\",\n\"Template\": \"\\u0627\\u0644\\u06af\\u0648\",\n\"Text color\": \"\\u0631\\u0646\\u06af \\u0645\\u062a\\u0646\",\n\"Background color\": \"\\u0631\\u0646\\u06af \\u0632\\u0645\\u06cc\\u0646\\u0647 \\u0645\\u062a\\u0646\",\n\"Custom...\": \"Custom...\",\n\"Custom color\": \"Custom color\",\n\"No color\": \"No color\",\n\"Remove color\": \"\\u062d\\u0630\\u0641 \\u0631\\u0646\\u06af\",\n\"Table of Contents\": \"Table of Contents\",\n\"Show blocks\": \"\\u0646\\u0645\\u0627\\u06cc\\u0634 \\u0628\\u062e\\u0634\\u200c\\u0647\\u0627\",\n\"Show invisible characters\": \"\\u0646\\u0645\\u0627\\u06cc\\u0634 \\u06a9\\u0627\\u0631\\u0627\\u06a9\\u062a\\u0631\\u0647\\u0627\\u06cc \\u063a\\u06cc\\u0631 \\u0642\\u0627\\u0628\\u0644 \\u0686\\u0627\\u067e\",\n\"Word count\": \"\\u062a\\u0639\\u062f\\u0627\\u062f \\u0648\\u0627\\u0698\\u0647\\u200c\\u0647\\u0627\",\n\"Count\": \"\\u0634\\u0645\\u0627\\u0631\\u0634\",\n\"Document\": \"\\u0633\\u0646\\u062f\",\n\"Selection\": \"\\u0627\\u0646\\u062a\\u062e\\u0627\\u0628\",\n\"Words\": \"\\u06a9\\u0644\\u0645\\u0627\\u062a\",\n\"Words: {0}\": \"\\u06a9\\u0644\\u0645\\u0627\\u062a : {0}\",\n\"{0} words\": \"{0} \\u0648\\u0627\\u0698\\u0647\",\n\"File\": \"\\u067e\\u0631\\u0648\\u0646\\u062f\\u0647\",\n\"Edit\": \"\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634\",\n\"Insert\": \"\\u0627\\u0636\\u0627\\u0641\\u0647 \\u06a9\\u0631\\u062f\\u0646\",\n\"View\": \"\\u0646\\u0645\\u0627\\u06cc\\u0634\",\n\"Format\": \"\\u0642\\u0627\\u0644\\u0628\",\n\"Table\": \"\\u062c\\u062f\\u0648\\u0644\",\n\"Tools\": \"\\u0627\\u0628\\u0632\\u0627\\u0631\\u0647\\u0627\",\n\"Powered by {0}\": \"\\u0642\\u0648\\u062a\\u200c\\u06af\\u0631\\u0641\\u062a\\u0647 \\u0627\\u0632 {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634\\u06af\\u0631 \\u067e\\u06cc\\u0634\\u0631\\u0641\\u062a\\u0647\\u200c\\u06cc \\u0645\\u062a\\u0646. \\u0628\\u0631\\u0627\\u06cc \\u062f\\u0633\\u062a\\u0631\\u0633\\u06cc \\u0628\\u0647 \\u0645\\u0646\\u0648 \\u06a9\\u0644\\u06cc\\u062f\\u0647\\u0627\\u06cc ALT-F9\\u060c \\u0646\\u0648\\u0627\\u0631 \\u0627\\u0628\\u0632\\u0627\\u0631 ALT-F10 \\u0648 \\u0628\\u0631\\u0627\\u06cc \\u0645\\u0634\\u0627\\u0647\\u062f\\u0647\\u200c\\u06cc \\u0631\\u0627\\u0647\\u0646\\u0645\\u0627 ALT-0 \\u0631\\u0627 \\u0641\\u0634\\u0627\\u0631 \\u062f\\u0647\\u06cc\\u062f.\",\n\"Image title\": \"\\u0639\\u0646\\u0648\\u0627\\u0646 \\u062a\\u0635\\u0648\\u06cc\\u0631\",\n\"Border width\": \"\\u0639\\u0631\\u0636 \\u062d\\u0627\\u0634\\u06cc\\u0647\",\n\"Border style\": \"\\u0633\\u0628\\u06a9 \\u062d\\u0627\\u0634\\u06cc\\u0647\",\n\"Error\": \"\\u062e\\u0637\\u0627\",\n\"Warn\": \"\\u0647\\u0634\\u062f\\u0627\\u0631\",\n\"Valid\": \"\\u0645\\u0639\\u062a\\u0628\\u0631\",\n\"To open the popup, press Shift+Enter\": \"\\u062c\\u0647\\u062a \\u0628\\u0627\\u0632 \\u06a9\\u0631\\u062f\\u0646 \\u067e\\u0646\\u062c\\u0631\\u0647 \\u0628\\u0627\\u0632\\u0634\\u0648\\u060c \\u06a9\\u0644\\u06cc\\u062f\\u0647\\u0627\\u06cc Shift + Enter \\u0631\\u0627 \\u0641\\u0634\\u0627\\u0631 \\u062f\\u0647\\u06cc\\u062f.\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u0646\\u0627\\u062d\\u06cc\\u0647 \\u0645\\u062a\\u0646 \\u063a\\u0646\\u06cc. \\u062c\\u0647\\u062a \\u0645\\u0634\\u0627\\u0647\\u062f\\u0647\\u0654 \\u0631\\u0627\\u0647\\u0646\\u0645\\u0627 \\u06a9\\u0644\\u06cc\\u062f\\u0647\\u0627\\u06cc ALT + 0 \\u0631\\u0627 \\u0641\\u0634\\u0627\\u0631 \\u062f\\u0647\\u06cc\\u062f.\",\n\"System Font\": \"\\u0641\\u0648\\u0646\\u062a \\u0633\\u06cc\\u0633\\u062a\\u0645\\u06cc\",\n\"Failed to upload image: {0}\": \"\\u0639\\u062f\\u0645 \\u0645\\u0648\\u0641\\u0642\\u06cc\\u062a \\u062f\\u0631 \\u0628\\u0627\\u0631\\u06af\\u0630\\u0627\\u0631\\u06cc \\u062a\\u0635\\u0648\\u06cc\\u0631: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u0639\\u062f\\u0645 \\u0645\\u0648\\u0641\\u0642\\u06cc\\u062a \\u062f\\u0631 \\u0628\\u0627\\u0631\\u06af\\u0630\\u0627\\u0631\\u06cc \\u0627\\u0641\\u0632\\u0648\\u0646\\u0647: {0} \\u0627\\u0632 \\u0646\\u0634\\u0627\\u0646\\u06cc \\u0648\\u0628 {1}\",\n\"Failed to load plugin url: {0}\": \"\\u0639\\u062f\\u0645 \\u0645\\u0648\\u0641\\u0642\\u06cc\\u062a \\u062f\\u0631 \\u0628\\u0627\\u0631\\u06af\\u0630\\u0627\\u0631\\u06cc \\u0646\\u0634\\u0627\\u0646\\u06cc \\u0648\\u0628 \\u0627\\u0641\\u0632\\u0648\\u0646\\u0647: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u0639\\u062f\\u0645 \\u0645\\u0648\\u0641\\u0642\\u06cc\\u062a \\u062f\\u0631 \\u0631\\u0627\\u0647\\u200c\\u0627\\u0646\\u062f\\u0627\\u0632\\u06cc \\u0627\\u0641\\u0632\\u0648\\u0646\\u0647: {0}\",\n\"example\": \"\\u0645\\u062b\\u0627\\u0644\",\n\"Search\": \"\\u062c\\u0633\\u062a\\u062c\\u0648\",\n\"All\": \"\\u0647\\u0645\\u0647\",\n\"Currency\": \"\\u0627\\u0631\\u0632\",\n\"Text\": \"\\u0645\\u062a\\u0646\",\n\"Quotations\": \"\\u0646\\u0642\\u0644\\u200c\\u0642\\u0648\\u0644\\u200c\\u0647\\u0627\",\n\"Mathematical\": \"\\u0631\\u06cc\\u0627\\u0636\\u06cc\",\n\"Extended Latin\": \"\\u0644\\u0627\\u062a\\u06cc\\u0646 \\u06af\\u0633\\u062a\\u0631\\u062f\\u0647\",\n\"Symbols\": \"\\u0646\\u0645\\u0627\\u062f\\u0647\\u0627\",\n\"Arrows\": \"\\u067e\\u06cc\\u06a9\\u0627\\u0646\\u200c\\u0647\\u0627\",\n\"User Defined\": \"\\u0628\\u0647 \\u062e\\u0648\\u0627\\u0633\\u062a \\u06a9\\u0627\\u0631\\u0628\\u0631\",\n\"dollar sign\": \"\\u0646\\u0645\\u0627\\u062f \\u062f\\u0644\\u0627\\u0631\",\n\"currency sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0627\\u0631\\u0632\",\n\"euro-currency sign\": \"\\u0646\\u0645\\u0627\\u062f \\u06cc\\u0648\\u0631\\u0648\",\n\"colon sign\": \"\\u0646\\u0645\\u0627\\u062f \\u062f\\u0648\\u0646\\u0642\\u0637\\u0647\",\n\"cruzeiro sign\": \"\\u0646\\u0645\\u0627\\u062f \\u06a9\\u0631\\u0648\\u0632\\u06cc\\u0631\\u0648\",\n\"french franc sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0641\\u0631\\u0627\\u0646\\u06a9 \\u0641\\u0631\\u0627\\u0646\\u0633\\u0647\",\n\"lira sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0644\\u06cc\\u0631\\u0647\",\n\"mill sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0645\\u06cc\\u0644\",\n\"naira sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0646\\u0627\\u06cc\\u0631\\u0627\",\n\"peseta sign\": \"\\u0646\\u0645\\u0627\\u062f \\u067e\\u0632\\u062a\\u0627\",\n\"rupee sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0631\\u0648\\u067e\\u06cc\\u0647\",\n\"won sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0648\\u0648\\u0646\",\n\"new sheqel sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0634\\u06a9\\u0644 \\u062c\\u062f\\u06cc\\u062f\",\n\"dong sign\": \"\\u0646\\u0645\\u0627\\u062f \\u062f\\u0627\\u0646\\u06af\",\n\"kip sign\": \"\\u0646\\u0645\\u0627\\u062f \\u06a9\\u06cc\\u067e\",\n\"tugrik sign\": \"\\u0646\\u0645\\u0627\\u062f \\u062a\\u0648\\u06af\\u0631\\u0648\\u06af\",\n\"drachma sign\": \"\\u0646\\u0645\\u0627\\u062f \\u062f\\u0631\\u0627\\u062e\\u0645\\u0627\",\n\"german penny symbol\": \"\\u0646\\u0645\\u0627\\u062f \\u067e\\u0646\\u06cc \\u0622\\u0644\\u0645\\u0627\\u0646\\u06cc\",\n\"peso sign\": \"\\u0646\\u0645\\u0627\\u062f \\u067e\\u0632\\u0648\",\n\"guarani sign\": \"\\u0646\\u0645\\u0627\\u062f \\u06af\\u0648\\u0627\\u0631\\u0627\\u0646\\u06cc\",\n\"austral sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0622\\u0633\\u062a\\u0631\\u0627\\u0644\",\n\"hryvnia sign\": \"\\u0646\\u0645\\u0627\\u062f \\u06af\\u0631\\u06cc\\u0648\\u0646\\u0627\",\n\"cedi sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0633\\u062f\\u06cc\",\n\"livre tournois sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0644\\u06cc\\u0648\\u0631\\u0647 \\u062a\\u0648\\u0631\\u0646\\u0648\\u0627\",\n\"spesmilo sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0627\\u0633\\u067e\\u0633\\u0645\\u06cc\\u0644\\u0648\",\n\"tenge sign\": \"\\u0646\\u0645\\u0627\\u062f \\u062a\\u0646\\u06af\\u0647\",\n\"indian rupee sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0631\\u0648\\u067e\\u06cc\\u0647 \\u0647\\u0646\\u062f\\u06cc\",\n\"turkish lira sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0644\\u06cc\\u0631\\u0647 \\u062a\\u0631\\u06a9\\u06cc\",\n\"nordic mark sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0645\\u0627\\u0631\\u06a9 \\u0646\\u0631\\u0648\\u0698\",\n\"manat sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0645\\u0646\\u0627\\u062a\",\n\"ruble sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0631\\u0648\\u0628\\u0644\",\n\"yen character\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647 \\u06cc\\u0646\",\n\"yuan character\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647 \\u06cc\\u0648\\u0627\\u0646\",\n\"yuan character, in hong kong and taiwan\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647 \\u06cc\\u0648\\u0627\\u0646\\u060c \\u062f\\u0631 \\u0647\\u0646\\u06af\\u200c\\u06a9\\u0646\\u06af \\u0648 \\u062a\\u0627\\u06cc\\u0648\\u0627\\u0646\",\n\"yen\\/yuan character variant one\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647 \\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646 \\u06cc\\u0646\\/\\u06cc\\u0648\\u0627\\u0646\",\n\"Loading emoticons...\": \"\\u062f\\u0631 \\u062d\\u0627\\u0644 \\u0628\\u0627\\u0631\\u06af\\u0630\\u0627\\u0631\\u06cc \\u0634\\u06a9\\u0644\\u06a9\\u200c\\u0647\\u0627...\",\n\"Could not load emoticons\": \"\\u0634\\u06a9\\u0644\\u06a9\\u200c\\u0647\\u0627 \\u0628\\u0627\\u0631\\u06af\\u0630\\u0627\\u0631\\u06cc \\u0646\\u0634\\u062f\\u0646\\u062f\",\n\"People\": \"\\u0627\\u0641\\u0631\\u0627\\u062f\",\n\"Animals and Nature\": \"\\u062d\\u06cc\\u0648\\u0627\\u0646\\u0627\\u062a \\u0648 \\u0637\\u0628\\u06cc\\u0639\\u062a\",\n\"Food and Drink\": \"\\u063a\\u0630\\u0627 \\u0648 \\u0646\\u0648\\u0634\\u06cc\\u062f\\u0646\\u06cc\",\n\"Activity\": \"\\u0641\\u0639\\u0627\\u0644\\u06cc\\u062a\",\n\"Travel and Places\": \"\\u0633\\u0641\\u0631 \\u0648 \\u0627\\u0645\\u0627\\u06a9\\u0646\",\n\"Objects\": \"\\u0627\\u0634\\u06cc\\u0627\",\n\"Flags\": \"\\u067e\\u0631\\u0686\\u0645\\u200c\\u0647\\u0627\",\n\"Characters\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647\\u200c\\u0647\\u0627\",\n\"Characters (no spaces)\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647 \\u0647\\u0627 (\\u0628\\u062f\\u0648\\u0646 \\u0641\\u0627\\u0635\\u0644\\u0647)\",\n\"{0} characters\": \"{0} \\u06a9\\u0627\\u0631\\u0627\\u06a9\\u062a\\u0631\",\n\"Error: Form submit field collision.\": \"\\u062e\\u0637\\u0627: \\u062a\\u062f\\u0627\\u062e\\u0644 \\u062f\\u0631 \\u062b\\u0628\\u062a \\u0641\\u0631\\u0645.\",\n\"Error: No form element found.\": \"\\u062e\\u0637\\u0627: \\u0647\\u06cc\\u0686 \\u0627\\u0644\\u0645\\u0627\\u0646 \\u0641\\u0631\\u0645\\u06cc \\u06cc\\u0627\\u0641\\u062a \\u0646\\u0634\\u062f.\",\n\"Update\": \"\\u0628\\u0647\\u200c\\u0631\\u0648\\u0632\\u0631\\u0633\\u0627\\u0646\\u06cc\",\n\"Color swatch\": \"\\u0646\\u0645\\u0648\\u0646\\u0647 \\u0631\\u0646\\u06af\",\n\"Turquoise\": \"\\u0641\\u06cc\\u0631\\u0648\\u0632\\u0647\\u200c\\u0627\\u06cc\",\n\"Green\": \"\\u0633\\u0628\\u0632\",\n\"Blue\": \"\\u0622\\u0628\\u06cc\",\n\"Purple\": \"\\u0628\\u0646\\u0641\\u0634\",\n\"Navy Blue\": \"\\u0633\\u0631\\u0645\\u0647\\u200c\\u0627\\u06cc\",\n\"Dark Turquoise\": \"\\u0641\\u06cc\\u0631\\u0648\\u0632\\u0647\\u200c\\u0627\\u06cc \\u062a\\u06cc\\u0631\\u0647\",\n\"Dark Green\": \"\\u0633\\u0628\\u0632 \\u062a\\u06cc\\u0631\\u0647\",\n\"Medium Blue\": \"\\u0622\\u0628\\u06cc \\u0633\\u06cc\\u0631\",\n\"Medium Purple\": \"\\u0622\\u0628\\u06cc \\u0628\\u0646\\u0641\\u0634\",\n\"Midnight Blue\": \"\\u0622\\u0628\\u06cc \\u0646\\u0641\\u062a\\u06cc\",\n\"Yellow\": \"\\u0632\\u0631\\u062f\",\n\"Orange\": \"\\u0646\\u0627\\u0631\\u0646\\u062c\\u06cc\",\n\"Red\": \"\\u0642\\u0631\\u0645\\u0632\",\n\"Light Gray\": \"\\u062e\\u0627\\u06a9\\u0633\\u062a\\u0631\\u06cc \\u0631\\u0648\\u0634\\u0646\",\n\"Gray\": \"\\u062e\\u0627\\u06a9\\u0633\\u062a\\u0631\\u06cc\",\n\"Dark Yellow\": \"\\u0632\\u0631\\u062f \\u062a\\u06cc\\u0631\\u0647\",\n\"Dark Orange\": \"\\u0646\\u0627\\u0631\\u0646\\u062c\\u06cc \\u062a\\u06cc\\u0631\\u0647\",\n\"Dark Red\": \"\\u0642\\u0631\\u0645\\u0632 \\u062a\\u06cc\\u0631\\u0647\",\n\"Medium Gray\": \"\\u062e\\u0627\\u06a9\\u0633\\u062a\\u0631\\u06cc \\u0646\\u06cc\\u0645\\u0647\\u200c\\u0631\\u0648\\u0634\\u0646\",\n\"Dark Gray\": \"\\u062e\\u0627\\u06a9\\u0633\\u062a\\u0631\\u06cc \\u062a\\u06cc\\u0631\\u0647\",\n\"Light Green\": \"\\u0633\\u0628\\u0632 \\u0631\\u0648\\u0634\\u0646\",\n\"Light Yellow\": \"\\u0632\\u0631\\u062f \\u0631\\u0648\\u0634\\u0646\",\n\"Light Red\": \"\\u0642\\u0631\\u0645\\u0632 \\u0631\\u0648\\u0634\\u0646\",\n\"Light Purple\": \"\\u0628\\u0646\\u0641\\u0634 \\u0631\\u0648\\u0634\\u0646\",\n\"Light Blue\": \"\\u0622\\u0628\\u06cc \\u0631\\u0648\\u0634\\u0646\",\n\"Dark Purple\": \"\\u0628\\u0646\\u0641\\u0634 \\u062a\\u06cc\\u0631\\u0647\",\n\"Dark Blue\": \"\\u0622\\u0628\\u06cc \\u062a\\u06cc\\u0631\\u0647\",\n\"Black\": \"\\u0633\\u06cc\\u0627\\u0647\",\n\"White\": \"\\u0633\\u0641\\u06cc\\u062f\",\n\"Switch to or from fullscreen mode\": \"\\u062a\\u063a\\u06cc\\u06cc\\u0631 \\u0627\\u0632 \\u062d\\u0627\\u0644\\u062a \\u062a\\u0645\\u0627\\u0645\\u200c\\u0635\\u0641\\u062d\\u0647 \\u06cc\\u0627 \\u0628\\u0647 \\u062d\\u0627\\u0644\\u062a \\u062a\\u0645\\u0627\\u0645\\u200c\\u0635\\u0641\\u062d\\u0647\",\n\"Open help dialog\": \"\\u0628\\u0627\\u0632 \\u06a9\\u0631\\u062f\\u0646 \\u06a9\\u0627\\u062f\\u0631 \\u0631\\u0627\\u0647\\u0646\\u0645\\u0627\",\n\"history\": \"\\u062a\\u0627\\u0631\\u06cc\\u062e\\u0686\\u0647\",\n\"styles\": \"\\u0633\\u0628\\u06a9\\u200c\\u0647\\u0627\",\n\"formatting\": \"\\u0642\\u0627\\u0644\\u0628\\u200c\\u0628\\u0646\\u062f\\u06cc\",\n\"alignment\": \"\\u062a\\u0631\\u0627\\u0632\\u0628\\u0646\\u062f\\u06cc\",\n\"indentation\": \"\\u062a\\u0648\\u0631\\u0641\\u062a\\u06af\\u06cc\",\n\"permanent pen\": \"\\u0642\\u0644\\u0645 \\u062f\\u0627\\u0626\\u0645\\u06cc\",\n\"comments\": \"\\u0646\\u0638\\u0631\\u0627\\u062a\",\n\"Format Painter\": \"\\u0646\\u0642\\u0627\\u0634 \\u0641\\u0631\\u0645\\u062a\",\n\"Insert\\/edit iframe\": \"\\u062f\\u0631\\u062c\\/\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634 iframe\",\n\"Capitalization\": \"\\u062d\\u0631\\u0648\\u0641 \\u0628\\u0632\\u0631\\u06af\",\n\"lowercase\": \"\\u062d\\u0631\\u0648\\u0641 \\u06a9\\u0648\\u0686\\u06a9\",\n\"UPPERCASE\": \"\\u062d\\u0631\\u0648\\u0641 \\u0628\\u0632\\u0631\\u06af\",\n\"Title Case\": \"\\u062d\\u0631\\u0648\\u0641 \\u062a\\u06cc\\u062a\\u0631\\u06cc\",\n\"Permanent Pen Properties\": \"\\u0645\\u0634\\u062e\\u0635\\u0627\\u062a \\u062f\\u0627\\u0626\\u0645\\u06cc \\u0642\\u0644\\u0645\",\n\"Permanent pen properties...\": \"\\u0645\\u0634\\u062e\\u0635\\u0627\\u062a \\u062f\\u0627\\u0626\\u0645\\u06cc \\u0642\\u0644\\u0645...\",\n\"Font\": \"\\u0641\\u0648\\u0646\\u062a\",\n\"Size\": \"\\u0627\\u0646\\u062f\\u0627\\u0632\\u0647\",\n\"More...\": \"\\u0628\\u06cc\\u0634\\u062a\\u0631...\",\n\"Spellcheck Language\": \"\\u0632\\u0628\\u0627\\u0646 \\u0686\\u06a9 \\u0627\\u0633\\u067e\\u0644\\u06cc\\u0646\\u06af\",\n\"Select...\": \"\\u0627\\u0646\\u062a\\u062e\\u0627\\u0628...\",\n\"Preferences\": \"\\u062a\\u0631\\u062c\\u06cc\\u062d\\u0627\\u062a\",\n\"Yes\": \"\\u0628\\u0644\\u0647\",\n\"No\": \"\\u062e\\u06cc\\u0631\",\n\"Keyboard Navigation\": \"\\u0645\\u0631\\u0648\\u0631 \\u0628\\u0627 \\u0635\\u0641\\u062d\\u0647 \\u06a9\\u0644\\u06cc\\u062f\",\n\"Version\": \"\\u0646\\u0633\\u062e\\u0647\",\n\"Anchor\": \"\\u0644\\u0646\\u06af\\u0631 - \\u0644\\u06cc\\u0646\\u06a9\",\n\"Special character\": \"\\u06a9\\u0627\\u0631\\u0627\\u06a9\\u062a\\u0631 \\u0647\\u0627\\u06cc \\u062e\\u0627\\u0635\",\n\"Color\": \"Color\",\n\"Emoticons\": \"\\u0634\\u06a9\\u0644\\u06a9\\u200c\\u0647\\u0627\",\n\"Document properties\": \"\\u0648\\u06cc\\u0698\\u06af\\u06cc\\u200c\\u0647\\u0627\\u06cc \\u0633\\u0646\\u062f\",\n\"Image\": \"\\u0639\\u06a9\\u0633\",\n\"Insert link\": \"\\u0627\\u0636\\u0627\\u0641\\u0647 \\u06a9\\u0631\\u062f\\u0646 \\u0644\\u06cc\\u0646\\u06a9\",\n\"Link\": \"Link\",\n\"Target\": \"\\u0646\\u062d\\u0648\\u0647 \\u0628\\u0627\\u0632 \\u0634\\u062f\\u0646 \\u062f\\u0631 \\u0645\\u0631\\u0648\\u0631\\u06af\\u0631\",\n\"Media\": \"Media\",\n\"Poster\": \"\\u067e\\u0648\\u0633\\u062a\\u0631\",\n\"Print\": \"\\u0686\\u0627\\u067e\",\n\"Whole words\": \"\\u0647\\u0645\\u0647 \\u06a9\\u0644\\u0645\\u0647\\u200c\\u0647\\u0627\",\n\"Find and replace\": \"\\u062c\\u0633\\u062a\\u200c\\u0648\\u200c\\u062c\\u0648 \\u0648 \\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646 \\u06a9\\u0631\\u062f\\u0646\",\n\"Prev\": \"\\u0642\\u0628\\u0644\\u06cc\",\n\"Spellcheck\": \"\\u0628\\u0631\\u0631\\u0633\\u06cc \\u0627\\u0645\\u0644\\u0627\\u06cc\\u06cc\",\n\"Caption\": \"\\u0639\\u0646\\u0648\\u0627\\u0646\",\n\"Insert template\": \"\\u0627\\u0636\\u0627\\u0641\\u0647 \\u06a9\\u0631\\u062f\\u0646 \\u0627\\u0644\\u06af\\u0648\",\n\"_dir\": \"rtl\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/fa_IR.js",
    "content": "tinymce.addI18n('fa_IR',{\n\"Redo\": \"\\u0628\\u0627\\u0632\\u0627\\u0646\\u062c\\u0627\\u0645\",\n\"Undo\": \"\\u0648\\u0627\\u06af\\u0631\\u062f\",\n\"Cut\": \"\\u0628\\u0631\\u0634\",\n\"Copy\": \"\\u06a9\\u067e\\u06cc\",\n\"Paste\": \"\\u0686\\u0633\\u0628\\u0627\\u0646\\u062f\\u0646\",\n\"Select all\": \"\\u0627\\u0646\\u062a\\u062e\\u0627\\u0628 \\u0647\\u0645\\u0647\",\n\"New document\": \"\\u0633\\u0646\\u062f \\u062c\\u062f\\u06cc\\u062f\",\n\"Ok\": \"\\u062a\\u0623\\u06cc\\u06cc\\u062f\",\n\"Cancel\": \"\\u0644\\u063a\\u0648\",\n\"Visual aids\": \"\\u06a9\\u0645\\u06a9\\u200c\\u0647\\u0627\\u06cc \\u0628\\u0635\\u0631\\u06cc\",\n\"Bold\": \"\\u067e\\u0631\\u0631\\u0646\\u06af\",\n\"Italic\": \"\\u06a9\\u062c\",\n\"Underline\": \"\\u0632\\u06cc\\u0631 \\u062e\\u0637 \\u062f\\u0627\\u0631\",\n\"Strikethrough\": \"\\u062e\\u0637 \\u0632\\u062f\\u0646\",\n\"Superscript\": \"\\u0628\\u0627\\u0644\\u0627\\u0646\\u06af\\u0627\\u0634\\u062a\",\n\"Subscript\": \"\\u0632\\u06cc\\u0631\\u0646\\u06af\\u0627\\u0634\\u062a\",\n\"Clear formatting\": \"\\u067e\\u0627\\u06a9 \\u06a9\\u0631\\u062f\\u0646 \\u0642\\u0627\\u0644\\u0628\\u200c\\u0628\\u0646\\u062f\\u06cc\",\n\"Align left\": \"\\u062a\\u0631\\u0627\\u0632\\u0628\\u0646\\u062f\\u06cc \\u0627\\u0632 \\u0686\\u067e\",\n\"Align center\": \"\\u062a\\u0631\\u0627\\u0632\\u0628\\u0646\\u062f\\u06cc \\u0627\\u0632 \\u0648\\u0633\\u0637\",\n\"Align right\": \"\\u062a\\u0631\\u0627\\u0632\\u0628\\u0646\\u062f\\u06cc \\u0627\\u0632 \\u0631\\u0627\\u0633\\u062a\",\n\"Justify\": \"\\u062a\\u0631\\u0627\\u0632\\u0628\\u0646\\u062f\\u06cc \\u062f\\u0648\\u0637\\u0631\\u0641\\u0647\",\n\"Bullet list\": \"\\u0641\\u0647\\u0631\\u0633\\u062a \\u0646\\u0634\\u0627\\u0646\\u0647\\u200c\\u062f\\u0627\\u0631\",\n\"Numbered list\": \"\\u0641\\u0647\\u0631\\u0633\\u062a \\u0634\\u0645\\u0627\\u0631\\u0647\\u200c\\u062f\\u0627\\u0631\",\n\"Decrease indent\": \"\\u06a9\\u0627\\u0647\\u0634 \\u062a\\u0648\\u0631\\u0641\\u062a\\u06af\\u06cc\",\n\"Increase indent\": \"\\u0627\\u0641\\u0632\\u0627\\u06cc\\u0634 \\u062a\\u0648\\u0631\\u0641\\u062a\\u06af\\u06cc\",\n\"Close\": \"\\u0628\\u0633\\u062a\\u0646\",\n\"Formats\": \"\\u0642\\u0627\\u0644\\u0628\\u200c\\u0628\\u0646\\u062f\\u06cc\\u200c\\u0647\\u0627\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u0645\\u0631\\u0648\\u0631\\u06af\\u0631 \\u0634\\u0645\\u0627 \\u0627\\u0632 \\u062f\\u0633\\u062a\\u0631\\u0633\\u06cc \\u0645\\u0633\\u062a\\u0642\\u06cc\\u0645 \\u0628\\u0647 \\u06a9\\u0644\\u06cc\\u067e\\u200c\\u0628\\u0648\\u0631\\u062f \\u067e\\u0634\\u062a\\u06cc\\u0628\\u0627\\u0646\\u06cc \\u0646\\u0645\\u06cc\\u200c\\u06a9\\u0646\\u062f\\u060c \\u0644\\u0637\\u0641\\u0627\\u064b \\u0627\\u0632 \\u0645\\u06cc\\u0627\\u0646\\u0628\\u0631\\u0647\\u0627\\u06cc Ctrl+X\\/C\\/V \\u0635\\u0641\\u062d\\u0647 \\u06a9\\u0644\\u06cc\\u062f \\u0627\\u0633\\u062a\\u0641\\u0627\\u062f\\u0647 \\u06a9\\u0646\\u06cc\\u062f.\",\n\"Headers\": \"\\u0633\\u0631\\u0628\\u0631\\u06af\\u200c\\u0647\\u0627\",\n\"Header 1\": \"\\u0633\\u0631\\u0628\\u0631\\u06af 1\",\n\"Header 2\": \"\\u0633\\u0631\\u0628\\u0631\\u06af 2\",\n\"Header 3\": \"\\u0633\\u0631\\u0628\\u0631\\u06af 3\",\n\"Header 4\": \"\\u0633\\u0631\\u0628\\u0631\\u06af 4\",\n\"Header 5\": \"\\u0633\\u0631\\u0628\\u0631\\u06af 5\",\n\"Header 6\": \"\\u0633\\u0631\\u0628\\u0631\\u06af 6\",\n\"Headings\": \"\\u0633\\u0631\\u0641\\u0635\\u0644\\u200c\\u0647\\u0627\",\n\"Heading 1\": \"\\u0633\\u0631\\u0641\\u0635\\u0644\\u200c 1\",\n\"Heading 2\": \"\\u0633\\u0631\\u0641\\u0635\\u0644 2\",\n\"Heading 3\": \"\\u0633\\u0631\\u0641\\u0635\\u0644 3\",\n\"Heading 4\": \"\\u0633\\u0631\\u0641\\u0635\\u0644 4\",\n\"Heading 5\": \"\\u0633\\u0631\\u0641\\u0635\\u0644 5\",\n\"Heading 6\": \"\\u0633\\u0631\\u0641\\u0635\\u0644 6\",\n\"Preformatted\": \"\\u0627\\u0632 \\u067e\\u06cc\\u0634 \\u0642\\u0627\\u0644\\u0628\\u200c\\u0628\\u0646\\u062f\\u06cc\\u200c\\u0634\\u062f\\u0647\",\n\"Div\": \"\\u0628\\u062e\\u0634\",\n\"Pre\": \"\\u067e\\u06cc\\u0634\",\n\"Code\": \"\\u06a9\\u062f\",\n\"Paragraph\": \"\\u067e\\u0627\\u0631\\u0627\\u06af\\u0631\\u0627\\u0641\",\n\"Blockquote\": \"\\u0646\\u0642\\u0644 \\u0642\\u0648\\u0644 \\u0628\\u0644\\u0648\\u06a9\\u06cc\",\n\"Inline\": \"\\u0647\\u0645\\u200c\\u0631\\u0627\\u0633\\u062a\\u0627\",\n\"Blocks\": \"\\u0628\\u0644\\u0648\\u06a9\\u200c\\u0647\\u0627\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u0627\\u0645\\u06a9\\u0627\\u0646 \\u0686\\u0633\\u0628\\u0627\\u0646\\u062f\\u0646\\u060c \\u062f\\u0631 \\u062d\\u0627\\u0644\\u062a \\u0645\\u062a\\u0646 \\u062e\\u0627\\u0644\\u0635 \\u062a\\u0646\\u0638\\u06cc\\u0645 \\u06af\\u0634\\u062a\\u0647. \\u062a\\u0627 \\u0632\\u0645\\u0627\\u0646 \\u062a\\u063a\\u06cc\\u06cc\\u0631 \\u0627\\u06cc\\u0646 \\u062d\\u0627\\u0644\\u062a\\u060c \\u0645\\u062d\\u062a\\u0648\\u0627\\u06cc \\u0645\\u0648\\u0631\\u062f \\u0686\\u0633\\u0628\\u0627\\u0646\\u062f\\u0646\\u060c \\u0628\\u0647 \\u0635\\u0648\\u0631\\u062a \\u0645\\u062a\\u0646 \\u062e\\u0627\\u0644\\u0635 \\u062e\\u0648\\u0627\\u0647\\u062f \\u0686\\u0633\\u0628\\u06cc\\u062f.\",\n\"Fonts\": \"\\u0641\\u0648\\u0646\\u062a\\u200c\\u200c\\u0647\\u0627\",\n\"Font Sizes\": \"\\u0627\\u0646\\u062f\\u0627\\u0632\\u0647\\u0654 \\u0641\\u0648\\u0646\\u062a\",\n\"Class\": \"\\u0637\\u0628\\u0642\\u0647\",\n\"Browse for an image\": \"\\u06af\\u0634\\u062a\\u0646 \\u0628\\u0631\\u0627\\u06cc \\u0639\\u06a9\\u0633 \\u0645\\u0648\\u0631\\u062f \\u0646\\u0638\\u0631\",\n\"OR\": \"\\u06cc\\u0627\",\n\"Drop an image here\": \"\\u062a\\u0635\\u0648\\u06cc\\u0631 \\u0645\\u0648\\u0631\\u062f \\u0646\\u0638\\u0631 \\u0631\\u0627 \\u0627\\u06cc\\u0646\\u062c\\u0627 \\u0631\\u0647\\u0627 \\u06a9\\u0646\\u06cc\\u062f\",\n\"Upload\": \"\\u0622\\u067e\\u0644\\u0648\\u062f\",\n\"Block\": \"\\u0628\\u0644\\u0648\\u06a9\",\n\"Align\": \"\\u062a\\u0631\\u0627\\u0632\\u0628\\u0646\\u062f\\u06cc\",\n\"Default\": \"\\u067e\\u06cc\\u0634 \\u0641\\u0631\\u0636\",\n\"Circle\": \"\\u062f\\u0627\\u06cc\\u0631\\u0647\",\n\"Disc\": \"\\u062f\\u0627\\u06cc\\u0631\\u0647\\u0621 \\u062a\\u0648\\u067e\\u0631\",\n\"Square\": \"\\u0686\\u0647\\u0627\\u0631 \\u06af\\u0648\\u0634\",\n\"Lower Alpha\": \"\\u062d\\u0631\\u0648\\u0641 \\u06a9\\u0648\\u0686\\u06a9\",\n\"Lower Greek\": \"\\u062d\\u0631\\u0648\\u0641 \\u06a9\\u0648\\u0686\\u06a9 \\u06cc\\u0648\\u0646\\u0627\\u0646\\u06cc\",\n\"Lower Roman\": \"\\u0627\\u0631\\u0642\\u0627\\u0645 \\u06a9\\u0648\\u0686\\u06a9 \\u0631\\u0648\\u0645\\u06cc\",\n\"Upper Alpha\": \"\\u062d\\u0631\\u0648\\u0641 \\u0628\\u0632\\u0631\\u06af\",\n\"Upper Roman\": \"\\u0627\\u0631\\u0642\\u0627\\u0645 \\u0628\\u0632\\u0631\\u06af \\u0631\\u0648\\u0645\\u06cc\",\n\"Anchor...\": \"\\u0642\\u0644\\u0627\\u0628...\",\n\"Name\": \"\\u0646\\u0627\\u0645\",\n\"Id\": \"\\u0634\\u0646\\u0627\\u0633\\u0647\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"\\u0634\\u0646\\u0627\\u0633\\u0647 \\u0645\\u06cc \\u0628\\u0627\\u06cc\\u0633\\u062a \\u0628\\u0627 \\u06cc\\u06a9 \\u062d\\u0631\\u0641 \\u0627\\u0644\\u0641\\u0628\\u0627 \\u0622\\u063a\\u0627\\u0632 \\u0648 \\u0628\\u0627 \\u062f\\u0646\\u0628\\u0627\\u0644\\u0647 \\u0627\\u06cc \\u0627\\u0632 \\u062d\\u0631\\u0648\\u0641\\u060c \\u0627\\u0639\\u062f\\u0627\\u062f\\u060c \\u0639\\u0644\\u0627\\u0645\\u062a \\u0645\\u0650\\u0646\\u0647\\u0627\\u060c \\u0646\\u0642\\u0637\\u0647\\u060c \\u062f\\u0648 \\u0646\\u0642\\u0637\\u0647 \\u06cc\\u0627 \\u062e\\u0637 \\u062a\\u06cc\\u0631\\u0647 \\u0627\\u062f\\u0627\\u0645\\u0647 \\u06cc\\u0627\\u0628\\u062f.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u062a\\u063a\\u06cc\\u06cc\\u0631\\u0627\\u062a \\u0634\\u0645\\u0627 \\u0630\\u062e\\u06cc\\u0631\\u0647 \\u0646\\u0634\\u062f\\u0647 \\u0627\\u0646\\u062f\\u060c \\u0622\\u06cc\\u0627 \\u062c\\u0647\\u062a \\u062e\\u0631\\u0648\\u062c \\u0627\\u0637\\u0645\\u06cc\\u0646\\u0627\\u0646 \\u062f\\u0627\\u0631\\u06cc\\u062f\\u061f\",\n\"Restore last draft\": \"\\u0628\\u0627\\u0632\\u06cc\\u0627\\u0628\\u06cc \\u0622\\u062e\\u0631\\u06cc\\u0646 \\u067e\\u06cc\\u0634 \\u0646\\u0648\\u06cc\\u0633\",\n\"Special characters...\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647\\u200c\\u0647\\u0627\\u06cc \\u0648\\u06cc\\u0698\\u0647...\",\n\"Source code\": \"\\u0645\\u062a\\u0646 \\u06a9\\u062f \\u0645\\u0646\\u0628\\u0639\",\n\"Insert\\/Edit code sample\": \"\\u062f\\u0631\\u062c\\/\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634 \\u0646\\u0645\\u0648\\u0646\\u0647\\u0621 \\u06a9\\u062f\",\n\"Language\": \"\\u0632\\u0628\\u0627\\u0646\",\n\"Code sample...\": \"\\u0646\\u0645\\u0648\\u0646\\u0647 \\u06a9\\u062f...\",\n\"Color Picker\": \"\\u0627\\u0646\\u062a\\u062e\\u0627\\u0628\\u200c\\u06a9\\u0646\\u0646\\u062f\\u0647 \\u0631\\u0646\\u06af\",\n\"R\": \"\\u0642\\u0631\\u0645\\u0632\",\n\"G\": \"\\u0633\\u0628\\u0632\",\n\"B\": \"\\u0622\\u0628\\u06cc\",\n\"Left to right\": \"\\u0686\\u067e \\u0628\\u0647 \\u0631\\u0627\\u0633\\u062a\",\n\"Right to left\": \"\\u0631\\u0627\\u0633\\u062a \\u0628\\u0647 \\u0686\\u067e\",\n\"Emoticons...\": \"\\u0635\\u0648\\u0631\\u062a\\u06a9\\u200c\\u0647\\u0627...\",\n\"Metadata and Document Properties\": \"\\u0641\\u0631\\u0627\\u062f\\u0627\\u062f\\u0647 \\u0648 \\u0645\\u0634\\u062e\\u0635\\u0627\\u062a \\u0633\\u0646\\u062f\",\n\"Title\": \"\\u0639\\u0646\\u0648\\u0627\\u0646\",\n\"Keywords\": \"\\u0648\\u0627\\u0698\\u06af\\u0627\\u0646 \\u06a9\\u0644\\u06cc\\u062f\\u06cc\",\n\"Description\": \"\\u062a\\u0648\\u0636\\u06cc\\u062d\",\n\"Robots\": \"\\u0631\\u0648\\u0628\\u0627\\u062a\\u0647\\u0627\",\n\"Author\": \"\\u0645\\u0648\\u0644\\u0641\",\n\"Encoding\": \"\\u06a9\\u062f\\u06af\\u0632\\u0627\\u0631\\u06cc \\u0645\\u062a\\u0646\",\n\"Fullscreen\": \"\\u062a\\u0645\\u0627\\u0645 \\u0635\\u0641\\u062d\\u0647\",\n\"Action\": \"\\u0639\\u0645\\u0644\",\n\"Shortcut\": \"\\u0645\\u06cc\\u0627\\u0646\\u0628\\u064f\\u0631\",\n\"Help\": \"\\u0631\\u0627\\u0647\\u0646\\u0645\\u0627\",\n\"Address\": \"\\u0646\\u0634\\u0627\\u0646\\u06cc\",\n\"Focus to menubar\": \"\\u062a\\u0645\\u0631\\u06a9\\u0632 \\u0628\\u0631 \\u0646\\u0648\\u0627\\u0631 \\u0645\\u0646\\u0648\",\n\"Focus to toolbar\": \"\\u062a\\u0645\\u0631\\u06a9\\u0632 \\u0628\\u0631 \\u0646\\u0648\\u0627\\u0631 \\u0627\\u0628\\u0632\\u0627\\u0631\",\n\"Focus to element path\": \"\\u062a\\u0645\\u0631\\u06a9\\u0632 \\u0628\\u0631 \\u0645\\u0633\\u06cc\\u0631 \\u0627\\u0650\\u0644\\u0650\\u0645\\u0627\\u0646\",\n\"Focus to contextual toolbar\": \"\\u062a\\u0645\\u0631\\u06a9\\u0632 \\u0628\\u0631 \\u0646\\u0648\\u0627\\u0631 \\u0627\\u0628\\u0632\\u0627\\u0631 \\u0645\\u062a\\u0646\\u06cc\",\n\"Insert link (if link plugin activated)\": \"\\u062f\\u0631\\u062c \\u067e\\u06cc\\u0648\\u0646\\u062f (\\u0627\\u06af\\u0631 \\u0627\\u0641\\u0632\\u0648\\u0646\\u0647\\u0621 \\u067e\\u06cc\\u0648\\u0646\\u062f \\u0641\\u0639\\u0627\\u0644 \\u0634\\u062f)\",\n\"Save (if save plugin activated)\": \"\\u062b\\u0628\\u062a\\u00a0(\\u0627\\u06af\\u0631 \\u0627\\u0641\\u0632\\u0648\\u0646\\u0647\\u0621 \\u0630\\u062e\\u06cc\\u0631\\u0647 \\u0633\\u0627\\u0632\\u06cc \\u0641\\u0639\\u0627\\u0644 \\u0634\\u062f)\",\n\"Find (if searchreplace plugin activated)\": \"\\u06cc\\u0627\\u0641\\u062a\\u0646 (\\u0627\\u06af\\u0631 \\u0627\\u0641\\u0632\\u0648\\u0646\\u0647\\u0621 \\u062c\\u0633\\u062a\\u062c\\u0648\\/\\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646\\u06cc \\u0641\\u0639\\u0627\\u0644 \\u0634\\u062f)\",\n\"Plugins installed ({0}):\": \"\\u0627\\u0641\\u0632\\u0648\\u0646\\u0647 \\u0647\\u0627\\u06cc\\u06cc \\u06a9\\u0647 \\u0646\\u0635\\u0628 \\u0634\\u062f\\u0646\\u062f ({0}):\",\n\"Premium plugins:\": \"\\u0627\\u0641\\u0632\\u0648\\u0646\\u0647 \\u0647\\u0627\\u06cc \\u0645\\u062e\\u0635\\u0648\\u0635:\",\n\"Learn more...\": \"\\u06cc\\u0627\\u062f\\u06af\\u06cc\\u0631\\u06cc \\u0628\\u06cc\\u0634\\u062a\\u0631...\",\n\"You are using {0}\": \"\\u0634\\u0645\\u0627 \\u062f\\u0631 \\u062d\\u0627\\u0644 \\u0627\\u0633\\u062a\\u0641\\u0627\\u062f\\u0647 \\u0627\\u0632 {0} \\u0645\\u06cc \\u0628\\u0627\\u0634\\u06cc\\u062f\",\n\"Plugins\": \"\\u0627\\u0641\\u0632\\u0648\\u0646\\u0647 \\u0647\\u0627\",\n\"Handy Shortcuts\": \"\\u0645\\u06cc\\u0627\\u0646\\u0628\\u064f\\u0631\\u0647\\u0627\\u06cc \\u0633\\u0648\\u062f\\u0645\\u0646\\u062f\",\n\"Horizontal line\": \"\\u062e\\u0637 \\u0627\\u0641\\u0642\\u06cc\",\n\"Insert\\/edit image\": \"\\u062f\\u0631\\u062c\\/\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634 \\u062a\\u0635\\u0648\\u06cc\\u0631\",\n\"Image description\": \"\\u062a\\u0648\\u0635\\u06cc\\u0641 \\u062a\\u0635\\u0648\\u06cc\\u0631\",\n\"Source\": \"\\u0645\\u0646\\u0628\\u0639\",\n\"Dimensions\": \"\\u0627\\u0628\\u0639\\u0627\\u062f\",\n\"Constrain proportions\": \"\\u062d\\u0641\\u0638 \\u062a\\u0646\\u0627\\u0633\\u0628\",\n\"General\": \"\\u0639\\u0645\\u0648\\u0645\\u06cc\",\n\"Advanced\": \"\\u067e\\u06cc\\u0634\\u0631\\u0641\\u062a\\u0647\",\n\"Style\": \"\\u0633\\u0628\\u06a9\",\n\"Vertical space\": \"\\u0641\\u0636\\u0627\\u06cc \\u0639\\u0645\\u0648\\u062f\\u06cc\",\n\"Horizontal space\": \"\\u0641\\u0636\\u0627\\u06cc \\u0627\\u0641\\u0642\\u06cc\",\n\"Border\": \"\\u0644\\u0628\\u0647\",\n\"Insert image\": \"\\u062f\\u0631\\u062c \\u062a\\u0635\\u0648\\u06cc\\u0631\",\n\"Image...\": \"\\u062a\\u0635\\u0648\\u06cc\\u0631...\",\n\"Image list\": \"\\u0641\\u0647\\u0631\\u0633\\u062a \\u062a\\u0635\\u0648\\u06cc\\u0631\\u06cc\",\n\"Rotate counterclockwise\": \"\\u062f\\u064e\\u0648\\u064e\\u0631\\u0627\\u0646 \\u067e\\u0627\\u062f \\u0633\\u0627\\u0639\\u062a \\u06af\\u0631\\u062f\",\n\"Rotate clockwise\": \"\\u062f\\u064e\\u0648\\u064e\\u0631\\u0627\\u0646 \\u0633\\u0627\\u0639\\u062a \\u06af\\u0631\\u062f\",\n\"Flip vertically\": \"\\u0642\\u0631\\u06cc\\u0646\\u0647 \\u0639\\u0645\\u0648\\u062f\\u06cc\",\n\"Flip horizontally\": \"\\u0642\\u0631\\u06cc\\u0646\\u0647 \\u0627\\u0641\\u0642\\u06cc\",\n\"Edit image\": \"\\u0648\\u06cc\\u0631\\u0627\\u0633\\u062a \\u062a\\u0635\\u0648\\u06cc\\u0631\",\n\"Image options\": \"\\u062a\\u0646\\u0638\\u06cc\\u0645\\u0627\\u062a \\u062a\\u0635\\u0648\\u06cc\\u0631\",\n\"Zoom in\": \"\\u0628\\u0632\\u0631\\u06af \\u0646\\u0645\\u0627\\u06cc\\u06cc\",\n\"Zoom out\": \"\\u06a9\\u0648\\u0686\\u06a9 \\u0646\\u0645\\u0627\\u06cc\\u06cc\",\n\"Crop\": \"\\u0628\\u064f\\u0631\\u0634 \\u062f\\u064f\\u0648\\u0631\",\n\"Resize\": \"\\u062a\\u063a\\u06cc\\u06cc\\u0631 \\u0627\\u0646\\u062f\\u0627\\u0632\\u0647\",\n\"Orientation\": \"\\u06af\\u0650\\u0631\\u0627\",\n\"Brightness\": \"\\u0631\\u0648\\u0634\\u0646\\u0627\\u06cc\\u06cc\",\n\"Sharpen\": \"\\u0628\\u0647\\u0628\\u0648\\u062f \\u0644\\u0628\\u0647\",\n\"Contrast\": \"\\u062a\\u0636\\u0627\\u062f \\u0631\\u0646\\u06af\",\n\"Color levels\": \"\\u0633\\u0637\\u0648\\u062d \\u0631\\u0646\\u06af\",\n\"Gamma\": \"\\u06af\\u0627\\u0645\\u0627\",\n\"Invert\": \"\\u0628\\u0631\\u06af\\u0634\\u062a \\u0631\\u0646\\u06af\",\n\"Apply\": \"\\u0627\\u0650\\u0639\\u0645\\u0627\\u0644\",\n\"Back\": \"\\u0628\\u0627\\u0632\\u06af\\u0634\\u062a\",\n\"Insert date\\/time\": \"\\u062f\\u0631\\u062c \\u062a\\u0627\\u0631\\u06cc\\u062e\\/\\u0632\\u0645\\u0627\\u0646\",\n\"Date\\/time\": \"\\u062a\\u0627\\u0631\\u06cc\\u062e\\/\\u0632\\u0645\\u0627\\u0646\",\n\"Insert\\/Edit Link\": \"\\u062f\\u0631\\u062c\\/\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634 \\u067e\\u06cc\\u0648\\u0646\\u062f\",\n\"Insert\\/edit link\": \"\\u062f\\u0631\\u062c\\/\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634 \\u067e\\u06cc\\u0648\\u0646\\u062f\",\n\"Text to display\": \"\\u0645\\u062a\\u0646 \\u0646\\u0645\\u0627\\u06cc\\u0634\\u06cc\",\n\"Url\": \"\\u0622\\u062f\\u0631\\u0633\",\n\"Open link in...\": \"\\u0628\\u0627\\u0632 \\u06a9\\u0631\\u062f\\u0646 \\u067e\\u06cc\\u0648\\u0646\\u062f \\u062f\\u0631...\",\n\"Current window\": \"\\u067e\\u0646\\u062c\\u0631\\u0647 \\u062c\\u0627\\u0631\\u06cc\",\n\"None\": \"\\u0647\\u06cc\\u0686\",\n\"New window\": \"\\u067e\\u0646\\u062c\\u0631\\u0647\\u0621 \\u062c\\u062f\\u06cc\\u062f\",\n\"Remove link\": \"\\u062d\\u0630\\u0641 \\u067e\\u06cc\\u0648\\u0646\\u062f\",\n\"Anchors\": \"\\u0642\\u0644\\u0627\\u0628 \\u0647\\u0627\",\n\"Link...\": \"\\u067e\\u06cc\\u0648\\u0646\\u062f...\",\n\"Paste or type a link\": \"\\u0686\\u0633\\u0628\\u0627\\u0646\\u062f\\u0646 \\u06cc\\u0627 \\u062a\\u0627\\u06cc\\u067e \\u067e\\u06cc\\u0648\\u0646\\u062f\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u0628\\u0647 \\u0646\\u0638\\u0631 \\u0645\\u06cc \\u0631\\u0633\\u062f \\u0622\\u062f\\u0631\\u0633 \\u0648\\u0631\\u0648\\u062f\\u06cc \\u06cc\\u06a9 \\u0631\\u0627\\u06cc\\u0627\\u0646\\u0627\\u0645\\u0647 \\u0628\\u0627\\u0634\\u062f. \\u0622\\u06cc\\u0627 \\u062a\\u0645\\u0627\\u06cc\\u0644 \\u0628\\u0647 \\u0627\\u0641\\u0632\\u0648\\u0631\\u062f\\u0646 \\u067e\\u06cc\\u0634\\u0648\\u0646\\u062f mailto: \\u062f\\u0627\\u0631\\u06cc\\u062f\\u061f\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u0628\\u0647 \\u0646\\u0638\\u0631 \\u0645\\u06cc \\u0631\\u0633\\u062f \\u0622\\u062f\\u0631\\u0633 \\u0648\\u0631\\u0648\\u062f\\u06cc \\u0627\\u0631\\u062c\\u0627\\u0639\\u06cc \\u0628\\u0647 \\u062e\\u0627\\u0631\\u062c \\u0627\\u0632 \\u0627\\u06cc\\u0646 \\u0633\\u0627\\u06cc\\u062a \\u0645\\u06cc \\u0628\\u0627\\u0634\\u062f. \\u0622\\u06cc\\u0627 \\u062a\\u0645\\u0627\\u06cc\\u0644 \\u0628\\u0647 \\u0627\\u0641\\u0632\\u0648\\u0631\\u062f\\u0646 \\u067e\\u06cc\\u0634\\u0648\\u0646\\u062f http:\\/\\/ \\u062f\\u0627\\u0631\\u06cc\\u062f\\u061f\",\n\"Link list\": \"\\u0641\\u0647\\u0631\\u0633\\u062a \\u067e\\u06cc\\u0648\\u0646\\u062f\",\n\"Insert video\": \"\\u062f\\u0631\\u062c \\u0648\\u06cc\\u062f\\u06cc\\u0648\",\n\"Insert\\/edit video\": \"\\u062f\\u0631\\u062c\\/\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634 \\u0648\\u06cc\\u062f\\u06cc\\u0648\",\n\"Insert\\/edit media\": \"\\u062f\\u0631\\u062c\\/\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634 \\u0631\\u0633\\u0627\\u0646\\u0647\",\n\"Alternative source\": \"\\u0645\\u0646\\u0628\\u0639 \\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646\",\n\"Alternative source URL\": \"\\u0646\\u0634\\u0627\\u0646\\u06cc \\u0648\\u0628 \\u0645\\u0646\\u0628\\u0639 \\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646\",\n\"Media poster (Image URL)\": \"\\u067e\\u0648\\u0633\\u062a\\u0631 \\u0631\\u0633\\u0627\\u0646\\u0647 (\\u0646\\u0634\\u0627\\u0646\\u06cc \\u0648\\u0628 \\u062a\\u0635\\u0648\\u06cc\\u0631)\",\n\"Paste your embed code below:\": \"\\u0686\\u0633\\u0628\\u0627\\u0646\\u062f\\u0646 \\u06a9\\u062f \\u062c\\u0627\\u0633\\u0627\\u0632\\u06cc \\u0634\\u0645\\u0627 \\u062f\\u0631 \\u0632\\u06cc\\u0631: \",\n\"Embed\": \"\\u062c\\u0627\\u0633\\u0627\\u0632\\u06cc\",\n\"Media...\": \"\\u0631\\u0633\\u0627\\u0646\\u0647...\",\n\"Nonbreaking space\": \"\\u0641\\u0636\\u0627\\u06cc \\u062e\\u0627\\u0644\\u06cc \\u0628\\u0631\\u0634 \\u0646\\u0627\\u067e\\u0630\\u06cc\\u0631\",\n\"Page break\": \"\\u0628\\u0631\\u0634 \\u0635\\u0641\\u062d\\u0647\",\n\"Paste as text\": \"\\u0686\\u0633\\u0628\\u0627\\u0646\\u062f\\u0646 \\u0645\\u062a\\u0646\",\n\"Preview\": \"\\u067e\\u06cc\\u0634 \\u0646\\u0645\\u0627\\u06cc\\u0634\",\n\"Print...\": \"\\u0686\\u0627\\u067e...\",\n\"Save\": \"\\u0630\\u062e\\u06cc\\u0631\\u0647\",\n\"Find\": \"\\u062c\\u0633\\u062a\\u062c\\u0648\",\n\"Replace with\": \"\\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646\\u06cc \\u0628\\u0627\",\n\"Replace\": \"\\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646\\u06cc\",\n\"Replace all\": \"\\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646 \\u0647\\u0645\\u0647\",\n\"Previous\": \"\\u0642\\u0628\\u0644\\u06cc\",\n\"Next\": \"\\u0628\\u0639\\u062f\\u06cc\",\n\"Find and replace...\": \"\\u06cc\\u0627\\u0641\\u062a\\u0646 \\u0648 \\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646 \\u06a9\\u0631\\u062f\\u0646...\",\n\"Could not find the specified string.\": \"\\u0631\\u0634\\u062a\\u0647\\u0621 \\u0645\\u0648\\u0631\\u062f \\u0646\\u0638\\u0631 \\u06cc\\u0627\\u0641\\u062a \\u0646\\u06af\\u0631\\u062f\\u06cc\\u062f.\",\n\"Match case\": \"\\u062a\\u0637\\u0627\\u0628\\u0642 \\u062d\\u0631\\u0648\\u0641\",\n\"Find whole words only\": \"\\u06cc\\u0627\\u0641\\u062a\\u0646 \\u062f\\u0642\\u06cc\\u0642\\u0627\\u064b \\u06a9\\u0644 \\u0648\\u0627\\u0698\\u0647\",\n\"Spell check\": \"\\u0628\\u0631\\u0631\\u0633\\u06cc \\u0627\\u0645\\u0644\\u0627\",\n\"Ignore\": \"\\u0628\\u06cc \\u062e\\u06cc\\u0627\\u0644\",\n\"Ignore all\": \"\\u0628\\u06cc \\u062e\\u06cc\\u0627\\u0644 \\u0647\\u0645\\u0647\",\n\"Finish\": \"\\u0627\\u062a\\u0645\\u0627\\u0645\",\n\"Add to Dictionary\": \"\\u0628\\u0647 \\u0648\\u0627\\u0698\\u0647 \\u0646\\u0627\\u0645\\u0647 \\u0628\\u06cc \\u0627\\u0641\\u0632\\u0627\",\n\"Insert table\": \"\\u062f\\u0631\\u062c \\u062c\\u062f\\u0648\\u0644\",\n\"Table properties\": \"\\u062a\\u0646\\u0638\\u06cc\\u0645\\u0627\\u062a \\u062c\\u062f\\u0648\\u0644\",\n\"Delete table\": \"\\u062d\\u0630\\u0641 \\u062c\\u062f\\u0648\\u0644\",\n\"Cell\": \"\\u0633\\u0644\\u0648\\u0644\",\n\"Row\": \"\\u0633\\u0637\\u0631\",\n\"Column\": \"\\u0633\\u062a\\u0648\\u0646\",\n\"Cell properties\": \"\\u062a\\u0646\\u0638\\u06cc\\u0645\\u0627\\u062a \\u0633\\u0644\\u0648\\u0644\",\n\"Merge cells\": \"\\u067e\\u06cc\\u0648\\u0646\\u062f \\u0633\\u0644\\u0648\\u0644 \\u0647\\u0627\",\n\"Split cell\": \"\\u062c\\u062f\\u0627 \\u0633\\u0627\\u0632\\u06cc \\u0633\\u0644\\u0648\\u0644\",\n\"Insert row before\": \"\\u062f\\u0631\\u062c \\u0633\\u0637\\u0631 \\u062f\\u0631 \\u0628\\u0627\\u0644\\u0627\",\n\"Insert row after\": \"\\u062f\\u0631\\u062c \\u0633\\u0637\\u0631 \\u062f\\u0631 \\u067e\\u0627\\u06cc\\u06cc\\u0646\",\n\"Delete row\": \"\\u062d\\u0630\\u0641 \\u0633\\u0637\\u0631\",\n\"Row properties\": \"\\u062a\\u0646\\u0638\\u06cc\\u0645\\u0627\\u062a \\u0633\\u0637\\u0631\",\n\"Cut row\": \"\\u0628\\u0631\\u0634 \\u0633\\u0637\\u0631\",\n\"Copy row\": \"\\u0631\\u0648\\u0646\\u0648\\u06cc\\u0633\\u06cc \\u0633\\u0637\\u0631\",\n\"Paste row before\": \"\\u0686\\u0633\\u0628\\u0627\\u0646\\u062f\\u0646 \\u0633\\u0637\\u0631 \\u062f\\u0631 \\u0628\\u0627\\u0644\\u0627\",\n\"Paste row after\": \"\\u0686\\u0633\\u0628\\u0627\\u0646\\u062f\\u0646 \\u0633\\u0637\\u0631 \\u062f\\u0631 \\u067e\\u0627\\u06cc\\u06cc\\u0646\",\n\"Insert column before\": \"\\u062f\\u0631\\u062c \\u0633\\u062a\\u0648\\u0646 \\u0642\\u0628\\u0644\",\n\"Insert column after\": \"\\u062f\\u0631\\u062c \\u0633\\u062a\\u0648\\u0646 \\u0628\\u0639\\u062f\",\n\"Delete column\": \"\\u062d\\u0630\\u0641 \\u0633\\u062a\\u0648\\u0646\",\n\"Cols\": \"\\u0633\\u062a\\u0648\\u0646 \\u0647\\u0627\",\n\"Rows\": \"\\u0633\\u0637\\u0631 \\u0647\\u0627\",\n\"Width\": \"\\u0639\\u0631\\u0636\",\n\"Height\": \"\\u0627\\u0631\\u062a\\u0641\\u0627\\u0639\",\n\"Cell spacing\": \"\\u0641\\u0627\\u0635\\u0644\\u0647 \\u0645\\u06cc\\u0627\\u0646 \\u0633\\u0644\\u0648\\u0644\\u06cc\",\n\"Cell padding\": \"\\u062d\\u0627\\u0634\\u06cc\\u0647 \\u062f\\u0631\\u0648\\u0646 \\u0633\\u0644\\u0648\\u0644\\u06cc\",\n\"Show caption\": \"\\u0646\\u0645\\u0627\\u06cc\\u0634 \\u0639\\u0646\\u0648\\u0627\\u0646\",\n\"Left\": \"\\u0686\\u067e\",\n\"Center\": \"\\u0645\\u06cc\\u0627\\u0646\\u0647\",\n\"Right\": \"\\u0631\\u0627\\u0633\\u062a\",\n\"Cell type\": \"\\u0646\\u0648\\u0639 \\u0633\\u0644\\u0648\\u0644\",\n\"Scope\": \"\\u062d\\u0648\\u0632\\u0647\",\n\"Alignment\": \"\\u0647\\u0645 \\u062a\\u0631\\u0627\\u0632\\u06cc\",\n\"H Align\": \"\\u062a\\u0631\\u0627\\u0632 \\u0627\\u0641\\u0642\\u06cc\",\n\"V Align\": \"\\u062a\\u0631\\u0627\\u0632 \\u0639\\u0645\\u0648\\u062f\\u06cc\",\n\"Top\": \"\\u0628\\u0627\\u0644\\u0627\",\n\"Middle\": \"\\u0645\\u06cc\\u0627\\u0646\\u0647\",\n\"Bottom\": \"\\u067e\\u0627\\u06cc\\u06cc\\u0646\",\n\"Header cell\": \"\\u0633\\u0644\\u0648\\u0644 \\u0633\\u0631 \\u0633\\u062a\\u0648\\u0646\",\n\"Row group\": \"\\u06af\\u0631\\u0648\\u0647 \\u0633\\u0637\\u0631\\u06cc\",\n\"Column group\": \"\\u06af\\u0631\\u0648\\u0647 \\u0633\\u062a\\u0648\\u0646\\u06cc\",\n\"Row type\": \"\\u0646\\u0648\\u0639 \\u0633\\u0637\\u0631\",\n\"Header\": \"\\u0633\\u0631 \\u0622\\u0645\\u062f\",\n\"Body\": \"\\u0628\\u062f\\u0646\\u0647\",\n\"Footer\": \"\\u067e\\u0627 \\u0646\\u0648\\u0634\\u062a\",\n\"Border color\": \"\\u0631\\u0646\\u06af \\u0644\\u0628\\u0647\",\n\"Insert template...\": \"\\u062f\\u0631\\u062c \\u0627\\u0644\\u06af\\u0648...\",\n\"Templates\": \"\\u0627\\u0644\\u06af\\u0648\\u0647\\u0627\",\n\"Template\": \"\\u0627\\u0644\\u06af\\u0648\",\n\"Text color\": \"\\u0631\\u0646\\u06af \\u0645\\u062a\\u0646\",\n\"Background color\": \"\\u0631\\u0646\\u06af \\u067e\\u0633 \\u0632\\u0645\\u06cc\\u0646\\u0647\",\n\"Custom...\": \"\\u062f\\u0644\\u062e\\u0648\\u0627\\u0647...\",\n\"Custom color\": \"\\u0631\\u0646\\u06af \\u062f\\u0644\\u062e\\u0648\\u0627\\u0647\",\n\"No color\": \"\\u0628\\u062f\\u0648\\u0646 \\u0631\\u0646\\u06af\",\n\"Remove color\": \"\\u062d\\u0630\\u0641 \\u0631\\u0646\\u06af\",\n\"Table of Contents\": \"\\u0641\\u0647\\u0631\\u0633\\u062a \\u0639\\u0646\\u0627\\u0648\\u06cc\\u0646\",\n\"Show blocks\": \"\\u0646\\u0645\\u0627\\u06cc\\u0634 \\u0628\\u0644\\u0648\\u06a9 \\u0647\\u0627\",\n\"Show invisible characters\": \"\\u0646\\u0645\\u0627\\u06cc\\u0634 \\u0646\\u0648\\u06cc\\u0633\\u0647 \\u0647\\u0627\\u06cc \\u0646\\u0627\\u067e\\u06cc\\u062f\\u0627\",\n\"Word count\": \"\\u062a\\u0639\\u062f\\u0627\\u062f \\u0648\\u0627\\u0698\\u0647\\u200c\\u0647\\u0627\",\n\"Words: {0}\": \"\\u0648\\u0627\\u0698\\u0647 \\u0647\\u0627: {0}\",\n\"{0} words\": \"{0} \\u0648\\u0627\\u0698\\u0647\",\n\"File\": \"\\u067e\\u0631\\u0648\\u0646\\u062f\\u0647\",\n\"Edit\": \"\\u0648\\u06cc\\u0631\\u0627\\u06cc\\u0634\",\n\"Insert\": \"\\u062f\\u0631\\u062c\",\n\"View\": \"\\u0646\\u0645\\u0627\\u06cc\\u0634\",\n\"Format\": \"\\u0642\\u0627\\u0644\\u0628\",\n\"Table\": \"\\u062c\\u062f\\u0648\\u0644\",\n\"Tools\": \"\\u0627\\u0628\\u0632\\u0627\\u0631\\u0647\\u0627\",\n\"Powered by {0}\": \"\\u062a\\u0648\\u0627\\u0646 \\u06af\\u0631\\u0641\\u062a\\u0647 \\u0627\\u0632 {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u0646\\u0627\\u062d\\u06cc\\u0647 \\u0645\\u062a\\u0646 \\u063a\\u0646\\u06cc.\\n\\u062c\\u0647\\u062a \\u0645\\u0634\\u0627\\u0647\\u062f\\u0647 \\u0645\\u0646\\u0648 \\u0627\\u0632 \\u06a9\\u0644\\u06cc\\u062f\\u0647\\u0627\\u06cc \\u062a\\u0631\\u06a9\\u06cc\\u0628\\u06cc ALT + F9 \\u0627\\u0633\\u062a\\u0641\\u0627\\u062f\\u0647 \\u0646\\u0645\\u0627\\u06cc\\u06cc\\u062f.\\n\\u062c\\u0647\\u062a \\u0645\\u0634\\u0627\\u0647\\u062f\\u0647 \\u0646\\u0648\\u0627\\u0631 \\u0627\\u0628\\u0632\\u0627\\u0631 \\u0627\\u0632 \\u06a9\\u0644\\u06cc\\u062f\\u0647\\u0627\\u06cc \\u062a\\u0631\\u06a9\\u06cc\\u0628\\u06cc ALT + F10 \\u0627\\u0633\\u062a\\u0641\\u0627\\u062f\\u0647 \\u0646\\u0645\\u0627\\u06cc\\u06cc\\u062f.\\n\\u062c\\u0647\\u062a \\u0645\\u0634\\u0627\\u0647\\u062f\\u0647 \\u0631\\u0627\\u0647\\u0646\\u0645\\u0627 \\u0627\\u0632 \\u06a9\\u0644\\u06cc\\u062f\\u0647\\u0627\\u06cc \\u062a\\u0631\\u06a9\\u06cc\\u0628\\u06cc ALT + 0 \\u0627\\u0633\\u062a\\u0641\\u0627\\u062f\\u0647 \\u0646\\u0645\\u0627\\u06cc\\u06cc\\u062f.\",\n\"Image title\": \"\\u0639\\u0646\\u0648\\u0627\\u0646 \\u062a\\u0635\\u0648\\u06cc\\u0631\",\n\"Border width\": \"\\u0639\\u0631\\u0636 \\u062d\\u0627\\u0634\\u06cc\\u0647\",\n\"Border style\": \"\\u0633\\u0628\\u06a9 \\u062d\\u0627\\u0634\\u06cc\\u0647\",\n\"Error\": \"\\u062e\\u0637\\u0627\",\n\"Warn\": \"\\u0647\\u0634\\u062f\\u0627\\u0631\",\n\"Valid\": \"\\u0645\\u0639\\u062a\\u0628\\u0631\",\n\"To open the popup, press Shift+Enter\": \"\\u062c\\u0647\\u062a \\u0628\\u0627\\u0632 \\u06a9\\u0631\\u062f\\u0646 \\u067e\\u0646\\u062c\\u0631\\u0647 \\u0628\\u0627\\u0632\\u0634\\u0648\\u060c \\u06a9\\u0644\\u06cc\\u062f\\u0647\\u0627\\u06cc Shift + Enter \\u0631\\u0627 \\u0641\\u0634\\u0627\\u0631 \\u062f\\u0647\\u06cc\\u062f.\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u0646\\u0627\\u062d\\u06cc\\u0647 \\u0645\\u062a\\u0646 \\u063a\\u0646\\u06cc. \\u062c\\u0647\\u062a \\u0645\\u0634\\u0627\\u0647\\u062f\\u0647\\u0654 \\u0631\\u0627\\u0647\\u0646\\u0645\\u0627 \\u06a9\\u0644\\u06cc\\u062f\\u0647\\u0627\\u06cc ALT + 0 \\u0631\\u0627 \\u0641\\u0634\\u0627\\u0631 \\u062f\\u0647\\u06cc\\u062f.\",\n\"System Font\": \"\\u0641\\u0648\\u0646\\u062a \\u0633\\u06cc\\u0633\\u062a\\u0645\\u06cc\",\n\"Failed to upload image: {0}\": \"\\u0639\\u062f\\u0645 \\u0645\\u0648\\u0641\\u0642\\u06cc\\u062a \\u062f\\u0631 \\u0628\\u0627\\u0631\\u06af\\u0630\\u0627\\u0631\\u06cc \\u062a\\u0635\\u0648\\u06cc\\u0631: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u0639\\u062f\\u0645 \\u0645\\u0648\\u0641\\u0642\\u06cc\\u062a \\u062f\\u0631 \\u0628\\u0627\\u0631\\u06af\\u0630\\u0627\\u0631\\u06cc \\u0627\\u0641\\u0632\\u0648\\u0646\\u0647: {0} \\u0627\\u0632 \\u0646\\u0634\\u0627\\u0646\\u06cc \\u0648\\u0628 {1}\",\n\"Failed to load plugin url: {0}\": \"\\u0639\\u062f\\u0645 \\u0645\\u0648\\u0641\\u0642\\u06cc\\u062a \\u062f\\u0631 \\u0628\\u0627\\u0631\\u06af\\u0630\\u0627\\u0631\\u06cc \\u0646\\u0634\\u0627\\u0646\\u06cc \\u0648\\u0628 \\u0627\\u0641\\u0632\\u0648\\u0646\\u0647: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u0639\\u062f\\u0645 \\u0645\\u0648\\u0641\\u0642\\u06cc\\u062a \\u062f\\u0631 \\u0631\\u0627\\u0647\\u200c\\u0627\\u0646\\u062f\\u0627\\u0632\\u06cc \\u0627\\u0641\\u0632\\u0648\\u0646\\u0647: {0}\",\n\"example\": \"\\u0645\\u062b\\u0627\\u0644\",\n\"Search\": \"\\u062c\\u0633\\u062a\\u062c\\u0648\",\n\"All\": \"\\u0647\\u0645\\u0647\",\n\"Currency\": \"\\u0627\\u0631\\u0632\",\n\"Text\": \"\\u0645\\u062a\\u0646\",\n\"Quotations\": \"\\u0646\\u0642\\u0644\\u200c\\u0642\\u0648\\u0644\\u200c\\u0647\\u0627\",\n\"Mathematical\": \"\\u0631\\u06cc\\u0627\\u0636\\u06cc\",\n\"Extended Latin\": \"\\u0644\\u0627\\u062a\\u06cc\\u0646 \\u06af\\u0633\\u062a\\u0631\\u062f\\u0647\",\n\"Symbols\": \"\\u0646\\u0645\\u0627\\u062f\\u0647\\u0627\",\n\"Arrows\": \"\\u067e\\u06cc\\u06a9\\u0627\\u0646\\u200c\\u0647\\u0627\",\n\"User Defined\": \"\\u0628\\u0647 \\u062e\\u0648\\u0627\\u0633\\u062a \\u06a9\\u0627\\u0631\\u0628\\u0631\",\n\"dollar sign\": \"\\u0646\\u0645\\u0627\\u062f \\u062f\\u0644\\u0627\\u0631\",\n\"currency sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0627\\u0631\\u0632\",\n\"euro-currency sign\": \"\\u0646\\u0645\\u0627\\u062f \\u06cc\\u0648\\u0631\\u0648\",\n\"colon sign\": \"\\u0646\\u0645\\u0627\\u062f \\u062f\\u0648\\u0646\\u0642\\u0637\\u0647\",\n\"cruzeiro sign\": \"\\u0646\\u0645\\u0627\\u062f \\u06a9\\u0631\\u0648\\u0632\\u06cc\\u0631\\u0648\",\n\"french franc sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0641\\u0631\\u0627\\u0646\\u06a9 \\u0641\\u0631\\u0627\\u0646\\u0633\\u0647\",\n\"lira sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0644\\u06cc\\u0631\\u0647\",\n\"mill sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0645\\u06cc\\u0644\",\n\"naira sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0646\\u0627\\u06cc\\u0631\\u0627\",\n\"peseta sign\": \"\\u0646\\u0645\\u0627\\u062f \\u067e\\u0632\\u062a\\u0627\",\n\"rupee sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0631\\u0648\\u067e\\u06cc\\u0647\",\n\"won sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0648\\u0648\\u0646\",\n\"new sheqel sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0634\\u06a9\\u0644 \\u062c\\u062f\\u06cc\\u062f\",\n\"dong sign\": \"\\u0646\\u0645\\u0627\\u062f \\u062f\\u0627\\u0646\\u06af\",\n\"kip sign\": \"\\u0646\\u0645\\u0627\\u062f \\u06a9\\u06cc\\u067e\",\n\"tugrik sign\": \"\\u0646\\u0645\\u0627\\u062f \\u062a\\u0648\\u06af\\u0631\\u0648\\u06af\",\n\"drachma sign\": \"\\u0646\\u0645\\u0627\\u062f \\u062f\\u0631\\u0627\\u062e\\u0645\\u0627\",\n\"german penny symbol\": \"\\u0646\\u0645\\u0627\\u062f \\u067e\\u0646\\u06cc \\u0622\\u0644\\u0645\\u0627\\u0646\\u06cc\",\n\"peso sign\": \"\\u0646\\u0645\\u0627\\u062f \\u067e\\u0632\\u0648\",\n\"guarani sign\": \"\\u0646\\u0645\\u0627\\u062f \\u06af\\u0648\\u0627\\u0631\\u0627\\u0646\\u06cc\",\n\"austral sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0622\\u0633\\u062a\\u0631\\u0627\\u0644\",\n\"hryvnia sign\": \"\\u0646\\u0645\\u0627\\u062f \\u06af\\u0631\\u06cc\\u0648\\u0646\\u0627\",\n\"cedi sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0633\\u062f\\u06cc\",\n\"livre tournois sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0644\\u06cc\\u0648\\u0631\\u0647 \\u062a\\u0648\\u0631\\u0646\\u0648\\u0627\",\n\"spesmilo sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0627\\u0633\\u067e\\u0633\\u0645\\u06cc\\u0644\\u0648\",\n\"tenge sign\": \"\\u0646\\u0645\\u0627\\u062f \\u062a\\u0646\\u06af\\u0647\",\n\"indian rupee sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0631\\u0648\\u067e\\u06cc\\u0647 \\u0647\\u0646\\u062f\\u06cc\",\n\"turkish lira sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0644\\u06cc\\u0631\\u0647 \\u062a\\u0631\\u06a9\\u06cc\",\n\"nordic mark sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0645\\u0627\\u0631\\u06a9 \\u0646\\u0631\\u0648\\u0698\",\n\"manat sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0645\\u0646\\u0627\\u062a\",\n\"ruble sign\": \"\\u0646\\u0645\\u0627\\u062f \\u0631\\u0648\\u0628\\u0644\",\n\"yen character\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647 \\u06cc\\u0646\",\n\"yuan character\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647 \\u06cc\\u0648\\u0627\\u0646\",\n\"yuan character, in hong kong and taiwan\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647 \\u06cc\\u0648\\u0627\\u0646\\u060c \\u062f\\u0631 \\u0647\\u0646\\u06af\\u200c\\u06a9\\u0646\\u06af \\u0648 \\u062a\\u0627\\u06cc\\u0648\\u0627\\u0646\",\n\"yen\\/yuan character variant one\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647 \\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646 \\u06cc\\u0646\\/\\u06cc\\u0648\\u0627\\u0646\",\n\"Loading emoticons...\": \"\\u062f\\u0631 \\u062d\\u0627\\u0644 \\u0628\\u0627\\u0631\\u06af\\u0630\\u0627\\u0631\\u06cc \\u0634\\u06a9\\u0644\\u06a9\\u200c\\u0647\\u0627...\",\n\"Could not load emoticons\": \"\\u0634\\u06a9\\u0644\\u06a9\\u200c\\u0647\\u0627 \\u0628\\u0627\\u0631\\u06af\\u0630\\u0627\\u0631\\u06cc \\u0646\\u0634\\u062f\\u0646\\u062f\",\n\"People\": \"\\u0627\\u0641\\u0631\\u0627\\u062f\",\n\"Animals and Nature\": \"\\u062d\\u06cc\\u0648\\u0627\\u0646\\u0627\\u062a \\u0648 \\u0637\\u0628\\u06cc\\u0639\\u062a\",\n\"Food and Drink\": \"\\u063a\\u0630\\u0627 \\u0648 \\u0646\\u0648\\u0634\\u06cc\\u062f\\u0646\\u06cc\",\n\"Activity\": \"\\u0641\\u0639\\u0627\\u0644\\u06cc\\u062a\",\n\"Travel and Places\": \"\\u0633\\u0641\\u0631 \\u0648 \\u0627\\u0645\\u0627\\u06a9\\u0646\",\n\"Objects\": \"\\u0627\\u0634\\u06cc\\u0627\",\n\"Flags\": \"\\u067e\\u0631\\u0686\\u0645\\u200c\\u0647\\u0627\",\n\"Characters\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647\\u200c\\u0647\\u0627\",\n\"Characters (no spaces)\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647 \\u0647\\u0627 (\\u0628\\u062f\\u0648\\u0646 \\u0641\\u0627\\u0635\\u0644\\u0647)\",\n\"Error: Form submit field collision.\": \"\\u062e\\u0637\\u0627: \\u062a\\u062f\\u0627\\u062e\\u0644 \\u062f\\u0631 \\u062b\\u0628\\u062a \\u0641\\u0631\\u0645.\",\n\"Error: No form element found.\": \"\\u062e\\u0637\\u0627: \\u0647\\u06cc\\u0686 \\u0627\\u0644\\u0645\\u0627\\u0646 \\u0641\\u0631\\u0645\\u06cc \\u06cc\\u0627\\u0641\\u062a \\u0646\\u0634\\u062f.\",\n\"Update\": \"\\u0628\\u0647\\u200c\\u0631\\u0648\\u0632\\u0631\\u0633\\u0627\\u0646\\u06cc\",\n\"Color swatch\": \"\\u0646\\u0645\\u0648\\u0646\\u0647 \\u0631\\u0646\\u06af\",\n\"Turquoise\": \"\\u0641\\u06cc\\u0631\\u0648\\u0632\\u0647\\u200c\\u0627\\u06cc\",\n\"Green\": \"\\u0633\\u0628\\u0632\",\n\"Blue\": \"\\u0622\\u0628\\u06cc\",\n\"Purple\": \"\\u0628\\u0646\\u0641\\u0634\",\n\"Navy Blue\": \"\\u0633\\u0631\\u0645\\u0647\\u200c\\u0627\\u06cc\",\n\"Dark Turquoise\": \"\\u0641\\u06cc\\u0631\\u0648\\u0632\\u0647\\u200c\\u0627\\u06cc \\u062a\\u06cc\\u0631\\u0647\",\n\"Dark Green\": \"\\u0633\\u0628\\u0632 \\u062a\\u06cc\\u0631\\u0647\",\n\"Medium Blue\": \"\\u0622\\u0628\\u06cc \\u0633\\u06cc\\u0631\",\n\"Medium Purple\": \"\\u0622\\u0628\\u06cc \\u0628\\u0646\\u0641\\u0634\",\n\"Midnight Blue\": \"\\u0622\\u0628\\u06cc \\u0646\\u0641\\u062a\\u06cc\",\n\"Yellow\": \"\\u0632\\u0631\\u062f\",\n\"Orange\": \"\\u0646\\u0627\\u0631\\u0646\\u062c\\u06cc\",\n\"Red\": \"\\u0642\\u0631\\u0645\\u0632\",\n\"Light Gray\": \"\\u062e\\u0627\\u06a9\\u0633\\u062a\\u0631\\u06cc \\u0631\\u0648\\u0634\\u0646\",\n\"Gray\": \"\\u062e\\u0627\\u06a9\\u0633\\u062a\\u0631\\u06cc\",\n\"Dark Yellow\": \"\\u0632\\u0631\\u062f \\u062a\\u06cc\\u0631\\u0647\",\n\"Dark Orange\": \"\\u0646\\u0627\\u0631\\u0646\\u062c\\u06cc \\u062a\\u06cc\\u0631\\u0647\",\n\"Dark Red\": \"\\u0642\\u0631\\u0645\\u0632 \\u062a\\u06cc\\u0631\\u0647\",\n\"Medium Gray\": \"\\u062e\\u0627\\u06a9\\u0633\\u062a\\u0631\\u06cc \\u0646\\u06cc\\u0645\\u0647\\u200c\\u0631\\u0648\\u0634\\u0646\",\n\"Dark Gray\": \"\\u062e\\u0627\\u06a9\\u0633\\u062a\\u0631\\u06cc \\u062a\\u06cc\\u0631\\u0647\",\n\"Black\": \"\\u0633\\u06cc\\u0627\\u0647\",\n\"White\": \"\\u0633\\u0641\\u06cc\\u062f\",\n\"Switch to or from fullscreen mode\": \"\\u062a\\u063a\\u06cc\\u06cc\\u0631 \\u0627\\u0632 \\u062d\\u0627\\u0644\\u062a \\u062a\\u0645\\u0627\\u0645\\u200c\\u0635\\u0641\\u062d\\u0647 \\u06cc\\u0627 \\u0628\\u0647 \\u062d\\u0627\\u0644\\u062a \\u062a\\u0645\\u0627\\u0645\\u200c\\u0635\\u0641\\u062d\\u0647\",\n\"Open help dialog\": \"\\u0628\\u0627\\u0632 \\u06a9\\u0631\\u062f\\u0646 \\u06a9\\u0627\\u062f\\u0631 \\u0631\\u0627\\u0647\\u0646\\u0645\\u0627\",\n\"history\": \"\\u062a\\u0627\\u0631\\u06cc\\u062e\\u0686\\u0647\",\n\"styles\": \"\\u0633\\u0628\\u06a9\\u200c\\u0647\\u0627\",\n\"formatting\": \"\\u0642\\u0627\\u0644\\u0628\\u200c\\u0628\\u0646\\u062f\\u06cc\",\n\"alignment\": \"\\u062a\\u0631\\u0627\\u0632\\u0628\\u0646\\u062f\\u06cc\",\n\"indentation\": \"\\u062a\\u0648\\u0631\\u0641\\u062a\\u06af\\u06cc\",\n\"permanent pen\": \"\\u0642\\u0644\\u0645 \\u062f\\u0627\\u0626\\u0645\\u06cc\",\n\"comments\": \"\\u0646\\u0638\\u0631\\u0627\\u062a\",\n\"Anchor\": \"\\u0642\\u0644\\u0627\\u0628\",\n\"Special character\": \"\\u0646\\u0648\\u06cc\\u0633\\u0647 \\u0647\\u0627\\u06cc \\u062e\\u0627\\u0635\",\n\"Code sample\": \"\\u0646\\u0645\\u0648\\u0646\\u0647 \\u06a9\\u064f\\u062f\",\n\"Color\": \"\\u0631\\u0646\\u06af\",\n\"Emoticons\": \"\\u0635\\u0648\\u0631\\u062a\\u06a9 \\u0647\\u0627\",\n\"Document properties\": \"\\u062a\\u0646\\u0638\\u06cc\\u0645\\u0627\\u062a \\u0633\\u0646\\u062f\",\n\"Image\": \"\\u062a\\u0635\\u0648\\u06cc\\u0631\",\n\"Insert link\": \"\\u062f\\u0631\\u062c \\u067e\\u06cc\\u0648\\u0646\\u062f\",\n\"Target\": \"\\u0645\\u0642\\u0635\\u062f\",\n\"Link\": \"\\u067e\\u06cc\\u0648\\u0646\\u062f\",\n\"Poster\": \"\\u067e\\u0648\\u0633\\u062a\\u0631\",\n\"Media\": \"\\u0631\\u0633\\u0627\\u0646\\u0647\",\n\"Print\": \"\\u0686\\u0627\\u067e\",\n\"Prev\": \"\\u0642\\u0628\\u0644\\u06cc\",\n\"Find and replace\": \"\\u062c\\u0633\\u062a\\u062c\\u0648 \\u0648 \\u062c\\u0627\\u06cc\\u06af\\u0632\\u06cc\\u0646\\u06cc\",\n\"Whole words\": \"\\u062a\\u0645\\u0627\\u0645 \\u0648\\u0627\\u0698\\u06af\\u0627\\u0646\",\n\"Spellcheck\": \"\\u0628\\u0631\\u0631\\u0633\\u06cc \\u0627\\u0645\\u0644\\u0627\\u0621\",\n\"Caption\": \"\\u0639\\u0646\\u0648\\u0627\\u0646\",\n\"Insert template\": \"\\u062f\\u0631\\u062c \\u0627\\u0644\\u06af\\u0648\",\n\"_dir\": \"rtl\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/fi.js",
    "content": "tinymce.addI18n('fi',{\n\"Redo\": \"Tee uudelleen\",\n\"Undo\": \"Kumoa\",\n\"Cut\": \"Leikkaa\",\n\"Copy\": \"Kopioi\",\n\"Paste\": \"Liit\\u00e4\",\n\"Select all\": \"Valitse kaikki\",\n\"New document\": \"Uusi asiakirja\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Peruuta\",\n\"Visual aids\": \"Visuaaliset neuvot\",\n\"Bold\": \"Lihavoitu\",\n\"Italic\": \"Kursivoitu\",\n\"Underline\": \"Alleviivaus\",\n\"Strikethrough\": \"Yliviivaus\",\n\"Superscript\": \"Yl\\u00e4indeksi\",\n\"Subscript\": \"Alaindeksi\",\n\"Clear formatting\": \"Poista muotoilu\",\n\"Align left\": \"Tasaa vasemmalle\",\n\"Align center\": \"Tasaa keskelle\",\n\"Align right\": \"Tasaa oikealle\",\n\"Justify\": \"Tasaus\",\n\"Bullet list\": \"J\\u00e4rjest\\u00e4m\\u00e4t\\u00f6n lista\",\n\"Numbered list\": \"J\\u00e4rjestetty lista\",\n\"Decrease indent\": \"Sisenn\\u00e4\",\n\"Increase indent\": \"Loitonna\",\n\"Close\": \"Sulje\",\n\"Formats\": \"Muotoilut\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Selaimesi ei tue leikep\\u00f6yd\\u00e4n suoraa k\\u00e4ytt\\u00e4mist\\u00e4. Ole hyv\\u00e4 ja k\\u00e4yt\\u00e4 n\\u00e4pp\\u00e4imist\\u00f6n Ctrl+X\\/C\\/V n\\u00e4pp\\u00e4inyhdistelmi\\u00e4.\",\n\"Headers\": \"Otsikot\",\n\"Header 1\": \"Otsikko 1\",\n\"Header 2\": \"Otsikko 2\",\n\"Header 3\": \"Otsikko 3\",\n\"Header 4\": \"Otsikko 4\",\n\"Header 5\": \"Otsikko 5\",\n\"Header 6\": \"Otsikko 6\",\n\"Headings\": \"Otsikot\",\n\"Heading 1\": \"Otsikko 1\",\n\"Heading 2\": \"Otsikko 2\",\n\"Heading 3\": \"Otsikko 3\",\n\"Heading 4\": \"Otsikko 4\",\n\"Heading 5\": \"Otsikko 5\",\n\"Heading 6\": \"Otsikko 6\",\n\"Preformatted\": \"Esimuotoiltu\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Koodi\",\n\"Paragraph\": \"Kappale\",\n\"Blockquote\": \"Lohkolainaus\",\n\"Inline\": \"Samalla rivill\\u00e4\",\n\"Blocks\": \"Lohkot\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Liitt\\u00e4minen on nyt pelk\\u00e4n tekstin -tilassa. Sis\\u00e4ll\\u00f6t liitet\\u00e4\\u00e4n nyt pelkk\\u00e4n\\u00e4 tekstin\\u00e4, kunnes otat vaihtoehdon pois k\\u00e4yt\\u00f6st\\u00e4.\",\n\"Fonts\": \"Fontti\",\n\"Font Sizes\": \"Fonttikoko\",\n\"Class\": \"Luokka\",\n\"Browse for an image\": \"Selaa kuvia\",\n\"OR\": \"TAI\",\n\"Drop an image here\": \"Pudota kuva t\\u00e4h\\u00e4n\",\n\"Upload\": \"Vie\",\n\"Block\": \"Lohko\",\n\"Align\": \"Tasaa\",\n\"Default\": \"Oletus\",\n\"Circle\": \"Pallo\",\n\"Disc\": \"Ympyr\\u00e4\",\n\"Square\": \"Neli\\u00f6\",\n\"Lower Alpha\": \"pienet kirjaimet: a, b, c\",\n\"Lower Greek\": \"pienet kirjaimet: \\u03b1, \\u03b2, \\u03b3\",\n\"Lower Roman\": \"pienet kirjaimet: i, ii, iii\",\n\"Upper Alpha\": \"isot kirjaimet: A, B, C\",\n\"Upper Roman\": \"isot kirjaimet: I, II, III\",\n\"Anchor...\": \"Ankkuri...\",\n\"Name\": \"Nimi\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id voi alkaa kirjaimella, sen j\\u00e4lkeen voi k\\u00e4ytt\\u00e4\\u00e4 kirjaimia, numeroja, viivoja, pisteit\\u00e4, kaksoispistett\\u00e4 ja alaviivausta\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Sinulla on tallentamattomia muutoksia, haluatko varmasti siirty\\u00e4 toiselle sivulle?\",\n\"Restore last draft\": \"Palauta aiempi luonnos\",\n\"Special character...\": \"Erikoismerkki...\",\n\"Source code\": \"L\\u00e4hdekoodi\",\n\"Insert\\/Edit code sample\": \"Lis\\u00e4\\u00e4\\/muokkaa koodiesimerkki\",\n\"Language\": \"Kieli\",\n\"Code sample...\": \"Koodin\\u00e4yte...\",\n\"Color Picker\": \"V\\u00e4rivalitsin\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Vasemmalta oikealle\",\n\"Right to left\": \"Oikealta vasemmalle\",\n\"Emoticons...\": \"Emoticonit...\",\n\"Metadata and Document Properties\": \"Metadata ja asiakirjan ominaisuudet\",\n\"Title\": \"Otsikko\",\n\"Keywords\": \"Avainsanat\",\n\"Description\": \"Kuvaus\",\n\"Robots\": \"Robotit\",\n\"Author\": \"Tekij\\u00e4\",\n\"Encoding\": \"Merkist\\u00f6\",\n\"Fullscreen\": \"Koko ruutu\",\n\"Action\": \"Toiminto\",\n\"Shortcut\": \"Oikotie\",\n\"Help\": \"Ohje\",\n\"Address\": \"Osoite\",\n\"Focus to menubar\": \"Kohdistus valikkoon\",\n\"Focus to toolbar\": \"Kohdistus ty\\u00f6kalupalkkiin\",\n\"Focus to element path\": \"Kohdistus elementtiin\",\n\"Focus to contextual toolbar\": \"Kohdistus kontekstuaaliseen ty\\u00f6kalupalkkiin\",\n\"Insert link (if link plugin activated)\": \"Lis\\u00e4\\u00e4 linkki (jos linkki-liit\\u00e4nn\\u00e4inen aktiivinen)\",\n\"Save (if save plugin activated)\": \"Tallenna (jos tallenna-liit\\u00e4nn\\u00e4inen aktiivinen)\",\n\"Find (if searchreplace plugin activated)\": \"Etsi (jos etsikorvaa-liit\\u00e4nn\\u00e4inen aktiivinen)\",\n\"Plugins installed ({0}):\": \"Asennetut liit\\u00e4nn\\u00e4iset ({0}):\",\n\"Premium plugins:\": \"Premium liit\\u00e4nn\\u00e4iset:\",\n\"Learn more...\": \"Lis\\u00e4tietoja...\",\n\"You are using {0}\": \"K\\u00e4yt\\u00e4t {0}\",\n\"Plugins\": \"Liit\\u00e4nn\\u00e4iset\",\n\"Handy Shortcuts\": \"K\\u00e4tev\\u00e4t pikan\\u00e4pp\\u00e4imet\",\n\"Horizontal line\": \"Vaakasuora viiva\",\n\"Insert\\/edit image\": \"Lis\\u00e4\\u00e4\\/muokkaa kuva\",\n\"Image description\": \"Kuvaus\",\n\"Source\": \"L\\u00e4hde\",\n\"Dimensions\": \"Mittasuhteet\",\n\"Constrain proportions\": \"S\\u00e4ilyt\\u00e4 mittasuhteet\",\n\"General\": \"Yleiset\",\n\"Advanced\": \"Lis\\u00e4asetukset\",\n\"Style\": \"Tyyli\",\n\"Vertical space\": \"Vertikaalinen tila\",\n\"Horizontal space\": \"Horisontaalinen tila\",\n\"Border\": \"Reunus\",\n\"Insert image\": \"Lis\\u00e4\\u00e4 kuva\",\n\"Image...\": \"Kuva...\",\n\"Image list\": \"Kuvalista\",\n\"Rotate counterclockwise\": \"Kierr\\u00e4 vastap\\u00e4iv\\u00e4\\u00e4n\",\n\"Rotate clockwise\": \"Kierr\\u00e4 my\\u00f6t\\u00e4p\\u00e4iv\\u00e4\\u00e4n\",\n\"Flip vertically\": \"K\\u00e4\\u00e4nn\\u00e4 pystysuunnassa\",\n\"Flip horizontally\": \"K\\u00e4\\u00e4nn\\u00e4 vaakasuunnassa\",\n\"Edit image\": \"Muokkaa kuvaa\",\n\"Image options\": \"Kuvan asetukset\",\n\"Zoom in\": \"L\\u00e4henn\\u00e4\",\n\"Zoom out\": \"Loitonna\",\n\"Crop\": \"Rajaa valintaan\",\n\"Resize\": \"Kuvan koon muutos\",\n\"Orientation\": \"Suunta\",\n\"Brightness\": \"Kirkkaus\",\n\"Sharpen\": \"Ter\\u00e4vyys\",\n\"Contrast\": \"Kontrasti\",\n\"Color levels\": \"V\\u00e4ritasot\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"K\\u00e4\\u00e4nteinen\",\n\"Apply\": \"Aseta\",\n\"Back\": \"Takaisin\",\n\"Insert date\\/time\": \"Lis\\u00e4\\u00e4 p\\u00e4iv\\u00e4m\\u00e4\\u00e4r\\u00e4 tai aika\",\n\"Date\\/time\": \"P\\u00e4iv\\u00e4m\\u00e4\\u00e4r\\u00e4\\/aika\",\n\"Insert\\/Edit Link\": \"Lis\\u00e4\\u00e4 linkki\\/muokkaa linkki\\u00e4\",\n\"Insert\\/edit link\": \"Lis\\u00e4\\u00e4\\/muokkaa linkki\",\n\"Text to display\": \"N\\u00e4ytett\\u00e4v\\u00e4 teksti\",\n\"Url\": \"Osoite\",\n\"Open link in...\": \"Avaa linkki...\",\n\"Current window\": \"Nykyinen ikkuna\",\n\"None\": \"Ei mit\\u00e4\\u00e4n\",\n\"New window\": \"Uusi ikkuna\",\n\"Remove link\": \"Poista linkki\",\n\"Anchors\": \"Ankkurit\",\n\"Link...\": \"Linkki...\",\n\"Paste or type a link\": \"Sijoita tai kirjoita linkki\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Antamasi osoite n\\u00e4ytt\\u00e4\\u00e4 olevan s\\u00e4hk\\u00f6postiosoite. Haluatko lis\\u00e4t\\u00e4 osoitteeseen vaaditun mailto: -etuliitteen?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Antamasi osoite n\\u00e4ytt\\u00e4\\u00e4 olevan ulkoinen linkki. Haluatko lis\\u00e4t\\u00e4 osoitteeseen vaaditun http:\\/\\/ -etuliitteen?\",\n\"Link list\": \"Linkkilista\",\n\"Insert video\": \"Lis\\u00e4\\u00e4 video\",\n\"Insert\\/edit video\": \"Lis\\u00e4\\u00e4\\/muokkaa video\",\n\"Insert\\/edit media\": \"Lis\\u00e4\\u00e4\\/muokkaa media\",\n\"Alternative source\": \"Vaihtoehtoinen l\\u00e4hde\",\n\"Alternative source URL\": \"Vaihtoehtoinen l\\u00e4hde-URL\",\n\"Media poster (Image URL)\": \"Median julkaisija (kuvan URL)\",\n\"Paste your embed code below:\": \"Liit\\u00e4 upotuskoodisi alapuolelle:\",\n\"Embed\": \"Upota\",\n\"Media...\": \"Media...\",\n\"Nonbreaking space\": \"Sitova v\\u00e4lily\\u00f6nti\",\n\"Page break\": \"Sivunvaihto\",\n\"Paste as text\": \"Liit\\u00e4 tekstin\\u00e4\",\n\"Preview\": \"Esikatselu\",\n\"Print...\": \"Tulosta\",\n\"Save\": \"Tallenna\",\n\"Find\": \"Etsi\",\n\"Replace with\": \"Korvaa\",\n\"Replace\": \"Korvaa\",\n\"Replace all\": \"Korvaa kaikki\",\n\"Previous\": \"Edellinen\",\n\"Next\": \"Seur.\",\n\"Find and replace...\": \"Etsi ja korvaa...\",\n\"Could not find the specified string.\": \"Haettua merkkijonoa ei l\\u00f6ytynyt.\",\n\"Match case\": \"Erota isot ja pienet kirjaimet\",\n\"Find whole words only\": \"Etsi vain kokonaisia sanoja\",\n\"Spell check\": \"Oikeinkirjoituksen tarkistus\",\n\"Ignore\": \"\\u00c4l\\u00e4 huomioi\",\n\"Ignore all\": \"\\u00c4l\\u00e4 huomioi mit\\u00e4\\u00e4n\",\n\"Finish\": \"Lopeta\",\n\"Add to Dictionary\": \"Lis\\u00e4\\u00e4 sanakirjaan\",\n\"Insert table\": \"Lis\\u00e4\\u00e4 taulukko\",\n\"Table properties\": \"Taulukon ominaisuudet\",\n\"Delete table\": \"Poista taulukko\",\n\"Cell\": \"Solu\",\n\"Row\": \"Rivi\",\n\"Column\": \"Sarake\",\n\"Cell properties\": \"Solun ominaisuudet\",\n\"Merge cells\": \"Yhdist\\u00e4 solut\",\n\"Split cell\": \"Jaa solu\",\n\"Insert row before\": \"Lis\\u00e4\\u00e4 rivi ennen\",\n\"Insert row after\": \"Lis\\u00e4\\u00e4 rivi j\\u00e4lkeen\",\n\"Delete row\": \"Poista rivi\",\n\"Row properties\": \"Rivin ominaisuudet\",\n\"Cut row\": \"Leikkaa rivi\",\n\"Copy row\": \"Kopioi rivi\",\n\"Paste row before\": \"Liit\\u00e4 rivi ennen\",\n\"Paste row after\": \"Liit\\u00e4 rivi j\\u00e4lkeen\",\n\"Insert column before\": \"Lis\\u00e4\\u00e4 rivi ennen\",\n\"Insert column after\": \"Lis\\u00e4\\u00e4 rivi j\\u00e4lkeen\",\n\"Delete column\": \"Poista sarake\",\n\"Cols\": \"Sarakkeet\",\n\"Rows\": \"Rivit\",\n\"Width\": \"Leveys\",\n\"Height\": \"Korkeus\",\n\"Cell spacing\": \"Solun v\\u00e4li\",\n\"Cell padding\": \"Solun tyhj\\u00e4 tila\",\n\"Show caption\": \"N\\u00e4yt\\u00e4 kuvateksti\",\n\"Left\": \"Vasen\",\n\"Center\": \"Keskell\\u00e4\",\n\"Right\": \"Oikea\",\n\"Cell type\": \"Solun tyyppi\",\n\"Scope\": \"Laajuus\",\n\"Alignment\": \"Tasaus\",\n\"H Align\": \"H tasaus\",\n\"V Align\": \"V tasaus\",\n\"Top\": \"Yl\\u00e4reuna\",\n\"Middle\": \"Keskikohta\",\n\"Bottom\": \"Alareuna\",\n\"Header cell\": \"Otsikkosolu\",\n\"Row group\": \"Riviryhm\\u00e4\",\n\"Column group\": \"Sarakeryhm\\u00e4\",\n\"Row type\": \"Rivityyppi\",\n\"Header\": \"Otsikko\",\n\"Body\": \"Runko\",\n\"Footer\": \"Alaosa\",\n\"Border color\": \"Reunuksen v\\u00e4ri\",\n\"Insert template...\": \"Lis\\u00e4\\u00e4 malli...\",\n\"Templates\": \"Pohjat\",\n\"Template\": \"Pohja\",\n\"Text color\": \"Tekstin v\\u00e4ri\",\n\"Background color\": \"Taustan v\\u00e4ri\",\n\"Custom...\": \"Mukauta...\",\n\"Custom color\": \"Mukautettu v\\u00e4ri\",\n\"No color\": \"Ei v\\u00e4ri\\u00e4\",\n\"Remove color\": \"Poista v\\u00e4ri\",\n\"Table of Contents\": \"Sis\\u00e4llysluettelo\",\n\"Show blocks\": \"N\\u00e4yt\\u00e4 lohkot\",\n\"Show invisible characters\": \"N\\u00e4yt\\u00e4 n\\u00e4kym\\u00e4tt\\u00f6m\\u00e4t merkit\",\n\"Word count\": \"Sanam\\u00e4\\u00e4r\\u00e4\",\n\"Count\": \"M\\u00e4\\u00e4r\\u00e4\",\n\"Document\": \"Tiedosto\",\n\"Selection\": \"Valinta\",\n\"Words\": \"Sanaa\",\n\"Words: {0}\": \"Sanat: {0}\",\n\"{0} words\": \"{0} sanaa\",\n\"File\": \"Tiedosto\",\n\"Edit\": \"Muokkaa\",\n\"Insert\": \"Lis\\u00e4\\u00e4\",\n\"View\": \"N\\u00e4yt\\u00e4\",\n\"Format\": \"Muotoilu\",\n\"Table\": \"Taulukko\",\n\"Tools\": \"Ty\\u00f6kalut\",\n\"Powered by {0}\": \"Tehty {0}:ll\\u00e4\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Rikastetun tekstin alue. Paina ALT-F9 valikkoon. Paina ALT-F10 ty\\u00f6kaluriviin. Paina ALT-0 ohjeeseen.\",\n\"Image title\": \"Kuvan otsikko\",\n\"Border width\": \"Reunuksen leveys\",\n\"Border style\": \"Reunuksen tyyli\",\n\"Error\": \"Virhe\",\n\"Warn\": \"Varoitus\",\n\"Valid\": \"Voimassa\",\n\"To open the popup, press Shift+Enter\": \"Avaa ponnahdusikkuna painamalla Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Rikastetun tekstin alue. Avaa ohje painamalla ALT-0.\",\n\"System Font\": \"J\\u00e4rjestelm\\u00e4fontti\",\n\"Failed to upload image: {0}\": \"Kuvan lataus ep\\u00e4onnistui: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Liit\\u00e4nn\\u00e4isen lataus ep\\u00e4onnistui: {0} url:st\\u00e4 {1}\",\n\"Failed to load plugin url: {0}\": \"Liit\\u00e4nn\\u00e4isen url:n lataus ep\\u00e4onnistui: {0}\",\n\"Failed to initialize plugin: {0}\": \"Liit\\u00e4nn\\u00e4isen alustus ep\\u00e4onnistui: {0}\",\n\"example\": \"esimerkki\",\n\"Search\": \"Etsi\",\n\"All\": \"Kaikki\",\n\"Currency\": \"Valuutta\",\n\"Text\": \"Teksti\",\n\"Quotations\": \"Lainaukset\",\n\"Mathematical\": \"Matemaattiset\",\n\"Extended Latin\": \"Laajennettu latina\",\n\"Symbols\": \"Symbolit\",\n\"Arrows\": \"Nuolet\",\n\"User Defined\": \"K\\u00e4ytt\\u00e4j\\u00e4m\\u00e4\\u00e4ritetty\",\n\"dollar sign\": \"dollarimerkki\",\n\"currency sign\": \"valuuttamerkki\",\n\"euro-currency sign\": \"eurovaluuttamerkki\",\n\"colon sign\": \"kaksoispisteen merkki\",\n\"cruzeiro sign\": \"cruzeiro-merkki\",\n\"french franc sign\": \"ranskalaisen frangin merkki\",\n\"lira sign\": \"liiran merkki\",\n\"mill sign\": \"millin merkki\",\n\"naira sign\": \"nairan merkki\",\n\"peseta sign\": \"pesetan merkki\",\n\"rupee sign\": \"rupian merkki\",\n\"won sign\": \"wonin merkki\",\n\"new sheqel sign\": \"uuden sekelin merkki\",\n\"dong sign\": \"dongin merkki\",\n\"kip sign\": \"kipin merkki\",\n\"tugrik sign\": \"tugrikin merkki\",\n\"drachma sign\": \"drakman merkki\",\n\"german penny symbol\": \"saksalaisen pennin merkki\",\n\"peso sign\": \"peson merkki\",\n\"guarani sign\": \"guaranin merkki\",\n\"austral sign\": \"australin merkki\",\n\"hryvnia sign\": \"hryvnian merkki\",\n\"cedi sign\": \"cedin merkki\",\n\"livre tournois sign\": \"livre tournoisin merkki\",\n\"spesmilo sign\": \"spesmilon merkki\",\n\"tenge sign\": \"tengen merkki\",\n\"indian rupee sign\": \"intialaisen rupian merkki\",\n\"turkish lira sign\": \"turkkilaisen liiran merkki\",\n\"nordic mark sign\": \"pohjoismaisen markan merkki\",\n\"manat sign\": \"manatin merkki\",\n\"ruble sign\": \"ruplan merkki\",\n\"yen character\": \"jenin merkki\",\n\"yuan character\": \"juanin merkki\",\n\"yuan character, in hong kong and taiwan\": \"juanin merkki, Hongkongissa ja Taiwanissa\",\n\"yen\\/yuan character variant one\": \"jenin\\/juanin merkin variantti\",\n\"Loading emoticons...\": \"Ladataan emoticoneja...\",\n\"Could not load emoticons\": \"Emoticoneja ei voitu ladata\",\n\"People\": \"Ihmiset\",\n\"Animals and Nature\": \"El\\u00e4imet ja luonto\",\n\"Food and Drink\": \"Ruoka ja juoma\",\n\"Activity\": \"Aktiviteetit\",\n\"Travel and Places\": \"Matkailu ja paikat\",\n\"Objects\": \"Esineet\",\n\"Flags\": \"Liput\",\n\"Characters\": \"Merkki\\u00e4\",\n\"Characters (no spaces)\": \"Merkki\\u00e4 (ilman v\\u00e4lily\\u00f6ntej\\u00e4)\",\n\"{0} characters\": \"{0} merkki\\u00e4\",\n\"Error: Form submit field collision.\": \"Virhe: lomakkeen l\\u00e4hetyskent\\u00e4n t\\u00f6rm\\u00e4ys.\",\n\"Error: No form element found.\": \"Virhe: muotoelementti\\u00e4 ei l\\u00f6ytynyt.\",\n\"Update\": \"P\\u00e4ivit\\u00e4\",\n\"Color swatch\": \"V\\u00e4rin\\u00e4yte\",\n\"Turquoise\": \"Turkoosi\",\n\"Green\": \"Vihre\\u00e4\",\n\"Blue\": \"Sininen\",\n\"Purple\": \"Purppura\",\n\"Navy Blue\": \"Laivastonsininen\",\n\"Dark Turquoise\": \"Tumma turkoosi\",\n\"Dark Green\": \"Tumma vihre\\u00e4\",\n\"Medium Blue\": \"Keskitumma sininen\",\n\"Medium Purple\": \"Keskitumma purppura\",\n\"Midnight Blue\": \"keskiy\\u00f6n sininen\",\n\"Yellow\": \"Keltainen\",\n\"Orange\": \"Oranssi\",\n\"Red\": \"Punainen\",\n\"Light Gray\": \"Vaaleanharmaa\",\n\"Gray\": \"Harmaa\",\n\"Dark Yellow\": \"Tummankeltainen\",\n\"Dark Orange\": \"Tumma oranssi\",\n\"Dark Red\": \"Tumma punainen\",\n\"Medium Gray\": \"Keskiharmaa\",\n\"Dark Gray\": \"Tummanharmaa\",\n\"Light Green\": \"Vaaleanvihre\\u00e4\",\n\"Light Yellow\": \"Vaaleankeltainen\",\n\"Light Red\": \"Vaaleanpunainen\",\n\"Light Purple\": \"Liila\",\n\"Light Blue\": \"Vaaleansininen\",\n\"Dark Purple\": \"Tummanvioletti\",\n\"Dark Blue\": \"Tummansininen\",\n\"Black\": \"Musta\",\n\"White\": \"Valkoinen\",\n\"Switch to or from fullscreen mode\": \"Vaihda kokon\\u00e4ytt\\u00f6\\u00f6n tai kokon\\u00e4yt\\u00f6st\\u00e4\",\n\"Open help dialog\": \"Avaa ohjeen valintaikkuna\",\n\"history\": \"historia\",\n\"styles\": \"tyylit\",\n\"formatting\": \"muotoiltu\",\n\"alignment\": \"tasaus\",\n\"indentation\": \"sisennys\",\n\"permanent pen\": \"pysyv\\u00e4 kyn\\u00e4\",\n\"comments\": \"kommentit\",\n\"Format Painter\": \"Muotoilusivellin\",\n\"Insert\\/edit iframe\": \"Lis\\u00e4\\u00e4\\/muokkaa iframe-kehyst\\u00e4\",\n\"Capitalization\": \"Kapitalisointi\",\n\"lowercase\": \"pienaakkoset\",\n\"UPPERCASE\": \"SUURAAKKOSET\",\n\"Title Case\": \"Otsikon kapitalisointi\",\n\"Permanent Pen Properties\": \"Pysyv\\u00e4t kyn\\u00e4n ominaisuudet\",\n\"Permanent pen properties...\": \"Pysyv\\u00e4t kyn\\u00e4n ominaisuudet...\",\n\"Font\": \"Fontti\",\n\"Size\": \"Koko\",\n\"More...\": \"Lis\\u00e4\\u00e4...\",\n\"Spellcheck Language\": \"Oikoluvun kieli\",\n\"Select...\": \"Valitse...\",\n\"Preferences\": \"Asetukset\",\n\"Yes\": \"Kyll\\u00e4\",\n\"No\": \"Ei\",\n\"Keyboard Navigation\": \"Navigointi n\\u00e4pp\\u00e4imist\\u00f6ll\\u00e4\",\n\"Version\": \"Versio\",\n\"Anchor\": \"Ankkuri\",\n\"Special character\": \"Erikoismerkki\",\n\"Code sample\": \"Koodiesimerkki\",\n\"Color\": \"V\\u00e4ri\",\n\"Emoticons\": \"Hymi\\u00f6t\",\n\"Document properties\": \"Dokumentin ominaisuudet\",\n\"Image\": \"Kuva\",\n\"Insert link\": \"Lis\\u00e4\\u00e4 linkki\",\n\"Target\": \"Kohde\",\n\"Link\": \"Linkki\",\n\"Poster\": \"L\\u00e4hett\\u00e4j\\u00e4\",\n\"Media\": \"Media\",\n\"Print\": \"Tulosta\",\n\"Prev\": \"Edel.\",\n\"Find and replace\": \"Etsi ja korvaa\",\n\"Whole words\": \"Koko sanat\",\n\"Spellcheck\": \"Oikolue\",\n\"Caption\": \"Seloste\",\n\"Insert template\": \"Lis\\u00e4\\u00e4 pohja\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/fr_FR.js",
    "content": "tinymce.addI18n('fr_FR',{\n\"Redo\": \"R\\u00e9tablir\",\n\"Undo\": \"Annuler\",\n\"Cut\": \"Couper\",\n\"Copy\": \"Copier\",\n\"Paste\": \"Coller\",\n\"Select all\": \"S\\u00e9lectionner tout\",\n\"New document\": \"Nouveau document\",\n\"Ok\": \"OK\",\n\"Cancel\": \"Annuler\",\n\"Visual aids\": \"Aides visuelles\",\n\"Bold\": \"Gras\",\n\"Italic\": \"Italique\",\n\"Underline\": \"Soulign\\u00e9\",\n\"Strikethrough\": \"Barr\\u00e9\",\n\"Superscript\": \"Exposant\",\n\"Subscript\": \"Indice\",\n\"Clear formatting\": \"Effacer la mise en forme\",\n\"Align left\": \"Aligner \\u00e0 gauche\",\n\"Align center\": \"Centrer\",\n\"Align right\": \"Aligner \\u00e0 droite\",\n\"Justify\": \"Justifier\",\n\"Bullet list\": \"Liste \\u00e0 puces\",\n\"Numbered list\": \"Liste num\\u00e9rot\\u00e9e\",\n\"Decrease indent\": \"R\\u00e9duire le retrait\",\n\"Increase indent\": \"Augmenter le retrait\",\n\"Close\": \"Fermer\",\n\"Formats\": \"Formats\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Votre navigateur ne supporte pas l\\u2019acc\\u00e8s direct au presse-papiers. Merci d'utiliser les raccourcis clavier Ctrl+X\\/C\\/V.\",\n\"Headers\": \"En-t\\u00eates\",\n\"Header 1\": \"En-t\\u00eate 1\",\n\"Header 2\": \"En-t\\u00eate 2\",\n\"Header 3\": \"En-t\\u00eate 3\",\n\"Header 4\": \"En-t\\u00eate 4\",\n\"Header 5\": \"En-t\\u00eate 5\",\n\"Header 6\": \"En-t\\u00eate 6\",\n\"Headings\": \"Titres\",\n\"Heading 1\": \"Titre\\u00a01\",\n\"Heading 2\": \"Titre\\u00a02\",\n\"Heading 3\": \"Titre\\u00a03\",\n\"Heading 4\": \"Titre\\u00a04\",\n\"Heading 5\": \"Titre\\u00a05\",\n\"Heading 6\": \"Titre\\u00a06\",\n\"Preformatted\": \"Pr\\u00e9format\\u00e9\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Code\",\n\"Paragraph\": \"Paragraphe\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"En ligne\",\n\"Blocks\": \"Blocs\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Le presse-papiers est maintenant en mode \\\"texte plein\\\". Les contenus seront coll\\u00e9s sans retenir les formatages jusqu'\\u00e0 ce que vous d\\u00e9sactiviez cette option.\",\n\"Fonts\": \"Polices\",\n\"Font Sizes\": \"Tailles de police\",\n\"Class\": \"Classe\",\n\"Browse for an image\": \"Rechercher une image\",\n\"OR\": \"OU\",\n\"Drop an image here\": \"D\\u00e9poser une image ici\",\n\"Upload\": \"T\\u00e9l\\u00e9charger\",\n\"Block\": \"Bloc\",\n\"Align\": \"Aligner\",\n\"Default\": \"Par d\\u00e9faut\",\n\"Circle\": \"Cercle\",\n\"Disc\": \"Disque\",\n\"Square\": \"Carr\\u00e9\",\n\"Lower Alpha\": \"Alpha minuscule\",\n\"Lower Greek\": \"Grec minuscule\",\n\"Lower Roman\": \"Romain minuscule\",\n\"Upper Alpha\": \"Alpha majuscule\",\n\"Upper Roman\": \"Romain majuscule\",\n\"Anchor...\": \"Ancre...\",\n\"Name\": \"Nom\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"L'Id doit commencer par une lettre suivi par des lettres, nombres, tirets, points, deux-points ou underscores\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Vous avez des modifications non enregistr\\u00e9es, \\u00eates-vous s\\u00fbr de quitter la page?\",\n\"Restore last draft\": \"Restaurer le dernier brouillon\",\n\"Special character...\": \"Caract\\u00e8re sp\\u00e9cial...\",\n\"Source code\": \"Code source\",\n\"Insert\\/Edit code sample\": \"Ins\\u00e9rer \\/ modifier une exemple de code\",\n\"Language\": \"Langue\",\n\"Code sample...\": \"Exemple de code...\",\n\"Color Picker\": \"S\\u00e9lecteur de couleurs\",\n\"R\": \"R\",\n\"G\": \"V\",\n\"B\": \"B\",\n\"Left to right\": \"Gauche \\u00e0 droite\",\n\"Right to left\": \"Droite \\u00e0 gauche\",\n\"Emoticons...\": \"\\u00c9motic\\u00f4nes...\",\n\"Metadata and Document Properties\": \"M\\u00e9tadonn\\u00e9es et propri\\u00e9t\\u00e9s du document\",\n\"Title\": \"Titre\",\n\"Keywords\": \"Mots-cl\\u00e9s\",\n\"Description\": \"Description\",\n\"Robots\": \"Robots\",\n\"Author\": \"Auteur\",\n\"Encoding\": \"Encodage\",\n\"Fullscreen\": \"Plein \\u00e9cran\",\n\"Action\": \"Action\",\n\"Shortcut\": \"Raccourci\",\n\"Help\": \"Aide\",\n\"Address\": \"Adresse\",\n\"Focus to menubar\": \"Cibler la barre de menu\",\n\"Focus to toolbar\": \"Cibler la barre d'outils\",\n\"Focus to element path\": \"Cibler le chemin vers l'\\u00e9l\\u00e9ment\",\n\"Focus to contextual toolbar\": \"Cibler la barre d'outils contextuelle\",\n\"Insert link (if link plugin activated)\": \"Ins\\u00e9rer un lien (si le module link est activ\\u00e9)\",\n\"Save (if save plugin activated)\": \"Enregistrer (si le module save est activ\\u00e9)\",\n\"Find (if searchreplace plugin activated)\": \"Rechercher (si le module searchreplace est activ\\u00e9)\",\n\"Plugins installed ({0}):\": \"Modules install\\u00e9s ({0}) : \",\n\"Premium plugins:\": \"Modules premium :\",\n\"Learn more...\": \"En savoir plus...\",\n\"You are using {0}\": \"Vous utilisez {0}\",\n\"Plugins\": \"Plugins\",\n\"Handy Shortcuts\": \"Raccourcis utiles\",\n\"Horizontal line\": \"Ligne horizontale\",\n\"Insert\\/edit image\": \"Ins\\u00e9rer\\/modifier une image\",\n\"Image description\": \"Description de l'image\",\n\"Source\": \"Source\",\n\"Dimensions\": \"Dimensions\",\n\"Constrain proportions\": \"Conserver les proportions\",\n\"General\": \"G\\u00e9n\\u00e9ral\",\n\"Advanced\": \"Avanc\\u00e9\",\n\"Style\": \"Style\",\n\"Vertical space\": \"Espacement vertical\",\n\"Horizontal space\": \"Espacement horizontal\",\n\"Border\": \"Bordure\",\n\"Insert image\": \"Ins\\u00e9rer une image\",\n\"Image...\": \"Image...\",\n\"Image list\": \"Liste d'images\",\n\"Rotate counterclockwise\": \"Rotation anti-horaire\",\n\"Rotate clockwise\": \"Rotation horaire\",\n\"Flip vertically\": \"Retournement vertical\",\n\"Flip horizontally\": \"Retournement horizontal\",\n\"Edit image\": \"Modifier l'image\",\n\"Image options\": \"Options de l'image\",\n\"Zoom in\": \"Zoomer\",\n\"Zoom out\": \"D\\u00e9zoomer\",\n\"Crop\": \"Rogner\",\n\"Resize\": \"Redimensionner\",\n\"Orientation\": \"Orientation\",\n\"Brightness\": \"Luminosit\\u00e9\",\n\"Sharpen\": \"Affiner\",\n\"Contrast\": \"Contraste\",\n\"Color levels\": \"Niveaux de couleur\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Inverser\",\n\"Apply\": \"Appliquer\",\n\"Back\": \"Retour\",\n\"Insert date\\/time\": \"Ins\\u00e9rer date\\/heure\",\n\"Date\\/time\": \"Date\\/heure\",\n\"Insert\\/Edit Link\": \"Ins\\u00e9rer\\/Modifier lien\",\n\"Insert\\/edit link\": \"Ins\\u00e9rer\\/modifier un lien\",\n\"Text to display\": \"Texte \\u00e0 afficher\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Ouvrir le lien dans...\",\n\"Current window\": \"Fen\\u00eatre active\",\n\"None\": \"n\\/a\",\n\"New window\": \"Nouvelle fen\\u00eatre\",\n\"Remove link\": \"Enlever le lien\",\n\"Anchors\": \"Ancres\",\n\"Link...\": \"Lien...\",\n\"Paste or type a link\": \"Coller ou taper un lien\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"L'URL que vous avez entr\\u00e9e semble \\u00eatre une adresse e-mail. Voulez-vous ajouter le pr\\u00e9fixe mailto: n\\u00e9cessaire?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"L'URL que vous avez entr\\u00e9e semble \\u00eatre un lien externe. Voulez-vous ajouter le pr\\u00e9fixe http:\\/\\/ n\\u00e9cessaire?\",\n\"Link list\": \"Liste de liens\",\n\"Insert video\": \"Ins\\u00e9rer une vid\\u00e9o\",\n\"Insert\\/edit video\": \"Ins\\u00e9rer\\/modifier une vid\\u00e9o\",\n\"Insert\\/edit media\": \"Ins\\u00e9rer\\/modifier un m\\u00e9dia\",\n\"Alternative source\": \"Source alternative\",\n\"Alternative source URL\": \"URL de la source alternative\",\n\"Media poster (Image URL)\": \"Affiche de m\\u00e9dia (URL de l'image)\",\n\"Paste your embed code below:\": \"Collez votre code d'int\\u00e9gration ci-dessous :\",\n\"Embed\": \"Int\\u00e9grer\",\n\"Media...\": \"M\\u00e9dia...\",\n\"Nonbreaking space\": \"Espace ins\\u00e9cable\",\n\"Page break\": \"Saut de page\",\n\"Paste as text\": \"Coller comme texte\",\n\"Preview\": \"Pr\\u00e9visualiser\",\n\"Print...\": \"Imprimer...\",\n\"Save\": \"Enregistrer\",\n\"Find\": \"Chercher\",\n\"Replace with\": \"Remplacer par\",\n\"Replace\": \"Remplacer\",\n\"Replace all\": \"Tout remplacer\",\n\"Previous\": \"Pr\\u00e9c\\u00e9dente\",\n\"Next\": \"Suiv\",\n\"Find and replace...\": \"Trouver et remplacer...\",\n\"Could not find the specified string.\": \"Impossible de trouver la cha\\u00eene sp\\u00e9cifi\\u00e9e.\",\n\"Match case\": \"Respecter la casse\",\n\"Find whole words only\": \"Mot entier\",\n\"Spell check\": \"V\\u00e9rification de l'orthographe\",\n\"Ignore\": \"Ignorer\",\n\"Ignore all\": \"Tout ignorer\",\n\"Finish\": \"Finie\",\n\"Add to Dictionary\": \"Ajouter au dictionnaire\",\n\"Insert table\": \"Ins\\u00e9rer un tableau\",\n\"Table properties\": \"Propri\\u00e9t\\u00e9s du tableau\",\n\"Delete table\": \"Supprimer le tableau\",\n\"Cell\": \"Cellule\",\n\"Row\": \"Ligne\",\n\"Column\": \"Colonne\",\n\"Cell properties\": \"Propri\\u00e9t\\u00e9s de la cellule\",\n\"Merge cells\": \"Fusionner les cellules\",\n\"Split cell\": \"Diviser la cellule\",\n\"Insert row before\": \"Ins\\u00e9rer une ligne avant\",\n\"Insert row after\": \"Ins\\u00e9rer une ligne apr\\u00e8s\",\n\"Delete row\": \"Effacer la ligne\",\n\"Row properties\": \"Propri\\u00e9t\\u00e9s de la ligne\",\n\"Cut row\": \"Couper la ligne\",\n\"Copy row\": \"Copier la ligne\",\n\"Paste row before\": \"Coller la ligne avant\",\n\"Paste row after\": \"Coller la ligne apr\\u00e8s\",\n\"Insert column before\": \"Ins\\u00e9rer une colonne avant\",\n\"Insert column after\": \"Ins\\u00e9rer une colonne apr\\u00e8s\",\n\"Delete column\": \"Effacer la colonne\",\n\"Cols\": \"Colonnes\",\n\"Rows\": \"Lignes\",\n\"Width\": \"Largeur\",\n\"Height\": \"Hauteur\",\n\"Cell spacing\": \"Espacement inter-cellulles\",\n\"Cell padding\": \"Espacement interne cellule\",\n\"Show caption\": \"Afficher le sous-titrage\",\n\"Left\": \"Gauche\",\n\"Center\": \"Centr\\u00e9\",\n\"Right\": \"Droite\",\n\"Cell type\": \"Type de cellule\",\n\"Scope\": \"Etendue\",\n\"Alignment\": \"Alignement\",\n\"H Align\": \"Alignement H\",\n\"V Align\": \"Alignement V\",\n\"Top\": \"Haut\",\n\"Middle\": \"Milieu\",\n\"Bottom\": \"Bas\",\n\"Header cell\": \"Cellule d'en-t\\u00eate\",\n\"Row group\": \"Groupe de lignes\",\n\"Column group\": \"Groupe de colonnes\",\n\"Row type\": \"Type de ligne\",\n\"Header\": \"En-t\\u00eate\",\n\"Body\": \"Corps\",\n\"Footer\": \"Pied\",\n\"Border color\": \"Couleur de la bordure\",\n\"Insert template...\": \"Ins\\u00e9rer un mod\\u00e8le...\",\n\"Templates\": \"Th\\u00e8mes\",\n\"Template\": \"Mod\\u00e8le\",\n\"Text color\": \"Couleur du texte\",\n\"Background color\": \"Couleur d'arri\\u00e8re-plan\",\n\"Custom...\": \"Personnalis\\u00e9...\",\n\"Custom color\": \"Couleur personnalis\\u00e9e\",\n\"No color\": \"Aucune couleur\",\n\"Remove color\": \"Supprimer la couleur\",\n\"Table of Contents\": \"Table des mati\\u00e8res\",\n\"Show blocks\": \"Afficher les blocs\",\n\"Show invisible characters\": \"Afficher les caract\\u00e8res invisibles\",\n\"Word count\": \"Nombre de mots\",\n\"Count\": \"Total\",\n\"Document\": \"Document\",\n\"Selection\": \"S\\u00e9lection\",\n\"Words\": \"Mots\",\n\"Words: {0}\": \"Mots : {0}\",\n\"{0} words\": \"{0} mots\",\n\"File\": \"Fichier\",\n\"Edit\": \"Editer\",\n\"Insert\": \"Ins\\u00e9rer\",\n\"View\": \"Voir\",\n\"Format\": \"Format\",\n\"Table\": \"Tableau\",\n\"Tools\": \"Outils\",\n\"Powered by {0}\": \"Propuls\\u00e9 par {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.\",\n\"Image title\": \"Titre d'image\",\n\"Border width\": \"\\u00c9paisseur de la bordure\",\n\"Border style\": \"Style de la bordure\",\n\"Error\": \"Erreur\",\n\"Warn\": \"Avertir\",\n\"Valid\": \"Valide\",\n\"To open the popup, press Shift+Enter\": \"Pour ouvrir la popup, appuyez sur Maj+Entr\\u00e9e\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Zone de texte riche. Appuyez sur ALT-0 pour l'aide.\",\n\"System Font\": \"Police syst\\u00e8me\",\n\"Failed to upload image: {0}\": \"\\u00c9chec d'envoi de l'image\\u00a0: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u00c9chec de chargement du plug-in\\u00a0: {0} \\u00e0 partir de l\\u2019URL {1}\",\n\"Failed to load plugin url: {0}\": \"\\u00c9chec de chargement de l'URL du plug-in\\u00a0: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u00c9chec d'initialisation du plug-in\\u00a0: {0}\",\n\"example\": \"exemple\",\n\"Search\": \"Rechercher\",\n\"All\": \"Tout\",\n\"Currency\": \"Devise\",\n\"Text\": \"Texte\",\n\"Quotations\": \"Citations\",\n\"Mathematical\": \"Op\\u00e9rateurs math\\u00e9matiques\",\n\"Extended Latin\": \"Latin \\u00e9tendu\",\n\"Symbols\": \"Symboles\",\n\"Arrows\": \"Fl\\u00e8ches\",\n\"User Defined\": \"D\\u00e9fini par l'utilisateur\",\n\"dollar sign\": \"Symbole dollar\",\n\"currency sign\": \"Symbole devise\",\n\"euro-currency sign\": \"Symbole euro\",\n\"colon sign\": \"Symbole col\\u00f3n\",\n\"cruzeiro sign\": \"Symbole cruzeiro\",\n\"french franc sign\": \"Symbole franc fran\\u00e7ais\",\n\"lira sign\": \"Symbole lire\",\n\"mill sign\": \"Symbole milli\\u00e8me\",\n\"naira sign\": \"Symbole naira\",\n\"peseta sign\": \"Symbole peseta\",\n\"rupee sign\": \"Symbole roupie\",\n\"won sign\": \"Symbole won\",\n\"new sheqel sign\": \"Symbole nouveau ch\\u00e9kel\",\n\"dong sign\": \"Symbole dong\",\n\"kip sign\": \"Symbole kip\",\n\"tugrik sign\": \"Symbole tougrik\",\n\"drachma sign\": \"Symbole drachme\",\n\"german penny symbol\": \"Symbole pfennig\",\n\"peso sign\": \"Symbole peso\",\n\"guarani sign\": \"Symbole guarani\",\n\"austral sign\": \"Symbole austral\",\n\"hryvnia sign\": \"Symbole hryvnia\",\n\"cedi sign\": \"Symbole cedi\",\n\"livre tournois sign\": \"Symbole livre tournois\",\n\"spesmilo sign\": \"Symbole spesmilo\",\n\"tenge sign\": \"Symbole tenge\",\n\"indian rupee sign\": \"Symbole roupie indienne\",\n\"turkish lira sign\": \"Symbole lire turque\",\n\"nordic mark sign\": \"Symbole du mark nordique\",\n\"manat sign\": \"Symbole manat\",\n\"ruble sign\": \"Symbole rouble\",\n\"yen character\": \"Sinogramme Yen\",\n\"yuan character\": \"Sinogramme Yuan\",\n\"yuan character, in hong kong and taiwan\": \"Sinogramme Yuan, Hong Kong et Taiwan\",\n\"yen\\/yuan character variant one\": \"Sinogramme Yen\\/Yuan, premi\\u00e8re variante\",\n\"Loading emoticons...\": \"Chargement des \\u00e9motic\\u00f4nes en cours...\",\n\"Could not load emoticons\": \"\\u00c9chec de chargement des \\u00e9motic\\u00f4nes\",\n\"People\": \"Personnes\",\n\"Animals and Nature\": \"Animaux & nature\",\n\"Food and Drink\": \"Nourriture & boissons\",\n\"Activity\": \"Activit\\u00e9\",\n\"Travel and Places\": \"Voyages & lieux\",\n\"Objects\": \"Objets\",\n\"Flags\": \"Drapeaux\",\n\"Characters\": \"Caract\\u00e8res\",\n\"Characters (no spaces)\": \"Caract\\u00e8res (espaces non compris)\",\n\"{0} characters\": \"{0}\\u00a0caract\\u00e8res\",\n\"Error: Form submit field collision.\": \"Erreur\\u00a0: conflit de champs lors de la soumission du formulaire.\",\n\"Error: No form element found.\": \"Erreur : aucun \\u00e9l\\u00e9ment de formulaire trouv\\u00e9.\",\n\"Update\": \"Mettre \\u00e0 jour\",\n\"Color swatch\": \"\\u00c9chantillon de couleurs\",\n\"Turquoise\": \"Turquoise\",\n\"Green\": \"Vert\",\n\"Blue\": \"Bleu\",\n\"Purple\": \"Violet\",\n\"Navy Blue\": \"Bleu marine\",\n\"Dark Turquoise\": \"Turquoise fonc\\u00e9\",\n\"Dark Green\": \"Vert fonc\\u00e9\",\n\"Medium Blue\": \"Bleu moyen\",\n\"Medium Purple\": \"Violet moyen\",\n\"Midnight Blue\": \"Bleu de minuit\",\n\"Yellow\": \"Jaune\",\n\"Orange\": \"Orange\",\n\"Red\": \"Rouge\",\n\"Light Gray\": \"Gris clair\",\n\"Gray\": \"Gris\",\n\"Dark Yellow\": \"Jaune fonc\\u00e9\",\n\"Dark Orange\": \"Orange fonc\\u00e9\",\n\"Dark Red\": \"Rouge fonc\\u00e9\",\n\"Medium Gray\": \"Gris moyen\",\n\"Dark Gray\": \"Gris fonc\\u00e9\",\n\"Light Green\": \"Vert clair\",\n\"Light Yellow\": \"Jaune clair\",\n\"Light Red\": \"Rouge clair\",\n\"Light Purple\": \"Violet clair\",\n\"Light Blue\": \"Bleu clair\",\n\"Dark Purple\": \"Violet fonc\\u00e9\",\n\"Dark Blue\": \"Bleu fonc\\u00e9\",\n\"Black\": \"Noir\",\n\"White\": \"Blanc\",\n\"Switch to or from fullscreen mode\": \"Passer en ou quitter le mode plein \\u00e9cran\",\n\"Open help dialog\": \"Ouvrir la bo\\u00eete de dialogue d'aide\",\n\"history\": \"historique\",\n\"styles\": \"styles\",\n\"formatting\": \"mise en forme\",\n\"alignment\": \"alignement\",\n\"indentation\": \"retrait\",\n\"permanent pen\": \"feutre ind\\u00e9l\\u00e9bile\",\n\"comments\": \"commentaires\",\n\"Format Painter\": \"Reproduire la mise en forme\",\n\"Insert\\/edit iframe\": \"Ins\\u00e9rer\\/modifier iframe\",\n\"Capitalization\": \"Mise en majuscules\",\n\"lowercase\": \"minuscule\",\n\"UPPERCASE\": \"MAJUSCULE\",\n\"Title Case\": \"Casse du titre\",\n\"Permanent Pen Properties\": \"Propri\\u00e9t\\u00e9s du feutre ind\\u00e9l\\u00e9bile\",\n\"Permanent pen properties...\": \"Propri\\u00e9t\\u00e9s du feutre ind\\u00e9l\\u00e9bile...\",\n\"Font\": \"Police\",\n\"Size\": \"Taille\",\n\"More...\": \"Plus...\",\n\"Spellcheck Language\": \"Langue du correcteur orthographique\",\n\"Select...\": \"S\\u00e9lectionner...\",\n\"Preferences\": \"Pr\\u00e9f\\u00e9rences\",\n\"Yes\": \"Oui\",\n\"No\": \"Non\",\n\"Keyboard Navigation\": \"Navigation au clavier\",\n\"Version\": \"Version\",\n\"Anchor\": \"Ancre\",\n\"Special character\": \"Caract\\u00e8res sp\\u00e9ciaux\",\n\"Code sample\": \"Extrait de code\",\n\"Color\": \"Couleur\",\n\"Emoticons\": \"Emotic\\u00f4nes\",\n\"Document properties\": \"Propri\\u00e9t\\u00e9 du document\",\n\"Image\": \"Image\",\n\"Insert link\": \"Ins\\u00e9rer un lien\",\n\"Target\": \"Cible\",\n\"Link\": \"Lien\",\n\"Poster\": \"Publier\",\n\"Media\": \"M\\u00e9dia\",\n\"Print\": \"Imprimer\",\n\"Prev\": \"Pr\\u00e9c \",\n\"Find and replace\": \"Trouver et remplacer\",\n\"Whole words\": \"Mots entiers\",\n\"Spellcheck\": \"V\\u00e9rification orthographique\",\n\"Caption\": \"Titre\",\n\"Insert template\": \"Ajouter un th\\u00e8me\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/gl.js",
    "content": "tinymce.addI18n('gl',{\n\"Redo\": \"Refacer\",\n\"Undo\": \"Desfacer\",\n\"Cut\": \"Cortar\",\n\"Copy\": \"Copiar\",\n\"Paste\": \"Pegar\",\n\"Select all\": \"Seleccionar todo\",\n\"New document\": \"Novo documento\",\n\"Ok\": \"Aceptar\",\n\"Cancel\": \"Cancelar\",\n\"Visual aids\": \"Axudas visuais\",\n\"Bold\": \"Negra\",\n\"Italic\": \"Cursiva\",\n\"Underline\": \"Subli\\u00f1ado\",\n\"Strikethrough\": \"Riscado\",\n\"Superscript\": \"Super\\u00edndice\",\n\"Subscript\": \"Sub\\u00edndice\",\n\"Clear formatting\": \"Limpar o formato\",\n\"Align left\": \"Ali\\u00f1ar \\u00e1 esquerda\",\n\"Align center\": \"Ali\\u00f1ar ao centro\",\n\"Align right\": \"Ali\\u00f1ar \\u00e1 dereita\",\n\"Justify\": \"Xustificar\",\n\"Bullet list\": \"Lista de vi\\u00f1etas\",\n\"Numbered list\": \"Lista numerada\",\n\"Decrease indent\": \"Reducir a sangr\\u00eda\",\n\"Increase indent\": \"Aumentar a sangr\\u00eda\",\n\"Close\": \"Pechar\",\n\"Formats\": \"Formatos\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"O seu navegador non admite o acceso directo ao portapapeis. Empregue os atallos de teclado Ctrl+X\\/C\\/V no seu canto.\",\n\"Headers\": \"Cabeceiras\",\n\"Header 1\": \"Cabeceira 1\",\n\"Header 2\": \"Cabeceira 2\",\n\"Header 3\": \"Cabeceira 3\",\n\"Header 4\": \"Cabeceira 4\",\n\"Header 5\": \"Cabeceira 5\",\n\"Header 6\": \"Cabeceira 6\",\n\"Headings\": \"T\\u00edtulo\",\n\"Heading 1\": \"T\\u00edtulo 1\",\n\"Heading 2\": \"T\\u00edtulo 2\",\n\"Heading 3\": \"T\\u00edtulo 3\",\n\"Heading 4\": \"T\\u00edtulo 4\",\n\"Heading 5\": \"T\\u00edtulo 5\",\n\"Heading 6\": \"T\\u00edtulo 6\",\n\"Preformatted\": \"Preformatado\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"C\\u00f3digo\",\n\"Paragraph\": \"Par\\u00e1grafo\",\n\"Blockquote\": \"Bloque entre comi\\u00f1as\",\n\"Inline\": \"En li\\u00f1a\",\n\"Blocks\": \"Bloques\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Neste momento o pegado est\\u00e1 definido en modo de texto simple. Os contidos p\\u00e9garanse como texto sen formato ata que se active esta opci\\u00f3n.\",\n\"Fonts\": \"Tipos de letra\",\n\"Font Sizes\": \"Tama\\u00f1o da letra\",\n\"Class\": \"Clase\",\n\"Browse for an image\": \"Buscar unha imaxe\",\n\"OR\": \"OU\",\n\"Drop an image here\": \"Soltar unha imaxe\",\n\"Upload\": \"Cargar\",\n\"Block\": \"Bloque\",\n\"Align\": \"Ali\\u00f1amento\",\n\"Default\": \"Predeterminada\",\n\"Circle\": \"Circulo\",\n\"Disc\": \"Disco\",\n\"Square\": \"Cadrado\",\n\"Lower Alpha\": \"Alfa min\\u00fascula\",\n\"Lower Greek\": \"Grega min\\u00fascula\",\n\"Lower Roman\": \"Romana min\\u00fascula\",\n\"Upper Alpha\": \"Alfa mai\\u00fascula\",\n\"Upper Roman\": \"Romana mai\\u00fascula\",\n\"Anchor...\": \"Ancoraxe...\",\n\"Name\": \"Nome\",\n\"Id\": \"ID\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"O ID debe comezar cunha letra, seguida s\\u00f3 por letras, n\\u00fameros, gui\\u00f3ns, puntos, dos puntos ou gui\\u00f3ns baixos.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Ten cambios sen gardar. Confirma que quere sa\\u00edr?\",\n\"Restore last draft\": \"Restaurar o \\u00faltimo borrador\",\n\"Special characters...\": \"Caracteres especiais...\",\n\"Source code\": \"C\\u00f3digo fonte\",\n\"Insert\\/Edit code sample\": \"Inserir\\/editar mostra de c\\u00f3digo\",\n\"Language\": \"Idioma\",\n\"Code sample...\": \"Mostra de c\\u00f3digo...\",\n\"Color Picker\": \"Selector de cor\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"De esquerda a dereita\",\n\"Right to left\": \"De dereita a esquerda\",\n\"Emoticons...\": \"Emoticonas...\",\n\"Metadata and Document Properties\": \"Metadatos e propiedades do documento\",\n\"Title\": \"T\\u00edtulo\",\n\"Keywords\": \"Palabras clave\",\n\"Description\": \"Descrici\\u00f3n\",\n\"Robots\": \"Robots\",\n\"Author\": \"Autor\",\n\"Encoding\": \"Codificaci\\u00f3n\",\n\"Fullscreen\": \"Pantalla completa\",\n\"Action\": \"Action\",\n\"Shortcut\": \"Shortcut\",\n\"Help\": \"Help\",\n\"Address\": \"Address\",\n\"Focus to menubar\": \"Focus to menubar\",\n\"Focus to toolbar\": \"Focus to toolbar\",\n\"Focus to element path\": \"Focus to element path\",\n\"Focus to contextual toolbar\": \"Focus to contextual toolbar\",\n\"Insert link (if link plugin activated)\": \"Insert link (if link plugin activated)\",\n\"Save (if save plugin activated)\": \"Save (if save plugin activated)\",\n\"Find (if searchreplace plugin activated)\": \"Find (if searchreplace plugin activated)\",\n\"Plugins installed ({0}):\": \"Plugins installed ({0}):\",\n\"Premium plugins:\": \"Premium plugins:\",\n\"Learn more...\": \"Learn more...\",\n\"You are using {0}\": \"You are using {0}\",\n\"Plugins\": \"Engadidos\",\n\"Handy Shortcuts\": \"Atallos \\u00fatiles\",\n\"Horizontal line\": \"Li\\u00f1a horizontal\",\n\"Insert\\/edit image\": \"Inserir\\/editar imaxe\",\n\"Image description\": \"Descrici\\u00f3n da imaxe\",\n\"Source\": \"Orixe\",\n\"Dimensions\": \"Dimensi\\u00f3ns\",\n\"Constrain proportions\": \"Restrinxir as proporci\\u00f3ns\",\n\"General\": \"Xeral\",\n\"Advanced\": \"Avanzado\",\n\"Style\": \"Estilo\",\n\"Vertical space\": \"Espazo vertical\",\n\"Horizontal space\": \"Espazo horizontal\",\n\"Border\": \"Bordo\",\n\"Insert image\": \"Inserir imaxe\",\n\"Image...\": \"Imaxe...\",\n\"Image list\": \"Lista de imaxes\",\n\"Rotate counterclockwise\": \"Rotate counterclockwise\",\n\"Rotate clockwise\": \"Rotate clockwise\",\n\"Flip vertically\": \"Flip vertically\",\n\"Flip horizontally\": \"Flip horizontally\",\n\"Edit image\": \"Edit image\",\n\"Image options\": \"Image options\",\n\"Zoom in\": \"Zoom in\",\n\"Zoom out\": \"Zoom out\",\n\"Crop\": \"Crop\",\n\"Resize\": \"Resize\",\n\"Orientation\": \"Orientation\",\n\"Brightness\": \"Brightness\",\n\"Sharpen\": \"Sharpen\",\n\"Contrast\": \"Contrast\",\n\"Color levels\": \"Color levels\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Invert\",\n\"Apply\": \"Apply\",\n\"Back\": \"Back\",\n\"Insert date\\/time\": \"Inserir data\\/hora\",\n\"Date\\/time\": \"Data\\/hora\",\n\"Insert\\/Edit Link\": \"Inserir\\/editar ligaz\\u00f3n\",\n\"Insert\\/edit link\": \"Inserir\\/editar ligaz\\u00f3n\",\n\"Text to display\": \"Texto que amosar\",\n\"Url\": \"URL\",\n\"Open link in...\": \"Abrir a ligaz\\u00f3n en...\",\n\"Current window\": \"Xanela actual\",\n\"None\": \"Ning\\u00fan\",\n\"New window\": \"Nova xanela\",\n\"Remove link\": \"Retirar a ligaz\\u00f3n\",\n\"Anchors\": \"Ancoraxes\",\n\"Link...\": \"Ligaz\\u00f3n...\",\n\"Paste or type a link\": \"Pegue ou escriba unha ligaz\\u00f3n\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"O URL que introduciu semella seren un enderezo de correo. Quere engadirlle o prefixo mailto: requirido?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"O URL que introduciu semella seren unha ligaz\\u00f3n externa. Quere engadirlle o prefixo http:\\/\\/ requirido?\",\n\"Link list\": \"Lista de ligaz\\u00f3ns\",\n\"Insert video\": \"Inserir v\\u00eddeo\",\n\"Insert\\/edit video\": \"Inserir\\/editar v\\u00eddeo\",\n\"Insert\\/edit media\": \"Inserir\\/editar medios\",\n\"Alternative source\": \"Orixe alternativa\",\n\"Alternative source URL\": \"URL da orixe alternativa\",\n\"Media poster (Image URL)\": \"Cartel multimedia (URL da imaxe)\",\n\"Paste your embed code below:\": \"Pegue embaixo o c\\u00f3digo integrado:\",\n\"Embed\": \"Integrado\",\n\"Media...\": \"Multimedia...\",\n\"Nonbreaking space\": \"Espazo irromp\\u00edbel\",\n\"Page break\": \"Quebra de p\\u00e1xina\",\n\"Paste as text\": \"Pegar como texto\",\n\"Preview\": \"Vista previa\",\n\"Print...\": \"Imprimir...\",\n\"Save\": \"Gardar\",\n\"Find\": \"Buscar\",\n\"Replace with\": \"Substitu\\u00edr con\",\n\"Replace\": \"Substitu\\u00edr\",\n\"Replace all\": \"Substitu\\u00edr todo\",\n\"Previous\": \"Anterior\",\n\"Next\": \"Seguinte\",\n\"Find and replace...\": \"Atopar e substitu\\u00edr...\",\n\"Could not find the specified string.\": \"Non foi pos\\u00edbel atopar a cadea de texto especificada.\",\n\"Match case\": \"Distinguir mai\\u00fasculas\",\n\"Find whole words only\": \"Atopar unicamente as palabras enteiras\",\n\"Spell check\": \"Corrector ortogr\\u00e1fico\",\n\"Ignore\": \"Ignorar\",\n\"Ignore all\": \"Ignorar todo\",\n\"Finish\": \"Rematar\",\n\"Add to Dictionary\": \"Engadir ao dicionario\",\n\"Insert table\": \"Inserir t\\u00e1boa\",\n\"Table properties\": \"Propiedades da t\\u00e1boa\",\n\"Delete table\": \"Eliminar t\\u00e1boa\",\n\"Cell\": \"Cela\",\n\"Row\": \"Fila\",\n\"Column\": \"Columna\",\n\"Cell properties\": \"Propiedades da cela\",\n\"Merge cells\": \"Combinar celas\",\n\"Split cell\": \"Dividir celas\",\n\"Insert row before\": \"Inserir unha fila enriba\",\n\"Insert row after\": \"Inserir unha fila embaixo\",\n\"Delete row\": \"Eliminar fila\",\n\"Row properties\": \"Propiedades das filas\",\n\"Cut row\": \"Cortar fila\",\n\"Copy row\": \"Copiar fila\",\n\"Paste row before\": \"Pegar fila embaixo\",\n\"Paste row after\": \"Pegar fila enriba\",\n\"Insert column before\": \"Inserir columna \\u00e1 esquerda\",\n\"Insert column after\": \"Inserir columna \\u00e1 dereita\",\n\"Delete column\": \"Eliminar columna\",\n\"Cols\": \"Cols.\",\n\"Rows\": \"Filas\",\n\"Width\": \"Largo\",\n\"Height\": \"Alto\",\n\"Cell spacing\": \"Marxe entre celas\",\n\"Cell padding\": \"Marxe interior da cela\",\n\"Show caption\": \"Amosar subt\\u00edtulo\",\n\"Left\": \"Esquerda\",\n\"Center\": \"Centro\",\n\"Right\": \"Dereita\",\n\"Cell type\": \"Tipo de cela\",\n\"Scope\": \"\\u00c1mbito\",\n\"Alignment\": \"Ali\\u00f1amento\",\n\"H Align\": \"Ali\\u00f1amento H\",\n\"V Align\": \"Ali\\u00f1amento V\",\n\"Top\": \"Arriba\",\n\"Middle\": \"Medio\",\n\"Bottom\": \"Abaixo\",\n\"Header cell\": \"Cela de cabeceira\",\n\"Row group\": \"Grupo de filas\",\n\"Column group\": \"Grupo de columnas\",\n\"Row type\": \"Tipo de fila\",\n\"Header\": \"Cabeceira\",\n\"Body\": \"Corpo\",\n\"Footer\": \"Rodap\\u00e9\",\n\"Border color\": \"Cor do bordo\",\n\"Insert template...\": \"Inserir modelo...\",\n\"Templates\": \"Modelos\",\n\"Template\": \"Modelo\",\n\"Text color\": \"Cor do texto\",\n\"Background color\": \"Cor do fondo\",\n\"Custom...\": \"Personalizado...\",\n\"Custom color\": \"Cor personalizado\",\n\"No color\": \"Sen cor\",\n\"Remove color\": \"Retirar a cor\",\n\"Table of Contents\": \"\\u00cdndice de contidos\",\n\"Show blocks\": \"Amosar os bloques\",\n\"Show invisible characters\": \"Amosar caracteres invis\\u00edbeis\",\n\"Word count\": \"Reconto de palabras\",\n\"Words: {0}\": \"Palabras: {0}\",\n\"{0} words\": \"{0} palabras\",\n\"File\": \"Ficheiro\",\n\"Edit\": \"Editar\",\n\"Insert\": \"Inserir\",\n\"View\": \"Ver\",\n\"Format\": \"Formato\",\n\"Table\": \"T\\u00e1boa\",\n\"Tools\": \"Ferramentas\",\n\"Powered by {0}\": \"Coa tecnolox\\u00eda de {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u00c1rea de texto mellorado. Prema ALT-F9 para o men\\u00fa. Prema ALT-F10 para a barra de ferramentas. Prema ALT-0 para a axuda\",\n\"Image title\": \"T\\u00edtulo da imaxe\",\n\"Border width\": \"Largo do bordo\",\n\"Border style\": \"Estilo do bordo\",\n\"Error\": \"Erro\",\n\"Warn\": \"Aviso\",\n\"Valid\": \"V\\u00e1lido\",\n\"To open the popup, press Shift+Enter\": \"Para abrir a xanela emerxente, prema Mai\\u00fas+Intro\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u00c1rea de texto mellorado. PremaALT-0 para obter axuda.\",\n\"System Font\": \"Tipo de letra do sistema\",\n\"Failed to upload image: {0}\": \"Produciuse un fallo ao cargar a imaxe: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Produciuse un fallo ao cargar a o engadido: {0} dende o URL {1}\",\n\"Failed to load plugin url: {0}\": \"Produciuse un fallo ao cargar a o URL do engadido: {0}\",\n\"Failed to initialize plugin: {0}\": \"Produciuse un fallo ao iniciar o engadido: {0}\",\n\"example\": \"exemplo\",\n\"Search\": \"Buscar\",\n\"All\": \"Todo\",\n\"Currency\": \"Moeda\",\n\"Text\": \"Texto\",\n\"Quotations\": \"Citas\",\n\"Mathematical\": \"Matem\\u00e1tico\",\n\"Extended Latin\": \"Latino extendido\",\n\"Symbols\": \"S\\u00edmbolos\",\n\"Arrows\": \"Frechas\",\n\"User Defined\": \"Definido polo usuario\",\n\"dollar sign\": \"S\\u00edmbolo do dolar\",\n\"currency sign\": \"S\\u00edmbolo de moeda\",\n\"euro-currency sign\": \"S\\u00edmbolo do euro\",\n\"colon sign\": \"S\\u00edmbolo do col\\u00f3n\",\n\"cruzeiro sign\": \"S\\u00edmbolo do cruzeiro\",\n\"french franc sign\": \"S\\u00edmbolo do franco franc\\u00e9s\",\n\"lira sign\": \"S\\u00edmbolo da lira\",\n\"mill sign\": \"S\\u00edmbolo do mill\",\n\"naira sign\": \"S\\u00edmbolo da naira\",\n\"peseta sign\": \"S\\u00edmbolo da peseta\",\n\"rupee sign\": \"S\\u00edmbolo da rupia\",\n\"won sign\": \"S\\u00edmbolo do won\",\n\"new sheqel sign\": \"S\\u00edmbolo do novo s\\u00e9quel\",\n\"dong sign\": \"S\\u00edmbolo do dong\",\n\"kip sign\": \"S\\u00edmbolo do kip\",\n\"tugrik sign\": \"S\\u00edmbolo do tugrik\",\n\"drachma sign\": \"S\\u00edmbolo do dracma\",\n\"german penny symbol\": \"S\\u00edmbolo do penique alem\\u00e1n\",\n\"peso sign\": \"S\\u00edmbolo do peso\",\n\"guarani sign\": \"S\\u00edmbolo do guaran\\u00ed\",\n\"austral sign\": \"S\\u00edmbolo do austral\",\n\"hryvnia sign\": \"S\\u00edmbolo do grivna\",\n\"cedi sign\": \"S\\u00edmbolo do cedi\",\n\"livre tournois sign\": \"S\\u00edmbolo da libre tournois\",\n\"spesmilo sign\": \"S\\u00edmbolo do spesmilo\",\n\"tenge sign\": \"S\\u00edmbolo do tengue\",\n\"indian rupee sign\": \"S\\u00edmbolo da rupia india\",\n\"turkish lira sign\": \"S\\u00edmbolo da lira turca\",\n\"nordic mark sign\": \"S\\u00edmbolo do marco n\\u00f3rdico\",\n\"manat sign\": \"S\\u00edmbolo do manat\",\n\"ruble sign\": \"S\\u00edmbolo do rublo\",\n\"yen character\": \"Car\\u00e1cter do ien\",\n\"yuan character\": \"Car\\u00e1cter do yuan\",\n\"yuan character, in hong kong and taiwan\": \"Car\\u00e1cter do yuan, en Hong Kong e Taiwan\",\n\"yen\\/yuan character variant one\": \"Variante  1 do car\\u00e1cter do ien\\/yuan\",\n\"Loading emoticons...\": \"Cargando emoticonas...\",\n\"Could not load emoticons\": \"Non foi pos\\u00edbel cargar as emoticonas\",\n\"People\": \"Xente\",\n\"Animals and Nature\": \"Animais e natureza\",\n\"Food and Drink\": \"Comida e bebida\",\n\"Activity\": \"Actividade\",\n\"Travel and Places\": \"Viaxes e lugares\",\n\"Objects\": \"Obxectos\",\n\"Flags\": \"Bandeiras\",\n\"Characters\": \"Caracteres\",\n\"Characters (no spaces)\": \"Caracteres (sen espazos)\",\n\"Error: Form submit field collision.\": \"Erro: conflito de campo ao enviar o formulario \",\n\"Error: No form element found.\": \"Erro: non se atopou ning\\u00fan elemento de formulario\",\n\"Update\": \"Actualizar\",\n\"Color swatch\": \"Mostra de cores\",\n\"Turquoise\": \"Turquesa\",\n\"Green\": \"Verde\",\n\"Blue\": \"Azul\",\n\"Purple\": \"P\\u00farpura\",\n\"Navy Blue\": \"Azul mari\\u00f1o\",\n\"Dark Turquoise\": \"Turquesa escuro\",\n\"Dark Green\": \"Verde escuro\",\n\"Medium Blue\": \"Azul medio\",\n\"Medium Purple\": \"P\\u00farpura medio\",\n\"Midnight Blue\": \"Azul noite\",\n\"Yellow\": \"Amarelo\",\n\"Orange\": \"Laranxa\",\n\"Red\": \"Vermello\",\n\"Light Gray\": \"Gris claro\",\n\"Gray\": \"Gris\",\n\"Dark Yellow\": \"Amarelo escuro\",\n\"Dark Orange\": \"Laranxa escuro\",\n\"Dark Red\": \"Vermello escuro\",\n\"Medium Gray\": \"Gris medio\",\n\"Dark Gray\": \"Gris escuro\",\n\"Black\": \"Negro\",\n\"White\": \"Branco\",\n\"Switch to or from fullscreen mode\": \"Activar ou desactivar o modo de pantalla completa\",\n\"Open help dialog\": \"Abrir o di\\u00e1logo de axuda\",\n\"history\": \"historial\",\n\"styles\": \"estilos\",\n\"formatting\": \"formatado\",\n\"alignment\": \"ali\\u00f1amento\",\n\"indentation\": \"sangrado\",\n\"permanent pen\": \"rotulador permanente\",\n\"comments\": \"comentarios\",\n\"Anchor\": \"Ancoraxe\",\n\"Special character\": \"Car\\u00e1cter especial\",\n\"Color\": \"Cor\",\n\"Emoticons\": \"Emoticonas\",\n\"Document properties\": \"Propiedades do documento\",\n\"Image\": \"Imaxe\",\n\"Insert link\": \"Inserir ligaz\\u00f3n\",\n\"Target\": \"Destino\",\n\"Link\": \"Ligaz\\u00f3n\",\n\"Poster\": \"Cartel\",\n\"Media\": \"Medios\",\n\"Print\": \"Imprimir\",\n\"Prev\": \"Anterior\",\n\"Find and replace\": \"Buscar e substitu\\u00edr\",\n\"Whole words\": \"Palabras completas\",\n\"Spellcheck\": \"Corrector ortogr\\u00e1fico\",\n\"Caption\": \"Subt\\u00edtulo\",\n\"Insert template\": \"Inserir modelo\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/he_IL.js",
    "content": "tinymce.addI18n('he_IL',{\n\"Redo\": \"\\u05d1\\u05e6\\u05e2 \\u05e9\\u05d5\\u05d1\",\n\"Undo\": \"\\u05d1\\u05d8\\u05dc\",\n\"Cut\": \"\\u05d2\\u05d6\\u05d5\\u05e8\",\n\"Copy\": \"\\u05d4\\u05e2\\u05ea\\u05e7\",\n\"Paste\": \"\\u05d4\\u05d3\\u05d1\\u05e7\",\n\"Select all\": \"\\u05d1\\u05d7\\u05e8 \\u05d4\\u05db\\u05dc\",\n\"New document\": \"\\u05de\\u05e1\\u05de\\u05da \\u05d7\\u05d3\\u05e9\",\n\"Ok\": \"\\u05d0\\u05d9\\u05e9\\u05d5\\u05e8\",\n\"Cancel\": \"\\u05d1\\u05d9\\u05d8\\u05d5\\u05dc\",\n\"Visual aids\": \"\\u05e2\\u05d6\\u05e8\\u05d9\\u05dd \\u05d7\\u05d6\\u05d5\\u05ea\\u05d9\\u05d9\\u05dd\",\n\"Bold\": \"\\u05de\\u05d5\\u05d3\\u05d2\\u05e9\",\n\"Italic\": \"\\u05e0\\u05d8\\u05d5\\u05d9\",\n\"Underline\": \"\\u05e7\\u05d5 \\u05ea\\u05d7\\u05ea\\u05d5\\u05df\",\n\"Strikethrough\": \"\\u05e7\\u05d5 \\u05d7\\u05d5\\u05e6\\u05d4\",\n\"Superscript\": \"\\u05db\\u05ea\\u05d1 \\u05e2\\u05d9\\u05dc\\u05d9\",\n\"Subscript\": \"\\u05db\\u05ea\\u05d1 \\u05ea\\u05d7\\u05ea\\u05d9\",\n\"Clear formatting\": \"\\u05e0\\u05e7\\u05d4 \\u05e2\\u05d9\\u05e6\\u05d5\\u05d1\",\n\"Align left\": \"\\u05d9\\u05e9\\u05e8 \\u05dc\\u05e9\\u05de\\u05d0\\u05dc\",\n\"Align center\": \"\\u05de\\u05e8\\u05db\\u05d6\",\n\"Align right\": \"\\u05d9\\u05e9\\u05e8 \\u05dc\\u05d9\\u05de\\u05d9\\u05df\",\n\"Justify\": \"\\u05d9\\u05d9\\u05e9\\u05e8\",\n\"Bullet list\": \"\\u05e8\\u05e9\\u05d9\\u05de\\u05ea \\u05ea\\u05d1\\u05dc\\u05d9\\u05d8\\u05d9\\u05dd\",\n\"Numbered list\": \"\\u05e8\\u05e9\\u05d9\\u05de\\u05d4 \\u05de\\u05de\\u05d5\\u05e1\\u05e4\\u05e8\\u05ea\",\n\"Decrease indent\": \"\\u05d4\\u05e7\\u05d8\\u05df \\u05d4\\u05d6\\u05d7\\u05d4\",\n\"Increase indent\": \"\\u05d4\\u05d2\\u05d3\\u05dc \\u05d4\\u05d6\\u05d7\\u05d4\",\n\"Close\": \"\\u05e1\\u05d2\\u05d5\\u05e8\",\n\"Formats\": \"\\u05e2\\u05d9\\u05e6\\u05d5\\u05d1\\u05d9\\u05dd\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u05d4\\u05d3\\u05e4\\u05d3\\u05e4\\u05df \\u05e9\\u05dc\\u05da \\u05d0\\u05d9\\u05e0\\u05d5 \\u05de\\u05d0\\u05e4\\u05e9\\u05e8 \\u05d2\\u05d9\\u05e9\\u05d4 \\u05d9\\u05e9\\u05d9\\u05e8\\u05d4 \\u05dc\\u05dc\\u05d5\\u05d7. \\u05d0\\u05e0\\u05d0 \\u05d4\\u05e9\\u05ea\\u05de\\u05e9 \\u05d1\\u05e7\\u05d9\\u05e6\\u05d5\\u05e8\\u05d9 \\u05d4\\u05de\\u05e7\\u05dc\\u05d3\\u05ea Ctrl+X\\/C\\/V \\u05d1\\u05de\\u05e7\\u05d5\\u05dd.\",\n\"Headers\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05d5\\u05ea\",\n\"Header 1\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea 1\",\n\"Header 2\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea 2\",\n\"Header 3\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea 3\",\n\"Header 4\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea 4\",\n\"Header 5\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea 5\",\n\"Header 6\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea 6\",\n\"Headings\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05d5\\u05ea\",\n\"Heading 1\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea 1\",\n\"Heading 2\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea 2\",\n\"Heading 3\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea 3\",\n\"Heading 4\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea 4\",\n\"Heading 5\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea 5\",\n\"Heading 6\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea 6\",\n\"Preformatted\": \"\\u05de\\u05e2\\u05d5\\u05e6\\u05d1 \\u05de\\u05e8\\u05d0\\u05e9\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"\\u05e7\\u05d5\\u05d3\",\n\"Paragraph\": \"\\u05e4\\u05e1\\u05e7\\u05d4\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"\\u05d1\\u05ea\\u05d5\\u05da \\u05e9\\u05d5\\u05e8\\u05d4\",\n\"Blocks\": \"\\u05d1\\u05dc\\u05d5\\u05e7\\u05d9\\u05dd\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u05d4\\u05d3\\u05d1\\u05e7\\u05d4 \\u05d1\\u05de\\u05e6\\u05d1 \\u05d8\\u05e7\\u05e1\\u05d8 \\u05e8\\u05d2\\u05d9\\u05dc. \\u05ea\\u05db\\u05e0\\u05d9\\u05dd \\u05d9\\u05d5\\u05d3\\u05d1\\u05e7\\u05d5 \\u05de\\u05e2\\u05ea\\u05d4 \\u05db\\u05d8\\u05e7\\u05e1\\u05d8 \\u05e8\\u05d2\\u05d9\\u05dc \\u05e2\\u05d3 \\u05e9\\u05ea\\u05db\\u05d1\\u05d4 \\u05d0\\u05e4\\u05e9\\u05e8\\u05d5\\u05ea \\u05d6\\u05d5.\",\n\"Fonts\": \"\\u05d2\\u05d5\\u05e4\\u05e0\\u05d9\\u05dd\",\n\"Font Sizes\": \"\\u05d2\\u05d5\\u05d3\\u05dc \\u05d2\\u05d5\\u05e4\\u05e0\\u05d9\\u05dd\",\n\"Class\": \"\\u05de\\u05d7\\u05dc\\u05e7\\u05d4\",\n\"Browse for an image\": \"\\u05d7\\u05e4\\u05e9 \\u05ea\\u05de\\u05d5\\u05e0\\u05d4\",\n\"OR\": \"OR\",\n\"Drop an image here\": \"\\u05e9\\u05d7\\u05e8\\u05e8 \\u05ea\\u05de\\u05d5\\u05e0\\u05d4 \\u05db\\u05d0\\u05df\",\n\"Upload\": \"\\u05d4\\u05e2\\u05dc\\u05d4\",\n\"Block\": \"\\u05d1\\u05dc\\u05d5\\u05e7\",\n\"Align\": \"\\u05d9\\u05e9\\u05e8\",\n\"Default\": \"\\u05d1\\u05e8\\u05d9\\u05e8\\u05ea \\u05de\\u05d7\\u05d3\\u05dc\",\n\"Circle\": \"\\u05e2\\u05d9\\u05d2\\u05d5\\u05dc\",\n\"Disc\": \"\\u05d7\\u05d9\\u05e9\\u05d5\\u05e7\",\n\"Square\": \"\\u05e8\\u05d9\\u05d1\\u05d5\\u05e2\",\n\"Lower Alpha\": \"\\u05d0\\u05d5\\u05ea\\u05d9\\u05d5\\u05ea \\u05d0\\u05e0\\u05d2\\u05dc\\u05d9\\u05d5\\u05ea \\u05e7\\u05d8\\u05e0\\u05d5\\u05ea\",\n\"Lower Greek\": \"\\u05d0\\u05d5\\u05ea\\u05d9\\u05d5\\u05ea \\u05d9\\u05d5\\u05d5\\u05e0\\u05d9\\u05d5\\u05ea \\u05e7\\u05d8\\u05e0\\u05d5\\u05ea\",\n\"Lower Roman\": \"\\u05e1\\u05e4\\u05e8\\u05d5\\u05ea \\u05e8\\u05d5\\u05de\\u05d9\\u05d5\\u05ea \\u05e7\\u05d8\\u05e0\\u05d5\\u05ea\",\n\"Upper Alpha\": \"\\u05d0\\u05d5\\u05ea\\u05d9\\u05d5\\u05ea \\u05d0\\u05e0\\u05d2\\u05dc\\u05d9\\u05d5\\u05ea \\u05d2\\u05d3\\u05d5\\u05dc\\u05d5\\u05ea\",\n\"Upper Roman\": \"\\u05e1\\u05e4\\u05e8\\u05d5\\u05ea \\u05e8\\u05d5\\u05de\\u05d9\\u05d5\\u05ea \\u05d2\\u05d3\\u05d5\\u05dc\\u05d5\\u05ea\",\n\"Anchor...\": \"\\u05e2\\u05d5\\u05d2\\u05df...\",\n\"Name\": \"\\u05e9\\u05dd\",\n\"Id\": \"\\u05de\\u05d6\\u05d4\\u05d4\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"\\u05d4\\u05de\\u05d6\\u05d4\\u05d4 \\u05d7\\u05d9\\u05d9\\u05d1 \\u05dc\\u05d4\\u05ea\\u05d7\\u05d9\\u05dc \\u05d1\\u05d0\\u05d5\\u05ea \\u05d5\\u05dc\\u05d0\\u05d7\\u05e8\\u05d9\\u05d4 \\u05e8\\u05e7 \\u05d0\\u05d5\\u05ea\\u05d9\\u05d5\\u05ea, \\u05de\\u05e1\\u05e4\\u05e8\\u05d9\\u05dd, \\u05de\\u05e7\\u05e4\\u05d9\\u05dd, \\u05e0\\u05e7\\u05d5\\u05d3\\u05d5\\u05ea, \\u05e0\\u05e7\\u05d5\\u05d3\\u05ea\\u05d9\\u05d9\\u05dd \\u05d0\\u05d5 \\u05e7\\u05d5\\u05d5\\u05d9\\u05dd \\u05ea\\u05d7\\u05ea\\u05d9\\u05d9\\u05dd.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u05d4\\u05e9\\u05d9\\u05e0\\u05d5\\u05d9\\u05d9\\u05dd \\u05dc\\u05d0 \\u05e0\\u05e9\\u05de\\u05e8\\u05d5. \\u05d1\\u05d8\\u05d5\\u05d7 \\u05e9\\u05d1\\u05e8\\u05e6\\u05d5\\u05e0\\u05da \\u05dc\\u05e6\\u05d0\\u05ea \\u05de\\u05d4\\u05d3\\u05e3?\",\n\"Restore last draft\": \"\\u05e9\\u05d7\\u05d6\\u05e8 \\u05d8\\u05d9\\u05d5\\u05d8\\u05d4 \\u05d0\\u05d7\\u05e8\\u05d5\\u05e0\\u05d4\",\n\"Special character...\": \"\\u05ea\\u05d5\\u05d5\\u05d9\\u05dd \\u05de\\u05d9\\u05d5\\u05d7\\u05d3\\u05d9\\u05dd...\",\n\"Source code\": \"\\u05e7\\u05d5\\u05d3 \\u05de\\u05e7\\u05d5\\u05e8\",\n\"Insert\\/Edit code sample\": \"\\u05d4\\u05db\\u05e0\\u05e1\\/\\u05e2\\u05e8\\u05d5\\u05da \\u05d3\\u05d5\\u05d2\\u05de\\u05ea \\u05e7\\u05d5\\u05d3\",\n\"Language\": \"\\u05e9\\u05e4\\u05d4\",\n\"Code sample...\": \"\\u05d3\\u05d5\\u05d2\\u05de\\u05ea \\u05e7\\u05d5\\u05d3...\",\n\"Color Picker\": \"\\u05d1\\u05d5\\u05e8\\u05e8 \\u05e6\\u05d1\\u05e2\\u05d9\\u05dd\",\n\"R\": \"\\u05d0'\",\n\"G\": \"\\u05d9'\",\n\"B\": \"\\u05db'\",\n\"Left to right\": \"\\u05de\\u05e9\\u05de\\u05d0\\u05dc \\u05dc\\u05d9\\u05de\\u05d9\\u05df\",\n\"Right to left\": \"\\u05de\\u05d9\\u05de\\u05d9\\u05df \\u05dc\\u05e9\\u05de\\u05d0\\u05dc\",\n\"Emoticons...\": \"\\u05e1\\u05de\\u05dc\\u05d9 \\u05d4\\u05d1\\u05e2\\u05d4...\",\n\"Metadata and Document Properties\": \"\\u05de\\u05d0\\u05e4\\u05d9\\u05d9\\u05e0\\u05d9 \\u05de\\u05d8\\u05d4-\\u05e0\\u05ea\\u05d5\\u05e0\\u05d9\\u05dd \\u05d5\\u05de\\u05e1\\u05de\\u05da\",\n\"Title\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea\",\n\"Keywords\": \"\\u05de\\u05d9\\u05dc\\u05d5\\u05ea \\u05de\\u05e4\\u05ea\\u05d7\",\n\"Description\": \"\\u05ea\\u05d9\\u05d0\\u05d5\\u05e8\",\n\"Robots\": \"\\u05e8\\u05d5\\u05d1\\u05d5\\u05d8\\u05d9\\u05dd\",\n\"Author\": \"\\u05de\\u05d7\\u05d1\\u05e8\",\n\"Encoding\": \"\\u05e7\\u05d9\\u05d3\\u05d5\\u05d3\",\n\"Fullscreen\": \"\\u05de\\u05e1\\u05da \\u05de\\u05dc\\u05d0\",\n\"Action\": \"\\u05e4\\u05e2\\u05d5\\u05dc\\u05d4\",\n\"Shortcut\": \"\\u05e7\\u05d9\\u05e6\\u05d5\\u05e8\",\n\"Help\": \"\\u05e2\\u05d6\\u05e8\\u05d4\",\n\"Address\": \"\\u05db\\u05ea\\u05d5\\u05d1\\u05ea\",\n\"Focus to menubar\": \"\\u05d4\\u05e2\\u05d1\\u05e8 \\u05de\\u05d9\\u05e7\\u05d5\\u05d3 \\u05dc\\u05e1\\u05e8\\u05d2\\u05dc \\u05d4\\u05ea\\u05e4\\u05e8\\u05d8\\u05d9\\u05dd\",\n\"Focus to toolbar\": \"\\u05d4\\u05e2\\u05d1\\u05e8 \\u05de\\u05d9\\u05e7\\u05d5\\u05d3 \\u05dc\\u05e1\\u05e8\\u05d2\\u05dc \\u05d4\\u05db\\u05dc\\u05d9\\u05dd\",\n\"Focus to element path\": \"\\u05e2\\u05d1\\u05e8 \\u05de\\u05d9\\u05e7\\u05d5\\u05d3 \\u05dc\\u05db\\u05ea\\u05d5\\u05d1\\u05ea \\u05d4\\u05e4\\u05e8\\u05d9\\u05d8\",\n\"Focus to contextual toolbar\": \"\\u05d4\\u05e2\\u05d1\\u05e8 \\u05de\\u05d9\\u05e7\\u05d5\\u05d3 \\u05dc\\u05e1\\u05e8\\u05d2\\u05dc \\u05ea\\u05d5\\u05db\\u05df\",\n\"Insert link (if link plugin activated)\": \"\\u05d4\\u05db\\u05e0\\u05e1 \\u05e7\\u05d9\\u05e9\\u05d5\\u05e8 (\\u05d0\\u05dd \\u05ea\\u05d5\\u05e1\\u05e3 \\\"\\u05e7\\u05d9\\u05e9\\u05d5\\u05e8\\u05d9\\u05dd\\\" \\u05e4\\u05e2\\u05d9\\u05dc)\",\n\"Save (if save plugin activated)\": \"\\u05e9\\u05de\\u05d5\\u05e8 (\\u05d0\\u05dd \\u05ea\\u05d5\\u05e1\\u05e3 \\\"\\u05e9\\u05de\\u05d9\\u05e8\\u05d4\\\" \\u05e4\\u05e2\\u05d9\\u05dc)\",\n\"Find (if searchreplace plugin activated)\": \"\\u05d7\\u05e4\\u05e9 (\\u05d0\\u05dd \\u05ea\\u05d5\\u05e1\\u05e3 \\\"\\u05d7\\u05e4\\u05e9 \\u05d5\\u05d4\\u05d7\\u05dc\\u05e3\\\" \\u05e4\\u05e2\\u05d9\\u05dc)\",\n\"Plugins installed ({0}):\": \"\\u05ea\\u05d5\\u05e1\\u05e4\\u05d9\\u05dd \\u05de\\u05d5\\u05ea\\u05e7\\u05e0\\u05d9\\u05dd ({0}):\",\n\"Premium plugins:\": \"\\u05ea\\u05d5\\u05e1\\u05e4\\u05d9\\u05dd \\u05d1\\u05ea\\u05e9\\u05dc\\u05d5\\u05dd:\",\n\"Learn more...\": \"\\u05dc\\u05de\\u05d3 \\u05e2\\u05d5\\u05d3...\",\n\"You are using {0}\": \"\\u05d0\\u05ea\\\\\\u05d4 \\u05de\\u05e9\\u05ea\\u05de\\u05e9\\\\\\u05ea {0}\",\n\"Plugins\": \"\\u05ea\\u05d5\\u05e1\\u05e4\\u05d9\\u05dd\",\n\"Handy Shortcuts\": \"\\u05e7\\u05d9\\u05e6\\u05d5\\u05e8\\u05d9\\u05dd \\u05e9\\u05d9\\u05de\\u05d5\\u05e9\\u05d9\\u05d9\\u05dd\",\n\"Horizontal line\": \"\\u05e7\\u05d5 \\u05d0\\u05d5\\u05e4\\u05e7\\u05d9\",\n\"Insert\\/edit image\": \"\\u05d4\\u05db\\u05e0\\u05e1\\/\\u05e2\\u05e8\\u05d5\\u05da \\u05ea\\u05de\\u05d5\\u05e0\\u05d4\",\n\"Image description\": \"\\u05ea\\u05d9\\u05d0\\u05d5\\u05e8 \\u05d4\\u05ea\\u05de\\u05d5\\u05e0\\u05d4\",\n\"Source\": \"\\u05de\\u05e7\\u05d5\\u05e8\",\n\"Dimensions\": \"\\u05de\\u05d9\\u05de\\u05d3\\u05d9\\u05dd\",\n\"Constrain proportions\": \"\\u05d4\\u05d2\\u05d1\\u05dc\\u05ea \\u05e4\\u05e8\\u05d5\\u05e4\\u05d5\\u05e8\\u05e6\\u05d9\\u05d5\\u05ea\",\n\"General\": \"\\u05db\\u05dc\\u05dc\\u05d9\",\n\"Advanced\": \"\\u05de\\u05ea\\u05e7\\u05d3\\u05dd\",\n\"Style\": \"\\u05e1\\u05d2\\u05e0\\u05d5\\u05df\",\n\"Vertical space\": \"\\u05de\\u05e8\\u05d5\\u05d5\\u05d7 \\u05d0\\u05e0\\u05db\\u05d9\",\n\"Horizontal space\": \"\\u05de\\u05e8\\u05d5\\u05d5\\u05d7 \\u05d0\\u05d5\\u05e4\\u05e7\\u05d9\",\n\"Border\": \"\\u05de\\u05e1\\u05d2\\u05e8\\u05ea\",\n\"Insert image\": \"\\u05d4\\u05db\\u05e0\\u05e1 \\u05ea\\u05de\\u05d5\\u05e0\\u05d4\",\n\"Image...\": \"\\u05ea\\u05de\\u05d5\\u05e0\\u05d4...\",\n\"Image list\": \"\\u05e8\\u05e9\\u05d9\\u05de\\u05ea \\u05ea\\u05de\\u05d5\\u05e0\\u05d5\\u05ea\",\n\"Rotate counterclockwise\": \"\\u05e1\\u05d5\\u05d1\\u05d1 \\u05d1\\u05db\\u05d9\\u05d5\\u05d5\\u05df \\u05d4\\u05e4\\u05d5\\u05da \\u05dc\\u05e9\\u05e2\\u05d5\\u05df\",\n\"Rotate clockwise\": \"\\u05e1\\u05d5\\u05d1\\u05d1 \\u05d1\\u05db\\u05d9\\u05d5\\u05d5\\u05df \\u05d4\\u05e9\\u05e2\\u05d5\\u05df\",\n\"Flip vertically\": \"\\u05d4\\u05e4\\u05d5\\u05da \\u05d0\\u05e0\\u05db\\u05d9\\u05ea\",\n\"Flip horizontally\": \"\\u05d4\\u05e4\\u05d5\\u05da \\u05d0\\u05d5\\u05e4\\u05e7\\u05d9\\u05ea\",\n\"Edit image\": \"\\u05e2\\u05e8\\u05d5\\u05da \\u05ea\\u05de\\u05d5\\u05e0\\u05d4\",\n\"Image options\": \"\\u05d0\\u05e4\\u05e9\\u05e8\\u05d5\\u05d9\\u05d5\\u05ea \\u05ea\\u05de\\u05d5\\u05e0\\u05d4\",\n\"Zoom in\": \"\\u05d4\\u05d2\\u05d3\\u05dc \\u05ea\\u05e6\\u05d5\\u05d2\\u05d4\",\n\"Zoom out\": \"\\u05d4\\u05e7\\u05d8\\u05df \\u05ea\\u05e6\\u05d5\\u05d2\\u05d4\",\n\"Crop\": \"\\u05e7\\u05e6\\u05e5\",\n\"Resize\": \"\\u05e9\\u05e0\\u05d4 \\u05d2\\u05d5\\u05d3\\u05dc\",\n\"Orientation\": \"\\u05db\\u05d9\\u05d5\\u05d5\\u05df \\u05dc\\u05d0\\u05d5\\u05e8\\u05da \\/ \\u05dc\\u05e8\\u05d5\\u05d7\\u05d1\",\n\"Brightness\": \"\\u05d1\\u05d4\\u05d9\\u05e8\\u05d5\\u05ea\",\n\"Sharpen\": \"\\u05d7\\u05d3\\u05d3\",\n\"Contrast\": \"\\u05e0\\u05d9\\u05d2\\u05d5\\u05d3\\u05d9\\u05d5\\u05ea\",\n\"Color levels\": \"\\u05e8\\u05de\\u05d5\\u05ea \\u05e6\\u05d1\\u05e2\\u05d9\\u05dd\",\n\"Gamma\": \"\\u05d2\\u05d0\\u05de\\u05d4\",\n\"Invert\": \"\\u05d4\\u05d9\\u05e4\\u05d5\\u05da \\u05e6\\u05d1\\u05e2\\u05d9\\u05dd\",\n\"Apply\": \"\\u05d9\\u05d9\\u05e9\\u05dd\",\n\"Back\": \"\\u05d7\\u05d6\\u05d5\\u05e8\",\n\"Insert date\\/time\": \"\\u05d4\\u05db\\u05e0\\u05e1 \\u05ea\\u05d0\\u05e8\\u05d9\\u05da\\/\\u05e9\\u05e2\\u05d4\",\n\"Date\\/time\": \"\\u05ea\\u05d0\\u05e8\\u05d9\\u05da\\/\\u05e9\\u05e2\\u05d4\",\n\"Insert\\/Edit Link\": \"\\u05d4\\u05db\\u05e0\\u05e1\\/\\u05e2\\u05e8\\u05d5\\u05da \\u05e7\\u05d9\\u05e9\\u05d5\\u05e8\",\n\"Insert\\/edit link\": \"\\u05d4\\u05db\\u05e0\\u05e1\\/\\u05e2\\u05e8\\u05d5\\u05da \\u05e7\\u05d9\\u05e9\\u05d5\\u05e8\",\n\"Text to display\": \"\\u05d8\\u05e7\\u05e1\\u05d8 \\u05dc\\u05d4\\u05e6\\u05d2\\u05d4\",\n\"Url\": \"\\u05db\\u05ea\\u05d5\\u05d1\\u05ea \\u05e7\\u05d9\\u05e9\\u05d5\\u05e8\",\n\"Open link in...\": \"\\u05e4\\u05ea\\u05d7 \\u05e7\\u05d9\\u05e9\\u05d5\\u05e8 \\u05d1...\",\n\"Current window\": \"\\u05d7\\u05dc\\u05d5\\u05df \\u05e0\\u05d5\\u05db\\u05d7\\u05d9\",\n\"None\": \"\\u05dc\\u05dc\\u05d0\",\n\"New window\": \"\\u05d7\\u05dc\\u05d5\\u05df \\u05d7\\u05d3\\u05e9\",\n\"Remove link\": \"\\u05de\\u05d7\\u05e7 \\u05e7\\u05d9\\u05e9\\u05d5\\u05e8\",\n\"Anchors\": \"\\u05e2\\u05d5\\u05d2\\u05e0\\u05d9\\u05dd\",\n\"Link...\": \"\\u05e7\\u05d9\\u05e9\\u05d5\\u05e8...\",\n\"Paste or type a link\": \"\\u05d4\\u05d3\\u05d1\\u05e7 \\u05d0\\u05d5 \\u05d4\\u05e7\\u05dc\\u05d3 \\u05e7\\u05d9\\u05e9\\u05d5\\u05e8\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u05e0\\u05e8\\u05d0\\u05d4 \\u05e9\\u05d4\\u05db\\u05ea\\u05d5\\u05d1\\u05ea \\u05e9\\u05d4\\u05db\\u05e0\\u05e1\\u05ea \\u05d4\\u05d9\\u05d0 \\u05db\\u05ea\\u05d5\\u05d1\\u05ea \\u05d0\\u05d9\\u05de\\u05d9\\u05d9\\u05dc. \\u05d4\\u05d0\\u05dd \\u05d1\\u05e8\\u05e6\\u05d5\\u05e0\\u05da \\u05dc\\u05d4\\u05d5\\u05e1\\u05d9\\u05e3 \\u05d0\\u05ea \\u05d4\\u05e7\\u05d9\\u05d3\\u05d5\\u05de\\u05ea :mailto?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u05e0\\u05e8\\u05d0\\u05d4 \\u05e9\\u05d4\\u05db\\u05ea\\u05d5\\u05d1\\u05ea \\u05e9\\u05d4\\u05db\\u05e0\\u05e1\\u05ea \\u05d4\\u05d9\\u05d0 \\u05e7\\u05d9\\u05e9\\u05d5\\u05e8 \\u05d7\\u05d9\\u05e6\\u05d5\\u05e0\\u05d9 \\u05d4\\u05d0\\u05dd \\u05d1\\u05e8\\u05e6\\u05d5\\u05e0\\u05da \\u05dc\\u05d4\\u05d5\\u05e1\\u05d9\\u05e3 \\u05e7\\u05d9\\u05d3\\u05d5\\u05de\\u05ea http:\\/\\/?\",\n\"Link list\": \"\\u05e8\\u05e9\\u05d9\\u05de\\u05ea \\u05e7\\u05d9\\u05e9\\u05d5\\u05e8\\u05d9\\u05dd\",\n\"Insert video\": \"\\u05d4\\u05db\\u05e0\\u05e1 \\u05e1\\u05e8\\u05d8\\u05d5\\u05df\",\n\"Insert\\/edit video\": \"\\u05d4\\u05db\\u05e0\\u05e1\\/\\u05e2\\u05e8\\u05d5\\u05da \\u05e1\\u05e8\\u05d8\\u05d5\\u05df\",\n\"Insert\\/edit media\": \"\\u05d4\\u05db\\u05e0\\u05e1\\/\\u05e2\\u05e8\\u05d5\\u05da \\u05de\\u05d3\\u05d9\\u05d4\",\n\"Alternative source\": \"\\u05de\\u05e7\\u05d5\\u05e8 \\u05de\\u05e9\\u05e0\\u05d9\",\n\"Alternative source URL\": \"\\u05db\\u05ea\\u05d5\\u05d1\\u05ea URL \\u05dc\\u05de\\u05e7\\u05d5\\u05e8 \\u05d7\\u05dc\\u05d5\\u05e4\\u05d9\",\n\"Media poster (Image URL)\": \"\\u05e4\\u05d5\\u05e1\\u05d8\\u05e8 \\u05de\\u05d3\\u05d9\\u05d4 (\\u05db\\u05ea\\u05d5\\u05d1\\u05ea URL \\u05dc\\u05ea\\u05de\\u05d5\\u05e0\\u05d4)\",\n\"Paste your embed code below:\": \"\\u05d4\\u05d3\\u05d1\\u05e7 \\u05e7\\u05d5\\u05d3 \\u05d4\\u05d8\\u05de\\u05e2\\u05d4 \\u05de\\u05ea\\u05d7\\u05ea:\",\n\"Embed\": \"\\u05d4\\u05d8\\u05de\\u05e2\",\n\"Media...\": \"\\u05de\\u05d3\\u05d9\\u05d4...\",\n\"Nonbreaking space\": \"\\u05e8\\u05d5\\u05d5\\u05d7 (\\u05dc\\u05dc\\u05d0 \\u05e9\\u05d1\\u05d9\\u05e8\\u05ea \\u05e9\\u05d5\\u05e8\\u05d4)\",\n\"Page break\": \"\\u05d3\\u05e3 \\u05d7\\u05d3\\u05e9\",\n\"Paste as text\": \"\\u05d4\\u05d3\\u05d1\\u05e7 \\u05db\\u05d8\\u05e7\\u05e1\\u05d8\",\n\"Preview\": \"\\u05ea\\u05e6\\u05d5\\u05d2\\u05d4 \\u05de\\u05e7\\u05d3\\u05d9\\u05de\\u05d4\",\n\"Print...\": \"\\u05d4\\u05d3\\u05e4\\u05e1...\",\n\"Save\": \"\\u05e9\\u05de\\u05d9\\u05e8\\u05d4\",\n\"Find\": \"\\u05d7\\u05e4\\u05e9\",\n\"Replace with\": \"\\u05d4\\u05d7\\u05dc\\u05e3 \\u05d1\",\n\"Replace\": \"\\u05d4\\u05d7\\u05dc\\u05e3\",\n\"Replace all\": \"\\u05d4\\u05d7\\u05dc\\u05e3 \\u05d4\\u05db\\u05dc\",\n\"Previous\": \"\\u05d4\\u05e7\\u05d5\\u05d3\\u05dd\",\n\"Next\": \"\\u05d4\\u05d1\\u05d0\",\n\"Find and replace...\": \"\\u05d7\\u05d9\\u05e4\\u05d5\\u05e9 \\u05d5\\u05d4\\u05d7\\u05dc\\u05e4\\u05d4...\",\n\"Could not find the specified string.\": \"\\u05de\\u05d7\\u05e8\\u05d5\\u05d6\\u05ea \\u05dc\\u05d0 \\u05e0\\u05de\\u05e6\\u05d0\\u05d4\",\n\"Match case\": \"\\u05d4\\u05d1\\u05d7\\u05df \\u05d1\\u05d9\\u05df \\u05d0\\u05d5\\u05ea\\u05d9\\u05d5\\u05ea \\u05e7\\u05d8\\u05e0\\u05d5\\u05ea \\u05dc\\u05d2\\u05d3\\u05d5\\u05dc\\u05d5\\u05ea\",\n\"Find whole words only\": \"\\u05d7\\u05e4\\u05e9 \\u05de\\u05d9\\u05dc\\u05d9\\u05dd \\u05e9\\u05dc\\u05de\\u05d5\\u05ea \\u05d1\\u05dc\\u05d1\\u05d3\",\n\"Spell check\": \"\\u05d1\\u05d3\\u05d9\\u05e7\\u05ea \\u05d0\\u05d9\\u05d5\\u05ea\",\n\"Ignore\": \"\\u05d4\\u05ea\\u05e2\\u05dc\\u05dd\",\n\"Ignore all\": \"\\u05d4\\u05ea\\u05e2\\u05dc\\u05dd \\u05de\\u05d4\\u05db\\u05dc\",\n\"Finish\": \"\\u05e1\\u05d9\\u05d9\\u05dd\",\n\"Add to Dictionary\": \"\\u05d4\\u05d5\\u05e1\\u05e3 \\u05dc\\u05de\\u05d9\\u05dc\\u05d5\\u05df\",\n\"Insert table\": \"\\u05d4\\u05db\\u05e0\\u05e1 \\u05d8\\u05d1\\u05dc\\u05d4\",\n\"Table properties\": \"\\u05de\\u05d0\\u05e4\\u05d9\\u05d9\\u05e0\\u05d9 \\u05d8\\u05d1\\u05dc\\u05d4\",\n\"Delete table\": \"\\u05de\\u05d7\\u05e7 \\u05d8\\u05d1\\u05dc\\u05d4\",\n\"Cell\": \"\\u05ea\\u05d0\",\n\"Row\": \"\\u05e9\\u05d5\\u05e8\\u05d4\",\n\"Column\": \"\\u05e2\\u05de\\u05d5\\u05d3\\u05d4\",\n\"Cell properties\": \"\\u05de\\u05d0\\u05e4\\u05d9\\u05d9\\u05e0\\u05d9 \\u05ea\\u05d0\",\n\"Merge cells\": \"\\u05de\\u05d6\\u05d2 \\u05ea\\u05d0\\u05d9\\u05dd\",\n\"Split cell\": \"\\u05e4\\u05e6\\u05dc \\u05ea\\u05d0\",\n\"Insert row before\": \"\\u05d4\\u05d5\\u05e1\\u05e3 \\u05e9\\u05d5\\u05e8\\u05d4 \\u05dc\\u05e4\\u05e0\\u05d9\",\n\"Insert row after\": \"\\u05d4\\u05d5\\u05e1\\u05e3 \\u05e9\\u05d5\\u05e8\\u05d4 \\u05d0\\u05d7\\u05e8\\u05d9\",\n\"Delete row\": \"\\u05de\\u05d7\\u05e7 \\u05e9\\u05d5\\u05e8\\u05d4\",\n\"Row properties\": \"\\u05de\\u05d0\\u05e4\\u05d9\\u05d9\\u05e0\\u05d9 \\u05e9\\u05d5\\u05e8\\u05d4\",\n\"Cut row\": \"\\u05d2\\u05d6\\u05d5\\u05e8 \\u05e9\\u05d5\\u05e8\\u05d4\",\n\"Copy row\": \"\\u05d4\\u05e2\\u05ea\\u05e7 \\u05e9\\u05d5\\u05e8\\u05d4\",\n\"Paste row before\": \"\\u05d4\\u05d3\\u05d1\\u05e7 \\u05e9\\u05d5\\u05e8\\u05d4 \\u05dc\\u05e4\\u05e0\\u05d9\",\n\"Paste row after\": \"\\u05d4\\u05e2\\u05ea\\u05e7 \\u05e9\\u05d5\\u05e8\\u05d4 \\u05d0\\u05d7\\u05e8\\u05d9\",\n\"Insert column before\": \"\\u05d4\\u05e2\\u05ea\\u05e7 \\u05e2\\u05de\\u05d5\\u05d3\\u05d4 \\u05dc\\u05e4\\u05e0\\u05d9\",\n\"Insert column after\": \"\\u05d4\\u05e2\\u05ea\\u05e7 \\u05e2\\u05de\\u05d5\\u05d3\\u05d4 \\u05d0\\u05d7\\u05e8\\u05d9\",\n\"Delete column\": \"\\u05de\\u05d7\\u05e7 \\u05e2\\u05de\\u05d5\\u05d3\\u05d4\",\n\"Cols\": \"\\u05e2\\u05de\\u05d5\\u05d3\\u05d5\\u05ea\",\n\"Rows\": \"\\u05e9\\u05d5\\u05e8\\u05d5\\u05ea\",\n\"Width\": \"\\u05e8\\u05d5\\u05d7\\u05d1\",\n\"Height\": \"\\u05d2\\u05d5\\u05d1\\u05d4\",\n\"Cell spacing\": \"\\u05e9\\u05d5\\u05dc\\u05d9\\u05d9\\u05dd \\u05d7\\u05d9\\u05e6\\u05d5\\u05e0\\u05d9\\u05dd \\u05dc\\u05ea\\u05d0\",\n\"Cell padding\": \"\\u05e9\\u05d5\\u05dc\\u05d9\\u05d9\\u05dd \\u05e4\\u05e0\\u05d9\\u05de\\u05d9\\u05d9\\u05dd \\u05dc\\u05ea\\u05d0\",\n\"Show caption\": \"\\u05d4\\u05e6\\u05d2 \\u05db\\u05ea\\u05d5\\u05d1\\u05d9\\u05ea\",\n\"Left\": \"\\u05e9\\u05de\\u05d0\\u05dc\",\n\"Center\": \"\\u05de\\u05e8\\u05db\\u05d6\",\n\"Right\": \"\\u05d9\\u05de\\u05d9\\u05df\",\n\"Cell type\": \"\\u05e1\\u05d5\\u05d2 \\u05ea\\u05d0\",\n\"Scope\": \"\\u05d4\\u05d9\\u05e7\\u05e3\",\n\"Alignment\": \"\\u05d9\\u05d9\\u05e9\\u05d5\\u05e8\",\n\"H Align\": \"\\u05d9\\u05d9\\u05e9\\u05d5\\u05e8 \\u05d0\\u05d5\\u05e4\\u05e7\\u05d9\",\n\"V Align\": \"\\u05d9\\u05d9\\u05e9\\u05d5\\u05e8 \\u05d0\\u05e0\\u05db\\u05d9\",\n\"Top\": \"\\u05e2\\u05dc\\u05d9\\u05d5\\u05df\",\n\"Middle\": \"\\u05d0\\u05de\\u05e6\\u05e2\",\n\"Bottom\": \"\\u05ea\\u05d7\\u05ea\\u05d9\\u05ea\",\n\"Header cell\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea \\u05dc\\u05ea\\u05d0\",\n\"Row group\": \"\\u05e7\\u05d9\\u05d1\\u05d5\\u05e5 \\u05e9\\u05d5\\u05e8\\u05d5\\u05ea\",\n\"Column group\": \"\\u05e7\\u05d9\\u05d1\\u05d5\\u05e5 \\u05e2\\u05de\\u05d5\\u05d3\\u05d5\\u05ea\",\n\"Row type\": \"\\u05e1\\u05d5\\u05d2 \\u05e9\\u05d5\\u05e8\\u05d4\",\n\"Header\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea\",\n\"Body\": \"\\u05d2\\u05d5\\u05e3 \\u05d4\\u05d8\\u05d1\\u05dc\\u05d0\",\n\"Footer\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea \\u05ea\\u05d7\\u05ea\\u05d5\\u05e0\\u05d4\",\n\"Border color\": \"\\u05e6\\u05d1\\u05e2 \\u05d2\\u05d1\\u05d5\\u05dc\",\n\"Insert template...\": \"\\u05d4\\u05db\\u05e0\\u05e1 \\u05ea\\u05d1\\u05e0\\u05d9\\u05ea...\",\n\"Templates\": \"\\u05ea\\u05d1\\u05e0\\u05d9\\u05d5\\u05ea\",\n\"Template\": \"\\u05ea\\u05d1\\u05e0\\u05d9\\u05ea\",\n\"Text color\": \"\\u05e6\\u05d1\\u05e2 \\u05d4\\u05db\\u05ea\\u05d1\",\n\"Background color\": \"\\u05e6\\u05d1\\u05e2 \\u05e8\\u05e7\\u05e2\",\n\"Custom...\": \"\\u05de\\u05d5\\u05ea\\u05d0\\u05dd \\u05d0\\u05d9\\u05e9\\u05d9\\u05ea...\",\n\"Custom color\": \"\\u05e6\\u05d1\\u05e2 \\u05de\\u05d5\\u05ea\\u05d0\\u05dd \\u05d0\\u05d9\\u05e9\\u05d9\\u05ea\",\n\"No color\": \"\\u05dc\\u05dc\\u05d0 \\u05e6\\u05d1\\u05e2\",\n\"Remove color\": \"\\u05d4\\u05e1\\u05e8 \\u05e6\\u05d1\\u05e2\",\n\"Table of Contents\": \"\\u05ea\\u05d5\\u05db\\u05df \\u05e2\\u05e0\\u05d9\\u05d9\\u05e0\\u05d9\\u05dd\",\n\"Show blocks\": \"\\u05d4\\u05e6\\u05d2 \\u05ea\\u05d9\\u05d1\\u05d5\\u05ea\",\n\"Show invisible characters\": \"\\u05d4\\u05e6\\u05d2 \\u05ea\\u05d5\\u05d5\\u05d9\\u05dd \\u05dc\\u05d0 \\u05e0\\u05e8\\u05d0\\u05d9\\u05dd\",\n\"Word count\": \"\\u05e1\\u05e4\\u05d9\\u05e8\\u05ea \\u05de\\u05d9\\u05dc\\u05d9\\u05dd\",\n\"Count\": \"\\u05e1\\u05e4\\u05d9\\u05e8\\u05d4\",\n\"Document\": \"\\u05de\\u05e1\\u05de\\u05da\",\n\"Selection\": \"\\u05d1\\u05d7\\u05d9\\u05e8\\u05d4\",\n\"Words\": \"\\u05de\\u05d9\\u05dc\\u05d9\\u05dd\",\n\"Words: {0}\": \"\\u05de\\u05d9\\u05dc\\u05d9\\u05dd: {0}\",\n\"{0} words\": \"{0} \\u05de\\u05d9\\u05dc\\u05d9\\u05dd\",\n\"File\": \"\\u05e7\\u05d5\\u05d1\\u05e5\",\n\"Edit\": \"\\u05e2\\u05e8\\u05d9\\u05db\\u05d4\",\n\"Insert\": \"\\u05d4\\u05d5\\u05e1\\u05e4\\u05d4\",\n\"View\": \"\\u05ea\\u05e6\\u05d5\\u05d2\\u05d4\",\n\"Format\": \"\\u05e4\\u05d5\\u05e8\\u05de\\u05d8\",\n\"Table\": \"\\u05d8\\u05d1\\u05dc\\u05d4\",\n\"Tools\": \"\\u05db\\u05dc\\u05d9\\u05dd\",\n\"Powered by {0}\": \"\\u05de\\u05d5\\u05e4\\u05e2\\u05dc \\u05e2\\\"\\u05d9 {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u05ea\\u05d9\\u05d1\\u05ea \\u05e2\\u05e8\\u05d9\\u05db\\u05d4 \\u05d7\\u05db\\u05de\\u05d4. \\u05dc\\u05d7\\u05e5 Alt-F9 \\u05dc\\u05ea\\u05e4\\u05e8\\u05d9\\u05d8. Alt-F10 \\u05dc\\u05ea\\u05e6\\u05d5\\u05d2\\u05ea \\u05db\\u05e4\\u05ea\\u05d5\\u05e8\\u05d9\\u05dd, Alt-0 \\u05dc\\u05e2\\u05d6\\u05e8\\u05d4\",\n\"Image title\": \"\\u05db\\u05d5\\u05ea\\u05e8\\u05ea \\u05ea\\u05de\\u05d5\\u05e0\\u05d4\",\n\"Border width\": \"\\u05e8\\u05d5\\u05d7\\u05d1 \\u05d2\\u05d1\\u05d5\\u05dc\",\n\"Border style\": \"\\u05e1\\u05d2\\u05e0\\u05d5\\u05df \\u05d2\\u05d1\\u05d5\\u05dc\",\n\"Error\": \"\\u05e9\\u05d2\\u05d9\\u05d0\\u05d4\",\n\"Warn\": \"\\u05d0\\u05d6\\u05d4\\u05e8\\u05d4\",\n\"Valid\": \"\\u05d7\\u05d5\\u05e7\\u05d9\",\n\"To open the popup, press Shift+Enter\": \"\\u05db\\u05d3\\u05d9 \\u05dc\\u05e4\\u05ea\\u05d5\\u05d7 \\u05d0\\u05ea \\u05d4\\u05e4\\u05e8\\u05d9\\u05d8 \\u05d4\\u05de\\u05d5\\u05e7\\u05e4\\u05e5, \\u05d4\\u05e7\\u05e9 \\u05e2\\u05dc Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u05d0\\u05d6\\u05d5\\u05e8 \\u05d8\\u05e7\\u05e1\\u05d8 \\u05e2\\u05e9\\u05d9\\u05e8. \\u05d4\\u05e7\\u05e9 \\u05e2\\u05dc ALT-0 \\u05dc\\u05e2\\u05d6\\u05e8\\u05d4.\",\n\"System Font\": \"\\u05d2\\u05d5\\u05e4\\u05df \\u05de\\u05e2\\u05e8\\u05db\\u05ea\",\n\"Failed to upload image: {0}\": \"\\u05db\\u05e9\\u05dc \\u05d1\\u05d4\\u05e2\\u05dc\\u05d0\\u05ea \\u05ea\\u05de\\u05d5\\u05e0\\u05d4: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u05db\\u05e9\\u05dc \\u05d1\\u05d8\\u05e2\\u05d9\\u05e0\\u05ea \\u05d9\\u05d9\\u05e9\\u05d5\\u05dd Plugin: {0} \\u05de\\u05db\\u05ea\\u05d5\\u05d1\\u05ea URL\\u200f {1}\",\n\"Failed to load plugin url: {0}\": \"\\u05db\\u05e9\\u05dc \\u05d1\\u05d8\\u05e2\\u05d9\\u05e0\\u05ea \\u05db\\u05ea\\u05d5\\u05d1\\u05ea URL \\u05e9\\u05dc \\u05d9\\u05d9\\u05e9\\u05d5\\u05dd Plugin\\u200f: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u05db\\u05e9\\u05dc \\u05d1\\u05d0\\u05ea\\u05d7\\u05d5\\u05dc \\u05d9\\u05d9\\u05e9\\u05d5\\u05dd Plugin\\u200f: {0}\",\n\"example\": \"\\u05d3\\u05d5\\u05d2\\u05de\\u05d4\",\n\"Search\": \"\\u05d7\\u05e4\\u05e9\",\n\"All\": \"\\u05d4\\u05db\\u05dc\",\n\"Currency\": \"\\u05de\\u05d8\\u05d1\\u05e2\",\n\"Text\": \"\\u05d8\\u05e7\\u05e1\\u05d8\",\n\"Quotations\": \"\\u05e9\\u05d0\\u05dc\\u05d5\\u05ea\",\n\"Mathematical\": \"\\u05de\\u05ea\\u05de\\u05d8\\u05d9\",\n\"Extended Latin\": \"\\u05dc\\u05d8\\u05d9\\u05e0\\u05d9\\u05ea \\u05de\\u05d5\\u05e8\\u05d7\\u05d1\\u05ea\",\n\"Symbols\": \"\\u05e1\\u05de\\u05dc\\u05d9\\u05dd\",\n\"Arrows\": \"\\u05d7\\u05d9\\u05e6\\u05d9\\u05dd\",\n\"User Defined\": \"\\u05de\\u05d5\\u05d2\\u05d3\\u05e8 \\u05e2\\u05dc-\\u05d9\\u05d3\\u05d9 \\u05d4\\u05de\\u05e9\\u05ea\\u05de\\u05e9\",\n\"dollar sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05d3\\u05d5\\u05dc\\u05e8\",\n\"currency sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05de\\u05d8\\u05d1\\u05e2\",\n\"euro-currency sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05de\\u05d8\\u05d1\\u05e2 \\u05d0\\u05d9\\u05e8\\u05d5\",\n\"colon sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e7\\u05d5\\u05dc\\u05d5\\u05df\",\n\"cruzeiro sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e7\\u05e8\\u05d5\\u05d6\\u05e8\\u05d5\",\n\"french franc sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e4\\u05e8\\u05e0\\u05e7 \\u05e6\\u05e8\\u05e4\\u05ea\\u05d9\",\n\"lira sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05dc\\u05d9\\u05e8\\u05d4\",\n\"mill sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05de\\u05d9\\u05dc\",\n\"naira sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e0\\u05d0\\u05d9\\u05e8\\u05d4\",\n\"peseta sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e4\\u05d6\\u05d8\\u05d4\",\n\"rupee sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e8\\u05d5\\u05e4\\u05d9\",\n\"won sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05d5\\u05d5\\u05df\",\n\"new sheqel sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e9\\u05e7\\u05dc \\u05d7\\u05d3\\u05e9\",\n\"dong sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05d3\\u05d5\\u05e0\\u05d2\",\n\"kip sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e7\\u05d9\\u05e4\",\n\"tugrik sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05d8\\u05d5\\u05d2\\u05e8\\u05d9\\u05e7\",\n\"drachma sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05d3\\u05e8\\u05db\\u05de\\u05d4\",\n\"german penny symbol\": \"\\u05e1\\u05de\\u05dc \\u05e4\\u05e0\\u05d9 \\u05d2\\u05e8\\u05de\\u05e0\\u05d9\",\n\"peso sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e4\\u05d6\\u05d5\",\n\"guarani sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05d2\\u05d5\\u05d0\\u05e8\\u05e0\\u05d9\\u05ea\",\n\"austral sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05d0\\u05d5\\u05e1\\u05d8\\u05e8\\u05dc\",\n\"hryvnia sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e8\\u05d9\\u05d1\\u05e0\\u05d9\\u05d4\",\n\"cedi sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e1\\u05d3\\u05d9\",\n\"livre tournois sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05dc\\u05d1\\u05e8\\u05d4 \\u05d8\\u05d5\\u05e8\\u05e0\\u05d5\",\n\"spesmilo sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e1\\u05e4\\u05e1\\u05de\\u05d9\\u05dc\\u05d5\",\n\"tenge sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05d8\\u05e0\\u05d2\\u05d4\",\n\"indian rupee sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e8\\u05d5\\u05e4\\u05d9 \\u05d4\\u05d5\\u05d3\\u05d9\",\n\"turkish lira sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05dc\\u05d9\\u05e8\\u05d4 \\u05d8\\u05d5\\u05e8\\u05e7\\u05d9\\u05ea\",\n\"nordic mark sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05de\\u05d0\\u05e8\\u05e7 \\u05e1\\u05e7\\u05e0\\u05d3\\u05d9\\u05e0\\u05d1\\u05d9\",\n\"manat sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05de\\u05d0\\u05e0\\u05d0\\u05d8\",\n\"ruble sign\": \"\\u05e1\\u05d9\\u05de\\u05df \\u05e8\\u05d5\\u05d1\\u05dc\",\n\"yen character\": \"\\u05ea\\u05d5 \\u05d9\\u05df\",\n\"yuan character\": \"\\u05ea\\u05d5 \\u05d9\\u05d5\\u05d0\\u05df\",\n\"yuan character, in hong kong and taiwan\": \"\\u05ea\\u05d5 \\u05d9\\u05d5\\u05d0\\u05df, \\u05d1\\u05d4\\u05d5\\u05e0\\u05d2 \\u05e7\\u05d5\\u05e0\\u05d2 \\u05d5\\u05d1\\u05d8\\u05d9\\u05d9\\u05d5\\u05d5\\u05d0\\u05df\",\n\"yen\\/yuan character variant one\": \"\\u05de\\u05e9\\u05ea\\u05e0\\u05d4 \\u05d0\\u05d7\\u05d3 \\u05e9\\u05dc \\u05ea\\u05d5 \\u05d9\\u05d5\\u05d0\\u05df\\/\\u05d9\\u05df\",\n\"Loading emoticons...\": \"\\u05d8\\u05d5\\u05e2\\u05df \\u05e1\\u05de\\u05dc\\u05d9 \\u05d4\\u05d1\\u05e2\\u05d4...\",\n\"Could not load emoticons\": \"\\u05dc\\u05d0 \\u05e0\\u05d9\\u05ea\\u05df \\u05d4\\u05d9\\u05d4 \\u05dc\\u05d8\\u05e2\\u05d5\\u05df \\u05e1\\u05de\\u05dc\\u05d9 \\u05d4\\u05d1\\u05e2\\u05d4\",\n\"People\": \"\\u05d0\\u05e0\\u05e9\\u05d9\\u05dd\",\n\"Animals and Nature\": \"\\u05d1\\u05e2\\u05dc\\u05d9-\\u05d7\\u05d9\\u05d9\\u05dd \\u05d5\\u05d8\\u05d1\\u05e2\",\n\"Food and Drink\": \"\\u05d0\\u05d5\\u05db\\u05dc \\u05d5\\u05e9\\u05ea\\u05d9\\u05d9\\u05d4\",\n\"Activity\": \"\\u05e4\\u05e2\\u05d9\\u05dc\\u05d5\\u05ea\",\n\"Travel and Places\": \"\\u05e0\\u05e1\\u05d9\\u05e2\\u05d4 \\u05d5\\u05de\\u05e7\\u05d5\\u05de\\u05d5\\u05ea\",\n\"Objects\": \"\\u05d0\\u05d5\\u05d1\\u05d9\\u05d9\\u05e7\\u05d8\\u05d9\\u05dd\",\n\"Flags\": \"\\u05d3\\u05d2\\u05dc\\u05d9\\u05dd\",\n\"Characters\": \"\\u05ea\\u05d5\\u05d5\\u05d9\\u05dd\",\n\"Characters (no spaces)\": \"\\u05ea\\u05d5\\u05d5\\u05d9\\u05dd (\\u05dc\\u05dc\\u05d0 \\u05e8\\u05d5\\u05d5\\u05d7\\u05d9\\u05dd)\",\n\"{0} characters\": \"{0} \\u05ea\\u05d5\\u05d5\\u05d9\\u05dd\",\n\"Error: Form submit field collision.\": \"\\u05e9\\u05d2\\u05d9\\u05d0\\u05d4: \\u05d4\\u05ea\\u05e0\\u05d2\\u05e9\\u05d5\\u05ea \\u05d1\\u05e9\\u05d3\\u05d4 \\u05e9\\u05dc\\u05d9\\u05d7\\u05ea \\u05d8\\u05d5\\u05e4\\u05e1.\",\n\"Error: No form element found.\": \"\\u05e9\\u05d2\\u05d9\\u05d0\\u05d4: \\u05dc\\u05d0 \\u05e0\\u05de\\u05e6\\u05d0 \\u05e8\\u05db\\u05d9\\u05d1 \\u05d8\\u05d5\\u05e4\\u05e1.\",\n\"Update\": \"\\u05e2\\u05d3\\u05db\\u05df\",\n\"Color swatch\": \"\\u05d3\\u05d5\\u05d2\\u05de\\u05d0\\u05d5\\u05ea \\u05e6\\u05d1\\u05e2\",\n\"Turquoise\": \"\\u05d8\\u05d5\\u05e8\\u05e7\\u05d9\\u05d6\",\n\"Green\": \"\\u05d9\\u05e8\\u05d5\\u05e7\",\n\"Blue\": \"\\u05db\\u05d7\\u05d5\\u05dc\",\n\"Purple\": \"\\u05e1\\u05d2\\u05d5\\u05dc\",\n\"Navy Blue\": \"\\u05db\\u05d7\\u05d5\\u05dc \\u05e6\\u05d9\",\n\"Dark Turquoise\": \"\\u05d8\\u05d5\\u05e8\\u05e7\\u05d9\\u05d6 \\u05db\\u05d4\\u05d4\",\n\"Dark Green\": \"\\u05d9\\u05e8\\u05d5\\u05e7 \\u05db\\u05d4\\u05d4\",\n\"Medium Blue\": \"\\u05db\\u05d7\\u05d5\\u05dc \\u05d1\\u05d9\\u05e0\\u05d5\\u05e0\\u05d9\",\n\"Medium Purple\": \"\\u05e1\\u05d2\\u05d5\\u05dc \\u05d1\\u05d9\\u05e0\\u05d5\\u05e0\\u05d9\",\n\"Midnight Blue\": \"\\u05db\\u05d7\\u05d5\\u05dc \\u05d7\\u05e6\\u05d5\\u05ea\",\n\"Yellow\": \"\\u05e6\\u05d4\\u05d5\\u05d1\",\n\"Orange\": \"\\u05db\\u05ea\\u05d5\\u05dd\",\n\"Red\": \"\\u05d0\\u05d3\\u05d5\\u05dd\",\n\"Light Gray\": \"\\u05d0\\u05e4\\u05d5\\u05e8 \\u05d1\\u05d4\\u05d9\\u05e8\",\n\"Gray\": \"\\u05d0\\u05e4\\u05d5\\u05e8\",\n\"Dark Yellow\": \"\\u05e6\\u05d4\\u05d5\\u05d1 \\u05db\\u05d4\\u05d4\",\n\"Dark Orange\": \"\\u05db\\u05ea\\u05d5\\u05dd \\u05db\\u05d4\\u05d4\",\n\"Dark Red\": \"\\u05d0\\u05d3\\u05d5\\u05dd \\u05db\\u05d4\\u05d4\",\n\"Medium Gray\": \"\\u05d0\\u05e4\\u05d5\\u05e8 \\u05d1\\u05d9\\u05e0\\u05d5\\u05e0\\u05d9\",\n\"Dark Gray\": \"\\u05d0\\u05e4\\u05d5\\u05e8 \\u05db\\u05d4\\u05d4\",\n\"Light Green\": \"\\u05d9\\u05e8\\u05d5\\u05e7 \\u05d1\\u05d4\\u05d9\\u05e8\",\n\"Light Yellow\": \"\\u05e6\\u05d4\\u05d5\\u05d1 \\u05d1\\u05d4\\u05d9\\u05e8\",\n\"Light Red\": \"\\u05d0\\u05d3\\u05d5\\u05dd \\u05d1\\u05d4\\u05d9\\u05e8\",\n\"Light Purple\": \"\\u05e1\\u05d2\\u05d5\\u05dc \\u05d1\\u05d4\\u05d9\\u05e8\",\n\"Light Blue\": \"\\u05db\\u05d7\\u05d5\\u05dc \\u05d1\\u05d4\\u05d9\\u05e8\",\n\"Dark Purple\": \"\\u05e1\\u05d2\\u05d5\\u05dc \\u05db\\u05d4\\u05d4\",\n\"Dark Blue\": \"\\u05db\\u05d7\\u05d5\\u05dc \\u05db\\u05d4\\u05d4\",\n\"Black\": \"\\u05e9\\u05d7\\u05d5\\u05e8\",\n\"White\": \"\\u05dc\\u05d1\\u05df\",\n\"Switch to or from fullscreen mode\": \"\\u05d4\\u05d7\\u05dc\\u05e3 \\u05dc\\u05de\\u05e6\\u05d1 \\u05de\\u05e1\\u05da \\u05de\\u05dc\\u05d0 \\u05d0\\u05d5 \\u05e6\\u05d0 \\u05de\\u05de\\u05e0\\u05d5\",\n\"Open help dialog\": \"\\u05e4\\u05ea\\u05d7 \\u05ea\\u05d9\\u05d1\\u05ea \\u05d3\\u05d5-\\u05e9\\u05d9\\u05d7 \\u05e9\\u05dc \\u05e2\\u05d6\\u05e8\\u05d4\",\n\"history\": \"\\u05d4\\u05d9\\u05e1\\u05d8\\u05d5\\u05e8\\u05d9\\u05d4\",\n\"styles\": \"\\u05e1\\u05d2\\u05e0\\u05d5\\u05e0\\u05d5\\u05ea\",\n\"formatting\": \"\\u05e2\\u05d9\\u05e6\\u05d5\\u05d1\",\n\"alignment\": \"\\u05d9\\u05d9\\u05e9\\u05d5\\u05e8\",\n\"indentation\": \"\\u05d4\\u05d6\\u05d7\\u05d4\",\n\"permanent pen\": \"\\u05e2\\u05d8 \\u05e7\\u05d1\\u05d5\\u05e2\",\n\"comments\": \"\\u05d4\\u05e2\\u05e8\\u05d5\\u05ea\",\n\"Format Painter\": \"\\u05e6\\u05d9\\u05d9\\u05e8 \\u05e2\\u05d9\\u05e6\\u05d5\\u05d1\",\n\"Insert\\/edit iframe\": \"\\u05d4\\u05db\\u05e0\\u05e1\\/\\u05e2\\u05e8\\u05d5\\u05da \\u05d7\\u05dc\\u05d5\\u05df \\u05de\\u05e1\\u05d2\\u05e8\\u05ea\",\n\"Capitalization\": \"\\u05d0\\u05d5\\u05ea\\u05d9\\u05d5\\u05ea \\u05e8\\u05d9\\u05e9\\u05d9\\u05d5\\u05ea\",\n\"lowercase\": \"\\u05d0\\u05d5\\u05ea\\u05d9\\u05d5\\u05ea \\u05e7\\u05d8\\u05e0\\u05d5\\u05ea\",\n\"UPPERCASE\": \"\\u05d0\\u05d5\\u05ea\\u05d9\\u05d5\\u05ea \\u05e8\\u05d9\\u05e9\\u05d9\\u05d5\\u05ea\",\n\"Title Case\": \"\\u05d0\\u05d5\\u05ea\\u05d9\\u05d5\\u05ea \\u05db\\u05d5\\u05ea\\u05e8\\u05ea\",\n\"Permanent Pen Properties\": \"\\u05de\\u05d0\\u05e4\\u05d9\\u05d9\\u05e0\\u05d9 \\u05e2\\u05d8 \\u05e7\\u05d1\\u05d5\\u05e2\\u05d9\\u05dd\",\n\"Permanent pen properties...\": \"\\u05de\\u05d0\\u05e4\\u05d9\\u05d9\\u05e0\\u05d9 \\u05e2\\u05d8 \\u05e7\\u05d1\\u05d5\\u05e2\\u05d9\\u05dd...\",\n\"Font\": \"\\u05d2\\u05d5\\u05e4\\u05df\",\n\"Size\": \"\\u05d2\\u05d5\\u05d3\\u05dc\",\n\"More...\": \"\\u05e2\\u05d5\\u05d3...\",\n\"Spellcheck Language\": \"\\u05e9\\u05e4\\u05ea \\u05d1\\u05d3\\u05d9\\u05e7\\u05ea \\u05d0\\u05d9\\u05d5\\u05ea\",\n\"Select...\": \"\\u05d1\\u05d7\\u05e8...\",\n\"Preferences\": \"\\u05d4\\u05e2\\u05d3\\u05e4\\u05d5\\u05ea\",\n\"Yes\": \"\\u05db\\u05df\",\n\"No\": \"\\u05dc\\u05d0\",\n\"Keyboard Navigation\": \"\\u05e0\\u05d9\\u05d5\\u05d5\\u05d8 \\u05d1\\u05de\\u05e7\\u05dc\\u05d3\\u05ea\",\n\"Version\": \"\\u05d2\\u05e8\\u05e1\\u05d4\",\n\"Anchor\": \"\\u05de\\u05e7\\u05d5\\u05dd \\u05e2\\u05d9\\u05d2\\u05d5\\u05df\",\n\"Special character\": \"\\u05ea\\u05d5\\u05d5\\u05d9\\u05dd \\u05de\\u05d9\\u05d5\\u05d7\\u05d3\\u05d9\\u05dd\",\n\"Code sample\": \"\\u05d3\\u05d5\\u05d2\\u05de\\u05ea \\u05e7\\u05d5\\u05d3\",\n\"Color\": \"\\u05e6\\u05d1\\u05e2\",\n\"Emoticons\": \"\\u05de\\u05d7\\u05d5\\u05d5\\u05ea\",\n\"Document properties\": \"\\u05de\\u05d0\\u05e4\\u05d9\\u05d9\\u05e0\\u05d9 \\u05de\\u05e1\\u05de\\u05da\",\n\"Image\": \"\\u05ea\\u05de\\u05d5\\u05e0\\u05d4\",\n\"Insert link\": \"\\u05d4\\u05db\\u05e0\\u05e1 \\u05e7\\u05d9\\u05e9\\u05d5\\u05e8\",\n\"Target\": \"\\u05de\\u05d8\\u05e8\\u05d4\",\n\"Link\": \"\\u05e7\\u05d9\\u05e9\\u05d5\\u05e8\",\n\"Poster\": \"\\u05e4\\u05d5\\u05e1\\u05d8\\u05e8\",\n\"Media\": \"\\u05de\\u05d3\\u05d9\\u05d4\",\n\"Print\": \"\\u05d4\\u05d3\\u05e4\\u05e1\",\n\"Prev\": \"\\u05e7\\u05d5\\u05d3\\u05dd\",\n\"Find and replace\": \"\\u05d7\\u05e4\\u05e9 \\u05d5\\u05d4\\u05d7\\u05dc\\u05e3\",\n\"Whole words\": \"\\u05de\\u05d9\\u05dc\\u05d4 \\u05e9\\u05dc\\u05de\\u05d4\",\n\"Spellcheck\": \"\\u05d1\\u05d5\\u05d3\\u05e7 \\u05d0\\u05d9\\u05d5\\u05ea\",\n\"Caption\": \"\\u05db\\u05d9\\u05ea\\u05d5\\u05d1\",\n\"Insert template\": \"\\u05d4\\u05db\\u05e0\\u05e1 \\u05ea\\u05d1\\u05e0\\u05d9\\u05ea\",\n\"_dir\": \"rtl\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/hr.js",
    "content": "tinymce.addI18n('hr',{\n\"Redo\": \"Ponovi\",\n\"Undo\": \"Poni\\u0161ti\",\n\"Cut\": \"Izre\\u017ei\",\n\"Copy\": \"Kopiraj\",\n\"Paste\": \"Zalijepi\",\n\"Select all\": \"Odaberi sve\",\n\"New document\": \"Novi dokument\",\n\"Ok\": \"U redu\",\n\"Cancel\": \"Odustani\",\n\"Visual aids\": \"Vizualna pomo\\u0107\",\n\"Bold\": \"Podebljano\",\n\"Italic\": \"Kurziv\",\n\"Underline\": \"Podcrtaj\",\n\"Strikethrough\": \"Prekri\\u017ei\",\n\"Superscript\": \"Eksponent\",\n\"Subscript\": \"Indeks\",\n\"Clear formatting\": \"Izbri\\u0161i oblikovanje\",\n\"Align left\": \"Poravnaj lijevo\",\n\"Align center\": \"Poravnaj po sredini\",\n\"Align right\": \"Poravnaj desno\",\n\"Justify\": \"Obostrano poravnanje\",\n\"Bullet list\": \"Popis s oznakama\",\n\"Numbered list\": \"Numerirani popis\",\n\"Decrease indent\": \"Smanji uvla\\u010denje\",\n\"Increase indent\": \"Pove\\u0107aj uvla\\u010denje\",\n\"Close\": \"Zatvori\",\n\"Formats\": \"Formati\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Va\\u0161 preglednik ne podr\\u017eava izravan pristup me\\u0111uspremniku. Umjesto toga upotrijebite tipkovni\\u010dke pre\\u010dace Ctrl\\u00a0+\\u00a0X\\/C\\/V.\",\n\"Headers\": \"Zaglavlja\",\n\"Header 1\": \"Zaglavlje 1\",\n\"Header 2\": \"Zaglavlje 2\",\n\"Header 3\": \"Zaglavlje 3\",\n\"Header 4\": \"Zaglavlje 4\",\n\"Header 5\": \"Zaglavlje 5\",\n\"Header 6\": \"Zaglavlje 6\",\n\"Headings\": \"Zaglavlja\",\n\"Heading 1\": \"Zaglavlje 1\",\n\"Heading 2\": \"Zaglavlje 2\",\n\"Heading 3\": \"Zaglavlje 3\",\n\"Heading 4\": \"Zaglavlje 4\",\n\"Heading 5\": \"Zaglavlje 5\",\n\"Heading 6\": \"Zaglavlje 6\",\n\"Preformatted\": \"Prethodno oblikovano\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Kod\",\n\"Paragraph\": \"Odlomak\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"U retku\",\n\"Blocks\": \"Blokovi\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Akcija zalijepi od sada lijepi \\u010disti tekst. Sadr\\u017eaj \\u0107e biti zaljepljen kao \\u010disti tekst sve dok ne isklju\\u010dite ovu opciju.\",\n\"Fonts\": \"Fontovi\",\n\"Font Sizes\": \"Veli\\u010dine fonta\",\n\"Class\": \"Razred\",\n\"Browse for an image\": \"Potra\\u017eite sliku\",\n\"OR\": \"ILI\",\n\"Drop an image here\": \"Ispustite sliku ovdje\",\n\"Upload\": \"U\\u010ditaj\",\n\"Block\": \"Blok\",\n\"Align\": \"Poravnaj\",\n\"Default\": \"Zadano\",\n\"Circle\": \"Krug\",\n\"Disc\": \"To\\u010dka\",\n\"Square\": \"Kvadrat\",\n\"Lower Alpha\": \"Mala slova\",\n\"Lower Greek\": \"Mala gr\\u010dka slova\",\n\"Lower Roman\": \"Mala rimska slova\",\n\"Upper Alpha\": \"Velika slova\",\n\"Upper Roman\": \"Velika rimska slova\",\n\"Anchor...\": \"Fiksna to\\u010dka...\",\n\"Name\": \"Ime\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id treba po\\u010dinjati slovom, a nakon toga slijede samo slova, brojevi, crtice, to\\u010dke, dvoto\\u010dke i podvlake.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Postoje ne pohranjene izmjene, jeste li sigurni da \\u017eelite oti\\u0107i?\",\n\"Restore last draft\": \"Vrati posljednju skicu\",\n\"Special character...\": \"Poseban znak...\",\n\"Source code\": \"Izvorni kod\",\n\"Insert\\/Edit code sample\": \"Umetni\\/Uredi primjer k\\u00f4da\",\n\"Language\": \"Jezik\",\n\"Code sample...\": \"Primjerak k\\u00f4da...\",\n\"Color Picker\": \"Izabira\\u010d boja\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"S lijeva na desno\",\n\"Right to left\": \"S desna na lijevo\",\n\"Emoticons...\": \"Emotikoni...\",\n\"Metadata and Document Properties\": \"Metapodaci i svojstva dokumenta\",\n\"Title\": \"Naslov\",\n\"Keywords\": \"Klju\\u010dne rije\\u010di\",\n\"Description\": \"Opis\",\n\"Robots\": \"Roboti pretra\\u017eiva\\u010da\",\n\"Author\": \"Autor\",\n\"Encoding\": \"Kodna stranica\",\n\"Fullscreen\": \"Cijeli ekran\",\n\"Action\": \"Action\",\n\"Shortcut\": \"Shortcut\",\n\"Help\": \"Help\",\n\"Address\": \"Address\",\n\"Focus to menubar\": \"Focus to menubar\",\n\"Focus to toolbar\": \"Focus to toolbar\",\n\"Focus to element path\": \"Focus to element path\",\n\"Focus to contextual toolbar\": \"Focus to contextual toolbar\",\n\"Insert link (if link plugin activated)\": \"Insert link (if link plugin activated)\",\n\"Save (if save plugin activated)\": \"Save (if save plugin activated)\",\n\"Find (if searchreplace plugin activated)\": \"Find (if searchreplace plugin activated)\",\n\"Plugins installed ({0}):\": \"Plugins installed ({0}):\",\n\"Premium plugins:\": \"Premium plugins:\",\n\"Learn more...\": \"Learn more...\",\n\"You are using {0}\": \"You are using {0}\",\n\"Plugins\": \"Dodaci\",\n\"Handy Shortcuts\": \"Korisni pre\\u010daci\",\n\"Horizontal line\": \"Horizontalna linija\",\n\"Insert\\/edit image\": \"Umetni\\/izmijeni sliku\",\n\"Image description\": \"Opis slike\",\n\"Source\": \"Izvor\",\n\"Dimensions\": \"Dimenzije\",\n\"Constrain proportions\": \"Zadr\\u017ei proporcije\",\n\"General\": \"Op\\u0107enito\",\n\"Advanced\": \"Napredno\",\n\"Style\": \"Stil\",\n\"Vertical space\": \"Okomit razmak\",\n\"Horizontal space\": \"Horizontalan razmak\",\n\"Border\": \"Rub\",\n\"Insert image\": \"Umetni sliku\",\n\"Image...\": \"Slika...\",\n\"Image list\": \"Image list\",\n\"Rotate counterclockwise\": \"Rotiraj lijevo\",\n\"Rotate clockwise\": \"Rotiraj desno\",\n\"Flip vertically\": \"Obrni vertikalno\",\n\"Flip horizontally\": \"Obrni horizontalno\",\n\"Edit image\": \"Uredi sliku\",\n\"Image options\": \"Opcije slike\",\n\"Zoom in\": \"Pove\\u0107aj\",\n\"Zoom out\": \"Smanji\",\n\"Crop\": \"Obre\\u017ei\",\n\"Resize\": \"Promjeni veli\\u010dinu\",\n\"Orientation\": \"Orijentacija\",\n\"Brightness\": \"Svjetlina\",\n\"Sharpen\": \"Izo\\u0161travanje\",\n\"Contrast\": \"Kontrast\",\n\"Color levels\": \"Razine boje\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Invertiraj\",\n\"Apply\": \"Primijeni\",\n\"Back\": \"Natrag\",\n\"Insert date\\/time\": \"Umetni datum\\/vrijeme\",\n\"Date\\/time\": \"Datum\\/vrijeme\",\n\"Insert\\/Edit Link\": \"Umetni\\/uredi poveznicu\",\n\"Insert\\/edit link\": \"Umetni\\/izmijeni poveznicu\",\n\"Text to display\": \"Tekst za prikaz\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Otvori poveznicu u...\",\n\"Current window\": \"Trenuta\\u010dni prozor\",\n\"None\": \"Ni\\u0161ta\",\n\"New window\": \"Novi prozor\",\n\"Remove link\": \"Ukloni poveznicu\",\n\"Anchors\": \"Kra\\u0107e poveznice\",\n\"Link...\": \"Poveznica...\",\n\"Paste or type a link\": \"Zalijepi ili upi\\u0161i link\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Izgleda da je URL koji ste upisali e-mail adresa. \\u017delite li dodati obavezan mailto: prefiks?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Izgleda da je URL koji ste upisali vanjski link. \\u017delite li dodati obavezan http:\\/\\/ prefiks?\",\n\"Link list\": \"Link list\",\n\"Insert video\": \"Umetni video\",\n\"Insert\\/edit video\": \"Umetni\\/izmijeni video\",\n\"Insert\\/edit media\": \"Umetni\\/uredi mediju\",\n\"Alternative source\": \"Alternativni izvor\",\n\"Alternative source URL\": \"URL alternativnog izvora\",\n\"Media poster (Image URL)\": \"Medijski poster (URL slike)\",\n\"Paste your embed code below:\": \"Umetnite va\\u0161 kod za ugradnju ispod:\",\n\"Embed\": \"Ugradi\",\n\"Media...\": \"Mediji...\",\n\"Nonbreaking space\": \"Neprekidaju\\u0107i razmak\",\n\"Page break\": \"Prijelom stranice\",\n\"Paste as text\": \"Zalijepi kao tekst\",\n\"Preview\": \"Pregled\",\n\"Print...\": \"Ispi\\u0161i...\",\n\"Save\": \"Spremi\",\n\"Find\": \"Tra\\u017ei\",\n\"Replace with\": \"Zamijeni s\",\n\"Replace\": \"Zamijeni\",\n\"Replace all\": \"Zamijeni sve\",\n\"Previous\": \"Prethodno\",\n\"Next\": \"Slijede\\u0107i\",\n\"Find and replace...\": \"Prona\\u0111i i zamijeni...\",\n\"Could not find the specified string.\": \"Tra\\u017eeni tekst nije prona\\u0111en\",\n\"Match case\": \"Pazi na mala i velika slova\",\n\"Find whole words only\": \"Prona\\u0111i samo cijele rije\\u010di\",\n\"Spell check\": \"Provjera pravopisa\",\n\"Ignore\": \"Zanemari\",\n\"Ignore all\": \"Zanemari sve\",\n\"Finish\": \"Zavr\\u0161i\",\n\"Add to Dictionary\": \"Dodaj u rje\\u010dnik\",\n\"Insert table\": \"Umetni tablicu\",\n\"Table properties\": \"Svojstva tablice\",\n\"Delete table\": \"Izbri\\u0161i tablicu\",\n\"Cell\": \"Polje\",\n\"Row\": \"Redak\",\n\"Column\": \"Stupac\",\n\"Cell properties\": \"Svojstva polja\",\n\"Merge cells\": \"Spoji polja\",\n\"Split cell\": \"Razdvoji polja\",\n\"Insert row before\": \"Umetni redak prije\",\n\"Insert row after\": \"Umetni redak nakon\",\n\"Delete row\": \"Izbri\\u0161i redak\",\n\"Row properties\": \"Svojstva redka\",\n\"Cut row\": \"Izre\\u017ei redak\",\n\"Copy row\": \"Kopiraj redak\",\n\"Paste row before\": \"Zalijepi redak prije\",\n\"Paste row after\": \"Zalijepi redak nakon\",\n\"Insert column before\": \"Umetni stupac prije\",\n\"Insert column after\": \"Umetni stupac nakon\",\n\"Delete column\": \"Izbri\\u0161i stupac\",\n\"Cols\": \"Stupci\",\n\"Rows\": \"Redci\",\n\"Width\": \"\\u0160irina\",\n\"Height\": \"Visina\",\n\"Cell spacing\": \"Razmak izme\\u0111u polja\",\n\"Cell padding\": \"Razmak unutar polja\",\n\"Show caption\": \"Prika\\u017ei natpis\",\n\"Left\": \"Lijevo\",\n\"Center\": \"Sredina\",\n\"Right\": \"Desno\",\n\"Cell type\": \"Vrsta polja\",\n\"Scope\": \"Doseg\",\n\"Alignment\": \"Poravnanje\",\n\"H Align\": \"H Poravnavanje\",\n\"V Align\": \"V Poravnavanje\",\n\"Top\": \"Vrh\",\n\"Middle\": \"Sredina\",\n\"Bottom\": \"Dno\",\n\"Header cell\": \"Polje zaglavlja\",\n\"Row group\": \"Grupirani redci\",\n\"Column group\": \"Grupirani stupci\",\n\"Row type\": \"Vrsta redka\",\n\"Header\": \"Zaglavlje\",\n\"Body\": \"Sadr\\u017eaj\",\n\"Footer\": \"Podno\\u017eje\",\n\"Border color\": \"Boja ruba\",\n\"Insert template...\": \"Umetni predlo\\u017eak...\",\n\"Templates\": \"Predlo\\u0161ci\",\n\"Template\": \"Predlo\\u017eak\",\n\"Text color\": \"Boja teksta\",\n\"Background color\": \"Boja pozadine\",\n\"Custom...\": \"Prilago\\u0111eno...\",\n\"Custom color\": \"Prilago\\u0111ena boja\",\n\"No color\": \"Bez boje\",\n\"Remove color\": \"Ukloni boju\",\n\"Table of Contents\": \"Sadr\\u017eaj\",\n\"Show blocks\": \"Prika\\u017ei blokove\",\n\"Show invisible characters\": \"Prika\\u017ei nevidljive znakove\",\n\"Word count\": \"Broj rije\\u010di\",\n\"Count\": \"Broj\",\n\"Document\": \"Dokument\",\n\"Selection\": \"Odabir\",\n\"Words\": \"Rije\\u010di\",\n\"Words: {0}\": \"Rije\\u010di: {0}\",\n\"{0} words\": \"{0} rije\\u010d(i)\",\n\"File\": \"Datoteka\",\n\"Edit\": \"Izmijeni\",\n\"Insert\": \"Umetni\",\n\"View\": \"Pogled\",\n\"Format\": \"Oblikuj\",\n\"Table\": \"Tablica\",\n\"Tools\": \"Alati\",\n\"Powered by {0}\": \"Omogu\\u0107uje {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Pritisni ALT-F9 za izbornik. Pritisni ALT-F10 za alatnu traku. Pritisni ALT-0 za pomo\\u0107\",\n\"Image title\": \"Naslov slike\",\n\"Border width\": \"\\u0160irina granice\",\n\"Border style\": \"Stil granice\",\n\"Error\": \"Pogre\\u0161ka\",\n\"Warn\": \"Upozori\",\n\"Valid\": \"Valjano\",\n\"To open the popup, press Shift+Enter\": \"Da biste otvorili sko\\u010dni prozor, pritisnite Shift\\u00a0+\\u00a0Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Podru\\u010dje oboga\\u0107enog teksta. Pritisnite ALT-0 za pomo\\u0107.\",\n\"System Font\": \"Font sustava\",\n\"Failed to upload image: {0}\": \"U\\u010ditavanje slike nije uspjelo: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"U\\u010ditavanje dodatka nije uspjelo: {0} s URL-a {1}\",\n\"Failed to load plugin url: {0}\": \"U\\u010ditavanje dodatka nije uspjelo: {0}\",\n\"Failed to initialize plugin: {0}\": \"Pokretanje dodatka nije uspjelo: {0}\",\n\"example\": \"primjer\",\n\"Search\": \"Tra\\u017ei\",\n\"All\": \"Svi\",\n\"Currency\": \"Valuta\",\n\"Text\": \"Tekst\",\n\"Quotations\": \"Navodnici\",\n\"Mathematical\": \"Matemati\\u010dki\",\n\"Extended Latin\": \"Pro\\u0161ireni latinski\",\n\"Symbols\": \"Simboli\",\n\"Arrows\": \"Strelice\",\n\"User Defined\": \"Korisni\\u010dki definirano\",\n\"dollar sign\": \"znak za dolar\",\n\"currency sign\": \"znak za valutu\",\n\"euro-currency sign\": \"znak za valutu \\u2013 euro\",\n\"colon sign\": \"znak za kolon\",\n\"cruzeiro sign\": \"znak za cruzeiro\",\n\"french franc sign\": \"znak za francuski franak\",\n\"lira sign\": \"znak za liru\",\n\"mill sign\": \"znak za mill\",\n\"naira sign\": \"znak za nairu\",\n\"peseta sign\": \"znak za pezetu\",\n\"rupee sign\": \"znak za rupiju\",\n\"won sign\": \"znak za von\",\n\"new sheqel sign\": \"znak za novi \\u0161ekel\",\n\"dong sign\": \"znak za dong\",\n\"kip sign\": \"znak za kip\",\n\"tugrik sign\": \"znak za tugrik\",\n\"drachma sign\": \"znak za drahmu\",\n\"german penny symbol\": \"simbol za njema\\u010dki peni\",\n\"peso sign\": \"znak za pezo\",\n\"guarani sign\": \"znak za gvarani\",\n\"austral sign\": \"znak za austral\",\n\"hryvnia sign\": \"znak za grivnju\",\n\"cedi sign\": \"znak za cedi\",\n\"livre tournois sign\": \"znak za livre tournois\",\n\"spesmilo sign\": \"znak za spesmilo\",\n\"tenge sign\": \"znak za tengu\",\n\"indian rupee sign\": \"znak za indijsku rupiju\",\n\"turkish lira sign\": \"znak za tursku liru\",\n\"nordic mark sign\": \"znak za nordijsku marku\",\n\"manat sign\": \"znak za manat\",\n\"ruble sign\": \"znak za rubalj\",\n\"yen character\": \"znak za jen\",\n\"yuan character\": \"znak za juan\",\n\"yuan character, in hong kong and taiwan\": \"znak za juan, u Hong Kongu i Tajvanu\",\n\"yen\\/yuan character variant one\": \"znak za jen\\/juan, prva varijanta\",\n\"Loading emoticons...\": \"U\\u010ditavanje emotikona...\",\n\"Could not load emoticons\": \"Nije mogu\\u0107e u\\u010ditati emotikone\",\n\"People\": \"Osobe\",\n\"Animals and Nature\": \"\\u017divotinje i priroda\",\n\"Food and Drink\": \"Hrana i pi\\u0107e\",\n\"Activity\": \"Aktivnosti\",\n\"Travel and Places\": \"Putovanje i mjesta\",\n\"Objects\": \"Predmeti\",\n\"Flags\": \"Zastave\",\n\"Characters\": \"Znakovi\",\n\"Characters (no spaces)\": \"Znakovi (bez razmaka)\",\n\"{0} characters\": \"{0} znakova\",\n\"Error: Form submit field collision.\": \"Pogre\\u0161ka: sukob polja za podno\\u0161enje obrasca.\",\n\"Error: No form element found.\": \"Pogre\\u0161ka: nema elementa oblika.\",\n\"Update\": \"A\\u017euriraj\",\n\"Color swatch\": \"Uzorak boje\",\n\"Turquoise\": \"Tirkizna\",\n\"Green\": \"Zelena\",\n\"Blue\": \"Plava\",\n\"Purple\": \"Ljubi\\u010dasta\",\n\"Navy Blue\": \"Mornarsko plava\",\n\"Dark Turquoise\": \"Tamnotirkizna\",\n\"Dark Green\": \"Tamnozelena\",\n\"Medium Blue\": \"Srednje plava\",\n\"Medium Purple\": \"Srednje ljubi\\u010dasta\",\n\"Midnight Blue\": \"Pono\\u0107no plava\",\n\"Yellow\": \"\\u017duta\",\n\"Orange\": \"Naran\\u010dasta\",\n\"Red\": \"Crvena\",\n\"Light Gray\": \"Svijetlosiva\",\n\"Gray\": \"Siva\",\n\"Dark Yellow\": \"Tamno\\u017euta\",\n\"Dark Orange\": \"Tamnonaran\\u010dasta\",\n\"Dark Red\": \"Tamnocrvena\",\n\"Medium Gray\": \"Srednje siva\",\n\"Dark Gray\": \"Tamnosiva\",\n\"Light Green\": \"Svjetlozelena\",\n\"Light Yellow\": \"Svjetlo\\u017euta\",\n\"Light Red\": \"Svjetlocrvena\",\n\"Light Purple\": \"Svjetloljubi\\u010dasta\",\n\"Light Blue\": \"Svjetloplava\",\n\"Dark Purple\": \"Tamnoljubi\\u010dasta\",\n\"Dark Blue\": \"Tamnoplava\",\n\"Black\": \"Crna\",\n\"White\": \"Bijela\",\n\"Switch to or from fullscreen mode\": \"Prebacivanje u prikaz preko cijelog zaslona ili iz njega\",\n\"Open help dialog\": \"Otvori dijalo\\u0161ki okvir za pomo\\u0107\",\n\"history\": \"povijest\",\n\"styles\": \"stilovi\",\n\"formatting\": \"oblikovanje\",\n\"alignment\": \"poravnanje\",\n\"indentation\": \"uvlaka\",\n\"permanent pen\": \"trajna olovka\",\n\"comments\": \"komentari\",\n\"Format Painter\": \"Prenositelj oblikovanja\",\n\"Insert\\/edit iframe\": \"Umetni\\/uredi iframe oznaku\",\n\"Capitalization\": \"Velika slova\",\n\"lowercase\": \"mala slova\",\n\"UPPERCASE\": \"VELIKA SLOVA\",\n\"Title Case\": \"Pisanje naslova\",\n\"Permanent Pen Properties\": \"Trajna svojstva olovke\",\n\"Permanent pen properties...\": \"Trajna svojstva olovke...\",\n\"Font\": \"Font\",\n\"Size\": \"Veli\\u010dina\",\n\"More...\": \"Vi\\u0161e...\",\n\"Spellcheck Language\": \"Jezik provjere pravopisa\",\n\"Select...\": \"Odaberi...\",\n\"Preferences\": \"Postavke\",\n\"Yes\": \"Da\",\n\"No\": \"Ne\",\n\"Keyboard Navigation\": \"Navigacija na tipkovnici\",\n\"Version\": \"Ina\\u010dica\",\n\"Anchor\": \"Sidro\",\n\"Special character\": \"Poseban znak\",\n\"Color\": \"Boja\",\n\"Emoticons\": \"Emotikoni\",\n\"Document properties\": \"Svojstva dokumenta\",\n\"Image\": \"Slika\",\n\"Insert link\": \"Umetni poveznicu\",\n\"Target\": \"Meta\",\n\"Link\": \"Link\",\n\"Poster\": \"Poster\",\n\"Media\": \"Media\",\n\"Print\": \"Ispis\",\n\"Prev\": \"Prethodni\",\n\"Find and replace\": \"Prona\\u0111i i zamijeni\",\n\"Whole words\": \"Cijele rije\\u010di\",\n\"Spellcheck\": \"Provjeri pravopis\",\n\"Caption\": \"Natpis\",\n\"Insert template\": \"Umetni predlo\\u017eak\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/hu_HU.js",
    "content": "tinymce.addI18n('hu_HU',{\n\"Redo\": \"Ism\\u00e9t\",\n\"Undo\": \"Visszavon\\u00e1s\",\n\"Cut\": \"Kiv\\u00e1g\\u00e1s\",\n\"Copy\": \"M\\u00e1sol\\u00e1s\",\n\"Paste\": \"Beilleszt\\u00e9s\",\n\"Select all\": \"Minden kijel\\u00f6l\\u00e9se\",\n\"New document\": \"\\u00daj dokumentum\",\n\"Ok\": \"Rendben\",\n\"Cancel\": \"M\\u00e9gse\",\n\"Visual aids\": \"Vizu\\u00e1lis seg\\u00e9deszk\\u00f6z\\u00f6k\",\n\"Bold\": \"F\\u00e9lk\\u00f6v\\u00e9r\",\n\"Italic\": \"D\\u0151lt\",\n\"Underline\": \"Al\\u00e1h\\u00fazott\",\n\"Strikethrough\": \"\\u00c1th\\u00fazott\",\n\"Superscript\": \"Fels\\u0151 index\",\n\"Subscript\": \"Als\\u00f3 index\",\n\"Clear formatting\": \"Form\\u00e1z\\u00e1s t\\u00f6rl\\u00e9se\",\n\"Align left\": \"Balra igaz\\u00edt\",\n\"Align center\": \"K\\u00f6z\\u00e9pre igaz\\u00edt\",\n\"Align right\": \"Jobbra igaz\\u00edt\",\n\"Justify\": \"Sorkiz\\u00e1rt\",\n\"Bullet list\": \"Listajeles lista\",\n\"Numbered list\": \"Sz\\u00e1mozott lista\",\n\"Decrease indent\": \"Beh\\u00faz\\u00e1s cs\\u00f6kkent\\u00e9se\",\n\"Increase indent\": \"Beh\\u00faz\\u00e1s n\\u00f6vel\\u00e9se\",\n\"Close\": \"Bez\\u00e1r\",\n\"Formats\": \"Form\\u00e1tumok\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"A b\\u00f6ng\\u00e9sz\\u0151d nem t\\u00e1mogatja a k\\u00f6zvetlen hozz\\u00e1f\\u00e9r\\u00e9st a v\\u00e1g\\u00f3laphoz. K\\u00e9rlek, haszn\\u00e1ld a Ctrl+X\\/C\\/V billenty\\u0171ket.\",\n\"Headers\": \"C\\u00edmsorok\",\n\"Header 1\": \"C\\u00edmsor 1\",\n\"Header 2\": \"C\\u00edmsor 2\",\n\"Header 3\": \"C\\u00edmsor 3\",\n\"Header 4\": \"C\\u00edmsor 4\",\n\"Header 5\": \"C\\u00edmsor 5\",\n\"Header 6\": \"C\\u00edmsor 6\",\n\"Headings\": \"Fejl\\u00e9cek\",\n\"Heading 1\": \"1. fejl\\u00e9c\",\n\"Heading 2\": \"2. fejl\\u00e9c\",\n\"Heading 3\": \"3. fejl\\u00e9c\",\n\"Heading 4\": \"4. fejl\\u00e9c\",\n\"Heading 5\": \"5. fejl\\u00e9c\",\n\"Heading 6\": \"6. fejl\\u00e9c\",\n\"Preformatted\": \"El\\u0151form\\u00e1zott\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"K\\u00f3d\",\n\"Paragraph\": \"Bekezd\\u00e9s\",\n\"Blockquote\": \"Id\\u00e9zetblokk\",\n\"Inline\": \"Foly\\u00f3 sz\\u00f6veg\",\n\"Blocks\": \"Blokkok\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Beilleszt\\u00e9s mostant\\u00f3l egyszer\\u0171 sz\\u00f6veg m\\u00f3dban. A tartalmak mostant\\u00f3l egyszer\\u0171 sz\\u00f6vegk\\u00e9nt lesznek beillesztve, am\\u00edg nem kapcsolod ki ezt az opci\\u00f3t.\",\n\"Fonts\": \"Bet\\u0171t\\u00edpusok\",\n\"Font Sizes\": \"Bet\\u0171m\\u00e9retek\",\n\"Class\": \"Oszt\\u00e1ly\",\n\"Browse for an image\": \"K\\u00e9p keres\\u00e9se tall\\u00f3z\\u00e1ssal\",\n\"OR\": \"VAGY\",\n\"Drop an image here\": \"H\\u00fazz ide egy k\\u00e9pet\",\n\"Upload\": \"Felt\\u00f6lt\\u00e9s\",\n\"Block\": \"Blokk\",\n\"Align\": \"Igaz\\u00edt\\u00e1s\",\n\"Default\": \"Alap\\u00e9rtelmezett\",\n\"Circle\": \"K\\u00f6r\",\n\"Disc\": \"Pont\",\n\"Square\": \"N\\u00e9gyzet\",\n\"Lower Alpha\": \"Kisbet\\u0171\",\n\"Lower Greek\": \"Kis g\\u00f6r\\u00f6g sz\\u00e1m\",\n\"Lower Roman\": \"Kis r\\u00f3mai sz\\u00e1m\",\n\"Upper Alpha\": \"Nagybet\\u0171\",\n\"Upper Roman\": \"Nagy r\\u00f3mai sz\\u00e1m\",\n\"Anchor...\": \"Horgony...\",\n\"Name\": \"N\\u00e9v\",\n\"Id\": \"Azonos\\u00edt\\u00f3\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Az azonos\\u00edt\\u00f3nak bet\\u0171vel kell kezd\\u0151dnie, azut\\u00e1n csak bet\\u0171ket, sz\\u00e1mokat, gondolatjeleket, pontokat, kett\\u0151spontokat vagy al\\u00e1h\\u00faz\\u00e1st tartalmazhat.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Nem mentett m\\u00f3dos\\u00edt\\u00e1said vannak, biztos hogy el akarsz navig\\u00e1lni?\",\n\"Restore last draft\": \"Utols\\u00f3 piszkozat vissza\\u00e1ll\\u00edt\\u00e1sa\",\n\"Special character...\": \"Speci\\u00e1lis karakter...\",\n\"Source code\": \"Forr\\u00e1sk\\u00f3d\",\n\"Insert\\/Edit code sample\": \"K\\u00f3dminta besz\\u00far\\u00e1sa\\/szerkeszt\\u00e9se\",\n\"Language\": \"Nyelv\",\n\"Code sample...\": \"K\\u00f3dminta...\",\n\"Color Picker\": \"Sz\\u00ednv\\u00e1laszt\\u00f3\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Balr\\u00f3l jobbra\",\n\"Right to left\": \"Jobbr\\u00f3l balra\",\n\"Emoticons...\": \"Hangulatjelek...\",\n\"Metadata and Document Properties\": \"Metaadatok \\u00e9s a dokumentum tulajdons\\u00e1gai\",\n\"Title\": \"C\\u00edm\",\n\"Keywords\": \"Kulcsszavak\",\n\"Description\": \"Le\\u00edr\\u00e1s\",\n\"Robots\": \"Robotok\",\n\"Author\": \"Szerz\\u0151\",\n\"Encoding\": \"K\\u00f3dol\\u00e1s\",\n\"Fullscreen\": \"Teljes k\\u00e9perny\\u0151\",\n\"Action\": \"M\\u0171velet\",\n\"Shortcut\": \"Parancsikon\",\n\"Help\": \"S\\u00fag\\u00f3\",\n\"Address\": \"C\\u00edm\",\n\"Focus to menubar\": \"F\\u00f3kusz a men\\u00fcre\",\n\"Focus to toolbar\": \"F\\u00f3kusz az eszk\\u00f6zt\\u00e1rra\",\n\"Focus to element path\": \"F\\u00f3kusz az elemek \\u00fatvonal\\u00e1ra\",\n\"Focus to contextual toolbar\": \"F\\u00f3kusz a k\\u00f6rnyezetf\\u00fcgg\\u0151 eszk\\u00f6zt\\u00e1rra\",\n\"Insert link (if link plugin activated)\": \"Hivatkoz\\u00e1s besz\\u00far\\u00e1sa (ha a hivatkoz\\u00e1s b\\u0151v\\u00edtm\\u00e9ny enged\\u00e9lyezett)\",\n\"Save (if save plugin activated)\": \"Ment\\u00e9s (ha a ment\\u00e9s b\\u0151v\\u00edtm\\u00e9ny enged\\u00e9lyezett)\",\n\"Find (if searchreplace plugin activated)\": \"Keres\\u00e9s (ha a keres\\u00e9s \\u00e9s csere b\\u0151v\\u00edtm\\u00e9ny enged\\u00e9lyezett)\",\n\"Plugins installed ({0}):\": \"Telep\\u00edtett b\\u0151v\\u00edtm\\u00e9nyek ({0}):\",\n\"Premium plugins:\": \"Pr\\u00e9mium b\\u0151v\\u00edtm\\u00e9nyek:\",\n\"Learn more...\": \"Tudj meg t\\u00f6bbet...\",\n\"You are using {0}\": \"Haszn\\u00e1latban: {0}\",\n\"Plugins\": \"Pluginek\",\n\"Handy Shortcuts\": \"Hasznos linkek\",\n\"Horizontal line\": \"V\\u00edzszintes vonal\",\n\"Insert\\/edit image\": \"K\\u00e9p beilleszt\\u00e9se\\/szerkeszt\\u00e9se\",\n\"Image description\": \"K\\u00e9p le\\u00edr\\u00e1sa\",\n\"Source\": \"Forr\\u00e1s\",\n\"Dimensions\": \"M\\u00e9retek\",\n\"Constrain proportions\": \"M\\u00e9retar\\u00e1ny\",\n\"General\": \"\\u00c1ltal\\u00e1nos\",\n\"Advanced\": \"Halad\\u00f3\",\n\"Style\": \"St\\u00edlus\",\n\"Vertical space\": \"Vertik\\u00e1lis hely\",\n\"Horizontal space\": \"Horizont\\u00e1lis hely\",\n\"Border\": \"Szeg\\u00e9ly\",\n\"Insert image\": \"K\\u00e9p beilleszt\\u00e9se\",\n\"Image...\": \"K\\u00e9p...\",\n\"Image list\": \"K\\u00e9p lista\",\n\"Rotate counterclockwise\": \"Forgat\\u00e1s az \\u00f3ramutat\\u00f3 j\\u00e1r\\u00e1s\\u00e1val ellent\\u00e9tesen\",\n\"Rotate clockwise\": \"Forgat\\u00e1s az \\u00f3ramutat\\u00f3 j\\u00e1r\\u00e1s\\u00e1val megegyez\\u0151en\",\n\"Flip vertically\": \"F\\u00fcgg\\u0151leges t\\u00fckr\\u00f6z\\u00e9s\",\n\"Flip horizontally\": \"V\\u00edzszintes t\\u00fckr\\u00f6z\\u00e9s\",\n\"Edit image\": \"K\\u00e9p szerkeszt\\u00e9se\",\n\"Image options\": \"K\\u00e9p be\\u00e1ll\\u00edt\\u00e1sok\",\n\"Zoom in\": \"Nagy\\u00edt\\u00e1s\",\n\"Zoom out\": \"Kicsiny\\u00edt\\u00e9s\",\n\"Crop\": \"K\\u00e9p v\\u00e1g\\u00e1s\",\n\"Resize\": \"\\u00c1tm\\u00e9retez\\u00e9s\",\n\"Orientation\": \"K\\u00e9p t\\u00e1jol\\u00e1s\",\n\"Brightness\": \"F\\u00e9nyer\\u0151\",\n\"Sharpen\": \"\\u00c9less\\u00e9g\",\n\"Contrast\": \"Kontraszt\",\n\"Color levels\": \"Sz\\u00ednszint\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Inverz k\\u00e9p\",\n\"Apply\": \"Ment\\u00e9s\",\n\"Back\": \"Vissza\",\n\"Insert date\\/time\": \"D\\u00e1tum\\/id\\u0151 beilleszt\\u00e9se\",\n\"Date\\/time\": \"D\\u00e1tum\\/id\\u0151\",\n\"Insert\\/Edit Link\": \"Hivatkoz\\u00e1s beilleszt\\u00e9se\\/szerkeszt\\u00e9se\",\n\"Insert\\/edit link\": \"Hivatkoz\\u00e1s beilleszt\\u00e9se\\/szerkeszt\\u00e9se\",\n\"Text to display\": \"Megjelen\\u0151 sz\\u00f6veg\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Hivatkoz\\u00e1s megnyit\\u00e1sa...\",\n\"Current window\": \"Jelenlegi ablak\",\n\"None\": \"Nincs\",\n\"New window\": \"\\u00daj ablak\",\n\"Remove link\": \"Hivatkoz\\u00e1s t\\u00f6rl\\u00e9se\",\n\"Anchors\": \"Horgonyok\",\n\"Link...\": \"Hivatkoz\\u00e1s...\",\n\"Paste or type a link\": \"Hivatkoz\\u00e1s be\\u00edr\\u00e1sa vagy beilleszt\\u00e9se\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"A megadott URL email c\\u00edmnek t\\u0171nik. Szeretn\\u00e9d hozz\\u00e1adni a sz\\u00fcks\\u00e9ges mailto: el\\u0151tagot?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"A megadott URL k\\u00fcls\\u0151 c\\u00edmnek t\\u0171nik. Szeretn\\u00e9d hozz\\u00e1adni a sz\\u00fcks\\u00e9ges http:\\/\\/ el\\u0151tagot?\",\n\"Link list\": \"Hivatkoz\\u00e1slista\",\n\"Insert video\": \"Vide\\u00f3 beilleszt\\u00e9se\",\n\"Insert\\/edit video\": \"Vide\\u00f3 beilleszt\\u00e9se\\/szerkeszt\\u00e9se\",\n\"Insert\\/edit media\": \"M\\u00e9dia besz\\u00far\\u00e1sa\\/beilleszt\\u00e9se\",\n\"Alternative source\": \"Alternat\\u00edv forr\\u00e1s\",\n\"Alternative source URL\": \"Alternat\\u00edv forr\\u00e1s URL\",\n\"Media poster (Image URL)\": \"M\\u00e9dia poszter (k\\u00e9p URL)\",\n\"Paste your embed code below:\": \"Illeszd be a be\\u00e1gyaz\\u00f3 k\\u00f3dot alulra:\",\n\"Embed\": \"Be\\u00e1gyaz\\u00e1s\",\n\"Media...\": \"M\\u00e9dia...\",\n\"Nonbreaking space\": \"Nem t\\u00f6rhet\\u0151 sz\\u00f3k\\u00f6z\",\n\"Page break\": \"Oldalt\\u00f6r\\u00e9s\",\n\"Paste as text\": \"Beilleszt\\u00e9s sz\\u00f6vegk\\u00e9nt\",\n\"Preview\": \"El\\u0151n\\u00e9zet\",\n\"Print...\": \"Nyomtat\\u00e1s...\",\n\"Save\": \"Ment\\u00e9s\",\n\"Find\": \"Keres\\u00e9s\",\n\"Replace with\": \"Csere erre\",\n\"Replace\": \"Csere\",\n\"Replace all\": \"Az \\u00f6sszes cser\\u00e9je\",\n\"Previous\": \"El\\u0151z\\u0151\",\n\"Next\": \"K\\u00f6vetkez\\u0151\",\n\"Find and replace...\": \"Keres\\u00e9s \\u00e9s csere...\",\n\"Could not find the specified string.\": \"A be\\u00edrt kifejez\\u00e9s nem tal\\u00e1lhat\\u00f3.\",\n\"Match case\": \"Kis \\u00e9s nagybet\\u0171k megk\\u00fcl\\u00f6nb\\u00f6ztet\\u00e9se\",\n\"Find whole words only\": \"Csak teljes szavak keres\\u00e9se\",\n\"Spell check\": \"Helyes\\u00edr\\u00e1s-ellen\\u0151rz\\u00e9s\",\n\"Ignore\": \"Figyelmen k\\u00edv\\u00fcl hagy\",\n\"Ignore all\": \"Mindent figyelmen k\\u00edv\\u00fcl hagy\",\n\"Finish\": \"Befejez\\u00e9s\",\n\"Add to Dictionary\": \"Sz\\u00f3t\\u00e1rhoz ad\",\n\"Insert table\": \"T\\u00e1bl\\u00e1zat beilleszt\\u00e9se\",\n\"Table properties\": \"T\\u00e1bl\\u00e1zat tulajdons\\u00e1gok\",\n\"Delete table\": \"T\\u00e1bl\\u00e1zat t\\u00f6rl\\u00e9se\",\n\"Cell\": \"Cella\",\n\"Row\": \"Sor\",\n\"Column\": \"Oszlop\",\n\"Cell properties\": \"Cella tulajdons\\u00e1gok\",\n\"Merge cells\": \"Cell\\u00e1k egyes\\u00edt\\u00e9se\",\n\"Split cell\": \"Cell\\u00e1k sz\\u00e9tv\\u00e1laszt\\u00e1sa\",\n\"Insert row before\": \"Sor besz\\u00far\\u00e1sa el\\u00e9\",\n\"Insert row after\": \"Sor besz\\u00far\\u00e1sa m\\u00f6g\\u00e9\",\n\"Delete row\": \"Sor t\\u00f6rl\\u00e9se\",\n\"Row properties\": \"Sor tulajdons\\u00e1gai\",\n\"Cut row\": \"Sor kiv\\u00e1g\\u00e1sa\",\n\"Copy row\": \"Sor m\\u00e1sol\\u00e1sa\",\n\"Paste row before\": \"Sor beilleszt\\u00e9se el\\u00e9\",\n\"Paste row after\": \"Sor beilleszt\\u00e9se m\\u00f6g\\u00e9\",\n\"Insert column before\": \"Oszlop besz\\u00far\\u00e1sa el\\u00e9\",\n\"Insert column after\": \"Oszlop besz\\u00far\\u00e1sa m\\u00f6g\\u00e9\",\n\"Delete column\": \"Oszlop t\\u00f6rl\\u00e9se\",\n\"Cols\": \"Oszlopok\",\n\"Rows\": \"Sorok\",\n\"Width\": \"Sz\\u00e9less\\u00e9g\",\n\"Height\": \"Magass\\u00e1g\",\n\"Cell spacing\": \"Cell\\u00e1k t\\u00e1vols\\u00e1ga\",\n\"Cell padding\": \"Cella m\\u00e9rete\",\n\"Show caption\": \"C\\u00edm megjelen\\u00edt\\u00e9se\",\n\"Left\": \"Bal\",\n\"Center\": \"K\\u00f6z\\u00e9p\",\n\"Right\": \"Jobb\",\n\"Cell type\": \"Cella t\\u00edpusa\",\n\"Scope\": \"Hat\\u00f3k\\u00f6r\",\n\"Alignment\": \"Igaz\\u00edt\\u00e1s\",\n\"H Align\": \"V\\u00edzszintes igaz\\u00edt\\u00e1s\",\n\"V Align\": \"F\\u00fcgg\\u0151leges igaz\\u00edt\\u00e1s\",\n\"Top\": \"Fel\\u00fcl\",\n\"Middle\": \"K\\u00f6z\\u00e9pen\",\n\"Bottom\": \"Alul\",\n\"Header cell\": \"Fejl\\u00e9c cella\",\n\"Row group\": \"Sor csoport\",\n\"Column group\": \"Oszlop csoport\",\n\"Row type\": \"Sor t\\u00edpus\",\n\"Header\": \"Fejl\\u00e9c\",\n\"Body\": \"Sz\\u00f6vegt\\u00f6rzs\",\n\"Footer\": \"L\\u00e1bl\\u00e9c\",\n\"Border color\": \"Szeg\\u00e9ly sz\\u00edne\",\n\"Insert template...\": \"Sablon besz\\u00far\\u00e1sa...\",\n\"Templates\": \"Sablonok\",\n\"Template\": \"Sablon\",\n\"Text color\": \"Sz\\u00f6veg sz\\u00edne\",\n\"Background color\": \"H\\u00e1tt\\u00e9r sz\\u00edn\",\n\"Custom...\": \"Egy\\u00e9ni...\",\n\"Custom color\": \"Egy\\u00e9ni sz\\u00edn\",\n\"No color\": \"Nincs sz\\u00edn\",\n\"Remove color\": \"Sz\\u00edn t\\u00f6rl\\u00e9se\",\n\"Table of Contents\": \"Tartalomjegyz\\u00e9k\",\n\"Show blocks\": \"Blokkok mutat\\u00e1sa\",\n\"Show invisible characters\": \"L\\u00e1thatatlan karakterek mutat\\u00e1sa\",\n\"Word count\": \"Szavak sz\\u00e1ma\",\n\"Count\": \"Sz\\u00e1m\",\n\"Document\": \"Dokumentum\",\n\"Selection\": \"Kiv\\u00e1laszt\\u00e1s\",\n\"Words\": \"Szavak\",\n\"Words: {0}\": \"Szavak: {0}\",\n\"{0} words\": \"{0} sz\\u00f3\",\n\"File\": \"F\\u00e1jl\",\n\"Edit\": \"Szerkeszt\\u00e9s\",\n\"Insert\": \"Beilleszt\\u00e9s\",\n\"View\": \"N\\u00e9zet\",\n\"Format\": \"Form\\u00e1tum\",\n\"Table\": \"T\\u00e1bl\\u00e1zat\",\n\"Tools\": \"Eszk\\u00f6z\\u00f6k\",\n\"Powered by {0}\": \"\\u00dczemelteti: {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Rich Text ter\\u00fclet. Nyomj ALT-F9-et a men\\u00fch\\u00f6z. Nyomj ALT-F10-et az eszk\\u00f6zt\\u00e1rhoz. Nyomj ALT-0-t a s\\u00fag\\u00f3hoz\",\n\"Image title\": \"K\\u00e9p c\\u00edme\",\n\"Border width\": \"Szeg\\u00e9ly vastags\\u00e1ga\",\n\"Border style\": \"Szeg\\u00e9ly st\\u00edlusa\",\n\"Error\": \"Hiba\",\n\"Warn\": \"Figyelmeztet\\u00e9s\",\n\"Valid\": \"\\u00c9rv\\u00e9nyes\",\n\"To open the popup, press Shift+Enter\": \"A felugr\\u00f3 ablak megnyit\\u00e1s\\u00e1hoz nyomja meg a Shift+Enter billenty\\u0171t\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Vizu\\u00e1lis szerkeszt\\u0151 ter\\u00fclet. Nyomjon ALT-0-t a s\\u00fag\\u00f3hoz.\",\n\"System Font\": \"Rendszer-bet\\u0171t\\u00edpus\",\n\"Failed to upload image: {0}\": \"Nem siker\\u00fclt felt\\u00f6lteni a k\\u00e9pet: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Nem siker\\u00fclt bet\\u00f6lteni a be\\u00e9p\\u00fcl\\u0151 modult: {0} err\\u0151l a webc\\u00edmr\\u0151l: {1}\",\n\"Failed to load plugin url: {0}\": \"Nem siker\\u00fclt bet\\u00f6lteni a be\\u00e9p\\u00fcl\\u0151 modul url-\\u00e9t: {0}\",\n\"Failed to initialize plugin: {0}\": \"Nem siker\\u00fclt inicializ\\u00e1lni a be\\u00e9p\\u00fcl\\u0151 modult: {0}\",\n\"example\": \"p\\u00e9lda\",\n\"Search\": \"Keres\\u00e9s\",\n\"All\": \"Minden\",\n\"Currency\": \"P\\u00e9nznem\",\n\"Text\": \"Sz\\u00f6veg\",\n\"Quotations\": \"Id\\u00e9z\\u0151jelek\",\n\"Mathematical\": \"Matematikai\",\n\"Extended Latin\": \"B\\u0151v\\u00edtett latin\",\n\"Symbols\": \"Szimb\\u00f3lumok\",\n\"Arrows\": \"Nyilak\",\n\"User Defined\": \"Felhaszn\\u00e1l\\u00f3 \\u00e1ltal meghat\\u00e1rozott\",\n\"dollar sign\": \"doll\\u00e1r jel\",\n\"currency sign\": \"valuta jel\",\n\"euro-currency sign\": \"euro-valuta jel\",\n\"colon sign\": \"kett\\u0151spont\",\n\"cruzeiro sign\": \"cruzeiro jel\",\n\"french franc sign\": \"francia frank jel\",\n\"lira sign\": \"l\\u00edra jel\",\n\"mill sign\": \"mill jel\",\n\"naira sign\": \"naira jel\",\n\"peseta sign\": \"peseta jel\",\n\"rupee sign\": \"r\\u00fapia jel\",\n\"won sign\": \"won jel\",\n\"new sheqel sign\": \"\\u00faj shekel jel\",\n\"dong sign\": \"dong jel\",\n\"kip sign\": \"kip jel\",\n\"tugrik sign\": \"tugrik jel\",\n\"drachma sign\": \"drachma jel\",\n\"german penny symbol\": \"n\\u00e9met penny jel\",\n\"peso sign\": \"peso jel\",\n\"guarani sign\": \"guarani jel\",\n\"austral sign\": \"austral jel\",\n\"hryvnia sign\": \"hrivnya jel\",\n\"cedi sign\": \"cedi jel\",\n\"livre tournois sign\": \"livre tournois jel\",\n\"spesmilo sign\": \"spesmilo jel\",\n\"tenge sign\": \"tenge jel\",\n\"indian rupee sign\": \"r\\u00fapel jel\",\n\"turkish lira sign\": \"t\\u00f6r\\u00f6k l\\u00edra jel\",\n\"nordic mark sign\": \"\\u00e9szaki m\\u00e1rka jel\",\n\"manat sign\": \"manat jel\",\n\"ruble sign\": \"rubel jel\",\n\"yen character\": \"jen karakter\",\n\"yuan character\": \"j\\u00fcan karakter\",\n\"yuan character, in hong kong and taiwan\": \"hongkongi \\u00e9s tajvani j\\u00fcan karakter\",\n\"yen\\/yuan character variant one\": \"jen\\/j\\u00fcan karaktervari\\u00e1ns\",\n\"Loading emoticons...\": \"Hangulatjelek bet\\u00f6lt\\u00e9se...\",\n\"Could not load emoticons\": \"Nem siker\\u00fclt a hangulatjelek bet\\u00f6lt\\u00e9se\",\n\"People\": \"Emberek\",\n\"Animals and Nature\": \"\\u00c1llatok \\u00e9s term\\u00e9szet\",\n\"Food and Drink\": \"\\u00c9tel, ital\",\n\"Activity\": \"Tev\\u00e9kenys\\u00e9gek\",\n\"Travel and Places\": \"Utaz\\u00e1s \\u00e9s helyek\",\n\"Objects\": \"T\\u00e1rgyak\",\n\"Flags\": \"Z\\u00e1szl\\u00f3k\",\n\"Characters\": \"Karakterek\",\n\"Characters (no spaces)\": \"Karakterek (sz\\u00f3k\\u00f6z\\u00f6k n\\u00e9lk\\u00fcl)\",\n\"{0} characters\": \"{0} karakter\",\n\"Error: Form submit field collision.\": \"Hiba: \\u00dctk\\u00f6z\\u00e9s t\\u00f6rt\\u00e9nt az \\u0171rlap elk\\u00fcld\\u00e9sekor.\",\n\"Error: No form element found.\": \"Hiba: Nem tal\\u00e1lhat\\u00f3 \\u0171rlap elem.\",\n\"Update\": \"Friss\\u00edt\\u00e9s\",\n\"Color swatch\": \"Sz\\u00ednpaletta\",\n\"Turquoise\": \"T\\u00fcrkiz\",\n\"Green\": \"Z\\u00f6ld\",\n\"Blue\": \"K\\u00e9k\",\n\"Purple\": \"Lila\",\n\"Navy Blue\": \"Tengerk\\u00e9k\",\n\"Dark Turquoise\": \"S\\u00f6t\\u00e9tt\\u00fcrkiz\",\n\"Dark Green\": \"S\\u00f6t\\u00e9tz\\u00f6ld\",\n\"Medium Blue\": \"Kir\\u00e1lyk\\u00e9k\",\n\"Medium Purple\": \"K\\u00f6z\\u00e9plila\",\n\"Midnight Blue\": \"\\u00c9jf\\u00e9lk\\u00e9k\",\n\"Yellow\": \"S\\u00e1rga\",\n\"Orange\": \"Narancss\\u00e1rga\",\n\"Red\": \"Piros\",\n\"Light Gray\": \"Vil\\u00e1gossz\\u00fcrke\",\n\"Gray\": \"Sz\\u00fcrke\",\n\"Dark Yellow\": \"S\\u00f6t\\u00e9ts\\u00e1rga\",\n\"Dark Orange\": \"S\\u00f6t\\u00e9t narancss\\u00e1rga\",\n\"Dark Red\": \"S\\u00f6t\\u00e9tv\\u00f6r\\u00f6s\",\n\"Medium Gray\": \"K\\u00f6z\\u00e9psz\\u00fcrke\",\n\"Dark Gray\": \"S\\u00f6t\\u00e9tsz\\u00fcrke\",\n\"Light Green\": \"Vil\\u00e1gosz\\u00f6ld\",\n\"Light Yellow\": \"Vil\\u00e1goss\\u00e1rga\",\n\"Light Red\": \"Vil\\u00e1gospiros\",\n\"Light Purple\": \"Vil\\u00e1goslila\",\n\"Light Blue\": \"Vil\\u00e1gosk\\u00e9k\",\n\"Dark Purple\": \"S\\u00f6t\\u00e9tlila\",\n\"Dark Blue\": \"S\\u00f6t\\u00e9tk\\u00e9k\",\n\"Black\": \"Fekete\",\n\"White\": \"Feh\\u00e9r\",\n\"Switch to or from fullscreen mode\": \"Teljes vagy norm\\u00e1l k\\u00e9perny\\u0151s m\\u00f3dra v\\u00e1lt\\u00e1s\",\n\"Open help dialog\": \"S\\u00fag\\u00f3ablak megnyit\\u00e1sa\",\n\"history\": \"el\\u0151zm\\u00e9nyek\",\n\"styles\": \"st\\u00edlusok\",\n\"formatting\": \"form\\u00e1z\\u00e1s\",\n\"alignment\": \"igaz\\u00edt\\u00e1s\",\n\"indentation\": \"beh\\u00faz\\u00e1s\",\n\"permanent pen\": \"sz\\u00f6vegkiemel\\u0151\",\n\"comments\": \"megjegyz\\u00e9sek\",\n\"Format Painter\": \"Form\\u00e1tumm\\u00e1sol\\u00f3\",\n\"Insert\\/edit iframe\": \"iframe besz\\u00far\\u00e1sa\\/szerkeszt\\u00e9se\",\n\"Capitalization\": \"Nagybet\\u0171s \\u00edr\\u00e1s\",\n\"lowercase\": \"kisbet\\u0171s\",\n\"UPPERCASE\": \"NAGYBET\\u0170S\",\n\"Title Case\": \"C\\u00edm szerinti \\u00edr\\u00e1sm\\u00f3d\",\n\"Permanent Pen Properties\": \"Tart\\u00f3s toll tulajdons\\u00e1gai\",\n\"Permanent pen properties...\": \"Tart\\u00f3s toll tulajdons\\u00e1gai...\",\n\"Font\": \"Bet\\u0171t\\u00edpus\",\n\"Size\": \"M\\u00e9ret\",\n\"More...\": \"Tov\\u00e1bbiak...\",\n\"Spellcheck Language\": \"Helyes\\u00edr\\u00e1s-ellen\\u0151rz\\u00e9s nyelve\",\n\"Select...\": \"V\\u00e1lasszon...\",\n\"Preferences\": \"Preferenci\\u00e1k\",\n\"Yes\": \"Igen\",\n\"No\": \"Nem\",\n\"Keyboard Navigation\": \"Billenty\\u0171zettel val\\u00f3 navig\\u00e1l\\u00e1s\",\n\"Version\": \"Verzi\\u00f3\",\n\"Anchor\": \"Horgony\",\n\"Special character\": \"Speci\\u00e1lis karakter\",\n\"Code sample\": \"K\\u00f3d p\\u00e9lda\",\n\"Color\": \"Sz\\u00edn\",\n\"Emoticons\": \"Vigyorok\",\n\"Document properties\": \"Dokumentum tulajdons\\u00e1gai\",\n\"Image\": \"K\\u00e9p\",\n\"Insert link\": \"Hivatkoz\\u00e1s beilleszt\\u00e9se\",\n\"Target\": \"C\\u00e9l\",\n\"Link\": \"Hivatkoz\\u00e1s\",\n\"Poster\": \"El\\u0151n\\u00e9zeti k\\u00e9p\",\n\"Media\": \"M\\u00e9dia\",\n\"Print\": \"Nyomtat\\u00e1s\",\n\"Prev\": \"El\\u0151z\\u0151\",\n\"Find and replace\": \"Keres\\u00e9s \\u00e9s csere\",\n\"Whole words\": \"Csak ha ez a teljes sz\\u00f3\",\n\"Spellcheck\": \"Helyes\\u00edr\\u00e1s ellen\\u0151rz\\u00e9s\",\n\"Caption\": \"Felirat\",\n\"Insert template\": \"Sablon beilleszt\\u00e9se\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/hy.js",
    "content": "tinymce.addI18n('hy',{\n\"Redo\": \"\\u0540\\u0561\\u057b\\u0578\\u0580\\u0564 \\u0584\\u0561\\u0575\\u056c\",\n\"Undo\": \"\\u0546\\u0561\\u056d\\u0578\\u0580\\u0564 \\u0584\\u0561\\u0575\\u056c\",\n\"Cut\": \"\\u053f\\u057f\\u0580\\u0565\\u056c\",\n\"Copy\": \"\\u054a\\u0561\\u057f\\u0573\\u0565\\u0576\\u0565\\u056c\",\n\"Paste\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c\",\n\"Select all\": \"\\u0546\\u0577\\u0565\\u056c \\u0562\\u0578\\u056c\\u0578\\u0580\\u0568\",\n\"New document\": \"\\u0546\\u0578\\u0580 \\u0583\\u0561\\u057d\\u057f\\u0561\\u0569\\u0578\\u0582\\u0572\\u0569\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"\\u0553\\u0561\\u056f\\u0565\\u056c\",\n\"Visual aids\": \"\\u0551\\u0578\\u0582\\u0581\\u0561\\u0564\\u0580\\u0565\\u056c \\u056f\\u0578\\u0576\\u057f\\u0578\\u0582\\u0580\\u0576\\u0565\\u0580\\u0568\",\n\"Bold\": \"\\u0539\\u0561\\u057e\\u0561\\u057f\\u0561\\u057c\",\n\"Italic\": \"\\u0547\\u0565\\u0572\\u0561\\u057f\\u0561\\u057c\",\n\"Underline\": \"\\u0538\\u0576\\u0564\\u0563\\u056e\\u057e\\u0561\\u056e\",\n\"Strikethrough\": \"\\u0531\\u0580\\u057f\\u0561\\u0563\\u056e\\u057e\\u0561\\u056e\",\n\"Superscript\": \"\\u054e\\u0565\\u0580\\u056b\\u0576 \\u056b\\u0576\\u0564\\u0565\\u0584\\u057d\",\n\"Subscript\": \"\\u054d\\u057f\\u0578\\u0580\\u056b\\u0576 \\u056b\\u0576\\u0564\\u0565\\u0584\\u057d\",\n\"Clear formatting\": \"\\u0544\\u0561\\u0584\\u0580\\u0565\\u056c \\u0586\\u0578\\u0580\\u0574\\u0561\\u057f\\u0561\\u057e\\u0578\\u0580\\u0578\\u0582\\u0574\\u0568\",\n\"Align left\": \"\\u0541\\u0561\\u056d\\u0561\\u056f\\u0578\\u0572\\u0574\\u0575\\u0561 \\u0570\\u0561\\u057e\\u0561\\u057d\\u0561\\u0580\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Align center\": \"\\u053f\\u0565\\u0576\\u057f\\u0580\\u0578\\u0576\\u0561\\u056f\\u0561\\u0576 \\u0570\\u0561\\u057e\\u0561\\u057d\\u0561\\u0580\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Align right\": \"\\u0531\\u057b\\u0561\\u056f\\u0578\\u0572\\u0574\\u0575\\u0561 \\u0570\\u0561\\u057e\\u0561\\u057d\\u0561\\u0580\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Justify\": \"\\u0535\\u0580\\u056f\\u056f\\u0578\\u0572\\u0574\\u0561\\u0576\\u056b \\u0570\\u0561\\u057e\\u0561\\u057d\\u0561\\u0580\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Bullet list\": \"\\u0549\\u0570\\u0561\\u0574\\u0561\\u0580\\u0561\\u056f\\u0561\\u056c\\u057e\\u0561\\u056e \\u0581\\u0578\\u0582\\u0581\\u0561\\u056f\",\n\"Numbered list\": \"\\u0540\\u0561\\u0574\\u0561\\u0580\\u0561\\u056f\\u0561\\u056c\\u057e\\u0561\\u056e \\u0581\\u0578\\u0582\\u0581\\u0561\\u056f\",\n\"Decrease indent\": \"\\u0553\\u0578\\u0584\\u0580\\u0561\\u0581\\u0576\\u0565\\u056c \\u0571\\u0561\\u056d \\u0565\\u0566\\u0580\\u056b \\u0570\\u0565\\u057c\\u0561\\u057e\\u0578\\u0580\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0568\",\n\"Increase indent\": \"\\u0544\\u0565\\u056e\\u0561\\u0581\\u0576\\u0565\\u056c \\u0571\\u0561\\u056d \\u0565\\u0566\\u0580\\u056b \\u0570\\u0565\\u057c\\u0561\\u057e\\u0578\\u0580\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0568\",\n\"Close\": \"\\u0553\\u0561\\u056f\\u0565\\u056c\",\n\"Formats\": \"\\u0556\\u0578\\u0580\\u0574\\u0561\\u057f\\u0576\\u0565\\u0580\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u0541\\u0565\\u0580 \\u0562\\u0580\\u0561\\u0578\\u0582\\u0566\\u0565\\u0580\\u0568 \\u0579\\u056b \\u0561\\u057a\\u0561\\u0570\\u0578\\u057e\\u0578\\u0582\\u0574 \\u0561\\u0576\\u0574\\u056b\\u057b\\u0561\\u056f\\u0561\\u0576 \\u0565\\u056c\\u0584 \\u0583\\u0578\\u056d\\u0561\\u0576\\u0561\\u056f\\u0574\\u0561\\u0576 \\u0562\\u0578\\u0582\\u0586\\u0565\\u0580\\u056b\\u0576\\u0589 \\u053d\\u0576\\u0564\\u0580\\u0578\\u0582\\u0574 \\u0565\\u0576\\u0584 \\u0585\\u0563\\u057f\\u057e\\u0565\\u056c Ctrl+X\\/C\\/V \\u057d\\u057f\\u0565\\u0572\\u0576\\u0565\\u0580\\u056b\\u0581\\u0589\",\n\"Headers\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u0580\\u0565\\u0580\",\n\"Header 1\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580 1\",\n\"Header 2\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580 2\",\n\"Header 3\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580 3\",\n\"Header 4\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580 4\",\n\"Header 5\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580 5\",\n\"Header 6\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580 6\",\n\"Headings\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u0580\\u0565\\u0580\",\n\"Heading 1\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580 1\",\n\"Heading 2\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580 2\",\n\"Heading 3\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580 3\",\n\"Heading 4\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580 4\",\n\"Heading 5\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580 5\",\n\"Heading 6\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580 6\",\n\"Preformatted\": \"\\u0546\\u0561\\u056d\\u0561\\u057a\\u0565\\u057d \\u0571\\u0565\\u0582\\u0561\\u057e\\u0578\\u0580\\u057e\\u0561\\u056e\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"\\u053f\\u0578\\u0564\",\n\"Paragraph\": \"\\u054a\\u0561\\u0580\\u0562\\u0565\\u0580\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Blockquote\": \"\\u0544\\u0565\\u057b\\u0562\\u0565\\u0580\\u0578\\u0582\\u0574\",\n\"Inline\": \"\\u054f\\u0578\\u0572\\u0561\\u0575\\u056b\\u0576\",\n\"Blocks\": \"\\u0532\\u056c\\u0578\\u056f\\u0576\\u0565\\u0580\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u054f\\u0565\\u0584\\u057d\\u057f\\u056b \\u057f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0578\\u0582\\u0574\\u0568 \\u056f\\u0561\\u057f\\u0561\\u0580\\u057e\\u0565\\u056c\\u0578\\u0582 \\u0567 \\u0570\\u0561\\u057d\\u0561\\u0580\\u0561\\u056f \\u057f\\u0565\\u0584\\u057d\\u057f\\u056b \\u057c\\u0565\\u056a\\u056b\\u0574\\u0578\\u057e\\u0589 \\u054a\\u0561\\u057f\\u0573\\u0565\\u0576\\u057e\\u0561\\u056e \\u057f\\u0565\\u0584\\u057d\\u057f\\u0568 \\u057f\\u0565\\u0572\\u0561\\u0564\\u0580\\u057e\\u0565\\u056c\\u0578\\u0582 \\u0567 \\u0570\\u0561\\u057d\\u0561\\u0580\\u0561\\u056f \\u057f\\u0565\\u0584\\u057d\\u057f\\u056b \\u0571\\u0587\\u0578\\u057e \\u0574\\u056b\\u0576\\u0579\\u0587 \\u0561\\u0575\\u057d \\u057c\\u0565\\u056a\\u056b\\u0574\\u056b \\u0561\\u0576\\u057b\\u0561\\u057f\\u0578\\u0582\\u0574\\u0568\\u0589\",\n\"Fonts\": \"\\u0556\\u0578\\u0576\\u057f\\u0565\\u0580\",\n\"Font Sizes\": \"\\u054f\\u0561\\u057c\\u056b \\u0579\\u0561\\u0583\",\n\"Class\": \"\\u0534\\u0561\\u057d\",\n\"Browse for an image\": \"\\u0538\\u0576\\u057f\\u0580\\u0565\\u056c \\u0576\\u056f\\u0561\\u0580\",\n\"OR\": \"\\u053f\\u0531\\u0544\",\n\"Drop an image here\": \"\\u0546\\u056f\\u0561\\u0580\\u0568 \\u0563\\u0581\\u0565\\u0584 \\u0561\\u0575\\u057d\\u057f\\u0565\\u0572\",\n\"Upload\": \"\\u054e\\u0565\\u0580\\u0562\\u0565\\u057c\\u0576\\u0565\\u056c\",\n\"Block\": \"\\u0532\\u056c\\u0578\\u056f\",\n\"Align\": \"\\u0540\\u0561\\u057e\\u0561\\u057d\\u0561\\u0580\\u0565\\u0581\\u0576\\u0565\\u056c\",\n\"Default\": \"\\u054d\\u057f\\u0561\\u0576\\u0564\\u0561\\u0580\\u057f\",\n\"Circle\": \"\\u0547\\u0580\\u057b\\u0561\\u0576\",\n\"Disc\": \"\\u053f\\u056c\\u0578\\u0580\",\n\"Square\": \"\\u0554\\u0561\\u057c\\u0561\\u056f\\u0578\\u0582\\u057d\\u056b\",\n\"Lower Alpha\": \"\\u0553\\u0578\\u0584\\u0580\\u0561\\u057f\\u0561\\u057c \\u056c\\u0561\\u057f\\u056b\\u0576\\u0561\\u056f\\u0561\\u0576 \\u057f\\u0561\\u057c\\u0565\\u0580\",\n\"Lower Greek\": \"\\u0553\\u0578\\u0584\\u0580\\u0561\\u057f\\u0561\\u057c \\u0570\\u0578\\u0582\\u0576\\u0561\\u056f\\u0561\\u0576 \\u057f\\u0561\\u057c\\u0565\\u0580\",\n\"Lower Roman\": \"\\u0553\\u0578\\u0584\\u0580\\u0561\\u057f\\u0561\\u057c \\u0570\\u057c\\u0578\\u0574\\u0565\\u0561\\u056f\\u0561\\u0576 \\u0569\\u057e\\u0565\\u0580\",\n\"Upper Alpha\": \"\\u0544\\u0565\\u056e\\u0561\\u057f\\u0561\\u057c \\u056c\\u0561\\u057f\\u056b\\u0576\\u0565\\u0580\\u0565\\u0576 \\u057f\\u0561\\u057c\\u0565\\u0580\",\n\"Upper Roman\": \"\\u0544\\u0565\\u056e\\u0561\\u057f\\u0561\\u057c \\u0570\\u057c\\u0578\\u0574\\u0565\\u0561\\u056f\\u0561\\u0576 \\u0569\\u057e\\u0565\\u0580\",\n\"Anchor...\": \"\\u053d\\u0561\\u0580\\u056b\\u057d\\u056d...\",\n\"Name\": \"\\u0531\\u0576\\u0578\\u0582\\u0576\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id-\\u0576 \\u057a\\u0565\\u057f\\u0584 \\u0567 \\u057d\\u056f\\u057d\\u057e\\u056b \\u057f\\u0561\\u057c\\u0578\\u057e \\u0587 \\u056f\\u0561\\u0580\\u0578\\u0572 \\u0567 \\u057a\\u0561\\u0580\\u0578\\u0582\\u0576\\u0561\\u056f\\u0565\\u056c \\u057f\\u0561\\u057c\\u0565\\u0580, \\u0569\\u057e\\u0565\\u0580, \\u0563\\u056e\\u056b\\u056f, \\u056f\\u0565\\u057f, \\u057e\\u0565\\u0580\\u057b\\u0561\\u056f\\u0565\\u0565\\u057f \\u056f\\u0561\\u0574 \\u057f\\u0578\\u0572\\u0561\\u057f\\u0561\\u056f\\u056b \\u0563\\u056e\\u056b\\u056f\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u053f\\u0561\\u0576 \\u0579\\u057a\\u0561\\u0570\\u057a\\u0561\\u0576\\u057e\\u0561\\u056e \\u0583\\u0578\\u0583\\u0578\\u056d\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0576\\u0565\\u0580\\u0589 \\u0534\\u0578\\u0582\\u0584 \\u056b\\u0580\\u0578\\u055e\\u0584 \\u0578\\u0582\\u0566\\u0578\\u0582\\u0574 \\u0565\\u0584 \\u0564\\u0578\\u0582\\u0580\\u057d \\u0563\\u0561\\u056c\",\n\"Restore last draft\": \"\\u054e\\u0565\\u0580\\u0561\\u056f\\u0561\\u0576\\u0563\\u0576\\u0565\\u056c \\u057e\\u0565\\u0580\\u057b\\u056b\\u0576 \\u0576\\u0561\\u056d\\u0561\\u0563\\u056b\\u056e\\u0568\",\n\"Special character...\": \"\\u0540\\u0561\\u057f\\u0578\\u0582\\u056f \\u057d\\u056b\\u0574\\u057e\\u0578\\u056c\\u0576\\u0565\\u0580...\",\n\"Source code\": \"\\u053e\\u0580\\u0561\\u0563\\u0580\\u0561\\u0575\\u056b\\u0576 \\u056f\\u0578\\u0564\",\n\"Insert\\/Edit code sample\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c\\/\\u056d\\u0574\\u0562\\u0561\\u0563\\u0580\\u0565\\u056c \\u056f\\u0578\\u0564\\u0568\",\n\"Language\": \"\\u053c\\u0565\\u0566\\u0578\\u0582\",\n\"Code sample...\": \"\\u053f\\u0578\\u0564\\u056b \\u0585\\u0580\\u0576\\u0561\\u056f\",\n\"Color Picker\": \"\\u0533\\u0578\\u0582\\u0576\\u0561\\u057a\\u0576\\u0561\\u056f\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"\\u0541\\u0561\\u056d\\u056b\\u0581 \\u0561\\u057b\",\n\"Right to left\": \"\\u0531\\u057b\\u056b\\u0581 \\u0571\\u0561\\u056d\",\n\"Emoticons...\": \"\\u054d\\u0574\\u0561\\u0575\\u056c\\u056b\\u056f\\u0576\\u0565\\u0580...\",\n\"Metadata and Document Properties\": \"\\u0553\\u0561\\u057d\\u057f\\u0561\\u0569\\u0572\\u0569\\u056b \\u0570\\u0561\\u057f\\u056f\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0576\\u0565\\u0580\\u0568\",\n\"Title\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580\",\n\"Keywords\": \"\\u0548\\u0580\\u0578\\u0576\\u0578\\u0572\\u0561\\u056f\\u0561\\u0576 \\u0562\\u0561\\u057c\\u0565\\u0580\",\n\"Description\": \"\\u0546\\u056f\\u0561\\u0580\\u0561\\u0563\\u0580\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Robots\": \"Robots\",\n\"Author\": \"\\u0540\\u0565\\u0572\\u056b\\u0576\\u0561\\u056f\",\n\"Encoding\": \"\\u053f\\u0578\\u0564\\u0561\\u057e\\u0578\\u0580\\u0578\\u0582\\u0574\",\n\"Fullscreen\": \"\\u0531\\u0574\\u0562\\u0578\\u0572\\u057b \\u0567\\u056f\\u0580\\u0561\\u0576\\u0578\\u057e\",\n\"Action\": \"\\u0533\\u0578\\u0580\\u056e\\u0578\\u0572\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Shortcut\": \"\\u053f\\u0561\\u0580\\u0573\\u0578\\u0582\\u0572\\u056b\",\n\"Help\": \"\\u0555\\u0563\\u0576\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Address\": \"\\u0540\\u0561\\u057d\\u0581\\u0565\",\n\"Focus to menubar\": \"Focus to menubar\",\n\"Focus to toolbar\": \"Focus to toolbar\",\n\"Focus to element path\": \"Focus to element path\",\n\"Focus to contextual toolbar\": \"Focus to contextual toolbar\",\n\"Insert link (if link plugin activated)\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c \\u0570\\u0572\\u0578\\u0582\\u0574 (\\u0565\\u0569\\u0565 \\u0570\\u0572\\u0578\\u0582\\u0574 \\u0568\\u0576\\u0564\\u056c\\u0561\\u0575\\u0576\\u0578\\u0582\\u0574\\u0568 \\u0561\\u057e\\u057f\\u056b\\u057e \\u0567)\",\n\"Save (if save plugin activated)\": \"\\u054a\\u0561\\u0570\\u057a\\u0561\\u0576\\u0565\\u056c (\\u0565\\u0569\\u0565 save \\u0568\\u0576\\u0564\\u056c\\u0561\\u0575\\u0576\\u0578\\u0582\\u0574\\u0568 \\u0561\\u056f\\u057f\\u056b\\u057e \\u0567)\",\n\"Find (if searchreplace plugin activated)\": \"\\u0553\\u0576\\u057f\\u0580\\u0565\\u056c (\\u0565\\u0569\\u0565 searchreplace \\u0568\\u0576\\u0564\\u056c\\u0561\\u0575\\u0576\\u0578\\u0582\\u0574\\u0568 \\u0561\\u056f\\u057f\\u056b\\u057e \\u0567)\",\n\"Plugins installed ({0}):\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u057e\\u0561\\u056e \\u0583\\u056c\\u0561\\u0563\\u056b\\u0576\\u0576\\u0565\\u0580 ({0}):\",\n\"Premium plugins:\": \"\\u054e\\u0573\\u0561\\u0580\\u0578\\u057e\\u056b \\u0568\\u0576\\u0564\\u056c\\u0561\\u0575\\u0576\\u0578\\u0582\\u0574\\u0576\\u0565\\u0580\",\n\"Learn more...\": \"\\u053b\\u0574\\u0561\\u0576\\u0561\\u056c \\u0561\\u057e\\u0565\\u056c\\u056b\\u0576 \\u2024\\u2024\\u2024\",\n\"You are using {0}\": \"\\u0534\\u0578\\u0582\\u0584 \\u0585\\u0563\\u057f\\u0561\\u0563\\u0578\\u0580\\u056e\\u0578\\u0582\\u0574 \\u0565\\u0584 {0}\",\n\"Plugins\": \"\\u0538\\u0576\\u0564\\u056c\\u0561\\u0575\\u0576\\u0578\\u0582\\u0574\\u0576\\u0565\\u0580\",\n\"Handy Shortcuts\": \"\\u0555\\u0563\\u057f\\u0561\\u056f\\u0561\\u0580 \\u056f\\u0561\\u0580\\u0573\\u0578\\u0582\\u0572\\u056b\\u0576\\u0565\\u0580\",\n\"Horizontal line\": \"\\u0540\\u0578\\u0580\\u056b\\u0566\\u0578\\u0576\\u0561\\u056f\\u0561\\u0576 \\u0563\\u056b\\u056e\",\n\"Insert\\/edit image\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c\\/\\u056d\\u0574\\u0562\\u0561\\u0563\\u0580\\u0565\\u056c \\u0576\\u056f\\u0561\\u0580\",\n\"Image description\": \"\\u0546\\u056f\\u0561\\u0580\\u0561\\u0563\\u0580\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Source\": \"\\u0546\\u056f\\u0561\\u0580\\u056b \\u0570\\u0561\\u057d\\u0581\\u0565\",\n\"Dimensions\": \"\\u0549\\u0561\\u0583\\u0565\\u0580\",\n\"Constrain proportions\": \"\\u054a\\u0561\\u0570\\u057a\\u0561\\u0576\\u0565\\u056c \\u0574\\u0561\\u0577\\u057f\\u0561\\u0562\\u0561\\u057e\\u0578\\u0580\\u0578\\u0582\\u0574\\u0568\",\n\"General\": \"\\u0533\\u056c\\u056d\\u0561\\u057e\\u0578\\u0580\",\n\"Advanced\": \"\\u053c\\u0580\\u0561\\u0581\\u0578\\u0582\\u0581\\u056b\\u0579\",\n\"Style\": \"\\u0548\\u0573\",\n\"Vertical space\": \"\\u0548\\u0582\\u0572\\u0572\\u0561\\u0570\\u0561\\u0575\\u0561\\u0581 \\u057f\\u0561\\u0580\\u0561\\u056e\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Horizontal space\": \"\\u0540\\u0578\\u0580\\u056b\\u0566\\u0578\\u0576\\u0561\\u056f\\u0561\\u0576 \\u057f\\u0561\\u0580\\u0561\\u056e\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Border\": \"\\u0535\\u0566\\u0580\\u0561\\u0563\\u056b\\u056e\",\n\"Insert image\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c \\u0576\\u056f\\u0561\\u0580\",\n\"Image...\": \"\\u0546\\u056f\\u0561\\u0580\",\n\"Image list\": \"Image list\",\n\"Rotate counterclockwise\": \"\\u054a\\u057f\\u057f\\u0565\\u056c \\u056a\\u0561\\u0574\\u057d\\u056c\\u0561\\u0584\\u056b\\u0576 \\u0570\\u0561\\u056f\\u0561\\u057c\\u0561\\u056f\",\n\"Rotate clockwise\": \"\\u054a\\u057f\\u057f\\u0565\\u056c \\u056a\\u0561\\u0574\\u057d\\u056c\\u0561\\u0584\\u056b \\u0578\\u0582\\u0572\\u0572\\u0578\\u0582\\u0569\\u0575\\u0561\\u0574\\u0562\",\n\"Flip vertically\": \"\\u0548\\u0582\\u0572\\u0572\\u0561\\u0570\\u0561\\u0575\\u0561\\u0581 \\u0561\\u0580\\u057f\\u0561\\u0581\\u0578\\u056c\\u0578\\u0582\\u0574\",\n\"Flip horizontally\": \"\\u0540\\u0578\\u0580\\u056b\\u0566\\u0578\\u0576\\u0561\\u056f\\u0561\\u0576 \\u0561\\u0580\\u057f\\u0561\\u0581\\u0578\\u056c\\u0578\\u0582\\u0574\",\n\"Edit image\": \"\\u053d\\u0562\\u0574\\u0562\\u0561\\u0563\\u0580\\u0565\\u056c \\u0576\\u056f\\u0561\\u0580\\u0568\",\n\"Image options\": \"\\u0546\\u056f\\u0561\\u0580\\u056b \\u056f\\u0561\\u0580\\u0563\\u0561\\u057e\\u0578\\u0580\\u0578\\u0582\\u0574\\u0576\\u0565\\u0580\\u0568\",\n\"Zoom in\": \"\\u0544\\u0565\\u056e\\u0561\\u0581\\u0576\\u0565\\u056c\",\n\"Zoom out\": \"\\u0553\\u0578\\u0584\\u0580\\u0561\\u0581\\u0576\\u0565\\u056c\",\n\"Crop\": \"\\u053f\\u057f\\u0580\\u0565\\u056c\",\n\"Resize\": \"\\u0553\\u0578\\u056d\\u0565\\u056c \\u0579\\u0561\\u0583\\u0568\",\n\"Orientation\": \"\\u053f\\u0578\\u0572\\u0574\\u0576\\u0578\\u0580\\u0578\\u0577\\u0578\\u0582\\u0574\",\n\"Brightness\": \"\\u054a\\u0561\\u0575\\u056e\\u0561\\u057c\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Sharpen\": \"Sharpen\",\n\"Contrast\": \"\\u053f\\u0578\\u0576\\u057f\\u0580\\u0561\\u057d\\u057f\",\n\"Color levels\": \"Color levels\",\n\"Gamma\": \"\\u0533\\u0561\\u0574\\u0574\\u0561\",\n\"Invert\": \"\\u0553\\u0578\\u056d\\u0561\\u057f\\u0565\\u0572\\u0565\\u056c\",\n\"Apply\": \"\\u0540\\u0561\\u057d\\u057f\\u0561\\u057f\\u0565\\u056c\",\n\"Back\": \"\\u0540\\u0565\\u057f\",\n\"Insert date\\/time\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c \\u0561\\u0574\\u057d\\u0561\\u0569\\u056b\\u057e\\/\\u056a\\u0561\\u0574\\u0561\\u0576\\u0561\\u056f\",\n\"Date\\/time\": \"\\u0531\\u0574\\u057d\\u0561\\u0569\\u056b\\u057e\\/\\u056a\\u0561\\u0574\\u0561\\u0576\\u0561\\u056f\",\n\"Insert\\/Edit Link\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c\\/\\u0553\\u0578\\u0583\\u0578\\u056d\\u0565\\u056c \\u0540\\u0572\\u0578\\u0582\\u0574\\u0568\",\n\"Insert\\/edit link\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c\\/\\u056d\\u0574\\u0562\\u0561\\u0563\\u0580\\u0565\\u056c \\u0570\\u0572\\u0578\\u0582\\u0574\",\n\"Text to display\": \"\\u0540\\u0572\\u0574\\u0561\\u0576 \\u057f\\u0565\\u0584\\u057d\\u057f\",\n\"Url\": \"Url\",\n\"Open link in...\": \"\\u0532\\u0561\\u0581\\u0565\\u056c \\u0570\\u0572\\u0578\\u0582\\u0574\\u0568\",\n\"Current window\": \"\\u0538\\u0576\\u0569\\u0561\\u0581\\u056b\\u056f \\u057a\\u0561\\u057f\\u0578\\u0582\\u0570\\u0561\\u0576\\u0568\",\n\"None\": \"\\u0548\\u0579\\u056b\\u0576\\u0579\",\n\"New window\": \"\\u0546\\u0578\\u0580 \\u057a\\u0561\\u057f\\u0578\\u0582\\u0570\\u0561\\u0576\",\n\"Remove link\": \"\\u054b\\u0576\\u057b\\u0565\\u056c \\u0570\\u0572\\u0578\\u0582\\u0574\\u0568\",\n\"Anchors\": \"\\u053d\\u0561\\u0580\\u056b\\u057d\\u056d\\u0576\\u0565\\u0580\",\n\"Link...\": \"\\u0540\\u0572\\u0578\\u0582\\u0574\",\n\"Paste or type a link\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u0584 \\u056f\\u0561\\u0574 \\u0563\\u0580\\u0565\\u0584 \\u0570\\u0572\\u0578\\u0582\\u0574\\u0568\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u0544\\u0578\\u0582\\u057f\\u0584\\u0561\\u0563\\u0580\\u057e\\u0561\\u056e \\u0570\\u0572\\u0578\\u0582\\u0574\\u0568 \\u056f\\u0561\\u0580\\u056e\\u0565\\u057d \\u0537\\u056c. \\u0583\\u0578\\u057d\\u057f\\u056b \\u0570\\u0561\\u057d\\u0581\\u0565 \\u0567: \\u0534\\u0578\\u0582\\u0584 \\u056f\\u0581\\u0561\\u0576\\u056f\\u0561\\u0576\\u0561\\u0584 \\u0561\\u057e\\u0565\\u056c\\u0561\\u0581\\u0576\\u0565\\u056c mailto: \\u0570\\u0572\\u0574\\u0561\\u0576 \\u057d\\u056f\\u0566\\u0562\\u0578\\u0582\\u0574\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u0544\\u0578\\u0582\\u057f\\u0584\\u0561\\u0563\\u0580\\u057e\\u0561\\u056e \\u0570\\u0572\\u0578\\u0582\\u0574\\u0568 \\u056f\\u0561\\u0580\\u056e\\u0565\\u057d \\u0561\\u0580\\u057f\\u0561\\u0584\\u056b\\u0576 \\u0570\\u0572\\u0578\\u0582\\u0574 \\u0567: \\u0534\\u0578\\u0582\\u0584 \\u056f\\u0581\\u0561\\u0576\\u056f\\u0561\\u0576\\u0561\\u0584 \\u0561\\u057e\\u0565\\u056c\\u0561\\u0581\\u0576\\u0565\\u056c http:\\/\\/ \\u0570\\u0572\\u0574\\u0561\\u0576 \\u057d\\u056f\\u0566\\u0562\\u0578\\u0582\\u0574\",\n\"Link list\": \"\\u0540\\u0572\\u0578\\u0582\\u0574\\u0576\\u0565\\u0580\\u056b \\u0581\\u0578\\u0582\\u0581\\u0561\\u056f\",\n\"Insert video\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c \\u057e\\u056b\\u0564\\u0565\\u0578\",\n\"Insert\\/edit video\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c\\/\\u056d\\u0574\\u0562\\u0561\\u0563\\u0580\\u0565\\u056c \\u057e\\u056b\\u0564\\u0565\\u0578\",\n\"Insert\\/edit media\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c\\/\\u056d\\u0574\\u0562\\u0561\\u0563\\u0580\\u0565\\u056c \\u0574\\u0565\\u0564\\u056b\\u0561\",\n\"Alternative source\": \"\\u0531\\u0575\\u056c\\u0568\\u0576\\u057f\\u0580\\u0561\\u0576\\u0584\\u0561\\u0575\\u056b\\u0576 \\u056f\\u0578\\u0564\",\n\"Alternative source URL\": \"\\u0531\\u0575\\u056c\\u0568\\u0576\\u057f\\u0580\\u0561\\u0576\\u0584\\u0561\\u0575\\u056b\\u0576 \\u0561\\u0572\\u0562\\u0575\\u0578\\u0582\\u0580\\u056b \\u0570\\u0572\\u0578\\u0582\\u0574\",\n\"Media poster (Image URL)\": \"\\u0544\\u0565\\u0564\\u056b\\u0561 \\u057a\\u0561\\u057d\\u057f\\u0561\\u057c (\\u0546\\u056f\\u0561\\u0580\\u056b \\u0570\\u0572\\u0578\\u0582\\u0574)\",\n\"Paste your embed code below:\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u0584 \\u0541\\u0565\\u0580 \\u056f\\u0578\\u0564\\u0568 \\u0561\\u0575\\u057d\\u057f\\u0565\\u0572\\u055d\",\n\"Embed\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u057e\\u0578\\u0572 \\u056f\\u0578\\u0564\",\n\"Media...\": \"\\u0544\\u0565\\u0564\\u056b\\u0561\",\n\"Nonbreaking space\": \"\\u0531\\u057c\\u0561\\u0576\\u0581 \\u0576\\u0578\\u0580 \\u057f\\u0578\\u0572\\u056b \\u0562\\u0561\\u0581\\u0561\\u057f\",\n\"Page break\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c \\u0567\\u057b\\u056b \\u0561\\u0576\\u057b\\u0561\\u057f\\u056b\\u0579\",\n\"Paste as text\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c \\u0578\\u0580\\u057a\\u0565\\u057d \\u057f\\u0565\\u0584\\u057d\\u057f\",\n\"Preview\": \"\\u0546\\u0561\\u056d\\u0576\\u0561\\u056f\\u0561\\u0576 \\u0564\\u056b\\u057f\\u0578\\u0582\\u0574\",\n\"Print...\": \"\\u054f\\u057a\\u0565\\u056c\",\n\"Save\": \"\\u054a\\u0561\\u0570\\u057a\\u0561\\u0576\\u0565\\u056c\",\n\"Find\": \"\\u0553\\u0576\\u057f\\u0580\\u0565\\u056c\",\n\"Replace with\": \"\\u0553\\u0578\\u056d\\u0561\\u0580\\u056b\\u0576\\u0565\\u056c\",\n\"Replace\": \"\\u0553\\u0578\\u056d\\u0561\\u0580\\u056b\\u0576\\u0565\\u056c\",\n\"Replace all\": \"\\u0553\\u0578\\u056d\\u0561\\u0580\\u056b\\u0576\\u0565\\u056c \\u0562\\u0578\\u056c\\u0578\\u0580\\u0568\",\n\"Previous\": \"\\u0546\\u0561\\u056d\\u0578\\u0580\\u0564\",\n\"Next\": \"\\u0540\\u0561\\u057b\\u0578\\u0580\\u0564\",\n\"Find and replace...\": \"\\u0553\\u0576\\u057f\\u0580\\u0565\\u056c \\u0587 \\u0583\\u0578\\u056d\\u0561\\u0580\\u056b\\u0576\\u0565\\u056c\",\n\"Could not find the specified string.\": \"\\u0546\\u0577\\u057e\\u0561\\u056e \\u057f\\u0565\\u0584\\u057d\\u057f\\u0568 \\u0579\\u056b \\u0563\\u057f\\u0576\\u057e\\u0565\\u056c\",\n\"Match case\": \"\\u0540\\u0561\\u0577\\u057e\\u056b \\u0561\\u057c\\u0576\\u0565\\u056c \\u057c\\u0565\\u0563\\u056b\\u057d\\u057f\\u0578\\u0580\\u0568\",\n\"Find whole words only\": \"\\u0533\\u057f\\u0576\\u0565\\u056c \\u0574\\u056b\\u0561\\u0575\\u0576 \\u0561\\u0574\\u0562\\u0578\\u0572\\u057b \\u0562\\u0561\\u057c\\u0565\\u0580\\u0568\",\n\"Spell check\": \"\\u0548\\u0582\\u0572\\u0572\\u0561\\u0563\\u0580\\u0578\\u0582\\u0569\\u0575\\u0561\\u0576 \\u057d\\u057f\\u0578\\u0582\\u0563\\u0578\\u0582\\u0574\",\n\"Ignore\": \"\\u0531\\u0576\\u057f\\u0565\\u057d\\u0565\\u056c\",\n\"Ignore all\": \"\\u0531\\u0576\\u057f\\u0565\\u057d\\u0565\\u056c \\u0562\\u0578\\u056c\\u0578\\u0580\\u0568\",\n\"Finish\": \"\\u0531\\u057e\\u0561\\u0580\\u057f\\u0565\\u056c\",\n\"Add to Dictionary\": \"\\u0531\\u057e\\u0565\\u056c\\u0561\\u0581\\u0576\\u0565\\u056c \\u0562\\u0561\\u057c\\u0561\\u0580\\u0561\\u0576\\u0578\\u0582\\u0574\",\n\"Insert table\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c \\u0561\\u0572\\u0575\\u0578\\u0582\\u057d\\u0561\\u056f\",\n\"Table properties\": \"\\u0531\\u0572\\u0575\\u0578\\u0582\\u057d\\u0561\\u056f\\u056b \\u0570\\u0561\\u057f\\u056f\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0576\\u0565\\u0580\\u0568\",\n\"Delete table\": \"\\u054b\\u0576\\u057b\\u0565\\u056c \\u0561\\u0572\\u0575\\u0578\\u0582\\u057d\\u0561\\u056f\\u0568\",\n\"Cell\": \"\\u054e\\u0561\\u0576\\u0564\\u0561\\u056f\",\n\"Row\": \"\\u054f\\u0578\\u0572\",\n\"Column\": \"\\u054d\\u0575\\u0578\\u0582\\u0576\\u0575\\u0561\\u056f\",\n\"Cell properties\": \"\\u054e\\u0561\\u0576\\u0564\\u0561\\u056f\\u056b \\u0570\\u0561\\u057f\\u056f\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0576\\u0565\\u0580\\u0568\",\n\"Merge cells\": \"\\u0544\\u056b\\u0561\\u057e\\u0578\\u0580\\u0565\\u056c \\u057e\\u0561\\u0576\\u0564\\u0561\\u056f\\u0576\\u0565\\u0580\\u0568\",\n\"Split cell\": \"\\u0532\\u0561\\u056a\\u0561\\u0576\\u0565\\u056c \\u057e\\u0561\\u0576\\u0564\\u0561\\u056f\\u0568\",\n\"Insert row before\": \"\\u0531\\u057e\\u0565\\u056c\\u0561\\u0581\\u0576\\u0565\\u056c \\u057f\\u0578\\u0572 \\u057e\\u0565\\u0580\\u0587\\u0578\\u0582\\u0574\",\n\"Insert row after\": \"\\u0531\\u057e\\u0565\\u056c\\u0561\\u0581\\u0576\\u0565\\u056c \\u057f\\u0578\\u0572 \\u0576\\u0565\\u0580\\u0584\\u0587\\u0578\\u0582\\u0574\",\n\"Delete row\": \"\\u054b\\u0576\\u057b\\u0565\\u056c \\u057f\\u0578\\u0572\\u0568\",\n\"Row properties\": \"\\u054f\\u0578\\u0572\\u056b \\u0570\\u0561\\u057f\\u056f\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0576\\u0565\\u0580\\u0568\",\n\"Cut row\": \"\\u053f\\u057f\\u0580\\u0565\\u056c \\u057f\\u0578\\u0572\\u0568\",\n\"Copy row\": \"\\u054a\\u0561\\u057f\\u0573\\u0565\\u0576\\u0565\\u056c \\u057f\\u0578\\u0572\\u0568\",\n\"Paste row before\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c \\u057f\\u0578\\u0572\\u0568 \\u057e\\u0565\\u0580\\u0587\\u0578\\u0582\\u0574\",\n\"Paste row after\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c \\u057f\\u0578\\u0572\\u0568 \\u0576\\u0565\\u0580\\u0584\\u0587\\u0578\\u0582\\u0574\",\n\"Insert column before\": \"\\u0531\\u057e\\u0565\\u056c\\u0561\\u0581\\u0576\\u0565\\u056c \\u0576\\u0578\\u0580 \\u057d\\u0575\\u0578\\u0582\\u0576 \\u0571\\u0561\\u056d\\u056b\\u0581\",\n\"Insert column after\": \"\\u0531\\u057e\\u0565\\u056c\\u0561\\u0581\\u0576\\u0565\\u056c \\u0576\\u0578\\u0580 \\u057d\\u0575\\u0578\\u0582\\u0576 \\u0561\\u057b\\u056b\\u0581\",\n\"Delete column\": \"\\u0541\\u0576\\u057b\\u0565\\u056c \\u057d\\u0575\\u0578\\u0582\\u0576\\u0568\",\n\"Cols\": \"\\u054d\\u0575\\u0578\\u0582\\u0576\\u0575\\u0561\\u056f\\u0576\\u0565\\u0580\",\n\"Rows\": \"\\u054f\\u0578\\u0572\\u0565\\u0580\",\n\"Width\": \"\\u053c\\u0561\\u0575\\u0576\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Height\": \"\\u0532\\u0561\\u0580\\u0571\\u0580\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Cell spacing\": \"\\u0531\\u0580\\u057f\\u0561\\u0584\\u056b\\u0576 \\u057f\\u0561\\u0580\\u0561\\u056e\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Cell padding\": \"\\u0546\\u0565\\u0580\\u0584\\u056b\\u0576 \\u057f\\u0561\\u0580\\u0561\\u056e\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Show caption\": \"\\u0551\\u0578\\u0582\\u0581\\u0561\\u0564\\u0580\\u0565\\u056c \\u057e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580\\u0568\",\n\"Left\": \"\\u0541\\u0561\\u056d\",\n\"Center\": \"\\u053f\\u0565\\u0576\\u057f\\u0580\\u0578\\u0576\",\n\"Right\": \"\\u0531\\u057b\",\n\"Cell type\": \"\\u054e\\u0561\\u0576\\u0564\\u0561\\u056f\\u056b \\u057f\\u056b\\u057a\",\n\"Scope\": \"Scope\",\n\"Alignment\": \"\\u0540\\u0561\\u057e\\u0561\\u057d\\u0561\\u0580\\u0565\\u0581\\u0578\\u0582\\u0574\",\n\"H Align\": \"\\u0540. \\u0540\\u0561\\u057e\\u0561\\u057d\\u0561\\u0580\\u0565\\u0581\\u0578\\u0582\\u0574\",\n\"V Align\": \"\\u0548\\u0582. \\u0570\\u0561\\u057e\\u0561\\u057d\\u0561\\u0580\\u0565\\u0581\\u0578\\u0582\\u0574\",\n\"Top\": \"\\u054e\\u0565\\u0580\\u0587\",\n\"Middle\": \"\\u0544\\u0565\\u057b\\u057f\\u0565\\u0572\",\n\"Bottom\": \"\\u0546\\u0565\\u0580\\u0584\\u0587\",\n\"Header cell\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u0580\\u056b \\u057e\\u0561\\u0576\\u0564\\u0561\\u056f\\u0576\\u0565\\u0580\",\n\"Row group\": \"\\u054f\\u0578\\u0572\\u0565\\u0580\\u056b \\u056d\\u0578\\u0582\\u0574\\u0562\",\n\"Column group\": \"\\u054d\\u0575\\u0578\\u0582\\u0576\\u0575\\u0561\\u056f\\u0576\\u0565\\u0580\\u056b \\u056d\\u0578\\u0582\\u0574\\u0562\",\n\"Row type\": \"\\u054f\\u0578\\u0572\\u056b \\u057f\\u056b\\u057a\",\n\"Header\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580\",\n\"Body\": \"\\u054a\\u0561\\u0580\\u0578\\u0582\\u0576\\u0561\\u056f\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Footer\": \"\\u0531\\u0572\\u0575\\u0578\\u0582\\u057d\\u0561\\u056f\\u056b \\u057d\\u057f\\u0578\\u0580\\u056b\\u0576 \\u0570\\u0561\\u057f\\u057e\\u0561\\u056e\",\n\"Border color\": \"\\u0535\\u0566\\u0580\\u0561\\u0563\\u056b\\u056e\",\n\"Insert template...\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u0584 \\u0571\\u0587\\u0561\\u0576\\u0574\\u0578\\u0582\\u0577\",\n\"Templates\": \"\\u0541\\u0587\\u0561\\u0576\\u0574\\u0578\\u0582\\u0577\\u0576\\u0565\\u0580\",\n\"Template\": \"\\u0541\\u0587\\u0561\\u0576\\u0574\\u0578\\u0582\\u0577\",\n\"Text color\": \"\\u054f\\u0561\\u057c\\u056b \\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Background color\": \"\\u0556\\u0578\\u0576\\u056b \\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Custom...\": \"\\u0531\\u0575\\u056c...\",\n\"Custom color\": \"\\u0531\\u0575\\u056c \\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"No color\": \"\\u0531\\u0576\\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Remove color\": \"\\u054b\\u0576\\u057b\\u0565\\u056c \\u0563\\u0578\\u0582\\u0575\\u0576\\u0568\",\n\"Table of Contents\": \"\\u0551\\u0561\\u0576\\u056f\",\n\"Show blocks\": \"\\u0551\\u0578\\u0582\\u0581\\u0561\\u0564\\u0580\\u0565\\u056c \\u0562\\u056c\\u0578\\u056f\\u0576\\u0565\\u0580\\u0568\",\n\"Show invisible characters\": \"\\u0551\\u0578\\u0582\\u0575\\u0581 \\u057f\\u0561\\u056c \\u0561\\u0576\\u057f\\u0565\\u057d\\u0561\\u0576\\u0565\\u056c\\u056b \\u057d\\u056b\\u0574\\u057e\\u0578\\u056c\\u0576\\u0565\\u0580\\u0568\",\n\"Word count\": \"\\u0532\\u0561\\u057c\\u056b \\u0584\\u0561\\u0576\\u0561\\u056f\",\n\"Count\": \"\\u0554\\u0561\\u0576\\u0561\\u056f\\u0568\",\n\"Document\": \"\\u0553\\u0561\\u057d\\u057f\\u0561\\u0569\\u0578\\u0582\\u0572\\u0569\",\n\"Selection\": \"\\u0538\\u0576\\u057f\\u0580\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Words\": \"\\u0532\\u0561\\u057c\\u0565\\u0580\",\n\"Words: {0}\": \"\\u0532\\u0561\\u057c\\u0565\\u0580\\u056b \\u0584\\u0561\\u0576\\u0561\\u056f: {0}\",\n\"{0} words\": \"{0} \\u0562\\u0561\\u057c\",\n\"File\": \"\\u0556\\u0561\\u0575\\u056c\",\n\"Edit\": \"\\u053d\\u0574\\u0562\\u0561\\u0563\\u0580\\u0565\\u056c\",\n\"Insert\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c\",\n\"View\": \"\\u054f\\u0565\\u057d\\u0584\",\n\"Format\": \"\\u0556\\u0578\\u0580\\u0574\\u0561\\u057f\",\n\"Table\": \"\\u0531\\u0572\\u0575\\u0578\\u0582\\u057d\\u0561\\u056f\",\n\"Tools\": \"\\u0533\\u0578\\u0580\\u056e\\u056b\\u0584\\u0576\\u0565\\u0580\",\n\"Powered by {0}\": \"Powered by {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u054f\\u0565\\u0584\\u057d\\u057f\\u0561\\u0575\\u056b\\u0576 \\u0564\\u0561\\u0577\\u057f\\u0589 \\u054d\\u0565\\u0572\\u0574\\u0565\\u0584 ALT-F9 \\u0574\\u0565\\u0576\\u0575\\u0578\\u0582\\u056b \\u0570\\u0561\\u0574\\u0561\\u0580\\u0589 ALT-F10 \\u0563\\u0578\\u0580\\u056e\\u056b\\u0584\\u0576\\u0565\\u0580\\u056b \\u057e\\u0561\\u0570\\u0561\\u0576\\u0561\\u056f\\u0589 \\u054d\\u0565\\u0572\\u0574\\u0565\\u0584 ALT-0 \\u0585\\u0563\\u0576\\u0578\\u0582\\u0569\\u0575\\u0561\\u0576 \\u0570\\u0561\\u0574\\u0561\\u0580\",\n\"Image title\": \"\\u0546\\u056f\\u0561\\u0580\\u056b \\u057e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580\",\n\"Border width\": \"\\u054d\\u0561\\u0570\\u0574\\u0561\\u0576\\u056b \\u056c\\u0561\\u0575\\u0576\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0568\",\n\"Border style\": \"\\u054d\\u0561\\u0570\\u0574\\u0561\\u0576\\u056b \\u0578\\u0573\\u0568\",\n\"Error\": \"\\u054d\\u056d\\u0561\\u056c\",\n\"Warn\": \"\\u0536\\u0563\\u0578\\u0582\\u0577\\u0561\\u0581\\u0578\\u0582\\u0574\",\n\"Valid\": \"\\u054e\\u0561\\u057e\\u0565\\u0580 \\u0567\",\n\"To open the popup, press Shift+Enter\": \"\\u0539\\u057c\\u0578\\u0582\\u0581\\u056b\\u056f\\u0568 \\u0562\\u0561\\u0581\\u0565\\u056c\\u0578\\u0582 \\u0570\\u0561\\u0574\\u0561\\u0580 \\u057d\\u0565\\u0572\\u0574\\u0565\\u0584 Shift + Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u0540\\u0561\\u0580\\u0578\\u0582\\u057d\\u057f \\u057f\\u0565\\u0584\\u057d\\u057f\\u0561\\u0575\\u056b\\u0576 \\u057f\\u0561\\u0580\\u0561\\u056e\\u0584: \\u0555\\u0563\\u0576\\u0578\\u0582\\u0569\\u0575\\u0561\\u0576 \\u0570\\u0561\\u0574\\u0561\\u0580 \\u057d\\u0565\\u0572\\u0574\\u0565\\u0584 ALT-0:\",\n\"System Font\": \"\\u0540\\u0561\\u0574\\u0561\\u056f\\u0561\\u0580\\u0563\\u056b \\u057f\\u0561\\u057c\\u0561\\u057f\\u0565\\u057d\\u0561\\u056f\",\n\"Failed to upload image: {0}\": \"\\u0549\\u0570\\u0561\\u057b\\u0578\\u0572\\u057e\\u0565\\u0581 \\u057e\\u0565\\u0580\\u0562\\u0565\\u057c\\u0576\\u0565\\u056c \\u057a\\u0561\\u057f\\u056f\\u0565\\u0580\\u0568: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u0549\\u0570\\u0561\\u057b\\u0578\\u0572\\u057e\\u0565\\u0581 \\u0562\\u0565\\u057c\\u0576\\u0565\\u056c \\u057a\\u056c\\u0561\\u0563\\u056b\\u0576\\u0568\\u0589 {0} \\u0570\\u0572\\u0578\\u0582\\u0574\\u056b\\u0581 {1}\",\n\"Failed to load plugin url: {0}\": \"\\u0549\\u0570\\u0561\\u057b\\u0578\\u0572\\u057e\\u0565\\u0581 \\u0562\\u0565\\u057c\\u0576\\u0565\\u056c \\u057a\\u056c\\u0561\\u0563\\u056b\\u0576\\u0568 \\u0570\\u0572\\u0578\\u0582\\u0574\\u056b\\u0581\\u0589 {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u0549\\u0570\\u0561\\u057b\\u0578\\u0572\\u057e\\u0565\\u0581 \\u0574\\u056b\\u0561\\u0581\\u0576\\u0565\\u056c \\u057a\\u056c\\u0561\\u0563\\u056b\\u0576\\u0568\\u0589 {0}\",\n\"example\": \"\\u0585\\u0580\\u056b\\u0576\\u0561\\u056f\",\n\"Search\": \"\\u0553\\u0576\\u057f\\u0580\\u0565\\u056c\",\n\"All\": \"\\u0532\\u0578\\u056c\\u0578\\u0580\\u0568\",\n\"Currency\": \"\\u0531\\u0580\\u056a\\u0578\\u0582\\u0575\\u0569\",\n\"Text\": \"\\u054f\\u0565\\u0584\\u057d\\u057f\",\n\"Quotations\": \"\\u0544\\u0565\\u057b\\u0562\\u0565\\u0580\\u0578\\u0582\\u0574\\u0576\\u0565\\u0580\",\n\"Mathematical\": \"\\u0544\\u0561\\u0569\\u0565\\u0574\\u0561\\u057f\\u056b\\u056f\\u0561\\u056f\\u0561\\u0576\",\n\"Extended Latin\": \"\\u0538\\u0576\\u0564\\u0561\\u0580\\u0571\\u0561\\u056f \\u056c\\u0561\\u057f\\u056b\\u0576\\u0565\\u0580\\u0565\\u0576\",\n\"Symbols\": \"\\u054d\\u056b\\u0574\\u057e\\u0578\\u056c\\u0576\\u0565\\u0580\",\n\"Arrows\": \"\\u054d\\u056c\\u0561\\u0584\\u0576\\u0565\\u0580\",\n\"User Defined\": \"\\u0555\\u0563\\u057f\\u0561\\u0563\\u0578\\u0580\\u056e\\u0578\\u0572\\u056b \\u056f\\u0578\\u0572\\u0574\\u056b\\u0581 \\u054d\\u0561\\u0570\\u0574\\u0561\\u0576\\u057e\\u0561\\u056e\",\n\"dollar sign\": \"\\u0564\\u0578\\u056c\\u056c\\u0561\\u0580\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"currency sign\": \"\\u0561\\u0580\\u056a\\u0578\\u0582\\u0575\\u0569\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"euro-currency sign\": \"\\u0565\\u057e\\u0580\\u0578-\\u0561\\u0580\\u056a\\u0578\\u0582\\u0575\\u0569\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"colon sign\": \"\\u056f\\u0580\\u056f\\u0576\\u0561\\u056f\\u0565\\u057f \\u0576\\u0577\\u0561\\u0576\",\n\"cruzeiro sign\": \"\\u0576\\u0561\\u057e\\u0561\\u0580\\u056f\\u0578\\u0582\\u0569\\u0575\\u0561\\u0576 \\u0576\\u0577\\u0561\\u0576\",\n\"french franc sign\": \"\\u0586\\u0580\\u0561\\u0576\\u057d\\u056b\\u0561\\u056f\\u0561\\u0576 \\u0586\\u0580\\u0561\\u0576\\u056f\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"lira sign\": \"\\u056c\\u056b\\u0580\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"mill sign\": \"\\u057b\\u0580\\u0561\\u0572\\u0561\\u0581\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"naira sign\": \"\\u0576\\u0561\\u056b\\u0580\\u0561\\u0575\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"peseta sign\": \"\\u057a\\u0565\\u057d\\u0565\\u057f\\u0561\\u0575\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"rupee sign\": \"\\u057c\\u0578\\u0582\\u0583\\u056b\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"won sign\": \"\\u0577\\u0561\\u0570\\u0565\\u056c\\u0578\\u0582 \\u0576\\u0577\\u0561\\u0576\\u0568\",\n\"new sheqel sign\": \"\\u0576\\u0578\\u0580 \\u0577\\u0565\\u056f\\u0565\\u056c \\u0576\\u0577\\u0561\\u0576\",\n\"dong sign\": \"\\u0564\\u0578\\u0576\\u0563\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"kip sign\": \"\\u056f\\u056b\\u057a \\u0576\\u0577\\u0561\\u0576\",\n\"tugrik sign\": \"\\u057f\\u0578\\u0582\\u0563\\u0580\\u056b\\u056f\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"drachma sign\": \"\\u0564\\u0580\\u0561\\u0574\\u0561\\u056d\\u0574\\u0561\\u0575\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"german penny symbol\": \"\\u0563\\u0565\\u0580\\u0574\\u0561\\u0576\\u0561\\u056f\\u0561\\u0576 \\u057a\\u0565\\u0576\\u056b\\u0575\\u056b \\u056d\\u0578\\u0580\\u0570\\u0580\\u0564\\u0561\\u0576\\u056b\\u0577\",\n\"peso sign\": \"\\u057a\\u0565\\u057d\\u0578\\u0575\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"guarani sign\": \"\\u0563\\u0578\\u0582\\u0561\\u0580\\u0561\\u0576\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"austral sign\": \"\\u0561\\u057e\\u057d\\u057f\\u0580\\u0561\\u056c\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"hryvnia sign\": \"\\u0563\\u0580\\u056b\\u057e\\u0576\\u0561\\u0575\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"cedi sign\": \"\\u0584\\u0565\\u0564\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"livre tournois sign\": \"\\u056c\\u056b\\u057e\\u0580\\u0565 \\u0569\\u0578\\u0582\\u0580\\u0576\\u0578\\u056b\\u057d \\u0576\\u0577\\u0561\\u0576\",\n\"spesmilo sign\": \"\\u057d\\u057a\\u0565\\u057d\\u0574\\u056b\\u056c\\u0578 \\u0576\\u0577\\u0561\\u0576\",\n\"tenge sign\": \"\\u057f\\u0565\\u0576\\u0563\\u0565 \\u0576\\u0577\\u0561\\u0576\",\n\"indian rupee sign\": \"\\u0570\\u0576\\u0564\\u056f\\u0561\\u056f\\u0561\\u0576 \\u057c\\u0578\\u0582\\u0583\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"turkish lira sign\": \"\\u0569\\u0578\\u0582\\u0580\\u0584\\u0561\\u056f\\u0561\\u0576 \\u056c\\u056b\\u0580\\u0561\\u0575\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"nordic mark sign\": \"\\u0570\\u0575\\u0578\\u0582\\u057d\\u056b\\u057d\\u0561\\u0575\\u056b\\u0576 \\u0576\\u0577\\u0561\\u0576\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"manat sign\": \"\\u0574\\u0561\\u0576\\u0561\\u0569\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"ruble sign\": \"\\u057c\\u0578\\u0582\\u0562\\u056c\\u0578\\u0582 \\u0576\\u0577\\u0561\\u0576\",\n\"yen character\": \"\\u056b\\u0565\\u0576\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"yuan character\": \"\\u0575\\u0578\\u0582\\u0561\\u0576\\u056b \\u0576\\u0577\\u0561\\u0576\",\n\"yuan character, in hong kong and taiwan\": \"\\u0575\\u0578\\u0582\\u0561\\u0576\\u056b \\u0576\\u0577\\u0561\\u0576 \\u0570\\u0578\\u0576\\u0563\\u056f\\u0578\\u0576\\u0563\\u0578\\u0582\\u0574 \\u0587 \\u0569\\u0561\\u0575\\u057e\\u0561\\u0576\\u0578\\u0582\\u0574\",\n\"yen\\/yuan character variant one\": \"\\u0575\\u0565\\u0576\\u056b\\/\\u0575\\u0578\\u0582\\u0561\\u0576\\u056b \\u0576\\u0577\\u0561\\u0576 \\u057f\\u0561\\u0580\\u0562\\u0565\\u0580\\u0561\\u056f \\u0561\\u057c\\u0561\\u057b\\u056b\\u0576\",\n\"Loading emoticons...\": \"\\u054d\\u0574\\u0561\\u0575\\u056c\\u056b\\u056f\\u0576\\u0565\\u0580\\u056b \\u0562\\u0565\\u057c\\u0576\\u0578\\u0582\\u0574\\u0568\\u2024\\u2024\\u2024\",\n\"Could not load emoticons\": \"\\u0549\\u056f\\u0561\\u0580\\u0578\\u0572\\u0561\\u0581\\u0561\\u0576 \\u0562\\u0565\\u057c\\u0576\\u057e\\u0565\\u056c \\u057d\\u0574\\u0561\\u0575\\u056c\\u056b\\u056f\\u0576\\u0565\\u0580\\u0568\",\n\"People\": \"\\u0544\\u0561\\u0580\\u0564\\u056b\\u0584\",\n\"Animals and Nature\": \"\\u053f\\u0565\\u0576\\u0564\\u0561\\u0576\\u056b\\u0576\\u0565\\u0580 \\u0587 \\u0532\\u0576\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Food and Drink\": \"\\u054d\\u0576\\u0578\\u0582\\u0576\\u0564 \\u0587 \\u056d\\u0574\\u056b\\u0579\\u0584\",\n\"Activity\": \"\\u0533\\u0578\\u0580\\u056e\\u0578\\u0582\\u0576\\u0565\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Travel and Places\": \"\\u0543\\u0561\\u0576\\u0561\\u057a\\u0561\\u0580\\u0570\\u0578\\u0580\\u0564\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0576\\u0565\\u0580 \\u0587 \\u057e\\u0561\\u0575\\u0580\\u0565\\u0580\",\n\"Objects\": \"\\u0555\\u0562\\u0575\\u0565\\u056f\\u057f\\u0576\\u0565\\u0580\",\n\"Flags\": \"\\u0534\\u0580\\u0578\\u0577\\u0576\\u0565\\u0580\",\n\"Characters\": \"\\u0546\\u056b\\u0577\\u0565\\u0580\",\n\"Characters (no spaces)\": \"\\u0546\\u056b\\u0577\\u0565\\u0580 (\\u0562\\u0561\\u0581\\u0561\\u057f\\u0576\\u0565\\u0580)\",\n\"{0} characters\": \"{0} \\u0576\\u056b\\u0577\\u0565\\u0580\",\n\"Error: Form submit field collision.\": \"\\u054d\\u056d\\u0561\\u056c\\u0589 \\u0541\\u0587\\u0568 \\u0570\\u0561\\u057d\\u057f\\u0561\\u057f\\u0565\\u056c\\u0578\\u0582\\u0581 \\u0564\\u0561\\u0577\\u057f\\u056b \\u0562\\u0561\\u056d\\u0578\\u0582\\u0574:\",\n\"Error: No form element found.\": \"\\u054d\\u056d\\u0561\\u056c\\u0589 \\u0541\\u0587\\u056b \\u0578\\u0579 \\u0574\\u056b \\u057f\\u0561\\u0580\\u0580 \\u0579\\u056b \\u0563\\u057f\\u0576\\u057e\\u0565\\u056c:\",\n\"Update\": \"\\u0539\\u0561\\u0580\\u0574\\u0561\\u0581\\u0576\\u0565\\u056c\",\n\"Color swatch\": \"\\u0533\\u0578\\u0582\\u0575\\u0576\\u056b \\u0583\\u0578\\u056d\\u0561\\u0576\\u0561\\u056f\\u0578\\u0582\\u0574\",\n\"Turquoise\": \"\\u0553\\u056b\\u0580\\u0578\\u0582\\u0566\\u0561\\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Green\": \"\\u053f\\u0561\\u0576\\u0561\\u0579\",\n\"Blue\": \"\\u053f\\u0561\\u057a\\u0578\\u0582\\u0575\\u057f\",\n\"Purple\": \"\\u0544\\u0561\\u0576\\u0578\\u0582\\u0577\\u0561\\u056f\\u0561\\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Navy Blue\": \"\\u0544\\u0578\\u0582\\u0563 \\u056f\\u0561\\u057a\\u0578\\u0582\\u0575\\u057f\",\n\"Dark Turquoise\": \"\\u0544\\u0578\\u0582\\u0563 \\u0583\\u056b\\u0580\\u0578\\u0582\\u0566\\u0561\\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Dark Green\": \"\\u0544\\u0578\\u0582\\u0563 \\u056f\\u0561\\u0576\\u0561\\u0579\",\n\"Medium Blue\": \"\\u0544\\u056b\\u057b\\u056b\\u0576 \\u056f\\u0561\\u057a\\u0578\\u0582\\u0575\\u057f\",\n\"Medium Purple\": \"\\u0544\\u056b\\u057b\\u056b\\u0576 \\u0574\\u0561\\u0576\\u0578\\u0582\\u0577\\u0561\\u056f\\u0561\\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Midnight Blue\": \"\\u053f\\u0565\\u057d\\u0563\\u056b\\u0577\\u0565\\u0580\\u0561\\u0575\\u056b\\u0576 \\u056f\\u0561\\u057a\\u0578\\u0582\\u0575\\u057f\",\n\"Yellow\": \"\\u0534\\u0565\\u0572\\u056b\\u0576\",\n\"Orange\": \"\\u0546\\u0561\\u0580\\u0576\\u057b\\u0561\\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Red\": \"\\u053f\\u0561\\u0580\\u0574\\u056b\\u0580\",\n\"Light Gray\": \"\\u0532\\u0561\\u0581 \\u0574\\u0578\\u056d\\u0580\\u0561\\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Gray\": \"\\u0544\\u0578\\u056d\\u0580\\u0561\\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Dark Yellow\": \"\\u0544\\u0578\\u0582\\u0563 \\u0564\\u0565\\u0572\\u056b\\u0576\",\n\"Dark Orange\": \"\\u0544\\u0578\\u0582\\u0563 \\u0576\\u0561\\u0580\\u0576\\u057b\\u0561\\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Dark Red\": \"\\u0544\\u0578\\u0582\\u0563 \\u056f\\u0561\\u0580\\u0574\\u056b\\u0580\",\n\"Medium Gray\": \"\\u0544\\u056b\\u057b\\u056b\\u0576 \\u0574\\u0578\\u056d\\u0580\\u0561\\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Dark Gray\": \"\\u0544\\u0578\\u0582\\u0563 \\u0574\\u0578\\u056d\\u0580\\u0561\\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Light Green\": \"\\u0532\\u0561\\u0581 \\u056f\\u0561\\u0576\\u0561\\u0579\",\n\"Light Yellow\": \"\\u0532\\u0561\\u0581 \\u0564\\u0565\\u0572\\u056b\\u0576\",\n\"Light Red\": \"\\u0532\\u0561\\u0581 \\u056f\\u0561\\u0580\\u0574\\u056b\\u0580\",\n\"Light Purple\": \"\\u0532\\u0561\\u0581 \\u0574\\u0561\\u0576\\u0578\\u0582\\u0577\\u0561\\u056f\\u0561\\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Light Blue\": \"\\u0532\\u0561\\u0581 \\u056f\\u0561\\u057a\\u0578\\u0582\\u0575\\u057f\",\n\"Dark Purple\": \"\\u0544\\u0578\\u0582\\u0563 \\u0574\\u0561\\u0576\\u0578\\u0582\\u0577\\u0561\\u056f\\u0561\\u0563\\u0578\\u0582\\u0575\\u0576\",\n\"Dark Blue\": \"\\u0544\\u0578\\u0582\\u0563 \\u056f\\u0561\\u057a\\u0578\\u0582\\u0575\\u057f\",\n\"Black\": \"\\u054d\\u0587\",\n\"White\": \"\\u054d\\u057a\\u056b\\u057f\\u0561\\u056f\",\n\"Switch to or from fullscreen mode\": \"\\u0531\\u0576\\u0581\\u0565\\u0584 \\u0561\\u0574\\u0562\\u0578\\u0572\\u057b \\u0567\\u056f\\u0580\\u0561\\u0576\\u056b\\u0576 \\u057c\\u0565\\u056a\\u056b\\u0574\\u056b\\u0581 \\u056f\\u0561\\u0574 \\u0561\\u0574\\u0562\\u0578\\u0572\\u057b \\u057c\\u0565\\u056a\\u056b\\u0574\\u056b\\u0581\",\n\"Open help dialog\": \"\\u0532\\u0561\\u0581\\u0565\\u056c \\u0585\\u0563\\u0576\\u0578\\u0582\\u0569\\u0575\\u0561\\u0576 \\u0565\\u0580\\u056f\\u056d\\u0578\\u057d\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0568\",\n\"history\": \"\\u054a\\u0561\\u057f\\u0574\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"styles\": \"\\u0578\\u0573\\u0565\\u0580\\u0568\",\n\"formatting\": \"\\u0579\\u0561\\u0583\\u0561\\u0576\\u0577\\u0578\\u0582\\u0574\",\n\"alignment\": \"\\u0570\\u0561\\u057e\\u0561\\u057d\\u0561\\u0580\\u0565\\u0581\\u0578\\u0582\\u0574\",\n\"indentation\": \"\\u056d\\u0561\\u0575\\u0569\\u0578\\u0581\",\n\"permanent pen\": \"\\u0574\\u0577\\u057f\\u0561\\u056f\\u0561\\u0576 \\u0563\\u0580\\u056b\\u0579\",\n\"comments\": \"\\u0574\\u0565\\u056f\\u0576\\u0561\\u0562\\u0561\\u0576\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0576\\u0565\\u0580\",\n\"Format Painter\": \"\\u0541\\u0587\\u0561\\u0579\\u0561\\u0583\\u056b \\u0576\\u056f\\u0561\\u0580\\u056b\\u0579\",\n\"Insert\\/edit iframe\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u0584\\/\\u056d\\u0574\\u0562\\u0561\\u0563\\u0580\\u0565\\u0584 iframe- \\u0568\",\n\"Capitalization\": \"\\u0544\\u0565\\u056e\\u0561\\u057f\\u0561\\u057c\",\n\"lowercase\": \"\\u0553\\u0578\\u0584\\u0580\\u0561\\u057f\\u0561\\u057c\",\n\"UPPERCASE\": \"\\u0544\\u0535\\u053e\\u0531\\u054f\\u0531\\u054c\",\n\"Title Case\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580 \\u0533\\u0578\\u0580\\u056e\",\n\"Permanent Pen Properties\": \"\\u0544\\u0577\\u057f\\u0561\\u056f\\u0561\\u0576 \\u0563\\u0580\\u056b\\u0579\\u056b \\u0570\\u0561\\u057f\\u056f\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0576\\u0565\\u0580\\u0568\",\n\"Permanent pen properties...\": \"\\u0544\\u0577\\u057f\\u0561\\u056f\\u0561\\u0576 \\u0563\\u0580\\u056b\\u0579\\u056b \\u0570\\u0561\\u057f\\u056f\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0576\\u0565\\u0580\\u0568\\u2024\\u2024\\u2024\",\n\"Font\": \"\\u054f\\u0561\\u057c\\u0561\\u057f\\u0565\\u057d\\u0561\\u056f\",\n\"Size\": \"\\u0549\\u0561\\u0583\\u057d\",\n\"More...\": \"\\u0531\\u057e\\u0565\\u056c\\u056b\\u0576\\u2024\\u2024\\u2024\",\n\"Spellcheck Language\": \"\\u0548\\u0582\\u0572\\u0572\\u0561\\u0563\\u0580\\u0578\\u0582\\u0569\\u0575\\u0561\\u0576 \\u057d\\u057f\\u0578\\u0582\\u0563\\u0574\\u0561\\u0576 \\u056c\\u0565\\u0566\\u0578\\u0582\",\n\"Select...\": \"\\u0538\\u0576\\u057f\\u0580\\u0565\\u056c\\u2024\\u2024\\u2024\",\n\"Preferences\": \"\\u0546\\u0561\\u056d\\u0561\\u057a\\u0561\\u057f\\u057e\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0576\\u0565\\u0580\",\n\"Yes\": \"\\u0531\\u0575\\u0578\",\n\"No\": \"\\u0548\\u0579\",\n\"Keyboard Navigation\": \"\\u054d\\u057f\\u0565\\u0572\\u0576\\u0561\\u0577\\u0561\\u0580\\u056b \\u0546\\u0561\\u057e\\u056b\\u0563\\u0561\\u0581\\u056b\\u0561\",\n\"Version\": \"\\u054f\\u0561\\u0580\\u0562\\u0565\\u0580\\u0561\\u056f\",\n\"Anchor\": \"\\u053d\\u0561\\u0580\\u056b\\u057d\\u056d\",\n\"Special character\": \"\\u0540\\u0561\\u057f\\u0578\\u0582\\u056f \\u057d\\u056b\\u0574\\u057e\\u0578\\u056c\\u0576\\u0565\\u0580\",\n\"Code sample\": \"\\u053f\\u0578\\u0564\\u056b \\u0585\\u0580\\u056b\\u0576\\u0561\\u056f\",\n\"Color\": \"\\u0533\\u0578\\u0582\\u0575\\u0576\",\n\"Emoticons\": \"\\u054d\\u0574\\u0561\\u0575\\u056c\\u056b\\u056f\\u0576\\u0565\\u0580\",\n\"Document properties\": \"\\u0553\\u0561\\u057d\\u057f\\u0561\\u0569\\u0572\\u0569\\u056b \\u0570\\u0561\\u057f\\u056f\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\\u0576\\u0565\\u0580\\u0568\",\n\"Image\": \"\\u0546\\u056f\\u0561\\u0580\",\n\"Insert link\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c \\u0570\\u0572\\u0578\\u0582\\u0574\",\n\"Target\": \"\\u0539\\u056b\\u0580\\u0561\\u056d\",\n\"Link\": \"\\u0540\\u0572\\u0578\\u0582\\u0574\",\n\"Poster\": \"\\u054a\\u0561\\u057d\\u057f\\u0561\\u057c\",\n\"Media\": \"\\u0544\\u0565\\u0564\\u056b\\u0561\",\n\"Print\": \"\\u054f\\u057a\\u0565\\u056c\",\n\"Prev\": \"\\u0546\\u0561\\u056d\\u0578\\u0580\\u0564\",\n\"Find and replace\": \"\\u0553\\u0576\\u057f\\u0580\\u0565\\u056c \\u0587 \\u0583\\u0578\\u056d\\u0561\\u0580\\u056b\\u0576\\u0565\\u056c\",\n\"Whole words\": \"\\u0532\\u0561\\u057c\\u0565\\u0580\\u0568 \\u0561\\u0574\\u0562\\u0578\\u0572\\u057b\\u0578\\u0582\\u0569\\u0575\\u0561\\u0574\\u0562\",\n\"Spellcheck\": \"\\u0548\\u0582\\u0572\\u0572\\u0561\\u0563\\u0580\\u0578\\u0582\\u0569\\u0575\\u0578\\u0582\\u0576\",\n\"Caption\": \"\\u054e\\u0565\\u0580\\u0576\\u0561\\u0563\\u056b\\u0580\",\n\"Insert template\": \"\\u054f\\u0565\\u0572\\u0561\\u0564\\u0580\\u0565\\u056c \\u0571\\u0587\\u0561\\u0576\\u0574\\u0578\\u0582\\u0577\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/id.js",
    "content": "tinymce.addI18n('id',{\n\"Redo\": \"Ulang\",\n\"Undo\": \"Batalkan\",\n\"Cut\": \"Potong\",\n\"Copy\": \"Salin\",\n\"Paste\": \"Rekat\",\n\"Select all\": \"Pilih semua\",\n\"New document\": \"Dokumen baru\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Batal\",\n\"Visual aids\": \"Alat bantu visual\",\n\"Bold\": \"Tebal\",\n\"Italic\": \"Miring\",\n\"Underline\": \"Garis bawah\",\n\"Strikethrough\": \"Coret\",\n\"Superscript\": \"Superskrip\",\n\"Subscript\": \"Subskrip\",\n\"Clear formatting\": \"Kosongkan format\",\n\"Align left\": \"Rata kiri\",\n\"Align center\": \"Rata tengah\",\n\"Align right\": \"Rata kanan\",\n\"Justify\": \"Rata penuh\",\n\"Bullet list\": \"Daftar bersimbol\",\n\"Numbered list\": \"Daftar bernomor\",\n\"Decrease indent\": \"Kurangi inden\",\n\"Increase indent\": \"Tambah inden\",\n\"Close\": \"Tutup\",\n\"Formats\": \"Format\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Browser anda tidak mendukung akses langsung ke papan klip. Silakan gunakan pintasan Ctrl+X\\/C\\/V dari keyboard.\",\n\"Headers\": \"Judul\",\n\"Header 1\": \"Judul 1\",\n\"Header 2\": \"Judul 2\",\n\"Header 3\": \"Judul 3\",\n\"Header 4\": \"Judul 4\",\n\"Header 5\": \"Judul 5\",\n\"Header 6\": \"Judul 6\",\n\"Headings\": \"Kepala\",\n\"Heading 1\": \"Kepala 1\",\n\"Heading 2\": \"Kepala 2\",\n\"Heading 3\": \"Kepala 3\",\n\"Heading 4\": \"Kepala 4\",\n\"Heading 5\": \"Kepala 5\",\n\"Heading 6\": \"Kepala 6\",\n\"Preformatted\": \"Praformat\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Kode\",\n\"Paragraph\": \"Paragraf\",\n\"Blockquote\": \"Kutipan\",\n\"Inline\": \"Baris\",\n\"Blocks\": \"Blok\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Penempelan sekarang dalam modus teks biasa. Konten sekarang akan disisipkan sebagai teks biasa sampai Anda memadamkan pilihan ini.\",\n\"Fonts\": \"Huruf\",\n\"Font Sizes\": \"Ukuran Huruf\",\n\"Class\": \"Kelas\",\n\"Browse for an image\": \"Jelajahi gambar\",\n\"OR\": \"ATAU\",\n\"Drop an image here\": \"Simpan gambar di sini\",\n\"Upload\": \"Unggah\",\n\"Block\": \"Blok\",\n\"Align\": \"Sejajarkan\",\n\"Default\": \"Bawaan\",\n\"Circle\": \"Lingkaran\",\n\"Disc\": \"Cakram\",\n\"Square\": \"Kotak\",\n\"Lower Alpha\": \"Huruf Kecil\",\n\"Lower Greek\": \"Huruf Kecil Yunani\",\n\"Lower Roman\": \"Huruf Kecil Romawi\",\n\"Upper Alpha\": \"Huruf Besar\",\n\"Upper Roman\": \"Huruf Besar Romawi\",\n\"Anchor...\": \"Jangkar..\",\n\"Name\": \"Nama\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id harus dimulai dengan huruf, dan hanya diikuti oleh huruf, angka, koma, titik, titik koma atau garis bawah.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Anda memiliki perubahan yang belum disimpan, yakin ingin beralih ?\",\n\"Restore last draft\": \"Muat kembali draft sebelumnya\",\n\"Special character...\": \"Karakter khusus...\",\n\"Source code\": \"Kode sumber\",\n\"Insert\\/Edit code sample\": \"Tambah\\/Edit contoh kode\",\n\"Language\": \"Bahasa\",\n\"Code sample...\": \"Sampel kode...\",\n\"Color Picker\": \"Pemilih warna\",\n\"R\": \"M\",\n\"G\": \"H\",\n\"B\": \"B\",\n\"Left to right\": \"Kiri ke kanan\",\n\"Right to left\": \"Kanan ke kiri\",\n\"Emoticons...\": \"Emotikon...\",\n\"Metadata and Document Properties\": \"Metadata dan Properti Dokumen\",\n\"Title\": \"Judul\",\n\"Keywords\": \"Kata kunci\",\n\"Description\": \"Deskripsi\",\n\"Robots\": \"Robot\",\n\"Author\": \"Penulis\",\n\"Encoding\": \"Enkoding\",\n\"Fullscreen\": \"Layar penuh\",\n\"Action\": \"Tindakan\",\n\"Shortcut\": \"Pintasan\",\n\"Help\": \"Bantuan\",\n\"Address\": \"Alamat\",\n\"Focus to menubar\": \"Fokus ke menubar\",\n\"Focus to toolbar\": \"Fokus ke toolbar\",\n\"Focus to element path\": \"Fokus ke jalur elemen\",\n\"Focus to contextual toolbar\": \"Fokus ke toolbar kontekstual\",\n\"Insert link (if link plugin activated)\": \"Masukan link (jika plugin diaktifkan)\",\n\"Save (if save plugin activated)\": \"Simpan (jika plugin simpan diaktifkan)\",\n\"Find (if searchreplace plugin activated)\": \"Cari (jika plugin searchplace diaktifkan)\",\n\"Plugins installed ({0}):\": \"Plugin terpasang ({0})\",\n\"Premium plugins:\": \"Plugin premium:\",\n\"Learn more...\": \"Pelajari selengkapnya...\",\n\"You are using {0}\": \"Anda menggunakan {0}\",\n\"Plugins\": \"Plugin\",\n\"Handy Shortcuts\": \"Pintasan Praktis\",\n\"Horizontal line\": \"Garis horisontal\",\n\"Insert\\/edit image\": \"Sisip\\/sunting gambar\",\n\"Image description\": \"Deskripsi gambar\",\n\"Source\": \"Sumber\",\n\"Dimensions\": \"Dimensi\",\n\"Constrain proportions\": \"Samakan proporsi\",\n\"General\": \"Umum\",\n\"Advanced\": \"Lanjutan\",\n\"Style\": \"Gaya\",\n\"Vertical space\": \"Spasi vertikal\",\n\"Horizontal space\": \"Spasi horisontal\",\n\"Border\": \"Batas\",\n\"Insert image\": \"Sisipkan gambar\",\n\"Image...\": \"Gambar...\",\n\"Image list\": \"Daftar gambar\",\n\"Rotate counterclockwise\": \"Putar berlawananjarumjam\",\n\"Rotate clockwise\": \"Putar searahjarumjam\",\n\"Flip vertically\": \"Balik vertikal\",\n\"Flip horizontally\": \"Balik horisontal\",\n\"Edit image\": \"Sunting gambar\",\n\"Image options\": \"Opsi gambar\",\n\"Zoom in\": \"Perbesar\",\n\"Zoom out\": \"Perkecil\",\n\"Crop\": \"Krop\",\n\"Resize\": \"Ubah ukuran\",\n\"Orientation\": \"Orientasi\",\n\"Brightness\": \"Kecerahan\",\n\"Sharpen\": \"Ketajaman\",\n\"Contrast\": \"Kontras\",\n\"Color levels\": \"Tingakt warna\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Kebalikan\",\n\"Apply\": \"Terapkan\",\n\"Back\": \"Kembali\",\n\"Insert date\\/time\": \"Sisipkan tanggal\\/waktu\",\n\"Date\\/time\": \"Tanggal\\/waktu\",\n\"Insert\\/Edit Link\": \"Masukkan\\/Edit Tautan\",\n\"Insert\\/edit link\": \"Sisip\\/sunting tautan\",\n\"Text to display\": \"Teks yang ditampilkan\",\n\"Url\": \"Tautan\",\n\"Open link in...\": \"Buka tautan dalam...\",\n\"Current window\": \"Jendela saat ini\",\n\"None\": \"Tidak ada\",\n\"New window\": \"Jendela baru\",\n\"Remove link\": \"Buang tautan\",\n\"Anchors\": \"Jangkar\",\n\"Link...\": \"Tautan...\",\n\"Paste or type a link\": \"Tempel atau ketik sebuah tautan\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Tautan yang anda masukkan sepertinya adalah alamat email. Apakah Anda ingin menambahkan prefiks mailto: yang dibutuhkan?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Tautan yang anda masukkan sepertinya adalah tautan eksternal. Apakah Anda ingin menambahkan prefiks http:\\/\\/ yang dibutuhkan?\",\n\"Link list\": \"Daftar tautan\",\n\"Insert video\": \"Sisipkan video\",\n\"Insert\\/edit video\": \"Sisip\\/sunting video\",\n\"Insert\\/edit media\": \"Sisip\\/sunting media\",\n\"Alternative source\": \"Sumber alternatif\",\n\"Alternative source URL\": \"URL Sumber alternatif\",\n\"Media poster (Image URL)\": \"Poster media (URL gambar)\",\n\"Paste your embed code below:\": \"Tempel kode yang diembed dibawah ini:\",\n\"Embed\": \"Embed\",\n\"Media...\": \"Media...\",\n\"Nonbreaking space\": \"Spasi\",\n\"Page break\": \"Baris baru\",\n\"Paste as text\": \"Tempel sebagai teks biasa\",\n\"Preview\": \"Pratinjau\",\n\"Print...\": \"Cetak...\",\n\"Save\": \"Simpan\",\n\"Find\": \"Cari\",\n\"Replace with\": \"Ganti dengan\",\n\"Replace\": \"Ganti\",\n\"Replace all\": \"Ganti semua\",\n\"Previous\": \"Sebelumnya\",\n\"Next\": \"Berikutnya\",\n\"Find and replace...\": \"Cari dan ganti...\",\n\"Could not find the specified string.\": \"Tidak dapat menemukan string yang dimaksud.\",\n\"Match case\": \"Samakan besar kecil huruf\",\n\"Find whole words only\": \"Cari hanya kata utuh\",\n\"Spell check\": \"Periksa ejaan\",\n\"Ignore\": \"Abaikan\",\n\"Ignore all\": \"Abaikan semua\",\n\"Finish\": \"Selesai\",\n\"Add to Dictionary\": \"Tambahkan ke kamus\",\n\"Insert table\": \"Sisipkan tabel\",\n\"Table properties\": \"Properti tabel\",\n\"Delete table\": \"Hapus tabel\",\n\"Cell\": \"Sel\",\n\"Row\": \"Baris\",\n\"Column\": \"Kolom\",\n\"Cell properties\": \"Properti sel\",\n\"Merge cells\": \"Gabung sel\",\n\"Split cell\": \"Bagi sel\",\n\"Insert row before\": \"Sisipkan baris sebelum\",\n\"Insert row after\": \"Sisipkan baris setelah\",\n\"Delete row\": \"Hapus baris\",\n\"Row properties\": \"Properti baris\",\n\"Cut row\": \"Penggal baris\",\n\"Copy row\": \"Salin baris\",\n\"Paste row before\": \"Tempel baris sebelum\",\n\"Paste row after\": \"Tempel baris setelah\",\n\"Insert column before\": \"Sisipkan kolom sebelum\",\n\"Insert column after\": \"Sisipkan kolom setelah\",\n\"Delete column\": \"Hapus kolom\",\n\"Cols\": \"Kolom\",\n\"Rows\": \"Baris\",\n\"Width\": \"Lebar\",\n\"Height\": \"Tinggi\",\n\"Cell spacing\": \"Spasi sel \",\n\"Cell padding\": \"Lapisan sel\",\n\"Show caption\": \"Perlihatkan keterangan\",\n\"Left\": \"Kiri\",\n\"Center\": \"Tengah\",\n\"Right\": \"Kanan\",\n\"Cell type\": \"Tipe sel\",\n\"Scope\": \"Skup\",\n\"Alignment\": \"Penjajaran\",\n\"H Align\": \"Rata Samping\",\n\"V Align\": \"Rata Atas\",\n\"Top\": \"Atas\",\n\"Middle\": \"Tengah\",\n\"Bottom\": \"Bawah\",\n\"Header cell\": \"Judul sel\",\n\"Row group\": \"Kelompok baris\",\n\"Column group\": \"Kelompok kolom\",\n\"Row type\": \"Tipe baris\",\n\"Header\": \"Judul\",\n\"Body\": \"Body\",\n\"Footer\": \"Footer\",\n\"Border color\": \"Warna batas\",\n\"Insert template...\": \"Masukkan template...\",\n\"Templates\": \"Templat\",\n\"Template\": \"Templat\",\n\"Text color\": \"Warna teks\",\n\"Background color\": \"Warna latar\",\n\"Custom...\": \"Atur sendiri...\",\n\"Custom color\": \"Warna sendiri\",\n\"No color\": \"Tidak berwarna\",\n\"Remove color\": \"Hapus warna\",\n\"Table of Contents\": \"Daftar Isi\",\n\"Show blocks\": \"Tampilkan blok\",\n\"Show invisible characters\": \"Tampilkan karakter tak tampak\",\n\"Word count\": \"Hitungan kata\",\n\"Count\": \"Hitungan\",\n\"Document\": \"Dokumen\",\n\"Selection\": \"Pemilihan\",\n\"Words\": \"Kata\",\n\"Words: {0}\": \"Kata: {0}\",\n\"{0} words\": \"{0} kata\",\n\"File\": \"Berkas\",\n\"Edit\": \"Sunting\",\n\"Insert\": \"Sisip\",\n\"View\": \"Tampilan\",\n\"Format\": \"Format\",\n\"Table\": \"Tabel\",\n\"Tools\": \"Alat\",\n\"Powered by {0}\": \"Didukung oleh {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Area teks kaya. Tekan ALT-F9 untuk menu. Tekan ALT-F10 untuk toolbar. Tekan ALT-0 untuk bantuan\",\n\"Image title\": \"Judul gambar\",\n\"Border width\": \"Lebar pinggiran\",\n\"Border style\": \"Gaya pinggiran\",\n\"Error\": \"Kesalahan\",\n\"Warn\": \"Peringatkan\",\n\"Valid\": \"Valid\",\n\"To open the popup, press Shift+Enter\": \"Untuk membuka popup, tekan Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Area Teks Kaya. Tekan ALT-0 untuk bantuan.\",\n\"System Font\": \"Huruf Sistem\",\n\"Failed to upload image: {0}\": \"Gagal mengunggah gambar: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Gagal memuat plugin: {0} dari url {1}\",\n\"Failed to load plugin url: {0}\": \"Gagal memuat url plugin: {0}\",\n\"Failed to initialize plugin: {0}\": \"Gagal memulai plugin: {0}\",\n\"example\": \"contoh\",\n\"Search\": \"Cari\",\n\"All\": \"Semua\",\n\"Currency\": \"Mata Uang\",\n\"Text\": \"Teks\",\n\"Quotations\": \"Kutipan\",\n\"Mathematical\": \"Matematis\",\n\"Extended Latin\": \"Latin Diperluas\",\n\"Symbols\": \"Simbol\",\n\"Arrows\": \"Panah\",\n\"User Defined\": \"Ditentukan Pengguna\",\n\"dollar sign\": \"tanda dolar\",\n\"currency sign\": \"tanda mata uang\",\n\"euro-currency sign\": \"tanda mata uang eropa\",\n\"colon sign\": \"tanda titik dua\",\n\"cruzeiro sign\": \"tanda cruzeiro\",\n\"french franc sign\": \"tanda franc prancis\",\n\"lira sign\": \"tanda lira\",\n\"mill sign\": \"tanda mill\",\n\"naira sign\": \"tanda naira\",\n\"peseta sign\": \"tanda peseta\",\n\"rupee sign\": \"tanda rupee\",\n\"won sign\": \"tanda won\",\n\"new sheqel sign\": \"tanda sheqel baru\",\n\"dong sign\": \"tanda dong\",\n\"kip sign\": \"tanda kip\",\n\"tugrik sign\": \"tanda tugrik\",\n\"drachma sign\": \"tanda drachma\",\n\"german penny symbol\": \"simbol penny jerman\",\n\"peso sign\": \"tanda peso\",\n\"guarani sign\": \"tanda guarani\",\n\"austral sign\": \"tanda austral\",\n\"hryvnia sign\": \"tanda hryvnia\",\n\"cedi sign\": \"tanda cedi\",\n\"livre tournois sign\": \"tanda livre tournois\",\n\"spesmilo sign\": \"tanda spesmilo\",\n\"tenge sign\": \"tanda tenge\",\n\"indian rupee sign\": \"tanda rupee india\",\n\"turkish lira sign\": \"tanda lira turki\",\n\"nordic mark sign\": \"tanda mark nordik\",\n\"manat sign\": \"tanda manat\",\n\"ruble sign\": \"tanda ruble\",\n\"yen character\": \"karakter yen\",\n\"yuan character\": \"karakter yuan\",\n\"yuan character, in hong kong and taiwan\": \"karakter yuan, di hong kong dan taiwan\",\n\"yen\\/yuan character variant one\": \"varian satu karakter yen\\/yuan\",\n\"Loading emoticons...\": \"Memuat emotikon...\",\n\"Could not load emoticons\": \"Tidak dapat memuat emotikon\",\n\"People\": \"Orang\",\n\"Animals and Nature\": \"Hewan dan Alam\",\n\"Food and Drink\": \"Makanan dan Minuman\",\n\"Activity\": \"Aktivitas\",\n\"Travel and Places\": \"Perjalanan dan Lokasi\",\n\"Objects\": \"Objek\",\n\"Flags\": \"Bendera\",\n\"Characters\": \"Karakter\",\n\"Characters (no spaces)\": \"Karakter (tanpa spasi)\",\n\"{0} characters\": \"{0} karakter\",\n\"Error: Form submit field collision.\": \"Kesalahan: Benturan bidang pengiriman bentuk.\",\n\"Error: No form element found.\": \"Kesalahan: tidak ditemukan elemen bentuk.\",\n\"Update\": \"Perbarui\",\n\"Color swatch\": \"Contoh warna\",\n\"Turquoise\": \"Turquoise\",\n\"Green\": \"Hijau\",\n\"Blue\": \"Biru\",\n\"Purple\": \"Ungu\",\n\"Navy Blue\": \"Biru Navy\",\n\"Dark Turquoise\": \"Turquoise Gelap\",\n\"Dark Green\": \"Hijau Gelap\",\n\"Medium Blue\": \"Biru Medium\",\n\"Medium Purple\": \"Ungu Medium\",\n\"Midnight Blue\": \"Biru Midnight\",\n\"Yellow\": \"Kuning\",\n\"Orange\": \"Jingga\",\n\"Red\": \"Merah\",\n\"Light Gray\": \"Abu Muda\",\n\"Gray\": \"Abu-abu\",\n\"Dark Yellow\": \"Kuning Gelap\",\n\"Dark Orange\": \"Jingga Gelap\",\n\"Dark Red\": \"Merah Gelap\",\n\"Medium Gray\": \"Abu Medium\",\n\"Dark Gray\": \"Abu Gelap\",\n\"Light Green\": \"Hijau Muda\",\n\"Light Yellow\": \"Kuning Muda\",\n\"Light Red\": \"Merah Muda\",\n\"Light Purple\": \"Ungu Muda\",\n\"Light Blue\": \"Biru Muda\",\n\"Dark Purple\": \"Ungu Gelap\",\n\"Dark Blue\": \"Biru Gelap\",\n\"Black\": \"Hitam\",\n\"White\": \"Putih\",\n\"Switch to or from fullscreen mode\": \"Alihkan ke atau dari mode layar penuh\",\n\"Open help dialog\": \"Buka dialog bantuan\",\n\"history\": \"riwayat\",\n\"styles\": \"gaya\",\n\"formatting\": \"pemformatan\",\n\"alignment\": \"penyejajaran\",\n\"indentation\": \"indentasi\",\n\"permanent pen\": \"pena permanen\",\n\"comments\": \"komentar\",\n\"Format Painter\": \"Format Pelukis\",\n\"Insert\\/edit iframe\": \"Masukkan\\/edit iframe\",\n\"Capitalization\": \"Kapitalisasi\",\n\"lowercase\": \"huruf kecil\",\n\"UPPERCASE\": \"HURUF BESAR\",\n\"Title Case\": \"Huruf Judul\",\n\"Permanent Pen Properties\": \"Properti Pena Permanen\",\n\"Permanent pen properties...\": \"Properti pena permanen...\",\n\"Font\": \"Huruf\",\n\"Size\": \"Ukuran\",\n\"More...\": \"Lainnya...\",\n\"Spellcheck Language\": \"Periksa Ejaan Bahasa\",\n\"Select...\": \"Pilih...\",\n\"Preferences\": \"Preferensi\",\n\"Yes\": \"Ya\",\n\"No\": \"Tidak\",\n\"Keyboard Navigation\": \"Navigasi Keyboard\",\n\"Version\": \"Versi\",\n\"Anchor\": \"Jangkar\",\n\"Special character\": \"Spesial karakter\",\n\"Code sample\": \"Contoh kode\",\n\"Color\": \"Warna\",\n\"Emoticons\": \"Emotikon\",\n\"Document properties\": \"Properti dokumwn\",\n\"Image\": \"Gambar\",\n\"Insert link\": \"Sisipkan tautan\",\n\"Target\": \"Jendela tujuan\",\n\"Link\": \"Tautan\",\n\"Poster\": \"Penulis\",\n\"Media\": \"Media\",\n\"Print\": \"Cetak\",\n\"Prev\": \"Sebelumnya\",\n\"Find and replace\": \"Cari dan ganti\",\n\"Whole words\": \"Semua kata\",\n\"Spellcheck\": \"Periksa ejaan\",\n\"Caption\": \"Caption\",\n\"Insert template\": \"Sisipkan templat\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/it.js",
    "content": "tinymce.addI18n('it',{\n\"Redo\": \"Ripristina\",\n\"Undo\": \"Annulla\",\n\"Cut\": \"Taglia\",\n\"Copy\": \"Copia\",\n\"Paste\": \"Incolla\",\n\"Select all\": \"Seleziona tutto\",\n\"New document\": \"Nuovo documento\",\n\"Ok\": \"OK\",\n\"Cancel\": \"Annulla\",\n\"Visual aids\": \"Aiuti visivi\",\n\"Bold\": \"Grassetto\",\n\"Italic\": \"Corsivo\",\n\"Underline\": \"Sottolineato\",\n\"Strikethrough\": \"Barrato\",\n\"Superscript\": \"Apice\",\n\"Subscript\": \"Pedice\",\n\"Clear formatting\": \"Cancella la formattazione\",\n\"Align left\": \"Allinea a sinistra\",\n\"Align center\": \"Allinea al centro\",\n\"Align right\": \"Allinea a destra\",\n\"Justify\": \"Giustifica\",\n\"Bullet list\": \"Elenco puntato\",\n\"Numbered list\": \"Elenco numerato\",\n\"Decrease indent\": \"Riduci rientro\",\n\"Increase indent\": \"Aumenta rientro\",\n\"Close\": \"Chiudi\",\n\"Formats\": \"Formati\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Il browser non supporta l'accesso diretto alla cartella degli appunti. Usare i tasti di scelta rapida Ctrl+X\\/C\\/V.\",\n\"Headers\": \"Intestazioni\",\n\"Header 1\": \"Intestazione 1\",\n\"Header 2\": \"Intestazione 2\",\n\"Header 3\": \"Intestazione 3\",\n\"Header 4\": \"Intestazione 4\",\n\"Header 5\": \"Intestazione 5\",\n\"Header 6\": \"Intestazione 6\",\n\"Headings\": \"Titoli\",\n\"Heading 1\": \"Titolo 1\",\n\"Heading 2\": \"Titolo 2\",\n\"Heading 3\": \"Titolo 3\",\n\"Heading 4\": \"Titolo 4\",\n\"Heading 5\": \"Titolo 5\",\n\"Heading 6\": \"Titolo 6\",\n\"Preformatted\": \"Preformattato\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Codice\",\n\"Paragraph\": \"Paragrafo\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"In linea\",\n\"Blocks\": \"Blocchi\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Incolla \\u00e8 in modalit\\u00e0 testo normale. I contenuti sono incollati come testo normale se non disattivi l'opzione.\",\n\"Fonts\": \"Caratteri\",\n\"Font Sizes\": \"Dimensioni caratteri\",\n\"Class\": \"Classe\",\n\"Browse for an image\": \"Cerca un'immagine\",\n\"OR\": \"OPPURE\",\n\"Drop an image here\": \"Rilasciare un'immagine qui\",\n\"Upload\": \"Carica\",\n\"Block\": \"Blocco\",\n\"Align\": \"Allinea\",\n\"Default\": \"Default\",\n\"Circle\": \"Cerchio\",\n\"Disc\": \"Disco\",\n\"Square\": \"Quadrato\",\n\"Lower Alpha\": \"Alpha Minore\",\n\"Lower Greek\": \"Greek Minore\",\n\"Lower Roman\": \"Roman Minore\",\n\"Upper Alpha\": \"Alpha Superiore\",\n\"Upper Roman\": \"Roman Superiore\",\n\"Anchor...\": \"Ancoraggio...\",\n\"Name\": \"Nome\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"L'id dovrebbe cominciare con una lettera, seguito solo da lettere, numeri, linee, punti, virgole.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Non hai salvato delle modifiche, sei sicuro di andartene?\",\n\"Restore last draft\": \"Ripristina l'ultima bozza.\",\n\"Special character...\": \"Carattere speciale...\",\n\"Source code\": \"Codice Sorgente\",\n\"Insert\\/Edit code sample\": \"Inserisci\\/Modifica esempio di codice\",\n\"Language\": \"Lingua\",\n\"Code sample...\": \"Esempio di codice...\",\n\"Color Picker\": \"Selezione colori\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Da Sinistra a Destra\",\n\"Right to left\": \"Da Destra a Sinistra\",\n\"Emoticons...\": \"Emoticon...\",\n\"Metadata and Document Properties\": \"Metadata e propriet\\u00e0 del documento\",\n\"Title\": \"Titolo\",\n\"Keywords\": \"Parola Chiave\",\n\"Description\": \"Descrizione\",\n\"Robots\": \"Robot\",\n\"Author\": \"Autore\",\n\"Encoding\": \"Codifica\",\n\"Fullscreen\": \"Schermo Intero\",\n\"Action\": \"Azione\",\n\"Shortcut\": \"Scorciatoia\",\n\"Help\": \"Aiuto\",\n\"Address\": \"Indirizzo\",\n\"Focus to menubar\": \"Focus sulla barra del menu\",\n\"Focus to toolbar\": \"Focus sulla barra degli strumenti\",\n\"Focus to element path\": \"Focus sul percorso dell'elemento\",\n\"Focus to contextual toolbar\": \"Focus sulla barra degli strumenti contestuale\",\n\"Insert link (if link plugin activated)\": \"Inserisci link (se il plugin link \\u00e8 attivato)\",\n\"Save (if save plugin activated)\": \"Salva (se il plugin save \\u00e8 attivato)\",\n\"Find (if searchreplace plugin activated)\": \"Trova (se il plugin searchreplace \\u00e8 attivato)\",\n\"Plugins installed ({0}):\": \"Plugin installati ({0}):\",\n\"Premium plugins:\": \"Plugin Premium:\",\n\"Learn more...\": \"Per saperne di pi\\u00f9...\",\n\"You are using {0}\": \"Stai usando {0}\",\n\"Plugins\": \"Plugin\",\n\"Handy Shortcuts\": \"Scorciatoia pratica\",\n\"Horizontal line\": \"Linea Orizzontale\",\n\"Insert\\/edit image\": \"Aggiungi\\/Modifica Immagine\",\n\"Image description\": \"Descrizione Immagine\",\n\"Source\": \"Fonte\",\n\"Dimensions\": \"Dimenzioni\",\n\"Constrain proportions\": \"Mantieni Proporzioni\",\n\"General\": \"Generale\",\n\"Advanced\": \"Avanzato\",\n\"Style\": \"Stile\",\n\"Vertical space\": \"Spazio Verticale\",\n\"Horizontal space\": \"Spazio Orizzontale\",\n\"Border\": \"Bordo\",\n\"Insert image\": \"Inserisci immagine\",\n\"Image...\": \"Immagine...\",\n\"Image list\": \"Elenco immagini\",\n\"Rotate counterclockwise\": \"Ruota in senso antiorario\",\n\"Rotate clockwise\": \"Ruota in senso orario\",\n\"Flip vertically\": \"Rifletti verticalmente\",\n\"Flip horizontally\": \"Rifletti orizzontalmente\",\n\"Edit image\": \"Modifica immagine\",\n\"Image options\": \"Opzioni immagine\",\n\"Zoom in\": \"Ingrandisci\",\n\"Zoom out\": \"Rimpicciolisci\",\n\"Crop\": \"Taglia\",\n\"Resize\": \"Ridimensiona\",\n\"Orientation\": \"Orientamento\",\n\"Brightness\": \"Luminosit\\u00e0\",\n\"Sharpen\": \"Contrasta\",\n\"Contrast\": \"Contrasto\",\n\"Color levels\": \"Livelli colore\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Inverti\",\n\"Apply\": \"Applica\",\n\"Back\": \"Indietro\",\n\"Insert date\\/time\": \"Inserisci Data\\/Ora\",\n\"Date\\/time\": \"Data\\/Ora\",\n\"Insert\\/Edit Link\": \"Inserisci\\/modifica collegamento\",\n\"Insert\\/edit link\": \"Inserisci\\/Modifica Link\",\n\"Text to display\": \"Testo da Visualizzare\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Apri collegamento in...\",\n\"Current window\": \"Finestra corrente\",\n\"None\": \"No\",\n\"New window\": \"Nuova Finestra\",\n\"Remove link\": \"Rimuovi link\",\n\"Anchors\": \"Anchors\",\n\"Link...\": \"Collegamento...\",\n\"Paste or type a link\": \"Incolla o digita un collegamento\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"L'URL inserito sembra essere un indirizzo email. Vuoi aggiungere il prefisso necessario mailto:?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"L'URL inserito sembra essere un collegamento esterno. Vuoi aggiungere il prefisso necessario http:\\/\\/?\",\n\"Link list\": \"Elenco link\",\n\"Insert video\": \"Inserisci Video\",\n\"Insert\\/edit video\": \"Inserisci\\/Modifica Video\",\n\"Insert\\/edit media\": \"Inserisci\\/Modifica Media\",\n\"Alternative source\": \"Alternativo\",\n\"Alternative source URL\": \"URL sorgente alternativa\",\n\"Media poster (Image URL)\": \"Poster dell'oggetto multimediale (URL dell'immagine)\",\n\"Paste your embed code below:\": \"Incolla il codice d'incorporamento qui:\",\n\"Embed\": \"Incorporare\",\n\"Media...\": \"Oggetto multimediale...\",\n\"Nonbreaking space\": \"Spazio unificatore\",\n\"Page break\": \"Interruzione di pagina\",\n\"Paste as text\": \"incolla come testo\",\n\"Preview\": \"Anteprima\",\n\"Print...\": \"Stampa...\",\n\"Save\": \"Salva\",\n\"Find\": \"Trova\",\n\"Replace with\": \"Sostituisci Con\",\n\"Replace\": \"Sostituisci\",\n\"Replace all\": \"Sostituisci Tutto\",\n\"Previous\": \"Indietro\",\n\"Next\": \"Successivo\",\n\"Find and replace...\": \"Trova e sostituisci...\",\n\"Could not find the specified string.\": \"Impossibile trovare la parola specifica.\",\n\"Match case\": \"Maiuscole\\/Minuscole \",\n\"Find whole words only\": \"Trova solo parole intere\",\n\"Spell check\": \"Controllo ortografia\",\n\"Ignore\": \"Ignora\",\n\"Ignore all\": \"Ignora Tutto\",\n\"Finish\": \"Termina\",\n\"Add to Dictionary\": \"Aggiungi al Dizionario\",\n\"Insert table\": \"Inserisci Tabella\",\n\"Table properties\": \"Propiet\\u00e0 della Tabella\",\n\"Delete table\": \"Cancella Tabella\",\n\"Cell\": \"Cella\",\n\"Row\": \"Riga\",\n\"Column\": \"Colonna\",\n\"Cell properties\": \"Propiet\\u00e0 della Cella\",\n\"Merge cells\": \"Unisci Cella\",\n\"Split cell\": \"Dividi Cella\",\n\"Insert row before\": \"Inserisci una Riga Prima\",\n\"Insert row after\": \"Inserisci una Riga Dopo\",\n\"Delete row\": \"Cancella Riga\",\n\"Row properties\": \"Propriet\\u00e0 della Riga\",\n\"Cut row\": \"Taglia Riga\",\n\"Copy row\": \"Copia Riga\",\n\"Paste row before\": \"Incolla una Riga Prima\",\n\"Paste row after\": \"Incolla una Riga Dopo\",\n\"Insert column before\": \"Inserisci una Colonna Prima\",\n\"Insert column after\": \"Inserisci una Colonna Dopo\",\n\"Delete column\": \"Cancella Colonna\",\n\"Cols\": \"Colonne\",\n\"Rows\": \"Righe\",\n\"Width\": \"Larghezza\",\n\"Height\": \"Altezza\",\n\"Cell spacing\": \"Spaziatura della Cella\",\n\"Cell padding\": \"Padding della Cella\",\n\"Show caption\": \"Mostra didascalia\",\n\"Left\": \"Sinistra\",\n\"Center\": \"Centro\",\n\"Right\": \"Destra\",\n\"Cell type\": \"Tipo di Cella\",\n\"Scope\": \"Campo\",\n\"Alignment\": \"Allineamento\",\n\"H Align\": \"Allineamento H\",\n\"V Align\": \"Allineamento V\",\n\"Top\": \"In alto\",\n\"Middle\": \"In mezzo\",\n\"Bottom\": \"In fondo\",\n\"Header cell\": \"cella d'intestazione\",\n\"Row group\": \"Gruppo di Righe\",\n\"Column group\": \"Gruppo di Colonne\",\n\"Row type\": \"Tipo di Riga\",\n\"Header\": \"Header\",\n\"Body\": \"Body\",\n\"Footer\": \"Footer\",\n\"Border color\": \"Colore bordo\",\n\"Insert template...\": \"Inserisci modello...\",\n\"Templates\": \"Template\",\n\"Template\": \"Modello\",\n\"Text color\": \"Colore Testo\",\n\"Background color\": \"Colore Background\",\n\"Custom...\": \"Personalizzato...\",\n\"Custom color\": \"Colore personalizzato\",\n\"No color\": \"Nessun colore\",\n\"Remove color\": \"Rimuovi colore\",\n\"Table of Contents\": \"Tabella dei contenuti\",\n\"Show blocks\": \"Mostra Blocchi\",\n\"Show invisible characters\": \"Mostra Caratteri Invisibili\",\n\"Word count\": \"Conteggio parole\",\n\"Count\": \"Conteggio\",\n\"Document\": \"Documento\",\n\"Selection\": \"Selezione\",\n\"Words\": \"Parole\",\n\"Words: {0}\": \"Parole: {0}\",\n\"{0} words\": \"{0} parole\",\n\"File\": \"File\",\n\"Edit\": \"Modifica\",\n\"Insert\": \"Inserisci\",\n\"View\": \"Visualiza\",\n\"Format\": \"Formato\",\n\"Table\": \"Tabella\",\n\"Tools\": \"Strumenti\",\n\"Powered by {0}\": \"Fornito da {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Rich Text Area. Premi ALT-F9 per il men\\u00f9. Premi ALT-F10 per la barra degli strumenti. Premi ALT-0 per l'aiuto.\",\n\"Image title\": \"Titolo immagine\",\n\"Border width\": \"Larghezza del bordo\",\n\"Border style\": \"Stile del bordo\",\n\"Error\": \"Errore\",\n\"Warn\": \"Avviso\",\n\"Valid\": \"Valido\",\n\"To open the popup, press Shift+Enter\": \"Per aprire il popup, premere Shift+Invio\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Area di testo RTF. Premere ALT-0 per la guida.\",\n\"System Font\": \"Carattere di sistema\",\n\"Failed to upload image: {0}\": \"Caricamento immagine fallito: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Caricamento plugin fallito: {0} dall'URL {1}\",\n\"Failed to load plugin url: {0}\": \"Caricamento URL plugin fallito: {0}\",\n\"Failed to initialize plugin: {0}\": \"Inizializzazione plugin fallita: {0}\",\n\"example\": \"esempio\",\n\"Search\": \"Cerca\",\n\"All\": \"Tutto\",\n\"Currency\": \"Valuta\",\n\"Text\": \"Testo\",\n\"Quotations\": \"Citazioni\",\n\"Mathematical\": \"Caratteri matematici\",\n\"Extended Latin\": \"Latino esteso\",\n\"Symbols\": \"Simboli\",\n\"Arrows\": \"Frecce\",\n\"User Defined\": \"Definito dall'utente\",\n\"dollar sign\": \"simbolo del dollaro\",\n\"currency sign\": \"simbolo di valuta\",\n\"euro-currency sign\": \"simbolo dell'euro\",\n\"colon sign\": \"simbolo del col\\u00f3n\",\n\"cruzeiro sign\": \"simbolo del cruzeiro\",\n\"french franc sign\": \"simbolo del franco francese\",\n\"lira sign\": \"simbolo della lira\",\n\"mill sign\": \"simbolo del mill\",\n\"naira sign\": \"simbolo della naira\",\n\"peseta sign\": \"simbolo della peseta\",\n\"rupee sign\": \"simbolo della rup\\u00eca\",\n\"won sign\": \"simbolo del won\",\n\"new sheqel sign\": \"simbolo del nuovo shekel\",\n\"dong sign\": \"simbolo del dong\",\n\"kip sign\": \"simbolo del kip\",\n\"tugrik sign\": \"simbolo del tugrik\",\n\"drachma sign\": \"simbolo della dracma\",\n\"german penny symbol\": \"simbolo del pfennig tedesco\",\n\"peso sign\": \"simbolo del peso\",\n\"guarani sign\": \"simbolo del guaran\\u00ec\",\n\"austral sign\": \"simbolo dell'austral\",\n\"hryvnia sign\": \"simbolo della hryvnia\",\n\"cedi sign\": \"simbolo del cedi\",\n\"livre tournois sign\": \"simbolo della lira di Tours\",\n\"spesmilo sign\": \"simbolo dello spesmilo\",\n\"tenge sign\": \"simbolo del tenge\",\n\"indian rupee sign\": \"simbolo della rup\\u00eca indiana\",\n\"turkish lira sign\": \"simbolo della lira turca\",\n\"nordic mark sign\": \"simbolo del marco nordico\",\n\"manat sign\": \"simbolo del manat\",\n\"ruble sign\": \"simbolo del rublo\",\n\"yen character\": \"simbolo dello yen\",\n\"yuan character\": \"simbolo dello yuan\",\n\"yuan character, in hong kong and taiwan\": \"simbolo dello yuan, Hong Kong e Taiwan\",\n\"yen\\/yuan character variant one\": \"simbolo yen\\/yuan variante uno\",\n\"Loading emoticons...\": \"Caricamento emoticon in corso\",\n\"Could not load emoticons\": \"Impossibile caricare emoticon\",\n\"People\": \"Persone\",\n\"Animals and Nature\": \"Animali e natura\",\n\"Food and Drink\": \"Cibi e bevande\",\n\"Activity\": \"Attivit\\u00e0\",\n\"Travel and Places\": \"Viaggi e luoghi\",\n\"Objects\": \"Oggetti\",\n\"Flags\": \"Bandiere\",\n\"Characters\": \"Caratteri\",\n\"Characters (no spaces)\": \"Caratteri (senza spazi)\",\n\"{0} characters\": \"{0} caratteri\",\n\"Error: Form submit field collision.\": \"Errore: Conflitto di campi nel modulo inviato.\",\n\"Error: No form element found.\": \"Errore: Nessun elemento di modulo trovato.\",\n\"Update\": \"Aggiorna\",\n\"Color swatch\": \"Campione di colore\",\n\"Turquoise\": \"Turchese\",\n\"Green\": \"Verde\",\n\"Blue\": \"Blu\",\n\"Purple\": \"Viola\",\n\"Navy Blue\": \"Blu scuro\",\n\"Dark Turquoise\": \"Turchese scuro\",\n\"Dark Green\": \"Verde scuro\",\n\"Medium Blue\": \"Blu medio\",\n\"Medium Purple\": \"Viola medio\",\n\"Midnight Blue\": \"Blu notte\",\n\"Yellow\": \"Giallo\",\n\"Orange\": \"Arancio\",\n\"Red\": \"Rosso\",\n\"Light Gray\": \"Grigio chiaro\",\n\"Gray\": \"Grigio\",\n\"Dark Yellow\": \"Giallo scuro\",\n\"Dark Orange\": \"Arancio scuro\",\n\"Dark Red\": \"Rosso scuro\",\n\"Medium Gray\": \"Grigio medio\",\n\"Dark Gray\": \"Grigio scuro\",\n\"Light Green\": \"Verde chiaro\",\n\"Light Yellow\": \"Giallo chiaro\",\n\"Light Red\": \"Rosso chiaro\",\n\"Light Purple\": \"Viola chiaro\",\n\"Light Blue\": \"Azzurro\",\n\"Dark Purple\": \"Viola scuro\",\n\"Dark Blue\": \"Blu scuro\",\n\"Black\": \"Nero\",\n\"White\": \"Bianco\",\n\"Switch to or from fullscreen mode\": \"Attiva\\/disattiva la modalit\\u00e0 schermo intero\",\n\"Open help dialog\": \"Apri la finestra di aiuto\",\n\"history\": \"cronologia\",\n\"styles\": \"stili\",\n\"formatting\": \"formattazione\",\n\"alignment\": \"allineamento\",\n\"indentation\": \"indentazione\",\n\"permanent pen\": \"penna indelebile\",\n\"comments\": \"commenti\",\n\"Format Painter\": \"Copia formattazione\",\n\"Insert\\/edit iframe\": \"Inserisci\\/modifica iframe\",\n\"Capitalization\": \"Maiuscole\\/minuscole\",\n\"lowercase\": \"minuscole\",\n\"UPPERCASE\": \"MAIUSCOLE\",\n\"Title Case\": \"Iniziali Maiuscole\",\n\"Permanent Pen Properties\": \"Propriet\\u00e0 penna indelebile\",\n\"Permanent pen properties...\": \"Propriet\\u00e0 penna indelebile...\",\n\"Font\": \"Carattere\",\n\"Size\": \"Dimensione carattere\",\n\"More...\": \"Altro\\u2026\",\n\"Spellcheck Language\": \"Lingua controllo ortografico\",\n\"Select...\": \"Seleziona...\",\n\"Preferences\": \"Preferenze\",\n\"Yes\": \"S\\u00ec\",\n\"No\": \"No\",\n\"Keyboard Navigation\": \"Navigazione tramite tastiera\",\n\"Version\": \"Versione\",\n\"Anchor\": \"Fissa\",\n\"Special character\": \"Carattere Speciale\",\n\"Code sample\": \"Esempio di codice\",\n\"Color\": \"Colore\",\n\"Emoticons\": \"Emoction\",\n\"Document properties\": \"Propriet\\u00e0 Documento\",\n\"Image\": \"Immagine\",\n\"Insert link\": \"Inserisci il Link\",\n\"Target\": \"Target\",\n\"Link\": \"Collegamento\",\n\"Poster\": \"Anteprima\",\n\"Media\": \"Media\",\n\"Print\": \"Stampa\",\n\"Prev\": \"Precedente\",\n\"Find and replace\": \"Trova e Sostituisci\",\n\"Whole words\": \"Parole Sbagliate\",\n\"Spellcheck\": \"Controllo ortografico\",\n\"Caption\": \"Didascalia\",\n\"Insert template\": \"Inserisci Template\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/it_IT.js",
    "content": "tinymce.addI18n('it_IT',{\n\"Redo\": \"Ripristina\",\n\"Undo\": \"Annulla\",\n\"Cut\": \"Taglia\",\n\"Copy\": \"Copia\",\n\"Paste\": \"Incolla\",\n\"Select all\": \"Seleziona tutto\",\n\"New document\": \"Nuovo documento\",\n\"Ok\": \"OK\",\n\"Cancel\": \"Annulla\",\n\"Visual aids\": \"Aiuti visivi\",\n\"Bold\": \"Grassetto\",\n\"Italic\": \"Corsivo\",\n\"Underline\": \"Sottolineato\",\n\"Strikethrough\": \"Barrato\",\n\"Superscript\": \"Apice\",\n\"Subscript\": \"Pedice\",\n\"Clear formatting\": \"Cancella la formattazione\",\n\"Align left\": \"Allinea a sinistra\",\n\"Align center\": \"Allinea al centro\",\n\"Align right\": \"Allinea a destra\",\n\"Justify\": \"Giustifica\",\n\"Bullet list\": \"Elenco puntato\",\n\"Numbered list\": \"Elenco numerato\",\n\"Decrease indent\": \"Riduci rientro\",\n\"Increase indent\": \"Aumenta rientro\",\n\"Close\": \"Chiudi\",\n\"Formats\": \"Formati\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Il browser non supporta l'accesso diretto alla cartella degli appunti. Usare i tasti di scelta rapida Ctrl+X\\/C\\/V.\",\n\"Headers\": \"Intestazioni\",\n\"Header 1\": \"Intestazione 1\",\n\"Header 2\": \"Intestazione 2\",\n\"Header 3\": \"Intestazione 3\",\n\"Header 4\": \"Intestazione 4\",\n\"Header 5\": \"Intestazione 5\",\n\"Header 6\": \"Intestazione 6\",\n\"Headings\": \"Titoli\",\n\"Heading 1\": \"Titolo 1\",\n\"Heading 2\": \"Titolo 2\",\n\"Heading 3\": \"Titolo 3\",\n\"Heading 4\": \"Titolo 4\",\n\"Heading 5\": \"Titolo 5\",\n\"Heading 6\": \"Titolo 6\",\n\"Preformatted\": \"Preformattato\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Codice\",\n\"Paragraph\": \"Paragrafo\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"In linea\",\n\"Blocks\": \"Blocchi\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Incolla \\u00e8 in modalit\\u00e0 testo normale. I contenuti saranno incollati come testo normale se non viene disattivata questa opzione.\",\n\"Fonts\": \"Caratteri\",\n\"Font Sizes\": \"Dimensioni caratteri\",\n\"Class\": \"Classe\",\n\"Browse for an image\": \"Cerca un'immagine\",\n\"OR\": \"OPPURE\",\n\"Drop an image here\": \"Rilasciare un'immagine qui\",\n\"Upload\": \"Carica\",\n\"Block\": \"Blocco\",\n\"Align\": \"Allinea\",\n\"Default\": \"Predefinito\",\n\"Circle\": \"Circolo\",\n\"Disc\": \"Disco\",\n\"Square\": \"Quadrato\",\n\"Lower Alpha\": \"Alfabetico minuscolo\",\n\"Lower Greek\": \"Greco minuscolo\",\n\"Lower Roman\": \"Romano minuscolo\",\n\"Upper Alpha\": \"Alfabetico maiuscolo\",\n\"Upper Roman\": \"Romano maiuscolo\",\n\"Anchor...\": \"Ancoraggio...\",\n\"Name\": \"Nome\",\n\"Id\": \"ID\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"L'ID dovrebbe cominciare con una lettera, seguita unicamente da lettere, numeri, linee, punti, due punti o caratteri di sottolineatura.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Ci sono modifiche non salvate, si \\u00e8 sicuro di volere uscire?\",\n\"Restore last draft\": \"Ripristina l'ultima bozza\",\n\"Special characters...\": \"Caratteri speciali...\",\n\"Source code\": \"Codice sorgente\",\n\"Insert\\/Edit code sample\": \"Inserisci\\/modifica esempio di codice\",\n\"Language\": \"Lingua\",\n\"Code sample...\": \"Esempio di codice...\",\n\"Color Picker\": \"Selezione colori\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Da sinistra a destra\",\n\"Right to left\": \"Da destra a sinistra\",\n\"Emoticons...\": \"Emoticon...\",\n\"Metadata and Document Properties\": \"Metadata e propriet\\u00e0 del documento\",\n\"Title\": \"Titolo\",\n\"Keywords\": \"Parole chiave\",\n\"Description\": \"Descrizione\",\n\"Robots\": \"Robot\",\n\"Author\": \"Autore\",\n\"Encoding\": \"Codifica\",\n\"Fullscreen\": \"A tutto schermo\",\n\"Action\": \"Azione\",\n\"Shortcut\": \"Collegamento\",\n\"Help\": \"Guida\",\n\"Address\": \"Indirizzo\",\n\"Focus to menubar\": \"Imposta stato attivo per la barra dei menu\",\n\"Focus to toolbar\": \"Imposta stato attivo per la barra degli strumenti\",\n\"Focus to element path\": \"Imposta stato attivo per il percorso dell'elemento\",\n\"Focus to contextual toolbar\": \"Imposta stato attivo per la barra degli strumenti contestuale\",\n\"Insert link (if link plugin activated)\": \"Inserisci un collegamento (se \\u00e8 attivato l'apposito plugin)\",\n\"Save (if save plugin activated)\": \"Salva (se \\u00e8 attivato l'apposito plugin)\",\n\"Find (if searchreplace plugin activated)\": \"Trova (se \\u00e8 attivato l'apposito plugin)\",\n\"Plugins installed ({0}):\": \"Plugin installati ({0}):\",\n\"Premium plugins:\": \"Plugin Premium:\",\n\"Learn more...\": \"Maggiori informazioni...\",\n\"You are using {0}\": \"Si sta utilizzando {0}\",\n\"Plugins\": \"Plugin\",\n\"Handy Shortcuts\": \"Scorciatoie utili\",\n\"Horizontal line\": \"Linea orizzontale\",\n\"Insert\\/edit image\": \"Inserisci\\/modifica immagine\",\n\"Image description\": \"Descrizione immagine\",\n\"Source\": \"Fonte\",\n\"Dimensions\": \"Dimensioni\",\n\"Constrain proportions\": \"Mantieni proporzioni\",\n\"General\": \"Generali\",\n\"Advanced\": \"Avanzate\",\n\"Style\": \"Stile\",\n\"Vertical space\": \"Spazio verticale\",\n\"Horizontal space\": \"Spazio orizzontale\",\n\"Border\": \"Bordo\",\n\"Insert image\": \"Inserisci immagine\",\n\"Image...\": \"Immagine...\",\n\"Image list\": \"Elenco immagini\",\n\"Rotate counterclockwise\": \"Ruota in senso antiorario\",\n\"Rotate clockwise\": \"Ruota in senso orario\",\n\"Flip vertically\": \"Rifletti verticalmente\",\n\"Flip horizontally\": \"Rifletti orizzontalmente\",\n\"Edit image\": \"Modifica immagine\",\n\"Image options\": \"Opzioni immagine\",\n\"Zoom in\": \"Ingrandisci\",\n\"Zoom out\": \"Zoom indietro\",\n\"Crop\": \"Ritaglia\",\n\"Resize\": \"Ridimensiona\",\n\"Orientation\": \"Orientamento\",\n\"Brightness\": \"Luminosit\\u00e0\",\n\"Sharpen\": \"Nitidezza\",\n\"Contrast\": \"Contrasto\",\n\"Color levels\": \"Livelli di colore\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Inverti\",\n\"Apply\": \"Applica\",\n\"Back\": \"Indietro\",\n\"Insert date\\/time\": \"Inserisci data\\/ora\",\n\"Date\\/time\": \"Data\\/ora\",\n\"Insert\\/Edit Link\": \"Inserisci\\/modifica collegamento\",\n\"Insert\\/edit link\": \"Inserisci\\/modifica collegamento\",\n\"Text to display\": \"Testo da visualizzare\",\n\"Url\": \"URL\",\n\"Open link in...\": \"Apri collegamento in...\",\n\"Current window\": \"Finestra corrente\",\n\"None\": \"Nessuno\",\n\"New window\": \"Nuova finestra\",\n\"Remove link\": \"Rimuovi collegamento\",\n\"Anchors\": \"Ancoraggi\",\n\"Link...\": \"Collegamento...\",\n\"Paste or type a link\": \"Incolla o digita un collegamento\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"L'URL inserito sembra essere un indirizzo email. Si vuole aggiungere il necessario prefisso mailto:?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"L'URL inserito sembra essere un collegamento esterno. Si vuole aggiungere il necessario prefisso http:\\/\\/?\",\n\"Link list\": \"Elenco collegamenti\",\n\"Insert video\": \"Inserisci video\",\n\"Insert\\/edit video\": \"Inserisci\\/modifica video\",\n\"Insert\\/edit media\": \"Inserisci\\/modifica oggetti multimediali\",\n\"Alternative source\": \"Sorgente alternativa\",\n\"Alternative source URL\": \"URL sorgente alternativa\",\n\"Media poster (Image URL)\": \"Poster dell'oggetto multimediale (URL dell'immagine)\",\n\"Paste your embed code below:\": \"Incolla il codice d'incorporamento di seguito:\",\n\"Embed\": \"Incorpora\",\n\"Media...\": \"Oggetto multimediale...\",\n\"Nonbreaking space\": \"Spazio indivisibile\",\n\"Page break\": \"Interruzione di pagina\",\n\"Paste as text\": \"Incolla senza formattazioni\",\n\"Preview\": \"Anteprima\",\n\"Print...\": \"Stampa...\",\n\"Save\": \"Salva\",\n\"Find\": \"Trova\",\n\"Replace with\": \"Sostituisci con\",\n\"Replace\": \"Sostituisci\",\n\"Replace all\": \"Sostituisci tutto\",\n\"Previous\": \"Indietro\",\n\"Next\": \"Avanti\",\n\"Find and replace...\": \"Trova e sostituisci...\",\n\"Could not find the specified string.\": \"Impossibile trovare la stringa specificata.\",\n\"Match case\": \"Maiuscole\\/minuscole\",\n\"Find whole words only\": \"Trova solo parole intere\",\n\"Spell check\": \"Controllo ortografia\",\n\"Ignore\": \"Ignora\",\n\"Ignore all\": \"Ignora tutto\",\n\"Finish\": \"Fine\",\n\"Add to Dictionary\": \"Aggiungi al dizionario\",\n\"Insert table\": \"Inserisci tabella\",\n\"Table properties\": \"Propriet\\u00e0 della tabella\",\n\"Delete table\": \"Elimina tabella\",\n\"Cell\": \"Cella\",\n\"Row\": \"Riga\",\n\"Column\": \"Colonna\",\n\"Cell properties\": \"Propriet\\u00e0 cella\",\n\"Merge cells\": \"Unisci le celle\",\n\"Split cell\": \"Dividi la cella\",\n\"Insert row before\": \"Inserisci riga prima\",\n\"Insert row after\": \"Inserisci riga dopo\",\n\"Delete row\": \"Elimina riga\",\n\"Row properties\": \"Propriet\\u00e0 della riga\",\n\"Cut row\": \"Taglia riga\",\n\"Copy row\": \"Copia riga\",\n\"Paste row before\": \"Incolla riga prima\",\n\"Paste row after\": \"Incolla riga dopo\",\n\"Insert column before\": \"Inserisci colonna prima\",\n\"Insert column after\": \"Inserisci colonna dopo\",\n\"Delete column\": \"Elimina colonna\",\n\"Cols\": \"Colonne\",\n\"Rows\": \"Righe\",\n\"Width\": \"Larghezza\",\n\"Height\": \"Altezza\",\n\"Cell spacing\": \"Spaziatura tra celle\",\n\"Cell padding\": \"Spaziatura interna celle\",\n\"Show caption\": \"Mostra didascalia\",\n\"Left\": \"Sinistra\",\n\"Center\": \"Centro\",\n\"Right\": \"Destra\",\n\"Cell type\": \"Tipo di cella\",\n\"Scope\": \"Ambito\",\n\"Alignment\": \"Allineamento\",\n\"H Align\": \"Allineamento H\",\n\"V Align\": \"Allineamento V\",\n\"Top\": \"In alto\",\n\"Middle\": \"Centrato\",\n\"Bottom\": \"In basso\",\n\"Header cell\": \"Cella d'intestazione\",\n\"Row group\": \"Gruppo di righe\",\n\"Column group\": \"Gruppo di colonne\",\n\"Row type\": \"Tipo di riga\",\n\"Header\": \"Intestazione\",\n\"Body\": \"Corpo\",\n\"Footer\": \"Pi\\u00e8 di pagina\",\n\"Border color\": \"Colore del bordo\",\n\"Insert template...\": \"Inserisci modello...\",\n\"Templates\": \"Modelli\",\n\"Template\": \"Modello\",\n\"Text color\": \"Colore testo\",\n\"Background color\": \"Colore dello sfondo\",\n\"Custom...\": \"Personalizzato...\",\n\"Custom color\": \"Colore personalizzato\",\n\"No color\": \"Nessun colore\",\n\"Remove color\": \"Rimuovi colore\",\n\"Table of Contents\": \"Sommario\",\n\"Show blocks\": \"Mostra blocchi\",\n\"Show invisible characters\": \"Mostra caratteri invisibili\",\n\"Word count\": \"Conteggio parole\",\n\"Words: {0}\": \"Parole: {0}\",\n\"{0} words\": \"{0} parole\",\n\"File\": \"File\",\n\"Edit\": \"Modifica\",\n\"Insert\": \"Inserisci\",\n\"View\": \"Visualizza\",\n\"Format\": \"Formato\",\n\"Table\": \"Tabella\",\n\"Tools\": \"Strumenti\",\n\"Powered by {0}\": \"Con tecnologia {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Area di testo RTF. Premere ALT-F9 per il menu. Premere ALT-F10 per la barra degli strumenti. Premere ALT-0 per la guida.\",\n\"Image title\": \"Titolo immagine\",\n\"Border width\": \"Larghezza del bordo\",\n\"Border style\": \"Stile del bordo\",\n\"Error\": \"Errore\",\n\"Warn\": \"Avviso\",\n\"Valid\": \"Valido\",\n\"To open the popup, press Shift+Enter\": \"Per aprire il popup, premere Shift+Invio\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Area di testo RTF. Premere ALT-0 per la guida.\",\n\"System Font\": \"Carattere di sistema\",\n\"Failed to upload image: {0}\": \"Caricamento immagine fallito: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Caricamento plugin fallito: {0} dall'URL {1}\",\n\"Failed to load plugin url: {0}\": \"Caricamento URL plugin fallito: {0}\",\n\"Failed to initialize plugin: {0}\": \"Inizializzazione plugin fallita: {0}\",\n\"example\": \"esempio\",\n\"Search\": \"Cerca\",\n\"All\": \"Tutto\",\n\"Currency\": \"Valuta\",\n\"Text\": \"Testo\",\n\"Quotations\": \"Citazioni\",\n\"Mathematical\": \"Caratteri matematici\",\n\"Extended Latin\": \"Latino esteso\",\n\"Symbols\": \"Simboli\",\n\"Arrows\": \"Frecce\",\n\"User Defined\": \"Definito dall'utente\",\n\"dollar sign\": \"simbolo del dollaro\",\n\"currency sign\": \"simbolo di valuta\",\n\"euro-currency sign\": \"simbolo dell'euro\",\n\"colon sign\": \"simbolo del col\\u00f3n\",\n\"cruzeiro sign\": \"simbolo del cruzeiro\",\n\"french franc sign\": \"simbolo del franco francese\",\n\"lira sign\": \"simbolo della lira\",\n\"mill sign\": \"simbolo del mill\",\n\"naira sign\": \"simbolo della naira\",\n\"peseta sign\": \"simbolo della peseta\",\n\"rupee sign\": \"simbolo della rup\\u00eca\",\n\"won sign\": \"simbolo del won\",\n\"new sheqel sign\": \"simbolo del nuovo shekel\",\n\"dong sign\": \"simbolo del dong\",\n\"kip sign\": \"simbolo del kip\",\n\"tugrik sign\": \"simbolo del tugrik\",\n\"drachma sign\": \"simbolo della dracma\",\n\"german penny symbol\": \"simbolo del pfennig tedesco\",\n\"peso sign\": \"simbolo del peso\",\n\"guarani sign\": \"simbolo del guaran\\u00ec\",\n\"austral sign\": \"simbolo dell'austral\",\n\"hryvnia sign\": \"simbolo della hryvnia\",\n\"cedi sign\": \"simbolo del cedi\",\n\"livre tournois sign\": \"simbolo della lira di Tours\",\n\"spesmilo sign\": \"simbolo dello spesmilo\",\n\"tenge sign\": \"simbolo del tenge\",\n\"indian rupee sign\": \"simbolo della rup\\u00eca indiana\",\n\"turkish lira sign\": \"simbolo della lira turca\",\n\"nordic mark sign\": \"simbolo del marco nordico\",\n\"manat sign\": \"simbolo del manat\",\n\"ruble sign\": \"simbolo del rublo\",\n\"yen character\": \"simbolo dello yen\",\n\"yuan character\": \"simbolo dello yuan\",\n\"yuan character, in hong kong and taiwan\": \"simbolo dello yuan, Hong Kong e Taiwan\",\n\"yen\\/yuan character variant one\": \"simbolo yen\\/yuan variante uno\",\n\"Loading emoticons...\": \"Caricamento emoticon in corso\",\n\"Could not load emoticons\": \"Impossibile caricare emoticon\",\n\"People\": \"Persone\",\n\"Animals and Nature\": \"Animali e natura\",\n\"Food and Drink\": \"Cibi e bevande\",\n\"Activity\": \"Attivit\\u00e0\",\n\"Travel and Places\": \"Viaggi e luoghi\",\n\"Objects\": \"Oggetti\",\n\"Flags\": \"Bandiere\",\n\"Characters\": \"Caratteri\",\n\"Characters (no spaces)\": \"Caratteri (senza spazi)\",\n\"Error: Form submit field collision.\": \"Errore: Conflitto di campi nel modulo inviato.\",\n\"Error: No form element found.\": \"Errore: Nessun elemento di modulo trovato.\",\n\"Update\": \"Aggiorna\",\n\"Color swatch\": \"Campione di colore\",\n\"Turquoise\": \"Turchese\",\n\"Green\": \"Verde\",\n\"Blue\": \"Blu\",\n\"Purple\": \"Viola\",\n\"Navy Blue\": \"Blu scuro\",\n\"Dark Turquoise\": \"Turchese scuro\",\n\"Dark Green\": \"Verde scuro\",\n\"Medium Blue\": \"Blu medio\",\n\"Medium Purple\": \"Viola medio\",\n\"Midnight Blue\": \"Blu notte\",\n\"Yellow\": \"Giallo\",\n\"Orange\": \"Arancio\",\n\"Red\": \"Rosso\",\n\"Light Gray\": \"Grigio chiaro\",\n\"Gray\": \"Grigio\",\n\"Dark Yellow\": \"Giallo scuro\",\n\"Dark Orange\": \"Arancio scuro\",\n\"Dark Red\": \"Rosso scuro\",\n\"Medium Gray\": \"Grigio medio\",\n\"Dark Gray\": \"Grigio scuro\",\n\"Black\": \"Nero\",\n\"White\": \"Bianco\",\n\"Switch to or from fullscreen mode\": \"Attiva\\/disattiva la modalit\\u00e0 schermo intero\",\n\"Open help dialog\": \"Apri la finestra di aiuto\",\n\"history\": \"cronologia\",\n\"styles\": \"stili\",\n\"formatting\": \"formattazione\",\n\"alignment\": \"allineamento\",\n\"indentation\": \"indentazione\",\n\"permanent pen\": \"penna indelebile\",\n\"comments\": \"commenti\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/ja.js",
    "content": "tinymce.addI18n('ja',{\n\"Redo\": \"\\u3084\\u308a\\u76f4\\u3057\",\n\"Undo\": \"\\u5143\\u306b\\u623b\\u3059\",\n\"Cut\": \"\\u5207\\u308a\\u53d6\\u308a\",\n\"Copy\": \"\\u30b3\\u30d4\\u30fc\",\n\"Paste\": \"\\u8cbc\\u308a\\u4ed8\\u3051\",\n\"Select all\": \"\\u3059\\u3079\\u3066\\u9078\\u629e\",\n\"New document\": \"\\u65b0\\u898f\\u30c9\\u30ad\\u30e5\\u30e1\\u30f3\\u30c8\",\n\"Ok\": \"OK\",\n\"Cancel\": \"\\u53d6\\u6d88\",\n\"Visual aids\": \"\\u8868\\u306e\\u67a0\\u7dda\\u3092\\u70b9\\u7dda\\u3067\\u8868\\u793a\",\n\"Bold\": \"\\u592a\\u5b57\",\n\"Italic\": \"\\u659c\\u4f53\",\n\"Underline\": \"\\u4e0b\\u7dda\",\n\"Strikethrough\": \"\\u53d6\\u6d88\\u7dda\",\n\"Superscript\": \"\\u4e0a\\u4ed8\\u304d\",\n\"Subscript\": \"\\u4e0b\\u4ed8\\u304d\",\n\"Clear formatting\": \"\\u66f8\\u5f0f\\u3092\\u30af\\u30ea\\u30a2\",\n\"Align left\": \"\\u5de6\\u63c3\\u3048\",\n\"Align center\": \"\\u4e2d\\u592e\\u63c3\\u3048\",\n\"Align right\": \"\\u53f3\\u63c3\\u3048\",\n\"Justify\": \"\\u4e21\\u7aef\\u63c3\\u3048\",\n\"Bullet list\": \"\\u7b87\\u6761\\u66f8\\u304d\",\n\"Numbered list\": \"\\u756a\\u53f7\\u4ed8\\u304d\\u7b87\\u6761\\u66f8\\u304d\",\n\"Decrease indent\": \"\\u30a4\\u30f3\\u30c7\\u30f3\\u30c8\\u3092\\u6e1b\\u3089\\u3059\",\n\"Increase indent\": \"\\u30a4\\u30f3\\u30c7\\u30f3\\u30c8\\u3092\\u5897\\u3084\\u3059\",\n\"Close\": \"\\u9589\\u3058\\u308b\",\n\"Formats\": \"\\u66f8\\u5f0f\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u304a\\u4f7f\\u3044\\u306e\\u30d6\\u30e9\\u30a6\\u30b6\\u3067\\u306f\\u30af\\u30ea\\u30c3\\u30d7\\u30dc\\u30fc\\u30c9\\u6a5f\\u80fd\\u3092\\u5229\\u7528\\u3059\\u308b\\u3053\\u3068\\u304c\\u3067\\u304d\\u307e\\u305b\\u3093\\u3002\\u30ad\\u30fc\\u30dc\\u30fc\\u30c9\\u306e\\u30b7\\u30e7\\u30fc\\u30c8\\u30ab\\u30c3\\u30c8\\uff08Ctrl+X, Ctrl+C, Ctrl+V\\uff09\\u3092\\u4f7f\\u7528\\u3057\\u3066\\u304f\\u3060\\u3055\\u3044\\u3002\",\n\"Headers\": \"\\u30d8\\u30c3\\u30c0\\u30fc\",\n\"Header 1\": \"\\u30d8\\u30c3\\u30c0\\u30fc 1\",\n\"Header 2\": \"\\u30d8\\u30c3\\u30c0\\u30fc 2\",\n\"Header 3\": \"\\u30d8\\u30c3\\u30c0\\u30fc 3\",\n\"Header 4\": \"\\u30d8\\u30c3\\u30c0\\u30fc 4\",\n\"Header 5\": \"\\u30d8\\u30c3\\u30c0\\u30fc 5\",\n\"Header 6\": \"\\u30d8\\u30c3\\u30c0\\u30fc 6\",\n\"Headings\": \"\\u898b\\u51fa\\u3057\",\n\"Heading 1\": \"\\u898b\\u51fa\\u30571\",\n\"Heading 2\": \"\\u898b\\u51fa\\u30572\",\n\"Heading 3\": \"\\u898b\\u51fa\\u30573\",\n\"Heading 4\": \"\\u898b\\u51fa\\u30574\",\n\"Heading 5\": \"\\u898b\\u51fa\\u30575\",\n\"Heading 6\": \"\\u898b\\u51fa\\u30576\",\n\"Preformatted\": \"\\u66f8\\u5f0f\\u8a2d\\u5b9a\\u6e08\\u307f\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"\\u30b3\\u30fc\\u30c9\",\n\"Paragraph\": \"\\u6bb5\\u843d\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"\\u30a4\\u30f3\\u30e9\\u30a4\\u30f3\",\n\"Blocks\": \"\\u30d6\\u30ed\\u30c3\\u30af\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u8cbc\\u308a\\u4ed8\\u3051\\u306f\\u73fe\\u5728\\u30d7\\u30ec\\u30fc\\u30f3\\u30c6\\u30ad\\u30b9\\u30c8\\u30e2\\u30fc\\u30c9\\u3067\\u3059\\u3002\\u3053\\u306e\\u30aa\\u30d7\\u30b7\\u30e7\\u30f3\\u3092\\u30aa\\u30d5\\u306b\\u3057\\u306a\\u3044\\u9650\\u308a\\u5185\\u5bb9\\u306f\\u30d7\\u30ec\\u30fc\\u30f3\\u30c6\\u30ad\\u30b9\\u30c8\\u3068\\u3057\\u3066\\u8cbc\\u308a\\u4ed8\\u3051\\u3089\\u308c\\u307e\\u3059\\u3002\",\n\"Fonts\": \"\\u30d5\\u30a9\\u30f3\\u30c8\",\n\"Font Sizes\": \"\\u30d5\\u30a9\\u30f3\\u30c8\\u30b5\\u30a4\\u30ba\",\n\"Class\": \"\\u30af\\u30e9\\u30b9\",\n\"Browse for an image\": \"\\u753b\\u50cf\\u3092\\u53c2\\u7167\",\n\"OR\": \"OR\",\n\"Drop an image here\": \"\\u3053\\u3053\\u306b\\u753b\\u50cf\\u3092\\u30c9\\u30ed\\u30c3\\u30d7\",\n\"Upload\": \"\\u30a2\\u30c3\\u30d7\\u30ed\\u30fc\\u30c9\",\n\"Block\": \"\\u30d6\\u30ed\\u30c3\\u30af\",\n\"Align\": \"\\u914d\\u7f6e\",\n\"Default\": \"\\u30c7\\u30d5\\u30a9\\u30eb\\u30c8\",\n\"Circle\": \"\\u5186\",\n\"Disc\": \"\\u70b9\",\n\"Square\": \"\\u56db\\u89d2\",\n\"Lower Alpha\": \"\\u5c0f\\u6587\\u5b57\\u306e\\u30a2\\u30eb\\u30d5\\u30a1\\u30d9\\u30c3\\u30c8\",\n\"Lower Greek\": \"\\u5c0f\\u6587\\u5b57\\u306e\\u30ae\\u30ea\\u30b7\\u30e3\\u6587\\u5b57\",\n\"Lower Roman\": \"\\u5c0f\\u6587\\u5b57\\u306e\\u30ed\\u30fc\\u30de\\u6570\\u5b57\",\n\"Upper Alpha\": \"\\u5927\\u6587\\u5b57\\u306e\\u30a2\\u30eb\\u30d5\\u30a1\\u30d9\\u30c3\\u30c8\",\n\"Upper Roman\": \"\\u5927\\u6587\\u5b57\\u306e\\u30ed\\u30fc\\u30de\\u6570\\u5b57\",\n\"Anchor...\": \"\\u30a2\\u30f3\\u30ab\\u30fc...\",\n\"Name\": \"\\u30a2\\u30f3\\u30ab\\u30fc\\u540d\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"ID\\u306f\\u6587\\u5b57\\u3067\\u59cb\\u307e\\u308a\\u3001\\u6587\\u5b57\\u3001\\u6570\\u5b57\\u3001\\u30c0\\u30c3\\u30b7\\u30e5\\u3001\\u30c9\\u30c3\\u30c8\\u3001\\u30b3\\u30ed\\u30f3\\u307e\\u305f\\u306f\\u30a2\\u30f3\\u30c0\\u30fc\\u30b9\\u30b3\\u30a2\\u3067\\u59cb\\u307e\\u308b\\u5fc5\\u8981\\u304c\\u3042\\u308a\\u307e\\u3059\\u3002\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u307e\\u3060\\u4fdd\\u5b58\\u3057\\u3066\\u3044\\u306a\\u3044\\u5909\\u66f4\\u304c\\u3042\\u308a\\u307e\\u3059\\u304c\\u3001\\u672c\\u5f53\\u306b\\u3053\\u306e\\u30da\\u30fc\\u30b8\\u3092\\u96e2\\u308c\\u307e\\u3059\\u304b\\uff1f\",\n\"Restore last draft\": \"\\u524d\\u56de\\u306e\\u4e0b\\u66f8\\u304d\\u3092\\u5fa9\\u6d3b\\u3055\\u305b\\u308b\",\n\"Special character...\": \"\\u7279\\u6b8a\\u6587\\u5b57...\",\n\"Source code\": \"\\u30bd\\u30fc\\u30b9\\u30b3\\u30fc\\u30c9\",\n\"Insert\\/Edit code sample\": \"\\u30b3\\u30fc\\u30c9\\u30b5\\u30f3\\u30d7\\u30eb\\u306e\\u633f\\u5165\\u30fb\\u7de8\\u96c6\",\n\"Language\": \"\\u8a00\\u8a9e\",\n\"Code sample...\": \"\\u30b3\\u30fc\\u30c9\\u306e\\u30b5\\u30f3\\u30d7\\u30eb...\",\n\"Color Picker\": \"\\u30ab\\u30e9\\u30fc\\u30d4\\u30c3\\u30ab\\u30fc\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"\\u5de6\\u304b\\u3089\\u53f3\",\n\"Right to left\": \"\\u53f3\\u304b\\u3089\\u5de6\",\n\"Emoticons...\": \"\\u7d75\\u6587\\u5b57...\",\n\"Metadata and Document Properties\": \"\\u30e1\\u30bf\\u30c7\\u30fc\\u30bf\\u3068\\u30c9\\u30ad\\u30e5\\u30e1\\u30f3\\u30c8\\u30d7\\u30ed\\u30d1\\u30c6\\u30a3\",\n\"Title\": \"\\u30bf\\u30a4\\u30c8\\u30eb\",\n\"Keywords\": \"\\u30ad\\u30fc\\u30ef\\u30fc\\u30c9\",\n\"Description\": \"\\u30c6\\u30f3\\u30d7\\u30ec\\u30fc\\u30c8\\u306e\\u5185\\u5bb9\",\n\"Robots\": \"\\u30ed\\u30dc\\u30c3\\u30c4\",\n\"Author\": \"\\u8457\\u8005\",\n\"Encoding\": \"\\u30a8\\u30f3\\u30b3\\u30fc\\u30c7\\u30a3\\u30f3\\u30b0\",\n\"Fullscreen\": \"\\u5168\\u753b\\u9762\\u8868\\u793a\",\n\"Action\": \"\\u30a2\\u30af\\u30b7\\u30e7\\u30f3\",\n\"Shortcut\": \"\\u30b7\\u30e7\\u30fc\\u30c8\\u30ab\\u30c3\\u30c8\",\n\"Help\": \"\\u30d8\\u30eb\\u30d7\",\n\"Address\": \"\\u30a2\\u30c9\\u30ec\\u30b9\",\n\"Focus to menubar\": \"\\u30e1\\u30cb\\u30e5\\u30fc\\u30d0\\u30fc\\u306b\\u30d5\\u30a9\\u30fc\\u30ab\\u30b9\",\n\"Focus to toolbar\": \"\\u30c4\\u30fc\\u30eb\\u30d0\\u30fc\\u306b\\u30d5\\u30a9\\u30fc\\u30ab\\u30b9\",\n\"Focus to element path\": \"\\u8981\\u7d20\\u30d1\\u30b9\\u306b\\u30d5\\u30a9\\u30fc\\u30ab\\u30b9\",\n\"Focus to contextual toolbar\": \"\\u30b3\\u30f3\\u30c6\\u30ad\\u30b9\\u30c8\\u30c4\\u30fc\\u30eb\\u30d0\\u30fc\\u306b\\u30d5\\u30a9\\u30fc\\u30ab\\u30b9\",\n\"Insert link (if link plugin activated)\": \"\\u30ea\\u30f3\\u30af\\u3092\\u633f\\u5165 (\\u30ea\\u30f3\\u30af\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3\\u6709\\u52b9\\u6642)\",\n\"Save (if save plugin activated)\": \"\\u4fdd\\u5b58 (\\u4fdd\\u5b58\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3\\u6709\\u52b9\\u6642)\",\n\"Find (if searchreplace plugin activated)\": \"\\u691c\\u7d22(\\u7f6e\\u63db\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3\\u6709\\u52b9\\u6642)\",\n\"Plugins installed ({0}):\": \"\\u30a4\\u30f3\\u30b9\\u30c8\\u30fc\\u30eb\\u6e08\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3 ({0}):\",\n\"Premium plugins:\": \"\\u30d7\\u30ec\\u30df\\u30a2\\u30e0\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3:\",\n\"Learn more...\": \"\\u8a73\\u7d30...\",\n\"You are using {0}\": \"\\u3042\\u306a\\u305f\\u306f {0} \\u4f7f\\u7528\\u4e2d\",\n\"Plugins\": \"\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3\",\n\"Handy Shortcuts\": \"\\u4fbf\\u5229\\u306a\\u30b7\\u30e7\\u30fc\\u30c8\\u30ab\\u30c3\\u30c8\",\n\"Horizontal line\": \"\\u6c34\\u5e73\\u7f6b\\u7dda\",\n\"Insert\\/edit image\": \"\\u753b\\u50cf\\u306e\\u633f\\u5165\\u30fb\\u7de8\\u96c6\",\n\"Image description\": \"\\u753b\\u50cf\\u306e\\u8aac\\u660e\\u6587\",\n\"Source\": \"\\u753b\\u50cf\\u306e\\u30bd\\u30fc\\u30b9\",\n\"Dimensions\": \"\\u753b\\u50cf\\u30b5\\u30a4\\u30ba\\uff08\\u6a2a\\u30fb\\u7e26\\uff09\",\n\"Constrain proportions\": \"\\u7e26\\u6a2a\\u6bd4\\u3092\\u4fdd\\u6301\\u3059\\u308b\",\n\"General\": \"\\u4e00\\u822c\",\n\"Advanced\": \"\\u8a73\\u7d30\\u8a2d\\u5b9a\",\n\"Style\": \"\\u30b9\\u30bf\\u30a4\\u30eb\",\n\"Vertical space\": \"\\u7e26\\u65b9\\u5411\\u306e\\u4f59\\u767d\",\n\"Horizontal space\": \"\\u6a2a\\u65b9\\u5411\\u306e\\u4f59\\u767d\",\n\"Border\": \"\\u67a0\\u7dda\",\n\"Insert image\": \"\\u753b\\u50cf\\u306e\\u633f\\u5165\",\n\"Image...\": \"\\u753b\\u50cf..\",\n\"Image list\": \"\\u753b\\u50cf\\u4e00\\u89a7\",\n\"Rotate counterclockwise\": \"\\u53cd\\u6642\\u8a08\\u56de\\u308a\\u306b\\u56de\\u8ee2\",\n\"Rotate clockwise\": \"\\u6642\\u8a08\\u56de\\u308a\\u306b\\u56de\\u8ee2\",\n\"Flip vertically\": \"\\u4e0a\\u4e0b\\u306b\\u53cd\\u8ee2\",\n\"Flip horizontally\": \"\\u6c34\\u5e73\\u306b\\u53cd\\u8ee2\",\n\"Edit image\": \"\\u753b\\u50cf\\u306e\\u7de8\\u96c6\",\n\"Image options\": \"\\u753b\\u50cf\\u30aa\\u30d7\\u30b7\\u30e7\\u30f3\",\n\"Zoom in\": \"\\u30ba\\u30fc\\u30e0\\u30a4\\u30f3\",\n\"Zoom out\": \"\\u30ba\\u30fc\\u30e0\\u30a2\\u30a6\\u30c8\",\n\"Crop\": \"\\u30af\\u30ed\\u30c3\\u30d7\",\n\"Resize\": \"\\u30ea\\u30b5\\u30a4\\u30ba\",\n\"Orientation\": \"\\u5411\\u304d\",\n\"Brightness\": \"\\u660e\\u308b\\u3055\",\n\"Sharpen\": \"\\u30b7\\u30e3\\u30fc\\u30d7\\u5316\",\n\"Contrast\": \"\\u30b3\\u30f3\\u30c8\\u30e9\\u30b9\\u30c8\",\n\"Color levels\": \"\\u30ab\\u30e9\\u30fc\\u30ec\\u30d9\\u30eb\",\n\"Gamma\": \"\\u30ac\\u30f3\\u30de\",\n\"Invert\": \"\\u53cd\\u8ee2\",\n\"Apply\": \"\\u9069\\u7528\",\n\"Back\": \"\\u623b\\u308b\",\n\"Insert date\\/time\": \"\\u65e5\\u4ed8\\u30fb\\u6642\\u523b\",\n\"Date\\/time\": \"\\u65e5\\u4ed8\\u30fb\\u6642\\u523b\",\n\"Insert\\/Edit Link\": \"\\u30ea\\u30f3\\u30af\\u306e\\u633f\\u5165\\/\\u7de8\\u96c6\",\n\"Insert\\/edit link\": \"\\u30ea\\u30f3\\u30af\\u306e\\u633f\\u5165\\u30fb\\u7de8\\u96c6\",\n\"Text to display\": \"\\u30ea\\u30f3\\u30af\\u5143\\u30c6\\u30ad\\u30b9\\u30c8\",\n\"Url\": \"\\u30ea\\u30f3\\u30af\\u5148URL\",\n\"Open link in...\": \"\\u30ea\\u30f3\\u30af\\u306e\\u958b\\u304d\\u65b9...\",\n\"Current window\": \"\\u540c\\u3058\\u30a6\\u30a3\\u30f3\\u30c9\\u30a6\",\n\"None\": \"\\u306a\\u3057\",\n\"New window\": \"\\u65b0\\u898f\\u30a6\\u30a3\\u30f3\\u30c9\\u30a6\",\n\"Remove link\": \"\\u30ea\\u30f3\\u30af\\u306e\\u524a\\u9664\",\n\"Anchors\": \"\\u30a2\\u30f3\\u30ab\\u30fc\\uff08\\u30ea\\u30f3\\u30af\\u306e\\u5230\\u9054\\u70b9\\uff09\",\n\"Link...\": \"\\u30ea\\u30f3\\u30af...\",\n\"Paste or type a link\": \"\\u30ea\\u30f3\\u30af\\u3092\\u30da\\u30fc\\u30b9\\u30c8\\u307e\\u305f\\u306f\\u5165\\u529b\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u5165\\u529b\\u3055\\u308c\\u305fURL\\u306f\\u30e1\\u30fc\\u30eb\\u30a2\\u30c9\\u30ec\\u30b9\\u306e\\u3088\\u3046\\u3067\\u3059\\u3002\\u300cmailto:\\u300d\\u30d7\\u30ec\\u30d5\\u30a3\\u30c3\\u30af\\u30b9\\u3092\\u8ffd\\u52a0\\u3057\\u307e\\u3059\\u304b\\uff1f\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u5165\\u529b\\u3055\\u308c\\u305fURL\\u306f\\u5916\\u90e8\\u30ea\\u30f3\\u30af\\u306e\\u3088\\u3046\\u3067\\u3059\\u3002\\u300chttp:\\/\\/\\u300d\\u30d7\\u30ec\\u30d5\\u30a3\\u30c3\\u30af\\u30b9\\u3092\\u8ffd\\u52a0\\u3057\\u307e\\u3059\\u304b\\uff1f\",\n\"Link list\": \"\\u30ea\\u30f3\\u30af\\u4e00\\u89a7\",\n\"Insert video\": \"\\u52d5\\u753b\",\n\"Insert\\/edit video\": \"\\u52d5\\u753b\\u306e\\u633f\\u5165\\u30fb\\u7de8\\u96c6\",\n\"Insert\\/edit media\": \"\\u30e1\\u30c7\\u30a3\\u30a2\\u306e\\u633f\\u5165\\u30fb\\u7de8\\u96c6\",\n\"Alternative source\": \"\\u4ee3\\u66ff\\u52d5\\u753b\\u306e\\u5834\\u6240\",\n\"Alternative source URL\": \"\\u4ee3\\u66ff\\u30bd\\u30fc\\u30b9URL\",\n\"Media poster (Image URL)\": \"\\u30e1\\u30c7\\u30a3\\u30a2\\u30dd\\u30b9\\u30bf\\u30fc (\\u753b\\u50cfURL)\",\n\"Paste your embed code below:\": \"\\u57cb\\u3081\\u8fbc\\u307f\\u7528\\u30b3\\u30fc\\u30c9\\u3092\\u4e0b\\u8a18\\u306b\\u8cbc\\u308a\\u4ed8\\u3051\\u3066\\u304f\\u3060\\u3055\\u3044\\u3002\",\n\"Embed\": \"\\u57cb\\u3081\\u8fbc\\u307f\",\n\"Media...\": \"\\u30e1\\u30c7\\u30a3\\u30a2\\u2026\",\n\"Nonbreaking space\": \"\\u56fa\\u5b9a\\u30b9\\u30da\\u30fc\\u30b9\\uff08&nbsp;\\uff09\",\n\"Page break\": \"\\u30da\\u30fc\\u30b8\\u533a\\u5207\\u308a\",\n\"Paste as text\": \"\\u30c6\\u30ad\\u30b9\\u30c8\\u3068\\u3057\\u3066\\u8cbc\\u308a\\u4ed8\\u3051\",\n\"Preview\": \"\\u30d7\\u30ec\\u30d3\\u30e5\\u30fc\",\n\"Print...\": \"\\u5370\\u5237...\",\n\"Save\": \"\\u4fdd\\u5b58\",\n\"Find\": \"\\u691c\\u7d22\",\n\"Replace with\": \"\\u7f6e\\u304d\\u63db\\u3048\\u308b\\u6587\\u5b57\",\n\"Replace\": \"\\u7f6e\\u304d\\u63db\\u3048\",\n\"Replace all\": \"\\u5168\\u3066\\u3092\\u7f6e\\u304d\\u63db\\u3048\\u308b\",\n\"Previous\": \"\\u524d\\u3078\",\n\"Next\": \"\\u6b21\",\n\"Find and replace...\": \"\\u7f6e\\u63db...\",\n\"Could not find the specified string.\": \"\\u304a\\u63a2\\u3057\\u306e\\u6587\\u5b57\\u304c\\u898b\\u3064\\u304b\\u308a\\u307e\\u305b\\u3093\\u3067\\u3057\\u305f\\u3002\",\n\"Match case\": \"\\u5927\\u6587\\u5b57\\u30fb\\u5c0f\\u6587\\u5b57\\u3092\\u533a\\u5225\\u3059\\u308b\",\n\"Find whole words only\": \"\\u8a9e\\u5168\\u4f53\\u3092\\u542b\\u3080\\u3082\\u306e\\u306e\\u307f\\u691c\\u7d22\",\n\"Spell check\": \"\\u30b9\\u30da\\u30eb\\u30c1\\u30a7\\u30c3\\u30af\",\n\"Ignore\": \"\\u7121\\u8996\",\n\"Ignore all\": \"\\u5168\\u3066\\u3092\\u7121\\u8996\",\n\"Finish\": \"\\u7d42\\u4e86\",\n\"Add to Dictionary\": \"\\u8f9e\\u66f8\\u306b\\u8ffd\\u52a0\",\n\"Insert table\": \"\\u8868\\u306e\\u633f\\u5165\",\n\"Table properties\": \"\\u8868\\u306e\\u8a73\\u7d30\\u8a2d\\u5b9a\",\n\"Delete table\": \"\\u8868\\u306e\\u524a\\u9664\",\n\"Cell\": \"\\u30bb\\u30eb\",\n\"Row\": \"\\u884c\",\n\"Column\": \"\\u5217\",\n\"Cell properties\": \"\\u30bb\\u30eb\\u306e\\u8a73\\u7d30\\u8a2d\\u5b9a\",\n\"Merge cells\": \"\\u30bb\\u30eb\\u306e\\u7d50\\u5408\",\n\"Split cell\": \"\\u30bb\\u30eb\\u306e\\u5206\\u5272\",\n\"Insert row before\": \"\\u4e0a\\u5074\\u306b\\u884c\\u3092\\u633f\\u5165\",\n\"Insert row after\": \"\\u4e0b\\u5074\\u306b\\u884c\\u3092\\u633f\\u5165\",\n\"Delete row\": \"\\u884c\\u306e\\u524a\\u9664\",\n\"Row properties\": \"\\u884c\\u306e\\u8a73\\u7d30\\u8a2d\\u5b9a\",\n\"Cut row\": \"\\u884c\\u306e\\u5207\\u308a\\u53d6\\u308a\",\n\"Copy row\": \"\\u884c\\u306e\\u30b3\\u30d4\\u30fc\",\n\"Paste row before\": \"\\u4e0a\\u5074\\u306b\\u884c\\u3092\\u8cbc\\u308a\\u4ed8\\u3051\",\n\"Paste row after\": \"\\u4e0b\\u5074\\u306b\\u884c\\u3092\\u8cbc\\u308a\\u4ed8\\u3051\",\n\"Insert column before\": \"\\u5de6\\u5074\\u306b\\u5217\\u3092\\u633f\\u5165\",\n\"Insert column after\": \"\\u53f3\\u5074\\u306b\\u5217\\u3092\\u633f\\u5165\",\n\"Delete column\": \"\\u5217\\u306e\\u524a\\u9664\",\n\"Cols\": \"\\u5217\\u6570\",\n\"Rows\": \"\\u884c\\u6570\",\n\"Width\": \"\\u5e45\",\n\"Height\": \"\\u9ad8\\u3055\",\n\"Cell spacing\": \"\\u30bb\\u30eb\\u306e\\u9593\\u9694\",\n\"Cell padding\": \"\\u30bb\\u30eb\\u5185\\u4f59\\u767d\\uff08\\u30d1\\u30c7\\u30a3\\u30f3\\u30b0\\uff09\",\n\"Show caption\": \"\\u30ad\\u30e3\\u30d7\\u30b7\\u30e7\\u30f3\\u306e\\u8868\\u793a\",\n\"Left\": \"\\u5de6\\u5bc4\\u305b\",\n\"Center\": \"\\u4e2d\\u592e\\u63c3\\u3048\",\n\"Right\": \"\\u53f3\\u5bc4\\u305b\",\n\"Cell type\": \"\\u30bb\\u30eb\\u30bf\\u30a4\\u30d7\",\n\"Scope\": \"\\u30b9\\u30b3\\u30fc\\u30d7\",\n\"Alignment\": \"\\u914d\\u7f6e\",\n\"H Align\": \"\\u6c34\\u5e73\\u65b9\\u5411\\u306e\\u914d\\u7f6e\",\n\"V Align\": \"\\u5782\\u76f4\\u65b9\\u5411\\u306e\\u914d\\u7f6e\",\n\"Top\": \"\\u4e0a\",\n\"Middle\": \"\\u4e2d\\u592e\",\n\"Bottom\": \"\\u4e0b\",\n\"Header cell\": \"\\u30d8\\u30c3\\u30c0\\u30fc\\u30bb\\u30eb\",\n\"Row group\": \"\\u884c\\u30b0\\u30eb\\u30fc\\u30d7\",\n\"Column group\": \"\\u5217\\u30b0\\u30eb\\u30fc\\u30d7\",\n\"Row type\": \"\\u884c\\u30bf\\u30a4\\u30d7\",\n\"Header\": \"\\u30d8\\u30c3\\u30c0\\u30fc\",\n\"Body\": \"\\u30dc\\u30c7\\u30a3\\u30fc\",\n\"Footer\": \"\\u30d5\\u30c3\\u30bf\\u30fc\",\n\"Border color\": \"\\u67a0\\u7dda\\u306e\\u8272\",\n\"Insert template...\": \"\\u30c6\\u30f3\\u30d7\\u30ec\\u30fc\\u30c8\\u306e\\u633f\\u5165..\",\n\"Templates\": \"\\u30c6\\u30f3\\u30d7\\u30ec\\u30fc\\u30c8\\u540d\",\n\"Template\": \"\\u30c6\\u30f3\\u30d7\\u30ec\\u30fc\\u30c8\",\n\"Text color\": \"\\u30c6\\u30ad\\u30b9\\u30c8\\u306e\\u8272\",\n\"Background color\": \"\\u80cc\\u666f\\u8272\",\n\"Custom...\": \"\\u30ab\\u30b9\\u30bf\\u30e0...\",\n\"Custom color\": \"\\u30ab\\u30b9\\u30bf\\u30e0\\u30ab\\u30e9\\u30fc\",\n\"No color\": \"\\u30ab\\u30e9\\u30fc\\u306a\\u3057\",\n\"Remove color\": \"\\u8272\\u8a2d\\u5b9a\\u3092\\u89e3\\u9664\",\n\"Table of Contents\": \"\\u76ee\\u6b21\",\n\"Show blocks\": \"\\u6587\\u7ae0\\u306e\\u533a\\u5207\\u308a\\u3092\\u70b9\\u7dda\\u3067\\u8868\\u793a\",\n\"Show invisible characters\": \"\\u4e0d\\u53ef\\u8996\\u6587\\u5b57\\u3092\\u8868\\u793a\",\n\"Word count\": \"\\u6587\\u5b57\\u6570\\u30ab\\u30a6\\u30f3\\u30c8\",\n\"Count\": \"\\u30ab\\u30a6\\u30f3\\u30c8\",\n\"Document\": \"\\u30c9\\u30ad\\u30e5\\u30e1\\u30f3\\u30c8\",\n\"Selection\": \"\\u9078\\u629e\",\n\"Words\": \"\\u5358\\u8a9e\\u6570\",\n\"Words: {0}\": \"\\u5358\\u8a9e\\u6570: {0}\",\n\"{0} words\": \"{0} \\u30ef\\u30fc\\u30c9\",\n\"File\": \"\\u30d5\\u30a1\\u30a4\\u30eb\",\n\"Edit\": \"\\u7de8\\u96c6\",\n\"Insert\": \"\\u633f\\u5165\",\n\"View\": \"\\u8868\\u793a\",\n\"Format\": \"\\u66f8\\u5f0f\",\n\"Table\": \"\\u8868\",\n\"Tools\": \"\\u30c4\\u30fc\\u30eb\",\n\"Powered by {0}\": \"Powered by {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u66f8\\u5f0f\\u4ed8\\u304d\\u30c6\\u30ad\\u30b9\\u30c8\\u306e\\u7de8\\u96c6\\u753b\\u9762\\u3002ALT-F9\\u3067\\u30e1\\u30cb\\u30e5\\u30fc\\u3001ALT-F10\\u3067\\u30c4\\u30fc\\u30eb\\u30d0\\u30fc\\u3001ALT-0\\u3067\\u30d8\\u30eb\\u30d7\\u304c\\u8868\\u793a\\u3055\\u308c\\u307e\\u3059\\u3002\",\n\"Image title\": \"\\u753b\\u50cf\\u30bf\\u30a4\\u30c8\\u30eb\",\n\"Border width\": \"\\u67a0\\u7dda\\u5e45\",\n\"Border style\": \"\\u67a0\\u7dda\\u30b9\\u30bf\\u30a4\\u30eb\",\n\"Error\": \"\\u30a8\\u30e9\\u30fc\",\n\"Warn\": \"\\u8b66\\u544a\",\n\"Valid\": \"\\u6709\\u52b9\",\n\"To open the popup, press Shift+Enter\": \"\\u30dd\\u30c3\\u30d7\\u30a2\\u30c3\\u30d7\\u3092\\u958b\\u304f\\u306b\\u306f\\u3001Shift+Enter\\u3092\\u62bc\\u3057\\u3066\\u304f\\u3060\\u3055\\u3044\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u30ea\\u30c3\\u30c1\\u30c6\\u30ad\\u30b9\\u30c8\\u30a8\\u30ea\\u30a2\\u3002Alt-0\\u3067\\u30d8\\u30eb\\u30d7\\u304c\\u8868\\u793a\\u3055\\u308c\\u307e\\u3059\\u3002\",\n\"System Font\": \"\\u30b7\\u30b9\\u30c6\\u30e0\\u30d5\\u30a9\\u30f3\\u30c8\",\n\"Failed to upload image: {0}\": \"\\u753b\\u50cf{0}\\u3092\\u30a2\\u30c3\\u30d7\\u30ed\\u30fc\\u30c9\\u3067\\u304d\\u307e\\u305b\\u3093\\u3067\\u3057\\u305f\",\n\"Failed to load plugin: {0} from url {1}\": \"URL{1}\\u304b\\u3089\\u306e\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3{0}\\u306e\\u8aad\\u307f\\u8fbc\\u307f\\u306b\\u5931\\u6557\\u3057\\u307e\\u3057\\u305f\",\n\"Failed to load plugin url: {0}\": \"\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3\\u306eURL{0}\\u3092\\u8aad\\u307f\\u8fbc\\u3081\\u307e\\u305b\\u3093\\u3067\\u3057\\u305f\",\n\"Failed to initialize plugin: {0}\": \"\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3{0}\\u306e\\u521d\\u671f\\u5316\\u306b\\u5931\\u6557\\u3057\\u307e\\u3057\\u305f\",\n\"example\": \"\\u4f8b\",\n\"Search\": \"\\u691c\\u7d22\",\n\"All\": \"\\u3059\\u3079\\u3066\",\n\"Currency\": \"\\u901a\\u8ca8\",\n\"Text\": \"\\u30c6\\u30ad\\u30b9\\u30c8\",\n\"Quotations\": \"\\u5f15\\u7528\",\n\"Mathematical\": \"\\u6570\\u5b66\\u8a18\\u53f7\",\n\"Extended Latin\": \"\\u30e9\\u30c6\\u30f3\\u6587\\u5b57\\u62e1\\u5f35\",\n\"Symbols\": \"\\u8a18\\u53f7\",\n\"Arrows\": \"\\u77e2\\u5370\",\n\"User Defined\": \"\\u30e6\\u30fc\\u30b6\\u30fc\\u5b9a\\u7fa9\",\n\"dollar sign\": \"\\u30c9\\u30eb\\u8a18\\u53f7\",\n\"currency sign\": \"\\u901a\\u8ca8\\u8a18\\u53f7\",\n\"euro-currency sign\": \"\\u30e6\\u30fc\\u30ed\\u8a18\\u53f7\",\n\"colon sign\": \"\\u30b3\\u30ed\\u30f3\\u8a18\\u53f7\",\n\"cruzeiro sign\": \"\\u30af\\u30eb\\u30bc\\u30a4\\u30ed\\u8a18\\u53f7\",\n\"french franc sign\": \"\\u30d5\\u30e9\\u30f3\\u30b9\\u30d5\\u30e9\\u30f3\\u8a18\\u53f7\",\n\"lira sign\": \"\\u30ea\\u30e9\\u8a18\\u53f7\",\n\"mill sign\": \"\\u30df\\u30eb\\u8a18\\u53f7\",\n\"naira sign\": \"\\u30ca\\u30a4\\u30e9\\u8a18\\u53f7\",\n\"peseta sign\": \"\\u30da\\u30bb\\u30bf\\u8a18\\u53f7\",\n\"rupee sign\": \"\\u30eb\\u30d4\\u30fc\\u8a18\\u53f7\",\n\"won sign\": \"\\u30a6\\u30a9\\u30f3\\u8a18\\u53f7\",\n\"new sheqel sign\": \"\\u65b0\\u30b7\\u30a7\\u30b1\\u30eb\\u8a18\\u53f7\",\n\"dong sign\": \"\\u30c9\\u30f3\\u8a18\\u53f7\",\n\"kip sign\": \"\\u30ad\\u30fc\\u30d7\\u8a18\\u53f7\",\n\"tugrik sign\": \"\\u30c8\\u30a5\\u30b0\\u30eb\\u30b0\\u8a18\\u53f7\",\n\"drachma sign\": \"\\u30c9\\u30e9\\u30af\\u30de\\u8a18\\u53f7\",\n\"german penny symbol\": \"\\u30c9\\u30a4\\u30c4\\u30da\\u30cb\\u30fc\\u8a18\\u53f7\",\n\"peso sign\": \"\\u30da\\u30bd\\u8a18\\u53f7\",\n\"guarani sign\": \"\\u30ac\\u30e9\\u30cb\\u8a18\\u53f7\",\n\"austral sign\": \"\\u30a2\\u30a6\\u30b9\\u30c8\\u30e9\\u30eb\\u8a18\\u53f7\",\n\"hryvnia sign\": \"\\u30d5\\u30ea\\u30f4\\u30cb\\u30e3\\u8a18\\u53f7\",\n\"cedi sign\": \"\\u30bb\\u30c7\\u30a3\\u8a18\\u53f7\",\n\"livre tournois sign\": \"\\u30c8\\u30a5\\u30fc\\u30eb\\u30dd\\u30f3\\u30c9\\u8a18\\u53f7\",\n\"spesmilo sign\": \"\\u30b9\\u30da\\u30b9\\u30df\\u30fc\\u30ed\\u8a18\\u53f7\",\n\"tenge sign\": \"\\u30c6\\u30f3\\u30b2\\u8a18\\u53f7\",\n\"indian rupee sign\": \"\\u30a4\\u30f3\\u30c9\\u30eb\\u30d4\\u30fc\\u8a18\\u53f7\",\n\"turkish lira sign\": \"\\u30c8\\u30eb\\u30b3\\u30ea\\u30e9\\u8a18\\u53f7\",\n\"nordic mark sign\": \"\\u5317\\u6b27\\u30de\\u30eb\\u30af\\u8a18\\u53f7\",\n\"manat sign\": \"\\u30de\\u30ca\\u30c8\\u8a18\\u53f7\",\n\"ruble sign\": \"\\u30eb\\u30fc\\u30d6\\u30eb\\u8a18\\u53f7\",\n\"yen character\": \"\\u5186\\u8a18\\u53f7\",\n\"yuan character\": \"\\u4eba\\u6c11\\u5143\\u8a18\\u53f7\",\n\"yuan character, in hong kong and taiwan\": \"\\u9999\\u6e2f\\u304a\\u3088\\u3073\\u53f0\\u6e7e\\u306b\\u304a\\u3051\\u308b\\u5143\\u8a18\\u53f7\",\n\"yen\\/yuan character variant one\": \"\\u5186\\/\\u5143\\u8a18\\u53f7\\u306e\\u30d0\\u30ea\\u30a8\\u30fc\\u30b7\\u30e7\\u30f3\",\n\"Loading emoticons...\": \"\\u7d75\\u6587\\u5b57\\u3092\\u8aad\\u307f\\u8fbc\\u3093\\u3067\\u3044\\u307e\\u3059...\",\n\"Could not load emoticons\": \"\\u7d75\\u6587\\u5b57\\u304c\\u8aad\\u307f\\u8fbc\\u3081\\u307e\\u305b\\u3093\\u3067\\u3057\\u305f\\u3002\",\n\"People\": \"\\u4eba\",\n\"Animals and Nature\": \"\\u52d5\\u7269\\u3068\\u81ea\\u7136\",\n\"Food and Drink\": \"\\u98df\\u3079\\u7269\\u3068\\u98f2\\u307f\\u7269\",\n\"Activity\": \"\\u884c\\u52d5\",\n\"Travel and Places\": \"\\u65c5\\u884c\\u3068\\u5834\\u6240\",\n\"Objects\": \"\\u7269\",\n\"Flags\": \"\\u65d7\",\n\"Characters\": \"\\u6587\\u5b57\\u6570\",\n\"Characters (no spaces)\": \"\\u6587\\u5b57\\u6570 (\\u30b9\\u30da\\u30fc\\u30b9\\u306a\\u3057)\",\n\"{0} characters\": \"{0}\\u6587\\u5b57\",\n\"Error: Form submit field collision.\": \"\\u30a8\\u30e9\\u30fc\\uff1a\\u30d5\\u30a9\\u30fc\\u30e0\\u9001\\u4fe1\\u30d5\\u30a3\\u30fc\\u30eb\\u30c9\\u304c\\u7af6\\u5408\\u3057\\u3066\\u3044\\u307e\\u3059\\u3002\",\n\"Error: No form element found.\": \"\\u30a8\\u30e9\\u30fc\\uff1a\\u30d5\\u30a9\\u30fc\\u30e0\\u8981\\u7d20\\u304c\\u898b\\u3064\\u304b\\u308a\\u307e\\u305b\\u3093\\u3067\\u3057\\u305f\\u3002\",\n\"Update\": \"\\u66f4\\u65b0\",\n\"Color swatch\": \"\\u8272\\u306e\\u898b\\u672c\",\n\"Turquoise\": \"\\u30bf\\u30fc\\u30b3\\u30a4\\u30ba\",\n\"Green\": \"\\u30b0\\u30ea\\u30fc\\u30f3\",\n\"Blue\": \"\\u30d6\\u30eb\\u30fc\",\n\"Purple\": \"\\u30d1\\u30fc\\u30d7\\u30eb\",\n\"Navy Blue\": \"\\u30cd\\u30a4\\u30d3\\u30fc\",\n\"Dark Turquoise\": \"\\u30c0\\u30fc\\u30af\\u30bf\\u30fc\\u30b3\\u30a4\\u30ba\",\n\"Dark Green\": \"\\u30c0\\u30fc\\u30af\\u30b0\\u30ea\\u30fc\\u30f3\",\n\"Medium Blue\": \"\\u30e1\\u30c7\\u30a3\\u30a2\\u30e0\\u30d6\\u30eb\\u30fc\",\n\"Medium Purple\": \"\\u30df\\u30c7\\u30a3\\u30a2\\u30e0\\u30d1\\u30fc\\u30d7\\u30eb\",\n\"Midnight Blue\": \"\\u30df\\u30c3\\u30c9\\u30ca\\u30a4\\u30c8\\u30d6\\u30eb\\u30fc\",\n\"Yellow\": \"\\u30a4\\u30a8\\u30ed\\u30fc\",\n\"Orange\": \"\\u30aa\\u30ec\\u30f3\\u30b8\",\n\"Red\": \"\\u30ec\\u30c3\\u30c9\",\n\"Light Gray\": \"\\u30e9\\u30a4\\u30c8\\u30b0\\u30ec\\u30fc\",\n\"Gray\": \"\\u30b0\\u30ec\\u30fc\",\n\"Dark Yellow\": \"\\u30c0\\u30fc\\u30af\\u30a4\\u30a8\\u30ed\\u30fc\",\n\"Dark Orange\": \"\\u30c0\\u30fc\\u30af\\u30aa\\u30ec\\u30f3\\u30b8\",\n\"Dark Red\": \"\\u30c0\\u30fc\\u30af\\u30ec\\u30c3\\u30c9\",\n\"Medium Gray\": \"\\u30df\\u30c7\\u30a3\\u30a2\\u30e0\\u30b0\\u30ec\\u30fc\",\n\"Dark Gray\": \"\\u30c0\\u30fc\\u30af\\u30b0\\u30ec\\u30fc\",\n\"Light Green\": \"\\u30e9\\u30a4\\u30c8\\u30b0\\u30ea\\u30fc\\u30f3\",\n\"Light Yellow\": \"\\u30e9\\u30a4\\u30c8\\u30a4\\u30a8\\u30ed\\u30fc\",\n\"Light Red\": \"\\u30e9\\u30a4\\u30c8\\u30ec\\u30c3\\u30c9\",\n\"Light Purple\": \"\\u30e9\\u30a4\\u30c8\\u30d1\\u30fc\\u30d7\\u30eb\",\n\"Light Blue\": \"\\u30e9\\u30a4\\u30c8\\u30d6\\u30eb\\u30fc\",\n\"Dark Purple\": \"\\u30c0\\u30fc\\u30af\\u30d1\\u30fc\\u30d7\\u30eb\",\n\"Dark Blue\": \"\\u30c0\\u30fc\\u30af\\u30d6\\u30eb\\u30fc\",\n\"Black\": \"\\u30d6\\u30e9\\u30c3\\u30af\",\n\"White\": \"\\u30db\\u30ef\\u30a4\\u30c8\",\n\"Switch to or from fullscreen mode\": \"\\u30d5\\u30eb\\u30b9\\u30af\\u30ea\\u30fc\\u30f3\\u30e2\\u30fc\\u30c9\\u5207\\u66ff\",\n\"Open help dialog\": \"\\u30d8\\u30eb\\u30d7\\u30c0\\u30a4\\u30a2\\u30ed\\u30b0\\u3092\\u958b\\u304f\",\n\"history\": \"\\u5c65\\u6b74\",\n\"styles\": \"\\u30b9\\u30bf\\u30a4\\u30eb\",\n\"formatting\": \"\\u66f8\\u5f0f\",\n\"alignment\": \"\\u914d\\u7f6e\",\n\"indentation\": \"\\u30a4\\u30f3\\u30c7\\u30f3\\u30c8\",\n\"permanent pen\": \"\\u86cd\\u5149\\u30da\\u30f3\",\n\"comments\": \"\\u30b3\\u30e1\\u30f3\\u30c8\",\n\"Format Painter\": \"\\u66f8\\u5f0f\\u306e\\u30b3\\u30d4\\u30fc\\/\\u8cbc\\u308a\\u4ed8\\u3051\",\n\"Insert\\/edit iframe\": \"iframe\\u306e\\u633f\\u5165\\/\\u7de8\\u96c6\",\n\"Capitalization\": \"\\u5927\\u6587\\u5b57\\u5316\",\n\"lowercase\": \"\\u5c0f\\u6587\\u5b57\",\n\"UPPERCASE\": \"\\u5927\\u6587\\u5b57\",\n\"Title Case\": \"\\u30bf\\u30a4\\u30c8\\u30eb\\u6587\\u5b57\",\n\"Permanent Pen Properties\": \"\\u86cd\\u5149\\u30da\\u30f3\\u306e\\u30d7\\u30ed\\u30d1\\u30c6\\u30a3\",\n\"Permanent pen properties...\": \"\\u86cd\\u5149\\u30da\\u30f3\\u306e\\u30d7\\u30ed\\u30d1\\u30c6\\u30a3...\",\n\"Font\": \"\\u30d5\\u30a9\\u30f3\\u30c8\",\n\"Size\": \"\\u30b5\\u30a4\\u30ba\",\n\"More...\": \"\\u8a73\\u7d30...\",\n\"Spellcheck Language\": \"\\u8a00\\u8a9e\\u306e\\u30b9\\u30da\\u30eb\\u30c1\\u30a7\\u30c3\\u30af\",\n\"Select...\": \"\\u9078\\u629e...\",\n\"Preferences\": \"\\u30d7\\u30ea\\u30d5\\u30a1\\u30ec\\u30f3\\u30b9\",\n\"Yes\": \"\\u306f\\u3044\",\n\"No\": \"\\u3044\\u3044\\u3048\",\n\"Keyboard Navigation\": \"\\u30ad\\u30fc\\u30dc\\u30fc\\u30c9\\u30ca\\u30d3\\u30b2\\u30fc\\u30b7\\u30e7\\u30f3\",\n\"Version\": \"\\u30d0\\u30fc\\u30b8\\u30e7\\u30f3\",\n\"Anchor\": \"\\u30a2\\u30f3\\u30ab\\u30fc\\uff08\\u30ea\\u30f3\\u30af\\u306e\\u5230\\u9054\\u70b9\\uff09\",\n\"Special character\": \"\\u7279\\u6b8a\\u6587\\u5b57\",\n\"Code sample\": \"\\u30b3\\u30fc\\u30c9\\u30b5\\u30f3\\u30d7\\u30eb\",\n\"Color\": \"\\u30ab\\u30e9\\u30fc\",\n\"Emoticons\": \"\\u7d75\\u6587\\u5b57\",\n\"Document properties\": \"\\u30c9\\u30ad\\u30e5\\u30e1\\u30f3\\u30c8\\u306e\\u30d7\\u30ed\\u30d1\\u30c6\\u30a3\",\n\"Image\": \"\\u753b\\u50cf\",\n\"Insert link\": \"\\u30ea\\u30f3\\u30af\",\n\"Target\": \"\\u30bf\\u30fc\\u30b2\\u30c3\\u30c8\\u5c5e\\u6027\",\n\"Link\": \"\\u30ea\\u30f3\\u30af\",\n\"Poster\": \"\\u4ee3\\u66ff\\u753b\\u50cf\\u306e\\u5834\\u6240\",\n\"Media\": \"\\u30e1\\u30c7\\u30a3\\u30a2\",\n\"Print\": \"\\u5370\\u5237\",\n\"Prev\": \"\\u524d\",\n\"Find and replace\": \"\\u691c\\u7d22\\u3068\\u7f6e\\u304d\\u63db\\u3048\",\n\"Whole words\": \"\\u5358\\u8a9e\\u5358\\u4f4d\\u3067\\u691c\\u7d22\\u3059\\u308b\",\n\"Spellcheck\": \"\\u30b9\\u30da\\u30eb\\u30c1\\u30a7\\u30c3\\u30af\",\n\"Caption\": \"\\u8868\\u984c\",\n\"Insert template\": \"\\u30c6\\u30f3\\u30d7\\u30ec\\u30fc\\u30c8\\u306e\\u633f\\u5165\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/kab.js",
    "content": "tinymce.addI18n('kab',{\n\"Redo\": \"Err-d\",\n\"Undo\": \"Semmet\",\n\"Cut\": \"Gzem\",\n\"Copy\": \"N\\u0263el\",\n\"Paste\": \"Sente\\u1e0d\",\n\"Select all\": \"Fren kulec\",\n\"New document\": \"Attaftar amaynut\",\n\"Ok\": \"Ih\",\n\"Cancel\": \"Semmet\",\n\"Visual aids\": \"Visual aids\",\n\"Bold\": \"Tira tazurant\",\n\"Italic\": \"Tira yeknan\",\n\"Underline\": \"Aderrer\",\n\"Strikethrough\": \"Strikethrough\",\n\"Superscript\": \"Superscript\",\n\"Subscript\": \"Subscript\",\n\"Clear formatting\": \"Clear formatting\",\n\"Align left\": \"Tarigla \\u0263er zelma\\u1e0d\",\n\"Align center\": \"Di tlemast\",\n\"Align right\": \"tarigla \\u0263er zelma\\u1e0d\",\n\"Justify\": \"Justify\",\n\"Bullet list\": \"Tabdart s tlillac\",\n\"Numbered list\": \"Tabdart s wu\\u1e6d\\u1e6dunen\",\n\"Decrease indent\": \"Simc\\u1e6du\\u1e25 asi\\u1e93i\",\n\"Increase indent\": \"Sim\\u0263ur asi\\u1e93i\",\n\"Close\": \"Mdel\",\n\"Formats\": \"Imasalen\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\",\n\"Headers\": \"Izwal\",\n\"Header 1\": \"Azwel 1\",\n\"Header 2\": \"Azwel 2\",\n\"Header 3\": \"Azwel 3\",\n\"Header 4\": \"Azwel 4\",\n\"Header 5\": \"Header 5\",\n\"Header 6\": \"Azwel 6\",\n\"Headings\": \"Izewlen\",\n\"Heading 1\": \"Inixf 1\",\n\"Heading 2\": \"Inixf 2\",\n\"Heading 3\": \"Inixf 3\",\n\"Heading 4\": \"Inixf 4\",\n\"Heading 5\": \"Inixf 5\",\n\"Heading 6\": \"Inixf 6\",\n\"Preformatted\": \"Yettwamsel si tazwara\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Tangalt\",\n\"Paragraph\": \"taseddart\",\n\"Blockquote\": \"Tanebdurt\",\n\"Inline\": \"Inline\",\n\"Blocks\": \"I\\u1e25edran\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\",\n\"Fonts\": \"Tisefsa\",\n\"Font Sizes\": \"Tiddi n tsefsit\",\n\"Class\": \"Asmil\",\n\"Browse for an image\": \"Snirem iwakken ad tferne\\u1e0d tugna\",\n\"OR\": \"Ih\",\n\"Drop an image here\": \"Ssers tugna dagi\",\n\"Upload\": \"Sili\",\n\"Block\": \"Sew\\u1e25el\",\n\"Align\": \"Settef\",\n\"Default\": \"Lex\\u1e63as\",\n\"Circle\": \"Tawinest\",\n\"Disc\": \"A\\u1e0debsi\",\n\"Square\": \"Amku\\u1e93\",\n\"Lower Alpha\": \"Alpha ame\\u1e93yan\",\n\"Lower Greek\": \"Grik ame\\u1e93yan\",\n\"Lower Roman\": \"Ruman amectu\\u1e25\",\n\"Upper Alpha\": \"Alfa ameqran\",\n\"Upper Roman\": \"Ruman ameqran\",\n\"Anchor...\": \"Tamdeyt...\",\n\"Name\": \"Isem\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"id ilaq ad ibdu s usekkil, ad yettwa\\u1e0dfer kan s isekkilen, im\\u1e0danen, ijerri\\u1e0den, tinqi\\u1e0din, snat n tenqi\\u1e0din ne\\u0263 ijerri\\u1e0den n wadda.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Ibeddilen ur twaskelsen ara teb\\u0263i\\u1e0d ad teff\\u0263e\\u1e0d ?\",\n\"Restore last draft\": \"Restore last draft\",\n\"Special character...\": \"Isekkilen uzzigen...\",\n\"Source code\": \"Tangalt ta\\u0263balut\",\n\"Insert\\/Edit code sample\": \"Ger\\/\\u1e92reg tangalt n umedya\",\n\"Language\": \"Tutlayt\",\n\"Code sample...\": \"Amedya n tengalt...\",\n\"Color Picker\": \"Amelqa\\u1e0d n yini\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Seg zelma\\u1e0d \\u0263er yefus\",\n\"Right to left\": \"Seg yefus \\u0263er zelma\\u1e0d\",\n\"Emoticons...\": \"Tigitin n u\\u1e25ulfu...\",\n\"Metadata and Document Properties\": \"Idfersefka akked yiraten n yisemli\",\n\"Title\": \"Azwel\",\n\"Keywords\": \"Awalen yufraren\",\n\"Description\": \"Aglam\",\n\"Robots\": \"Robots\",\n\"Author\": \"Ameskar\",\n\"Encoding\": \"Asettengel\",\n\"Fullscreen\": \"Agdil a\\u010duran\",\n\"Action\": \"Tigawt\",\n\"Shortcut\": \"Anegzum\",\n\"Help\": \"Tallalt\",\n\"Address\": \"Tansa\",\n\"Focus to menubar\": \"Asa\\u1e0des \\u0263ef tfeggagt n wumu\\u0263\",\n\"Focus to toolbar\": \"Asa\\u1e0des \\u0263ef tfeggagt n ifecka\",\n\"Focus to element path\": \"Asa\\u1e0des \\u0263ef ubrid n uferdis\",\n\"Focus to contextual toolbar\": \"Asa\\u1e0des \\u0263ef tfeggagt n ifecka tanattalt\",\n\"Insert link (if link plugin activated)\": \"Ger ase\\u0263wen (ma yermed uzegrir n use\\u0263wen)\",\n\"Save (if save plugin activated)\": \"Sekles (ma yermed uzegrir save)\",\n\"Find (if searchreplace plugin activated)\": \"Nadi (ma yermed uzegrir searchreplace)\",\n\"Plugins installed ({0}):\": \"Izegriren yettwasbedden ({0}):\",\n\"Premium plugins:\": \"Izegriren premium :\",\n\"Learn more...\": \"\\u1e92er ugar...\",\n\"You are using {0}\": \"Tsseqdace\\u1e0d {0}\",\n\"Plugins\": \"Isi\\u0263zifen\",\n\"Handy Shortcuts\": \"Inegzumen\",\n\"Horizontal line\": \"Ajerri\\u1e0d aglawan\",\n\"Insert\\/edit image\": \"Ger\\/\\u1e92reg tugna\",\n\"Image description\": \"Aglam n tugna\",\n\"Source\": \"A\\u0263balu\",\n\"Dimensions\": \"Tisekta\",\n\"Constrain proportions\": \"Constrain proportions\",\n\"General\": \"Amatu\",\n\"Advanced\": \"Ana\\u1e93i\",\n\"Style\": \"A\\u0263anib\",\n\"Vertical space\": \"Talunt taratakt\",\n\"Horizontal space\": \"Talunt taglawant\",\n\"Border\": \"Iri\",\n\"Insert image\": \"Ger tugna\",\n\"Image...\": \"Tugna...\",\n\"Image list\": \"Tabdart n tugniwin\",\n\"Rotate counterclockwise\": \"Tuzya mgal tamrilt\",\n\"Rotate clockwise\": \"Tuzya yugdan tamrilt\",\n\"Flip vertically\": \"Tuzya taratakt\",\n\"Flip horizontally\": \"Tuzttya tagrawant\",\n\"Edit image\": \"\\u1e92reg tugna\",\n\"Image options\": \"Tixti\\u1e5biyin n tugna\",\n\"Zoom in\": \"Zoom in\",\n\"Zoom out\": \"Zoom out\",\n\"Crop\": \"Rogner\",\n\"Resize\": \"Beddel tiddi\",\n\"Orientation\": \"Ta\\u0263da\",\n\"Brightness\": \"Tafat\",\n\"Sharpen\": \"Affiner\",\n\"Contrast\": \"Contrast\",\n\"Color levels\": \"Iswiren n yini\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Tti\",\n\"Apply\": \"Snes\",\n\"Back\": \"Tu\\u0263alin\",\n\"Insert date\\/time\": \"Ger azemz\\/asrag\",\n\"Date\\/time\": \"Azemz\\/Asrag\",\n\"Insert\\/Edit Link\": \"Ger\\/\\u1e92reg as\\u0263en\",\n\"Insert\\/edit link\": \"Ger\\/\\u1e93reg azday\",\n\"Text to display\": \"A\\u1e0dris ara yettwabeqq\\u1e0den\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Ldi as\\u0263en di...\",\n\"Current window\": \"Asfaylu amiran\",\n\"None\": \"Ulac\",\n\"New window\": \"Asfaylu amaynut\",\n\"Remove link\": \"Kkes azday\",\n\"Anchors\": \"Timdyin\",\n\"Link...\": \"As\\u0263en...\",\n\"Paste or type a link\": \"Sente\\u1e0d ne\\u0263 sekcem ase\\u0263wen\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"URL i teskecme\\u1e0d tettban-d d tansa email. teb\\u0263i\\u1e0d ad s-ternu\\u1e0d azwir mailto : ?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"URL i teskecme\\u1e0d tettban-d d azday uffi\\u0263. Teb\\u0263i\\u1e0d ad s-ternu\\u1e0d azwir http:\\/\\/  ?\",\n\"Link list\": \"Tabdart n is\\u0263ewnen\",\n\"Insert video\": \"Ger avidyu\",\n\"Insert\\/edit video\": \"Ger\\/\\u1e93reg avidyu\",\n\"Insert\\/edit media\": \"Ger\\/\\u1e92reg amiya\",\n\"Alternative source\": \"A\\u0263balu amlellay\",\n\"Alternative source URL\": \"A\\u0263balu n URL amlellay\",\n\"Media poster (Image URL)\": \"Abeqqi\\u1e0d n umidya (URL n tugna)\",\n\"Paste your embed code below:\": \"Paste your embed code below:\",\n\"Embed\": \"Embed\",\n\"Media...\": \"Amidya...\",\n\"Nonbreaking space\": \"Talunt ur nettwagzam ara\",\n\"Page break\": \"Angaz n usebter\",\n\"Paste as text\": \"Sente\\u1e0d d a\\u1e0dris\",\n\"Preview\": \"Sken\",\n\"Print...\": \"Siggez...\",\n\"Save\": \"Sekles\",\n\"Find\": \"Nadi\",\n\"Replace with\": \"Semselsi s\",\n\"Replace\": \"Semselsi\",\n\"Replace all\": \"Semselsi kulec\",\n\"Previous\": \"Uzwir\",\n\"Next\": \"Win \\u0263ers\",\n\"Find and replace...\": \"Nadi semselsi...\",\n\"Could not find the specified string.\": \"Ur d-nufi ara azrar i d-yettunefken.\",\n\"Match case\": \"Match case\",\n\"Find whole words only\": \"Af-d awal ummid kan\",\n\"Spell check\": \"Selken ta\\u0263dirawt\",\n\"Ignore\": \"Zgel\",\n\"Ignore all\": \"Zgel kulec\",\n\"Finish\": \"Fak\",\n\"Add to Dictionary\": \"Rnu-t s amawal\",\n\"Insert table\": \"Ger tafelwit\",\n\"Table properties\": \"Iraten n tfelwit\",\n\"Delete table\": \"Kkes tafelwit\",\n\"Cell\": \"Taxxamt\",\n\"Row\": \"Adur\",\n\"Column\": \"Tagejdit\",\n\"Cell properties\": \"Iraten n texxamt\",\n\"Merge cells\": \"Seddukel tixxamin\",\n\"Split cell\": \"B\\u1e0du tixxamin\",\n\"Insert row before\": \"Ger adur deffir\",\n\"Insert row after\": \"Ger adur sdat\",\n\"Delete row\": \"Kkes tagejdit\",\n\"Row properties\": \"Iraten n udur\",\n\"Cut row\": \"Gzem adur\",\n\"Copy row\": \"N\\u0263el adur\",\n\"Paste row before\": \"Sente\\u1e0d adur sdat\",\n\"Paste row after\": \"Sente\\u1e0d adur deffir\",\n\"Insert column before\": \"Sente\\u1e0d tagejdit sdat\",\n\"Insert column after\": \"Sente\\u1e0d tagejdit deffir\",\n\"Delete column\": \"Kkes tagejdit\",\n\"Cols\": \"Tigejda\",\n\"Rows\": \"Aduren\",\n\"Width\": \"Tehri\",\n\"Height\": \"Te\\u0263zi\",\n\"Cell spacing\": \"Tlunt ger texxamin\",\n\"Cell padding\": \"Tama n texxamt\",\n\"Show caption\": \"Sken taw\\u1e6d\\u1e6dfa\",\n\"Left\": \"\\u0194er zelma\\u1e0d\",\n\"Center\": \"Di tlemmast\",\n\"Right\": \"\\u0194er yefus\",\n\"Cell type\": \"Anaw n texxamt\",\n\"Scope\": \"Scope\",\n\"Alignment\": \"Tarigla\",\n\"H Align\": \"Tarigla taglawant\",\n\"V Align\": \"Tarigla taratakt\",\n\"Top\": \"Uksawen\",\n\"Middle\": \"Di tlemmast\",\n\"Bottom\": \"Uksar\",\n\"Header cell\": \"Tasen\\u1e6di\\u1e0dt n texxamt\",\n\"Row group\": \"Agraw n waduren\",\n\"Column group\": \"Agraw n tgejda\",\n\"Row type\": \"Anaw n wadur\",\n\"Header\": \"Tasenti\\u1e0dt\",\n\"Body\": \"Tafka\",\n\"Footer\": \"A\\u1e0dar\",\n\"Border color\": \"Ini n yiri\",\n\"Insert template...\": \"Ger tane\\u0263ruft...\",\n\"Templates\": \"Timudimin\",\n\"Template\": \"Tine\\u0263rufin\",\n\"Text color\": \"Ini n u\\u1e0dris\",\n\"Background color\": \"Ini n ugilal\",\n\"Custom...\": \"Custom...\",\n\"Custom color\": \"Custom color\",\n\"No color\": \"Ulac ini\",\n\"Remove color\": \"Kkes ini\",\n\"Table of Contents\": \"Tafelwit n ugbur\",\n\"Show blocks\": \"Beqqe\\u1e0d i\\u1e25edran\",\n\"Show invisible characters\": \"Beqqe\\u1e0d isekkilen uffiren\",\n\"Word count\": \"Am\\u1e0dan n wawalen\",\n\"Count\": \"A\\u0263rud\",\n\"Document\": \"Isemli\",\n\"Selection\": \"Tafrayt\",\n\"Words\": \"Awalen\",\n\"Words: {0}\": \"Words: {0}\",\n\"{0} words\": \"{0} n wawalen\",\n\"File\": \"Afaylu\",\n\"Edit\": \"\\u1e92reg\",\n\"Insert\": \"Ger\",\n\"View\": \"Tamu\\u0263li\",\n\"Format\": \"Amasal\",\n\"Table\": \"Tafelwit\",\n\"Tools\": \"Ifecka\",\n\"Powered by {0}\": \"Iteddu s {0} \",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\",\n\"Image title\": \"Azwel n tugna\",\n\"Border width\": \"Tehri n yiri\",\n\"Border style\": \"A\\u0263anib n yiri\",\n\"Error\": \"Tucc\\u1e0da\",\n\"Warn\": \"\\u0190eyyen\",\n\"Valid\": \"Ame\\u0263tu\",\n\"To open the popup, press Shift+Enter\": \"Iwakken ad teldi\\u1e0d asfaylu udhim, ssed Shift+Kcem\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Ta\\u0263zut n u\\u1e0dris anesba\\u0263ur. Ssed ALT-0 i tallelt.\",\n\"System Font\": \"Anagraw n tsefsa\",\n\"Failed to upload image: {0}\": \"Tucc\\u1e0da deg usili n tugna: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Tucc\\u1e0da deg usili n usi\\u0263zef: {0} seg url {1}\",\n\"Failed to load plugin url: {0}\": \"Tucc\\u1e0da deg usali n usi\\u0263zef: {0}\",\n\"Failed to initialize plugin: {0}\": \"Tucc\\u1e0da deg wallus n uwennez n usi\\u0263zef: {0}\",\n\"example\": \"amedya\",\n\"Search\": \"Nadi\",\n\"All\": \"Akk\",\n\"Currency\": \"Adrim\",\n\"Text\": \"A\\u1e0dris\",\n\"Quotations\": \"Tinebdurin\",\n\"Mathematical\": \"Inemhalen usnaken\",\n\"Extended Latin\": \"Talatinit ye\\u1e93len\",\n\"Symbols\": \"Izamulen\",\n\"Arrows\": \"Tineccabin\",\n\"User Defined\": \"Yesbadu-t useqdac\",\n\"dollar sign\": \"Azamul n dular\",\n\"currency sign\": \"Azamul n wedrim\",\n\"euro-currency sign\": \"azamul n euro\",\n\"colon sign\": \"azamul n kulun\",\n\"cruzeiro sign\": \"azamul n krutayru\",\n\"french franc sign\": \"azamul n f\\u1e5bank afransi\",\n\"lira sign\": \"azamul n lira\",\n\"mill sign\": \"azamul n mil\",\n\"naira sign\": \"azamul n nayra\",\n\"peseta sign\": \"azamul n pizi\\u1e6da\",\n\"rupee sign\": \"azamul n urupi\",\n\"won sign\": \"azamul n wun\",\n\"new sheqel sign\": \"azamul n ciqel amaynut\",\n\"dong sign\": \"azamul n dung\",\n\"kip sign\": \"azamul n kip\",\n\"tugrik sign\": \"azamul n tugrik\",\n\"drachma sign\": \"azamul n d\\u1e5bacma\",\n\"german penny symbol\": \"azamul n pini almani\",\n\"peso sign\": \"azamul n pizu\",\n\"guarani sign\": \"azamul n gwa\\u1e5bani\",\n\"austral sign\": \"azamul n ustral\",\n\"hryvnia sign\": \"azamul n hrivniya\",\n\"cedi sign\": \"azamul n siddi\",\n\"livre tournois sign\": \"azamul lira aturnwa\",\n\"spesmilo sign\": \"azamul n spismilu\",\n\"tenge sign\": \"azamul n tingi\",\n\"indian rupee sign\": \"azamul n urupi ahindi\",\n\"turkish lira sign\": \"azamul n lira a\\u1e6durki\",\n\"nordic mark sign\": \"azamul n ma\\u1e5bk n ugafa\",\n\"manat sign\": \"azamul n mana\\u1e6d\",\n\"ruble sign\": \"azamul n rubl\",\n\"yen character\": \"azamul n yan\",\n\"yuan character\": \"azamul n yuwan\",\n\"yuan character, in hong kong and taiwan\": \"asekkil n yuwan, di hunkung akked \\u1e6daywan\",\n\"yen\\/yuan character variant one\": \"yan\\/yuwan tasenfelt n usekkil yiwen\",\n\"Loading emoticons...\": \"Asali n tignitin n u\\u1e25ulfu...\",\n\"Could not load emoticons\": \"Tucc\\u1e0da deg usali n tignitin n u\\u1e25ulfu\",\n\"People\": \"L\\u0263aci\",\n\"Animals and Nature\": \"i\\u0263ersiwen akked ugama\",\n\"Food and Drink\": \"Tu\\u010d\\u010dit akked tisit\",\n\"Activity\": \"Armud\",\n\"Travel and Places\": \"Asikel akked ime\\u1e0dqan\",\n\"Objects\": \"Ti\\u0263awsiwin\",\n\"Flags\": \"Annayen\",\n\"Characters\": \"Isekkilen\",\n\"Characters (no spaces)\": \"Isekkilen (tallunin ur ttekkint ara)\",\n\"{0} characters\": \"{0} n yisekkilen\",\n\"Error: Form submit field collision.\": \"Tucc\\u1e0da: amgirred n wurtan di tuzzna n tferkit.\",\n\"Error: No form element found.\": \"Ulac aferdis n tferkit i yettwafen.\",\n\"Update\": \"Leqqem\",\n\"Color swatch\": \"Talemmict n yini\",\n\"Turquoise\": \"Ajenjari\",\n\"Green\": \"Azegzaw\",\n\"Blue\": \"Anili\",\n\"Purple\": \"Amidadi\",\n\"Navy Blue\": \"Anili n yilel\",\n\"Dark Turquoise\": \"Ajenjari a\\u0263mayan\",\n\"Dark Green\": \"Azegzaw a\\u0263mayan\",\n\"Medium Blue\": \"Anili alemmas\",\n\"Medium Purple\": \"Amidadi alemmas\",\n\"Midnight Blue\": \"Anili n yi\\u1e0d\",\n\"Yellow\": \"Awra\\u0263\",\n\"Orange\": \"A\\u010d\\u010dinawi\",\n\"Red\": \"Azegga\\u0263\",\n\"Light Gray\": \"Amelli\\u0263di afaw\",\n\"Gray\": \"Amelli\\u0263di\",\n\"Dark Yellow\": \"Awra\\u0263 a\\u0263mayan\",\n\"Dark Orange\": \"A\\u010dinawi a\\u0263mayan\",\n\"Dark Red\": \"Azegga\\u0263 a\\u0263mayan\",\n\"Medium Gray\": \"Amelli\\u0263di alemmas\",\n\"Dark Gray\": \"Amelli\\u0263di a\\u0263mayan\",\n\"Light Green\": \"Azegzaw afaw\",\n\"Light Yellow\": \"Awra\\u0263 afaw\",\n\"Light Red\": \"Azegga\\u0263 afaw\",\n\"Light Purple\": \"Amidadi afaw\",\n\"Light Blue\": \"Anili afaw\",\n\"Dark Purple\": \"Amidadi a\\u0263mayan\",\n\"Dark Blue\": \"Anili a\\u0263mayan\",\n\"Black\": \"Aberkan\",\n\"White\": \"Amellal\",\n\"Switch to or from fullscreen mode\": \"Kcem ne\\u0263 ffe\\u0263 agdil a\\u010d\\u010duran\",\n\"Open help dialog\": \"Ldi tankult n udiwenni n tallelt\",\n\"history\": \"Amazray\",\n\"styles\": \"i\\u0263unab\",\n\"formatting\": \"amsal\",\n\"alignment\": \"aderrec\",\n\"indentation\": \"asi\\u1e93i\",\n\"permanent pen\": \"imru ama\\u0263lal\",\n\"comments\": \"iwenniten\",\n\"Format Painter\": \"Sisleg amsal\",\n\"Insert\\/edit iframe\": \"Ger\\/\\u1e92reg akatar\",\n\"Capitalization\": \"Selket s asekkil ameqran\",\n\"lowercase\": \"asekkil amec\\u1e6du\\u1e25\",\n\"UPPERCASE\": \"ASEKKIL AMEQRAN\",\n\"Title Case\": \"Taj\\u1e5but n uzwel\",\n\"Permanent Pen Properties\": \"Iraten n yimru ama\\u0263lal\",\n\"Permanent pen properties...\": \"Iraten n yimru ama\\u0263lal...\",\n\"Font\": \"Tasefsit\",\n\"Size\": \"Tiddi\",\n\"More...\": \"Ugar...\",\n\"Spellcheck Language\": \"Tutlayt n umse\\u0263ti n tira\",\n\"Select...\": \"Fren...\",\n\"Preferences\": \"Imenyafen\",\n\"Yes\": \"Ih\",\n\"No\": \"Ala\",\n\"Keyboard Navigation\": \"Tunigin s unasiw\",\n\"Version\": \"Lqem\",\n\"Anchor\": \"Tamdeyt\",\n\"Special character\": \"Askil uslig\",\n\"Code sample\": \"Tikkest n tengalt\",\n\"Color\": \"Ini\",\n\"Emoticons\": \"Emoticons\",\n\"Document properties\": \"Iraten n warat\",\n\"Image\": \"Tugna\",\n\"Insert link\": \"Ger azday\",\n\"Target\": \"Target\",\n\"Link\": \"Ase\\u0263wen\",\n\"Poster\": \"Poster\",\n\"Media\": \"Amidya\",\n\"Print\": \"Siggez\",\n\"Prev\": \"Win yezrin\",\n\"Find and replace\": \"Nadi semselsi\",\n\"Whole words\": \"Awal ummid\",\n\"Spellcheck\": \"Ase\\u0263ti n tira\",\n\"Caption\": \"Caption\",\n\"Insert template\": \"Ger tamuddimt\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/kk.js",
    "content": "tinymce.addI18n('kk',{\n\"Redo\": \"\\u049a\\u0430\\u0439\\u0442\\u0430\\u0440\\u0443\",\n\"Undo\": \"\\u0411\\u043e\\u043b\\u0434\\u044b\\u0440\\u043c\\u0430\\u0443\",\n\"Cut\": \"\\u049a\\u0438\\u044b\\u043f \\u0430\\u043b\\u0443\",\n\"Copy\": \"\\u041a\\u04e9\\u0448\\u0456\\u0440\\u0443\",\n\"Paste\": \"\\u049a\\u043e\\u044e\",\n\"Select all\": \"\\u0411\\u0430\\u0440\\u043b\\u044b\\u0493\\u044b\\u043d \\u0442\\u0430\\u04a3\\u0434\\u0430\\u0443\",\n\"New document\": \"\\u0416\\u0430\\u04a3\\u0430 \\u049b\\u04b1\\u0436\\u0430\\u0442\",\n\"Ok\": \"\\u041e\\u041a\",\n\"Cancel\": \"\\u0411\\u0430\\u0441 \\u0442\\u0430\\u0440\\u0442\\u0443\",\n\"Visual aids\": \"\\u041a\\u04e9\\u0440\\u043d\\u0435\\u043a\\u0456 \\u049b\\u04b1\\u0440\\u0430\\u043b\\u0434\\u0430\\u0440\",\n\"Bold\": \"\\u049a\\u0430\\u043b\\u044b\\u04a3\",\n\"Italic\": \"\\u041a\\u04e9\\u043b\\u0431\\u0435\\u0443\",\n\"Underline\": \"\\u0410\\u0441\\u0442\\u044b \\u0441\\u044b\\u0437\\u044b\\u043b\\u0493\\u0430\\u043d\",\n\"Strikethrough\": \"\\u0421\\u044b\\u0437\\u044b\\u043b\\u0493\\u0430\\u043d\",\n\"Superscript\": \"\\u0416\\u043e\\u043b \\u04af\\u0441\\u0442\\u0456\",\n\"Subscript\": \"\\u0416\\u043e\\u043b \\u0430\\u0441\\u0442\\u044b\",\n\"Clear formatting\": \"\\u041f\\u0456\\u0448\\u0456\\u043c\\u0434\\u0435\\u0443\\u0434\\u0456 \\u0442\\u0430\\u0437\\u0430\\u043b\\u0430\\u0443\",\n\"Align left\": \"\\u0421\\u043e\\u043b\\u0493\\u0430 \\u0442\\u0443\\u0440\\u0430\\u043b\\u0430\\u0443\",\n\"Align center\": \"\\u041e\\u0440\\u0442\\u0430\\u0441\\u044b\\u043d\\u0430 \\u0442\\u0443\\u0440\\u0430\\u043b\\u0430\\u0443\",\n\"Align right\": \"\\u041e\\u04a3\\u0493\\u0430 \\u0442\\u0443\\u0440\\u0430\\u043b\\u0430\\u0443\",\n\"Justify\": \"\\u0415\\u043d\\u0456 \\u0431\\u043e\\u0439\\u044b\\u043d\\u0448\\u0430 \\u0442\\u0443\\u0440\\u0430\\u043b\\u0430\\u0443\",\n\"Bullet list\": \"\\u0422\\u0430\\u04a3\\u0431\\u0430\\u043b\\u0430\\u043d\\u0493\\u0430\\u043d \\u0442\\u0456\\u0437\\u0456\\u043c\",\n\"Numbered list\": \"\\u041d\\u04e9\\u043c\\u0456\\u0440\\u043b\\u0435\\u043d\\u0433\\u0435\\u043d \\u0442\\u0456\\u0437\\u0456\\u043c\",\n\"Decrease indent\": \"\\u0428\\u0435\\u0433\\u0456\\u043d\\u0456\\u0441\\u0442\\u0456 \\u043a\\u0435\\u043c\\u0456\\u0442\\u0443\",\n\"Increase indent\": \"\\u0428\\u0435\\u0433\\u0456\\u043d\\u0456\\u0441\\u0442\\u0456 \\u0430\\u0440\\u0442\\u0442\\u044b\\u0440\\u0443\",\n\"Close\": \"\\u0416\\u0430\\u0431\\u0443\",\n\"Formats\": \"\\u041f\\u0456\\u0448\\u0456\\u043c\\u0434\\u0435\\u0440\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u0411\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0456\\u04a3\\u0456\\u0437 \\u0430\\u0440\\u0430\\u043b\\u044b\\u049b \\u0441\\u0430\\u049b\\u0442\\u0430\\u0493\\u044b\\u0448\\u049b\\u0430 \\u0442\\u0456\\u043a\\u0435\\u043b\\u0435\\u0439 \\u049b\\u0430\\u0442\\u044b\\u043d\\u0430\\u0439 \\u0430\\u043b\\u043c\\u0430\\u0439\\u0434\\u044b. Ctrl+X\\/C\\/V \\u043f\\u0435\\u0440\\u043d\\u0435\\u043b\\u0435\\u0440 \\u0442\\u0456\\u0440\\u043a\\u0435\\u0441\\u0456\\u043c\\u0456\\u043d \\u043f\\u0430\\u0439\\u0434\\u0430\\u043b\\u0430\\u043d\\u044b\\u04a3\\u044b\\u0437.\",\n\"Headers\": \"\\u0422\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\\u0448\\u0430\\u043b\\u0430\\u0440\",\n\"Header 1\": \"\\u0422\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\\u0448\\u0430 1\",\n\"Header 2\": \"\\u0422\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\\u0448\\u0430 2\",\n\"Header 3\": \"\\u0422\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\\u0448\\u0430 3\",\n\"Header 4\": \"\\u0422\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\\u0448\\u0430 4\",\n\"Header 5\": \"\\u0422\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\\u0448\\u0430 5\",\n\"Header 6\": \"\\u0422\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\\u0448\\u0430 6\",\n\"Headings\": \"\\u0422\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\\u0442\\u0430\\u0440\",\n\"Heading 1\": \"1-\\u0442\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\",\n\"Heading 2\": \"2-\\u0442\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\",\n\"Heading 3\": \"3-\\u0442\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\",\n\"Heading 4\": \"4-\\u0442\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\",\n\"Heading 5\": \"5-\\u0442\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\",\n\"Heading 6\": \"6-\\u0442\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\",\n\"Preformatted\": \"\\u0410\\u043b\\u0434\\u044b\\u043d \\u0430\\u043b\\u0430 \\u043f\\u0456\\u0448\\u0456\\u043c\\u0434\\u0435\\u043b\\u0433\\u0435\\u043d\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"\\u041a\\u043e\\u0434\",\n\"Paragraph\": \"\\u041f\\u0430\\u0440\\u0430\\u0433\\u0440\\u0430\\u0444\",\n\"Blockquote\": \"\\u0414\\u04d9\\u0439\\u0435\\u043a\\u0441\\u04e9\\u0437\",\n\"Inline\": \"\\u041a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0456\\u043b\\u0433\\u0435\\u043d\",\n\"Blocks\": \"\\u0411\\u043b\\u043e\\u043a\\u0442\\u0430\\u0440\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u041e\\u0441\\u044b \\u043e\\u043f\\u0446\\u0438\\u044f \\u04e9\\u0448\\u0456\\u0440\\u0456\\u043b\\u043c\\u0435\\u0433\\u0435\\u043d\\u0448\\u0435, \\u0431\\u0443\\u0444\\u0435\\u0440\\u0434\\u0435\\u0433\\u0456 \\u043c\\u04d9\\u0442\\u0456\\u043d \\u043a\\u04d9\\u0434\\u0456\\u043c\\u0433\\u0456 \\u043c\\u04d9\\u0442\\u0456\\u043d \\u0440\\u0435\\u0442\\u0456\\u043d\\u0434\\u0435 \\u049b\\u043e\\u0439\\u044b\\u043b\\u0430\\u0434\\u044b.\",\n\"Fonts\": \"\\u049a\\u0430\\u0440\\u0456\\u043f\\u0442\\u0435\\u0440\",\n\"Font Sizes\": \"\\u049a\\u0430\\u0440\\u0456\\u043f \\u04e9\\u043b\\u0448\\u0435\\u043c\\u0434\\u0435\\u0440\\u0456\",\n\"Class\": \"\\u0421\\u044b\\u043d\\u044b\\u043f\",\n\"Browse for an image\": \"\\u041a\\u0435\\u0441\\u043a\\u0456\\u043d\\u0434\\u0456 \\u0448\\u043e\\u043b\\u0443\",\n\"OR\": \"\\u041d\\u0415\\u041c\\u0415\\u0421\\u0415\",\n\"Drop an image here\": \"\\u041a\\u0435\\u0441\\u043a\\u0456\\u043d\\u0434\\u0456 \\u043e\\u0441\\u044b \\u0436\\u0435\\u0440\\u0434\\u0435 \\u0442\\u0430\\u0441\\u0442\\u0430\\u04a3\\u044b\\u0437\",\n\"Upload\": \"\\u0416\\u04af\\u043a\\u0442\\u0435\\u043f \\u0441\\u0430\\u043b\\u0443\",\n\"Block\": \"\\u0411\\u043b\\u043e\\u043a\",\n\"Align\": \"\\u0422\\u0443\\u0440\\u0430\\u043b\\u0430\\u0443\",\n\"Default\": \"\\u04d8\\u0434\\u0435\\u043f\\u043a\\u0456\",\n\"Circle\": \"\\u0428\\u0435\\u04a3\\u0431\\u0435\\u0440\",\n\"Disc\": \"\\u0414\\u0438\\u0441\\u043a\",\n\"Square\": \"\\u0428\\u0430\\u0440\\u0448\\u044b\",\n\"Lower Alpha\": \"\\u041a\\u0456\\u0448\\u0456 \\u04d9\\u0440\\u0456\\u043f\\u0442\\u0435\\u0440\",\n\"Lower Greek\": \"\\u041a\\u0456\\u0448\\u0456 \\u0433\\u0440\\u0435\\u043a \\u04d9\\u0440\\u0456\\u043f\\u0442\\u0435\\u0440\\u0456\",\n\"Lower Roman\": \"\\u041a\\u0456\\u0448\\u0456 \\u0440\\u0438\\u043c \\u0446\\u0438\\u0444\\u0440\\u043b\\u0430\\u0440\\u044b\",\n\"Upper Alpha\": \"\\u0411\\u0430\\u0441 \\u04d9\\u0440\\u0456\\u043f\\u0442\\u0435\\u0440\",\n\"Upper Roman\": \"\\u0411\\u0430\\u0441 \\u0440\\u0438\\u043c \\u0446\\u0438\\u0444\\u0440\\u043b\\u0430\\u0440\\u044b\",\n\"Anchor...\": \"\\u0421\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435...\",\n\"Name\": \"\\u0410\\u0442\\u044b\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id \\u0442\\u0435\\u043a \\u049b\\u0430\\u043d\\u0430 \\u04d9\\u0440\\u0456\\u043f\\u0442\\u0435\\u043d \\u0431\\u0430\\u0441\\u0442\\u0430\\u043b\\u044b\\u043f, \\u04d9\\u0440\\u0456\\u043f\\u0442\\u0435\\u0440, \\u0441\\u0430\\u043d\\u0434\\u0430\\u0440, \\u0441\\u044b\\u0437\\u044b\\u049b\\u0448\\u0430\\u043b\\u0430\\u0440, \\u043d\\u04af\\u043a\\u0442\\u0435\\u043b\\u0435\\u0440 \\u0436\\u04d9\\u043d\\u0435 \\u0442.\\u0431 \\u0436\\u0430\\u043b\\u0493\\u0430\\u0441\\u0443\\u044b \\u0442\\u0438\\u0456\\u0441.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u0421\\u0430\\u049b\\u0442\\u0430\\u043b\\u043c\\u0430\\u0493\\u0430\\u043d \\u04e9\\u0437\\u0433\\u0435\\u0440\\u0456\\u0441\\u0442\\u0435\\u0440 \\u0431\\u0430\\u0440. \\u0421\\u0456\\u0437 \\u0448\\u044b\\u043d\\u044b\\u043c\\u0435\\u043d \\u0431\\u0430\\u0441\\u049b\\u0430 \\u0436\\u0435\\u0440\\u0433\\u0435 \\u043a\\u0435\\u0442\\u0443\\u0434\\u0456 \\u049b\\u0430\\u043b\\u0430\\u0439\\u0441\\u044b\\u0437 \\u0431\\u0430?\",\n\"Restore last draft\": \"\\u0421\\u043e\\u04a3\\u0493\\u044b \\u0441\\u0430\\u049b\\u0442\\u0430\\u043b\\u0493\\u0430\\u043d\\u0434\\u044b \\u049b\\u0430\\u043b\\u043f\\u044b\\u043d\\u0430 \\u043a\\u0435\\u043b\\u0442\\u0456\\u0440\\u0443\",\n\"Special character...\": \"\\u0410\\u0440\\u043d\\u0430\\u0439\\u044b \\u0442\\u0430\\u04a3\\u0431\\u0430...\",\n\"Source code\": \"\\u0411\\u0430\\u0441\\u0442\\u0430\\u043f\\u049b\\u044b \\u043a\\u043e\\u0434\",\n\"Insert\\/Edit code sample\": \"\\u041a\\u043e\\u0434 \\u04af\\u043b\\u0433\\u0456\\u0441\\u0456\\u043d \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\\/\\u0442\\u04af\\u0437\\u0435\\u0442\\u0443\",\n\"Language\": \"\\u0422\\u0456\\u043b\",\n\"Code sample...\": \"\\u041a\\u043e\\u0434 \\u04af\\u043b\\u0433\\u0456\\u0441\\u0456...\",\n\"Color Picker\": \"\\u0422\\u04af\\u0441 \\u0442\\u0430\\u04a3\\u0434\\u0430\\u0443 \\u049b\\u04b1\\u0440\\u0430\\u043b\\u044b\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"\\u0421\\u043e\\u043b\\u0434\\u0430\\u043d \\u043e\\u04a3\\u0493\\u0430\",\n\"Right to left\": \"\\u041e\\u04a3\\u043d\\u0430\\u043d \\u0441\\u043e\\u043b\\u0493\\u0430\",\n\"Emoticons...\": \"\\u042d\\u043c\\u043e\\u0442\\u0438\\u043a\\u043e\\u043d\\u0434\\u0430\\u0440...\",\n\"Metadata and Document Properties\": \"\\u041c\\u0435\\u0442\\u0430\\u0434\\u0435\\u0440\\u0435\\u043a\\u0442\\u0435\\u0440 \\u0436\\u04d9\\u043d\\u0435 \\u049b\\u04b1\\u0436\\u0430\\u0442 \\u0441\\u0438\\u043f\\u0430\\u0442\\u0442\\u0430\\u0440\\u044b\",\n\"Title\": \"\\u0410\\u0442\\u0430\\u0443\\u044b\",\n\"Keywords\": \"Meta-keywords\",\n\"Description\": \"\\u0421\\u0438\\u043f\\u0430\\u0442\\u0442\\u0430\\u043c\\u0430\\u0441\\u044b\",\n\"Robots\": \"Meta-robots\",\n\"Author\": \"Meta-author\",\n\"Encoding\": \"Meta-charset\",\n\"Fullscreen\": \"\\u0422\\u043e\\u043b\\u044b\\u049b \\u044d\\u043a\\u0440\\u0430\\u043d\",\n\"Action\": \"\\u04d8\\u0440\\u0435\\u043a\\u0435\\u0442\",\n\"Shortcut\": \"\\u041f\\u0435\\u0440\\u043d\\u0435\\u043b\\u0435\\u0440 \\u0442\\u0456\\u0440\\u043a\\u0435\\u0441\\u0456\\u043c\\u0456\",\n\"Help\": \"\\u0410\\u043d\\u044b\\u049b\\u0442\\u0430\\u043c\\u0430\",\n\"Address\": \"\\u041c\\u0435\\u043a\\u0435\\u043d\\u0436\\u0430\\u0439\",\n\"Focus to menubar\": \"\\u041c\\u04d9\\u0437\\u0456\\u0440 \\u0436\\u043e\\u043b\\u0430\\u0493\\u044b\\u043d \\u0444\\u043e\\u043a\\u0443\\u0441\\u0442\\u0430\\u0443\",\n\"Focus to toolbar\": \"\\u049a\\u04b1\\u0440\\u0430\\u043b\\u0434\\u0430\\u0440 \\u0442\\u0430\\u049b\\u0442\\u0430\\u0441\\u044b\\u043d \\u0444\\u043e\\u043a\\u0443\\u0441\\u0442\\u0430\\u0443\",\n\"Focus to element path\": \"\\u042d\\u043b\\u0435\\u043c\\u0435\\u043d\\u0442 \\u0436\\u043e\\u043b\\u044b\\u043d \\u0444\\u043e\\u043a\\u0443\\u0441\\u0442\\u0430\\u0443\",\n\"Focus to contextual toolbar\": \"\\u041c\\u04d9\\u0442\\u0456\\u043d\\u043c\\u04d9\\u043d\\u0434\\u0456\\u043a \\u049b\\u04b1\\u0440\\u0430\\u043b\\u0434\\u0430\\u0440 \\u0442\\u0430\\u049b\\u0442\\u0430\\u0441\\u044b\\u043d \\u0444\\u043e\\u043a\\u0443\\u0441\\u0442\\u0430\\u0443\",\n\"Insert link (if link plugin activated)\": \"\\u0421\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435\\u043d\\u0456 \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443 (\\u0441\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435 \\u049b\\u043e\\u0441\\u044b\\u043b\\u0430\\u0442\\u044b\\u043d \\u043c\\u043e\\u0434\\u0443\\u043b\\u0456 \\u0431\\u0435\\u043b\\u0441\\u0435\\u043d\\u0434\\u0456\\u0440\\u0456\\u043b\\u0433\\u0435\\u043d \\u0431\\u043e\\u043b\\u0441\\u0430)\",\n\"Save (if save plugin activated)\": \"\\u0421\\u0430\\u049b\\u0442\\u0430\\u0443 (\\u0441\\u0430\\u049b\\u0442\\u0430\\u0443 \\u049b\\u043e\\u0441\\u044b\\u043b\\u0430\\u0442\\u044b\\u043d \\u049b\\u043e\\u0441\\u044b\\u043b\\u0430\\u0442\\u044b\\u043d \\u043c\\u043e\\u0434\\u0443\\u043b\\u0456 \\u0431\\u0435\\u043b\\u0441\\u0435\\u043d\\u0434\\u0456\\u0440\\u0456\\u043b\\u0433\\u0435\\u043d \\u0431\\u043e\\u043b\\u0441\\u0430)\",\n\"Find (if searchreplace plugin activated)\": \"\\u0422\\u0430\\u0431\\u0443 (\\u0456\\u0437\\u0434\\u0435\\u0443\\/\\u0430\\u0443\\u044b\\u0441\\u0442\\u044b\\u0440\\u0443 \\u049b\\u043e\\u0441\\u044b\\u043b\\u0430\\u0442\\u044b\\u043d \\u043c\\u043e\\u0434\\u0443\\u043b\\u0456 \\u0431\\u0435\\u043b\\u0441\\u0435\\u043d\\u0434\\u0456\\u0440\\u0456\\u043b\\u0433\\u0435\\u043d \\u0431\\u043e\\u043b\\u0441\\u0430)\",\n\"Plugins installed ({0}):\": \"\\u041e\\u0440\\u043d\\u0430\\u0442\\u044b\\u043b\\u0493\\u0430\\u043d \\u049b\\u043e\\u0441\\u044b\\u043b\\u0430\\u0442\\u044b\\u043d \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c\\u0434\\u0435\\u0440 ({0}):\",\n\"Premium plugins:\": \"\\u041f\\u0440\\u0435\\u043c\\u0438\\u0443\\u043c \\u049b\\u043e\\u0441\\u044b\\u043b\\u0430\\u0442\\u044b\\u043d \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c\\u0434\\u0435\\u0440:\",\n\"Learn more...\": \"\\u049a\\u043e\\u0441\\u044b\\u043c\\u0448\\u0430 \\u043c\\u04d9\\u043b\\u0456\\u043c\\u0435\\u0442\\u0442\\u0435\\u0440...\",\n\"You are using {0}\": \"\\u0421\\u0456\\u0437 {0} \\u043f\\u0430\\u0439\\u0434\\u0430\\u043b\\u0430\\u043d\\u0443\\u0434\\u0430\\u0441\\u044b\\u0437\",\n\"Plugins\": \"\\u049a\\u043e\\u0441\\u044b\\u043b\\u0430\\u0442\\u044b\\u043d \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c\\u0434\\u0435\\u0440\",\n\"Handy Shortcuts\": \"\\u042b\\u04a3\\u0493\\u0430\\u0439\\u043b\\u044b \\u043f\\u0435\\u0440\\u043d\\u0435\\u043b\\u0435\\u0440 \\u0442\\u0456\\u0440\\u043a\\u0435\\u0441\\u0456\\u043c\\u0434\\u0435\\u0440\\u0456\",\n\"Horizontal line\": \"\\u041a\\u04e9\\u043b\\u0434\\u0435\\u043d\\u0435\\u04a3 \\u0441\\u044b\\u0437\\u044b\\u049b\",\n\"Insert\\/edit image\": \"\\u0421\\u0443\\u0440\\u0435\\u0442 \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\\/\\u0442\\u04af\\u0437\\u0435\\u0442\\u0443\",\n\"Image description\": \"\\u0421\\u0443\\u0440\\u0435\\u0442 \\u0441\\u0438\\u043f\\u0430\\u0442\\u0442\\u0430\\u043c\\u0430\\u0441\\u044b\",\n\"Source\": \"\\u0410\\u0434\\u0440\\u0435\\u0441\\u0456\",\n\"Dimensions\": \"\\u04e8\\u043b\\u0448\\u0435\\u043c\\u0434\\u0435\\u0440\\u0456\",\n\"Constrain proportions\": \"\\u041f\\u0440\\u043e\\u043f\\u043e\\u0440\\u0446\\u0438\\u044f\\u043b\\u0430\\u0440\\u0434\\u044b \\u0441\\u0430\\u049b\\u0442\\u0430\\u0443\",\n\"General\": \"\\u0416\\u0430\\u043b\\u043f\\u044b\",\n\"Advanced\": \"\\u049a\\u043e\\u0441\\u044b\\u043c\\u0448\\u0430\",\n\"Style\": \"\\u0421\\u0442\\u0438\\u043b\\u0456\",\n\"Vertical space\": \"\\u0422\\u0456\\u043a \\u043a\\u0435\\u04a3\\u0434\\u0456\\u0433\\u0456\",\n\"Horizontal space\": \"\\u041a\\u04e9\\u043b\\u0434\\u0435\\u043d\\u0435\\u04a3\\u0456\\u043d\\u0435\\u043d \\u049b\\u0430\\u043b\\u0430\\u0442\\u044b\\u043d \\u043e\\u0440\\u044b\\u043d\",\n\"Border\": \"\\u0416\\u0438\\u0435\\u0433\\u0456\",\n\"Insert image\": \"\\u0421\\u0443\\u0440\\u0435\\u0442 \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\",\n\"Image...\": \"\\u041a\\u0435\\u0441\\u043a\\u0456\\u043d...\",\n\"Image list\": \"\\u041a\\u0435\\u0441\\u043a\\u0456\\u043d\\u0434\\u0435\\u0440 \\u0442\\u0456\\u0437\\u0456\\u043c\\u0456\",\n\"Rotate counterclockwise\": \"\\u0421\\u0430\\u0493\\u0430\\u0442 \\u0442\\u0456\\u043b\\u0456\\u043d\\u0456\\u04a3 \\u0431\\u0430\\u0493\\u044b\\u0442\\u044b\\u043d\\u0430 \\u049b\\u0430\\u0440\\u0441\\u044b \\u0431\\u04b1\\u0440\\u0443\",\n\"Rotate clockwise\": \"\\u0421\\u0430\\u0493\\u0430\\u0442 \\u0442\\u0456\\u043b\\u0456\\u043d\\u0456\\u04a3 \\u0431\\u0430\\u0493\\u044b\\u0442\\u044b\\u043c\\u0435\\u043d \\u0431\\u04b1\\u0440\\u0443\",\n\"Flip vertically\": \"\\u0422\\u0456\\u0433\\u0456\\u043d\\u0435\\u043d \\u0430\\u0443\\u0434\\u0430\\u0440\\u0443\",\n\"Flip horizontally\": \"\\u041a\\u04e9\\u043b\\u0434\\u0435\\u043d\\u0435\\u04a3\\u043d\\u0435\\u043d \\u0430\\u0443\\u0434\\u0430\\u0440\\u0443\",\n\"Edit image\": \"\\u0421\\u0443\\u0440\\u0435\\u0442\\u0442\\u0456 \\u04e9\\u0437\\u0433\\u0435\\u0440\\u0442\\u0443\",\n\"Image options\": \"\\u0421\\u0443\\u0440\\u0435\\u0442 \\u0431\\u0430\\u043f\\u0442\\u0430\\u0443\\u043b\\u0430\\u0440\\u044b\",\n\"Zoom in\": \"\\u0416\\u0430\\u049b\\u044b\\u043d\\u0434\\u0430\\u0442\\u0443\",\n\"Zoom out\": \"\\u0410\\u043b\\u044b\\u0441\\u0442\\u0430\\u0442\\u0443\",\n\"Crop\": \"\\u041a\\u0435\\u0441\\u0443\",\n\"Resize\": \"\\u04e8\\u043b\\u0448\\u0435\\u043c\\u0456\\u043d \\u04e9\\u0437\\u0433\\u0435\\u0440\\u0442\\u0443\",\n\"Orientation\": \"\\u0411\\u0430\\u0493\\u0434\\u0430\\u0440\",\n\"Brightness\": \"\\u0410\\u0448\\u044b\\u049b\\u0442\\u0430\\u0443\",\n\"Sharpen\": \"\\u041d\\u0430\\u049b\\u0442\\u044b\\u043b\\u0430\\u0443\",\n\"Contrast\": \"\\u049a\\u043e\\u044e\\u043b\\u0430\\u0442\\u0443\",\n\"Color levels\": \"\\u0422\\u04af\\u0441 \\u0434\\u0435\\u04a3\\u0433\\u0435\\u0439\\u043b\\u0435\\u0440\\u0456\",\n\"Gamma\": \"\\u0413\\u0430\\u043c\\u043c\\u0430\",\n\"Invert\": \"\\u041a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\",\n\"Apply\": \"\\u0421\\u0430\\u049b\\u0442\\u0430\\u0443\",\n\"Back\": \"\\u0410\\u0440\\u0442\\u049b\\u0430\",\n\"Insert date\\/time\": \"\\u041a\\u04af\\u043d\\/\\u0443\\u0430\\u049b\\u044b\\u0442 \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\",\n\"Date\\/time\": \"\\u041a\\u04af\\u043d\\/\\u0443\\u0430\\u049b\\u044b\\u0442\",\n\"Insert\\/Edit Link\": \"\\u0421\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435 \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\\/\\u04e9\\u04a3\\u0434\\u0435\\u0443\",\n\"Insert\\/edit link\": \"\\u0421\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435 \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\\/\\u0442\\u04af\\u0437\\u0435\\u0442\\u0443\",\n\"Text to display\": \"\\u041a\\u04e9\\u0440\\u0441\\u0435\\u0442\\u0456\\u043b\\u0435\\u0442\\u0456\\u043d \\u043c\\u04d9\\u0442\\u0456\\u043d\",\n\"Url\": \"URL-\\u0430\\u0434\\u0440\\u0435\\u0441\\u0456\",\n\"Open link in...\": \"\\u0421\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435\\u043d\\u0456 \\u0430\\u0448\\u0443...\",\n\"Current window\": \"\\u0410\\u0493\\u044b\\u043c\\u0434\\u0430\\u0493\\u044b \\u0442\\u0435\\u0440\\u0435\\u0437\\u0435\",\n\"None\": \"\\u0416\\u043e\\u049b\",\n\"New window\": \"\\u0416\\u0430\\u04a3\\u0430 \\u0442\\u0435\\u0440\\u0435\\u0437\\u0435\",\n\"Remove link\": \"\\u0421\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435\\u043d\\u0456 \\u0430\\u043b\\u044b\\u043f \\u0442\\u0430\\u0441\\u0442\\u0430\\u0443\",\n\"Anchors\": \"\\u0421\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435\\u043b\\u0435\\u0440\",\n\"Link...\": \"\\u0421\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435...\",\n\"Paste or type a link\": \"\\u0421\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435\\u043d\\u0456 \\u049b\\u043e\\u0439\\u044b\\u04a3\\u044b\\u0437 \\u043d\\u0435\\u043c\\u0435\\u0441\\u0435 \\u0442\\u0435\\u0440\\u0456\\u04a3\\u0456\\u0437\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u0421\\u0456\\u0437 \\u0435\\u04a3\\u0433\\u0456\\u0437\\u0456\\u043f \\u0442\\u04b1\\u0440\\u0493\\u0430\\u043d URL e-mail \\u0430\\u0434\\u0440\\u0435\\u0441\\u0456 \\u0431\\u043e\\u043b\\u044b\\u043f \\u0442\\u0430\\u0431\\u044b\\u043b\\u0430\\u0434\\u044b. \\u0410\\u043b\\u0434\\u044b\\u043d\\u0430 mailto: \\u043f\\u0440\\u0435\\u0444\\u0438\\u043a\\u0441\\u0456\\u043d \\u049b\\u043e\\u0441\\u0443\\u0434\\u044b \\u049b\\u0430\\u043b\\u0430\\u0439\\u0441\\u044b\\u0437 \\u0431\\u0430?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u0421\\u0456\\u0437 \\u0435\\u04a3\\u0433\\u0456\\u0437\\u0456\\u043f \\u0442\\u04b1\\u0440\\u0493\\u0430\\u043d URL \\u0441\\u044b\\u0440\\u0442\\u049b\\u044b \\u0441\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435 \\u0431\\u043e\\u043b\\u044b\\u043f \\u0442\\u0430\\u0431\\u044b\\u043b\\u0430\\u0434\\u044b. \\u0410\\u043b\\u0434\\u044b\\u043d\\u0430 http:\\/\\/ \\u043f\\u0440\\u0435\\u0444\\u0438\\u043a\\u0441\\u0456\\u043d \\u049b\\u043e\\u0441\\u0443\\u0434\\u044b \\u049b\\u0430\\u043b\\u0430\\u0439\\u0441\\u044b\\u0437 \\u0431\\u0430?\",\n\"Link list\": \"\\u0421\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435\\u043b\\u0435\\u0440 \\u0442\\u0456\\u0437\\u0456\\u043c\\u0456\",\n\"Insert video\": \"\\u0412\\u0438\\u0434\\u0435\\u043e \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\",\n\"Insert\\/edit video\": \"\\u0412\\u0438\\u0434\\u0435\\u043e \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\\/\\u0442\\u04af\\u0437\\u0435\\u0442\\u0443\",\n\"Insert\\/edit media\": \"\\u041c\\u0435\\u0434\\u0438\\u0430 \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\\/\\u0442\\u04af\\u0437\\u0435\\u0442\\u0443\",\n\"Alternative source\": \"\\u049a\\u043e\\u0441\\u044b\\u043c\\u0448\\u0430 \\u0430\\u0434\\u0440\\u0435\\u0441\\u0456\",\n\"Alternative source URL\": \"\\u0411\\u0430\\u043b\\u0430\\u043c\\u0430\\u043b\\u044b \\u043a\\u04e9\\u0437\\u0434\\u0456\\u04a3 URL \\u043c\\u0435\\u043a\\u0435\\u043d\\u0436\\u0430\\u0439\\u044b\",\n\"Media poster (Image URL)\": \"\\u041c\\u0435\\u0434\\u0438\\u0430\\u0444\\u0430\\u0439\\u043b\\u0434\\u044b \\u0436\\u0430\\u0440\\u0438\\u044f\\u043b\\u0430\\u0443\\u0448\\u044b (\\u043a\\u0435\\u0441\\u043a\\u0456\\u043d\\u043d\\u0456\\u04a3 URL \\u043c\\u0435\\u043a\\u0435\\u043d\\u0436\\u0430\\u0439\\u044b)\",\n\"Paste your embed code below:\": \"\\u0422\\u04e9\\u043c\\u0435\\u043d\\u0434\\u0435\\u0433\\u0456 \\u043a\\u043e\\u0434\\u0442\\u044b \\u043a\\u04e9\\u0448\\u0456\\u0440\\u0456\\u043f \\u0430\\u043b\\u044b\\u043f, \\u049b\\u043e\\u0439\\u044b\\u04a3\\u044b\\u0437:\",\n\"Embed\": \"\\u0415\\u043d\\u0434\\u0456\\u0440\\u0443\",\n\"Media...\": \"\\u041c\\u0435\\u0434\\u0438\\u0430\\u0444\\u0430\\u0439\\u043b...\",\n\"Nonbreaking space\": \"\\u04ae\\u0437\\u0434\\u0456\\u043a\\u0441\\u0456\\u0437 \\u0431\\u043e\\u0441 \\u043e\\u0440\\u044b\\u043d\",\n\"Page break\": \"\\u0411\\u0435\\u0442 \\u04af\\u0437\\u0456\\u043b\\u0456\\u043c\\u0456\",\n\"Paste as text\": \"\\u041c\\u04d9\\u0442\\u0456\\u043d \\u0440\\u0435\\u0442\\u0456\\u043d\\u0434\\u0435 \\u049b\\u043e\\u044e\",\n\"Preview\": \"\\u0410\\u043b\\u0434\\u044b\\u043d-\\u0430\\u043b\\u0430 \\u049b\\u0430\\u0440\\u0430\\u0443\",\n\"Print...\": \"\\u0411\\u0430\\u0441\\u044b\\u043f \\u0448\\u044b\\u0493\\u0430\\u0440\\u0443...\",\n\"Save\": \"\\u0421\\u0430\\u049b\\u0442\\u0430\\u0443\",\n\"Find\": \"\\u0422\\u0430\\u0431\\u044b\\u043b\\u0430\\u0442\\u044b\\u043d \\u043c\\u04d9\\u0442\\u0456\\u043d\",\n\"Replace with\": \"\\u0410\\u0443\\u044b\\u0441\\u0442\\u044b\\u0440\\u0430\\u0442\\u044b\\u043d \\u043c\\u04d9\\u0442\\u0456\\u043d\",\n\"Replace\": \"\\u0410\\u0443\\u044b\\u0441\\u0442\\u044b\\u0440\\u0443\",\n\"Replace all\": \"\\u0411\\u0430\\u0440\\u043b\\u044b\\u0493\\u044b\\u043d \\u0430\\u0443\\u044b\\u0441\\u0442\\u044b\\u0440\\u0443\",\n\"Previous\": \"\\u0410\\u043b\\u0434\\u044b\\u04a3\\u0493\\u044b\",\n\"Next\": \"\\u041a\\u0435\\u043b\\u0435\\u0441\\u0456\",\n\"Find and replace...\": \"\\u0422\\u0430\\u0431\\u0443 \\u0436\\u04d9\\u043d\\u0435 \\u0430\\u0443\\u044b\\u0441\\u0442\\u044b\\u0440\\u0443...\",\n\"Could not find the specified string.\": \"\\u041a\\u04e9\\u0440\\u0441\\u0435\\u0442\\u0456\\u043b\\u0433\\u0435\\u043d \\u0436\\u043e\\u043b \\u0442\\u0430\\u0431\\u044b\\u043b\\u043c\\u0430\\u0434\\u044b.\",\n\"Match case\": \"\\u0420\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0434\\u0456 \\u0435\\u0441\\u043a\\u0435\\u0440\\u0443\",\n\"Find whole words only\": \"\\u0422\\u0435\\u043a \\u0431\\u04af\\u0442\\u0456\\u043d \\u0441\\u04e9\\u0437\\u0434\\u0435\\u0440\\u0434\\u0456 \\u0442\\u0430\\u0431\\u0443\",\n\"Spell check\": \"\\u0415\\u043c\\u043b\\u0435\\u043d\\u0456 \\u0442\\u0435\\u043a\\u0441\\u0435\\u0440\\u0443\",\n\"Ignore\": \"\\u0415\\u043b\\u0435\\u043c\\u0435\\u0443\",\n\"Ignore all\": \"\\u0415\\u0448\\u049b\\u0430\\u0439\\u0441\\u044b\\u0441\\u044b\\u043d \\u0435\\u043b\\u0435\\u043c\\u0435\\u0443\",\n\"Finish\": \"\\u0410\\u044f\\u049b\\u0442\\u0430\\u0443\",\n\"Add to Dictionary\": \"\\u0421\\u04e9\\u0437\\u0434\\u0456\\u043a\\u043a\\u0435 \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\",\n\"Insert table\": \"\\u041a\\u0435\\u0441\\u0442\\u0435 \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\",\n\"Table properties\": \"\\u041a\\u0435\\u0441\\u0442\\u0435 \\u0441\\u0438\\u043f\\u0430\\u0442\\u0442\\u0430\\u0440\\u044b\",\n\"Delete table\": \"\\u041a\\u0435\\u0441\\u0442\\u0435\\u043d\\u0456 \\u0436\\u043e\\u044e\",\n\"Cell\": \"\\u04b0\\u044f\\u0448\\u044b\\u049b\",\n\"Row\": \"\\u0416\\u043e\\u043b\",\n\"Column\": \"\\u0411\\u0430\\u0493\\u0430\\u043d\",\n\"Cell properties\": \"\\u04b0\\u044f\\u0448\\u044b\\u049b \\u0441\\u0438\\u043f\\u0430\\u0442\\u0442\\u0430\\u0440\\u044b\",\n\"Merge cells\": \"\\u04b0\\u044f\\u0448\\u044b\\u049b\\u0442\\u0430\\u0440\\u0434\\u044b \\u0431\\u0456\\u0440\\u0456\\u043a\\u0442\\u0456\\u0440\\u0443\",\n\"Split cell\": \"\\u04b0\\u044f\\u0448\\u044b\\u049b\\u0442\\u044b \\u0431\\u04e9\\u043b\\u0443\",\n\"Insert row before\": \"\\u04ae\\u0441\\u0442\\u0456\\u043d\\u0435 \\u0436\\u043e\\u043b \\u049b\\u043e\\u0441\\u0443\",\n\"Insert row after\": \"\\u0410\\u0441\\u0442\\u044b\\u043d\\u0430 \\u0436\\u043e\\u043b \\u049b\\u043e\\u0441\\u0443\",\n\"Delete row\": \"\\u0416\\u043e\\u043b\\u0434\\u044b \\u0436\\u043e\\u044e\",\n\"Row properties\": \"\\u0416\\u043e\\u043b \\u0441\\u0438\\u043f\\u0430\\u0442\\u0442\\u0430\\u0440\\u044b\",\n\"Cut row\": \"\\u0416\\u043e\\u043b\\u0434\\u044b \\u049b\\u0438\\u044b\\u043f \\u0430\\u043b\\u0443\",\n\"Copy row\": \"\\u0416\\u043e\\u043b\\u0434\\u044b \\u043a\\u04e9\\u0448\\u0456\\u0440\\u0443\",\n\"Paste row before\": \"\\u0416\\u043e\\u043b\\u0434\\u044b\\u04a3 \\u04af\\u0441\\u0442\\u0456\\u043d\\u0435 \\u049b\\u043e\\u044e\",\n\"Paste row after\": \"\\u0416\\u043e\\u043b\\u0434\\u044b\\u04a3 \\u0430\\u0441\\u0442\\u044b\\u043d\\u0430 \\u049b\\u043e\\u044e\",\n\"Insert column before\": \"\\u0410\\u043b\\u0434\\u044b\\u043d\\u0430 \\u0431\\u0430\\u0493\\u0430\\u043d \\u049b\\u043e\\u0441\\u0443\",\n\"Insert column after\": \"\\u0410\\u0440\\u0442\\u044b\\u043d\\u0430 \\u0431\\u0430\\u0493\\u0430\\u043d \\u049b\\u043e\\u0441\\u0443\",\n\"Delete column\": \"\\u0411\\u0430\\u0493\\u0430\\u043d\\u0434\\u044b \\u0436\\u043e\\u044e\",\n\"Cols\": \"\\u0411\\u0430\\u0493\\u0430\\u043d\\u044b\",\n\"Rows\": \"\\u0416\\u043e\\u043b\\u044b\",\n\"Width\": \"\\u04b0\\u0437\\u044b\\u043d\\u0434\\u044b\\u0493\\u044b\",\n\"Height\": \"\\u0411\\u0438\\u0456\\u043a\\u0442\\u0456\\u0433\\u0456\",\n\"Cell spacing\": \"\\u04b0\\u044f\\u0448\\u044b\\u049b \\u0430\\u0440\\u0430\\u043b\\u044b\\u0493\\u044b\",\n\"Cell padding\": \"\\u04b0\\u044f\\u0448\\u044b\\u049b \\u043a\\u0435\\u04a3\\u0434\\u0456\\u0433\\u0456\",\n\"Show caption\": \"\\u0416\\u0430\\u0437\\u0431\\u0430\\u043d\\u044b \\u043a\\u04e9\\u0440\\u0441\\u0435\\u0442\\u0443\",\n\"Left\": \"\\u0421\\u043e\\u043b\\u0493\\u0430\",\n\"Center\": \"\\u041e\\u0440\\u0442\\u0430\\u0441\\u044b\\u043d\\u0430\",\n\"Right\": \"\\u041e\\u04a3\\u0493\\u0430\",\n\"Cell type\": \"\\u04b0\\u044f\\u0448\\u044b\\u049b \\u0442\\u0438\\u043f\\u0456\",\n\"Scope\": \"\\u0410\\u0443\\u043c\\u0430\\u0493\\u044b\",\n\"Alignment\": \"\\u041e\\u0440\\u043d\\u0430\\u043b\\u0430\\u0441\\u0443\\u044b\",\n\"H Align\": \"\\u041a\\u04e9\\u043b\\u0434\\u0435\\u043d\\u0435\\u04a3\\u043d\\u0435\\u043d \\u0442\\u0443\\u0440\\u0430\\u043b\\u0430\\u0443\",\n\"V Align\": \"\\u0422\\u0456\\u0433\\u0456\\u043d\\u0435\\u043d \\u0442\\u0443\\u0440\\u0430\\u043b\\u0430\\u0443\",\n\"Top\": \"\\u04ae\\u0441\\u0442\\u0456\",\n\"Middle\": \"\\u041e\\u0440\\u0442\\u0430\\u0441\\u044b\",\n\"Bottom\": \"\\u0410\\u0441\\u0442\\u044b\",\n\"Header cell\": \"\\u0422\\u0430\\u049b\\u044b\\u0440\\u044b\\u043f\\u0448\\u0430 \\u04b1\\u044f\\u0448\\u044b\\u049b\",\n\"Row group\": \"\\u0416\\u043e\\u043b \\u0442\\u043e\\u0431\\u044b\",\n\"Column group\": \"\\u0411\\u0430\\u0493\\u0430\\u043d \\u0442\\u043e\\u0431\\u044b\",\n\"Row type\": \"\\u0416\\u043e\\u043b \\u0442\\u0438\\u043f\\u0456\",\n\"Header\": \"\\u0411\\u0430\\u0441 \\u0436\\u0430\\u0493\\u044b\",\n\"Body\": \"\\u041d\\u0435\\u0433\\u0456\\u0437\\u0433\\u0456 \\u0431\\u04e9\\u043b\\u0456\\u0433\\u0456\",\n\"Footer\": \"\\u0410\\u044f\\u049b \\u0436\\u0430\\u0493\\u044b\",\n\"Border color\": \"\\u0416\\u0438\\u0435\\u043a \\u0442\\u04af\\u0441\\u0456\",\n\"Insert template...\": \"\\u04ae\\u043b\\u0433\\u0456 \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443...\",\n\"Templates\": \"\\u04ae\\u043b\\u0433\\u0456\\u043b\\u0435\\u0440\",\n\"Template\": \"\\u04ae\\u043b\\u0433\\u0456\",\n\"Text color\": \"\\u041c\\u04d9\\u0442\\u0456\\u043d \\u0442\\u04af\\u0441\\u0456\",\n\"Background color\": \"\\u04e8\\u04a3\\u0456\\u043d\\u0456\\u04a3 \\u0442\\u04af\\u0441\\u0456\",\n\"Custom...\": \"\\u04e8\\u0437\\u0433\\u0435\\u0440\\u0442\\u0443\",\n\"Custom color\": \"\\u0422\\u04af\\u0441 \\u04e9\\u0437\\u0433\\u0435\\u0440\\u0442\\u0443\",\n\"No color\": \"\\u0422\\u04af\\u0441\\u0441\\u0456\\u0437\",\n\"Remove color\": \"\\u0422\\u04af\\u0441\\u0442\\u0456 \\u0436\\u043e\\u044e\",\n\"Table of Contents\": \"\\u041c\\u0430\\u0437\\u043c\\u04b1\\u043d\\u0434\\u0430\\u0440 \\u043a\\u0435\\u0441\\u0442\\u0435\\u0441\\u0456\",\n\"Show blocks\": \"\\u0411\\u043b\\u043e\\u043a\\u0442\\u0430\\u0440\\u0434\\u044b \\u043a\\u04e9\\u0440\\u0441\\u0435\\u0442\\u0443\",\n\"Show invisible characters\": \"\\u041a\\u04e9\\u0440\\u0456\\u043d\\u0431\\u0435\\u0439\\u0442\\u0456\\u043d \\u0442\\u0430\\u04a3\\u0431\\u0430\\u043b\\u0430\\u0440\\u0434\\u044b \\u043a\\u04e9\\u0440\\u0441\\u0435\\u0442\\u0443\",\n\"Word count\": \"\\u0421\\u04e9\\u0437 \\u0441\\u0430\\u043d\\u044b\",\n\"Count\": \"\\u0421\\u0430\\u043d\\u044b\",\n\"Document\": \"\\u049a\\u04b1\\u0436\\u0430\\u0442\",\n\"Selection\": \"\\u0422\\u0430\\u04a3\\u0434\\u0430\\u0443\",\n\"Words\": \"\\u0421\\u04e9\\u0437\\u0434\\u0435\\u0440\",\n\"Words: {0}\": \"\\u0421\\u04e9\\u0437 \\u0441\\u0430\\u043d\\u044b: {0}\",\n\"{0} words\": \"{0} \\u0441\\u04e9\\u0437\",\n\"File\": \"\\u0424\\u0430\\u0439\\u043b\",\n\"Edit\": \"\\u0422\\u04af\\u0437\\u0435\\u0442\\u0443\",\n\"Insert\": \"\\u041a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\",\n\"View\": \"\\u041a\\u04e9\\u0440\\u0456\\u043d\\u0456\\u0441\",\n\"Format\": \"\\u0424\\u043e\\u0440\\u043c\\u0430\\u0442\",\n\"Table\": \"\\u041a\\u0435\\u0441\\u0442\\u0435\",\n\"Tools\": \"\\u049a\\u04b1\\u0440\\u0430\\u043b\\u0434\\u0430\\u0440\",\n\"Powered by {0}\": \"{0} \\u0442\\u0435\\u0445\\u043d\\u043e\\u043b\\u043e\\u0433\\u0438\\u044f\\u0441\\u044b\\u043d\\u0430 \\u043d\\u0435\\u0433\\u0456\\u0437\\u0434\\u0435\\u043b\\u0433\\u0435\\u043d\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u0424\\u043e\\u0440\\u043c\\u0430\\u0442\\u0442\\u0430\\u043b\\u0493\\u0430\\u043d \\u043c\\u04d9\\u0442\\u0456\\u043d \\u0430\\u0443\\u043c\\u0430\\u0493\\u044b. \\u041c\\u0435\\u043d\\u044e \\u043a\\u04e9\\u0440\\u0441\\u0435\\u0442\\u0443 \\u04af\\u0448\\u0456\\u043d ALT-F9 \\u0431\\u0430\\u0441\\u044b\\u04a3\\u044b\\u0437. \\u049a\\u04b1\\u0440\\u0430\\u043b\\u0434\\u0430\\u0440 \\u043f\\u0430\\u043d\\u0435\\u043b\\u0456\\u043d \\u043a\\u04e9\\u0440\\u0441\\u0435\\u0442\\u0443 \\u04af\\u0448\\u0456\\u043d ALT-F10 \\u0431\\u0430\\u0441\\u044b\\u04a3\\u044b\\u0437. \\u041a\\u04e9\\u043c\\u0435\\u043a \\u0430\\u043b\\u0443 \\u04af\\u0448\\u0456\\u043d ALT-0 \\u0431\\u0430\\u0441\\u044b\\u04a3\\u044b\\u0437.\",\n\"Image title\": \"\\u041a\\u0435\\u0441\\u043a\\u0456\\u043d \\u0430\\u0442\\u0430\\u0443\\u044b\",\n\"Border width\": \"\\u0416\\u0438\\u0435\\u043a \\u0435\\u043d\\u0456\",\n\"Border style\": \"\\u0416\\u0438\\u0435\\u043a \\u043c\\u04d9\\u043d\\u0435\\u0440\\u0456\",\n\"Error\": \"\\u049a\\u0430\\u0442\\u0435\",\n\"Warn\": \"\\u0415\\u0441\\u043a\\u0435\\u0440\\u0442\\u0443\",\n\"Valid\": \"\\u0416\\u0430\\u0440\\u0430\\u043c\\u0434\\u044b\",\n\"To open the popup, press Shift+Enter\": \"\\u049a\\u0430\\u043b\\u049b\\u044b\\u043c\\u0430\\u043b\\u044b \\u0442\\u0435\\u0440\\u0435\\u0437\\u0435\\u043d\\u0456 \\u0430\\u0448\\u0443 \\u04af\\u0448\\u0456\\u043d Shift+Enter \\u0431\\u0430\\u0441\\u044b\\u04a3\\u044b\\u0437\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u041f\\u0456\\u0448\\u0456\\u043c\\u0434\\u0435\\u043b\\u0433\\u0435\\u043d \\u043c\\u04d9\\u0442\\u0456\\u043d \\u0430\\u0443\\u043c\\u0430\\u0493\\u044b. \\u0410\\u043d\\u044b\\u049b\\u0442\\u0430\\u043c\\u0430 \\u0430\\u043b\\u0443 \\u04af\\u0448\\u0456\\u043d ALT-0 \\u0431\\u0430\\u0441\\u044b\\u04a3\\u044b\\u0437.\",\n\"System Font\": \"\\u0416\\u04af\\u0439\\u0435 \\u049b\\u0430\\u0440\\u043f\\u0456\",\n\"Failed to upload image: {0}\": \"\\u041a\\u0435\\u0441\\u043a\\u0456\\u043d \\u0436\\u04af\\u043a\\u0442\\u0435\\u043f \\u0441\\u0430\\u043b\\u044b\\u043d\\u0431\\u0430\\u0434\\u044b: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u049a\\u043e\\u0441\\u044b\\u043b\\u0430\\u0442\\u044b\\u043d \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c \\u0436\\u04af\\u043a\\u0442\\u0435\\u043b\\u043c\\u0435\\u0434\\u0456: {0} {1} URL \\u043c\\u0435\\u043a\\u0435\\u043d\\u0436\\u0430\\u0439\\u044b\\u043d\\u0430\\u043d\",\n\"Failed to load plugin url: {0}\": \"\\u049a\\u043e\\u0441\\u044b\\u043b\\u0430\\u0442\\u044b\\u043d \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c \\u0436\\u04af\\u043a\\u0442\\u0435\\u043b\\u043c\\u0435\\u0434\\u0456 URL \\u043c\\u0435\\u043a\\u0435\\u043d\\u0436\\u0430\\u0439\\u044b: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u049a\\u043e\\u0441\\u044b\\u043b\\u0430\\u0442\\u044b\\u043d \\u043c\\u043e\\u0434\\u0443\\u043b\\u044c \\u0431\\u0430\\u043f\\u0442\\u0430\\u043d\\u0434\\u044b\\u0440\\u044b\\u043b\\u043c\\u0430\\u0434\\u044b: {0}\",\n\"example\": \"\\u043c\\u044b\\u0441\\u0430\\u043b\",\n\"Search\": \"\\u0406\\u0437\\u0434\\u0435\\u0443\",\n\"All\": \"\\u0411\\u0430\\u0440\\u043b\\u044b\\u0493\\u044b\",\n\"Currency\": \"\\u0412\\u0430\\u043b\\u044e\\u0442\\u0430\",\n\"Text\": \"\\u041c\\u04d9\\u0442\\u0456\\u043d\",\n\"Quotations\": \"\\u0422\\u044b\\u0440\\u043d\\u0430\\u049b\\u0448\\u0430\\u043b\\u0430\\u0440\",\n\"Mathematical\": \"\\u041c\\u0430\\u0442\\u0435\\u043c\\u0430\\u0442\\u0438\\u043a\\u0430\\u043b\\u044b\\u049b\",\n\"Extended Latin\": \"\\u041a\\u0435\\u04a3\\u0435\\u0439\\u0442\\u0456\\u043b\\u0433\\u0435\\u043d \\u043b\\u0430\\u0442\\u044b\\u043d\",\n\"Symbols\": \"\\u0422\\u0430\\u04a3\\u0431\\u0430\\u043b\\u0430\\u0440\",\n\"Arrows\": \"\\u041a\\u04e9\\u0440\\u0441\\u0435\\u0442\\u043a\\u0456\\u043b\\u0435\\u0440\",\n\"User Defined\": \"\\u041f\\u0430\\u0439\\u0434\\u0430\\u043b\\u0430\\u043d\\u0443\\u0448\\u044b \\u0430\\u043d\\u044b\\u049b\\u0442\\u0430\\u0493\\u0430\\u043d\",\n\"dollar sign\": \"\\u0434\\u043e\\u043b\\u043b\\u0430\\u0440 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"currency sign\": \"\\u0432\\u0430\\u043b\\u044e\\u0442\\u0430 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"euro-currency sign\": \"\\u0435\\u0443\\u0440\\u043e \\u0432\\u0430\\u043b\\u044e\\u0442\\u0430\\u0441\\u044b\\u043d\\u044b\\u04a3 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"colon sign\": \"\\u049b\\u043e\\u0441 \\u043d\\u04af\\u043a\\u0442\\u0435 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"cruzeiro sign\": \"\\u043a\\u0440\\u0443\\u0437\\u0435\\u0439\\u0440\\u043e \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"french franc sign\": \"\\u0444\\u0440\\u0430\\u043d\\u0446\\u0443\\u0437\\u0434\\u044b\\u049b \\u0444\\u0440\\u0430\\u043d\\u043a \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"lira sign\": \"\\u043b\\u0438\\u0440\\u0430 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"mill sign\": \"\\u043c\\u0438\\u043b\\u043b \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"naira sign\": \"\\u043d\\u0430\\u0439\\u0440\\u0430 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"peseta sign\": \"\\u043f\\u0435\\u0441\\u0435\\u0442\\u0430 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"rupee sign\": \"\\u0440\\u0443\\u043f\\u0438\\u044f \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"won sign\": \"\\u0432\\u043e\\u043d \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"new sheqel sign\": \"\\u0436\\u0430\\u04a3\\u0430 \\u0448\\u0435\\u043a\\u0435\\u043b\\u044c \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"dong sign\": \"\\u0434\\u043e\\u043d\\u0433 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"kip sign\": \"\\u043a\\u0438\\u043f \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"tugrik sign\": \"\\u0442\\u0443\\u0433\\u0440\\u0438\\u043a \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"drachma sign\": \"\\u0434\\u0440\\u0430\\u0445\\u043c\\u0430 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"german penny symbol\": \"\\u0433\\u0435\\u0440\\u043c\\u0430\\u043d\\u0434\\u044b\\u049b \\u043f\\u0435\\u043d\\u043d\\u0438 \\u0442\\u0430\\u04a3\\u0431\\u0430\\u0441\\u044b\",\n\"peso sign\": \"\\u043f\\u0435\\u0441\\u043e \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"guarani sign\": \"\\u0433\\u0443\\u0430\\u0440\\u0430\\u043d\\u0438 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"austral sign\": \"\\u0430\\u0443\\u0441\\u0442\\u0440\\u0430\\u043b \\u0431\\u0435\\u0433\\u043b\\u0456\\u0441\\u0456\",\n\"hryvnia sign\": \"\\u0433\\u0440\\u0438\\u0432\\u043d\\u0430 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"cedi sign\": \"\\u0441\\u0435\\u0434\\u0438 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"livre tournois sign\": \"\\u0442\\u0443\\u0440 \\u043b\\u0438\\u0432\\u0440\\u044b \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"spesmilo sign\": \"\\u0441\\u043f\\u0435\\u0441\\u043c\\u0438\\u043b\\u043e \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"tenge sign\": \"\\u0442\\u0435\\u04a3\\u0433\\u0435 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"indian rupee sign\": \"\\u04af\\u043d\\u0434\\u0456 \\u0440\\u0443\\u043f\\u0438\\u044f\\u0441\\u044b \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"turkish lira sign\": \"\\u0442\\u04af\\u0440\\u0456\\u043a \\u043b\\u0438\\u0440\\u0430\\u0441\\u044b \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"nordic mark sign\": \"\\u0441\\u043a\\u0430\\u043d\\u0434\\u0438\\u043d\\u0430\\u0432\\u0438\\u044f\\u043b\\u044b\\u049b \\u043c\\u0430\\u0440\\u043a\\u0430 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"manat sign\": \"\\u043c\\u0430\\u043d\\u0430\\u0442 \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"ruble sign\": \"\\u0440\\u0443\\u0431\\u043b\\u044c \\u0431\\u0435\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"yen character\": \"\\u0439\\u0435\\u043d\\u0430 \\u0442\\u0430\\u04a3\\u0431\\u0430\\u0441\\u044b\",\n\"yuan character\": \"\\u044e\\u0430\\u043d\\u044c \\u0442\\u0430\\u04a3\\u0431\\u0430\\u0441\\u044b\",\n\"yuan character, in hong kong and taiwan\": \"\\u044e\\u0430\\u043d\\u044c \\u0442\\u0430\\u04a3\\u0431\\u0430\\u0441\\u044b, \\u0413\\u043e\\u043d\\u043a\\u043e\\u043d\\u0433 \\u043f\\u0435\\u043d \\u0422\\u0430\\u0439\\u0432\\u0430\\u043d\\u044c\\u0434\\u0430\",\n\"yen\\/yuan character variant one\": \"\\u0439\\u0435\\u043d\\u0430\\/\\u044e\\u0430\\u043d\\u044c \\u0442\\u0430\\u04a3\\u0431\\u0430\\u0441\\u044b\\u043d\\u044b\\u04a3 \\u0431\\u0456\\u0440\\u0456\\u043d\\u0448\\u0456 \\u043d\\u04b1\\u0441\\u049b\\u0430\\u0441\\u044b\",\n\"Loading emoticons...\": \"\\u042d\\u043c\\u043e\\u0442\\u0438\\u043a\\u043e\\u043d\\u0434\\u0430\\u0440 \\u0436\\u04af\\u043a\\u0442\\u0435\\u043b\\u0443\\u0434\\u0435...\",\n\"Could not load emoticons\": \"\\u042d\\u043c\\u043e\\u0442\\u0438\\u043a\\u043e\\u043d\\u0434\\u0430\\u0440\\u0434\\u044b \\u0436\\u04af\\u043a\\u0442\\u0435\\u0443 \\u043c\\u04af\\u043c\\u043a\\u0456\\u043d \\u0431\\u043e\\u043b\\u043c\\u0430\\u0434\\u044b\",\n\"People\": \"\\u0410\\u0434\\u0430\\u043c\\u0434\\u0430\\u0440\",\n\"Animals and Nature\": \"\\u0416\\u0430\\u043d\\u0443\\u0430\\u0440\\u043b\\u0430\\u0440 \\u0436\\u04d9\\u043d\\u0435 \\u0442\\u0430\\u0431\\u0438\\u0493\\u0430\\u0442\",\n\"Food and Drink\": \"\\u0422\\u0430\\u0493\\u0430\\u043c\\u0434\\u0430\\u0440 \\u0436\\u04d9\\u043d\\u0435 \\u0441\\u0443\\u0441\\u044b\\u043d\\u0434\\u0430\\u0440\",\n\"Activity\": \"\\u0411\\u0435\\u043b\\u0441\\u0435\\u043d\\u0434\\u0456\\u043b\\u0456\\u043a\",\n\"Travel and Places\": \"\\u0421\\u0430\\u044f\\u0445\\u0430\\u0442 \\u0436\\u04d9\\u043d\\u0435 \\u043e\\u0440\\u044b\\u043d\\u0434\\u0430\\u0440\",\n\"Objects\": \"\\u041d\\u044b\\u0441\\u0430\\u043d\\u0434\\u0430\\u0440\",\n\"Flags\": \"\\u0422\\u0443\\u043b\\u0430\\u0440\",\n\"Characters\": \"\\u0422\\u0430\\u04a3\\u0431\\u0430\\u043b\\u0430\\u0440\",\n\"Characters (no spaces)\": \"\\u0422\\u0430\\u04a3\\u0431\\u0430\\u043b\\u0430\\u0440 (\\u043e\\u0440\\u044b\\u043d\\u0434\\u0430\\u0440\\u0441\\u044b\\u0437)\",\n\"{0} characters\": \"{0} \\u0442\\u0430\\u04a3\\u0431\\u0430\",\n\"Error: Form submit field collision.\": \"\\u049a\\u0430\\u0442\\u0435: \\u043f\\u0456\\u0448\\u0456\\u043d\\u0434\\u0456 \\u0436\\u0456\\u0431\\u0435\\u0440\\u0443 \\u04e9\\u0440\\u0456\\u0441\\u0456\\u043d\\u0456\\u04a3 \\u049b\\u0430\\u0439\\u0448\\u044b\\u043b\\u044b\\u0493\\u044b.\",\n\"Error: No form element found.\": \"\\u049a\\u0430\\u0442\\u0435: \\u043f\\u0456\\u0448\\u0456\\u043d \\u044d\\u043b\\u0435\\u043c\\u0435\\u043d\\u0442\\u0456 \\u0442\\u0430\\u0431\\u044b\\u043b\\u043c\\u0430\\u0434\\u044b.\",\n\"Update\": \"\\u0416\\u0430\\u04a3\\u0430\\u0440\\u0442\\u0443\",\n\"Color swatch\": \"\\u0422\\u04af\\u0441 \\u04af\\u043b\\u0433\\u0456\\u0441\\u0456\",\n\"Turquoise\": \"\\u041a\\u04e9\\u0433\\u0456\\u043b\\u0434\\u0456\\u0440\",\n\"Green\": \"\\u0416\\u0430\\u0441\\u044b\\u043b\",\n\"Blue\": \"\\u041a\\u04e9\\u043a\",\n\"Purple\": \"\\u041a\\u04af\\u043b\\u0433\\u0456\\u043d\",\n\"Navy Blue\": \"\\u041a\\u04af\\u04a3\\u0433\\u0456\\u0440\\u0442 \\u043a\\u04e9\\u043a\",\n\"Dark Turquoise\": \"\\u041a\\u04af\\u04a3\\u0433\\u0456\\u0440\\u0442 \\u043a\\u04e9\\u0433\\u0456\\u043b\\u0434\\u0456\\u0440\",\n\"Dark Green\": \"\\u041a\\u04af\\u04a3\\u0433\\u0456\\u0440\\u0442 \\u0436\\u0430\\u0441\\u044b\\u043b\",\n\"Medium Blue\": \"\\u041e\\u0440\\u0442\\u0430\\u0448\\u0430 \\u043a\\u04e9\\u043a\",\n\"Medium Purple\": \"\\u041e\\u0440\\u0442\\u0430\\u0448\\u0430 \\u043a\\u04af\\u043b\\u0433\\u0456\\u043d\",\n\"Midnight Blue\": \"\\u0422\\u04af\\u043d\\u0433\\u0456 \\u043a\\u04e9\\u043a\",\n\"Yellow\": \"\\u0421\\u0430\\u0440\\u044b\",\n\"Orange\": \"\\u0421\\u0430\\u0440\\u0493\\u044b\\u0448\",\n\"Red\": \"\\u049a\\u044b\\u0437\\u044b\\u043b\",\n\"Light Gray\": \"\\u0410\\u0448\\u044b\\u049b \\u0441\\u04b1\\u0440\",\n\"Gray\": \"\\u0421\\u04b1\\u0440\",\n\"Dark Yellow\": \"\\u041a\\u04af\\u04a3\\u0433\\u0456\\u0440\\u0442 \\u0441\\u0430\\u0440\\u044b\",\n\"Dark Orange\": \"\\u041a\\u04af\\u04a3\\u0433\\u0456\\u0440\\u0442 \\u0441\\u0430\\u0440\\u0493\\u044b\\u0448\",\n\"Dark Red\": \"\\u041a\\u04af\\u04a3\\u0433\\u0456\\u0440\\u0442 \\u049b\\u044b\\u0437\\u044b\\u043b\",\n\"Medium Gray\": \"\\u041e\\u0440\\u0442\\u0430\\u0448\\u0430 \\u0441\\u04b1\\u0440\",\n\"Dark Gray\": \"\\u041a\\u04af\\u04a3\\u0433\\u0456\\u0440\\u0442 \\u0441\\u04b1\\u0440\",\n\"Light Green\": \"\\u0410\\u0448\\u044b\\u049b \\u0436\\u0430\\u0441\\u044b\\u043b\",\n\"Light Yellow\": \"\\u0410\\u0448\\u044b\\u049b \\u0441\\u0430\\u0440\\u044b\",\n\"Light Red\": \"\\u0410\\u0448\\u044b\\u049b \\u049b\\u044b\\u0437\\u044b\\u043b\",\n\"Light Purple\": \"\\u0410\\u0448\\u044b\\u049b \\u043a\\u04af\\u043b\\u0433\\u0456\\u043d\",\n\"Light Blue\": \"\\u0410\\u0448\\u044b\\u049b \\u043a\\u04e9\\u043a\",\n\"Dark Purple\": \"\\u049a\\u0430\\u0440\\u0430 \\u043a\\u04af\\u043b\\u0433\\u0456\\u043d\",\n\"Dark Blue\": \"\\u049a\\u0430\\u0440\\u0430 \\u043a\\u04e9\\u043a\",\n\"Black\": \"\\u049a\\u0430\\u0440\\u0430\",\n\"White\": \"\\u0410\\u049b\",\n\"Switch to or from fullscreen mode\": \"\\u0422\\u043e\\u043b\\u044b\\u049b \\u044d\\u043a\\u0440\\u0430\\u043d \\u0440\\u0435\\u0436\\u0438\\u043c\\u0456\\u043d\\u0435 \\u043d\\u0435\\u043c\\u0435\\u0441\\u0435 \\u043e\\u0434\\u0430\\u043d \\u0430\\u0443\\u044b\\u0441\\u0443\",\n\"Open help dialog\": \"\\u0410\\u043d\\u044b\\u049b\\u0442\\u0430\\u043c\\u0430 \\u0434\\u0438\\u0430\\u043b\\u043e\\u0433\\u0442\\u044b\\u049b \\u0442\\u0435\\u0440\\u0435\\u0437\\u0435\\u0441\\u0456\\u043d \\u0430\\u0448\\u0443\",\n\"history\": \"\\u0442\\u0430\\u0440\\u0438\\u0445\",\n\"styles\": \"\\u0441\\u0442\\u0438\\u043b\\u044c\\u0434\\u0435\\u0440\",\n\"formatting\": \"\\u043f\\u0456\\u0448\\u0456\\u043c\\u0434\\u0435\\u0443\",\n\"alignment\": \"\\u0442\\u0443\\u0440\\u0430\\u043b\\u0430\\u0443\",\n\"indentation\": \"\\u0448\\u0435\\u0433\\u0456\\u043d\\u0456\\u0441\",\n\"permanent pen\": \"\\u043f\\u0435\\u0440\\u043c\\u0430\\u043d\\u0435\\u043d\\u0442\\u0442\\u0456\\u043a \\u043c\\u0430\\u0440\\u043a\\u0435\\u0440\",\n\"comments\": \"\\u0442\\u04af\\u0441\\u0456\\u043d\\u0434\\u0456\\u0440\\u043c\\u0435\\u043b\\u0435\\u0440\",\n\"Format Painter\": \"\\u04ae\\u043b\\u0433\\u0456 \\u0431\\u043e\\u0439\\u044b\\u043d\\u0448\\u0430 \\u043f\\u0456\\u0448\\u0456\\u043c\\u0434\\u0435\\u0443\",\n\"Insert\\/edit iframe\": \"iframe \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\\/\\u04e9\\u04a3\\u0434\\u0435\\u0443\",\n\"Capitalization\": \"\\u0411\\u0430\\u0441 \\u04d9\\u0440\\u0456\\u043f\\u043a\\u0435 \\u0442\\u04af\\u0440\\u043b\\u0435\\u043d\\u0434\\u0456\\u0440\\u0443\",\n\"lowercase\": \"\\u043a\\u0456\\u0448\\u0456 \\u04d9\\u0440\\u0456\\u043f\",\n\"UPPERCASE\": \"\\u0411\\u0410\\u0421 \\u04d8\\u0420\\u0406\\u041f\",\n\"Title Case\": \"\\u0406\\u0441 \\u0430\\u0442\\u0430\\u0443\\u044b\",\n\"Permanent Pen Properties\": \"\\u041f\\u0435\\u0440\\u043c\\u0430\\u043d\\u0435\\u043d\\u0442\\u0442\\u0456\\u043a \\u043c\\u0430\\u0440\\u043a\\u0435\\u0440 \\u0441\\u0438\\u043f\\u0430\\u0442\\u0442\\u0430\\u0440\\u044b\",\n\"Permanent pen properties...\": \"\\u041f\\u0435\\u0440\\u043c\\u0430\\u043d\\u0435\\u043d\\u0442\\u0442\\u0456\\u043a \\u043c\\u0430\\u0440\\u043a\\u0435\\u0440 \\u0441\\u0438\\u043f\\u0430\\u0442\\u0442\\u0430\\u0440\\u044b...\",\n\"Font\": \"\\u049a\\u0430\\u0440\\u0456\\u043f\",\n\"Size\": \"\\u04e8\\u043b\\u0448\\u0435\\u043c\",\n\"More...\": \"\\u049a\\u043e\\u0441\\u044b\\u043c\\u0448\\u0430...\",\n\"Spellcheck Language\": \"\\u0415\\u043c\\u043b\\u0435\\u043d\\u0456 \\u0442\\u0435\\u043a\\u0441\\u0435\\u0440\\u0443 \\u0442\\u0456\\u043b\\u0456\",\n\"Select...\": \"\\u0422\\u0430\\u04a3\\u0434\\u0430\\u0443...\",\n\"Preferences\": \"\\u0411\\u0430\\u043f\\u0442\\u0430\\u043b\\u044b\\u043c\\u0434\\u0430\\u0440\",\n\"Yes\": \"\\u0418\\u04d9\",\n\"No\": \"\\u0416\\u043e\\u049b\",\n\"Keyboard Navigation\": \"\\u041f\\u0435\\u0440\\u043d\\u0435\\u0442\\u0430\\u049b\\u0442\\u0430 \\u043d\\u0430\\u0432\\u0438\\u0433\\u0430\\u0446\\u0438\\u044f\\u0441\\u044b\",\n\"Version\": \"\\u041d\\u04b1\\u0441\\u049b\\u0430\",\n\"Anchor\": \"\\u0411\\u0435\\u0442\\u0431\\u0435\\u043b\\u0433\\u0456\",\n\"Special character\": \"\\u0410\\u0440\\u043d\\u0430\\u0439\\u044b \\u0442\\u0430\\u04a3\\u0431\\u0430\",\n\"Color\": \"\\u0422\\u04af\\u0441\",\n\"Emoticons\": \"\\u0421\\u043c\\u0430\\u0439\\u043b\\u0438\\u043a\\u0442\\u0430\\u0440\",\n\"Document properties\": \"\\u049a\\u04b1\\u0436\\u0430\\u0442 \\u0441\\u0438\\u043f\\u0430\\u0442\\u0442\\u0430\\u0440\\u044b\",\n\"Image\": \"\\u0421\\u0443\\u0440\\u0435\\u0442\",\n\"Insert link\": \"\\u0421\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435 \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\",\n\"Link\": \"\\u0421\\u0456\\u043b\\u0442\\u0435\\u043c\\u0435\",\n\"Target\": \"\\u0410\\u0448\\u044b\\u043b\\u0430\\u0442\\u044b\\u043d \\u0436\\u0435\\u0440\\u0456\",\n\"Media\": \"\\u041c\\u0435\\u0434\\u0438\\u0430\",\n\"Poster\": \"\\u041f\\u043e\\u0441\\u0442\\u0435\\u0440\\u0456\",\n\"Print\": \"\\u0411\\u0430\\u0441\\u044b\\u043f \\u0448\\u044b\\u0493\\u0430\\u0440\\u0443\",\n\"Whole words\": \"\\u0422\\u04b1\\u0442\\u0430\\u0441 \\u0441\\u04e9\\u0437\\u0434\\u0435\\u0440\",\n\"Find and replace\": \"\\u0422\\u0430\\u0431\\u0443 \\u0436\\u04d9\\u043d\\u0435 \\u0430\\u0443\\u044b\\u0441\\u0442\\u044b\\u0440\\u0443\",\n\"Prev\": \"\\u0410\\u043b\\u0434\\u044b\\u04a3\\u0493\\u044b\",\n\"Spellcheck\": \"\\u0415\\u043c\\u043b\\u0435 \\u0442\\u0435\\u043a\\u0441\\u0435\\u0440\\u0443\",\n\"Caption\": \"\\u0410\\u0442\\u0430\\u0443\\u044b\",\n\"Insert template\": \"\\u04ae\\u043b\\u0433\\u0456 \\u043a\\u0456\\u0440\\u0456\\u0441\\u0442\\u0456\\u0440\\u0443\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/ko_KR.js",
    "content": "tinymce.addI18n('ko_KR',{\n\"Redo\": \"\\ub2e4\\uc2dc \\uc2e4\\ud589\",\n\"Undo\": \"\\uc2e4\\ud589 \\ucde8\\uc18c\",\n\"Cut\": \"\\uc798\\ub77c\\ub0b4\\uae30\",\n\"Copy\": \"\\ubcf5\\uc0ac\",\n\"Paste\": \"\\ubd99\\uc5ec\\ub123\\uae30\",\n\"Select all\": \"\\uc804\\uccb4\\uc120\\ud0dd\",\n\"New document\": \"\\uc0c8 \\ubb38\\uc11c\",\n\"Ok\": \"\\ud655\\uc778\",\n\"Cancel\": \"\\ucde8\\uc18c\",\n\"Visual aids\": \"\\uc2dc\\uac01\\uad50\\uc7ac\",\n\"Bold\": \"\\uad75\\uac8c\",\n\"Italic\": \"\\uae30\\uc6b8\\uc784\\uaf34\",\n\"Underline\": \"\\ubc11\\uc904\",\n\"Strikethrough\": \"\\ucde8\\uc18c\\uc120\",\n\"Superscript\": \"\\uc704 \\ucca8\\uc790\",\n\"Subscript\": \"\\uc544\\ub798 \\ucca8\\uc790\",\n\"Clear formatting\": \"\\uc11c\\uc2dd \\uc9c0\\uc6b0\\uae30\",\n\"Align left\": \"\\uc67c\\ucabd \\ub9de\\ucda4\",\n\"Align center\": \"\\uac00\\uc6b4\\ub370 \\ub9de\\ucda4\",\n\"Align right\": \"\\uc624\\ub978\\ucabd \\ub9de\\ucda4\",\n\"Justify\": \"\\uc591\\ucabd \\ub9de\\ucda4\",\n\"Bullet list\": \"\\uae00\\uba38\\ub9ac \\uae30\\ud638 \\ubaa9\\ub85d\",\n\"Numbered list\": \"\\ubc88\\ud638 \\ub9e4\\uae30\\uae30 \\ubaa9\\ub85d\",\n\"Decrease indent\": \"\\ub0b4\\uc5b4\\uc4f0\\uae30\",\n\"Increase indent\": \"\\ub4e4\\uc5ec\\uc4f0\\uae30\",\n\"Close\": \"\\ub2eb\\uae30\",\n\"Formats\": \"\\uc11c\\uc2dd\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\ube0c\\ub77c\\uc6b0\\uc800\\uac00 \\ud074\\ub9bd\\ubcf4\\ub4dc \\uc811\\uadfc\\uc744 \\uc9c0\\uc6d0\\ud558\\uc9c0 \\uc54a\\uc2b5\\ub2c8\\ub2e4. Ctrl+X\\/C\\/V \\ub2e8\\ucd95\\ud0a4\\ub97c \\uc774\\uc6a9\\ud558\\uc2ed\\uc2dc\\uc624.\",\n\"Headers\": \"\\uba38\\ub9ac\\uae00\",\n\"Header 1\": \"\\uba38\\ub9ac\\uae00 1\",\n\"Header 2\": \"\\uba38\\ub9ac\\uae00 2\",\n\"Header 3\": \"\\uba38\\ub9ac\\uae00 3\",\n\"Header 4\": \"\\uba38\\ub9ac\\uae00 4\",\n\"Header 5\": \"\\uba38\\ub9ac\\uae00 5\",\n\"Header 6\": \"\\uba38\\ub9ac\\uae00 6\",\n\"Headings\": \"\\uc81c\\ubaa9\",\n\"Heading 1\": \"\\uc81c\\ubaa9 1\",\n\"Heading 2\": \"\\uc81c\\ubaa9 2\",\n\"Heading 3\": \"\\uc81c\\ubaa9 3\",\n\"Heading 4\": \"\\uc81c\\ubaa9 4\",\n\"Heading 5\": \"\\uc81c\\ubaa9 5\",\n\"Heading 6\": \"\\uc81c\\ubaa9 6\",\n\"Preformatted\": \"\\uc11c\\uc2dd \\ubbf8\\uc124\\uc815\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"\\ucf54\\ub4dc\",\n\"Paragraph\": \"\\ub2e8\\ub77d\",\n\"Blockquote\": \"\\uc778\\uc6a9\\ubb38\",\n\"Inline\": \"\\uc778\\ub77c\\uc778\",\n\"Blocks\": \"\\ube14\\ub85d\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\uc2a4\\ud0c0\\uc77c\\ubcf5\\uc0ac \\ub044\\uae30. \\uc774 \\uc635\\uc158\\uc744 \\ub044\\uae30 \\uc804\\uc5d0\\ub294 \\ubcf5\\uc0ac \\uc2dc, \\uc2a4\\ud0c0\\uc77c\\uc774 \\ubcf5\\uc0ac\\ub418\\uc9c0 \\uc54a\\uc2b5\\ub2c8\\ub2e4.\",\n\"Fonts\": \"\\uae00\\uaf34\",\n\"Font Sizes\": \"\\uae00\\uaf34 \\ud06c\\uae30\",\n\"Class\": \"\\ud074\\ub798\\uc2a4\",\n\"Browse for an image\": \"\\uc774\\ubbf8\\uc9c0 \\ucc3e\\uae30\",\n\"OR\": \"\\ub610\\ub294\",\n\"Drop an image here\": \"\\uc5ec\\uae30\\ub85c \\uc774\\ubbf8\\uc9c0 \\ub04c\\uc5b4\\uc624\\uae30\",\n\"Upload\": \"\\uc5c5\\ub85c\\ub4dc\",\n\"Block\": \"\\ube14\\ub85d\",\n\"Align\": \"\\uc815\\ub82c\",\n\"Default\": \"\\uae30\\ubcf8\",\n\"Circle\": \"\\uc6d0\",\n\"Disc\": \"\\uc6d0\\ubc18\",\n\"Square\": \"\\uc0ac\\uac01\",\n\"Lower Alpha\": \"\\uc54c\\ud30c\\ubcb3 \\uc18c\\ubb38\\uc790\",\n\"Lower Greek\": \"\\uadf8\\ub9ac\\uc2a4\\uc5b4 \\uc18c\\ubb38\\uc790\",\n\"Lower Roman\": \"\\ub85c\\ub9c8\\uc790 \\uc18c\\ubb38\\uc790\",\n\"Upper Alpha\": \"\\uc54c\\ud30c\\ubcb3 \\uc18c\\ubb38\\uc790\",\n\"Upper Roman\": \"\\ub85c\\ub9c8\\uc790 \\ub300\\ubb38\\uc790\",\n\"Anchor...\": \"\\uc575\\ucee4...\",\n\"Name\": \"\\uc774\\ub984\",\n\"Id\": \"\\uc544\\uc774\\ub514\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"\\uc544\\uc774\\ub514\\ub294 \\ubb38\\uc790, \\uc22b\\uc790, \\ub300\\uc2dc, \\uc810, \\ucf5c\\ub860 \\ub610\\ub294 \\ubc11\\uc904\\ub85c \\uc2dc\\uc791\\ud574\\uc57c\\ud569\\ub2c8\\ub2e4.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\uc800\\uc7a5\\ud558\\uc9c0 \\uc54a\\uc740 \\uc815\\ubcf4\\uac00 \\uc788\\uc2b5\\ub2c8\\ub2e4. \\uc774 \\ud398\\uc774\\uc9c0\\ub97c \\ubc97\\uc5b4\\ub098\\uc2dc\\uaca0\\uc2b5\\ub2c8\\uae4c?\",\n\"Restore last draft\": \"\\ub9c8\\uc9c0\\ub9c9 \\ucd08\\uc548 \\ubcf5\\uc6d0\",\n\"Special character...\": \"\\ud2b9\\uc218 \\ubb38\\uc790...\",\n\"Source code\": \"\\uc18c\\uc2a4\\ucf54\\ub4dc\",\n\"Insert\\/Edit code sample\": \"\\ucf54\\ub4dc\\uc0d8\\ud50c \\uc0bd\\uc785\\/\\ud3b8\\uc9d1\",\n\"Language\": \"\\uc5b8\\uc5b4\",\n\"Code sample...\": \"\\ucf54\\ub4dc \\uc0d8\\ud50c...\",\n\"Color Picker\": \"\\uc0c9 \\uc120\\ud0dd\\uae30\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"\\uc67c\\ucabd\\uc5d0\\uc11c \\uc624\\ub978\\ucabd\",\n\"Right to left\": \"\\uc624\\ub978\\ucabd\\uc5d0\\uc11c \\uc67c\\ucabd\",\n\"Emoticons...\": \"\\uc774\\ubaa8\\ud2f0\\ucf58...\",\n\"Metadata and Document Properties\": \"\\uba54\\ud0c0\\ub370\\uc774\\ud130\\uc640 \\ubb38\\uc11c \\uc18d\\uc131\",\n\"Title\": \"\\uc81c\\ubaa9\",\n\"Keywords\": \"\\ud0a4\\uc6cc\\ub4dc\",\n\"Description\": \"\\uc124\\uba85\",\n\"Robots\": \"\\ub85c\\ubd07\",\n\"Author\": \"\\uc800\\uc790\",\n\"Encoding\": \"\\uc778\\ucf54\\ub529\",\n\"Fullscreen\": \"\\uc804\\uccb4\\ud654\\uba74\",\n\"Action\": \"\\ub3d9\\uc791\",\n\"Shortcut\": \"\\ub2e8\\ucd95\\ud0a4\",\n\"Help\": \"\\ub3c4\\uc6c0\\ub9d0\",\n\"Address\": \"\\uc8fc\\uc18c\",\n\"Focus to menubar\": \"\\uba54\\ub274\\uc5d0 \\ud3ec\\ucee4\\uc2a4\",\n\"Focus to toolbar\": \"\\ud234\\ubc14\\uc5d0 \\ud3ec\\ucee4\\uc2a4\",\n\"Focus to element path\": \"element path\\uc5d0 \\ud3ec\\ucee4\\uc2a4\",\n\"Focus to contextual toolbar\": \"\\ucf04\\ud14d\\uc2a4\\ud2b8 \\ud234\\ubc14\\uc5d0 \\ud3ec\\ucee4\\uc2a4\",\n\"Insert link (if link plugin activated)\": \"\\ub9c1\\ud06c \\uc0bd\\uc785 (link \\ud50c\\ub7ec\\uadf8\\uc778\\uc774 \\ud65c\\uc131\\ud654\\ub41c \\uc0c1\\ud0dc\\uc5d0\\uc11c)\",\n\"Save (if save plugin activated)\": \"\\uc800\\uc7a5 (save \\ud50c\\ub7ec\\uadf8\\uc778\\uc774 \\ud65c\\uc131\\ud654\\ub41c \\uc0c1\\ud0dc\\uc5d0\\uc11c)\",\n\"Find (if searchreplace plugin activated)\": \"\\ucc3e\\uae30(searchreplace \\ud50c\\ub7ec\\uadf8\\uc778\\uc774 \\ud65c\\uc131\\ud654\\ub41c \\uc0c1\\ud0dc\\uc5d0\\uc11c)\",\n\"Plugins installed ({0}):\": \"\\uc124\\uce58\\ub41c \\ud50c\\ub7ec\\uadf8\\uc778 ({0}):\",\n\"Premium plugins:\": \"\\uace0\\uae09 \\ud50c\\ub7ec\\uadf8\\uc778\",\n\"Learn more...\": \"\\uc880 \\ub354 \\uc0b4\\ud3b4\\ubcf4\\uae30\",\n\"You are using {0}\": \"{0}\\ub97c \\uc0ac\\uc6a9\\uc911\",\n\"Plugins\": \"\\ud50c\\ub7ec\\uadf8\\uc778\",\n\"Handy Shortcuts\": \"\\ub2e8\\ucd95\\ud0a4\",\n\"Horizontal line\": \"\\uac00\\ub85c\",\n\"Insert\\/edit image\": \"\\uc774\\ubbf8\\uc9c0 \\uc0bd\\uc785\\/\\uc218\\uc815\",\n\"Image description\": \"\\uc774\\ubbf8\\uc9c0 \\uc124\\uba85\",\n\"Source\": \"\\uc18c\\uc2a4\",\n\"Dimensions\": \"\\ud06c\\uae30\",\n\"Constrain proportions\": \"\\uc791\\uc5c5 \\uc81c\\ud55c\",\n\"General\": \"\\uc77c\\ubc18\",\n\"Advanced\": \"\\uace0\\uae09\",\n\"Style\": \"\\uc2a4\\ud0c0\\uc77c\",\n\"Vertical space\": \"\\uc218\\uc9c1 \\uacf5\\ubc31\",\n\"Horizontal space\": \"\\uc218\\ud3c9 \\uacf5\\ubc31\",\n\"Border\": \"\\ud14c\\ub450\\ub9ac\",\n\"Insert image\": \"\\uc774\\ubbf8\\uc9c0 \\uc0bd\\uc785\",\n\"Image...\": \"\\uc774\\ubbf8\\uc9c0...\",\n\"Image list\": \"\\uc774\\ubbf8\\uc9c0 \\ubaa9\\ub85d\",\n\"Rotate counterclockwise\": \"\\uc2dc\\uacc4\\ubc18\\ub300\\ubc29\\ud5a5\\uc73c\\ub85c \\ud68c\\uc804\",\n\"Rotate clockwise\": \"\\uc2dc\\uacc4\\ubc29\\ud5a5\\uc73c\\ub85c \\ud68c\\uc804\",\n\"Flip vertically\": \"\\uc218\\uc9c1 \\ub4a4\\uc9d1\\uae30\",\n\"Flip horizontally\": \"\\uc218\\ud3c9 \\ub4a4\\uc9d1\\uae30\",\n\"Edit image\": \"\\uc774\\ubbf8\\uc9c0 \\ud3b8\\uc9d1\",\n\"Image options\": \"\\uc774\\ubbf8\\uc9c0 \\uc635\\uc158\",\n\"Zoom in\": \"\\ud655\\ub300\",\n\"Zoom out\": \"\\ucd95\\uc18c\",\n\"Crop\": \"\\uc790\\ub974\\uae30\",\n\"Resize\": \"\\ud06c\\uae30 \\uc870\\uc808\",\n\"Orientation\": \"\\ubc29\\ud5a5\",\n\"Brightness\": \"\\ubc1d\\uae30\",\n\"Sharpen\": \"\\uc120\\uba85\\ud558\\uac8c\",\n\"Contrast\": \"\\ub300\\ube44\",\n\"Color levels\": \"\\uc0c9\\uc0c1\\ub808\\ubca8\",\n\"Gamma\": \"\\uac10\\ub9c8\",\n\"Invert\": \"\\ubc18\\uc804\",\n\"Apply\": \"\\uc801\\uc6a9\",\n\"Back\": \"\\ub4a4\\ub85c\",\n\"Insert date\\/time\": \"\\ub0a0\\uc9dc\\/\\uc2dc\\uac04\\uc0bd\\uc785\",\n\"Date\\/time\": \"\\ub0a0\\uc9dc\\/\\uc2dc\\uac04\",\n\"Insert\\/Edit Link\": \"\\ub9c1\\ud06c \\uc0bd\\uc785\\/\\ud3b8\\uc9d1\",\n\"Insert\\/edit link\": \"\\ub9c1\\ud06c \\uc0bd\\uc785\\/\\uc218\\uc815\",\n\"Text to display\": \"\\ubcf8\\ubb38\",\n\"Url\": \"\\uc8fc\\uc18c\",\n\"Open link in...\": \"...\\uc5d0\\uc11c \\ub9c1\\ud06c \\uc5f4\\uae30\",\n\"Current window\": \"\\ud604\\uc7ac \\ucc3d\",\n\"None\": \"\\uc5c6\\uc74c\",\n\"New window\": \"\\uc0c8\\ucc3d\",\n\"Remove link\": \"\\ub9c1\\ud06c\\uc0ad\\uc81c\",\n\"Anchors\": \"\\ucc45\\uac08\\ud53c\",\n\"Link...\": \"\\ub9c1\\ud06c...\",\n\"Paste or type a link\": \"\\ub9c1\\ud06c\\ub97c \\ubd99\\uc5ec\\ub123\\uac70\\ub098 \\uc785\\ub825\\ud558\\uc138\\uc694\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\ud604\\uc7ac E-mail\\uc8fc\\uc18c\\ub97c \\uc785\\ub825\\ud558\\uc168\\uc2b5\\ub2c8\\ub2e4. E-mail \\uc8fc\\uc18c\\uc5d0 \\ub9c1\\ud06c\\ub97c \\uac78\\uae4c\\uc694?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\ud604\\uc7ac \\uc6f9\\uc0ac\\uc774\\ud2b8 \\uc8fc\\uc18c\\ub97c \\uc785\\ub825\\ud558\\uc168\\uc2b5\\ub2c8\\ub2e4. \\ud574\\ub2f9 \\uc8fc\\uc18c\\uc5d0 \\ub9c1\\ud06c\\ub97c \\uac78\\uae4c\\uc694?\",\n\"Link list\": \"\\ub9c1\\ud06c \\ub9ac\\uc2a4\\ud2b8\",\n\"Insert video\": \"\\ube44\\ub514\\uc624 \\uc0bd\\uc785\",\n\"Insert\\/edit video\": \"\\ube44\\ub514\\uc624 \\uc0bd\\uc785\\/\\uc218\\uc815\",\n\"Insert\\/edit media\": \"\\ubbf8\\ub514\\uc5b4 \\uc0bd\\uc785\\/\\uc218\\uc815\",\n\"Alternative source\": \"\\ub300\\uccb4 \\uc18c\\uc2a4\",\n\"Alternative source URL\": \"\\ub300\\uccb4 \\uc6d0\\ubcf8 URL\",\n\"Media poster (Image URL)\": \"\\ub300\\ud45c \\uc774\\ubbf8\\uc9c0(\\uc774\\ubbf8\\uc9c0 URL)\",\n\"Paste your embed code below:\": \"\\uc544\\ub798\\uc5d0 \\ucf54\\ub4dc\\ub97c \\ubd99\\uc5ec\\ub123\\uc73c\\uc138\\uc694:\",\n\"Embed\": \"\\uc0bd\\uc785\",\n\"Media...\": \"\\ubbf8\\ub514\\uc5b4...\",\n\"Nonbreaking space\": \"\\ub744\\uc5b4\\uc4f0\\uae30\",\n\"Page break\": \"\\ud398\\uc774\\uc9c0 \\uad6c\\ubd84\\uc790\",\n\"Paste as text\": \"\\ud14d\\uc2a4\\ud2b8\\ub85c \\ubd99\\uc5ec\\ub123\\uae30\",\n\"Preview\": \"\\ubbf8\\ub9ac\\ubcf4\\uae30\",\n\"Print...\": \"\\uc778\\uc1c4...\",\n\"Save\": \"\\uc800\\uc7a5\",\n\"Find\": \"\\ucc3e\\uae30\",\n\"Replace with\": \"\\uad50\\uccb4\",\n\"Replace\": \"\\uad50\\uccb4\",\n\"Replace all\": \"\\uc804\\uccb4 \\uad50\\uccb4\",\n\"Previous\": \"\\uc774\\uc804\",\n\"Next\": \"\\ub2e4\\uc74c\",\n\"Find and replace...\": \"\\ucc3e\\uae30 \\ubc0f \\ubc14\\uafb8\\uae30...\",\n\"Could not find the specified string.\": \"\\ubb38\\uc790\\ub97c \\ucc3e\\uc744 \\uc218 \\uc5c6\\uc2b5\\ub2c8\\ub2e4.\",\n\"Match case\": \"\\ub300\\uc18c\\ubb38\\uc790 \\uc77c\\uce58\",\n\"Find whole words only\": \"\\ubaa8\\ub450 \\uc77c\\uce58\\ud558\\ub294 \\ubb38\\uc790 \\ucc3e\\uae30\",\n\"Spell check\": \"\\ub9de\\ucda4\\ubc95 \\uac80\\uc0ac\",\n\"Ignore\": \"\\ubb34\\uc2dc\",\n\"Ignore all\": \"\\uc804\\uccb4\\ubb34\\uc2dc\",\n\"Finish\": \"\\uc644\\ub8cc\",\n\"Add to Dictionary\": \"\\uc0ac\\uc804\\uc5d0 \\ucd94\\uac00\",\n\"Insert table\": \"\\ud14c\\uc774\\ube14 \\uc0bd\\uc785\",\n\"Table properties\": \"\\ud14c\\uc774\\ube14 \\uc18d\\uc131\",\n\"Delete table\": \"\\ud14c\\uc774\\ube14 \\uc0ad\\uc81c\",\n\"Cell\": \"\\uc140\",\n\"Row\": \"\\uc5f4\",\n\"Column\": \"\\ud589\",\n\"Cell properties\": \"\\uc140 \\uc18d\",\n\"Merge cells\": \"\\uc140 \\ud569\\uce58\\uae30\",\n\"Split cell\": \"\\uc140 \\ub098\\ub204\\uae30\",\n\"Insert row before\": \"\\uc774\\uc804\\uc5d0 \\ud589 \\uc0bd\\uc785\",\n\"Insert row after\": \"\\ub2e4\\uc74c\\uc5d0 \\ud589 \\uc0bd\\uc785\",\n\"Delete row\": \"\\ud589 \\uc9c0\\uc6b0\\uae30\",\n\"Row properties\": \"\\ud589 \\uc18d\\uc131\",\n\"Cut row\": \"\\ud589 \\uc798\\ub77c\\ub0b4\\uae30\",\n\"Copy row\": \"\\ud589 \\ubcf5\\uc0ac\",\n\"Paste row before\": \"\\uc774\\uc804\\uc5d0 \\ud589 \\ubd99\\uc5ec\\ub123\\uae30\",\n\"Paste row after\": \"\\ub2e4\\uc74c\\uc5d0 \\ud589 \\ubd99\\uc5ec\\ub123\\uae30\",\n\"Insert column before\": \"\\uc774\\uc804\\uc5d0 \\ud589 \\uc0bd\\uc785\",\n\"Insert column after\": \"\\ub2e4\\uc74c\\uc5d0 \\uc5f4 \\uc0bd\\uc785\",\n\"Delete column\": \"\\uc5f4 \\uc9c0\\uc6b0\\uae30\",\n\"Cols\": \"\\uc5f4\",\n\"Rows\": \"\\ud589\",\n\"Width\": \"\\ub113\\uc774\",\n\"Height\": \"\\ub192\\uc774\",\n\"Cell spacing\": \"\\uc140 \\uac04\\uaca9\",\n\"Cell padding\": \"\\uc140 \\uc548\\ucabd \\uc5ec\\ubc31\",\n\"Show caption\": \"\\ucea1\\uc158 \\ud45c\\uc2dc\",\n\"Left\": \"\\uc67c\\ucabd\",\n\"Center\": \"\\uac00\\uc6b4\\ub370\",\n\"Right\": \"\\uc624\\ub978\\ucabd\",\n\"Cell type\": \"\\uc140 \\ud0c0\\uc785\",\n\"Scope\": \"\\ubc94\\uc704\",\n\"Alignment\": \"\\uc815\\ub82c\",\n\"H Align\": \"\\uac00\\ub85c \\uc815\\ub82c\",\n\"V Align\": \"\\uc138\\ub85c \\uc815\\ub82c\",\n\"Top\": \"\\uc0c1\\ub2e8\",\n\"Middle\": \"\\uc911\\uac04\",\n\"Bottom\": \"\\ud558\\ub2e8\",\n\"Header cell\": \"\\ud5e4\\ub354 \\uc140\",\n\"Row group\": \"\\ud589 \\uadf8\\ub8f9\",\n\"Column group\": \"\\uc5f4 \\uadf8\\ub8f9\",\n\"Row type\": \"\\ud589 \\ud0c0\\uc785\",\n\"Header\": \"\\ud5e4\\ub354\",\n\"Body\": \"\\ubc14\\ub514\",\n\"Footer\": \"\\ud478\\ud130\",\n\"Border color\": \"\\ud14c\\ub450\\ub9ac \\uc0c9\",\n\"Insert template...\": \"\\ud15c\\ud50c\\ub9bf \\uc0bd\\uc785...\",\n\"Templates\": \"\\ud15c\\ud50c\\ub9bf\",\n\"Template\": \"\\ud15c\\ud50c\\ub9bf\",\n\"Text color\": \"\\ubb38\\uc790 \\uc0c9\\uae54\",\n\"Background color\": \"\\ubc30\\uacbd\\uc0c9\",\n\"Custom...\": \"\\uc9c1\\uc811 \\uc0c9\\uae54 \\uc9c0\\uc815\\ud558\\uae30\",\n\"Custom color\": \"\\uc9c1\\uc811 \\uc9c0\\uc815\\ud55c \\uc0c9\\uae54\",\n\"No color\": \"\\uc0c9\\uc0c1 \\uc5c6\\uc74c\",\n\"Remove color\": \"\\uc0c9 \\uc81c\\uac70\",\n\"Table of Contents\": \"\\ubaa9\\ucc28\",\n\"Show blocks\": \"\\ube14\\ub7ed \\ubcf4\\uc5ec\\uc8fc\\uae30\",\n\"Show invisible characters\": \"\\uc548\\ubcf4\\uc774\\ub294 \\ubb38\\uc790 \\ubcf4\\uc774\\uae30\",\n\"Word count\": \"\\ub2e8\\uc5b4 \\uc218\",\n\"Count\": \"\\uac1c\\uc218\",\n\"Document\": \"\\ubb38\\uc11c\",\n\"Selection\": \"\\uc120\\ud0dd\",\n\"Words\": \"\\ub2e8\\uc5b4\",\n\"Words: {0}\": \"\\ub2e8\\uc5b4: {0}\",\n\"{0} words\": \"{0} \\ub2e8\\uc5b4\",\n\"File\": \"\\ud30c\\uc77c\",\n\"Edit\": \"\\uc218\\uc815\",\n\"Insert\": \"\\uc0bd\\uc785\",\n\"View\": \"\\ubcf4\\uae30\",\n\"Format\": \"\\ud3ec\\ub9f7\",\n\"Table\": \"\\ud14c\\uc774\\ube14\",\n\"Tools\": \"\\ub3c4\\uad6c\",\n\"Powered by {0}\": \"Powered by {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\uc11c\\uc2dd \\uc788\\ub294 \\ud14d\\uc2a4\\ud2b8 \\ud3b8\\uc9d1\\uae30 \\uc785\\ub2c8\\ub2e4. ALT-F9\\ub97c \\ub204\\ub974\\uba74 \\uba54\\ub274, ALT-F10\\ub97c \\ub204\\ub974\\uba74 \\ud234\\ubc14, ALT-0\\uc744 \\ub204\\ub974\\uba74 \\ub3c4\\uc6c0\\ub9d0\\uc744 \\ubcfc \\uc218 \\uc788\\uc2b5\\ub2c8\\ub2e4.\",\n\"Image title\": \"\\uc774\\ubbf8\\uc9c0 \\uc81c\\ubaa9\",\n\"Border width\": \"\\ud14c\\ub450\\ub9ac \\ub450\\uaed8\",\n\"Border style\": \"\\ud14c\\ub450\\ub9ac \\uc2a4\\ud0c0\\uc77c\",\n\"Error\": \"\\uc624\\ub958\",\n\"Warn\": \"\\uacbd\\uace0\",\n\"Valid\": \"\\uc720\\ud6a8\\ud568\",\n\"To open the popup, press Shift+Enter\": \"\\ud31d\\uc5c5\\uc744 \\uc5f4\\ub824\\uba74 Shift+Enter\\ub97c \\ub204\\ub974\\uc2ed\\uc2dc\\uc624.\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\uc11c\\uc2dd \\uc788\\ub294 \\ud14d\\uc2a4\\ud2b8 \\uc601\\uc5ed. ALT-0\\uc744 \\ub204\\ub974\\uba74 \\ub3c4\\uc6c0\\ub9d0\\uc744 \\ubcfc \\uc218 \\uc788\\uc2b5\\ub2c8\\ub2e4.\",\n\"System Font\": \"\\uc2dc\\uc2a4\\ud15c \\uae00\\uaf34\",\n\"Failed to upload image: {0}\": \"\\uc774\\ubbf8\\uc9c0 \\uc5c5\\ub85c\\ub4dc \\uc2e4\\ud328: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\ud50c\\ub7ec\\uadf8\\uc778 \\ub85c\\ub4dc \\uc2e4\\ud328:  URL: {1}\\uc5d0\\uc11c\\uc758 {0}\",\n\"Failed to load plugin url: {0}\": \"\\ud50c\\ub7ec\\uadf8\\uc778 URL \\ub85c\\ub4dc \\uc2e4\\ud328: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\ud50c\\ub7ec\\uadf8\\uc778 \\ucd08\\uae30\\ud654 \\uc2e4\\ud328: {0}\",\n\"example\": \"\\uc608\\uc81c\",\n\"Search\": \"\\uac80\\uc0c9\",\n\"All\": \"\\ubaa8\\ub450\",\n\"Currency\": \"\\ud1b5\\ud654\",\n\"Text\": \"\\ud14d\\uc2a4\\ud2b8\",\n\"Quotations\": \"\\uc778\\uc6a9\\ubb38\",\n\"Mathematical\": \"\\uc218\\ud559\",\n\"Extended Latin\": \"\\ud655\\uc7a5 \\ub77c\\ud2f4\\uc5b4\",\n\"Symbols\": \"\\uae30\\ud638\",\n\"Arrows\": \"\\ud654\\uc0b4\\ud45c\",\n\"User Defined\": \"\\uc0ac\\uc6a9\\uc790 \\uc815\\uc758\",\n\"dollar sign\": \"\\ub2ec\\ub7ec \\uae30\\ud638\",\n\"currency sign\": \"\\ud1b5\\ud654 \\uae30\\ud638\",\n\"euro-currency sign\": \"\\uc720\\ub85c\\ud654 \\uae30\\ud638\",\n\"colon sign\": \"\\ucf5c\\ub860 \\uae30\\ud638\",\n\"cruzeiro sign\": \"\\ud06c\\ub8e8\\uc81c\\uc774\\ub8e8 \\uae30\\ud638\",\n\"french franc sign\": \"\\ud504\\ub791\\uc2a4 \\ud504\\ub791 \\uae30\\ud638\",\n\"lira sign\": \"\\ub9ac\\ub77c \\uae30\\ud638\",\n\"mill sign\": \"\\ubc00 \\uae30\\ud638\",\n\"naira sign\": \"\\ub098\\uc774\\ub77c \\uae30\\ud638\",\n\"peseta sign\": \"\\ud398\\uc138\\ud0c0 \\uae30\\ud638\",\n\"rupee sign\": \"\\ub8e8\\ud53c \\uae30\\ud638\",\n\"won sign\": \"\\uc6d0 \\uae30\\ud638\",\n\"new sheqel sign\": \"\\ub274 \\uc138\\ucf08 \\uae30\\ud638\",\n\"dong sign\": \"\\ub3d9 \\uae30\\ud638\",\n\"kip sign\": \"\\ud0b5 \\uae30\\ud638\",\n\"tugrik sign\": \"\\ud22c\\uadf8\\ub9ac\\ud06c \\uae30\\ud638\",\n\"drachma sign\": \"\\ub4dc\\ub77c\\ud06c\\ub9c8 \\uae30\\ud638\",\n\"german penny symbol\": \"\\ub3c5\\uc77c \\ud398\\ub2c8 \\uae30\\ud638\",\n\"peso sign\": \"\\ud398\\uc18c \\uae30\\ud638\",\n\"guarani sign\": \"\\uacfc\\ub77c\\ub2c8 \\uae30\\ud638\",\n\"austral sign\": \"\\uc544\\uc6b0\\uc2a4\\ud2b8\\ub784 \\uae30\\ud638\",\n\"hryvnia sign\": \"\\uadf8\\ub9ac\\ube0c\\ub098 \\uae30\\ud638\",\n\"cedi sign\": \"\\uc138\\ub514 \\uae30\\ud638\",\n\"livre tournois sign\": \"\\ub9ac\\ube0c\\ub974 \\ud2b8\\ub974\\ub204\\uc544 \\uae30\\ud638\",\n\"spesmilo sign\": \"\\uc2a4\\ud398\\uc2a4\\ubc00\\ub85c \\uae30\\ud638\",\n\"tenge sign\": \"\\ud161\\uac8c \\uae30\\ud638\",\n\"indian rupee sign\": \"\\uc778\\ub3c4 \\ub8e8\\ud53c \\uae30\\ud638\",\n\"turkish lira sign\": \"\\ud130\\ud0a4 \\ub9ac\\ub77c \\uae30\\ud638\",\n\"nordic mark sign\": \"\\ub178\\ub974\\ub515 \\ub9c8\\ub974\\ud06c \\uae30\\ud638\",\n\"manat sign\": \"\\ub9c8\\ub098\\ud2b8 \\uae30\\ud638\",\n\"ruble sign\": \"\\ub8e8\\ube14 \\uae30\\ud638\",\n\"yen character\": \"\\uc5d4 \\uae30\\ud638\",\n\"yuan character\": \"\\uc704\\uc548 \\uae30\\ud638\",\n\"yuan character, in hong kong and taiwan\": \"\\ub300\\ub9cc \\uc704\\uc548 \\uae30\\ud638\",\n\"yen\\/yuan character variant one\": \"\\uc5d4\\/\\uc704\\uc548 \\ubb38\\uc790 \\ubcc0\\ud615\",\n\"Loading emoticons...\": \"\\uc774\\ubaa8\\ud2f0\\ucf58 \\ubd88\\ub7ec\\uc624\\ub294 \\uc911...\",\n\"Could not load emoticons\": \"\\uc774\\ubaa8\\ud2f0\\ucf58\\uc744 \\ubd88\\ub7ec\\uc62c \\uc218 \\uc5c6\\uc74c\",\n\"People\": \"\\uc0ac\\ub78c\",\n\"Animals and Nature\": \"\\ub3d9\\ubb3c\\uacfc \\uc790\\uc5f0\",\n\"Food and Drink\": \"\\uc74c\\uc2dd\\uacfc \\uc74c\\ub8cc\",\n\"Activity\": \"\\ud65c\\ub3d9\",\n\"Travel and Places\": \"\\uc5ec\\ud589\\uacfc \\uc7a5\\uc18c\",\n\"Objects\": \"\\ubb3c\\uac74\",\n\"Flags\": \"\\uae43\\ubc1c\",\n\"Characters\": \"\\ubb38\\uc790\",\n\"Characters (no spaces)\": \"\\ubb38\\uc790(\\uacf5\\ubc31 \\uc5c6\\uc74c)\",\n\"{0} characters\": \"{0} \\ubb38\\uc790\",\n\"Error: Form submit field collision.\": \"\\uc624\\ub958: \\uc591\\uc2dd \\uc81c\\ucd9c \\ud544\\ub4dc \\ubd88\\uc77c\\uce58\",\n\"Error: No form element found.\": \"\\uc624\\ub958: \\uc591\\uc2dd \\ud56d\\ubaa9 \\uc5c6\\uc74c\",\n\"Update\": \"\\uc5c5\\ub370\\uc774\\ud2b8\",\n\"Color swatch\": \"\\uc0c9\\uc0c1 \\uacac\\ubcf8\",\n\"Turquoise\": \"\\uccad\\ub85d\\uc0c9\",\n\"Green\": \"\\ucd08\\ub85d\\uc0c9\",\n\"Blue\": \"\\ud30c\\ub780\\uc0c9\",\n\"Purple\": \"\\ubcf4\\ub77c\\uc0c9\",\n\"Navy Blue\": \"\\ub0a8\\uc0c9\",\n\"Dark Turquoise\": \"\\uc9c4\\ud55c \\uccad\\ub85d\\uc0c9\",\n\"Dark Green\": \"\\uc9c4\\ud55c \\ucd08\\ub85d\\uc0c9\",\n\"Medium Blue\": \"\\uc911\\uac04 \\ud30c\\ub780\\uc0c9\",\n\"Medium Purple\": \"\\uc911\\uac04 \\ubcf4\\ub77c\\uc0c9\",\n\"Midnight Blue\": \"\\uc9c4\\ud55c \\ud30c\\ub780\\uc0c9\",\n\"Yellow\": \"\\ub178\\ub780\\uc0c9\",\n\"Orange\": \"\\uc8fc\\ud669\\uc0c9\",\n\"Red\": \"\\ube68\\uac04\\uc0c9\",\n\"Light Gray\": \"\\ubc1d\\uc740 \\ud68c\\uc0c9\",\n\"Gray\": \"\\ud68c\\uc0c9\",\n\"Dark Yellow\": \"\\uc9c4\\ud55c \\ub178\\ub780\\uc0c9\",\n\"Dark Orange\": \"\\uc9c4\\ud55c \\uc8fc\\ud669\\uc0c9\",\n\"Dark Red\": \"\\uc9c4\\ud55c \\ube68\\uac04\\uc0c9\",\n\"Medium Gray\": \"\\uc911\\uac04 \\ud68c\\uc0c9\",\n\"Dark Gray\": \"\\uc9c4\\ud55c \\ud68c\\uc0c9\",\n\"Light Green\": \"\\ubc1d\\uc740 \\ub179\\uc0c9\",\n\"Light Yellow\": \"\\ubc1d\\uc740 \\ub178\\ub780\\uc0c9\",\n\"Light Red\": \"\\ubc1d\\uc740 \\ube68\\uac04\\uc0c9\",\n\"Light Purple\": \"\\ubc1d\\uc740 \\ubcf4\\ub77c\\uc0c9\",\n\"Light Blue\": \"\\ubc1d\\uc740 \\ud30c\\ub780\\uc0c9\",\n\"Dark Purple\": \"\\uc9c4\\ud55c \\ubcf4\\ub77c\\uc0c9\",\n\"Dark Blue\": \"\\uc9c4\\ud55c \\ud30c\\ub780\\uc0c9\",\n\"Black\": \"\\uac80\\uc740\\uc0c9\",\n\"White\": \"\\ud770\\uc0c9\",\n\"Switch to or from fullscreen mode\": \"\\uc804\\uccb4 \\ud654\\uba74\\uc73c\\ub85c\\/\\uc5d0\\uc11c \\uc804\\ud658\",\n\"Open help dialog\": \"\\ub3c4\\uc6c0\\ub9d0 \\ub300\\ud654\\ucc3d \\uc5f4\\uae30\",\n\"history\": \"\\uae30\\ub85d\",\n\"styles\": \"\\uc2a4\\ud0c0\\uc77c\",\n\"formatting\": \"\\ud3ec\\ub9f7\\ud305\",\n\"alignment\": \"\\uc815\\ub82c\",\n\"indentation\": \"\\ub4e4\\uc5ec\\uc4f0\\uae30\",\n\"permanent pen\": \"\\uc720\\uc131\\ud39c\",\n\"comments\": \"\\uc8fc\\uc11d\",\n\"Format Painter\": \"\\uc11c\\uc2dd \\ubcf5\\uc0ac\",\n\"Insert\\/edit iframe\": \"\\uc544\\uc774\\ud504\\ub808\\uc784 \\uc0bd\\uc785\\/\\ud3b8\\uc9d1\",\n\"Capitalization\": \"\\ub300\\ubb38\\uc790\\ud654\",\n\"lowercase\": \"\\uc18c\\ubb38\\uc790\",\n\"UPPERCASE\": \"\\ub300\\ubb38\\uc790\",\n\"Title Case\": \"\\uc81c\\ubaa9\\uc744 \\ub300\\ubb38\\uc790\\ud654\",\n\"Permanent Pen Properties\": \"\\uc601\\uad6c \\ud39c \\ud2b9\\uc131\",\n\"Permanent pen properties...\": \"\\uc601\\uad6c \\ud39c \\ud2b9\\uc131...\",\n\"Font\": \"\\uae00\\uaf34\",\n\"Size\": \"\\ud06c\\uae30\",\n\"More...\": \"\\ub354 \\ubcf4\\uae30...\",\n\"Spellcheck Language\": \"\\ub9de\\ucda4\\ubc95 \\uac80\\uc0ac \\uc5b8\\uc5b4\",\n\"Select...\": \"\\uc120\\ud0dd...\",\n\"Preferences\": \"\\ud658\\uacbd\\uc124\\uc815\",\n\"Yes\": \"\\ub124\",\n\"No\": \"\\uc544\\ub2c8\\uc624\",\n\"Keyboard Navigation\": \"\\ud0a4 \\uc120\\ud0dd\",\n\"Version\": \"\\ubc84\\uc804\",\n\"Anchor\": \"\\uc575\\ucee4\",\n\"Special character\": \"\\ud2b9\\uc218\\ubb38\\uc790\",\n\"Code sample\": \"\\ucf54\\ub4dc\\uc0d8\\ud50c\",\n\"Color\": \"\\uc0c9\\uc0c1\",\n\"Emoticons\": \"\\uc774\\ubaa8\\ud2f0\\ucf58\",\n\"Document properties\": \"\\ubb38\\uc11c \\uc18d\\uc131\",\n\"Image\": \"\\uc774\\ubbf8\\uc9c0\",\n\"Insert link\": \"\\ub9c1\\ud06c \\uc0bd\\uc785 \",\n\"Target\": \"\\ub300\\uc0c1\",\n\"Link\": \"\\ub9c1\\ud06c\",\n\"Poster\": \"\\ud3ec\\uc2a4\\ud130\",\n\"Media\": \"\\ubbf8\\ub514\\uc5b4\",\n\"Print\": \"\\ucd9c\\ub825\",\n\"Prev\": \"\\uc774\\uc804\",\n\"Find and replace\": \"\\ucc3e\\uc544\\uc11c \\uad50\\uccb4\",\n\"Whole words\": \"\\uc804\\uccb4 \\ub2e8\\uc5b4\",\n\"Spellcheck\": \"\\ubb38\\ubc95\\uccb4\\ud06c\",\n\"Caption\": \"\\ucea1\\uc158\",\n\"Insert template\": \"\\ud15c\\ud50c\\ub9bf \\uc0bd\\uc785\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/ku.js",
    "content": "tinymce.addI18n('ku',{\n\"Redo\": \"\\u06a9\\u0631\\u062f\\u0646\\u06d5\\u0648\\u06d5\",\n\"Undo\": \"\\u06af\\u06d5\\u0695\\u0627\\u0646\\u06d5\\u0648\\u06d5\",\n\"Cut\": \"\\u0628\\u0695\\u06cc\\u0646\",\n\"Copy\": \"\\u0644\\u06d5\\u0628\\u06d5\\u0631\\u06af\\u0631\\u062a\\u0646\\u06d5\\u0648\\u06d5\",\n\"Paste\": \"\\u0644\\u06a9\\u0627\\u0646\\u062f\\u0646\",\n\"Select all\": \"\\u0647\\u06d5\\u06b5\\u0628\\u0698\\u0627\\u0631\\u062f\\u0646\\u06cc \\u0647\\u06d5\\u0645\\u0648\\u0648\",\n\"New document\": \"\\u0628\\u06d5\\u06b5\\u06af\\u06d5\\u0646\\u0627\\u0645\\u06d5\\u06cc \\u0646\\u0648\\u06ce\",\n\"Ok\": \"\\u0628\\u0627\\u0634\\u06d5\",\n\"Cancel\": \"\\u067e\\u0627\\u0634\\u06af\\u06d5\\u0632\\u0628\\u0648\\u0648\\u0646\\u06d5\\u0648\\u06d5\",\n\"Visual aids\": \"\\u0647\\u0627\\u0648\\u06a9\\u0627\\u0631\\u06cc \\u0628\\u06cc\\u0646\\u06d5\\u06cc\\u06cc\",\n\"Bold\": \"\\u062a\\u06c6\\u062e\\u06a9\\u0631\\u062f\\u0646\",\n\"Italic\": \"\\u0644\\u0627\\u0631\\u06a9\\u0631\\u062f\\u0646\",\n\"Underline\": \"\\u0647\\u06ce\\u06b5 \\u0628\\u06d5\\u0698\\u06ce\\u0631\\u062f\\u0627\\u0646\",\n\"Strikethrough\": \"\\u0647\\u06ce\\u06b5 \\u0628\\u06d5\\u0646\\u0627\\u0648\\u062f\\u0627\\u0646\",\n\"Superscript\": \"\\u0633\\u06d5\\u0631\\u0646\\u0648\\u0648\\u0633\",\n\"Subscript\": \"\\u0698\\u06ce\\u0631\\u0646\\u0648\\u0648\\u0633\",\n\"Clear formatting\": \"\\u067e\\u0627\\u06a9\\u06a9\\u0631\\u062f\\u0646\\u06d5\\u0648\\u06d5\\u06cc \\u0634\\u06ce\\u0648\\u0627\\u0632\\u06a9\\u0631\\u062f\\u0646\",\n\"Align left\": \"\\u0644\\u0627\\u06af\\u0631\\u062a\\u0646\\u06cc \\u0686\\u06d5\\u067e\",\n\"Align center\": \"\\u0644\\u0627\\u06af\\u0631\\u062a\\u0646\\u06cc \\u0646\\u0627\\u0648\\u06d5\\u0695\\u0627\\u0633\\u062a\",\n\"Align right\": \"\\u0644\\u0627\\u06af\\u0631\\u062a\\u0646\\u06cc \\u0695\\u0627\\u0633\\u062a\",\n\"Justify\": \"\\u0647\\u0627\\u0648\\u0695\\u06ce\\u06a9\\u06cc \",\n\"Bullet list\": \"\\u0644\\u06cc\\u0633\\u062a\\u06cc \\u062e\\u0627\\u06b5\",\n\"Numbered list\": \"\\u0644\\u06cc\\u0633\\u062a\\u06cc \\u0698\\u0645\\u0627\\u0631\\u06d5\",\n\"Decrease indent\": \"\\u06a9\\u06d5\\u0645\\u06a9\\u0631\\u062f\\u0646\\u06cc \\u0628\\u06c6\\u0634\\u0627\\u06cc\\u06cc\",\n\"Increase indent\": \"\\u0632\\u06cc\\u0627\\u062f\\u06a9\\u0631\\u062f\\u0646\\u06cc \\u0628\\u06c6\\u0634\\u0627\\u06cc\\u06cc\",\n\"Close\": \"\\u062f\\u0627\\u062e\\u0633\\u062a\\u0646\",\n\"Formats\": \"\\u0634\\u06ce\\u0648\\u0627\\u0632\\u06a9\\u0631\\u062f\\u0646\\u06d5\\u06a9\\u0627\\u0646\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u0648\\u06ce\\u0628\\u06af\\u06d5\\u0695\\u06d5\\u06a9\\u06d5\\u062a \\u067e\\u0627\\u06b5\\u067e\\u0634\\u062a\\u06cc \\u062f\\u06d5\\u0633\\u062a\\u06a9\\u06d5\\u0648\\u062a\\u0646\\u06cc \\u0695\\u0627\\u0633\\u062a\\u06d5\\u0648\\u062e\\u06c6\\u06cc \\u06a9\\u0644\\u06cc\\u067e\\u0628\\u06c6\\u0631\\u062f \\u0646\\u0627\\u06a9\\u0627\\u062a. \\u062a\\u06a9\\u0627\\u06cc\\u06d5 \\u0644\\u06d5\\u062c\\u06cc\\u0627\\u062a\\u06cc \\u06a9\\u0648\\u0631\\u062a\\u0628\\u0695\\u06d5\\u06a9\\u0627\\u0646\\u06cc Ctrl+X\\/C\\/V \\u062a\\u06d5\\u062e\\u062a\\u06d5\\u06a9\\u0644\\u06cc\\u0644 \\u0628\\u06d5\\u06a9\\u0627\\u0631\\u0628\\u06ce\\u0646\\u06d5.\",\n\"Headers\": \"\\u0633\\u06d5\\u0631\\u067e\\u06d5\\u0695\\u06d5\\u06a9\\u0627\\u0646\",\n\"Header 1\": \"\\u0633\\u06d5\\u0631\\u067e\\u06d5\\u0695\\u06d5 1\",\n\"Header 2\": \"\\u0633\\u06d5\\u0631\\u067e\\u06d5\\u0695\\u06d5 2\",\n\"Header 3\": \"\\u0633\\u06d5\\u0631\\u067e\\u06d5\\u0695\\u06d5 3\",\n\"Header 4\": \"\\u0633\\u06d5\\u0631\\u067e\\u06d5\\u0695\\u06d5 4\",\n\"Header 5\": \"\\u0633\\u06d5\\u0631\\u067e\\u06d5\\u0695\\u06d5 5\",\n\"Header 6\": \"\\u0633\\u06d5\\u0631\\u067e\\u06d5\\u0695\\u06d5 6\",\n\"Headings\": \"\\u0633\\u06d5\\u0631\\u0628\\u0627\\u0628\\u06d5\\u062a\\u06d5\\u06a9\\u0627\\u0646\",\n\"Heading 1\": \"\\u0633\\u06d5\\u0631\\u0628\\u0627\\u0628\\u06d5\\u062a 1\",\n\"Heading 2\": \"\\u0633\\u06d5\\u0631\\u0628\\u0627\\u0628\\u06d5\\u062a 2\",\n\"Heading 3\": \"\\u0633\\u06d5\\u0631\\u0628\\u0627\\u0628\\u06d5\\u062a 3\",\n\"Heading 4\": \"\\u0633\\u06d5\\u0631\\u0628\\u0627\\u0628\\u06d5\\u062a 4\",\n\"Heading 5\": \"\\u0633\\u06d5\\u0631\\u0628\\u0627\\u0628\\u06d5\\u062a 5\",\n\"Heading 6\": \"\\u0633\\u06d5\\u0631\\u0628\\u0627\\u0628\\u06d5\\u062a 6\",\n\"Preformatted\": \"\\u067e\\u06ce\\u0634\\u0634\\u06ce\\u0648\\u0627\\u0632\\u06a9\\u0631\\u0627\\u0648\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"\\u06a9\\u06c6\\u062f\",\n\"Paragraph\": \"\\u0628\\u0695\\u06af\\u06d5\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"\\u0644\\u06d5\\u0633\\u06d5\\u0631\\u062f\\u06ce\\u0631\",\n\"Blocks\": \"\\u0628\\u0644\\u06c6\\u06a9\\u06d5\\u06a9\\u0627\\u0646\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u0644\\u06a9\\u0627\\u0646\\u062f\\u0646 \\u0626\\u06ce\\u0633\\u062a\\u0627 \\u0644\\u06d5 \\u0628\\u0627\\u0631\\u06cc \\u062f\\u06d5\\u0642\\u06cc \\u0633\\u0627\\u062f\\u06d5\\u06cc\\u06d5. \\u0646\\u0627\\u0648\\u06d5\\u0695\\u06c6\\u06a9\\u06d5\\u06a9\\u0627\\u0646 \\u062f\\u06d5\\u0644\\u06a9\\u06ce\\u0646 \\u0648\\u06d5\\u06a9 \\u062f\\u06d5\\u0642\\u06cc \\u0633\\u0627\\u062f\\u06d5 \\u0647\\u06d5\\u062a\\u0627 \\u0626\\u06d5\\u0645 \\u0647\\u06d5\\u06b5\\u0628\\u0698\\u0627\\u0631\\u062f\\u06d5 \\u0646\\u0627\\u06a9\\u0627\\u0631\\u0627 \\u062f\\u06d5\\u06a9\\u06d5\\u06cc\\u062a.\",\n\"Fonts\": \"\\u0641\\u06c6\\u0646\\u062a\\u06d5\\u06a9\\u0627\\u0646\",\n\"Font Sizes\": \"\\u0642\\u06d5\\u0628\\u0627\\u0631\\u06d5\\u06cc \\u0641\\u06c6\\u0646\\u062a\",\n\"Class\": \"\\u067e\\u06c6\\u0644\",\n\"Browse for an image\": \"\\u0628\\u06af\\u06d5\\u0695\\u06ce \\u0628\\u06c6 \\u0648\\u06ce\\u0646\\u06d5\\u06cc\\u06d5\\u06a9\",\n\"OR\": \"OR\",\n\"Drop an image here\": \"\\u0648\\u06ce\\u0646\\u06d5\\u06cc\\u06d5\\u06a9 \\u0695\\u0627\\u06a9\\u06ce\\u0634\\u06d5 \\u0628\\u06c6 \\u0626\\u06ce\\u0631\\u06d5\",\n\"Upload\": \"\\u0628\\u0627\\u0631\\u06a9\\u0631\\u062f\\u0646\",\n\"Block\": \"\\u0628\\u0644\\u06c6\\u06a9\",\n\"Align\": \"\\u0644\\u0627\\u06af\\u0631\\u062a\\u0646\",\n\"Default\": \"\\u0628\\u0646\\u06d5\\u0695\\u06d5\\u062a\\u06cc\",\n\"Circle\": \"\\u0628\\u0627\\u0632\\u0646\\u06d5\",\n\"Disc\": \"\\u067e\\u06d5\\u067e\\u06a9\\u06d5\",\n\"Square\": \"\\u0686\\u0648\\u0627\\u0631\\u06af\\u06c6\\u0634\\u06d5\",\n\"Lower Alpha\": \"\\u0626\\u06d5\\u0644\\u0641\\u0627\\u06cc \\u0628\\u0686\\u0648\\u0648\\u06a9\",\n\"Lower Greek\": \"\\u06cc\\u06c6\\u0646\\u0627\\u0646\\u06cc \\u0628\\u0686\\u0648\\u0648\\u06a9\",\n\"Lower Roman\": \"\\u0695\\u06c6\\u0645\\u0627\\u0646\\u06cc \\u0628\\u0686\\u0648\\u0648\\u06a9\",\n\"Upper Alpha\": \"\\u0626\\u06d5\\u0644\\u0641\\u0627\\u06cc \\u06af\\u06d5\\u0648\\u0631\\u06d5\",\n\"Upper Roman\": \"\\u0695\\u06c6\\u0645\\u0627\\u0646\\u06cc \\u06af\\u06d5\\u0648\\u0631\\u06d5\",\n\"Anchor...\": \"\\u0644\\u06d5\\u0646\\u06af\\u06d5\\u0631...\",\n\"Name\": \"\\u0646\\u0627\\u0648\",\n\"Id\": \"\\u067e\\u06ce\\u0646\\u0627\\u0633\\u06d5\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"\\u067e\\u06ce\\u0646\\u0627\\u0633\\u06d5 \\u062f\\u06d5\\u0628\\u06ce \\u0628\\u06d5 \\u062d\\u06d5\\u0631\\u0641\\u06d5\\u0648\\u06d5 \\u062f\\u06d5\\u0633\\u062a \\u067e\\u06ce \\u0628\\u06a9\\u0627\\u060c \\u0648 \\u0628\\u06d5 \\u062d\\u06d5\\u0631\\u0641\\u060c \\u0698\\u0645\\u0627\\u0631\\u06d5\\u060c \\u0628\\u06d5\\u0646\\u062f\\u06d5\\u06a9\\u060c \\u062e\\u0627\\u06b5\\u060c \\u062c\\u0648\\u0648\\u062a\\u062e\\u0627\\u06b5 \\u06cc\\u0627\\u0646 \\u0628\\u0646\\u0647\\u06ce\\u06b5 \\u062f\\u0631\\u06ce\\u0698\\u06d5\\u06cc \\u067e\\u06ce \\u0628\\u062f\\u0631\\u06ce.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u062a\\u06c6 \\u06af\\u06c6\\u0695\\u0627\\u0646\\u06a9\\u0627\\u0631\\u06cc\\u06cc\\u06d5\\u06a9\\u0627\\u0646\\u062a \\u067e\\u0627\\u0634\\u06d5\\u06a9\\u06d5\\u0648\\u062a \\u0646\\u06d5\\u06a9\\u0631\\u062f\\u0648\\u0648\\u06d5\\u060c \\u0626\\u0627\\u06cc\\u0627 \\u062f\\u06b5\\u0646\\u06cc\\u0627\\u06cc\\u062a \\u0644\\u06d5 \\u062f\\u06d5\\u0631\\u0686\\u0648\\u0648\\u0646\\u062a\\u061f\",\n\"Restore last draft\": \"\\u06af\\u06d5\\u0695\\u0627\\u0646\\u062f\\u0646\\u06d5\\u0648\\u06d5\\u06cc \\u062f\\u0648\\u0627\\u06cc\\u06cc\\u0646 \\u0695\\u06d5\\u0634\\u0646\\u0648\\u0648\\u0633\",\n\"Special character...\": \"\\u0646\\u0648\\u0648\\u0633\\u06d5 \\u062a\\u0627\\u06cc\\u0628\\u06d5\\u062a\\u06d5\\u06a9\\u0627\\u0646...\",\n\"Source code\": \"\\u06a9\\u06c6\\u062f\\u06cc \\u0633\\u06d5\\u0631\\u0686\\u0627\\u0648\\u06d5\",\n\"Insert\\/Edit code sample\": \"\\u062a\\u06ce\\u062e\\u0633\\u062a\\u0646\\/\\u0628\\u0698\\u0627\\u0631\\u06a9\\u0631\\u062f\\u0646\\u06cc \\u0646\\u0645\\u0648\\u0648\\u0646\\u06d5 \\u06a9\\u06c6\\u062f\",\n\"Language\": \"\\u0632\\u0645\\u0627\\u0646\",\n\"Code sample...\": \"\\u0646\\u0645\\u0648\\u0648\\u0646\\u06d5 \\u06a9\\u06c6\\u062f...\",\n\"Color Picker\": \"\\u0647\\u06d5\\u06b5\\u0686\\u0646\\u06cc \\u0695\\u06d5\\u0646\\u06af\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"\\u0686\\u06d5\\u067e \\u0628\\u06c6 \\u0695\\u0627\\u0633\\u062a\",\n\"Right to left\": \"\\u0695\\u0627\\u0633\\u062a \\u0628\\u06c6 \\u0686\\u06d5\\u067e\",\n\"Emoticons...\": \"\\u067e\\u06ce\\u06a9\\u06d5\\u0646\\u06c6\\u06a9...\",\n\"Metadata and Document Properties\": \"\\u0645\\u06ce\\u062a\\u0627\\u062f\\u0631\\u0627\\u0648\\u06d5 \\u0648 \\u062a\\u0627\\u06cc\\u0628\\u06d5\\u062a\\u0645\\u06d5\\u0646\\u062f\\u06cc\\u06cc\\u06d5\\u06a9\\u0627\\u0646\\u06cc \\u0628\\u06d5\\u06b5\\u06af\\u06d5\",\n\"Title\": \"\\u0646\\u0627\\u0648\\u0646\\u06cc\\u0634\\u0627\\u0646\",\n\"Keywords\": \"\\u06a9\\u0644\\u06cc\\u0644\\u0647\\u200c\\u0648\\u0634\\u0647\\u200c\\u06a9\\u0627\\u0646\",\n\"Description\": \"\\u0628\\u0627\\u0633\\u06a9\\u0631\\u062f\\u0646\",\n\"Robots\": \"\\u0695\\u06c6\\u0628\\u06c6\\u062a\\u06d5\\u06a9\\u0627\\u0646\",\n\"Author\": \"\\u0646\\u0648\\u0648\\u0633\\u06d5\\u0631\",\n\"Encoding\": \"\\u0628\\u06d5\\u06a9\\u06c6\\u062f\\u06a9\\u0631\\u062f\\u0646\",\n\"Fullscreen\": \"\\u0695\\u0648\\u0648\\u067e\\u0695\\u06cc\",\n\"Action\": \"\\u06a9\\u0631\\u062f\\u0627\\u0631\",\n\"Shortcut\": \"\\u0646\\u0627\\u0648\\u0628\\u0695\",\n\"Help\": \"\\u06cc\\u0627\\u0631\\u0645\\u06d5\\u062a\\u06cc\",\n\"Address\": \"\\u0646\\u0627\\u0648\\u0646\\u06cc\\u0634\\u0627\\u0646\",\n\"Focus to menubar\": \"\\u0633\\u06d5\\u0631\\u0646\\u062c\\u062f\\u0627\\u0646 \\u0644\\u06d5 \\u0634\\u0631\\u06cc\\u062a\\u06cc \\u0645\\u06ce\\u0646\\u0648\\u0648\",\n\"Focus to toolbar\": \"\\u0633\\u06d5\\u0631\\u0646\\u062c\\u062f\\u0627\\u0646 \\u0644\\u06d5 \\u0634\\u0631\\u06cc\\u062a\\u06cc \\u0626\\u0627\\u0645\\u06ce\\u0631\\u06d5\\u06a9\\u0627\\u0646\",\n\"Focus to element path\": \"\\u0633\\u06d5\\u0631\\u0646\\u062c\\u062f\\u0627\\u0646 \\u0644\\u06d5 \\u0695\\u06ce\\u0686\\u06a9\\u06d5\\u06cc \\u0639\\u0648\\u0646\\u0633\\u0648\\u0631\",\n\"Focus to contextual toolbar\": \"\\u0633\\u06d5\\u0631\\u0646\\u062c\\u062f\\u0627\\u0646 \\u0644\\u06d5 \\u0634\\u0631\\u06cc\\u062a\\u06cc \\u0626\\u0627\\u0645\\u06ce\\u0631\\u06cc \\u062f\\u06d5\\u0642\\u06cc\",\n\"Insert link (if link plugin activated)\": \"\\u062a\\u06ce\\u062e\\u0633\\u062a\\u0646\\u06cc \\u0644\\u06cc\\u0646\\u06a9 (\\u0626\\u06d5\\u06af\\u06d5\\u0631 \\u067e\\u06ce\\u0648\\u06d5\\u06a9\\u0631\\u0627\\u0648 \\u0686\\u0627\\u0644\\u0627\\u06a9 \\u06a9\\u0631\\u0627\\u0648\\u06d5)\",\n\"Save (if save plugin activated)\": \"\\u067e\\u0627\\u0634\\u06d5\\u06a9\\u06d5\\u0648\\u062a\\u06a9\\u0631\\u062f\\u0646 (\\u0626\\u06d5\\u06af\\u06d5\\u0631 \\u067e\\u06ce\\u0648\\u06d5\\u06a9\\u0631\\u0627\\u0648\\u06cc \\u067e\\u0627\\u0634\\u06d5\\u06a9\\u06d5\\u0648\\u062a\\u06a9\\u0631\\u062f\\u0646 \\u0686\\u0627\\u0644\\u0627\\u06a9 \\u06a9\\u0631\\u0627\\u0648\\u06d5)\",\n\"Find (if searchreplace plugin activated)\": \"\\u062f\\u06c6\\u0632\\u06cc\\u0646\\u06d5\\u0648\\u06d5 (\\u0626\\u06d5\\u06af\\u06d5\\u0631 \\u067e\\u06ce\\u0648\\u06d5\\u06a9\\u0631\\u0627\\u0648\\u06cc \\u062c\\u06ce\\u06af\\u06c6\\u0695\\u06cc\\u0646\\u06cc \\u06af\\u06d5\\u0695\\u0627\\u0646 \\u0686\\u0627\\u0644\\u0627\\u06a9 \\u06a9\\u0631\\u0627\\u0648\\u06d5)\",\n\"Plugins installed ({0}):\": \"\\u0626\\u06d5\\u0648 \\u067e\\u06ce\\u0648\\u06d5\\u06a9\\u0631\\u0627\\u0648\\u0627\\u0646\\u06d5\\u06cc \\u062f\\u0627\\u0645\\u06d5\\u0632\\u0631\\u0627\\u0648\\u0646 ({0}):\",\n\"Premium plugins:\": \"\\u067e\\u06ce\\u0648\\u06d5\\u06a9\\u0631\\u0627\\u0648\\u06d5 \\u067e\\u0627\\u0631\\u06d5\\u06cc\\u06cc\\u06cc\\u06d5\\u06a9\\u0627\\u0646:\",\n\"Learn more...\": \"\\u0632\\u06cc\\u0627\\u062a\\u0631 \\u0628\\u0632\\u0627\\u0646\\u06d5...\",\n\"You are using {0}\": \"\\u062a\\u06c6  {0} \\u0628\\u06d5\\u06a9\\u0627\\u0631 \\u062f\\u06ce\\u0646\\u06cc\",\n\"Plugins\": \"\\u067e\\u06ce\\u0648\\u06d5\\u06a9\\u0631\\u0627\\u0648\\u06d5\\u06a9\\u0627\\u0646\",\n\"Handy Shortcuts\": \"\\u0646\\u0627\\u0648\\u0628\\u0695\\u06d5 \\u062f\\u06d5\\u0633\\u062a\\u06cc\\u06cc\\u06d5\\u06a9\\u0627\\u0646\",\n\"Horizontal line\": \"\\u0647\\u06ce\\u06b5\\u06cc \\u0626\\u0627\\u0633\\u06c6\\u06cc\\u06cc\",\n\"Insert\\/edit image\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\\/\\u062f\\u06d5\\u0633\\u062a\\u06a9\\u0627\\u0631\\u06cc \\u0648\\u06ce\\u0646\\u06d5\",\n\"Image description\": \"\\u0628\\u0627\\u0633\\u06a9\\u0631\\u062f\\u0646\\u06cc \\u0648\\u06ce\\u0646\\u06d5\",\n\"Source\": \"\\u0633\\u06d5\\u0631\\u0686\\u0627\\u0648\\u06d5\",\n\"Dimensions\": \"\\u062f\\u0648\\u0648\\u0631\\u06cc\\u06cc\\u06d5\\u06a9\\u0627\\u0646\",\n\"Constrain proportions\": \"\\u0695\\u06d5\\u0647\\u06d5\\u0646\\u062f\\u06cc \\u0645\\u06d5\\u0631\\u062c\\u06d5\\u06a9\\u0627\\u0646\",\n\"General\": \"\\u06af\\u0634\\u062a\\u06cc\",\n\"Advanced\": \"\\u067e\\u06ce\\u0634\\u06a9\\u06d5\\u0648\\u062a\\u0648\\u0648\",\n\"Style\": \"\\u0634\\u06ce\\u0648\\u0627\\u0632\",\n\"Vertical space\": \"\\u0628\\u06c6\\u0634\\u0627\\u06cc\\u06cc \\u0633\\u062a\\u0648\\u0648\\u0646\\u06cc\",\n\"Horizontal space\": \"\\u0628\\u06c6\\u0634\\u0627\\u06cc\\u06cc \\u0626\\u0627\\u0633\\u06c6\\u06cc\\u06cc\",\n\"Border\": \"\\u0633\\u0646\\u0648\\u0648\\u0631\",\n\"Insert image\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\\u06cc \\u0648\\u06ce\\u0646\\u06d5\",\n\"Image...\": \"\\u0648\\u06ce\\u0646\\u06d5...\",\n\"Image list\": \"\\u067e\\u06ce\\u0631\\u0633\\u062a\\u06cc \\u0648\\u06ce\\u0646\\u06d5\",\n\"Rotate counterclockwise\": \"Rotate counterclockwise\",\n\"Rotate clockwise\": \"Rotate clockwise\",\n\"Flip vertically\": \"Flip vertically\",\n\"Flip horizontally\": \"Flip horizontally\",\n\"Edit image\": \"Edit image\",\n\"Image options\": \"Image options\",\n\"Zoom in\": \"Zoom in\",\n\"Zoom out\": \"Zoom out\",\n\"Crop\": \"Crop\",\n\"Resize\": \"Resize\",\n\"Orientation\": \"Orientation\",\n\"Brightness\": \"Brightness\",\n\"Sharpen\": \"Sharpen\",\n\"Contrast\": \"Contrast\",\n\"Color levels\": \"Color levels\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Invert\",\n\"Apply\": \"Apply\",\n\"Back\": \"Back\",\n\"Insert date\\/time\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\\u06cc \\u0695\\u06c6\\u0698\\/\\u06a9\\u0627\\u062a\",\n\"Date\\/time\": \"\\u0695\\u06ce\\u06a9\\u06d5\\u0648\\u062a\\/\\u06a9\\u0627\\u062a\",\n\"Insert\\/Edit Link\": \"\\u062a\\u06ce\\u062e\\u0633\\u062a\\u0646\\/\\u0628\\u0698\\u0627\\u0631\\u06a9\\u0631\\u062f\\u0646\\u06cc \\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631\",\n\"Insert\\/edit link\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\\/\\u062f\\u06d5\\u0633\\u062a\\u06a9\\u0627\\u0631\\u06cc \\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631\",\n\"Text to display\": \"\\u062f\\u06d5\\u0642 \\u0628\\u06c6 \\u067e\\u06cc\\u0634\\u0627\\u0646\\u062f\\u0627\\u0646\",\n\"Url\": \"\\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631\",\n\"Open link in...\": \"\\u06a9\\u0631\\u062f\\u0646\\u06d5\\u0648\\u06d5\\u06cc \\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631 \\u0644\\u06d5...\",\n\"Current window\": \"\\u0647\\u06d5\\u0631\\u0626\\u06d5\\u0645 \\u067e\\u06d5\\u0646\\u062c\\u06d5\\u0631\\u06d5\\u06cc\\u06d5\",\n\"None\": \"\\u0647\\u06cc\\u0686\",\n\"New window\": \"\\u067e\\u06d5\\u0646\\u062c\\u06d5\\u0631\\u06d5\\u06cc \\u0646\\u0648\\u06ce\",\n\"Remove link\": \"\\u0633\\u0695\\u06cc\\u0646\\u06d5\\u0648\\u06d5\\u06cc \\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631\",\n\"Anchors\": \"\\u0644\\u06d5\\u0646\\u06af\\u06d5\\u0631\\u06d5\\u06a9\\u0627\\u0646\",\n\"Link...\": \"\\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631...\",\n\"Paste or type a link\": \"\\u0644\\u06a9\\u0627\\u0646\\u062f\\u0646 \\u06cc\\u0627\\u0646 \\u0646\\u0648\\u0648\\u0633\\u06cc\\u0646\\u06cc \\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u0626\\u06d5\\u0648 \\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631\\u06d5\\u06cc \\u0646\\u0648\\u0648\\u0633\\u06cc\\u0648\\u062a\\u06d5 \\u0628\\u06d5 \\u067e\\u06d5\\u06cc\\u0627\\u0645\\u06cc \\u0626\\u06d5\\u0644\\u06cc\\u06a9\\u062a\\u0695\\u06c6\\u0646\\u06cc \\u062f\\u06d5\\u0686\\u06ce\\u062a. \\u0626\\u0627\\u06cc\\u0627 \\u062f\\u06d5\\u062a\\u06d5\\u0648\\u06ce\\u062a mailto: prefix \\u06cc \\u0628\\u06c6 \\u0632\\u06cc\\u0627\\u062f \\u0628\\u06a9\\u06d5\\u06cc\\u062a\\u061f\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u0626\\u06d5\\u0648 \\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631\\u06d5\\u06cc \\u0646\\u0648\\u0648\\u0633\\u06cc\\u0648\\u062a\\u06d5 \\u0628\\u06d5 \\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631\\u06cc \\u062f\\u06d5\\u0631\\u06d5\\u06a9\\u06cc \\u062f\\u06d5\\u0686\\u06ce\\u062a. \\u0626\\u0627\\u06cc\\u0627 \\u062f\\u06d5\\u062a\\u06d5\\u0648\\u06ce\\u062a http:\\/\\/ prefix \\u06cc \\u0628\\u06c6 \\u0632\\u06cc\\u0627\\u062f \\u0628\\u06a9\\u06d5\\u06cc\\u062a\\u061f\",\n\"Link list\": \"\\u067e\\u06ce\\u0633\\u0631\\u062a\\u06cc \\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631\",\n\"Insert video\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\\u06cc \\u06a4\\u06cc\\u062f\\u06cc\\u06c6\",\n\"Insert\\/edit video\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\\/\\u062f\\u06d5\\u0633\\u062a\\u06a9\\u0627\\u0631\\u06cc \\u06a4\\u06cc\\u062f\\u06cc\\u06c6\",\n\"Insert\\/edit media\": \"\\u062a\\u06ce\\u062e\\u0633\\u062a\\u0646\\/\\u0628\\u0698\\u0627\\u0631\\u06a9\\u0631\\u062f\\u0646\\u06cc \\u06af\\u06d5\\u06cc\\u0627\\u0646\\u06d5\",\n\"Alternative source\": \"\\u0633\\u06d5\\u0631\\u0686\\u0627\\u0648\\u06d5\\u06cc \\u062c\\u06ce\\u06af\\u0631\\u06d5\\u0648\\u06d5\",\n\"Alternative source URL\": \"\\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631\\u06cc \\u0633\\u06d5\\u0631\\u0686\\u0627\\u0648\\u06d5\\u06cc \\u062c\\u06ce\\u06af\\u0631\\u06d5\\u0648\\u06d5\",\n\"Media poster (Image URL)\": \"\\u067e\\u06c6\\u0633\\u062a\\u06d5\\u0631\\u06cc \\u06af\\u06d5\\u06cc\\u0627\\u0646\\u06d5 (\\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631\\u06cc \\u0648\\u06ce\\u0646\\u06d5)\",\n\"Paste your embed code below:\": \"\\u06a9\\u06c6\\u062f\\u06cc \\u062a\\u06ce\\u062e\\u0633\\u062a\\u0646\\u06d5\\u06a9\\u06d5\\u062a \\u0644\\u06d5\\u062e\\u0648\\u0627\\u0631\\u06d5\\u0648\\u06d5 \\u0628\\u0644\\u06a9\\u06ce\\u0646\\u06d5:\",\n\"Embed\": \"\\u062a\\u06ce\\u062e\\u0633\\u062a\\u0646\",\n\"Media...\": \"\\u06af\\u06d5\\u06cc\\u0627\\u0646\\u06d5...\",\n\"Nonbreaking space\": \"\\u0628\\u06c6\\u0634\\u0627\\u06cc\\u06cc \\u0646\\u06d5\\u0628\\u0695\\u0627\\u0648\",\n\"Page break\": \"\\u0628\\u0695\\u06cc\\u0646\\u06cc \\u067e\\u06d5\\u0695\\u06d5\",\n\"Paste as text\": \"\\u0644\\u06a9\\u0627\\u0646\\u062f\\u0646 \\u0648\\u06d5\\u06a9 \\u062f\\u06d5\\u0642\",\n\"Preview\": \"\\u067e\\u06cc\\u0634\\u0627\\u0646\\u062f\\u0627\\u0646\",\n\"Print...\": \"\\u0686\\u0627\\u067e\\u06a9\\u0631\\u062f\\u0646...\",\n\"Save\": \"\\u067e\\u0627\\u0634\\u06d5\\u06a9\\u06d5\\u0648\\u062a\",\n\"Find\": \"\\u062f\\u06c6\\u0632\\u06cc\\u0646\\u06d5\\u0648\\u06d5\",\n\"Replace with\": \"\\u062c\\u06ce\\u06af\\u06c6\\u0695\\u06cc\\u0646 \\u0644\\u06d5\\u06af\\u06d5\\u06b5\",\n\"Replace\": \"\\u062c\\u06ce\\u06af\\u06c6\\u0695\\u06cc\\u0646\",\n\"Replace all\": \"\\u062c\\u06ce\\u06af\\u06c6\\u0695\\u06cc\\u0646\\u06cc \\u0647\\u06d5\\u0645\\u0648\\u0648\",\n\"Previous\": \"\\u067e\\u06ce\\u0634\\u0648\\u0648\",\n\"Next\": \"\\u062f\\u0648\\u0627\\u062a\\u0631\",\n\"Find and replace...\": \"\\u062f\\u06c6\\u0632\\u06cc\\u0646 \\u0648 \\u062c\\u06ce\\u06af\\u06c6\\u0695\\u06cc\\u0646...\",\n\"Could not find the specified string.\": \"\\u0695\\u06cc\\u0632\\u0628\\u06d5\\u0646\\u062f\\u06cc \\u062f\\u06cc\\u0627\\u0631\\u06cc\\u06a9\\u0631\\u0627\\u0648 \\u0646\\u0627\\u062f\\u06c6\\u0632\\u0631\\u06ce\\u062a\\u06d5\\u0648\\u06d5.\",\n\"Match case\": \"\\u0647\\u0627\\u0648\\u062a\\u0627\\u0628\\u0648\\u0648\\u0646\\u06cc \\u0628\\u0627\\u0631\",\n\"Find whole words only\": \"\\u062f\\u06c6\\u0632\\u06cc\\u0646\\u06d5\\u0648\\u06d5\\u06cc \\u062a\\u06d5\\u0646\\u06cc\\u0627 \\u062a\\u06d5\\u0648\\u0627\\u0648\\u06cc \\u0648\\u0634\\u06d5\\u06a9\\u0627\\u0646\",\n\"Spell check\": \"\\u062a\\u0627\\u0648\\u062a\\u0648\\u06ce\\u06cc \\u0695\\u06ce\\u0646\\u0648\\u0648\\u0633\",\n\"Ignore\": \"\\u0644\\u06d5\\u0628\\u06cc\\u0631\\u06a9\\u0631\\u062f\\u0646\",\n\"Ignore all\": \"\\u0644\\u06d5\\u0628\\u06cc\\u0631\\u06a9\\u0631\\u062f\\u0646\\u06cc \\u0647\\u06d5\\u0645\\u0648\\u0648\",\n\"Finish\": \"\\u062a\\u06d5\\u0648\\u0627\\u0648\",\n\"Add to Dictionary\": \"\\u0632\\u06cc\\u0627\\u062f\\u06a9\\u0631\\u062f\\u0646 \\u0628\\u06c6 \\u0641\\u06d5\\u0631\\u0647\\u06d5\\u0646\\u06af\",\n\"Insert table\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\\u06cc \\u062e\\u0634\\u062a\\u06d5\",\n\"Table properties\": \"\\u062a\\u0627\\u06cc\\u0628\\u0647\\u200c\\u062a\\u0645\\u0647\\u200c\\u0646\\u062f\\u06cc\\u06cc\\u06d5\\u06a9\\u0627\\u0646\\u06cc \\u062e\\u0634\\u062a\\u06d5\",\n\"Delete table\": \"\\u0633\\u0695\\u06cc\\u0646\\u06d5\\u0648\\u06d5\\u06cc \\u062e\\u0634\\u062a\\u06d5\",\n\"Cell\": \"\\u062e\\u0627\\u0646\\u06d5\",\n\"Row\": \"\\u0695\\u06cc\\u0632\",\n\"Column\": \"\\u0633\\u062a\\u0648\\u0648\\u0646\",\n\"Cell properties\": \"\\u062a\\u0627\\u06cc\\u0628\\u0647\\u200c\\u062a\\u0645\\u0647\\u200c\\u0646\\u062f\\u06cc\\u06cc\\u06d5\\u06a9\\u0627\\u0646\\u06cc \\u062e\\u0627\\u0646\\u06d5\",\n\"Merge cells\": \"\\u06cc\\u06d5\\u06a9\\u062e\\u0633\\u062a\\u0646\\u06cc \\u062e\\u0627\\u0646\\u06d5\\u06a9\\u0627\\u0646\",\n\"Split cell\": \"\\u062c\\u06cc\\u0627\\u06a9\\u0631\\u062f\\u0646\\u06d5\\u0648\\u06d5\\u06cc \\u062e\\u0627\\u0646\\u06d5\",\n\"Insert row before\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\\u06cc \\u0695\\u06cc\\u0632 \\u0628\\u06c6 \\u067e\\u06ce\\u0634\\u062a\\u0631\",\n\"Insert row after\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\\u06cc \\u0695\\u06cc\\u0632 \\u0628\\u06c6 \\u062f\\u0648\\u0627\\u062a\\u0631\",\n\"Delete row\": \"\\u0633\\u0695\\u06cc\\u0646\\u06d5\\u0648\\u06d5\\u06cc \\u0695\\u06cc\\u0632\",\n\"Row properties\": \"\\u062a\\u0627\\u06cc\\u0628\\u0647\\u200c\\u062a\\u0645\\u0647\\u200c\\u0646\\u062f\\u06cc\\u06cc\\u06d5\\u06a9\\u0627\\u0646\\u06cc \\u0695\\u06cc\\u0632\",\n\"Cut row\": \"\\u0628\\u0695\\u06cc\\u0646\\u06cc \\u0695\\u06cc\\u0632\",\n\"Copy row\": \"\\u0644\\u06d5\\u0628\\u06d5\\u0631\\u06af\\u0631\\u062a\\u0646\\u06d5\\u0648\\u06d5\\u06cc \\u0695\\u06cc\\u0632\",\n\"Paste row before\": \"\\u0644\\u06a9\\u0627\\u0646\\u062f\\u0646\\u06cc \\u0695\\u06cc\\u0632 \\u0644\\u06d5 \\u067e\\u06ce\\u0634\\u062a\\u0631\",\n\"Paste row after\": \"\\u0644\\u06a9\\u0627\\u0646\\u062f\\u0646\\u06cc \\u0695\\u06cc\\u0632 \\u0644\\u06d5 \\u062f\\u0648\\u0627\\u062a\\u0631\",\n\"Insert column before\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\\u06cc \\u0633\\u062a\\u0648\\u0648\\u0646 \\u0628\\u06c6 \\u067e\\u06ce\\u0634\\u062a\\u0631\",\n\"Insert column after\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\\u06cc \\u0633\\u062a\\u0648\\u0648\\u0646 \\u0628\\u06c6 \\u062f\\u0648\\u0627\\u062a\\u0631\",\n\"Delete column\": \"\\u0633\\u0695\\u06cc\\u0646\\u06d5\\u0648\\u06d5\\u06cc \\u0633\\u062a\\u0648\\u0648\\u0646\",\n\"Cols\": \"\\u0633\\u062a\\u0648\\u0648\\u0646\\u06d5\\u06a9\\u0627\\u0646\",\n\"Rows\": \"\\u0695\\u06cc\\u0632\\u06d5\\u06a9\\u0627\\u0646\",\n\"Width\": \"\\u062f\\u0631\\u06ce\\u0698\\u06cc\",\n\"Height\": \"\\u0628\\u06d5\\u0631\\u0632\\u06cc\",\n\"Cell spacing\": \"\\u0628\\u06c6\\u0634\\u0627\\u06cc\\u06cc \\u062e\\u0627\\u0646\\u06d5\",\n\"Cell padding\": \"\\u0646\\u0627\\u0648\\u067e\\u06c6\\u0634\\u06cc \\u062e\\u0627\\u0646\\u06d5\",\n\"Show caption\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u062f\\u0627\\u0646\\u06cc \\u0633\\u06d5\\u0631\\u062f\\u06ce\\u0695\",\n\"Left\": \"\\u0686\\u06d5\\u067e\",\n\"Center\": \"\\u0646\\u0627\\u0648\\u06d5\\u0695\\u0627\\u0633\\u062a\",\n\"Right\": \"\\u0695\\u0627\\u0633\\u062a\",\n\"Cell type\": \"\\u062c\\u06c6\\u0631\\u06cc \\u062e\\u0627\\u0646\\u06d5\",\n\"Scope\": \"\\u0628\\u0648\\u0627\\u0631\",\n\"Alignment\": \"\\u0644\\u0627\\u06af\\u0631\\u062a\\u0646\",\n\"H Align\": \"\\u0644\\u0627\\u06af\\u0631\\u062a\\u0646\\u06cc \\u0626\\u0627\\u0633\\u06c6\\u06cc\\u06cc\",\n\"V Align\": \"\\u0644\\u0627\\u06af\\u0631\\u062a\\u0646\\u06cc \\u0633\\u062a\\u0648\\u0648\\u0646\\u06cc\",\n\"Top\": \"\\u0633\\u06d5\\u0631\\u06d5\\u0648\\u06d5\",\n\"Middle\": \"\\u0646\\u0627\\u0648\\u06d5\\u0646\\u062f\",\n\"Bottom\": \"\\u0698\\u06ce\\u0631\\u06d5\\u0648\\u06d5\",\n\"Header cell\": \"\\u062e\\u0627\\u0646\\u06d5\\u06cc \\u0633\\u06d5\\u0631\\u067e\\u06d5\\u0695\\u06d5\",\n\"Row group\": \"\\u06a9\\u06c6\\u0645\\u06d5\\u06b5\\u06d5 \\u0695\\u06cc\\u0632\",\n\"Column group\": \"\\u06a9\\u06c6\\u0645\\u06d5\\u06b5\\u06d5 \\u0633\\u062a\\u0648\\u0648\\u0646\",\n\"Row type\": \"\\u062c\\u06c6\\u0631\\u06cc \\u0695\\u06cc\\u0632\",\n\"Header\": \"\\u0633\\u06d5\\u0631\\u067e\\u06d5\\u0695\\u06d5\",\n\"Body\": \"\\u0646\\u0627\\u0648\\u06d5\\u0695\\u06c6\\u06a9\",\n\"Footer\": \"\\u067e\\u06ce\\u067e\\u06d5\\u0695\\u06d5\",\n\"Border color\": \"\\u0695\\u06d5\\u0646\\u06af\\u06cc \\u0633\\u0646\\u0648\\u0648\\u0631\",\n\"Insert template...\": \"\\u062a\\u06ce\\u062e\\u0633\\u062a\\u0646\\u06cc \\u0642\\u0627\\u06b5\\u0628...\",\n\"Templates\": \"\\u062f\\u0627\\u0695\\u06ce\\u0698\\u06d5\\u06a9\\u0627\\u0646\",\n\"Template\": \"\\u0642\\u0627\\u06b5\\u0628\",\n\"Text color\": \"\\u0695\\u06d5\\u0646\\u06af\\u06cc \\u062f\\u06d5\\u0642\",\n\"Background color\": \"\\u0695\\u06d5\\u0646\\u06af\\u06cc \\u067e\\u0627\\u0634\\u0628\\u0646\\u06d5\\u0645\\u0627\",\n\"Custom...\": \"\\u062f\\u0627\\u0646\\u0631\\u0627\\u0648...\",\n\"Custom color\": \"\\u0695\\u06d5\\u0646\\u06af\\u06cc \\u062f\\u0627\\u0646\\u0631\\u0627\\u0648\",\n\"No color\": \"\\u0628\\u06d5\\u0628\\u06ce \\u0695\\u06d5\\u0646\\u06af\",\n\"Remove color\": \"\\u0644\\u0627\\u0628\\u0631\\u062f\\u0646\\u06cc \\u0695\\u06d5\\u0646\\u06af\",\n\"Table of Contents\": \"\\u062c\\u06d5\\u062f\\u0648\\u06d5\\u0644\\u06cc \\u0646\\u0627\\u0648\\u06d5\\u0631\\u06c6\\u06a9\",\n\"Show blocks\": \"\\u067e\\u06cc\\u0634\\u0627\\u0646\\u062f\\u0627\\u0646\\u06cc \\u0628\\u0644\\u06c6\\u06a9\\u06d5\\u06a9\\u0627\\u0646\",\n\"Show invisible characters\": \"\\u067e\\u06cc\\u0634\\u0627\\u0646\\u062f\\u0627\\u0646\\u06cc \\u0646\\u0648\\u0648\\u0633\\u06d5 \\u0634\\u0627\\u0631\\u0627\\u0648\\u06d5\\u06a9\\u0627\\u0646\",\n\"Word count\": \"\\u0698\\u0645\\u0627\\u0631\\u06d5\\u06cc \\u0648\\u0634\\u06d5\\u06a9\\u0627\\u0646\",\n\"Count\": \"\\u0698\\u0645\\u0627\\u0631\\u06d5\",\n\"Document\": \"\\u0628\\u06d5\\u06b5\\u06af\\u06d5\",\n\"Selection\": \"\\u0647\\u06d5\\u06b5\\u0628\\u0698\\u0627\\u0631\\u062f\\u0646\",\n\"Words\": \"\\u0648\\u0634\\u06d5\\u06a9\\u0627\\u0646\",\n\"Words: {0}\": \"\\u0648\\u0634\\u06d5\\u06a9\\u0627\\u0646: {0}\",\n\"{0} words\": \"{0} \\u0648\\u0634\\u06d5\",\n\"File\": \"\\u067e\\u06d5\\u0695\\u06af\\u06d5\",\n\"Edit\": \"\\u062f\\u06d5\\u0633\\u062a\\u06a9\\u0627\\u0631\\u06cc\",\n\"Insert\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\",\n\"View\": \"\\u0628\\u06cc\\u0646\\u06cc\\u0646\",\n\"Format\": \"\\u0634\\u06ce\\u0648\\u0627\\u0632\",\n\"Table\": \"\\u062e\\u0634\\u062a\\u06d5\",\n\"Tools\": \"\\u0626\\u0627\\u0645\\u0631\\u0627\\u0632\\u06d5\\u06a9\\u0627\\u0646\",\n\"Powered by {0}\": \"\\u0647\\u06ce\\u0632\\u06af\\u0631\\u062a\\u0648\\u0648 \\u0644\\u06d5 {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u0646\\u0627\\u0648\\u0686\\u06d5\\u06cc \\u062f\\u06d5\\u0642\\u06cc \\u062a\\u06d5\\u0648\\u0627\\u0648. ALT-F9 \\u062f\\u0627\\u06af\\u0631\\u06d5 \\u0628\\u06c6 \\u0644\\u06cc\\u0633\\u062a\\u06d5. ALT-F10 \\u062f\\u0627\\u06af\\u0631\\u06d5 \\u0628\\u06c6 \\u062a\\u0648\\u0648\\u06b5\\u0627\\u0645\\u0631\\u0627\\u0632. ALT-0 \\u062f\\u0627\\u06af\\u0631\\u06d5 \\u0628\\u06c6 \\u06cc\\u0627\\u0631\\u0645\\u06d5\\u062a\\u06cc\",\n\"Image title\": \"\\u0633\\u06d5\\u0631\\u062f\\u06ce\\u0631\\u06cc \\u0648\\u06ce\\u0646\\u06d5\",\n\"Border width\": \"\\u067e\\u0627\\u0646\\u06cc\\u06cc \\u0644\\u06ce\\u0648\\u0627\\u0631\",\n\"Border style\": \"\\u0634\\u06ce\\u0648\\u0627\\u0632\\u06cc \\u0644\\u06ce\\u0648\\u0627\\u0631\",\n\"Error\": \"\\u0647\\u06d5\\u06b5\\u06d5\",\n\"Warn\": \"\\u0647\\u06c6\\u0634\\u06cc\\u0627\\u0631\\u06cc\",\n\"Valid\": \"\\u062f\\u0631\\u0648\\u0633\\u062a\",\n\"To open the popup, press Shift+Enter\": \"\\u0628\\u06c6 \\u06a9\\u0631\\u062f\\u0646\\u06d5\\u0648\\u06d5\\u06cc \\u067e\\u06d5\\u0646\\u062c\\u06d5\\u0631\\u06d5\\u06cc \\u0633\\u06d5\\u0631\\u067e\\u06d5\\u0695\\u060c Shift+Enter \\u0644\\u06ce\\u062f\\u06d5\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u062f\\u06d5\\u06a4\\u06d5\\u0631\\u06cc \\u062f\\u06d5\\u0642\\u06cc \\u062f\\u06d5\\u0648\\u06b5\\u06d5\\u0645\\u06d5\\u0646\\u062f. \\u0628\\u06c6 \\u0695\\u06ce\\u0646\\u0645\\u0627\\u06cc\\u06cc ALT-0 \\u0644\\u06ce\\u062f\\u06d5.\",\n\"System Font\": \"\\u0641\\u06c6\\u0646\\u062a\\u06cc \\u0633\\u06cc\\u0633\\u062a\\u0645\",\n\"Failed to upload image: {0}\": \"\\u0628\\u0627\\u0631\\u06a9\\u0631\\u062f\\u0646\\u06cc \\u0648\\u06ce\\u0646\\u06d5 \\u0634\\u06a9\\u0633\\u062a\\u06cc \\u0647\\u06ce\\u0646\\u0627: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u0628\\u0627\\u0631\\u06af\\u0631\\u062a\\u0646\\u06cc \\u067e\\u06ce\\u0648\\u06d5\\u06a9\\u0631\\u0627\\u0648 \\u0634\\u06a9\\u0633\\u062a\\u06cc \\u0647\\u06ce\\u0646\\u0627: {0}\",\n\"Failed to load plugin url: {0}\": \"\\u0628\\u0627\\u0631\\u06af\\u0631\\u062a\\u0646\\u06cc \\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631\\u06cc \\u067e\\u06ce\\u0648\\u06d5\\u06a9\\u0631\\u0627\\u0648 \\u0634\\u06a9\\u0633\\u062a\\u06cc \\u0647\\u06ce\\u0646\\u0627: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u0695\\u06ce\\u062e\\u0633\\u062a\\u0646\\u06cc \\u0633\\u06d5\\u0631\\u06d5\\u062a\\u0627\\u06cc\\u06cc \\u067e\\u06ce\\u0648\\u06d5\\u06a9\\u0631\\u0627\\u0648 \\u0634\\u06a9\\u0633\\u062a\\u06cc \\u0647\\u06ce\\u0646\\u0627: {0}\",\n\"example\": \"\\u0646\\u0645\\u0648\\u0648\\u0646\\u06d5\",\n\"Search\": \"\\u06af\\u06d5\\u0695\\u0627\\u0646\",\n\"All\": \"\\u0647\\u06d5\\u0645\\u0648\\u0648\",\n\"Currency\": \"\\u062f\\u0631\\u0627\\u0648\",\n\"Text\": \"\\u062f\\u06d5\\u0642\",\n\"Quotations\": \"\\u0648\\u062a\\u06d5\\u06cc \\u06af\\u06ce\\u0695\\u0627\\u0648\\u06d5\",\n\"Mathematical\": \"\\u0628\\u06cc\\u0631\\u06a9\\u0627\\u0631\\u06cc\\u0627\\u0646\\u06d5\",\n\"Extended Latin\": \"\\u0644\\u0627\\u062a\\u06cc\\u0646\\u06cc \\u067e\\u06d5\\u0631\\u06d5\\u067e\\u06ce\\u062f\\u0631\\u0627\\u0648\",\n\"Symbols\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06d5\\u06a9\\u0627\\u0646\",\n\"Arrows\": \"\\u062a\\u06cc\\u0631\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06d5\\u06a9\\u0627\\u0646\",\n\"User Defined\": \"\\u062f\\u06cc\\u0627\\u0631\\u06cc\\u06a9\\u0631\\u0627\\u0648\\u06cc \\u0628\\u06d5\\u06a9\\u0627\\u0631\\u0647\\u06ce\\u0646\\u06d5\\u0631\",\n\"dollar sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u062f\\u06c6\\u0644\\u0627\\u0631\",\n\"currency sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u062f\\u0631\\u0627\\u0648\",\n\"euro-currency sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u062f\\u0631\\u0627\\u0648\\u06cc \\u06cc\\u06c6\\u0631\\u06c6\",\n\"colon sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u062c\\u0648\\u0648\\u062a\\u062e\\u0627\\u06b5\",\n\"cruzeiro sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u06a9\\u0631\\u0648\\u0648\\u0632\\u06cc\\u0631\\u06c6\",\n\"french franc sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0641\\u0631\\u0627\\u0646\\u06a9\\u06cc \\u0641\\u06d5\\u0695\\u06d5\\u0646\\u0633\\u0627\",\n\"lira sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0644\\u06cc\\u0631\\u06d5\",\n\"mill sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0645\\u06cc\\u0644\",\n\"naira sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0646\\u0627\\u06cc\\u0631\\u0627\",\n\"peseta sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u067e\\u06ce\\u0633\\u06ce\\u062a\\u0627\",\n\"rupee sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0695\\u0648\\u0648\\u067e\\u06cc\\u06d5\",\n\"won sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0648\\u06c6\\u0646\",\n\"new sheqel sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0646\\u0648\\u06ce\\u06cc \\u0634\\u06ce\\u06a9\\u06ce\\u0644\",\n\"dong sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u062f\\u06c6\\u0646\\u06af\",\n\"kip sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u06a9\\u06cc\\u067e\",\n\"tugrik sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u062a\\u0648\\u06af\\u0631\\u0648\\u06af\",\n\"drachma sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u062f\\u0631\\u0627\\u062e\\u0645\\u0627\",\n\"german penny symbol\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u067e\\u06ce\\u0646\\u06cc\\u06cc \\u0626\\u06d5\\u06b5\\u0645\\u0627\\u0646\\u06cc\",\n\"peso sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u067e\\u06ce\\u0633\\u06c6\",\n\"guarani sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u06af\\u0648\\u0627\\u0631\\u0627\\u0646\\u06cc\",\n\"austral sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0626\\u0627\\u0648\\u0633\\u062a\\u0631\\u0627\\u0644\",\n\"hryvnia sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u06af\\u0631\\u06cc\\u06a4\\u0646\\u06cc\\u0627\",\n\"cedi sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0633\\u06ce\\u062f\\u06cc\",\n\"livre tournois sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0644\\u06cc\\u06a4\\u0631\\u06ce \\u062a\\u0648\\u0631\\u0646\\u06c6\\u06cc\\u0633\",\n\"spesmilo sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0633\\u067e\\u06ce\\u0633\\u0645\\u0627\\u06cc\\u06b5\\u06c6\",\n\"tenge sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u062a\\u06ce\\u0646\\u062c\",\n\"indian rupee sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0695\\u0648\\u0648\\u067e\\u06cc\\u06d5\\u06cc \\u0647\\u0646\\u062f\\u06cc\",\n\"turkish lira sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0644\\u06cc\\u0631\\u06d5\\u06cc \\u062a\\u0648\\u0631\\u06a9\",\n\"nordic mark sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0645\\u0627\\u0631\\u06a9\\u06cc \\u0646\\u06c6\\u0631\\u0648\\u06cc\\u0698\",\n\"manat sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0645\\u06d5\\u0646\\u0627\\u062a\",\n\"ruble sign\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u0695\\u0648\\u0648\\u0628\\u06b5\",\n\"yen character\": \"\\u0646\\u0648\\u0648\\u0633\\u06d5\\u06cc \\u06cc\\u06ce\\u0646\",\n\"yuan character\": \"\\u0646\\u0648\\u0648\\u0633\\u06d5\\u06cc \\u06cc\\u0648\\u0627\\u0646\",\n\"yuan character, in hong kong and taiwan\": \"\\u0646\\u06cc\\u0634\\u0627\\u0646\\u06cc \\u06cc\\u0648\\u0627\\u0646\\u060c \\u0644\\u06d5 \\u0647\\u06c6\\u0646\\u06af \\u06a9\\u06c6\\u0646\\u06af \\u0648 \\u062a\\u0627\\u06cc\\u0648\\u0627\\u0646\",\n\"yen\\/yuan character variant one\": \"\\u0646\\u0648\\u0648\\u0633\\u06d5\\u06cc \\u062c\\u06ce\\u06af\\u0631\\u06cc \\u06cc\\u06ce\\u0646\\/\\u06cc\\u0648\\u0627\\u0646\",\n\"Loading emoticons...\": \"\\u062e\\u06d5\\u0631\\u06cc\\u06a9\\u06cc \\u0628\\u0627\\u0631\\u06af\\u0631\\u062a\\u0646\\u06cc \\u067e\\u06ce\\u06a9\\u06d5\\u0646\\u06c6\\u06a9\\u06d5\\u06a9\\u0627\\u0646...\",\n\"Could not load emoticons\": \"\\u0646\\u0627\\u062a\\u0648\\u0627\\u0646\\u0631\\u06ce \\u067e\\u06ce\\u06a9\\u06d5\\u0646\\u06c6\\u06a9\\u06d5\\u06a9\\u0627\\u0646 \\u0628\\u0627\\u0631 \\u0628\\u06af\\u06cc\\u0631\\u06ce\",\n\"People\": \"\\u062e\\u06d5\\u06b5\\u06a9\",\n\"Animals and Nature\": \"\\u0626\\u0627\\u0698\\u06d5\\u06b5 \\u0648 \\u0633\\u0631\\u0648\\u0634\\u062a\",\n\"Food and Drink\": \"\\u0686\\u06ce\\u0634\\u062a \\u0648 \\u062e\\u0648\\u0627\\u0631\\u062f\\u0646\",\n\"Activity\": \"\\u0686\\u0627\\u0644\\u0627\\u06a9\\u06cc\",\n\"Travel and Places\": \"\\u0633\\u06d5\\u0641\\u06d5\\u0631 \\u0648 \\u0634\\u0648\\u06ce\\u0646\\u06d5\\u06a9\\u0627\\u0646\",\n\"Objects\": \"\\u0634\\u062a\\u06d5\\u06a9\\u0627\\u0646\",\n\"Flags\": \"\\u0626\\u0627\\u06b5\\u0627\\u06a9\\u0627\\u0646\",\n\"Characters\": \"\\u0646\\u0648\\u0648\\u0633\\u06d5\\u06a9\\u0627\\u0646\",\n\"Characters (no spaces)\": \"\\u0646\\u0648\\u0648\\u0633\\u06d5\\u06a9\\u0627\\u0646 (\\u0628\\u06d5\\u0628\\u06ce \\u0628\\u06c6\\u0634\\u0627\\u06cc\\u06cc)\",\n\"{0} characters\": \"{0} \\u0646\\u0648\\u0648\\u0633\\u06d5\",\n\"Error: Form submit field collision.\": \"\\u0647\\u06d5\\u06b5\\u06d5: \\u062a\\u06ce\\u06a9\\u0686\\u0648\\u0648\\u0646\\u06cc \\u0646\\u0627\\u0631\\u062f\\u0646\\u06cc \\u0641\\u06c6\\u0631\\u0645.\",\n\"Error: No form element found.\": \"\\u0647\\u06d5\\u06b5\\u06d5: \\u0647\\u06cc\\u0686 \\u0639\\u0648\\u0646\\u0633\\u0648\\u0631\\u06ce\\u06a9\\u06cc \\u0641\\u06c6\\u0631\\u0645 \\u0646\\u06d5\\u062f\\u06c6\\u0632\\u0631\\u0627\\u06cc\\u06d5\\u0648\\u06d5.\",\n\"Update\": \"\\u0695\\u06c6\\u0698\\u0627\\u0646\\u06d5\\u06a9\\u0631\\u062f\\u0646\",\n\"Color swatch\": \"\\u0646\\u0645\\u0648\\u0648\\u0646\\u06d5 \\u0695\\u06d5\\u0646\\u06af\",\n\"Turquoise\": \"\\u067e\\u06cc\\u0631\\u06c6\\u0632\\u06d5\\u06cc\\u06cc\",\n\"Green\": \"\\u0633\\u06d5\\u0648\\u0632\",\n\"Blue\": \"\\u06a9\\u06d5\\u0648\\u06d5\",\n\"Purple\": \"\\u0645\\u06c6\\u0631\",\n\"Navy Blue\": \"\\u0633\\u0648\\u0631\\u0645\\u06d5\\u06cc\\u06cc\",\n\"Dark Turquoise\": \"\\u067e\\u06cc\\u0631\\u06c6\\u0632\\u06d5\\u06cc\\u06cc \\u062a\\u0627\\u0631\\u06cc\\u06a9\",\n\"Dark Green\": \"\\u0633\\u06d5\\u0648\\u0632\\u06cc \\u062a\\u0627\\u0631\\u06cc\\u06a9\",\n\"Medium Blue\": \"\\u06a9\\u06d5\\u0648\\u06d5\\u06cc \\u0645\\u0627\\u0645\\u0646\\u0627\\u0648\\u06d5\\u0646\\u062f\",\n\"Medium Purple\": \"\\u0645\\u06c6\\u0631\\u06cc \\u0645\\u0627\\u0645\\u0646\\u0627\\u0648\\u06d5\\u0646\\u062f\",\n\"Midnight Blue\": \"\\u06a9\\u06d5\\u0648\\u06d5\\u06cc \\u0646\\u06cc\\u0648\\u06d5\\u0634\\u06d5\\u0648\",\n\"Yellow\": \"\\u0632\\u06d5\\u0631\\u062f\",\n\"Orange\": \"\\u067e\\u0631\\u062a\\u06d5\\u0642\\u0627\\u06b5\\u06cc\",\n\"Red\": \"\\u0633\\u0648\\u0648\\u0631\",\n\"Light Gray\": \"\\u0628\\u06c6\\u0631\\u06cc \\u06a9\\u0627\\u06b5\",\n\"Gray\": \"\\u0628\\u06c6\\u0631\",\n\"Dark Yellow\": \"\\u0632\\u06d5\\u0631\\u062f\\u06cc \\u062a\\u0627\\u0631\\u06cc\\u06a9\",\n\"Dark Orange\": \"\\u067e\\u0631\\u062a\\u06d5\\u0642\\u0627\\u06b5\\u06cc\\u06cc \\u062a\\u0627\\u0631\\u06cc\\u06a9\",\n\"Dark Red\": \"\\u0633\\u0648\\u0648\\u0631\\u06cc \\u062a\\u0627\\u0631\\u06cc\\u06a9\",\n\"Medium Gray\": \"\\u0628\\u06c6\\u0631\\u06cc \\u0645\\u0627\\u0645\\u0646\\u0627\\u0648\\u06d5\\u0646\\u062f\",\n\"Dark Gray\": \"\\u0628\\u06c6\\u0631\\u06cc \\u062a\\u0627\\u0631\\u06cc\\u06a9\",\n\"Light Green\": \"\\u0633\\u06d5\\u0648\\u0632\\u06cc \\u06a9\\u0627\\u06b5\",\n\"Light Yellow\": \"\\u0632\\u06d5\\u0631\\u062f\\u06cc \\u06a9\\u0627\\u06b5\",\n\"Light Red\": \"\\u0633\\u0648\\u0648\\u0631\\u06cc \\u06a9\\u0627\\u06b5\",\n\"Light Purple\": \"\\u0645\\u06c6\\u0631\\u06cc \\u06a9\\u0627\\u06b5\",\n\"Light Blue\": \"\\u06a9\\u06d5\\u0648\\u06d5\\u06cc \\u06a9\\u0627\\u06b5\",\n\"Dark Purple\": \"\\u0645\\u06c6\\u0631\\u06cc \\u062a\\u0627\\u0631\\u06cc\\u06a9\",\n\"Dark Blue\": \"\\u06a9\\u06d5\\u0648\\u06d5\\u06cc \\u062a\\u0627\\u0631\\u06cc\\u06a9\",\n\"Black\": \"\\u0695\\u06d5\\u0634\",\n\"White\": \"\\u0633\\u067e\\u06cc\",\n\"Switch to or from fullscreen mode\": \"\\u06af\\u06c6\\u0695\\u06cc\\u0646 \\u0644\\u06d5 \\u06cc\\u0627\\u0646 \\u0628\\u06c6 \\u062d\\u0627\\u06b5\\u06d5\\u062a\\u06cc \\u067e\\u0695\\u062f\\u06cc\\u0645\\u06d5\\u0646\",\n\"Open help dialog\": \"\\u06a9\\u0631\\u062f\\u0646\\u06d5\\u0648\\u06d5\\u06cc \\u0648\\u062a\\u0648\\u0648\\u06ce\\u0698\\u06cc \\u06cc\\u0627\\u0631\\u0645\\u06d5\\u062a\\u06cc\",\n\"history\": \"\\u0645\\u06ce\\u0698\\u0648\\u0648\",\n\"styles\": \"\\u0634\\u06ce\\u0648\\u06d5\\u06a9\\u0627\\u0646\",\n\"formatting\": \"\\u0634\\u06ce\\u0648\\u06d5\\u067e\\u06ce\\u062f\\u0627\\u0646\",\n\"alignment\": \"\\u0644\\u0627\\u06af\\u0631\\u062a\\u0646\",\n\"indentation\": \"\\u0646\\u0627\\u0648\\u0648\\u06d5\\u0686\\u0648\\u0648\\u0646\",\n\"permanent pen\": \"\\u067e\\u06ce\\u0646\\u0648\\u0648\\u0633\\u06cc \\u0647\\u06d5\\u0645\\u06cc\\u0634\\u06d5\\u06cc\\u06cc\",\n\"comments\": \"\\u0628\\u06c6\\u0686\\u0648\\u0648\\u0646\\u06d5\\u06a9\\u0627\\u0646\",\n\"Format Painter\": \"\\u0646\\u06cc\\u06af\\u0627\\u0631\\u06a9\\u06ce\\u0634\\u06cc \\u0634\\u06ce\\u0648\\u0627\\u0632\",\n\"Insert\\/edit iframe\": \"\\u062a\\u06ce\\u062e\\u0633\\u062a\\u0646\\/\\u0628\\u0698\\u0627\\u0631\\u06a9\\u0631\\u062f\\u0646\\u06cc \\u0626\\u0627\\u06cc\\u0641\\u0631\\u06d5\\u06cc\\u0645\",\n\"Capitalization\": \"\\u062d\\u06d5\\u0631\\u0641\\u06d5 \\u06af\\u06d5\\u0648\\u0631\\u06d5\\u06a9\\u0627\\u0646\",\n\"lowercase\": \"\\u062d\\u06d5\\u0631\\u0641\\u06cc \\u0628\\u0686\\u0648\\u0648\\u06a9\",\n\"UPPERCASE\": \"\\u062d\\u06d5\\u0631\\u0641\\u06cc \\u06af\\u06d5\\u0648\\u0631\\u06d5\",\n\"Title Case\": \"\\u062d\\u06d5\\u0631\\u0641\\u06d5 \\u0633\\u06d5\\u0631\\u062f\\u06ce\\u0631\\u06cc\\u06cc\\u06d5\\u06a9\\u0627\\u0646\",\n\"Permanent Pen Properties\": \"\\u062a\\u0627\\u06cc\\u0628\\u06d5\\u062a\\u0645\\u06d5\\u0646\\u062f\\u06cc\\u06cc\\u06d5\\u06a9\\u0627\\u0646\\u06cc \\u067e\\u06ce\\u0646\\u0648\\u0648\\u0633\\u06cc \\u0647\\u06d5\\u0645\\u06cc\\u0634\\u06d5\\u06cc\\u06cc\",\n\"Permanent pen properties...\": \"\\u062a\\u0627\\u06cc\\u0628\\u06d5\\u062a\\u0645\\u06d5\\u0646\\u062f\\u06cc\\u06cc\\u06d5\\u06a9\\u0627\\u0646\\u06cc \\u067e\\u06ce\\u0646\\u0648\\u0648\\u0633\\u06cc \\u0647\\u06d5\\u0645\\u06cc\\u0634\\u06d5\\u06cc\\u06cc...\",\n\"Font\": \"\\u0641\\u06c6\\u0646\\u062a\",\n\"Size\": \"\\u0626\\u06d5\\u0646\\u062f\\u0627\\u0632\\u06d5\",\n\"More...\": \"\\u0632\\u06cc\\u0627\\u062a\\u0631...\",\n\"Spellcheck Language\": \"\\u0632\\u0645\\u0627\\u0646\\u06cc \\u062a\\u0627\\u0648\\u062a\\u0648\\u06ce\\u06cc \\u0695\\u06ce\\u0646\\u0648\\u0648\\u0633\",\n\"Select...\": \"\\u0647\\u06d5\\u06b5\\u0628\\u0698\\u0627\\u0631\\u062f\\u0646...\",\n\"Preferences\": \"\\u0647\\u06d5\\u06b5\\u0628\\u0698\\u0627\\u0631\\u062f\\u06d5\\u06a9\\u0627\\u0646\",\n\"Yes\": \"\\u0626\\u06d5\\u0631\\u06ce\",\n\"No\": \"\\u0646\\u06d5\\u062e\\u06ce\\u0631\",\n\"Keyboard Navigation\": \"\\u0695\\u06ce\\u067e\\u06ce\\u0648\\u0627\\u0646 \\u0628\\u06d5 \\u062a\\u06d5\\u062e\\u062a\\u06d5\\u06a9\\u0644\\u06cc\\u0644\",\n\"Version\": \"\\u0648\\u06d5\\u0634\\u0627\\u0646\",\n\"Anchor\": \"\\u0644\\u06d5\\u0646\\u06af\\u06d5\\u0631\",\n\"Special character\": \"\\u0646\\u0648\\u0648\\u0633\\u06d5\\u06cc \\u062a\\u0627\\u06cc\\u0628\\u06d5\\u062a\",\n\"Color\": \"\\u0695\\u06d5\\u0646\\u06af\",\n\"Emoticons\": \"\\u0648\\u06ce\\u0646\\u06c6\\u0686\\u06a9\\u06d5\\u06a9\\u0627\\u0646\\u06cc \\u0647\\u06d5\\u0633\\u062a\",\n\"Document properties\": \"\\u062a\\u0627\\u06cc\\u0628\\u0647\\u200c\\u062a\\u0645\\u0647\\u200c\\u0646\\u062f\\u06cc\\u06cc\\u06d5\\u06a9\\u0627\\u0646\\u06cc \\u0628\\u06d5\\u06b5\\u06af\\u06d5\\u0646\\u0627\\u0645\\u06d5\",\n\"Insert link\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\\u06cc \\u0628\\u06d5\\u0633\\u062a\\u06d5\\u0631\",\n\"Target\": \"\\u0626\\u0627\\u0645\\u0627\\u0646\\u062c\",\n\"Poster\": \"\\u067e\\u06c6\\u0633\\u062a\\u06d5\\u0631\",\n\"Print\": \"\\u0686\\u0627\\u067e\\u06a9\\u0631\\u062f\\u0646\",\n\"Whole words\": \"\\u0647\\u06d5\\u0645\\u0648\\u0648 \\u0648\\u0634\\u06d5\\u06a9\\u0627\\u0646\",\n\"Find and replace\": \"\\u062f\\u06c6\\u0632\\u06cc\\u0646\\u06d5\\u0648\\u06d5 \\u0648 \\u062c\\u06ce\\u06af\\u06c6\\u0695\\u06cc\\u0646\",\n\"Prev\": \"\\u067e\\u06ce\\u0634\\u0648\\u0648\",\n\"Spellcheck\": \"\\u067e\\u0634\\u06a9\\u0646\\u06cc\\u0646\\u06cc \\u0695\\u06ce\\u0646\\u0648\\u0648\\u0633\",\n\"Caption\": \"\\u0633\\u06d5\\u0631\\u062f\\u06ce\\u0695\",\n\"Insert template\": \"\\u062e\\u0633\\u062a\\u0646\\u06d5\\u0646\\u0627\\u0648\\u06cc \\u062f\\u0627\\u0695\\u06ce\\u0698\\u06d5\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/lt.js",
    "content": "tinymce.addI18n('lt',{\n\"Redo\": \"Gr\\u0105\\u017einti\",\n\"Undo\": \"Atstatyti\",\n\"Cut\": \"I\\u0161kirpti\",\n\"Copy\": \"Kopijuoti\",\n\"Paste\": \"\\u012ed\\u0117ti\",\n\"Select all\": \"Pa\\u017eym\\u0117ti visk\\u0105\",\n\"New document\": \"Naujas dokumentas\",\n\"Ok\": \"Gerai\",\n\"Cancel\": \"Atsisakyti\",\n\"Visual aids\": \"Vaizdin\\u0117s priemon\\u0117s\",\n\"Bold\": \"Pary\\u0161kintas\",\n\"Italic\": \"Kursyvinis\",\n\"Underline\": \"Pabrauktas\",\n\"Strikethrough\": \"Perbrauktas\",\n\"Superscript\": \"Vir\\u0161utinis indeksas\",\n\"Subscript\": \"Apatinis indeksas\",\n\"Clear formatting\": \"Naikinti formatavim\\u0105\",\n\"Align left\": \"Lygiuoti kair\\u0117je\",\n\"Align center\": \"Centruoti\",\n\"Align right\": \"Lygiuoti de\\u0161in\\u0117je\",\n\"Justify\": \"I\\u0161d\\u0117styti per vis\\u0105 plot\\u012f\",\n\"Bullet list\": \"\\u017denklinimo s\\u0105ra\\u0161as\",\n\"Numbered list\": \"Skaitmeninis s\\u0105ra\\u0161as\",\n\"Decrease indent\": \"Ma\\u017einti \\u012ftrauk\\u0105\",\n\"Increase indent\": \"Didinti \\u012ftrauk\\u0105\",\n\"Close\": \"U\\u017edaryti\",\n\"Formats\": \"Formatai\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Nar\\u0161ykl\\u0117s nustatymai neleid\\u017eia redaktoriui tiesiogiai pasiekti laikinosios atminties. Pra\\u0161ome naudoti klaviat\\u016bros klavi\\u0161us Ctrl+X\\/C\\/V.\",\n\"Headers\": \"Antra\\u0161t\\u0117s\",\n\"Header 1\": \"Antra\\u0161t\\u0117 1\",\n\"Header 2\": \"Antra\\u0161t\\u0117 2\",\n\"Header 3\": \"Antra\\u0161t\\u0117 3\",\n\"Header 4\": \"Antra\\u0161t\\u0117 4\",\n\"Header 5\": \"Antra\\u0161t\\u0117 5\",\n\"Header 6\": \"Antra\\u0161t\\u0117 6\",\n\"Headings\": \"Antra\\u0161t\\u0117s\",\n\"Heading 1\": \"Antra\\u0161t\\u0117 1\",\n\"Heading 2\": \"Antra\\u0161t\\u0117 2\",\n\"Heading 3\": \"Antra\\u0161t\\u0117 3\",\n\"Heading 4\": \"Antra\\u0161t\\u0117 4\",\n\"Heading 5\": \"Antra\\u0161t\\u0117 5\",\n\"Heading 6\": \"Antra\\u0161t\\u0117 6\",\n\"Preformatted\": \"Suformuotas i\\u0161 anksto\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Kodas\",\n\"Paragraph\": \"Paragrafas\",\n\"Blockquote\": \"Citata\",\n\"Inline\": \"Inline\",\n\"Blocks\": \"Blokai\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Dabar \\u012fterpiama paprastojo teksto re\\u017eimu. Kol \\u0161i parinktis \\u012fjungta, turinys bus \\u012fterptas kaip paprastas tekstas.\",\n\"Fonts\": \"\\u0160riftai\",\n\"Font Sizes\": \"\\u0160rifto dyd\\u017eiai\",\n\"Class\": \"Klas\\u0117\",\n\"Browse for an image\": \"Ie\\u0161koti paveiksl\\u0117lio\",\n\"OR\": \"ARBA\",\n\"Drop an image here\": \"Tempkite paveiksl\\u0117l\\u012f \\u010dia\",\n\"Upload\": \"\\u012ekelti\",\n\"Block\": \"Blokas\",\n\"Align\": \"Lygiavimas\",\n\"Default\": \"Pagrindinis\",\n\"Circle\": \"Apskritimas\",\n\"Disc\": \"Diskas\",\n\"Square\": \"Kvadratas\",\n\"Lower Alpha\": \"Ma\\u017eosios raid\\u0117s\",\n\"Lower Greek\": \"Ma\\u017eosios graik\\u0173\",\n\"Lower Roman\": \"Ma\\u017eosios rom\\u0117n\\u0173\",\n\"Upper Alpha\": \"Did\\u017eiosios raid\\u0117s\",\n\"Upper Roman\": \"Did\\u017eiosios rom\\u0117n\\u0173\",\n\"Anchor...\": \"Nuoroda...\",\n\"Name\": \"Pavadinimas\",\n\"Id\": \"ID\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"ID turi prasid\\u0117ti raide, po kurios gali b\\u016bti raid\\u0117s, skai\\u010diai, br\\u016bk\\u0161niai, ta\\u0161kai, kabliata\\u0161kiai ar apatiniai pabraukimai.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Turite nei\\u0161saugot\\u0173 pakeitim\\u0173! Ar tikrai norite i\\u0161eiti?\",\n\"Restore last draft\": \"Atstatyti paskutin\\u012f projekt\\u0105\",\n\"Special character...\": \"Specialieji simboliai...\",\n\"Source code\": \"Pirminis \\u0161altinis\",\n\"Insert\\/Edit code sample\": \"Prid\\u0117ti \\/ keisti kodo pavyzd\\u012f\",\n\"Language\": \"Kalba\",\n\"Code sample...\": \"Kodo pavyzdys...\",\n\"Color Picker\": \"Spalvos parinkimas\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"I\\u0161 kair\\u0117s \\u012f de\\u0161in\\u0119\",\n\"Right to left\": \"I\\u0161 de\\u0161in\\u0117s \\u012f kair\\u0119\",\n\"Emoticons...\": \"Jaustukai...\",\n\"Metadata and Document Properties\": \"Meta duomenys ir dokumento ypatyb\\u0117s\",\n\"Title\": \"Pavadinimas\",\n\"Keywords\": \"\\u017dymos\",\n\"Description\": \"Apra\\u0161as\",\n\"Robots\": \"Robotai\",\n\"Author\": \"Autorius\",\n\"Encoding\": \"Kodavimas\",\n\"Fullscreen\": \"Visas ekranas\",\n\"Action\": \"Veiksmas\",\n\"Shortcut\": \"Nuoroda\",\n\"Help\": \"Pagalba\",\n\"Address\": \"Adresas\",\n\"Focus to menubar\": \"Fokusuoti \\u012f meniu\",\n\"Focus to toolbar\": \"Fokusuoti \\u012f \\u012franki\\u0173 juost\\u0105\",\n\"Focus to element path\": \"Fokusuoti \\u012f elemento keli\\u0105\",\n\"Focus to contextual toolbar\": \"Fokusuoti \\u012f kontekstin\\u012f \\u012franki\\u0173 juost\\u0105\",\n\"Insert link (if link plugin activated)\": \"Prid\\u0117ti nuorod\\u0105 (jei link priedas aktyvuotas)\",\n\"Save (if save plugin activated)\": \"I\\u0161saugoti (jei save priedas aktyvuotas)\",\n\"Find (if searchreplace plugin activated)\": \"Ie\\u0161koti (jei searchreplace priedas aktyvuotas)\",\n\"Plugins installed ({0}):\": \"\\u012ediegti priedai ({0}):\",\n\"Premium plugins:\": \"Mokami priedai:\",\n\"Learn more...\": \"Su\\u017einoti daugiau...\",\n\"You are using {0}\": \"Naudojate {0}\",\n\"Plugins\": \"Priedai\",\n\"Handy Shortcuts\": \"Patogios nuorodos\",\n\"Horizontal line\": \"Horizontali linija\",\n\"Insert\\/edit image\": \"\\u012eterpti|Tvarkyti paveiksl\\u0117l\\u012f\",\n\"Image description\": \"Paveiksl\\u0117lio apra\\u0161as\",\n\"Source\": \"Pirmin\\u0117 nuoroda\",\n\"Dimensions\": \"Matmenys\",\n\"Constrain proportions\": \"Laikytis proporcij\\u0173\",\n\"General\": \"Bendra\",\n\"Advanced\": \"I\\u0161pl\\u0117stas\",\n\"Style\": \"Stilius\",\n\"Vertical space\": \"Vertikalus tarpas\",\n\"Horizontal space\": \"Horizontalus tarpas\",\n\"Border\": \"R\\u0117melis\",\n\"Insert image\": \"\\u012eterpti paveiksl\\u0117l\\u012f\",\n\"Image...\": \"Paveiksl\\u0117lis...\",\n\"Image list\": \"Paveiksl\\u0117li\\u0173 s\\u0105ra\\u0161as\",\n\"Rotate counterclockwise\": \"Pasukti prie\\u0161 laikrod\\u017eio rodykl\\u0119\",\n\"Rotate clockwise\": \"Pasukti pagal laikrod\\u017eio rodykl\\u0119\",\n\"Flip vertically\": \"Apversti vertikaliai\",\n\"Flip horizontally\": \"Apversti horizontaliai\",\n\"Edit image\": \"Redaguoti paveiksl\\u0117l\\u012f\",\n\"Image options\": \"Paveiksl\\u0117lio nustatymai\",\n\"Zoom in\": \"Priartinti\",\n\"Zoom out\": \"Atitolinti\",\n\"Crop\": \"Atkarpyti\",\n\"Resize\": \"Keisti dyd\\u012f\",\n\"Orientation\": \"Pasukimas\",\n\"Brightness\": \"\\u0160viesumas\",\n\"Sharpen\": \"Ry\\u0161kumas\",\n\"Contrast\": \"Kontrastas\",\n\"Color levels\": \"Spalv\\u0173 lygiai\",\n\"Gamma\": \"Gama\",\n\"Invert\": \"Prie\\u0161ingos spalvos\",\n\"Apply\": \"Taikyti\",\n\"Back\": \"Atgal\",\n\"Insert date\\/time\": \"\\u012eterpti dat\\u0105\\/laik\\u0105\",\n\"Date\\/time\": \"Data \\/ laikas\",\n\"Insert\\/Edit Link\": \"Prid\\u0117ti\\/Keisti nuorod\\u0105\",\n\"Insert\\/edit link\": \"\\u012eterpti\\/taisyti nuorod\\u0105\",\n\"Text to display\": \"Rodomas tekstas\",\n\"Url\": \"Nuoroda\",\n\"Open link in...\": \"Nuorod\\u0105 atverti...\",\n\"Current window\": \"Dabartiniame lange\",\n\"None\": \"Nieko\",\n\"New window\": \"Naujas langas\",\n\"Remove link\": \"\\u0160alinti nuorod\\u0105\",\n\"Anchors\": \"\\u017dym\\u0117\",\n\"Link...\": \"Nuoroda...\",\n\"Paste or type a link\": \"\\u012eklijuokite arba \\u012fra\\u0161ykite nuorod\\u0105\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Atrodo, kad \\u012fvesta nuoroda yra elektroninio pa\\u0161to adresas. Ar norite prie\\u0161 j\\u012f \\u012fvesti reikalaujam\\u0105 \\u201emailto:\\u201c?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Atrodo, kad \\u012fved\\u0117te nuotolin\\u0119 nuorod\\u0105. Ar norite prie\\u0161 j\\u0105 \\u012fvesti reikalaujam\\u0105 \\u201ehttp:\\/\\/\\u201c?\",\n\"Link list\": \"Nuorod\\u0173 s\\u0105ra\\u0161as\",\n\"Insert video\": \"\\u012eterpti video\",\n\"Insert\\/edit video\": \"\\u012eterpti\\/tvarkyti video\",\n\"Insert\\/edit media\": \"Prid\\u0117ti \\/ keisti medij\\u0105\",\n\"Alternative source\": \"Alternatyvus \\u0161altinis\",\n\"Alternative source URL\": \"Alternatyvus \\u0161altinio URL adresas\",\n\"Media poster (Image URL)\": \"medijos skelbiklis (paveiksl\\u0117lio URL adresas)\",\n\"Paste your embed code below:\": \"\\u012eterpkite kod\\u0105 \\u017eemiau:\",\n\"Embed\": \"\\u012eterpti\",\n\"Media...\": \"Medija...\",\n\"Nonbreaking space\": \"Nepertraukiamos vietos\",\n\"Page break\": \"Puslapio skirtukas\",\n\"Paste as text\": \"\\u012eklijuoti kaip tekst\\u0105\",\n\"Preview\": \"Per\\u017ei\\u016bra\",\n\"Print...\": \"Spausdinti...\",\n\"Save\": \"I\\u0161saugoti\",\n\"Find\": \"Ie\\u0161koti\",\n\"Replace with\": \"Kuo pakeisti\",\n\"Replace\": \"Pakeisti\",\n\"Replace all\": \"Pakeisti visk\\u0105\",\n\"Previous\": \"Ankstesnis\",\n\"Next\": \"Sekantis\",\n\"Find and replace...\": \"Ie\\u0161koti ir pakeisti...\",\n\"Could not find the specified string.\": \"Nepavyko rasti nurodytos eilut\\u0117s.\",\n\"Match case\": \"Atitinkamus\",\n\"Find whole words only\": \"Ie\\u0161koti tik vis\\u0105 \\u017eod\\u012f\",\n\"Spell check\": \"Klaid\\u0173 tikrinimas\",\n\"Ignore\": \"Ignoruoti\",\n\"Ignore all\": \"Ignoruoti visk\\u0105\",\n\"Finish\": \"Baigti\",\n\"Add to Dictionary\": \"Prid\\u0117ti \\u012f \\u017dodyn\\u0105\",\n\"Insert table\": \"\\u012eterpti lentel\\u0119\",\n\"Table properties\": \"Lentel\\u0117s savyb\\u0117s\",\n\"Delete table\": \"\\u0160alinti lentel\\u0119\",\n\"Cell\": \"Langeliai\",\n\"Row\": \"Eilut\\u0117s\",\n\"Column\": \"Stulpelis\",\n\"Cell properties\": \"Langelio savyb\\u0117s\",\n\"Merge cells\": \"Sujungti langelius\",\n\"Split cell\": \"Skaidyti langelius\",\n\"Insert row before\": \"\\u012eterpti eilut\\u0119 prie\\u0161\",\n\"Insert row after\": \"\\u012eterpti eilut\\u0119 po\",\n\"Delete row\": \"Naikinti eilut\\u0119\",\n\"Row properties\": \"Eilut\\u0117s savyb\\u0117s\",\n\"Cut row\": \"I\\u0161kirpti eilut\\u0119\",\n\"Copy row\": \"Kopijuoti eilut\\u0119\",\n\"Paste row before\": \"\\u012ed\\u0117ti eilut\\u0119 prie\\u0161\",\n\"Paste row after\": \"\\u012ed\\u0117ti eilut\\u0119 po\",\n\"Insert column before\": \"\\u012eterpti stulpel\\u012f prie\\u0161\",\n\"Insert column after\": \"\\u012eterpti stulpel\\u012f po\",\n\"Delete column\": \"Naikinti stulpel\\u012f\",\n\"Cols\": \"Stulpeliai\",\n\"Rows\": \"Eilut\\u0117s\",\n\"Width\": \"Plotis\",\n\"Height\": \"Auk\\u0161tis\",\n\"Cell spacing\": \"Tarpas tarp langeli\\u0173\",\n\"Cell padding\": \"Tarpas nuo langelio iki teksto\",\n\"Show caption\": \"Rodyti antra\\u0161t\\u0119\",\n\"Left\": \"Kair\\u0117\",\n\"Center\": \"Centras\",\n\"Right\": \"De\\u0161in\\u0117\",\n\"Cell type\": \"Langelio tipas\",\n\"Scope\": \"Strukt\\u016bra\",\n\"Alignment\": \"Lygiavimas\",\n\"H Align\": \"H Lygiavimas\",\n\"V Align\": \"V Lygiavimas\",\n\"Top\": \"Vir\\u0161uje\",\n\"Middle\": \"Viduryje\",\n\"Bottom\": \"Apa\\u010dioje\",\n\"Header cell\": \"Antra\\u0161t\\u0117s langelis\",\n\"Row group\": \"Eilu\\u010di\\u0173 grup\\u0117\",\n\"Column group\": \"Stulpeli\\u0173 grup\\u0117\",\n\"Row type\": \"Eilu\\u010di\\u0173 tipas\",\n\"Header\": \"Antra\\u0161t\\u0117\",\n\"Body\": \"Turinys\",\n\"Footer\": \"Apa\\u010dia\",\n\"Border color\": \"R\\u0117melio spalva\",\n\"Insert template...\": \"Prid\\u0117ti \\u0161ablon\\u0105...\",\n\"Templates\": \"\\u0160ablonai\",\n\"Template\": \"\\u0160ablonas\",\n\"Text color\": \"Teksto spalva\",\n\"Background color\": \"Fono spalva\",\n\"Custom...\": \"Pasirinktinas...\",\n\"Custom color\": \"Pasirinktina spalva\",\n\"No color\": \"Jokios spalvos\",\n\"Remove color\": \"Pa\\u0161alinti spalv\\u0105\",\n\"Table of Contents\": \"Turinys\",\n\"Show blocks\": \"Rodyti blokus\",\n\"Show invisible characters\": \"Rodyti nematomus simbolius\",\n\"Word count\": \"\\u017dod\\u017ei\\u0173 kiekis\",\n\"Count\": \"Skai\\u010dius\",\n\"Document\": \"Dokumentas\",\n\"Selection\": \"Pasirinkimas\",\n\"Words\": \"\\u017dod\\u017ei\\u0173\",\n\"Words: {0}\": \"\\u017dod\\u017eiai: {0}\",\n\"{0} words\": \"{0} \\u017eod\\u017eiai\",\n\"File\": \"Failas\",\n\"Edit\": \"Redaguoti\",\n\"Insert\": \"\\u012eterpti\",\n\"View\": \"Per\\u017ei\\u016bra\",\n\"Format\": \"Formatas\",\n\"Table\": \"Lentel\\u0117\",\n\"Tools\": \"\\u012erankiai\",\n\"Powered by {0}\": \"Sukurta {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Suformatuoto teksto laukas. D\\u0117l meniu spauskite ALT-F9. U\\u017eduo\\u010di\\u0173 juostos \\u012fjungimui spauskite ALT-F10. Pagalbai - spauskite ALT-0.\",\n\"Image title\": \"Paveiksl\\u0117lio pavadinimas\",\n\"Border width\": \"Kra\\u0161tin\\u0117s plotis\",\n\"Border style\": \"Kra\\u0161tin\\u0117s stilius\",\n\"Error\": \"Klaida\",\n\"Warn\": \"\\u012esp\\u0117ti\",\n\"Valid\": \"Tinkamas\",\n\"To open the popup, press Shift+Enter\": \"Spustel\\u0117j\\u0119 Shift+Enter atversite i\\u0161kylant\\u012f lang\\u0105\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Rai\\u0161kiojo teksto vieta. Spustel\\u0117j\\u0119 Alt-0 gausite pagalbos.\",\n\"System Font\": \"Sisteminiai \\u0161riftai\",\n\"Failed to upload image: {0}\": \"Paveiksl\\u0117lio \\u012fkelti nepavyko: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Priedo \\u012fkelti nepavyko: {0} i\\u0161 adreso {1}\",\n\"Failed to load plugin url: {0}\": \"Priedo adreso \\u012fkelti nepavyko: {0}\",\n\"Failed to initialize plugin: {0}\": \"Priedo inicijuoti nepavyko: {0}\",\n\"example\": \"pavyzdys\",\n\"Search\": \"Ie\\u0161koti\",\n\"All\": \"Visi\",\n\"Currency\": \"Valiuta\",\n\"Text\": \"Tekstas\",\n\"Quotations\": \"Citata\",\n\"Mathematical\": \"Matematinis\",\n\"Extended Latin\": \"Lotyn\\u0173 i\\u0161pl\\u0117stin\\u0117\",\n\"Symbols\": \"Simboliai\",\n\"Arrows\": \"Rodykl\\u0117s\",\n\"User Defined\": \"Vartotojo apibr\\u0117\\u017eta\",\n\"dollar sign\": \"dolerio \\u017eenklas\",\n\"currency sign\": \"valiutos \\u017eenklas\",\n\"euro-currency sign\": \"euro \\u017eenklas\",\n\"colon sign\": \"dvita\\u0161kio \\u017eenklas\",\n\"cruzeiro sign\": \"kruzeiro \\u017eenklas\",\n\"french franc sign\": \"Pranc\\u016bz\\u0173 franko \\u017eenklas\",\n\"lira sign\": \"lyros \\u017eenklas\",\n\"mill sign\": \"milo simbolis\",\n\"naira sign\": \"nairos simbolis\",\n\"peseta sign\": \"peseto \\u017eenklas\",\n\"rupee sign\": \"rupijos \\u017eenklas\",\n\"won sign\": \"vono \\u017eenklas\",\n\"new sheqel sign\": \"naujojo \\u0161ekelio \\u017eenklas\",\n\"dong sign\": \"dongo \\u017eenklas\",\n\"kip sign\": \"kipo \\u017eenklas\",\n\"tugrik sign\": \"tugriko \\u017eenklas\",\n\"drachma sign\": \"drachmos \\u017eenklas\",\n\"german penny symbol\": \"Vokietijos fenigo \\u017eenklas\",\n\"peso sign\": \"peso \\u017eenklas\",\n\"guarani sign\": \"gvaranio \\u017eenklas\",\n\"austral sign\": \"australo \\u017eenklas\",\n\"hryvnia sign\": \"grivinos \\u017eenklas\",\n\"cedi sign\": \"sed\\u017eio \\u017eenklas\",\n\"livre tournois sign\": \"toro svaro \\u017eenklas\",\n\"spesmilo sign\": \"spesmilo \\u017eenklas\",\n\"tenge sign\": \"teng\\u0117s \\u017eenklas\",\n\"indian rupee sign\": \"Indijos rupijos \\u017eenklas\",\n\"turkish lira sign\": \"Turkijos lyros \\u017eenklas\",\n\"nordic mark sign\": \"\\u0161iaur\\u0117s \\u0161ali\\u0173 mark\\u0117s \\u017eenklas\",\n\"manat sign\": \"manato \\u017eenklas\",\n\"ruble sign\": \"rublio \\u017eenklas\",\n\"yen character\": \"jienos simbolis\",\n\"yuan character\": \"juanio simbolis\",\n\"yuan character, in hong kong and taiwan\": \"juanio \\u017eenklas, naudojamas Hongkonge ir Taivane\",\n\"yen\\/yuan character variant one\": \"jienos\\/juanio vieningas \\u017eenklas\",\n\"Loading emoticons...\": \"\\u012ekeliami jaustukai...\",\n\"Could not load emoticons\": \"Nepavyko \\u012fkelti jaustuk\\u0173\",\n\"People\": \"\\u017dmon\\u0117s\",\n\"Animals and Nature\": \"Gyv\\u016bnai ir gamta\",\n\"Food and Drink\": \"Maistas ir g\\u0117rimai\",\n\"Activity\": \"Veikla\",\n\"Travel and Places\": \"Kelion\\u0117s ir vietos\",\n\"Objects\": \"Objektai\",\n\"Flags\": \"V\\u0117liavos\",\n\"Characters\": \"Simboli\\u0173\",\n\"Characters (no spaces)\": \"Simboli\\u0173 (be tarp\\u0173)\",\n\"{0} characters\": \"{0} simboliai\",\n\"Error: Form submit field collision.\": \"Klaida: formos lauk\\u0173 nesuderinamumas.\",\n\"Error: No form element found.\": \"Klaida: formos element\\u0173 nerasta.\",\n\"Update\": \"Naujinti\",\n\"Color swatch\": \"Spalv\\u0173 pavyzd\\u017eiai\",\n\"Turquoise\": \"\\u017dalsvai m\\u0117lyna\",\n\"Green\": \"\\u017dalia\",\n\"Blue\": \"M\\u0117lyna\",\n\"Purple\": \"Ro\\u017ein\\u0117\",\n\"Navy Blue\": \"Tamsiai m\\u0117lyna\",\n\"Dark Turquoise\": \"Tamsiai \\u017ealsvai m\\u0117lyna\",\n\"Dark Green\": \"Tamsiai \\u017ealia\",\n\"Medium Blue\": \"Vidutini\\u0161kai m\\u0117lyna\",\n\"Medium Purple\": \"Vidutini\\u0161kai violetin\\u0117\",\n\"Midnight Blue\": \"Vidurnak\\u010dio m\\u0117lyna\",\n\"Yellow\": \"Geltona\",\n\"Orange\": \"Oran\\u017ein\\u0117\",\n\"Red\": \"Raudona\",\n\"Light Gray\": \"\\u0160viesiai pilka\",\n\"Gray\": \"Pilka\",\n\"Dark Yellow\": \"Tamsiai geltona\",\n\"Dark Orange\": \"Tamsiai oran\\u017ein\\u0117\",\n\"Dark Red\": \"Tamsiai raudona\",\n\"Medium Gray\": \"Vidutini\\u0161kai pilka\",\n\"Dark Gray\": \"Tamsiai pilka\",\n\"Light Green\": \"\\u0160viesiai \\u017ealia\",\n\"Light Yellow\": \"\\u0160viesiai geltona\",\n\"Light Red\": \"\\u0160viesiai raudona\",\n\"Light Purple\": \"\\u0160viesiai violetin\\u0117\",\n\"Light Blue\": \"\\u0160viesiai m\\u0117lyna\",\n\"Dark Purple\": \"Tamsiai violetin\\u0117\",\n\"Dark Blue\": \"Tamsiai m\\u0117lyna\",\n\"Black\": \"Juoda\",\n\"White\": \"Balta\",\n\"Switch to or from fullscreen mode\": \"Perjungti i\\u0161\\/\\u012f viso ekrano rodym\\u0105\",\n\"Open help dialog\": \"Atverti pagalbos lang\\u0105\",\n\"history\": \"praeitis\",\n\"styles\": \"stiliai\",\n\"formatting\": \"formatavimas\",\n\"alignment\": \"lygiavimas\",\n\"indentation\": \"\\u012ftrauka\",\n\"permanent pen\": \"nuolatinis ra\\u0161iklis\",\n\"comments\": \"komentarai\",\n\"Format Painter\": \"Formato kopijavimo priemon\\u0117\",\n\"Insert\\/edit iframe\": \"Prid\\u0117ti \\/ keisti iframe\",\n\"Capitalization\": \"Did\\u017eiosios raid\\u0117s\",\n\"lowercase\": \"ma\\u017eosios raid\\u0117s\",\n\"UPPERCASE\": \"VISOS DID\\u017dIOSIOS\",\n\"Title Case\": \"Pirmos Did\\u017eiosios\",\n\"Permanent Pen Properties\": \"Nuolatinio ra\\u0161iklio nustatymai\",\n\"Permanent pen properties...\": \"Nuolatinio ra\\u0161iklio nustatymai...\",\n\"Font\": \"\\u0160riftas\",\n\"Size\": \"Dydis\",\n\"More...\": \"Daugiau...\",\n\"Spellcheck Language\": \"Ra\\u0161ybos tikrinimo kalba\",\n\"Select...\": \"Pasirinkti...\",\n\"Preferences\": \"Nustatymai\",\n\"Yes\": \"Taip\",\n\"No\": \"Ne\",\n\"Keyboard Navigation\": \"Valdymas klaviat\\u016bra\",\n\"Version\": \"Versija\",\n\"Anchor\": \"\\u017dym\\u0117\",\n\"Special character\": \"Specialus simbolis\",\n\"Code sample\": \"Kodo pavyzdys\",\n\"Color\": \"Spalva\",\n\"Emoticons\": \"Jaustukai\",\n\"Document properties\": \"Dokumento savyb\\u0117s\",\n\"Image\": \"Paveiksl\\u0117lis\",\n\"Insert link\": \"\\u012eterpti nuorod\\u0105\",\n\"Target\": \"Tikslin\\u0117 nuoroda\",\n\"Link\": \"Nuoroda\",\n\"Poster\": \"Plakatas\",\n\"Media\": \"Medija\",\n\"Print\": \"Spausdinti\",\n\"Prev\": \"Ankstesnis\",\n\"Find and replace\": \"Surasti ir pakeisti\",\n\"Whole words\": \"Visus \\u017eod\\u017eius\",\n\"Spellcheck\": \"Ra\\u0161ybos tikrinimas\",\n\"Caption\": \"Antra\\u0161t\\u0117\",\n\"Insert template\": \"\\u012eterpti \\u0161ablon\\u0105\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/nb_NO.js",
    "content": "tinymce.addI18n('nb_NO',{\n\"Redo\": \"Gj\\u00f8r om\",\n\"Undo\": \"Angre\",\n\"Cut\": \"Klipp ut\",\n\"Copy\": \"Kopier\",\n\"Paste\": \"Lim inn\",\n\"Select all\": \"Marker alt\",\n\"New document\": \"Nytt dokument\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Avbryt\",\n\"Visual aids\": \"Visuelle hjelpemidler\",\n\"Bold\": \"Fet\",\n\"Italic\": \"Kursiv\",\n\"Underline\": \"Understreking\",\n\"Strikethrough\": \"Gjennomstreking\",\n\"Superscript\": \"Hevet skrift\",\n\"Subscript\": \"Senket skrift\",\n\"Clear formatting\": \"Fjern formateringer\",\n\"Align left\": \"Venstrejuster\",\n\"Align center\": \"Midtstill\",\n\"Align right\": \"H\\u00f8yrejuster\",\n\"Justify\": \"Blokkjuster\",\n\"Bullet list\": \"Punktliste\",\n\"Numbered list\": \"Nummerliste\",\n\"Decrease indent\": \"Reduser innrykk\",\n\"Increase indent\": \"\\u00d8k innrykk\",\n\"Close\": \"Lukk\",\n\"Formats\": \"Stiler\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Nettleseren din st\\u00f8tter ikke direkte tilgang til utklippsboken. Bruk istedet tastatursnarveiene Ctrl+X\\/C\\/V.\",\n\"Headers\": \"Overskrifter\",\n\"Header 1\": \"Overskrift 1\",\n\"Header 2\": \"Overskrift 2\",\n\"Header 3\": \"Overskrift 3\",\n\"Header 4\": \"Overskrift 4\",\n\"Header 5\": \"Overskrift 5\",\n\"Header 6\": \"Overskrift 6\",\n\"Headings\": \"Overskrifter\",\n\"Heading 1\": \"Overskrift 1\",\n\"Heading 2\": \"Overskrift 2\",\n\"Heading 3\": \"Overskrift 3\",\n\"Heading 4\": \"Overskrift 4\",\n\"Heading 5\": \"Overskrift 5\",\n\"Heading 6\": \"Overskrift 6\",\n\"Preformatted\": \"Forh\\u00e5ndsformatert\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Kode\",\n\"Paragraph\": \"Avsnitt\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Innkapslet\",\n\"Blocks\": \"Blokker\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Lim inn er n\\u00e5 i ren-tekst modus. Kopiert innhold vil bli limt inn som ren tekst inntil du sl\\u00e5r av dette valget.\",\n\"Fonts\": \"Fonter\",\n\"Font Sizes\": \"Fontst\\u00f8rrelser\",\n\"Class\": \"Klasse\",\n\"Browse for an image\": \"S\\u00f8k etter bilde\",\n\"OR\": \"OR\",\n\"Drop an image here\": \"Slipp et bilde her\",\n\"Upload\": \"Last opp\",\n\"Block\": \"Blokk\",\n\"Align\": \"Juster\",\n\"Default\": \"Normal\",\n\"Circle\": \"\\u00c5pen sirkel\",\n\"Disc\": \"Fylt sirkel\",\n\"Square\": \"Fylt firkant\",\n\"Lower Alpha\": \"Minuskler\",\n\"Lower Greek\": \"Greske minuskler\",\n\"Lower Roman\": \"Romerske minuskler\",\n\"Upper Alpha\": \"Versaler\",\n\"Upper Roman\": \"Romerske versaler\",\n\"Anchor...\": \"Lenke\",\n\"Name\": \"Navn\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id burde starte med en bokstav, bare fulgt av bokstaver, nummer, streker, punktum, koloner eller understreker.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Du har ikke arkivert endringene. Vil du fortsette uten \\u00e5 arkivere?\",\n\"Restore last draft\": \"Gjenopprett siste utkast\",\n\"Special character...\": \"Spesialtegn...\",\n\"Source code\": \"Kildekode\",\n\"Insert\\/Edit code sample\": \"Sett inn\\/endre kodeeksempel\",\n\"Language\": \"Spr\\u00e5k\",\n\"Code sample...\": \"Kodeeksempel\",\n\"Color Picker\": \"Fargevelger\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Venstre til h\\u00f8yre\",\n\"Right to left\": \"H\\u00f8yre til venstre\",\n\"Emoticons...\": \"Emoticons..\",\n\"Metadata and Document Properties\": \"Metadata og dokumentverdier\",\n\"Title\": \"Tittel\",\n\"Keywords\": \"N\\u00f8kkelord\",\n\"Description\": \"Beskrivelse\",\n\"Robots\": \"Roboter\",\n\"Author\": \"Forfatter\",\n\"Encoding\": \"Tegnkoding\",\n\"Fullscreen\": \"Fullskjerm\",\n\"Action\": \"Handling\",\n\"Shortcut\": \"Snarvei\",\n\"Help\": \"Hjelp\",\n\"Address\": \"Adresse\",\n\"Focus to menubar\": \"Fokus p\\u00e5 menylinje\",\n\"Focus to toolbar\": \"Fokus p\\u00e5 verkt\\u00f8ylinje\",\n\"Focus to element path\": \"Fokus p\\u00e5 elementsti\",\n\"Focus to contextual toolbar\": \"Fokus p\\u00e5 kontekstuell verkt\\u00f8ylinje\",\n\"Insert link (if link plugin activated)\": \"Sett inn lenke (dersom lenketillegg er aktivert)\",\n\"Save (if save plugin activated)\": \"Lagre (dersom lagretillegg er aktivert)\",\n\"Find (if searchreplace plugin activated)\": \"Finn (dersom tillegg for s\\u00f8k og erstatt er aktivert)\",\n\"Plugins installed ({0}):\": \"Installerte tillegg ({0}):\",\n\"Premium plugins:\": \"Premiumtillegg:\",\n\"Learn more...\": \"Les mer ...\",\n\"You are using {0}\": \"Du bruker {0}\",\n\"Plugins\": \"Tillegg\",\n\"Handy Shortcuts\": \"Nyttige snarveier\",\n\"Horizontal line\": \"Horisontal linje\",\n\"Insert\\/edit image\": \"Sett inn\\/endre bilde\",\n\"Image description\": \"Bildebeskrivelse\",\n\"Source\": \"Bildelenke\",\n\"Dimensions\": \"Dimensjoner\",\n\"Constrain proportions\": \"Behold proporsjoner\",\n\"General\": \"Generelt\",\n\"Advanced\": \"Avansert\",\n\"Style\": \"Stil\",\n\"Vertical space\": \"Vertikal marg\",\n\"Horizontal space\": \"Horisontal marg\",\n\"Border\": \"Ramme\",\n\"Insert image\": \"Sett inn bilde\",\n\"Image...\": \"Bilde...\",\n\"Image list\": \"Bildeliste\",\n\"Rotate counterclockwise\": \"Roter mot venstre\",\n\"Rotate clockwise\": \"Roter mot h\\u00f8yre\",\n\"Flip vertically\": \"Speilvend vertikalt\",\n\"Flip horizontally\": \"Speilvend horisontalt\",\n\"Edit image\": \"Rediger bilde\",\n\"Image options\": \"Bilde innstillinger\",\n\"Zoom in\": \"Zoom inn\",\n\"Zoom out\": \"Zoom ut\",\n\"Crop\": \"Beskj\\u00e6r\",\n\"Resize\": \"Skaler\",\n\"Orientation\": \"Orientering\",\n\"Brightness\": \"Lysstyrke\",\n\"Sharpen\": \"Skarphet\",\n\"Contrast\": \"Kontrast\",\n\"Color levels\": \"Fargeniv\\u00e5\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Inverter\",\n\"Apply\": \"Utf\\u00f8r\",\n\"Back\": \"Tilbake\",\n\"Insert date\\/time\": \"Sett inn dato\\/tid\",\n\"Date\\/time\": \"Dato\\/tid\",\n\"Insert\\/Edit Link\": \"Sett inn \\/ Rediger lenke\",\n\"Insert\\/edit link\": \"Sett inn\\/endre lenke\",\n\"Text to display\": \"Tekst som skal vises\",\n\"Url\": \"Url\",\n\"Open link in...\": \"\\u00c5pne lenke i..\",\n\"Current window\": \"N\\u00e5v\\u00e6rende vindu\",\n\"None\": \"Ingen\",\n\"New window\": \"Nytt vindu\",\n\"Remove link\": \"Fjern lenke\",\n\"Anchors\": \"Anker\",\n\"Link...\": \"Lenke...\",\n\"Paste or type a link\": \"Lim inn eller skriv en lenke\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Oppgitte URL ser ut til \\u00e5 v\\u00e6re en epost-adresse. \\u00d8nsker du \\u00e5 sette inn p\\u00e5krevet mailto: prefiks forran epost-adressen?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Oppgitt URL ser ut til \\u00e5 v\\u00e6re en e-postadresse. \\u00d8nsker du \\u00e5 sette inn p\\u00e5krevd mailto:-prefiks foran e-postadressen?\",\n\"Link list\": \"Lenkeliste\",\n\"Insert video\": \"Sett inn video\",\n\"Insert\\/edit video\": \"Sett inn\\/rediger video\",\n\"Insert\\/edit media\": \"Sett inn\\/endre media\",\n\"Alternative source\": \"Alternativ kilde\",\n\"Alternative source URL\": \"Alternativ kilde URL\",\n\"Media poster (Image URL)\": \"Mediaposter (bilde-URL)\",\n\"Paste your embed code below:\": \"Lim inn  inkluderings-koden nedenfor\",\n\"Embed\": \"Inkluder\",\n\"Media...\": \"Media..\",\n\"Nonbreaking space\": \"Hardt mellomrom\",\n\"Page break\": \"Sideskifte\",\n\"Paste as text\": \"Lim inn som tekst\",\n\"Preview\": \"Forh\\u00e5ndsvisning\",\n\"Print...\": \"Skriv ut...\",\n\"Save\": \"Arkiver\",\n\"Find\": \"Finn\",\n\"Replace with\": \"Erstatt med\",\n\"Replace\": \"Erstatt\",\n\"Replace all\": \"Erstatt alle\",\n\"Previous\": \"Forrige\",\n\"Next\": \"Neste\",\n\"Find and replace...\": \"Finn og erstatt...\",\n\"Could not find the specified string.\": \"Kunne ikke finne den spesifiserte teksten\",\n\"Match case\": \"Match store og sm\\u00e5 bokstaver\",\n\"Find whole words only\": \"Finn kun hele ord\",\n\"Spell check\": \"Stavekontroll\",\n\"Ignore\": \"Ignorer\",\n\"Ignore all\": \"Ignorer alle\",\n\"Finish\": \"Avslutt\",\n\"Add to Dictionary\": \"Legg til i ordliste\",\n\"Insert table\": \"Sett inn tabell\",\n\"Table properties\": \"Tabell egenskaper\",\n\"Delete table\": \"Slett tabell\",\n\"Cell\": \"Celle\",\n\"Row\": \"Rad\",\n\"Column\": \"Kolonne\",\n\"Cell properties\": \"Celle egenskaper\",\n\"Merge cells\": \"Sl\\u00e5 sammen celler\",\n\"Split cell\": \"Splitt celle\",\n\"Insert row before\": \"Sett inn rad f\\u00f8r\",\n\"Insert row after\": \"Sett in rad etter\",\n\"Delete row\": \"Slett rad\",\n\"Row properties\": \"Rad egenskaper\",\n\"Cut row\": \"Klipp ut rad\",\n\"Copy row\": \"Kopier rad\",\n\"Paste row before\": \"Lim inn rad f\\u00f8r\",\n\"Paste row after\": \"Lim inn rad etter\",\n\"Insert column before\": \"Sett inn kolonne f\\u00f8r\",\n\"Insert column after\": \"Sett inn kolonne etter\",\n\"Delete column\": \"Slett kolonne\",\n\"Cols\": \"Kolonner\",\n\"Rows\": \"Rader\",\n\"Width\": \"Bredde\",\n\"Height\": \"H\\u00f8yde\",\n\"Cell spacing\": \"Celleavstand\",\n\"Cell padding\": \"Cellemarg\",\n\"Show caption\": \"Vis bildetekst\",\n\"Left\": \"Venstre\",\n\"Center\": \"Midtstilt\",\n\"Right\": \"H\\u00f8yre\",\n\"Cell type\": \"Celletype\",\n\"Scope\": \"Omfang\",\n\"Alignment\": \"Justering\",\n\"H Align\": \"H Justering\",\n\"V Align\": \"V Justering\",\n\"Top\": \"Topp\",\n\"Middle\": \"Midten\",\n\"Bottom\": \"Bunn\",\n\"Header cell\": \"Topptekst-celle\",\n\"Row group\": \"Radgruppe\",\n\"Column group\": \"Kolonnegruppe\",\n\"Row type\": \"Rad-type\",\n\"Header\": \"Topptekst\",\n\"Body\": \"Br\\u00f8dtekst\",\n\"Footer\": \"Bunntekst\",\n\"Border color\": \"Rammefarge\",\n\"Insert template...\": \"Sett inn mal..\",\n\"Templates\": \"Maler\",\n\"Template\": \"Mal\",\n\"Text color\": \"Tekstfarge\",\n\"Background color\": \"Bakgrunnsfarge\",\n\"Custom...\": \"Tilpass...\",\n\"Custom color\": \"Tilpasset farge\",\n\"No color\": \"Ingen farge\",\n\"Remove color\": \"Fjern farge\",\n\"Table of Contents\": \"Innholdsfortegnelse\",\n\"Show blocks\": \"Vis blokker\",\n\"Show invisible characters\": \"Vis skjulte tegn\",\n\"Word count\": \"Ordtelling\",\n\"Count\": \"Opptelling\",\n\"Document\": \"Dokument\",\n\"Selection\": \"Utvalg\",\n\"Words\": \"Ord\",\n\"Words: {0}\": \"Antall ord: {0}\",\n\"{0} words\": \"{0} ord\",\n\"File\": \"Arkiv\",\n\"Edit\": \"Rediger\",\n\"Insert\": \"Sett inn\",\n\"View\": \"Vis\",\n\"Format\": \"Format\",\n\"Table\": \"Tabell\",\n\"Tools\": \"Verkt\\u00f8y\",\n\"Powered by {0}\": \"Redigert med {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Tekstredigering. Tast ALT-F9 for meny. Tast ALT-F10 for verkt\\u00f8ys-rader. Tast ALT-0 for hjelp.\",\n\"Image title\": \"Bildetittel\",\n\"Border width\": \"Bordbredde\",\n\"Border style\": \"Bordstil\",\n\"Error\": \"Feil\",\n\"Warn\": \"Advarsel\",\n\"Valid\": \"Gyldig\",\n\"To open the popup, press Shift+Enter\": \"For \\u00e5 \\u00e5pne popup, trykk Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Rik-tekstomr\\u00e5de. Trykk ALT-0 for hjelp.\",\n\"System Font\": \"Systemfont\",\n\"Failed to upload image: {0}\": \"Opplasting av bilde feilet: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Kunne ikke laste tillegg: {0} from url {1}\",\n\"Failed to load plugin url: {0}\": \"Kunne ikke laste tillegg url: {0}\",\n\"Failed to initialize plugin: {0}\": \"Kunne ikke initialisere tillegg: {0}\",\n\"example\": \"eksempel\",\n\"Search\": \"S\\u00f8k\",\n\"All\": \"Alle\",\n\"Currency\": \"Valuta\",\n\"Text\": \"Tekst\",\n\"Quotations\": \"Sitater\",\n\"Mathematical\": \"Matematisk\",\n\"Extended Latin\": \"Utvidet latin\",\n\"Symbols\": \"Symboler\",\n\"Arrows\": \"Piler\",\n\"User Defined\": \"Brukerdefinert\",\n\"dollar sign\": \"dollartegn\",\n\"currency sign\": \"valutasymbol\",\n\"euro-currency sign\": \"Euro-valutasymbol\",\n\"colon sign\": \"kolon-symbol\",\n\"cruzeiro sign\": \"cruzeiro-symbol\",\n\"french franc sign\": \"franske franc-symbol\",\n\"lira sign\": \"lire-symbol\",\n\"mill sign\": \"mill-symbol\",\n\"naira sign\": \"naira-symbol\",\n\"peseta sign\": \"peseta-symbol\",\n\"rupee sign\": \"rupee-symbol\",\n\"won sign\": \"won-symbol\",\n\"new sheqel sign\": \"Ny sheqel-symbol\",\n\"dong sign\": \"dong-symbol\",\n\"kip sign\": \"kip-symbol\",\n\"tugrik sign\": \"tugrik-symbol\",\n\"drachma sign\": \"drachma-symbol\",\n\"german penny symbol\": \"tysk penny-symbol\",\n\"peso sign\": \"peso-symbol\",\n\"guarani sign\": \"quarani-symbol\",\n\"austral sign\": \"austral-symbol\",\n\"hryvnia sign\": \"hryvina-symbol\",\n\"cedi sign\": \"credi-symbol\",\n\"livre tournois sign\": \"livre tournois-symbol\",\n\"spesmilo sign\": \"spesmilo-symbol\",\n\"tenge sign\": \"tenge-symbol\",\n\"indian rupee sign\": \"indisk rupee-symbol\",\n\"turkish lira sign\": \"tyrkisk lire-symbol\",\n\"nordic mark sign\": \"nordisk mark-symbol\",\n\"manat sign\": \"manat-symbol\",\n\"ruble sign\": \"ruble-symbol\",\n\"yen character\": \"yen-symbol\",\n\"yuan character\": \"yuan-symbol\",\n\"yuan character, in hong kong and taiwan\": \"yuan-symbol, i Hongkong og Taiwan\",\n\"yen\\/yuan character variant one\": \"yen\\/yuan-symbol variant en\",\n\"Loading emoticons...\": \"Laster emoticons..\",\n\"Could not load emoticons\": \"Kunne ikke laste emoticons\",\n\"People\": \"Mennesker\",\n\"Animals and Nature\": \"Dyr og natur\",\n\"Food and Drink\": \"Mat og drikke\",\n\"Activity\": \"Aktivitet\",\n\"Travel and Places\": \"Reise og steder\",\n\"Objects\": \"Objekter\",\n\"Flags\": \"Flagg\",\n\"Characters\": \"Tegn\",\n\"Characters (no spaces)\": \"Tegn (uten mellomrom)\",\n\"{0} characters\": \"{0} tegn\",\n\"Error: Form submit field collision.\": \"Feil: Skjemafelt innsendingskollisjon.\",\n\"Error: No form element found.\": \"Feil: Intet skjemafelt funnet.\",\n\"Update\": \"Oppdater\",\n\"Color swatch\": \"Fargepalett\",\n\"Turquoise\": \"Turkis\",\n\"Green\": \"Gr\\u00f8nn\",\n\"Blue\": \"Bl\\u00e5\",\n\"Purple\": \"Lilla\",\n\"Navy Blue\": \"Marinebl\\u00e5\",\n\"Dark Turquoise\": \"M\\u00f8rk turkis\",\n\"Dark Green\": \"M\\u00f8rkegr\\u00f8nn\",\n\"Medium Blue\": \"Mellombl\\u00e5\",\n\"Medium Purple\": \"Medium lilla\",\n\"Midnight Blue\": \"Midnattbl\\u00e5\",\n\"Yellow\": \"Gul\",\n\"Orange\": \"Oransje\",\n\"Red\": \"R\\u00f8d\",\n\"Light Gray\": \"Lys gr\\u00e5\",\n\"Gray\": \"Gr\\u00e5\",\n\"Dark Yellow\": \"M\\u00f8rk gul\",\n\"Dark Orange\": \"M\\u00f8rk oransje\",\n\"Dark Red\": \"M\\u00f8rker\\u00f8d\",\n\"Medium Gray\": \"Medium gr\\u00e5\",\n\"Dark Gray\": \"M\\u00f8rk gr\\u00e5\",\n\"Light Green\": \"Lys gr\\u00f8nn\",\n\"Light Yellow\": \"Lys gul\",\n\"Light Red\": \"Lys r\\u00f8d\",\n\"Light Purple\": \"Lys lilla\",\n\"Light Blue\": \"Lys bl\\u00e5\",\n\"Dark Purple\": \"M\\u00f8rk lilla\",\n\"Dark Blue\": \"M\\u00f8rk bl\\u00e5\",\n\"Black\": \"Svart\",\n\"White\": \"Hvit\",\n\"Switch to or from fullscreen mode\": \"Bytt til eller fra fullskjermmodus\",\n\"Open help dialog\": \"\\u00c5pne hjelp-dialog\",\n\"history\": \"historikk\",\n\"styles\": \"stiler\",\n\"formatting\": \"formatering\",\n\"alignment\": \"justering\",\n\"indentation\": \"innrykk\",\n\"permanent pen\": \"permanent penn\",\n\"comments\": \"kommentarer\",\n\"Format Painter\": \"Kopier format\",\n\"Insert\\/edit iframe\": \"Sett inn \\/ rediger iframe\",\n\"Capitalization\": \"Store\\/sm\\u00e5 bokstaver\",\n\"lowercase\": \"sm\\u00e5 bokstaver\",\n\"UPPERCASE\": \"STORE BOKSTAVER\",\n\"Title Case\": \"Tittelbokstav\",\n\"Permanent Pen Properties\": \"Permanente egenskaper for penn\",\n\"Permanent pen properties...\": \"Permanente egenskaper for penn...\",\n\"Font\": \"Skrift\",\n\"Size\": \"St\\u00f8rrelse\",\n\"More...\": \"Mer...\",\n\"Spellcheck Language\": \"Stavekontroller spr\\u00e5k\",\n\"Select...\": \"Velg...\",\n\"Preferences\": \"Innstillinger\",\n\"Yes\": \"Ja\",\n\"No\": \"Nei\",\n\"Keyboard Navigation\": \"Navigering med tastaturet\",\n\"Version\": \"Versjon\",\n\"Anchor\": \"Anker\",\n\"Special character\": \"Spesialtegn\",\n\"Code sample\": \"Kodeeksempel\",\n\"Color\": \"Farge\",\n\"Emoticons\": \"Hum\\u00f8rfjes\",\n\"Document properties\": \"Dokumentegenskaper\",\n\"Image\": \"Bilde\",\n\"Insert link\": \"Sett inn lenke\",\n\"Target\": \"M\\u00e5l\",\n\"Link\": \"Lenke\",\n\"Poster\": \"Plakatbilde\",\n\"Media\": \"Media\",\n\"Print\": \"Skriv ut\",\n\"Prev\": \"Forrige\",\n\"Find and replace\": \"Finn og erstatt\",\n\"Whole words\": \"Hele ord\",\n\"Spellcheck\": \"Stavekontroll\",\n\"Caption\": \"Tittel\",\n\"Insert template\": \"Sett inn mal\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/nl.js",
    "content": "tinymce.addI18n('nl',{\n\"Redo\": \"Opnieuw uitvoeren\",\n\"Undo\": \"Ongedaan maken\",\n\"Cut\": \"Knippen\",\n\"Copy\": \"Kopi\\u00ebren\",\n\"Paste\": \"Plakken\",\n\"Select all\": \"Alles selecteren\",\n\"New document\": \"Nieuw document\",\n\"Ok\": \"OK\",\n\"Cancel\": \"Annuleren\",\n\"Visual aids\": \" Visuele hulpmiddelen\",\n\"Bold\": \"Vet\",\n\"Italic\": \"Cursief\",\n\"Underline\": \"Onderstrepen\",\n\"Strikethrough\": \"Doorhalen\",\n\"Superscript\": \"Superscript\",\n\"Subscript\": \"Subscript\",\n\"Clear formatting\": \"Opmaak wissen\",\n\"Align left\": \"Links uitlijnen\",\n\"Align center\": \"Centreren\",\n\"Align right\": \"Rechts uitlijnen\",\n\"Justify\": \"Uitvullen\",\n\"Bullet list\": \"Lijst met opsommingstekens\",\n\"Numbered list\": \"Genummerde lijst\",\n\"Decrease indent\": \"Inspringing verkleinen\",\n\"Increase indent\": \"Inspringing vergroten\",\n\"Close\": \"Sluiten\",\n\"Formats\": \"Opmaken\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Jouw browser ondersteunt geen rechtstreekse toegang tot het klembord. Gebruik in plaats daarvan de sneltoetsen Ctrl+X\\/C\\/V.\",\n\"Headers\": \"Kopteksten\",\n\"Header 1\": \"Koptekst 1\",\n\"Header 2\": \"Koptekst 2\",\n\"Header 3\": \"Koptekst 3\",\n\"Header 4\": \"Koptekst 4\",\n\"Header 5\": \"Koptekst 5\",\n\"Header 6\": \"Koptekst 6\",\n\"Headings\": \"Koppen\",\n\"Heading 1\": \"Kop 1\",\n\"Heading 2\": \"Kop 2\",\n\"Heading 3\": \"Kop 3\",\n\"Heading 4\": \"Kop 4\",\n\"Heading 5\": \"Kop 5\",\n\"Heading 6\": \"Kop 6\",\n\"Preformatted\": \"Vooraf opgemaakt\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Code\",\n\"Paragraph\": \"Alinea\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Inline\",\n\"Blocks\": \"Blokken\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Plakken gebeurt nu als platte tekst. Tekst wordt nu ingevoegd zonder opmaak tot deze optie uitgeschakeld wordt.\",\n\"Fonts\": \"Lettertypes\",\n\"Font Sizes\": \"Tekengroottes\",\n\"Class\": \"Klasse\",\n\"Browse for an image\": \"Afbeelding zoeken\",\n\"OR\": \"OF\",\n\"Drop an image here\": \"Hier een afbeelding neerzetten\",\n\"Upload\": \"Uploaden\",\n\"Block\": \"Blok\",\n\"Align\": \"Uitlijnen\",\n\"Default\": \"Standaard\",\n\"Circle\": \"Cirkel\",\n\"Disc\": \"Bolletje\",\n\"Square\": \"Vierkant\",\n\"Lower Alpha\": \"Kleine letters\",\n\"Lower Greek\": \"Griekse letters\",\n\"Lower Roman\": \"Romeinse cijfers klein\",\n\"Upper Alpha\": \"Hoofdletters\",\n\"Upper Roman\": \"Romeinse cijfers groot\",\n\"Anchor...\": \"Anker...\",\n\"Name\": \"Naam\",\n\"Id\": \"ID\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"ID moet beginnen met een letter, gevolgd door letters, nummers, streepjes, punten, dubbele punten of underscores.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"U hebt niet alles opgeslagen bent u zeker dat u de pagina wenst te verlaten?\",\n\"Restore last draft\": \"Herstel het laatste concept\",\n\"Special character...\": \"Speciaal teken...\",\n\"Source code\": \"Broncode\",\n\"Insert\\/Edit code sample\": \"Broncode invoegen\\/bewerken\",\n\"Language\": \"Programmeertaal\",\n\"Code sample...\": \"Codevoorbeeld...\",\n\"Color Picker\": \"Kleurenkiezer\",\n\"R\": \"Rood\",\n\"G\": \"Groen\",\n\"B\": \"Blauw\",\n\"Left to right\": \"Links naar rechts\",\n\"Right to left\": \"Rechts naar links\",\n\"Emoticons...\": \"Emoticons...\",\n\"Metadata and Document Properties\": \"Metadata en documenteigenschappen\",\n\"Title\": \"Titel\",\n\"Keywords\": \"Sleutelwoorden\",\n\"Description\": \"Omschrijving\",\n\"Robots\": \"Robots\",\n\"Author\": \"Auteur\",\n\"Encoding\": \"Codering\",\n\"Fullscreen\": \"Volledig scherm\",\n\"Action\": \"Actie\",\n\"Shortcut\": \"Snelkoppeling\",\n\"Help\": \"Help\",\n\"Address\": \"Adres\",\n\"Focus to menubar\": \"Menubalk selecteren\",\n\"Focus to toolbar\": \"Werkbalk selecteren\",\n\"Focus to element path\": \"Element pad selecteren\",\n\"Focus to contextual toolbar\": \"Contextuele werkbalk selecteren\",\n\"Insert link (if link plugin activated)\": \"Link invoegen (als link plug-in geactiveerd is)\",\n\"Save (if save plugin activated)\": \"Opslaan (als opslaan plug-in ingeschakeld is)\",\n\"Find (if searchreplace plugin activated)\": \"Zoeken (als zoeken\\/vervangen plug-in ingeschakeld is)\",\n\"Plugins installed ({0}):\": \"Plug-ins ge\\u00efnstalleerd ({0}):\",\n\"Premium plugins:\": \"Premium plug-ins:\",\n\"Learn more...\": \"Leer meer...\",\n\"You are using {0}\": \"Je gebruikt {0}\",\n\"Plugins\": \"Plug-ins\",\n\"Handy Shortcuts\": \"Handige snelkoppelingen\",\n\"Horizontal line\": \"Horizontale lijn\",\n\"Insert\\/edit image\": \"Afbeelding invoegen\\/bewerken\",\n\"Image description\": \"Afbeelding omschrijving\",\n\"Source\": \"Bron\",\n\"Dimensions\": \"Afmetingen\",\n\"Constrain proportions\": \"Verhoudingen behouden\",\n\"General\": \"Algemeen\",\n\"Advanced\": \"Geavanceerd\",\n\"Style\": \"Stijl\",\n\"Vertical space\": \"Verticale ruimte\",\n\"Horizontal space\": \"Horizontale ruimte\",\n\"Border\": \"Rand\",\n\"Insert image\": \"Afbeelding invoegen\",\n\"Image...\": \"Afbeelding...\",\n\"Image list\": \"Afbeeldingenlijst\",\n\"Rotate counterclockwise\": \"Linksom draaien\",\n\"Rotate clockwise\": \"Rechtsom draaien\",\n\"Flip vertically\": \"Verticaal spiegelen\",\n\"Flip horizontally\": \"Horizontaal spiegelen\",\n\"Edit image\": \"Bewerk afbeelding\",\n\"Image options\": \"Afbeelding opties\",\n\"Zoom in\": \"Inzoomen\",\n\"Zoom out\": \"Uitzoomen\",\n\"Crop\": \"Uitsnijden\",\n\"Resize\": \"Formaat aanpassen\",\n\"Orientation\": \"Orientatie\",\n\"Brightness\": \"Helderheid\",\n\"Sharpen\": \"Scherpte\",\n\"Contrast\": \"Contrast\",\n\"Color levels\": \"Kleurniveau's\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Omkeren\",\n\"Apply\": \"Toepassen\",\n\"Back\": \"Terug\",\n\"Insert date\\/time\": \"Voeg datum\\/tijd in\",\n\"Date\\/time\": \"Datum\\/tijd\",\n\"Insert\\/Edit Link\": \"Link invoegen\\/bewerken\",\n\"Insert\\/edit link\": \"Hyperlink invoegen\\/bewerken\",\n\"Text to display\": \"Linktekst\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Link openen in...\",\n\"Current window\": \"Huidige venster\",\n\"None\": \"Geen\",\n\"New window\": \"Nieuw venster\",\n\"Remove link\": \"Link verwijderen\",\n\"Anchors\": \"Anker\",\n\"Link...\": \"Link...\",\n\"Paste or type a link\": \"Plak of typ een link\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"De ingegeven URL lijkt op een e-mailadres. Wil je er \\\"mailto:\\\" aan toevoegen?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"De ingegeven URL verwijst naar een extern adres. Wil je er \\\"http:\\/\\/\\\" aan toevoegen?\",\n\"Link list\": \"Linklijst\",\n\"Insert video\": \"Video invoegen\",\n\"Insert\\/edit video\": \"Video invoegen\\/bewerken\",\n\"Insert\\/edit media\": \"Media invoegen\\/bewerken\",\n\"Alternative source\": \"Alternatieve bron\",\n\"Alternative source URL\": \"Alternatief bron-URL\",\n\"Media poster (Image URL)\": \"Mediaposter (afbeeldings-url)\",\n\"Paste your embed code below:\": \"Plak u in te sluiten code hieronder:\",\n\"Embed\": \"Insluiten\",\n\"Media...\": \"Media...\",\n\"Nonbreaking space\": \"Vaste spatie invoegen\",\n\"Page break\": \"Pagina einde\",\n\"Paste as text\": \"Plakken als tekst\",\n\"Preview\": \"Voorbeeld\",\n\"Print...\": \"Afdrukken... \",\n\"Save\": \"Opslaan\",\n\"Find\": \"Zoeken\",\n\"Replace with\": \"Vervangen door\",\n\"Replace\": \"Vervangen\",\n\"Replace all\": \"Alles vervangen\",\n\"Previous\": \"Vorige\",\n\"Next\": \"Volgende\",\n\"Find and replace...\": \"Zoeken en vervangen...\",\n\"Could not find the specified string.\": \"Geen resultaten gevonden\",\n\"Match case\": \"Identieke hoofd\\/kleine letters\",\n\"Find whole words only\": \"Alleen hele woorden zoeken\",\n\"Spell check\": \"Spellingscontrole\",\n\"Ignore\": \"Negeren\",\n\"Ignore all\": \"Alles negeren\",\n\"Finish\": \"Einde\",\n\"Add to Dictionary\": \"Toevoegen aan woordenlijst\",\n\"Insert table\": \"Tabel invoegen\",\n\"Table properties\": \"Tabel eigenschappen\",\n\"Delete table\": \"Verwijder tabel\",\n\"Cell\": \"Cel\",\n\"Row\": \"Rij\",\n\"Column\": \"Kolom\",\n\"Cell properties\": \"Cel eigenschappen\",\n\"Merge cells\": \"Cellen samenvoegen\",\n\"Split cell\": \"Cel splitsen\",\n\"Insert row before\": \"Voeg rij boven toe\",\n\"Insert row after\": \"Voeg rij onder toe\",\n\"Delete row\": \"Verwijder rij\",\n\"Row properties\": \"Rij eigenschappen\",\n\"Cut row\": \"Knip rij\",\n\"Copy row\": \"Kopieer rij\",\n\"Paste row before\": \"Plak rij boven\",\n\"Paste row after\": \"Plak rij onder\",\n\"Insert column before\": \"Voeg kolom in voor\",\n\"Insert column after\": \"Voeg kolom in na\",\n\"Delete column\": \"Verwijder kolom\",\n\"Cols\": \"Kolommen\",\n\"Rows\": \"Rijen\",\n\"Width\": \"Breedte\",\n\"Height\": \"Hoogte\",\n\"Cell spacing\": \"Celruimte\",\n\"Cell padding\": \"Ruimte binnen cel\",\n\"Show caption\": \"Bijschrift weergeven\",\n\"Left\": \"Links\",\n\"Center\": \"Midden\",\n\"Right\": \"Rechts\",\n\"Cell type\": \"Celtype\",\n\"Scope\": \"Bereik\",\n\"Alignment\": \"Uitlijning\",\n\"H Align\": \"Links uitlijnen\",\n\"V Align\": \"Boven uitlijnen\",\n\"Top\": \"Bovenaan\",\n\"Middle\": \"Centreren\",\n\"Bottom\": \"Onderaan\",\n\"Header cell\": \"Kopcel\",\n\"Row group\": \"Rijgroep\",\n\"Column group\": \"Kolomgroep\",\n\"Row type\": \"Rijtype\",\n\"Header\": \"Koptekst\",\n\"Body\": \"Body\",\n\"Footer\": \"Voettekst\",\n\"Border color\": \"Randkleur\",\n\"Insert template...\": \"Sjabloon invoegen...\",\n\"Templates\": \"Sjablonen\",\n\"Template\": \"Sjabloon\",\n\"Text color\": \"Tekstkleur\",\n\"Background color\": \"Achtergrondkleur\",\n\"Custom...\": \"Eigen...\",\n\"Custom color\": \"Eigen kleur\",\n\"No color\": \"Geen kleur\",\n\"Remove color\": \"Kleur verwijderen\",\n\"Table of Contents\": \"Inhoudsopgave\",\n\"Show blocks\": \"Blokken tonen\",\n\"Show invisible characters\": \"Onzichtbare karakters tonen\",\n\"Word count\": \"Aantal woorden\",\n\"Count\": \"Telling\",\n\"Document\": \"Document\",\n\"Selection\": \"Selectie\",\n\"Words\": \"Woorden\",\n\"Words: {0}\": \"Woorden: {0}\",\n\"{0} words\": \"{0} woorden\",\n\"File\": \"Bestand\",\n\"Edit\": \"Bewerken\",\n\"Insert\": \"Invoegen\",\n\"View\": \"Beeld\",\n\"Format\": \"Opmaak\",\n\"Table\": \"Tabel\",\n\"Tools\": \"Gereedschap\",\n\"Powered by {0}\": \"Gemaakt door {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Rich Text Area. Druk ALT-F9 voor het menu. Druk ALT-F10 voor de toolbar. Druk ALT-0 voor help.\",\n\"Image title\": \"Afbeeldingstitel\",\n\"Border width\": \"Randbreedte\",\n\"Border style\": \"Randstijl\",\n\"Error\": \"Fout\",\n\"Warn\": \"Waarschuwen\",\n\"Valid\": \"Geldig\",\n\"To open the popup, press Shift+Enter\": \"Druk op Shift+Enter om de pop-up te openen\",\n\"Rich Text Area. Press ALT-0 for help.\": \" Gebied met opgemaakte tekst. Druk op ALT-0 voor hulp.\",\n\"System Font\": \"Systeemlettertype\",\n\"Failed to upload image: {0}\": \"Niet gelukt om afbeelding te uploaden: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Niet gelukt om plug-in te laden: {0} vanaf URL {1}\",\n\"Failed to load plugin url: {0}\": \"Niet gelukt om URL plug-in te laden: {0}\",\n\"Failed to initialize plugin: {0}\": \"Niet gelukt om plug-in te initialiseren: {0}\",\n\"example\": \"voorbeeld\",\n\"Search\": \"Zoeken\",\n\"All\": \"Alle\",\n\"Currency\": \"Valuta\",\n\"Text\": \"Tekst\",\n\"Quotations\": \"Citaten\",\n\"Mathematical\": \"Wiskundig\",\n\"Extended Latin\": \"Latijn uitgebreid \",\n\"Symbols\": \"Symbolen\",\n\"Arrows\": \"Pijlen\",\n\"User Defined\": \"Door gebruiker gedefinieerd \",\n\"dollar sign\": \"dollarteken\",\n\"currency sign\": \"valutateken\",\n\"euro-currency sign\": \"euroteken\",\n\"colon sign\": \"colon-teken\",\n\"cruzeiro sign\": \"cruzeiro-teken\",\n\"french franc sign\": \"franse franc-teken\",\n\"lira sign\": \"lire-teken\",\n\"mill sign\": \"mill-teken\",\n\"naira sign\": \"naira-teken\",\n\"peseta sign\": \"peseta-teken\",\n\"rupee sign\": \"roepie-teken\",\n\"won sign\": \"won-teken\",\n\"new sheqel sign\": \"nieuwe sheqel-teken\",\n\"dong sign\": \"dong-teken\",\n\"kip sign\": \"kip-teken\",\n\"tugrik sign\": \"tugrik-teken\",\n\"drachma sign\": \"drachme-teken\",\n\"german penny symbol\": \"duitse pfennig-teken\",\n\"peso sign\": \"peso-teken\",\n\"guarani sign\": \"guarani-teken\",\n\"austral sign\": \"austral-teken\",\n\"hryvnia sign\": \"hryvnia-teken\",\n\"cedi sign\": \"cedi-teken\",\n\"livre tournois sign\": \"livre tournois-teken\",\n\"spesmilo sign\": \"spesmilo-teken\",\n\"tenge sign\": \"tenge-teken\",\n\"indian rupee sign\": \"indiaase roepie-teken\",\n\"turkish lira sign\": \"turkse lire-teken\",\n\"nordic mark sign\": \"noorse mark-teken\",\n\"manat sign\": \"manat-teken\",\n\"ruble sign\": \"roebel-teken\",\n\"yen character\": \"yen-teken\",\n\"yuan character\": \"yuan-teken\",\n\"yuan character, in hong kong and taiwan\": \"yuan-teken (Hong Kong en Taiwan)\",\n\"yen\\/yuan character variant one\": \"yen\\/yuan variant 1-teken\",\n\"Loading emoticons...\": \"Emoticons laden...\",\n\"Could not load emoticons\": \"Kan emoticons niet laden\",\n\"People\": \"Personen\",\n\"Animals and Nature\": \"Dieren en natuur\",\n\"Food and Drink\": \"Eten en drinken\",\n\"Activity\": \"Activiteit\",\n\"Travel and Places\": \"Reizen en plaatsen\",\n\"Objects\": \"Objecten\",\n\"Flags\": \"Vlaggen\",\n\"Characters\": \"Tekens\",\n\"Characters (no spaces)\": \"Tekens (geen spaties)\",\n\"{0} characters\": \"{0} karakters\",\n\"Error: Form submit field collision.\": \"Fout: Veldconflict bij versturen formulier.\",\n\"Error: No form element found.\": \"Fout: Geen formulierelement gevonden.\",\n\"Update\": \"Bijwerken\",\n\"Color swatch\": \"Kleurenwaaier\",\n\"Turquoise\": \"Turquoise\",\n\"Green\": \"Groen\",\n\"Blue\": \"Blauw\",\n\"Purple\": \"Paars\",\n\"Navy Blue\": \"Marineblauw\",\n\"Dark Turquoise\": \"Donkerturquoise\",\n\"Dark Green\": \"Donkergroen\",\n\"Medium Blue\": \"Middelblauw\",\n\"Medium Purple\": \"Middelpaars\",\n\"Midnight Blue\": \"Middernachtblauw\",\n\"Yellow\": \"Geel\",\n\"Orange\": \"Oranje\",\n\"Red\": \"Rood\",\n\"Light Gray\": \"Lichtgrijs\",\n\"Gray\": \"Grijs\",\n\"Dark Yellow\": \"Donkergeel\",\n\"Dark Orange\": \"Donkeroranje\",\n\"Dark Red\": \"Donkerrood\",\n\"Medium Gray\": \"Middelgrijs\",\n\"Dark Gray\": \"Donkergrijs\",\n\"Light Green\": \"Lichtgroen\",\n\"Light Yellow\": \"Lichtgeel\",\n\"Light Red\": \"Lichtrood\",\n\"Light Purple\": \"Lichtpaars\",\n\"Light Blue\": \"Lichtblauw\",\n\"Dark Purple\": \"Donkerpaars\",\n\"Dark Blue\": \"Donkerblauw\",\n\"Black\": \"Zwart\",\n\"White\": \"Wit\",\n\"Switch to or from fullscreen mode\": \"Overschakelen naar of vanuit de volledig scherm-modus\",\n\"Open help dialog\": \"Help-scherm openen\",\n\"history\": \"geschiedenis\",\n\"styles\": \"stijlen\",\n\"formatting\": \"opmaak\",\n\"alignment\": \"uitlijning\",\n\"indentation\": \"inspringing\",\n\"permanent pen\": \"permanent pen\",\n\"comments\": \"opmerkingen\",\n\"Format Painter\": \"Opmaak overnemen\",\n\"Insert\\/edit iframe\": \"Iframe toevoegen\\/aanpassen\",\n\"Capitalization\": \"Hoofdletter gebruik\",\n\"lowercase\": \"kleine letters\",\n\"UPPERCASE\": \"HOOFDLETTERS\",\n\"Title Case\": \"Titel hoofdletter gebruik\",\n\"Permanent Pen Properties\": \"Permantente Pen eigenschappen\",\n\"Permanent pen properties...\": \"Permantente pen eigenschappen...\",\n\"Font\": \"Lettertype\",\n\"Size\": \"Formaat\",\n\"More...\": \"Meer...\",\n\"Spellcheck Language\": \"Spellingscontrole taal\",\n\"Select...\": \"Selecteer...\",\n\"Preferences\": \"Voorkeuren\",\n\"Yes\": \"Ja\",\n\"No\": \"Nee\",\n\"Keyboard Navigation\": \"Toetsenbord navigatie\",\n\"Version\": \"Versie\",\n\"Anchor\": \"Anker\",\n\"Special character\": \"Speciale karakters\",\n\"Code sample\": \"Broncode voorbeeld\",\n\"Color\": \"Kleur\",\n\"Emoticons\": \"Emoticons\",\n\"Document properties\": \"Document eigenschappen\",\n\"Image\": \"Afbeelding\",\n\"Insert link\": \"Hyperlink invoegen\",\n\"Target\": \"Doel\",\n\"Link\": \"Link\",\n\"Poster\": \"Poster\",\n\"Media\": \"Media\",\n\"Print\": \"Print\",\n\"Prev\": \"Vorige\",\n\"Find and replace\": \"Zoek en vervang\",\n\"Whole words\": \"Alleen hele woorden\",\n\"Spellcheck\": \"Spellingscontrole\",\n\"Caption\": \"Onderschrift\",\n\"Insert template\": \"Sjabloon invoegen\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/pl.js",
    "content": "tinymce.addI18n('pl',{\n\"Redo\": \"Powt\\u00f3rz\",\n\"Undo\": \"Cofnij\",\n\"Cut\": \"Wytnij\",\n\"Copy\": \"Kopiuj\",\n\"Paste\": \"Wklej\",\n\"Select all\": \"Zaznacz wszystko\",\n\"New document\": \"Nowy dokument\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Anuluj\",\n\"Visual aids\": \"Pomoce wizualne\",\n\"Bold\": \"Pogrubienie\",\n\"Italic\": \"Kursywa\",\n\"Underline\": \"Podkre\\u015blenie\",\n\"Strikethrough\": \"Przekre\\u015blenie\",\n\"Superscript\": \"Indeks g\\u00f3rny\",\n\"Subscript\": \"Indeks dolny\",\n\"Clear formatting\": \"Wyczy\\u015b\\u0107 formatowanie\",\n\"Align left\": \"Wyr\\u00f3wnaj do lewej\",\n\"Align center\": \"Wyr\\u00f3wnaj do \\u015brodka\",\n\"Align right\": \"Wyr\\u00f3wnaj do prawej\",\n\"Justify\": \"Wyjustuj\",\n\"Bullet list\": \"Lista wypunktowana\",\n\"Numbered list\": \"Lista numerowana\",\n\"Decrease indent\": \"Zmniejsz wci\\u0119cie\",\n\"Increase indent\": \"Zwi\\u0119ksz wci\\u0119cie\",\n\"Close\": \"Zamknij\",\n\"Formats\": \"Formaty\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Twoja przegl\\u0105darka nie obs\\u0142uguje bezpo\\u015bredniego dost\\u0119pu do schowka. U\\u017cyj zamiast tego kombinacji klawiszy Ctrl+X\\/C\\/V.\",\n\"Headers\": \"Nag\\u0142\\u00f3wki\",\n\"Header 1\": \"Nag\\u0142\\u00f3wek 1\",\n\"Header 2\": \"Nag\\u0142\\u00f3wek 2\",\n\"Header 3\": \"Nag\\u0142\\u00f3wek 3\",\n\"Header 4\": \"Nag\\u0142\\u00f3wek 4\",\n\"Header 5\": \"Nag\\u0142\\u00f3wek 5\",\n\"Header 6\": \"Nag\\u0142\\u00f3wek 6\",\n\"Headings\": \"Nag\\u0142\\u00f3wki\",\n\"Heading 1\": \"Nag\\u0142\\u00f3wek 1\",\n\"Heading 2\": \"Nag\\u0142\\u00f3wek 2\",\n\"Heading 3\": \"Nag\\u0142\\u00f3wek 3\",\n\"Heading 4\": \"Nag\\u0142\\u00f3wek 4\",\n\"Heading 5\": \"Nag\\u0142\\u00f3wek 5\",\n\"Heading 6\": \"Nag\\u0142\\u00f3wek 6\",\n\"Preformatted\": \"Wst\\u0119pne formatowanie\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Kod\",\n\"Paragraph\": \"Akapit\",\n\"Blockquote\": \"Blok cytatu\",\n\"Inline\": \"W tek\\u015bcie\",\n\"Blocks\": \"Bloki\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Wklejanie jest w trybie tekstowym. Zawarto\\u015b\\u0107 zostanie wklejona jako zwyk\\u0142y tekst dop\\u00f3ki nie wy\\u0142\\u0105czysz tej opcji.\",\n\"Fonts\": \"Fonty\",\n\"Font Sizes\": \"Rozmiar fontu\",\n\"Class\": \"Klasa\",\n\"Browse for an image\": \"Przegl\\u0105daj za zdj\\u0119ciem\",\n\"OR\": \"LUB\",\n\"Drop an image here\": \"Upu\\u015b\\u0107 obraz tutaj\",\n\"Upload\": \"Prze\\u015blij\",\n\"Block\": \"Zablokuj\",\n\"Align\": \"Wyr\\u00f3wnaj\",\n\"Default\": \"Domy\\u015blne\",\n\"Circle\": \"K\\u00f3\\u0142ko\",\n\"Disc\": \"Dysk\",\n\"Square\": \"Kwadrat\",\n\"Lower Alpha\": \"Ma\\u0142e litery\",\n\"Lower Greek\": \"Ma\\u0142e greckie\",\n\"Lower Roman\": \"Ma\\u0142e rzymskie\",\n\"Upper Alpha\": \"Wielkie litery\",\n\"Upper Roman\": \"Wielkie rzymskie\",\n\"Anchor...\": \"Kotwica...\",\n\"Name\": \"Nazwa\",\n\"Id\": \"Identyfikator\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Identyfikator powinien zaczyna\\u0107 si\\u0119 liter\\u0105, dozwolone s\\u0105 tylko litery, numery, uko\\u015bniki, kropki, dwukropki i podkre\\u015blniki - tzw. pod\\u0142ogi\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Masz niezapisane zmiany. Czy na pewno chcesz opu\\u015bci\\u0107 stron\\u0119?\",\n\"Restore last draft\": \"Przywr\\u00f3\\u0107 ostatni szkic\",\n\"Special character...\": \"Znak specjalny...\",\n\"Source code\": \"Kod \\u017ar\\u00f3d\\u0142owy\",\n\"Insert\\/Edit code sample\": \"Dodaj\\/Edytuj przyk\\u0142adowy kod\",\n\"Language\": \"J\\u0119zyk\",\n\"Code sample...\": \"Przyk\\u0142ad kodu...\",\n\"Color Picker\": \"Selektor kolor\\u00f3w\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Od lewej do prawej\",\n\"Right to left\": \"Od prawej do lewej\",\n\"Emoticons...\": \"Emotikony...\",\n\"Metadata and Document Properties\": \"Metadane i w\\u0142a\\u015bciwo\\u015bci dokumentu\",\n\"Title\": \"Tytu\\u0142\",\n\"Keywords\": \"S\\u0142owa kluczowe\",\n\"Description\": \"Opis\",\n\"Robots\": \"Roboty\",\n\"Author\": \"Autor\",\n\"Encoding\": \"Kodowanie\",\n\"Fullscreen\": \"Pe\\u0142ny ekran\",\n\"Action\": \"Akcja\",\n\"Shortcut\": \"Skr\\u00f3t\",\n\"Help\": \"Pomoc\",\n\"Address\": \"Adres\",\n\"Focus to menubar\": \"Skup si\\u0119 na pasku menu\",\n\"Focus to toolbar\": \"Skupi\\u0107 si\\u0119 na pasku\",\n\"Focus to element path\": \"Skup si\\u0119 na \\u015bcie\\u017cce elementu\",\n\"Focus to contextual toolbar\": \"Skupi\\u0107 si\\u0119 na pasku narz\\u0119dzi kontekstowych\",\n\"Insert link (if link plugin activated)\": \"Wstaw \\u0142\\u0105cze (je\\u015bli w\\u0142\\u0105czysz wtyczk\\u0119 link\\u00f3w)\",\n\"Save (if save plugin activated)\": \"Zapisz (je\\u015bli aktywowana jest wtyczka do zapisu)\",\n\"Find (if searchreplace plugin activated)\": \"Znajd\\u017a (je\\u015bli w\\u0142\\u0105czysz wtyczk\\u0119 do wyszukiwania)\",\n\"Plugins installed ({0}):\": \"Zainstalowane wtyczki ({0}):\",\n\"Premium plugins:\": \"Wtyczki Premium:\",\n\"Learn more...\": \"Dowiedz si\\u0119 wi\\u0119cej...\",\n\"You are using {0}\": \"U\\u017cywasz {0}\",\n\"Plugins\": \"Pluginy\",\n\"Handy Shortcuts\": \"Przydatne skr\\u00f3ty\",\n\"Horizontal line\": \"Pozioma linia\",\n\"Insert\\/edit image\": \"Wstaw\\/edytuj obrazek\",\n\"Image description\": \"Opis obrazka\",\n\"Source\": \"\\u0179r\\u00f3d\\u0142o\",\n\"Dimensions\": \"Wymiary\",\n\"Constrain proportions\": \"Zachowaj proporcje\",\n\"General\": \"Og\\u00f3lne\",\n\"Advanced\": \"Zaawansowane\",\n\"Style\": \"Styl\",\n\"Vertical space\": \"Odst\\u0119p pionowy\",\n\"Horizontal space\": \"Odst\\u0119p poziomy\",\n\"Border\": \"Ramka\",\n\"Insert image\": \"Wstaw obrazek\",\n\"Image...\": \"Obraz...\",\n\"Image list\": \"Lista obrazk\\u00f3w\",\n\"Rotate counterclockwise\": \"Obr\\u00f3\\u0107 w lewo\",\n\"Rotate clockwise\": \"Obr\\u00f3\\u0107 w prawo\",\n\"Flip vertically\": \"Przerzu\\u0107 w pionie\",\n\"Flip horizontally\": \"Przerzu\\u0107 w poziomie\",\n\"Edit image\": \"Edytuj obrazek\",\n\"Image options\": \"Opcje obrazu\",\n\"Zoom in\": \"Powi\\u0119ksz\",\n\"Zoom out\": \"Pomniejsz\",\n\"Crop\": \"Przytnij\",\n\"Resize\": \"Zmiana rozmiaru\",\n\"Orientation\": \"Orientacja\",\n\"Brightness\": \"Jasno\\u015b\\u0107\",\n\"Sharpen\": \"Wyostrz\",\n\"Contrast\": \"Kontrast\",\n\"Color levels\": \"Poziom koloru\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Odwr\\u00f3\\u0107\",\n\"Apply\": \"Zaakceptuj\",\n\"Back\": \"Cofnij\",\n\"Insert date\\/time\": \"Wstaw dat\\u0119\\/czas\",\n\"Date\\/time\": \"Data\\/Czas\",\n\"Insert\\/Edit Link\": \"Wstaw\\/Edytuj \\u0142\\u0105cze\",\n\"Insert\\/edit link\": \"Wstaw\\/edytuj \\u0142\\u0105cze\",\n\"Text to display\": \"Tekst do wy\\u015bwietlenia\",\n\"Url\": \"URL\",\n\"Open link in...\": \"Otw\\u00f3rz \\u0142\\u0105cze w...\",\n\"Current window\": \"Bie\\u017c\\u0105ce okno\",\n\"None\": \"\\u017baden\",\n\"New window\": \"Nowe okno\",\n\"Remove link\": \"Usu\\u0144 \\u0142\\u0105cze\",\n\"Anchors\": \"Kotwice\",\n\"Link...\": \"\\u0141\\u0105cze...\",\n\"Paste or type a link\": \"Wklej lub wpisz adres \\u0142\\u0105cza\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"URL, kt\\u00f3ry wprowadzi\\u0142e\\u015b wygl\\u0105da na adres e-mail. Czy chcesz doda\\u0107 mailto: jako prefiks?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"URL, kt\\u00f3ry wprowadzi\\u0142e\\u015b wygl\\u0105da na link zewn\\u0119trzny. Czy chcesz doda\\u0107 http:\\/\\/ jako prefiks?\",\n\"Link list\": \"Lista link\\u00f3w\",\n\"Insert video\": \"Wstaw wideo\",\n\"Insert\\/edit video\": \"Wstaw\\/edytuj wideo\",\n\"Insert\\/edit media\": \"Wstaw\\/Edytuj media\",\n\"Alternative source\": \"Alternatywne \\u017ar\\u00f3d\\u0142o\",\n\"Alternative source URL\": \"Alternatywny URL \\u017ar\\u00f3d\\u0142a\",\n\"Media poster (Image URL)\": \"Plakat (URL obrazu)\",\n\"Paste your embed code below:\": \"Wklej tutaj kod do osadzenia:\",\n\"Embed\": \"Osad\\u017a\",\n\"Media...\": \"Multimedia...\",\n\"Nonbreaking space\": \"Nie\\u0142amliwa spacja\",\n\"Page break\": \"Podzia\\u0142 strony\",\n\"Paste as text\": \"Wklej jako zwyk\\u0142y tekst\",\n\"Preview\": \"Podgl\\u0105d\",\n\"Print...\": \"Drukuj...\",\n\"Save\": \"Zapisz\",\n\"Find\": \"Znajd\\u017a\",\n\"Replace with\": \"Zamie\\u0144 na\",\n\"Replace\": \"Zamie\\u0144\",\n\"Replace all\": \"Zamie\\u0144 wszystko\",\n\"Previous\": \"Poprzedni\",\n\"Next\": \"Nast.\",\n\"Find and replace...\": \"Znajd\\u017a i zamie\\u0144...\",\n\"Could not find the specified string.\": \"Nie znaleziono szukanego tekstu.\",\n\"Match case\": \"Dopasuj wielko\\u015b\\u0107 liter\",\n\"Find whole words only\": \"Znajd\\u017a tylko ca\\u0142e wyrazy\",\n\"Spell check\": \"Sprawd\\u017a pisowni\\u0119\",\n\"Ignore\": \"Ignoruj\",\n\"Ignore all\": \"Ignoruj wszystko\",\n\"Finish\": \"Zako\\u0144cz\",\n\"Add to Dictionary\": \"Dodaj do s\\u0142ownika\",\n\"Insert table\": \"Wstaw tabel\\u0119\",\n\"Table properties\": \"W\\u0142a\\u015bciwo\\u015bci tabeli\",\n\"Delete table\": \"Usu\\u0144 tabel\\u0119\",\n\"Cell\": \"Kom\\u00f3rka\",\n\"Row\": \"Wiersz\",\n\"Column\": \"Kolumna\",\n\"Cell properties\": \"W\\u0142a\\u015bciwo\\u015bci kom\\u00f3rki\",\n\"Merge cells\": \"\\u0141\\u0105cz kom\\u00f3rki\",\n\"Split cell\": \"Podziel kom\\u00f3rk\\u0119\",\n\"Insert row before\": \"Wstaw wiersz przed\",\n\"Insert row after\": \"Wstaw wiersz po\",\n\"Delete row\": \"Usu\\u0144 wiersz\",\n\"Row properties\": \"W\\u0142a\\u015bciwo\\u015bci wiersza\",\n\"Cut row\": \"Wytnij wiersz\",\n\"Copy row\": \"Kopiuj wiersz\",\n\"Paste row before\": \"Wklej wiersz przed\",\n\"Paste row after\": \"Wklej wiersz po\",\n\"Insert column before\": \"Wstaw kolumn\\u0119 przed\",\n\"Insert column after\": \"Wstaw kolumn\\u0119 po\",\n\"Delete column\": \"Usu\\u0144 kolumn\\u0119\",\n\"Cols\": \"Kol.\",\n\"Rows\": \"Wiersz.\",\n\"Width\": \"Szeroko\\u015b\\u0107\",\n\"Height\": \"Wysoko\\u015b\\u0107\",\n\"Cell spacing\": \"Odst\\u0119py kom\\u00f3rek\",\n\"Cell padding\": \"Dope\\u0142nienie kom\\u00f3rki\",\n\"Show caption\": \"Poka\\u017c podpis\",\n\"Left\": \"Lewo\",\n\"Center\": \"\\u015arodek\",\n\"Right\": \"Prawo\",\n\"Cell type\": \"Typ kom\\u00f3rki\",\n\"Scope\": \"Kontekst\",\n\"Alignment\": \"Wyr\\u00f3wnanie\",\n\"H Align\": \"Wyr\\u00f3wnanie w pionie\",\n\"V Align\": \"Wyr\\u00f3wnanie w poziomie\",\n\"Top\": \"G\\u00f3ra\",\n\"Middle\": \"\\u015arodek\",\n\"Bottom\": \"D\\u00f3\\u0142\",\n\"Header cell\": \"Kom\\u00f3rka nag\\u0142\\u00f3wka\",\n\"Row group\": \"Grupa wierszy\",\n\"Column group\": \"Grupa kolumn\",\n\"Row type\": \"Typ wiersza\",\n\"Header\": \"Nag\\u0142\\u00f3wek\",\n\"Body\": \"Tre\\u015b\\u0107\",\n\"Footer\": \"Stopka\",\n\"Border color\": \"Kolor ramki\",\n\"Insert template...\": \"Wstaw szablon...\",\n\"Templates\": \"Szablony\",\n\"Template\": \"Szablon\",\n\"Text color\": \"Kolor tekstu\",\n\"Background color\": \"Kolor t\\u0142a\",\n\"Custom...\": \"Niestandardowy...\",\n\"Custom color\": \"Kolor niestandardowy\",\n\"No color\": \"Bez koloru\",\n\"Remove color\": \"Usu\\u0144 kolor\",\n\"Table of Contents\": \"Spis tre\\u015bci\",\n\"Show blocks\": \"Poka\\u017c bloki\",\n\"Show invisible characters\": \"Poka\\u017c niewidoczne znaki\",\n\"Word count\": \"Liczba s\\u0142\\u00f3w\",\n\"Count\": \"Liczba\",\n\"Document\": \"Dokument\",\n\"Selection\": \"Zaznaczenie\",\n\"Words\": \"S\\u0142owa\",\n\"Words: {0}\": \"S\\u0142\\u00f3w: {0}\",\n\"{0} words\": \"{0} s\\u0142\\u00f3w\",\n\"File\": \"Plik\",\n\"Edit\": \"Edycja\",\n\"Insert\": \"Wstaw\",\n\"View\": \"Widok\",\n\"Format\": \"Format\",\n\"Table\": \"Tabela\",\n\"Tools\": \"Narz\\u0119dzia\",\n\"Powered by {0}\": \"Powered by {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Obszar Edycji. ALT-F9 - menu. ALT-F10 - pasek narz\\u0119dzi. ALT-0 - pomoc\",\n\"Image title\": \"Tytu\\u0142 obrazu\",\n\"Border width\": \"Grubo\\u015b\\u0107 ramki\",\n\"Border style\": \"Styl ramki\",\n\"Error\": \"B\\u0142\\u0105d\",\n\"Warn\": \"Ostrze\\u017cenie\",\n\"Valid\": \"Prawid\\u0142owe\",\n\"To open the popup, press Shift+Enter\": \"Aby otworzy\\u0107 okienko, naci\\u015bnij Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Obszar tekstu sformatowanego. Naci\\u015bnij ALT-0, aby uzyska\\u0107 pomoc.\",\n\"System Font\": \"Font systemowy\",\n\"Failed to upload image: {0}\": \"Nie uda\\u0142o si\\u0119 przes\\u0142a\\u0107 obrazu: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Nie uda\\u0142o si\\u0119 za\\u0142adowa\\u0107 dodatku: {0} spod adresu url {1}\",\n\"Failed to load plugin url: {0}\": \"Nie uda\\u0142o si\\u0119 za\\u0142adowa\\u0107 adresu url dodatku: {0}\",\n\"Failed to initialize plugin: {0}\": \"Nie mo\\u017cna zainicjowa\\u0107 dodatku: {0}\",\n\"example\": \"przyk\\u0142ad\",\n\"Search\": \"Wyszukaj\",\n\"All\": \"Wszystkie\",\n\"Currency\": \"Waluta\",\n\"Text\": \"Tekst\",\n\"Quotations\": \"Cudzys\\u0142owy\",\n\"Mathematical\": \"Matematyczne\",\n\"Extended Latin\": \"Rozszerzony \\u0142aci\\u0144ski\",\n\"Symbols\": \"Symbole\",\n\"Arrows\": \"Strza\\u0142ki\",\n\"User Defined\": \"W\\u0142asny\",\n\"dollar sign\": \"znak dolara\",\n\"currency sign\": \"znak waluty\",\n\"euro-currency sign\": \"znak euro\",\n\"colon sign\": \"znak colon\",\n\"cruzeiro sign\": \"znak cruzeiro\",\n\"french franc sign\": \"znak franka francuskiego\",\n\"lira sign\": \"znak liry\",\n\"mill sign\": \"znak mill\",\n\"naira sign\": \"znak nairy\",\n\"peseta sign\": \"znak pesety\",\n\"rupee sign\": \"znak rupii\",\n\"won sign\": \"znak wona\",\n\"new sheqel sign\": \"znak nowego szekla\",\n\"dong sign\": \"znak donga\",\n\"kip sign\": \"znak kipa\",\n\"tugrik sign\": \"znak tugrika\",\n\"drachma sign\": \"znak drachmy\",\n\"german penny symbol\": \"znak feniga\",\n\"peso sign\": \"znak peso\",\n\"guarani sign\": \"znak guarani\",\n\"austral sign\": \"znak australa\",\n\"hryvnia sign\": \"znak hrywny\",\n\"cedi sign\": \"znak cedi\",\n\"livre tournois sign\": \"znak livre tournois\",\n\"spesmilo sign\": \"znak spesmilo\",\n\"tenge sign\": \"znak tenge\",\n\"indian rupee sign\": \"znak rupii indyjskiej\",\n\"turkish lira sign\": \"znak liry tureckiej\",\n\"nordic mark sign\": \"znak nordic mark\",\n\"manat sign\": \"znak manata\",\n\"ruble sign\": \"znak rubla\",\n\"yen character\": \"znak jena\",\n\"yuan character\": \"znak juana\",\n\"yuan character, in hong kong and taiwan\": \"znak juana w Hongkongu i na Tajwanie\",\n\"yen\\/yuan character variant one\": \"jen\\/juan, wariant pierwszy\",\n\"Loading emoticons...\": \"\\u0141adowanie emotikon\\u00f3w...\",\n\"Could not load emoticons\": \"Nie mo\\u017cna za\\u0142adowa\\u0107 emotikon\\u00f3w\",\n\"People\": \"Ludzie\",\n\"Animals and Nature\": \"Zwierz\\u0119ta i natura\",\n\"Food and Drink\": \"Jedzenie i picie\",\n\"Activity\": \"Aktywno\\u015b\\u0107\",\n\"Travel and Places\": \"Podr\\u00f3\\u017ce i miejsca\",\n\"Objects\": \"Obiekty\",\n\"Flags\": \"Flagi\",\n\"Characters\": \"Znaki\",\n\"Characters (no spaces)\": \"Znaki (bez spacji)\",\n\"{0} characters\": \"{0} znak\\u00f3w\",\n\"Error: Form submit field collision.\": \"B\\u0142\\u0105d: kolizja pola przesy\\u0142ania formularza.\",\n\"Error: No form element found.\": \"B\\u0142\\u0105d: nie znaleziono elementu formularza.\",\n\"Update\": \"Aktualizuj\",\n\"Color swatch\": \"Pr\\u00f3bka koloru\",\n\"Turquoise\": \"Turkusowy\",\n\"Green\": \"Zielony\",\n\"Blue\": \"Niebieski\",\n\"Purple\": \"Purpurowy\",\n\"Navy Blue\": \"Ciemnoniebieski\",\n\"Dark Turquoise\": \"Ciemnoturkusowy\",\n\"Dark Green\": \"Ciemnozielony\",\n\"Medium Blue\": \"\\u015arednioniebieski\",\n\"Medium Purple\": \"\\u015aredniopurpurowy\",\n\"Midnight Blue\": \"Nocny b\\u0142\\u0119kit\",\n\"Yellow\": \"\\u017b\\u00f3\\u0142ty\",\n\"Orange\": \"Pomara\\u0144czowy\",\n\"Red\": \"Czerwony\",\n\"Light Gray\": \"Jasnoszary\",\n\"Gray\": \"Szary\",\n\"Dark Yellow\": \"Ciemno\\u017c\\u00f3\\u0142ty\",\n\"Dark Orange\": \"Ciemnopomara\\u0144czowy\",\n\"Dark Red\": \"Ciemnoczerwony\",\n\"Medium Gray\": \"\\u015arednioszary\",\n\"Dark Gray\": \"Ciemnoszary\",\n\"Light Green\": \"Jasnozielony\",\n\"Light Yellow\": \"Jasno\\u017c\\u00f3\\u0142ty\",\n\"Light Red\": \"Jasnoczerwony\",\n\"Light Purple\": \"Jasnopurpurowy\",\n\"Light Blue\": \"Jasnoniebieski\",\n\"Dark Purple\": \"Ciemnopurpurowy\",\n\"Dark Blue\": \"Ciemnoniebieski\",\n\"Black\": \"Czarny\",\n\"White\": \"Bia\\u0142y\",\n\"Switch to or from fullscreen mode\": \"W\\u0142\\u0105cz lub wy\\u0142\\u0105cz tryb pe\\u0142noekranowy\",\n\"Open help dialog\": \"Otw\\u00f3rz okno dialogowe pomocy\",\n\"history\": \"historia\",\n\"styles\": \"style\",\n\"formatting\": \"formatowanie\",\n\"alignment\": \"wyr\\u00f3wnanie\",\n\"indentation\": \"wci\\u0119cie\",\n\"permanent pen\": \"marker\",\n\"comments\": \"komentarze\",\n\"Format Painter\": \"Malarz format\\u00f3w\",\n\"Insert\\/edit iframe\": \"Wstaw\\/edytuj iframe\",\n\"Capitalization\": \"Jak w zdaniu\",\n\"lowercase\": \"ma\\u0142e litery\",\n\"UPPERCASE\": \"WIELKIE LITERY\",\n\"Title Case\": \"Jak Nazwy W\\u0142asne\",\n\"Permanent Pen Properties\": \"W\\u0142a\\u015bciwo\\u015bci markera\",\n\"Permanent pen properties...\": \"W\\u0142a\\u015bciwo\\u015bci markera...\",\n\"Font\": \"Font\",\n\"Size\": \"Rozmiar\",\n\"More...\": \"Wi\\u0119cej...\",\n\"Spellcheck Language\": \"J\\u0119zyk sprawdzania pisowni\",\n\"Select...\": \"Wybierz...\",\n\"Preferences\": \"Ustawienia\",\n\"Yes\": \"Tak\",\n\"No\": \"Nie\",\n\"Keyboard Navigation\": \"Nawigacja za pomoc\\u0105 klawiatury\",\n\"Version\": \"Wersja\",\n\"Anchor\": \"Kotwica\",\n\"Special character\": \"Znak specjalny\",\n\"Code sample\": \"Przyk\\u0142ad kodu \\u017ar\\u00f3d\\u0142owego\",\n\"Color\": \"Kolor\",\n\"Emoticons\": \"Ikony emocji\",\n\"Document properties\": \"W\\u0142a\\u015bciwo\\u015bci dokumentu\",\n\"Image\": \"Obraz\",\n\"Insert link\": \"Wstaw \\u0142\\u0105cze\",\n\"Target\": \"Cel\",\n\"Link\": \"Adres \\u0142\\u0105cza\",\n\"Poster\": \"Plakat\",\n\"Media\": \"Media\",\n\"Print\": \"Drukuj\",\n\"Prev\": \"Poprz.\",\n\"Find and replace\": \"Znajd\\u017a i zamie\\u0144\",\n\"Whole words\": \"Ca\\u0142e s\\u0142owa\",\n\"Spellcheck\": \"Sprawdzanie pisowni\",\n\"Caption\": \"Tytu\\u0142\",\n\"Insert template\": \"Wstaw szablon\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/pt_BR.js",
    "content": "tinymce.addI18n('pt_BR',{\n\"Redo\": \"Refazer\",\n\"Undo\": \"Desfazer\",\n\"Cut\": \"Cortar\",\n\"Copy\": \"Copiar\",\n\"Paste\": \"Colar\",\n\"Select all\": \"Selecionar tudo\",\n\"New document\": \"Novo documento\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Cancelar\",\n\"Visual aids\": \"Ajuda visual\",\n\"Bold\": \"Negrito\",\n\"Italic\": \"It\\u00e1lico\",\n\"Underline\": \"Sublinhado\",\n\"Strikethrough\": \"Tachado\",\n\"Superscript\": \"Sobrescrito\",\n\"Subscript\": \"Subscrito\",\n\"Clear formatting\": \"Limpar formata\\u00e7\\u00e3o\",\n\"Align left\": \"Alinhar \\u00e0 esquerda\",\n\"Align center\": \"Centralizar\",\n\"Align right\": \"Alinhar \\u00e0 direita\",\n\"Justify\": \"Justificar\",\n\"Bullet list\": \"Lista n\\u00e3o ordenada\",\n\"Numbered list\": \"Lista ordenada\",\n\"Decrease indent\": \"Diminuir recuo\",\n\"Increase indent\": \"Aumentar recuo\",\n\"Close\": \"Fechar\",\n\"Formats\": \"Formatos\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Seu navegador n\\u00e3o suporta acesso direto \\u00e0 \\u00e1rea de transfer\\u00eancia. Por favor use os atalhos Ctrl+X - C - V do teclado\",\n\"Headers\": \"Cabe\\u00e7alhos\",\n\"Header 1\": \"Cabe\\u00e7alho 1\",\n\"Header 2\": \"Cabe\\u00e7alho 2\",\n\"Header 3\": \"Cabe\\u00e7alho 3\",\n\"Header 4\": \"Cabe\\u00e7alho 4\",\n\"Header 5\": \"Cabe\\u00e7alho 5\",\n\"Header 6\": \"Cabe\\u00e7alho 6\",\n\"Headings\": \"T\\u00edtulos\",\n\"Heading 1\": \"T\\u00edtulo 1\",\n\"Heading 2\": \"T\\u00edtulo 2\",\n\"Heading 3\": \"T\\u00edtulo 3\",\n\"Heading 4\": \"T\\u00edtulo 4\",\n\"Heading 5\": \"T\\u00edtulo 5\",\n\"Heading 6\": \"T\\u00edtulo 6\",\n\"Preformatted\": \"Pr\\u00e9-formatado\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"C\\u00f3digo\",\n\"Paragraph\": \"Par\\u00e1grafo\",\n\"Blockquote\": \"Aspas\",\n\"Inline\": \"Em linha\",\n\"Blocks\": \"Blocos\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"O comando colar est\\u00e1 agora em modo texto plano. O conte\\u00fado ser\\u00e1 colado como texto plano at\\u00e9 voc\\u00ea desligar esta op\\u00e7\\u00e3o.\",\n\"Fonts\": \"Fontes\",\n\"Font Sizes\": \"Tamanhos da fonte\",\n\"Class\": \"Classe\",\n\"Browse for an image\": \"Procure uma imagem\",\n\"OR\": \"OU\",\n\"Drop an image here\": \"Solte uma imagem aqui\",\n\"Upload\": \"Carregar\",\n\"Block\": \"Bloco\",\n\"Align\": \"Alinhamento\",\n\"Default\": \"Padr\\u00e3o\",\n\"Circle\": \"C\\u00edrculo\",\n\"Disc\": \"Disco\",\n\"Square\": \"Quadrado\",\n\"Lower Alpha\": \"a. b. c. ...\",\n\"Lower Greek\": \"\\u03b1. \\u03b2. \\u03b3. ...\",\n\"Lower Roman\": \"i. ii. iii. ...\",\n\"Upper Alpha\": \"A. B. C. ...\",\n\"Upper Roman\": \"I. II. III. ...\",\n\"Anchor...\": \"\\u00c2ncora...\",\n\"Name\": \"Nome\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id deve come\\u00e7ar com uma letra, seguido apenas por letras, n\\u00fameros, tra\\u00e7os, pontos, dois pontos ou sublinhados.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Voc\\u00ea tem mudan\\u00e7as n\\u00e3o salvas. Voc\\u00ea tem certeza que deseja sair?\",\n\"Restore last draft\": \"Restaurar \\u00faltimo rascunho\",\n\"Special character...\": \"Caractere especial...\",\n\"Source code\": \"C\\u00f3digo fonte\",\n\"Insert\\/Edit code sample\": \"Inserir\\/Editar c\\u00f3digo de exemplo\",\n\"Language\": \"Idioma\",\n\"Code sample...\": \"Exemplo de c\\u00f3digo...\",\n\"Color Picker\": \"Seletor de Cores\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Da esquerda para a direita\",\n\"Right to left\": \"Da direita para a esquerda\",\n\"Emoticons...\": \"Emojis...\",\n\"Metadata and Document Properties\": \"Metadados e Propriedades do Documento\",\n\"Title\": \"T\\u00edtulo\",\n\"Keywords\": \"Palavras-chave\",\n\"Description\": \"Descri\\u00e7\\u00e3o\",\n\"Robots\": \"Rob\\u00f4s\",\n\"Author\": \"Autor\",\n\"Encoding\": \"Codifica\\u00e7\\u00e3o\",\n\"Fullscreen\": \"Tela cheia\",\n\"Action\": \"A\\u00e7\\u00e3o\",\n\"Shortcut\": \"Atalho\",\n\"Help\": \"Ajuda\",\n\"Address\": \"Endere\\u00e7o\",\n\"Focus to menubar\": \"Foco no menu\",\n\"Focus to toolbar\": \"Foco na barra de ferramentas\",\n\"Focus to element path\": \"Foco no caminho do elemento\",\n\"Focus to contextual toolbar\": \"Foco na barra de ferramentas contextual\",\n\"Insert link (if link plugin activated)\": \"Inserir link (se o plugin de link estiver ativado)\",\n\"Save (if save plugin activated)\": \"Salvar (se o plugin de salvar estiver ativado)\",\n\"Find (if searchreplace plugin activated)\": \"Procurar (se o plugin de procurar e substituir estiver ativado)\",\n\"Plugins installed ({0}):\": \"Plugins instalados ({0}):\",\n\"Premium plugins:\": \"Plugins premium:\",\n\"Learn more...\": \"Saiba mais...\",\n\"You are using {0}\": \"Voc\\u00ea est\\u00e1 usando {0}\",\n\"Plugins\": \"Plugins\",\n\"Handy Shortcuts\": \"Atalhos \\u00fateis\",\n\"Horizontal line\": \"Linha horizontal\",\n\"Insert\\/edit image\": \"Inserir\\/editar imagem\",\n\"Image description\": \"Inserir descri\\u00e7\\u00e3o\",\n\"Source\": \"Endere\\u00e7o da imagem\",\n\"Dimensions\": \"Dimens\\u00f5es\",\n\"Constrain proportions\": \"Manter propor\\u00e7\\u00f5es\",\n\"General\": \"Geral\",\n\"Advanced\": \"Avan\\u00e7ado\",\n\"Style\": \"Estilo\",\n\"Vertical space\": \"Espa\\u00e7amento vertical\",\n\"Horizontal space\": \"Espa\\u00e7amento horizontal\",\n\"Border\": \"Borda\",\n\"Insert image\": \"Inserir imagem\",\n\"Image...\": \"Imagem...\",\n\"Image list\": \"Lista de Imagens\",\n\"Rotate counterclockwise\": \"Girar em sentido hor\\u00e1rio\",\n\"Rotate clockwise\": \"Girar em sentido anti-hor\\u00e1rio\",\n\"Flip vertically\": \"Virar verticalmente\",\n\"Flip horizontally\": \"Virar horizontalmente\",\n\"Edit image\": \"Editar imagem\",\n\"Image options\": \"Op\\u00e7\\u00f5es de Imagem\",\n\"Zoom in\": \"Aumentar zoom\",\n\"Zoom out\": \"Diminuir zoom\",\n\"Crop\": \"Cortar\",\n\"Resize\": \"Redimensionar\",\n\"Orientation\": \"Orienta\\u00e7\\u00e3o\",\n\"Brightness\": \"Brilho\",\n\"Sharpen\": \"Aumentar nitidez\",\n\"Contrast\": \"Contraste\",\n\"Color levels\": \"N\\u00edveis de cor\",\n\"Gamma\": \"Gama\",\n\"Invert\": \"Inverter\",\n\"Apply\": \"Aplicar\",\n\"Back\": \"Voltar\",\n\"Insert date\\/time\": \"Inserir data\\/hora\",\n\"Date\\/time\": \"data\\/hora\",\n\"Insert\\/Edit Link\": \"Inserir\\/Editar Link\",\n\"Insert\\/edit link\": \"Inserir\\/editar link\",\n\"Text to display\": \"Texto para mostrar\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Abrir link em...\",\n\"Current window\": \"Janela atual\",\n\"None\": \"Nenhum\",\n\"New window\": \"Nova janela\",\n\"Remove link\": \"Remover link\",\n\"Anchors\": \"\\u00c2ncoras\",\n\"Link...\": \"Link...\",\n\"Paste or type a link\": \"Cole ou digite um Link\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"A URL que voc\\u00ea informou parece ser um link externo. Deseja incluir o prefixo http:\\/\\/?\",\n\"Link list\": \"Lista de Links\",\n\"Insert video\": \"Inserir v\\u00eddeo\",\n\"Insert\\/edit video\": \"Inserir\\/editar v\\u00eddeo\",\n\"Insert\\/edit media\": \"Inserir\\/editar imagem\",\n\"Alternative source\": \"Fonte alternativa\",\n\"Alternative source URL\": \"Endere\\u00e7o URL alternativo\",\n\"Media poster (Image URL)\": \"Post de m\\u00eddia (URL da Imagem)\",\n\"Paste your embed code below:\": \"Insira o c\\u00f3digo de incorpora\\u00e7\\u00e3o abaixo:\",\n\"Embed\": \"Incorporar\",\n\"Media...\": \"M\\u00eddia...\",\n\"Nonbreaking space\": \"Espa\\u00e7o n\\u00e3o separ\\u00e1vel\",\n\"Page break\": \"Quebra de p\\u00e1gina\",\n\"Paste as text\": \"Colar como texto\",\n\"Preview\": \"Pr\\u00e9-visualizar\",\n\"Print...\": \"Imprimir...\",\n\"Save\": \"Salvar\",\n\"Find\": \"Localizar\",\n\"Replace with\": \"Substituir por\",\n\"Replace\": \"Substituir\",\n\"Replace all\": \"Substituir tudo\",\n\"Previous\": \"Anterior\",\n\"Next\": \"Pr\\u00f3ximo\",\n\"Find and replace...\": \"Encontrar e substituir...\",\n\"Could not find the specified string.\": \"N\\u00e3o foi poss\\u00edvel encontrar o termo especificado\",\n\"Match case\": \"Diferenciar mai\\u00fasculas e min\\u00fasculas\",\n\"Find whole words only\": \"Encontrar somente palavras inteiras\",\n\"Spell check\": \"Verifica\\u00e7\\u00e3o ortogr\\u00e1fica\",\n\"Ignore\": \"Ignorar\",\n\"Ignore all\": \"Ignorar tudo\",\n\"Finish\": \"Finalizar\",\n\"Add to Dictionary\": \"Adicionar ao Dicion\\u00e1rio\",\n\"Insert table\": \"Inserir tabela\",\n\"Table properties\": \"Propriedades da tabela\",\n\"Delete table\": \"Excluir tabela\",\n\"Cell\": \"C\\u00e9lula\",\n\"Row\": \"Linha\",\n\"Column\": \"Coluna\",\n\"Cell properties\": \"Propriedades da c\\u00e9lula\",\n\"Merge cells\": \"Agrupar c\\u00e9lulas\",\n\"Split cell\": \"Dividir c\\u00e9lula\",\n\"Insert row before\": \"Inserir linha antes\",\n\"Insert row after\": \"Inserir linha depois\",\n\"Delete row\": \"Excluir linha\",\n\"Row properties\": \"Propriedades da linha\",\n\"Cut row\": \"Recortar linha\",\n\"Copy row\": \"Copiar linha\",\n\"Paste row before\": \"Colar linha antes\",\n\"Paste row after\": \"Colar linha depois\",\n\"Insert column before\": \"Inserir coluna antes\",\n\"Insert column after\": \"Inserir coluna depois\",\n\"Delete column\": \"Excluir coluna\",\n\"Cols\": \"Colunas\",\n\"Rows\": \"Linhas\",\n\"Width\": \"Largura\",\n\"Height\": \"Altura\",\n\"Cell spacing\": \"Espa\\u00e7amento da c\\u00e9lula\",\n\"Cell padding\": \"Espa\\u00e7amento interno da c\\u00e9lula\",\n\"Show caption\": \"Mostrar descri\\u00e7\\u00e3o\",\n\"Left\": \"Esquerdo\",\n\"Center\": \"Centro\",\n\"Right\": \"Direita\",\n\"Cell type\": \"Tipo de c\\u00e9lula\",\n\"Scope\": \"Escopo\",\n\"Alignment\": \"Alinhamento\",\n\"H Align\": \"Alinhamento H\",\n\"V Align\": \"Alinhamento V\",\n\"Top\": \"Superior\",\n\"Middle\": \"Meio\",\n\"Bottom\": \"Inferior\",\n\"Header cell\": \"C\\u00e9lula cabe\\u00e7alho\",\n\"Row group\": \"Agrupar linha\",\n\"Column group\": \"Agrupar coluna\",\n\"Row type\": \"Tipo de linha\",\n\"Header\": \"Cabe\\u00e7alho\",\n\"Body\": \"Corpo\",\n\"Footer\": \"Rodap\\u00e9\",\n\"Border color\": \"Cor da borda\",\n\"Insert template...\": \"Inserir modelo...\",\n\"Templates\": \"Modelos\",\n\"Template\": \"Modelo\",\n\"Text color\": \"Cor do texto\",\n\"Background color\": \"Cor do fundo\",\n\"Custom...\": \"Personalizado...\",\n\"Custom color\": \"Cor personalizada\",\n\"No color\": \"Nenhuma cor\",\n\"Remove color\": \"Remover cor\",\n\"Table of Contents\": \"\\u00edndice de Conte\\u00fado\",\n\"Show blocks\": \"Mostrar blocos\",\n\"Show invisible characters\": \"Exibir caracteres invis\\u00edveis\",\n\"Word count\": \"Contador de palavras\",\n\"Count\": \"Contar\",\n\"Document\": \"Documento\",\n\"Selection\": \"Sele\\u00e7\\u00e3o\",\n\"Words\": \"Palavras\",\n\"Words: {0}\": \"Palavras: {0}\",\n\"{0} words\": \"{0} palavras\",\n\"File\": \"Arquivo\",\n\"Edit\": \"Editar\",\n\"Insert\": \"Inserir\",\n\"View\": \"Visualizar\",\n\"Format\": \"Formatar\",\n\"Table\": \"Tabela\",\n\"Tools\": \"Ferramentas\",\n\"Powered by {0}\": \"Distribu\\u00eddo por  {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u00c1rea de texto formatado. Pressione ALT-F9 para exibir o menu, ALT-F10 para exibir a barra de ferramentas ou ALT-0 para exibir a ajuda\",\n\"Image title\": \"T\\u00edtulo da imagem\",\n\"Border width\": \"Espessura da borda\",\n\"Border style\": \"Estilo da borda\",\n\"Error\": \"Erro\",\n\"Warn\": \"Aviso\",\n\"Valid\": \"V\\u00e1lido\",\n\"To open the popup, press Shift+Enter\": \"Para abrir a popup, aperte Shit+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u00c1rea Rich Text. Aperte ALT-0 para ajuda.\",\n\"System Font\": \"Fonte do sistema\",\n\"Failed to upload image: {0}\": \"Falha no upload da imagem: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Falha ao carregar plugin: {0} da url {1}\",\n\"Failed to load plugin url: {0}\": \"Falha ao carregar url do plugin: {0}\",\n\"Failed to initialize plugin: {0}\": \"Falha ao inicializar plugin: {0}\",\n\"example\": \"exemplo\",\n\"Search\": \"Pesquisar\",\n\"All\": \"Tudo\",\n\"Currency\": \"Moeda\",\n\"Text\": \"Texto\",\n\"Quotations\": \"Cita\\u00e7\\u00f5es\",\n\"Mathematical\": \"Matem\\u00e1tico\",\n\"Extended Latin\": \"Latino estendido\",\n\"Symbols\": \"S\\u00edmbolos\",\n\"Arrows\": \"Setas\",\n\"User Defined\": \"Definido pelo Usu\\u00e1rio\",\n\"dollar sign\": \"s\\u00edmbolo de d\\u00f3lar\",\n\"currency sign\": \"s\\u00edmbolo de moeda\",\n\"euro-currency sign\": \"s\\u00edmbolo de euro\",\n\"colon sign\": \"s\\u00edmbolo de dois pontos\",\n\"cruzeiro sign\": \"s\\u00edmbolo de cruzeiro\",\n\"french franc sign\": \"s\\u00edmbolo de franco franc\\u00eas\",\n\"lira sign\": \"s\\u00edmbolo de lira\",\n\"mill sign\": \"s\\u00edmbolo do mill\",\n\"naira sign\": \"s\\u00edmbolo da naira\",\n\"peseta sign\": \"s\\u00edmbolo da peseta\",\n\"rupee sign\": \"s\\u00edmbolo da r\\u00fapia\",\n\"won sign\": \"s\\u00edmbolo do won\",\n\"new sheqel sign\": \"s\\u00edmbolo do novo sheqel\",\n\"dong sign\": \"s\\u00edmbolo do dong\",\n\"kip sign\": \"s\\u00edmbolo do kip\",\n\"tugrik sign\": \"s\\u00edmbolo do tugrik\",\n\"drachma sign\": \"s\\u00edmbolo do drachma\",\n\"german penny symbol\": \"s\\u00edmbolo de centavo alem\\u00e3o\",\n\"peso sign\": \"s\\u00edmbolo do peso\",\n\"guarani sign\": \"s\\u00edmbolo do guarani\",\n\"austral sign\": \"s\\u00edmbolo do austral\",\n\"hryvnia sign\": \"s\\u00edmbolo do hryvnia\",\n\"cedi sign\": \"s\\u00edmbolo do cedi\",\n\"livre tournois sign\": \"s\\u00edmbolo do livre tournois\",\n\"spesmilo sign\": \"s\\u00edmbolo do spesmilo\",\n\"tenge sign\": \"s\\u00edmbolo do tenge\",\n\"indian rupee sign\": \"s\\u00edmbolo de r\\u00fapia indiana\",\n\"turkish lira sign\": \"s\\u00edmbolo de lira turca\",\n\"nordic mark sign\": \"s\\u00edmbolo do marco n\\u00f3rdico\",\n\"manat sign\": \"s\\u00edmbolo do manat\",\n\"ruble sign\": \"s\\u00edmbolo do rublo\",\n\"yen character\": \"caractere do yen\",\n\"yuan character\": \"caractere do yuan\",\n\"yuan character, in hong kong and taiwan\": \"caractere do yuan, em Hong Kong e Taiwan\",\n\"yen\\/yuan character variant one\": \"varia\\u00e7\\u00e3o do caractere de yen\\/yuan\",\n\"Loading emoticons...\": \"Carregando emojis...\",\n\"Could not load emoticons\": \"N\\u00e3o foi poss\\u00edvel carregar emojis\",\n\"People\": \"Pessoas\",\n\"Animals and Nature\": \"Animais e Natureza\",\n\"Food and Drink\": \"Comida e Bebida\",\n\"Activity\": \"Atividade\",\n\"Travel and Places\": \"Viagem e Lugares\",\n\"Objects\": \"Objetos\",\n\"Flags\": \"Bandeiras\",\n\"Characters\": \"Caracteres\",\n\"Characters (no spaces)\": \"Caracteres (sem espa\\u00e7os)\",\n\"{0} characters\": \"{0} caracteres\",\n\"Error: Form submit field collision.\": \"Erro: colis\\u00e3o de bot\\u00e3o de envio do formul\\u00e1rio.\",\n\"Error: No form element found.\": \"Erro: elemento de formul\\u00e1rio n\\u00e3o encontrado.\",\n\"Update\": \"Atualizar\",\n\"Color swatch\": \"Amostra de cor\",\n\"Turquoise\": \"Turquesa\",\n\"Green\": \"Verde\",\n\"Blue\": \"Azul\",\n\"Purple\": \"Roxo\",\n\"Navy Blue\": \"Azul marinho\",\n\"Dark Turquoise\": \"Turquesa escuro\",\n\"Dark Green\": \"Verde escuro\",\n\"Medium Blue\": \"Azul m\\u00e9dio\",\n\"Medium Purple\": \"Roxo m\\u00e9dio\",\n\"Midnight Blue\": \"Azul meia-noite\",\n\"Yellow\": \"Amarelo\",\n\"Orange\": \"Laranja\",\n\"Red\": \"Vermelho\",\n\"Light Gray\": \"Cinza claro\",\n\"Gray\": \"Cinza\",\n\"Dark Yellow\": \"Amarelo escuro\",\n\"Dark Orange\": \"Laranja escuro\",\n\"Dark Red\": \"Vermelho escuro\",\n\"Medium Gray\": \"Cinza m\\u00e9dio\",\n\"Dark Gray\": \"Cinza escuro\",\n\"Light Green\": \"Verde claro\",\n\"Light Yellow\": \"Amarelo claro\",\n\"Light Red\": \"Vermelho claro\",\n\"Light Purple\": \"Roxo claro\",\n\"Light Blue\": \"Azul claro\",\n\"Dark Purple\": \"Roxo escuro\",\n\"Dark Blue\": \"Azul escuro\",\n\"Black\": \"Preto\",\n\"White\": \"Branco\",\n\"Switch to or from fullscreen mode\": \"Abrir ou fechar modo de tela cheia\",\n\"Open help dialog\": \"Abrir janela de ajuda\",\n\"history\": \"hist\\u00f3rico\",\n\"styles\": \"estilos\",\n\"formatting\": \"formata\\u00e7\\u00e3o\",\n\"alignment\": \"alinhamento\",\n\"indentation\": \"indenta\\u00e7\\u00e3o\",\n\"permanent pen\": \"caneta permanente\",\n\"comments\": \"coment\\u00e1rios\",\n\"Format Painter\": \"Pincel de Formata\\u00e7\\u00e3o\",\n\"Insert\\/edit iframe\": \"Inserir\\/editar iframe\",\n\"Capitalization\": \"Capitaliza\\u00e7\\u00e3o\",\n\"lowercase\": \"min\\u00fasculos\",\n\"UPPERCASE\": \"MAI\\u00daSCULAS\",\n\"Title Case\": \"T\\u00edtulo do caso\",\n\"Permanent Pen Properties\": \"Propriedades da caneta permanente\",\n\"Permanent pen properties...\": \"Propriedades de caneta permanentes...\",\n\"Font\": \"Fonte\",\n\"Size\": \"Tamanho\",\n\"More...\": \"Mais...\",\n\"Spellcheck Language\": \"Idioma de verifica\\u00e7\\u00e3o ortogr\\u00e1fica\",\n\"Select...\": \"Selecionar...\",\n\"Preferences\": \"Prefer\\u00eancias\",\n\"Yes\": \"Sim\",\n\"No\": \"N\\u00e3o\",\n\"Keyboard Navigation\": \"Navega\\u00e7\\u00e3o por Teclado\",\n\"Version\": \"Vers\\u00e3o\",\n\"Anchor\": \"\\u00c2ncora\",\n\"Special character\": \"Caracteres especiais\",\n\"Code sample\": \"Exemplo de c\\u00f3digo\",\n\"Color\": \"Cor\",\n\"Emoticons\": \"Emoticons\",\n\"Document properties\": \"Propriedades do documento\",\n\"Image\": \"Imagem\",\n\"Insert link\": \"Inserir link\",\n\"Target\": \"Alvo\",\n\"Link\": \"Link\",\n\"Poster\": \"Autor\",\n\"Media\": \"imagem\",\n\"Print\": \"Imprimir\",\n\"Prev\": \"Anterior\",\n\"Find and replace\": \"Localizar e substituir\",\n\"Whole words\": \"Palavras inteiras\",\n\"Spellcheck\": \"Corretor ortogr\\u00e1fico\",\n\"Caption\": \"Legenda\",\n\"Insert template\": \"Inserir modelo\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/pt_PT.js",
    "content": "tinymce.addI18n('pt_PT',{\n\"Redo\": \"Refazer\",\n\"Undo\": \"Anular\",\n\"Cut\": \"Cortar\",\n\"Copy\": \"Copiar\",\n\"Paste\": \"Colar\",\n\"Select all\": \"Selecionar tudo\",\n\"New document\": \"Novo documento\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Cancelar\",\n\"Visual aids\": \"Ajuda visual\",\n\"Bold\": \"Negrito\",\n\"Italic\": \"It\\u00e1lico\",\n\"Underline\": \"Sublinhado\",\n\"Strikethrough\": \"Rasurado\",\n\"Superscript\": \"Superior \\u00e0 linha\",\n\"Subscript\": \"Inferior \\u00e0 linha\",\n\"Clear formatting\": \"Limpar formata\\u00e7\\u00e3o\",\n\"Align left\": \"Alinhar \\u00e0 esquerda\",\n\"Align center\": \"Alinhar ao centro\",\n\"Align right\": \"Alinhar \\u00e0 direita\",\n\"Justify\": \"Justificar\",\n\"Bullet list\": \"Lista com marcas\",\n\"Numbered list\": \"Lista numerada\",\n\"Decrease indent\": \"Diminuir avan\\u00e7o\",\n\"Increase indent\": \"Aumentar avan\\u00e7o\",\n\"Close\": \"Fechar\",\n\"Formats\": \"Formatos\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"O seu navegador n\\u00e3o suporta acesso direto \\u00e0 \\u00e1rea de transfer\\u00eancia. Por favor, use os atalhos Ctrl+X\\/C\\/V do seu teclado.\",\n\"Headers\": \"Cabe\\u00e7alhos\",\n\"Header 1\": \"Cabe\\u00e7alho 1\",\n\"Header 2\": \"Cabe\\u00e7alho 2\",\n\"Header 3\": \"Cabe\\u00e7alho 3\",\n\"Header 4\": \"Cabe\\u00e7alho 4\",\n\"Header 5\": \"Cabe\\u00e7alho 5\",\n\"Header 6\": \"Cabe\\u00e7alho 6\",\n\"Headings\": \"T\\u00edtulos\",\n\"Heading 1\": \"T\\u00edtulo 1\",\n\"Heading 2\": \"T\\u00edtulo 2\",\n\"Heading 3\": \"T\\u00edtulo 3\",\n\"Heading 4\": \"T\\u00edtulo 4\",\n\"Heading 5\": \"T\\u00edtulo 5\",\n\"Heading 6\": \"T\\u00edtulo 6\",\n\"Preformatted\": \"Pr\\u00e9-formatado\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"C\\u00f3digo\",\n\"Paragraph\": \"Par\\u00e1grafo\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Inline\",\n\"Blocks\": \"Blocos\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"O comando colar est\\u00e1 em modo de texto simples. O conte\\u00fado ser\\u00e1 colado como texto simples at\\u00e9 desativar esta op\\u00e7\\u00e3o.\",\n\"Fonts\": \"Tipos de letra\",\n\"Font Sizes\": \"Tamanhos dos tipos de letra\",\n\"Class\": \"Classe\",\n\"Browse for an image\": \"Procurar uma imagem\",\n\"OR\": \"OU\",\n\"Drop an image here\": \"Largar aqui uma imagem\",\n\"Upload\": \"Carregar\",\n\"Block\": \"Bloco\",\n\"Align\": \"Alinhar\",\n\"Default\": \"Padr\\u00e3o\",\n\"Circle\": \"C\\u00edrculo\",\n\"Disc\": \"Disco\",\n\"Square\": \"Quadrado\",\n\"Lower Alpha\": \"a. b. c. ...\",\n\"Lower Greek\": \"\\\\u03b1. \\\\u03b2. \\\\u03b3. ...\",\n\"Lower Roman\": \"i. ii. iii. ...\",\n\"Upper Alpha\": \"A. B. C. ...\",\n\"Upper Roman\": \"I. II. III. ...\",\n\"Anchor...\": \"\\u00c2ncora...\",\n\"Name\": \"Nome\",\n\"Id\": \"ID\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"O ID deve come\\u00e7ar com uma letra, seguido apenas por letras, n\\u00fameros, pontos, dois pontos, tra\\u00e7os ou sobtra\\u00e7os.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Existem altera\\u00e7\\u00f5es que ainda n\\u00e3o foram guardadas. Tem a certeza que pretende sair?\",\n\"Restore last draft\": \"Restaurar o \\u00faltimo rascunho\",\n\"Special character...\": \"Car\\u00e1ter especial...\",\n\"Source code\": \"C\\u00f3digo fonte\",\n\"Insert\\/Edit code sample\": \"Inserir\\/editar amostra de c\\u00f3digo\",\n\"Language\": \"Idioma\",\n\"Code sample...\": \"Amostra de c\\u00f3digo...\",\n\"Color Picker\": \"Seletor de cores\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Da esquerda para a direita\",\n\"Right to left\": \"Da direita para a esquerda\",\n\"Emoticons...\": \"\\u00cdcones expressivos...\",\n\"Metadata and Document Properties\": \"Metadados e propriedades do documento\",\n\"Title\": \"T\\u00edtulo\",\n\"Keywords\": \"Palavras-chave\",\n\"Description\": \"Descri\\u00e7\\u00e3o\",\n\"Robots\": \"Rob\\u00f4s\",\n\"Author\": \"Autor\",\n\"Encoding\": \"Codifica\\u00e7\\u00e3o\",\n\"Fullscreen\": \"Ecr\\u00e3 completo\",\n\"Action\": \"A\\u00e7\\u00e3o\",\n\"Shortcut\": \"Atalho\",\n\"Help\": \"Ajuda\",\n\"Address\": \"Endere\\u00e7o\",\n\"Focus to menubar\": \"Foco na barra de menu\",\n\"Focus to toolbar\": \"Foco na barra de ferramentas\",\n\"Focus to element path\": \"Foco no caminho do elemento\",\n\"Focus to contextual toolbar\": \"Foco na barra de contexto\",\n\"Insert link (if link plugin activated)\": \"Inserir hiperliga\\u00e7\\u00e3o (se o plugin de liga\\u00e7\\u00f5es estiver ativado)\",\n\"Save (if save plugin activated)\": \"Guardar (se o plugin de guardar estiver ativado)\",\n\"Find (if searchreplace plugin activated)\": \"Pesquisar (se o plugin pesquisar e substituir estiver ativado)\",\n\"Plugins installed ({0}):\": \"Plugins instalados ({0}):\",\n\"Premium plugins:\": \"Plugins comerciais:\",\n\"Learn more...\": \"Saiba mais...\",\n\"You are using {0}\": \"Est\\u00e1 a usar {0}\",\n\"Plugins\": \"Plugins\",\n\"Handy Shortcuts\": \"Atalhos \\u00fateis\",\n\"Horizontal line\": \"Linha horizontal\",\n\"Insert\\/edit image\": \"Inserir\\/editar imagem\",\n\"Image description\": \"Descri\\u00e7\\u00e3o da imagem\",\n\"Source\": \"Localiza\\u00e7\\u00e3o\",\n\"Dimensions\": \"Dimens\\u00f5es\",\n\"Constrain proportions\": \"Manter propor\\u00e7\\u00f5es\",\n\"General\": \"Geral\",\n\"Advanced\": \"Avan\\u00e7ado\",\n\"Style\": \"Estilo\",\n\"Vertical space\": \"Espa\\u00e7amento vertical\",\n\"Horizontal space\": \"Espa\\u00e7amento horizontal\",\n\"Border\": \"Contorno\",\n\"Insert image\": \"Inserir imagem\",\n\"Image...\": \"Imagem...\",\n\"Image list\": \"Lista de imagens\",\n\"Rotate counterclockwise\": \"Rota\\u00e7\\u00e3o anti-hor\\u00e1ria\",\n\"Rotate clockwise\": \"Rota\\u00e7\\u00e3o hor\\u00e1ria\",\n\"Flip vertically\": \"Inverter verticalmente\",\n\"Flip horizontally\": \"Inverter horizontalmente\",\n\"Edit image\": \"Editar imagem\",\n\"Image options\": \"Op\\u00e7\\u00f5es de imagem\",\n\"Zoom in\": \"Mais zoom\",\n\"Zoom out\": \"Menos zoom\",\n\"Crop\": \"Recortar\",\n\"Resize\": \"Redimensionar\",\n\"Orientation\": \"Orienta\\u00e7\\u00e3o\",\n\"Brightness\": \"Brilho\",\n\"Sharpen\": \"Mais nitidez\",\n\"Contrast\": \"Contraste\",\n\"Color levels\": \"N\\u00edveis de cor\",\n\"Gamma\": \"Gama\",\n\"Invert\": \"Inverter\",\n\"Apply\": \"Aplicar\",\n\"Back\": \"Voltar\",\n\"Insert date\\/time\": \"Inserir data\\/hora\",\n\"Date\\/time\": \"Data\\/hora\",\n\"Insert\\/Edit Link\": \"Inserir\\/editar liga\\u00e7\\u00e3o\",\n\"Insert\\/edit link\": \"Inserir\\/editar liga\\u00e7\\u00e3o\",\n\"Text to display\": \"Texto a exibir\",\n\"Url\": \"URL\",\n\"Open link in...\": \"Abrir liga\\u00e7\\u00e3o em...\",\n\"Current window\": \"Janela atual\",\n\"None\": \"Nenhum\",\n\"New window\": \"Nova janela\",\n\"Remove link\": \"Remover liga\\u00e7\\u00e3o\",\n\"Anchors\": \"\\u00c2ncora\",\n\"Link...\": \"Liga\\u00e7\\u00e3o...\",\n\"Paste or type a link\": \"Copiar ou escrever uma hiperliga\\u00e7\\u00e3o\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"O URL que indicou parece ser um endere\\u00e7o de email. Quer adicionar o prefixo mailto: tal como necess\\u00e1rio?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"O URL que indicou parece ser um endere\\u00e7o web. Quer adicionar o prefixo http:\\/\\/ tal como necess\\u00e1rio?\",\n\"Link list\": \"Lista de liga\\u00e7\\u00f5es\",\n\"Insert video\": \"Inserir v\\u00eddeo\",\n\"Insert\\/edit video\": \"Inserir\\/editar v\\u00eddeo\",\n\"Insert\\/edit media\": \"Inserir\\/editar media\",\n\"Alternative source\": \"Localiza\\u00e7\\u00e3o alternativa\",\n\"Alternative source URL\": \"URL da origem alternativa\",\n\"Media poster (Image URL)\": \"Publicador de media (URL da imagem)\",\n\"Paste your embed code below:\": \"Colar c\\u00f3digo para embeber:\",\n\"Embed\": \"Embeber\",\n\"Media...\": \"Media...\",\n\"Nonbreaking space\": \"Espa\\u00e7o n\\u00e3o quebr\\u00e1vel\",\n\"Page break\": \"Quebra de p\\u00e1gina\",\n\"Paste as text\": \"Colar como texto\",\n\"Preview\": \"Pr\\u00e9-visualizar\",\n\"Print...\": \"Imprimir...\",\n\"Save\": \"Guardar\",\n\"Find\": \"Pesquisar\",\n\"Replace with\": \"Substituir por\",\n\"Replace\": \"Substituir\",\n\"Replace all\": \"Substituir tudo\",\n\"Previous\": \"Anterior\",\n\"Next\": \"Pr\\u00f3ximo\",\n\"Find and replace...\": \"Localizar e substituir...\",\n\"Could not find the specified string.\": \"N\\u00e3o foi poss\\u00edvel localizar o termo especificado.\",\n\"Match case\": \"Diferenciar mai\\u00fasculas e min\\u00fasculas\",\n\"Find whole words only\": \"Localizar apenas palavras inteiras\",\n\"Spell check\": \"Verifica\\u00e7\\u00e3o ortogr\\u00e1fica\",\n\"Ignore\": \"Ignorar\",\n\"Ignore all\": \"Ignorar tudo\",\n\"Finish\": \"Concluir\",\n\"Add to Dictionary\": \"Adicionar ao dicion\\u00e1rio\",\n\"Insert table\": \"Inserir tabela\",\n\"Table properties\": \"Propriedades da tabela\",\n\"Delete table\": \"Eliminar tabela\",\n\"Cell\": \"C\\u00e9lula\",\n\"Row\": \"Linha\",\n\"Column\": \"Coluna\",\n\"Cell properties\": \"Propriedades da c\\u00e9lula\",\n\"Merge cells\": \"Unir c\\u00e9lulas\",\n\"Split cell\": \"Dividir c\\u00e9lula\",\n\"Insert row before\": \"Inserir linha antes\",\n\"Insert row after\": \"Inserir linha depois\",\n\"Delete row\": \"Eliminar linha\",\n\"Row properties\": \"Propriedades da linha\",\n\"Cut row\": \"Cortar linha\",\n\"Copy row\": \"Copiar linha\",\n\"Paste row before\": \"Colar linha antes\",\n\"Paste row after\": \"Colar linha depois\",\n\"Insert column before\": \"Inserir coluna antes\",\n\"Insert column after\": \"Inserir coluna depois\",\n\"Delete column\": \"Eliminar coluna\",\n\"Cols\": \"Colunas\",\n\"Rows\": \"Linhas\",\n\"Width\": \"Largura\",\n\"Height\": \"Altura\",\n\"Cell spacing\": \"Espa\\u00e7amento entre c\\u00e9lulas\",\n\"Cell padding\": \"Espa\\u00e7amento interno da c\\u00e9lula\",\n\"Show caption\": \"Mostrar legenda\",\n\"Left\": \"Esquerda\",\n\"Center\": \"Centro\",\n\"Right\": \"Direita\",\n\"Cell type\": \"Tipo de c\\u00e9lula\",\n\"Scope\": \"Escopo\",\n\"Alignment\": \"Alinhamento\",\n\"H Align\": \"Alinhamento H\",\n\"V Align\": \"Alinhamento V\",\n\"Top\": \"Superior\",\n\"Middle\": \"Meio\",\n\"Bottom\": \"Inferior\",\n\"Header cell\": \"C\\u00e9lula de cabe\\u00e7alho\",\n\"Row group\": \"Agrupar linha\",\n\"Column group\": \"Agrupar coluna\",\n\"Row type\": \"Tipo de linha\",\n\"Header\": \"Cabe\\u00e7alho\",\n\"Body\": \"Corpo\",\n\"Footer\": \"Rodap\\u00e9\",\n\"Border color\": \"Cor de contorno\",\n\"Insert template...\": \"Inserir modelo...\",\n\"Templates\": \"Modelos\",\n\"Template\": \"Tema\",\n\"Text color\": \"Cor do texto\",\n\"Background color\": \"Cor de fundo\",\n\"Custom...\": \"Personalizada...\",\n\"Custom color\": \"Cor personalizada\",\n\"No color\": \"Sem cor\",\n\"Remove color\": \"Remover cor\",\n\"Table of Contents\": \"\\u00cdndice\",\n\"Show blocks\": \"Mostrar blocos\",\n\"Show invisible characters\": \"Mostrar caracteres invis\\u00edveis\",\n\"Word count\": \"Contagem de palavras\",\n\"Count\": \"Contagem\",\n\"Document\": \"Documento\",\n\"Selection\": \"Sele\\u00e7\\u00e3o\",\n\"Words\": \"Palavras\",\n\"Words: {0}\": \"Palavras: {0}\",\n\"{0} words\": \"{0} palavras\",\n\"File\": \"Ficheiro\",\n\"Edit\": \"Editar\",\n\"Insert\": \"Inserir\",\n\"View\": \"Ver\",\n\"Format\": \"Formatar\",\n\"Table\": \"Tabela\",\n\"Tools\": \"Ferramentas\",\n\"Powered by {0}\": \"Criado em {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Caixa de texto formatado. Pressione ALT-F9 para exibir o menu. Pressione ALT-F10 para exibir a barra de ferramentas. Pressione ALT-0 para exibir a ajuda\",\n\"Image title\": \"T\\u00edtulo da imagem\",\n\"Border width\": \"Largura do limite\",\n\"Border style\": \"Estilo do limite\",\n\"Error\": \"Erro\",\n\"Warn\": \"Aviso\",\n\"Valid\": \"V\\u00e1lido\",\n\"To open the popup, press Shift+Enter\": \"Para abrir o pop-up, prima Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u00c1rea de texto formatado. Prima ALT-0 para exibir a ajuda.\",\n\"System Font\": \"Tipo de letra do sistema\",\n\"Failed to upload image: {0}\": \"Falha ao carregar imagem: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Falha ao carregar plugin: {0} do URL {1}\",\n\"Failed to load plugin url: {0}\": \"Falha ao carregar o URL do plugin: {0}\",\n\"Failed to initialize plugin: {0}\": \"Falha ao inicializar plugin: {0}\",\n\"example\": \"exemplo\",\n\"Search\": \"Pesquisar\",\n\"All\": \"Tudo\",\n\"Currency\": \"Moeda\",\n\"Text\": \"Texto\",\n\"Quotations\": \"Aspas\",\n\"Mathematical\": \"Matem\\u00e1tico\",\n\"Extended Latin\": \"Carateres latinos estendidos\",\n\"Symbols\": \"S\\u00edmbolos\",\n\"Arrows\": \"Setas\",\n\"User Defined\": \"Definido pelo utilizador\",\n\"dollar sign\": \"cifr\\u00e3o\",\n\"currency sign\": \"sinal monet\\u00e1rio\",\n\"euro-currency sign\": \"sinal monet\\u00e1rio do euro\",\n\"colon sign\": \"sinal de dois pontos\",\n\"cruzeiro sign\": \"sinal de cruzeiro\",\n\"french franc sign\": \"sinal de franco franc\\u00eas\",\n\"lira sign\": \"sinal de lira\",\n\"mill sign\": \"sinal de por mil\",\n\"naira sign\": \"sinal de naira\",\n\"peseta sign\": \"sinal de peseta\",\n\"rupee sign\": \"sinal de r\\u00fapia\",\n\"won sign\": \"sinal de won\",\n\"new sheqel sign\": \"sinal de novo sheqel\",\n\"dong sign\": \"sinal de dong\",\n\"kip sign\": \"sinal kip\",\n\"tugrik sign\": \"sinal tugrik\",\n\"drachma sign\": \"sinal drachma\",\n\"german penny symbol\": \"sinal de penny alem\\u00e3o\",\n\"peso sign\": \"sinal de peso\",\n\"guarani sign\": \"sinal de guarani\",\n\"austral sign\": \"sinal de austral\",\n\"hryvnia sign\": \"sinal hryvnia\",\n\"cedi sign\": \"sinal de cedi\",\n\"livre tournois sign\": \"sinal de libra de tours\",\n\"spesmilo sign\": \"sinal de spesmilo\",\n\"tenge sign\": \"sinal de tengue\",\n\"indian rupee sign\": \"sinal de rupia indiana\",\n\"turkish lira sign\": \"sinal de lira turca\",\n\"nordic mark sign\": \"sinal de marca n\\u00f3rdica\",\n\"manat sign\": \"sinal manat\",\n\"ruble sign\": \"sinal de rublo\",\n\"yen character\": \"sinal de iene\",\n\"yuan character\": \"sinal de iuane\",\n\"yuan character, in hong kong and taiwan\": \"sinal de iuane, em Hong Kong e Taiwan\",\n\"yen\\/yuan character variant one\": \"variante um de sinal de iene\\/iuane\",\n\"Loading emoticons...\": \"A carregar \\u00edcones expressivos...\",\n\"Could not load emoticons\": \"N\\u00e3o foi poss\\u00edvel carregar \\u00edcones expressivos\",\n\"People\": \"Pessoas\",\n\"Animals and Nature\": \"Animais e natureza\",\n\"Food and Drink\": \"Comida e bebida\",\n\"Activity\": \"Atividade\",\n\"Travel and Places\": \"Viagens e lugares\",\n\"Objects\": \"Objetos\",\n\"Flags\": \"Bandeiras\",\n\"Characters\": \"Carateres\",\n\"Characters (no spaces)\": \"Carateres (sem espa\\u00e7os)\",\n\"{0} characters\": \"{0} carateres\",\n\"Error: Form submit field collision.\": \"Erro: conflito no campo de submiss\\u00e3o de formul\\u00e1rio.\",\n\"Error: No form element found.\": \"Erro: nenhum elemento de formul\\u00e1rio encontrado.\",\n\"Update\": \"Atualizar\",\n\"Color swatch\": \"Cole\\u00e7\\u00e3o de cores\",\n\"Turquoise\": \"Turquesa\",\n\"Green\": \"Verde\",\n\"Blue\": \"Azul\",\n\"Purple\": \"P\\u00farpura\",\n\"Navy Blue\": \"Azul-atl\\u00e2ntico\",\n\"Dark Turquoise\": \"Turquesa escuro\",\n\"Dark Green\": \"Verde escuro\",\n\"Medium Blue\": \"Azul interm\\u00e9dio\",\n\"Medium Purple\": \"P\\u00farpura interm\\u00e9dio\",\n\"Midnight Blue\": \"Azul muito escuro\",\n\"Yellow\": \"Amarelo\",\n\"Orange\": \"Laranja\",\n\"Red\": \"Vermelho\",\n\"Light Gray\": \"Cinzento claro\",\n\"Gray\": \"Cinzento\",\n\"Dark Yellow\": \"Amarelo escuro\",\n\"Dark Orange\": \"Laranja escuro\",\n\"Dark Red\": \"Vermelho escuro\",\n\"Medium Gray\": \"Cinzento m\\u00e9dio\",\n\"Dark Gray\": \"Cinzento escuro\",\n\"Light Green\": \"Verde claro\",\n\"Light Yellow\": \"Amarelo claro\",\n\"Light Red\": \"Vermelho claro\",\n\"Light Purple\": \"P\\u00farpura claro\",\n\"Light Blue\": \"Azul claro\",\n\"Dark Purple\": \"P\\u00farpura escuro\",\n\"Dark Blue\": \"Azul escuro\",\n\"Black\": \"Preto\",\n\"White\": \"Branco\",\n\"Switch to or from fullscreen mode\": \"Entrar ou sair do modo de ecr\\u00e3 inteiro\",\n\"Open help dialog\": \"Abrir caixa de di\\u00e1logo Ajuda\",\n\"history\": \"hist\\u00f3rico\",\n\"styles\": \"estilos\",\n\"formatting\": \"formata\\u00e7\\u00e3o\",\n\"alignment\": \"alinhamento\",\n\"indentation\": \"avan\\u00e7o\",\n\"permanent pen\": \"caneta permanente\",\n\"comments\": \"coment\\u00e1rios\",\n\"Format Painter\": \"Pincel de formata\\u00e7\\u00e3o\",\n\"Insert\\/edit iframe\": \"Inserir\\/editar iframe\",\n\"Capitalization\": \"Capitaliza\\u00e7\\u00e3o\",\n\"lowercase\": \"min\\u00fasculas\",\n\"UPPERCASE\": \"MAI\\u00daSCULAS\",\n\"Title Case\": \"Iniciais mai\\u00fasculas\",\n\"Permanent Pen Properties\": \"Propriedades da Caneta Permanente\",\n\"Permanent pen properties...\": \"Propriedades da caneta permanente...\",\n\"Font\": \"Tipo de letra\",\n\"Size\": \"Tamanho\",\n\"More...\": \"Mais...\",\n\"Spellcheck Language\": \"Idioma de verifica\\u00e7\\u00e3o lingu\\u00edstica\",\n\"Select...\": \"Selecionar...\",\n\"Preferences\": \"Prefer\\u00eancias\",\n\"Yes\": \"Sim\",\n\"No\": \"N\\u00e3o\",\n\"Keyboard Navigation\": \"Navega\\u00e7\\u00e3o com teclado\",\n\"Version\": \"Vers\\u00e3o\",\n\"Anchor\": \"\\u00c2ncora\",\n\"Special character\": \"Car\\u00e1cter especial\",\n\"Code sample\": \"Amostra de c\\u00f3digo\",\n\"Color\": \"Cor\",\n\"Emoticons\": \"Emo\\u00e7\\u00f5es\",\n\"Document properties\": \"Propriedades do documento\",\n\"Image\": \"Imagem\",\n\"Insert link\": \"Inserir liga\\u00e7\\u00e3o\",\n\"Target\": \"Alvo\",\n\"Link\": \"Liga\\u00e7\\u00e3o\",\n\"Poster\": \"Autor\",\n\"Media\": \"Media\",\n\"Print\": \"Imprimir\",\n\"Prev\": \"Anterior\",\n\"Find and replace\": \"Pesquisar e substituir\",\n\"Whole words\": \"Palavras completas\",\n\"Spellcheck\": \"Corretor ortogr\\u00e1fico\",\n\"Caption\": \"Legenda\",\n\"Insert template\": \"Inserir modelo\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/readme.md",
    "content": "This is where language files should be placed.\n\nPlease DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/ro.js",
    "content": "tinymce.addI18n('ro',{\n\"Redo\": \"Refacere\",\n\"Undo\": \"Anulare\",\n\"Cut\": \"Decupare\",\n\"Copy\": \"Copiere\",\n\"Paste\": \"Lipire\",\n\"Select all\": \"Selecteaz\\u0103 tot\",\n\"New document\": \"Document nou\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Revocare\",\n\"Visual aids\": \"Ajutoare vizuale\",\n\"Bold\": \"Aldin\",\n\"Italic\": \"Cursiv\",\n\"Underline\": \"Subliniere\",\n\"Strikethrough\": \"T\\u0103iere\",\n\"Superscript\": \"Exponent\",\n\"Subscript\": \"Indice\",\n\"Clear formatting\": \"\\u00cendep\\u0103rtare formatare\",\n\"Align left\": \"Aliniere st\\u00e2nga\",\n\"Align center\": \"Aliniere centru\",\n\"Align right\": \"Aliniere dreapta\",\n\"Justify\": \"Aliniere st\\u00e2nga-dreapta\",\n\"Bullet list\": \"List\\u0103 marcatori\",\n\"Numbered list\": \"List\\u0103 numerotat\\u0103\",\n\"Decrease indent\": \"Mic\\u0219orare indent\",\n\"Increase indent\": \"M\\u0103rire indent\",\n\"Close\": \"\\u00cenchidere\",\n\"Formats\": \"Formate\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Browser-ul dumneavoastr\\u0103 nu are acces direct la clipboard. V\\u0103 rug\\u0103m s\\u0103 folosi\\u021bi \\u00een schimb scurt\\u0103turile de tastatur\\u0103 Ctrl+X\\/C\\/V.\",\n\"Headers\": \"Antete\",\n\"Header 1\": \"Antet 1\",\n\"Header 2\": \"Antet 2\",\n\"Header 3\": \"Antet 3\",\n\"Header 4\": \"Antet 4\",\n\"Header 5\": \"Antet 5\",\n\"Header 6\": \"Antet 6\",\n\"Headings\": \"Rubrici\",\n\"Heading 1\": \"Titlu 1\",\n\"Heading 2\": \"Titlu 2\",\n\"Heading 3\": \"Titlu 3\",\n\"Heading 4\": \"Titlu 4\",\n\"Heading 5\": \"Titlu 5\",\n\"Heading 6\": \"Titlu 6\",\n\"Preformatted\": \"Preformatat\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Cod\",\n\"Paragraph\": \"Paragraf\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"\\u00cen linie\",\n\"Blocks\": \"Blocuri\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Functia \\\"lipe\\u015fte\\\" este acum \\u00een modul text simplu. Continutul va fi acum inserat ca text simplu p\\u00e2n\\u0103 c\\u00e2nd aceast\\u0103 op\\u021biune va fi dezactivat.\",\n\"Fonts\": \"Fonturi\",\n\"Font Sizes\": \"Dimensiuni font\",\n\"Class\": \"Clas\\u0103\",\n\"Browse for an image\": \"C\\u0103uta\\u021bi o imagine\",\n\"OR\": \"OR\",\n\"Drop an image here\": \"Glisa\\u021bi o imagine aici\",\n\"Upload\": \"\\u00cenc\\u0103rcare\",\n\"Block\": \"Sec\\u021biune\",\n\"Align\": \"Aliniere\",\n\"Default\": \"Implicit\",\n\"Circle\": \"Cerc\",\n\"Disc\": \"Disc\",\n\"Square\": \"P\\u0103trat\",\n\"Lower Alpha\": \"Minuscule Alfanumerice\",\n\"Lower Greek\": \"Minuscule Grecesti\",\n\"Lower Roman\": \"Minuscule Romane\",\n\"Upper Alpha\": \"Majuscule Alfanumerice\",\n\"Upper Roman\": \"Majuscule Romane\",\n\"Anchor...\": \"Ancor\\u0103\\u2026\",\n\"Name\": \"Nume\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id-ul trebuie s\\u0103 inceap\\u0103 cu o liter\\u0103, urmat\\u0103 exclusiv de litere, numere, cratime, puncte, punct \\u0219i virgul\\u0103 sau underscore-uri.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Ave\\u021bi modific\\u0103ri nesalvate! Sunte\\u0163i sigur c\\u0103 dori\\u0163i s\\u0103 ie\\u015fiti?\",\n\"Restore last draft\": \"Restaurare la ultima salvare\",\n\"Special character...\": \"Caracter special\\u2026\",\n\"Source code\": \"Codul surs\\u0103\",\n\"Insert\\/Edit code sample\": \"Inserare\\/Editare mostr\\u0103 cod\",\n\"Language\": \"Limba\",\n\"Code sample...\": \"Mostr\\u0103 cod\\u2026\",\n\"Color Picker\": \"Selector culori\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"St\\u00e2nga la dreapta\",\n\"Right to left\": \"Dreapta la st\\u00e2nga\",\n\"Emoticons...\": \"Emoticoane\\u2026\",\n\"Metadata and Document Properties\": \"Meta date \\u0219i Propriet\\u0103\\u021bi Document\",\n\"Title\": \"Titlu\",\n\"Keywords\": \"Cuvinte cheie\",\n\"Description\": \"Descriere\",\n\"Robots\": \"Robo\\u021bi\",\n\"Author\": \"Autor\",\n\"Encoding\": \"Codare\",\n\"Fullscreen\": \"Pe tot ecranul\",\n\"Action\": \"Ac\\u0163iune\",\n\"Shortcut\": \"Comand\\u0103 rapid\\u0103\",\n\"Help\": \"Ajutor\",\n\"Address\": \"Adres\\u0103\",\n\"Focus to menubar\": \"Centrare pe bara de meniuri\",\n\"Focus to toolbar\": \"Centrare pe bara de unelte\",\n\"Focus to element path\": \"Centrare pe calea elementului\",\n\"Focus to contextual toolbar\": \"Centrare pe bara de unelte contextual\\u0103\",\n\"Insert link (if link plugin activated)\": \"Inserare link (dac\\u0103 modulul de link-uri este activat)\",\n\"Save (if save plugin activated)\": \"Salvare (dac\\u0103 modulul de salvare este activat)\",\n\"Find (if searchreplace plugin activated)\": \"C\\u0103utare (dac\\u0103 modulul de c\\u0103utare \\u0219i \\u00eenlocuire este activat)\",\n\"Plugins installed ({0}):\": \"Module instalate ({0}):\",\n\"Premium plugins:\": \"Module premium:\",\n\"Learn more...\": \"Afla\\u021bi mai multe\\u2026\",\n\"You are using {0}\": \"Folosi\\u021bi {0}\",\n\"Plugins\": \"Inserturi\",\n\"Handy Shortcuts\": \"Comenzi rapide accesibile\",\n\"Horizontal line\": \"Linie orizontal\\u0103\",\n\"Insert\\/edit image\": \"Inserare\\/editarea imaginilor\",\n\"Image description\": \"Descrierea imaginii\",\n\"Source\": \"Surs\\u0103\",\n\"Dimensions\": \"Dimensiuni\",\n\"Constrain proportions\": \"Constr\\u00e2nge propor\\u021biile\",\n\"General\": \"General\",\n\"Advanced\": \"Avansat\",\n\"Style\": \"Stil\",\n\"Vertical space\": \"Spa\\u021biul vertical\",\n\"Horizontal space\": \"Spa\\u021biul orizontal\",\n\"Border\": \"Bordur\\u0103\",\n\"Insert image\": \"Inserare imagine\",\n\"Image...\": \"Imagine\\u2026\",\n\"Image list\": \"List\\u0103 de imagini\",\n\"Rotate counterclockwise\": \"Rotire \\u00een sensul antiorar\",\n\"Rotate clockwise\": \"Rotire \\u00een sensul orar\",\n\"Flip vertically\": \"R\\u0103sturn\\u0103 vertical\",\n\"Flip horizontally\": \"R\\u0103sturn\\u0103 orizontal\",\n\"Edit image\": \"Editare imagine\",\n\"Image options\": \"Op\\u021biuni imagine\",\n\"Zoom in\": \"M\\u0103rire\",\n\"Zoom out\": \"Mic\\u015forare\",\n\"Crop\": \"Decupare\",\n\"Resize\": \"Redimensionare\",\n\"Orientation\": \"Orientare\",\n\"Brightness\": \"Str\\u0103lucire\",\n\"Sharpen\": \"Accentuare\",\n\"Contrast\": \"Contrast\",\n\"Color levels\": \"Niveluri de culoare\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Invers\\u0103\",\n\"Apply\": \"Salveaz\\u0103\",\n\"Back\": \"\\u00cenapoi\",\n\"Insert date\\/time\": \"Insereaz\\u0103 data\\/ora\",\n\"Date\\/time\": \"Data\\/ora\",\n\"Insert\\/Edit Link\": \"Inserare\\/Editare link\",\n\"Insert\\/edit link\": \"Inserare\\/editare link\",\n\"Text to display\": \"Text de afi\\u0219at\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Deschide link \\u00een\\u2026\",\n\"Current window\": \"Fereastra curent\\u0103\",\n\"None\": \"Nici unul\",\n\"New window\": \"Fereastr\\u0103 nou\\u0103\",\n\"Remove link\": \"\\u0218terge link-ul\",\n\"Anchors\": \"Ancor\\u0103\",\n\"Link...\": \"Link\\u2026\",\n\"Paste or type a link\": \"Introduce\\u021bi un link\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"URL-ul introdus pare s\\u0103 fie o adres\\u0103 de e-mail. Dori\\u021bi s\\u0103 ad\\u0103uga\\u021bi prefixul mailto: ?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"URL-ul introdus pare s\\u0103 fie o adres\\u0103 web. Dori\\u021bi s\\u0103 ad\\u0103uga\\u021bi prefixul http:\\/\\/ ?\",\n\"Link list\": \"List\\u0103 linkuri\",\n\"Insert video\": \"Inserare video\",\n\"Insert\\/edit video\": \"Inserare\\/editare video\",\n\"Insert\\/edit media\": \"Inserare\\/editare media\",\n\"Alternative source\": \"Surs\\u0103 alternativ\\u0103\",\n\"Alternative source URL\": \"URL surs\\u0103 alternativ\\u0103\",\n\"Media poster (Image URL)\": \"Poster media (URL imagine)\",\n\"Paste your embed code below:\": \"Insera\\u021bi codul:\",\n\"Embed\": \"Embed\",\n\"Media...\": \"Media\\u2026\",\n\"Nonbreaking space\": \"Spa\\u021biu neseparator\",\n\"Page break\": \"\\u00centrerupere de pagin\\u0103\",\n\"Paste as text\": \"Lipe\\u015fte ca text\",\n\"Preview\": \"Previzualizare\",\n\"Print...\": \"Tip\\u0103rire\\u2026\",\n\"Save\": \"Salveaz\\u0103\",\n\"Find\": \"Caut\\u0103\",\n\"Replace with\": \"\\u00cenlocuie\\u015fte cu\",\n\"Replace\": \"\\u00cenlocuie\\u015fte\",\n\"Replace all\": \"\\u00cenlocuie\\u015fte toate\",\n\"Previous\": \"Anterior\",\n\"Next\": \"Precedent\",\n\"Find and replace...\": \"C\\u0103utare \\u0219i \\u00eenlocuire\\u2026\",\n\"Could not find the specified string.\": \"Nu am putut g\\u0103si \\u0219irul specificat.\",\n\"Match case\": \"Distinge majuscule\\/minuscule\",\n\"Find whole words only\": \"G\\u0103se\\u0219te doar cuvintele \\u00eentregi\",\n\"Spell check\": \"Verificare ortografic\\u0103\",\n\"Ignore\": \"Ignor\\u0103\",\n\"Ignore all\": \"Ignor\\u0103 toate\",\n\"Finish\": \"Finalizeaz\\u0103\",\n\"Add to Dictionary\": \"Adaug\\u0103 \\u00een Dic\\u021bionar\",\n\"Insert table\": \"Insereaz\\u0103 tabel\\u0103\",\n\"Table properties\": \"Propriet\\u0103\\u021bi tabel\\u0103\",\n\"Delete table\": \"\\u0218terge tabel\\u0103\",\n\"Cell\": \"Celul\\u0103\",\n\"Row\": \"Linie\",\n\"Column\": \"Coloan\\u0103\",\n\"Cell properties\": \"Propriet\\u0103\\u021bi celul\\u0103\",\n\"Merge cells\": \"\\u00cembinarea celulelor\",\n\"Split cell\": \"\\u00cemp\\u0103r\\u021birea celulelor\",\n\"Insert row before\": \"Insereaz\\u0103 \\u00eenainte de linie\",\n\"Insert row after\": \"Insereaz\\u0103 dup\\u0103 linie\",\n\"Delete row\": \"\\u0218terge linia\",\n\"Row properties\": \"Propriet\\u0103\\u021bi linie\",\n\"Cut row\": \"Taie linie\",\n\"Copy row\": \"Copiaz\\u0103 linie\",\n\"Paste row before\": \"Lipe\\u015fte \\u00eenainte de linie\",\n\"Paste row after\": \"Lipe\\u015fte linie dup\\u0103\",\n\"Insert column before\": \"Insereaza \\u00eenainte de coloan\\u0103\",\n\"Insert column after\": \"Insereaza dup\\u0103 coloan\\u0103\",\n\"Delete column\": \"\\u0218terge coloana\",\n\"Cols\": \"Coloane\",\n\"Rows\": \"Linii\",\n\"Width\": \"L\\u0103\\u0163ime\",\n\"Height\": \"\\u00cen\\u0103l\\u0163ime\",\n\"Cell spacing\": \"Spa\\u021biere celule\",\n\"Cell padding\": \"Spa\\u021biere\",\n\"Show caption\": \"Afi\\u0219are captur\\u0103\",\n\"Left\": \"St\\u00e2nga\",\n\"Center\": \"Centru\",\n\"Right\": \"Dreapta\",\n\"Cell type\": \"Tip celul\\u0103\",\n\"Scope\": \"Domeniu\",\n\"Alignment\": \"Aliniament\",\n\"H Align\": \"Aliniere H\",\n\"V Align\": \"Aliniere V\",\n\"Top\": \"Sus\",\n\"Middle\": \"Mijloc\",\n\"Bottom\": \"Jos\",\n\"Header cell\": \"Antet celul\\u0103\",\n\"Row group\": \"Grup de linii\",\n\"Column group\": \"Grup de coloane\",\n\"Row type\": \"Tip de linie\",\n\"Header\": \"Antet\",\n\"Body\": \"Corp\",\n\"Footer\": \"Subsol\",\n\"Border color\": \"Culoare bordur\\u0103\",\n\"Insert template...\": \"Inserare \\u0219ablon\\u2026\",\n\"Templates\": \"\\u015eabloane\",\n\"Template\": \"\\u0218ablon\",\n\"Text color\": \"Culoare text\",\n\"Background color\": \"Culoare fundal\",\n\"Custom...\": \"Personalizat...\",\n\"Custom color\": \"Culoare personalizat\\u0103\",\n\"No color\": \"F\\u0103r\\u0103 culoare\",\n\"Remove color\": \"Eliminare culoare\",\n\"Table of Contents\": \"Cuprins\",\n\"Show blocks\": \"Afi\\u0219are blocuri\",\n\"Show invisible characters\": \"Afi\\u0219are caractere invizibile\",\n\"Word count\": \"Num\\u0103r\\u0103toare cuvinte\",\n\"Count\": \"Num\\u0103r\\u0103toare\",\n\"Document\": \"Document\",\n\"Selection\": \"Selec\\u021bie\",\n\"Words\": \"Cuvinte\",\n\"Words: {0}\": \"Cuvinte: {0}\",\n\"{0} words\": \"{0} cuvinte\",\n\"File\": \"Fil\\u0103\",\n\"Edit\": \"Editeaz\\u0103\",\n\"Insert\": \"Insereaz\\u0103\",\n\"View\": \"Vezi\",\n\"Format\": \"Formateaz\\u0103\",\n\"Table\": \"Tabel\\u0103\",\n\"Tools\": \"Unelte\",\n\"Powered by {0}\": \"Sus\\u021binut de {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Zon\\u0103 cu Rich Text. Apas\\u0103 ALT-F9 pentru meniu. Apas\\u0103 ALT-F10 pentru bara de unelte. Apas\\u0103 ALT-0 pentru ajutor\",\n\"Image title\": \"Titlu imagine\",\n\"Border width\": \"Grosime chenar\",\n\"Border style\": \"Stil chenar\",\n\"Error\": \"Eroare\",\n\"Warn\": \"Aten\\u021bionare\",\n\"Valid\": \"Valid\",\n\"To open the popup, press Shift+Enter\": \"Pentru a deschide fereastra popup, ap\\u0103sa\\u021bi Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Zon\\u0103 Text Formatat. Ap\\u0103sa\\u021bi ALT-0 pentru ajutor.\",\n\"System Font\": \"Font Sistem\",\n\"Failed to upload image: {0}\": \"Nu s-a putut \\u00eenc\\u0103rca imaginea: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Nu s-a putut \\u00eenc\\u0103rca modulul: {0} de la URL-ul {1}\",\n\"Failed to load plugin url: {0}\": \"Nu s-a putut \\u00eenc\\u0103rca URL-ul modulului: {0}\",\n\"Failed to initialize plugin: {0}\": \"Nu s-a putut ini\\u021bializa modulul: {0}\",\n\"example\": \"exemplu\",\n\"Search\": \"C\\u0103utare\",\n\"All\": \"Tot\",\n\"Currency\": \"Moned\\u0103\",\n\"Text\": \"Text\",\n\"Quotations\": \"Ghilimele\",\n\"Mathematical\": \"Simboluri matematice\",\n\"Extended Latin\": \"Simboluri alfabet latin extins\",\n\"Symbols\": \"Simboluri\",\n\"Arrows\": \"S\\u0103ge\\u021bi\",\n\"User Defined\": \"Definite de utilizator\",\n\"dollar sign\": \"simbol dolar\",\n\"currency sign\": \"simbol moned\\u0103\",\n\"euro-currency sign\": \"simbol euro\",\n\"colon sign\": \"dou\\u0103 puncte\",\n\"cruzeiro sign\": \"simbol cruzeiro\",\n\"french franc sign\": \"simbol franc francez\",\n\"lira sign\": \"simbol lir\\u0103\",\n\"mill sign\": \"simbol mill\",\n\"naira sign\": \"simbol naira\",\n\"peseta sign\": \"simbol peset\\u0103\",\n\"rupee sign\": \"simbol rupie\",\n\"won sign\": \"simbol won\",\n\"new sheqel sign\": \"simbol shekel nou\",\n\"dong sign\": \"simbol dong\",\n\"kip sign\": \"simbol kip\",\n\"tugrik sign\": \"simbol tugrik\",\n\"drachma sign\": \"simbol drahm\\u0103\",\n\"german penny symbol\": \"simbol peni german\",\n\"peso sign\": \"simbol peso\",\n\"guarani sign\": \"simbol guarani\",\n\"austral sign\": \"simbol austral\",\n\"hryvnia sign\": \"simbol grivn\\u0103\",\n\"cedi sign\": \"simbol cedi\",\n\"livre tournois sign\": \"simbol livr\\u0103 tournois\",\n\"spesmilo sign\": \"simbol spesmilo\",\n\"tenge sign\": \"simbol tenge\",\n\"indian rupee sign\": \"simbol rupie indian\\u0103\",\n\"turkish lira sign\": \"simbol lir\\u0103 turceasc\\u0103\",\n\"nordic mark sign\": \"simbol marc\\u0103 nordic\\u0103\",\n\"manat sign\": \"simbol manat\",\n\"ruble sign\": \"simbol rubl\\u0103\",\n\"yen character\": \"simbol yen\",\n\"yuan character\": \"simbol yuan\",\n\"yuan character, in hong kong and taiwan\": \"simbol yuan \\u00een Hong Kong \\u0219i Taiwan\",\n\"yen\\/yuan character variant one\": \"simbol yen\\/yuan prima variant\\u0103\",\n\"Loading emoticons...\": \"Se \\u00eencarc\\u0103 emoticoanele\\u2026\",\n\"Could not load emoticons\": \"Nu s-au putut \\u00eenc\\u0103rca emoticoanele\",\n\"People\": \"Persoane\",\n\"Animals and Nature\": \"Animale \\u0219i natur\\u0103\",\n\"Food and Drink\": \"M\\u00e2ncare \\u0219i b\\u0103uturi\",\n\"Activity\": \"Activit\\u0103\\u021bi\",\n\"Travel and Places\": \"C\\u0103l\\u0103torii \\u0219i loca\\u021bii\",\n\"Objects\": \"Obiecte\",\n\"Flags\": \"Steaguri\",\n\"Characters\": \"Caractere\",\n\"Characters (no spaces)\": \"Caractere (f\\u0103r\\u0103 spa\\u021bii)\",\n\"{0} characters\": \"{0} caractere\",\n\"Error: Form submit field collision.\": \"Eroare: Coliziune c\\u00e2mpuri la trimiterea formularului.\",\n\"Error: No form element found.\": \"Eroare: Niciun element de formular g\\u0103sit.\",\n\"Update\": \"Actualizare\",\n\"Color swatch\": \"Mostr\\u0103 de culori\",\n\"Turquoise\": \"Turcoaz\",\n\"Green\": \"Verde\",\n\"Blue\": \"Albastru\",\n\"Purple\": \"Mov\",\n\"Navy Blue\": \"Albastru marin\",\n\"Dark Turquoise\": \"Turcoaz \\u00eenchis\",\n\"Dark Green\": \"Verde \\u00eenchis\",\n\"Medium Blue\": \"Albastru mediu\",\n\"Medium Purple\": \"Mov mediu\",\n\"Midnight Blue\": \"Albastru \\u00eenchis\",\n\"Yellow\": \"Galben\",\n\"Orange\": \"Portocaliu\",\n\"Red\": \"Ro\\u0219u\",\n\"Light Gray\": \"Gri deschis\",\n\"Gray\": \"Gri\",\n\"Dark Yellow\": \"Galben \\u00eenchis\",\n\"Dark Orange\": \"Portocaliu \\u00eenchis\",\n\"Dark Red\": \"Ro\\u0219u \\u00eenchis\",\n\"Medium Gray\": \"Gri mediu\",\n\"Dark Gray\": \"Gri \\u00eenchis\",\n\"Light Green\": \"Verde deschis\",\n\"Light Yellow\": \"Galben deschis\",\n\"Light Red\": \"Ro\\u015fu deschis\",\n\"Light Purple\": \"Violet deschis\",\n\"Light Blue\": \"Albastru deschis\",\n\"Dark Purple\": \"Violet \\u00eenchis\",\n\"Dark Blue\": \"Negru \\u00eenchis\",\n\"Black\": \"Negru\",\n\"White\": \"Alb\",\n\"Switch to or from fullscreen mode\": \"Comutare pe sau de la modul ecran complet\",\n\"Open help dialog\": \"Deschide dialogul de ajutor\",\n\"history\": \"istoric\",\n\"styles\": \"stiluri\",\n\"formatting\": \"formatare\",\n\"alignment\": \"aliniere\",\n\"indentation\": \"indentare\",\n\"permanent pen\": \"stilou permanent\",\n\"comments\": \"comentarii\",\n\"Format Painter\": \"Descriptor de formate\",\n\"Insert\\/edit iframe\": \"Inserare\\/editare icadru\",\n\"Capitalization\": \"Scriere cu majuscule\",\n\"lowercase\": \"litere mici\",\n\"UPPERCASE\": \"MAJUSCULE\",\n\"Title Case\": \"Ini\\u021bial\\u0103 majuscul\\u0103\",\n\"Permanent Pen Properties\": \"Propriet\\u0103\\u021bile stiloului permanent\",\n\"Permanent pen properties...\": \"Propriet\\u0103\\u021bile stiloului permanent...\",\n\"Font\": \"Font\",\n\"Size\": \"Dimensiuni\",\n\"More...\": \"Mai multe...\",\n\"Spellcheck Language\": \"Verificare ortografic\\u0103 a limbii\",\n\"Select...\": \"Selectare...\",\n\"Preferences\": \"Preferin\\u021be\",\n\"Yes\": \"Da\",\n\"No\": \"Nu\",\n\"Keyboard Navigation\": \"Navigare de la tastatur\\u0103\",\n\"Version\": \"Versiune\",\n\"Anchor\": \"Ancor\\u0103\",\n\"Special character\": \"Caractere speciale\",\n\"Color\": \"Culoare\",\n\"Emoticons\": \"Emoticoane\",\n\"Document properties\": \"Propriet\\u0103\\u021bi document\",\n\"Image\": \"Imagine\",\n\"Insert link\": \"Inserare link\",\n\"Link\": \"Link\",\n\"Target\": \"\\u021aint\\u0103\",\n\"Media\": \"Media\",\n\"Poster\": \"Poster\",\n\"Print\": \"Tip\\u0103re\\u0219te\",\n\"Whole words\": \"Doar cuv\\u00eentul \\u00eentreg\",\n\"Find and replace\": \"Caut\\u0103 \\u015fi \\u00eenlocuie\\u015fte\",\n\"Prev\": \"Anterior\",\n\"Spellcheck\": \"Verificarea ortografic\\u0103\",\n\"Caption\": \"Titlu\",\n\"Insert template\": \"Insereaz\\u0103 \\u0219ablon\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/ro_RO.js",
    "content": "tinymce.addI18n('ro_RO',{\n\"Redo\": \"Refacere\",\n\"Undo\": \"Anulare\",\n\"Cut\": \"Decupare\",\n\"Copy\": \"Copiere\",\n\"Paste\": \"Lipire\",\n\"Select all\": \"Selecteaz\\u0103 tot\",\n\"New document\": \"Document nou\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Revocare\",\n\"Visual aids\": \"Ajutoare vizuale\",\n\"Bold\": \"Aldin\",\n\"Italic\": \"Cursiv\",\n\"Underline\": \"Subliniere\",\n\"Strikethrough\": \"T\\u0103iere\",\n\"Superscript\": \"Exponent\",\n\"Subscript\": \"Indice\",\n\"Clear formatting\": \"\\u00cendep\\u0103rtare formatare\",\n\"Align left\": \"Aliniere st\\u00e2nga\",\n\"Align center\": \"Aliniere centru\",\n\"Align right\": \"Aliniere dreapta\",\n\"Justify\": \"Aliniere st\\u00e2nga-dreapta\",\n\"Bullet list\": \"List\\u0103 marcatori\",\n\"Numbered list\": \"List\\u0103 numerotat\\u0103\",\n\"Decrease indent\": \"Mic\\u0219orare indent\",\n\"Increase indent\": \"M\\u0103rire indent\",\n\"Close\": \"\\u00cenchidere\",\n\"Formats\": \"Formate\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Browser-ul dumneavoastr\\u0103 nu are acces direct la clipboard. V\\u0103 rug\\u0103m s\\u0103 folosi\\u021bi \\u00een schimb scurt\\u0103turile de tastatur\\u0103 Ctrl+X\\/C\\/V.\",\n\"Headers\": \"Antete\",\n\"Header 1\": \"Antet 1\",\n\"Header 2\": \"Antet 2\",\n\"Header 3\": \"Antet 3\",\n\"Header 4\": \"Antet 4\",\n\"Header 5\": \"Antet 5\",\n\"Header 6\": \"Antet 6\",\n\"Headings\": \"Rubrici\",\n\"Heading 1\": \"Titlu 1\",\n\"Heading 2\": \"Titlu 2\",\n\"Heading 3\": \"Titlu 3\",\n\"Heading 4\": \"Titlu 4\",\n\"Heading 5\": \"Titlu 5\",\n\"Heading 6\": \"Titlu 6\",\n\"Preformatted\": \"Preformatat\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Cod\",\n\"Paragraph\": \"Paragraf\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"\\u00cen linie\",\n\"Blocks\": \"Blocuri\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Lipirea este \\u00een mod text simplu. Con\\u021binutul va fi lipit ca text simplu p\\u00e2n\\u0103 dezactiva\\u021bi aceast\\u0103 op\\u021biune.\",\n\"Fonts\": \"Fonturi\",\n\"Font Sizes\": \"Dimensiuni font\",\n\"Class\": \"Clas\\u0103\",\n\"Browse for an image\": \"C\\u0103uta\\u021bi o imagine\",\n\"OR\": \"SAU\",\n\"Drop an image here\": \"Glisa\\u021bi o imagine aici\",\n\"Upload\": \"\\u00cenc\\u0103rcare\",\n\"Block\": \"Sec\\u021biune\",\n\"Align\": \"Aliniere\",\n\"Default\": \"Implicit\",\n\"Circle\": \"Cerc\",\n\"Disc\": \"Disc\",\n\"Square\": \"P\\u0103trat\",\n\"Lower Alpha\": \"Litere mici\",\n\"Lower Greek\": \"Grecesc mic\",\n\"Lower Roman\": \"Cifre romane mici\",\n\"Upper Alpha\": \"Litere mari\",\n\"Upper Roman\": \"Cifre romane mari\",\n\"Anchor...\": \"Ancor\\u0103\\u2026\",\n\"Name\": \"Nume\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id-ul ar trebui s\\u0103 \\u00eenceap\\u0103 cu o liter\\u0103, urmat\\u0103 doar de litere, numere, cratime, puncte, virgule sau sublinieri.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Ave\\u021bi modific\\u0103ri nesalvate. Sigur dori\\u021bi s\\u0103 naviga\\u021bi \\u00een alt\\u0103 parte?\",\n\"Restore last draft\": \"Restabili\\u021bi ultima ciorn\\u0103\",\n\"Special characters...\": \"Caractere speciale\\u2026\",\n\"Source code\": \"Cod surs\\u0103\",\n\"Insert\\/Edit code sample\": \"Inserare\\/Editare mostr\\u0103 cod\",\n\"Language\": \"Limb\\u0103\",\n\"Code sample...\": \"Mostr\\u0103 cod\\u2026\",\n\"Color Picker\": \"Selector culori\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"St\\u00e2nga la dreapta\",\n\"Right to left\": \"Dreapta la st\\u00e2nga\",\n\"Emoticons...\": \"Emoticoane\\u2026\",\n\"Metadata and Document Properties\": \"Meta date \\u0219i Propriet\\u0103\\u021bi Document\",\n\"Title\": \"Titlu\",\n\"Keywords\": \"Cuvinte cheie\",\n\"Description\": \"Descriere\",\n\"Robots\": \"Robo\\u0163i\",\n\"Author\": \"Autor\",\n\"Encoding\": \"Codare\",\n\"Fullscreen\": \"Ecran complet\",\n\"Action\": \"Ac\\u0163iune\",\n\"Shortcut\": \"Comand\\u0103 rapid\\u0103\",\n\"Help\": \"Ajutor\",\n\"Address\": \"Adres\\u0103\",\n\"Focus to menubar\": \"Centrare pe bara de meniuri\",\n\"Focus to toolbar\": \"Centrare pe bara de unelte\",\n\"Focus to element path\": \"Centrare pe calea elementului\",\n\"Focus to contextual toolbar\": \"Centrare pe bara de unelte contextual\\u0103\",\n\"Insert link (if link plugin activated)\": \"Inserare link (dac\\u0103 modulul de link-uri este activat)\",\n\"Save (if save plugin activated)\": \"Salvare (dac\\u0103 modulul de salvare este activat)\",\n\"Find (if searchreplace plugin activated)\": \"C\\u0103utare (dac\\u0103 modulul de c\\u0103utare \\u0219i \\u00eenlocuire este activat)\",\n\"Plugins installed ({0}):\": \"Module instalate ({0}):\",\n\"Premium plugins:\": \"Module premium:\",\n\"Learn more...\": \"Afla\\u021bi mai multe\\u2026\",\n\"You are using {0}\": \"Folosi\\u021bi {0}\",\n\"Plugins\": \"Inserturi\",\n\"Handy Shortcuts\": \"Comenzi rapide accesibile\",\n\"Horizontal line\": \"Linie orizontal\\u0103\",\n\"Insert\\/edit image\": \"Inserare\\/editare imagini\",\n\"Image description\": \"Descriere imagine\",\n\"Source\": \"Surs\\u0103\",\n\"Dimensions\": \"Dimensiuni\",\n\"Constrain proportions\": \"Restric\\u021bionare propor\\u021bii\",\n\"General\": \"General\",\n\"Advanced\": \"Complex\",\n\"Style\": \"Stil\",\n\"Vertical space\": \"Spa\\u0163iu vertical\",\n\"Horizontal space\": \"Spa\\u0163iu orizontal\",\n\"Border\": \"Chenar\",\n\"Insert image\": \"Inserare imagine\",\n\"Image...\": \"Imagine\\u2026\",\n\"Image list\": \"List\\u0103 de imagini\",\n\"Rotate counterclockwise\": \"Rotire invers sensului acelor de ceasornic\",\n\"Rotate clockwise\": \"Rotire \\u00een sensul acelor de ceasornic\",\n\"Flip vertically\": \"Inversare vertical\\u0103\",\n\"Flip horizontally\": \"Inversare orizontal\\u0103\",\n\"Edit image\": \"Editare imagine\",\n\"Image options\": \"Op\\u021biuni imagine\",\n\"Zoom in\": \"Apropiere\",\n\"Zoom out\": \"Dep\\u0103rtare\",\n\"Crop\": \"Decupare\",\n\"Resize\": \"Redimensionare\",\n\"Orientation\": \"Orientare\",\n\"Brightness\": \"Luminozitate\",\n\"Sharpen\": \"Accentuare\",\n\"Contrast\": \"Contrast\",\n\"Color levels\": \"Niveluri culori\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Inversare\",\n\"Apply\": \"Aplicare\",\n\"Back\": \"\\u00cenapoi\",\n\"Insert date\\/time\": \"Inserare dat\\u0103\\/or\\u0103\",\n\"Date\\/time\": \"Dat\\u0103\\/or\\u0103\",\n\"Insert\\/Edit Link\": \"Inserare\\/Editare link\",\n\"Insert\\/edit link\": \"Inserare\\/editare link\",\n\"Text to display\": \"Text de afi\\u0219at\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Deschide link \\u00een\\u2026\",\n\"Current window\": \"Fereastra curent\\u0103\",\n\"None\": \"Nu se utilizeaz\\u0103 (acest c\\u00e2mp)\",\n\"New window\": \"Fereastr\\u0103 nou\\u0103\",\n\"Remove link\": \"Eliminare link\",\n\"Anchors\": \"Ancore\",\n\"Link...\": \"Link\\u2026\",\n\"Paste or type a link\": \"Lipi\\u021bi sau scrie\\u021bi un link\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"URL-ul introdus pare a fi o adres\\u0103 de e-mail. Dori\\u021bi s\\u0103 ad\\u0103uga\\u021bi prefixul mailto: necesar?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"URL-ul introdus pare a fi un link extern. Dori\\u021bi s\\u0103 ad\\u0103uga\\u021bi prefixul http:\\/\\/ necesar?\",\n\"Link list\": \"List\\u0103 linkuri\",\n\"Insert video\": \"Inserare video\",\n\"Insert\\/edit video\": \"Inserare\\/editare video\",\n\"Insert\\/edit media\": \"Inserare\\/editare media\",\n\"Alternative source\": \"Surs\\u0103 alternativ\\u0103\",\n\"Alternative source URL\": \"URL surs\\u0103 alternativ\\u0103\",\n\"Media poster (Image URL)\": \"Poster media (URL imagine)\",\n\"Paste your embed code below:\": \"Lipi\\u021bi codul de \\u00eencorporare mai jos:\",\n\"Embed\": \"\\u00cencorporare\",\n\"Media...\": \"Media\\u2026\",\n\"Nonbreaking space\": \"Spa\\u021biu f\\u0103r\\u0103 \\u00eentreruperi\",\n\"Page break\": \"\\u00centrerupere de pagin\\u0103\",\n\"Paste as text\": \"Lipire ca text\",\n\"Preview\": \"Previzualizare\",\n\"Print...\": \"Tip\\u0103rire\\u2026\",\n\"Save\": \"Salvare\",\n\"Find\": \"G\\u0103sire\",\n\"Replace with\": \"\\u00cenlocuire cu\",\n\"Replace\": \"\\u00cenlocuire\",\n\"Replace all\": \"\\u00cenlocuire peste tot\",\n\"Previous\": \"Anterior\",\n\"Next\": \"Urm\\u0103torul\",\n\"Find and replace...\": \"C\\u0103utare \\u0219i \\u00eenlocuire\\u2026\",\n\"Could not find the specified string.\": \"Nu s-a g\\u0103sit \\u0219irul indicat.\",\n\"Match case\": \"Potrivire litere mari \\u0219i mici\",\n\"Find whole words only\": \"G\\u0103se\\u0219te doar cuvintele \\u00eentregi\",\n\"Spell check\": \"Verificare ortografic\\u0103\",\n\"Ignore\": \"Ignorare\",\n\"Ignore all\": \"Ignor\\u0103 tot\",\n\"Finish\": \"Finalizare\",\n\"Add to Dictionary\": \"Ad\\u0103ugare \\u00een Dic\\u021bionar\",\n\"Insert table\": \"Inserare tabel\",\n\"Table properties\": \"Propriet\\u0103\\u021bi tabel\",\n\"Delete table\": \"Eliminare tabel\",\n\"Cell\": \"Celul\\u0103\",\n\"Row\": \"R\\u00e2nd\",\n\"Column\": \"Coloan\\u0103\",\n\"Cell properties\": \"Propriet\\u0103\\u021bi celul\\u0103\",\n\"Merge cells\": \"\\u00cembinare celule\",\n\"Split cell\": \"Scindare celul\\u0103\",\n\"Insert row before\": \"Inserare r\\u00e2nd \\u00eenainte\",\n\"Insert row after\": \"Inserare r\\u00e2nd dup\\u0103\",\n\"Delete row\": \"Eliminare r\\u00e2nd\",\n\"Row properties\": \"Propriet\\u0103\\u021bi r\\u00e2nd\",\n\"Cut row\": \"Decupare r\\u00e2nd\",\n\"Copy row\": \"Copiere r\\u00e2nd\",\n\"Paste row before\": \"Lipire r\\u00e2nd \\u00eenainte\",\n\"Paste row after\": \"Lipire r\\u00e2nd dup\\u0103\",\n\"Insert column before\": \"Inserare coloan\\u0103 \\u00eenainte\",\n\"Insert column after\": \"Inserare coloan\\u0103 dup\\u0103\",\n\"Delete column\": \"Eliminare coloan\\u0103\",\n\"Cols\": \"Coloane\",\n\"Rows\": \"R\\u00e2nduri\",\n\"Width\": \"L\\u0103\\u021bime\",\n\"Height\": \"\\u00cen\\u0103l\\u021bime\",\n\"Cell spacing\": \"Spa\\u021biere celul\\u0103\",\n\"Cell padding\": \"Spa\\u021biere \\u00een celul\\u0103\",\n\"Show caption\": \"Afi\\u0219are captur\\u0103\",\n\"Left\": \"St\\u00e2nga\",\n\"Center\": \"Centru\",\n\"Right\": \"Dreapta\",\n\"Cell type\": \"Tip celul\\u0103\",\n\"Scope\": \"Domeniu\",\n\"Alignment\": \"Aliniere\",\n\"H Align\": \"Aliniere O\",\n\"V Align\": \"Aliniere V\",\n\"Top\": \"Sus\",\n\"Middle\": \"Mijloc\",\n\"Bottom\": \"Jos\",\n\"Header cell\": \"Celul\\u0103 de antet\",\n\"Row group\": \"Grupare r\\u00e2nduri\",\n\"Column group\": \"Grup coloane\",\n\"Row type\": \"Tip r\\u00e2nd\",\n\"Header\": \"Antet\",\n\"Body\": \"Corp\",\n\"Footer\": \"Subsol de pagin\\u0103\",\n\"Border color\": \"Culoare chenar\",\n\"Insert template...\": \"Inserare \\u0219ablon\\u2026\",\n\"Templates\": \"\\u0218abloane\",\n\"Template\": \"\\u0218ablon\",\n\"Text color\": \"Culoare text\",\n\"Background color\": \"Culoare fundal\",\n\"Custom...\": \"Particularizare...\",\n\"Custom color\": \"Culoare personalizat\\u0103\",\n\"No color\": \"F\\u0103r\\u0103 culoare\",\n\"Remove color\": \"Eliminare culoare\",\n\"Table of Contents\": \"Cuprins\",\n\"Show blocks\": \"Arat\\u0103 rubricile\",\n\"Show invisible characters\": \"Arat\\u0103 caracterele invizibile\",\n\"Word count\": \"Num\\u0103r\\u0103toare cuvinte\",\n\"Words: {0}\": \"Cuvinte: {0}\",\n\"{0} words\": \"{0} cuvinte\",\n\"File\": \"Fi\\u0219ier\",\n\"Edit\": \"Editare\",\n\"Insert\": \"Inserare\",\n\"View\": \"Vizualizare\",\n\"Format\": \"Formatare\",\n\"Table\": \"Tabel\",\n\"Tools\": \"Unelte\",\n\"Powered by {0}\": \"Sus\\u021binut de {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Zon\\u0103 Text Formatat. Ap\\u0103sa\\u021bi ALT-F9 pentru a accesa meniul. Ap\\u0103sa\\u021bi ALT-F10 pentru a accesa bara de unelte. Ap\\u0103sa\\u021bi ALT-0 pentru ajutor\",\n\"Image title\": \"Titlu imagine\",\n\"Border width\": \"Grosime chenar\",\n\"Border style\": \"Stil chenar\",\n\"Error\": \"Eroare\",\n\"Warn\": \"Aten\\u021bionare\",\n\"Valid\": \"Valid\",\n\"To open the popup, press Shift+Enter\": \"Pentru a deschide fereastra popup, ap\\u0103sa\\u021bi Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Zon\\u0103 Text Formatat. Ap\\u0103sa\\u021bi ALT-0 pentru ajutor.\",\n\"System Font\": \"Font Sistem\",\n\"Failed to upload image: {0}\": \"Nu s-a putut \\u00eenc\\u0103rca imaginea: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Nu s-a putut \\u00eenc\\u0103rca modulul: {0} de la URL-ul {1}\",\n\"Failed to load plugin url: {0}\": \"Nu s-a putut \\u00eenc\\u0103rca URL-ul modulului: {0}\",\n\"Failed to initialize plugin: {0}\": \"Nu s-a putut ini\\u021bializa modulul: {0}\",\n\"example\": \"exemplu\",\n\"Search\": \"C\\u0103utare\",\n\"All\": \"Tot\",\n\"Currency\": \"Moned\\u0103\",\n\"Text\": \"Text\",\n\"Quotations\": \"Ghilimele\",\n\"Mathematical\": \"Simboluri matematice\",\n\"Extended Latin\": \"Simboluri alfabet latin extins\",\n\"Symbols\": \"Simboluri\",\n\"Arrows\": \"S\\u0103ge\\u021bi\",\n\"User Defined\": \"Definite de utilizator\",\n\"dollar sign\": \"simbol dolar\",\n\"currency sign\": \"simbol moned\\u0103\",\n\"euro-currency sign\": \"simbol euro\",\n\"colon sign\": \"dou\\u0103 puncte\",\n\"cruzeiro sign\": \"simbol cruzeiro\",\n\"french franc sign\": \"simbol franc francez\",\n\"lira sign\": \"simbol lir\\u0103\",\n\"mill sign\": \"simbol mill\",\n\"naira sign\": \"simbol naira\",\n\"peseta sign\": \"simbol peset\\u0103\",\n\"rupee sign\": \"simbol rupie\",\n\"won sign\": \"simbol won\",\n\"new sheqel sign\": \"simbol shekel nou\",\n\"dong sign\": \"simbol dong\",\n\"kip sign\": \"simbol kip\",\n\"tugrik sign\": \"simbol tugrik\",\n\"drachma sign\": \"simbol drahm\\u0103\",\n\"german penny symbol\": \"simbol peni german\",\n\"peso sign\": \"simbol peso\",\n\"guarani sign\": \"simbol guarani\",\n\"austral sign\": \"simbol austral\",\n\"hryvnia sign\": \"simbol grivn\\u0103\",\n\"cedi sign\": \"simbol cedi\",\n\"livre tournois sign\": \"simbol livr\\u0103 tournois\",\n\"spesmilo sign\": \"simbol spesmilo\",\n\"tenge sign\": \"simbol tenge\",\n\"indian rupee sign\": \"simbol rupie indian\\u0103\",\n\"turkish lira sign\": \"simbol lir\\u0103 turceasc\\u0103\",\n\"nordic mark sign\": \"simbol marc\\u0103 nordic\\u0103\",\n\"manat sign\": \"simbol manat\",\n\"ruble sign\": \"simbol rubl\\u0103\",\n\"yen character\": \"simbol yen\",\n\"yuan character\": \"simbol yuan\",\n\"yuan character, in hong kong and taiwan\": \"simbol yuan \\u00een Hong Kong \\u0219i Taiwan\",\n\"yen\\/yuan character variant one\": \"simbol yen\\/yuan prima variant\\u0103\",\n\"Loading emoticons...\": \"Se \\u00eencarc\\u0103 emoticoanele\\u2026\",\n\"Could not load emoticons\": \"Nu s-au putut \\u00eenc\\u0103rca emoticoanele\",\n\"People\": \"Persoane\",\n\"Animals and Nature\": \"Animale \\u0219i natur\\u0103\",\n\"Food and Drink\": \"M\\u00e2ncare \\u0219i b\\u0103uturi\",\n\"Activity\": \"Activit\\u0103\\u021bi\",\n\"Travel and Places\": \"C\\u0103l\\u0103torii \\u0219i loca\\u021bii\",\n\"Objects\": \"Obiecte\",\n\"Flags\": \"Steaguri\",\n\"Characters\": \"Caractere\",\n\"Characters (no spaces)\": \"Caractere (f\\u0103r\\u0103 spa\\u021bii)\",\n\"Error: Form submit field collision.\": \"Eroare: Coliziune c\\u00e2mpuri la trimiterea formularului.\",\n\"Error: No form element found.\": \"Eroare: Niciun element de formular g\\u0103sit.\",\n\"Update\": \"Actualizare\",\n\"Color swatch\": \"Mostr\\u0103 de culori\",\n\"Turquoise\": \"Turcoaz\",\n\"Green\": \"Verde\",\n\"Blue\": \"Albastru\",\n\"Purple\": \"Mov\",\n\"Navy Blue\": \"Albastru marin\",\n\"Dark Turquoise\": \"Turcoaz \\u00eenchis\",\n\"Dark Green\": \"Verde \\u00eenchis\",\n\"Medium Blue\": \"Albastru mediu\",\n\"Medium Purple\": \"Mov mediu\",\n\"Midnight Blue\": \"Albastru \\u00eenchis\",\n\"Yellow\": \"Galben\",\n\"Orange\": \"Portocaliu\",\n\"Red\": \"Ro\\u0219u\",\n\"Light Gray\": \"Gri deschis\",\n\"Gray\": \"Gri\",\n\"Dark Yellow\": \"Galben \\u00eenchis\",\n\"Dark Orange\": \"Portocaliu \\u00eenchis\",\n\"Dark Red\": \"Ro\\u0219u \\u00eenchis\",\n\"Medium Gray\": \"Gri mediu\",\n\"Dark Gray\": \"Gri \\u00eenchis\",\n\"Black\": \"Negru\",\n\"White\": \"Alb\",\n\"Switch to or from fullscreen mode\": \"Comutare pe sau de la modul ecran complet\",\n\"Open help dialog\": \"Deschide dialogul de ajutor\",\n\"history\": \"istoric\",\n\"styles\": \"stiluri\",\n\"formatting\": \"formatare\",\n\"alignment\": \"aliniere\",\n\"indentation\": \"indentare\",\n\"permanent pen\": \"stilou permanent\",\n\"comments\": \"comentarii\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/ru.js",
    "content": "tinymce.addI18n('ru',{\n\"Redo\": \"\\u0412\\u0435\\u0440\\u043d\\u0443\\u0442\\u044c\",\n\"Undo\": \"\\u041e\\u0442\\u043c\\u0435\\u043d\\u0438\\u0442\\u044c\",\n\"Cut\": \"\\u0412\\u044b\\u0440\\u0435\\u0437\\u0430\\u0442\\u044c\",\n\"Copy\": \"\\u041a\\u043e\\u043f\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c\",\n\"Paste\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c\",\n\"Select all\": \"\\u0412\\u044b\\u0434\\u0435\\u043b\\u0438\\u0442\\u044c \\u0432\\u0441\\u0435\",\n\"New document\": \"\\u041d\\u043e\\u0432\\u044b\\u0439 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\",\n\"Ok\": \"OK\",\n\"Cancel\": \"\\u041e\\u0442\\u043c\\u0435\\u043d\\u0438\\u0442\\u044c\",\n\"Visual aids\": \"\\u0412\\u0438\\u0437\\u0443\\u0430\\u043b\\u044c\\u043d\\u044b\\u0435 \\u043f\\u043e\\u0434\\u0441\\u043a\\u0430\\u0437\\u043a\\u0438\",\n\"Bold\": \"\\u0416\\u0438\\u0440\\u043d\\u044b\\u0439 \\u0448\\u0440\\u0438\\u0444\\u0442\",\n\"Italic\": \"\\u041a\\u0443\\u0440\\u0441\\u0438\\u0432\",\n\"Underline\": \"\\u041f\\u043e\\u0434\\u0447\\u0435\\u0440\\u043a\\u0438\\u0432\\u0430\\u043d\\u0438\\u0435\",\n\"Strikethrough\": \"\\u0417\\u0430\\u0447\\u0435\\u0440\\u043a\\u0438\\u0432\\u0430\\u043d\\u0438\\u0435\",\n\"Superscript\": \"\\u041d\\u0430\\u0434\\u0441\\u0442\\u0440\\u043e\\u0447\\u043d\\u044b\\u0439\",\n\"Subscript\": \"\\u041f\\u043e\\u0434\\u0441\\u0442\\u0440\\u043e\\u0447\\u043d\\u044b\\u0439\",\n\"Clear formatting\": \"\\u0423\\u0434\\u0430\\u043b\\u0438\\u0442\\u044c \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d\\u0438\\u0435\",\n\"Align left\": \"\\u0412\\u044b\\u0440\\u043e\\u0432\\u043d\\u044f\\u0442\\u044c \\u043f\\u043e \\u043b\\u0435\\u0432\\u043e\\u043c\\u0443 \\u043a\\u0440\\u0430\\u044e\",\n\"Align center\": \"\\u0412\\u044b\\u0440\\u043e\\u0432\\u043d\\u044f\\u0442\\u044c \\u043f\\u043e \\u0446\\u0435\\u043d\\u0442\\u0440\\u0443\",\n\"Align right\": \"\\u0412\\u044b\\u0440\\u043e\\u0432\\u043d\\u044f\\u0442\\u044c \\u043f\\u043e \\u043f\\u0440\\u0430\\u0432\\u043e\\u043c\\u0443 \\u043a\\u0440\\u0430\\u044e\",\n\"Justify\": \"\\u0412\\u044b\\u0440\\u043e\\u0432\\u043d\\u044f\\u0442\\u044c \\u0442\\u0435\\u0441\\u0442 \\u043f\\u043e \\u0448\\u0438\\u0440\\u0438\\u043d\\u0435\",\n\"Bullet list\": \"\\u041c\\u0430\\u0440\\u043a\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d\\u043d\\u044b\\u0439 \\u0441\\u043f\\u0438\\u0441\\u043e\\u043a\",\n\"Numbered list\": \"\\u041d\\u0443\\u043c\\u0435\\u0440\\u043e\\u0432\\u0430\\u043d\\u043d\\u044b\\u0439 \\u0441\\u043f\\u0438\\u0441\\u043e\\u043a\",\n\"Decrease indent\": \"\\u0423\\u043c\\u0435\\u043d\\u044c\\u0448\\u0438\\u0442\\u044c \\u043e\\u0442\\u0441\\u0442\\u0443\\u043f\",\n\"Increase indent\": \"\\u0423\\u0432\\u0435\\u043b\\u0438\\u0447\\u0438\\u0442\\u044c \\u043e\\u0442\\u0441\\u0442\\u0443\\u043f\",\n\"Close\": \"\\u0417\\u0430\\u043a\\u0440\\u044b\\u0442\\u044c\",\n\"Formats\": \"\\u0424\\u043e\\u0440\\u043c\\u0430\\u0442\\u044b\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u0412\\u0430\\u0448 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440 \\u043d\\u0435 \\u043f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u0435\\u0442 \\u043f\\u0440\\u044f\\u043c\\u043e\\u0439 \\u0434\\u043e\\u0441\\u0442\\u0443\\u043f \\u043a \\u0431\\u0443\\u0444\\u0435\\u0440\\u0443 \\u043e\\u0431\\u043c\\u0435\\u043d\\u0430. \\u0418\\u0441\\u043f\\u043e\\u043b\\u044c\\u0437\\u0443\\u0439\\u0442\\u0435 \\u0441\\u043b\\u0435\\u0434\\u0443\\u044e\\u0449\\u0438\\u0435 \\u0441\\u043e\\u0447\\u0435\\u0442\\u0430\\u043d\\u0438\\u044f \\u043a\\u043b\\u0430\\u0432\\u0438\\u0448: Ctrl+X\\/C\\/V.\",\n\"Headers\": \"\\u0412\\u0435\\u0440\\u0445\\u043d\\u0438\\u0435 \\u043a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b\\u044b\",\n\"Header 1\": \"\\u0412\\u0435\\u0440\\u0445\\u043d\\u0438\\u0439 \\u043a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b 1\",\n\"Header 2\": \"\\u0412\\u0435\\u0440\\u0445\\u043d\\u0438\\u0439 \\u043a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b 2\",\n\"Header 3\": \"\\u0412\\u0435\\u0440\\u0445\\u043d\\u0438\\u0439 \\u043a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b 3\",\n\"Header 4\": \"\\u0412\\u0435\\u0440\\u0445\\u043d\\u0438\\u0439 \\u043a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b 4\",\n\"Header 5\": \"\\u0412\\u0435\\u0440\\u0445\\u043d\\u0438\\u0439 \\u043a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b 5\",\n\"Header 6\": \"\\u0412\\u0435\\u0440\\u0445\\u043d\\u0438\\u0439 \\u043a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b 6\",\n\"Headings\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043a\\u0438\",\n\"Heading 1\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a 1\",\n\"Heading 2\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a 2\",\n\"Heading 3\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a 3\",\n\"Heading 4\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a 4\",\n\"Heading 5\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a 5\",\n\"Heading 6\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a 6\",\n\"Preformatted\": \"\\u041f\\u0440\\u0435\\u0434\\u0432\\u0430\\u0440\\u0438\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d\\u043d\\u044b\\u0439\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"\\u041a\\u043e\\u0434\",\n\"Paragraph\": \"\\u0410\\u0431\\u0437\\u0430\\u0446\",\n\"Blockquote\": \"\\u0411\\u043b\\u043e\\u043a \\u0446\\u0438\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d\\u0438\\u044f\",\n\"Inline\": \"\\u0412\\u0441\\u0442\\u0440\\u043e\\u0435\\u043d\\u043d\\u044b\\u0439\",\n\"Blocks\": \"\\u0411\\u043b\\u043e\\u043a\\u0438\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u043a\\u0430 \\u043e\\u0441\\u0443\\u0449\\u0435\\u0441\\u0442\\u0432\\u043b\\u044f\\u0435\\u0442\\u0441\\u044f \\u0432 \\u0432\\u0438\\u0434\\u0435 \\u043f\\u0440\\u043e\\u0441\\u0442\\u043e\\u0433\\u043e \\u0442\\u0435\\u043a\\u0441\\u0442\\u0430, \\u043f\\u043e\\u043a\\u0430 \\u043d\\u0435 \\u043e\\u0442\\u043a\\u043b\\u044e\\u0447\\u0438\\u0442\\u044c \\u0434\\u0430\\u043d\\u043d\\u0443\\u044e \\u043e\\u043f\\u0446\\u0438\\u044e.\",\n\"Fonts\": \"\\u0428\\u0440\\u0438\\u0444\\u0442\\u044b\",\n\"Font Sizes\": \"\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0430\",\n\"Class\": \"\\u041a\\u043b\\u0430\\u0441\\u0441\",\n\"Browse for an image\": \"\\u0412\\u044b\\u0431\\u043e\\u0440 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u044f\",\n\"OR\": \"\\u0418\\u041b\\u0418\",\n\"Drop an image here\": \"\\u041f\\u0435\\u0440\\u0435\\u0442\\u0430\\u0449\\u0438\\u0442\\u0435 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435 \\u0441\\u044e\\u0434\\u0430\",\n\"Upload\": \"\\u041f\\u0435\\u0440\\u0435\\u0434\\u0430\\u0442\\u044c\",\n\"Block\": \"\\u0411\\u043b\\u043e\\u043a\",\n\"Align\": \"\\u0412\\u044b\\u0440\\u043e\\u0432\\u043d\\u044f\\u0442\\u044c\",\n\"Default\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u044b\\u0439\",\n\"Circle\": \"\\u041e\\u043a\\u0440\\u0443\\u0436\\u043d\\u043e\\u0441\\u0442\\u0438\",\n\"Disc\": \"\\u041a\\u0440\\u0443\\u0433\\u0438\",\n\"Square\": \"\\u041a\\u0432\\u0430\\u0434\\u0440\\u0430\\u0442\\u044b\",\n\"Lower Alpha\": \"\\u0421\\u0442\\u0440\\u043e\\u0447\\u043d\\u044b\\u0435 \\u043b\\u0430\\u0442\\u0438\\u043d\\u0441\\u043a\\u0438\\u0435 \\u0431\\u0443\\u043a\\u0432\\u044b\",\n\"Lower Greek\": \"\\u0421\\u0442\\u0440\\u043e\\u0447\\u043d\\u044b\\u0435 \\u0433\\u0440\\u0435\\u0447\\u0435\\u0441\\u043a\\u0438\\u0435 \\u0431\\u0443\\u043a\\u0432\\u044b\",\n\"Lower Roman\": \"\\u0421\\u0442\\u0440\\u043e\\u0447\\u043d\\u044b\\u0435 \\u0440\\u0438\\u043c\\u0441\\u043a\\u0438\\u0435 \\u0446\\u0438\\u0444\\u0440\\u044b\",\n\"Upper Alpha\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u043d\\u044b\\u0435 \\u043b\\u0430\\u0442\\u0438\\u043d\\u0441\\u043a\\u0438\\u0435 \\u0431\\u0443\\u043a\\u0432\\u044b\",\n\"Upper Roman\": \"\\u0417\\u0430\\u0433\\u043b\\u0430\\u0432\\u043d\\u044b\\u0435 \\u0440\\u0438\\u043c\\u0441\\u043a\\u0438\\u0435 \\u0446\\u0438\\u0444\\u0440\\u044b\",\n\"Anchor...\": \"\\u042f\\u043a\\u043e\\u0440\\u044c...\",\n\"Name\": \"\\u0418\\u043c\\u044f\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id \\u0434\\u043e\\u043b\\u0436\\u0435\\u043d \\u043d\\u0430\\u0447\\u0438\\u043d\\u0430\\u0442\\u044c\\u0441\\u044f \\u0441 \\u0431\\u0443\\u043a\\u0432\\u044b, \\u043f\\u0440\\u043e\\u0434\\u043e\\u043b\\u0436\\u0430\\u0442\\u044c\\u0441\\u044f \\u0442\\u043e\\u043b\\u044c\\u043a\\u043e \\u0441 \\u0431\\u0443\\u043a\\u0432\\u044b, \\u0446\\u0438\\u0444\\u0440\\u044b, \\u0442\\u0438\\u0440\\u0435, \\u0442\\u043e\\u0447\\u043a\\u0438, \\u0434\\u0432\\u043e\\u0435\\u0442\\u043e\\u0447\\u0438\\u044f \\u0438\\u043b\\u0438 \\u043f\\u043e\\u0434\\u0447\\u0435\\u0440\\u043a\\u0438\\u0432\\u0430\\u043d\\u0438\\u044f.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u0423 \\u0432\\u0430\\u0441 \\u0435\\u0441\\u0442\\u044c \\u043d\\u0435 \\u0441\\u043e\\u0445\\u0440\\u0430\\u043d\\u0435\\u043d\\u043d\\u044b\\u0435 \\u0438\\u0437\\u043c\\u0435\\u043d\\u0435\\u043d\\u0438\\u044f. \\u0412\\u044b \\u0443\\u0432\\u0435\\u0440\\u0435\\u043d\\u044b, \\u0447\\u0442\\u043e \\u0445\\u043e\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0439\\u0442\\u0438?\",\n\"Restore last draft\": \"\\u0412\\u043e\\u0441\\u0441\\u0442\\u0430\\u043d\\u043e\\u0432\\u043b\\u0435\\u043d\\u0438\\u0435 \\u043f\\u043e\\u0441\\u043b\\u0435\\u0434\\u043d\\u0435\\u0433\\u043e \\u043f\\u0440\\u043e\\u0435\\u043a\\u0442\\u0430\",\n\"Special character...\": \"\\u0421\\u043f\\u0435\\u0446. \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b\\u044b...\",\n\"Source code\": \"\\u0418\\u0441\\u0445\\u043e\\u0434\\u043d\\u044b\\u0439 \\u043a\\u043e\\u0434\",\n\"Insert\\/Edit code sample\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u0438\\u0442\\u044c\\/\\u0418\\u0437\\u043c\\u0435\\u043d\\u0438\\u0442\\u044c \\u043f\\u0440\\u0438\\u043c\\u0435\\u0440 \\u043a\\u043e\\u0434\\u0430\",\n\"Language\": \"\\u042f\\u0437\\u044b\\u043a\",\n\"Code sample...\": \"\\u041f\\u0440\\u0438\\u043c\\u0435\\u0440 \\u043a\\u043e\\u0434\\u0430...\",\n\"Color Picker\": \"\\u041f\\u0438\\u043f\\u0435\\u0442\\u043a\\u0430 \\u0446\\u0432\\u0435\\u0442\\u0430\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"\\u041d\\u0430\\u043f\\u0440\\u0430\\u0432\\u043b\\u0435\\u043d\\u0438\\u0435 \\u0441\\u043b\\u0435\\u0432\\u0430 \\u043d\\u0430\\u043f\\u0440\\u0430\\u0432\\u043e\",\n\"Right to left\": \"\\u041d\\u0430\\u043f\\u0440\\u0430\\u0432\\u043b\\u0435\\u043d\\u0438\\u0435 \\u0441\\u043f\\u0440\\u0430\\u0432\\u0430 \\u043d\\u0430\\u043b\\u0435\\u0432\\u043e\",\n\"Emoticons...\": \"\\u0421\\u043c\\u0430\\u0439\\u043b\\u0438\\u043a\\u0438...\",\n\"Metadata and Document Properties\": \"\\u041c\\u0435\\u0442\\u0430\\u0434\\u0430\\u043d\\u043d\\u044b\\u0435 \\u0438 \\u0441\\u0432\\u043e\\u0439\\u0441\\u0442\\u0432\\u0430 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\\u0430\",\n\"Title\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a\",\n\"Keywords\": \"\\u041a\\u043b\\u044e\\u0447\\u0438\\u0432\\u044b\\u0435 \\u0441\\u043b\\u043e\\u0432\\u0430\",\n\"Description\": \"\\u041e\\u043f\\u0438\\u0441\\u0430\\u043d\\u0438\\u0435\",\n\"Robots\": \"\\u0420\\u043e\\u0431\\u043e\\u0442\\u044b\",\n\"Author\": \"\\u0410\\u0432\\u0442\\u043e\\u0440\",\n\"Encoding\": \"\\u041a\\u043e\\u0434\\u0438\\u0440\\u043e\\u0432\\u043a\\u0430\",\n\"Fullscreen\": \"\\u041f\\u043e\\u043b\\u043d\\u043e\\u044d\\u043a\\u0440\\u0430\\u043d\\u043d\\u044b\\u0439 \\u0440\\u0435\\u0436\\u0438\\u043c\",\n\"Action\": \"\\u0414\\u0435\\u0439\\u0441\\u0442\\u0432\\u0438\\u0435\",\n\"Shortcut\": \"\\u042f\\u0440\\u043b\\u044b\\u043a\",\n\"Help\": \"\\u041f\\u043e\\u043c\\u043e\\u0449\\u044c\",\n\"Address\": \"\\u0410\\u0434\\u0440\\u0435\\u0441\",\n\"Focus to menubar\": \"\\u0424\\u043e\\u043a\\u0443\\u0441 \\u043d\\u0430 \\u043f\\u0430\\u043d\\u0435\\u043b\\u0438 \\u043c\\u0435\\u043d\\u044e\",\n\"Focus to toolbar\": \"\\u0424\\u043e\\u043a\\u0443\\u0441 \\u043d\\u0430 \\u043f\\u0430\\u043d\\u0435\\u043b\\u0438 \\u0438\\u043d\\u0441\\u0442\\u0440\\u0443\\u043c\\u0435\\u043d\\u0442\\u043e\\u0432\",\n\"Focus to element path\": \"\\u0424\\u043e\\u043a\\u0443\\u0441 \\u043d\\u0430 \\u044d\\u043b\\u0435\\u043c\\u0435\\u043d\\u0442\\u0435 \\u043f\\u0443\\u0442\\u0438\",\n\"Focus to contextual toolbar\": \"\\u0424\\u043e\\u043a\\u0443\\u0441 \\u043d\\u0430 \\u043a\\u043e\\u043d\\u0442\\u0435\\u043a\\u0441\\u0442\\u043d\\u043e\\u0439 \\u043f\\u0430\\u043d\\u0435\\u043b\\u0438 \\u0438\\u043d\\u0441\\u0442\\u0440\\u0443\\u043c\\u0435\\u043d\\u0442\\u043e\\u0432\",\n\"Insert link (if link plugin activated)\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c \\u0441\\u0441\\u044b\\u043b\\u043a\\u0443 (\\u0435\\u0441\\u043b\\u0438 \\u043f\\u043b\\u0430\\u0433\\u0438\\u043d link \\u0430\\u043a\\u0442\\u0438\\u0432\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d)\",\n\"Save (if save plugin activated)\": \"\\u0421\\u043e\\u0445\\u0440\\u0430\\u043d\\u0438\\u0442\\u044c (\\u0435\\u0441\\u043b\\u0438 \\u043f\\u043b\\u0430\\u0433\\u0438\\u043d save \\u0430\\u043a\\u0442\\u0438\\u0432\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d)\",\n\"Find (if searchreplace plugin activated)\": \"\\u041d\\u0430\\u0439\\u0442\\u0438 (\\u0435\\u0441\\u043b\\u0438 \\u043f\\u043b\\u0430\\u0433\\u0438\\u043d searchreplace \\u0430\\u043a\\u0442\\u0438\\u0432\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d)\",\n\"Plugins installed ({0}):\": \"\\u0423\\u0441\\u0442\\u0430\\u043d\\u043e\\u0432\\u043b\\u0435\\u043d\\u043d\\u044b\\u0435 \\u043f\\u043b\\u0430\\u0433\\u0438\\u043d\\u044b ({0}):\",\n\"Premium plugins:\": \"\\u041f\\u0440\\u0435\\u043c\\u0438\\u0443\\u043c \\u043f\\u043b\\u0430\\u0433\\u0438\\u043d\\u044b:\",\n\"Learn more...\": \"\\u0423\\u0437\\u043d\\u0430\\u0442\\u044c \\u0431\\u043e\\u043b\\u044c\\u0448\\u0435...\",\n\"You are using {0}\": \"\\u0412\\u044b \\u0438\\u0441\\u043f\\u043e\\u043b\\u044c\\u0437\\u0443\\u0435\\u0442\\u0435 {0}\",\n\"Plugins\": \"\\u041f\\u043b\\u0430\\u0433\\u0438\\u043d\\u044b\",\n\"Handy Shortcuts\": \"\\u0413\\u043e\\u0440\\u044f\\u0447\\u0438\\u0435 \\u043a\\u043b\\u0430\\u0432\\u0438\\u0448\\u0438\",\n\"Horizontal line\": \"\\u0413\\u043e\\u0440\\u0438\\u0437\\u043e\\u043d\\u0442\\u0430\\u043b\\u044c\\u043d\\u0430\\u044f \\u043b\\u0438\\u043d\\u0438\\u044f\",\n\"Insert\\/edit image\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c\\/\\u0440\\u0435\\u0434\\u0430\\u043a\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435\",\n\"Image description\": \"\\u041e\\u043f\\u0438\\u0441\\u0430\\u043d\\u0438\\u0435 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u044f\",\n\"Source\": \"\\u0418\\u0441\\u0442\\u043e\\u0447\\u043d\\u0438\\u043a\",\n\"Dimensions\": \"\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440\",\n\"Constrain proportions\": \"\\u0421\\u043e\\u0445\\u0440\\u0430\\u043d\\u044f\\u0442\\u044c \\u043f\\u0440\\u043e\\u043f\\u043e\\u0440\\u0446\\u0438\\u0438\",\n\"General\": \"\\u041e\\u0431\\u0449\\u0435\\u0435\",\n\"Advanced\": \"\\u0420\\u0430\\u0441\\u0448\\u0438\\u0440\\u0435\\u043d\\u043d\\u044b\\u0435\",\n\"Style\": \"\\u0421\\u0442\\u0438\\u043b\\u044c\",\n\"Vertical space\": \"\\u0412\\u0435\\u0440\\u0442\\u0438\\u043a\\u0430\\u043b\\u044c\\u043d\\u044b\\u0439 \\u0438\\u043d\\u0442\\u0435\\u0440\\u0432\\u0430\\u043b\",\n\"Horizontal space\": \"\\u0413\\u043e\\u0440\\u0438\\u0437\\u043e\\u043d\\u0442\\u0430\\u043b\\u044c\\u043d\\u044b\\u0439 \\u0438\\u043d\\u0442\\u0435\\u0440\\u0432\\u0430\\u043b\",\n\"Border\": \"\\u0420\\u0430\\u043c\\u043a\\u0430\",\n\"Insert image\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435\",\n\"Image...\": \"\\u0418\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435...\",\n\"Image list\": \"\\u0421\\u043f\\u0438\\u0441\\u043e\\u043a \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0439\",\n\"Rotate counterclockwise\": \"\\u041f\\u043e\\u0432\\u0435\\u0440\\u043d\\u0443\\u0442\\u044c \\u043f\\u0440\\u043e\\u0442\\u0438\\u0432 \\u0447\\u0430\\u0441\\u043e\\u0432\\u043e\\u0439 \\u0441\\u0442\\u0440\\u0435\\u043b\\u043a\\u0438\",\n\"Rotate clockwise\": \"\\u041f\\u043e\\u0432\\u0435\\u0440\\u043d\\u0443\\u0442\\u044c \\u043f\\u043e \\u0447\\u0430\\u0441\\u043e\\u0432\\u043e\\u0439 \\u0441\\u0442\\u0440\\u0435\\u043b\\u043a\\u0435\",\n\"Flip vertically\": \"\\u041e\\u0442\\u0440\\u0430\\u0437\\u0438\\u0442\\u044c \\u043f\\u043e \\u0432\\u0435\\u0440\\u0442\\u0438\\u043a\\u0430\\u043b\\u0438\",\n\"Flip horizontally\": \"\\u041e\\u0442\\u0440\\u0430\\u0437\\u0438\\u0442\\u044c \\u043f\\u043e \\u0433\\u043e\\u0440\\u0438\\u0437\\u043e\\u043d\\u0442\\u0430\\u043b\\u0438\",\n\"Edit image\": \"\\u0420\\u0435\\u0434\\u0430\\u043a\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435\",\n\"Image options\": \"\\u041d\\u0430\\u0441\\u0442\\u0440\\u043e\\u0439\\u043a\\u0438 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u044f\",\n\"Zoom in\": \"\\u041f\\u0440\\u0438\\u0431\\u043b\\u0438\\u0437\\u0438\\u0442\\u044c\",\n\"Zoom out\": \"\\u041e\\u0442\\u0434\\u0430\\u043b\\u0438\\u0442\\u044c\",\n\"Crop\": \"\\u041e\\u0431\\u0440\\u0435\\u0437\\u0430\\u0442\\u044c\",\n\"Resize\": \"\\u0418\\u0437\\u043c\\u0435\\u043d\\u0438\\u0442\\u044c \\u0440\\u0430\\u0437\\u043c\\u0435\\u0440\",\n\"Orientation\": \"\\u041e\\u0440\\u0438\\u0435\\u043d\\u0442\\u0430\\u0446\\u0438\\u044f\",\n\"Brightness\": \"\\u042f\\u0440\\u043a\\u043e\\u0441\\u0442\\u044c\",\n\"Sharpen\": \"\\u0427\\u0435\\u0442\\u043a\\u043e\\u0441\\u0442\\u044c\",\n\"Contrast\": \"\\u041a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0441\\u0442\",\n\"Color levels\": \"\\u0426\\u0432\\u0435\\u0442\\u043e\\u0432\\u044b\\u0435 \\u0443\\u0440\\u043e\\u0432\\u043d\\u0438\",\n\"Gamma\": \"\\u0413\\u0430\\u043c\\u043c\\u0430\",\n\"Invert\": \"\\u0418\\u043d\\u0432\\u0435\\u0440\\u0441\\u0438\\u044f\",\n\"Apply\": \"\\u041f\\u0440\\u0438\\u043c\\u0435\\u043d\\u0438\\u0442\\u044c\",\n\"Back\": \"\\u041d\\u0430\\u0437\\u0430\\u0434\",\n\"Insert date\\/time\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c \\u0434\\u0430\\u0442\\u0443\\/\\u0432\\u0440\\u0435\\u043c\\u044f\",\n\"Date\\/time\": \"\\u0414\\u0430\\u0442\\u0430\\/\\u0432\\u0440\\u0435\\u043c\\u044f\",\n\"Insert\\/Edit Link\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c\\/\\u0440\\u0435\\u0434\\u0430\\u043a\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0441\\u0441\\u044b\\u043b\\u043a\\u0443\",\n\"Insert\\/edit link\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c\\/\\u0440\\u0435\\u0434\\u0430\\u043a\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0441\\u0441\\u044b\\u043b\\u043a\\u0443\",\n\"Text to display\": \"\\u041e\\u0442\\u043e\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u043c\\u044b\\u0439 \\u0442\\u0435\\u043a\\u0441\\u0442\",\n\"Url\": \"\\u0410\\u0434\\u0440\\u0435\\u0441 \\u0441\\u0441\\u044b\\u043b\\u043a\\u0438\",\n\"Open link in...\": \"\\u041e\\u0442\\u043a\\u0440\\u044b\\u0442\\u044c \\u0441\\u0441\\u044b\\u043b\\u043a\\u0443 \\u0432...\",\n\"Current window\": \"\\u0422\\u0435\\u043a\\u0443\\u0449\\u0435\\u0435 \\u043e\\u043a\\u043d\\u043e\",\n\"None\": \"\\u041d\\u0435\\u0442\",\n\"New window\": \"\\u0412 \\u043d\\u043e\\u0432\\u043e\\u043c \\u043e\\u043a\\u043d\\u0435\",\n\"Remove link\": \"\\u0423\\u0434\\u0430\\u043b\\u0438\\u0442\\u044c \\u0441\\u0441\\u044b\\u043b\\u043a\\u0443\",\n\"Anchors\": \"\\u042f\\u043a\\u043e\\u0440\\u044f\",\n\"Link...\": \"\\u0421\\u0441\\u044b\\u043b\\u043a\\u0430...\",\n\"Paste or type a link\": \"\\u0412\\u0432\\u0435\\u0434\\u0438\\u0442\\u0435 \\u0438\\u043b\\u0438 \\u0432\\u0441\\u0442\\u0430\\u0432\\u044c\\u0442\\u0435 \\u0441\\u0441\\u044b\\u043b\\u043a\\u0443\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u0412\\u0432\\u0435\\u0434\\u0451\\u043d\\u043d\\u044b\\u0439 URL \\u044f\\u0432\\u043b\\u044f\\u0435\\u0442\\u0441\\u044f \\u043a\\u043e\\u0440\\u0440\\u0435\\u043a\\u0442\\u043d\\u044b\\u043c \\u0430\\u0434\\u0440\\u0435\\u0441\\u043e\\u043c \\u044d\\u043b\\u0435\\u043a\\u0442\\u0440\\u043e\\u043d\\u043d\\u043e\\u0439 \\u043f\\u043e\\u0447\\u0442\\u044b. \\u0412\\u044b \\u0436\\u0435\\u043b\\u0430\\u0435\\u0442\\u0435 \\u0434\\u043e\\u0431\\u0430\\u0432\\u0438\\u0442\\u044c \\u043f\\u0440\\u0435\\u0444\\u0438\\u043a\\u0441 \\u00abmailto:\\u00bb?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u0412\\u0432\\u0435\\u0434\\u0451\\u043d\\u043d\\u044b\\u0439 URL \\u044f\\u0432\\u043b\\u044f\\u0435\\u0442\\u0441\\u044f \\u0432\\u043d\\u0435\\u0448\\u043d\\u0435\\u0439 \\u0441\\u0441\\u044b\\u043b\\u043a\\u043e\\u0439. \\u0412\\u044b \\u0436\\u0435\\u043b\\u0430\\u0435\\u0442\\u0435 \\u0434\\u043e\\u0431\\u0430\\u0432\\u0438\\u0442\\u044c \\u043f\\u0440\\u0435\\u0444\\u0438\\u043a\\u0441 \\u00abhttp:\\/\\/\\u00bb?\",\n\"Link list\": \"\\u0421\\u043f\\u0438\\u0441\\u043e\\u043a \\u0441\\u0441\\u044b\\u043b\\u043e\\u043a\",\n\"Insert video\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c \\u0432\\u0438\\u0434\\u0435\\u043e\",\n\"Insert\\/edit video\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c\\/\\u0440\\u0435\\u0434\\u0430\\u043a\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0432\\u0438\\u0434\\u0435\\u043e\",\n\"Insert\\/edit media\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c\\/\\u0440\\u0435\\u0434\\u0430\\u043a\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0432\\u0438\\u0434\\u0435\\u043e\",\n\"Alternative source\": \"\\u0410\\u043b\\u044c\\u0442\\u0435\\u0440\\u043d\\u0430\\u0442\\u0438\\u0432\\u043d\\u044b\\u0439 \\u0438\\u0441\\u0442\\u043e\\u0447\\u043d\\u0438\\u043a\",\n\"Alternative source URL\": \"URL \\u0430\\u043b\\u044c\\u0442\\u0435\\u0440\\u043d\\u0430\\u0442\\u0438\\u0432\\u043d\\u043e\\u0433\\u043e \\u0438\\u0441\\u0442\\u043e\\u0447\\u043d\\u0438\\u043a\\u0430\",\n\"Media poster (Image URL)\": \"\\u041f\\u043e\\u0441\\u0442\\u0435\\u0440 \\u043c\\u0443\\u043b\\u044c\\u0442\\u0438\\u043c\\u0435\\u0434\\u0438\\u0430 (URL \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u044f)\",\n\"Paste your embed code below:\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u044c\\u0442\\u0435 \\u0432\\u0430\\u0448 \\u043a\\u043e\\u0434 \\u043d\\u0438\\u0436\\u0435:\",\n\"Embed\": \"\\u041a\\u043e\\u0434 \\u0434\\u043b\\u044f \\u0432\\u0441\\u0442\\u0430\\u0432\\u043a\\u0438\",\n\"Media...\": \"\\u041c\\u0443\\u043b\\u044c\\u0442\\u0438\\u043c\\u0435\\u0434\\u0438\\u0430...\",\n\"Nonbreaking space\": \"\\u041d\\u0435\\u0440\\u0430\\u0437\\u0440\\u044b\\u0432\\u043d\\u044b\\u0439 \\u043f\\u0440\\u043e\\u0431\\u0435\\u043b\",\n\"Page break\": \"\\u0420\\u0430\\u0437\\u0440\\u044b\\u0432 \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u044b\",\n\"Paste as text\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c \\u043a\\u0430\\u043a \\u0442\\u0435\\u043a\\u0441\\u0442\",\n\"Preview\": \"\\u041f\\u0440\\u0435\\u0434\\u043f\\u0440\\u043e\\u0441\\u043c\\u043e\\u0442\\u0440\",\n\"Print...\": \"\\u041d\\u0430\\u043f\\u0435\\u0447\\u0430\\u0442\\u0430\\u0442\\u044c...\",\n\"Save\": \"\\u0421\\u043e\\u0445\\u0440\\u0430\\u043d\\u0438\\u0442\\u044c\",\n\"Find\": \"\\u041d\\u0430\\u0439\\u0442\\u0438\",\n\"Replace with\": \"\\u0417\\u0430\\u043c\\u0435\\u043d\\u0438\\u0442\\u044c \\u043d\\u0430\",\n\"Replace\": \"\\u0417\\u0430\\u043c\\u0435\\u043d\\u0438\\u0442\\u044c\",\n\"Replace all\": \"\\u0417\\u0430\\u043c\\u0435\\u043d\\u0438\\u0442\\u044c \\u0432\\u0441\\u0435\",\n\"Previous\": \"\\u041f\\u0440\\u0435\\u0434\\u044b\\u0434\\u0443\\u0449\\u0438\\u0439\",\n\"Next\": \"\\u0412\\u043d\\u0438\\u0437\",\n\"Find and replace...\": \"\\u041d\\u0430\\u0439\\u0442\\u0438 \\u0438 \\u0437\\u0430\\u043c\\u0435\\u043d\\u0438\\u0442\\u044c...\",\n\"Could not find the specified string.\": \"\\u0417\\u0430\\u0434\\u0430\\u043d\\u043d\\u0430\\u044f \\u0441\\u0442\\u0440\\u043e\\u043a\\u0430 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u0430\",\n\"Match case\": \"\\u0423\\u0447\\u0438\\u0442\\u044b\\u0432\\u0430\\u0442\\u044c \\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\",\n\"Find whole words only\": \"\\u041d\\u0430\\u0439\\u0442\\u0438 \\u0442\\u043e\\u043b\\u044c\\u043a\\u043e \\u0446\\u0435\\u043b\\u044b\\u0435 \\u0441\\u043b\\u043e\\u0432\\u0430\",\n\"Spell check\": \"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u043a\\u0430 \\u043e\\u0440\\u0444\\u043e\\u0433\\u0440\\u0430\\u0444\\u0438\\u0438\",\n\"Ignore\": \"\\u0418\\u0433\\u043d\\u043e\\u0440\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c\",\n\"Ignore all\": \"\\u0418\\u0433\\u043d\\u043e\\u0440\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0432\\u0441\\u0435\",\n\"Finish\": \"\\u0417\\u0430\\u043a\\u043e\\u043d\\u0447\\u0438\\u0442\\u044c\",\n\"Add to Dictionary\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u0438\\u0442\\u044c \\u0432 \\u0441\\u043b\\u043e\\u0432\\u0430\\u0440\\u044c\",\n\"Insert table\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u0443\",\n\"Table properties\": \"\\u0421\\u0432\\u043e\\u0439\\u0441\\u0442\\u0432\\u0430 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u044b\",\n\"Delete table\": \"\\u0423\\u0434\\u0430\\u043b\\u0438\\u0442\\u044c \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u0443\",\n\"Cell\": \"\\u042f\\u0447\\u0435\\u0439\\u043a\\u0430\",\n\"Row\": \"\\u0421\\u0442\\u0440\\u043e\\u043a\\u0430\",\n\"Column\": \"\\u0421\\u0442\\u043e\\u043b\\u0431\\u0435\\u0446\",\n\"Cell properties\": \"\\u041f\\u0430\\u0440\\u0430\\u043c\\u0435\\u0442\\u0440\\u044b \\u044f\\u0447\\u0435\\u0439\\u043a\\u0438\",\n\"Merge cells\": \"\\u041e\\u0431\\u044a\\u0435\\u0434\\u0438\\u043d\\u0438\\u0442\\u044c \\u044f\\u0447\\u0435\\u0439\\u043a\\u0438\",\n\"Split cell\": \"\\u0420\\u0430\\u0437\\u0431\\u0438\\u0442\\u044c \\u044f\\u0447\\u0435\\u0439\\u043a\\u0443\",\n\"Insert row before\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c \\u043f\\u0443\\u0441\\u0442\\u0443\\u044e \\u0441\\u0442\\u0440\\u043e\\u043a\\u0443 \\u0441\\u0432\\u0435\\u0440\\u0445\\u0443\",\n\"Insert row after\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c \\u043f\\u0443\\u0441\\u0442\\u0443\\u044e \\u0441\\u0442\\u0440\\u043e\\u043a\\u0443 \\u0441\\u043d\\u0438\\u0437\\u0443\",\n\"Delete row\": \"\\u0423\\u0434\\u0430\\u043b\\u0438\\u0442\\u044c \\u0441\\u0442\\u0440\\u043e\\u043a\\u0443\",\n\"Row properties\": \"\\u041f\\u0430\\u0440\\u0430\\u043c\\u0435\\u0442\\u0440\\u044b \\u0441\\u0442\\u0440\\u043e\\u043a\\u0438\",\n\"Cut row\": \"\\u0412\\u044b\\u0440\\u0435\\u0437\\u0430\\u0442\\u044c \\u0441\\u0442\\u0440\\u043e\\u043a\\u0443\",\n\"Copy row\": \"\\u041a\\u043e\\u043f\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0441\\u0442\\u0440\\u043e\\u043a\\u0443\",\n\"Paste row before\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c \\u0441\\u0442\\u0440\\u043e\\u043a\\u0443 \\u0441\\u0432\\u0435\\u0440\\u0445\\u0443\",\n\"Paste row after\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c \\u0441\\u0442\\u0440\\u043e\\u043a\\u0443 \\u0441\\u043d\\u0438\\u0437\\u0443\",\n\"Insert column before\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u0438\\u0442\\u044c \\u0441\\u0442\\u043e\\u043b\\u0431\\u0435\\u0446 \\u0441\\u043b\\u0435\\u0432\\u0430\",\n\"Insert column after\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u0438\\u0442\\u044c \\u0441\\u0442\\u043e\\u043b\\u0431\\u0435\\u0446 \\u0441\\u043f\\u0440\\u0430\\u0432\\u0430\",\n\"Delete column\": \"\\u0423\\u0434\\u0430\\u043b\\u0438\\u0442\\u044c \\u0441\\u0442\\u043e\\u043b\\u0431\\u0435\\u0446\",\n\"Cols\": \"\\u0421\\u0442\\u043e\\u043b\\u0431\\u0446\\u044b\",\n\"Rows\": \"\\u0421\\u0442\\u0440\\u043e\\u043a\\u0438\",\n\"Width\": \"\\u0428\\u0438\\u0440\\u0438\\u043d\\u0430\",\n\"Height\": \"\\u0412\\u044b\\u0441\\u043e\\u0442\\u0430\",\n\"Cell spacing\": \"\\u0412\\u043d\\u0435\\u0448\\u043d\\u0438\\u0439 \\u043e\\u0442\\u0441\\u0442\\u0443\\u043f\",\n\"Cell padding\": \"\\u0412\\u043d\\u0443\\u0442\\u0440\\u0435\\u043d\\u043d\\u0438\\u0439 \\u043e\\u0442\\u0441\\u0442\\u0443\\u043f\",\n\"Show caption\": \"\\u041f\\u043e\\u043a\\u0430\\u0437\\u0430\\u0442\\u044c \\u043f\\u043e\\u0434\\u043f\\u0438\\u0441\\u044c\",\n\"Left\": \"\\u041f\\u043e \\u043b\\u0435\\u0432\\u043e\\u043c\\u0443 \\u043a\\u0440\\u0430\\u044e\",\n\"Center\": \"\\u041f\\u043e \\u0446\\u0435\\u043d\\u0442\\u0440\\u0443\",\n\"Right\": \"\\u041f\\u043e \\u043f\\u0440\\u0430\\u0432\\u043e\\u043c\\u0443 \\u043a\\u0440\\u0430\\u044e\",\n\"Cell type\": \"\\u0422\\u0438\\u043f \\u044f\\u0447\\u0435\\u0439\\u043a\\u0438\",\n\"Scope\": \"Scope\",\n\"Alignment\": \"\\u0412\\u044b\\u0440\\u0430\\u0432\\u043d\\u0438\\u0432\\u0430\\u043d\\u0438\\u0435\",\n\"H Align\": \"\\u0413\\u043e\\u0440\\u0438\\u0437\\u043e\\u043d\\u0442\\u0430\\u043b\\u044c\\u043d\\u043e\\u0435 \\u0432\\u044b\\u0440\\u0430\\u0432\\u043d\\u0438\\u0432\\u0430\\u043d\\u0438\\u0435\",\n\"V Align\": \"\\u0412\\u0435\\u0440\\u0442\\u0438\\u043a\\u0430\\u043b\\u044c\\u043d\\u043e\\u0435 \\u0432\\u044b\\u0440\\u0430\\u0432\\u043d\\u0438\\u0432\\u0430\\u043d\\u0438\\u0435\",\n\"Top\": \"\\u041f\\u043e \\u0432\\u0435\\u0440\\u0445\\u0443\",\n\"Middle\": \"\\u041f\\u043e \\u0441\\u0435\\u0440\\u0435\\u0434\\u0438\\u043d\\u0435\",\n\"Bottom\": \"\\u041f\\u043e \\u043d\\u0438\\u0437\\u0443\",\n\"Header cell\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a\",\n\"Row group\": \"\\u0413\\u0440\\u0443\\u043f\\u043f\\u0430 \\u0441\\u0442\\u0440\\u043e\\u043a\",\n\"Column group\": \"\\u0413\\u0440\\u0443\\u043f\\u043f\\u0430 \\u043a\\u043e\\u043b\\u043e\\u043d\\u043e\\u043a\",\n\"Row type\": \"\\u0422\\u0438\\u043f \\u0441\\u0442\\u0440\\u043e\\u043a\\u0438\",\n\"Header\": \"\\u0428\\u0430\\u043f\\u043a\\u0430\",\n\"Body\": \"\\u0422\\u0435\\u043b\\u043e\",\n\"Footer\": \"\\u041d\\u0438\\u0437\",\n\"Border color\": \"\\u0426\\u0432\\u0435\\u0442 \\u0440\\u0430\\u043c\\u043a\\u0438\",\n\"Insert template...\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c \\u0448\\u0430\\u0431\\u043b\\u043e\\u043d...\",\n\"Templates\": \"\\u0428\\u0430\\u0431\\u043b\\u043e\\u043d\\u044b\",\n\"Template\": \"\\u0428\\u0430\\u0431\\u043b\\u043e\\u043d\",\n\"Text color\": \"\\u0426\\u0432\\u0435\\u0442 \\u0442\\u0435\\u043a\\u0441\\u0442\\u0430\",\n\"Background color\": \"\\u0426\\u0432\\u0435\\u0442 \\u0444\\u043e\\u043d\\u0430\",\n\"Custom...\": \"\\u0412\\u044b\\u0431\\u0440\\u0430\\u0442\\u044c\\u2026\",\n\"Custom color\": \"\\u041f\\u043e\\u043b\\u044c\\u0437\\u043e\\u0432\\u0430\\u0442\\u0435\\u043b\\u044c\\u0441\\u043a\\u0438\\u0439 \\u0446\\u0432\\u0435\\u0442\",\n\"No color\": \"\\u0411\\u0435\\u0437 \\u0446\\u0432\\u0435\\u0442\\u0430\",\n\"Remove color\": \"\\u0423\\u0434\\u0430\\u043b\\u0438\\u0442\\u044c \\u0446\\u0432\\u0435\\u0442\",\n\"Table of Contents\": \"\\u0421\\u043e\\u0434\\u0435\\u0440\\u0436\\u0430\\u043d\\u0438\\u0435\",\n\"Show blocks\": \"\\u041f\\u043e\\u043a\\u0430\\u0437\\u044b\\u0432\\u0430\\u0442\\u044c \\u0431\\u043b\\u043e\\u043a\\u0438\",\n\"Show invisible characters\": \"\\u041f\\u043e\\u043a\\u0430\\u0437\\u044b\\u0432\\u0430\\u0442\\u044c \\u043d\\u0435\\u0432\\u0438\\u0434\\u0438\\u043c\\u044b\\u0435 \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b\\u044b\",\n\"Word count\": \"\\u041a\\u043e\\u043b\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043e \\u0441\\u043b\\u043e\\u0432\",\n\"Count\": \"\\u041f\\u043e\\u0434\\u0441\\u0447\\u0435\\u0442\",\n\"Document\": \"\\u0414\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\",\n\"Selection\": \"\\u0412\\u044b\\u0431\\u043e\\u0440\",\n\"Words\": \"\\u0421\\u043b\\u043e\\u0432\\u0430\",\n\"Words: {0}\": \"\\u041a\\u043e\\u043b\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043e \\u0441\\u043b\\u043e\\u0432: {0}\",\n\"{0} words\": \"\\u0441\\u043b\\u043e\\u0432: {0}\",\n\"File\": \"\\u0424\\u0430\\u0439\\u043b\",\n\"Edit\": \"\\u0418\\u0437\\u043c\\u0435\\u043d\\u0438\\u0442\\u044c\",\n\"Insert\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c\",\n\"View\": \"\\u0412\\u0438\\u0434\",\n\"Format\": \"\\u0424\\u043e\\u0440\\u043c\\u0430\\u0442\",\n\"Table\": \"\\u0422\\u0430\\u0431\\u043b\\u0438\\u0446\\u0430\",\n\"Tools\": \"\\u0418\\u043d\\u0441\\u0442\\u0440\\u0443\\u043c\\u0435\\u043d\\u0442\\u044b\",\n\"Powered by {0}\": \"\\u041f\\u0440\\u0438 \\u043f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0435 {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u0422\\u0435\\u043a\\u0441\\u0442\\u043e\\u0432\\u043e\\u0435 \\u043f\\u043e\\u043b\\u0435. \\u041d\\u0430\\u0436\\u043c\\u0438\\u0442\\u0435 ALT-F9 \\u0447\\u0442\\u043e\\u0431\\u044b \\u0432\\u044b\\u0437\\u0432\\u0430\\u0442\\u044c \\u043c\\u0435\\u043d\\u044e, ALT-F10 \\u043f\\u0430\\u043d\\u0435\\u043b\\u044c \\u0438\\u043d\\u0441\\u0442\\u0440\\u0443\\u043c\\u0435\\u043d\\u0442\\u043e\\u0432, ALT-0 \\u0434\\u043b\\u044f \\u0432\\u044b\\u0437\\u043e\\u0432\\u0430 \\u043f\\u043e\\u043c\\u043e\\u0449\\u0438.\",\n\"Image title\": \"\\u041d\\u0430\\u0437\\u0432\\u0430\\u043d\\u0438\\u0435 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u044f\",\n\"Border width\": \"\\u0428\\u0438\\u0440\\u0438\\u043d\\u0430 \\u0440\\u0430\\u043c\\u043a\\u0438\",\n\"Border style\": \"\\u0421\\u0442\\u0438\\u043b\\u044c \\u0440\\u0430\\u043c\\u043a\\u0438\",\n\"Error\": \"\\u041e\\u0448\\u0438\\u0431\\u043a\\u0430\",\n\"Warn\": \"\\u041f\\u0440\\u0435\\u0434\\u0443\\u043f\\u0440\\u0435\\u0436\\u0434\\u0435\\u043d\\u0438\\u0435\",\n\"Valid\": \"\\u0414\\u043e\\u043f\\u0443\\u0441\\u0442\\u0438\\u043c\\u044b\\u0439\",\n\"To open the popup, press Shift+Enter\": \"\\u0427\\u0442\\u043e\\u0431\\u044b \\u043e\\u0442\\u043a\\u0440\\u044b\\u0442\\u044c \\u0432\\u0441\\u043f\\u043b\\u044b\\u0432\\u0430\\u044e\\u0449\\u0435\\u0435 \\u043e\\u043a\\u043d\\u043e, \\u043d\\u0430\\u0436\\u043c\\u0438\\u0442\\u0435 Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u041f\\u043e\\u043b\\u0435 \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d\\u043d\\u043e\\u0433\\u043e \\u0442\\u0435\\u043a\\u0441\\u0442\\u0430. \\u041d\\u0430\\u0436\\u043c\\u0438\\u0442\\u0435 ALT-0, \\u0447\\u0442\\u043e\\u0431\\u044b \\u043e\\u0442\\u043a\\u0440\\u044b\\u0442\\u044c \\u0441\\u043f\\u0440\\u0430\\u0432\\u043a\\u0443.\",\n\"System Font\": \"\\u0421\\u0438\\u0441\\u0442\\u0435\\u043c\\u043d\\u044b\\u0439 \\u0448\\u0440\\u0438\\u0444\\u0442\",\n\"Failed to upload image: {0}\": \"\\u041e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u043f\\u0440\\u0438 \\u043f\\u0435\\u0440\\u0435\\u0434\\u0430\\u0447\\u0435 \\u0438\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u044f: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u041e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u043f\\u0440\\u0438 \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u043a\\u0435 \\u043f\\u043b\\u0430\\u0433\\u0438\\u043d\\u0430: {0} \\u0438\\u0437 URL {1}\",\n\"Failed to load plugin url: {0}\": \"\\u041e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u043f\\u0440\\u0438 \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u043a\\u0435 URL \\u043f\\u043b\\u0430\\u0433\\u0438\\u043d\\u0430: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u041e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u043f\\u0440\\u0438 \\u0438\\u043d\\u0438\\u0446\\u0438\\u0430\\u043b\\u0438\\u0437\\u0430\\u0446\\u0438\\u0438 \\u043f\\u043b\\u0430\\u0433\\u0438\\u043d\\u0430: {0}\",\n\"example\": \"\\u043f\\u0440\\u0438\\u043c\\u0435\\u0440\",\n\"Search\": \"\\u041f\\u043e\\u0438\\u0441\\u043a\",\n\"All\": \"\\u0412\\u0441\\u0435\",\n\"Currency\": \"\\u0412\\u0430\\u043b\\u044e\\u0442\\u0430\",\n\"Text\": \"\\u0422\\u0435\\u043a\\u0441\\u0442\",\n\"Quotations\": \"\\u0426\\u0438\\u0442\\u0430\\u0442\\u044b\",\n\"Mathematical\": \"\\u041c\\u0430\\u0442\\u0435\\u043c\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043a\\u0438\\u0435\",\n\"Extended Latin\": \"\\u0420\\u0430\\u0441\\u0448\\u0438\\u0440\\u0435\\u043d\\u043d\\u0430\\u044f \\u043b\\u0430\\u0442\\u044b\\u043d\\u044c\",\n\"Symbols\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b\\u044b\",\n\"Arrows\": \"\\u0421\\u0442\\u0440\\u0435\\u043b\\u043a\\u0438\",\n\"User Defined\": \"\\u041e\\u043f\\u0440\\u0435\\u0434\\u0435\\u043b\\u044f\\u0435\\u043c\\u044b\\u0435 \\u043f\\u043e\\u043b\\u044c\\u0437\\u043e\\u0432\\u0430\\u0442\\u0435\\u043b\\u0435\\u043c\",\n\"dollar sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0434\\u043e\\u043b\\u043b\\u0430\\u0440\\u0430\",\n\"currency sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0432\\u0430\\u043b\\u044e\\u0442\\u044b\",\n\"euro-currency sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0435\\u0432\\u0440\\u043e\",\n\"colon sign\": \"\\u0414\\u0432\\u043e\\u0435\\u0442\\u043e\\u0447\\u0438\\u0435\",\n\"cruzeiro sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u043a\\u0440\\u0443\\u0437\\u0435\\u0439\\u0440\\u043e\",\n\"french franc sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0444\\u0440\\u0430\\u043d\\u0446\\u0443\\u0437\\u0441\\u043a\\u043e\\u0433\\u043e \\u0444\\u0440\\u0430\\u043d\\u043a\\u0430\",\n\"lira sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u043b\\u0438\\u0440\\u044b\",\n\"mill sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0434\\u0435\\u0441\\u044f\\u0442\\u043e\\u0439 \\u0447\\u0430\\u0441\\u0442\\u0438 \\u0446\\u0435\\u043d\\u0442\\u0430\",\n\"naira sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u043d\\u0430\\u0439\\u0440\\u044b\",\n\"peseta sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u043f\\u0435\\u0441\\u0435\\u0442\\u044b\",\n\"rupee sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0440\\u0443\\u043f\\u0438\\u0438\",\n\"won sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0432\\u043e\\u043d\\u044b\",\n\"new sheqel sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0448\\u0435\\u043a\\u0435\\u043b\\u044f\",\n\"dong sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0434\\u043e\\u043d\\u0433\\u0430\",\n\"kip sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u043a\\u0438\\u043f\\u044b\",\n\"tugrik sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0442\\u0443\\u0433\\u0440\\u0438\\u043a\\u0430\",\n\"drachma sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0434\\u0440\\u0430\\u0445\\u043c\\u044b\",\n\"german penny symbol\": \"\\u0441\\u0438\\u043c\\u0432\\u043e\\u043b \\u043f\\u0444\\u0435\\u043d\\u043d\\u0438\\u0433\\u0430\",\n\"peso sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u043f\\u0435\\u0441\\u043e\",\n\"guarani sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0433\\u0443\\u0430\\u0440\\u0430\\u043d\\u0438\",\n\"austral sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0430\\u0443\\u0441\\u0442\\u0440\\u0430\\u043b\\u0430\",\n\"hryvnia sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0433\\u0440\\u0438\\u0432\\u043d\\u0438\",\n\"cedi sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0441\\u0435\\u0434\\u0438\",\n\"livre tournois sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u043b\\u0438\\u0432\\u0440\\u044b\",\n\"spesmilo sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0441\\u043f\\u0435\\u0441\\u043c\\u0438\\u043b\\u043e\",\n\"tenge sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0442\\u0435\\u043d\\u044c\\u0433\\u0435\",\n\"indian rupee sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0438\\u043d\\u0434\\u0438\\u0439\\u0441\\u043a\\u043e\\u0439 \\u0440\\u0443\\u043f\\u0438\\u0438\",\n\"turkish lira sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0442\\u0443\\u0440\\u0435\\u0446\\u043a\\u043e\\u0439 \\u043b\\u0438\\u0440\\u044b\",\n\"nordic mark sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u043c\\u0430\\u0440\\u043a\\u0438\",\n\"manat sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u043c\\u0430\\u043d\\u0430\\u0442\\u0430\",\n\"ruble sign\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u0440\\u0443\\u0431\\u043b\\u044f\",\n\"yen character\": \"\\u0441\\u0438\\u043c\\u0432\\u043e\\u043b \\u0438\\u0435\\u043d\\u044b\",\n\"yuan character\": \"\\u0441\\u0438\\u043c\\u0432\\u043e\\u043b \\u044e\\u0430\\u043d\\u044f\",\n\"yuan character, in hong kong and taiwan\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b \\u044e\\u0430\\u043d\\u044f, \\u0413\\u043e\\u043d\\u043a\\u043e\\u043d\\u0433 \\u0438 \\u0422\\u0430\\u0439\\u0432\\u0430\\u043d\\u044c\",\n\"yen\\/yuan character variant one\": \"\\u0441\\u0438\\u043c\\u0432\\u043e\\u043b \\u0438\\u0435\\u043d\\u044b\\/\\u044e\\u0430\\u043d\\u044f, \\u0432\\u0430\\u0440\\u0438\\u0430\\u043d\\u0442 1\",\n\"Loading emoticons...\": \"\\u0417\\u0430\\u0433\\u0440\\u0443\\u0437\\u043a\\u0430 \\u0441\\u043c\\u0430\\u0439\\u043b\\u043e\\u0432...\",\n\"Could not load emoticons\": \"\\u041d\\u0435 \\u0443\\u0434\\u0430\\u043b\\u043e\\u0441\\u044c \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044c \\u0441\\u043c\\u0430\\u0439\\u043b\\u044b\",\n\"People\": \"\\u041b\\u044e\\u0434\\u0438\",\n\"Animals and Nature\": \"\\u0416\\u0438\\u0432\\u043e\\u0442\\u043d\\u044b\\u0435 \\u0438 \\u043f\\u0440\\u0438\\u0440\\u043e\\u0434\\u0430\",\n\"Food and Drink\": \"\\u0415\\u0434\\u0430 \\u0438 \\u043d\\u0430\\u043f\\u0438\\u0442\\u043a\\u0438\",\n\"Activity\": \"\\u0414\\u0435\\u044f\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e\\u0441\\u0442\\u044c\",\n\"Travel and Places\": \"\\u041f\\u0443\\u0442\\u0435\\u0448\\u0435\\u0441\\u0442\\u0432\\u0438\\u044f \\u0438 \\u043c\\u0435\\u0441\\u0442\\u0430\",\n\"Objects\": \"\\u041e\\u0431\\u044a\\u0435\\u043a\\u0442\\u044b\",\n\"Flags\": \"\\u0424\\u043b\\u0430\\u0433\\u0438\",\n\"Characters\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b\\u044b\",\n\"Characters (no spaces)\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b\\u044b (\\u0431\\u0435\\u0437 \\u043f\\u0440\\u043e\\u0431\\u0435\\u043b\\u043e\\u0432)\",\n\"{0} characters\": \"{0} \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b.\",\n\"Error: Form submit field collision.\": \"\\u041e\\u0448\\u0438\\u0431\\u043a\\u0430: \\u043a\\u043e\\u043d\\u0444\\u043b\\u0438\\u043a\\u0442 \\u043f\\u043e\\u043b\\u0435\\u0439 \\u043e\\u0442\\u043f\\u0440\\u0430\\u0432\\u043a\\u0438 \\u0444\\u043e\\u0440\\u043c\\u044b.\",\n\"Error: No form element found.\": \"\\u041e\\u0448\\u0438\\u0431\\u043a\\u0430: \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d \\u044d\\u043b\\u0435\\u043c\\u0435\\u043d\\u0442 \\u0444\\u043e\\u0440\\u043c\\u044b.\",\n\"Update\": \"\\u041e\\u0431\\u043d\\u043e\\u0432\\u0438\\u0442\\u044c\",\n\"Color swatch\": \"\\u041e\\u0431\\u0440\\u0430\\u0437\\u0435\\u0446 \\u0446\\u0432\\u0435\\u0442\\u0430\",\n\"Turquoise\": \"\\u0411\\u0438\\u0440\\u044e\\u0437\\u043e\\u0432\\u044b\\u0439\",\n\"Green\": \"\\u0417\\u0435\\u043b\\u0435\\u043d\\u044b\\u0439\",\n\"Blue\": \"\\u0421\\u0438\\u043d\\u0438\\u0439\",\n\"Purple\": \"\\u0420\\u043e\\u0437\\u043e\\u0432\\u044b\\u0439\",\n\"Navy Blue\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0441\\u0438\\u043d\\u0438\\u0439\",\n\"Dark Turquoise\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0431\\u0438\\u0440\\u044e\\u0437\\u043e\\u0432\\u044b\\u0439\",\n\"Dark Green\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0437\\u0435\\u043b\\u0435\\u043d\\u044b\\u0439\",\n\"Medium Blue\": \"\\u0421\\u0440\\u0435\\u0434\\u043d\\u0438\\u0439 \\u0441\\u0438\\u043d\\u0438\\u0439\",\n\"Medium Purple\": \"\\u0423\\u043c\\u0435\\u0440\\u0435\\u043d\\u043d\\u043e \\u043f\\u0443\\u0440\\u043f\\u0443\\u0440\\u043d\\u044b\\u0439\",\n\"Midnight Blue\": \"\\u0427\\u0435\\u0440\\u043d\\u043e-\\u0441\\u0438\\u043d\\u0438\\u0439\",\n\"Yellow\": \"\\u0416\\u0435\\u043b\\u0442\\u044b\\u0439\",\n\"Orange\": \"\\u041e\\u0440\\u0430\\u043d\\u0436\\u0435\\u0432\\u044b\\u0439\",\n\"Red\": \"\\u041a\\u0440\\u0430\\u0441\\u043d\\u044b\\u0439\",\n\"Light Gray\": \"\\u0421\\u0432\\u0435\\u0442\\u043b\\u043e-\\u0441\\u0435\\u0440\\u044b\\u0439\",\n\"Gray\": \"\\u0421\\u0435\\u0440\\u044b\\u0439\",\n\"Dark Yellow\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0436\\u0435\\u043b\\u0442\\u044b\\u0439\",\n\"Dark Orange\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u043e\\u0440\\u0430\\u043d\\u0436\\u0435\\u0432\\u044b\\u0439\",\n\"Dark Red\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u043a\\u0440\\u0430\\u0441\\u043d\\u044b\\u0439\",\n\"Medium Gray\": \"\\u0423\\u043c\\u0435\\u0440\\u0435\\u043d\\u043d\\u043e \\u0441\\u0435\\u0440\\u044b\\u0439\",\n\"Dark Gray\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0441\\u0435\\u0440\\u044b\\u0439\",\n\"Light Green\": \"\\u0421\\u0432\\u0435\\u0442\\u043b\\u043e-\\u0437\\u0435\\u043b\\u0435\\u043d\\u044b\\u0439\",\n\"Light Yellow\": \"\\u0421\\u0432\\u0435\\u0442\\u043b\\u043e-\\u0436\\u0435\\u043b\\u0442\\u044b\\u0439\",\n\"Light Red\": \"\\u0421\\u0432\\u0435\\u0442\\u043b\\u043e-\\u043a\\u0440\\u0430\\u0441\\u043d\\u044b\\u0439\",\n\"Light Purple\": \"\\u0421\\u0432\\u0435\\u0442\\u043b\\u043e-\\u0444\\u0438\\u043e\\u043b\\u0435\\u0442\\u043e\\u0432\\u044b\\u0439\",\n\"Light Blue\": \"\\u0421\\u0432\\u0435\\u0442\\u043b\\u043e-\\u0441\\u0438\\u043d\\u0438\\u0439\",\n\"Dark Purple\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0444\\u0438\\u043e\\u043b\\u0435\\u0442\\u043e\\u0432\\u044b\\u0439\",\n\"Dark Blue\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0441\\u0438\\u043d\\u0438\\u0439\",\n\"Black\": \"\\u0427\\u0435\\u0440\\u043d\\u044b\\u0439\",\n\"White\": \"\\u0411\\u0435\\u043b\\u044b\\u0439\",\n\"Switch to or from fullscreen mode\": \"\\u041f\\u0435\\u0440\\u0435\\u043a\\u043b\\u044e\\u0447\\u0438\\u0442\\u044c \\u043f\\u043e\\u043b\\u043d\\u043e\\u044d\\u043a\\u0440\\u0430\\u043d\\u043d\\u044b\\u0439 \\u0440\\u0435\\u0436\\u0438\\u043c\",\n\"Open help dialog\": \"\\u041e\\u0442\\u043a\\u0440\\u044b\\u0442\\u044c \\u0441\\u043f\\u0440\\u0430\\u0432\\u043a\\u0443\",\n\"history\": \"\\u0438\\u0441\\u0442\\u043e\\u0440\\u0438\\u044f\",\n\"styles\": \"\\u0441\\u0442\\u0438\\u043b\\u0438\",\n\"formatting\": \"\\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d\\u0438\\u0435\",\n\"alignment\": \"\\u0432\\u044b\\u0440\\u0430\\u0432\\u043d\\u0438\\u0432\\u0430\\u043d\\u0438\\u0435\",\n\"indentation\": \"\\u043e\\u0442\\u0441\\u0442\\u0443\\u043f\",\n\"permanent pen\": \"\\u043f\\u043e\\u0441\\u0442\\u043e\\u044f\\u043d\\u043d\\u043e\\u0435 \\u043f\\u0435\\u0440\\u043e\",\n\"comments\": \"\\u043a\\u043e\\u043c\\u043c\\u0435\\u043d\\u0442\\u0430\\u0440\\u0438\\u0438\",\n\"Format Painter\": \"\\u0424\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d\\u0438\\u0435 \\u043f\\u043e \\u043e\\u0431\\u0440\\u0430\\u0437\\u0446\\u0443\",\n\"Insert\\/edit iframe\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c\\/\\u0440\\u0435\\u0434\\u0430\\u043a\\u0442\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u044d\\u043b\\u0435\\u043c\\u0435\\u043d\\u0442 iframe\",\n\"Capitalization\": \"\\u041f\\u0440\\u0438\\u043c\\u0435\\u043d\\u0435\\u043d\\u0438\\u0435 \\u043f\\u0440\\u043e\\u043f\\u0438\\u0441\\u043d\\u044b\\u0445 \\u0431\\u0443\\u043a\\u0432\",\n\"lowercase\": \"\\u043d\\u0438\\u0436\\u043d\\u0438\\u0439 \\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\",\n\"UPPERCASE\": \"\\u0412\\u0415\\u0420\\u0425\\u041d\\u0418\\u0419 \\u0420\\u0415\\u0413\\u0418\\u0421\\u0422\\u0420\",\n\"Title Case\": \"\\u0420\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440 \\u043d\\u0430\\u0437\\u0432\\u0430\\u043d\\u0438\\u044f\",\n\"Permanent Pen Properties\": \"\\u0421\\u0432\\u043e\\u0439\\u0441\\u0442\\u0432\\u0430 \\u043f\\u0435\\u0440\\u043c\\u0430\\u043d\\u0435\\u043d\\u0442\\u043d\\u043e\\u0433\\u043e \\u043f\\u0435\\u0440\\u0430\",\n\"Permanent pen properties...\": \"\\u0421\\u0432\\u043e\\u0439\\u0441\\u0442\\u0432\\u0430 \\u043f\\u0435\\u0440\\u043c\\u0430\\u043d\\u0435\\u043d\\u0442\\u043d\\u043e\\u0433\\u043e \\u043f\\u0435\\u0440\\u0430...\",\n\"Font\": \"\\u0428\\u0440\\u0438\\u0444\\u0442\",\n\"Size\": \"\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440\",\n\"More...\": \"\\u0411\\u043e\\u043b\\u044c\\u0448\\u0435...\",\n\"Spellcheck Language\": \"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u043a\\u0430 \\u043f\\u0440\\u0430\\u0432\\u043e\\u043f\\u0438\\u0441\\u0430\\u043d\\u0438\\u044f\",\n\"Select...\": \"\\u0412\\u044b\\u0431\\u0440\\u0430\\u0442\\u044c...\",\n\"Preferences\": \"\\u041f\\u0440\\u0435\\u0434\\u043f\\u043e\\u0447\\u0442\\u0435\\u043d\\u0438\\u044f\",\n\"Yes\": \"\\u0414\\u0430\",\n\"No\": \"\\u041d\\u0435\\u0442\",\n\"Keyboard Navigation\": \"\\u0423\\u043f\\u0440\\u0430\\u0432\\u043b\\u0435\\u043d\\u0438\\u0435 \\u0441 \\u043f\\u043e\\u043c\\u043e\\u0449\\u044c\\u044e \\u043a\\u043b\\u0430\\u0432\\u0438\\u0430\\u0442\\u0443\\u0440\\u044b\",\n\"Version\": \"\\u0412\\u0435\\u0440\\u0441\\u0438\\u044f\",\n\"Anchor\": \"\\u042f\\u043a\\u043e\\u0440\\u044c\",\n\"Special character\": \"\\u0421\\u043f\\u0435\\u0446\\u0438\\u0430\\u043b\\u044c\\u043d\\u044b\\u0435 \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b\\u044b\",\n\"Code sample\": \"\\u041f\\u0440\\u0438\\u043c\\u0435\\u0440 \\u043a\\u043e\\u0434\\u0430\",\n\"Color\": \"\\u0426\\u0432\\u0435\\u0442\",\n\"Emoticons\": \"\\u0414\\u043e\\u0431\\u0430\\u0432\\u0438\\u0442\\u044c \\u0441\\u043c\\u0430\\u0439\\u043b\",\n\"Document properties\": \"\\u0421\\u0432\\u043e\\u0439\\u0441\\u0442\\u0432\\u0430 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\\u0430\",\n\"Image\": \"\\u0418\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u044f\",\n\"Insert link\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c \\u0441\\u0441\\u044b\\u043b\\u043a\\u0443\",\n\"Target\": \"\\u041e\\u0442\\u043a\\u0440\\u044b\\u0432\\u0430\\u0442\\u044c \\u0441\\u0441\\u044b\\u043b\\u043a\\u0443\",\n\"Link\": \"\\u0421\\u0441\\u044b\\u043b\\u043a\\u0430\",\n\"Poster\": \"\\u0418\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435\",\n\"Media\": \"\\u0412\\u0438\\u0434\\u0435\\u043e\",\n\"Print\": \"\\u041f\\u0435\\u0447\\u0430\\u0442\\u044c\",\n\"Prev\": \"\\u0412\\u0432\\u0435\\u0440\\u0445\",\n\"Find and replace\": \"\\u041f\\u043e\\u0438\\u0441\\u043a \\u0438 \\u0437\\u0430\\u043c\\u0435\\u043d\\u0430\",\n\"Whole words\": \"\\u0421\\u043b\\u043e\\u0432\\u043e \\u0446\\u0435\\u043b\\u0438\\u043a\\u043e\\u043c\",\n\"Spellcheck\": \"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u0438\\u0442\\u044c \\u043f\\u0440\\u0430\\u0432\\u043e\\u043f\\u0438\\u0441\\u0430\\u043d\\u0438\\u0435\",\n\"Caption\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a\",\n\"Insert template\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u044c \\u0448\\u0430\\u0431\\u043b\\u043e\\u043d\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/sk.js",
    "content": "tinymce.addI18n('sk',{\n\"Redo\": \"Znova\",\n\"Undo\": \"Sp\\u00e4\\u0165\",\n\"Cut\": \"Vystrihn\\u00fa\\u0165\",\n\"Copy\": \"Kop\\u00edrova\\u0165\",\n\"Paste\": \"Prilepi\\u0165\",\n\"Select all\": \"Ozna\\u010di\\u0165 v\\u0161etko\",\n\"New document\": \"Nov\\u00fd dokument\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Zru\\u0161i\\u0165\",\n\"Visual aids\": \"Vizu\\u00e1lne pom\\u00f4cky\",\n\"Bold\": \"Tu\\u010dn\\u00e9\",\n\"Italic\": \"Kurz\\u00edva\",\n\"Underline\": \"Pod\\u010diarknut\\u00e9\",\n\"Strikethrough\": \"Pre\\u010diarknut\\u00e9\",\n\"Superscript\": \"Horn\\u00fd index\",\n\"Subscript\": \"Doln\\u00fd index\",\n\"Clear formatting\": \"Vymaza\\u0165 form\\u00e1tovanie\",\n\"Align left\": \"Zarovna\\u0165 v\\u013eavo\",\n\"Align center\": \"Zarovna\\u0165 na stred\",\n\"Align right\": \"Zarovna\\u0165 vpravo\",\n\"Justify\": \"Zarovna\\u0165\",\n\"Bullet list\": \"Zoznam s odr\\u00e1\\u017ekami\",\n\"Numbered list\": \"\\u010c\\u00edslovan\\u00fd zoznam\",\n\"Decrease indent\": \"Zmen\\u0161i\\u0165 odsadenie\",\n\"Increase indent\": \"Zv\\u00e4\\u010d\\u0161i\\u0165 odsadenie\",\n\"Close\": \"Zatvori\\u0165\",\n\"Formats\": \"Form\\u00e1ty\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"V\\u00e1\\u0161 prehliada\\u010d nepodporuje priamy pr\\u00edstup do schr\\u00e1nky. Pou\\u017eite kl\\u00e1vesov\\u00e9 skratky Ctrl+X\\/C\\/V.\",\n\"Headers\": \"Z\\u00e1hlavia\",\n\"Header 1\": \"Z\\u00e1hlavie 1\",\n\"Header 2\": \"Z\\u00e1hlavie 2\",\n\"Header 3\": \"Z\\u00e1hlavie 3\",\n\"Header 4\": \"Z\\u00e1hlavie 4\",\n\"Header 5\": \"Z\\u00e1hlavie 5\",\n\"Header 6\": \"Z\\u00e1hlavie 6\",\n\"Headings\": \"Nadpisy\",\n\"Heading 1\": \"Nadpis 1\",\n\"Heading 2\": \"Nadpis 2\",\n\"Heading 3\": \"Nadpis 3\",\n\"Heading 4\": \"Nadpis 4\",\n\"Heading 5\": \"Nadpis 5\",\n\"Heading 6\": \"Nadpis 6\",\n\"Preformatted\": \"Predform\\u00e1tovan\\u00e9\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"K\\u00f3d\",\n\"Paragraph\": \"Odstavec\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Vlo\\u017een\\u00e9 \\u0161t\\u00fdly\",\n\"Blocks\": \"Bloky\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Vkladanie je v m\\u00f3de neform\\u00e1tovan\\u00e9ho textu. Vkladan\\u00fd obsah bude vlo\\u017een\\u00fd ako neform\\u00e1tovan\\u00fd, a\\u017e pok\\u00fdm t\\u00fato mo\\u017enos\\u0165 nevypnete.\",\n\"Fonts\": \"Typy p\\u00edsma\",\n\"Font Sizes\": \"Ve\\u013ekosti p\\u00edsma\",\n\"Class\": \"Trieda\",\n\"Browse for an image\": \"N\\u00e1js\\u0165 obr\\u00e1zok\",\n\"OR\": \"ALEBO\",\n\"Drop an image here\": \"Pretiahnite obr\\u00e1zok sem\",\n\"Upload\": \"Nahra\\u0165\",\n\"Block\": \"Blok\",\n\"Align\": \"Zarovna\\u0165\",\n\"Default\": \"V\\u00fdchodzie\",\n\"Circle\": \"Kruh\",\n\"Disc\": \"Disk\",\n\"Square\": \"\\u0160tvorec\",\n\"Lower Alpha\": \"Mal\\u00e9 p\\u00edsmen\\u00e1\",\n\"Lower Greek\": \"Mal\\u00e9 gr\\u00e9cke p\\u00edsmen\\u00e1\",\n\"Lower Roman\": \"Mal\\u00e9 r\\u00edmske \\u010d\\u00edslice\",\n\"Upper Alpha\": \"Ve\\u013ek\\u00e9 p\\u00edsmen\\u00e1\",\n\"Upper Roman\": \"Ve\\u013ek\\u00e9 r\\u00edmske \\u010d\\u00edslice\",\n\"Anchor...\": \"Kotva...\",\n\"Name\": \"N\\u00e1zov\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id by malo za\\u010d\\u00edna\\u0165 p\\u00edsmenom, nasledovan\\u00e9 p\\u00edsmenami, \\u010d\\u00edslami, pom\\u013a\\u010dkami, bodkami, dvojbodkami alebo podtr\\u017en\\u00edkmi.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"M\\u00e1te neulo\\u017een\\u00e9 zmeny, naozaj chcete opusti\\u0165 str\\u00e1nku?\",\n\"Restore last draft\": \"Obnovi\\u0165 posledn\\u00fd koncept\",\n\"Special character...\": \"\\u0160peci\\u00e1lny znak...\",\n\"Source code\": \"Zdrojov\\u00fd k\\u00f3d\",\n\"Insert\\/Edit code sample\": \"Vlo\\u017ei\\u0165\\/upravi\\u0165 vzorku k\\u00f3du\",\n\"Language\": \"Jazyk\",\n\"Code sample...\": \"Vzorka k\\u00f3du...\",\n\"Color Picker\": \"V\\u00fdber farieb\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Z\\u013eava doprava\",\n\"Right to left\": \"Sprava do\\u013eava\",\n\"Emoticons...\": \"Smajl\\u00edky...\",\n\"Metadata and Document Properties\": \"Meta\\u00fadaje a vlastnosti dokumentu\",\n\"Title\": \"Nadpis\",\n\"Keywords\": \"K\\u013e\\u00fa\\u010dov\\u00e9 slov\\u00e1\",\n\"Description\": \"Popis\",\n\"Robots\": \"Preh\\u013ead\\u00e1vacie roboty\",\n\"Author\": \"Autor\",\n\"Encoding\": \"K\\u00f3dovanie\",\n\"Fullscreen\": \"Na cel\\u00fa obrazovku\",\n\"Action\": \"Action\",\n\"Shortcut\": \"Shortcut\",\n\"Help\": \"Help\",\n\"Address\": \"Address\",\n\"Focus to menubar\": \"Focus to menubar\",\n\"Focus to toolbar\": \"Focus to toolbar\",\n\"Focus to element path\": \"Focus to element path\",\n\"Focus to contextual toolbar\": \"Focus to contextual toolbar\",\n\"Insert link (if link plugin activated)\": \"Insert link (if link plugin activated)\",\n\"Save (if save plugin activated)\": \"Save (if save plugin activated)\",\n\"Find (if searchreplace plugin activated)\": \"Find (if searchreplace plugin activated)\",\n\"Plugins installed ({0}):\": \"Plugins installed ({0}):\",\n\"Premium plugins:\": \"Premium plugins:\",\n\"Learn more...\": \"Learn more...\",\n\"You are using {0}\": \"You are using {0}\",\n\"Plugins\": \"Pluginy\",\n\"Handy Shortcuts\": \"U\\u017eito\\u010dn\\u00e9 odkazy\",\n\"Horizontal line\": \"Horizont\\u00e1lna \\u010diara\",\n\"Insert\\/edit image\": \"Vlo\\u017ei\\u0165\\/upravi\\u0165 obr\\u00e1zok\",\n\"Image description\": \"Popis obr\\u00e1zku\",\n\"Source\": \"Zdroj\",\n\"Dimensions\": \"Rozmery\",\n\"Constrain proportions\": \"Vymedzen\\u00e9 proporcie\",\n\"General\": \"Hlavn\\u00e9\",\n\"Advanced\": \"Pokro\\u010dil\\u00e9\",\n\"Style\": \"\\u0160t\\u00fdl\",\n\"Vertical space\": \"Vertik\\u00e1lny priestor\",\n\"Horizontal space\": \"Horizont\\u00e1lny priestor\",\n\"Border\": \"Or\\u00e1movanie\",\n\"Insert image\": \"Vlo\\u017ei\\u0165 obr\\u00e1zok\",\n\"Image...\": \"Obr\\u00e1zok...\",\n\"Image list\": \"Zoznam obr\\u00e1zkov\",\n\"Rotate counterclockwise\": \"Oto\\u010di\\u0165 proti smeru hodinov\\u00fdch ru\\u010di\\u010diek\",\n\"Rotate clockwise\": \"Oto\\u010di\\u0165 v smere hodinov\\u00fdch ru\\u010di\\u010diek\",\n\"Flip vertically\": \"Preklopi\\u0165 vertik\\u00e1lne\",\n\"Flip horizontally\": \"Preklopi\\u0165 horizont\\u00e1lne\",\n\"Edit image\": \"Upravi\\u0165 obr\\u00e1zok\",\n\"Image options\": \"Mo\\u017enosti obr\\u00e1zku\",\n\"Zoom in\": \"Pribl\\u00ed\\u017ei\\u0165\",\n\"Zoom out\": \"Oddiali\\u0165\",\n\"Crop\": \"Vyreza\\u0165\",\n\"Resize\": \"Zmeni\\u0165 ve\\u013ekos\\u0165\",\n\"Orientation\": \"Orient\\u00e1cia\",\n\"Brightness\": \"Jas\",\n\"Sharpen\": \"Zaostri\\u0165\",\n\"Contrast\": \"Kontrast\",\n\"Color levels\": \"\\u00darovne farieb\",\n\"Gamma\": \"Gama\",\n\"Invert\": \"Invertova\\u0165\",\n\"Apply\": \"Pou\\u017ei\\u0165\",\n\"Back\": \"Sp\\u00e4\\u0165\",\n\"Insert date\\/time\": \"Vlo\\u017ei\\u0165 d\\u00e1tum\\/\\u010das\",\n\"Date\\/time\": \"D\\u00e1tum\\/\\u010das\",\n\"Insert\\/Edit Link\": \"Vlo\\u017ei\\u0165\\/Upravi\\u0165 odkaz\",\n\"Insert\\/edit link\": \"Vlo\\u017ei\\u0165\\/upravi\\u0165 odkaz\",\n\"Text to display\": \"Zobrazen\\u00fd text\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Otvori\\u0165 odkaz v...\",\n\"Current window\": \"Aktu\\u00e1lne okno\",\n\"None\": \"\\u017diadne\",\n\"New window\": \"Nov\\u00e9 okno\",\n\"Remove link\": \"Odstr\\u00e1ni\\u0165 odkaz\",\n\"Anchors\": \"Kotvy\",\n\"Link...\": \"Odkaz...\",\n\"Paste or type a link\": \"Prilepte alebo nap\\u00ed\\u0161te odkaz\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"URL, ktor\\u00fa ste vlo\\u017eili je pravdepodobne emailov\\u00e1 adresa. \\u017del\\u00e1te si prida\\u0165 vy\\u017eadovan\\u00fa mailto: predponu?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"URL adresa ktor\\u00fa ste zadali vyzer\\u00e1 ako extern\\u00fd odkaz. Chcete prida\\u0165 vy\\u017eadovan\\u00fa http:\\/\\/ predponu?\",\n\"Link list\": \"Zoznam odkazov\",\n\"Insert video\": \"Vlo\\u017ei\\u0165 video\",\n\"Insert\\/edit video\": \"Vlo\\u017ei\\u0165\\/upravi\\u0165 video\",\n\"Insert\\/edit media\": \"Vlo\\u017ei\\u0165\\/upravi\\u0165 m\\u00e9di\\u00e1\",\n\"Alternative source\": \"Alternat\\u00edvny zdroj\",\n\"Alternative source URL\": \"Alternat\\u00edvny zdroj URL\",\n\"Media poster (Image URL)\": \"Obr\\u00e1zok m\\u00e9dia (URL obr\\u00e1zka)\",\n\"Paste your embed code below:\": \"Vlo\\u017ete k\\u00f3d pre vlo\\u017eenie na str\\u00e1nku:\",\n\"Embed\": \"Vlo\\u017een\\u00e9\",\n\"Media...\": \"M\\u00e9di\\u00e1...\",\n\"Nonbreaking space\": \"Nedelite\\u013en\\u00e1 medzera\",\n\"Page break\": \"Zalomenie str\\u00e1nky\",\n\"Paste as text\": \"Vlo\\u017ei\\u0165 ako text\",\n\"Preview\": \"N\\u00e1h\\u013ead\",\n\"Print...\": \"Tla\\u010d...\",\n\"Save\": \"Ulo\\u017ei\\u0165\",\n\"Find\": \"H\\u013eada\\u0165\",\n\"Replace with\": \"Nahradi\\u0165 za\",\n\"Replace\": \"Nahradi\\u0165\",\n\"Replace all\": \"Nahradi\\u0165 v\\u0161etko\",\n\"Previous\": \"Predch\\u00e1dzaj\\u00face\",\n\"Next\": \"Nasleduj\\u00face\",\n\"Find and replace...\": \"N\\u00e1js\\u0165 a nahradi\\u0165...\",\n\"Could not find the specified string.\": \"Zadan\\u00fd re\\u0165azec sa nena\\u0161iel.\",\n\"Match case\": \"Rozli\\u0161ova\\u0165 ve\\u013ek\\u00e9\\/mal\\u00e9\",\n\"Find whole words only\": \"H\\u013eada\\u0165 len cel\\u00e9 slov\\u00e1\",\n\"Spell check\": \"Kontrola pravopisu\",\n\"Ignore\": \"Ignorova\\u0165\",\n\"Ignore all\": \"Ignorova\\u0165 v\\u0161etko\",\n\"Finish\": \"Dokon\\u010di\\u0165\",\n\"Add to Dictionary\": \"Prida\\u0165 do slovn\\u00edka\",\n\"Insert table\": \"Vlo\\u017ei\\u0165 tabu\\u013eku\",\n\"Table properties\": \"Nastavenia tabu\\u013eky\",\n\"Delete table\": \"Zmaza\\u0165 tabu\\u013eku\",\n\"Cell\": \"Bunka\",\n\"Row\": \"Riadok\",\n\"Column\": \"St\\u013apec\",\n\"Cell properties\": \"Vlastnosti bunky\",\n\"Merge cells\": \"Spoji\\u0165 bunky\",\n\"Split cell\": \"Rozdeli\\u0165 bunku\",\n\"Insert row before\": \"Vlo\\u017ei\\u0165 nov\\u00fd riadok pred\",\n\"Insert row after\": \"Vlo\\u017ei\\u0165 nov\\u00fd riadok za\",\n\"Delete row\": \"Zmaza\\u0165 riadok\",\n\"Row properties\": \"Vlastnosti riadku\",\n\"Cut row\": \"Vystrihn\\u00fa\\u0165 riadok\",\n\"Copy row\": \"Kop\\u00edrova\\u0165 riadok\",\n\"Paste row before\": \"Vlo\\u017ei\\u0165 riadok pred\",\n\"Paste row after\": \"Vlo\\u017ei\\u0165 riadok za\",\n\"Insert column before\": \"Prida\\u0165 nov\\u00fd st\\u013apec pred\",\n\"Insert column after\": \"Prida\\u0165 nov\\u00fd st\\u013apec za\",\n\"Delete column\": \"Vymaza\\u0165 st\\u013apec\",\n\"Cols\": \"St\\u013apce\",\n\"Rows\": \"Riadky\",\n\"Width\": \"\\u0160\\u00edrka\",\n\"Height\": \"V\\u00fd\\u0161ka\",\n\"Cell spacing\": \"Priestor medzi bunkami\",\n\"Cell padding\": \"Odsadenie v bunk\\u00e1ch\",\n\"Show caption\": \"Zobrazi\\u0165 popis\",\n\"Left\": \"V\\u013eavo\",\n\"Center\": \"Na stred\",\n\"Right\": \"Vpravo\",\n\"Cell type\": \"Typ bunky\",\n\"Scope\": \"Oblas\\u0165\",\n\"Alignment\": \"Zarovnanie\",\n\"H Align\": \"Horizont\\u00e1lne zarovnanie\",\n\"V Align\": \"Vertik\\u00e1lne zarovnanie\",\n\"Top\": \"Vrch\",\n\"Middle\": \"Stred\",\n\"Bottom\": \"Spodok\",\n\"Header cell\": \"Bunka z\\u00e1hlavia\",\n\"Row group\": \"Skupina riadkov\",\n\"Column group\": \"Skupina st\\u013apcov\",\n\"Row type\": \"Typ riadku\",\n\"Header\": \"Z\\u00e1hlavie\",\n\"Body\": \"Telo\",\n\"Footer\": \"P\\u00e4ti\\u010dka\",\n\"Border color\": \"Farba or\\u00e1movania\",\n\"Insert template...\": \"Vlo\\u017ei\\u0165 \\u0161abl\\u00f3nu...\",\n\"Templates\": \"\\u0160abl\\u00f3ny\",\n\"Template\": \"\\u0160abl\\u00f3na\",\n\"Text color\": \"Farba textu\",\n\"Background color\": \"Farba pozadia\",\n\"Custom...\": \"Vlastn\\u00e1...\",\n\"Custom color\": \"Vlastn\\u00e1 farba\",\n\"No color\": \"Bez farby\",\n\"Remove color\": \"Odstr\\u00e1ni\\u0165 farbu\",\n\"Table of Contents\": \"Obsah\",\n\"Show blocks\": \"Zobrazi\\u0165 bloky\",\n\"Show invisible characters\": \"Zobrazi\\u0165 skryt\\u00e9 znaky\",\n\"Word count\": \"Po\\u010det slov\",\n\"Count\": \"Po\\u010det\",\n\"Document\": \"Dokument\",\n\"Selection\": \"V\\u00fdber\",\n\"Words\": \"Slov\\u00e1\",\n\"Words: {0}\": \"Slov: {0}\",\n\"{0} words\": \"{0} slov\\u00e1\\/slov\",\n\"File\": \"S\\u00fabor\",\n\"Edit\": \"Upravi\\u0165\",\n\"Insert\": \"Vlo\\u017ei\\u0165\",\n\"View\": \"Zobrazi\\u0165\",\n\"Format\": \"Form\\u00e1t\",\n\"Table\": \"Tabu\\u013eka\",\n\"Tools\": \"N\\u00e1stroje\",\n\"Powered by {0}\": \"Pou\\u017e\\u00edva {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Textov\\u00e9 pole. Stla\\u010dte ALT-F9 pre zobrazenie menu, ALT-F10 pre zobrazenie panela n\\u00e1strojov, ALT-0 pre n\\u00e1povedu.\",\n\"Image title\": \"N\\u00e1zov obr\\u00e1zka\",\n\"Border width\": \"\\u0160\\u00edrka okraja\",\n\"Border style\": \"\\u0160t\\u00fdl okraja\",\n\"Error\": \"Chyba\",\n\"Warn\": \"Upozornenie\",\n\"Valid\": \"Platn\\u00e9\",\n\"To open the popup, press Shift+Enter\": \"Na otvorenie kontextovej ponuky stla\\u010dte Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Oblas\\u0165 pre text vo form\\u00e1te RTF. Stla\\u010dte ALT-0 pre n\\u00e1povedu.\",\n\"System Font\": \"Syst\\u00e9mov\\u00e9 p\\u00edsmo\",\n\"Failed to upload image: {0}\": \"Obr\\u00e1zok sa nepodarilo nahra\\u0165: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Plugin: {0} sa nepodarilo nahra\\u0165 z url {1}\",\n\"Failed to load plugin url: {0}\": \"Nepodarilo sa nahra\\u0165 plugin url: {0}\",\n\"Failed to initialize plugin: {0}\": \"Nepodarilo sa inicializova\\u0165 plugin: {0}\",\n\"example\": \"pr\\u00edklad\",\n\"Search\": \"Vyh\\u013eada\\u0165\",\n\"All\": \"V\\u0161etko\",\n\"Currency\": \"Mena\",\n\"Text\": \"Text\",\n\"Quotations\": \"Kvot\\u00e1cie\",\n\"Mathematical\": \"Matematick\\u00e9\",\n\"Extended Latin\": \"Roz\\u0161\\u00edren\\u00e1 latinka\",\n\"Symbols\": \"Symboly\",\n\"Arrows\": \"\\u0160\\u00edpky\",\n\"User Defined\": \"Definovan\\u00e9 pou\\u017e\\u00edvate\\u013eom\",\n\"dollar sign\": \"znak pre dol\\u00e1r\",\n\"currency sign\": \"znak meny\",\n\"euro-currency sign\": \"znak eura\",\n\"colon sign\": \"znak dvojbodky\",\n\"cruzeiro sign\": \"znak pre cruzeiro\",\n\"french franc sign\": \"znak pre franc\\u00fazsky frank\",\n\"lira sign\": \"znak pre l\\u00edru\",\n\"mill sign\": \"znak pre mill\",\n\"naira sign\": \"znak pre nairu\",\n\"peseta sign\": \"znak pre pesetu\",\n\"rupee sign\": \"znak pre rupiu\",\n\"won sign\": \"znak pre won\",\n\"new sheqel sign\": \"znak pre nov\\u00fd \\u0161ekel\",\n\"dong sign\": \"znak pre dong\",\n\"kip sign\": \"znak pre kip\",\n\"tugrik sign\": \"znak pre tugrik\",\n\"drachma sign\": \"znak pre drachmu\",\n\"german penny symbol\": \"znak pre nemeck\\u00fd pfennig\",\n\"peso sign\": \"znak pre peso\",\n\"guarani sign\": \"znak pre guarani\",\n\"austral sign\": \"znak pre austral\",\n\"hryvnia sign\": \"znak pre hrivnu\",\n\"cedi sign\": \"znak pre cedi\",\n\"livre tournois sign\": \"znak pre livre tournois\",\n\"spesmilo sign\": \"znak pre spesmilo\",\n\"tenge sign\": \"znak pre tenge\",\n\"indian rupee sign\": \"znak pre indick\\u00fa rupiu\",\n\"turkish lira sign\": \"znak pre tureck\\u00fa l\\u00edru\",\n\"nordic mark sign\": \"znak pre nordick\\u00fa marku\",\n\"manat sign\": \"znak pre manat\",\n\"ruble sign\": \"znak pre rube\\u013e\",\n\"yen character\": \"znak pre jen\",\n\"yuan character\": \"znak pre j\\u00fcan\",\n\"yuan character, in hong kong and taiwan\": \"znak pre j\\u00fcan, v Hongkongu a Taiwane\",\n\"yen\\/yuan character variant one\": \"znak pre jen\\/j\\u00fcan variant jedna\",\n\"Loading emoticons...\": \"Na\\u010d\\u00edtavam smajl\\u00edky...\",\n\"Could not load emoticons\": \"Smajl\\u00edky sa nepodarilo na\\u010d\\u00edta\\u0165\",\n\"People\": \"\\u013dudia\",\n\"Animals and Nature\": \"Zvierat\\u00e1 a pr\\u00edroda\",\n\"Food and Drink\": \"Jedlo a n\\u00e1poje\",\n\"Activity\": \"Aktivity\",\n\"Travel and Places\": \"Cestovanie a miesta\",\n\"Objects\": \"Objekty\",\n\"Flags\": \"Vlajky\",\n\"Characters\": \"Znaky\",\n\"Characters (no spaces)\": \"Znaky (bez medzier)\",\n\"{0} characters\": \"Znaky: {0}\",\n\"Error: Form submit field collision.\": \"Chyba: konflikt po\\u013ea odosielania formul\\u00e1ra.\",\n\"Error: No form element found.\": \"Chyba: nena\\u0161iel sa prvok formul\\u00e1ra.\",\n\"Update\": \"Aktualizova\\u0165\",\n\"Color swatch\": \"Vzorky farieb\",\n\"Turquoise\": \"Tyrkysov\\u00e1\",\n\"Green\": \"Zelen\\u00e1\",\n\"Blue\": \"Modr\\u00e1\",\n\"Purple\": \"Fialov\\u00e1\",\n\"Navy Blue\": \"N\\u00e1morn\\u00edcka modr\\u00e1\",\n\"Dark Turquoise\": \"Tmavotyrkysov\\u00e1\",\n\"Dark Green\": \"Tmavozelen\\u00e1\",\n\"Medium Blue\": \"Stredn\\u00e1 modr\\u00e1\",\n\"Medium Purple\": \"Stredn\\u00e1 fialov\\u00e1\",\n\"Midnight Blue\": \"Polno\\u010dn\\u00e1 modr\\u00e1\",\n\"Yellow\": \"\\u017dlt\\u00e1\",\n\"Orange\": \"Oran\\u017eov\\u00e1\",\n\"Red\": \"\\u010cerven\\u00e1\",\n\"Light Gray\": \"Svetlosiv\\u00e1\",\n\"Gray\": \"Siv\\u00e1\",\n\"Dark Yellow\": \"Tmavo\\u017elt\\u00e1\",\n\"Dark Orange\": \"Tmavooran\\u017eov\\u00e1\",\n\"Dark Red\": \"Tmavo\\u010derven\\u00e1\",\n\"Medium Gray\": \"Stredn\\u00e1 siv\\u00e1\",\n\"Dark Gray\": \"Tmavosiv\\u00e1\",\n\"Light Green\": \"Svetlozelen\\u00e1\",\n\"Light Yellow\": \"Svetlo\\u017elt\\u00e1\",\n\"Light Red\": \"Svetlo\\u010derven\\u00e1\",\n\"Light Purple\": \"Svetlofialov\\u00e1\",\n\"Light Blue\": \"Svetlomodr\\u00e1\",\n\"Dark Purple\": \"Tmavofialov\\u00e1\",\n\"Dark Blue\": \"Tmavomodr\\u00e1\",\n\"Black\": \"\\u010cierna\",\n\"White\": \"Biela\",\n\"Switch to or from fullscreen mode\": \"Prepn\\u00fa\\u0165 do alebo z re\\u017eimu plnej obrazovky\",\n\"Open help dialog\": \"Otvori\\u0165 okno n\\u00e1povedy\",\n\"history\": \"hist\\u00f3ria\",\n\"styles\": \"\\u0161t\\u00fdly\",\n\"formatting\": \"form\\u00e1tovanie\",\n\"alignment\": \"zarovnanie\",\n\"indentation\": \"odsadenie\",\n\"permanent pen\": \"fixka\",\n\"comments\": \"koment\\u00e1re\",\n\"Format Painter\": \"Kop\\u00edrova\\u0165 form\\u00e1t\",\n\"Insert\\/edit iframe\": \"Vlo\\u017ei\\u0165\\/upravi\\u0165 iframe\",\n\"Capitalization\": \"Ve\\u013ek\\u00e9 p\\u00edsmen\\u00e1\",\n\"lowercase\": \"mal\\u00e9 p\\u00edsmen\\u00e1\",\n\"UPPERCASE\": \"V\\u0160ETKY P\\u00cdSMEN\\u00c1 VE\\u013dK\\u00c9\",\n\"Title Case\": \"Prv\\u00e9 P\\u00edsmen\\u00e1 Ve\\u013ek\\u00e9\",\n\"Permanent Pen Properties\": \"Vlastnosti fixky\",\n\"Permanent pen properties...\": \"Vlastnosti fixky...\",\n\"Font\": \"P\\u00edsmo\",\n\"Size\": \"Ve\\u013ekos\\u0165\",\n\"More...\": \"Viac...\",\n\"Spellcheck Language\": \"Jazyk kontroly pravopisu\",\n\"Select...\": \"Vyberte...\",\n\"Preferences\": \"Preferencie\",\n\"Yes\": \"\\u00c1no\",\n\"No\": \"Nie\",\n\"Keyboard Navigation\": \"Navig\\u00e1cia pomocou kl\\u00e1vesnice\",\n\"Version\": \"Verzia\",\n\"Anchor\": \"Odkaz\",\n\"Special character\": \"\\u0160peci\\u00e1lny znak\",\n\"Color\": \"Farba\",\n\"Emoticons\": \"Smajl\\u00edci\",\n\"Document properties\": \"Vlastnosti dokumentu\",\n\"Image\": \"Obr\\u00e1zok\",\n\"Insert link\": \"Vlo\\u017ei\\u0165 odkaz\",\n\"Target\": \"Cie\\u013e\",\n\"Link\": \"Odkaz\",\n\"Poster\": \"Uk\\u00e1\\u017eka\",\n\"Media\": \"M\\u00e9di\\u00e1\",\n\"Print\": \"Tla\\u010di\\u0165\",\n\"Prev\": \"Predch\\u00e1dzaj\\u00face\",\n\"Find and replace\": \"Vyh\\u013eada\\u0165 a nahradi\\u0165\",\n\"Whole words\": \"Cel\\u00e9 slov\\u00e1\",\n\"Spellcheck\": \"Kontrola pravopisu\",\n\"Caption\": \"Popisok\",\n\"Insert template\": \"Vlo\\u017ei\\u0165 \\u0161abl\\u00f3nu\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/sl.js",
    "content": "tinymce.addI18n('sl',{\n\"Redo\": \"Ponovno uveljavi\",\n\"Undo\": \"Razveljavi\",\n\"Cut\": \"Izre\\u017ei\",\n\"Copy\": \"Kopiraj\",\n\"Paste\": \"Prilepi\",\n\"Select all\": \"Izberi vse\",\n\"New document\": \"Nov dokument\",\n\"Ok\": \"V redu\",\n\"Cancel\": \"Prekli\\u010di\",\n\"Visual aids\": \"Vizualni pripomo\\u010dki\",\n\"Bold\": \"Krepko\",\n\"Italic\": \"Po\\u0161evno\",\n\"Underline\": \"Pod\\u010drtano\",\n\"Strikethrough\": \"Pre\\u010drtano\",\n\"Superscript\": \"Nadpisano\",\n\"Subscript\": \"Podpisano\",\n\"Clear formatting\": \"Odstrani oblikovanje\",\n\"Align left\": \"Leva poravnava\",\n\"Align center\": \"Sredinska poravnava\",\n\"Align right\": \"Desna poravnava\",\n\"Justify\": \"Obojestranska poravnava\",\n\"Bullet list\": \"Ozna\\u010den seznam\",\n\"Numbered list\": \"O\\u0161tevil\\u010den seznam\",\n\"Decrease indent\": \"Zmanj\\u0161aj zamik\",\n\"Increase indent\": \"Pove\\u010daj zamik\",\n\"Close\": \"Zapri\",\n\"Formats\": \"Oblika\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Varnostne nastavitve brskalnika ne dopu\\u0161\\u010dajo direktnega dostopa do odlo\\u017ei\\u0161\\u010da. Uporabite kombinacijo tipk Ctrl + X\\/C\\/V na tipkovnici.\",\n\"Headers\": \"Naslovi\",\n\"Header 1\": \"Naslov 1\",\n\"Header 2\": \"Naslov 2\",\n\"Header 3\": \"Naslov 3\",\n\"Header 4\": \"Naslov 4\",\n\"Header 5\": \"Naslov 5\",\n\"Header 6\": \"Naslov 6\",\n\"Headings\": \"Naslovi\",\n\"Heading 1\": \"Naslov 1\",\n\"Heading 2\": \"Naslov 2\",\n\"Heading 3\": \"Naslov 3\",\n\"Heading 4\": \"Naslov 4\",\n\"Heading 5\": \"Naslov 5\",\n\"Heading 6\": \"Naslov 6\",\n\"Preformatted\": \"Predformatirano\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Koda\",\n\"Paragraph\": \"Odstavek\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Med besedilom\",\n\"Blocks\": \"Bloki\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Odlagali\\u0161\\u010de je sedaj v tekstovnem na\\u010dinu. Vsebina bo preslikana kot besedilo, dokler te mo\\u017enosti ne izklju\\u010dite.\",\n\"Fonts\": \"Pisave\",\n\"Font Sizes\": \"Velikosti pisave\",\n\"Class\": \"Razred\",\n\"Browse for an image\": \"Prebrskaj za sliko\",\n\"OR\": \"ALI\",\n\"Drop an image here\": \"Spusti sliko sem\",\n\"Upload\": \"Nalo\\u017ei\",\n\"Block\": \"Blok\",\n\"Align\": \"Poravnava\",\n\"Default\": \"Privzeto\",\n\"Circle\": \"Krog\",\n\"Disc\": \"Disk\",\n\"Square\": \"Kvadrat\",\n\"Lower Alpha\": \"Mala alfa\",\n\"Lower Greek\": \"Male gr\\u0161ke \\u010drke\",\n\"Lower Roman\": \"Male rimske \\u0161tevilke\",\n\"Upper Alpha\": \"Velika alfa\",\n\"Upper Roman\": \"Velike rimske \\u0161tevilke\",\n\"Anchor...\": \"Sidro ...\",\n\"Name\": \"Naziv\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id se mora za\\u010deti s \\u010drko, sledijo samo \\u010drke, \\u0161tevilke, pomi\\u0161ljaji, pike, dvopi\\u010dja ali pod\\u010drtaji.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Imate neshranjene spremembe. Ste prepri\\u010dati, da \\u017eelite zapustiti stran?\",\n\"Restore last draft\": \"Obnovi zadnji osnutek\",\n\"Special character...\": \"Poseben znak ...\",\n\"Source code\": \"Izvorna koda\",\n\"Insert\\/Edit code sample\": \"Vstavi\\/Uredi vzor\\u010dno kodo\",\n\"Language\": \"Jezik\",\n\"Code sample...\": \"Vzor\\u010dna koda ...\",\n\"Color Picker\": \"Izbirnik barve\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Od leve proti desni\",\n\"Right to left\": \"Od desne proti levi\",\n\"Emoticons...\": \"\\u010custveni simboli ...\",\n\"Metadata and Document Properties\": \"Metapodatki in lastnosti dokumenta\",\n\"Title\": \"Naslov\",\n\"Keywords\": \"Klju\\u010dne besede\",\n\"Description\": \"Opis\",\n\"Robots\": \"Robotki\",\n\"Author\": \"Avtor\",\n\"Encoding\": \"Kodiranje\",\n\"Fullscreen\": \"\\u010cez cel zaslon\",\n\"Action\": \"Dejanje\",\n\"Shortcut\": \"Bli\\u017enjica\",\n\"Help\": \"Pomo\\u010d\",\n\"Address\": \"Naslov\",\n\"Focus to menubar\": \"Poudarek na menijski vrstici\",\n\"Focus to toolbar\": \"Poudarek na orodni vrstici\",\n\"Focus to element path\": \"Poudarek na poti elementa\",\n\"Focus to contextual toolbar\": \"Poudarek na kontekstualni orodni vrstici\",\n\"Insert link (if link plugin activated)\": \"Vstavi povezavo (\\u010de je aktiviran vti\\u010dnik za povezavo)\",\n\"Save (if save plugin activated)\": \"Shrani (\\u010de je aktiviran vti\\u010dnik za shranjevanje)\",\n\"Find (if searchreplace plugin activated)\": \"I\\u0161\\u010di (\\u010de je aktiviran vti\\u010dnik za iskanje\\/zamenjavo)\",\n\"Plugins installed ({0}):\": \"Name\\u0161\\u010deni vti\\u010dniki ({0}):\",\n\"Premium plugins:\": \"Premium vti\\u010dniki:\",\n\"Learn more...\": \"Ve\\u010d ...\",\n\"You are using {0}\": \"Uporabljate {0}\",\n\"Plugins\": \"Vti\\u010dniki\",\n\"Handy Shortcuts\": \"Uporabne bli\\u017enjice\",\n\"Horizontal line\": \"Vodoravna \\u010drta\",\n\"Insert\\/edit image\": \"Vstavi\\/uredi sliko\",\n\"Image description\": \"Opis slike\",\n\"Source\": \"Pot\",\n\"Dimensions\": \"Dimenzije\",\n\"Constrain proportions\": \"Obdr\\u017ei razmerje\",\n\"General\": \"Splo\\u0161no\",\n\"Advanced\": \"Napredno\",\n\"Style\": \"Slog\",\n\"Vertical space\": \"Navpi\\u010dni prostor\",\n\"Horizontal space\": \"Vodoravni prostor\",\n\"Border\": \"Meja\",\n\"Insert image\": \"Vnesi sliko\",\n\"Image...\": \"Slika ...\",\n\"Image list\": \"Seznam slik\",\n\"Rotate counterclockwise\": \"Zavrti v nasprotni smeri urnega kazalca\",\n\"Rotate clockwise\": \"Zavrti v smeri urnega kazalca\",\n\"Flip vertically\": \"Obrni navpi\\u010dno\",\n\"Flip horizontally\": \"Obrni vodoravno\",\n\"Edit image\": \"Uredi sliko\",\n\"Image options\": \"Mo\\u017enosti slike\",\n\"Zoom in\": \"Pove\\u010daj\",\n\"Zoom out\": \"Pomanj\\u0161aj\",\n\"Crop\": \"Obre\\u017ei\",\n\"Resize\": \"Spremeni velikost\",\n\"Orientation\": \"Usmerjenost\",\n\"Brightness\": \"Svetlost\",\n\"Sharpen\": \"Izostri\",\n\"Contrast\": \"Kontrast\",\n\"Color levels\": \"Barvni nivo\",\n\"Gamma\": \"Gama\",\n\"Invert\": \"Obrni\",\n\"Apply\": \"Uporabi\",\n\"Back\": \"Nazaj\",\n\"Insert date\\/time\": \"Vstavi datum\\/\\u010das\",\n\"Date\\/time\": \"Datum\\/\\u010das\",\n\"Insert\\/Edit Link\": \"Vstavi\\/uredi povezavo\",\n\"Insert\\/edit link\": \"Vstavi\\/uredi povezavo\",\n\"Text to display\": \"Besedilo za prikaz\",\n\"Url\": \"Povezava\",\n\"Open link in...\": \"Odpri povezavo v ...\",\n\"Current window\": \"Trenutno okno\",\n\"None\": \"Brez\",\n\"New window\": \"Novo okno\",\n\"Remove link\": \"Odstrani povezavo\",\n\"Anchors\": \"Sidra\",\n\"Link...\": \"Povezava ...\",\n\"Paste or type a link\": \"Prilepite ali vnesite povezavo\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Vneseni URL predstavlja e-po\\u0161tni naslov. Ali \\u017eelite dodati potrebno predpono \\\"mailto:\\\"?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Vneseni URL predstavlja zunanjo povezavo. Ali \\u017eelite dodati predpono \\\"http:\\/\\/\\\"?\",\n\"Link list\": \"Seznam povezav\",\n\"Insert video\": \"Vstavi video\",\n\"Insert\\/edit video\": \"Vstavi\\/uredi video\",\n\"Insert\\/edit media\": \"Vstavi\\/uredi medij\",\n\"Alternative source\": \"Nadomestni vir\",\n\"Alternative source URL\": \"Nadomestni vir URL\",\n\"Media poster (Image URL)\": \"Medijski poster (URL slike)\",\n\"Paste your embed code below:\": \"Spodaj prilepite kodo za vdelavo:\",\n\"Embed\": \"Vdelaj\",\n\"Media...\": \"Mediji ...\",\n\"Nonbreaking space\": \"Nedeljivi presledek\",\n\"Page break\": \"Prelom strani\",\n\"Paste as text\": \"Vnesi kot besedilo\",\n\"Preview\": \"Predogled\",\n\"Print...\": \"Natisni ...\",\n\"Save\": \"Shrani\",\n\"Find\": \"Najdi\",\n\"Replace with\": \"Zamenjaj z\",\n\"Replace\": \"Zamenjaj\",\n\"Replace all\": \"Zamenjaj vse\",\n\"Previous\": \"Prej\\u0161nja\",\n\"Next\": \"Naslednja\",\n\"Find and replace...\": \"Najdi in zamenjaj ...\",\n\"Could not find the specified string.\": \"Iskanje ni vrnilo rezultatov.\",\n\"Match case\": \"Ujemanje malih in velikih \\u010drk\",\n\"Find whole words only\": \"I\\u0161\\u010di samo cele besede\",\n\"Spell check\": \"\\u010crkovanje\",\n\"Ignore\": \"Prezri\",\n\"Ignore all\": \"Prezri vse\",\n\"Finish\": \"Zaklju\\u010di\",\n\"Add to Dictionary\": \"Dodaj v slovar\",\n\"Insert table\": \"Vstavi tabelo\",\n\"Table properties\": \"Lastnosti tabele\",\n\"Delete table\": \"Izbri\\u0161i tabelo\",\n\"Cell\": \"Celica\",\n\"Row\": \"Vrstica\",\n\"Column\": \"Stolpec\",\n\"Cell properties\": \"Lastnosti celice\",\n\"Merge cells\": \"Zdru\\u017ei celice\",\n\"Split cell\": \"Razdeli celico\",\n\"Insert row before\": \"Vstavi vrstico pred\",\n\"Insert row after\": \"Vstavi vrstico za\",\n\"Delete row\": \"Izbri\\u0161i vrstico\",\n\"Row properties\": \"Lastnosti vrstice\",\n\"Cut row\": \"Izre\\u017ei vrstico\",\n\"Copy row\": \"Kopiraj vrstico\",\n\"Paste row before\": \"Prilepi vrstico pred\",\n\"Paste row after\": \"Prilepi vrstico za\",\n\"Insert column before\": \"Vstavi stolpec pred\",\n\"Insert column after\": \"Vstavi stolpec za\",\n\"Delete column\": \"Izbri\\u0161i stolpec\",\n\"Cols\": \"Stolpci\",\n\"Rows\": \"Vrstice\",\n\"Width\": \"\\u0160irina\",\n\"Height\": \"Vi\\u0161ina\",\n\"Cell spacing\": \"Razmik med celicami\",\n\"Cell padding\": \"Polnilo med celicami\",\n\"Show caption\": \"Poka\\u017ei napis\",\n\"Left\": \"Leva\",\n\"Center\": \"Sredinska\",\n\"Right\": \"Desna\",\n\"Cell type\": \"Tip celice\",\n\"Scope\": \"Obseg\",\n\"Alignment\": \"Poravnava\",\n\"H Align\": \"Vodoravna poravnava\",\n\"V Align\": \"Navpi\\u010dna poravnava\",\n\"Top\": \"Vrh\",\n\"Middle\": \"Sredina\",\n\"Bottom\": \"Dno\",\n\"Header cell\": \"Celica glave\",\n\"Row group\": \"Grupiranje vrstic\",\n\"Column group\": \"Grupiranje stolpcev\",\n\"Row type\": \"Tip vrstice\",\n\"Header\": \"Header\",\n\"Body\": \"Vsebina\",\n\"Footer\": \"Footer\",\n\"Border color\": \"Barva obrobe\",\n\"Insert template...\": \"Vstavi predlogo ...\",\n\"Templates\": \"Predloge\",\n\"Template\": \"Predloga\",\n\"Text color\": \"Barva besedila\",\n\"Background color\": \"Barva ozadja\",\n\"Custom...\": \"Po meri ...\",\n\"Custom color\": \"Barva po meri\",\n\"No color\": \"Brezbarvno\",\n\"Remove color\": \"Odstrani barvo\",\n\"Table of Contents\": \"Kazalo\",\n\"Show blocks\": \"Prika\\u017ei bloke\",\n\"Show invisible characters\": \"Prika\\u017ei skrite znake\",\n\"Word count\": \"\\u0160tevilo besed\",\n\"Count\": \"\\u0160tevilo\",\n\"Document\": \"Dokument\",\n\"Selection\": \"Izbor\",\n\"Words\": \"Besede\",\n\"Words: {0}\": \"Besed: {0}\",\n\"{0} words\": \"{0} besed\",\n\"File\": \"Datoteka\",\n\"Edit\": \"Uredi\",\n\"Insert\": \"Vstavi\",\n\"View\": \"Pogled\",\n\"Format\": \"Oblika\",\n\"Table\": \"Tabela\",\n\"Tools\": \"Orodja\",\n\"Powered by {0}\": \"Uporablja tehnologijo {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Bogato besedilo. Pritisnite ALT-F9 za meni. Pritisnite ALT-F10 za orodno vrstico. Pritisnite ALT-0 za pomo\\u010d\",\n\"Image title\": \"Naslov slike\",\n\"Border width\": \"\\u0160irina obrobe\",\n\"Border style\": \"Slog obrobe\",\n\"Error\": \"Napaka\",\n\"Warn\": \"Opozorilo\",\n\"Valid\": \"Veljavno\",\n\"To open the popup, press Shift+Enter\": \"Za odpiranje pojavnega okna pritisnite Shift + Enter.\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Bogato besedilo. Pritisnite ALT-0 za pomo\\u010d.\",\n\"System Font\": \"Sistemska pisava\",\n\"Failed to upload image: {0}\": \"Napaka nalaganja slike: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Napaka nalaganja vti\\u010dnika: {0} z url {1}\",\n\"Failed to load plugin url: {0}\": \"Napaka nalaganja url: {0}\",\n\"Failed to initialize plugin: {0}\": \"Napaka inicializacije vti\\u010dnika: {0}\",\n\"example\": \"primer\",\n\"Search\": \"Iskanje\",\n\"All\": \"Vse\",\n\"Currency\": \"Valuta\",\n\"Text\": \"Besedilo\",\n\"Quotations\": \"Citati\",\n\"Mathematical\": \"Matemati\\u010dno\",\n\"Extended Latin\": \"Raz\\u0161irjena latinica\",\n\"Symbols\": \"Simboli\",\n\"Arrows\": \"Pu\\u0161\\u010dice\",\n\"User Defined\": \"Uporabnik dolo\\u010den\",\n\"dollar sign\": \"znak za dolar\",\n\"currency sign\": \"znak za valuto\",\n\"euro-currency sign\": \"znak za evro\",\n\"colon sign\": \"znak za dvopi\\u010dje\",\n\"cruzeiro sign\": \"znak za cruzeiro\",\n\"french franc sign\": \"znak za francoski frank\",\n\"lira sign\": \"znak za liro\",\n\"mill sign\": \"znak za mill\",\n\"naira sign\": \"znak za nairo\",\n\"peseta sign\": \"znak za peseto\",\n\"rupee sign\": \"znak za rupijo\",\n\"won sign\": \"znak za won\",\n\"new sheqel sign\": \"znak za novi \\u0161ekl\",\n\"dong sign\": \"znak za dong\",\n\"kip sign\": \"znak za kip\",\n\"tugrik sign\": \"znak za tugrik\",\n\"drachma sign\": \"znak za drahmo\",\n\"german penny symbol\": \"znak za nem\\u0161ki peni\",\n\"peso sign\": \"znak za peso\",\n\"guarani sign\": \"znak za guarani\",\n\"austral sign\": \"znak za austral\",\n\"hryvnia sign\": \"znak za hrivnijo\",\n\"cedi sign\": \"znak za cedi\",\n\"livre tournois sign\": \"znak za livre tournois\",\n\"spesmilo sign\": \"znak za spesmilo\",\n\"tenge sign\": \"znak za tenge\",\n\"indian rupee sign\": \"znak za indijsko rupijo\",\n\"turkish lira sign\": \"znak za tur\\u0161ko liro\",\n\"nordic mark sign\": \"znak za nordijsko marko\",\n\"manat sign\": \"znak za manat\",\n\"ruble sign\": \"znak za rubelj\",\n\"yen character\": \"znak za jen\",\n\"yuan character\": \"znak za yuan\",\n\"yuan character, in hong kong and taiwan\": \"znak za yuan, v Hongkongu in na Tajvanu\",\n\"yen\\/yuan character variant one\": \"znak za jen\\/yuan, prva razli\\u010dica\",\n\"Loading emoticons...\": \"Nalaganje \\u010dustvenih simbolov ...\",\n\"Could not load emoticons\": \"\\u010custvenih simbolov ni mogo\\u010de nalo\\u017eiti.\",\n\"People\": \"Ljudje\",\n\"Animals and Nature\": \"\\u017divali in narava\",\n\"Food and Drink\": \"Hrana in pija\\u010da\",\n\"Activity\": \"Dejavnost\",\n\"Travel and Places\": \"Potovanja in kraji\",\n\"Objects\": \"Predmeti\",\n\"Flags\": \"Zastave\",\n\"Characters\": \"Znaki\",\n\"Characters (no spaces)\": \"Znaki (brez presledkov)\",\n\"{0} characters\": \"{0} znakov\",\n\"Error: Form submit field collision.\": \"Napaka: navzkri\\u017eje polja za oddajo obrazca\",\n\"Error: No form element found.\": \"Napaka: elementa oblike ni mogo\\u010de najti\",\n\"Update\": \"Posodobitev\",\n\"Color swatch\": \"Vzorec barv\",\n\"Turquoise\": \"Turkizna\",\n\"Green\": \"Zelena\",\n\"Blue\": \"Modra\",\n\"Purple\": \"\\u0160krlatna\",\n\"Navy Blue\": \"Mornarsko modra\",\n\"Dark Turquoise\": \"Temno turkizna\",\n\"Dark Green\": \"Temno zelena\",\n\"Medium Blue\": \"Srednje modra\",\n\"Medium Purple\": \"Srednje \\u0161krlatna\",\n\"Midnight Blue\": \"Polno\\u010dno modra\",\n\"Yellow\": \"Rumena\",\n\"Orange\": \"Oran\\u017ena\",\n\"Red\": \"Rde\\u010da\",\n\"Light Gray\": \"Svetlo siva\",\n\"Gray\": \"Siva\",\n\"Dark Yellow\": \"Temno rumena\",\n\"Dark Orange\": \"Temno oran\\u017ena\",\n\"Dark Red\": \"Temno rde\\u010da\",\n\"Medium Gray\": \"Srednje siva\",\n\"Dark Gray\": \"Temno siva\",\n\"Light Green\": \"Svetlo zelena\",\n\"Light Yellow\": \"Svetlo rumena\",\n\"Light Red\": \"Svetlo rde\\u010da\",\n\"Light Purple\": \"Svetlo vijoli\\u010dna\",\n\"Light Blue\": \"Svetlo modra\",\n\"Dark Purple\": \"Temno vijoli\\u010dna\",\n\"Dark Blue\": \"Temno modra\",\n\"Black\": \"\\u010crna\",\n\"White\": \"Bela\",\n\"Switch to or from fullscreen mode\": \"Preklopi v ali iz celozaslonskega na\\u010dina\",\n\"Open help dialog\": \"Odpri pogovorno okno za pomo\\u010d\",\n\"history\": \"zgodovina\",\n\"styles\": \"slogi\",\n\"formatting\": \"oblikovanje\",\n\"alignment\": \"poravnava\",\n\"indentation\": \"zamik\",\n\"permanent pen\": \"permanentno pisalo\",\n\"comments\": \"komentarji\",\n\"Format Painter\": \"Preslikovalnik Oblik\",\n\"Insert\\/edit iframe\": \"Vstavi\\/uredi iFrame\",\n\"Capitalization\": \"Velika za\\u010detnica\",\n\"lowercase\": \"male \\u010drke\",\n\"UPPERCASE\": \"VELIKE \\u010cRKE\",\n\"Title Case\": \"Velike za\\u010detnice naslovov\",\n\"Permanent Pen Properties\": \"Lastnosti permanentnega pisala\",\n\"Permanent pen properties...\": \"Lastnosti permanentnega pisala ...\",\n\"Font\": \"Pisava\",\n\"Size\": \"Velikost\",\n\"More...\": \"Ve\\u010d ...\",\n\"Spellcheck Language\": \"Jezik \\u010drkovalnika\",\n\"Select...\": \"Izberi ...\",\n\"Preferences\": \"Preference\",\n\"Yes\": \"Da\",\n\"No\": \"Ne\",\n\"Keyboard Navigation\": \"Krmarjenje s tipkovnico\",\n\"Version\": \"Razli\\u010dica\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/sl_SI.js",
    "content": "tinymce.addI18n('sl_SI',{\n\"Redo\": \"Ponovno uveljavi\",\n\"Undo\": \"Razveljavi\",\n\"Cut\": \"Izre\\u017ei\",\n\"Copy\": \"Kopiraj\",\n\"Paste\": \"Prilepi\",\n\"Select all\": \"Izberi vse\",\n\"New document\": \"Nov dokument\",\n\"Ok\": \"V redu\",\n\"Cancel\": \"Prekli\\u010di\",\n\"Visual aids\": \"Vizualni pripomo\\u010dki\",\n\"Bold\": \"Krepko\",\n\"Italic\": \"Po\\u0161evno\",\n\"Underline\": \"Pod\\u010drtano\",\n\"Strikethrough\": \"Pre\\u010drtano\",\n\"Superscript\": \"Nadpisano\",\n\"Subscript\": \"Podpisano\",\n\"Clear formatting\": \"Odstrani oblikovanje\",\n\"Align left\": \"Leva poravnava\",\n\"Align center\": \"Sredinska poravnava\",\n\"Align right\": \"Desna poravnava\",\n\"Justify\": \"Obojestranska poravnava\",\n\"Bullet list\": \"Ozna\\u010den seznam\",\n\"Numbered list\": \"O\\u0161tevil\\u010den seznam\",\n\"Decrease indent\": \"Zmanj\\u0161aj zamik\",\n\"Increase indent\": \"Pove\\u010daj zamik\",\n\"Close\": \"Zapri\",\n\"Formats\": \"Oblika\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Varnostne nastavitve brskalnika ne dopu\\u0161\\u010dajo direktnega dostopa do odlo\\u017ei\\u0161\\u010da. Uporabite kombinacijo tipk Ctrl + X\\/C\\/V na tipkovnici.\",\n\"Headers\": \"Naslovi\",\n\"Header 1\": \"Naslov 1\",\n\"Header 2\": \"Naslov 2\",\n\"Header 3\": \"Naslov 3\",\n\"Header 4\": \"Naslov 4\",\n\"Header 5\": \"Naslov 5\",\n\"Header 6\": \"Naslov 6\",\n\"Headings\": \"Naslovi\",\n\"Heading 1\": \"Naslov 1\",\n\"Heading 2\": \"Naslov 2\",\n\"Heading 3\": \"Naslov 3\",\n\"Heading 4\": \"Naslov 4\",\n\"Heading 5\": \"Naslov 5\",\n\"Heading 6\": \"Naslov 6\",\n\"Preformatted\": \"Predformatirano\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Koda\",\n\"Paragraph\": \"Odstavek\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Med besedilom\",\n\"Blocks\": \"Bloki\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Odlagali\\u0161\\u010de je zdaj v tekstovnem na\\u010dinu. Vsebina bo preslikana kot golo besedilo brez oblike, dokler te mo\\u017enosti ne izklju\\u010dite.\",\n\"Fonts\": \"Pisave\",\n\"Font Sizes\": \"Velikosti pisave\",\n\"Class\": \"Razred\",\n\"Browse for an image\": \"Prebrskaj za sliko\",\n\"OR\": \"ALI\",\n\"Drop an image here\": \"Spusti sliko sem\",\n\"Upload\": \"Nalo\\u017ei\",\n\"Block\": \"Blok\",\n\"Align\": \"Poravnava\",\n\"Default\": \"Privzeto\",\n\"Circle\": \"Pikica\",\n\"Disc\": \"Kroglica\",\n\"Square\": \"Kvadratek\",\n\"Lower Alpha\": \"Male tiskane \\u010drke\",\n\"Lower Greek\": \"Male gr\\u0161ke \\u010drke\",\n\"Lower Roman\": \"Male rimske \\u0161tevilke\",\n\"Upper Alpha\": \"Velike tiskane \\u010drke\",\n\"Upper Roman\": \"Velike rimske \\u0161tevilke\",\n\"Anchor...\": \"Sidro ...\",\n\"Name\": \"Naziv zaznamka\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id se mora za\\u010deti s \\u010drko, sledijo samo \\u010drke, \\u0161tevilke, pomi\\u0161ljaj, pike, dvopi\\u010dje ali pod\\u010drtaj.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Imate neshranjene spremembe. Ste prepri\\u010dati, da \\u017eelite zapustiti stran?\",\n\"Restore last draft\": \"Obnovi zadnji osnutek\",\n\"Special characters...\": \"Posebni znaki ...\",\n\"Source code\": \"Izvorna koda\",\n\"Insert\\/Edit code sample\": \"Vstavi\\/Uredi vzor\\u010dno kodo\",\n\"Language\": \"Jezik\",\n\"Code sample...\": \"Vzor\\u010dna koda ...\",\n\"Color Picker\": \"Izbirnik barve\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Od leve proti desni\",\n\"Right to left\": \"Od desne proti levi\",\n\"Emoticons...\": \"\\u010custveni simboli ...\",\n\"Metadata and Document Properties\": \"Metapodatki in lastnosti dokumenta\",\n\"Title\": \"Naslov\",\n\"Keywords\": \"Klju\\u010dne besede\",\n\"Description\": \"Opis\",\n\"Robots\": \"Robotki\",\n\"Author\": \"Avtor\",\n\"Encoding\": \"Kodiranje\",\n\"Fullscreen\": \"\\u010cez cel zaslon\",\n\"Action\": \"Dejanje\",\n\"Shortcut\": \"Bli\\u017enjica\",\n\"Help\": \"Pomo\\u010d\",\n\"Address\": \"Naslov\",\n\"Focus to menubar\": \"Poudarek na menijski vrstici\",\n\"Focus to toolbar\": \"Poudarek na orodni vrstici\",\n\"Focus to element path\": \"Poudarek na poti elementa\",\n\"Focus to contextual toolbar\": \"Poudarek na kontekstualni orodni vrstici\",\n\"Insert link (if link plugin activated)\": \"Vstavi povezavo (\\u010de je aktiviran vti\\u010dnik za povezavo)\",\n\"Save (if save plugin activated)\": \"Shrani (\\u010de je aktiviran vti\\u010dnik za shranjevanje)\",\n\"Find (if searchreplace plugin activated)\": \"I\\u0161\\u010di (\\u010de je aktiviran vti\\u010dnik za iskanje\\/zamenjavo)\",\n\"Plugins installed ({0}):\": \"Name\\u0161\\u010deni vti\\u010dniki ({0}):\",\n\"Premium plugins:\": \"Premium vti\\u010dniki:\",\n\"Learn more...\": \"Ve\\u010d ...\",\n\"You are using {0}\": \"Uporabljate {0}\",\n\"Plugins\": \"Vti\\u010dniki\",\n\"Handy Shortcuts\": \"Uporabne bli\\u017enjice\",\n\"Horizontal line\": \"Vodoravna \\u010drta\",\n\"Insert\\/edit image\": \"Vstavi\\/uredi sliko\",\n\"Image description\": \"Opis slike\",\n\"Source\": \"Pot\",\n\"Dimensions\": \"Dimenzije\",\n\"Constrain proportions\": \"Obdr\\u017ei razmerje\",\n\"General\": \"Splo\\u0161no\",\n\"Advanced\": \"Napredno\",\n\"Style\": \"Slog\",\n\"Vertical space\": \"Navpi\\u010dni prostor\",\n\"Horizontal space\": \"Vodoravni prostor\",\n\"Border\": \"Obroba\",\n\"Insert image\": \"Vnesi sliko\",\n\"Image...\": \"Slika ...\",\n\"Image list\": \"Seznam slik\",\n\"Rotate counterclockwise\": \"Zavrti v nasprotni smeri urnega kazalca\",\n\"Rotate clockwise\": \"Zavrti v smeri urinega kazalca\",\n\"Flip vertically\": \"Obrni navpi\\u010dno\",\n\"Flip horizontally\": \"Obrni vodoravno\",\n\"Edit image\": \"Uredi sliko\",\n\"Image options\": \"Mo\\u017enosti slike\",\n\"Zoom in\": \"Pove\\u010daj\",\n\"Zoom out\": \"Pomanj\\u0161aj\",\n\"Crop\": \"Obre\\u017ei\",\n\"Resize\": \"Spremeni velikost\",\n\"Orientation\": \"Usmerjenost\",\n\"Brightness\": \"Svetlost\",\n\"Sharpen\": \"Izostri\",\n\"Contrast\": \"Kontrast\",\n\"Color levels\": \"Barvni nivo\",\n\"Gamma\": \"Gama\",\n\"Invert\": \"Obrni\",\n\"Apply\": \"Uporabi\",\n\"Back\": \"Nazaj\",\n\"Insert date\\/time\": \"Vstavi datum\\/\\u010das\",\n\"Date\\/time\": \"Datum\\/\\u010das\",\n\"Insert\\/Edit Link\": \"Vstavi\\/uredi povezavo\",\n\"Insert\\/edit link\": \"Vstavi\\/uredi povezavo\",\n\"Text to display\": \"Prikazno besedilo\",\n\"Url\": \"Povezava\",\n\"Open link in...\": \"Odpri povezavo v ...\",\n\"Current window\": \"Trenutno okno\",\n\"None\": \"Brez\",\n\"New window\": \"Novo okno\",\n\"Remove link\": \"Odstrani povezavo\",\n\"Anchors\": \"Sidra\",\n\"Link...\": \"Povezava ...\",\n\"Paste or type a link\": \"Prilepite ali vnesite povezavo\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Vne\\u0161eni URL predstavlja e-po\\u0161tni naslov. Ali \\u017eelite dodati potrebno \\\"mailto:\\\" predpono?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Vne\\u0161eni URL predstavlja zunanjo povezavo. Ali \\u017eelite dodati \\\"http:\\/\\/\\\" predpono?\",\n\"Link list\": \"Seznam povezav\",\n\"Insert video\": \"Vstavi video\",\n\"Insert\\/edit video\": \"Vstavi\\/uredi video\",\n\"Insert\\/edit media\": \"Vstavi\\/uredi medij\",\n\"Alternative source\": \"Nadomestni vir\",\n\"Alternative source URL\": \"Nadomestni vir URL\",\n\"Media poster (Image URL)\": \"Medijski poster (URL slike)\",\n\"Paste your embed code below:\": \"Prilepite kodo za vdelavo:\",\n\"Embed\": \"Vdelaj\",\n\"Media...\": \"Mediji ...\",\n\"Nonbreaking space\": \"Nedeljivi presledek\",\n\"Page break\": \"Prelom strani\",\n\"Paste as text\": \"Vnesi kot besedilo\",\n\"Preview\": \"Predogled\",\n\"Print...\": \"Natisni ...\",\n\"Save\": \"Shrani\",\n\"Find\": \"I\\u0161\\u010di\",\n\"Replace with\": \"Zamenjaj z\",\n\"Replace\": \"Zamenjaj\",\n\"Replace all\": \"Zamenjaj vse\",\n\"Previous\": \"Prej\\u0161nja\",\n\"Next\": \"Naprej\",\n\"Find and replace...\": \"Najdi in zamenjaj ...\",\n\"Could not find the specified string.\": \"Iskanje ni vrnilo rezultatov.\",\n\"Match case\": \"Ujemanje malih in velikih \\u010drk\",\n\"Find whole words only\": \"I\\u0161\\u010di samo cele besede\",\n\"Spell check\": \"\\u010crkovanje\",\n\"Ignore\": \"Prezri\",\n\"Ignore all\": \"Prezri vse\",\n\"Finish\": \"Zaklju\\u010di\",\n\"Add to Dictionary\": \"Dodaj v slovar\",\n\"Insert table\": \"Vstavi tabelo\",\n\"Table properties\": \"Lastnosti tabele\",\n\"Delete table\": \"Izbri\\u0161i tabelo\",\n\"Cell\": \"Celica\",\n\"Row\": \"Vrstica\",\n\"Column\": \"Stolpec\",\n\"Cell properties\": \"Lastnosti celice\",\n\"Merge cells\": \"Zdru\\u017ei celice\",\n\"Split cell\": \"Razdeli celico\",\n\"Insert row before\": \"Vstavi vrstico pred\",\n\"Insert row after\": \"Vstavi vrstico za\",\n\"Delete row\": \"Izbri\\u0161i vrstico\",\n\"Row properties\": \"Lastnosti vrstice\",\n\"Cut row\": \"Izre\\u017ei vrstico\",\n\"Copy row\": \"Kopiraj vrstico\",\n\"Paste row before\": \"Prilepi vrstico pred\",\n\"Paste row after\": \"Prilepi vrstico za\",\n\"Insert column before\": \"Vstavi stolpec pred\",\n\"Insert column after\": \"Vstavi stolpec za\",\n\"Delete column\": \"Izbri\\u0161i stolpec\",\n\"Cols\": \"Stolpci\",\n\"Rows\": \"Vrstice\",\n\"Width\": \"\\u0160irina\",\n\"Height\": \"Vi\\u0161ina\",\n\"Cell spacing\": \"Razmik med celicami\",\n\"Cell padding\": \"Polnilo med celicami\",\n\"Show caption\": \"Poka\\u017ei napis\",\n\"Left\": \"Levo\",\n\"Center\": \"Sredinsko\",\n\"Right\": \"Desno\",\n\"Cell type\": \"Tip celice\",\n\"Scope\": \"Obseg\",\n\"Alignment\": \"Poravnava\",\n\"H Align\": \"Horizontalna poravnava\",\n\"V Align\": \"Vertikalna poravnava\",\n\"Top\": \"Vrh\",\n\"Middle\": \"Sredina\",\n\"Bottom\": \"Dno\",\n\"Header cell\": \"Celica glave\",\n\"Row group\": \"Grupiranje vrstic\",\n\"Column group\": \"Grupiranje stolpcev\",\n\"Row type\": \"Tip vrstice\",\n\"Header\": \"Glava\",\n\"Body\": \"Vsebina\",\n\"Footer\": \"Noga\",\n\"Border color\": \"Barva obrobe\",\n\"Insert template...\": \"Vstavi predlogo ...\",\n\"Templates\": \"Predloge\",\n\"Template\": \"Predloga\",\n\"Text color\": \"Barva besedila\",\n\"Background color\": \"Barva ozadja\",\n\"Custom...\": \"Po meri ...\",\n\"Custom color\": \"Barva po meri\",\n\"No color\": \"Brezbarvno\",\n\"Remove color\": \"Odstrani barvo\",\n\"Table of Contents\": \"Kazalo\",\n\"Show blocks\": \"Prika\\u017ei bloke\",\n\"Show invisible characters\": \"Prika\\u017ei skrite znake\",\n\"Word count\": \"\\u0160tevilo besed\",\n\"Words: {0}\": \"Besed: {0}\",\n\"{0} words\": \"{0} besed\",\n\"File\": \"Datoteka\",\n\"Edit\": \"Uredi\",\n\"Insert\": \"Vstavi\",\n\"View\": \"Pogled\",\n\"Format\": \"Oblika\",\n\"Table\": \"Tabela\",\n\"Tools\": \"Orodja\",\n\"Powered by {0}\": \"Uporablja tehnologijo {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Bogato besedilo. Pritisnite ALT-F9 za meni. Pritisnite ALT-F10 za orodno vrstico. Pritisnite ALT-0 za pomo\\u010d\",\n\"Image title\": \"Naslov slike\",\n\"Border width\": \"\\u0160irina obrobe\",\n\"Border style\": \"Slog obrobe\",\n\"Error\": \"Napaka\",\n\"Warn\": \"Opozorilo\",\n\"Valid\": \"Veljavno\",\n\"To open the popup, press Shift+Enter\": \"Za odpiranje pojavnega okna pritisnite Shift + Enter.\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Bogato besedilo. Pritisnite ALT-0 za pomo\\u010d.\",\n\"System Font\": \"Sistemska pisava\",\n\"Failed to upload image: {0}\": \"Napaka nalaganja slike: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Napaka nalaganja vti\\u010dnika: {0} z url {1}\",\n\"Failed to load plugin url: {0}\": \"Napaka nalaganja url: {0}\",\n\"Failed to initialize plugin: {0}\": \"Napaka inicializacije vti\\u010dnika: {0}\",\n\"example\": \"primer\",\n\"Search\": \"Iskanje\",\n\"All\": \"Vse\",\n\"Currency\": \"Valuta\",\n\"Text\": \"Besedilo\",\n\"Quotations\": \"Citati\",\n\"Mathematical\": \"Matemati\\u010dno\",\n\"Extended Latin\": \"Raz\\u0161irjena latinica\",\n\"Symbols\": \"Simboli\",\n\"Arrows\": \"Pu\\u0161\\u010dice\",\n\"User Defined\": \"Uporabnik dolo\\u010den\",\n\"dollar sign\": \"znak za dolar\",\n\"currency sign\": \"znak za valuto\",\n\"euro-currency sign\": \"znak za evro\",\n\"colon sign\": \"znak za dvopi\\u010dje\",\n\"cruzeiro sign\": \"znak za cruzeiro\",\n\"french franc sign\": \"znak za francoski frank\",\n\"lira sign\": \"znak za liro\",\n\"mill sign\": \"znak za mill\",\n\"naira sign\": \"znak za nairo\",\n\"peseta sign\": \"znak za peseto\",\n\"rupee sign\": \"znak za rupijo\",\n\"won sign\": \"znak za won\",\n\"new sheqel sign\": \"znak za novi \\u0161ekl\",\n\"dong sign\": \"znak za dong\",\n\"kip sign\": \"znak za kip\",\n\"tugrik sign\": \"znak za tugrik\",\n\"drachma sign\": \"znak za drahmo\",\n\"german penny symbol\": \"znak za nem\\u0161ki peni\",\n\"peso sign\": \"znak za peso\",\n\"guarani sign\": \"znak za guarani\",\n\"austral sign\": \"znak za austral\",\n\"hryvnia sign\": \"znak za hrivnijo\",\n\"cedi sign\": \"znak za cedi\",\n\"livre tournois sign\": \"znak za livre tournois\",\n\"spesmilo sign\": \"znak za spesmilo\",\n\"tenge sign\": \"znak za tenge\",\n\"indian rupee sign\": \"znak za indijsko rupijo\",\n\"turkish lira sign\": \"znak za tur\\u0161ko liro\",\n\"nordic mark sign\": \"znak za nordijsko marko\",\n\"manat sign\": \"znak za manat\",\n\"ruble sign\": \"znak za rubelj\",\n\"yen character\": \"znak za jen\",\n\"yuan character\": \"znak za yuan\",\n\"yuan character, in hong kong and taiwan\": \"znak za yuan, v Hongkongu in na Tajvanu\",\n\"yen\\/yuan character variant one\": \"znak za jen\\/yuan, prva razli\\u010dica\",\n\"Loading emoticons...\": \"Nalaganje \\u010dustvenih simbolov ...\",\n\"Could not load emoticons\": \"\\u010custvenih simbolov ni mogo\\u010de nalo\\u017eiti.\",\n\"People\": \"Ljudje\",\n\"Animals and Nature\": \"\\u017divali in narava\",\n\"Food and Drink\": \"Hrana in pija\\u010da\",\n\"Activity\": \"Dejavnost\",\n\"Travel and Places\": \"Potovanja in kraji\",\n\"Objects\": \"Predmeti\",\n\"Flags\": \"Zastave\",\n\"Characters\": \"Znaki\",\n\"Characters (no spaces)\": \"Znaki (brez presledkov)\",\n\"Error: Form submit field collision.\": \"Napaka: navzkri\\u017eje polja za oddajo obrazca\",\n\"Error: No form element found.\": \"Napaka: elementa oblike ni mogo\\u010de najti\",\n\"Update\": \"Posodobitev\",\n\"Color swatch\": \"Vzorec barv\",\n\"Turquoise\": \"Turkizna\",\n\"Green\": \"Zelena\",\n\"Blue\": \"Modra\",\n\"Purple\": \"\\u0160krlatna\",\n\"Navy Blue\": \"Mornarsko modra\",\n\"Dark Turquoise\": \"Temno turkizna\",\n\"Dark Green\": \"Temno zelena\",\n\"Medium Blue\": \"Srednje modra\",\n\"Medium Purple\": \"Srednje \\u0161krlatna\",\n\"Midnight Blue\": \"Polno\\u010dno modra\",\n\"Yellow\": \"Rumena\",\n\"Orange\": \"Oran\\u017ena\",\n\"Red\": \"Rde\\u010da\",\n\"Light Gray\": \"Svetlo siva\",\n\"Gray\": \"Siva\",\n\"Dark Yellow\": \"Temno rumena\",\n\"Dark Orange\": \"Temno oran\\u017ena\",\n\"Dark Red\": \"Temno rde\\u010da\",\n\"Medium Gray\": \"Srednje siva\",\n\"Dark Gray\": \"Temno siva\",\n\"Black\": \"\\u010crna\",\n\"White\": \"Bela\",\n\"Switch to or from fullscreen mode\": \"Preklopi v ali iz celozaslonskega na\\u010dina\",\n\"Open help dialog\": \"Odpri pogovorno okno za pomo\\u010d\",\n\"history\": \"zgodovina\",\n\"styles\": \"slogi\",\n\"formatting\": \"oblikovanje\",\n\"alignment\": \"poravnava\",\n\"indentation\": \"zamik\",\n\"permanent pen\": \"permanentno pisalo\",\n\"comments\": \"komentarji\",\n\"Anchor\": \"Zaznamek\",\n\"Special character\": \"Posebni znaki\",\n\"Color\": \"Barva\",\n\"Emoticons\": \"Sme\\u0161ki\",\n\"Document properties\": \"Lastnosti dokumenta\",\n\"Image\": \"Slika\",\n\"Insert link\": \"Vstavi povezavo\",\n\"Link\": \"Povezava\",\n\"Target\": \"Cilj\",\n\"Media\": \"Medij\",\n\"Poster\": \"Poster\",\n\"Print\": \"Natisni\",\n\"Whole words\": \"Cele besede\",\n\"Find and replace\": \"Poi\\u0161\\u010di in zamenjaj\",\n\"Prev\": \"Nazaj\",\n\"Spellcheck\": \"Preverjanje \\u010drkovanja\",\n\"Caption\": \"Naslov\",\n\"Insert template\": \"Vstavi predlogo\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/sv_SE.js",
    "content": "tinymce.addI18n('sv_SE',{\n\"Redo\": \"G\\u00f6r om\",\n\"Undo\": \"\\u00c5ngra\",\n\"Cut\": \"Klipp ut\",\n\"Copy\": \"Kopiera\",\n\"Paste\": \"Klistra in\",\n\"Select all\": \"Markera allt\",\n\"New document\": \"Nytt dokument\",\n\"Ok\": \"Ok\",\n\"Cancel\": \"Avbryt\",\n\"Visual aids\": \"Visuella hj\\u00e4lpmedel\",\n\"Bold\": \"Fet\",\n\"Italic\": \"Kursiv\",\n\"Underline\": \"Understruken\",\n\"Strikethrough\": \"Genomstruken\",\n\"Superscript\": \"Upph\\u00f6jd\",\n\"Subscript\": \"Neds\\u00e4nkt\",\n\"Clear formatting\": \"Rensa formatering\",\n\"Align left\": \"V\\u00e4nsterjustera\",\n\"Align center\": \"Centrera\",\n\"Align right\": \"H\\u00f6gerjustera\",\n\"Justify\": \"Verifiera\",\n\"Bullet list\": \"Punktlista\",\n\"Numbered list\": \"Nummerlista\",\n\"Decrease indent\": \"Minska indrag\",\n\"Increase indent\": \"\\u00d6ka indrag\",\n\"Close\": \"St\\u00e4ng\",\n\"Formats\": \"Format\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Din webbl\\u00e4sare st\\u00f6djer inte direkt \\u00e5tkomst till klippboken. Anv\\u00e4nd kortkommandona Ctrl\\u00a0+\\u00a0X\\/C\\/V i st\\u00e4llet.\",\n\"Headers\": \"Rubriker\",\n\"Header 1\": \"Rubrik 1\",\n\"Header 2\": \"Rubrik 2\",\n\"Header 3\": \"Rubrik 3\",\n\"Header 4\": \"Rubrik 4\",\n\"Header 5\": \"Rubrik 5\",\n\"Header 6\": \"Rubrik 6\",\n\"Headings\": \"Rubriker\",\n\"Heading 1\": \"Rubrik 1\",\n\"Heading 2\": \"Rubrik 2\",\n\"Heading 3\": \"Rubrik 3\",\n\"Heading 4\": \"Rubrik 4\",\n\"Heading 5\": \"Rubrik 5\",\n\"Heading 6\": \"Rubrik 6\",\n\"Preformatted\": \"F\\u00f6rformaterad\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Kod\",\n\"Paragraph\": \"Avsnitt\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Inline\",\n\"Blocks\": \"Block\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Klistra in \\u00e4r nu i textl\\u00e4ge. Inneh\\u00e5ll kommer att konverteras till text tills du sl\\u00e5r av detta l\\u00e4ge.\",\n\"Fonts\": \"Typsnitt\",\n\"Font Sizes\": \"Teckenstorlek\",\n\"Class\": \"Klass\",\n\"Browse for an image\": \"Bl\\u00e4ddra efter en bild\",\n\"OR\": \"OR\",\n\"Drop an image here\": \"Sl\\u00e4pp en bild h\\u00e4r\",\n\"Upload\": \"Ladda upp\",\n\"Block\": \"Block\",\n\"Align\": \"Justera\",\n\"Default\": \"Original\",\n\"Circle\": \"Cirkel\",\n\"Disc\": \"Disk\",\n\"Square\": \"Fyrkant\",\n\"Lower Alpha\": \"Gemener\",\n\"Lower Greek\": \"Grekiska gemener\",\n\"Lower Roman\": \"Romerska gemener\",\n\"Upper Alpha\": \"Versaler\",\n\"Upper Roman\": \"Romerska versaler\",\n\"Anchor...\": \"Ankare...\",\n\"Name\": \"Namn\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id skall b\\u00f6rja med en bokstav och f\\u00f6ljande tecken ska vara bokst\\u00e4ver, nummer, punkter, understr\\u00e4ck eller kolon.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Du har f\\u00f6r\\u00e4ndringar som du inte har sparat. \\u00c4r du s\\u00e4ker p\\u00e5 att du vill navigera vidare?\",\n\"Restore last draft\": \"\\u00c5terst\\u00e4ll senaste utkast\",\n\"Special character...\": \"Specialtecken...\",\n\"Source code\": \"K\\u00e4llkod\",\n\"Insert\\/Edit code sample\": \"Infoga\\/Redigera k\\u00e5d exempel\",\n\"Language\": \"Spr\\u00e5k\",\n\"Code sample...\": \"Kodexempel...\",\n\"Color Picker\": \"F\\u00e4rgv\\u00e4ljare\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"V\\u00e4nster till h\\u00f6ger\",\n\"Right to left\": \"H\\u00f6ger till v\\u00e4nster\",\n\"Emoticons...\": \"Emoticons...\",\n\"Metadata and Document Properties\": \"Metadata och dokumentegenskaper\",\n\"Title\": \"Titel\",\n\"Keywords\": \"Nyckelord\",\n\"Description\": \"Beskrivning\",\n\"Robots\": \"Robotar\",\n\"Author\": \"F\\u00f6rfattare\",\n\"Encoding\": \"Encoding\",\n\"Fullscreen\": \"Fullsk\\u00e4rm\",\n\"Action\": \"H\\u00e4ndelse\",\n\"Shortcut\": \"Kortkommando\",\n\"Help\": \"Hj\\u00e4lp\",\n\"Address\": \"Adress\",\n\"Focus to menubar\": \"Fokusera p\\u00e5 menyrad\",\n\"Focus to toolbar\": \"Fokusera p\\u00e5 verktygsrad\",\n\"Focus to element path\": \"Fokusera p\\u00e5 elements\\u00f6kv\\u00e4gsrad\",\n\"Focus to contextual toolbar\": \"Fokusera p\\u00e5 den kontextuella verktygsraden\",\n\"Insert link (if link plugin activated)\": \"Infoga l\\u00e4nk (om link-pluginet \\u00e4r aktiverat)\",\n\"Save (if save plugin activated)\": \"Spara (om save-pluginet \\u00e4r aktiverat)\",\n\"Find (if searchreplace plugin activated)\": \"S\\u00f6k (om searchreplace-pluginet \\u00e4r aktiverat)\",\n\"Plugins installed ({0}):\": \"Installerade plugins ({0}):\",\n\"Premium plugins:\": \"Premiumplugins:\",\n\"Learn more...\": \"L\\u00e4s mer...\",\n\"You are using {0}\": \"Du anv\\u00e4nder {0}\",\n\"Plugins\": \"Plugins\",\n\"Handy Shortcuts\": \"Kortkommandon\",\n\"Horizontal line\": \"Horisontell linje\",\n\"Insert\\/edit image\": \"Infoga\\/redigera bild\",\n\"Image description\": \"Bildbeskrivning\",\n\"Source\": \"K\\u00e4lla\",\n\"Dimensions\": \"Dimensioner\",\n\"Constrain proportions\": \"Begr\\u00e4nsa proportioner\",\n\"General\": \"Generella\",\n\"Advanced\": \"Avancerat\",\n\"Style\": \"Stil\",\n\"Vertical space\": \"Vertikaltutrymme\",\n\"Horizontal space\": \"Horisontellt utrymme\",\n\"Border\": \"Ram\",\n\"Insert image\": \"Infoga bild\",\n\"Image...\": \"Bild...\",\n\"Image list\": \"Bildlista\",\n\"Rotate counterclockwise\": \"Rotera moturs\",\n\"Rotate clockwise\": \"Rotera medurs\",\n\"Flip vertically\": \"Spegelv\\u00e4nd vertikalt\",\n\"Flip horizontally\": \"Spegelv\\u00e4nd horisontellt\",\n\"Edit image\": \"Redigera bild\",\n\"Image options\": \"Bild inst\\u00e4llningar\",\n\"Zoom in\": \"Zooma in\",\n\"Zoom out\": \"Zooma ut\",\n\"Crop\": \"Besk\\u00e4r\",\n\"Resize\": \"Skala om\",\n\"Orientation\": \"Orientera\",\n\"Brightness\": \"Ljusstyrka\",\n\"Sharpen\": \"Sk\\u00e4rpa\",\n\"Contrast\": \"Kontrast\",\n\"Color levels\": \"F\\u00e4rgniv\\u00e5er\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"Invertera\",\n\"Apply\": \"Applicera\",\n\"Back\": \"Tillbaka\",\n\"Insert date\\/time\": \"Infoga datum\\/tid\",\n\"Date\\/time\": \"Datum\\/tid\",\n\"Insert\\/Edit Link\": \"Infoga\\/redigera l\\u00e4nk\",\n\"Insert\\/edit link\": \"Infoga\\/redigera l\\u00e4nk\",\n\"Text to display\": \"Text att visa\",\n\"Url\": \"Url\",\n\"Open link in...\": \"\\u00d6ppna l\\u00e4nk i...\",\n\"Current window\": \"Nuvarande f\\u00f6nster\",\n\"None\": \"Ingen\",\n\"New window\": \"Nytt f\\u00f6nster\",\n\"Remove link\": \"Ta bort l\\u00e4nk\",\n\"Anchors\": \"Bokm\\u00e4rken\",\n\"Link...\": \"L\\u00e4nk...\",\n\"Paste or type a link\": \"Klistra in eller skriv en l\\u00e4nk\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Urlen du angav verkar vara en epost adress. Vill du l\\u00e4gga till ett mailto: prefix?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Urlen du angav verkar vara en extern l\\u00e4nk. Vill du l\\u00e4gga till http:\\/\\/ prefixet?\",\n\"Link list\": \"L\\u00e4nklista\",\n\"Insert video\": \"Infoga video\",\n\"Insert\\/edit video\": \"Infoga\\/redigera video\",\n\"Insert\\/edit media\": \"Infoga\\/redigera media\",\n\"Alternative source\": \"Alternativ k\\u00e4lla\",\n\"Alternative source URL\": \"Alternativ k\\u00e4llwebbadress\",\n\"Media poster (Image URL)\": \"Mediaposter (bildwebbadress)\",\n\"Paste your embed code below:\": \"Klistra in din inb\\u00e4ddningskod nedan:\",\n\"Embed\": \"Inb\\u00e4ddning\",\n\"Media...\": \"Media...\",\n\"Nonbreaking space\": \"Avbrottsfritt mellanrum\",\n\"Page break\": \"Sidbrytning\",\n\"Paste as text\": \"Klistra in som text\",\n\"Preview\": \"F\\u00f6rhandsgranska\",\n\"Print...\": \"Skriv ut...\",\n\"Save\": \"Spara\",\n\"Find\": \"S\\u00f6k\",\n\"Replace with\": \"Ers\\u00e4tt med\",\n\"Replace\": \"Ers\\u00e4tt\",\n\"Replace all\": \"Ers\\u00e4tt alla\",\n\"Previous\": \"F\\u00f6reg\\u00e5ende\",\n\"Next\": \"N\\u00e4sta\",\n\"Find and replace...\": \"S\\u00f6k och ers\\u00e4tt...\",\n\"Could not find the specified string.\": \"Kunde inte hitta den specifierade st\\u00e4ngen.\",\n\"Match case\": \"Matcha gemener\\/versaler\",\n\"Find whole words only\": \"Hitta endast hela ord\",\n\"Spell check\": \"Stavningskontroll\",\n\"Ignore\": \"Ignorera\",\n\"Ignore all\": \"Ignorera alla\",\n\"Finish\": \"Avsluta\",\n\"Add to Dictionary\": \"L\\u00e4gg till i ordlista\",\n\"Insert table\": \"Infoga tabell\",\n\"Table properties\": \"Tabellegenskaper\",\n\"Delete table\": \"Radera tabell\",\n\"Cell\": \"Cell\",\n\"Row\": \"Rad\",\n\"Column\": \"Kolumn\",\n\"Cell properties\": \"Cellegenskaper\",\n\"Merge cells\": \"Sammanfoga celler\",\n\"Split cell\": \"Bryt is\\u00e4r celler\",\n\"Insert row before\": \"Infoga rad f\\u00f6re\",\n\"Insert row after\": \"Infoga rad efter\",\n\"Delete row\": \"Radera rad\",\n\"Row properties\": \"Radegenskaper\",\n\"Cut row\": \"Klipp ut rad\",\n\"Copy row\": \"Kopiera rad\",\n\"Paste row before\": \"Klista in rad f\\u00f6re\",\n\"Paste row after\": \"Klistra in rad efter\",\n\"Insert column before\": \"Infoga kolumn f\\u00f6re\",\n\"Insert column after\": \"Infoga kolumn efter\",\n\"Delete column\": \"Radera kolumn\",\n\"Cols\": \"Kolumner\",\n\"Rows\": \"Rader\",\n\"Width\": \"Bredd\",\n\"Height\": \"H\\u00f6jd\",\n\"Cell spacing\": \"Cellmellanrum\",\n\"Cell padding\": \"Cellpaddning\",\n\"Show caption\": \"Visa bildtext\",\n\"Left\": \"V\\u00e4nster\",\n\"Center\": \"Centrum\",\n\"Right\": \"H\\u00f6ger\",\n\"Cell type\": \"Celltyp\",\n\"Scope\": \"Omf\\u00e5ng\",\n\"Alignment\": \"Justering\",\n\"H Align\": \"H-justering\",\n\"V Align\": \"V-justering\",\n\"Top\": \"Toppen\",\n\"Middle\": \"Mitten\",\n\"Bottom\": \"Botten\",\n\"Header cell\": \"Huvudcell\",\n\"Row group\": \"Radgrupp\",\n\"Column group\": \"Kolumngrupp\",\n\"Row type\": \"Radtyp\",\n\"Header\": \"Huvud\",\n\"Body\": \"Kropp\",\n\"Footer\": \"Fot\",\n\"Border color\": \"Ramf\\u00e4rg\",\n\"Insert template...\": \"Infoga mall...\",\n\"Templates\": \"Mallar\",\n\"Template\": \"Mall\",\n\"Text color\": \"Textf\\u00e4rg\",\n\"Background color\": \"Bakgrundsf\\u00e4rg\",\n\"Custom...\": \"Anpassad...\",\n\"Custom color\": \"Anpassad f\\u00e4rg\",\n\"No color\": \"Ingen f\\u00e4rg\",\n\"Remove color\": \"Ta bort f\\u00e4rg\",\n\"Table of Contents\": \"Inneh\\u00e5llsf\\u00f6rteckning\",\n\"Show blocks\": \"Visa block\",\n\"Show invisible characters\": \"Visa onsynliga tecken\",\n\"Word count\": \"Ordantal\",\n\"Count\": \"Antal\",\n\"Document\": \"Dokument\",\n\"Selection\": \"Val\",\n\"Words\": \"Ord\",\n\"Words: {0}\": \"Ord: {0}\",\n\"{0} words\": \"{0} ord\",\n\"File\": \"Fil\",\n\"Edit\": \"Redigera\",\n\"Insert\": \"Infoga\",\n\"View\": \"Visa\",\n\"Format\": \"Format\",\n\"Table\": \"Tabell\",\n\"Tools\": \"Verktyg\",\n\"Powered by {0}\": \"Powered by {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Textredigerare. Tryck ALT-F9 f\\u00f6r menyn. Tryck ALT-F10 f\\u00f6r verktygsrader. Tryck ALT-0 f\\u00f6r hj\\u00e4lp.\",\n\"Image title\": \"Bildtitel\",\n\"Border width\": \"Kantlinjebredd\",\n\"Border style\": \"Kantlinjestil\",\n\"Error\": \"Fel\",\n\"Warn\": \"Varning\",\n\"Valid\": \"Giltig\",\n\"To open the popup, press Shift+Enter\": \"Tryck p\\u00e5 Shift\\u00a0+\\u00a0Enter f\\u00f6r att \\u00f6ppna popup-f\\u00f6nstret\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Omr\\u00e5de med formaterad text. Tryck p\\u00e5 ALT-0 f\\u00f6r hj\\u00e4lp.\",\n\"System Font\": \"Systemtypsnitt\",\n\"Failed to upload image: {0}\": \"Kunde inte ladda upp bild: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Kunde inte l\\u00e4sa in insticksprogram: {0} fr\\u00e5n webbadress {1}\",\n\"Failed to load plugin url: {0}\": \"Kunde inte l\\u00e4sa in webbadress f\\u00f6r insticksprogram: {0}\",\n\"Failed to initialize plugin: {0}\": \"Kunde inte initiera insticksprogram: {0}\",\n\"example\": \"exempel\",\n\"Search\": \"S\\u00f6k\",\n\"All\": \"Alla\",\n\"Currency\": \"Valuta\",\n\"Text\": \"Text\",\n\"Quotations\": \"Citattecken\",\n\"Mathematical\": \"Matematiskt\",\n\"Extended Latin\": \"Ut\\u00f6kad latin\",\n\"Symbols\": \"Symboler\",\n\"Arrows\": \"Pilar\",\n\"User Defined\": \"Anv\\u00e4ndardefinierade\",\n\"dollar sign\": \"dollartecken\",\n\"currency sign\": \"valutatecken\",\n\"euro-currency sign\": \"eurotecken\",\n\"colon sign\": \"kolon\",\n\"cruzeiro sign\": \"cruzeirotecken\",\n\"french franc sign\": \"franctecken\",\n\"lira sign\": \"liratecken\",\n\"mill sign\": \"milltecken\",\n\"naira sign\": \"nairatecken\",\n\"peseta sign\": \"pesetastecken\",\n\"rupee sign\": \"rupeetecken\",\n\"won sign\": \"wontecken\",\n\"new sheqel sign\": \"schekeltecken\",\n\"dong sign\": \"dongtecken\",\n\"kip sign\": \"kiptecken\",\n\"tugrik sign\": \"tugriktecken\",\n\"drachma sign\": \"drachmertecken\",\n\"german penny symbol\": \"tecken f\\u00f6r tysk penny\",\n\"peso sign\": \"pesotecken\",\n\"guarani sign\": \"guaranitecken\",\n\"austral sign\": \"australtecken\",\n\"hryvnia sign\": \"hryvniatecken\",\n\"cedi sign\": \"ceditecken\",\n\"livre tournois sign\": \"tecken f\\u00f6r livre tournois\",\n\"spesmilo sign\": \"spesmilotecken\",\n\"tenge sign\": \"tengetecken\",\n\"indian rupee sign\": \"tecken f\\u00f6r indisk rupee\",\n\"turkish lira sign\": \"tecken f\\u00f6r turkisk lira\",\n\"nordic mark sign\": \"tecken f\\u00f6r nordisk mark\",\n\"manat sign\": \"manattecken\",\n\"ruble sign\": \"rubeltecken\",\n\"yen character\": \"yentecken\",\n\"yuan character\": \"yuantecken\",\n\"yuan character, in hong kong and taiwan\": \"yuantecken i Hongkong och Taiwan\",\n\"yen\\/yuan character variant one\": \"yen-\\/yuantecken variant ett\",\n\"Loading emoticons...\": \"L\\u00e4ser in emoticons...\",\n\"Could not load emoticons\": \"Kunde inte l\\u00e4sa in emoticons\",\n\"People\": \"M\\u00e4nniskor\",\n\"Animals and Nature\": \"Djur och natur\",\n\"Food and Drink\": \"Mat och dryck\",\n\"Activity\": \"Aktivitet\",\n\"Travel and Places\": \"Resa och platser\",\n\"Objects\": \"F\\u00f6rem\\u00e5l\",\n\"Flags\": \"Flaggor\",\n\"Characters\": \"Tecken\",\n\"Characters (no spaces)\": \"Tecken (inga mellanrum)\",\n\"{0} characters\": \"{0} tecken\",\n\"Error: Form submit field collision.\": \"Fel: Kollision f\\u00e4lt f\\u00f6r s\\u00e4ndning av formul\\u00e4r.\",\n\"Error: No form element found.\": \"Fel: Inget formul\\u00e4relement hittades.\",\n\"Update\": \"Uppdatera\",\n\"Color swatch\": \"F\\u00e4rgpalett\",\n\"Turquoise\": \"Turkos\",\n\"Green\": \"Gr\\u00f6n\",\n\"Blue\": \"Bl\\u00e5\",\n\"Purple\": \"Lila\",\n\"Navy Blue\": \"M\\u00f6rkbl\\u00e5\",\n\"Dark Turquoise\": \"M\\u00f6rkturkos\",\n\"Dark Green\": \"M\\u00f6rkgr\\u00f6n\",\n\"Medium Blue\": \"Mellanbl\\u00e5\",\n\"Medium Purple\": \"Mellanlila\",\n\"Midnight Blue\": \"Midnattsbl\\u00e5\",\n\"Yellow\": \"Gul\",\n\"Orange\": \"Orange\",\n\"Red\": \"R\\u00f6d\",\n\"Light Gray\": \"Ljusgr\\u00e5\",\n\"Gray\": \"Gr\\u00e5\",\n\"Dark Yellow\": \"M\\u00f6rkgul\",\n\"Dark Orange\": \"M\\u00f6rkorange\",\n\"Dark Red\": \"M\\u00f6rkr\\u00f6d\",\n\"Medium Gray\": \"Mellangr\\u00e5\",\n\"Dark Gray\": \"M\\u00f6rkgr\\u00e5\",\n\"Light Green\": \"Ljusgr\\u00f6n\",\n\"Light Yellow\": \"Ljusgul\",\n\"Light Red\": \"Ljusr\\u00f6d\",\n\"Light Purple\": \"Ljuslila\",\n\"Light Blue\": \"Ljusbl\\u00e5\",\n\"Dark Purple\": \"M\\u00f6rklila\",\n\"Dark Blue\": \"M\\u00f6rkbl\\u00e5\",\n\"Black\": \"Svart\",\n\"White\": \"Vit\",\n\"Switch to or from fullscreen mode\": \"V\\u00e4xla till eller fr\\u00e5n fullsk\\u00e4rmsl\\u00e4ge\",\n\"Open help dialog\": \"\\u00d6ppna hj\\u00e4lpdialogrutan\",\n\"history\": \"historik\",\n\"styles\": \"stilar\",\n\"formatting\": \"formatering\",\n\"alignment\": \"justering\",\n\"indentation\": \"indragning\",\n\"permanent pen\": \"permanent penna\",\n\"comments\": \"kommentarer\",\n\"Format Painter\": \"H\\u00e4mta format\",\n\"Insert\\/edit iframe\": \"Infoga\\/redigera iframe\",\n\"Capitalization\": \"Versaler\",\n\"lowercase\": \"gemener\",\n\"UPPERCASE\": \"VERSALER\",\n\"Title Case\": \"Inledande versal\",\n\"Permanent Pen Properties\": \"Permanenta pennegenskaper\",\n\"Permanent pen properties...\": \"Permanenta pennegenskaper\\u00a0\\u2026\",\n\"Font\": \"Teckensnitt\",\n\"Size\": \"Storlek\",\n\"More...\": \"Mer...\",\n\"Spellcheck Language\": \"Spr\\u00e5k f\\u00f6r stavningskontroll\",\n\"Select...\": \"V\\u00e4lj...\",\n\"Preferences\": \"Inst\\u00e4llningar\",\n\"Yes\": \"Ja\",\n\"No\": \"Nej\",\n\"Keyboard Navigation\": \"Tangentbordsnavigering\",\n\"Version\": \"Version\",\n\"Anchor\": \"Ankare\",\n\"Special character\": \"Specialtecken\",\n\"Code sample\": \"K\\u00e5dexempel\",\n\"Color\": \"F\\u00e4rg\",\n\"Emoticons\": \"Emoticons\",\n\"Document properties\": \"Dokumentegenskaper\",\n\"Image\": \"Bild\",\n\"Insert link\": \"Infoga l\\u00e4nk\",\n\"Target\": \"M\\u00e5l\",\n\"Link\": \"L\\u00e4nk\",\n\"Poster\": \"Affish\",\n\"Media\": \"Media\",\n\"Print\": \"Skriv ut\",\n\"Prev\": \"F\\u00f6reg\\u00e5ende\",\n\"Find and replace\": \"S\\u00f6k och ers\\u00e4tt\",\n\"Whole words\": \"Hela ord\",\n\"Spellcheck\": \"R\\u00e4ttstava\",\n\"Caption\": \"Rubrik\",\n\"Insert template\": \"Infoga mall\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/ta.js",
    "content": "tinymce.addI18n('ta',{\n\"Redo\": \"\\u0bae\\u0bc0\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0baf\\u0bcd\\u0b95\",\n\"Undo\": \"\\u0b9a\\u0bc6\\u0baf\\u0bb2\\u0bcd\\u0ba4\\u0bb5\\u0bbf\\u0bb0\\u0bcd\\u0b95\\u0bcd\\u0b95\",\n\"Cut\": \"\\u0bb5\\u0bc6\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Copy\": \"\\u0ba8\\u0b95\\u0bb2\\u0bc6\\u0b9f\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Paste\": \"\\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Select all\": \"\\u0b85\\u0ba9\\u0bc8\\u0ba4\\u0bcd\\u0ba4\\u0bc8\\u0baf\\u0bc1\\u0bae\\u0bcd \\u0ba4\\u0bc7\\u0bb0\\u0bcd\\u0bb5\\u0bc1 \\u0b9a\\u0bc6\\u0baf\\u0bcd\\u0b95\",\n\"New document\": \"\\u0baa\\u0bc1\\u0ba4\\u0bbf\\u0baf \\u0b86\\u0bb5\\u0ba3\\u0bae\\u0bcd\",\n\"Ok\": \"\\u0b9a\\u0bb0\\u0bbf\",\n\"Cancel\": \"\\u0bb0\\u0ba4\\u0bcd\\u0ba4\\u0bc1 \\u0b9a\\u0bc6\\u0baf\\u0bcd\\u0b95\",\n\"Visual aids\": \"\\u0b95\\u0bbe\\u0b9f\\u0bcd\\u0b9a\\u0bbf\\u0ba4\\u0bcd \\u0ba4\\u0bc1\\u0ba3\\u0bc8\\u0baf\\u0ba9\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Bold\": \"\\u0ba4\\u0b9f\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Italic\": \"\\u0b9a\\u0bbe\\u0baf\\u0bcd\\u0bb5\\u0bc1\",\n\"Underline\": \"\\u0b85\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bcb\\u0b9f\\u0bc1\",\n\"Strikethrough\": \"\\u0ba8\\u0b9f\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bcb\\u0b9f\\u0bc1\",\n\"Superscript\": \"\\u0bae\\u0bc7\\u0bb2\\u0bcd\\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\",\n\"Subscript\": \"\\u0b95\\u0bc0\\u0bb4\\u0bcd\\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\",\n\"Clear formatting\": \"\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b85\\u0bb4\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Align left\": \"\\u0b87\\u0b9f\\u0ba4\\u0bc1 \\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\",\n\"Align center\": \"\\u0bae\\u0bc8\\u0baf \\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\",\n\"Align right\": \"\\u0bb5\\u0bb2\\u0ba4\\u0bc1 \\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\",\n\"Justify\": \"\\u0ba8\\u0bc7\\u0bb0\\u0bcd\\u0ba4\\u0bcd\\u0ba4\\u0bbf \\u0b9a\\u0bc6\\u0baf\\u0bcd\\u0b95\",\n\"Bullet list\": \"\\u0baa\\u0bca\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0b9f\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f  \\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0baf\\u0bb2\\u0bcd\",\n\"Numbered list\": \"\\u0b8e\\u0ba3\\u0bcd\\u0ba3\\u0bbf\\u0b9f\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f \\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0baf\\u0bb2\\u0bcd\",\n\"Decrease indent\": \"\\u0b89\\u0bb3\\u0bcd\\u0ba4\\u0bb3\\u0bcd\\u0bb3\\u0bc1\\u0ba4\\u0bb2\\u0bc8 \\u0b95\\u0bc1\\u0bb1\\u0bc8\\u0b95\\u0bcd\\u0b95\",\n\"Increase indent\": \"\\u0b89\\u0bb3\\u0bcd\\u0ba4\\u0bb3\\u0bcd\\u0bb3\\u0bc1\\u0ba4\\u0bb2\\u0bc8 \\u0b85\\u0ba4\\u0bbf\\u0b95\\u0bb0\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Close\": \"\\u0bae\\u0bc2\\u0b9f\\u0bc1\\u0b95\",\n\"Formats\": \"\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u0ba8\\u0b95\\u0bb2\\u0b95\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0ba8\\u0bc7\\u0bb0\\u0b9f\\u0bbf \\u0b85\\u0ba3\\u0bc1\\u0b95\\u0bb2\\u0bc8 \\u0ba4\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b89\\u0bb2\\u0bbe\\u0bb5\\u0bbf \\u0b86\\u0ba4\\u0bb0\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bb5\\u0bbf\\u0bb2\\u0bcd\\u0bb2\\u0bc8. \\u0b86\\u0b95\\u0bb5\\u0bc7 \\u0bb5\\u0bbf\\u0b9a\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bb2\\u0b95\\u0bc8 \\u0b95\\u0bc1\\u0bb1\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0bb5\\u0bb4\\u0bbf\\u0b95\\u0bb3\\u0bbe\\u0ba9 Ctrl+X\\/C\\/V \\u0b87\\u0bb5\\u0bb1\\u0bcd\\u0bb1\\u0bc8 \\u0ba4\\u0baf\\u0bb5\\u0bc1 \\u0b9a\\u0bc6\\u0baf\\u0bcd\\u0ba4\\u0bc1 \\u0baa\\u0baf\\u0ba9\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95.\",\n\"Headers\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Header 1\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 1\",\n\"Header 2\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 2\",\n\"Header 3\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 3\",\n\"Header 4\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 4\",\n\"Header 5\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 5\",\n\"Header 6\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 6\",\n\"Headings\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Heading 1\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 1\",\n\"Heading 2\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 2\",\n\"Heading 3\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 3\",\n\"Heading 4\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 4\",\n\"Heading 5\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 5\",\n\"Heading 6\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 6\",\n\"Preformatted\": \"\\u0bae\\u0bc1\\u0ba9\\u0bcd\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0ba4\\u0bc1\",\n\"Div\": \"\\u0baa\\u0bbf\\u0bb0\\u0bbf\\u0bb5\\u0bc1 (Div)\",\n\"Pre\": \"\\u0bae\\u0bc1\\u0ba9\\u0bcd \\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0ba4\\u0bc1 (Pre)\",\n\"Code\": \"\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bc1\",\n\"Paragraph\": \"\\u0baa\\u0ba4\\u0bcd\\u0ba4\\u0bbf\",\n\"Blockquote\": \"\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0ba4\\u0bbf \\u0bae\\u0bc7\\u0bb1\\u0bcd\\u0b95\\u0bcb\\u0bb3\\u0bcd\",\n\"Inline\": \"\\u0b89\\u0bb3\\u0bcd\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8\",\n\"Blocks\": \"\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0ba4\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u0b87\\u0baf\\u0bb2\\u0bcd\\u0baa\\u0bc1 \\u0b89\\u0bb0\\u0bc8 \\u0bae\\u0bc1\\u0bb1\\u0bc8\\u0bae\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0ba4\\u0bb1\\u0bcd\\u0baa\\u0bcb\\u0ba4\\u0bc1 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0ba4\\u0bb2\\u0bcd \\u0b89\\u0bb3\\u0bcd\\u0bb3\\u0ba4\\u0bc1. \\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b87\\u0ba8\\u0bcd\\u0ba4 \\u0bb5\\u0bbf\\u0bb0\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bc8 \\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0bb5\\u0bb0\\u0bc8 \\u0b89\\u0bb3\\u0bcd\\u0bb3\\u0b9f\\u0b95\\u0bcd\\u0b95\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b87\\u0baf\\u0bb2\\u0bcd\\u0baa\\u0bc1 \\u0b89\\u0bb0\\u0bc8\\u0baf\\u0bbe\\u0b95 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0bae\\u0bcd.\",\n\"Fonts\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bb0\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Font Sizes\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bb0\\u0bc1 \\u0b85\\u0bb3\\u0bb5\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Class\": \"Class\",\n\"Browse for an image\": \"\\u0b92\\u0bb0\\u0bc1 \\u0baa\\u0b9f\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bc1 \\u0b89\\u0bb2\\u0bbe\\u0bb5\\u0bc1\\u0b95\",\n\"OR\": \"\\u0b85\\u0bb2\\u0bcd\\u0bb2\\u0ba4\\u0bc1\",\n\"Drop an image here\": \"\\u0b92\\u0bb0\\u0bc1 \\u0baa\\u0b9f\\u0ba4\\u0bcd\\u0ba4\\u0bc8 \\u0b87\\u0b99\\u0bcd\\u0b95\\u0bc1 \\u0b87\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0baa\\u0bcd \\u0baa\\u0bcb\\u0b9f\\u0bb5\\u0bc1\\u0bae\\u0bcd\",\n\"Upload\": \"\\u0baa\\u0ba4\\u0bbf\\u0bb5\\u0bc7\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Block\": \"\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0ba4\\u0bbf\",\n\"Align\": \"\\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\",\n\"Default\": \"\\u0b89\\u0bb3\\u0bcd\\u0bb3\\u0bbf\\u0bb0\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Circle\": \"\\u0bb5\\u0b9f\\u0bcd\\u0b9f\\u0bae\\u0bcd\",\n\"Disc\": \"\\u0bb5\\u0b9f\\u0bcd\\u0b9f\\u0bc1\",\n\"Square\": \"\\u0b9a\\u0ba4\\u0bc1\\u0bb0\\u0bae\\u0bcd\",\n\"Lower Alpha\": \"\\u0b95\\u0bc0\\u0bb4\\u0bcd \\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\",\n\"Lower Greek\": \"\\u0b95\\u0bc0\\u0bb4\\u0bcd \\u0b95\\u0bbf\\u0bb0\\u0bc7\\u0b95\\u0bcd\\u0b95\\u0bae\\u0bcd\",\n\"Lower Roman\": \"\\u0b95\\u0bc0\\u0bb4\\u0bcd \\u0bb0\\u0bcb\\u0bae\\u0bbe\\u0ba9\\u0bbf\\u0baf\\u0bae\\u0bcd\",\n\"Upper Alpha\": \"\\u0bae\\u0bc7\\u0bb2\\u0bcd \\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\",\n\"Upper Roman\": \"\\u0bae\\u0bc7\\u0bb2\\u0bcd \\u0bb0\\u0bcb\\u0bae\\u0bbe\\u0ba9\\u0bbf\\u0baf\\u0bae\\u0bcd\",\n\"Anchor...\": \"\\u0ba8\\u0b99\\u0bcd\\u0b95\\u0bc2\\u0bb0\\u0bae\\u0bcd...\",\n\"Name\": \"\\u0baa\\u0bc6\\u0baf\\u0bb0\\u0bcd\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id \\u0b86\\u0ba9\\u0ba4\\u0bc1 \\u0b92\\u0bb0\\u0bc1 \\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0bb2\\u0bcd \\u0ba4\\u0bca\\u0b9f\\u0b99\\u0bcd\\u0b95 \\u0bb5\\u0bc7\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bcd; \\u0b87\\u0ba4\\u0ba9\\u0bc8\\u0ba4\\u0bcd \\u0ba4\\u0bca\\u0b9f\\u0bb0\\u0bcd\\u0ba8\\u0bcd\\u0ba4\\u0bc1 \\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd, \\u0b8e\\u0ba3\\u0bcd\\u0b95\\u0bb3\\u0bcd, \\u0b87\\u0b9f\\u0bc8\\u0b95\\u0bcd\\u0b95\\u0bc7\\u0bbe\\u0b9f\\u0bc1\\u0b95\\u0bb3\\u0bcd (-), \\u0baa\\u0bc1\\u0bb3\\u0bcd\\u0bb3\\u0bbf\\u0b95\\u0bb3\\u0bcd (.), \\u0bae\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bbe\\u0bb1\\u0bcd\\u0baa\\u0bc1\\u0bb3\\u0bcd\\u0bb3\\u0bbf\\u0b95\\u0bb3\\u0bcd (:) \\u0bae\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0b85\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc7\\u0bbe\\u0b9f\\u0bc1\\u0b95\\u0bb3\\u0bcd (_) \\u0bae\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bc7 \\u0b87\\u0bb0\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bb2\\u0bcd \\u0bb5\\u0bc7\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bcd.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u0b9a\\u0bc7\\u0bae\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bbe\\u0ba4 \\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b89\\u0bb3\\u0bcd\\u0bb3\\u0ba9; \\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b89\\u0bb1\\u0bc1\\u0ba4\\u0bbf\\u0baf\\u0bbe\\u0b95 \\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0baf\\u0bc7\\u0bb1 \\u0bb5\\u0bbf\\u0bb0\\u0bc1\\u0bae\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bbf\\u0bb1\\u0bc0\\u0bb0\\u0bcd\\u0b95\\u0bbe\\u0bb3\\u0bbe?\",\n\"Restore last draft\": \"\\u0b95\\u0b9f\\u0ba8\\u0bcd\\u0ba4 \\u0bb5\\u0bb0\\u0bc8\\u0bb5\\u0bc8 \\u0bae\\u0bc0\\u0b9f\\u0bcd\\u0b9f\\u0bc6\\u0b9f\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Special character...\": \"\\u0b9a\\u0bbf\\u0bb1\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b89\\u0bb0\\u0bc1...\",\n\"Source code\": \"\\u0bae\\u0bc2\\u0bb2 \\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bc1\",\n\"Insert\\/Edit code sample\": \"\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bc1 \\u0bae\\u0bbe\\u0ba4\\u0bbf\\u0bb0\\u0bbf \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Language\": \"\\u0bae\\u0bca\\u0bb4\\u0bbf\",\n\"Code sample...\": \"\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bc1 \\u0bae\\u0bbe\\u0ba4\\u0bbf\\u0bb0\\u0bbf...\",\n\"Color Picker\": \"\\u0ba8\\u0bbf\\u0bb1\\u0ba4\\u0bcd \\u0ba4\\u0bc6\\u0bb0\\u0bbf\\u0bb5\\u0bc1\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"\\u0b87\\u0b9f\\u0bae\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bc1 \\u0bb5\\u0bb2\\u0bae\\u0bcd\",\n\"Right to left\": \"\\u0bb5\\u0bb2\\u0bae\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bc1 \\u0b87\\u0b9f\\u0bae\\u0bcd\",\n\"Emoticons...\": \"\\u0b89\\u0ba3\\u0bb0\\u0bcd\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bbf\\u0bae\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Metadata and Document Properties\": \"\\u0bae\\u0bc0\\u0ba4\\u0bcd\\u0ba4\\u0bb0\\u0bb5\\u0bc1 \\u0bae\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0b86\\u0bb5\\u0ba3\\u0baa\\u0bcd \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Title\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Keywords\": \"\\u0bae\\u0bc1\\u0ba4\\u0ba9\\u0bcd\\u0bae\\u0bc8\\u0b9a\\u0bcd\\u0b9a\\u0bca\\u0bb1\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Description\": \"\\u0bb5\\u0bbf\\u0bb5\\u0bb0\\u0bae\\u0bcd\",\n\"Robots\": \"\\u0baa\\u0bca\\u0bb1\\u0bbf\\u0baf\\u0ba9\\u0bcd\\u0b95\\u0bb3\\u0bcd (Robots)\",\n\"Author\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbe\\u0bb3\\u0bb0\\u0bcd\",\n\"Encoding\": \"\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0bae\\u0bcd\",\n\"Fullscreen\": \"\\u0bae\\u0bc1\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0bb0\\u0bc8\",\n\"Action\": \"\\u0b9a\\u0bc6\\u0baf\\u0bb2\\u0bcd\",\n\"Shortcut\": \"\\u0b95\\u0bc1\\u0bb1\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0bb5\\u0bb4\\u0bbf\",\n\"Help\": \"\\u0b89\\u0ba4\\u0bb5\\u0bbf\",\n\"Address\": \"\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf\",\n\"Focus to menubar\": \"\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b95\\u0bb5\\u0ba9\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0bb2\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\",\n\"Focus to toolbar\": \"\\u0b95\\u0bb0\\u0bc1\\u0bb5\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b95\\u0bb5\\u0ba9\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0bb2\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\",\n\"Focus to element path\": \"\\u0bae\\u0bc2\\u0bb2\\u0b95\\u0baa\\u0bcd \\u0baa\\u0bbe\\u0ba4\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b95\\u0bb5\\u0ba9\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0bb2\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\",\n\"Focus to contextual toolbar\": \"\\u0b9a\\u0bc2\\u0bb4\\u0bcd\\u0ba8\\u0bbf\\u0bb2\\u0bc8 \\u0b95\\u0bb0\\u0bc1\\u0bb5\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b95\\u0bb5\\u0ba9\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0bb2\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\",\n\"Insert link (if link plugin activated)\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95 (\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf \\u0b9a\\u0bc6\\u0baf\\u0bb2\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0baf\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bbe\\u0bb2\\u0bcd)\",\n\"Save (if save plugin activated)\": \"\\u0b9a\\u0bc7\\u0bae\\u0bbf\\u0b95\\u0bcd\\u0b95 (\\u0b9a\\u0bc7\\u0bae\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf \\u0b9a\\u0bc6\\u0baf\\u0bb2\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0baf\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bbe\\u0bb2\\u0bcd)\",\n\"Find (if searchreplace plugin activated)\": \"\\u0b95\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bbf\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95 (\\u0ba4\\u0bc7\\u0b9f\\u0bbf\\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bb2\\u0bcd \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf \\u0b9a\\u0bc6\\u0baf\\u0bb2\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0baf\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bbe\\u0bb2\\u0bcd)\",\n\"Plugins installed ({0}):\": \"\\u0ba8\\u0bbf\\u0bb1\\u0bc1\\u0bb5\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0bb3\\u0bcd\\u0bb3 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf\\u0b95\\u0bb3\\u0bcd ({0}):\",\n\"Premium plugins:\": \"\\u0b89\\u0baf\\u0bb0\\u0bcd\\u0bae\\u0ba4\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf\\u0b95\\u0bb3\\u0bcd:\",\n\"Learn more...\": \"\\u0bae\\u0bc7\\u0bb2\\u0bc1\\u0bae\\u0bcd \\u0b85\\u0bb1\\u0bbf\\u0b95...\",\n\"You are using {0}\": \"\\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0baa\\u0baf\\u0ba9\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bb5\\u0ba4\\u0bc1 {0}\",\n\"Plugins\": \"\\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"Handy Shortcuts\": \"\\u0b8e\\u0bb3\\u0bbf\\u0ba4\\u0bbf\\u0bb2\\u0bcd \\u0b95\\u0bc8\\u0baf\\u0bbe\\u0bb3\\u0b95\\u0bcd\\u0b95\\u0bc2\\u0b9f\\u0bbf\\u0baf \\u0b95\\u0bc1\\u0bb1\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0bb5\\u0bb4\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"Horizontal line\": \"\\u0b95\\u0bbf\\u0b9f\\u0bc8 \\u0b95\\u0bcb\\u0b9f\\u0bc1\",\n\"Insert\\/edit image\": \"\\u0baa\\u0b9f\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Image description\": \"\\u0baa\\u0b9f \\u0bb5\\u0bbf\\u0bb5\\u0bb0\\u0bae\\u0bcd\",\n\"Source\": \"\\u0bae\\u0bc2\\u0bb2\\u0bae\\u0bcd\",\n\"Dimensions\": \"\\u0baa\\u0bb0\\u0bbf\\u0bae\\u0bbe\\u0ba3\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Constrain proportions\": \"\\u0bb5\\u0bbf\\u0b95\\u0bbf\\u0ba4\\u0bbe\\u0b9a\\u0bcd\\u0b9a\\u0bbe\\u0bb0\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0bb2\\u0bcd \\u0b95\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\",\n\"General\": \"\\u0baa\\u0bca\\u0ba4\\u0bc1\",\n\"Advanced\": \"\\u0bae\\u0bc7\\u0bae\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0ba4\\u0bc1\",\n\"Style\": \"\\u0baa\\u0bbe\\u0ba3\\u0bbf\",\n\"Vertical space\": \"\\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0ba4\\u0bb3 \\u0b87\\u0b9f\\u0bc8\\u0bb5\\u0bc6\\u0bb3\\u0bbf\",\n\"Horizontal space\": \"\\u0b95\\u0bbf\\u0b9f\\u0bc8\\u0bae\\u0b9f\\u0bcd\\u0b9f \\u0b87\\u0b9f\\u0bc8\\u0bb5\\u0bc6\\u0bb3\\u0bbf\",\n\"Border\": \"\\u0b95\\u0bb0\\u0bc8\",\n\"Insert image\": \"\\u0baa\\u0b9f\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Image...\": \"\\u0baa\\u0b9f\\u0bae\\u0bcd...\",\n\"Image list\": \"\\u0baa\\u0b9f\\u0baa\\u0bcd \\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0baf\\u0bb2\\u0bcd\",\n\"Rotate counterclockwise\": \"\\u0b95\\u0b9f\\u0bbf\\u0b95\\u0bbe\\u0bb0 \\u0b8e\\u0ba4\\u0bbf\\u0bb0\\u0bcd\\u0ba4\\u0bbf\\u0b9a\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b9a\\u0bc1\\u0bb4\\u0bb1\\u0bcd\\u0bb1\\u0bc1\",\n\"Rotate clockwise\": \"\\u0b95\\u0b9f\\u0bbf\\u0b95\\u0bbe\\u0bb0\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0b9a\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b9a\\u0bc1\\u0bb4\\u0bb1\\u0bcd\\u0bb1\\u0bc1\",\n\"Flip vertically\": \"\\u0b9a\\u0bc6\\u0b99\\u0bcd\\u0b95\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbe\\u0b95 \\u0baa\\u0bc1\\u0bb0\\u0b9f\\u0bcd\\u0b9f\\u0bc1\",\n\"Flip horizontally\": \"\\u0b95\\u0bbf\\u0b9f\\u0bc8\\u0bae\\u0b9f\\u0bcd\\u0b9f\\u0bae\\u0bbe\\u0b95 \\u0baa\\u0bc1\\u0bb0\\u0b9f\\u0bcd\\u0b9f\\u0bc1\",\n\"Edit image\": \"\\u0baa\\u0b9f\\u0ba4\\u0bcd\\u0ba4\\u0bc8 \\u0ba4\\u0bca\\u0b95\\u0bc1\",\n\"Image options\": \"\\u0baa\\u0b9f \\u0bb5\\u0bbf\\u0bb0\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Zoom in\": \"\\u0baa\\u0bc6\\u0bb0\\u0bbf\\u0ba4\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0bc1\",\n\"Zoom out\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bbf\\u0ba4\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0bc1\",\n\"Crop\": \"\\u0b9a\\u0bc6\\u0ba4\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bc1\",\n\"Resize\": \"\\u0bae\\u0bb1\\u0bc1\\u0b85\\u0bb3\\u0bb5\\u0bbf\\u0b9f\\u0bc1\",\n\"Orientation\": \"\\u0ba4\\u0bbf\\u0b9a\\u0bc8\\u0baf\\u0bae\\u0bc8\\u0bb5\\u0bc1\",\n\"Brightness\": \"\\u0b92\\u0bb3\\u0bbf\\u0bb0\\u0bcd\\u0bb5\\u0bc1\",\n\"Sharpen\": \"\\u0b95\\u0bc2\\u0bb0\\u0bcd\\u0bae\\u0bc8\\u0baf\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0bc1\",\n\"Contrast\": \"\\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bbe\\u0bb1\\u0bc1\\u0baa\\u0bbe\\u0b9f\\u0bc1\",\n\"Color levels\": \"\\u0bb5\\u0ba3\\u0bcd\\u0ba3 \\u0ba8\\u0bbf\\u0bb2\\u0bc8\\u0b95\\u0bb3\\u0bcd\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"\\u0ba8\\u0bc7\\u0bb0\\u0bcd\\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\",\n\"Apply\": \"\\u0baa\\u0baf\\u0ba9\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\",\n\"Back\": \"\\u0baa\\u0bbf\\u0ba9\\u0bcd\",\n\"Insert date\\/time\": \"\\u0ba4\\u0bc7\\u0ba4\\u0bbf\\/\\u0ba8\\u0bc7\\u0bb0\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Date\\/time\": \"\\u0ba4\\u0bc7\\u0ba4\\u0bbf\\/\\u0ba8\\u0bc7\\u0bb0\\u0bae\\u0bcd\",\n\"Insert\\/Edit Link\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Insert\\/edit link\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Text to display\": \"\\u0b95\\u0bbe\\u0b9f\\u0bcd\\u0b9a\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4 \\u0bb5\\u0bc7\\u0ba3\\u0bcd\\u0b9f\\u0bbf\\u0baf \\u0b89\\u0bb0\\u0bc8\",\n\"Url\": \"\\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf\",\n\"Open link in...\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc8 \\u0b87\\u0ba4\\u0bbf\\u0bb2\\u0bcd \\u0ba4\\u0bbf\\u0bb1\\u0b95\\u0bcd\\u0b95...\",\n\"Current window\": \"\\u0ba4\\u0bb1\\u0bcd\\u0baa\\u0bcb\\u0ba4\\u0bc8\\u0baf \\u0b9a\\u0bbe\\u0bb3\\u0bb0\\u0bae\\u0bcd\",\n\"None\": \"\\u0b8f\\u0ba4\\u0bc1\\u0bae\\u0bbf\\u0bb2\\u0bcd\\u0bb2\\u0bc8\",\n\"New window\": \"\\u0baa\\u0bc1\\u0ba4\\u0bbf\\u0baf \\u0b9a\\u0bbe\\u0bb3\\u0bb0\\u0bae\\u0bcd\",\n\"Remove link\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc8 \\u0b85\\u0b95\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Anchors\": \"\\u0ba8\\u0b99\\u0bcd\\u0b95\\u0bc2\\u0bb0\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Link...\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1...\",\n\"Paste or type a link\": \"\\u0b92\\u0bb0\\u0bc1 \\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95 \\u0b85\\u0bb2\\u0bcd\\u0bb2\\u0ba4\\u0bc1 \\u0ba4\\u0b9f\\u0bcd\\u0b9f\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0b9f\\u0bc1\\u0b95\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b89\\u0bb3\\u0bcd\\u0bb3\\u0bbf\\u0b9f\\u0bcd\\u0b9f \\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf (URL) \\u0b92\\u0bb0\\u0bc1 \\u0bae\\u0bbf\\u0ba9\\u0bcd-\\u0b85\\u0b9e\\u0bcd\\u0b9a\\u0bb2\\u0bcd \\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf \\u0baa\\u0bcb\\u0bb2\\u0bcd \\u0ba4\\u0bcb\\u0ba9\\u0bcd\\u0bb1\\u0bc1\\u0b95\\u0bbf\\u0bb1\\u0ba4\\u0bc1. \\u0ba4\\u0bc7\\u0bb5\\u0bc8\\u0baf\\u0bbe\\u0ba9 mailto: \\u0bae\\u0bc1\\u0ba9\\u0bcd-\\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc8\\u0ba4\\u0bcd (prefix) \\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b9a\\u0bc7\\u0bb0\\u0bcd\\u0b95\\u0bcd\\u0b95 \\u0bb5\\u0bc7\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bbe?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b89\\u0bb3\\u0bcd\\u0bb3\\u0bbf\\u0b9f\\u0bcd\\u0b9f \\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf (URL) \\u0b92\\u0bb0\\u0bc1 \\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0bb1 \\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 (external link) \\u0baa\\u0bcb\\u0bb2\\u0bcd \\u0ba4\\u0bcb\\u0ba9\\u0bcd\\u0bb1\\u0bc1\\u0b95\\u0bbf\\u0bb1\\u0ba4\\u0bc1. \\u0ba4\\u0bc7\\u0bb5\\u0bc8\\u0baf\\u0bbe\\u0ba9 http:\\/\\/ \\u0bae\\u0bc1\\u0ba9\\u0bcd-\\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc8\\u0ba4\\u0bcd (prefix) \\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b9a\\u0bc7\\u0bb0\\u0bcd\\u0b95\\u0bcd\\u0b95 \\u0bb5\\u0bc7\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bbe?\",\n\"Link list\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0baa\\u0bcd \\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0baf\\u0bb2\\u0bcd\",\n\"Insert video\": \"\\u0b95\\u0bbe\\u0ba3\\u0bca\\u0bb3\\u0bbf \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Insert\\/edit video\": \"\\u0b95\\u0bbe\\u0ba3\\u0bca\\u0bb3\\u0bbf \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Insert\\/edit media\": \"\\u0b8a\\u0b9f\\u0b95\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Alternative source\": \"\\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1 \\u0bae\\u0bc2\\u0bb2\\u0bae\\u0bcd\",\n\"Alternative source URL\": \"\\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1 \\u0bae\\u0bc2\\u0bb2 \\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf\",\n\"Media poster (Image URL)\": \"\\u0b8a\\u0b9f\\u0b95 \\u0b9a\\u0bc1\\u0bb5\\u0bb0\\u0bca\\u0b9f\\u0bcd\\u0b9f\\u0bbf (\\u0b89\\u0b9f \\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf)\",\n\"Paste your embed code below:\": \"\\u0ba4\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b89\\u0b9f\\u0bcd\\u0baa\\u0bc6\\u0bbe\\u0ba4\\u0bbf \\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bcd\\u0b9f\\u0bc8 \\u0b95\\u0bc0\\u0bb4\\u0bc7 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bb5\\u0bc1\\u0bae\\u0bcd:\",\n\"Embed\": \"\\u0b89\\u0b9f\\u0bcd\\u0baa\\u0bca\\u0ba4\\u0bbf\",\n\"Media...\": \"\\u0b8a\\u0b9f\\u0b95\\u0bae\\u0bcd...\",\n\"Nonbreaking space\": \"\\u0baa\\u0bbf\\u0bb0\\u0bbf\\u0baf\\u0bbe\\u0ba4 \\u0b87\\u0b9f\\u0bc8\\u0bb5\\u0bc6\\u0bb3\\u0bbf\",\n\"Page break\": \"\\u0baa\\u0b95\\u0bcd\\u0b95 \\u0baa\\u0bbf\\u0bb0\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Paste as text\": \"\\u0b89\\u0bb0\\u0bc8\\u0baf\\u0bbe\\u0b95 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Preview\": \"\\u0bae\\u0bc1\\u0ba9\\u0bcd\\u0ba8\\u0bcb\\u0b95\\u0bcd\\u0b95\\u0bc1\",\n\"Print...\": \"\\u0b85\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0b9f\\u0bc1\\u0b95...\",\n\"Save\": \"\\u0b9a\\u0bc7\\u0bae\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Find\": \"\\u0b95\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bbf\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Replace with\": \"\\u0b87\\u0ba4\\u0ba9\\u0bc1\\u0b9f\\u0ba9\\u0bcd \\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Replace\": \"\\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Replace all\": \"\\u0b85\\u0ba9\\u0bc8\\u0ba4\\u0bcd\\u0ba4\\u0bc8\\u0baf\\u0bc1\\u0bae\\u0bcd \\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Previous\": \"\\u0bae\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bc8\\u0baf\",\n\"Next\": \"\\u0b85\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\",\n\"Find and replace...\": \"\\u0b95\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bbf\\u0b9f\\u0bbf\\u0ba4\\u0bcd\\u0ba4\\u0bc1 \\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95...\",\n\"Could not find the specified string.\": \"\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bbf\\u0b9f\\u0bcd\\u0b9f \\u0b9a\\u0bb0\\u0bae\\u0bcd \\u0b95\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bbf\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95 \\u0bae\\u0bc1\\u0b9f\\u0bbf\\u0baf\\u0bb5\\u0bbf\\u0bb2\\u0bcd\\u0bb2\\u0bc8\",\n\"Match case\": \"\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0ba4\\u0bcd\\u0ba4\\u0bc8 \\u0baa\\u0bca\\u0bb0\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\",\n\"Find whole words only\": \"\\u0bae\\u0bc1\\u0bb4\\u0bc1 \\u0b9a\\u0bca\\u0bb1\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0bae\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bcd \\u0b95\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bbf\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Spell check\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bbf\\u0bb4\\u0bc8 \\u0b9a\\u0bb0\\u0bbf\\u0baa\\u0bbe\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Ignore\": \"\\u0baa\\u0bc1\\u0bb1\\u0b95\\u0bcd\\u0b95\\u0ba3\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Ignore all\": \"\\u0b85\\u0ba9\\u0bc8\\u0ba4\\u0bcd\\u0ba4\\u0bc8\\u0baf\\u0bc1\\u0bae\\u0bcd \\u0baa\\u0bc1\\u0bb1\\u0b95\\u0bcd\\u0b95\\u0ba3\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Finish\": \"\\u0bae\\u0bc1\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Add to Dictionary\": \"\\u0b85\\u0b95\\u0bb0\\u0bbe\\u0ba4\\u0bbf\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b9a\\u0bc7\\u0bb0\\u0bcd\\u0b95\\u0bcd\\u0b95\",\n\"Insert table\": \"\\u0b85\\u0b9f\\u0bcd\\u0b9f\\u0bb5\\u0ba3\\u0bc8 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Table properties\": \"\\u0b85\\u0b9f\\u0bcd\\u0b9f\\u0bb5\\u0ba3\\u0bc8 \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Delete table\": \"\\u0b85\\u0b9f\\u0bcd\\u0b9f\\u0bb5\\u0ba3\\u0bc8 \\u0ba8\\u0bc0\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0b95\",\n\"Cell\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8\",\n\"Row\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8\",\n\"Column\": \"\\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8\",\n\"Cell properties\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8 \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Merge cells\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8\\u0b95\\u0bb3\\u0bcd \\u0b9a\\u0bc7\\u0bb0\\u0bcd\\u0b95\\u0bcd\\u0b95\",\n\"Split cell\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8 \\u0baa\\u0bbf\\u0bb0\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Insert row before\": \"\\u0b87\\u0ba4\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0bae\\u0bc1\\u0ba9\\u0bcd \\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Insert row after\": \"\\u0b87\\u0ba4\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0baa\\u0bbf\\u0ba9\\u0bcd \\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Delete row\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0ba8\\u0bc0\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0b95\",\n\"Row properties\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Cut row\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0bb5\\u0bc6\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Copy row\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0ba8\\u0b95\\u0bb2\\u0bc6\\u0b9f\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Paste row before\": \"\\u0b87\\u0ba4\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0bae\\u0bc1\\u0ba9\\u0bcd \\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Paste row after\": \"\\u0b87\\u0ba4\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0baa\\u0bbf\\u0ba9\\u0bcd \\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Insert column before\": \"\\u0b87\\u0ba4\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0bae\\u0bc1\\u0ba9\\u0bcd \\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Insert column after\": \"\\u0b87\\u0ba4\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0baa\\u0bbf\\u0ba9\\u0bcd \\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Delete column\": \"\\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0ba8\\u0bc0\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0b95\",\n\"Cols\": \"\\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8\\u0b95\\u0bb3\\u0bcd\",\n\"Rows\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8\\u0b95\\u0bb3\\u0bcd\",\n\"Width\": \"\\u0b85\\u0b95\\u0bb2\\u0bae\\u0bcd\",\n\"Height\": \"\\u0b89\\u0baf\\u0bb0\\u0bae\\u0bcd\",\n\"Cell spacing\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8 \\u0b87\\u0b9f\\u0bc8\\u0bb5\\u0bc6\\u0bb3\\u0bbf\",\n\"Cell padding\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8 \\u0ba8\\u0bbf\\u0bb0\\u0baa\\u0bcd\\u0baa\\u0bb2\\u0bcd\",\n\"Show caption\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b95\\u0bbe\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Left\": \"\\u0b87\\u0b9f\\u0bae\\u0bcd\",\n\"Center\": \"\\u0bae\\u0bc8\\u0baf\\u0bae\\u0bcd\",\n\"Right\": \"\\u0bb5\\u0bb2\\u0bae\\u0bcd\",\n\"Cell type\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8 \\u0bb5\\u0b95\\u0bc8\",\n\"Scope\": \"\\u0bb5\\u0bb0\\u0bc8\\u0baf\\u0bc6\\u0bb2\\u0bcd\\u0bb2\\u0bc8\",\n\"Alignment\": \"\\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\\u0bb5\\u0bc1\",\n\"H Align\": \"\\u0b95\\u0bbf (H) \\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\",\n\"V Align\": \"\\u0b9a\\u0bc6 (V) \\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\",\n\"Top\": \"\\u0bae\\u0bc7\\u0bb2\\u0bcd\",\n\"Middle\": \"\\u0ba8\\u0b9f\\u0bc1\",\n\"Bottom\": \"\\u0b95\\u0bc0\\u0bb4\\u0bcd\",\n\"Header cell\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8\",\n\"Row group\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b95\\u0bc1\\u0bb4\\u0bc1\",\n\"Column group\": \"\\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b95\\u0bc1\\u0bb4\\u0bc1\",\n\"Row type\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0bb5\\u0b95\\u0bc8\",\n\"Header\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Body\": \"\\u0b89\\u0b9f\\u0bb2\\u0bcd\",\n\"Footer\": \"\\u0b85\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Border color\": \"\\u0b95\\u0bb0\\u0bc8\\u0baf\\u0bbf\\u0ba9\\u0bcd \\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd\",\n\"Insert template...\": \"\\u0bb5\\u0bbe\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0bb0\\u0bc1 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95...\",\n\"Templates\": \"\\u0bb5\\u0bbe\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0bb0\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Template\": \"\\u0bb5\\u0bbe\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0bb0\\u0bc1\",\n\"Text color\": \"\\u0b89\\u0bb0\\u0bc8\\u0baf\\u0bbf\\u0ba9\\u0bcd \\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd\",\n\"Background color\": \"\\u0baa\\u0bbf\\u0ba9\\u0bcd\\u0ba9\\u0ba3\\u0bbf \\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd\",\n\"Custom...\": \"\\u0ba4\\u0ba9\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0baf\\u0ba9\\u0bcd...\",\n\"Custom color\": \"\\u0ba4\\u0ba9\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0baf\\u0ba9\\u0bcd \\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd\",\n\"No color\": \"\\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd \\u0b87\\u0bb2\\u0bcd\\u0bb2\\u0bc8\",\n\"Remove color\": \"\\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd \\u0b85\\u0b95\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Table of Contents\": \"\\u0baa\\u0bca\\u0bb0\\u0bc1\\u0bb3\\u0b9f\\u0b95\\u0bcd\\u0b95\\u0bae\\u0bcd\",\n\"Show blocks\": \"\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0ba4\\u0bbf\\u0b95\\u0bb3\\u0bc8 \\u0b95\\u0bbe\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Show invisible characters\": \"\\u0b95\\u0ba3\\u0bcd\\u0ba3\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0ba4\\u0bcd \\u0ba4\\u0bc6\\u0bb0\\u0bbf\\u0baf\\u0bbe\\u0ba4 \\u0b89\\u0bb0\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bc8 \\u0b95\\u0bbe\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Word count\": \"\\u0b9a\\u0bca\\u0bb2\\u0bcd \\u0b8e\\u0ba3\\u0bcd\\u0ba3\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc8\",\n\"Count\": \"\\u0b8e\\u0ba3\\u0bcd\\u0ba3\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc8\",\n\"Document\": \"\\u0b86\\u0bb5\\u0ba3\\u0bae\\u0bcd\",\n\"Selection\": \"\\u0ba4\\u0bc7\\u0bb0\\u0bcd\\u0bb5\\u0bc1\",\n\"Words\": \"\\u0b9a\\u0bca\\u0bb1\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Words: {0}\": \"\\u0b9a\\u0bca\\u0bb1\\u0bcd\\u0b95\\u0bb3\\u0bcd: {0}\",\n\"{0} words\": \"{0} \\u0b9a\\u0bca\\u0bb1\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"File\": \"\\u0b95\\u0bcb\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Edit\": \"\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Insert\": \"\\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"View\": \"\\u0ba8\\u0bcb\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0b95\",\n\"Format\": \"\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Table\": \"\\u0b85\\u0b9f\\u0bcd\\u0b9f\\u0bb5\\u0ba3\\u0bc8\",\n\"Tools\": \"\\u0b95\\u0bb0\\u0bc1\\u0bb5\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"Powered by {0}\": \"\\u0bb5\\u0bb2\\u0bc1\\u0bb5\\u0bb3\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0ba4\\u0bc1 {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u0b89\\u0baf\\u0bb0\\u0bcd \\u0b89\\u0bb0\\u0bc8 \\u0baa\\u0b95\\u0bc1\\u0ba4\\u0bbf. \\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc1 ALT-F9 , \\u0b95\\u0bb0\\u0bc1\\u0bb5\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bc8\\u0b95\\u0bcd\\u0b95\\u0bc1 ALT-F10 , \\u0b89\\u0ba4\\u0bb5\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc1 ALT-0\",\n\"Image title\": \"\\u0baa\\u0b9f\\u0ba4\\u0bcd \\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Border width\": \"\\u0b95\\u0bb0\\u0bc8 \\u0b85\\u0b95\\u0bb2\\u0bae\\u0bcd\",\n\"Border style\": \"\\u0b95\\u0bb0\\u0bc8 \\u0baa\\u0bbe\\u0ba3\\u0bbf\",\n\"Error\": \"\\u0baa\\u0bbf\\u0bb4\\u0bc8\",\n\"Warn\": \"\\u0b8e\\u0b9a\\u0bcd\\u0b9a\\u0bb0\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Valid\": \"\\u0b9a\\u0bc6\\u0bb2\\u0bcd\\u0bb2\\u0ba4\\u0bcd\\u0ba4\\u0b95\\u0bcd\\u0b95\\u0ba4\\u0bc1\",\n\"To open the popup, press Shift+Enter\": \"\\u0bae\\u0bc7\\u0bb2\\u0bcd\\u0ba4\\u0bcb\\u0ba9\\u0bcd\\u0bb1\\u0bc1-\\u0bb5\\u0bc8\\u0ba4\\u0bcd \\u0ba4\\u0bbf\\u0bb1\\u0b95\\u0bcd\\u0b95 Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u0b89\\u0baf\\u0bb0\\u0bcd \\u0b89\\u0bb0\\u0bc8 \\u0baa\\u0b95\\u0bc1\\u0ba4\\u0bbf. \\u0b89\\u0ba4\\u0bb5\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc1 ALT-0\",\n\"System Font\": \"\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0ba4\\u0bbf \\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bb0\\u0bc1\",\n\"Failed to upload image: {0}\": \"\\u0baa\\u0b9f\\u0bae\\u0bcd \\u0baa\\u0ba4\\u0bbf\\u0bb5\\u0bc7\\u0bb1\\u0bcd\\u0bb1\\u0bb2\\u0bcd \\u0ba4\\u0bcb\\u0bb2\\u0bcd\\u0bb5\\u0bbf\\u0baf\\u0bc1\\u0bb1\\u0bcd\\u0bb1\\u0ba4\\u0bc1: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf \\u0b8f\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0ba4\\u0bb2\\u0bcd \\u0ba4\\u0bcb\\u0bb2\\u0bcd\\u0bb5\\u0bbf\\u0baf\\u0bc1\\u0bb1\\u0bcd\\u0bb1\\u0ba4\\u0bc1: {0} - {1} \\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf\\u0baf\\u0bbf\\u0bb2\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bc1\",\n\"Failed to load plugin url: {0}\": \"\\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf \\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf \\u0b8f\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0ba4\\u0bb2\\u0bcd \\u0ba4\\u0bcb\\u0bb2\\u0bcd\\u0bb5\\u0bbf\\u0baf\\u0bc1\\u0bb1\\u0bcd\\u0bb1\\u0ba4\\u0bc1: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf \\u0ba4\\u0bc1\\u0bb5\\u0b99\\u0bcd\\u0b95\\u0bc1\\u0ba4\\u0bb2\\u0bcd \\u0ba4\\u0bcb\\u0bb2\\u0bcd\\u0bb5\\u0bbf\\u0baf\\u0bc1\\u0bb1\\u0bcd\\u0bb1\\u0ba4\\u0bc1: {0}\",\n\"example\": \"\\u0b89\\u0ba4\\u0bbe\\u0bb0\\u0ba3\\u0bae\\u0bcd\",\n\"Search\": \"\\u0ba4\\u0bc7\\u0b9f\\u0bc1\\u0b95\",\n\"All\": \"\\u0b85\\u0ba9\\u0bc8\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bae\\u0bcd\",\n\"Currency\": \"\\u0b9a\\u0bc6\\u0bb2\\u0bbe\\u0bb5\\u0ba3\\u0bbf (Currency)\",\n\"Text\": \"\\u0b89\\u0bb0\\u0bc8\",\n\"Quotations\": \"\\u0bae\\u0bc7\\u0bb1\\u0bcd\\u0b95\\u0bc7\\u0bbe\\u0bb3\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Mathematical\": \"\\u0b95\\u0ba3\\u0b95\\u0bcd\\u0b95\\u0bbf\\u0baf\\u0bb2\\u0bcd\",\n\"Extended Latin\": \"\\u0ba8\\u0bc0\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f \\u0b87\\u0bb2\\u0ba4\\u0bcd\\u0ba4\\u0bc0\\u0ba9\\u0bcd\",\n\"Symbols\": \"\\u0b87\\u0b9f\\u0bc1\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"Arrows\": \"\\u0b85\\u0bae\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"User Defined\": \"\\u0baa\\u0baf\\u0ba9\\u0bb0\\u0bcd \\u0bb5\\u0bb0\\u0bc8\\u0baf\\u0bb1\\u0bc1\\u0ba4\\u0bcd\\u0ba4\",\n\"dollar sign\": \"dollar \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"currency sign\": \"\\u0b9a\\u0bc6\\u0bb2\\u0bbe\\u0bb5\\u0ba3\\u0bbf\\u0b95\\u0bcd \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"euro-currency sign\": \"euro-currency \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"colon sign\": \"colon \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"cruzeiro sign\": \"cruzeiro \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"french franc sign\": \"french franc \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"lira sign\": \"lira \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"mill sign\": \"mill \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"naira sign\": \"naira \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"peseta sign\": \"peseta \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"rupee sign\": \"rupee \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"won sign\": \"won \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"new sheqel sign\": \"new sheqel \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"dong sign\": \"dong \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"kip sign\": \"kip \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"tugrik sign\": \"tugrik \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"drachma sign\": \"drachma \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"german penny symbol\": \"german penny \\u0b87\\u0b9f\\u0bc1\\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"peso sign\": \"peso \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"guarani sign\": \"guarani \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"austral sign\": \"austral \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"hryvnia sign\": \"hryvnia \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"cedi sign\": \"cedi \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"livre tournois sign\": \"livre tournois \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"spesmilo sign\": \"spesmilo \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"tenge sign\": \"tenge \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"indian rupee sign\": \"indian rupee \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"turkish lira sign\": \"turkish lira \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"nordic mark sign\": \"nordic mark \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"manat sign\": \"manat \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"ruble sign\": \"ruble \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"yen character\": \"yen \\u0b89\\u0bb0\\u0bc1\",\n\"yuan character\": \"yuan \\u0b89\\u0bb0\\u0bc1\",\n\"yuan character, in hong kong and taiwan\": \"yuan \\u0b89\\u0bb0\\u0bc1, \\u0bb9\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bbe\\u0b99\\u0bcd \\u0bae\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0ba4\\u0bbe\\u0baf\\u0bcd\\u0bb5\\u0bbe\\u0ba9\\u0bcd \\u0b87\\u0bb2\\u0bcd\",\n\"yen\\/yuan character variant one\": \"yen\\/yuan \\u0b89\\u0bb0\\u0bc1 \\u0bae\\u0bbe\\u0bb1\\u0bc1\\u0baa\\u0bbe\\u0b9f\\u0bc1\",\n\"Loading emoticons...\": \"\\u0b89\\u0ba3\\u0bb0\\u0bcd\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bbf\\u0bae\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b8f\\u0bb1\\u0bcd\\u0bb1\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0b95\\u0bbf\\u0ba9\\u0bcd\\u0bb1\\u0ba9...\",\n\"Could not load emoticons\": \"\\u0b89\\u0ba3\\u0bb0\\u0bcd\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bbf\\u0bae\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bc8 \\u0b8f\\u0bb1\\u0bcd\\u0bb1 \\u0bae\\u0bc1\\u0b9f\\u0bbf\\u0baf\\u0bb5\\u0bbf\\u0bb2\\u0bcd\\u0bb2\\u0bc8\",\n\"People\": \"\\u0bae\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Animals and Nature\": \"\\u0bae\\u0bbf\\u0bb0\\u0bc1\\u0b95\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0bae\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0b87\\u0baf\\u0bb1\\u0bcd\\u0b95\\u0bc8\",\n\"Food and Drink\": \"\\u0b89\\u0ba3\\u0bb5\\u0bc1 \\u0bae\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0baa\\u0bbe\\u0ba9\\u0bae\\u0bcd\",\n\"Activity\": \"\\u0b9a\\u0bc6\\u0baf\\u0bb1\\u0bcd\\u0baa\\u0bbe\\u0b9f\\u0bc1\",\n\"Travel and Places\": \"\\u0baa\\u0baf\\u0ba3\\u0bae\\u0bcd \\u0bae\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0b87\\u0b9f\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Objects\": \"\\u0baa\\u0bca\\u0bb0\\u0bc1\\u0b9f\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Flags\": \"\\u0b95\\u0bca\\u0b9f\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"Characters\": \"\\u0b89\\u0bb0\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Characters (no spaces)\": \"\\u0b89\\u0bb0\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd (\\u0b87\\u0b9f\\u0bc8\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0b95\\u0bb3\\u0bcd \\u0b87\\u0bb2\\u0bcd\\u0bb2\\u0bc8)\",\n\"{0} characters\": \"{0} \\u0b89\\u0bb0\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Error: Form submit field collision.\": \"\\u0baa\\u0bbf\\u0bb4\\u0bc8: \\u0baa\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bcd \\u0b9a\\u0bae\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bbf\\u0ba4\\u0bcd\\u0ba4\\u0bb2\\u0bcd \\u0baa\\u0bc1\\u0bb2\\u0bae\\u0bcd \\u0bae\\u0bcb\\u0ba4\\u0bb2\\u0bcd.\",\n\"Error: No form element found.\": \"\\u0baa\\u0bbf\\u0bb4\\u0bc8: \\u0baa\\u0bc1\\u0bb2\\u0bae\\u0bcd \\u0bae\\u0bc2\\u0bb2\\u0b95\\u0bae\\u0bcd \\u0b8e\\u0ba4\\u0bc1\\u0bb5\\u0bc1\\u0bae\\u0bcd \\u0b95\\u0bbe\\u0ba3\\u0bb5\\u0bbf\\u0bb2\\u0bcd\\u0bb2\\u0bc8.\",\n\"Update\": \"\\u0baa\\u0bc1\\u0ba4\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Color swatch\": \"\\u0ba8\\u0bbf\\u0bb1\\u0b9a\\u0bcd \\u0b9a\\u0bcb\\u0ba4\\u0ba9\\u0bc8\\u0b95\\u0bcd\\u0b95\\u0bb2\\u0bb5\\u0bc8\",\n\"Turquoise\": \"\\u0ba8\\u0bc0\\u0bb2\\u0baa\\u0bcd\\u0baa\\u0b9a\\u0bcd\\u0b9a\\u0bc8\",\n\"Green\": \"\\u0baa\\u0b9a\\u0bcd\\u0b9a\\u0bc8\",\n\"Blue\": \"\\u0ba8\\u0bc0\\u0bb2\\u0bae\\u0bcd\",\n\"Purple\": \"\\u0b8a\\u0ba4\\u0bbe\",\n\"Navy Blue\": \"\\u0b95\\u0b9f\\u0bb1\\u0bcd\\u0baa\\u0b9f\\u0bc8 \\u0ba8\\u0bc0\\u0bb2\\u0bae\\u0bcd\",\n\"Dark Turquoise\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0ba8\\u0bc0\\u0bb2\\u0baa\\u0bcd\\u0baa\\u0b9a\\u0bcd\\u0b9a\\u0bc8\",\n\"Dark Green\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0baa\\u0b9a\\u0bcd\\u0b9a\\u0bc8\",\n\"Medium Blue\": \"\\u0ba8\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bb0 \\u0ba8\\u0bc0\\u0bb2\\u0bae\\u0bcd\",\n\"Medium Purple\": \"\\u0ba8\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bb0 \\u0b8a\\u0ba4\\u0bbe\",\n\"Midnight Blue\": \"\\u0ba8\\u0bb3\\u0bcd\\u0bb3\\u0bbf\\u0bb0\\u0bb5\\u0bc1 \\u0ba8\\u0bc0\\u0bb2\\u0bae\\u0bcd\",\n\"Yellow\": \"\\u0bae\\u0b9e\\u0bcd\\u0b9a\\u0bb3\\u0bcd\",\n\"Orange\": \"\\u0b9a\\u0bbf\\u0bb5\\u0ba8\\u0bcd\\u0ba4 \\u0bae\\u0b9e\\u0bcd\\u0b9a\\u0bb3\\u0bcd\",\n\"Red\": \"\\u0b9a\\u0bbf\\u0bb5\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Light Gray\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0bb0\\u0bcd \\u0b9a\\u0bbe\\u0bae\\u0bcd\\u0baa\\u0bb2\\u0bcd\",\n\"Gray\": \"\\u0b9a\\u0bbe\\u0bae\\u0bcd\\u0baa\\u0bb2\\u0bcd\",\n\"Dark Yellow\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0bae\\u0b9e\\u0bcd\\u0b9a\\u0bb3\\u0bcd\",\n\"Dark Orange\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0b9a\\u0bbf\\u0bb5\\u0ba8\\u0bcd\\u0ba4 \\u0bae\\u0b9e\\u0bcd\\u0b9a\\u0bb3\\u0bcd\",\n\"Dark Red\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0b9a\\u0bbf\\u0bb5\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Medium Gray\": \"\\u0ba8\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bb0 \\u0b9a\\u0bbe\\u0bae\\u0bcd\\u0baa\\u0bb2\\u0bcd\",\n\"Dark Gray\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0b9a\\u0bbe\\u0bae\\u0bcd\\u0baa\\u0bb2\\u0bcd\",\n\"Light Green\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0bb0\\u0bcd \\u0baa\\u0b9a\\u0bcd\\u0b9a\\u0bc8\",\n\"Light Yellow\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0bb0\\u0bcd \\u0bae\\u0b9e\\u0bcd\\u0b9a\\u0bb3\\u0bcd\",\n\"Light Red\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0bb0\\u0bcd\\u00a0\\u0b9a\\u0bbf\\u0bb5\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Light Purple\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0bb0\\u0bcd \\u0b8a\\u0ba4\\u0bbe\",\n\"Light Blue\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0bb0\\u0bcd \\u0ba8\\u0bc0\\u0bb2\\u0bae\\u0bcd\",\n\"Dark Purple\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0b8a\\u0ba4\\u0bbe\",\n\"Dark Blue\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0ba8\\u0bc0\\u0bb2\\u0bae\\u0bcd\",\n\"Black\": \"\\u0b95\\u0bb0\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"White\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bcd\\u0bb3\\u0bc8\",\n\"Switch to or from fullscreen mode\": \"\\u0bae\\u0bc1\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0bb0\\u0bc8 \\u0bae\\u0bc1\\u0bb1\\u0bc8\\u0bae\\u0bc8\\u0b95\\u0bcd\\u0b95\\u0bc1\\/\\u0bae\\u0bc1\\u0bb1\\u0bc8\\u0bae\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bc1 \\u0bae\\u0bbe\\u0bb1\\u0bc1\\u0b95\",\n\"Open help dialog\": \"\\u0b89\\u0ba4\\u0bb5\\u0bbf \\u0b89\\u0bb0\\u0bc8\\u0baf\\u0bbe\\u0b9f\\u0bb2\\u0bcd \\u0ba4\\u0bbf\\u0bb1\\u0b95\\u0bcd\\u0b95\",\n\"history\": \"\\u0bb5\\u0bb0\\u0bb2\\u0bbe\\u0bb1\\u0bc1\",\n\"styles\": \"\\u0baa\\u0bbe\\u0ba3\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"formatting\": \"\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0ba4\\u0bcd\\u0ba4\\u0bb2\\u0bcd\",\n\"alignment\": \"\\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\\u0bb5\\u0bc1\",\n\"indentation\": \"\\u0b89\\u0bb3\\u0bcd\\u0ba4\\u0bb3\\u0bcd\\u0bb3\\u0bc1\\u0ba4\\u0bb2\\u0bcd\",\n\"permanent pen\": \"\\u0ba8\\u0bbf\\u0bb0\\u0ba8\\u0bcd\\u0ba4\\u0bb0\\u0baa\\u0bcd \\u0baa\\u0bc7\\u0ba9\\u0bbe\",\n\"comments\": \"\\u0b95\\u0bb0\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Format Painter\": \"\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0baa\\u0bc2\\u0b9a\\u0bbe\\u0bb3\\u0ba9\\u0bcd\",\n\"Insert\\/edit iframe\": \"iframe \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Capitalization\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0bae\\u0bcd\",\n\"lowercase\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bc6\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\",\n\"UPPERCASE\": \"\\u0baa\\u0bc7\\u0bb0\\u0bc6\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\",\n\"Title Case\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bcd\",\n\"Permanent Pen Properties\": \"\\u0ba8\\u0bbf\\u0bb0\\u0ba8\\u0bcd\\u0ba4\\u0bb0\\u0baa\\u0bcd \\u0baa\\u0bc7\\u0ba9\\u0bbe \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Permanent pen properties...\": \"\\u0ba8\\u0bbf\\u0bb0\\u0ba8\\u0bcd\\u0ba4\\u0bb0\\u0baa\\u0bcd \\u0baa\\u0bc7\\u0ba9\\u0bbe \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd...\",\n\"Font\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bb0\\u0bc1\",\n\"Size\": \"\\u0b85\\u0bb3\\u0bb5\\u0bc1\",\n\"More...\": \"\\u0bae\\u0bc7\\u0bb2\\u0bc1\\u0bae\\u0bcd...\",\n\"Spellcheck Language\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bbf\\u0bb4\\u0bc8 \\u0b9a\\u0bb0\\u0bbf\\u0baa\\u0bbe\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0bae\\u0bca\\u0bb4\\u0bbf\",\n\"Select...\": \"\\u0ba4\\u0bc7\\u0bb0\\u0bcd\\u0bb5\\u0bc1 \\u0b9a\\u0bc6\\u0baf\\u0bcd\\u0b95...\",\n\"Preferences\": \"\\u0bb5\\u0bbf\\u0bb0\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Yes\": \"\\u0b86\\u0bae\\u0bcd\",\n\"No\": \"\\u0b87\\u0bb2\\u0bcd\\u0bb2\\u0bc8\",\n\"Keyboard Navigation\": \"\\u0bb5\\u0bbf\\u0b9a\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bb2\\u0b95\\u0bc8 \\u0bb5\\u0bb4\\u0bbf\\u0b9a\\u0bcd\\u0b9a\\u0bc6\\u0bb2\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bb2\\u0bcd\",\n\"Version\": \"\\u0baa\\u0ba4\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Anchor\": \"\\u0ba8\\u0b99\\u0bcd\\u0b95\\u0bc2\\u0bb0\\u0bae\\u0bcd\",\n\"Special character\": \"\\u0b9a\\u0bbf\\u0bb1\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bb0\\u0bc1\",\n\"Code sample\": \"\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bc1 \\u0bae\\u0bbe\\u0ba4\\u0bbf\\u0bb0\\u0bbf\",\n\"Color\": \"\\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd\",\n\"Emoticons\": \"\\u0b89\\u0ba3\\u0bb0\\u0bcd\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bbf\\u0bae\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Document properties\": \"\\u0b86\\u0bb5\\u0ba3\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0ba9\\u0bcd \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Image\": \"\\u0baa\\u0b9f\\u0bae\\u0bcd\",\n\"Insert link\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Target\": \"\\u0b87\\u0bb2\\u0b95\\u0bcd\\u0b95\\u0bc1\",\n\"Link\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Poster\": \"\\u0b9a\\u0bc1\\u0bb5\\u0bb0\\u0bca\\u0b9f\\u0bcd\\u0b9f\\u0bbf\",\n\"Media\": \"\\u0b8a\\u0b9f\\u0b95\\u0bae\\u0bcd\",\n\"Print\": \"\\u0b85\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0b9f\\u0bc1\\u0b95\",\n\"Prev\": \"\\u0bae\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bc8\\u0baf\",\n\"Find and replace\": \"\\u0b95\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bbf\\u0b9f\\u0bbf\\u0ba4\\u0bcd\\u0ba4\\u0bc1 \\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Whole words\": \"\\u0bae\\u0bc1\\u0bb4\\u0bc1 \\u0b9a\\u0bca\\u0bb1\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Spellcheck\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bbf\\u0bb4\\u0bc8\\u0baf\\u0bc8 \\u0b9a\\u0bb0\\u0bbf\\u0baa\\u0bbe\\u0bb0\\u0bcd\\u0b95\\u0bcd\\u0b95\",\n\"Caption\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Insert template\": \"\\u0bb5\\u0bbe\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0bb0\\u0bc1 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/ta_IN.js",
    "content": "tinymce.addI18n('ta_IN',{\n\"Redo\": \"\\u0bae\\u0bc0\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0baf\\u0bcd\\u0b95\",\n\"Undo\": \"\\u0b9a\\u0bc6\\u0baf\\u0bb2\\u0bcd\\u0ba4\\u0bb5\\u0bbf\\u0bb0\\u0bcd\\u0b95\\u0bcd\\u0b95\",\n\"Cut\": \"\\u0bb5\\u0bc6\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Copy\": \"\\u0ba8\\u0b95\\u0bb2\\u0bc6\\u0b9f\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Paste\": \"\\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Select all\": \"\\u0b85\\u0ba9\\u0bc8\\u0ba4\\u0bcd\\u0ba4\\u0bc8\\u0baf\\u0bc1\\u0bae\\u0bcd \\u0ba4\\u0bc7\\u0bb0\\u0bcd\\u0bb5\\u0bc1 \\u0b9a\\u0bc6\\u0baf\\u0bcd\\u0b95\",\n\"New document\": \"\\u0baa\\u0bc1\\u0ba4\\u0bbf\\u0baf \\u0b86\\u0bb5\\u0ba3\\u0bae\\u0bcd\",\n\"Ok\": \"\\u0b9a\\u0bb0\\u0bbf\",\n\"Cancel\": \"\\u0bb0\\u0ba4\\u0bcd\\u0ba4\\u0bc1 \\u0b9a\\u0bc6\\u0baf\\u0bcd\\u0b95\",\n\"Visual aids\": \"\\u0b95\\u0bbe\\u0b9f\\u0bcd\\u0b9a\\u0bbf\\u0ba4\\u0bcd \\u0ba4\\u0bc1\\u0ba3\\u0bc8\\u0baf\\u0ba9\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Bold\": \"\\u0ba4\\u0b9f\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Italic\": \"\\u0b9a\\u0bbe\\u0baf\\u0bcd\\u0bb5\\u0bc1\",\n\"Underline\": \"\\u0b85\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bcb\\u0b9f\\u0bc1\",\n\"Strikethrough\": \"\\u0ba8\\u0b9f\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bcb\\u0b9f\\u0bc1\",\n\"Superscript\": \"\\u0bae\\u0bc7\\u0bb2\\u0bcd\\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\",\n\"Subscript\": \"\\u0b95\\u0bc0\\u0bb4\\u0bcd\\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\",\n\"Clear formatting\": \"\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b85\\u0bb4\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Align left\": \"\\u0b87\\u0b9f\\u0ba4\\u0bc1 \\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\",\n\"Align center\": \"\\u0bae\\u0bc8\\u0baf \\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\",\n\"Align right\": \"\\u0bb5\\u0bb2\\u0ba4\\u0bc1 \\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\",\n\"Justify\": \"\\u0ba8\\u0bc7\\u0bb0\\u0bcd\\u0ba4\\u0bcd\\u0ba4\\u0bbf \\u0b9a\\u0bc6\\u0baf\\u0bcd\\u0b95\",\n\"Bullet list\": \"\\u0baa\\u0bca\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0b9f\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f  \\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0baf\\u0bb2\\u0bcd\",\n\"Numbered list\": \"\\u0b8e\\u0ba3\\u0bcd\\u0ba3\\u0bbf\\u0b9f\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f \\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0baf\\u0bb2\\u0bcd\",\n\"Decrease indent\": \"\\u0b89\\u0bb3\\u0bcd\\u0ba4\\u0bb3\\u0bcd\\u0bb3\\u0bc1\\u0ba4\\u0bb2\\u0bc8 \\u0b95\\u0bc1\\u0bb1\\u0bc8\\u0b95\\u0bcd\\u0b95\",\n\"Increase indent\": \"\\u0b89\\u0bb3\\u0bcd\\u0ba4\\u0bb3\\u0bcd\\u0bb3\\u0bc1\\u0ba4\\u0bb2\\u0bc8 \\u0b85\\u0ba4\\u0bbf\\u0b95\\u0bb0\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Close\": \"\\u0bae\\u0bc2\\u0b9f\\u0bc1\\u0b95\",\n\"Formats\": \"\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u0ba8\\u0b95\\u0bb2\\u0b95\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0ba8\\u0bc7\\u0bb0\\u0b9f\\u0bbf \\u0b85\\u0ba3\\u0bc1\\u0b95\\u0bb2\\u0bc8 \\u0ba4\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b89\\u0bb2\\u0bbe\\u0bb5\\u0bbf \\u0b86\\u0ba4\\u0bb0\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bb5\\u0bbf\\u0bb2\\u0bcd\\u0bb2\\u0bc8. \\u0b86\\u0b95\\u0bb5\\u0bc7 \\u0bb5\\u0bbf\\u0b9a\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bb2\\u0b95\\u0bc8 \\u0b95\\u0bc1\\u0bb1\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0bb5\\u0bb4\\u0bbf\\u0b95\\u0bb3\\u0bbe\\u0ba9 Ctrl+X\\/C\\/V \\u0b87\\u0bb5\\u0bb1\\u0bcd\\u0bb1\\u0bc8 \\u0ba4\\u0baf\\u0bb5\\u0bc1 \\u0b9a\\u0bc6\\u0baf\\u0bcd\\u0ba4\\u0bc1 \\u0baa\\u0baf\\u0ba9\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95.\",\n\"Headers\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Header 1\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 1\",\n\"Header 2\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 2\",\n\"Header 3\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 3\",\n\"Header 4\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 4\",\n\"Header 5\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 5\",\n\"Header 6\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 6\",\n\"Headings\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Heading 1\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 1\",\n\"Heading 2\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 2\",\n\"Heading 3\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 3\",\n\"Heading 4\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 4\",\n\"Heading 5\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 5\",\n\"Heading 6\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 6\",\n\"Preformatted\": \"\\u0bae\\u0bc1\\u0ba9\\u0bcd\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0ba4\\u0bc1\",\n\"Div\": \"\\u0baa\\u0bbf\\u0bb0\\u0bbf\\u0bb5\\u0bc1 (Div)\",\n\"Pre\": \"\\u0bae\\u0bc1\\u0ba9\\u0bcd \\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0ba4\\u0bc1 (Pre)\",\n\"Code\": \"\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bc1\",\n\"Paragraph\": \"\\u0baa\\u0ba4\\u0bcd\\u0ba4\\u0bbf\",\n\"Blockquote\": \"\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0ba4\\u0bbf \\u0bae\\u0bc7\\u0bb1\\u0bcd\\u0b95\\u0bcb\\u0bb3\\u0bcd\",\n\"Inline\": \"\\u0b89\\u0bb3\\u0bcd\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8\",\n\"Blocks\": \"\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0ba4\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u0b87\\u0baf\\u0bb2\\u0bcd\\u0baa\\u0bc1 \\u0b89\\u0bb0\\u0bc8 \\u0bae\\u0bc1\\u0bb1\\u0bc8\\u0bae\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0ba4\\u0bb1\\u0bcd\\u0baa\\u0bcb\\u0ba4\\u0bc1 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0ba4\\u0bb2\\u0bcd \\u0b89\\u0bb3\\u0bcd\\u0bb3\\u0ba4\\u0bc1. \\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b87\\u0ba8\\u0bcd\\u0ba4 \\u0bb5\\u0bbf\\u0bb0\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bc8 \\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0bb5\\u0bb0\\u0bc8 \\u0b89\\u0bb3\\u0bcd\\u0bb3\\u0b9f\\u0b95\\u0bcd\\u0b95\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b87\\u0baf\\u0bb2\\u0bcd\\u0baa\\u0bc1 \\u0b89\\u0bb0\\u0bc8\\u0baf\\u0bbe\\u0b95 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0bae\\u0bcd.\",\n\"Fonts\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bb0\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Font Sizes\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bb0\\u0bc1 \\u0b85\\u0bb3\\u0bb5\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Class\": \"Class\",\n\"Browse for an image\": \"\\u0b92\\u0bb0\\u0bc1 \\u0baa\\u0b9f\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bc1 \\u0b89\\u0bb2\\u0bbe\\u0bb5\\u0bc1\\u0b95\",\n\"OR\": \"\\u0b85\\u0bb2\\u0bcd\\u0bb2\\u0ba4\\u0bc1\",\n\"Drop an image here\": \"\\u0b92\\u0bb0\\u0bc1 \\u0baa\\u0b9f\\u0ba4\\u0bcd\\u0ba4\\u0bc8 \\u0b87\\u0b99\\u0bcd\\u0b95\\u0bc1 \\u0b87\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0baa\\u0bcd \\u0baa\\u0bcb\\u0b9f\\u0bb5\\u0bc1\\u0bae\\u0bcd\",\n\"Upload\": \"\\u0baa\\u0ba4\\u0bbf\\u0bb5\\u0bc7\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Block\": \"\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0ba4\\u0bbf\",\n\"Align\": \"\\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\",\n\"Default\": \"\\u0b89\\u0bb3\\u0bcd\\u0bb3\\u0bbf\\u0bb0\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Circle\": \"\\u0bb5\\u0b9f\\u0bcd\\u0b9f\\u0bae\\u0bcd\",\n\"Disc\": \"\\u0bb5\\u0b9f\\u0bcd\\u0b9f\\u0bc1\",\n\"Square\": \"\\u0b9a\\u0ba4\\u0bc1\\u0bb0\\u0bae\\u0bcd\",\n\"Lower Alpha\": \"\\u0b95\\u0bc0\\u0bb4\\u0bcd \\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\",\n\"Lower Greek\": \"\\u0b95\\u0bc0\\u0bb4\\u0bcd \\u0b95\\u0bbf\\u0bb0\\u0bc7\\u0b95\\u0bcd\\u0b95\\u0bae\\u0bcd\",\n\"Lower Roman\": \"\\u0b95\\u0bc0\\u0bb4\\u0bcd \\u0bb0\\u0bcb\\u0bae\\u0bbe\\u0ba9\\u0bbf\\u0baf\\u0bae\\u0bcd\",\n\"Upper Alpha\": \"\\u0bae\\u0bc7\\u0bb2\\u0bcd \\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\",\n\"Upper Roman\": \"\\u0bae\\u0bc7\\u0bb2\\u0bcd \\u0bb0\\u0bcb\\u0bae\\u0bbe\\u0ba9\\u0bbf\\u0baf\\u0bae\\u0bcd\",\n\"Anchor...\": \"\\u0ba8\\u0b99\\u0bcd\\u0b95\\u0bc2\\u0bb0\\u0bae\\u0bcd...\",\n\"Name\": \"\\u0baa\\u0bc6\\u0baf\\u0bb0\\u0bcd\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id \\u0b86\\u0ba9\\u0ba4\\u0bc1 \\u0b92\\u0bb0\\u0bc1 \\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0bb2\\u0bcd \\u0ba4\\u0bca\\u0b9f\\u0b99\\u0bcd\\u0b95 \\u0bb5\\u0bc7\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bcd; \\u0b87\\u0ba4\\u0ba9\\u0bc8\\u0ba4\\u0bcd \\u0ba4\\u0bca\\u0b9f\\u0bb0\\u0bcd\\u0ba8\\u0bcd\\u0ba4\\u0bc1 \\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd, \\u0b8e\\u0ba3\\u0bcd\\u0b95\\u0bb3\\u0bcd, \\u0b87\\u0b9f\\u0bc8\\u0b95\\u0bcd\\u0b95\\u0bc7\\u0bbe\\u0b9f\\u0bc1\\u0b95\\u0bb3\\u0bcd (-), \\u0baa\\u0bc1\\u0bb3\\u0bcd\\u0bb3\\u0bbf\\u0b95\\u0bb3\\u0bcd (.), \\u0bae\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bbe\\u0bb1\\u0bcd\\u0baa\\u0bc1\\u0bb3\\u0bcd\\u0bb3\\u0bbf\\u0b95\\u0bb3\\u0bcd (:) \\u0bae\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0b85\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc7\\u0bbe\\u0b9f\\u0bc1\\u0b95\\u0bb3\\u0bcd (_) \\u0bae\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bc7 \\u0b87\\u0bb0\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bb2\\u0bcd \\u0bb5\\u0bc7\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bcd.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u0b9a\\u0bc7\\u0bae\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bbe\\u0ba4 \\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b89\\u0bb3\\u0bcd\\u0bb3\\u0ba9; \\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b89\\u0bb1\\u0bc1\\u0ba4\\u0bbf\\u0baf\\u0bbe\\u0b95 \\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0baf\\u0bc7\\u0bb1 \\u0bb5\\u0bbf\\u0bb0\\u0bc1\\u0bae\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bbf\\u0bb1\\u0bc0\\u0bb0\\u0bcd\\u0b95\\u0bbe\\u0bb3\\u0bbe?\",\n\"Restore last draft\": \"\\u0b95\\u0b9f\\u0ba8\\u0bcd\\u0ba4 \\u0bb5\\u0bb0\\u0bc8\\u0bb5\\u0bc8 \\u0bae\\u0bc0\\u0b9f\\u0bcd\\u0b9f\\u0bc6\\u0b9f\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Special character...\": \"\\u0b9a\\u0bbf\\u0bb1\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b89\\u0bb0\\u0bc1...\",\n\"Source code\": \"\\u0bae\\u0bc2\\u0bb2 \\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bc1\",\n\"Insert\\/Edit code sample\": \"\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bc1 \\u0bae\\u0bbe\\u0ba4\\u0bbf\\u0bb0\\u0bbf \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Language\": \"\\u0bae\\u0bca\\u0bb4\\u0bbf\",\n\"Code sample...\": \"\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bc1 \\u0bae\\u0bbe\\u0ba4\\u0bbf\\u0bb0\\u0bbf...\",\n\"Color Picker\": \"\\u0ba8\\u0bbf\\u0bb1\\u0ba4\\u0bcd \\u0ba4\\u0bc6\\u0bb0\\u0bbf\\u0bb5\\u0bc1\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"\\u0b87\\u0b9f\\u0bae\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bc1 \\u0bb5\\u0bb2\\u0bae\\u0bcd\",\n\"Right to left\": \"\\u0bb5\\u0bb2\\u0bae\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bc1 \\u0b87\\u0b9f\\u0bae\\u0bcd\",\n\"Emoticons...\": \"\\u0b89\\u0ba3\\u0bb0\\u0bcd\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bbf\\u0bae\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Metadata and Document Properties\": \"\\u0bae\\u0bc0\\u0ba4\\u0bcd\\u0ba4\\u0bb0\\u0bb5\\u0bc1 \\u0bae\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0b86\\u0bb5\\u0ba3\\u0baa\\u0bcd \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Title\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Keywords\": \"\\u0bae\\u0bc1\\u0ba4\\u0ba9\\u0bcd\\u0bae\\u0bc8\\u0b9a\\u0bcd\\u0b9a\\u0bca\\u0bb1\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Description\": \"\\u0bb5\\u0bbf\\u0bb5\\u0bb0\\u0bae\\u0bcd\",\n\"Robots\": \"\\u0baa\\u0bca\\u0bb1\\u0bbf\\u0baf\\u0ba9\\u0bcd\\u0b95\\u0bb3\\u0bcd (Robots)\",\n\"Author\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbe\\u0bb3\\u0bb0\\u0bcd\",\n\"Encoding\": \"\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0bae\\u0bcd\",\n\"Fullscreen\": \"\\u0bae\\u0bc1\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0bb0\\u0bc8\",\n\"Action\": \"\\u0b9a\\u0bc6\\u0baf\\u0bb2\\u0bcd\",\n\"Shortcut\": \"\\u0b95\\u0bc1\\u0bb1\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0bb5\\u0bb4\\u0bbf\",\n\"Help\": \"\\u0b89\\u0ba4\\u0bb5\\u0bbf\",\n\"Address\": \"\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf\",\n\"Focus to menubar\": \"\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b95\\u0bb5\\u0ba9\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0bb2\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\",\n\"Focus to toolbar\": \"\\u0b95\\u0bb0\\u0bc1\\u0bb5\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b95\\u0bb5\\u0ba9\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0bb2\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\",\n\"Focus to element path\": \"\\u0bae\\u0bc2\\u0bb2\\u0b95\\u0baa\\u0bcd \\u0baa\\u0bbe\\u0ba4\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b95\\u0bb5\\u0ba9\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0bb2\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\",\n\"Focus to contextual toolbar\": \"\\u0b9a\\u0bc2\\u0bb4\\u0bcd\\u0ba8\\u0bbf\\u0bb2\\u0bc8 \\u0b95\\u0bb0\\u0bc1\\u0bb5\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b95\\u0bb5\\u0ba9\\u0bae\\u0bcd \\u0b9a\\u0bc6\\u0bb2\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\",\n\"Insert link (if link plugin activated)\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95 (\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf \\u0b9a\\u0bc6\\u0baf\\u0bb2\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0baf\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bbe\\u0bb2\\u0bcd)\",\n\"Save (if save plugin activated)\": \"\\u0b9a\\u0bc7\\u0bae\\u0bbf\\u0b95\\u0bcd\\u0b95 (\\u0b9a\\u0bc7\\u0bae\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf \\u0b9a\\u0bc6\\u0baf\\u0bb2\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0baf\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bbe\\u0bb2\\u0bcd)\",\n\"Find (if searchreplace plugin activated)\": \"\\u0b95\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bbf\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95 (\\u0ba4\\u0bc7\\u0b9f\\u0bbf\\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bb2\\u0bcd \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf \\u0b9a\\u0bc6\\u0baf\\u0bb2\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0baf\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bbe\\u0bb2\\u0bcd)\",\n\"Plugins installed ({0}):\": \"\\u0ba8\\u0bbf\\u0bb1\\u0bc1\\u0bb5\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0bb3\\u0bcd\\u0bb3 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf\\u0b95\\u0bb3\\u0bcd ({0}):\",\n\"Premium plugins:\": \"\\u0b89\\u0baf\\u0bb0\\u0bcd\\u0bae\\u0ba4\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf\\u0b95\\u0bb3\\u0bcd:\",\n\"Learn more...\": \"\\u0bae\\u0bc7\\u0bb2\\u0bc1\\u0bae\\u0bcd \\u0b85\\u0bb1\\u0bbf\\u0b95...\",\n\"You are using {0}\": \"\\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0baa\\u0baf\\u0ba9\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bb5\\u0ba4\\u0bc1 {0}\",\n\"Plugins\": \"\\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"Handy Shortcuts\": \"\\u0b8e\\u0bb3\\u0bbf\\u0ba4\\u0bbf\\u0bb2\\u0bcd \\u0b95\\u0bc8\\u0baf\\u0bbe\\u0bb3\\u0b95\\u0bcd\\u0b95\\u0bc2\\u0b9f\\u0bbf\\u0baf \\u0b95\\u0bc1\\u0bb1\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0bb5\\u0bb4\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"Horizontal line\": \"\\u0b95\\u0bbf\\u0b9f\\u0bc8 \\u0b95\\u0bcb\\u0b9f\\u0bc1\",\n\"Insert\\/edit image\": \"\\u0baa\\u0b9f\\u0bae\\u0bcd \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Image description\": \"\\u0baa\\u0b9f \\u0bb5\\u0bbf\\u0bb5\\u0bb0\\u0bae\\u0bcd\",\n\"Source\": \"\\u0bae\\u0bc2\\u0bb2\\u0bae\\u0bcd\",\n\"Dimensions\": \"\\u0baa\\u0bb0\\u0bbf\\u0bae\\u0bbe\\u0ba3\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Constrain proportions\": \"\\u0bb5\\u0bbf\\u0b95\\u0bbf\\u0ba4\\u0bbe\\u0b9a\\u0bcd\\u0b9a\\u0bbe\\u0bb0\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0bb2\\u0bcd \\u0b95\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\",\n\"General\": \"\\u0baa\\u0bca\\u0ba4\\u0bc1\",\n\"Advanced\": \"\\u0bae\\u0bc7\\u0bae\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0ba4\\u0bc1\",\n\"Style\": \"\\u0baa\\u0bbe\\u0ba3\\u0bbf\",\n\"Vertical space\": \"\\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0ba4\\u0bb3 \\u0b87\\u0b9f\\u0bc8\\u0bb5\\u0bc6\\u0bb3\\u0bbf\",\n\"Horizontal space\": \"\\u0b95\\u0bbf\\u0b9f\\u0bc8\\u0bae\\u0b9f\\u0bcd\\u0b9f \\u0b87\\u0b9f\\u0bc8\\u0bb5\\u0bc6\\u0bb3\\u0bbf\",\n\"Border\": \"\\u0b95\\u0bb0\\u0bc8\",\n\"Insert image\": \"\\u0baa\\u0b9f\\u0bae\\u0bcd \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Image...\": \"\\u0baa\\u0b9f\\u0bae\\u0bcd...\",\n\"Image list\": \"\\u0baa\\u0b9f\\u0baa\\u0bcd \\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0baf\\u0bb2\\u0bcd\",\n\"Rotate counterclockwise\": \"\\u0b95\\u0b9f\\u0bbf\\u0b95\\u0bbe\\u0bb0 \\u0b8e\\u0ba4\\u0bbf\\u0bb0\\u0bcd\\u0ba4\\u0bbf\\u0b9a\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b9a\\u0bc1\\u0bb4\\u0bb1\\u0bcd\\u0bb1\\u0bc1\",\n\"Rotate clockwise\": \"\\u0b95\\u0b9f\\u0bbf\\u0b95\\u0bbe\\u0bb0\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0b9a\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b9a\\u0bc1\\u0bb4\\u0bb1\\u0bcd\\u0bb1\\u0bc1\",\n\"Flip vertically\": \"\\u0b9a\\u0bc6\\u0b99\\u0bcd\\u0b95\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbe\\u0b95 \\u0baa\\u0bc1\\u0bb0\\u0b9f\\u0bcd\\u0b9f\\u0bc1\",\n\"Flip horizontally\": \"\\u0b95\\u0bbf\\u0b9f\\u0bc8\\u0bae\\u0b9f\\u0bcd\\u0b9f\\u0bae\\u0bbe\\u0b95 \\u0baa\\u0bc1\\u0bb0\\u0b9f\\u0bcd\\u0b9f\\u0bc1\",\n\"Edit image\": \"\\u0baa\\u0b9f\\u0ba4\\u0bcd\\u0ba4\\u0bc8 \\u0ba4\\u0bca\\u0b95\\u0bc1\",\n\"Image options\": \"\\u0baa\\u0b9f \\u0bb5\\u0bbf\\u0bb0\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Zoom in\": \"\\u0baa\\u0bc6\\u0bb0\\u0bbf\\u0ba4\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0bc1\",\n\"Zoom out\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bbf\\u0ba4\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0bc1\",\n\"Crop\": \"\\u0b9a\\u0bc6\\u0ba4\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bc1\",\n\"Resize\": \"\\u0bae\\u0bb1\\u0bc1\\u0b85\\u0bb3\\u0bb5\\u0bbf\\u0b9f\\u0bc1\",\n\"Orientation\": \"\\u0ba4\\u0bbf\\u0b9a\\u0bc8\\u0baf\\u0bae\\u0bc8\\u0bb5\\u0bc1\",\n\"Brightness\": \"\\u0b92\\u0bb3\\u0bbf\\u0bb0\\u0bcd\\u0bb5\\u0bc1\",\n\"Sharpen\": \"\\u0b95\\u0bc2\\u0bb0\\u0bcd\\u0bae\\u0bc8\\u0baf\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0bc1\",\n\"Contrast\": \"\\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bbe\\u0bb1\\u0bc1\\u0baa\\u0bbe\\u0b9f\\u0bc1\",\n\"Color levels\": \"\\u0bb5\\u0ba3\\u0bcd\\u0ba3 \\u0ba8\\u0bbf\\u0bb2\\u0bc8\\u0b95\\u0bb3\\u0bcd\",\n\"Gamma\": \"Gamma\",\n\"Invert\": \"\\u0ba8\\u0bc7\\u0bb0\\u0bcd\\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\",\n\"Apply\": \"\\u0baa\\u0baf\\u0ba9\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\",\n\"Back\": \"\\u0baa\\u0bbf\\u0ba9\\u0bcd\",\n\"Insert date\\/time\": \"\\u0ba4\\u0bc7\\u0ba4\\u0bbf\\/\\u0ba8\\u0bc7\\u0bb0\\u0bae\\u0bcd \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Date\\/time\": \"\\u0ba4\\u0bc7\\u0ba4\\u0bbf\\/\\u0ba8\\u0bc7\\u0bb0\\u0bae\\u0bcd\",\n\"Insert\\/Edit Link\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Insert\\/edit link\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Text to display\": \"\\u0b95\\u0bbe\\u0b9f\\u0bcd\\u0b9a\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4 \\u0bb5\\u0bc7\\u0ba3\\u0bcd\\u0b9f\\u0bbf\\u0baf \\u0b89\\u0bb0\\u0bc8\",\n\"Url\": \"\\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf\",\n\"Open link in...\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc8 \\u0b87\\u0ba4\\u0bbf\\u0bb2\\u0bcd \\u0ba4\\u0bbf\\u0bb1\\u0b95\\u0bcd\\u0b95...\",\n\"Current window\": \"\\u0ba4\\u0bb1\\u0bcd\\u0baa\\u0bcb\\u0ba4\\u0bc8\\u0baf \\u0b9a\\u0bbe\\u0bb3\\u0bb0\\u0bae\\u0bcd\",\n\"None\": \"\\u0b8f\\u0ba4\\u0bc1\\u0bae\\u0bbf\\u0bb2\\u0bcd\\u0bb2\\u0bc8\",\n\"New window\": \"\\u0baa\\u0bc1\\u0ba4\\u0bbf\\u0baf \\u0b9a\\u0bbe\\u0bb3\\u0bb0\\u0bae\\u0bcd\",\n\"Remove link\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc8 \\u0b85\\u0b95\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Anchors\": \"\\u0ba8\\u0b99\\u0bcd\\u0b95\\u0bc2\\u0bb0\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Link...\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1...\",\n\"Paste or type a link\": \"\\u0b92\\u0bb0\\u0bc1 \\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95 \\u0b85\\u0bb2\\u0bcd\\u0bb2\\u0ba4\\u0bc1 \\u0ba4\\u0b9f\\u0bcd\\u0b9f\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0b9f\\u0bc1\\u0b95\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b89\\u0bb3\\u0bcd\\u0bb3\\u0bbf\\u0b9f\\u0bcd\\u0b9f \\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf (URL) \\u0b92\\u0bb0\\u0bc1 \\u0bae\\u0bbf\\u0ba9\\u0bcd-\\u0b85\\u0b9e\\u0bcd\\u0b9a\\u0bb2\\u0bcd \\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf \\u0baa\\u0bcb\\u0bb2\\u0bcd \\u0ba4\\u0bcb\\u0ba9\\u0bcd\\u0bb1\\u0bc1\\u0b95\\u0bbf\\u0bb1\\u0ba4\\u0bc1. \\u0ba4\\u0bc7\\u0bb5\\u0bc8\\u0baf\\u0bbe\\u0ba9 mailto: \\u0bae\\u0bc1\\u0ba9\\u0bcd-\\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc8\\u0ba4\\u0bcd (prefix) \\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b9a\\u0bc7\\u0bb0\\u0bcd\\u0b95\\u0bcd\\u0b95 \\u0bb5\\u0bc7\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bbe?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b89\\u0bb3\\u0bcd\\u0bb3\\u0bbf\\u0b9f\\u0bcd\\u0b9f \\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf (URL) \\u0b92\\u0bb0\\u0bc1 \\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0bb1 \\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 (external link) \\u0baa\\u0bcb\\u0bb2\\u0bcd \\u0ba4\\u0bcb\\u0ba9\\u0bcd\\u0bb1\\u0bc1\\u0b95\\u0bbf\\u0bb1\\u0ba4\\u0bc1. \\u0ba4\\u0bc7\\u0bb5\\u0bc8\\u0baf\\u0bbe\\u0ba9 http:\\/\\/ \\u0bae\\u0bc1\\u0ba9\\u0bcd-\\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc8\\u0ba4\\u0bcd (prefix) \\u0ba4\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b9a\\u0bc7\\u0bb0\\u0bcd\\u0b95\\u0bcd\\u0b95 \\u0bb5\\u0bc7\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bbe?\",\n\"Link list\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0baa\\u0bcd \\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0baf\\u0bb2\\u0bcd\",\n\"Insert video\": \"\\u0b95\\u0bbe\\u0ba3\\u0bca\\u0bb3\\u0bbf \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Insert\\/edit video\": \"\\u0b95\\u0bbe\\u0ba3\\u0bca\\u0bb3\\u0bbf \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Insert\\/edit media\": \"\\u0b8a\\u0b9f\\u0b95\\u0bae\\u0bcd \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Alternative source\": \"\\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1 \\u0bae\\u0bc2\\u0bb2\\u0bae\\u0bcd\",\n\"Alternative source URL\": \"\\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1 \\u0bae\\u0bc2\\u0bb2 \\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf\",\n\"Media poster (Image URL)\": \"\\u0b8a\\u0b9f\\u0b95 \\u0b9a\\u0bc1\\u0bb5\\u0bb0\\u0bca\\u0b9f\\u0bcd\\u0b9f\\u0bbf (\\u0b89\\u0b9f \\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf)\",\n\"Paste your embed code below:\": \"\\u0ba4\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b89\\u0b9f\\u0bcd\\u0baa\\u0bc6\\u0bbe\\u0ba4\\u0bbf \\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bcd\\u0b9f\\u0bc8 \\u0b95\\u0bc0\\u0bb4\\u0bc7 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bb5\\u0bc1\\u0bae\\u0bcd:\",\n\"Embed\": \"\\u0b89\\u0b9f\\u0bcd\\u0baa\\u0bca\\u0ba4\\u0bbf\",\n\"Media...\": \"\\u0b8a\\u0b9f\\u0b95\\u0bae\\u0bcd...\",\n\"Nonbreaking space\": \"\\u0baa\\u0bbf\\u0bb0\\u0bbf\\u0baf\\u0bbe\\u0ba4 \\u0b87\\u0b9f\\u0bc8\\u0bb5\\u0bc6\\u0bb3\\u0bbf\",\n\"Page break\": \"\\u0baa\\u0b95\\u0bcd\\u0b95 \\u0baa\\u0bbf\\u0bb0\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Paste as text\": \"\\u0b89\\u0bb0\\u0bc8\\u0baf\\u0bbe\\u0b95 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Preview\": \"\\u0bae\\u0bc1\\u0ba9\\u0bcd\\u0ba8\\u0bcb\\u0b95\\u0bcd\\u0b95\\u0bc1\",\n\"Print...\": \"\\u0b85\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0b9f\\u0bc1\\u0b95...\",\n\"Save\": \"\\u0b9a\\u0bc7\\u0bae\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Find\": \"\\u0b95\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bbf\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Replace with\": \"\\u0b87\\u0ba4\\u0ba9\\u0bc1\\u0b9f\\u0ba9\\u0bcd \\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Replace\": \"\\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Replace all\": \"\\u0b85\\u0ba9\\u0bc8\\u0ba4\\u0bcd\\u0ba4\\u0bc8\\u0baf\\u0bc1\\u0bae\\u0bcd \\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Previous\": \"\\u0bae\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bc8\\u0baf\",\n\"Next\": \"\\u0b85\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\",\n\"Find and replace...\": \"\\u0b95\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bbf\\u0b9f\\u0bbf\\u0ba4\\u0bcd\\u0ba4\\u0bc1 \\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95...\",\n\"Could not find the specified string.\": \"\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bbf\\u0b9f\\u0bcd\\u0b9f \\u0b9a\\u0bb0\\u0bae\\u0bcd \\u0b95\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bbf\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95 \\u0bae\\u0bc1\\u0b9f\\u0bbf\\u0baf\\u0bb5\\u0bbf\\u0bb2\\u0bcd\\u0bb2\\u0bc8\",\n\"Match case\": \"\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0ba4\\u0bcd\\u0ba4\\u0bc8 \\u0baa\\u0bca\\u0bb0\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\",\n\"Find whole words only\": \"\\u0bae\\u0bc1\\u0bb4\\u0bc1 \\u0b9a\\u0bca\\u0bb1\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0bae\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0bae\\u0bcd \\u0b95\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bbf\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Spell check\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bbf\\u0bb4\\u0bc8 \\u0b9a\\u0bb0\\u0bbf\\u0baa\\u0bbe\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Ignore\": \"\\u0baa\\u0bc1\\u0bb1\\u0b95\\u0bcd\\u0b95\\u0ba3\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Ignore all\": \"\\u0b85\\u0ba9\\u0bc8\\u0ba4\\u0bcd\\u0ba4\\u0bc8\\u0baf\\u0bc1\\u0bae\\u0bcd \\u0baa\\u0bc1\\u0bb1\\u0b95\\u0bcd\\u0b95\\u0ba3\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Finish\": \"\\u0bae\\u0bc1\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Add to Dictionary\": \"\\u0b85\\u0b95\\u0bb0\\u0bbe\\u0ba4\\u0bbf\\u0baf\\u0bbf\\u0bb2\\u0bcd \\u0b9a\\u0bc7\\u0bb0\\u0bcd\\u0b95\\u0bcd\\u0b95\",\n\"Insert table\": \"\\u0b85\\u0b9f\\u0bcd\\u0b9f\\u0bb5\\u0ba3\\u0bc8 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Table properties\": \"\\u0b85\\u0b9f\\u0bcd\\u0b9f\\u0bb5\\u0ba3\\u0bc8 \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Delete table\": \"\\u0b85\\u0b9f\\u0bcd\\u0b9f\\u0bb5\\u0ba3\\u0bc8 \\u0ba8\\u0bc0\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0b95\",\n\"Cell\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8\",\n\"Row\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8\",\n\"Column\": \"\\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8\",\n\"Cell properties\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8 \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Merge cells\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8\\u0b95\\u0bb3\\u0bcd \\u0b9a\\u0bc7\\u0bb0\\u0bcd\\u0b95\\u0bcd\\u0b95\",\n\"Split cell\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8 \\u0baa\\u0bbf\\u0bb0\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Insert row before\": \"\\u0b87\\u0ba4\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0bae\\u0bc1\\u0ba9\\u0bcd \\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Insert row after\": \"\\u0b87\\u0ba4\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0baa\\u0bbf\\u0ba9\\u0bcd \\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Delete row\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0ba8\\u0bc0\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0b95\",\n\"Row properties\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Cut row\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0bb5\\u0bc6\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Copy row\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0ba8\\u0b95\\u0bb2\\u0bc6\\u0b9f\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Paste row before\": \"\\u0b87\\u0ba4\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0bae\\u0bc1\\u0ba9\\u0bcd \\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Paste row after\": \"\\u0b87\\u0ba4\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0baa\\u0bbf\\u0ba9\\u0bcd \\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b92\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Insert column before\": \"\\u0b87\\u0ba4\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0bae\\u0bc1\\u0ba9\\u0bcd \\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Insert column after\": \"\\u0b87\\u0ba4\\u0bb1\\u0bcd\\u0b95\\u0bc1 \\u0baa\\u0bbf\\u0ba9\\u0bcd \\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Delete column\": \"\\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0ba8\\u0bc0\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0b95\",\n\"Cols\": \"\\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8\\u0b95\\u0bb3\\u0bcd\",\n\"Rows\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8\\u0b95\\u0bb3\\u0bcd\",\n\"Width\": \"\\u0b85\\u0b95\\u0bb2\\u0bae\\u0bcd\",\n\"Height\": \"\\u0b89\\u0baf\\u0bb0\\u0bae\\u0bcd\",\n\"Cell spacing\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8 \\u0b87\\u0b9f\\u0bc8\\u0bb5\\u0bc6\\u0bb3\\u0bbf\",\n\"Cell padding\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8 \\u0ba8\\u0bbf\\u0bb0\\u0baa\\u0bcd\\u0baa\\u0bb2\\u0bcd\",\n\"Show caption\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b95\\u0bbe\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Left\": \"\\u0b87\\u0b9f\\u0bae\\u0bcd\",\n\"Center\": \"\\u0bae\\u0bc8\\u0baf\\u0bae\\u0bcd\",\n\"Right\": \"\\u0bb5\\u0bb2\\u0bae\\u0bcd\",\n\"Cell type\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8 \\u0bb5\\u0b95\\u0bc8\",\n\"Scope\": \"\\u0bb5\\u0bb0\\u0bc8\\u0baf\\u0bc6\\u0bb2\\u0bcd\\u0bb2\\u0bc8\",\n\"Alignment\": \"\\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\\u0bb5\\u0bc1\",\n\"H Align\": \"\\u0b95\\u0bbf (H) \\u0b87\\u0b9a\\u0bc8\\u0bb5\\u0bc1\",\n\"V Align\": \"\\u0b9a\\u0bc6 (V) \\u0b87\\u0b9a\\u0bc8\\u0bb5\\u0bc1\",\n\"Top\": \"\\u0bae\\u0bc7\\u0bb2\\u0bcd\",\n\"Middle\": \"\\u0ba8\\u0b9f\\u0bc1\",\n\"Bottom\": \"\\u0bae\\u0bc7\\u0bb2\\u0bcd\",\n\"Header cell\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bb1\\u0bc8\",\n\"Row group\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b95\\u0bc1\\u0bb4\\u0bc1\",\n\"Column group\": \"\\u0ba8\\u0bc6\\u0b9f\\u0bc1\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0b95\\u0bc1\\u0bb4\\u0bc1\",\n\"Row type\": \"\\u0bb5\\u0bb0\\u0bbf\\u0b9a\\u0bc8 \\u0bb5\\u0b95\\u0bc8\",\n\"Header\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Body\": \"\\u0b89\\u0b9f\\u0bb2\\u0bcd\",\n\"Footer\": \"\\u0b85\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Border color\": \"\\u0b95\\u0bb0\\u0bc8\\u0baf\\u0bbf\\u0ba9\\u0bcd \\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd\",\n\"Insert template...\": \"\\u0bb5\\u0bbe\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0bb0\\u0bc1 \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95...\",\n\"Templates\": \"\\u0bb5\\u0bbe\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0bb0\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Template\": \"\\u0bb5\\u0bbe\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0bb0\\u0bc1\",\n\"Text color\": \"\\u0b89\\u0bb0\\u0bc8\\u0baf\\u0bbf\\u0ba9\\u0bcd \\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd\",\n\"Background color\": \"\\u0baa\\u0bbf\\u0ba9\\u0bcd\\u0ba9\\u0ba3\\u0bbf \\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd\",\n\"Custom...\": \"\\u0ba4\\u0ba9\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0baf\\u0ba9\\u0bcd...\",\n\"Custom color\": \"\\u0ba4\\u0ba9\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0baf\\u0ba9\\u0bcd \\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd\",\n\"No color\": \"\\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd \\u0b87\\u0bb2\\u0bcd\\u0bb2\\u0bc8\",\n\"Remove color\": \"\\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd \\u0b85\\u0b95\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Table of Contents\": \"\\u0baa\\u0bca\\u0bb0\\u0bc1\\u0bb3\\u0b9f\\u0b95\\u0bcd\\u0b95\\u0bae\\u0bcd\",\n\"Show blocks\": \"\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0ba4\\u0bbf\\u0b95\\u0bb3\\u0bc8 \\u0b95\\u0bbe\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Show invisible characters\": \"\\u0b95\\u0ba3\\u0bcd\\u0ba3\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0ba4\\u0bcd \\u0ba4\\u0bc6\\u0bb0\\u0bbf\\u0baf\\u0bbe\\u0ba4 \\u0b89\\u0bb0\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bc8 \\u0b95\\u0bbe\\u0b9f\\u0bcd\\u0b9f\\u0bc1\\u0b95\",\n\"Word count\": \"\\u0b9a\\u0bca\\u0bb2\\u0bcd \\u0b8e\\u0ba3\\u0bcd\\u0ba3\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc8\",\n\"Count\": \"\\u0b8e\\u0ba3\\u0bcd\\u0ba3\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc8\",\n\"Document\": \"\\u0b86\\u0bb5\\u0ba3\\u0bae\\u0bcd\",\n\"Selection\": \"\\u0ba4\\u0bc7\\u0bb0\\u0bcd\\u0bb5\\u0bc1\",\n\"Words\": \"\\u0b9a\\u0bca\\u0bb1\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Words: {0}\": \"\\u0b9a\\u0bca\\u0bb1\\u0bcd\\u0b95\\u0bb3\\u0bcd: {0}\",\n\"{0} words\": \"{0} \\u0b9a\\u0bca\\u0bb1\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"File\": \"\\u0b95\\u0bcb\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Edit\": \"\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Insert\": \"\\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"View\": \"\\u0ba8\\u0bcb\\u0b95\\u0bcd\\u0b95\\u0bc1\\u0b95\",\n\"Format\": \"\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Table\": \"\\u0b85\\u0b9f\\u0bcd\\u0b9f\\u0bb5\\u0ba3\\u0bc8\",\n\"Tools\": \"\\u0b95\\u0bb0\\u0bc1\\u0bb5\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"Powered by {0}\": \"\\u0bb5\\u0bb2\\u0bc1\\u0bb5\\u0bb3\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0ba4\\u0bc1 {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u0b89\\u0baf\\u0bb0\\u0bcd \\u0b89\\u0bb0\\u0bc8 \\u0baa\\u0b95\\u0bc1\\u0ba4\\u0bbf. \\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc1 ALT-F9 , \\u0b95\\u0bb0\\u0bc1\\u0bb5\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f\\u0bc8\\u0b95\\u0bcd\\u0b95\\u0bc1 ALT-F10 , \\u0b89\\u0ba4\\u0bb5\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc1 ALT-0\",\n\"Image title\": \"\\u0baa\\u0b9f\\u0ba4\\u0bcd \\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Border width\": \"\\u0b95\\u0bb0\\u0bc8 \\u0b85\\u0b95\\u0bb2\\u0bae\\u0bcd\",\n\"Border style\": \"\\u0b95\\u0bb0\\u0bc8 \\u0baa\\u0bbe\\u0ba3\\u0bbf\",\n\"Error\": \"\\u0baa\\u0bbf\\u0bb4\\u0bc8\",\n\"Warn\": \"\\u0b8e\\u0b9a\\u0bcd\\u0b9a\\u0bb0\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Valid\": \"\\u0b9a\\u0bc6\\u0bb2\\u0bcd\\u0bb2\\u0ba4\\u0bcd\\u0ba4\\u0b95\\u0bcd\\u0b95\\u0ba4\\u0bc1\",\n\"To open the popup, press Shift+Enter\": \"\\u0bae\\u0bc7\\u0bb2\\u0bcd\\u0ba4\\u0bcb\\u0ba9\\u0bcd\\u0bb1\\u0bc1-\\u0bb5\\u0bc8\\u0ba4\\u0bcd \\u0ba4\\u0bbf\\u0bb1\\u0b95\\u0bcd\\u0b95 Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u0b89\\u0baf\\u0bb0\\u0bcd \\u0b89\\u0bb0\\u0bc8 \\u0baa\\u0b95\\u0bc1\\u0ba4\\u0bbf. \\u0b89\\u0ba4\\u0bb5\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0bc1 ALT-0\",\n\"System Font\": \"\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0ba4\\u0bbf \\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bb0\\u0bc1\",\n\"Failed to upload image: {0}\": \"\\u0baa\\u0b9f\\u0bae\\u0bcd \\u0baa\\u0ba4\\u0bbf\\u0bb5\\u0bc7\\u0bb1\\u0bcd\\u0bb1\\u0bb2\\u0bcd \\u0ba4\\u0bcb\\u0bb2\\u0bcd\\u0bb5\\u0bbf\\u0baf\\u0bc1\\u0bb1\\u0bcd\\u0bb1\\u0ba4\\u0bc1: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf \\u0b8f\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0ba4\\u0bb2\\u0bcd \\u0ba4\\u0bcb\\u0bb2\\u0bcd\\u0bb5\\u0bbf\\u0baf\\u0bc1\\u0bb1\\u0bcd\\u0bb1\\u0ba4\\u0bc1: {0} - {1} \\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf\\u0baf\\u0bbf\\u0bb2\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bc1\",\n\"Failed to load plugin url: {0}\": \"\\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf \\u0b87\\u0ba3\\u0bc8\\u0baf\\u0bae\\u0bc1\\u0b95\\u0bb5\\u0bb0\\u0bbf \\u0b8f\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0ba4\\u0bb2\\u0bcd \\u0ba4\\u0bcb\\u0bb2\\u0bcd\\u0bb5\\u0bbf\\u0baf\\u0bc1\\u0bb1\\u0bcd\\u0bb1\\u0ba4\\u0bc1: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bbf \\u0ba4\\u0bc1\\u0bb5\\u0b99\\u0bcd\\u0b95\\u0bc1\\u0ba4\\u0bb2\\u0bcd \\u0ba4\\u0bcb\\u0bb2\\u0bcd\\u0bb5\\u0bbf\\u0baf\\u0bc1\\u0bb1\\u0bcd\\u0bb1\\u0ba4\\u0bc1: {0}\",\n\"example\": \"\\u0b89\\u0ba4\\u0bbe\\u0bb0\\u0ba3\\u0bae\\u0bcd\",\n\"Search\": \"\\u0ba4\\u0bc7\\u0b9f\\u0bc1\\u0b95\",\n\"All\": \"\\u0b85\\u0ba9\\u0bc8\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bae\\u0bcd\",\n\"Currency\": \"\\u0b9a\\u0bc6\\u0bb2\\u0bbe\\u0bb5\\u0ba3\\u0bbf (Currency)\",\n\"Text\": \"\\u0b89\\u0bb0\\u0bc8\",\n\"Quotations\": \"\\u0bae\\u0bc7\\u0bb1\\u0bcd\\u0b95\\u0bc7\\u0bbe\\u0bb3\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Mathematical\": \"\\u0b95\\u0ba3\\u0b95\\u0bcd\\u0b95\\u0bbf\\u0baf\\u0bb2\\u0bcd\",\n\"Extended Latin\": \"\\u0ba8\\u0bc0\\u0b9f\\u0bcd\\u0b9f\\u0bbf\\u0b95\\u0bcd\\u0b95\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bcd\\u0b9f \\u0b87\\u0bb2\\u0ba4\\u0bcd\\u0ba4\\u0bc0\\u0ba9\\u0bcd\",\n\"Symbols\": \"\\u0b87\\u0b9f\\u0bc1\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"Arrows\": \"\\u0b85\\u0bae\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"User Defined\": \"\\u0baa\\u0baf\\u0ba9\\u0bb0\\u0bcd \\u0bb5\\u0bb0\\u0bc8\\u0baf\\u0bb1\\u0bc1\\u0ba4\\u0bcd\\u0ba4\",\n\"dollar sign\": \"dollar \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"currency sign\": \"\\u0b9a\\u0bc6\\u0bb2\\u0bbe\\u0bb5\\u0ba3\\u0bbf\\u0b95\\u0bcd \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"euro-currency sign\": \"euro-currency \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"colon sign\": \"colon \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"cruzeiro sign\": \"cruzeiro \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"french franc sign\": \"french franc \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"lira sign\": \"lira \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"mill sign\": \"mill \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"naira sign\": \"naira \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"peseta sign\": \"peseta \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"rupee sign\": \"rupee \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"won sign\": \"won \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"new sheqel sign\": \"new sheqel \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"dong sign\": \"dong \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"kip sign\": \"kip \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"tugrik sign\": \"tugrik \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"drachma sign\": \"drachma \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"german penny symbol\": \"german penny \\u0b87\\u0b9f\\u0bc1\\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"peso sign\": \"peso \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"guarani sign\": \"guarani \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"austral sign\": \"austral \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"hryvnia sign\": \"hryvnia \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"cedi sign\": \"cedi \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"livre tournois sign\": \"livre tournois \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"spesmilo sign\": \"spesmilo \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"tenge sign\": \"tenge \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"indian rupee sign\": \"indian rupee \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"turkish lira sign\": \"turkish lira \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"nordic mark sign\": \"nordic mark \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"manat sign\": \"manat \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"ruble sign\": \"ruble \\u0b95\\u0bc1\\u0bb1\\u0bbf\",\n\"yen character\": \"yen \\u0b89\\u0bb0\\u0bc1\",\n\"yuan character\": \"yuan \\u0b89\\u0bb0\\u0bc1\",\n\"yuan character, in hong kong and taiwan\": \"yuan \\u0b89\\u0bb0\\u0bc1, \\u0bb9\\u0bbe\\u0b99\\u0bcd\\u0b95\\u0bbe\\u0b99\\u0bcd \\u0bae\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0ba4\\u0bbe\\u0baf\\u0bcd\\u0bb5\\u0bbe\\u0ba9\\u0bcd \\u0b87\\u0bb2\\u0bcd\",\n\"yen\\/yuan character variant one\": \"yen\\/yuan \\u0b89\\u0bb0\\u0bc1 \\u0bae\\u0bbe\\u0bb1\\u0bc1\\u0baa\\u0bbe\\u0b9f\\u0bc1\",\n\"Loading emoticons...\": \"\\u0b89\\u0ba3\\u0bb0\\u0bcd\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bbf\\u0bae\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b8f\\u0bb1\\u0bcd\\u0bb1\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bc1\\u0b95\\u0bbf\\u0ba9\\u0bcd\\u0bb1\\u0ba9...\",\n\"Could not load emoticons\": \"\\u0b89\\u0ba3\\u0bb0\\u0bcd\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bbf\\u0bae\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bc8 \\u0b8f\\u0bb1\\u0bcd\\u0bb1 \\u0bae\\u0bc1\\u0b9f\\u0bbf\\u0baf\\u0bb5\\u0bbf\\u0bb2\\u0bcd\\u0bb2\\u0bc8\",\n\"People\": \"\\u0bae\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Animals and Nature\": \"\\u0bae\\u0bbf\\u0bb0\\u0bc1\\u0b95\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0bae\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0b87\\u0baf\\u0bb1\\u0bcd\\u0b95\\u0bc8\",\n\"Food and Drink\": \"\\u0b89\\u0ba3\\u0bb5\\u0bc1 \\u0bae\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0baa\\u0bbe\\u0ba9\\u0bae\\u0bcd\",\n\"Activity\": \"\\u0b9a\\u0bc6\\u0baf\\u0bb1\\u0bcd\\u0baa\\u0bbe\\u0b9f\\u0bc1\",\n\"Travel and Places\": \"\\u0baa\\u0baf\\u0ba3\\u0bae\\u0bcd \\u0bae\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0bae\\u0bcd \\u0b87\\u0b9f\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Objects\": \"\\u0baa\\u0bca\\u0bb0\\u0bc1\\u0b9f\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Flags\": \"\\u0b95\\u0bca\\u0b9f\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"Characters\": \"\\u0b89\\u0bb0\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Characters (no spaces)\": \"\\u0b89\\u0bb0\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd (\\u0b87\\u0b9f\\u0bc8\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0b95\\u0bb3\\u0bcd \\u0b87\\u0bb2\\u0bcd\\u0bb2\\u0bc8)\",\n\"{0} characters\": \"{0} \\u0b89\\u0bb0\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Error: Form submit field collision.\": \"\\u0baa\\u0bbf\\u0bb4\\u0bc8: \\u0baa\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bcd \\u0b9a\\u0bae\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bbf\\u0ba4\\u0bcd\\u0ba4\\u0bb2\\u0bcd \\u0baa\\u0bc1\\u0bb2\\u0bae\\u0bcd \\u0bae\\u0bcb\\u0ba4\\u0bb2\\u0bcd.\",\n\"Error: No form element found.\": \"\\u0baa\\u0bbf\\u0bb4\\u0bc8: \\u0baa\\u0bc1\\u0bb2\\u0bae\\u0bcd \\u0bae\\u0bc2\\u0bb2\\u0b95\\u0bae\\u0bcd \\u0b8e\\u0ba4\\u0bc1\\u0bb5\\u0bc1\\u0bae\\u0bcd \\u0b95\\u0bbe\\u0ba3\\u0bb5\\u0bbf\\u0bb2\\u0bcd\\u0bb2\\u0bc8.\",\n\"Update\": \"\\u0baa\\u0bc1\\u0ba4\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bbf\\u0b95\\u0bcd\\u0b95\",\n\"Color swatch\": \"\\u0ba8\\u0bbf\\u0bb1\\u0b9a\\u0bcd \\u0b9a\\u0bcb\\u0ba4\\u0ba9\\u0bc8\\u0b95\\u0bcd\\u0b95\\u0bb2\\u0bb5\\u0bc8\",\n\"Turquoise\": \"\\u0ba8\\u0bc0\\u0bb2\\u0baa\\u0bcd\\u0baa\\u0b9a\\u0bcd\\u0b9a\\u0bc8\",\n\"Green\": \"\\u0baa\\u0b9a\\u0bcd\\u0b9a\\u0bc8\",\n\"Blue\": \"\\u0ba8\\u0bc0\\u0bb2\\u0bae\\u0bcd\",\n\"Purple\": \"\\u0b8a\\u0ba4\\u0bbe\",\n\"Navy Blue\": \"\\u0b95\\u0b9f\\u0bb1\\u0bcd\\u0baa\\u0b9f\\u0bc8 \\u0ba8\\u0bc0\\u0bb2\\u0bae\\u0bcd\",\n\"Dark Turquoise\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0ba8\\u0bc0\\u0bb2\\u0baa\\u0bcd\\u0baa\\u0b9a\\u0bcd\\u0b9a\\u0bc8\",\n\"Dark Green\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0baa\\u0b9a\\u0bcd\\u0b9a\\u0bc8\",\n\"Medium Blue\": \"\\u0ba8\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bb0 \\u0ba8\\u0bc0\\u0bb2\\u0bae\\u0bcd\",\n\"Medium Purple\": \"\\u0ba8\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bb0 \\u0b8a\\u0ba4\\u0bbe\",\n\"Midnight Blue\": \"\\u0ba8\\u0bb3\\u0bcd\\u0bb3\\u0bbf\\u0bb0\\u0bb5\\u0bc1 \\u0ba8\\u0bc0\\u0bb2\\u0bae\\u0bcd\",\n\"Yellow\": \"\\u0bae\\u0b9e\\u0bcd\\u0b9a\\u0bb3\\u0bcd\",\n\"Orange\": \"\\u0b9a\\u0bbf\\u0bb5\\u0ba8\\u0bcd\\u0ba4 \\u0bae\\u0b9e\\u0bcd\\u0b9a\\u0bb3\\u0bcd\",\n\"Red\": \"\\u0b9a\\u0bbf\\u0bb5\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Light Gray\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0bb0\\u0bcd \\u0b9a\\u0bbe\\u0bae\\u0bcd\\u0baa\\u0bb2\\u0bcd\",\n\"Gray\": \"\\u0b9a\\u0bbe\\u0bae\\u0bcd\\u0baa\\u0bb2\\u0bcd\",\n\"Dark Yellow\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0bae\\u0b9e\\u0bcd\\u0b9a\\u0bb3\\u0bcd\",\n\"Dark Orange\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0b9a\\u0bbf\\u0bb5\\u0ba8\\u0bcd\\u0ba4 \\u0bae\\u0b9e\\u0bcd\\u0b9a\\u0bb3\\u0bcd\",\n\"Dark Red\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0b9a\\u0bbf\\u0bb5\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Medium Gray\": \"\\u0ba8\\u0b9f\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bb0 \\u0b9a\\u0bbe\\u0bae\\u0bcd\\u0baa\\u0bb2\\u0bcd\",\n\"Dark Gray\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0b9a\\u0bbe\\u0bae\\u0bcd\\u0baa\\u0bb2\\u0bcd\",\n\"Light Green\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0bb0\\u0bcd \\u0baa\\u0b9a\\u0bcd\\u0b9a\\u0bc8\",\n\"Light Yellow\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0bb0\\u0bcd \\u0bae\\u0b9e\\u0bcd\\u0b9a\\u0bb3\\u0bcd\",\n\"Light Red\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0bb0\\u0bcd\\u00a0\\u0b9a\\u0bbf\\u0bb5\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Light Purple\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0bb0\\u0bcd \\u0b8a\\u0ba4\\u0bbe\",\n\"Light Blue\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bbf\\u0bb0\\u0bcd \\u0ba8\\u0bc0\\u0bb2\\u0bae\\u0bcd\",\n\"Dark Purple\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0b8a\\u0ba4\\u0bbe\",\n\"Dark Blue\": \"\\u0b85\\u0b9f\\u0bb0\\u0bcd \\u0ba8\\u0bc0\\u0bb2\\u0bae\\u0bcd\",\n\"Black\": \"\\u0b95\\u0bb0\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"White\": \"\\u0bb5\\u0bc6\\u0bb3\\u0bcd\\u0bb3\\u0bc8\",\n\"Switch to or from fullscreen mode\": \"\\u0bae\\u0bc1\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0bb0\\u0bc8 \\u0bae\\u0bc1\\u0bb1\\u0bc8\\u0bae\\u0bc8\\u0b95\\u0bcd\\u0b95\\u0bc1\\/\\u0bae\\u0bc1\\u0bb1\\u0bc8\\u0bae\\u0bc8\\u0baf\\u0bbf\\u0bb2\\u0bbf\\u0bb0\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bc1 \\u0bae\\u0bbe\\u0bb1\\u0bc1\\u0b95\",\n\"Open help dialog\": \"\\u0b89\\u0ba4\\u0bb5\\u0bbf \\u0b89\\u0bb0\\u0bc8\\u0baf\\u0bbe\\u0b9f\\u0bb2\\u0bcd \\u0ba4\\u0bbf\\u0bb1\\u0b95\\u0bcd\\u0b95\",\n\"history\": \"\\u0bb5\\u0bb0\\u0bb2\\u0bbe\\u0bb1\\u0bc1\",\n\"styles\": \"\\u0baa\\u0bbe\\u0ba3\\u0bbf\\u0b95\\u0bb3\\u0bcd\",\n\"formatting\": \"\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0ba4\\u0bcd\\u0ba4\\u0bb2\\u0bcd\",\n\"alignment\": \"\\u0b9a\\u0bc0\\u0bb0\\u0bae\\u0bc8\\u0bb5\\u0bc1\",\n\"indentation\": \"\\u0b89\\u0bb3\\u0bcd\\u0ba4\\u0bb3\\u0bcd\\u0bb3\\u0bc1\\u0ba4\\u0bb2\\u0bcd\",\n\"permanent pen\": \"\\u0ba8\\u0bbf\\u0bb0\\u0ba8\\u0bcd\\u0ba4\\u0bb0\\u0baa\\u0bcd \\u0baa\\u0bc7\\u0ba9\\u0bbe\",\n\"comments\": \"\\u0b95\\u0bb0\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Format Painter\": \"\\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0baa\\u0bc2\\u0b9a\\u0bbe\\u0bb3\\u0ba9\\u0bcd\",\n\"Insert\\/edit iframe\": \"iframe \\u0b9a\\u0bc6\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\\/\\u0ba4\\u0bca\\u0b95\\u0bc1\\u0b95\\u0bcd\\u0b95\",\n\"Capitalization\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bbe\\u0b95\\u0bcd\\u0b95\\u0bae\\u0bcd\",\n\"lowercase\": \"\\u0b9a\\u0bbf\\u0bb1\\u0bcd\\u0bb1\\u0bc6\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\",\n\"UPPERCASE\": \"\\u0baa\\u0bc7\\u0bb0\\u0bc6\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\",\n\"Title Case\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0bb5\\u0b9f\\u0bbf\\u0bb5\\u0bae\\u0bcd\",\n\"Permanent Pen Properties\": \"\\u0ba8\\u0bbf\\u0bb0\\u0ba8\\u0bcd\\u0ba4\\u0bb0\\u0baa\\u0bcd \\u0baa\\u0bc7\\u0ba9\\u0bbe \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Permanent pen properties...\": \"\\u0ba8\\u0bbf\\u0bb0\\u0ba8\\u0bcd\\u0ba4\\u0bb0\\u0baa\\u0bcd \\u0baa\\u0bc7\\u0ba9\\u0bbe \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd...\",\n\"Font\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bb0\\u0bc1\",\n\"Size\": \"\\u0b85\\u0bb3\\u0bb5\\u0bc1\",\n\"More...\": \"\\u0bae\\u0bc7\\u0bb2\\u0bc1\\u0bae\\u0bcd...\",\n\"Spellcheck Language\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bbf\\u0bb4\\u0bc8 \\u0b9a\\u0bb0\\u0bbf\\u0baa\\u0bbe\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0bae\\u0bca\\u0bb4\\u0bbf\",\n\"Select...\": \"\\u0ba4\\u0bc7\\u0bb0\\u0bcd\\u0bb5\\u0bc1 \\u0b9a\\u0bc6\\u0baf\\u0bcd\\u0b95...\",\n\"Preferences\": \"\\u0bb5\\u0bbf\\u0bb0\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Yes\": \"\\u0b86\\u0bae\\u0bcd\",\n\"No\": \"\\u0b87\\u0bb2\\u0bcd\\u0bb2\\u0bc8\",\n\"Keyboard Navigation\": \"\\u0bb5\\u0bbf\\u0b9a\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bb2\\u0b95\\u0bc8 \\u0bb5\\u0bb4\\u0bbf\\u0b9a\\u0bcd\\u0b9a\\u0bc6\\u0bb2\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bb2\\u0bcd\",\n\"Version\": \"\\u0baa\\u0ba4\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Anchor\": \"\\u0ba8\\u0b99\\u0bcd\\u0b95\\u0bc2\\u0bb0\\u0bae\\u0bcd\",\n\"Special character\": \"\\u0b9a\\u0bbf\\u0bb1\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0bb0\\u0bc1\",\n\"Code sample\": \"\\u0b95\\u0bc1\\u0bb1\\u0bbf\\u0baf\\u0bc0\\u0b9f\\u0bc1 \\u0bae\\u0bbe\\u0ba4\\u0bbf\\u0bb0\\u0bbf\",\n\"Color\": \"\\u0ba8\\u0bbf\\u0bb1\\u0bae\\u0bcd\",\n\"Emoticons\": \"\\u0b89\\u0ba3\\u0bb0\\u0bcd\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0baa\\u0bcd\\u0baa\\u0b9f\\u0bbf\\u0bae\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Document properties\": \"\\u0b86\\u0bb5\\u0ba3\\u0ba4\\u0bcd\\u0ba4\\u0bbf\\u0ba9\\u0bcd \\u0baa\\u0ba3\\u0bcd\\u0baa\\u0bc1\\u0b95\\u0bb3\\u0bcd\",\n\"Image\": \"\\u0baa\\u0b9f\\u0bae\\u0bcd\",\n\"Insert link\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\",\n\"Target\": \"\\u0b87\\u0bb2\\u0b95\\u0bcd\\u0b95\\u0bc1\",\n\"Link\": \"\\u0b87\\u0ba3\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Poster\": \"\\u0b9a\\u0bc1\\u0bb5\\u0bb0\\u0bca\\u0b9f\\u0bcd\\u0b9f\\u0bbf\",\n\"Media\": \"\\u0b8a\\u0b9f\\u0b95\\u0bae\\u0bcd\",\n\"Print\": \"\\u0b85\\u0b9a\\u0bcd\\u0b9a\\u0bbf\\u0b9f\\u0bc1\\u0b95\",\n\"Prev\": \"\\u0bae\\u0bc1\\u0ba8\\u0bcd\\u0ba4\\u0bc8\\u0baf\",\n\"Find and replace\": \"\\u0b95\\u0ba3\\u0bcd\\u0b9f\\u0bc1\\u0baa\\u0bbf\\u0b9f\\u0bbf\\u0ba4\\u0bcd\\u0ba4\\u0bc1 \\u0bae\\u0bbe\\u0bb1\\u0bcd\\u0bb1\\u0bc1\\u0b95\",\n\"Whole words\": \"\\u0bae\\u0bc1\\u0bb4\\u0bc1 \\u0b9a\\u0bca\\u0bb1\\u0bcd\\u0b95\\u0bb3\\u0bcd\",\n\"Spellcheck\": \"\\u0b8e\\u0bb4\\u0bc1\\u0ba4\\u0bcd\\u0ba4\\u0bc1\\u0baa\\u0bcd\\u0baa\\u0bbf\\u0bb4\\u0bc8\\u0baf\\u0bc8 \\u0b9a\\u0bb0\\u0bbf\\u0baa\\u0bbe\\u0bb0\\u0bcd\\u0b95\\u0bcd\\u0b95\",\n\"Caption\": \"\\u0ba4\\u0bb2\\u0bc8\\u0baa\\u0bcd\\u0baa\\u0bc1\",\n\"Insert template\": \"\\u0bb5\\u0bbe\\u0bb0\\u0bcd\\u0baa\\u0bcd\\u0baa\\u0bc1\\u0bb0\\u0bc1 \\u0b9a\\u0bca\\u0bb0\\u0bc1\\u0b95\\u0bc1\\u0b95\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/th_TH.js",
    "content": "tinymce.addI18n('th_TH',{\n\"Redo\": \"\\u0e17\\u0e33\\u0e43\\u0e2b\\u0e21\\u0e48\\u0e2d\\u0e35\\u0e01\",\n\"Undo\": \"\\u0e40\\u0e1b\\u0e25\\u0e35\\u0e48\\u0e22\\u0e19\\u0e01\\u0e25\\u0e31\\u0e1a\\u0e04\\u0e37\\u0e19\",\n\"Cut\": \"\\u0e15\\u0e31\\u0e14\",\n\"Copy\": \"\\u0e04\\u0e31\\u0e14\\u0e25\\u0e2d\\u0e01\",\n\"Paste\": \"\\u0e27\\u0e32\\u0e07\",\n\"Select all\": \"\\u0e40\\u0e25\\u0e37\\u0e2d\\u0e01\\u0e17\\u0e31\\u0e49\\u0e07\\u0e2b\\u0e21\\u0e14\",\n\"New document\": \"\\u0e40\\u0e2d\\u0e01\\u0e2a\\u0e32\\u0e23\\u0e43\\u0e2b\\u0e21\\u0e48\",\n\"Ok\": \"\\u0e15\\u0e01\\u0e25\\u0e07\",\n\"Cancel\": \"\\u0e22\\u0e01\\u0e40\\u0e25\\u0e34\\u0e01\",\n\"Visual aids\": \"\\u0e17\\u0e31\\u0e28\\u0e19\\u0e39\\u0e1b\\u0e01\\u0e23\\u0e13\\u0e4c\",\n\"Bold\": \"\\u0e15\\u0e31\\u0e27\\u0e2b\\u0e19\\u0e32\",\n\"Italic\": \"\\u0e15\\u0e31\\u0e27\\u0e40\\u0e2d\\u0e35\\u0e22\\u0e07\",\n\"Underline\": \"\\u0e02\\u0e35\\u0e14\\u0e40\\u0e2a\\u0e49\\u0e19\\u0e43\\u0e15\\u0e49\",\n\"Strikethrough\": \"\\u0e02\\u0e35\\u0e14\\u0e04\\u0e23\\u0e48\\u0e2d\\u0e21\",\n\"Superscript\": \"\\u0e15\\u0e31\\u0e27\\u0e22\\u0e01\",\n\"Subscript\": \"\\u0e15\\u0e31\\u0e27\\u0e2b\\u0e49\\u0e2d\\u0e22\",\n\"Clear formatting\": \"\\u0e25\\u0e49\\u0e32\\u0e07\\u0e01\\u0e32\\u0e23\\u0e08\\u0e31\\u0e14\\u0e23\\u0e39\\u0e1b\\u0e41\\u0e1a\\u0e1a\",\n\"Align left\": \"\\u0e08\\u0e31\\u0e14\\u0e0a\\u0e34\\u0e14\\u0e0b\\u0e49\\u0e32\\u0e22\",\n\"Align center\": \"\\u0e08\\u0e31\\u0e14\\u0e01\\u0e36\\u0e48\\u0e07\\u0e01\\u0e25\\u0e32\\u0e07\",\n\"Align right\": \"\\u0e08\\u0e31\\u0e14\\u0e0a\\u0e34\\u0e14\\u0e02\\u0e27\\u0e32\",\n\"Justify\": \"\\u0e40\\u0e15\\u0e47\\u0e21\\u0e41\\u0e19\\u0e27\",\n\"Bullet list\": \"\\u0e23\\u0e32\\u0e22\\u0e01\\u0e32\\u0e23\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2b\\u0e31\\u0e27\\u0e02\\u0e49\\u0e2d\\u0e22\\u0e48\\u0e2d\\u0e22\",\n\"Numbered list\": \"\\u0e23\\u0e32\\u0e22\\u0e01\\u0e32\\u0e23\\u0e25\\u0e33\\u0e14\\u0e31\\u0e1a\\u0e40\\u0e25\\u0e02\",\n\"Decrease indent\": \"\\u0e25\\u0e14\\u0e01\\u0e32\\u0e23\\u0e40\\u0e22\\u0e37\\u0e49\\u0e2d\\u0e07\",\n\"Increase indent\": \"\\u0e40\\u0e1e\\u0e34\\u0e48\\u0e21\\u0e01\\u0e32\\u0e23\\u0e40\\u0e22\\u0e37\\u0e49\\u0e2d\\u0e07\",\n\"Close\": \"\\u0e1b\\u0e34\\u0e14\",\n\"Formats\": \"\\u0e23\\u0e39\\u0e1b\\u0e41\\u0e1a\\u0e1a\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u0e40\\u0e1a\\u0e23\\u0e32\\u0e27\\u0e4c\\u0e40\\u0e0b\\u0e2d\\u0e23\\u0e4c\\u0e02\\u0e2d\\u0e07\\u0e04\\u0e38\\u0e13\\u0e44\\u0e21\\u0e48\\u0e2a\\u0e19\\u0e31\\u0e1a\\u0e2a\\u0e19\\u0e38\\u0e19\\u0e01\\u0e32\\u0e23\\u0e40\\u0e02\\u0e49\\u0e32\\u0e16\\u0e36\\u0e07\\u0e42\\u0e14\\u0e22\\u0e15\\u0e23\\u0e07\\u0e44\\u0e1b\\u0e22\\u0e31\\u0e07\\u0e04\\u0e25\\u0e34\\u0e1b\\u0e1a\\u0e2d\\u0e23\\u0e4c\\u0e14 \\u0e01\\u0e23\\u0e38\\u0e13\\u0e32\\u0e43\\u0e0a\\u0e49\\u0e41\\u0e1b\\u0e49\\u0e19\\u0e1e\\u0e34\\u0e21\\u0e1e\\u0e4c\\u0e25\\u0e31\\u0e14 Ctrl+X\\/C\\/V \\u0e41\\u0e17\\u0e19\",\n\"Headers\": \"\\u0e2a\\u0e48\\u0e27\\u0e19\\u0e2b\\u0e31\\u0e27\",\n\"Header 1\": \"\\u0e2a\\u0e48\\u0e27\\u0e19\\u0e2b\\u0e31\\u0e27 1\",\n\"Header 2\": \"\\u0e2a\\u0e48\\u0e27\\u0e19\\u0e2b\\u0e31\\u0e27 2\",\n\"Header 3\": \"\\u0e2a\\u0e48\\u0e27\\u0e19\\u0e2b\\u0e31\\u0e27 3\",\n\"Header 4\": \"\\u0e2a\\u0e48\\u0e27\\u0e19\\u0e2b\\u0e31\\u0e27 4\",\n\"Header 5\": \"\\u0e2a\\u0e48\\u0e27\\u0e19\\u0e2b\\u0e31\\u0e27 5\",\n\"Header 6\": \"\\u0e2a\\u0e48\\u0e27\\u0e19\\u0e2b\\u0e31\\u0e27 6\",\n\"Headings\": \"\\u0e2b\\u0e31\\u0e27\\u0e40\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\",\n\"Heading 1\": \"\\u0e2b\\u0e31\\u0e27\\u0e40\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e17\\u0e35\\u0e48 1\",\n\"Heading 2\": \"\\u0e2b\\u0e31\\u0e27\\u0e40\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e17\\u0e35\\u0e48 2\",\n\"Heading 3\": \"\\u0e2b\\u0e31\\u0e27\\u0e40\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e17\\u0e35\\u0e48 3\",\n\"Heading 4\": \"\\u0e2b\\u0e31\\u0e27\\u0e40\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e17\\u0e35\\u0e48 4\",\n\"Heading 5\": \"\\u0e2b\\u0e31\\u0e27\\u0e40\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e17\\u0e35\\u0e48 5\",\n\"Heading 6\": \"\\u0e2b\\u0e31\\u0e27\\u0e40\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e17\\u0e35\\u0e48 6\",\n\"Preformatted\": \"\\u0e1f\\u0e2d\\u0e23\\u0e4c\\u0e41\\u0e21\\u0e15\\u0e44\\u0e27\\u0e49\\u0e01\\u0e48\\u0e2d\\u0e19\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"\\u0e23\\u0e2b\\u0e31\\u0e2a\",\n\"Paragraph\": \"\\u0e22\\u0e48\\u0e2d\\u0e2b\\u0e19\\u0e49\\u0e32\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"\\u0e41\\u0e1a\\u0e1a\\u0e2d\\u0e34\\u0e19\\u0e44\\u0e25\\u0e19\\u0e4c\",\n\"Blocks\": \"\\u0e1a\\u0e25\\u0e4a\\u0e2d\\u0e04\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u0e01\\u0e32\\u0e23\\u0e27\\u0e32\\u0e07\\u0e15\\u0e2d\\u0e19\\u0e19\\u0e35\\u0e49\\u0e2d\\u0e22\\u0e39\\u0e48\\u0e43\\u0e19\\u0e42\\u0e2b\\u0e21\\u0e14\\u0e02\\u0e49\\u0e2d\\u0e04\\u0e27\\u0e32\\u0e21\\u0e18\\u0e23\\u0e23\\u0e21\\u0e14\\u0e32 \\u0e40\\u0e19\\u0e37\\u0e49\\u0e2d\\u0e2b\\u0e32\\u0e08\\u0e30\\u0e16\\u0e39\\u0e01\\u0e27\\u0e32\\u0e07\\u0e40\\u0e1b\\u0e47\\u0e19\\u0e02\\u0e49\\u0e2d\\u0e04\\u0e27\\u0e32\\u0e21\\u0e18\\u0e23\\u0e23\\u0e21\\u0e14\\u0e32\\u0e08\\u0e19\\u0e01\\u0e27\\u0e48\\u0e32\\u0e04\\u0e38\\u0e13\\u0e08\\u0e30\\u0e1b\\u0e34\\u0e14\\u0e15\\u0e31\\u0e27\\u0e40\\u0e25\\u0e37\\u0e2d\\u0e01\\u0e19\\u0e35\\u0e49\",\n\"Fonts\": \"\\u0e41\\u0e1a\\u0e1a\\u0e2d\\u0e31\\u0e01\\u0e29\\u0e23\",\n\"Font Sizes\": \"\\u0e02\\u0e19\\u0e32\\u0e14\\u0e41\\u0e1a\\u0e1a\\u0e2d\\u0e31\\u0e01\\u0e29\\u0e23\",\n\"Class\": \"\\u0e0a\\u0e31\\u0e49\\u0e19\",\n\"Browse for an image\": \"\\u0e40\\u0e23\\u0e35\\u0e22\\u0e01\\u0e14\\u0e39\\u0e23\\u0e39\\u0e1b\\u0e20\\u0e32\\u0e1e\",\n\"OR\": \"OR\",\n\"Drop an image here\": \"\\u0e27\\u0e32\\u0e07\\u0e23\\u0e39\\u0e1b\\u0e20\\u0e32\\u0e1e\\u0e17\\u0e35\\u0e48\\u0e19\\u0e35\\u0e48\",\n\"Upload\": \"\\u0e2d\\u0e31\\u0e1b\\u0e42\\u0e2b\\u0e25\\u0e14\",\n\"Block\": \"\\u0e1a\\u0e25\\u0e47\\u0e2d\\u0e01\",\n\"Align\": \"Align\",\n\"Default\": \"\\u0e04\\u0e48\\u0e32\\u0e40\\u0e23\\u0e34\\u0e48\\u0e21\\u0e15\\u0e49\\u0e19\",\n\"Circle\": \"\\u0e27\\u0e07\\u0e01\\u0e25\\u0e21\",\n\"Disc\": \"\\u0e14\\u0e34\\u0e2a\\u0e01\\u0e4c\",\n\"Square\": \"\\u0e08\\u0e31\\u0e15\\u0e38\\u0e23\\u0e31\\u0e2a\",\n\"Lower Alpha\": \"\\u0e2d\\u0e31\\u0e25\\u0e1f\\u0e32\\u0e17\\u0e35\\u0e48\\u0e15\\u0e48\\u0e33\\u0e01\\u0e27\\u0e48\\u0e32\",\n\"Lower Greek\": \"\\u0e01\\u0e23\\u0e35\\u0e01\\u0e17\\u0e35\\u0e48\\u0e15\\u0e48\\u0e33\\u0e01\\u0e27\\u0e48\\u0e32\",\n\"Lower Roman\": \"\\u0e42\\u0e23\\u0e21\\u0e31\\u0e19\\u0e17\\u0e35\\u0e48\\u0e15\\u0e48\\u0e33\\u0e01\\u0e27\\u0e48\\u0e32\",\n\"Upper Alpha\": \"\\u0e2d\\u0e31\\u0e25\\u0e1f\\u0e32\\u0e17\\u0e35\\u0e48\\u0e2a\\u0e39\\u0e07\\u0e01\\u0e27\\u0e48\\u0e32\",\n\"Upper Roman\": \"\\u0e42\\u0e23\\u0e21\\u0e31\\u0e19\\u0e17\\u0e35\\u0e48\\u0e2a\\u0e39\\u0e07\\u0e01\\u0e27\\u0e48\\u0e32\",\n\"Anchor...\": \"\\u0e08\\u0e38\\u0e14\\u0e22\\u0e36\\u0e14...\",\n\"Name\": \"\\u0e0a\\u0e37\\u0e48\\u0e2d\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id \\u0e04\\u0e27\\u0e23\\u0e08\\u0e30\\u0e02\\u0e36\\u0e49\\u0e19\\u0e15\\u0e49\\u0e19\\u0e14\\u0e49\\u0e27\\u0e22\\u0e15\\u0e31\\u0e27\\u0e2d\\u0e31\\u0e01\\u0e29\\u0e23 \\u0e15\\u0e32\\u0e21\\u0e14\\u0e49\\u0e27\\u0e22\\u0e15\\u0e31\\u0e27\\u0e2d\\u0e31\\u0e01\\u0e29\\u0e23 \\u0e15\\u0e31\\u0e27\\u0e40\\u0e25\\u0e02 \\u0e02\\u0e35\\u0e14\\u0e01\\u0e25\\u0e32\\u0e07 \\u0e08\\u0e38\\u0e14 \\u0e2d\\u0e31\\u0e12\\u0e20\\u0e32\\u0e04 \\u0e2b\\u0e23\\u0e37\\u0e2d \\u0e02\\u0e35\\u0e14\\u0e25\\u0e48\\u0e32\\u0e07\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u0e04\\u0e38\\u0e13\\u0e21\\u0e35\\u0e01\\u0e32\\u0e23\\u0e40\\u0e1b\\u0e25\\u0e35\\u0e48\\u0e22\\u0e19\\u0e41\\u0e1b\\u0e25\\u0e07\\u0e17\\u0e35\\u0e48\\u0e44\\u0e21\\u0e48\\u0e44\\u0e14\\u0e49\\u0e1a\\u0e31\\u0e19\\u0e17\\u0e36\\u0e01 \\u0e04\\u0e38\\u0e13\\u0e15\\u0e49\\u0e2d\\u0e07\\u0e01\\u0e32\\u0e23\\u0e17\\u0e35\\u0e48\\u0e08\\u0e30\\u0e2d\\u0e2d\\u0e01\\u0e2b\\u0e23\\u0e37\\u0e2d\\u0e44\\u0e21\\u0e48?\",\n\"Restore last draft\": \"\\u0e04\\u0e37\\u0e19\\u0e04\\u0e48\\u0e32\\u0e41\\u0e1a\\u0e1a\\u0e23\\u0e48\\u0e32\\u0e07\\u0e25\\u0e48\\u0e32\\u0e2a\\u0e38\\u0e14\",\n\"Special character...\": \"\\u0e2d\\u0e31\\u0e01\\u0e02\\u0e23\\u0e30\\u0e1e\\u0e34\\u0e40\\u0e28\\u0e29...\",\n\"Source code\": \"\\u0e42\\u0e04\\u0e49\\u0e14\\u0e15\\u0e49\\u0e19\\u0e09\\u0e1a\\u0e31\\u0e1a\",\n\"Insert\\/Edit code sample\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\/\\u0e41\\u0e01\\u0e49\\u0e44\\u0e02\\u0e15\\u0e31\\u0e27\\u0e2d\\u0e22\\u0e48\\u0e32\\u0e07\\u0e42\\u0e04\\u0e49\\u0e14\",\n\"Language\": \"\\u0e20\\u0e32\\u0e29\\u0e32\",\n\"Code sample...\": \"\\u0e15\\u0e31\\u0e27\\u0e2d\\u0e22\\u0e48\\u0e32\\u0e07\\u0e42\\u0e04\\u0e49\\u0e14...\",\n\"Color Picker\": \"\\u0e15\\u0e31\\u0e27\\u0e40\\u0e25\\u0e37\\u0e2d\\u0e01\\u0e2a\\u0e35\",\n\"R\": \"\\u0e41\\u0e14\\u0e07\",\n\"G\": \"\\u0e40\\u0e02\\u0e35\\u0e22\\u0e27\",\n\"B\": \"\\u0e19\\u0e49\\u0e33\\u0e40\\u0e07\\u0e34\\u0e19\",\n\"Left to right\": \"\\u0e0b\\u0e49\\u0e32\\u0e22\\u0e44\\u0e1b\\u0e02\\u0e27\\u0e32\",\n\"Right to left\": \"\\u0e02\\u0e27\\u0e32\\u0e44\\u0e1b\\u0e0b\\u0e49\\u0e32\\u0e22\",\n\"Emoticons...\": \"\\u0e2d\\u0e35\\u0e42\\u0e21\\u0e15\\u0e34\\u0e04\\u0e2d\\u0e19...\",\n\"Metadata and Document Properties\": \"\\u0e40\\u0e21\\u0e15\\u0e32\\u0e14\\u0e32\\u0e15\\u0e49\\u0e32\\u0e41\\u0e25\\u0e30\\u0e04\\u0e38\\u0e13\\u0e2a\\u0e21\\u0e1a\\u0e31\\u0e15\\u0e34\\u0e02\\u0e2d\\u0e07\\u0e40\\u0e2d\\u0e01\\u0e2a\\u0e32\\u0e23\",\n\"Title\": \"\\u0e0a\\u0e37\\u0e48\\u0e2d\\u0e40\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\",\n\"Keywords\": \"\\u0e04\\u0e33\\u0e2a\\u0e33\\u0e04\\u0e31\\u0e0d\",\n\"Description\": \"\\u0e04\\u0e33\\u0e2d\\u0e18\\u0e34\\u0e1a\\u0e32\\u0e22\",\n\"Robots\": \"\\u0e2b\\u0e38\\u0e48\\u0e19\\u0e22\\u0e19\\u0e15\\u0e4c\",\n\"Author\": \"\\u0e1c\\u0e39\\u0e49\\u0e40\\u0e02\\u0e35\\u0e22\\u0e19\",\n\"Encoding\": \"\\u0e01\\u0e32\\u0e23\\u0e40\\u0e02\\u0e49\\u0e32\\u0e23\\u0e2b\\u0e31\\u0e2a\",\n\"Fullscreen\": \"\\u0e40\\u0e15\\u0e47\\u0e21\\u0e08\\u0e2d\",\n\"Action\": \"\\u0e01\\u0e32\\u0e23\\u0e01\\u0e23\\u0e30\\u0e17\\u0e33\",\n\"Shortcut\": \"\\u0e17\\u0e32\\u0e07\\u0e25\\u0e31\\u0e14\",\n\"Help\": \"\\u0e0a\\u0e48\\u0e27\\u0e22\\u0e40\\u0e2b\\u0e25\\u0e37\\u0e2d\",\n\"Address\": \"\\u0e17\\u0e35\\u0e48\\u0e2d\\u0e22\\u0e39\\u0e48\",\n\"Focus to menubar\": \"\\u0e42\\u0e1f\\u0e01\\u0e31\\u0e2a\\u0e44\\u0e1b\\u0e17\\u0e35\\u0e48\\u0e40\\u0e21\\u0e19\\u0e39\\u0e1a\\u0e32\\u0e23\\u0e4c\",\n\"Focus to toolbar\": \"\\u0e42\\u0e1f\\u0e01\\u0e31\\u0e2a\\u0e44\\u0e1b\\u0e17\\u0e35\\u0e48\\u0e41\\u0e16\\u0e1a\\u0e40\\u0e04\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e21\\u0e37\\u0e2d\",\n\"Focus to element path\": \"\\u0e42\\u0e1f\\u0e01\\u0e31\\u0e2a\\u0e44\\u0e1b\\u0e17\\u0e35\\u0e48\\u0e40\\u0e2a\\u0e49\\u0e19\\u0e17\\u0e32\\u0e07\\u0e02\\u0e2d\\u0e07\\u0e2d\\u0e07\\u0e04\\u0e4c\\u0e1b\\u0e23\\u0e30\\u0e01\\u0e2d\\u0e1a\",\n\"Focus to contextual toolbar\": \"\\u0e42\\u0e1f\\u0e01\\u0e31\\u0e2a\\u0e44\\u0e1b\\u0e17\\u0e35\\u0e48\\u0e41\\u0e16\\u0e1a\\u0e40\\u0e04\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e21\\u0e37\\u0e2d\\u0e15\\u0e32\\u0e21\\u0e1a\\u0e23\\u0e34\\u0e1a\\u0e17\",\n\"Insert link (if link plugin activated)\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\u0e25\\u0e34\\u0e07\\u0e01\\u0e4c (\\u0e2b\\u0e32\\u0e01\\u0e40\\u0e1b\\u0e34\\u0e14\\u0e43\\u0e0a\\u0e49\\u0e07\\u0e32\\u0e19\\u0e1b\\u0e25\\u0e31\\u0e4a\\u0e01\\u0e2d\\u0e34\\u0e19\\u0e25\\u0e34\\u0e07\\u0e01\\u0e4c)\",\n\"Save (if save plugin activated)\": \"\\u0e1a\\u0e31\\u0e19\\u0e17\\u0e36\\u0e01 (\\u0e2b\\u0e32\\u0e01\\u0e40\\u0e1b\\u0e34\\u0e14\\u0e43\\u0e0a\\u0e49\\u0e07\\u0e32\\u0e19\\u0e1b\\u0e25\\u0e31\\u0e4a\\u0e01\\u0e2d\\u0e34\\u0e19\\u0e1a\\u0e31\\u0e19\\u0e17\\u0e36\\u0e01)\",\n\"Find (if searchreplace plugin activated)\": \"\\u0e04\\u0e49\\u0e19\\u0e2b\\u0e32 (\\u0e2b\\u0e32\\u0e01\\u0e40\\u0e1b\\u0e34\\u0e14\\u0e43\\u0e0a\\u0e49\\u0e07\\u0e32\\u0e19\\u0e1b\\u0e25\\u0e31\\u0e4a\\u0e01\\u0e2d\\u0e34\\u0e19 searchreplace)\",\n\"Plugins installed ({0}):\": \"\\u0e1b\\u0e25\\u0e31\\u0e4a\\u0e01\\u0e2d\\u0e34\\u0e19\\u0e17\\u0e35\\u0e48\\u0e15\\u0e34\\u0e14\\u0e15\\u0e31\\u0e49\\u0e07\\u0e41\\u0e25\\u0e49\\u0e27 ({0}):\",\n\"Premium plugins:\": \"\\u0e1b\\u0e25\\u0e31\\u0e4a\\u0e01\\u0e2d\\u0e34\\u0e19\\u0e1e\\u0e23\\u0e35\\u0e40\\u0e21\\u0e35\\u0e22\\u0e21:\",\n\"Learn more...\": \"\\u0e40\\u0e23\\u0e35\\u0e22\\u0e19\\u0e23\\u0e39\\u0e49\\u0e40\\u0e1e\\u0e34\\u0e48\\u0e21\\u0e40\\u0e15\\u0e34\\u0e21...\",\n\"You are using {0}\": \"\\u0e04\\u0e38\\u0e13\\u0e01\\u0e33\\u0e25\\u0e31\\u0e07\\u0e43\\u0e0a\\u0e49 {0}\",\n\"Plugins\": \"\\u0e1b\\u0e25\\u0e31\\u0e4a\\u0e01\\u0e2d\\u0e34\\u0e19\",\n\"Handy Shortcuts\": \"\\u0e17\\u0e32\\u0e07\\u0e25\\u0e31\\u0e14\\u0e14\\u0e49\\u0e27\\u0e22\\u0e21\\u0e37\\u0e2d\",\n\"Horizontal line\": \"\\u0e40\\u0e2a\\u0e49\\u0e19\\u0e41\\u0e19\\u0e27\\u0e19\\u0e2d\\u0e19\",\n\"Insert\\/edit image\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\/\\u0e41\\u0e01\\u0e49\\u0e44\\u0e02\\u0e23\\u0e39\\u0e1b\",\n\"Image description\": \"\\u0e04\\u0e33\\u0e2d\\u0e18\\u0e34\\u0e1a\\u0e32\\u0e22\\u0e23\\u0e39\\u0e1b\",\n\"Source\": \"\\u0e41\\u0e2b\\u0e25\\u0e48\\u0e07\\u0e17\\u0e35\\u0e48\\u0e21\\u0e32\",\n\"Dimensions\": \"\\u0e02\\u0e19\\u0e32\\u0e14\",\n\"Constrain proportions\": \"\\u0e08\\u0e33\\u0e01\\u0e31\\u0e14\\u0e2a\\u0e31\\u0e14\\u0e2a\\u0e48\\u0e27\\u0e19\",\n\"General\": \"\\u0e17\\u0e31\\u0e48\\u0e27\\u0e44\\u0e1b\",\n\"Advanced\": \"\\u0e02\\u0e31\\u0e49\\u0e19\\u0e2a\\u0e39\\u0e07\",\n\"Style\": \"\\u0e23\\u0e39\\u0e1b\\u0e41\\u0e1a\\u0e1a\",\n\"Vertical space\": \"\\u0e0a\\u0e48\\u0e2d\\u0e07\\u0e27\\u0e48\\u0e32\\u0e07\\u0e41\\u0e19\\u0e27\\u0e15\\u0e31\\u0e49\\u0e07\",\n\"Horizontal space\": \"\\u0e0a\\u0e48\\u0e2d\\u0e07\\u0e27\\u0e48\\u0e32\\u0e07\\u0e41\\u0e19\\u0e27\\u0e19\\u0e2d\\u0e19\",\n\"Border\": \"\\u0e40\\u0e2a\\u0e49\\u0e19\\u0e02\\u0e2d\\u0e1a\",\n\"Insert image\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\u0e23\\u0e39\\u0e1b\\u0e20\\u0e32\\u0e1e\",\n\"Image...\": \"\\u0e23\\u0e39\\u0e1b\\u0e20\\u0e32\\u0e1e...\",\n\"Image list\": \"\\u0e23\\u0e32\\u0e22\\u0e01\\u0e32\\u0e23\\u0e23\\u0e39\\u0e1b\\u0e20\\u0e32\\u0e1e\",\n\"Rotate counterclockwise\": \"\\u0e2b\\u0e21\\u0e38\\u0e19\\u0e17\\u0e27\\u0e19\\u0e40\\u0e02\\u0e47\\u0e21\\u0e19\\u0e32\\u0e2c\\u0e34\\u0e01\\u0e32\",\n\"Rotate clockwise\": \"\\u0e2b\\u0e21\\u0e38\\u0e19\\u0e15\\u0e32\\u0e21\\u0e40\\u0e02\\u0e47\\u0e21\\u0e19\\u0e32\\u0e2c\\u0e34\\u0e01\\u0e32\",\n\"Flip vertically\": \"\\u0e1e\\u0e25\\u0e34\\u0e01\\u0e15\\u0e32\\u0e21\\u0e41\\u0e19\\u0e27\\u0e15\\u0e31\\u0e49\\u0e07\",\n\"Flip horizontally\": \"\\u0e1e\\u0e25\\u0e34\\u0e01\\u0e15\\u0e32\\u0e21\\u0e41\\u0e19\\u0e27\\u0e19\\u0e2d\\u0e19\",\n\"Edit image\": \"\\u0e41\\u0e01\\u0e49\\u0e44\\u0e02\\u0e23\\u0e39\\u0e1b\",\n\"Image options\": \"\\u0e15\\u0e31\\u0e27\\u0e40\\u0e25\\u0e37\\u0e2d\\u0e01\\u0e23\\u0e39\\u0e1b\\u0e20\\u0e32\\u0e1e\",\n\"Zoom in\": \"\\u0e02\\u0e22\\u0e32\\u0e22\\u0e40\\u0e02\\u0e49\\u0e32\",\n\"Zoom out\": \"\\u0e22\\u0e48\\u0e2d\\u0e2d\\u0e2d\\u0e01\",\n\"Crop\": \"\\u0e04\\u0e23\\u0e2d\\u0e1b\\u0e15\\u0e31\\u0e14\",\n\"Resize\": \"\\u0e1b\\u0e23\\u0e31\\u0e1a\\u0e02\\u0e19\\u0e32\\u0e14\",\n\"Orientation\": \"\\u0e01\\u0e32\\u0e23\\u0e08\\u0e31\\u0e14\\u0e27\\u0e32\\u0e07\",\n\"Brightness\": \"\\u0e04\\u0e27\\u0e32\\u0e21\\u0e2a\\u0e27\\u0e48\\u0e32\\u0e07\",\n\"Sharpen\": \"\\u0e04\\u0e27\\u0e32\\u0e21\\u0e04\\u0e21\",\n\"Contrast\": \"\\u0e04\\u0e27\\u0e32\\u0e21\\u0e40\\u0e1b\\u0e23\\u0e35\\u0e22\\u0e1a\\u0e15\\u0e48\\u0e32\\u0e07\",\n\"Color levels\": \"\\u0e23\\u0e30\\u0e14\\u0e31\\u0e1a\\u0e2a\\u0e35\",\n\"Gamma\": \"\\u0e41\\u0e01\\u0e21\\u0e21\\u0e32\",\n\"Invert\": \"\\u0e22\\u0e49\\u0e2d\\u0e19\\u0e01\\u0e25\\u0e31\\u0e1a\",\n\"Apply\": \"\\u0e19\\u0e33\\u0e44\\u0e1b\\u0e43\\u0e0a\\u0e49\",\n\"Back\": \"\\u0e01\\u0e25\\u0e31\\u0e1a\",\n\"Insert date\\/time\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\u0e27\\u0e31\\u0e19\\u0e17\\u0e35\\u0e48\\/\\u0e40\\u0e27\\u0e25\\u0e32\",\n\"Date\\/time\": \"\\u0e27\\u0e31\\u0e19\\u0e17\\u0e35\\u0e48\\/\\u0e40\\u0e27\\u0e25\\u0e32\",\n\"Insert\\/Edit Link\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\/\\u0e41\\u0e01\\u0e49\\u0e44\\u0e02\\u0e25\\u0e34\\u0e07\\u0e01\\u0e4c\",\n\"Insert\\/edit link\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\/\\u0e41\\u0e01\\u0e49\\u0e44\\u0e02\\u0e25\\u0e34\\u0e07\\u0e01\\u0e4c\",\n\"Text to display\": \"\\u0e02\\u0e49\\u0e2d\\u0e04\\u0e27\\u0e32\\u0e21\\u0e17\\u0e35\\u0e48\\u0e08\\u0e30\\u0e41\\u0e2a\\u0e14\\u0e07\",\n\"Url\": \"URL\",\n\"Open link in...\": \"\\u0e40\\u0e1b\\u0e34\\u0e14\\u0e25\\u0e34\\u0e07\\u0e01\\u0e4c\\u0e43\\u0e19...\",\n\"Current window\": \"\\u0e2b\\u0e19\\u0e49\\u0e32\\u0e15\\u0e48\\u0e32\\u0e07\\u0e1b\\u0e31\\u0e08\\u0e08\\u0e38\\u0e1a\\u0e31\\u0e19\",\n\"None\": \"\\u0e44\\u0e21\\u0e48\\u0e21\\u0e35\",\n\"New window\": \"\\u0e40\\u0e1b\\u0e34\\u0e14\\u0e2b\\u0e19\\u0e49\\u0e32\\u0e15\\u0e48\\u0e32\\u0e07\\u0e43\\u0e2b\\u0e21\\u0e48\",\n\"Remove link\": \"\\u0e40\\u0e2d\\u0e32\\u0e25\\u0e34\\u0e07\\u0e01\\u0e4c\\u0e2d\\u0e2d\\u0e01\",\n\"Anchors\": \"\\u0e08\\u0e38\\u0e14\\u0e22\\u0e36\\u0e14\",\n\"Link...\": \"\\u0e25\\u0e34\\u0e07\\u0e01\\u0e4c...\",\n\"Paste or type a link\": \"\\u0e27\\u0e32\\u0e07\\u0e2b\\u0e23\\u0e37\\u0e2d\\u0e1b\\u0e49\\u0e2d\\u0e19\\u0e25\\u0e34\\u0e07\\u0e01\\u0e4c\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"URL \\u0e17\\u0e35\\u0e48\\u0e04\\u0e38\\u0e13\\u0e23\\u0e30\\u0e1a\\u0e38\\u0e14\\u0e39\\u0e40\\u0e2b\\u0e21\\u0e37\\u0e2d\\u0e19\\u0e27\\u0e48\\u0e32\\u0e40\\u0e1b\\u0e47\\u0e19\\u0e2d\\u0e35\\u0e40\\u0e21\\u0e25\\u0e41\\u0e2d\\u0e14\\u0e40\\u0e14\\u0e23\\u0e2a \\u0e04\\u0e38\\u0e13\\u0e15\\u0e49\\u0e2d\\u0e07\\u0e01\\u0e32\\u0e23\\u0e43\\u0e2a\\u0e48 mailto: \\u0e19\\u0e33\\u0e2b\\u0e19\\u0e49\\u0e32\\u0e2b\\u0e23\\u0e37\\u0e2d\\u0e44\\u0e21\\u0e48\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"URL \\u0e17\\u0e35\\u0e48\\u0e04\\u0e38\\u0e13\\u0e23\\u0e30\\u0e1a\\u0e38\\u0e14\\u0e39\\u0e40\\u0e2b\\u0e21\\u0e37\\u0e2d\\u0e19\\u0e27\\u0e48\\u0e32\\u0e40\\u0e1b\\u0e47\\u0e19\\u0e25\\u0e34\\u0e07\\u0e01\\u0e4c\\u0e20\\u0e32\\u0e22\\u0e19\\u0e2d\\u0e01 \\u0e04\\u0e38\\u0e13\\u0e15\\u0e49\\u0e2d\\u0e07\\u0e01\\u0e32\\u0e23\\u0e43\\u0e2a\\u0e48 http:\\/\\/ \\u0e19\\u0e33\\u0e2b\\u0e19\\u0e49\\u0e32\\u0e2b\\u0e23\\u0e37\\u0e2d\\u0e44\\u0e21\\u0e48\",\n\"Link list\": \"\\u0e23\\u0e32\\u0e22\\u0e01\\u0e32\\u0e23\\u0e25\\u0e34\\u0e07\\u0e01\\u0e4c\",\n\"Insert video\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\u0e27\\u0e34\\u0e14\\u0e35\\u0e42\\u0e2d\",\n\"Insert\\/edit video\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\/\\u0e41\\u0e01\\u0e49\\u0e44\\u0e02\\u0e27\\u0e34\\u0e14\\u0e35\\u0e42\\u0e2d\",\n\"Insert\\/edit media\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\/\\u0e41\\u0e01\\u0e49\\u0e44\\u0e02\\u0e2a\\u0e37\\u0e48\\u0e2d\",\n\"Alternative source\": \"\\u0e41\\u0e2b\\u0e25\\u0e48\\u0e07\\u0e17\\u0e35\\u0e48\\u0e21\\u0e32\\u0e2a\\u0e33\\u0e23\\u0e2d\\u0e07\",\n\"Alternative source URL\": \"URL \\u0e41\\u0e2b\\u0e25\\u0e48\\u0e07\\u0e17\\u0e35\\u0e48\\u0e21\\u0e32\\u0e2a\\u0e33\\u0e23\\u0e2d\\u0e07\",\n\"Media poster (Image URL)\": \"\\u0e42\\u0e1b\\u0e2a\\u0e40\\u0e15\\u0e2d\\u0e23\\u0e4c\\u0e21\\u0e35\\u0e40\\u0e14\\u0e35\\u0e22 (URL \\u0e23\\u0e39\\u0e1b\\u0e20\\u0e32\\u0e1e)\",\n\"Paste your embed code below:\": \"\\u0e27\\u0e32\\u0e07\\u0e42\\u0e04\\u0e49\\u0e14\\u0e1d\\u0e31\\u0e07\\u0e15\\u0e31\\u0e27\\u0e02\\u0e2d\\u0e07\\u0e04\\u0e38\\u0e13\\u0e14\\u0e49\\u0e32\\u0e19\\u0e25\\u0e48\\u0e32\\u0e07:\",\n\"Embed\": \"\\u0e1d\\u0e31\\u0e07\",\n\"Media...\": \"\\u0e21\\u0e35\\u0e40\\u0e14\\u0e35\\u0e22...\",\n\"Nonbreaking space\": \"\\u0e0a\\u0e48\\u0e2d\\u0e07\\u0e27\\u0e48\\u0e32\\u0e07\\u0e44\\u0e21\\u0e48\\u0e41\\u0e22\\u0e01\",\n\"Page break\": \"\\u0e15\\u0e31\\u0e27\\u0e41\\u0e1a\\u0e48\\u0e07\\u0e2b\\u0e19\\u0e49\\u0e32\",\n\"Paste as text\": \"\\u0e27\\u0e32\\u0e07\\u0e40\\u0e1b\\u0e47\\u0e19\\u0e02\\u0e49\\u0e2d\\u0e04\\u0e27\\u0e32\\u0e21\",\n\"Preview\": \"\\u0e41\\u0e2a\\u0e14\\u0e07\\u0e15\\u0e31\\u0e27\\u0e2d\\u0e22\\u0e48\\u0e32\\u0e07\",\n\"Print...\": \"\\u0e1e\\u0e34\\u0e21\\u0e1e\\u0e4c...\",\n\"Save\": \"\\u0e1a\\u0e31\\u0e19\\u0e17\\u0e36\\u0e01\",\n\"Find\": \"\\u0e04\\u0e49\\u0e19\\u0e2b\\u0e32\",\n\"Replace with\": \"\\u0e41\\u0e17\\u0e19\\u0e17\\u0e35\\u0e48\\u0e14\\u0e49\\u0e27\\u0e22\",\n\"Replace\": \"\\u0e41\\u0e17\\u0e19\\u0e17\\u0e35\\u0e48\",\n\"Replace all\": \"\\u0e41\\u0e17\\u0e19\\u0e17\\u0e35\\u0e48\\u0e17\\u0e31\\u0e49\\u0e07\\u0e2b\\u0e21\\u0e14\",\n\"Previous\": \"\\u0e01\\u0e48\\u0e2d\\u0e19\\u0e2b\\u0e19\\u0e49\\u0e32\\u0e19\\u0e35\\u0e49\",\n\"Next\": \"\\u0e16\\u0e31\\u0e14\\u0e44\\u0e1b\",\n\"Find and replace...\": \"\\u0e04\\u0e49\\u0e19\\u0e2b\\u0e32\\u0e41\\u0e25\\u0e30\\u0e41\\u0e17\\u0e19\\u0e17\\u0e35\\u0e48...\",\n\"Could not find the specified string.\": \"\\u0e44\\u0e21\\u0e48\\u0e1e\\u0e1a\\u0e2a\\u0e15\\u0e23\\u0e34\\u0e07\\u0e17\\u0e35\\u0e48\\u0e23\\u0e30\\u0e1a\\u0e38\",\n\"Match case\": \"\\u0e15\\u0e23\\u0e07\\u0e15\\u0e32\\u0e21\\u0e15\\u0e31\\u0e27\\u0e1e\\u0e34\\u0e21\\u0e1e\\u0e4c\\u0e43\\u0e2b\\u0e0d\\u0e48-\\u0e40\\u0e25\\u0e47\\u0e01\",\n\"Find whole words only\": \"\\u0e04\\u0e49\\u0e19\\u0e2b\\u0e32\\u0e17\\u0e31\\u0e49\\u0e07\\u0e04\\u0e33\\u0e40\\u0e17\\u0e48\\u0e32\\u0e19\\u0e31\\u0e49\\u0e19\",\n\"Spell check\": \"\\u0e15\\u0e23\\u0e27\\u0e08\\u0e2a\\u0e2d\\u0e1a\\u0e04\\u0e33\\u0e1c\\u0e34\\u0e14\",\n\"Ignore\": \"\\u0e25\\u0e30\\u0e40\\u0e27\\u0e49\\u0e19\",\n\"Ignore all\": \"\\u0e25\\u0e30\\u0e40\\u0e27\\u0e49\\u0e19\\u0e17\\u0e31\\u0e49\\u0e07\\u0e2b\\u0e21\\u0e14\",\n\"Finish\": \"\\u0e40\\u0e2a\\u0e23\\u0e47\\u0e08\\u0e2a\\u0e34\\u0e49\\u0e19\",\n\"Add to Dictionary\": \"\\u0e40\\u0e1e\\u0e34\\u0e48\\u0e21\\u0e43\\u0e19\\u0e1e\\u0e08\\u0e19\\u0e32\\u0e19\\u0e38\\u0e01\\u0e23\\u0e21\",\n\"Insert table\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\u0e15\\u0e32\\u0e23\\u0e32\\u0e07\",\n\"Table properties\": \"\\u0e04\\u0e38\\u0e13\\u0e2a\\u0e21\\u0e1a\\u0e31\\u0e15\\u0e34\\u0e02\\u0e2d\\u0e07\\u0e15\\u0e32\\u0e23\\u0e32\\u0e07\",\n\"Delete table\": \"\\u0e25\\u0e1a\\u0e15\\u0e32\\u0e23\\u0e32\\u0e07\",\n\"Cell\": \"\\u0e40\\u0e0b\\u0e25\\u0e25\\u0e4c\",\n\"Row\": \"\\u0e41\\u0e16\\u0e27\",\n\"Column\": \"\\u0e04\\u0e2d\\u0e25\\u0e31\\u0e21\\u0e19\\u0e4c\",\n\"Cell properties\": \"\\u0e04\\u0e38\\u0e13\\u0e2a\\u0e21\\u0e1a\\u0e31\\u0e15\\u0e34\\u0e02\\u0e2d\\u0e07\\u0e40\\u0e0b\\u0e25\\u0e25\\u0e4c\",\n\"Merge cells\": \"\\u0e1c\\u0e2a\\u0e32\\u0e19\\u0e40\\u0e0b\\u0e25\\u0e25\\u0e4c\",\n\"Split cell\": \"\\u0e41\\u0e22\\u0e01\\u0e40\\u0e0b\\u0e25\\u0e25\\u0e4c\",\n\"Insert row before\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\u0e41\\u0e16\\u0e27\\u0e14\\u0e49\\u0e32\\u0e19\\u0e1a\\u0e19\",\n\"Insert row after\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\u0e41\\u0e16\\u0e27\\u0e14\\u0e49\\u0e32\\u0e19\\u0e25\\u0e48\\u0e32\\u0e07\",\n\"Delete row\": \"\\u0e25\\u0e1a\\u0e41\\u0e16\\u0e27\",\n\"Row properties\": \"\\u0e04\\u0e38\\u0e13\\u0e2a\\u0e21\\u0e1a\\u0e31\\u0e15\\u0e34\\u0e02\\u0e2d\\u0e07\\u0e41\\u0e16\\u0e27\",\n\"Cut row\": \"\\u0e15\\u0e31\\u0e14\\u0e41\\u0e16\\u0e27\",\n\"Copy row\": \"\\u0e04\\u0e31\\u0e14\\u0e25\\u0e2d\\u0e01\\u0e41\\u0e16\\u0e27\",\n\"Paste row before\": \"\\u0e27\\u0e32\\u0e07\\u0e41\\u0e16\\u0e27\\u0e14\\u0e49\\u0e32\\u0e19\\u0e1a\\u0e19\",\n\"Paste row after\": \"\\u0e27\\u0e32\\u0e07\\u0e41\\u0e16\\u0e27\\u0e14\\u0e49\\u0e32\\u0e19\\u0e25\\u0e48\\u0e32\\u0e07\",\n\"Insert column before\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\u0e04\\u0e2d\\u0e25\\u0e31\\u0e21\\u0e19\\u0e4c\\u0e02\\u0e49\\u0e32\\u0e07\\u0e2b\\u0e19\\u0e49\\u0e32\",\n\"Insert column after\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\u0e04\\u0e2d\\u0e25\\u0e31\\u0e21\\u0e19\\u0e4c\\u0e02\\u0e49\\u0e32\\u0e07\\u0e2b\\u0e25\\u0e31\\u0e07\",\n\"Delete column\": \"\\u0e25\\u0e1a\\u0e04\\u0e2d\\u0e25\\u0e31\\u0e21\\u0e19\\u0e4c\",\n\"Cols\": \"\\u0e04\\u0e2d\\u0e25\\u0e31\\u0e21\\u0e19\\u0e4c\",\n\"Rows\": \"\\u0e41\\u0e16\\u0e27\",\n\"Width\": \"\\u0e04\\u0e27\\u0e32\\u0e21\\u0e01\\u0e27\\u0e49\\u0e32\\u0e07\",\n\"Height\": \"\\u0e04\\u0e27\\u0e32\\u0e21\\u0e2a\\u0e39\\u0e07\",\n\"Cell spacing\": \"\\u0e0a\\u0e48\\u0e2d\\u0e07\\u0e27\\u0e48\\u0e32\\u0e07\\u0e23\\u0e30\\u0e2b\\u0e27\\u0e48\\u0e32\\u0e07\\u0e40\\u0e0b\\u0e25\\u0e25\\u0e4c\",\n\"Cell padding\": \"\\u0e0a\\u0e48\\u0e2d\\u0e07\\u0e27\\u0e48\\u0e32\\u0e07\\u0e20\\u0e32\\u0e22\\u0e43\\u0e19\\u0e40\\u0e0b\\u0e25\\u0e25\\u0e4c\",\n\"Show caption\": \"\\u0e41\\u0e2a\\u0e14\\u0e07\\u0e04\\u0e33\\u0e1a\\u0e23\\u0e23\\u0e22\\u0e32\\u0e22\",\n\"Left\": \"\\u0e0b\\u0e49\\u0e32\\u0e22\",\n\"Center\": \"\\u0e01\\u0e36\\u0e48\\u0e07\\u0e01\\u0e25\\u0e32\\u0e07\",\n\"Right\": \"\\u0e02\\u0e27\\u0e32\",\n\"Cell type\": \"\\u0e0a\\u0e19\\u0e34\\u0e14\\u0e02\\u0e2d\\u0e07\\u0e40\\u0e0b\\u0e25\\u0e25\\u0e4c\",\n\"Scope\": \"\\u0e02\\u0e2d\\u0e1a\\u0e40\\u0e02\\u0e15\",\n\"Alignment\": \"\\u0e01\\u0e32\\u0e23\\u0e08\\u0e31\\u0e14\\u0e41\\u0e19\\u0e27\",\n\"H Align\": \"\\u0e01\\u0e32\\u0e23\\u0e40\\u0e23\\u0e35\\u0e22\\u0e07\\u0e43\\u0e19\\u0e41\\u0e19\\u0e27\\u0e19\\u0e2d\\u0e19\",\n\"V Align\": \"\\u0e01\\u0e32\\u0e23\\u0e40\\u0e23\\u0e35\\u0e22\\u0e07\\u0e43\\u0e19\\u0e41\\u0e19\\u0e27\\u0e15\\u0e31\\u0e49\\u0e07\",\n\"Top\": \"\\u0e1a\\u0e19\",\n\"Middle\": \"\\u0e01\\u0e25\\u0e32\\u0e07\",\n\"Bottom\": \"\\u0e25\\u0e48\\u0e32\\u0e07\",\n\"Header cell\": \"\\u0e40\\u0e0b\\u0e25\\u0e25\\u0e4c\\u0e2a\\u0e48\\u0e27\\u0e19\\u0e2b\\u0e31\\u0e27\",\n\"Row group\": \"\\u0e01\\u0e25\\u0e38\\u0e48\\u0e21\\u0e41\\u0e16\\u0e27\",\n\"Column group\": \"\\u0e01\\u0e25\\u0e38\\u0e48\\u0e21\\u0e04\\u0e2d\\u0e25\\u0e31\\u0e21\\u0e19\\u0e4c\",\n\"Row type\": \"\\u0e0a\\u0e19\\u0e34\\u0e14\\u0e02\\u0e2d\\u0e07\\u0e41\\u0e16\\u0e27\",\n\"Header\": \"\\u0e2a\\u0e48\\u0e27\\u0e19\\u0e2b\\u0e31\\u0e27\",\n\"Body\": \"\\u0e40\\u0e19\\u0e37\\u0e49\\u0e2d\\u0e04\\u0e27\\u0e32\\u0e21\",\n\"Footer\": \"\\u0e2a\\u0e48\\u0e27\\u0e19\\u0e17\\u0e49\\u0e32\\u0e22\",\n\"Border color\": \"\\u0e2a\\u0e35\\u0e02\\u0e2d\\u0e1a\",\n\"Insert template...\": \"\\u0e40\\u0e1e\\u0e34\\u0e48\\u0e21\\u0e41\\u0e21\\u0e48\\u0e41\\u0e1a\\u0e1a...\",\n\"Templates\": \"\\u0e41\\u0e21\\u0e48\\u0e41\\u0e1a\\u0e1a\",\n\"Template\": \"\\u0e41\\u0e21\\u0e48\\u0e41\\u0e1a\\u0e1a\",\n\"Text color\": \"\\u0e2a\\u0e35\\u0e02\\u0e49\\u0e2d\\u0e04\\u0e27\\u0e32\\u0e21\",\n\"Background color\": \"\\u0e2a\\u0e35\\u0e1e\\u0e37\\u0e49\\u0e19\\u0e2b\\u0e25\\u0e31\\u0e07\",\n\"Custom...\": \"\\u0e01\\u0e33\\u0e2b\\u0e19\\u0e14\\u0e40\\u0e2d\\u0e07\",\n\"Custom color\": \"\\u0e2a\\u0e35\\u0e17\\u0e35\\u0e48\\u0e01\\u0e33\\u0e2b\\u0e19\\u0e14\\u0e40\\u0e2d\\u0e07\",\n\"No color\": \"\\u0e44\\u0e21\\u0e48\\u0e21\\u0e35\\u0e2a\\u0e35\",\n\"Remove color\": \"\\u0e25\\u0e1a\\u0e2a\\u0e35\",\n\"Table of Contents\": \"\\u0e2a\\u0e32\\u0e23\\u0e1a\\u0e31\\u0e0d\",\n\"Show blocks\": \"\\u0e41\\u0e2a\\u0e14\\u0e07\\u0e1a\\u0e25\\u0e47\\u0e2d\\u0e01\",\n\"Show invisible characters\": \"\\u0e41\\u0e2a\\u0e14\\u0e07\\u0e15\\u0e31\\u0e27\\u0e2d\\u0e31\\u0e01\\u0e29\\u0e23\\u0e17\\u0e35\\u0e48\\u0e21\\u0e2d\\u0e07\\u0e44\\u0e21\\u0e48\\u0e40\\u0e2b\\u0e47\\u0e19\",\n\"Word count\": \"\\u0e19\\u0e31\\u0e1a\\u0e08\\u0e33\\u0e19\\u0e27\\u0e19\\u0e04\\u0e33\",\n\"Count\": \"\\u0e19\\u0e31\\u0e1a\",\n\"Document\": \"\\u0e40\\u0e2d\\u0e01\\u0e2a\\u0e32\\u0e23\",\n\"Selection\": \"\\u0e01\\u0e32\\u0e23\\u0e40\\u0e25\\u0e37\\u0e2d\\u0e01\",\n\"Words\": \"\\u0e04\\u0e33\",\n\"Words: {0}\": \"\\u0e04\\u0e33: {0}\",\n\"{0} words\": \"{0} \\u0e04\\u0e33\",\n\"File\": \"\\u0e44\\u0e1f\\u0e25\\u0e4c\",\n\"Edit\": \"\\u0e41\\u0e01\\u0e49\\u0e44\\u0e02\",\n\"Insert\": \"\\u0e41\\u0e17\\u0e23\\u0e01\",\n\"View\": \"\\u0e21\\u0e38\\u0e21\\u0e21\\u0e2d\\u0e07\",\n\"Format\": \"\\u0e23\\u0e39\\u0e1b\\u0e41\\u0e1a\\u0e1a\",\n\"Table\": \"\\u0e15\\u0e32\\u0e23\\u0e32\\u0e07\",\n\"Tools\": \"\\u0e40\\u0e04\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e21\\u0e37\\u0e2d\",\n\"Powered by {0}\": \"\\u0e02\\u0e31\\u0e1a\\u0e40\\u0e04\\u0e25\\u0e37\\u0e48\\u0e2d\\u0e19\\u0e42\\u0e14\\u0e22 {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u0e1e\\u0e37\\u0e49\\u0e19\\u0e17\\u0e35\\u0e48 Rich Text \\u0e01\\u0e14 ALT-F9 \\u0e2a\\u0e33\\u0e2b\\u0e23\\u0e31\\u0e1a\\u0e40\\u0e21\\u0e19\\u0e39 \\u0e01\\u0e14 ALT-F10 \\u0e2a\\u0e33\\u0e2b\\u0e23\\u0e31\\u0e1a\\u0e41\\u0e16\\u0e1a\\u0e40\\u0e04\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e21\\u0e37\\u0e2d \\u0e01\\u0e14 ALT-0 \\u0e2a\\u0e33\\u0e2b\\u0e23\\u0e31\\u0e1a\\u0e04\\u0e27\\u0e32\\u0e21\\u0e0a\\u0e48\\u0e27\\u0e22\\u0e40\\u0e2b\\u0e25\\u0e37\\u0e2d\",\n\"Image title\": \"\\u0e0a\\u0e37\\u0e48\\u0e2d\\u0e23\\u0e39\\u0e1b\\u0e20\\u0e32\\u0e1e\",\n\"Border width\": \"\\u0e04\\u0e27\\u0e32\\u0e21\\u0e01\\u0e27\\u0e49\\u0e32\\u0e07\\u0e40\\u0e2a\\u0e49\\u0e19\\u0e02\\u0e2d\\u0e1a\",\n\"Border style\": \"\\u0e23\\u0e39\\u0e1b\\u0e41\\u0e1a\\u0e1a\\u0e40\\u0e2a\\u0e49\\u0e19\\u0e02\\u0e2d\\u0e1a\",\n\"Error\": \"\\u0e04\\u0e27\\u0e32\\u0e21\\u0e1c\\u0e34\\u0e14\\u0e1e\\u0e25\\u0e32\\u0e14\",\n\"Warn\": \"\\u0e02\\u0e49\\u0e2d\\u0e04\\u0e27\\u0e32\\u0e21\\u0e40\\u0e15\\u0e37\\u0e2d\\u0e19\",\n\"Valid\": \"\\u0e16\\u0e39\\u0e01\\u0e15\\u0e49\\u0e2d\\u0e07\",\n\"To open the popup, press Shift+Enter\": \"\\u0e01\\u0e14 Shift+Enter \\u0e40\\u0e1e\\u0e37\\u0e48\\u0e2d\\u0e40\\u0e1b\\u0e34\\u0e14\\u0e1b\\u0e4a\\u0e2d\\u0e1a\\u0e2d\\u0e31\\u0e1e\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u0e1e\\u0e37\\u0e49\\u0e19\\u0e17\\u0e35\\u0e48 Rich Text \\u0e01\\u0e14 ALT-0 \\u0e2a\\u0e33\\u0e2b\\u0e23\\u0e31\\u0e1a\\u0e04\\u0e27\\u0e32\\u0e21\\u0e0a\\u0e48\\u0e27\\u0e22\\u0e40\\u0e2b\\u0e25\\u0e37\\u0e2d\",\n\"System Font\": \"\\u0e41\\u0e1a\\u0e1a\\u0e2d\\u0e31\\u0e01\\u0e29\\u0e23\\u0e02\\u0e2d\\u0e07\\u0e23\\u0e30\\u0e1a\\u0e1a\",\n\"Failed to upload image: {0}\": \"\\u0e44\\u0e21\\u0e48\\u0e2a\\u0e32\\u0e21\\u0e32\\u0e23\\u0e16\\u0e2d\\u0e31\\u0e1b\\u0e42\\u0e2b\\u0e25\\u0e14\\u0e23\\u0e39\\u0e1b\\u0e20\\u0e32\\u0e1e: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u0e44\\u0e21\\u0e48\\u0e2a\\u0e32\\u0e21\\u0e32\\u0e23\\u0e16\\u0e42\\u0e2b\\u0e25\\u0e14\\u0e1b\\u0e25\\u0e31\\u0e4a\\u0e01\\u0e2d\\u0e34\\u0e19: {0} \\u0e08\\u0e32\\u0e01 url {1}\",\n\"Failed to load plugin url: {0}\": \"\\u0e44\\u0e21\\u0e48\\u0e2a\\u0e32\\u0e21\\u0e32\\u0e23\\u0e16\\u0e42\\u0e2b\\u0e25\\u0e14 url \\u0e02\\u0e2d\\u0e07\\u0e1b\\u0e25\\u0e31\\u0e4a\\u0e01\\u0e2d\\u0e34\\u0e19: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u0e44\\u0e21\\u0e48\\u0e2a\\u0e32\\u0e21\\u0e32\\u0e23\\u0e16\\u0e40\\u0e23\\u0e34\\u0e48\\u0e21\\u0e15\\u0e49\\u0e19\\u0e1b\\u0e25\\u0e31\\u0e4a\\u0e01\\u0e2d\\u0e34\\u0e19: {0}\",\n\"example\": \"\\u0e15\\u0e31\\u0e27\\u0e2d\\u0e22\\u0e48\\u0e32\\u0e07\",\n\"Search\": \"\\u0e04\\u0e49\\u0e19\\u0e2b\\u0e32\",\n\"All\": \"\\u0e17\\u0e31\\u0e49\\u0e07\\u0e2b\\u0e21\\u0e14\",\n\"Currency\": \"\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\",\n\"Text\": \"\\u0e02\\u0e49\\u0e2d\\u0e04\\u0e27\\u0e32\\u0e21\",\n\"Quotations\": \"\\u0e43\\u0e1a\\u0e40\\u0e2a\\u0e19\\u0e2d\\u0e23\\u0e32\\u0e04\\u0e32\",\n\"Mathematical\": \"\\u0e40\\u0e01\\u0e35\\u0e48\\u0e22\\u0e27\\u0e01\\u0e31\\u0e1a\\u0e04\\u0e13\\u0e34\\u0e15\\u0e28\\u0e32\\u0e2a\\u0e15\\u0e23\\u0e4c\",\n\"Extended Latin\": \"\\u0e20\\u0e32\\u0e29\\u0e32\\u0e25\\u0e32\\u0e15\\u0e34\\u0e19\\u0e2a\\u0e48\\u0e27\\u0e19\\u0e02\\u0e22\\u0e32\\u0e22\",\n\"Symbols\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\",\n\"Arrows\": \"\\u0e25\\u0e39\\u0e01\\u0e28\\u0e23\",\n\"User Defined\": \"\\u0e1c\\u0e39\\u0e49\\u0e43\\u0e0a\\u0e49\\u0e01\\u0e33\\u0e2b\\u0e19\\u0e14\\u0e40\\u0e2d\\u0e07\",\n\"dollar sign\": \"\\u0e40\\u0e04\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e2b\\u0e21\\u0e32\\u0e22\\u0e14\\u0e2d\\u0e25\\u0e25\\u0e48\\u0e32\\u0e23\\u0e4c\",\n\"currency sign\": \"\\u0e40\\u0e04\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e2b\\u0e21\\u0e32\\u0e22\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\",\n\"euro-currency sign\": \"\\u0e40\\u0e04\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e2b\\u0e21\\u0e32\\u0e22\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e22\\u0e39\\u0e42\\u0e23\",\n\"colon sign\": \"\\u0e40\\u0e04\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e2b\\u0e21\\u0e32\\u0e22\\u0e08\\u0e38\\u0e14\\u0e04\\u0e39\\u0e48\",\n\"cruzeiro sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e04\\u0e23\\u0e39\\u0e40\\u0e0b\\u0e42\\u0e35\\u0e23\",\n\"french franc sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e1f\\u0e23\\u0e31\\u0e07\\u0e01\\u0e4c\\u0e1d\\u0e23\\u0e31\\u0e48\\u0e07\\u0e40\\u0e28\\u0e2a\",\n\"lira sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e25\\u0e35\\u0e23\\u0e32\",\n\"mill sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e21\\u0e34\\u0e25\\u0e25\\u0e4c\",\n\"naira sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e44\\u0e19\\u0e23\\u0e32\",\n\"peseta sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e40\\u0e1b\\u0e40\\u0e0b\\u0e15\\u0e32\",\n\"rupee sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e23\\u0e39\\u0e1b\\u0e35\",\n\"won sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e27\\u0e2d\\u0e19\",\n\"new sheqel sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e19\\u0e34\\u0e27\\u0e40\\u0e0a\\u0e40\\u0e01\\u0e25\",\n\"dong sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e14\\u0e2d\\u0e07\",\n\"kip sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e01\\u0e35\\u0e1a\",\n\"tugrik sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e17\\u0e39\\u0e01\\u0e23\\u0e34\\u0e01\",\n\"drachma sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e14\\u0e23\\u0e31\\u0e04\\u0e21\\u0e32\",\n\"german penny symbol\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e40\\u0e1e\\u0e19\\u0e19\\u0e35\\u0e40\\u0e22\\u0e2d\\u0e23\\u0e21\\u0e31\\u0e19\",\n\"peso sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e40\\u0e1b\\u0e42\\u0e0b\",\n\"guarani sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e01\\u0e27\\u0e32\\u0e23\\u0e32\\u0e19\\u0e35\",\n\"austral sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e2d\\u0e2d\\u0e2a\\u0e15\\u0e23\\u0e31\\u0e25\",\n\"hryvnia sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e2e\\u0e23\\u0e34\\u0e1f\\u0e40\\u0e19\\u0e35\\u0e22\",\n\"cedi sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e40\\u0e0b\\u0e14\\u0e35\",\n\"livre tournois sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e1b\\u0e2d\\u0e19\\u0e14\\u0e4c\\u0e15\\u0e39\\u0e23\\u0e4c\",\n\"spesmilo sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e2a\\u0e40\\u0e1b\\u0e2a\\u0e21\\u0e34\\u0e42\\u0e25\",\n\"tenge sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e40\\u0e17\\u0e07\\u0e40\\u0e08\",\n\"indian rupee sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e23\\u0e39\\u0e1b\\u0e35\\u0e2d\\u0e34\\u0e19\\u0e40\\u0e14\\u0e35\\u0e22\",\n\"turkish lira sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e25\\u0e35\\u0e23\\u0e32\\u0e15\\u0e38\\u0e23\\u0e01\\u0e35\",\n\"nordic mark sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e21\\u0e32\\u0e23\\u0e4c\\u0e04\\u0e19\\u0e2d\\u0e23\\u0e4c\\u0e14\\u0e34\\u0e01\",\n\"manat sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e21\\u0e32\\u0e19\\u0e31\\u0e15\",\n\"ruble sign\": \"\\u0e2a\\u0e31\\u0e0d\\u0e25\\u0e31\\u0e01\\u0e29\\u0e13\\u0e4c\\u0e2a\\u0e01\\u0e38\\u0e25\\u0e40\\u0e07\\u0e34\\u0e19\\u0e23\\u0e39\\u0e40\\u0e1a\\u0e34\\u0e25\",\n\"yen character\": \"\\u0e2d\\u0e31\\u0e01\\u0e02\\u0e23\\u0e30\\u0e40\\u0e07\\u0e34\\u0e19\\u0e40\\u0e22\\u0e19\",\n\"yuan character\": \"\\u0e2d\\u0e31\\u0e01\\u0e02\\u0e23\\u0e30\\u0e40\\u0e07\\u0e34\\u0e19\\u0e2b\\u0e22\\u0e27\\u0e19\",\n\"yuan character, in hong kong and taiwan\": \"\\u0e2d\\u0e31\\u0e01\\u0e02\\u0e23\\u0e30\\u0e40\\u0e07\\u0e34\\u0e19\\u0e2b\\u0e22\\u0e27\\u0e19 \\u0e43\\u0e19\\u0e2e\\u0e48\\u0e2d\\u0e07\\u0e01\\u0e07\\u0e41\\u0e25\\u0e30\\u0e44\\u0e15\\u0e49\\u0e2b\\u0e27\\u0e31\\u0e19\",\n\"yen\\/yuan character variant one\": \"\\u0e2d\\u0e31\\u0e01\\u0e02\\u0e23\\u0e30\\u0e40\\u0e07\\u0e34\\u0e19\\u0e40\\u0e22\\u0e19\\/\\u0e2b\\u0e22\\u0e27\\u0e19 \\u0e23\\u0e39\\u0e1b\\u0e41\\u0e1a\\u0e1a\\u0e17\\u0e35\\u0e48 1\",\n\"Loading emoticons...\": \"\\u0e01\\u0e33\\u0e25\\u0e31\\u0e07\\u0e42\\u0e2b\\u0e25\\u0e14\\u0e40\\u0e04\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e2b\\u0e21\\u0e32\\u0e22\\u0e41\\u0e2a\\u0e14\\u0e07\\u0e2d\\u0e32\\u0e23\\u0e21\\u0e13\\u0e4c...\",\n\"Could not load emoticons\": \"\\u0e44\\u0e21\\u0e48\\u0e2a\\u0e32\\u0e21\\u0e32\\u0e23\\u0e16\\u0e42\\u0e2b\\u0e25\\u0e14\\u0e40\\u0e04\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e2b\\u0e21\\u0e32\\u0e22\\u0e41\\u0e2a\\u0e14\\u0e07\\u0e2d\\u0e32\\u0e23\\u0e21\\u0e13\\u0e4c\\u0e44\\u0e14\\u0e49\",\n\"People\": \"\\u0e1c\\u0e39\\u0e49\\u0e04\\u0e19\",\n\"Animals and Nature\": \"\\u0e2a\\u0e31\\u0e15\\u0e27\\u0e4c\\u0e41\\u0e25\\u0e30\\u0e18\\u0e23\\u0e23\\u0e21\\u0e0a\\u0e32\\u0e15\\u0e34\",\n\"Food and Drink\": \"\\u0e2d\\u0e32\\u0e2b\\u0e32\\u0e23\\u0e41\\u0e25\\u0e30\\u0e40\\u0e04\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e14\\u0e37\\u0e48\\u0e21\",\n\"Activity\": \"\\u0e01\\u0e34\\u0e08\\u0e01\\u0e23\\u0e23\\u0e21\",\n\"Travel and Places\": \"\\u0e01\\u0e32\\u0e23\\u0e17\\u0e48\\u0e2d\\u0e07\\u0e40\\u0e17\\u0e35\\u0e48\\u0e22\\u0e27\\u0e41\\u0e25\\u0e30\\u0e2a\\u0e16\\u0e32\\u0e19\\u0e17\\u0e35\\u0e48\",\n\"Objects\": \"\\u0e27\\u0e31\\u0e15\\u0e16\\u0e38\",\n\"Flags\": \"\\u0e40\\u0e04\\u0e23\\u0e37\\u0e48\\u0e2d\\u0e07\\u0e2b\\u0e21\\u0e32\\u0e22\",\n\"Characters\": \"\\u0e15\\u0e31\\u0e27\\u0e2d\\u0e31\\u0e01\\u0e29\\u0e23\",\n\"Characters (no spaces)\": \"\\u0e15\\u0e31\\u0e27\\u0e2d\\u0e31\\u0e01\\u0e29\\u0e23 (\\u0e44\\u0e21\\u0e48\\u0e21\\u0e35\\u0e0a\\u0e48\\u0e2d\\u0e07\\u0e27\\u0e48\\u0e32\\u0e07)\",\n\"{0} characters\": \"{0} \\u0e2d\\u0e31\\u0e01\\u0e02\\u0e23\\u0e30\",\n\"Error: Form submit field collision.\": \"\\u0e02\\u0e49\\u0e2d\\u0e1c\\u0e34\\u0e14\\u0e1e\\u0e25\\u0e32\\u0e14: \\u0e0a\\u0e48\\u0e2d\\u0e07\\u0e2a\\u0e48\\u0e07\\u0e41\\u0e1a\\u0e1a\\u0e1f\\u0e2d\\u0e23\\u0e4c\\u0e21\\u0e02\\u0e31\\u0e14\\u0e41\\u0e22\\u0e49\\u0e07\\u0e01\\u0e31\\u0e19\",\n\"Error: No form element found.\": \"\\u0e02\\u0e49\\u0e2d\\u0e1c\\u0e34\\u0e14\\u0e1e\\u0e25\\u0e32\\u0e14: \\u0e44\\u0e21\\u0e48\\u0e1e\\u0e1a\\u0e2d\\u0e07\\u0e04\\u0e4c\\u0e1b\\u0e23\\u0e30\\u0e01\\u0e2d\\u0e1a\\u0e02\\u0e2d\\u0e07\\u0e1f\\u0e2d\\u0e23\\u0e4c\\u0e21\",\n\"Update\": \"\\u0e1b\\u0e23\\u0e31\\u0e1a\\u0e1b\\u0e23\\u0e38\\u0e07\\u0e43\\u0e2b\\u0e49\\u0e17\\u0e31\\u0e19\\u0e2a\\u0e21\\u0e31\\u0e22\",\n\"Color swatch\": \"\\u0e41\\u0e16\\u0e1a\\u0e2a\\u0e35\",\n\"Turquoise\": \"\\u0e19\\u0e49\\u0e33\\u0e40\\u0e07\\u0e34\\u0e19\\u0e2d\\u0e21\\u0e40\\u0e02\\u0e35\\u0e22\\u0e27\",\n\"Green\": \"\\u0e40\\u0e02\\u0e35\\u0e22\\u0e27\",\n\"Blue\": \"\\u0e19\\u0e49\\u0e33\\u0e40\\u0e07\\u0e34\\u0e19\",\n\"Purple\": \"\\u0e21\\u0e48\\u0e27\\u0e07\",\n\"Navy Blue\": \"\\u0e19\\u0e49\\u0e33\\u0e40\\u0e07\\u0e34\\u0e19\\u0e40\\u0e02\\u0e49\\u0e21\",\n\"Dark Turquoise\": \"\\u0e2a\\u0e35\\u0e1f\\u0e49\\u0e32\\u0e04\\u0e23\\u0e32\\u0e21\\u0e40\\u0e02\\u0e49\\u0e21\",\n\"Dark Green\": \"\\u0e40\\u0e02\\u0e35\\u0e22\\u0e27\\u0e40\\u0e02\\u0e49\\u0e21\",\n\"Medium Blue\": \"\\u0e19\\u0e49\\u0e33\\u0e40\\u0e07\\u0e34\\u0e19\\u0e1b\\u0e32\\u0e19\\u0e01\\u0e25\\u0e32\\u0e07\",\n\"Medium Purple\": \"\\u0e2a\\u0e35\\u0e21\\u0e48\\u0e27\\u0e07\\u0e01\\u0e25\\u0e32\\u0e07\\u0e46\",\n\"Midnight Blue\": \"\\u0e2a\\u0e35\\u0e1f\\u0e49\\u0e32\\u0e40\\u0e02\\u0e49\\u0e21\",\n\"Yellow\": \"\\u0e40\\u0e2b\\u0e25\\u0e37\\u0e2d\\u0e07\",\n\"Orange\": \"\\u0e2a\\u0e49\\u0e21\",\n\"Red\": \"\\u0e41\\u0e14\\u0e07\",\n\"Light Gray\": \"\\u0e2a\\u0e35\\u0e40\\u0e17\\u0e32\\u0e2d\\u0e48\\u0e2d\\u0e19\",\n\"Gray\": \"\\u0e40\\u0e17\\u0e32\",\n\"Dark Yellow\": \"\\u0e2a\\u0e35\\u0e40\\u0e2b\\u0e25\\u0e37\\u0e2d\\u0e07\\u0e40\\u0e02\\u0e49\\u0e21\",\n\"Dark Orange\": \"\\u0e2a\\u0e49\\u0e21\\u0e40\\u0e02\\u0e49\\u0e21\",\n\"Dark Red\": \"\\u0e41\\u0e14\\u0e07\\u0e40\\u0e02\\u0e49\\u0e21\",\n\"Medium Gray\": \"\\u0e2a\\u0e35\\u0e40\\u0e17\\u0e32\\u0e01\\u0e25\\u0e32\\u0e07\\u0e46\",\n\"Dark Gray\": \"\\u0e2a\\u0e35\\u0e40\\u0e17\\u0e32\\u0e40\\u0e02\\u0e49\\u0e21\",\n\"Light Green\": \"\\u0e40\\u0e02\\u0e35\\u0e22\\u0e27\\u0e2d\\u0e48\\u0e2d\\u0e19\",\n\"Light Yellow\": \"\\u0e40\\u0e2b\\u0e25\\u0e37\\u0e2d\\u0e07\\u0e2d\\u0e48\\u0e2d\\u0e19\",\n\"Light Red\": \"\\u0e41\\u0e14\\u0e07\\u0e2d\\u0e48\\u0e2d\\u0e19\",\n\"Light Purple\": \"\\u0e21\\u0e48\\u0e27\\u0e07\\u0e2d\\u0e48\\u0e2d\\u0e19\",\n\"Light Blue\": \"\\u0e19\\u0e49\\u0e33\\u0e40\\u0e07\\u0e34\\u0e19\\u0e2d\\u0e48\\u0e2d\\u0e19\",\n\"Dark Purple\": \"\\u0e21\\u0e48\\u0e27\\u0e07\\u0e40\\u0e02\\u0e49\\u0e21\",\n\"Dark Blue\": \"\\u0e19\\u0e49\\u0e33\\u0e40\\u0e07\\u0e34\\u0e19\\u0e40\\u0e02\\u0e49\\u0e21\",\n\"Black\": \"\\u0e14\\u0e33\",\n\"White\": \"\\u0e02\\u0e32\\u0e27\",\n\"Switch to or from fullscreen mode\": \"\\u0e2a\\u0e25\\u0e31\\u0e1a\\u0e44\\u0e1b\\u0e22\\u0e31\\u0e07\\u0e2b\\u0e23\\u0e37\\u0e2d\\u0e08\\u0e32\\u0e01\\u0e42\\u0e2b\\u0e21\\u0e14\\u0e40\\u0e15\\u0e47\\u0e21\\u0e2b\\u0e19\\u0e49\\u0e32\\u0e08\\u0e2d\",\n\"Open help dialog\": \"\\u0e40\\u0e1b\\u0e34\\u0e14\\u0e2b\\u0e19\\u0e49\\u0e32\\u0e01\\u0e32\\u0e23\\u0e0a\\u0e48\\u0e27\\u0e22\\u0e40\\u0e2b\\u0e25\\u0e37\\u0e2d\",\n\"history\": \"\\u0e1b\\u0e23\\u0e30\\u0e27\\u0e31\\u0e15\\u0e34\",\n\"styles\": \"\\u0e23\\u0e39\\u0e1b\\u0e41\\u0e1a\\u0e1a\",\n\"formatting\": \"\\u0e01\\u0e32\\u0e23\\u0e08\\u0e31\\u0e14\\u0e23\\u0e39\\u0e1b\\u0e41\\u0e1a\\u0e1a\",\n\"alignment\": \"\\u0e01\\u0e32\\u0e23\\u0e08\\u0e31\\u0e14\\u0e41\\u0e19\\u0e27\",\n\"indentation\": \"\\u0e01\\u0e32\\u0e23\\u0e08\\u0e31\\u0e14\\u0e22\\u0e48\\u0e2d\\u0e2b\\u0e19\\u0e49\\u0e32\",\n\"permanent pen\": \"\\u0e1b\\u0e32\\u0e01\\u0e01\\u0e32\\u0e40\\u0e04\\u0e21\\u0e35\\u0e0a\\u0e19\\u0e34\\u0e14\\u0e25\\u0e1a\\u0e44\\u0e21\\u0e48\\u0e44\\u0e14\\u0e49\",\n\"comments\": \"\\u0e02\\u0e49\\u0e2d\\u0e04\\u0e34\\u0e14\\u0e40\\u0e2b\\u0e47\\u0e19\",\n\"Format Painter\": \"\\u0e23\\u0e39\\u0e1b\\u0e41\\u0e1a\\u0e1a\\u0e40\\u0e1e\\u0e19\\u0e40\\u0e15\\u0e2d\\u0e23\\u0e4c\",\n\"Insert\\/edit iframe\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\/\\u0e41\\u0e01\\u0e49\\u0e44\\u0e02 iframe\",\n\"Capitalization\": \"\\u0e01\\u0e32\\u0e23\\u0e43\\u0e0a\\u0e49\\u0e15\\u0e31\\u0e27\\u0e2d\\u0e31\\u0e01\\u0e29\\u0e23\\u0e15\\u0e31\\u0e27\\u0e1e\\u0e34\\u0e21\\u0e1e\\u0e4c\\u0e43\\u0e2b\\u0e0d\\u0e48\",\n\"lowercase\": \"\\u0e15\\u0e31\\u0e27\\u0e1e\\u0e34\\u0e21\\u0e1e\\u0e4c\\u0e40\\u0e25\\u0e47\\u0e01\",\n\"UPPERCASE\": \"\\u0e15\\u0e31\\u0e27\\u0e1e\\u0e34\\u0e21\\u0e1e\\u0e4c\\u0e43\\u0e2b\\u0e0d\\u0e48\",\n\"Title Case\": \"\\u0e15\\u0e31\\u0e27\\u0e1e\\u0e34\\u0e21\\u0e1e\\u0e4c\\u0e02\\u0e2d\\u0e07\\u0e2b\\u0e31\\u0e27\\u0e02\\u0e49\\u0e2d\",\n\"Permanent Pen Properties\": \"\\u0e04\\u0e38\\u0e13\\u0e2a\\u0e21\\u0e1a\\u0e31\\u0e15\\u0e34\\u0e1b\\u0e32\\u0e01\\u0e01\\u0e32\\u0e21\\u0e32\\u0e23\\u0e4c\\u0e04\\u0e40\\u0e01\\u0e2d\\u0e23\\u0e4c\",\n\"Permanent pen properties...\": \"\\u0e04\\u0e38\\u0e13\\u0e2a\\u0e21\\u0e1a\\u0e31\\u0e15\\u0e34\\u0e1b\\u0e32\\u0e01\\u0e01\\u0e32\\u0e21\\u0e32\\u0e23\\u0e4c\\u0e04\\u0e40\\u0e01\\u0e2d\\u0e23\\u0e4c...\",\n\"Font\": \"\\u0e15\\u0e31\\u0e27\\u0e2d\\u0e31\\u0e01\\u0e29\\u0e23\",\n\"Size\": \"\\u0e02\\u0e19\\u0e32\\u0e14\",\n\"More...\": \"\\u0e40\\u0e1e\\u0e34\\u0e48\\u0e21\\u0e40\\u0e15\\u0e34\\u0e21...\",\n\"Spellcheck Language\": \"\\u0e20\\u0e32\\u0e29\\u0e32\\u0e43\\u0e19\\u0e01\\u0e32\\u0e23\\u0e15\\u0e23\\u0e27\\u0e08\\u0e01\\u0e32\\u0e23\\u0e2a\\u0e30\\u0e01\\u0e14\",\n\"Select...\": \"\\u0e40\\u0e25\\u0e37\\u0e2d\\u0e01...\",\n\"Preferences\": \"\\u0e04\\u0e48\\u0e32\\u0e01\\u0e33\\u0e2b\\u0e19\\u0e14\",\n\"Yes\": \"\\u0e43\\u0e0a\\u0e48\",\n\"No\": \"\\u0e44\\u0e21\\u0e48\\u0e43\\u0e0a\\u0e48\",\n\"Keyboard Navigation\": \"\\u0e01\\u0e32\\u0e23\\u0e19\\u0e33\\u0e17\\u0e32\\u0e07\\u0e14\\u0e49\\u0e27\\u0e22\\u0e41\\u0e1b\\u0e49\\u0e19\\u0e1e\\u0e34\\u0e21\\u0e1e\\u0e4c\",\n\"Version\": \"\\u0e23\\u0e38\\u0e48\\u0e19\",\n\"Anchor\": \"\\u0e08\\u0e38\\u0e14\\u0e22\\u0e36\\u0e14\",\n\"Special character\": \"\\u0e2d\\u0e31\\u0e01\\u0e02\\u0e23\\u0e30\\u0e1e\\u0e34\\u0e40\\u0e28\\u0e29\",\n\"Code sample\": \"\\u0e15\\u0e31\\u0e27\\u0e2d\\u0e22\\u0e48\\u0e32\\u0e07\\u0e42\\u0e04\\u0e49\\u0e14\",\n\"Color\": \"\\u0e2a\\u0e35\",\n\"Emoticons\": \"\\u0e2d\\u0e34\\u0e42\\u0e21\\u0e15\\u0e34\\u0e04\\u0e2d\\u0e19\",\n\"Document properties\": \"\\u0e04\\u0e38\\u0e13\\u0e2a\\u0e21\\u0e1a\\u0e31\\u0e15\\u0e34\\u0e02\\u0e2d\\u0e07\\u0e40\\u0e2d\\u0e01\\u0e2a\\u0e32\\u0e23\",\n\"Image\": \"\\u0e23\\u0e39\\u0e1b\\u0e20\\u0e32\\u0e1e\",\n\"Insert link\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\u0e25\\u0e34\\u0e07\\u0e01\\u0e4c\",\n\"Target\": \"\\u0e40\\u0e1b\\u0e49\\u0e32\\u0e2b\\u0e21\\u0e32\\u0e22\",\n\"Link\": \"\\u0e25\\u0e34\\u0e07\\u0e01\\u0e4c\",\n\"Poster\": \"\\u0e42\\u0e1b\\u0e2a\\u0e40\\u0e15\\u0e2d\\u0e23\\u0e4c\",\n\"Media\": \"\\u0e2a\\u0e37\\u0e48\\u0e2d\",\n\"Print\": \"\\u0e1e\\u0e34\\u0e21\\u0e1e\\u0e4c\",\n\"Prev\": \"\\u0e01\\u0e48\\u0e2d\\u0e19\\u0e2b\\u0e19\\u0e49\\u0e32\",\n\"Find and replace\": \"\\u0e04\\u0e49\\u0e19\\u0e2b\\u0e32\\u0e41\\u0e25\\u0e30\\u0e41\\u0e17\\u0e19\\u0e17\\u0e35\\u0e48\",\n\"Whole words\": \"\\u0e17\\u0e31\\u0e49\\u0e07\\u0e04\\u0e33\",\n\"Spellcheck\": \"\\u0e15\\u0e23\\u0e27\\u0e08\\u0e01\\u0e32\\u0e23\\u0e2a\\u0e30\\u0e01\\u0e14\",\n\"Caption\": \"\\u0e1b\\u0e49\\u0e32\\u0e22\\u0e04\\u0e33\\u0e2d\\u0e18\\u0e34\\u0e1a\\u0e32\\u0e22\",\n\"Insert template\": \"\\u0e41\\u0e17\\u0e23\\u0e01\\u0e41\\u0e21\\u0e48\\u0e41\\u0e1a\\u0e1a\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/tr.js",
    "content": "tinymce.addI18n('tr',{\n\"Redo\": \"Yinele\",\n\"Undo\": \"Geri al\",\n\"Cut\": \"Kes\",\n\"Copy\": \"Kopyala\",\n\"Paste\": \"Yap\\u0131\\u015ft\\u0131r\",\n\"Select all\": \"T\\u00fcm\\u00fcn\\u00fc se\\u00e7\",\n\"New document\": \"Yeni dok\\u00fcman\",\n\"Ok\": \"Tamam\",\n\"Cancel\": \"\\u0130ptal\",\n\"Visual aids\": \"G\\u00f6rsel ara\\u00e7lar\",\n\"Bold\": \"Kal\\u0131n\",\n\"Italic\": \"\\u0130talik\",\n\"Underline\": \"Alt\\u0131 \\u00e7izili\",\n\"Strikethrough\": \"\\u00dcst\\u00fc \\u00e7izgili\",\n\"Superscript\": \"\\u00dcst simge\",\n\"Subscript\": \"Alt simge\",\n\"Clear formatting\": \"Bi\\u00e7imi temizle\",\n\"Align left\": \"Sola hizala\",\n\"Align center\": \"Ortala\",\n\"Align right\": \"Sa\\u011fa hizala\",\n\"Justify\": \"\\u0130ki yana yasla\",\n\"Bullet list\": \"S\\u0131ras\\u0131z liste\",\n\"Numbered list\": \"S\\u0131ral\\u0131 liste\",\n\"Decrease indent\": \"Girintiyi azalt\",\n\"Increase indent\": \"Girintiyi art\\u0131r\",\n\"Close\": \"Kapat\",\n\"Formats\": \"Bi\\u00e7imler\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Taray\\u0131c\\u0131n\\u0131z panoya direk eri\\u015fimi desteklemiyor. L\\u00fctfen Ctrl+X\\/C\\/V klavye k\\u0131sayollar\\u0131n\\u0131 kullan\\u0131n.\",\n\"Headers\": \"Ba\\u015fl\\u0131klar\",\n\"Header 1\": \"Ba\\u015fl\\u0131k 1\",\n\"Header 2\": \"Ba\\u015fl\\u0131k 2\",\n\"Header 3\": \"Ba\\u015fl\\u0131k 3\",\n\"Header 4\": \"Ba\\u015fl\\u0131k 4\",\n\"Header 5\": \"Ba\\u015fl\\u0131k 5\",\n\"Header 6\": \"Ba\\u015fl\\u0131k 6\",\n\"Headings\": \"Ba\\u015fl\\u0131klar\",\n\"Heading 1\": \"Ba\\u015fl\\u0131k 1\",\n\"Heading 2\": \"Ba\\u015fl\\u0131k 2\",\n\"Heading 3\": \"Ba\\u015fl\\u0131k 3\",\n\"Heading 4\": \"Ba\\u015fl\\u0131k 4\",\n\"Heading 5\": \"Ba\\u015fl\\u0131k 5\",\n\"Heading 6\": \"Ba\\u015fl\\u0131k 6\",\n\"Preformatted\": \"\\u00d6nceden bi\\u00e7imlendirilmi\\u015f\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Kod\",\n\"Paragraph\": \"Paragraf\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Sat\\u0131r i\\u00e7i\",\n\"Blocks\": \"Bloklar\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"D\\u00fcz metin modunda yap\\u0131\\u015ft\\u0131r. Bu se\\u00e7ene\\u011fi kapatana kadar i\\u00e7erikler d\\u00fcz metin olarak yap\\u0131\\u015ft\\u0131r\\u0131l\\u0131r.\",\n\"Fonts\": \"Yaz\\u0131 Tipleri\",\n\"Font Sizes\": \"Yaz\\u0131tipi B\\u00fcy\\u00fckl\\u00fc\\u011f\\u00fc\",\n\"Class\": \"S\\u0131n\\u0131f\",\n\"Browse for an image\": \"Bir resim aray\\u0131n\",\n\"OR\": \"VEYA\",\n\"Drop an image here\": \"Buraya bir resim koyun\",\n\"Upload\": \"Y\\u00fckle\",\n\"Block\": \"Blok\",\n\"Align\": \"Hizala\",\n\"Default\": \"Varsay\\u0131lan\",\n\"Circle\": \"Daire\",\n\"Disc\": \"Disk\",\n\"Square\": \"Kare\",\n\"Lower Alpha\": \"K\\u00fc\\u00e7\\u00fck Harf\",\n\"Lower Greek\": \"K\\u00fc\\u00e7\\u00fck Yunan Harfleri\",\n\"Lower Roman\": \"K\\u00fc\\u00e7\\u00fck Roman Harfleri \",\n\"Upper Alpha\": \"B\\u00fcy\\u00fck Harf\",\n\"Upper Roman\": \"B\\u00fcy\\u00fck Roman Harfleri \",\n\"Anchor...\": \"\\u00c7apa...\",\n\"Name\": \"\\u0130sim\",\n\"Id\": \"Kimlik\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id bir harf ile ba\\u015flamal\\u0131d\\u0131r ve harf, rakam, \\u00e7izgi, nokta, iki nokta \\u00fcst\\u00fcste veya alt \\u00e7izgi kullan\\u0131labilir.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Kaydedilmemi\\u015f de\\u011fi\\u015fiklikler var, sayfadan ayr\\u0131lmak istedi\\u011finize emin misiniz?\",\n\"Restore last draft\": \"Son tasla\\u011f\\u0131 geri y\\u00fckle\",\n\"Special character...\": \"\\u00d6zel karakter...\",\n\"Source code\": \"Kaynak kodu\",\n\"Insert\\/Edit code sample\": \"\\u00d6rnek kod ekle\\/d\\u00fczenle\",\n\"Language\": \"Dil\",\n\"Code sample...\": \"Kod \\u00f6rne\\u011fi...\",\n\"Color Picker\": \"Renk Se\\u00e7ici\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Soldan sa\\u011fa\",\n\"Right to left\": \"Sa\\u011fdan sola\",\n\"Emoticons...\": \"\\u0130fadeler...\",\n\"Metadata and Document Properties\": \"\\u00d6nbilgi ve Belge \\u00d6zellikleri\",\n\"Title\": \"Ba\\u015fl\\u0131k\",\n\"Keywords\": \"Anahtar kelimeler\",\n\"Description\": \"A\\u00e7\\u0131klama\",\n\"Robots\": \"Robotlar\",\n\"Author\": \"Yazar\",\n\"Encoding\": \"Kodlama\",\n\"Fullscreen\": \"Tam ekran\",\n\"Action\": \"Eylem\",\n\"Shortcut\": \"K\\u0131sayol\",\n\"Help\": \"Yard\\u0131m\",\n\"Address\": \"Adres\",\n\"Focus to menubar\": \"Men\\u00fcye odaklan\",\n\"Focus to toolbar\": \"Ara\\u00e7 tak\\u0131m\\u0131na odaklan\",\n\"Focus to element path\": \"\\u00d6\\u011fe yoluna odaklan\",\n\"Focus to contextual toolbar\": \"Ba\\u011flamsal ara\\u00e7 tak\\u0131m\\u0131na odaklan\",\n\"Insert link (if link plugin activated)\": \"Ba\\u011flant\\u0131 ekle (Ba\\u011flant\\u0131 eklentisi aktif ise)\",\n\"Save (if save plugin activated)\": \"Kaydet (Kay\\u0131t eklentisi aktif ise)\",\n\"Find (if searchreplace plugin activated)\": \"Bul (Bul\\/De\\u011fi\\u015ftir eklentisi aktif ise)\",\n\"Plugins installed ({0}):\": \"Eklentiler y\\u00fcklendi ({0}):\",\n\"Premium plugins:\": \"Premium eklentiler:\",\n\"Learn more...\": \"Detayl\\u0131 bilgi...\",\n\"You are using {0}\": \"\\u015eu an {0} kullan\\u0131yorsunuz\",\n\"Plugins\": \"Plugins\",\n\"Handy Shortcuts\": \"Handy Shortcuts\",\n\"Horizontal line\": \"Yatay \\u00e7izgi\",\n\"Insert\\/edit image\": \"Resim ekle\\/d\\u00fczenle\",\n\"Image description\": \"Resim a\\u00e7\\u0131klamas\\u0131\",\n\"Source\": \"Kaynak\",\n\"Dimensions\": \"Boyutlar\",\n\"Constrain proportions\": \"Oranlar\\u0131 koru\",\n\"General\": \"Genel\",\n\"Advanced\": \"Geli\\u015fmi\\u015f\",\n\"Style\": \"Stil\",\n\"Vertical space\": \"Dikey bo\\u015fluk\",\n\"Horizontal space\": \"Yatay bo\\u015fluk\",\n\"Border\": \"Kenarl\\u0131k\",\n\"Insert image\": \"Resim ekle\",\n\"Image...\": \"Resim...\",\n\"Image list\": \"G\\u00f6rsel listesi\",\n\"Rotate counterclockwise\": \"Saatin tersi y\\u00f6n\\u00fcnde d\\u00f6nd\\u00fcr\",\n\"Rotate clockwise\": \"Saat y\\u00f6n\\u00fcnde d\\u00f6nd\\u00fcr\",\n\"Flip vertically\": \"Dikine \\u00e7evir\",\n\"Flip horizontally\": \"Enine \\u00e7evir\",\n\"Edit image\": \"Resmi d\\u00fczenle\",\n\"Image options\": \"Resim ayarlar\\u0131\",\n\"Zoom in\": \"Yak\\u0131nla\\u015ft\\u0131r\",\n\"Zoom out\": \"Uzakla\\u015ft\\u0131r\",\n\"Crop\": \"K\\u0131rp\",\n\"Resize\": \"Yeniden Boyutland\\u0131r\",\n\"Orientation\": \"Oryantasyon\",\n\"Brightness\": \"Parlakl\\u0131k\",\n\"Sharpen\": \"Keskinle\\u015ftir\",\n\"Contrast\": \"Kontrast\",\n\"Color levels\": \"Renk d\\u00fczeyleri\",\n\"Gamma\": \"Gama\",\n\"Invert\": \"Ters \\u00c7evir\",\n\"Apply\": \"Uygula\",\n\"Back\": \"Geri\",\n\"Insert date\\/time\": \"Tarih\\/saat ekle\",\n\"Date\\/time\": \"Tarih\\/saat\",\n\"Insert\\/Edit Link\": \"Ba\\u011flant\\u0131 Ekle\\/D\\u00fczenle\",\n\"Insert\\/edit link\": \"Ba\\u011flant\\u0131 ekle\\/d\\u00fczenle\",\n\"Text to display\": \"Yaz\\u0131y\\u0131 g\\u00f6r\\u00fcnt\\u00fcle\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Ba\\u011flant\\u0131y\\u0131 a\\u00e7...\",\n\"Current window\": \"Mevcut pencere\",\n\"None\": \"Hi\\u00e7biri\",\n\"New window\": \"Yeni pencere\",\n\"Remove link\": \"Ba\\u011flant\\u0131y\\u0131 kald\\u0131r\",\n\"Anchors\": \"\\u00c7apalar\",\n\"Link...\": \"Ba\\u011flant\\u0131...\",\n\"Paste or type a link\": \"Bir ba\\u011flant\\u0131 yaz\\u0131n yada yap\\u0131\\u015ft\\u0131r\\u0131n\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Girdi\\u011finiz URL bir e-posta adresi gibi g\\u00f6r\\u00fcn\\u00fcyor. Gerekli olan mailto: \\u00f6nekini eklemek ister misiniz?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Girdi\\u011finiz URL bir d\\u0131\\u015f ba\\u011flant\\u0131 gibi g\\u00f6r\\u00fcn\\u00fcyor. Gerekli olan http:\\/\\/ \\u00f6nekini eklemek ister misiniz?\",\n\"Link list\": \"Ba\\u011flant\\u0131 listesi\",\n\"Insert video\": \"Video ekle\",\n\"Insert\\/edit video\": \"Video ekle\\/d\\u00fczenle\",\n\"Insert\\/edit media\": \"Medya ekle\\/d\\u00fczenle\",\n\"Alternative source\": \"Alternatif kaynak\",\n\"Alternative source URL\": \"Alternatif kaynak URL\",\n\"Media poster (Image URL)\": \"Medya posteri (Resim URL)\",\n\"Paste your embed code below:\": \"Video g\\u00f6mme kodunu a\\u015fa\\u011f\\u0131ya yap\\u0131\\u015ft\\u0131r\\u0131n\\u0131z:\",\n\"Embed\": \"G\\u00f6mme\",\n\"Media...\": \"Medya...\",\n\"Nonbreaking space\": \"B\\u00f6l\\u00fcnemez bo\\u015fluk\",\n\"Page break\": \"Sayfa sonu\",\n\"Paste as text\": \"Metin olarak yap\\u0131\\u015ft\\u0131r\",\n\"Preview\": \"\\u00d6nizleme\",\n\"Print...\": \"Yazd\\u0131r...\",\n\"Save\": \"Kaydet\",\n\"Find\": \"Bul\",\n\"Replace with\": \"Bununla de\\u011fi\\u015ftir\",\n\"Replace\": \"De\\u011fi\\u015ftir\",\n\"Replace all\": \"T\\u00fcm\\u00fcn\\u00fc de\\u011fi\\u015ftir\",\n\"Previous\": \"Geri\",\n\"Next\": \"Sonraki\",\n\"Find and replace...\": \"Bul ve de\\u011fi\\u015ftir...\",\n\"Could not find the specified string.\": \"Herhangi bir sonu\\u00e7 bulunamad\\u0131.\",\n\"Match case\": \"B\\u00fcy\\u00fck\\/k\\u00fc\\u00e7\\u00fck harf duyarl\\u0131\",\n\"Find whole words only\": \"Sadece t\\u00fcm kelimeyi ara\",\n\"Spell check\": \"Yaz\\u0131m denetimi\",\n\"Ignore\": \"Yoksay\",\n\"Ignore all\": \"T\\u00fcm\\u00fcn\\u00fc yoksay\",\n\"Finish\": \"Bitir\",\n\"Add to Dictionary\": \"S\\u00f6zl\\u00fc\\u011fe Ekle\",\n\"Insert table\": \"Tablo ekle\",\n\"Table properties\": \"Tablo \\u00f6zellikleri\",\n\"Delete table\": \"Tablo sil\",\n\"Cell\": \"H\\u00fccre\",\n\"Row\": \"Sat\\u0131r\",\n\"Column\": \"S\\u00fctun\",\n\"Cell properties\": \"H\\u00fccre \\u00f6zellikleri\",\n\"Merge cells\": \"H\\u00fccreleri birle\\u015ftir\",\n\"Split cell\": \"H\\u00fccre b\\u00f6l\",\n\"Insert row before\": \"\\u00dcste sat\\u0131r ekle\",\n\"Insert row after\": \"Alta sat\\u0131r ekle \",\n\"Delete row\": \"Sat\\u0131r sil\",\n\"Row properties\": \"Sat\\u0131r \\u00f6zellikleri\",\n\"Cut row\": \"Sat\\u0131r\\u0131 kes\",\n\"Copy row\": \"Sat\\u0131r\\u0131 kopyala\",\n\"Paste row before\": \"\\u00dcste sat\\u0131r yap\\u0131\\u015ft\\u0131r\",\n\"Paste row after\": \"Alta sat\\u0131r yap\\u0131\\u015ft\\u0131r\",\n\"Insert column before\": \"Sola s\\u00fctun ekle\",\n\"Insert column after\": \"Sa\\u011fa s\\u00fctun ekle\",\n\"Delete column\": \"S\\u00fctun sil\",\n\"Cols\": \"S\\u00fctunlar\",\n\"Rows\": \"Sat\\u0131rlar\",\n\"Width\": \"Geni\\u015flik\",\n\"Height\": \"Y\\u00fckseklik\",\n\"Cell spacing\": \"H\\u00fccre aral\\u0131\\u011f\\u0131\",\n\"Cell padding\": \"H\\u00fccre dolgusu\",\n\"Show caption\": \"Ba\\u015fl\\u0131\\u011f\\u0131 g\\u00f6ster\",\n\"Left\": \"Sol\",\n\"Center\": \"Orta\",\n\"Right\": \"Sa\\u011f\",\n\"Cell type\": \"H\\u00fccre tipi\",\n\"Scope\": \"Kapsam\",\n\"Alignment\": \"Hizalama\",\n\"H Align\": \"Yatay Hizalama\",\n\"V Align\": \"Dikey Hizalama\",\n\"Top\": \"\\u00dcst\",\n\"Middle\": \"Orta\",\n\"Bottom\": \"Alt\",\n\"Header cell\": \"Ba\\u015fl\\u0131k h\\u00fccresi\",\n\"Row group\": \"Sat\\u0131r grubu\",\n\"Column group\": \"S\\u00fctun grubu\",\n\"Row type\": \"Sat\\u0131r tipi\",\n\"Header\": \"Ba\\u015fl\\u0131k\",\n\"Body\": \"G\\u00f6vde\",\n\"Footer\": \"Alt\",\n\"Border color\": \"Kenarl\\u0131k rengi\",\n\"Insert template...\": \"\\u015eablon ekle...\",\n\"Templates\": \"\\u015eablonlar\",\n\"Template\": \"Taslak\",\n\"Text color\": \"Yaz\\u0131 rengi\",\n\"Background color\": \"Arka plan rengi\",\n\"Custom...\": \"\\u00d6zel...\",\n\"Custom color\": \"\\u00d6zel renk\",\n\"No color\": \"Renk yok\",\n\"Remove color\": \"Rengi kald\\u0131r\",\n\"Table of Contents\": \"\\u0130\\u00e7erik tablosu\",\n\"Show blocks\": \"Bloklar\\u0131 g\\u00f6ster\",\n\"Show invisible characters\": \"G\\u00f6r\\u00fcnmez karakterleri g\\u00f6ster\",\n\"Word count\": \"Kelime say\\u0131s\\u0131\",\n\"Count\": \"Say\\u0131m\",\n\"Document\": \"Belge\",\n\"Selection\": \"Se\\u00e7im\",\n\"Words\": \"S\\u00f6zc\\u00fck\",\n\"Words: {0}\": \"Kelime: {0}\",\n\"{0} words\": \"{0} words\",\n\"File\": \"Dosya\",\n\"Edit\": \"D\\u00fczenle\",\n\"Insert\": \"Ekle\",\n\"View\": \"G\\u00f6r\\u00fcn\\u00fcm\",\n\"Format\": \"Bi\\u00e7im\",\n\"Table\": \"Tablo\",\n\"Tools\": \"Ara\\u00e7lar\",\n\"Powered by {0}\": \"Powered by {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Zengin Metin Alan\\u0131. Men\\u00fc i\\u00e7in ALT-F9 tu\\u015funa bas\\u0131n\\u0131z. Ara\\u00e7 \\u00e7ubu\\u011fu i\\u00e7in ALT-F10 tu\\u015funa bas\\u0131n\\u0131z. Yard\\u0131m i\\u00e7in ALT-0 tu\\u015funa bas\\u0131n\\u0131z.\",\n\"Image title\": \"Resim ba\\u015fl\\u0131\\u011f\\u0131\",\n\"Border width\": \"Kenar geni\\u015fli\\u011fi\",\n\"Border style\": \"Kenar sitili\",\n\"Error\": \"Hata\",\n\"Warn\": \"Uyar\\u0131\",\n\"Valid\": \"Ge\\u00e7erli\",\n\"To open the popup, press Shift+Enter\": \"Popup'\\u0131 a\\u00e7mak i\\u00e7in Shift+Enter'a bas\\u0131n\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Zengin Metin Alan\\u0131. Yard\\u0131m i\\u00e7in Alt-0'a bas\\u0131n.\",\n\"System Font\": \"Sistem Yaz\\u0131 Tipi\",\n\"Failed to upload image: {0}\": \"Resim y\\u00fcklenemedi: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Eklenti y\\u00fcklenemedi: {1} url\\u2019sinden {0}\",\n\"Failed to load plugin url: {0}\": \"Url eklentisi y\\u00fcklenemedi: {0}\",\n\"Failed to initialize plugin: {0}\": \"Eklenti ba\\u015flat\\u0131lamad\\u0131: {0}\",\n\"example\": \"\\u00f6rnek\",\n\"Search\": \"Ara\",\n\"All\": \"T\\u00fcm\\u00fc\",\n\"Currency\": \"Para birimi\",\n\"Text\": \"Metin\",\n\"Quotations\": \"Al\\u0131nt\\u0131\",\n\"Mathematical\": \"Matematik\",\n\"Extended Latin\": \"Uzat\\u0131lm\\u0131\\u015f Latin\",\n\"Symbols\": \"Semboller\",\n\"Arrows\": \"Oklar\",\n\"User Defined\": \"Kullan\\u0131c\\u0131 Tan\\u0131ml\\u0131\",\n\"dollar sign\": \"dolar i\\u015fareti\",\n\"currency sign\": \"para birimi i\\u015fareti\",\n\"euro-currency sign\": \"euro para birimi i\\u015fareti\",\n\"colon sign\": \"colon i\\u015fareti\",\n\"cruzeiro sign\": \"cruzeiro i\\u015fareti\",\n\"french franc sign\": \"frans\\u0131z frang\\u0131 i\\u015fareti\",\n\"lira sign\": \"lira i\\u015fareti\",\n\"mill sign\": \"mill i\\u015fareti\",\n\"naira sign\": \"naira i\\u015fareti\",\n\"peseta sign\": \"peseta i\\u015fareti\",\n\"rupee sign\": \"rupi i\\u015fareti\",\n\"won sign\": \"won i\\u015fareti\",\n\"new sheqel sign\": \"yeni \\u015fekel i\\u015fareti\",\n\"dong sign\": \"dong i\\u015fareti\",\n\"kip sign\": \"kip i\\u015fareti\",\n\"tugrik sign\": \"tugrik i\\u015fareti\",\n\"drachma sign\": \"drahma i\\u015fareti\",\n\"german penny symbol\": \"alman kuru\\u015f sembol\\u00fc\",\n\"peso sign\": \"peso i\\u015fareti\",\n\"guarani sign\": \"guarani i\\u015fareti\",\n\"austral sign\": \"austral i\\u015fareti\",\n\"hryvnia sign\": \"hrivniya i\\u015fareti\",\n\"cedi sign\": \"cedi i\\u015fareti\",\n\"livre tournois sign\": \"livre tournois i\\u015fareti\",\n\"spesmilo sign\": \"spesmilo i\\u015fareti\",\n\"tenge sign\": \"tenge i\\u015fareti\",\n\"indian rupee sign\": \"hindistan rupisi i\\u015fareti\",\n\"turkish lira sign\": \"t\\u00fcrk liras\\u0131 i\\u015fareti\",\n\"nordic mark sign\": \"nordic i\\u015fareti\",\n\"manat sign\": \"manat i\\u015fareti\",\n\"ruble sign\": \"ruble i\\u015fareti\",\n\"yen character\": \"yen karakteri\",\n\"yuan character\": \"yuan karakteri\",\n\"yuan character, in hong kong and taiwan\": \"yuan karakteri, hong kong ve tayvan'da kullan\\u0131lan\",\n\"yen\\/yuan character variant one\": \"yen\\/yuan karakter de\\u011fi\\u015fkeni\",\n\"Loading emoticons...\": \"\\u0130fadeler y\\u00fckleniyor...\",\n\"Could not load emoticons\": \"\\u0130fadeler y\\u00fcklenemedi\",\n\"People\": \"\\u0130nsan\",\n\"Animals and Nature\": \"Hayvanlar ve Do\\u011fa\",\n\"Food and Drink\": \"Yiyecek ve \\u0130\\u00e7ecek\",\n\"Activity\": \"Etkinlik\",\n\"Travel and Places\": \"Gezi ve Yerler\",\n\"Objects\": \"Nesneler\",\n\"Flags\": \"Bayraklar\",\n\"Characters\": \"Karakter\",\n\"Characters (no spaces)\": \"Karakter (bo\\u015fluksuz)\",\n\"{0} characters\": \"{0} karakter\",\n\"Error: Form submit field collision.\": \"Hata: Form g\\u00f6nderme alan\\u0131 \\u00e7at\\u0131\\u015fmas\\u0131.\",\n\"Error: No form element found.\": \"Hata: Form eleman\\u0131 bulunamad\\u0131.\",\n\"Update\": \"G\\u00fcncelle\\u015ftir\",\n\"Color swatch\": \"Renk \\u00f6rne\\u011fi\",\n\"Turquoise\": \"Turkuaz\",\n\"Green\": \"Ye\\u015fil\",\n\"Blue\": \"Mavi\",\n\"Purple\": \"Mor\",\n\"Navy Blue\": \"Lacivert\",\n\"Dark Turquoise\": \"Koyu Turkuaz\",\n\"Dark Green\": \"Koyu Ye\\u015fil\",\n\"Medium Blue\": \"Donuk Mavi\",\n\"Medium Purple\": \"Orta Mor\",\n\"Midnight Blue\": \"Gece Yar\\u0131s\\u0131 Mavisi\",\n\"Yellow\": \"Sar\\u0131\",\n\"Orange\": \"Turuncu\",\n\"Red\": \"K\\u0131rm\\u0131z\\u0131\",\n\"Light Gray\": \"A\\u00e7\\u0131k Gri\",\n\"Gray\": \"Gri\",\n\"Dark Yellow\": \"Koyu Sar\\u0131\",\n\"Dark Orange\": \"Koyu Turuncu\",\n\"Dark Red\": \"Koyu K\\u0131rm\\u0131z\\u0131\",\n\"Medium Gray\": \"Orta Gri\",\n\"Dark Gray\": \"Koyu Gri\",\n\"Light Green\": \"A\\u00e7\\u0131k Ye\\u015fil\",\n\"Light Yellow\": \"A\\u00e7\\u0131k Sar\\u0131\",\n\"Light Red\": \"A\\u00e7\\u0131k K\\u0131rm\\u0131z\\u0131\",\n\"Light Purple\": \"A\\u00e7\\u0131k Mor\",\n\"Light Blue\": \"A\\u00e7\\u0131k Mavi\",\n\"Dark Purple\": \"Koyu Mor\",\n\"Dark Blue\": \"Lacivert\",\n\"Black\": \"Siyah\",\n\"White\": \"Beyaz\",\n\"Switch to or from fullscreen mode\": \"Tam ekran moduna ge\\u00e7 veya \\u00e7\\u0131k\",\n\"Open help dialog\": \"Yard\\u0131m penceresini a\\u00e7\",\n\"history\": \"ge\\u00e7mi\\u015f\",\n\"styles\": \"stiller\",\n\"formatting\": \"bi\\u00e7imlendirme\",\n\"alignment\": \"hizalanma\",\n\"indentation\": \"girinti\",\n\"permanent pen\": \"kal\\u0131c\\u0131 kalem\",\n\"comments\": \"yorumlar\",\n\"Format Painter\": \"Bi\\u00e7im Boyac\\u0131s\\u0131\",\n\"Insert\\/edit iframe\": \"\\u0130frame ekle\\/d\\u00fczenle\",\n\"Capitalization\": \"B\\u00fcy\\u00fck Harfle Yaz\\u0131m\",\n\"lowercase\": \"k\\u00fc\\u00e7\\u00fck harf\",\n\"UPPERCASE\": \"B\\u00dcY\\u00dcK HARF\",\n\"Title Case\": \"\\u0130lk Harfler B\\u00fcy\\u00fck\",\n\"Permanent Pen Properties\": \"Kal\\u0131c\\u0131 Kalem \\u00d6zellikleri\",\n\"Permanent pen properties...\": \"Kal\\u0131c\\u0131 kalem \\u00f6zellikleri...\",\n\"Font\": \"Yaz\\u0131 Tipi\",\n\"Size\": \"Boyut\",\n\"More...\": \"Devam\\u0131...\",\n\"Spellcheck Language\": \"Yaz\\u0131m Denetimi Dili\",\n\"Select...\": \"Se\\u00e7...\",\n\"Preferences\": \"Tercihler\",\n\"Yes\": \"Evet\",\n\"No\": \"Hay\\u0131r\",\n\"Keyboard Navigation\": \"Klavye Tu\\u015flar\\u0131\",\n\"Version\": \"S\\u00fcr\\u00fcm\",\n\"Anchor\": \"\\u00c7apa\",\n\"Special character\": \"\\u00d6zel karakter\",\n\"Code sample\": \"Code sample\",\n\"Color\": \"Renk\",\n\"Emoticons\": \"\\u0130fadeler\",\n\"Document properties\": \"Dok\\u00fcman \\u00f6zellikleri\",\n\"Image\": \"Resim\",\n\"Insert link\": \"Ba\\u011flant\\u0131 ekle\",\n\"Target\": \"Hedef\",\n\"Link\": \"Ba\\u011flant\\u0131\",\n\"Poster\": \"Poster\",\n\"Media\": \"Medya\",\n\"Print\": \"Yazd\\u0131r\",\n\"Prev\": \"\\u00d6nceki\",\n\"Find and replace\": \"Bul ve de\\u011fi\\u015ftir\",\n\"Whole words\": \"Tam kelimeler\",\n\"Spellcheck\": \"Yaz\\u0131m denetimi\",\n\"Caption\": \"Ba\\u015fl\\u0131k\",\n\"Insert template\": \"\\u015eablon ekle\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/tr_TR.js",
    "content": "tinymce.addI18n('tr_TR',{\n\"Redo\": \"Yinele\",\n\"Undo\": \"Geri al\",\n\"Cut\": \"Kes\",\n\"Copy\": \"Kopyala\",\n\"Paste\": \"Yap\\u0131\\u015ft\\u0131r\",\n\"Select all\": \"T\\u00fcm\\u00fcn\\u00fc se\\u00e7\",\n\"New document\": \"Yeni dok\\u00fcman\",\n\"Ok\": \"Tamam\",\n\"Cancel\": \"\\u0130ptal\",\n\"Visual aids\": \"G\\u00f6rsel ara\\u00e7lar\",\n\"Bold\": \"Kal\\u0131n\",\n\"Italic\": \"\\u0130talik\",\n\"Underline\": \"Alt\\u0131 \\u00e7izili\",\n\"Strikethrough\": \"\\u00dcst\\u00fc \\u00e7izgili\",\n\"Superscript\": \"\\u00dcst simge\",\n\"Subscript\": \"Alt simge\",\n\"Clear formatting\": \"Bi\\u00e7imi temizle\",\n\"Align left\": \"Sola hizala\",\n\"Align center\": \"Ortala\",\n\"Align right\": \"Sa\\u011fa hizala\",\n\"Justify\": \"\\u0130ki yana yasla\",\n\"Bullet list\": \"S\\u0131ras\\u0131z liste\",\n\"Numbered list\": \"S\\u0131ral\\u0131 liste\",\n\"Decrease indent\": \"Girintiyi azalt\",\n\"Increase indent\": \"Girintiyi art\\u0131r\",\n\"Close\": \"Kapat\",\n\"Formats\": \"Bi\\u00e7imler\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Taray\\u0131c\\u0131n\\u0131z panoya direk eri\\u015fimi desteklemiyor. L\\u00fctfen Ctrl+X\\/C\\/V klavye k\\u0131sayollar\\u0131n\\u0131 kullan\\u0131n.\",\n\"Headers\": \"Ba\\u015fl\\u0131klar\",\n\"Header 1\": \"Ba\\u015fl\\u0131k 1\",\n\"Header 2\": \"Ba\\u015fl\\u0131k 2\",\n\"Header 3\": \"Ba\\u015fl\\u0131k 3\",\n\"Header 4\": \"Ba\\u015fl\\u0131k 4\",\n\"Header 5\": \"Ba\\u015fl\\u0131k 5\",\n\"Header 6\": \"Ba\\u015fl\\u0131k 6\",\n\"Headings\": \"Ba\\u015fl\\u0131klar\",\n\"Heading 1\": \"Ba\\u015fl\\u0131k 1\",\n\"Heading 2\": \"Ba\\u015fl\\u0131k 2\",\n\"Heading 3\": \"Ba\\u015fl\\u0131k 3\",\n\"Heading 4\": \"Ba\\u015fl\\u0131k 4\",\n\"Heading 5\": \"Ba\\u015fl\\u0131k 5\",\n\"Heading 6\": \"Ba\\u015fl\\u0131k 6\",\n\"Preformatted\": \"\\u00d6nceden bi\\u00e7imlendirilmi\\u015f\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"Kod\",\n\"Paragraph\": \"Paragraf\",\n\"Blockquote\": \"Blockquote\",\n\"Inline\": \"Sat\\u0131r i\\u00e7i\",\n\"Blocks\": \"Bloklar\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"D\\u00fcz metin modunda yap\\u0131\\u015ft\\u0131r. Bu se\\u00e7ene\\u011fi kapatana kadar i\\u00e7erikler d\\u00fcz metin olarak yap\\u0131\\u015ft\\u0131r\\u0131l\\u0131r.\",\n\"Fonts\": \"Yaz\\u0131 Tipleri\",\n\"Font Sizes\": \"Yaz\\u0131tipi B\\u00fcy\\u00fckl\\u00fc\\u011f\\u00fc\",\n\"Class\": \"S\\u0131n\\u0131f\",\n\"Browse for an image\": \"Bir resim aray\\u0131n\",\n\"OR\": \"ya da\",\n\"Drop an image here\": \"Buraya bir resim koyun\",\n\"Upload\": \"Y\\u00fckle\",\n\"Block\": \"Blok\",\n\"Align\": \"Hizala\",\n\"Default\": \"Varsay\\u0131lan\",\n\"Circle\": \"Daire\",\n\"Disc\": \"Disk\",\n\"Square\": \"Kare\",\n\"Lower Alpha\": \"K\\u00fc\\u00e7\\u00fck ABC\",\n\"Lower Greek\": \"K\\u00fc\\u00e7\\u00fck Yunan alfabesi\",\n\"Lower Roman\": \"K\\u00fc\\u00e7\\u00fck Roman alfabesi\",\n\"Upper Alpha\": \"B\\u00fcy\\u00fck ABC\",\n\"Upper Roman\": \"B\\u00fcy\\u00fck Roman alfabesi\",\n\"Anchor...\": \"\\u00c7apa...\",\n\"Name\": \"\\u0130sim\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id bir harf ile ba\\u015flamal\\u0131d\\u0131r ve sadece harfleri, rakamlar\\u0131, \\u00e7izgileri, noktalar\\u0131, virg\\u00fclleri veya alt \\u00e7izgileri i\\u00e7ermelidir.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"Kaydedilmemi\\u015f de\\u011fi\\u015fiklikler var, sayfadan ayr\\u0131lmak istedi\\u011finize emin misiniz?\",\n\"Restore last draft\": \"Son tasla\\u011f\\u0131 kurtar\",\n\"Special characters...\": \"\\u00d6zel karakterler...\",\n\"Source code\": \"Kaynak kodu\",\n\"Insert\\/Edit code sample\": \"Kod \\u00f6rne\\u011fini Kaydet\\/D\\u00fczenle\",\n\"Language\": \"Dil\",\n\"Code sample...\": \"Kod \\u00f6rne\\u011fi...\",\n\"Color Picker\": \"Renk Se\\u00e7ici\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"B\": \"B\",\n\"Left to right\": \"Soldan sa\\u011fa\",\n\"Right to left\": \"Sa\\u011fdan sola\",\n\"Emoticons...\": \"\\u0130fadeler...\",\n\"Metadata and Document Properties\": \"\\u00d6nbilgi ve Belge \\u00d6zellikleri\",\n\"Title\": \"Ba\\u015fl\\u0131k\",\n\"Keywords\": \"Anahtar kelimeler\",\n\"Description\": \"A\\u00e7\\u0131klama\",\n\"Robots\": \"Robotlar\",\n\"Author\": \"Yazar\",\n\"Encoding\": \"Kodlama\",\n\"Fullscreen\": \"Tam ekran\",\n\"Action\": \"Eylem\",\n\"Shortcut\": \"K\\u0131sayol\",\n\"Help\": \"Yard\\u0131m\",\n\"Address\": \"Adres\",\n\"Focus to menubar\": \"Men\\u00fc \\u00e7ubu\\u011funa odaklan.\",\n\"Focus to toolbar\": \"Ara\\u00e7 \\u00e7ubu\\u011funa odaklan.\",\n\"Focus to element path\": \"Eleman yoluna odaklan\",\n\"Focus to contextual toolbar\": \"Ba\\u011flamsal ara\\u00e7 \\u00e7ubu\\u011funa odaklan\",\n\"Insert link (if link plugin activated)\": \"Link ekle (Link eklentisi aktif ise)\",\n\"Save (if save plugin activated)\": \"Kaydet (Kay\\u0131t eklentisi aktif ise)\",\n\"Find (if searchreplace plugin activated)\": \"Bul (SearchReplace eklentisi aktif ise)\",\n\"Plugins installed ({0}):\": \"Y\\u00fckl\\u00fc eklenti say\\u0131s\\u0131 : ({0}):\",\n\"Premium plugins:\": \"Premium eklentileri\",\n\"Learn more...\": \"Daha fazla bilgi edinin.\",\n\"You are using {0}\": \"{0} kullan\\u0131yorsun.\",\n\"Plugins\": \"Eklentiler\",\n\"Handy Shortcuts\": \"Kullan\\u0131\\u015fl\\u0131 K\\u0131sayollar\",\n\"Horizontal line\": \"Yatay \\u00e7izgi\",\n\"Insert\\/edit image\": \"Resim ekle\\/d\\u00fczenle\",\n\"Image description\": \"Resim a\\u00e7\\u0131klamas\\u0131\",\n\"Source\": \"Kaynak\",\n\"Dimensions\": \"Boyutlar\",\n\"Constrain proportions\": \"En - Boy oran\\u0131n\\u0131 koru\",\n\"General\": \"Genel\",\n\"Advanced\": \"Geli\\u015fmi\\u015f\",\n\"Style\": \"Stil\",\n\"Vertical space\": \"Dikey bo\\u015fluk\",\n\"Horizontal space\": \"Yatay bo\\u015fluk\",\n\"Border\": \"\\u00c7er\\u00e7eve\",\n\"Insert image\": \"Resim ekle\",\n\"Image...\": \"Resim...\",\n\"Image list\": \"Resim listesi\",\n\"Rotate counterclockwise\": \"Saat y\\u00f6n\\u00fcn\\u00fcn tersine d\\u00f6nd\\u00fcr\",\n\"Rotate clockwise\": \"Saat y\\u00f6n\\u00fcnde d\\u00f6nd\\u00fcr\",\n\"Flip vertically\": \"Dikey \\u00e7evir\",\n\"Flip horizontally\": \"Yatay \\u00e7evir\",\n\"Edit image\": \"G\\u00f6r\\u00fcnt\\u00fcy\\u00fc d\\u00fczenle\",\n\"Image options\": \"G\\u00f6r\\u00fcnt\\u00fc se\\u00e7enekleri\",\n\"Zoom in\": \"Yak\\u0131nla\\u015ft\\u0131r\",\n\"Zoom out\": \"Uzakla\\u015ft\\u0131r\",\n\"Crop\": \"Kes\",\n\"Resize\": \"Yeniden Boyutland\\u0131r\",\n\"Orientation\": \"Y\\u00f6n\\u00fcn\\u00fc Belirle\",\n\"Brightness\": \"Parlakl\\u0131k\",\n\"Sharpen\": \"Keskinle\\u015ftir\",\n\"Contrast\": \"Kontrast\",\n\"Color levels\": \"Renk seviyesi\",\n\"Gamma\": \"Gama\",\n\"Invert\": \"Tersine \\u00e7evir\",\n\"Apply\": \"Uygula\",\n\"Back\": \"Geri\",\n\"Insert date\\/time\": \"Tarih \\/ Zaman ekle\",\n\"Date\\/time\": \"Tarih\\/zaman\",\n\"Insert\\/Edit Link\": \"Ba\\u011flant\\u0131 Ekle\\/D\\u00fczenle\",\n\"Insert\\/edit link\": \"Ba\\u011flant\\u0131 ekle\\/d\\u00fczenle\",\n\"Text to display\": \"G\\u00f6r\\u00fcnen yaz\\u0131\",\n\"Url\": \"Url\",\n\"Open link in...\": \"Ba\\u011flant\\u0131y\\u0131 a\\u00e7...\",\n\"Current window\": \"Mevcut pencere\",\n\"None\": \"Hi\\u00e7biri\",\n\"New window\": \"Yeni pencere\",\n\"Remove link\": \"Ba\\u011flant\\u0131y\\u0131 kald\\u0131r\",\n\"Anchors\": \"\\u00c7apalar\",\n\"Link...\": \"Ba\\u011flant\\u0131...\",\n\"Paste or type a link\": \"Bir ba\\u011flant\\u0131 yap\\u0131\\u015ft\\u0131r\\u0131n yada yaz\\u0131n.\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"Girdi\\u011finiz URL bir eposta adresi gibi g\\u00f6z\\u00fck\\u00fcyor. Gerekli olan mailto: \\u00f6nekini eklemek ister misiniz?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"Girdi\\u011finiz URL bir d\\u0131\\u015f ba\\u011flant\\u0131 gibi g\\u00f6z\\u00fck\\u00fcyor. Gerekli olan http:\\/\\/ \\u00f6nekini eklemek ister misiniz?\",\n\"Link list\": \"Link listesi\",\n\"Insert video\": \"Video ekle\",\n\"Insert\\/edit video\": \"Video ekle\\/d\\u00fczenle\",\n\"Insert\\/edit media\": \"Medya ekle\\/d\\u00fczenle\",\n\"Alternative source\": \"Alternatif kaynak\",\n\"Alternative source URL\": \"Alternatif kaynak URL\",\n\"Media poster (Image URL)\": \"Medya posteri (Resim URL)\",\n\"Paste your embed code below:\": \"Medya g\\u00f6mme kodunu buraya yap\\u0131\\u015ft\\u0131r:\",\n\"Embed\": \"G\\u00f6mme\",\n\"Media...\": \"Medya...\",\n\"Nonbreaking space\": \"B\\u00f6l\\u00fcnemez bo\\u015fluk\",\n\"Page break\": \"Sayfa sonu\",\n\"Paste as text\": \"Metin olarak yap\\u0131\\u015ft\\u0131r\",\n\"Preview\": \"\\u00d6nizleme\",\n\"Print...\": \"Yazd\\u0131r...\",\n\"Save\": \"Kaydet\",\n\"Find\": \"Bul\",\n\"Replace with\": \"Bununla de\\u011fi\\u015ftir\",\n\"Replace\": \"De\\u011fi\\u015ftir\",\n\"Replace all\": \"T\\u00fcm\\u00fcn\\u00fc de\\u011fi\\u015ftir\",\n\"Previous\": \"Geri\",\n\"Next\": \"Sonraki\",\n\"Find and replace...\": \"Bul ve de\\u011fi\\u015ftir...\",\n\"Could not find the specified string.\": \"Herhangi bir sonu\\u00e7 bulunamad\\u0131.\",\n\"Match case\": \"B\\u00fcy\\u00fck \\/ K\\u00fc\\u00e7\\u00fck harfe duyarl\\u0131\",\n\"Find whole words only\": \"Sadece t\\u00fcm kelimeyi ara\",\n\"Spell check\": \"Yaz\\u0131m denetimi\",\n\"Ignore\": \"Yoksay\",\n\"Ignore all\": \"T\\u00fcm\\u00fcn\\u00fc yoksay\",\n\"Finish\": \"Bitir\",\n\"Add to Dictionary\": \"S\\u00f6zl\\u00fc\\u011fe ekle\",\n\"Insert table\": \"Tablo ekle\",\n\"Table properties\": \"Tablo \\u00f6zellikleri\",\n\"Delete table\": \"Tabloyu sil\",\n\"Cell\": \"H\\u00fccre\",\n\"Row\": \"Sat\\u0131r\",\n\"Column\": \"S\\u00fctun\",\n\"Cell properties\": \"H\\u00fccre \\u00f6zellikleri\",\n\"Merge cells\": \"H\\u00fccreleri birle\\u015ftir\",\n\"Split cell\": \"H\\u00fccreleri ay\\u0131r\",\n\"Insert row before\": \"\\u00d6ncesine yeni sat\\u0131r ekle\",\n\"Insert row after\": \"Sonras\\u0131na yeni sat\\u0131r ekle\",\n\"Delete row\": \"Sat\\u0131r\\u0131 sil\",\n\"Row properties\": \"Sat\\u0131r \\u00f6zellikleri\",\n\"Cut row\": \"Sat\\u0131r\\u0131 kes\",\n\"Copy row\": \"Sat\\u0131r\\u0131 kopyala\",\n\"Paste row before\": \"\\u00d6ncesine sat\\u0131r yap\\u0131\\u015ft\\u0131r\",\n\"Paste row after\": \"Sonras\\u0131na sat\\u0131r  yap\\u0131\\u015ft\\u0131r\",\n\"Insert column before\": \"\\u00d6ncesine yeni s\\u00fctun ekle\",\n\"Insert column after\": \"Sonras\\u0131na yeni s\\u00fctun ekle\",\n\"Delete column\": \"S\\u00fctunu sil\",\n\"Cols\": \"S\\u00fctunlar\",\n\"Rows\": \"Sat\\u0131rlar\",\n\"Width\": \"Geni\\u015flik\",\n\"Height\": \"Y\\u00fckseklik\",\n\"Cell spacing\": \"H\\u00fccre aral\\u0131\\u011f\\u0131\",\n\"Cell padding\": \"H\\u00fccre i\\u00e7 bo\\u015flu\\u011fu\",\n\"Show caption\": \"Ba\\u015fl\\u0131\\u011f\\u0131 g\\u00f6ster\",\n\"Left\": \"Sol\",\n\"Center\": \"Orta\",\n\"Right\": \"Sa\\u011f\",\n\"Cell type\": \"H\\u00fccre tipi\",\n\"Scope\": \"Kapsam\",\n\"Alignment\": \"Hizalama\",\n\"H Align\": \"Yatay Hizalama\",\n\"V Align\": \"Dikey Hizalama\",\n\"Top\": \"\\u00dcst\",\n\"Middle\": \"Orta\",\n\"Bottom\": \"Alt\",\n\"Header cell\": \"Ba\\u015fl\\u0131k h\\u00fccresi\",\n\"Row group\": \"Sat\\u0131r grubu\",\n\"Column group\": \"S\\u00fctun grubu\",\n\"Row type\": \"Sat\\u0131r tipi\",\n\"Header\": \"Ba\\u015fl\\u0131k\",\n\"Body\": \"G\\u00f6vde\",\n\"Footer\": \"Alt\",\n\"Border color\": \"Kenarl\\u0131k Rengi\",\n\"Insert template...\": \"\\u015eablon ekle...\",\n\"Templates\": \"\\u015eablonlar\",\n\"Template\": \"Tema\",\n\"Text color\": \"Yaz\\u0131 rengi\",\n\"Background color\": \"Arkaplan rengi\",\n\"Custom...\": \"\\u00d6zel\",\n\"Custom color\": \"\\u00d6zel Renk\",\n\"No color\": \"Renk Yok\",\n\"Remove color\": \"Rengi kald\\u0131r\",\n\"Table of Contents\": \"\\u0130\\u00e7indekiler\",\n\"Show blocks\": \"Bloklar\\u0131 g\\u00f6r\\u00fcnt\\u00fcle\",\n\"Show invisible characters\": \"G\\u00f6r\\u00fcnmez karakterleri g\\u00f6ster\",\n\"Word count\": \"Kelime say\\u0131s\\u0131\",\n\"Words: {0}\": \"Kelime: {0}\",\n\"{0} words\": \"{0} kelime\",\n\"File\": \"Dosya\",\n\"Edit\": \"D\\u00fczenle\",\n\"Insert\": \"Ekle\",\n\"View\": \"G\\u00f6r\\u00fcnt\\u00fcle\",\n\"Format\": \"Bi\\u00e7im\",\n\"Table\": \"Tablo\",\n\"Tools\": \"Ara\\u00e7lar\",\n\"Powered by {0}\": \"{0} taraf\\u0131ndan yap\\u0131lm\\u0131\\u015ft\\u0131r \",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Zengin Metin Alan\\u0131. Men\\u00fc i\\u00e7in ALT-F9 k\\u0131sayolunu kullan\\u0131n. Ara\\u00e7 \\u00e7ubu\\u011fu i\\u00e7in ALT-F10 k\\u0131sayolunu kullan\\u0131n. Yard\\u0131m i\\u00e7in ALT-0 k\\u0131sayolunu kullan\\u0131n.\",\n\"Image title\": \"Resim ba\\u015fl\\u0131\\u011f\\u0131\",\n\"Border width\": \"Kenar geni\\u015fli\\u011fi\",\n\"Border style\": \"Kenar sitili\",\n\"Error\": \"Hata\",\n\"Warn\": \"Uyar\\u0131\",\n\"Valid\": \"Ge\\u00e7erli\",\n\"To open the popup, press Shift+Enter\": \"Popup'\\u0131 a\\u00e7mak i\\u00e7in Shift+Enter'a bas\\u0131n\",\n\"Rich Text Area. Press ALT-0 for help.\": \"Zengin Metin Alan\\u0131. Yard\\u0131m i\\u00e7in Alt-0'a bas\\u0131n.\",\n\"System Font\": \"Sistem Yaz\\u0131 Tipi\",\n\"Failed to upload image: {0}\": \"Resim y\\u00fcklenemedi: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"Eklenti y\\u00fcklenemedi: {1} url\\u2019sinden {0} \",\n\"Failed to load plugin url: {0}\": \"Url eklentisi y\\u00fcklenemedi: {0}\",\n\"Failed to initialize plugin: {0}\": \"Eklenti ba\\u015flat\\u0131lamad\\u0131: {0}\",\n\"example\": \"\\u00f6rnek\",\n\"Search\": \"Ara\",\n\"All\": \"T\\u00fcm\\u00fc\",\n\"Currency\": \"Para birimi\",\n\"Text\": \"Metin\",\n\"Quotations\": \"Al\\u0131nt\\u0131\",\n\"Mathematical\": \"Matematik\",\n\"Extended Latin\": \"Uzat\\u0131lm\\u0131\\u015f Latin\",\n\"Symbols\": \"Semboller\",\n\"Arrows\": \"Oklar\",\n\"User Defined\": \"Kullan\\u0131c\\u0131 Tan\\u0131ml\\u0131\",\n\"dollar sign\": \"dolar i\\u015fareti\",\n\"currency sign\": \"para birimi i\\u015fareti\",\n\"euro-currency sign\": \"euro para birimi i\\u015fareti\",\n\"colon sign\": \"colon i\\u015fareti\",\n\"cruzeiro sign\": \"cruzeiro i\\u015fareti\",\n\"french franc sign\": \"frans\\u0131z frang\\u0131 i\\u015fareti\",\n\"lira sign\": \"lira i\\u015fareti\",\n\"mill sign\": \"mill i\\u015fareti\",\n\"naira sign\": \"naira i\\u015fareti\",\n\"peseta sign\": \"peseta i\\u015fareti\",\n\"rupee sign\": \"rupi i\\u015fareti\",\n\"won sign\": \"won i\\u015fareti\",\n\"new sheqel sign\": \"yeni \\u015fekel i\\u015fareti\",\n\"dong sign\": \"dong i\\u015fareti\",\n\"kip sign\": \"kip i\\u015fareti\",\n\"tugrik sign\": \"tugrik i\\u015fareti\",\n\"drachma sign\": \"drahma i\\u015fareti\",\n\"german penny symbol\": \"alman kuru\\u015f sembol\\u00fc\",\n\"peso sign\": \"peso i\\u015fareti\",\n\"guarani sign\": \"guarani i\\u015fareti\",\n\"austral sign\": \"austral i\\u015fareti\",\n\"hryvnia sign\": \"hrivniya i\\u015fareti\",\n\"cedi sign\": \"cedi i\\u015fareti\",\n\"livre tournois sign\": \"livre tournois i\\u015fareti\",\n\"spesmilo sign\": \"spesmilo i\\u015fareti\",\n\"tenge sign\": \"tenge i\\u015fareti\",\n\"indian rupee sign\": \"hindistan rupisi i\\u015fareti\",\n\"turkish lira sign\": \"t\\u00fcrk liras\\u0131 i\\u015fareti\",\n\"nordic mark sign\": \"nordic i\\u015fareti\",\n\"manat sign\": \"manat i\\u015fareti\",\n\"ruble sign\": \"ruble i\\u015fareti\",\n\"yen character\": \"yen karakteri\",\n\"yuan character\": \"yuan karakteri\",\n\"yuan character, in hong kong and taiwan\": \"yuan karakteri, hong kong ve tayvan'da kullan\\u0131lan\",\n\"yen\\/yuan character variant one\": \"yen\\/yuan karakter de\\u011fi\\u015fkeni\",\n\"Loading emoticons...\": \"\\u0130fadeler y\\u00fckleniyor...\",\n\"Could not load emoticons\": \"\\u0130fadeler y\\u00fcklenemedi\",\n\"People\": \"\\u0130nsan\",\n\"Animals and Nature\": \"Hayvanlar ve Do\\u011fa\",\n\"Food and Drink\": \"Yiyecek ve \\u0130\\u00e7ecek\",\n\"Activity\": \"Etkinlik\",\n\"Travel and Places\": \"Gezi ve Yerler\",\n\"Objects\": \"Nesneler\",\n\"Flags\": \"Bayraklar\",\n\"Characters\": \"Karakter\",\n\"Characters (no spaces)\": \"Karakter (bo\\u015fluksuz)\",\n\"Error: Form submit field collision.\": \"Hata: Form g\\u00f6nderme alan\\u0131 \\u00e7at\\u0131\\u015fmas\\u0131.\",\n\"Error: No form element found.\": \"Hata: Form eleman\\u0131 bulunamad\\u0131.\",\n\"Update\": \"G\\u00fcncelle\\u015ftir\",\n\"Color swatch\": \"Renk \\u00f6rne\\u011fi\",\n\"Turquoise\": \"Turkuaz\",\n\"Green\": \"Ye\\u015fil\",\n\"Blue\": \"Mavi\",\n\"Purple\": \"Mor\",\n\"Navy Blue\": \"Lacivert\",\n\"Dark Turquoise\": \"Koyu Turkuaz\",\n\"Dark Green\": \"Koyu Ye\\u015fil\",\n\"Medium Blue\": \"Donuk Mavi\",\n\"Medium Purple\": \"Orta Mor\",\n\"Midnight Blue\": \"Gece Yar\\u0131s\\u0131 Mavisi\",\n\"Yellow\": \"Sar\\u0131\",\n\"Orange\": \"Turuncu\",\n\"Red\": \"K\\u0131rm\\u0131z\\u0131\",\n\"Light Gray\": \"A\\u00e7\\u0131k Gri\",\n\"Gray\": \"Gri\",\n\"Dark Yellow\": \"Koyu Sar\\u0131\",\n\"Dark Orange\": \"Koyu Turuncu\",\n\"Dark Red\": \"Koyu K\\u0131rm\\u0131z\\u0131\",\n\"Medium Gray\": \"Orta Gri\",\n\"Dark Gray\": \"Koyu Gri\",\n\"Black\": \"Siyah\",\n\"White\": \"Beyaz\",\n\"Switch to or from fullscreen mode\": \"Tam ekran moduna ge\\u00e7 veya \\u00e7\\u0131k\",\n\"Open help dialog\": \"Yard\\u0131m penceresini a\\u00e7\",\n\"history\": \"ge\\u00e7mi\\u015f\",\n\"styles\": \"stiller\",\n\"formatting\": \"bi\\u00e7imlendirme\",\n\"alignment\": \"hizalanma\",\n\"indentation\": \"girinti\",\n\"permanent pen\": \"kal\\u0131c\\u0131 kalem\",\n\"comments\": \"yorumlar\",\n\"Anchor\": \"\\u00c7apa\",\n\"Special character\": \"\\u00d6zel karakter\",\n\"Code sample\": \"Kod \\u00f6rne\\u011fi\",\n\"Color\": \"Renk\",\n\"Emoticons\": \"G\\u00fcl\\u00fcc\\u00fckler\",\n\"Document properties\": \"Dok\\u00fcman \\u00f6zellikleri\",\n\"Image\": \"Resim\",\n\"Insert link\": \"Ba\\u011flant\\u0131 ekle\",\n\"Target\": \"Hedef\",\n\"Link\": \"Ba\\u011flant\\u0131\",\n\"Poster\": \"Poster\",\n\"Media\": \"Medya\",\n\"Print\": \"Yazd\\u0131r\",\n\"Prev\": \"\\u00d6nceki\",\n\"Find and replace\": \"Bul ve de\\u011fi\\u015ftir\",\n\"Whole words\": \"Tam s\\u00f6zc\\u00fckler\",\n\"Spellcheck\": \"Yaz\\u0131m denetimi\",\n\"Caption\": \"Ba\\u015fl\\u0131k\",\n\"Insert template\": \"\\u015eablon ekle\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/uk.js",
    "content": "tinymce.addI18n('uk',{\n\"Redo\": \"\\u041f\\u043e\\u0432\\u0442\\u043e\\u0440\\u0438\\u0442\\u0438\",\n\"Undo\": \"\\u0421\\u043a\\u0430\\u0441\\u0443\\u0432\\u0430\\u0442\\u0438\",\n\"Cut\": \"\\u0412\\u0438\\u0440\\u0456\\u0437\\u0430\\u0442\\u0438\",\n\"Copy\": \"\\u041a\\u043e\\u043f\\u0456\\u044e\\u0432\\u0430\\u0442\\u0438\",\n\"Paste\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438\",\n\"Select all\": \"\\u0412\\u0438\\u0434\\u0456\\u043b\\u0438\\u0442\\u0438 \\u0432\\u0441\\u0435\",\n\"New document\": \"\\u0421\\u0442\\u0432\\u043e\\u0440\\u0438\\u0442\\u0438 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\",\n\"Ok\": \"\\u0413\\u0430\\u0440\\u0430\\u0437\\u0434\",\n\"Cancel\": \"\\u0421\\u043a\\u0430\\u0441\\u0443\\u0432\\u0430\\u0442\\u0438\",\n\"Visual aids\": \"\\u041d\\u0430\\u043e\\u0447\\u043d\\u0456 \\u043f\\u0440\\u0438\\u043b\\u0430\\u0434\\u0434\\u044f\",\n\"Bold\": \"\\u0416\\u0438\\u0440\\u043d\\u0438\\u0439\",\n\"Italic\": \"\\u041a\\u0443\\u0440\\u0441\\u0438\\u0432\",\n\"Underline\": \"\\u041f\\u0456\\u0434\\u043a\\u0440\\u0435\\u0441\\u043b\\u0435\\u043d\\u043d\\u044f\",\n\"Strikethrough\": \"\\u041f\\u0435\\u0440\\u0435\\u043a\\u0440\\u0435\\u0441\\u043b\\u0435\\u043d\\u043d\\u044f\",\n\"Superscript\": \"\\u041d\\u0430\\u0434\\u0440\\u044f\\u0434\\u043a\\u043e\\u0432\\u0438\\u0439 \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b\",\n\"Subscript\": \"\\u041f\\u0456\\u0434\\u0440\\u044f\\u0434\\u043a\\u043e\\u0432\\u0438\\u0439 \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b\",\n\"Clear formatting\": \"\\u041e\\u0447\\u0438\\u0441\\u0442\\u0438\\u0442\\u0438 \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0443\\u0432\\u0430\\u043d\\u043d\\u044f\",\n\"Align left\": \"\\u041f\\u043e \\u043b\\u0456\\u0432\\u043e\\u043c\\u0443 \\u043a\\u0440\\u0430\\u044e\",\n\"Align center\": \"\\u0412\\u0438\\u0440\\u0456\\u0432\\u043d\\u044f\\u0442\\u0438 \\u043f\\u043e \\u0446\\u0435\\u043d\\u0442\\u0440\\u0443\",\n\"Align right\": \"\\u0412\\u0438\\u0440\\u0456\\u0432\\u043d\\u044f\\u0442\\u0438 \\u0437\\u0430 \\u043f\\u0440\\u0430\\u0432\\u0438\\u043c \\u043a\\u0440\\u0430\\u0454\\u043c\",\n\"Justify\": \"\\u0412\\u0438\\u0440\\u0456\\u0432\\u043d\\u044e\\u0432\\u0430\\u043d\\u043d\\u044f\",\n\"Bullet list\": \"\\u041d\\u0435\\u043d\\u0443\\u043c\\u0435\\u0440\\u043e\\u0432\\u0430\\u043d\\u0438\\u0439 \\u0441\\u043f\\u0438\\u0441\\u043e\\u043a\",\n\"Numbered list\": \"\\u041d\\u0443\\u043c\\u0435\\u0440\\u043e\\u0432\\u0430\\u043d\\u0438\\u0439 \\u0441\\u043f\\u0438\\u0441\\u043e\\u043a\",\n\"Decrease indent\": \"\\u0417\\u043c\\u0435\\u043d\\u0448\\u0438\\u0442\\u0438 \\u0432\\u0456\\u0434\\u0441\\u0442\\u0443\\u043f\",\n\"Increase indent\": \"\\u0417\\u0431\\u0456\\u043b\\u044c\\u0448\\u0438\\u0442\\u0438 \\u0432\\u0456\\u0434\\u0441\\u0442\\u0443\\u043f\",\n\"Close\": \"\\u0417\\u0430\\u043a\\u0440\\u0438\\u0442\\u0438\",\n\"Formats\": \"\\u0424\\u043e\\u0440\\u043c\\u0430\\u0442\\u0438\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u0412\\u0430\\u0448 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440 \\u043d\\u0435 \\u043f\\u0456\\u0434\\u0442\\u0440\\u0438\\u043c\\u0443\\u0454 \\u043f\\u0440\\u044f\\u043c\\u0438\\u0439 \\u0434\\u043e\\u0441\\u0442\\u0443\\u043f \\u0434\\u043e \\u0431\\u0443\\u0444\\u0435\\u0440\\u0430 \\u043e\\u0431\\u043c\\u0456\\u043d\\u0443. \\u0412\\u0438\\u043a\\u043e\\u0440\\u0438\\u0441\\u0442\\u043e\\u0432\\u0443\\u0439\\u0442\\u0435 \\u043d\\u0430\\u0442\\u043e\\u043c\\u0456\\u0441\\u0442\\u044c \\u0441\\u043f\\u043e\\u043b\\u0443\\u0447\\u0435\\u043d\\u043d\\u044f \\u043a\\u043b\\u0430\\u0432\\u0456\\u0448 Ctrl\\u00a0+\\u00a0C\\/V\\/X.\",\n\"Headers\": \"\\u041a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b\\u0438\",\n\"Header 1\": \"\\u041a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b 1\",\n\"Header 2\": \"\\u041a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b 2\",\n\"Header 3\": \"\\u041a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b 3\",\n\"Header 4\": \"\\u041a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b 4\",\n\"Header 5\": \"\\u041a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b 5\",\n\"Header 6\": \"\\u041a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b 6\",\n\"Headings\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043a\\u0438\",\n\"Heading 1\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a 1\",\n\"Heading 2\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a 2\",\n\"Heading 3\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a 3\",\n\"Heading 4\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a 4\",\n\"Heading 5\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a 5\",\n\"Heading 6\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a 6\",\n\"Preformatted\": \"\\u0424\\u043e\\u0440\\u043c\\u0430\\u0442\\u043e\\u0432\\u0430\\u043d\\u0438\\u0439\",\n\"Div\": \"\\u0420\\u043e\\u0437\\u0434\\u0456\\u043b\",\n\"Pre\": \"\\u041f\\u043e\\u043f\\u0435\\u0440\\u0435\\u0434\\u043d\\u0454 \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0443\\u0432\\u0430\\u043d\\u043d\\u044f\",\n\"Code\": \"\\u041a\\u043e\\u0434\",\n\"Paragraph\": \"\\u0410\\u0431\\u0437\\u0430\\u0446\",\n\"Blockquote\": \"\\u0411\\u043b\\u043e\\u043a \\u0446\\u0438\\u0442\\u0443\\u0432\\u0430\\u043d\\u043d\\u044f\",\n\"Inline\": \"\\u0420\\u044f\\u0434\\u043a\\u043e\\u0432\\u0438\\u0439\",\n\"Blocks\": \"\\u0411\\u043b\\u043e\\u043a\\u0438\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u043a\\u0430 \\u0437\\u0434\\u0456\\u0439\\u0441\\u043d\\u044e\\u0454\\u0442\\u044c\\u0441\\u044f \\u0443 \\u0432\\u0438\\u0433\\u043b\\u044f\\u0434\\u0456 \\u043f\\u0440\\u043e\\u0441\\u0442\\u043e\\u0433\\u043e \\u0442\\u0435\\u043a\\u0441\\u0442\\u0443, \\u043f\\u043e\\u043a\\u0438 \\u043d\\u0435 \\u0432\\u0456\\u0434\\u043a\\u043b\\u044e\\u0447\\u0438\\u0442\\u0438 \\u0434\\u0430\\u043d\\u0443 \\u043e\\u043f\\u0446\\u0456\\u044e.\",\n\"Fonts\": \"\\u0428\\u0440\\u0438\\u0444\\u0442\\u0438\",\n\"Font Sizes\": \"\\u0420\\u043e\\u0437\\u043c\\u0456\\u0440\\u0438 \\u0448\\u0440\\u0438\\u0444\\u0442\\u0443\",\n\"Class\": \"\\u041a\\u043b\\u0430\\u0441\",\n\"Browse for an image\": \"\\u0412\\u0438\\u0431\\u0435\\u0440\\u0456\\u0442\\u044c \\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f\",\n\"OR\": \"\\u0410\\u0411\\u041e\",\n\"Drop an image here\": \"\\u041f\\u0435\\u0440\\u0435\\u043c\\u0456\\u0441\\u0442\\u0456\\u0442\\u044c \\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f \\u0441\\u044e\\u0434\\u0438\",\n\"Upload\": \"\\u0417\\u0430\\u0432\\u0430\\u043d\\u0442\\u0430\\u0436\\u0438\\u0442\\u0438\",\n\"Block\": \"\\u0411\\u043b\\u043e\\u043a\",\n\"Align\": \"\\u0412\\u0438\\u0440\\u0456\\u0432\\u043d\\u044e\\u0432\\u0430\\u043d\\u043d\\u044f\",\n\"Default\": \"\\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0438\\u0439\",\n\"Circle\": \"\\u041e\\u043a\\u0440\\u0443\\u0436\\u043d\\u043e\\u0441\\u0442\\u0456\",\n\"Disc\": \"\\u041a\\u0440\\u0443\\u0433\\u0438\",\n\"Square\": \"\\u041a\\u0432\\u0430\\u0434\\u0440\\u0430\\u0442\\u0438\",\n\"Lower Alpha\": \"\\u041c\\u0430\\u043b\\u0456 \\u043b\\u0430\\u0442\\u0438\\u043d\\u0441\\u044c\\u043a\\u0456 \\u0431\\u0443\\u043a\\u0432\\u0438\",\n\"Lower Greek\": \"\\u041c\\u0430\\u043b\\u0456 \\u0433\\u0440\\u0435\\u0446\\u044c\\u043a\\u0456 \\u0431\\u0443\\u043a\\u0432\\u0438\",\n\"Lower Roman\": \"\\u041c\\u0430\\u043b\\u0456 \\u0440\\u0438\\u043c\\u0441\\u044c\\u043a\\u0456 \\u0446\\u0438\\u0444\\u0440\\u0438\",\n\"Upper Alpha\": \"\\u0412\\u0435\\u043b\\u0438\\u043a\\u0456 \\u043b\\u0430\\u0442\\u0438\\u043d\\u0441\\u044c\\u043a\\u0456 \\u0431\\u0443\\u043a\\u0432\\u0438\",\n\"Upper Roman\": \"\\u0420\\u0438\\u043c\\u0441\\u044c\\u043a\\u0456 \\u0446\\u0438\\u0444\\u0440\\u0438\",\n\"Anchor...\": \"\\u042f\\u043a\\u0456\\u0440\\u2026\",\n\"Name\": \"\\u041d\\u0430\\u0437\\u0432\\u0430\",\n\"Id\": \"\\u041a\\u043e\\u0434\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"\\u041a\\u043e\\u0434 \\u043c\\u0430\\u0454 \\u043f\\u043e\\u0447\\u0438\\u043d\\u0430\\u0442\\u0438\\u0441\\u044f \\u0437 \\u043b\\u0456\\u0442\\u0435\\u0440\\u0438 \\u0456 \\u043c\\u043e\\u0436\\u0435 \\u043c\\u0456\\u0441\\u0442\\u0438\\u0442\\u0438 \\u043b\\u0438\\u0448\\u0435 \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b\\u0438 \\u043b\\u0456\\u0442\\u0435\\u0440, \\u0446\\u0438\\u0444\\u0440, \\u0434\\u0435\\u0444\\u0456\\u0441\\u0443, \\u043a\\u0440\\u0430\\u043f\\u043a\\u0438, \\u043a\\u043e\\u043c\\u0438 \\u0430\\u0431\\u043e \\u043d\\u0438\\u0436\\u043d\\u044c\\u043e\\u0433\\u043e \\u043f\\u0456\\u0434\\u043a\\u0440\\u0435\\u0441\\u043b\\u0435\\u043d\\u043d\\u044f.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u0423 \\u0412\\u0430\\u0441 \\u0454 \\u043d\\u0435\\u0437\\u0431\\u0435\\u0440\\u0435\\u0436\\u0435\\u043d\\u0456 \\u0437\\u043c\\u0456\\u043d\\u0438. \\u0412\\u0438 \\u0432\\u043f\\u0435\\u0432\\u043d\\u0435\\u043d\\u0456, \\u0449\\u043e \\u0445\\u043e\\u0447\\u0435\\u0442\\u0435 \\u043f\\u0456\\u0442\\u0438?\",\n\"Restore last draft\": \"\\u0412\\u0456\\u0434\\u043d\\u043e\\u0432\\u043b\\u0435\\u043d\\u043d\\u044f \\u043e\\u0441\\u0442\\u0430\\u043d\\u043d\\u044c\\u043e\\u0433\\u043e \\u043f\\u0440\\u043e\\u0435\\u043a\\u0442\\u0443\",\n\"Special character...\": \"\\u0421\\u043f\\u0435\\u0446\\u0456\\u0430\\u043b\\u044c\\u043d\\u0438\\u0439 \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b\\u2026\",\n\"Source code\": \"\\u0412\\u0438\\u0445\\u0456\\u0434\\u043d\\u0438\\u0439 \\u043a\\u043e\\u0434\",\n\"Insert\\/Edit code sample\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438\\/\\u0437\\u043c\\u0456\\u043d\\u0438\\u0442\\u0438 \\u043f\\u0440\\u0438\\u043a\\u043b\\u0430\\u0434 \\u043a\\u043e\\u0434\\u0443\",\n\"Language\": \"\\u041c\\u043e\\u0432\\u0430\",\n\"Code sample...\": \"\\u041f\\u0440\\u0438\\u043a\\u043b\\u0430\\u0434 \\u043a\\u043e\\u0434\\u0443\\u2026\",\n\"Color Picker\": \"\\u041f\\u0456\\u043f\\u0435\\u0442\\u043a\\u0430 \\u043a\\u043e\\u043b\\u044c\\u043e\\u0440\\u0443\",\n\"R\": \"\\u0427\",\n\"G\": \"\\u0417\",\n\"B\": \"\\u0411\",\n\"Left to right\": \"\\u0417\\u043b\\u0456\\u0432\\u0430 \\u043d\\u0430\\u043f\\u0440\\u0430\\u0432\\u043e\",\n\"Right to left\": \"\\u0421\\u043f\\u0440\\u0430\\u0432\\u0430 \\u043d\\u0430\\u043b\\u0456\\u0432\\u043e\",\n\"Emoticons...\": \"\\u0421\\u043c\\u0430\\u0439\\u043b\\u0438\\u043a\\u0438\\u2026\",\n\"Metadata and Document Properties\": \"\\u041c\\u0435\\u0442\\u0430\\u0434\\u0430\\u043d\\u0456 \\u0456 \\u0432\\u043b\\u0430\\u0441\\u0442\\u0438\\u0432\\u043e\\u0441\\u0442\\u0456 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\\u0430\",\n\"Title\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a\",\n\"Keywords\": \"\\u041a\\u043b\\u044e\\u0447\\u043e\\u0432\\u0456 \\u0441\\u043b\\u043e\\u0432\\u0430\",\n\"Description\": \"\\u041e\\u043f\\u0438\\u0441\",\n\"Robots\": \"\\u0420\\u043e\\u0431\\u043e\\u0442\\u0438\",\n\"Author\": \"\\u0410\\u0432\\u0442\\u043e\\u0440\",\n\"Encoding\": \"\\u041a\\u043e\\u0434\\u0443\\u0432\\u0430\\u043d\\u043d\\u044f\",\n\"Fullscreen\": \"\\u041f\\u043e\\u0432\\u043d\\u043e\\u0435\\u043a\\u0440\\u0430\\u043d\\u043d\\u0438\\u0439 \\u0440\\u0435\\u0436\\u0438\\u043c\",\n\"Action\": \"\\u0414\\u0456\\u044f\",\n\"Shortcut\": \"\\u042f\\u0440\\u043b\\u0438\\u043a\",\n\"Help\": \"\\u0414\\u043e\\u043f\\u043e\\u043c\\u043e\\u0433\\u0430\",\n\"Address\": \"\\u0410\\u0434\\u0440\\u0435\\u0441\\u0430\",\n\"Focus to menubar\": \"\\u0424\\u043e\\u043a\\u0443\\u0441 \\u043d\\u0430 \\u043c\\u0435\\u043d\\u044e\",\n\"Focus to toolbar\": \"\\u0424\\u043e\\u043a\\u0443\\u0441 \\u043d\\u0430 \\u0456\\u043d\\u0441\\u0442\\u0440\\u0443\\u043c\\u0435\\u043d\\u0442\\u0430\\u0445\",\n\"Focus to element path\": \"\\u0424\\u043e\\u043a\\u0443\\u0441 \\u043d\\u0430 \\u0448\\u043b\\u044f\\u0445\\u0443\",\n\"Focus to contextual toolbar\": \"\\u0424\\u043e\\u043a\\u0443\\u0441 \\u043d\\u0430 \\u043a\\u043e\\u043d\\u0442\\u0435\\u043a\\u0441\\u0442\\u0456\",\n\"Insert link (if link plugin activated)\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f (\\u044f\\u043a\\u0449\\u043e \\u043f\\u043b\\u0430\\u0433\\u0456\\u043d \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u044c \\u0430\\u043a\\u0442\\u0438\\u0432\\u043e\\u0432\\u0430\\u043d\\u0438\\u0439)\",\n\"Save (if save plugin activated)\": \"\\u0417\\u0431\\u0435\\u0440\\u0435\\u0433\\u0442\\u0438 (\\u044f\\u043a\\u0449\\u043e \\u043f\\u043b\\u0430\\u0433\\u0456\\u043d \\u0437\\u0431\\u0435\\u0440\\u0435\\u0436\\u0435\\u043d\\u043d\\u044f \\u0430\\u043a\\u0442\\u0438\\u0432\\u043e\\u0432\\u0430\\u043d\\u043e)\",\n\"Find (if searchreplace plugin activated)\": \"\\u0417\\u043d\\u0430\\u0439\\u0442\\u0438 (\\u044f\\u043a\\u0449\\u043e \\u043f\\u043b\\u0430\\u0433\\u0456\\u043d \\u043f\\u043e\\u0448\\u0443\\u043a\\u0443 \\u0430\\u043a\\u0442\\u0438\\u0432\\u043e\\u0432\\u0430\\u043d\\u043e)\",\n\"Plugins installed ({0}):\": \"\\u0412\\u0441\\u0442\\u0430\\u043d\\u043e\\u0432\\u043b\\u0435\\u043d\\u0456 \\u043f\\u043b\\u0430\\u0433\\u0456\\u043d\\u0438 ({0}):\",\n\"Premium plugins:\": \"\\u041f\\u0440\\u0435\\u043c\\u0456\\u0443\\u043c \\u043f\\u043b\\u0430\\u0433\\u0456\\u043d\\u0438:\",\n\"Learn more...\": \"\\u0414\\u043e\\u0434\\u0430\\u0442\\u043a\\u043e\\u0432\\u043e...\",\n\"You are using {0}\": \"\\u0423 \\u0432\\u0438\\u043a\\u043e\\u0440\\u0438\\u0441\\u0442\\u0430\\u043d\\u043d\\u0456 {0}\",\n\"Plugins\": \"\\u041f\\u043b\\u0430\\u0433\\u0456\\u043d\\u0438\",\n\"Handy Shortcuts\": \"\\u041a\\u043b\\u0430\\u0432\\u0456\\u0430\\u0442\\u0443\\u0440\\u043d\\u0456 \\u0441\\u043a\\u043e\\u0440\\u043e\\u0447\\u0435\\u043d\\u043d\\u044f\",\n\"Horizontal line\": \"\\u0413\\u043e\\u0440\\u0438\\u0437\\u043e\\u043d\\u0442\\u0430\\u043b\\u044c\\u043d\\u0430 \\u043b\\u0456\\u043d\\u0456\\u044f\",\n\"Insert\\/edit image\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438\\/\\u0437\\u043c\\u0456\\u043d\\u0438\\u0442\\u0438 \\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f\",\n\"Image description\": \"\\u041e\\u043f\\u0438\\u0441 \\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f\",\n\"Source\": \"\\u0414\\u0436\\u0435\\u0440\\u0435\\u043b\\u043e\",\n\"Dimensions\": \"\\u0420\\u043e\\u0437\\u043c\\u0456\\u0440\",\n\"Constrain proportions\": \"\\u0417\\u0431\\u0435\\u0440\\u0456\\u0433\\u0430\\u0442\\u0438 \\u043f\\u0440\\u043e\\u043f\\u043e\\u0440\\u0446\\u0456\\u0457\",\n\"General\": \"\\u0417\\u0430\\u0433\\u0430\\u043b\\u044c\\u043d\\u0456\",\n\"Advanced\": \"\\u0420\\u043e\\u0437\\u0448\\u0438\\u0440\\u0435\\u043d\\u0456\",\n\"Style\": \"\\u0421\\u0442\\u0438\\u043b\\u044c\",\n\"Vertical space\": \"\\u0412\\u0435\\u0440\\u0442\\u0438\\u043a\\u0430\\u043b\\u044c\\u043d\\u0438\\u0439 \\u0456\\u043d\\u0442\\u0435\\u0440\\u0432\\u0430\\u043b\",\n\"Horizontal space\": \"\\u0413\\u043e\\u0440\\u0438\\u0437\\u043e\\u043d\\u0442\\u0430\\u043b\\u044c\\u043d\\u0438\\u0439 \\u0456\\u043d\\u0442\\u0435\\u0440\\u0432\\u0430\\u043b\",\n\"Border\": \"\\u041c\\u0435\\u0436\\u0430\",\n\"Insert image\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f\",\n\"Image...\": \"\\u0417\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f\\u2026\",\n\"Image list\": \"\\u041f\\u0435\\u0440\\u0435\\u043b\\u0456\\u043a \\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u044c\",\n\"Rotate counterclockwise\": \"\\u041f\\u043e\\u0432\\u0435\\u0440\\u043d\\u0443\\u0442\\u0438 \\u043f\\u0440\\u043e\\u0442\\u0438 \\u0433\\u043e\\u0434\\u0438\\u043d\\u043d\\u0438\\u043a\\u043e\\u0432\\u043e\\u0457 \\u0441\\u0442\\u0440\\u0456\\u043b\\u043a\\u0438\",\n\"Rotate clockwise\": \"\\u041f\\u043e\\u0432\\u0435\\u0440\\u043d\\u0443\\u0442\\u0438 \\u0437\\u0430 \\u0433\\u043e\\u0434\\u0438\\u043d\\u043d\\u0438\\u043a\\u043e\\u0432\\u043e\\u044e \\u0441\\u0442\\u0440\\u0456\\u043b\\u043a\\u043e\\u044e\",\n\"Flip vertically\": \"\\u0412\\u0456\\u0434\\u043e\\u0431\\u0440\\u0430\\u0437\\u0438\\u0442\\u0438 \\u043f\\u043e \\u0432\\u0435\\u0440\\u0442\\u0438\\u043a\\u0430\\u043b\\u0456\",\n\"Flip horizontally\": \"\\u0412\\u0456\\u0434\\u043e\\u0431\\u0440\\u0430\\u0437\\u0438\\u0442\\u0438 \\u043f\\u043e \\u0433\\u043e\\u0440\\u0438\\u0437\\u043e\\u043d\\u0442\\u0430\\u043b\\u0456\",\n\"Edit image\": \"\\u0420\\u0435\\u0434\\u0430\\u0433\\u0443\\u0432\\u0430\\u0442\\u0438 \\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f\",\n\"Image options\": \"\\u041d\\u0430\\u043b\\u0430\\u0448\\u0442\\u0443\\u0432\\u0430\\u043d\\u043d\\u044f \\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f\",\n\"Zoom in\": \"\\u041d\\u0430\\u0431\\u043b\\u0438\\u0437\\u0438\\u0442\\u0438\",\n\"Zoom out\": \"\\u0412\\u0456\\u0434\\u0434\\u0430\\u043b\\u0438\\u0442\\u0438\",\n\"Crop\": \"\\u041e\\u0431\\u0440\\u0456\\u0437\\u0430\\u0442\\u0438\",\n\"Resize\": \"\\u0417\\u043c\\u0456\\u043d\\u0438\\u0442\\u0438 \\u0440\\u043e\\u0437\\u043c\\u0456\\u0440\",\n\"Orientation\": \"\\u041e\\u0440\\u0456\\u0454\\u043d\\u0442\\u0430\\u0446\\u0456\\u044f\",\n\"Brightness\": \"\\u042f\\u0441\\u043a\\u0440\\u0430\\u0432\\u0456\\u0441\\u0442\\u044c\",\n\"Sharpen\": \"\\u0427\\u0456\\u0442\\u043a\\u0456\\u0441\\u0442\\u044c\",\n\"Contrast\": \"\\u041a\\u043e\\u043d\\u0442\\u0440\\u0430\\u0441\\u0442\",\n\"Color levels\": \"\\u0420\\u0456\\u0432\\u043d\\u0456 \\u043a\\u043e\\u043b\\u044c\\u043e\\u0440\\u0456\\u0432\",\n\"Gamma\": \"\\u0413\\u0430\\u043c\\u043c\\u0430\",\n\"Invert\": \"\\u0406\\u043d\\u0432\\u0435\\u0440\\u0441\\u0456\\u044f\",\n\"Apply\": \"\\u0417\\u0430\\u0441\\u0442\\u043e\\u0441\\u0443\\u0432\\u0430\\u0442\\u0438\",\n\"Back\": \"\\u041f\\u043e\\u0432\\u0435\\u0440\\u043d\\u0443\\u0442\\u0438\\u0441\\u044f\",\n\"Insert date\\/time\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u0434\\u0430\\u0442\\u0443\\/\\u0447\\u0430\\u0441\",\n\"Date\\/time\": \"\\u0414\\u0430\\u0442\\u0430\\/\\u0447\\u0430\\u0441\",\n\"Insert\\/Edit Link\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438\\/\\u0440\\u0435\\u0434\\u0430\\u0433\\u0443\\u0432\\u0430\\u0442\\u0438 \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f\",\n\"Insert\\/edit link\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438\\/\\u0440\\u0435\\u0434\\u0430\\u0433\\u0443\\u0432\\u0430\\u0442\\u0438 \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f\",\n\"Text to display\": \"\\u0422\\u0435\\u043a\\u0441\\u0442 \\u0434\\u043b\\u044f \\u0432\\u0456\\u0434\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f\",\n\"Url\": \"\\u0410\\u0434\\u0440\\u0435\\u0441\\u0430 \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f\",\n\"Open link in...\": \"\\u0412\\u0456\\u0434\\u043a\\u0440\\u0438\\u0442\\u0438 \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f \\u0432\\u2026\",\n\"Current window\": \"\\u0423 \\u043f\\u043e\\u0442\\u043e\\u0447\\u043d\\u043e\\u043c\\u0443 \\u0432\\u0456\\u043a\\u043d\\u0456\",\n\"None\": \"\\u041d\\u0456\",\n\"New window\": \"\\u0423 \\u043d\\u043e\\u0432\\u043e\\u043c\\u0443 \\u0432\\u0456\\u043a\\u043d\\u0456\",\n\"Remove link\": \"\\u0412\\u0438\\u0434\\u0430\\u043b\\u0438\\u0442\\u0438 \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f\",\n\"Anchors\": \"\\u042f\\u043a\\u043e\\u0440\\u0456\",\n\"Link...\": \"\\u041f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f\\u2026\",\n\"Paste or type a link\": \"\\u041d\\u0430\\u043f\\u0438\\u0441\\u0430\\u0442\\u0438 \\u0430\\u0431\\u043e \\u0432\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u0421\\u0445\\u043e\\u0436\\u0435, \\u0449\\u043e \\u0432\\u0438 \\u0432\\u0432\\u0435\\u043b\\u0438 \\u0430\\u0434\\u0440\\u0435\\u0441\\u0443 \\u0435\\u043b\\u0435\\u043a\\u0442\\u0440\\u043e\\u043d\\u043d\\u043e\\u0457 \\u043f\\u043e\\u0448\\u0442\\u0438. \\u0412\\u0438 \\u0431\\u0430\\u0436\\u0430\\u0454\\u0442\\u0435 \\u0434\\u043e\\u0434\\u0430\\u0442\\u0438 mailto: \\u043f\\u0440\\u0435\\u0444\\u0456\\u043a\\u0441?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u0421\\u0445\\u043e\\u0436\\u0435, \\u0449\\u043e \\u0432\\u0438 \\u0432\\u0432\\u0435\\u043b\\u0438 \\u0437\\u043e\\u0432\\u043d\\u0456\\u0448\\u043d\\u0454 \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f. \\u0412\\u0438 \\u0431\\u0430\\u0436\\u0430\\u0454\\u0442\\u0435 \\u0434\\u043e\\u0434\\u0430\\u0442\\u0438 http:\\/\\/ \\u043f\\u0440\\u0435\\u0444\\u0456\\u043a\\u0441?\",\n\"Link list\": \"\\u041f\\u0435\\u0440\\u0435\\u043b\\u0456\\u043a \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u044c\",\n\"Insert video\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u0432\\u0456\\u0434\\u0435\\u043e\",\n\"Insert\\/edit video\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438\\/\\u0440\\u0435\\u0434\\u0430\\u0433\\u0443\\u0432\\u0430\\u0442\\u0438 \\u0432\\u0456\\u0434\\u0435\\u043e\",\n\"Insert\\/edit media\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438\\/\\u0440\\u0435\\u0434\\u0430\\u0433\\u0443\\u0432\\u0430\\u0442\\u0438 \\u0430\\u0443\\u0434\\u0456\\u043e\",\n\"Alternative source\": \"\\u0410\\u043b\\u044c\\u0442\\u0435\\u0440\\u043d\\u0430\\u0442\\u0438\\u0432\\u043d\\u0435 \\u0434\\u0436\\u0435\\u0440\\u0435\\u043b\\u043e\",\n\"Alternative source URL\": \"\\u041f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f \\u043d\\u0430 \\u0430\\u043b\\u044c\\u0442\\u0435\\u0440\\u043d\\u0430\\u0442\\u0438\\u0432\\u043d\\u0435 \\u0434\\u0436\\u0435\\u0440\\u0435\\u043b\\u043e\",\n\"Media poster (Image URL)\": \"\\u0421\\u0432\\u0456\\u0442\\u043b\\u0438\\u043d\\u0430 \\u043c\\u0435\\u0434\\u0456\\u0430 (\\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f \\u043d\\u0430 \\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f)\",\n\"Paste your embed code below:\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0442\\u0435 \\u0432\\u0430\\u0448 \\u043a\\u043e\\u0434 \\u043d\\u0438\\u0436\\u0447\\u0435:\",\n\"Embed\": \"\\u041a\\u043e\\u0434 \\u0434\\u043b\\u044f \\u0432\\u0441\\u0442\\u0430\\u0432\\u043a\\u0438\",\n\"Media...\": \"\\u041c\\u0435\\u0434\\u0456\\u0430\\u2026\",\n\"Nonbreaking space\": \"\\u041d\\u0435\\u0440\\u043e\\u0437\\u0440\\u0438\\u0432\\u043d\\u0438\\u0439 \\u043f\\u0440\\u043e\\u0431\\u0456\\u043b\",\n\"Page break\": \"\\u0420\\u043e\\u0437\\u0440\\u0438\\u0432 \\u0441\\u0442\\u043e\\u0440\\u0456\\u043d\\u043a\\u0438\",\n\"Paste as text\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u044f\\u043a \\u0442\\u0435\\u043a\\u0441\\u0442\",\n\"Preview\": \"\\u041f\\u043e\\u043f\\u0435\\u0440\\u0435\\u0434\\u043d\\u0456\\u0439 \\u043f\\u0435\\u0440\\u0435\\u0433\\u043b\\u044f\\u0434\",\n\"Print...\": \"\\u0414\\u0440\\u0443\\u043a\\u0443\\u0432\\u0430\\u0442\\u0438\\u2026\",\n\"Save\": \"\\u0417\\u0431\\u0435\\u0440\\u0435\\u0433\\u0442\\u0438\",\n\"Find\": \"\\u0417\\u043d\\u0430\\u0439\\u0442\\u0438\",\n\"Replace with\": \"\\u0417\\u0430\\u043c\\u0456\\u043d\\u0438\\u0442\\u0438 \\u043d\\u0430\",\n\"Replace\": \"\\u0417\\u0430\\u043c\\u0456\\u043d\\u0438\\u0442\\u0438\",\n\"Replace all\": \"\\u0417\\u0430\\u043c\\u0456\\u043d\\u0438\\u0442\\u0438 \\u0432\\u0441\\u0435\",\n\"Previous\": \"\\u041f\\u043e\\u043f\\u0435\\u0440\\u0435\\u0434\\u043d\\u0456\\u0439\",\n\"Next\": \"\\u0412\\u043d\\u0438\\u0437\",\n\"Find and replace...\": \"\\u041f\\u043e\\u0448\\u0443\\u043a \\u0456 \\u0437\\u0430\\u043c\\u0456\\u043d\\u0430\\u2026\",\n\"Could not find the specified string.\": \"\\u0412\\u043a\\u0430\\u0437\\u0430\\u043d\\u0438\\u0439 \\u0440\\u044f\\u0434\\u043e\\u043a \\u043d\\u0435 \\u0437\\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u043e\",\n\"Match case\": \"\\u0412\\u0440\\u0430\\u0445\\u043e\\u0432\\u0443\\u0432\\u0430\\u0442\\u0438 \\u0440\\u0435\\u0433\\u0456\\u0441\\u0442\\u0440\",\n\"Find whole words only\": \"\\u0428\\u0443\\u043a\\u0430\\u0442\\u0438 \\u0442\\u0456\\u043b\\u044c\\u043a\\u0438 \\u0446\\u0456\\u043b\\u0456 \\u0441\\u043b\\u043e\\u0432\\u0430\",\n\"Spell check\": \"\\u041f\\u0435\\u0440\\u0435\\u0432\\u0456\\u0440\\u043a\\u0430 \\u043f\\u0440\\u0430\\u0432\\u043e\\u043f\\u0438\\u0441\\u0443\",\n\"Ignore\": \"\\u0406\\u0433\\u043d\\u043e\\u0440\\u0443\\u0432\\u0430\\u0442\\u0438\",\n\"Ignore all\": \"\\u0406\\u0433\\u043d\\u043e\\u0440\\u0443\\u0432\\u0430\\u0442\\u0438 \\u0432\\u0441\\u0435\",\n\"Finish\": \"\\u0417\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u0442\\u0438\",\n\"Add to Dictionary\": \"\\u0414\\u043e\\u0434\\u0430\\u0442\\u0438 \\u0434\\u043e \\u0421\\u043b\\u043e\\u0432\\u043d\\u0438\\u043a\\u0430\",\n\"Insert table\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u044e\",\n\"Table properties\": \"\\u0412\\u043b\\u0430\\u0441\\u0442\\u0438\\u0432\\u043e\\u0441\\u0442\\u0456 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u0456\",\n\"Delete table\": \"\\u0412\\u0438\\u0434\\u0430\\u043b\\u0438\\u0442\\u0438 \\u0442\\u0430\\u0431\\u043b\\u0438\\u0446\\u044e\",\n\"Cell\": \"\\u041a\\u043e\\u043c\\u0456\\u0440\\u043a\\u0430\",\n\"Row\": \"\\u0420\\u044f\\u0434\\u043e\\u043a\",\n\"Column\": \"\\u0421\\u0442\\u043e\\u0432\\u043f\\u0435\\u0446\\u044c\",\n\"Cell properties\": \"\\u041f\\u0430\\u0440\\u0430\\u043c\\u0435\\u0442\\u0440\\u0438 \\u043a\\u043e\\u043c\\u0456\\u0440\\u043a\\u0438\",\n\"Merge cells\": \"\\u041e\\u0431'\\u0454\\u0434\\u043d\\u0430\\u0442\\u0438 \\u043a\\u043e\\u043c\\u0456\\u0440\\u043a\\u0438\",\n\"Split cell\": \"\\u0420\\u043e\\u0437\\u0431\\u0438\\u0442\\u0438 \\u043a\\u043e\\u043c\\u0456\\u0440\\u043a\\u0443\",\n\"Insert row before\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u043f\\u043e\\u0440\\u043e\\u0436\\u043d\\u0456\\u0439 \\u0440\\u044f\\u0434\\u043e\\u043a \\u0437\\u0432\\u0435\\u0440\\u0445\\u0443\",\n\"Insert row after\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u043f\\u043e\\u0440\\u043e\\u0436\\u043d\\u0456\\u0439 \\u0440\\u044f\\u0434\\u043e\\u043a \\u0437\\u043d\\u0438\\u0437\\u0443\",\n\"Delete row\": \"\\u0412\\u0438\\u0434\\u0430\\u043b\\u0438\\u0442\\u0438 \\u0440\\u044f\\u0434\\u043e\\u043a\",\n\"Row properties\": \"\\u041f\\u0430\\u0440\\u0430\\u043c\\u0435\\u0442\\u0440\\u0438 \\u0440\\u044f\\u0434\\u043a\\u0430\",\n\"Cut row\": \"\\u0412\\u0438\\u0440\\u0456\\u0437\\u0430\\u0442\\u0438 \\u0440\\u044f\\u0434\\u043e\\u043a\",\n\"Copy row\": \"\\u041a\\u043e\\u043f\\u0456\\u044e\\u0432\\u0430\\u0442\\u0438 \\u0440\\u044f\\u0434\\u043e\\u043a\",\n\"Paste row before\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u0440\\u044f\\u0434\\u043e\\u043a \\u0437\\u0432\\u0435\\u0440\\u0445\\u0443\",\n\"Paste row after\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u0440\\u044f\\u0434\\u043e\\u043a \\u0437\\u043d\\u0438\\u0437\\u0443\",\n\"Insert column before\": \"\\u0414\\u043e\\u0434\\u0430\\u0442\\u0438 \\u0441\\u0442\\u043e\\u0432\\u043f\\u0435\\u0446\\u044c \\u043b\\u0456\\u0432\\u043e\\u0440\\u0443\\u0447\",\n\"Insert column after\": \"\\u0414\\u043e\\u0434\\u0430\\u0442\\u0438 \\u0441\\u0442\\u043e\\u0432\\u043f\\u0435\\u0446\\u044c \\u043f\\u0440\\u0430\\u0432\\u043e\\u0440\\u0443\\u0447\",\n\"Delete column\": \"\\u0412\\u0438\\u0434\\u0430\\u043b\\u0438\\u0442\\u0438 \\u0441\\u0442\\u043e\\u0432\\u043f\\u0435\\u0446\\u044c\",\n\"Cols\": \"\\u0421\\u0442\\u043e\\u0432\\u043f\\u0446\\u0456\",\n\"Rows\": \"\\u0420\\u044f\\u0434\\u043a\\u0438\",\n\"Width\": \"\\u0428\\u0438\\u0440\\u0438\\u043d\\u0430\",\n\"Height\": \"\\u0412\\u0438\\u0441\\u043e\\u0442\\u0430\",\n\"Cell spacing\": \"\\u0412\\u0456\\u0434\\u0441\\u0442\\u0430\\u043d\\u044c \\u043c\\u0456\\u0436 \\u043a\\u043e\\u043c\\u0456\\u0440\\u043a\\u0430\\u043c\\u0438\",\n\"Cell padding\": \"\\u041f\\u043e\\u043b\\u044f \\u043a\\u043e\\u043c\\u0456\\u0440\\u043e\\u043a\",\n\"Show caption\": \"\\u041f\\u043e\\u043a\\u0430\\u0437\\u0443\\u0432\\u0430\\u0442\\u0438 \\u0437\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a\",\n\"Left\": \"\\u041f\\u043e \\u043b\\u0456\\u0432\\u043e\\u043c\\u0443 \\u043a\\u0440\\u0430\\u044e\",\n\"Center\": \"\\u041f\\u043e \\u0446\\u0435\\u043d\\u0442\\u0440\\u0443\",\n\"Right\": \"\\u041f\\u043e \\u043f\\u0440\\u0430\\u0432\\u043e\\u043c\\u0443 \\u043a\\u0440\\u0430\\u044e\",\n\"Cell type\": \"\\u0422\\u0438\\u043f \\u043a\\u043e\\u043c\\u0456\\u0440\\u043a\\u0438\",\n\"Scope\": \"\\u0421\\u0444\\u0435\\u0440\\u0430\",\n\"Alignment\": \"\\u0412\\u0438\\u0440\\u0456\\u0432\\u043d\\u044e\\u0432\\u0430\\u043d\\u043d\\u044f\",\n\"H Align\": \"\\u0413\\u043e\\u0440\\u0438\\u0437\\u043e\\u043d\\u0442\\u0430\\u043b\\u044c\\u043d\\u0435  \\u0432\\u0438\\u0440\\u0456\\u0432\\u043d\\u044e\\u0432\\u0430\\u043d\\u043d\\u044f\",\n\"V Align\": \"\\u0412\\u0435\\u0440\\u0442\\u0438\\u043a\\u0430\\u043b\\u044c\\u043d\\u0435 \\u0432\\u0438\\u0440\\u0456\\u0432\\u043d\\u044e\\u0432\\u0430\\u043d\\u043d\\u044f\",\n\"Top\": \"\\u041f\\u043e \\u0432\\u0435\\u0440\\u0445\\u043d\\u044c\\u043e\\u043c\\u0443 \\u043a\\u0440\\u0430\\u044e\",\n\"Middle\": \"\\u041f\\u043e \\u0446\\u0435\\u043d\\u0442\\u0440\\u0443\",\n\"Bottom\": \"\\u041f\\u043e \\u043d\\u0438\\u0436\\u043d\\u044c\\u043e\\u043c\\u0443 \\u043a\\u0440\\u0430\\u044e\",\n\"Header cell\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a\",\n\"Row group\": \"\\u0413\\u0440\\u0443\\u043f\\u0430 \\u0440\\u044f\\u0434\\u043a\\u0456\\u0432\",\n\"Column group\": \"\\u0413\\u0440\\u0443\\u043f\\u0430 \\u0441\\u0442\\u043e\\u0432\\u043f\\u0446\\u0456\\u0432\",\n\"Row type\": \"\\u0422\\u0438\\u043f \\u0440\\u044f\\u0434\\u043a\\u0430\",\n\"Header\": \"\\u0412\\u0435\\u0440\\u0445\\u043d\\u0456\\u0439 \\u043a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b\",\n\"Body\": \"\\u0422\\u0456\\u043b\\u043e\",\n\"Footer\": \"\\u041d\\u0438\\u0436\\u043d\\u0456\\u0439 \\u043a\\u043e\\u043b\\u043e\\u043d\\u0442\\u0438\\u0442\\u0443\\u043b\",\n\"Border color\": \"\\u043a\\u043e\\u043b\\u0456\\u0440 \\u0440\\u0430\\u043c\\u043a\\u0438\",\n\"Insert template...\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u0448\\u0430\\u0431\\u043b\\u043e\\u043d\\u2026\",\n\"Templates\": \"\\u0428\\u0430\\u0431\\u043b\\u043e\\u043d\\u0438\",\n\"Template\": \"\\u0428\\u0430\\u0431\\u043b\\u043e\\u043d\",\n\"Text color\": \"\\u041a\\u043e\\u043b\\u0456\\u0440 \\u0442\\u0435\\u043a\\u0441\\u0442\\u0443\",\n\"Background color\": \"\\u041a\\u043e\\u043b\\u0456\\u0440 \\u0444\\u043e\\u043d\\u0443\",\n\"Custom...\": \"\\u043a\\u043e\\u0440\\u0438\\u0441\\u0442\\u0443\\u0432\\u0430\\u0446\\u044c\\u043a\\u0438\\u0439\",\n\"Custom color\": \"\\u043a\\u043e\\u0440\\u0438\\u0441\\u0442\\u0443\\u0432\\u0430\\u0446\\u044c\\u043a\\u0438\\u0439 \\u043a\\u043e\\u043b\\u0456\\u0440\",\n\"No color\": \"\\u0431\\u0435\\u0437 \\u043a\\u043e\\u043b\\u044c\\u043e\\u0440\\u0443\",\n\"Remove color\": \"\\u0412\\u0438\\u0434\\u0430\\u043b\\u0438\\u0442\\u0438 \\u043a\\u043e\\u043b\\u0456\\u0440\",\n\"Table of Contents\": \"\\u0417\\u043c\\u0456\\u0441\\u0442\",\n\"Show blocks\": \"\\u041f\\u043e\\u043a\\u0430\\u0437\\u0443\\u0432\\u0430\\u0442\\u0438 \\u0431\\u043b\\u043e\\u043a\\u0438\",\n\"Show invisible characters\": \"\\u041f\\u043e\\u043a\\u0430\\u0437\\u0443\\u0432\\u0430\\u0442\\u0438 \\u043d\\u0435\\u0432\\u0438\\u0434\\u0438\\u043c\\u0456 \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b\\u0438\",\n\"Word count\": \"\\u041a\\u0456\\u043b\\u044c\\u043a\\u0456\\u0441\\u0442\\u044c \\u0441\\u043b\\u0456\\u0432\",\n\"Count\": \"\\u041b\\u0456\\u0447\\u0438\\u043b\\u044c\\u043d\\u0438\\u043a\",\n\"Document\": \"\\u0414\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\",\n\"Selection\": \"\\u0412\\u0438\\u0434\\u0456\\u043b\\u0435\\u043d\\u043d\\u044f\",\n\"Words\": \"\\u0421\\u043b\\u043e\\u0432\\u0430\",\n\"Words: {0}\": \"\\u041a\\u0456\\u043b\\u044c\\u043a\\u0456\\u0441\\u0442\\u044c \\u0441\\u043b\\u0456\\u0432: {0}\",\n\"{0} words\": \"{0} \\u0441\\u043b\\u0456\\u0432\",\n\"File\": \"\\u0424\\u0430\\u0439\\u043b\",\n\"Edit\": \"\\u0417\\u043c\\u0456\\u043d\\u0438\\u0442\\u0438\",\n\"Insert\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438\",\n\"View\": \"\\u0412\\u0438\\u0433\\u043b\\u044f\\u0434\",\n\"Format\": \"\\u0424\\u043e\\u0440\\u043c\\u0430\\u0442\",\n\"Table\": \"\\u0422\\u0430\\u0431\\u043b\\u0438\\u0446\\u044f\",\n\"Tools\": \"\\u0406\\u043d\\u0441\\u0442\\u0440\\u0443\\u043c\\u0435\\u043d\\u0442\\u0438\",\n\"Powered by {0}\": \"\\u041f\\u0440\\u0430\\u0446\\u044e\\u0454 \\u043d\\u0430 {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u0422\\u0435\\u043a\\u0441\\u0442\\u043e\\u0432\\u0435 \\u043f\\u043e\\u043b\\u0435. \\u041d\\u0430\\u0442\\u0438\\u0441\\u043d\\u0456\\u0442\\u044c ALT-F9 \\u0449\\u043e\\u0431 \\u0432\\u0438\\u043a\\u043b\\u0438\\u043a\\u0430\\u0442\\u0438 \\u043c\\u0435\\u043d\\u044e, ALT-F10 \\u043f\\u0430\\u043d\\u0435\\u043b\\u044c \\u0456\\u043d\\u0441\\u0442\\u0440\\u0443\\u043c\\u0435\\u043d\\u0442\\u0456\\u0432, ALT-0 \\u0434\\u043b\\u044f \\u0432\\u0438\\u043a\\u043b\\u0438\\u043a\\u0443 \\u0434\\u043e\\u043f\\u043e\\u043c\\u043e\\u0433\\u0438.\",\n\"Image title\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a \\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f\",\n\"Border width\": \"\\u0428\\u0438\\u0440\\u0438\\u043d\\u0430 \\u043c\\u0435\\u0436\\u0456\",\n\"Border style\": \"\\u0421\\u0442\\u0438\\u043b\\u044c \\u043c\\u0435\\u0436\\u0456\",\n\"Error\": \"\\u041f\\u043e\\u043c\\u0438\\u043b\\u043a\\u0430\",\n\"Warn\": \"\\u041f\\u043e\\u043f\\u0435\\u0440\\u0435\\u0434\\u0436\\u0435\\u043d\\u043d\\u044f\",\n\"Valid\": \"\\u0412\\u0456\\u0440\\u043d\\u0438\\u0439\",\n\"To open the popup, press Shift+Enter\": \"\\u0429\\u043e\\u0431 \\u0432\\u0456\\u0434\\u043a\\u0440\\u0438\\u0442\\u0438 \\u0441\\u043f\\u043b\\u0438\\u0432\\u043d\\u0435 \\u0432\\u0456\\u043a\\u043d\\u043e, \\u043d\\u0430\\u0442\\u0438\\u0441\\u043d\\u0456\\u0442\\u044c Shift\\u00a0+\\u00a0Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u041e\\u0431\\u043b\\u0430\\u0441\\u0442\\u044c \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u043e\\u0432\\u0430\\u043d\\u043e\\u0433\\u043e \\u0442\\u0435\\u043a\\u0441\\u0442\\u0443. \\u041d\\u0430\\u0442\\u0438\\u0441\\u043d\\u0456\\u0442\\u044c ALT\\u00a0+\\u00a00, \\u0449\\u043e\\u0431 \\u0432\\u0456\\u0434\\u043a\\u0440\\u0438\\u0442\\u0438 \\u0434\\u043e\\u0432\\u0456\\u0434\\u043a\\u0443.\",\n\"System Font\": \"\\u0421\\u0438\\u0441\\u0442\\u0435\\u043c\\u043d\\u0438\\u0439 \\u0448\\u0440\\u0438\\u0444\\u0442\",\n\"Failed to upload image: {0}\": \"\\u041d\\u0435 \\u0432\\u0434\\u0430\\u043b\\u043e\\u0441\\u044f \\u0432\\u0456\\u0434\\u0432\\u0430\\u043d\\u0442\\u0430\\u0436\\u0438\\u0442\\u0438 \\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f: {0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u041d\\u0435 \\u0432\\u0434\\u0430\\u043b\\u043e\\u0441\\u044f \\u0437\\u0430\\u0432\\u0430\\u043d\\u0442\\u0430\\u0436\\u0438\\u0442\\u0438 \\u043f\\u043b\\u0430\\u0491\\u0456\\u043d: {0} \\u0437\\u0430 \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f\\u043c {1}\",\n\"Failed to load plugin url: {0}\": \"\\u041d\\u0435 \\u0432\\u0434\\u0430\\u043b\\u043e\\u0441\\u044f \\u0437\\u0430\\u0432\\u0430\\u043d\\u0442\\u0430\\u0436\\u0438\\u0442\\u0438 \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f \\u043d\\u0430 \\u043f\\u043b\\u0430\\u0491\\u0456\\u043d: {0}\",\n\"Failed to initialize plugin: {0}\": \"\\u041d\\u0435 \\u0432\\u0434\\u0430\\u043b\\u043e\\u0441\\u044f \\u0456\\u043d\\u0456\\u0446\\u0456\\u0430\\u043b\\u0456\\u0437\\u0443\\u0432\\u0430\\u0442\\u0438 \\u043f\\u043b\\u0430\\u0491\\u0456\\u043d: {0}\",\n\"example\": \"\\u043f\\u0440\\u0438\\u043a\\u043b\\u0430\\u0434\",\n\"Search\": \"\\u041f\\u043e\\u0448\\u0443\\u043a\",\n\"All\": \"\\u0412\\u0441\\u0435\",\n\"Currency\": \"\\u0412\\u0430\\u043b\\u044e\\u0442\\u0430\",\n\"Text\": \"\\u0422\\u0435\\u043a\\u0441\\u0442\",\n\"Quotations\": \"\\u0426\\u0438\\u0442\\u0443\\u0432\\u0430\\u043d\\u043d\\u044f\",\n\"Mathematical\": \"\\u041c\\u0430\\u0442\\u0435\\u043c\\u0430\\u0442\\u0438\\u0447\\u043d\\u0456 \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b\\u0438\",\n\"Extended Latin\": \"\\u0420\\u043e\\u0437\\u0448\\u0438\\u0440\\u0435\\u043d\\u0430 \\u043b\\u0430\\u0442\\u0438\\u043d\\u0438\\u0446\\u044f\",\n\"Symbols\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b\\u0438\",\n\"Arrows\": \"\\u0421\\u0442\\u0440\\u0456\\u043b\\u043a\\u0438\",\n\"User Defined\": \"\\u0412\\u0438\\u0437\\u043d\\u0430\\u0447\\u0435\\u043d\\u0456 \\u043a\\u043e\\u0440\\u0438\\u0441\\u0442\\u0443\\u0432\\u0430\\u0447\\u0435\\u043c\",\n\"dollar sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0434\\u043e\\u043b\\u0430\\u0440\\u0430\",\n\"currency sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0432\\u0430\\u043b\\u044e\\u0442\\u0438\",\n\"euro-currency sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0454\\u0432\\u0440\\u043e\",\n\"colon sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0434\\u0432\\u043e\\u043a\\u0440\\u0430\\u043f\\u043a\\u0438\",\n\"cruzeiro sign\": \"\\u0437\\u043d\\u0430\\u043a \\u043a\\u0440\\u0443\\u0437\\u0435\\u0439\\u0440\\u043e\",\n\"french franc sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0444\\u0440\\u0430\\u043d\\u0446\\u0443\\u0437\\u044c\\u043a\\u043e\\u0433\\u043e \\u0444\\u0440\\u0430\\u043d\\u043a\\u0443\",\n\"lira sign\": \"\\u0437\\u043d\\u0430\\u043a \\u043b\\u0456\\u0440\\u0438\",\n\"mill sign\": \"\\u0437\\u043d\\u0430\\u043a \\u043c\\u0456\\u043b\\u044e\",\n\"naira sign\": \"\\u0437\\u043d\\u0430\\u043a \\u043d\\u0430\\u0439\\u0440\\u0438\",\n\"peseta sign\": \"\\u0437\\u043d\\u0430\\u043a \\u043f\\u0435\\u0441\\u0435\\u0442\\u0438\",\n\"rupee sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0440\\u0443\\u043f\\u0456\\u0457\",\n\"won sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0432\\u043e\\u043d\\u0438\",\n\"new sheqel sign\": \"\\u0437\\u043d\\u0430\\u043a \\u043d\\u043e\\u0432\\u043e\\u0433\\u043e \\u0448\\u0435\\u043a\\u0435\\u043b\\u044f\",\n\"dong sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0434\\u043e\\u043d\\u0433\\u0443\",\n\"kip sign\": \"\\u0437\\u043d\\u0430\\u043a \\u043a\\u0456\\u043f\\u0443\",\n\"tugrik sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0442\\u0443\\u0433\\u0440\\u0438\\u043a\\u0430\",\n\"drachma sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0434\\u0440\\u0430\\u0445\\u043c\\u0438\",\n\"german penny symbol\": \"\\u0437\\u043d\\u0430\\u043a \\u043f\\u0444\\u0435\\u043d\\u0456\\u0433\\u0430\",\n\"peso sign\": \"\\u0437\\u043d\\u0430\\u043a \\u043f\\u0435\\u0441\\u043e\",\n\"guarani sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0433\\u0443\\u0430\\u0440\\u0430\\u043d\\u0456\",\n\"austral sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0430\\u0443\\u0441\\u0442\\u0440\\u0430\\u043b\\u044e\",\n\"hryvnia sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0433\\u0440\\u0438\\u0432\\u043d\\u0456\",\n\"cedi sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0441\\u0435\\u0434\\u0456\",\n\"livre tournois sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0442\\u0443\\u0440\\u0441\\u044c\\u043a\\u043e\\u0433\\u043e \\u043b\\u0456\\u0432\\u0440\\u0443\",\n\"spesmilo sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0441\\u043f\\u0435\\u0441\\u043c\\u0456\\u043b\\u043e\",\n\"tenge sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0442\\u0435\\u043d\\u0433\\u0435\",\n\"indian rupee sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0456\\u043d\\u0434\\u0456\\u0439\\u0441\\u044c\\u043a\\u043e\\u0457 \\u0440\\u0443\\u043f\\u0456\\u0457\",\n\"turkish lira sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0442\\u0443\\u0440\\u0435\\u0446\\u044c\\u043a\\u043e\\u0457 \\u043b\\u0456\\u0440\\u0438\",\n\"nordic mark sign\": \"\\u0437\\u043d\\u0430\\u043a \\u043f\\u0456\\u0432\\u043d\\u0456\\u0447\\u043d\\u043e\\u0457 \\u043c\\u0430\\u0440\\u043a\\u0438\",\n\"manat sign\": \"\\u0437\\u043d\\u0430\\u043a \\u043c\\u0430\\u043d\\u0430\\u0442\\u0443\",\n\"ruble sign\": \"\\u0437\\u043d\\u0430\\u043a \\u0440\\u0443\\u0431\\u043b\\u044f\",\n\"yen character\": \"\\u0441\\u0438\\u043c\\u0432\\u043e\\u043b \\u0454\\u043d\\u0438\",\n\"yuan character\": \"\\u0441\\u0438\\u043c\\u0432\\u043e\\u043b \\u044e\\u0430\\u043d\\u044e\",\n\"yuan character, in hong kong and taiwan\": \"\\u0441\\u0438\\u043c\\u0432\\u043e\\u043b \\u044e\\u0430\\u043d\\u044e \\u0432 \\u0413\\u043e\\u043d\\u043a\\u043e\\u043d\\u0437\\u0456 \\u0456 \\u0422\\u0430\\u0439\\u0432\\u0430\\u043d\\u0456\",\n\"yen\\/yuan character variant one\": \"\\u0441\\u0438\\u043c\\u0432\\u043e\\u043b \\u0454\\u043d\\u0438\\/\\u044e\\u0430\\u043d\\u044e, \\u043f\\u0435\\u0440\\u0448\\u0438\\u0439 \\u0432\\u0430\\u0440\\u0456\\u0430\\u043d\\u0442\",\n\"Loading emoticons...\": \"\\u0417\\u0430\\u0432\\u0430\\u043d\\u0442\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f \\u0441\\u043c\\u0430\\u0439\\u043b\\u0438\\u043a\\u0456\\u0432\\u2026\",\n\"Could not load emoticons\": \"\\u041d\\u0435 \\u0432\\u0434\\u0430\\u043b\\u043e\\u0441\\u044f \\u0437\\u0430\\u0432\\u0430\\u043d\\u0442\\u0430\\u0436\\u0438\\u0442\\u0438 \\u0441\\u043c\\u0430\\u0439\\u043b\\u0438\\u043a\\u0438\",\n\"People\": \"\\u041b\\u044e\\u0434\\u0438\",\n\"Animals and Nature\": \"\\u0422\\u0432\\u0430\\u0440\\u0438\\u043d\\u0438 \\u0442\\u0430 \\u043f\\u0440\\u0438\\u0440\\u043e\\u0434\\u0430\",\n\"Food and Drink\": \"\\u0407\\u0436\\u0430 \\u0442\\u0430 \\u043d\\u0430\\u043f\\u043e\\u0457\",\n\"Activity\": \"\\u0410\\u043a\\u0442\\u0438\\u0432\\u043d\\u0456\\u0441\\u0442\\u044c\",\n\"Travel and Places\": \"\\u041f\\u043e\\u0434\\u043e\\u0440\\u043e\\u0436\\u0456 \\u0456 \\u043c\\u0456\\u0441\\u0446\\u044f\",\n\"Objects\": \"\\u041e\\u0431\\u2019\\u0454\\u043a\\u0442\\u0438\",\n\"Flags\": \"\\u041f\\u0440\\u0430\\u043f\\u043e\\u0440\\u0438\",\n\"Characters\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b\\u0438\",\n\"Characters (no spaces)\": \"\\u0421\\u0438\\u043c\\u0432\\u043e\\u043b\\u0438 (\\u0431\\u0435\\u0437 \\u043f\\u0440\\u043e\\u0431\\u0456\\u043b\\u0456\\u0432)\",\n\"{0} characters\": \"\\u041a\\u0456\\u043b\\u044c\\u043a\\u0456\\u0441\\u0442\\u044c \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b\\u0456\\u0432: {0}\",\n\"Error: Form submit field collision.\": \"\\u041f\\u043e\\u043c\\u0438\\u043b\\u043a\\u0430: \\u043a\\u043e\\u043b\\u0456\\u0437\\u0456\\u044f \\u043f\\u043e\\u043b\\u044f \\u0432\\u0456\\u0434\\u043f\\u0440\\u0430\\u0432\\u043b\\u0435\\u043d\\u043d\\u044f \\u0444\\u043e\\u0440\\u043c\\u0438.\",\n\"Error: No form element found.\": \"\\u041f\\u043e\\u043c\\u0438\\u043b\\u043a\\u0430: \\u043d\\u0435 \\u0437\\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\\u043e \\u0435\\u043b\\u0435\\u043c\\u0435\\u043d\\u0442\\u0430 \\u0444\\u043e\\u0440\\u043c\\u0438.\",\n\"Update\": \"\\u041e\\u043d\\u043e\\u0432\\u0438\\u0442\\u0438\",\n\"Color swatch\": \"\\u0417\\u0440\\u0430\\u0437\\u043e\\u043a \\u043a\\u043e\\u043b\\u044c\\u043e\\u0440\\u0443\",\n\"Turquoise\": \"\\u0411\\u0456\\u0440\\u044e\\u0437\\u043e\\u0432\\u0438\\u0439\",\n\"Green\": \"\\u0417\\u0435\\u043b\\u0435\\u043d\\u0438\\u0439\",\n\"Blue\": \"\\u0421\\u0438\\u043d\\u0456\\u0439\",\n\"Purple\": \"\\u0424\\u0456\\u043e\\u043b\\u0435\\u0442\\u043e\\u0432\\u0438\\u0439\",\n\"Navy Blue\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0441\\u0438\\u043d\\u0456\\u0439\",\n\"Dark Turquoise\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0431\\u0456\\u0440\\u044e\\u0437\\u043e\\u0432\\u0438\\u0439\",\n\"Dark Green\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0437\\u0435\\u043b\\u0435\\u043d\\u0438\\u0439\",\n\"Medium Blue\": \"\\u0421\\u0435\\u0440\\u0435\\u0434\\u043d\\u044c\\u043e-\\u0441\\u0438\\u043d\\u0456\\u0439\",\n\"Medium Purple\": \"\\u0421\\u0435\\u0440\\u0435\\u0434\\u043d\\u044c\\u043e-\\u0444\\u0456\\u043e\\u043b\\u0435\\u0442\\u043e\\u0432\\u0438\\u0439\",\n\"Midnight Blue\": \"\\u041e\\u043f\\u0456\\u0432\\u043d\\u0456\\u0447\\u043d\\u0430 \\u0431\\u043b\\u0430\\u043a\\u0438\\u0442\\u044c\",\n\"Yellow\": \"\\u0416\\u043e\\u0432\\u0442\\u0438\\u0439\",\n\"Orange\": \"\\u041f\\u043e\\u043c\\u0430\\u0440\\u0430\\u043d\\u0447\\u0435\\u0432\\u0438\\u0439\",\n\"Red\": \"\\u0427\\u0435\\u0440\\u0432\\u043e\\u043d\\u0438\\u0439\",\n\"Light Gray\": \"\\u0421\\u0432\\u0456\\u0442\\u043b\\u043e-\\u0441\\u0456\\u0440\\u0438\\u0439\",\n\"Gray\": \"\\u0421\\u0456\\u0440\\u0438\\u0439\",\n\"Dark Yellow\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0436\\u043e\\u0432\\u0442\\u0438\\u0439\",\n\"Dark Orange\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u043f\\u043e\\u043c\\u0430\\u0440\\u0430\\u043d\\u0447\\u0435\\u0432\\u0438\\u0439\",\n\"Dark Red\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0447\\u0435\\u0440\\u0432\\u043e\\u043d\\u0438\\u0439\",\n\"Medium Gray\": \"\\u0421\\u0435\\u0440\\u0435\\u0434\\u043d\\u044c\\u043e-\\u0441\\u0456\\u0440\\u0438\\u0439\",\n\"Dark Gray\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0441\\u0456\\u0440\\u0438\\u0439\",\n\"Light Green\": \"\\u0421\\u0432\\u0456\\u0442\\u043b\\u043e-\\u0437\\u0435\\u043b\\u0435\\u043d\\u0438\\u0439\",\n\"Light Yellow\": \"\\u0421\\u0432\\u0456\\u0442\\u043b\\u043e-\\u0436\\u043e\\u0432\\u0442\\u0438\\u0439\",\n\"Light Red\": \"\\u0421\\u0432\\u0456\\u0442\\u043b\\u043e-\\u0447\\u0435\\u0440\\u0432\\u043e\\u043d\\u0438\\u0439\",\n\"Light Purple\": \"\\u0421\\u0432\\u0456\\u0442\\u043b\\u043e-\\u0444\\u0456\\u043e\\u043b\\u0435\\u0442\\u043e\\u0432\\u0438\\u0439\",\n\"Light Blue\": \"\\u0421\\u0432\\u0456\\u0442\\u043b\\u043e-\\u0441\\u0438\\u043d\\u0456\\u0439\",\n\"Dark Purple\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0444\\u0456\\u043e\\u043b\\u0435\\u0442\\u043e\\u0432\\u0438\\u0439\",\n\"Dark Blue\": \"\\u0422\\u0435\\u043c\\u043d\\u043e-\\u0433\\u043e\\u043b\\u0443\\u0431\\u0438\\u0439\",\n\"Black\": \"\\u0427\\u043e\\u0440\\u043d\\u0438\\u0439\",\n\"White\": \"\\u0411\\u0456\\u043b\\u0438\\u0439\",\n\"Switch to or from fullscreen mode\": \"\\u041f\\u0435\\u0440\\u0435\\u043c\\u0438\\u043a\\u0430\\u043d\\u043d\\u044f \\u043f\\u043e\\u0432\\u043d\\u043e\\u0435\\u043a\\u0440\\u0430\\u043d\\u043d\\u043e\\u0433\\u043e \\u0440\\u0435\\u0436\\u0438\\u043c\\u0443\",\n\"Open help dialog\": \"\\u0412\\u0456\\u0434\\u043a\\u0440\\u0438\\u0442\\u0438 \\u0432\\u0456\\u043a\\u043d\\u043e \\u0434\\u043e\\u0432\\u0456\\u0434\\u043a\\u0438\",\n\"history\": \"\\u0456\\u0441\\u0442\\u043e\\u0440\\u0456\\u044f\",\n\"styles\": \"\\u0441\\u0442\\u0438\\u043b\\u0456\",\n\"formatting\": \"\\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0443\\u0432\\u0430\\u043d\\u043d\\u044f\",\n\"alignment\": \"\\u0432\\u0438\\u0440\\u0456\\u0432\\u043d\\u044e\\u0432\\u0430\\u043d\\u043d\\u044f\",\n\"indentation\": \"\\u0432\\u0456\\u0434\\u0441\\u0442\\u0443\\u043f\",\n\"permanent pen\": \"\\u043c\\u0430\\u0440\\u043a\\u0435\\u0440\",\n\"comments\": \"\\u043a\\u043e\\u043c\\u0435\\u043d\\u0442\\u0430\\u0440\\u0456\",\n\"Format Painter\": \"\\u0424\\u043e\\u0440\\u043c\\u0430\\u0442 \\u0437\\u0430 \\u0437\\u0440\\u0430\\u0437\\u043a\\u043e\\u043c\",\n\"Insert\\/edit iframe\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438\\/\\u0440\\u0435\\u0434\\u0430\\u0433\\u0443\\u0432\\u0430\\u0442\\u0438 iframe\",\n\"Capitalization\": \"\\u0412\\u0438\\u043a\\u043e\\u0440\\u0438\\u0441\\u0442\\u0430\\u043d\\u043d\\u044f \\u0432\\u0435\\u043b\\u0438\\u043a\\u0438\\u0445 \\u043b\\u0456\\u0442\\u0435\\u0440\",\n\"lowercase\": \"\\u043d\\u0438\\u0436\\u043d\\u0456\\u0439 \\u0440\\u0435\\u0433\\u0456\\u0441\\u0442\\u0440\",\n\"UPPERCASE\": \"\\u0412\\u0415\\u0420\\u0425\\u041d\\u0406\\u0419 \\u0420\\u0415\\u0413\\u0406\\u0421\\u0422\\u0420\",\n\"Title Case\": \"\\u0420\\u0435\\u0433\\u0456\\u0441\\u0442\\u0440 \\u0437\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043a\\u0430\",\n\"Permanent Pen Properties\": \"\\u0412\\u043b\\u0430\\u0441\\u0442\\u0438\\u0432\\u043e\\u0441\\u0442\\u0456 \\u043c\\u0430\\u0440\\u043a\\u0435\\u0440\\u0430\",\n\"Permanent pen properties...\": \"\\u0412\\u043b\\u0430\\u0441\\u0442\\u0438\\u0432\\u043e\\u0441\\u0442\\u0456 \\u043c\\u0430\\u0440\\u043a\\u0435\\u0440\\u0430\\u2026\",\n\"Font\": \"\\u0428\\u0440\\u0438\\u0444\\u0442\",\n\"Size\": \"\\u0420\\u043e\\u0437\\u043c\\u0456\\u0440\",\n\"More...\": \"\\u0411\\u0456\\u043b\\u044c\\u0448\\u0435\\u2026\",\n\"Spellcheck Language\": \"\\u041c\\u043e\\u0432\\u0430 \\u043f\\u0435\\u0440\\u0435\\u0432\\u0456\\u0440\\u043a\\u0438 \\u043e\\u0440\\u0444\\u043e\\u0433\\u0440\\u0430\\u0444\\u0456\\u0457\",\n\"Select...\": \"\\u0412\\u0438\\u0431\\u0440\\u0430\\u0442\\u0438\\u2026\",\n\"Preferences\": \"\\u041f\\u0430\\u0440\\u0430\\u043c\\u0435\\u0442\\u0440\\u0438\",\n\"Yes\": \"\\u0422\\u0430\\u043a\",\n\"No\": \"\\u041d\\u0456\",\n\"Keyboard Navigation\": \"\\u041a\\u0435\\u0440\\u0443\\u0432\\u0430\\u043d\\u043d\\u044f \\u0437\\u0430 \\u0434\\u043e\\u043f\\u043e\\u043c\\u043e\\u0433\\u043e\\u044e \\u043a\\u043b\\u0430\\u0432\\u0456\\u0430\\u0442\\u0443\\u0440\\u0438\",\n\"Version\": \"\\u0412\\u0435\\u0440\\u0441\\u0456\\u044f\",\n\"Anchor\": \"\\u042f\\u043a\\u0456\\u0440\",\n\"Special character\": \"\\u0421\\u043f\\u0435\\u0446\\u0456\\u0430\\u043b\\u044c\\u043d\\u0456 \\u0441\\u0438\\u043c\\u0432\\u043e\\u043b\\u0438\",\n\"Code sample\": \"\\u041f\\u0440\\u0438\\u043a\\u043b\\u0430\\u0434 \\u043a\\u043e\\u0434\\u0443\",\n\"Color\": \"\\u043a\\u043e\\u043b\\u0456\\u0440\",\n\"Emoticons\": \"\\u0415\\u043c\\u043e\\u0446\\u0456\\u0457\",\n\"Document properties\": \"\\u0412\\u043b\\u0430\\u0441\\u0442\\u0438\\u0432\\u043e\\u0441\\u0442\\u0456 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\\u0430\",\n\"Image\": \"\\u0417\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f\",\n\"Insert link\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f\",\n\"Target\": \"\\u0412\\u0456\\u0434\\u043a\\u0440\\u0438\\u0432\\u0430\\u0442\\u0438 \\u043f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f\",\n\"Link\": \"\\u041f\\u043e\\u0441\\u0438\\u043b\\u0430\\u043d\\u043d\\u044f\",\n\"Poster\": \"\\u0417\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u043d\\u044f\",\n\"Media\": \"\\u041c\\u0435\\u0434\\u0456\\u0430\\u0434\\u0430\\u043d\\u0456\",\n\"Print\": \"\\u0414\\u0440\\u0443\\u043a\\u0443\\u0432\\u0430\\u0442\\u0438\",\n\"Prev\": \"\\u0412\\u0433\\u043e\\u0440\\u0443\",\n\"Find and replace\": \"\\u041f\\u043e\\u0448\\u0443\\u043a \\u0456 \\u0437\\u0430\\u043c\\u0456\\u043d\\u0430\",\n\"Whole words\": \"\\u0426\\u0456\\u043b\\u0456 \\u0441\\u043b\\u043e\\u0432\\u0430\",\n\"Spellcheck\": \"\\u041f\\u0435\\u0440\\u0435\\u0432\\u0456\\u0440\\u043a\\u0430 \\u043e\\u0440\\u0444\\u043e\\u0433\\u0440\\u0430\\u0444\\u0456\\u0457\",\n\"Caption\": \"\\u0417\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043e\\u043a\",\n\"Insert template\": \"\\u0412\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0438 \\u0448\\u0430\\u0431\\u043b\\u043e\\u043d\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/vi.js",
    "content": "tinymce.addI18n('vi',{\n\"Redo\": \"L\\u00e0m l\\u1ea1i\",\n\"Undo\": \"H\\u1ee7y thao t\\u00e1c\",\n\"Cut\": \"C\\u1eaft\",\n\"Copy\": \"Sao ch\\u00e9p\",\n\"Paste\": \"D\\u00e1n\",\n\"Select all\": \"Ch\\u1ecdn t\\u1ea5t c\\u1ea3\",\n\"New document\": \"T\\u1ea1o t\\u00e0i li\\u1ec7u m\\u1edbi\",\n\"Ok\": \"\\u0110\\u1ed3ng \\u00dd\",\n\"Cancel\": \"Hu\\u1ef7 B\\u1ecf\",\n\"Visual aids\": \"M\\u1edf khung so\\u1ea1n th\\u1ea3o\",\n\"Bold\": \"In \\u0111\\u1eadm\",\n\"Italic\": \"In nghi\\u00eang\",\n\"Underline\": \"G\\u1ea1ch d\\u01b0\\u1edbi\",\n\"Strikethrough\": \"G\\u1ea1ch ngang\",\n\"Superscript\": \"K\\u00fd t\\u1ef1 m\\u0169\",\n\"Subscript\": \"K\\u00fd t\\u1ef1 th\\u1ea5p\",\n\"Clear formatting\": \"L\\u01b0\\u1ee3c b\\u1ecf ph\\u1ea7n hi\\u1ec7u \\u1ee9ng\",\n\"Align left\": \"Canh tr\\u00e1i\",\n\"Align center\": \"Canh gi\\u1eefa\",\n\"Align right\": \"Canh ph\\u1ea3i\",\n\"Justify\": \"Canh \\u0111\\u1ec1u hai b\\u00ean\",\n\"Bullet list\": \"Danh s\\u00e1ch d\\u1ea1ng bi\\u1ec3u t\\u01b0\\u1ee3ng\",\n\"Numbered list\": \"Danh s\\u00e1ch d\\u1ea1ng s\\u1ed1\",\n\"Decrease indent\": \"Th\\u1ee5t l\\u00f9i d\\u00f2ng\",\n\"Increase indent\": \"T\\u0103ng kho\\u1ea3ng c\\u00e1ch d\\u00f2ng\",\n\"Close\": \"\\u0110\\u00f3ng L\\u1ea1i\",\n\"Formats\": \"\\u0110\\u1ecbnh d\\u1ea1ng\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"Tr\\u00ecnh duy\\u1ec7t c\\u1ee7a b\\u1ea1n kh\\u00f4ng h\\u1ed7 tr\\u1ee3 truy c\\u1eadp truy c\\u1eadp b\\u1ed9 nh\\u1edb \\u1ea3o, vui l\\u00f2ng s\\u1eed d\\u1ee5ng c\\u00e1c t\\u1ed5 h\\u1ee3p ph\\u00edm Ctrl + X, C, V.\",\n\"Headers\": \"\\u0110\\u1ea7u trang\",\n\"Header 1\": \"Ti\\u00eau \\u0111\\u1ec1 1\",\n\"Header 2\": \"Ti\\u00eau \\u0111\\u1ec1 2\",\n\"Header 3\": \"Ti\\u00eau \\u0111\\u1ec1 3\",\n\"Header 4\": \"Ti\\u00eau \\u0111\\u1ec1 4\",\n\"Header 5\": \"Ti\\u00eau \\u0111\\u1ec1 5\",\n\"Header 6\": \"Ti\\u00eau \\u0111\\u1ec1 6\",\n\"Headings\": \"Ph\\u1ea7n \\u0111\\u1ea7u\",\n\"Heading 1\": \"H1\",\n\"Heading 2\": \"H2\",\n\"Heading 3\": \"H3\",\n\"Heading 4\": \"H4\",\n\"Heading 5\": \"H5\",\n\"Heading 6\": \"G6\",\n\"Preformatted\": \"\\u0110\\u1ecbnh d\\u1ea1ng s\\u1eb5n\",\n\"Div\": \"Khung\",\n\"Pre\": \"\\u0110\\u1ecbnh d\\u1ea1ng\",\n\"Code\": \"M\\u00e3\",\n\"Paragraph\": \"\\u0110o\\u1ea1n v\\u0103n\",\n\"Blockquote\": \"\\u0110o\\u1ea1n Tr\\u00edch D\\u1eabn\",\n\"Inline\": \"C\\u00f9ng d\\u00f2ng\",\n\"Blocks\": \"Bao\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"Ch\\u1ee9c n\\u0103ng D\\u00e1n \\u0111ang trong tr\\u1ea1ng th\\u00e1i v\\u0103n b\\u1ea3n \\u0111\\u01a1n gi\\u1ea3n. N\\u1ed9i dung s\\u1ebd \\u0111\\u01b0\\u1ee3c d\\u00e1n d\\u01b0\\u1edbi d\\u1ea1ng v\\u0103n b\\u1ea3n thu\\u1ea7n, kh\\u00f4ng c\\u00f3 \\u0111\\u1ecbnh d\\u1ea1ng.\",\n\"Font Family\": \"Ki\\u1ec3u ch\\u1eef\",\n\"Font Sizes\": \"C\\u1ee1 ch\\u1eef\",\n\"Class\": \"L\\u1edbp\",\n\"Browse for an image\": \"Ch\\u00e8n m\\u1ed9t h\\u00ecnh \\u1ea3nh\",\n\"OR\": \"HO\\u1eb6C\",\n\"Drop an image here\": \"Th\\u1ea3 h\\u00ecnh \\u1ea3nh v\\u00e0o \\u0111\\u00e2y\",\n\"Upload\": \"T\\u1ea3i l\\u00ean\",\n\"Block\": \"Kh\\u1ed1i\",\n\"Align\": \"Canh l\\u1ec1\",\n\"Default\": \"M\\u1eb7c \\u0111\\u1ecbnh\",\n\"Circle\": \"H\\u00ecnh tr\\u00f2n\",\n\"Disc\": \"H\\u00ecnh tr\\u00f2n  d\\u1ea1ng m\\u1ecfng\",\n\"Square\": \"\\u00d4 vu\\u00f4ng\",\n\"Lower Alpha\": \"K\\u00fd t\\u1ef1 th\\u01b0\\u1eddng\",\n\"Lower Greek\": \"S\\u1ed1 hy l\\u1ea1p th\\u01b0\\u1eddng\",\n\"Lower Roman\": \"S\\u1ed1 la m\\u00e3 th\\u01b0\\u1eddng\",\n\"Upper Alpha\": \"K\\u00fd t\\u1ef1 hoa\",\n\"Upper Roman\": \"S\\u1ed1 la m\\u00e3 hoa\",\n\"Anchor\": \"Neo\",\n\"Name\": \"T\\u00ean\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"B\\u1ea1n ch\\u01b0a l\\u01b0u thay \\u0111\\u1ed5i b\\u1ea1n c\\u00f3 ch\\u1eafc b\\u1ea1n mu\\u1ed1n di chuy\\u1ec3n \\u0111i?\",\n\"Restore last draft\": \"Kh\\u00f4i ph\\u1ee5c b\\u1ea3n g\\u1ea7n nh\\u1ea5t\",\n\"Special character\": \"K\\u00fd t\\u1ef1 \\u0111\\u1eb7c bi\\u1ec7t\",\n\"Source code\": \"M\\u00e3 ngu\\u1ed3n\",\n\"Insert\\/Edit code sample\": \"Ch\\u00e8n\\/S\\u1eeda m\\u00e3 m\\u1eabu\",\n\"Language\": \"Ng\\u00f4n ng\\u1eef\",\n\"Code sample\": \"M\\u00e3 m\\u1eabu\",\n\"Color\": \"M\\u00e0u s\\u1eafc\",\n\"R\": \"M\\u00e0u \\u0111\\u1ecf\",\n\"G\": \"M\\u00e0u xanh l\\u00e1 c\\u00e2y\",\n\"B\": \"M\\u00e0u xanh da tr\\u1eddi\",\n\"Left to right\": \"Tr\\u00e1i sang ph\\u1ea3i\",\n\"Right to left\": \"Ph\\u1ea3i sang tr\\u00e1i\",\n\"Emoticons\": \"Bi\\u1ec3u t\\u01b0\\u1ee3ng c\\u1ea3m x\\u00fac\",\n\"Document properties\": \"Thu\\u1ed9c t\\u00ednh t\\u00e0i li\\u1ec7u\",\n\"Title\": \"Ti\\u00eau \\u0111\\u1ec1\",\n\"Keywords\": \"T\\u1eeb kh\\u00f3a\",\n\"Description\": \"M\\u00f4 t\\u1ea3\",\n\"Robots\": \"Robots\",\n\"Author\": \"T\\u00e1c gi\\u1ea3\",\n\"Encoding\": \"M\\u00e3 h\\u00f3a\",\n\"Fullscreen\": \"To\\u00e0n m\\u00e0n h\\u00ecnh\",\n\"Action\": \"H\\u00e0nh \\u0111\\u1ed9ng\",\n\"Shortcut\": \"L\\u1ed1i t\\u1eaft\",\n\"Help\": \"Tr\\u1ee3 gi\\u00fap\",\n\"Address\": \"\\u0110\\u1ecba ch\\u1ec9\",\n\"Focus to menubar\": \"Focus to menubar\",\n\"Focus to toolbar\": \"Focus to toolbar\",\n\"Focus to element path\": \"Focus to element path\",\n\"Focus to contextual toolbar\": \"Focus to contextual toolbar\",\n\"Insert link (if link plugin activated)\": \"Ch\\u00e8n \\u0111\\u01b0\\u1eddng d\\u1eabn\",\n\"Save (if save plugin activated)\": \"L\\u01b0u\",\n\"Find (if searchreplace plugin activated)\": \"T\\u00ecm ki\\u1ebfm\",\n\"Plugins installed ({0}):\": \"Plugins installed ({0}):\",\n\"Premium plugins:\": \"Premium plugins:\",\n\"Learn more...\": \"Learn more...\",\n\"You are using {0}\": \"You are using {0}\",\n\"Plugins\": \"Plugins\",\n\"Handy Shortcuts\": \"Handy Shortcuts\",\n\"Horizontal line\": \"K\\u1ebb ngang\",\n\"Insert\\/edit image\": \"Ch\\u00e8n\\/s\\u1eeda \\u1ea3nh\",\n\"Image description\": \"M\\u00f4 t\\u1ea3 \\u1ea3nh\",\n\"Source\": \"Ngu\\u1ed3n\",\n\"Dimensions\": \"K\\u00edch th\\u01b0\\u1edbc\",\n\"Constrain proportions\": \"T\\u1ef7 l\\u1ec7 h\\u1ea1n ch\\u1ebf\",\n\"General\": \"Chung\",\n\"Advanced\": \"N\\u00e2ng cao\",\n\"Style\": \"Ki\\u1ec3u\",\n\"Vertical space\": \"N\\u1eb1m d\\u1ecdc\",\n\"Horizontal space\": \"N\\u1eb1m ngang\",\n\"Border\": \"\\u0110\\u01b0\\u1eddng vi\\u1ec1n\",\n\"Insert image\": \"Ch\\u00e8n \\u1ea3nh\",\n\"Image\": \"Image\",\n\"Image list\": \"Image list\",\n\"Rotate counterclockwise\": \"Xoay tr\\u00e1i\",\n\"Rotate clockwise\": \"Xoay ph\\u1ea3i\",\n\"Flip vertically\": \"L\\u1eadt d\\u1ecdc\",\n\"Flip horizontally\": \"L\\u1eadt ngang\",\n\"Edit image\": \"Ch\\u1ec9nh s\\u1eeda \\u1ea3nh\",\n\"Image options\": \"T\\u00f9y ch\\u1ecdn \\u1ea3nh\",\n\"Zoom in\": \"Thu nh\\u1ecf\",\n\"Zoom out\": \"Ph\\u00f3ng to\",\n\"Crop\": \"C\\u1eaft \\u1ea3nh\",\n\"Resize\": \"Thay \\u0111\\u1ed5i k\\u00edch th\\u01b0\\u1edbc\",\n\"Orientation\": \"\\u0110\\u1ecbnh h\\u01b0\\u1edbng\",\n\"Brightness\": \"\\u0110\\u1ed9 s\\u00e1ng\",\n\"Sharpen\": \"L\\u00e0m s\\u1eafc n\\u00e9t\",\n\"Contrast\": \"\\u0110\\u1ed9 t\\u01b0\\u01a1ng ph\\u1ea3n\",\n\"Color levels\": \"M\\u1ee9c \\u0111\\u1ed9 m\\u00e0u\",\n\"Gamma\": \"M\\u00e0u Gamma\",\n\"Invert\": \"\\u0110\\u1ea3o ng\\u01b0\\u1ee3c\",\n\"Apply\": \"\\u00c1p d\\u1ee5ng\",\n\"Back\": \"Quay l\\u1ea1i\",\n\"Insert date\\/time\": \"Ch\\u00e8n ng\\u00e0y\\/th\\u00e1ng\",\n\"Date\\/time\": \"Date\\/time\",\n\"Insert link\": \"Ch\\u00e8n li\\u00ean k\\u1ebft\",\n\"Insert\\/edit link\": \"Ch\\u00e8n\\/s\\u1eeda li\\u00ean k\\u1ebft\",\n\"Text to display\": \"N\\u1ed9i dung hi\\u1ec3n th\\u1ecb\",\n\"Url\": \"Url\",\n\"Target\": \"\\u0110\\u00edch\",\n\"None\": \"Kh\\u00f4ng\",\n\"New window\": \"C\\u1eeda s\\u1ed5 m\\u1edbi\",\n\"Remove link\": \"B\\u1ecf li\\u00ean k\\u1ebft\",\n\"Anchors\": \"Neo\",\n\"Link\": \"Link\",\n\"Paste or type a link\": \"Paste or type a link\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u0110\\u1ecba ch\\u1ec9 URL b\\u1ea1n v\\u1eeba nh\\u1eadp gi\\u1ed1ng nh\\u01b0 m\\u1ed9t \\u0111\\u1ecba ch\\u1ec9 email. B\\u1ea1n c\\u00f3 mu\\u1ed1n th\\u00eam ti\\u1ec1n t\\u1ed1 mailto: kh\\u00f4ng?\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u0110\\u1ecba ch\\u1ec9 URL b\\u1ea1n v\\u1eeba nh\\u1eadp gi\\u1ed1ng nh\\u01b0 m\\u1ed9t li\\u00ean k\\u1ebft. B\\u1ea1n c\\u00f3 mu\\u1ed1n th\\u00eam ti\\u1ec1n t\\u1ed1 http:\\/\\/ kh\\u00f4ng?\",\n\"Link list\": \"Link list\",\n\"Insert video\": \"Ch\\u00e8n video\",\n\"Insert\\/edit video\": \"Ch\\u00e8n\\/s\\u1eeda video\",\n\"Insert\\/edit media\": \"Insert\\/edit media\",\n\"Alternative source\": \"Ngu\\u1ed3n thay th\\u1ebf\",\n\"Poster\": \"Ng\\u01b0\\u1eddi g\\u1eedi\",\n\"Paste your embed code below:\": \"D\\u00e1n m\\u00e3 nh\\u00fang c\\u1ee7a b\\u1ea1n d\\u01b0\\u1edbi \\u0111\\u00e2y:\",\n\"Embed\": \"Nh\\u00fang\",\n\"Media\": \"Media\",\n\"Nonbreaking space\": \"Kh\\u00f4ng xu\\u1ed1ng h\\u00e0ng\",\n\"Page break\": \"Ng\\u1eaft trang\",\n\"Paste as text\": \"D\\u00e1n \\u0111o\\u1ea1n v\\u0103n b\\u1ea3n\",\n\"Preview\": \"Xem th\\u1eed\",\n\"Print\": \"In\",\n\"Save\": \"L\\u01b0u\",\n\"Find\": \"T\\u00ecm ki\\u1ebfm\",\n\"Replace with\": \"Thay th\\u1ebf b\\u1edfi\",\n\"Replace\": \"Thay th\\u1ebf\",\n\"Replace all\": \"Thay t\\u1ea5t c\\u1ea3\",\n\"Prev\": \"Tr\\u01b0\\u1edbc\",\n\"Next\": \"K\\u1ebf ti\\u1ebfp\",\n\"Find and replace\": \"T\\u00ecm v\\u00e0 thay th\\u1ebf\",\n\"Could not find the specified string.\": \"Kh\\u00f4ng t\\u00ecm th\\u1ea5y chu\\u1ed7i qui \\u0111\\u1ecbnh\",\n\"Match case\": \"Tr\\u01b0\\u1eddng h\\u1ee3p xem\",\n\"Whole words\": \"To\\u00e0n b\\u1ed9 t\\u1eeb\",\n\"Spellcheck\": \"Ki\\u1ec3m tra ch\\u00ednh t\\u1ea3\",\n\"Ignore\": \"B\\u1ecf qua\",\n\"Ignore all\": \"B\\u1ecf qua t\\u1ea5t\",\n\"Finish\": \"Ho\\u00e0n t\\u1ea5t\",\n\"Add to Dictionary\": \"Th\\u00eam v\\u00e0o t\\u1eeb \\u0111i\\u1ec3n\",\n\"Insert table\": \"Th\\u00eam b\\u1ea3ng\",\n\"Table properties\": \"Thu\\u1ed9c t\\u00ednh b\\u1ea3ng\",\n\"Delete table\": \"Xo\\u00e1 b\\u1ea3ng\",\n\"Cell\": \"\\u00d4\",\n\"Row\": \"D\\u00f2ng\",\n\"Column\": \"C\\u1ed9t\",\n\"Cell properties\": \"Thu\\u1ed9c t\\u00ednh \\u00f4\",\n\"Merge cells\": \"Tr\\u1ed9n \\u00f4\",\n\"Split cell\": \"Chia c\\u1eaft \\u00f4\",\n\"Insert row before\": \"Th\\u00eam d\\u00f2ng ph\\u00eda tr\\u00ean\",\n\"Insert row after\": \"Th\\u00eam d\\u00f2ng ph\\u00eda d\\u01b0\\u1edbi\",\n\"Delete row\": \"Xo\\u00e1 d\\u00f2ng\",\n\"Row properties\": \"Thu\\u1ed9c t\\u00ednh d\\u00f2ng\",\n\"Cut row\": \"C\\u1eaft d\\u00f2ng\",\n\"Copy row\": \"Sao ch\\u00e9p d\\u00f2ng\",\n\"Paste row before\": \"D\\u00e1n v\\u00e0o ph\\u00eda tr\\u01b0\\u1edbc, tr\\u00ean\",\n\"Paste row after\": \"D\\u00e1n v\\u00e0o ph\\u00eda sau, d\\u01b0\\u1edbi\",\n\"Insert column before\": \"Th\\u00eam c\\u1ed9t b\\u00ean tr\\u00e1i\",\n\"Insert column after\": \"Th\\u00eam c\\u1ed9t b\\u00ean ph\\u1ea3i\",\n\"Delete column\": \"Xo\\u00e1 c\\u1ed9t\",\n\"Cols\": \"C\\u1ed9t\",\n\"Rows\": \"D\\u00f2ng\",\n\"Width\": \"\\u0110\\u1ed9 R\\u1ed9ng\",\n\"Height\": \"\\u0110\\u1ed9 Cao\",\n\"Cell spacing\": \"Kho\\u1ea3ng c\\u00e1ch \\u00f4\",\n\"Cell padding\": \"Kho\\u1ea3ng c\\u00e1ch trong \\u00f4\",\n\"Caption\": \"Ti\\u00eau \\u0111\\u1ec1\",\n\"Left\": \"Tr\\u00e1i\",\n\"Center\": \"Gi\\u1eefa\",\n\"Right\": \"Ph\\u1ea3i\",\n\"Cell type\": \"Lo\\u1ea1i \\u00f4\",\n\"Scope\": \"Quy\\u1ec1n\",\n\"Alignment\": \"Canh ch\\u1ec9nh\",\n\"H Align\": \"L\\u1ec1 ngang\",\n\"V Align\": \"L\\u1ec1 d\\u1ecdc\",\n\"Top\": \"Tr\\u00ean\",\n\"Middle\": \"Kho\\u1ea3ng gi\\u1eefa\",\n\"Bottom\": \"D\\u01b0\\u1edbi\",\n\"Header cell\": \"Ti\\u00eau \\u0111\\u1ec1 \\u00f4\",\n\"Row group\": \"Gom nh\\u00f3m d\\u00f2ng\",\n\"Column group\": \"Gom nh\\u00f3m c\\u1ed9t\",\n\"Row type\": \"Th\\u1ec3 lo\\u1ea1i d\\u00f2ng\",\n\"Header\": \"Ti\\u00eau \\u0111\\u1ec1\",\n\"Body\": \"N\\u1ed9i dung\",\n\"Footer\": \"Ch\\u00e2n\",\n\"Border color\": \"M\\u00e0u vi\\u1ec1n\",\n\"Insert template\": \"Th\\u00eam m\\u1eabu\",\n\"Templates\": \"M\\u1eabu\",\n\"Template\": \"Template\",\n\"Text color\": \"M\\u00e0u v\\u0103n b\\u1ea3n\",\n\"Background color\": \"M\\u00e0u n\\u1ec1n\",\n\"Custom...\": \"Tu\\u1ef3 ch\\u1ec9nh...\",\n\"Custom color\": \"Tu\\u1ef3 ch\\u1ec9nh m\\u00e0u\",\n\"No color\": \"Kh\\u00f4ng c\\u00f3 m\\u00e0u\",\n\"Table of Contents\": \"Table of Contents\",\n\"Show blocks\": \"Hi\\u1ec3n th\\u1ecb kh\\u1ed1i\",\n\"Show invisible characters\": \"Hi\\u1ec3n th\\u1ecb k\\u00fd t\\u1ef1 \\u1ea9n\",\n\"Words: {0}\": \"T\\u1eeb: {0}\",\n\"{0} words\": \"{0} words\",\n\"File\": \"T\\u1eadp tin\",\n\"Edit\": \"S\\u1eeda\",\n\"Insert\": \"Ch\\u00e8n\",\n\"View\": \"Xem\",\n\"Format\": \"\\u0110\\u1ecbnh d\\u1ea1ng\",\n\"Table\": \"B\\u1ea3ng\",\n\"Tools\": \"C\\u00f4ng c\\u1ee5\",\n\"Powered by {0}\": \"Powered by {0}\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"Rich Text Area. B\\u1ea5m ALT-F9 m\\u1edf menu. B\\u1ea5m ALT-F10 m\\u1edf thanh c\\u00f4ng c\\u1ee5. B\\u1ea5m ALT-0 m\\u1edf tr\\u1ee3 gi\\u00fap\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/zh_CN.js",
    "content": "tinymce.addI18n('zh_CN',{\n    \"Redo\": \"\\u91cd\\u505a\",\n    \"Undo\": \"\\u64a4\\u9500\",\n    \"Cut\": \"\\u526a\\u5207\",\n    \"Copy\": \"\\u590d\\u5236\",\n    \"Paste\": \"\\u7c98\\u8d34\",\n    \"Select all\": \"\\u5168\\u9009\",\n    \"New document\": \"\\u65b0\\u6587\\u4ef6\",\n    \"Ok\": \"\\u786e\\u5b9a\",\n    \"Cancel\": \"\\u53d6\\u6d88\",\n    \"Visual aids\": \"\\u7f51\\u683c\\u7ebf\",\n    \"Bold\": \"\\u7c97\\u4f53\",\n    \"Italic\": \"\\u659c\\u4f53\",\n    \"Underline\": \"\\u4e0b\\u5212\\u7ebf\",\n    \"Strikethrough\": \"\\u5220\\u9664\\u7ebf\",\n    \"Superscript\": \"\\u4e0a\\u6807\",\n    \"Subscript\": \"\\u4e0b\\u6807\",\n    \"Clear formatting\": \"\\u6e05\\u9664\\u683c\\u5f0f\",\n    \"Align left\": \"\\u5de6\\u8fb9\\u5bf9\\u9f50\",\n    \"Align center\": \"\\u4e2d\\u95f4\\u5bf9\\u9f50\",\n    \"Align right\": \"\\u53f3\\u8fb9\\u5bf9\\u9f50\",\n    \"Justify\": \"\\u4e24\\u7aef\\u5bf9\\u9f50\",\n    \"Bullet list\": \"\\u9879\\u76ee\\u7b26\\u53f7\",\n    \"Numbered list\": \"\\u7f16\\u53f7\\u5217\\u8868\",\n    \"Decrease indent\": \"\\u51cf\\u5c11\\u7f29\\u8fdb\",\n    \"Increase indent\": \"\\u589e\\u52a0\\u7f29\\u8fdb\",\n    \"Close\": \"\\u5173\\u95ed\",\n    \"Formats\": \"\\u683c\\u5f0f\",\n    \"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u4f60\\u7684\\u6d4f\\u89c8\\u5668\\u4e0d\\u652f\\u6301\\u6253\\u5f00\\u526a\\u8d34\\u677f\\uff0c\\u8bf7\\u4f7f\\u7528Ctrl+X\\/C\\/V\\u7b49\\u5feb\\u6377\\u952e\\u3002\",\n    \"Headers\": \"\\u6807\\u9898\",\n    \"Header 1\": \"\\u6807\\u98981\",\n    \"Header 2\": \"\\u6807\\u98982\",\n    \"Header 3\": \"\\u6807\\u98983\",\n    \"Header 4\": \"\\u6807\\u98984\",\n    \"Header 5\": \"\\u6807\\u98985\",\n    \"Header 6\": \"\\u6807\\u98986\",\n    \"Headings\": \"\\u6807\\u9898\",\n    \"Heading 1\": \"\\u6807\\u98981\",\n    \"Heading 2\": \"\\u6807\\u98982\",\n    \"Heading 3\": \"\\u6807\\u98983\",\n    \"Heading 4\": \"\\u6807\\u98984\",\n    \"Heading 5\": \"\\u6807\\u98985\",\n    \"Heading 6\": \"\\u6807\\u98986\",\n    \"Preformatted\": \"\\u9884\\u5148\\u683c\\u5f0f\\u5316\\u7684\",\n    \"Div\": \"Div\",\n    \"Pre\": \"Pre\",\n    \"Code\": \"\\u4ee3\\u7801\",\n    \"Paragraph\": \"\\u6bb5\\u843d\",\n    \"Blockquote\": \"\\u5f15\\u6587\\u533a\\u5757\",\n    \"Inline\": \"\\u6587\\u672c\",\n    \"Blocks\": \"\\u57fa\\u5757\",\n    \"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u5f53\\u524d\\u4e3a\\u7eaf\\u6587\\u672c\\u7c98\\u8d34\\u6a21\\u5f0f\\uff0c\\u518d\\u6b21\\u70b9\\u51fb\\u53ef\\u4ee5\\u56de\\u5230\\u666e\\u901a\\u7c98\\u8d34\\u6a21\\u5f0f\\u3002\",\n    \"Fonts\": \"\\u5b57\\u4f53\",\n    \"Font Sizes\": \"\\u5b57\\u53f7\",\n    \"Class\": \"\\u7c7b\\u578b\",\n    \"Browse for an image\": \"\\u6d4f\\u89c8\\u56fe\\u50cf\",\n    \"OR\": \"\\u6216\",\n    \"Drop an image here\": \"\\u62d6\\u653e\\u4e00\\u5f20\\u56fe\\u50cf\\u81f3\\u6b64\",\n    \"Upload\": \"\\u4e0a\\u4f20\",\n    \"Block\": \"\\u5757\",\n    \"Align\": \"\\u5bf9\\u9f50\",\n    \"Default\": \"\\u9ed8\\u8ba4\",\n    \"Circle\": \"\\u7a7a\\u5fc3\\u5706\",\n    \"Disc\": \"\\u5b9e\\u5fc3\\u5706\",\n    \"Square\": \"\\u65b9\\u5757\",\n    \"Lower Alpha\": \"\\u5c0f\\u5199\\u82f1\\u6587\\u5b57\\u6bcd\",\n    \"Lower Greek\": \"\\u5c0f\\u5199\\u5e0c\\u814a\\u5b57\\u6bcd\",\n    \"Lower Roman\": \"\\u5c0f\\u5199\\u7f57\\u9a6c\\u5b57\\u6bcd\",\n    \"Upper Alpha\": \"\\u5927\\u5199\\u82f1\\u6587\\u5b57\\u6bcd\",\n    \"Upper Roman\": \"\\u5927\\u5199\\u7f57\\u9a6c\\u5b57\\u6bcd\",\n    \"Anchor...\": \"\\u951a\\u70b9...\",\n    \"Name\": \"\\u540d\\u79f0\",\n    \"Id\": \"\\u6807\\u8bc6\\u7b26\",\n    \"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"\\u6807\\u8bc6\\u7b26\\u5e94\\u8be5\\u4ee5\\u5b57\\u6bcd\\u5f00\\u5934\\uff0c\\u540e\\u8ddf\\u5b57\\u6bcd\\u3001\\u6570\\u5b57\\u3001\\u7834\\u6298\\u53f7\\u3001\\u70b9\\u3001\\u5192\\u53f7\\u6216\\u4e0b\\u5212\\u7ebf\\u3002\",\n    \"You have unsaved changes are you sure you want to navigate away?\": \"\\u4f60\\u8fd8\\u6709\\u6587\\u6863\\u5c1a\\u672a\\u4fdd\\u5b58\\uff0c\\u786e\\u5b9a\\u8981\\u79bb\\u5f00\\uff1f\",\n    \"Restore last draft\": \"\\u6062\\u590d\\u4e0a\\u6b21\\u7684\\u8349\\u7a3f\",\n    \"Special character...\": \"\\u7279\\u6b8a\\u5b57\\u7b26...\",\n    \"Source code\": \"\\u6e90\\u4ee3\\u7801\",\n    \"Insert\\/Edit code sample\": \"\\u63d2\\u5165\\/\\u7f16\\u8f91\\u4ee3\\u7801\\u793a\\u4f8b\",\n    \"Language\": \"\\u8bed\\u8a00\",\n    \"Code sample...\": \"\\u793a\\u4f8b\\u4ee3\\u7801...\",\n    \"Color Picker\": \"\\u9009\\u8272\\u5668\",\n    \"R\": \"R\",\n    \"G\": \"G\",\n    \"B\": \"B\",\n    \"Left to right\": \"\\u4ece\\u5de6\\u5230\\u53f3\",\n    \"Right to left\": \"\\u4ece\\u53f3\\u5230\\u5de6\",\n    \"Emoticons...\": \"\\u8868\\u60c5\\u7b26\\u53f7...\",\n    \"Metadata and Document Properties\": \"\\u5143\\u6570\\u636e\\u548c\\u6587\\u6863\\u5c5e\\u6027\",\n    \"Title\": \"\\u6807\\u9898\",\n    \"Keywords\": \"\\u5173\\u952e\\u8bcd\",\n    \"Description\": \"\\u63cf\\u8ff0\",\n    \"Robots\": \"\\u673a\\u5668\\u4eba\",\n    \"Author\": \"\\u4f5c\\u8005\",\n    \"Encoding\": \"\\u7f16\\u7801\",\n    \"Fullscreen\": \"\\u5168\\u5c4f\",\n    \"Action\": \"\\u64cd\\u4f5c\",\n    \"Shortcut\": \"\\u5feb\\u6377\\u952e\",\n    \"Help\": \"\\u5e2e\\u52a9\",\n    \"Address\": \"\\u5730\\u5740\",\n    \"Focus to menubar\": \"\\u79fb\\u52a8\\u7126\\u70b9\\u5230\\u83dc\\u5355\\u680f\",\n    \"Focus to toolbar\": \"\\u79fb\\u52a8\\u7126\\u70b9\\u5230\\u5de5\\u5177\\u680f\",\n    \"Focus to element path\": \"\\u79fb\\u52a8\\u7126\\u70b9\\u5230\\u5143\\u7d20\\u8def\\u5f84\",\n    \"Focus to contextual toolbar\": \"\\u79fb\\u52a8\\u7126\\u70b9\\u5230\\u4e0a\\u4e0b\\u6587\\u83dc\\u5355\",\n    \"Insert link (if link plugin activated)\": \"\\u63d2\\u5165\\u94fe\\u63a5 (\\u5982\\u679c\\u94fe\\u63a5\\u63d2\\u4ef6\\u5df2\\u6fc0\\u6d3b)\",\n    \"Save (if save plugin activated)\": \"\\u4fdd\\u5b58(\\u5982\\u679c\\u4fdd\\u5b58\\u63d2\\u4ef6\\u5df2\\u6fc0\\u6d3b)\",\n    \"Find (if searchreplace plugin activated)\": \"\\u67e5\\u627e(\\u5982\\u679c\\u67e5\\u627e\\u66ff\\u6362\\u63d2\\u4ef6\\u5df2\\u6fc0\\u6d3b)\",\n    \"Plugins installed ({0}):\": \"\\u5df2\\u5b89\\u88c5\\u63d2\\u4ef6 ({0}):\",\n    \"Premium plugins:\": \"\\u4f18\\u79c0\\u63d2\\u4ef6\\uff1a\",\n    \"Learn more...\": \"\\u4e86\\u89e3\\u66f4\\u591a...\",\n    \"You are using {0}\": \"\\u4f60\\u6b63\\u5728\\u4f7f\\u7528 {0}\",\n    \"Plugins\": \"\\u63d2\\u4ef6\",\n    \"Handy Shortcuts\": \"\\u5feb\\u6377\\u952e\",\n    \"Horizontal line\": \"\\u6c34\\u5e73\\u5206\\u5272\\u7ebf\",\n    \"Insert\\/edit image\": \"\\u63d2\\u5165\\/\\u7f16\\u8f91\\u56fe\\u7247\",\n    \"Image description\": \"\\u56fe\\u7247\\u63cf\\u8ff0\",\n    \"Source\": \"\\u5730\\u5740\",\n    \"Dimensions\": \"\\u5927\\u5c0f\",\n    \"Constrain proportions\": \"\\u4fdd\\u6301\\u7eb5\\u6a2a\\u6bd4\",\n    \"General\": \"\\u666e\\u901a\",\n    \"Advanced\": \"\\u9ad8\\u7ea7\",\n    \"Style\": \"\\u6837\\u5f0f\",\n    \"Vertical space\": \"\\u5782\\u76f4\\u8fb9\\u8ddd\",\n    \"Horizontal space\": \"\\u6c34\\u5e73\\u8fb9\\u8ddd\",\n    \"Border\": \"\\u8fb9\\u6846\",\n    \"Insert image\": \"\\u63d2\\u5165\\u56fe\\u7247\",\n    \"Image...\": \"\\u56fe\\u7247...\",\n    \"Image list\": \"\\u56fe\\u7247\\u5217\\u8868\",\n    \"Rotate counterclockwise\": \"\\u9006\\u65f6\\u9488\\u65cb\\u8f6c\",\n    \"Rotate clockwise\": \"\\u987a\\u65f6\\u9488\\u65cb\\u8f6c\",\n    \"Flip vertically\": \"\\u5782\\u76f4\\u7ffb\\u8f6c\",\n    \"Flip horizontally\": \"\\u6c34\\u5e73\\u7ffb\\u8f6c\",\n    \"Edit image\": \"\\u7f16\\u8f91\\u56fe\\u7247\",\n    \"Image options\": \"\\u56fe\\u7247\\u9009\\u9879\",\n    \"Zoom in\": \"\\u653e\\u5927\",\n    \"Zoom out\": \"\\u7f29\\u5c0f\",\n    \"Crop\": \"\\u88c1\\u526a\",\n    \"Resize\": \"\\u8c03\\u6574\\u5927\\u5c0f\",\n    \"Orientation\": \"\\u65b9\\u5411\",\n    \"Brightness\": \"\\u4eae\\u5ea6\",\n    \"Sharpen\": \"\\u9510\\u5316\",\n    \"Contrast\": \"\\u5bf9\\u6bd4\\u5ea6\",\n    \"Color levels\": \"\\u989c\\u8272\\u5c42\\u6b21\",\n    \"Gamma\": \"\\u4f3d\\u9a6c\\u503c\",\n    \"Invert\": \"\\u53cd\\u8f6c\",\n    \"Apply\": \"\\u5e94\\u7528\",\n    \"Back\": \"\\u540e\\u9000\",\n    \"Insert date\\/time\": \"\\u63d2\\u5165\\u65e5\\u671f\\/\\u65f6\\u95f4\",\n    \"Date\\/time\": \"\\u65e5\\u671f\\/\\u65f6\\u95f4\",\n    \"Insert\\/Edit Link\": \"\\u63d2\\u5165\\/\\u7f16\\u8f91\\u94fe\\u63a5\",\n    \"Insert\\/edit link\": \"\\u63d2\\u5165\\/\\u7f16\\u8f91\\u94fe\\u63a5\",\n    \"Text to display\": \"\\u663e\\u793a\\u6587\\u5b57\",\n    \"Url\": \"\\u5730\\u5740\",\n    \"Open link in...\": \"\\u94fe\\u63a5\\u6253\\u5f00\\u4f4d\\u7f6e...\",\n    \"Current window\": \"\\u5f53\\u524d\\u7a97\\u53e3\",\n    \"None\": \"\\u65e0\",\n    \"New window\": \"\\u5728\\u65b0\\u7a97\\u53e3\\u6253\\u5f00\",\n    \"Remove link\": \"\\u5220\\u9664\\u94fe\\u63a5\",\n    \"Anchors\": \"\\u951a\\u70b9\",\n    \"Link...\": \"\\u94fe\\u63a5...\",\n    \"Paste or type a link\": \"\\u7c98\\u8d34\\u6216\\u8f93\\u5165\\u94fe\\u63a5\",\n    \"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u4f60\\u6240\\u586b\\u5199\\u7684URL\\u5730\\u5740\\u4e3a\\u90ae\\u4ef6\\u5730\\u5740\\uff0c\\u9700\\u8981\\u52a0\\u4e0amailto:\\u524d\\u7f00\\u5417\\uff1f\",\n    \"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u4f60\\u6240\\u586b\\u5199\\u7684URL\\u5730\\u5740\\u5c5e\\u4e8e\\u5916\\u90e8\\u94fe\\u63a5\\uff0c\\u9700\\u8981\\u52a0\\u4e0ahttp:\\/\\/:\\u524d\\u7f00\\u5417\\uff1f\",\n    \"Link list\": \"\\u94fe\\u63a5\\u5217\\u8868\",\n    \"Insert video\": \"\\u63d2\\u5165\\u89c6\\u9891\",\n    \"Insert\\/edit video\": \"\\u63d2\\u5165\\/\\u7f16\\u8f91\\u89c6\\u9891\",\n    \"Insert\\/edit media\": \"\\u63d2\\u5165\\/\\u7f16\\u8f91\\u5a92\\u4f53\",\n    \"Alternative source\": \"\\u955c\\u50cf\",\n    \"Alternative source URL\": \"\\u66ff\\u4ee3\\u6765\\u6e90\\u7f51\\u5740\",\n    \"Media poster (Image URL)\": \"\\u5c01\\u9762(\\u56fe\\u7247\\u5730\\u5740)\",\n    \"Paste your embed code below:\": \"\\u5c06\\u5185\\u5d4c\\u4ee3\\u7801\\u7c98\\u8d34\\u5728\\u4e0b\\u9762:\",\n    \"Embed\": \"\\u5185\\u5d4c\",\n    \"Media...\": \"\\u591a\\u5a92\\u4f53...\",\n    \"Nonbreaking space\": \"\\u4e0d\\u95f4\\u65ad\\u7a7a\\u683c\",\n    \"Page break\": \"\\u5206\\u9875\\u7b26\",\n    \"Paste as text\": \"\\u7c98\\u8d34\\u4e3a\\u6587\\u672c\",\n    \"Preview\": \"\\u9884\\u89c8\",\n    \"Print...\": \"\\u6253\\u5370...\",\n    \"Save\": \"\\u4fdd\\u5b58\",\n    \"Find\": \"\\u67e5\\u627e\",\n    \"Replace with\": \"\\u66ff\\u6362\\u4e3a\",\n    \"Replace\": \"\\u66ff\\u6362\",\n    \"Replace all\": \"\\u5168\\u90e8\\u66ff\\u6362\",\n    \"Previous\": \"\\u4e0a\\u4e00\\u4e2a\",\n    \"Next\": \"\\u4e0b\\u4e00\\u4e2a\",\n    \"Find and replace...\": \"\\u67e5\\u627e\\u5e76\\u66ff\\u6362...\",\n    \"Could not find the specified string.\": \"\\u672a\\u627e\\u5230\\u641c\\u7d22\\u5185\\u5bb9.\",\n    \"Match case\": \"\\u533a\\u5206\\u5927\\u5c0f\\u5199\",\n    \"Find whole words only\": \"\\u5168\\u5b57\\u5339\\u914d\",\n    \"Spell check\": \"\\u62fc\\u5199\\u68c0\\u67e5\",\n    \"Ignore\": \"\\u5ffd\\u7565\",\n    \"Ignore all\": \"\\u5168\\u90e8\\u5ffd\\u7565\",\n    \"Finish\": \"\\u5b8c\\u6210\",\n    \"Add to Dictionary\": \"\\u6dfb\\u52a0\\u5230\\u5b57\\u5178\",\n    \"Insert table\": \"\\u63d2\\u5165\\u8868\\u683c\",\n    \"Table properties\": \"\\u8868\\u683c\\u5c5e\\u6027\",\n    \"Delete table\": \"\\u5220\\u9664\\u8868\\u683c\",\n    \"Cell\": \"\\u5355\\u5143\\u683c\",\n    \"Row\": \"\\u884c\",\n    \"Column\": \"\\u5217\",\n    \"Cell properties\": \"\\u5355\\u5143\\u683c\\u5c5e\\u6027\",\n    \"Merge cells\": \"\\u5408\\u5e76\\u5355\\u5143\\u683c\",\n    \"Split cell\": \"\\u62c6\\u5206\\u5355\\u5143\\u683c\",\n    \"Insert row before\": \"\\u5728\\u4e0a\\u65b9\\u63d2\\u5165\",\n    \"Insert row after\": \"\\u5728\\u4e0b\\u65b9\\u63d2\\u5165\",\n    \"Delete row\": \"\\u5220\\u9664\\u884c\",\n    \"Row properties\": \"\\u884c\\u5c5e\\u6027\",\n    \"Cut row\": \"\\u526a\\u5207\\u884c\",\n    \"Copy row\": \"\\u590d\\u5236\\u884c\",\n    \"Paste row before\": \"\\u7c98\\u8d34\\u5230\\u4e0a\\u65b9\",\n    \"Paste row after\": \"\\u7c98\\u8d34\\u5230\\u4e0b\\u65b9\",\n    \"Insert column before\": \"\\u5728\\u5de6\\u4fa7\\u63d2\\u5165\",\n    \"Insert column after\": \"\\u5728\\u53f3\\u4fa7\\u63d2\\u5165\",\n    \"Delete column\": \"\\u5220\\u9664\\u5217\",\n    \"Cols\": \"\\u5217\",\n    \"Rows\": \"\\u884c\",\n    \"Width\": \"\\u5bbd\",\n    \"Height\": \"\\u9ad8\",\n    \"Cell spacing\": \"\\u5355\\u5143\\u683c\\u5916\\u95f4\\u8ddd\",\n    \"Cell padding\": \"\\u5355\\u5143\\u683c\\u5185\\u8fb9\\u8ddd\",\n    \"Show caption\": \"\\u663e\\u793a\\u6807\\u9898\",\n    \"Left\": \"\\u5de6\\u5bf9\\u9f50\",\n    \"Center\": \"\\u5c45\\u4e2d\",\n    \"Right\": \"\\u53f3\\u5bf9\\u9f50\",\n    \"Cell type\": \"\\u5355\\u5143\\u683c\\u7c7b\\u578b\",\n    \"Scope\": \"\\u8303\\u56f4\",\n    \"Alignment\": \"\\u5bf9\\u9f50\\u65b9\\u5f0f\",\n    \"H Align\": \"\\u6c34\\u5e73\\u5bf9\\u9f50\",\n    \"V Align\": \"\\u5782\\u76f4\\u5bf9\\u9f50\",\n    \"Top\": \"\\u9876\\u90e8\\u5bf9\\u9f50\",\n    \"Middle\": \"\\u5782\\u76f4\\u5c45\\u4e2d\",\n    \"Bottom\": \"\\u5e95\\u90e8\\u5bf9\\u9f50\",\n    \"Header cell\": \"\\u8868\\u5934\\u5355\\u5143\\u683c\",\n    \"Row group\": \"\\u884c\\u7ec4\",\n    \"Column group\": \"\\u5217\\u7ec4\",\n    \"Row type\": \"\\u884c\\u7c7b\\u578b\",\n    \"Header\": \"\\u8868\\u5934\",\n    \"Body\": \"\\u8868\\u4f53\",\n    \"Footer\": \"\\u8868\\u5c3e\",\n    \"Border color\": \"\\u8fb9\\u6846\\u989c\\u8272\",\n    \"Insert template...\": \"\\u63d2\\u5165\\u6a21\\u677f...\",\n    \"Templates\": \"\\u6a21\\u677f\",\n    \"Template\": \"\\u6a21\\u677f\",\n    \"Text color\": \"\\u6587\\u5b57\\u989c\\u8272\",\n    \"Background color\": \"\\u80cc\\u666f\\u8272\",\n    \"Custom...\": \"\\u81ea\\u5b9a\\u4e49...\",\n    \"Custom color\": \"\\u81ea\\u5b9a\\u4e49\\u989c\\u8272\",\n    \"No color\": \"\\u65e0\",\n    \"Remove color\": \"\\u79fb\\u9664\\u989c\\u8272\",\n    \"Table of Contents\": \"\\u5185\\u5bb9\\u5217\\u8868\",\n    \"Show blocks\": \"\\u663e\\u793a\\u533a\\u5757\\u8fb9\\u6846\",\n    \"Show invisible characters\": \"\\u663e\\u793a\\u4e0d\\u53ef\\u89c1\\u5b57\\u7b26\",\n    \"Word count\": \"\\u5b57\\u6570\",\n    \"Count\": \"\\u8ba1\\u6570\",\n    \"Document\": \"\\u6587\\u6863\",\n    \"Selection\": \"\\u9009\\u62e9\",\n    \"Words\": \"\\u5355\\u8bcd\",\n    \"Words: {0}\": \"\\u5b57\\u6570\\uff1a{0}\",\n    \"{0} words\": \"{0} \\u5b57\",\n    \"File\": \"\\u6587\\u4ef6\",\n    \"Edit\": \"\\u7f16\\u8f91\",\n    \"Insert\": \"\\u63d2\\u5165\",\n    \"View\": \"\\u89c6\\u56fe\",\n    \"Format\": \"\\u683c\\u5f0f\",\n    \"Table\": \"\\u8868\\u683c\",\n    \"Tools\": \"\\u5de5\\u5177\",\n    \"Powered by {0}\": \"\\u7531{0}\\u9a71\\u52a8\",\n    \"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u5728\\u7f16\\u8f91\\u533a\\u6309ALT-F9\\u6253\\u5f00\\u83dc\\u5355\\uff0c\\u6309ALT-F10\\u6253\\u5f00\\u5de5\\u5177\\u680f\\uff0c\\u6309ALT-0\\u67e5\\u770b\\u5e2e\\u52a9\",\n    \"Image title\": \"\\u56fe\\u7247\\u6807\\u9898\",\n    \"Border width\": \"\\u8fb9\\u6846\\u5bbd\\u5ea6\",\n    \"Border style\": \"\\u8fb9\\u6846\\u6837\\u5f0f\",\n    \"Error\": \"\\u9519\\u8bef\",\n    \"Warn\": \"\\u8b66\\u544a\",\n    \"Valid\": \"\\u6709\\u6548\",\n    \"To open the popup, press Shift+Enter\": \"\\u6309Shitf+Enter\\u952e\\u6253\\u5f00\\u5bf9\\u8bdd\\u6846\",\n    \"Rich Text Area. Press ALT-0 for help.\": \"\\u7f16\\u8f91\\u533a\\u3002\\u6309Alt+0\\u952e\\u6253\\u5f00\\u5e2e\\u52a9\\u3002\",\n    \"System Font\": \"\\u7cfb\\u7edf\\u5b57\\u4f53\",\n    \"Failed to upload image: {0}\": \"\\u56fe\\u7247\\u4e0a\\u4f20\\u5931\\u8d25: {0}\",\n    \"Failed to load plugin: {0} from url {1}\": \"\\u63d2\\u4ef6\\u52a0\\u8f7d\\u5931\\u8d25: {0} \\u6765\\u81ea\\u94fe\\u63a5 {1}\",\n    \"Failed to load plugin url: {0}\": \"\\u63d2\\u4ef6\\u52a0\\u8f7d\\u5931\\u8d25 \\u94fe\\u63a5: {0}\",\n    \"Failed to initialize plugin: {0}\": \"\\u63d2\\u4ef6\\u521d\\u59cb\\u5316\\u5931\\u8d25: {0}\",\n    \"example\": \"\\u793a\\u4f8b\",\n    \"Search\": \"\\u641c\\u7d22\",\n    \"All\": \"\\u5168\\u90e8\",\n    \"Currency\": \"\\u8d27\\u5e01\",\n    \"Text\": \"\\u6587\\u5b57\",\n    \"Quotations\": \"\\u5f15\\u7528\",\n    \"Mathematical\": \"\\u6570\\u5b66\",\n    \"Extended Latin\": \"\\u62c9\\u4e01\\u8bed\\u6269\\u5145\",\n    \"Symbols\": \"\\u7b26\\u53f7\",\n    \"Arrows\": \"\\u7bad\\u5934\",\n    \"User Defined\": \"\\u81ea\\u5b9a\\u4e49\",\n    \"dollar sign\": \"\\u7f8e\\u5143\\u7b26\\u53f7\",\n    \"currency sign\": \"\\u8d27\\u5e01\\u7b26\\u53f7\",\n    \"euro-currency sign\": \"\\u6b27\\u5143\\u7b26\\u53f7\",\n    \"colon sign\": \"\\u5192\\u53f7\",\n    \"cruzeiro sign\": \"\\u514b\\u9c81\\u8d5b\\u7f57\\u5e01\\u7b26\\u53f7\",\n    \"french franc sign\": \"\\u6cd5\\u90ce\\u7b26\\u53f7\",\n    \"lira sign\": \"\\u91cc\\u62c9\\u7b26\\u53f7\",\n    \"mill sign\": \"\\u5bc6\\u5c14\\u7b26\\u53f7\",\n    \"naira sign\": \"\\u5948\\u62c9\\u7b26\\u53f7\",\n    \"peseta sign\": \"\\u6bd4\\u585e\\u5854\\u7b26\\u53f7\",\n    \"rupee sign\": \"\\u5362\\u6bd4\\u7b26\\u53f7\",\n    \"won sign\": \"\\u97e9\\u5143\\u7b26\\u53f7\",\n    \"new sheqel sign\": \"\\u65b0\\u8c22\\u514b\\u5c14\\u7b26\\u53f7\",\n    \"dong sign\": \"\\u8d8a\\u5357\\u76fe\\u7b26\\u53f7\",\n    \"kip sign\": \"\\u8001\\u631d\\u57fa\\u666e\\u7b26\\u53f7\",\n    \"tugrik sign\": \"\\u56fe\\u683c\\u91cc\\u514b\\u7b26\\u53f7\",\n    \"drachma sign\": \"\\u5fb7\\u62c9\\u514b\\u9a6c\\u7b26\\u53f7\",\n    \"german penny symbol\": \"\\u5fb7\\u56fd\\u4fbf\\u58eb\\u7b26\\u53f7\",\n    \"peso sign\": \"\\u6bd4\\u7d22\\u7b26\\u53f7\",\n    \"guarani sign\": \"\\u74dc\\u62c9\\u5c3c\\u7b26\\u53f7\",\n    \"austral sign\": \"\\u6fb3\\u5143\\u7b26\\u53f7\",\n    \"hryvnia sign\": \"\\u683c\\u91cc\\u592b\\u5c3c\\u4e9a\\u7b26\\u53f7\",\n    \"cedi sign\": \"\\u585e\\u5730\\u7b26\\u53f7\",\n    \"livre tournois sign\": \"\\u91cc\\u5f17\\u5f17\\u5c14\\u7b26\\u53f7\",\n    \"spesmilo sign\": \"spesmilo\\u7b26\\u53f7\",\n    \"tenge sign\": \"\\u575a\\u6208\\u7b26\\u53f7\",\n    \"indian rupee sign\": \"\\u5370\\u5ea6\\u5362\\u6bd4\",\n    \"turkish lira sign\": \"\\u571f\\u8033\\u5176\\u91cc\\u62c9\",\n    \"nordic mark sign\": \"\\u5317\\u6b27\\u9a6c\\u514b\",\n    \"manat sign\": \"\\u9a6c\\u7eb3\\u7279\\u7b26\\u53f7\",\n    \"ruble sign\": \"\\u5362\\u5e03\\u7b26\\u53f7\",\n    \"yen character\": \"\\u65e5\\u5143\\u5b57\\u6837\",\n    \"yuan character\": \"\\u4eba\\u6c11\\u5e01\\u5143\\u5b57\\u6837\",\n    \"yuan character, in hong kong and taiwan\": \"\\u5143\\u5b57\\u6837\\uff08\\u6e2f\\u53f0\\u5730\\u533a\\uff09\",\n    \"yen\\/yuan character variant one\": \"\\u5143\\u5b57\\u6837\\uff08\\u5927\\u5199\\uff09\",\n    \"Loading emoticons...\": \"\\u52a0\\u8f7d\\u8868\\u60c5\\u7b26\\u53f7...\",\n    \"Could not load emoticons\": \"\\u4e0d\\u80fd\\u52a0\\u8f7d\\u8868\\u60c5\\u7b26\\u53f7\",\n    \"People\": \"\\u4eba\\u7c7b\",\n    \"Animals and Nature\": \"\\u52a8\\u7269\\u548c\\u81ea\\u7136\",\n    \"Food and Drink\": \"\\u98df\\u7269\\u548c\\u996e\\u54c1\",\n    \"Activity\": \"\\u6d3b\\u52a8\",\n    \"Travel and Places\": \"\\u65c5\\u6e38\\u548c\\u5730\\u70b9\",\n    \"Objects\": \"\\u7269\\u4ef6\",\n    \"Flags\": \"\\u65d7\\u5e1c\",\n    \"Characters\": \"\\u5b57\\u7b26\",\n    \"Characters (no spaces)\": \"\\u5b57\\u7b26(\\u65e0\\u7a7a\\u683c)\",\n    \"{0} characters\": \"{0} \\u4e2a\\u5b57\\u7b26\",\n    \"Error: Form submit field collision.\": \"\\u9519\\u8bef: \\u8868\\u5355\\u63d0\\u4ea4\\u5b57\\u6bb5\\u51b2\\u7a81\\u3002\",\n    \"Error: No form element found.\": \"\\u9519\\u8bef: \\u6ca1\\u6709\\u8868\\u5355\\u63a7\\u4ef6\\u3002\",\n    \"Update\": \"\\u66f4\\u65b0\",\n    \"Color swatch\": \"\\u989c\\u8272\\u6837\\u672c\",\n    \"Turquoise\": \"\\u9752\\u7eff\\u8272\",\n    \"Green\": \"\\u7eff\\u8272\",\n    \"Blue\": \"\\u84dd\\u8272\",\n    \"Purple\": \"\\u7d2b\\u8272\",\n    \"Navy Blue\": \"\\u6d77\\u519b\\u84dd\",\n    \"Dark Turquoise\": \"\\u6df1\\u84dd\\u7eff\\u8272\",\n    \"Dark Green\": \"\\u6df1\\u7eff\\u8272\",\n    \"Medium Blue\": \"\\u4e2d\\u84dd\\u8272\",\n    \"Medium Purple\": \"\\u4e2d\\u7d2b\\u8272\",\n    \"Midnight Blue\": \"\\u6df1\\u84dd\\u8272\",\n    \"Yellow\": \"\\u9ec4\\u8272\",\n    \"Orange\": \"\\u6a59\\u8272\",\n    \"Red\": \"\\u7ea2\\u8272\",\n    \"Light Gray\": \"\\u6d45\\u7070\\u8272\",\n    \"Gray\": \"\\u7070\\u8272\",\n    \"Dark Yellow\": \"\\u6697\\u9ec4\\u8272\",\n    \"Dark Orange\": \"\\u6df1\\u6a59\\u8272\",\n    \"Dark Red\": \"\\u6df1\\u7ea2\\u8272\",\n    \"Medium Gray\": \"\\u4e2d\\u7070\\u8272\",\n    \"Dark Gray\": \"\\u6df1\\u7070\\u8272\",\n    \"Light Green\": \"\\u6d45\\u7eff\\u8272\",\n    \"Light Yellow\": \"\\u6d45\\u9ec4\\u8272\",\n    \"Light Red\": \"\\u6d45\\u7ea2\\u8272\",\n    \"Light Purple\": \"\\u6d45\\u7d2b\\u8272\",\n    \"Light Blue\": \"\\u6d45\\u84dd\\u8272\",\n    \"Dark Purple\": \"\\u6df1\\u7d2b\\u8272\",\n    \"Dark Blue\": \"\\u6df1\\u84dd\\u8272\",\n    \"Black\": \"\\u9ed1\\u8272\",\n    \"White\": \"\\u767d\\u8272\",\n    \"Switch to or from fullscreen mode\": \"\\u5207\\u6362\\u5168\\u5c4f\\u6a21\\u5f0f\",\n    \"Open help dialog\": \"\\u6253\\u5f00\\u5e2e\\u52a9\\u5bf9\\u8bdd\\u6846\",\n    \"history\": \"\\u5386\\u53f2\",\n    \"styles\": \"\\u6837\\u5f0f\",\n    \"formatting\": \"\\u683c\\u5f0f\\u5316\",\n    \"alignment\": \"\\u5bf9\\u9f50\",\n    \"indentation\": \"\\u7f29\\u8fdb\",\n    \"permanent pen\": \"\\u8bb0\\u53f7\\u7b14\",\n    \"comments\": \"\\u5907\\u6ce8\",\n    \"Format Painter\": \"\\u683c\\u5f0f\\u5237\",\n    \"Insert\\/edit iframe\": \"\\u63d2\\u5165\\/\\u7f16\\u8f91\\u6846\\u67b6\",\n    \"Capitalization\": \"\\u5927\\u5199\",\n    \"lowercase\": \"\\u5c0f\\u5199\",\n    \"UPPERCASE\": \"\\u5927\\u5199\",\n    \"Title Case\": \"\\u9996\\u5b57\\u6bcd\\u5927\\u5199\",\n    \"Permanent Pen Properties\": \"\\u6c38\\u4e45\\u7b14\\u5c5e\\u6027\",\n    \"Permanent pen properties...\": \"\\u6c38\\u4e45\\u7b14\\u5c5e\\u6027...\",\n    \"Font\": \"\\u5b57\\u4f53\",\n    \"Size\": \"\\u5b57\\u53f7\",\n    \"More...\": \"\\u66f4\\u591a...\",\n    \"Spellcheck Language\": \"\\u62fc\\u5199\\u68c0\\u67e5\\u8bed\\u8a00\",\n    \"Select...\": \"\\u9009\\u62e9...\",\n    \"Preferences\": \"\\u9996\\u9009\\u9879\",\n    \"Yes\": \"\\u662f\",\n    \"No\": \"\\u5426\",\n    \"Keyboard Navigation\": \"\\u952e\\u76d8\\u6307\\u5f15\",\n    \"Version\": \"\\u7248\\u672c\",\n    \"Anchor\": \"\\u951a\\u70b9\",\n    \"Special character\": \"\\u7279\\u6b8a\\u7b26\\u53f7\",\n    \"Code sample\": \"\\u4ee3\\u7801\\u793a\\u4f8b\",\n    \"Color\": \"\\u989c\\u8272\",\n    \"Emoticons\": \"\\u8868\\u60c5\",\n    \"Document properties\": \"\\u6587\\u6863\\u5c5e\\u6027\",\n    \"Image\": \"\\u56fe\\u7247\",\n    \"Insert link\": \"\\u63d2\\u5165\\u94fe\\u63a5\",\n    \"Target\": \"\\u6253\\u5f00\\u65b9\\u5f0f\",\n    \"Link\": \"\\u94fe\\u63a5\",\n    \"Poster\": \"\\u5c01\\u9762\",\n    \"Media\": \"\\u5a92\\u4f53\",\n    \"Print\": \"\\u6253\\u5370\",\n    \"Prev\": \"\\u4e0a\\u4e00\\u4e2a\",\n    \"Find and replace\": \"\\u67e5\\u627e\\u548c\\u66ff\\u6362\",\n    \"Whole words\": \"\\u5168\\u5b57\\u5339\\u914d\",\n    \"Spellcheck\": \"\\u62fc\\u5199\\u68c0\\u67e5\",\n    \"Caption\": \"\\u6807\\u9898\",\n    \"Insert template\": \"\\u63d2\\u5165\\u6a21\\u677f\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/langs/zh_TW.js",
    "content": "tinymce.addI18n('zh_TW',{\n\"Redo\": \"\\u91cd\\u505a\",\n\"Undo\": \"\\u64a4\\u92b7\",\n\"Cut\": \"\\u526a\\u4e0b\",\n\"Copy\": \"\\u8907\\u88fd\",\n\"Paste\": \"\\u8cbc\\u4e0a\",\n\"Select all\": \"\\u5168\\u9078\",\n\"New document\": \"\\u65b0\\u6587\\u4ef6\",\n\"Ok\": \"\\u78ba\\u5b9a\",\n\"Cancel\": \"\\u53d6\\u6d88\",\n\"Visual aids\": \"\\u5c0f\\u5e6b\\u624b\",\n\"Bold\": \"\\u7c97\\u9ad4\",\n\"Italic\": \"\\u659c\\u9ad4\",\n\"Underline\": \"\\u4e0b\\u5283\\u7dda\",\n\"Strikethrough\": \"\\u522a\\u9664\\u7dda\",\n\"Superscript\": \"\\u4e0a\\u6a19\",\n\"Subscript\": \"\\u4e0b\\u6a19\",\n\"Clear formatting\": \"\\u6e05\\u9664\\u683c\\u5f0f\",\n\"Align left\": \"\\u5de6\\u908a\\u5c0d\\u9f4a\",\n\"Align center\": \"\\u4e2d\\u9593\\u5c0d\\u9f4a\",\n\"Align right\": \"\\u53f3\\u908a\\u5c0d\\u9f4a\",\n\"Justify\": \"\\u5de6\\u53f3\\u5c0d\\u9f4a\",\n\"Bullet list\": \"\\u9805\\u76ee\\u6e05\\u55ae\",\n\"Numbered list\": \"\\u6578\\u5b57\\u6e05\\u55ae\",\n\"Decrease indent\": \"\\u6e1b\\u5c11\\u7e2e\\u6392\",\n\"Increase indent\": \"\\u589e\\u52a0\\u7e2e\\u6392\",\n\"Close\": \"\\u95dc\\u9589\",\n\"Formats\": \"\\u683c\\u5f0f\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u60a8\\u7684\\u700f\\u89bd\\u5668\\u4e0d\\u652f\\u63f4\\u5b58\\u53d6\\u526a\\u8cbc\\u7c3f\\uff0c\\u53ef\\u4ee5\\u4f7f\\u7528\\u5feb\\u901f\\u9375 Ctrl + X\\/C\\/V \\u4ee3\\u66ff\\u526a\\u4e0b\\u3001\\u8907\\u88fd\\u8207\\u8cbc\\u4e0a\\u3002\",\n\"Headers\": \"\\u6a19\\u984c\",\n\"Header 1\": \"\\u6a19\\u984c 1\",\n\"Header 2\": \"\\u6a19\\u984c 2\",\n\"Header 3\": \"\\u6a19\\u984c 3\",\n\"Header 4\": \"\\u6a19\\u984c 4\",\n\"Header 5\": \"\\u6a19\\u984c 5\",\n\"Header 6\": \"\\u6a19\\u984c 6\",\n\"Headings\": \"\\u6a19\\u984c\",\n\"Heading 1\": \"\\u6a19\\u984c1\",\n\"Heading 2\": \"\\u6a19\\u984c2\",\n\"Heading 3\": \"\\u6a19\\u984c3\",\n\"Heading 4\": \"\\u6a19\\u984c4\",\n\"Heading 5\": \"\\u6a19\\u984c5\",\n\"Heading 6\": \"\\u6a19\\u984c6\",\n\"Preformatted\": \"\\u9810\\u5148\\u683c\\u5f0f\\u5316\\u7684\",\n\"Div\": \"Div\",\n\"Pre\": \"Pre\",\n\"Code\": \"\\u4ee3\\u78bc\",\n\"Paragraph\": \"\\u6bb5\\u843d\",\n\"Blockquote\": \"\\u5f15\\u6587\\u5340\\u584a\",\n\"Inline\": \"\\u5167\\u806f\",\n\"Blocks\": \"\\u57fa\\u584a\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u76ee\\u524d\\u5c07\\u4ee5\\u7d14\\u6587\\u5b57\\u7684\\u6a21\\u5f0f\\u8cbc\\u4e0a\\uff0c\\u60a8\\u53ef\\u4ee5\\u518d\\u9ede\\u9078\\u4e00\\u6b21\\u53d6\\u6d88\\u3002\",\n\"Fonts\": \"\\u5b57\\u578b\",\n\"Font Sizes\": \"\\u5b57\\u578b\\u5927\\u5c0f\",\n\"Class\": \"\\u985e\\u578b\",\n\"Browse for an image\": \"\\u5f9e\\u5716\\u7247\\u4e2d\\u700f\\u89bd\",\n\"OR\": \"\\u6216\",\n\"Drop an image here\": \"\\u62d6\\u66f3\\u5716\\u7247\\u81f3\\u6b64\",\n\"Upload\": \"\\u4e0a\\u50b3\",\n\"Block\": \"\\u5340\\u584a\",\n\"Align\": \"\\u5c0d\\u9f4a\",\n\"Default\": \"\\u9810\\u8a2d\",\n\"Circle\": \"\\u7a7a\\u5fc3\\u5713\",\n\"Disc\": \"\\u5be6\\u5fc3\\u5713\",\n\"Square\": \"\\u6b63\\u65b9\\u5f62\",\n\"Lower Alpha\": \"\\u5c0f\\u5beb\\u82f1\\u6587\\u5b57\\u6bcd\",\n\"Lower Greek\": \"\\u5e0c\\u81d8\\u5b57\\u6bcd\",\n\"Lower Roman\": \"\\u5c0f\\u5beb\\u7f85\\u99ac\\u6578\\u5b57\",\n\"Upper Alpha\": \"\\u5927\\u5beb\\u82f1\\u6587\\u5b57\\u6bcd\",\n\"Upper Roman\": \"\\u5927\\u5beb\\u7f85\\u99ac\\u6578\\u5b57\",\n\"Anchor...\": \"\\u9328\\u9ede...\",\n\"Name\": \"\\u540d\\u7a31\",\n\"Id\": \"Id\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"Id\\u61c9\\u4ee5\\u5b57\\u6bcd\\u958b\\u982d\\uff0c\\u5f8c\\u9762\\u63a5\\u8457\\u5b57\\u6bcd\\uff0c\\u6578\\u5b57\\uff0c\\u7834\\u6298\\u865f\\uff0c\\u9ede\\u6578\\uff0c\\u5192\\u865f\\u6216\\u4e0b\\u5283\\u7dda\\u3002\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u7de8\\u8f2f\\u5c1a\\u672a\\u88ab\\u5132\\u5b58\\uff0c\\u4f60\\u78ba\\u5b9a\\u8981\\u96e2\\u958b\\uff1f\",\n\"Restore last draft\": \"\\u8f09\\u5165\\u4e0a\\u4e00\\u6b21\\u7de8\\u8f2f\\u7684\\u8349\\u7a3f\",\n\"Special character...\": \"\\u7279\\u6b8a\\u5b57\\u5143......\",\n\"Source code\": \"\\u539f\\u59cb\\u78bc\",\n\"Insert\\/Edit code sample\": \"\\u63d2\\u5165\\/\\u7de8\\u8f2f \\u7a0b\\u5f0f\\u78bc\\u7bc4\\u4f8b\",\n\"Language\": \"\\u8a9e\\u8a00\",\n\"Code sample...\": \"\\u7a0b\\u5f0f\\u78bc\\u7bc4\\u4f8b...\",\n\"Color Picker\": \"\\u9078\\u8272\\u5668\",\n\"R\": \"\\u7d05\",\n\"G\": \"\\u7da0\",\n\"B\": \"\\u85cd\",\n\"Left to right\": \"\\u5f9e\\u5de6\\u5230\\u53f3\",\n\"Right to left\": \"\\u5f9e\\u53f3\\u5230\\u5de6\",\n\"Emoticons...\": \"\\u8868\\u60c5\\u7b26\\u865f\\u2026\",\n\"Metadata and Document Properties\": \"\\u5f8c\\u8a2d\\u8cc7\\u6599\\u8207\\u6587\\u4ef6\\u5c6c\\u6027\",\n\"Title\": \"\\u6a19\\u984c\",\n\"Keywords\": \"\\u95dc\\u9375\\u5b57\",\n\"Description\": \"\\u63cf\\u8ff0\",\n\"Robots\": \"\\u6a5f\\u5668\\u4eba\",\n\"Author\": \"\\u4f5c\\u8005\",\n\"Encoding\": \"\\u7de8\\u78bc\",\n\"Fullscreen\": \"\\u5168\\u87a2\\u5e55\",\n\"Action\": \"\\u52d5\\u4f5c\",\n\"Shortcut\": \"\\u5feb\\u901f\\u9375\",\n\"Help\": \"\\u5e6b\\u52a9\",\n\"Address\": \"\\u5730\\u5740\",\n\"Focus to menubar\": \"\\u8df3\\u81f3\\u9078\\u55ae\\u5217\",\n\"Focus to toolbar\": \"\\u8df3\\u81f3\\u5de5\\u5177\\u5217\",\n\"Focus to element path\": \"\\u8df3\\u81f3HTML\\u5143\\u7d20\\u5217\",\n\"Focus to contextual toolbar\": \"\\u8df3\\u81f3\\u5feb\\u6377\\u9078\\u55ae\",\n\"Insert link (if link plugin activated)\": \"\\u65b0\\u589e\\u6377\\u5f91 (\\u6377\\u5f91\\u5916\\u639b\\u555f\\u7528\\u6642)\",\n\"Save (if save plugin activated)\": \"\\u5132\\u5b58 (\\u5132\\u5b58\\u5916\\u639b\\u555f\\u7528\\u6642)\",\n\"Find (if searchreplace plugin activated)\": \"\\u5c0b\\u627e (\\u5c0b\\u627e\\u53d6\\u4ee3\\u5916\\u639b\\u555f\\u7528\\u6642)\",\n\"Plugins installed ({0}):\": \"({0}) \\u500b\\u5916\\u639b\\u5df2\\u5b89\\u88dd\\uff1a\",\n\"Premium plugins:\": \"\\u52a0\\u503c\\u5916\\u639b\\uff1a\",\n\"Learn more...\": \"\\u4e86\\u89e3\\u66f4\\u591a...\",\n\"You are using {0}\": \"\\u60a8\\u6b63\\u5728\\u4f7f\\u7528 {0}\",\n\"Plugins\": \"\\u5916\\u639b\",\n\"Handy Shortcuts\": \"\\u5feb\\u901f\\u9375\",\n\"Horizontal line\": \"\\u6c34\\u5e73\\u7dda\",\n\"Insert\\/edit image\": \"\\u63d2\\u5165\\/\\u7de8\\u8f2f \\u5716\\u7247\",\n\"Image description\": \"\\u5716\\u7247\\u63cf\\u8ff0\",\n\"Source\": \"\\u5716\\u7247\\u7db2\\u5740\",\n\"Dimensions\": \"\\u5c3a\\u5bf8\",\n\"Constrain proportions\": \"\\u7b49\\u6bd4\\u4f8b\\u7e2e\\u653e\",\n\"General\": \"\\u4e00\\u822c\",\n\"Advanced\": \"\\u9032\\u968e\",\n\"Style\": \"\\u6a23\\u5f0f\",\n\"Vertical space\": \"\\u9ad8\\u5ea6\",\n\"Horizontal space\": \"\\u5bec\\u5ea6\",\n\"Border\": \"\\u908a\\u6846\",\n\"Insert image\": \"\\u63d2\\u5165\\u5716\\u7247\",\n\"Image...\": \"\\u5716\\u7247......\",\n\"Image list\": \"\\u5716\\u7247\\u6e05\\u55ae\",\n\"Rotate counterclockwise\": \"\\u9006\\u6642\\u91dd\\u65cb\\u8f49\",\n\"Rotate clockwise\": \"\\u9806\\u6642\\u91dd\\u65cb\\u8f49\",\n\"Flip vertically\": \"\\u5782\\u76f4\\u7ffb\\u8f49\",\n\"Flip horizontally\": \"\\u6c34\\u5e73\\u7ffb\\u8f49\",\n\"Edit image\": \"\\u7de8\\u8f2f\\u5716\\u7247\",\n\"Image options\": \"\\u5716\\u7247\\u9078\\u9805\",\n\"Zoom in\": \"\\u653e\\u5927\",\n\"Zoom out\": \"\\u7e2e\\u5c0f\",\n\"Crop\": \"\\u88c1\\u526a\",\n\"Resize\": \"\\u8abf\\u6574\\u5927\\u5c0f\",\n\"Orientation\": \"\\u65b9\\u5411\",\n\"Brightness\": \"\\u4eae\\u5ea6\",\n\"Sharpen\": \"\\u92b3\\u5316\",\n\"Contrast\": \"\\u5c0d\\u6bd4\",\n\"Color levels\": \"\\u984f\\u8272\\u5c64\\u6b21\",\n\"Gamma\": \"\\u4f3d\\u99ac\\u503c\",\n\"Invert\": \"\\u53cd\\u8f49\",\n\"Apply\": \"\\u61c9\\u7528\",\n\"Back\": \"\\u5f8c\\u9000\",\n\"Insert date\\/time\": \"\\u63d2\\u5165 \\u65e5\\u671f\\/\\u6642\\u9593\",\n\"Date\\/time\": \"\\u65e5\\u671f\\/\\u6642\\u9593\",\n\"Insert\\/Edit Link\": \"\\u63d2\\u5165\\/\\u7de8\\u8f2f\\u9023\\u7d50\",\n\"Insert\\/edit link\": \"\\u63d2\\u5165\\/\\u7de8\\u8f2f\\u9023\\u7d50\",\n\"Text to display\": \"\\u986f\\u793a\\u6587\\u5b57\",\n\"Url\": \"\\u7db2\\u5740\",\n\"Open link in...\": \"\\u958b\\u555f\\u9023\\u7d50\\u65bc...\",\n\"Current window\": \"\\u76ee\\u524d\\u8996\\u7a97\",\n\"None\": \"\\u7121\",\n\"New window\": \"\\u53e6\\u958b\\u8996\\u7a97\",\n\"Remove link\": \"\\u79fb\\u9664\\u9023\\u7d50\",\n\"Anchors\": \"\\u52a0\\u5165\\u9328\\u9ede\",\n\"Link...\": \"\\u9023\\u7d50...\",\n\"Paste or type a link\": \"\\u8cbc\\u4e0a\\u6216\\u8f38\\u5165\\u9023\\u7d50\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u4f60\\u6240\\u586b\\u5beb\\u7684URL\\u70ba\\u96fb\\u5b50\\u90f5\\u4ef6\\uff0c\\u9700\\u8981\\u52a0\\u4e0amailto:\\u524d\\u7db4\\u55ce\\uff1f\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u4f60\\u6240\\u586b\\u5beb\\u7684URL\\u5c6c\\u65bc\\u5916\\u90e8\\u93c8\\u63a5\\uff0c\\u9700\\u8981\\u52a0\\u4e0ahttp:\\/\\/:\\u524d\\u7db4\\u55ce\\uff1f\",\n\"Link list\": \"\\u9023\\u7d50\\u6e05\\u55ae\",\n\"Insert video\": \"\\u63d2\\u5165\\u5f71\\u97f3\",\n\"Insert\\/edit video\": \"\\u63d2\\u4ef6\\/\\u7de8\\u8f2f \\u5f71\\u97f3\",\n\"Insert\\/edit media\": \"\\u63d2\\u5165\\/\\u7de8\\u8f2f \\u5a92\\u9ad4\",\n\"Alternative source\": \"\\u66ff\\u4ee3\\u5f71\\u97f3\",\n\"Alternative source URL\": \"\\u66ff\\u4ee3\\u4f86\\u6e90URL\",\n\"Media poster (Image URL)\": \"\\u5a92\\u9ad4\\u6d77\\u5831\\uff08\\u5f71\\u50cfImage URL\\uff09\",\n\"Paste your embed code below:\": \"\\u8acb\\u5c07\\u60a8\\u7684\\u5d4c\\u5165\\u5f0f\\u7a0b\\u5f0f\\u78bc\\u8cbc\\u5728\\u4e0b\\u9762:\",\n\"Embed\": \"\\u5d4c\\u5165\\u78bc\",\n\"Media...\": \"\\u5a92\\u9ad4...\",\n\"Nonbreaking space\": \"\\u4e0d\\u5206\\u884c\\u7684\\u7a7a\\u683c\",\n\"Page break\": \"\\u5206\\u9801\",\n\"Paste as text\": \"\\u4ee5\\u7d14\\u6587\\u5b57\\u8cbc\\u4e0a\",\n\"Preview\": \"\\u9810\\u89bd\",\n\"Print...\": \"\\u5217\\u5370...\",\n\"Save\": \"\\u5132\\u5b58\",\n\"Find\": \"\\u641c\\u5c0b\",\n\"Replace with\": \"\\u66f4\\u63db\",\n\"Replace\": \"\\u66ff\\u63db\",\n\"Replace all\": \"\\u66ff\\u63db\\u5168\\u90e8\",\n\"Previous\": \"\\u4e0a\\u4e00\\u500b\",\n\"Next\": \"\\u4e0b\\u4e00\\u500b\",\n\"Find and replace...\": \"\\u5c0b\\u627e\\u53ca\\u53d6\\u4ee3...\",\n\"Could not find the specified string.\": \"\\u7121\\u6cd5\\u67e5\\u8a62\\u5230\\u6b64\\u7279\\u5b9a\\u5b57\\u4e32\",\n\"Match case\": \"\\u76f8\\u5339\\u914d\\u6848\\u4ef6\",\n\"Find whole words only\": \"\\u50c5\\u627e\\u51fa\\u5b8c\\u6574\\u5b57\\u532f\",\n\"Spell check\": \"\\u62fc\\u5beb\\u6aa2\\u67e5\",\n\"Ignore\": \"\\u5ffd\\u7565\",\n\"Ignore all\": \"\\u5ffd\\u7565\\u6240\\u6709\",\n\"Finish\": \"\\u5b8c\\u6210\",\n\"Add to Dictionary\": \"\\u52a0\\u5165\\u5b57\\u5178\\u4e2d\",\n\"Insert table\": \"\\u63d2\\u5165\\u8868\\u683c\",\n\"Table properties\": \"\\u8868\\u683c\\u5c6c\\u6027\",\n\"Delete table\": \"\\u522a\\u9664\\u8868\\u683c\",\n\"Cell\": \"\\u5132\\u5b58\\u683c\",\n\"Row\": \"\\u5217\",\n\"Column\": \"\\u884c\",\n\"Cell properties\": \"\\u5132\\u5b58\\u683c\\u5c6c\\u6027\",\n\"Merge cells\": \"\\u5408\\u4f75\\u5132\\u5b58\\u683c\",\n\"Split cell\": \"\\u5206\\u5272\\u5132\\u5b58\\u683c\",\n\"Insert row before\": \"\\u63d2\\u5165\\u5217\\u5728...\\u4e4b\\u524d\",\n\"Insert row after\": \"\\u63d2\\u5165\\u5217\\u5728...\\u4e4b\\u5f8c\",\n\"Delete row\": \"\\u522a\\u9664\\u5217\",\n\"Row properties\": \"\\u5217\\u5c6c\\u6027\",\n\"Cut row\": \"\\u526a\\u4e0b\\u5217\",\n\"Copy row\": \"\\u8907\\u88fd\\u5217\",\n\"Paste row before\": \"\\u8cbc\\u4e0a\\u5217\\u5728...\\u4e4b\\u524d\",\n\"Paste row after\": \"\\u8cbc\\u4e0a\\u5217\\u5728...\\u4e4b\\u5f8c\",\n\"Insert column before\": \"\\u63d2\\u5165\\u6b04\\u4f4d\\u5728...\\u4e4b\\u524d\",\n\"Insert column after\": \"\\u63d2\\u5165\\u6b04\\u4f4d\\u5728...\\u4e4b\\u5f8c\",\n\"Delete column\": \"\\u522a\\u9664\\u884c\",\n\"Cols\": \"\\u6b04\\u4f4d\\u6bb5\",\n\"Rows\": \"\\u5217\",\n\"Width\": \"\\u5bec\\u5ea6\",\n\"Height\": \"\\u9ad8\\u5ea6\",\n\"Cell spacing\": \"\\u5132\\u5b58\\u683c\\u5f97\\u9593\\u8ddd\",\n\"Cell padding\": \"\\u5132\\u5b58\\u683c\\u7684\\u908a\\u8ddd\",\n\"Show caption\": \"\\u986f\\u793a\\u6a19\\u984c\",\n\"Left\": \"\\u5de6\\u908a\",\n\"Center\": \"\\u4e2d\\u9593\",\n\"Right\": \"\\u53f3\\u908a\",\n\"Cell type\": \"\\u5132\\u5b58\\u683c\\u7684\\u985e\\u578b\",\n\"Scope\": \"\\u7bc4\\u570d\",\n\"Alignment\": \"\\u5c0d\\u9f4a\",\n\"H Align\": \"\\u6c34\\u5e73\\u4f4d\\u7f6e\",\n\"V Align\": \"\\u5782\\u76f4\\u4f4d\\u7f6e\",\n\"Top\": \"\\u7f6e\\u9802\",\n\"Middle\": \"\\u7f6e\\u4e2d\",\n\"Bottom\": \"\\u7f6e\\u5e95\",\n\"Header cell\": \"\\u6a19\\u982d\\u5132\\u5b58\\u683c\",\n\"Row group\": \"\\u5217\\u7fa4\\u7d44\",\n\"Column group\": \"\\u6b04\\u4f4d\\u7fa4\\u7d44\",\n\"Row type\": \"\\u884c\\u7684\\u985e\\u578b\",\n\"Header\": \"\\u6a19\\u982d\",\n\"Body\": \"\\u4e3b\\u9ad4\",\n\"Footer\": \"\\u9801\\u5c3e\",\n\"Border color\": \"\\u908a\\u6846\\u984f\\u8272\",\n\"Insert template...\": \"\\u63d2\\u5165\\u6a23\\u7248...\",\n\"Templates\": \"\\u6a23\\u7248\",\n\"Template\": \"\\u6a23\\u677f\",\n\"Text color\": \"\\u6587\\u5b57\\u984f\\u8272\",\n\"Background color\": \"\\u80cc\\u666f\\u984f\\u8272\",\n\"Custom...\": \"\\u81ea\\u8a02\",\n\"Custom color\": \"\\u81ea\\u8a02\\u984f\\u8272\",\n\"No color\": \"No color\",\n\"Remove color\": \"\\u79fb\\u9664\\u984f\\u8272\",\n\"Table of Contents\": \"\\u76ee\\u9304\",\n\"Show blocks\": \"\\u986f\\u793a\\u5340\\u584a\\u8cc7\\u8a0a\",\n\"Show invisible characters\": \"\\u986f\\u793a\\u96b1\\u85cf\\u5b57\\u5143\",\n\"Word count\": \"\\u8a08\\u7b97\\u5b57\\u6578\",\n\"Count\": \"\\u8a08\\u7b97\",\n\"Document\": \"\\u6587\\u4ef6\",\n\"Selection\": \"\\u9078\\u9805\",\n\"Words\": \"\\u5b57\\u6578\",\n\"Words: {0}\": \"\\u5b57\\u6578\\uff1a{0}\",\n\"{0} words\": \"{0} \\u5b57\\u5143\",\n\"File\": \"\\u6a94\\u6848\",\n\"Edit\": \"\\u7de8\\u8f2f\",\n\"Insert\": \"\\u63d2\\u5165\",\n\"View\": \"\\u6aa2\\u8996\",\n\"Format\": \"\\u683c\\u5f0f\",\n\"Table\": \"\\u8868\\u683c\",\n\"Tools\": \"\\u5de5\\u5177\",\n\"Powered by {0}\": \"\\u7531 {0} \\u63d0\\u4f9b\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u8c50\\u5bcc\\u7684\\u6587\\u672c\\u5340\\u57df\\u3002\\u6309ALT-F9\\u524d\\u5f80\\u4e3b\\u9078\\u55ae\\u3002\\u6309ALT-F10\\u547c\\u53eb\\u5de5\\u5177\\u6b04\\u3002\\u6309ALT-0\\u5c0b\\u6c42\\u5e6b\\u52a9\",\n\"Image title\": \"\\u5716\\u7247\\u6a19\\u984c\",\n\"Border width\": \"\\u6846\\u7dda\\u5bec\\u5ea6\",\n\"Border style\": \"\\u6846\\u7dda\\u6a23\\u5f0f\",\n\"Error\": \"\\u932f\\u8aa4\",\n\"Warn\": \"\\u8b66\\u544a\",\n\"Valid\": \"\\u6709\\u6548\",\n\"To open the popup, press Shift+Enter\": \"\\u8981\\u958b\\u555f\\u5f48\\u51fa\\u8996\\u7a97\\uff0c\\u8acb\\u6309Shift+Enter\",\n\"Rich Text Area. Press ALT-0 for help.\": \"\\u5bcc\\u6587\\u672c\\u5340\\u57df\\u3002\\u8acb\\u6309ALT-0\\u5c0b\\u6c42\\u5354\\u52a9\\u3002\",\n\"System Font\": \"\\u7cfb\\u7d71\\u5b57\\u578b\",\n\"Failed to upload image: {0}\": \"\\u7121\\u6cd5\\u4e0a\\u50b3\\u5f71\\u50cf\\uff1a{0}\",\n\"Failed to load plugin: {0} from url {1}\": \"\\u7121\\u6cd5\\u4e0a\\u50b3\\u63d2\\u4ef6\\uff1a{0}\\u81eaurl{1}\",\n\"Failed to load plugin url: {0}\": \"\\u7121\\u6cd5\\u4e0a\\u50b3\\u63d2\\u4ef6\\uff1a{0}\",\n\"Failed to initialize plugin: {0}\": \"\\u7121\\u6cd5\\u555f\\u52d5\\u63d2\\u4ef6\\uff1a{0}\",\n\"example\": \"\\u7bc4\\u4f8b\",\n\"Search\": \"\\u641c\\u7d22\",\n\"All\": \"\\u5168\\u90e8\",\n\"Currency\": \"\\u8ca8\\u5e63\",\n\"Text\": \"\\u6587\\u672c\",\n\"Quotations\": \"\\u5f15\\u7528\",\n\"Mathematical\": \"\\u6578\\u5b78\",\n\"Extended Latin\": \"\\u62c9\\u4e01\\u5b57\\u6bcd\\u64f4\\u5145\",\n\"Symbols\": \"\\u7b26\\u865f\",\n\"Arrows\": \"\\u7bad\\u982d\",\n\"User Defined\": \"\\u4f7f\\u7528\\u8005\\u5df2\\u5b9a\\u7fa9\",\n\"dollar sign\": \"\\u7f8e\\u5143\\u7b26\\u865f\",\n\"currency sign\": \"\\u8ca8\\u5e63\\u7b26\\u865f\",\n\"euro-currency sign\": \"\\u6b50\\u5143\\u7b26\\u865f\",\n\"colon sign\": \"\\u79d1\\u6717\\u7b26\\u865f\",\n\"cruzeiro sign\": \"\\u514b\\u9b6f\\u8cfd\\u7f85\\u7b26\\u865f\",\n\"french franc sign\": \"\\u6cd5\\u6717\\u7b26\\u865f\",\n\"lira sign\": \"\\u91cc\\u62c9\\u7b26\\u865f\",\n\"mill sign\": \"\\u6587\\u7b26\\u865f\",\n\"naira sign\": \"\\u5948\\u62c9\\u7b26\\u865f\",\n\"peseta sign\": \"\\u6bd4\\u585e\\u5854\\u7b26\\u865f\",\n\"rupee sign\": \"\\u76e7\\u6bd4\\u7b26\\u865f\",\n\"won sign\": \"\\u97d3\\u571c\\u7b26\\u865f\",\n\"new sheqel sign\": \"\\u65b0\\u8b1d\\u514b\\u723e\\u7b26\\u865f\",\n\"dong sign\": \"\\u8d8a\\u5357\\u76fe\\u7b26\\u865f\",\n\"kip sign\": \"\\u8001\\u64be\\u5e63\\u7b26\\u865f\",\n\"tugrik sign\": \"\\u8499\\u53e4\\u5e63\\u7b26\\u865f\",\n\"drachma sign\": \"\\u5fb7\\u514b\\u62c9\\u99ac\\u7b26\\u865f\",\n\"german penny symbol\": \"\\u5fb7\\u570b\\u5206\\u7b26\\u865f\",\n\"peso sign\": \"\\u62ab\\u7d22\\u7b26\\u865f\",\n\"guarani sign\": \"\\u5df4\\u62c9\\u572d\\u5e63\\u7b26\\u865f\",\n\"austral sign\": \"\\u963f\\u6839\\u5ef7\\u5e63\\u7b26\\u865f\",\n\"hryvnia sign\": \"\\u70cf\\u514b\\u862d\\u5e63\\u7b26\\u865f\",\n\"cedi sign\": \"\\u8fe6\\u7d0d\\u5e63\\u7b26\\u865f\",\n\"livre tournois sign\": \"\\u91cc\\u5f17\\u723e\\u7b26\\u865f\",\n\"spesmilo sign\": \"\\u570b\\u969b\\u5e63\\u7b26\\u865f\",\n\"tenge sign\": \"\\u54c8\\u85a9\\u514b\\u5e63\\u7b26\\u865f\",\n\"indian rupee sign\": \"\\u5370\\u5ea6\\u76e7\\u6bd4\\u7b26\\u865f\",\n\"turkish lira sign\": \"\\u571f\\u8033\\u5176\\u91cc\\u62c9\\u7b26\\u865f\",\n\"nordic mark sign\": \"\\u5317\\u6b50\\u99ac\\u514b\\u7b26\\u865f\",\n\"manat sign\": \"\\u4e9e\\u585e\\u62dc\\u7136\\u5e63\\u7b26\\u865f\",\n\"ruble sign\": \"\\u76e7\\u5e03\\u7b26\\u865f\",\n\"yen character\": \"\\u65e5\\u5713\\u7b26\\u865f\",\n\"yuan character\": \"\\u4eba\\u6c11\\u5e63\\u7b26\\u865f\",\n\"yuan character, in hong kong and taiwan\": \"\\u6e2f\\u5143\\u8207\\u53f0\\u5e63\\u7b26\\u865f\",\n\"yen\\/yuan character variant one\": \"\\u65e5\\u5713\\/\\u4eba\\u6c11\\u5e63\\u7b26\\u865f\\u8b8a\\u5316\\u578b\",\n\"Loading emoticons...\": \"\\u8f09\\u5165\\u8868\\u60c5\\u7b26\\u865f\\u2026\",\n\"Could not load emoticons\": \"\\u7121\\u6cd5\\u8f09\\u5165\\u8868\\u60c5\\u7b26\\u865f\",\n\"People\": \"\\u4eba\",\n\"Animals and Nature\": \"\\u52d5\\u7269\\u8207\\u81ea\\u7136\",\n\"Food and Drink\": \"\\u98f2\\u98df\",\n\"Activity\": \"\\u6d3b\\u52d5\",\n\"Travel and Places\": \"\\u65c5\\u884c\\u8207\\u5730\\u9ede\",\n\"Objects\": \"\\u7269\\u4ef6\",\n\"Flags\": \"\\u65d7\\u6a19\",\n\"Characters\": \"\\u5b57\\u5143\",\n\"Characters (no spaces)\": \"\\u5b57\\u5143\\uff08\\u7121\\u7a7a\\u683c\\uff09\",\n\"{0} characters\": \"{0}\\u5b57\\u5143\",\n\"Error: Form submit field collision.\": \"\\u932f\\u8aa4\\uff1a\\u8868\\u683c\\u905e\\u4ea4\\u6b04\\u4f4d\\u885d\\u7a81\\u3002\",\n\"Error: No form element found.\": \"\\u932f\\u8aa4\\uff1a\\u627e\\u4e0d\\u5230\\u8868\\u683c\\u5143\\u7d20\\u3002\",\n\"Update\": \"\\u66f4\\u65b0\",\n\"Color swatch\": \"\\u8272\\u5f69\\u6a23\\u672c\",\n\"Turquoise\": \"\\u571f\\u8033\\u5176\\u85cd\",\n\"Green\": \"\\u7da0\\u8272\",\n\"Blue\": \"\\u85cd\\u8272\",\n\"Purple\": \"\\u7d2b\\u8272\",\n\"Navy Blue\": \"\\u6df1\\u85cd\\u8272\",\n\"Dark Turquoise\": \"\\u6df1\\u571f\\u8033\\u5176\\u85cd\",\n\"Dark Green\": \"\\u6df1\\u7da0\\u8272\",\n\"Medium Blue\": \"\\u4e2d\\u85cd\\u8272\",\n\"Medium Purple\": \"\\u4e2d\\u7d2b\\u8272\",\n\"Midnight Blue\": \"\\u9ed1\\u85cd\\u8272\",\n\"Yellow\": \"\\u9ec3\\u8272\",\n\"Orange\": \"\\u6a59\\u8272\",\n\"Red\": \"\\u7d05\\u8272\",\n\"Light Gray\": \"\\u6dfa\\u7070\\u8272\",\n\"Gray\": \"\\u7070\\u8272\",\n\"Dark Yellow\": \"\\u6df1\\u9ec3\\u8272\",\n\"Dark Orange\": \"\\u6df1\\u6a59\\u8272\",\n\"Dark Red\": \"\\u6697\\u7d05\\u8272\",\n\"Medium Gray\": \"\\u4e2d\\u7070\\u8272\",\n\"Dark Gray\": \"\\u6df1\\u7070\\u8272\",\n\"Light Green\": \"\\u6de1\\u7da0\\u8272\",\n\"Light Yellow\": \"\\u6dfa\\u9ec3\\u8272\",\n\"Light Red\": \"\\u6dfa\\u7d05\\u8272\",\n\"Light Purple\": \"\\u6dfa\\u7d2b\\u8272\",\n\"Light Blue\": \"\\u6dfa\\u85cd\\u8272\",\n\"Dark Purple\": \"\\u6df1\\u7d2b\\u8272\",\n\"Dark Blue\": \"\\u6df1\\u85cd\\u8272\",\n\"Black\": \"\\u9ed1\\u8272\",\n\"White\": \"\\u767d\\u8272\",\n\"Switch to or from fullscreen mode\": \"\\u8f49\\u63db\\u81ea\\/\\u81f3\\u5168\\u87a2\\u5e55\\u6a21\\u5f0f\",\n\"Open help dialog\": \"\\u958b\\u555f\\u5354\\u52a9\\u5c0d\\u8a71\",\n\"history\": \"\\u6b77\\u53f2\",\n\"styles\": \"\\u6a23\\u5f0f\",\n\"formatting\": \"\\u683c\\u5f0f\",\n\"alignment\": \"\\u5c0d\\u9f4a\",\n\"indentation\": \"\\u7e2e\\u6392\",\n\"permanent pen\": \"\\u6c38\\u4e45\\u6027\\u7b46\",\n\"comments\": \"\\u8a3b\\u89e3\",\n\"Format Painter\": \"\\u8907\\u88fd\\u683c\\u5f0f\",\n\"Insert\\/edit iframe\": \"\\u63d2\\u5165\\/\\u7de8\\u8f2fiframe\",\n\"Capitalization\": \"\\u5927\\u5beb\",\n\"lowercase\": \"\\u5c0f\\u5beb\",\n\"UPPERCASE\": \"\\u5927\\u5beb\",\n\"Title Case\": \"\\u5b57\\u9996\\u5927\\u5beb\",\n\"Permanent Pen Properties\": \"\\u6c38\\u4e45\\u6a19\\u8a18\\u5c6c\\u6027\",\n\"Permanent pen properties...\": \"\\u6c38\\u4e45\\u6a19\\u8a18\\u5c6c\\u6027......\",\n\"Font\": \"\\u5b57\\u578b\",\n\"Size\": \"\\u5b57\\u5f62\\u5927\\u5c0f\",\n\"More...\": \"\\u66f4\\u591a\\u8cc7\\u8a0a......\",\n\"Spellcheck Language\": \"\\u62fc\\u5beb\\u8a9e\\u8a00\",\n\"Select...\": \"\\u9078\\u64c7......\",\n\"Preferences\": \"\\u9996\\u9078\\u9805\",\n\"Yes\": \"\\u662f\",\n\"No\": \"\\u5426\",\n\"Keyboard Navigation\": \"\\u9375\\u76e4\\u5c0e\\u822a\",\n\"Version\": \"\\u7248\\u672c\",\n\"Anchor\": \"\\u52a0\\u5165\\u9328\\u9ede\",\n\"Special character\": \"\\u7279\\u6b8a\\u5b57\\u5143\",\n\"Code sample\": \"\\u7a0b\\u5f0f\\u78bc\\u7bc4\\u4f8b\",\n\"Color\": \"\\u984f\\u8272\",\n\"Emoticons\": \"\\u8868\\u60c5\",\n\"Document properties\": \"\\u6587\\u4ef6\\u7684\\u5c6c\\u6027\",\n\"Image\": \"\\u5716\\u7247\",\n\"Insert link\": \"\\u63d2\\u5165\\u9023\\u7d50\",\n\"Target\": \"\\u958b\\u555f\\u65b9\\u5f0f\",\n\"Link\": \"\\u9023\\u7d50\",\n\"Poster\": \"\\u9810\\u89bd\\u5716\\u7247\",\n\"Media\": \"\\u5a92\\u9ad4\",\n\"Print\": \"\\u5217\\u5370\",\n\"Prev\": \"\\u4e0a\\u4e00\\u500b\",\n\"Find and replace\": \"\\u5c0b\\u627e\\u53ca\\u53d6\\u4ee3\",\n\"Whole words\": \"\\u6574\\u500b\\u55ae\\u5b57\",\n\"Spellcheck\": \"\\u62fc\\u5b57\\u6aa2\\u67e5\",\n\"Caption\": \"\\u8868\\u683c\\u6a19\\u984c\",\n\"Insert template\": \"\\u63d2\\u5165\\u6a23\\u7248\"\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/license.txt",
    "content": "      GNU LESSER GENERAL PUBLIC LICENSE\n           Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL.  It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n          Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n  This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it.  You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n  When we speak of free software, we are referring to freedom of use,\nnot price.  Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n  To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights.  These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n  For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou.  You must make sure that they, too, receive or can get the source\ncode.  If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit.  And you must show them these terms so they know their rights.\n\n  We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n  To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library.  Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\n  Finally, software patents pose a constant threat to the existence of\nany free program.  We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder.  Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n  Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License.  This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License.  We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n  When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library.  The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom.  The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n  We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License.  It also provides other free software developers Less\nof an advantage over competing non-free programs.  These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries.  However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n  For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard.  To achieve this, non-free programs must be\nallowed to use the library.  A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries.  In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n  In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software.  For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n  Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.  Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\".  The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\n      GNU LESSER GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n  A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n  The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms.  A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language.  (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n  \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it.  For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n  Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it).  Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n  \n  1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n  You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\n  2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) The modified work must itself be a software library.\n\n    b) You must cause the files modified to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    c) You must cause the whole of the work to be licensed at no\n    charge to all third parties under the terms of this License.\n\n    d) If a facility in the modified Library refers to a function or a\n    table of data to be supplied by an application program that uses\n    the facility, other than as an argument passed when the facility\n    is invoked, then you must make a good faith effort to ensure that,\n    in the event an application does not supply such function or\n    table, the facility still operates, and performs whatever part of\n    its purpose remains meaningful.\n\n    (For example, a function in a library to compute square roots has\n    a purpose that is entirely well-defined independent of the\n    application.  Therefore, Subsection 2d requires that any\n    application-supplied function or table used by this function must\n    be optional: if the application does not supply it, the square\n    root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library.  To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License.  (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.)  Do not make any other change in\nthese notices.\n\n  Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n  This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n  4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n  If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\".  Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n  However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\".  The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n  When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library.  The\nthreshold for this to be true is not precisely defined by law.\n\n  If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork.  (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n  Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\n  6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n  You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License.  You must supply a copy of this License.  If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License.  Also, you must do one\nof these things:\n\n    a) Accompany the work with the complete corresponding\n    machine-readable source code for the Library including whatever\n    changes were used in the work (which must be distributed under\n    Sections 1 and 2 above); and, if the work is an executable linked\n    with the Library, with the complete machine-readable \"work that\n    uses the Library\", as object code and/or source code, so that the\n    user can modify the Library and then relink to produce a modified\n    executable containing the modified Library.  (It is understood\n    that the user who changes the contents of definitions files in the\n    Library will not necessarily be able to recompile the application\n    to use the modified definitions.)\n\n    b) Use a suitable shared library mechanism for linking with the\n    Library.  A suitable mechanism is one that (1) uses at run time a\n    copy of the library already present on the user's computer system,\n    rather than copying library functions into the executable, and (2)\n    will operate properly with a modified version of the library, if\n    the user installs one, as long as the modified version is\n    interface-compatible with the version that the work was made with.\n\n    c) Accompany the work with a written offer, valid for at\n    least three years, to give the same user the materials\n    specified in Subsection 6a, above, for a charge no more\n    than the cost of performing this distribution.\n\n    d) If distribution of the work is made by offering access to copy\n    from a designated place, offer equivalent access to copy the above\n    specified materials from the same place.\n\n    e) Verify that the user has already received a copy of these\n    materials or that you have already sent this user a copy.\n\n  For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it.  However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n  It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system.  Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\n  7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n    a) Accompany the combined library with a copy of the same work\n    based on the Library, uncombined with any other library\n    facilities.  This must be distributed under the terms of the\n    Sections above.\n\n    b) Give prominent notice with the combined library of the fact\n    that part of it is a work based on the Library, and explaining\n    where to find the accompanying uncombined form of the same work.\n\n  8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License.  Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License.  However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n  9. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n  10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\n  11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded.  In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n  13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation.  If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\n  14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission.  For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this.  Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n          NO WARRANTY\n\n  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n         END OF TERMS AND CONDITIONS\n\n           How to Apply These Terms to Your New Libraries\n\n  If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change.  You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n  To apply these terms, attach the following notices to the library.  It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the library's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This library is free software; you can redistribute it and/or\n    modify it under the terms of the GNU Lesser General Public\n    License as published by the Free Software Foundation; either\n    version 2.1 of the License, or (at your option) any later version.\n\n    This library is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n    Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public\n    License along with this library; if not, write to the Free Software\n    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the\n  library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n  <signature of Ty Coon>, 1 April 1990\n  Ty Coon, President of Vice\n\nThat's all there is to it!\n\n\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/tinymce/plugins/emoticons/js/emojis.js",
    "content": "// NOTE: Source: npm package: emojilib, file:emojis.json\nwindow.tinymce.Resource.add(\"tinymce.plugins.emoticons\", {\n  grinning: {\n    keywords: [ \"face\", \"smile\", \"happy\", \"joy\", \":D\", \"grin\" ],\n    \"char\": \"\\ud83d\\ude00\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  grimacing: {\n    keywords: [ \"face\", \"grimace\", \"teeth\" ],\n    \"char\": \"\\ud83d\\ude2c\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  grin: {\n    keywords: [ \"face\", \"happy\", \"smile\", \"joy\", \"kawaii\" ],\n    \"char\": \"\\ud83d\\ude01\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  joy: {\n    keywords: [ \"face\", \"cry\", \"tears\", \"weep\", \"happy\", \"happytears\", \"haha\" ],\n    \"char\": \"\\ud83d\\ude02\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  rofl: {\n    keywords: [ \"face\", \"rolling\", \"floor\", \"laughing\", \"lol\", \"haha\" ],\n    \"char\": \"\\ud83e\\udd23\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  smiley: {\n    keywords: [ \"face\", \"happy\", \"joy\", \"haha\", \":D\", \":)\", \"smile\", \"funny\" ],\n    \"char\": \"\\ud83d\\ude03\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  smile: {\n    keywords: [ \"face\", \"happy\", \"joy\", \"funny\", \"haha\", \"laugh\", \"like\", \":D\", \":)\" ],\n    \"char\": \"\\ud83d\\ude04\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  sweat_smile: {\n    keywords: [ \"face\", \"hot\", \"happy\", \"laugh\", \"sweat\", \"smile\", \"relief\" ],\n    \"char\": \"\\ud83d\\ude05\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  laughing: {\n    keywords: [ \"happy\", \"joy\", \"lol\", \"satisfied\", \"haha\", \"face\", \"glad\", \"XD\", \"laugh\" ],\n    \"char\": \"\\ud83d\\ude06\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  innocent: {\n    keywords: [ \"face\", \"angel\", \"heaven\", \"halo\" ],\n    \"char\": \"\\ud83d\\ude07\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  wink: {\n    keywords: [ \"face\", \"happy\", \"mischievous\", \"secret\", \";)\", \"smile\", \"eye\" ],\n    \"char\": \"\\ud83d\\ude09\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  blush: {\n    keywords: [ \"face\", \"smile\", \"happy\", \"flushed\", \"crush\", \"embarrassed\", \"shy\", \"joy\" ],\n    \"char\": \"\\ud83d\\ude0a\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  slightly_smiling_face: {\n    keywords: [ \"face\", \"smile\" ],\n    \"char\": \"\\ud83d\\ude42\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  upside_down_face: {\n    keywords: [ \"face\", \"flipped\", \"silly\", \"smile\" ],\n    \"char\": \"\\ud83d\\ude43\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  relaxed: {\n    keywords: [ \"face\", \"blush\", \"massage\", \"happiness\" ],\n    \"char\": \"\\u263a\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  yum: {\n    keywords: [ \"happy\", \"joy\", \"tongue\", \"smile\", \"face\", \"silly\", \"yummy\", \"nom\", \"delicious\", \"savouring\" ],\n    \"char\": \"\\ud83d\\ude0b\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  relieved: {\n    keywords: [ \"face\", \"relaxed\", \"phew\", \"massage\", \"happiness\" ],\n    \"char\": \"\\ud83d\\ude0c\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  heart_eyes: {\n    keywords: [ \"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"crush\", \"heart\" ],\n    \"char\": \"\\ud83d\\ude0d\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  kissing_heart: {\n    keywords: [ \"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"kiss\" ],\n    \"char\": \"\\ud83d\\ude18\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  kissing: {\n    keywords: [ \"love\", \"like\", \"face\", \"3\", \"valentines\", \"infatuation\", \"kiss\" ],\n    \"char\": \"\\ud83d\\ude17\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  kissing_smiling_eyes: {\n    keywords: [ \"face\", \"affection\", \"valentines\", \"infatuation\", \"kiss\" ],\n    \"char\": \"\\ud83d\\ude19\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  kissing_closed_eyes: {\n    keywords: [ \"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"kiss\" ],\n    \"char\": \"\\ud83d\\ude1a\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  stuck_out_tongue_winking_eye: {\n    keywords: [ \"face\", \"prank\", \"childish\", \"playful\", \"mischievous\", \"smile\", \"wink\", \"tongue\" ],\n    \"char\": \"\\ud83d\\ude1c\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  zany: {\n    keywords: [ \"face\", \"goofy\", \"crazy\" ],\n    \"char\": \"\\ud83e\\udd2a\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  raised_eyebrow: {\n    keywords: [ \"face\", \"distrust\", \"scepticism\", \"disapproval\", \"disbelief\", \"surprise\" ],\n    \"char\": \"\\ud83e\\udd28\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  monocle: {\n    keywords: [ \"face\", \"stuffy\", \"wealthy\" ],\n    \"char\": \"\\ud83e\\uddd0\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  stuck_out_tongue_closed_eyes: {\n    keywords: [ \"face\", \"prank\", \"playful\", \"mischievous\", \"smile\", \"tongue\" ],\n    \"char\": \"\\ud83d\\ude1d\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  stuck_out_tongue: {\n    keywords: [ \"face\", \"prank\", \"childish\", \"playful\", \"mischievous\", \"smile\", \"tongue\" ],\n    \"char\": \"\\ud83d\\ude1b\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  money_mouth_face: {\n    keywords: [ \"face\", \"rich\", \"dollar\", \"money\" ],\n    \"char\": \"\\ud83e\\udd11\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  nerd_face: {\n    keywords: [ \"face\", \"nerdy\", \"geek\", \"dork\" ],\n    \"char\": \"\\ud83e\\udd13\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  sunglasses: {\n    keywords: [ \"face\", \"cool\", \"smile\", \"summer\", \"beach\", \"sunglass\" ],\n    \"char\": \"\\ud83d\\ude0e\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  star_struck: {\n    keywords: [ \"face\", \"smile\", \"starry\", \"eyes\", \"grinning\" ],\n    \"char\": \"\\ud83e\\udd29\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  clown_face: {\n    keywords: [ \"face\" ],\n    \"char\": \"\\ud83e\\udd21\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  cowboy_hat_face: {\n    keywords: [ \"face\", \"cowgirl\", \"hat\" ],\n    \"char\": \"\\ud83e\\udd20\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  hugs: {\n    keywords: [ \"face\", \"smile\", \"hug\" ],\n    \"char\": \"\\ud83e\\udd17\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  smirk: {\n    keywords: [ \"face\", \"smile\", \"mean\", \"prank\", \"smug\", \"sarcasm\" ],\n    \"char\": \"\\ud83d\\ude0f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  no_mouth: {\n    keywords: [ \"face\", \"hellokitty\" ],\n    \"char\": \"\\ud83d\\ude36\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  neutral_face: {\n    keywords: [ \"indifference\", \"meh\", \":|\", \"neutral\" ],\n    \"char\": \"\\ud83d\\ude10\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  expressionless: {\n    keywords: [ \"face\", \"indifferent\", \"-_-\", \"meh\", \"deadpan\" ],\n    \"char\": \"\\ud83d\\ude11\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  unamused: {\n    keywords: [ \"indifference\", \"bored\", \"straight face\", \"serious\", \"sarcasm\", \"unimpressed\", \"skeptical\", \"dubious\", \"side_eye\" ],\n    \"char\": \"\\ud83d\\ude12\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  roll_eyes: {\n    keywords: [ \"face\", \"eyeroll\", \"frustrated\" ],\n    \"char\": \"\\ud83d\\ude44\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  thinking: {\n    keywords: [ \"face\", \"hmmm\", \"think\", \"consider\" ],\n    \"char\": \"\\ud83e\\udd14\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  lying_face: {\n    keywords: [ \"face\", \"lie\", \"pinocchio\" ],\n    \"char\": \"\\ud83e\\udd25\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  hand_over_mouth: {\n    keywords: [ \"face\", \"whoops\", \"shock\", \"surprise\" ],\n    \"char\": \"\\ud83e\\udd2d\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  shushing: {\n    keywords: [ \"face\", \"quiet\", \"shhh\" ],\n    \"char\": \"\\ud83e\\udd2b\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  symbols_over_mouth: {\n    keywords: [ \"face\", \"swearing\", \"cursing\", \"cussing\", \"profanity\", \"expletive\" ],\n    \"char\": \"\\ud83e\\udd2c\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  exploding_head: {\n    keywords: [ \"face\", \"shocked\", \"mind\", \"blown\" ],\n    \"char\": \"\\ud83e\\udd2f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  flushed: {\n    keywords: [ \"face\", \"blush\", \"shy\", \"flattered\" ],\n    \"char\": \"\\ud83d\\ude33\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  disappointed: {\n    keywords: [ \"face\", \"sad\", \"upset\", \"depressed\", \":(\" ],\n    \"char\": \"\\ud83d\\ude1e\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  worried: {\n    keywords: [ \"face\", \"concern\", \"nervous\", \":(\" ],\n    \"char\": \"\\ud83d\\ude1f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  angry: {\n    keywords: [ \"mad\", \"face\", \"annoyed\", \"frustrated\" ],\n    \"char\": \"\\ud83d\\ude20\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  rage: {\n    keywords: [ \"angry\", \"mad\", \"hate\", \"despise\" ],\n    \"char\": \"\\ud83d\\ude21\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  pensive: {\n    keywords: [ \"face\", \"sad\", \"depressed\", \"upset\" ],\n    \"char\": \"\\ud83d\\ude14\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  confused: {\n    keywords: [ \"face\", \"indifference\", \"huh\", \"weird\", \"hmmm\", \":/\" ],\n    \"char\": \"\\ud83d\\ude15\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  slightly_frowning_face: {\n    keywords: [ \"face\", \"frowning\", \"disappointed\", \"sad\", \"upset\" ],\n    \"char\": \"\\ud83d\\ude41\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  frowning_face: {\n    keywords: [ \"face\", \"sad\", \"upset\", \"frown\" ],\n    \"char\": \"\\u2639\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  persevere: {\n    keywords: [ \"face\", \"sick\", \"no\", \"upset\", \"oops\" ],\n    \"char\": \"\\ud83d\\ude23\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  confounded: {\n    keywords: [ \"face\", \"confused\", \"sick\", \"unwell\", \"oops\", \":S\" ],\n    \"char\": \"\\ud83d\\ude16\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  tired_face: {\n    keywords: [ \"sick\", \"whine\", \"upset\", \"frustrated\" ],\n    \"char\": \"\\ud83d\\ude2b\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  weary: {\n    keywords: [ \"face\", \"tired\", \"sleepy\", \"sad\", \"frustrated\", \"upset\" ],\n    \"char\": \"\\ud83d\\ude29\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  triumph: {\n    keywords: [ \"face\", \"gas\", \"phew\", \"proud\", \"pride\" ],\n    \"char\": \"\\ud83d\\ude24\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  open_mouth: {\n    keywords: [ \"face\", \"surprise\", \"impressed\", \"wow\", \"whoa\", \":O\" ],\n    \"char\": \"\\ud83d\\ude2e\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  scream: {\n    keywords: [ \"face\", \"munch\", \"scared\", \"omg\" ],\n    \"char\": \"\\ud83d\\ude31\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  fearful: {\n    keywords: [ \"face\", \"scared\", \"terrified\", \"nervous\", \"oops\", \"huh\" ],\n    \"char\": \"\\ud83d\\ude28\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  cold_sweat: {\n    keywords: [ \"face\", \"nervous\", \"sweat\" ],\n    \"char\": \"\\ud83d\\ude30\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  hushed: {\n    keywords: [ \"face\", \"woo\", \"shh\" ],\n    \"char\": \"\\ud83d\\ude2f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  frowning: {\n    keywords: [ \"face\", \"aw\", \"what\" ],\n    \"char\": \"\\ud83d\\ude26\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  anguished: {\n    keywords: [ \"face\", \"stunned\", \"nervous\" ],\n    \"char\": \"\\ud83d\\ude27\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  cry: {\n    keywords: [ \"face\", \"tears\", \"sad\", \"depressed\", \"upset\", \":'(\" ],\n    \"char\": \"\\ud83d\\ude22\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  disappointed_relieved: {\n    keywords: [ \"face\", \"phew\", \"sweat\", \"nervous\" ],\n    \"char\": \"\\ud83d\\ude25\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  drooling_face: {\n    keywords: [ \"face\" ],\n    \"char\": \"\\ud83e\\udd24\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  sleepy: {\n    keywords: [ \"face\", \"tired\", \"rest\", \"nap\" ],\n    \"char\": \"\\ud83d\\ude2a\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  sweat: {\n    keywords: [ \"face\", \"hot\", \"sad\", \"tired\", \"exercise\" ],\n    \"char\": \"\\ud83d\\ude13\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  sob: {\n    keywords: [ \"face\", \"cry\", \"tears\", \"sad\", \"upset\", \"depressed\" ],\n    \"char\": \"\\ud83d\\ude2d\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  dizzy_face: {\n    keywords: [ \"spent\", \"unconscious\", \"xox\", \"dizzy\" ],\n    \"char\": \"\\ud83d\\ude35\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  astonished: {\n    keywords: [ \"face\", \"xox\", \"surprised\", \"poisoned\" ],\n    \"char\": \"\\ud83d\\ude32\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  zipper_mouth_face: {\n    keywords: [ \"face\", \"sealed\", \"zipper\", \"secret\" ],\n    \"char\": \"\\ud83e\\udd10\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  nauseated_face: {\n    keywords: [ \"face\", \"vomit\", \"gross\", \"green\", \"sick\", \"throw up\", \"ill\" ],\n    \"char\": \"\\ud83e\\udd22\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  sneezing_face: {\n    keywords: [ \"face\", \"gesundheit\", \"sneeze\", \"sick\", \"allergy\" ],\n    \"char\": \"\\ud83e\\udd27\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  vomiting: {\n    keywords: [ \"face\", \"sick\" ],\n    \"char\": \"\\ud83e\\udd2e\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  mask: {\n    keywords: [ \"face\", \"sick\", \"ill\", \"disease\" ],\n    \"char\": \"\\ud83d\\ude37\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  face_with_thermometer: {\n    keywords: [ \"sick\", \"temperature\", \"thermometer\", \"cold\", \"fever\" ],\n    \"char\": \"\\ud83e\\udd12\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  face_with_head_bandage: {\n    keywords: [ \"injured\", \"clumsy\", \"bandage\", \"hurt\" ],\n    \"char\": \"\\ud83e\\udd15\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  sleeping: {\n    keywords: [ \"face\", \"tired\", \"sleepy\", \"night\", \"zzz\" ],\n    \"char\": \"\\ud83d\\ude34\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  zzz: {\n    keywords: [ \"sleepy\", \"tired\", \"dream\" ],\n    \"char\": \"\\ud83d\\udca4\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  poop: {\n    keywords: [ \"hankey\", \"shitface\", \"fail\", \"turd\", \"shit\" ],\n    \"char\": \"\\ud83d\\udca9\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  smiling_imp: {\n    keywords: [ \"devil\", \"horns\" ],\n    \"char\": \"\\ud83d\\ude08\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  imp: {\n    keywords: [ \"devil\", \"angry\", \"horns\" ],\n    \"char\": \"\\ud83d\\udc7f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  japanese_ogre: {\n    keywords: [ \"monster\", \"red\", \"mask\", \"halloween\", \"scary\", \"creepy\", \"devil\", \"demon\", \"japanese\", \"ogre\" ],\n    \"char\": \"\\ud83d\\udc79\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  japanese_goblin: {\n    keywords: [ \"red\", \"evil\", \"mask\", \"monster\", \"scary\", \"creepy\", \"japanese\", \"goblin\" ],\n    \"char\": \"\\ud83d\\udc7a\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  skull: {\n    keywords: [ \"dead\", \"skeleton\", \"creepy\", \"death\" ],\n    \"char\": \"\\ud83d\\udc80\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  ghost: {\n    keywords: [ \"halloween\", \"spooky\", \"scary\" ],\n    \"char\": \"\\ud83d\\udc7b\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  alien: {\n    keywords: [ \"UFO\", \"paul\", \"weird\", \"outer_space\" ],\n    \"char\": \"\\ud83d\\udc7d\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  robot: {\n    keywords: [ \"computer\", \"machine\", \"bot\" ],\n    \"char\": \"\\ud83e\\udd16\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  smiley_cat: {\n    keywords: [ \"animal\", \"cats\", \"happy\", \"smile\" ],\n    \"char\": \"\\ud83d\\ude3a\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  smile_cat: {\n    keywords: [ \"animal\", \"cats\", \"smile\" ],\n    \"char\": \"\\ud83d\\ude38\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  joy_cat: {\n    keywords: [ \"animal\", \"cats\", \"haha\", \"happy\", \"tears\" ],\n    \"char\": \"\\ud83d\\ude39\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  heart_eyes_cat: {\n    keywords: [ \"animal\", \"love\", \"like\", \"affection\", \"cats\", \"valentines\", \"heart\" ],\n    \"char\": \"\\ud83d\\ude3b\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  smirk_cat: {\n    keywords: [ \"animal\", \"cats\", \"smirk\" ],\n    \"char\": \"\\ud83d\\ude3c\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  kissing_cat: {\n    keywords: [ \"animal\", \"cats\", \"kiss\" ],\n    \"char\": \"\\ud83d\\ude3d\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  scream_cat: {\n    keywords: [ \"animal\", \"cats\", \"munch\", \"scared\", \"scream\" ],\n    \"char\": \"\\ud83d\\ude40\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  crying_cat_face: {\n    keywords: [ \"animal\", \"tears\", \"weep\", \"sad\", \"cats\", \"upset\", \"cry\" ],\n    \"char\": \"\\ud83d\\ude3f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  pouting_cat: {\n    keywords: [ \"animal\", \"cats\" ],\n    \"char\": \"\\ud83d\\ude3e\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  palms_up: {\n    keywords: [ \"hands\", \"gesture\", \"cupped\", \"prayer\" ],\n    \"char\": \"\\ud83e\\udd32\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  raised_hands: {\n    keywords: [ \"gesture\", \"hooray\", \"yea\", \"celebration\", \"hands\" ],\n    \"char\": \"\\ud83d\\ude4c\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  clap: {\n    keywords: [ \"hands\", \"praise\", \"applause\", \"congrats\", \"yay\" ],\n    \"char\": \"\\ud83d\\udc4f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  wave: {\n    keywords: [ \"hands\", \"gesture\", \"goodbye\", \"solong\", \"farewell\", \"hello\", \"hi\", \"palm\" ],\n    \"char\": \"\\ud83d\\udc4b\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  call_me_hand: {\n    keywords: [ \"hands\", \"gesture\" ],\n    \"char\": \"\\ud83e\\udd19\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  \"+1\": {\n    keywords: [ \"thumbsup\", \"yes\", \"awesome\", \"good\", \"agree\", \"accept\", \"cool\", \"hand\", \"like\" ],\n    \"char\": \"\\ud83d\\udc4d\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  \"-1\": {\n    keywords: [ \"thumbsdown\", \"no\", \"dislike\", \"hand\" ],\n    \"char\": \"\\ud83d\\udc4e\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  facepunch: {\n    keywords: [ \"angry\", \"violence\", \"fist\", \"hit\", \"attack\", \"hand\" ],\n    \"char\": \"\\ud83d\\udc4a\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  fist: {\n    keywords: [ \"fingers\", \"hand\", \"grasp\" ],\n    \"char\": \"\\u270a\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  fist_left: {\n    keywords: [ \"hand\", \"fistbump\" ],\n    \"char\": \"\\ud83e\\udd1b\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  fist_right: {\n    keywords: [ \"hand\", \"fistbump\" ],\n    \"char\": \"\\ud83e\\udd1c\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  v: {\n    keywords: [ \"fingers\", \"ohyeah\", \"hand\", \"peace\", \"victory\", \"two\" ],\n    \"char\": \"\\u270c\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  ok_hand: {\n    keywords: [ \"fingers\", \"limbs\", \"perfect\", \"ok\", \"okay\" ],\n    \"char\": \"\\ud83d\\udc4c\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  raised_hand: {\n    keywords: [ \"fingers\", \"stop\", \"highfive\", \"palm\", \"ban\" ],\n    \"char\": \"\\u270b\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  raised_back_of_hand: {\n    keywords: [ \"fingers\", \"raised\", \"backhand\" ],\n    \"char\": \"\\ud83e\\udd1a\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  open_hands: {\n    keywords: [ \"fingers\", \"butterfly\", \"hands\", \"open\" ],\n    \"char\": \"\\ud83d\\udc50\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  muscle: {\n    keywords: [ \"arm\", \"flex\", \"hand\", \"summer\", \"strong\", \"biceps\" ],\n    \"char\": \"\\ud83d\\udcaa\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  pray: {\n    keywords: [ \"please\", \"hope\", \"wish\", \"namaste\", \"highfive\" ],\n    \"char\": \"\\ud83d\\ude4f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  handshake: {\n    keywords: [ \"agreement\", \"shake\" ],\n    \"char\": \"\\ud83e\\udd1d\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  point_up: {\n    keywords: [ \"hand\", \"fingers\", \"direction\", \"up\" ],\n    \"char\": \"\\u261d\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  point_up_2: {\n    keywords: [ \"fingers\", \"hand\", \"direction\", \"up\" ],\n    \"char\": \"\\ud83d\\udc46\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  point_down: {\n    keywords: [ \"fingers\", \"hand\", \"direction\", \"down\" ],\n    \"char\": \"\\ud83d\\udc47\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  point_left: {\n    keywords: [ \"direction\", \"fingers\", \"hand\", \"left\" ],\n    \"char\": \"\\ud83d\\udc48\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  point_right: {\n    keywords: [ \"fingers\", \"hand\", \"direction\", \"right\" ],\n    \"char\": \"\\ud83d\\udc49\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  fu: {\n    keywords: [ \"hand\", \"fingers\", \"rude\", \"middle\", \"flipping\" ],\n    \"char\": \"\\ud83d\\udd95\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  raised_hand_with_fingers_splayed: {\n    keywords: [ \"hand\", \"fingers\", \"palm\" ],\n    \"char\": \"\\ud83d\\udd90\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  love_you: {\n    keywords: [ \"hand\", \"fingers\", \"gesture\" ],\n    \"char\": \"\\ud83e\\udd1f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  metal: {\n    keywords: [ \"hand\", \"fingers\", \"evil_eye\", \"sign_of_horns\", \"rock_on\" ],\n    \"char\": \"\\ud83e\\udd18\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  crossed_fingers: {\n    keywords: [ \"good\", \"lucky\" ],\n    \"char\": \"\\ud83e\\udd1e\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  vulcan_salute: {\n    keywords: [ \"hand\", \"fingers\", \"spock\", \"star trek\" ],\n    \"char\": \"\\ud83d\\udd96\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  writing_hand: {\n    keywords: [ \"lower_left_ballpoint_pen\", \"stationery\", \"write\", \"compose\" ],\n    \"char\": \"\\u270d\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  selfie: {\n    keywords: [ \"camera\", \"phone\" ],\n    \"char\": \"\\ud83e\\udd33\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  nail_care: {\n    keywords: [ \"beauty\", \"manicure\", \"finger\", \"fashion\", \"nail\" ],\n    \"char\": \"\\ud83d\\udc85\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  lips: {\n    keywords: [ \"mouth\", \"kiss\" ],\n    \"char\": \"\\ud83d\\udc44\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  tongue: {\n    keywords: [ \"mouth\", \"playful\" ],\n    \"char\": \"\\ud83d\\udc45\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  ear: {\n    keywords: [ \"face\", \"hear\", \"sound\", \"listen\" ],\n    \"char\": \"\\ud83d\\udc42\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  nose: {\n    keywords: [ \"smell\", \"sniff\" ],\n    \"char\": \"\\ud83d\\udc43\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  eye: {\n    keywords: [ \"face\", \"look\", \"see\", \"watch\", \"stare\" ],\n    \"char\": \"\\ud83d\\udc41\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  eyes: {\n    keywords: [ \"look\", \"watch\", \"stalk\", \"peek\", \"see\" ],\n    \"char\": \"\\ud83d\\udc40\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  brain: {\n    keywords: [ \"smart\", \"intelligent\" ],\n    \"char\": \"\\ud83e\\udde0\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  bust_in_silhouette: {\n    keywords: [ \"user\", \"person\", \"human\" ],\n    \"char\": \"\\ud83d\\udc64\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  busts_in_silhouette: {\n    keywords: [ \"user\", \"person\", \"human\", \"group\", \"team\" ],\n    \"char\": \"\\ud83d\\udc65\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  speaking_head: {\n    keywords: [ \"user\", \"person\", \"human\", \"sing\", \"say\", \"talk\" ],\n    \"char\": \"\\ud83d\\udde3\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  baby: {\n    keywords: [ \"child\", \"boy\", \"girl\", \"toddler\" ],\n    \"char\": \"\\ud83d\\udc76\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  child: {\n    keywords: [ \"gender-neutral\", \"young\" ],\n    \"char\": \"\\ud83e\\uddd2\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  boy: {\n    keywords: [ \"man\", \"male\", \"guy\", \"teenager\" ],\n    \"char\": \"\\ud83d\\udc66\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  girl: {\n    keywords: [ \"female\", \"woman\", \"teenager\" ],\n    \"char\": \"\\ud83d\\udc67\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  adult: {\n    keywords: [ \"gender-neutral\", \"person\" ],\n    \"char\": \"\\ud83e\\uddd1\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man: {\n    keywords: [ \"mustache\", \"father\", \"dad\", \"guy\", \"classy\", \"sir\", \"moustache\" ],\n    \"char\": \"\\ud83d\\udc68\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman: {\n    keywords: [ \"female\", \"girls\", \"lady\" ],\n    \"char\": \"\\ud83d\\udc69\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  blonde_woman: {\n    keywords: [ \"woman\", \"female\", \"girl\", \"blonde\", \"person\" ],\n    \"char\": \"\\ud83d\\udc71\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  blonde_man: {\n    keywords: [ \"man\", \"male\", \"boy\", \"blonde\", \"guy\", \"person\" ],\n    \"char\": \"\\ud83d\\udc71\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  bearded_person: {\n    keywords: [ \"person\", \"bewhiskered\" ],\n    \"char\": \"\\ud83e\\uddd4\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  older_adult: {\n    keywords: [ \"human\", \"elder\", \"senior\", \"gender-neutral\" ],\n    \"char\": \"\\ud83e\\uddd3\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  older_man: {\n    keywords: [ \"human\", \"male\", \"men\", \"old\", \"elder\", \"senior\" ],\n    \"char\": \"\\ud83d\\udc74\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  older_woman: {\n    keywords: [ \"human\", \"female\", \"women\", \"lady\", \"old\", \"elder\", \"senior\" ],\n    \"char\": \"\\ud83d\\udc75\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_with_gua_pi_mao: {\n    keywords: [ \"male\", \"boy\", \"chinese\" ],\n    \"char\": \"\\ud83d\\udc72\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_with_headscarf: {\n    keywords: [ \"female\", \"hijab\", \"mantilla\", \"tichel\" ],\n    \"char\": \"\\ud83e\\uddd5\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_with_turban: {\n    keywords: [ \"female\", \"indian\", \"hinduism\", \"arabs\", \"woman\" ],\n    \"char\": \"\\ud83d\\udc73\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_with_turban: {\n    keywords: [ \"male\", \"indian\", \"hinduism\", \"arabs\" ],\n    \"char\": \"\\ud83d\\udc73\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  policewoman: {\n    keywords: [ \"woman\", \"police\", \"law\", \"legal\", \"enforcement\", \"arrest\", \"911\", \"female\" ],\n    \"char\": \"\\ud83d\\udc6e\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  policeman: {\n    keywords: [ \"man\", \"police\", \"law\", \"legal\", \"enforcement\", \"arrest\", \"911\" ],\n    \"char\": \"\\ud83d\\udc6e\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  construction_worker_woman: {\n    keywords: [ \"female\", \"human\", \"wip\", \"build\", \"construction\", \"worker\", \"labor\", \"woman\" ],\n    \"char\": \"\\ud83d\\udc77\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  construction_worker_man: {\n    keywords: [ \"male\", \"human\", \"wip\", \"guy\", \"build\", \"construction\", \"worker\", \"labor\" ],\n    \"char\": \"\\ud83d\\udc77\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  guardswoman: {\n    keywords: [ \"uk\", \"gb\", \"british\", \"female\", \"royal\", \"woman\" ],\n    \"char\": \"\\ud83d\\udc82\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  guardsman: {\n    keywords: [ \"uk\", \"gb\", \"british\", \"male\", \"guy\", \"royal\" ],\n    \"char\": \"\\ud83d\\udc82\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  female_detective: {\n    keywords: [ \"human\", \"spy\", \"detective\", \"female\", \"woman\" ],\n    \"char\": \"\\ud83d\\udd75\\ufe0f\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  male_detective: {\n    keywords: [ \"human\", \"spy\", \"detective\" ],\n    \"char\": \"\\ud83d\\udd75\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_health_worker: {\n    keywords: [ \"doctor\", \"nurse\", \"therapist\", \"healthcare\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\u2695\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_health_worker: {\n    keywords: [ \"doctor\", \"nurse\", \"therapist\", \"healthcare\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\u2695\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_farmer: {\n    keywords: [ \"rancher\", \"gardener\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83c\\udf3e\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_farmer: {\n    keywords: [ \"rancher\", \"gardener\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83c\\udf3e\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_cook: {\n    keywords: [ \"chef\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83c\\udf73\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_cook: {\n    keywords: [ \"chef\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83c\\udf73\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_student: {\n    keywords: [ \"graduate\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83c\\udf93\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_student: {\n    keywords: [ \"graduate\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83c\\udf93\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_singer: {\n    keywords: [ \"rockstar\", \"entertainer\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83c\\udfa4\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_singer: {\n    keywords: [ \"rockstar\", \"entertainer\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83c\\udfa4\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_teacher: {\n    keywords: [ \"instructor\", \"professor\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83c\\udfeb\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_teacher: {\n    keywords: [ \"instructor\", \"professor\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83c\\udfeb\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_factory_worker: {\n    keywords: [ \"assembly\", \"industrial\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83c\\udfed\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_factory_worker: {\n    keywords: [ \"assembly\", \"industrial\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83c\\udfed\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_technologist: {\n    keywords: [ \"coder\", \"developer\", \"engineer\", \"programmer\", \"software\", \"woman\", \"human\", \"laptop\", \"computer\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udcbb\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_technologist: {\n    keywords: [ \"coder\", \"developer\", \"engineer\", \"programmer\", \"software\", \"man\", \"human\", \"laptop\", \"computer\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udcbb\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_office_worker: {\n    keywords: [ \"business\", \"manager\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udcbc\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_office_worker: {\n    keywords: [ \"business\", \"manager\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udcbc\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_mechanic: {\n    keywords: [ \"plumber\", \"woman\", \"human\", \"wrench\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udd27\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_mechanic: {\n    keywords: [ \"plumber\", \"man\", \"human\", \"wrench\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udd27\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_scientist: {\n    keywords: [ \"biologist\", \"chemist\", \"engineer\", \"physicist\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udd2c\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_scientist: {\n    keywords: [ \"biologist\", \"chemist\", \"engineer\", \"physicist\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udd2c\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_artist: {\n    keywords: [ \"painter\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83c\\udfa8\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_artist: {\n    keywords: [ \"painter\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83c\\udfa8\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_firefighter: {\n    keywords: [ \"fireman\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\ude92\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_firefighter: {\n    keywords: [ \"fireman\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\ude92\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_pilot: {\n    keywords: [ \"aviator\", \"plane\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\u2708\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_pilot: {\n    keywords: [ \"aviator\", \"plane\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\u2708\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_astronaut: {\n    keywords: [ \"space\", \"rocket\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\ude80\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_astronaut: {\n    keywords: [ \"space\", \"rocket\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\ude80\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_judge: {\n    keywords: [ \"justice\", \"court\", \"woman\", \"human\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\u2696\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_judge: {\n    keywords: [ \"justice\", \"court\", \"man\", \"human\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\u2696\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  mrs_claus: {\n    keywords: [ \"woman\", \"female\", \"xmas\", \"mother christmas\" ],\n    \"char\": \"\\ud83e\\udd36\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  santa: {\n    keywords: [ \"festival\", \"man\", \"male\", \"xmas\", \"father christmas\" ],\n    \"char\": \"\\ud83c\\udf85\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  sorceress: {\n    keywords: [ \"woman\", \"female\", \"mage\", \"witch\" ],\n    \"char\": \"\\ud83e\\uddd9\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  wizard: {\n    keywords: [ \"man\", \"male\", \"mage\", \"sorcerer\" ],\n    \"char\": \"\\ud83e\\uddd9\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_elf: {\n    keywords: [ \"woman\", \"female\" ],\n    \"char\": \"\\ud83e\\udddd\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_elf: {\n    keywords: [ \"man\", \"male\" ],\n    \"char\": \"\\ud83e\\udddd\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_vampire: {\n    keywords: [ \"woman\", \"female\" ],\n    \"char\": \"\\ud83e\\udddb\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_vampire: {\n    keywords: [ \"man\", \"male\", \"dracula\" ],\n    \"char\": \"\\ud83e\\udddb\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_zombie: {\n    keywords: [ \"woman\", \"female\", \"undead\", \"walking dead\" ],\n    \"char\": \"\\ud83e\\udddf\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  man_zombie: {\n    keywords: [ \"man\", \"male\", \"dracula\", \"undead\", \"walking dead\" ],\n    \"char\": \"\\ud83e\\udddf\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  woman_genie: {\n    keywords: [ \"woman\", \"female\" ],\n    \"char\": \"\\ud83e\\uddde\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  man_genie: {\n    keywords: [ \"man\", \"male\" ],\n    \"char\": \"\\ud83e\\uddde\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  mermaid: {\n    keywords: [ \"woman\", \"female\", \"merwoman\", \"ariel\" ],\n    \"char\": \"\\ud83e\\udddc\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  merman: {\n    keywords: [ \"man\", \"male\", \"triton\" ],\n    \"char\": \"\\ud83e\\udddc\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_fairy: {\n    keywords: [ \"woman\", \"female\" ],\n    \"char\": \"\\ud83e\\uddda\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_fairy: {\n    keywords: [ \"man\", \"male\" ],\n    \"char\": \"\\ud83e\\uddda\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  angel: {\n    keywords: [ \"heaven\", \"wings\", \"halo\" ],\n    \"char\": \"\\ud83d\\udc7c\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  pregnant_woman: {\n    keywords: [ \"baby\" ],\n    \"char\": \"\\ud83e\\udd30\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  breastfeeding: {\n    keywords: [ \"nursing\", \"baby\" ],\n    \"char\": \"\\ud83e\\udd31\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  princess: {\n    keywords: [ \"girl\", \"woman\", \"female\", \"blond\", \"crown\", \"royal\", \"queen\" ],\n    \"char\": \"\\ud83d\\udc78\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  prince: {\n    keywords: [ \"boy\", \"man\", \"male\", \"crown\", \"royal\", \"king\" ],\n    \"char\": \"\\ud83e\\udd34\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  bride_with_veil: {\n    keywords: [ \"couple\", \"marriage\", \"wedding\", \"woman\", \"bride\" ],\n    \"char\": \"\\ud83d\\udc70\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_in_tuxedo: {\n    keywords: [ \"couple\", \"marriage\", \"wedding\", \"groom\" ],\n    \"char\": \"\\ud83e\\udd35\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  running_woman: {\n    keywords: [ \"woman\", \"walking\", \"exercise\", \"race\", \"running\", \"female\" ],\n    \"char\": \"\\ud83c\\udfc3\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  running_man: {\n    keywords: [ \"man\", \"walking\", \"exercise\", \"race\", \"running\" ],\n    \"char\": \"\\ud83c\\udfc3\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  walking_woman: {\n    keywords: [ \"human\", \"feet\", \"steps\", \"woman\", \"female\" ],\n    \"char\": \"\\ud83d\\udeb6\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  walking_man: {\n    keywords: [ \"human\", \"feet\", \"steps\" ],\n    \"char\": \"\\ud83d\\udeb6\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  dancer: {\n    keywords: [ \"female\", \"girl\", \"woman\", \"fun\" ],\n    \"char\": \"\\ud83d\\udc83\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_dancing: {\n    keywords: [ \"male\", \"boy\", \"fun\", \"dancer\" ],\n    \"char\": \"\\ud83d\\udd7a\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  dancing_women: {\n    keywords: [ \"female\", \"bunny\", \"women\", \"girls\" ],\n    \"char\": \"\\ud83d\\udc6f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  dancing_men: {\n    keywords: [ \"male\", \"bunny\", \"men\", \"boys\" ],\n    \"char\": \"\\ud83d\\udc6f\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  couple: {\n    keywords: [ \"pair\", \"people\", \"human\", \"love\", \"date\", \"dating\", \"like\", \"affection\", \"valentines\", \"marriage\" ],\n    \"char\": \"\\ud83d\\udc6b\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  two_men_holding_hands: {\n    keywords: [ \"pair\", \"couple\", \"love\", \"like\", \"bromance\", \"friendship\", \"people\", \"human\" ],\n    \"char\": \"\\ud83d\\udc6c\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  two_women_holding_hands: {\n    keywords: [ \"pair\", \"friendship\", \"couple\", \"love\", \"like\", \"female\", \"people\", \"human\" ],\n    \"char\": \"\\ud83d\\udc6d\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  bowing_woman: {\n    keywords: [ \"woman\", \"female\", \"girl\" ],\n    \"char\": \"\\ud83d\\ude47\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  bowing_man: {\n    keywords: [ \"man\", \"male\", \"boy\" ],\n    \"char\": \"\\ud83d\\ude47\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_facepalming: {\n    keywords: [ \"man\", \"male\", \"boy\", \"disbelief\" ],\n    \"char\": \"\\ud83e\\udd26\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_facepalming: {\n    keywords: [ \"woman\", \"female\", \"girl\", \"disbelief\" ],\n    \"char\": \"\\ud83e\\udd26\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_shrugging: {\n    keywords: [ \"woman\", \"female\", \"girl\", \"confused\", \"indifferent\", \"doubt\" ],\n    \"char\": \"\\ud83e\\udd37\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_shrugging: {\n    keywords: [ \"man\", \"male\", \"boy\", \"confused\", \"indifferent\", \"doubt\" ],\n    \"char\": \"\\ud83e\\udd37\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  tipping_hand_woman: {\n    keywords: [ \"female\", \"girl\", \"woman\", \"human\", \"information\" ],\n    \"char\": \"\\ud83d\\udc81\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  tipping_hand_man: {\n    keywords: [ \"male\", \"boy\", \"man\", \"human\", \"information\" ],\n    \"char\": \"\\ud83d\\udc81\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  no_good_woman: {\n    keywords: [ \"female\", \"girl\", \"woman\", \"nope\" ],\n    \"char\": \"\\ud83d\\ude45\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  no_good_man: {\n    keywords: [ \"male\", \"boy\", \"man\", \"nope\" ],\n    \"char\": \"\\ud83d\\ude45\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  ok_woman: {\n    keywords: [ \"women\", \"girl\", \"female\", \"pink\", \"human\", \"woman\" ],\n    \"char\": \"\\ud83d\\ude46\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  ok_man: {\n    keywords: [ \"men\", \"boy\", \"male\", \"blue\", \"human\", \"man\" ],\n    \"char\": \"\\ud83d\\ude46\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  raising_hand_woman: {\n    keywords: [ \"female\", \"girl\", \"woman\" ],\n    \"char\": \"\\ud83d\\ude4b\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  raising_hand_man: {\n    keywords: [ \"male\", \"boy\", \"man\" ],\n    \"char\": \"\\ud83d\\ude4b\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  pouting_woman: {\n    keywords: [ \"female\", \"girl\", \"woman\" ],\n    \"char\": \"\\ud83d\\ude4e\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  pouting_man: {\n    keywords: [ \"male\", \"boy\", \"man\" ],\n    \"char\": \"\\ud83d\\ude4e\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  frowning_woman: {\n    keywords: [ \"female\", \"girl\", \"woman\", \"sad\", \"depressed\", \"discouraged\", \"unhappy\" ],\n    \"char\": \"\\ud83d\\ude4d\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  frowning_man: {\n    keywords: [ \"male\", \"boy\", \"man\", \"sad\", \"depressed\", \"discouraged\", \"unhappy\" ],\n    \"char\": \"\\ud83d\\ude4d\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  haircut_woman: {\n    keywords: [ \"female\", \"girl\", \"woman\" ],\n    \"char\": \"\\ud83d\\udc87\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  haircut_man: {\n    keywords: [ \"male\", \"boy\", \"man\" ],\n    \"char\": \"\\ud83d\\udc87\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  massage_woman: {\n    keywords: [ \"female\", \"girl\", \"woman\", \"head\" ],\n    \"char\": \"\\ud83d\\udc86\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  massage_man: {\n    keywords: [ \"male\", \"boy\", \"man\", \"head\" ],\n    \"char\": \"\\ud83d\\udc86\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  woman_in_steamy_room: {\n    keywords: [ \"female\", \"woman\", \"spa\", \"steamroom\", \"sauna\" ],\n    \"char\": \"\\ud83e\\uddd6\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  man_in_steamy_room: {\n    keywords: [ \"male\", \"man\", \"spa\", \"steamroom\", \"sauna\" ],\n    \"char\": \"\\ud83e\\uddd6\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"people\"\n  },\n  couple_with_heart_woman_man: {\n    keywords: [ \"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\" ],\n    \"char\": \"\\ud83d\\udc91\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  couple_with_heart_woman_woman: {\n    keywords: [ \"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  couple_with_heart_man_man: {\n    keywords: [ \"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  couplekiss_man_woman: {\n    keywords: [ \"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\" ],\n    \"char\": \"\\ud83d\\udc8f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  couplekiss_woman_woman: {\n    keywords: [ \"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  couplekiss_man_man: {\n    keywords: [ \"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_woman_boy: {\n    keywords: [ \"home\", \"parents\", \"child\", \"mom\", \"dad\", \"father\", \"mother\", \"people\", \"human\" ],\n    \"char\": \"\\ud83d\\udc6a\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_woman_girl: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"child\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_woman_girl_boy: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_woman_boy_boy: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_woman_girl_girl: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_woman_woman_boy: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_woman_woman_girl: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_woman_woman_girl_boy: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_woman_woman_boy_boy: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_woman_woman_girl_girl: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_man_boy: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_man_girl: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_man_girl_boy: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_man_boy_boy: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_man_girl_girl: {\n    keywords: [ \"home\", \"parents\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_woman_boy: {\n    keywords: [ \"home\", \"parent\", \"people\", \"human\", \"child\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_woman_girl: {\n    keywords: [ \"home\", \"parent\", \"people\", \"human\", \"child\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udc67\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_woman_girl_boy: {\n    keywords: [ \"home\", \"parent\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_woman_boy_boy: {\n    keywords: [ \"home\", \"parent\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_woman_girl_girl: {\n    keywords: [ \"home\", \"parent\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_boy: {\n    keywords: [ \"home\", \"parent\", \"people\", \"human\", \"child\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_girl: {\n    keywords: [ \"home\", \"parent\", \"people\", \"human\", \"child\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc67\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_girl_boy: {\n    keywords: [ \"home\", \"parent\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_boy_boy: {\n    keywords: [ \"home\", \"parent\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  family_man_girl_girl: {\n    keywords: [ \"home\", \"parent\", \"people\", \"human\", \"children\" ],\n    \"char\": \"\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  coat: {\n    keywords: [ \"jacket\" ],\n    \"char\": \"\\ud83e\\udde5\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  womans_clothes: {\n    keywords: [ \"fashion\", \"shopping_bags\", \"female\" ],\n    \"char\": \"\\ud83d\\udc5a\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  tshirt: {\n    keywords: [ \"fashion\", \"cloth\", \"casual\", \"shirt\", \"tee\" ],\n    \"char\": \"\\ud83d\\udc55\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  jeans: {\n    keywords: [ \"fashion\", \"shopping\" ],\n    \"char\": \"\\ud83d\\udc56\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  necktie: {\n    keywords: [ \"shirt\", \"suitup\", \"formal\", \"fashion\", \"cloth\", \"business\" ],\n    \"char\": \"\\ud83d\\udc54\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  dress: {\n    keywords: [ \"clothes\", \"fashion\", \"shopping\" ],\n    \"char\": \"\\ud83d\\udc57\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  bikini: {\n    keywords: [ \"swimming\", \"female\", \"woman\", \"girl\", \"fashion\", \"beach\", \"summer\" ],\n    \"char\": \"\\ud83d\\udc59\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  kimono: {\n    keywords: [ \"dress\", \"fashion\", \"women\", \"female\", \"japanese\" ],\n    \"char\": \"\\ud83d\\udc58\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  lipstick: {\n    keywords: [ \"female\", \"girl\", \"fashion\", \"woman\" ],\n    \"char\": \"\\ud83d\\udc84\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  kiss: {\n    keywords: [ \"face\", \"lips\", \"love\", \"like\", \"affection\", \"valentines\" ],\n    \"char\": \"\\ud83d\\udc8b\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  footprints: {\n    keywords: [ \"feet\", \"tracking\", \"walking\", \"beach\" ],\n    \"char\": \"\\ud83d\\udc63\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  high_heel: {\n    keywords: [ \"fashion\", \"shoes\", \"female\", \"pumps\", \"stiletto\" ],\n    \"char\": \"\\ud83d\\udc60\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  sandal: {\n    keywords: [ \"shoes\", \"fashion\", \"flip flops\" ],\n    \"char\": \"\\ud83d\\udc61\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  boot: {\n    keywords: [ \"shoes\", \"fashion\" ],\n    \"char\": \"\\ud83d\\udc62\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  mans_shoe: {\n    keywords: [ \"fashion\", \"male\" ],\n    \"char\": \"\\ud83d\\udc5e\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  athletic_shoe: {\n    keywords: [ \"shoes\", \"sports\", \"sneakers\" ],\n    \"char\": \"\\ud83d\\udc5f\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  socks: {\n    keywords: [ \"stockings\", \"clothes\" ],\n    \"char\": \"\\ud83e\\udde6\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  gloves: {\n    keywords: [ \"hands\", \"winter\", \"clothes\" ],\n    \"char\": \"\\ud83e\\udde4\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  scarf: {\n    keywords: [ \"neck\", \"winter\", \"clothes\" ],\n    \"char\": \"\\ud83e\\udde3\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  womans_hat: {\n    keywords: [ \"fashion\", \"accessories\", \"female\", \"lady\", \"spring\" ],\n    \"char\": \"\\ud83d\\udc52\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  tophat: {\n    keywords: [ \"magic\", \"gentleman\", \"classy\", \"circus\" ],\n    \"char\": \"\\ud83c\\udfa9\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  billed_hat: {\n    keywords: [ \"cap\", \"baseball\" ],\n    \"char\": \"\\ud83e\\udde2\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  rescue_worker_helmet: {\n    keywords: [ \"construction\", \"build\" ],\n    \"char\": \"\\u26d1\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  mortar_board: {\n    keywords: [ \"school\", \"college\", \"degree\", \"university\", \"graduation\", \"cap\", \"hat\", \"legal\", \"learn\", \"education\" ],\n    \"char\": \"\\ud83c\\udf93\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  crown: {\n    keywords: [ \"king\", \"kod\", \"leader\", \"royalty\", \"lord\" ],\n    \"char\": \"\\ud83d\\udc51\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  school_satchel: {\n    keywords: [ \"student\", \"education\", \"bag\", \"backpack\" ],\n    \"char\": \"\\ud83c\\udf92\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  pouch: {\n    keywords: [ \"bag\", \"accessories\", \"shopping\" ],\n    \"char\": \"\\ud83d\\udc5d\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  purse: {\n    keywords: [ \"fashion\", \"accessories\", \"money\", \"sales\", \"shopping\" ],\n    \"char\": \"\\ud83d\\udc5b\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  handbag: {\n    keywords: [ \"fashion\", \"accessory\", \"accessories\", \"shopping\" ],\n    \"char\": \"\\ud83d\\udc5c\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  briefcase: {\n    keywords: [ \"business\", \"documents\", \"work\", \"law\", \"legal\", \"job\", \"career\" ],\n    \"char\": \"\\ud83d\\udcbc\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  eyeglasses: {\n    keywords: [ \"fashion\", \"accessories\", \"eyesight\", \"nerdy\", \"dork\", \"geek\" ],\n    \"char\": \"\\ud83d\\udc53\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  dark_sunglasses: {\n    keywords: [ \"face\", \"cool\", \"accessories\" ],\n    \"char\": \"\\ud83d\\udd76\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  ring: {\n    keywords: [ \"wedding\", \"propose\", \"marriage\", \"valentines\", \"diamond\", \"fashion\", \"jewelry\", \"gem\", \"engagement\" ],\n    \"char\": \"\\ud83d\\udc8d\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  closed_umbrella: {\n    keywords: [ \"weather\", \"rain\", \"drizzle\" ],\n    \"char\": \"\\ud83c\\udf02\",\n    fitzpatrick_scale: false,\n    category: \"people\"\n  },\n  dog: {\n    keywords: [ \"animal\", \"friend\", \"nature\", \"woof\", \"puppy\", \"pet\", \"faithful\" ],\n    \"char\": \"\\ud83d\\udc36\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  cat: {\n    keywords: [ \"animal\", \"meow\", \"nature\", \"pet\", \"kitten\" ],\n    \"char\": \"\\ud83d\\udc31\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  mouse: {\n    keywords: [ \"animal\", \"nature\", \"cheese_wedge\", \"rodent\" ],\n    \"char\": \"\\ud83d\\udc2d\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  hamster: {\n    keywords: [ \"animal\", \"nature\" ],\n    \"char\": \"\\ud83d\\udc39\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  rabbit: {\n    keywords: [ \"animal\", \"nature\", \"pet\", \"spring\", \"magic\", \"bunny\" ],\n    \"char\": \"\\ud83d\\udc30\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  fox_face: {\n    keywords: [ \"animal\", \"nature\", \"face\" ],\n    \"char\": \"\\ud83e\\udd8a\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  bear: {\n    keywords: [ \"animal\", \"nature\", \"wild\" ],\n    \"char\": \"\\ud83d\\udc3b\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  panda_face: {\n    keywords: [ \"animal\", \"nature\", \"panda\" ],\n    \"char\": \"\\ud83d\\udc3c\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  koala: {\n    keywords: [ \"animal\", \"nature\" ],\n    \"char\": \"\\ud83d\\udc28\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  tiger: {\n    keywords: [ \"animal\", \"cat\", \"danger\", \"wild\", \"nature\", \"roar\" ],\n    \"char\": \"\\ud83d\\udc2f\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  lion: {\n    keywords: [ \"animal\", \"nature\" ],\n    \"char\": \"\\ud83e\\udd81\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  cow: {\n    keywords: [ \"beef\", \"ox\", \"animal\", \"nature\", \"moo\", \"milk\" ],\n    \"char\": \"\\ud83d\\udc2e\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  pig: {\n    keywords: [ \"animal\", \"oink\", \"nature\" ],\n    \"char\": \"\\ud83d\\udc37\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  pig_nose: {\n    keywords: [ \"animal\", \"oink\" ],\n    \"char\": \"\\ud83d\\udc3d\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  frog: {\n    keywords: [ \"animal\", \"nature\", \"croak\", \"toad\" ],\n    \"char\": \"\\ud83d\\udc38\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  squid: {\n    keywords: [ \"animal\", \"nature\", \"ocean\", \"sea\" ],\n    \"char\": \"\\ud83e\\udd91\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  octopus: {\n    keywords: [ \"animal\", \"creature\", \"ocean\", \"sea\", \"nature\", \"beach\" ],\n    \"char\": \"\\ud83d\\udc19\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  shrimp: {\n    keywords: [ \"animal\", \"ocean\", \"nature\", \"seafood\" ],\n    \"char\": \"\\ud83e\\udd90\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  monkey_face: {\n    keywords: [ \"animal\", \"nature\", \"circus\" ],\n    \"char\": \"\\ud83d\\udc35\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  gorilla: {\n    keywords: [ \"animal\", \"nature\", \"circus\" ],\n    \"char\": \"\\ud83e\\udd8d\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  see_no_evil: {\n    keywords: [ \"monkey\", \"animal\", \"nature\", \"haha\" ],\n    \"char\": \"\\ud83d\\ude48\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  hear_no_evil: {\n    keywords: [ \"animal\", \"monkey\", \"nature\" ],\n    \"char\": \"\\ud83d\\ude49\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  speak_no_evil: {\n    keywords: [ \"monkey\", \"animal\", \"nature\", \"omg\" ],\n    \"char\": \"\\ud83d\\ude4a\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  monkey: {\n    keywords: [ \"animal\", \"nature\", \"banana\", \"circus\" ],\n    \"char\": \"\\ud83d\\udc12\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  chicken: {\n    keywords: [ \"animal\", \"cluck\", \"nature\", \"bird\" ],\n    \"char\": \"\\ud83d\\udc14\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  penguin: {\n    keywords: [ \"animal\", \"nature\" ],\n    \"char\": \"\\ud83d\\udc27\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  bird: {\n    keywords: [ \"animal\", \"nature\", \"fly\", \"tweet\", \"spring\" ],\n    \"char\": \"\\ud83d\\udc26\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  baby_chick: {\n    keywords: [ \"animal\", \"chicken\", \"bird\" ],\n    \"char\": \"\\ud83d\\udc24\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  hatching_chick: {\n    keywords: [ \"animal\", \"chicken\", \"egg\", \"born\", \"baby\", \"bird\" ],\n    \"char\": \"\\ud83d\\udc23\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  hatched_chick: {\n    keywords: [ \"animal\", \"chicken\", \"baby\", \"bird\" ],\n    \"char\": \"\\ud83d\\udc25\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  duck: {\n    keywords: [ \"animal\", \"nature\", \"bird\", \"mallard\" ],\n    \"char\": \"\\ud83e\\udd86\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  eagle: {\n    keywords: [ \"animal\", \"nature\", \"bird\" ],\n    \"char\": \"\\ud83e\\udd85\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  owl: {\n    keywords: [ \"animal\", \"nature\", \"bird\", \"hoot\" ],\n    \"char\": \"\\ud83e\\udd89\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  bat: {\n    keywords: [ \"animal\", \"nature\", \"blind\", \"vampire\" ],\n    \"char\": \"\\ud83e\\udd87\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  wolf: {\n    keywords: [ \"animal\", \"nature\", \"wild\" ],\n    \"char\": \"\\ud83d\\udc3a\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  boar: {\n    keywords: [ \"animal\", \"nature\" ],\n    \"char\": \"\\ud83d\\udc17\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  horse: {\n    keywords: [ \"animal\", \"brown\", \"nature\" ],\n    \"char\": \"\\ud83d\\udc34\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  unicorn: {\n    keywords: [ \"animal\", \"nature\", \"mystical\" ],\n    \"char\": \"\\ud83e\\udd84\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  honeybee: {\n    keywords: [ \"animal\", \"insect\", \"nature\", \"bug\", \"spring\", \"honey\" ],\n    \"char\": \"\\ud83d\\udc1d\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  bug: {\n    keywords: [ \"animal\", \"insect\", \"nature\", \"worm\" ],\n    \"char\": \"\\ud83d\\udc1b\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  butterfly: {\n    keywords: [ \"animal\", \"insect\", \"nature\", \"caterpillar\" ],\n    \"char\": \"\\ud83e\\udd8b\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  snail: {\n    keywords: [ \"slow\", \"animal\", \"shell\" ],\n    \"char\": \"\\ud83d\\udc0c\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  beetle: {\n    keywords: [ \"animal\", \"insect\", \"nature\", \"ladybug\" ],\n    \"char\": \"\\ud83d\\udc1e\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  ant: {\n    keywords: [ \"animal\", \"insect\", \"nature\", \"bug\" ],\n    \"char\": \"\\ud83d\\udc1c\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  grasshopper: {\n    keywords: [ \"animal\", \"cricket\", \"chirp\" ],\n    \"char\": \"\\ud83e\\udd97\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  spider: {\n    keywords: [ \"animal\", \"arachnid\" ],\n    \"char\": \"\\ud83d\\udd77\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  scorpion: {\n    keywords: [ \"animal\", \"arachnid\" ],\n    \"char\": \"\\ud83e\\udd82\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  crab: {\n    keywords: [ \"animal\", \"crustacean\" ],\n    \"char\": \"\\ud83e\\udd80\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  snake: {\n    keywords: [ \"animal\", \"evil\", \"nature\", \"hiss\", \"python\" ],\n    \"char\": \"\\ud83d\\udc0d\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  lizard: {\n    keywords: [ \"animal\", \"nature\", \"reptile\" ],\n    \"char\": \"\\ud83e\\udd8e\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  \"t-rex\": {\n    keywords: [ \"animal\", \"nature\", \"dinosaur\", \"tyrannosaurus\", \"extinct\" ],\n    \"char\": \"\\ud83e\\udd96\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  sauropod: {\n    keywords: [ \"animal\", \"nature\", \"dinosaur\", \"brachiosaurus\", \"brontosaurus\", \"diplodocus\", \"extinct\" ],\n    \"char\": \"\\ud83e\\udd95\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  turtle: {\n    keywords: [ \"animal\", \"slow\", \"nature\", \"tortoise\" ],\n    \"char\": \"\\ud83d\\udc22\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  tropical_fish: {\n    keywords: [ \"animal\", \"swim\", \"ocean\", \"beach\", \"nemo\" ],\n    \"char\": \"\\ud83d\\udc20\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  fish: {\n    keywords: [ \"animal\", \"food\", \"nature\" ],\n    \"char\": \"\\ud83d\\udc1f\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  blowfish: {\n    keywords: [ \"animal\", \"nature\", \"food\", \"sea\", \"ocean\" ],\n    \"char\": \"\\ud83d\\udc21\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  dolphin: {\n    keywords: [ \"animal\", \"nature\", \"fish\", \"sea\", \"ocean\", \"flipper\", \"fins\", \"beach\" ],\n    \"char\": \"\\ud83d\\udc2c\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  shark: {\n    keywords: [ \"animal\", \"nature\", \"fish\", \"sea\", \"ocean\", \"jaws\", \"fins\", \"beach\" ],\n    \"char\": \"\\ud83e\\udd88\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  whale: {\n    keywords: [ \"animal\", \"nature\", \"sea\", \"ocean\" ],\n    \"char\": \"\\ud83d\\udc33\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  whale2: {\n    keywords: [ \"animal\", \"nature\", \"sea\", \"ocean\" ],\n    \"char\": \"\\ud83d\\udc0b\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  crocodile: {\n    keywords: [ \"animal\", \"nature\", \"reptile\", \"lizard\", \"alligator\" ],\n    \"char\": \"\\ud83d\\udc0a\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  leopard: {\n    keywords: [ \"animal\", \"nature\" ],\n    \"char\": \"\\ud83d\\udc06\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  zebra: {\n    keywords: [ \"animal\", \"nature\", \"stripes\", \"safari\" ],\n    \"char\": \"\\ud83e\\udd93\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  tiger2: {\n    keywords: [ \"animal\", \"nature\", \"roar\" ],\n    \"char\": \"\\ud83d\\udc05\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  water_buffalo: {\n    keywords: [ \"animal\", \"nature\", \"ox\", \"cow\" ],\n    \"char\": \"\\ud83d\\udc03\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  ox: {\n    keywords: [ \"animal\", \"cow\", \"beef\" ],\n    \"char\": \"\\ud83d\\udc02\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  cow2: {\n    keywords: [ \"beef\", \"ox\", \"animal\", \"nature\", \"moo\", \"milk\" ],\n    \"char\": \"\\ud83d\\udc04\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  deer: {\n    keywords: [ \"animal\", \"nature\", \"horns\", \"venison\" ],\n    \"char\": \"\\ud83e\\udd8c\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  dromedary_camel: {\n    keywords: [ \"animal\", \"hot\", \"desert\", \"hump\" ],\n    \"char\": \"\\ud83d\\udc2a\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  camel: {\n    keywords: [ \"animal\", \"nature\", \"hot\", \"desert\", \"hump\" ],\n    \"char\": \"\\ud83d\\udc2b\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  giraffe: {\n    keywords: [ \"animal\", \"nature\", \"spots\", \"safari\" ],\n    \"char\": \"\\ud83e\\udd92\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  elephant: {\n    keywords: [ \"animal\", \"nature\", \"nose\", \"th\", \"circus\" ],\n    \"char\": \"\\ud83d\\udc18\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  rhinoceros: {\n    keywords: [ \"animal\", \"nature\", \"horn\" ],\n    \"char\": \"\\ud83e\\udd8f\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  goat: {\n    keywords: [ \"animal\", \"nature\" ],\n    \"char\": \"\\ud83d\\udc10\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  ram: {\n    keywords: [ \"animal\", \"sheep\", \"nature\" ],\n    \"char\": \"\\ud83d\\udc0f\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  sheep: {\n    keywords: [ \"animal\", \"nature\", \"wool\", \"shipit\" ],\n    \"char\": \"\\ud83d\\udc11\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  racehorse: {\n    keywords: [ \"animal\", \"gamble\", \"luck\" ],\n    \"char\": \"\\ud83d\\udc0e\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  pig2: {\n    keywords: [ \"animal\", \"nature\" ],\n    \"char\": \"\\ud83d\\udc16\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  rat: {\n    keywords: [ \"animal\", \"mouse\", \"rodent\" ],\n    \"char\": \"\\ud83d\\udc00\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  mouse2: {\n    keywords: [ \"animal\", \"nature\", \"rodent\" ],\n    \"char\": \"\\ud83d\\udc01\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  rooster: {\n    keywords: [ \"animal\", \"nature\", \"chicken\" ],\n    \"char\": \"\\ud83d\\udc13\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  turkey: {\n    keywords: [ \"animal\", \"bird\" ],\n    \"char\": \"\\ud83e\\udd83\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  dove: {\n    keywords: [ \"animal\", \"bird\" ],\n    \"char\": \"\\ud83d\\udd4a\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  dog2: {\n    keywords: [ \"animal\", \"nature\", \"friend\", \"doge\", \"pet\", \"faithful\" ],\n    \"char\": \"\\ud83d\\udc15\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  poodle: {\n    keywords: [ \"dog\", \"animal\", \"101\", \"nature\", \"pet\" ],\n    \"char\": \"\\ud83d\\udc29\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  cat2: {\n    keywords: [ \"animal\", \"meow\", \"pet\", \"cats\" ],\n    \"char\": \"\\ud83d\\udc08\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  rabbit2: {\n    keywords: [ \"animal\", \"nature\", \"pet\", \"magic\", \"spring\" ],\n    \"char\": \"\\ud83d\\udc07\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  chipmunk: {\n    keywords: [ \"animal\", \"nature\", \"rodent\", \"squirrel\" ],\n    \"char\": \"\\ud83d\\udc3f\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  hedgehog: {\n    keywords: [ \"animal\", \"nature\", \"spiny\" ],\n    \"char\": \"\\ud83e\\udd94\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  paw_prints: {\n    keywords: [ \"animal\", \"tracking\", \"footprints\", \"dog\", \"cat\", \"pet\", \"feet\" ],\n    \"char\": \"\\ud83d\\udc3e\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  dragon: {\n    keywords: [ \"animal\", \"myth\", \"nature\", \"chinese\", \"green\" ],\n    \"char\": \"\\ud83d\\udc09\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  dragon_face: {\n    keywords: [ \"animal\", \"myth\", \"nature\", \"chinese\", \"green\" ],\n    \"char\": \"\\ud83d\\udc32\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  cactus: {\n    keywords: [ \"vegetable\", \"plant\", \"nature\" ],\n    \"char\": \"\\ud83c\\udf35\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  christmas_tree: {\n    keywords: [ \"festival\", \"vacation\", \"december\", \"xmas\", \"celebration\" ],\n    \"char\": \"\\ud83c\\udf84\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  evergreen_tree: {\n    keywords: [ \"plant\", \"nature\" ],\n    \"char\": \"\\ud83c\\udf32\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  deciduous_tree: {\n    keywords: [ \"plant\", \"nature\" ],\n    \"char\": \"\\ud83c\\udf33\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  palm_tree: {\n    keywords: [ \"plant\", \"vegetable\", \"nature\", \"summer\", \"beach\", \"mojito\", \"tropical\" ],\n    \"char\": \"\\ud83c\\udf34\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  seedling: {\n    keywords: [ \"plant\", \"nature\", \"grass\", \"lawn\", \"spring\" ],\n    \"char\": \"\\ud83c\\udf31\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  herb: {\n    keywords: [ \"vegetable\", \"plant\", \"medicine\", \"weed\", \"grass\", \"lawn\" ],\n    \"char\": \"\\ud83c\\udf3f\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  shamrock: {\n    keywords: [ \"vegetable\", \"plant\", \"nature\", \"irish\", \"clover\" ],\n    \"char\": \"\\u2618\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  four_leaf_clover: {\n    keywords: [ \"vegetable\", \"plant\", \"nature\", \"lucky\", \"irish\" ],\n    \"char\": \"\\ud83c\\udf40\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  bamboo: {\n    keywords: [ \"plant\", \"nature\", \"vegetable\", \"panda\", \"pine_decoration\" ],\n    \"char\": \"\\ud83c\\udf8d\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  tanabata_tree: {\n    keywords: [ \"plant\", \"nature\", \"branch\", \"summer\" ],\n    \"char\": \"\\ud83c\\udf8b\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  leaves: {\n    keywords: [ \"nature\", \"plant\", \"tree\", \"vegetable\", \"grass\", \"lawn\", \"spring\" ],\n    \"char\": \"\\ud83c\\udf43\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  fallen_leaf: {\n    keywords: [ \"nature\", \"plant\", \"vegetable\", \"leaves\" ],\n    \"char\": \"\\ud83c\\udf42\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  maple_leaf: {\n    keywords: [ \"nature\", \"plant\", \"vegetable\", \"ca\", \"fall\" ],\n    \"char\": \"\\ud83c\\udf41\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  ear_of_rice: {\n    keywords: [ \"nature\", \"plant\" ],\n    \"char\": \"\\ud83c\\udf3e\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  hibiscus: {\n    keywords: [ \"plant\", \"vegetable\", \"flowers\", \"beach\" ],\n    \"char\": \"\\ud83c\\udf3a\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  sunflower: {\n    keywords: [ \"nature\", \"plant\", \"fall\" ],\n    \"char\": \"\\ud83c\\udf3b\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  rose: {\n    keywords: [ \"flowers\", \"valentines\", \"love\", \"spring\" ],\n    \"char\": \"\\ud83c\\udf39\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  wilted_flower: {\n    keywords: [ \"plant\", \"nature\", \"flower\" ],\n    \"char\": \"\\ud83e\\udd40\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  tulip: {\n    keywords: [ \"flowers\", \"plant\", \"nature\", \"summer\", \"spring\" ],\n    \"char\": \"\\ud83c\\udf37\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  blossom: {\n    keywords: [ \"nature\", \"flowers\", \"yellow\" ],\n    \"char\": \"\\ud83c\\udf3c\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  cherry_blossom: {\n    keywords: [ \"nature\", \"plant\", \"spring\", \"flower\" ],\n    \"char\": \"\\ud83c\\udf38\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  bouquet: {\n    keywords: [ \"flowers\", \"nature\", \"spring\" ],\n    \"char\": \"\\ud83d\\udc90\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  mushroom: {\n    keywords: [ \"plant\", \"vegetable\" ],\n    \"char\": \"\\ud83c\\udf44\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  chestnut: {\n    keywords: [ \"food\", \"squirrel\" ],\n    \"char\": \"\\ud83c\\udf30\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  jack_o_lantern: {\n    keywords: [ \"halloween\", \"light\", \"pumpkin\", \"creepy\", \"fall\" ],\n    \"char\": \"\\ud83c\\udf83\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  shell: {\n    keywords: [ \"nature\", \"sea\", \"beach\" ],\n    \"char\": \"\\ud83d\\udc1a\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  spider_web: {\n    keywords: [ \"animal\", \"insect\", \"arachnid\", \"silk\" ],\n    \"char\": \"\\ud83d\\udd78\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  earth_americas: {\n    keywords: [ \"globe\", \"world\", \"USA\", \"international\" ],\n    \"char\": \"\\ud83c\\udf0e\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  earth_africa: {\n    keywords: [ \"globe\", \"world\", \"international\" ],\n    \"char\": \"\\ud83c\\udf0d\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  earth_asia: {\n    keywords: [ \"globe\", \"world\", \"east\", \"international\" ],\n    \"char\": \"\\ud83c\\udf0f\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  full_moon: {\n    keywords: [ \"nature\", \"yellow\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\" ],\n    \"char\": \"\\ud83c\\udf15\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  waning_gibbous_moon: {\n    keywords: [ \"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\", \"waxing_gibbous_moon\" ],\n    \"char\": \"\\ud83c\\udf16\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  last_quarter_moon: {\n    keywords: [ \"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\" ],\n    \"char\": \"\\ud83c\\udf17\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  waning_crescent_moon: {\n    keywords: [ \"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\" ],\n    \"char\": \"\\ud83c\\udf18\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  new_moon: {\n    keywords: [ \"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\" ],\n    \"char\": \"\\ud83c\\udf11\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  waxing_crescent_moon: {\n    keywords: [ \"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\" ],\n    \"char\": \"\\ud83c\\udf12\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  first_quarter_moon: {\n    keywords: [ \"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\" ],\n    \"char\": \"\\ud83c\\udf13\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  waxing_gibbous_moon: {\n    keywords: [ \"nature\", \"night\", \"sky\", \"gray\", \"twilight\", \"planet\", \"space\", \"evening\", \"sleep\" ],\n    \"char\": \"\\ud83c\\udf14\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  new_moon_with_face: {\n    keywords: [ \"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\" ],\n    \"char\": \"\\ud83c\\udf1a\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  full_moon_with_face: {\n    keywords: [ \"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\" ],\n    \"char\": \"\\ud83c\\udf1d\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  first_quarter_moon_with_face: {\n    keywords: [ \"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\" ],\n    \"char\": \"\\ud83c\\udf1b\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  last_quarter_moon_with_face: {\n    keywords: [ \"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\" ],\n    \"char\": \"\\ud83c\\udf1c\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  sun_with_face: {\n    keywords: [ \"nature\", \"morning\", \"sky\" ],\n    \"char\": \"\\ud83c\\udf1e\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  crescent_moon: {\n    keywords: [ \"night\", \"sleep\", \"sky\", \"evening\", \"magic\" ],\n    \"char\": \"\\ud83c\\udf19\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  star: {\n    keywords: [ \"night\", \"yellow\" ],\n    \"char\": \"\\u2b50\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  star2: {\n    keywords: [ \"night\", \"sparkle\", \"awesome\", \"good\", \"magic\" ],\n    \"char\": \"\\ud83c\\udf1f\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  dizzy: {\n    keywords: [ \"star\", \"sparkle\", \"shoot\", \"magic\" ],\n    \"char\": \"\\ud83d\\udcab\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  sparkles: {\n    keywords: [ \"stars\", \"shine\", \"shiny\", \"cool\", \"awesome\", \"good\", \"magic\" ],\n    \"char\": \"\\u2728\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  comet: {\n    keywords: [ \"space\" ],\n    \"char\": \"\\u2604\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  sunny: {\n    keywords: [ \"weather\", \"nature\", \"brightness\", \"summer\", \"beach\", \"spring\" ],\n    \"char\": \"\\u2600\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  sun_behind_small_cloud: {\n    keywords: [ \"weather\" ],\n    \"char\": \"\\ud83c\\udf24\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  partly_sunny: {\n    keywords: [ \"weather\", \"nature\", \"cloudy\", \"morning\", \"fall\", \"spring\" ],\n    \"char\": \"\\u26c5\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  sun_behind_large_cloud: {\n    keywords: [ \"weather\" ],\n    \"char\": \"\\ud83c\\udf25\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  sun_behind_rain_cloud: {\n    keywords: [ \"weather\" ],\n    \"char\": \"\\ud83c\\udf26\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  cloud: {\n    keywords: [ \"weather\", \"sky\" ],\n    \"char\": \"\\u2601\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  cloud_with_rain: {\n    keywords: [ \"weather\" ],\n    \"char\": \"\\ud83c\\udf27\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  cloud_with_lightning_and_rain: {\n    keywords: [ \"weather\", \"lightning\" ],\n    \"char\": \"\\u26c8\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  cloud_with_lightning: {\n    keywords: [ \"weather\", \"thunder\" ],\n    \"char\": \"\\ud83c\\udf29\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  zap: {\n    keywords: [ \"thunder\", \"weather\", \"lightning bolt\", \"fast\" ],\n    \"char\": \"\\u26a1\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  fire: {\n    keywords: [ \"hot\", \"cook\", \"flame\" ],\n    \"char\": \"\\ud83d\\udd25\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  boom: {\n    keywords: [ \"bomb\", \"explode\", \"explosion\", \"collision\", \"blown\" ],\n    \"char\": \"\\ud83d\\udca5\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  snowflake: {\n    keywords: [ \"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\" ],\n    \"char\": \"\\u2744\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  cloud_with_snow: {\n    keywords: [ \"weather\" ],\n    \"char\": \"\\ud83c\\udf28\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  snowman: {\n    keywords: [ \"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\", \"frozen\", \"without_snow\" ],\n    \"char\": \"\\u26c4\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  snowman_with_snow: {\n    keywords: [ \"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\", \"frozen\" ],\n    \"char\": \"\\u2603\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  wind_face: {\n    keywords: [ \"gust\", \"air\" ],\n    \"char\": \"\\ud83c\\udf2c\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  dash: {\n    keywords: [ \"wind\", \"air\", \"fast\", \"shoo\", \"fart\", \"smoke\", \"puff\" ],\n    \"char\": \"\\ud83d\\udca8\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  tornado: {\n    keywords: [ \"weather\", \"cyclone\", \"twister\" ],\n    \"char\": \"\\ud83c\\udf2a\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  fog: {\n    keywords: [ \"weather\" ],\n    \"char\": \"\\ud83c\\udf2b\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  open_umbrella: {\n    keywords: [ \"weather\", \"spring\" ],\n    \"char\": \"\\u2602\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  umbrella: {\n    keywords: [ \"rainy\", \"weather\", \"spring\" ],\n    \"char\": \"\\u2614\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  droplet: {\n    keywords: [ \"water\", \"drip\", \"faucet\", \"spring\" ],\n    \"char\": \"\\ud83d\\udca7\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  sweat_drops: {\n    keywords: [ \"water\", \"drip\", \"oops\" ],\n    \"char\": \"\\ud83d\\udca6\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  ocean: {\n    keywords: [ \"sea\", \"water\", \"wave\", \"nature\", \"tsunami\", \"disaster\" ],\n    \"char\": \"\\ud83c\\udf0a\",\n    fitzpatrick_scale: false,\n    category: \"animals_and_nature\"\n  },\n  green_apple: {\n    keywords: [ \"fruit\", \"nature\" ],\n    \"char\": \"\\ud83c\\udf4f\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  apple: {\n    keywords: [ \"fruit\", \"mac\", \"school\" ],\n    \"char\": \"\\ud83c\\udf4e\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  pear: {\n    keywords: [ \"fruit\", \"nature\", \"food\" ],\n    \"char\": \"\\ud83c\\udf50\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  tangerine: {\n    keywords: [ \"food\", \"fruit\", \"nature\", \"orange\" ],\n    \"char\": \"\\ud83c\\udf4a\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  lemon: {\n    keywords: [ \"fruit\", \"nature\" ],\n    \"char\": \"\\ud83c\\udf4b\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  banana: {\n    keywords: [ \"fruit\", \"food\", \"monkey\" ],\n    \"char\": \"\\ud83c\\udf4c\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  watermelon: {\n    keywords: [ \"fruit\", \"food\", \"picnic\", \"summer\" ],\n    \"char\": \"\\ud83c\\udf49\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  grapes: {\n    keywords: [ \"fruit\", \"food\", \"wine\" ],\n    \"char\": \"\\ud83c\\udf47\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  strawberry: {\n    keywords: [ \"fruit\", \"food\", \"nature\" ],\n    \"char\": \"\\ud83c\\udf53\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  melon: {\n    keywords: [ \"fruit\", \"nature\", \"food\" ],\n    \"char\": \"\\ud83c\\udf48\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  cherries: {\n    keywords: [ \"food\", \"fruit\" ],\n    \"char\": \"\\ud83c\\udf52\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  peach: {\n    keywords: [ \"fruit\", \"nature\", \"food\" ],\n    \"char\": \"\\ud83c\\udf51\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  pineapple: {\n    keywords: [ \"fruit\", \"nature\", \"food\" ],\n    \"char\": \"\\ud83c\\udf4d\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  coconut: {\n    keywords: [ \"fruit\", \"nature\", \"food\", \"palm\" ],\n    \"char\": \"\\ud83e\\udd65\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  kiwi_fruit: {\n    keywords: [ \"fruit\", \"food\" ],\n    \"char\": \"\\ud83e\\udd5d\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  avocado: {\n    keywords: [ \"fruit\", \"food\" ],\n    \"char\": \"\\ud83e\\udd51\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  broccoli: {\n    keywords: [ \"fruit\", \"food\", \"vegetable\" ],\n    \"char\": \"\\ud83e\\udd66\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  tomato: {\n    keywords: [ \"fruit\", \"vegetable\", \"nature\", \"food\" ],\n    \"char\": \"\\ud83c\\udf45\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  eggplant: {\n    keywords: [ \"vegetable\", \"nature\", \"food\", \"aubergine\" ],\n    \"char\": \"\\ud83c\\udf46\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  cucumber: {\n    keywords: [ \"fruit\", \"food\", \"pickle\" ],\n    \"char\": \"\\ud83e\\udd52\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  carrot: {\n    keywords: [ \"vegetable\", \"food\", \"orange\" ],\n    \"char\": \"\\ud83e\\udd55\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  hot_pepper: {\n    keywords: [ \"food\", \"spicy\", \"chilli\", \"chili\" ],\n    \"char\": \"\\ud83c\\udf36\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  potato: {\n    keywords: [ \"food\", \"tuber\", \"vegatable\", \"starch\" ],\n    \"char\": \"\\ud83e\\udd54\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  corn: {\n    keywords: [ \"food\", \"vegetable\", \"plant\" ],\n    \"char\": \"\\ud83c\\udf3d\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  sweet_potato: {\n    keywords: [ \"food\", \"nature\" ],\n    \"char\": \"\\ud83c\\udf60\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  peanuts: {\n    keywords: [ \"food\", \"nut\" ],\n    \"char\": \"\\ud83e\\udd5c\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  honey_pot: {\n    keywords: [ \"bees\", \"sweet\", \"kitchen\" ],\n    \"char\": \"\\ud83c\\udf6f\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  croissant: {\n    keywords: [ \"food\", \"bread\", \"french\" ],\n    \"char\": \"\\ud83e\\udd50\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  bread: {\n    keywords: [ \"food\", \"wheat\", \"breakfast\", \"toast\" ],\n    \"char\": \"\\ud83c\\udf5e\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  baguette_bread: {\n    keywords: [ \"food\", \"bread\", \"french\" ],\n    \"char\": \"\\ud83e\\udd56\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  pretzel: {\n    keywords: [ \"food\", \"bread\", \"twisted\" ],\n    \"char\": \"\\ud83e\\udd68\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  cheese: {\n    keywords: [ \"food\", \"chadder\" ],\n    \"char\": \"\\ud83e\\uddc0\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  egg: {\n    keywords: [ \"food\", \"chicken\", \"breakfast\" ],\n    \"char\": \"\\ud83e\\udd5a\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  bacon: {\n    keywords: [ \"food\", \"breakfast\", \"pork\", \"pig\", \"meat\" ],\n    \"char\": \"\\ud83e\\udd53\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  steak: {\n    keywords: [ \"food\", \"cow\", \"meat\", \"cut\", \"chop\", \"lambchop\", \"porkchop\" ],\n    \"char\": \"\\ud83e\\udd69\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  pancakes: {\n    keywords: [ \"food\", \"breakfast\", \"flapjacks\", \"hotcakes\" ],\n    \"char\": \"\\ud83e\\udd5e\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  poultry_leg: {\n    keywords: [ \"food\", \"meat\", \"drumstick\", \"bird\", \"chicken\", \"turkey\" ],\n    \"char\": \"\\ud83c\\udf57\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  meat_on_bone: {\n    keywords: [ \"good\", \"food\", \"drumstick\" ],\n    \"char\": \"\\ud83c\\udf56\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  fried_shrimp: {\n    keywords: [ \"food\", \"animal\", \"appetizer\", \"summer\" ],\n    \"char\": \"\\ud83c\\udf64\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  fried_egg: {\n    keywords: [ \"food\", \"breakfast\", \"kitchen\", \"egg\" ],\n    \"char\": \"\\ud83c\\udf73\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  hamburger: {\n    keywords: [ \"meat\", \"fast food\", \"beef\", \"cheeseburger\", \"mcdonalds\", \"burger king\" ],\n    \"char\": \"\\ud83c\\udf54\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  fries: {\n    keywords: [ \"chips\", \"snack\", \"fast food\" ],\n    \"char\": \"\\ud83c\\udf5f\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  stuffed_flatbread: {\n    keywords: [ \"food\", \"flatbread\", \"stuffed\", \"gyro\" ],\n    \"char\": \"\\ud83e\\udd59\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  hotdog: {\n    keywords: [ \"food\", \"frankfurter\" ],\n    \"char\": \"\\ud83c\\udf2d\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  pizza: {\n    keywords: [ \"food\", \"party\" ],\n    \"char\": \"\\ud83c\\udf55\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  sandwich: {\n    keywords: [ \"food\", \"lunch\", \"bread\" ],\n    \"char\": \"\\ud83e\\udd6a\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  canned_food: {\n    keywords: [ \"food\", \"soup\" ],\n    \"char\": \"\\ud83e\\udd6b\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  spaghetti: {\n    keywords: [ \"food\", \"italian\", \"noodle\" ],\n    \"char\": \"\\ud83c\\udf5d\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  taco: {\n    keywords: [ \"food\", \"mexican\" ],\n    \"char\": \"\\ud83c\\udf2e\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  burrito: {\n    keywords: [ \"food\", \"mexican\" ],\n    \"char\": \"\\ud83c\\udf2f\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  green_salad: {\n    keywords: [ \"food\", \"healthy\", \"lettuce\" ],\n    \"char\": \"\\ud83e\\udd57\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  shallow_pan_of_food: {\n    keywords: [ \"food\", \"cooking\", \"casserole\", \"paella\" ],\n    \"char\": \"\\ud83e\\udd58\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  ramen: {\n    keywords: [ \"food\", \"japanese\", \"noodle\", \"chopsticks\" ],\n    \"char\": \"\\ud83c\\udf5c\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  stew: {\n    keywords: [ \"food\", \"meat\", \"soup\" ],\n    \"char\": \"\\ud83c\\udf72\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  fish_cake: {\n    keywords: [ \"food\", \"japan\", \"sea\", \"beach\", \"narutomaki\", \"pink\", \"swirl\", \"kamaboko\", \"surimi\", \"ramen\" ],\n    \"char\": \"\\ud83c\\udf65\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  fortune_cookie: {\n    keywords: [ \"food\", \"prophecy\" ],\n    \"char\": \"\\ud83e\\udd60\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  sushi: {\n    keywords: [ \"food\", \"fish\", \"japanese\", \"rice\" ],\n    \"char\": \"\\ud83c\\udf63\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  bento: {\n    keywords: [ \"food\", \"japanese\", \"box\" ],\n    \"char\": \"\\ud83c\\udf71\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  curry: {\n    keywords: [ \"food\", \"spicy\", \"hot\", \"indian\" ],\n    \"char\": \"\\ud83c\\udf5b\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  rice_ball: {\n    keywords: [ \"food\", \"japanese\" ],\n    \"char\": \"\\ud83c\\udf59\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  rice: {\n    keywords: [ \"food\", \"china\", \"asian\" ],\n    \"char\": \"\\ud83c\\udf5a\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  rice_cracker: {\n    keywords: [ \"food\", \"japanese\" ],\n    \"char\": \"\\ud83c\\udf58\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  oden: {\n    keywords: [ \"food\", \"japanese\" ],\n    \"char\": \"\\ud83c\\udf62\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  dango: {\n    keywords: [ \"food\", \"dessert\", \"sweet\", \"japanese\", \"barbecue\", \"meat\" ],\n    \"char\": \"\\ud83c\\udf61\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  shaved_ice: {\n    keywords: [ \"hot\", \"dessert\", \"summer\" ],\n    \"char\": \"\\ud83c\\udf67\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  ice_cream: {\n    keywords: [ \"food\", \"hot\", \"dessert\" ],\n    \"char\": \"\\ud83c\\udf68\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  icecream: {\n    keywords: [ \"food\", \"hot\", \"dessert\", \"summer\" ],\n    \"char\": \"\\ud83c\\udf66\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  pie: {\n    keywords: [ \"food\", \"dessert\", \"pastry\" ],\n    \"char\": \"\\ud83e\\udd67\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  cake: {\n    keywords: [ \"food\", \"dessert\" ],\n    \"char\": \"\\ud83c\\udf70\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  birthday: {\n    keywords: [ \"food\", \"dessert\", \"cake\" ],\n    \"char\": \"\\ud83c\\udf82\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  custard: {\n    keywords: [ \"dessert\", \"food\" ],\n    \"char\": \"\\ud83c\\udf6e\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  candy: {\n    keywords: [ \"snack\", \"dessert\", \"sweet\", \"lolly\" ],\n    \"char\": \"\\ud83c\\udf6c\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  lollipop: {\n    keywords: [ \"food\", \"snack\", \"candy\", \"sweet\" ],\n    \"char\": \"\\ud83c\\udf6d\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  chocolate_bar: {\n    keywords: [ \"food\", \"snack\", \"dessert\", \"sweet\" ],\n    \"char\": \"\\ud83c\\udf6b\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  popcorn: {\n    keywords: [ \"food\", \"movie theater\", \"films\", \"snack\" ],\n    \"char\": \"\\ud83c\\udf7f\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  dumpling: {\n    keywords: [ \"food\", \"empanada\", \"pierogi\", \"potsticker\" ],\n    \"char\": \"\\ud83e\\udd5f\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  doughnut: {\n    keywords: [ \"food\", \"dessert\", \"snack\", \"sweet\", \"donut\" ],\n    \"char\": \"\\ud83c\\udf69\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  cookie: {\n    keywords: [ \"food\", \"snack\", \"oreo\", \"chocolate\", \"sweet\", \"dessert\" ],\n    \"char\": \"\\ud83c\\udf6a\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  milk_glass: {\n    keywords: [ \"beverage\", \"drink\", \"cow\" ],\n    \"char\": \"\\ud83e\\udd5b\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  beer: {\n    keywords: [ \"relax\", \"beverage\", \"drink\", \"drunk\", \"party\", \"pub\", \"summer\", \"alcohol\", \"booze\" ],\n    \"char\": \"\\ud83c\\udf7a\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  beers: {\n    keywords: [ \"relax\", \"beverage\", \"drink\", \"drunk\", \"party\", \"pub\", \"summer\", \"alcohol\", \"booze\" ],\n    \"char\": \"\\ud83c\\udf7b\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  clinking_glasses: {\n    keywords: [ \"beverage\", \"drink\", \"party\", \"alcohol\", \"celebrate\", \"cheers\", \"wine\", \"champagne\", \"toast\" ],\n    \"char\": \"\\ud83e\\udd42\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  wine_glass: {\n    keywords: [ \"drink\", \"beverage\", \"drunk\", \"alcohol\", \"booze\" ],\n    \"char\": \"\\ud83c\\udf77\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  tumbler_glass: {\n    keywords: [ \"drink\", \"beverage\", \"drunk\", \"alcohol\", \"liquor\", \"booze\", \"bourbon\", \"scotch\", \"whisky\", \"glass\", \"shot\" ],\n    \"char\": \"\\ud83e\\udd43\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  cocktail: {\n    keywords: [ \"drink\", \"drunk\", \"alcohol\", \"beverage\", \"booze\", \"mojito\" ],\n    \"char\": \"\\ud83c\\udf78\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  tropical_drink: {\n    keywords: [ \"beverage\", \"cocktail\", \"summer\", \"beach\", \"alcohol\", \"booze\", \"mojito\" ],\n    \"char\": \"\\ud83c\\udf79\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  champagne: {\n    keywords: [ \"drink\", \"wine\", \"bottle\", \"celebration\" ],\n    \"char\": \"\\ud83c\\udf7e\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  sake: {\n    keywords: [ \"wine\", \"drink\", \"drunk\", \"beverage\", \"japanese\", \"alcohol\", \"booze\" ],\n    \"char\": \"\\ud83c\\udf76\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  tea: {\n    keywords: [ \"drink\", \"bowl\", \"breakfast\", \"green\", \"british\" ],\n    \"char\": \"\\ud83c\\udf75\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  cup_with_straw: {\n    keywords: [ \"drink\", \"soda\" ],\n    \"char\": \"\\ud83e\\udd64\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  coffee: {\n    keywords: [ \"beverage\", \"caffeine\", \"latte\", \"espresso\" ],\n    \"char\": \"\\u2615\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  baby_bottle: {\n    keywords: [ \"food\", \"container\", \"milk\" ],\n    \"char\": \"\\ud83c\\udf7c\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  spoon: {\n    keywords: [ \"cutlery\", \"kitchen\", \"tableware\" ],\n    \"char\": \"\\ud83e\\udd44\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  fork_and_knife: {\n    keywords: [ \"cutlery\", \"kitchen\" ],\n    \"char\": \"\\ud83c\\udf74\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  plate_with_cutlery: {\n    keywords: [ \"food\", \"eat\", \"meal\", \"lunch\", \"dinner\", \"restaurant\" ],\n    \"char\": \"\\ud83c\\udf7d\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  bowl_with_spoon: {\n    keywords: [ \"food\", \"breakfast\", \"cereal\", \"oatmeal\", \"porridge\" ],\n    \"char\": \"\\ud83e\\udd63\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  takeout_box: {\n    keywords: [ \"food\", \"leftovers\" ],\n    \"char\": \"\\ud83e\\udd61\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  chopsticks: {\n    keywords: [ \"food\" ],\n    \"char\": \"\\ud83e\\udd62\",\n    fitzpatrick_scale: false,\n    category: \"food_and_drink\"\n  },\n  soccer: {\n    keywords: [ \"sports\", \"football\" ],\n    \"char\": \"\\u26bd\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  basketball: {\n    keywords: [ \"sports\", \"balls\", \"NBA\" ],\n    \"char\": \"\\ud83c\\udfc0\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  football: {\n    keywords: [ \"sports\", \"balls\", \"NFL\" ],\n    \"char\": \"\\ud83c\\udfc8\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  baseball: {\n    keywords: [ \"sports\", \"balls\" ],\n    \"char\": \"\\u26be\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  tennis: {\n    keywords: [ \"sports\", \"balls\", \"green\" ],\n    \"char\": \"\\ud83c\\udfbe\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  volleyball: {\n    keywords: [ \"sports\", \"balls\" ],\n    \"char\": \"\\ud83c\\udfd0\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  rugby_football: {\n    keywords: [ \"sports\", \"team\" ],\n    \"char\": \"\\ud83c\\udfc9\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  \"8ball\": {\n    keywords: [ \"pool\", \"hobby\", \"game\", \"luck\", \"magic\" ],\n    \"char\": \"\\ud83c\\udfb1\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  golf: {\n    keywords: [ \"sports\", \"business\", \"flag\", \"hole\", \"summer\" ],\n    \"char\": \"\\u26f3\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  golfing_woman: {\n    keywords: [ \"sports\", \"business\", \"woman\", \"female\" ],\n    \"char\": \"\\ud83c\\udfcc\\ufe0f\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  golfing_man: {\n    keywords: [ \"sports\", \"business\" ],\n    \"char\": \"\\ud83c\\udfcc\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  ping_pong: {\n    keywords: [ \"sports\", \"pingpong\" ],\n    \"char\": \"\\ud83c\\udfd3\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  badminton: {\n    keywords: [ \"sports\" ],\n    \"char\": \"\\ud83c\\udff8\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  goal_net: {\n    keywords: [ \"sports\" ],\n    \"char\": \"\\ud83e\\udd45\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  ice_hockey: {\n    keywords: [ \"sports\" ],\n    \"char\": \"\\ud83c\\udfd2\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  field_hockey: {\n    keywords: [ \"sports\" ],\n    \"char\": \"\\ud83c\\udfd1\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  cricket: {\n    keywords: [ \"sports\" ],\n    \"char\": \"\\ud83c\\udfcf\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  ski: {\n    keywords: [ \"sports\", \"winter\", \"cold\", \"snow\" ],\n    \"char\": \"\\ud83c\\udfbf\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  skier: {\n    keywords: [ \"sports\", \"winter\", \"snow\" ],\n    \"char\": \"\\u26f7\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  snowboarder: {\n    keywords: [ \"sports\", \"winter\" ],\n    \"char\": \"\\ud83c\\udfc2\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  person_fencing: {\n    keywords: [ \"sports\", \"fencing\", \"sword\" ],\n    \"char\": \"\\ud83e\\udd3a\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  women_wrestling: {\n    keywords: [ \"sports\", \"wrestlers\" ],\n    \"char\": \"\\ud83e\\udd3c\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  men_wrestling: {\n    keywords: [ \"sports\", \"wrestlers\" ],\n    \"char\": \"\\ud83e\\udd3c\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  woman_cartwheeling: {\n    keywords: [ \"gymnastics\" ],\n    \"char\": \"\\ud83e\\udd38\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  man_cartwheeling: {\n    keywords: [ \"gymnastics\" ],\n    \"char\": \"\\ud83e\\udd38\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  woman_playing_handball: {\n    keywords: [ \"sports\" ],\n    \"char\": \"\\ud83e\\udd3e\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  man_playing_handball: {\n    keywords: [ \"sports\" ],\n    \"char\": \"\\ud83e\\udd3e\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  ice_skate: {\n    keywords: [ \"sports\" ],\n    \"char\": \"\\u26f8\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  curling_stone: {\n    keywords: [ \"sports\" ],\n    \"char\": \"\\ud83e\\udd4c\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  sled: {\n    keywords: [ \"sleigh\", \"luge\", \"toboggan\" ],\n    \"char\": \"\\ud83d\\udef7\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  bow_and_arrow: {\n    keywords: [ \"sports\" ],\n    \"char\": \"\\ud83c\\udff9\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  fishing_pole_and_fish: {\n    keywords: [ \"food\", \"hobby\", \"summer\" ],\n    \"char\": \"\\ud83c\\udfa3\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  boxing_glove: {\n    keywords: [ \"sports\", \"fighting\" ],\n    \"char\": \"\\ud83e\\udd4a\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  martial_arts_uniform: {\n    keywords: [ \"judo\", \"karate\", \"taekwondo\" ],\n    \"char\": \"\\ud83e\\udd4b\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  rowing_woman: {\n    keywords: [ \"sports\", \"hobby\", \"water\", \"ship\", \"woman\", \"female\" ],\n    \"char\": \"\\ud83d\\udea3\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  rowing_man: {\n    keywords: [ \"sports\", \"hobby\", \"water\", \"ship\" ],\n    \"char\": \"\\ud83d\\udea3\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  climbing_woman: {\n    keywords: [ \"sports\", \"hobby\", \"woman\", \"female\", \"rock\" ],\n    \"char\": \"\\ud83e\\uddd7\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  climbing_man: {\n    keywords: [ \"sports\", \"hobby\", \"man\", \"male\", \"rock\" ],\n    \"char\": \"\\ud83e\\uddd7\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  swimming_woman: {\n    keywords: [ \"sports\", \"exercise\", \"human\", \"athlete\", \"water\", \"summer\", \"woman\", \"female\" ],\n    \"char\": \"\\ud83c\\udfca\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  swimming_man: {\n    keywords: [ \"sports\", \"exercise\", \"human\", \"athlete\", \"water\", \"summer\" ],\n    \"char\": \"\\ud83c\\udfca\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  woman_playing_water_polo: {\n    keywords: [ \"sports\", \"pool\" ],\n    \"char\": \"\\ud83e\\udd3d\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  man_playing_water_polo: {\n    keywords: [ \"sports\", \"pool\" ],\n    \"char\": \"\\ud83e\\udd3d\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  woman_in_lotus_position: {\n    keywords: [ \"woman\", \"female\", \"meditation\", \"yoga\", \"serenity\", \"zen\", \"mindfulness\" ],\n    \"char\": \"\\ud83e\\uddd8\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  man_in_lotus_position: {\n    keywords: [ \"man\", \"male\", \"meditation\", \"yoga\", \"serenity\", \"zen\", \"mindfulness\" ],\n    \"char\": \"\\ud83e\\uddd8\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  surfing_woman: {\n    keywords: [ \"sports\", \"ocean\", \"sea\", \"summer\", \"beach\", \"woman\", \"female\" ],\n    \"char\": \"\\ud83c\\udfc4\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  surfing_man: {\n    keywords: [ \"sports\", \"ocean\", \"sea\", \"summer\", \"beach\" ],\n    \"char\": \"\\ud83c\\udfc4\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  bath: {\n    keywords: [ \"clean\", \"shower\", \"bathroom\" ],\n    \"char\": \"\\ud83d\\udec0\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  basketball_woman: {\n    keywords: [ \"sports\", \"human\", \"woman\", \"female\" ],\n    \"char\": \"\\u26f9\\ufe0f\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  basketball_man: {\n    keywords: [ \"sports\", \"human\" ],\n    \"char\": \"\\u26f9\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  weight_lifting_woman: {\n    keywords: [ \"sports\", \"training\", \"exercise\", \"woman\", \"female\" ],\n    \"char\": \"\\ud83c\\udfcb\\ufe0f\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  weight_lifting_man: {\n    keywords: [ \"sports\", \"training\", \"exercise\" ],\n    \"char\": \"\\ud83c\\udfcb\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  biking_woman: {\n    keywords: [ \"sports\", \"bike\", \"exercise\", \"hipster\", \"woman\", \"female\" ],\n    \"char\": \"\\ud83d\\udeb4\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  biking_man: {\n    keywords: [ \"sports\", \"bike\", \"exercise\", \"hipster\" ],\n    \"char\": \"\\ud83d\\udeb4\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  mountain_biking_woman: {\n    keywords: [ \"transportation\", \"sports\", \"human\", \"race\", \"bike\", \"woman\", \"female\" ],\n    \"char\": \"\\ud83d\\udeb5\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  mountain_biking_man: {\n    keywords: [ \"transportation\", \"sports\", \"human\", \"race\", \"bike\" ],\n    \"char\": \"\\ud83d\\udeb5\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  horse_racing: {\n    keywords: [ \"animal\", \"betting\", \"competition\", \"gambling\", \"luck\" ],\n    \"char\": \"\\ud83c\\udfc7\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  business_suit_levitating: {\n    keywords: [ \"suit\", \"business\", \"levitate\", \"hover\", \"jump\" ],\n    \"char\": \"\\ud83d\\udd74\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  trophy: {\n    keywords: [ \"win\", \"award\", \"contest\", \"place\", \"ftw\", \"ceremony\" ],\n    \"char\": \"\\ud83c\\udfc6\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  running_shirt_with_sash: {\n    keywords: [ \"play\", \"pageant\" ],\n    \"char\": \"\\ud83c\\udfbd\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  medal_sports: {\n    keywords: [ \"award\", \"winning\" ],\n    \"char\": \"\\ud83c\\udfc5\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  medal_military: {\n    keywords: [ \"award\", \"winning\", \"army\" ],\n    \"char\": \"\\ud83c\\udf96\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  \"1st_place_medal\": {\n    keywords: [ \"award\", \"winning\", \"first\" ],\n    \"char\": \"\\ud83e\\udd47\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  \"2nd_place_medal\": {\n    keywords: [ \"award\", \"second\" ],\n    \"char\": \"\\ud83e\\udd48\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  \"3rd_place_medal\": {\n    keywords: [ \"award\", \"third\" ],\n    \"char\": \"\\ud83e\\udd49\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  reminder_ribbon: {\n    keywords: [ \"sports\", \"cause\", \"support\", \"awareness\" ],\n    \"char\": \"\\ud83c\\udf97\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  rosette: {\n    keywords: [ \"flower\", \"decoration\", \"military\" ],\n    \"char\": \"\\ud83c\\udff5\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  ticket: {\n    keywords: [ \"event\", \"concert\", \"pass\" ],\n    \"char\": \"\\ud83c\\udfab\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  tickets: {\n    keywords: [ \"sports\", \"concert\", \"entrance\" ],\n    \"char\": \"\\ud83c\\udf9f\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  performing_arts: {\n    keywords: [ \"acting\", \"theater\", \"drama\" ],\n    \"char\": \"\\ud83c\\udfad\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  art: {\n    keywords: [ \"design\", \"paint\", \"draw\", \"colors\" ],\n    \"char\": \"\\ud83c\\udfa8\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  circus_tent: {\n    keywords: [ \"festival\", \"carnival\", \"party\" ],\n    \"char\": \"\\ud83c\\udfaa\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  woman_juggling: {\n    keywords: [ \"juggle\", \"balance\", \"skill\", \"multitask\" ],\n    \"char\": \"\\ud83e\\udd39\\u200d\\u2640\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  man_juggling: {\n    keywords: [ \"juggle\", \"balance\", \"skill\", \"multitask\" ],\n    \"char\": \"\\ud83e\\udd39\\u200d\\u2642\\ufe0f\",\n    fitzpatrick_scale: true,\n    category: \"activity\"\n  },\n  microphone: {\n    keywords: [ \"sound\", \"music\", \"PA\", \"sing\", \"talkshow\" ],\n    \"char\": \"\\ud83c\\udfa4\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  headphones: {\n    keywords: [ \"music\", \"score\", \"gadgets\" ],\n    \"char\": \"\\ud83c\\udfa7\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  musical_score: {\n    keywords: [ \"treble\", \"clef\", \"compose\" ],\n    \"char\": \"\\ud83c\\udfbc\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  musical_keyboard: {\n    keywords: [ \"piano\", \"instrument\", \"compose\" ],\n    \"char\": \"\\ud83c\\udfb9\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  drum: {\n    keywords: [ \"music\", \"instrument\", \"drumsticks\", \"snare\" ],\n    \"char\": \"\\ud83e\\udd41\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  saxophone: {\n    keywords: [ \"music\", \"instrument\", \"jazz\", \"blues\" ],\n    \"char\": \"\\ud83c\\udfb7\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  trumpet: {\n    keywords: [ \"music\", \"brass\" ],\n    \"char\": \"\\ud83c\\udfba\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  guitar: {\n    keywords: [ \"music\", \"instrument\" ],\n    \"char\": \"\\ud83c\\udfb8\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  violin: {\n    keywords: [ \"music\", \"instrument\", \"orchestra\", \"symphony\" ],\n    \"char\": \"\\ud83c\\udfbb\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  clapper: {\n    keywords: [ \"movie\", \"film\", \"record\" ],\n    \"char\": \"\\ud83c\\udfac\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  video_game: {\n    keywords: [ \"play\", \"console\", \"PS4\", \"controller\" ],\n    \"char\": \"\\ud83c\\udfae\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  space_invader: {\n    keywords: [ \"game\", \"arcade\", \"play\" ],\n    \"char\": \"\\ud83d\\udc7e\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  dart: {\n    keywords: [ \"game\", \"play\", \"bar\", \"target\", \"bullseye\" ],\n    \"char\": \"\\ud83c\\udfaf\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  game_die: {\n    keywords: [ \"dice\", \"random\", \"tabletop\", \"play\", \"luck\" ],\n    \"char\": \"\\ud83c\\udfb2\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  slot_machine: {\n    keywords: [ \"bet\", \"gamble\", \"vegas\", \"fruit machine\", \"luck\", \"casino\" ],\n    \"char\": \"\\ud83c\\udfb0\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  bowling: {\n    keywords: [ \"sports\", \"fun\", \"play\" ],\n    \"char\": \"\\ud83c\\udfb3\",\n    fitzpatrick_scale: false,\n    category: \"activity\"\n  },\n  red_car: {\n    keywords: [ \"red\", \"transportation\", \"vehicle\" ],\n    \"char\": \"\\ud83d\\ude97\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  taxi: {\n    keywords: [ \"uber\", \"vehicle\", \"cars\", \"transportation\" ],\n    \"char\": \"\\ud83d\\ude95\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  blue_car: {\n    keywords: [ \"transportation\", \"vehicle\" ],\n    \"char\": \"\\ud83d\\ude99\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  bus: {\n    keywords: [ \"car\", \"vehicle\", \"transportation\" ],\n    \"char\": \"\\ud83d\\ude8c\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  trolleybus: {\n    keywords: [ \"bart\", \"transportation\", \"vehicle\" ],\n    \"char\": \"\\ud83d\\ude8e\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  racing_car: {\n    keywords: [ \"sports\", \"race\", \"fast\", \"formula\", \"f1\" ],\n    \"char\": \"\\ud83c\\udfce\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  police_car: {\n    keywords: [ \"vehicle\", \"cars\", \"transportation\", \"law\", \"legal\", \"enforcement\" ],\n    \"char\": \"\\ud83d\\ude93\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  ambulance: {\n    keywords: [ \"health\", \"911\", \"hospital\" ],\n    \"char\": \"\\ud83d\\ude91\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  fire_engine: {\n    keywords: [ \"transportation\", \"cars\", \"vehicle\" ],\n    \"char\": \"\\ud83d\\ude92\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  minibus: {\n    keywords: [ \"vehicle\", \"car\", \"transportation\" ],\n    \"char\": \"\\ud83d\\ude90\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  truck: {\n    keywords: [ \"cars\", \"transportation\" ],\n    \"char\": \"\\ud83d\\ude9a\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  articulated_lorry: {\n    keywords: [ \"vehicle\", \"cars\", \"transportation\", \"express\" ],\n    \"char\": \"\\ud83d\\ude9b\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  tractor: {\n    keywords: [ \"vehicle\", \"car\", \"farming\", \"agriculture\" ],\n    \"char\": \"\\ud83d\\ude9c\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  kick_scooter: {\n    keywords: [ \"vehicle\", \"kick\", \"razor\" ],\n    \"char\": \"\\ud83d\\udef4\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  motorcycle: {\n    keywords: [ \"race\", \"sports\", \"fast\" ],\n    \"char\": \"\\ud83c\\udfcd\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  bike: {\n    keywords: [ \"sports\", \"bicycle\", \"exercise\", \"hipster\" ],\n    \"char\": \"\\ud83d\\udeb2\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  motor_scooter: {\n    keywords: [ \"vehicle\", \"vespa\", \"sasha\" ],\n    \"char\": \"\\ud83d\\udef5\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  rotating_light: {\n    keywords: [ \"police\", \"ambulance\", \"911\", \"emergency\", \"alert\", \"error\", \"pinged\", \"law\", \"legal\" ],\n    \"char\": \"\\ud83d\\udea8\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  oncoming_police_car: {\n    keywords: [ \"vehicle\", \"law\", \"legal\", \"enforcement\", \"911\" ],\n    \"char\": \"\\ud83d\\ude94\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  oncoming_bus: {\n    keywords: [ \"vehicle\", \"transportation\" ],\n    \"char\": \"\\ud83d\\ude8d\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  oncoming_automobile: {\n    keywords: [ \"car\", \"vehicle\", \"transportation\" ],\n    \"char\": \"\\ud83d\\ude98\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  oncoming_taxi: {\n    keywords: [ \"vehicle\", \"cars\", \"uber\" ],\n    \"char\": \"\\ud83d\\ude96\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  aerial_tramway: {\n    keywords: [ \"transportation\", \"vehicle\", \"ski\" ],\n    \"char\": \"\\ud83d\\udea1\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  mountain_cableway: {\n    keywords: [ \"transportation\", \"vehicle\", \"ski\" ],\n    \"char\": \"\\ud83d\\udea0\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  suspension_railway: {\n    keywords: [ \"vehicle\", \"transportation\" ],\n    \"char\": \"\\ud83d\\ude9f\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  railway_car: {\n    keywords: [ \"transportation\", \"vehicle\" ],\n    \"char\": \"\\ud83d\\ude83\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  train: {\n    keywords: [ \"transportation\", \"vehicle\", \"carriage\", \"public\", \"travel\" ],\n    \"char\": \"\\ud83d\\ude8b\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  monorail: {\n    keywords: [ \"transportation\", \"vehicle\" ],\n    \"char\": \"\\ud83d\\ude9d\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  bullettrain_side: {\n    keywords: [ \"transportation\", \"vehicle\" ],\n    \"char\": \"\\ud83d\\ude84\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  bullettrain_front: {\n    keywords: [ \"transportation\", \"vehicle\", \"speed\", \"fast\", \"public\", \"travel\" ],\n    \"char\": \"\\ud83d\\ude85\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  light_rail: {\n    keywords: [ \"transportation\", \"vehicle\" ],\n    \"char\": \"\\ud83d\\ude88\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  mountain_railway: {\n    keywords: [ \"transportation\", \"vehicle\" ],\n    \"char\": \"\\ud83d\\ude9e\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  steam_locomotive: {\n    keywords: [ \"transportation\", \"vehicle\", \"train\" ],\n    \"char\": \"\\ud83d\\ude82\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  train2: {\n    keywords: [ \"transportation\", \"vehicle\" ],\n    \"char\": \"\\ud83d\\ude86\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  metro: {\n    keywords: [ \"transportation\", \"blue-square\", \"mrt\", \"underground\", \"tube\" ],\n    \"char\": \"\\ud83d\\ude87\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  tram: {\n    keywords: [ \"transportation\", \"vehicle\" ],\n    \"char\": \"\\ud83d\\ude8a\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  station: {\n    keywords: [ \"transportation\", \"vehicle\", \"public\" ],\n    \"char\": \"\\ud83d\\ude89\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  flying_saucer: {\n    keywords: [ \"transportation\", \"vehicle\", \"ufo\" ],\n    \"char\": \"\\ud83d\\udef8\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  helicopter: {\n    keywords: [ \"transportation\", \"vehicle\", \"fly\" ],\n    \"char\": \"\\ud83d\\ude81\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  small_airplane: {\n    keywords: [ \"flight\", \"transportation\", \"fly\", \"vehicle\" ],\n    \"char\": \"\\ud83d\\udee9\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  airplane: {\n    keywords: [ \"vehicle\", \"transportation\", \"flight\", \"fly\" ],\n    \"char\": \"\\u2708\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  flight_departure: {\n    keywords: [ \"airport\", \"flight\", \"landing\" ],\n    \"char\": \"\\ud83d\\udeeb\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  flight_arrival: {\n    keywords: [ \"airport\", \"flight\", \"boarding\" ],\n    \"char\": \"\\ud83d\\udeec\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  sailboat: {\n    keywords: [ \"ship\", \"summer\", \"transportation\", \"water\", \"sailing\" ],\n    \"char\": \"\\u26f5\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  motor_boat: {\n    keywords: [ \"ship\" ],\n    \"char\": \"\\ud83d\\udee5\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  speedboat: {\n    keywords: [ \"ship\", \"transportation\", \"vehicle\", \"summer\" ],\n    \"char\": \"\\ud83d\\udea4\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  ferry: {\n    keywords: [ \"boat\", \"ship\", \"yacht\" ],\n    \"char\": \"\\u26f4\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  passenger_ship: {\n    keywords: [ \"yacht\", \"cruise\", \"ferry\" ],\n    \"char\": \"\\ud83d\\udef3\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  rocket: {\n    keywords: [ \"launch\", \"ship\", \"staffmode\", \"NASA\", \"outer space\", \"outer_space\", \"fly\" ],\n    \"char\": \"\\ud83d\\ude80\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  artificial_satellite: {\n    keywords: [ \"communication\", \"gps\", \"orbit\", \"spaceflight\", \"NASA\", \"ISS\" ],\n    \"char\": \"\\ud83d\\udef0\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  seat: {\n    keywords: [ \"sit\", \"airplane\", \"transport\", \"bus\", \"flight\", \"fly\" ],\n    \"char\": \"\\ud83d\\udcba\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  canoe: {\n    keywords: [ \"boat\", \"paddle\", \"water\", \"ship\" ],\n    \"char\": \"\\ud83d\\udef6\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  anchor: {\n    keywords: [ \"ship\", \"ferry\", \"sea\", \"boat\" ],\n    \"char\": \"\\u2693\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  construction: {\n    keywords: [ \"wip\", \"progress\", \"caution\", \"warning\" ],\n    \"char\": \"\\ud83d\\udea7\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  fuelpump: {\n    keywords: [ \"gas station\", \"petroleum\" ],\n    \"char\": \"\\u26fd\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  busstop: {\n    keywords: [ \"transportation\", \"wait\" ],\n    \"char\": \"\\ud83d\\ude8f\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  vertical_traffic_light: {\n    keywords: [ \"transportation\", \"driving\" ],\n    \"char\": \"\\ud83d\\udea6\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  traffic_light: {\n    keywords: [ \"transportation\", \"signal\" ],\n    \"char\": \"\\ud83d\\udea5\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  checkered_flag: {\n    keywords: [ \"contest\", \"finishline\", \"race\", \"gokart\" ],\n    \"char\": \"\\ud83c\\udfc1\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  ship: {\n    keywords: [ \"transportation\", \"titanic\", \"deploy\" ],\n    \"char\": \"\\ud83d\\udea2\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  ferris_wheel: {\n    keywords: [ \"photo\", \"carnival\", \"londoneye\" ],\n    \"char\": \"\\ud83c\\udfa1\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  roller_coaster: {\n    keywords: [ \"carnival\", \"playground\", \"photo\", \"fun\" ],\n    \"char\": \"\\ud83c\\udfa2\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  carousel_horse: {\n    keywords: [ \"photo\", \"carnival\" ],\n    \"char\": \"\\ud83c\\udfa0\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  building_construction: {\n    keywords: [ \"wip\", \"working\", \"progress\" ],\n    \"char\": \"\\ud83c\\udfd7\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  foggy: {\n    keywords: [ \"photo\", \"mountain\" ],\n    \"char\": \"\\ud83c\\udf01\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  tokyo_tower: {\n    keywords: [ \"photo\", \"japanese\" ],\n    \"char\": \"\\ud83d\\uddfc\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  factory: {\n    keywords: [ \"building\", \"industry\", \"pollution\", \"smoke\" ],\n    \"char\": \"\\ud83c\\udfed\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  fountain: {\n    keywords: [ \"photo\", \"summer\", \"water\", \"fresh\" ],\n    \"char\": \"\\u26f2\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  rice_scene: {\n    keywords: [ \"photo\", \"japan\", \"asia\", \"tsukimi\" ],\n    \"char\": \"\\ud83c\\udf91\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  mountain: {\n    keywords: [ \"photo\", \"nature\", \"environment\" ],\n    \"char\": \"\\u26f0\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  mountain_snow: {\n    keywords: [ \"photo\", \"nature\", \"environment\", \"winter\", \"cold\" ],\n    \"char\": \"\\ud83c\\udfd4\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  mount_fuji: {\n    keywords: [ \"photo\", \"mountain\", \"nature\", \"japanese\" ],\n    \"char\": \"\\ud83d\\uddfb\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  volcano: {\n    keywords: [ \"photo\", \"nature\", \"disaster\" ],\n    \"char\": \"\\ud83c\\udf0b\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  japan: {\n    keywords: [ \"nation\", \"country\", \"japanese\", \"asia\" ],\n    \"char\": \"\\ud83d\\uddfe\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  camping: {\n    keywords: [ \"photo\", \"outdoors\", \"tent\" ],\n    \"char\": \"\\ud83c\\udfd5\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  tent: {\n    keywords: [ \"photo\", \"camping\", \"outdoors\" ],\n    \"char\": \"\\u26fa\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  national_park: {\n    keywords: [ \"photo\", \"environment\", \"nature\" ],\n    \"char\": \"\\ud83c\\udfde\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  motorway: {\n    keywords: [ \"road\", \"cupertino\", \"interstate\", \"highway\" ],\n    \"char\": \"\\ud83d\\udee3\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  railway_track: {\n    keywords: [ \"train\", \"transportation\" ],\n    \"char\": \"\\ud83d\\udee4\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  sunrise: {\n    keywords: [ \"morning\", \"view\", \"vacation\", \"photo\" ],\n    \"char\": \"\\ud83c\\udf05\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  sunrise_over_mountains: {\n    keywords: [ \"view\", \"vacation\", \"photo\" ],\n    \"char\": \"\\ud83c\\udf04\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  desert: {\n    keywords: [ \"photo\", \"warm\", \"saharah\" ],\n    \"char\": \"\\ud83c\\udfdc\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  beach_umbrella: {\n    keywords: [ \"weather\", \"summer\", \"sunny\", \"sand\", \"mojito\" ],\n    \"char\": \"\\ud83c\\udfd6\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  desert_island: {\n    keywords: [ \"photo\", \"tropical\", \"mojito\" ],\n    \"char\": \"\\ud83c\\udfdd\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  city_sunrise: {\n    keywords: [ \"photo\", \"good morning\", \"dawn\" ],\n    \"char\": \"\\ud83c\\udf07\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  city_sunset: {\n    keywords: [ \"photo\", \"evening\", \"sky\", \"buildings\" ],\n    \"char\": \"\\ud83c\\udf06\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  cityscape: {\n    keywords: [ \"photo\", \"night life\", \"urban\" ],\n    \"char\": \"\\ud83c\\udfd9\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  night_with_stars: {\n    keywords: [ \"evening\", \"city\", \"downtown\" ],\n    \"char\": \"\\ud83c\\udf03\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  bridge_at_night: {\n    keywords: [ \"photo\", \"sanfrancisco\" ],\n    \"char\": \"\\ud83c\\udf09\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  milky_way: {\n    keywords: [ \"photo\", \"space\", \"stars\" ],\n    \"char\": \"\\ud83c\\udf0c\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  stars: {\n    keywords: [ \"night\", \"photo\" ],\n    \"char\": \"\\ud83c\\udf20\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  sparkler: {\n    keywords: [ \"stars\", \"night\", \"shine\" ],\n    \"char\": \"\\ud83c\\udf87\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  fireworks: {\n    keywords: [ \"photo\", \"festival\", \"carnival\", \"congratulations\" ],\n    \"char\": \"\\ud83c\\udf86\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  rainbow: {\n    keywords: [ \"nature\", \"happy\", \"unicorn_face\", \"photo\", \"sky\", \"spring\" ],\n    \"char\": \"\\ud83c\\udf08\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  houses: {\n    keywords: [ \"buildings\", \"photo\" ],\n    \"char\": \"\\ud83c\\udfd8\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  european_castle: {\n    keywords: [ \"building\", \"royalty\", \"history\" ],\n    \"char\": \"\\ud83c\\udff0\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  japanese_castle: {\n    keywords: [ \"photo\", \"building\" ],\n    \"char\": \"\\ud83c\\udfef\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  stadium: {\n    keywords: [ \"photo\", \"place\", \"sports\", \"concert\", \"venue\" ],\n    \"char\": \"\\ud83c\\udfdf\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  statue_of_liberty: {\n    keywords: [ \"american\", \"newyork\" ],\n    \"char\": \"\\ud83d\\uddfd\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  house: {\n    keywords: [ \"building\", \"home\" ],\n    \"char\": \"\\ud83c\\udfe0\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  house_with_garden: {\n    keywords: [ \"home\", \"plant\", \"nature\" ],\n    \"char\": \"\\ud83c\\udfe1\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  derelict_house: {\n    keywords: [ \"abandon\", \"evict\", \"broken\", \"building\" ],\n    \"char\": \"\\ud83c\\udfda\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  office: {\n    keywords: [ \"building\", \"bureau\", \"work\" ],\n    \"char\": \"\\ud83c\\udfe2\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  department_store: {\n    keywords: [ \"building\", \"shopping\", \"mall\" ],\n    \"char\": \"\\ud83c\\udfec\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  post_office: {\n    keywords: [ \"building\", \"envelope\", \"communication\" ],\n    \"char\": \"\\ud83c\\udfe3\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  european_post_office: {\n    keywords: [ \"building\", \"email\" ],\n    \"char\": \"\\ud83c\\udfe4\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  hospital: {\n    keywords: [ \"building\", \"health\", \"surgery\", \"doctor\" ],\n    \"char\": \"\\ud83c\\udfe5\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  bank: {\n    keywords: [ \"building\", \"money\", \"sales\", \"cash\", \"business\", \"enterprise\" ],\n    \"char\": \"\\ud83c\\udfe6\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  hotel: {\n    keywords: [ \"building\", \"accomodation\", \"checkin\" ],\n    \"char\": \"\\ud83c\\udfe8\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  convenience_store: {\n    keywords: [ \"building\", \"shopping\", \"groceries\" ],\n    \"char\": \"\\ud83c\\udfea\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  school: {\n    keywords: [ \"building\", \"student\", \"education\", \"learn\", \"teach\" ],\n    \"char\": \"\\ud83c\\udfeb\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  love_hotel: {\n    keywords: [ \"like\", \"affection\", \"dating\" ],\n    \"char\": \"\\ud83c\\udfe9\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  wedding: {\n    keywords: [ \"love\", \"like\", \"affection\", \"couple\", \"marriage\", \"bride\", \"groom\" ],\n    \"char\": \"\\ud83d\\udc92\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  classical_building: {\n    keywords: [ \"art\", \"culture\", \"history\" ],\n    \"char\": \"\\ud83c\\udfdb\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  church: {\n    keywords: [ \"building\", \"religion\", \"christ\" ],\n    \"char\": \"\\u26ea\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  mosque: {\n    keywords: [ \"islam\", \"worship\", \"minaret\" ],\n    \"char\": \"\\ud83d\\udd4c\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  synagogue: {\n    keywords: [ \"judaism\", \"worship\", \"temple\", \"jewish\" ],\n    \"char\": \"\\ud83d\\udd4d\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  kaaba: {\n    keywords: [ \"mecca\", \"mosque\", \"islam\" ],\n    \"char\": \"\\ud83d\\udd4b\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  shinto_shrine: {\n    keywords: [ \"temple\", \"japan\", \"kyoto\" ],\n    \"char\": \"\\u26e9\",\n    fitzpatrick_scale: false,\n    category: \"travel_and_places\"\n  },\n  watch: {\n    keywords: [ \"time\", \"accessories\" ],\n    \"char\": \"\\u231a\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  iphone: {\n    keywords: [ \"technology\", \"apple\", \"gadgets\", \"dial\" ],\n    \"char\": \"\\ud83d\\udcf1\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  calling: {\n    keywords: [ \"iphone\", \"incoming\" ],\n    \"char\": \"\\ud83d\\udcf2\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  computer: {\n    keywords: [ \"technology\", \"laptop\", \"screen\", \"display\", \"monitor\" ],\n    \"char\": \"\\ud83d\\udcbb\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  keyboard: {\n    keywords: [ \"technology\", \"computer\", \"type\", \"input\", \"text\" ],\n    \"char\": \"\\u2328\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  desktop_computer: {\n    keywords: [ \"technology\", \"computing\", \"screen\" ],\n    \"char\": \"\\ud83d\\udda5\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  printer: {\n    keywords: [ \"paper\", \"ink\" ],\n    \"char\": \"\\ud83d\\udda8\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  computer_mouse: {\n    keywords: [ \"click\" ],\n    \"char\": \"\\ud83d\\uddb1\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  trackball: {\n    keywords: [ \"technology\", \"trackpad\" ],\n    \"char\": \"\\ud83d\\uddb2\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  joystick: {\n    keywords: [ \"game\", \"play\" ],\n    \"char\": \"\\ud83d\\udd79\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  clamp: {\n    keywords: [ \"tool\" ],\n    \"char\": \"\\ud83d\\udddc\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  minidisc: {\n    keywords: [ \"technology\", \"record\", \"data\", \"disk\", \"90s\" ],\n    \"char\": \"\\ud83d\\udcbd\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  floppy_disk: {\n    keywords: [ \"oldschool\", \"technology\", \"save\", \"90s\", \"80s\" ],\n    \"char\": \"\\ud83d\\udcbe\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  cd: {\n    keywords: [ \"technology\", \"dvd\", \"disk\", \"disc\", \"90s\" ],\n    \"char\": \"\\ud83d\\udcbf\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  dvd: {\n    keywords: [ \"cd\", \"disk\", \"disc\" ],\n    \"char\": \"\\ud83d\\udcc0\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  vhs: {\n    keywords: [ \"record\", \"video\", \"oldschool\", \"90s\", \"80s\" ],\n    \"char\": \"\\ud83d\\udcfc\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  camera: {\n    keywords: [ \"gadgets\", \"photography\" ],\n    \"char\": \"\\ud83d\\udcf7\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  camera_flash: {\n    keywords: [ \"photography\", \"gadgets\" ],\n    \"char\": \"\\ud83d\\udcf8\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  video_camera: {\n    keywords: [ \"film\", \"record\" ],\n    \"char\": \"\\ud83d\\udcf9\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  movie_camera: {\n    keywords: [ \"film\", \"record\" ],\n    \"char\": \"\\ud83c\\udfa5\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  film_projector: {\n    keywords: [ \"video\", \"tape\", \"record\", \"movie\" ],\n    \"char\": \"\\ud83d\\udcfd\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  film_strip: {\n    keywords: [ \"movie\" ],\n    \"char\": \"\\ud83c\\udf9e\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  telephone_receiver: {\n    keywords: [ \"technology\", \"communication\", \"dial\" ],\n    \"char\": \"\\ud83d\\udcde\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  phone: {\n    keywords: [ \"technology\", \"communication\", \"dial\", \"telephone\" ],\n    \"char\": \"\\u260e\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  pager: {\n    keywords: [ \"bbcall\", \"oldschool\", \"90s\" ],\n    \"char\": \"\\ud83d\\udcdf\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  fax: {\n    keywords: [ \"communication\", \"technology\" ],\n    \"char\": \"\\ud83d\\udce0\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  tv: {\n    keywords: [ \"technology\", \"program\", \"oldschool\", \"show\", \"television\" ],\n    \"char\": \"\\ud83d\\udcfa\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  radio: {\n    keywords: [ \"communication\", \"music\", \"podcast\", \"program\" ],\n    \"char\": \"\\ud83d\\udcfb\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  studio_microphone: {\n    keywords: [ \"sing\", \"recording\", \"artist\", \"talkshow\" ],\n    \"char\": \"\\ud83c\\udf99\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  level_slider: {\n    keywords: [ \"scale\" ],\n    \"char\": \"\\ud83c\\udf9a\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  control_knobs: {\n    keywords: [ \"dial\" ],\n    \"char\": \"\\ud83c\\udf9b\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  stopwatch: {\n    keywords: [ \"time\", \"deadline\" ],\n    \"char\": \"\\u23f1\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  timer_clock: {\n    keywords: [ \"alarm\" ],\n    \"char\": \"\\u23f2\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  alarm_clock: {\n    keywords: [ \"time\", \"wake\" ],\n    \"char\": \"\\u23f0\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  mantelpiece_clock: {\n    keywords: [ \"time\" ],\n    \"char\": \"\\ud83d\\udd70\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  hourglass_flowing_sand: {\n    keywords: [ \"oldschool\", \"time\", \"countdown\" ],\n    \"char\": \"\\u23f3\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  hourglass: {\n    keywords: [ \"time\", \"clock\", \"oldschool\", \"limit\", \"exam\", \"quiz\", \"test\" ],\n    \"char\": \"\\u231b\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  satellite: {\n    keywords: [ \"communication\", \"future\", \"radio\", \"space\" ],\n    \"char\": \"\\ud83d\\udce1\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  battery: {\n    keywords: [ \"power\", \"energy\", \"sustain\" ],\n    \"char\": \"\\ud83d\\udd0b\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  electric_plug: {\n    keywords: [ \"charger\", \"power\" ],\n    \"char\": \"\\ud83d\\udd0c\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  bulb: {\n    keywords: [ \"light\", \"electricity\", \"idea\" ],\n    \"char\": \"\\ud83d\\udca1\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  flashlight: {\n    keywords: [ \"dark\", \"camping\", \"sight\", \"night\" ],\n    \"char\": \"\\ud83d\\udd26\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  candle: {\n    keywords: [ \"fire\", \"wax\" ],\n    \"char\": \"\\ud83d\\udd6f\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  wastebasket: {\n    keywords: [ \"bin\", \"trash\", \"rubbish\", \"garbage\", \"toss\" ],\n    \"char\": \"\\ud83d\\uddd1\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  oil_drum: {\n    keywords: [ \"barrell\" ],\n    \"char\": \"\\ud83d\\udee2\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  money_with_wings: {\n    keywords: [ \"dollar\", \"bills\", \"payment\", \"sale\" ],\n    \"char\": \"\\ud83d\\udcb8\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  dollar: {\n    keywords: [ \"money\", \"sales\", \"bill\", \"currency\" ],\n    \"char\": \"\\ud83d\\udcb5\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  yen: {\n    keywords: [ \"money\", \"sales\", \"japanese\", \"dollar\", \"currency\" ],\n    \"char\": \"\\ud83d\\udcb4\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  euro: {\n    keywords: [ \"money\", \"sales\", \"dollar\", \"currency\" ],\n    \"char\": \"\\ud83d\\udcb6\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  pound: {\n    keywords: [ \"british\", \"sterling\", \"money\", \"sales\", \"bills\", \"uk\", \"england\", \"currency\" ],\n    \"char\": \"\\ud83d\\udcb7\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  moneybag: {\n    keywords: [ \"dollar\", \"payment\", \"coins\", \"sale\" ],\n    \"char\": \"\\ud83d\\udcb0\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  credit_card: {\n    keywords: [ \"money\", \"sales\", \"dollar\", \"bill\", \"payment\", \"shopping\" ],\n    \"char\": \"\\ud83d\\udcb3\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  gem: {\n    keywords: [ \"blue\", \"ruby\", \"diamond\", \"jewelry\" ],\n    \"char\": \"\\ud83d\\udc8e\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  balance_scale: {\n    keywords: [ \"law\", \"fairness\", \"weight\" ],\n    \"char\": \"\\u2696\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  wrench: {\n    keywords: [ \"tools\", \"diy\", \"ikea\", \"fix\", \"maintainer\" ],\n    \"char\": \"\\ud83d\\udd27\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  hammer: {\n    keywords: [ \"tools\", \"build\", \"create\" ],\n    \"char\": \"\\ud83d\\udd28\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  hammer_and_pick: {\n    keywords: [ \"tools\", \"build\", \"create\" ],\n    \"char\": \"\\u2692\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  hammer_and_wrench: {\n    keywords: [ \"tools\", \"build\", \"create\" ],\n    \"char\": \"\\ud83d\\udee0\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  pick: {\n    keywords: [ \"tools\", \"dig\" ],\n    \"char\": \"\\u26cf\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  nut_and_bolt: {\n    keywords: [ \"handy\", \"tools\", \"fix\" ],\n    \"char\": \"\\ud83d\\udd29\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  gear: {\n    keywords: [ \"cog\" ],\n    \"char\": \"\\u2699\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  chains: {\n    keywords: [ \"lock\", \"arrest\" ],\n    \"char\": \"\\u26d3\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  gun: {\n    keywords: [ \"violence\", \"weapon\", \"pistol\", \"revolver\" ],\n    \"char\": \"\\ud83d\\udd2b\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  bomb: {\n    keywords: [ \"boom\", \"explode\", \"explosion\", \"terrorism\" ],\n    \"char\": \"\\ud83d\\udca3\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  hocho: {\n    keywords: [ \"knife\", \"blade\", \"cutlery\", \"kitchen\", \"weapon\" ],\n    \"char\": \"\\ud83d\\udd2a\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  dagger: {\n    keywords: [ \"weapon\" ],\n    \"char\": \"\\ud83d\\udde1\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  crossed_swords: {\n    keywords: [ \"weapon\" ],\n    \"char\": \"\\u2694\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  shield: {\n    keywords: [ \"protection\", \"security\" ],\n    \"char\": \"\\ud83d\\udee1\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  smoking: {\n    keywords: [ \"kills\", \"tobacco\", \"cigarette\", \"joint\", \"smoke\" ],\n    \"char\": \"\\ud83d\\udeac\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  skull_and_crossbones: {\n    keywords: [ \"poison\", \"danger\", \"deadly\", \"scary\", \"death\", \"pirate\", \"evil\" ],\n    \"char\": \"\\u2620\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  coffin: {\n    keywords: [ \"vampire\", \"dead\", \"die\", \"death\", \"rip\", \"graveyard\", \"cemetery\", \"casket\", \"funeral\", \"box\" ],\n    \"char\": \"\\u26b0\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  funeral_urn: {\n    keywords: [ \"dead\", \"die\", \"death\", \"rip\", \"ashes\" ],\n    \"char\": \"\\u26b1\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  amphora: {\n    keywords: [ \"vase\", \"jar\" ],\n    \"char\": \"\\ud83c\\udffa\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  crystal_ball: {\n    keywords: [ \"disco\", \"party\", \"magic\", \"circus\", \"fortune_teller\" ],\n    \"char\": \"\\ud83d\\udd2e\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  prayer_beads: {\n    keywords: [ \"dhikr\", \"religious\" ],\n    \"char\": \"\\ud83d\\udcff\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  barber: {\n    keywords: [ \"hair\", \"salon\", \"style\" ],\n    \"char\": \"\\ud83d\\udc88\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  alembic: {\n    keywords: [ \"distilling\", \"science\", \"experiment\", \"chemistry\" ],\n    \"char\": \"\\u2697\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  telescope: {\n    keywords: [ \"stars\", \"space\", \"zoom\", \"science\", \"astronomy\" ],\n    \"char\": \"\\ud83d\\udd2d\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  microscope: {\n    keywords: [ \"laboratory\", \"experiment\", \"zoomin\", \"science\", \"study\" ],\n    \"char\": \"\\ud83d\\udd2c\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  hole: {\n    keywords: [ \"embarrassing\" ],\n    \"char\": \"\\ud83d\\udd73\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  pill: {\n    keywords: [ \"health\", \"medicine\", \"doctor\", \"pharmacy\", \"drug\" ],\n    \"char\": \"\\ud83d\\udc8a\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  syringe: {\n    keywords: [ \"health\", \"hospital\", \"drugs\", \"blood\", \"medicine\", \"needle\", \"doctor\", \"nurse\" ],\n    \"char\": \"\\ud83d\\udc89\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  thermometer: {\n    keywords: [ \"weather\", \"temperature\", \"hot\", \"cold\" ],\n    \"char\": \"\\ud83c\\udf21\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  label: {\n    keywords: [ \"sale\", \"tag\" ],\n    \"char\": \"\\ud83c\\udff7\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  bookmark: {\n    keywords: [ \"favorite\", \"label\", \"save\" ],\n    \"char\": \"\\ud83d\\udd16\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  toilet: {\n    keywords: [ \"restroom\", \"wc\", \"washroom\", \"bathroom\", \"potty\" ],\n    \"char\": \"\\ud83d\\udebd\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  shower: {\n    keywords: [ \"clean\", \"water\", \"bathroom\" ],\n    \"char\": \"\\ud83d\\udebf\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  bathtub: {\n    keywords: [ \"clean\", \"shower\", \"bathroom\" ],\n    \"char\": \"\\ud83d\\udec1\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  key: {\n    keywords: [ \"lock\", \"door\", \"password\" ],\n    \"char\": \"\\ud83d\\udd11\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  old_key: {\n    keywords: [ \"lock\", \"door\", \"password\" ],\n    \"char\": \"\\ud83d\\udddd\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  couch_and_lamp: {\n    keywords: [ \"read\", \"chill\" ],\n    \"char\": \"\\ud83d\\udecb\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  sleeping_bed: {\n    keywords: [ \"bed\", \"rest\" ],\n    \"char\": \"\\ud83d\\udecc\",\n    fitzpatrick_scale: true,\n    category: \"objects\"\n  },\n  bed: {\n    keywords: [ \"sleep\", \"rest\" ],\n    \"char\": \"\\ud83d\\udecf\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  door: {\n    keywords: [ \"house\", \"entry\", \"exit\" ],\n    \"char\": \"\\ud83d\\udeaa\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  bellhop_bell: {\n    keywords: [ \"service\" ],\n    \"char\": \"\\ud83d\\udece\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  framed_picture: {\n    keywords: [ \"photography\" ],\n    \"char\": \"\\ud83d\\uddbc\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  world_map: {\n    keywords: [ \"location\", \"direction\" ],\n    \"char\": \"\\ud83d\\uddfa\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  parasol_on_ground: {\n    keywords: [ \"weather\", \"summer\" ],\n    \"char\": \"\\u26f1\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  moyai: {\n    keywords: [ \"rock\", \"easter island\", \"moai\" ],\n    \"char\": \"\\ud83d\\uddff\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  shopping: {\n    keywords: [ \"mall\", \"buy\", \"purchase\" ],\n    \"char\": \"\\ud83d\\udecd\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  shopping_cart: {\n    keywords: [ \"trolley\" ],\n    \"char\": \"\\ud83d\\uded2\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  balloon: {\n    keywords: [ \"party\", \"celebration\", \"birthday\", \"circus\" ],\n    \"char\": \"\\ud83c\\udf88\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  flags: {\n    keywords: [ \"fish\", \"japanese\", \"koinobori\", \"carp\", \"banner\" ],\n    \"char\": \"\\ud83c\\udf8f\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  ribbon: {\n    keywords: [ \"decoration\", \"pink\", \"girl\", \"bowtie\" ],\n    \"char\": \"\\ud83c\\udf80\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  gift: {\n    keywords: [ \"present\", \"birthday\", \"christmas\", \"xmas\" ],\n    \"char\": \"\\ud83c\\udf81\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  confetti_ball: {\n    keywords: [ \"festival\", \"party\", \"birthday\", \"circus\" ],\n    \"char\": \"\\ud83c\\udf8a\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  tada: {\n    keywords: [ \"party\", \"congratulations\", \"birthday\", \"magic\", \"circus\", \"celebration\" ],\n    \"char\": \"\\ud83c\\udf89\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  dolls: {\n    keywords: [ \"japanese\", \"toy\", \"kimono\" ],\n    \"char\": \"\\ud83c\\udf8e\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  wind_chime: {\n    keywords: [ \"nature\", \"ding\", \"spring\", \"bell\" ],\n    \"char\": \"\\ud83c\\udf90\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  crossed_flags: {\n    keywords: [ \"japanese\", \"nation\", \"country\", \"border\" ],\n    \"char\": \"\\ud83c\\udf8c\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  izakaya_lantern: {\n    keywords: [ \"light\", \"paper\", \"halloween\", \"spooky\" ],\n    \"char\": \"\\ud83c\\udfee\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  email: {\n    keywords: [ \"letter\", \"postal\", \"inbox\", \"communication\" ],\n    \"char\": \"\\u2709\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  envelope_with_arrow: {\n    keywords: [ \"email\", \"communication\" ],\n    \"char\": \"\\ud83d\\udce9\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  incoming_envelope: {\n    keywords: [ \"email\", \"inbox\" ],\n    \"char\": \"\\ud83d\\udce8\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  \"e-mail\": {\n    keywords: [ \"communication\", \"inbox\" ],\n    \"char\": \"\\ud83d\\udce7\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  love_letter: {\n    keywords: [ \"email\", \"like\", \"affection\", \"envelope\", \"valentines\" ],\n    \"char\": \"\\ud83d\\udc8c\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  postbox: {\n    keywords: [ \"email\", \"letter\", \"envelope\" ],\n    \"char\": \"\\ud83d\\udcee\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  mailbox_closed: {\n    keywords: [ \"email\", \"communication\", \"inbox\" ],\n    \"char\": \"\\ud83d\\udcea\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  mailbox: {\n    keywords: [ \"email\", \"inbox\", \"communication\" ],\n    \"char\": \"\\ud83d\\udceb\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  mailbox_with_mail: {\n    keywords: [ \"email\", \"inbox\", \"communication\" ],\n    \"char\": \"\\ud83d\\udcec\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  mailbox_with_no_mail: {\n    keywords: [ \"email\", \"inbox\" ],\n    \"char\": \"\\ud83d\\udced\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  \"package\": {\n    keywords: [ \"mail\", \"gift\", \"cardboard\", \"box\", \"moving\" ],\n    \"char\": \"\\ud83d\\udce6\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  postal_horn: {\n    keywords: [ \"instrument\", \"music\" ],\n    \"char\": \"\\ud83d\\udcef\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  inbox_tray: {\n    keywords: [ \"email\", \"documents\" ],\n    \"char\": \"\\ud83d\\udce5\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  outbox_tray: {\n    keywords: [ \"inbox\", \"email\" ],\n    \"char\": \"\\ud83d\\udce4\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  scroll: {\n    keywords: [ \"documents\", \"ancient\", \"history\", \"paper\" ],\n    \"char\": \"\\ud83d\\udcdc\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  page_with_curl: {\n    keywords: [ \"documents\", \"office\", \"paper\" ],\n    \"char\": \"\\ud83d\\udcc3\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  bookmark_tabs: {\n    keywords: [ \"favorite\", \"save\", \"order\", \"tidy\" ],\n    \"char\": \"\\ud83d\\udcd1\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  bar_chart: {\n    keywords: [ \"graph\", \"presentation\", \"stats\" ],\n    \"char\": \"\\ud83d\\udcca\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  chart_with_upwards_trend: {\n    keywords: [ \"graph\", \"presentation\", \"stats\", \"recovery\", \"business\", \"economics\", \"money\", \"sales\", \"good\", \"success\" ],\n    \"char\": \"\\ud83d\\udcc8\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  chart_with_downwards_trend: {\n    keywords: [ \"graph\", \"presentation\", \"stats\", \"recession\", \"business\", \"economics\", \"money\", \"sales\", \"bad\", \"failure\" ],\n    \"char\": \"\\ud83d\\udcc9\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  page_facing_up: {\n    keywords: [ \"documents\", \"office\", \"paper\", \"information\" ],\n    \"char\": \"\\ud83d\\udcc4\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  date: {\n    keywords: [ \"calendar\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udcc5\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  calendar: {\n    keywords: [ \"schedule\", \"date\", \"planning\" ],\n    \"char\": \"\\ud83d\\udcc6\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  spiral_calendar: {\n    keywords: [ \"date\", \"schedule\", \"planning\" ],\n    \"char\": \"\\ud83d\\uddd3\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  card_index: {\n    keywords: [ \"business\", \"stationery\" ],\n    \"char\": \"\\ud83d\\udcc7\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  card_file_box: {\n    keywords: [ \"business\", \"stationery\" ],\n    \"char\": \"\\ud83d\\uddc3\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  ballot_box: {\n    keywords: [ \"election\", \"vote\" ],\n    \"char\": \"\\ud83d\\uddf3\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  file_cabinet: {\n    keywords: [ \"filing\", \"organizing\" ],\n    \"char\": \"\\ud83d\\uddc4\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  clipboard: {\n    keywords: [ \"stationery\", \"documents\" ],\n    \"char\": \"\\ud83d\\udccb\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  spiral_notepad: {\n    keywords: [ \"memo\", \"stationery\" ],\n    \"char\": \"\\ud83d\\uddd2\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  file_folder: {\n    keywords: [ \"documents\", \"business\", \"office\" ],\n    \"char\": \"\\ud83d\\udcc1\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  open_file_folder: {\n    keywords: [ \"documents\", \"load\" ],\n    \"char\": \"\\ud83d\\udcc2\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  card_index_dividers: {\n    keywords: [ \"organizing\", \"business\", \"stationery\" ],\n    \"char\": \"\\ud83d\\uddc2\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  newspaper_roll: {\n    keywords: [ \"press\", \"headline\" ],\n    \"char\": \"\\ud83d\\uddde\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  newspaper: {\n    keywords: [ \"press\", \"headline\" ],\n    \"char\": \"\\ud83d\\udcf0\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  notebook: {\n    keywords: [ \"stationery\", \"record\", \"notes\", \"paper\", \"study\" ],\n    \"char\": \"\\ud83d\\udcd3\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  closed_book: {\n    keywords: [ \"read\", \"library\", \"knowledge\", \"textbook\", \"learn\" ],\n    \"char\": \"\\ud83d\\udcd5\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  green_book: {\n    keywords: [ \"read\", \"library\", \"knowledge\", \"study\" ],\n    \"char\": \"\\ud83d\\udcd7\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  blue_book: {\n    keywords: [ \"read\", \"library\", \"knowledge\", \"learn\", \"study\" ],\n    \"char\": \"\\ud83d\\udcd8\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  orange_book: {\n    keywords: [ \"read\", \"library\", \"knowledge\", \"textbook\", \"study\" ],\n    \"char\": \"\\ud83d\\udcd9\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  notebook_with_decorative_cover: {\n    keywords: [ \"classroom\", \"notes\", \"record\", \"paper\", \"study\" ],\n    \"char\": \"\\ud83d\\udcd4\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  ledger: {\n    keywords: [ \"notes\", \"paper\" ],\n    \"char\": \"\\ud83d\\udcd2\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  books: {\n    keywords: [ \"literature\", \"library\", \"study\" ],\n    \"char\": \"\\ud83d\\udcda\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  open_book: {\n    keywords: [ \"book\", \"read\", \"library\", \"knowledge\", \"literature\", \"learn\", \"study\" ],\n    \"char\": \"\\ud83d\\udcd6\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  link: {\n    keywords: [ \"rings\", \"url\" ],\n    \"char\": \"\\ud83d\\udd17\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  paperclip: {\n    keywords: [ \"documents\", \"stationery\" ],\n    \"char\": \"\\ud83d\\udcce\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  paperclips: {\n    keywords: [ \"documents\", \"stationery\" ],\n    \"char\": \"\\ud83d\\udd87\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  scissors: {\n    keywords: [ \"stationery\", \"cut\" ],\n    \"char\": \"\\u2702\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  triangular_ruler: {\n    keywords: [ \"stationery\", \"math\", \"architect\", \"sketch\" ],\n    \"char\": \"\\ud83d\\udcd0\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  straight_ruler: {\n    keywords: [ \"stationery\", \"calculate\", \"length\", \"math\", \"school\", \"drawing\", \"architect\", \"sketch\" ],\n    \"char\": \"\\ud83d\\udccf\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  pushpin: {\n    keywords: [ \"stationery\", \"mark\", \"here\" ],\n    \"char\": \"\\ud83d\\udccc\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  round_pushpin: {\n    keywords: [ \"stationery\", \"location\", \"map\", \"here\" ],\n    \"char\": \"\\ud83d\\udccd\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  triangular_flag_on_post: {\n    keywords: [ \"mark\", \"milestone\", \"place\" ],\n    \"char\": \"\\ud83d\\udea9\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  white_flag: {\n    keywords: [ \"losing\", \"loser\", \"lost\", \"surrender\", \"give up\", \"fail\" ],\n    \"char\": \"\\ud83c\\udff3\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  black_flag: {\n    keywords: [ \"pirate\" ],\n    \"char\": \"\\ud83c\\udff4\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  rainbow_flag: {\n    keywords: [ \"flag\", \"rainbow\", \"pride\", \"gay\", \"lgbt\", \"glbt\", \"queer\", \"homosexual\", \"lesbian\", \"bisexual\", \"transgender\" ],\n    \"char\": \"\\ud83c\\udff3\\ufe0f\\u200d\\ud83c\\udf08\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  closed_lock_with_key: {\n    keywords: [ \"security\", \"privacy\" ],\n    \"char\": \"\\ud83d\\udd10\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  lock: {\n    keywords: [ \"security\", \"password\", \"padlock\" ],\n    \"char\": \"\\ud83d\\udd12\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  unlock: {\n    keywords: [ \"privacy\", \"security\" ],\n    \"char\": \"\\ud83d\\udd13\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  lock_with_ink_pen: {\n    keywords: [ \"security\", \"secret\" ],\n    \"char\": \"\\ud83d\\udd0f\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  pen: {\n    keywords: [ \"stationery\", \"writing\", \"write\" ],\n    \"char\": \"\\ud83d\\udd8a\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  fountain_pen: {\n    keywords: [ \"stationery\", \"writing\", \"write\" ],\n    \"char\": \"\\ud83d\\udd8b\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  black_nib: {\n    keywords: [ \"pen\", \"stationery\", \"writing\", \"write\" ],\n    \"char\": \"\\u2712\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  memo: {\n    keywords: [ \"write\", \"documents\", \"stationery\", \"pencil\", \"paper\", \"writing\", \"legal\", \"exam\", \"quiz\", \"test\", \"study\", \"compose\" ],\n    \"char\": \"\\ud83d\\udcdd\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  pencil2: {\n    keywords: [ \"stationery\", \"write\", \"paper\", \"writing\", \"school\", \"study\" ],\n    \"char\": \"\\u270f\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  crayon: {\n    keywords: [ \"drawing\", \"creativity\" ],\n    \"char\": \"\\ud83d\\udd8d\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  paintbrush: {\n    keywords: [ \"drawing\", \"creativity\", \"art\" ],\n    \"char\": \"\\ud83d\\udd8c\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  mag: {\n    keywords: [ \"search\", \"zoom\", \"find\", \"detective\" ],\n    \"char\": \"\\ud83d\\udd0d\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  mag_right: {\n    keywords: [ \"search\", \"zoom\", \"find\", \"detective\" ],\n    \"char\": \"\\ud83d\\udd0e\",\n    fitzpatrick_scale: false,\n    category: \"objects\"\n  },\n  heart: {\n    keywords: [ \"love\", \"like\", \"valentines\" ],\n    \"char\": \"\\u2764\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  orange_heart: {\n    keywords: [ \"love\", \"like\", \"affection\", \"valentines\" ],\n    \"char\": \"\\ud83e\\udde1\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  yellow_heart: {\n    keywords: [ \"love\", \"like\", \"affection\", \"valentines\" ],\n    \"char\": \"\\ud83d\\udc9b\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  green_heart: {\n    keywords: [ \"love\", \"like\", \"affection\", \"valentines\" ],\n    \"char\": \"\\ud83d\\udc9a\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  blue_heart: {\n    keywords: [ \"love\", \"like\", \"affection\", \"valentines\" ],\n    \"char\": \"\\ud83d\\udc99\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  purple_heart: {\n    keywords: [ \"love\", \"like\", \"affection\", \"valentines\" ],\n    \"char\": \"\\ud83d\\udc9c\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  black_heart: {\n    keywords: [ \"evil\" ],\n    \"char\": \"\\ud83d\\udda4\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  broken_heart: {\n    keywords: [ \"sad\", \"sorry\", \"break\", \"heart\", \"heartbreak\" ],\n    \"char\": \"\\ud83d\\udc94\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  heavy_heart_exclamation: {\n    keywords: [ \"decoration\", \"love\" ],\n    \"char\": \"\\u2763\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  two_hearts: {\n    keywords: [ \"love\", \"like\", \"affection\", \"valentines\", \"heart\" ],\n    \"char\": \"\\ud83d\\udc95\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  revolving_hearts: {\n    keywords: [ \"love\", \"like\", \"affection\", \"valentines\" ],\n    \"char\": \"\\ud83d\\udc9e\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  heartbeat: {\n    keywords: [ \"love\", \"like\", \"affection\", \"valentines\", \"pink\", \"heart\" ],\n    \"char\": \"\\ud83d\\udc93\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  heartpulse: {\n    keywords: [ \"like\", \"love\", \"affection\", \"valentines\", \"pink\" ],\n    \"char\": \"\\ud83d\\udc97\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  sparkling_heart: {\n    keywords: [ \"love\", \"like\", \"affection\", \"valentines\" ],\n    \"char\": \"\\ud83d\\udc96\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  cupid: {\n    keywords: [ \"love\", \"like\", \"heart\", \"affection\", \"valentines\" ],\n    \"char\": \"\\ud83d\\udc98\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  gift_heart: {\n    keywords: [ \"love\", \"valentines\" ],\n    \"char\": \"\\ud83d\\udc9d\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  heart_decoration: {\n    keywords: [ \"purple-square\", \"love\", \"like\" ],\n    \"char\": \"\\ud83d\\udc9f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  peace_symbol: {\n    keywords: [ \"hippie\" ],\n    \"char\": \"\\u262e\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  latin_cross: {\n    keywords: [ \"christianity\" ],\n    \"char\": \"\\u271d\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  star_and_crescent: {\n    keywords: [ \"islam\" ],\n    \"char\": \"\\u262a\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  om: {\n    keywords: [ \"hinduism\", \"buddhism\", \"sikhism\", \"jainism\" ],\n    \"char\": \"\\ud83d\\udd49\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  wheel_of_dharma: {\n    keywords: [ \"hinduism\", \"buddhism\", \"sikhism\", \"jainism\" ],\n    \"char\": \"\\u2638\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  star_of_david: {\n    keywords: [ \"judaism\" ],\n    \"char\": \"\\u2721\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  six_pointed_star: {\n    keywords: [ \"purple-square\", \"religion\", \"jewish\", \"hexagram\" ],\n    \"char\": \"\\ud83d\\udd2f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  menorah: {\n    keywords: [ \"hanukkah\", \"candles\", \"jewish\" ],\n    \"char\": \"\\ud83d\\udd4e\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  yin_yang: {\n    keywords: [ \"balance\" ],\n    \"char\": \"\\u262f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  orthodox_cross: {\n    keywords: [ \"suppedaneum\", \"religion\" ],\n    \"char\": \"\\u2626\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  place_of_worship: {\n    keywords: [ \"religion\", \"church\", \"temple\", \"prayer\" ],\n    \"char\": \"\\ud83d\\uded0\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  ophiuchus: {\n    keywords: [ \"sign\", \"purple-square\", \"constellation\", \"astrology\" ],\n    \"char\": \"\\u26ce\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  aries: {\n    keywords: [ \"sign\", \"purple-square\", \"zodiac\", \"astrology\" ],\n    \"char\": \"\\u2648\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  taurus: {\n    keywords: [ \"purple-square\", \"sign\", \"zodiac\", \"astrology\" ],\n    \"char\": \"\\u2649\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  gemini: {\n    keywords: [ \"sign\", \"zodiac\", \"purple-square\", \"astrology\" ],\n    \"char\": \"\\u264a\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  cancer: {\n    keywords: [ \"sign\", \"zodiac\", \"purple-square\", \"astrology\" ],\n    \"char\": \"\\u264b\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  leo: {\n    keywords: [ \"sign\", \"purple-square\", \"zodiac\", \"astrology\" ],\n    \"char\": \"\\u264c\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  virgo: {\n    keywords: [ \"sign\", \"zodiac\", \"purple-square\", \"astrology\" ],\n    \"char\": \"\\u264d\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  libra: {\n    keywords: [ \"sign\", \"purple-square\", \"zodiac\", \"astrology\" ],\n    \"char\": \"\\u264e\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  scorpius: {\n    keywords: [ \"sign\", \"zodiac\", \"purple-square\", \"astrology\", \"scorpio\" ],\n    \"char\": \"\\u264f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  sagittarius: {\n    keywords: [ \"sign\", \"zodiac\", \"purple-square\", \"astrology\" ],\n    \"char\": \"\\u2650\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  capricorn: {\n    keywords: [ \"sign\", \"zodiac\", \"purple-square\", \"astrology\" ],\n    \"char\": \"\\u2651\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  aquarius: {\n    keywords: [ \"sign\", \"purple-square\", \"zodiac\", \"astrology\" ],\n    \"char\": \"\\u2652\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  pisces: {\n    keywords: [ \"purple-square\", \"sign\", \"zodiac\", \"astrology\" ],\n    \"char\": \"\\u2653\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  id: {\n    keywords: [ \"purple-square\", \"words\" ],\n    \"char\": \"\\ud83c\\udd94\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  atom_symbol: {\n    keywords: [ \"science\", \"physics\", \"chemistry\" ],\n    \"char\": \"\\u269b\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  u7a7a: {\n    keywords: [ \"kanji\", \"japanese\", \"chinese\", \"empty\", \"sky\", \"blue-square\" ],\n    \"char\": \"\\ud83c\\ude33\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  u5272: {\n    keywords: [ \"cut\", \"divide\", \"chinese\", \"kanji\", \"pink-square\" ],\n    \"char\": \"\\ud83c\\ude39\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  radioactive: {\n    keywords: [ \"nuclear\", \"danger\" ],\n    \"char\": \"\\u2622\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  biohazard: {\n    keywords: [ \"danger\" ],\n    \"char\": \"\\u2623\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  mobile_phone_off: {\n    keywords: [ \"mute\", \"orange-square\", \"silence\", \"quiet\" ],\n    \"char\": \"\\ud83d\\udcf4\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  vibration_mode: {\n    keywords: [ \"orange-square\", \"phone\" ],\n    \"char\": \"\\ud83d\\udcf3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  u6709: {\n    keywords: [ \"orange-square\", \"chinese\", \"have\", \"kanji\" ],\n    \"char\": \"\\ud83c\\ude36\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  u7121: {\n    keywords: [ \"nothing\", \"chinese\", \"kanji\", \"japanese\", \"orange-square\" ],\n    \"char\": \"\\ud83c\\ude1a\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  u7533: {\n    keywords: [ \"chinese\", \"japanese\", \"kanji\", \"orange-square\" ],\n    \"char\": \"\\ud83c\\ude38\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  u55b6: {\n    keywords: [ \"japanese\", \"opening hours\", \"orange-square\" ],\n    \"char\": \"\\ud83c\\ude3a\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  u6708: {\n    keywords: [ \"chinese\", \"month\", \"moon\", \"japanese\", \"orange-square\", \"kanji\" ],\n    \"char\": \"\\ud83c\\ude37\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  eight_pointed_black_star: {\n    keywords: [ \"orange-square\", \"shape\", \"polygon\" ],\n    \"char\": \"\\u2734\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  vs: {\n    keywords: [ \"words\", \"orange-square\" ],\n    \"char\": \"\\ud83c\\udd9a\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  accept: {\n    keywords: [ \"ok\", \"good\", \"chinese\", \"kanji\", \"agree\", \"yes\", \"orange-circle\" ],\n    \"char\": \"\\ud83c\\ude51\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  white_flower: {\n    keywords: [ \"japanese\", \"spring\" ],\n    \"char\": \"\\ud83d\\udcae\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  ideograph_advantage: {\n    keywords: [ \"chinese\", \"kanji\", \"obtain\", \"get\", \"circle\" ],\n    \"char\": \"\\ud83c\\ude50\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  secret: {\n    keywords: [ \"privacy\", \"chinese\", \"sshh\", \"kanji\", \"red-circle\" ],\n    \"char\": \"\\u3299\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  congratulations: {\n    keywords: [ \"chinese\", \"kanji\", \"japanese\", \"red-circle\" ],\n    \"char\": \"\\u3297\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  u5408: {\n    keywords: [ \"japanese\", \"chinese\", \"join\", \"kanji\", \"red-square\" ],\n    \"char\": \"\\ud83c\\ude34\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  u6e80: {\n    keywords: [ \"full\", \"chinese\", \"japanese\", \"red-square\", \"kanji\" ],\n    \"char\": \"\\ud83c\\ude35\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  u7981: {\n    keywords: [ \"kanji\", \"japanese\", \"chinese\", \"forbidden\", \"limit\", \"restricted\", \"red-square\" ],\n    \"char\": \"\\ud83c\\ude32\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  a: {\n    keywords: [ \"red-square\", \"alphabet\", \"letter\" ],\n    \"char\": \"\\ud83c\\udd70\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  b: {\n    keywords: [ \"red-square\", \"alphabet\", \"letter\" ],\n    \"char\": \"\\ud83c\\udd71\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  ab: {\n    keywords: [ \"red-square\", \"alphabet\" ],\n    \"char\": \"\\ud83c\\udd8e\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  cl: {\n    keywords: [ \"alphabet\", \"words\", \"red-square\" ],\n    \"char\": \"\\ud83c\\udd91\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  o2: {\n    keywords: [ \"alphabet\", \"red-square\", \"letter\" ],\n    \"char\": \"\\ud83c\\udd7e\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  sos: {\n    keywords: [ \"help\", \"red-square\", \"words\", \"emergency\", \"911\" ],\n    \"char\": \"\\ud83c\\udd98\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  no_entry: {\n    keywords: [ \"limit\", \"security\", \"privacy\", \"bad\", \"denied\", \"stop\", \"circle\" ],\n    \"char\": \"\\u26d4\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  name_badge: {\n    keywords: [ \"fire\", \"forbid\" ],\n    \"char\": \"\\ud83d\\udcdb\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  no_entry_sign: {\n    keywords: [ \"forbid\", \"stop\", \"limit\", \"denied\", \"disallow\", \"circle\" ],\n    \"char\": \"\\ud83d\\udeab\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  x: {\n    keywords: [ \"no\", \"delete\", \"remove\", \"cancel\" ],\n    \"char\": \"\\u274c\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  o: {\n    keywords: [ \"circle\", \"round\" ],\n    \"char\": \"\\u2b55\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  stop_sign: {\n    keywords: [ \"stop\" ],\n    \"char\": \"\\ud83d\\uded1\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  anger: {\n    keywords: [ \"angry\", \"mad\" ],\n    \"char\": \"\\ud83d\\udca2\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  hotsprings: {\n    keywords: [ \"bath\", \"warm\", \"relax\" ],\n    \"char\": \"\\u2668\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  no_pedestrians: {\n    keywords: [ \"rules\", \"crossing\", \"walking\", \"circle\" ],\n    \"char\": \"\\ud83d\\udeb7\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  do_not_litter: {\n    keywords: [ \"trash\", \"bin\", \"garbage\", \"circle\" ],\n    \"char\": \"\\ud83d\\udeaf\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  no_bicycles: {\n    keywords: [ \"cyclist\", \"prohibited\", \"circle\" ],\n    \"char\": \"\\ud83d\\udeb3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  \"non-potable_water\": {\n    keywords: [ \"drink\", \"faucet\", \"tap\", \"circle\" ],\n    \"char\": \"\\ud83d\\udeb1\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  underage: {\n    keywords: [ \"18\", \"drink\", \"pub\", \"night\", \"minor\", \"circle\" ],\n    \"char\": \"\\ud83d\\udd1e\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  no_mobile_phones: {\n    keywords: [ \"iphone\", \"mute\", \"circle\" ],\n    \"char\": \"\\ud83d\\udcf5\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  exclamation: {\n    keywords: [ \"heavy_exclamation_mark\", \"danger\", \"surprise\", \"punctuation\", \"wow\", \"warning\" ],\n    \"char\": \"\\u2757\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  grey_exclamation: {\n    keywords: [ \"surprise\", \"punctuation\", \"gray\", \"wow\", \"warning\" ],\n    \"char\": \"\\u2755\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  question: {\n    keywords: [ \"doubt\", \"confused\" ],\n    \"char\": \"\\u2753\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  grey_question: {\n    keywords: [ \"doubts\", \"gray\", \"huh\", \"confused\" ],\n    \"char\": \"\\u2754\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  bangbang: {\n    keywords: [ \"exclamation\", \"surprise\" ],\n    \"char\": \"\\u203c\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  interrobang: {\n    keywords: [ \"wat\", \"punctuation\", \"surprise\" ],\n    \"char\": \"\\u2049\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  100: {\n    keywords: [ \"score\", \"perfect\", \"numbers\", \"century\", \"exam\", \"quiz\", \"test\", \"pass\", \"hundred\" ],\n    \"char\": \"\\ud83d\\udcaf\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  low_brightness: {\n    keywords: [ \"sun\", \"afternoon\", \"warm\", \"summer\" ],\n    \"char\": \"\\ud83d\\udd05\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  high_brightness: {\n    keywords: [ \"sun\", \"light\" ],\n    \"char\": \"\\ud83d\\udd06\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  trident: {\n    keywords: [ \"weapon\", \"spear\" ],\n    \"char\": \"\\ud83d\\udd31\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  fleur_de_lis: {\n    keywords: [ \"decorative\", \"scout\" ],\n    \"char\": \"\\u269c\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  part_alternation_mark: {\n    keywords: [ \"graph\", \"presentation\", \"stats\", \"business\", \"economics\", \"bad\" ],\n    \"char\": \"\\u303d\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  warning: {\n    keywords: [ \"exclamation\", \"wip\", \"alert\", \"error\", \"problem\", \"issue\" ],\n    \"char\": \"\\u26a0\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  children_crossing: {\n    keywords: [ \"school\", \"warning\", \"danger\", \"sign\", \"driving\", \"yellow-diamond\" ],\n    \"char\": \"\\ud83d\\udeb8\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  beginner: {\n    keywords: [ \"badge\", \"shield\" ],\n    \"char\": \"\\ud83d\\udd30\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  recycle: {\n    keywords: [ \"arrow\", \"environment\", \"garbage\", \"trash\" ],\n    \"char\": \"\\u267b\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  u6307: {\n    keywords: [ \"chinese\", \"point\", \"green-square\", \"kanji\" ],\n    \"char\": \"\\ud83c\\ude2f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  chart: {\n    keywords: [ \"green-square\", \"graph\", \"presentation\", \"stats\" ],\n    \"char\": \"\\ud83d\\udcb9\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  sparkle: {\n    keywords: [ \"stars\", \"green-square\", \"awesome\", \"good\", \"fireworks\" ],\n    \"char\": \"\\u2747\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  eight_spoked_asterisk: {\n    keywords: [ \"star\", \"sparkle\", \"green-square\" ],\n    \"char\": \"\\u2733\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  negative_squared_cross_mark: {\n    keywords: [ \"x\", \"green-square\", \"no\", \"deny\" ],\n    \"char\": \"\\u274e\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  white_check_mark: {\n    keywords: [ \"green-square\", \"ok\", \"agree\", \"vote\", \"election\", \"answer\", \"tick\" ],\n    \"char\": \"\\u2705\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  diamond_shape_with_a_dot_inside: {\n    keywords: [ \"jewel\", \"blue\", \"gem\", \"crystal\", \"fancy\" ],\n    \"char\": \"\\ud83d\\udca0\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  cyclone: {\n    keywords: [ \"weather\", \"swirl\", \"blue\", \"cloud\", \"vortex\", \"spiral\", \"whirlpool\", \"spin\", \"tornado\", \"hurricane\", \"typhoon\" ],\n    \"char\": \"\\ud83c\\udf00\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  loop: {\n    keywords: [ \"tape\", \"cassette\" ],\n    \"char\": \"\\u27bf\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  globe_with_meridians: {\n    keywords: [ \"earth\", \"international\", \"world\", \"internet\", \"interweb\", \"i18n\" ],\n    \"char\": \"\\ud83c\\udf10\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  m: {\n    keywords: [ \"alphabet\", \"blue-circle\", \"letter\" ],\n    \"char\": \"\\u24c2\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  atm: {\n    keywords: [ \"money\", \"sales\", \"cash\", \"blue-square\", \"payment\", \"bank\" ],\n    \"char\": \"\\ud83c\\udfe7\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  sa: {\n    keywords: [ \"japanese\", \"blue-square\", \"katakana\" ],\n    \"char\": \"\\ud83c\\ude02\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  passport_control: {\n    keywords: [ \"custom\", \"blue-square\" ],\n    \"char\": \"\\ud83d\\udec2\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  customs: {\n    keywords: [ \"passport\", \"border\", \"blue-square\" ],\n    \"char\": \"\\ud83d\\udec3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  baggage_claim: {\n    keywords: [ \"blue-square\", \"airport\", \"transport\" ],\n    \"char\": \"\\ud83d\\udec4\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  left_luggage: {\n    keywords: [ \"blue-square\", \"travel\" ],\n    \"char\": \"\\ud83d\\udec5\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  wheelchair: {\n    keywords: [ \"blue-square\", \"disabled\", \"a11y\", \"accessibility\" ],\n    \"char\": \"\\u267f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  no_smoking: {\n    keywords: [ \"cigarette\", \"blue-square\", \"smell\", \"smoke\" ],\n    \"char\": \"\\ud83d\\udead\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  wc: {\n    keywords: [ \"toilet\", \"restroom\", \"blue-square\" ],\n    \"char\": \"\\ud83d\\udebe\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  parking: {\n    keywords: [ \"cars\", \"blue-square\", \"alphabet\", \"letter\" ],\n    \"char\": \"\\ud83c\\udd7f\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  potable_water: {\n    keywords: [ \"blue-square\", \"liquid\", \"restroom\", \"cleaning\", \"faucet\" ],\n    \"char\": \"\\ud83d\\udeb0\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  mens: {\n    keywords: [ \"toilet\", \"restroom\", \"wc\", \"blue-square\", \"gender\", \"male\" ],\n    \"char\": \"\\ud83d\\udeb9\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  womens: {\n    keywords: [ \"purple-square\", \"woman\", \"female\", \"toilet\", \"loo\", \"restroom\", \"gender\" ],\n    \"char\": \"\\ud83d\\udeba\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  baby_symbol: {\n    keywords: [ \"orange-square\", \"child\" ],\n    \"char\": \"\\ud83d\\udebc\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  restroom: {\n    keywords: [ \"blue-square\", \"toilet\", \"refresh\", \"wc\", \"gender\" ],\n    \"char\": \"\\ud83d\\udebb\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  put_litter_in_its_place: {\n    keywords: [ \"blue-square\", \"sign\", \"human\", \"info\" ],\n    \"char\": \"\\ud83d\\udeae\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  cinema: {\n    keywords: [ \"blue-square\", \"record\", \"film\", \"movie\", \"curtain\", \"stage\", \"theater\" ],\n    \"char\": \"\\ud83c\\udfa6\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  signal_strength: {\n    keywords: [ \"blue-square\", \"reception\", \"phone\", \"internet\", \"connection\", \"wifi\", \"bluetooth\", \"bars\" ],\n    \"char\": \"\\ud83d\\udcf6\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  koko: {\n    keywords: [ \"blue-square\", \"here\", \"katakana\", \"japanese\", \"destination\" ],\n    \"char\": \"\\ud83c\\ude01\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  ng: {\n    keywords: [ \"blue-square\", \"words\", \"shape\", \"icon\" ],\n    \"char\": \"\\ud83c\\udd96\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  ok: {\n    keywords: [ \"good\", \"agree\", \"yes\", \"blue-square\" ],\n    \"char\": \"\\ud83c\\udd97\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  up: {\n    keywords: [ \"blue-square\", \"above\", \"high\" ],\n    \"char\": \"\\ud83c\\udd99\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  cool: {\n    keywords: [ \"words\", \"blue-square\" ],\n    \"char\": \"\\ud83c\\udd92\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  \"new\": {\n    keywords: [ \"blue-square\", \"words\", \"start\" ],\n    \"char\": \"\\ud83c\\udd95\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  free: {\n    keywords: [ \"blue-square\", \"words\" ],\n    \"char\": \"\\ud83c\\udd93\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  zero: {\n    keywords: [ \"0\", \"numbers\", \"blue-square\", \"null\" ],\n    \"char\": \"0\\ufe0f\\u20e3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  one: {\n    keywords: [ \"blue-square\", \"numbers\", \"1\" ],\n    \"char\": \"1\\ufe0f\\u20e3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  two: {\n    keywords: [ \"numbers\", \"2\", \"prime\", \"blue-square\" ],\n    \"char\": \"2\\ufe0f\\u20e3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  three: {\n    keywords: [ \"3\", \"numbers\", \"prime\", \"blue-square\" ],\n    \"char\": \"3\\ufe0f\\u20e3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  four: {\n    keywords: [ \"4\", \"numbers\", \"blue-square\" ],\n    \"char\": \"4\\ufe0f\\u20e3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  five: {\n    keywords: [ \"5\", \"numbers\", \"blue-square\", \"prime\" ],\n    \"char\": \"5\\ufe0f\\u20e3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  six: {\n    keywords: [ \"6\", \"numbers\", \"blue-square\" ],\n    \"char\": \"6\\ufe0f\\u20e3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  seven: {\n    keywords: [ \"7\", \"numbers\", \"blue-square\", \"prime\" ],\n    \"char\": \"7\\ufe0f\\u20e3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  eight: {\n    keywords: [ \"8\", \"blue-square\", \"numbers\" ],\n    \"char\": \"8\\ufe0f\\u20e3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  nine: {\n    keywords: [ \"blue-square\", \"numbers\", \"9\" ],\n    \"char\": \"9\\ufe0f\\u20e3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  keycap_ten: {\n    keywords: [ \"numbers\", \"10\", \"blue-square\" ],\n    \"char\": \"\\ud83d\\udd1f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  asterisk: {\n    keywords: [ \"star\", \"keycap\" ],\n    \"char\": \"*\\u20e3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  1234: {\n    keywords: [ \"numbers\", \"blue-square\" ],\n    \"char\": \"\\ud83d\\udd22\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  eject_button: {\n    keywords: [ \"blue-square\" ],\n    \"char\": \"\\u23cf\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_forward: {\n    keywords: [ \"blue-square\", \"right\", \"direction\", \"play\" ],\n    \"char\": \"\\u25b6\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  pause_button: {\n    keywords: [ \"pause\", \"blue-square\" ],\n    \"char\": \"\\u23f8\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  next_track_button: {\n    keywords: [ \"forward\", \"next\", \"blue-square\" ],\n    \"char\": \"\\u23ed\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  stop_button: {\n    keywords: [ \"blue-square\" ],\n    \"char\": \"\\u23f9\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  record_button: {\n    keywords: [ \"blue-square\" ],\n    \"char\": \"\\u23fa\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  play_or_pause_button: {\n    keywords: [ \"blue-square\", \"play\", \"pause\" ],\n    \"char\": \"\\u23ef\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  previous_track_button: {\n    keywords: [ \"backward\" ],\n    \"char\": \"\\u23ee\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  fast_forward: {\n    keywords: [ \"blue-square\", \"play\", \"speed\", \"continue\" ],\n    \"char\": \"\\u23e9\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  rewind: {\n    keywords: [ \"play\", \"blue-square\" ],\n    \"char\": \"\\u23ea\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  twisted_rightwards_arrows: {\n    keywords: [ \"blue-square\", \"shuffle\", \"music\", \"random\" ],\n    \"char\": \"\\ud83d\\udd00\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  repeat: {\n    keywords: [ \"loop\", \"record\" ],\n    \"char\": \"\\ud83d\\udd01\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  repeat_one: {\n    keywords: [ \"blue-square\", \"loop\" ],\n    \"char\": \"\\ud83d\\udd02\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_backward: {\n    keywords: [ \"blue-square\", \"left\", \"direction\" ],\n    \"char\": \"\\u25c0\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_up_small: {\n    keywords: [ \"blue-square\", \"triangle\", \"direction\", \"point\", \"forward\", \"top\" ],\n    \"char\": \"\\ud83d\\udd3c\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_down_small: {\n    keywords: [ \"blue-square\", \"direction\", \"bottom\" ],\n    \"char\": \"\\ud83d\\udd3d\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_double_up: {\n    keywords: [ \"blue-square\", \"direction\", \"top\" ],\n    \"char\": \"\\u23eb\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_double_down: {\n    keywords: [ \"blue-square\", \"direction\", \"bottom\" ],\n    \"char\": \"\\u23ec\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_right: {\n    keywords: [ \"blue-square\", \"next\" ],\n    \"char\": \"\\u27a1\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_left: {\n    keywords: [ \"blue-square\", \"previous\", \"back\" ],\n    \"char\": \"\\u2b05\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_up: {\n    keywords: [ \"blue-square\", \"continue\", \"top\", \"direction\" ],\n    \"char\": \"\\u2b06\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_down: {\n    keywords: [ \"blue-square\", \"direction\", \"bottom\" ],\n    \"char\": \"\\u2b07\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_upper_right: {\n    keywords: [ \"blue-square\", \"point\", \"direction\", \"diagonal\", \"northeast\" ],\n    \"char\": \"\\u2197\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_lower_right: {\n    keywords: [ \"blue-square\", \"direction\", \"diagonal\", \"southeast\" ],\n    \"char\": \"\\u2198\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_lower_left: {\n    keywords: [ \"blue-square\", \"direction\", \"diagonal\", \"southwest\" ],\n    \"char\": \"\\u2199\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_upper_left: {\n    keywords: [ \"blue-square\", \"point\", \"direction\", \"diagonal\", \"northwest\" ],\n    \"char\": \"\\u2196\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_up_down: {\n    keywords: [ \"blue-square\", \"direction\", \"way\", \"vertical\" ],\n    \"char\": \"\\u2195\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  left_right_arrow: {\n    keywords: [ \"shape\", \"direction\", \"horizontal\", \"sideways\" ],\n    \"char\": \"\\u2194\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrows_counterclockwise: {\n    keywords: [ \"blue-square\", \"sync\", \"cycle\" ],\n    \"char\": \"\\ud83d\\udd04\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_right_hook: {\n    keywords: [ \"blue-square\", \"return\", \"rotate\", \"direction\" ],\n    \"char\": \"\\u21aa\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  leftwards_arrow_with_hook: {\n    keywords: [ \"back\", \"return\", \"blue-square\", \"undo\", \"enter\" ],\n    \"char\": \"\\u21a9\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_heading_up: {\n    keywords: [ \"blue-square\", \"direction\", \"top\" ],\n    \"char\": \"\\u2934\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrow_heading_down: {\n    keywords: [ \"blue-square\", \"direction\", \"bottom\" ],\n    \"char\": \"\\u2935\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  hash: {\n    keywords: [ \"symbol\", \"blue-square\", \"twitter\" ],\n    \"char\": \"#\\ufe0f\\u20e3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  information_source: {\n    keywords: [ \"blue-square\", \"alphabet\", \"letter\" ],\n    \"char\": \"\\u2139\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  abc: {\n    keywords: [ \"blue-square\", \"alphabet\" ],\n    \"char\": \"\\ud83d\\udd24\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  abcd: {\n    keywords: [ \"blue-square\", \"alphabet\" ],\n    \"char\": \"\\ud83d\\udd21\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  capital_abcd: {\n    keywords: [ \"alphabet\", \"words\", \"blue-square\" ],\n    \"char\": \"\\ud83d\\udd20\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  symbols: {\n    keywords: [ \"blue-square\", \"music\", \"note\", \"ampersand\", \"percent\", \"glyphs\", \"characters\" ],\n    \"char\": \"\\ud83d\\udd23\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  musical_note: {\n    keywords: [ \"score\", \"tone\", \"sound\" ],\n    \"char\": \"\\ud83c\\udfb5\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  notes: {\n    keywords: [ \"music\", \"score\" ],\n    \"char\": \"\\ud83c\\udfb6\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  wavy_dash: {\n    keywords: [ \"draw\", \"line\", \"moustache\", \"mustache\", \"squiggle\", \"scribble\" ],\n    \"char\": \"\\u3030\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  curly_loop: {\n    keywords: [ \"scribble\", \"draw\", \"shape\", \"squiggle\" ],\n    \"char\": \"\\u27b0\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  heavy_check_mark: {\n    keywords: [ \"ok\", \"nike\", \"answer\", \"yes\", \"tick\" ],\n    \"char\": \"\\u2714\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  arrows_clockwise: {\n    keywords: [ \"sync\", \"cycle\", \"round\", \"repeat\" ],\n    \"char\": \"\\ud83d\\udd03\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  heavy_plus_sign: {\n    keywords: [ \"math\", \"calculation\", \"addition\", \"more\", \"increase\" ],\n    \"char\": \"\\u2795\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  heavy_minus_sign: {\n    keywords: [ \"math\", \"calculation\", \"subtract\", \"less\" ],\n    \"char\": \"\\u2796\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  heavy_division_sign: {\n    keywords: [ \"divide\", \"math\", \"calculation\" ],\n    \"char\": \"\\u2797\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  heavy_multiplication_x: {\n    keywords: [ \"math\", \"calculation\" ],\n    \"char\": \"\\u2716\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  heavy_dollar_sign: {\n    keywords: [ \"money\", \"sales\", \"payment\", \"currency\", \"buck\" ],\n    \"char\": \"\\ud83d\\udcb2\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  currency_exchange: {\n    keywords: [ \"money\", \"sales\", \"dollar\", \"travel\" ],\n    \"char\": \"\\ud83d\\udcb1\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  copyright: {\n    keywords: [ \"ip\", \"license\", \"circle\", \"law\", \"legal\" ],\n    \"char\": \"\\xa9\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  registered: {\n    keywords: [ \"alphabet\", \"circle\" ],\n    \"char\": \"\\xae\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  tm: {\n    keywords: [ \"trademark\", \"brand\", \"law\", \"legal\" ],\n    \"char\": \"\\u2122\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  end: {\n    keywords: [ \"words\", \"arrow\" ],\n    \"char\": \"\\ud83d\\udd1a\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  back: {\n    keywords: [ \"arrow\", \"words\", \"return\" ],\n    \"char\": \"\\ud83d\\udd19\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  on: {\n    keywords: [ \"arrow\", \"words\" ],\n    \"char\": \"\\ud83d\\udd1b\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  top: {\n    keywords: [ \"words\", \"blue-square\" ],\n    \"char\": \"\\ud83d\\udd1d\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  soon: {\n    keywords: [ \"arrow\", \"words\" ],\n    \"char\": \"\\ud83d\\udd1c\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  ballot_box_with_check: {\n    keywords: [ \"ok\", \"agree\", \"confirm\", \"black-square\", \"vote\", \"election\", \"yes\", \"tick\" ],\n    \"char\": \"\\u2611\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  radio_button: {\n    keywords: [ \"input\", \"old\", \"music\", \"circle\" ],\n    \"char\": \"\\ud83d\\udd18\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  white_circle: {\n    keywords: [ \"shape\", \"round\" ],\n    \"char\": \"\\u26aa\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  black_circle: {\n    keywords: [ \"shape\", \"button\", \"round\" ],\n    \"char\": \"\\u26ab\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  red_circle: {\n    keywords: [ \"shape\", \"error\", \"danger\" ],\n    \"char\": \"\\ud83d\\udd34\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  large_blue_circle: {\n    keywords: [ \"shape\", \"icon\", \"button\" ],\n    \"char\": \"\\ud83d\\udd35\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  small_orange_diamond: {\n    keywords: [ \"shape\", \"jewel\", \"gem\" ],\n    \"char\": \"\\ud83d\\udd38\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  small_blue_diamond: {\n    keywords: [ \"shape\", \"jewel\", \"gem\" ],\n    \"char\": \"\\ud83d\\udd39\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  large_orange_diamond: {\n    keywords: [ \"shape\", \"jewel\", \"gem\" ],\n    \"char\": \"\\ud83d\\udd36\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  large_blue_diamond: {\n    keywords: [ \"shape\", \"jewel\", \"gem\" ],\n    \"char\": \"\\ud83d\\udd37\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  small_red_triangle: {\n    keywords: [ \"shape\", \"direction\", \"up\", \"top\" ],\n    \"char\": \"\\ud83d\\udd3a\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  black_small_square: {\n    keywords: [ \"shape\", \"icon\" ],\n    \"char\": \"\\u25aa\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  white_small_square: {\n    keywords: [ \"shape\", \"icon\" ],\n    \"char\": \"\\u25ab\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  black_large_square: {\n    keywords: [ \"shape\", \"icon\", \"button\" ],\n    \"char\": \"\\u2b1b\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  white_large_square: {\n    keywords: [ \"shape\", \"icon\", \"stone\", \"button\" ],\n    \"char\": \"\\u2b1c\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  small_red_triangle_down: {\n    keywords: [ \"shape\", \"direction\", \"bottom\" ],\n    \"char\": \"\\ud83d\\udd3b\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  black_medium_square: {\n    keywords: [ \"shape\", \"button\", \"icon\" ],\n    \"char\": \"\\u25fc\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  white_medium_square: {\n    keywords: [ \"shape\", \"stone\", \"icon\" ],\n    \"char\": \"\\u25fb\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  black_medium_small_square: {\n    keywords: [ \"icon\", \"shape\", \"button\" ],\n    \"char\": \"\\u25fe\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  white_medium_small_square: {\n    keywords: [ \"shape\", \"stone\", \"icon\", \"button\" ],\n    \"char\": \"\\u25fd\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  black_square_button: {\n    keywords: [ \"shape\", \"input\", \"frame\" ],\n    \"char\": \"\\ud83d\\udd32\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  white_square_button: {\n    keywords: [ \"shape\", \"input\" ],\n    \"char\": \"\\ud83d\\udd33\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  speaker: {\n    keywords: [ \"sound\", \"volume\", \"silence\", \"broadcast\" ],\n    \"char\": \"\\ud83d\\udd08\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  sound: {\n    keywords: [ \"volume\", \"speaker\", \"broadcast\" ],\n    \"char\": \"\\ud83d\\udd09\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  loud_sound: {\n    keywords: [ \"volume\", \"noise\", \"noisy\", \"speaker\", \"broadcast\" ],\n    \"char\": \"\\ud83d\\udd0a\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  mute: {\n    keywords: [ \"sound\", \"volume\", \"silence\", \"quiet\" ],\n    \"char\": \"\\ud83d\\udd07\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  mega: {\n    keywords: [ \"sound\", \"speaker\", \"volume\" ],\n    \"char\": \"\\ud83d\\udce3\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  loudspeaker: {\n    keywords: [ \"volume\", \"sound\" ],\n    \"char\": \"\\ud83d\\udce2\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  bell: {\n    keywords: [ \"sound\", \"notification\", \"christmas\", \"xmas\", \"chime\" ],\n    \"char\": \"\\ud83d\\udd14\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  no_bell: {\n    keywords: [ \"sound\", \"volume\", \"mute\", \"quiet\", \"silent\" ],\n    \"char\": \"\\ud83d\\udd15\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  black_joker: {\n    keywords: [ \"poker\", \"cards\", \"game\", \"play\", \"magic\" ],\n    \"char\": \"\\ud83c\\udccf\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  mahjong: {\n    keywords: [ \"game\", \"play\", \"chinese\", \"kanji\" ],\n    \"char\": \"\\ud83c\\udc04\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  spades: {\n    keywords: [ \"poker\", \"cards\", \"suits\", \"magic\" ],\n    \"char\": \"\\u2660\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clubs: {\n    keywords: [ \"poker\", \"cards\", \"magic\", \"suits\" ],\n    \"char\": \"\\u2663\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  hearts: {\n    keywords: [ \"poker\", \"cards\", \"magic\", \"suits\" ],\n    \"char\": \"\\u2665\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  diamonds: {\n    keywords: [ \"poker\", \"cards\", \"magic\", \"suits\" ],\n    \"char\": \"\\u2666\\ufe0f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  flower_playing_cards: {\n    keywords: [ \"game\", \"sunset\", \"red\" ],\n    \"char\": \"\\ud83c\\udfb4\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  thought_balloon: {\n    keywords: [ \"bubble\", \"cloud\", \"speech\", \"thinking\", \"dream\" ],\n    \"char\": \"\\ud83d\\udcad\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  right_anger_bubble: {\n    keywords: [ \"caption\", \"speech\", \"thinking\", \"mad\" ],\n    \"char\": \"\\ud83d\\uddef\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  speech_balloon: {\n    keywords: [ \"bubble\", \"words\", \"message\", \"talk\", \"chatting\" ],\n    \"char\": \"\\ud83d\\udcac\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  left_speech_bubble: {\n    keywords: [ \"words\", \"message\", \"talk\", \"chatting\" ],\n    \"char\": \"\\ud83d\\udde8\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock1: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd50\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock2: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd51\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock3: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd52\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock4: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd53\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock5: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd54\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock6: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\", \"dawn\", \"dusk\" ],\n    \"char\": \"\\ud83d\\udd55\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock7: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd56\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock8: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd57\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock9: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd58\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock10: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd59\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock11: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd5a\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock12: {\n    keywords: [ \"time\", \"noon\", \"midnight\", \"midday\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd5b\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock130: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd5c\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock230: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd5d\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock330: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd5e\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock430: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd5f\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock530: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd60\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock630: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd61\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock730: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd62\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock830: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd63\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock930: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd64\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock1030: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd65\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock1130: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd66\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  clock1230: {\n    keywords: [ \"time\", \"late\", \"early\", \"schedule\" ],\n    \"char\": \"\\ud83d\\udd67\",\n    fitzpatrick_scale: false,\n    category: \"symbols\"\n  },\n  afghanistan: {\n    keywords: [ \"af\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddeb\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  aland_islands: {\n    keywords: [ \"\\xc5land\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddfd\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  albania: {\n    keywords: [ \"al\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddf1\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  algeria: {\n    keywords: [ \"dz\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde9\\ud83c\\uddff\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  american_samoa: {\n    keywords: [ \"american\", \"ws\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddf8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  andorra: {\n    keywords: [ \"ad\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\udde9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  angola: {\n    keywords: [ \"ao\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddf4\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  anguilla: {\n    keywords: [ \"ai\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddee\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  antarctica: {\n    keywords: [ \"aq\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddf6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  antigua_barbuda: {\n    keywords: [ \"antigua\", \"barbuda\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddec\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  argentina: {\n    keywords: [ \"ar\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  armenia: {\n    keywords: [ \"am\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  aruba: {\n    keywords: [ \"aw\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddfc\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  australia: {\n    keywords: [ \"au\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddfa\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  austria: {\n    keywords: [ \"at\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddf9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  azerbaijan: {\n    keywords: [ \"az\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddff\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  bahamas: {\n    keywords: [ \"bs\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddf8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  bahrain: {\n    keywords: [ \"bh\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\udded\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  bangladesh: {\n    keywords: [ \"bd\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\udde9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  barbados: {\n    keywords: [ \"bb\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\udde7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  belarus: {\n    keywords: [ \"by\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddfe\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  belgium: {\n    keywords: [ \"be\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  belize: {\n    keywords: [ \"bz\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddff\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  benin: {\n    keywords: [ \"bj\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddef\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  bermuda: {\n    keywords: [ \"bm\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  bhutan: {\n    keywords: [ \"bt\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddf9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  bolivia: {\n    keywords: [ \"bo\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddf4\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  caribbean_netherlands: {\n    keywords: [ \"bonaire\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddf6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  bosnia_herzegovina: {\n    keywords: [ \"bosnia\", \"herzegovina\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\udde6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  botswana: {\n    keywords: [ \"bw\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddfc\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  brazil: {\n    keywords: [ \"br\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  british_indian_ocean_territory: {\n    keywords: [ \"british\", \"indian\", \"ocean\", \"territory\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddee\\ud83c\\uddf4\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  british_virgin_islands: {\n    keywords: [ \"british\", \"virgin\", \"islands\", \"bvi\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfb\\ud83c\\uddec\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  brunei: {\n    keywords: [ \"bn\", \"darussalam\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddf3\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  bulgaria: {\n    keywords: [ \"bg\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddec\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  burkina_faso: {\n    keywords: [ \"burkina\", \"faso\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddeb\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  burundi: {\n    keywords: [ \"bi\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddee\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  cape_verde: {\n    keywords: [ \"cabo\", \"verde\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddfb\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  cambodia: {\n    keywords: [ \"kh\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf0\\ud83c\\udded\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  cameroon: {\n    keywords: [ \"cm\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  canada: {\n    keywords: [ \"ca\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\udde6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  canary_islands: {\n    keywords: [ \"canary\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddee\\ud83c\\udde8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  cayman_islands: {\n    keywords: [ \"cayman\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf0\\ud83c\\uddfe\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  central_african_republic: {\n    keywords: [ \"central\", \"african\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddeb\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  chad: {\n    keywords: [ \"td\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\udde9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  chile: {\n    keywords: [ \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddf1\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  cn: {\n    keywords: [ \"china\", \"chinese\", \"prc\", \"flag\", \"country\", \"nation\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddf3\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  christmas_island: {\n    keywords: [ \"christmas\", \"island\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddfd\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  cocos_islands: {\n    keywords: [ \"cocos\", \"keeling\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\udde8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  colombia: {\n    keywords: [ \"co\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddf4\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  comoros: {\n    keywords: [ \"km\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf0\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  congo_brazzaville: {\n    keywords: [ \"congo\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddec\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  congo_kinshasa: {\n    keywords: [ \"congo\", \"democratic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\udde9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  cook_islands: {\n    keywords: [ \"cook\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddf0\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  costa_rica: {\n    keywords: [ \"costa\", \"rica\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  croatia: {\n    keywords: [ \"hr\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udded\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  cuba: {\n    keywords: [ \"cu\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddfa\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  curacao: {\n    keywords: [ \"cura\\xe7ao\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddfc\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  cyprus: {\n    keywords: [ \"cy\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddfe\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  czech_republic: {\n    keywords: [ \"cz\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddff\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  denmark: {\n    keywords: [ \"dk\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde9\\ud83c\\uddf0\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  djibouti: {\n    keywords: [ \"dj\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde9\\ud83c\\uddef\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  dominica: {\n    keywords: [ \"dm\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde9\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  dominican_republic: {\n    keywords: [ \"dominican\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde9\\ud83c\\uddf4\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  ecuador: {\n    keywords: [ \"ec\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddea\\ud83c\\udde8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  egypt: {\n    keywords: [ \"eg\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddea\\ud83c\\uddec\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  el_salvador: {\n    keywords: [ \"el\", \"salvador\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddfb\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  equatorial_guinea: {\n    keywords: [ \"equatorial\", \"gn\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddf6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  eritrea: {\n    keywords: [ \"er\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddea\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  estonia: {\n    keywords: [ \"ee\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddea\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  ethiopia: {\n    keywords: [ \"et\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddea\\ud83c\\uddf9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  eu: {\n    keywords: [ \"european\", \"union\", \"flag\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddea\\ud83c\\uddfa\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  falkland_islands: {\n    keywords: [ \"falkland\", \"islands\", \"malvinas\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddeb\\ud83c\\uddf0\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  faroe_islands: {\n    keywords: [ \"faroe\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddeb\\ud83c\\uddf4\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  fiji: {\n    keywords: [ \"fj\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddeb\\ud83c\\uddef\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  finland: {\n    keywords: [ \"fi\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddeb\\ud83c\\uddee\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  fr: {\n    keywords: [ \"banner\", \"flag\", \"nation\", \"france\", \"french\", \"country\" ],\n    \"char\": \"\\ud83c\\uddeb\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  french_guiana: {\n    keywords: [ \"french\", \"guiana\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddeb\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  french_polynesia: {\n    keywords: [ \"french\", \"polynesia\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\uddeb\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  french_southern_territories: {\n    keywords: [ \"french\", \"southern\", \"territories\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\uddeb\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  gabon: {\n    keywords: [ \"ga\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\udde6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  gambia: {\n    keywords: [ \"gm\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  georgia: {\n    keywords: [ \"ge\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  de: {\n    keywords: [ \"german\", \"nation\", \"flag\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde9\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  ghana: {\n    keywords: [ \"gh\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\udded\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  gibraltar: {\n    keywords: [ \"gi\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddee\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  greece: {\n    keywords: [ \"gr\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  greenland: {\n    keywords: [ \"gl\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddf1\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  grenada: {\n    keywords: [ \"gd\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\udde9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  guadeloupe: {\n    keywords: [ \"gp\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddf5\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  guam: {\n    keywords: [ \"gu\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddfa\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  guatemala: {\n    keywords: [ \"gt\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddf9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  guernsey: {\n    keywords: [ \"gg\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddec\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  guinea: {\n    keywords: [ \"gn\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddf3\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  guinea_bissau: {\n    keywords: [ \"gw\", \"bissau\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddfc\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  guyana: {\n    keywords: [ \"gy\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddfe\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  haiti: {\n    keywords: [ \"ht\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udded\\ud83c\\uddf9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  honduras: {\n    keywords: [ \"hn\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udded\\ud83c\\uddf3\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  hong_kong: {\n    keywords: [ \"hong\", \"kong\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udded\\ud83c\\uddf0\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  hungary: {\n    keywords: [ \"hu\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udded\\ud83c\\uddfa\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  iceland: {\n    keywords: [ \"is\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddee\\ud83c\\uddf8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  india: {\n    keywords: [ \"in\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddee\\ud83c\\uddf3\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  indonesia: {\n    keywords: [ \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddee\\ud83c\\udde9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  iran: {\n    keywords: [ \"iran,\", \"islamic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddee\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  iraq: {\n    keywords: [ \"iq\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddee\\ud83c\\uddf6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  ireland: {\n    keywords: [ \"ie\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddee\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  isle_of_man: {\n    keywords: [ \"isle\", \"man\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddee\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  israel: {\n    keywords: [ \"il\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddee\\ud83c\\uddf1\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  it: {\n    keywords: [ \"italy\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddee\\ud83c\\uddf9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  cote_divoire: {\n    keywords: [ \"ivory\", \"coast\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\uddee\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  jamaica: {\n    keywords: [ \"jm\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddef\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  jp: {\n    keywords: [ \"japanese\", \"nation\", \"flag\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddef\\ud83c\\uddf5\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  jersey: {\n    keywords: [ \"je\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddef\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  jordan: {\n    keywords: [ \"jo\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddef\\ud83c\\uddf4\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  kazakhstan: {\n    keywords: [ \"kz\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf0\\ud83c\\uddff\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  kenya: {\n    keywords: [ \"ke\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf0\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  kiribati: {\n    keywords: [ \"ki\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf0\\ud83c\\uddee\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  kosovo: {\n    keywords: [ \"xk\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfd\\ud83c\\uddf0\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  kuwait: {\n    keywords: [ \"kw\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf0\\ud83c\\uddfc\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  kyrgyzstan: {\n    keywords: [ \"kg\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf0\\ud83c\\uddec\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  laos: {\n    keywords: [ \"lao\", \"democratic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf1\\ud83c\\udde6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  latvia: {\n    keywords: [ \"lv\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf1\\ud83c\\uddfb\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  lebanon: {\n    keywords: [ \"lb\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf1\\ud83c\\udde7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  lesotho: {\n    keywords: [ \"ls\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf1\\ud83c\\uddf8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  liberia: {\n    keywords: [ \"lr\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf1\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  libya: {\n    keywords: [ \"ly\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf1\\ud83c\\uddfe\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  liechtenstein: {\n    keywords: [ \"li\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf1\\ud83c\\uddee\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  lithuania: {\n    keywords: [ \"lt\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf1\\ud83c\\uddf9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  luxembourg: {\n    keywords: [ \"lu\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf1\\ud83c\\uddfa\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  macau: {\n    keywords: [ \"macao\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddf4\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  macedonia: {\n    keywords: [ \"macedonia,\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddf0\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  madagascar: {\n    keywords: [ \"mg\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddec\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  malawi: {\n    keywords: [ \"mw\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddfc\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  malaysia: {\n    keywords: [ \"my\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddfe\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  maldives: {\n    keywords: [ \"mv\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddfb\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  mali: {\n    keywords: [ \"ml\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddf1\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  malta: {\n    keywords: [ \"mt\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddf9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  marshall_islands: {\n    keywords: [ \"marshall\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\udded\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  martinique: {\n    keywords: [ \"mq\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddf6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  mauritania: {\n    keywords: [ \"mr\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  mauritius: {\n    keywords: [ \"mu\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddfa\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  mayotte: {\n    keywords: [ \"yt\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfe\\ud83c\\uddf9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  mexico: {\n    keywords: [ \"mx\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddfd\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  micronesia: {\n    keywords: [ \"micronesia,\", \"federated\", \"states\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddeb\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  moldova: {\n    keywords: [ \"moldova,\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\udde9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  monaco: {\n    keywords: [ \"mc\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\udde8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  mongolia: {\n    keywords: [ \"mn\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddf3\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  montenegro: {\n    keywords: [ \"me\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  montserrat: {\n    keywords: [ \"ms\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddf8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  morocco: {\n    keywords: [ \"ma\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\udde6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  mozambique: {\n    keywords: [ \"mz\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddff\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  myanmar: {\n    keywords: [ \"mm\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  namibia: {\n    keywords: [ \"na\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf3\\ud83c\\udde6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  nauru: {\n    keywords: [ \"nr\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf3\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  nepal: {\n    keywords: [ \"np\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf3\\ud83c\\uddf5\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  netherlands: {\n    keywords: [ \"nl\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf3\\ud83c\\uddf1\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  new_caledonia: {\n    keywords: [ \"new\", \"caledonia\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf3\\ud83c\\udde8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  new_zealand: {\n    keywords: [ \"new\", \"zealand\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf3\\ud83c\\uddff\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  nicaragua: {\n    keywords: [ \"ni\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf3\\ud83c\\uddee\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  niger: {\n    keywords: [ \"ne\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf3\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  nigeria: {\n    keywords: [ \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf3\\ud83c\\uddec\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  niue: {\n    keywords: [ \"nu\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf3\\ud83c\\uddfa\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  norfolk_island: {\n    keywords: [ \"norfolk\", \"island\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf3\\ud83c\\uddeb\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  northern_mariana_islands: {\n    keywords: [ \"northern\", \"mariana\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf2\\ud83c\\uddf5\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  north_korea: {\n    keywords: [ \"north\", \"korea\", \"nation\", \"flag\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf0\\ud83c\\uddf5\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  norway: {\n    keywords: [ \"no\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf3\\ud83c\\uddf4\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  oman: {\n    keywords: [ \"om_symbol\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf4\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  pakistan: {\n    keywords: [ \"pk\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\uddf0\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  palau: {\n    keywords: [ \"pw\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\uddfc\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  palestinian_territories: {\n    keywords: [ \"palestine\", \"palestinian\", \"territories\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\uddf8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  panama: {\n    keywords: [ \"pa\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\udde6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  papua_new_guinea: {\n    keywords: [ \"papua\", \"new\", \"guinea\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\uddec\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  paraguay: {\n    keywords: [ \"py\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\uddfe\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  peru: {\n    keywords: [ \"pe\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  philippines: {\n    keywords: [ \"ph\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\udded\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  pitcairn_islands: {\n    keywords: [ \"pitcairn\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\uddf3\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  poland: {\n    keywords: [ \"pl\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\uddf1\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  portugal: {\n    keywords: [ \"pt\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\uddf9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  puerto_rico: {\n    keywords: [ \"puerto\", \"rico\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  qatar: {\n    keywords: [ \"qa\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf6\\ud83c\\udde6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  reunion: {\n    keywords: [ \"r\\xe9union\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf7\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  romania: {\n    keywords: [ \"ro\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf7\\ud83c\\uddf4\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  ru: {\n    keywords: [ \"russian\", \"federation\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf7\\ud83c\\uddfa\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  rwanda: {\n    keywords: [ \"rw\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf7\\ud83c\\uddfc\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  st_barthelemy: {\n    keywords: [ \"saint\", \"barth\\xe9lemy\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde7\\ud83c\\uddf1\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  st_helena: {\n    keywords: [ \"saint\", \"helena\", \"ascension\", \"tristan\", \"cunha\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\udded\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  st_kitts_nevis: {\n    keywords: [ \"saint\", \"kitts\", \"nevis\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf0\\ud83c\\uddf3\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  st_lucia: {\n    keywords: [ \"saint\", \"lucia\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf1\\ud83c\\udde8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  st_pierre_miquelon: {\n    keywords: [ \"saint\", \"pierre\", \"miquelon\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf5\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  st_vincent_grenadines: {\n    keywords: [ \"saint\", \"vincent\", \"grenadines\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfb\\ud83c\\udde8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  samoa: {\n    keywords: [ \"ws\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfc\\ud83c\\uddf8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  san_marino: {\n    keywords: [ \"san\", \"marino\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  sao_tome_principe: {\n    keywords: [ \"sao\", \"tome\", \"principe\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddf9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  saudi_arabia: {\n    keywords: [ \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\udde6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  senegal: {\n    keywords: [ \"sn\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddf3\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  serbia: {\n    keywords: [ \"rs\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf7\\ud83c\\uddf8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  seychelles: {\n    keywords: [ \"sc\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\udde8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  sierra_leone: {\n    keywords: [ \"sierra\", \"leone\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddf1\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  singapore: {\n    keywords: [ \"sg\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddec\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  sint_maarten: {\n    keywords: [ \"sint\", \"maarten\", \"dutch\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddfd\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  slovakia: {\n    keywords: [ \"sk\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddf0\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  slovenia: {\n    keywords: [ \"si\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddee\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  solomon_islands: {\n    keywords: [ \"solomon\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\udde7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  somalia: {\n    keywords: [ \"so\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddf4\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  south_africa: {\n    keywords: [ \"south\", \"africa\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddff\\ud83c\\udde6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  south_georgia_south_sandwich_islands: {\n    keywords: [ \"south\", \"georgia\", \"sandwich\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\uddf8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  kr: {\n    keywords: [ \"south\", \"korea\", \"nation\", \"flag\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf0\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  south_sudan: {\n    keywords: [ \"south\", \"sd\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddf8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  es: {\n    keywords: [ \"spain\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddea\\ud83c\\uddf8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  sri_lanka: {\n    keywords: [ \"sri\", \"lanka\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf1\\ud83c\\uddf0\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  sudan: {\n    keywords: [ \"sd\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\udde9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  suriname: {\n    keywords: [ \"sr\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  swaziland: {\n    keywords: [ \"sz\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddff\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  sweden: {\n    keywords: [ \"se\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  switzerland: {\n    keywords: [ \"ch\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde8\\ud83c\\udded\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  syria: {\n    keywords: [ \"syrian\", \"arab\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf8\\ud83c\\uddfe\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  taiwan: {\n    keywords: [ \"tw\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\uddfc\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  tajikistan: {\n    keywords: [ \"tj\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\uddef\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  tanzania: {\n    keywords: [ \"tanzania,\", \"united\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\uddff\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  thailand: {\n    keywords: [ \"th\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\udded\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  timor_leste: {\n    keywords: [ \"timor\", \"leste\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\uddf1\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  togo: {\n    keywords: [ \"tg\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\uddec\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  tokelau: {\n    keywords: [ \"tk\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\uddf0\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  tonga: {\n    keywords: [ \"to\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\uddf4\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  trinidad_tobago: {\n    keywords: [ \"trinidad\", \"tobago\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\uddf9\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  tunisia: {\n    keywords: [ \"tn\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\uddf3\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  tr: {\n    keywords: [ \"turkey\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\uddf7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  turkmenistan: {\n    keywords: [ \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  turks_caicos_islands: {\n    keywords: [ \"turks\", \"caicos\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\udde8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  tuvalu: {\n    keywords: [ \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddf9\\ud83c\\uddfb\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  uganda: {\n    keywords: [ \"ug\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfa\\ud83c\\uddec\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  ukraine: {\n    keywords: [ \"ua\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfa\\ud83c\\udde6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  united_arab_emirates: {\n    keywords: [ \"united\", \"arab\", \"emirates\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\udde6\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  uk: {\n    keywords: [ \"united\", \"kingdom\", \"great\", \"britain\", \"northern\", \"ireland\", \"flag\", \"nation\", \"country\", \"banner\", \"british\", \"UK\", \"english\", \"england\", \"union jack\" ],\n    \"char\": \"\\ud83c\\uddec\\ud83c\\udde7\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  england: {\n    keywords: [ \"flag\", \"english\" ],\n    \"char\": \"\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc65\\udb40\\udc6e\\udb40\\udc67\\udb40\\udc7f\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  scotland: {\n    keywords: [ \"flag\", \"scottish\" ],\n    \"char\": \"\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc73\\udb40\\udc63\\udb40\\udc74\\udb40\\udc7f\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  wales: {\n    keywords: [ \"flag\", \"welsh\" ],\n    \"char\": \"\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc77\\udb40\\udc6c\\udb40\\udc73\\udb40\\udc7f\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  us: {\n    keywords: [ \"united\", \"states\", \"america\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfa\\ud83c\\uddf8\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  us_virgin_islands: {\n    keywords: [ \"virgin\", \"islands\", \"us\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfb\\ud83c\\uddee\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  uruguay: {\n    keywords: [ \"uy\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfa\\ud83c\\uddfe\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  uzbekistan: {\n    keywords: [ \"uz\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfa\\ud83c\\uddff\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  vanuatu: {\n    keywords: [ \"vu\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfb\\ud83c\\uddfa\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  vatican_city: {\n    keywords: [ \"vatican\", \"city\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfb\\ud83c\\udde6\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  venezuela: {\n    keywords: [ \"ve\", \"bolivarian\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfb\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  vietnam: {\n    keywords: [ \"viet\", \"nam\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfb\\ud83c\\uddf3\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  wallis_futuna: {\n    keywords: [ \"wallis\", \"futuna\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfc\\ud83c\\uddeb\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  western_sahara: {\n    keywords: [ \"western\", \"sahara\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddea\\ud83c\\udded\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  yemen: {\n    keywords: [ \"ye\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddfe\\ud83c\\uddea\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  zambia: {\n    keywords: [ \"zm\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddff\\ud83c\\uddf2\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  },\n  zimbabwe: {\n    keywords: [ \"zw\", \"flag\", \"nation\", \"country\", \"banner\" ],\n    \"char\": \"\\ud83c\\uddff\\ud83c\\uddfc\",\n    fitzpatrick_scale: false,\n    category: \"flags\"\n  }\n});"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/webuploader/README.md",
    "content": "目录说明\n========================\n\n```bash\n├── Uploader.swf                      # SWF文件，当使用Flash运行时需要引入。\n├\n├── webuploader.js                    # 完全版本。\n├── webuploader.min.js                # min版本\n├\n├── webuploader.flashonly.js          # 只有Flash实现的版本。\n├── webuploader.flashonly.min.js      # min版本\n├\n├── webuploader.html5only.js          # 只有Html5实现的版本。\n├── webuploader.html5only.min.js      # min版本\n├\n├── webuploader.noimage.js            # 去除图片处理的版本，包括HTML5和FLASH.\n├── webuploader.noimage.min.js        # min版本\n├\n├── webuploader.custom.js             # 自定义打包方案，请查看 Gruntfile.js，满足移动端使用。\n└── webuploader.custom.min.js         # min版本\n```\n\n## 示例\n\n请把整个 Git 包下载下来放在 php 服务器下，因为默认提供的文件接受是用 php 编写的，打开 examples 页面便能查看示例效果。"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/webuploader/webuploader.css",
    "content": ".webuploader-container {\n\tposition: relative\n}\n\n.webuploader-element-invisible {\n\tposition: absolute !important;\n\tclip: rect(1px 1px 1px 1px);\n\tclip: rect(1px, 1px, 1px, 1px)\n}\n\n.webuploader-pick {\n\tborder-radius: 1px;\n\twill-change: box-shadow !important;\n\tbox-shadow: 0 3px 1px -2px rgba(0, 0, 0, .15), 0 2px 2px 0 rgba(0, 0, 0, .15), 0 1px 5px 0 rgba(0, 0, 0, .15);\n\tborder: 1px solid transparent;\n\tdisplay: inline-block;\n\tpadding: 6px 12px;\n\tmargin-bottom: 0;\n\tfont-size: 14px;\n\tfont-weight: 400;\n\tline-height: 1.42857143;\n\ttext-align: center;\n\twhite-space: nowrap;\n\tvertical-align: middle;\n\t-ms-touch-action: manipulation;\n\ttouch-action: manipulation;\n\tcursor: pointer;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\tbackground-image: none;\n\tcolor: #fff;\n\tbackground-color: #4099df\n}\n\n.webuploader-pick-hover {\n\topacity: .9\n}\n\n.webuploader-pick-disable {\n\topacity: .6;\n\tpointer-events: none\n}\n\n.web-uploader {\n\tborder: 0;\n\tcolor: #838383;\n\tfont-size: 12px;\n\tmargin-top: 10px;\n\tbackground-color: transparent\n}\n\n.web-uploader.disabled {\n\tbackground-color: #eee;\n\tmin-height: 34px;\n\tcursor: not-allowed\n}\n\n.web-uploader._files {\n\tborder: 0\n}\n\n.web-uploader .queueList {\n}\n\n.web-uploader._files .queueList {\n}\n\n.element-invisible {\n\tposition: absolute !important;\n\tclip: rect(1px 1px 1px 1px);\n\tclip: rect(1px, 1px, 1px, 1px)\n}\n\n.web-uploader .placeholder {\n\t/*padding-top: 85px;*/\n\t/*background: url(./image.png) center 15px no-repeat;*/\n\tborder: 3px dashed #e6e6e6;\n\tpadding-top: 5px;\n\ttext-align: center;\n\tcolor: #ccc;\n\tfont-size: 16px;\n\tposition: relative;\n}\n\n.web-uploader .placeholder .webuploader-pick {\n\tbackground: #4099df;\n\tborder-radius: 3px;\n\tline-height: 34px;\n\tpadding: 0 25px;\n\tcolor: #fff;\n\tdisplay: inline-block;\n\tmargin: 0 auto 20px;\n\tcursor: pointer\n}\n\n.web-uploader .placeholder .webuploader-pick-hover {\n\topacity: .9\n}\n.web-uploader .placeholder p {\n\tmargin: 0 0 20px;\n}\n.web-uploader .placeholder .flashTip {\n\tcolor: #666;\n\tfont-size: 12px;\n\tposition: absolute;\n\twidth: 100%;\n\ttext-align: center;\n\tbottom: 20px\n}\n\n.web-uploader .placeholder .flashTip a {\n\tcolor: #4099df;\n\ttext-decoration: none\n}\n\n.web-uploader .placeholder .flashTip a:hover {\n\ttext-decoration: underline\n}\n\n.web-uploader .placeholder.webuploader-dnd-over {\n\tborder-color: #999\n}\n\n.web-uploader .placeholder.webuploader-dnd-over.webuploader-dnd-denied {\n\tborder-color: #ff5b5b\n}\n\n.web-uploader .filelist {\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 0\n}\n\n.web-uploader .filelist:after {\n\tcontent: '';\n\tdisplay: block;\n\twidth: 0;\n\theight: 0;\n\toverflow: hidden;\n\tclear: both\n}\n\n.web-uploader .filelist li {\n\twidth: 120px;\n\ttext-align: center;\n\tposition: relative;\n\tfloat: left;\n\toverflow: hidden;\n\tborder-radius: 2px;\n\tfont-size: 12px;\n\tbox-shadow: 1px 1px 5px 0 #a2958a;\n\t-webkit-box-shadow: 1px 1px 5px 0 #a2958a;\n\tcolor: #333;\n\tbackground: #fff;\n\tdisplay: table;\n\tmargin: 8px;\n\theight: 160px;\n\tpadding: 6px;\n\tvertical-align: middle\n}\n\n.web-uploader._files .filelist li {\n\twidth: 100%;\n\theight: 40px;\n\tbackground: var(--primary-light);\n\tmargin: 0 8px 10px 0;\n\tbox-shadow: none;\n\t-webkit-box-shadow: none;\n\tborder-radius: 5px;\n\tborder: 0;\n\tpadding: 0\n}\n\n.web-uploader._files .filelist li ._act {\n\tfloat: right;\n\tmargin: 16px 10px 0;\n\tcursor: pointer;\n\tfont-size: 15px;\n\tposition: absolute;\n\tright: 0\n}\n\n.web-uploader .filelist li p.log {\n\tposition: relative;\n\ttop: -45px\n}\n\n.web-uploader .filelist li p.title {\n\tleft: 0;\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\ttop: 35px;\n\ttext-indent: 5px;\n\twidth: 160px;\n\ttext-align: center;\n\tpadding-top: 4px;\n\tfont-size: 11px;\n\tcolor: #777;\n\tmargin: 3px auto\n}\n\n.web-uploader._files .filelist li p.title {\n\tfont-weight: 600;\n\tfont-size: 15px;\n\tvertical-align: middle;\n\theight: 42px;\n\tline-height: 35px;\n\tpadding-left: 8px;\n\tfloat: left;\n\ttext-align: left;\n\tcolor: #333;\n\twidth: 450px\n}\n\n.web-uploader .filelist .file-type {\n\tdisplay: none;\n\tfont-size: 18px;\n\tfont-weight: bold;\n\ttext-shadow: 0 1px 2px rgba(0, 0, 0, .2);\n\tmargin: 20px 0 5px;\n\theight: 105px\n}\n\n.web-uploader .filelist li p.upload-progress {\n\tposition: absolute;\n\twidth: 100%;\n\tbottom: 0;\n\tleft: 0;\n\theight: 8px;\n\toverflow: hidden;\n\tz-index: 50\n}\n\n.web-uploader .filelist li p.upload-progress span {\n\tdisplay: none;\n\toverflow: hidden;\n\twidth: 0;\n\theight: 100%;\n\tbackground: #4099df url(./progress.png) repeat-x;\n\t-webit-transition: width 200ms linear;\n\t-moz-transition: width 200ms linear;\n\t-o-transition: width 200ms linear;\n\t-ms-transition: width 200ms linear;\n\ttransition: width 200ms linear;\n\t-webkit-animation: progressmove 2s linear infinite;\n\t-moz-animation: progressmove 2s linear infinite;\n\t-o-animation: progressmove 2s linear infinite;\n\t-ms-animation: progressmove 2s linear infinite;\n\tanimation: progressmove 2s linear infinite;\n\t-webkit-transform: translateZ(0)\n}\n\n@-webkit-keyframes progressmove {\n\t0% {\n\t\tbackground-position: 0 0\n\t}\n\t100% {\n\t\tbackground-position: 17px 0\n\t}\n}\n\n@-moz-keyframes progressmove {\n\t0% {\n\t\tbackground-position: 0 0\n\t}\n\t100% {\n\t\tbackground-position: 17px 0\n\t}\n}\n\n@keyframes progressmove {\n\t0% {\n\t\tbackground-position: 0 0\n\t}\n\t100% {\n\t\tbackground-position: 17px 0\n\t}\n}\n\n.web-uploader .filelist li .imgWrap {\n\tposition: relative;\n\tz-index: 2;\n\tline-height: 100%;\n\tvertical-align: middle;\n\toverflow: hidden;\n\twidth: 100%;\n\theight: 120px;\n\t-webkit-transform-origin: 50% 50%;\n\t-moz-transform-origin: 50% 50%;\n\t-o-transform-origin: 50% 50%;\n\t-ms-transform-origin: 50% 50%;\n\ttransform-origin: 50% 50%;\n\t-webit-transition: 200ms ease-out;\n\t-moz-transition: 200ms ease-out;\n\t-o-transition: 200ms ease-out;\n\t-ms-transition: 200ms ease-out;\n\ttransition: 200ms ease-out;\n\tmargin-bottom: 0;\n}\n\n.web-uploader .filelist li img {\n\twidth: auto;\n\theight: 120px\n}\n\n.web-uploader .filelist li p.error {\n\tbackground: var(--danger);\n\tcolor: #fff;\n\tposition: absolute;\n\tbottom: 0;\n\tleft: 0;\n\theight: 28px;\n\tline-height: 28px;\n\twidth: 100%;\n\tz-index: 100\n}\n\n.web-uploader._files .filelist li p.error {\n\tbackground: var(--danger);\n\tcolor: #fff;\n\tfont-weight: 500;\n\tpadding: 0 20px;\n\twidth: auto;\n\tmargin-left: 40%;\n\ttop: 0\n}\n\n.web-uploader .filelist li .success {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\theight: 40px;\n\twidth: 100%;\n\tz-index: 200\n}\n\n.web-uploader .filelist li .success em {\n\tposition: absolute;\n\tright: 0;\n\tborder-color: transparent;\n\tborder-style: solid;\n\tborder-width: 0 0 33px 40px;\n\tborder-bottom-color: var(--success);\n\tbottom: -1px\n}\n\n.web-uploader li .success i {\n\tposition: absolute;\n\tbottom: 5px;\n\tright: 0;\n\tcolor: #fff;\n\tbackground: none;\n\tborder: none;\n\tfont-weight: bold;\n\toutline: none;\n\ttext-align: center;\n\twidth: 20px\n}\n\n.web-uploader .filelist div.file-panel {\n\tposition: absolute;\n\theight: 32px;\n\twidth: 100%;\n\tbottom: 0;\n\tleft: 0;\n\toverflow: hidden;\n\tz-index: 10\n}\n\n.web-uploader .filelist div.file-panel span {\n\tdisplay: inline;\n\tfloat: left;\n\twidth: 24px;\n\theight: 24px;\n\tline-height: 26px;\n\toverflow: hidden;\n\tmargin: 5px 3px 5px;\n\tfont-weight: bold;\n\tcursor: pointer;\n\tcolor: #fff;\n\tborder-radius: 1px;\n\tfont-size: 14px\n}\n\n.web-uploader .filelist div.file-panel a {\n\tfloat: left;\n\tmargin-left: 3px\n}\n\n.web-uploader .statusBar {\n\theight: 53px;\n\tline-height: 53px;\n\tvertical-align: middle;\n\tposition: relative\n}\n\n.web-uploader._files .statusBar {\n\tborder-top: 0;\n\tpadding: 0\n}\n\n.web-uploader .statusBar .upload-progress {\n\tborder: 0;\n\twidth: 198px;\n\theight: 18px;\n\tdisplay: inline-block;\n\ttext-align: center;\n\tline-height: 45px;\n\tcolor: #fff;\n\tmargin-top: 20px;\n\tposition: relative;\n\tmargin-right: 10px;\n\tborder-radius: 2px\n}\n\n.web-uploader .statusBar .upload-progress span.percentage {\n\twidth: 0;\n\theight: 100%;\n\tleft: 0;\n\ttop: 0;\n\tbackground: #4099df;\n\tposition: absolute\n}\n\n.web-uploader .statusBar .upload-progress span.text {\n\tposition: relative;\n\tz-index: 10\n}\n\n.web-uploader .statusBar .info {\n\tdisplay: inline-block;\n\tfont-size: 14px;\n\tcolor: #666!important;\n}\n\n.web-uploader .statusBar .btns {\n\tmargin-top: 4px;\n\tright: 20px;\n\tline-height: 40px;\n\tfloat: right\n}\n\n.web-uploader._files .statusBar .btns {\n\tright: 0\n}\n\n.add-file-button {\n\tdisplay: inline-block;\n\tfloat: left\n}\n\n.web-uploader .placeholder:before {\n\tfont-size: 80px;\n\tfont-family: feather;\n\tcontent: \"\\e8e3\";\n}\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/webuploader/webuploader.custom.js",
    "content": "/*! WebUploader 0.1.5 */\n\n\n/**\n * @fileOverview 让内部各个部件的代码可以用[amd](https://github.com/amdjs/amdjs-api/wiki/AMD)模块定义方式组织起来。\n *\n * AMD API 内部的简单不完全实现，请忽略。只有当WebUploader被合并成一个文件的时候才会引入。\n */\n(function( root, factory ) {\n    var modules = {},\n\n        // 内部require, 简单不完全实现。\n        // https://github.com/amdjs/amdjs-api/wiki/require\n        _require = function( deps, callback ) {\n            var args, len, i;\n\n            // 如果deps不是数组，则直接返回指定module\n            if ( typeof deps === 'string' ) {\n                return getModule( deps );\n            } else {\n                args = [];\n                for( len = deps.length, i = 0; i < len; i++ ) {\n                    args.push( getModule( deps[ i ] ) );\n                }\n\n                return callback.apply( null, args );\n            }\n        },\n\n        // 内部define，暂时不支持不指定id.\n        _define = function( id, deps, factory ) {\n            if ( arguments.length === 2 ) {\n                factory = deps;\n                deps = null;\n            }\n\n            _require( deps || [], function() {\n                setModule( id, factory, arguments );\n            });\n        },\n\n        // 设置module, 兼容CommonJs写法。\n        setModule = function( id, factory, args ) {\n            var module = {\n                    exports: factory\n                },\n                returned;\n\n            if ( typeof factory === 'function' ) {\n                args.length || (args = [ _require, module.exports, module ]);\n                returned = factory.apply( null, args );\n                returned !== undefined && (module.exports = returned);\n            }\n\n            modules[ id ] = module.exports;\n        },\n\n        // 根据id获取module\n        getModule = function( id ) {\n            var module = modules[ id ] || root[ id ];\n\n            if ( !module ) {\n                throw new Error( '`' + id + '` is undefined' );\n            }\n\n            return module;\n        },\n\n        // 将所有modules，将路径ids装换成对象。\n        exportsTo = function( obj ) {\n            var key, host, parts, part, last, ucFirst;\n\n            // make the first character upper case.\n            ucFirst = function( str ) {\n                return str && (str.charAt( 0 ).toUpperCase() + str.substr( 1 ));\n            };\n\n            for ( key in modules ) {\n                host = obj;\n\n                if ( !modules.hasOwnProperty( key ) ) {\n                    continue;\n                }\n\n                parts = key.split('/');\n                last = ucFirst( parts.pop() );\n\n                while( (part = ucFirst( parts.shift() )) ) {\n                    host[ part ] = host[ part ] || {};\n                    host = host[ part ];\n                }\n\n                host[ last ] = modules[ key ];\n            }\n\n            return obj;\n        },\n\n        makeExport = function( dollar ) {\n            root.__dollar = dollar;\n\n            // exports every module.\n            return exportsTo( factory( root, _define, _require ) );\n        },\n\n        origin;\n\n    if ( typeof module === 'object' && typeof module.exports === 'object' ) {\n\n        // For CommonJS and CommonJS-like environments where a proper window is present,\n        module.exports = makeExport();\n    } else if ( typeof define === 'function' && define.amd ) {\n\n        // Allow using this built library as an AMD module\n        // in another project. That other project will only\n        // see this AMD call, not the internal modules in\n        // the closure below.\n        define([ 'jquery' ], makeExport );\n    } else {\n\n        // Browser globals case. Just assign the\n        // result to a property on the global.\n        origin = root.WebUploader;\n        root.WebUploader = makeExport();\n        root.WebUploader.noConflict = function() {\n            root.WebUploader = origin;\n        };\n    }\n})( window, function( window, define, require ) {\n\n\n    /**\n     * @fileOverview jQuery or Zepto\n     */\n    define('dollar-third',[],function() {\n        var $ = window.__dollar || window.jQuery || window.Zepto;\n    \n        if ( !$ ) {\n            throw new Error('jQuery or Zepto not found!');\n        }\n    \n        return $;\n    });\n    /**\n     * @fileOverview Dom 操作相关\n     */\n    define('dollar',[\n        'dollar-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * 直接来源于jquery的代码。\n     * @fileOverview Promise/A+\n     * @beta\n     */\n    define('promise-builtin',[\n        'dollar'\n    ], function( $ ) {\n    \n        var api;\n    \n        // 简单版Callbacks, 默认memory，可选once.\n        function Callbacks( once ) {\n            var list = [],\n                stack = !once && [],\n                fire = function( data ) {\n                    memory = data;\n                    fired = true;\n                    firingIndex = firingStart || 0;\n                    firingStart = 0;\n                    firingLength = list.length;\n                    firing = true;\n    \n                    for ( ; list && firingIndex < firingLength; firingIndex++ ) {\n                        list[ firingIndex ].apply( data[ 0 ], data[ 1 ] );\n                    }\n                    firing = false;\n    \n                    if ( list ) {\n                        if ( stack ) {\n                            stack.length && fire( stack.shift() );\n                        }  else {\n                            list = [];\n                        }\n                    }\n                },\n                self = {\n                    add: function() {\n                        if ( list ) {\n                            var start = list.length;\n                            (function add ( args ) {\n                                $.each( args, function( _, arg ) {\n                                    var type = $.type( arg );\n                                    if ( type === 'function' ) {\n                                        list.push( arg );\n                                    } else if ( arg && arg.length &&\n                                            type !== 'string' ) {\n    \n                                        add( arg );\n                                    }\n                                });\n                            })( arguments );\n    \n                            if ( firing ) {\n                                firingLength = list.length;\n                            } else if ( memory ) {\n                                firingStart = start;\n                                fire( memory );\n                            }\n                        }\n                        return this;\n                    },\n    \n                    disable: function() {\n                        list = stack = memory = undefined;\n                        return this;\n                    },\n    \n                    // Lock the list in its current state\n                    lock: function() {\n                        stack = undefined;\n                        if ( !memory ) {\n                            self.disable();\n                        }\n                        return this;\n                    },\n    \n                    fireWith: function( context, args ) {\n                        if ( list && (!fired || stack) ) {\n                            args = args || [];\n                            args = [ context, args.slice ? args.slice() : args ];\n                            if ( firing ) {\n                                stack.push( args );\n                            } else {\n                                fire( args );\n                            }\n                        }\n                        return this;\n                    },\n    \n                    fire: function() {\n                        self.fireWith( this, arguments );\n                        return this;\n                    }\n                },\n    \n                fired, firing, firingStart, firingLength, firingIndex, memory;\n    \n            return self;\n        }\n    \n        function Deferred( func ) {\n            var tuples = [\n                    // action, add listener, listener list, final state\n                    [ 'resolve', 'done', Callbacks( true ), 'resolved' ],\n                    [ 'reject', 'fail', Callbacks( true ), 'rejected' ],\n                    [ 'notify', 'progress', Callbacks() ]\n                ],\n                state = 'pending',\n                promise = {\n                    state: function() {\n                        return state;\n                    },\n                    always: function() {\n                        deferred.done( arguments ).fail( arguments );\n                        return this;\n                    },\n                    then: function( /* fnDone, fnFail, fnProgress */ ) {\n                        var fns = arguments;\n                        return Deferred(function( newDefer ) {\n                            $.each( tuples, function( i, tuple ) {\n                                var action = tuple[ 0 ],\n                                    fn = $.isFunction( fns[ i ] ) && fns[ i ];\n    \n                                // deferred[ done | fail | progress ] for\n                                // forwarding actions to newDefer\n                                deferred[ tuple[ 1 ] ](function() {\n                                    var returned;\n    \n                                    returned = fn && fn.apply( this, arguments );\n    \n                                    if ( returned &&\n                                            $.isFunction( returned.promise ) ) {\n    \n                                        returned.promise()\n                                                .done( newDefer.resolve )\n                                                .fail( newDefer.reject )\n                                                .progress( newDefer.notify );\n                                    } else {\n                                        newDefer[ action + 'With' ](\n                                                this === promise ?\n                                                newDefer.promise() :\n                                                this,\n                                                fn ? [ returned ] : arguments );\n                                    }\n                                });\n                            });\n                            fns = null;\n                        }).promise();\n                    },\n    \n                    // Get a promise for this deferred\n                    // If obj is provided, the promise aspect is added to the object\n                    promise: function( obj ) {\n    \n                        return obj != null ? $.extend( obj, promise ) : promise;\n                    }\n                },\n                deferred = {};\n    \n            // Keep pipe for back-compat\n            promise.pipe = promise.then;\n    \n            // Add list-specific methods\n            $.each( tuples, function( i, tuple ) {\n                var list = tuple[ 2 ],\n                    stateString = tuple[ 3 ];\n    \n                // promise[ done | fail | progress ] = list.add\n                promise[ tuple[ 1 ] ] = list.add;\n    \n                // Handle state\n                if ( stateString ) {\n                    list.add(function() {\n                        // state = [ resolved | rejected ]\n                        state = stateString;\n    \n                    // [ reject_list | resolve_list ].disable; progress_list.lock\n                    }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n                }\n    \n                // deferred[ resolve | reject | notify ]\n                deferred[ tuple[ 0 ] ] = function() {\n                    deferred[ tuple[ 0 ] + 'With' ]( this === deferred ? promise :\n                            this, arguments );\n                    return this;\n                };\n                deferred[ tuple[ 0 ] + 'With' ] = list.fireWith;\n            });\n    \n            // Make the deferred a promise\n            promise.promise( deferred );\n    \n            // Call given func if any\n            if ( func ) {\n                func.call( deferred, deferred );\n            }\n    \n            // All done!\n            return deferred;\n        }\n    \n        api = {\n            /**\n             * 创建一个[Deferred](http://api.jquery.com/category/deferred-object/)对象。\n             * 详细的Deferred用法说明，请参照jQuery的API文档。\n             *\n             * Deferred对象在钩子回掉函数中经常要用到，用来处理需要等待的异步操作。\n             *\n             * @for  Base\n             * @method Deferred\n             * @grammar Base.Deferred() => Deferred\n             * @example\n             * // 在文件开始发送前做些异步操作。\n             * // WebUploader会等待此异步操作完成后，开始发送文件。\n             * Uploader.register({\n             *     'before-send-file': 'doSomthingAsync'\n             * }, {\n             *\n             *     doSomthingAsync: function() {\n             *         var deferred = Base.Deferred();\n             *\n             *         // 模拟一次异步操作。\n             *         setTimeout(deferred.resolve, 2000);\n             *\n             *         return deferred.promise();\n             *     }\n             * });\n             */\n            Deferred: Deferred,\n    \n            /**\n             * 判断传入的参数是否为一个promise对象。\n             * @method isPromise\n             * @grammar Base.isPromise( anything ) => Boolean\n             * @param  {*}  anything 检测对象。\n             * @return {Boolean}\n             * @for  Base\n             * @example\n             * console.log( Base.isPromise() );    // => false\n             * console.log( Base.isPromise({ key: '123' }) );    // => false\n             * console.log( Base.isPromise( Base.Deferred().promise() ) );    // => true\n             *\n             * // Deferred也是一个Promise\n             * console.log( Base.isPromise( Base.Deferred() ) );    // => true\n             */\n            isPromise: function( anything ) {\n                return anything && typeof anything.then === 'function';\n            },\n    \n            /**\n             * 返回一个promise，此promise在所有传入的promise都完成了后完成。\n             * 详细请查看[这里](http://api.jquery.com/jQuery.when/)。\n             *\n             * @method when\n             * @for  Base\n             * @grammar Base.when( promise1[, promise2[, promise3...]] ) => Promise\n             */\n            when: function( subordinate /* , ..., subordinateN */ ) {\n                var i = 0,\n                    slice = [].slice,\n                    resolveValues = slice.call( arguments ),\n                    length = resolveValues.length,\n    \n                    // the count of uncompleted subordinates\n                    remaining = length !== 1 || (subordinate &&\n                        $.isFunction( subordinate.promise )) ? length : 0,\n    \n                    // the master Deferred. If resolveValues consist of\n                    // only a single Deferred, just use that.\n                    deferred = remaining === 1 ? subordinate : Deferred(),\n    \n                    // Update function for both resolve and progress values\n                    updateFunc = function( i, contexts, values ) {\n                        return function( value ) {\n                            contexts[ i ] = this;\n                            values[ i ] = arguments.length > 1 ?\n                                    slice.call( arguments ) : value;\n    \n                            if ( values === progressValues ) {\n                                deferred.notifyWith( contexts, values );\n                            } else if ( !(--remaining) ) {\n                                deferred.resolveWith( contexts, values );\n                            }\n                        };\n                    },\n    \n                    progressValues, progressContexts, resolveContexts;\n    \n                // add listeners to Deferred subordinates; treat others as resolved\n                if ( length > 1 ) {\n                    progressValues = new Array( length );\n                    progressContexts = new Array( length );\n                    resolveContexts = new Array( length );\n                    for ( ; i < length; i++ ) {\n                        if ( resolveValues[ i ] &&\n                                $.isFunction( resolveValues[ i ].promise ) ) {\n    \n                            resolveValues[ i ].promise()\n                                    .done( updateFunc( i, resolveContexts,\n                                            resolveValues ) )\n                                    .fail( deferred.reject )\n                                    .progress( updateFunc( i, progressContexts,\n                                            progressValues ) );\n                        } else {\n                            --remaining;\n                        }\n                    }\n                }\n    \n                // if we're not waiting on anything, resolve the master\n                if ( !remaining ) {\n                    deferred.resolveWith( resolveContexts, resolveValues );\n                }\n    \n                return deferred.promise();\n            }\n        };\n    \n        return api;\n    });\n    define('promise',[\n        'promise-builtin'\n    ], function( $ ) {\n        return $;\n    });\n    /**\n     * @fileOverview 基础类方法。\n     */\n    \n    /**\n     * Web Uploader内部类的详细说明，以下提及的功能类，都可以在`WebUploader`这个变量中访问到。\n     *\n     * As you know, Web Uploader的每个文件都是用过[AMD](https://github.com/amdjs/amdjs-api/wiki/AMD)规范中的`define`组织起来的, 每个Module都会有个module id.\n     * 默认module id为该文件的路径，而此路径将会转化成名字空间存放在WebUploader中。如：\n     *\n     * * module `base`：WebUploader.Base\n     * * module `file`: WebUploader.File\n     * * module `lib/dnd`: WebUploader.Lib.Dnd\n     * * module `runtime/html5/dnd`: WebUploader.Runtime.Html5.Dnd\n     *\n     *\n     * 以下文档中对类的使用可能省略掉了`WebUploader`前缀。\n     * @module WebUploader\n     * @title WebUploader API文档\n     */\n    define('base',[\n        'dollar',\n        'promise'\n    ], function( $, promise ) {\n    \n        var noop = function() {},\n            call = Function.call;\n    \n        // http://jsperf.com/uncurrythis\n        // 反科里化\n        function uncurryThis( fn ) {\n            return function() {\n                return call.apply( fn, arguments );\n            };\n        }\n    \n        function bindFn( fn, context ) {\n            return function() {\n                return fn.apply( context, arguments );\n            };\n        }\n    \n        function createObject( proto ) {\n            var f;\n    \n            if ( Object.create ) {\n                return Object.create( proto );\n            } else {\n                f = function() {};\n                f.prototype = proto;\n                return new f();\n            }\n        }\n    \n    \n        /**\n         * 基础类，提供一些简单常用的方法。\n         * @class Base\n         */\n        return {\n    \n            /**\n             * @property {String} version 当前版本号。\n             */\n            version: '0.1.5',\n    \n            /**\n             * @property {jQuery|Zepto} $ 引用依赖的jQuery或者Zepto对象。\n             */\n            $: $,\n    \n            Deferred: promise.Deferred,\n    \n            isPromise: promise.isPromise,\n    \n            when: promise.when,\n    \n            /**\n             * @description  简单的浏览器检查结果。\n             *\n             * * `webkit`  webkit版本号，如果浏览器为非webkit内核，此属性为`undefined`。\n             * * `chrome`  chrome浏览器版本号，如果浏览器为chrome，此属性为`undefined`。\n             * * `ie`  ie浏览器版本号，如果浏览器为非ie，此属性为`undefined`。**暂不支持ie10+**\n             * * `firefox`  firefox浏览器版本号，如果浏览器为非firefox，此属性为`undefined`。\n             * * `safari`  safari浏览器版本号，如果浏览器为非safari，此属性为`undefined`。\n             * * `opera`  opera浏览器版本号，如果浏览器为非opera，此属性为`undefined`。\n             *\n             * @property {Object} [browser]\n             */\n            browser: (function( ua ) {\n                var ret = {},\n                    webkit = ua.match( /WebKit\\/([\\d.]+)/ ),\n                    chrome = ua.match( /Chrome\\/([\\d.]+)/ ) ||\n                        ua.match( /CriOS\\/([\\d.]+)/ ),\n    \n                    ie = ua.match( /MSIE\\s([\\d\\.]+)/ ) ||\n                        ua.match( /(?:trident)(?:.*rv:([\\w.]+))?/i ),\n                    firefox = ua.match( /Firefox\\/([\\d.]+)/ ),\n                    safari = ua.match( /Safari\\/([\\d.]+)/ ),\n                    opera = ua.match( /OPR\\/([\\d.]+)/ );\n    \n                webkit && (ret.webkit = parseFloat( webkit[ 1 ] ));\n                chrome && (ret.chrome = parseFloat( chrome[ 1 ] ));\n                ie && (ret.ie = parseFloat( ie[ 1 ] ));\n                firefox && (ret.firefox = parseFloat( firefox[ 1 ] ));\n                safari && (ret.safari = parseFloat( safari[ 1 ] ));\n                opera && (ret.opera = parseFloat( opera[ 1 ] ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * @description  操作系统检查结果。\n             *\n             * * `android`  如果在android浏览器环境下，此值为对应的android版本号，否则为`undefined`。\n             * * `ios` 如果在ios浏览器环境下，此值为对应的ios版本号，否则为`undefined`。\n             * @property {Object} [os]\n             */\n            os: (function( ua ) {\n                var ret = {},\n    \n                    // osx = !!ua.match( /\\(Macintosh\\; Intel / ),\n                    android = ua.match( /(?:Android);?[\\s\\/]+([\\d.]+)?/ ),\n                    ios = ua.match( /(?:iPad|iPod|iPhone).*OS\\s([\\d_]+)/ );\n    \n                // osx && (ret.osx = true);\n                android && (ret.android = parseFloat( android[ 1 ] ));\n                ios && (ret.ios = parseFloat( ios[ 1 ].replace( /_/g, '.' ) ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * 实现类与类之间的继承。\n             * @method inherits\n             * @grammar Base.inherits( super ) => child\n             * @grammar Base.inherits( super, protos ) => child\n             * @grammar Base.inherits( super, protos, statics ) => child\n             * @param  {Class} super 父类\n             * @param  {Object | Function} [protos] 子类或者对象。如果对象中包含constructor，子类将是用此属性值。\n             * @param  {Function} [protos.constructor] 子类构造器，不指定的话将创建个临时的直接执行父类构造器的方法。\n             * @param  {Object} [statics] 静态属性或方法。\n             * @return {Class} 返回子类。\n             * @example\n             * function Person() {\n             *     console.log( 'Super' );\n             * }\n             * Person.prototype.hello = function() {\n             *     console.log( 'hello' );\n             * };\n             *\n             * var Manager = Base.inherits( Person, {\n             *     world: function() {\n             *         console.log( 'World' );\n             *     }\n             * });\n             *\n             * // 因为没有指定构造器，父类的构造器将会执行。\n             * var instance = new Manager();    // => Super\n             *\n             * // 继承子父类的方法\n             * instance.hello();    // => hello\n             * instance.world();    // => World\n             *\n             * // 子类的__super__属性指向父类\n             * console.log( Manager.__super__ === Person );    // => true\n             */\n            inherits: function( Super, protos, staticProtos ) {\n                var child;\n    \n                if ( typeof protos === 'function' ) {\n                    child = protos;\n                    protos = null;\n                } else if ( protos && protos.hasOwnProperty('constructor') ) {\n                    child = protos.constructor;\n                } else {\n                    child = function() {\n                        return Super.apply( this, arguments );\n                    };\n                }\n    \n                // 复制静态方法\n                $.extend( true, child, Super, staticProtos || {} );\n    \n                /* jshint camelcase: false */\n    \n                // 让子类的__super__属性指向父类。\n                child.__super__ = Super.prototype;\n    \n                // 构建原型，添加原型方法或属性。\n                // 暂时用Object.create实现。\n                child.prototype = createObject( Super.prototype );\n                protos && $.extend( true, child.prototype, protos );\n    \n                return child;\n            },\n    \n            /**\n             * 一个不做任何事情的方法。可以用来赋值给默认的callback.\n             * @method noop\n             */\n            noop: noop,\n    \n            /**\n             * 返回一个新的方法，此方法将已指定的`context`来执行。\n             * @grammar Base.bindFn( fn, context ) => Function\n             * @method bindFn\n             * @example\n             * var doSomething = function() {\n             *         console.log( this.name );\n             *     },\n             *     obj = {\n             *         name: 'Object Name'\n             *     },\n             *     aliasFn = Base.bind( doSomething, obj );\n             *\n             *  aliasFn();    // => Object Name\n             *\n             */\n            bindFn: bindFn,\n    \n            /**\n             * 引用Console.log如果存在的话，否则引用一个[空函数noop](#WebUploader:Base.noop)。\n             * @grammar Base.log( args... ) => undefined\n             * @method log\n             */\n            log: (function() {\n                if ( window.console ) {\n                    return bindFn( console.log, console );\n                }\n                return noop;\n            })(),\n    \n            nextTick: (function() {\n    \n                return function( cb ) {\n                    setTimeout( cb, 1 );\n                };\n    \n                // @bug 当浏览器不在当前窗口时就停了。\n                // var next = window.requestAnimationFrame ||\n                //     window.webkitRequestAnimationFrame ||\n                //     window.mozRequestAnimationFrame ||\n                //     function( cb ) {\n                //         window.setTimeout( cb, 1000 / 60 );\n                //     };\n    \n                // // fix: Uncaught TypeError: Illegal invocation\n                // return bindFn( next, window );\n            })(),\n    \n            /**\n             * 被[uncurrythis](http://www.2ality.com/2011/11/uncurrying-this.html)的数组slice方法。\n             * 将用来将非数组对象转化成数组对象。\n             * @grammar Base.slice( target, start[, end] ) => Array\n             * @method slice\n             * @example\n             * function doSomthing() {\n             *     var args = Base.slice( arguments, 1 );\n             *     console.log( args );\n             * }\n             *\n             * doSomthing( 'ignored', 'arg2', 'arg3' );    // => Array [\"arg2\", \"arg3\"]\n             */\n            slice: uncurryThis( [].slice ),\n    \n            /**\n             * 生成唯一的ID\n             * @method guid\n             * @grammar Base.guid() => String\n             * @grammar Base.guid( prefx ) => String\n             */\n            guid: (function() {\n                var counter = 0;\n    \n                return function( prefix ) {\n                    var guid = (+new Date()).toString( 32 ),\n                        i = 0;\n    \n                    for ( ; i < 5; i++ ) {\n                        guid += Math.floor( Math.random() * 65535 ).toString( 32 );\n                    }\n    \n                    return (prefix || 'wu_') + guid + (counter++).toString( 32 );\n                };\n            })(),\n    \n            /**\n             * 格式化文件大小, 输出成带单位的字符串\n             * @method formatSize\n             * @grammar Base.formatSize( size ) => String\n             * @grammar Base.formatSize( size, pointLength ) => String\n             * @grammar Base.formatSize( size, pointLength, units ) => String\n             * @param {Number} size 文件大小\n             * @param {Number} [pointLength=2] 精确到的小数点数。\n             * @param {Array} [units=[ 'B', 'K', 'M', 'G', 'TB' ]] 单位数组。从字节，到千字节，一直往上指定。如果单位数组里面只指定了到了K(千字节)，同时文件大小大于M, 此方法的输出将还是显示成多少K.\n             * @example\n             * console.log( Base.formatSize( 100 ) );    // => 100B\n             * console.log( Base.formatSize( 1024 ) );    // => 1.00K\n             * console.log( Base.formatSize( 1024, 0 ) );    // => 1K\n             * console.log( Base.formatSize( 1024 * 1024 ) );    // => 1.00M\n             * console.log( Base.formatSize( 1024 * 1024 * 1024 ) );    // => 1.00G\n             * console.log( Base.formatSize( 1024 * 1024 * 1024, 0, ['B', 'KB', 'MB'] ) );    // => 1024MB\n             */\n            formatSize: function( size, pointLength, units ) {\n                var unit;\n    \n                units = units || [ 'B', 'K', 'M', 'G', 'TB' ];\n    \n                while ( (unit = units.shift()) && size > 1024 ) {\n                    size = size / 1024;\n                }\n    \n                return (unit === 'B' ? size : size.toFixed( pointLength || 2 )) +\n                        unit;\n            }\n        };\n    });\n    /**\n     * 事件处理类，可以独立使用，也可以扩展给对象使用。\n     * @fileOverview Mediator\n     */\n    define('mediator',[\n        'base'\n    ], function( Base ) {\n        var $ = Base.$,\n            slice = [].slice,\n            separator = /\\s+/,\n            protos;\n    \n        // 根据条件过滤出事件handlers.\n        function findHandlers( arr, name, callback, context ) {\n            return $.grep( arr, function( handler ) {\n                return handler &&\n                        (!name || handler.e === name) &&\n                        (!callback || handler.cb === callback ||\n                        handler.cb._cb === callback) &&\n                        (!context || handler.ctx === context);\n            });\n        }\n    \n        function eachEvent( events, callback, iterator ) {\n            // 不支持对象，只支持多个event用空格隔开\n            $.each( (events || '').split( separator ), function( _, key ) {\n                iterator( key, callback );\n            });\n        }\n    \n        function triggerHanders( events, args ) {\n            var stoped = false,\n                i = -1,\n                len = events.length,\n                handler;\n    \n            while ( ++i < len ) {\n                handler = events[ i ];\n    \n                if ( handler.cb.apply( handler.ctx2, args ) === false ) {\n                    stoped = true;\n                    break;\n                }\n            }\n    \n            return !stoped;\n        }\n    \n        protos = {\n    \n            /**\n             * 绑定事件。\n             *\n             * `callback`方法在执行时，arguments将会来源于trigger的时候携带的参数。如\n             * ```javascript\n             * var obj = {};\n             *\n             * // 使得obj有事件行为\n             * Mediator.installTo( obj );\n             *\n             * obj.on( 'testa', function( arg1, arg2 ) {\n             *     console.log( arg1, arg2 ); // => 'arg1', 'arg2'\n             * });\n             *\n             * obj.trigger( 'testa', 'arg1', 'arg2' );\n             * ```\n             *\n             * 如果`callback`中，某一个方法`return false`了，则后续的其他`callback`都不会被执行到。\n             * 切会影响到`trigger`方法的返回值，为`false`。\n             *\n             * `on`还可以用来添加一个特殊事件`all`, 这样所有的事件触发都会响应到。同时此类`callback`中的arguments有一个不同处，\n             * 就是第一个参数为`type`，记录当前是什么事件在触发。此类`callback`的优先级比脚低，会再正常`callback`执行完后触发。\n             * ```javascript\n             * obj.on( 'all', function( type, arg1, arg2 ) {\n             *     console.log( type, arg1, arg2 ); // => 'testa', 'arg1', 'arg2'\n             * });\n             * ```\n             *\n             * @method on\n             * @grammar on( name, callback[, context] ) => self\n             * @param  {String}   name     事件名，支持多个事件用空格隔开\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             * @class Mediator\n             */\n            on: function( name, callback, context ) {\n                var me = this,\n                    set;\n    \n                if ( !callback ) {\n                    return this;\n                }\n    \n                set = this._events || (this._events = []);\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var handler = { e: name };\n    \n                    handler.cb = callback;\n                    handler.ctx = context;\n                    handler.ctx2 = context || me;\n                    handler.id = set.length;\n    \n                    set.push( handler );\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 绑定事件，且当handler执行完后，自动解除绑定。\n             * @method once\n             * @grammar once( name, callback[, context] ) => self\n             * @param  {String}   name     事件名\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            once: function( name, callback, context ) {\n                var me = this;\n    \n                if ( !callback ) {\n                    return me;\n                }\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var once = function() {\n                            me.off( name, once );\n                            return callback.apply( context || me, arguments );\n                        };\n    \n                    once._cb = callback;\n                    me.on( name, once, context );\n                });\n    \n                return me;\n            },\n    \n            /**\n             * 解除事件绑定\n             * @method off\n             * @grammar off( [name[, callback[, context] ] ] ) => self\n             * @param  {String}   [name]     事件名\n             * @param  {Function} [callback] 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            off: function( name, cb, ctx ) {\n                var events = this._events;\n    \n                if ( !events ) {\n                    return this;\n                }\n    \n                if ( !name && !cb && !ctx ) {\n                    this._events = [];\n                    return this;\n                }\n    \n                eachEvent( name, cb, function( name, cb ) {\n                    $.each( findHandlers( events, name, cb, ctx ), function() {\n                        delete events[ this.id ];\n                    });\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 触发事件\n             * @method trigger\n             * @grammar trigger( name[, args...] ) => self\n             * @param  {String}   type     事件名\n             * @param  {*} [...] 任意参数\n             * @return {Boolean} 如果handler中return false了，则返回false, 否则返回true\n             */\n            trigger: function( type ) {\n                var args, events, allEvents;\n    \n                if ( !this._events || !type ) {\n                    return this;\n                }\n    \n                args = slice.call( arguments, 1 );\n                events = findHandlers( this._events, type );\n                allEvents = findHandlers( this._events, 'all' );\n    \n                return triggerHanders( events, args ) &&\n                        triggerHanders( allEvents, arguments );\n            }\n        };\n    \n        /**\n         * 中介者，它本身是个单例，但可以通过[installTo](#WebUploader:Mediator:installTo)方法，使任何对象具备事件行为。\n         * 主要目的是负责模块与模块之间的合作，降低耦合度。\n         *\n         * @class Mediator\n         */\n        return $.extend({\n    \n            /**\n             * 可以通过这个接口，使任何对象具备事件功能。\n             * @method installTo\n             * @param  {Object} obj 需要具备事件行为的对象。\n             * @return {Object} 返回obj.\n             */\n            installTo: function( obj ) {\n                return $.extend( obj, protos );\n            }\n    \n        }, protos );\n    });\n    /**\n     * @fileOverview Uploader上传类\n     */\n    define('uploader',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$;\n    \n        /**\n         * 上传入口类。\n         * @class Uploader\n         * @constructor\n         * @grammar new Uploader( opts ) => Uploader\n         * @example\n         * var uploader = WebUploader.Uploader({\n         *     swf: 'path_of_swf/Uploader.swf',\n         *\n         *     // 开起分片上传。\n         *     chunked: true\n         * });\n         */\n        function Uploader( opts ) {\n            this.options = $.extend( true, {}, Uploader.options, opts );\n            this._init( this.options );\n        }\n    \n        // default Options\n        // widgets中有相应扩展\n        Uploader.options = {};\n        Mediator.installTo( Uploader.prototype );\n    \n        // 批量添加纯命令式方法。\n        $.each({\n            upload: 'start-upload',\n            stop: 'stop-upload',\n            getFile: 'get-file',\n            getFiles: 'get-files',\n            addFile: 'add-file',\n            addFiles: 'add-file',\n            sort: 'sort-files',\n            removeFile: 'remove-file',\n            cancelFile: 'cancel-file',\n            skipFile: 'skip-file',\n            retry: 'retry',\n            isInProgress: 'is-in-progress',\n            makeThumb: 'make-thumb',\n            md5File: 'md5-file',\n            getDimension: 'get-dimension',\n            addButton: 'add-btn',\n            predictRuntimeType: 'predict-runtime-type',\n            refresh: 'refresh',\n            disable: 'disable',\n            enable: 'enable',\n            reset: 'reset'\n        }, function( fn, command ) {\n            Uploader.prototype[ fn ] = function() {\n                return this.request( command, arguments );\n            };\n        });\n    \n        $.extend( Uploader.prototype, {\n            state: 'pending',\n    \n            _init: function( opts ) {\n                var me = this;\n    \n                me.request( 'init', opts, function() {\n                    me.state = 'ready';\n                    me.trigger('ready');\n                });\n            },\n    \n            /**\n             * 获取或者设置Uploader配置项。\n             * @method option\n             * @grammar option( key ) => *\n             * @grammar option( key, val ) => self\n             * @example\n             *\n             * // 初始状态图片上传前不会压缩\n             * var uploader = new WebUploader.Uploader({\n             *     compress: null;\n             * });\n             *\n             * // 修改后图片上传前，尝试将图片压缩到1600 * 1600\n             * uploader.option( 'compress', {\n             *     width: 1600,\n             *     height: 1600\n             * });\n             */\n            option: function( key, val ) {\n                var opts = this.options;\n    \n                // setter\n                if ( arguments.length > 1 ) {\n    \n                    if ( $.isPlainObject( val ) &&\n                            $.isPlainObject( opts[ key ] ) ) {\n                        $.extend( opts[ key ], val );\n                    } else {\n                        opts[ key ] = val;\n                    }\n    \n                } else {    // getter\n                    return key ? opts[ key ] : opts;\n                }\n            },\n    \n            /**\n             * 获取文件统计信息。返回一个包含一下信息的对象。\n             * * `successNum` 上传成功的文件数\n             * * `progressNum` 上传中的文件数\n             * * `cancelNum` 被删除的文件数\n             * * `invalidNum` 无效的文件数\n             * * `uploadFailNum` 上传失败的文件数\n             * * `queueNum` 还在队列中的文件数\n             * * `interruptNum` 被暂停的文件数\n             * @method getStats\n             * @grammar getStats() => Object\n             */\n            getStats: function() {\n                // return this._mgr.getStats.apply( this._mgr, arguments );\n                var stats = this.request('get-stats');\n    \n                return stats ? {\n                    successNum: stats.numOfSuccess,\n                    progressNum: stats.numOfProgress,\n    \n                    // who care?\n                    // queueFailNum: 0,\n                    cancelNum: stats.numOfCancel,\n                    invalidNum: stats.numOfInvalid,\n                    uploadFailNum: stats.numOfUploadFailed,\n                    queueNum: stats.numOfQueue,\n                    interruptNum: stats.numofInterrupt\n                } : {};\n            },\n    \n            // 需要重写此方法来来支持opts.onEvent和instance.onEvent的处理器\n            trigger: function( type/*, args...*/ ) {\n                var args = [].slice.call( arguments, 1 ),\n                    opts = this.options,\n                    name = 'on' + type.substring( 0, 1 ).toUpperCase() +\n                        type.substring( 1 );\n    \n                if (\n                        // 调用通过on方法注册的handler.\n                        Mediator.trigger.apply( this, arguments ) === false ||\n    \n                        // 调用opts.onEvent\n                        $.isFunction( opts[ name ] ) &&\n                        opts[ name ].apply( this, args ) === false ||\n    \n                        // 调用this.onEvent\n                        $.isFunction( this[ name ] ) &&\n                        this[ name ].apply( this, args ) === false ||\n    \n                        // 广播所有uploader的事件。\n                        Mediator.trigger.apply( Mediator,\n                        [ this, type ].concat( args ) ) === false ) {\n    \n                    return false;\n                }\n    \n                return true;\n            },\n    \n            /**\n             * 销毁 webuploader 实例\n             * @method destroy\n             * @grammar destroy() => undefined\n             */\n            destroy: function() {\n                this.request( 'destroy', arguments );\n                this.off();\n            },\n    \n            // widgets/widget.js将补充此方法的详细文档。\n            request: Base.noop\n        });\n    \n        /**\n         * 创建Uploader实例，等同于new Uploader( opts );\n         * @method create\n         * @class Base\n         * @static\n         * @grammar Base.create( opts ) => Uploader\n         */\n        Base.create = Uploader.create = function( opts ) {\n            return new Uploader( opts );\n        };\n    \n        // 暴露Uploader，可以通过它来扩展业务逻辑。\n        Base.Uploader = Uploader;\n    \n        return Uploader;\n    });\n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/runtime',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            factories = {},\n    \n            // 获取对象的第一个key\n            getFirstKey = function( obj ) {\n                for ( var key in obj ) {\n                    if ( obj.hasOwnProperty( key ) ) {\n                        return key;\n                    }\n                }\n                return null;\n            };\n    \n        // 接口类。\n        function Runtime( options ) {\n            this.options = $.extend({\n                container: document.body\n            }, options );\n            this.uid = Base.guid('rt_');\n        }\n    \n        $.extend( Runtime.prototype, {\n    \n            getContainer: function() {\n                var opts = this.options,\n                    parent, container;\n    \n                if ( this._container ) {\n                    return this._container;\n                }\n    \n                parent = $( opts.container || document.body );\n                container = $( document.createElement('div') );\n    \n                container.attr( 'id', 'rt_' + this.uid );\n                container.css({\n                    position: 'absolute',\n                    top: '0px',\n                    left: '0px',\n                    width: '1px',\n                    height: '1px',\n                    overflow: 'hidden'\n                });\n    \n                parent.append( container );\n                parent.addClass('webuploader-container');\n                this._container = container;\n                this._parent = parent;\n                return container;\n            },\n    \n            init: Base.noop,\n            exec: Base.noop,\n    \n            destroy: function() {\n                this._container && this._container.remove();\n                this._parent && this._parent.removeClass('webuploader-container');\n                this.off();\n            }\n        });\n    \n        Runtime.orders = 'html5,flash';\n    \n    \n        /**\n         * 添加Runtime实现。\n         * @param {String} type    类型\n         * @param {Runtime} factory 具体Runtime实现。\n         */\n        Runtime.addRuntime = function( type, factory ) {\n            factories[ type ] = factory;\n        };\n    \n        Runtime.hasRuntime = function( type ) {\n            return !!(type ? factories[ type ] : getFirstKey( factories ));\n        };\n    \n        Runtime.create = function( opts, orders ) {\n            var type, runtime;\n    \n            orders = orders || Runtime.orders;\n            $.each( orders.split( /\\s*,\\s*/g ), function() {\n                if ( factories[ this ] ) {\n                    type = this;\n                    return false;\n                }\n            });\n    \n            type = type || getFirstKey( factories );\n    \n            if ( !type ) {\n                throw new Error('Runtime Error');\n            }\n    \n            runtime = new factories[ type ]( opts );\n            return runtime;\n        };\n    \n        Mediator.installTo( Runtime.prototype );\n        return Runtime;\n    });\n    \n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/client',[\n        'base',\n        'mediator',\n        'runtime/runtime'\n    ], function( Base, Mediator, Runtime ) {\n    \n        var cache;\n    \n        cache = (function() {\n            var obj = {};\n    \n            return {\n                add: function( runtime ) {\n                    obj[ runtime.uid ] = runtime;\n                },\n    \n                get: function( ruid, standalone ) {\n                    var i;\n    \n                    if ( ruid ) {\n                        return obj[ ruid ];\n                    }\n    \n                    for ( i in obj ) {\n                        // 有些类型不能重用，比如filepicker.\n                        if ( standalone && obj[ i ].__standalone ) {\n                            continue;\n                        }\n    \n                        return obj[ i ];\n                    }\n    \n                    return null;\n                },\n    \n                remove: function( runtime ) {\n                    delete obj[ runtime.uid ];\n                }\n            };\n        })();\n    \n        function RuntimeClient( component, standalone ) {\n            var deferred = Base.Deferred(),\n                runtime;\n    \n            this.uid = Base.guid('client_');\n    \n            // 允许runtime没有初始化之前，注册一些方法在初始化后执行。\n            this.runtimeReady = function( cb ) {\n                return deferred.done( cb );\n            };\n    \n            this.connectRuntime = function( opts, cb ) {\n    \n                // already connected.\n                if ( runtime ) {\n                    throw new Error('already connected!');\n                }\n    \n                deferred.done( cb );\n    \n                if ( typeof opts === 'string' && cache.get( opts ) ) {\n                    runtime = cache.get( opts );\n                }\n    \n                // 像filePicker只能独立存在，不能公用。\n                runtime = runtime || cache.get( null, standalone );\n    \n                // 需要创建\n                if ( !runtime ) {\n                    runtime = Runtime.create( opts, opts.runtimeOrder );\n                    runtime.__promise = deferred.promise();\n                    runtime.once( 'ready', deferred.resolve );\n                    runtime.init();\n                    cache.add( runtime );\n                    runtime.__client = 1;\n                } else {\n                    // 来自cache\n                    Base.$.extend( runtime.options, opts );\n                    runtime.__promise.then( deferred.resolve );\n                    runtime.__client++;\n                }\n    \n                standalone && (runtime.__standalone = standalone);\n                return runtime;\n            };\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.disconnectRuntime = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                runtime.__client--;\n    \n                if ( runtime.__client <= 0 ) {\n                    cache.remove( runtime );\n                    delete runtime.__promise;\n                    runtime.destroy();\n                }\n    \n                runtime = null;\n            };\n    \n            this.exec = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                var args = Base.slice( arguments );\n                component && args.unshift( component );\n    \n                return runtime.exec.apply( this, args );\n            };\n    \n            this.getRuid = function() {\n                return runtime && runtime.uid;\n            };\n    \n            this.destroy = (function( destroy ) {\n                return function() {\n                    destroy && destroy.apply( this, arguments );\n                    this.trigger('destroy');\n                    this.off();\n                    this.exec('destroy');\n                    this.disconnectRuntime();\n                };\n            })( this.destroy );\n        }\n    \n        Mediator.installTo( RuntimeClient.prototype );\n        return RuntimeClient;\n    });\n    /**\n     * @fileOverview Blob\n     */\n    define('lib/blob',[\n        'base',\n        'runtime/client'\n    ], function( Base, RuntimeClient ) {\n    \n        function Blob( ruid, source ) {\n            var me = this;\n    \n            me.source = source;\n            me.ruid = ruid;\n            this.size = source.size || 0;\n    \n            // 如果没有指定 mimetype, 但是知道文件后缀。\n            if ( !source.type && this.ext &&\n                    ~'jpg,jpeg,png,gif,bmp'.indexOf( this.ext ) ) {\n                this.type = 'image/' + (this.ext === 'jpg' ? 'jpeg' : this.ext);\n            } else {\n                this.type = source.type || 'application/octet-stream';\n            }\n    \n            RuntimeClient.call( me, 'Blob' );\n            this.uid = source.uid || this.uid;\n    \n            if ( ruid ) {\n                me.connectRuntime( ruid );\n            }\n        }\n    \n        Base.inherits( RuntimeClient, {\n            constructor: Blob,\n    \n            slice: function( start, end ) {\n                return this.exec( 'slice', start, end );\n            },\n    \n            getSource: function() {\n                return this.source;\n            }\n        });\n    \n        return Blob;\n    });\n    /**\n     * 为了统一化Flash的File和HTML5的File而存在。\n     * 以至于要调用Flash里面的File，也可以像调用HTML5版本的File一下。\n     * @fileOverview File\n     */\n    define('lib/file',[\n        'base',\n        'lib/blob'\n    ], function( Base, Blob ) {\n    \n        var uid = 1,\n            rExt = /\\.([^.]+)$/;\n    \n        function File( ruid, file ) {\n            var ext;\n    \n            this.name = file.name || ('untitled' + uid++);\n            ext = rExt.exec( file.name ) ? RegExp.$1.toLowerCase() : '';\n    \n            // todo 支持其他类型文件的转换。\n            // 如果有 mimetype, 但是文件名里面没有找出后缀规律\n            if ( !ext && file.type ) {\n                ext = /\\/(jpg|jpeg|png|gif|bmp)$/i.exec( file.type ) ?\n                        RegExp.$1.toLowerCase() : '';\n                this.name += '.' + ext;\n            }\n    \n            this.ext = ext;\n            this.lastModifiedDate = file.lastModifiedDate ||\n                    (new Date()).toLocaleString();\n    \n            Blob.apply( this, arguments );\n        }\n    \n        return Base.inherits( Blob, File );\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepicker',[\n        'base',\n        'runtime/client',\n        'lib/file'\n    ], function( Base, RuntimeClent, File ) {\n    \n        var $ = Base.$;\n    \n        function FilePicker( opts ) {\n            opts = this.options = $.extend({}, FilePicker.options, opts );\n    \n            opts.container = $( opts.id );\n    \n            if ( !opts.container.length ) {\n                throw new Error('按钮指定错误');\n            }\n    \n            opts.innerHTML = opts.innerHTML || opts.label ||\n                    opts.container.html() || '';\n    \n            opts.button = $( opts.button || document.createElement('div') );\n            opts.button.html( opts.innerHTML );\n            opts.container.html( opts.button );\n    \n            RuntimeClent.call( this, 'FilePicker', true );\n        }\n    \n        FilePicker.options = {\n            button: null,\n            container: null,\n            label: null,\n            innerHTML: null,\n            multiple: true,\n            accept: null,\n            name: 'file'\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePicker,\n    \n            init: function() {\n                var me = this,\n                    opts = me.options,\n                    button = opts.button;\n    \n                button.addClass('webuploader-pick');\n    \n                me.on( 'all', function( type ) {\n                    var files;\n    \n                    switch ( type ) {\n                        case 'mouseenter':\n                            button.addClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'mouseleave':\n                            button.removeClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'change':\n                            files = me.exec('getFiles');\n                            me.trigger( 'select', $.map( files, function( file ) {\n                                file = new File( me.getRuid(), file );\n    \n                                // 记录来源。\n                                file._refer = opts.container;\n                                return file;\n                            }), opts.container );\n                            break;\n                    }\n                });\n    \n                me.connectRuntime( opts, function() {\n                    me.refresh();\n                    me.exec( 'init', opts );\n                    me.trigger('ready');\n                });\n    \n                this._resizeHandler = Base.bindFn( this.refresh, this );\n                $( window ).on( 'resize', this._resizeHandler );\n            },\n    \n            refresh: function() {\n                var shimContainer = this.getRuntime().getContainer(),\n                    button = this.options.button,\n                    width = button.outerWidth ?\n                            button.outerWidth() : button.width(),\n    \n                    height = button.outerHeight ?\n                            button.outerHeight() : button.height(),\n    \n                    pos = button.offset();\n    \n                width && height && shimContainer.css({\n                    bottom: 'auto',\n                    right: 'auto',\n                    width: width + 'px',\n                    height: height + 'px'\n                }).offset( pos );\n            },\n    \n            enable: function() {\n                var btn = this.options.button;\n    \n                btn.removeClass('webuploader-pick-disable');\n                this.refresh();\n            },\n    \n            disable: function() {\n                var btn = this.options.button;\n    \n                this.getRuntime().getContainer().css({\n                    top: '-99999px'\n                });\n    \n                btn.addClass('webuploader-pick-disable');\n            },\n    \n            destroy: function() {\n                var btn = this.options.button;\n                $( window ).off( 'resize', this._resizeHandler );\n                btn.removeClass('webuploader-pick-disable webuploader-pick-hover ' +\n                    'webuploader-pick');\n            }\n        });\n    \n        return FilePicker;\n    });\n    \n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/widget',[\n        'base',\n        'uploader'\n    ], function( Base, Uploader ) {\n    \n        var $ = Base.$,\n            _init = Uploader.prototype._init,\n            _destroy = Uploader.prototype.destroy,\n            IGNORE = {},\n            widgetClass = [];\n    \n        function isArrayLike( obj ) {\n            if ( !obj ) {\n                return false;\n            }\n    \n            var length = obj.length,\n                type = $.type( obj );\n    \n            if ( obj.nodeType === 1 && length ) {\n                return true;\n            }\n    \n            return type === 'array' || type !== 'function' && type !== 'string' &&\n                    (length === 0 || typeof length === 'number' && length > 0 &&\n                    (length - 1) in obj);\n        }\n    \n        function Widget( uploader ) {\n            this.owner = uploader;\n            this.options = uploader.options;\n        }\n    \n        $.extend( Widget.prototype, {\n    \n            init: Base.noop,\n    \n            // 类Backbone的事件监听声明，监听uploader实例上的事件\n            // widget直接无法监听事件，事件只能通过uploader来传递\n            invoke: function( apiName, args ) {\n    \n                /*\n                    {\n                        'make-thumb': 'makeThumb'\n                    }\n                 */\n                var map = this.responseMap;\n    \n                // 如果无API响应声明则忽略\n                if ( !map || !(apiName in map) || !(map[ apiName ] in this) ||\n                        !$.isFunction( this[ map[ apiName ] ] ) ) {\n    \n                    return IGNORE;\n                }\n    \n                return this[ map[ apiName ] ].apply( this, args );\n    \n            },\n    \n            /**\n             * 发送命令。当传入`callback`或者`handler`中返回`promise`时。返回一个当所有`handler`中的promise都完成后完成的新`promise`。\n             * @method request\n             * @grammar request( command, args ) => * | Promise\n             * @grammar request( command, args, callback ) => Promise\n             * @for  Uploader\n             */\n            request: function() {\n                return this.owner.request.apply( this.owner, arguments );\n            }\n        });\n    \n        // 扩展Uploader.\n        $.extend( Uploader.prototype, {\n    \n            /**\n             * @property {String | Array} [disableWidgets=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 默认所有 Uploader.register 了的 widget 都会被加载，如果禁用某一部分，请通过此 option 指定黑名单。\n             */\n    \n            // 覆写_init用来初始化widgets\n            _init: function() {\n                var me = this,\n                    widgets = me._widgets = [],\n                    deactives = me.options.disableWidgets || '';\n    \n                $.each( widgetClass, function( _, klass ) {\n                    (!deactives || !~deactives.indexOf( klass._name )) &&\n                        widgets.push( new klass( me ) );\n                });\n    \n                return _init.apply( me, arguments );\n            },\n    \n            request: function( apiName, args, callback ) {\n                var i = 0,\n                    widgets = this._widgets,\n                    len = widgets && widgets.length,\n                    rlts = [],\n                    dfds = [],\n                    widget, rlt, promise, key;\n    \n                args = isArrayLike( args ) ? args : [ args ];\n    \n                for ( ; i < len; i++ ) {\n                    widget = widgets[ i ];\n                    rlt = widget.invoke( apiName, args );\n    \n                    if ( rlt !== IGNORE ) {\n    \n                        // Deferred对象\n                        if ( Base.isPromise( rlt ) ) {\n                            dfds.push( rlt );\n                        } else {\n                            rlts.push( rlt );\n                        }\n                    }\n                }\n    \n                // 如果有callback，则用异步方式。\n                if ( callback || dfds.length ) {\n                    promise = Base.when.apply( Base, dfds );\n                    key = promise.pipe ? 'pipe' : 'then';\n    \n                    // 很重要不能删除。删除了会死循环。\n                    // 保证执行顺序。让callback总是在下一个 tick 中执行。\n                    return promise[ key ](function() {\n                                var deferred = Base.Deferred(),\n                                    args = arguments;\n    \n                                if ( args.length === 1 ) {\n                                    args = args[ 0 ];\n                                }\n    \n                                setTimeout(function() {\n                                    deferred.resolve( args );\n                                }, 1 );\n    \n                                return deferred.promise();\n                            })[ callback ? key : 'done' ]( callback || Base.noop );\n                } else {\n                    return rlts[ 0 ];\n                }\n            },\n    \n            destroy: function() {\n                _destroy.apply( this, arguments );\n                this._widgets = null;\n            }\n        });\n    \n        /**\n         * 添加组件\n         * @grammar Uploader.register(proto);\n         * @grammar Uploader.register(map, proto);\n         * @param  {object} responseMap API 名称与函数实现的映射\n         * @param  {object} proto 组件原型，构造函数通过 constructor 属性定义\n         * @method Uploader.register\n         * @for Uploader\n         * @example\n         * Uploader.register({\n         *     'make-thumb': 'makeThumb'\n         * }, {\n         *     init: function( options ) {},\n         *     makeThumb: function() {}\n         * });\n         *\n         * Uploader.register({\n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         */\n        Uploader.register = Widget.register = function( responseMap, widgetProto ) {\n            var map = { init: 'init', destroy: 'destroy', name: 'anonymous' },\n                klass;\n    \n            if ( arguments.length === 1 ) {\n                widgetProto = responseMap;\n    \n                // 自动生成 map 表。\n                $.each(widgetProto, function(key) {\n                    if ( key[0] === '_' || key === 'name' ) {\n                        key === 'name' && (map.name = widgetProto.name);\n                        return;\n                    }\n    \n                    map[key.replace(/[A-Z]/g, '-$&').toLowerCase()] = key;\n                });\n    \n            } else {\n                map = $.extend( map, responseMap );\n            }\n    \n            widgetProto.responseMap = map;\n            klass = Base.inherits( Widget, widgetProto );\n            klass._name = map.name;\n            widgetClass.push( klass );\n    \n            return klass;\n        };\n    \n        /**\n         * 删除插件，只有在注册时指定了名字的才能被删除。\n         * @grammar Uploader.unRegister(name);\n         * @param  {string} name 组件名字\n         * @method Uploader.unRegister\n         * @for Uploader\n         * @example\n         *\n         * Uploader.register({\n         *     name: 'custom',\n         *     \n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         *\n         * Uploader.unRegister('custom');\n         */\n        Uploader.unRegister = Widget.unRegister = function( name ) {\n            if ( !name || name === 'anonymous' ) {\n                return;\n            }\n            \n            // 删除指定的插件。\n            for ( var i = widgetClass.length; i--; ) {\n                if ( widgetClass[i]._name === name ) {\n                    widgetClass.splice(i, 1)\n                }\n            }\n        };\n    \n        return Widget;\n    });\n    /**\n     * @fileOverview 文件选择相关\n     */\n    define('widgets/filepicker',[\n        'base',\n        'uploader',\n        'lib/filepicker',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePicker ) {\n        var $ = Base.$;\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Selector | Object} [pick=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 指定选择文件的按钮容器，不指定则不创建按钮。\n             *\n             * * `id` {Seletor|dom} 指定选择文件的按钮容器，不指定则不创建按钮。**注意** 这里虽然写的是 id, 但是不是只支持 id, 还支持 class, 或者 dom 节点。\n             * * `label` {String} 请采用 `innerHTML` 代替\n             * * `innerHTML` {String} 指定按钮文字。不指定时优先从指定的容器中看是否自带文字。\n             * * `multiple` {Boolean} 是否开起同时选择多个文件能力。\n             */\n            pick: null,\n    \n            /**\n             * @property {Arroy} [accept=null]\n             * @namespace options\n             * @for Uploader\n             * @description 指定接受哪些类型的文件。 由于目前还有ext转mimeType表，所以这里需要分开指定。\n             *\n             * * `title` {String} 文字描述\n             * * `extensions` {String} 允许的文件后缀，不带点，多个用逗号分割。\n             * * `mimeTypes` {String} 多个用逗号分割。\n             *\n             * 如：\n             *\n             * ```\n             * {\n             *     title: 'Images',\n             *     extensions: 'gif,jpg,jpeg,bmp,png',\n             *     mimeTypes: 'image/*'\n             * }\n             * ```\n             */\n            accept: null/*{\n                title: 'Images',\n                extensions: 'gif,jpg,jpeg,bmp,png',\n                mimeTypes: 'image/*'\n            }*/\n        });\n    \n        return Uploader.register({\n            name: 'picker',\n    \n            init: function( opts ) {\n                this.pickers = [];\n                return opts.pick && this.addBtn( opts.pick );\n            },\n    \n            refresh: function() {\n                $.each( this.pickers, function() {\n                    this.refresh();\n                });\n            },\n    \n            /**\n             * @method addButton\n             * @for Uploader\n             * @grammar addButton( pick ) => Promise\n             * @description\n             * 添加文件选择按钮，如果一个按钮不够，需要调用此方法来添加。参数跟[options.pick](#WebUploader:Uploader:options)一致。\n             * @example\n             * uploader.addButton({\n             *     id: '#btnContainer',\n             *     innerHTML: '选择文件'\n             * });\n             */\n            addBtn: function( pick ) {\n                var me = this,\n                    opts = me.options,\n                    accept = opts.accept,\n                    promises = [];\n    \n                if ( !pick ) {\n                    return;\n                }\n    \n                $.isPlainObject( pick ) || (pick = {\n                    id: pick\n                });\n    \n                $( pick.id ).each(function() {\n                    var options, picker, deferred;\n    \n                    deferred = Base.Deferred();\n    \n                    options = $.extend({}, pick, {\n                        accept: $.isPlainObject( accept ) ? [ accept ] : accept,\n                        swf: opts.swf,\n                        runtimeOrder: opts.runtimeOrder,\n                        id: this\n                    });\n    \n                    picker = new FilePicker( options );\n    \n                    picker.once( 'ready', deferred.resolve );\n                    picker.on( 'select', function( files ) {\n                        me.owner.request( 'add-file', [ files ]);\n                    });\n                    picker.init();\n    \n                    me.pickers.push( picker );\n    \n                    promises.push( deferred.promise() );\n                });\n    \n                return Base.when.apply( Base, promises );\n            },\n    \n            disable: function() {\n                $.each( this.pickers, function() {\n                    this.disable();\n                });\n            },\n    \n            enable: function() {\n                $.each( this.pickers, function() {\n                    this.enable();\n                });\n            },\n    \n            destroy: function() {\n                $.each( this.pickers, function() {\n                    this.destroy();\n                });\n                this.pickers = null;\n            }\n        });\n    });\n    /**\n     * @fileOverview Image\n     */\n    define('lib/image',[\n        'base',\n        'runtime/client',\n        'lib/blob'\n    ], function( Base, RuntimeClient, Blob ) {\n        var $ = Base.$;\n    \n        // 构造器。\n        function Image( opts ) {\n            this.options = $.extend({}, Image.options, opts );\n            RuntimeClient.call( this, 'Image' );\n    \n            this.on( 'load', function() {\n                this._info = this.exec('info');\n                this._meta = this.exec('meta');\n            });\n        }\n    \n        // 默认选项。\n        Image.options = {\n    \n            // 默认的图片处理质量\n            quality: 90,\n    \n            // 是否裁剪\n            crop: false,\n    \n            // 是否保留头部信息\n            preserveHeaders: false,\n    \n            // 是否允许放大。\n            allowMagnify: false\n        };\n    \n        // 继承RuntimeClient.\n        Base.inherits( RuntimeClient, {\n            constructor: Image,\n    \n            info: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._info = val;\n                    return this;\n                }\n    \n                // getter\n                return this._info;\n            },\n    \n            meta: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._meta = val;\n                    return this;\n                }\n    \n                // getter\n                return this._meta;\n            },\n    \n            loadFromBlob: function( blob ) {\n                var me = this,\n                    ruid = blob.getRuid();\n    \n                this.connectRuntime( ruid, function() {\n                    me.exec( 'init', me.options );\n                    me.exec( 'loadFromBlob', blob );\n                });\n            },\n    \n            resize: function() {\n                var args = Base.slice( arguments );\n                return this.exec.apply( this, [ 'resize' ].concat( args ) );\n            },\n    \n            crop: function() {\n                var args = Base.slice( arguments );\n                return this.exec.apply( this, [ 'crop' ].concat( args ) );\n            },\n    \n            getAsDataUrl: function( type ) {\n                return this.exec( 'getAsDataUrl', type );\n            },\n    \n            getAsBlob: function( type ) {\n                var blob = this.exec( 'getAsBlob', type );\n    \n                return new Blob( this.getRuid(), blob );\n            }\n        });\n    \n        return Image;\n    });\n    /**\n     * @fileOverview 图片操作, 负责预览图片和上传前压缩图片\n     */\n    define('widgets/image',[\n        'base',\n        'uploader',\n        'lib/image',\n        'widgets/widget'\n    ], function( Base, Uploader, Image ) {\n    \n        var $ = Base.$,\n            throttle;\n    \n        // 根据要处理的文件大小来节流，一次不能处理太多，会卡。\n        throttle = (function( max ) {\n            var occupied = 0,\n                waiting = [],\n                tick = function() {\n                    var item;\n    \n                    while ( waiting.length && occupied < max ) {\n                        item = waiting.shift();\n                        occupied += item[ 0 ];\n                        item[ 1 ]();\n                    }\n                };\n    \n            return function( emiter, size, cb ) {\n                waiting.push([ size, cb ]);\n                emiter.once( 'destroy', function() {\n                    occupied -= size;\n                    setTimeout( tick, 1 );\n                });\n                setTimeout( tick, 1 );\n            };\n        })( 5 * 1024 * 1024 );\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Object} [thumb]\n             * @namespace options\n             * @for Uploader\n             * @description 配置生成缩略图的选项。\n             *\n             * 默认为：\n             *\n             * ```javascript\n             * {\n             *     width: 110,\n             *     height: 110,\n             *\n             *     // 图片质量，只有type为`image/jpeg`的时候才有效。\n             *     quality: 70,\n             *\n             *     // 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.\n             *     allowMagnify: true,\n             *\n             *     // 是否允许裁剪。\n             *     crop: true,\n             *\n             *     // 为空的话则保留原有图片格式。\n             *     // 否则强制转换成指定的类型。\n             *     type: 'image/jpeg'\n             * }\n             * ```\n             */\n            thumb: {\n                width: 110,\n                height: 110,\n                quality: 70,\n                allowMagnify: true,\n                crop: true,\n                preserveHeaders: false,\n    \n                // 为空的话则保留原有图片格式。\n                // 否则强制转换成指定的类型。\n                // IE 8下面 base64 大小不能超过 32K 否则预览失败，而非 jpeg 编码的图片很可\n                // 能会超过 32k, 所以这里设置成预览的时候都是 image/jpeg\n                type: 'image/jpeg'\n            },\n    \n            /**\n             * @property {Object} [compress]\n             * @namespace options\n             * @for Uploader\n             * @description 配置压缩的图片的选项。如果此选项为`false`, 则图片在上传前不进行压缩。\n             *\n             * 默认为：\n             *\n             * ```javascript\n             * {\n             *     width: 1600,\n             *     height: 1600,\n             *\n             *     // 图片质量，只有type为`image/jpeg`的时候才有效。\n             *     quality: 90,\n             *\n             *     // 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.\n             *     allowMagnify: false,\n             *\n             *     // 是否允许裁剪。\n             *     crop: false,\n             *\n             *     // 是否保留头部meta信息。\n             *     preserveHeaders: true,\n             *\n             *     // 如果发现压缩后文件大小比原来还大，则使用原来图片\n             *     // 此属性可能会影响图片自动纠正功能\n             *     noCompressIfLarger: false,\n             *\n             *     // 单位字节，如果图片大小小于此值，不会采用压缩。\n             *     compressSize: 0\n             * }\n             * ```\n             */\n            compress: {\n                width: 1600,\n                height: 1600,\n                quality: 90,\n                allowMagnify: false,\n                crop: false,\n                preserveHeaders: true\n            }\n        });\n    \n        return Uploader.register({\n    \n            name: 'image',\n    \n    \n            /**\n             * 生成缩略图，此过程为异步，所以需要传入`callback`。\n             * 通常情况在图片加入队里后调用此方法来生成预览图以增强交互效果。\n             *\n             * 当 width 或者 height 的值介于 0 - 1 时，被当成百分比使用。\n             *\n             * `callback`中可以接收到两个参数。\n             * * 第一个为error，如果生成缩略图有错误，此error将为真。\n             * * 第二个为ret, 缩略图的Data URL值。\n             *\n             * **注意**\n             * Date URL在IE6/7中不支持，所以不用调用此方法了，直接显示一张暂不支持预览图片好了。\n             * 也可以借助服务端，将 base64 数据传给服务端，生成一个临时文件供预览。\n             *\n             * @method makeThumb\n             * @grammar makeThumb( file, callback ) => undefined\n             * @grammar makeThumb( file, callback, width, height ) => undefined\n             * @for Uploader\n             * @example\n             *\n             * uploader.on( 'fileQueued', function( file ) {\n             *     var $li = ...;\n             *\n             *     uploader.makeThumb( file, function( error, ret ) {\n             *         if ( error ) {\n             *             $li.text('预览错误');\n             *         } else {\n             *             $li.append('<img alt=\"\" src=\"' + ret + '\" />');\n             *         }\n             *     });\n             *\n             * });\n             */\n            makeThumb: function( file, cb, width, height ) {\n                var opts, image;\n    \n                file = this.request( 'get-file', file );\n    \n                // 只预览图片格式。\n                if ( !file.type.match( /^image/ ) ) {\n                    cb( true );\n                    return;\n                }\n    \n                opts = $.extend({}, this.options.thumb );\n    \n                // 如果传入的是object.\n                if ( $.isPlainObject( width ) ) {\n                    opts = $.extend( opts, width );\n                    width = null;\n                }\n    \n                width = width || opts.width;\n                height = height || opts.height;\n    \n                image = new Image( opts );\n    \n                image.once( 'load', function() {\n                    file._info = file._info || image.info();\n                    file._meta = file._meta || image.meta();\n    \n                    // 如果 width 的值介于 0 - 1\n                    // 说明设置的是百分比。\n                    if ( width <= 1 && width > 0 ) {\n                        width = file._info.width * width;\n                    }\n    \n                    // 同样的规则应用于 height\n                    if ( height <= 1 && height > 0 ) {\n                        height = file._info.height * height;\n                    }\n    \n                    image.resize( width, height );\n                });\n    \n                // 当 resize 完后\n                image.once( 'complete', function() {\n                    cb( false, image.getAsDataUrl( opts.type ) );\n                    image.destroy();\n                });\n    \n                image.once( 'error', function( reason ) {\n                    cb( reason || true );\n                    image.destroy();\n                });\n    \n                throttle( image, file.source.size, function() {\n                    file._info && image.info( file._info );\n                    file._meta && image.meta( file._meta );\n                    image.loadFromBlob( file.source );\n                });\n            },\n    \n            beforeSendFile: function( file ) {\n                var opts = this.options.compress || this.options.resize,\n                    compressSize = opts && opts.compressSize || 0,\n                    noCompressIfLarger = opts && opts.noCompressIfLarger || false,\n                    image, deferred;\n    \n                file = this.request( 'get-file', file );\n    \n                // 只压缩 jpeg 图片格式。\n                // gif 可能会丢失针\n                // bmp png 基本上尺寸都不大，且压缩比比较小。\n                if ( !opts || !~'image/jpeg,image/jpg'.indexOf( file.type ) ||\n                        file.size < compressSize ||\n                        file._compressed ) {\n                    return;\n                }\n    \n                opts = $.extend({}, opts );\n                deferred = Base.Deferred();\n    \n                image = new Image( opts );\n    \n                deferred.always(function() {\n                    image.destroy();\n                    image = null;\n                });\n                image.once( 'error', deferred.reject );\n                image.once( 'load', function() {\n                    var width = opts.width,\n                        height = opts.height;\n    \n                    file._info = file._info || image.info();\n                    file._meta = file._meta || image.meta();\n    \n                    // 如果 width 的值介于 0 - 1\n                    // 说明设置的是百分比。\n                    if ( width <= 1 && width > 0 ) {\n                        width = file._info.width * width;\n                    }\n    \n                    // 同样的规则应用于 height\n                    if ( height <= 1 && height > 0 ) {\n                        height = file._info.height * height;\n                    }\n    \n                    image.resize( width, height );\n                });\n    \n                image.once( 'complete', function() {\n                    var blob, size;\n    \n                    // 移动端 UC / qq 浏览器的无图模式下\n                    // ctx.getImageData 处理大图的时候会报 Exception\n                    // INDEX_SIZE_ERR: DOM Exception 1\n                    try {\n                        blob = image.getAsBlob( opts.type );\n    \n                        size = file.size;\n    \n                        // 如果压缩后，比原来还大则不用压缩后的。\n                        if ( !noCompressIfLarger || blob.size < size ) {\n                            // file.source.destroy && file.source.destroy();\n                            file.source = blob;\n                            file.size = blob.size;\n    \n                            file.trigger( 'resize', blob.size, size );\n                        }\n    \n                        // 标记，避免重复压缩。\n                        file._compressed = true;\n                        deferred.resolve();\n                    } catch ( e ) {\n                        // 出错了直接继续，让其上传原始图片\n                        deferred.resolve();\n                    }\n                });\n    \n                file._info && image.info( file._info );\n                file._meta && image.meta( file._meta );\n    \n                image.loadFromBlob( file.source );\n                return deferred.promise();\n            }\n        });\n    });\n    /**\n     * @fileOverview 文件属性封装\n     */\n    define('file',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            idPrefix = 'WU_FILE_',\n            idSuffix = 0,\n            rExt = /\\.([^.]+)$/,\n            statusMap = {};\n    \n        function gid() {\n            return idPrefix + idSuffix++;\n        }\n    \n        /**\n         * 文件类\n         * @class File\n         * @constructor 构造函数\n         * @grammar new File( source ) => File\n         * @param {Lib.File} source [lib.File](#Lib.File)实例, 此source对象是带有Runtime信息的。\n         */\n        function WUFile( source ) {\n    \n            /**\n             * 文件名，包括扩展名（后缀）\n             * @property name\n             * @type {string}\n             */\n            this.name = source.name || 'Untitled';\n    \n            /**\n             * 文件体积（字节）\n             * @property size\n             * @type {uint}\n             * @default 0\n             */\n            this.size = source.size || 0;\n    \n            /**\n             * 文件MIMETYPE类型，与文件类型的对应关系请参考[http://t.cn/z8ZnFny](http://t.cn/z8ZnFny)\n             * @property type\n             * @type {string}\n             * @default 'application/octet-stream'\n             */\n            this.type = source.type || 'application/octet-stream';\n    \n            /**\n             * 文件最后修改日期\n             * @property lastModifiedDate\n             * @type {int}\n             * @default 当前时间戳\n             */\n            this.lastModifiedDate = source.lastModifiedDate || (new Date() * 1);\n    \n            /**\n             * 文件ID，每个对象具有唯一ID，与文件名无关\n             * @property id\n             * @type {string}\n             */\n            this.id = gid();\n    \n            /**\n             * 文件扩展名，通过文件名获取，例如test.png的扩展名为png\n             * @property ext\n             * @type {string}\n             */\n            this.ext = rExt.exec( this.name ) ? RegExp.$1 : '';\n    \n    \n            /**\n             * 状态文字说明。在不同的status语境下有不同的用途。\n             * @property statusText\n             * @type {string}\n             */\n            this.statusText = '';\n    \n            // 存储文件状态，防止通过属性直接修改\n            statusMap[ this.id ] = WUFile.Status.INITED;\n    \n            this.source = source;\n            this.loaded = 0;\n    \n            this.on( 'error', function( msg ) {\n                this.setStatus( WUFile.Status.ERROR, msg );\n            });\n        }\n    \n        $.extend( WUFile.prototype, {\n    \n            /**\n             * 设置状态，状态变化时会触发`change`事件。\n             * @method setStatus\n             * @grammar setStatus( status[, statusText] );\n             * @param {File.Status|String} status [文件状态值](#WebUploader:File:File.Status)\n             * @param {String} [statusText=''] 状态说明，常在error时使用，用http, abort,server等来标记是由于什么原因导致文件错误。\n             */\n            setStatus: function( status, text ) {\n    \n                var prevStatus = statusMap[ this.id ];\n    \n                typeof text !== 'undefined' && (this.statusText = text);\n    \n                if ( status !== prevStatus ) {\n                    statusMap[ this.id ] = status;\n                    /**\n                     * 文件状态变化\n                     * @event statuschange\n                     */\n                    this.trigger( 'statuschange', status, prevStatus );\n                }\n    \n            },\n    \n            /**\n             * 获取文件状态\n             * @return {File.Status}\n             * @example\n                     文件状态具体包括以下几种类型：\n                     {\n                         // 初始化\n                        INITED:     0,\n                        // 已入队列\n                        QUEUED:     1,\n                        // 正在上传\n                        PROGRESS:     2,\n                        // 上传出错\n                        ERROR:         3,\n                        // 上传成功\n                        COMPLETE:     4,\n                        // 上传取消\n                        CANCELLED:     5\n                    }\n             */\n            getStatus: function() {\n                return statusMap[ this.id ];\n            },\n    \n            /**\n             * 获取文件原始信息。\n             * @return {*}\n             */\n            getSource: function() {\n                return this.source;\n            },\n    \n            destroy: function() {\n                this.off();\n                delete statusMap[ this.id ];\n            }\n        });\n    \n        Mediator.installTo( WUFile.prototype );\n    \n        /**\n         * 文件状态值，具体包括以下几种类型：\n         * * `inited` 初始状态\n         * * `queued` 已经进入队列, 等待上传\n         * * `progress` 上传中\n         * * `complete` 上传完成。\n         * * `error` 上传出错，可重试\n         * * `interrupt` 上传中断，可续传。\n         * * `invalid` 文件不合格，不能重试上传。会自动从队列中移除。\n         * * `cancelled` 文件被移除。\n         * @property {Object} Status\n         * @namespace File\n         * @class File\n         * @static\n         */\n        WUFile.Status = {\n            INITED:     'inited',    // 初始状态\n            QUEUED:     'queued',    // 已经进入队列, 等待上传\n            PROGRESS:   'progress',    // 上传中\n            ERROR:      'error',    // 上传出错，可重试\n            COMPLETE:   'complete',    // 上传完成。\n            CANCELLED:  'cancelled',    // 上传取消。\n            INTERRUPT:  'interrupt',    // 上传中断，可续传。\n            INVALID:    'invalid'    // 文件不合格，不能重试上传。\n        };\n    \n        return WUFile;\n    });\n    \n    /**\n     * @fileOverview 文件队列\n     */\n    define('queue',[\n        'base',\n        'mediator',\n        'file'\n    ], function( Base, Mediator, WUFile ) {\n    \n        var $ = Base.$,\n            STATUS = WUFile.Status;\n    \n        /**\n         * 文件队列, 用来存储各个状态中的文件。\n         * @class Queue\n         * @extends Mediator\n         */\n        function Queue() {\n    \n            /**\n             * 统计文件数。\n             * * `numOfQueue` 队列中的文件数。\n             * * `numOfSuccess` 上传成功的文件数\n             * * `numOfCancel` 被取消的文件数\n             * * `numOfProgress` 正在上传中的文件数\n             * * `numOfUploadFailed` 上传错误的文件数。\n             * * `numOfInvalid` 无效的文件数。\n             * * `numofDeleted` 被移除的文件数。\n             * @property {Object} stats\n             */\n            this.stats = {\n                numOfQueue: 0,\n                numOfSuccess: 0,\n                numOfCancel: 0,\n                numOfProgress: 0,\n                numOfUploadFailed: 0,\n                numOfInvalid: 0,\n                numofDeleted: 0,\n                numofInterrupt: 0\n            };\n    \n            // 上传队列，仅包括等待上传的文件\n            this._queue = [];\n    \n            // 存储所有文件\n            this._map = {};\n        }\n    \n        $.extend( Queue.prototype, {\n    \n            /**\n             * 将新文件加入对队列尾部\n             *\n             * @method append\n             * @param  {File} file   文件对象\n             */\n            append: function( file ) {\n                this._queue.push( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 将新文件加入对队列头部\n             *\n             * @method prepend\n             * @param  {File} file   文件对象\n             */\n            prepend: function( file ) {\n                this._queue.unshift( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 获取文件对象\n             *\n             * @method getFile\n             * @param  {String} fileId   文件ID\n             * @return {File}\n             */\n            getFile: function( fileId ) {\n                if ( typeof fileId !== 'string' ) {\n                    return fileId;\n                }\n                return this._map[ fileId ];\n            },\n    \n            /**\n             * 从队列中取出一个指定状态的文件。\n             * @grammar fetch( status ) => File\n             * @method fetch\n             * @param {String} status [文件状态值](#WebUploader:File:File.Status)\n             * @return {File} [File](#WebUploader:File)\n             */\n            fetch: function( status ) {\n                var len = this._queue.length,\n                    i, file;\n    \n                status = status || STATUS.QUEUED;\n    \n                for ( i = 0; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( status === file.getStatus() ) {\n                        return file;\n                    }\n                }\n    \n                return null;\n            },\n    \n            /**\n             * 对队列进行排序，能够控制文件上传顺序。\n             * @grammar sort( fn ) => undefined\n             * @method sort\n             * @param {Function} fn 排序方法\n             */\n            sort: function( fn ) {\n                if ( typeof fn === 'function' ) {\n                    this._queue.sort( fn );\n                }\n            },\n    \n            /**\n             * 获取指定类型的文件列表, 列表中每一个成员为[File](#WebUploader:File)对象。\n             * @grammar getFiles( [status1[, status2 ...]] ) => Array\n             * @method getFiles\n             * @param {String} [status] [文件状态值](#WebUploader:File:File.Status)\n             */\n            getFiles: function() {\n                var sts = [].slice.call( arguments, 0 ),\n                    ret = [],\n                    i = 0,\n                    len = this._queue.length,\n                    file;\n    \n                for ( ; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( sts.length && !~$.inArray( file.getStatus(), sts ) ) {\n                        continue;\n                    }\n    \n                    ret.push( file );\n                }\n    \n                return ret;\n            },\n    \n            /**\n             * 在队列中删除文件。\n             * @grammar removeFile( file ) => Array\n             * @method removeFile\n             * @param {File} 文件对象。\n             */\n            removeFile: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( existing ) {\n                    delete this._map[ file.id ];\n                    file.destroy();\n                    this.stats.numofDeleted++;\n                }\n            },\n    \n            _fileAdded: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( !existing ) {\n                    this._map[ file.id ] = file;\n    \n                    file.on( 'statuschange', function( cur, pre ) {\n                        me._onFileStatusChange( cur, pre );\n                    });\n                }\n            },\n    \n            _onFileStatusChange: function( curStatus, preStatus ) {\n                var stats = this.stats;\n    \n                switch ( preStatus ) {\n                    case STATUS.PROGRESS:\n                        stats.numOfProgress--;\n                        break;\n    \n                    case STATUS.QUEUED:\n                        stats.numOfQueue --;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed--;\n                        break;\n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid--;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt--;\n                        break;\n                }\n    \n                switch ( curStatus ) {\n                    case STATUS.QUEUED:\n                        stats.numOfQueue++;\n                        break;\n    \n                    case STATUS.PROGRESS:\n                        stats.numOfProgress++;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed++;\n                        break;\n    \n                    case STATUS.COMPLETE:\n                        stats.numOfSuccess++;\n                        break;\n    \n                    case STATUS.CANCELLED:\n                        stats.numOfCancel++;\n                        break;\n    \n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid++;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt++;\n                        break;\n                }\n            }\n    \n        });\n    \n        Mediator.installTo( Queue.prototype );\n    \n        return Queue;\n    });\n    /**\n     * @fileOverview 队列\n     */\n    define('widgets/queue',[\n        'base',\n        'uploader',\n        'queue',\n        'file',\n        'lib/file',\n        'runtime/client',\n        'widgets/widget'\n    ], function( Base, Uploader, Queue, WUFile, File, RuntimeClient ) {\n    \n        var $ = Base.$,\n            rExt = /\\.\\w+$/,\n            Status = WUFile.Status;\n    \n        return Uploader.register({\n            name: 'queue',\n    \n            init: function( opts ) {\n                var me = this,\n                    deferred, len, i, item, arr, accept, runtime;\n    \n                if ( $.isPlainObject( opts.accept ) ) {\n                    opts.accept = [ opts.accept ];\n                }\n    \n                // accept中的中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].extensions;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = '\\\\.' + arr.join(',')\n                                .replace( /,/g, '$|\\\\.' )\n                                .replace( /\\*/g, '.*' ) + '$';\n                    }\n    \n                    me.accept = new RegExp( accept, 'i' );\n                }\n    \n                me.queue = new Queue();\n                me.stats = me.queue.stats;\n    \n                // 如果当前不是html5运行时，那就算了。\n                // 不执行后续操作\n                if ( this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                // 创建一个 html5 运行时的 placeholder\n                // 以至于外部添加原生 File 对象的时候能正确包裹一下供 webuploader 使用。\n                deferred = Base.Deferred();\n                this.placeholder = runtime = new RuntimeClient('Placeholder');\n                runtime.connectRuntime({\n                    runtimeOrder: 'html5'\n                }, function() {\n                    me._ruid = runtime.getRuid();\n                    deferred.resolve();\n                });\n                return deferred.promise();\n            },\n    \n    \n            // 为了支持外部直接添加一个原生File对象。\n            _wrapFile: function( file ) {\n                if ( !(file instanceof WUFile) ) {\n    \n                    if ( !(file instanceof File) ) {\n                        if ( !this._ruid ) {\n                            throw new Error('Can\\'t add external files.');\n                        }\n                        file = new File( this._ruid, file );\n                    }\n    \n                    file = new WUFile( file );\n                }\n    \n                return file;\n            },\n    \n            // 判断文件是否可以被加入队列\n            acceptFile: function( file ) {\n                var invalid = !file || !file.size || this.accept &&\n    \n                        // 如果名字中有后缀，才做后缀白名单处理。\n                        rExt.exec( file.name ) && !this.accept.test( file.name );\n    \n                return !invalid;\n            },\n    \n    \n            /**\n             * @event beforeFileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列之前触发，此事件的handler返回值为`false`，则此文件不会被添加进入队列。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event fileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列以后触发。\n             * @for  Uploader\n             */\n    \n            _addFile: function( file ) {\n                var me = this;\n    \n                file = me._wrapFile( file );\n    \n                // 不过类型判断允许不允许，先派送 `beforeFileQueued`\n                if ( !me.owner.trigger( 'beforeFileQueued', file ) ) {\n                    return;\n                }\n    \n                // 类型不匹配，则派送错误事件，并返回。\n                if ( !me.acceptFile( file ) ) {\n                    me.owner.trigger( 'error', 'Q_TYPE_DENIED', file );\n                    return;\n                }\n    \n                me.queue.append( file );\n                me.owner.trigger( 'fileQueued', file );\n                return file;\n            },\n    \n            getFile: function( fileId ) {\n                return this.queue.getFile( fileId );\n            },\n    \n            /**\n             * @event filesQueued\n             * @param {File} files 数组，内容为原始File(lib/File）对象。\n             * @description 当一批文件添加进队列以后触发。\n             * @for  Uploader\n             */\n            \n            /**\n             * @property {Boolean} [auto=false]\n             * @namespace options\n             * @for Uploader\n             * @description 设置为 true 后，不需要手动调用上传，有文件选择即开始上传。\n             * \n             */\n    \n            /**\n             * @method addFiles\n             * @grammar addFiles( file ) => undefined\n             * @grammar addFiles( [file1, file2 ...] ) => undefined\n             * @param {Array of File or File} [files] Files 对象 数组\n             * @description 添加文件到队列\n             * @for  Uploader\n             */\n            addFile: function( files ) {\n                var me = this;\n    \n                if ( !files.length ) {\n                    files = [ files ];\n                }\n    \n                files = $.map( files, function( file ) {\n                    return me._addFile( file );\n                });\n    \n                me.owner.trigger( 'filesQueued', files );\n    \n                if ( me.options.auto ) {\n                    setTimeout(function() {\n                        me.request('start-upload');\n                    }, 20 );\n                }\n            },\n    \n            getStats: function() {\n                return this.stats;\n            },\n    \n            /**\n             * @event fileDequeued\n             * @param {File} file File对象\n             * @description 当文件被移除队列后触发。\n             * @for  Uploader\n             */\n    \n             /**\n             * @method removeFile\n             * @grammar removeFile( file ) => undefined\n             * @grammar removeFile( id ) => undefined\n             * @grammar removeFile( file, true ) => undefined\n             * @grammar removeFile( id, true ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 移除某一文件, 默认只会标记文件状态为已取消，如果第二个参数为 `true` 则会从 queue 中移除。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.removeFile( file );\n             * })\n             */\n            removeFile: function( file, remove ) {\n                var me = this;\n    \n                file = file.id ? file : me.queue.getFile( file );\n    \n                this.request( 'cancel-file', file );\n    \n                if ( remove ) {\n                    this.queue.removeFile( file );\n                }\n            },\n    \n            /**\n             * @method getFiles\n             * @grammar getFiles() => Array\n             * @grammar getFiles( status1, status2, status... ) => Array\n             * @description 返回指定状态的文件集合，不传参数将返回所有状态的文件。\n             * @for  Uploader\n             * @example\n             * console.log( uploader.getFiles() );    // => all files\n             * console.log( uploader.getFiles('error') )    // => all error files.\n             */\n            getFiles: function() {\n                return this.queue.getFiles.apply( this.queue, arguments );\n            },\n    \n            fetchFile: function() {\n                return this.queue.fetch.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @method retry\n             * @grammar retry() => undefined\n             * @grammar retry( file ) => undefined\n             * @description 重试上传，重试指定文件，或者从出错的文件开始重新上传。\n             * @for  Uploader\n             * @example\n             * function retry() {\n             *     uploader.retry();\n             * }\n             */\n            retry: function( file, noForceStart ) {\n                var me = this,\n                    files, i, len;\n    \n                if ( file ) {\n                    file = file.id ? file : me.queue.getFile( file );\n                    file.setStatus( Status.QUEUED );\n                    noForceStart || me.request('start-upload');\n                    return;\n                }\n    \n                files = me.queue.getFiles( Status.ERROR );\n                i = 0;\n                len = files.length;\n    \n                for ( ; i < len; i++ ) {\n                    file = files[ i ];\n                    file.setStatus( Status.QUEUED );\n                }\n    \n                me.request('start-upload');\n            },\n    \n            /**\n             * @method sort\n             * @grammar sort( fn ) => undefined\n             * @description 排序队列中的文件，在上传之前调整可以控制上传顺序。\n             * @for  Uploader\n             */\n            sortFiles: function() {\n                return this.queue.sort.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @event reset\n             * @description 当 uploader 被重置的时候触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @method reset\n             * @grammar reset() => undefined\n             * @description 重置uploader。目前只重置了队列。\n             * @for  Uploader\n             * @example\n             * uploader.reset();\n             */\n            reset: function() {\n                this.owner.trigger('reset');\n                this.queue = new Queue();\n                this.stats = this.queue.stats;\n            },\n    \n            destroy: function() {\n                this.reset();\n                this.placeholder && this.placeholder.destroy();\n            }\n        });\n    \n    });\n    /**\n     * @fileOverview 添加获取Runtime相关信息的方法。\n     */\n    define('widgets/runtime',[\n        'uploader',\n        'runtime/runtime',\n        'widgets/widget'\n    ], function( Uploader, Runtime ) {\n    \n        Uploader.support = function() {\n            return Runtime.hasRuntime.apply( Runtime, arguments );\n        };\n    \n        /**\n         * @property {Object} [runtimeOrder=html5,flash]\n         * @namespace options\n         * @for Uploader\n         * @description 指定运行时启动顺序。默认会想尝试 html5 是否支持，如果支持则使用 html5, 否则则使用 flash.\n         *\n         * 可以将此值设置成 `flash`，来强制使用 flash 运行时。\n         */\n    \n        return Uploader.register({\n            name: 'runtime',\n    \n            init: function() {\n                if ( !this.predictRuntimeType() ) {\n                    throw Error('Runtime Error');\n                }\n            },\n    \n            /**\n             * 预测Uploader将采用哪个`Runtime`\n             * @grammar predictRuntimeType() => String\n             * @method predictRuntimeType\n             * @for  Uploader\n             */\n            predictRuntimeType: function() {\n                var orders = this.options.runtimeOrder || Runtime.orders,\n                    type = this.type,\n                    i, len;\n    \n                if ( !type ) {\n                    orders = orders.split( /\\s*,\\s*/g );\n    \n                    for ( i = 0, len = orders.length; i < len; i++ ) {\n                        if ( Runtime.hasRuntime( orders[ i ] ) ) {\n                            this.type = type = orders[ i ];\n                            break;\n                        }\n                    }\n                }\n    \n                return type;\n            }\n        });\n    });\n    /**\n     * @fileOverview Transport\n     */\n    define('lib/transport',[\n        'base',\n        'runtime/client',\n        'mediator'\n    ], function( Base, RuntimeClient, Mediator ) {\n    \n        var $ = Base.$;\n    \n        function Transport( opts ) {\n            var me = this;\n    \n            opts = me.options = $.extend( true, {}, Transport.options, opts || {} );\n            RuntimeClient.call( this, 'Transport' );\n    \n            this._blob = null;\n            this._formData = opts.formData || {};\n            this._headers = opts.headers || {};\n    \n            this.on( 'progress', this._timeout );\n            this.on( 'load error', function() {\n                me.trigger( 'progress', 1 );\n                clearTimeout( me._timer );\n            });\n        }\n    \n        Transport.options = {\n            server: '',\n            method: 'POST',\n    \n            // 跨域时，是否允许携带cookie, 只有html5 runtime才有效\n            withCredentials: false,\n            fileVal: 'file',\n            timeout: 2 * 60 * 1000,    // 2分钟\n            formData: {},\n            headers: {},\n            sendAsBinary: false\n        };\n    \n        $.extend( Transport.prototype, {\n    \n            // 添加Blob, 只能添加一次，最后一次有效。\n            appendBlob: function( key, blob, filename ) {\n                var me = this,\n                    opts = me.options;\n    \n                if ( me.getRuid() ) {\n                    me.disconnectRuntime();\n                }\n    \n                // 连接到blob归属的同一个runtime.\n                me.connectRuntime( blob.ruid, function() {\n                    me.exec('init');\n                });\n    \n                me._blob = blob;\n                opts.fileVal = key || opts.fileVal;\n                opts.filename = filename || opts.filename;\n            },\n    \n            // 添加其他字段\n            append: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._formData, key );\n                } else {\n                    this._formData[ key ] = value;\n                }\n            },\n    \n            setRequestHeader: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._headers, key );\n                } else {\n                    this._headers[ key ] = value;\n                }\n            },\n    \n            send: function( method ) {\n                this.exec( 'send', method );\n                this._timeout();\n            },\n    \n            abort: function() {\n                clearTimeout( this._timer );\n                return this.exec('abort');\n            },\n    \n            destroy: function() {\n                this.trigger('destroy');\n                this.off();\n                this.exec('destroy');\n                this.disconnectRuntime();\n            },\n    \n            getResponse: function() {\n                return this.exec('getResponse');\n            },\n    \n            getResponseAsJson: function() {\n                return this.exec('getResponseAsJson');\n            },\n    \n            getStatus: function() {\n                return this.exec('getStatus');\n            },\n    \n            _timeout: function() {\n                var me = this,\n                    duration = me.options.timeout;\n    \n                if ( !duration ) {\n                    return;\n                }\n    \n                clearTimeout( me._timer );\n                me._timer = setTimeout(function() {\n                    me.abort();\n                    me.trigger( 'error', 'timeout' );\n                }, duration );\n            }\n    \n        });\n    \n        // 让Transport具备事件功能。\n        Mediator.installTo( Transport.prototype );\n    \n        return Transport;\n    });\n    /**\n     * @fileOverview 负责文件上传相关。\n     */\n    define('widgets/upload',[\n        'base',\n        'uploader',\n        'file',\n        'lib/transport',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile, Transport ) {\n    \n        var $ = Base.$,\n            isPromise = Base.isPromise,\n            Status = WUFile.Status;\n    \n        // 添加默认配置项\n        $.extend( Uploader.options, {\n    \n    \n            /**\n             * @property {Boolean} [prepareNextFile=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否允许在文件传输时提前把下一个文件准备好。\n             * 对于一个文件的准备工作比较耗时，比如图片压缩，md5序列化。\n             * 如果能提前在当前文件传输期处理，可以节省总体耗时。\n             */\n            prepareNextFile: false,\n    \n            /**\n             * @property {Boolean} [chunked=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否要分片处理大文件上传。\n             */\n            chunked: false,\n    \n            /**\n             * @property {Boolean} [chunkSize=5242880]\n             * @namespace options\n             * @for Uploader\n             * @description 如果要分片，分多大一片？ 默认大小为5M.\n             */\n            chunkSize: 5 * 1024 * 1024,\n    \n            /**\n             * @property {Boolean} [chunkRetry=2]\n             * @namespace options\n             * @for Uploader\n             * @description 如果某个分片由于网络问题出错，允许自动重传多少次？\n             */\n            chunkRetry: 2,\n    \n            /**\n             * @property {Boolean} [threads=3]\n             * @namespace options\n             * @for Uploader\n             * @description 上传并发数。允许同时最大上传进程数。\n             */\n            threads: 3,\n    \n    \n            /**\n             * @property {Object} [formData={}]\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传请求的参数表，每次发送都会发送此对象中的参数。\n             */\n            formData: {}\n    \n            /**\n             * @property {Object} [fileVal='file']\n             * @namespace options\n             * @for Uploader\n             * @description 设置文件上传域的name。\n             */\n    \n            /**\n             * @property {Object} [method='POST']\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传方式，`POST`或者`GET`。\n             */\n    \n            /**\n             * @property {Object} [sendAsBinary=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否已二进制的流的方式发送文件，这样整个上传内容`php://input`都为文件内容，\n             * 其他参数在$_GET数组中。\n             */\n        });\n    \n        // 负责将文件切片。\n        function CuteFile( file, chunkSize ) {\n            var pending = [],\n                blob = file.source,\n                total = blob.size,\n                chunks = chunkSize ? Math.ceil( total / chunkSize ) : 1,\n                start = 0,\n                index = 0,\n                len, api;\n    \n            api = {\n                file: file,\n    \n                has: function() {\n                    return !!pending.length;\n                },\n    \n                shift: function() {\n                    return pending.shift();\n                },\n    \n                unshift: function( block ) {\n                    pending.unshift( block );\n                }\n            };\n    \n            while ( index < chunks ) {\n                len = Math.min( chunkSize, total - start );\n    \n                pending.push({\n                    file: file,\n                    start: start,\n                    end: chunkSize ? (start + len) : total,\n                    total: total,\n                    chunks: chunks,\n                    chunk: index++,\n                    cuted: api\n                });\n                start += len;\n            }\n    \n            file.blocks = pending.concat();\n            file.remaning = pending.length;\n    \n            return api;\n        }\n    \n        Uploader.register({\n            name: 'upload',\n    \n            init: function() {\n                var owner = this.owner,\n                    me = this;\n    \n                this.runing = false;\n                this.progress = false;\n    \n                owner\n                    .on( 'startUpload', function() {\n                        me.progress = true;\n                    })\n                    .on( 'uploadFinished', function() {\n                        me.progress = false;\n                    });\n    \n                // 记录当前正在传的数据，跟threads相关\n                this.pool = [];\n    \n                // 缓存分好片的文件。\n                this.stack = [];\n    \n                // 缓存即将上传的文件。\n                this.pending = [];\n    \n                // 跟踪还有多少分片在上传中但是没有完成上传。\n                this.remaning = 0;\n                this.__tick = Base.bindFn( this._tick, this );\n    \n                owner.on( 'uploadComplete', function( file ) {\n    \n                    // 把其他块取消了。\n                    file.blocks && $.each( file.blocks, function( _, v ) {\n                        v.transport && (v.transport.abort(), v.transport.destroy());\n                        delete v.transport;\n                    });\n    \n                    delete file.blocks;\n                    delete file.remaning;\n                });\n            },\n    \n            reset: function() {\n                this.request( 'stop-upload', true );\n                this.runing = false;\n                this.pool = [];\n                this.stack = [];\n                this.pending = [];\n                this.remaning = 0;\n                this._trigged = false;\n                this._promise = null;\n            },\n    \n            /**\n             * @event startUpload\n             * @description 当开始上传流程时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 开始上传。此方法可以从初始状态调用开始上传流程，也可以从暂停状态调用，继续上传流程。\n             *\n             * 可以指定开始某一个文件。\n             * @grammar upload() => undefined\n             * @grammar upload( file | fileId) => undefined\n             * @method upload\n             * @for  Uploader\n             */\n            startUpload: function(file) {\n                var me = this;\n    \n                // 移出invalid的文件\n                $.each( me.request( 'get-files', Status.INVALID ), function() {\n                    me.request( 'remove-file', this );\n                });\n    \n                // 如果指定了开始某个文件，则只开始指定文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if (file.getStatus() === Status.INTERRUPT) {\n                        $.each( me.pool, function( _, v ) {\n    \n                            // 之前暂停过。\n                            if (v.file !== file) {\n                                return;\n                            }\n    \n                            v.transport && v.transport.send();\n                        });\n    \n                        file.setStatus( Status.QUEUED );\n                    } else if (file.getStatus() === Status.PROGRESS) {\n                        return;\n                    } else {\n                        file.setStatus( Status.QUEUED );\n                    }\n                } else {\n                    $.each( me.request( 'get-files', [ Status.INITED ] ), function() {\n                        this.setStatus( Status.QUEUED );\n                    });\n                }\n    \n                if ( me.runing ) {\n                    return;\n                }\n    \n                me.runing = true;\n    \n                var files = [];\n    \n                // 如果有暂停的，则续传\n                $.each( me.pool, function( _, v ) {\n                    var file = v.file;\n    \n                    if ( file.getStatus() === Status.INTERRUPT ) {\n                        files.push(file);\n                        me._trigged = false;\n                        v.transport && v.transport.send();\n                    }\n                });\n    \n                var file;\n                while ( (file = files.shift()) ) {\n                    file.setStatus( Status.PROGRESS );\n                }\n    \n                file || $.each( me.request( 'get-files',\n                        Status.INTERRUPT ), function() {\n                    this.setStatus( Status.PROGRESS );\n                });\n    \n                me._trigged = false;\n                Base.nextTick( me.__tick );\n                me.owner.trigger('startUpload');\n            },\n    \n            /**\n             * @event stopUpload\n             * @description 当开始上传流程暂停时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 暂停上传。第一个参数为是否中断上传当前正在上传的文件。\n             *\n             * 如果第一个参数是文件，则只暂停指定文件。\n             * @grammar stop() => undefined\n             * @grammar stop( true ) => undefined\n             * @grammar stop( file ) => undefined\n             * @method stop\n             * @for  Uploader\n             */\n            stopUpload: function( file, interrupt ) {\n                var me = this;\n    \n                if (file === true) {\n                    interrupt = file;\n                    file = null;\n                }\n    \n                if ( me.runing === false ) {\n                    return;\n                }\n    \n                // 如果只是暂停某个文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if ( file.getStatus() !== Status.PROGRESS &&\n                            file.getStatus() !== Status.QUEUED ) {\n                        return;\n                    }\n    \n                    file.setStatus( Status.INTERRUPT );\n                    $.each( me.pool, function( _, v ) {\n    \n                        // 只 abort 指定的文件。\n                        if (v.file !== file) {\n                            return;\n                        }\n    \n                        v.transport && v.transport.abort();\n                        me._putback(v);\n                        me._popBlock(v);\n                    });\n    \n                    return Base.nextTick( me.__tick );\n                }\n    \n                me.runing = false;\n    \n                if (this._promise && this._promise.file) {\n                    this._promise.file.setStatus( Status.INTERRUPT );\n                }\n    \n                interrupt && $.each( me.pool, function( _, v ) {\n                    v.transport && v.transport.abort();\n                    v.file.setStatus( Status.INTERRUPT );\n                });\n    \n                me.owner.trigger('stopUpload');\n            },\n    \n            /**\n             * @method cancelFile\n             * @grammar cancelFile( file ) => undefined\n             * @grammar cancelFile( id ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 标记文件状态为已取消, 同时将中断文件传输。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.cancelFile( file );\n             * })\n             */\n            cancelFile: function( file ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                file.setStatus( Status.CANCELLED );\n                this.owner.trigger( 'fileDequeued', file );\n            },\n    \n            /**\n             * 判断`Uplaode`r是否正在上传中。\n             * @grammar isInProgress() => Boolean\n             * @method isInProgress\n             * @for  Uploader\n             */\n            isInProgress: function() {\n                return !!this.progress;\n            },\n    \n            _getStats: function() {\n                return this.request('get-stats');\n            },\n    \n            /**\n             * 掉过一个文件上传，直接标记指定文件为已上传状态。\n             * @grammar skipFile( file ) => undefined\n             * @method skipFile\n             * @for  Uploader\n             */\n            skipFile: function( file, status ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                file.setStatus( status || Status.COMPLETE );\n                file.skipped = true;\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                this.owner.trigger( 'uploadSkip', file );\n            },\n    \n            /**\n             * @event uploadFinished\n             * @description 当所有文件上传结束时触发。\n             * @for  Uploader\n             */\n            _tick: function() {\n                var me = this,\n                    opts = me.options,\n                    fn, val;\n    \n                // 上一个promise还没有结束，则等待完成后再执行。\n                if ( me._promise ) {\n                    return me._promise.always( me.__tick );\n                }\n    \n                // 还有位置，且还有文件要处理的话。\n                if ( me.pool.length < opts.threads && (val = me._nextBlock()) ) {\n                    me._trigged = false;\n    \n                    fn = function( val ) {\n                        me._promise = null;\n    \n                        // 有可能是reject过来的，所以要检测val的类型。\n                        val && val.file && me._startSend( val );\n                        Base.nextTick( me.__tick );\n                    };\n    \n                    me._promise = isPromise( val ) ? val.always( fn ) : fn( val );\n    \n                // 没有要上传的了，且没有正在传输的了。\n                } else if ( !me.remaning && !me._getStats().numOfQueue &&\n                    !me._getStats().numofInterrupt ) {\n                    me.runing = false;\n    \n                    me._trigged || Base.nextTick(function() {\n                        me.owner.trigger('uploadFinished');\n                    });\n                    me._trigged = true;\n                }\n            },\n    \n            _putback: function(block) {\n                var idx;\n    \n                block.cuted.unshift(block);\n                idx = this.stack.indexOf(block.cuted);\n    \n                if (!~idx) {\n                    this.stack.unshift(block.cuted);\n                }\n            },\n    \n            _getStack: function() {\n                var i = 0,\n                    act;\n    \n                while ( (act = this.stack[ i++ ]) ) {\n                    if ( act.has() && act.file.getStatus() === Status.PROGRESS ) {\n                        return act;\n                    } else if (!act.has() ||\n                            act.file.getStatus() !== Status.PROGRESS &&\n                            act.file.getStatus() !== Status.INTERRUPT ) {\n    \n                        // 把已经处理完了的，或者，状态为非 progress（上传中）、\n                        // interupt（暂停中） 的移除。\n                        this.stack.splice( --i, 1 );\n                    }\n                }\n    \n                return null;\n            },\n    \n            _nextBlock: function() {\n                var me = this,\n                    opts = me.options,\n                    act, next, done, preparing;\n    \n                // 如果当前文件还有没有需要传输的，则直接返回剩下的。\n                if ( (act = this._getStack()) ) {\n    \n                    // 是否提前准备下一个文件\n                    if ( opts.prepareNextFile && !me.pending.length ) {\n                        me._prepareNextFile();\n                    }\n    \n                    return act.shift();\n    \n                // 否则，如果正在运行，则准备下一个文件，并等待完成后返回下个分片。\n                } else if ( me.runing ) {\n    \n                    // 如果缓存中有，则直接在缓存中取，没有则去queue中取。\n                    if ( !me.pending.length && me._getStats().numOfQueue ) {\n                        me._prepareNextFile();\n                    }\n    \n                    next = me.pending.shift();\n                    done = function( file ) {\n                        if ( !file ) {\n                            return null;\n                        }\n    \n                        act = CuteFile( file, opts.chunked ? opts.chunkSize : 0 );\n                        me.stack.push(act);\n                        return act.shift();\n                    };\n    \n                    // 文件可能还在prepare中，也有可能已经完全准备好了。\n                    if ( isPromise( next) ) {\n                        preparing = next.file;\n                        next = next[ next.pipe ? 'pipe' : 'then' ]( done );\n                        next.file = preparing;\n                        return next;\n                    }\n    \n                    return done( next );\n                }\n            },\n    \n    \n            /**\n             * @event uploadStart\n             * @param {File} file File对象\n             * @description 某个文件开始上传前触发，一个文件只会触发一次。\n             * @for  Uploader\n             */\n            _prepareNextFile: function() {\n                var me = this,\n                    file = me.request('fetch-file'),\n                    pending = me.pending,\n                    promise;\n    \n                if ( file ) {\n                    promise = me.request( 'before-send-file', file, function() {\n    \n                        // 有可能文件被skip掉了。文件被skip掉后，状态坑定不是Queued.\n                        if ( file.getStatus() === Status.PROGRESS ||\n                            file.getStatus() === Status.INTERRUPT ) {\n                            return file;\n                        }\n    \n                        return me._finishFile( file );\n                    });\n    \n                    me.owner.trigger( 'uploadStart', file );\n                    file.setStatus( Status.PROGRESS );\n    \n                    promise.file = file;\n    \n                    // 如果还在pending中，则替换成文件本身。\n                    promise.done(function() {\n                        var idx = $.inArray( promise, pending );\n    \n                        ~idx && pending.splice( idx, 1, file );\n                    });\n    \n                    // befeore-send-file的钩子就有错误发生。\n                    promise.fail(function( reason ) {\n                        file.setStatus( Status.ERROR, reason );\n                        me.owner.trigger( 'uploadError', file, reason );\n                        me.owner.trigger( 'uploadComplete', file );\n                    });\n    \n                    pending.push( promise );\n                }\n            },\n    \n            // 让出位置了，可以让其他分片开始上传\n            _popBlock: function( block ) {\n                var idx = $.inArray( block, this.pool );\n    \n                this.pool.splice( idx, 1 );\n                block.file.remaning--;\n                this.remaning--;\n            },\n    \n            // 开始上传，可以被掉过。如果promise被reject了，则表示跳过此分片。\n            _startSend: function( block ) {\n                var me = this,\n                    file = block.file,\n                    promise;\n    \n                // 有可能在 before-send-file 的 promise 期间改变了文件状态。\n                // 如：暂停，取消\n                // 我们不能中断 promise, 但是可以在 promise 完后，不做上传操作。\n                if ( file.getStatus() !== Status.PROGRESS ) {\n    \n                    // 如果是中断，则还需要放回去。\n                    if (file.getStatus() === Status.INTERRUPT) {\n                        me._putback(block);\n                    }\n    \n                    return;\n                }\n    \n                me.pool.push( block );\n                me.remaning++;\n    \n                // 如果没有分片，则直接使用原始的。\n                // 不会丢失content-type信息。\n                block.blob = block.chunks === 1 ? file.source :\n                        file.source.slice( block.start, block.end );\n    \n                // hook, 每个分片发送之前可能要做些异步的事情。\n                promise = me.request( 'before-send', block, function() {\n    \n                    // 有可能文件已经上传出错了，所以不需要再传输了。\n                    if ( file.getStatus() === Status.PROGRESS ) {\n                        me._doSend( block );\n                    } else {\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n    \n                // 如果为fail了，则跳过此分片。\n                promise.fail(function() {\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file ).always(function() {\n                            block.percentage = 1;\n                            me._popBlock( block );\n                            me.owner.trigger( 'uploadComplete', file );\n                            Base.nextTick( me.__tick );\n                        });\n                    } else {\n                        block.percentage = 1;\n                        me.updateFileProgress( file );\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n            },\n    \n    \n            /**\n             * @event uploadBeforeSend\n             * @param {Object} object\n             * @param {Object} data 默认的上传参数，可以扩展此对象来控制上传参数。\n             * @param {Object} headers 可以扩展此对象来控制上传头部。\n             * @description 当某个文件的分块在发送前触发，主要用来询问是否要添加附带参数，大文件在开起分片上传的前提下此事件可能会触发多次。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadAccept\n             * @param {Object} object\n             * @param {Object} ret 服务端的返回数据，json格式，如果服务端不是json格式，从ret._raw中取数据，自行解析。\n             * @description 当某个文件上传到服务端响应后，会派送此事件来询问服务端响应是否有效。如果此事件handler返回值为`false`, 则此文件将派送`server`类型的`uploadError`事件。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadProgress\n             * @param {File} file File对象\n             * @param {Number} percentage 上传进度\n             * @description 上传过程中触发，携带上传进度。\n             * @for  Uploader\n             */\n    \n    \n            /**\n             * @event uploadError\n             * @param {File} file File对象\n             * @param {String} reason 出错的code\n             * @description 当文件上传出错时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadSuccess\n             * @param {File} file File对象\n             * @param {Object} response 服务端返回的数据\n             * @description 当文件上传成功时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadComplete\n             * @param {File} [file] File对象\n             * @description 不管成功或者失败，文件上传完成时触发。\n             * @for  Uploader\n             */\n    \n            // 做上传操作。\n            _doSend: function( block ) {\n                var me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    file = block.file,\n                    tr = new Transport( opts ),\n                    data = $.extend({}, opts.formData ),\n                    headers = $.extend({}, opts.headers ),\n                    requestAccept, ret;\n    \n                block.transport = tr;\n    \n                tr.on( 'destroy', function() {\n                    delete block.transport;\n                    me._popBlock( block );\n                    Base.nextTick( me.__tick );\n                });\n    \n                // 广播上传进度。以文件为单位。\n                tr.on( 'progress', function( percentage ) {\n                    block.percentage = percentage;\n                    me.updateFileProgress( file );\n                });\n    \n                // 用来询问，是否返回的结果是有错误的。\n                requestAccept = function( reject ) {\n                    var fn;\n    \n                    ret = tr.getResponseAsJson() || {};\n                    ret._raw = tr.getResponse();\n                    fn = function( value ) {\n                        reject = value;\n                    };\n    \n                    // 服务端响应了，不代表成功了，询问是否响应正确。\n                    if ( !owner.trigger( 'uploadAccept', block, ret, fn ) ) {\n                        reject = reject || 'server';\n                    }\n    \n                    return reject;\n                };\n    \n                // 尝试重试，然后广播文件上传出错。\n                tr.on( 'error', function( type, flag ) {\n                    block.retried = block.retried || 0;\n    \n                    // 自动重试\n                    if ( block.chunks > 1 && ~'http,abort'.indexOf( type ) &&\n                            block.retried < opts.chunkRetry ) {\n    \n                        block.retried++;\n                        tr.send();\n    \n                    } else {\n    \n                        // http status 500 ~ 600\n                        if ( !flag && type === 'server' ) {\n                            type = requestAccept( type );\n                        }\n    \n                        file.setStatus( Status.ERROR, type );\n                        owner.trigger( 'uploadError', file, type );\n                        owner.trigger( 'uploadComplete', file );\n                    }\n                });\n    \n                // 上传成功\n                tr.on( 'load', function() {\n                    var reason;\n    \n                    // 如果非预期，转向上传出错。\n                    if ( (reason = requestAccept()) ) {\n                        tr.trigger( 'error', reason, true );\n                        return;\n                    }\n    \n                    // 全部上传完成。\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file, ret );\n                    } else {\n                        tr.destroy();\n                    }\n                });\n    \n                // 配置默认的上传字段。\n                data = $.extend( data, {\n                    id: file.id,\n                    name: file.name,\n                    type: file.type,\n                    lastModifiedDate: file.lastModifiedDate,\n                    size: file.size\n                });\n    \n                block.chunks > 1 && $.extend( data, {\n                    chunks: block.chunks,\n                    chunk: block.chunk\n                });\n    \n                // 在发送之间可以添加字段什么的。。。\n                // 如果默认的字段不够使用，可以通过监听此事件来扩展\n                owner.trigger( 'uploadBeforeSend', block, data, headers );\n    \n                // 开始发送。\n                tr.appendBlob( opts.fileVal, block.blob, file.name );\n                tr.append( data );\n                tr.setRequestHeader( headers );\n                tr.send();\n            },\n    \n            // 完成上传。\n            _finishFile: function( file, ret, hds ) {\n                var owner = this.owner;\n    \n                return owner\n                        .request( 'after-send-file', arguments, function() {\n                            file.setStatus( Status.COMPLETE );\n                            owner.trigger( 'uploadSuccess', file, ret, hds );\n                        })\n                        .fail(function( reason ) {\n    \n                            // 如果外部已经标记为invalid什么的，不再改状态。\n                            if ( file.getStatus() === Status.PROGRESS ) {\n                                file.setStatus( Status.ERROR, reason );\n                            }\n    \n                            owner.trigger( 'uploadError', file, reason );\n                        })\n                        .always(function() {\n                            owner.trigger( 'uploadComplete', file );\n                        });\n            },\n    \n            updateFileProgress: function(file) {\n                var totalPercent = 0,\n                    uploaded = 0;\n    \n                if (!file.blocks) {\n                    return;\n                }\n    \n                $.each( file.blocks, function( _, v ) {\n                    uploaded += (v.percentage || 0) * (v.end - v.start);\n                });\n    \n                totalPercent = uploaded / file.size;\n                this.owner.trigger( 'uploadProgress', file, totalPercent || 0 );\n            }\n    \n        });\n    });\n    /**\n     * @fileOverview 日志组件，主要用来收集错误信息，可以帮助 webuploader 更好的定位问题和发展。\n     *\n     * 如果您不想要启用此功能，请在打包的时候去掉 log 模块。\n     *\n     * 或者可以在初始化的时候通过 options.disableWidgets 属性禁用。\n     *\n     * 如：\n     * WebUploader.create({\n     *     ...\n     *\n     *     disableWidgets: 'log',\n     *\n     *     ...\n     * })\n     */\n    define('widgets/log',[\n        'base',\n        'uploader',\n        'widgets/widget'\n    ], function( Base, Uploader ) {\n        var $ = Base.$,\n            logUrl = ' http://static.tieba.baidu.com/tb/pms/img/st.gif??',\n            product = (location.hostname || location.host || 'protected').toLowerCase(),\n    \n            // 只针对 baidu 内部产品用户做统计功能。\n            enable = product && /baidu/i.exec(product),\n            base;\n    \n        if (!enable) {\n            return;\n        }\n    \n        base = {\n            dv: 3,\n            master: 'webuploader',\n            online: /test/.exec(product) ? 0 : 1,\n            module: '',\n            product: product,\n            type: 0\n        };\n    \n        function send(data) {\n            var obj = $.extend({}, base, data),\n                url = logUrl.replace(/^(.*)\\?/, '$1' + $.param( obj )),\n                image = new Image();\n    \n            image.src = url;\n        }\n    \n        return Uploader.register({\n            name: 'log',\n    \n            init: function() {\n                var owner = this.owner,\n                    count = 0,\n                    size = 0;\n    \n                owner\n                    .on('error', function(code) {\n                        send({\n                            type: 2,\n                            c_error_code: code\n                        });\n                    })\n                    .on('uploadError', function(file, reason) {\n                        send({\n                            type: 2,\n                            c_error_code: 'UPLOAD_ERROR',\n                            c_reason: '' + reason\n                        });\n                    })\n                    .on('uploadComplete', function(file) {\n                        count++;\n                        size += file.size;\n                    }).\n                    on('uploadFinished', function() {\n                        send({\n                            c_count: count,\n                            c_size: size\n                        });\n                        count = size = 0;\n                    });\n    \n                send({\n                    c_usage: 1\n                });\n            }\n        });\n    });\n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/compbase',[],function() {\n    \n        function CompBase( owner, runtime ) {\n    \n            this.owner = owner;\n            this.options = owner.options;\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.getRuid = function() {\n                return runtime.uid;\n            };\n    \n            this.trigger = function() {\n                return owner.trigger.apply( owner, arguments );\n            };\n        }\n    \n        return CompBase;\n    });\n    /**\n     * @fileOverview Html5Runtime\n     */\n    define('runtime/html5/runtime',[\n        'base',\n        'runtime/runtime',\n        'runtime/compbase'\n    ], function( Base, Runtime, CompBase ) {\n    \n        var type = 'html5',\n            components = {};\n    \n        function Html5Runtime() {\n            var pool = {},\n                me = this,\n                destroy = this.destroy;\n    \n            Runtime.apply( me, arguments );\n            me.type = type;\n    \n    \n            // 这个方法的调用者，实际上是RuntimeClient\n            me.exec = function( comp, fn/*, args...*/) {\n                var client = this,\n                    uid = client.uid,\n                    args = Base.slice( arguments, 2 ),\n                    instance;\n    \n                if ( components[ comp ] ) {\n                    instance = pool[ uid ] = pool[ uid ] ||\n                            new components[ comp ]( client, me );\n    \n                    if ( instance[ fn ] ) {\n                        return instance[ fn ].apply( instance, args );\n                    }\n                }\n            };\n    \n            me.destroy = function() {\n                // @todo 删除池子中的所有实例\n                return destroy && destroy.apply( this, arguments );\n            };\n        }\n    \n        Base.inherits( Runtime, {\n            constructor: Html5Runtime,\n    \n            // 不需要连接其他程序，直接执行callback\n            init: function() {\n                var me = this;\n                setTimeout(function() {\n                    me.trigger('ready');\n                }, 1 );\n            }\n    \n        });\n    \n        // 注册Components\n        Html5Runtime.register = function( name, component ) {\n            var klass = components[ name ] = Base.inherits( CompBase, component );\n            return klass;\n        };\n    \n        // 注册html5运行时。\n        // 只有在支持的前提下注册。\n        if ( window.Blob && window.FileReader && window.DataView ) {\n            Runtime.addRuntime( type, Html5Runtime );\n        }\n    \n        return Html5Runtime;\n    });\n    /**\n     * @fileOverview Blob Html实现\n     */\n    define('runtime/html5/blob',[\n        'runtime/html5/runtime',\n        'lib/blob'\n    ], function( Html5Runtime, Blob ) {\n    \n        return Html5Runtime.register( 'Blob', {\n            slice: function( start, end ) {\n                var blob = this.owner.source,\n                    slice = blob.slice || blob.webkitSlice || blob.mozSlice;\n    \n                blob = slice.call( blob, start, end );\n    \n                return new Blob( this.getRuid(), blob );\n            }\n        });\n    });\n    /**\n     * @fileOverview FilePicker\n     */\n    define('runtime/html5/filepicker',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var $ = Base.$;\n    \n        return Html5Runtime.register( 'FilePicker', {\n            init: function() {\n                var container = this.getRuntime().getContainer(),\n                    me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    label = this.label = $( document.createElement('label') ),\n                    input =  this.input = $( document.createElement('input') ),\n                    arr, i, len, mouseHandler;\n    \n                input.attr( 'type', 'file' );\n                input.attr( 'name', opts.name );\n                input.addClass('webuploader-element-invisible');\n    \n                label.on( 'click', function() {\n                    input.trigger('click');\n                });\n    \n                label.css({\n                    opacity: 0,\n                    width: '100%',\n                    height: '100%',\n                    display: 'block',\n                    cursor: 'pointer',\n                    background: '#ffffff'\n                });\n    \n                if ( opts.multiple ) {\n                    input.attr( 'multiple', 'multiple' );\n                }\n    \n                // @todo Firefox不支持单独指定后缀\n                if ( opts.accept && opts.accept.length > 0 ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        arr.push( opts.accept[ i ].mimeTypes );\n                    }\n    \n                    input.attr( 'accept', arr.join(',') );\n                }\n    \n                container.append( input );\n                container.append( label );\n    \n                mouseHandler = function( e ) {\n                    owner.trigger( e.type );\n                };\n    \n                input.on( 'change', function( e ) {\n                    var fn = arguments.callee,\n                        clone;\n    \n                    me.files = e.target.files;\n    \n                    // reset input\n                    clone = this.cloneNode( true );\n                    clone.value = null;\n                    this.parentNode.replaceChild( clone, this );\n    \n                    input.off();\n                    input = $( clone ).on( 'change', fn )\n                            .on( 'mouseenter mouseleave', mouseHandler );\n    \n                    owner.trigger('change');\n                });\n    \n                label.on( 'mouseenter mouseleave', mouseHandler );\n    \n            },\n    \n    \n            getFiles: function() {\n                return this.files;\n            },\n    \n            destroy: function() {\n                this.input.off();\n                this.label.off();\n            }\n        });\n    });\n    /**\n     * Terms:\n     *\n     * Uint8Array, FileReader, BlobBuilder, atob, ArrayBuffer\n     * @fileOverview Image控件\n     */\n    define('runtime/html5/util',[\n        'base'\n    ], function( Base ) {\n    \n        var urlAPI = window.createObjectURL && window ||\n                window.URL && URL.revokeObjectURL && URL ||\n                window.webkitURL,\n            createObjectURL = Base.noop,\n            revokeObjectURL = createObjectURL;\n    \n        if ( urlAPI ) {\n    \n            // 更安全的方式调用，比如android里面就能把context改成其他的对象。\n            createObjectURL = function() {\n                return urlAPI.createObjectURL.apply( urlAPI, arguments );\n            };\n    \n            revokeObjectURL = function() {\n                return urlAPI.revokeObjectURL.apply( urlAPI, arguments );\n            };\n        }\n    \n        return {\n            createObjectURL: createObjectURL,\n            revokeObjectURL: revokeObjectURL,\n    \n            dataURL2Blob: function( dataURI ) {\n                var byteStr, intArray, ab, i, mimetype, parts;\n    \n                parts = dataURI.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    byteStr = atob( parts[ 1 ] );\n                } else {\n                    byteStr = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                ab = new ArrayBuffer( byteStr.length );\n                intArray = new Uint8Array( ab );\n    \n                for ( i = 0; i < byteStr.length; i++ ) {\n                    intArray[ i ] = byteStr.charCodeAt( i );\n                }\n    \n                mimetype = parts[ 0 ].split(':')[ 1 ].split(';')[ 0 ];\n    \n                return this.arrayBufferToBlob( ab, mimetype );\n            },\n    \n            dataURL2ArrayBuffer: function( dataURI ) {\n                var byteStr, intArray, i, parts;\n    \n                parts = dataURI.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    byteStr = atob( parts[ 1 ] );\n                } else {\n                    byteStr = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                intArray = new Uint8Array( byteStr.length );\n    \n                for ( i = 0; i < byteStr.length; i++ ) {\n                    intArray[ i ] = byteStr.charCodeAt( i );\n                }\n    \n                return intArray.buffer;\n            },\n    \n            arrayBufferToBlob: function( buffer, type ) {\n                var builder = window.BlobBuilder || window.WebKitBlobBuilder,\n                    bb;\n    \n                // android不支持直接new Blob, 只能借助blobbuilder.\n                if ( builder ) {\n                    bb = new builder();\n                    bb.append( buffer );\n                    return bb.getBlob( type );\n                }\n    \n                return new Blob([ buffer ], type ? { type: type } : {} );\n            },\n    \n            // 抽出来主要是为了解决android下面canvas.toDataUrl不支持jpeg.\n            // 你得到的结果是png.\n            canvasToDataUrl: function( canvas, type, quality ) {\n                return canvas.toDataURL( type, quality / 100 );\n            },\n    \n            // imagemeat会复写这个方法，如果用户选择加载那个文件了的话。\n            parseMeta: function( blob, callback ) {\n                callback( false, {});\n            },\n    \n            // imagemeat会复写这个方法，如果用户选择加载那个文件了的话。\n            updateImageHead: function( data ) {\n                return data;\n            }\n        };\n    });\n    /**\n     * Terms:\n     *\n     * Uint8Array, FileReader, BlobBuilder, atob, ArrayBuffer\n     * @fileOverview Image控件\n     */\n    define('runtime/html5/imagemeta',[\n        'runtime/html5/util'\n    ], function( Util ) {\n    \n        var api;\n    \n        api = {\n            parsers: {\n                0xffe1: []\n            },\n    \n            maxMetaDataSize: 262144,\n    \n            parse: function( blob, cb ) {\n                var me = this,\n                    fr = new FileReader();\n    \n                fr.onload = function() {\n                    cb( false, me._parse( this.result ) );\n                    fr = fr.onload = fr.onerror = null;\n                };\n    \n                fr.onerror = function( e ) {\n                    cb( e.message );\n                    fr = fr.onload = fr.onerror = null;\n                };\n    \n                blob = blob.slice( 0, me.maxMetaDataSize );\n                fr.readAsArrayBuffer( blob.getSource() );\n            },\n    \n            _parse: function( buffer, noParse ) {\n                if ( buffer.byteLength < 6 ) {\n                    return;\n                }\n    \n                var dataview = new DataView( buffer ),\n                    offset = 2,\n                    maxOffset = dataview.byteLength - 4,\n                    headLength = offset,\n                    ret = {},\n                    markerBytes, markerLength, parsers, i;\n    \n                if ( dataview.getUint16( 0 ) === 0xffd8 ) {\n    \n                    while ( offset < maxOffset ) {\n                        markerBytes = dataview.getUint16( offset );\n    \n                        if ( markerBytes >= 0xffe0 && markerBytes <= 0xffef ||\n                                markerBytes === 0xfffe ) {\n    \n                            markerLength = dataview.getUint16( offset + 2 ) + 2;\n    \n                            if ( offset + markerLength > dataview.byteLength ) {\n                                break;\n                            }\n    \n                            parsers = api.parsers[ markerBytes ];\n    \n                            if ( !noParse && parsers ) {\n                                for ( i = 0; i < parsers.length; i += 1 ) {\n                                    parsers[ i ].call( api, dataview, offset,\n                                            markerLength, ret );\n                                }\n                            }\n    \n                            offset += markerLength;\n                            headLength = offset;\n                        } else {\n                            break;\n                        }\n                    }\n    \n                    if ( headLength > 6 ) {\n                        if ( buffer.slice ) {\n                            ret.imageHead = buffer.slice( 2, headLength );\n                        } else {\n                            // Workaround for IE10, which does not yet\n                            // support ArrayBuffer.slice:\n                            ret.imageHead = new Uint8Array( buffer )\n                                    .subarray( 2, headLength );\n                        }\n                    }\n                }\n    \n                return ret;\n            },\n    \n            updateImageHead: function( buffer, head ) {\n                var data = this._parse( buffer, true ),\n                    buf1, buf2, bodyoffset;\n    \n    \n                bodyoffset = 2;\n                if ( data.imageHead ) {\n                    bodyoffset = 2 + data.imageHead.byteLength;\n                }\n    \n                if ( buffer.slice ) {\n                    buf2 = buffer.slice( bodyoffset );\n                } else {\n                    buf2 = new Uint8Array( buffer ).subarray( bodyoffset );\n                }\n    \n                buf1 = new Uint8Array( head.byteLength + 2 + buf2.byteLength );\n    \n                buf1[ 0 ] = 0xFF;\n                buf1[ 1 ] = 0xD8;\n                buf1.set( new Uint8Array( head ), 2 );\n                buf1.set( new Uint8Array( buf2 ), head.byteLength + 2 );\n    \n                return buf1.buffer;\n            }\n        };\n    \n        Util.parseMeta = function() {\n            return api.parse.apply( api, arguments );\n        };\n    \n        Util.updateImageHead = function() {\n            return api.updateImageHead.apply( api, arguments );\n        };\n    \n        return api;\n    });\n    /**\n     * 代码来自于：https://github.com/blueimp/JavaScript-Load-Image\n     * 暂时项目中只用了orientation.\n     *\n     * 去除了 Exif Sub IFD Pointer, GPS Info IFD Pointer, Exif Thumbnail.\n     * @fileOverview EXIF解析\n     */\n    \n    // Sample\n    // ====================================\n    // Make : Apple\n    // Model : iPhone 4S\n    // Orientation : 1\n    // XResolution : 72 [72/1]\n    // YResolution : 72 [72/1]\n    // ResolutionUnit : 2\n    // Software : QuickTime 7.7.1\n    // DateTime : 2013:09:01 22:53:55\n    // ExifIFDPointer : 190\n    // ExposureTime : 0.058823529411764705 [1/17]\n    // FNumber : 2.4 [12/5]\n    // ExposureProgram : Normal program\n    // ISOSpeedRatings : 800\n    // ExifVersion : 0220\n    // DateTimeOriginal : 2013:09:01 22:52:51\n    // DateTimeDigitized : 2013:09:01 22:52:51\n    // ComponentsConfiguration : YCbCr\n    // ShutterSpeedValue : 4.058893515764426\n    // ApertureValue : 2.5260688216892597 [4845/1918]\n    // BrightnessValue : -0.3126686601998395\n    // MeteringMode : Pattern\n    // Flash : Flash did not fire, compulsory flash mode\n    // FocalLength : 4.28 [107/25]\n    // SubjectArea : [4 values]\n    // FlashpixVersion : 0100\n    // ColorSpace : 1\n    // PixelXDimension : 2448\n    // PixelYDimension : 3264\n    // SensingMethod : One-chip color area sensor\n    // ExposureMode : 0\n    // WhiteBalance : Auto white balance\n    // FocalLengthIn35mmFilm : 35\n    // SceneCaptureType : Standard\n    define('runtime/html5/imagemeta/exif',[\n        'base',\n        'runtime/html5/imagemeta'\n    ], function( Base, ImageMeta ) {\n    \n        var EXIF = {};\n    \n        EXIF.ExifMap = function() {\n            return this;\n        };\n    \n        EXIF.ExifMap.prototype.map = {\n            'Orientation': 0x0112\n        };\n    \n        EXIF.ExifMap.prototype.get = function( id ) {\n            return this[ id ] || this[ this.map[ id ] ];\n        };\n    \n        EXIF.exifTagTypes = {\n            // byte, 8-bit unsigned int:\n            1: {\n                getValue: function( dataView, dataOffset ) {\n                    return dataView.getUint8( dataOffset );\n                },\n                size: 1\n            },\n    \n            // ascii, 8-bit byte:\n            2: {\n                getValue: function( dataView, dataOffset ) {\n                    return String.fromCharCode( dataView.getUint8( dataOffset ) );\n                },\n                size: 1,\n                ascii: true\n            },\n    \n            // short, 16 bit int:\n            3: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint16( dataOffset, littleEndian );\n                },\n                size: 2\n            },\n    \n            // long, 32 bit int:\n            4: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint32( dataOffset, littleEndian );\n                },\n                size: 4\n            },\n    \n            // rational = two long values,\n            // first is numerator, second is denominator:\n            5: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint32( dataOffset, littleEndian ) /\n                        dataView.getUint32( dataOffset + 4, littleEndian );\n                },\n                size: 8\n            },\n    \n            // slong, 32 bit signed int:\n            9: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getInt32( dataOffset, littleEndian );\n                },\n                size: 4\n            },\n    \n            // srational, two slongs, first is numerator, second is denominator:\n            10: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getInt32( dataOffset, littleEndian ) /\n                        dataView.getInt32( dataOffset + 4, littleEndian );\n                },\n                size: 8\n            }\n        };\n    \n        // undefined, 8-bit byte, value depending on field:\n        EXIF.exifTagTypes[ 7 ] = EXIF.exifTagTypes[ 1 ];\n    \n        EXIF.getExifValue = function( dataView, tiffOffset, offset, type, length,\n                littleEndian ) {\n    \n            var tagType = EXIF.exifTagTypes[ type ],\n                tagSize, dataOffset, values, i, str, c;\n    \n            if ( !tagType ) {\n                Base.log('Invalid Exif data: Invalid tag type.');\n                return;\n            }\n    \n            tagSize = tagType.size * length;\n    \n            // Determine if the value is contained in the dataOffset bytes,\n            // or if the value at the dataOffset is a pointer to the actual data:\n            dataOffset = tagSize > 4 ? tiffOffset + dataView.getUint32( offset + 8,\n                    littleEndian ) : (offset + 8);\n    \n            if ( dataOffset + tagSize > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid data offset.');\n                return;\n            }\n    \n            if ( length === 1 ) {\n                return tagType.getValue( dataView, dataOffset, littleEndian );\n            }\n    \n            values = [];\n    \n            for ( i = 0; i < length; i += 1 ) {\n                values[ i ] = tagType.getValue( dataView,\n                        dataOffset + i * tagType.size, littleEndian );\n            }\n    \n            if ( tagType.ascii ) {\n                str = '';\n    \n                // Concatenate the chars:\n                for ( i = 0; i < values.length; i += 1 ) {\n                    c = values[ i ];\n    \n                    // Ignore the terminating NULL byte(s):\n                    if ( c === '\\u0000' ) {\n                        break;\n                    }\n                    str += c;\n                }\n    \n                return str;\n            }\n            return values;\n        };\n    \n        EXIF.parseExifTag = function( dataView, tiffOffset, offset, littleEndian,\n                data ) {\n    \n            var tag = dataView.getUint16( offset, littleEndian );\n            data.exif[ tag ] = EXIF.getExifValue( dataView, tiffOffset, offset,\n                    dataView.getUint16( offset + 2, littleEndian ),    // tag type\n                    dataView.getUint32( offset + 4, littleEndian ),    // tag length\n                    littleEndian );\n        };\n    \n        EXIF.parseExifTags = function( dataView, tiffOffset, dirOffset,\n                littleEndian, data ) {\n    \n            var tagsNumber, dirEndOffset, i;\n    \n            if ( dirOffset + 6 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid directory offset.');\n                return;\n            }\n    \n            tagsNumber = dataView.getUint16( dirOffset, littleEndian );\n            dirEndOffset = dirOffset + 2 + 12 * tagsNumber;\n    \n            if ( dirEndOffset + 4 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid directory size.');\n                return;\n            }\n    \n            for ( i = 0; i < tagsNumber; i += 1 ) {\n                this.parseExifTag( dataView, tiffOffset,\n                        dirOffset + 2 + 12 * i,    // tag offset\n                        littleEndian, data );\n            }\n    \n            // Return the offset to the next directory:\n            return dataView.getUint32( dirEndOffset, littleEndian );\n        };\n    \n        // EXIF.getExifThumbnail = function(dataView, offset, length) {\n        //     var hexData,\n        //         i,\n        //         b;\n        //     if (!length || offset + length > dataView.byteLength) {\n        //         Base.log('Invalid Exif data: Invalid thumbnail data.');\n        //         return;\n        //     }\n        //     hexData = [];\n        //     for (i = 0; i < length; i += 1) {\n        //         b = dataView.getUint8(offset + i);\n        //         hexData.push((b < 16 ? '0' : '') + b.toString(16));\n        //     }\n        //     return 'data:image/jpeg,%' + hexData.join('%');\n        // };\n    \n        EXIF.parseExifData = function( dataView, offset, length, data ) {\n    \n            var tiffOffset = offset + 10,\n                littleEndian, dirOffset;\n    \n            // Check for the ASCII code for \"Exif\" (0x45786966):\n            if ( dataView.getUint32( offset + 4 ) !== 0x45786966 ) {\n                // No Exif data, might be XMP data instead\n                return;\n            }\n            if ( tiffOffset + 8 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid segment size.');\n                return;\n            }\n    \n            // Check for the two null bytes:\n            if ( dataView.getUint16( offset + 8 ) !== 0x0000 ) {\n                Base.log('Invalid Exif data: Missing byte alignment offset.');\n                return;\n            }\n    \n            // Check the byte alignment:\n            switch ( dataView.getUint16( tiffOffset ) ) {\n                case 0x4949:\n                    littleEndian = true;\n                    break;\n    \n                case 0x4D4D:\n                    littleEndian = false;\n                    break;\n    \n                default:\n                    Base.log('Invalid Exif data: Invalid byte alignment marker.');\n                    return;\n            }\n    \n            // Check for the TIFF tag marker (0x002A):\n            if ( dataView.getUint16( tiffOffset + 2, littleEndian ) !== 0x002A ) {\n                Base.log('Invalid Exif data: Missing TIFF marker.');\n                return;\n            }\n    \n            // Retrieve the directory offset bytes, usually 0x00000008 or 8 decimal:\n            dirOffset = dataView.getUint32( tiffOffset + 4, littleEndian );\n            // Create the exif object to store the tags:\n            data.exif = new EXIF.ExifMap();\n            // Parse the tags of the main image directory and retrieve the\n            // offset to the next directory, usually the thumbnail directory:\n            dirOffset = EXIF.parseExifTags( dataView, tiffOffset,\n                    tiffOffset + dirOffset, littleEndian, data );\n    \n            // 尝试读取缩略图\n            // if ( dirOffset ) {\n            //     thumbnailData = {exif: {}};\n            //     dirOffset = EXIF.parseExifTags(\n            //         dataView,\n            //         tiffOffset,\n            //         tiffOffset + dirOffset,\n            //         littleEndian,\n            //         thumbnailData\n            //     );\n    \n            //     // Check for JPEG Thumbnail offset:\n            //     if (thumbnailData.exif[0x0201]) {\n            //         data.exif.Thumbnail = EXIF.getExifThumbnail(\n            //             dataView,\n            //             tiffOffset + thumbnailData.exif[0x0201],\n            //             thumbnailData.exif[0x0202] // Thumbnail data length\n            //         );\n            //     }\n            // }\n        };\n    \n        ImageMeta.parsers[ 0xffe1 ].push( EXIF.parseExifData );\n        return EXIF;\n    });\n    /**\n     * @fileOverview Image\n     */\n    define('runtime/html5/image',[\n        'base',\n        'runtime/html5/runtime',\n        'runtime/html5/util'\n    ], function( Base, Html5Runtime, Util ) {\n    \n        var BLANK = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D';\n    \n        return Html5Runtime.register( 'Image', {\n    \n            // flag: 标记是否被修改过。\n            modified: false,\n    \n            init: function() {\n                var me = this,\n                    img = new Image();\n    \n                img.onload = function() {\n    \n                    me._info = {\n                        type: me.type,\n                        width: this.width,\n                        height: this.height\n                    };\n    \n                    // 读取meta信息。\n                    if ( !me._metas && 'image/jpeg' === me.type ) {\n                        Util.parseMeta( me._blob, function( error, ret ) {\n                            me._metas = ret;\n                            me.owner.trigger('load');\n                        });\n                    } else {\n                        me.owner.trigger('load');\n                    }\n                };\n    \n                img.onerror = function() {\n                    me.owner.trigger('error');\n                };\n    \n                me._img = img;\n            },\n    \n            loadFromBlob: function( blob ) {\n                var me = this,\n                    img = me._img;\n    \n                me._blob = blob;\n                me.type = blob.type;\n                img.src = Util.createObjectURL( blob.getSource() );\n                me.owner.once( 'load', function() {\n                    Util.revokeObjectURL( img.src );\n                });\n            },\n    \n            resize: function( width, height ) {\n                var canvas = this._canvas ||\n                        (this._canvas = document.createElement('canvas'));\n    \n                this._resize( this._img, canvas, width, height );\n                this._blob = null;    // 没用了，可以删掉了。\n                this.modified = true;\n                this.owner.trigger( 'complete', 'resize' );\n            },\n    \n            crop: function( x, y, w, h, s ) {\n                var cvs = this._canvas ||\n                        (this._canvas = document.createElement('canvas')),\n                    opts = this.options,\n                    img = this._img,\n                    iw = img.naturalWidth,\n                    ih = img.naturalHeight,\n                    orientation = this.getOrientation();\n    \n                s = s || 1;\n    \n                // todo 解决 orientation 的问题。\n                // values that require 90 degree rotation\n                // if ( ~[ 5, 6, 7, 8 ].indexOf( orientation ) ) {\n    \n                //     switch ( orientation ) {\n                //         case 6:\n                //             tmp = x;\n                //             x = y;\n                //             y = iw * s - tmp - w;\n                //             console.log(ih * s, tmp, w)\n                //             break;\n                //     }\n    \n                //     (w ^= h, h ^= w, w ^= h);\n                // }\n    \n                cvs.width = w;\n                cvs.height = h;\n    \n                opts.preserveHeaders || this._rotate2Orientaion( cvs, orientation );\n                this._renderImageToCanvas( cvs, img, -x, -y, iw * s, ih * s );\n    \n                this._blob = null;    // 没用了，可以删掉了。\n                this.modified = true;\n                this.owner.trigger( 'complete', 'crop' );\n            },\n    \n            getAsBlob: function( type ) {\n                var blob = this._blob,\n                    opts = this.options,\n                    canvas;\n    \n                type = type || this.type;\n    \n                // blob需要重新生成。\n                if ( this.modified || this.type !== type ) {\n                    canvas = this._canvas;\n    \n                    if ( type === 'image/jpeg' ) {\n    \n                        blob = Util.canvasToDataUrl( canvas, type, opts.quality );\n    \n                        if ( opts.preserveHeaders && this._metas &&\n                                this._metas.imageHead ) {\n    \n                            blob = Util.dataURL2ArrayBuffer( blob );\n                            blob = Util.updateImageHead( blob,\n                                    this._metas.imageHead );\n                            blob = Util.arrayBufferToBlob( blob, type );\n                            return blob;\n                        }\n                    } else {\n                        blob = Util.canvasToDataUrl( canvas, type );\n                    }\n    \n                    blob = Util.dataURL2Blob( blob );\n                }\n    \n                return blob;\n            },\n    \n            getAsDataUrl: function( type ) {\n                var opts = this.options;\n    \n                type = type || this.type;\n    \n                if ( type === 'image/jpeg' ) {\n                    return Util.canvasToDataUrl( this._canvas, type, opts.quality );\n                } else {\n                    return this._canvas.toDataURL( type );\n                }\n            },\n    \n            getOrientation: function() {\n                return this._metas && this._metas.exif &&\n                        this._metas.exif.get('Orientation') || 1;\n            },\n    \n            info: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._info = val;\n                    return this;\n                }\n    \n                // getter\n                return this._info;\n            },\n    \n            meta: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._meta = val;\n                    return this;\n                }\n    \n                // getter\n                return this._meta;\n            },\n    \n            destroy: function() {\n                var canvas = this._canvas;\n                this._img.onload = null;\n    \n                if ( canvas ) {\n                    canvas.getContext('2d')\n                            .clearRect( 0, 0, canvas.width, canvas.height );\n                    canvas.width = canvas.height = 0;\n                    this._canvas = null;\n                }\n    \n                // 释放内存。非常重要，否则释放不了image的内存。\n                this._img.src = BLANK;\n                this._img = this._blob = null;\n            },\n    \n            _resize: function( img, cvs, width, height ) {\n                var opts = this.options,\n                    naturalWidth = img.width,\n                    naturalHeight = img.height,\n                    orientation = this.getOrientation(),\n                    scale, w, h, x, y;\n    \n                // values that require 90 degree rotation\n                if ( ~[ 5, 6, 7, 8 ].indexOf( orientation ) ) {\n    \n                    // 交换width, height的值。\n                    width ^= height;\n                    height ^= width;\n                    width ^= height;\n                }\n    \n                scale = Math[ opts.crop ? 'max' : 'min' ]( width / naturalWidth,\n                        height / naturalHeight );\n    \n                // 不允许放大。\n                opts.allowMagnify || (scale = Math.min( 1, scale ));\n    \n                w = naturalWidth * scale;\n                h = naturalHeight * scale;\n    \n                if ( opts.crop ) {\n                    cvs.width = width;\n                    cvs.height = height;\n                } else {\n                    cvs.width = w;\n                    cvs.height = h;\n                }\n    \n                x = (cvs.width - w) / 2;\n                y = (cvs.height - h) / 2;\n    \n                opts.preserveHeaders || this._rotate2Orientaion( cvs, orientation );\n    \n                this._renderImageToCanvas( cvs, img, x, y, w, h );\n            },\n    \n            _rotate2Orientaion: function( canvas, orientation ) {\n                var width = canvas.width,\n                    height = canvas.height,\n                    ctx = canvas.getContext('2d');\n    \n                switch ( orientation ) {\n                    case 5:\n                    case 6:\n                    case 7:\n                    case 8:\n                        canvas.width = height;\n                        canvas.height = width;\n                        break;\n                }\n    \n                switch ( orientation ) {\n                    case 2:    // horizontal flip\n                        ctx.translate( width, 0 );\n                        ctx.scale( -1, 1 );\n                        break;\n    \n                    case 3:    // 180 rotate left\n                        ctx.translate( width, height );\n                        ctx.rotate( Math.PI );\n                        break;\n    \n                    case 4:    // vertical flip\n                        ctx.translate( 0, height );\n                        ctx.scale( 1, -1 );\n                        break;\n    \n                    case 5:    // vertical flip + 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.scale( 1, -1 );\n                        break;\n    \n                    case 6:    // 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.translate( 0, -height );\n                        break;\n    \n                    case 7:    // horizontal flip + 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.translate( width, -height );\n                        ctx.scale( -1, 1 );\n                        break;\n    \n                    case 8:    // 90 rotate left\n                        ctx.rotate( -0.5 * Math.PI );\n                        ctx.translate( -width, 0 );\n                        break;\n                }\n            },\n    \n            // https://github.com/stomita/ios-imagefile-megapixel/\n            // blob/master/src/megapix-image.js\n            _renderImageToCanvas: (function() {\n    \n                // 如果不是ios, 不需要这么复杂！\n                if ( !Base.os.ios ) {\n                    return function( canvas ) {\n                        var args = Base.slice( arguments, 1 ),\n                            ctx = canvas.getContext('2d');\n    \n                        ctx.drawImage.apply( ctx, args );\n                    };\n                }\n    \n                /**\n                 * Detecting vertical squash in loaded image.\n                 * Fixes a bug which squash image vertically while drawing into\n                 * canvas for some images.\n                 */\n                function detectVerticalSquash( img, iw, ih ) {\n                    var canvas = document.createElement('canvas'),\n                        ctx = canvas.getContext('2d'),\n                        sy = 0,\n                        ey = ih,\n                        py = ih,\n                        data, alpha, ratio;\n    \n    \n                    canvas.width = 1;\n                    canvas.height = ih;\n                    ctx.drawImage( img, 0, 0 );\n                    data = ctx.getImageData( 0, 0, 1, ih ).data;\n    \n                    // search image edge pixel position in case\n                    // it is squashed vertically.\n                    while ( py > sy ) {\n                        alpha = data[ (py - 1) * 4 + 3 ];\n    \n                        if ( alpha === 0 ) {\n                            ey = py;\n                        } else {\n                            sy = py;\n                        }\n    \n                        py = (ey + sy) >> 1;\n                    }\n    \n                    ratio = (py / ih);\n                    return (ratio === 0) ? 1 : ratio;\n                }\n    \n                // fix ie7 bug\n                // http://stackoverflow.com/questions/11929099/\n                // html5-canvas-drawimage-ratio-bug-ios\n                if ( Base.os.ios >= 7 ) {\n                    return function( canvas, img, x, y, w, h ) {\n                        var iw = img.naturalWidth,\n                            ih = img.naturalHeight,\n                            vertSquashRatio = detectVerticalSquash( img, iw, ih );\n    \n                        return canvas.getContext('2d').drawImage( img, 0, 0,\n                                iw * vertSquashRatio, ih * vertSquashRatio,\n                                x, y, w, h );\n                    };\n                }\n    \n                /**\n                 * Detect subsampling in loaded image.\n                 * In iOS, larger images than 2M pixels may be\n                 * subsampled in rendering.\n                 */\n                function detectSubsampling( img ) {\n                    var iw = img.naturalWidth,\n                        ih = img.naturalHeight,\n                        canvas, ctx;\n    \n                    // subsampling may happen overmegapixel image\n                    if ( iw * ih > 1024 * 1024 ) {\n                        canvas = document.createElement('canvas');\n                        canvas.width = canvas.height = 1;\n                        ctx = canvas.getContext('2d');\n                        ctx.drawImage( img, -iw + 1, 0 );\n    \n                        // subsampled image becomes half smaller in rendering size.\n                        // check alpha channel value to confirm image is covering\n                        // edge pixel or not. if alpha value is 0\n                        // image is not covering, hence subsampled.\n                        return ctx.getImageData( 0, 0, 1, 1 ).data[ 3 ] === 0;\n                    } else {\n                        return false;\n                    }\n                }\n    \n    \n                return function( canvas, img, x, y, width, height ) {\n                    var iw = img.naturalWidth,\n                        ih = img.naturalHeight,\n                        ctx = canvas.getContext('2d'),\n                        subsampled = detectSubsampling( img ),\n                        doSquash = this.type === 'image/jpeg',\n                        d = 1024,\n                        sy = 0,\n                        dy = 0,\n                        tmpCanvas, tmpCtx, vertSquashRatio, dw, dh, sx, dx;\n    \n                    if ( subsampled ) {\n                        iw /= 2;\n                        ih /= 2;\n                    }\n    \n                    ctx.save();\n                    tmpCanvas = document.createElement('canvas');\n                    tmpCanvas.width = tmpCanvas.height = d;\n    \n                    tmpCtx = tmpCanvas.getContext('2d');\n                    vertSquashRatio = doSquash ?\n                            detectVerticalSquash( img, iw, ih ) : 1;\n    \n                    dw = Math.ceil( d * width / iw );\n                    dh = Math.ceil( d * height / ih / vertSquashRatio );\n    \n                    while ( sy < ih ) {\n                        sx = 0;\n                        dx = 0;\n                        while ( sx < iw ) {\n                            tmpCtx.clearRect( 0, 0, d, d );\n                            tmpCtx.drawImage( img, -sx, -sy );\n                            ctx.drawImage( tmpCanvas, 0, 0, d, d,\n                                    x + dx, y + dy, dw, dh );\n                            sx += d;\n                            dx += dw;\n                        }\n                        sy += d;\n                        dy += dh;\n                    }\n                    ctx.restore();\n                    tmpCanvas = tmpCtx = null;\n                };\n            })()\n        });\n    });\n    /**\n     * 这个方式性能不行，但是可以解决android里面的toDataUrl的bug\n     * android里面toDataUrl('image/jpege')得到的结果却是png.\n     *\n     * 所以这里没辙，只能借助这个工具\n     * @fileOverview jpeg encoder\n     */\n    define('runtime/html5/jpegencoder',[], function( require, exports, module ) {\n    \n        /*\n          Copyright (c) 2008, Adobe Systems Incorporated\n          All rights reserved.\n    \n          Redistribution and use in source and binary forms, with or without\n          modification, are permitted provided that the following conditions are\n          met:\n    \n          * Redistributions of source code must retain the above copyright notice,\n            this list of conditions and the following disclaimer.\n    \n          * Redistributions in binary form must reproduce the above copyright\n            notice, this list of conditions and the following disclaimer in the\n            documentation and/or other materials provided with the distribution.\n    \n          * Neither the name of Adobe Systems Incorporated nor the names of its\n            contributors may be used to endorse or promote products derived from\n            this software without specific prior written permission.\n    \n          THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n          IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n          THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n          PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n          CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n          EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n          PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n          PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n          LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n          NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n          SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n        */\n        /*\n        JPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009\n    \n        Basic GUI blocking jpeg encoder\n        */\n    \n        function JPEGEncoder(quality) {\n          var self = this;\n            var fround = Math.round;\n            var ffloor = Math.floor;\n            var YTable = new Array(64);\n            var UVTable = new Array(64);\n            var fdtbl_Y = new Array(64);\n            var fdtbl_UV = new Array(64);\n            var YDC_HT;\n            var UVDC_HT;\n            var YAC_HT;\n            var UVAC_HT;\n    \n            var bitcode = new Array(65535);\n            var category = new Array(65535);\n            var outputfDCTQuant = new Array(64);\n            var DU = new Array(64);\n            var byteout = [];\n            var bytenew = 0;\n            var bytepos = 7;\n    \n            var YDU = new Array(64);\n            var UDU = new Array(64);\n            var VDU = new Array(64);\n            var clt = new Array(256);\n            var RGB_YUV_TABLE = new Array(2048);\n            var currentQuality;\n    \n            var ZigZag = [\n                     0, 1, 5, 6,14,15,27,28,\n                     2, 4, 7,13,16,26,29,42,\n                     3, 8,12,17,25,30,41,43,\n                     9,11,18,24,31,40,44,53,\n                    10,19,23,32,39,45,52,54,\n                    20,22,33,38,46,51,55,60,\n                    21,34,37,47,50,56,59,61,\n                    35,36,48,49,57,58,62,63\n                ];\n    \n            var std_dc_luminance_nrcodes = [0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0];\n            var std_dc_luminance_values = [0,1,2,3,4,5,6,7,8,9,10,11];\n            var std_ac_luminance_nrcodes = [0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d];\n            var std_ac_luminance_values = [\n                    0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,\n                    0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,\n                    0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,\n                    0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,\n                    0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,\n                    0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,\n                    0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,\n                    0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,\n                    0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,\n                    0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,\n                    0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,\n                    0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,\n                    0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,\n                    0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,\n                    0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,\n                    0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,\n                    0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,\n                    0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,\n                    0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,\n                    0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,\n                    0xf9,0xfa\n                ];\n    \n            var std_dc_chrominance_nrcodes = [0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0];\n            var std_dc_chrominance_values = [0,1,2,3,4,5,6,7,8,9,10,11];\n            var std_ac_chrominance_nrcodes = [0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77];\n            var std_ac_chrominance_values = [\n                    0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,\n                    0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,\n                    0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,\n                    0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,\n                    0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,\n                    0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,\n                    0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,\n                    0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,\n                    0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,\n                    0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,\n                    0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,\n                    0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,\n                    0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,\n                    0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,\n                    0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,\n                    0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,\n                    0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,\n                    0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,\n                    0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,\n                    0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,\n                    0xf9,0xfa\n                ];\n    \n            function initQuantTables(sf){\n                    var YQT = [\n                        16, 11, 10, 16, 24, 40, 51, 61,\n                        12, 12, 14, 19, 26, 58, 60, 55,\n                        14, 13, 16, 24, 40, 57, 69, 56,\n                        14, 17, 22, 29, 51, 87, 80, 62,\n                        18, 22, 37, 56, 68,109,103, 77,\n                        24, 35, 55, 64, 81,104,113, 92,\n                        49, 64, 78, 87,103,121,120,101,\n                        72, 92, 95, 98,112,100,103, 99\n                    ];\n    \n                    for (var i = 0; i < 64; i++) {\n                        var t = ffloor((YQT[i]*sf+50)/100);\n                        if (t < 1) {\n                            t = 1;\n                        } else if (t > 255) {\n                            t = 255;\n                        }\n                        YTable[ZigZag[i]] = t;\n                    }\n                    var UVQT = [\n                        17, 18, 24, 47, 99, 99, 99, 99,\n                        18, 21, 26, 66, 99, 99, 99, 99,\n                        24, 26, 56, 99, 99, 99, 99, 99,\n                        47, 66, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99\n                    ];\n                    for (var j = 0; j < 64; j++) {\n                        var u = ffloor((UVQT[j]*sf+50)/100);\n                        if (u < 1) {\n                            u = 1;\n                        } else if (u > 255) {\n                            u = 255;\n                        }\n                        UVTable[ZigZag[j]] = u;\n                    }\n                    var aasf = [\n                        1.0, 1.387039845, 1.306562965, 1.175875602,\n                        1.0, 0.785694958, 0.541196100, 0.275899379\n                    ];\n                    var k = 0;\n                    for (var row = 0; row < 8; row++)\n                    {\n                        for (var col = 0; col < 8; col++)\n                        {\n                            fdtbl_Y[k]  = (1.0 / (YTable [ZigZag[k]] * aasf[row] * aasf[col] * 8.0));\n                            fdtbl_UV[k] = (1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0));\n                            k++;\n                        }\n                    }\n                }\n    \n                function computeHuffmanTbl(nrcodes, std_table){\n                    var codevalue = 0;\n                    var pos_in_table = 0;\n                    var HT = new Array();\n                    for (var k = 1; k <= 16; k++) {\n                        for (var j = 1; j <= nrcodes[k]; j++) {\n                            HT[std_table[pos_in_table]] = [];\n                            HT[std_table[pos_in_table]][0] = codevalue;\n                            HT[std_table[pos_in_table]][1] = k;\n                            pos_in_table++;\n                            codevalue++;\n                        }\n                        codevalue*=2;\n                    }\n                    return HT;\n                }\n    \n                function initHuffmanTbl()\n                {\n                    YDC_HT = computeHuffmanTbl(std_dc_luminance_nrcodes,std_dc_luminance_values);\n                    UVDC_HT = computeHuffmanTbl(std_dc_chrominance_nrcodes,std_dc_chrominance_values);\n                    YAC_HT = computeHuffmanTbl(std_ac_luminance_nrcodes,std_ac_luminance_values);\n                    UVAC_HT = computeHuffmanTbl(std_ac_chrominance_nrcodes,std_ac_chrominance_values);\n                }\n    \n                function initCategoryNumber()\n                {\n                    var nrlower = 1;\n                    var nrupper = 2;\n                    for (var cat = 1; cat <= 15; cat++) {\n                        //Positive numbers\n                        for (var nr = nrlower; nr<nrupper; nr++) {\n                            category[32767+nr] = cat;\n                            bitcode[32767+nr] = [];\n                            bitcode[32767+nr][1] = cat;\n                            bitcode[32767+nr][0] = nr;\n                        }\n                        //Negative numbers\n                        for (var nrneg =-(nrupper-1); nrneg<=-nrlower; nrneg++) {\n                            category[32767+nrneg] = cat;\n                            bitcode[32767+nrneg] = [];\n                            bitcode[32767+nrneg][1] = cat;\n                            bitcode[32767+nrneg][0] = nrupper-1+nrneg;\n                        }\n                        nrlower <<= 1;\n                        nrupper <<= 1;\n                    }\n                }\n    \n                function initRGBYUVTable() {\n                    for(var i = 0; i < 256;i++) {\n                        RGB_YUV_TABLE[i]            =  19595 * i;\n                        RGB_YUV_TABLE[(i+ 256)>>0]  =  38470 * i;\n                        RGB_YUV_TABLE[(i+ 512)>>0]  =   7471 * i + 0x8000;\n                        RGB_YUV_TABLE[(i+ 768)>>0]  = -11059 * i;\n                        RGB_YUV_TABLE[(i+1024)>>0]  = -21709 * i;\n                        RGB_YUV_TABLE[(i+1280)>>0]  =  32768 * i + 0x807FFF;\n                        RGB_YUV_TABLE[(i+1536)>>0]  = -27439 * i;\n                        RGB_YUV_TABLE[(i+1792)>>0]  = - 5329 * i;\n                    }\n                }\n    \n                // IO functions\n                function writeBits(bs)\n                {\n                    var value = bs[0];\n                    var posval = bs[1]-1;\n                    while ( posval >= 0 ) {\n                        if (value & (1 << posval) ) {\n                            bytenew |= (1 << bytepos);\n                        }\n                        posval--;\n                        bytepos--;\n                        if (bytepos < 0) {\n                            if (bytenew == 0xFF) {\n                                writeByte(0xFF);\n                                writeByte(0);\n                            }\n                            else {\n                                writeByte(bytenew);\n                            }\n                            bytepos=7;\n                            bytenew=0;\n                        }\n                    }\n                }\n    \n                function writeByte(value)\n                {\n                    byteout.push(clt[value]); // write char directly instead of converting later\n                }\n    \n                function writeWord(value)\n                {\n                    writeByte((value>>8)&0xFF);\n                    writeByte((value   )&0xFF);\n                }\n    \n                // DCT & quantization core\n                function fDCTQuant(data, fdtbl)\n                {\n                    var d0, d1, d2, d3, d4, d5, d6, d7;\n                    /* Pass 1: process rows. */\n                    var dataOff=0;\n                    var i;\n                    var I8 = 8;\n                    var I64 = 64;\n                    for (i=0; i<I8; ++i)\n                    {\n                        d0 = data[dataOff];\n                        d1 = data[dataOff+1];\n                        d2 = data[dataOff+2];\n                        d3 = data[dataOff+3];\n                        d4 = data[dataOff+4];\n                        d5 = data[dataOff+5];\n                        d6 = data[dataOff+6];\n                        d7 = data[dataOff+7];\n    \n                        var tmp0 = d0 + d7;\n                        var tmp7 = d0 - d7;\n                        var tmp1 = d1 + d6;\n                        var tmp6 = d1 - d6;\n                        var tmp2 = d2 + d5;\n                        var tmp5 = d2 - d5;\n                        var tmp3 = d3 + d4;\n                        var tmp4 = d3 - d4;\n    \n                        /* Even part */\n                        var tmp10 = tmp0 + tmp3;    /* phase 2 */\n                        var tmp13 = tmp0 - tmp3;\n                        var tmp11 = tmp1 + tmp2;\n                        var tmp12 = tmp1 - tmp2;\n    \n                        data[dataOff] = tmp10 + tmp11; /* phase 3 */\n                        data[dataOff+4] = tmp10 - tmp11;\n    \n                        var z1 = (tmp12 + tmp13) * 0.707106781; /* c4 */\n                        data[dataOff+2] = tmp13 + z1; /* phase 5 */\n                        data[dataOff+6] = tmp13 - z1;\n    \n                        /* Odd part */\n                        tmp10 = tmp4 + tmp5; /* phase 2 */\n                        tmp11 = tmp5 + tmp6;\n                        tmp12 = tmp6 + tmp7;\n    \n                        /* The rotator is modified from fig 4-8 to avoid extra negations. */\n                        var z5 = (tmp10 - tmp12) * 0.382683433; /* c6 */\n                        var z2 = 0.541196100 * tmp10 + z5; /* c2-c6 */\n                        var z4 = 1.306562965 * tmp12 + z5; /* c2+c6 */\n                        var z3 = tmp11 * 0.707106781; /* c4 */\n    \n                        var z11 = tmp7 + z3;    /* phase 5 */\n                        var z13 = tmp7 - z3;\n    \n                        data[dataOff+5] = z13 + z2; /* phase 6 */\n                        data[dataOff+3] = z13 - z2;\n                        data[dataOff+1] = z11 + z4;\n                        data[dataOff+7] = z11 - z4;\n    \n                        dataOff += 8; /* advance pointer to next row */\n                    }\n    \n                    /* Pass 2: process columns. */\n                    dataOff = 0;\n                    for (i=0; i<I8; ++i)\n                    {\n                        d0 = data[dataOff];\n                        d1 = data[dataOff + 8];\n                        d2 = data[dataOff + 16];\n                        d3 = data[dataOff + 24];\n                        d4 = data[dataOff + 32];\n                        d5 = data[dataOff + 40];\n                        d6 = data[dataOff + 48];\n                        d7 = data[dataOff + 56];\n    \n                        var tmp0p2 = d0 + d7;\n                        var tmp7p2 = d0 - d7;\n                        var tmp1p2 = d1 + d6;\n                        var tmp6p2 = d1 - d6;\n                        var tmp2p2 = d2 + d5;\n                        var tmp5p2 = d2 - d5;\n                        var tmp3p2 = d3 + d4;\n                        var tmp4p2 = d3 - d4;\n    \n                        /* Even part */\n                        var tmp10p2 = tmp0p2 + tmp3p2;  /* phase 2 */\n                        var tmp13p2 = tmp0p2 - tmp3p2;\n                        var tmp11p2 = tmp1p2 + tmp2p2;\n                        var tmp12p2 = tmp1p2 - tmp2p2;\n    \n                        data[dataOff] = tmp10p2 + tmp11p2; /* phase 3 */\n                        data[dataOff+32] = tmp10p2 - tmp11p2;\n    \n                        var z1p2 = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */\n                        data[dataOff+16] = tmp13p2 + z1p2; /* phase 5 */\n                        data[dataOff+48] = tmp13p2 - z1p2;\n    \n                        /* Odd part */\n                        tmp10p2 = tmp4p2 + tmp5p2; /* phase 2 */\n                        tmp11p2 = tmp5p2 + tmp6p2;\n                        tmp12p2 = tmp6p2 + tmp7p2;\n    \n                        /* The rotator is modified from fig 4-8 to avoid extra negations. */\n                        var z5p2 = (tmp10p2 - tmp12p2) * 0.382683433; /* c6 */\n                        var z2p2 = 0.541196100 * tmp10p2 + z5p2; /* c2-c6 */\n                        var z4p2 = 1.306562965 * tmp12p2 + z5p2; /* c2+c6 */\n                        var z3p2 = tmp11p2 * 0.707106781; /* c4 */\n    \n                        var z11p2 = tmp7p2 + z3p2;  /* phase 5 */\n                        var z13p2 = tmp7p2 - z3p2;\n    \n                        data[dataOff+40] = z13p2 + z2p2; /* phase 6 */\n                        data[dataOff+24] = z13p2 - z2p2;\n                        data[dataOff+ 8] = z11p2 + z4p2;\n                        data[dataOff+56] = z11p2 - z4p2;\n    \n                        dataOff++; /* advance pointer to next column */\n                    }\n    \n                    // Quantize/descale the coefficients\n                    var fDCTQuant;\n                    for (i=0; i<I64; ++i)\n                    {\n                        // Apply the quantization and scaling factor & Round to nearest integer\n                        fDCTQuant = data[i]*fdtbl[i];\n                        outputfDCTQuant[i] = (fDCTQuant > 0.0) ? ((fDCTQuant + 0.5)|0) : ((fDCTQuant - 0.5)|0);\n                        //outputfDCTQuant[i] = fround(fDCTQuant);\n    \n                    }\n                    return outputfDCTQuant;\n                }\n    \n                function writeAPP0()\n                {\n                    writeWord(0xFFE0); // marker\n                    writeWord(16); // length\n                    writeByte(0x4A); // J\n                    writeByte(0x46); // F\n                    writeByte(0x49); // I\n                    writeByte(0x46); // F\n                    writeByte(0); // = \"JFIF\",'\\0'\n                    writeByte(1); // versionhi\n                    writeByte(1); // versionlo\n                    writeByte(0); // xyunits\n                    writeWord(1); // xdensity\n                    writeWord(1); // ydensity\n                    writeByte(0); // thumbnwidth\n                    writeByte(0); // thumbnheight\n                }\n    \n                function writeSOF0(width, height)\n                {\n                    writeWord(0xFFC0); // marker\n                    writeWord(17);   // length, truecolor YUV JPG\n                    writeByte(8);    // precision\n                    writeWord(height);\n                    writeWord(width);\n                    writeByte(3);    // nrofcomponents\n                    writeByte(1);    // IdY\n                    writeByte(0x11); // HVY\n                    writeByte(0);    // QTY\n                    writeByte(2);    // IdU\n                    writeByte(0x11); // HVU\n                    writeByte(1);    // QTU\n                    writeByte(3);    // IdV\n                    writeByte(0x11); // HVV\n                    writeByte(1);    // QTV\n                }\n    \n                function writeDQT()\n                {\n                    writeWord(0xFFDB); // marker\n                    writeWord(132);    // length\n                    writeByte(0);\n                    for (var i=0; i<64; i++) {\n                        writeByte(YTable[i]);\n                    }\n                    writeByte(1);\n                    for (var j=0; j<64; j++) {\n                        writeByte(UVTable[j]);\n                    }\n                }\n    \n                function writeDHT()\n                {\n                    writeWord(0xFFC4); // marker\n                    writeWord(0x01A2); // length\n    \n                    writeByte(0); // HTYDCinfo\n                    for (var i=0; i<16; i++) {\n                        writeByte(std_dc_luminance_nrcodes[i+1]);\n                    }\n                    for (var j=0; j<=11; j++) {\n                        writeByte(std_dc_luminance_values[j]);\n                    }\n    \n                    writeByte(0x10); // HTYACinfo\n                    for (var k=0; k<16; k++) {\n                        writeByte(std_ac_luminance_nrcodes[k+1]);\n                    }\n                    for (var l=0; l<=161; l++) {\n                        writeByte(std_ac_luminance_values[l]);\n                    }\n    \n                    writeByte(1); // HTUDCinfo\n                    for (var m=0; m<16; m++) {\n                        writeByte(std_dc_chrominance_nrcodes[m+1]);\n                    }\n                    for (var n=0; n<=11; n++) {\n                        writeByte(std_dc_chrominance_values[n]);\n                    }\n    \n                    writeByte(0x11); // HTUACinfo\n                    for (var o=0; o<16; o++) {\n                        writeByte(std_ac_chrominance_nrcodes[o+1]);\n                    }\n                    for (var p=0; p<=161; p++) {\n                        writeByte(std_ac_chrominance_values[p]);\n                    }\n                }\n    \n                function writeSOS()\n                {\n                    writeWord(0xFFDA); // marker\n                    writeWord(12); // length\n                    writeByte(3); // nrofcomponents\n                    writeByte(1); // IdY\n                    writeByte(0); // HTY\n                    writeByte(2); // IdU\n                    writeByte(0x11); // HTU\n                    writeByte(3); // IdV\n                    writeByte(0x11); // HTV\n                    writeByte(0); // Ss\n                    writeByte(0x3f); // Se\n                    writeByte(0); // Bf\n                }\n    \n                function processDU(CDU, fdtbl, DC, HTDC, HTAC){\n                    var EOB = HTAC[0x00];\n                    var M16zeroes = HTAC[0xF0];\n                    var pos;\n                    var I16 = 16;\n                    var I63 = 63;\n                    var I64 = 64;\n                    var DU_DCT = fDCTQuant(CDU, fdtbl);\n                    //ZigZag reorder\n                    for (var j=0;j<I64;++j) {\n                        DU[ZigZag[j]]=DU_DCT[j];\n                    }\n                    var Diff = DU[0] - DC; DC = DU[0];\n                    //Encode DC\n                    if (Diff==0) {\n                        writeBits(HTDC[0]); // Diff might be 0\n                    } else {\n                        pos = 32767+Diff;\n                        writeBits(HTDC[category[pos]]);\n                        writeBits(bitcode[pos]);\n                    }\n                    //Encode ACs\n                    var end0pos = 63; // was const... which is crazy\n                    for (; (end0pos>0)&&(DU[end0pos]==0); end0pos--) {};\n                    //end0pos = first element in reverse order !=0\n                    if ( end0pos == 0) {\n                        writeBits(EOB);\n                        return DC;\n                    }\n                    var i = 1;\n                    var lng;\n                    while ( i <= end0pos ) {\n                        var startpos = i;\n                        for (; (DU[i]==0) && (i<=end0pos); ++i) {}\n                        var nrzeroes = i-startpos;\n                        if ( nrzeroes >= I16 ) {\n                            lng = nrzeroes>>4;\n                            for (var nrmarker=1; nrmarker <= lng; ++nrmarker)\n                                writeBits(M16zeroes);\n                            nrzeroes = nrzeroes&0xF;\n                        }\n                        pos = 32767+DU[i];\n                        writeBits(HTAC[(nrzeroes<<4)+category[pos]]);\n                        writeBits(bitcode[pos]);\n                        i++;\n                    }\n                    if ( end0pos != I63 ) {\n                        writeBits(EOB);\n                    }\n                    return DC;\n                }\n    \n                function initCharLookupTable(){\n                    var sfcc = String.fromCharCode;\n                    for(var i=0; i < 256; i++){ ///// ACHTUNG // 255\n                        clt[i] = sfcc(i);\n                    }\n                }\n    \n                this.encode = function(image,quality) // image data object\n                {\n                    // var time_start = new Date().getTime();\n    \n                    if(quality) setQuality(quality);\n    \n                    // Initialize bit writer\n                    byteout = new Array();\n                    bytenew=0;\n                    bytepos=7;\n    \n                    // Add JPEG headers\n                    writeWord(0xFFD8); // SOI\n                    writeAPP0();\n                    writeDQT();\n                    writeSOF0(image.width,image.height);\n                    writeDHT();\n                    writeSOS();\n    \n    \n                    // Encode 8x8 macroblocks\n                    var DCY=0;\n                    var DCU=0;\n                    var DCV=0;\n    \n                    bytenew=0;\n                    bytepos=7;\n    \n    \n                    this.encode.displayName = \"_encode_\";\n    \n                    var imageData = image.data;\n                    var width = image.width;\n                    var height = image.height;\n    \n                    var quadWidth = width*4;\n                    var tripleWidth = width*3;\n    \n                    var x, y = 0;\n                    var r, g, b;\n                    var start,p, col,row,pos;\n                    while(y < height){\n                        x = 0;\n                        while(x < quadWidth){\n                        start = quadWidth * y + x;\n                        p = start;\n                        col = -1;\n                        row = 0;\n    \n                        for(pos=0; pos < 64; pos++){\n                            row = pos >> 3;// /8\n                            col = ( pos & 7 ) * 4; // %8\n                            p = start + ( row * quadWidth ) + col;\n    \n                            if(y+row >= height){ // padding bottom\n                                p-= (quadWidth*(y+1+row-height));\n                            }\n    \n                            if(x+col >= quadWidth){ // padding right\n                                p-= ((x+col) - quadWidth +4)\n                            }\n    \n                            r = imageData[ p++ ];\n                            g = imageData[ p++ ];\n                            b = imageData[ p++ ];\n    \n    \n                            /* // calculate YUV values dynamically\n                            YDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80\n                            UDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b));\n                            VDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b));\n                            */\n    \n                            // use lookup table (slightly faster)\n                            YDU[pos] = ((RGB_YUV_TABLE[r]             + RGB_YUV_TABLE[(g +  256)>>0] + RGB_YUV_TABLE[(b +  512)>>0]) >> 16)-128;\n                            UDU[pos] = ((RGB_YUV_TABLE[(r +  768)>>0] + RGB_YUV_TABLE[(g + 1024)>>0] + RGB_YUV_TABLE[(b + 1280)>>0]) >> 16)-128;\n                            VDU[pos] = ((RGB_YUV_TABLE[(r + 1280)>>0] + RGB_YUV_TABLE[(g + 1536)>>0] + RGB_YUV_TABLE[(b + 1792)>>0]) >> 16)-128;\n    \n                        }\n    \n                        DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n                        DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n                        DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n                        x+=32;\n                        }\n                        y+=8;\n                    }\n    \n    \n                    ////////////////////////////////////////////////////////////////\n    \n                    // Do the bit alignment of the EOI marker\n                    if ( bytepos >= 0 ) {\n                        var fillbits = [];\n                        fillbits[1] = bytepos+1;\n                        fillbits[0] = (1<<(bytepos+1))-1;\n                        writeBits(fillbits);\n                    }\n    \n                    writeWord(0xFFD9); //EOI\n    \n                    var jpegDataUri = 'data:image/jpeg;base64,' + btoa(byteout.join(''));\n    \n                    byteout = [];\n    \n                    // benchmarking\n                    // var duration = new Date().getTime() - time_start;\n                    // console.log('Encoding time: '+ currentQuality + 'ms');\n                    //\n    \n                    return jpegDataUri\n            }\n    \n            function setQuality(quality){\n                if (quality <= 0) {\n                    quality = 1;\n                }\n                if (quality > 100) {\n                    quality = 100;\n                }\n    \n                if(currentQuality == quality) return // don't recalc if unchanged\n    \n                var sf = 0;\n                if (quality < 50) {\n                    sf = Math.floor(5000 / quality);\n                } else {\n                    sf = Math.floor(200 - quality*2);\n                }\n    \n                initQuantTables(sf);\n                currentQuality = quality;\n                // console.log('Quality set to: '+quality +'%');\n            }\n    \n            function init(){\n                // var time_start = new Date().getTime();\n                if(!quality) quality = 50;\n                // Create tables\n                initCharLookupTable()\n                initHuffmanTbl();\n                initCategoryNumber();\n                initRGBYUVTable();\n    \n                setQuality(quality);\n                // var duration = new Date().getTime() - time_start;\n                // console.log('Initialization '+ duration + 'ms');\n            }\n    \n            init();\n    \n        };\n    \n        JPEGEncoder.encode = function( data, quality ) {\n            var encoder = new JPEGEncoder( quality );\n    \n            return encoder.encode( data );\n        }\n    \n        return JPEGEncoder;\n    });\n    /**\n     * @fileOverview Fix android canvas.toDataUrl bug.\n     */\n    define('runtime/html5/androidpatch',[\n        'runtime/html5/util',\n        'runtime/html5/jpegencoder',\n        'base'\n    ], function( Util, encoder, Base ) {\n        var origin = Util.canvasToDataUrl,\n            supportJpeg;\n    \n        Util.canvasToDataUrl = function( canvas, type, quality ) {\n            var ctx, w, h, fragement, parts;\n    \n            // 非android手机直接跳过。\n            if ( !Base.os.android ) {\n                return origin.apply( null, arguments );\n            }\n    \n            // 检测是否canvas支持jpeg导出，根据数据格式来判断。\n            // JPEG 前两位分别是：255, 216\n            if ( type === 'image/jpeg' && typeof supportJpeg === 'undefined' ) {\n                fragement = origin.apply( null, arguments );\n    \n                parts = fragement.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    fragement = atob( parts[ 1 ] );\n                } else {\n                    fragement = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                fragement = fragement.substring( 0, 2 );\n    \n                supportJpeg = fragement.charCodeAt( 0 ) === 255 &&\n                        fragement.charCodeAt( 1 ) === 216;\n            }\n    \n            // 只有在android环境下才修复\n            if ( type === 'image/jpeg' && !supportJpeg ) {\n                w = canvas.width;\n                h = canvas.height;\n                ctx = canvas.getContext('2d');\n    \n                return encoder.encode( ctx.getImageData( 0, 0, w, h ), quality );\n            }\n    \n            return origin.apply( null, arguments );\n        };\n    });\n    /**\n     * @fileOverview Transport\n     * @todo 支持chunked传输，优势：\n     * 可以将大文件分成小块，挨个传输，可以提高大文件成功率，当失败的时候，也只需要重传那小部分，\n     * 而不需要重头再传一次。另外断点续传也需要用chunked方式。\n     */\n    define('runtime/html5/transport',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var noop = Base.noop,\n            $ = Base.$;\n    \n        return Html5Runtime.register( 'Transport', {\n            init: function() {\n                this._status = 0;\n                this._response = null;\n            },\n    \n            send: function() {\n                var owner = this.owner,\n                    opts = this.options,\n                    xhr = this._initAjax(),\n                    blob = owner._blob,\n                    server = opts.server,\n                    formData, binary, fr;\n    \n                if ( opts.sendAsBinary ) {\n                    server += (/\\?/.test( server ) ? '&' : '?') +\n                            $.param( owner._formData );\n    \n                    binary = blob.getSource();\n                } else {\n                    formData = new FormData();\n                    $.each( owner._formData, function( k, v ) {\n                        formData.append( k, v );\n                    });\n    \n                    formData.append( opts.fileVal, blob.getSource(),\n                            opts.filename || owner._formData.name || '' );\n                }\n    \n                if ( opts.withCredentials && 'withCredentials' in xhr ) {\n                    xhr.open( opts.method, server, true );\n                    xhr.withCredentials = true;\n                } else {\n                    xhr.open( opts.method, server );\n                }\n    \n                this._setRequestHeader( xhr, opts.headers );\n    \n                if ( binary ) {\n                    // 强制设置成 content-type 为文件流。\n                    xhr.overrideMimeType &&\n                            xhr.overrideMimeType('application/octet-stream');\n    \n                    // android直接发送blob会导致服务端接收到的是空文件。\n                    // bug详情。\n                    // https://code.google.com/p/android/issues/detail?id=39882\n                    // 所以先用fileReader读取出来再通过arraybuffer的方式发送。\n                    if ( Base.os.android ) {\n                        fr = new FileReader();\n    \n                        fr.onload = function() {\n                            xhr.send( this.result );\n                            fr = fr.onload = null;\n                        };\n    \n                        fr.readAsArrayBuffer( binary );\n                    } else {\n                        xhr.send( binary );\n                    }\n                } else {\n                    xhr.send( formData );\n                }\n            },\n    \n            getResponse: function() {\n                return this._response;\n            },\n    \n            getResponseAsJson: function() {\n                return this._parseJson( this._response );\n            },\n    \n            getStatus: function() {\n                return this._status;\n            },\n    \n            abort: function() {\n                var xhr = this._xhr;\n    \n                if ( xhr ) {\n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    xhr.abort();\n    \n                    this._xhr = xhr = null;\n                }\n            },\n    \n            destroy: function() {\n                this.abort();\n            },\n    \n            _initAjax: function() {\n                var me = this,\n                    xhr = new XMLHttpRequest(),\n                    opts = this.options;\n    \n                if ( opts.withCredentials && !('withCredentials' in xhr) &&\n                        typeof XDomainRequest !== 'undefined' ) {\n                    xhr = new XDomainRequest();\n                }\n    \n                xhr.upload.onprogress = function( e ) {\n                    var percentage = 0;\n    \n                    if ( e.lengthComputable ) {\n                        percentage = e.loaded / e.total;\n                    }\n    \n                    return me.trigger( 'progress', percentage );\n                };\n    \n                xhr.onreadystatechange = function() {\n    \n                    if ( xhr.readyState !== 4 ) {\n                        return;\n                    }\n    \n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    me._xhr = null;\n                    me._status = xhr.status;\n    \n                    if ( xhr.status >= 200 && xhr.status < 300 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger('load');\n                    } else if ( xhr.status >= 500 && xhr.status < 600 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger( 'error', 'server' );\n                    }\n    \n    \n                    return me.trigger( 'error', me._status ? 'http' : 'abort' );\n                };\n    \n                me._xhr = xhr;\n                return xhr;\n            },\n    \n            _setRequestHeader: function( xhr, headers ) {\n                $.each( headers, function( key, val ) {\n                    xhr.setRequestHeader( key, val );\n                });\n            },\n    \n            _parseJson: function( str ) {\n                var json;\n    \n                try {\n                    json = JSON.parse( str );\n                } catch ( ex ) {\n                    json = {};\n                }\n    \n                return json;\n            }\n        });\n    });\n    define('webuploader',[\n        'base',\n        'widgets/filepicker',\n        'widgets/image',\n        'widgets/queue',\n        'widgets/runtime',\n        'widgets/upload',\n        'widgets/log',\n        'runtime/html5/blob',\n        'runtime/html5/filepicker',\n        'runtime/html5/imagemeta/exif',\n        'runtime/html5/image',\n        'runtime/html5/androidpatch',\n        'runtime/html5/transport'\n    ], function( Base ) {\n        return Base;\n    });\n    return require('webuploader');\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/webuploader/webuploader.fis.js",
    "content": "/*! WebUploader 0.1.5 */\n\n\nvar jQuery = require('example:widget/ui/jquery/jquery.js')\n\nreturn (function( root, factory ) {\n    var modules = {},\n\n        // 内部require, 简单不完全实现。\n        // https://github.com/amdjs/amdjs-api/wiki/require\n        _require = function( deps, callback ) {\n            var args, len, i;\n\n            // 如果deps不是数组，则直接返回指定module\n            if ( typeof deps === 'string' ) {\n                return getModule( deps );\n            } else {\n                args = [];\n                for( len = deps.length, i = 0; i < len; i++ ) {\n                    args.push( getModule( deps[ i ] ) );\n                }\n\n                return callback.apply( null, args );\n            }\n        },\n\n        // 内部define，暂时不支持不指定id.\n        _define = function( id, deps, factory ) {\n            if ( arguments.length === 2 ) {\n                factory = deps;\n                deps = null;\n            }\n\n            _require( deps || [], function() {\n                setModule( id, factory, arguments );\n            });\n        },\n\n        // 设置module, 兼容CommonJs写法。\n        setModule = function( id, factory, args ) {\n            var module = {\n                    exports: factory\n                },\n                returned;\n\n            if ( typeof factory === 'function' ) {\n                args.length || (args = [ _require, module.exports, module ]);\n                returned = factory.apply( null, args );\n                returned !== undefined && (module.exports = returned);\n            }\n\n            modules[ id ] = module.exports;\n        },\n\n        // 根据id获取module\n        getModule = function( id ) {\n            var module = modules[ id ] || root[ id ];\n\n            if ( !module ) {\n                throw new Error( '`' + id + '` is undefined' );\n            }\n\n            return module;\n        },\n\n        // 将所有modules，将路径ids装换成对象。\n        exportsTo = function( obj ) {\n            var key, host, parts, part, last, ucFirst;\n\n            // make the first character upper case.\n            ucFirst = function( str ) {\n                return str && (str.charAt( 0 ).toUpperCase() + str.substr( 1 ));\n            };\n\n            for ( key in modules ) {\n                host = obj;\n\n                if ( !modules.hasOwnProperty( key ) ) {\n                    continue;\n                }\n\n                parts = key.split('/');\n                last = ucFirst( parts.pop() );\n\n                while( (part = ucFirst( parts.shift() )) ) {\n                    host[ part ] = host[ part ] || {};\n                    host = host[ part ];\n                }\n\n                host[ last ] = modules[ key ];\n            }\n\n            return obj;\n        },\n\n        makeExport = function( dollar ) {\n            root.__dollar = dollar;\n\n            // exports every module.\n            return exportsTo( factory( root, _define, _require ) );\n        };\n\n    return makeExport( jQuery );\n})( window, function( window, define, require ) {\n\n\n    /**\n     * @fileOverview jQuery or Zepto\n     */\n    define('dollar-third',[],function() {\n        var $ = window.__dollar || window.jQuery || window.Zepto;\n    \n        if ( !$ ) {\n            throw new Error('jQuery or Zepto not found!');\n        }\n    \n        return $;\n    });\n    /**\n     * @fileOverview Dom 操作相关\n     */\n    define('dollar',[\n        'dollar-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 使用jQuery的Promise\n     */\n    define('promise-third',[\n        'dollar'\n    ], function( $ ) {\n        return {\n            Deferred: $.Deferred,\n            when: $.when,\n    \n            isPromise: function( anything ) {\n                return anything && typeof anything.then === 'function';\n            }\n        };\n    });\n    /**\n     * @fileOverview Promise/A+\n     */\n    define('promise',[\n        'promise-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 基础类方法。\n     */\n    \n    /**\n     * Web Uploader内部类的详细说明，以下提及的功能类，都可以在`WebUploader`这个变量中访问到。\n     *\n     * As you know, Web Uploader的每个文件都是用过[AMD](https://github.com/amdjs/amdjs-api/wiki/AMD)规范中的`define`组织起来的, 每个Module都会有个module id.\n     * 默认module id为该文件的路径，而此路径将会转化成名字空间存放在WebUploader中。如：\n     *\n     * * module `base`：WebUploader.Base\n     * * module `file`: WebUploader.File\n     * * module `lib/dnd`: WebUploader.Lib.Dnd\n     * * module `runtime/html5/dnd`: WebUploader.Runtime.Html5.Dnd\n     *\n     *\n     * 以下文档中对类的使用可能省略掉了`WebUploader`前缀。\n     * @module WebUploader\n     * @title WebUploader API文档\n     */\n    define('base',[\n        'dollar',\n        'promise'\n    ], function( $, promise ) {\n    \n        var noop = function() {},\n            call = Function.call;\n    \n        // http://jsperf.com/uncurrythis\n        // 反科里化\n        function uncurryThis( fn ) {\n            return function() {\n                return call.apply( fn, arguments );\n            };\n        }\n    \n        function bindFn( fn, context ) {\n            return function() {\n                return fn.apply( context, arguments );\n            };\n        }\n    \n        function createObject( proto ) {\n            var f;\n    \n            if ( Object.create ) {\n                return Object.create( proto );\n            } else {\n                f = function() {};\n                f.prototype = proto;\n                return new f();\n            }\n        }\n    \n    \n        /**\n         * 基础类，提供一些简单常用的方法。\n         * @class Base\n         */\n        return {\n    \n            /**\n             * @property {String} version 当前版本号。\n             */\n            version: '0.1.5',\n    \n            /**\n             * @property {jQuery|Zepto} $ 引用依赖的jQuery或者Zepto对象。\n             */\n            $: $,\n    \n            Deferred: promise.Deferred,\n    \n            isPromise: promise.isPromise,\n    \n            when: promise.when,\n    \n            /**\n             * @description  简单的浏览器检查结果。\n             *\n             * * `webkit`  webkit版本号，如果浏览器为非webkit内核，此属性为`undefined`。\n             * * `chrome`  chrome浏览器版本号，如果浏览器为chrome，此属性为`undefined`。\n             * * `ie`  ie浏览器版本号，如果浏览器为非ie，此属性为`undefined`。**暂不支持ie10+**\n             * * `firefox`  firefox浏览器版本号，如果浏览器为非firefox，此属性为`undefined`。\n             * * `safari`  safari浏览器版本号，如果浏览器为非safari，此属性为`undefined`。\n             * * `opera`  opera浏览器版本号，如果浏览器为非opera，此属性为`undefined`。\n             *\n             * @property {Object} [browser]\n             */\n            browser: (function( ua ) {\n                var ret = {},\n                    webkit = ua.match( /WebKit\\/([\\d.]+)/ ),\n                    chrome = ua.match( /Chrome\\/([\\d.]+)/ ) ||\n                        ua.match( /CriOS\\/([\\d.]+)/ ),\n    \n                    ie = ua.match( /MSIE\\s([\\d\\.]+)/ ) ||\n                        ua.match( /(?:trident)(?:.*rv:([\\w.]+))?/i ),\n                    firefox = ua.match( /Firefox\\/([\\d.]+)/ ),\n                    safari = ua.match( /Safari\\/([\\d.]+)/ ),\n                    opera = ua.match( /OPR\\/([\\d.]+)/ );\n    \n                webkit && (ret.webkit = parseFloat( webkit[ 1 ] ));\n                chrome && (ret.chrome = parseFloat( chrome[ 1 ] ));\n                ie && (ret.ie = parseFloat( ie[ 1 ] ));\n                firefox && (ret.firefox = parseFloat( firefox[ 1 ] ));\n                safari && (ret.safari = parseFloat( safari[ 1 ] ));\n                opera && (ret.opera = parseFloat( opera[ 1 ] ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * @description  操作系统检查结果。\n             *\n             * * `android`  如果在android浏览器环境下，此值为对应的android版本号，否则为`undefined`。\n             * * `ios` 如果在ios浏览器环境下，此值为对应的ios版本号，否则为`undefined`。\n             * @property {Object} [os]\n             */\n            os: (function( ua ) {\n                var ret = {},\n    \n                    // osx = !!ua.match( /\\(Macintosh\\; Intel / ),\n                    android = ua.match( /(?:Android);?[\\s\\/]+([\\d.]+)?/ ),\n                    ios = ua.match( /(?:iPad|iPod|iPhone).*OS\\s([\\d_]+)/ );\n    \n                // osx && (ret.osx = true);\n                android && (ret.android = parseFloat( android[ 1 ] ));\n                ios && (ret.ios = parseFloat( ios[ 1 ].replace( /_/g, '.' ) ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * 实现类与类之间的继承。\n             * @method inherits\n             * @grammar Base.inherits( super ) => child\n             * @grammar Base.inherits( super, protos ) => child\n             * @grammar Base.inherits( super, protos, statics ) => child\n             * @param  {Class} super 父类\n             * @param  {Object | Function} [protos] 子类或者对象。如果对象中包含constructor，子类将是用此属性值。\n             * @param  {Function} [protos.constructor] 子类构造器，不指定的话将创建个临时的直接执行父类构造器的方法。\n             * @param  {Object} [statics] 静态属性或方法。\n             * @return {Class} 返回子类。\n             * @example\n             * function Person() {\n             *     console.log( 'Super' );\n             * }\n             * Person.prototype.hello = function() {\n             *     console.log( 'hello' );\n             * };\n             *\n             * var Manager = Base.inherits( Person, {\n             *     world: function() {\n             *         console.log( 'World' );\n             *     }\n             * });\n             *\n             * // 因为没有指定构造器，父类的构造器将会执行。\n             * var instance = new Manager();    // => Super\n             *\n             * // 继承子父类的方法\n             * instance.hello();    // => hello\n             * instance.world();    // => World\n             *\n             * // 子类的__super__属性指向父类\n             * console.log( Manager.__super__ === Person );    // => true\n             */\n            inherits: function( Super, protos, staticProtos ) {\n                var child;\n    \n                if ( typeof protos === 'function' ) {\n                    child = protos;\n                    protos = null;\n                } else if ( protos && protos.hasOwnProperty('constructor') ) {\n                    child = protos.constructor;\n                } else {\n                    child = function() {\n                        return Super.apply( this, arguments );\n                    };\n                }\n    \n                // 复制静态方法\n                $.extend( true, child, Super, staticProtos || {} );\n    \n                /* jshint camelcase: false */\n    \n                // 让子类的__super__属性指向父类。\n                child.__super__ = Super.prototype;\n    \n                // 构建原型，添加原型方法或属性。\n                // 暂时用Object.create实现。\n                child.prototype = createObject( Super.prototype );\n                protos && $.extend( true, child.prototype, protos );\n    \n                return child;\n            },\n    \n            /**\n             * 一个不做任何事情的方法。可以用来赋值给默认的callback.\n             * @method noop\n             */\n            noop: noop,\n    \n            /**\n             * 返回一个新的方法，此方法将已指定的`context`来执行。\n             * @grammar Base.bindFn( fn, context ) => Function\n             * @method bindFn\n             * @example\n             * var doSomething = function() {\n             *         console.log( this.name );\n             *     },\n             *     obj = {\n             *         name: 'Object Name'\n             *     },\n             *     aliasFn = Base.bind( doSomething, obj );\n             *\n             *  aliasFn();    // => Object Name\n             *\n             */\n            bindFn: bindFn,\n    \n            /**\n             * 引用Console.log如果存在的话，否则引用一个[空函数noop](#WebUploader:Base.noop)。\n             * @grammar Base.log( args... ) => undefined\n             * @method log\n             */\n            log: (function() {\n                if ( window.console ) {\n                    return bindFn( console.log, console );\n                }\n                return noop;\n            })(),\n    \n            nextTick: (function() {\n    \n                return function( cb ) {\n                    setTimeout( cb, 1 );\n                };\n    \n                // @bug 当浏览器不在当前窗口时就停了。\n                // var next = window.requestAnimationFrame ||\n                //     window.webkitRequestAnimationFrame ||\n                //     window.mozRequestAnimationFrame ||\n                //     function( cb ) {\n                //         window.setTimeout( cb, 1000 / 60 );\n                //     };\n    \n                // // fix: Uncaught TypeError: Illegal invocation\n                // return bindFn( next, window );\n            })(),\n    \n            /**\n             * 被[uncurrythis](http://www.2ality.com/2011/11/uncurrying-this.html)的数组slice方法。\n             * 将用来将非数组对象转化成数组对象。\n             * @grammar Base.slice( target, start[, end] ) => Array\n             * @method slice\n             * @example\n             * function doSomthing() {\n             *     var args = Base.slice( arguments, 1 );\n             *     console.log( args );\n             * }\n             *\n             * doSomthing( 'ignored', 'arg2', 'arg3' );    // => Array [\"arg2\", \"arg3\"]\n             */\n            slice: uncurryThis( [].slice ),\n    \n            /**\n             * 生成唯一的ID\n             * @method guid\n             * @grammar Base.guid() => String\n             * @grammar Base.guid( prefx ) => String\n             */\n            guid: (function() {\n                var counter = 0;\n    \n                return function( prefix ) {\n                    var guid = (+new Date()).toString( 32 ),\n                        i = 0;\n    \n                    for ( ; i < 5; i++ ) {\n                        guid += Math.floor( Math.random() * 65535 ).toString( 32 );\n                    }\n    \n                    return (prefix || 'wu_') + guid + (counter++).toString( 32 );\n                };\n            })(),\n    \n            /**\n             * 格式化文件大小, 输出成带单位的字符串\n             * @method formatSize\n             * @grammar Base.formatSize( size ) => String\n             * @grammar Base.formatSize( size, pointLength ) => String\n             * @grammar Base.formatSize( size, pointLength, units ) => String\n             * @param {Number} size 文件大小\n             * @param {Number} [pointLength=2] 精确到的小数点数。\n             * @param {Array} [units=[ 'B', 'K', 'M', 'G', 'TB' ]] 单位数组。从字节，到千字节，一直往上指定。如果单位数组里面只指定了到了K(千字节)，同时文件大小大于M, 此方法的输出将还是显示成多少K.\n             * @example\n             * console.log( Base.formatSize( 100 ) );    // => 100B\n             * console.log( Base.formatSize( 1024 ) );    // => 1.00K\n             * console.log( Base.formatSize( 1024, 0 ) );    // => 1K\n             * console.log( Base.formatSize( 1024 * 1024 ) );    // => 1.00M\n             * console.log( Base.formatSize( 1024 * 1024 * 1024 ) );    // => 1.00G\n             * console.log( Base.formatSize( 1024 * 1024 * 1024, 0, ['B', 'KB', 'MB'] ) );    // => 1024MB\n             */\n            formatSize: function( size, pointLength, units ) {\n                var unit;\n    \n                units = units || [ 'B', 'K', 'M', 'G', 'TB' ];\n    \n                while ( (unit = units.shift()) && size > 1024 ) {\n                    size = size / 1024;\n                }\n    \n                return (unit === 'B' ? size : size.toFixed( pointLength || 2 )) +\n                        unit;\n            }\n        };\n    });\n    /**\n     * 事件处理类，可以独立使用，也可以扩展给对象使用。\n     * @fileOverview Mediator\n     */\n    define('mediator',[\n        'base'\n    ], function( Base ) {\n        var $ = Base.$,\n            slice = [].slice,\n            separator = /\\s+/,\n            protos;\n    \n        // 根据条件过滤出事件handlers.\n        function findHandlers( arr, name, callback, context ) {\n            return $.grep( arr, function( handler ) {\n                return handler &&\n                        (!name || handler.e === name) &&\n                        (!callback || handler.cb === callback ||\n                        handler.cb._cb === callback) &&\n                        (!context || handler.ctx === context);\n            });\n        }\n    \n        function eachEvent( events, callback, iterator ) {\n            // 不支持对象，只支持多个event用空格隔开\n            $.each( (events || '').split( separator ), function( _, key ) {\n                iterator( key, callback );\n            });\n        }\n    \n        function triggerHanders( events, args ) {\n            var stoped = false,\n                i = -1,\n                len = events.length,\n                handler;\n    \n            while ( ++i < len ) {\n                handler = events[ i ];\n    \n                if ( handler.cb.apply( handler.ctx2, args ) === false ) {\n                    stoped = true;\n                    break;\n                }\n            }\n    \n            return !stoped;\n        }\n    \n        protos = {\n    \n            /**\n             * 绑定事件。\n             *\n             * `callback`方法在执行时，arguments将会来源于trigger的时候携带的参数。如\n             * ```javascript\n             * var obj = {};\n             *\n             * // 使得obj有事件行为\n             * Mediator.installTo( obj );\n             *\n             * obj.on( 'testa', function( arg1, arg2 ) {\n             *     console.log( arg1, arg2 ); // => 'arg1', 'arg2'\n             * });\n             *\n             * obj.trigger( 'testa', 'arg1', 'arg2' );\n             * ```\n             *\n             * 如果`callback`中，某一个方法`return false`了，则后续的其他`callback`都不会被执行到。\n             * 切会影响到`trigger`方法的返回值，为`false`。\n             *\n             * `on`还可以用来添加一个特殊事件`all`, 这样所有的事件触发都会响应到。同时此类`callback`中的arguments有一个不同处，\n             * 就是第一个参数为`type`，记录当前是什么事件在触发。此类`callback`的优先级比脚低，会再正常`callback`执行完后触发。\n             * ```javascript\n             * obj.on( 'all', function( type, arg1, arg2 ) {\n             *     console.log( type, arg1, arg2 ); // => 'testa', 'arg1', 'arg2'\n             * });\n             * ```\n             *\n             * @method on\n             * @grammar on( name, callback[, context] ) => self\n             * @param  {String}   name     事件名，支持多个事件用空格隔开\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             * @class Mediator\n             */\n            on: function( name, callback, context ) {\n                var me = this,\n                    set;\n    \n                if ( !callback ) {\n                    return this;\n                }\n    \n                set = this._events || (this._events = []);\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var handler = { e: name };\n    \n                    handler.cb = callback;\n                    handler.ctx = context;\n                    handler.ctx2 = context || me;\n                    handler.id = set.length;\n    \n                    set.push( handler );\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 绑定事件，且当handler执行完后，自动解除绑定。\n             * @method once\n             * @grammar once( name, callback[, context] ) => self\n             * @param  {String}   name     事件名\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            once: function( name, callback, context ) {\n                var me = this;\n    \n                if ( !callback ) {\n                    return me;\n                }\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var once = function() {\n                            me.off( name, once );\n                            return callback.apply( context || me, arguments );\n                        };\n    \n                    once._cb = callback;\n                    me.on( name, once, context );\n                });\n    \n                return me;\n            },\n    \n            /**\n             * 解除事件绑定\n             * @method off\n             * @grammar off( [name[, callback[, context] ] ] ) => self\n             * @param  {String}   [name]     事件名\n             * @param  {Function} [callback] 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            off: function( name, cb, ctx ) {\n                var events = this._events;\n    \n                if ( !events ) {\n                    return this;\n                }\n    \n                if ( !name && !cb && !ctx ) {\n                    this._events = [];\n                    return this;\n                }\n    \n                eachEvent( name, cb, function( name, cb ) {\n                    $.each( findHandlers( events, name, cb, ctx ), function() {\n                        delete events[ this.id ];\n                    });\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 触发事件\n             * @method trigger\n             * @grammar trigger( name[, args...] ) => self\n             * @param  {String}   type     事件名\n             * @param  {*} [...] 任意参数\n             * @return {Boolean} 如果handler中return false了，则返回false, 否则返回true\n             */\n            trigger: function( type ) {\n                var args, events, allEvents;\n    \n                if ( !this._events || !type ) {\n                    return this;\n                }\n    \n                args = slice.call( arguments, 1 );\n                events = findHandlers( this._events, type );\n                allEvents = findHandlers( this._events, 'all' );\n    \n                return triggerHanders( events, args ) &&\n                        triggerHanders( allEvents, arguments );\n            }\n        };\n    \n        /**\n         * 中介者，它本身是个单例，但可以通过[installTo](#WebUploader:Mediator:installTo)方法，使任何对象具备事件行为。\n         * 主要目的是负责模块与模块之间的合作，降低耦合度。\n         *\n         * @class Mediator\n         */\n        return $.extend({\n    \n            /**\n             * 可以通过这个接口，使任何对象具备事件功能。\n             * @method installTo\n             * @param  {Object} obj 需要具备事件行为的对象。\n             * @return {Object} 返回obj.\n             */\n            installTo: function( obj ) {\n                return $.extend( obj, protos );\n            }\n    \n        }, protos );\n    });\n    /**\n     * @fileOverview Uploader上传类\n     */\n    define('uploader',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$;\n    \n        /**\n         * 上传入口类。\n         * @class Uploader\n         * @constructor\n         * @grammar new Uploader( opts ) => Uploader\n         * @example\n         * var uploader = WebUploader.Uploader({\n         *     swf: 'path_of_swf/Uploader.swf',\n         *\n         *     // 开起分片上传。\n         *     chunked: true\n         * });\n         */\n        function Uploader( opts ) {\n            this.options = $.extend( true, {}, Uploader.options, opts );\n            this._init( this.options );\n        }\n    \n        // default Options\n        // widgets中有相应扩展\n        Uploader.options = {};\n        Mediator.installTo( Uploader.prototype );\n    \n        // 批量添加纯命令式方法。\n        $.each({\n            upload: 'start-upload',\n            stop: 'stop-upload',\n            getFile: 'get-file',\n            getFiles: 'get-files',\n            addFile: 'add-file',\n            addFiles: 'add-file',\n            sort: 'sort-files',\n            removeFile: 'remove-file',\n            cancelFile: 'cancel-file',\n            skipFile: 'skip-file',\n            retry: 'retry',\n            isInProgress: 'is-in-progress',\n            makeThumb: 'make-thumb',\n            md5File: 'md5-file',\n            getDimension: 'get-dimension',\n            addButton: 'add-btn',\n            predictRuntimeType: 'predict-runtime-type',\n            refresh: 'refresh',\n            disable: 'disable',\n            enable: 'enable',\n            reset: 'reset'\n        }, function( fn, command ) {\n            Uploader.prototype[ fn ] = function() {\n                return this.request( command, arguments );\n            };\n        });\n    \n        $.extend( Uploader.prototype, {\n            state: 'pending',\n    \n            _init: function( opts ) {\n                var me = this;\n    \n                me.request( 'init', opts, function() {\n                    me.state = 'ready';\n                    me.trigger('ready');\n                });\n            },\n    \n            /**\n             * 获取或者设置Uploader配置项。\n             * @method option\n             * @grammar option( key ) => *\n             * @grammar option( key, val ) => self\n             * @example\n             *\n             * // 初始状态图片上传前不会压缩\n             * var uploader = new WebUploader.Uploader({\n             *     compress: null;\n             * });\n             *\n             * // 修改后图片上传前，尝试将图片压缩到1600 * 1600\n             * uploader.option( 'compress', {\n             *     width: 1600,\n             *     height: 1600\n             * });\n             */\n            option: function( key, val ) {\n                var opts = this.options;\n    \n                // setter\n                if ( arguments.length > 1 ) {\n    \n                    if ( $.isPlainObject( val ) &&\n                            $.isPlainObject( opts[ key ] ) ) {\n                        $.extend( opts[ key ], val );\n                    } else {\n                        opts[ key ] = val;\n                    }\n    \n                } else {    // getter\n                    return key ? opts[ key ] : opts;\n                }\n            },\n    \n            /**\n             * 获取文件统计信息。返回一个包含一下信息的对象。\n             * * `successNum` 上传成功的文件数\n             * * `progressNum` 上传中的文件数\n             * * `cancelNum` 被删除的文件数\n             * * `invalidNum` 无效的文件数\n             * * `uploadFailNum` 上传失败的文件数\n             * * `queueNum` 还在队列中的文件数\n             * * `interruptNum` 被暂停的文件数\n             * @method getStats\n             * @grammar getStats() => Object\n             */\n            getStats: function() {\n                // return this._mgr.getStats.apply( this._mgr, arguments );\n                var stats = this.request('get-stats');\n    \n                return stats ? {\n                    successNum: stats.numOfSuccess,\n                    progressNum: stats.numOfProgress,\n    \n                    // who care?\n                    // queueFailNum: 0,\n                    cancelNum: stats.numOfCancel,\n                    invalidNum: stats.numOfInvalid,\n                    uploadFailNum: stats.numOfUploadFailed,\n                    queueNum: stats.numOfQueue,\n                    interruptNum: stats.numofInterrupt\n                } : {};\n            },\n    \n            // 需要重写此方法来来支持opts.onEvent和instance.onEvent的处理器\n            trigger: function( type/*, args...*/ ) {\n                var args = [].slice.call( arguments, 1 ),\n                    opts = this.options,\n                    name = 'on' + type.substring( 0, 1 ).toUpperCase() +\n                        type.substring( 1 );\n    \n                if (\n                        // 调用通过on方法注册的handler.\n                        Mediator.trigger.apply( this, arguments ) === false ||\n    \n                        // 调用opts.onEvent\n                        $.isFunction( opts[ name ] ) &&\n                        opts[ name ].apply( this, args ) === false ||\n    \n                        // 调用this.onEvent\n                        $.isFunction( this[ name ] ) &&\n                        this[ name ].apply( this, args ) === false ||\n    \n                        // 广播所有uploader的事件。\n                        Mediator.trigger.apply( Mediator,\n                        [ this, type ].concat( args ) ) === false ) {\n    \n                    return false;\n                }\n    \n                return true;\n            },\n    \n            /**\n             * 销毁 webuploader 实例\n             * @method destroy\n             * @grammar destroy() => undefined\n             */\n            destroy: function() {\n                this.request( 'destroy', arguments );\n                this.off();\n            },\n    \n            // widgets/widget.js将补充此方法的详细文档。\n            request: Base.noop\n        });\n    \n        /**\n         * 创建Uploader实例，等同于new Uploader( opts );\n         * @method create\n         * @class Base\n         * @static\n         * @grammar Base.create( opts ) => Uploader\n         */\n        Base.create = Uploader.create = function( opts ) {\n            return new Uploader( opts );\n        };\n    \n        // 暴露Uploader，可以通过它来扩展业务逻辑。\n        Base.Uploader = Uploader;\n    \n        return Uploader;\n    });\n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/runtime',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            factories = {},\n    \n            // 获取对象的第一个key\n            getFirstKey = function( obj ) {\n                for ( var key in obj ) {\n                    if ( obj.hasOwnProperty( key ) ) {\n                        return key;\n                    }\n                }\n                return null;\n            };\n    \n        // 接口类。\n        function Runtime( options ) {\n            this.options = $.extend({\n                container: document.body\n            }, options );\n            this.uid = Base.guid('rt_');\n        }\n    \n        $.extend( Runtime.prototype, {\n    \n            getContainer: function() {\n                var opts = this.options,\n                    parent, container;\n    \n                if ( this._container ) {\n                    return this._container;\n                }\n    \n                parent = $( opts.container || document.body );\n                container = $( document.createElement('div') );\n    \n                container.attr( 'id', 'rt_' + this.uid );\n                container.css({\n                    position: 'absolute',\n                    top: '0px',\n                    left: '0px',\n                    width: '1px',\n                    height: '1px',\n                    overflow: 'hidden'\n                });\n    \n                parent.append( container );\n                parent.addClass('webuploader-container');\n                this._container = container;\n                this._parent = parent;\n                return container;\n            },\n    \n            init: Base.noop,\n            exec: Base.noop,\n    \n            destroy: function() {\n                this._container && this._container.remove();\n                this._parent && this._parent.removeClass('webuploader-container');\n                this.off();\n            }\n        });\n    \n        Runtime.orders = 'html5,flash';\n    \n    \n        /**\n         * 添加Runtime实现。\n         * @param {String} type    类型\n         * @param {Runtime} factory 具体Runtime实现。\n         */\n        Runtime.addRuntime = function( type, factory ) {\n            factories[ type ] = factory;\n        };\n    \n        Runtime.hasRuntime = function( type ) {\n            return !!(type ? factories[ type ] : getFirstKey( factories ));\n        };\n    \n        Runtime.create = function( opts, orders ) {\n            var type, runtime;\n    \n            orders = orders || Runtime.orders;\n            $.each( orders.split( /\\s*,\\s*/g ), function() {\n                if ( factories[ this ] ) {\n                    type = this;\n                    return false;\n                }\n            });\n    \n            type = type || getFirstKey( factories );\n    \n            if ( !type ) {\n                throw new Error('Runtime Error');\n            }\n    \n            runtime = new factories[ type ]( opts );\n            return runtime;\n        };\n    \n        Mediator.installTo( Runtime.prototype );\n        return Runtime;\n    });\n    \n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/client',[\n        'base',\n        'mediator',\n        'runtime/runtime'\n    ], function( Base, Mediator, Runtime ) {\n    \n        var cache;\n    \n        cache = (function() {\n            var obj = {};\n    \n            return {\n                add: function( runtime ) {\n                    obj[ runtime.uid ] = runtime;\n                },\n    \n                get: function( ruid, standalone ) {\n                    var i;\n    \n                    if ( ruid ) {\n                        return obj[ ruid ];\n                    }\n    \n                    for ( i in obj ) {\n                        // 有些类型不能重用，比如filepicker.\n                        if ( standalone && obj[ i ].__standalone ) {\n                            continue;\n                        }\n    \n                        return obj[ i ];\n                    }\n    \n                    return null;\n                },\n    \n                remove: function( runtime ) {\n                    delete obj[ runtime.uid ];\n                }\n            };\n        })();\n    \n        function RuntimeClient( component, standalone ) {\n            var deferred = Base.Deferred(),\n                runtime;\n    \n            this.uid = Base.guid('client_');\n    \n            // 允许runtime没有初始化之前，注册一些方法在初始化后执行。\n            this.runtimeReady = function( cb ) {\n                return deferred.done( cb );\n            };\n    \n            this.connectRuntime = function( opts, cb ) {\n    \n                // already connected.\n                if ( runtime ) {\n                    throw new Error('already connected!');\n                }\n    \n                deferred.done( cb );\n    \n                if ( typeof opts === 'string' && cache.get( opts ) ) {\n                    runtime = cache.get( opts );\n                }\n    \n                // 像filePicker只能独立存在，不能公用。\n                runtime = runtime || cache.get( null, standalone );\n    \n                // 需要创建\n                if ( !runtime ) {\n                    runtime = Runtime.create( opts, opts.runtimeOrder );\n                    runtime.__promise = deferred.promise();\n                    runtime.once( 'ready', deferred.resolve );\n                    runtime.init();\n                    cache.add( runtime );\n                    runtime.__client = 1;\n                } else {\n                    // 来自cache\n                    Base.$.extend( runtime.options, opts );\n                    runtime.__promise.then( deferred.resolve );\n                    runtime.__client++;\n                }\n    \n                standalone && (runtime.__standalone = standalone);\n                return runtime;\n            };\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.disconnectRuntime = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                runtime.__client--;\n    \n                if ( runtime.__client <= 0 ) {\n                    cache.remove( runtime );\n                    delete runtime.__promise;\n                    runtime.destroy();\n                }\n    \n                runtime = null;\n            };\n    \n            this.exec = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                var args = Base.slice( arguments );\n                component && args.unshift( component );\n    \n                return runtime.exec.apply( this, args );\n            };\n    \n            this.getRuid = function() {\n                return runtime && runtime.uid;\n            };\n    \n            this.destroy = (function( destroy ) {\n                return function() {\n                    destroy && destroy.apply( this, arguments );\n                    this.trigger('destroy');\n                    this.off();\n                    this.exec('destroy');\n                    this.disconnectRuntime();\n                };\n            })( this.destroy );\n        }\n    \n        Mediator.installTo( RuntimeClient.prototype );\n        return RuntimeClient;\n    });\n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/dnd',[\n        'base',\n        'mediator',\n        'runtime/client'\n    ], function( Base, Mediator, RuntimeClent ) {\n    \n        var $ = Base.$;\n    \n        function DragAndDrop( opts ) {\n            opts = this.options = $.extend({}, DragAndDrop.options, opts );\n    \n            opts.container = $( opts.container );\n    \n            if ( !opts.container.length ) {\n                return;\n            }\n    \n            RuntimeClent.call( this, 'DragAndDrop' );\n        }\n    \n        DragAndDrop.options = {\n            accept: null,\n            disableGlobalDnd: false\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: DragAndDrop,\n    \n            init: function() {\n                var me = this;\n    \n                me.connectRuntime( me.options, function() {\n                    me.exec('init');\n                    me.trigger('ready');\n                });\n            }\n        });\n    \n        Mediator.installTo( DragAndDrop.prototype );\n    \n        return DragAndDrop;\n    });\n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/widget',[\n        'base',\n        'uploader'\n    ], function( Base, Uploader ) {\n    \n        var $ = Base.$,\n            _init = Uploader.prototype._init,\n            _destroy = Uploader.prototype.destroy,\n            IGNORE = {},\n            widgetClass = [];\n    \n        function isArrayLike( obj ) {\n            if ( !obj ) {\n                return false;\n            }\n    \n            var length = obj.length,\n                type = $.type( obj );\n    \n            if ( obj.nodeType === 1 && length ) {\n                return true;\n            }\n    \n            return type === 'array' || type !== 'function' && type !== 'string' &&\n                    (length === 0 || typeof length === 'number' && length > 0 &&\n                    (length - 1) in obj);\n        }\n    \n        function Widget( uploader ) {\n            this.owner = uploader;\n            this.options = uploader.options;\n        }\n    \n        $.extend( Widget.prototype, {\n    \n            init: Base.noop,\n    \n            // 类Backbone的事件监听声明，监听uploader实例上的事件\n            // widget直接无法监听事件，事件只能通过uploader来传递\n            invoke: function( apiName, args ) {\n    \n                /*\n                    {\n                        'make-thumb': 'makeThumb'\n                    }\n                 */\n                var map = this.responseMap;\n    \n                // 如果无API响应声明则忽略\n                if ( !map || !(apiName in map) || !(map[ apiName ] in this) ||\n                        !$.isFunction( this[ map[ apiName ] ] ) ) {\n    \n                    return IGNORE;\n                }\n    \n                return this[ map[ apiName ] ].apply( this, args );\n    \n            },\n    \n            /**\n             * 发送命令。当传入`callback`或者`handler`中返回`promise`时。返回一个当所有`handler`中的promise都完成后完成的新`promise`。\n             * @method request\n             * @grammar request( command, args ) => * | Promise\n             * @grammar request( command, args, callback ) => Promise\n             * @for  Uploader\n             */\n            request: function() {\n                return this.owner.request.apply( this.owner, arguments );\n            }\n        });\n    \n        // 扩展Uploader.\n        $.extend( Uploader.prototype, {\n    \n            /**\n             * @property {String | Array} [disableWidgets=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 默认所有 Uploader.register 了的 widget 都会被加载，如果禁用某一部分，请通过此 option 指定黑名单。\n             */\n    \n            // 覆写_init用来初始化widgets\n            _init: function() {\n                var me = this,\n                    widgets = me._widgets = [],\n                    deactives = me.options.disableWidgets || '';\n    \n                $.each( widgetClass, function( _, klass ) {\n                    (!deactives || !~deactives.indexOf( klass._name )) &&\n                        widgets.push( new klass( me ) );\n                });\n    \n                return _init.apply( me, arguments );\n            },\n    \n            request: function( apiName, args, callback ) {\n                var i = 0,\n                    widgets = this._widgets,\n                    len = widgets && widgets.length,\n                    rlts = [],\n                    dfds = [],\n                    widget, rlt, promise, key;\n    \n                args = isArrayLike( args ) ? args : [ args ];\n    \n                for ( ; i < len; i++ ) {\n                    widget = widgets[ i ];\n                    rlt = widget.invoke( apiName, args );\n    \n                    if ( rlt !== IGNORE ) {\n    \n                        // Deferred对象\n                        if ( Base.isPromise( rlt ) ) {\n                            dfds.push( rlt );\n                        } else {\n                            rlts.push( rlt );\n                        }\n                    }\n                }\n    \n                // 如果有callback，则用异步方式。\n                if ( callback || dfds.length ) {\n                    promise = Base.when.apply( Base, dfds );\n                    key = promise.pipe ? 'pipe' : 'then';\n    \n                    // 很重要不能删除。删除了会死循环。\n                    // 保证执行顺序。让callback总是在下一个 tick 中执行。\n                    return promise[ key ](function() {\n                                var deferred = Base.Deferred(),\n                                    args = arguments;\n    \n                                if ( args.length === 1 ) {\n                                    args = args[ 0 ];\n                                }\n    \n                                setTimeout(function() {\n                                    deferred.resolve( args );\n                                }, 1 );\n    \n                                return deferred.promise();\n                            })[ callback ? key : 'done' ]( callback || Base.noop );\n                } else {\n                    return rlts[ 0 ];\n                }\n            },\n    \n            destroy: function() {\n                _destroy.apply( this, arguments );\n                this._widgets = null;\n            }\n        });\n    \n        /**\n         * 添加组件\n         * @grammar Uploader.register(proto);\n         * @grammar Uploader.register(map, proto);\n         * @param  {object} responseMap API 名称与函数实现的映射\n         * @param  {object} proto 组件原型，构造函数通过 constructor 属性定义\n         * @method Uploader.register\n         * @for Uploader\n         * @example\n         * Uploader.register({\n         *     'make-thumb': 'makeThumb'\n         * }, {\n         *     init: function( options ) {},\n         *     makeThumb: function() {}\n         * });\n         *\n         * Uploader.register({\n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         */\n        Uploader.register = Widget.register = function( responseMap, widgetProto ) {\n            var map = { init: 'init', destroy: 'destroy', name: 'anonymous' },\n                klass;\n    \n            if ( arguments.length === 1 ) {\n                widgetProto = responseMap;\n    \n                // 自动生成 map 表。\n                $.each(widgetProto, function(key) {\n                    if ( key[0] === '_' || key === 'name' ) {\n                        key === 'name' && (map.name = widgetProto.name);\n                        return;\n                    }\n    \n                    map[key.replace(/[A-Z]/g, '-$&').toLowerCase()] = key;\n                });\n    \n            } else {\n                map = $.extend( map, responseMap );\n            }\n    \n            widgetProto.responseMap = map;\n            klass = Base.inherits( Widget, widgetProto );\n            klass._name = map.name;\n            widgetClass.push( klass );\n    \n            return klass;\n        };\n    \n        /**\n         * 删除插件，只有在注册时指定了名字的才能被删除。\n         * @grammar Uploader.unRegister(name);\n         * @param  {string} name 组件名字\n         * @method Uploader.unRegister\n         * @for Uploader\n         * @example\n         *\n         * Uploader.register({\n         *     name: 'custom',\n         *     \n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         *\n         * Uploader.unRegister('custom');\n         */\n        Uploader.unRegister = Widget.unRegister = function( name ) {\n            if ( !name || name === 'anonymous' ) {\n                return;\n            }\n            \n            // 删除指定的插件。\n            for ( var i = widgetClass.length; i--; ) {\n                if ( widgetClass[i]._name === name ) {\n                    widgetClass.splice(i, 1)\n                }\n            }\n        };\n    \n        return Widget;\n    });\n    /**\n     * @fileOverview DragAndDrop Widget。\n     */\n    define('widgets/filednd',[\n        'base',\n        'uploader',\n        'lib/dnd',\n        'widgets/widget'\n    ], function( Base, Uploader, Dnd ) {\n        var $ = Base.$;\n    \n        Uploader.options.dnd = '';\n    \n        /**\n         * @property {Selector} [dnd=undefined]  指定Drag And Drop拖拽的容器，如果不指定，则不启动。\n         * @namespace options\n         * @for Uploader\n         */\n        \n        /**\n         * @property {Selector} [disableGlobalDnd=false]  是否禁掉整个页面的拖拽功能，如果不禁用，图片拖进来的时候会默认被浏览器打开。\n         * @namespace options\n         * @for Uploader\n         */\n    \n        /**\n         * @event dndAccept\n         * @param {DataTransferItemList} items DataTransferItem\n         * @description 阻止此事件可以拒绝某些类型的文件拖入进来。目前只有 chrome 提供这样的 API，且只能通过 mime-type 验证。\n         * @for  Uploader\n         */\n        return Uploader.register({\n            name: 'dnd',\n            \n            init: function( opts ) {\n    \n                if ( !opts.dnd ||\n                        this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                var me = this,\n                    deferred = Base.Deferred(),\n                    options = $.extend({}, {\n                        disableGlobalDnd: opts.disableGlobalDnd,\n                        container: opts.dnd,\n                        accept: opts.accept\n                    }),\n                    dnd;\n    \n                this.dnd = dnd = new Dnd( options );\n    \n                dnd.once( 'ready', deferred.resolve );\n                dnd.on( 'drop', function( files ) {\n                    me.request( 'add-file', [ files ]);\n                });\n    \n                // 检测文件是否全部允许添加。\n                dnd.on( 'accept', function( items ) {\n                    return me.owner.trigger( 'dndAccept', items );\n                });\n    \n                dnd.init();\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                this.dnd && this.dnd.destroy();\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepaste',[\n        'base',\n        'mediator',\n        'runtime/client'\n    ], function( Base, Mediator, RuntimeClent ) {\n    \n        var $ = Base.$;\n    \n        function FilePaste( opts ) {\n            opts = this.options = $.extend({}, opts );\n            opts.container = $( opts.container || document.body );\n            RuntimeClent.call( this, 'FilePaste' );\n        }\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePaste,\n    \n            init: function() {\n                var me = this;\n    \n                me.connectRuntime( me.options, function() {\n                    me.exec('init');\n                    me.trigger('ready');\n                });\n            }\n        });\n    \n        Mediator.installTo( FilePaste.prototype );\n    \n        return FilePaste;\n    });\n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/filepaste',[\n        'base',\n        'uploader',\n        'lib/filepaste',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePaste ) {\n        var $ = Base.$;\n    \n        /**\n         * @property {Selector} [paste=undefined]  指定监听paste事件的容器，如果不指定，不启用此功能。此功能为通过粘贴来添加截屏的图片。建议设置为`document.body`.\n         * @namespace options\n         * @for Uploader\n         */\n        return Uploader.register({\n            name: 'paste',\n            \n            init: function( opts ) {\n    \n                if ( !opts.paste ||\n                        this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                var me = this,\n                    deferred = Base.Deferred(),\n                    options = $.extend({}, {\n                        container: opts.paste,\n                        accept: opts.accept\n                    }),\n                    paste;\n    \n                this.paste = paste = new FilePaste( options );\n    \n                paste.once( 'ready', deferred.resolve );\n                paste.on( 'paste', function( files ) {\n                    me.owner.request( 'add-file', [ files ]);\n                });\n                paste.init();\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                this.paste && this.paste.destroy();\n            }\n        });\n    });\n    /**\n     * @fileOverview Blob\n     */\n    define('lib/blob',[\n        'base',\n        'runtime/client'\n    ], function( Base, RuntimeClient ) {\n    \n        function Blob( ruid, source ) {\n            var me = this;\n    \n            me.source = source;\n            me.ruid = ruid;\n            this.size = source.size || 0;\n    \n            // 如果没有指定 mimetype, 但是知道文件后缀。\n            if ( !source.type && this.ext &&\n                    ~'jpg,jpeg,png,gif,bmp'.indexOf( this.ext ) ) {\n                this.type = 'image/' + (this.ext === 'jpg' ? 'jpeg' : this.ext);\n            } else {\n                this.type = source.type || 'application/octet-stream';\n            }\n    \n            RuntimeClient.call( me, 'Blob' );\n            this.uid = source.uid || this.uid;\n    \n            if ( ruid ) {\n                me.connectRuntime( ruid );\n            }\n        }\n    \n        Base.inherits( RuntimeClient, {\n            constructor: Blob,\n    \n            slice: function( start, end ) {\n                return this.exec( 'slice', start, end );\n            },\n    \n            getSource: function() {\n                return this.source;\n            }\n        });\n    \n        return Blob;\n    });\n    /**\n     * 为了统一化Flash的File和HTML5的File而存在。\n     * 以至于要调用Flash里面的File，也可以像调用HTML5版本的File一下。\n     * @fileOverview File\n     */\n    define('lib/file',[\n        'base',\n        'lib/blob'\n    ], function( Base, Blob ) {\n    \n        var uid = 1,\n            rExt = /\\.([^.]+)$/;\n    \n        function File( ruid, file ) {\n            var ext;\n    \n            this.name = file.name || ('untitled' + uid++);\n            ext = rExt.exec( file.name ) ? RegExp.$1.toLowerCase() : '';\n    \n            // todo 支持其他类型文件的转换。\n            // 如果有 mimetype, 但是文件名里面没有找出后缀规律\n            if ( !ext && file.type ) {\n                ext = /\\/(jpg|jpeg|png|gif|bmp)$/i.exec( file.type ) ?\n                        RegExp.$1.toLowerCase() : '';\n                this.name += '.' + ext;\n            }\n    \n            this.ext = ext;\n            this.lastModifiedDate = file.lastModifiedDate ||\n                    (new Date()).toLocaleString();\n    \n            Blob.apply( this, arguments );\n        }\n    \n        return Base.inherits( Blob, File );\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepicker',[\n        'base',\n        'runtime/client',\n        'lib/file'\n    ], function( Base, RuntimeClent, File ) {\n    \n        var $ = Base.$;\n    \n        function FilePicker( opts ) {\n            opts = this.options = $.extend({}, FilePicker.options, opts );\n    \n            opts.container = $( opts.id );\n    \n            if ( !opts.container.length ) {\n                throw new Error('按钮指定错误');\n            }\n    \n            opts.innerHTML = opts.innerHTML || opts.label ||\n                    opts.container.html() || '';\n    \n            opts.button = $( opts.button || document.createElement('div') );\n            opts.button.html( opts.innerHTML );\n            opts.container.html( opts.button );\n    \n            RuntimeClent.call( this, 'FilePicker', true );\n        }\n    \n        FilePicker.options = {\n            button: null,\n            container: null,\n            label: null,\n            innerHTML: null,\n            multiple: true,\n            accept: null,\n            name: 'file'\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePicker,\n    \n            init: function() {\n                var me = this,\n                    opts = me.options,\n                    button = opts.button;\n    \n                button.addClass('webuploader-pick');\n    \n                me.on( 'all', function( type ) {\n                    var files;\n    \n                    switch ( type ) {\n                        case 'mouseenter':\n                            button.addClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'mouseleave':\n                            button.removeClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'change':\n                            files = me.exec('getFiles');\n                            me.trigger( 'select', $.map( files, function( file ) {\n                                file = new File( me.getRuid(), file );\n    \n                                // 记录来源。\n                                file._refer = opts.container;\n                                return file;\n                            }), opts.container );\n                            break;\n                    }\n                });\n    \n                me.connectRuntime( opts, function() {\n                    me.refresh();\n                    me.exec( 'init', opts );\n                    me.trigger('ready');\n                });\n    \n                this._resizeHandler = Base.bindFn( this.refresh, this );\n                $( window ).on( 'resize', this._resizeHandler );\n            },\n    \n            refresh: function() {\n                var shimContainer = this.getRuntime().getContainer(),\n                    button = this.options.button,\n                    width = button.outerWidth ?\n                            button.outerWidth() : button.width(),\n    \n                    height = button.outerHeight ?\n                            button.outerHeight() : button.height(),\n    \n                    pos = button.offset();\n    \n                width && height && shimContainer.css({\n                    bottom: 'auto',\n                    right: 'auto',\n                    width: width + 'px',\n                    height: height + 'px'\n                }).offset( pos );\n            },\n    \n            enable: function() {\n                var btn = this.options.button;\n    \n                btn.removeClass('webuploader-pick-disable');\n                this.refresh();\n            },\n    \n            disable: function() {\n                var btn = this.options.button;\n    \n                this.getRuntime().getContainer().css({\n                    top: '-99999px'\n                });\n    \n                btn.addClass('webuploader-pick-disable');\n            },\n    \n            destroy: function() {\n                var btn = this.options.button;\n                $( window ).off( 'resize', this._resizeHandler );\n                btn.removeClass('webuploader-pick-disable webuploader-pick-hover ' +\n                    'webuploader-pick');\n            }\n        });\n    \n        return FilePicker;\n    });\n    \n    /**\n     * @fileOverview 文件选择相关\n     */\n    define('widgets/filepicker',[\n        'base',\n        'uploader',\n        'lib/filepicker',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePicker ) {\n        var $ = Base.$;\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Selector | Object} [pick=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 指定选择文件的按钮容器，不指定则不创建按钮。\n             *\n             * * `id` {Seletor|dom} 指定选择文件的按钮容器，不指定则不创建按钮。**注意** 这里虽然写的是 id, 但是不是只支持 id, 还支持 class, 或者 dom 节点。\n             * * `label` {String} 请采用 `innerHTML` 代替\n             * * `innerHTML` {String} 指定按钮文字。不指定时优先从指定的容器中看是否自带文字。\n             * * `multiple` {Boolean} 是否开起同时选择多个文件能力。\n             */\n            pick: null,\n    \n            /**\n             * @property {Arroy} [accept=null]\n             * @namespace options\n             * @for Uploader\n             * @description 指定接受哪些类型的文件。 由于目前还有ext转mimeType表，所以这里需要分开指定。\n             *\n             * * `title` {String} 文字描述\n             * * `extensions` {String} 允许的文件后缀，不带点，多个用逗号分割。\n             * * `mimeTypes` {String} 多个用逗号分割。\n             *\n             * 如：\n             *\n             * ```\n             * {\n             *     title: 'Images',\n             *     extensions: 'gif,jpg,jpeg,bmp,png',\n             *     mimeTypes: 'image/*'\n             * }\n             * ```\n             */\n            accept: null/*{\n                title: 'Images',\n                extensions: 'gif,jpg,jpeg,bmp,png',\n                mimeTypes: 'image/*'\n            }*/\n        });\n    \n        return Uploader.register({\n            name: 'picker',\n    \n            init: function( opts ) {\n                this.pickers = [];\n                return opts.pick && this.addBtn( opts.pick );\n            },\n    \n            refresh: function() {\n                $.each( this.pickers, function() {\n                    this.refresh();\n                });\n            },\n    \n            /**\n             * @method addButton\n             * @for Uploader\n             * @grammar addButton( pick ) => Promise\n             * @description\n             * 添加文件选择按钮，如果一个按钮不够，需要调用此方法来添加。参数跟[options.pick](#WebUploader:Uploader:options)一致。\n             * @example\n             * uploader.addButton({\n             *     id: '#btnContainer',\n             *     innerHTML: '选择文件'\n             * });\n             */\n            addBtn: function( pick ) {\n                var me = this,\n                    opts = me.options,\n                    accept = opts.accept,\n                    promises = [];\n    \n                if ( !pick ) {\n                    return;\n                }\n    \n                $.isPlainObject( pick ) || (pick = {\n                    id: pick\n                });\n    \n                $( pick.id ).each(function() {\n                    var options, picker, deferred;\n    \n                    deferred = Base.Deferred();\n    \n                    options = $.extend({}, pick, {\n                        accept: $.isPlainObject( accept ) ? [ accept ] : accept,\n                        swf: opts.swf,\n                        runtimeOrder: opts.runtimeOrder,\n                        id: this\n                    });\n    \n                    picker = new FilePicker( options );\n    \n                    picker.once( 'ready', deferred.resolve );\n                    picker.on( 'select', function( files ) {\n                        me.owner.request( 'add-file', [ files ]);\n                    });\n                    picker.init();\n    \n                    me.pickers.push( picker );\n    \n                    promises.push( deferred.promise() );\n                });\n    \n                return Base.when.apply( Base, promises );\n            },\n    \n            disable: function() {\n                $.each( this.pickers, function() {\n                    this.disable();\n                });\n            },\n    \n            enable: function() {\n                $.each( this.pickers, function() {\n                    this.enable();\n                });\n            },\n    \n            destroy: function() {\n                $.each( this.pickers, function() {\n                    this.destroy();\n                });\n                this.pickers = null;\n            }\n        });\n    });\n    /**\n     * @fileOverview Image\n     */\n    define('lib/image',[\n        'base',\n        'runtime/client',\n        'lib/blob'\n    ], function( Base, RuntimeClient, Blob ) {\n        var $ = Base.$;\n    \n        // 构造器。\n        function Image( opts ) {\n            this.options = $.extend({}, Image.options, opts );\n            RuntimeClient.call( this, 'Image' );\n    \n            this.on( 'load', function() {\n                this._info = this.exec('info');\n                this._meta = this.exec('meta');\n            });\n        }\n    \n        // 默认选项。\n        Image.options = {\n    \n            // 默认的图片处理质量\n            quality: 90,\n    \n            // 是否裁剪\n            crop: false,\n    \n            // 是否保留头部信息\n            preserveHeaders: false,\n    \n            // 是否允许放大。\n            allowMagnify: false\n        };\n    \n        // 继承RuntimeClient.\n        Base.inherits( RuntimeClient, {\n            constructor: Image,\n    \n            info: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._info = val;\n                    return this;\n                }\n    \n                // getter\n                return this._info;\n            },\n    \n            meta: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._meta = val;\n                    return this;\n                }\n    \n                // getter\n                return this._meta;\n            },\n    \n            loadFromBlob: function( blob ) {\n                var me = this,\n                    ruid = blob.getRuid();\n    \n                this.connectRuntime( ruid, function() {\n                    me.exec( 'init', me.options );\n                    me.exec( 'loadFromBlob', blob );\n                });\n            },\n    \n            resize: function() {\n                var args = Base.slice( arguments );\n                return this.exec.apply( this, [ 'resize' ].concat( args ) );\n            },\n    \n            crop: function() {\n                var args = Base.slice( arguments );\n                return this.exec.apply( this, [ 'crop' ].concat( args ) );\n            },\n    \n            getAsDataUrl: function( type ) {\n                return this.exec( 'getAsDataUrl', type );\n            },\n    \n            getAsBlob: function( type ) {\n                var blob = this.exec( 'getAsBlob', type );\n    \n                return new Blob( this.getRuid(), blob );\n            }\n        });\n    \n        return Image;\n    });\n    /**\n     * @fileOverview 图片操作, 负责预览图片和上传前压缩图片\n     */\n    define('widgets/image',[\n        'base',\n        'uploader',\n        'lib/image',\n        'widgets/widget'\n    ], function( Base, Uploader, Image ) {\n    \n        var $ = Base.$,\n            throttle;\n    \n        // 根据要处理的文件大小来节流，一次不能处理太多，会卡。\n        throttle = (function( max ) {\n            var occupied = 0,\n                waiting = [],\n                tick = function() {\n                    var item;\n    \n                    while ( waiting.length && occupied < max ) {\n                        item = waiting.shift();\n                        occupied += item[ 0 ];\n                        item[ 1 ]();\n                    }\n                };\n    \n            return function( emiter, size, cb ) {\n                waiting.push([ size, cb ]);\n                emiter.once( 'destroy', function() {\n                    occupied -= size;\n                    setTimeout( tick, 1 );\n                });\n                setTimeout( tick, 1 );\n            };\n        })( 5 * 1024 * 1024 );\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Object} [thumb]\n             * @namespace options\n             * @for Uploader\n             * @description 配置生成缩略图的选项。\n             *\n             * 默认为：\n             *\n             * ```javascript\n             * {\n             *     width: 110,\n             *     height: 110,\n             *\n             *     // 图片质量，只有type为`image/jpeg`的时候才有效。\n             *     quality: 70,\n             *\n             *     // 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.\n             *     allowMagnify: true,\n             *\n             *     // 是否允许裁剪。\n             *     crop: true,\n             *\n             *     // 为空的话则保留原有图片格式。\n             *     // 否则强制转换成指定的类型。\n             *     type: 'image/jpeg'\n             * }\n             * ```\n             */\n            thumb: {\n                width: 110,\n                height: 110,\n                quality: 70,\n                allowMagnify: true,\n                crop: true,\n                preserveHeaders: false,\n    \n                // 为空的话则保留原有图片格式。\n                // 否则强制转换成指定的类型。\n                // IE 8下面 base64 大小不能超过 32K 否则预览失败，而非 jpeg 编码的图片很可\n                // 能会超过 32k, 所以这里设置成预览的时候都是 image/jpeg\n                type: 'image/jpeg'\n            },\n    \n            /**\n             * @property {Object} [compress]\n             * @namespace options\n             * @for Uploader\n             * @description 配置压缩的图片的选项。如果此选项为`false`, 则图片在上传前不进行压缩。\n             *\n             * 默认为：\n             *\n             * ```javascript\n             * {\n             *     width: 1600,\n             *     height: 1600,\n             *\n             *     // 图片质量，只有type为`image/jpeg`的时候才有效。\n             *     quality: 90,\n             *\n             *     // 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.\n             *     allowMagnify: false,\n             *\n             *     // 是否允许裁剪。\n             *     crop: false,\n             *\n             *     // 是否保留头部meta信息。\n             *     preserveHeaders: true,\n             *\n             *     // 如果发现压缩后文件大小比原来还大，则使用原来图片\n             *     // 此属性可能会影响图片自动纠正功能\n             *     noCompressIfLarger: false,\n             *\n             *     // 单位字节，如果图片大小小于此值，不会采用压缩。\n             *     compressSize: 0\n             * }\n             * ```\n             */\n            compress: {\n                width: 1600,\n                height: 1600,\n                quality: 90,\n                allowMagnify: false,\n                crop: false,\n                preserveHeaders: true\n            }\n        });\n    \n        return Uploader.register({\n    \n            name: 'image',\n    \n    \n            /**\n             * 生成缩略图，此过程为异步，所以需要传入`callback`。\n             * 通常情况在图片加入队里后调用此方法来生成预览图以增强交互效果。\n             *\n             * 当 width 或者 height 的值介于 0 - 1 时，被当成百分比使用。\n             *\n             * `callback`中可以接收到两个参数。\n             * * 第一个为error，如果生成缩略图有错误，此error将为真。\n             * * 第二个为ret, 缩略图的Data URL值。\n             *\n             * **注意**\n             * Date URL在IE6/7中不支持，所以不用调用此方法了，直接显示一张暂不支持预览图片好了。\n             * 也可以借助服务端，将 base64 数据传给服务端，生成一个临时文件供预览。\n             *\n             * @method makeThumb\n             * @grammar makeThumb( file, callback ) => undefined\n             * @grammar makeThumb( file, callback, width, height ) => undefined\n             * @for Uploader\n             * @example\n             *\n             * uploader.on( 'fileQueued', function( file ) {\n             *     var $li = ...;\n             *\n             *     uploader.makeThumb( file, function( error, ret ) {\n             *         if ( error ) {\n             *             $li.text('预览错误');\n             *         } else {\n             *             $li.append('<img alt=\"\" src=\"' + ret + '\" />');\n             *         }\n             *     });\n             *\n             * });\n             */\n            makeThumb: function( file, cb, width, height ) {\n                var opts, image;\n    \n                file = this.request( 'get-file', file );\n    \n                // 只预览图片格式。\n                if ( !file.type.match( /^image/ ) ) {\n                    cb( true );\n                    return;\n                }\n    \n                opts = $.extend({}, this.options.thumb );\n    \n                // 如果传入的是object.\n                if ( $.isPlainObject( width ) ) {\n                    opts = $.extend( opts, width );\n                    width = null;\n                }\n    \n                width = width || opts.width;\n                height = height || opts.height;\n    \n                image = new Image( opts );\n    \n                image.once( 'load', function() {\n                    file._info = file._info || image.info();\n                    file._meta = file._meta || image.meta();\n    \n                    // 如果 width 的值介于 0 - 1\n                    // 说明设置的是百分比。\n                    if ( width <= 1 && width > 0 ) {\n                        width = file._info.width * width;\n                    }\n    \n                    // 同样的规则应用于 height\n                    if ( height <= 1 && height > 0 ) {\n                        height = file._info.height * height;\n                    }\n    \n                    image.resize( width, height );\n                });\n    \n                // 当 resize 完后\n                image.once( 'complete', function() {\n                    cb( false, image.getAsDataUrl( opts.type ) );\n                    image.destroy();\n                });\n    \n                image.once( 'error', function( reason ) {\n                    cb( reason || true );\n                    image.destroy();\n                });\n    \n                throttle( image, file.source.size, function() {\n                    file._info && image.info( file._info );\n                    file._meta && image.meta( file._meta );\n                    image.loadFromBlob( file.source );\n                });\n            },\n    \n            beforeSendFile: function( file ) {\n                var opts = this.options.compress || this.options.resize,\n                    compressSize = opts && opts.compressSize || 0,\n                    noCompressIfLarger = opts && opts.noCompressIfLarger || false,\n                    image, deferred;\n    \n                file = this.request( 'get-file', file );\n    \n                // 只压缩 jpeg 图片格式。\n                // gif 可能会丢失针\n                // bmp png 基本上尺寸都不大，且压缩比比较小。\n                if ( !opts || !~'image/jpeg,image/jpg'.indexOf( file.type ) ||\n                        file.size < compressSize ||\n                        file._compressed ) {\n                    return;\n                }\n    \n                opts = $.extend({}, opts );\n                deferred = Base.Deferred();\n    \n                image = new Image( opts );\n    \n                deferred.always(function() {\n                    image.destroy();\n                    image = null;\n                });\n                image.once( 'error', deferred.reject );\n                image.once( 'load', function() {\n                    var width = opts.width,\n                        height = opts.height;\n    \n                    file._info = file._info || image.info();\n                    file._meta = file._meta || image.meta();\n    \n                    // 如果 width 的值介于 0 - 1\n                    // 说明设置的是百分比。\n                    if ( width <= 1 && width > 0 ) {\n                        width = file._info.width * width;\n                    }\n    \n                    // 同样的规则应用于 height\n                    if ( height <= 1 && height > 0 ) {\n                        height = file._info.height * height;\n                    }\n    \n                    image.resize( width, height );\n                });\n    \n                image.once( 'complete', function() {\n                    var blob, size;\n    \n                    // 移动端 UC / qq 浏览器的无图模式下\n                    // ctx.getImageData 处理大图的时候会报 Exception\n                    // INDEX_SIZE_ERR: DOM Exception 1\n                    try {\n                        blob = image.getAsBlob( opts.type );\n    \n                        size = file.size;\n    \n                        // 如果压缩后，比原来还大则不用压缩后的。\n                        if ( !noCompressIfLarger || blob.size < size ) {\n                            // file.source.destroy && file.source.destroy();\n                            file.source = blob;\n                            file.size = blob.size;\n    \n                            file.trigger( 'resize', blob.size, size );\n                        }\n    \n                        // 标记，避免重复压缩。\n                        file._compressed = true;\n                        deferred.resolve();\n                    } catch ( e ) {\n                        // 出错了直接继续，让其上传原始图片\n                        deferred.resolve();\n                    }\n                });\n    \n                file._info && image.info( file._info );\n                file._meta && image.meta( file._meta );\n    \n                image.loadFromBlob( file.source );\n                return deferred.promise();\n            }\n        });\n    });\n    /**\n     * @fileOverview 文件属性封装\n     */\n    define('file',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            idPrefix = 'WU_FILE_',\n            idSuffix = 0,\n            rExt = /\\.([^.]+)$/,\n            statusMap = {};\n    \n        function gid() {\n            return idPrefix + idSuffix++;\n        }\n    \n        /**\n         * 文件类\n         * @class File\n         * @constructor 构造函数\n         * @grammar new File( source ) => File\n         * @param {Lib.File} source [lib.File](#Lib.File)实例, 此source对象是带有Runtime信息的。\n         */\n        function WUFile( source ) {\n    \n            /**\n             * 文件名，包括扩展名（后缀）\n             * @property name\n             * @type {string}\n             */\n            this.name = source.name || 'Untitled';\n    \n            /**\n             * 文件体积（字节）\n             * @property size\n             * @type {uint}\n             * @default 0\n             */\n            this.size = source.size || 0;\n    \n            /**\n             * 文件MIMETYPE类型，与文件类型的对应关系请参考[http://t.cn/z8ZnFny](http://t.cn/z8ZnFny)\n             * @property type\n             * @type {string}\n             * @default 'application/octet-stream'\n             */\n            this.type = source.type || 'application/octet-stream';\n    \n            /**\n             * 文件最后修改日期\n             * @property lastModifiedDate\n             * @type {int}\n             * @default 当前时间戳\n             */\n            this.lastModifiedDate = source.lastModifiedDate || (new Date() * 1);\n    \n            /**\n             * 文件ID，每个对象具有唯一ID，与文件名无关\n             * @property id\n             * @type {string}\n             */\n            this.id = gid();\n    \n            /**\n             * 文件扩展名，通过文件名获取，例如test.png的扩展名为png\n             * @property ext\n             * @type {string}\n             */\n            this.ext = rExt.exec( this.name ) ? RegExp.$1 : '';\n    \n    \n            /**\n             * 状态文字说明。在不同的status语境下有不同的用途。\n             * @property statusText\n             * @type {string}\n             */\n            this.statusText = '';\n    \n            // 存储文件状态，防止通过属性直接修改\n            statusMap[ this.id ] = WUFile.Status.INITED;\n    \n            this.source = source;\n            this.loaded = 0;\n    \n            this.on( 'error', function( msg ) {\n                this.setStatus( WUFile.Status.ERROR, msg );\n            });\n        }\n    \n        $.extend( WUFile.prototype, {\n    \n            /**\n             * 设置状态，状态变化时会触发`change`事件。\n             * @method setStatus\n             * @grammar setStatus( status[, statusText] );\n             * @param {File.Status|String} status [文件状态值](#WebUploader:File:File.Status)\n             * @param {String} [statusText=''] 状态说明，常在error时使用，用http, abort,server等来标记是由于什么原因导致文件错误。\n             */\n            setStatus: function( status, text ) {\n    \n                var prevStatus = statusMap[ this.id ];\n    \n                typeof text !== 'undefined' && (this.statusText = text);\n    \n                if ( status !== prevStatus ) {\n                    statusMap[ this.id ] = status;\n                    /**\n                     * 文件状态变化\n                     * @event statuschange\n                     */\n                    this.trigger( 'statuschange', status, prevStatus );\n                }\n    \n            },\n    \n            /**\n             * 获取文件状态\n             * @return {File.Status}\n             * @example\n                     文件状态具体包括以下几种类型：\n                     {\n                         // 初始化\n                        INITED:     0,\n                        // 已入队列\n                        QUEUED:     1,\n                        // 正在上传\n                        PROGRESS:     2,\n                        // 上传出错\n                        ERROR:         3,\n                        // 上传成功\n                        COMPLETE:     4,\n                        // 上传取消\n                        CANCELLED:     5\n                    }\n             */\n            getStatus: function() {\n                return statusMap[ this.id ];\n            },\n    \n            /**\n             * 获取文件原始信息。\n             * @return {*}\n             */\n            getSource: function() {\n                return this.source;\n            },\n    \n            destroy: function() {\n                this.off();\n                delete statusMap[ this.id ];\n            }\n        });\n    \n        Mediator.installTo( WUFile.prototype );\n    \n        /**\n         * 文件状态值，具体包括以下几种类型：\n         * * `inited` 初始状态\n         * * `queued` 已经进入队列, 等待上传\n         * * `progress` 上传中\n         * * `complete` 上传完成。\n         * * `error` 上传出错，可重试\n         * * `interrupt` 上传中断，可续传。\n         * * `invalid` 文件不合格，不能重试上传。会自动从队列中移除。\n         * * `cancelled` 文件被移除。\n         * @property {Object} Status\n         * @namespace File\n         * @class File\n         * @static\n         */\n        WUFile.Status = {\n            INITED:     'inited',    // 初始状态\n            QUEUED:     'queued',    // 已经进入队列, 等待上传\n            PROGRESS:   'progress',    // 上传中\n            ERROR:      'error',    // 上传出错，可重试\n            COMPLETE:   'complete',    // 上传完成。\n            CANCELLED:  'cancelled',    // 上传取消。\n            INTERRUPT:  'interrupt',    // 上传中断，可续传。\n            INVALID:    'invalid'    // 文件不合格，不能重试上传。\n        };\n    \n        return WUFile;\n    });\n    \n    /**\n     * @fileOverview 文件队列\n     */\n    define('queue',[\n        'base',\n        'mediator',\n        'file'\n    ], function( Base, Mediator, WUFile ) {\n    \n        var $ = Base.$,\n            STATUS = WUFile.Status;\n    \n        /**\n         * 文件队列, 用来存储各个状态中的文件。\n         * @class Queue\n         * @extends Mediator\n         */\n        function Queue() {\n    \n            /**\n             * 统计文件数。\n             * * `numOfQueue` 队列中的文件数。\n             * * `numOfSuccess` 上传成功的文件数\n             * * `numOfCancel` 被取消的文件数\n             * * `numOfProgress` 正在上传中的文件数\n             * * `numOfUploadFailed` 上传错误的文件数。\n             * * `numOfInvalid` 无效的文件数。\n             * * `numofDeleted` 被移除的文件数。\n             * @property {Object} stats\n             */\n            this.stats = {\n                numOfQueue: 0,\n                numOfSuccess: 0,\n                numOfCancel: 0,\n                numOfProgress: 0,\n                numOfUploadFailed: 0,\n                numOfInvalid: 0,\n                numofDeleted: 0,\n                numofInterrupt: 0\n            };\n    \n            // 上传队列，仅包括等待上传的文件\n            this._queue = [];\n    \n            // 存储所有文件\n            this._map = {};\n        }\n    \n        $.extend( Queue.prototype, {\n    \n            /**\n             * 将新文件加入对队列尾部\n             *\n             * @method append\n             * @param  {File} file   文件对象\n             */\n            append: function( file ) {\n                this._queue.push( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 将新文件加入对队列头部\n             *\n             * @method prepend\n             * @param  {File} file   文件对象\n             */\n            prepend: function( file ) {\n                this._queue.unshift( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 获取文件对象\n             *\n             * @method getFile\n             * @param  {String} fileId   文件ID\n             * @return {File}\n             */\n            getFile: function( fileId ) {\n                if ( typeof fileId !== 'string' ) {\n                    return fileId;\n                }\n                return this._map[ fileId ];\n            },\n    \n            /**\n             * 从队列中取出一个指定状态的文件。\n             * @grammar fetch( status ) => File\n             * @method fetch\n             * @param {String} status [文件状态值](#WebUploader:File:File.Status)\n             * @return {File} [File](#WebUploader:File)\n             */\n            fetch: function( status ) {\n                var len = this._queue.length,\n                    i, file;\n    \n                status = status || STATUS.QUEUED;\n    \n                for ( i = 0; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( status === file.getStatus() ) {\n                        return file;\n                    }\n                }\n    \n                return null;\n            },\n    \n            /**\n             * 对队列进行排序，能够控制文件上传顺序。\n             * @grammar sort( fn ) => undefined\n             * @method sort\n             * @param {Function} fn 排序方法\n             */\n            sort: function( fn ) {\n                if ( typeof fn === 'function' ) {\n                    this._queue.sort( fn );\n                }\n            },\n    \n            /**\n             * 获取指定类型的文件列表, 列表中每一个成员为[File](#WebUploader:File)对象。\n             * @grammar getFiles( [status1[, status2 ...]] ) => Array\n             * @method getFiles\n             * @param {String} [status] [文件状态值](#WebUploader:File:File.Status)\n             */\n            getFiles: function() {\n                var sts = [].slice.call( arguments, 0 ),\n                    ret = [],\n                    i = 0,\n                    len = this._queue.length,\n                    file;\n    \n                for ( ; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( sts.length && !~$.inArray( file.getStatus(), sts ) ) {\n                        continue;\n                    }\n    \n                    ret.push( file );\n                }\n    \n                return ret;\n            },\n    \n            /**\n             * 在队列中删除文件。\n             * @grammar removeFile( file ) => Array\n             * @method removeFile\n             * @param {File} 文件对象。\n             */\n            removeFile: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( existing ) {\n                    delete this._map[ file.id ];\n                    file.destroy();\n                    this.stats.numofDeleted++;\n                }\n            },\n    \n            _fileAdded: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( !existing ) {\n                    this._map[ file.id ] = file;\n    \n                    file.on( 'statuschange', function( cur, pre ) {\n                        me._onFileStatusChange( cur, pre );\n                    });\n                }\n            },\n    \n            _onFileStatusChange: function( curStatus, preStatus ) {\n                var stats = this.stats;\n    \n                switch ( preStatus ) {\n                    case STATUS.PROGRESS:\n                        stats.numOfProgress--;\n                        break;\n    \n                    case STATUS.QUEUED:\n                        stats.numOfQueue --;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed--;\n                        break;\n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid--;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt--;\n                        break;\n                }\n    \n                switch ( curStatus ) {\n                    case STATUS.QUEUED:\n                        stats.numOfQueue++;\n                        break;\n    \n                    case STATUS.PROGRESS:\n                        stats.numOfProgress++;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed++;\n                        break;\n    \n                    case STATUS.COMPLETE:\n                        stats.numOfSuccess++;\n                        break;\n    \n                    case STATUS.CANCELLED:\n                        stats.numOfCancel++;\n                        break;\n    \n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid++;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt++;\n                        break;\n                }\n            }\n    \n        });\n    \n        Mediator.installTo( Queue.prototype );\n    \n        return Queue;\n    });\n    /**\n     * @fileOverview 队列\n     */\n    define('widgets/queue',[\n        'base',\n        'uploader',\n        'queue',\n        'file',\n        'lib/file',\n        'runtime/client',\n        'widgets/widget'\n    ], function( Base, Uploader, Queue, WUFile, File, RuntimeClient ) {\n    \n        var $ = Base.$,\n            rExt = /\\.\\w+$/,\n            Status = WUFile.Status;\n    \n        return Uploader.register({\n            name: 'queue',\n    \n            init: function( opts ) {\n                var me = this,\n                    deferred, len, i, item, arr, accept, runtime;\n    \n                if ( $.isPlainObject( opts.accept ) ) {\n                    opts.accept = [ opts.accept ];\n                }\n    \n                // accept中的中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].extensions;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = '\\\\.' + arr.join(',')\n                                .replace( /,/g, '$|\\\\.' )\n                                .replace( /\\*/g, '.*' ) + '$';\n                    }\n    \n                    me.accept = new RegExp( accept, 'i' );\n                }\n    \n                me.queue = new Queue();\n                me.stats = me.queue.stats;\n    \n                // 如果当前不是html5运行时，那就算了。\n                // 不执行后续操作\n                if ( this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                // 创建一个 html5 运行时的 placeholder\n                // 以至于外部添加原生 File 对象的时候能正确包裹一下供 webuploader 使用。\n                deferred = Base.Deferred();\n                this.placeholder = runtime = new RuntimeClient('Placeholder');\n                runtime.connectRuntime({\n                    runtimeOrder: 'html5'\n                }, function() {\n                    me._ruid = runtime.getRuid();\n                    deferred.resolve();\n                });\n                return deferred.promise();\n            },\n    \n    \n            // 为了支持外部直接添加一个原生File对象。\n            _wrapFile: function( file ) {\n                if ( !(file instanceof WUFile) ) {\n    \n                    if ( !(file instanceof File) ) {\n                        if ( !this._ruid ) {\n                            throw new Error('Can\\'t add external files.');\n                        }\n                        file = new File( this._ruid, file );\n                    }\n    \n                    file = new WUFile( file );\n                }\n    \n                return file;\n            },\n    \n            // 判断文件是否可以被加入队列\n            acceptFile: function( file ) {\n                var invalid = !file || !file.size || this.accept &&\n    \n                        // 如果名字中有后缀，才做后缀白名单处理。\n                        rExt.exec( file.name ) && !this.accept.test( file.name );\n    \n                return !invalid;\n            },\n    \n    \n            /**\n             * @event beforeFileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列之前触发，此事件的handler返回值为`false`，则此文件不会被添加进入队列。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event fileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列以后触发。\n             * @for  Uploader\n             */\n    \n            _addFile: function( file ) {\n                var me = this;\n    \n                file = me._wrapFile( file );\n    \n                // 不过类型判断允许不允许，先派送 `beforeFileQueued`\n                if ( !me.owner.trigger( 'beforeFileQueued', file ) ) {\n                    return;\n                }\n    \n                // 类型不匹配，则派送错误事件，并返回。\n                if ( !me.acceptFile( file ) ) {\n                    me.owner.trigger( 'error', 'Q_TYPE_DENIED', file );\n                    return;\n                }\n    \n                me.queue.append( file );\n                me.owner.trigger( 'fileQueued', file );\n                return file;\n            },\n    \n            getFile: function( fileId ) {\n                return this.queue.getFile( fileId );\n            },\n    \n            /**\n             * @event filesQueued\n             * @param {File} files 数组，内容为原始File(lib/File）对象。\n             * @description 当一批文件添加进队列以后触发。\n             * @for  Uploader\n             */\n            \n            /**\n             * @property {Boolean} [auto=false]\n             * @namespace options\n             * @for Uploader\n             * @description 设置为 true 后，不需要手动调用上传，有文件选择即开始上传。\n             * \n             */\n    \n            /**\n             * @method addFiles\n             * @grammar addFiles( file ) => undefined\n             * @grammar addFiles( [file1, file2 ...] ) => undefined\n             * @param {Array of File or File} [files] Files 对象 数组\n             * @description 添加文件到队列\n             * @for  Uploader\n             */\n            addFile: function( files ) {\n                var me = this;\n    \n                if ( !files.length ) {\n                    files = [ files ];\n                }\n    \n                files = $.map( files, function( file ) {\n                    return me._addFile( file );\n                });\n    \n                me.owner.trigger( 'filesQueued', files );\n    \n                if ( me.options.auto ) {\n                    setTimeout(function() {\n                        me.request('start-upload');\n                    }, 20 );\n                }\n            },\n    \n            getStats: function() {\n                return this.stats;\n            },\n    \n            /**\n             * @event fileDequeued\n             * @param {File} file File对象\n             * @description 当文件被移除队列后触发。\n             * @for  Uploader\n             */\n    \n             /**\n             * @method removeFile\n             * @grammar removeFile( file ) => undefined\n             * @grammar removeFile( id ) => undefined\n             * @grammar removeFile( file, true ) => undefined\n             * @grammar removeFile( id, true ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 移除某一文件, 默认只会标记文件状态为已取消，如果第二个参数为 `true` 则会从 queue 中移除。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.removeFile( file );\n             * })\n             */\n            removeFile: function( file, remove ) {\n                var me = this;\n    \n                file = file.id ? file : me.queue.getFile( file );\n    \n                this.request( 'cancel-file', file );\n    \n                if ( remove ) {\n                    this.queue.removeFile( file );\n                }\n            },\n    \n            /**\n             * @method getFiles\n             * @grammar getFiles() => Array\n             * @grammar getFiles( status1, status2, status... ) => Array\n             * @description 返回指定状态的文件集合，不传参数将返回所有状态的文件。\n             * @for  Uploader\n             * @example\n             * console.log( uploader.getFiles() );    // => all files\n             * console.log( uploader.getFiles('error') )    // => all error files.\n             */\n            getFiles: function() {\n                return this.queue.getFiles.apply( this.queue, arguments );\n            },\n    \n            fetchFile: function() {\n                return this.queue.fetch.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @method retry\n             * @grammar retry() => undefined\n             * @grammar retry( file ) => undefined\n             * @description 重试上传，重试指定文件，或者从出错的文件开始重新上传。\n             * @for  Uploader\n             * @example\n             * function retry() {\n             *     uploader.retry();\n             * }\n             */\n            retry: function( file, noForceStart ) {\n                var me = this,\n                    files, i, len;\n    \n                if ( file ) {\n                    file = file.id ? file : me.queue.getFile( file );\n                    file.setStatus( Status.QUEUED );\n                    noForceStart || me.request('start-upload');\n                    return;\n                }\n    \n                files = me.queue.getFiles( Status.ERROR );\n                i = 0;\n                len = files.length;\n    \n                for ( ; i < len; i++ ) {\n                    file = files[ i ];\n                    file.setStatus( Status.QUEUED );\n                }\n    \n                me.request('start-upload');\n            },\n    \n            /**\n             * @method sort\n             * @grammar sort( fn ) => undefined\n             * @description 排序队列中的文件，在上传之前调整可以控制上传顺序。\n             * @for  Uploader\n             */\n            sortFiles: function() {\n                return this.queue.sort.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @event reset\n             * @description 当 uploader 被重置的时候触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @method reset\n             * @grammar reset() => undefined\n             * @description 重置uploader。目前只重置了队列。\n             * @for  Uploader\n             * @example\n             * uploader.reset();\n             */\n            reset: function() {\n                this.owner.trigger('reset');\n                this.queue = new Queue();\n                this.stats = this.queue.stats;\n            },\n    \n            destroy: function() {\n                this.reset();\n                this.placeholder && this.placeholder.destroy();\n            }\n        });\n    \n    });\n    /**\n     * @fileOverview 添加获取Runtime相关信息的方法。\n     */\n    define('widgets/runtime',[\n        'uploader',\n        'runtime/runtime',\n        'widgets/widget'\n    ], function( Uploader, Runtime ) {\n    \n        Uploader.support = function() {\n            return Runtime.hasRuntime.apply( Runtime, arguments );\n        };\n    \n        /**\n         * @property {Object} [runtimeOrder=html5,flash]\n         * @namespace options\n         * @for Uploader\n         * @description 指定运行时启动顺序。默认会想尝试 html5 是否支持，如果支持则使用 html5, 否则则使用 flash.\n         *\n         * 可以将此值设置成 `flash`，来强制使用 flash 运行时。\n         */\n    \n        return Uploader.register({\n            name: 'runtime',\n    \n            init: function() {\n                if ( !this.predictRuntimeType() ) {\n                    throw Error('Runtime Error');\n                }\n            },\n    \n            /**\n             * 预测Uploader将采用哪个`Runtime`\n             * @grammar predictRuntimeType() => String\n             * @method predictRuntimeType\n             * @for  Uploader\n             */\n            predictRuntimeType: function() {\n                var orders = this.options.runtimeOrder || Runtime.orders,\n                    type = this.type,\n                    i, len;\n    \n                if ( !type ) {\n                    orders = orders.split( /\\s*,\\s*/g );\n    \n                    for ( i = 0, len = orders.length; i < len; i++ ) {\n                        if ( Runtime.hasRuntime( orders[ i ] ) ) {\n                            this.type = type = orders[ i ];\n                            break;\n                        }\n                    }\n                }\n    \n                return type;\n            }\n        });\n    });\n    /**\n     * @fileOverview Transport\n     */\n    define('lib/transport',[\n        'base',\n        'runtime/client',\n        'mediator'\n    ], function( Base, RuntimeClient, Mediator ) {\n    \n        var $ = Base.$;\n    \n        function Transport( opts ) {\n            var me = this;\n    \n            opts = me.options = $.extend( true, {}, Transport.options, opts || {} );\n            RuntimeClient.call( this, 'Transport' );\n    \n            this._blob = null;\n            this._formData = opts.formData || {};\n            this._headers = opts.headers || {};\n    \n            this.on( 'progress', this._timeout );\n            this.on( 'load error', function() {\n                me.trigger( 'progress', 1 );\n                clearTimeout( me._timer );\n            });\n        }\n    \n        Transport.options = {\n            server: '',\n            method: 'POST',\n    \n            // 跨域时，是否允许携带cookie, 只有html5 runtime才有效\n            withCredentials: false,\n            fileVal: 'file',\n            timeout: 2 * 60 * 1000,    // 2分钟\n            formData: {},\n            headers: {},\n            sendAsBinary: false\n        };\n    \n        $.extend( Transport.prototype, {\n    \n            // 添加Blob, 只能添加一次，最后一次有效。\n            appendBlob: function( key, blob, filename ) {\n                var me = this,\n                    opts = me.options;\n    \n                if ( me.getRuid() ) {\n                    me.disconnectRuntime();\n                }\n    \n                // 连接到blob归属的同一个runtime.\n                me.connectRuntime( blob.ruid, function() {\n                    me.exec('init');\n                });\n    \n                me._blob = blob;\n                opts.fileVal = key || opts.fileVal;\n                opts.filename = filename || opts.filename;\n            },\n    \n            // 添加其他字段\n            append: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._formData, key );\n                } else {\n                    this._formData[ key ] = value;\n                }\n            },\n    \n            setRequestHeader: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._headers, key );\n                } else {\n                    this._headers[ key ] = value;\n                }\n            },\n    \n            send: function( method ) {\n                this.exec( 'send', method );\n                this._timeout();\n            },\n    \n            abort: function() {\n                clearTimeout( this._timer );\n                return this.exec('abort');\n            },\n    \n            destroy: function() {\n                this.trigger('destroy');\n                this.off();\n                this.exec('destroy');\n                this.disconnectRuntime();\n            },\n    \n            getResponse: function() {\n                return this.exec('getResponse');\n            },\n    \n            getResponseAsJson: function() {\n                return this.exec('getResponseAsJson');\n            },\n    \n            getStatus: function() {\n                return this.exec('getStatus');\n            },\n    \n            _timeout: function() {\n                var me = this,\n                    duration = me.options.timeout;\n    \n                if ( !duration ) {\n                    return;\n                }\n    \n                clearTimeout( me._timer );\n                me._timer = setTimeout(function() {\n                    me.abort();\n                    me.trigger( 'error', 'timeout' );\n                }, duration );\n            }\n    \n        });\n    \n        // 让Transport具备事件功能。\n        Mediator.installTo( Transport.prototype );\n    \n        return Transport;\n    });\n    /**\n     * @fileOverview 负责文件上传相关。\n     */\n    define('widgets/upload',[\n        'base',\n        'uploader',\n        'file',\n        'lib/transport',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile, Transport ) {\n    \n        var $ = Base.$,\n            isPromise = Base.isPromise,\n            Status = WUFile.Status;\n    \n        // 添加默认配置项\n        $.extend( Uploader.options, {\n    \n    \n            /**\n             * @property {Boolean} [prepareNextFile=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否允许在文件传输时提前把下一个文件准备好。\n             * 对于一个文件的准备工作比较耗时，比如图片压缩，md5序列化。\n             * 如果能提前在当前文件传输期处理，可以节省总体耗时。\n             */\n            prepareNextFile: false,\n    \n            /**\n             * @property {Boolean} [chunked=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否要分片处理大文件上传。\n             */\n            chunked: false,\n    \n            /**\n             * @property {Boolean} [chunkSize=5242880]\n             * @namespace options\n             * @for Uploader\n             * @description 如果要分片，分多大一片？ 默认大小为5M.\n             */\n            chunkSize: 5 * 1024 * 1024,\n    \n            /**\n             * @property {Boolean} [chunkRetry=2]\n             * @namespace options\n             * @for Uploader\n             * @description 如果某个分片由于网络问题出错，允许自动重传多少次？\n             */\n            chunkRetry: 2,\n    \n            /**\n             * @property {Boolean} [threads=3]\n             * @namespace options\n             * @for Uploader\n             * @description 上传并发数。允许同时最大上传进程数。\n             */\n            threads: 3,\n    \n    \n            /**\n             * @property {Object} [formData={}]\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传请求的参数表，每次发送都会发送此对象中的参数。\n             */\n            formData: {}\n    \n            /**\n             * @property {Object} [fileVal='file']\n             * @namespace options\n             * @for Uploader\n             * @description 设置文件上传域的name。\n             */\n    \n            /**\n             * @property {Object} [method='POST']\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传方式，`POST`或者`GET`。\n             */\n    \n            /**\n             * @property {Object} [sendAsBinary=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否已二进制的流的方式发送文件，这样整个上传内容`php://input`都为文件内容，\n             * 其他参数在$_GET数组中。\n             */\n        });\n    \n        // 负责将文件切片。\n        function CuteFile( file, chunkSize ) {\n            var pending = [],\n                blob = file.source,\n                total = blob.size,\n                chunks = chunkSize ? Math.ceil( total / chunkSize ) : 1,\n                start = 0,\n                index = 0,\n                len, api;\n    \n            api = {\n                file: file,\n    \n                has: function() {\n                    return !!pending.length;\n                },\n    \n                shift: function() {\n                    return pending.shift();\n                },\n    \n                unshift: function( block ) {\n                    pending.unshift( block );\n                }\n            };\n    \n            while ( index < chunks ) {\n                len = Math.min( chunkSize, total - start );\n    \n                pending.push({\n                    file: file,\n                    start: start,\n                    end: chunkSize ? (start + len) : total,\n                    total: total,\n                    chunks: chunks,\n                    chunk: index++,\n                    cuted: api\n                });\n                start += len;\n            }\n    \n            file.blocks = pending.concat();\n            file.remaning = pending.length;\n    \n            return api;\n        }\n    \n        Uploader.register({\n            name: 'upload',\n    \n            init: function() {\n                var owner = this.owner,\n                    me = this;\n    \n                this.runing = false;\n                this.progress = false;\n    \n                owner\n                    .on( 'startUpload', function() {\n                        me.progress = true;\n                    })\n                    .on( 'uploadFinished', function() {\n                        me.progress = false;\n                    });\n    \n                // 记录当前正在传的数据，跟threads相关\n                this.pool = [];\n    \n                // 缓存分好片的文件。\n                this.stack = [];\n    \n                // 缓存即将上传的文件。\n                this.pending = [];\n    \n                // 跟踪还有多少分片在上传中但是没有完成上传。\n                this.remaning = 0;\n                this.__tick = Base.bindFn( this._tick, this );\n    \n                owner.on( 'uploadComplete', function( file ) {\n    \n                    // 把其他块取消了。\n                    file.blocks && $.each( file.blocks, function( _, v ) {\n                        v.transport && (v.transport.abort(), v.transport.destroy());\n                        delete v.transport;\n                    });\n    \n                    delete file.blocks;\n                    delete file.remaning;\n                });\n            },\n    \n            reset: function() {\n                this.request( 'stop-upload', true );\n                this.runing = false;\n                this.pool = [];\n                this.stack = [];\n                this.pending = [];\n                this.remaning = 0;\n                this._trigged = false;\n                this._promise = null;\n            },\n    \n            /**\n             * @event startUpload\n             * @description 当开始上传流程时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 开始上传。此方法可以从初始状态调用开始上传流程，也可以从暂停状态调用，继续上传流程。\n             *\n             * 可以指定开始某一个文件。\n             * @grammar upload() => undefined\n             * @grammar upload( file | fileId) => undefined\n             * @method upload\n             * @for  Uploader\n             */\n            startUpload: function(file) {\n                var me = this;\n    \n                // 移出invalid的文件\n                $.each( me.request( 'get-files', Status.INVALID ), function() {\n                    me.request( 'remove-file', this );\n                });\n    \n                // 如果指定了开始某个文件，则只开始指定文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if (file.getStatus() === Status.INTERRUPT) {\n                        $.each( me.pool, function( _, v ) {\n    \n                            // 之前暂停过。\n                            if (v.file !== file) {\n                                return;\n                            }\n    \n                            v.transport && v.transport.send();\n                        });\n    \n                        file.setStatus( Status.QUEUED );\n                    } else if (file.getStatus() === Status.PROGRESS) {\n                        return;\n                    } else {\n                        file.setStatus( Status.QUEUED );\n                    }\n                } else {\n                    $.each( me.request( 'get-files', [ Status.INITED ] ), function() {\n                        this.setStatus( Status.QUEUED );\n                    });\n                }\n    \n                if ( me.runing ) {\n                    return;\n                }\n    \n                me.runing = true;\n    \n                var files = [];\n    \n                // 如果有暂停的，则续传\n                $.each( me.pool, function( _, v ) {\n                    var file = v.file;\n    \n                    if ( file.getStatus() === Status.INTERRUPT ) {\n                        files.push(file);\n                        me._trigged = false;\n                        v.transport && v.transport.send();\n                    }\n                });\n    \n                var file;\n                while ( (file = files.shift()) ) {\n                    file.setStatus( Status.PROGRESS );\n                }\n    \n                file || $.each( me.request( 'get-files',\n                        Status.INTERRUPT ), function() {\n                    this.setStatus( Status.PROGRESS );\n                });\n    \n                me._trigged = false;\n                Base.nextTick( me.__tick );\n                me.owner.trigger('startUpload');\n            },\n    \n            /**\n             * @event stopUpload\n             * @description 当开始上传流程暂停时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 暂停上传。第一个参数为是否中断上传当前正在上传的文件。\n             *\n             * 如果第一个参数是文件，则只暂停指定文件。\n             * @grammar stop() => undefined\n             * @grammar stop( true ) => undefined\n             * @grammar stop( file ) => undefined\n             * @method stop\n             * @for  Uploader\n             */\n            stopUpload: function( file, interrupt ) {\n                var me = this;\n    \n                if (file === true) {\n                    interrupt = file;\n                    file = null;\n                }\n    \n                if ( me.runing === false ) {\n                    return;\n                }\n    \n                // 如果只是暂停某个文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if ( file.getStatus() !== Status.PROGRESS &&\n                            file.getStatus() !== Status.QUEUED ) {\n                        return;\n                    }\n    \n                    file.setStatus( Status.INTERRUPT );\n                    $.each( me.pool, function( _, v ) {\n    \n                        // 只 abort 指定的文件。\n                        if (v.file !== file) {\n                            return;\n                        }\n    \n                        v.transport && v.transport.abort();\n                        me._putback(v);\n                        me._popBlock(v);\n                    });\n    \n                    return Base.nextTick( me.__tick );\n                }\n    \n                me.runing = false;\n    \n                if (this._promise && this._promise.file) {\n                    this._promise.file.setStatus( Status.INTERRUPT );\n                }\n    \n                interrupt && $.each( me.pool, function( _, v ) {\n                    v.transport && v.transport.abort();\n                    v.file.setStatus( Status.INTERRUPT );\n                });\n    \n                me.owner.trigger('stopUpload');\n            },\n    \n            /**\n             * @method cancelFile\n             * @grammar cancelFile( file ) => undefined\n             * @grammar cancelFile( id ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 标记文件状态为已取消, 同时将中断文件传输。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.cancelFile( file );\n             * })\n             */\n            cancelFile: function( file ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                file.setStatus( Status.CANCELLED );\n                this.owner.trigger( 'fileDequeued', file );\n            },\n    \n            /**\n             * 判断`Uplaode`r是否正在上传中。\n             * @grammar isInProgress() => Boolean\n             * @method isInProgress\n             * @for  Uploader\n             */\n            isInProgress: function() {\n                return !!this.progress;\n            },\n    \n            _getStats: function() {\n                return this.request('get-stats');\n            },\n    \n            /**\n             * 掉过一个文件上传，直接标记指定文件为已上传状态。\n             * @grammar skipFile( file ) => undefined\n             * @method skipFile\n             * @for  Uploader\n             */\n            skipFile: function( file, status ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                file.setStatus( status || Status.COMPLETE );\n                file.skipped = true;\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                this.owner.trigger( 'uploadSkip', file );\n            },\n    \n            /**\n             * @event uploadFinished\n             * @description 当所有文件上传结束时触发。\n             * @for  Uploader\n             */\n            _tick: function() {\n                var me = this,\n                    opts = me.options,\n                    fn, val;\n    \n                // 上一个promise还没有结束，则等待完成后再执行。\n                if ( me._promise ) {\n                    return me._promise.always( me.__tick );\n                }\n    \n                // 还有位置，且还有文件要处理的话。\n                if ( me.pool.length < opts.threads && (val = me._nextBlock()) ) {\n                    me._trigged = false;\n    \n                    fn = function( val ) {\n                        me._promise = null;\n    \n                        // 有可能是reject过来的，所以要检测val的类型。\n                        val && val.file && me._startSend( val );\n                        Base.nextTick( me.__tick );\n                    };\n    \n                    me._promise = isPromise( val ) ? val.always( fn ) : fn( val );\n    \n                // 没有要上传的了，且没有正在传输的了。\n                } else if ( !me.remaning && !me._getStats().numOfQueue &&\n                    !me._getStats().numofInterrupt ) {\n                    me.runing = false;\n    \n                    me._trigged || Base.nextTick(function() {\n                        me.owner.trigger('uploadFinished');\n                    });\n                    me._trigged = true;\n                }\n            },\n    \n            _putback: function(block) {\n                var idx;\n    \n                block.cuted.unshift(block);\n                idx = this.stack.indexOf(block.cuted);\n    \n                if (!~idx) {\n                    this.stack.unshift(block.cuted);\n                }\n            },\n    \n            _getStack: function() {\n                var i = 0,\n                    act;\n    \n                while ( (act = this.stack[ i++ ]) ) {\n                    if ( act.has() && act.file.getStatus() === Status.PROGRESS ) {\n                        return act;\n                    } else if (!act.has() ||\n                            act.file.getStatus() !== Status.PROGRESS &&\n                            act.file.getStatus() !== Status.INTERRUPT ) {\n    \n                        // 把已经处理完了的，或者，状态为非 progress（上传中）、\n                        // interupt（暂停中） 的移除。\n                        this.stack.splice( --i, 1 );\n                    }\n                }\n    \n                return null;\n            },\n    \n            _nextBlock: function() {\n                var me = this,\n                    opts = me.options,\n                    act, next, done, preparing;\n    \n                // 如果当前文件还有没有需要传输的，则直接返回剩下的。\n                if ( (act = this._getStack()) ) {\n    \n                    // 是否提前准备下一个文件\n                    if ( opts.prepareNextFile && !me.pending.length ) {\n                        me._prepareNextFile();\n                    }\n    \n                    return act.shift();\n    \n                // 否则，如果正在运行，则准备下一个文件，并等待完成后返回下个分片。\n                } else if ( me.runing ) {\n    \n                    // 如果缓存中有，则直接在缓存中取，没有则去queue中取。\n                    if ( !me.pending.length && me._getStats().numOfQueue ) {\n                        me._prepareNextFile();\n                    }\n    \n                    next = me.pending.shift();\n                    done = function( file ) {\n                        if ( !file ) {\n                            return null;\n                        }\n    \n                        act = CuteFile( file, opts.chunked ? opts.chunkSize : 0 );\n                        me.stack.push(act);\n                        return act.shift();\n                    };\n    \n                    // 文件可能还在prepare中，也有可能已经完全准备好了。\n                    if ( isPromise( next) ) {\n                        preparing = next.file;\n                        next = next[ next.pipe ? 'pipe' : 'then' ]( done );\n                        next.file = preparing;\n                        return next;\n                    }\n    \n                    return done( next );\n                }\n            },\n    \n    \n            /**\n             * @event uploadStart\n             * @param {File} file File对象\n             * @description 某个文件开始上传前触发，一个文件只会触发一次。\n             * @for  Uploader\n             */\n            _prepareNextFile: function() {\n                var me = this,\n                    file = me.request('fetch-file'),\n                    pending = me.pending,\n                    promise;\n    \n                if ( file ) {\n                    promise = me.request( 'before-send-file', file, function() {\n    \n                        // 有可能文件被skip掉了。文件被skip掉后，状态坑定不是Queued.\n                        if ( file.getStatus() === Status.PROGRESS ||\n                            file.getStatus() === Status.INTERRUPT ) {\n                            return file;\n                        }\n    \n                        return me._finishFile( file );\n                    });\n    \n                    me.owner.trigger( 'uploadStart', file );\n                    file.setStatus( Status.PROGRESS );\n    \n                    promise.file = file;\n    \n                    // 如果还在pending中，则替换成文件本身。\n                    promise.done(function() {\n                        var idx = $.inArray( promise, pending );\n    \n                        ~idx && pending.splice( idx, 1, file );\n                    });\n    \n                    // befeore-send-file的钩子就有错误发生。\n                    promise.fail(function( reason ) {\n                        file.setStatus( Status.ERROR, reason );\n                        me.owner.trigger( 'uploadError', file, reason );\n                        me.owner.trigger( 'uploadComplete', file );\n                    });\n    \n                    pending.push( promise );\n                }\n            },\n    \n            // 让出位置了，可以让其他分片开始上传\n            _popBlock: function( block ) {\n                var idx = $.inArray( block, this.pool );\n    \n                this.pool.splice( idx, 1 );\n                block.file.remaning--;\n                this.remaning--;\n            },\n    \n            // 开始上传，可以被掉过。如果promise被reject了，则表示跳过此分片。\n            _startSend: function( block ) {\n                var me = this,\n                    file = block.file,\n                    promise;\n    \n                // 有可能在 before-send-file 的 promise 期间改变了文件状态。\n                // 如：暂停，取消\n                // 我们不能中断 promise, 但是可以在 promise 完后，不做上传操作。\n                if ( file.getStatus() !== Status.PROGRESS ) {\n    \n                    // 如果是中断，则还需要放回去。\n                    if (file.getStatus() === Status.INTERRUPT) {\n                        me._putback(block);\n                    }\n    \n                    return;\n                }\n    \n                me.pool.push( block );\n                me.remaning++;\n    \n                // 如果没有分片，则直接使用原始的。\n                // 不会丢失content-type信息。\n                block.blob = block.chunks === 1 ? file.source :\n                        file.source.slice( block.start, block.end );\n    \n                // hook, 每个分片发送之前可能要做些异步的事情。\n                promise = me.request( 'before-send', block, function() {\n    \n                    // 有可能文件已经上传出错了，所以不需要再传输了。\n                    if ( file.getStatus() === Status.PROGRESS ) {\n                        me._doSend( block );\n                    } else {\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n    \n                // 如果为fail了，则跳过此分片。\n                promise.fail(function() {\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file ).always(function() {\n                            block.percentage = 1;\n                            me._popBlock( block );\n                            me.owner.trigger( 'uploadComplete', file );\n                            Base.nextTick( me.__tick );\n                        });\n                    } else {\n                        block.percentage = 1;\n                        me.updateFileProgress( file );\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n            },\n    \n    \n            /**\n             * @event uploadBeforeSend\n             * @param {Object} object\n             * @param {Object} data 默认的上传参数，可以扩展此对象来控制上传参数。\n             * @param {Object} headers 可以扩展此对象来控制上传头部。\n             * @description 当某个文件的分块在发送前触发，主要用来询问是否要添加附带参数，大文件在开起分片上传的前提下此事件可能会触发多次。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadAccept\n             * @param {Object} object\n             * @param {Object} ret 服务端的返回数据，json格式，如果服务端不是json格式，从ret._raw中取数据，自行解析。\n             * @description 当某个文件上传到服务端响应后，会派送此事件来询问服务端响应是否有效。如果此事件handler返回值为`false`, 则此文件将派送`server`类型的`uploadError`事件。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadProgress\n             * @param {File} file File对象\n             * @param {Number} percentage 上传进度\n             * @description 上传过程中触发，携带上传进度。\n             * @for  Uploader\n             */\n    \n    \n            /**\n             * @event uploadError\n             * @param {File} file File对象\n             * @param {String} reason 出错的code\n             * @description 当文件上传出错时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadSuccess\n             * @param {File} file File对象\n             * @param {Object} response 服务端返回的数据\n             * @description 当文件上传成功时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadComplete\n             * @param {File} [file] File对象\n             * @description 不管成功或者失败，文件上传完成时触发。\n             * @for  Uploader\n             */\n    \n            // 做上传操作。\n            _doSend: function( block ) {\n                var me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    file = block.file,\n                    tr = new Transport( opts ),\n                    data = $.extend({}, opts.formData ),\n                    headers = $.extend({}, opts.headers ),\n                    requestAccept, ret;\n    \n                block.transport = tr;\n    \n                tr.on( 'destroy', function() {\n                    delete block.transport;\n                    me._popBlock( block );\n                    Base.nextTick( me.__tick );\n                });\n    \n                // 广播上传进度。以文件为单位。\n                tr.on( 'progress', function( percentage ) {\n                    block.percentage = percentage;\n                    me.updateFileProgress( file );\n                });\n    \n                // 用来询问，是否返回的结果是有错误的。\n                requestAccept = function( reject ) {\n                    var fn;\n    \n                    ret = tr.getResponseAsJson() || {};\n                    ret._raw = tr.getResponse();\n                    fn = function( value ) {\n                        reject = value;\n                    };\n    \n                    // 服务端响应了，不代表成功了，询问是否响应正确。\n                    if ( !owner.trigger( 'uploadAccept', block, ret, fn ) ) {\n                        reject = reject || 'server';\n                    }\n    \n                    return reject;\n                };\n    \n                // 尝试重试，然后广播文件上传出错。\n                tr.on( 'error', function( type, flag ) {\n                    block.retried = block.retried || 0;\n    \n                    // 自动重试\n                    if ( block.chunks > 1 && ~'http,abort'.indexOf( type ) &&\n                            block.retried < opts.chunkRetry ) {\n    \n                        block.retried++;\n                        tr.send();\n    \n                    } else {\n    \n                        // http status 500 ~ 600\n                        if ( !flag && type === 'server' ) {\n                            type = requestAccept( type );\n                        }\n    \n                        file.setStatus( Status.ERROR, type );\n                        owner.trigger( 'uploadError', file, type );\n                        owner.trigger( 'uploadComplete', file );\n                    }\n                });\n    \n                // 上传成功\n                tr.on( 'load', function() {\n                    var reason;\n    \n                    // 如果非预期，转向上传出错。\n                    if ( (reason = requestAccept()) ) {\n                        tr.trigger( 'error', reason, true );\n                        return;\n                    }\n    \n                    // 全部上传完成。\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file, ret );\n                    } else {\n                        tr.destroy();\n                    }\n                });\n    \n                // 配置默认的上传字段。\n                data = $.extend( data, {\n                    id: file.id,\n                    name: file.name,\n                    type: file.type,\n                    lastModifiedDate: file.lastModifiedDate,\n                    size: file.size\n                });\n    \n                block.chunks > 1 && $.extend( data, {\n                    chunks: block.chunks,\n                    chunk: block.chunk\n                });\n    \n                // 在发送之间可以添加字段什么的。。。\n                // 如果默认的字段不够使用，可以通过监听此事件来扩展\n                owner.trigger( 'uploadBeforeSend', block, data, headers );\n    \n                // 开始发送。\n                tr.appendBlob( opts.fileVal, block.blob, file.name );\n                tr.append( data );\n                tr.setRequestHeader( headers );\n                tr.send();\n            },\n    \n            // 完成上传。\n            _finishFile: function( file, ret, hds ) {\n                var owner = this.owner;\n    \n                return owner\n                        .request( 'after-send-file', arguments, function() {\n                            file.setStatus( Status.COMPLETE );\n                            owner.trigger( 'uploadSuccess', file, ret, hds );\n                        })\n                        .fail(function( reason ) {\n    \n                            // 如果外部已经标记为invalid什么的，不再改状态。\n                            if ( file.getStatus() === Status.PROGRESS ) {\n                                file.setStatus( Status.ERROR, reason );\n                            }\n    \n                            owner.trigger( 'uploadError', file, reason );\n                        })\n                        .always(function() {\n                            owner.trigger( 'uploadComplete', file );\n                        });\n            },\n    \n            updateFileProgress: function(file) {\n                var totalPercent = 0,\n                    uploaded = 0;\n    \n                if (!file.blocks) {\n                    return;\n                }\n    \n                $.each( file.blocks, function( _, v ) {\n                    uploaded += (v.percentage || 0) * (v.end - v.start);\n                });\n    \n                totalPercent = uploaded / file.size;\n                this.owner.trigger( 'uploadProgress', file, totalPercent || 0 );\n            }\n    \n        });\n    });\n    /**\n     * @fileOverview 各种验证，包括文件总大小是否超出、单文件是否超出和文件是否重复。\n     */\n    \n    define('widgets/validator',[\n        'base',\n        'uploader',\n        'file',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile ) {\n    \n        var $ = Base.$,\n            validators = {},\n            api;\n    \n        /**\n         * @event error\n         * @param {String} type 错误类型。\n         * @description 当validate不通过时，会以派送错误事件的形式通知调用者。通过`upload.on('error', handler)`可以捕获到此类错误，目前有以下错误会在特定的情况下派送错来。\n         *\n         * * `Q_EXCEED_NUM_LIMIT` 在设置了`fileNumLimit`且尝试给`uploader`添加的文件数量超出这个值时派送。\n         * * `Q_EXCEED_SIZE_LIMIT` 在设置了`Q_EXCEED_SIZE_LIMIT`且尝试给`uploader`添加的文件总大小超出这个值时派送。\n         * * `Q_TYPE_DENIED` 当文件类型不满足时触发。。\n         * @for  Uploader\n         */\n    \n        // 暴露给外面的api\n        api = {\n    \n            // 添加验证器\n            addValidator: function( type, cb ) {\n                validators[ type ] = cb;\n            },\n    \n            // 移除验证器\n            removeValidator: function( type ) {\n                delete validators[ type ];\n            }\n        };\n    \n        // 在Uploader初始化的时候启动Validators的初始化\n        Uploader.register({\n            name: 'validator',\n    \n            init: function() {\n                var me = this;\n                Base.nextTick(function() {\n                    $.each( validators, function() {\n                        this.call( me.owner );\n                    });\n                });\n            }\n        });\n    \n        /**\n         * @property {int} [fileNumLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总数量, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileNumLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                count = 0,\n                max = parseInt( opts.fileNumLimit, 10 ),\n                flag = true;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n    \n                if ( count >= max && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_NUM_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return count >= max ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function() {\n                count++;\n            });\n    \n            uploader.on( 'fileDequeued', function() {\n                count--;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n    \n        /**\n         * @property {int} [fileSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                count = 0,\n                max = parseInt( opts.fileSizeLimit, 10 ),\n                flag = true;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var invalid = count + file.size > max;\n    \n                if ( invalid && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_SIZE_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return invalid ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                count += file.size;\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                count -= file.size;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n        /**\n         * @property {int} [fileSingleSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证单个文件大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSingleSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                max = opts.fileSingleSizeLimit;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n    \n                if ( file.size > max ) {\n                    file.setStatus( WUFile.Status.INVALID, 'exceed_size' );\n                    this.trigger( 'error', 'F_EXCEED_SIZE', max, file );\n                    return false;\n                }\n    \n            });\n    \n        });\n    \n        /**\n         * @property {Boolean} [duplicate=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 去重， 根据文件名字、文件大小和最后修改时间来生成hash Key.\n         */\n        api.addValidator( 'duplicate', function() {\n            var uploader = this,\n                opts = uploader.options,\n                mapping = {};\n    \n            if ( opts.duplicate ) {\n                return;\n            }\n    \n            function hashString( str ) {\n                var hash = 0,\n                    i = 0,\n                    len = str.length,\n                    _char;\n    \n                for ( ; i < len; i++ ) {\n                    _char = str.charCodeAt( i );\n                    hash = _char + (hash << 6) + (hash << 16) - hash;\n                }\n    \n                return hash;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var hash = file.__hash || (file.__hash = hashString( file.name +\n                        file.size + file.lastModifiedDate ));\n    \n                // 已经重复了\n                if ( mapping[ hash ] ) {\n                    this.trigger( 'error', 'F_DUPLICATE', file );\n                    return false;\n                }\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (mapping[ hash ] = true);\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (delete mapping[ hash ]);\n            });\n    \n            uploader.on( 'reset', function() {\n                mapping = {};\n            });\n        });\n    \n        return api;\n    });\n    \n    /**\n     * @fileOverview Md5\n     */\n    define('lib/md5',[\n        'runtime/client',\n        'mediator'\n    ], function( RuntimeClient, Mediator ) {\n    \n        function Md5() {\n            RuntimeClient.call( this, 'Md5' );\n        }\n    \n        // 让 Md5 具备事件功能。\n        Mediator.installTo( Md5.prototype );\n    \n        Md5.prototype.loadFromBlob = function( blob ) {\n            var me = this;\n    \n            if ( me.getRuid() ) {\n                me.disconnectRuntime();\n            }\n    \n            // 连接到blob归属的同一个runtime.\n            me.connectRuntime( blob.ruid, function() {\n                me.exec('init');\n                me.exec( 'loadFromBlob', blob );\n            });\n        };\n    \n        Md5.prototype.getResult = function() {\n            return this.exec('getResult');\n        };\n    \n        return Md5;\n    });\n    /**\n     * @fileOverview 图片操作, 负责预览图片和上传前压缩图片\n     */\n    define('widgets/md5',[\n        'base',\n        'uploader',\n        'lib/md5',\n        'lib/blob',\n        'widgets/widget'\n    ], function( Base, Uploader, Md5, Blob ) {\n    \n        return Uploader.register({\n            name: 'md5',\n    \n    \n            /**\n             * 计算文件 md5 值，返回一个 promise 对象，可以监听 progress 进度。\n             *\n             *\n             * @method md5File\n             * @grammar md5File( file[, start[, end]] ) => promise\n             * @for Uploader\n             * @example\n             *\n             * uploader.on( 'fileQueued', function( file ) {\n             *     var $li = ...;\n             *\n             *     uploader.md5File( file )\n             *\n             *         // 及时显示进度\n             *         .progress(function(percentage) {\n             *             console.log('Percentage:', percentage);\n             *         })\n             *\n             *         // 完成\n             *         .then(function(val) {\n             *             console.log('md5 result:', val);\n             *         });\n             *\n             * });\n             */\n            md5File: function( file, start, end ) {\n                var md5 = new Md5(),\n                    deferred = Base.Deferred(),\n                    blob = (file instanceof Blob) ? file :\n                        this.request( 'get-file', file ).source;\n    \n                md5.on( 'progress load', function( e ) {\n                    e = e || {};\n                    deferred.notify( e.total ? e.loaded / e.total : 1 );\n                });\n    \n                md5.on( 'complete', function() {\n                    deferred.resolve( md5.getResult() );\n                });\n    \n                md5.on( 'error', function( reason ) {\n                    deferred.reject( reason );\n                });\n    \n                if ( arguments.length > 1 ) {\n                    start = start || 0;\n                    end = end || 0;\n                    start < 0 && (start = blob.size + start);\n                    end < 0 && (end = blob.size + end);\n                    end = Math.min( end, blob.size );\n                    blob = blob.slice( start, end );\n                }\n    \n                md5.loadFromBlob( blob );\n    \n                return deferred.promise();\n            }\n        });\n    });\n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/compbase',[],function() {\n    \n        function CompBase( owner, runtime ) {\n    \n            this.owner = owner;\n            this.options = owner.options;\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.getRuid = function() {\n                return runtime.uid;\n            };\n    \n            this.trigger = function() {\n                return owner.trigger.apply( owner, arguments );\n            };\n        }\n    \n        return CompBase;\n    });\n    /**\n     * @fileOverview Html5Runtime\n     */\n    define('runtime/html5/runtime',[\n        'base',\n        'runtime/runtime',\n        'runtime/compbase'\n    ], function( Base, Runtime, CompBase ) {\n    \n        var type = 'html5',\n            components = {};\n    \n        function Html5Runtime() {\n            var pool = {},\n                me = this,\n                destroy = this.destroy;\n    \n            Runtime.apply( me, arguments );\n            me.type = type;\n    \n    \n            // 这个方法的调用者，实际上是RuntimeClient\n            me.exec = function( comp, fn/*, args...*/) {\n                var client = this,\n                    uid = client.uid,\n                    args = Base.slice( arguments, 2 ),\n                    instance;\n    \n                if ( components[ comp ] ) {\n                    instance = pool[ uid ] = pool[ uid ] ||\n                            new components[ comp ]( client, me );\n    \n                    if ( instance[ fn ] ) {\n                        return instance[ fn ].apply( instance, args );\n                    }\n                }\n            };\n    \n            me.destroy = function() {\n                // @todo 删除池子中的所有实例\n                return destroy && destroy.apply( this, arguments );\n            };\n        }\n    \n        Base.inherits( Runtime, {\n            constructor: Html5Runtime,\n    \n            // 不需要连接其他程序，直接执行callback\n            init: function() {\n                var me = this;\n                setTimeout(function() {\n                    me.trigger('ready');\n                }, 1 );\n            }\n    \n        });\n    \n        // 注册Components\n        Html5Runtime.register = function( name, component ) {\n            var klass = components[ name ] = Base.inherits( CompBase, component );\n            return klass;\n        };\n    \n        // 注册html5运行时。\n        // 只有在支持的前提下注册。\n        if ( window.Blob && window.FileReader && window.DataView ) {\n            Runtime.addRuntime( type, Html5Runtime );\n        }\n    \n        return Html5Runtime;\n    });\n    /**\n     * @fileOverview Blob Html实现\n     */\n    define('runtime/html5/blob',[\n        'runtime/html5/runtime',\n        'lib/blob'\n    ], function( Html5Runtime, Blob ) {\n    \n        return Html5Runtime.register( 'Blob', {\n            slice: function( start, end ) {\n                var blob = this.owner.source,\n                    slice = blob.slice || blob.webkitSlice || blob.mozSlice;\n    \n                blob = slice.call( blob, start, end );\n    \n                return new Blob( this.getRuid(), blob );\n            }\n        });\n    });\n    /**\n     * @fileOverview FilePaste\n     */\n    define('runtime/html5/dnd',[\n        'base',\n        'runtime/html5/runtime',\n        'lib/file'\n    ], function( Base, Html5Runtime, File ) {\n    \n        var $ = Base.$,\n            prefix = 'webuploader-dnd-';\n    \n        return Html5Runtime.register( 'DragAndDrop', {\n            init: function() {\n                var elem = this.elem = this.options.container;\n    \n                this.dragEnterHandler = Base.bindFn( this._dragEnterHandler, this );\n                this.dragOverHandler = Base.bindFn( this._dragOverHandler, this );\n                this.dragLeaveHandler = Base.bindFn( this._dragLeaveHandler, this );\n                this.dropHandler = Base.bindFn( this._dropHandler, this );\n                this.dndOver = false;\n    \n                elem.on( 'dragenter', this.dragEnterHandler );\n                elem.on( 'dragover', this.dragOverHandler );\n                elem.on( 'dragleave', this.dragLeaveHandler );\n                elem.on( 'drop', this.dropHandler );\n    \n                if ( this.options.disableGlobalDnd ) {\n                    $( document ).on( 'dragover', this.dragOverHandler );\n                    $( document ).on( 'drop', this.dropHandler );\n                }\n            },\n    \n            _dragEnterHandler: function( e ) {\n                var me = this,\n                    denied = me._denied || false,\n                    items;\n    \n                e = e.originalEvent || e;\n    \n                if ( !me.dndOver ) {\n                    me.dndOver = true;\n    \n                    // 注意只有 chrome 支持。\n                    items = e.dataTransfer.items;\n    \n                    if ( items && items.length ) {\n                        me._denied = denied = !me.trigger( 'accept', items );\n                    }\n    \n                    me.elem.addClass( prefix + 'over' );\n                    me.elem[ denied ? 'addClass' :\n                            'removeClass' ]( prefix + 'denied' );\n                }\n    \n                e.dataTransfer.dropEffect = denied ? 'none' : 'copy';\n    \n                return false;\n            },\n    \n            _dragOverHandler: function( e ) {\n                // 只处理框内的。\n                var parentElem = this.elem.parent().get( 0 );\n                if ( parentElem && !$.contains( parentElem, e.currentTarget ) ) {\n                    return false;\n                }\n    \n                clearTimeout( this._leaveTimer );\n                this._dragEnterHandler.call( this, e );\n    \n                return false;\n            },\n    \n            _dragLeaveHandler: function() {\n                var me = this,\n                    handler;\n    \n                handler = function() {\n                    me.dndOver = false;\n                    me.elem.removeClass( prefix + 'over ' + prefix + 'denied' );\n                };\n    \n                clearTimeout( me._leaveTimer );\n                me._leaveTimer = setTimeout( handler, 100 );\n                return false;\n            },\n    \n            _dropHandler: function( e ) {\n                var me = this,\n                    ruid = me.getRuid(),\n                    parentElem = me.elem.parent().get( 0 ),\n                    dataTransfer, data;\n    \n                // 只处理框内的。\n                if ( parentElem && !$.contains( parentElem, e.currentTarget ) ) {\n                    return false;\n                }\n    \n                e = e.originalEvent || e;\n                dataTransfer = e.dataTransfer;\n    \n                // 如果是页面内拖拽，还不能处理，不阻止事件。\n                // 此处 ie11 下会报参数错误，\n                try {\n                    data = dataTransfer.getData('text/html');\n                } catch( err ) {\n                }\n    \n                if ( data ) {\n                    return;\n                }\n    \n                me._getTansferFiles( dataTransfer, function( results ) {\n                    me.trigger( 'drop', $.map( results, function( file ) {\n                        return new File( ruid, file );\n                    }) );\n                });\n    \n                me.dndOver = false;\n                me.elem.removeClass( prefix + 'over' );\n                return false;\n            },\n    \n            // 如果传入 callback 则去查看文件夹，否则只管当前文件夹。\n            _getTansferFiles: function( dataTransfer, callback ) {\n                var results  = [],\n                    promises = [],\n                    items, files, file, item, i, len, canAccessFolder;\n    \n                items = dataTransfer.items;\n                files = dataTransfer.files;\n    \n                canAccessFolder = !!(items && items[ 0 ].webkitGetAsEntry);\n    \n                for ( i = 0, len = files.length; i < len; i++ ) {\n                    file = files[ i ];\n                    item = items && items[ i ];\n    \n                    if ( canAccessFolder && item.webkitGetAsEntry().isDirectory ) {\n    \n                        promises.push( this._traverseDirectoryTree(\n                                item.webkitGetAsEntry(), results ) );\n                    } else {\n                        results.push( file );\n                    }\n                }\n    \n                Base.when.apply( Base, promises ).done(function() {\n    \n                    if ( !results.length ) {\n                        return;\n                    }\n    \n                    callback( results );\n                });\n            },\n    \n            _traverseDirectoryTree: function( entry, results ) {\n                var deferred = Base.Deferred(),\n                    me = this;\n    \n                if ( entry.isFile ) {\n                    entry.file(function( file ) {\n                        results.push( file );\n                        deferred.resolve();\n                    });\n                } else if ( entry.isDirectory ) {\n                    entry.createReader().readEntries(function( entries ) {\n                        var len = entries.length,\n                            promises = [],\n                            arr = [],    // 为了保证顺序。\n                            i;\n    \n                        for ( i = 0; i < len; i++ ) {\n                            promises.push( me._traverseDirectoryTree(\n                                    entries[ i ], arr ) );\n                        }\n    \n                        Base.when.apply( Base, promises ).then(function() {\n                            results.push.apply( results, arr );\n                            deferred.resolve();\n                        }, deferred.reject );\n                    });\n                }\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                var elem = this.elem;\n    \n                // 还没 init 就调用 destroy\n                if (!elem) {\n                    return;\n                }\n                \n                elem.off( 'dragenter', this.dragEnterHandler );\n                elem.off( 'dragover', this.dragOverHandler );\n                elem.off( 'dragleave', this.dragLeaveHandler );\n                elem.off( 'drop', this.dropHandler );\n    \n                if ( this.options.disableGlobalDnd ) {\n                    $( document ).off( 'dragover', this.dragOverHandler );\n                    $( document ).off( 'drop', this.dropHandler );\n                }\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview FilePaste\n     */\n    define('runtime/html5/filepaste',[\n        'base',\n        'runtime/html5/runtime',\n        'lib/file'\n    ], function( Base, Html5Runtime, File ) {\n    \n        return Html5Runtime.register( 'FilePaste', {\n            init: function() {\n                var opts = this.options,\n                    elem = this.elem = opts.container,\n                    accept = '.*',\n                    arr, i, len, item;\n    \n                // accetp的mimeTypes中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].mimeTypes;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = arr.join(',');\n                        accept = accept.replace( /,/g, '|' ).replace( /\\*/g, '.*' );\n                    }\n                }\n                this.accept = accept = new RegExp( accept, 'i' );\n                this.hander = Base.bindFn( this._pasteHander, this );\n                elem.on( 'paste', this.hander );\n            },\n    \n            _pasteHander: function( e ) {\n                var allowed = [],\n                    ruid = this.getRuid(),\n                    items, item, blob, i, len;\n    \n                e = e.originalEvent || e;\n                items = e.clipboardData.items;\n    \n                for ( i = 0, len = items.length; i < len; i++ ) {\n                    item = items[ i ];\n    \n                    if ( item.kind !== 'file' || !(blob = item.getAsFile()) ) {\n                        continue;\n                    }\n    \n                    allowed.push( new File( ruid, blob ) );\n                }\n    \n                if ( allowed.length ) {\n                    // 不阻止非文件粘贴（文字粘贴）的事件冒泡\n                    e.preventDefault();\n                    e.stopPropagation();\n                    this.trigger( 'paste', allowed );\n                }\n            },\n    \n            destroy: function() {\n                this.elem.off( 'paste', this.hander );\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview FilePicker\n     */\n    define('runtime/html5/filepicker',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var $ = Base.$;\n    \n        return Html5Runtime.register( 'FilePicker', {\n            init: function() {\n                var container = this.getRuntime().getContainer(),\n                    me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    label = this.label = $( document.createElement('label') ),\n                    input =  this.input = $( document.createElement('input') ),\n                    arr, i, len, mouseHandler;\n    \n                input.attr( 'type', 'file' );\n                input.attr( 'name', opts.name );\n                input.addClass('webuploader-element-invisible');\n    \n                label.on( 'click', function() {\n                    input.trigger('click');\n                });\n    \n                label.css({\n                    opacity: 0,\n                    width: '100%',\n                    height: '100%',\n                    display: 'block',\n                    cursor: 'pointer',\n                    background: '#ffffff'\n                });\n    \n                if ( opts.multiple ) {\n                    input.attr( 'multiple', 'multiple' );\n                }\n    \n                // @todo Firefox不支持单独指定后缀\n                if ( opts.accept && opts.accept.length > 0 ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        arr.push( opts.accept[ i ].mimeTypes );\n                    }\n    \n                    input.attr( 'accept', arr.join(',') );\n                }\n    \n                container.append( input );\n                container.append( label );\n    \n                mouseHandler = function( e ) {\n                    owner.trigger( e.type );\n                };\n    \n                input.on( 'change', function( e ) {\n                    var fn = arguments.callee,\n                        clone;\n    \n                    me.files = e.target.files;\n    \n                    // reset input\n                    clone = this.cloneNode( true );\n                    clone.value = null;\n                    this.parentNode.replaceChild( clone, this );\n    \n                    input.off();\n                    input = $( clone ).on( 'change', fn )\n                            .on( 'mouseenter mouseleave', mouseHandler );\n    \n                    owner.trigger('change');\n                });\n    \n                label.on( 'mouseenter mouseleave', mouseHandler );\n    \n            },\n    \n    \n            getFiles: function() {\n                return this.files;\n            },\n    \n            destroy: function() {\n                this.input.off();\n                this.label.off();\n            }\n        });\n    });\n    /**\n     * Terms:\n     *\n     * Uint8Array, FileReader, BlobBuilder, atob, ArrayBuffer\n     * @fileOverview Image控件\n     */\n    define('runtime/html5/util',[\n        'base'\n    ], function( Base ) {\n    \n        var urlAPI = window.createObjectURL && window ||\n                window.URL && URL.revokeObjectURL && URL ||\n                window.webkitURL,\n            createObjectURL = Base.noop,\n            revokeObjectURL = createObjectURL;\n    \n        if ( urlAPI ) {\n    \n            // 更安全的方式调用，比如android里面就能把context改成其他的对象。\n            createObjectURL = function() {\n                return urlAPI.createObjectURL.apply( urlAPI, arguments );\n            };\n    \n            revokeObjectURL = function() {\n                return urlAPI.revokeObjectURL.apply( urlAPI, arguments );\n            };\n        }\n    \n        return {\n            createObjectURL: createObjectURL,\n            revokeObjectURL: revokeObjectURL,\n    \n            dataURL2Blob: function( dataURI ) {\n                var byteStr, intArray, ab, i, mimetype, parts;\n    \n                parts = dataURI.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    byteStr = atob( parts[ 1 ] );\n                } else {\n                    byteStr = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                ab = new ArrayBuffer( byteStr.length );\n                intArray = new Uint8Array( ab );\n    \n                for ( i = 0; i < byteStr.length; i++ ) {\n                    intArray[ i ] = byteStr.charCodeAt( i );\n                }\n    \n                mimetype = parts[ 0 ].split(':')[ 1 ].split(';')[ 0 ];\n    \n                return this.arrayBufferToBlob( ab, mimetype );\n            },\n    \n            dataURL2ArrayBuffer: function( dataURI ) {\n                var byteStr, intArray, i, parts;\n    \n                parts = dataURI.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    byteStr = atob( parts[ 1 ] );\n                } else {\n                    byteStr = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                intArray = new Uint8Array( byteStr.length );\n    \n                for ( i = 0; i < byteStr.length; i++ ) {\n                    intArray[ i ] = byteStr.charCodeAt( i );\n                }\n    \n                return intArray.buffer;\n            },\n    \n            arrayBufferToBlob: function( buffer, type ) {\n                var builder = window.BlobBuilder || window.WebKitBlobBuilder,\n                    bb;\n    \n                // android不支持直接new Blob, 只能借助blobbuilder.\n                if ( builder ) {\n                    bb = new builder();\n                    bb.append( buffer );\n                    return bb.getBlob( type );\n                }\n    \n                return new Blob([ buffer ], type ? { type: type } : {} );\n            },\n    \n            // 抽出来主要是为了解决android下面canvas.toDataUrl不支持jpeg.\n            // 你得到的结果是png.\n            canvasToDataUrl: function( canvas, type, quality ) {\n                return canvas.toDataURL( type, quality / 100 );\n            },\n    \n            // imagemeat会复写这个方法，如果用户选择加载那个文件了的话。\n            parseMeta: function( blob, callback ) {\n                callback( false, {});\n            },\n    \n            // imagemeat会复写这个方法，如果用户选择加载那个文件了的话。\n            updateImageHead: function( data ) {\n                return data;\n            }\n        };\n    });\n    /**\n     * Terms:\n     *\n     * Uint8Array, FileReader, BlobBuilder, atob, ArrayBuffer\n     * @fileOverview Image控件\n     */\n    define('runtime/html5/imagemeta',[\n        'runtime/html5/util'\n    ], function( Util ) {\n    \n        var api;\n    \n        api = {\n            parsers: {\n                0xffe1: []\n            },\n    \n            maxMetaDataSize: 262144,\n    \n            parse: function( blob, cb ) {\n                var me = this,\n                    fr = new FileReader();\n    \n                fr.onload = function() {\n                    cb( false, me._parse( this.result ) );\n                    fr = fr.onload = fr.onerror = null;\n                };\n    \n                fr.onerror = function( e ) {\n                    cb( e.message );\n                    fr = fr.onload = fr.onerror = null;\n                };\n    \n                blob = blob.slice( 0, me.maxMetaDataSize );\n                fr.readAsArrayBuffer( blob.getSource() );\n            },\n    \n            _parse: function( buffer, noParse ) {\n                if ( buffer.byteLength < 6 ) {\n                    return;\n                }\n    \n                var dataview = new DataView( buffer ),\n                    offset = 2,\n                    maxOffset = dataview.byteLength - 4,\n                    headLength = offset,\n                    ret = {},\n                    markerBytes, markerLength, parsers, i;\n    \n                if ( dataview.getUint16( 0 ) === 0xffd8 ) {\n    \n                    while ( offset < maxOffset ) {\n                        markerBytes = dataview.getUint16( offset );\n    \n                        if ( markerBytes >= 0xffe0 && markerBytes <= 0xffef ||\n                                markerBytes === 0xfffe ) {\n    \n                            markerLength = dataview.getUint16( offset + 2 ) + 2;\n    \n                            if ( offset + markerLength > dataview.byteLength ) {\n                                break;\n                            }\n    \n                            parsers = api.parsers[ markerBytes ];\n    \n                            if ( !noParse && parsers ) {\n                                for ( i = 0; i < parsers.length; i += 1 ) {\n                                    parsers[ i ].call( api, dataview, offset,\n                                            markerLength, ret );\n                                }\n                            }\n    \n                            offset += markerLength;\n                            headLength = offset;\n                        } else {\n                            break;\n                        }\n                    }\n    \n                    if ( headLength > 6 ) {\n                        if ( buffer.slice ) {\n                            ret.imageHead = buffer.slice( 2, headLength );\n                        } else {\n                            // Workaround for IE10, which does not yet\n                            // support ArrayBuffer.slice:\n                            ret.imageHead = new Uint8Array( buffer )\n                                    .subarray( 2, headLength );\n                        }\n                    }\n                }\n    \n                return ret;\n            },\n    \n            updateImageHead: function( buffer, head ) {\n                var data = this._parse( buffer, true ),\n                    buf1, buf2, bodyoffset;\n    \n    \n                bodyoffset = 2;\n                if ( data.imageHead ) {\n                    bodyoffset = 2 + data.imageHead.byteLength;\n                }\n    \n                if ( buffer.slice ) {\n                    buf2 = buffer.slice( bodyoffset );\n                } else {\n                    buf2 = new Uint8Array( buffer ).subarray( bodyoffset );\n                }\n    \n                buf1 = new Uint8Array( head.byteLength + 2 + buf2.byteLength );\n    \n                buf1[ 0 ] = 0xFF;\n                buf1[ 1 ] = 0xD8;\n                buf1.set( new Uint8Array( head ), 2 );\n                buf1.set( new Uint8Array( buf2 ), head.byteLength + 2 );\n    \n                return buf1.buffer;\n            }\n        };\n    \n        Util.parseMeta = function() {\n            return api.parse.apply( api, arguments );\n        };\n    \n        Util.updateImageHead = function() {\n            return api.updateImageHead.apply( api, arguments );\n        };\n    \n        return api;\n    });\n    /**\n     * 代码来自于：https://github.com/blueimp/JavaScript-Load-Image\n     * 暂时项目中只用了orientation.\n     *\n     * 去除了 Exif Sub IFD Pointer, GPS Info IFD Pointer, Exif Thumbnail.\n     * @fileOverview EXIF解析\n     */\n    \n    // Sample\n    // ====================================\n    // Make : Apple\n    // Model : iPhone 4S\n    // Orientation : 1\n    // XResolution : 72 [72/1]\n    // YResolution : 72 [72/1]\n    // ResolutionUnit : 2\n    // Software : QuickTime 7.7.1\n    // DateTime : 2013:09:01 22:53:55\n    // ExifIFDPointer : 190\n    // ExposureTime : 0.058823529411764705 [1/17]\n    // FNumber : 2.4 [12/5]\n    // ExposureProgram : Normal program\n    // ISOSpeedRatings : 800\n    // ExifVersion : 0220\n    // DateTimeOriginal : 2013:09:01 22:52:51\n    // DateTimeDigitized : 2013:09:01 22:52:51\n    // ComponentsConfiguration : YCbCr\n    // ShutterSpeedValue : 4.058893515764426\n    // ApertureValue : 2.5260688216892597 [4845/1918]\n    // BrightnessValue : -0.3126686601998395\n    // MeteringMode : Pattern\n    // Flash : Flash did not fire, compulsory flash mode\n    // FocalLength : 4.28 [107/25]\n    // SubjectArea : [4 values]\n    // FlashpixVersion : 0100\n    // ColorSpace : 1\n    // PixelXDimension : 2448\n    // PixelYDimension : 3264\n    // SensingMethod : One-chip color area sensor\n    // ExposureMode : 0\n    // WhiteBalance : Auto white balance\n    // FocalLengthIn35mmFilm : 35\n    // SceneCaptureType : Standard\n    define('runtime/html5/imagemeta/exif',[\n        'base',\n        'runtime/html5/imagemeta'\n    ], function( Base, ImageMeta ) {\n    \n        var EXIF = {};\n    \n        EXIF.ExifMap = function() {\n            return this;\n        };\n    \n        EXIF.ExifMap.prototype.map = {\n            'Orientation': 0x0112\n        };\n    \n        EXIF.ExifMap.prototype.get = function( id ) {\n            return this[ id ] || this[ this.map[ id ] ];\n        };\n    \n        EXIF.exifTagTypes = {\n            // byte, 8-bit unsigned int:\n            1: {\n                getValue: function( dataView, dataOffset ) {\n                    return dataView.getUint8( dataOffset );\n                },\n                size: 1\n            },\n    \n            // ascii, 8-bit byte:\n            2: {\n                getValue: function( dataView, dataOffset ) {\n                    return String.fromCharCode( dataView.getUint8( dataOffset ) );\n                },\n                size: 1,\n                ascii: true\n            },\n    \n            // short, 16 bit int:\n            3: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint16( dataOffset, littleEndian );\n                },\n                size: 2\n            },\n    \n            // long, 32 bit int:\n            4: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint32( dataOffset, littleEndian );\n                },\n                size: 4\n            },\n    \n            // rational = two long values,\n            // first is numerator, second is denominator:\n            5: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint32( dataOffset, littleEndian ) /\n                        dataView.getUint32( dataOffset + 4, littleEndian );\n                },\n                size: 8\n            },\n    \n            // slong, 32 bit signed int:\n            9: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getInt32( dataOffset, littleEndian );\n                },\n                size: 4\n            },\n    \n            // srational, two slongs, first is numerator, second is denominator:\n            10: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getInt32( dataOffset, littleEndian ) /\n                        dataView.getInt32( dataOffset + 4, littleEndian );\n                },\n                size: 8\n            }\n        };\n    \n        // undefined, 8-bit byte, value depending on field:\n        EXIF.exifTagTypes[ 7 ] = EXIF.exifTagTypes[ 1 ];\n    \n        EXIF.getExifValue = function( dataView, tiffOffset, offset, type, length,\n                littleEndian ) {\n    \n            var tagType = EXIF.exifTagTypes[ type ],\n                tagSize, dataOffset, values, i, str, c;\n    \n            if ( !tagType ) {\n                Base.log('Invalid Exif data: Invalid tag type.');\n                return;\n            }\n    \n            tagSize = tagType.size * length;\n    \n            // Determine if the value is contained in the dataOffset bytes,\n            // or if the value at the dataOffset is a pointer to the actual data:\n            dataOffset = tagSize > 4 ? tiffOffset + dataView.getUint32( offset + 8,\n                    littleEndian ) : (offset + 8);\n    \n            if ( dataOffset + tagSize > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid data offset.');\n                return;\n            }\n    \n            if ( length === 1 ) {\n                return tagType.getValue( dataView, dataOffset, littleEndian );\n            }\n    \n            values = [];\n    \n            for ( i = 0; i < length; i += 1 ) {\n                values[ i ] = tagType.getValue( dataView,\n                        dataOffset + i * tagType.size, littleEndian );\n            }\n    \n            if ( tagType.ascii ) {\n                str = '';\n    \n                // Concatenate the chars:\n                for ( i = 0; i < values.length; i += 1 ) {\n                    c = values[ i ];\n    \n                    // Ignore the terminating NULL byte(s):\n                    if ( c === '\\u0000' ) {\n                        break;\n                    }\n                    str += c;\n                }\n    \n                return str;\n            }\n            return values;\n        };\n    \n        EXIF.parseExifTag = function( dataView, tiffOffset, offset, littleEndian,\n                data ) {\n    \n            var tag = dataView.getUint16( offset, littleEndian );\n            data.exif[ tag ] = EXIF.getExifValue( dataView, tiffOffset, offset,\n                    dataView.getUint16( offset + 2, littleEndian ),    // tag type\n                    dataView.getUint32( offset + 4, littleEndian ),    // tag length\n                    littleEndian );\n        };\n    \n        EXIF.parseExifTags = function( dataView, tiffOffset, dirOffset,\n                littleEndian, data ) {\n    \n            var tagsNumber, dirEndOffset, i;\n    \n            if ( dirOffset + 6 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid directory offset.');\n                return;\n            }\n    \n            tagsNumber = dataView.getUint16( dirOffset, littleEndian );\n            dirEndOffset = dirOffset + 2 + 12 * tagsNumber;\n    \n            if ( dirEndOffset + 4 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid directory size.');\n                return;\n            }\n    \n            for ( i = 0; i < tagsNumber; i += 1 ) {\n                this.parseExifTag( dataView, tiffOffset,\n                        dirOffset + 2 + 12 * i,    // tag offset\n                        littleEndian, data );\n            }\n    \n            // Return the offset to the next directory:\n            return dataView.getUint32( dirEndOffset, littleEndian );\n        };\n    \n        // EXIF.getExifThumbnail = function(dataView, offset, length) {\n        //     var hexData,\n        //         i,\n        //         b;\n        //     if (!length || offset + length > dataView.byteLength) {\n        //         Base.log('Invalid Exif data: Invalid thumbnail data.');\n        //         return;\n        //     }\n        //     hexData = [];\n        //     for (i = 0; i < length; i += 1) {\n        //         b = dataView.getUint8(offset + i);\n        //         hexData.push((b < 16 ? '0' : '') + b.toString(16));\n        //     }\n        //     return 'data:image/jpeg,%' + hexData.join('%');\n        // };\n    \n        EXIF.parseExifData = function( dataView, offset, length, data ) {\n    \n            var tiffOffset = offset + 10,\n                littleEndian, dirOffset;\n    \n            // Check for the ASCII code for \"Exif\" (0x45786966):\n            if ( dataView.getUint32( offset + 4 ) !== 0x45786966 ) {\n                // No Exif data, might be XMP data instead\n                return;\n            }\n            if ( tiffOffset + 8 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid segment size.');\n                return;\n            }\n    \n            // Check for the two null bytes:\n            if ( dataView.getUint16( offset + 8 ) !== 0x0000 ) {\n                Base.log('Invalid Exif data: Missing byte alignment offset.');\n                return;\n            }\n    \n            // Check the byte alignment:\n            switch ( dataView.getUint16( tiffOffset ) ) {\n                case 0x4949:\n                    littleEndian = true;\n                    break;\n    \n                case 0x4D4D:\n                    littleEndian = false;\n                    break;\n    \n                default:\n                    Base.log('Invalid Exif data: Invalid byte alignment marker.');\n                    return;\n            }\n    \n            // Check for the TIFF tag marker (0x002A):\n            if ( dataView.getUint16( tiffOffset + 2, littleEndian ) !== 0x002A ) {\n                Base.log('Invalid Exif data: Missing TIFF marker.');\n                return;\n            }\n    \n            // Retrieve the directory offset bytes, usually 0x00000008 or 8 decimal:\n            dirOffset = dataView.getUint32( tiffOffset + 4, littleEndian );\n            // Create the exif object to store the tags:\n            data.exif = new EXIF.ExifMap();\n            // Parse the tags of the main image directory and retrieve the\n            // offset to the next directory, usually the thumbnail directory:\n            dirOffset = EXIF.parseExifTags( dataView, tiffOffset,\n                    tiffOffset + dirOffset, littleEndian, data );\n    \n            // 尝试读取缩略图\n            // if ( dirOffset ) {\n            //     thumbnailData = {exif: {}};\n            //     dirOffset = EXIF.parseExifTags(\n            //         dataView,\n            //         tiffOffset,\n            //         tiffOffset + dirOffset,\n            //         littleEndian,\n            //         thumbnailData\n            //     );\n    \n            //     // Check for JPEG Thumbnail offset:\n            //     if (thumbnailData.exif[0x0201]) {\n            //         data.exif.Thumbnail = EXIF.getExifThumbnail(\n            //             dataView,\n            //             tiffOffset + thumbnailData.exif[0x0201],\n            //             thumbnailData.exif[0x0202] // Thumbnail data length\n            //         );\n            //     }\n            // }\n        };\n    \n        ImageMeta.parsers[ 0xffe1 ].push( EXIF.parseExifData );\n        return EXIF;\n    });\n    /**\n     * 这个方式性能不行，但是可以解决android里面的toDataUrl的bug\n     * android里面toDataUrl('image/jpege')得到的结果却是png.\n     *\n     * 所以这里没辙，只能借助这个工具\n     * @fileOverview jpeg encoder\n     */\n    define('runtime/html5/jpegencoder',[], function( require, exports, module ) {\n    \n        /*\n          Copyright (c) 2008, Adobe Systems Incorporated\n          All rights reserved.\n    \n          Redistribution and use in source and binary forms, with or without\n          modification, are permitted provided that the following conditions are\n          met:\n    \n          * Redistributions of source code must retain the above copyright notice,\n            this list of conditions and the following disclaimer.\n    \n          * Redistributions in binary form must reproduce the above copyright\n            notice, this list of conditions and the following disclaimer in the\n            documentation and/or other materials provided with the distribution.\n    \n          * Neither the name of Adobe Systems Incorporated nor the names of its\n            contributors may be used to endorse or promote products derived from\n            this software without specific prior written permission.\n    \n          THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n          IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n          THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n          PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n          CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n          EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n          PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n          PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n          LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n          NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n          SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n        */\n        /*\n        JPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009\n    \n        Basic GUI blocking jpeg encoder\n        */\n    \n        function JPEGEncoder(quality) {\n          var self = this;\n            var fround = Math.round;\n            var ffloor = Math.floor;\n            var YTable = new Array(64);\n            var UVTable = new Array(64);\n            var fdtbl_Y = new Array(64);\n            var fdtbl_UV = new Array(64);\n            var YDC_HT;\n            var UVDC_HT;\n            var YAC_HT;\n            var UVAC_HT;\n    \n            var bitcode = new Array(65535);\n            var category = new Array(65535);\n            var outputfDCTQuant = new Array(64);\n            var DU = new Array(64);\n            var byteout = [];\n            var bytenew = 0;\n            var bytepos = 7;\n    \n            var YDU = new Array(64);\n            var UDU = new Array(64);\n            var VDU = new Array(64);\n            var clt = new Array(256);\n            var RGB_YUV_TABLE = new Array(2048);\n            var currentQuality;\n    \n            var ZigZag = [\n                     0, 1, 5, 6,14,15,27,28,\n                     2, 4, 7,13,16,26,29,42,\n                     3, 8,12,17,25,30,41,43,\n                     9,11,18,24,31,40,44,53,\n                    10,19,23,32,39,45,52,54,\n                    20,22,33,38,46,51,55,60,\n                    21,34,37,47,50,56,59,61,\n                    35,36,48,49,57,58,62,63\n                ];\n    \n            var std_dc_luminance_nrcodes = [0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0];\n            var std_dc_luminance_values = [0,1,2,3,4,5,6,7,8,9,10,11];\n            var std_ac_luminance_nrcodes = [0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d];\n            var std_ac_luminance_values = [\n                    0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,\n                    0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,\n                    0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,\n                    0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,\n                    0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,\n                    0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,\n                    0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,\n                    0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,\n                    0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,\n                    0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,\n                    0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,\n                    0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,\n                    0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,\n                    0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,\n                    0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,\n                    0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,\n                    0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,\n                    0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,\n                    0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,\n                    0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,\n                    0xf9,0xfa\n                ];\n    \n            var std_dc_chrominance_nrcodes = [0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0];\n            var std_dc_chrominance_values = [0,1,2,3,4,5,6,7,8,9,10,11];\n            var std_ac_chrominance_nrcodes = [0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77];\n            var std_ac_chrominance_values = [\n                    0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,\n                    0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,\n                    0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,\n                    0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,\n                    0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,\n                    0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,\n                    0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,\n                    0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,\n                    0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,\n                    0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,\n                    0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,\n                    0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,\n                    0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,\n                    0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,\n                    0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,\n                    0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,\n                    0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,\n                    0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,\n                    0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,\n                    0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,\n                    0xf9,0xfa\n                ];\n    \n            function initQuantTables(sf){\n                    var YQT = [\n                        16, 11, 10, 16, 24, 40, 51, 61,\n                        12, 12, 14, 19, 26, 58, 60, 55,\n                        14, 13, 16, 24, 40, 57, 69, 56,\n                        14, 17, 22, 29, 51, 87, 80, 62,\n                        18, 22, 37, 56, 68,109,103, 77,\n                        24, 35, 55, 64, 81,104,113, 92,\n                        49, 64, 78, 87,103,121,120,101,\n                        72, 92, 95, 98,112,100,103, 99\n                    ];\n    \n                    for (var i = 0; i < 64; i++) {\n                        var t = ffloor((YQT[i]*sf+50)/100);\n                        if (t < 1) {\n                            t = 1;\n                        } else if (t > 255) {\n                            t = 255;\n                        }\n                        YTable[ZigZag[i]] = t;\n                    }\n                    var UVQT = [\n                        17, 18, 24, 47, 99, 99, 99, 99,\n                        18, 21, 26, 66, 99, 99, 99, 99,\n                        24, 26, 56, 99, 99, 99, 99, 99,\n                        47, 66, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99\n                    ];\n                    for (var j = 0; j < 64; j++) {\n                        var u = ffloor((UVQT[j]*sf+50)/100);\n                        if (u < 1) {\n                            u = 1;\n                        } else if (u > 255) {\n                            u = 255;\n                        }\n                        UVTable[ZigZag[j]] = u;\n                    }\n                    var aasf = [\n                        1.0, 1.387039845, 1.306562965, 1.175875602,\n                        1.0, 0.785694958, 0.541196100, 0.275899379\n                    ];\n                    var k = 0;\n                    for (var row = 0; row < 8; row++)\n                    {\n                        for (var col = 0; col < 8; col++)\n                        {\n                            fdtbl_Y[k]  = (1.0 / (YTable [ZigZag[k]] * aasf[row] * aasf[col] * 8.0));\n                            fdtbl_UV[k] = (1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0));\n                            k++;\n                        }\n                    }\n                }\n    \n                function computeHuffmanTbl(nrcodes, std_table){\n                    var codevalue = 0;\n                    var pos_in_table = 0;\n                    var HT = new Array();\n                    for (var k = 1; k <= 16; k++) {\n                        for (var j = 1; j <= nrcodes[k]; j++) {\n                            HT[std_table[pos_in_table]] = [];\n                            HT[std_table[pos_in_table]][0] = codevalue;\n                            HT[std_table[pos_in_table]][1] = k;\n                            pos_in_table++;\n                            codevalue++;\n                        }\n                        codevalue*=2;\n                    }\n                    return HT;\n                }\n    \n                function initHuffmanTbl()\n                {\n                    YDC_HT = computeHuffmanTbl(std_dc_luminance_nrcodes,std_dc_luminance_values);\n                    UVDC_HT = computeHuffmanTbl(std_dc_chrominance_nrcodes,std_dc_chrominance_values);\n                    YAC_HT = computeHuffmanTbl(std_ac_luminance_nrcodes,std_ac_luminance_values);\n                    UVAC_HT = computeHuffmanTbl(std_ac_chrominance_nrcodes,std_ac_chrominance_values);\n                }\n    \n                function initCategoryNumber()\n                {\n                    var nrlower = 1;\n                    var nrupper = 2;\n                    for (var cat = 1; cat <= 15; cat++) {\n                        //Positive numbers\n                        for (var nr = nrlower; nr<nrupper; nr++) {\n                            category[32767+nr] = cat;\n                            bitcode[32767+nr] = [];\n                            bitcode[32767+nr][1] = cat;\n                            bitcode[32767+nr][0] = nr;\n                        }\n                        //Negative numbers\n                        for (var nrneg =-(nrupper-1); nrneg<=-nrlower; nrneg++) {\n                            category[32767+nrneg] = cat;\n                            bitcode[32767+nrneg] = [];\n                            bitcode[32767+nrneg][1] = cat;\n                            bitcode[32767+nrneg][0] = nrupper-1+nrneg;\n                        }\n                        nrlower <<= 1;\n                        nrupper <<= 1;\n                    }\n                }\n    \n                function initRGBYUVTable() {\n                    for(var i = 0; i < 256;i++) {\n                        RGB_YUV_TABLE[i]            =  19595 * i;\n                        RGB_YUV_TABLE[(i+ 256)>>0]  =  38470 * i;\n                        RGB_YUV_TABLE[(i+ 512)>>0]  =   7471 * i + 0x8000;\n                        RGB_YUV_TABLE[(i+ 768)>>0]  = -11059 * i;\n                        RGB_YUV_TABLE[(i+1024)>>0]  = -21709 * i;\n                        RGB_YUV_TABLE[(i+1280)>>0]  =  32768 * i + 0x807FFF;\n                        RGB_YUV_TABLE[(i+1536)>>0]  = -27439 * i;\n                        RGB_YUV_TABLE[(i+1792)>>0]  = - 5329 * i;\n                    }\n                }\n    \n                // IO functions\n                function writeBits(bs)\n                {\n                    var value = bs[0];\n                    var posval = bs[1]-1;\n                    while ( posval >= 0 ) {\n                        if (value & (1 << posval) ) {\n                            bytenew |= (1 << bytepos);\n                        }\n                        posval--;\n                        bytepos--;\n                        if (bytepos < 0) {\n                            if (bytenew == 0xFF) {\n                                writeByte(0xFF);\n                                writeByte(0);\n                            }\n                            else {\n                                writeByte(bytenew);\n                            }\n                            bytepos=7;\n                            bytenew=0;\n                        }\n                    }\n                }\n    \n                function writeByte(value)\n                {\n                    byteout.push(clt[value]); // write char directly instead of converting later\n                }\n    \n                function writeWord(value)\n                {\n                    writeByte((value>>8)&0xFF);\n                    writeByte((value   )&0xFF);\n                }\n    \n                // DCT & quantization core\n                function fDCTQuant(data, fdtbl)\n                {\n                    var d0, d1, d2, d3, d4, d5, d6, d7;\n                    /* Pass 1: process rows. */\n                    var dataOff=0;\n                    var i;\n                    var I8 = 8;\n                    var I64 = 64;\n                    for (i=0; i<I8; ++i)\n                    {\n                        d0 = data[dataOff];\n                        d1 = data[dataOff+1];\n                        d2 = data[dataOff+2];\n                        d3 = data[dataOff+3];\n                        d4 = data[dataOff+4];\n                        d5 = data[dataOff+5];\n                        d6 = data[dataOff+6];\n                        d7 = data[dataOff+7];\n    \n                        var tmp0 = d0 + d7;\n                        var tmp7 = d0 - d7;\n                        var tmp1 = d1 + d6;\n                        var tmp6 = d1 - d6;\n                        var tmp2 = d2 + d5;\n                        var tmp5 = d2 - d5;\n                        var tmp3 = d3 + d4;\n                        var tmp4 = d3 - d4;\n    \n                        /* Even part */\n                        var tmp10 = tmp0 + tmp3;    /* phase 2 */\n                        var tmp13 = tmp0 - tmp3;\n                        var tmp11 = tmp1 + tmp2;\n                        var tmp12 = tmp1 - tmp2;\n    \n                        data[dataOff] = tmp10 + tmp11; /* phase 3 */\n                        data[dataOff+4] = tmp10 - tmp11;\n    \n                        var z1 = (tmp12 + tmp13) * 0.707106781; /* c4 */\n                        data[dataOff+2] = tmp13 + z1; /* phase 5 */\n                        data[dataOff+6] = tmp13 - z1;\n    \n                        /* Odd part */\n                        tmp10 = tmp4 + tmp5; /* phase 2 */\n                        tmp11 = tmp5 + tmp6;\n                        tmp12 = tmp6 + tmp7;\n    \n                        /* The rotator is modified from fig 4-8 to avoid extra negations. */\n                        var z5 = (tmp10 - tmp12) * 0.382683433; /* c6 */\n                        var z2 = 0.541196100 * tmp10 + z5; /* c2-c6 */\n                        var z4 = 1.306562965 * tmp12 + z5; /* c2+c6 */\n                        var z3 = tmp11 * 0.707106781; /* c4 */\n    \n                        var z11 = tmp7 + z3;    /* phase 5 */\n                        var z13 = tmp7 - z3;\n    \n                        data[dataOff+5] = z13 + z2; /* phase 6 */\n                        data[dataOff+3] = z13 - z2;\n                        data[dataOff+1] = z11 + z4;\n                        data[dataOff+7] = z11 - z4;\n    \n                        dataOff += 8; /* advance pointer to next row */\n                    }\n    \n                    /* Pass 2: process columns. */\n                    dataOff = 0;\n                    for (i=0; i<I8; ++i)\n                    {\n                        d0 = data[dataOff];\n                        d1 = data[dataOff + 8];\n                        d2 = data[dataOff + 16];\n                        d3 = data[dataOff + 24];\n                        d4 = data[dataOff + 32];\n                        d5 = data[dataOff + 40];\n                        d6 = data[dataOff + 48];\n                        d7 = data[dataOff + 56];\n    \n                        var tmp0p2 = d0 + d7;\n                        var tmp7p2 = d0 - d7;\n                        var tmp1p2 = d1 + d6;\n                        var tmp6p2 = d1 - d6;\n                        var tmp2p2 = d2 + d5;\n                        var tmp5p2 = d2 - d5;\n                        var tmp3p2 = d3 + d4;\n                        var tmp4p2 = d3 - d4;\n    \n                        /* Even part */\n                        var tmp10p2 = tmp0p2 + tmp3p2;  /* phase 2 */\n                        var tmp13p2 = tmp0p2 - tmp3p2;\n                        var tmp11p2 = tmp1p2 + tmp2p2;\n                        var tmp12p2 = tmp1p2 - tmp2p2;\n    \n                        data[dataOff] = tmp10p2 + tmp11p2; /* phase 3 */\n                        data[dataOff+32] = tmp10p2 - tmp11p2;\n    \n                        var z1p2 = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */\n                        data[dataOff+16] = tmp13p2 + z1p2; /* phase 5 */\n                        data[dataOff+48] = tmp13p2 - z1p2;\n    \n                        /* Odd part */\n                        tmp10p2 = tmp4p2 + tmp5p2; /* phase 2 */\n                        tmp11p2 = tmp5p2 + tmp6p2;\n                        tmp12p2 = tmp6p2 + tmp7p2;\n    \n                        /* The rotator is modified from fig 4-8 to avoid extra negations. */\n                        var z5p2 = (tmp10p2 - tmp12p2) * 0.382683433; /* c6 */\n                        var z2p2 = 0.541196100 * tmp10p2 + z5p2; /* c2-c6 */\n                        var z4p2 = 1.306562965 * tmp12p2 + z5p2; /* c2+c6 */\n                        var z3p2 = tmp11p2 * 0.707106781; /* c4 */\n    \n                        var z11p2 = tmp7p2 + z3p2;  /* phase 5 */\n                        var z13p2 = tmp7p2 - z3p2;\n    \n                        data[dataOff+40] = z13p2 + z2p2; /* phase 6 */\n                        data[dataOff+24] = z13p2 - z2p2;\n                        data[dataOff+ 8] = z11p2 + z4p2;\n                        data[dataOff+56] = z11p2 - z4p2;\n    \n                        dataOff++; /* advance pointer to next column */\n                    }\n    \n                    // Quantize/descale the coefficients\n                    var fDCTQuant;\n                    for (i=0; i<I64; ++i)\n                    {\n                        // Apply the quantization and scaling factor & Round to nearest integer\n                        fDCTQuant = data[i]*fdtbl[i];\n                        outputfDCTQuant[i] = (fDCTQuant > 0.0) ? ((fDCTQuant + 0.5)|0) : ((fDCTQuant - 0.5)|0);\n                        //outputfDCTQuant[i] = fround(fDCTQuant);\n    \n                    }\n                    return outputfDCTQuant;\n                }\n    \n                function writeAPP0()\n                {\n                    writeWord(0xFFE0); // marker\n                    writeWord(16); // length\n                    writeByte(0x4A); // J\n                    writeByte(0x46); // F\n                    writeByte(0x49); // I\n                    writeByte(0x46); // F\n                    writeByte(0); // = \"JFIF\",'\\0'\n                    writeByte(1); // versionhi\n                    writeByte(1); // versionlo\n                    writeByte(0); // xyunits\n                    writeWord(1); // xdensity\n                    writeWord(1); // ydensity\n                    writeByte(0); // thumbnwidth\n                    writeByte(0); // thumbnheight\n                }\n    \n                function writeSOF0(width, height)\n                {\n                    writeWord(0xFFC0); // marker\n                    writeWord(17);   // length, truecolor YUV JPG\n                    writeByte(8);    // precision\n                    writeWord(height);\n                    writeWord(width);\n                    writeByte(3);    // nrofcomponents\n                    writeByte(1);    // IdY\n                    writeByte(0x11); // HVY\n                    writeByte(0);    // QTY\n                    writeByte(2);    // IdU\n                    writeByte(0x11); // HVU\n                    writeByte(1);    // QTU\n                    writeByte(3);    // IdV\n                    writeByte(0x11); // HVV\n                    writeByte(1);    // QTV\n                }\n    \n                function writeDQT()\n                {\n                    writeWord(0xFFDB); // marker\n                    writeWord(132);    // length\n                    writeByte(0);\n                    for (var i=0; i<64; i++) {\n                        writeByte(YTable[i]);\n                    }\n                    writeByte(1);\n                    for (var j=0; j<64; j++) {\n                        writeByte(UVTable[j]);\n                    }\n                }\n    \n                function writeDHT()\n                {\n                    writeWord(0xFFC4); // marker\n                    writeWord(0x01A2); // length\n    \n                    writeByte(0); // HTYDCinfo\n                    for (var i=0; i<16; i++) {\n                        writeByte(std_dc_luminance_nrcodes[i+1]);\n                    }\n                    for (var j=0; j<=11; j++) {\n                        writeByte(std_dc_luminance_values[j]);\n                    }\n    \n                    writeByte(0x10); // HTYACinfo\n                    for (var k=0; k<16; k++) {\n                        writeByte(std_ac_luminance_nrcodes[k+1]);\n                    }\n                    for (var l=0; l<=161; l++) {\n                        writeByte(std_ac_luminance_values[l]);\n                    }\n    \n                    writeByte(1); // HTUDCinfo\n                    for (var m=0; m<16; m++) {\n                        writeByte(std_dc_chrominance_nrcodes[m+1]);\n                    }\n                    for (var n=0; n<=11; n++) {\n                        writeByte(std_dc_chrominance_values[n]);\n                    }\n    \n                    writeByte(0x11); // HTUACinfo\n                    for (var o=0; o<16; o++) {\n                        writeByte(std_ac_chrominance_nrcodes[o+1]);\n                    }\n                    for (var p=0; p<=161; p++) {\n                        writeByte(std_ac_chrominance_values[p]);\n                    }\n                }\n    \n                function writeSOS()\n                {\n                    writeWord(0xFFDA); // marker\n                    writeWord(12); // length\n                    writeByte(3); // nrofcomponents\n                    writeByte(1); // IdY\n                    writeByte(0); // HTY\n                    writeByte(2); // IdU\n                    writeByte(0x11); // HTU\n                    writeByte(3); // IdV\n                    writeByte(0x11); // HTV\n                    writeByte(0); // Ss\n                    writeByte(0x3f); // Se\n                    writeByte(0); // Bf\n                }\n    \n                function processDU(CDU, fdtbl, DC, HTDC, HTAC){\n                    var EOB = HTAC[0x00];\n                    var M16zeroes = HTAC[0xF0];\n                    var pos;\n                    var I16 = 16;\n                    var I63 = 63;\n                    var I64 = 64;\n                    var DU_DCT = fDCTQuant(CDU, fdtbl);\n                    //ZigZag reorder\n                    for (var j=0;j<I64;++j) {\n                        DU[ZigZag[j]]=DU_DCT[j];\n                    }\n                    var Diff = DU[0] - DC; DC = DU[0];\n                    //Encode DC\n                    if (Diff==0) {\n                        writeBits(HTDC[0]); // Diff might be 0\n                    } else {\n                        pos = 32767+Diff;\n                        writeBits(HTDC[category[pos]]);\n                        writeBits(bitcode[pos]);\n                    }\n                    //Encode ACs\n                    var end0pos = 63; // was const... which is crazy\n                    for (; (end0pos>0)&&(DU[end0pos]==0); end0pos--) {};\n                    //end0pos = first element in reverse order !=0\n                    if ( end0pos == 0) {\n                        writeBits(EOB);\n                        return DC;\n                    }\n                    var i = 1;\n                    var lng;\n                    while ( i <= end0pos ) {\n                        var startpos = i;\n                        for (; (DU[i]==0) && (i<=end0pos); ++i) {}\n                        var nrzeroes = i-startpos;\n                        if ( nrzeroes >= I16 ) {\n                            lng = nrzeroes>>4;\n                            for (var nrmarker=1; nrmarker <= lng; ++nrmarker)\n                                writeBits(M16zeroes);\n                            nrzeroes = nrzeroes&0xF;\n                        }\n                        pos = 32767+DU[i];\n                        writeBits(HTAC[(nrzeroes<<4)+category[pos]]);\n                        writeBits(bitcode[pos]);\n                        i++;\n                    }\n                    if ( end0pos != I63 ) {\n                        writeBits(EOB);\n                    }\n                    return DC;\n                }\n    \n                function initCharLookupTable(){\n                    var sfcc = String.fromCharCode;\n                    for(var i=0; i < 256; i++){ ///// ACHTUNG // 255\n                        clt[i] = sfcc(i);\n                    }\n                }\n    \n                this.encode = function(image,quality) // image data object\n                {\n                    // var time_start = new Date().getTime();\n    \n                    if(quality) setQuality(quality);\n    \n                    // Initialize bit writer\n                    byteout = new Array();\n                    bytenew=0;\n                    bytepos=7;\n    \n                    // Add JPEG headers\n                    writeWord(0xFFD8); // SOI\n                    writeAPP0();\n                    writeDQT();\n                    writeSOF0(image.width,image.height);\n                    writeDHT();\n                    writeSOS();\n    \n    \n                    // Encode 8x8 macroblocks\n                    var DCY=0;\n                    var DCU=0;\n                    var DCV=0;\n    \n                    bytenew=0;\n                    bytepos=7;\n    \n    \n                    this.encode.displayName = \"_encode_\";\n    \n                    var imageData = image.data;\n                    var width = image.width;\n                    var height = image.height;\n    \n                    var quadWidth = width*4;\n                    var tripleWidth = width*3;\n    \n                    var x, y = 0;\n                    var r, g, b;\n                    var start,p, col,row,pos;\n                    while(y < height){\n                        x = 0;\n                        while(x < quadWidth){\n                        start = quadWidth * y + x;\n                        p = start;\n                        col = -1;\n                        row = 0;\n    \n                        for(pos=0; pos < 64; pos++){\n                            row = pos >> 3;// /8\n                            col = ( pos & 7 ) * 4; // %8\n                            p = start + ( row * quadWidth ) + col;\n    \n                            if(y+row >= height){ // padding bottom\n                                p-= (quadWidth*(y+1+row-height));\n                            }\n    \n                            if(x+col >= quadWidth){ // padding right\n                                p-= ((x+col) - quadWidth +4)\n                            }\n    \n                            r = imageData[ p++ ];\n                            g = imageData[ p++ ];\n                            b = imageData[ p++ ];\n    \n    \n                            /* // calculate YUV values dynamically\n                            YDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80\n                            UDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b));\n                            VDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b));\n                            */\n    \n                            // use lookup table (slightly faster)\n                            YDU[pos] = ((RGB_YUV_TABLE[r]             + RGB_YUV_TABLE[(g +  256)>>0] + RGB_YUV_TABLE[(b +  512)>>0]) >> 16)-128;\n                            UDU[pos] = ((RGB_YUV_TABLE[(r +  768)>>0] + RGB_YUV_TABLE[(g + 1024)>>0] + RGB_YUV_TABLE[(b + 1280)>>0]) >> 16)-128;\n                            VDU[pos] = ((RGB_YUV_TABLE[(r + 1280)>>0] + RGB_YUV_TABLE[(g + 1536)>>0] + RGB_YUV_TABLE[(b + 1792)>>0]) >> 16)-128;\n    \n                        }\n    \n                        DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n                        DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n                        DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n                        x+=32;\n                        }\n                        y+=8;\n                    }\n    \n    \n                    ////////////////////////////////////////////////////////////////\n    \n                    // Do the bit alignment of the EOI marker\n                    if ( bytepos >= 0 ) {\n                        var fillbits = [];\n                        fillbits[1] = bytepos+1;\n                        fillbits[0] = (1<<(bytepos+1))-1;\n                        writeBits(fillbits);\n                    }\n    \n                    writeWord(0xFFD9); //EOI\n    \n                    var jpegDataUri = 'data:image/jpeg;base64,' + btoa(byteout.join(''));\n    \n                    byteout = [];\n    \n                    // benchmarking\n                    // var duration = new Date().getTime() - time_start;\n                    // console.log('Encoding time: '+ currentQuality + 'ms');\n                    //\n    \n                    return jpegDataUri\n            }\n    \n            function setQuality(quality){\n                if (quality <= 0) {\n                    quality = 1;\n                }\n                if (quality > 100) {\n                    quality = 100;\n                }\n    \n                if(currentQuality == quality) return // don't recalc if unchanged\n    \n                var sf = 0;\n                if (quality < 50) {\n                    sf = Math.floor(5000 / quality);\n                } else {\n                    sf = Math.floor(200 - quality*2);\n                }\n    \n                initQuantTables(sf);\n                currentQuality = quality;\n                // console.log('Quality set to: '+quality +'%');\n            }\n    \n            function init(){\n                // var time_start = new Date().getTime();\n                if(!quality) quality = 50;\n                // Create tables\n                initCharLookupTable()\n                initHuffmanTbl();\n                initCategoryNumber();\n                initRGBYUVTable();\n    \n                setQuality(quality);\n                // var duration = new Date().getTime() - time_start;\n                // console.log('Initialization '+ duration + 'ms');\n            }\n    \n            init();\n    \n        };\n    \n        JPEGEncoder.encode = function( data, quality ) {\n            var encoder = new JPEGEncoder( quality );\n    \n            return encoder.encode( data );\n        }\n    \n        return JPEGEncoder;\n    });\n    /**\n     * @fileOverview Fix android canvas.toDataUrl bug.\n     */\n    define('runtime/html5/androidpatch',[\n        'runtime/html5/util',\n        'runtime/html5/jpegencoder',\n        'base'\n    ], function( Util, encoder, Base ) {\n        var origin = Util.canvasToDataUrl,\n            supportJpeg;\n    \n        Util.canvasToDataUrl = function( canvas, type, quality ) {\n            var ctx, w, h, fragement, parts;\n    \n            // 非android手机直接跳过。\n            if ( !Base.os.android ) {\n                return origin.apply( null, arguments );\n            }\n    \n            // 检测是否canvas支持jpeg导出，根据数据格式来判断。\n            // JPEG 前两位分别是：255, 216\n            if ( type === 'image/jpeg' && typeof supportJpeg === 'undefined' ) {\n                fragement = origin.apply( null, arguments );\n    \n                parts = fragement.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    fragement = atob( parts[ 1 ] );\n                } else {\n                    fragement = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                fragement = fragement.substring( 0, 2 );\n    \n                supportJpeg = fragement.charCodeAt( 0 ) === 255 &&\n                        fragement.charCodeAt( 1 ) === 216;\n            }\n    \n            // 只有在android环境下才修复\n            if ( type === 'image/jpeg' && !supportJpeg ) {\n                w = canvas.width;\n                h = canvas.height;\n                ctx = canvas.getContext('2d');\n    \n                return encoder.encode( ctx.getImageData( 0, 0, w, h ), quality );\n            }\n    \n            return origin.apply( null, arguments );\n        };\n    });\n    /**\n     * @fileOverview Image\n     */\n    define('runtime/html5/image',[\n        'base',\n        'runtime/html5/runtime',\n        'runtime/html5/util'\n    ], function( Base, Html5Runtime, Util ) {\n    \n        var BLANK = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D';\n    \n        return Html5Runtime.register( 'Image', {\n    \n            // flag: 标记是否被修改过。\n            modified: false,\n    \n            init: function() {\n                var me = this,\n                    img = new Image();\n    \n                img.onload = function() {\n    \n                    me._info = {\n                        type: me.type,\n                        width: this.width,\n                        height: this.height\n                    };\n    \n                    // 读取meta信息。\n                    if ( !me._metas && 'image/jpeg' === me.type ) {\n                        Util.parseMeta( me._blob, function( error, ret ) {\n                            me._metas = ret;\n                            me.owner.trigger('load');\n                        });\n                    } else {\n                        me.owner.trigger('load');\n                    }\n                };\n    \n                img.onerror = function() {\n                    me.owner.trigger('error');\n                };\n    \n                me._img = img;\n            },\n    \n            loadFromBlob: function( blob ) {\n                var me = this,\n                    img = me._img;\n    \n                me._blob = blob;\n                me.type = blob.type;\n                img.src = Util.createObjectURL( blob.getSource() );\n                me.owner.once( 'load', function() {\n                    Util.revokeObjectURL( img.src );\n                });\n            },\n    \n            resize: function( width, height ) {\n                var canvas = this._canvas ||\n                        (this._canvas = document.createElement('canvas'));\n    \n                this._resize( this._img, canvas, width, height );\n                this._blob = null;    // 没用了，可以删掉了。\n                this.modified = true;\n                this.owner.trigger( 'complete', 'resize' );\n            },\n    \n            crop: function( x, y, w, h, s ) {\n                var cvs = this._canvas ||\n                        (this._canvas = document.createElement('canvas')),\n                    opts = this.options,\n                    img = this._img,\n                    iw = img.naturalWidth,\n                    ih = img.naturalHeight,\n                    orientation = this.getOrientation();\n    \n                s = s || 1;\n    \n                // todo 解决 orientation 的问题。\n                // values that require 90 degree rotation\n                // if ( ~[ 5, 6, 7, 8 ].indexOf( orientation ) ) {\n    \n                //     switch ( orientation ) {\n                //         case 6:\n                //             tmp = x;\n                //             x = y;\n                //             y = iw * s - tmp - w;\n                //             console.log(ih * s, tmp, w)\n                //             break;\n                //     }\n    \n                //     (w ^= h, h ^= w, w ^= h);\n                // }\n    \n                cvs.width = w;\n                cvs.height = h;\n    \n                opts.preserveHeaders || this._rotate2Orientaion( cvs, orientation );\n                this._renderImageToCanvas( cvs, img, -x, -y, iw * s, ih * s );\n    \n                this._blob = null;    // 没用了，可以删掉了。\n                this.modified = true;\n                this.owner.trigger( 'complete', 'crop' );\n            },\n    \n            getAsBlob: function( type ) {\n                var blob = this._blob,\n                    opts = this.options,\n                    canvas;\n    \n                type = type || this.type;\n    \n                // blob需要重新生成。\n                if ( this.modified || this.type !== type ) {\n                    canvas = this._canvas;\n    \n                    if ( type === 'image/jpeg' ) {\n    \n                        blob = Util.canvasToDataUrl( canvas, type, opts.quality );\n    \n                        if ( opts.preserveHeaders && this._metas &&\n                                this._metas.imageHead ) {\n    \n                            blob = Util.dataURL2ArrayBuffer( blob );\n                            blob = Util.updateImageHead( blob,\n                                    this._metas.imageHead );\n                            blob = Util.arrayBufferToBlob( blob, type );\n                            return blob;\n                        }\n                    } else {\n                        blob = Util.canvasToDataUrl( canvas, type );\n                    }\n    \n                    blob = Util.dataURL2Blob( blob );\n                }\n    \n                return blob;\n            },\n    \n            getAsDataUrl: function( type ) {\n                var opts = this.options;\n    \n                type = type || this.type;\n    \n                if ( type === 'image/jpeg' ) {\n                    return Util.canvasToDataUrl( this._canvas, type, opts.quality );\n                } else {\n                    return this._canvas.toDataURL( type );\n                }\n            },\n    \n            getOrientation: function() {\n                return this._metas && this._metas.exif &&\n                        this._metas.exif.get('Orientation') || 1;\n            },\n    \n            info: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._info = val;\n                    return this;\n                }\n    \n                // getter\n                return this._info;\n            },\n    \n            meta: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._meta = val;\n                    return this;\n                }\n    \n                // getter\n                return this._meta;\n            },\n    \n            destroy: function() {\n                var canvas = this._canvas;\n                this._img.onload = null;\n    \n                if ( canvas ) {\n                    canvas.getContext('2d')\n                            .clearRect( 0, 0, canvas.width, canvas.height );\n                    canvas.width = canvas.height = 0;\n                    this._canvas = null;\n                }\n    \n                // 释放内存。非常重要，否则释放不了image的内存。\n                this._img.src = BLANK;\n                this._img = this._blob = null;\n            },\n    \n            _resize: function( img, cvs, width, height ) {\n                var opts = this.options,\n                    naturalWidth = img.width,\n                    naturalHeight = img.height,\n                    orientation = this.getOrientation(),\n                    scale, w, h, x, y;\n    \n                // values that require 90 degree rotation\n                if ( ~[ 5, 6, 7, 8 ].indexOf( orientation ) ) {\n    \n                    // 交换width, height的值。\n                    width ^= height;\n                    height ^= width;\n                    width ^= height;\n                }\n    \n                scale = Math[ opts.crop ? 'max' : 'min' ]( width / naturalWidth,\n                        height / naturalHeight );\n    \n                // 不允许放大。\n                opts.allowMagnify || (scale = Math.min( 1, scale ));\n    \n                w = naturalWidth * scale;\n                h = naturalHeight * scale;\n    \n                if ( opts.crop ) {\n                    cvs.width = width;\n                    cvs.height = height;\n                } else {\n                    cvs.width = w;\n                    cvs.height = h;\n                }\n    \n                x = (cvs.width - w) / 2;\n                y = (cvs.height - h) / 2;\n    \n                opts.preserveHeaders || this._rotate2Orientaion( cvs, orientation );\n    \n                this._renderImageToCanvas( cvs, img, x, y, w, h );\n            },\n    \n            _rotate2Orientaion: function( canvas, orientation ) {\n                var width = canvas.width,\n                    height = canvas.height,\n                    ctx = canvas.getContext('2d');\n    \n                switch ( orientation ) {\n                    case 5:\n                    case 6:\n                    case 7:\n                    case 8:\n                        canvas.width = height;\n                        canvas.height = width;\n                        break;\n                }\n    \n                switch ( orientation ) {\n                    case 2:    // horizontal flip\n                        ctx.translate( width, 0 );\n                        ctx.scale( -1, 1 );\n                        break;\n    \n                    case 3:    // 180 rotate left\n                        ctx.translate( width, height );\n                        ctx.rotate( Math.PI );\n                        break;\n    \n                    case 4:    // vertical flip\n                        ctx.translate( 0, height );\n                        ctx.scale( 1, -1 );\n                        break;\n    \n                    case 5:    // vertical flip + 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.scale( 1, -1 );\n                        break;\n    \n                    case 6:    // 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.translate( 0, -height );\n                        break;\n    \n                    case 7:    // horizontal flip + 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.translate( width, -height );\n                        ctx.scale( -1, 1 );\n                        break;\n    \n                    case 8:    // 90 rotate left\n                        ctx.rotate( -0.5 * Math.PI );\n                        ctx.translate( -width, 0 );\n                        break;\n                }\n            },\n    \n            // https://github.com/stomita/ios-imagefile-megapixel/\n            // blob/master/src/megapix-image.js\n            _renderImageToCanvas: (function() {\n    \n                // 如果不是ios, 不需要这么复杂！\n                if ( !Base.os.ios ) {\n                    return function( canvas ) {\n                        var args = Base.slice( arguments, 1 ),\n                            ctx = canvas.getContext('2d');\n    \n                        ctx.drawImage.apply( ctx, args );\n                    };\n                }\n    \n                /**\n                 * Detecting vertical squash in loaded image.\n                 * Fixes a bug which squash image vertically while drawing into\n                 * canvas for some images.\n                 */\n                function detectVerticalSquash( img, iw, ih ) {\n                    var canvas = document.createElement('canvas'),\n                        ctx = canvas.getContext('2d'),\n                        sy = 0,\n                        ey = ih,\n                        py = ih,\n                        data, alpha, ratio;\n    \n    \n                    canvas.width = 1;\n                    canvas.height = ih;\n                    ctx.drawImage( img, 0, 0 );\n                    data = ctx.getImageData( 0, 0, 1, ih ).data;\n    \n                    // search image edge pixel position in case\n                    // it is squashed vertically.\n                    while ( py > sy ) {\n                        alpha = data[ (py - 1) * 4 + 3 ];\n    \n                        if ( alpha === 0 ) {\n                            ey = py;\n                        } else {\n                            sy = py;\n                        }\n    \n                        py = (ey + sy) >> 1;\n                    }\n    \n                    ratio = (py / ih);\n                    return (ratio === 0) ? 1 : ratio;\n                }\n    \n                // fix ie7 bug\n                // http://stackoverflow.com/questions/11929099/\n                // html5-canvas-drawimage-ratio-bug-ios\n                if ( Base.os.ios >= 7 ) {\n                    return function( canvas, img, x, y, w, h ) {\n                        var iw = img.naturalWidth,\n                            ih = img.naturalHeight,\n                            vertSquashRatio = detectVerticalSquash( img, iw, ih );\n    \n                        return canvas.getContext('2d').drawImage( img, 0, 0,\n                                iw * vertSquashRatio, ih * vertSquashRatio,\n                                x, y, w, h );\n                    };\n                }\n    \n                /**\n                 * Detect subsampling in loaded image.\n                 * In iOS, larger images than 2M pixels may be\n                 * subsampled in rendering.\n                 */\n                function detectSubsampling( img ) {\n                    var iw = img.naturalWidth,\n                        ih = img.naturalHeight,\n                        canvas, ctx;\n    \n                    // subsampling may happen overmegapixel image\n                    if ( iw * ih > 1024 * 1024 ) {\n                        canvas = document.createElement('canvas');\n                        canvas.width = canvas.height = 1;\n                        ctx = canvas.getContext('2d');\n                        ctx.drawImage( img, -iw + 1, 0 );\n    \n                        // subsampled image becomes half smaller in rendering size.\n                        // check alpha channel value to confirm image is covering\n                        // edge pixel or not. if alpha value is 0\n                        // image is not covering, hence subsampled.\n                        return ctx.getImageData( 0, 0, 1, 1 ).data[ 3 ] === 0;\n                    } else {\n                        return false;\n                    }\n                }\n    \n    \n                return function( canvas, img, x, y, width, height ) {\n                    var iw = img.naturalWidth,\n                        ih = img.naturalHeight,\n                        ctx = canvas.getContext('2d'),\n                        subsampled = detectSubsampling( img ),\n                        doSquash = this.type === 'image/jpeg',\n                        d = 1024,\n                        sy = 0,\n                        dy = 0,\n                        tmpCanvas, tmpCtx, vertSquashRatio, dw, dh, sx, dx;\n    \n                    if ( subsampled ) {\n                        iw /= 2;\n                        ih /= 2;\n                    }\n    \n                    ctx.save();\n                    tmpCanvas = document.createElement('canvas');\n                    tmpCanvas.width = tmpCanvas.height = d;\n    \n                    tmpCtx = tmpCanvas.getContext('2d');\n                    vertSquashRatio = doSquash ?\n                            detectVerticalSquash( img, iw, ih ) : 1;\n    \n                    dw = Math.ceil( d * width / iw );\n                    dh = Math.ceil( d * height / ih / vertSquashRatio );\n    \n                    while ( sy < ih ) {\n                        sx = 0;\n                        dx = 0;\n                        while ( sx < iw ) {\n                            tmpCtx.clearRect( 0, 0, d, d );\n                            tmpCtx.drawImage( img, -sx, -sy );\n                            ctx.drawImage( tmpCanvas, 0, 0, d, d,\n                                    x + dx, y + dy, dw, dh );\n                            sx += d;\n                            dx += dw;\n                        }\n                        sy += d;\n                        dy += dh;\n                    }\n                    ctx.restore();\n                    tmpCanvas = tmpCtx = null;\n                };\n            })()\n        });\n    });\n    /**\n     * @fileOverview Transport\n     * @todo 支持chunked传输，优势：\n     * 可以将大文件分成小块，挨个传输，可以提高大文件成功率，当失败的时候，也只需要重传那小部分，\n     * 而不需要重头再传一次。另外断点续传也需要用chunked方式。\n     */\n    define('runtime/html5/transport',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var noop = Base.noop,\n            $ = Base.$;\n    \n        return Html5Runtime.register( 'Transport', {\n            init: function() {\n                this._status = 0;\n                this._response = null;\n            },\n    \n            send: function() {\n                var owner = this.owner,\n                    opts = this.options,\n                    xhr = this._initAjax(),\n                    blob = owner._blob,\n                    server = opts.server,\n                    formData, binary, fr;\n    \n                if ( opts.sendAsBinary ) {\n                    server += (/\\?/.test( server ) ? '&' : '?') +\n                            $.param( owner._formData );\n    \n                    binary = blob.getSource();\n                } else {\n                    formData = new FormData();\n                    $.each( owner._formData, function( k, v ) {\n                        formData.append( k, v );\n                    });\n    \n                    formData.append( opts.fileVal, blob.getSource(),\n                            opts.filename || owner._formData.name || '' );\n                }\n    \n                if ( opts.withCredentials && 'withCredentials' in xhr ) {\n                    xhr.open( opts.method, server, true );\n                    xhr.withCredentials = true;\n                } else {\n                    xhr.open( opts.method, server );\n                }\n    \n                this._setRequestHeader( xhr, opts.headers );\n    \n                if ( binary ) {\n                    // 强制设置成 content-type 为文件流。\n                    xhr.overrideMimeType &&\n                            xhr.overrideMimeType('application/octet-stream');\n    \n                    // android直接发送blob会导致服务端接收到的是空文件。\n                    // bug详情。\n                    // https://code.google.com/p/android/issues/detail?id=39882\n                    // 所以先用fileReader读取出来再通过arraybuffer的方式发送。\n                    if ( Base.os.android ) {\n                        fr = new FileReader();\n    \n                        fr.onload = function() {\n                            xhr.send( this.result );\n                            fr = fr.onload = null;\n                        };\n    \n                        fr.readAsArrayBuffer( binary );\n                    } else {\n                        xhr.send( binary );\n                    }\n                } else {\n                    xhr.send( formData );\n                }\n            },\n    \n            getResponse: function() {\n                return this._response;\n            },\n    \n            getResponseAsJson: function() {\n                return this._parseJson( this._response );\n            },\n    \n            getStatus: function() {\n                return this._status;\n            },\n    \n            abort: function() {\n                var xhr = this._xhr;\n    \n                if ( xhr ) {\n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    xhr.abort();\n    \n                    this._xhr = xhr = null;\n                }\n            },\n    \n            destroy: function() {\n                this.abort();\n            },\n    \n            _initAjax: function() {\n                var me = this,\n                    xhr = new XMLHttpRequest(),\n                    opts = this.options;\n    \n                if ( opts.withCredentials && !('withCredentials' in xhr) &&\n                        typeof XDomainRequest !== 'undefined' ) {\n                    xhr = new XDomainRequest();\n                }\n    \n                xhr.upload.onprogress = function( e ) {\n                    var percentage = 0;\n    \n                    if ( e.lengthComputable ) {\n                        percentage = e.loaded / e.total;\n                    }\n    \n                    return me.trigger( 'progress', percentage );\n                };\n    \n                xhr.onreadystatechange = function() {\n    \n                    if ( xhr.readyState !== 4 ) {\n                        return;\n                    }\n    \n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    me._xhr = null;\n                    me._status = xhr.status;\n    \n                    if ( xhr.status >= 200 && xhr.status < 300 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger('load');\n                    } else if ( xhr.status >= 500 && xhr.status < 600 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger( 'error', 'server' );\n                    }\n    \n    \n                    return me.trigger( 'error', me._status ? 'http' : 'abort' );\n                };\n    \n                me._xhr = xhr;\n                return xhr;\n            },\n    \n            _setRequestHeader: function( xhr, headers ) {\n                $.each( headers, function( key, val ) {\n                    xhr.setRequestHeader( key, val );\n                });\n            },\n    \n            _parseJson: function( str ) {\n                var json;\n    \n                try {\n                    json = JSON.parse( str );\n                } catch ( ex ) {\n                    json = {};\n                }\n    \n                return json;\n            }\n        });\n    });\n    /**\n     * @fileOverview  Transport flash实现\n     */\n    define('runtime/html5/md5',[\n        'runtime/html5/runtime'\n    ], function( FlashRuntime ) {\n    \n        /*\n         * Fastest md5 implementation around (JKM md5)\n         * Credits: Joseph Myers\n         *\n         * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n         * @see http://jsperf.com/md5-shootout/7\n         */\n    \n        /* this function is much faster,\n          so if possible we use it. Some IEs\n          are the only ones I know of that\n          need the idiotic second function,\n          generated by an if clause.  */\n        var add32 = function (a, b) {\n            return (a + b) & 0xFFFFFFFF;\n        },\n    \n        cmn = function (q, a, b, x, s, t) {\n            a = add32(add32(a, q), add32(x, t));\n            return add32((a << s) | (a >>> (32 - s)), b);\n        },\n    \n        ff = function (a, b, c, d, x, s, t) {\n            return cmn((b & c) | ((~b) & d), a, b, x, s, t);\n        },\n    \n        gg = function (a, b, c, d, x, s, t) {\n            return cmn((b & d) | (c & (~d)), a, b, x, s, t);\n        },\n    \n        hh = function (a, b, c, d, x, s, t) {\n            return cmn(b ^ c ^ d, a, b, x, s, t);\n        },\n    \n        ii = function (a, b, c, d, x, s, t) {\n            return cmn(c ^ (b | (~d)), a, b, x, s, t);\n        },\n    \n        md5cycle = function (x, k) {\n            var a = x[0],\n                b = x[1],\n                c = x[2],\n                d = x[3];\n    \n            a = ff(a, b, c, d, k[0], 7, -680876936);\n            d = ff(d, a, b, c, k[1], 12, -389564586);\n            c = ff(c, d, a, b, k[2], 17, 606105819);\n            b = ff(b, c, d, a, k[3], 22, -1044525330);\n            a = ff(a, b, c, d, k[4], 7, -176418897);\n            d = ff(d, a, b, c, k[5], 12, 1200080426);\n            c = ff(c, d, a, b, k[6], 17, -1473231341);\n            b = ff(b, c, d, a, k[7], 22, -45705983);\n            a = ff(a, b, c, d, k[8], 7, 1770035416);\n            d = ff(d, a, b, c, k[9], 12, -1958414417);\n            c = ff(c, d, a, b, k[10], 17, -42063);\n            b = ff(b, c, d, a, k[11], 22, -1990404162);\n            a = ff(a, b, c, d, k[12], 7, 1804603682);\n            d = ff(d, a, b, c, k[13], 12, -40341101);\n            c = ff(c, d, a, b, k[14], 17, -1502002290);\n            b = ff(b, c, d, a, k[15], 22, 1236535329);\n    \n            a = gg(a, b, c, d, k[1], 5, -165796510);\n            d = gg(d, a, b, c, k[6], 9, -1069501632);\n            c = gg(c, d, a, b, k[11], 14, 643717713);\n            b = gg(b, c, d, a, k[0], 20, -373897302);\n            a = gg(a, b, c, d, k[5], 5, -701558691);\n            d = gg(d, a, b, c, k[10], 9, 38016083);\n            c = gg(c, d, a, b, k[15], 14, -660478335);\n            b = gg(b, c, d, a, k[4], 20, -405537848);\n            a = gg(a, b, c, d, k[9], 5, 568446438);\n            d = gg(d, a, b, c, k[14], 9, -1019803690);\n            c = gg(c, d, a, b, k[3], 14, -187363961);\n            b = gg(b, c, d, a, k[8], 20, 1163531501);\n            a = gg(a, b, c, d, k[13], 5, -1444681467);\n            d = gg(d, a, b, c, k[2], 9, -51403784);\n            c = gg(c, d, a, b, k[7], 14, 1735328473);\n            b = gg(b, c, d, a, k[12], 20, -1926607734);\n    \n            a = hh(a, b, c, d, k[5], 4, -378558);\n            d = hh(d, a, b, c, k[8], 11, -2022574463);\n            c = hh(c, d, a, b, k[11], 16, 1839030562);\n            b = hh(b, c, d, a, k[14], 23, -35309556);\n            a = hh(a, b, c, d, k[1], 4, -1530992060);\n            d = hh(d, a, b, c, k[4], 11, 1272893353);\n            c = hh(c, d, a, b, k[7], 16, -155497632);\n            b = hh(b, c, d, a, k[10], 23, -1094730640);\n            a = hh(a, b, c, d, k[13], 4, 681279174);\n            d = hh(d, a, b, c, k[0], 11, -358537222);\n            c = hh(c, d, a, b, k[3], 16, -722521979);\n            b = hh(b, c, d, a, k[6], 23, 76029189);\n            a = hh(a, b, c, d, k[9], 4, -640364487);\n            d = hh(d, a, b, c, k[12], 11, -421815835);\n            c = hh(c, d, a, b, k[15], 16, 530742520);\n            b = hh(b, c, d, a, k[2], 23, -995338651);\n    \n            a = ii(a, b, c, d, k[0], 6, -198630844);\n            d = ii(d, a, b, c, k[7], 10, 1126891415);\n            c = ii(c, d, a, b, k[14], 15, -1416354905);\n            b = ii(b, c, d, a, k[5], 21, -57434055);\n            a = ii(a, b, c, d, k[12], 6, 1700485571);\n            d = ii(d, a, b, c, k[3], 10, -1894986606);\n            c = ii(c, d, a, b, k[10], 15, -1051523);\n            b = ii(b, c, d, a, k[1], 21, -2054922799);\n            a = ii(a, b, c, d, k[8], 6, 1873313359);\n            d = ii(d, a, b, c, k[15], 10, -30611744);\n            c = ii(c, d, a, b, k[6], 15, -1560198380);\n            b = ii(b, c, d, a, k[13], 21, 1309151649);\n            a = ii(a, b, c, d, k[4], 6, -145523070);\n            d = ii(d, a, b, c, k[11], 10, -1120210379);\n            c = ii(c, d, a, b, k[2], 15, 718787259);\n            b = ii(b, c, d, a, k[9], 21, -343485551);\n    \n            x[0] = add32(a, x[0]);\n            x[1] = add32(b, x[1]);\n            x[2] = add32(c, x[2]);\n            x[3] = add32(d, x[3]);\n        },\n    \n        /* there needs to be support for Unicode here,\n           * unless we pretend that we can redefine the MD-5\n           * algorithm for multi-byte characters (perhaps\n           * by adding every four 16-bit characters and\n           * shortening the sum to 32 bits). Otherwise\n           * I suggest performing MD-5 as if every character\n           * was two bytes--e.g., 0040 0025 = @%--but then\n           * how will an ordinary MD-5 sum be matched?\n           * There is no way to standardize text to something\n           * like UTF-8 before transformation; speed cost is\n           * utterly prohibitive. The JavaScript standard\n           * itself needs to look at this: it should start\n           * providing access to strings as preformed UTF-8\n           * 8-bit unsigned value arrays.\n           */\n        md5blk = function (s) {\n            var md5blks = [],\n                i; /* Andy King said do it this way. */\n    \n            for (i = 0; i < 64; i += 4) {\n                md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n            }\n            return md5blks;\n        },\n    \n        md5blk_array = function (a) {\n            var md5blks = [],\n                i; /* Andy King said do it this way. */\n    \n            for (i = 0; i < 64; i += 4) {\n                md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n            }\n            return md5blks;\n        },\n    \n        md51 = function (s) {\n            var n = s.length,\n                state = [1732584193, -271733879, -1732584194, 271733878],\n                i,\n                length,\n                tail,\n                tmp,\n                lo,\n                hi;\n    \n            for (i = 64; i <= n; i += 64) {\n                md5cycle(state, md5blk(s.substring(i - 64, i)));\n            }\n            s = s.substring(i - 64);\n            length = s.length;\n            tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n            for (i = 0; i < length; i += 1) {\n                tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n            }\n            tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n            if (i > 55) {\n                md5cycle(state, tail);\n                for (i = 0; i < 16; i += 1) {\n                    tail[i] = 0;\n                }\n            }\n    \n            // Beware that the final length might not fit in 32 bits so we take care of that\n            tmp = n * 8;\n            tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n            lo = parseInt(tmp[2], 16);\n            hi = parseInt(tmp[1], 16) || 0;\n    \n            tail[14] = lo;\n            tail[15] = hi;\n    \n            md5cycle(state, tail);\n            return state;\n        },\n    \n        md51_array = function (a) {\n            var n = a.length,\n                state = [1732584193, -271733879, -1732584194, 271733878],\n                i,\n                length,\n                tail,\n                tmp,\n                lo,\n                hi;\n    \n            for (i = 64; i <= n; i += 64) {\n                md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n            }\n    \n            // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n            // containing the last element of the parent array if the sub array specified starts\n            // beyond the length of the parent array - weird.\n            // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n            a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n    \n            length = a.length;\n            tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n            for (i = 0; i < length; i += 1) {\n                tail[i >> 2] |= a[i] << ((i % 4) << 3);\n            }\n    \n            tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n            if (i > 55) {\n                md5cycle(state, tail);\n                for (i = 0; i < 16; i += 1) {\n                    tail[i] = 0;\n                }\n            }\n    \n            // Beware that the final length might not fit in 32 bits so we take care of that\n            tmp = n * 8;\n            tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n            lo = parseInt(tmp[2], 16);\n            hi = parseInt(tmp[1], 16) || 0;\n    \n            tail[14] = lo;\n            tail[15] = hi;\n    \n            md5cycle(state, tail);\n    \n            return state;\n        },\n    \n        hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'],\n    \n        rhex = function (n) {\n            var s = '',\n                j;\n            for (j = 0; j < 4; j += 1) {\n                s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n            }\n            return s;\n        },\n    \n        hex = function (x) {\n            var i;\n            for (i = 0; i < x.length; i += 1) {\n                x[i] = rhex(x[i]);\n            }\n            return x.join('');\n        },\n    \n        md5 = function (s) {\n            return hex(md51(s));\n        },\n    \n    \n    \n        ////////////////////////////////////////////////////////////////////////////\n    \n        /**\n         * SparkMD5 OOP implementation.\n         *\n         * Use this class to perform an incremental md5, otherwise use the\n         * static methods instead.\n         */\n        SparkMD5 = function () {\n            // call reset to init the instance\n            this.reset();\n        };\n    \n    \n        // In some cases the fast add32 function cannot be used..\n        if (md5('hello') !== '5d41402abc4b2a76b9719d911017c592') {\n            add32 = function (x, y) {\n                var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n                    msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n                return (msw << 16) | (lsw & 0xFFFF);\n            };\n        }\n    \n    \n        /**\n         * Appends a string.\n         * A conversion will be applied if an utf8 string is detected.\n         *\n         * @param {String} str The string to be appended\n         *\n         * @return {SparkMD5} The instance itself\n         */\n        SparkMD5.prototype.append = function (str) {\n            // converts the string to utf8 bytes if necessary\n            if (/[\\u0080-\\uFFFF]/.test(str)) {\n                str = unescape(encodeURIComponent(str));\n            }\n    \n            // then append as binary\n            this.appendBinary(str);\n    \n            return this;\n        };\n    \n        /**\n         * Appends a binary string.\n         *\n         * @param {String} contents The binary string to be appended\n         *\n         * @return {SparkMD5} The instance itself\n         */\n        SparkMD5.prototype.appendBinary = function (contents) {\n            this._buff += contents;\n            this._length += contents.length;\n    \n            var length = this._buff.length,\n                i;\n    \n            for (i = 64; i <= length; i += 64) {\n                md5cycle(this._state, md5blk(this._buff.substring(i - 64, i)));\n            }\n    \n            this._buff = this._buff.substr(i - 64);\n    \n            return this;\n        };\n    \n        /**\n         * Finishes the incremental computation, reseting the internal state and\n         * returning the result.\n         * Use the raw parameter to obtain the raw result instead of the hex one.\n         *\n         * @param {Boolean} raw True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.prototype.end = function (raw) {\n            var buff = this._buff,\n                length = buff.length,\n                i,\n                tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n                ret;\n    \n            for (i = 0; i < length; i += 1) {\n                tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n            }\n    \n            this._finish(tail, length);\n            ret = !!raw ? this._state : hex(this._state);\n    \n            this.reset();\n    \n            return ret;\n        };\n    \n        /**\n         * Finish the final calculation based on the tail.\n         *\n         * @param {Array}  tail   The tail (will be modified)\n         * @param {Number} length The length of the remaining buffer\n         */\n        SparkMD5.prototype._finish = function (tail, length) {\n            var i = length,\n                tmp,\n                lo,\n                hi;\n    \n            tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n            if (i > 55) {\n                md5cycle(this._state, tail);\n                for (i = 0; i < 16; i += 1) {\n                    tail[i] = 0;\n                }\n            }\n    \n            // Do the final computation based on the tail and length\n            // Beware that the final length may not fit in 32 bits so we take care of that\n            tmp = this._length * 8;\n            tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n            lo = parseInt(tmp[2], 16);\n            hi = parseInt(tmp[1], 16) || 0;\n    \n            tail[14] = lo;\n            tail[15] = hi;\n            md5cycle(this._state, tail);\n        };\n    \n        /**\n         * Resets the internal state of the computation.\n         *\n         * @return {SparkMD5} The instance itself\n         */\n        SparkMD5.prototype.reset = function () {\n            this._buff = \"\";\n            this._length = 0;\n            this._state = [1732584193, -271733879, -1732584194, 271733878];\n    \n            return this;\n        };\n    \n        /**\n         * Releases memory used by the incremental buffer and other aditional\n         * resources. If you plan to use the instance again, use reset instead.\n         */\n        SparkMD5.prototype.destroy = function () {\n            delete this._state;\n            delete this._buff;\n            delete this._length;\n        };\n    \n    \n        /**\n         * Performs the md5 hash on a string.\n         * A conversion will be applied if utf8 string is detected.\n         *\n         * @param {String}  str The string\n         * @param {Boolean} raw True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.hash = function (str, raw) {\n            // converts the string to utf8 bytes if necessary\n            if (/[\\u0080-\\uFFFF]/.test(str)) {\n                str = unescape(encodeURIComponent(str));\n            }\n    \n            var hash = md51(str);\n    \n            return !!raw ? hash : hex(hash);\n        };\n    \n        /**\n         * Performs the md5 hash on a binary string.\n         *\n         * @param {String}  content The binary string\n         * @param {Boolean} raw     True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.hashBinary = function (content, raw) {\n            var hash = md51(content);\n    \n            return !!raw ? hash : hex(hash);\n        };\n    \n        /**\n         * SparkMD5 OOP implementation for array buffers.\n         *\n         * Use this class to perform an incremental md5 ONLY for array buffers.\n         */\n        SparkMD5.ArrayBuffer = function () {\n            // call reset to init the instance\n            this.reset();\n        };\n    \n        ////////////////////////////////////////////////////////////////////////////\n    \n        /**\n         * Appends an array buffer.\n         *\n         * @param {ArrayBuffer} arr The array to be appended\n         *\n         * @return {SparkMD5.ArrayBuffer} The instance itself\n         */\n        SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n            // TODO: we could avoid the concatenation here but the algorithm would be more complex\n            //       if you find yourself needing extra performance, please make a PR.\n            var buff = this._concatArrayBuffer(this._buff, arr),\n                length = buff.length,\n                i;\n    \n            this._length += arr.byteLength;\n    \n            for (i = 64; i <= length; i += 64) {\n                md5cycle(this._state, md5blk_array(buff.subarray(i - 64, i)));\n            }\n    \n            // Avoids IE10 weirdness (documented above)\n            this._buff = (i - 64) < length ? buff.subarray(i - 64) : new Uint8Array(0);\n    \n            return this;\n        };\n    \n        /**\n         * Finishes the incremental computation, reseting the internal state and\n         * returning the result.\n         * Use the raw parameter to obtain the raw result instead of the hex one.\n         *\n         * @param {Boolean} raw True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n            var buff = this._buff,\n                length = buff.length,\n                tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n                i,\n                ret;\n    \n            for (i = 0; i < length; i += 1) {\n                tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n            }\n    \n            this._finish(tail, length);\n            ret = !!raw ? this._state : hex(this._state);\n    \n            this.reset();\n    \n            return ret;\n        };\n    \n        SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n    \n        /**\n         * Resets the internal state of the computation.\n         *\n         * @return {SparkMD5.ArrayBuffer} The instance itself\n         */\n        SparkMD5.ArrayBuffer.prototype.reset = function () {\n            this._buff = new Uint8Array(0);\n            this._length = 0;\n            this._state = [1732584193, -271733879, -1732584194, 271733878];\n    \n            return this;\n        };\n    \n        /**\n         * Releases memory used by the incremental buffer and other aditional\n         * resources. If you plan to use the instance again, use reset instead.\n         */\n        SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n    \n        /**\n         * Concats two array buffers, returning a new one.\n         *\n         * @param  {ArrayBuffer} first  The first array buffer\n         * @param  {ArrayBuffer} second The second array buffer\n         *\n         * @return {ArrayBuffer} The new array buffer\n         */\n        SparkMD5.ArrayBuffer.prototype._concatArrayBuffer = function (first, second) {\n            var firstLength = first.length,\n                result = new Uint8Array(firstLength + second.byteLength);\n    \n            result.set(first);\n            result.set(new Uint8Array(second), firstLength);\n    \n            return result;\n        };\n    \n        /**\n         * Performs the md5 hash on an array buffer.\n         *\n         * @param {ArrayBuffer} arr The array buffer\n         * @param {Boolean}     raw True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n            var hash = md51_array(new Uint8Array(arr));\n    \n            return !!raw ? hash : hex(hash);\n        };\n        \n        return FlashRuntime.register( 'Md5', {\n            init: function() {\n                // do nothing.\n            },\n    \n            loadFromBlob: function( file ) {\n                var blob = file.getSource(),\n                    chunkSize = 2 * 1024 * 1024,\n                    chunks = Math.ceil( blob.size / chunkSize ),\n                    chunk = 0,\n                    owner = this.owner,\n                    spark = new SparkMD5.ArrayBuffer(),\n                    me = this,\n                    blobSlice = blob.mozSlice || blob.webkitSlice || blob.slice,\n                    loadNext, fr;\n    \n                fr = new FileReader();\n    \n                loadNext = function() {\n                    var start, end;\n    \n                    start = chunk * chunkSize;\n                    end = Math.min( start + chunkSize, blob.size );\n    \n                    fr.onload = function( e ) {\n                        spark.append( e.target.result );\n                        owner.trigger( 'progress', {\n                            total: file.size,\n                            loaded: end\n                        });\n                    };\n    \n                    fr.onloadend = function() {\n                        fr.onloadend = fr.onload = null;\n    \n                        if ( ++chunk < chunks ) {\n                            setTimeout( loadNext, 1 );\n                        } else {\n                            setTimeout(function(){\n                                owner.trigger('load');\n                                me.result = spark.end();\n                                loadNext = file = blob = spark = null;\n                                owner.trigger('complete');\n                            }, 50 );\n                        }\n                    };\n    \n                    fr.readAsArrayBuffer( blobSlice.call( blob, start, end ) );\n                };\n    \n                loadNext();\n            },\n    \n            getResult: function() {\n                return this.result;\n            }\n        });\n    });\n    /**\n     * @fileOverview FlashRuntime\n     */\n    define('runtime/flash/runtime',[\n        'base',\n        'runtime/runtime',\n        'runtime/compbase'\n    ], function( Base, Runtime, CompBase ) {\n    \n        var $ = Base.$,\n            type = 'flash',\n            components = {};\n    \n    \n        function getFlashVersion() {\n            var version;\n    \n            try {\n                version = navigator.plugins[ 'Shockwave Flash' ];\n                version = version.description;\n            } catch ( ex ) {\n                try {\n                    version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash')\n                            .GetVariable('$version');\n                } catch ( ex2 ) {\n                    version = '0.0';\n                }\n            }\n            version = version.match( /\\d+/g );\n            return parseFloat( version[ 0 ] + '.' + version[ 1 ], 10 );\n        }\n    \n        function FlashRuntime() {\n            var pool = {},\n                clients = {},\n                destroy = this.destroy,\n                me = this,\n                jsreciver = Base.guid('webuploader_');\n    \n            Runtime.apply( me, arguments );\n            me.type = type;\n    \n    \n            // 这个方法的调用者，实际上是RuntimeClient\n            me.exec = function( comp, fn/*, args...*/ ) {\n                var client = this,\n                    uid = client.uid,\n                    args = Base.slice( arguments, 2 ),\n                    instance;\n    \n                clients[ uid ] = client;\n    \n                if ( components[ comp ] ) {\n                    if ( !pool[ uid ] ) {\n                        pool[ uid ] = new components[ comp ]( client, me );\n                    }\n    \n                    instance = pool[ uid ];\n    \n                    if ( instance[ fn ] ) {\n                        return instance[ fn ].apply( instance, args );\n                    }\n                }\n    \n                return me.flashExec.apply( client, arguments );\n            };\n    \n            function handler( evt, obj ) {\n                var type = evt.type || evt,\n                    parts, uid;\n    \n                parts = type.split('::');\n                uid = parts[ 0 ];\n                type = parts[ 1 ];\n    \n                // console.log.apply( console, arguments );\n    \n                if ( type === 'Ready' && uid === me.uid ) {\n                    me.trigger('ready');\n                } else if ( clients[ uid ] ) {\n                    clients[ uid ].trigger( type.toLowerCase(), evt, obj );\n                }\n    \n                // Base.log( evt, obj );\n            }\n    \n            // flash的接受器。\n            window[ jsreciver ] = function() {\n                var args = arguments;\n    \n                // 为了能捕获得到。\n                setTimeout(function() {\n                    handler.apply( null, args );\n                }, 1 );\n            };\n    \n            this.jsreciver = jsreciver;\n    \n            this.destroy = function() {\n                // @todo 删除池子中的所有实例\n                return destroy && destroy.apply( this, arguments );\n            };\n    \n            this.flashExec = function( comp, fn ) {\n                var flash = me.getFlash(),\n                    args = Base.slice( arguments, 2 );\n    \n                return flash.exec( this.uid, comp, fn, args );\n            };\n    \n            // @todo\n        }\n    \n        Base.inherits( Runtime, {\n            constructor: FlashRuntime,\n    \n            init: function() {\n                var container = this.getContainer(),\n                    opts = this.options,\n                    html;\n    \n                // if not the minimal height, shims are not initialized\n                // in older browsers (e.g FF3.6, IE6,7,8, Safari 4.0,5.0, etc)\n                container.css({\n                    position: 'absolute',\n                    top: '-8px',\n                    left: '-8px',\n                    width: '9px',\n                    height: '9px',\n                    overflow: 'hidden'\n                });\n    \n                // insert flash object\n                html = '<object id=\"' + this.uid + '\" type=\"application/' +\n                        'x-shockwave-flash\" data=\"' +  opts.swf + '\" ';\n    \n                if ( Base.browser.ie ) {\n                    html += 'classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" ';\n                }\n    \n                html += 'width=\"100%\" height=\"100%\" style=\"outline:0\">'  +\n                    '<param name=\"movie\" value=\"' + opts.swf + '\" />' +\n                    '<param name=\"flashvars\" value=\"uid=' + this.uid +\n                    '&jsreciver=' + this.jsreciver + '\" />' +\n                    '<param name=\"wmode\" value=\"transparent\" />' +\n                    '<param name=\"allowscriptaccess\" value=\"always\" />' +\n                '</object>';\n    \n                container.html( html );\n            },\n    \n            getFlash: function() {\n                if ( this._flash ) {\n                    return this._flash;\n                }\n    \n                this._flash = $( '#' + this.uid ).get( 0 );\n                return this._flash;\n            }\n    \n        });\n    \n        FlashRuntime.register = function( name, component ) {\n            component = components[ name ] = Base.inherits( CompBase, $.extend({\n    \n                // @todo fix this later\n                flashExec: function() {\n                    var owner = this.owner,\n                        runtime = this.getRuntime();\n    \n                    return runtime.flashExec.apply( owner, arguments );\n                }\n            }, component ) );\n    \n            return component;\n        };\n    \n        if ( getFlashVersion() >= 11.4 ) {\n            Runtime.addRuntime( type, FlashRuntime );\n        }\n    \n        return FlashRuntime;\n    });\n    /**\n     * @fileOverview FilePicker\n     */\n    define('runtime/flash/filepicker',[\n        'base',\n        'runtime/flash/runtime'\n    ], function( Base, FlashRuntime ) {\n        var $ = Base.$;\n    \n        return FlashRuntime.register( 'FilePicker', {\n            init: function( opts ) {\n                var copy = $.extend({}, opts ),\n                    len, i;\n    \n                // 修复Flash再没有设置title的情况下无法弹出flash文件选择框的bug.\n                len = copy.accept && copy.accept.length;\n                for (  i = 0; i < len; i++ ) {\n                    if ( !copy.accept[ i ].title ) {\n                        copy.accept[ i ].title = 'Files';\n                    }\n                }\n    \n                delete copy.button;\n                delete copy.id;\n                delete copy.container;\n    \n                this.flashExec( 'FilePicker', 'init', copy );\n            },\n    \n            destroy: function() {\n                this.flashExec( 'FilePicker', 'destroy' );\n            }\n        });\n    });\n    /**\n     * @fileOverview 图片压缩\n     */\n    define('runtime/flash/image',[\n        'runtime/flash/runtime'\n    ], function( FlashRuntime ) {\n    \n        return FlashRuntime.register( 'Image', {\n            // init: function( options ) {\n            //     var owner = this.owner;\n    \n            //     this.flashExec( 'Image', 'init', options );\n            //     owner.on( 'load', function() {\n            //         debugger;\n            //     });\n            // },\n    \n            loadFromBlob: function( blob ) {\n                var owner = this.owner;\n    \n                owner.info() && this.flashExec( 'Image', 'info', owner.info() );\n                owner.meta() && this.flashExec( 'Image', 'meta', owner.meta() );\n    \n                this.flashExec( 'Image', 'loadFromBlob', blob.uid );\n            }\n        });\n    });\n    /**\n     * @fileOverview  Transport flash实现\n     */\n    define('runtime/flash/transport',[\n        'base',\n        'runtime/flash/runtime',\n        'runtime/client'\n    ], function( Base, FlashRuntime, RuntimeClient ) {\n        var $ = Base.$;\n    \n        return FlashRuntime.register( 'Transport', {\n            init: function() {\n                this._status = 0;\n                this._response = null;\n                this._responseJson = null;\n            },\n    \n            send: function() {\n                var owner = this.owner,\n                    opts = this.options,\n                    xhr = this._initAjax(),\n                    blob = owner._blob,\n                    server = opts.server,\n                    binary;\n    \n                xhr.connectRuntime( blob.ruid );\n    \n                if ( opts.sendAsBinary ) {\n                    server += (/\\?/.test( server ) ? '&' : '?') +\n                            $.param( owner._formData );\n    \n                    binary = blob.uid;\n                } else {\n                    $.each( owner._formData, function( k, v ) {\n                        xhr.exec( 'append', k, v );\n                    });\n    \n                    xhr.exec( 'appendBlob', opts.fileVal, blob.uid,\n                            opts.filename || owner._formData.name || '' );\n                }\n    \n                this._setRequestHeader( xhr, opts.headers );\n                xhr.exec( 'send', {\n                    method: opts.method,\n                    url: server,\n                    forceURLStream: opts.forceURLStream,\n                    mimeType: 'application/octet-stream'\n                }, binary );\n            },\n    \n            getStatus: function() {\n                return this._status;\n            },\n    \n            getResponse: function() {\n                return this._response || '';\n            },\n    \n            getResponseAsJson: function() {\n                return this._responseJson;\n            },\n    \n            abort: function() {\n                var xhr = this._xhr;\n    \n                if ( xhr ) {\n                    xhr.exec('abort');\n                    xhr.destroy();\n                    this._xhr = xhr = null;\n                }\n            },\n    \n            destroy: function() {\n                this.abort();\n            },\n    \n            _initAjax: function() {\n                var me = this,\n                    xhr = new RuntimeClient('XMLHttpRequest');\n    \n                xhr.on( 'uploadprogress progress', function( e ) {\n                    var percent = e.loaded / e.total;\n                    percent = Math.min( 1, Math.max( 0, percent ) );\n                    return me.trigger( 'progress', percent );\n                });\n    \n                xhr.on( 'load', function() {\n                    var status = xhr.exec('getStatus'),\n                        readBody = false,\n                        err = '',\n                        p;\n    \n                    xhr.off();\n                    me._xhr = null;\n    \n                    if ( status >= 200 && status < 300 ) {\n                        readBody = true;\n                    } else if ( status >= 500 && status < 600 ) {\n                        readBody = true;\n                        err = 'server';\n                    } else {\n                        err = 'http';\n                    }\n    \n                    if ( readBody ) {\n                        me._response = xhr.exec('getResponse');\n                        me._response = decodeURIComponent( me._response );\n    \n                        // flash 处理可能存在 bug, 没辙只能靠 js 了\n                        // try {\n                        //     me._responseJson = xhr.exec('getResponseAsJson');\n                        // } catch ( error ) {\n                            \n                        p = window.JSON && window.JSON.parse || function( s ) {\n                            try {\n                                return new Function('return ' + s).call();\n                            } catch ( err ) {\n                                return {};\n                            }\n                        };\n                        me._responseJson  = me._response ? p(me._response) : {};\n                            \n                        // }\n                    }\n                    \n                    xhr.destroy();\n                    xhr = null;\n    \n                    return err ? me.trigger( 'error', err ) : me.trigger('load');\n                });\n    \n                xhr.on( 'error', function() {\n                    xhr.off();\n                    me._xhr = null;\n                    me.trigger( 'error', 'http' );\n                });\n    \n                me._xhr = xhr;\n                return xhr;\n            },\n    \n            _setRequestHeader: function( xhr, headers ) {\n                $.each( headers, function( key, val ) {\n                    xhr.exec( 'setRequestHeader', key, val );\n                });\n            }\n        });\n    });\n    /**\n     * @fileOverview Blob Html实现\n     */\n    define('runtime/flash/blob',[\n        'runtime/flash/runtime',\n        'lib/blob'\n    ], function( FlashRuntime, Blob ) {\n    \n        return FlashRuntime.register( 'Blob', {\n            slice: function( start, end ) {\n                var blob = this.flashExec( 'Blob', 'slice', start, end );\n    \n                return new Blob( blob.uid, blob );\n            }\n        });\n    });\n    /**\n     * @fileOverview  Md5 flash实现\n     */\n    define('runtime/flash/md5',[\n        'runtime/flash/runtime'\n    ], function( FlashRuntime ) {\n        \n        return FlashRuntime.register( 'Md5', {\n            init: function() {\n                // do nothing.\n            },\n    \n            loadFromBlob: function( blob ) {\n                return this.flashExec( 'Md5', 'loadFromBlob', blob.uid );\n            }\n        });\n    });\n    /**\n     * @fileOverview 完全版本。\n     */\n    define('preset/all',[\n        'base',\n    \n        // widgets\n        'widgets/filednd',\n        'widgets/filepaste',\n        'widgets/filepicker',\n        'widgets/image',\n        'widgets/queue',\n        'widgets/runtime',\n        'widgets/upload',\n        'widgets/validator',\n        'widgets/md5',\n    \n        // runtimes\n        // html5\n        'runtime/html5/blob',\n        'runtime/html5/dnd',\n        'runtime/html5/filepaste',\n        'runtime/html5/filepicker',\n        'runtime/html5/imagemeta/exif',\n        'runtime/html5/androidpatch',\n        'runtime/html5/image',\n        'runtime/html5/transport',\n        'runtime/html5/md5',\n    \n        // flash\n        'runtime/flash/filepicker',\n        'runtime/flash/image',\n        'runtime/flash/transport',\n        'runtime/flash/blob',\n        'runtime/flash/md5'\n    ], function( Base ) {\n        return Base;\n    });\n    /**\n     * @fileOverview 日志组件，主要用来收集错误信息，可以帮助 webuploader 更好的定位问题和发展。\n     *\n     * 如果您不想要启用此功能，请在打包的时候去掉 log 模块。\n     *\n     * 或者可以在初始化的时候通过 options.disableWidgets 属性禁用。\n     *\n     * 如：\n     * WebUploader.create({\n     *     ...\n     *\n     *     disableWidgets: 'log',\n     *\n     *     ...\n     * })\n     */\n    define('widgets/log',[\n        'base',\n        'uploader',\n        'widgets/widget'\n    ], function( Base, Uploader ) {\n        var $ = Base.$,\n            logUrl = ' http://static.tieba.baidu.com/tb/pms/img/st.gif??',\n            product = (location.hostname || location.host || 'protected').toLowerCase(),\n    \n            // 只针对 baidu 内部产品用户做统计功能。\n            enable = product && /baidu/i.exec(product),\n            base;\n    \n        if (!enable) {\n            return;\n        }\n    \n        base = {\n            dv: 3,\n            master: 'webuploader',\n            online: /test/.exec(product) ? 0 : 1,\n            module: '',\n            product: product,\n            type: 0\n        };\n    \n        function send(data) {\n            var obj = $.extend({}, base, data),\n                url = logUrl.replace(/^(.*)\\?/, '$1' + $.param( obj )),\n                image = new Image();\n    \n            image.src = url;\n        }\n    \n        return Uploader.register({\n            name: 'log',\n    \n            init: function() {\n                var owner = this.owner,\n                    count = 0,\n                    size = 0;\n    \n                owner\n                    .on('error', function(code) {\n                        send({\n                            type: 2,\n                            c_error_code: code\n                        });\n                    })\n                    .on('uploadError', function(file, reason) {\n                        send({\n                            type: 2,\n                            c_error_code: 'UPLOAD_ERROR',\n                            c_reason: '' + reason\n                        });\n                    })\n                    .on('uploadComplete', function(file) {\n                        count++;\n                        size += file.size;\n                    }).\n                    on('uploadFinished', function() {\n                        send({\n                            c_count: count,\n                            c_size: size\n                        });\n                        count = size = 0;\n                    });\n    \n                send({\n                    c_usage: 1\n                });\n            }\n        });\n    });\n    /**\n     * @fileOverview Uploader上传类\n     */\n    define('webuploader',[\n        'preset/all',\n        'widgets/log'\n    ], function( preset ) {\n        return preset;\n    });\n\n    var _require = require;\n    return _require('webuploader');\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/webuploader/webuploader.flashonly.js",
    "content": "/*! WebUploader 0.1.5 */\n\n\n/**\n * @fileOverview 让内部各个部件的代码可以用[amd](https://github.com/amdjs/amdjs-api/wiki/AMD)模块定义方式组织起来。\n *\n * AMD API 内部的简单不完全实现，请忽略。只有当WebUploader被合并成一个文件的时候才会引入。\n */\n(function( root, factory ) {\n    var modules = {},\n\n        // 内部require, 简单不完全实现。\n        // https://github.com/amdjs/amdjs-api/wiki/require\n        _require = function( deps, callback ) {\n            var args, len, i;\n\n            // 如果deps不是数组，则直接返回指定module\n            if ( typeof deps === 'string' ) {\n                return getModule( deps );\n            } else {\n                args = [];\n                for( len = deps.length, i = 0; i < len; i++ ) {\n                    args.push( getModule( deps[ i ] ) );\n                }\n\n                return callback.apply( null, args );\n            }\n        },\n\n        // 内部define，暂时不支持不指定id.\n        _define = function( id, deps, factory ) {\n            if ( arguments.length === 2 ) {\n                factory = deps;\n                deps = null;\n            }\n\n            _require( deps || [], function() {\n                setModule( id, factory, arguments );\n            });\n        },\n\n        // 设置module, 兼容CommonJs写法。\n        setModule = function( id, factory, args ) {\n            var module = {\n                    exports: factory\n                },\n                returned;\n\n            if ( typeof factory === 'function' ) {\n                args.length || (args = [ _require, module.exports, module ]);\n                returned = factory.apply( null, args );\n                returned !== undefined && (module.exports = returned);\n            }\n\n            modules[ id ] = module.exports;\n        },\n\n        // 根据id获取module\n        getModule = function( id ) {\n            var module = modules[ id ] || root[ id ];\n\n            if ( !module ) {\n                throw new Error( '`' + id + '` is undefined' );\n            }\n\n            return module;\n        },\n\n        // 将所有modules，将路径ids装换成对象。\n        exportsTo = function( obj ) {\n            var key, host, parts, part, last, ucFirst;\n\n            // make the first character upper case.\n            ucFirst = function( str ) {\n                return str && (str.charAt( 0 ).toUpperCase() + str.substr( 1 ));\n            };\n\n            for ( key in modules ) {\n                host = obj;\n\n                if ( !modules.hasOwnProperty( key ) ) {\n                    continue;\n                }\n\n                parts = key.split('/');\n                last = ucFirst( parts.pop() );\n\n                while( (part = ucFirst( parts.shift() )) ) {\n                    host[ part ] = host[ part ] || {};\n                    host = host[ part ];\n                }\n\n                host[ last ] = modules[ key ];\n            }\n\n            return obj;\n        },\n\n        makeExport = function( dollar ) {\n            root.__dollar = dollar;\n\n            // exports every module.\n            return exportsTo( factory( root, _define, _require ) );\n        },\n\n        origin;\n\n    if ( typeof module === 'object' && typeof module.exports === 'object' ) {\n\n        // For CommonJS and CommonJS-like environments where a proper window is present,\n        module.exports = makeExport();\n    } else if ( typeof define === 'function' && define.amd ) {\n\n        // Allow using this built library as an AMD module\n        // in another project. That other project will only\n        // see this AMD call, not the internal modules in\n        // the closure below.\n        define([ 'jquery' ], makeExport );\n    } else {\n\n        // Browser globals case. Just assign the\n        // result to a property on the global.\n        origin = root.WebUploader;\n        root.WebUploader = makeExport();\n        root.WebUploader.noConflict = function() {\n            root.WebUploader = origin;\n        };\n    }\n})( window, function( window, define, require ) {\n\n\n    /**\n     * @fileOverview jQuery or Zepto\n     */\n    define('dollar-third',[],function() {\n        var $ = window.__dollar || window.jQuery || window.Zepto;\n    \n        if ( !$ ) {\n            throw new Error('jQuery or Zepto not found!');\n        }\n    \n        return $;\n    });\n    /**\n     * @fileOverview Dom 操作相关\n     */\n    define('dollar',[\n        'dollar-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 使用jQuery的Promise\n     */\n    define('promise-third',[\n        'dollar'\n    ], function( $ ) {\n        return {\n            Deferred: $.Deferred,\n            when: $.when,\n    \n            isPromise: function( anything ) {\n                return anything && typeof anything.then === 'function';\n            }\n        };\n    });\n    /**\n     * @fileOverview Promise/A+\n     */\n    define('promise',[\n        'promise-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 基础类方法。\n     */\n    \n    /**\n     * Web Uploader内部类的详细说明，以下提及的功能类，都可以在`WebUploader`这个变量中访问到。\n     *\n     * As you know, Web Uploader的每个文件都是用过[AMD](https://github.com/amdjs/amdjs-api/wiki/AMD)规范中的`define`组织起来的, 每个Module都会有个module id.\n     * 默认module id为该文件的路径，而此路径将会转化成名字空间存放在WebUploader中。如：\n     *\n     * * module `base`：WebUploader.Base\n     * * module `file`: WebUploader.File\n     * * module `lib/dnd`: WebUploader.Lib.Dnd\n     * * module `runtime/html5/dnd`: WebUploader.Runtime.Html5.Dnd\n     *\n     *\n     * 以下文档中对类的使用可能省略掉了`WebUploader`前缀。\n     * @module WebUploader\n     * @title WebUploader API文档\n     */\n    define('base',[\n        'dollar',\n        'promise'\n    ], function( $, promise ) {\n    \n        var noop = function() {},\n            call = Function.call;\n    \n        // http://jsperf.com/uncurrythis\n        // 反科里化\n        function uncurryThis( fn ) {\n            return function() {\n                return call.apply( fn, arguments );\n            };\n        }\n    \n        function bindFn( fn, context ) {\n            return function() {\n                return fn.apply( context, arguments );\n            };\n        }\n    \n        function createObject( proto ) {\n            var f;\n    \n            if ( Object.create ) {\n                return Object.create( proto );\n            } else {\n                f = function() {};\n                f.prototype = proto;\n                return new f();\n            }\n        }\n    \n    \n        /**\n         * 基础类，提供一些简单常用的方法。\n         * @class Base\n         */\n        return {\n    \n            /**\n             * @property {String} version 当前版本号。\n             */\n            version: '0.1.5',\n    \n            /**\n             * @property {jQuery|Zepto} $ 引用依赖的jQuery或者Zepto对象。\n             */\n            $: $,\n    \n            Deferred: promise.Deferred,\n    \n            isPromise: promise.isPromise,\n    \n            when: promise.when,\n    \n            /**\n             * @description  简单的浏览器检查结果。\n             *\n             * * `webkit`  webkit版本号，如果浏览器为非webkit内核，此属性为`undefined`。\n             * * `chrome`  chrome浏览器版本号，如果浏览器为chrome，此属性为`undefined`。\n             * * `ie`  ie浏览器版本号，如果浏览器为非ie，此属性为`undefined`。**暂不支持ie10+**\n             * * `firefox`  firefox浏览器版本号，如果浏览器为非firefox，此属性为`undefined`。\n             * * `safari`  safari浏览器版本号，如果浏览器为非safari，此属性为`undefined`。\n             * * `opera`  opera浏览器版本号，如果浏览器为非opera，此属性为`undefined`。\n             *\n             * @property {Object} [browser]\n             */\n            browser: (function( ua ) {\n                var ret = {},\n                    webkit = ua.match( /WebKit\\/([\\d.]+)/ ),\n                    chrome = ua.match( /Chrome\\/([\\d.]+)/ ) ||\n                        ua.match( /CriOS\\/([\\d.]+)/ ),\n    \n                    ie = ua.match( /MSIE\\s([\\d\\.]+)/ ) ||\n                        ua.match( /(?:trident)(?:.*rv:([\\w.]+))?/i ),\n                    firefox = ua.match( /Firefox\\/([\\d.]+)/ ),\n                    safari = ua.match( /Safari\\/([\\d.]+)/ ),\n                    opera = ua.match( /OPR\\/([\\d.]+)/ );\n    \n                webkit && (ret.webkit = parseFloat( webkit[ 1 ] ));\n                chrome && (ret.chrome = parseFloat( chrome[ 1 ] ));\n                ie && (ret.ie = parseFloat( ie[ 1 ] ));\n                firefox && (ret.firefox = parseFloat( firefox[ 1 ] ));\n                safari && (ret.safari = parseFloat( safari[ 1 ] ));\n                opera && (ret.opera = parseFloat( opera[ 1 ] ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * @description  操作系统检查结果。\n             *\n             * * `android`  如果在android浏览器环境下，此值为对应的android版本号，否则为`undefined`。\n             * * `ios` 如果在ios浏览器环境下，此值为对应的ios版本号，否则为`undefined`。\n             * @property {Object} [os]\n             */\n            os: (function( ua ) {\n                var ret = {},\n    \n                    // osx = !!ua.match( /\\(Macintosh\\; Intel / ),\n                    android = ua.match( /(?:Android);?[\\s\\/]+([\\d.]+)?/ ),\n                    ios = ua.match( /(?:iPad|iPod|iPhone).*OS\\s([\\d_]+)/ );\n    \n                // osx && (ret.osx = true);\n                android && (ret.android = parseFloat( android[ 1 ] ));\n                ios && (ret.ios = parseFloat( ios[ 1 ].replace( /_/g, '.' ) ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * 实现类与类之间的继承。\n             * @method inherits\n             * @grammar Base.inherits( super ) => child\n             * @grammar Base.inherits( super, protos ) => child\n             * @grammar Base.inherits( super, protos, statics ) => child\n             * @param  {Class} super 父类\n             * @param  {Object | Function} [protos] 子类或者对象。如果对象中包含constructor，子类将是用此属性值。\n             * @param  {Function} [protos.constructor] 子类构造器，不指定的话将创建个临时的直接执行父类构造器的方法。\n             * @param  {Object} [statics] 静态属性或方法。\n             * @return {Class} 返回子类。\n             * @example\n             * function Person() {\n             *     console.log( 'Super' );\n             * }\n             * Person.prototype.hello = function() {\n             *     console.log( 'hello' );\n             * };\n             *\n             * var Manager = Base.inherits( Person, {\n             *     world: function() {\n             *         console.log( 'World' );\n             *     }\n             * });\n             *\n             * // 因为没有指定构造器，父类的构造器将会执行。\n             * var instance = new Manager();    // => Super\n             *\n             * // 继承子父类的方法\n             * instance.hello();    // => hello\n             * instance.world();    // => World\n             *\n             * // 子类的__super__属性指向父类\n             * console.log( Manager.__super__ === Person );    // => true\n             */\n            inherits: function( Super, protos, staticProtos ) {\n                var child;\n    \n                if ( typeof protos === 'function' ) {\n                    child = protos;\n                    protos = null;\n                } else if ( protos && protos.hasOwnProperty('constructor') ) {\n                    child = protos.constructor;\n                } else {\n                    child = function() {\n                        return Super.apply( this, arguments );\n                    };\n                }\n    \n                // 复制静态方法\n                $.extend( true, child, Super, staticProtos || {} );\n    \n                /* jshint camelcase: false */\n    \n                // 让子类的__super__属性指向父类。\n                child.__super__ = Super.prototype;\n    \n                // 构建原型，添加原型方法或属性。\n                // 暂时用Object.create实现。\n                child.prototype = createObject( Super.prototype );\n                protos && $.extend( true, child.prototype, protos );\n    \n                return child;\n            },\n    \n            /**\n             * 一个不做任何事情的方法。可以用来赋值给默认的callback.\n             * @method noop\n             */\n            noop: noop,\n    \n            /**\n             * 返回一个新的方法，此方法将已指定的`context`来执行。\n             * @grammar Base.bindFn( fn, context ) => Function\n             * @method bindFn\n             * @example\n             * var doSomething = function() {\n             *         console.log( this.name );\n             *     },\n             *     obj = {\n             *         name: 'Object Name'\n             *     },\n             *     aliasFn = Base.bind( doSomething, obj );\n             *\n             *  aliasFn();    // => Object Name\n             *\n             */\n            bindFn: bindFn,\n    \n            /**\n             * 引用Console.log如果存在的话，否则引用一个[空函数noop](#WebUploader:Base.noop)。\n             * @grammar Base.log( args... ) => undefined\n             * @method log\n             */\n            log: (function() {\n                if ( window.console ) {\n                    return bindFn( console.log, console );\n                }\n                return noop;\n            })(),\n    \n            nextTick: (function() {\n    \n                return function( cb ) {\n                    setTimeout( cb, 1 );\n                };\n    \n                // @bug 当浏览器不在当前窗口时就停了。\n                // var next = window.requestAnimationFrame ||\n                //     window.webkitRequestAnimationFrame ||\n                //     window.mozRequestAnimationFrame ||\n                //     function( cb ) {\n                //         window.setTimeout( cb, 1000 / 60 );\n                //     };\n    \n                // // fix: Uncaught TypeError: Illegal invocation\n                // return bindFn( next, window );\n            })(),\n    \n            /**\n             * 被[uncurrythis](http://www.2ality.com/2011/11/uncurrying-this.html)的数组slice方法。\n             * 将用来将非数组对象转化成数组对象。\n             * @grammar Base.slice( target, start[, end] ) => Array\n             * @method slice\n             * @example\n             * function doSomthing() {\n             *     var args = Base.slice( arguments, 1 );\n             *     console.log( args );\n             * }\n             *\n             * doSomthing( 'ignored', 'arg2', 'arg3' );    // => Array [\"arg2\", \"arg3\"]\n             */\n            slice: uncurryThis( [].slice ),\n    \n            /**\n             * 生成唯一的ID\n             * @method guid\n             * @grammar Base.guid() => String\n             * @grammar Base.guid( prefx ) => String\n             */\n            guid: (function() {\n                var counter = 0;\n    \n                return function( prefix ) {\n                    var guid = (+new Date()).toString( 32 ),\n                        i = 0;\n    \n                    for ( ; i < 5; i++ ) {\n                        guid += Math.floor( Math.random() * 65535 ).toString( 32 );\n                    }\n    \n                    return (prefix || 'wu_') + guid + (counter++).toString( 32 );\n                };\n            })(),\n    \n            /**\n             * 格式化文件大小, 输出成带单位的字符串\n             * @method formatSize\n             * @grammar Base.formatSize( size ) => String\n             * @grammar Base.formatSize( size, pointLength ) => String\n             * @grammar Base.formatSize( size, pointLength, units ) => String\n             * @param {Number} size 文件大小\n             * @param {Number} [pointLength=2] 精确到的小数点数。\n             * @param {Array} [units=[ 'B', 'K', 'M', 'G', 'TB' ]] 单位数组。从字节，到千字节，一直往上指定。如果单位数组里面只指定了到了K(千字节)，同时文件大小大于M, 此方法的输出将还是显示成多少K.\n             * @example\n             * console.log( Base.formatSize( 100 ) );    // => 100B\n             * console.log( Base.formatSize( 1024 ) );    // => 1.00K\n             * console.log( Base.formatSize( 1024, 0 ) );    // => 1K\n             * console.log( Base.formatSize( 1024 * 1024 ) );    // => 1.00M\n             * console.log( Base.formatSize( 1024 * 1024 * 1024 ) );    // => 1.00G\n             * console.log( Base.formatSize( 1024 * 1024 * 1024, 0, ['B', 'KB', 'MB'] ) );    // => 1024MB\n             */\n            formatSize: function( size, pointLength, units ) {\n                var unit;\n    \n                units = units || [ 'B', 'K', 'M', 'G', 'TB' ];\n    \n                while ( (unit = units.shift()) && size > 1024 ) {\n                    size = size / 1024;\n                }\n    \n                return (unit === 'B' ? size : size.toFixed( pointLength || 2 )) +\n                        unit;\n            }\n        };\n    });\n    /**\n     * 事件处理类，可以独立使用，也可以扩展给对象使用。\n     * @fileOverview Mediator\n     */\n    define('mediator',[\n        'base'\n    ], function( Base ) {\n        var $ = Base.$,\n            slice = [].slice,\n            separator = /\\s+/,\n            protos;\n    \n        // 根据条件过滤出事件handlers.\n        function findHandlers( arr, name, callback, context ) {\n            return $.grep( arr, function( handler ) {\n                return handler &&\n                        (!name || handler.e === name) &&\n                        (!callback || handler.cb === callback ||\n                        handler.cb._cb === callback) &&\n                        (!context || handler.ctx === context);\n            });\n        }\n    \n        function eachEvent( events, callback, iterator ) {\n            // 不支持对象，只支持多个event用空格隔开\n            $.each( (events || '').split( separator ), function( _, key ) {\n                iterator( key, callback );\n            });\n        }\n    \n        function triggerHanders( events, args ) {\n            var stoped = false,\n                i = -1,\n                len = events.length,\n                handler;\n    \n            while ( ++i < len ) {\n                handler = events[ i ];\n    \n                if ( handler.cb.apply( handler.ctx2, args ) === false ) {\n                    stoped = true;\n                    break;\n                }\n            }\n    \n            return !stoped;\n        }\n    \n        protos = {\n    \n            /**\n             * 绑定事件。\n             *\n             * `callback`方法在执行时，arguments将会来源于trigger的时候携带的参数。如\n             * ```javascript\n             * var obj = {};\n             *\n             * // 使得obj有事件行为\n             * Mediator.installTo( obj );\n             *\n             * obj.on( 'testa', function( arg1, arg2 ) {\n             *     console.log( arg1, arg2 ); // => 'arg1', 'arg2'\n             * });\n             *\n             * obj.trigger( 'testa', 'arg1', 'arg2' );\n             * ```\n             *\n             * 如果`callback`中，某一个方法`return false`了，则后续的其他`callback`都不会被执行到。\n             * 切会影响到`trigger`方法的返回值，为`false`。\n             *\n             * `on`还可以用来添加一个特殊事件`all`, 这样所有的事件触发都会响应到。同时此类`callback`中的arguments有一个不同处，\n             * 就是第一个参数为`type`，记录当前是什么事件在触发。此类`callback`的优先级比脚低，会再正常`callback`执行完后触发。\n             * ```javascript\n             * obj.on( 'all', function( type, arg1, arg2 ) {\n             *     console.log( type, arg1, arg2 ); // => 'testa', 'arg1', 'arg2'\n             * });\n             * ```\n             *\n             * @method on\n             * @grammar on( name, callback[, context] ) => self\n             * @param  {String}   name     事件名，支持多个事件用空格隔开\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             * @class Mediator\n             */\n            on: function( name, callback, context ) {\n                var me = this,\n                    set;\n    \n                if ( !callback ) {\n                    return this;\n                }\n    \n                set = this._events || (this._events = []);\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var handler = { e: name };\n    \n                    handler.cb = callback;\n                    handler.ctx = context;\n                    handler.ctx2 = context || me;\n                    handler.id = set.length;\n    \n                    set.push( handler );\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 绑定事件，且当handler执行完后，自动解除绑定。\n             * @method once\n             * @grammar once( name, callback[, context] ) => self\n             * @param  {String}   name     事件名\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            once: function( name, callback, context ) {\n                var me = this;\n    \n                if ( !callback ) {\n                    return me;\n                }\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var once = function() {\n                            me.off( name, once );\n                            return callback.apply( context || me, arguments );\n                        };\n    \n                    once._cb = callback;\n                    me.on( name, once, context );\n                });\n    \n                return me;\n            },\n    \n            /**\n             * 解除事件绑定\n             * @method off\n             * @grammar off( [name[, callback[, context] ] ] ) => self\n             * @param  {String}   [name]     事件名\n             * @param  {Function} [callback] 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            off: function( name, cb, ctx ) {\n                var events = this._events;\n    \n                if ( !events ) {\n                    return this;\n                }\n    \n                if ( !name && !cb && !ctx ) {\n                    this._events = [];\n                    return this;\n                }\n    \n                eachEvent( name, cb, function( name, cb ) {\n                    $.each( findHandlers( events, name, cb, ctx ), function() {\n                        delete events[ this.id ];\n                    });\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 触发事件\n             * @method trigger\n             * @grammar trigger( name[, args...] ) => self\n             * @param  {String}   type     事件名\n             * @param  {*} [...] 任意参数\n             * @return {Boolean} 如果handler中return false了，则返回false, 否则返回true\n             */\n            trigger: function( type ) {\n                var args, events, allEvents;\n    \n                if ( !this._events || !type ) {\n                    return this;\n                }\n    \n                args = slice.call( arguments, 1 );\n                events = findHandlers( this._events, type );\n                allEvents = findHandlers( this._events, 'all' );\n    \n                return triggerHanders( events, args ) &&\n                        triggerHanders( allEvents, arguments );\n            }\n        };\n    \n        /**\n         * 中介者，它本身是个单例，但可以通过[installTo](#WebUploader:Mediator:installTo)方法，使任何对象具备事件行为。\n         * 主要目的是负责模块与模块之间的合作，降低耦合度。\n         *\n         * @class Mediator\n         */\n        return $.extend({\n    \n            /**\n             * 可以通过这个接口，使任何对象具备事件功能。\n             * @method installTo\n             * @param  {Object} obj 需要具备事件行为的对象。\n             * @return {Object} 返回obj.\n             */\n            installTo: function( obj ) {\n                return $.extend( obj, protos );\n            }\n    \n        }, protos );\n    });\n    /**\n     * @fileOverview Uploader上传类\n     */\n    define('uploader',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$;\n    \n        /**\n         * 上传入口类。\n         * @class Uploader\n         * @constructor\n         * @grammar new Uploader( opts ) => Uploader\n         * @example\n         * var uploader = WebUploader.Uploader({\n         *     swf: 'path_of_swf/Uploader.swf',\n         *\n         *     // 开起分片上传。\n         *     chunked: true\n         * });\n         */\n        function Uploader( opts ) {\n            this.options = $.extend( true, {}, Uploader.options, opts );\n            this._init( this.options );\n        }\n    \n        // default Options\n        // widgets中有相应扩展\n        Uploader.options = {};\n        Mediator.installTo( Uploader.prototype );\n    \n        // 批量添加纯命令式方法。\n        $.each({\n            upload: 'start-upload',\n            stop: 'stop-upload',\n            getFile: 'get-file',\n            getFiles: 'get-files',\n            addFile: 'add-file',\n            addFiles: 'add-file',\n            sort: 'sort-files',\n            removeFile: 'remove-file',\n            cancelFile: 'cancel-file',\n            skipFile: 'skip-file',\n            retry: 'retry',\n            isInProgress: 'is-in-progress',\n            makeThumb: 'make-thumb',\n            md5File: 'md5-file',\n            getDimension: 'get-dimension',\n            addButton: 'add-btn',\n            predictRuntimeType: 'predict-runtime-type',\n            refresh: 'refresh',\n            disable: 'disable',\n            enable: 'enable',\n            reset: 'reset'\n        }, function( fn, command ) {\n            Uploader.prototype[ fn ] = function() {\n                return this.request( command, arguments );\n            };\n        });\n    \n        $.extend( Uploader.prototype, {\n            state: 'pending',\n    \n            _init: function( opts ) {\n                var me = this;\n    \n                me.request( 'init', opts, function() {\n                    me.state = 'ready';\n                    me.trigger('ready');\n                });\n            },\n    \n            /**\n             * 获取或者设置Uploader配置项。\n             * @method option\n             * @grammar option( key ) => *\n             * @grammar option( key, val ) => self\n             * @example\n             *\n             * // 初始状态图片上传前不会压缩\n             * var uploader = new WebUploader.Uploader({\n             *     compress: null;\n             * });\n             *\n             * // 修改后图片上传前，尝试将图片压缩到1600 * 1600\n             * uploader.option( 'compress', {\n             *     width: 1600,\n             *     height: 1600\n             * });\n             */\n            option: function( key, val ) {\n                var opts = this.options;\n    \n                // setter\n                if ( arguments.length > 1 ) {\n    \n                    if ( $.isPlainObject( val ) &&\n                            $.isPlainObject( opts[ key ] ) ) {\n                        $.extend( opts[ key ], val );\n                    } else {\n                        opts[ key ] = val;\n                    }\n    \n                } else {    // getter\n                    return key ? opts[ key ] : opts;\n                }\n            },\n    \n            /**\n             * 获取文件统计信息。返回一个包含一下信息的对象。\n             * * `successNum` 上传成功的文件数\n             * * `progressNum` 上传中的文件数\n             * * `cancelNum` 被删除的文件数\n             * * `invalidNum` 无效的文件数\n             * * `uploadFailNum` 上传失败的文件数\n             * * `queueNum` 还在队列中的文件数\n             * * `interruptNum` 被暂停的文件数\n             * @method getStats\n             * @grammar getStats() => Object\n             */\n            getStats: function() {\n                // return this._mgr.getStats.apply( this._mgr, arguments );\n                var stats = this.request('get-stats');\n    \n                return stats ? {\n                    successNum: stats.numOfSuccess,\n                    progressNum: stats.numOfProgress,\n    \n                    // who care?\n                    // queueFailNum: 0,\n                    cancelNum: stats.numOfCancel,\n                    invalidNum: stats.numOfInvalid,\n                    uploadFailNum: stats.numOfUploadFailed,\n                    queueNum: stats.numOfQueue,\n                    interruptNum: stats.numofInterrupt\n                } : {};\n            },\n    \n            // 需要重写此方法来来支持opts.onEvent和instance.onEvent的处理器\n            trigger: function( type/*, args...*/ ) {\n                var args = [].slice.call( arguments, 1 ),\n                    opts = this.options,\n                    name = 'on' + type.substring( 0, 1 ).toUpperCase() +\n                        type.substring( 1 );\n    \n                if (\n                        // 调用通过on方法注册的handler.\n                        Mediator.trigger.apply( this, arguments ) === false ||\n    \n                        // 调用opts.onEvent\n                        $.isFunction( opts[ name ] ) &&\n                        opts[ name ].apply( this, args ) === false ||\n    \n                        // 调用this.onEvent\n                        $.isFunction( this[ name ] ) &&\n                        this[ name ].apply( this, args ) === false ||\n    \n                        // 广播所有uploader的事件。\n                        Mediator.trigger.apply( Mediator,\n                        [ this, type ].concat( args ) ) === false ) {\n    \n                    return false;\n                }\n    \n                return true;\n            },\n    \n            /**\n             * 销毁 webuploader 实例\n             * @method destroy\n             * @grammar destroy() => undefined\n             */\n            destroy: function() {\n                this.request( 'destroy', arguments );\n                this.off();\n            },\n    \n            // widgets/widget.js将补充此方法的详细文档。\n            request: Base.noop\n        });\n    \n        /**\n         * 创建Uploader实例，等同于new Uploader( opts );\n         * @method create\n         * @class Base\n         * @static\n         * @grammar Base.create( opts ) => Uploader\n         */\n        Base.create = Uploader.create = function( opts ) {\n            return new Uploader( opts );\n        };\n    \n        // 暴露Uploader，可以通过它来扩展业务逻辑。\n        Base.Uploader = Uploader;\n    \n        return Uploader;\n    });\n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/runtime',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            factories = {},\n    \n            // 获取对象的第一个key\n            getFirstKey = function( obj ) {\n                for ( var key in obj ) {\n                    if ( obj.hasOwnProperty( key ) ) {\n                        return key;\n                    }\n                }\n                return null;\n            };\n    \n        // 接口类。\n        function Runtime( options ) {\n            this.options = $.extend({\n                container: document.body\n            }, options );\n            this.uid = Base.guid('rt_');\n        }\n    \n        $.extend( Runtime.prototype, {\n    \n            getContainer: function() {\n                var opts = this.options,\n                    parent, container;\n    \n                if ( this._container ) {\n                    return this._container;\n                }\n    \n                parent = $( opts.container || document.body );\n                container = $( document.createElement('div') );\n    \n                container.attr( 'id', 'rt_' + this.uid );\n                container.css({\n                    position: 'absolute',\n                    top: '0px',\n                    left: '0px',\n                    width: '1px',\n                    height: '1px',\n                    overflow: 'hidden'\n                });\n    \n                parent.append( container );\n                parent.addClass('webuploader-container');\n                this._container = container;\n                this._parent = parent;\n                return container;\n            },\n    \n            init: Base.noop,\n            exec: Base.noop,\n    \n            destroy: function() {\n                this._container && this._container.remove();\n                this._parent && this._parent.removeClass('webuploader-container');\n                this.off();\n            }\n        });\n    \n        Runtime.orders = 'html5,flash';\n    \n    \n        /**\n         * 添加Runtime实现。\n         * @param {String} type    类型\n         * @param {Runtime} factory 具体Runtime实现。\n         */\n        Runtime.addRuntime = function( type, factory ) {\n            factories[ type ] = factory;\n        };\n    \n        Runtime.hasRuntime = function( type ) {\n            return !!(type ? factories[ type ] : getFirstKey( factories ));\n        };\n    \n        Runtime.create = function( opts, orders ) {\n            var type, runtime;\n    \n            orders = orders || Runtime.orders;\n            $.each( orders.split( /\\s*,\\s*/g ), function() {\n                if ( factories[ this ] ) {\n                    type = this;\n                    return false;\n                }\n            });\n    \n            type = type || getFirstKey( factories );\n    \n            if ( !type ) {\n                throw new Error('Runtime Error');\n            }\n    \n            runtime = new factories[ type ]( opts );\n            return runtime;\n        };\n    \n        Mediator.installTo( Runtime.prototype );\n        return Runtime;\n    });\n    \n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/client',[\n        'base',\n        'mediator',\n        'runtime/runtime'\n    ], function( Base, Mediator, Runtime ) {\n    \n        var cache;\n    \n        cache = (function() {\n            var obj = {};\n    \n            return {\n                add: function( runtime ) {\n                    obj[ runtime.uid ] = runtime;\n                },\n    \n                get: function( ruid, standalone ) {\n                    var i;\n    \n                    if ( ruid ) {\n                        return obj[ ruid ];\n                    }\n    \n                    for ( i in obj ) {\n                        // 有些类型不能重用，比如filepicker.\n                        if ( standalone && obj[ i ].__standalone ) {\n                            continue;\n                        }\n    \n                        return obj[ i ];\n                    }\n    \n                    return null;\n                },\n    \n                remove: function( runtime ) {\n                    delete obj[ runtime.uid ];\n                }\n            };\n        })();\n    \n        function RuntimeClient( component, standalone ) {\n            var deferred = Base.Deferred(),\n                runtime;\n    \n            this.uid = Base.guid('client_');\n    \n            // 允许runtime没有初始化之前，注册一些方法在初始化后执行。\n            this.runtimeReady = function( cb ) {\n                return deferred.done( cb );\n            };\n    \n            this.connectRuntime = function( opts, cb ) {\n    \n                // already connected.\n                if ( runtime ) {\n                    throw new Error('already connected!');\n                }\n    \n                deferred.done( cb );\n    \n                if ( typeof opts === 'string' && cache.get( opts ) ) {\n                    runtime = cache.get( opts );\n                }\n    \n                // 像filePicker只能独立存在，不能公用。\n                runtime = runtime || cache.get( null, standalone );\n    \n                // 需要创建\n                if ( !runtime ) {\n                    runtime = Runtime.create( opts, opts.runtimeOrder );\n                    runtime.__promise = deferred.promise();\n                    runtime.once( 'ready', deferred.resolve );\n                    runtime.init();\n                    cache.add( runtime );\n                    runtime.__client = 1;\n                } else {\n                    // 来自cache\n                    Base.$.extend( runtime.options, opts );\n                    runtime.__promise.then( deferred.resolve );\n                    runtime.__client++;\n                }\n    \n                standalone && (runtime.__standalone = standalone);\n                return runtime;\n            };\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.disconnectRuntime = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                runtime.__client--;\n    \n                if ( runtime.__client <= 0 ) {\n                    cache.remove( runtime );\n                    delete runtime.__promise;\n                    runtime.destroy();\n                }\n    \n                runtime = null;\n            };\n    \n            this.exec = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                var args = Base.slice( arguments );\n                component && args.unshift( component );\n    \n                return runtime.exec.apply( this, args );\n            };\n    \n            this.getRuid = function() {\n                return runtime && runtime.uid;\n            };\n    \n            this.destroy = (function( destroy ) {\n                return function() {\n                    destroy && destroy.apply( this, arguments );\n                    this.trigger('destroy');\n                    this.off();\n                    this.exec('destroy');\n                    this.disconnectRuntime();\n                };\n            })( this.destroy );\n        }\n    \n        Mediator.installTo( RuntimeClient.prototype );\n        return RuntimeClient;\n    });\n    /**\n     * @fileOverview Blob\n     */\n    define('lib/blob',[\n        'base',\n        'runtime/client'\n    ], function( Base, RuntimeClient ) {\n    \n        function Blob( ruid, source ) {\n            var me = this;\n    \n            me.source = source;\n            me.ruid = ruid;\n            this.size = source.size || 0;\n    \n            // 如果没有指定 mimetype, 但是知道文件后缀。\n            if ( !source.type && this.ext &&\n                    ~'jpg,jpeg,png,gif,bmp'.indexOf( this.ext ) ) {\n                this.type = 'image/' + (this.ext === 'jpg' ? 'jpeg' : this.ext);\n            } else {\n                this.type = source.type || 'application/octet-stream';\n            }\n    \n            RuntimeClient.call( me, 'Blob' );\n            this.uid = source.uid || this.uid;\n    \n            if ( ruid ) {\n                me.connectRuntime( ruid );\n            }\n        }\n    \n        Base.inherits( RuntimeClient, {\n            constructor: Blob,\n    \n            slice: function( start, end ) {\n                return this.exec( 'slice', start, end );\n            },\n    \n            getSource: function() {\n                return this.source;\n            }\n        });\n    \n        return Blob;\n    });\n    /**\n     * 为了统一化Flash的File和HTML5的File而存在。\n     * 以至于要调用Flash里面的File，也可以像调用HTML5版本的File一下。\n     * @fileOverview File\n     */\n    define('lib/file',[\n        'base',\n        'lib/blob'\n    ], function( Base, Blob ) {\n    \n        var uid = 1,\n            rExt = /\\.([^.]+)$/;\n    \n        function File( ruid, file ) {\n            var ext;\n    \n            this.name = file.name || ('untitled' + uid++);\n            ext = rExt.exec( file.name ) ? RegExp.$1.toLowerCase() : '';\n    \n            // todo 支持其他类型文件的转换。\n            // 如果有 mimetype, 但是文件名里面没有找出后缀规律\n            if ( !ext && file.type ) {\n                ext = /\\/(jpg|jpeg|png|gif|bmp)$/i.exec( file.type ) ?\n                        RegExp.$1.toLowerCase() : '';\n                this.name += '.' + ext;\n            }\n    \n            this.ext = ext;\n            this.lastModifiedDate = file.lastModifiedDate ||\n                    (new Date()).toLocaleString();\n    \n            Blob.apply( this, arguments );\n        }\n    \n        return Base.inherits( Blob, File );\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepicker',[\n        'base',\n        'runtime/client',\n        'lib/file'\n    ], function( Base, RuntimeClent, File ) {\n    \n        var $ = Base.$;\n    \n        function FilePicker( opts ) {\n            opts = this.options = $.extend({}, FilePicker.options, opts );\n    \n            opts.container = $( opts.id );\n    \n            if ( !opts.container.length ) {\n                throw new Error('按钮指定错误');\n            }\n    \n            opts.innerHTML = opts.innerHTML || opts.label ||\n                    opts.container.html() || '';\n    \n            opts.button = $( opts.button || document.createElement('div') );\n            opts.button.html( opts.innerHTML );\n            opts.container.html( opts.button );\n    \n            RuntimeClent.call( this, 'FilePicker', true );\n        }\n    \n        FilePicker.options = {\n            button: null,\n            container: null,\n            label: null,\n            innerHTML: null,\n            multiple: true,\n            accept: null,\n            name: 'file'\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePicker,\n    \n            init: function() {\n                var me = this,\n                    opts = me.options,\n                    button = opts.button;\n    \n                button.addClass('webuploader-pick');\n    \n                me.on( 'all', function( type ) {\n                    var files;\n    \n                    switch ( type ) {\n                        case 'mouseenter':\n                            button.addClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'mouseleave':\n                            button.removeClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'change':\n                            files = me.exec('getFiles');\n                            me.trigger( 'select', $.map( files, function( file ) {\n                                file = new File( me.getRuid(), file );\n    \n                                // 记录来源。\n                                file._refer = opts.container;\n                                return file;\n                            }), opts.container );\n                            break;\n                    }\n                });\n    \n                me.connectRuntime( opts, function() {\n                    me.refresh();\n                    me.exec( 'init', opts );\n                    me.trigger('ready');\n                });\n    \n                this._resizeHandler = Base.bindFn( this.refresh, this );\n                $( window ).on( 'resize', this._resizeHandler );\n            },\n    \n            refresh: function() {\n                var shimContainer = this.getRuntime().getContainer(),\n                    button = this.options.button,\n                    width = button.outerWidth ?\n                            button.outerWidth() : button.width(),\n    \n                    height = button.outerHeight ?\n                            button.outerHeight() : button.height(),\n    \n                    pos = button.offset();\n    \n                width && height && shimContainer.css({\n                    bottom: 'auto',\n                    right: 'auto',\n                    width: width + 'px',\n                    height: height + 'px'\n                }).offset( pos );\n            },\n    \n            enable: function() {\n                var btn = this.options.button;\n    \n                btn.removeClass('webuploader-pick-disable');\n                this.refresh();\n            },\n    \n            disable: function() {\n                var btn = this.options.button;\n    \n                this.getRuntime().getContainer().css({\n                    top: '-99999px'\n                });\n    \n                btn.addClass('webuploader-pick-disable');\n            },\n    \n            destroy: function() {\n                var btn = this.options.button;\n                $( window ).off( 'resize', this._resizeHandler );\n                btn.removeClass('webuploader-pick-disable webuploader-pick-hover ' +\n                    'webuploader-pick');\n            }\n        });\n    \n        return FilePicker;\n    });\n    \n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/widget',[\n        'base',\n        'uploader'\n    ], function( Base, Uploader ) {\n    \n        var $ = Base.$,\n            _init = Uploader.prototype._init,\n            _destroy = Uploader.prototype.destroy,\n            IGNORE = {},\n            widgetClass = [];\n    \n        function isArrayLike( obj ) {\n            if ( !obj ) {\n                return false;\n            }\n    \n            var length = obj.length,\n                type = $.type( obj );\n    \n            if ( obj.nodeType === 1 && length ) {\n                return true;\n            }\n    \n            return type === 'array' || type !== 'function' && type !== 'string' &&\n                    (length === 0 || typeof length === 'number' && length > 0 &&\n                    (length - 1) in obj);\n        }\n    \n        function Widget( uploader ) {\n            this.owner = uploader;\n            this.options = uploader.options;\n        }\n    \n        $.extend( Widget.prototype, {\n    \n            init: Base.noop,\n    \n            // 类Backbone的事件监听声明，监听uploader实例上的事件\n            // widget直接无法监听事件，事件只能通过uploader来传递\n            invoke: function( apiName, args ) {\n    \n                /*\n                    {\n                        'make-thumb': 'makeThumb'\n                    }\n                 */\n                var map = this.responseMap;\n    \n                // 如果无API响应声明则忽略\n                if ( !map || !(apiName in map) || !(map[ apiName ] in this) ||\n                        !$.isFunction( this[ map[ apiName ] ] ) ) {\n    \n                    return IGNORE;\n                }\n    \n                return this[ map[ apiName ] ].apply( this, args );\n    \n            },\n    \n            /**\n             * 发送命令。当传入`callback`或者`handler`中返回`promise`时。返回一个当所有`handler`中的promise都完成后完成的新`promise`。\n             * @method request\n             * @grammar request( command, args ) => * | Promise\n             * @grammar request( command, args, callback ) => Promise\n             * @for  Uploader\n             */\n            request: function() {\n                return this.owner.request.apply( this.owner, arguments );\n            }\n        });\n    \n        // 扩展Uploader.\n        $.extend( Uploader.prototype, {\n    \n            /**\n             * @property {String | Array} [disableWidgets=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 默认所有 Uploader.register 了的 widget 都会被加载，如果禁用某一部分，请通过此 option 指定黑名单。\n             */\n    \n            // 覆写_init用来初始化widgets\n            _init: function() {\n                var me = this,\n                    widgets = me._widgets = [],\n                    deactives = me.options.disableWidgets || '';\n    \n                $.each( widgetClass, function( _, klass ) {\n                    (!deactives || !~deactives.indexOf( klass._name )) &&\n                        widgets.push( new klass( me ) );\n                });\n    \n                return _init.apply( me, arguments );\n            },\n    \n            request: function( apiName, args, callback ) {\n                var i = 0,\n                    widgets = this._widgets,\n                    len = widgets && widgets.length,\n                    rlts = [],\n                    dfds = [],\n                    widget, rlt, promise, key;\n    \n                args = isArrayLike( args ) ? args : [ args ];\n    \n                for ( ; i < len; i++ ) {\n                    widget = widgets[ i ];\n                    rlt = widget.invoke( apiName, args );\n    \n                    if ( rlt !== IGNORE ) {\n    \n                        // Deferred对象\n                        if ( Base.isPromise( rlt ) ) {\n                            dfds.push( rlt );\n                        } else {\n                            rlts.push( rlt );\n                        }\n                    }\n                }\n    \n                // 如果有callback，则用异步方式。\n                if ( callback || dfds.length ) {\n                    promise = Base.when.apply( Base, dfds );\n                    key = promise.pipe ? 'pipe' : 'then';\n    \n                    // 很重要不能删除。删除了会死循环。\n                    // 保证执行顺序。让callback总是在下一个 tick 中执行。\n                    return promise[ key ](function() {\n                                var deferred = Base.Deferred(),\n                                    args = arguments;\n    \n                                if ( args.length === 1 ) {\n                                    args = args[ 0 ];\n                                }\n    \n                                setTimeout(function() {\n                                    deferred.resolve( args );\n                                }, 1 );\n    \n                                return deferred.promise();\n                            })[ callback ? key : 'done' ]( callback || Base.noop );\n                } else {\n                    return rlts[ 0 ];\n                }\n            },\n    \n            destroy: function() {\n                _destroy.apply( this, arguments );\n                this._widgets = null;\n            }\n        });\n    \n        /**\n         * 添加组件\n         * @grammar Uploader.register(proto);\n         * @grammar Uploader.register(map, proto);\n         * @param  {object} responseMap API 名称与函数实现的映射\n         * @param  {object} proto 组件原型，构造函数通过 constructor 属性定义\n         * @method Uploader.register\n         * @for Uploader\n         * @example\n         * Uploader.register({\n         *     'make-thumb': 'makeThumb'\n         * }, {\n         *     init: function( options ) {},\n         *     makeThumb: function() {}\n         * });\n         *\n         * Uploader.register({\n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         */\n        Uploader.register = Widget.register = function( responseMap, widgetProto ) {\n            var map = { init: 'init', destroy: 'destroy', name: 'anonymous' },\n                klass;\n    \n            if ( arguments.length === 1 ) {\n                widgetProto = responseMap;\n    \n                // 自动生成 map 表。\n                $.each(widgetProto, function(key) {\n                    if ( key[0] === '_' || key === 'name' ) {\n                        key === 'name' && (map.name = widgetProto.name);\n                        return;\n                    }\n    \n                    map[key.replace(/[A-Z]/g, '-$&').toLowerCase()] = key;\n                });\n    \n            } else {\n                map = $.extend( map, responseMap );\n            }\n    \n            widgetProto.responseMap = map;\n            klass = Base.inherits( Widget, widgetProto );\n            klass._name = map.name;\n            widgetClass.push( klass );\n    \n            return klass;\n        };\n    \n        /**\n         * 删除插件，只有在注册时指定了名字的才能被删除。\n         * @grammar Uploader.unRegister(name);\n         * @param  {string} name 组件名字\n         * @method Uploader.unRegister\n         * @for Uploader\n         * @example\n         *\n         * Uploader.register({\n         *     name: 'custom',\n         *     \n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         *\n         * Uploader.unRegister('custom');\n         */\n        Uploader.unRegister = Widget.unRegister = function( name ) {\n            if ( !name || name === 'anonymous' ) {\n                return;\n            }\n            \n            // 删除指定的插件。\n            for ( var i = widgetClass.length; i--; ) {\n                if ( widgetClass[i]._name === name ) {\n                    widgetClass.splice(i, 1)\n                }\n            }\n        };\n    \n        return Widget;\n    });\n    /**\n     * @fileOverview 文件选择相关\n     */\n    define('widgets/filepicker',[\n        'base',\n        'uploader',\n        'lib/filepicker',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePicker ) {\n        var $ = Base.$;\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Selector | Object} [pick=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 指定选择文件的按钮容器，不指定则不创建按钮。\n             *\n             * * `id` {Seletor|dom} 指定选择文件的按钮容器，不指定则不创建按钮。**注意** 这里虽然写的是 id, 但是不是只支持 id, 还支持 class, 或者 dom 节点。\n             * * `label` {String} 请采用 `innerHTML` 代替\n             * * `innerHTML` {String} 指定按钮文字。不指定时优先从指定的容器中看是否自带文字。\n             * * `multiple` {Boolean} 是否开起同时选择多个文件能力。\n             */\n            pick: null,\n    \n            /**\n             * @property {Arroy} [accept=null]\n             * @namespace options\n             * @for Uploader\n             * @description 指定接受哪些类型的文件。 由于目前还有ext转mimeType表，所以这里需要分开指定。\n             *\n             * * `title` {String} 文字描述\n             * * `extensions` {String} 允许的文件后缀，不带点，多个用逗号分割。\n             * * `mimeTypes` {String} 多个用逗号分割。\n             *\n             * 如：\n             *\n             * ```\n             * {\n             *     title: 'Images',\n             *     extensions: 'gif,jpg,jpeg,bmp,png',\n             *     mimeTypes: 'image/*'\n             * }\n             * ```\n             */\n            accept: null/*{\n                title: 'Images',\n                extensions: 'gif,jpg,jpeg,bmp,png',\n                mimeTypes: 'image/*'\n            }*/\n        });\n    \n        return Uploader.register({\n            name: 'picker',\n    \n            init: function( opts ) {\n                this.pickers = [];\n                return opts.pick && this.addBtn( opts.pick );\n            },\n    \n            refresh: function() {\n                $.each( this.pickers, function() {\n                    this.refresh();\n                });\n            },\n    \n            /**\n             * @method addButton\n             * @for Uploader\n             * @grammar addButton( pick ) => Promise\n             * @description\n             * 添加文件选择按钮，如果一个按钮不够，需要调用此方法来添加。参数跟[options.pick](#WebUploader:Uploader:options)一致。\n             * @example\n             * uploader.addButton({\n             *     id: '#btnContainer',\n             *     innerHTML: '选择文件'\n             * });\n             */\n            addBtn: function( pick ) {\n                var me = this,\n                    opts = me.options,\n                    accept = opts.accept,\n                    promises = [];\n    \n                if ( !pick ) {\n                    return;\n                }\n    \n                $.isPlainObject( pick ) || (pick = {\n                    id: pick\n                });\n    \n                $( pick.id ).each(function() {\n                    var options, picker, deferred;\n    \n                    deferred = Base.Deferred();\n    \n                    options = $.extend({}, pick, {\n                        accept: $.isPlainObject( accept ) ? [ accept ] : accept,\n                        swf: opts.swf,\n                        runtimeOrder: opts.runtimeOrder,\n                        id: this\n                    });\n    \n                    picker = new FilePicker( options );\n    \n                    picker.once( 'ready', deferred.resolve );\n                    picker.on( 'select', function( files ) {\n                        me.owner.request( 'add-file', [ files ]);\n                    });\n                    picker.init();\n    \n                    me.pickers.push( picker );\n    \n                    promises.push( deferred.promise() );\n                });\n    \n                return Base.when.apply( Base, promises );\n            },\n    \n            disable: function() {\n                $.each( this.pickers, function() {\n                    this.disable();\n                });\n            },\n    \n            enable: function() {\n                $.each( this.pickers, function() {\n                    this.enable();\n                });\n            },\n    \n            destroy: function() {\n                $.each( this.pickers, function() {\n                    this.destroy();\n                });\n                this.pickers = null;\n            }\n        });\n    });\n    /**\n     * @fileOverview Image\n     */\n    define('lib/image',[\n        'base',\n        'runtime/client',\n        'lib/blob'\n    ], function( Base, RuntimeClient, Blob ) {\n        var $ = Base.$;\n    \n        // 构造器。\n        function Image( opts ) {\n            this.options = $.extend({}, Image.options, opts );\n            RuntimeClient.call( this, 'Image' );\n    \n            this.on( 'load', function() {\n                this._info = this.exec('info');\n                this._meta = this.exec('meta');\n            });\n        }\n    \n        // 默认选项。\n        Image.options = {\n    \n            // 默认的图片处理质量\n            quality: 90,\n    \n            // 是否裁剪\n            crop: false,\n    \n            // 是否保留头部信息\n            preserveHeaders: false,\n    \n            // 是否允许放大。\n            allowMagnify: false\n        };\n    \n        // 继承RuntimeClient.\n        Base.inherits( RuntimeClient, {\n            constructor: Image,\n    \n            info: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._info = val;\n                    return this;\n                }\n    \n                // getter\n                return this._info;\n            },\n    \n            meta: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._meta = val;\n                    return this;\n                }\n    \n                // getter\n                return this._meta;\n            },\n    \n            loadFromBlob: function( blob ) {\n                var me = this,\n                    ruid = blob.getRuid();\n    \n                this.connectRuntime( ruid, function() {\n                    me.exec( 'init', me.options );\n                    me.exec( 'loadFromBlob', blob );\n                });\n            },\n    \n            resize: function() {\n                var args = Base.slice( arguments );\n                return this.exec.apply( this, [ 'resize' ].concat( args ) );\n            },\n    \n            crop: function() {\n                var args = Base.slice( arguments );\n                return this.exec.apply( this, [ 'crop' ].concat( args ) );\n            },\n    \n            getAsDataUrl: function( type ) {\n                return this.exec( 'getAsDataUrl', type );\n            },\n    \n            getAsBlob: function( type ) {\n                var blob = this.exec( 'getAsBlob', type );\n    \n                return new Blob( this.getRuid(), blob );\n            }\n        });\n    \n        return Image;\n    });\n    /**\n     * @fileOverview 图片操作, 负责预览图片和上传前压缩图片\n     */\n    define('widgets/image',[\n        'base',\n        'uploader',\n        'lib/image',\n        'widgets/widget'\n    ], function( Base, Uploader, Image ) {\n    \n        var $ = Base.$,\n            throttle;\n    \n        // 根据要处理的文件大小来节流，一次不能处理太多，会卡。\n        throttle = (function( max ) {\n            var occupied = 0,\n                waiting = [],\n                tick = function() {\n                    var item;\n    \n                    while ( waiting.length && occupied < max ) {\n                        item = waiting.shift();\n                        occupied += item[ 0 ];\n                        item[ 1 ]();\n                    }\n                };\n    \n            return function( emiter, size, cb ) {\n                waiting.push([ size, cb ]);\n                emiter.once( 'destroy', function() {\n                    occupied -= size;\n                    setTimeout( tick, 1 );\n                });\n                setTimeout( tick, 1 );\n            };\n        })( 5 * 1024 * 1024 );\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Object} [thumb]\n             * @namespace options\n             * @for Uploader\n             * @description 配置生成缩略图的选项。\n             *\n             * 默认为：\n             *\n             * ```javascript\n             * {\n             *     width: 110,\n             *     height: 110,\n             *\n             *     // 图片质量，只有type为`image/jpeg`的时候才有效。\n             *     quality: 70,\n             *\n             *     // 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.\n             *     allowMagnify: true,\n             *\n             *     // 是否允许裁剪。\n             *     crop: true,\n             *\n             *     // 为空的话则保留原有图片格式。\n             *     // 否则强制转换成指定的类型。\n             *     type: 'image/jpeg'\n             * }\n             * ```\n             */\n            thumb: {\n                width: 110,\n                height: 110,\n                quality: 70,\n                allowMagnify: true,\n                crop: true,\n                preserveHeaders: false,\n    \n                // 为空的话则保留原有图片格式。\n                // 否则强制转换成指定的类型。\n                // IE 8下面 base64 大小不能超过 32K 否则预览失败，而非 jpeg 编码的图片很可\n                // 能会超过 32k, 所以这里设置成预览的时候都是 image/jpeg\n                type: 'image/jpeg'\n            },\n    \n            /**\n             * @property {Object} [compress]\n             * @namespace options\n             * @for Uploader\n             * @description 配置压缩的图片的选项。如果此选项为`false`, 则图片在上传前不进行压缩。\n             *\n             * 默认为：\n             *\n             * ```javascript\n             * {\n             *     width: 1600,\n             *     height: 1600,\n             *\n             *     // 图片质量，只有type为`image/jpeg`的时候才有效。\n             *     quality: 90,\n             *\n             *     // 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.\n             *     allowMagnify: false,\n             *\n             *     // 是否允许裁剪。\n             *     crop: false,\n             *\n             *     // 是否保留头部meta信息。\n             *     preserveHeaders: true,\n             *\n             *     // 如果发现压缩后文件大小比原来还大，则使用原来图片\n             *     // 此属性可能会影响图片自动纠正功能\n             *     noCompressIfLarger: false,\n             *\n             *     // 单位字节，如果图片大小小于此值，不会采用压缩。\n             *     compressSize: 0\n             * }\n             * ```\n             */\n            compress: {\n                width: 1600,\n                height: 1600,\n                quality: 90,\n                allowMagnify: false,\n                crop: false,\n                preserveHeaders: true\n            }\n        });\n    \n        return Uploader.register({\n    \n            name: 'image',\n    \n    \n            /**\n             * 生成缩略图，此过程为异步，所以需要传入`callback`。\n             * 通常情况在图片加入队里后调用此方法来生成预览图以增强交互效果。\n             *\n             * 当 width 或者 height 的值介于 0 - 1 时，被当成百分比使用。\n             *\n             * `callback`中可以接收到两个参数。\n             * * 第一个为error，如果生成缩略图有错误，此error将为真。\n             * * 第二个为ret, 缩略图的Data URL值。\n             *\n             * **注意**\n             * Date URL在IE6/7中不支持，所以不用调用此方法了，直接显示一张暂不支持预览图片好了。\n             * 也可以借助服务端，将 base64 数据传给服务端，生成一个临时文件供预览。\n             *\n             * @method makeThumb\n             * @grammar makeThumb( file, callback ) => undefined\n             * @grammar makeThumb( file, callback, width, height ) => undefined\n             * @for Uploader\n             * @example\n             *\n             * uploader.on( 'fileQueued', function( file ) {\n             *     var $li = ...;\n             *\n             *     uploader.makeThumb( file, function( error, ret ) {\n             *         if ( error ) {\n             *             $li.text('预览错误');\n             *         } else {\n             *             $li.append('<img alt=\"\" src=\"' + ret + '\" />');\n             *         }\n             *     });\n             *\n             * });\n             */\n            makeThumb: function( file, cb, width, height ) {\n                var opts, image;\n    \n                file = this.request( 'get-file', file );\n    \n                // 只预览图片格式。\n                if ( !file.type.match( /^image/ ) ) {\n                    cb( true );\n                    return;\n                }\n    \n                opts = $.extend({}, this.options.thumb );\n    \n                // 如果传入的是object.\n                if ( $.isPlainObject( width ) ) {\n                    opts = $.extend( opts, width );\n                    width = null;\n                }\n    \n                width = width || opts.width;\n                height = height || opts.height;\n    \n                image = new Image( opts );\n    \n                image.once( 'load', function() {\n                    file._info = file._info || image.info();\n                    file._meta = file._meta || image.meta();\n    \n                    // 如果 width 的值介于 0 - 1\n                    // 说明设置的是百分比。\n                    if ( width <= 1 && width > 0 ) {\n                        width = file._info.width * width;\n                    }\n    \n                    // 同样的规则应用于 height\n                    if ( height <= 1 && height > 0 ) {\n                        height = file._info.height * height;\n                    }\n    \n                    image.resize( width, height );\n                });\n    \n                // 当 resize 完后\n                image.once( 'complete', function() {\n                    cb( false, image.getAsDataUrl( opts.type ) );\n                    image.destroy();\n                });\n    \n                image.once( 'error', function( reason ) {\n                    cb( reason || true );\n                    image.destroy();\n                });\n    \n                throttle( image, file.source.size, function() {\n                    file._info && image.info( file._info );\n                    file._meta && image.meta( file._meta );\n                    image.loadFromBlob( file.source );\n                });\n            },\n    \n            beforeSendFile: function( file ) {\n                var opts = this.options.compress || this.options.resize,\n                    compressSize = opts && opts.compressSize || 0,\n                    noCompressIfLarger = opts && opts.noCompressIfLarger || false,\n                    image, deferred;\n    \n                file = this.request( 'get-file', file );\n    \n                // 只压缩 jpeg 图片格式。\n                // gif 可能会丢失针\n                // bmp png 基本上尺寸都不大，且压缩比比较小。\n                if ( !opts || !~'image/jpeg,image/jpg'.indexOf( file.type ) ||\n                        file.size < compressSize ||\n                        file._compressed ) {\n                    return;\n                }\n    \n                opts = $.extend({}, opts );\n                deferred = Base.Deferred();\n    \n                image = new Image( opts );\n    \n                deferred.always(function() {\n                    image.destroy();\n                    image = null;\n                });\n                image.once( 'error', deferred.reject );\n                image.once( 'load', function() {\n                    var width = opts.width,\n                        height = opts.height;\n    \n                    file._info = file._info || image.info();\n                    file._meta = file._meta || image.meta();\n    \n                    // 如果 width 的值介于 0 - 1\n                    // 说明设置的是百分比。\n                    if ( width <= 1 && width > 0 ) {\n                        width = file._info.width * width;\n                    }\n    \n                    // 同样的规则应用于 height\n                    if ( height <= 1 && height > 0 ) {\n                        height = file._info.height * height;\n                    }\n    \n                    image.resize( width, height );\n                });\n    \n                image.once( 'complete', function() {\n                    var blob, size;\n    \n                    // 移动端 UC / qq 浏览器的无图模式下\n                    // ctx.getImageData 处理大图的时候会报 Exception\n                    // INDEX_SIZE_ERR: DOM Exception 1\n                    try {\n                        blob = image.getAsBlob( opts.type );\n    \n                        size = file.size;\n    \n                        // 如果压缩后，比原来还大则不用压缩后的。\n                        if ( !noCompressIfLarger || blob.size < size ) {\n                            // file.source.destroy && file.source.destroy();\n                            file.source = blob;\n                            file.size = blob.size;\n    \n                            file.trigger( 'resize', blob.size, size );\n                        }\n    \n                        // 标记，避免重复压缩。\n                        file._compressed = true;\n                        deferred.resolve();\n                    } catch ( e ) {\n                        // 出错了直接继续，让其上传原始图片\n                        deferred.resolve();\n                    }\n                });\n    \n                file._info && image.info( file._info );\n                file._meta && image.meta( file._meta );\n    \n                image.loadFromBlob( file.source );\n                return deferred.promise();\n            }\n        });\n    });\n    /**\n     * @fileOverview 文件属性封装\n     */\n    define('file',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            idPrefix = 'WU_FILE_',\n            idSuffix = 0,\n            rExt = /\\.([^.]+)$/,\n            statusMap = {};\n    \n        function gid() {\n            return idPrefix + idSuffix++;\n        }\n    \n        /**\n         * 文件类\n         * @class File\n         * @constructor 构造函数\n         * @grammar new File( source ) => File\n         * @param {Lib.File} source [lib.File](#Lib.File)实例, 此source对象是带有Runtime信息的。\n         */\n        function WUFile( source ) {\n    \n            /**\n             * 文件名，包括扩展名（后缀）\n             * @property name\n             * @type {string}\n             */\n            this.name = source.name || 'Untitled';\n    \n            /**\n             * 文件体积（字节）\n             * @property size\n             * @type {uint}\n             * @default 0\n             */\n            this.size = source.size || 0;\n    \n            /**\n             * 文件MIMETYPE类型，与文件类型的对应关系请参考[http://t.cn/z8ZnFny](http://t.cn/z8ZnFny)\n             * @property type\n             * @type {string}\n             * @default 'application/octet-stream'\n             */\n            this.type = source.type || 'application/octet-stream';\n    \n            /**\n             * 文件最后修改日期\n             * @property lastModifiedDate\n             * @type {int}\n             * @default 当前时间戳\n             */\n            this.lastModifiedDate = source.lastModifiedDate || (new Date() * 1);\n    \n            /**\n             * 文件ID，每个对象具有唯一ID，与文件名无关\n             * @property id\n             * @type {string}\n             */\n            this.id = gid();\n    \n            /**\n             * 文件扩展名，通过文件名获取，例如test.png的扩展名为png\n             * @property ext\n             * @type {string}\n             */\n            this.ext = rExt.exec( this.name ) ? RegExp.$1 : '';\n    \n    \n            /**\n             * 状态文字说明。在不同的status语境下有不同的用途。\n             * @property statusText\n             * @type {string}\n             */\n            this.statusText = '';\n    \n            // 存储文件状态，防止通过属性直接修改\n            statusMap[ this.id ] = WUFile.Status.INITED;\n    \n            this.source = source;\n            this.loaded = 0;\n    \n            this.on( 'error', function( msg ) {\n                this.setStatus( WUFile.Status.ERROR, msg );\n            });\n        }\n    \n        $.extend( WUFile.prototype, {\n    \n            /**\n             * 设置状态，状态变化时会触发`change`事件。\n             * @method setStatus\n             * @grammar setStatus( status[, statusText] );\n             * @param {File.Status|String} status [文件状态值](#WebUploader:File:File.Status)\n             * @param {String} [statusText=''] 状态说明，常在error时使用，用http, abort,server等来标记是由于什么原因导致文件错误。\n             */\n            setStatus: function( status, text ) {\n    \n                var prevStatus = statusMap[ this.id ];\n    \n                typeof text !== 'undefined' && (this.statusText = text);\n    \n                if ( status !== prevStatus ) {\n                    statusMap[ this.id ] = status;\n                    /**\n                     * 文件状态变化\n                     * @event statuschange\n                     */\n                    this.trigger( 'statuschange', status, prevStatus );\n                }\n    \n            },\n    \n            /**\n             * 获取文件状态\n             * @return {File.Status}\n             * @example\n                     文件状态具体包括以下几种类型：\n                     {\n                         // 初始化\n                        INITED:     0,\n                        // 已入队列\n                        QUEUED:     1,\n                        // 正在上传\n                        PROGRESS:     2,\n                        // 上传出错\n                        ERROR:         3,\n                        // 上传成功\n                        COMPLETE:     4,\n                        // 上传取消\n                        CANCELLED:     5\n                    }\n             */\n            getStatus: function() {\n                return statusMap[ this.id ];\n            },\n    \n            /**\n             * 获取文件原始信息。\n             * @return {*}\n             */\n            getSource: function() {\n                return this.source;\n            },\n    \n            destroy: function() {\n                this.off();\n                delete statusMap[ this.id ];\n            }\n        });\n    \n        Mediator.installTo( WUFile.prototype );\n    \n        /**\n         * 文件状态值，具体包括以下几种类型：\n         * * `inited` 初始状态\n         * * `queued` 已经进入队列, 等待上传\n         * * `progress` 上传中\n         * * `complete` 上传完成。\n         * * `error` 上传出错，可重试\n         * * `interrupt` 上传中断，可续传。\n         * * `invalid` 文件不合格，不能重试上传。会自动从队列中移除。\n         * * `cancelled` 文件被移除。\n         * @property {Object} Status\n         * @namespace File\n         * @class File\n         * @static\n         */\n        WUFile.Status = {\n            INITED:     'inited',    // 初始状态\n            QUEUED:     'queued',    // 已经进入队列, 等待上传\n            PROGRESS:   'progress',    // 上传中\n            ERROR:      'error',    // 上传出错，可重试\n            COMPLETE:   'complete',    // 上传完成。\n            CANCELLED:  'cancelled',    // 上传取消。\n            INTERRUPT:  'interrupt',    // 上传中断，可续传。\n            INVALID:    'invalid'    // 文件不合格，不能重试上传。\n        };\n    \n        return WUFile;\n    });\n    \n    /**\n     * @fileOverview 文件队列\n     */\n    define('queue',[\n        'base',\n        'mediator',\n        'file'\n    ], function( Base, Mediator, WUFile ) {\n    \n        var $ = Base.$,\n            STATUS = WUFile.Status;\n    \n        /**\n         * 文件队列, 用来存储各个状态中的文件。\n         * @class Queue\n         * @extends Mediator\n         */\n        function Queue() {\n    \n            /**\n             * 统计文件数。\n             * * `numOfQueue` 队列中的文件数。\n             * * `numOfSuccess` 上传成功的文件数\n             * * `numOfCancel` 被取消的文件数\n             * * `numOfProgress` 正在上传中的文件数\n             * * `numOfUploadFailed` 上传错误的文件数。\n             * * `numOfInvalid` 无效的文件数。\n             * * `numofDeleted` 被移除的文件数。\n             * @property {Object} stats\n             */\n            this.stats = {\n                numOfQueue: 0,\n                numOfSuccess: 0,\n                numOfCancel: 0,\n                numOfProgress: 0,\n                numOfUploadFailed: 0,\n                numOfInvalid: 0,\n                numofDeleted: 0,\n                numofInterrupt: 0\n            };\n    \n            // 上传队列，仅包括等待上传的文件\n            this._queue = [];\n    \n            // 存储所有文件\n            this._map = {};\n        }\n    \n        $.extend( Queue.prototype, {\n    \n            /**\n             * 将新文件加入对队列尾部\n             *\n             * @method append\n             * @param  {File} file   文件对象\n             */\n            append: function( file ) {\n                this._queue.push( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 将新文件加入对队列头部\n             *\n             * @method prepend\n             * @param  {File} file   文件对象\n             */\n            prepend: function( file ) {\n                this._queue.unshift( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 获取文件对象\n             *\n             * @method getFile\n             * @param  {String} fileId   文件ID\n             * @return {File}\n             */\n            getFile: function( fileId ) {\n                if ( typeof fileId !== 'string' ) {\n                    return fileId;\n                }\n                return this._map[ fileId ];\n            },\n    \n            /**\n             * 从队列中取出一个指定状态的文件。\n             * @grammar fetch( status ) => File\n             * @method fetch\n             * @param {String} status [文件状态值](#WebUploader:File:File.Status)\n             * @return {File} [File](#WebUploader:File)\n             */\n            fetch: function( status ) {\n                var len = this._queue.length,\n                    i, file;\n    \n                status = status || STATUS.QUEUED;\n    \n                for ( i = 0; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( status === file.getStatus() ) {\n                        return file;\n                    }\n                }\n    \n                return null;\n            },\n    \n            /**\n             * 对队列进行排序，能够控制文件上传顺序。\n             * @grammar sort( fn ) => undefined\n             * @method sort\n             * @param {Function} fn 排序方法\n             */\n            sort: function( fn ) {\n                if ( typeof fn === 'function' ) {\n                    this._queue.sort( fn );\n                }\n            },\n    \n            /**\n             * 获取指定类型的文件列表, 列表中每一个成员为[File](#WebUploader:File)对象。\n             * @grammar getFiles( [status1[, status2 ...]] ) => Array\n             * @method getFiles\n             * @param {String} [status] [文件状态值](#WebUploader:File:File.Status)\n             */\n            getFiles: function() {\n                var sts = [].slice.call( arguments, 0 ),\n                    ret = [],\n                    i = 0,\n                    len = this._queue.length,\n                    file;\n    \n                for ( ; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( sts.length && !~$.inArray( file.getStatus(), sts ) ) {\n                        continue;\n                    }\n    \n                    ret.push( file );\n                }\n    \n                return ret;\n            },\n    \n            /**\n             * 在队列中删除文件。\n             * @grammar removeFile( file ) => Array\n             * @method removeFile\n             * @param {File} 文件对象。\n             */\n            removeFile: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( existing ) {\n                    delete this._map[ file.id ];\n                    file.destroy();\n                    this.stats.numofDeleted++;\n                }\n            },\n    \n            _fileAdded: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( !existing ) {\n                    this._map[ file.id ] = file;\n    \n                    file.on( 'statuschange', function( cur, pre ) {\n                        me._onFileStatusChange( cur, pre );\n                    });\n                }\n            },\n    \n            _onFileStatusChange: function( curStatus, preStatus ) {\n                var stats = this.stats;\n    \n                switch ( preStatus ) {\n                    case STATUS.PROGRESS:\n                        stats.numOfProgress--;\n                        break;\n    \n                    case STATUS.QUEUED:\n                        stats.numOfQueue --;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed--;\n                        break;\n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid--;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt--;\n                        break;\n                }\n    \n                switch ( curStatus ) {\n                    case STATUS.QUEUED:\n                        stats.numOfQueue++;\n                        break;\n    \n                    case STATUS.PROGRESS:\n                        stats.numOfProgress++;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed++;\n                        break;\n    \n                    case STATUS.COMPLETE:\n                        stats.numOfSuccess++;\n                        break;\n    \n                    case STATUS.CANCELLED:\n                        stats.numOfCancel++;\n                        break;\n    \n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid++;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt++;\n                        break;\n                }\n            }\n    \n        });\n    \n        Mediator.installTo( Queue.prototype );\n    \n        return Queue;\n    });\n    /**\n     * @fileOverview 队列\n     */\n    define('widgets/queue',[\n        'base',\n        'uploader',\n        'queue',\n        'file',\n        'lib/file',\n        'runtime/client',\n        'widgets/widget'\n    ], function( Base, Uploader, Queue, WUFile, File, RuntimeClient ) {\n    \n        var $ = Base.$,\n            rExt = /\\.\\w+$/,\n            Status = WUFile.Status;\n    \n        return Uploader.register({\n            name: 'queue',\n    \n            init: function( opts ) {\n                var me = this,\n                    deferred, len, i, item, arr, accept, runtime;\n    \n                if ( $.isPlainObject( opts.accept ) ) {\n                    opts.accept = [ opts.accept ];\n                }\n    \n                // accept中的中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].extensions;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = '\\\\.' + arr.join(',')\n                                .replace( /,/g, '$|\\\\.' )\n                                .replace( /\\*/g, '.*' ) + '$';\n                    }\n    \n                    me.accept = new RegExp( accept, 'i' );\n                }\n    \n                me.queue = new Queue();\n                me.stats = me.queue.stats;\n    \n                // 如果当前不是html5运行时，那就算了。\n                // 不执行后续操作\n                if ( this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                // 创建一个 html5 运行时的 placeholder\n                // 以至于外部添加原生 File 对象的时候能正确包裹一下供 webuploader 使用。\n                deferred = Base.Deferred();\n                this.placeholder = runtime = new RuntimeClient('Placeholder');\n                runtime.connectRuntime({\n                    runtimeOrder: 'html5'\n                }, function() {\n                    me._ruid = runtime.getRuid();\n                    deferred.resolve();\n                });\n                return deferred.promise();\n            },\n    \n    \n            // 为了支持外部直接添加一个原生File对象。\n            _wrapFile: function( file ) {\n                if ( !(file instanceof WUFile) ) {\n    \n                    if ( !(file instanceof File) ) {\n                        if ( !this._ruid ) {\n                            throw new Error('Can\\'t add external files.');\n                        }\n                        file = new File( this._ruid, file );\n                    }\n    \n                    file = new WUFile( file );\n                }\n    \n                return file;\n            },\n    \n            // 判断文件是否可以被加入队列\n            acceptFile: function( file ) {\n                var invalid = !file || !file.size || this.accept &&\n    \n                        // 如果名字中有后缀，才做后缀白名单处理。\n                        rExt.exec( file.name ) && !this.accept.test( file.name );\n    \n                return !invalid;\n            },\n    \n    \n            /**\n             * @event beforeFileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列之前触发，此事件的handler返回值为`false`，则此文件不会被添加进入队列。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event fileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列以后触发。\n             * @for  Uploader\n             */\n    \n            _addFile: function( file ) {\n                var me = this;\n    \n                file = me._wrapFile( file );\n    \n                // 不过类型判断允许不允许，先派送 `beforeFileQueued`\n                if ( !me.owner.trigger( 'beforeFileQueued', file ) ) {\n                    return;\n                }\n    \n                // 类型不匹配，则派送错误事件，并返回。\n                if ( !me.acceptFile( file ) ) {\n                    me.owner.trigger( 'error', 'Q_TYPE_DENIED', file );\n                    return;\n                }\n    \n                me.queue.append( file );\n                me.owner.trigger( 'fileQueued', file );\n                return file;\n            },\n    \n            getFile: function( fileId ) {\n                return this.queue.getFile( fileId );\n            },\n    \n            /**\n             * @event filesQueued\n             * @param {File} files 数组，内容为原始File(lib/File）对象。\n             * @description 当一批文件添加进队列以后触发。\n             * @for  Uploader\n             */\n            \n            /**\n             * @property {Boolean} [auto=false]\n             * @namespace options\n             * @for Uploader\n             * @description 设置为 true 后，不需要手动调用上传，有文件选择即开始上传。\n             * \n             */\n    \n            /**\n             * @method addFiles\n             * @grammar addFiles( file ) => undefined\n             * @grammar addFiles( [file1, file2 ...] ) => undefined\n             * @param {Array of File or File} [files] Files 对象 数组\n             * @description 添加文件到队列\n             * @for  Uploader\n             */\n            addFile: function( files ) {\n                var me = this;\n    \n                if ( !files.length ) {\n                    files = [ files ];\n                }\n    \n                files = $.map( files, function( file ) {\n                    return me._addFile( file );\n                });\n    \n                me.owner.trigger( 'filesQueued', files );\n    \n                if ( me.options.auto ) {\n                    setTimeout(function() {\n                        me.request('start-upload');\n                    }, 20 );\n                }\n            },\n    \n            getStats: function() {\n                return this.stats;\n            },\n    \n            /**\n             * @event fileDequeued\n             * @param {File} file File对象\n             * @description 当文件被移除队列后触发。\n             * @for  Uploader\n             */\n    \n             /**\n             * @method removeFile\n             * @grammar removeFile( file ) => undefined\n             * @grammar removeFile( id ) => undefined\n             * @grammar removeFile( file, true ) => undefined\n             * @grammar removeFile( id, true ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 移除某一文件, 默认只会标记文件状态为已取消，如果第二个参数为 `true` 则会从 queue 中移除。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.removeFile( file );\n             * })\n             */\n            removeFile: function( file, remove ) {\n                var me = this;\n    \n                file = file.id ? file : me.queue.getFile( file );\n    \n                this.request( 'cancel-file', file );\n    \n                if ( remove ) {\n                    this.queue.removeFile( file );\n                }\n            },\n    \n            /**\n             * @method getFiles\n             * @grammar getFiles() => Array\n             * @grammar getFiles( status1, status2, status... ) => Array\n             * @description 返回指定状态的文件集合，不传参数将返回所有状态的文件。\n             * @for  Uploader\n             * @example\n             * console.log( uploader.getFiles() );    // => all files\n             * console.log( uploader.getFiles('error') )    // => all error files.\n             */\n            getFiles: function() {\n                return this.queue.getFiles.apply( this.queue, arguments );\n            },\n    \n            fetchFile: function() {\n                return this.queue.fetch.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @method retry\n             * @grammar retry() => undefined\n             * @grammar retry( file ) => undefined\n             * @description 重试上传，重试指定文件，或者从出错的文件开始重新上传。\n             * @for  Uploader\n             * @example\n             * function retry() {\n             *     uploader.retry();\n             * }\n             */\n            retry: function( file, noForceStart ) {\n                var me = this,\n                    files, i, len;\n    \n                if ( file ) {\n                    file = file.id ? file : me.queue.getFile( file );\n                    file.setStatus( Status.QUEUED );\n                    noForceStart || me.request('start-upload');\n                    return;\n                }\n    \n                files = me.queue.getFiles( Status.ERROR );\n                i = 0;\n                len = files.length;\n    \n                for ( ; i < len; i++ ) {\n                    file = files[ i ];\n                    file.setStatus( Status.QUEUED );\n                }\n    \n                me.request('start-upload');\n            },\n    \n            /**\n             * @method sort\n             * @grammar sort( fn ) => undefined\n             * @description 排序队列中的文件，在上传之前调整可以控制上传顺序。\n             * @for  Uploader\n             */\n            sortFiles: function() {\n                return this.queue.sort.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @event reset\n             * @description 当 uploader 被重置的时候触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @method reset\n             * @grammar reset() => undefined\n             * @description 重置uploader。目前只重置了队列。\n             * @for  Uploader\n             * @example\n             * uploader.reset();\n             */\n            reset: function() {\n                this.owner.trigger('reset');\n                this.queue = new Queue();\n                this.stats = this.queue.stats;\n            },\n    \n            destroy: function() {\n                this.reset();\n                this.placeholder && this.placeholder.destroy();\n            }\n        });\n    \n    });\n    /**\n     * @fileOverview 添加获取Runtime相关信息的方法。\n     */\n    define('widgets/runtime',[\n        'uploader',\n        'runtime/runtime',\n        'widgets/widget'\n    ], function( Uploader, Runtime ) {\n    \n        Uploader.support = function() {\n            return Runtime.hasRuntime.apply( Runtime, arguments );\n        };\n    \n        /**\n         * @property {Object} [runtimeOrder=html5,flash]\n         * @namespace options\n         * @for Uploader\n         * @description 指定运行时启动顺序。默认会想尝试 html5 是否支持，如果支持则使用 html5, 否则则使用 flash.\n         *\n         * 可以将此值设置成 `flash`，来强制使用 flash 运行时。\n         */\n    \n        return Uploader.register({\n            name: 'runtime',\n    \n            init: function() {\n                if ( !this.predictRuntimeType() ) {\n                    throw Error('Runtime Error');\n                }\n            },\n    \n            /**\n             * 预测Uploader将采用哪个`Runtime`\n             * @grammar predictRuntimeType() => String\n             * @method predictRuntimeType\n             * @for  Uploader\n             */\n            predictRuntimeType: function() {\n                var orders = this.options.runtimeOrder || Runtime.orders,\n                    type = this.type,\n                    i, len;\n    \n                if ( !type ) {\n                    orders = orders.split( /\\s*,\\s*/g );\n    \n                    for ( i = 0, len = orders.length; i < len; i++ ) {\n                        if ( Runtime.hasRuntime( orders[ i ] ) ) {\n                            this.type = type = orders[ i ];\n                            break;\n                        }\n                    }\n                }\n    \n                return type;\n            }\n        });\n    });\n    /**\n     * @fileOverview Transport\n     */\n    define('lib/transport',[\n        'base',\n        'runtime/client',\n        'mediator'\n    ], function( Base, RuntimeClient, Mediator ) {\n    \n        var $ = Base.$;\n    \n        function Transport( opts ) {\n            var me = this;\n    \n            opts = me.options = $.extend( true, {}, Transport.options, opts || {} );\n            RuntimeClient.call( this, 'Transport' );\n    \n            this._blob = null;\n            this._formData = opts.formData || {};\n            this._headers = opts.headers || {};\n    \n            this.on( 'progress', this._timeout );\n            this.on( 'load error', function() {\n                me.trigger( 'progress', 1 );\n                clearTimeout( me._timer );\n            });\n        }\n    \n        Transport.options = {\n            server: '',\n            method: 'POST',\n    \n            // 跨域时，是否允许携带cookie, 只有html5 runtime才有效\n            withCredentials: false,\n            fileVal: 'file',\n            timeout: 2 * 60 * 1000,    // 2分钟\n            formData: {},\n            headers: {},\n            sendAsBinary: false\n        };\n    \n        $.extend( Transport.prototype, {\n    \n            // 添加Blob, 只能添加一次，最后一次有效。\n            appendBlob: function( key, blob, filename ) {\n                var me = this,\n                    opts = me.options;\n    \n                if ( me.getRuid() ) {\n                    me.disconnectRuntime();\n                }\n    \n                // 连接到blob归属的同一个runtime.\n                me.connectRuntime( blob.ruid, function() {\n                    me.exec('init');\n                });\n    \n                me._blob = blob;\n                opts.fileVal = key || opts.fileVal;\n                opts.filename = filename || opts.filename;\n            },\n    \n            // 添加其他字段\n            append: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._formData, key );\n                } else {\n                    this._formData[ key ] = value;\n                }\n            },\n    \n            setRequestHeader: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._headers, key );\n                } else {\n                    this._headers[ key ] = value;\n                }\n            },\n    \n            send: function( method ) {\n                this.exec( 'send', method );\n                this._timeout();\n            },\n    \n            abort: function() {\n                clearTimeout( this._timer );\n                return this.exec('abort');\n            },\n    \n            destroy: function() {\n                this.trigger('destroy');\n                this.off();\n                this.exec('destroy');\n                this.disconnectRuntime();\n            },\n    \n            getResponse: function() {\n                return this.exec('getResponse');\n            },\n    \n            getResponseAsJson: function() {\n                return this.exec('getResponseAsJson');\n            },\n    \n            getStatus: function() {\n                return this.exec('getStatus');\n            },\n    \n            _timeout: function() {\n                var me = this,\n                    duration = me.options.timeout;\n    \n                if ( !duration ) {\n                    return;\n                }\n    \n                clearTimeout( me._timer );\n                me._timer = setTimeout(function() {\n                    me.abort();\n                    me.trigger( 'error', 'timeout' );\n                }, duration );\n            }\n    \n        });\n    \n        // 让Transport具备事件功能。\n        Mediator.installTo( Transport.prototype );\n    \n        return Transport;\n    });\n    /**\n     * @fileOverview 负责文件上传相关。\n     */\n    define('widgets/upload',[\n        'base',\n        'uploader',\n        'file',\n        'lib/transport',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile, Transport ) {\n    \n        var $ = Base.$,\n            isPromise = Base.isPromise,\n            Status = WUFile.Status;\n    \n        // 添加默认配置项\n        $.extend( Uploader.options, {\n    \n    \n            /**\n             * @property {Boolean} [prepareNextFile=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否允许在文件传输时提前把下一个文件准备好。\n             * 对于一个文件的准备工作比较耗时，比如图片压缩，md5序列化。\n             * 如果能提前在当前文件传输期处理，可以节省总体耗时。\n             */\n            prepareNextFile: false,\n    \n            /**\n             * @property {Boolean} [chunked=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否要分片处理大文件上传。\n             */\n            chunked: false,\n    \n            /**\n             * @property {Boolean} [chunkSize=5242880]\n             * @namespace options\n             * @for Uploader\n             * @description 如果要分片，分多大一片？ 默认大小为5M.\n             */\n            chunkSize: 5 * 1024 * 1024,\n    \n            /**\n             * @property {Boolean} [chunkRetry=2]\n             * @namespace options\n             * @for Uploader\n             * @description 如果某个分片由于网络问题出错，允许自动重传多少次？\n             */\n            chunkRetry: 2,\n    \n            /**\n             * @property {Boolean} [threads=3]\n             * @namespace options\n             * @for Uploader\n             * @description 上传并发数。允许同时最大上传进程数。\n             */\n            threads: 3,\n    \n    \n            /**\n             * @property {Object} [formData={}]\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传请求的参数表，每次发送都会发送此对象中的参数。\n             */\n            formData: {}\n    \n            /**\n             * @property {Object} [fileVal='file']\n             * @namespace options\n             * @for Uploader\n             * @description 设置文件上传域的name。\n             */\n    \n            /**\n             * @property {Object} [method='POST']\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传方式，`POST`或者`GET`。\n             */\n    \n            /**\n             * @property {Object} [sendAsBinary=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否已二进制的流的方式发送文件，这样整个上传内容`php://input`都为文件内容，\n             * 其他参数在$_GET数组中。\n             */\n        });\n    \n        // 负责将文件切片。\n        function CuteFile( file, chunkSize ) {\n            var pending = [],\n                blob = file.source,\n                total = blob.size,\n                chunks = chunkSize ? Math.ceil( total / chunkSize ) : 1,\n                start = 0,\n                index = 0,\n                len, api;\n    \n            api = {\n                file: file,\n    \n                has: function() {\n                    return !!pending.length;\n                },\n    \n                shift: function() {\n                    return pending.shift();\n                },\n    \n                unshift: function( block ) {\n                    pending.unshift( block );\n                }\n            };\n    \n            while ( index < chunks ) {\n                len = Math.min( chunkSize, total - start );\n    \n                pending.push({\n                    file: file,\n                    start: start,\n                    end: chunkSize ? (start + len) : total,\n                    total: total,\n                    chunks: chunks,\n                    chunk: index++,\n                    cuted: api\n                });\n                start += len;\n            }\n    \n            file.blocks = pending.concat();\n            file.remaning = pending.length;\n    \n            return api;\n        }\n    \n        Uploader.register({\n            name: 'upload',\n    \n            init: function() {\n                var owner = this.owner,\n                    me = this;\n    \n                this.runing = false;\n                this.progress = false;\n    \n                owner\n                    .on( 'startUpload', function() {\n                        me.progress = true;\n                    })\n                    .on( 'uploadFinished', function() {\n                        me.progress = false;\n                    });\n    \n                // 记录当前正在传的数据，跟threads相关\n                this.pool = [];\n    \n                // 缓存分好片的文件。\n                this.stack = [];\n    \n                // 缓存即将上传的文件。\n                this.pending = [];\n    \n                // 跟踪还有多少分片在上传中但是没有完成上传。\n                this.remaning = 0;\n                this.__tick = Base.bindFn( this._tick, this );\n    \n                owner.on( 'uploadComplete', function( file ) {\n    \n                    // 把其他块取消了。\n                    file.blocks && $.each( file.blocks, function( _, v ) {\n                        v.transport && (v.transport.abort(), v.transport.destroy());\n                        delete v.transport;\n                    });\n    \n                    delete file.blocks;\n                    delete file.remaning;\n                });\n            },\n    \n            reset: function() {\n                this.request( 'stop-upload', true );\n                this.runing = false;\n                this.pool = [];\n                this.stack = [];\n                this.pending = [];\n                this.remaning = 0;\n                this._trigged = false;\n                this._promise = null;\n            },\n    \n            /**\n             * @event startUpload\n             * @description 当开始上传流程时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 开始上传。此方法可以从初始状态调用开始上传流程，也可以从暂停状态调用，继续上传流程。\n             *\n             * 可以指定开始某一个文件。\n             * @grammar upload() => undefined\n             * @grammar upload( file | fileId) => undefined\n             * @method upload\n             * @for  Uploader\n             */\n            startUpload: function(file) {\n                var me = this;\n    \n                // 移出invalid的文件\n                $.each( me.request( 'get-files', Status.INVALID ), function() {\n                    me.request( 'remove-file', this );\n                });\n    \n                // 如果指定了开始某个文件，则只开始指定文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if (file.getStatus() === Status.INTERRUPT) {\n                        $.each( me.pool, function( _, v ) {\n    \n                            // 之前暂停过。\n                            if (v.file !== file) {\n                                return;\n                            }\n    \n                            v.transport && v.transport.send();\n                        });\n    \n                        file.setStatus( Status.QUEUED );\n                    } else if (file.getStatus() === Status.PROGRESS) {\n                        return;\n                    } else {\n                        file.setStatus( Status.QUEUED );\n                    }\n                } else {\n                    $.each( me.request( 'get-files', [ Status.INITED ] ), function() {\n                        this.setStatus( Status.QUEUED );\n                    });\n                }\n    \n                if ( me.runing ) {\n                    return;\n                }\n    \n                me.runing = true;\n    \n                var files = [];\n    \n                // 如果有暂停的，则续传\n                $.each( me.pool, function( _, v ) {\n                    var file = v.file;\n    \n                    if ( file.getStatus() === Status.INTERRUPT ) {\n                        files.push(file);\n                        me._trigged = false;\n                        v.transport && v.transport.send();\n                    }\n                });\n    \n                var file;\n                while ( (file = files.shift()) ) {\n                    file.setStatus( Status.PROGRESS );\n                }\n    \n                file || $.each( me.request( 'get-files',\n                        Status.INTERRUPT ), function() {\n                    this.setStatus( Status.PROGRESS );\n                });\n    \n                me._trigged = false;\n                Base.nextTick( me.__tick );\n                me.owner.trigger('startUpload');\n            },\n    \n            /**\n             * @event stopUpload\n             * @description 当开始上传流程暂停时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 暂停上传。第一个参数为是否中断上传当前正在上传的文件。\n             *\n             * 如果第一个参数是文件，则只暂停指定文件。\n             * @grammar stop() => undefined\n             * @grammar stop( true ) => undefined\n             * @grammar stop( file ) => undefined\n             * @method stop\n             * @for  Uploader\n             */\n            stopUpload: function( file, interrupt ) {\n                var me = this;\n    \n                if (file === true) {\n                    interrupt = file;\n                    file = null;\n                }\n    \n                if ( me.runing === false ) {\n                    return;\n                }\n    \n                // 如果只是暂停某个文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if ( file.getStatus() !== Status.PROGRESS &&\n                            file.getStatus() !== Status.QUEUED ) {\n                        return;\n                    }\n    \n                    file.setStatus( Status.INTERRUPT );\n                    $.each( me.pool, function( _, v ) {\n    \n                        // 只 abort 指定的文件。\n                        if (v.file !== file) {\n                            return;\n                        }\n    \n                        v.transport && v.transport.abort();\n                        me._putback(v);\n                        me._popBlock(v);\n                    });\n    \n                    return Base.nextTick( me.__tick );\n                }\n    \n                me.runing = false;\n    \n                if (this._promise && this._promise.file) {\n                    this._promise.file.setStatus( Status.INTERRUPT );\n                }\n    \n                interrupt && $.each( me.pool, function( _, v ) {\n                    v.transport && v.transport.abort();\n                    v.file.setStatus( Status.INTERRUPT );\n                });\n    \n                me.owner.trigger('stopUpload');\n            },\n    \n            /**\n             * @method cancelFile\n             * @grammar cancelFile( file ) => undefined\n             * @grammar cancelFile( id ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 标记文件状态为已取消, 同时将中断文件传输。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.cancelFile( file );\n             * })\n             */\n            cancelFile: function( file ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                file.setStatus( Status.CANCELLED );\n                this.owner.trigger( 'fileDequeued', file );\n            },\n    \n            /**\n             * 判断`Uplaode`r是否正在上传中。\n             * @grammar isInProgress() => Boolean\n             * @method isInProgress\n             * @for  Uploader\n             */\n            isInProgress: function() {\n                return !!this.progress;\n            },\n    \n            _getStats: function() {\n                return this.request('get-stats');\n            },\n    \n            /**\n             * 掉过一个文件上传，直接标记指定文件为已上传状态。\n             * @grammar skipFile( file ) => undefined\n             * @method skipFile\n             * @for  Uploader\n             */\n            skipFile: function( file, status ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                file.setStatus( status || Status.COMPLETE );\n                file.skipped = true;\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                this.owner.trigger( 'uploadSkip', file );\n            },\n    \n            /**\n             * @event uploadFinished\n             * @description 当所有文件上传结束时触发。\n             * @for  Uploader\n             */\n            _tick: function() {\n                var me = this,\n                    opts = me.options,\n                    fn, val;\n    \n                // 上一个promise还没有结束，则等待完成后再执行。\n                if ( me._promise ) {\n                    return me._promise.always( me.__tick );\n                }\n    \n                // 还有位置，且还有文件要处理的话。\n                if ( me.pool.length < opts.threads && (val = me._nextBlock()) ) {\n                    me._trigged = false;\n    \n                    fn = function( val ) {\n                        me._promise = null;\n    \n                        // 有可能是reject过来的，所以要检测val的类型。\n                        val && val.file && me._startSend( val );\n                        Base.nextTick( me.__tick );\n                    };\n    \n                    me._promise = isPromise( val ) ? val.always( fn ) : fn( val );\n    \n                // 没有要上传的了，且没有正在传输的了。\n                } else if ( !me.remaning && !me._getStats().numOfQueue &&\n                    !me._getStats().numofInterrupt ) {\n                    me.runing = false;\n    \n                    me._trigged || Base.nextTick(function() {\n                        me.owner.trigger('uploadFinished');\n                    });\n                    me._trigged = true;\n                }\n            },\n    \n            _putback: function(block) {\n                var idx;\n    \n                block.cuted.unshift(block);\n                idx = this.stack.indexOf(block.cuted);\n    \n                if (!~idx) {\n                    this.stack.unshift(block.cuted);\n                }\n            },\n    \n            _getStack: function() {\n                var i = 0,\n                    act;\n    \n                while ( (act = this.stack[ i++ ]) ) {\n                    if ( act.has() && act.file.getStatus() === Status.PROGRESS ) {\n                        return act;\n                    } else if (!act.has() ||\n                            act.file.getStatus() !== Status.PROGRESS &&\n                            act.file.getStatus() !== Status.INTERRUPT ) {\n    \n                        // 把已经处理完了的，或者，状态为非 progress（上传中）、\n                        // interupt（暂停中） 的移除。\n                        this.stack.splice( --i, 1 );\n                    }\n                }\n    \n                return null;\n            },\n    \n            _nextBlock: function() {\n                var me = this,\n                    opts = me.options,\n                    act, next, done, preparing;\n    \n                // 如果当前文件还有没有需要传输的，则直接返回剩下的。\n                if ( (act = this._getStack()) ) {\n    \n                    // 是否提前准备下一个文件\n                    if ( opts.prepareNextFile && !me.pending.length ) {\n                        me._prepareNextFile();\n                    }\n    \n                    return act.shift();\n    \n                // 否则，如果正在运行，则准备下一个文件，并等待完成后返回下个分片。\n                } else if ( me.runing ) {\n    \n                    // 如果缓存中有，则直接在缓存中取，没有则去queue中取。\n                    if ( !me.pending.length && me._getStats().numOfQueue ) {\n                        me._prepareNextFile();\n                    }\n    \n                    next = me.pending.shift();\n                    done = function( file ) {\n                        if ( !file ) {\n                            return null;\n                        }\n    \n                        act = CuteFile( file, opts.chunked ? opts.chunkSize : 0 );\n                        me.stack.push(act);\n                        return act.shift();\n                    };\n    \n                    // 文件可能还在prepare中，也有可能已经完全准备好了。\n                    if ( isPromise( next) ) {\n                        preparing = next.file;\n                        next = next[ next.pipe ? 'pipe' : 'then' ]( done );\n                        next.file = preparing;\n                        return next;\n                    }\n    \n                    return done( next );\n                }\n            },\n    \n    \n            /**\n             * @event uploadStart\n             * @param {File} file File对象\n             * @description 某个文件开始上传前触发，一个文件只会触发一次。\n             * @for  Uploader\n             */\n            _prepareNextFile: function() {\n                var me = this,\n                    file = me.request('fetch-file'),\n                    pending = me.pending,\n                    promise;\n    \n                if ( file ) {\n                    promise = me.request( 'before-send-file', file, function() {\n    \n                        // 有可能文件被skip掉了。文件被skip掉后，状态坑定不是Queued.\n                        if ( file.getStatus() === Status.PROGRESS ||\n                            file.getStatus() === Status.INTERRUPT ) {\n                            return file;\n                        }\n    \n                        return me._finishFile( file );\n                    });\n    \n                    me.owner.trigger( 'uploadStart', file );\n                    file.setStatus( Status.PROGRESS );\n    \n                    promise.file = file;\n    \n                    // 如果还在pending中，则替换成文件本身。\n                    promise.done(function() {\n                        var idx = $.inArray( promise, pending );\n    \n                        ~idx && pending.splice( idx, 1, file );\n                    });\n    \n                    // befeore-send-file的钩子就有错误发生。\n                    promise.fail(function( reason ) {\n                        file.setStatus( Status.ERROR, reason );\n                        me.owner.trigger( 'uploadError', file, reason );\n                        me.owner.trigger( 'uploadComplete', file );\n                    });\n    \n                    pending.push( promise );\n                }\n            },\n    \n            // 让出位置了，可以让其他分片开始上传\n            _popBlock: function( block ) {\n                var idx = $.inArray( block, this.pool );\n    \n                this.pool.splice( idx, 1 );\n                block.file.remaning--;\n                this.remaning--;\n            },\n    \n            // 开始上传，可以被掉过。如果promise被reject了，则表示跳过此分片。\n            _startSend: function( block ) {\n                var me = this,\n                    file = block.file,\n                    promise;\n    \n                // 有可能在 before-send-file 的 promise 期间改变了文件状态。\n                // 如：暂停，取消\n                // 我们不能中断 promise, 但是可以在 promise 完后，不做上传操作。\n                if ( file.getStatus() !== Status.PROGRESS ) {\n    \n                    // 如果是中断，则还需要放回去。\n                    if (file.getStatus() === Status.INTERRUPT) {\n                        me._putback(block);\n                    }\n    \n                    return;\n                }\n    \n                me.pool.push( block );\n                me.remaning++;\n    \n                // 如果没有分片，则直接使用原始的。\n                // 不会丢失content-type信息。\n                block.blob = block.chunks === 1 ? file.source :\n                        file.source.slice( block.start, block.end );\n    \n                // hook, 每个分片发送之前可能要做些异步的事情。\n                promise = me.request( 'before-send', block, function() {\n    \n                    // 有可能文件已经上传出错了，所以不需要再传输了。\n                    if ( file.getStatus() === Status.PROGRESS ) {\n                        me._doSend( block );\n                    } else {\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n    \n                // 如果为fail了，则跳过此分片。\n                promise.fail(function() {\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file ).always(function() {\n                            block.percentage = 1;\n                            me._popBlock( block );\n                            me.owner.trigger( 'uploadComplete', file );\n                            Base.nextTick( me.__tick );\n                        });\n                    } else {\n                        block.percentage = 1;\n                        me.updateFileProgress( file );\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n            },\n    \n    \n            /**\n             * @event uploadBeforeSend\n             * @param {Object} object\n             * @param {Object} data 默认的上传参数，可以扩展此对象来控制上传参数。\n             * @param {Object} headers 可以扩展此对象来控制上传头部。\n             * @description 当某个文件的分块在发送前触发，主要用来询问是否要添加附带参数，大文件在开起分片上传的前提下此事件可能会触发多次。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadAccept\n             * @param {Object} object\n             * @param {Object} ret 服务端的返回数据，json格式，如果服务端不是json格式，从ret._raw中取数据，自行解析。\n             * @description 当某个文件上传到服务端响应后，会派送此事件来询问服务端响应是否有效。如果此事件handler返回值为`false`, 则此文件将派送`server`类型的`uploadError`事件。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadProgress\n             * @param {File} file File对象\n             * @param {Number} percentage 上传进度\n             * @description 上传过程中触发，携带上传进度。\n             * @for  Uploader\n             */\n    \n    \n            /**\n             * @event uploadError\n             * @param {File} file File对象\n             * @param {String} reason 出错的code\n             * @description 当文件上传出错时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadSuccess\n             * @param {File} file File对象\n             * @param {Object} response 服务端返回的数据\n             * @description 当文件上传成功时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadComplete\n             * @param {File} [file] File对象\n             * @description 不管成功或者失败，文件上传完成时触发。\n             * @for  Uploader\n             */\n    \n            // 做上传操作。\n            _doSend: function( block ) {\n                var me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    file = block.file,\n                    tr = new Transport( opts ),\n                    data = $.extend({}, opts.formData ),\n                    headers = $.extend({}, opts.headers ),\n                    requestAccept, ret;\n    \n                block.transport = tr;\n    \n                tr.on( 'destroy', function() {\n                    delete block.transport;\n                    me._popBlock( block );\n                    Base.nextTick( me.__tick );\n                });\n    \n                // 广播上传进度。以文件为单位。\n                tr.on( 'progress', function( percentage ) {\n                    block.percentage = percentage;\n                    me.updateFileProgress( file );\n                });\n    \n                // 用来询问，是否返回的结果是有错误的。\n                requestAccept = function( reject ) {\n                    var fn;\n    \n                    ret = tr.getResponseAsJson() || {};\n                    ret._raw = tr.getResponse();\n                    fn = function( value ) {\n                        reject = value;\n                    };\n    \n                    // 服务端响应了，不代表成功了，询问是否响应正确。\n                    if ( !owner.trigger( 'uploadAccept', block, ret, fn ) ) {\n                        reject = reject || 'server';\n                    }\n    \n                    return reject;\n                };\n    \n                // 尝试重试，然后广播文件上传出错。\n                tr.on( 'error', function( type, flag ) {\n                    block.retried = block.retried || 0;\n    \n                    // 自动重试\n                    if ( block.chunks > 1 && ~'http,abort'.indexOf( type ) &&\n                            block.retried < opts.chunkRetry ) {\n    \n                        block.retried++;\n                        tr.send();\n    \n                    } else {\n    \n                        // http status 500 ~ 600\n                        if ( !flag && type === 'server' ) {\n                            type = requestAccept( type );\n                        }\n    \n                        file.setStatus( Status.ERROR, type );\n                        owner.trigger( 'uploadError', file, type );\n                        owner.trigger( 'uploadComplete', file );\n                    }\n                });\n    \n                // 上传成功\n                tr.on( 'load', function() {\n                    var reason;\n    \n                    // 如果非预期，转向上传出错。\n                    if ( (reason = requestAccept()) ) {\n                        tr.trigger( 'error', reason, true );\n                        return;\n                    }\n    \n                    // 全部上传完成。\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file, ret );\n                    } else {\n                        tr.destroy();\n                    }\n                });\n    \n                // 配置默认的上传字段。\n                data = $.extend( data, {\n                    id: file.id,\n                    name: file.name,\n                    type: file.type,\n                    lastModifiedDate: file.lastModifiedDate,\n                    size: file.size\n                });\n    \n                block.chunks > 1 && $.extend( data, {\n                    chunks: block.chunks,\n                    chunk: block.chunk\n                });\n    \n                // 在发送之间可以添加字段什么的。。。\n                // 如果默认的字段不够使用，可以通过监听此事件来扩展\n                owner.trigger( 'uploadBeforeSend', block, data, headers );\n    \n                // 开始发送。\n                tr.appendBlob( opts.fileVal, block.blob, file.name );\n                tr.append( data );\n                tr.setRequestHeader( headers );\n                tr.send();\n            },\n    \n            // 完成上传。\n            _finishFile: function( file, ret, hds ) {\n                var owner = this.owner;\n    \n                return owner\n                        .request( 'after-send-file', arguments, function() {\n                            file.setStatus( Status.COMPLETE );\n                            owner.trigger( 'uploadSuccess', file, ret, hds );\n                        })\n                        .fail(function( reason ) {\n    \n                            // 如果外部已经标记为invalid什么的，不再改状态。\n                            if ( file.getStatus() === Status.PROGRESS ) {\n                                file.setStatus( Status.ERROR, reason );\n                            }\n    \n                            owner.trigger( 'uploadError', file, reason );\n                        })\n                        .always(function() {\n                            owner.trigger( 'uploadComplete', file );\n                        });\n            },\n    \n            updateFileProgress: function(file) {\n                var totalPercent = 0,\n                    uploaded = 0;\n    \n                if (!file.blocks) {\n                    return;\n                }\n    \n                $.each( file.blocks, function( _, v ) {\n                    uploaded += (v.percentage || 0) * (v.end - v.start);\n                });\n    \n                totalPercent = uploaded / file.size;\n                this.owner.trigger( 'uploadProgress', file, totalPercent || 0 );\n            }\n    \n        });\n    });\n    /**\n     * @fileOverview 各种验证，包括文件总大小是否超出、单文件是否超出和文件是否重复。\n     */\n    \n    define('widgets/validator',[\n        'base',\n        'uploader',\n        'file',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile ) {\n    \n        var $ = Base.$,\n            validators = {},\n            api;\n    \n        /**\n         * @event error\n         * @param {String} type 错误类型。\n         * @description 当validate不通过时，会以派送错误事件的形式通知调用者。通过`upload.on('error', handler)`可以捕获到此类错误，目前有以下错误会在特定的情况下派送错来。\n         *\n         * * `Q_EXCEED_NUM_LIMIT` 在设置了`fileNumLimit`且尝试给`uploader`添加的文件数量超出这个值时派送。\n         * * `Q_EXCEED_SIZE_LIMIT` 在设置了`Q_EXCEED_SIZE_LIMIT`且尝试给`uploader`添加的文件总大小超出这个值时派送。\n         * * `Q_TYPE_DENIED` 当文件类型不满足时触发。。\n         * @for  Uploader\n         */\n    \n        // 暴露给外面的api\n        api = {\n    \n            // 添加验证器\n            addValidator: function( type, cb ) {\n                validators[ type ] = cb;\n            },\n    \n            // 移除验证器\n            removeValidator: function( type ) {\n                delete validators[ type ];\n            }\n        };\n    \n        // 在Uploader初始化的时候启动Validators的初始化\n        Uploader.register({\n            name: 'validator',\n    \n            init: function() {\n                var me = this;\n                Base.nextTick(function() {\n                    $.each( validators, function() {\n                        this.call( me.owner );\n                    });\n                });\n            }\n        });\n    \n        /**\n         * @property {int} [fileNumLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总数量, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileNumLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                count = 0,\n                max = parseInt( opts.fileNumLimit, 10 ),\n                flag = true;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n    \n                if ( count >= max && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_NUM_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return count >= max ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function() {\n                count++;\n            });\n    \n            uploader.on( 'fileDequeued', function() {\n                count--;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n    \n        /**\n         * @property {int} [fileSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                count = 0,\n                max = parseInt( opts.fileSizeLimit, 10 ),\n                flag = true;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var invalid = count + file.size > max;\n    \n                if ( invalid && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_SIZE_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return invalid ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                count += file.size;\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                count -= file.size;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n        /**\n         * @property {int} [fileSingleSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证单个文件大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSingleSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                max = opts.fileSingleSizeLimit;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n    \n                if ( file.size > max ) {\n                    file.setStatus( WUFile.Status.INVALID, 'exceed_size' );\n                    this.trigger( 'error', 'F_EXCEED_SIZE', max, file );\n                    return false;\n                }\n    \n            });\n    \n        });\n    \n        /**\n         * @property {Boolean} [duplicate=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 去重， 根据文件名字、文件大小和最后修改时间来生成hash Key.\n         */\n        api.addValidator( 'duplicate', function() {\n            var uploader = this,\n                opts = uploader.options,\n                mapping = {};\n    \n            if ( opts.duplicate ) {\n                return;\n            }\n    \n            function hashString( str ) {\n                var hash = 0,\n                    i = 0,\n                    len = str.length,\n                    _char;\n    \n                for ( ; i < len; i++ ) {\n                    _char = str.charCodeAt( i );\n                    hash = _char + (hash << 6) + (hash << 16) - hash;\n                }\n    \n                return hash;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var hash = file.__hash || (file.__hash = hashString( file.name +\n                        file.size + file.lastModifiedDate ));\n    \n                // 已经重复了\n                if ( mapping[ hash ] ) {\n                    this.trigger( 'error', 'F_DUPLICATE', file );\n                    return false;\n                }\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (mapping[ hash ] = true);\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (delete mapping[ hash ]);\n            });\n    \n            uploader.on( 'reset', function() {\n                mapping = {};\n            });\n        });\n    \n        return api;\n    });\n    \n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/compbase',[],function() {\n    \n        function CompBase( owner, runtime ) {\n    \n            this.owner = owner;\n            this.options = owner.options;\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.getRuid = function() {\n                return runtime.uid;\n            };\n    \n            this.trigger = function() {\n                return owner.trigger.apply( owner, arguments );\n            };\n        }\n    \n        return CompBase;\n    });\n    /**\n     * @fileOverview FlashRuntime\n     */\n    define('runtime/flash/runtime',[\n        'base',\n        'runtime/runtime',\n        'runtime/compbase'\n    ], function( Base, Runtime, CompBase ) {\n    \n        var $ = Base.$,\n            type = 'flash',\n            components = {};\n    \n    \n        function getFlashVersion() {\n            var version;\n    \n            try {\n                version = navigator.plugins[ 'Shockwave Flash' ];\n                version = version.description;\n            } catch ( ex ) {\n                try {\n                    version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash')\n                            .GetVariable('$version');\n                } catch ( ex2 ) {\n                    version = '0.0';\n                }\n            }\n            version = version.match( /\\d+/g );\n            return parseFloat( version[ 0 ] + '.' + version[ 1 ], 10 );\n        }\n    \n        function FlashRuntime() {\n            var pool = {},\n                clients = {},\n                destroy = this.destroy,\n                me = this,\n                jsreciver = Base.guid('webuploader_');\n    \n            Runtime.apply( me, arguments );\n            me.type = type;\n    \n    \n            // 这个方法的调用者，实际上是RuntimeClient\n            me.exec = function( comp, fn/*, args...*/ ) {\n                var client = this,\n                    uid = client.uid,\n                    args = Base.slice( arguments, 2 ),\n                    instance;\n    \n                clients[ uid ] = client;\n    \n                if ( components[ comp ] ) {\n                    if ( !pool[ uid ] ) {\n                        pool[ uid ] = new components[ comp ]( client, me );\n                    }\n    \n                    instance = pool[ uid ];\n    \n                    if ( instance[ fn ] ) {\n                        return instance[ fn ].apply( instance, args );\n                    }\n                }\n    \n                return me.flashExec.apply( client, arguments );\n            };\n    \n            function handler( evt, obj ) {\n                var type = evt.type || evt,\n                    parts, uid;\n    \n                parts = type.split('::');\n                uid = parts[ 0 ];\n                type = parts[ 1 ];\n    \n                // console.log.apply( console, arguments );\n    \n                if ( type === 'Ready' && uid === me.uid ) {\n                    me.trigger('ready');\n                } else if ( clients[ uid ] ) {\n                    clients[ uid ].trigger( type.toLowerCase(), evt, obj );\n                }\n    \n                // Base.log( evt, obj );\n            }\n    \n            // flash的接受器。\n            window[ jsreciver ] = function() {\n                var args = arguments;\n    \n                // 为了能捕获得到。\n                setTimeout(function() {\n                    handler.apply( null, args );\n                }, 1 );\n            };\n    \n            this.jsreciver = jsreciver;\n    \n            this.destroy = function() {\n                // @todo 删除池子中的所有实例\n                return destroy && destroy.apply( this, arguments );\n            };\n    \n            this.flashExec = function( comp, fn ) {\n                var flash = me.getFlash(),\n                    args = Base.slice( arguments, 2 );\n    \n                return flash.exec( this.uid, comp, fn, args );\n            };\n    \n            // @todo\n        }\n    \n        Base.inherits( Runtime, {\n            constructor: FlashRuntime,\n    \n            init: function() {\n                var container = this.getContainer(),\n                    opts = this.options,\n                    html;\n    \n                // if not the minimal height, shims are not initialized\n                // in older browsers (e.g FF3.6, IE6,7,8, Safari 4.0,5.0, etc)\n                container.css({\n                    position: 'absolute',\n                    top: '-8px',\n                    left: '-8px',\n                    width: '9px',\n                    height: '9px',\n                    overflow: 'hidden'\n                });\n    \n                // insert flash object\n                html = '<object id=\"' + this.uid + '\" type=\"application/' +\n                        'x-shockwave-flash\" data=\"' +  opts.swf + '\" ';\n    \n                if ( Base.browser.ie ) {\n                    html += 'classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" ';\n                }\n    \n                html += 'width=\"100%\" height=\"100%\" style=\"outline:0\">'  +\n                    '<param name=\"movie\" value=\"' + opts.swf + '\" />' +\n                    '<param name=\"flashvars\" value=\"uid=' + this.uid +\n                    '&jsreciver=' + this.jsreciver + '\" />' +\n                    '<param name=\"wmode\" value=\"transparent\" />' +\n                    '<param name=\"allowscriptaccess\" value=\"always\" />' +\n                '</object>';\n    \n                container.html( html );\n            },\n    \n            getFlash: function() {\n                if ( this._flash ) {\n                    return this._flash;\n                }\n    \n                this._flash = $( '#' + this.uid ).get( 0 );\n                return this._flash;\n            }\n    \n        });\n    \n        FlashRuntime.register = function( name, component ) {\n            component = components[ name ] = Base.inherits( CompBase, $.extend({\n    \n                // @todo fix this later\n                flashExec: function() {\n                    var owner = this.owner,\n                        runtime = this.getRuntime();\n    \n                    return runtime.flashExec.apply( owner, arguments );\n                }\n            }, component ) );\n    \n            return component;\n        };\n    \n        if ( getFlashVersion() >= 11.4 ) {\n            Runtime.addRuntime( type, FlashRuntime );\n        }\n    \n        return FlashRuntime;\n    });\n    /**\n     * @fileOverview FilePicker\n     */\n    define('runtime/flash/filepicker',[\n        'base',\n        'runtime/flash/runtime'\n    ], function( Base, FlashRuntime ) {\n        var $ = Base.$;\n    \n        return FlashRuntime.register( 'FilePicker', {\n            init: function( opts ) {\n                var copy = $.extend({}, opts ),\n                    len, i;\n    \n                // 修复Flash再没有设置title的情况下无法弹出flash文件选择框的bug.\n                len = copy.accept && copy.accept.length;\n                for (  i = 0; i < len; i++ ) {\n                    if ( !copy.accept[ i ].title ) {\n                        copy.accept[ i ].title = 'Files';\n                    }\n                }\n    \n                delete copy.button;\n                delete copy.id;\n                delete copy.container;\n    \n                this.flashExec( 'FilePicker', 'init', copy );\n            },\n    \n            destroy: function() {\n                this.flashExec( 'FilePicker', 'destroy' );\n            }\n        });\n    });\n    /**\n     * @fileOverview 图片压缩\n     */\n    define('runtime/flash/image',[\n        'runtime/flash/runtime'\n    ], function( FlashRuntime ) {\n    \n        return FlashRuntime.register( 'Image', {\n            // init: function( options ) {\n            //     var owner = this.owner;\n    \n            //     this.flashExec( 'Image', 'init', options );\n            //     owner.on( 'load', function() {\n            //         debugger;\n            //     });\n            // },\n    \n            loadFromBlob: function( blob ) {\n                var owner = this.owner;\n    \n                owner.info() && this.flashExec( 'Image', 'info', owner.info() );\n                owner.meta() && this.flashExec( 'Image', 'meta', owner.meta() );\n    \n                this.flashExec( 'Image', 'loadFromBlob', blob.uid );\n            }\n        });\n    });\n    /**\n     * @fileOverview Blob Html实现\n     */\n    define('runtime/flash/blob',[\n        'runtime/flash/runtime',\n        'lib/blob'\n    ], function( FlashRuntime, Blob ) {\n    \n        return FlashRuntime.register( 'Blob', {\n            slice: function( start, end ) {\n                var blob = this.flashExec( 'Blob', 'slice', start, end );\n    \n                return new Blob( blob.uid, blob );\n            }\n        });\n    });\n    /**\n     * @fileOverview  Transport flash实现\n     */\n    define('runtime/flash/transport',[\n        'base',\n        'runtime/flash/runtime',\n        'runtime/client'\n    ], function( Base, FlashRuntime, RuntimeClient ) {\n        var $ = Base.$;\n    \n        return FlashRuntime.register( 'Transport', {\n            init: function() {\n                this._status = 0;\n                this._response = null;\n                this._responseJson = null;\n            },\n    \n            send: function() {\n                var owner = this.owner,\n                    opts = this.options,\n                    xhr = this._initAjax(),\n                    blob = owner._blob,\n                    server = opts.server,\n                    binary;\n    \n                xhr.connectRuntime( blob.ruid );\n    \n                if ( opts.sendAsBinary ) {\n                    server += (/\\?/.test( server ) ? '&' : '?') +\n                            $.param( owner._formData );\n    \n                    binary = blob.uid;\n                } else {\n                    $.each( owner._formData, function( k, v ) {\n                        xhr.exec( 'append', k, v );\n                    });\n    \n                    xhr.exec( 'appendBlob', opts.fileVal, blob.uid,\n                            opts.filename || owner._formData.name || '' );\n                }\n    \n                this._setRequestHeader( xhr, opts.headers );\n                xhr.exec( 'send', {\n                    method: opts.method,\n                    url: server,\n                    forceURLStream: opts.forceURLStream,\n                    mimeType: 'application/octet-stream'\n                }, binary );\n            },\n    \n            getStatus: function() {\n                return this._status;\n            },\n    \n            getResponse: function() {\n                return this._response || '';\n            },\n    \n            getResponseAsJson: function() {\n                return this._responseJson;\n            },\n    \n            abort: function() {\n                var xhr = this._xhr;\n    \n                if ( xhr ) {\n                    xhr.exec('abort');\n                    xhr.destroy();\n                    this._xhr = xhr = null;\n                }\n            },\n    \n            destroy: function() {\n                this.abort();\n            },\n    \n            _initAjax: function() {\n                var me = this,\n                    xhr = new RuntimeClient('XMLHttpRequest');\n    \n                xhr.on( 'uploadprogress progress', function( e ) {\n                    var percent = e.loaded / e.total;\n                    percent = Math.min( 1, Math.max( 0, percent ) );\n                    return me.trigger( 'progress', percent );\n                });\n    \n                xhr.on( 'load', function() {\n                    var status = xhr.exec('getStatus'),\n                        readBody = false,\n                        err = '',\n                        p;\n    \n                    xhr.off();\n                    me._xhr = null;\n    \n                    if ( status >= 200 && status < 300 ) {\n                        readBody = true;\n                    } else if ( status >= 500 && status < 600 ) {\n                        readBody = true;\n                        err = 'server';\n                    } else {\n                        err = 'http';\n                    }\n    \n                    if ( readBody ) {\n                        me._response = xhr.exec('getResponse');\n                        me._response = decodeURIComponent( me._response );\n    \n                        // flash 处理可能存在 bug, 没辙只能靠 js 了\n                        // try {\n                        //     me._responseJson = xhr.exec('getResponseAsJson');\n                        // } catch ( error ) {\n                            \n                        p = window.JSON && window.JSON.parse || function( s ) {\n                            try {\n                                return new Function('return ' + s).call();\n                            } catch ( err ) {\n                                return {};\n                            }\n                        };\n                        me._responseJson  = me._response ? p(me._response) : {};\n                            \n                        // }\n                    }\n                    \n                    xhr.destroy();\n                    xhr = null;\n    \n                    return err ? me.trigger( 'error', err ) : me.trigger('load');\n                });\n    \n                xhr.on( 'error', function() {\n                    xhr.off();\n                    me._xhr = null;\n                    me.trigger( 'error', 'http' );\n                });\n    \n                me._xhr = xhr;\n                return xhr;\n            },\n    \n            _setRequestHeader: function( xhr, headers ) {\n                $.each( headers, function( key, val ) {\n                    xhr.exec( 'setRequestHeader', key, val );\n                });\n            }\n        });\n    });\n    /**\n     * @fileOverview 只有flash实现的文件版本。\n     */\n    define('preset/flashonly',[\n        'base',\n    \n        // widgets\n        'widgets/filepicker',\n        'widgets/image',\n        'widgets/queue',\n        'widgets/runtime',\n        'widgets/upload',\n        'widgets/validator',\n    \n        // runtimes\n    \n        // flash\n        'runtime/flash/filepicker',\n        'runtime/flash/image',\n        'runtime/flash/blob',\n        'runtime/flash/transport'\n    ], function( Base ) {\n        return Base;\n    });\n    define('webuploader',[\n        'preset/flashonly'\n    ], function( preset ) {\n        return preset;\n    });\n    return require('webuploader');\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/webuploader/webuploader.html5only.js",
    "content": "/*! WebUploader 0.1.5 */\n\n\n/**\n * @fileOverview 让内部各个部件的代码可以用[amd](https://github.com/amdjs/amdjs-api/wiki/AMD)模块定义方式组织起来。\n *\n * AMD API 内部的简单不完全实现，请忽略。只有当WebUploader被合并成一个文件的时候才会引入。\n */\n(function( root, factory ) {\n    var modules = {},\n\n        // 内部require, 简单不完全实现。\n        // https://github.com/amdjs/amdjs-api/wiki/require\n        _require = function( deps, callback ) {\n            var args, len, i;\n\n            // 如果deps不是数组，则直接返回指定module\n            if ( typeof deps === 'string' ) {\n                return getModule( deps );\n            } else {\n                args = [];\n                for( len = deps.length, i = 0; i < len; i++ ) {\n                    args.push( getModule( deps[ i ] ) );\n                }\n\n                return callback.apply( null, args );\n            }\n        },\n\n        // 内部define，暂时不支持不指定id.\n        _define = function( id, deps, factory ) {\n            if ( arguments.length === 2 ) {\n                factory = deps;\n                deps = null;\n            }\n\n            _require( deps || [], function() {\n                setModule( id, factory, arguments );\n            });\n        },\n\n        // 设置module, 兼容CommonJs写法。\n        setModule = function( id, factory, args ) {\n            var module = {\n                    exports: factory\n                },\n                returned;\n\n            if ( typeof factory === 'function' ) {\n                args.length || (args = [ _require, module.exports, module ]);\n                returned = factory.apply( null, args );\n                returned !== undefined && (module.exports = returned);\n            }\n\n            modules[ id ] = module.exports;\n        },\n\n        // 根据id获取module\n        getModule = function( id ) {\n            var module = modules[ id ] || root[ id ];\n\n            if ( !module ) {\n                throw new Error( '`' + id + '` is undefined' );\n            }\n\n            return module;\n        },\n\n        // 将所有modules，将路径ids装换成对象。\n        exportsTo = function( obj ) {\n            var key, host, parts, part, last, ucFirst;\n\n            // make the first character upper case.\n            ucFirst = function( str ) {\n                return str && (str.charAt( 0 ).toUpperCase() + str.substr( 1 ));\n            };\n\n            for ( key in modules ) {\n                host = obj;\n\n                if ( !modules.hasOwnProperty( key ) ) {\n                    continue;\n                }\n\n                parts = key.split('/');\n                last = ucFirst( parts.pop() );\n\n                while( (part = ucFirst( parts.shift() )) ) {\n                    host[ part ] = host[ part ] || {};\n                    host = host[ part ];\n                }\n\n                host[ last ] = modules[ key ];\n            }\n\n            return obj;\n        },\n\n        makeExport = function( dollar ) {\n            root.__dollar = dollar;\n\n            // exports every module.\n            return exportsTo( factory( root, _define, _require ) );\n        },\n\n        origin;\n\n    if ( typeof module === 'object' && typeof module.exports === 'object' ) {\n\n        // For CommonJS and CommonJS-like environments where a proper window is present,\n        module.exports = makeExport();\n    } else if ( typeof define === 'function' && define.amd ) {\n\n        // Allow using this built library as an AMD module\n        // in another project. That other project will only\n        // see this AMD call, not the internal modules in\n        // the closure below.\n        define([ 'jquery' ], makeExport );\n    } else {\n\n        // Browser globals case. Just assign the\n        // result to a property on the global.\n        origin = root.WebUploader;\n        root.WebUploader = makeExport();\n        root.WebUploader.noConflict = function() {\n            root.WebUploader = origin;\n        };\n    }\n})( window, function( window, define, require ) {\n\n\n    /**\n     * @fileOverview jQuery or Zepto\n     */\n    define('dollar-third',[],function() {\n        var $ = window.__dollar || window.jQuery || window.Zepto;\n    \n        if ( !$ ) {\n            throw new Error('jQuery or Zepto not found!');\n        }\n    \n        return $;\n    });\n    /**\n     * @fileOverview Dom 操作相关\n     */\n    define('dollar',[\n        'dollar-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 使用jQuery的Promise\n     */\n    define('promise-third',[\n        'dollar'\n    ], function( $ ) {\n        return {\n            Deferred: $.Deferred,\n            when: $.when,\n    \n            isPromise: function( anything ) {\n                return anything && typeof anything.then === 'function';\n            }\n        };\n    });\n    /**\n     * @fileOverview Promise/A+\n     */\n    define('promise',[\n        'promise-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 基础类方法。\n     */\n    \n    /**\n     * Web Uploader内部类的详细说明，以下提及的功能类，都可以在`WebUploader`这个变量中访问到。\n     *\n     * As you know, Web Uploader的每个文件都是用过[AMD](https://github.com/amdjs/amdjs-api/wiki/AMD)规范中的`define`组织起来的, 每个Module都会有个module id.\n     * 默认module id为该文件的路径，而此路径将会转化成名字空间存放在WebUploader中。如：\n     *\n     * * module `base`：WebUploader.Base\n     * * module `file`: WebUploader.File\n     * * module `lib/dnd`: WebUploader.Lib.Dnd\n     * * module `runtime/html5/dnd`: WebUploader.Runtime.Html5.Dnd\n     *\n     *\n     * 以下文档中对类的使用可能省略掉了`WebUploader`前缀。\n     * @module WebUploader\n     * @title WebUploader API文档\n     */\n    define('base',[\n        'dollar',\n        'promise'\n    ], function( $, promise ) {\n    \n        var noop = function() {},\n            call = Function.call;\n    \n        // http://jsperf.com/uncurrythis\n        // 反科里化\n        function uncurryThis( fn ) {\n            return function() {\n                return call.apply( fn, arguments );\n            };\n        }\n    \n        function bindFn( fn, context ) {\n            return function() {\n                return fn.apply( context, arguments );\n            };\n        }\n    \n        function createObject( proto ) {\n            var f;\n    \n            if ( Object.create ) {\n                return Object.create( proto );\n            } else {\n                f = function() {};\n                f.prototype = proto;\n                return new f();\n            }\n        }\n    \n    \n        /**\n         * 基础类，提供一些简单常用的方法。\n         * @class Base\n         */\n        return {\n    \n            /**\n             * @property {String} version 当前版本号。\n             */\n            version: '0.1.5',\n    \n            /**\n             * @property {jQuery|Zepto} $ 引用依赖的jQuery或者Zepto对象。\n             */\n            $: $,\n    \n            Deferred: promise.Deferred,\n    \n            isPromise: promise.isPromise,\n    \n            when: promise.when,\n    \n            /**\n             * @description  简单的浏览器检查结果。\n             *\n             * * `webkit`  webkit版本号，如果浏览器为非webkit内核，此属性为`undefined`。\n             * * `chrome`  chrome浏览器版本号，如果浏览器为chrome，此属性为`undefined`。\n             * * `ie`  ie浏览器版本号，如果浏览器为非ie，此属性为`undefined`。**暂不支持ie10+**\n             * * `firefox`  firefox浏览器版本号，如果浏览器为非firefox，此属性为`undefined`。\n             * * `safari`  safari浏览器版本号，如果浏览器为非safari，此属性为`undefined`。\n             * * `opera`  opera浏览器版本号，如果浏览器为非opera，此属性为`undefined`。\n             *\n             * @property {Object} [browser]\n             */\n            browser: (function( ua ) {\n                var ret = {},\n                    webkit = ua.match( /WebKit\\/([\\d.]+)/ ),\n                    chrome = ua.match( /Chrome\\/([\\d.]+)/ ) ||\n                        ua.match( /CriOS\\/([\\d.]+)/ ),\n    \n                    ie = ua.match( /MSIE\\s([\\d\\.]+)/ ) ||\n                        ua.match( /(?:trident)(?:.*rv:([\\w.]+))?/i ),\n                    firefox = ua.match( /Firefox\\/([\\d.]+)/ ),\n                    safari = ua.match( /Safari\\/([\\d.]+)/ ),\n                    opera = ua.match( /OPR\\/([\\d.]+)/ );\n    \n                webkit && (ret.webkit = parseFloat( webkit[ 1 ] ));\n                chrome && (ret.chrome = parseFloat( chrome[ 1 ] ));\n                ie && (ret.ie = parseFloat( ie[ 1 ] ));\n                firefox && (ret.firefox = parseFloat( firefox[ 1 ] ));\n                safari && (ret.safari = parseFloat( safari[ 1 ] ));\n                opera && (ret.opera = parseFloat( opera[ 1 ] ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * @description  操作系统检查结果。\n             *\n             * * `android`  如果在android浏览器环境下，此值为对应的android版本号，否则为`undefined`。\n             * * `ios` 如果在ios浏览器环境下，此值为对应的ios版本号，否则为`undefined`。\n             * @property {Object} [os]\n             */\n            os: (function( ua ) {\n                var ret = {},\n    \n                    // osx = !!ua.match( /\\(Macintosh\\; Intel / ),\n                    android = ua.match( /(?:Android);?[\\s\\/]+([\\d.]+)?/ ),\n                    ios = ua.match( /(?:iPad|iPod|iPhone).*OS\\s([\\d_]+)/ );\n    \n                // osx && (ret.osx = true);\n                android && (ret.android = parseFloat( android[ 1 ] ));\n                ios && (ret.ios = parseFloat( ios[ 1 ].replace( /_/g, '.' ) ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * 实现类与类之间的继承。\n             * @method inherits\n             * @grammar Base.inherits( super ) => child\n             * @grammar Base.inherits( super, protos ) => child\n             * @grammar Base.inherits( super, protos, statics ) => child\n             * @param  {Class} super 父类\n             * @param  {Object | Function} [protos] 子类或者对象。如果对象中包含constructor，子类将是用此属性值。\n             * @param  {Function} [protos.constructor] 子类构造器，不指定的话将创建个临时的直接执行父类构造器的方法。\n             * @param  {Object} [statics] 静态属性或方法。\n             * @return {Class} 返回子类。\n             * @example\n             * function Person() {\n             *     console.log( 'Super' );\n             * }\n             * Person.prototype.hello = function() {\n             *     console.log( 'hello' );\n             * };\n             *\n             * var Manager = Base.inherits( Person, {\n             *     world: function() {\n             *         console.log( 'World' );\n             *     }\n             * });\n             *\n             * // 因为没有指定构造器，父类的构造器将会执行。\n             * var instance = new Manager();    // => Super\n             *\n             * // 继承子父类的方法\n             * instance.hello();    // => hello\n             * instance.world();    // => World\n             *\n             * // 子类的__super__属性指向父类\n             * console.log( Manager.__super__ === Person );    // => true\n             */\n            inherits: function( Super, protos, staticProtos ) {\n                var child;\n    \n                if ( typeof protos === 'function' ) {\n                    child = protos;\n                    protos = null;\n                } else if ( protos && protos.hasOwnProperty('constructor') ) {\n                    child = protos.constructor;\n                } else {\n                    child = function() {\n                        return Super.apply( this, arguments );\n                    };\n                }\n    \n                // 复制静态方法\n                $.extend( true, child, Super, staticProtos || {} );\n    \n                /* jshint camelcase: false */\n    \n                // 让子类的__super__属性指向父类。\n                child.__super__ = Super.prototype;\n    \n                // 构建原型，添加原型方法或属性。\n                // 暂时用Object.create实现。\n                child.prototype = createObject( Super.prototype );\n                protos && $.extend( true, child.prototype, protos );\n    \n                return child;\n            },\n    \n            /**\n             * 一个不做任何事情的方法。可以用来赋值给默认的callback.\n             * @method noop\n             */\n            noop: noop,\n    \n            /**\n             * 返回一个新的方法，此方法将已指定的`context`来执行。\n             * @grammar Base.bindFn( fn, context ) => Function\n             * @method bindFn\n             * @example\n             * var doSomething = function() {\n             *         console.log( this.name );\n             *     },\n             *     obj = {\n             *         name: 'Object Name'\n             *     },\n             *     aliasFn = Base.bind( doSomething, obj );\n             *\n             *  aliasFn();    // => Object Name\n             *\n             */\n            bindFn: bindFn,\n    \n            /**\n             * 引用Console.log如果存在的话，否则引用一个[空函数noop](#WebUploader:Base.noop)。\n             * @grammar Base.log( args... ) => undefined\n             * @method log\n             */\n            log: (function() {\n                if ( window.console ) {\n                    return bindFn( console.log, console );\n                }\n                return noop;\n            })(),\n    \n            nextTick: (function() {\n    \n                return function( cb ) {\n                    setTimeout( cb, 1 );\n                };\n    \n                // @bug 当浏览器不在当前窗口时就停了。\n                // var next = window.requestAnimationFrame ||\n                //     window.webkitRequestAnimationFrame ||\n                //     window.mozRequestAnimationFrame ||\n                //     function( cb ) {\n                //         window.setTimeout( cb, 1000 / 60 );\n                //     };\n    \n                // // fix: Uncaught TypeError: Illegal invocation\n                // return bindFn( next, window );\n            })(),\n    \n            /**\n             * 被[uncurrythis](http://www.2ality.com/2011/11/uncurrying-this.html)的数组slice方法。\n             * 将用来将非数组对象转化成数组对象。\n             * @grammar Base.slice( target, start[, end] ) => Array\n             * @method slice\n             * @example\n             * function doSomthing() {\n             *     var args = Base.slice( arguments, 1 );\n             *     console.log( args );\n             * }\n             *\n             * doSomthing( 'ignored', 'arg2', 'arg3' );    // => Array [\"arg2\", \"arg3\"]\n             */\n            slice: uncurryThis( [].slice ),\n    \n            /**\n             * 生成唯一的ID\n             * @method guid\n             * @grammar Base.guid() => String\n             * @grammar Base.guid( prefx ) => String\n             */\n            guid: (function() {\n                var counter = 0;\n    \n                return function( prefix ) {\n                    var guid = (+new Date()).toString( 32 ),\n                        i = 0;\n    \n                    for ( ; i < 5; i++ ) {\n                        guid += Math.floor( Math.random() * 65535 ).toString( 32 );\n                    }\n    \n                    return (prefix || 'wu_') + guid + (counter++).toString( 32 );\n                };\n            })(),\n    \n            /**\n             * 格式化文件大小, 输出成带单位的字符串\n             * @method formatSize\n             * @grammar Base.formatSize( size ) => String\n             * @grammar Base.formatSize( size, pointLength ) => String\n             * @grammar Base.formatSize( size, pointLength, units ) => String\n             * @param {Number} size 文件大小\n             * @param {Number} [pointLength=2] 精确到的小数点数。\n             * @param {Array} [units=[ 'B', 'K', 'M', 'G', 'TB' ]] 单位数组。从字节，到千字节，一直往上指定。如果单位数组里面只指定了到了K(千字节)，同时文件大小大于M, 此方法的输出将还是显示成多少K.\n             * @example\n             * console.log( Base.formatSize( 100 ) );    // => 100B\n             * console.log( Base.formatSize( 1024 ) );    // => 1.00K\n             * console.log( Base.formatSize( 1024, 0 ) );    // => 1K\n             * console.log( Base.formatSize( 1024 * 1024 ) );    // => 1.00M\n             * console.log( Base.formatSize( 1024 * 1024 * 1024 ) );    // => 1.00G\n             * console.log( Base.formatSize( 1024 * 1024 * 1024, 0, ['B', 'KB', 'MB'] ) );    // => 1024MB\n             */\n            formatSize: function( size, pointLength, units ) {\n                var unit;\n    \n                units = units || [ 'B', 'K', 'M', 'G', 'TB' ];\n    \n                while ( (unit = units.shift()) && size > 1024 ) {\n                    size = size / 1024;\n                }\n    \n                return (unit === 'B' ? size : size.toFixed( pointLength || 2 )) +\n                        unit;\n            }\n        };\n    });\n    /**\n     * 事件处理类，可以独立使用，也可以扩展给对象使用。\n     * @fileOverview Mediator\n     */\n    define('mediator',[\n        'base'\n    ], function( Base ) {\n        var $ = Base.$,\n            slice = [].slice,\n            separator = /\\s+/,\n            protos;\n    \n        // 根据条件过滤出事件handlers.\n        function findHandlers( arr, name, callback, context ) {\n            return $.grep( arr, function( handler ) {\n                return handler &&\n                        (!name || handler.e === name) &&\n                        (!callback || handler.cb === callback ||\n                        handler.cb._cb === callback) &&\n                        (!context || handler.ctx === context);\n            });\n        }\n    \n        function eachEvent( events, callback, iterator ) {\n            // 不支持对象，只支持多个event用空格隔开\n            $.each( (events || '').split( separator ), function( _, key ) {\n                iterator( key, callback );\n            });\n        }\n    \n        function triggerHanders( events, args ) {\n            var stoped = false,\n                i = -1,\n                len = events.length,\n                handler;\n    \n            while ( ++i < len ) {\n                handler = events[ i ];\n    \n                if ( handler.cb.apply( handler.ctx2, args ) === false ) {\n                    stoped = true;\n                    break;\n                }\n            }\n    \n            return !stoped;\n        }\n    \n        protos = {\n    \n            /**\n             * 绑定事件。\n             *\n             * `callback`方法在执行时，arguments将会来源于trigger的时候携带的参数。如\n             * ```javascript\n             * var obj = {};\n             *\n             * // 使得obj有事件行为\n             * Mediator.installTo( obj );\n             *\n             * obj.on( 'testa', function( arg1, arg2 ) {\n             *     console.log( arg1, arg2 ); // => 'arg1', 'arg2'\n             * });\n             *\n             * obj.trigger( 'testa', 'arg1', 'arg2' );\n             * ```\n             *\n             * 如果`callback`中，某一个方法`return false`了，则后续的其他`callback`都不会被执行到。\n             * 切会影响到`trigger`方法的返回值，为`false`。\n             *\n             * `on`还可以用来添加一个特殊事件`all`, 这样所有的事件触发都会响应到。同时此类`callback`中的arguments有一个不同处，\n             * 就是第一个参数为`type`，记录当前是什么事件在触发。此类`callback`的优先级比脚低，会再正常`callback`执行完后触发。\n             * ```javascript\n             * obj.on( 'all', function( type, arg1, arg2 ) {\n             *     console.log( type, arg1, arg2 ); // => 'testa', 'arg1', 'arg2'\n             * });\n             * ```\n             *\n             * @method on\n             * @grammar on( name, callback[, context] ) => self\n             * @param  {String}   name     事件名，支持多个事件用空格隔开\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             * @class Mediator\n             */\n            on: function( name, callback, context ) {\n                var me = this,\n                    set;\n    \n                if ( !callback ) {\n                    return this;\n                }\n    \n                set = this._events || (this._events = []);\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var handler = { e: name };\n    \n                    handler.cb = callback;\n                    handler.ctx = context;\n                    handler.ctx2 = context || me;\n                    handler.id = set.length;\n    \n                    set.push( handler );\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 绑定事件，且当handler执行完后，自动解除绑定。\n             * @method once\n             * @grammar once( name, callback[, context] ) => self\n             * @param  {String}   name     事件名\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            once: function( name, callback, context ) {\n                var me = this;\n    \n                if ( !callback ) {\n                    return me;\n                }\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var once = function() {\n                            me.off( name, once );\n                            return callback.apply( context || me, arguments );\n                        };\n    \n                    once._cb = callback;\n                    me.on( name, once, context );\n                });\n    \n                return me;\n            },\n    \n            /**\n             * 解除事件绑定\n             * @method off\n             * @grammar off( [name[, callback[, context] ] ] ) => self\n             * @param  {String}   [name]     事件名\n             * @param  {Function} [callback] 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            off: function( name, cb, ctx ) {\n                var events = this._events;\n    \n                if ( !events ) {\n                    return this;\n                }\n    \n                if ( !name && !cb && !ctx ) {\n                    this._events = [];\n                    return this;\n                }\n    \n                eachEvent( name, cb, function( name, cb ) {\n                    $.each( findHandlers( events, name, cb, ctx ), function() {\n                        delete events[ this.id ];\n                    });\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 触发事件\n             * @method trigger\n             * @grammar trigger( name[, args...] ) => self\n             * @param  {String}   type     事件名\n             * @param  {*} [...] 任意参数\n             * @return {Boolean} 如果handler中return false了，则返回false, 否则返回true\n             */\n            trigger: function( type ) {\n                var args, events, allEvents;\n    \n                if ( !this._events || !type ) {\n                    return this;\n                }\n    \n                args = slice.call( arguments, 1 );\n                events = findHandlers( this._events, type );\n                allEvents = findHandlers( this._events, 'all' );\n    \n                return triggerHanders( events, args ) &&\n                        triggerHanders( allEvents, arguments );\n            }\n        };\n    \n        /**\n         * 中介者，它本身是个单例，但可以通过[installTo](#WebUploader:Mediator:installTo)方法，使任何对象具备事件行为。\n         * 主要目的是负责模块与模块之间的合作，降低耦合度。\n         *\n         * @class Mediator\n         */\n        return $.extend({\n    \n            /**\n             * 可以通过这个接口，使任何对象具备事件功能。\n             * @method installTo\n             * @param  {Object} obj 需要具备事件行为的对象。\n             * @return {Object} 返回obj.\n             */\n            installTo: function( obj ) {\n                return $.extend( obj, protos );\n            }\n    \n        }, protos );\n    });\n    /**\n     * @fileOverview Uploader上传类\n     */\n    define('uploader',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$;\n    \n        /**\n         * 上传入口类。\n         * @class Uploader\n         * @constructor\n         * @grammar new Uploader( opts ) => Uploader\n         * @example\n         * var uploader = WebUploader.Uploader({\n         *     swf: 'path_of_swf/Uploader.swf',\n         *\n         *     // 开起分片上传。\n         *     chunked: true\n         * });\n         */\n        function Uploader( opts ) {\n            this.options = $.extend( true, {}, Uploader.options, opts );\n            this._init( this.options );\n        }\n    \n        // default Options\n        // widgets中有相应扩展\n        Uploader.options = {};\n        Mediator.installTo( Uploader.prototype );\n    \n        // 批量添加纯命令式方法。\n        $.each({\n            upload: 'start-upload',\n            stop: 'stop-upload',\n            getFile: 'get-file',\n            getFiles: 'get-files',\n            addFile: 'add-file',\n            addFiles: 'add-file',\n            sort: 'sort-files',\n            removeFile: 'remove-file',\n            cancelFile: 'cancel-file',\n            skipFile: 'skip-file',\n            retry: 'retry',\n            isInProgress: 'is-in-progress',\n            makeThumb: 'make-thumb',\n            md5File: 'md5-file',\n            getDimension: 'get-dimension',\n            addButton: 'add-btn',\n            predictRuntimeType: 'predict-runtime-type',\n            refresh: 'refresh',\n            disable: 'disable',\n            enable: 'enable',\n            reset: 'reset'\n        }, function( fn, command ) {\n            Uploader.prototype[ fn ] = function() {\n                return this.request( command, arguments );\n            };\n        });\n    \n        $.extend( Uploader.prototype, {\n            state: 'pending',\n    \n            _init: function( opts ) {\n                var me = this;\n    \n                me.request( 'init', opts, function() {\n                    me.state = 'ready';\n                    me.trigger('ready');\n                });\n            },\n    \n            /**\n             * 获取或者设置Uploader配置项。\n             * @method option\n             * @grammar option( key ) => *\n             * @grammar option( key, val ) => self\n             * @example\n             *\n             * // 初始状态图片上传前不会压缩\n             * var uploader = new WebUploader.Uploader({\n             *     compress: null;\n             * });\n             *\n             * // 修改后图片上传前，尝试将图片压缩到1600 * 1600\n             * uploader.option( 'compress', {\n             *     width: 1600,\n             *     height: 1600\n             * });\n             */\n            option: function( key, val ) {\n                var opts = this.options;\n    \n                // setter\n                if ( arguments.length > 1 ) {\n    \n                    if ( $.isPlainObject( val ) &&\n                            $.isPlainObject( opts[ key ] ) ) {\n                        $.extend( opts[ key ], val );\n                    } else {\n                        opts[ key ] = val;\n                    }\n    \n                } else {    // getter\n                    return key ? opts[ key ] : opts;\n                }\n            },\n    \n            /**\n             * 获取文件统计信息。返回一个包含一下信息的对象。\n             * * `successNum` 上传成功的文件数\n             * * `progressNum` 上传中的文件数\n             * * `cancelNum` 被删除的文件数\n             * * `invalidNum` 无效的文件数\n             * * `uploadFailNum` 上传失败的文件数\n             * * `queueNum` 还在队列中的文件数\n             * * `interruptNum` 被暂停的文件数\n             * @method getStats\n             * @grammar getStats() => Object\n             */\n            getStats: function() {\n                // return this._mgr.getStats.apply( this._mgr, arguments );\n                var stats = this.request('get-stats');\n    \n                return stats ? {\n                    successNum: stats.numOfSuccess,\n                    progressNum: stats.numOfProgress,\n    \n                    // who care?\n                    // queueFailNum: 0,\n                    cancelNum: stats.numOfCancel,\n                    invalidNum: stats.numOfInvalid,\n                    uploadFailNum: stats.numOfUploadFailed,\n                    queueNum: stats.numOfQueue,\n                    interruptNum: stats.numofInterrupt\n                } : {};\n            },\n    \n            // 需要重写此方法来来支持opts.onEvent和instance.onEvent的处理器\n            trigger: function( type/*, args...*/ ) {\n                var args = [].slice.call( arguments, 1 ),\n                    opts = this.options,\n                    name = 'on' + type.substring( 0, 1 ).toUpperCase() +\n                        type.substring( 1 );\n    \n                if (\n                        // 调用通过on方法注册的handler.\n                        Mediator.trigger.apply( this, arguments ) === false ||\n    \n                        // 调用opts.onEvent\n                        $.isFunction( opts[ name ] ) &&\n                        opts[ name ].apply( this, args ) === false ||\n    \n                        // 调用this.onEvent\n                        $.isFunction( this[ name ] ) &&\n                        this[ name ].apply( this, args ) === false ||\n    \n                        // 广播所有uploader的事件。\n                        Mediator.trigger.apply( Mediator,\n                        [ this, type ].concat( args ) ) === false ) {\n    \n                    return false;\n                }\n    \n                return true;\n            },\n    \n            /**\n             * 销毁 webuploader 实例\n             * @method destroy\n             * @grammar destroy() => undefined\n             */\n            destroy: function() {\n                this.request( 'destroy', arguments );\n                this.off();\n            },\n    \n            // widgets/widget.js将补充此方法的详细文档。\n            request: Base.noop\n        });\n    \n        /**\n         * 创建Uploader实例，等同于new Uploader( opts );\n         * @method create\n         * @class Base\n         * @static\n         * @grammar Base.create( opts ) => Uploader\n         */\n        Base.create = Uploader.create = function( opts ) {\n            return new Uploader( opts );\n        };\n    \n        // 暴露Uploader，可以通过它来扩展业务逻辑。\n        Base.Uploader = Uploader;\n    \n        return Uploader;\n    });\n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/runtime',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            factories = {},\n    \n            // 获取对象的第一个key\n            getFirstKey = function( obj ) {\n                for ( var key in obj ) {\n                    if ( obj.hasOwnProperty( key ) ) {\n                        return key;\n                    }\n                }\n                return null;\n            };\n    \n        // 接口类。\n        function Runtime( options ) {\n            this.options = $.extend({\n                container: document.body\n            }, options );\n            this.uid = Base.guid('rt_');\n        }\n    \n        $.extend( Runtime.prototype, {\n    \n            getContainer: function() {\n                var opts = this.options,\n                    parent, container;\n    \n                if ( this._container ) {\n                    return this._container;\n                }\n    \n                parent = $( opts.container || document.body );\n                container = $( document.createElement('div') );\n    \n                container.attr( 'id', 'rt_' + this.uid );\n                container.css({\n                    position: 'absolute',\n                    top: '0px',\n                    left: '0px',\n                    width: '1px',\n                    height: '1px',\n                    overflow: 'hidden'\n                });\n    \n                parent.append( container );\n                parent.addClass('webuploader-container');\n                this._container = container;\n                this._parent = parent;\n                return container;\n            },\n    \n            init: Base.noop,\n            exec: Base.noop,\n    \n            destroy: function() {\n                this._container && this._container.remove();\n                this._parent && this._parent.removeClass('webuploader-container');\n                this.off();\n            }\n        });\n    \n        Runtime.orders = 'html5,flash';\n    \n    \n        /**\n         * 添加Runtime实现。\n         * @param {String} type    类型\n         * @param {Runtime} factory 具体Runtime实现。\n         */\n        Runtime.addRuntime = function( type, factory ) {\n            factories[ type ] = factory;\n        };\n    \n        Runtime.hasRuntime = function( type ) {\n            return !!(type ? factories[ type ] : getFirstKey( factories ));\n        };\n    \n        Runtime.create = function( opts, orders ) {\n            var type, runtime;\n    \n            orders = orders || Runtime.orders;\n            $.each( orders.split( /\\s*,\\s*/g ), function() {\n                if ( factories[ this ] ) {\n                    type = this;\n                    return false;\n                }\n            });\n    \n            type = type || getFirstKey( factories );\n    \n            if ( !type ) {\n                throw new Error('Runtime Error');\n            }\n    \n            runtime = new factories[ type ]( opts );\n            return runtime;\n        };\n    \n        Mediator.installTo( Runtime.prototype );\n        return Runtime;\n    });\n    \n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/client',[\n        'base',\n        'mediator',\n        'runtime/runtime'\n    ], function( Base, Mediator, Runtime ) {\n    \n        var cache;\n    \n        cache = (function() {\n            var obj = {};\n    \n            return {\n                add: function( runtime ) {\n                    obj[ runtime.uid ] = runtime;\n                },\n    \n                get: function( ruid, standalone ) {\n                    var i;\n    \n                    if ( ruid ) {\n                        return obj[ ruid ];\n                    }\n    \n                    for ( i in obj ) {\n                        // 有些类型不能重用，比如filepicker.\n                        if ( standalone && obj[ i ].__standalone ) {\n                            continue;\n                        }\n    \n                        return obj[ i ];\n                    }\n    \n                    return null;\n                },\n    \n                remove: function( runtime ) {\n                    delete obj[ runtime.uid ];\n                }\n            };\n        })();\n    \n        function RuntimeClient( component, standalone ) {\n            var deferred = Base.Deferred(),\n                runtime;\n    \n            this.uid = Base.guid('client_');\n    \n            // 允许runtime没有初始化之前，注册一些方法在初始化后执行。\n            this.runtimeReady = function( cb ) {\n                return deferred.done( cb );\n            };\n    \n            this.connectRuntime = function( opts, cb ) {\n    \n                // already connected.\n                if ( runtime ) {\n                    throw new Error('already connected!');\n                }\n    \n                deferred.done( cb );\n    \n                if ( typeof opts === 'string' && cache.get( opts ) ) {\n                    runtime = cache.get( opts );\n                }\n    \n                // 像filePicker只能独立存在，不能公用。\n                runtime = runtime || cache.get( null, standalone );\n    \n                // 需要创建\n                if ( !runtime ) {\n                    runtime = Runtime.create( opts, opts.runtimeOrder );\n                    runtime.__promise = deferred.promise();\n                    runtime.once( 'ready', deferred.resolve );\n                    runtime.init();\n                    cache.add( runtime );\n                    runtime.__client = 1;\n                } else {\n                    // 来自cache\n                    Base.$.extend( runtime.options, opts );\n                    runtime.__promise.then( deferred.resolve );\n                    runtime.__client++;\n                }\n    \n                standalone && (runtime.__standalone = standalone);\n                return runtime;\n            };\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.disconnectRuntime = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                runtime.__client--;\n    \n                if ( runtime.__client <= 0 ) {\n                    cache.remove( runtime );\n                    delete runtime.__promise;\n                    runtime.destroy();\n                }\n    \n                runtime = null;\n            };\n    \n            this.exec = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                var args = Base.slice( arguments );\n                component && args.unshift( component );\n    \n                return runtime.exec.apply( this, args );\n            };\n    \n            this.getRuid = function() {\n                return runtime && runtime.uid;\n            };\n    \n            this.destroy = (function( destroy ) {\n                return function() {\n                    destroy && destroy.apply( this, arguments );\n                    this.trigger('destroy');\n                    this.off();\n                    this.exec('destroy');\n                    this.disconnectRuntime();\n                };\n            })( this.destroy );\n        }\n    \n        Mediator.installTo( RuntimeClient.prototype );\n        return RuntimeClient;\n    });\n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/dnd',[\n        'base',\n        'mediator',\n        'runtime/client'\n    ], function( Base, Mediator, RuntimeClent ) {\n    \n        var $ = Base.$;\n    \n        function DragAndDrop( opts ) {\n            opts = this.options = $.extend({}, DragAndDrop.options, opts );\n    \n            opts.container = $( opts.container );\n    \n            if ( !opts.container.length ) {\n                return;\n            }\n    \n            RuntimeClent.call( this, 'DragAndDrop' );\n        }\n    \n        DragAndDrop.options = {\n            accept: null,\n            disableGlobalDnd: false\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: DragAndDrop,\n    \n            init: function() {\n                var me = this;\n    \n                me.connectRuntime( me.options, function() {\n                    me.exec('init');\n                    me.trigger('ready');\n                });\n            }\n        });\n    \n        Mediator.installTo( DragAndDrop.prototype );\n    \n        return DragAndDrop;\n    });\n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/widget',[\n        'base',\n        'uploader'\n    ], function( Base, Uploader ) {\n    \n        var $ = Base.$,\n            _init = Uploader.prototype._init,\n            _destroy = Uploader.prototype.destroy,\n            IGNORE = {},\n            widgetClass = [];\n    \n        function isArrayLike( obj ) {\n            if ( !obj ) {\n                return false;\n            }\n    \n            var length = obj.length,\n                type = $.type( obj );\n    \n            if ( obj.nodeType === 1 && length ) {\n                return true;\n            }\n    \n            return type === 'array' || type !== 'function' && type !== 'string' &&\n                    (length === 0 || typeof length === 'number' && length > 0 &&\n                    (length - 1) in obj);\n        }\n    \n        function Widget( uploader ) {\n            this.owner = uploader;\n            this.options = uploader.options;\n        }\n    \n        $.extend( Widget.prototype, {\n    \n            init: Base.noop,\n    \n            // 类Backbone的事件监听声明，监听uploader实例上的事件\n            // widget直接无法监听事件，事件只能通过uploader来传递\n            invoke: function( apiName, args ) {\n    \n                /*\n                    {\n                        'make-thumb': 'makeThumb'\n                    }\n                 */\n                var map = this.responseMap;\n    \n                // 如果无API响应声明则忽略\n                if ( !map || !(apiName in map) || !(map[ apiName ] in this) ||\n                        !$.isFunction( this[ map[ apiName ] ] ) ) {\n    \n                    return IGNORE;\n                }\n    \n                return this[ map[ apiName ] ].apply( this, args );\n    \n            },\n    \n            /**\n             * 发送命令。当传入`callback`或者`handler`中返回`promise`时。返回一个当所有`handler`中的promise都完成后完成的新`promise`。\n             * @method request\n             * @grammar request( command, args ) => * | Promise\n             * @grammar request( command, args, callback ) => Promise\n             * @for  Uploader\n             */\n            request: function() {\n                return this.owner.request.apply( this.owner, arguments );\n            }\n        });\n    \n        // 扩展Uploader.\n        $.extend( Uploader.prototype, {\n    \n            /**\n             * @property {String | Array} [disableWidgets=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 默认所有 Uploader.register 了的 widget 都会被加载，如果禁用某一部分，请通过此 option 指定黑名单。\n             */\n    \n            // 覆写_init用来初始化widgets\n            _init: function() {\n                var me = this,\n                    widgets = me._widgets = [],\n                    deactives = me.options.disableWidgets || '';\n    \n                $.each( widgetClass, function( _, klass ) {\n                    (!deactives || !~deactives.indexOf( klass._name )) &&\n                        widgets.push( new klass( me ) );\n                });\n    \n                return _init.apply( me, arguments );\n            },\n    \n            request: function( apiName, args, callback ) {\n                var i = 0,\n                    widgets = this._widgets,\n                    len = widgets && widgets.length,\n                    rlts = [],\n                    dfds = [],\n                    widget, rlt, promise, key;\n    \n                args = isArrayLike( args ) ? args : [ args ];\n    \n                for ( ; i < len; i++ ) {\n                    widget = widgets[ i ];\n                    rlt = widget.invoke( apiName, args );\n    \n                    if ( rlt !== IGNORE ) {\n    \n                        // Deferred对象\n                        if ( Base.isPromise( rlt ) ) {\n                            dfds.push( rlt );\n                        } else {\n                            rlts.push( rlt );\n                        }\n                    }\n                }\n    \n                // 如果有callback，则用异步方式。\n                if ( callback || dfds.length ) {\n                    promise = Base.when.apply( Base, dfds );\n                    key = promise.pipe ? 'pipe' : 'then';\n    \n                    // 很重要不能删除。删除了会死循环。\n                    // 保证执行顺序。让callback总是在下一个 tick 中执行。\n                    return promise[ key ](function() {\n                                var deferred = Base.Deferred(),\n                                    args = arguments;\n    \n                                if ( args.length === 1 ) {\n                                    args = args[ 0 ];\n                                }\n    \n                                setTimeout(function() {\n                                    deferred.resolve( args );\n                                }, 1 );\n    \n                                return deferred.promise();\n                            })[ callback ? key : 'done' ]( callback || Base.noop );\n                } else {\n                    return rlts[ 0 ];\n                }\n            },\n    \n            destroy: function() {\n                _destroy.apply( this, arguments );\n                this._widgets = null;\n            }\n        });\n    \n        /**\n         * 添加组件\n         * @grammar Uploader.register(proto);\n         * @grammar Uploader.register(map, proto);\n         * @param  {object} responseMap API 名称与函数实现的映射\n         * @param  {object} proto 组件原型，构造函数通过 constructor 属性定义\n         * @method Uploader.register\n         * @for Uploader\n         * @example\n         * Uploader.register({\n         *     'make-thumb': 'makeThumb'\n         * }, {\n         *     init: function( options ) {},\n         *     makeThumb: function() {}\n         * });\n         *\n         * Uploader.register({\n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         */\n        Uploader.register = Widget.register = function( responseMap, widgetProto ) {\n            var map = { init: 'init', destroy: 'destroy', name: 'anonymous' },\n                klass;\n    \n            if ( arguments.length === 1 ) {\n                widgetProto = responseMap;\n    \n                // 自动生成 map 表。\n                $.each(widgetProto, function(key) {\n                    if ( key[0] === '_' || key === 'name' ) {\n                        key === 'name' && (map.name = widgetProto.name);\n                        return;\n                    }\n    \n                    map[key.replace(/[A-Z]/g, '-$&').toLowerCase()] = key;\n                });\n    \n            } else {\n                map = $.extend( map, responseMap );\n            }\n    \n            widgetProto.responseMap = map;\n            klass = Base.inherits( Widget, widgetProto );\n            klass._name = map.name;\n            widgetClass.push( klass );\n    \n            return klass;\n        };\n    \n        /**\n         * 删除插件，只有在注册时指定了名字的才能被删除。\n         * @grammar Uploader.unRegister(name);\n         * @param  {string} name 组件名字\n         * @method Uploader.unRegister\n         * @for Uploader\n         * @example\n         *\n         * Uploader.register({\n         *     name: 'custom',\n         *     \n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         *\n         * Uploader.unRegister('custom');\n         */\n        Uploader.unRegister = Widget.unRegister = function( name ) {\n            if ( !name || name === 'anonymous' ) {\n                return;\n            }\n            \n            // 删除指定的插件。\n            for ( var i = widgetClass.length; i--; ) {\n                if ( widgetClass[i]._name === name ) {\n                    widgetClass.splice(i, 1)\n                }\n            }\n        };\n    \n        return Widget;\n    });\n    /**\n     * @fileOverview DragAndDrop Widget。\n     */\n    define('widgets/filednd',[\n        'base',\n        'uploader',\n        'lib/dnd',\n        'widgets/widget'\n    ], function( Base, Uploader, Dnd ) {\n        var $ = Base.$;\n    \n        Uploader.options.dnd = '';\n    \n        /**\n         * @property {Selector} [dnd=undefined]  指定Drag And Drop拖拽的容器，如果不指定，则不启动。\n         * @namespace options\n         * @for Uploader\n         */\n        \n        /**\n         * @property {Selector} [disableGlobalDnd=false]  是否禁掉整个页面的拖拽功能，如果不禁用，图片拖进来的时候会默认被浏览器打开。\n         * @namespace options\n         * @for Uploader\n         */\n    \n        /**\n         * @event dndAccept\n         * @param {DataTransferItemList} items DataTransferItem\n         * @description 阻止此事件可以拒绝某些类型的文件拖入进来。目前只有 chrome 提供这样的 API，且只能通过 mime-type 验证。\n         * @for  Uploader\n         */\n        return Uploader.register({\n            name: 'dnd',\n            \n            init: function( opts ) {\n    \n                if ( !opts.dnd ||\n                        this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                var me = this,\n                    deferred = Base.Deferred(),\n                    options = $.extend({}, {\n                        disableGlobalDnd: opts.disableGlobalDnd,\n                        container: opts.dnd,\n                        accept: opts.accept\n                    }),\n                    dnd;\n    \n                this.dnd = dnd = new Dnd( options );\n    \n                dnd.once( 'ready', deferred.resolve );\n                dnd.on( 'drop', function( files ) {\n                    me.request( 'add-file', [ files ]);\n                });\n    \n                // 检测文件是否全部允许添加。\n                dnd.on( 'accept', function( items ) {\n                    return me.owner.trigger( 'dndAccept', items );\n                });\n    \n                dnd.init();\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                this.dnd && this.dnd.destroy();\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepaste',[\n        'base',\n        'mediator',\n        'runtime/client'\n    ], function( Base, Mediator, RuntimeClent ) {\n    \n        var $ = Base.$;\n    \n        function FilePaste( opts ) {\n            opts = this.options = $.extend({}, opts );\n            opts.container = $( opts.container || document.body );\n            RuntimeClent.call( this, 'FilePaste' );\n        }\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePaste,\n    \n            init: function() {\n                var me = this;\n    \n                me.connectRuntime( me.options, function() {\n                    me.exec('init');\n                    me.trigger('ready');\n                });\n            }\n        });\n    \n        Mediator.installTo( FilePaste.prototype );\n    \n        return FilePaste;\n    });\n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/filepaste',[\n        'base',\n        'uploader',\n        'lib/filepaste',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePaste ) {\n        var $ = Base.$;\n    \n        /**\n         * @property {Selector} [paste=undefined]  指定监听paste事件的容器，如果不指定，不启用此功能。此功能为通过粘贴来添加截屏的图片。建议设置为`document.body`.\n         * @namespace options\n         * @for Uploader\n         */\n        return Uploader.register({\n            name: 'paste',\n            \n            init: function( opts ) {\n    \n                if ( !opts.paste ||\n                        this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                var me = this,\n                    deferred = Base.Deferred(),\n                    options = $.extend({}, {\n                        container: opts.paste,\n                        accept: opts.accept\n                    }),\n                    paste;\n    \n                this.paste = paste = new FilePaste( options );\n    \n                paste.once( 'ready', deferred.resolve );\n                paste.on( 'paste', function( files ) {\n                    me.owner.request( 'add-file', [ files ]);\n                });\n                paste.init();\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                this.paste && this.paste.destroy();\n            }\n        });\n    });\n    /**\n     * @fileOverview Blob\n     */\n    define('lib/blob',[\n        'base',\n        'runtime/client'\n    ], function( Base, RuntimeClient ) {\n    \n        function Blob( ruid, source ) {\n            var me = this;\n    \n            me.source = source;\n            me.ruid = ruid;\n            this.size = source.size || 0;\n    \n            // 如果没有指定 mimetype, 但是知道文件后缀。\n            if ( !source.type && this.ext &&\n                    ~'jpg,jpeg,png,gif,bmp'.indexOf( this.ext ) ) {\n                this.type = 'image/' + (this.ext === 'jpg' ? 'jpeg' : this.ext);\n            } else {\n                this.type = source.type || 'application/octet-stream';\n            }\n    \n            RuntimeClient.call( me, 'Blob' );\n            this.uid = source.uid || this.uid;\n    \n            if ( ruid ) {\n                me.connectRuntime( ruid );\n            }\n        }\n    \n        Base.inherits( RuntimeClient, {\n            constructor: Blob,\n    \n            slice: function( start, end ) {\n                return this.exec( 'slice', start, end );\n            },\n    \n            getSource: function() {\n                return this.source;\n            }\n        });\n    \n        return Blob;\n    });\n    /**\n     * 为了统一化Flash的File和HTML5的File而存在。\n     * 以至于要调用Flash里面的File，也可以像调用HTML5版本的File一下。\n     * @fileOverview File\n     */\n    define('lib/file',[\n        'base',\n        'lib/blob'\n    ], function( Base, Blob ) {\n    \n        var uid = 1,\n            rExt = /\\.([^.]+)$/;\n    \n        function File( ruid, file ) {\n            var ext;\n    \n            this.name = file.name || ('untitled' + uid++);\n            ext = rExt.exec( file.name ) ? RegExp.$1.toLowerCase() : '';\n    \n            // todo 支持其他类型文件的转换。\n            // 如果有 mimetype, 但是文件名里面没有找出后缀规律\n            if ( !ext && file.type ) {\n                ext = /\\/(jpg|jpeg|png|gif|bmp)$/i.exec( file.type ) ?\n                        RegExp.$1.toLowerCase() : '';\n                this.name += '.' + ext;\n            }\n    \n            this.ext = ext;\n            this.lastModifiedDate = file.lastModifiedDate ||\n                    (new Date()).toLocaleString();\n    \n            Blob.apply( this, arguments );\n        }\n    \n        return Base.inherits( Blob, File );\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepicker',[\n        'base',\n        'runtime/client',\n        'lib/file'\n    ], function( Base, RuntimeClent, File ) {\n    \n        var $ = Base.$;\n    \n        function FilePicker( opts ) {\n            opts = this.options = $.extend({}, FilePicker.options, opts );\n    \n            opts.container = $( opts.id );\n    \n            if ( !opts.container.length ) {\n                throw new Error('按钮指定错误');\n            }\n    \n            opts.innerHTML = opts.innerHTML || opts.label ||\n                    opts.container.html() || '';\n    \n            opts.button = $( opts.button || document.createElement('div') );\n            opts.button.html( opts.innerHTML );\n            opts.container.html( opts.button );\n    \n            RuntimeClent.call( this, 'FilePicker', true );\n        }\n    \n        FilePicker.options = {\n            button: null,\n            container: null,\n            label: null,\n            innerHTML: null,\n            multiple: true,\n            accept: null,\n            name: 'file'\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePicker,\n    \n            init: function() {\n                var me = this,\n                    opts = me.options,\n                    button = opts.button;\n    \n                button.addClass('webuploader-pick');\n    \n                me.on( 'all', function( type ) {\n                    var files;\n    \n                    switch ( type ) {\n                        case 'mouseenter':\n                            button.addClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'mouseleave':\n                            button.removeClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'change':\n                            files = me.exec('getFiles');\n                            me.trigger( 'select', $.map( files, function( file ) {\n                                file = new File( me.getRuid(), file );\n    \n                                // 记录来源。\n                                file._refer = opts.container;\n                                return file;\n                            }), opts.container );\n                            break;\n                    }\n                });\n    \n                me.connectRuntime( opts, function() {\n                    me.refresh();\n                    me.exec( 'init', opts );\n                    me.trigger('ready');\n                });\n    \n                this._resizeHandler = Base.bindFn( this.refresh, this );\n                $( window ).on( 'resize', this._resizeHandler );\n            },\n    \n            refresh: function() {\n                var shimContainer = this.getRuntime().getContainer(),\n                    button = this.options.button,\n                    width = button.outerWidth ?\n                            button.outerWidth() : button.width(),\n    \n                    height = button.outerHeight ?\n                            button.outerHeight() : button.height(),\n    \n                    pos = button.offset();\n    \n                width && height && shimContainer.css({\n                    bottom: 'auto',\n                    right: 'auto',\n                    width: width + 'px',\n                    height: height + 'px'\n                }).offset( pos );\n            },\n    \n            enable: function() {\n                var btn = this.options.button;\n    \n                btn.removeClass('webuploader-pick-disable');\n                this.refresh();\n            },\n    \n            disable: function() {\n                var btn = this.options.button;\n    \n                this.getRuntime().getContainer().css({\n                    top: '-99999px'\n                });\n    \n                btn.addClass('webuploader-pick-disable');\n            },\n    \n            destroy: function() {\n                var btn = this.options.button;\n                $( window ).off( 'resize', this._resizeHandler );\n                btn.removeClass('webuploader-pick-disable webuploader-pick-hover ' +\n                    'webuploader-pick');\n            }\n        });\n    \n        return FilePicker;\n    });\n    \n    /**\n     * @fileOverview 文件选择相关\n     */\n    define('widgets/filepicker',[\n        'base',\n        'uploader',\n        'lib/filepicker',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePicker ) {\n        var $ = Base.$;\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Selector | Object} [pick=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 指定选择文件的按钮容器，不指定则不创建按钮。\n             *\n             * * `id` {Seletor|dom} 指定选择文件的按钮容器，不指定则不创建按钮。**注意** 这里虽然写的是 id, 但是不是只支持 id, 还支持 class, 或者 dom 节点。\n             * * `label` {String} 请采用 `innerHTML` 代替\n             * * `innerHTML` {String} 指定按钮文字。不指定时优先从指定的容器中看是否自带文字。\n             * * `multiple` {Boolean} 是否开起同时选择多个文件能力。\n             */\n            pick: null,\n    \n            /**\n             * @property {Arroy} [accept=null]\n             * @namespace options\n             * @for Uploader\n             * @description 指定接受哪些类型的文件。 由于目前还有ext转mimeType表，所以这里需要分开指定。\n             *\n             * * `title` {String} 文字描述\n             * * `extensions` {String} 允许的文件后缀，不带点，多个用逗号分割。\n             * * `mimeTypes` {String} 多个用逗号分割。\n             *\n             * 如：\n             *\n             * ```\n             * {\n             *     title: 'Images',\n             *     extensions: 'gif,jpg,jpeg,bmp,png',\n             *     mimeTypes: 'image/*'\n             * }\n             * ```\n             */\n            accept: null/*{\n                title: 'Images',\n                extensions: 'gif,jpg,jpeg,bmp,png',\n                mimeTypes: 'image/*'\n            }*/\n        });\n    \n        return Uploader.register({\n            name: 'picker',\n    \n            init: function( opts ) {\n                this.pickers = [];\n                return opts.pick && this.addBtn( opts.pick );\n            },\n    \n            refresh: function() {\n                $.each( this.pickers, function() {\n                    this.refresh();\n                });\n            },\n    \n            /**\n             * @method addButton\n             * @for Uploader\n             * @grammar addButton( pick ) => Promise\n             * @description\n             * 添加文件选择按钮，如果一个按钮不够，需要调用此方法来添加。参数跟[options.pick](#WebUploader:Uploader:options)一致。\n             * @example\n             * uploader.addButton({\n             *     id: '#btnContainer',\n             *     innerHTML: '选择文件'\n             * });\n             */\n            addBtn: function( pick ) {\n                var me = this,\n                    opts = me.options,\n                    accept = opts.accept,\n                    promises = [];\n    \n                if ( !pick ) {\n                    return;\n                }\n    \n                $.isPlainObject( pick ) || (pick = {\n                    id: pick\n                });\n    \n                $( pick.id ).each(function() {\n                    var options, picker, deferred;\n    \n                    deferred = Base.Deferred();\n    \n                    options = $.extend({}, pick, {\n                        accept: $.isPlainObject( accept ) ? [ accept ] : accept,\n                        swf: opts.swf,\n                        runtimeOrder: opts.runtimeOrder,\n                        id: this\n                    });\n    \n                    picker = new FilePicker( options );\n    \n                    picker.once( 'ready', deferred.resolve );\n                    picker.on( 'select', function( files ) {\n                        me.owner.request( 'add-file', [ files ]);\n                    });\n                    picker.init();\n    \n                    me.pickers.push( picker );\n    \n                    promises.push( deferred.promise() );\n                });\n    \n                return Base.when.apply( Base, promises );\n            },\n    \n            disable: function() {\n                $.each( this.pickers, function() {\n                    this.disable();\n                });\n            },\n    \n            enable: function() {\n                $.each( this.pickers, function() {\n                    this.enable();\n                });\n            },\n    \n            destroy: function() {\n                $.each( this.pickers, function() {\n                    this.destroy();\n                });\n                this.pickers = null;\n            }\n        });\n    });\n    /**\n     * @fileOverview Image\n     */\n    define('lib/image',[\n        'base',\n        'runtime/client',\n        'lib/blob'\n    ], function( Base, RuntimeClient, Blob ) {\n        var $ = Base.$;\n    \n        // 构造器。\n        function Image( opts ) {\n            this.options = $.extend({}, Image.options, opts );\n            RuntimeClient.call( this, 'Image' );\n    \n            this.on( 'load', function() {\n                this._info = this.exec('info');\n                this._meta = this.exec('meta');\n            });\n        }\n    \n        // 默认选项。\n        Image.options = {\n    \n            // 默认的图片处理质量\n            quality: 90,\n    \n            // 是否裁剪\n            crop: false,\n    \n            // 是否保留头部信息\n            preserveHeaders: false,\n    \n            // 是否允许放大。\n            allowMagnify: false\n        };\n    \n        // 继承RuntimeClient.\n        Base.inherits( RuntimeClient, {\n            constructor: Image,\n    \n            info: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._info = val;\n                    return this;\n                }\n    \n                // getter\n                return this._info;\n            },\n    \n            meta: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._meta = val;\n                    return this;\n                }\n    \n                // getter\n                return this._meta;\n            },\n    \n            loadFromBlob: function( blob ) {\n                var me = this,\n                    ruid = blob.getRuid();\n    \n                this.connectRuntime( ruid, function() {\n                    me.exec( 'init', me.options );\n                    me.exec( 'loadFromBlob', blob );\n                });\n            },\n    \n            resize: function() {\n                var args = Base.slice( arguments );\n                return this.exec.apply( this, [ 'resize' ].concat( args ) );\n            },\n    \n            crop: function() {\n                var args = Base.slice( arguments );\n                return this.exec.apply( this, [ 'crop' ].concat( args ) );\n            },\n    \n            getAsDataUrl: function( type ) {\n                return this.exec( 'getAsDataUrl', type );\n            },\n    \n            getAsBlob: function( type ) {\n                var blob = this.exec( 'getAsBlob', type );\n    \n                return new Blob( this.getRuid(), blob );\n            }\n        });\n    \n        return Image;\n    });\n    /**\n     * @fileOverview 图片操作, 负责预览图片和上传前压缩图片\n     */\n    define('widgets/image',[\n        'base',\n        'uploader',\n        'lib/image',\n        'widgets/widget'\n    ], function( Base, Uploader, Image ) {\n    \n        var $ = Base.$,\n            throttle;\n    \n        // 根据要处理的文件大小来节流，一次不能处理太多，会卡。\n        throttle = (function( max ) {\n            var occupied = 0,\n                waiting = [],\n                tick = function() {\n                    var item;\n    \n                    while ( waiting.length && occupied < max ) {\n                        item = waiting.shift();\n                        occupied += item[ 0 ];\n                        item[ 1 ]();\n                    }\n                };\n    \n            return function( emiter, size, cb ) {\n                waiting.push([ size, cb ]);\n                emiter.once( 'destroy', function() {\n                    occupied -= size;\n                    setTimeout( tick, 1 );\n                });\n                setTimeout( tick, 1 );\n            };\n        })( 5 * 1024 * 1024 );\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Object} [thumb]\n             * @namespace options\n             * @for Uploader\n             * @description 配置生成缩略图的选项。\n             *\n             * 默认为：\n             *\n             * ```javascript\n             * {\n             *     width: 110,\n             *     height: 110,\n             *\n             *     // 图片质量，只有type为`image/jpeg`的时候才有效。\n             *     quality: 70,\n             *\n             *     // 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.\n             *     allowMagnify: true,\n             *\n             *     // 是否允许裁剪。\n             *     crop: true,\n             *\n             *     // 为空的话则保留原有图片格式。\n             *     // 否则强制转换成指定的类型。\n             *     type: 'image/jpeg'\n             * }\n             * ```\n             */\n            thumb: {\n                width: 110,\n                height: 110,\n                quality: 70,\n                allowMagnify: true,\n                crop: true,\n                preserveHeaders: false,\n    \n                // 为空的话则保留原有图片格式。\n                // 否则强制转换成指定的类型。\n                // IE 8下面 base64 大小不能超过 32K 否则预览失败，而非 jpeg 编码的图片很可\n                // 能会超过 32k, 所以这里设置成预览的时候都是 image/jpeg\n                type: 'image/jpeg'\n            },\n    \n            /**\n             * @property {Object} [compress]\n             * @namespace options\n             * @for Uploader\n             * @description 配置压缩的图片的选项。如果此选项为`false`, 则图片在上传前不进行压缩。\n             *\n             * 默认为：\n             *\n             * ```javascript\n             * {\n             *     width: 1600,\n             *     height: 1600,\n             *\n             *     // 图片质量，只有type为`image/jpeg`的时候才有效。\n             *     quality: 90,\n             *\n             *     // 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.\n             *     allowMagnify: false,\n             *\n             *     // 是否允许裁剪。\n             *     crop: false,\n             *\n             *     // 是否保留头部meta信息。\n             *     preserveHeaders: true,\n             *\n             *     // 如果发现压缩后文件大小比原来还大，则使用原来图片\n             *     // 此属性可能会影响图片自动纠正功能\n             *     noCompressIfLarger: false,\n             *\n             *     // 单位字节，如果图片大小小于此值，不会采用压缩。\n             *     compressSize: 0\n             * }\n             * ```\n             */\n            compress: {\n                width: 1600,\n                height: 1600,\n                quality: 90,\n                allowMagnify: false,\n                crop: false,\n                preserveHeaders: true\n            }\n        });\n    \n        return Uploader.register({\n    \n            name: 'image',\n    \n    \n            /**\n             * 生成缩略图，此过程为异步，所以需要传入`callback`。\n             * 通常情况在图片加入队里后调用此方法来生成预览图以增强交互效果。\n             *\n             * 当 width 或者 height 的值介于 0 - 1 时，被当成百分比使用。\n             *\n             * `callback`中可以接收到两个参数。\n             * * 第一个为error，如果生成缩略图有错误，此error将为真。\n             * * 第二个为ret, 缩略图的Data URL值。\n             *\n             * **注意**\n             * Date URL在IE6/7中不支持，所以不用调用此方法了，直接显示一张暂不支持预览图片好了。\n             * 也可以借助服务端，将 base64 数据传给服务端，生成一个临时文件供预览。\n             *\n             * @method makeThumb\n             * @grammar makeThumb( file, callback ) => undefined\n             * @grammar makeThumb( file, callback, width, height ) => undefined\n             * @for Uploader\n             * @example\n             *\n             * uploader.on( 'fileQueued', function( file ) {\n             *     var $li = ...;\n             *\n             *     uploader.makeThumb( file, function( error, ret ) {\n             *         if ( error ) {\n             *             $li.text('预览错误');\n             *         } else {\n             *             $li.append('<img alt=\"\" src=\"' + ret + '\" />');\n             *         }\n             *     });\n             *\n             * });\n             */\n            makeThumb: function( file, cb, width, height ) {\n                var opts, image;\n    \n                file = this.request( 'get-file', file );\n    \n                // 只预览图片格式。\n                if ( !file.type.match( /^image/ ) ) {\n                    cb( true );\n                    return;\n                }\n    \n                opts = $.extend({}, this.options.thumb );\n    \n                // 如果传入的是object.\n                if ( $.isPlainObject( width ) ) {\n                    opts = $.extend( opts, width );\n                    width = null;\n                }\n    \n                width = width || opts.width;\n                height = height || opts.height;\n    \n                image = new Image( opts );\n    \n                image.once( 'load', function() {\n                    file._info = file._info || image.info();\n                    file._meta = file._meta || image.meta();\n    \n                    // 如果 width 的值介于 0 - 1\n                    // 说明设置的是百分比。\n                    if ( width <= 1 && width > 0 ) {\n                        width = file._info.width * width;\n                    }\n    \n                    // 同样的规则应用于 height\n                    if ( height <= 1 && height > 0 ) {\n                        height = file._info.height * height;\n                    }\n    \n                    image.resize( width, height );\n                });\n    \n                // 当 resize 完后\n                image.once( 'complete', function() {\n                    cb( false, image.getAsDataUrl( opts.type ) );\n                    image.destroy();\n                });\n    \n                image.once( 'error', function( reason ) {\n                    cb( reason || true );\n                    image.destroy();\n                });\n    \n                throttle( image, file.source.size, function() {\n                    file._info && image.info( file._info );\n                    file._meta && image.meta( file._meta );\n                    image.loadFromBlob( file.source );\n                });\n            },\n    \n            beforeSendFile: function( file ) {\n                var opts = this.options.compress || this.options.resize,\n                    compressSize = opts && opts.compressSize || 0,\n                    noCompressIfLarger = opts && opts.noCompressIfLarger || false,\n                    image, deferred;\n    \n                file = this.request( 'get-file', file );\n    \n                // 只压缩 jpeg 图片格式。\n                // gif 可能会丢失针\n                // bmp png 基本上尺寸都不大，且压缩比比较小。\n                if ( !opts || !~'image/jpeg,image/jpg'.indexOf( file.type ) ||\n                        file.size < compressSize ||\n                        file._compressed ) {\n                    return;\n                }\n    \n                opts = $.extend({}, opts );\n                deferred = Base.Deferred();\n    \n                image = new Image( opts );\n    \n                deferred.always(function() {\n                    image.destroy();\n                    image = null;\n                });\n                image.once( 'error', deferred.reject );\n                image.once( 'load', function() {\n                    var width = opts.width,\n                        height = opts.height;\n    \n                    file._info = file._info || image.info();\n                    file._meta = file._meta || image.meta();\n    \n                    // 如果 width 的值介于 0 - 1\n                    // 说明设置的是百分比。\n                    if ( width <= 1 && width > 0 ) {\n                        width = file._info.width * width;\n                    }\n    \n                    // 同样的规则应用于 height\n                    if ( height <= 1 && height > 0 ) {\n                        height = file._info.height * height;\n                    }\n    \n                    image.resize( width, height );\n                });\n    \n                image.once( 'complete', function() {\n                    var blob, size;\n    \n                    // 移动端 UC / qq 浏览器的无图模式下\n                    // ctx.getImageData 处理大图的时候会报 Exception\n                    // INDEX_SIZE_ERR: DOM Exception 1\n                    try {\n                        blob = image.getAsBlob( opts.type );\n    \n                        size = file.size;\n    \n                        // 如果压缩后，比原来还大则不用压缩后的。\n                        if ( !noCompressIfLarger || blob.size < size ) {\n                            // file.source.destroy && file.source.destroy();\n                            file.source = blob;\n                            file.size = blob.size;\n    \n                            file.trigger( 'resize', blob.size, size );\n                        }\n    \n                        // 标记，避免重复压缩。\n                        file._compressed = true;\n                        deferred.resolve();\n                    } catch ( e ) {\n                        // 出错了直接继续，让其上传原始图片\n                        deferred.resolve();\n                    }\n                });\n    \n                file._info && image.info( file._info );\n                file._meta && image.meta( file._meta );\n    \n                image.loadFromBlob( file.source );\n                return deferred.promise();\n            }\n        });\n    });\n    /**\n     * @fileOverview 文件属性封装\n     */\n    define('file',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            idPrefix = 'WU_FILE_',\n            idSuffix = 0,\n            rExt = /\\.([^.]+)$/,\n            statusMap = {};\n    \n        function gid() {\n            return idPrefix + idSuffix++;\n        }\n    \n        /**\n         * 文件类\n         * @class File\n         * @constructor 构造函数\n         * @grammar new File( source ) => File\n         * @param {Lib.File} source [lib.File](#Lib.File)实例, 此source对象是带有Runtime信息的。\n         */\n        function WUFile( source ) {\n    \n            /**\n             * 文件名，包括扩展名（后缀）\n             * @property name\n             * @type {string}\n             */\n            this.name = source.name || 'Untitled';\n    \n            /**\n             * 文件体积（字节）\n             * @property size\n             * @type {uint}\n             * @default 0\n             */\n            this.size = source.size || 0;\n    \n            /**\n             * 文件MIMETYPE类型，与文件类型的对应关系请参考[http://t.cn/z8ZnFny](http://t.cn/z8ZnFny)\n             * @property type\n             * @type {string}\n             * @default 'application/octet-stream'\n             */\n            this.type = source.type || 'application/octet-stream';\n    \n            /**\n             * 文件最后修改日期\n             * @property lastModifiedDate\n             * @type {int}\n             * @default 当前时间戳\n             */\n            this.lastModifiedDate = source.lastModifiedDate || (new Date() * 1);\n    \n            /**\n             * 文件ID，每个对象具有唯一ID，与文件名无关\n             * @property id\n             * @type {string}\n             */\n            this.id = gid();\n    \n            /**\n             * 文件扩展名，通过文件名获取，例如test.png的扩展名为png\n             * @property ext\n             * @type {string}\n             */\n            this.ext = rExt.exec( this.name ) ? RegExp.$1 : '';\n    \n    \n            /**\n             * 状态文字说明。在不同的status语境下有不同的用途。\n             * @property statusText\n             * @type {string}\n             */\n            this.statusText = '';\n    \n            // 存储文件状态，防止通过属性直接修改\n            statusMap[ this.id ] = WUFile.Status.INITED;\n    \n            this.source = source;\n            this.loaded = 0;\n    \n            this.on( 'error', function( msg ) {\n                this.setStatus( WUFile.Status.ERROR, msg );\n            });\n        }\n    \n        $.extend( WUFile.prototype, {\n    \n            /**\n             * 设置状态，状态变化时会触发`change`事件。\n             * @method setStatus\n             * @grammar setStatus( status[, statusText] );\n             * @param {File.Status|String} status [文件状态值](#WebUploader:File:File.Status)\n             * @param {String} [statusText=''] 状态说明，常在error时使用，用http, abort,server等来标记是由于什么原因导致文件错误。\n             */\n            setStatus: function( status, text ) {\n    \n                var prevStatus = statusMap[ this.id ];\n    \n                typeof text !== 'undefined' && (this.statusText = text);\n    \n                if ( status !== prevStatus ) {\n                    statusMap[ this.id ] = status;\n                    /**\n                     * 文件状态变化\n                     * @event statuschange\n                     */\n                    this.trigger( 'statuschange', status, prevStatus );\n                }\n    \n            },\n    \n            /**\n             * 获取文件状态\n             * @return {File.Status}\n             * @example\n                     文件状态具体包括以下几种类型：\n                     {\n                         // 初始化\n                        INITED:     0,\n                        // 已入队列\n                        QUEUED:     1,\n                        // 正在上传\n                        PROGRESS:     2,\n                        // 上传出错\n                        ERROR:         3,\n                        // 上传成功\n                        COMPLETE:     4,\n                        // 上传取消\n                        CANCELLED:     5\n                    }\n             */\n            getStatus: function() {\n                return statusMap[ this.id ];\n            },\n    \n            /**\n             * 获取文件原始信息。\n             * @return {*}\n             */\n            getSource: function() {\n                return this.source;\n            },\n    \n            destroy: function() {\n                this.off();\n                delete statusMap[ this.id ];\n            }\n        });\n    \n        Mediator.installTo( WUFile.prototype );\n    \n        /**\n         * 文件状态值，具体包括以下几种类型：\n         * * `inited` 初始状态\n         * * `queued` 已经进入队列, 等待上传\n         * * `progress` 上传中\n         * * `complete` 上传完成。\n         * * `error` 上传出错，可重试\n         * * `interrupt` 上传中断，可续传。\n         * * `invalid` 文件不合格，不能重试上传。会自动从队列中移除。\n         * * `cancelled` 文件被移除。\n         * @property {Object} Status\n         * @namespace File\n         * @class File\n         * @static\n         */\n        WUFile.Status = {\n            INITED:     'inited',    // 初始状态\n            QUEUED:     'queued',    // 已经进入队列, 等待上传\n            PROGRESS:   'progress',    // 上传中\n            ERROR:      'error',    // 上传出错，可重试\n            COMPLETE:   'complete',    // 上传完成。\n            CANCELLED:  'cancelled',    // 上传取消。\n            INTERRUPT:  'interrupt',    // 上传中断，可续传。\n            INVALID:    'invalid'    // 文件不合格，不能重试上传。\n        };\n    \n        return WUFile;\n    });\n    \n    /**\n     * @fileOverview 文件队列\n     */\n    define('queue',[\n        'base',\n        'mediator',\n        'file'\n    ], function( Base, Mediator, WUFile ) {\n    \n        var $ = Base.$,\n            STATUS = WUFile.Status;\n    \n        /**\n         * 文件队列, 用来存储各个状态中的文件。\n         * @class Queue\n         * @extends Mediator\n         */\n        function Queue() {\n    \n            /**\n             * 统计文件数。\n             * * `numOfQueue` 队列中的文件数。\n             * * `numOfSuccess` 上传成功的文件数\n             * * `numOfCancel` 被取消的文件数\n             * * `numOfProgress` 正在上传中的文件数\n             * * `numOfUploadFailed` 上传错误的文件数。\n             * * `numOfInvalid` 无效的文件数。\n             * * `numofDeleted` 被移除的文件数。\n             * @property {Object} stats\n             */\n            this.stats = {\n                numOfQueue: 0,\n                numOfSuccess: 0,\n                numOfCancel: 0,\n                numOfProgress: 0,\n                numOfUploadFailed: 0,\n                numOfInvalid: 0,\n                numofDeleted: 0,\n                numofInterrupt: 0\n            };\n    \n            // 上传队列，仅包括等待上传的文件\n            this._queue = [];\n    \n            // 存储所有文件\n            this._map = {};\n        }\n    \n        $.extend( Queue.prototype, {\n    \n            /**\n             * 将新文件加入对队列尾部\n             *\n             * @method append\n             * @param  {File} file   文件对象\n             */\n            append: function( file ) {\n                this._queue.push( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 将新文件加入对队列头部\n             *\n             * @method prepend\n             * @param  {File} file   文件对象\n             */\n            prepend: function( file ) {\n                this._queue.unshift( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 获取文件对象\n             *\n             * @method getFile\n             * @param  {String} fileId   文件ID\n             * @return {File}\n             */\n            getFile: function( fileId ) {\n                if ( typeof fileId !== 'string' ) {\n                    return fileId;\n                }\n                return this._map[ fileId ];\n            },\n    \n            /**\n             * 从队列中取出一个指定状态的文件。\n             * @grammar fetch( status ) => File\n             * @method fetch\n             * @param {String} status [文件状态值](#WebUploader:File:File.Status)\n             * @return {File} [File](#WebUploader:File)\n             */\n            fetch: function( status ) {\n                var len = this._queue.length,\n                    i, file;\n    \n                status = status || STATUS.QUEUED;\n    \n                for ( i = 0; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( status === file.getStatus() ) {\n                        return file;\n                    }\n                }\n    \n                return null;\n            },\n    \n            /**\n             * 对队列进行排序，能够控制文件上传顺序。\n             * @grammar sort( fn ) => undefined\n             * @method sort\n             * @param {Function} fn 排序方法\n             */\n            sort: function( fn ) {\n                if ( typeof fn === 'function' ) {\n                    this._queue.sort( fn );\n                }\n            },\n    \n            /**\n             * 获取指定类型的文件列表, 列表中每一个成员为[File](#WebUploader:File)对象。\n             * @grammar getFiles( [status1[, status2 ...]] ) => Array\n             * @method getFiles\n             * @param {String} [status] [文件状态值](#WebUploader:File:File.Status)\n             */\n            getFiles: function() {\n                var sts = [].slice.call( arguments, 0 ),\n                    ret = [],\n                    i = 0,\n                    len = this._queue.length,\n                    file;\n    \n                for ( ; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( sts.length && !~$.inArray( file.getStatus(), sts ) ) {\n                        continue;\n                    }\n    \n                    ret.push( file );\n                }\n    \n                return ret;\n            },\n    \n            /**\n             * 在队列中删除文件。\n             * @grammar removeFile( file ) => Array\n             * @method removeFile\n             * @param {File} 文件对象。\n             */\n            removeFile: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( existing ) {\n                    delete this._map[ file.id ];\n                    file.destroy();\n                    this.stats.numofDeleted++;\n                }\n            },\n    \n            _fileAdded: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( !existing ) {\n                    this._map[ file.id ] = file;\n    \n                    file.on( 'statuschange', function( cur, pre ) {\n                        me._onFileStatusChange( cur, pre );\n                    });\n                }\n            },\n    \n            _onFileStatusChange: function( curStatus, preStatus ) {\n                var stats = this.stats;\n    \n                switch ( preStatus ) {\n                    case STATUS.PROGRESS:\n                        stats.numOfProgress--;\n                        break;\n    \n                    case STATUS.QUEUED:\n                        stats.numOfQueue --;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed--;\n                        break;\n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid--;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt--;\n                        break;\n                }\n    \n                switch ( curStatus ) {\n                    case STATUS.QUEUED:\n                        stats.numOfQueue++;\n                        break;\n    \n                    case STATUS.PROGRESS:\n                        stats.numOfProgress++;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed++;\n                        break;\n    \n                    case STATUS.COMPLETE:\n                        stats.numOfSuccess++;\n                        break;\n    \n                    case STATUS.CANCELLED:\n                        stats.numOfCancel++;\n                        break;\n    \n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid++;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt++;\n                        break;\n                }\n            }\n    \n        });\n    \n        Mediator.installTo( Queue.prototype );\n    \n        return Queue;\n    });\n    /**\n     * @fileOverview 队列\n     */\n    define('widgets/queue',[\n        'base',\n        'uploader',\n        'queue',\n        'file',\n        'lib/file',\n        'runtime/client',\n        'widgets/widget'\n    ], function( Base, Uploader, Queue, WUFile, File, RuntimeClient ) {\n    \n        var $ = Base.$,\n            rExt = /\\.\\w+$/,\n            Status = WUFile.Status;\n    \n        return Uploader.register({\n            name: 'queue',\n    \n            init: function( opts ) {\n                var me = this,\n                    deferred, len, i, item, arr, accept, runtime;\n    \n                if ( $.isPlainObject( opts.accept ) ) {\n                    opts.accept = [ opts.accept ];\n                }\n    \n                // accept中的中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].extensions;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = '\\\\.' + arr.join(',')\n                                .replace( /,/g, '$|\\\\.' )\n                                .replace( /\\*/g, '.*' ) + '$';\n                    }\n    \n                    me.accept = new RegExp( accept, 'i' );\n                }\n    \n                me.queue = new Queue();\n                me.stats = me.queue.stats;\n    \n                // 如果当前不是html5运行时，那就算了。\n                // 不执行后续操作\n                if ( this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                // 创建一个 html5 运行时的 placeholder\n                // 以至于外部添加原生 File 对象的时候能正确包裹一下供 webuploader 使用。\n                deferred = Base.Deferred();\n                this.placeholder = runtime = new RuntimeClient('Placeholder');\n                runtime.connectRuntime({\n                    runtimeOrder: 'html5'\n                }, function() {\n                    me._ruid = runtime.getRuid();\n                    deferred.resolve();\n                });\n                return deferred.promise();\n            },\n    \n    \n            // 为了支持外部直接添加一个原生File对象。\n            _wrapFile: function( file ) {\n                if ( !(file instanceof WUFile) ) {\n    \n                    if ( !(file instanceof File) ) {\n                        if ( !this._ruid ) {\n                            throw new Error('Can\\'t add external files.');\n                        }\n                        file = new File( this._ruid, file );\n                    }\n    \n                    file = new WUFile( file );\n                }\n    \n                return file;\n            },\n    \n            // 判断文件是否可以被加入队列\n            acceptFile: function( file ) {\n                var invalid = !file || !file.size || this.accept &&\n    \n                        // 如果名字中有后缀，才做后缀白名单处理。\n                        rExt.exec( file.name ) && !this.accept.test( file.name );\n    \n                return !invalid;\n            },\n    \n    \n            /**\n             * @event beforeFileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列之前触发，此事件的handler返回值为`false`，则此文件不会被添加进入队列。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event fileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列以后触发。\n             * @for  Uploader\n             */\n    \n            _addFile: function( file ) {\n                var me = this;\n    \n                file = me._wrapFile( file );\n    \n                // 不过类型判断允许不允许，先派送 `beforeFileQueued`\n                if ( !me.owner.trigger( 'beforeFileQueued', file ) ) {\n                    return;\n                }\n    \n                // 类型不匹配，则派送错误事件，并返回。\n                if ( !me.acceptFile( file ) ) {\n                    me.owner.trigger( 'error', 'Q_TYPE_DENIED', file );\n                    return;\n                }\n    \n                me.queue.append( file );\n                me.owner.trigger( 'fileQueued', file );\n                return file;\n            },\n    \n            getFile: function( fileId ) {\n                return this.queue.getFile( fileId );\n            },\n    \n            /**\n             * @event filesQueued\n             * @param {File} files 数组，内容为原始File(lib/File）对象。\n             * @description 当一批文件添加进队列以后触发。\n             * @for  Uploader\n             */\n            \n            /**\n             * @property {Boolean} [auto=false]\n             * @namespace options\n             * @for Uploader\n             * @description 设置为 true 后，不需要手动调用上传，有文件选择即开始上传。\n             * \n             */\n    \n            /**\n             * @method addFiles\n             * @grammar addFiles( file ) => undefined\n             * @grammar addFiles( [file1, file2 ...] ) => undefined\n             * @param {Array of File or File} [files] Files 对象 数组\n             * @description 添加文件到队列\n             * @for  Uploader\n             */\n            addFile: function( files ) {\n                var me = this;\n    \n                if ( !files.length ) {\n                    files = [ files ];\n                }\n    \n                files = $.map( files, function( file ) {\n                    return me._addFile( file );\n                });\n    \n                me.owner.trigger( 'filesQueued', files );\n    \n                if ( me.options.auto ) {\n                    setTimeout(function() {\n                        me.request('start-upload');\n                    }, 20 );\n                }\n            },\n    \n            getStats: function() {\n                return this.stats;\n            },\n    \n            /**\n             * @event fileDequeued\n             * @param {File} file File对象\n             * @description 当文件被移除队列后触发。\n             * @for  Uploader\n             */\n    \n             /**\n             * @method removeFile\n             * @grammar removeFile( file ) => undefined\n             * @grammar removeFile( id ) => undefined\n             * @grammar removeFile( file, true ) => undefined\n             * @grammar removeFile( id, true ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 移除某一文件, 默认只会标记文件状态为已取消，如果第二个参数为 `true` 则会从 queue 中移除。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.removeFile( file );\n             * })\n             */\n            removeFile: function( file, remove ) {\n                var me = this;\n    \n                file = file.id ? file : me.queue.getFile( file );\n    \n                this.request( 'cancel-file', file );\n    \n                if ( remove ) {\n                    this.queue.removeFile( file );\n                }\n            },\n    \n            /**\n             * @method getFiles\n             * @grammar getFiles() => Array\n             * @grammar getFiles( status1, status2, status... ) => Array\n             * @description 返回指定状态的文件集合，不传参数将返回所有状态的文件。\n             * @for  Uploader\n             * @example\n             * console.log( uploader.getFiles() );    // => all files\n             * console.log( uploader.getFiles('error') )    // => all error files.\n             */\n            getFiles: function() {\n                return this.queue.getFiles.apply( this.queue, arguments );\n            },\n    \n            fetchFile: function() {\n                return this.queue.fetch.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @method retry\n             * @grammar retry() => undefined\n             * @grammar retry( file ) => undefined\n             * @description 重试上传，重试指定文件，或者从出错的文件开始重新上传。\n             * @for  Uploader\n             * @example\n             * function retry() {\n             *     uploader.retry();\n             * }\n             */\n            retry: function( file, noForceStart ) {\n                var me = this,\n                    files, i, len;\n    \n                if ( file ) {\n                    file = file.id ? file : me.queue.getFile( file );\n                    file.setStatus( Status.QUEUED );\n                    noForceStart || me.request('start-upload');\n                    return;\n                }\n    \n                files = me.queue.getFiles( Status.ERROR );\n                i = 0;\n                len = files.length;\n    \n                for ( ; i < len; i++ ) {\n                    file = files[ i ];\n                    file.setStatus( Status.QUEUED );\n                }\n    \n                me.request('start-upload');\n            },\n    \n            /**\n             * @method sort\n             * @grammar sort( fn ) => undefined\n             * @description 排序队列中的文件，在上传之前调整可以控制上传顺序。\n             * @for  Uploader\n             */\n            sortFiles: function() {\n                return this.queue.sort.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @event reset\n             * @description 当 uploader 被重置的时候触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @method reset\n             * @grammar reset() => undefined\n             * @description 重置uploader。目前只重置了队列。\n             * @for  Uploader\n             * @example\n             * uploader.reset();\n             */\n            reset: function() {\n                this.owner.trigger('reset');\n                this.queue = new Queue();\n                this.stats = this.queue.stats;\n            },\n    \n            destroy: function() {\n                this.reset();\n                this.placeholder && this.placeholder.destroy();\n            }\n        });\n    \n    });\n    /**\n     * @fileOverview 添加获取Runtime相关信息的方法。\n     */\n    define('widgets/runtime',[\n        'uploader',\n        'runtime/runtime',\n        'widgets/widget'\n    ], function( Uploader, Runtime ) {\n    \n        Uploader.support = function() {\n            return Runtime.hasRuntime.apply( Runtime, arguments );\n        };\n    \n        /**\n         * @property {Object} [runtimeOrder=html5,flash]\n         * @namespace options\n         * @for Uploader\n         * @description 指定运行时启动顺序。默认会想尝试 html5 是否支持，如果支持则使用 html5, 否则则使用 flash.\n         *\n         * 可以将此值设置成 `flash`，来强制使用 flash 运行时。\n         */\n    \n        return Uploader.register({\n            name: 'runtime',\n    \n            init: function() {\n                if ( !this.predictRuntimeType() ) {\n                    throw Error('Runtime Error');\n                }\n            },\n    \n            /**\n             * 预测Uploader将采用哪个`Runtime`\n             * @grammar predictRuntimeType() => String\n             * @method predictRuntimeType\n             * @for  Uploader\n             */\n            predictRuntimeType: function() {\n                var orders = this.options.runtimeOrder || Runtime.orders,\n                    type = this.type,\n                    i, len;\n    \n                if ( !type ) {\n                    orders = orders.split( /\\s*,\\s*/g );\n    \n                    for ( i = 0, len = orders.length; i < len; i++ ) {\n                        if ( Runtime.hasRuntime( orders[ i ] ) ) {\n                            this.type = type = orders[ i ];\n                            break;\n                        }\n                    }\n                }\n    \n                return type;\n            }\n        });\n    });\n    /**\n     * @fileOverview Transport\n     */\n    define('lib/transport',[\n        'base',\n        'runtime/client',\n        'mediator'\n    ], function( Base, RuntimeClient, Mediator ) {\n    \n        var $ = Base.$;\n    \n        function Transport( opts ) {\n            var me = this;\n    \n            opts = me.options = $.extend( true, {}, Transport.options, opts || {} );\n            RuntimeClient.call( this, 'Transport' );\n    \n            this._blob = null;\n            this._formData = opts.formData || {};\n            this._headers = opts.headers || {};\n    \n            this.on( 'progress', this._timeout );\n            this.on( 'load error', function() {\n                me.trigger( 'progress', 1 );\n                clearTimeout( me._timer );\n            });\n        }\n    \n        Transport.options = {\n            server: '',\n            method: 'POST',\n    \n            // 跨域时，是否允许携带cookie, 只有html5 runtime才有效\n            withCredentials: false,\n            fileVal: 'file',\n            timeout: 2 * 60 * 1000,    // 2分钟\n            formData: {},\n            headers: {},\n            sendAsBinary: false\n        };\n    \n        $.extend( Transport.prototype, {\n    \n            // 添加Blob, 只能添加一次，最后一次有效。\n            appendBlob: function( key, blob, filename ) {\n                var me = this,\n                    opts = me.options;\n    \n                if ( me.getRuid() ) {\n                    me.disconnectRuntime();\n                }\n    \n                // 连接到blob归属的同一个runtime.\n                me.connectRuntime( blob.ruid, function() {\n                    me.exec('init');\n                });\n    \n                me._blob = blob;\n                opts.fileVal = key || opts.fileVal;\n                opts.filename = filename || opts.filename;\n            },\n    \n            // 添加其他字段\n            append: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._formData, key );\n                } else {\n                    this._formData[ key ] = value;\n                }\n            },\n    \n            setRequestHeader: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._headers, key );\n                } else {\n                    this._headers[ key ] = value;\n                }\n            },\n    \n            send: function( method ) {\n                this.exec( 'send', method );\n                this._timeout();\n            },\n    \n            abort: function() {\n                clearTimeout( this._timer );\n                return this.exec('abort');\n            },\n    \n            destroy: function() {\n                this.trigger('destroy');\n                this.off();\n                this.exec('destroy');\n                this.disconnectRuntime();\n            },\n    \n            getResponse: function() {\n                return this.exec('getResponse');\n            },\n    \n            getResponseAsJson: function() {\n                return this.exec('getResponseAsJson');\n            },\n    \n            getStatus: function() {\n                return this.exec('getStatus');\n            },\n    \n            _timeout: function() {\n                var me = this,\n                    duration = me.options.timeout;\n    \n                if ( !duration ) {\n                    return;\n                }\n    \n                clearTimeout( me._timer );\n                me._timer = setTimeout(function() {\n                    me.abort();\n                    me.trigger( 'error', 'timeout' );\n                }, duration );\n            }\n    \n        });\n    \n        // 让Transport具备事件功能。\n        Mediator.installTo( Transport.prototype );\n    \n        return Transport;\n    });\n    /**\n     * @fileOverview 负责文件上传相关。\n     */\n    define('widgets/upload',[\n        'base',\n        'uploader',\n        'file',\n        'lib/transport',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile, Transport ) {\n    \n        var $ = Base.$,\n            isPromise = Base.isPromise,\n            Status = WUFile.Status;\n    \n        // 添加默认配置项\n        $.extend( Uploader.options, {\n    \n    \n            /**\n             * @property {Boolean} [prepareNextFile=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否允许在文件传输时提前把下一个文件准备好。\n             * 对于一个文件的准备工作比较耗时，比如图片压缩，md5序列化。\n             * 如果能提前在当前文件传输期处理，可以节省总体耗时。\n             */\n            prepareNextFile: false,\n    \n            /**\n             * @property {Boolean} [chunked=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否要分片处理大文件上传。\n             */\n            chunked: false,\n    \n            /**\n             * @property {Boolean} [chunkSize=5242880]\n             * @namespace options\n             * @for Uploader\n             * @description 如果要分片，分多大一片？ 默认大小为5M.\n             */\n            chunkSize: 5 * 1024 * 1024,\n    \n            /**\n             * @property {Boolean} [chunkRetry=2]\n             * @namespace options\n             * @for Uploader\n             * @description 如果某个分片由于网络问题出错，允许自动重传多少次？\n             */\n            chunkRetry: 2,\n    \n            /**\n             * @property {Boolean} [threads=3]\n             * @namespace options\n             * @for Uploader\n             * @description 上传并发数。允许同时最大上传进程数。\n             */\n            threads: 3,\n    \n    \n            /**\n             * @property {Object} [formData={}]\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传请求的参数表，每次发送都会发送此对象中的参数。\n             */\n            formData: {}\n    \n            /**\n             * @property {Object} [fileVal='file']\n             * @namespace options\n             * @for Uploader\n             * @description 设置文件上传域的name。\n             */\n    \n            /**\n             * @property {Object} [method='POST']\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传方式，`POST`或者`GET`。\n             */\n    \n            /**\n             * @property {Object} [sendAsBinary=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否已二进制的流的方式发送文件，这样整个上传内容`php://input`都为文件内容，\n             * 其他参数在$_GET数组中。\n             */\n        });\n    \n        // 负责将文件切片。\n        function CuteFile( file, chunkSize ) {\n            var pending = [],\n                blob = file.source,\n                total = blob.size,\n                chunks = chunkSize ? Math.ceil( total / chunkSize ) : 1,\n                start = 0,\n                index = 0,\n                len, api;\n    \n            api = {\n                file: file,\n    \n                has: function() {\n                    return !!pending.length;\n                },\n    \n                shift: function() {\n                    return pending.shift();\n                },\n    \n                unshift: function( block ) {\n                    pending.unshift( block );\n                }\n            };\n    \n            while ( index < chunks ) {\n                len = Math.min( chunkSize, total - start );\n    \n                pending.push({\n                    file: file,\n                    start: start,\n                    end: chunkSize ? (start + len) : total,\n                    total: total,\n                    chunks: chunks,\n                    chunk: index++,\n                    cuted: api\n                });\n                start += len;\n            }\n    \n            file.blocks = pending.concat();\n            file.remaning = pending.length;\n    \n            return api;\n        }\n    \n        Uploader.register({\n            name: 'upload',\n    \n            init: function() {\n                var owner = this.owner,\n                    me = this;\n    \n                this.runing = false;\n                this.progress = false;\n    \n                owner\n                    .on( 'startUpload', function() {\n                        me.progress = true;\n                    })\n                    .on( 'uploadFinished', function() {\n                        me.progress = false;\n                    });\n    \n                // 记录当前正在传的数据，跟threads相关\n                this.pool = [];\n    \n                // 缓存分好片的文件。\n                this.stack = [];\n    \n                // 缓存即将上传的文件。\n                this.pending = [];\n    \n                // 跟踪还有多少分片在上传中但是没有完成上传。\n                this.remaning = 0;\n                this.__tick = Base.bindFn( this._tick, this );\n    \n                owner.on( 'uploadComplete', function( file ) {\n    \n                    // 把其他块取消了。\n                    file.blocks && $.each( file.blocks, function( _, v ) {\n                        v.transport && (v.transport.abort(), v.transport.destroy());\n                        delete v.transport;\n                    });\n    \n                    delete file.blocks;\n                    delete file.remaning;\n                });\n            },\n    \n            reset: function() {\n                this.request( 'stop-upload', true );\n                this.runing = false;\n                this.pool = [];\n                this.stack = [];\n                this.pending = [];\n                this.remaning = 0;\n                this._trigged = false;\n                this._promise = null;\n            },\n    \n            /**\n             * @event startUpload\n             * @description 当开始上传流程时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 开始上传。此方法可以从初始状态调用开始上传流程，也可以从暂停状态调用，继续上传流程。\n             *\n             * 可以指定开始某一个文件。\n             * @grammar upload() => undefined\n             * @grammar upload( file | fileId) => undefined\n             * @method upload\n             * @for  Uploader\n             */\n            startUpload: function(file) {\n                var me = this;\n    \n                // 移出invalid的文件\n                $.each( me.request( 'get-files', Status.INVALID ), function() {\n                    me.request( 'remove-file', this );\n                });\n    \n                // 如果指定了开始某个文件，则只开始指定文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if (file.getStatus() === Status.INTERRUPT) {\n                        $.each( me.pool, function( _, v ) {\n    \n                            // 之前暂停过。\n                            if (v.file !== file) {\n                                return;\n                            }\n    \n                            v.transport && v.transport.send();\n                        });\n    \n                        file.setStatus( Status.QUEUED );\n                    } else if (file.getStatus() === Status.PROGRESS) {\n                        return;\n                    } else {\n                        file.setStatus( Status.QUEUED );\n                    }\n                } else {\n                    $.each( me.request( 'get-files', [ Status.INITED ] ), function() {\n                        this.setStatus( Status.QUEUED );\n                    });\n                }\n    \n                if ( me.runing ) {\n                    return;\n                }\n    \n                me.runing = true;\n    \n                var files = [];\n    \n                // 如果有暂停的，则续传\n                $.each( me.pool, function( _, v ) {\n                    var file = v.file;\n    \n                    if ( file.getStatus() === Status.INTERRUPT ) {\n                        files.push(file);\n                        me._trigged = false;\n                        v.transport && v.transport.send();\n                    }\n                });\n    \n                var file;\n                while ( (file = files.shift()) ) {\n                    file.setStatus( Status.PROGRESS );\n                }\n    \n                file || $.each( me.request( 'get-files',\n                        Status.INTERRUPT ), function() {\n                    this.setStatus( Status.PROGRESS );\n                });\n    \n                me._trigged = false;\n                Base.nextTick( me.__tick );\n                me.owner.trigger('startUpload');\n            },\n    \n            /**\n             * @event stopUpload\n             * @description 当开始上传流程暂停时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 暂停上传。第一个参数为是否中断上传当前正在上传的文件。\n             *\n             * 如果第一个参数是文件，则只暂停指定文件。\n             * @grammar stop() => undefined\n             * @grammar stop( true ) => undefined\n             * @grammar stop( file ) => undefined\n             * @method stop\n             * @for  Uploader\n             */\n            stopUpload: function( file, interrupt ) {\n                var me = this;\n    \n                if (file === true) {\n                    interrupt = file;\n                    file = null;\n                }\n    \n                if ( me.runing === false ) {\n                    return;\n                }\n    \n                // 如果只是暂停某个文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if ( file.getStatus() !== Status.PROGRESS &&\n                            file.getStatus() !== Status.QUEUED ) {\n                        return;\n                    }\n    \n                    file.setStatus( Status.INTERRUPT );\n                    $.each( me.pool, function( _, v ) {\n    \n                        // 只 abort 指定的文件。\n                        if (v.file !== file) {\n                            return;\n                        }\n    \n                        v.transport && v.transport.abort();\n                        me._putback(v);\n                        me._popBlock(v);\n                    });\n    \n                    return Base.nextTick( me.__tick );\n                }\n    \n                me.runing = false;\n    \n                if (this._promise && this._promise.file) {\n                    this._promise.file.setStatus( Status.INTERRUPT );\n                }\n    \n                interrupt && $.each( me.pool, function( _, v ) {\n                    v.transport && v.transport.abort();\n                    v.file.setStatus( Status.INTERRUPT );\n                });\n    \n                me.owner.trigger('stopUpload');\n            },\n    \n            /**\n             * @method cancelFile\n             * @grammar cancelFile( file ) => undefined\n             * @grammar cancelFile( id ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 标记文件状态为已取消, 同时将中断文件传输。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.cancelFile( file );\n             * })\n             */\n            cancelFile: function( file ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                file.setStatus( Status.CANCELLED );\n                this.owner.trigger( 'fileDequeued', file );\n            },\n    \n            /**\n             * 判断`Uplaode`r是否正在上传中。\n             * @grammar isInProgress() => Boolean\n             * @method isInProgress\n             * @for  Uploader\n             */\n            isInProgress: function() {\n                return !!this.progress;\n            },\n    \n            _getStats: function() {\n                return this.request('get-stats');\n            },\n    \n            /**\n             * 掉过一个文件上传，直接标记指定文件为已上传状态。\n             * @grammar skipFile( file ) => undefined\n             * @method skipFile\n             * @for  Uploader\n             */\n            skipFile: function( file, status ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                file.setStatus( status || Status.COMPLETE );\n                file.skipped = true;\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                this.owner.trigger( 'uploadSkip', file );\n            },\n    \n            /**\n             * @event uploadFinished\n             * @description 当所有文件上传结束时触发。\n             * @for  Uploader\n             */\n            _tick: function() {\n                var me = this,\n                    opts = me.options,\n                    fn, val;\n    \n                // 上一个promise还没有结束，则等待完成后再执行。\n                if ( me._promise ) {\n                    return me._promise.always( me.__tick );\n                }\n    \n                // 还有位置，且还有文件要处理的话。\n                if ( me.pool.length < opts.threads && (val = me._nextBlock()) ) {\n                    me._trigged = false;\n    \n                    fn = function( val ) {\n                        me._promise = null;\n    \n                        // 有可能是reject过来的，所以要检测val的类型。\n                        val && val.file && me._startSend( val );\n                        Base.nextTick( me.__tick );\n                    };\n    \n                    me._promise = isPromise( val ) ? val.always( fn ) : fn( val );\n    \n                // 没有要上传的了，且没有正在传输的了。\n                } else if ( !me.remaning && !me._getStats().numOfQueue &&\n                    !me._getStats().numofInterrupt ) {\n                    me.runing = false;\n    \n                    me._trigged || Base.nextTick(function() {\n                        me.owner.trigger('uploadFinished');\n                    });\n                    me._trigged = true;\n                }\n            },\n    \n            _putback: function(block) {\n                var idx;\n    \n                block.cuted.unshift(block);\n                idx = this.stack.indexOf(block.cuted);\n    \n                if (!~idx) {\n                    this.stack.unshift(block.cuted);\n                }\n            },\n    \n            _getStack: function() {\n                var i = 0,\n                    act;\n    \n                while ( (act = this.stack[ i++ ]) ) {\n                    if ( act.has() && act.file.getStatus() === Status.PROGRESS ) {\n                        return act;\n                    } else if (!act.has() ||\n                            act.file.getStatus() !== Status.PROGRESS &&\n                            act.file.getStatus() !== Status.INTERRUPT ) {\n    \n                        // 把已经处理完了的，或者，状态为非 progress（上传中）、\n                        // interupt（暂停中） 的移除。\n                        this.stack.splice( --i, 1 );\n                    }\n                }\n    \n                return null;\n            },\n    \n            _nextBlock: function() {\n                var me = this,\n                    opts = me.options,\n                    act, next, done, preparing;\n    \n                // 如果当前文件还有没有需要传输的，则直接返回剩下的。\n                if ( (act = this._getStack()) ) {\n    \n                    // 是否提前准备下一个文件\n                    if ( opts.prepareNextFile && !me.pending.length ) {\n                        me._prepareNextFile();\n                    }\n    \n                    return act.shift();\n    \n                // 否则，如果正在运行，则准备下一个文件，并等待完成后返回下个分片。\n                } else if ( me.runing ) {\n    \n                    // 如果缓存中有，则直接在缓存中取，没有则去queue中取。\n                    if ( !me.pending.length && me._getStats().numOfQueue ) {\n                        me._prepareNextFile();\n                    }\n    \n                    next = me.pending.shift();\n                    done = function( file ) {\n                        if ( !file ) {\n                            return null;\n                        }\n    \n                        act = CuteFile( file, opts.chunked ? opts.chunkSize : 0 );\n                        me.stack.push(act);\n                        return act.shift();\n                    };\n    \n                    // 文件可能还在prepare中，也有可能已经完全准备好了。\n                    if ( isPromise( next) ) {\n                        preparing = next.file;\n                        next = next[ next.pipe ? 'pipe' : 'then' ]( done );\n                        next.file = preparing;\n                        return next;\n                    }\n    \n                    return done( next );\n                }\n            },\n    \n    \n            /**\n             * @event uploadStart\n             * @param {File} file File对象\n             * @description 某个文件开始上传前触发，一个文件只会触发一次。\n             * @for  Uploader\n             */\n            _prepareNextFile: function() {\n                var me = this,\n                    file = me.request('fetch-file'),\n                    pending = me.pending,\n                    promise;\n    \n                if ( file ) {\n                    promise = me.request( 'before-send-file', file, function() {\n    \n                        // 有可能文件被skip掉了。文件被skip掉后，状态坑定不是Queued.\n                        if ( file.getStatus() === Status.PROGRESS ||\n                            file.getStatus() === Status.INTERRUPT ) {\n                            return file;\n                        }\n    \n                        return me._finishFile( file );\n                    });\n    \n                    me.owner.trigger( 'uploadStart', file );\n                    file.setStatus( Status.PROGRESS );\n    \n                    promise.file = file;\n    \n                    // 如果还在pending中，则替换成文件本身。\n                    promise.done(function() {\n                        var idx = $.inArray( promise, pending );\n    \n                        ~idx && pending.splice( idx, 1, file );\n                    });\n    \n                    // befeore-send-file的钩子就有错误发生。\n                    promise.fail(function( reason ) {\n                        file.setStatus( Status.ERROR, reason );\n                        me.owner.trigger( 'uploadError', file, reason );\n                        me.owner.trigger( 'uploadComplete', file );\n                    });\n    \n                    pending.push( promise );\n                }\n            },\n    \n            // 让出位置了，可以让其他分片开始上传\n            _popBlock: function( block ) {\n                var idx = $.inArray( block, this.pool );\n    \n                this.pool.splice( idx, 1 );\n                block.file.remaning--;\n                this.remaning--;\n            },\n    \n            // 开始上传，可以被掉过。如果promise被reject了，则表示跳过此分片。\n            _startSend: function( block ) {\n                var me = this,\n                    file = block.file,\n                    promise;\n    \n                // 有可能在 before-send-file 的 promise 期间改变了文件状态。\n                // 如：暂停，取消\n                // 我们不能中断 promise, 但是可以在 promise 完后，不做上传操作。\n                if ( file.getStatus() !== Status.PROGRESS ) {\n    \n                    // 如果是中断，则还需要放回去。\n                    if (file.getStatus() === Status.INTERRUPT) {\n                        me._putback(block);\n                    }\n    \n                    return;\n                }\n    \n                me.pool.push( block );\n                me.remaning++;\n    \n                // 如果没有分片，则直接使用原始的。\n                // 不会丢失content-type信息。\n                block.blob = block.chunks === 1 ? file.source :\n                        file.source.slice( block.start, block.end );\n    \n                // hook, 每个分片发送之前可能要做些异步的事情。\n                promise = me.request( 'before-send', block, function() {\n    \n                    // 有可能文件已经上传出错了，所以不需要再传输了。\n                    if ( file.getStatus() === Status.PROGRESS ) {\n                        me._doSend( block );\n                    } else {\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n    \n                // 如果为fail了，则跳过此分片。\n                promise.fail(function() {\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file ).always(function() {\n                            block.percentage = 1;\n                            me._popBlock( block );\n                            me.owner.trigger( 'uploadComplete', file );\n                            Base.nextTick( me.__tick );\n                        });\n                    } else {\n                        block.percentage = 1;\n                        me.updateFileProgress( file );\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n            },\n    \n    \n            /**\n             * @event uploadBeforeSend\n             * @param {Object} object\n             * @param {Object} data 默认的上传参数，可以扩展此对象来控制上传参数。\n             * @param {Object} headers 可以扩展此对象来控制上传头部。\n             * @description 当某个文件的分块在发送前触发，主要用来询问是否要添加附带参数，大文件在开起分片上传的前提下此事件可能会触发多次。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadAccept\n             * @param {Object} object\n             * @param {Object} ret 服务端的返回数据，json格式，如果服务端不是json格式，从ret._raw中取数据，自行解析。\n             * @description 当某个文件上传到服务端响应后，会派送此事件来询问服务端响应是否有效。如果此事件handler返回值为`false`, 则此文件将派送`server`类型的`uploadError`事件。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadProgress\n             * @param {File} file File对象\n             * @param {Number} percentage 上传进度\n             * @description 上传过程中触发，携带上传进度。\n             * @for  Uploader\n             */\n    \n    \n            /**\n             * @event uploadError\n             * @param {File} file File对象\n             * @param {String} reason 出错的code\n             * @description 当文件上传出错时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadSuccess\n             * @param {File} file File对象\n             * @param {Object} response 服务端返回的数据\n             * @description 当文件上传成功时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadComplete\n             * @param {File} [file] File对象\n             * @description 不管成功或者失败，文件上传完成时触发。\n             * @for  Uploader\n             */\n    \n            // 做上传操作。\n            _doSend: function( block ) {\n                var me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    file = block.file,\n                    tr = new Transport( opts ),\n                    data = $.extend({}, opts.formData ),\n                    headers = $.extend({}, opts.headers ),\n                    requestAccept, ret;\n    \n                block.transport = tr;\n    \n                tr.on( 'destroy', function() {\n                    delete block.transport;\n                    me._popBlock( block );\n                    Base.nextTick( me.__tick );\n                });\n    \n                // 广播上传进度。以文件为单位。\n                tr.on( 'progress', function( percentage ) {\n                    block.percentage = percentage;\n                    me.updateFileProgress( file );\n                });\n    \n                // 用来询问，是否返回的结果是有错误的。\n                requestAccept = function( reject ) {\n                    var fn;\n    \n                    ret = tr.getResponseAsJson() || {};\n                    ret._raw = tr.getResponse();\n                    fn = function( value ) {\n                        reject = value;\n                    };\n    \n                    // 服务端响应了，不代表成功了，询问是否响应正确。\n                    if ( !owner.trigger( 'uploadAccept', block, ret, fn ) ) {\n                        reject = reject || 'server';\n                    }\n    \n                    return reject;\n                };\n    \n                // 尝试重试，然后广播文件上传出错。\n                tr.on( 'error', function( type, flag ) {\n                    block.retried = block.retried || 0;\n    \n                    // 自动重试\n                    if ( block.chunks > 1 && ~'http,abort'.indexOf( type ) &&\n                            block.retried < opts.chunkRetry ) {\n    \n                        block.retried++;\n                        tr.send();\n    \n                    } else {\n    \n                        // http status 500 ~ 600\n                        if ( !flag && type === 'server' ) {\n                            type = requestAccept( type );\n                        }\n    \n                        file.setStatus( Status.ERROR, type );\n                        owner.trigger( 'uploadError', file, type );\n                        owner.trigger( 'uploadComplete', file );\n                    }\n                });\n    \n                // 上传成功\n                tr.on( 'load', function() {\n                    var reason;\n    \n                    // 如果非预期，转向上传出错。\n                    if ( (reason = requestAccept()) ) {\n                        tr.trigger( 'error', reason, true );\n                        return;\n                    }\n    \n                    // 全部上传完成。\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file, ret );\n                    } else {\n                        tr.destroy();\n                    }\n                });\n    \n                // 配置默认的上传字段。\n                data = $.extend( data, {\n                    id: file.id,\n                    name: file.name,\n                    type: file.type,\n                    lastModifiedDate: file.lastModifiedDate,\n                    size: file.size\n                });\n    \n                block.chunks > 1 && $.extend( data, {\n                    chunks: block.chunks,\n                    chunk: block.chunk\n                });\n    \n                // 在发送之间可以添加字段什么的。。。\n                // 如果默认的字段不够使用，可以通过监听此事件来扩展\n                owner.trigger( 'uploadBeforeSend', block, data, headers );\n    \n                // 开始发送。\n                tr.appendBlob( opts.fileVal, block.blob, file.name );\n                tr.append( data );\n                tr.setRequestHeader( headers );\n                tr.send();\n            },\n    \n            // 完成上传。\n            _finishFile: function( file, ret, hds ) {\n                var owner = this.owner;\n    \n                return owner\n                        .request( 'after-send-file', arguments, function() {\n                            file.setStatus( Status.COMPLETE );\n                            owner.trigger( 'uploadSuccess', file, ret, hds );\n                        })\n                        .fail(function( reason ) {\n    \n                            // 如果外部已经标记为invalid什么的，不再改状态。\n                            if ( file.getStatus() === Status.PROGRESS ) {\n                                file.setStatus( Status.ERROR, reason );\n                            }\n    \n                            owner.trigger( 'uploadError', file, reason );\n                        })\n                        .always(function() {\n                            owner.trigger( 'uploadComplete', file );\n                        });\n            },\n    \n            updateFileProgress: function(file) {\n                var totalPercent = 0,\n                    uploaded = 0;\n    \n                if (!file.blocks) {\n                    return;\n                }\n    \n                $.each( file.blocks, function( _, v ) {\n                    uploaded += (v.percentage || 0) * (v.end - v.start);\n                });\n    \n                totalPercent = uploaded / file.size;\n                this.owner.trigger( 'uploadProgress', file, totalPercent || 0 );\n            }\n    \n        });\n    });\n    /**\n     * @fileOverview 各种验证，包括文件总大小是否超出、单文件是否超出和文件是否重复。\n     */\n    \n    define('widgets/validator',[\n        'base',\n        'uploader',\n        'file',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile ) {\n    \n        var $ = Base.$,\n            validators = {},\n            api;\n    \n        /**\n         * @event error\n         * @param {String} type 错误类型。\n         * @description 当validate不通过时，会以派送错误事件的形式通知调用者。通过`upload.on('error', handler)`可以捕获到此类错误，目前有以下错误会在特定的情况下派送错来。\n         *\n         * * `Q_EXCEED_NUM_LIMIT` 在设置了`fileNumLimit`且尝试给`uploader`添加的文件数量超出这个值时派送。\n         * * `Q_EXCEED_SIZE_LIMIT` 在设置了`Q_EXCEED_SIZE_LIMIT`且尝试给`uploader`添加的文件总大小超出这个值时派送。\n         * * `Q_TYPE_DENIED` 当文件类型不满足时触发。。\n         * @for  Uploader\n         */\n    \n        // 暴露给外面的api\n        api = {\n    \n            // 添加验证器\n            addValidator: function( type, cb ) {\n                validators[ type ] = cb;\n            },\n    \n            // 移除验证器\n            removeValidator: function( type ) {\n                delete validators[ type ];\n            }\n        };\n    \n        // 在Uploader初始化的时候启动Validators的初始化\n        Uploader.register({\n            name: 'validator',\n    \n            init: function() {\n                var me = this;\n                Base.nextTick(function() {\n                    $.each( validators, function() {\n                        this.call( me.owner );\n                    });\n                });\n            }\n        });\n    \n        /**\n         * @property {int} [fileNumLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总数量, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileNumLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                count = 0,\n                max = parseInt( opts.fileNumLimit, 10 ),\n                flag = true;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n    \n                if ( count >= max && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_NUM_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return count >= max ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function() {\n                count++;\n            });\n    \n            uploader.on( 'fileDequeued', function() {\n                count--;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n    \n        /**\n         * @property {int} [fileSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                count = 0,\n                max = parseInt( opts.fileSizeLimit, 10 ),\n                flag = true;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var invalid = count + file.size > max;\n    \n                if ( invalid && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_SIZE_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return invalid ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                count += file.size;\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                count -= file.size;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n        /**\n         * @property {int} [fileSingleSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证单个文件大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSingleSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                max = opts.fileSingleSizeLimit;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n    \n                if ( file.size > max ) {\n                    file.setStatus( WUFile.Status.INVALID, 'exceed_size' );\n                    this.trigger( 'error', 'F_EXCEED_SIZE', max, file );\n                    return false;\n                }\n    \n            });\n    \n        });\n    \n        /**\n         * @property {Boolean} [duplicate=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 去重， 根据文件名字、文件大小和最后修改时间来生成hash Key.\n         */\n        api.addValidator( 'duplicate', function() {\n            var uploader = this,\n                opts = uploader.options,\n                mapping = {};\n    \n            if ( opts.duplicate ) {\n                return;\n            }\n    \n            function hashString( str ) {\n                var hash = 0,\n                    i = 0,\n                    len = str.length,\n                    _char;\n    \n                for ( ; i < len; i++ ) {\n                    _char = str.charCodeAt( i );\n                    hash = _char + (hash << 6) + (hash << 16) - hash;\n                }\n    \n                return hash;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var hash = file.__hash || (file.__hash = hashString( file.name +\n                        file.size + file.lastModifiedDate ));\n    \n                // 已经重复了\n                if ( mapping[ hash ] ) {\n                    this.trigger( 'error', 'F_DUPLICATE', file );\n                    return false;\n                }\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (mapping[ hash ] = true);\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (delete mapping[ hash ]);\n            });\n    \n            uploader.on( 'reset', function() {\n                mapping = {};\n            });\n        });\n    \n        return api;\n    });\n    \n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/compbase',[],function() {\n    \n        function CompBase( owner, runtime ) {\n    \n            this.owner = owner;\n            this.options = owner.options;\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.getRuid = function() {\n                return runtime.uid;\n            };\n    \n            this.trigger = function() {\n                return owner.trigger.apply( owner, arguments );\n            };\n        }\n    \n        return CompBase;\n    });\n    /**\n     * @fileOverview Html5Runtime\n     */\n    define('runtime/html5/runtime',[\n        'base',\n        'runtime/runtime',\n        'runtime/compbase'\n    ], function( Base, Runtime, CompBase ) {\n    \n        var type = 'html5',\n            components = {};\n    \n        function Html5Runtime() {\n            var pool = {},\n                me = this,\n                destroy = this.destroy;\n    \n            Runtime.apply( me, arguments );\n            me.type = type;\n    \n    \n            // 这个方法的调用者，实际上是RuntimeClient\n            me.exec = function( comp, fn/*, args...*/) {\n                var client = this,\n                    uid = client.uid,\n                    args = Base.slice( arguments, 2 ),\n                    instance;\n    \n                if ( components[ comp ] ) {\n                    instance = pool[ uid ] = pool[ uid ] ||\n                            new components[ comp ]( client, me );\n    \n                    if ( instance[ fn ] ) {\n                        return instance[ fn ].apply( instance, args );\n                    }\n                }\n            };\n    \n            me.destroy = function() {\n                // @todo 删除池子中的所有实例\n                return destroy && destroy.apply( this, arguments );\n            };\n        }\n    \n        Base.inherits( Runtime, {\n            constructor: Html5Runtime,\n    \n            // 不需要连接其他程序，直接执行callback\n            init: function() {\n                var me = this;\n                setTimeout(function() {\n                    me.trigger('ready');\n                }, 1 );\n            }\n    \n        });\n    \n        // 注册Components\n        Html5Runtime.register = function( name, component ) {\n            var klass = components[ name ] = Base.inherits( CompBase, component );\n            return klass;\n        };\n    \n        // 注册html5运行时。\n        // 只有在支持的前提下注册。\n        if ( window.Blob && window.FileReader && window.DataView ) {\n            Runtime.addRuntime( type, Html5Runtime );\n        }\n    \n        return Html5Runtime;\n    });\n    /**\n     * @fileOverview Blob Html实现\n     */\n    define('runtime/html5/blob',[\n        'runtime/html5/runtime',\n        'lib/blob'\n    ], function( Html5Runtime, Blob ) {\n    \n        return Html5Runtime.register( 'Blob', {\n            slice: function( start, end ) {\n                var blob = this.owner.source,\n                    slice = blob.slice || blob.webkitSlice || blob.mozSlice;\n    \n                blob = slice.call( blob, start, end );\n    \n                return new Blob( this.getRuid(), blob );\n            }\n        });\n    });\n    /**\n     * @fileOverview FilePaste\n     */\n    define('runtime/html5/dnd',[\n        'base',\n        'runtime/html5/runtime',\n        'lib/file'\n    ], function( Base, Html5Runtime, File ) {\n    \n        var $ = Base.$,\n            prefix = 'webuploader-dnd-';\n    \n        return Html5Runtime.register( 'DragAndDrop', {\n            init: function() {\n                var elem = this.elem = this.options.container;\n    \n                this.dragEnterHandler = Base.bindFn( this._dragEnterHandler, this );\n                this.dragOverHandler = Base.bindFn( this._dragOverHandler, this );\n                this.dragLeaveHandler = Base.bindFn( this._dragLeaveHandler, this );\n                this.dropHandler = Base.bindFn( this._dropHandler, this );\n                this.dndOver = false;\n    \n                elem.on( 'dragenter', this.dragEnterHandler );\n                elem.on( 'dragover', this.dragOverHandler );\n                elem.on( 'dragleave', this.dragLeaveHandler );\n                elem.on( 'drop', this.dropHandler );\n    \n                if ( this.options.disableGlobalDnd ) {\n                    $( document ).on( 'dragover', this.dragOverHandler );\n                    $( document ).on( 'drop', this.dropHandler );\n                }\n            },\n    \n            _dragEnterHandler: function( e ) {\n                var me = this,\n                    denied = me._denied || false,\n                    items;\n    \n                e = e.originalEvent || e;\n    \n                if ( !me.dndOver ) {\n                    me.dndOver = true;\n    \n                    // 注意只有 chrome 支持。\n                    items = e.dataTransfer.items;\n    \n                    if ( items && items.length ) {\n                        me._denied = denied = !me.trigger( 'accept', items );\n                    }\n    \n                    me.elem.addClass( prefix + 'over' );\n                    me.elem[ denied ? 'addClass' :\n                            'removeClass' ]( prefix + 'denied' );\n                }\n    \n                e.dataTransfer.dropEffect = denied ? 'none' : 'copy';\n    \n                return false;\n            },\n    \n            _dragOverHandler: function( e ) {\n                // 只处理框内的。\n                var parentElem = this.elem.parent().get( 0 );\n                if ( parentElem && !$.contains( parentElem, e.currentTarget ) ) {\n                    return false;\n                }\n    \n                clearTimeout( this._leaveTimer );\n                this._dragEnterHandler.call( this, e );\n    \n                return false;\n            },\n    \n            _dragLeaveHandler: function() {\n                var me = this,\n                    handler;\n    \n                handler = function() {\n                    me.dndOver = false;\n                    me.elem.removeClass( prefix + 'over ' + prefix + 'denied' );\n                };\n    \n                clearTimeout( me._leaveTimer );\n                me._leaveTimer = setTimeout( handler, 100 );\n                return false;\n            },\n    \n            _dropHandler: function( e ) {\n                var me = this,\n                    ruid = me.getRuid(),\n                    parentElem = me.elem.parent().get( 0 ),\n                    dataTransfer, data;\n    \n                // 只处理框内的。\n                if ( parentElem && !$.contains( parentElem, e.currentTarget ) ) {\n                    return false;\n                }\n    \n                e = e.originalEvent || e;\n                dataTransfer = e.dataTransfer;\n    \n                // 如果是页面内拖拽，还不能处理，不阻止事件。\n                // 此处 ie11 下会报参数错误，\n                try {\n                    data = dataTransfer.getData('text/html');\n                } catch( err ) {\n                }\n    \n                if ( data ) {\n                    return;\n                }\n    \n                me._getTansferFiles( dataTransfer, function( results ) {\n                    me.trigger( 'drop', $.map( results, function( file ) {\n                        return new File( ruid, file );\n                    }) );\n                });\n    \n                me.dndOver = false;\n                me.elem.removeClass( prefix + 'over' );\n                return false;\n            },\n    \n            // 如果传入 callback 则去查看文件夹，否则只管当前文件夹。\n            _getTansferFiles: function( dataTransfer, callback ) {\n                var results  = [],\n                    promises = [],\n                    items, files, file, item, i, len, canAccessFolder;\n    \n                items = dataTransfer.items;\n                files = dataTransfer.files;\n    \n                canAccessFolder = !!(items && items[ 0 ].webkitGetAsEntry);\n    \n                for ( i = 0, len = files.length; i < len; i++ ) {\n                    file = files[ i ];\n                    item = items && items[ i ];\n    \n                    if ( canAccessFolder && item.webkitGetAsEntry().isDirectory ) {\n    \n                        promises.push( this._traverseDirectoryTree(\n                                item.webkitGetAsEntry(), results ) );\n                    } else {\n                        results.push( file );\n                    }\n                }\n    \n                Base.when.apply( Base, promises ).done(function() {\n    \n                    if ( !results.length ) {\n                        return;\n                    }\n    \n                    callback( results );\n                });\n            },\n    \n            _traverseDirectoryTree: function( entry, results ) {\n                var deferred = Base.Deferred(),\n                    me = this;\n    \n                if ( entry.isFile ) {\n                    entry.file(function( file ) {\n                        results.push( file );\n                        deferred.resolve();\n                    });\n                } else if ( entry.isDirectory ) {\n                    entry.createReader().readEntries(function( entries ) {\n                        var len = entries.length,\n                            promises = [],\n                            arr = [],    // 为了保证顺序。\n                            i;\n    \n                        for ( i = 0; i < len; i++ ) {\n                            promises.push( me._traverseDirectoryTree(\n                                    entries[ i ], arr ) );\n                        }\n    \n                        Base.when.apply( Base, promises ).then(function() {\n                            results.push.apply( results, arr );\n                            deferred.resolve();\n                        }, deferred.reject );\n                    });\n                }\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                var elem = this.elem;\n    \n                // 还没 init 就调用 destroy\n                if (!elem) {\n                    return;\n                }\n                \n                elem.off( 'dragenter', this.dragEnterHandler );\n                elem.off( 'dragover', this.dragOverHandler );\n                elem.off( 'dragleave', this.dragLeaveHandler );\n                elem.off( 'drop', this.dropHandler );\n    \n                if ( this.options.disableGlobalDnd ) {\n                    $( document ).off( 'dragover', this.dragOverHandler );\n                    $( document ).off( 'drop', this.dropHandler );\n                }\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview FilePaste\n     */\n    define('runtime/html5/filepaste',[\n        'base',\n        'runtime/html5/runtime',\n        'lib/file'\n    ], function( Base, Html5Runtime, File ) {\n    \n        return Html5Runtime.register( 'FilePaste', {\n            init: function() {\n                var opts = this.options,\n                    elem = this.elem = opts.container,\n                    accept = '.*',\n                    arr, i, len, item;\n    \n                // accetp的mimeTypes中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].mimeTypes;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = arr.join(',');\n                        accept = accept.replace( /,/g, '|' ).replace( /\\*/g, '.*' );\n                    }\n                }\n                this.accept = accept = new RegExp( accept, 'i' );\n                this.hander = Base.bindFn( this._pasteHander, this );\n                elem.on( 'paste', this.hander );\n            },\n    \n            _pasteHander: function( e ) {\n                var allowed = [],\n                    ruid = this.getRuid(),\n                    items, item, blob, i, len;\n    \n                e = e.originalEvent || e;\n                items = e.clipboardData.items;\n    \n                for ( i = 0, len = items.length; i < len; i++ ) {\n                    item = items[ i ];\n    \n                    if ( item.kind !== 'file' || !(blob = item.getAsFile()) ) {\n                        continue;\n                    }\n    \n                    allowed.push( new File( ruid, blob ) );\n                }\n    \n                if ( allowed.length ) {\n                    // 不阻止非文件粘贴（文字粘贴）的事件冒泡\n                    e.preventDefault();\n                    e.stopPropagation();\n                    this.trigger( 'paste', allowed );\n                }\n            },\n    \n            destroy: function() {\n                this.elem.off( 'paste', this.hander );\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview FilePicker\n     */\n    define('runtime/html5/filepicker',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var $ = Base.$;\n    \n        return Html5Runtime.register( 'FilePicker', {\n            init: function() {\n                var container = this.getRuntime().getContainer(),\n                    me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    label = this.label = $( document.createElement('label') ),\n                    input =  this.input = $( document.createElement('input') ),\n                    arr, i, len, mouseHandler;\n    \n                input.attr( 'type', 'file' );\n                input.attr( 'name', opts.name );\n                input.addClass('webuploader-element-invisible');\n    \n                label.on( 'click', function() {\n                    input.trigger('click');\n                });\n    \n                label.css({\n                    opacity: 0,\n                    width: '100%',\n                    height: '100%',\n                    display: 'block',\n                    cursor: 'pointer',\n                    background: '#ffffff'\n                });\n    \n                if ( opts.multiple ) {\n                    input.attr( 'multiple', 'multiple' );\n                }\n    \n                // @todo Firefox不支持单独指定后缀\n                if ( opts.accept && opts.accept.length > 0 ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        arr.push( opts.accept[ i ].mimeTypes );\n                    }\n    \n                    input.attr( 'accept', arr.join(',') );\n                }\n    \n                container.append( input );\n                container.append( label );\n    \n                mouseHandler = function( e ) {\n                    owner.trigger( e.type );\n                };\n    \n                input.on( 'change', function( e ) {\n                    var fn = arguments.callee,\n                        clone;\n    \n                    me.files = e.target.files;\n    \n                    // reset input\n                    clone = this.cloneNode( true );\n                    clone.value = null;\n                    this.parentNode.replaceChild( clone, this );\n    \n                    input.off();\n                    input = $( clone ).on( 'change', fn )\n                            .on( 'mouseenter mouseleave', mouseHandler );\n    \n                    owner.trigger('change');\n                });\n    \n                label.on( 'mouseenter mouseleave', mouseHandler );\n    \n            },\n    \n    \n            getFiles: function() {\n                return this.files;\n            },\n    \n            destroy: function() {\n                this.input.off();\n                this.label.off();\n            }\n        });\n    });\n    /**\n     * Terms:\n     *\n     * Uint8Array, FileReader, BlobBuilder, atob, ArrayBuffer\n     * @fileOverview Image控件\n     */\n    define('runtime/html5/util',[\n        'base'\n    ], function( Base ) {\n    \n        var urlAPI = window.createObjectURL && window ||\n                window.URL && URL.revokeObjectURL && URL ||\n                window.webkitURL,\n            createObjectURL = Base.noop,\n            revokeObjectURL = createObjectURL;\n    \n        if ( urlAPI ) {\n    \n            // 更安全的方式调用，比如android里面就能把context改成其他的对象。\n            createObjectURL = function() {\n                return urlAPI.createObjectURL.apply( urlAPI, arguments );\n            };\n    \n            revokeObjectURL = function() {\n                return urlAPI.revokeObjectURL.apply( urlAPI, arguments );\n            };\n        }\n    \n        return {\n            createObjectURL: createObjectURL,\n            revokeObjectURL: revokeObjectURL,\n    \n            dataURL2Blob: function( dataURI ) {\n                var byteStr, intArray, ab, i, mimetype, parts;\n    \n                parts = dataURI.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    byteStr = atob( parts[ 1 ] );\n                } else {\n                    byteStr = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                ab = new ArrayBuffer( byteStr.length );\n                intArray = new Uint8Array( ab );\n    \n                for ( i = 0; i < byteStr.length; i++ ) {\n                    intArray[ i ] = byteStr.charCodeAt( i );\n                }\n    \n                mimetype = parts[ 0 ].split(':')[ 1 ].split(';')[ 0 ];\n    \n                return this.arrayBufferToBlob( ab, mimetype );\n            },\n    \n            dataURL2ArrayBuffer: function( dataURI ) {\n                var byteStr, intArray, i, parts;\n    \n                parts = dataURI.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    byteStr = atob( parts[ 1 ] );\n                } else {\n                    byteStr = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                intArray = new Uint8Array( byteStr.length );\n    \n                for ( i = 0; i < byteStr.length; i++ ) {\n                    intArray[ i ] = byteStr.charCodeAt( i );\n                }\n    \n                return intArray.buffer;\n            },\n    \n            arrayBufferToBlob: function( buffer, type ) {\n                var builder = window.BlobBuilder || window.WebKitBlobBuilder,\n                    bb;\n    \n                // android不支持直接new Blob, 只能借助blobbuilder.\n                if ( builder ) {\n                    bb = new builder();\n                    bb.append( buffer );\n                    return bb.getBlob( type );\n                }\n    \n                return new Blob([ buffer ], type ? { type: type } : {} );\n            },\n    \n            // 抽出来主要是为了解决android下面canvas.toDataUrl不支持jpeg.\n            // 你得到的结果是png.\n            canvasToDataUrl: function( canvas, type, quality ) {\n                return canvas.toDataURL( type, quality / 100 );\n            },\n    \n            // imagemeat会复写这个方法，如果用户选择加载那个文件了的话。\n            parseMeta: function( blob, callback ) {\n                callback( false, {});\n            },\n    \n            // imagemeat会复写这个方法，如果用户选择加载那个文件了的话。\n            updateImageHead: function( data ) {\n                return data;\n            }\n        };\n    });\n    /**\n     * Terms:\n     *\n     * Uint8Array, FileReader, BlobBuilder, atob, ArrayBuffer\n     * @fileOverview Image控件\n     */\n    define('runtime/html5/imagemeta',[\n        'runtime/html5/util'\n    ], function( Util ) {\n    \n        var api;\n    \n        api = {\n            parsers: {\n                0xffe1: []\n            },\n    \n            maxMetaDataSize: 262144,\n    \n            parse: function( blob, cb ) {\n                var me = this,\n                    fr = new FileReader();\n    \n                fr.onload = function() {\n                    cb( false, me._parse( this.result ) );\n                    fr = fr.onload = fr.onerror = null;\n                };\n    \n                fr.onerror = function( e ) {\n                    cb( e.message );\n                    fr = fr.onload = fr.onerror = null;\n                };\n    \n                blob = blob.slice( 0, me.maxMetaDataSize );\n                fr.readAsArrayBuffer( blob.getSource() );\n            },\n    \n            _parse: function( buffer, noParse ) {\n                if ( buffer.byteLength < 6 ) {\n                    return;\n                }\n    \n                var dataview = new DataView( buffer ),\n                    offset = 2,\n                    maxOffset = dataview.byteLength - 4,\n                    headLength = offset,\n                    ret = {},\n                    markerBytes, markerLength, parsers, i;\n    \n                if ( dataview.getUint16( 0 ) === 0xffd8 ) {\n    \n                    while ( offset < maxOffset ) {\n                        markerBytes = dataview.getUint16( offset );\n    \n                        if ( markerBytes >= 0xffe0 && markerBytes <= 0xffef ||\n                                markerBytes === 0xfffe ) {\n    \n                            markerLength = dataview.getUint16( offset + 2 ) + 2;\n    \n                            if ( offset + markerLength > dataview.byteLength ) {\n                                break;\n                            }\n    \n                            parsers = api.parsers[ markerBytes ];\n    \n                            if ( !noParse && parsers ) {\n                                for ( i = 0; i < parsers.length; i += 1 ) {\n                                    parsers[ i ].call( api, dataview, offset,\n                                            markerLength, ret );\n                                }\n                            }\n    \n                            offset += markerLength;\n                            headLength = offset;\n                        } else {\n                            break;\n                        }\n                    }\n    \n                    if ( headLength > 6 ) {\n                        if ( buffer.slice ) {\n                            ret.imageHead = buffer.slice( 2, headLength );\n                        } else {\n                            // Workaround for IE10, which does not yet\n                            // support ArrayBuffer.slice:\n                            ret.imageHead = new Uint8Array( buffer )\n                                    .subarray( 2, headLength );\n                        }\n                    }\n                }\n    \n                return ret;\n            },\n    \n            updateImageHead: function( buffer, head ) {\n                var data = this._parse( buffer, true ),\n                    buf1, buf2, bodyoffset;\n    \n    \n                bodyoffset = 2;\n                if ( data.imageHead ) {\n                    bodyoffset = 2 + data.imageHead.byteLength;\n                }\n    \n                if ( buffer.slice ) {\n                    buf2 = buffer.slice( bodyoffset );\n                } else {\n                    buf2 = new Uint8Array( buffer ).subarray( bodyoffset );\n                }\n    \n                buf1 = new Uint8Array( head.byteLength + 2 + buf2.byteLength );\n    \n                buf1[ 0 ] = 0xFF;\n                buf1[ 1 ] = 0xD8;\n                buf1.set( new Uint8Array( head ), 2 );\n                buf1.set( new Uint8Array( buf2 ), head.byteLength + 2 );\n    \n                return buf1.buffer;\n            }\n        };\n    \n        Util.parseMeta = function() {\n            return api.parse.apply( api, arguments );\n        };\n    \n        Util.updateImageHead = function() {\n            return api.updateImageHead.apply( api, arguments );\n        };\n    \n        return api;\n    });\n    /**\n     * 代码来自于：https://github.com/blueimp/JavaScript-Load-Image\n     * 暂时项目中只用了orientation.\n     *\n     * 去除了 Exif Sub IFD Pointer, GPS Info IFD Pointer, Exif Thumbnail.\n     * @fileOverview EXIF解析\n     */\n    \n    // Sample\n    // ====================================\n    // Make : Apple\n    // Model : iPhone 4S\n    // Orientation : 1\n    // XResolution : 72 [72/1]\n    // YResolution : 72 [72/1]\n    // ResolutionUnit : 2\n    // Software : QuickTime 7.7.1\n    // DateTime : 2013:09:01 22:53:55\n    // ExifIFDPointer : 190\n    // ExposureTime : 0.058823529411764705 [1/17]\n    // FNumber : 2.4 [12/5]\n    // ExposureProgram : Normal program\n    // ISOSpeedRatings : 800\n    // ExifVersion : 0220\n    // DateTimeOriginal : 2013:09:01 22:52:51\n    // DateTimeDigitized : 2013:09:01 22:52:51\n    // ComponentsConfiguration : YCbCr\n    // ShutterSpeedValue : 4.058893515764426\n    // ApertureValue : 2.5260688216892597 [4845/1918]\n    // BrightnessValue : -0.3126686601998395\n    // MeteringMode : Pattern\n    // Flash : Flash did not fire, compulsory flash mode\n    // FocalLength : 4.28 [107/25]\n    // SubjectArea : [4 values]\n    // FlashpixVersion : 0100\n    // ColorSpace : 1\n    // PixelXDimension : 2448\n    // PixelYDimension : 3264\n    // SensingMethod : One-chip color area sensor\n    // ExposureMode : 0\n    // WhiteBalance : Auto white balance\n    // FocalLengthIn35mmFilm : 35\n    // SceneCaptureType : Standard\n    define('runtime/html5/imagemeta/exif',[\n        'base',\n        'runtime/html5/imagemeta'\n    ], function( Base, ImageMeta ) {\n    \n        var EXIF = {};\n    \n        EXIF.ExifMap = function() {\n            return this;\n        };\n    \n        EXIF.ExifMap.prototype.map = {\n            'Orientation': 0x0112\n        };\n    \n        EXIF.ExifMap.prototype.get = function( id ) {\n            return this[ id ] || this[ this.map[ id ] ];\n        };\n    \n        EXIF.exifTagTypes = {\n            // byte, 8-bit unsigned int:\n            1: {\n                getValue: function( dataView, dataOffset ) {\n                    return dataView.getUint8( dataOffset );\n                },\n                size: 1\n            },\n    \n            // ascii, 8-bit byte:\n            2: {\n                getValue: function( dataView, dataOffset ) {\n                    return String.fromCharCode( dataView.getUint8( dataOffset ) );\n                },\n                size: 1,\n                ascii: true\n            },\n    \n            // short, 16 bit int:\n            3: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint16( dataOffset, littleEndian );\n                },\n                size: 2\n            },\n    \n            // long, 32 bit int:\n            4: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint32( dataOffset, littleEndian );\n                },\n                size: 4\n            },\n    \n            // rational = two long values,\n            // first is numerator, second is denominator:\n            5: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint32( dataOffset, littleEndian ) /\n                        dataView.getUint32( dataOffset + 4, littleEndian );\n                },\n                size: 8\n            },\n    \n            // slong, 32 bit signed int:\n            9: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getInt32( dataOffset, littleEndian );\n                },\n                size: 4\n            },\n    \n            // srational, two slongs, first is numerator, second is denominator:\n            10: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getInt32( dataOffset, littleEndian ) /\n                        dataView.getInt32( dataOffset + 4, littleEndian );\n                },\n                size: 8\n            }\n        };\n    \n        // undefined, 8-bit byte, value depending on field:\n        EXIF.exifTagTypes[ 7 ] = EXIF.exifTagTypes[ 1 ];\n    \n        EXIF.getExifValue = function( dataView, tiffOffset, offset, type, length,\n                littleEndian ) {\n    \n            var tagType = EXIF.exifTagTypes[ type ],\n                tagSize, dataOffset, values, i, str, c;\n    \n            if ( !tagType ) {\n                Base.log('Invalid Exif data: Invalid tag type.');\n                return;\n            }\n    \n            tagSize = tagType.size * length;\n    \n            // Determine if the value is contained in the dataOffset bytes,\n            // or if the value at the dataOffset is a pointer to the actual data:\n            dataOffset = tagSize > 4 ? tiffOffset + dataView.getUint32( offset + 8,\n                    littleEndian ) : (offset + 8);\n    \n            if ( dataOffset + tagSize > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid data offset.');\n                return;\n            }\n    \n            if ( length === 1 ) {\n                return tagType.getValue( dataView, dataOffset, littleEndian );\n            }\n    \n            values = [];\n    \n            for ( i = 0; i < length; i += 1 ) {\n                values[ i ] = tagType.getValue( dataView,\n                        dataOffset + i * tagType.size, littleEndian );\n            }\n    \n            if ( tagType.ascii ) {\n                str = '';\n    \n                // Concatenate the chars:\n                for ( i = 0; i < values.length; i += 1 ) {\n                    c = values[ i ];\n    \n                    // Ignore the terminating NULL byte(s):\n                    if ( c === '\\u0000' ) {\n                        break;\n                    }\n                    str += c;\n                }\n    \n                return str;\n            }\n            return values;\n        };\n    \n        EXIF.parseExifTag = function( dataView, tiffOffset, offset, littleEndian,\n                data ) {\n    \n            var tag = dataView.getUint16( offset, littleEndian );\n            data.exif[ tag ] = EXIF.getExifValue( dataView, tiffOffset, offset,\n                    dataView.getUint16( offset + 2, littleEndian ),    // tag type\n                    dataView.getUint32( offset + 4, littleEndian ),    // tag length\n                    littleEndian );\n        };\n    \n        EXIF.parseExifTags = function( dataView, tiffOffset, dirOffset,\n                littleEndian, data ) {\n    \n            var tagsNumber, dirEndOffset, i;\n    \n            if ( dirOffset + 6 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid directory offset.');\n                return;\n            }\n    \n            tagsNumber = dataView.getUint16( dirOffset, littleEndian );\n            dirEndOffset = dirOffset + 2 + 12 * tagsNumber;\n    \n            if ( dirEndOffset + 4 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid directory size.');\n                return;\n            }\n    \n            for ( i = 0; i < tagsNumber; i += 1 ) {\n                this.parseExifTag( dataView, tiffOffset,\n                        dirOffset + 2 + 12 * i,    // tag offset\n                        littleEndian, data );\n            }\n    \n            // Return the offset to the next directory:\n            return dataView.getUint32( dirEndOffset, littleEndian );\n        };\n    \n        // EXIF.getExifThumbnail = function(dataView, offset, length) {\n        //     var hexData,\n        //         i,\n        //         b;\n        //     if (!length || offset + length > dataView.byteLength) {\n        //         Base.log('Invalid Exif data: Invalid thumbnail data.');\n        //         return;\n        //     }\n        //     hexData = [];\n        //     for (i = 0; i < length; i += 1) {\n        //         b = dataView.getUint8(offset + i);\n        //         hexData.push((b < 16 ? '0' : '') + b.toString(16));\n        //     }\n        //     return 'data:image/jpeg,%' + hexData.join('%');\n        // };\n    \n        EXIF.parseExifData = function( dataView, offset, length, data ) {\n    \n            var tiffOffset = offset + 10,\n                littleEndian, dirOffset;\n    \n            // Check for the ASCII code for \"Exif\" (0x45786966):\n            if ( dataView.getUint32( offset + 4 ) !== 0x45786966 ) {\n                // No Exif data, might be XMP data instead\n                return;\n            }\n            if ( tiffOffset + 8 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid segment size.');\n                return;\n            }\n    \n            // Check for the two null bytes:\n            if ( dataView.getUint16( offset + 8 ) !== 0x0000 ) {\n                Base.log('Invalid Exif data: Missing byte alignment offset.');\n                return;\n            }\n    \n            // Check the byte alignment:\n            switch ( dataView.getUint16( tiffOffset ) ) {\n                case 0x4949:\n                    littleEndian = true;\n                    break;\n    \n                case 0x4D4D:\n                    littleEndian = false;\n                    break;\n    \n                default:\n                    Base.log('Invalid Exif data: Invalid byte alignment marker.');\n                    return;\n            }\n    \n            // Check for the TIFF tag marker (0x002A):\n            if ( dataView.getUint16( tiffOffset + 2, littleEndian ) !== 0x002A ) {\n                Base.log('Invalid Exif data: Missing TIFF marker.');\n                return;\n            }\n    \n            // Retrieve the directory offset bytes, usually 0x00000008 or 8 decimal:\n            dirOffset = dataView.getUint32( tiffOffset + 4, littleEndian );\n            // Create the exif object to store the tags:\n            data.exif = new EXIF.ExifMap();\n            // Parse the tags of the main image directory and retrieve the\n            // offset to the next directory, usually the thumbnail directory:\n            dirOffset = EXIF.parseExifTags( dataView, tiffOffset,\n                    tiffOffset + dirOffset, littleEndian, data );\n    \n            // 尝试读取缩略图\n            // if ( dirOffset ) {\n            //     thumbnailData = {exif: {}};\n            //     dirOffset = EXIF.parseExifTags(\n            //         dataView,\n            //         tiffOffset,\n            //         tiffOffset + dirOffset,\n            //         littleEndian,\n            //         thumbnailData\n            //     );\n    \n            //     // Check for JPEG Thumbnail offset:\n            //     if (thumbnailData.exif[0x0201]) {\n            //         data.exif.Thumbnail = EXIF.getExifThumbnail(\n            //             dataView,\n            //             tiffOffset + thumbnailData.exif[0x0201],\n            //             thumbnailData.exif[0x0202] // Thumbnail data length\n            //         );\n            //     }\n            // }\n        };\n    \n        ImageMeta.parsers[ 0xffe1 ].push( EXIF.parseExifData );\n        return EXIF;\n    });\n    /**\n     * @fileOverview Image\n     */\n    define('runtime/html5/image',[\n        'base',\n        'runtime/html5/runtime',\n        'runtime/html5/util'\n    ], function( Base, Html5Runtime, Util ) {\n    \n        var BLANK = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D';\n    \n        return Html5Runtime.register( 'Image', {\n    \n            // flag: 标记是否被修改过。\n            modified: false,\n    \n            init: function() {\n                var me = this,\n                    img = new Image();\n    \n                img.onload = function() {\n    \n                    me._info = {\n                        type: me.type,\n                        width: this.width,\n                        height: this.height\n                    };\n    \n                    // 读取meta信息。\n                    if ( !me._metas && 'image/jpeg' === me.type ) {\n                        Util.parseMeta( me._blob, function( error, ret ) {\n                            me._metas = ret;\n                            me.owner.trigger('load');\n                        });\n                    } else {\n                        me.owner.trigger('load');\n                    }\n                };\n    \n                img.onerror = function() {\n                    me.owner.trigger('error');\n                };\n    \n                me._img = img;\n            },\n    \n            loadFromBlob: function( blob ) {\n                var me = this,\n                    img = me._img;\n    \n                me._blob = blob;\n                me.type = blob.type;\n                img.src = Util.createObjectURL( blob.getSource() );\n                me.owner.once( 'load', function() {\n                    Util.revokeObjectURL( img.src );\n                });\n            },\n    \n            resize: function( width, height ) {\n                var canvas = this._canvas ||\n                        (this._canvas = document.createElement('canvas'));\n    \n                this._resize( this._img, canvas, width, height );\n                this._blob = null;    // 没用了，可以删掉了。\n                this.modified = true;\n                this.owner.trigger( 'complete', 'resize' );\n            },\n    \n            crop: function( x, y, w, h, s ) {\n                var cvs = this._canvas ||\n                        (this._canvas = document.createElement('canvas')),\n                    opts = this.options,\n                    img = this._img,\n                    iw = img.naturalWidth,\n                    ih = img.naturalHeight,\n                    orientation = this.getOrientation();\n    \n                s = s || 1;\n    \n                // todo 解决 orientation 的问题。\n                // values that require 90 degree rotation\n                // if ( ~[ 5, 6, 7, 8 ].indexOf( orientation ) ) {\n    \n                //     switch ( orientation ) {\n                //         case 6:\n                //             tmp = x;\n                //             x = y;\n                //             y = iw * s - tmp - w;\n                //             console.log(ih * s, tmp, w)\n                //             break;\n                //     }\n    \n                //     (w ^= h, h ^= w, w ^= h);\n                // }\n    \n                cvs.width = w;\n                cvs.height = h;\n    \n                opts.preserveHeaders || this._rotate2Orientaion( cvs, orientation );\n                this._renderImageToCanvas( cvs, img, -x, -y, iw * s, ih * s );\n    \n                this._blob = null;    // 没用了，可以删掉了。\n                this.modified = true;\n                this.owner.trigger( 'complete', 'crop' );\n            },\n    \n            getAsBlob: function( type ) {\n                var blob = this._blob,\n                    opts = this.options,\n                    canvas;\n    \n                type = type || this.type;\n    \n                // blob需要重新生成。\n                if ( this.modified || this.type !== type ) {\n                    canvas = this._canvas;\n    \n                    if ( type === 'image/jpeg' ) {\n    \n                        blob = Util.canvasToDataUrl( canvas, type, opts.quality );\n    \n                        if ( opts.preserveHeaders && this._metas &&\n                                this._metas.imageHead ) {\n    \n                            blob = Util.dataURL2ArrayBuffer( blob );\n                            blob = Util.updateImageHead( blob,\n                                    this._metas.imageHead );\n                            blob = Util.arrayBufferToBlob( blob, type );\n                            return blob;\n                        }\n                    } else {\n                        blob = Util.canvasToDataUrl( canvas, type );\n                    }\n    \n                    blob = Util.dataURL2Blob( blob );\n                }\n    \n                return blob;\n            },\n    \n            getAsDataUrl: function( type ) {\n                var opts = this.options;\n    \n                type = type || this.type;\n    \n                if ( type === 'image/jpeg' ) {\n                    return Util.canvasToDataUrl( this._canvas, type, opts.quality );\n                } else {\n                    return this._canvas.toDataURL( type );\n                }\n            },\n    \n            getOrientation: function() {\n                return this._metas && this._metas.exif &&\n                        this._metas.exif.get('Orientation') || 1;\n            },\n    \n            info: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._info = val;\n                    return this;\n                }\n    \n                // getter\n                return this._info;\n            },\n    \n            meta: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._meta = val;\n                    return this;\n                }\n    \n                // getter\n                return this._meta;\n            },\n    \n            destroy: function() {\n                var canvas = this._canvas;\n                this._img.onload = null;\n    \n                if ( canvas ) {\n                    canvas.getContext('2d')\n                            .clearRect( 0, 0, canvas.width, canvas.height );\n                    canvas.width = canvas.height = 0;\n                    this._canvas = null;\n                }\n    \n                // 释放内存。非常重要，否则释放不了image的内存。\n                this._img.src = BLANK;\n                this._img = this._blob = null;\n            },\n    \n            _resize: function( img, cvs, width, height ) {\n                var opts = this.options,\n                    naturalWidth = img.width,\n                    naturalHeight = img.height,\n                    orientation = this.getOrientation(),\n                    scale, w, h, x, y;\n    \n                // values that require 90 degree rotation\n                if ( ~[ 5, 6, 7, 8 ].indexOf( orientation ) ) {\n    \n                    // 交换width, height的值。\n                    width ^= height;\n                    height ^= width;\n                    width ^= height;\n                }\n    \n                scale = Math[ opts.crop ? 'max' : 'min' ]( width / naturalWidth,\n                        height / naturalHeight );\n    \n                // 不允许放大。\n                opts.allowMagnify || (scale = Math.min( 1, scale ));\n    \n                w = naturalWidth * scale;\n                h = naturalHeight * scale;\n    \n                if ( opts.crop ) {\n                    cvs.width = width;\n                    cvs.height = height;\n                } else {\n                    cvs.width = w;\n                    cvs.height = h;\n                }\n    \n                x = (cvs.width - w) / 2;\n                y = (cvs.height - h) / 2;\n    \n                opts.preserveHeaders || this._rotate2Orientaion( cvs, orientation );\n    \n                this._renderImageToCanvas( cvs, img, x, y, w, h );\n            },\n    \n            _rotate2Orientaion: function( canvas, orientation ) {\n                var width = canvas.width,\n                    height = canvas.height,\n                    ctx = canvas.getContext('2d');\n    \n                switch ( orientation ) {\n                    case 5:\n                    case 6:\n                    case 7:\n                    case 8:\n                        canvas.width = height;\n                        canvas.height = width;\n                        break;\n                }\n    \n                switch ( orientation ) {\n                    case 2:    // horizontal flip\n                        ctx.translate( width, 0 );\n                        ctx.scale( -1, 1 );\n                        break;\n    \n                    case 3:    // 180 rotate left\n                        ctx.translate( width, height );\n                        ctx.rotate( Math.PI );\n                        break;\n    \n                    case 4:    // vertical flip\n                        ctx.translate( 0, height );\n                        ctx.scale( 1, -1 );\n                        break;\n    \n                    case 5:    // vertical flip + 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.scale( 1, -1 );\n                        break;\n    \n                    case 6:    // 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.translate( 0, -height );\n                        break;\n    \n                    case 7:    // horizontal flip + 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.translate( width, -height );\n                        ctx.scale( -1, 1 );\n                        break;\n    \n                    case 8:    // 90 rotate left\n                        ctx.rotate( -0.5 * Math.PI );\n                        ctx.translate( -width, 0 );\n                        break;\n                }\n            },\n    \n            // https://github.com/stomita/ios-imagefile-megapixel/\n            // blob/master/src/megapix-image.js\n            _renderImageToCanvas: (function() {\n    \n                // 如果不是ios, 不需要这么复杂！\n                if ( !Base.os.ios ) {\n                    return function( canvas ) {\n                        var args = Base.slice( arguments, 1 ),\n                            ctx = canvas.getContext('2d');\n    \n                        ctx.drawImage.apply( ctx, args );\n                    };\n                }\n    \n                /**\n                 * Detecting vertical squash in loaded image.\n                 * Fixes a bug which squash image vertically while drawing into\n                 * canvas for some images.\n                 */\n                function detectVerticalSquash( img, iw, ih ) {\n                    var canvas = document.createElement('canvas'),\n                        ctx = canvas.getContext('2d'),\n                        sy = 0,\n                        ey = ih,\n                        py = ih,\n                        data, alpha, ratio;\n    \n    \n                    canvas.width = 1;\n                    canvas.height = ih;\n                    ctx.drawImage( img, 0, 0 );\n                    data = ctx.getImageData( 0, 0, 1, ih ).data;\n    \n                    // search image edge pixel position in case\n                    // it is squashed vertically.\n                    while ( py > sy ) {\n                        alpha = data[ (py - 1) * 4 + 3 ];\n    \n                        if ( alpha === 0 ) {\n                            ey = py;\n                        } else {\n                            sy = py;\n                        }\n    \n                        py = (ey + sy) >> 1;\n                    }\n    \n                    ratio = (py / ih);\n                    return (ratio === 0) ? 1 : ratio;\n                }\n    \n                // fix ie7 bug\n                // http://stackoverflow.com/questions/11929099/\n                // html5-canvas-drawimage-ratio-bug-ios\n                if ( Base.os.ios >= 7 ) {\n                    return function( canvas, img, x, y, w, h ) {\n                        var iw = img.naturalWidth,\n                            ih = img.naturalHeight,\n                            vertSquashRatio = detectVerticalSquash( img, iw, ih );\n    \n                        return canvas.getContext('2d').drawImage( img, 0, 0,\n                                iw * vertSquashRatio, ih * vertSquashRatio,\n                                x, y, w, h );\n                    };\n                }\n    \n                /**\n                 * Detect subsampling in loaded image.\n                 * In iOS, larger images than 2M pixels may be\n                 * subsampled in rendering.\n                 */\n                function detectSubsampling( img ) {\n                    var iw = img.naturalWidth,\n                        ih = img.naturalHeight,\n                        canvas, ctx;\n    \n                    // subsampling may happen overmegapixel image\n                    if ( iw * ih > 1024 * 1024 ) {\n                        canvas = document.createElement('canvas');\n                        canvas.width = canvas.height = 1;\n                        ctx = canvas.getContext('2d');\n                        ctx.drawImage( img, -iw + 1, 0 );\n    \n                        // subsampled image becomes half smaller in rendering size.\n                        // check alpha channel value to confirm image is covering\n                        // edge pixel or not. if alpha value is 0\n                        // image is not covering, hence subsampled.\n                        return ctx.getImageData( 0, 0, 1, 1 ).data[ 3 ] === 0;\n                    } else {\n                        return false;\n                    }\n                }\n    \n    \n                return function( canvas, img, x, y, width, height ) {\n                    var iw = img.naturalWidth,\n                        ih = img.naturalHeight,\n                        ctx = canvas.getContext('2d'),\n                        subsampled = detectSubsampling( img ),\n                        doSquash = this.type === 'image/jpeg',\n                        d = 1024,\n                        sy = 0,\n                        dy = 0,\n                        tmpCanvas, tmpCtx, vertSquashRatio, dw, dh, sx, dx;\n    \n                    if ( subsampled ) {\n                        iw /= 2;\n                        ih /= 2;\n                    }\n    \n                    ctx.save();\n                    tmpCanvas = document.createElement('canvas');\n                    tmpCanvas.width = tmpCanvas.height = d;\n    \n                    tmpCtx = tmpCanvas.getContext('2d');\n                    vertSquashRatio = doSquash ?\n                            detectVerticalSquash( img, iw, ih ) : 1;\n    \n                    dw = Math.ceil( d * width / iw );\n                    dh = Math.ceil( d * height / ih / vertSquashRatio );\n    \n                    while ( sy < ih ) {\n                        sx = 0;\n                        dx = 0;\n                        while ( sx < iw ) {\n                            tmpCtx.clearRect( 0, 0, d, d );\n                            tmpCtx.drawImage( img, -sx, -sy );\n                            ctx.drawImage( tmpCanvas, 0, 0, d, d,\n                                    x + dx, y + dy, dw, dh );\n                            sx += d;\n                            dx += dw;\n                        }\n                        sy += d;\n                        dy += dh;\n                    }\n                    ctx.restore();\n                    tmpCanvas = tmpCtx = null;\n                };\n            })()\n        });\n    });\n    /**\n     * @fileOverview Transport\n     * @todo 支持chunked传输，优势：\n     * 可以将大文件分成小块，挨个传输，可以提高大文件成功率，当失败的时候，也只需要重传那小部分，\n     * 而不需要重头再传一次。另外断点续传也需要用chunked方式。\n     */\n    define('runtime/html5/transport',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var noop = Base.noop,\n            $ = Base.$;\n    \n        return Html5Runtime.register( 'Transport', {\n            init: function() {\n                this._status = 0;\n                this._response = null;\n            },\n    \n            send: function() {\n                var owner = this.owner,\n                    opts = this.options,\n                    xhr = this._initAjax(),\n                    blob = owner._blob,\n                    server = opts.server,\n                    formData, binary, fr;\n    \n                if ( opts.sendAsBinary ) {\n                    server += (/\\?/.test( server ) ? '&' : '?') +\n                            $.param( owner._formData );\n    \n                    binary = blob.getSource();\n                } else {\n                    formData = new FormData();\n                    $.each( owner._formData, function( k, v ) {\n                        formData.append( k, v );\n                    });\n    \n                    formData.append( opts.fileVal, blob.getSource(),\n                            opts.filename || owner._formData.name || '' );\n                }\n    \n                if ( opts.withCredentials && 'withCredentials' in xhr ) {\n                    xhr.open( opts.method, server, true );\n                    xhr.withCredentials = true;\n                } else {\n                    xhr.open( opts.method, server );\n                }\n    \n                this._setRequestHeader( xhr, opts.headers );\n    \n                if ( binary ) {\n                    // 强制设置成 content-type 为文件流。\n                    xhr.overrideMimeType &&\n                            xhr.overrideMimeType('application/octet-stream');\n    \n                    // android直接发送blob会导致服务端接收到的是空文件。\n                    // bug详情。\n                    // https://code.google.com/p/android/issues/detail?id=39882\n                    // 所以先用fileReader读取出来再通过arraybuffer的方式发送。\n                    if ( Base.os.android ) {\n                        fr = new FileReader();\n    \n                        fr.onload = function() {\n                            xhr.send( this.result );\n                            fr = fr.onload = null;\n                        };\n    \n                        fr.readAsArrayBuffer( binary );\n                    } else {\n                        xhr.send( binary );\n                    }\n                } else {\n                    xhr.send( formData );\n                }\n            },\n    \n            getResponse: function() {\n                return this._response;\n            },\n    \n            getResponseAsJson: function() {\n                return this._parseJson( this._response );\n            },\n    \n            getStatus: function() {\n                return this._status;\n            },\n    \n            abort: function() {\n                var xhr = this._xhr;\n    \n                if ( xhr ) {\n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    xhr.abort();\n    \n                    this._xhr = xhr = null;\n                }\n            },\n    \n            destroy: function() {\n                this.abort();\n            },\n    \n            _initAjax: function() {\n                var me = this,\n                    xhr = new XMLHttpRequest(),\n                    opts = this.options;\n    \n                if ( opts.withCredentials && !('withCredentials' in xhr) &&\n                        typeof XDomainRequest !== 'undefined' ) {\n                    xhr = new XDomainRequest();\n                }\n    \n                xhr.upload.onprogress = function( e ) {\n                    var percentage = 0;\n    \n                    if ( e.lengthComputable ) {\n                        percentage = e.loaded / e.total;\n                    }\n    \n                    return me.trigger( 'progress', percentage );\n                };\n    \n                xhr.onreadystatechange = function() {\n    \n                    if ( xhr.readyState !== 4 ) {\n                        return;\n                    }\n    \n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    me._xhr = null;\n                    me._status = xhr.status;\n    \n                    if ( xhr.status >= 200 && xhr.status < 300 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger('load');\n                    } else if ( xhr.status >= 500 && xhr.status < 600 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger( 'error', 'server' );\n                    }\n    \n    \n                    return me.trigger( 'error', me._status ? 'http' : 'abort' );\n                };\n    \n                me._xhr = xhr;\n                return xhr;\n            },\n    \n            _setRequestHeader: function( xhr, headers ) {\n                $.each( headers, function( key, val ) {\n                    xhr.setRequestHeader( key, val );\n                });\n            },\n    \n            _parseJson: function( str ) {\n                var json;\n    \n                try {\n                    json = JSON.parse( str );\n                } catch ( ex ) {\n                    json = {};\n                }\n    \n                return json;\n            }\n        });\n    });\n    /**\n     * @fileOverview 只有html5实现的文件版本。\n     */\n    define('preset/html5only',[\n        'base',\n    \n        // widgets\n        'widgets/filednd',\n        'widgets/filepaste',\n        'widgets/filepicker',\n        'widgets/image',\n        'widgets/queue',\n        'widgets/runtime',\n        'widgets/upload',\n        'widgets/validator',\n    \n        // runtimes\n        // html5\n        'runtime/html5/blob',\n        'runtime/html5/dnd',\n        'runtime/html5/filepaste',\n        'runtime/html5/filepicker',\n        'runtime/html5/imagemeta/exif',\n        'runtime/html5/image',\n        'runtime/html5/transport'\n    ], function( Base ) {\n        return Base;\n    });\n    define('webuploader',[\n        'preset/html5only'\n    ], function( preset ) {\n        return preset;\n    });\n    return require('webuploader');\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/webuploader/webuploader.js",
    "content": "/*! WebUploader 0.1.5 */\n\n\n/**\n * @fileOverview 让内部各个部件的代码可以用[amd](https://github.com/amdjs/amdjs-api/wiki/AMD)模块定义方式组织起来。\n *\n * AMD API 内部的简单不完全实现，请忽略。只有当WebUploader被合并成一个文件的时候才会引入。\n */\n(function( root, factory ) {\n    var modules = {},\n\n        // 内部require, 简单不完全实现。\n        // https://github.com/amdjs/amdjs-api/wiki/require\n        _require = function( deps, callback ) {\n            var args, len, i;\n\n            // 如果deps不是数组，则直接返回指定module\n            if ( typeof deps === 'string' ) {\n                return getModule( deps );\n            } else {\n                args = [];\n                for( len = deps.length, i = 0; i < len; i++ ) {\n                    args.push( getModule( deps[ i ] ) );\n                }\n\n                return callback.apply( null, args );\n            }\n        },\n\n        // 内部define，暂时不支持不指定id.\n        _define = function( id, deps, factory ) {\n            if ( arguments.length === 2 ) {\n                factory = deps;\n                deps = null;\n            }\n\n            _require( deps || [], function() {\n                setModule( id, factory, arguments );\n            });\n        },\n\n        // 设置module, 兼容CommonJs写法。\n        setModule = function( id, factory, args ) {\n            var module = {\n                    exports: factory\n                },\n                returned;\n\n            if ( typeof factory === 'function' ) {\n                args.length || (args = [ _require, module.exports, module ]);\n                returned = factory.apply( null, args );\n                returned !== undefined && (module.exports = returned);\n            }\n\n            modules[ id ] = module.exports;\n        },\n\n        // 根据id获取module\n        getModule = function( id ) {\n            var module = modules[ id ] || root[ id ];\n\n            if ( !module ) {\n                throw new Error( '`' + id + '` is undefined' );\n            }\n\n            return module;\n        },\n\n        // 将所有modules，将路径ids装换成对象。\n        exportsTo = function( obj ) {\n            var key, host, parts, part, last, ucFirst;\n\n            // make the first character upper case.\n            ucFirst = function( str ) {\n                return str && (str.charAt( 0 ).toUpperCase() + str.substr( 1 ));\n            };\n\n            for ( key in modules ) {\n                host = obj;\n\n                if ( !modules.hasOwnProperty( key ) ) {\n                    continue;\n                }\n\n                parts = key.split('/');\n                last = ucFirst( parts.pop() );\n\n                while( (part = ucFirst( parts.shift() )) ) {\n                    host[ part ] = host[ part ] || {};\n                    host = host[ part ];\n                }\n\n                host[ last ] = modules[ key ];\n            }\n\n            return obj;\n        },\n\n        makeExport = function( dollar ) {\n            root.__dollar = dollar;\n\n            // exports every module.\n            return exportsTo( factory( root, _define, _require ) );\n        },\n\n        origin;\n\n    if ( typeof module === 'object' && typeof module.exports === 'object' ) {\n\n        // For CommonJS and CommonJS-like environments where a proper window is present,\n        module.exports = makeExport();\n    } else if ( typeof define === 'function' && define.amd ) {\n\n        // Allow using this built library as an AMD module\n        // in another project. That other project will only\n        // see this AMD call, not the internal modules in\n        // the closure below.\n        define([ 'jquery' ], makeExport );\n    } else {\n\n        // Browser globals case. Just assign the\n        // result to a property on the global.\n        origin = root.WebUploader;\n        root.WebUploader = makeExport();\n        root.WebUploader.noConflict = function() {\n            root.WebUploader = origin;\n        };\n    }\n})( window, function( window, define, require ) {\n\n\n    /**\n     * @fileOverview jQuery or Zepto\n     */\n    define('dollar-third',[],function() {\n        var $ = window.__dollar || window.jQuery || window.Zepto;\n    \n        if ( !$ ) {\n            throw new Error('jQuery or Zepto not found!');\n        }\n    \n        return $;\n    });\n    /**\n     * @fileOverview Dom 操作相关\n     */\n    define('dollar',[\n        'dollar-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 使用jQuery的Promise\n     */\n    define('promise-third',[\n        'dollar'\n    ], function( $ ) {\n        return {\n            Deferred: $.Deferred,\n            when: $.when,\n    \n            isPromise: function( anything ) {\n                return anything && typeof anything.then === 'function';\n            }\n        };\n    });\n    /**\n     * @fileOverview Promise/A+\n     */\n    define('promise',[\n        'promise-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 基础类方法。\n     */\n    \n    /**\n     * Web Uploader内部类的详细说明，以下提及的功能类，都可以在`WebUploader`这个变量中访问到。\n     *\n     * As you know, Web Uploader的每个文件都是用过[AMD](https://github.com/amdjs/amdjs-api/wiki/AMD)规范中的`define`组织起来的, 每个Module都会有个module id.\n     * 默认module id为该文件的路径，而此路径将会转化成名字空间存放在WebUploader中。如：\n     *\n     * * module `base`：WebUploader.Base\n     * * module `file`: WebUploader.File\n     * * module `lib/dnd`: WebUploader.Lib.Dnd\n     * * module `runtime/html5/dnd`: WebUploader.Runtime.Html5.Dnd\n     *\n     *\n     * 以下文档中对类的使用可能省略掉了`WebUploader`前缀。\n     * @module WebUploader\n     * @title WebUploader API文档\n     */\n    define('base',[\n        'dollar',\n        'promise'\n    ], function( $, promise ) {\n    \n        var noop = function() {},\n            call = Function.call;\n    \n        // http://jsperf.com/uncurrythis\n        // 反科里化\n        function uncurryThis( fn ) {\n            return function() {\n                return call.apply( fn, arguments );\n            };\n        }\n    \n        function bindFn( fn, context ) {\n            return function() {\n                return fn.apply( context, arguments );\n            };\n        }\n    \n        function createObject( proto ) {\n            var f;\n    \n            if ( Object.create ) {\n                return Object.create( proto );\n            } else {\n                f = function() {};\n                f.prototype = proto;\n                return new f();\n            }\n        }\n    \n    \n        /**\n         * 基础类，提供一些简单常用的方法。\n         * @class Base\n         */\n        return {\n    \n            /**\n             * @property {String} version 当前版本号。\n             */\n            version: '0.1.5',\n    \n            /**\n             * @property {jQuery|Zepto} $ 引用依赖的jQuery或者Zepto对象。\n             */\n            $: $,\n    \n            Deferred: promise.Deferred,\n    \n            isPromise: promise.isPromise,\n    \n            when: promise.when,\n    \n            /**\n             * @description  简单的浏览器检查结果。\n             *\n             * * `webkit`  webkit版本号，如果浏览器为非webkit内核，此属性为`undefined`。\n             * * `chrome`  chrome浏览器版本号，如果浏览器为chrome，此属性为`undefined`。\n             * * `ie`  ie浏览器版本号，如果浏览器为非ie，此属性为`undefined`。**暂不支持ie10+**\n             * * `firefox`  firefox浏览器版本号，如果浏览器为非firefox，此属性为`undefined`。\n             * * `safari`  safari浏览器版本号，如果浏览器为非safari，此属性为`undefined`。\n             * * `opera`  opera浏览器版本号，如果浏览器为非opera，此属性为`undefined`。\n             *\n             * @property {Object} [browser]\n             */\n            browser: (function( ua ) {\n                var ret = {},\n                    webkit = ua.match( /WebKit\\/([\\d.]+)/ ),\n                    chrome = ua.match( /Chrome\\/([\\d.]+)/ ) ||\n                        ua.match( /CriOS\\/([\\d.]+)/ ),\n    \n                    ie = ua.match( /MSIE\\s([\\d\\.]+)/ ) ||\n                        ua.match( /(?:trident)(?:.*rv:([\\w.]+))?/i ),\n                    firefox = ua.match( /Firefox\\/([\\d.]+)/ ),\n                    safari = ua.match( /Safari\\/([\\d.]+)/ ),\n                    opera = ua.match( /OPR\\/([\\d.]+)/ );\n    \n                webkit && (ret.webkit = parseFloat( webkit[ 1 ] ));\n                chrome && (ret.chrome = parseFloat( chrome[ 1 ] ));\n                ie && (ret.ie = parseFloat( ie[ 1 ] ));\n                firefox && (ret.firefox = parseFloat( firefox[ 1 ] ));\n                safari && (ret.safari = parseFloat( safari[ 1 ] ));\n                opera && (ret.opera = parseFloat( opera[ 1 ] ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * @description  操作系统检查结果。\n             *\n             * * `android`  如果在android浏览器环境下，此值为对应的android版本号，否则为`undefined`。\n             * * `ios` 如果在ios浏览器环境下，此值为对应的ios版本号，否则为`undefined`。\n             * @property {Object} [os]\n             */\n            os: (function( ua ) {\n                var ret = {},\n    \n                    // osx = !!ua.match( /\\(Macintosh\\; Intel / ),\n                    android = ua.match( /(?:Android);?[\\s\\/]+([\\d.]+)?/ ),\n                    ios = ua.match( /(?:iPad|iPod|iPhone).*OS\\s([\\d_]+)/ );\n    \n                // osx && (ret.osx = true);\n                android && (ret.android = parseFloat( android[ 1 ] ));\n                ios && (ret.ios = parseFloat( ios[ 1 ].replace( /_/g, '.' ) ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * 实现类与类之间的继承。\n             * @method inherits\n             * @grammar Base.inherits( super ) => child\n             * @grammar Base.inherits( super, protos ) => child\n             * @grammar Base.inherits( super, protos, statics ) => child\n             * @param  {Class} super 父类\n             * @param  {Object | Function} [protos] 子类或者对象。如果对象中包含constructor，子类将是用此属性值。\n             * @param  {Function} [protos.constructor] 子类构造器，不指定的话将创建个临时的直接执行父类构造器的方法。\n             * @param  {Object} [statics] 静态属性或方法。\n             * @return {Class} 返回子类。\n             * @example\n             * function Person() {\n             *     console.log( 'Super' );\n             * }\n             * Person.prototype.hello = function() {\n             *     console.log( 'hello' );\n             * };\n             *\n             * var Manager = Base.inherits( Person, {\n             *     world: function() {\n             *         console.log( 'World' );\n             *     }\n             * });\n             *\n             * // 因为没有指定构造器，父类的构造器将会执行。\n             * var instance = new Manager();    // => Super\n             *\n             * // 继承子父类的方法\n             * instance.hello();    // => hello\n             * instance.world();    // => World\n             *\n             * // 子类的__super__属性指向父类\n             * console.log( Manager.__super__ === Person );    // => true\n             */\n            inherits: function( Super, protos, staticProtos ) {\n                var child;\n    \n                if ( typeof protos === 'function' ) {\n                    child = protos;\n                    protos = null;\n                } else if ( protos && protos.hasOwnProperty('constructor') ) {\n                    child = protos.constructor;\n                } else {\n                    child = function() {\n                        return Super.apply( this, arguments );\n                    };\n                }\n    \n                // 复制静态方法\n                $.extend( true, child, Super, staticProtos || {} );\n    \n                /* jshint camelcase: false */\n    \n                // 让子类的__super__属性指向父类。\n                child.__super__ = Super.prototype;\n    \n                // 构建原型，添加原型方法或属性。\n                // 暂时用Object.create实现。\n                child.prototype = createObject( Super.prototype );\n                protos && $.extend( true, child.prototype, protos );\n    \n                return child;\n            },\n    \n            /**\n             * 一个不做任何事情的方法。可以用来赋值给默认的callback.\n             * @method noop\n             */\n            noop: noop,\n    \n            /**\n             * 返回一个新的方法，此方法将已指定的`context`来执行。\n             * @grammar Base.bindFn( fn, context ) => Function\n             * @method bindFn\n             * @example\n             * var doSomething = function() {\n             *         console.log( this.name );\n             *     },\n             *     obj = {\n             *         name: 'Object Name'\n             *     },\n             *     aliasFn = Base.bind( doSomething, obj );\n             *\n             *  aliasFn();    // => Object Name\n             *\n             */\n            bindFn: bindFn,\n    \n            /**\n             * 引用Console.log如果存在的话，否则引用一个[空函数noop](#WebUploader:Base.noop)。\n             * @grammar Base.log( args... ) => undefined\n             * @method log\n             */\n            log: (function() {\n                if ( window.console ) {\n                    return bindFn( console.log, console );\n                }\n                return noop;\n            })(),\n    \n            nextTick: (function() {\n    \n                return function( cb ) {\n                    setTimeout( cb, 1 );\n                };\n    \n                // @bug 当浏览器不在当前窗口时就停了。\n                // var next = window.requestAnimationFrame ||\n                //     window.webkitRequestAnimationFrame ||\n                //     window.mozRequestAnimationFrame ||\n                //     function( cb ) {\n                //         window.setTimeout( cb, 1000 / 60 );\n                //     };\n    \n                // // fix: Uncaught TypeError: Illegal invocation\n                // return bindFn( next, window );\n            })(),\n    \n            /**\n             * 被[uncurrythis](http://www.2ality.com/2011/11/uncurrying-this.html)的数组slice方法。\n             * 将用来将非数组对象转化成数组对象。\n             * @grammar Base.slice( target, start[, end] ) => Array\n             * @method slice\n             * @example\n             * function doSomthing() {\n             *     var args = Base.slice( arguments, 1 );\n             *     console.log( args );\n             * }\n             *\n             * doSomthing( 'ignored', 'arg2', 'arg3' );    // => Array [\"arg2\", \"arg3\"]\n             */\n            slice: uncurryThis( [].slice ),\n    \n            /**\n             * 生成唯一的ID\n             * @method guid\n             * @grammar Base.guid() => String\n             * @grammar Base.guid( prefx ) => String\n             */\n            guid: (function() {\n                var counter = 0;\n    \n                return function( prefix ) {\n                    var guid = (+new Date()).toString( 32 ),\n                        i = 0;\n    \n                    for ( ; i < 5; i++ ) {\n                        guid += Math.floor( Math.random() * 65535 ).toString( 32 );\n                    }\n    \n                    return (prefix || 'wu_') + guid + (counter++).toString( 32 );\n                };\n            })(),\n    \n            /**\n             * 格式化文件大小, 输出成带单位的字符串\n             * @method formatSize\n             * @grammar Base.formatSize( size ) => String\n             * @grammar Base.formatSize( size, pointLength ) => String\n             * @grammar Base.formatSize( size, pointLength, units ) => String\n             * @param {Number} size 文件大小\n             * @param {Number} [pointLength=2] 精确到的小数点数。\n             * @param {Array} [units=[ 'B', 'K', 'M', 'G', 'TB' ]] 单位数组。从字节，到千字节，一直往上指定。如果单位数组里面只指定了到了K(千字节)，同时文件大小大于M, 此方法的输出将还是显示成多少K.\n             * @example\n             * console.log( Base.formatSize( 100 ) );    // => 100B\n             * console.log( Base.formatSize( 1024 ) );    // => 1.00K\n             * console.log( Base.formatSize( 1024, 0 ) );    // => 1K\n             * console.log( Base.formatSize( 1024 * 1024 ) );    // => 1.00M\n             * console.log( Base.formatSize( 1024 * 1024 * 1024 ) );    // => 1.00G\n             * console.log( Base.formatSize( 1024 * 1024 * 1024, 0, ['B', 'KB', 'MB'] ) );    // => 1024MB\n             */\n            formatSize: function( size, pointLength, units ) {\n                var unit;\n    \n                units = units || [ 'B', 'K', 'M', 'G', 'TB' ];\n    \n                while ( (unit = units.shift()) && size > 1024 ) {\n                    size = size / 1024;\n                }\n    \n                return (unit === 'B' ? size : size.toFixed( pointLength || 2 )) +\n                        unit;\n            }\n        };\n    });\n    /**\n     * 事件处理类，可以独立使用，也可以扩展给对象使用。\n     * @fileOverview Mediator\n     */\n    define('mediator',[\n        'base'\n    ], function( Base ) {\n        var $ = Base.$,\n            slice = [].slice,\n            separator = /\\s+/,\n            protos;\n    \n        // 根据条件过滤出事件handlers.\n        function findHandlers( arr, name, callback, context ) {\n            return $.grep( arr, function( handler ) {\n                return handler &&\n                        (!name || handler.e === name) &&\n                        (!callback || handler.cb === callback ||\n                        handler.cb._cb === callback) &&\n                        (!context || handler.ctx === context);\n            });\n        }\n    \n        function eachEvent( events, callback, iterator ) {\n            // 不支持对象，只支持多个event用空格隔开\n            $.each( (events || '').split( separator ), function( _, key ) {\n                iterator( key, callback );\n            });\n        }\n    \n        function triggerHanders( events, args ) {\n            var stoped = false,\n                i = -1,\n                len = events.length,\n                handler;\n    \n            while ( ++i < len ) {\n                handler = events[ i ];\n    \n                if ( handler.cb.apply( handler.ctx2, args ) === false ) {\n                    stoped = true;\n                    break;\n                }\n            }\n    \n            return !stoped;\n        }\n    \n        protos = {\n    \n            /**\n             * 绑定事件。\n             *\n             * `callback`方法在执行时，arguments将会来源于trigger的时候携带的参数。如\n             * ```javascript\n             * var obj = {};\n             *\n             * // 使得obj有事件行为\n             * Mediator.installTo( obj );\n             *\n             * obj.on( 'testa', function( arg1, arg2 ) {\n             *     console.log( arg1, arg2 ); // => 'arg1', 'arg2'\n             * });\n             *\n             * obj.trigger( 'testa', 'arg1', 'arg2' );\n             * ```\n             *\n             * 如果`callback`中，某一个方法`return false`了，则后续的其他`callback`都不会被执行到。\n             * 切会影响到`trigger`方法的返回值，为`false`。\n             *\n             * `on`还可以用来添加一个特殊事件`all`, 这样所有的事件触发都会响应到。同时此类`callback`中的arguments有一个不同处，\n             * 就是第一个参数为`type`，记录当前是什么事件在触发。此类`callback`的优先级比脚低，会再正常`callback`执行完后触发。\n             * ```javascript\n             * obj.on( 'all', function( type, arg1, arg2 ) {\n             *     console.log( type, arg1, arg2 ); // => 'testa', 'arg1', 'arg2'\n             * });\n             * ```\n             *\n             * @method on\n             * @grammar on( name, callback[, context] ) => self\n             * @param  {String}   name     事件名，支持多个事件用空格隔开\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             * @class Mediator\n             */\n            on: function( name, callback, context ) {\n                var me = this,\n                    set;\n    \n                if ( !callback ) {\n                    return this;\n                }\n    \n                set = this._events || (this._events = []);\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var handler = { e: name };\n    \n                    handler.cb = callback;\n                    handler.ctx = context;\n                    handler.ctx2 = context || me;\n                    handler.id = set.length;\n    \n                    set.push( handler );\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 绑定事件，且当handler执行完后，自动解除绑定。\n             * @method once\n             * @grammar once( name, callback[, context] ) => self\n             * @param  {String}   name     事件名\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            once: function( name, callback, context ) {\n                var me = this;\n    \n                if ( !callback ) {\n                    return me;\n                }\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var once = function() {\n                            me.off( name, once );\n                            return callback.apply( context || me, arguments );\n                        };\n    \n                    once._cb = callback;\n                    me.on( name, once, context );\n                });\n    \n                return me;\n            },\n    \n            /**\n             * 解除事件绑定\n             * @method off\n             * @grammar off( [name[, callback[, context] ] ] ) => self\n             * @param  {String}   [name]     事件名\n             * @param  {Function} [callback] 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            off: function( name, cb, ctx ) {\n                var events = this._events;\n    \n                if ( !events ) {\n                    return this;\n                }\n    \n                if ( !name && !cb && !ctx ) {\n                    this._events = [];\n                    return this;\n                }\n    \n                eachEvent( name, cb, function( name, cb ) {\n                    $.each( findHandlers( events, name, cb, ctx ), function() {\n                        delete events[ this.id ];\n                    });\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 触发事件\n             * @method trigger\n             * @grammar trigger( name[, args...] ) => self\n             * @param  {String}   type     事件名\n             * @param  {*} [...] 任意参数\n             * @return {Boolean} 如果handler中return false了，则返回false, 否则返回true\n             */\n            trigger: function( type ) {\n                var args, events, allEvents;\n    \n                if ( !this._events || !type ) {\n                    return this;\n                }\n    \n                args = slice.call( arguments, 1 );\n                events = findHandlers( this._events, type );\n                allEvents = findHandlers( this._events, 'all' );\n    \n                return triggerHanders( events, args ) &&\n                        triggerHanders( allEvents, arguments );\n            }\n        };\n    \n        /**\n         * 中介者，它本身是个单例，但可以通过[installTo](#WebUploader:Mediator:installTo)方法，使任何对象具备事件行为。\n         * 主要目的是负责模块与模块之间的合作，降低耦合度。\n         *\n         * @class Mediator\n         */\n        return $.extend({\n    \n            /**\n             * 可以通过这个接口，使任何对象具备事件功能。\n             * @method installTo\n             * @param  {Object} obj 需要具备事件行为的对象。\n             * @return {Object} 返回obj.\n             */\n            installTo: function( obj ) {\n                return $.extend( obj, protos );\n            }\n    \n        }, protos );\n    });\n    /**\n     * @fileOverview Uploader上传类\n     */\n    define('uploader',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$;\n    \n        /**\n         * 上传入口类。\n         * @class Uploader\n         * @constructor\n         * @grammar new Uploader( opts ) => Uploader\n         * @example\n         * var uploader = WebUploader.Uploader({\n         *     swf: 'path_of_swf/Uploader.swf',\n         *\n         *     // 开起分片上传。\n         *     chunked: true\n         * });\n         */\n        function Uploader( opts ) {\n            this.options = $.extend( true, {}, Uploader.options, opts );\n            this._init( this.options );\n        }\n    \n        // default Options\n        // widgets中有相应扩展\n        Uploader.options = {};\n        Mediator.installTo( Uploader.prototype );\n    \n        // 批量添加纯命令式方法。\n        $.each({\n            upload: 'start-upload',\n            stop: 'stop-upload',\n            getFile: 'get-file',\n            getFiles: 'get-files',\n            addFile: 'add-file',\n            addFiles: 'add-file',\n            sort: 'sort-files',\n            removeFile: 'remove-file',\n            cancelFile: 'cancel-file',\n            skipFile: 'skip-file',\n            retry: 'retry',\n            isInProgress: 'is-in-progress',\n            makeThumb: 'make-thumb',\n            md5File: 'md5-file',\n            getDimension: 'get-dimension',\n            addButton: 'add-btn',\n            predictRuntimeType: 'predict-runtime-type',\n            refresh: 'refresh',\n            disable: 'disable',\n            enable: 'enable',\n            reset: 'reset'\n        }, function( fn, command ) {\n            Uploader.prototype[ fn ] = function() {\n                return this.request( command, arguments );\n            };\n        });\n    \n        $.extend( Uploader.prototype, {\n            state: 'pending',\n    \n            _init: function( opts ) {\n                var me = this;\n    \n                me.request( 'init', opts, function() {\n                    me.state = 'ready';\n                    me.trigger('ready');\n                });\n            },\n    \n            /**\n             * 获取或者设置Uploader配置项。\n             * @method option\n             * @grammar option( key ) => *\n             * @grammar option( key, val ) => self\n             * @example\n             *\n             * // 初始状态图片上传前不会压缩\n             * var uploader = new WebUploader.Uploader({\n             *     compress: null;\n             * });\n             *\n             * // 修改后图片上传前，尝试将图片压缩到1600 * 1600\n             * uploader.option( 'compress', {\n             *     width: 1600,\n             *     height: 1600\n             * });\n             */\n            option: function( key, val ) {\n                var opts = this.options;\n    \n                // setter\n                if ( arguments.length > 1 ) {\n    \n                    if ( $.isPlainObject( val ) &&\n                            $.isPlainObject( opts[ key ] ) ) {\n                        $.extend( opts[ key ], val );\n                    } else {\n                        opts[ key ] = val;\n                    }\n    \n                } else {    // getter\n                    return key ? opts[ key ] : opts;\n                }\n            },\n    \n            /**\n             * 获取文件统计信息。返回一个包含一下信息的对象。\n             * * `successNum` 上传成功的文件数\n             * * `progressNum` 上传中的文件数\n             * * `cancelNum` 被删除的文件数\n             * * `invalidNum` 无效的文件数\n             * * `uploadFailNum` 上传失败的文件数\n             * * `queueNum` 还在队列中的文件数\n             * * `interruptNum` 被暂停的文件数\n             * @method getStats\n             * @grammar getStats() => Object\n             */\n            getStats: function() {\n                // return this._mgr.getStats.apply( this._mgr, arguments );\n                var stats = this.request('get-stats');\n    \n                return stats ? {\n                    successNum: stats.numOfSuccess,\n                    progressNum: stats.numOfProgress,\n    \n                    // who care?\n                    // queueFailNum: 0,\n                    cancelNum: stats.numOfCancel,\n                    invalidNum: stats.numOfInvalid,\n                    uploadFailNum: stats.numOfUploadFailed,\n                    queueNum: stats.numOfQueue,\n                    interruptNum: stats.numofInterrupt\n                } : {};\n            },\n    \n            // 需要重写此方法来来支持opts.onEvent和instance.onEvent的处理器\n            trigger: function( type/*, args...*/ ) {\n                var args = [].slice.call( arguments, 1 ),\n                    opts = this.options,\n                    name = 'on' + type.substring( 0, 1 ).toUpperCase() +\n                        type.substring( 1 );\n    \n                if (\n                        // 调用通过on方法注册的handler.\n                        Mediator.trigger.apply( this, arguments ) === false ||\n    \n                        // 调用opts.onEvent\n                        $.isFunction( opts[ name ] ) &&\n                        opts[ name ].apply( this, args ) === false ||\n    \n                        // 调用this.onEvent\n                        $.isFunction( this[ name ] ) &&\n                        this[ name ].apply( this, args ) === false ||\n    \n                        // 广播所有uploader的事件。\n                        Mediator.trigger.apply( Mediator,\n                        [ this, type ].concat( args ) ) === false ) {\n    \n                    return false;\n                }\n    \n                return true;\n            },\n    \n            /**\n             * 销毁 webuploader 实例\n             * @method destroy\n             * @grammar destroy() => undefined\n             */\n            destroy: function() {\n                this.request( 'destroy', arguments );\n                this.off();\n            },\n    \n            // widgets/widget.js将补充此方法的详细文档。\n            request: Base.noop\n        });\n    \n        /**\n         * 创建Uploader实例，等同于new Uploader( opts );\n         * @method create\n         * @class Base\n         * @static\n         * @grammar Base.create( opts ) => Uploader\n         */\n        Base.create = Uploader.create = function( opts ) {\n            return new Uploader( opts );\n        };\n    \n        // 暴露Uploader，可以通过它来扩展业务逻辑。\n        Base.Uploader = Uploader;\n    \n        return Uploader;\n    });\n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/runtime',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            factories = {},\n    \n            // 获取对象的第一个key\n            getFirstKey = function( obj ) {\n                for ( var key in obj ) {\n                    if ( obj.hasOwnProperty( key ) ) {\n                        return key;\n                    }\n                }\n                return null;\n            };\n    \n        // 接口类。\n        function Runtime( options ) {\n            this.options = $.extend({\n                container: document.body\n            }, options );\n            this.uid = Base.guid('rt_');\n        }\n    \n        $.extend( Runtime.prototype, {\n    \n            getContainer: function() {\n                var opts = this.options,\n                    parent, container;\n    \n                if ( this._container ) {\n                    return this._container;\n                }\n    \n                parent = $( opts.container || document.body );\n                container = $( document.createElement('div') );\n    \n                container.attr( 'id', 'rt_' + this.uid );\n                container.css({\n                    position: 'absolute',\n                    top: '0px',\n                    left: '0px',\n                    width: '1px',\n                    height: '1px',\n                    overflow: 'hidden'\n                });\n    \n                parent.append( container );\n                parent.addClass('webuploader-container');\n                this._container = container;\n                this._parent = parent;\n                return container;\n            },\n    \n            init: Base.noop,\n            exec: Base.noop,\n    \n            destroy: function() {\n                this._container && this._container.remove();\n                this._parent && this._parent.removeClass('webuploader-container');\n                this.off();\n            }\n        });\n    \n        Runtime.orders = 'html5,flash';\n    \n    \n        /**\n         * 添加Runtime实现。\n         * @param {String} type    类型\n         * @param {Runtime} factory 具体Runtime实现。\n         */\n        Runtime.addRuntime = function( type, factory ) {\n            factories[ type ] = factory;\n        };\n    \n        Runtime.hasRuntime = function( type ) {\n            return !!(type ? factories[ type ] : getFirstKey( factories ));\n        };\n    \n        Runtime.create = function( opts, orders ) {\n            var type, runtime;\n    \n            orders = orders || Runtime.orders;\n            $.each( orders.split( /\\s*,\\s*/g ), function() {\n                if ( factories[ this ] ) {\n                    type = this;\n                    return false;\n                }\n            });\n    \n            type = type || getFirstKey( factories );\n    \n            if ( !type ) {\n                throw new Error('Runtime Error');\n            }\n    \n            runtime = new factories[ type ]( opts );\n            return runtime;\n        };\n    \n        Mediator.installTo( Runtime.prototype );\n        return Runtime;\n    });\n    \n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/client',[\n        'base',\n        'mediator',\n        'runtime/runtime'\n    ], function( Base, Mediator, Runtime ) {\n    \n        var cache;\n    \n        cache = (function() {\n            var obj = {};\n    \n            return {\n                add: function( runtime ) {\n                    obj[ runtime.uid ] = runtime;\n                },\n    \n                get: function( ruid, standalone ) {\n                    var i;\n    \n                    if ( ruid ) {\n                        return obj[ ruid ];\n                    }\n    \n                    for ( i in obj ) {\n                        // 有些类型不能重用，比如filepicker.\n                        if ( standalone && obj[ i ].__standalone ) {\n                            continue;\n                        }\n    \n                        return obj[ i ];\n                    }\n    \n                    return null;\n                },\n    \n                remove: function( runtime ) {\n                    delete obj[ runtime.uid ];\n                }\n            };\n        })();\n    \n        function RuntimeClient( component, standalone ) {\n            var deferred = Base.Deferred(),\n                runtime;\n    \n            this.uid = Base.guid('client_');\n    \n            // 允许runtime没有初始化之前，注册一些方法在初始化后执行。\n            this.runtimeReady = function( cb ) {\n                return deferred.done( cb );\n            };\n    \n            this.connectRuntime = function( opts, cb ) {\n    \n                // already connected.\n                if ( runtime ) {\n                    throw new Error('already connected!');\n                }\n    \n                deferred.done( cb );\n    \n                if ( typeof opts === 'string' && cache.get( opts ) ) {\n                    runtime = cache.get( opts );\n                }\n    \n                // 像filePicker只能独立存在，不能公用。\n                runtime = runtime || cache.get( null, standalone );\n    \n                // 需要创建\n                if ( !runtime ) {\n                    runtime = Runtime.create( opts, opts.runtimeOrder );\n                    runtime.__promise = deferred.promise();\n                    runtime.once( 'ready', deferred.resolve );\n                    runtime.init();\n                    cache.add( runtime );\n                    runtime.__client = 1;\n                } else {\n                    // 来自cache\n                    Base.$.extend( runtime.options, opts );\n                    runtime.__promise.then( deferred.resolve );\n                    runtime.__client++;\n                }\n    \n                standalone && (runtime.__standalone = standalone);\n                return runtime;\n            };\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.disconnectRuntime = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                runtime.__client--;\n    \n                if ( runtime.__client <= 0 ) {\n                    cache.remove( runtime );\n                    delete runtime.__promise;\n                    runtime.destroy();\n                }\n    \n                runtime = null;\n            };\n    \n            this.exec = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                var args = Base.slice( arguments );\n                component && args.unshift( component );\n    \n                return runtime.exec.apply( this, args );\n            };\n    \n            this.getRuid = function() {\n                return runtime && runtime.uid;\n            };\n    \n            this.destroy = (function( destroy ) {\n                return function() {\n                    destroy && destroy.apply( this, arguments );\n                    this.trigger('destroy');\n                    this.off();\n                    this.exec('destroy');\n                    this.disconnectRuntime();\n                };\n            })( this.destroy );\n        }\n    \n        Mediator.installTo( RuntimeClient.prototype );\n        return RuntimeClient;\n    });\n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/dnd',[\n        'base',\n        'mediator',\n        'runtime/client'\n    ], function( Base, Mediator, RuntimeClent ) {\n    \n        var $ = Base.$;\n    \n        function DragAndDrop( opts ) {\n            opts = this.options = $.extend({}, DragAndDrop.options, opts );\n    \n            opts.container = $( opts.container );\n    \n            if ( !opts.container.length ) {\n                return;\n            }\n    \n            RuntimeClent.call( this, 'DragAndDrop' );\n        }\n    \n        DragAndDrop.options = {\n            accept: null,\n            disableGlobalDnd: false\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: DragAndDrop,\n    \n            init: function() {\n                var me = this;\n    \n                me.connectRuntime( me.options, function() {\n                    me.exec('init');\n                    me.trigger('ready');\n                });\n            }\n        });\n    \n        Mediator.installTo( DragAndDrop.prototype );\n    \n        return DragAndDrop;\n    });\n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/widget',[\n        'base',\n        'uploader'\n    ], function( Base, Uploader ) {\n    \n        var $ = Base.$,\n            _init = Uploader.prototype._init,\n            _destroy = Uploader.prototype.destroy,\n            IGNORE = {},\n            widgetClass = [];\n    \n        function isArrayLike( obj ) {\n            if ( !obj ) {\n                return false;\n            }\n    \n            var length = obj.length,\n                type = $.type( obj );\n    \n            if ( obj.nodeType === 1 && length ) {\n                return true;\n            }\n    \n            return type === 'array' || type !== 'function' && type !== 'string' &&\n                    (length === 0 || typeof length === 'number' && length > 0 &&\n                    (length - 1) in obj);\n        }\n    \n        function Widget( uploader ) {\n            this.owner = uploader;\n            this.options = uploader.options;\n        }\n    \n        $.extend( Widget.prototype, {\n    \n            init: Base.noop,\n    \n            // 类Backbone的事件监听声明，监听uploader实例上的事件\n            // widget直接无法监听事件，事件只能通过uploader来传递\n            invoke: function( apiName, args ) {\n    \n                /*\n                    {\n                        'make-thumb': 'makeThumb'\n                    }\n                 */\n                var map = this.responseMap;\n    \n                // 如果无API响应声明则忽略\n                if ( !map || !(apiName in map) || !(map[ apiName ] in this) ||\n                        !$.isFunction( this[ map[ apiName ] ] ) ) {\n    \n                    return IGNORE;\n                }\n    \n                return this[ map[ apiName ] ].apply( this, args );\n    \n            },\n    \n            /**\n             * 发送命令。当传入`callback`或者`handler`中返回`promise`时。返回一个当所有`handler`中的promise都完成后完成的新`promise`。\n             * @method request\n             * @grammar request( command, args ) => * | Promise\n             * @grammar request( command, args, callback ) => Promise\n             * @for  Uploader\n             */\n            request: function() {\n                return this.owner.request.apply( this.owner, arguments );\n            }\n        });\n    \n        // 扩展Uploader.\n        $.extend( Uploader.prototype, {\n    \n            /**\n             * @property {String | Array} [disableWidgets=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 默认所有 Uploader.register 了的 widget 都会被加载，如果禁用某一部分，请通过此 option 指定黑名单。\n             */\n    \n            // 覆写_init用来初始化widgets\n            _init: function() {\n                var me = this,\n                    widgets = me._widgets = [],\n                    deactives = me.options.disableWidgets || '';\n    \n                $.each( widgetClass, function( _, klass ) {\n                    (!deactives || !~deactives.indexOf( klass._name )) &&\n                        widgets.push( new klass( me ) );\n                });\n    \n                return _init.apply( me, arguments );\n            },\n    \n            request: function( apiName, args, callback ) {\n                var i = 0,\n                    widgets = this._widgets,\n                    len = widgets && widgets.length,\n                    rlts = [],\n                    dfds = [],\n                    widget, rlt, promise, key;\n    \n                args = isArrayLike( args ) ? args : [ args ];\n    \n                for ( ; i < len; i++ ) {\n                    widget = widgets[ i ];\n                    rlt = widget.invoke( apiName, args );\n    \n                    if ( rlt !== IGNORE ) {\n    \n                        // Deferred对象\n                        if ( Base.isPromise( rlt ) ) {\n                            dfds.push( rlt );\n                        } else {\n                            rlts.push( rlt );\n                        }\n                    }\n                }\n    \n                // 如果有callback，则用异步方式。\n                if ( callback || dfds.length ) {\n                    promise = Base.when.apply( Base, dfds );\n                    key = promise.pipe ? 'pipe' : 'then';\n    \n                    // 很重要不能删除。删除了会死循环。\n                    // 保证执行顺序。让callback总是在下一个 tick 中执行。\n                    return promise[ key ](function() {\n                                var deferred = Base.Deferred(),\n                                    args = arguments;\n    \n                                if ( args.length === 1 ) {\n                                    args = args[ 0 ];\n                                }\n    \n                                setTimeout(function() {\n                                    deferred.resolve( args );\n                                }, 1 );\n    \n                                return deferred.promise();\n                            })[ callback ? key : 'done' ]( callback || Base.noop );\n                } else {\n                    return rlts[ 0 ];\n                }\n            },\n    \n            destroy: function() {\n                _destroy.apply( this, arguments );\n                this._widgets = null;\n            }\n        });\n    \n        /**\n         * 添加组件\n         * @grammar Uploader.register(proto);\n         * @grammar Uploader.register(map, proto);\n         * @param  {object} responseMap API 名称与函数实现的映射\n         * @param  {object} proto 组件原型，构造函数通过 constructor 属性定义\n         * @method Uploader.register\n         * @for Uploader\n         * @example\n         * Uploader.register({\n         *     'make-thumb': 'makeThumb'\n         * }, {\n         *     init: function( options ) {},\n         *     makeThumb: function() {}\n         * });\n         *\n         * Uploader.register({\n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         */\n        Uploader.register = Widget.register = function( responseMap, widgetProto ) {\n            var map = { init: 'init', destroy: 'destroy', name: 'anonymous' },\n                klass;\n    \n            if ( arguments.length === 1 ) {\n                widgetProto = responseMap;\n    \n                // 自动生成 map 表。\n                $.each(widgetProto, function(key) {\n                    if ( key[0] === '_' || key === 'name' ) {\n                        key === 'name' && (map.name = widgetProto.name);\n                        return;\n                    }\n    \n                    map[key.replace(/[A-Z]/g, '-$&').toLowerCase()] = key;\n                });\n    \n            } else {\n                map = $.extend( map, responseMap );\n            }\n    \n            widgetProto.responseMap = map;\n            klass = Base.inherits( Widget, widgetProto );\n            klass._name = map.name;\n            widgetClass.push( klass );\n    \n            return klass;\n        };\n    \n        /**\n         * 删除插件，只有在注册时指定了名字的才能被删除。\n         * @grammar Uploader.unRegister(name);\n         * @param  {string} name 组件名字\n         * @method Uploader.unRegister\n         * @for Uploader\n         * @example\n         *\n         * Uploader.register({\n         *     name: 'custom',\n         *     \n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         *\n         * Uploader.unRegister('custom');\n         */\n        Uploader.unRegister = Widget.unRegister = function( name ) {\n            if ( !name || name === 'anonymous' ) {\n                return;\n            }\n            \n            // 删除指定的插件。\n            for ( var i = widgetClass.length; i--; ) {\n                if ( widgetClass[i]._name === name ) {\n                    widgetClass.splice(i, 1)\n                }\n            }\n        };\n    \n        return Widget;\n    });\n    /**\n     * @fileOverview DragAndDrop Widget。\n     */\n    define('widgets/filednd',[\n        'base',\n        'uploader',\n        'lib/dnd',\n        'widgets/widget'\n    ], function( Base, Uploader, Dnd ) {\n        var $ = Base.$;\n    \n        Uploader.options.dnd = '';\n    \n        /**\n         * @property {Selector} [dnd=undefined]  指定Drag And Drop拖拽的容器，如果不指定，则不启动。\n         * @namespace options\n         * @for Uploader\n         */\n        \n        /**\n         * @property {Selector} [disableGlobalDnd=false]  是否禁掉整个页面的拖拽功能，如果不禁用，图片拖进来的时候会默认被浏览器打开。\n         * @namespace options\n         * @for Uploader\n         */\n    \n        /**\n         * @event dndAccept\n         * @param {DataTransferItemList} items DataTransferItem\n         * @description 阻止此事件可以拒绝某些类型的文件拖入进来。目前只有 chrome 提供这样的 API，且只能通过 mime-type 验证。\n         * @for  Uploader\n         */\n        return Uploader.register({\n            name: 'dnd',\n            \n            init: function( opts ) {\n    \n                if ( !opts.dnd ||\n                        this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                var me = this,\n                    deferred = Base.Deferred(),\n                    options = $.extend({}, {\n                        disableGlobalDnd: opts.disableGlobalDnd,\n                        container: opts.dnd,\n                        accept: opts.accept\n                    }),\n                    dnd;\n    \n                this.dnd = dnd = new Dnd( options );\n    \n                dnd.once( 'ready', deferred.resolve );\n                dnd.on( 'drop', function( files ) {\n                    me.request( 'add-file', [ files ]);\n                });\n    \n                // 检测文件是否全部允许添加。\n                dnd.on( 'accept', function( items ) {\n                    return me.owner.trigger( 'dndAccept', items );\n                });\n    \n                dnd.init();\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                this.dnd && this.dnd.destroy();\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepaste',[\n        'base',\n        'mediator',\n        'runtime/client'\n    ], function( Base, Mediator, RuntimeClent ) {\n    \n        var $ = Base.$;\n    \n        function FilePaste( opts ) {\n            opts = this.options = $.extend({}, opts );\n            opts.container = $( opts.container || document.body );\n            RuntimeClent.call( this, 'FilePaste' );\n        }\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePaste,\n    \n            init: function() {\n                var me = this;\n    \n                me.connectRuntime( me.options, function() {\n                    me.exec('init');\n                    me.trigger('ready');\n                });\n            }\n        });\n    \n        Mediator.installTo( FilePaste.prototype );\n    \n        return FilePaste;\n    });\n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/filepaste',[\n        'base',\n        'uploader',\n        'lib/filepaste',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePaste ) {\n        var $ = Base.$;\n    \n        /**\n         * @property {Selector} [paste=undefined]  指定监听paste事件的容器，如果不指定，不启用此功能。此功能为通过粘贴来添加截屏的图片。建议设置为`document.body`.\n         * @namespace options\n         * @for Uploader\n         */\n        return Uploader.register({\n            name: 'paste',\n            \n            init: function( opts ) {\n    \n                if ( !opts.paste ||\n                        this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                var me = this,\n                    deferred = Base.Deferred(),\n                    options = $.extend({}, {\n                        container: opts.paste,\n                        accept: opts.accept\n                    }),\n                    paste;\n    \n                this.paste = paste = new FilePaste( options );\n    \n                paste.once( 'ready', deferred.resolve );\n                paste.on( 'paste', function( files ) {\n                    me.owner.request( 'add-file', [ files ]);\n                });\n                paste.init();\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                this.paste && this.paste.destroy();\n            }\n        });\n    });\n    /**\n     * @fileOverview Blob\n     */\n    define('lib/blob',[\n        'base',\n        'runtime/client'\n    ], function( Base, RuntimeClient ) {\n    \n        function Blob( ruid, source ) {\n            var me = this;\n    \n            me.source = source;\n            me.ruid = ruid;\n            this.size = source.size || 0;\n    \n            // 如果没有指定 mimetype, 但是知道文件后缀。\n            if ( !source.type && this.ext &&\n                    ~'jpg,jpeg,png,gif,bmp'.indexOf( this.ext ) ) {\n                this.type = 'image/' + (this.ext === 'jpg' ? 'jpeg' : this.ext);\n            } else {\n                this.type = source.type || 'application/octet-stream';\n            }\n    \n            RuntimeClient.call( me, 'Blob' );\n            this.uid = source.uid || this.uid;\n    \n            if ( ruid ) {\n                me.connectRuntime( ruid );\n            }\n        }\n    \n        Base.inherits( RuntimeClient, {\n            constructor: Blob,\n    \n            slice: function( start, end ) {\n                return this.exec( 'slice', start, end );\n            },\n    \n            getSource: function() {\n                return this.source;\n            }\n        });\n    \n        return Blob;\n    });\n    /**\n     * 为了统一化Flash的File和HTML5的File而存在。\n     * 以至于要调用Flash里面的File，也可以像调用HTML5版本的File一下。\n     * @fileOverview File\n     */\n    define('lib/file',[\n        'base',\n        'lib/blob'\n    ], function( Base, Blob ) {\n    \n        var uid = 1,\n            rExt = /\\.([^.]+)$/;\n    \n        function File( ruid, file ) {\n            var ext;\n    \n            this.name = file.name || ('untitled' + uid++);\n            ext = rExt.exec( file.name ) ? RegExp.$1.toLowerCase() : '';\n    \n            // todo 支持其他类型文件的转换。\n            // 如果有 mimetype, 但是文件名里面没有找出后缀规律\n            if ( !ext && file.type ) {\n                ext = /\\/(jpg|jpeg|png|gif|bmp)$/i.exec( file.type ) ?\n                        RegExp.$1.toLowerCase() : '';\n                this.name += '.' + ext;\n            }\n    \n            this.ext = ext;\n            this.lastModifiedDate = file.lastModifiedDate ||\n                    (new Date()).toLocaleString();\n    \n            Blob.apply( this, arguments );\n        }\n    \n        return Base.inherits( Blob, File );\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepicker',[\n        'base',\n        'runtime/client',\n        'lib/file'\n    ], function( Base, RuntimeClent, File ) {\n    \n        var $ = Base.$;\n    \n        function FilePicker( opts ) {\n            opts = this.options = $.extend({}, FilePicker.options, opts );\n    \n            opts.container = $( opts.id );\n    \n            if ( !opts.container.length ) {\n                throw new Error('按钮指定错误');\n            }\n    \n            opts.innerHTML = opts.innerHTML || opts.label ||\n                    opts.container.html() || '';\n    \n            opts.button = $( opts.button || document.createElement('div') );\n            opts.button.html( opts.innerHTML );\n            opts.container.html( opts.button );\n    \n            RuntimeClent.call( this, 'FilePicker', true );\n        }\n    \n        FilePicker.options = {\n            button: null,\n            container: null,\n            label: null,\n            innerHTML: null,\n            multiple: true,\n            accept: null,\n            name: 'file'\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePicker,\n    \n            init: function() {\n                var me = this,\n                    opts = me.options,\n                    button = opts.button;\n    \n                button.addClass('webuploader-pick');\n    \n                me.on( 'all', function( type ) {\n                    var files;\n    \n                    switch ( type ) {\n                        case 'mouseenter':\n                            button.addClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'mouseleave':\n                            button.removeClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'change':\n                            files = me.exec('getFiles');\n                            me.trigger( 'select', $.map( files, function( file ) {\n                                file = new File( me.getRuid(), file );\n    \n                                // 记录来源。\n                                file._refer = opts.container;\n                                return file;\n                            }), opts.container );\n                            break;\n                    }\n                });\n    \n                me.connectRuntime( opts, function() {\n                    me.refresh();\n                    me.exec( 'init', opts );\n                    me.trigger('ready');\n                });\n    \n                this._resizeHandler = Base.bindFn( this.refresh, this );\n                $( window ).on( 'resize', this._resizeHandler );\n            },\n    \n            refresh: function() {\n                var shimContainer = this.getRuntime().getContainer(),\n                    button = this.options.button,\n                    width = button.outerWidth ?\n                            button.outerWidth() : button.width(),\n    \n                    height = button.outerHeight ?\n                            button.outerHeight() : button.height(),\n    \n                    pos = button.offset();\n\n                width && height && shimContainer.css({\n                    bottom: 'auto',\n                    right: 'auto',\n                    width: width + 'px',\n                    height: height + 'px'\n                }).offset(pos);\n\n                shimContainer.offset(button.offset());\n            },\n    \n            enable: function() {\n                var btn = this.options.button;\n    \n                btn.removeClass('webuploader-pick-disable');\n                this.refresh();\n            },\n    \n            disable: function() {\n                var btn = this.options.button;\n    \n                this.getRuntime().getContainer().css({\n                    top: '-99999px'\n                });\n    \n                btn.addClass('webuploader-pick-disable');\n            },\n    \n            destroy: function() {\n                var btn = this.options.button;\n                $( window ).off( 'resize', this._resizeHandler );\n                btn.removeClass('webuploader-pick-disable webuploader-pick-hover ' +\n                    'webuploader-pick');\n            }\n        });\n    \n        return FilePicker;\n    });\n    \n    /**\n     * @fileOverview 文件选择相关\n     */\n    define('widgets/filepicker',[\n        'base',\n        'uploader',\n        'lib/filepicker',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePicker ) {\n        var $ = Base.$;\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Selector | Object} [pick=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 指定选择文件的按钮容器，不指定则不创建按钮。\n             *\n             * * `id` {Seletor|dom} 指定选择文件的按钮容器，不指定则不创建按钮。**注意** 这里虽然写的是 id, 但是不是只支持 id, 还支持 class, 或者 dom 节点。\n             * * `label` {String} 请采用 `innerHTML` 代替\n             * * `innerHTML` {String} 指定按钮文字。不指定时优先从指定的容器中看是否自带文字。\n             * * `multiple` {Boolean} 是否开起同时选择多个文件能力。\n             */\n            pick: null,\n    \n            /**\n             * @property {Arroy} [accept=null]\n             * @namespace options\n             * @for Uploader\n             * @description 指定接受哪些类型的文件。 由于目前还有ext转mimeType表，所以这里需要分开指定。\n             *\n             * * `title` {String} 文字描述\n             * * `extensions` {String} 允许的文件后缀，不带点，多个用逗号分割。\n             * * `mimeTypes` {String} 多个用逗号分割。\n             *\n             * 如：\n             *\n             * ```\n             * {\n             *     title: 'Images',\n             *     extensions: 'gif,jpg,jpeg,bmp,png',\n             *     mimeTypes: 'image/*'\n             * }\n             * ```\n             */\n            accept: null/*{\n                title: 'Images',\n                extensions: 'gif,jpg,jpeg,bmp,png',\n                mimeTypes: 'image/*'\n            }*/\n        });\n    \n        return Uploader.register({\n            name: 'picker',\n    \n            init: function( opts ) {\n                this.pickers = [];\n                return opts.pick && this.addBtn( opts.pick );\n            },\n    \n            refresh: function() {\n                $.each( this.pickers, function() {\n                    this.refresh();\n                });\n            },\n    \n            /**\n             * @method addButton\n             * @for Uploader\n             * @grammar addButton( pick ) => Promise\n             * @description\n             * 添加文件选择按钮，如果一个按钮不够，需要调用此方法来添加。参数跟[options.pick](#WebUploader:Uploader:options)一致。\n             * @example\n             * uploader.addButton({\n             *     id: '#btnContainer',\n             *     innerHTML: '选择文件'\n             * });\n             */\n            addBtn: function( pick ) {\n                var me = this,\n                    opts = me.options,\n                    accept = opts.accept,\n                    promises = [];\n    \n                if ( !pick ) {\n                    return;\n                }\n    \n                $.isPlainObject( pick ) || (pick = {\n                    id: pick\n                });\n    \n                $( pick.id ).each(function() {\n                    var options, picker, deferred;\n    \n                    deferred = Base.Deferred();\n    \n                    options = $.extend({}, pick, {\n                        accept: $.isPlainObject( accept ) ? [ accept ] : accept,\n                        swf: opts.swf,\n                        runtimeOrder: opts.runtimeOrder,\n                        id: this\n                    });\n    \n                    picker = new FilePicker( options );\n    \n                    picker.once( 'ready', deferred.resolve );\n                    picker.on( 'select', function( files ) {\n                        me.owner.request( 'add-file', [ files ]);\n                    });\n                    picker.init();\n    \n                    me.pickers.push( picker );\n    \n                    promises.push( deferred.promise() );\n                });\n    \n                return Base.when.apply( Base, promises );\n            },\n    \n            disable: function() {\n                $.each( this.pickers, function() {\n                    this.disable();\n                });\n            },\n    \n            enable: function() {\n                $.each( this.pickers, function() {\n                    this.enable();\n                });\n            },\n    \n            destroy: function() {\n                $.each( this.pickers, function() {\n                    this.destroy();\n                });\n                this.pickers = null;\n            }\n        });\n    });\n    /**\n     * @fileOverview Image\n     */\n    define('lib/image',[\n        'base',\n        'runtime/client',\n        'lib/blob'\n    ], function( Base, RuntimeClient, Blob ) {\n        var $ = Base.$;\n    \n        // 构造器。\n        function Image( opts ) {\n            this.options = $.extend({}, Image.options, opts );\n            RuntimeClient.call( this, 'Image' );\n    \n            this.on( 'load', function() {\n                this._info = this.exec('info');\n                this._meta = this.exec('meta');\n            });\n        }\n    \n        // 默认选项。\n        Image.options = {\n    \n            // 默认的图片处理质量\n            quality: 90,\n    \n            // 是否裁剪\n            crop: false,\n    \n            // 是否保留头部信息\n            preserveHeaders: false,\n    \n            // 是否允许放大。\n            allowMagnify: false\n        };\n    \n        // 继承RuntimeClient.\n        Base.inherits( RuntimeClient, {\n            constructor: Image,\n    \n            info: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._info = val;\n                    return this;\n                }\n    \n                // getter\n                return this._info;\n            },\n    \n            meta: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._meta = val;\n                    return this;\n                }\n    \n                // getter\n                return this._meta;\n            },\n    \n            loadFromBlob: function( blob ) {\n                var me = this,\n                    ruid = blob.getRuid();\n    \n                this.connectRuntime( ruid, function() {\n                    me.exec( 'init', me.options );\n                    me.exec( 'loadFromBlob', blob );\n                });\n            },\n    \n            resize: function() {\n                var args = Base.slice( arguments );\n                return this.exec.apply( this, [ 'resize' ].concat( args ) );\n            },\n    \n            crop: function() {\n                var args = Base.slice( arguments );\n                return this.exec.apply( this, [ 'crop' ].concat( args ) );\n            },\n    \n            getAsDataUrl: function( type ) {\n                return this.exec( 'getAsDataUrl', type );\n            },\n    \n            getAsBlob: function( type ) {\n                var blob = this.exec( 'getAsBlob', type );\n    \n                return new Blob( this.getRuid(), blob );\n            }\n        });\n    \n        return Image;\n    });\n    /**\n     * @fileOverview 图片操作, 负责预览图片和上传前压缩图片\n     */\n    define('widgets/image',[\n        'base',\n        'uploader',\n        'lib/image',\n        'widgets/widget'\n    ], function( Base, Uploader, Image ) {\n    \n        var $ = Base.$,\n            throttle;\n    \n        // 根据要处理的文件大小来节流，一次不能处理太多，会卡。\n        throttle = (function( max ) {\n            var occupied = 0,\n                waiting = [],\n                tick = function() {\n                    var item;\n    \n                    while ( waiting.length && occupied < max ) {\n                        item = waiting.shift();\n                        occupied += item[ 0 ];\n                        item[ 1 ]();\n                    }\n                };\n    \n            return function( emiter, size, cb ) {\n                waiting.push([ size, cb ]);\n                emiter.once( 'destroy', function() {\n                    occupied -= size;\n                    setTimeout( tick, 1 );\n                });\n                setTimeout( tick, 1 );\n            };\n        })( 5 * 1024 * 1024 );\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Object} [thumb]\n             * @namespace options\n             * @for Uploader\n             * @description 配置生成缩略图的选项。\n             *\n             * 默认为：\n             *\n             * ```javascript\n             * {\n             *     width: 110,\n             *     height: 110,\n             *\n             *     // 图片质量，只有type为`image/jpeg`的时候才有效。\n             *     quality: 70,\n             *\n             *     // 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.\n             *     allowMagnify: true,\n             *\n             *     // 是否允许裁剪。\n             *     crop: true,\n             *\n             *     // 为空的话则保留原有图片格式。\n             *     // 否则强制转换成指定的类型。\n             *     type: 'image/jpeg'\n             * }\n             * ```\n             */\n            thumb: {\n                width: 110,\n                height: 110,\n                quality: 70,\n                allowMagnify: true,\n                crop: true,\n                preserveHeaders: false,\n    \n                // 为空的话则保留原有图片格式。\n                // 否则强制转换成指定的类型。\n                // IE 8下面 base64 大小不能超过 32K 否则预览失败，而非 jpeg 编码的图片很可\n                // 能会超过 32k, 所以这里设置成预览的时候都是 image/jpeg\n                type: 'image/jpeg'\n            },\n    \n            /**\n             * @property {Object} [compress]\n             * @namespace options\n             * @for Uploader\n             * @description 配置压缩的图片的选项。如果此选项为`false`, 则图片在上传前不进行压缩。\n             *\n             * 默认为：\n             *\n             * ```javascript\n             * {\n             *     width: 1600,\n             *     height: 1600,\n             *\n             *     // 图片质量，只有type为`image/jpeg`的时候才有效。\n             *     quality: 90,\n             *\n             *     // 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.\n             *     allowMagnify: false,\n             *\n             *     // 是否允许裁剪。\n             *     crop: false,\n             *\n             *     // 是否保留头部meta信息。\n             *     preserveHeaders: true,\n             *\n             *     // 如果发现压缩后文件大小比原来还大，则使用原来图片\n             *     // 此属性可能会影响图片自动纠正功能\n             *     noCompressIfLarger: false,\n             *\n             *     // 单位字节，如果图片大小小于此值，不会采用压缩。\n             *     compressSize: 0\n             * }\n             * ```\n             */\n            compress: {\n                width: 1600,\n                height: 1600,\n                quality: 90,\n                allowMagnify: false,\n                crop: false,\n                preserveHeaders: true\n            }\n        });\n    \n        return Uploader.register({\n    \n            name: 'image',\n\n\n            /**\n             * 生成缩略图，此过程为异步，所以需要传入`callback`。\n             * 通常情况在图片加入队里后调用此方法来生成预览图以增强交互效果。\n             *\n             * 当 width 或者 height 的值介于 0 - 1 时，被当成百分比使用。\n             *\n             * `callback`中可以接收到两个参数。\n             * * 第一个为error，如果生成缩略图有错误，此error将为真。\n             * * 第二个为ret, 缩略图的Data URL值。\n             *\n             * **注意**\n             * Date URL在IE6/7中不支持，所以不用调用此方法了，直接显示一张暂不支持预览图片好了。\n             * 也可以借助服务端，将 base64 数据传给服务端，生成一个临时文件供预览。\n             *\n             * @method makeThumb\n             * @grammar makeThumb( file, callback ) => undefined\n             * @grammar makeThumb( file, callback, width, height ) => undefined\n             * @for Uploader\n             * @example\n             *\n             * uploader.on( 'fileQueued', function( file ) {\n             *     var $li = ...;\n             *\n             *     uploader.makeThumb( file, function( error, ret ) {\n             *         if ( error ) {\n             *             $li.text('预览错误');\n             *         } else {\n             *             $li.append('<img alt=\"\" src=\"' + ret + '\" />');\n             *         }\n             *     });\n             *\n             * });\n             */\n            makeThumb: function( file, cb, width, height ) {\n                var opts, image;\n    \n                file = this.request( 'get-file', file );\n    \n                // 只预览图片格式。\n                if ( !file.type.match( /^image/ ) ) {\n                    cb( true );\n                    return;\n                }\n    \n                opts = $.extend({}, this.options.thumb );\n    \n                // 如果传入的是object.\n                if ( $.isPlainObject( width ) ) {\n                    opts = $.extend( opts, width );\n                    width = null;\n                }\n    \n                width = width || opts.width;\n                height = height || opts.height;\n    \n                image = new Image( opts );\n\n                // 当 resize 完后\n                image.once( 'complete', function() {\n                    cb( false, image.getAsDataUrl( opts.type ) );\n                    image.destroy();\n                });\n    \n                image.once( 'error', function( reason ) {\n                    cb( reason || true );\n                    image.destroy();\n                });\n    \n                throttle( image, file.source.size, function() {\n                    file._info && image.info( file._info );\n                    file._meta && image.meta( file._meta );\n                    image.loadFromBlob( file.source );\n                });\n\n                return image;\n            },\n    \n            beforeSendFile: function( file ) {\n                var opts = this.options.compress || this.options.resize,\n                    compressSize = opts && opts.compressSize || 0,\n                    noCompressIfLarger = opts && opts.noCompressIfLarger || false,\n                    image, deferred;\n    \n                file = this.request( 'get-file', file );\n    \n                // 只压缩 jpeg 图片格式。\n                // gif 可能会丢失针\n                // bmp png 基本上尺寸都不大，且压缩比比较小。\n                if ( !opts || !~'image/jpeg,image/jpg'.indexOf( file.type ) ||\n                        file.size < compressSize ||\n                        file._compressed ) {\n                    return;\n                }\n    \n                opts = $.extend({}, opts );\n                deferred = Base.Deferred();\n    \n                image = new Image( opts );\n    \n                deferred.always(function() {\n                    image.destroy();\n                    image = null;\n                });\n                image.once( 'error', deferred.reject );\n                image.once( 'load', function() {\n                    var width = opts.width,\n                        height = opts.height;\n\n                    file._info = file._info || image.info();\n                    file._meta = file._meta || image.meta();\n    \n                    // 如果 width 的值介于 0 - 1\n                    // 说明设置的是百分比。\n                    if ( width <= 1 && width > 0 ) {\n                        width = file._info.width * width;\n                    }\n    \n                    // 同样的规则应用于 height\n                    if ( height <= 1 && height > 0 ) {\n                        height = file._info.height * height;\n                    }\n    \n                    image.resize( width, height );\n                });\n    \n                image.once( 'complete', function() {\n                    var blob, size;\n    \n                    // 移动端 UC / qq 浏览器的无图模式下\n                    // ctx.getImageData 处理大图的时候会报 Exception\n                    // INDEX_SIZE_ERR: DOM Exception 1\n                    try {\n                        blob = image.getAsBlob( opts.type );\n    \n                        size = file.size;\n    \n                        // 如果压缩后，比原来还大则不用压缩后的。\n                        if ( !noCompressIfLarger || blob.size < size ) {\n                            // file.source.destroy && file.source.destroy();\n                            file.source = blob;\n                            file.size = blob.size;\n    \n                            file.trigger( 'resize', blob.size, size );\n                        }\n    \n                        // 标记，避免重复压缩。\n                        file._compressed = true;\n                        deferred.resolve();\n                    } catch ( e ) {\n                        // 出错了直接继续，让其上传原始图片\n                        deferred.resolve();\n                    }\n                });\n    \n                file._info && image.info( file._info );\n                file._meta && image.meta( file._meta );\n    \n                image.loadFromBlob( file.source );\n                return deferred.promise();\n            }\n        });\n    });\n    /**\n     * @fileOverview 文件属性封装\n     */\n    define('file',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            idPrefix = 'WU_FILE_',\n            idSuffix = 0,\n            rExt = /\\.([^.]+)$/,\n            statusMap = {};\n    \n        function gid() {\n            return idPrefix + idSuffix++;\n        }\n    \n        /**\n         * 文件类\n         * @class File\n         * @constructor 构造函数\n         * @grammar new File( source ) => File\n         * @param {Lib.File} source [lib.File](#Lib.File)实例, 此source对象是带有Runtime信息的。\n         */\n        function WUFile( source ) {\n    \n            /**\n             * 文件名，包括扩展名（后缀）\n             * @property name\n             * @type {string}\n             */\n            this.name = source.name || 'Untitled';\n    \n            /**\n             * 文件体积（字节）\n             * @property size\n             * @type {uint}\n             * @default 0\n             */\n            this.size = source.size || 0;\n    \n            /**\n             * 文件MIMETYPE类型，与文件类型的对应关系请参考[http://t.cn/z8ZnFny](http://t.cn/z8ZnFny)\n             * @property type\n             * @type {string}\n             * @default 'application/octet-stream'\n             */\n            this.type = source.type || 'application/octet-stream';\n    \n            /**\n             * 文件最后修改日期\n             * @property lastModifiedDate\n             * @type {int}\n             * @default 当前时间戳\n             */\n            this.lastModifiedDate = source.lastModifiedDate || (new Date() * 1);\n    \n            /**\n             * 文件ID，每个对象具有唯一ID，与文件名无关\n             * @property id\n             * @type {string}\n             */\n            this.id = gid();\n    \n            /**\n             * 文件扩展名，通过文件名获取，例如test.png的扩展名为png\n             * @property ext\n             * @type {string}\n             */\n            this.ext = rExt.exec( this.name ) ? RegExp.$1 : '';\n    \n    \n            /**\n             * 状态文字说明。在不同的status语境下有不同的用途。\n             * @property statusText\n             * @type {string}\n             */\n            this.statusText = '';\n    \n            // 存储文件状态，防止通过属性直接修改\n            statusMap[ this.id ] = WUFile.Status.INITED;\n    \n            this.source = source;\n            this.loaded = 0;\n    \n            this.on( 'error', function( msg ) {\n                this.setStatus( WUFile.Status.ERROR, msg );\n            });\n        }\n    \n        $.extend( WUFile.prototype, {\n    \n            /**\n             * 设置状态，状态变化时会触发`change`事件。\n             * @method setStatus\n             * @grammar setStatus( status[, statusText] );\n             * @param {File.Status|String} status [文件状态值](#WebUploader:File:File.Status)\n             * @param {String} [statusText=''] 状态说明，常在error时使用，用http, abort,server等来标记是由于什么原因导致文件错误。\n             */\n            setStatus: function( status, text ) {\n    \n                var prevStatus = statusMap[ this.id ];\n    \n                typeof text !== 'undefined' && (this.statusText = text);\n    \n                if ( status !== prevStatus ) {\n                    statusMap[ this.id ] = status;\n                    /**\n                     * 文件状态变化\n                     * @event statuschange\n                     */\n                    this.trigger( 'statuschange', status, prevStatus );\n                }\n    \n            },\n    \n            /**\n             * 获取文件状态\n             * @return {File.Status}\n             * @example\n                     文件状态具体包括以下几种类型：\n                     {\n                         // 初始化\n                        INITED:     0,\n                        // 已入队列\n                        QUEUED:     1,\n                        // 正在上传\n                        PROGRESS:     2,\n                        // 上传出错\n                        ERROR:         3,\n                        // 上传成功\n                        COMPLETE:     4,\n                        // 上传取消\n                        CANCELLED:     5\n                    }\n             */\n            getStatus: function() {\n                return statusMap[ this.id ];\n            },\n    \n            /**\n             * 获取文件原始信息。\n             * @return {*}\n             */\n            getSource: function() {\n                return this.source;\n            },\n    \n            destroy: function() {\n                this.off();\n                delete statusMap[ this.id ];\n            }\n        });\n    \n        Mediator.installTo( WUFile.prototype );\n    \n        /**\n         * 文件状态值，具体包括以下几种类型：\n         * * `inited` 初始状态\n         * * `queued` 已经进入队列, 等待上传\n         * * `progress` 上传中\n         * * `complete` 上传完成。\n         * * `error` 上传出错，可重试\n         * * `interrupt` 上传中断，可续传。\n         * * `invalid` 文件不合格，不能重试上传。会自动从队列中移除。\n         * * `cancelled` 文件被移除。\n         * @property {Object} Status\n         * @namespace File\n         * @class File\n         * @static\n         */\n        WUFile.Status = {\n            INITED:     'inited',    // 初始状态\n            QUEUED:     'queued',    // 已经进入队列, 等待上传\n            PROGRESS:   'progress',    // 上传中\n            ERROR:      'error',    // 上传出错，可重试\n            COMPLETE:   'complete',    // 上传完成。\n            CANCELLED:  'cancelled',    // 上传取消。\n            INTERRUPT:  'interrupt',    // 上传中断，可续传。\n            INVALID:    'invalid'    // 文件不合格，不能重试上传。\n        };\n    \n        return WUFile;\n    });\n    \n    /**\n     * @fileOverview 文件队列\n     */\n    define('queue',[\n        'base',\n        'mediator',\n        'file'\n    ], function( Base, Mediator, WUFile ) {\n    \n        var $ = Base.$,\n            STATUS = WUFile.Status;\n    \n        /**\n         * 文件队列, 用来存储各个状态中的文件。\n         * @class Queue\n         * @extends Mediator\n         */\n        function Queue() {\n    \n            /**\n             * 统计文件数。\n             * * `numOfQueue` 队列中的文件数。\n             * * `numOfSuccess` 上传成功的文件数\n             * * `numOfCancel` 被取消的文件数\n             * * `numOfProgress` 正在上传中的文件数\n             * * `numOfUploadFailed` 上传错误的文件数。\n             * * `numOfInvalid` 无效的文件数。\n             * * `numofDeleted` 被移除的文件数。\n             * @property {Object} stats\n             */\n            this.stats = {\n                numOfQueue: 0,\n                numOfSuccess: 0,\n                numOfCancel: 0,\n                numOfProgress: 0,\n                numOfUploadFailed: 0,\n                numOfInvalid: 0,\n                numofDeleted: 0,\n                numofInterrupt: 0\n            };\n    \n            // 上传队列，仅包括等待上传的文件\n            this._queue = [];\n    \n            // 存储所有文件\n            this._map = {};\n        }\n    \n        $.extend( Queue.prototype, {\n    \n            /**\n             * 将新文件加入对队列尾部\n             *\n             * @method append\n             * @param  {File} file   文件对象\n             */\n            append: function( file ) {\n                this._queue.push( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 将新文件加入对队列头部\n             *\n             * @method prepend\n             * @param  {File} file   文件对象\n             */\n            prepend: function( file ) {\n                this._queue.unshift( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 获取文件对象\n             *\n             * @method getFile\n             * @param  {String} fileId   文件ID\n             * @return {File}\n             */\n            getFile: function( fileId ) {\n                if ( typeof fileId !== 'string' ) {\n                    return fileId;\n                }\n                return this._map[ fileId ];\n            },\n    \n            /**\n             * 从队列中取出一个指定状态的文件。\n             * @grammar fetch( status ) => File\n             * @method fetch\n             * @param {String} status [文件状态值](#WebUploader:File:File.Status)\n             * @return {File} [File](#WebUploader:File)\n             */\n            fetch: function( status ) {\n                var len = this._queue.length,\n                    i, file;\n    \n                status = status || STATUS.QUEUED;\n    \n                for ( i = 0; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( status === file.getStatus() ) {\n                        return file;\n                    }\n                }\n    \n                return null;\n            },\n    \n            /**\n             * 对队列进行排序，能够控制文件上传顺序。\n             * @grammar sort( fn ) => undefined\n             * @method sort\n             * @param {Function} fn 排序方法\n             */\n            sort: function( fn ) {\n                if ( typeof fn === 'function' ) {\n                    this._queue.sort( fn );\n                }\n            },\n    \n            /**\n             * 获取指定类型的文件列表, 列表中每一个成员为[File](#WebUploader:File)对象。\n             * @grammar getFiles( [status1[, status2 ...]] ) => Array\n             * @method getFiles\n             * @param {String} [status] [文件状态值](#WebUploader:File:File.Status)\n             */\n            getFiles: function() {\n                var sts = [].slice.call( arguments, 0 ),\n                    ret = [],\n                    i = 0,\n                    len = this._queue.length,\n                    file;\n    \n                for ( ; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( sts.length && !~$.inArray( file.getStatus(), sts ) ) {\n                        continue;\n                    }\n    \n                    ret.push( file );\n                }\n    \n                return ret;\n            },\n    \n            /**\n             * 在队列中删除文件。\n             * @grammar removeFile( file ) => Array\n             * @method removeFile\n             * @param {File} 文件对象。\n             */\n            removeFile: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( existing ) {\n                    delete this._map[ file.id ];\n                    file.destroy();\n                    this.stats.numofDeleted++;\n                }\n            },\n    \n            _fileAdded: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( !existing ) {\n                    this._map[ file.id ] = file;\n    \n                    file.on( 'statuschange', function( cur, pre ) {\n                        me._onFileStatusChange( cur, pre );\n                    });\n                }\n            },\n    \n            _onFileStatusChange: function( curStatus, preStatus ) {\n                var stats = this.stats;\n    \n                switch ( preStatus ) {\n                    case STATUS.PROGRESS:\n                        stats.numOfProgress--;\n                        break;\n    \n                    case STATUS.QUEUED:\n                        stats.numOfQueue --;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed--;\n                        break;\n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid--;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt--;\n                        break;\n                }\n    \n                switch ( curStatus ) {\n                    case STATUS.QUEUED:\n                        stats.numOfQueue++;\n                        break;\n    \n                    case STATUS.PROGRESS:\n                        stats.numOfProgress++;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed++;\n                        break;\n    \n                    case STATUS.COMPLETE:\n                        stats.numOfSuccess++;\n                        break;\n    \n                    case STATUS.CANCELLED:\n                        stats.numOfCancel++;\n                        break;\n    \n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid++;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt++;\n                        break;\n                }\n            }\n    \n        });\n    \n        Mediator.installTo( Queue.prototype );\n    \n        return Queue;\n    });\n    /**\n     * @fileOverview 队列\n     */\n    define('widgets/queue',[\n        'base',\n        'uploader',\n        'queue',\n        'file',\n        'lib/file',\n        'runtime/client',\n        'widgets/widget'\n    ], function( Base, Uploader, Queue, WUFile, File, RuntimeClient ) {\n    \n        var $ = Base.$,\n            rExt = /\\.\\w+$/,\n            Status = WUFile.Status;\n    \n        return Uploader.register({\n            name: 'queue',\n    \n            init: function( opts ) {\n                var me = this,\n                    deferred, len, i, item, arr, accept, runtime;\n    \n                if ( $.isPlainObject( opts.accept ) ) {\n                    opts.accept = [ opts.accept ];\n                }\n    \n                // accept中的中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].extensions;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = '\\\\.' + arr.join(',')\n                                .replace( /,/g, '$|\\\\.' )\n                                .replace( /\\*/g, '.*' ) + '$';\n                    }\n    \n                    me.accept = new RegExp( accept, 'i' );\n                }\n    \n                me.queue = new Queue();\n                me.stats = me.queue.stats;\n    \n                // 如果当前不是html5运行时，那就算了。\n                // 不执行后续操作\n                if ( this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                // 创建一个 html5 运行时的 placeholder\n                // 以至于外部添加原生 File 对象的时候能正确包裹一下供 webuploader 使用。\n                deferred = Base.Deferred();\n                this.placeholder = runtime = new RuntimeClient('Placeholder');\n                runtime.connectRuntime({\n                    runtimeOrder: 'html5'\n                }, function() {\n                    me._ruid = runtime.getRuid();\n                    deferred.resolve();\n                });\n                return deferred.promise();\n            },\n    \n    \n            // 为了支持外部直接添加一个原生File对象。\n            _wrapFile: function( file ) {\n                if ( !(file instanceof WUFile) ) {\n    \n                    if ( !(file instanceof File) ) {\n                        if ( !this._ruid ) {\n                            throw new Error('Can\\'t add external files.');\n                        }\n                        file = new File( this._ruid, file );\n                    }\n    \n                    file = new WUFile( file );\n                }\n    \n                return file;\n            },\n    \n            // 判断文件是否可以被加入队列\n            acceptFile: function( file ) {\n                var invalid = !file || !file.size || this.accept &&\n    \n                        // 如果名字中有后缀，才做后缀白名单处理。\n                        rExt.exec( file.name ) && !this.accept.test( file.name );\n    \n                return !invalid;\n            },\n    \n    \n            /**\n             * @event beforeFileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列之前触发，此事件的handler返回值为`false`，则此文件不会被添加进入队列。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event fileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列以后触发。\n             * @for  Uploader\n             */\n    \n            _addFile: function( file ) {\n                var me = this;\n    \n                file = me._wrapFile( file );\n    \n                // 不过类型判断允许不允许，先派送 `beforeFileQueued`\n                if ( !me.owner.trigger( 'beforeFileQueued', file ) ) {\n                    return;\n                }\n    \n                // 类型不匹配，则派送错误事件，并返回。\n                if ( !me.acceptFile( file ) ) {\n                    me.owner.trigger( 'error', 'Q_TYPE_DENIED', file );\n                    return;\n                }\n    \n                me.queue.append( file );\n                me.owner.trigger( 'fileQueued', file );\n                return file;\n            },\n    \n            getFile: function( fileId ) {\n                return this.queue.getFile( fileId );\n            },\n    \n            /**\n             * @event filesQueued\n             * @param {File} files 数组，内容为原始File(lib/File）对象。\n             * @description 当一批文件添加进队列以后触发。\n             * @for  Uploader\n             */\n            \n            /**\n             * @property {Boolean} [auto=false]\n             * @namespace options\n             * @for Uploader\n             * @description 设置为 true 后，不需要手动调用上传，有文件选择即开始上传。\n             * \n             */\n    \n            /**\n             * @method addFiles\n             * @grammar addFiles( file ) => undefined\n             * @grammar addFiles( [file1, file2 ...] ) => undefined\n             * @param {Array of File or File} [files] Files 对象 数组\n             * @description 添加文件到队列\n             * @for  Uploader\n             */\n            addFile: function( files ) {\n                var me = this;\n    \n                if ( !files.length ) {\n                    files = [ files ];\n                }\n    \n                files = $.map( files, function( file ) {\n                    return me._addFile( file );\n                });\n    \n                me.owner.trigger( 'filesQueued', files );\n    \n                if ( me.options.auto ) {\n                    setTimeout(function() {\n                        me.request('start-upload');\n                    }, 20 );\n                }\n            },\n    \n            getStats: function() {\n                return this.stats;\n            },\n    \n            /**\n             * @event fileDequeued\n             * @param {File} file File对象\n             * @description 当文件被移除队列后触发。\n             * @for  Uploader\n             */\n    \n             /**\n             * @method removeFile\n             * @grammar removeFile( file ) => undefined\n             * @grammar removeFile( id ) => undefined\n             * @grammar removeFile( file, true ) => undefined\n             * @grammar removeFile( id, true ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 移除某一文件, 默认只会标记文件状态为已取消，如果第二个参数为 `true` 则会从 queue 中移除。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.removeFile( file );\n             * })\n             */\n            removeFile: function( file, remove ) {\n                var me = this;\n    \n                file = file.id ? file : me.queue.getFile( file );\n    \n                this.request( 'cancel-file', file );\n    \n                if ( remove ) {\n                    this.queue.removeFile( file );\n                }\n            },\n    \n            /**\n             * @method getFiles\n             * @grammar getFiles() => Array\n             * @grammar getFiles( status1, status2, status... ) => Array\n             * @description 返回指定状态的文件集合，不传参数将返回所有状态的文件。\n             * @for  Uploader\n             * @example\n             * console.log( uploader.getFiles() );    // => all files\n             * console.log( uploader.getFiles('error') )    // => all error files.\n             */\n            getFiles: function() {\n                return this.queue.getFiles.apply( this.queue, arguments );\n            },\n    \n            fetchFile: function() {\n                return this.queue.fetch.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @method retry\n             * @grammar retry() => undefined\n             * @grammar retry( file ) => undefined\n             * @description 重试上传，重试指定文件，或者从出错的文件开始重新上传。\n             * @for  Uploader\n             * @example\n             * function retry() {\n             *     uploader.retry();\n             * }\n             */\n            retry: function( file, noForceStart ) {\n                var me = this,\n                    files, i, len;\n    \n                if ( file ) {\n                    file = file.id ? file : me.queue.getFile( file );\n                    file.setStatus( Status.QUEUED );\n                    noForceStart || me.request('start-upload');\n                    return;\n                }\n    \n                files = me.queue.getFiles( Status.ERROR );\n                i = 0;\n                len = files.length;\n    \n                for ( ; i < len; i++ ) {\n                    file = files[ i ];\n                    file.setStatus( Status.QUEUED );\n                }\n    \n                me.request('start-upload');\n            },\n    \n            /**\n             * @method sort\n             * @grammar sort( fn ) => undefined\n             * @description 排序队列中的文件，在上传之前调整可以控制上传顺序。\n             * @for  Uploader\n             */\n            sortFiles: function() {\n                return this.queue.sort.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @event reset\n             * @description 当 uploader 被重置的时候触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @method reset\n             * @grammar reset() => undefined\n             * @description 重置uploader。目前只重置了队列。\n             * @for  Uploader\n             * @example\n             * uploader.reset();\n             */\n            reset: function() {\n                this.owner.trigger('reset');\n                this.queue = new Queue();\n                this.stats = this.queue.stats;\n            },\n    \n            destroy: function() {\n                this.reset();\n                this.placeholder && this.placeholder.destroy();\n            }\n        });\n    \n    });\n    /**\n     * @fileOverview 添加获取Runtime相关信息的方法。\n     */\n    define('widgets/runtime',[\n        'uploader',\n        'runtime/runtime',\n        'widgets/widget'\n    ], function( Uploader, Runtime ) {\n    \n        Uploader.support = function() {\n            return Runtime.hasRuntime.apply( Runtime, arguments );\n        };\n    \n        /**\n         * @property {Object} [runtimeOrder=html5,flash]\n         * @namespace options\n         * @for Uploader\n         * @description 指定运行时启动顺序。默认会想尝试 html5 是否支持，如果支持则使用 html5, 否则则使用 flash.\n         *\n         * 可以将此值设置成 `flash`，来强制使用 flash 运行时。\n         */\n    \n        return Uploader.register({\n            name: 'runtime',\n    \n            init: function() {\n                if ( !this.predictRuntimeType() ) {\n                    throw Error('Runtime Error');\n                }\n            },\n    \n            /**\n             * 预测Uploader将采用哪个`Runtime`\n             * @grammar predictRuntimeType() => String\n             * @method predictRuntimeType\n             * @for  Uploader\n             */\n            predictRuntimeType: function() {\n                var orders = this.options.runtimeOrder || Runtime.orders,\n                    type = this.type,\n                    i, len;\n    \n                if ( !type ) {\n                    orders = orders.split( /\\s*,\\s*/g );\n    \n                    for ( i = 0, len = orders.length; i < len; i++ ) {\n                        if ( Runtime.hasRuntime( orders[ i ] ) ) {\n                            this.type = type = orders[ i ];\n                            break;\n                        }\n                    }\n                }\n    \n                return type;\n            }\n        });\n    });\n    /**\n     * @fileOverview Transport\n     */\n    define('lib/transport',[\n        'base',\n        'runtime/client',\n        'mediator'\n    ], function( Base, RuntimeClient, Mediator ) {\n    \n        var $ = Base.$;\n    \n        function Transport( opts ) {\n            var me = this;\n    \n            opts = me.options = $.extend( true, {}, Transport.options, opts || {} );\n            RuntimeClient.call( this, 'Transport' );\n    \n            this._blob = null;\n            this._formData = opts.formData || {};\n            this._headers = opts.headers || {};\n    \n            this.on( 'progress', this._timeout );\n            this.on( 'load error', function() {\n                me.trigger( 'progress', 1 );\n                clearTimeout( me._timer );\n            });\n        }\n    \n        Transport.options = {\n            server: '',\n            method: 'POST',\n    \n            // 跨域时，是否允许携带cookie, 只有html5 runtime才有效\n            withCredentials: false,\n            fileVal: 'file',\n            timeout: 2 * 60 * 1000,    // 2分钟\n            formData: {},\n            headers: {},\n            sendAsBinary: false\n        };\n    \n        $.extend( Transport.prototype, {\n    \n            // 添加Blob, 只能添加一次，最后一次有效。\n            appendBlob: function( key, blob, filename ) {\n                var me = this,\n                    opts = me.options;\n    \n                if ( me.getRuid() ) {\n                    me.disconnectRuntime();\n                }\n    \n                // 连接到blob归属的同一个runtime.\n                me.connectRuntime( blob.ruid, function() {\n                    me.exec('init');\n                });\n    \n                me._blob = blob;\n                opts.fileVal = key || opts.fileVal;\n                opts.filename = filename || opts.filename;\n            },\n    \n            // 添加其他字段\n            append: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._formData, key );\n                } else {\n                    this._formData[ key ] = value;\n                }\n            },\n    \n            setRequestHeader: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._headers, key );\n                } else {\n                    this._headers[ key ] = value;\n                }\n            },\n    \n            send: function( method ) {\n                this.exec( 'send', method );\n                this._timeout();\n            },\n    \n            abort: function() {\n                clearTimeout( this._timer );\n                return this.exec('abort');\n            },\n    \n            destroy: function() {\n                this.trigger('destroy');\n                this.off();\n                this.exec('destroy');\n                this.disconnectRuntime();\n            },\n    \n            getResponse: function() {\n                return this.exec('getResponse');\n            },\n    \n            getResponseAsJson: function() {\n                return this.exec('getResponseAsJson');\n            },\n    \n            getStatus: function() {\n                return this.exec('getStatus');\n            },\n    \n            _timeout: function() {\n                var me = this,\n                    duration = me.options.timeout;\n    \n                if ( !duration ) {\n                    return;\n                }\n    \n                clearTimeout( me._timer );\n                me._timer = setTimeout(function() {\n                    me.abort();\n                    me.trigger( 'error', 'timeout' );\n                }, duration );\n            }\n    \n        });\n    \n        // 让Transport具备事件功能。\n        Mediator.installTo( Transport.prototype );\n    \n        return Transport;\n    });\n    /**\n     * @fileOverview 负责文件上传相关。\n     */\n    define('widgets/upload',[\n        'base',\n        'uploader',\n        'file',\n        'lib/transport',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile, Transport ) {\n    \n        var $ = Base.$,\n            isPromise = Base.isPromise,\n            Status = WUFile.Status;\n    \n        // 添加默认配置项\n        $.extend( Uploader.options, {\n    \n    \n            /**\n             * @property {Boolean} [prepareNextFile=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否允许在文件传输时提前把下一个文件准备好。\n             * 对于一个文件的准备工作比较耗时，比如图片压缩，md5序列化。\n             * 如果能提前在当前文件传输期处理，可以节省总体耗时。\n             */\n            prepareNextFile: false,\n    \n            /**\n             * @property {Boolean} [chunked=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否要分片处理大文件上传。\n             */\n            chunked: false,\n    \n            /**\n             * @property {Boolean} [chunkSize=5242880]\n             * @namespace options\n             * @for Uploader\n             * @description 如果要分片，分多大一片？ 默认大小为5M.\n             */\n            chunkSize: 5 * 1024 * 1024,\n    \n            /**\n             * @property {Boolean} [chunkRetry=2]\n             * @namespace options\n             * @for Uploader\n             * @description 如果某个分片由于网络问题出错，允许自动重传多少次？\n             */\n            chunkRetry: 2,\n    \n            /**\n             * @property {Boolean} [threads=3]\n             * @namespace options\n             * @for Uploader\n             * @description 上传并发数。允许同时最大上传进程数。\n             */\n            threads: 3,\n    \n    \n            /**\n             * @property {Object} [formData={}]\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传请求的参数表，每次发送都会发送此对象中的参数。\n             */\n            formData: {}\n    \n            /**\n             * @property {Object} [fileVal='file']\n             * @namespace options\n             * @for Uploader\n             * @description 设置文件上传域的name。\n             */\n    \n            /**\n             * @property {Object} [method='POST']\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传方式，`POST`或者`GET`。\n             */\n    \n            /**\n             * @property {Object} [sendAsBinary=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否已二进制的流的方式发送文件，这样整个上传内容`php://input`都为文件内容，\n             * 其他参数在$_GET数组中。\n             */\n        });\n    \n        // 负责将文件切片。\n        function CuteFile( file, chunkSize ) {\n            var pending = [],\n                blob = file.source,\n                total = blob.size,\n                chunks = chunkSize ? Math.ceil( total / chunkSize ) : 1,\n                start = 0,\n                index = 0,\n                len, api;\n    \n            api = {\n                file: file,\n    \n                has: function() {\n                    return !!pending.length;\n                },\n    \n                shift: function() {\n                    return pending.shift();\n                },\n    \n                unshift: function( block ) {\n                    pending.unshift( block );\n                }\n            };\n    \n            while ( index < chunks ) {\n                len = Math.min( chunkSize, total - start );\n    \n                pending.push({\n                    file: file,\n                    start: start,\n                    end: chunkSize ? (start + len) : total,\n                    total: total,\n                    chunks: chunks,\n                    chunk: index++,\n                    cuted: api\n                });\n                start += len;\n            }\n    \n            file.blocks = pending.concat();\n            file.remaning = pending.length;\n    \n            return api;\n        }\n    \n        Uploader.register({\n            name: 'upload',\n    \n            init: function() {\n                var owner = this.owner,\n                    me = this;\n    \n                this.runing = false;\n                this.progress = false;\n    \n                owner\n                    .on( 'startUpload', function() {\n                        me.progress = true;\n                    })\n                    .on( 'uploadFinished', function() {\n                        me.progress = false;\n                    });\n    \n                // 记录当前正在传的数据，跟threads相关\n                this.pool = [];\n    \n                // 缓存分好片的文件。\n                this.stack = [];\n    \n                // 缓存即将上传的文件。\n                this.pending = [];\n    \n                // 跟踪还有多少分片在上传中但是没有完成上传。\n                this.remaning = 0;\n                this.__tick = Base.bindFn( this._tick, this );\n    \n                owner.on( 'uploadComplete', function( file ) {\n    \n                    // 把其他块取消了。\n                    file.blocks && $.each( file.blocks, function( _, v ) {\n                        v.transport && (v.transport.abort(), v.transport.destroy());\n                        delete v.transport;\n                    });\n    \n                    delete file.blocks;\n                    delete file.remaning;\n                });\n            },\n    \n            reset: function() {\n                this.request( 'stop-upload', true );\n                this.runing = false;\n                this.pool = [];\n                this.stack = [];\n                this.pending = [];\n                this.remaning = 0;\n                this._trigged = false;\n                this._promise = null;\n            },\n    \n            /**\n             * @event startUpload\n             * @description 当开始上传流程时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 开始上传。此方法可以从初始状态调用开始上传流程，也可以从暂停状态调用，继续上传流程。\n             *\n             * 可以指定开始某一个文件。\n             * @grammar upload() => undefined\n             * @grammar upload( file | fileId) => undefined\n             * @method upload\n             * @for  Uploader\n             */\n            startUpload: function(file) {\n                var me = this;\n    \n                // 移出invalid的文件\n                $.each( me.request( 'get-files', Status.INVALID ), function() {\n                    me.request( 'remove-file', this );\n                });\n    \n                // 如果指定了开始某个文件，则只开始指定文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if (file.getStatus() === Status.INTERRUPT) {\n                        $.each( me.pool, function( _, v ) {\n    \n                            // 之前暂停过。\n                            if (v.file !== file) {\n                                return;\n                            }\n    \n                            v.transport && v.transport.send();\n                        });\n    \n                        file.setStatus( Status.QUEUED );\n                    } else if (file.getStatus() === Status.PROGRESS) {\n                        return;\n                    } else {\n                        file.setStatus( Status.QUEUED );\n                    }\n                } else {\n                    $.each( me.request( 'get-files', [ Status.INITED ] ), function() {\n                        this.setStatus( Status.QUEUED );\n                    });\n                }\n    \n                if ( me.runing ) {\n                    return;\n                }\n    \n                me.runing = true;\n    \n                var files = [];\n    \n                // 如果有暂停的，则续传\n                $.each( me.pool, function( _, v ) {\n                    var file = v.file;\n    \n                    if ( file.getStatus() === Status.INTERRUPT ) {\n                        files.push(file);\n                        me._trigged = false;\n                        v.transport && v.transport.send();\n                    }\n                });\n    \n                var file;\n                while ( (file = files.shift()) ) {\n                    file.setStatus( Status.PROGRESS );\n                }\n    \n                file || $.each( me.request( 'get-files',\n                        Status.INTERRUPT ), function() {\n                    this.setStatus( Status.PROGRESS );\n                });\n    \n                me._trigged = false;\n                Base.nextTick( me.__tick );\n                me.owner.trigger('startUpload');\n            },\n    \n            /**\n             * @event stopUpload\n             * @description 当开始上传流程暂停时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 暂停上传。第一个参数为是否中断上传当前正在上传的文件。\n             *\n             * 如果第一个参数是文件，则只暂停指定文件。\n             * @grammar stop() => undefined\n             * @grammar stop( true ) => undefined\n             * @grammar stop( file ) => undefined\n             * @method stop\n             * @for  Uploader\n             */\n            stopUpload: function( file, interrupt ) {\n                var me = this;\n    \n                if (file === true) {\n                    interrupt = file;\n                    file = null;\n                }\n    \n                if ( me.runing === false ) {\n                    return;\n                }\n    \n                // 如果只是暂停某个文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if ( file.getStatus() !== Status.PROGRESS &&\n                            file.getStatus() !== Status.QUEUED ) {\n                        return;\n                    }\n    \n                    file.setStatus( Status.INTERRUPT );\n                    $.each( me.pool, function( _, v ) {\n    \n                        // 只 abort 指定的文件。\n                        if (v.file !== file) {\n                            return;\n                        }\n    \n                        v.transport && v.transport.abort();\n                        me._putback(v);\n                        me._popBlock(v);\n                    });\n    \n                    return Base.nextTick( me.__tick );\n                }\n    \n                me.runing = false;\n    \n                if (this._promise && this._promise.file) {\n                    this._promise.file.setStatus( Status.INTERRUPT );\n                }\n    \n                interrupt && $.each( me.pool, function( _, v ) {\n                    v.transport && v.transport.abort();\n                    v.file.setStatus( Status.INTERRUPT );\n                });\n    \n                me.owner.trigger('stopUpload');\n            },\n    \n            /**\n             * @method cancelFile\n             * @grammar cancelFile( file ) => undefined\n             * @grammar cancelFile( id ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 标记文件状态为已取消, 同时将中断文件传输。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.cancelFile( file );\n             * })\n             */\n            cancelFile: function( file ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                file.setStatus( Status.CANCELLED );\n                this.owner.trigger( 'fileDequeued', file );\n            },\n    \n            /**\n             * 判断`Uplaode`r是否正在上传中。\n             * @grammar isInProgress() => Boolean\n             * @method isInProgress\n             * @for  Uploader\n             */\n            isInProgress: function() {\n                return !!this.progress;\n            },\n    \n            _getStats: function() {\n                return this.request('get-stats');\n            },\n    \n            /**\n             * 掉过一个文件上传，直接标记指定文件为已上传状态。\n             * @grammar skipFile( file ) => undefined\n             * @method skipFile\n             * @for  Uploader\n             */\n            skipFile: function( file, status ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                file.setStatus( status || Status.COMPLETE );\n                file.skipped = true;\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                this.owner.trigger( 'uploadSkip', file );\n            },\n    \n            /**\n             * @event uploadFinished\n             * @description 当所有文件上传结束时触发。\n             * @for  Uploader\n             */\n            _tick: function() {\n                var me = this,\n                    opts = me.options,\n                    fn, val;\n    \n                // 上一个promise还没有结束，则等待完成后再执行。\n                if ( me._promise ) {\n                    return me._promise.always( me.__tick );\n                }\n    \n                // 还有位置，且还有文件要处理的话。\n                if ( me.pool.length < opts.threads && (val = me._nextBlock()) ) {\n                    me._trigged = false;\n    \n                    fn = function( val ) {\n                        me._promise = null;\n    \n                        // 有可能是reject过来的，所以要检测val的类型。\n                        val && val.file && me._startSend( val );\n                        Base.nextTick( me.__tick );\n                    };\n    \n                    me._promise = isPromise( val ) ? val.always( fn ) : fn( val );\n    \n                // 没有要上传的了，且没有正在传输的了。\n                } else if ( !me.remaning && !me._getStats().numOfQueue &&\n                    !me._getStats().numofInterrupt ) {\n                    me.runing = false;\n    \n                    me._trigged || Base.nextTick(function() {\n                        me.owner.trigger('uploadFinished');\n                    });\n                    me._trigged = true;\n                }\n            },\n    \n            _putback: function(block) {\n                var idx;\n    \n                block.cuted.unshift(block);\n                idx = this.stack.indexOf(block.cuted);\n    \n                if (!~idx) {\n                    this.stack.unshift(block.cuted);\n                }\n            },\n    \n            _getStack: function() {\n                var i = 0,\n                    act;\n    \n                while ( (act = this.stack[ i++ ]) ) {\n                    if ( act.has() && act.file.getStatus() === Status.PROGRESS ) {\n                        return act;\n                    } else if (!act.has() ||\n                            act.file.getStatus() !== Status.PROGRESS &&\n                            act.file.getStatus() !== Status.INTERRUPT ) {\n    \n                        // 把已经处理完了的，或者，状态为非 progress（上传中）、\n                        // interupt（暂停中） 的移除。\n                        this.stack.splice( --i, 1 );\n                    }\n                }\n    \n                return null;\n            },\n    \n            _nextBlock: function() {\n                var me = this,\n                    opts = me.options,\n                    act, next, done, preparing;\n    \n                // 如果当前文件还有没有需要传输的，则直接返回剩下的。\n                if ( (act = this._getStack()) ) {\n    \n                    // 是否提前准备下一个文件\n                    if ( opts.prepareNextFile && !me.pending.length ) {\n                        me._prepareNextFile();\n                    }\n    \n                    return act.shift();\n    \n                // 否则，如果正在运行，则准备下一个文件，并等待完成后返回下个分片。\n                } else if ( me.runing ) {\n    \n                    // 如果缓存中有，则直接在缓存中取，没有则去queue中取。\n                    if ( !me.pending.length && me._getStats().numOfQueue ) {\n                        me._prepareNextFile();\n                    }\n    \n                    next = me.pending.shift();\n                    done = function( file ) {\n                        if ( !file ) {\n                            return null;\n                        }\n    \n                        act = CuteFile( file, opts.chunked ? opts.chunkSize : 0 );\n                        me.stack.push(act);\n                        return act.shift();\n                    };\n    \n                    // 文件可能还在prepare中，也有可能已经完全准备好了。\n                    if ( isPromise( next) ) {\n                        preparing = next.file;\n                        next = next[ next.pipe ? 'pipe' : 'then' ]( done );\n                        next.file = preparing;\n                        return next;\n                    }\n    \n                    return done( next );\n                }\n            },\n    \n    \n            /**\n             * @event uploadStart\n             * @param {File} file File对象\n             * @description 某个文件开始上传前触发，一个文件只会触发一次。\n             * @for  Uploader\n             */\n            _prepareNextFile: function() {\n                var me = this,\n                    file = me.request('fetch-file'),\n                    pending = me.pending,\n                    promise;\n    \n                if ( file ) {\n                    promise = me.request( 'before-send-file', file, function() {\n    \n                        // 有可能文件被skip掉了。文件被skip掉后，状态坑定不是Queued.\n                        if ( file.getStatus() === Status.PROGRESS ||\n                            file.getStatus() === Status.INTERRUPT ) {\n                            return file;\n                        }\n    \n                        return me._finishFile( file );\n                    });\n    \n                    me.owner.trigger( 'uploadStart', file );\n                    file.setStatus( Status.PROGRESS );\n    \n                    promise.file = file;\n    \n                    // 如果还在pending中，则替换成文件本身。\n                    promise.done(function() {\n                        var idx = $.inArray( promise, pending );\n    \n                        ~idx && pending.splice( idx, 1, file );\n                    });\n    \n                    // befeore-send-file的钩子就有错误发生。\n                    promise.fail(function( reason ) {\n                        file.setStatus( Status.ERROR, reason );\n                        me.owner.trigger( 'uploadError', file, reason );\n                        me.owner.trigger( 'uploadComplete', file );\n                    });\n    \n                    pending.push( promise );\n                }\n            },\n    \n            // 让出位置了，可以让其他分片开始上传\n            _popBlock: function( block ) {\n                var idx = $.inArray( block, this.pool );\n    \n                this.pool.splice( idx, 1 );\n                block.file.remaning--;\n                this.remaning--;\n            },\n    \n            // 开始上传，可以被掉过。如果promise被reject了，则表示跳过此分片。\n            _startSend: function( block ) {\n                var me = this,\n                    file = block.file,\n                    promise;\n    \n                // 有可能在 before-send-file 的 promise 期间改变了文件状态。\n                // 如：暂停，取消\n                // 我们不能中断 promise, 但是可以在 promise 完后，不做上传操作。\n                if ( file.getStatus() !== Status.PROGRESS ) {\n    \n                    // 如果是中断，则还需要放回去。\n                    if (file.getStatus() === Status.INTERRUPT) {\n                        me._putback(block);\n                    }\n    \n                    return;\n                }\n    \n                me.pool.push( block );\n                me.remaning++;\n    \n                // 如果没有分片，则直接使用原始的。\n                // 不会丢失content-type信息。\n                block.blob = block.chunks === 1 ? file.source :\n                        file.source.slice( block.start, block.end );\n    \n                // hook, 每个分片发送之前可能要做些异步的事情。\n                promise = me.request( 'before-send', block, function() {\n    \n                    // 有可能文件已经上传出错了，所以不需要再传输了。\n                    if ( file.getStatus() === Status.PROGRESS ) {\n                        me._doSend( block );\n                    } else {\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n    \n                // 如果为fail了，则跳过此分片。\n                promise.fail(function() {\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file ).always(function() {\n                            block.percentage = 1;\n                            me._popBlock( block );\n                            me.owner.trigger( 'uploadComplete', file );\n                            Base.nextTick( me.__tick );\n                        });\n                    } else {\n                        block.percentage = 1;\n                        me.updateFileProgress( file );\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n            },\n    \n    \n            /**\n             * @event uploadBeforeSend\n             * @param {Object} object\n             * @param {Object} data 默认的上传参数，可以扩展此对象来控制上传参数。\n             * @param {Object} headers 可以扩展此对象来控制上传头部。\n             * @description 当某个文件的分块在发送前触发，主要用来询问是否要添加附带参数，大文件在开起分片上传的前提下此事件可能会触发多次。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadAccept\n             * @param {Object} object\n             * @param {Object} ret 服务端的返回数据，json格式，如果服务端不是json格式，从ret._raw中取数据，自行解析。\n             * @description 当某个文件上传到服务端响应后，会派送此事件来询问服务端响应是否有效。如果此事件handler返回值为`false`, 则此文件将派送`server`类型的`uploadError`事件。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadProgress\n             * @param {File} file File对象\n             * @param {Number} percentage 上传进度\n             * @description 上传过程中触发，携带上传进度。\n             * @for  Uploader\n             */\n    \n    \n            /**\n             * @event uploadError\n             * @param {File} file File对象\n             * @param {String} reason 出错的code\n             * @description 当文件上传出错时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadSuccess\n             * @param {File} file File对象\n             * @param {Object} response 服务端返回的数据\n             * @description 当文件上传成功时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadComplete\n             * @param {File} [file] File对象\n             * @description 不管成功或者失败，文件上传完成时触发。\n             * @for  Uploader\n             */\n    \n            // 做上传操作。\n            _doSend: function( block ) {\n                var me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    file = block.file,\n                    tr = new Transport( opts ),\n                    data = $.extend({}, opts.formData ),\n                    headers = $.extend({}, opts.headers ),\n                    requestAccept, ret;\n    \n                block.transport = tr;\n    \n                tr.on( 'destroy', function() {\n                    delete block.transport;\n                    me._popBlock( block );\n                    Base.nextTick( me.__tick );\n                });\n    \n                // 广播上传进度。以文件为单位。\n                tr.on( 'progress', function( percentage ) {\n                    block.percentage = percentage;\n                    me.updateFileProgress( file );\n                });\n    \n                // 用来询问，是否返回的结果是有错误的。\n                requestAccept = function( reject ) {\n                    var fn;\n    \n                    ret = tr.getResponseAsJson() || {};\n                    ret._raw = tr.getResponse();\n                    fn = function( value ) {\n                        reject = value;\n                    };\n    \n                    // 服务端响应了，不代表成功了，询问是否响应正确。\n                    if ( !owner.trigger( 'uploadAccept', block, ret, fn ) ) {\n                        reject = reject || 'server';\n                    }\n    \n                    return reject;\n                };\n    \n                // 尝试重试，然后广播文件上传出错。\n                tr.on( 'error', function( type, flag ) {\n                    block.retried = block.retried || 0;\n    \n                    // 自动重试\n                    if ( block.chunks > 1 && ~'http,abort'.indexOf( type ) &&\n                            block.retried < opts.chunkRetry ) {\n    \n                        block.retried++;\n                        tr.send();\n    \n                    } else {\n    \n                        // http status 500 ~ 600\n                        if ( !flag && type === 'server' ) {\n                            type = requestAccept( type );\n                        }\n    \n                        file.setStatus( Status.ERROR, type );\n                        owner.trigger( 'uploadError', file, type );\n                        owner.trigger( 'uploadComplete', file );\n                    }\n                });\n    \n                // 上传成功\n                tr.on( 'load', function() {\n                    var reason;\n    \n                    // 如果非预期，转向上传出错。\n                    if ( (reason = requestAccept()) ) {\n                        tr.trigger( 'error', reason, true );\n                        return;\n                    }\n    \n                    // 全部上传完成。\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file, ret );\n                    } else {\n                        tr.destroy();\n                    }\n                });\n    \n                // 配置默认的上传字段。\n                data = $.extend( data, {\n                    id: file.id,\n                    name: file.name,\n                    type: file.type,\n                    lastModifiedDate: file.lastModifiedDate,\n                    size: file.size\n                });\n    \n                block.chunks > 1 && $.extend( data, {\n                    chunks: block.chunks,\n                    chunk: block.chunk\n                });\n    \n                // 在发送之间可以添加字段什么的。。。\n                // 如果默认的字段不够使用，可以通过监听此事件来扩展\n                owner.trigger( 'uploadBeforeSend', block, data, headers );\n    \n                // 开始发送。\n                tr.appendBlob( opts.fileVal, block.blob, file.name );\n                tr.append( data );\n                tr.setRequestHeader( headers );\n                tr.send();\n            },\n    \n            // 完成上传。\n            _finishFile: function( file, ret, hds ) {\n                var owner = this.owner;\n    \n                return owner\n                        .request( 'after-send-file', arguments, function() {\n                            file.setStatus( Status.COMPLETE );\n                            owner.trigger( 'uploadSuccess', file, ret, hds );\n                        })\n                        .fail(function( reason ) {\n    \n                            // 如果外部已经标记为invalid什么的，不再改状态。\n                            if ( file.getStatus() === Status.PROGRESS ) {\n                                file.setStatus( Status.ERROR, reason );\n                            }\n    \n                            owner.trigger( 'uploadError', file, reason );\n                        })\n                        .always(function() {\n                            owner.trigger( 'uploadComplete', file );\n                        });\n            },\n    \n            updateFileProgress: function(file) {\n                var totalPercent = 0,\n                    uploaded = 0;\n    \n                if (!file.blocks) {\n                    return;\n                }\n    \n                $.each( file.blocks, function( _, v ) {\n                    uploaded += (v.percentage || 0) * (v.end - v.start);\n                });\n    \n                totalPercent = uploaded / file.size;\n                this.owner.trigger( 'uploadProgress', file, totalPercent || 0 );\n            }\n    \n        });\n    });\n    /**\n     * @fileOverview 各种验证，包括文件总大小是否超出、单文件是否超出和文件是否重复。\n     */\n    \n    define('widgets/validator',[\n        'base',\n        'uploader',\n        'file',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile ) {\n    \n        var $ = Base.$,\n            validators = {},\n            api;\n    \n        /**\n         * @event error\n         * @param {String} type 错误类型。\n         * @description 当validate不通过时，会以派送错误事件的形式通知调用者。通过`upload.on('error', handler)`可以捕获到此类错误，目前有以下错误会在特定的情况下派送错来。\n         *\n         * * `Q_EXCEED_NUM_LIMIT` 在设置了`fileNumLimit`且尝试给`uploader`添加的文件数量超出这个值时派送。\n         * * `Q_EXCEED_SIZE_LIMIT` 在设置了`Q_EXCEED_SIZE_LIMIT`且尝试给`uploader`添加的文件总大小超出这个值时派送。\n         * * `Q_TYPE_DENIED` 当文件类型不满足时触发。。\n         * @for  Uploader\n         */\n    \n        // 暴露给外面的api\n        api = {\n    \n            // 添加验证器\n            addValidator: function( type, cb ) {\n                validators[ type ] = cb;\n            },\n    \n            // 移除验证器\n            removeValidator: function( type ) {\n                delete validators[ type ];\n            }\n        };\n    \n        // 在Uploader初始化的时候启动Validators的初始化\n        Uploader.register({\n            name: 'validator',\n    \n            init: function() {\n                var me = this;\n                Base.nextTick(function() {\n                    $.each( validators, function() {\n                        this.call( me.owner );\n                    });\n                });\n            }\n        });\n    \n        /**\n         * @property {int} [fileNumLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总数量, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileNumLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                max = parseInt( opts.fileNumLimit ),\n                count = 0,\n                flag = true;\n\n            if ( !max ) {\n                return true;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                max = parseInt( opts.fileNumLimit );\n\n                if ( count >= max && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_NUM_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return count >= max ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function() {\n                count++;\n            });\n    \n            uploader.on( 'fileDequeued', function() {\n                count--;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n    \n        /**\n         * @property {int} [fileSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                count = 0,\n                max = parseInt( opts.fileSizeLimit, 10 ),\n                flag = true;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var invalid = count + file.size > max;\n    \n                if ( invalid && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_SIZE_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return invalid ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                count += file.size;\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                count -= file.size;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n        /**\n         * @property {int} [fileSingleSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证单个文件大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSingleSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                max = opts.fileSingleSizeLimit;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n    \n                if ( file.size > max ) {\n                    file.setStatus( WUFile.Status.INVALID, 'exceed_size' );\n                    this.trigger( 'error', 'F_EXCEED_SIZE', max, file );\n                    return false;\n                }\n    \n            });\n    \n        });\n    \n        /**\n         * @property {Boolean} [duplicate=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 去重， 根据文件名字、文件大小和最后修改时间来生成hash Key.\n         */\n        api.addValidator( 'duplicate', function() {\n            var uploader = this,\n                opts = uploader.options,\n                mapping = {};\n    \n            if ( opts.duplicate ) {\n                return;\n            }\n    \n            function hashString( str ) {\n                var hash = 0,\n                    i = 0,\n                    len = str.length,\n                    _char;\n    \n                for ( ; i < len; i++ ) {\n                    _char = str.charCodeAt( i );\n                    hash = _char + (hash << 6) + (hash << 16) - hash;\n                }\n    \n                return hash;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var hash = file.__hash || (file.__hash = hashString( file.name +\n                        file.size + file.lastModifiedDate ));\n    \n                // 已经重复了\n                if ( mapping[ hash ] ) {\n                    this.trigger( 'error', 'F_DUPLICATE', file );\n                    return false;\n                }\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (mapping[ hash ] = true);\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (delete mapping[ hash ]);\n            });\n    \n            uploader.on( 'reset', function() {\n                mapping = {};\n            });\n        });\n    \n        return api;\n    });\n    \n    /**\n     * @fileOverview Md5\n     */\n    define('lib/md5',[\n        'runtime/client',\n        'mediator'\n    ], function( RuntimeClient, Mediator ) {\n    \n        function Md5() {\n            RuntimeClient.call( this, 'Md5' );\n        }\n    \n        // 让 Md5 具备事件功能。\n        Mediator.installTo( Md5.prototype );\n    \n        Md5.prototype.loadFromBlob = function( blob ) {\n            var me = this;\n    \n            if ( me.getRuid() ) {\n                me.disconnectRuntime();\n            }\n    \n            // 连接到blob归属的同一个runtime.\n            me.connectRuntime( blob.ruid, function() {\n                me.exec('init');\n                me.exec( 'loadFromBlob', blob );\n            });\n        };\n    \n        Md5.prototype.getResult = function() {\n            return this.exec('getResult');\n        };\n    \n        return Md5;\n    });\n    /**\n     * @fileOverview 图片操作, 负责预览图片和上传前压缩图片\n     */\n    define('widgets/md5',[\n        'base',\n        'uploader',\n        'lib/md5',\n        'lib/blob',\n        'widgets/widget'\n    ], function( Base, Uploader, Md5, Blob ) {\n    \n        return Uploader.register({\n            name: 'md5',\n    \n    \n            /**\n             * 计算文件 md5 值，返回一个 promise 对象，可以监听 progress 进度。\n             *\n             *\n             * @method md5File\n             * @grammar md5File( file[, start[, end]] ) => promise\n             * @for Uploader\n             * @example\n             *\n             * uploader.on( 'fileQueued', function( file ) {\n             *     var $li = ...;\n             *\n             *     uploader.md5File( file )\n             *\n             *         // 及时显示进度\n             *         .progress(function(percentage) {\n             *             console.log('Percentage:', percentage);\n             *         })\n             *\n             *         // 完成\n             *         .then(function(val) {\n             *             console.log('md5 result:', val);\n             *         });\n             *\n             * });\n             */\n            md5File: function( file, start, end ) {\n                var md5 = new Md5(),\n                    deferred = Base.Deferred(),\n                    blob = (file instanceof Blob) ? file :\n                        this.request( 'get-file', file ).source;\n    \n                md5.on( 'progress load', function( e ) {\n                    e = e || {};\n                    deferred.notify( e.total ? e.loaded / e.total : 1 );\n                });\n    \n                md5.on( 'complete', function() {\n                    deferred.resolve( md5.getResult() );\n                });\n    \n                md5.on( 'error', function( reason ) {\n                    deferred.reject( reason );\n                });\n    \n                if ( arguments.length > 1 ) {\n                    start = start || 0;\n                    end = end || 0;\n                    start < 0 && (start = blob.size + start);\n                    end < 0 && (end = blob.size + end);\n                    end = Math.min( end, blob.size );\n                    blob = blob.slice( start, end );\n                }\n    \n                md5.loadFromBlob( blob );\n    \n                return deferred.promise();\n            }\n        });\n    });\n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/compbase',[],function() {\n    \n        function CompBase( owner, runtime ) {\n    \n            this.owner = owner;\n            this.options = owner.options;\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.getRuid = function() {\n                return runtime.uid;\n            };\n    \n            this.trigger = function() {\n                return owner.trigger.apply( owner, arguments );\n            };\n        }\n    \n        return CompBase;\n    });\n    /**\n     * @fileOverview Html5Runtime\n     */\n    define('runtime/html5/runtime',[\n        'base',\n        'runtime/runtime',\n        'runtime/compbase'\n    ], function( Base, Runtime, CompBase ) {\n    \n        var type = 'html5',\n            components = {};\n    \n        function Html5Runtime() {\n            var pool = {},\n                me = this,\n                destroy = this.destroy;\n    \n            Runtime.apply( me, arguments );\n            me.type = type;\n    \n    \n            // 这个方法的调用者，实际上是RuntimeClient\n            me.exec = function( comp, fn/*, args...*/) {\n                var client = this,\n                    uid = client.uid,\n                    args = Base.slice( arguments, 2 ),\n                    instance;\n    \n                if ( components[ comp ] ) {\n                    instance = pool[ uid ] = pool[ uid ] ||\n                            new components[ comp ]( client, me );\n    \n                    if ( instance[ fn ] ) {\n                        return instance[ fn ].apply( instance, args );\n                    }\n                }\n            };\n    \n            me.destroy = function() {\n                // @todo 删除池子中的所有实例\n                return destroy && destroy.apply( this, arguments );\n            };\n        }\n    \n        Base.inherits( Runtime, {\n            constructor: Html5Runtime,\n    \n            // 不需要连接其他程序，直接执行callback\n            init: function() {\n                var me = this;\n                setTimeout(function() {\n                    me.trigger('ready');\n                }, 1 );\n            }\n    \n        });\n    \n        // 注册Components\n        Html5Runtime.register = function( name, component ) {\n            var klass = components[ name ] = Base.inherits( CompBase, component );\n            return klass;\n        };\n    \n        // 注册html5运行时。\n        // 只有在支持的前提下注册。\n        if ( window.Blob && window.FileReader && window.DataView ) {\n            Runtime.addRuntime( type, Html5Runtime );\n        }\n    \n        return Html5Runtime;\n    });\n    /**\n     * @fileOverview Blob Html实现\n     */\n    define('runtime/html5/blob',[\n        'runtime/html5/runtime',\n        'lib/blob'\n    ], function( Html5Runtime, Blob ) {\n    \n        return Html5Runtime.register( 'Blob', {\n            slice: function( start, end ) {\n                var blob = this.owner.source,\n                    slice = blob.slice || blob.webkitSlice || blob.mozSlice;\n    \n                blob = slice.call( blob, start, end );\n    \n                return new Blob( this.getRuid(), blob );\n            }\n        });\n    });\n    /**\n     * @fileOverview FilePaste\n     */\n    define('runtime/html5/dnd',[\n        'base',\n        'runtime/html5/runtime',\n        'lib/file'\n    ], function( Base, Html5Runtime, File ) {\n    \n        var $ = Base.$,\n            prefix = 'webuploader-dnd-';\n    \n        return Html5Runtime.register( 'DragAndDrop', {\n            init: function() {\n                var elem = this.elem = this.options.container;\n    \n                this.dragEnterHandler = Base.bindFn( this._dragEnterHandler, this );\n                this.dragOverHandler = Base.bindFn( this._dragOverHandler, this );\n                this.dragLeaveHandler = Base.bindFn( this._dragLeaveHandler, this );\n                this.dropHandler = Base.bindFn( this._dropHandler, this );\n                this.dndOver = false;\n    \n                elem.on( 'dragenter', this.dragEnterHandler );\n                elem.on( 'dragover', this.dragOverHandler );\n                elem.on( 'dragleave', this.dragLeaveHandler );\n                elem.on( 'drop', this.dropHandler );\n    \n                if ( this.options.disableGlobalDnd ) {\n                    $( document ).on( 'dragover', this.dragOverHandler );\n                    $( document ).on( 'drop', this.dropHandler );\n                }\n            },\n    \n            _dragEnterHandler: function( e ) {\n                var me = this,\n                    denied = me._denied || false,\n                    items;\n    \n                e = e.originalEvent || e;\n    \n                if ( !me.dndOver ) {\n                    me.dndOver = true;\n    \n                    // 注意只有 chrome 支持。\n                    items = e.dataTransfer.items;\n    \n                    if ( items && items.length ) {\n                        me._denied = denied = !me.trigger( 'accept', items );\n                    }\n    \n                    me.elem.addClass( prefix + 'over' );\n                    me.elem[ denied ? 'addClass' :\n                            'removeClass' ]( prefix + 'denied' );\n                }\n    \n                e.dataTransfer.dropEffect = denied ? 'none' : 'copy';\n    \n                return false;\n            },\n    \n            _dragOverHandler: function( e ) {\n                // 只处理框内的。\n                var parentElem = this.elem.parent().get( 0 );\n                if ( parentElem && !$.contains( parentElem, e.currentTarget ) ) {\n                    return false;\n                }\n    \n                clearTimeout( this._leaveTimer );\n                this._dragEnterHandler.call( this, e );\n    \n                return false;\n            },\n    \n            _dragLeaveHandler: function() {\n                var me = this,\n                    handler;\n    \n                handler = function() {\n                    me.dndOver = false;\n                    me.elem.removeClass( prefix + 'over ' + prefix + 'denied' );\n                };\n    \n                clearTimeout( me._leaveTimer );\n                me._leaveTimer = setTimeout( handler, 100 );\n                return false;\n            },\n    \n            _dropHandler: function( e ) {\n                var me = this,\n                    ruid = me.getRuid(),\n                    parentElem = me.elem.parent().get( 0 ),\n                    dataTransfer, data;\n    \n                // 只处理框内的。\n                if ( parentElem && !$.contains( parentElem, e.currentTarget ) ) {\n                    return false;\n                }\n    \n                e = e.originalEvent || e;\n                dataTransfer = e.dataTransfer;\n    \n                // 如果是页面内拖拽，还不能处理，不阻止事件。\n                // 此处 ie11 下会报参数错误，\n                try {\n                    data = dataTransfer.getData('text/html');\n                } catch( err ) {\n                }\n    \n                if ( data ) {\n                    return;\n                }\n    \n                me._getTansferFiles( dataTransfer, function( results ) {\n                    me.trigger( 'drop', $.map( results, function( file ) {\n                        return new File( ruid, file );\n                    }) );\n                });\n    \n                me.dndOver = false;\n                me.elem.removeClass( prefix + 'over' );\n                return false;\n            },\n    \n            // 如果传入 callback 则去查看文件夹，否则只管当前文件夹。\n            _getTansferFiles: function( dataTransfer, callback ) {\n                var results  = [],\n                    promises = [],\n                    items, files, file, item, i, len, canAccessFolder;\n    \n                items = dataTransfer.items;\n                files = dataTransfer.files;\n    \n                canAccessFolder = !!(items && items[ 0 ].webkitGetAsEntry);\n    \n                for ( i = 0, len = files.length; i < len; i++ ) {\n                    file = files[ i ];\n                    item = items && items[ i ];\n    \n                    if ( canAccessFolder && item.webkitGetAsEntry().isDirectory ) {\n    \n                        promises.push( this._traverseDirectoryTree(\n                                item.webkitGetAsEntry(), results ) );\n                    } else {\n                        results.push( file );\n                    }\n                }\n    \n                Base.when.apply( Base, promises ).done(function() {\n    \n                    if ( !results.length ) {\n                        return;\n                    }\n    \n                    callback( results );\n                });\n            },\n    \n            _traverseDirectoryTree: function( entry, results ) {\n                var deferred = Base.Deferred(),\n                    me = this;\n    \n                if ( entry.isFile ) {\n                    entry.file(function( file ) {\n                        results.push( file );\n                        deferred.resolve();\n                    });\n                } else if ( entry.isDirectory ) {\n                    entry.createReader().readEntries(function( entries ) {\n                        var len = entries.length,\n                            promises = [],\n                            arr = [],    // 为了保证顺序。\n                            i;\n    \n                        for ( i = 0; i < len; i++ ) {\n                            promises.push( me._traverseDirectoryTree(\n                                    entries[ i ], arr ) );\n                        }\n    \n                        Base.when.apply( Base, promises ).then(function() {\n                            results.push.apply( results, arr );\n                            deferred.resolve();\n                        }, deferred.reject );\n                    });\n                }\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                var elem = this.elem;\n    \n                // 还没 init 就调用 destroy\n                if (!elem) {\n                    return;\n                }\n                \n                elem.off( 'dragenter', this.dragEnterHandler );\n                elem.off( 'dragover', this.dragOverHandler );\n                elem.off( 'dragleave', this.dragLeaveHandler );\n                elem.off( 'drop', this.dropHandler );\n    \n                if ( this.options.disableGlobalDnd ) {\n                    $( document ).off( 'dragover', this.dragOverHandler );\n                    $( document ).off( 'drop', this.dropHandler );\n                }\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview FilePaste\n     */\n    define('runtime/html5/filepaste',[\n        'base',\n        'runtime/html5/runtime',\n        'lib/file'\n    ], function( Base, Html5Runtime, File ) {\n    \n        return Html5Runtime.register( 'FilePaste', {\n            init: function() {\n                var opts = this.options,\n                    elem = this.elem = opts.container,\n                    accept = '.*',\n                    arr, i, len, item;\n    \n                // accetp的mimeTypes中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].mimeTypes;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = arr.join(',');\n                        accept = accept.replace( /,/g, '|' ).replace( /\\*/g, '.*' );\n                    }\n                }\n                this.accept = accept = new RegExp( accept, 'i' );\n                this.hander = Base.bindFn( this._pasteHander, this );\n                elem.on( 'paste', this.hander );\n            },\n    \n            _pasteHander: function( e ) {\n                var allowed = [],\n                    ruid = this.getRuid(),\n                    items, item, blob, i, len;\n    \n                e = e.originalEvent || e;\n                items = e.clipboardData.items;\n    \n                for ( i = 0, len = items.length; i < len; i++ ) {\n                    item = items[ i ];\n    \n                    if ( item.kind !== 'file' || !(blob = item.getAsFile()) ) {\n                        continue;\n                    }\n    \n                    allowed.push( new File( ruid, blob ) );\n                }\n    \n                if ( allowed.length ) {\n                    // 不阻止非文件粘贴（文字粘贴）的事件冒泡\n                    e.preventDefault();\n                    e.stopPropagation();\n                    this.trigger( 'paste', allowed );\n                }\n            },\n    \n            destroy: function() {\n                this.elem.off( 'paste', this.hander );\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview FilePicker\n     */\n    define('runtime/html5/filepicker',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var $ = Base.$;\n    \n        return Html5Runtime.register( 'FilePicker', {\n            init: function() {\n                var container = this.getRuntime().getContainer(),\n                    me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    label = this.label = $( document.createElement('label') ),\n                    input =  this.input = $( document.createElement('input') ),\n                    arr, i, len, mouseHandler;\n    \n                input.attr( 'type', 'file' );\n                input.attr( 'name', opts.name );\n                input.addClass('webuploader-element-invisible');\n    \n                label.on( 'click', function() {\n                    input.trigger('click');\n                });\n    \n                label.css({\n                    opacity: 0,\n                    width: '100%',\n                    height: '100%',\n                    display: 'block',\n                    cursor: 'pointer',\n                    background: '#ffffff'\n                });\n    \n                if ( opts.multiple ) {\n                    input.attr( 'multiple', 'multiple' );\n                }\n    \n                // @todo Firefox不支持单独指定后缀\n                if ( opts.accept && opts.accept.length > 0 ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        arr.push( opts.accept[ i ].mimeTypes );\n                    }\n    \n                    input.attr( 'accept', arr.join(',') );\n                }\n    \n                container.append( input );\n                container.append( label );\n    \n                mouseHandler = function( e ) {\n                    owner.trigger( e.type );\n                };\n    \n                input.on( 'change', function( e ) {\n                    var fn = arguments.callee,\n                        clone;\n    \n                    me.files = e.target.files;\n    \n                    // reset input\n                    clone = this.cloneNode( true );\n                    clone.value = null;\n                    this.parentNode.replaceChild( clone, this );\n    \n                    input.off();\n                    input = $( clone ).on( 'change', fn )\n                            .on( 'mouseenter mouseleave', mouseHandler );\n    \n                    owner.trigger('change');\n                });\n    \n                label.on( 'mouseenter mouseleave', mouseHandler );\n    \n            },\n    \n    \n            getFiles: function() {\n                return this.files;\n            },\n    \n            destroy: function() {\n                this.input.off();\n                this.label.off();\n            }\n        });\n    });\n    /**\n     * Terms:\n     *\n     * Uint8Array, FileReader, BlobBuilder, atob, ArrayBuffer\n     * @fileOverview Image控件\n     */\n    define('runtime/html5/util',[\n        'base'\n    ], function( Base ) {\n    \n        var urlAPI = window.createObjectURL && window ||\n                window.URL && URL.revokeObjectURL && URL ||\n                window.webkitURL,\n            createObjectURL = Base.noop,\n            revokeObjectURL = createObjectURL;\n    \n        if ( urlAPI ) {\n    \n            // 更安全的方式调用，比如android里面就能把context改成其他的对象。\n            createObjectURL = function() {\n                return urlAPI.createObjectURL.apply( urlAPI, arguments );\n            };\n    \n            revokeObjectURL = function() {\n                return urlAPI.revokeObjectURL.apply( urlAPI, arguments );\n            };\n        }\n    \n        return {\n            createObjectURL: createObjectURL,\n            revokeObjectURL: revokeObjectURL,\n    \n            dataURL2Blob: function( dataURI ) {\n                var byteStr, intArray, ab, i, mimetype, parts;\n    \n                parts = dataURI.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    byteStr = atob( parts[ 1 ] );\n                } else {\n                    byteStr = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                ab = new ArrayBuffer( byteStr.length );\n                intArray = new Uint8Array( ab );\n    \n                for ( i = 0; i < byteStr.length; i++ ) {\n                    intArray[ i ] = byteStr.charCodeAt( i );\n                }\n    \n                mimetype = parts[ 0 ].split(':')[ 1 ].split(';')[ 0 ];\n    \n                return this.arrayBufferToBlob( ab, mimetype );\n            },\n    \n            dataURL2ArrayBuffer: function( dataURI ) {\n                var byteStr, intArray, i, parts;\n    \n                parts = dataURI.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    byteStr = atob( parts[ 1 ] );\n                } else {\n                    byteStr = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                intArray = new Uint8Array( byteStr.length );\n    \n                for ( i = 0; i < byteStr.length; i++ ) {\n                    intArray[ i ] = byteStr.charCodeAt( i );\n                }\n    \n                return intArray.buffer;\n            },\n    \n            arrayBufferToBlob: function( buffer, type ) {\n                var builder = window.BlobBuilder || window.WebKitBlobBuilder,\n                    bb;\n    \n                // android不支持直接new Blob, 只能借助blobbuilder.\n                if ( builder ) {\n                    bb = new builder();\n                    bb.append( buffer );\n                    return bb.getBlob( type );\n                }\n    \n                return new Blob([ buffer ], type ? { type: type } : {} );\n            },\n    \n            // 抽出来主要是为了解决android下面canvas.toDataUrl不支持jpeg.\n            // 你得到的结果是png.\n            canvasToDataUrl: function( canvas, type, quality ) {\n                return canvas.toDataURL( type, quality / 100 );\n            },\n    \n            // imagemeat会复写这个方法，如果用户选择加载那个文件了的话。\n            parseMeta: function( blob, callback ) {\n                callback( false, {});\n            },\n    \n            // imagemeat会复写这个方法，如果用户选择加载那个文件了的话。\n            updateImageHead: function( data ) {\n                return data;\n            }\n        };\n    });\n    /**\n     * Terms:\n     *\n     * Uint8Array, FileReader, BlobBuilder, atob, ArrayBuffer\n     * @fileOverview Image控件\n     */\n    define('runtime/html5/imagemeta',[\n        'runtime/html5/util'\n    ], function( Util ) {\n    \n        var api;\n    \n        api = {\n            parsers: {\n                0xffe1: []\n            },\n    \n            maxMetaDataSize: 262144,\n    \n            parse: function( blob, cb ) {\n                var me = this,\n                    fr = new FileReader();\n    \n                fr.onload = function() {\n                    cb( false, me._parse( this.result ) );\n                    fr = fr.onload = fr.onerror = null;\n                };\n    \n                fr.onerror = function( e ) {\n                    cb( e.message );\n                    fr = fr.onload = fr.onerror = null;\n                };\n    \n                blob = blob.slice( 0, me.maxMetaDataSize );\n                fr.readAsArrayBuffer( blob.getSource() );\n            },\n    \n            _parse: function( buffer, noParse ) {\n                if ( buffer.byteLength < 6 ) {\n                    return;\n                }\n    \n                var dataview = new DataView( buffer ),\n                    offset = 2,\n                    maxOffset = dataview.byteLength - 4,\n                    headLength = offset,\n                    ret = {},\n                    markerBytes, markerLength, parsers, i;\n    \n                if ( dataview.getUint16( 0 ) === 0xffd8 ) {\n    \n                    while ( offset < maxOffset ) {\n                        markerBytes = dataview.getUint16( offset );\n    \n                        if ( markerBytes >= 0xffe0 && markerBytes <= 0xffef ||\n                                markerBytes === 0xfffe ) {\n    \n                            markerLength = dataview.getUint16( offset + 2 ) + 2;\n    \n                            if ( offset + markerLength > dataview.byteLength ) {\n                                break;\n                            }\n    \n                            parsers = api.parsers[ markerBytes ];\n    \n                            if ( !noParse && parsers ) {\n                                for ( i = 0; i < parsers.length; i += 1 ) {\n                                    parsers[ i ].call( api, dataview, offset,\n                                            markerLength, ret );\n                                }\n                            }\n    \n                            offset += markerLength;\n                            headLength = offset;\n                        } else {\n                            break;\n                        }\n                    }\n    \n                    if ( headLength > 6 ) {\n                        if ( buffer.slice ) {\n                            ret.imageHead = buffer.slice( 2, headLength );\n                        } else {\n                            // Workaround for IE10, which does not yet\n                            // support ArrayBuffer.slice:\n                            ret.imageHead = new Uint8Array( buffer )\n                                    .subarray( 2, headLength );\n                        }\n                    }\n                }\n    \n                return ret;\n            },\n    \n            updateImageHead: function( buffer, head ) {\n                var data = this._parse( buffer, true ),\n                    buf1, buf2, bodyoffset;\n    \n    \n                bodyoffset = 2;\n                if ( data.imageHead ) {\n                    bodyoffset = 2 + data.imageHead.byteLength;\n                }\n    \n                if ( buffer.slice ) {\n                    buf2 = buffer.slice( bodyoffset );\n                } else {\n                    buf2 = new Uint8Array( buffer ).subarray( bodyoffset );\n                }\n    \n                buf1 = new Uint8Array( head.byteLength + 2 + buf2.byteLength );\n    \n                buf1[ 0 ] = 0xFF;\n                buf1[ 1 ] = 0xD8;\n                buf1.set( new Uint8Array( head ), 2 );\n                buf1.set( new Uint8Array( buf2 ), head.byteLength + 2 );\n    \n                return buf1.buffer;\n            }\n        };\n    \n        Util.parseMeta = function() {\n            return api.parse.apply( api, arguments );\n        };\n    \n        Util.updateImageHead = function() {\n            return api.updateImageHead.apply( api, arguments );\n        };\n    \n        return api;\n    });\n    /**\n     * 代码来自于：https://github.com/blueimp/JavaScript-Load-Image\n     * 暂时项目中只用了orientation.\n     *\n     * 去除了 Exif Sub IFD Pointer, GPS Info IFD Pointer, Exif Thumbnail.\n     * @fileOverview EXIF解析\n     */\n    \n    // Sample\n    // ====================================\n    // Make : Apple\n    // Model : iPhone 4S\n    // Orientation : 1\n    // XResolution : 72 [72/1]\n    // YResolution : 72 [72/1]\n    // ResolutionUnit : 2\n    // Software : QuickTime 7.7.1\n    // DateTime : 2013:09:01 22:53:55\n    // ExifIFDPointer : 190\n    // ExposureTime : 0.058823529411764705 [1/17]\n    // FNumber : 2.4 [12/5]\n    // ExposureProgram : Normal program\n    // ISOSpeedRatings : 800\n    // ExifVersion : 0220\n    // DateTimeOriginal : 2013:09:01 22:52:51\n    // DateTimeDigitized : 2013:09:01 22:52:51\n    // ComponentsConfiguration : YCbCr\n    // ShutterSpeedValue : 4.058893515764426\n    // ApertureValue : 2.5260688216892597 [4845/1918]\n    // BrightnessValue : -0.3126686601998395\n    // MeteringMode : Pattern\n    // Flash : Flash did not fire, compulsory flash mode\n    // FocalLength : 4.28 [107/25]\n    // SubjectArea : [4 values]\n    // FlashpixVersion : 0100\n    // ColorSpace : 1\n    // PixelXDimension : 2448\n    // PixelYDimension : 3264\n    // SensingMethod : One-chip color area sensor\n    // ExposureMode : 0\n    // WhiteBalance : Auto white balance\n    // FocalLengthIn35mmFilm : 35\n    // SceneCaptureType : Standard\n    define('runtime/html5/imagemeta/exif',[\n        'base',\n        'runtime/html5/imagemeta'\n    ], function( Base, ImageMeta ) {\n    \n        var EXIF = {};\n    \n        EXIF.ExifMap = function() {\n            return this;\n        };\n    \n        EXIF.ExifMap.prototype.map = {\n            'Orientation': 0x0112\n        };\n    \n        EXIF.ExifMap.prototype.get = function( id ) {\n            return this[ id ] || this[ this.map[ id ] ];\n        };\n    \n        EXIF.exifTagTypes = {\n            // byte, 8-bit unsigned int:\n            1: {\n                getValue: function( dataView, dataOffset ) {\n                    return dataView.getUint8( dataOffset );\n                },\n                size: 1\n            },\n    \n            // ascii, 8-bit byte:\n            2: {\n                getValue: function( dataView, dataOffset ) {\n                    return String.fromCharCode( dataView.getUint8( dataOffset ) );\n                },\n                size: 1,\n                ascii: true\n            },\n    \n            // short, 16 bit int:\n            3: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint16( dataOffset, littleEndian );\n                },\n                size: 2\n            },\n    \n            // long, 32 bit int:\n            4: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint32( dataOffset, littleEndian );\n                },\n                size: 4\n            },\n    \n            // rational = two long values,\n            // first is numerator, second is denominator:\n            5: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint32( dataOffset, littleEndian ) /\n                        dataView.getUint32( dataOffset + 4, littleEndian );\n                },\n                size: 8\n            },\n    \n            // slong, 32 bit signed int:\n            9: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getInt32( dataOffset, littleEndian );\n                },\n                size: 4\n            },\n    \n            // srational, two slongs, first is numerator, second is denominator:\n            10: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getInt32( dataOffset, littleEndian ) /\n                        dataView.getInt32( dataOffset + 4, littleEndian );\n                },\n                size: 8\n            }\n        };\n    \n        // undefined, 8-bit byte, value depending on field:\n        EXIF.exifTagTypes[ 7 ] = EXIF.exifTagTypes[ 1 ];\n    \n        EXIF.getExifValue = function( dataView, tiffOffset, offset, type, length,\n                littleEndian ) {\n    \n            var tagType = EXIF.exifTagTypes[ type ],\n                tagSize, dataOffset, values, i, str, c;\n    \n            if ( !tagType ) {\n                Base.log('Invalid Exif data: Invalid tag type.');\n                return;\n            }\n    \n            tagSize = tagType.size * length;\n    \n            // Determine if the value is contained in the dataOffset bytes,\n            // or if the value at the dataOffset is a pointer to the actual data:\n            dataOffset = tagSize > 4 ? tiffOffset + dataView.getUint32( offset + 8,\n                    littleEndian ) : (offset + 8);\n    \n            if ( dataOffset + tagSize > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid data offset.');\n                return;\n            }\n    \n            if ( length === 1 ) {\n                return tagType.getValue( dataView, dataOffset, littleEndian );\n            }\n    \n            values = [];\n    \n            for ( i = 0; i < length; i += 1 ) {\n                values[ i ] = tagType.getValue( dataView,\n                        dataOffset + i * tagType.size, littleEndian );\n            }\n    \n            if ( tagType.ascii ) {\n                str = '';\n    \n                // Concatenate the chars:\n                for ( i = 0; i < values.length; i += 1 ) {\n                    c = values[ i ];\n    \n                    // Ignore the terminating NULL byte(s):\n                    if ( c === '\\u0000' ) {\n                        break;\n                    }\n                    str += c;\n                }\n    \n                return str;\n            }\n            return values;\n        };\n    \n        EXIF.parseExifTag = function( dataView, tiffOffset, offset, littleEndian,\n                data ) {\n    \n            var tag = dataView.getUint16( offset, littleEndian );\n            data.exif[ tag ] = EXIF.getExifValue( dataView, tiffOffset, offset,\n                    dataView.getUint16( offset + 2, littleEndian ),    // tag type\n                    dataView.getUint32( offset + 4, littleEndian ),    // tag length\n                    littleEndian );\n        };\n    \n        EXIF.parseExifTags = function( dataView, tiffOffset, dirOffset,\n                littleEndian, data ) {\n    \n            var tagsNumber, dirEndOffset, i;\n    \n            if ( dirOffset + 6 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid directory offset.');\n                return;\n            }\n    \n            tagsNumber = dataView.getUint16( dirOffset, littleEndian );\n            dirEndOffset = dirOffset + 2 + 12 * tagsNumber;\n    \n            if ( dirEndOffset + 4 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid directory size.');\n                return;\n            }\n    \n            for ( i = 0; i < tagsNumber; i += 1 ) {\n                this.parseExifTag( dataView, tiffOffset,\n                        dirOffset + 2 + 12 * i,    // tag offset\n                        littleEndian, data );\n            }\n    \n            // Return the offset to the next directory:\n            return dataView.getUint32( dirEndOffset, littleEndian );\n        };\n    \n        // EXIF.getExifThumbnail = function(dataView, offset, length) {\n        //     var hexData,\n        //         i,\n        //         b;\n        //     if (!length || offset + length > dataView.byteLength) {\n        //         Base.log('Invalid Exif data: Invalid thumbnail data.');\n        //         return;\n        //     }\n        //     hexData = [];\n        //     for (i = 0; i < length; i += 1) {\n        //         b = dataView.getUint8(offset + i);\n        //         hexData.push((b < 16 ? '0' : '') + b.toString(16));\n        //     }\n        //     return 'data:image/jpeg,%' + hexData.join('%');\n        // };\n    \n        EXIF.parseExifData = function( dataView, offset, length, data ) {\n    \n            var tiffOffset = offset + 10,\n                littleEndian, dirOffset;\n    \n            // Check for the ASCII code for \"Exif\" (0x45786966):\n            if ( dataView.getUint32( offset + 4 ) !== 0x45786966 ) {\n                // No Exif data, might be XMP data instead\n                return;\n            }\n            if ( tiffOffset + 8 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid segment size.');\n                return;\n            }\n    \n            // Check for the two null bytes:\n            if ( dataView.getUint16( offset + 8 ) !== 0x0000 ) {\n                Base.log('Invalid Exif data: Missing byte alignment offset.');\n                return;\n            }\n    \n            // Check the byte alignment:\n            switch ( dataView.getUint16( tiffOffset ) ) {\n                case 0x4949:\n                    littleEndian = true;\n                    break;\n    \n                case 0x4D4D:\n                    littleEndian = false;\n                    break;\n    \n                default:\n                    Base.log('Invalid Exif data: Invalid byte alignment marker.');\n                    return;\n            }\n    \n            // Check for the TIFF tag marker (0x002A):\n            if ( dataView.getUint16( tiffOffset + 2, littleEndian ) !== 0x002A ) {\n                Base.log('Invalid Exif data: Missing TIFF marker.');\n                return;\n            }\n    \n            // Retrieve the directory offset bytes, usually 0x00000008 or 8 decimal:\n            dirOffset = dataView.getUint32( tiffOffset + 4, littleEndian );\n            // Create the exif object to store the tags:\n            data.exif = new EXIF.ExifMap();\n            // Parse the tags of the main image directory and retrieve the\n            // offset to the next directory, usually the thumbnail directory:\n            dirOffset = EXIF.parseExifTags( dataView, tiffOffset,\n                    tiffOffset + dirOffset, littleEndian, data );\n    \n            // 尝试读取缩略图\n            // if ( dirOffset ) {\n            //     thumbnailData = {exif: {}};\n            //     dirOffset = EXIF.parseExifTags(\n            //         dataView,\n            //         tiffOffset,\n            //         tiffOffset + dirOffset,\n            //         littleEndian,\n            //         thumbnailData\n            //     );\n    \n            //     // Check for JPEG Thumbnail offset:\n            //     if (thumbnailData.exif[0x0201]) {\n            //         data.exif.Thumbnail = EXIF.getExifThumbnail(\n            //             dataView,\n            //             tiffOffset + thumbnailData.exif[0x0201],\n            //             thumbnailData.exif[0x0202] // Thumbnail data length\n            //         );\n            //     }\n            // }\n        };\n    \n        ImageMeta.parsers[ 0xffe1 ].push( EXIF.parseExifData );\n        return EXIF;\n    });\n    /**\n     * 这个方式性能不行，但是可以解决android里面的toDataUrl的bug\n     * android里面toDataUrl('image/jpege')得到的结果却是png.\n     *\n     * 所以这里没辙，只能借助这个工具\n     * @fileOverview jpeg encoder\n     */\n    define('runtime/html5/jpegencoder',[], function( require, exports, module ) {\n    \n        /*\n          Copyright (c) 2008, Adobe Systems Incorporated\n          All rights reserved.\n    \n          Redistribution and use in source and binary forms, with or without\n          modification, are permitted provided that the following conditions are\n          met:\n    \n          * Redistributions of source code must retain the above copyright notice,\n            this list of conditions and the following disclaimer.\n    \n          * Redistributions in binary form must reproduce the above copyright\n            notice, this list of conditions and the following disclaimer in the\n            documentation and/or other materials provided with the distribution.\n    \n          * Neither the name of Adobe Systems Incorporated nor the names of its\n            contributors may be used to endorse or promote products derived from\n            this software without specific prior written permission.\n    \n          THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n          IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n          THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n          PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n          CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n          EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n          PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n          PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n          LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n          NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n          SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n        */\n        /*\n        JPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009\n    \n        Basic GUI blocking jpeg encoder\n        */\n    \n        function JPEGEncoder(quality) {\n          var self = this;\n            var fround = Math.round;\n            var ffloor = Math.floor;\n            var YTable = new Array(64);\n            var UVTable = new Array(64);\n            var fdtbl_Y = new Array(64);\n            var fdtbl_UV = new Array(64);\n            var YDC_HT;\n            var UVDC_HT;\n            var YAC_HT;\n            var UVAC_HT;\n    \n            var bitcode = new Array(65535);\n            var category = new Array(65535);\n            var outputfDCTQuant = new Array(64);\n            var DU = new Array(64);\n            var byteout = [];\n            var bytenew = 0;\n            var bytepos = 7;\n    \n            var YDU = new Array(64);\n            var UDU = new Array(64);\n            var VDU = new Array(64);\n            var clt = new Array(256);\n            var RGB_YUV_TABLE = new Array(2048);\n            var currentQuality;\n    \n            var ZigZag = [\n                     0, 1, 5, 6,14,15,27,28,\n                     2, 4, 7,13,16,26,29,42,\n                     3, 8,12,17,25,30,41,43,\n                     9,11,18,24,31,40,44,53,\n                    10,19,23,32,39,45,52,54,\n                    20,22,33,38,46,51,55,60,\n                    21,34,37,47,50,56,59,61,\n                    35,36,48,49,57,58,62,63\n                ];\n    \n            var std_dc_luminance_nrcodes = [0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0];\n            var std_dc_luminance_values = [0,1,2,3,4,5,6,7,8,9,10,11];\n            var std_ac_luminance_nrcodes = [0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d];\n            var std_ac_luminance_values = [\n                    0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,\n                    0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,\n                    0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,\n                    0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,\n                    0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,\n                    0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,\n                    0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,\n                    0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,\n                    0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,\n                    0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,\n                    0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,\n                    0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,\n                    0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,\n                    0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,\n                    0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,\n                    0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,\n                    0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,\n                    0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,\n                    0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,\n                    0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,\n                    0xf9,0xfa\n                ];\n    \n            var std_dc_chrominance_nrcodes = [0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0];\n            var std_dc_chrominance_values = [0,1,2,3,4,5,6,7,8,9,10,11];\n            var std_ac_chrominance_nrcodes = [0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77];\n            var std_ac_chrominance_values = [\n                    0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,\n                    0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,\n                    0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,\n                    0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,\n                    0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,\n                    0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,\n                    0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,\n                    0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,\n                    0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,\n                    0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,\n                    0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,\n                    0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,\n                    0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,\n                    0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,\n                    0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,\n                    0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,\n                    0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,\n                    0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,\n                    0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,\n                    0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,\n                    0xf9,0xfa\n                ];\n    \n            function initQuantTables(sf){\n                    var YQT = [\n                        16, 11, 10, 16, 24, 40, 51, 61,\n                        12, 12, 14, 19, 26, 58, 60, 55,\n                        14, 13, 16, 24, 40, 57, 69, 56,\n                        14, 17, 22, 29, 51, 87, 80, 62,\n                        18, 22, 37, 56, 68,109,103, 77,\n                        24, 35, 55, 64, 81,104,113, 92,\n                        49, 64, 78, 87,103,121,120,101,\n                        72, 92, 95, 98,112,100,103, 99\n                    ];\n    \n                    for (var i = 0; i < 64; i++) {\n                        var t = ffloor((YQT[i]*sf+50)/100);\n                        if (t < 1) {\n                            t = 1;\n                        } else if (t > 255) {\n                            t = 255;\n                        }\n                        YTable[ZigZag[i]] = t;\n                    }\n                    var UVQT = [\n                        17, 18, 24, 47, 99, 99, 99, 99,\n                        18, 21, 26, 66, 99, 99, 99, 99,\n                        24, 26, 56, 99, 99, 99, 99, 99,\n                        47, 66, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99\n                    ];\n                    for (var j = 0; j < 64; j++) {\n                        var u = ffloor((UVQT[j]*sf+50)/100);\n                        if (u < 1) {\n                            u = 1;\n                        } else if (u > 255) {\n                            u = 255;\n                        }\n                        UVTable[ZigZag[j]] = u;\n                    }\n                    var aasf = [\n                        1.0, 1.387039845, 1.306562965, 1.175875602,\n                        1.0, 0.785694958, 0.541196100, 0.275899379\n                    ];\n                    var k = 0;\n                    for (var row = 0; row < 8; row++)\n                    {\n                        for (var col = 0; col < 8; col++)\n                        {\n                            fdtbl_Y[k]  = (1.0 / (YTable [ZigZag[k]] * aasf[row] * aasf[col] * 8.0));\n                            fdtbl_UV[k] = (1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0));\n                            k++;\n                        }\n                    }\n                }\n    \n                function computeHuffmanTbl(nrcodes, std_table){\n                    var codevalue = 0;\n                    var pos_in_table = 0;\n                    var HT = new Array();\n                    for (var k = 1; k <= 16; k++) {\n                        for (var j = 1; j <= nrcodes[k]; j++) {\n                            HT[std_table[pos_in_table]] = [];\n                            HT[std_table[pos_in_table]][0] = codevalue;\n                            HT[std_table[pos_in_table]][1] = k;\n                            pos_in_table++;\n                            codevalue++;\n                        }\n                        codevalue*=2;\n                    }\n                    return HT;\n                }\n    \n                function initHuffmanTbl()\n                {\n                    YDC_HT = computeHuffmanTbl(std_dc_luminance_nrcodes,std_dc_luminance_values);\n                    UVDC_HT = computeHuffmanTbl(std_dc_chrominance_nrcodes,std_dc_chrominance_values);\n                    YAC_HT = computeHuffmanTbl(std_ac_luminance_nrcodes,std_ac_luminance_values);\n                    UVAC_HT = computeHuffmanTbl(std_ac_chrominance_nrcodes,std_ac_chrominance_values);\n                }\n    \n                function initCategoryNumber()\n                {\n                    var nrlower = 1;\n                    var nrupper = 2;\n                    for (var cat = 1; cat <= 15; cat++) {\n                        //Positive numbers\n                        for (var nr = nrlower; nr<nrupper; nr++) {\n                            category[32767+nr] = cat;\n                            bitcode[32767+nr] = [];\n                            bitcode[32767+nr][1] = cat;\n                            bitcode[32767+nr][0] = nr;\n                        }\n                        //Negative numbers\n                        for (var nrneg =-(nrupper-1); nrneg<=-nrlower; nrneg++) {\n                            category[32767+nrneg] = cat;\n                            bitcode[32767+nrneg] = [];\n                            bitcode[32767+nrneg][1] = cat;\n                            bitcode[32767+nrneg][0] = nrupper-1+nrneg;\n                        }\n                        nrlower <<= 1;\n                        nrupper <<= 1;\n                    }\n                }\n    \n                function initRGBYUVTable() {\n                    for(var i = 0; i < 256;i++) {\n                        RGB_YUV_TABLE[i]            =  19595 * i;\n                        RGB_YUV_TABLE[(i+ 256)>>0]  =  38470 * i;\n                        RGB_YUV_TABLE[(i+ 512)>>0]  =   7471 * i + 0x8000;\n                        RGB_YUV_TABLE[(i+ 768)>>0]  = -11059 * i;\n                        RGB_YUV_TABLE[(i+1024)>>0]  = -21709 * i;\n                        RGB_YUV_TABLE[(i+1280)>>0]  =  32768 * i + 0x807FFF;\n                        RGB_YUV_TABLE[(i+1536)>>0]  = -27439 * i;\n                        RGB_YUV_TABLE[(i+1792)>>0]  = - 5329 * i;\n                    }\n                }\n    \n                // IO functions\n                function writeBits(bs)\n                {\n                    var value = bs[0];\n                    var posval = bs[1]-1;\n                    while ( posval >= 0 ) {\n                        if (value & (1 << posval) ) {\n                            bytenew |= (1 << bytepos);\n                        }\n                        posval--;\n                        bytepos--;\n                        if (bytepos < 0) {\n                            if (bytenew == 0xFF) {\n                                writeByte(0xFF);\n                                writeByte(0);\n                            }\n                            else {\n                                writeByte(bytenew);\n                            }\n                            bytepos=7;\n                            bytenew=0;\n                        }\n                    }\n                }\n    \n                function writeByte(value)\n                {\n                    byteout.push(clt[value]); // write char directly instead of converting later\n                }\n    \n                function writeWord(value)\n                {\n                    writeByte((value>>8)&0xFF);\n                    writeByte((value   )&0xFF);\n                }\n    \n                // DCT & quantization core\n                function fDCTQuant(data, fdtbl)\n                {\n                    var d0, d1, d2, d3, d4, d5, d6, d7;\n                    /* Pass 1: process rows. */\n                    var dataOff=0;\n                    var i;\n                    var I8 = 8;\n                    var I64 = 64;\n                    for (i=0; i<I8; ++i)\n                    {\n                        d0 = data[dataOff];\n                        d1 = data[dataOff+1];\n                        d2 = data[dataOff+2];\n                        d3 = data[dataOff+3];\n                        d4 = data[dataOff+4];\n                        d5 = data[dataOff+5];\n                        d6 = data[dataOff+6];\n                        d7 = data[dataOff+7];\n    \n                        var tmp0 = d0 + d7;\n                        var tmp7 = d0 - d7;\n                        var tmp1 = d1 + d6;\n                        var tmp6 = d1 - d6;\n                        var tmp2 = d2 + d5;\n                        var tmp5 = d2 - d5;\n                        var tmp3 = d3 + d4;\n                        var tmp4 = d3 - d4;\n    \n                        /* Even part */\n                        var tmp10 = tmp0 + tmp3;    /* phase 2 */\n                        var tmp13 = tmp0 - tmp3;\n                        var tmp11 = tmp1 + tmp2;\n                        var tmp12 = tmp1 - tmp2;\n    \n                        data[dataOff] = tmp10 + tmp11; /* phase 3 */\n                        data[dataOff+4] = tmp10 - tmp11;\n    \n                        var z1 = (tmp12 + tmp13) * 0.707106781; /* c4 */\n                        data[dataOff+2] = tmp13 + z1; /* phase 5 */\n                        data[dataOff+6] = tmp13 - z1;\n    \n                        /* Odd part */\n                        tmp10 = tmp4 + tmp5; /* phase 2 */\n                        tmp11 = tmp5 + tmp6;\n                        tmp12 = tmp6 + tmp7;\n    \n                        /* The rotator is modified from fig 4-8 to avoid extra negations. */\n                        var z5 = (tmp10 - tmp12) * 0.382683433; /* c6 */\n                        var z2 = 0.541196100 * tmp10 + z5; /* c2-c6 */\n                        var z4 = 1.306562965 * tmp12 + z5; /* c2+c6 */\n                        var z3 = tmp11 * 0.707106781; /* c4 */\n    \n                        var z11 = tmp7 + z3;    /* phase 5 */\n                        var z13 = tmp7 - z3;\n    \n                        data[dataOff+5] = z13 + z2; /* phase 6 */\n                        data[dataOff+3] = z13 - z2;\n                        data[dataOff+1] = z11 + z4;\n                        data[dataOff+7] = z11 - z4;\n    \n                        dataOff += 8; /* advance pointer to next row */\n                    }\n    \n                    /* Pass 2: process columns. */\n                    dataOff = 0;\n                    for (i=0; i<I8; ++i)\n                    {\n                        d0 = data[dataOff];\n                        d1 = data[dataOff + 8];\n                        d2 = data[dataOff + 16];\n                        d3 = data[dataOff + 24];\n                        d4 = data[dataOff + 32];\n                        d5 = data[dataOff + 40];\n                        d6 = data[dataOff + 48];\n                        d7 = data[dataOff + 56];\n    \n                        var tmp0p2 = d0 + d7;\n                        var tmp7p2 = d0 - d7;\n                        var tmp1p2 = d1 + d6;\n                        var tmp6p2 = d1 - d6;\n                        var tmp2p2 = d2 + d5;\n                        var tmp5p2 = d2 - d5;\n                        var tmp3p2 = d3 + d4;\n                        var tmp4p2 = d3 - d4;\n    \n                        /* Even part */\n                        var tmp10p2 = tmp0p2 + tmp3p2;  /* phase 2 */\n                        var tmp13p2 = tmp0p2 - tmp3p2;\n                        var tmp11p2 = tmp1p2 + tmp2p2;\n                        var tmp12p2 = tmp1p2 - tmp2p2;\n    \n                        data[dataOff] = tmp10p2 + tmp11p2; /* phase 3 */\n                        data[dataOff+32] = tmp10p2 - tmp11p2;\n    \n                        var z1p2 = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */\n                        data[dataOff+16] = tmp13p2 + z1p2; /* phase 5 */\n                        data[dataOff+48] = tmp13p2 - z1p2;\n    \n                        /* Odd part */\n                        tmp10p2 = tmp4p2 + tmp5p2; /* phase 2 */\n                        tmp11p2 = tmp5p2 + tmp6p2;\n                        tmp12p2 = tmp6p2 + tmp7p2;\n    \n                        /* The rotator is modified from fig 4-8 to avoid extra negations. */\n                        var z5p2 = (tmp10p2 - tmp12p2) * 0.382683433; /* c6 */\n                        var z2p2 = 0.541196100 * tmp10p2 + z5p2; /* c2-c6 */\n                        var z4p2 = 1.306562965 * tmp12p2 + z5p2; /* c2+c6 */\n                        var z3p2 = tmp11p2 * 0.707106781; /* c4 */\n    \n                        var z11p2 = tmp7p2 + z3p2;  /* phase 5 */\n                        var z13p2 = tmp7p2 - z3p2;\n    \n                        data[dataOff+40] = z13p2 + z2p2; /* phase 6 */\n                        data[dataOff+24] = z13p2 - z2p2;\n                        data[dataOff+ 8] = z11p2 + z4p2;\n                        data[dataOff+56] = z11p2 - z4p2;\n    \n                        dataOff++; /* advance pointer to next column */\n                    }\n    \n                    // Quantize/descale the coefficients\n                    var fDCTQuant;\n                    for (i=0; i<I64; ++i)\n                    {\n                        // Apply the quantization and scaling factor & Round to nearest integer\n                        fDCTQuant = data[i]*fdtbl[i];\n                        outputfDCTQuant[i] = (fDCTQuant > 0.0) ? ((fDCTQuant + 0.5)|0) : ((fDCTQuant - 0.5)|0);\n                        //outputfDCTQuant[i] = fround(fDCTQuant);\n    \n                    }\n                    return outputfDCTQuant;\n                }\n    \n                function writeAPP0()\n                {\n                    writeWord(0xFFE0); // marker\n                    writeWord(16); // length\n                    writeByte(0x4A); // J\n                    writeByte(0x46); // F\n                    writeByte(0x49); // I\n                    writeByte(0x46); // F\n                    writeByte(0); // = \"JFIF\",'\\0'\n                    writeByte(1); // versionhi\n                    writeByte(1); // versionlo\n                    writeByte(0); // xyunits\n                    writeWord(1); // xdensity\n                    writeWord(1); // ydensity\n                    writeByte(0); // thumbnwidth\n                    writeByte(0); // thumbnheight\n                }\n    \n                function writeSOF0(width, height)\n                {\n                    writeWord(0xFFC0); // marker\n                    writeWord(17);   // length, truecolor YUV JPG\n                    writeByte(8);    // precision\n                    writeWord(height);\n                    writeWord(width);\n                    writeByte(3);    // nrofcomponents\n                    writeByte(1);    // IdY\n                    writeByte(0x11); // HVY\n                    writeByte(0);    // QTY\n                    writeByte(2);    // IdU\n                    writeByte(0x11); // HVU\n                    writeByte(1);    // QTU\n                    writeByte(3);    // IdV\n                    writeByte(0x11); // HVV\n                    writeByte(1);    // QTV\n                }\n    \n                function writeDQT()\n                {\n                    writeWord(0xFFDB); // marker\n                    writeWord(132);    // length\n                    writeByte(0);\n                    for (var i=0; i<64; i++) {\n                        writeByte(YTable[i]);\n                    }\n                    writeByte(1);\n                    for (var j=0; j<64; j++) {\n                        writeByte(UVTable[j]);\n                    }\n                }\n    \n                function writeDHT()\n                {\n                    writeWord(0xFFC4); // marker\n                    writeWord(0x01A2); // length\n    \n                    writeByte(0); // HTYDCinfo\n                    for (var i=0; i<16; i++) {\n                        writeByte(std_dc_luminance_nrcodes[i+1]);\n                    }\n                    for (var j=0; j<=11; j++) {\n                        writeByte(std_dc_luminance_values[j]);\n                    }\n    \n                    writeByte(0x10); // HTYACinfo\n                    for (var k=0; k<16; k++) {\n                        writeByte(std_ac_luminance_nrcodes[k+1]);\n                    }\n                    for (var l=0; l<=161; l++) {\n                        writeByte(std_ac_luminance_values[l]);\n                    }\n    \n                    writeByte(1); // HTUDCinfo\n                    for (var m=0; m<16; m++) {\n                        writeByte(std_dc_chrominance_nrcodes[m+1]);\n                    }\n                    for (var n=0; n<=11; n++) {\n                        writeByte(std_dc_chrominance_values[n]);\n                    }\n    \n                    writeByte(0x11); // HTUACinfo\n                    for (var o=0; o<16; o++) {\n                        writeByte(std_ac_chrominance_nrcodes[o+1]);\n                    }\n                    for (var p=0; p<=161; p++) {\n                        writeByte(std_ac_chrominance_values[p]);\n                    }\n                }\n    \n                function writeSOS()\n                {\n                    writeWord(0xFFDA); // marker\n                    writeWord(12); // length\n                    writeByte(3); // nrofcomponents\n                    writeByte(1); // IdY\n                    writeByte(0); // HTY\n                    writeByte(2); // IdU\n                    writeByte(0x11); // HTU\n                    writeByte(3); // IdV\n                    writeByte(0x11); // HTV\n                    writeByte(0); // Ss\n                    writeByte(0x3f); // Se\n                    writeByte(0); // Bf\n                }\n    \n                function processDU(CDU, fdtbl, DC, HTDC, HTAC){\n                    var EOB = HTAC[0x00];\n                    var M16zeroes = HTAC[0xF0];\n                    var pos;\n                    var I16 = 16;\n                    var I63 = 63;\n                    var I64 = 64;\n                    var DU_DCT = fDCTQuant(CDU, fdtbl);\n                    //ZigZag reorder\n                    for (var j=0;j<I64;++j) {\n                        DU[ZigZag[j]]=DU_DCT[j];\n                    }\n                    var Diff = DU[0] - DC; DC = DU[0];\n                    //Encode DC\n                    if (Diff==0) {\n                        writeBits(HTDC[0]); // Diff might be 0\n                    } else {\n                        pos = 32767+Diff;\n                        writeBits(HTDC[category[pos]]);\n                        writeBits(bitcode[pos]);\n                    }\n                    //Encode ACs\n                    var end0pos = 63; // was const... which is crazy\n                    for (; (end0pos>0)&&(DU[end0pos]==0); end0pos--) {};\n                    //end0pos = first element in reverse order !=0\n                    if ( end0pos == 0) {\n                        writeBits(EOB);\n                        return DC;\n                    }\n                    var i = 1;\n                    var lng;\n                    while ( i <= end0pos ) {\n                        var startpos = i;\n                        for (; (DU[i]==0) && (i<=end0pos); ++i) {}\n                        var nrzeroes = i-startpos;\n                        if ( nrzeroes >= I16 ) {\n                            lng = nrzeroes>>4;\n                            for (var nrmarker=1; nrmarker <= lng; ++nrmarker)\n                                writeBits(M16zeroes);\n                            nrzeroes = nrzeroes&0xF;\n                        }\n                        pos = 32767+DU[i];\n                        writeBits(HTAC[(nrzeroes<<4)+category[pos]]);\n                        writeBits(bitcode[pos]);\n                        i++;\n                    }\n                    if ( end0pos != I63 ) {\n                        writeBits(EOB);\n                    }\n                    return DC;\n                }\n    \n                function initCharLookupTable(){\n                    var sfcc = String.fromCharCode;\n                    for(var i=0; i < 256; i++){ ///// ACHTUNG // 255\n                        clt[i] = sfcc(i);\n                    }\n                }\n    \n                this.encode = function(image,quality) // image data object\n                {\n                    // var time_start = new Date().getTime();\n    \n                    if(quality) setQuality(quality);\n    \n                    // Initialize bit writer\n                    byteout = new Array();\n                    bytenew=0;\n                    bytepos=7;\n    \n                    // Add JPEG headers\n                    writeWord(0xFFD8); // SOI\n                    writeAPP0();\n                    writeDQT();\n                    writeSOF0(image.width,image.height);\n                    writeDHT();\n                    writeSOS();\n    \n    \n                    // Encode 8x8 macroblocks\n                    var DCY=0;\n                    var DCU=0;\n                    var DCV=0;\n    \n                    bytenew=0;\n                    bytepos=7;\n    \n    \n                    this.encode.displayName = \"_encode_\";\n    \n                    var imageData = image.data;\n                    var width = image.width;\n                    var height = image.height;\n    \n                    var quadWidth = width*4;\n                    var tripleWidth = width*3;\n    \n                    var x, y = 0;\n                    var r, g, b;\n                    var start,p, col,row,pos;\n                    while(y < height){\n                        x = 0;\n                        while(x < quadWidth){\n                        start = quadWidth * y + x;\n                        p = start;\n                        col = -1;\n                        row = 0;\n    \n                        for(pos=0; pos < 64; pos++){\n                            row = pos >> 3;// /8\n                            col = ( pos & 7 ) * 4; // %8\n                            p = start + ( row * quadWidth ) + col;\n    \n                            if(y+row >= height){ // padding bottom\n                                p-= (quadWidth*(y+1+row-height));\n                            }\n    \n                            if(x+col >= quadWidth){ // padding right\n                                p-= ((x+col) - quadWidth +4)\n                            }\n    \n                            r = imageData[ p++ ];\n                            g = imageData[ p++ ];\n                            b = imageData[ p++ ];\n    \n    \n                            /* // calculate YUV values dynamically\n                            YDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80\n                            UDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b));\n                            VDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b));\n                            */\n    \n                            // use lookup table (slightly faster)\n                            YDU[pos] = ((RGB_YUV_TABLE[r]             + RGB_YUV_TABLE[(g +  256)>>0] + RGB_YUV_TABLE[(b +  512)>>0]) >> 16)-128;\n                            UDU[pos] = ((RGB_YUV_TABLE[(r +  768)>>0] + RGB_YUV_TABLE[(g + 1024)>>0] + RGB_YUV_TABLE[(b + 1280)>>0]) >> 16)-128;\n                            VDU[pos] = ((RGB_YUV_TABLE[(r + 1280)>>0] + RGB_YUV_TABLE[(g + 1536)>>0] + RGB_YUV_TABLE[(b + 1792)>>0]) >> 16)-128;\n    \n                        }\n    \n                        DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n                        DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n                        DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n                        x+=32;\n                        }\n                        y+=8;\n                    }\n    \n    \n                    ////////////////////////////////////////////////////////////////\n    \n                    // Do the bit alignment of the EOI marker\n                    if ( bytepos >= 0 ) {\n                        var fillbits = [];\n                        fillbits[1] = bytepos+1;\n                        fillbits[0] = (1<<(bytepos+1))-1;\n                        writeBits(fillbits);\n                    }\n    \n                    writeWord(0xFFD9); //EOI\n    \n                    var jpegDataUri = 'data:image/jpeg;base64,' + btoa(byteout.join(''));\n    \n                    byteout = [];\n    \n                    // benchmarking\n                    // var duration = new Date().getTime() - time_start;\n                    // console.log('Encoding time: '+ currentQuality + 'ms');\n                    //\n    \n                    return jpegDataUri\n            };\n    \n            function setQuality(quality){\n                if (quality <= 0) {\n                    quality = 1;\n                }\n                if (quality > 100) {\n                    quality = 100;\n                }\n    \n                if(currentQuality == quality) return; // don't recalc if unchanged\n    \n                var sf = 0;\n                if (quality < 50) {\n                    sf = Math.floor(5000 / quality);\n                } else {\n                    sf = Math.floor(200 - quality*2);\n                }\n    \n                initQuantTables(sf);\n                currentQuality = quality;\n                // console.log('Quality set to: '+quality +'%');\n            }\n    \n            function init(){\n                // var time_start = new Date().getTime();\n                if(!quality) quality = 50;\n                // Create tables\n                initCharLookupTable();\n                initHuffmanTbl();\n                initCategoryNumber();\n                initRGBYUVTable();\n    \n                setQuality(quality);\n                // var duration = new Date().getTime() - time_start;\n                // console.log('Initialization '+ duration + 'ms');\n            }\n    \n            init();\n    \n        };\n    \n        JPEGEncoder.encode = function( data, quality ) {\n            var encoder = new JPEGEncoder( quality );\n    \n            return encoder.encode( data );\n        };\n    \n        return JPEGEncoder;\n    });\n    /**\n     * @fileOverview Fix android canvas.toDataUrl bug.\n     */\n    define('runtime/html5/androidpatch',[\n        'runtime/html5/util',\n        'runtime/html5/jpegencoder',\n        'base'\n    ], function( Util, encoder, Base ) {\n        var origin = Util.canvasToDataUrl,\n            supportJpeg;\n    \n        Util.canvasToDataUrl = function( canvas, type, quality ) {\n            var ctx, w, h, fragement, parts;\n    \n            // 非android手机直接跳过。\n            if ( !Base.os.android ) {\n                return origin.apply( null, arguments );\n            }\n    \n            // 检测是否canvas支持jpeg导出，根据数据格式来判断。\n            // JPEG 前两位分别是：255, 216\n            if ( type === 'image/jpeg' && typeof supportJpeg === 'undefined' ) {\n                fragement = origin.apply( null, arguments );\n    \n                parts = fragement.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    fragement = atob( parts[ 1 ] );\n                } else {\n                    fragement = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                fragement = fragement.substring( 0, 2 );\n    \n                supportJpeg = fragement.charCodeAt( 0 ) === 255 &&\n                        fragement.charCodeAt( 1 ) === 216;\n            }\n    \n            // 只有在android环境下才修复\n            if ( type === 'image/jpeg' && !supportJpeg ) {\n                w = canvas.width;\n                h = canvas.height;\n                ctx = canvas.getContext('2d');\n    \n                return encoder.encode( ctx.getImageData( 0, 0, w, h ), quality );\n            }\n    \n            return origin.apply( null, arguments );\n        };\n    });\n    /**\n     * @fileOverview Image\n     */\n    define('runtime/html5/image',[\n        'base',\n        'runtime/html5/runtime',\n        'runtime/html5/util'\n    ], function( Base, Html5Runtime, Util ) {\n    \n        var BLANK = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D';\n    \n        return Html5Runtime.register( 'Image', {\n    \n            // flag: 标记是否被修改过。\n            modified: false,\n    \n            init: function() {\n                var me = this,\n                    img = new Image();\n    \n                img.onload = function() {\n    \n                    me._info = {\n                        type: me.type,\n                        width: this.width,\n                        height: this.height\n                    };\n    \n                    // 读取meta信息。\n                    if ( !me._metas && 'image/jpeg' === me.type ) {\n                        Util.parseMeta( me._blob, function( error, ret ) {\n                            me._metas = ret;\n                            me.owner.trigger('load');\n                        });\n                    } else {\n                        me.owner.trigger('load');\n                    }\n                };\n    \n                img.onerror = function() {\n                    me.owner.trigger('error');\n                };\n    \n                me._img = img;\n            },\n    \n            loadFromBlob: function( blob ) {\n                var me = this,\n                    img = me._img;\n    \n                me._blob = blob;\n                me.type = blob.type;\n                img.src = Util.createObjectURL( blob.getSource() );\n                me.owner.once( 'load', function() {\n                    Util.revokeObjectURL( img.src );\n                });\n            },\n    \n            resize: function( width, height ) {\n                var canvas = this._canvas ||\n                        (this._canvas = document.createElement('canvas'));\n    \n                this._resize( this._img, canvas, width, height );\n                this._blob = null;    // 没用了，可以删掉了。\n                this.modified = true;\n                this.owner.trigger( 'complete', 'resize' );\n            },\n    \n            crop: function( x, y, w, h, s ) {\n                var cvs = this._canvas ||\n                        (this._canvas = document.createElement('canvas')),\n                    opts = this.options,\n                    img = this._img,\n                    iw = img.naturalWidth,\n                    ih = img.naturalHeight,\n                    orientation = this.getOrientation();\n    \n                s = s || 1;\n    \n                // todo 解决 orientation 的问题。\n                // values that require 90 degree rotation\n                // if ( ~[ 5, 6, 7, 8 ].indexOf( orientation ) ) {\n    \n                //     switch ( orientation ) {\n                //         case 6:\n                //             tmp = x;\n                //             x = y;\n                //             y = iw * s - tmp - w;\n                //             console.log(ih * s, tmp, w)\n                //             break;\n                //     }\n    \n                //     (w ^= h, h ^= w, w ^= h);\n                // }\n    \n                cvs.width = w;\n                cvs.height = h;\n    \n                opts.preserveHeaders || this._rotate2Orientaion( cvs, orientation );\n                this._renderImageToCanvas( cvs, img, -x, -y, iw * s, ih * s );\n    \n                this._blob = null;    // 没用了，可以删掉了。\n                this.modified = true;\n                this.owner.trigger( 'complete', 'crop' );\n            },\n    \n            getAsBlob: function( type ) {\n                var blob = this._blob,\n                    opts = this.options,\n                    canvas;\n    \n                type = type || this.type;\n    \n                // blob需要重新生成。\n                if ( this.modified || this.type !== type ) {\n                    canvas = this._canvas;\n    \n                    if ( type === 'image/jpeg' ) {\n    \n                        blob = Util.canvasToDataUrl( canvas, type, opts.quality );\n    \n                        if ( opts.preserveHeaders && this._metas &&\n                                this._metas.imageHead ) {\n    \n                            blob = Util.dataURL2ArrayBuffer( blob );\n                            blob = Util.updateImageHead( blob,\n                                    this._metas.imageHead );\n                            blob = Util.arrayBufferToBlob( blob, type );\n                            return blob;\n                        }\n                    } else {\n                        blob = Util.canvasToDataUrl( canvas, type );\n                    }\n    \n                    blob = Util.dataURL2Blob( blob );\n                }\n    \n                return blob;\n            },\n    \n            getAsDataUrl: function( type ) {\n                var opts = this.options;\n    \n                type = type || this.type;\n    \n                if ( type === 'image/jpeg' ) {\n                    return Util.canvasToDataUrl( this._canvas, type, opts.quality );\n                } else {\n                    return this._canvas.toDataURL( type );\n                }\n            },\n    \n            getOrientation: function() {\n                return this._metas && this._metas.exif &&\n                        this._metas.exif.get('Orientation') || 1;\n            },\n    \n            info: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._info = val;\n                    return this;\n                }\n    \n                // getter\n                return this._info;\n            },\n    \n            meta: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._meta = val;\n                    return this;\n                }\n    \n                // getter\n                return this._meta;\n            },\n    \n            destroy: function() {\n                var canvas = this._canvas;\n                this._img.onload = null;\n    \n                if ( canvas ) {\n                    canvas.getContext('2d')\n                            .clearRect( 0, 0, canvas.width, canvas.height );\n                    canvas.width = canvas.height = 0;\n                    this._canvas = null;\n                }\n    \n                // 释放内存。非常重要，否则释放不了image的内存。\n                this._img.src = BLANK;\n                this._img = this._blob = null;\n            },\n    \n            _resize: function( img, cvs, width, height ) {\n                var opts = this.options,\n                    naturalWidth = img.width,\n                    naturalHeight = img.height,\n                    orientation = this.getOrientation(),\n                    scale, w, h, x, y;\n    \n                // values that require 90 degree rotation\n                if ( ~[ 5, 6, 7, 8 ].indexOf( orientation ) ) {\n    \n                    // 交换width, height的值。\n                    width ^= height;\n                    height ^= width;\n                    width ^= height;\n                }\n    \n                scale = Math[ opts.crop ? 'max' : 'min' ]( width / naturalWidth,\n                        height / naturalHeight );\n    \n                // 不允许放大。\n                opts.allowMagnify || (scale = Math.min( 1, scale ));\n    \n                w = naturalWidth * scale;\n                h = naturalHeight * scale;\n    \n                if ( opts.crop ) {\n                    cvs.width = width;\n                    cvs.height = height;\n                } else {\n                    cvs.width = w;\n                    cvs.height = h;\n                }\n    \n                x = (cvs.width - w) / 2;\n                y = (cvs.height - h) / 2;\n    \n                opts.preserveHeaders || this._rotate2Orientaion( cvs, orientation );\n    \n                this._renderImageToCanvas( cvs, img, x, y, w, h );\n            },\n    \n            _rotate2Orientaion: function( canvas, orientation ) {\n                var width = canvas.width,\n                    height = canvas.height,\n                    ctx = canvas.getContext('2d');\n    \n                switch ( orientation ) {\n                    case 5:\n                    case 6:\n                    case 7:\n                    case 8:\n                        canvas.width = height;\n                        canvas.height = width;\n                        break;\n                }\n    \n                switch ( orientation ) {\n                    case 2:    // horizontal flip\n                        ctx.translate( width, 0 );\n                        ctx.scale( -1, 1 );\n                        break;\n    \n                    case 3:    // 180 rotate left\n                        ctx.translate( width, height );\n                        ctx.rotate( Math.PI );\n                        break;\n    \n                    case 4:    // vertical flip\n                        ctx.translate( 0, height );\n                        ctx.scale( 1, -1 );\n                        break;\n    \n                    case 5:    // vertical flip + 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.scale( 1, -1 );\n                        break;\n    \n                    case 6:    // 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.translate( 0, -height );\n                        break;\n    \n                    case 7:    // horizontal flip + 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.translate( width, -height );\n                        ctx.scale( -1, 1 );\n                        break;\n    \n                    case 8:    // 90 rotate left\n                        ctx.rotate( -0.5 * Math.PI );\n                        ctx.translate( -width, 0 );\n                        break;\n                }\n            },\n    \n            // https://github.com/stomita/ios-imagefile-megapixel/\n            // blob/master/src/megapix-image.js\n            _renderImageToCanvas: (function() {\n    \n                // 如果不是ios, 不需要这么复杂！\n                if ( !Base.os.ios ) {\n                    return function( canvas ) {\n                        var args = Base.slice( arguments, 1 ),\n                            ctx = canvas.getContext('2d');\n    \n                        ctx.drawImage.apply( ctx, args );\n                    };\n                }\n    \n                /**\n                 * Detecting vertical squash in loaded image.\n                 * Fixes a bug which squash image vertically while drawing into\n                 * canvas for some images.\n                 */\n                function detectVerticalSquash( img, iw, ih ) {\n                    var canvas = document.createElement('canvas'),\n                        ctx = canvas.getContext('2d'),\n                        sy = 0,\n                        ey = ih,\n                        py = ih,\n                        data, alpha, ratio;\n    \n    \n                    canvas.width = 1;\n                    canvas.height = ih;\n                    ctx.drawImage( img, 0, 0 );\n                    data = ctx.getImageData( 0, 0, 1, ih ).data;\n    \n                    // search image edge pixel position in case\n                    // it is squashed vertically.\n                    while ( py > sy ) {\n                        alpha = data[ (py - 1) * 4 + 3 ];\n    \n                        if ( alpha === 0 ) {\n                            ey = py;\n                        } else {\n                            sy = py;\n                        }\n    \n                        py = (ey + sy) >> 1;\n                    }\n    \n                    ratio = (py / ih);\n                    return (ratio === 0) ? 1 : ratio;\n                }\n    \n                // fix ie7 bug\n                // http://stackoverflow.com/questions/11929099/\n                // html5-canvas-drawimage-ratio-bug-ios\n                if ( Base.os.ios >= 7 ) {\n                    return function( canvas, img, x, y, w, h ) {\n                        var iw = img.naturalWidth,\n                            ih = img.naturalHeight,\n                            vertSquashRatio = detectVerticalSquash( img, iw, ih );\n    \n                        return canvas.getContext('2d').drawImage( img, 0, 0,\n                                iw * vertSquashRatio, ih * vertSquashRatio,\n                                x, y, w, h );\n                    };\n                }\n    \n                /**\n                 * Detect subsampling in loaded image.\n                 * In iOS, larger images than 2M pixels may be\n                 * subsampled in rendering.\n                 */\n                function detectSubsampling( img ) {\n                    var iw = img.naturalWidth,\n                        ih = img.naturalHeight,\n                        canvas, ctx;\n    \n                    // subsampling may happen overmegapixel image\n                    if ( iw * ih > 1024 * 1024 ) {\n                        canvas = document.createElement('canvas');\n                        canvas.width = canvas.height = 1;\n                        ctx = canvas.getContext('2d');\n                        ctx.drawImage( img, -iw + 1, 0 );\n    \n                        // subsampled image becomes half smaller in rendering size.\n                        // check alpha channel value to confirm image is covering\n                        // edge pixel or not. if alpha value is 0\n                        // image is not covering, hence subsampled.\n                        return ctx.getImageData( 0, 0, 1, 1 ).data[ 3 ] === 0;\n                    } else {\n                        return false;\n                    }\n                }\n    \n    \n                return function( canvas, img, x, y, width, height ) {\n                    var iw = img.naturalWidth,\n                        ih = img.naturalHeight,\n                        ctx = canvas.getContext('2d'),\n                        subsampled = detectSubsampling( img ),\n                        doSquash = this.type === 'image/jpeg',\n                        d = 1024,\n                        sy = 0,\n                        dy = 0,\n                        tmpCanvas, tmpCtx, vertSquashRatio, dw, dh, sx, dx;\n    \n                    if ( subsampled ) {\n                        iw /= 2;\n                        ih /= 2;\n                    }\n    \n                    ctx.save();\n                    tmpCanvas = document.createElement('canvas');\n                    tmpCanvas.width = tmpCanvas.height = d;\n    \n                    tmpCtx = tmpCanvas.getContext('2d');\n                    vertSquashRatio = doSquash ?\n                            detectVerticalSquash( img, iw, ih ) : 1;\n    \n                    dw = Math.ceil( d * width / iw );\n                    dh = Math.ceil( d * height / ih / vertSquashRatio );\n    \n                    while ( sy < ih ) {\n                        sx = 0;\n                        dx = 0;\n                        while ( sx < iw ) {\n                            tmpCtx.clearRect( 0, 0, d, d );\n                            tmpCtx.drawImage( img, -sx, -sy );\n                            ctx.drawImage( tmpCanvas, 0, 0, d, d,\n                                    x + dx, y + dy, dw, dh );\n                            sx += d;\n                            dx += dw;\n                        }\n                        sy += d;\n                        dy += dh;\n                    }\n                    ctx.restore();\n                    tmpCanvas = tmpCtx = null;\n                };\n            })()\n        });\n    });\n    /**\n     * @fileOverview Transport\n     * @todo 支持chunked传输，优势：\n     * 可以将大文件分成小块，挨个传输，可以提高大文件成功率，当失败的时候，也只需要重传那小部分，\n     * 而不需要重头再传一次。另外断点续传也需要用chunked方式。\n     */\n    define('runtime/html5/transport',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var noop = Base.noop,\n            $ = Base.$;\n    \n        return Html5Runtime.register( 'Transport', {\n            init: function() {\n                this._status = 0;\n                this._response = null;\n            },\n    \n            send: function() {\n                var owner = this.owner,\n                    opts = this.options,\n                    xhr = this._initAjax(),\n                    blob = owner._blob,\n                    server = opts.server,\n                    formData, binary, fr;\n    \n                if ( opts.sendAsBinary ) {\n                    server += (/\\?/.test( server ) ? '&' : '?') +\n                            $.param( owner._formData );\n    \n                    binary = blob.getSource();\n                } else {\n                    formData = new FormData();\n                    $.each( owner._formData, function( k, v ) {\n                        formData.append( k, v );\n                    });\n    \n                    formData.append( opts.fileVal, blob.getSource(),\n                            opts.filename || owner._formData.name || '' );\n                }\n    \n                if ( opts.withCredentials && 'withCredentials' in xhr ) {\n                    xhr.open( opts.method, server, true );\n                    xhr.withCredentials = true;\n                } else {\n                    xhr.open( opts.method, server );\n                }\n    \n                this._setRequestHeader( xhr, opts.headers );\n    \n                if ( binary ) {\n                    // 强制设置成 content-type 为文件流。\n                    xhr.overrideMimeType &&\n                            xhr.overrideMimeType('application/octet-stream');\n    \n                    // android直接发送blob会导致服务端接收到的是空文件。\n                    // bug详情。\n                    // https://code.google.com/p/android/issues/detail?id=39882\n                    // 所以先用fileReader读取出来再通过arraybuffer的方式发送。\n                    if ( Base.os.android ) {\n                        fr = new FileReader();\n    \n                        fr.onload = function() {\n                            xhr.send( this.result );\n                            fr = fr.onload = null;\n                        };\n    \n                        fr.readAsArrayBuffer( binary );\n                    } else {\n                        xhr.send( binary );\n                    }\n                } else {\n                    xhr.send( formData );\n                }\n            },\n    \n            getResponse: function() {\n                return this._response;\n            },\n    \n            getResponseAsJson: function() {\n                return this._parseJson( this._response );\n            },\n    \n            getStatus: function() {\n                return this._status;\n            },\n    \n            abort: function() {\n                var xhr = this._xhr;\n    \n                if ( xhr ) {\n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    xhr.abort();\n    \n                    this._xhr = xhr = null;\n                }\n            },\n    \n            destroy: function() {\n                this.abort();\n            },\n    \n            _initAjax: function() {\n                var me = this,\n                    xhr = new XMLHttpRequest(),\n                    opts = this.options;\n    \n                if ( opts.withCredentials && !('withCredentials' in xhr) &&\n                        typeof XDomainRequest !== 'undefined' ) {\n                    xhr = new XDomainRequest();\n                }\n    \n                xhr.upload.onprogress = function( e ) {\n                    var percentage = 0;\n    \n                    if ( e.lengthComputable ) {\n                        percentage = e.loaded / e.total;\n                    }\n    \n                    return me.trigger( 'progress', percentage );\n                };\n    \n                xhr.onreadystatechange = function() {\n    \n                    if ( xhr.readyState !== 4 ) {\n                        return;\n                    }\n    \n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    me._xhr = null;\n                    me._status = xhr.status;\n    \n                    if ( xhr.status >= 200 && xhr.status < 300 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger('load');\n                    } else if ( xhr.status >= 500 && xhr.status < 600 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger( 'error', 'server' );\n                    }\n    \n    \n                    return me.trigger( 'error', me._status ? 'http' : 'abort' );\n                };\n    \n                me._xhr = xhr;\n                return xhr;\n            },\n    \n            _setRequestHeader: function( xhr, headers ) {\n                $.each( headers, function( key, val ) {\n                    xhr.setRequestHeader( key, val );\n                });\n            },\n    \n            _parseJson: function( str ) {\n                var json;\n    \n                try {\n                    json = JSON.parse( str );\n                } catch ( ex ) {\n                    json = {};\n                }\n    \n                return json;\n            }\n        });\n    });\n    /**\n     * @fileOverview  Transport flash实现\n     */\n    define('runtime/html5/md5',[\n        'runtime/html5/runtime'\n    ], function( FlashRuntime ) {\n    \n        /*\n         * Fastest md5 implementation around (JKM md5)\n         * Credits: Joseph Myers\n         *\n         * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n         * @see http://jsperf.com/md5-shootout/7\n         */\n    \n        /* this function is much faster,\n          so if possible we use it. Some IEs\n          are the only ones I know of that\n          need the idiotic second function,\n          generated by an if clause.  */\n        var add32 = function (a, b) {\n            return (a + b) & 0xFFFFFFFF;\n        },\n    \n        cmn = function (q, a, b, x, s, t) {\n            a = add32(add32(a, q), add32(x, t));\n            return add32((a << s) | (a >>> (32 - s)), b);\n        },\n    \n        ff = function (a, b, c, d, x, s, t) {\n            return cmn((b & c) | ((~b) & d), a, b, x, s, t);\n        },\n    \n        gg = function (a, b, c, d, x, s, t) {\n            return cmn((b & d) | (c & (~d)), a, b, x, s, t);\n        },\n    \n        hh = function (a, b, c, d, x, s, t) {\n            return cmn(b ^ c ^ d, a, b, x, s, t);\n        },\n    \n        ii = function (a, b, c, d, x, s, t) {\n            return cmn(c ^ (b | (~d)), a, b, x, s, t);\n        },\n    \n        md5cycle = function (x, k) {\n            var a = x[0],\n                b = x[1],\n                c = x[2],\n                d = x[3];\n    \n            a = ff(a, b, c, d, k[0], 7, -680876936);\n            d = ff(d, a, b, c, k[1], 12, -389564586);\n            c = ff(c, d, a, b, k[2], 17, 606105819);\n            b = ff(b, c, d, a, k[3], 22, -1044525330);\n            a = ff(a, b, c, d, k[4], 7, -176418897);\n            d = ff(d, a, b, c, k[5], 12, 1200080426);\n            c = ff(c, d, a, b, k[6], 17, -1473231341);\n            b = ff(b, c, d, a, k[7], 22, -45705983);\n            a = ff(a, b, c, d, k[8], 7, 1770035416);\n            d = ff(d, a, b, c, k[9], 12, -1958414417);\n            c = ff(c, d, a, b, k[10], 17, -42063);\n            b = ff(b, c, d, a, k[11], 22, -1990404162);\n            a = ff(a, b, c, d, k[12], 7, 1804603682);\n            d = ff(d, a, b, c, k[13], 12, -40341101);\n            c = ff(c, d, a, b, k[14], 17, -1502002290);\n            b = ff(b, c, d, a, k[15], 22, 1236535329);\n    \n            a = gg(a, b, c, d, k[1], 5, -165796510);\n            d = gg(d, a, b, c, k[6], 9, -1069501632);\n            c = gg(c, d, a, b, k[11], 14, 643717713);\n            b = gg(b, c, d, a, k[0], 20, -373897302);\n            a = gg(a, b, c, d, k[5], 5, -701558691);\n            d = gg(d, a, b, c, k[10], 9, 38016083);\n            c = gg(c, d, a, b, k[15], 14, -660478335);\n            b = gg(b, c, d, a, k[4], 20, -405537848);\n            a = gg(a, b, c, d, k[9], 5, 568446438);\n            d = gg(d, a, b, c, k[14], 9, -1019803690);\n            c = gg(c, d, a, b, k[3], 14, -187363961);\n            b = gg(b, c, d, a, k[8], 20, 1163531501);\n            a = gg(a, b, c, d, k[13], 5, -1444681467);\n            d = gg(d, a, b, c, k[2], 9, -51403784);\n            c = gg(c, d, a, b, k[7], 14, 1735328473);\n            b = gg(b, c, d, a, k[12], 20, -1926607734);\n    \n            a = hh(a, b, c, d, k[5], 4, -378558);\n            d = hh(d, a, b, c, k[8], 11, -2022574463);\n            c = hh(c, d, a, b, k[11], 16, 1839030562);\n            b = hh(b, c, d, a, k[14], 23, -35309556);\n            a = hh(a, b, c, d, k[1], 4, -1530992060);\n            d = hh(d, a, b, c, k[4], 11, 1272893353);\n            c = hh(c, d, a, b, k[7], 16, -155497632);\n            b = hh(b, c, d, a, k[10], 23, -1094730640);\n            a = hh(a, b, c, d, k[13], 4, 681279174);\n            d = hh(d, a, b, c, k[0], 11, -358537222);\n            c = hh(c, d, a, b, k[3], 16, -722521979);\n            b = hh(b, c, d, a, k[6], 23, 76029189);\n            a = hh(a, b, c, d, k[9], 4, -640364487);\n            d = hh(d, a, b, c, k[12], 11, -421815835);\n            c = hh(c, d, a, b, k[15], 16, 530742520);\n            b = hh(b, c, d, a, k[2], 23, -995338651);\n    \n            a = ii(a, b, c, d, k[0], 6, -198630844);\n            d = ii(d, a, b, c, k[7], 10, 1126891415);\n            c = ii(c, d, a, b, k[14], 15, -1416354905);\n            b = ii(b, c, d, a, k[5], 21, -57434055);\n            a = ii(a, b, c, d, k[12], 6, 1700485571);\n            d = ii(d, a, b, c, k[3], 10, -1894986606);\n            c = ii(c, d, a, b, k[10], 15, -1051523);\n            b = ii(b, c, d, a, k[1], 21, -2054922799);\n            a = ii(a, b, c, d, k[8], 6, 1873313359);\n            d = ii(d, a, b, c, k[15], 10, -30611744);\n            c = ii(c, d, a, b, k[6], 15, -1560198380);\n            b = ii(b, c, d, a, k[13], 21, 1309151649);\n            a = ii(a, b, c, d, k[4], 6, -145523070);\n            d = ii(d, a, b, c, k[11], 10, -1120210379);\n            c = ii(c, d, a, b, k[2], 15, 718787259);\n            b = ii(b, c, d, a, k[9], 21, -343485551);\n    \n            x[0] = add32(a, x[0]);\n            x[1] = add32(b, x[1]);\n            x[2] = add32(c, x[2]);\n            x[3] = add32(d, x[3]);\n        },\n    \n        /* there needs to be support for Unicode here,\n           * unless we pretend that we can redefine the MD-5\n           * algorithm for multi-byte characters (perhaps\n           * by adding every four 16-bit characters and\n           * shortening the sum to 32 bits). Otherwise\n           * I suggest performing MD-5 as if every character\n           * was two bytes--e.g., 0040 0025 = @%--but then\n           * how will an ordinary MD-5 sum be matched?\n           * There is no way to standardize text to something\n           * like UTF-8 before transformation; speed cost is\n           * utterly prohibitive. The JavaScript standard\n           * itself needs to look at this: it should start\n           * providing access to strings as preformed UTF-8\n           * 8-bit unsigned value arrays.\n           */\n        md5blk = function (s) {\n            var md5blks = [],\n                i; /* Andy King said do it this way. */\n    \n            for (i = 0; i < 64; i += 4) {\n                md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n            }\n            return md5blks;\n        },\n    \n        md5blk_array = function (a) {\n            var md5blks = [],\n                i; /* Andy King said do it this way. */\n    \n            for (i = 0; i < 64; i += 4) {\n                md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n            }\n            return md5blks;\n        },\n    \n        md51 = function (s) {\n            var n = s.length,\n                state = [1732584193, -271733879, -1732584194, 271733878],\n                i,\n                length,\n                tail,\n                tmp,\n                lo,\n                hi;\n    \n            for (i = 64; i <= n; i += 64) {\n                md5cycle(state, md5blk(s.substring(i - 64, i)));\n            }\n            s = s.substring(i - 64);\n            length = s.length;\n            tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n            for (i = 0; i < length; i += 1) {\n                tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n            }\n            tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n            if (i > 55) {\n                md5cycle(state, tail);\n                for (i = 0; i < 16; i += 1) {\n                    tail[i] = 0;\n                }\n            }\n    \n            // Beware that the final length might not fit in 32 bits so we take care of that\n            tmp = n * 8;\n            tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n            lo = parseInt(tmp[2], 16);\n            hi = parseInt(tmp[1], 16) || 0;\n    \n            tail[14] = lo;\n            tail[15] = hi;\n    \n            md5cycle(state, tail);\n            return state;\n        },\n    \n        md51_array = function (a) {\n            var n = a.length,\n                state = [1732584193, -271733879, -1732584194, 271733878],\n                i,\n                length,\n                tail,\n                tmp,\n                lo,\n                hi;\n    \n            for (i = 64; i <= n; i += 64) {\n                md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n            }\n    \n            // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n            // containing the last element of the parent array if the sub array specified starts\n            // beyond the length of the parent array - weird.\n            // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n            a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n    \n            length = a.length;\n            tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n            for (i = 0; i < length; i += 1) {\n                tail[i >> 2] |= a[i] << ((i % 4) << 3);\n            }\n    \n            tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n            if (i > 55) {\n                md5cycle(state, tail);\n                for (i = 0; i < 16; i += 1) {\n                    tail[i] = 0;\n                }\n            }\n    \n            // Beware that the final length might not fit in 32 bits so we take care of that\n            tmp = n * 8;\n            tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n            lo = parseInt(tmp[2], 16);\n            hi = parseInt(tmp[1], 16) || 0;\n    \n            tail[14] = lo;\n            tail[15] = hi;\n    \n            md5cycle(state, tail);\n    \n            return state;\n        },\n    \n        hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'],\n    \n        rhex = function (n) {\n            var s = '',\n                j;\n            for (j = 0; j < 4; j += 1) {\n                s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n            }\n            return s;\n        },\n    \n        hex = function (x) {\n            var i;\n            for (i = 0; i < x.length; i += 1) {\n                x[i] = rhex(x[i]);\n            }\n            return x.join('');\n        },\n    \n        md5 = function (s) {\n            return hex(md51(s));\n        },\n    \n    \n    \n        ////////////////////////////////////////////////////////////////////////////\n    \n        /**\n         * SparkMD5 OOP implementation.\n         *\n         * Use this class to perform an incremental md5, otherwise use the\n         * static methods instead.\n         */\n        SparkMD5 = function () {\n            // call reset to init the instance\n            this.reset();\n        };\n    \n    \n        // In some cases the fast add32 function cannot be used..\n        if (md5('hello') !== '5d41402abc4b2a76b9719d911017c592') {\n            add32 = function (x, y) {\n                var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n                    msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n                return (msw << 16) | (lsw & 0xFFFF);\n            };\n        }\n    \n    \n        /**\n         * Appends a string.\n         * A conversion will be applied if an utf8 string is detected.\n         *\n         * @param {String} str The string to be appended\n         *\n         * @return {SparkMD5} The instance itself\n         */\n        SparkMD5.prototype.append = function (str) {\n            // converts the string to utf8 bytes if necessary\n            if (/[\\u0080-\\uFFFF]/.test(str)) {\n                str = unescape(encodeURIComponent(str));\n            }\n    \n            // then append as binary\n            this.appendBinary(str);\n    \n            return this;\n        };\n    \n        /**\n         * Appends a binary string.\n         *\n         * @param {String} contents The binary string to be appended\n         *\n         * @return {SparkMD5} The instance itself\n         */\n        SparkMD5.prototype.appendBinary = function (contents) {\n            this._buff += contents;\n            this._length += contents.length;\n    \n            var length = this._buff.length,\n                i;\n    \n            for (i = 64; i <= length; i += 64) {\n                md5cycle(this._state, md5blk(this._buff.substring(i - 64, i)));\n            }\n    \n            this._buff = this._buff.substr(i - 64);\n    \n            return this;\n        };\n    \n        /**\n         * Finishes the incremental computation, reseting the internal state and\n         * returning the result.\n         * Use the raw parameter to obtain the raw result instead of the hex one.\n         *\n         * @param {Boolean} raw True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.prototype.end = function (raw) {\n            var buff = this._buff,\n                length = buff.length,\n                i,\n                tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n                ret;\n    \n            for (i = 0; i < length; i += 1) {\n                tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n            }\n    \n            this._finish(tail, length);\n            ret = !!raw ? this._state : hex(this._state);\n    \n            this.reset();\n    \n            return ret;\n        };\n    \n        /**\n         * Finish the final calculation based on the tail.\n         *\n         * @param {Array}  tail   The tail (will be modified)\n         * @param {Number} length The length of the remaining buffer\n         */\n        SparkMD5.prototype._finish = function (tail, length) {\n            var i = length,\n                tmp,\n                lo,\n                hi;\n    \n            tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n            if (i > 55) {\n                md5cycle(this._state, tail);\n                for (i = 0; i < 16; i += 1) {\n                    tail[i] = 0;\n                }\n            }\n    \n            // Do the final computation based on the tail and length\n            // Beware that the final length may not fit in 32 bits so we take care of that\n            tmp = this._length * 8;\n            tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n            lo = parseInt(tmp[2], 16);\n            hi = parseInt(tmp[1], 16) || 0;\n    \n            tail[14] = lo;\n            tail[15] = hi;\n            md5cycle(this._state, tail);\n        };\n    \n        /**\n         * Resets the internal state of the computation.\n         *\n         * @return {SparkMD5} The instance itself\n         */\n        SparkMD5.prototype.reset = function () {\n            this._buff = \"\";\n            this._length = 0;\n            this._state = [1732584193, -271733879, -1732584194, 271733878];\n    \n            return this;\n        };\n    \n        /**\n         * Releases memory used by the incremental buffer and other aditional\n         * resources. If you plan to use the instance again, use reset instead.\n         */\n        SparkMD5.prototype.destroy = function () {\n            delete this._state;\n            delete this._buff;\n            delete this._length;\n        };\n    \n    \n        /**\n         * Performs the md5 hash on a string.\n         * A conversion will be applied if utf8 string is detected.\n         *\n         * @param {String}  str The string\n         * @param {Boolean} raw True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.hash = function (str, raw) {\n            // converts the string to utf8 bytes if necessary\n            if (/[\\u0080-\\uFFFF]/.test(str)) {\n                str = unescape(encodeURIComponent(str));\n            }\n    \n            var hash = md51(str);\n    \n            return !!raw ? hash : hex(hash);\n        };\n    \n        /**\n         * Performs the md5 hash on a binary string.\n         *\n         * @param {String}  content The binary string\n         * @param {Boolean} raw     True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.hashBinary = function (content, raw) {\n            var hash = md51(content);\n    \n            return !!raw ? hash : hex(hash);\n        };\n    \n        /**\n         * SparkMD5 OOP implementation for array buffers.\n         *\n         * Use this class to perform an incremental md5 ONLY for array buffers.\n         */\n        SparkMD5.ArrayBuffer = function () {\n            // call reset to init the instance\n            this.reset();\n        };\n    \n        ////////////////////////////////////////////////////////////////////////////\n    \n        /**\n         * Appends an array buffer.\n         *\n         * @param {ArrayBuffer} arr The array to be appended\n         *\n         * @return {SparkMD5.ArrayBuffer} The instance itself\n         */\n        SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n            // TODO: we could avoid the concatenation here but the algorithm would be more complex\n            //       if you find yourself needing extra performance, please make a PR.\n            var buff = this._concatArrayBuffer(this._buff, arr),\n                length = buff.length,\n                i;\n    \n            this._length += arr.byteLength;\n    \n            for (i = 64; i <= length; i += 64) {\n                md5cycle(this._state, md5blk_array(buff.subarray(i - 64, i)));\n            }\n    \n            // Avoids IE10 weirdness (documented above)\n            this._buff = (i - 64) < length ? buff.subarray(i - 64) : new Uint8Array(0);\n    \n            return this;\n        };\n    \n        /**\n         * Finishes the incremental computation, reseting the internal state and\n         * returning the result.\n         * Use the raw parameter to obtain the raw result instead of the hex one.\n         *\n         * @param {Boolean} raw True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n            var buff = this._buff,\n                length = buff.length,\n                tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n                i,\n                ret;\n    \n            for (i = 0; i < length; i += 1) {\n                tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n            }\n    \n            this._finish(tail, length);\n            ret = !!raw ? this._state : hex(this._state);\n    \n            this.reset();\n    \n            return ret;\n        };\n    \n        SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n    \n        /**\n         * Resets the internal state of the computation.\n         *\n         * @return {SparkMD5.ArrayBuffer} The instance itself\n         */\n        SparkMD5.ArrayBuffer.prototype.reset = function () {\n            this._buff = new Uint8Array(0);\n            this._length = 0;\n            this._state = [1732584193, -271733879, -1732584194, 271733878];\n    \n            return this;\n        };\n    \n        /**\n         * Releases memory used by the incremental buffer and other aditional\n         * resources. If you plan to use the instance again, use reset instead.\n         */\n        SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n    \n        /**\n         * Concats two array buffers, returning a new one.\n         *\n         * @param  {ArrayBuffer} first  The first array buffer\n         * @param  {ArrayBuffer} second The second array buffer\n         *\n         * @return {ArrayBuffer} The new array buffer\n         */\n        SparkMD5.ArrayBuffer.prototype._concatArrayBuffer = function (first, second) {\n            var firstLength = first.length,\n                result = new Uint8Array(firstLength + second.byteLength);\n    \n            result.set(first);\n            result.set(new Uint8Array(second), firstLength);\n    \n            return result;\n        };\n    \n        /**\n         * Performs the md5 hash on an array buffer.\n         *\n         * @param {ArrayBuffer} arr The array buffer\n         * @param {Boolean}     raw True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n            var hash = md51_array(new Uint8Array(arr));\n    \n            return !!raw ? hash : hex(hash);\n        };\n        \n        return FlashRuntime.register( 'Md5', {\n            init: function() {\n                // do nothing.\n            },\n    \n            loadFromBlob: function( file ) {\n                var blob = file.getSource(),\n                    chunkSize = 2 * 1024 * 1024,\n                    chunks = Math.ceil( blob.size / chunkSize ),\n                    chunk = 0,\n                    owner = this.owner,\n                    spark = new SparkMD5.ArrayBuffer(),\n                    me = this,\n                    blobSlice = blob.mozSlice || blob.webkitSlice || blob.slice,\n                    loadNext, fr;\n    \n                fr = new FileReader();\n    \n                loadNext = function() {\n                    var start, end;\n    \n                    start = chunk * chunkSize;\n                    end = Math.min( start + chunkSize, blob.size );\n    \n                    fr.onload = function( e ) {\n                        spark.append( e.target.result );\n                        owner.trigger( 'progress', {\n                            total: file.size,\n                            loaded: end\n                        });\n                    };\n    \n                    fr.onloadend = function() {\n                        fr.onloadend = fr.onload = null;\n    \n                        if ( ++chunk < chunks ) {\n                            setTimeout( loadNext, 1 );\n                        } else {\n                            setTimeout(function(){\n                                owner.trigger('load');\n                                me.result = spark.end();\n                                loadNext = file = blob = spark = null;\n                                owner.trigger('complete');\n                            }, 50 );\n                        }\n                    };\n    \n                    fr.readAsArrayBuffer( blobSlice.call( blob, start, end ) );\n                };\n    \n                loadNext();\n            },\n    \n            getResult: function() {\n                return this.result;\n            }\n        });\n    });\n    /**\n     * @fileOverview FlashRuntime\n     */\n    define('runtime/flash/runtime',[\n        'base',\n        'runtime/runtime',\n        'runtime/compbase'\n    ], function( Base, Runtime, CompBase ) {\n    \n        var $ = Base.$,\n            type = 'flash',\n            components = {};\n    \n    \n        function getFlashVersion() {\n            var version;\n    \n            try {\n                version = navigator.plugins[ 'Shockwave Flash' ];\n                version = version.description;\n            } catch ( ex ) {\n                try {\n                    version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash')\n                            .GetVariable('$version');\n                } catch ( ex2 ) {\n                    version = '0.0';\n                }\n            }\n            version = version.match( /\\d+/g );\n            return parseFloat( version[ 0 ] + '.' + version[ 1 ], 10 );\n        }\n    \n        function FlashRuntime() {\n            var pool = {},\n                clients = {},\n                destroy = this.destroy,\n                me = this,\n                jsreciver = Base.guid('webuploader_');\n    \n            Runtime.apply( me, arguments );\n            me.type = type;\n    \n    \n            // 这个方法的调用者，实际上是RuntimeClient\n            me.exec = function( comp, fn/*, args...*/ ) {\n                var client = this,\n                    uid = client.uid,\n                    args = Base.slice( arguments, 2 ),\n                    instance;\n    \n                clients[ uid ] = client;\n    \n                if ( components[ comp ] ) {\n                    if ( !pool[ uid ] ) {\n                        pool[ uid ] = new components[ comp ]( client, me );\n                    }\n    \n                    instance = pool[ uid ];\n    \n                    if ( instance[ fn ] ) {\n                        return instance[ fn ].apply( instance, args );\n                    }\n                }\n    \n                return me.flashExec.apply( client, arguments );\n            };\n    \n            function handler( evt, obj ) {\n                var type = evt.type || evt,\n                    parts, uid;\n    \n                parts = type.split('::');\n                uid = parts[ 0 ];\n                type = parts[ 1 ];\n    \n                // console.log.apply( console, arguments );\n    \n                if ( type === 'Ready' && uid === me.uid ) {\n                    me.trigger('ready');\n                } else if ( clients[ uid ] ) {\n                    clients[ uid ].trigger( type.toLowerCase(), evt, obj );\n                }\n    \n                // Base.log( evt, obj );\n            }\n    \n            // flash的接受器。\n            window[ jsreciver ] = function() {\n                var args = arguments;\n    \n                // 为了能捕获得到。\n                setTimeout(function() {\n                    handler.apply( null, args );\n                }, 1 );\n            };\n    \n            this.jsreciver = jsreciver;\n    \n            this.destroy = function() {\n                // @todo 删除池子中的所有实例\n                return destroy && destroy.apply( this, arguments );\n            };\n    \n            this.flashExec = function( comp, fn ) {\n                var flash = me.getFlash(),\n                    args = Base.slice( arguments, 2 );\n    \n                return flash.exec( this.uid, comp, fn, args );\n            };\n    \n            // @todo\n        }\n    \n        Base.inherits( Runtime, {\n            constructor: FlashRuntime,\n    \n            init: function() {\n                var container = this.getContainer(),\n                    opts = this.options,\n                    html;\n    \n                // if not the minimal height, shims are not initialized\n                // in older browsers (e.g FF3.6, IE6,7,8, Safari 4.0,5.0, etc)\n                container.css({\n                    position: 'absolute',\n                    top: '-8px',\n                    left: '-8px',\n                    width: '9px',\n                    height: '9px',\n                    overflow: 'hidden'\n                });\n    \n                // insert flash object\n                html = '<object id=\"' + this.uid + '\" type=\"application/' +\n                        'x-shockwave-flash\" data=\"' +  opts.swf + '\" ';\n    \n                if ( Base.browser.ie ) {\n                    html += 'classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" ';\n                }\n    \n                html += 'width=\"100%\" height=\"100%\" style=\"outline:0\">'  +\n                    '<param name=\"movie\" value=\"' + opts.swf + '\" />' +\n                    '<param name=\"flashvars\" value=\"uid=' + this.uid +\n                    '&jsreciver=' + this.jsreciver + '\" />' +\n                    '<param name=\"wmode\" value=\"transparent\" />' +\n                    '<param name=\"allowscriptaccess\" value=\"always\" />' +\n                '</object>';\n    \n                container.html( html );\n            },\n    \n            getFlash: function() {\n                if ( this._flash ) {\n                    return this._flash;\n                }\n    \n                this._flash = $( '#' + this.uid ).get( 0 );\n                return this._flash;\n            }\n    \n        });\n    \n        FlashRuntime.register = function( name, component ) {\n            component = components[ name ] = Base.inherits( CompBase, $.extend({\n    \n                // @todo fix this later\n                flashExec: function() {\n                    var owner = this.owner,\n                        runtime = this.getRuntime();\n    \n                    return runtime.flashExec.apply( owner, arguments );\n                }\n            }, component ) );\n    \n            return component;\n        };\n    \n        if ( getFlashVersion() >= 11.4 ) {\n            Runtime.addRuntime( type, FlashRuntime );\n        }\n    \n        return FlashRuntime;\n    });\n    /**\n     * @fileOverview FilePicker\n     */\n    define('runtime/flash/filepicker',[\n        'base',\n        'runtime/flash/runtime'\n    ], function( Base, FlashRuntime ) {\n        var $ = Base.$;\n    \n        return FlashRuntime.register( 'FilePicker', {\n            init: function( opts ) {\n                var copy = $.extend({}, opts ),\n                    len, i;\n    \n                // 修复Flash再没有设置title的情况下无法弹出flash文件选择框的bug.\n                len = copy.accept && copy.accept.length;\n                for (  i = 0; i < len; i++ ) {\n                    if ( !copy.accept[ i ].title ) {\n                        copy.accept[ i ].title = 'Files';\n                    }\n                }\n    \n                delete copy.button;\n                delete copy.id;\n                delete copy.container;\n    \n                this.flashExec( 'FilePicker', 'init', copy );\n            },\n    \n            destroy: function() {\n                this.flashExec( 'FilePicker', 'destroy' );\n            }\n        });\n    });\n    /**\n     * @fileOverview 图片压缩\n     */\n    define('runtime/flash/image',[\n        'runtime/flash/runtime'\n    ], function( FlashRuntime ) {\n    \n        return FlashRuntime.register( 'Image', {\n            // init: function( options ) {\n            //     var owner = this.owner;\n    \n            //     this.flashExec( 'Image', 'init', options );\n            //     owner.on( 'load', function() {\n            //         debugger;\n            //     });\n            // },\n    \n            loadFromBlob: function( blob ) {\n                var owner = this.owner;\n    \n                owner.info() && this.flashExec( 'Image', 'info', owner.info() );\n                owner.meta() && this.flashExec( 'Image', 'meta', owner.meta() );\n    \n                this.flashExec( 'Image', 'loadFromBlob', blob.uid );\n            }\n        });\n    });\n    /**\n     * @fileOverview  Transport flash实现\n     */\n    define('runtime/flash/transport',[\n        'base',\n        'runtime/flash/runtime',\n        'runtime/client'\n    ], function( Base, FlashRuntime, RuntimeClient ) {\n        var $ = Base.$;\n    \n        return FlashRuntime.register( 'Transport', {\n            init: function() {\n                this._status = 0;\n                this._response = null;\n                this._responseJson = null;\n            },\n    \n            send: function() {\n                var owner = this.owner,\n                    opts = this.options,\n                    xhr = this._initAjax(),\n                    blob = owner._blob,\n                    server = opts.server,\n                    binary;\n    \n                xhr.connectRuntime( blob.ruid );\n    \n                if ( opts.sendAsBinary ) {\n                    server += (/\\?/.test( server ) ? '&' : '?') +\n                            $.param( owner._formData );\n    \n                    binary = blob.uid;\n                } else {\n                    $.each( owner._formData, function( k, v ) {\n                        xhr.exec( 'append', k, v );\n                    });\n    \n                    xhr.exec( 'appendBlob', opts.fileVal, blob.uid,\n                            opts.filename || owner._formData.name || '' );\n                }\n    \n                this._setRequestHeader( xhr, opts.headers );\n                xhr.exec( 'send', {\n                    method: opts.method,\n                    url: server,\n                    forceURLStream: opts.forceURLStream,\n                    mimeType: 'application/octet-stream'\n                }, binary );\n            },\n    \n            getStatus: function() {\n                return this._status;\n            },\n    \n            getResponse: function() {\n                return this._response || '';\n            },\n    \n            getResponseAsJson: function() {\n                return this._responseJson;\n            },\n    \n            abort: function() {\n                var xhr = this._xhr;\n    \n                if ( xhr ) {\n                    xhr.exec('abort');\n                    xhr.destroy();\n                    this._xhr = xhr = null;\n                }\n            },\n    \n            destroy: function() {\n                this.abort();\n            },\n    \n            _initAjax: function() {\n                var me = this,\n                    xhr = new RuntimeClient('XMLHttpRequest');\n    \n                xhr.on( 'uploadprogress progress', function( e ) {\n                    var percent = e.loaded / e.total;\n                    percent = Math.min( 1, Math.max( 0, percent ) );\n                    return me.trigger( 'progress', percent );\n                });\n    \n                xhr.on( 'load', function() {\n                    var status = xhr.exec('getStatus'),\n                        readBody = false,\n                        err = '',\n                        p;\n    \n                    xhr.off();\n                    me._xhr = null;\n    \n                    if ( status >= 200 && status < 300 ) {\n                        readBody = true;\n                    } else if ( status >= 500 && status < 600 ) {\n                        readBody = true;\n                        err = 'server';\n                    } else {\n                        err = 'http';\n                    }\n    \n                    if ( readBody ) {\n                        me._response = xhr.exec('getResponse');\n                        me._response = decodeURIComponent( me._response );\n    \n                        // flash 处理可能存在 bug, 没辙只能靠 js 了\n                        // try {\n                        //     me._responseJson = xhr.exec('getResponseAsJson');\n                        // } catch ( error ) {\n                            \n                        p = window.JSON && window.JSON.parse || function( s ) {\n                            try {\n                                return new Function('return ' + s).call();\n                            } catch ( err ) {\n                                return {};\n                            }\n                        };\n                        me._responseJson  = me._response ? p(me._response) : {};\n                            \n                        // }\n                    }\n                    \n                    xhr.destroy();\n                    xhr = null;\n    \n                    return err ? me.trigger( 'error', err ) : me.trigger('load');\n                });\n    \n                xhr.on( 'error', function() {\n                    xhr.off();\n                    me._xhr = null;\n                    me.trigger( 'error', 'http' );\n                });\n    \n                me._xhr = xhr;\n                return xhr;\n            },\n    \n            _setRequestHeader: function( xhr, headers ) {\n                $.each( headers, function( key, val ) {\n                    xhr.exec( 'setRequestHeader', key, val );\n                });\n            }\n        });\n    });\n    /**\n     * @fileOverview Blob Html实现\n     */\n    define('runtime/flash/blob',[\n        'runtime/flash/runtime',\n        'lib/blob'\n    ], function( FlashRuntime, Blob ) {\n    \n        return FlashRuntime.register( 'Blob', {\n            slice: function( start, end ) {\n                var blob = this.flashExec( 'Blob', 'slice', start, end );\n    \n                return new Blob( blob.uid, blob );\n            }\n        });\n    });\n    /**\n     * @fileOverview  Md5 flash实现\n     */\n    define('runtime/flash/md5',[\n        'runtime/flash/runtime'\n    ], function( FlashRuntime ) {\n        \n        return FlashRuntime.register( 'Md5', {\n            init: function() {\n                // do nothing.\n            },\n    \n            loadFromBlob: function( blob ) {\n                return this.flashExec( 'Md5', 'loadFromBlob', blob.uid );\n            }\n        });\n    });\n    /**\n     * @fileOverview 完全版本。\n     */\n    define('preset/all',[\n        'base',\n    \n        // widgets\n        'widgets/filednd',\n        'widgets/filepaste',\n        'widgets/filepicker',\n        'widgets/image',\n        'widgets/queue',\n        'widgets/runtime',\n        'widgets/upload',\n        'widgets/validator',\n        'widgets/md5',\n    \n        // runtimes\n        // html5\n        'runtime/html5/blob',\n        'runtime/html5/dnd',\n        'runtime/html5/filepaste',\n        'runtime/html5/filepicker',\n        'runtime/html5/imagemeta/exif',\n        'runtime/html5/androidpatch',\n        'runtime/html5/image',\n        'runtime/html5/transport',\n        'runtime/html5/md5',\n    \n        // flash\n        'runtime/flash/filepicker',\n        'runtime/flash/image',\n        'runtime/flash/transport',\n        'runtime/flash/blob',\n        'runtime/flash/md5'\n    ], function( Base ) {\n        return Base;\n    });\n    /**\n     * @fileOverview 日志组件，主要用来收集错误信息，可以帮助 webuploader 更好的定位问题和发展。\n     *\n     * 如果您不想要启用此功能，请在打包的时候去掉 log 模块。\n     *\n     * 或者可以在初始化的时候通过 options.disableWidgets 属性禁用。\n     *\n     * 如：\n     * WebUploader.create({\n     *     ...\n     *\n     *     disableWidgets: 'log',\n     *\n     *     ...\n     * })\n     */\n    define('widgets/log',[\n        'base',\n        'uploader',\n        'widgets/widget'\n    ], function( Base, Uploader ) {\n        var $ = Base.$,\n            logUrl = ' http://static.tieba.baidu.com/tb/pms/img/st.gif??',\n            product = (location.hostname || location.host || 'protected').toLowerCase(),\n    \n            // 只针对 baidu 内部产品用户做统计功能。\n            enable = product && /baidu/i.exec(product),\n            base;\n    \n        if (!enable) {\n            return;\n        }\n    \n        base = {\n            dv: 3,\n            master: 'webuploader',\n            online: /test/.exec(product) ? 0 : 1,\n            module: '',\n            product: product,\n            type: 0\n        };\n    \n        function send(data) {\n            var obj = $.extend({}, base, data),\n                url = logUrl.replace(/^(.*)\\?/, '$1' + $.param( obj )),\n                image = new Image();\n    \n            image.src = url;\n        }\n    \n        return Uploader.register({\n            name: 'log',\n    \n            init: function() {\n                var owner = this.owner,\n                    count = 0,\n                    size = 0;\n    \n                owner\n                    .on('error', function(code) {\n                        send({\n                            type: 2,\n                            c_error_code: code\n                        });\n                    })\n                    .on('uploadError', function(file, reason) {\n                        send({\n                            type: 2,\n                            c_error_code: 'UPLOAD_ERROR',\n                            c_reason: '' + reason\n                        });\n                    })\n                    .on('uploadComplete', function(file) {\n                        count++;\n                        size += file.size;\n                    }).\n                    on('uploadFinished', function() {\n                        send({\n                            c_count: count,\n                            c_size: size\n                        });\n                        count = size = 0;\n                    });\n    \n                send({\n                    c_usage: 1\n                });\n            }\n        });\n    });\n    /**\n     * @fileOverview Uploader上传类\n     */\n    define('webuploader',[\n        'preset/all',\n        'widgets/log'\n    ], function( preset ) {\n        return preset;\n    });\n    return require('webuploader');\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/webuploader/webuploader.noimage.js",
    "content": "/*! WebUploader 0.1.5 */\n\n\n/**\n * @fileOverview 让内部各个部件的代码可以用[amd](https://github.com/amdjs/amdjs-api/wiki/AMD)模块定义方式组织起来。\n *\n * AMD API 内部的简单不完全实现，请忽略。只有当WebUploader被合并成一个文件的时候才会引入。\n */\n(function( root, factory ) {\n    var modules = {},\n\n        // 内部require, 简单不完全实现。\n        // https://github.com/amdjs/amdjs-api/wiki/require\n        _require = function( deps, callback ) {\n            var args, len, i;\n\n            // 如果deps不是数组，则直接返回指定module\n            if ( typeof deps === 'string' ) {\n                return getModule( deps );\n            } else {\n                args = [];\n                for( len = deps.length, i = 0; i < len; i++ ) {\n                    args.push( getModule( deps[ i ] ) );\n                }\n\n                return callback.apply( null, args );\n            }\n        },\n\n        // 内部define，暂时不支持不指定id.\n        _define = function( id, deps, factory ) {\n            if ( arguments.length === 2 ) {\n                factory = deps;\n                deps = null;\n            }\n\n            _require( deps || [], function() {\n                setModule( id, factory, arguments );\n            });\n        },\n\n        // 设置module, 兼容CommonJs写法。\n        setModule = function( id, factory, args ) {\n            var module = {\n                    exports: factory\n                },\n                returned;\n\n            if ( typeof factory === 'function' ) {\n                args.length || (args = [ _require, module.exports, module ]);\n                returned = factory.apply( null, args );\n                returned !== undefined && (module.exports = returned);\n            }\n\n            modules[ id ] = module.exports;\n        },\n\n        // 根据id获取module\n        getModule = function( id ) {\n            var module = modules[ id ] || root[ id ];\n\n            if ( !module ) {\n                throw new Error( '`' + id + '` is undefined' );\n            }\n\n            return module;\n        },\n\n        // 将所有modules，将路径ids装换成对象。\n        exportsTo = function( obj ) {\n            var key, host, parts, part, last, ucFirst;\n\n            // make the first character upper case.\n            ucFirst = function( str ) {\n                return str && (str.charAt( 0 ).toUpperCase() + str.substr( 1 ));\n            };\n\n            for ( key in modules ) {\n                host = obj;\n\n                if ( !modules.hasOwnProperty( key ) ) {\n                    continue;\n                }\n\n                parts = key.split('/');\n                last = ucFirst( parts.pop() );\n\n                while( (part = ucFirst( parts.shift() )) ) {\n                    host[ part ] = host[ part ] || {};\n                    host = host[ part ];\n                }\n\n                host[ last ] = modules[ key ];\n            }\n\n            return obj;\n        },\n\n        makeExport = function( dollar ) {\n            root.__dollar = dollar;\n\n            // exports every module.\n            return exportsTo( factory( root, _define, _require ) );\n        },\n\n        origin;\n\n    if ( typeof module === 'object' && typeof module.exports === 'object' ) {\n\n        // For CommonJS and CommonJS-like environments where a proper window is present,\n        module.exports = makeExport();\n    } else if ( typeof define === 'function' && define.amd ) {\n\n        // Allow using this built library as an AMD module\n        // in another project. That other project will only\n        // see this AMD call, not the internal modules in\n        // the closure below.\n        define([ 'jquery' ], makeExport );\n    } else {\n\n        // Browser globals case. Just assign the\n        // result to a property on the global.\n        origin = root.WebUploader;\n        root.WebUploader = makeExport();\n        root.WebUploader.noConflict = function() {\n            root.WebUploader = origin;\n        };\n    }\n})( window, function( window, define, require ) {\n\n\n    /**\n     * @fileOverview jQuery or Zepto\n     */\n    define('dollar-third',[],function() {\n        var $ = window.__dollar || window.jQuery || window.Zepto;\n    \n        if ( !$ ) {\n            throw new Error('jQuery or Zepto not found!');\n        }\n    \n        return $;\n    });\n    /**\n     * @fileOverview Dom 操作相关\n     */\n    define('dollar',[\n        'dollar-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 使用jQuery的Promise\n     */\n    define('promise-third',[\n        'dollar'\n    ], function( $ ) {\n        return {\n            Deferred: $.Deferred,\n            when: $.when,\n    \n            isPromise: function( anything ) {\n                return anything && typeof anything.then === 'function';\n            }\n        };\n    });\n    /**\n     * @fileOverview Promise/A+\n     */\n    define('promise',[\n        'promise-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 基础类方法。\n     */\n    \n    /**\n     * Web Uploader内部类的详细说明，以下提及的功能类，都可以在`WebUploader`这个变量中访问到。\n     *\n     * As you know, Web Uploader的每个文件都是用过[AMD](https://github.com/amdjs/amdjs-api/wiki/AMD)规范中的`define`组织起来的, 每个Module都会有个module id.\n     * 默认module id为该文件的路径，而此路径将会转化成名字空间存放在WebUploader中。如：\n     *\n     * * module `base`：WebUploader.Base\n     * * module `file`: WebUploader.File\n     * * module `lib/dnd`: WebUploader.Lib.Dnd\n     * * module `runtime/html5/dnd`: WebUploader.Runtime.Html5.Dnd\n     *\n     *\n     * 以下文档中对类的使用可能省略掉了`WebUploader`前缀。\n     * @module WebUploader\n     * @title WebUploader API文档\n     */\n    define('base',[\n        'dollar',\n        'promise'\n    ], function( $, promise ) {\n    \n        var noop = function() {},\n            call = Function.call;\n    \n        // http://jsperf.com/uncurrythis\n        // 反科里化\n        function uncurryThis( fn ) {\n            return function() {\n                return call.apply( fn, arguments );\n            };\n        }\n    \n        function bindFn( fn, context ) {\n            return function() {\n                return fn.apply( context, arguments );\n            };\n        }\n    \n        function createObject( proto ) {\n            var f;\n    \n            if ( Object.create ) {\n                return Object.create( proto );\n            } else {\n                f = function() {};\n                f.prototype = proto;\n                return new f();\n            }\n        }\n    \n    \n        /**\n         * 基础类，提供一些简单常用的方法。\n         * @class Base\n         */\n        return {\n    \n            /**\n             * @property {String} version 当前版本号。\n             */\n            version: '0.1.5',\n    \n            /**\n             * @property {jQuery|Zepto} $ 引用依赖的jQuery或者Zepto对象。\n             */\n            $: $,\n    \n            Deferred: promise.Deferred,\n    \n            isPromise: promise.isPromise,\n    \n            when: promise.when,\n    \n            /**\n             * @description  简单的浏览器检查结果。\n             *\n             * * `webkit`  webkit版本号，如果浏览器为非webkit内核，此属性为`undefined`。\n             * * `chrome`  chrome浏览器版本号，如果浏览器为chrome，此属性为`undefined`。\n             * * `ie`  ie浏览器版本号，如果浏览器为非ie，此属性为`undefined`。**暂不支持ie10+**\n             * * `firefox`  firefox浏览器版本号，如果浏览器为非firefox，此属性为`undefined`。\n             * * `safari`  safari浏览器版本号，如果浏览器为非safari，此属性为`undefined`。\n             * * `opera`  opera浏览器版本号，如果浏览器为非opera，此属性为`undefined`。\n             *\n             * @property {Object} [browser]\n             */\n            browser: (function( ua ) {\n                var ret = {},\n                    webkit = ua.match( /WebKit\\/([\\d.]+)/ ),\n                    chrome = ua.match( /Chrome\\/([\\d.]+)/ ) ||\n                        ua.match( /CriOS\\/([\\d.]+)/ ),\n    \n                    ie = ua.match( /MSIE\\s([\\d\\.]+)/ ) ||\n                        ua.match( /(?:trident)(?:.*rv:([\\w.]+))?/i ),\n                    firefox = ua.match( /Firefox\\/([\\d.]+)/ ),\n                    safari = ua.match( /Safari\\/([\\d.]+)/ ),\n                    opera = ua.match( /OPR\\/([\\d.]+)/ );\n    \n                webkit && (ret.webkit = parseFloat( webkit[ 1 ] ));\n                chrome && (ret.chrome = parseFloat( chrome[ 1 ] ));\n                ie && (ret.ie = parseFloat( ie[ 1 ] ));\n                firefox && (ret.firefox = parseFloat( firefox[ 1 ] ));\n                safari && (ret.safari = parseFloat( safari[ 1 ] ));\n                opera && (ret.opera = parseFloat( opera[ 1 ] ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * @description  操作系统检查结果。\n             *\n             * * `android`  如果在android浏览器环境下，此值为对应的android版本号，否则为`undefined`。\n             * * `ios` 如果在ios浏览器环境下，此值为对应的ios版本号，否则为`undefined`。\n             * @property {Object} [os]\n             */\n            os: (function( ua ) {\n                var ret = {},\n    \n                    // osx = !!ua.match( /\\(Macintosh\\; Intel / ),\n                    android = ua.match( /(?:Android);?[\\s\\/]+([\\d.]+)?/ ),\n                    ios = ua.match( /(?:iPad|iPod|iPhone).*OS\\s([\\d_]+)/ );\n    \n                // osx && (ret.osx = true);\n                android && (ret.android = parseFloat( android[ 1 ] ));\n                ios && (ret.ios = parseFloat( ios[ 1 ].replace( /_/g, '.' ) ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * 实现类与类之间的继承。\n             * @method inherits\n             * @grammar Base.inherits( super ) => child\n             * @grammar Base.inherits( super, protos ) => child\n             * @grammar Base.inherits( super, protos, statics ) => child\n             * @param  {Class} super 父类\n             * @param  {Object | Function} [protos] 子类或者对象。如果对象中包含constructor，子类将是用此属性值。\n             * @param  {Function} [protos.constructor] 子类构造器，不指定的话将创建个临时的直接执行父类构造器的方法。\n             * @param  {Object} [statics] 静态属性或方法。\n             * @return {Class} 返回子类。\n             * @example\n             * function Person() {\n             *     console.log( 'Super' );\n             * }\n             * Person.prototype.hello = function() {\n             *     console.log( 'hello' );\n             * };\n             *\n             * var Manager = Base.inherits( Person, {\n             *     world: function() {\n             *         console.log( 'World' );\n             *     }\n             * });\n             *\n             * // 因为没有指定构造器，父类的构造器将会执行。\n             * var instance = new Manager();    // => Super\n             *\n             * // 继承子父类的方法\n             * instance.hello();    // => hello\n             * instance.world();    // => World\n             *\n             * // 子类的__super__属性指向父类\n             * console.log( Manager.__super__ === Person );    // => true\n             */\n            inherits: function( Super, protos, staticProtos ) {\n                var child;\n    \n                if ( typeof protos === 'function' ) {\n                    child = protos;\n                    protos = null;\n                } else if ( protos && protos.hasOwnProperty('constructor') ) {\n                    child = protos.constructor;\n                } else {\n                    child = function() {\n                        return Super.apply( this, arguments );\n                    };\n                }\n    \n                // 复制静态方法\n                $.extend( true, child, Super, staticProtos || {} );\n    \n                /* jshint camelcase: false */\n    \n                // 让子类的__super__属性指向父类。\n                child.__super__ = Super.prototype;\n    \n                // 构建原型，添加原型方法或属性。\n                // 暂时用Object.create实现。\n                child.prototype = createObject( Super.prototype );\n                protos && $.extend( true, child.prototype, protos );\n    \n                return child;\n            },\n    \n            /**\n             * 一个不做任何事情的方法。可以用来赋值给默认的callback.\n             * @method noop\n             */\n            noop: noop,\n    \n            /**\n             * 返回一个新的方法，此方法将已指定的`context`来执行。\n             * @grammar Base.bindFn( fn, context ) => Function\n             * @method bindFn\n             * @example\n             * var doSomething = function() {\n             *         console.log( this.name );\n             *     },\n             *     obj = {\n             *         name: 'Object Name'\n             *     },\n             *     aliasFn = Base.bind( doSomething, obj );\n             *\n             *  aliasFn();    // => Object Name\n             *\n             */\n            bindFn: bindFn,\n    \n            /**\n             * 引用Console.log如果存在的话，否则引用一个[空函数noop](#WebUploader:Base.noop)。\n             * @grammar Base.log( args... ) => undefined\n             * @method log\n             */\n            log: (function() {\n                if ( window.console ) {\n                    return bindFn( console.log, console );\n                }\n                return noop;\n            })(),\n    \n            nextTick: (function() {\n    \n                return function( cb ) {\n                    setTimeout( cb, 1 );\n                };\n    \n                // @bug 当浏览器不在当前窗口时就停了。\n                // var next = window.requestAnimationFrame ||\n                //     window.webkitRequestAnimationFrame ||\n                //     window.mozRequestAnimationFrame ||\n                //     function( cb ) {\n                //         window.setTimeout( cb, 1000 / 60 );\n                //     };\n    \n                // // fix: Uncaught TypeError: Illegal invocation\n                // return bindFn( next, window );\n            })(),\n    \n            /**\n             * 被[uncurrythis](http://www.2ality.com/2011/11/uncurrying-this.html)的数组slice方法。\n             * 将用来将非数组对象转化成数组对象。\n             * @grammar Base.slice( target, start[, end] ) => Array\n             * @method slice\n             * @example\n             * function doSomthing() {\n             *     var args = Base.slice( arguments, 1 );\n             *     console.log( args );\n             * }\n             *\n             * doSomthing( 'ignored', 'arg2', 'arg3' );    // => Array [\"arg2\", \"arg3\"]\n             */\n            slice: uncurryThis( [].slice ),\n    \n            /**\n             * 生成唯一的ID\n             * @method guid\n             * @grammar Base.guid() => String\n             * @grammar Base.guid( prefx ) => String\n             */\n            guid: (function() {\n                var counter = 0;\n    \n                return function( prefix ) {\n                    var guid = (+new Date()).toString( 32 ),\n                        i = 0;\n    \n                    for ( ; i < 5; i++ ) {\n                        guid += Math.floor( Math.random() * 65535 ).toString( 32 );\n                    }\n    \n                    return (prefix || 'wu_') + guid + (counter++).toString( 32 );\n                };\n            })(),\n    \n            /**\n             * 格式化文件大小, 输出成带单位的字符串\n             * @method formatSize\n             * @grammar Base.formatSize( size ) => String\n             * @grammar Base.formatSize( size, pointLength ) => String\n             * @grammar Base.formatSize( size, pointLength, units ) => String\n             * @param {Number} size 文件大小\n             * @param {Number} [pointLength=2] 精确到的小数点数。\n             * @param {Array} [units=[ 'B', 'K', 'M', 'G', 'TB' ]] 单位数组。从字节，到千字节，一直往上指定。如果单位数组里面只指定了到了K(千字节)，同时文件大小大于M, 此方法的输出将还是显示成多少K.\n             * @example\n             * console.log( Base.formatSize( 100 ) );    // => 100B\n             * console.log( Base.formatSize( 1024 ) );    // => 1.00K\n             * console.log( Base.formatSize( 1024, 0 ) );    // => 1K\n             * console.log( Base.formatSize( 1024 * 1024 ) );    // => 1.00M\n             * console.log( Base.formatSize( 1024 * 1024 * 1024 ) );    // => 1.00G\n             * console.log( Base.formatSize( 1024 * 1024 * 1024, 0, ['B', 'KB', 'MB'] ) );    // => 1024MB\n             */\n            formatSize: function( size, pointLength, units ) {\n                var unit;\n    \n                units = units || [ 'B', 'K', 'M', 'G', 'TB' ];\n    \n                while ( (unit = units.shift()) && size > 1024 ) {\n                    size = size / 1024;\n                }\n    \n                return (unit === 'B' ? size : size.toFixed( pointLength || 2 )) +\n                        unit;\n            }\n        };\n    });\n    /**\n     * 事件处理类，可以独立使用，也可以扩展给对象使用。\n     * @fileOverview Mediator\n     */\n    define('mediator',[\n        'base'\n    ], function( Base ) {\n        var $ = Base.$,\n            slice = [].slice,\n            separator = /\\s+/,\n            protos;\n    \n        // 根据条件过滤出事件handlers.\n        function findHandlers( arr, name, callback, context ) {\n            return $.grep( arr, function( handler ) {\n                return handler &&\n                        (!name || handler.e === name) &&\n                        (!callback || handler.cb === callback ||\n                        handler.cb._cb === callback) &&\n                        (!context || handler.ctx === context);\n            });\n        }\n    \n        function eachEvent( events, callback, iterator ) {\n            // 不支持对象，只支持多个event用空格隔开\n            $.each( (events || '').split( separator ), function( _, key ) {\n                iterator( key, callback );\n            });\n        }\n    \n        function triggerHanders( events, args ) {\n            var stoped = false,\n                i = -1,\n                len = events.length,\n                handler;\n    \n            while ( ++i < len ) {\n                handler = events[ i ];\n    \n                if ( handler.cb.apply( handler.ctx2, args ) === false ) {\n                    stoped = true;\n                    break;\n                }\n            }\n    \n            return !stoped;\n        }\n    \n        protos = {\n    \n            /**\n             * 绑定事件。\n             *\n             * `callback`方法在执行时，arguments将会来源于trigger的时候携带的参数。如\n             * ```javascript\n             * var obj = {};\n             *\n             * // 使得obj有事件行为\n             * Mediator.installTo( obj );\n             *\n             * obj.on( 'testa', function( arg1, arg2 ) {\n             *     console.log( arg1, arg2 ); // => 'arg1', 'arg2'\n             * });\n             *\n             * obj.trigger( 'testa', 'arg1', 'arg2' );\n             * ```\n             *\n             * 如果`callback`中，某一个方法`return false`了，则后续的其他`callback`都不会被执行到。\n             * 切会影响到`trigger`方法的返回值，为`false`。\n             *\n             * `on`还可以用来添加一个特殊事件`all`, 这样所有的事件触发都会响应到。同时此类`callback`中的arguments有一个不同处，\n             * 就是第一个参数为`type`，记录当前是什么事件在触发。此类`callback`的优先级比脚低，会再正常`callback`执行完后触发。\n             * ```javascript\n             * obj.on( 'all', function( type, arg1, arg2 ) {\n             *     console.log( type, arg1, arg2 ); // => 'testa', 'arg1', 'arg2'\n             * });\n             * ```\n             *\n             * @method on\n             * @grammar on( name, callback[, context] ) => self\n             * @param  {String}   name     事件名，支持多个事件用空格隔开\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             * @class Mediator\n             */\n            on: function( name, callback, context ) {\n                var me = this,\n                    set;\n    \n                if ( !callback ) {\n                    return this;\n                }\n    \n                set = this._events || (this._events = []);\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var handler = { e: name };\n    \n                    handler.cb = callback;\n                    handler.ctx = context;\n                    handler.ctx2 = context || me;\n                    handler.id = set.length;\n    \n                    set.push( handler );\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 绑定事件，且当handler执行完后，自动解除绑定。\n             * @method once\n             * @grammar once( name, callback[, context] ) => self\n             * @param  {String}   name     事件名\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            once: function( name, callback, context ) {\n                var me = this;\n    \n                if ( !callback ) {\n                    return me;\n                }\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var once = function() {\n                            me.off( name, once );\n                            return callback.apply( context || me, arguments );\n                        };\n    \n                    once._cb = callback;\n                    me.on( name, once, context );\n                });\n    \n                return me;\n            },\n    \n            /**\n             * 解除事件绑定\n             * @method off\n             * @grammar off( [name[, callback[, context] ] ] ) => self\n             * @param  {String}   [name]     事件名\n             * @param  {Function} [callback] 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            off: function( name, cb, ctx ) {\n                var events = this._events;\n    \n                if ( !events ) {\n                    return this;\n                }\n    \n                if ( !name && !cb && !ctx ) {\n                    this._events = [];\n                    return this;\n                }\n    \n                eachEvent( name, cb, function( name, cb ) {\n                    $.each( findHandlers( events, name, cb, ctx ), function() {\n                        delete events[ this.id ];\n                    });\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 触发事件\n             * @method trigger\n             * @grammar trigger( name[, args...] ) => self\n             * @param  {String}   type     事件名\n             * @param  {*} [...] 任意参数\n             * @return {Boolean} 如果handler中return false了，则返回false, 否则返回true\n             */\n            trigger: function( type ) {\n                var args, events, allEvents;\n    \n                if ( !this._events || !type ) {\n                    return this;\n                }\n    \n                args = slice.call( arguments, 1 );\n                events = findHandlers( this._events, type );\n                allEvents = findHandlers( this._events, 'all' );\n    \n                return triggerHanders( events, args ) &&\n                        triggerHanders( allEvents, arguments );\n            }\n        };\n    \n        /**\n         * 中介者，它本身是个单例，但可以通过[installTo](#WebUploader:Mediator:installTo)方法，使任何对象具备事件行为。\n         * 主要目的是负责模块与模块之间的合作，降低耦合度。\n         *\n         * @class Mediator\n         */\n        return $.extend({\n    \n            /**\n             * 可以通过这个接口，使任何对象具备事件功能。\n             * @method installTo\n             * @param  {Object} obj 需要具备事件行为的对象。\n             * @return {Object} 返回obj.\n             */\n            installTo: function( obj ) {\n                return $.extend( obj, protos );\n            }\n    \n        }, protos );\n    });\n    /**\n     * @fileOverview Uploader上传类\n     */\n    define('uploader',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$;\n    \n        /**\n         * 上传入口类。\n         * @class Uploader\n         * @constructor\n         * @grammar new Uploader( opts ) => Uploader\n         * @example\n         * var uploader = WebUploader.Uploader({\n         *     swf: 'path_of_swf/Uploader.swf',\n         *\n         *     // 开起分片上传。\n         *     chunked: true\n         * });\n         */\n        function Uploader( opts ) {\n            this.options = $.extend( true, {}, Uploader.options, opts );\n            this._init( this.options );\n        }\n    \n        // default Options\n        // widgets中有相应扩展\n        Uploader.options = {};\n        Mediator.installTo( Uploader.prototype );\n    \n        // 批量添加纯命令式方法。\n        $.each({\n            upload: 'start-upload',\n            stop: 'stop-upload',\n            getFile: 'get-file',\n            getFiles: 'get-files',\n            addFile: 'add-file',\n            addFiles: 'add-file',\n            sort: 'sort-files',\n            removeFile: 'remove-file',\n            cancelFile: 'cancel-file',\n            skipFile: 'skip-file',\n            retry: 'retry',\n            isInProgress: 'is-in-progress',\n            makeThumb: 'make-thumb',\n            md5File: 'md5-file',\n            getDimension: 'get-dimension',\n            addButton: 'add-btn',\n            predictRuntimeType: 'predict-runtime-type',\n            refresh: 'refresh',\n            disable: 'disable',\n            enable: 'enable',\n            reset: 'reset'\n        }, function( fn, command ) {\n            Uploader.prototype[ fn ] = function() {\n                return this.request( command, arguments );\n            };\n        });\n    \n        $.extend( Uploader.prototype, {\n            state: 'pending',\n    \n            _init: function( opts ) {\n                var me = this;\n    \n                me.request( 'init', opts, function() {\n                    me.state = 'ready';\n                    me.trigger('ready');\n                });\n            },\n    \n            /**\n             * 获取或者设置Uploader配置项。\n             * @method option\n             * @grammar option( key ) => *\n             * @grammar option( key, val ) => self\n             * @example\n             *\n             * // 初始状态图片上传前不会压缩\n             * var uploader = new WebUploader.Uploader({\n             *     compress: null;\n             * });\n             *\n             * // 修改后图片上传前，尝试将图片压缩到1600 * 1600\n             * uploader.option( 'compress', {\n             *     width: 1600,\n             *     height: 1600\n             * });\n             */\n            option: function( key, val ) {\n                var opts = this.options;\n    \n                // setter\n                if ( arguments.length > 1 ) {\n    \n                    if ( $.isPlainObject( val ) &&\n                            $.isPlainObject( opts[ key ] ) ) {\n                        $.extend( opts[ key ], val );\n                    } else {\n                        opts[ key ] = val;\n                    }\n    \n                } else {    // getter\n                    return key ? opts[ key ] : opts;\n                }\n            },\n    \n            /**\n             * 获取文件统计信息。返回一个包含一下信息的对象。\n             * * `successNum` 上传成功的文件数\n             * * `progressNum` 上传中的文件数\n             * * `cancelNum` 被删除的文件数\n             * * `invalidNum` 无效的文件数\n             * * `uploadFailNum` 上传失败的文件数\n             * * `queueNum` 还在队列中的文件数\n             * * `interruptNum` 被暂停的文件数\n             * @method getStats\n             * @grammar getStats() => Object\n             */\n            getStats: function() {\n                // return this._mgr.getStats.apply( this._mgr, arguments );\n                var stats = this.request('get-stats');\n    \n                return stats ? {\n                    successNum: stats.numOfSuccess,\n                    progressNum: stats.numOfProgress,\n    \n                    // who care?\n                    // queueFailNum: 0,\n                    cancelNum: stats.numOfCancel,\n                    invalidNum: stats.numOfInvalid,\n                    uploadFailNum: stats.numOfUploadFailed,\n                    queueNum: stats.numOfQueue,\n                    interruptNum: stats.numofInterrupt\n                } : {};\n            },\n    \n            // 需要重写此方法来来支持opts.onEvent和instance.onEvent的处理器\n            trigger: function( type/*, args...*/ ) {\n                var args = [].slice.call( arguments, 1 ),\n                    opts = this.options,\n                    name = 'on' + type.substring( 0, 1 ).toUpperCase() +\n                        type.substring( 1 );\n    \n                if (\n                        // 调用通过on方法注册的handler.\n                        Mediator.trigger.apply( this, arguments ) === false ||\n    \n                        // 调用opts.onEvent\n                        $.isFunction( opts[ name ] ) &&\n                        opts[ name ].apply( this, args ) === false ||\n    \n                        // 调用this.onEvent\n                        $.isFunction( this[ name ] ) &&\n                        this[ name ].apply( this, args ) === false ||\n    \n                        // 广播所有uploader的事件。\n                        Mediator.trigger.apply( Mediator,\n                        [ this, type ].concat( args ) ) === false ) {\n    \n                    return false;\n                }\n    \n                return true;\n            },\n    \n            /**\n             * 销毁 webuploader 实例\n             * @method destroy\n             * @grammar destroy() => undefined\n             */\n            destroy: function() {\n                this.request( 'destroy', arguments );\n                this.off();\n            },\n    \n            // widgets/widget.js将补充此方法的详细文档。\n            request: Base.noop\n        });\n    \n        /**\n         * 创建Uploader实例，等同于new Uploader( opts );\n         * @method create\n         * @class Base\n         * @static\n         * @grammar Base.create( opts ) => Uploader\n         */\n        Base.create = Uploader.create = function( opts ) {\n            return new Uploader( opts );\n        };\n    \n        // 暴露Uploader，可以通过它来扩展业务逻辑。\n        Base.Uploader = Uploader;\n    \n        return Uploader;\n    });\n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/runtime',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            factories = {},\n    \n            // 获取对象的第一个key\n            getFirstKey = function( obj ) {\n                for ( var key in obj ) {\n                    if ( obj.hasOwnProperty( key ) ) {\n                        return key;\n                    }\n                }\n                return null;\n            };\n    \n        // 接口类。\n        function Runtime( options ) {\n            this.options = $.extend({\n                container: document.body\n            }, options );\n            this.uid = Base.guid('rt_');\n        }\n    \n        $.extend( Runtime.prototype, {\n    \n            getContainer: function() {\n                var opts = this.options,\n                    parent, container;\n    \n                if ( this._container ) {\n                    return this._container;\n                }\n    \n                parent = $( opts.container || document.body );\n                container = $( document.createElement('div') );\n    \n                container.attr( 'id', 'rt_' + this.uid );\n                container.css({\n                    position: 'absolute',\n                    top: '0px',\n                    left: '0px',\n                    width: '1px',\n                    height: '1px',\n                    overflow: 'hidden'\n                });\n    \n                parent.append( container );\n                parent.addClass('webuploader-container');\n                this._container = container;\n                this._parent = parent;\n                return container;\n            },\n    \n            init: Base.noop,\n            exec: Base.noop,\n    \n            destroy: function() {\n                this._container && this._container.remove();\n                this._parent && this._parent.removeClass('webuploader-container');\n                this.off();\n            }\n        });\n    \n        Runtime.orders = 'html5,flash';\n    \n    \n        /**\n         * 添加Runtime实现。\n         * @param {String} type    类型\n         * @param {Runtime} factory 具体Runtime实现。\n         */\n        Runtime.addRuntime = function( type, factory ) {\n            factories[ type ] = factory;\n        };\n    \n        Runtime.hasRuntime = function( type ) {\n            return !!(type ? factories[ type ] : getFirstKey( factories ));\n        };\n    \n        Runtime.create = function( opts, orders ) {\n            var type, runtime;\n    \n            orders = orders || Runtime.orders;\n            $.each( orders.split( /\\s*,\\s*/g ), function() {\n                if ( factories[ this ] ) {\n                    type = this;\n                    return false;\n                }\n            });\n    \n            type = type || getFirstKey( factories );\n    \n            if ( !type ) {\n                throw new Error('Runtime Error');\n            }\n    \n            runtime = new factories[ type ]( opts );\n            return runtime;\n        };\n    \n        Mediator.installTo( Runtime.prototype );\n        return Runtime;\n    });\n    \n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/client',[\n        'base',\n        'mediator',\n        'runtime/runtime'\n    ], function( Base, Mediator, Runtime ) {\n    \n        var cache;\n    \n        cache = (function() {\n            var obj = {};\n    \n            return {\n                add: function( runtime ) {\n                    obj[ runtime.uid ] = runtime;\n                },\n    \n                get: function( ruid, standalone ) {\n                    var i;\n    \n                    if ( ruid ) {\n                        return obj[ ruid ];\n                    }\n    \n                    for ( i in obj ) {\n                        // 有些类型不能重用，比如filepicker.\n                        if ( standalone && obj[ i ].__standalone ) {\n                            continue;\n                        }\n    \n                        return obj[ i ];\n                    }\n    \n                    return null;\n                },\n    \n                remove: function( runtime ) {\n                    delete obj[ runtime.uid ];\n                }\n            };\n        })();\n    \n        function RuntimeClient( component, standalone ) {\n            var deferred = Base.Deferred(),\n                runtime;\n    \n            this.uid = Base.guid('client_');\n    \n            // 允许runtime没有初始化之前，注册一些方法在初始化后执行。\n            this.runtimeReady = function( cb ) {\n                return deferred.done( cb );\n            };\n    \n            this.connectRuntime = function( opts, cb ) {\n    \n                // already connected.\n                if ( runtime ) {\n                    throw new Error('already connected!');\n                }\n    \n                deferred.done( cb );\n    \n                if ( typeof opts === 'string' && cache.get( opts ) ) {\n                    runtime = cache.get( opts );\n                }\n    \n                // 像filePicker只能独立存在，不能公用。\n                runtime = runtime || cache.get( null, standalone );\n    \n                // 需要创建\n                if ( !runtime ) {\n                    runtime = Runtime.create( opts, opts.runtimeOrder );\n                    runtime.__promise = deferred.promise();\n                    runtime.once( 'ready', deferred.resolve );\n                    runtime.init();\n                    cache.add( runtime );\n                    runtime.__client = 1;\n                } else {\n                    // 来自cache\n                    Base.$.extend( runtime.options, opts );\n                    runtime.__promise.then( deferred.resolve );\n                    runtime.__client++;\n                }\n    \n                standalone && (runtime.__standalone = standalone);\n                return runtime;\n            };\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.disconnectRuntime = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                runtime.__client--;\n    \n                if ( runtime.__client <= 0 ) {\n                    cache.remove( runtime );\n                    delete runtime.__promise;\n                    runtime.destroy();\n                }\n    \n                runtime = null;\n            };\n    \n            this.exec = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                var args = Base.slice( arguments );\n                component && args.unshift( component );\n    \n                return runtime.exec.apply( this, args );\n            };\n    \n            this.getRuid = function() {\n                return runtime && runtime.uid;\n            };\n    \n            this.destroy = (function( destroy ) {\n                return function() {\n                    destroy && destroy.apply( this, arguments );\n                    this.trigger('destroy');\n                    this.off();\n                    this.exec('destroy');\n                    this.disconnectRuntime();\n                };\n            })( this.destroy );\n        }\n    \n        Mediator.installTo( RuntimeClient.prototype );\n        return RuntimeClient;\n    });\n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/dnd',[\n        'base',\n        'mediator',\n        'runtime/client'\n    ], function( Base, Mediator, RuntimeClent ) {\n    \n        var $ = Base.$;\n    \n        function DragAndDrop( opts ) {\n            opts = this.options = $.extend({}, DragAndDrop.options, opts );\n    \n            opts.container = $( opts.container );\n    \n            if ( !opts.container.length ) {\n                return;\n            }\n    \n            RuntimeClent.call( this, 'DragAndDrop' );\n        }\n    \n        DragAndDrop.options = {\n            accept: null,\n            disableGlobalDnd: false\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: DragAndDrop,\n    \n            init: function() {\n                var me = this;\n    \n                me.connectRuntime( me.options, function() {\n                    me.exec('init');\n                    me.trigger('ready');\n                });\n            }\n        });\n    \n        Mediator.installTo( DragAndDrop.prototype );\n    \n        return DragAndDrop;\n    });\n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/widget',[\n        'base',\n        'uploader'\n    ], function( Base, Uploader ) {\n    \n        var $ = Base.$,\n            _init = Uploader.prototype._init,\n            _destroy = Uploader.prototype.destroy,\n            IGNORE = {},\n            widgetClass = [];\n    \n        function isArrayLike( obj ) {\n            if ( !obj ) {\n                return false;\n            }\n    \n            var length = obj.length,\n                type = $.type( obj );\n    \n            if ( obj.nodeType === 1 && length ) {\n                return true;\n            }\n    \n            return type === 'array' || type !== 'function' && type !== 'string' &&\n                    (length === 0 || typeof length === 'number' && length > 0 &&\n                    (length - 1) in obj);\n        }\n    \n        function Widget( uploader ) {\n            this.owner = uploader;\n            this.options = uploader.options;\n        }\n    \n        $.extend( Widget.prototype, {\n    \n            init: Base.noop,\n    \n            // 类Backbone的事件监听声明，监听uploader实例上的事件\n            // widget直接无法监听事件，事件只能通过uploader来传递\n            invoke: function( apiName, args ) {\n    \n                /*\n                    {\n                        'make-thumb': 'makeThumb'\n                    }\n                 */\n                var map = this.responseMap;\n    \n                // 如果无API响应声明则忽略\n                if ( !map || !(apiName in map) || !(map[ apiName ] in this) ||\n                        !$.isFunction( this[ map[ apiName ] ] ) ) {\n    \n                    return IGNORE;\n                }\n    \n                return this[ map[ apiName ] ].apply( this, args );\n    \n            },\n    \n            /**\n             * 发送命令。当传入`callback`或者`handler`中返回`promise`时。返回一个当所有`handler`中的promise都完成后完成的新`promise`。\n             * @method request\n             * @grammar request( command, args ) => * | Promise\n             * @grammar request( command, args, callback ) => Promise\n             * @for  Uploader\n             */\n            request: function() {\n                return this.owner.request.apply( this.owner, arguments );\n            }\n        });\n    \n        // 扩展Uploader.\n        $.extend( Uploader.prototype, {\n    \n            /**\n             * @property {String | Array} [disableWidgets=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 默认所有 Uploader.register 了的 widget 都会被加载，如果禁用某一部分，请通过此 option 指定黑名单。\n             */\n    \n            // 覆写_init用来初始化widgets\n            _init: function() {\n                var me = this,\n                    widgets = me._widgets = [],\n                    deactives = me.options.disableWidgets || '';\n    \n                $.each( widgetClass, function( _, klass ) {\n                    (!deactives || !~deactives.indexOf( klass._name )) &&\n                        widgets.push( new klass( me ) );\n                });\n    \n                return _init.apply( me, arguments );\n            },\n    \n            request: function( apiName, args, callback ) {\n                var i = 0,\n                    widgets = this._widgets,\n                    len = widgets && widgets.length,\n                    rlts = [],\n                    dfds = [],\n                    widget, rlt, promise, key;\n    \n                args = isArrayLike( args ) ? args : [ args ];\n    \n                for ( ; i < len; i++ ) {\n                    widget = widgets[ i ];\n                    rlt = widget.invoke( apiName, args );\n    \n                    if ( rlt !== IGNORE ) {\n    \n                        // Deferred对象\n                        if ( Base.isPromise( rlt ) ) {\n                            dfds.push( rlt );\n                        } else {\n                            rlts.push( rlt );\n                        }\n                    }\n                }\n    \n                // 如果有callback，则用异步方式。\n                if ( callback || dfds.length ) {\n                    promise = Base.when.apply( Base, dfds );\n                    key = promise.pipe ? 'pipe' : 'then';\n    \n                    // 很重要不能删除。删除了会死循环。\n                    // 保证执行顺序。让callback总是在下一个 tick 中执行。\n                    return promise[ key ](function() {\n                                var deferred = Base.Deferred(),\n                                    args = arguments;\n    \n                                if ( args.length === 1 ) {\n                                    args = args[ 0 ];\n                                }\n    \n                                setTimeout(function() {\n                                    deferred.resolve( args );\n                                }, 1 );\n    \n                                return deferred.promise();\n                            })[ callback ? key : 'done' ]( callback || Base.noop );\n                } else {\n                    return rlts[ 0 ];\n                }\n            },\n    \n            destroy: function() {\n                _destroy.apply( this, arguments );\n                this._widgets = null;\n            }\n        });\n    \n        /**\n         * 添加组件\n         * @grammar Uploader.register(proto);\n         * @grammar Uploader.register(map, proto);\n         * @param  {object} responseMap API 名称与函数实现的映射\n         * @param  {object} proto 组件原型，构造函数通过 constructor 属性定义\n         * @method Uploader.register\n         * @for Uploader\n         * @example\n         * Uploader.register({\n         *     'make-thumb': 'makeThumb'\n         * }, {\n         *     init: function( options ) {},\n         *     makeThumb: function() {}\n         * });\n         *\n         * Uploader.register({\n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         */\n        Uploader.register = Widget.register = function( responseMap, widgetProto ) {\n            var map = { init: 'init', destroy: 'destroy', name: 'anonymous' },\n                klass;\n    \n            if ( arguments.length === 1 ) {\n                widgetProto = responseMap;\n    \n                // 自动生成 map 表。\n                $.each(widgetProto, function(key) {\n                    if ( key[0] === '_' || key === 'name' ) {\n                        key === 'name' && (map.name = widgetProto.name);\n                        return;\n                    }\n    \n                    map[key.replace(/[A-Z]/g, '-$&').toLowerCase()] = key;\n                });\n    \n            } else {\n                map = $.extend( map, responseMap );\n            }\n    \n            widgetProto.responseMap = map;\n            klass = Base.inherits( Widget, widgetProto );\n            klass._name = map.name;\n            widgetClass.push( klass );\n    \n            return klass;\n        };\n    \n        /**\n         * 删除插件，只有在注册时指定了名字的才能被删除。\n         * @grammar Uploader.unRegister(name);\n         * @param  {string} name 组件名字\n         * @method Uploader.unRegister\n         * @for Uploader\n         * @example\n         *\n         * Uploader.register({\n         *     name: 'custom',\n         *     \n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         *\n         * Uploader.unRegister('custom');\n         */\n        Uploader.unRegister = Widget.unRegister = function( name ) {\n            if ( !name || name === 'anonymous' ) {\n                return;\n            }\n            \n            // 删除指定的插件。\n            for ( var i = widgetClass.length; i--; ) {\n                if ( widgetClass[i]._name === name ) {\n                    widgetClass.splice(i, 1)\n                }\n            }\n        };\n    \n        return Widget;\n    });\n    /**\n     * @fileOverview DragAndDrop Widget。\n     */\n    define('widgets/filednd',[\n        'base',\n        'uploader',\n        'lib/dnd',\n        'widgets/widget'\n    ], function( Base, Uploader, Dnd ) {\n        var $ = Base.$;\n    \n        Uploader.options.dnd = '';\n    \n        /**\n         * @property {Selector} [dnd=undefined]  指定Drag And Drop拖拽的容器，如果不指定，则不启动。\n         * @namespace options\n         * @for Uploader\n         */\n        \n        /**\n         * @property {Selector} [disableGlobalDnd=false]  是否禁掉整个页面的拖拽功能，如果不禁用，图片拖进来的时候会默认被浏览器打开。\n         * @namespace options\n         * @for Uploader\n         */\n    \n        /**\n         * @event dndAccept\n         * @param {DataTransferItemList} items DataTransferItem\n         * @description 阻止此事件可以拒绝某些类型的文件拖入进来。目前只有 chrome 提供这样的 API，且只能通过 mime-type 验证。\n         * @for  Uploader\n         */\n        return Uploader.register({\n            name: 'dnd',\n            \n            init: function( opts ) {\n    \n                if ( !opts.dnd ||\n                        this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                var me = this,\n                    deferred = Base.Deferred(),\n                    options = $.extend({}, {\n                        disableGlobalDnd: opts.disableGlobalDnd,\n                        container: opts.dnd,\n                        accept: opts.accept\n                    }),\n                    dnd;\n    \n                this.dnd = dnd = new Dnd( options );\n    \n                dnd.once( 'ready', deferred.resolve );\n                dnd.on( 'drop', function( files ) {\n                    me.request( 'add-file', [ files ]);\n                });\n    \n                // 检测文件是否全部允许添加。\n                dnd.on( 'accept', function( items ) {\n                    return me.owner.trigger( 'dndAccept', items );\n                });\n    \n                dnd.init();\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                this.dnd && this.dnd.destroy();\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepaste',[\n        'base',\n        'mediator',\n        'runtime/client'\n    ], function( Base, Mediator, RuntimeClent ) {\n    \n        var $ = Base.$;\n    \n        function FilePaste( opts ) {\n            opts = this.options = $.extend({}, opts );\n            opts.container = $( opts.container || document.body );\n            RuntimeClent.call( this, 'FilePaste' );\n        }\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePaste,\n    \n            init: function() {\n                var me = this;\n    \n                me.connectRuntime( me.options, function() {\n                    me.exec('init');\n                    me.trigger('ready');\n                });\n            }\n        });\n    \n        Mediator.installTo( FilePaste.prototype );\n    \n        return FilePaste;\n    });\n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/filepaste',[\n        'base',\n        'uploader',\n        'lib/filepaste',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePaste ) {\n        var $ = Base.$;\n    \n        /**\n         * @property {Selector} [paste=undefined]  指定监听paste事件的容器，如果不指定，不启用此功能。此功能为通过粘贴来添加截屏的图片。建议设置为`document.body`.\n         * @namespace options\n         * @for Uploader\n         */\n        return Uploader.register({\n            name: 'paste',\n            \n            init: function( opts ) {\n    \n                if ( !opts.paste ||\n                        this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                var me = this,\n                    deferred = Base.Deferred(),\n                    options = $.extend({}, {\n                        container: opts.paste,\n                        accept: opts.accept\n                    }),\n                    paste;\n    \n                this.paste = paste = new FilePaste( options );\n    \n                paste.once( 'ready', deferred.resolve );\n                paste.on( 'paste', function( files ) {\n                    me.owner.request( 'add-file', [ files ]);\n                });\n                paste.init();\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                this.paste && this.paste.destroy();\n            }\n        });\n    });\n    /**\n     * @fileOverview Blob\n     */\n    define('lib/blob',[\n        'base',\n        'runtime/client'\n    ], function( Base, RuntimeClient ) {\n    \n        function Blob( ruid, source ) {\n            var me = this;\n    \n            me.source = source;\n            me.ruid = ruid;\n            this.size = source.size || 0;\n    \n            // 如果没有指定 mimetype, 但是知道文件后缀。\n            if ( !source.type && this.ext &&\n                    ~'jpg,jpeg,png,gif,bmp'.indexOf( this.ext ) ) {\n                this.type = 'image/' + (this.ext === 'jpg' ? 'jpeg' : this.ext);\n            } else {\n                this.type = source.type || 'application/octet-stream';\n            }\n    \n            RuntimeClient.call( me, 'Blob' );\n            this.uid = source.uid || this.uid;\n    \n            if ( ruid ) {\n                me.connectRuntime( ruid );\n            }\n        }\n    \n        Base.inherits( RuntimeClient, {\n            constructor: Blob,\n    \n            slice: function( start, end ) {\n                return this.exec( 'slice', start, end );\n            },\n    \n            getSource: function() {\n                return this.source;\n            }\n        });\n    \n        return Blob;\n    });\n    /**\n     * 为了统一化Flash的File和HTML5的File而存在。\n     * 以至于要调用Flash里面的File，也可以像调用HTML5版本的File一下。\n     * @fileOverview File\n     */\n    define('lib/file',[\n        'base',\n        'lib/blob'\n    ], function( Base, Blob ) {\n    \n        var uid = 1,\n            rExt = /\\.([^.]+)$/;\n    \n        function File( ruid, file ) {\n            var ext;\n    \n            this.name = file.name || ('untitled' + uid++);\n            ext = rExt.exec( file.name ) ? RegExp.$1.toLowerCase() : '';\n    \n            // todo 支持其他类型文件的转换。\n            // 如果有 mimetype, 但是文件名里面没有找出后缀规律\n            if ( !ext && file.type ) {\n                ext = /\\/(jpg|jpeg|png|gif|bmp)$/i.exec( file.type ) ?\n                        RegExp.$1.toLowerCase() : '';\n                this.name += '.' + ext;\n            }\n    \n            this.ext = ext;\n            this.lastModifiedDate = file.lastModifiedDate ||\n                    (new Date()).toLocaleString();\n    \n            Blob.apply( this, arguments );\n        }\n    \n        return Base.inherits( Blob, File );\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepicker',[\n        'base',\n        'runtime/client',\n        'lib/file'\n    ], function( Base, RuntimeClent, File ) {\n    \n        var $ = Base.$;\n    \n        function FilePicker( opts ) {\n            opts = this.options = $.extend({}, FilePicker.options, opts );\n    \n            opts.container = $( opts.id );\n    \n            if ( !opts.container.length ) {\n                throw new Error('按钮指定错误');\n            }\n    \n            opts.innerHTML = opts.innerHTML || opts.label ||\n                    opts.container.html() || '';\n    \n            opts.button = $( opts.button || document.createElement('div') );\n            opts.button.html( opts.innerHTML );\n            opts.container.html( opts.button );\n    \n            RuntimeClent.call( this, 'FilePicker', true );\n        }\n    \n        FilePicker.options = {\n            button: null,\n            container: null,\n            label: null,\n            innerHTML: null,\n            multiple: true,\n            accept: null,\n            name: 'file'\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePicker,\n    \n            init: function() {\n                var me = this,\n                    opts = me.options,\n                    button = opts.button;\n    \n                button.addClass('webuploader-pick');\n    \n                me.on( 'all', function( type ) {\n                    var files;\n    \n                    switch ( type ) {\n                        case 'mouseenter':\n                            button.addClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'mouseleave':\n                            button.removeClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'change':\n                            files = me.exec('getFiles');\n                            me.trigger( 'select', $.map( files, function( file ) {\n                                file = new File( me.getRuid(), file );\n    \n                                // 记录来源。\n                                file._refer = opts.container;\n                                return file;\n                            }), opts.container );\n                            break;\n                    }\n                });\n    \n                me.connectRuntime( opts, function() {\n                    me.refresh();\n                    me.exec( 'init', opts );\n                    me.trigger('ready');\n                });\n    \n                this._resizeHandler = Base.bindFn( this.refresh, this );\n                $( window ).on( 'resize', this._resizeHandler );\n            },\n    \n            refresh: function() {\n                var shimContainer = this.getRuntime().getContainer(),\n                    button = this.options.button,\n                    width = button.outerWidth ?\n                            button.outerWidth() : button.width(),\n    \n                    height = button.outerHeight ?\n                            button.outerHeight() : button.height(),\n    \n                    pos = button.offset();\n    \n                width && height && shimContainer.css({\n                    bottom: 'auto',\n                    right: 'auto',\n                    width: width + 'px',\n                    height: height + 'px'\n                }).offset( pos );\n            },\n    \n            enable: function() {\n                var btn = this.options.button;\n    \n                btn.removeClass('webuploader-pick-disable');\n                this.refresh();\n            },\n    \n            disable: function() {\n                var btn = this.options.button;\n    \n                this.getRuntime().getContainer().css({\n                    top: '-99999px'\n                });\n    \n                btn.addClass('webuploader-pick-disable');\n            },\n    \n            destroy: function() {\n                var btn = this.options.button;\n                $( window ).off( 'resize', this._resizeHandler );\n                btn.removeClass('webuploader-pick-disable webuploader-pick-hover ' +\n                    'webuploader-pick');\n            }\n        });\n    \n        return FilePicker;\n    });\n    \n    /**\n     * @fileOverview 文件选择相关\n     */\n    define('widgets/filepicker',[\n        'base',\n        'uploader',\n        'lib/filepicker',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePicker ) {\n        var $ = Base.$;\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Selector | Object} [pick=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 指定选择文件的按钮容器，不指定则不创建按钮。\n             *\n             * * `id` {Seletor|dom} 指定选择文件的按钮容器，不指定则不创建按钮。**注意** 这里虽然写的是 id, 但是不是只支持 id, 还支持 class, 或者 dom 节点。\n             * * `label` {String} 请采用 `innerHTML` 代替\n             * * `innerHTML` {String} 指定按钮文字。不指定时优先从指定的容器中看是否自带文字。\n             * * `multiple` {Boolean} 是否开起同时选择多个文件能力。\n             */\n            pick: null,\n    \n            /**\n             * @property {Arroy} [accept=null]\n             * @namespace options\n             * @for Uploader\n             * @description 指定接受哪些类型的文件。 由于目前还有ext转mimeType表，所以这里需要分开指定。\n             *\n             * * `title` {String} 文字描述\n             * * `extensions` {String} 允许的文件后缀，不带点，多个用逗号分割。\n             * * `mimeTypes` {String} 多个用逗号分割。\n             *\n             * 如：\n             *\n             * ```\n             * {\n             *     title: 'Images',\n             *     extensions: 'gif,jpg,jpeg,bmp,png',\n             *     mimeTypes: 'image/*'\n             * }\n             * ```\n             */\n            accept: null/*{\n                title: 'Images',\n                extensions: 'gif,jpg,jpeg,bmp,png',\n                mimeTypes: 'image/*'\n            }*/\n        });\n    \n        return Uploader.register({\n            name: 'picker',\n    \n            init: function( opts ) {\n                this.pickers = [];\n                return opts.pick && this.addBtn( opts.pick );\n            },\n    \n            refresh: function() {\n                $.each( this.pickers, function() {\n                    this.refresh();\n                });\n            },\n    \n            /**\n             * @method addButton\n             * @for Uploader\n             * @grammar addButton( pick ) => Promise\n             * @description\n             * 添加文件选择按钮，如果一个按钮不够，需要调用此方法来添加。参数跟[options.pick](#WebUploader:Uploader:options)一致。\n             * @example\n             * uploader.addButton({\n             *     id: '#btnContainer',\n             *     innerHTML: '选择文件'\n             * });\n             */\n            addBtn: function( pick ) {\n                var me = this,\n                    opts = me.options,\n                    accept = opts.accept,\n                    promises = [];\n    \n                if ( !pick ) {\n                    return;\n                }\n    \n                $.isPlainObject( pick ) || (pick = {\n                    id: pick\n                });\n    \n                $( pick.id ).each(function() {\n                    var options, picker, deferred;\n    \n                    deferred = Base.Deferred();\n    \n                    options = $.extend({}, pick, {\n                        accept: $.isPlainObject( accept ) ? [ accept ] : accept,\n                        swf: opts.swf,\n                        runtimeOrder: opts.runtimeOrder,\n                        id: this\n                    });\n    \n                    picker = new FilePicker( options );\n    \n                    picker.once( 'ready', deferred.resolve );\n                    picker.on( 'select', function( files ) {\n                        me.owner.request( 'add-file', [ files ]);\n                    });\n                    picker.init();\n    \n                    me.pickers.push( picker );\n    \n                    promises.push( deferred.promise() );\n                });\n    \n                return Base.when.apply( Base, promises );\n            },\n    \n            disable: function() {\n                $.each( this.pickers, function() {\n                    this.disable();\n                });\n            },\n    \n            enable: function() {\n                $.each( this.pickers, function() {\n                    this.enable();\n                });\n            },\n    \n            destroy: function() {\n                $.each( this.pickers, function() {\n                    this.destroy();\n                });\n                this.pickers = null;\n            }\n        });\n    });\n    /**\n     * @fileOverview 文件属性封装\n     */\n    define('file',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            idPrefix = 'WU_FILE_',\n            idSuffix = 0,\n            rExt = /\\.([^.]+)$/,\n            statusMap = {};\n    \n        function gid() {\n            return idPrefix + idSuffix++;\n        }\n    \n        /**\n         * 文件类\n         * @class File\n         * @constructor 构造函数\n         * @grammar new File( source ) => File\n         * @param {Lib.File} source [lib.File](#Lib.File)实例, 此source对象是带有Runtime信息的。\n         */\n        function WUFile( source ) {\n    \n            /**\n             * 文件名，包括扩展名（后缀）\n             * @property name\n             * @type {string}\n             */\n            this.name = source.name || 'Untitled';\n    \n            /**\n             * 文件体积（字节）\n             * @property size\n             * @type {uint}\n             * @default 0\n             */\n            this.size = source.size || 0;\n    \n            /**\n             * 文件MIMETYPE类型，与文件类型的对应关系请参考[http://t.cn/z8ZnFny](http://t.cn/z8ZnFny)\n             * @property type\n             * @type {string}\n             * @default 'application/octet-stream'\n             */\n            this.type = source.type || 'application/octet-stream';\n    \n            /**\n             * 文件最后修改日期\n             * @property lastModifiedDate\n             * @type {int}\n             * @default 当前时间戳\n             */\n            this.lastModifiedDate = source.lastModifiedDate || (new Date() * 1);\n    \n            /**\n             * 文件ID，每个对象具有唯一ID，与文件名无关\n             * @property id\n             * @type {string}\n             */\n            this.id = gid();\n    \n            /**\n             * 文件扩展名，通过文件名获取，例如test.png的扩展名为png\n             * @property ext\n             * @type {string}\n             */\n            this.ext = rExt.exec( this.name ) ? RegExp.$1 : '';\n    \n    \n            /**\n             * 状态文字说明。在不同的status语境下有不同的用途。\n             * @property statusText\n             * @type {string}\n             */\n            this.statusText = '';\n    \n            // 存储文件状态，防止通过属性直接修改\n            statusMap[ this.id ] = WUFile.Status.INITED;\n    \n            this.source = source;\n            this.loaded = 0;\n    \n            this.on( 'error', function( msg ) {\n                this.setStatus( WUFile.Status.ERROR, msg );\n            });\n        }\n    \n        $.extend( WUFile.prototype, {\n    \n            /**\n             * 设置状态，状态变化时会触发`change`事件。\n             * @method setStatus\n             * @grammar setStatus( status[, statusText] );\n             * @param {File.Status|String} status [文件状态值](#WebUploader:File:File.Status)\n             * @param {String} [statusText=''] 状态说明，常在error时使用，用http, abort,server等来标记是由于什么原因导致文件错误。\n             */\n            setStatus: function( status, text ) {\n    \n                var prevStatus = statusMap[ this.id ];\n    \n                typeof text !== 'undefined' && (this.statusText = text);\n    \n                if ( status !== prevStatus ) {\n                    statusMap[ this.id ] = status;\n                    /**\n                     * 文件状态变化\n                     * @event statuschange\n                     */\n                    this.trigger( 'statuschange', status, prevStatus );\n                }\n    \n            },\n    \n            /**\n             * 获取文件状态\n             * @return {File.Status}\n             * @example\n                     文件状态具体包括以下几种类型：\n                     {\n                         // 初始化\n                        INITED:     0,\n                        // 已入队列\n                        QUEUED:     1,\n                        // 正在上传\n                        PROGRESS:     2,\n                        // 上传出错\n                        ERROR:         3,\n                        // 上传成功\n                        COMPLETE:     4,\n                        // 上传取消\n                        CANCELLED:     5\n                    }\n             */\n            getStatus: function() {\n                return statusMap[ this.id ];\n            },\n    \n            /**\n             * 获取文件原始信息。\n             * @return {*}\n             */\n            getSource: function() {\n                return this.source;\n            },\n    \n            destroy: function() {\n                this.off();\n                delete statusMap[ this.id ];\n            }\n        });\n    \n        Mediator.installTo( WUFile.prototype );\n    \n        /**\n         * 文件状态值，具体包括以下几种类型：\n         * * `inited` 初始状态\n         * * `queued` 已经进入队列, 等待上传\n         * * `progress` 上传中\n         * * `complete` 上传完成。\n         * * `error` 上传出错，可重试\n         * * `interrupt` 上传中断，可续传。\n         * * `invalid` 文件不合格，不能重试上传。会自动从队列中移除。\n         * * `cancelled` 文件被移除。\n         * @property {Object} Status\n         * @namespace File\n         * @class File\n         * @static\n         */\n        WUFile.Status = {\n            INITED:     'inited',    // 初始状态\n            QUEUED:     'queued',    // 已经进入队列, 等待上传\n            PROGRESS:   'progress',    // 上传中\n            ERROR:      'error',    // 上传出错，可重试\n            COMPLETE:   'complete',    // 上传完成。\n            CANCELLED:  'cancelled',    // 上传取消。\n            INTERRUPT:  'interrupt',    // 上传中断，可续传。\n            INVALID:    'invalid'    // 文件不合格，不能重试上传。\n        };\n    \n        return WUFile;\n    });\n    \n    /**\n     * @fileOverview 文件队列\n     */\n    define('queue',[\n        'base',\n        'mediator',\n        'file'\n    ], function( Base, Mediator, WUFile ) {\n    \n        var $ = Base.$,\n            STATUS = WUFile.Status;\n    \n        /**\n         * 文件队列, 用来存储各个状态中的文件。\n         * @class Queue\n         * @extends Mediator\n         */\n        function Queue() {\n    \n            /**\n             * 统计文件数。\n             * * `numOfQueue` 队列中的文件数。\n             * * `numOfSuccess` 上传成功的文件数\n             * * `numOfCancel` 被取消的文件数\n             * * `numOfProgress` 正在上传中的文件数\n             * * `numOfUploadFailed` 上传错误的文件数。\n             * * `numOfInvalid` 无效的文件数。\n             * * `numofDeleted` 被移除的文件数。\n             * @property {Object} stats\n             */\n            this.stats = {\n                numOfQueue: 0,\n                numOfSuccess: 0,\n                numOfCancel: 0,\n                numOfProgress: 0,\n                numOfUploadFailed: 0,\n                numOfInvalid: 0,\n                numofDeleted: 0,\n                numofInterrupt: 0\n            };\n    \n            // 上传队列，仅包括等待上传的文件\n            this._queue = [];\n    \n            // 存储所有文件\n            this._map = {};\n        }\n    \n        $.extend( Queue.prototype, {\n    \n            /**\n             * 将新文件加入对队列尾部\n             *\n             * @method append\n             * @param  {File} file   文件对象\n             */\n            append: function( file ) {\n                this._queue.push( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 将新文件加入对队列头部\n             *\n             * @method prepend\n             * @param  {File} file   文件对象\n             */\n            prepend: function( file ) {\n                this._queue.unshift( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 获取文件对象\n             *\n             * @method getFile\n             * @param  {String} fileId   文件ID\n             * @return {File}\n             */\n            getFile: function( fileId ) {\n                if ( typeof fileId !== 'string' ) {\n                    return fileId;\n                }\n                return this._map[ fileId ];\n            },\n    \n            /**\n             * 从队列中取出一个指定状态的文件。\n             * @grammar fetch( status ) => File\n             * @method fetch\n             * @param {String} status [文件状态值](#WebUploader:File:File.Status)\n             * @return {File} [File](#WebUploader:File)\n             */\n            fetch: function( status ) {\n                var len = this._queue.length,\n                    i, file;\n    \n                status = status || STATUS.QUEUED;\n    \n                for ( i = 0; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( status === file.getStatus() ) {\n                        return file;\n                    }\n                }\n    \n                return null;\n            },\n    \n            /**\n             * 对队列进行排序，能够控制文件上传顺序。\n             * @grammar sort( fn ) => undefined\n             * @method sort\n             * @param {Function} fn 排序方法\n             */\n            sort: function( fn ) {\n                if ( typeof fn === 'function' ) {\n                    this._queue.sort( fn );\n                }\n            },\n    \n            /**\n             * 获取指定类型的文件列表, 列表中每一个成员为[File](#WebUploader:File)对象。\n             * @grammar getFiles( [status1[, status2 ...]] ) => Array\n             * @method getFiles\n             * @param {String} [status] [文件状态值](#WebUploader:File:File.Status)\n             */\n            getFiles: function() {\n                var sts = [].slice.call( arguments, 0 ),\n                    ret = [],\n                    i = 0,\n                    len = this._queue.length,\n                    file;\n    \n                for ( ; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( sts.length && !~$.inArray( file.getStatus(), sts ) ) {\n                        continue;\n                    }\n    \n                    ret.push( file );\n                }\n    \n                return ret;\n            },\n    \n            /**\n             * 在队列中删除文件。\n             * @grammar removeFile( file ) => Array\n             * @method removeFile\n             * @param {File} 文件对象。\n             */\n            removeFile: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( existing ) {\n                    delete this._map[ file.id ];\n                    file.destroy();\n                    this.stats.numofDeleted++;\n                }\n            },\n    \n            _fileAdded: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( !existing ) {\n                    this._map[ file.id ] = file;\n    \n                    file.on( 'statuschange', function( cur, pre ) {\n                        me._onFileStatusChange( cur, pre );\n                    });\n                }\n            },\n    \n            _onFileStatusChange: function( curStatus, preStatus ) {\n                var stats = this.stats;\n    \n                switch ( preStatus ) {\n                    case STATUS.PROGRESS:\n                        stats.numOfProgress--;\n                        break;\n    \n                    case STATUS.QUEUED:\n                        stats.numOfQueue --;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed--;\n                        break;\n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid--;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt--;\n                        break;\n                }\n    \n                switch ( curStatus ) {\n                    case STATUS.QUEUED:\n                        stats.numOfQueue++;\n                        break;\n    \n                    case STATUS.PROGRESS:\n                        stats.numOfProgress++;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed++;\n                        break;\n    \n                    case STATUS.COMPLETE:\n                        stats.numOfSuccess++;\n                        break;\n    \n                    case STATUS.CANCELLED:\n                        stats.numOfCancel++;\n                        break;\n    \n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid++;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt++;\n                        break;\n                }\n            }\n    \n        });\n    \n        Mediator.installTo( Queue.prototype );\n    \n        return Queue;\n    });\n    /**\n     * @fileOverview 队列\n     */\n    define('widgets/queue',[\n        'base',\n        'uploader',\n        'queue',\n        'file',\n        'lib/file',\n        'runtime/client',\n        'widgets/widget'\n    ], function( Base, Uploader, Queue, WUFile, File, RuntimeClient ) {\n    \n        var $ = Base.$,\n            rExt = /\\.\\w+$/,\n            Status = WUFile.Status;\n    \n        return Uploader.register({\n            name: 'queue',\n    \n            init: function( opts ) {\n                var me = this,\n                    deferred, len, i, item, arr, accept, runtime;\n    \n                if ( $.isPlainObject( opts.accept ) ) {\n                    opts.accept = [ opts.accept ];\n                }\n    \n                // accept中的中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].extensions;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = '\\\\.' + arr.join(',')\n                                .replace( /,/g, '$|\\\\.' )\n                                .replace( /\\*/g, '.*' ) + '$';\n                    }\n    \n                    me.accept = new RegExp( accept, 'i' );\n                }\n    \n                me.queue = new Queue();\n                me.stats = me.queue.stats;\n    \n                // 如果当前不是html5运行时，那就算了。\n                // 不执行后续操作\n                if ( this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                // 创建一个 html5 运行时的 placeholder\n                // 以至于外部添加原生 File 对象的时候能正确包裹一下供 webuploader 使用。\n                deferred = Base.Deferred();\n                this.placeholder = runtime = new RuntimeClient('Placeholder');\n                runtime.connectRuntime({\n                    runtimeOrder: 'html5'\n                }, function() {\n                    me._ruid = runtime.getRuid();\n                    deferred.resolve();\n                });\n                return deferred.promise();\n            },\n    \n    \n            // 为了支持外部直接添加一个原生File对象。\n            _wrapFile: function( file ) {\n                if ( !(file instanceof WUFile) ) {\n    \n                    if ( !(file instanceof File) ) {\n                        if ( !this._ruid ) {\n                            throw new Error('Can\\'t add external files.');\n                        }\n                        file = new File( this._ruid, file );\n                    }\n    \n                    file = new WUFile( file );\n                }\n    \n                return file;\n            },\n    \n            // 判断文件是否可以被加入队列\n            acceptFile: function( file ) {\n                var invalid = !file || !file.size || this.accept &&\n    \n                        // 如果名字中有后缀，才做后缀白名单处理。\n                        rExt.exec( file.name ) && !this.accept.test( file.name );\n    \n                return !invalid;\n            },\n    \n    \n            /**\n             * @event beforeFileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列之前触发，此事件的handler返回值为`false`，则此文件不会被添加进入队列。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event fileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列以后触发。\n             * @for  Uploader\n             */\n    \n            _addFile: function( file ) {\n                var me = this;\n    \n                file = me._wrapFile( file );\n    \n                // 不过类型判断允许不允许，先派送 `beforeFileQueued`\n                if ( !me.owner.trigger( 'beforeFileQueued', file ) ) {\n                    return;\n                }\n    \n                // 类型不匹配，则派送错误事件，并返回。\n                if ( !me.acceptFile( file ) ) {\n                    me.owner.trigger( 'error', 'Q_TYPE_DENIED', file );\n                    return;\n                }\n    \n                me.queue.append( file );\n                me.owner.trigger( 'fileQueued', file );\n                return file;\n            },\n    \n            getFile: function( fileId ) {\n                return this.queue.getFile( fileId );\n            },\n    \n            /**\n             * @event filesQueued\n             * @param {File} files 数组，内容为原始File(lib/File）对象。\n             * @description 当一批文件添加进队列以后触发。\n             * @for  Uploader\n             */\n            \n            /**\n             * @property {Boolean} [auto=false]\n             * @namespace options\n             * @for Uploader\n             * @description 设置为 true 后，不需要手动调用上传，有文件选择即开始上传。\n             * \n             */\n    \n            /**\n             * @method addFiles\n             * @grammar addFiles( file ) => undefined\n             * @grammar addFiles( [file1, file2 ...] ) => undefined\n             * @param {Array of File or File} [files] Files 对象 数组\n             * @description 添加文件到队列\n             * @for  Uploader\n             */\n            addFile: function( files ) {\n                var me = this;\n    \n                if ( !files.length ) {\n                    files = [ files ];\n                }\n    \n                files = $.map( files, function( file ) {\n                    return me._addFile( file );\n                });\n    \n                me.owner.trigger( 'filesQueued', files );\n    \n                if ( me.options.auto ) {\n                    setTimeout(function() {\n                        me.request('start-upload');\n                    }, 20 );\n                }\n            },\n    \n            getStats: function() {\n                return this.stats;\n            },\n    \n            /**\n             * @event fileDequeued\n             * @param {File} file File对象\n             * @description 当文件被移除队列后触发。\n             * @for  Uploader\n             */\n    \n             /**\n             * @method removeFile\n             * @grammar removeFile( file ) => undefined\n             * @grammar removeFile( id ) => undefined\n             * @grammar removeFile( file, true ) => undefined\n             * @grammar removeFile( id, true ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 移除某一文件, 默认只会标记文件状态为已取消，如果第二个参数为 `true` 则会从 queue 中移除。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.removeFile( file );\n             * })\n             */\n            removeFile: function( file, remove ) {\n                var me = this;\n    \n                file = file.id ? file : me.queue.getFile( file );\n    \n                this.request( 'cancel-file', file );\n    \n                if ( remove ) {\n                    this.queue.removeFile( file );\n                }\n            },\n    \n            /**\n             * @method getFiles\n             * @grammar getFiles() => Array\n             * @grammar getFiles( status1, status2, status... ) => Array\n             * @description 返回指定状态的文件集合，不传参数将返回所有状态的文件。\n             * @for  Uploader\n             * @example\n             * console.log( uploader.getFiles() );    // => all files\n             * console.log( uploader.getFiles('error') )    // => all error files.\n             */\n            getFiles: function() {\n                return this.queue.getFiles.apply( this.queue, arguments );\n            },\n    \n            fetchFile: function() {\n                return this.queue.fetch.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @method retry\n             * @grammar retry() => undefined\n             * @grammar retry( file ) => undefined\n             * @description 重试上传，重试指定文件，或者从出错的文件开始重新上传。\n             * @for  Uploader\n             * @example\n             * function retry() {\n             *     uploader.retry();\n             * }\n             */\n            retry: function( file, noForceStart ) {\n                var me = this,\n                    files, i, len;\n    \n                if ( file ) {\n                    file = file.id ? file : me.queue.getFile( file );\n                    file.setStatus( Status.QUEUED );\n                    noForceStart || me.request('start-upload');\n                    return;\n                }\n    \n                files = me.queue.getFiles( Status.ERROR );\n                i = 0;\n                len = files.length;\n    \n                for ( ; i < len; i++ ) {\n                    file = files[ i ];\n                    file.setStatus( Status.QUEUED );\n                }\n    \n                me.request('start-upload');\n            },\n    \n            /**\n             * @method sort\n             * @grammar sort( fn ) => undefined\n             * @description 排序队列中的文件，在上传之前调整可以控制上传顺序。\n             * @for  Uploader\n             */\n            sortFiles: function() {\n                return this.queue.sort.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @event reset\n             * @description 当 uploader 被重置的时候触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @method reset\n             * @grammar reset() => undefined\n             * @description 重置uploader。目前只重置了队列。\n             * @for  Uploader\n             * @example\n             * uploader.reset();\n             */\n            reset: function() {\n                this.owner.trigger('reset');\n                this.queue = new Queue();\n                this.stats = this.queue.stats;\n            },\n    \n            destroy: function() {\n                this.reset();\n                this.placeholder && this.placeholder.destroy();\n            }\n        });\n    \n    });\n    /**\n     * @fileOverview 添加获取Runtime相关信息的方法。\n     */\n    define('widgets/runtime',[\n        'uploader',\n        'runtime/runtime',\n        'widgets/widget'\n    ], function( Uploader, Runtime ) {\n    \n        Uploader.support = function() {\n            return Runtime.hasRuntime.apply( Runtime, arguments );\n        };\n    \n        /**\n         * @property {Object} [runtimeOrder=html5,flash]\n         * @namespace options\n         * @for Uploader\n         * @description 指定运行时启动顺序。默认会想尝试 html5 是否支持，如果支持则使用 html5, 否则则使用 flash.\n         *\n         * 可以将此值设置成 `flash`，来强制使用 flash 运行时。\n         */\n    \n        return Uploader.register({\n            name: 'runtime',\n    \n            init: function() {\n                if ( !this.predictRuntimeType() ) {\n                    throw Error('Runtime Error');\n                }\n            },\n    \n            /**\n             * 预测Uploader将采用哪个`Runtime`\n             * @grammar predictRuntimeType() => String\n             * @method predictRuntimeType\n             * @for  Uploader\n             */\n            predictRuntimeType: function() {\n                var orders = this.options.runtimeOrder || Runtime.orders,\n                    type = this.type,\n                    i, len;\n    \n                if ( !type ) {\n                    orders = orders.split( /\\s*,\\s*/g );\n    \n                    for ( i = 0, len = orders.length; i < len; i++ ) {\n                        if ( Runtime.hasRuntime( orders[ i ] ) ) {\n                            this.type = type = orders[ i ];\n                            break;\n                        }\n                    }\n                }\n    \n                return type;\n            }\n        });\n    });\n    /**\n     * @fileOverview Transport\n     */\n    define('lib/transport',[\n        'base',\n        'runtime/client',\n        'mediator'\n    ], function( Base, RuntimeClient, Mediator ) {\n    \n        var $ = Base.$;\n    \n        function Transport( opts ) {\n            var me = this;\n    \n            opts = me.options = $.extend( true, {}, Transport.options, opts || {} );\n            RuntimeClient.call( this, 'Transport' );\n    \n            this._blob = null;\n            this._formData = opts.formData || {};\n            this._headers = opts.headers || {};\n    \n            this.on( 'progress', this._timeout );\n            this.on( 'load error', function() {\n                me.trigger( 'progress', 1 );\n                clearTimeout( me._timer );\n            });\n        }\n    \n        Transport.options = {\n            server: '',\n            method: 'POST',\n    \n            // 跨域时，是否允许携带cookie, 只有html5 runtime才有效\n            withCredentials: false,\n            fileVal: 'file',\n            timeout: 2 * 60 * 1000,    // 2分钟\n            formData: {},\n            headers: {},\n            sendAsBinary: false\n        };\n    \n        $.extend( Transport.prototype, {\n    \n            // 添加Blob, 只能添加一次，最后一次有效。\n            appendBlob: function( key, blob, filename ) {\n                var me = this,\n                    opts = me.options;\n    \n                if ( me.getRuid() ) {\n                    me.disconnectRuntime();\n                }\n    \n                // 连接到blob归属的同一个runtime.\n                me.connectRuntime( blob.ruid, function() {\n                    me.exec('init');\n                });\n    \n                me._blob = blob;\n                opts.fileVal = key || opts.fileVal;\n                opts.filename = filename || opts.filename;\n            },\n    \n            // 添加其他字段\n            append: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._formData, key );\n                } else {\n                    this._formData[ key ] = value;\n                }\n            },\n    \n            setRequestHeader: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._headers, key );\n                } else {\n                    this._headers[ key ] = value;\n                }\n            },\n    \n            send: function( method ) {\n                this.exec( 'send', method );\n                this._timeout();\n            },\n    \n            abort: function() {\n                clearTimeout( this._timer );\n                return this.exec('abort');\n            },\n    \n            destroy: function() {\n                this.trigger('destroy');\n                this.off();\n                this.exec('destroy');\n                this.disconnectRuntime();\n            },\n    \n            getResponse: function() {\n                return this.exec('getResponse');\n            },\n    \n            getResponseAsJson: function() {\n                return this.exec('getResponseAsJson');\n            },\n    \n            getStatus: function() {\n                return this.exec('getStatus');\n            },\n    \n            _timeout: function() {\n                var me = this,\n                    duration = me.options.timeout;\n    \n                if ( !duration ) {\n                    return;\n                }\n    \n                clearTimeout( me._timer );\n                me._timer = setTimeout(function() {\n                    me.abort();\n                    me.trigger( 'error', 'timeout' );\n                }, duration );\n            }\n    \n        });\n    \n        // 让Transport具备事件功能。\n        Mediator.installTo( Transport.prototype );\n    \n        return Transport;\n    });\n    /**\n     * @fileOverview 负责文件上传相关。\n     */\n    define('widgets/upload',[\n        'base',\n        'uploader',\n        'file',\n        'lib/transport',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile, Transport ) {\n    \n        var $ = Base.$,\n            isPromise = Base.isPromise,\n            Status = WUFile.Status;\n    \n        // 添加默认配置项\n        $.extend( Uploader.options, {\n    \n    \n            /**\n             * @property {Boolean} [prepareNextFile=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否允许在文件传输时提前把下一个文件准备好。\n             * 对于一个文件的准备工作比较耗时，比如图片压缩，md5序列化。\n             * 如果能提前在当前文件传输期处理，可以节省总体耗时。\n             */\n            prepareNextFile: false,\n    \n            /**\n             * @property {Boolean} [chunked=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否要分片处理大文件上传。\n             */\n            chunked: false,\n    \n            /**\n             * @property {Boolean} [chunkSize=5242880]\n             * @namespace options\n             * @for Uploader\n             * @description 如果要分片，分多大一片？ 默认大小为5M.\n             */\n            chunkSize: 5 * 1024 * 1024,\n    \n            /**\n             * @property {Boolean} [chunkRetry=2]\n             * @namespace options\n             * @for Uploader\n             * @description 如果某个分片由于网络问题出错，允许自动重传多少次？\n             */\n            chunkRetry: 2,\n    \n            /**\n             * @property {Boolean} [threads=3]\n             * @namespace options\n             * @for Uploader\n             * @description 上传并发数。允许同时最大上传进程数。\n             */\n            threads: 3,\n    \n    \n            /**\n             * @property {Object} [formData={}]\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传请求的参数表，每次发送都会发送此对象中的参数。\n             */\n            formData: {}\n    \n            /**\n             * @property {Object} [fileVal='file']\n             * @namespace options\n             * @for Uploader\n             * @description 设置文件上传域的name。\n             */\n    \n            /**\n             * @property {Object} [method='POST']\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传方式，`POST`或者`GET`。\n             */\n    \n            /**\n             * @property {Object} [sendAsBinary=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否已二进制的流的方式发送文件，这样整个上传内容`php://input`都为文件内容，\n             * 其他参数在$_GET数组中。\n             */\n        });\n    \n        // 负责将文件切片。\n        function CuteFile( file, chunkSize ) {\n            var pending = [],\n                blob = file.source,\n                total = blob.size,\n                chunks = chunkSize ? Math.ceil( total / chunkSize ) : 1,\n                start = 0,\n                index = 0,\n                len, api;\n    \n            api = {\n                file: file,\n    \n                has: function() {\n                    return !!pending.length;\n                },\n    \n                shift: function() {\n                    return pending.shift();\n                },\n    \n                unshift: function( block ) {\n                    pending.unshift( block );\n                }\n            };\n    \n            while ( index < chunks ) {\n                len = Math.min( chunkSize, total - start );\n    \n                pending.push({\n                    file: file,\n                    start: start,\n                    end: chunkSize ? (start + len) : total,\n                    total: total,\n                    chunks: chunks,\n                    chunk: index++,\n                    cuted: api\n                });\n                start += len;\n            }\n    \n            file.blocks = pending.concat();\n            file.remaning = pending.length;\n    \n            return api;\n        }\n    \n        Uploader.register({\n            name: 'upload',\n    \n            init: function() {\n                var owner = this.owner,\n                    me = this;\n    \n                this.runing = false;\n                this.progress = false;\n    \n                owner\n                    .on( 'startUpload', function() {\n                        me.progress = true;\n                    })\n                    .on( 'uploadFinished', function() {\n                        me.progress = false;\n                    });\n    \n                // 记录当前正在传的数据，跟threads相关\n                this.pool = [];\n    \n                // 缓存分好片的文件。\n                this.stack = [];\n    \n                // 缓存即将上传的文件。\n                this.pending = [];\n    \n                // 跟踪还有多少分片在上传中但是没有完成上传。\n                this.remaning = 0;\n                this.__tick = Base.bindFn( this._tick, this );\n    \n                owner.on( 'uploadComplete', function( file ) {\n    \n                    // 把其他块取消了。\n                    file.blocks && $.each( file.blocks, function( _, v ) {\n                        v.transport && (v.transport.abort(), v.transport.destroy());\n                        delete v.transport;\n                    });\n    \n                    delete file.blocks;\n                    delete file.remaning;\n                });\n            },\n    \n            reset: function() {\n                this.request( 'stop-upload', true );\n                this.runing = false;\n                this.pool = [];\n                this.stack = [];\n                this.pending = [];\n                this.remaning = 0;\n                this._trigged = false;\n                this._promise = null;\n            },\n    \n            /**\n             * @event startUpload\n             * @description 当开始上传流程时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 开始上传。此方法可以从初始状态调用开始上传流程，也可以从暂停状态调用，继续上传流程。\n             *\n             * 可以指定开始某一个文件。\n             * @grammar upload() => undefined\n             * @grammar upload( file | fileId) => undefined\n             * @method upload\n             * @for  Uploader\n             */\n            startUpload: function(file) {\n                var me = this;\n    \n                // 移出invalid的文件\n                $.each( me.request( 'get-files', Status.INVALID ), function() {\n                    me.request( 'remove-file', this );\n                });\n    \n                // 如果指定了开始某个文件，则只开始指定文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if (file.getStatus() === Status.INTERRUPT) {\n                        $.each( me.pool, function( _, v ) {\n    \n                            // 之前暂停过。\n                            if (v.file !== file) {\n                                return;\n                            }\n    \n                            v.transport && v.transport.send();\n                        });\n    \n                        file.setStatus( Status.QUEUED );\n                    } else if (file.getStatus() === Status.PROGRESS) {\n                        return;\n                    } else {\n                        file.setStatus( Status.QUEUED );\n                    }\n                } else {\n                    $.each( me.request( 'get-files', [ Status.INITED ] ), function() {\n                        this.setStatus( Status.QUEUED );\n                    });\n                }\n    \n                if ( me.runing ) {\n                    return;\n                }\n    \n                me.runing = true;\n    \n                var files = [];\n    \n                // 如果有暂停的，则续传\n                $.each( me.pool, function( _, v ) {\n                    var file = v.file;\n    \n                    if ( file.getStatus() === Status.INTERRUPT ) {\n                        files.push(file);\n                        me._trigged = false;\n                        v.transport && v.transport.send();\n                    }\n                });\n    \n                var file;\n                while ( (file = files.shift()) ) {\n                    file.setStatus( Status.PROGRESS );\n                }\n    \n                file || $.each( me.request( 'get-files',\n                        Status.INTERRUPT ), function() {\n                    this.setStatus( Status.PROGRESS );\n                });\n    \n                me._trigged = false;\n                Base.nextTick( me.__tick );\n                me.owner.trigger('startUpload');\n            },\n    \n            /**\n             * @event stopUpload\n             * @description 当开始上传流程暂停时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 暂停上传。第一个参数为是否中断上传当前正在上传的文件。\n             *\n             * 如果第一个参数是文件，则只暂停指定文件。\n             * @grammar stop() => undefined\n             * @grammar stop( true ) => undefined\n             * @grammar stop( file ) => undefined\n             * @method stop\n             * @for  Uploader\n             */\n            stopUpload: function( file, interrupt ) {\n                var me = this;\n    \n                if (file === true) {\n                    interrupt = file;\n                    file = null;\n                }\n    \n                if ( me.runing === false ) {\n                    return;\n                }\n    \n                // 如果只是暂停某个文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if ( file.getStatus() !== Status.PROGRESS &&\n                            file.getStatus() !== Status.QUEUED ) {\n                        return;\n                    }\n    \n                    file.setStatus( Status.INTERRUPT );\n                    $.each( me.pool, function( _, v ) {\n    \n                        // 只 abort 指定的文件。\n                        if (v.file !== file) {\n                            return;\n                        }\n    \n                        v.transport && v.transport.abort();\n                        me._putback(v);\n                        me._popBlock(v);\n                    });\n    \n                    return Base.nextTick( me.__tick );\n                }\n    \n                me.runing = false;\n    \n                if (this._promise && this._promise.file) {\n                    this._promise.file.setStatus( Status.INTERRUPT );\n                }\n    \n                interrupt && $.each( me.pool, function( _, v ) {\n                    v.transport && v.transport.abort();\n                    v.file.setStatus( Status.INTERRUPT );\n                });\n    \n                me.owner.trigger('stopUpload');\n            },\n    \n            /**\n             * @method cancelFile\n             * @grammar cancelFile( file ) => undefined\n             * @grammar cancelFile( id ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 标记文件状态为已取消, 同时将中断文件传输。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.cancelFile( file );\n             * })\n             */\n            cancelFile: function( file ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                file.setStatus( Status.CANCELLED );\n                this.owner.trigger( 'fileDequeued', file );\n            },\n    \n            /**\n             * 判断`Uplaode`r是否正在上传中。\n             * @grammar isInProgress() => Boolean\n             * @method isInProgress\n             * @for  Uploader\n             */\n            isInProgress: function() {\n                return !!this.progress;\n            },\n    \n            _getStats: function() {\n                return this.request('get-stats');\n            },\n    \n            /**\n             * 掉过一个文件上传，直接标记指定文件为已上传状态。\n             * @grammar skipFile( file ) => undefined\n             * @method skipFile\n             * @for  Uploader\n             */\n            skipFile: function( file, status ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                file.setStatus( status || Status.COMPLETE );\n                file.skipped = true;\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                this.owner.trigger( 'uploadSkip', file );\n            },\n    \n            /**\n             * @event uploadFinished\n             * @description 当所有文件上传结束时触发。\n             * @for  Uploader\n             */\n            _tick: function() {\n                var me = this,\n                    opts = me.options,\n                    fn, val;\n    \n                // 上一个promise还没有结束，则等待完成后再执行。\n                if ( me._promise ) {\n                    return me._promise.always( me.__tick );\n                }\n    \n                // 还有位置，且还有文件要处理的话。\n                if ( me.pool.length < opts.threads && (val = me._nextBlock()) ) {\n                    me._trigged = false;\n    \n                    fn = function( val ) {\n                        me._promise = null;\n    \n                        // 有可能是reject过来的，所以要检测val的类型。\n                        val && val.file && me._startSend( val );\n                        Base.nextTick( me.__tick );\n                    };\n    \n                    me._promise = isPromise( val ) ? val.always( fn ) : fn( val );\n    \n                // 没有要上传的了，且没有正在传输的了。\n                } else if ( !me.remaning && !me._getStats().numOfQueue &&\n                    !me._getStats().numofInterrupt ) {\n                    me.runing = false;\n    \n                    me._trigged || Base.nextTick(function() {\n                        me.owner.trigger('uploadFinished');\n                    });\n                    me._trigged = true;\n                }\n            },\n    \n            _putback: function(block) {\n                var idx;\n    \n                block.cuted.unshift(block);\n                idx = this.stack.indexOf(block.cuted);\n    \n                if (!~idx) {\n                    this.stack.unshift(block.cuted);\n                }\n            },\n    \n            _getStack: function() {\n                var i = 0,\n                    act;\n    \n                while ( (act = this.stack[ i++ ]) ) {\n                    if ( act.has() && act.file.getStatus() === Status.PROGRESS ) {\n                        return act;\n                    } else if (!act.has() ||\n                            act.file.getStatus() !== Status.PROGRESS &&\n                            act.file.getStatus() !== Status.INTERRUPT ) {\n    \n                        // 把已经处理完了的，或者，状态为非 progress（上传中）、\n                        // interupt（暂停中） 的移除。\n                        this.stack.splice( --i, 1 );\n                    }\n                }\n    \n                return null;\n            },\n    \n            _nextBlock: function() {\n                var me = this,\n                    opts = me.options,\n                    act, next, done, preparing;\n    \n                // 如果当前文件还有没有需要传输的，则直接返回剩下的。\n                if ( (act = this._getStack()) ) {\n    \n                    // 是否提前准备下一个文件\n                    if ( opts.prepareNextFile && !me.pending.length ) {\n                        me._prepareNextFile();\n                    }\n    \n                    return act.shift();\n    \n                // 否则，如果正在运行，则准备下一个文件，并等待完成后返回下个分片。\n                } else if ( me.runing ) {\n    \n                    // 如果缓存中有，则直接在缓存中取，没有则去queue中取。\n                    if ( !me.pending.length && me._getStats().numOfQueue ) {\n                        me._prepareNextFile();\n                    }\n    \n                    next = me.pending.shift();\n                    done = function( file ) {\n                        if ( !file ) {\n                            return null;\n                        }\n    \n                        act = CuteFile( file, opts.chunked ? opts.chunkSize : 0 );\n                        me.stack.push(act);\n                        return act.shift();\n                    };\n    \n                    // 文件可能还在prepare中，也有可能已经完全准备好了。\n                    if ( isPromise( next) ) {\n                        preparing = next.file;\n                        next = next[ next.pipe ? 'pipe' : 'then' ]( done );\n                        next.file = preparing;\n                        return next;\n                    }\n    \n                    return done( next );\n                }\n            },\n    \n    \n            /**\n             * @event uploadStart\n             * @param {File} file File对象\n             * @description 某个文件开始上传前触发，一个文件只会触发一次。\n             * @for  Uploader\n             */\n            _prepareNextFile: function() {\n                var me = this,\n                    file = me.request('fetch-file'),\n                    pending = me.pending,\n                    promise;\n    \n                if ( file ) {\n                    promise = me.request( 'before-send-file', file, function() {\n    \n                        // 有可能文件被skip掉了。文件被skip掉后，状态坑定不是Queued.\n                        if ( file.getStatus() === Status.PROGRESS ||\n                            file.getStatus() === Status.INTERRUPT ) {\n                            return file;\n                        }\n    \n                        return me._finishFile( file );\n                    });\n    \n                    me.owner.trigger( 'uploadStart', file );\n                    file.setStatus( Status.PROGRESS );\n    \n                    promise.file = file;\n    \n                    // 如果还在pending中，则替换成文件本身。\n                    promise.done(function() {\n                        var idx = $.inArray( promise, pending );\n    \n                        ~idx && pending.splice( idx, 1, file );\n                    });\n    \n                    // befeore-send-file的钩子就有错误发生。\n                    promise.fail(function( reason ) {\n                        file.setStatus( Status.ERROR, reason );\n                        me.owner.trigger( 'uploadError', file, reason );\n                        me.owner.trigger( 'uploadComplete', file );\n                    });\n    \n                    pending.push( promise );\n                }\n            },\n    \n            // 让出位置了，可以让其他分片开始上传\n            _popBlock: function( block ) {\n                var idx = $.inArray( block, this.pool );\n    \n                this.pool.splice( idx, 1 );\n                block.file.remaning--;\n                this.remaning--;\n            },\n    \n            // 开始上传，可以被掉过。如果promise被reject了，则表示跳过此分片。\n            _startSend: function( block ) {\n                var me = this,\n                    file = block.file,\n                    promise;\n    \n                // 有可能在 before-send-file 的 promise 期间改变了文件状态。\n                // 如：暂停，取消\n                // 我们不能中断 promise, 但是可以在 promise 完后，不做上传操作。\n                if ( file.getStatus() !== Status.PROGRESS ) {\n    \n                    // 如果是中断，则还需要放回去。\n                    if (file.getStatus() === Status.INTERRUPT) {\n                        me._putback(block);\n                    }\n    \n                    return;\n                }\n    \n                me.pool.push( block );\n                me.remaning++;\n    \n                // 如果没有分片，则直接使用原始的。\n                // 不会丢失content-type信息。\n                block.blob = block.chunks === 1 ? file.source :\n                        file.source.slice( block.start, block.end );\n    \n                // hook, 每个分片发送之前可能要做些异步的事情。\n                promise = me.request( 'before-send', block, function() {\n    \n                    // 有可能文件已经上传出错了，所以不需要再传输了。\n                    if ( file.getStatus() === Status.PROGRESS ) {\n                        me._doSend( block );\n                    } else {\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n    \n                // 如果为fail了，则跳过此分片。\n                promise.fail(function() {\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file ).always(function() {\n                            block.percentage = 1;\n                            me._popBlock( block );\n                            me.owner.trigger( 'uploadComplete', file );\n                            Base.nextTick( me.__tick );\n                        });\n                    } else {\n                        block.percentage = 1;\n                        me.updateFileProgress( file );\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n            },\n    \n    \n            /**\n             * @event uploadBeforeSend\n             * @param {Object} object\n             * @param {Object} data 默认的上传参数，可以扩展此对象来控制上传参数。\n             * @param {Object} headers 可以扩展此对象来控制上传头部。\n             * @description 当某个文件的分块在发送前触发，主要用来询问是否要添加附带参数，大文件在开起分片上传的前提下此事件可能会触发多次。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadAccept\n             * @param {Object} object\n             * @param {Object} ret 服务端的返回数据，json格式，如果服务端不是json格式，从ret._raw中取数据，自行解析。\n             * @description 当某个文件上传到服务端响应后，会派送此事件来询问服务端响应是否有效。如果此事件handler返回值为`false`, 则此文件将派送`server`类型的`uploadError`事件。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadProgress\n             * @param {File} file File对象\n             * @param {Number} percentage 上传进度\n             * @description 上传过程中触发，携带上传进度。\n             * @for  Uploader\n             */\n    \n    \n            /**\n             * @event uploadError\n             * @param {File} file File对象\n             * @param {String} reason 出错的code\n             * @description 当文件上传出错时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadSuccess\n             * @param {File} file File对象\n             * @param {Object} response 服务端返回的数据\n             * @description 当文件上传成功时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadComplete\n             * @param {File} [file] File对象\n             * @description 不管成功或者失败，文件上传完成时触发。\n             * @for  Uploader\n             */\n    \n            // 做上传操作。\n            _doSend: function( block ) {\n                var me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    file = block.file,\n                    tr = new Transport( opts ),\n                    data = $.extend({}, opts.formData ),\n                    headers = $.extend({}, opts.headers ),\n                    requestAccept, ret;\n    \n                block.transport = tr;\n    \n                tr.on( 'destroy', function() {\n                    delete block.transport;\n                    me._popBlock( block );\n                    Base.nextTick( me.__tick );\n                });\n    \n                // 广播上传进度。以文件为单位。\n                tr.on( 'progress', function( percentage ) {\n                    block.percentage = percentage;\n                    me.updateFileProgress( file );\n                });\n    \n                // 用来询问，是否返回的结果是有错误的。\n                requestAccept = function( reject ) {\n                    var fn;\n    \n                    ret = tr.getResponseAsJson() || {};\n                    ret._raw = tr.getResponse();\n                    fn = function( value ) {\n                        reject = value;\n                    };\n    \n                    // 服务端响应了，不代表成功了，询问是否响应正确。\n                    if ( !owner.trigger( 'uploadAccept', block, ret, fn ) ) {\n                        reject = reject || 'server';\n                    }\n    \n                    return reject;\n                };\n    \n                // 尝试重试，然后广播文件上传出错。\n                tr.on( 'error', function( type, flag ) {\n                    block.retried = block.retried || 0;\n    \n                    // 自动重试\n                    if ( block.chunks > 1 && ~'http,abort'.indexOf( type ) &&\n                            block.retried < opts.chunkRetry ) {\n    \n                        block.retried++;\n                        tr.send();\n    \n                    } else {\n    \n                        // http status 500 ~ 600\n                        if ( !flag && type === 'server' ) {\n                            type = requestAccept( type );\n                        }\n    \n                        file.setStatus( Status.ERROR, type );\n                        owner.trigger( 'uploadError', file, type );\n                        owner.trigger( 'uploadComplete', file );\n                    }\n                });\n    \n                // 上传成功\n                tr.on( 'load', function() {\n                    var reason;\n    \n                    // 如果非预期，转向上传出错。\n                    if ( (reason = requestAccept()) ) {\n                        tr.trigger( 'error', reason, true );\n                        return;\n                    }\n    \n                    // 全部上传完成。\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file, ret );\n                    } else {\n                        tr.destroy();\n                    }\n                });\n    \n                // 配置默认的上传字段。\n                data = $.extend( data, {\n                    id: file.id,\n                    name: file.name,\n                    type: file.type,\n                    lastModifiedDate: file.lastModifiedDate,\n                    size: file.size\n                });\n    \n                block.chunks > 1 && $.extend( data, {\n                    chunks: block.chunks,\n                    chunk: block.chunk\n                });\n    \n                // 在发送之间可以添加字段什么的。。。\n                // 如果默认的字段不够使用，可以通过监听此事件来扩展\n                owner.trigger( 'uploadBeforeSend', block, data, headers );\n    \n                // 开始发送。\n                tr.appendBlob( opts.fileVal, block.blob, file.name );\n                tr.append( data );\n                tr.setRequestHeader( headers );\n                tr.send();\n            },\n    \n            // 完成上传。\n            _finishFile: function( file, ret, hds ) {\n                var owner = this.owner;\n    \n                return owner\n                        .request( 'after-send-file', arguments, function() {\n                            file.setStatus( Status.COMPLETE );\n                            owner.trigger( 'uploadSuccess', file, ret, hds );\n                        })\n                        .fail(function( reason ) {\n    \n                            // 如果外部已经标记为invalid什么的，不再改状态。\n                            if ( file.getStatus() === Status.PROGRESS ) {\n                                file.setStatus( Status.ERROR, reason );\n                            }\n    \n                            owner.trigger( 'uploadError', file, reason );\n                        })\n                        .always(function() {\n                            owner.trigger( 'uploadComplete', file );\n                        });\n            },\n    \n            updateFileProgress: function(file) {\n                var totalPercent = 0,\n                    uploaded = 0;\n    \n                if (!file.blocks) {\n                    return;\n                }\n    \n                $.each( file.blocks, function( _, v ) {\n                    uploaded += (v.percentage || 0) * (v.end - v.start);\n                });\n    \n                totalPercent = uploaded / file.size;\n                this.owner.trigger( 'uploadProgress', file, totalPercent || 0 );\n            }\n    \n        });\n    });\n    /**\n     * @fileOverview 各种验证，包括文件总大小是否超出、单文件是否超出和文件是否重复。\n     */\n    \n    define('widgets/validator',[\n        'base',\n        'uploader',\n        'file',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile ) {\n    \n        var $ = Base.$,\n            validators = {},\n            api;\n    \n        /**\n         * @event error\n         * @param {String} type 错误类型。\n         * @description 当validate不通过时，会以派送错误事件的形式通知调用者。通过`upload.on('error', handler)`可以捕获到此类错误，目前有以下错误会在特定的情况下派送错来。\n         *\n         * * `Q_EXCEED_NUM_LIMIT` 在设置了`fileNumLimit`且尝试给`uploader`添加的文件数量超出这个值时派送。\n         * * `Q_EXCEED_SIZE_LIMIT` 在设置了`Q_EXCEED_SIZE_LIMIT`且尝试给`uploader`添加的文件总大小超出这个值时派送。\n         * * `Q_TYPE_DENIED` 当文件类型不满足时触发。。\n         * @for  Uploader\n         */\n    \n        // 暴露给外面的api\n        api = {\n    \n            // 添加验证器\n            addValidator: function( type, cb ) {\n                validators[ type ] = cb;\n            },\n    \n            // 移除验证器\n            removeValidator: function( type ) {\n                delete validators[ type ];\n            }\n        };\n    \n        // 在Uploader初始化的时候启动Validators的初始化\n        Uploader.register({\n            name: 'validator',\n    \n            init: function() {\n                var me = this;\n                Base.nextTick(function() {\n                    $.each( validators, function() {\n                        this.call( me.owner );\n                    });\n                });\n            }\n        });\n    \n        /**\n         * @property {int} [fileNumLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总数量, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileNumLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                count = 0,\n                max = parseInt( opts.fileNumLimit, 10 ),\n                flag = true;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n    \n                if ( count >= max && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_NUM_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return count >= max ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function() {\n                count++;\n            });\n    \n            uploader.on( 'fileDequeued', function() {\n                count--;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n    \n        /**\n         * @property {int} [fileSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                count = 0,\n                max = parseInt( opts.fileSizeLimit, 10 ),\n                flag = true;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var invalid = count + file.size > max;\n    \n                if ( invalid && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_SIZE_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return invalid ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                count += file.size;\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                count -= file.size;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n        /**\n         * @property {int} [fileSingleSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证单个文件大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSingleSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                max = opts.fileSingleSizeLimit;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n    \n                if ( file.size > max ) {\n                    file.setStatus( WUFile.Status.INVALID, 'exceed_size' );\n                    this.trigger( 'error', 'F_EXCEED_SIZE', max, file );\n                    return false;\n                }\n    \n            });\n    \n        });\n    \n        /**\n         * @property {Boolean} [duplicate=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 去重， 根据文件名字、文件大小和最后修改时间来生成hash Key.\n         */\n        api.addValidator( 'duplicate', function() {\n            var uploader = this,\n                opts = uploader.options,\n                mapping = {};\n    \n            if ( opts.duplicate ) {\n                return;\n            }\n    \n            function hashString( str ) {\n                var hash = 0,\n                    i = 0,\n                    len = str.length,\n                    _char;\n    \n                for ( ; i < len; i++ ) {\n                    _char = str.charCodeAt( i );\n                    hash = _char + (hash << 6) + (hash << 16) - hash;\n                }\n    \n                return hash;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var hash = file.__hash || (file.__hash = hashString( file.name +\n                        file.size + file.lastModifiedDate ));\n    \n                // 已经重复了\n                if ( mapping[ hash ] ) {\n                    this.trigger( 'error', 'F_DUPLICATE', file );\n                    return false;\n                }\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (mapping[ hash ] = true);\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (delete mapping[ hash ]);\n            });\n    \n            uploader.on( 'reset', function() {\n                mapping = {};\n            });\n        });\n    \n        return api;\n    });\n    \n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/compbase',[],function() {\n    \n        function CompBase( owner, runtime ) {\n    \n            this.owner = owner;\n            this.options = owner.options;\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.getRuid = function() {\n                return runtime.uid;\n            };\n    \n            this.trigger = function() {\n                return owner.trigger.apply( owner, arguments );\n            };\n        }\n    \n        return CompBase;\n    });\n    /**\n     * @fileOverview Html5Runtime\n     */\n    define('runtime/html5/runtime',[\n        'base',\n        'runtime/runtime',\n        'runtime/compbase'\n    ], function( Base, Runtime, CompBase ) {\n    \n        var type = 'html5',\n            components = {};\n    \n        function Html5Runtime() {\n            var pool = {},\n                me = this,\n                destroy = this.destroy;\n    \n            Runtime.apply( me, arguments );\n            me.type = type;\n    \n    \n            // 这个方法的调用者，实际上是RuntimeClient\n            me.exec = function( comp, fn/*, args...*/) {\n                var client = this,\n                    uid = client.uid,\n                    args = Base.slice( arguments, 2 ),\n                    instance;\n    \n                if ( components[ comp ] ) {\n                    instance = pool[ uid ] = pool[ uid ] ||\n                            new components[ comp ]( client, me );\n    \n                    if ( instance[ fn ] ) {\n                        return instance[ fn ].apply( instance, args );\n                    }\n                }\n            };\n    \n            me.destroy = function() {\n                // @todo 删除池子中的所有实例\n                return destroy && destroy.apply( this, arguments );\n            };\n        }\n    \n        Base.inherits( Runtime, {\n            constructor: Html5Runtime,\n    \n            // 不需要连接其他程序，直接执行callback\n            init: function() {\n                var me = this;\n                setTimeout(function() {\n                    me.trigger('ready');\n                }, 1 );\n            }\n    \n        });\n    \n        // 注册Components\n        Html5Runtime.register = function( name, component ) {\n            var klass = components[ name ] = Base.inherits( CompBase, component );\n            return klass;\n        };\n    \n        // 注册html5运行时。\n        // 只有在支持的前提下注册。\n        if ( window.Blob && window.FileReader && window.DataView ) {\n            Runtime.addRuntime( type, Html5Runtime );\n        }\n    \n        return Html5Runtime;\n    });\n    /**\n     * @fileOverview Blob Html实现\n     */\n    define('runtime/html5/blob',[\n        'runtime/html5/runtime',\n        'lib/blob'\n    ], function( Html5Runtime, Blob ) {\n    \n        return Html5Runtime.register( 'Blob', {\n            slice: function( start, end ) {\n                var blob = this.owner.source,\n                    slice = blob.slice || blob.webkitSlice || blob.mozSlice;\n    \n                blob = slice.call( blob, start, end );\n    \n                return new Blob( this.getRuid(), blob );\n            }\n        });\n    });\n    /**\n     * @fileOverview FilePaste\n     */\n    define('runtime/html5/dnd',[\n        'base',\n        'runtime/html5/runtime',\n        'lib/file'\n    ], function( Base, Html5Runtime, File ) {\n    \n        var $ = Base.$,\n            prefix = 'webuploader-dnd-';\n    \n        return Html5Runtime.register( 'DragAndDrop', {\n            init: function() {\n                var elem = this.elem = this.options.container;\n    \n                this.dragEnterHandler = Base.bindFn( this._dragEnterHandler, this );\n                this.dragOverHandler = Base.bindFn( this._dragOverHandler, this );\n                this.dragLeaveHandler = Base.bindFn( this._dragLeaveHandler, this );\n                this.dropHandler = Base.bindFn( this._dropHandler, this );\n                this.dndOver = false;\n    \n                elem.on( 'dragenter', this.dragEnterHandler );\n                elem.on( 'dragover', this.dragOverHandler );\n                elem.on( 'dragleave', this.dragLeaveHandler );\n                elem.on( 'drop', this.dropHandler );\n    \n                if ( this.options.disableGlobalDnd ) {\n                    $( document ).on( 'dragover', this.dragOverHandler );\n                    $( document ).on( 'drop', this.dropHandler );\n                }\n            },\n    \n            _dragEnterHandler: function( e ) {\n                var me = this,\n                    denied = me._denied || false,\n                    items;\n    \n                e = e.originalEvent || e;\n    \n                if ( !me.dndOver ) {\n                    me.dndOver = true;\n    \n                    // 注意只有 chrome 支持。\n                    items = e.dataTransfer.items;\n    \n                    if ( items && items.length ) {\n                        me._denied = denied = !me.trigger( 'accept', items );\n                    }\n    \n                    me.elem.addClass( prefix + 'over' );\n                    me.elem[ denied ? 'addClass' :\n                            'removeClass' ]( prefix + 'denied' );\n                }\n    \n                e.dataTransfer.dropEffect = denied ? 'none' : 'copy';\n    \n                return false;\n            },\n    \n            _dragOverHandler: function( e ) {\n                // 只处理框内的。\n                var parentElem = this.elem.parent().get( 0 );\n                if ( parentElem && !$.contains( parentElem, e.currentTarget ) ) {\n                    return false;\n                }\n    \n                clearTimeout( this._leaveTimer );\n                this._dragEnterHandler.call( this, e );\n    \n                return false;\n            },\n    \n            _dragLeaveHandler: function() {\n                var me = this,\n                    handler;\n    \n                handler = function() {\n                    me.dndOver = false;\n                    me.elem.removeClass( prefix + 'over ' + prefix + 'denied' );\n                };\n    \n                clearTimeout( me._leaveTimer );\n                me._leaveTimer = setTimeout( handler, 100 );\n                return false;\n            },\n    \n            _dropHandler: function( e ) {\n                var me = this,\n                    ruid = me.getRuid(),\n                    parentElem = me.elem.parent().get( 0 ),\n                    dataTransfer, data;\n    \n                // 只处理框内的。\n                if ( parentElem && !$.contains( parentElem, e.currentTarget ) ) {\n                    return false;\n                }\n    \n                e = e.originalEvent || e;\n                dataTransfer = e.dataTransfer;\n    \n                // 如果是页面内拖拽，还不能处理，不阻止事件。\n                // 此处 ie11 下会报参数错误，\n                try {\n                    data = dataTransfer.getData('text/html');\n                } catch( err ) {\n                }\n    \n                if ( data ) {\n                    return;\n                }\n    \n                me._getTansferFiles( dataTransfer, function( results ) {\n                    me.trigger( 'drop', $.map( results, function( file ) {\n                        return new File( ruid, file );\n                    }) );\n                });\n    \n                me.dndOver = false;\n                me.elem.removeClass( prefix + 'over' );\n                return false;\n            },\n    \n            // 如果传入 callback 则去查看文件夹，否则只管当前文件夹。\n            _getTansferFiles: function( dataTransfer, callback ) {\n                var results  = [],\n                    promises = [],\n                    items, files, file, item, i, len, canAccessFolder;\n    \n                items = dataTransfer.items;\n                files = dataTransfer.files;\n    \n                canAccessFolder = !!(items && items[ 0 ].webkitGetAsEntry);\n    \n                for ( i = 0, len = files.length; i < len; i++ ) {\n                    file = files[ i ];\n                    item = items && items[ i ];\n    \n                    if ( canAccessFolder && item.webkitGetAsEntry().isDirectory ) {\n    \n                        promises.push( this._traverseDirectoryTree(\n                                item.webkitGetAsEntry(), results ) );\n                    } else {\n                        results.push( file );\n                    }\n                }\n    \n                Base.when.apply( Base, promises ).done(function() {\n    \n                    if ( !results.length ) {\n                        return;\n                    }\n    \n                    callback( results );\n                });\n            },\n    \n            _traverseDirectoryTree: function( entry, results ) {\n                var deferred = Base.Deferred(),\n                    me = this;\n    \n                if ( entry.isFile ) {\n                    entry.file(function( file ) {\n                        results.push( file );\n                        deferred.resolve();\n                    });\n                } else if ( entry.isDirectory ) {\n                    entry.createReader().readEntries(function( entries ) {\n                        var len = entries.length,\n                            promises = [],\n                            arr = [],    // 为了保证顺序。\n                            i;\n    \n                        for ( i = 0; i < len; i++ ) {\n                            promises.push( me._traverseDirectoryTree(\n                                    entries[ i ], arr ) );\n                        }\n    \n                        Base.when.apply( Base, promises ).then(function() {\n                            results.push.apply( results, arr );\n                            deferred.resolve();\n                        }, deferred.reject );\n                    });\n                }\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                var elem = this.elem;\n    \n                // 还没 init 就调用 destroy\n                if (!elem) {\n                    return;\n                }\n                \n                elem.off( 'dragenter', this.dragEnterHandler );\n                elem.off( 'dragover', this.dragOverHandler );\n                elem.off( 'dragleave', this.dragLeaveHandler );\n                elem.off( 'drop', this.dropHandler );\n    \n                if ( this.options.disableGlobalDnd ) {\n                    $( document ).off( 'dragover', this.dragOverHandler );\n                    $( document ).off( 'drop', this.dropHandler );\n                }\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview FilePaste\n     */\n    define('runtime/html5/filepaste',[\n        'base',\n        'runtime/html5/runtime',\n        'lib/file'\n    ], function( Base, Html5Runtime, File ) {\n    \n        return Html5Runtime.register( 'FilePaste', {\n            init: function() {\n                var opts = this.options,\n                    elem = this.elem = opts.container,\n                    accept = '.*',\n                    arr, i, len, item;\n    \n                // accetp的mimeTypes中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].mimeTypes;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = arr.join(',');\n                        accept = accept.replace( /,/g, '|' ).replace( /\\*/g, '.*' );\n                    }\n                }\n                this.accept = accept = new RegExp( accept, 'i' );\n                this.hander = Base.bindFn( this._pasteHander, this );\n                elem.on( 'paste', this.hander );\n            },\n    \n            _pasteHander: function( e ) {\n                var allowed = [],\n                    ruid = this.getRuid(),\n                    items, item, blob, i, len;\n    \n                e = e.originalEvent || e;\n                items = e.clipboardData.items;\n    \n                for ( i = 0, len = items.length; i < len; i++ ) {\n                    item = items[ i ];\n    \n                    if ( item.kind !== 'file' || !(blob = item.getAsFile()) ) {\n                        continue;\n                    }\n    \n                    allowed.push( new File( ruid, blob ) );\n                }\n    \n                if ( allowed.length ) {\n                    // 不阻止非文件粘贴（文字粘贴）的事件冒泡\n                    e.preventDefault();\n                    e.stopPropagation();\n                    this.trigger( 'paste', allowed );\n                }\n            },\n    \n            destroy: function() {\n                this.elem.off( 'paste', this.hander );\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview FilePicker\n     */\n    define('runtime/html5/filepicker',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var $ = Base.$;\n    \n        return Html5Runtime.register( 'FilePicker', {\n            init: function() {\n                var container = this.getRuntime().getContainer(),\n                    me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    label = this.label = $( document.createElement('label') ),\n                    input =  this.input = $( document.createElement('input') ),\n                    arr, i, len, mouseHandler;\n    \n                input.attr( 'type', 'file' );\n                input.attr( 'name', opts.name );\n                input.addClass('webuploader-element-invisible');\n    \n                label.on( 'click', function() {\n                    input.trigger('click');\n                });\n    \n                label.css({\n                    opacity: 0,\n                    width: '100%',\n                    height: '100%',\n                    display: 'block',\n                    cursor: 'pointer',\n                    background: '#ffffff'\n                });\n    \n                if ( opts.multiple ) {\n                    input.attr( 'multiple', 'multiple' );\n                }\n    \n                // @todo Firefox不支持单独指定后缀\n                if ( opts.accept && opts.accept.length > 0 ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        arr.push( opts.accept[ i ].mimeTypes );\n                    }\n    \n                    input.attr( 'accept', arr.join(',') );\n                }\n    \n                container.append( input );\n                container.append( label );\n    \n                mouseHandler = function( e ) {\n                    owner.trigger( e.type );\n                };\n    \n                input.on( 'change', function( e ) {\n                    var fn = arguments.callee,\n                        clone;\n    \n                    me.files = e.target.files;\n    \n                    // reset input\n                    clone = this.cloneNode( true );\n                    clone.value = null;\n                    this.parentNode.replaceChild( clone, this );\n    \n                    input.off();\n                    input = $( clone ).on( 'change', fn )\n                            .on( 'mouseenter mouseleave', mouseHandler );\n    \n                    owner.trigger('change');\n                });\n    \n                label.on( 'mouseenter mouseleave', mouseHandler );\n    \n            },\n    \n    \n            getFiles: function() {\n                return this.files;\n            },\n    \n            destroy: function() {\n                this.input.off();\n                this.label.off();\n            }\n        });\n    });\n    /**\n     * @fileOverview Transport\n     * @todo 支持chunked传输，优势：\n     * 可以将大文件分成小块，挨个传输，可以提高大文件成功率，当失败的时候，也只需要重传那小部分，\n     * 而不需要重头再传一次。另外断点续传也需要用chunked方式。\n     */\n    define('runtime/html5/transport',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var noop = Base.noop,\n            $ = Base.$;\n    \n        return Html5Runtime.register( 'Transport', {\n            init: function() {\n                this._status = 0;\n                this._response = null;\n            },\n    \n            send: function() {\n                var owner = this.owner,\n                    opts = this.options,\n                    xhr = this._initAjax(),\n                    blob = owner._blob,\n                    server = opts.server,\n                    formData, binary, fr;\n    \n                if ( opts.sendAsBinary ) {\n                    server += (/\\?/.test( server ) ? '&' : '?') +\n                            $.param( owner._formData );\n    \n                    binary = blob.getSource();\n                } else {\n                    formData = new FormData();\n                    $.each( owner._formData, function( k, v ) {\n                        formData.append( k, v );\n                    });\n    \n                    formData.append( opts.fileVal, blob.getSource(),\n                            opts.filename || owner._formData.name || '' );\n                }\n    \n                if ( opts.withCredentials && 'withCredentials' in xhr ) {\n                    xhr.open( opts.method, server, true );\n                    xhr.withCredentials = true;\n                } else {\n                    xhr.open( opts.method, server );\n                }\n    \n                this._setRequestHeader( xhr, opts.headers );\n    \n                if ( binary ) {\n                    // 强制设置成 content-type 为文件流。\n                    xhr.overrideMimeType &&\n                            xhr.overrideMimeType('application/octet-stream');\n    \n                    // android直接发送blob会导致服务端接收到的是空文件。\n                    // bug详情。\n                    // https://code.google.com/p/android/issues/detail?id=39882\n                    // 所以先用fileReader读取出来再通过arraybuffer的方式发送。\n                    if ( Base.os.android ) {\n                        fr = new FileReader();\n    \n                        fr.onload = function() {\n                            xhr.send( this.result );\n                            fr = fr.onload = null;\n                        };\n    \n                        fr.readAsArrayBuffer( binary );\n                    } else {\n                        xhr.send( binary );\n                    }\n                } else {\n                    xhr.send( formData );\n                }\n            },\n    \n            getResponse: function() {\n                return this._response;\n            },\n    \n            getResponseAsJson: function() {\n                return this._parseJson( this._response );\n            },\n    \n            getStatus: function() {\n                return this._status;\n            },\n    \n            abort: function() {\n                var xhr = this._xhr;\n    \n                if ( xhr ) {\n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    xhr.abort();\n    \n                    this._xhr = xhr = null;\n                }\n            },\n    \n            destroy: function() {\n                this.abort();\n            },\n    \n            _initAjax: function() {\n                var me = this,\n                    xhr = new XMLHttpRequest(),\n                    opts = this.options;\n    \n                if ( opts.withCredentials && !('withCredentials' in xhr) &&\n                        typeof XDomainRequest !== 'undefined' ) {\n                    xhr = new XDomainRequest();\n                }\n    \n                xhr.upload.onprogress = function( e ) {\n                    var percentage = 0;\n    \n                    if ( e.lengthComputable ) {\n                        percentage = e.loaded / e.total;\n                    }\n    \n                    return me.trigger( 'progress', percentage );\n                };\n    \n                xhr.onreadystatechange = function() {\n    \n                    if ( xhr.readyState !== 4 ) {\n                        return;\n                    }\n    \n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    me._xhr = null;\n                    me._status = xhr.status;\n    \n                    if ( xhr.status >= 200 && xhr.status < 300 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger('load');\n                    } else if ( xhr.status >= 500 && xhr.status < 600 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger( 'error', 'server' );\n                    }\n    \n    \n                    return me.trigger( 'error', me._status ? 'http' : 'abort' );\n                };\n    \n                me._xhr = xhr;\n                return xhr;\n            },\n    \n            _setRequestHeader: function( xhr, headers ) {\n                $.each( headers, function( key, val ) {\n                    xhr.setRequestHeader( key, val );\n                });\n            },\n    \n            _parseJson: function( str ) {\n                var json;\n    \n                try {\n                    json = JSON.parse( str );\n                } catch ( ex ) {\n                    json = {};\n                }\n    \n                return json;\n            }\n        });\n    });\n    /**\n     * @fileOverview FlashRuntime\n     */\n    define('runtime/flash/runtime',[\n        'base',\n        'runtime/runtime',\n        'runtime/compbase'\n    ], function( Base, Runtime, CompBase ) {\n    \n        var $ = Base.$,\n            type = 'flash',\n            components = {};\n    \n    \n        function getFlashVersion() {\n            var version;\n    \n            try {\n                version = navigator.plugins[ 'Shockwave Flash' ];\n                version = version.description;\n            } catch ( ex ) {\n                try {\n                    version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash')\n                            .GetVariable('$version');\n                } catch ( ex2 ) {\n                    version = '0.0';\n                }\n            }\n            version = version.match( /\\d+/g );\n            return parseFloat( version[ 0 ] + '.' + version[ 1 ], 10 );\n        }\n    \n        function FlashRuntime() {\n            var pool = {},\n                clients = {},\n                destroy = this.destroy,\n                me = this,\n                jsreciver = Base.guid('webuploader_');\n    \n            Runtime.apply( me, arguments );\n            me.type = type;\n    \n    \n            // 这个方法的调用者，实际上是RuntimeClient\n            me.exec = function( comp, fn/*, args...*/ ) {\n                var client = this,\n                    uid = client.uid,\n                    args = Base.slice( arguments, 2 ),\n                    instance;\n    \n                clients[ uid ] = client;\n    \n                if ( components[ comp ] ) {\n                    if ( !pool[ uid ] ) {\n                        pool[ uid ] = new components[ comp ]( client, me );\n                    }\n    \n                    instance = pool[ uid ];\n    \n                    if ( instance[ fn ] ) {\n                        return instance[ fn ].apply( instance, args );\n                    }\n                }\n    \n                return me.flashExec.apply( client, arguments );\n            };\n    \n            function handler( evt, obj ) {\n                var type = evt.type || evt,\n                    parts, uid;\n    \n                parts = type.split('::');\n                uid = parts[ 0 ];\n                type = parts[ 1 ];\n    \n                // console.log.apply( console, arguments );\n    \n                if ( type === 'Ready' && uid === me.uid ) {\n                    me.trigger('ready');\n                } else if ( clients[ uid ] ) {\n                    clients[ uid ].trigger( type.toLowerCase(), evt, obj );\n                }\n    \n                // Base.log( evt, obj );\n            }\n    \n            // flash的接受器。\n            window[ jsreciver ] = function() {\n                var args = arguments;\n    \n                // 为了能捕获得到。\n                setTimeout(function() {\n                    handler.apply( null, args );\n                }, 1 );\n            };\n    \n            this.jsreciver = jsreciver;\n    \n            this.destroy = function() {\n                // @todo 删除池子中的所有实例\n                return destroy && destroy.apply( this, arguments );\n            };\n    \n            this.flashExec = function( comp, fn ) {\n                var flash = me.getFlash(),\n                    args = Base.slice( arguments, 2 );\n    \n                return flash.exec( this.uid, comp, fn, args );\n            };\n    \n            // @todo\n        }\n    \n        Base.inherits( Runtime, {\n            constructor: FlashRuntime,\n    \n            init: function() {\n                var container = this.getContainer(),\n                    opts = this.options,\n                    html;\n    \n                // if not the minimal height, shims are not initialized\n                // in older browsers (e.g FF3.6, IE6,7,8, Safari 4.0,5.0, etc)\n                container.css({\n                    position: 'absolute',\n                    top: '-8px',\n                    left: '-8px',\n                    width: '9px',\n                    height: '9px',\n                    overflow: 'hidden'\n                });\n    \n                // insert flash object\n                html = '<object id=\"' + this.uid + '\" type=\"application/' +\n                        'x-shockwave-flash\" data=\"' +  opts.swf + '\" ';\n    \n                if ( Base.browser.ie ) {\n                    html += 'classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" ';\n                }\n    \n                html += 'width=\"100%\" height=\"100%\" style=\"outline:0\">'  +\n                    '<param name=\"movie\" value=\"' + opts.swf + '\" />' +\n                    '<param name=\"flashvars\" value=\"uid=' + this.uid +\n                    '&jsreciver=' + this.jsreciver + '\" />' +\n                    '<param name=\"wmode\" value=\"transparent\" />' +\n                    '<param name=\"allowscriptaccess\" value=\"always\" />' +\n                '</object>';\n    \n                container.html( html );\n            },\n    \n            getFlash: function() {\n                if ( this._flash ) {\n                    return this._flash;\n                }\n    \n                this._flash = $( '#' + this.uid ).get( 0 );\n                return this._flash;\n            }\n    \n        });\n    \n        FlashRuntime.register = function( name, component ) {\n            component = components[ name ] = Base.inherits( CompBase, $.extend({\n    \n                // @todo fix this later\n                flashExec: function() {\n                    var owner = this.owner,\n                        runtime = this.getRuntime();\n    \n                    return runtime.flashExec.apply( owner, arguments );\n                }\n            }, component ) );\n    \n            return component;\n        };\n    \n        if ( getFlashVersion() >= 11.4 ) {\n            Runtime.addRuntime( type, FlashRuntime );\n        }\n    \n        return FlashRuntime;\n    });\n    /**\n     * @fileOverview FilePicker\n     */\n    define('runtime/flash/filepicker',[\n        'base',\n        'runtime/flash/runtime'\n    ], function( Base, FlashRuntime ) {\n        var $ = Base.$;\n    \n        return FlashRuntime.register( 'FilePicker', {\n            init: function( opts ) {\n                var copy = $.extend({}, opts ),\n                    len, i;\n    \n                // 修复Flash再没有设置title的情况下无法弹出flash文件选择框的bug.\n                len = copy.accept && copy.accept.length;\n                for (  i = 0; i < len; i++ ) {\n                    if ( !copy.accept[ i ].title ) {\n                        copy.accept[ i ].title = 'Files';\n                    }\n                }\n    \n                delete copy.button;\n                delete copy.id;\n                delete copy.container;\n    \n                this.flashExec( 'FilePicker', 'init', copy );\n            },\n    \n            destroy: function() {\n                this.flashExec( 'FilePicker', 'destroy' );\n            }\n        });\n    });\n    /**\n     * @fileOverview  Transport flash实现\n     */\n    define('runtime/flash/transport',[\n        'base',\n        'runtime/flash/runtime',\n        'runtime/client'\n    ], function( Base, FlashRuntime, RuntimeClient ) {\n        var $ = Base.$;\n    \n        return FlashRuntime.register( 'Transport', {\n            init: function() {\n                this._status = 0;\n                this._response = null;\n                this._responseJson = null;\n            },\n    \n            send: function() {\n                var owner = this.owner,\n                    opts = this.options,\n                    xhr = this._initAjax(),\n                    blob = owner._blob,\n                    server = opts.server,\n                    binary;\n    \n                xhr.connectRuntime( blob.ruid );\n    \n                if ( opts.sendAsBinary ) {\n                    server += (/\\?/.test( server ) ? '&' : '?') +\n                            $.param( owner._formData );\n    \n                    binary = blob.uid;\n                } else {\n                    $.each( owner._formData, function( k, v ) {\n                        xhr.exec( 'append', k, v );\n                    });\n    \n                    xhr.exec( 'appendBlob', opts.fileVal, blob.uid,\n                            opts.filename || owner._formData.name || '' );\n                }\n    \n                this._setRequestHeader( xhr, opts.headers );\n                xhr.exec( 'send', {\n                    method: opts.method,\n                    url: server,\n                    forceURLStream: opts.forceURLStream,\n                    mimeType: 'application/octet-stream'\n                }, binary );\n            },\n    \n            getStatus: function() {\n                return this._status;\n            },\n    \n            getResponse: function() {\n                return this._response || '';\n            },\n    \n            getResponseAsJson: function() {\n                return this._responseJson;\n            },\n    \n            abort: function() {\n                var xhr = this._xhr;\n    \n                if ( xhr ) {\n                    xhr.exec('abort');\n                    xhr.destroy();\n                    this._xhr = xhr = null;\n                }\n            },\n    \n            destroy: function() {\n                this.abort();\n            },\n    \n            _initAjax: function() {\n                var me = this,\n                    xhr = new RuntimeClient('XMLHttpRequest');\n    \n                xhr.on( 'uploadprogress progress', function( e ) {\n                    var percent = e.loaded / e.total;\n                    percent = Math.min( 1, Math.max( 0, percent ) );\n                    return me.trigger( 'progress', percent );\n                });\n    \n                xhr.on( 'load', function() {\n                    var status = xhr.exec('getStatus'),\n                        readBody = false,\n                        err = '',\n                        p;\n    \n                    xhr.off();\n                    me._xhr = null;\n    \n                    if ( status >= 200 && status < 300 ) {\n                        readBody = true;\n                    } else if ( status >= 500 && status < 600 ) {\n                        readBody = true;\n                        err = 'server';\n                    } else {\n                        err = 'http';\n                    }\n    \n                    if ( readBody ) {\n                        me._response = xhr.exec('getResponse');\n                        me._response = decodeURIComponent( me._response );\n    \n                        // flash 处理可能存在 bug, 没辙只能靠 js 了\n                        // try {\n                        //     me._responseJson = xhr.exec('getResponseAsJson');\n                        // } catch ( error ) {\n                            \n                        p = window.JSON && window.JSON.parse || function( s ) {\n                            try {\n                                return new Function('return ' + s).call();\n                            } catch ( err ) {\n                                return {};\n                            }\n                        };\n                        me._responseJson  = me._response ? p(me._response) : {};\n                            \n                        // }\n                    }\n                    \n                    xhr.destroy();\n                    xhr = null;\n    \n                    return err ? me.trigger( 'error', err ) : me.trigger('load');\n                });\n    \n                xhr.on( 'error', function() {\n                    xhr.off();\n                    me._xhr = null;\n                    me.trigger( 'error', 'http' );\n                });\n    \n                me._xhr = xhr;\n                return xhr;\n            },\n    \n            _setRequestHeader: function( xhr, headers ) {\n                $.each( headers, function( key, val ) {\n                    xhr.exec( 'setRequestHeader', key, val );\n                });\n            }\n        });\n    });\n    /**\n     * @fileOverview Blob Html实现\n     */\n    define('runtime/flash/blob',[\n        'runtime/flash/runtime',\n        'lib/blob'\n    ], function( FlashRuntime, Blob ) {\n    \n        return FlashRuntime.register( 'Blob', {\n            slice: function( start, end ) {\n                var blob = this.flashExec( 'Blob', 'slice', start, end );\n    \n                return new Blob( blob.uid, blob );\n            }\n        });\n    });\n    /**\n     * @fileOverview 没有图像处理的版本。\n     */\n    define('preset/withoutimage',[\n        'base',\n    \n        // widgets\n        'widgets/filednd',\n        'widgets/filepaste',\n        'widgets/filepicker',\n        'widgets/queue',\n        'widgets/runtime',\n        'widgets/upload',\n        'widgets/validator',\n    \n        // runtimes\n        // html5\n        'runtime/html5/blob',\n        'runtime/html5/dnd',\n        'runtime/html5/filepaste',\n        'runtime/html5/filepicker',\n        'runtime/html5/transport',\n    \n        // flash\n        'runtime/flash/filepicker',\n        'runtime/flash/transport',\n        'runtime/flash/blob'\n    ], function( Base ) {\n        return Base;\n    });\n    define('webuploader',[\n        'preset/withoutimage'\n    ], function( preset ) {\n        return preset;\n    });\n    return require('webuploader');\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/webuploader/webuploader.nolog.js",
    "content": "/*! WebUploader 0.1.5 */\n\n\n/**\n * @fileOverview 让内部各个部件的代码可以用[amd](https://github.com/amdjs/amdjs-api/wiki/AMD)模块定义方式组织起来。\n *\n * AMD API 内部的简单不完全实现，请忽略。只有当WebUploader被合并成一个文件的时候才会引入。\n */\n(function( root, factory ) {\n    var modules = {},\n\n        // 内部require, 简单不完全实现。\n        // https://github.com/amdjs/amdjs-api/wiki/require\n        _require = function( deps, callback ) {\n            var args, len, i;\n\n            // 如果deps不是数组，则直接返回指定module\n            if ( typeof deps === 'string' ) {\n                return getModule( deps );\n            } else {\n                args = [];\n                for( len = deps.length, i = 0; i < len; i++ ) {\n                    args.push( getModule( deps[ i ] ) );\n                }\n\n                return callback.apply( null, args );\n            }\n        },\n\n        // 内部define，暂时不支持不指定id.\n        _define = function( id, deps, factory ) {\n            if ( arguments.length === 2 ) {\n                factory = deps;\n                deps = null;\n            }\n\n            _require( deps || [], function() {\n                setModule( id, factory, arguments );\n            });\n        },\n\n        // 设置module, 兼容CommonJs写法。\n        setModule = function( id, factory, args ) {\n            var module = {\n                    exports: factory\n                },\n                returned;\n\n            if ( typeof factory === 'function' ) {\n                args.length || (args = [ _require, module.exports, module ]);\n                returned = factory.apply( null, args );\n                returned !== undefined && (module.exports = returned);\n            }\n\n            modules[ id ] = module.exports;\n        },\n\n        // 根据id获取module\n        getModule = function( id ) {\n            var module = modules[ id ] || root[ id ];\n\n            if ( !module ) {\n                throw new Error( '`' + id + '` is undefined' );\n            }\n\n            return module;\n        },\n\n        // 将所有modules，将路径ids装换成对象。\n        exportsTo = function( obj ) {\n            var key, host, parts, part, last, ucFirst;\n\n            // make the first character upper case.\n            ucFirst = function( str ) {\n                return str && (str.charAt( 0 ).toUpperCase() + str.substr( 1 ));\n            };\n\n            for ( key in modules ) {\n                host = obj;\n\n                if ( !modules.hasOwnProperty( key ) ) {\n                    continue;\n                }\n\n                parts = key.split('/');\n                last = ucFirst( parts.pop() );\n\n                while( (part = ucFirst( parts.shift() )) ) {\n                    host[ part ] = host[ part ] || {};\n                    host = host[ part ];\n                }\n\n                host[ last ] = modules[ key ];\n            }\n\n            return obj;\n        },\n\n        makeExport = function( dollar ) {\n            root.__dollar = dollar;\n\n            // exports every module.\n            return exportsTo( factory( root, _define, _require ) );\n        },\n\n        origin;\n\n    if ( typeof module === 'object' && typeof module.exports === 'object' ) {\n\n        // For CommonJS and CommonJS-like environments where a proper window is present,\n        module.exports = makeExport();\n    } else if ( typeof define === 'function' && define.amd ) {\n\n        // Allow using this built library as an AMD module\n        // in another project. That other project will only\n        // see this AMD call, not the internal modules in\n        // the closure below.\n        define([ 'jquery' ], makeExport );\n    } else {\n\n        // Browser globals case. Just assign the\n        // result to a property on the global.\n        origin = root.WebUploader;\n        root.WebUploader = makeExport();\n        root.WebUploader.noConflict = function() {\n            root.WebUploader = origin;\n        };\n    }\n})( window, function( window, define, require ) {\n\n\n    /**\n     * @fileOverview jQuery or Zepto\n     */\n    define('dollar-third',[],function() {\n        var $ = window.__dollar || window.jQuery || window.Zepto;\n    \n        if ( !$ ) {\n            throw new Error('jQuery or Zepto not found!');\n        }\n    \n        return $;\n    });\n    /**\n     * @fileOverview Dom 操作相关\n     */\n    define('dollar',[\n        'dollar-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 使用jQuery的Promise\n     */\n    define('promise-third',[\n        'dollar'\n    ], function( $ ) {\n        return {\n            Deferred: $.Deferred,\n            when: $.when,\n    \n            isPromise: function( anything ) {\n                return anything && typeof anything.then === 'function';\n            }\n        };\n    });\n    /**\n     * @fileOverview Promise/A+\n     */\n    define('promise',[\n        'promise-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 基础类方法。\n     */\n    \n    /**\n     * Web Uploader内部类的详细说明，以下提及的功能类，都可以在`WebUploader`这个变量中访问到。\n     *\n     * As you know, Web Uploader的每个文件都是用过[AMD](https://github.com/amdjs/amdjs-api/wiki/AMD)规范中的`define`组织起来的, 每个Module都会有个module id.\n     * 默认module id为该文件的路径，而此路径将会转化成名字空间存放在WebUploader中。如：\n     *\n     * * module `base`：WebUploader.Base\n     * * module `file`: WebUploader.File\n     * * module `lib/dnd`: WebUploader.Lib.Dnd\n     * * module `runtime/html5/dnd`: WebUploader.Runtime.Html5.Dnd\n     *\n     *\n     * 以下文档中对类的使用可能省略掉了`WebUploader`前缀。\n     * @module WebUploader\n     * @title WebUploader API文档\n     */\n    define('base',[\n        'dollar',\n        'promise'\n    ], function( $, promise ) {\n    \n        var noop = function() {},\n            call = Function.call;\n    \n        // http://jsperf.com/uncurrythis\n        // 反科里化\n        function uncurryThis( fn ) {\n            return function() {\n                return call.apply( fn, arguments );\n            };\n        }\n    \n        function bindFn( fn, context ) {\n            return function() {\n                return fn.apply( context, arguments );\n            };\n        }\n    \n        function createObject( proto ) {\n            var f;\n    \n            if ( Object.create ) {\n                return Object.create( proto );\n            } else {\n                f = function() {};\n                f.prototype = proto;\n                return new f();\n            }\n        }\n    \n    \n        /**\n         * 基础类，提供一些简单常用的方法。\n         * @class Base\n         */\n        return {\n    \n            /**\n             * @property {String} version 当前版本号。\n             */\n            version: '0.1.5',\n    \n            /**\n             * @property {jQuery|Zepto} $ 引用依赖的jQuery或者Zepto对象。\n             */\n            $: $,\n    \n            Deferred: promise.Deferred,\n    \n            isPromise: promise.isPromise,\n    \n            when: promise.when,\n    \n            /**\n             * @description  简单的浏览器检查结果。\n             *\n             * * `webkit`  webkit版本号，如果浏览器为非webkit内核，此属性为`undefined`。\n             * * `chrome`  chrome浏览器版本号，如果浏览器为chrome，此属性为`undefined`。\n             * * `ie`  ie浏览器版本号，如果浏览器为非ie，此属性为`undefined`。**暂不支持ie10+**\n             * * `firefox`  firefox浏览器版本号，如果浏览器为非firefox，此属性为`undefined`。\n             * * `safari`  safari浏览器版本号，如果浏览器为非safari，此属性为`undefined`。\n             * * `opera`  opera浏览器版本号，如果浏览器为非opera，此属性为`undefined`。\n             *\n             * @property {Object} [browser]\n             */\n            browser: (function( ua ) {\n                var ret = {},\n                    webkit = ua.match( /WebKit\\/([\\d.]+)/ ),\n                    chrome = ua.match( /Chrome\\/([\\d.]+)/ ) ||\n                        ua.match( /CriOS\\/([\\d.]+)/ ),\n    \n                    ie = ua.match( /MSIE\\s([\\d\\.]+)/ ) ||\n                        ua.match( /(?:trident)(?:.*rv:([\\w.]+))?/i ),\n                    firefox = ua.match( /Firefox\\/([\\d.]+)/ ),\n                    safari = ua.match( /Safari\\/([\\d.]+)/ ),\n                    opera = ua.match( /OPR\\/([\\d.]+)/ );\n    \n                webkit && (ret.webkit = parseFloat( webkit[ 1 ] ));\n                chrome && (ret.chrome = parseFloat( chrome[ 1 ] ));\n                ie && (ret.ie = parseFloat( ie[ 1 ] ));\n                firefox && (ret.firefox = parseFloat( firefox[ 1 ] ));\n                safari && (ret.safari = parseFloat( safari[ 1 ] ));\n                opera && (ret.opera = parseFloat( opera[ 1 ] ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * @description  操作系统检查结果。\n             *\n             * * `android`  如果在android浏览器环境下，此值为对应的android版本号，否则为`undefined`。\n             * * `ios` 如果在ios浏览器环境下，此值为对应的ios版本号，否则为`undefined`。\n             * @property {Object} [os]\n             */\n            os: (function( ua ) {\n                var ret = {},\n    \n                    // osx = !!ua.match( /\\(Macintosh\\; Intel / ),\n                    android = ua.match( /(?:Android);?[\\s\\/]+([\\d.]+)?/ ),\n                    ios = ua.match( /(?:iPad|iPod|iPhone).*OS\\s([\\d_]+)/ );\n    \n                // osx && (ret.osx = true);\n                android && (ret.android = parseFloat( android[ 1 ] ));\n                ios && (ret.ios = parseFloat( ios[ 1 ].replace( /_/g, '.' ) ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * 实现类与类之间的继承。\n             * @method inherits\n             * @grammar Base.inherits( super ) => child\n             * @grammar Base.inherits( super, protos ) => child\n             * @grammar Base.inherits( super, protos, statics ) => child\n             * @param  {Class} super 父类\n             * @param  {Object | Function} [protos] 子类或者对象。如果对象中包含constructor，子类将是用此属性值。\n             * @param  {Function} [protos.constructor] 子类构造器，不指定的话将创建个临时的直接执行父类构造器的方法。\n             * @param  {Object} [statics] 静态属性或方法。\n             * @return {Class} 返回子类。\n             * @example\n             * function Person() {\n             *     console.log( 'Super' );\n             * }\n             * Person.prototype.hello = function() {\n             *     console.log( 'hello' );\n             * };\n             *\n             * var Manager = Base.inherits( Person, {\n             *     world: function() {\n             *         console.log( 'World' );\n             *     }\n             * });\n             *\n             * // 因为没有指定构造器，父类的构造器将会执行。\n             * var instance = new Manager();    // => Super\n             *\n             * // 继承子父类的方法\n             * instance.hello();    // => hello\n             * instance.world();    // => World\n             *\n             * // 子类的__super__属性指向父类\n             * console.log( Manager.__super__ === Person );    // => true\n             */\n            inherits: function( Super, protos, staticProtos ) {\n                var child;\n    \n                if ( typeof protos === 'function' ) {\n                    child = protos;\n                    protos = null;\n                } else if ( protos && protos.hasOwnProperty('constructor') ) {\n                    child = protos.constructor;\n                } else {\n                    child = function() {\n                        return Super.apply( this, arguments );\n                    };\n                }\n    \n                // 复制静态方法\n                $.extend( true, child, Super, staticProtos || {} );\n    \n                /* jshint camelcase: false */\n    \n                // 让子类的__super__属性指向父类。\n                child.__super__ = Super.prototype;\n    \n                // 构建原型，添加原型方法或属性。\n                // 暂时用Object.create实现。\n                child.prototype = createObject( Super.prototype );\n                protos && $.extend( true, child.prototype, protos );\n    \n                return child;\n            },\n    \n            /**\n             * 一个不做任何事情的方法。可以用来赋值给默认的callback.\n             * @method noop\n             */\n            noop: noop,\n    \n            /**\n             * 返回一个新的方法，此方法将已指定的`context`来执行。\n             * @grammar Base.bindFn( fn, context ) => Function\n             * @method bindFn\n             * @example\n             * var doSomething = function() {\n             *         console.log( this.name );\n             *     },\n             *     obj = {\n             *         name: 'Object Name'\n             *     },\n             *     aliasFn = Base.bind( doSomething, obj );\n             *\n             *  aliasFn();    // => Object Name\n             *\n             */\n            bindFn: bindFn,\n    \n            /**\n             * 引用Console.log如果存在的话，否则引用一个[空函数noop](#WebUploader:Base.noop)。\n             * @grammar Base.log( args... ) => undefined\n             * @method log\n             */\n            log: (function() {\n                if ( window.console ) {\n                    return bindFn( console.log, console );\n                }\n                return noop;\n            })(),\n    \n            nextTick: (function() {\n    \n                return function( cb ) {\n                    setTimeout( cb, 1 );\n                };\n    \n                // @bug 当浏览器不在当前窗口时就停了。\n                // var next = window.requestAnimationFrame ||\n                //     window.webkitRequestAnimationFrame ||\n                //     window.mozRequestAnimationFrame ||\n                //     function( cb ) {\n                //         window.setTimeout( cb, 1000 / 60 );\n                //     };\n    \n                // // fix: Uncaught TypeError: Illegal invocation\n                // return bindFn( next, window );\n            })(),\n    \n            /**\n             * 被[uncurrythis](http://www.2ality.com/2011/11/uncurrying-this.html)的数组slice方法。\n             * 将用来将非数组对象转化成数组对象。\n             * @grammar Base.slice( target, start[, end] ) => Array\n             * @method slice\n             * @example\n             * function doSomthing() {\n             *     var args = Base.slice( arguments, 1 );\n             *     console.log( args );\n             * }\n             *\n             * doSomthing( 'ignored', 'arg2', 'arg3' );    // => Array [\"arg2\", \"arg3\"]\n             */\n            slice: uncurryThis( [].slice ),\n    \n            /**\n             * 生成唯一的ID\n             * @method guid\n             * @grammar Base.guid() => String\n             * @grammar Base.guid( prefx ) => String\n             */\n            guid: (function() {\n                var counter = 0;\n    \n                return function( prefix ) {\n                    var guid = (+new Date()).toString( 32 ),\n                        i = 0;\n    \n                    for ( ; i < 5; i++ ) {\n                        guid += Math.floor( Math.random() * 65535 ).toString( 32 );\n                    }\n    \n                    return (prefix || 'wu_') + guid + (counter++).toString( 32 );\n                };\n            })(),\n    \n            /**\n             * 格式化文件大小, 输出成带单位的字符串\n             * @method formatSize\n             * @grammar Base.formatSize( size ) => String\n             * @grammar Base.formatSize( size, pointLength ) => String\n             * @grammar Base.formatSize( size, pointLength, units ) => String\n             * @param {Number} size 文件大小\n             * @param {Number} [pointLength=2] 精确到的小数点数。\n             * @param {Array} [units=[ 'B', 'K', 'M', 'G', 'TB' ]] 单位数组。从字节，到千字节，一直往上指定。如果单位数组里面只指定了到了K(千字节)，同时文件大小大于M, 此方法的输出将还是显示成多少K.\n             * @example\n             * console.log( Base.formatSize( 100 ) );    // => 100B\n             * console.log( Base.formatSize( 1024 ) );    // => 1.00K\n             * console.log( Base.formatSize( 1024, 0 ) );    // => 1K\n             * console.log( Base.formatSize( 1024 * 1024 ) );    // => 1.00M\n             * console.log( Base.formatSize( 1024 * 1024 * 1024 ) );    // => 1.00G\n             * console.log( Base.formatSize( 1024 * 1024 * 1024, 0, ['B', 'KB', 'MB'] ) );    // => 1024MB\n             */\n            formatSize: function( size, pointLength, units ) {\n                var unit;\n    \n                units = units || [ 'B', 'K', 'M', 'G', 'TB' ];\n    \n                while ( (unit = units.shift()) && size > 1024 ) {\n                    size = size / 1024;\n                }\n    \n                return (unit === 'B' ? size : size.toFixed( pointLength || 2 )) +\n                        unit;\n            }\n        };\n    });\n    /**\n     * 事件处理类，可以独立使用，也可以扩展给对象使用。\n     * @fileOverview Mediator\n     */\n    define('mediator',[\n        'base'\n    ], function( Base ) {\n        var $ = Base.$,\n            slice = [].slice,\n            separator = /\\s+/,\n            protos;\n    \n        // 根据条件过滤出事件handlers.\n        function findHandlers( arr, name, callback, context ) {\n            return $.grep( arr, function( handler ) {\n                return handler &&\n                        (!name || handler.e === name) &&\n                        (!callback || handler.cb === callback ||\n                        handler.cb._cb === callback) &&\n                        (!context || handler.ctx === context);\n            });\n        }\n    \n        function eachEvent( events, callback, iterator ) {\n            // 不支持对象，只支持多个event用空格隔开\n            $.each( (events || '').split( separator ), function( _, key ) {\n                iterator( key, callback );\n            });\n        }\n    \n        function triggerHanders( events, args ) {\n            var stoped = false,\n                i = -1,\n                len = events.length,\n                handler;\n    \n            while ( ++i < len ) {\n                handler = events[ i ];\n    \n                if ( handler.cb.apply( handler.ctx2, args ) === false ) {\n                    stoped = true;\n                    break;\n                }\n            }\n    \n            return !stoped;\n        }\n    \n        protos = {\n    \n            /**\n             * 绑定事件。\n             *\n             * `callback`方法在执行时，arguments将会来源于trigger的时候携带的参数。如\n             * ```javascript\n             * var obj = {};\n             *\n             * // 使得obj有事件行为\n             * Mediator.installTo( obj );\n             *\n             * obj.on( 'testa', function( arg1, arg2 ) {\n             *     console.log( arg1, arg2 ); // => 'arg1', 'arg2'\n             * });\n             *\n             * obj.trigger( 'testa', 'arg1', 'arg2' );\n             * ```\n             *\n             * 如果`callback`中，某一个方法`return false`了，则后续的其他`callback`都不会被执行到。\n             * 切会影响到`trigger`方法的返回值，为`false`。\n             *\n             * `on`还可以用来添加一个特殊事件`all`, 这样所有的事件触发都会响应到。同时此类`callback`中的arguments有一个不同处，\n             * 就是第一个参数为`type`，记录当前是什么事件在触发。此类`callback`的优先级比脚低，会再正常`callback`执行完后触发。\n             * ```javascript\n             * obj.on( 'all', function( type, arg1, arg2 ) {\n             *     console.log( type, arg1, arg2 ); // => 'testa', 'arg1', 'arg2'\n             * });\n             * ```\n             *\n             * @method on\n             * @grammar on( name, callback[, context] ) => self\n             * @param  {String}   name     事件名，支持多个事件用空格隔开\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             * @class Mediator\n             */\n            on: function( name, callback, context ) {\n                var me = this,\n                    set;\n    \n                if ( !callback ) {\n                    return this;\n                }\n    \n                set = this._events || (this._events = []);\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var handler = { e: name };\n    \n                    handler.cb = callback;\n                    handler.ctx = context;\n                    handler.ctx2 = context || me;\n                    handler.id = set.length;\n    \n                    set.push( handler );\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 绑定事件，且当handler执行完后，自动解除绑定。\n             * @method once\n             * @grammar once( name, callback[, context] ) => self\n             * @param  {String}   name     事件名\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            once: function( name, callback, context ) {\n                var me = this;\n    \n                if ( !callback ) {\n                    return me;\n                }\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var once = function() {\n                            me.off( name, once );\n                            return callback.apply( context || me, arguments );\n                        };\n    \n                    once._cb = callback;\n                    me.on( name, once, context );\n                });\n    \n                return me;\n            },\n    \n            /**\n             * 解除事件绑定\n             * @method off\n             * @grammar off( [name[, callback[, context] ] ] ) => self\n             * @param  {String}   [name]     事件名\n             * @param  {Function} [callback] 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            off: function( name, cb, ctx ) {\n                var events = this._events;\n    \n                if ( !events ) {\n                    return this;\n                }\n    \n                if ( !name && !cb && !ctx ) {\n                    this._events = [];\n                    return this;\n                }\n    \n                eachEvent( name, cb, function( name, cb ) {\n                    $.each( findHandlers( events, name, cb, ctx ), function() {\n                        delete events[ this.id ];\n                    });\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 触发事件\n             * @method trigger\n             * @grammar trigger( name[, args...] ) => self\n             * @param  {String}   type     事件名\n             * @param  {*} [...] 任意参数\n             * @return {Boolean} 如果handler中return false了，则返回false, 否则返回true\n             */\n            trigger: function( type ) {\n                var args, events, allEvents;\n    \n                if ( !this._events || !type ) {\n                    return this;\n                }\n    \n                args = slice.call( arguments, 1 );\n                events = findHandlers( this._events, type );\n                allEvents = findHandlers( this._events, 'all' );\n    \n                return triggerHanders( events, args ) &&\n                        triggerHanders( allEvents, arguments );\n            }\n        };\n    \n        /**\n         * 中介者，它本身是个单例，但可以通过[installTo](#WebUploader:Mediator:installTo)方法，使任何对象具备事件行为。\n         * 主要目的是负责模块与模块之间的合作，降低耦合度。\n         *\n         * @class Mediator\n         */\n        return $.extend({\n    \n            /**\n             * 可以通过这个接口，使任何对象具备事件功能。\n             * @method installTo\n             * @param  {Object} obj 需要具备事件行为的对象。\n             * @return {Object} 返回obj.\n             */\n            installTo: function( obj ) {\n                return $.extend( obj, protos );\n            }\n    \n        }, protos );\n    });\n    /**\n     * @fileOverview Uploader上传类\n     */\n    define('uploader',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$;\n    \n        /**\n         * 上传入口类。\n         * @class Uploader\n         * @constructor\n         * @grammar new Uploader( opts ) => Uploader\n         * @example\n         * var uploader = WebUploader.Uploader({\n         *     swf: 'path_of_swf/Uploader.swf',\n         *\n         *     // 开起分片上传。\n         *     chunked: true\n         * });\n         */\n        function Uploader( opts ) {\n            this.options = $.extend( true, {}, Uploader.options, opts );\n            this._init( this.options );\n        }\n    \n        // default Options\n        // widgets中有相应扩展\n        Uploader.options = {};\n        Mediator.installTo( Uploader.prototype );\n    \n        // 批量添加纯命令式方法。\n        $.each({\n            upload: 'start-upload',\n            stop: 'stop-upload',\n            getFile: 'get-file',\n            getFiles: 'get-files',\n            addFile: 'add-file',\n            addFiles: 'add-file',\n            sort: 'sort-files',\n            removeFile: 'remove-file',\n            cancelFile: 'cancel-file',\n            skipFile: 'skip-file',\n            retry: 'retry',\n            isInProgress: 'is-in-progress',\n            makeThumb: 'make-thumb',\n            md5File: 'md5-file',\n            getDimension: 'get-dimension',\n            addButton: 'add-btn',\n            predictRuntimeType: 'predict-runtime-type',\n            refresh: 'refresh',\n            disable: 'disable',\n            enable: 'enable',\n            reset: 'reset'\n        }, function( fn, command ) {\n            Uploader.prototype[ fn ] = function() {\n                return this.request( command, arguments );\n            };\n        });\n    \n        $.extend( Uploader.prototype, {\n            state: 'pending',\n    \n            _init: function( opts ) {\n                var me = this;\n    \n                me.request( 'init', opts, function() {\n                    me.state = 'ready';\n                    me.trigger('ready');\n                });\n            },\n    \n            /**\n             * 获取或者设置Uploader配置项。\n             * @method option\n             * @grammar option( key ) => *\n             * @grammar option( key, val ) => self\n             * @example\n             *\n             * // 初始状态图片上传前不会压缩\n             * var uploader = new WebUploader.Uploader({\n             *     compress: null;\n             * });\n             *\n             * // 修改后图片上传前，尝试将图片压缩到1600 * 1600\n             * uploader.option( 'compress', {\n             *     width: 1600,\n             *     height: 1600\n             * });\n             */\n            option: function( key, val ) {\n                var opts = this.options;\n    \n                // setter\n                if ( arguments.length > 1 ) {\n    \n                    if ( $.isPlainObject( val ) &&\n                            $.isPlainObject( opts[ key ] ) ) {\n                        $.extend( opts[ key ], val );\n                    } else {\n                        opts[ key ] = val;\n                    }\n    \n                } else {    // getter\n                    return key ? opts[ key ] : opts;\n                }\n            },\n    \n            /**\n             * 获取文件统计信息。返回一个包含一下信息的对象。\n             * * `successNum` 上传成功的文件数\n             * * `progressNum` 上传中的文件数\n             * * `cancelNum` 被删除的文件数\n             * * `invalidNum` 无效的文件数\n             * * `uploadFailNum` 上传失败的文件数\n             * * `queueNum` 还在队列中的文件数\n             * * `interruptNum` 被暂停的文件数\n             * @method getStats\n             * @grammar getStats() => Object\n             */\n            getStats: function() {\n                // return this._mgr.getStats.apply( this._mgr, arguments );\n                var stats = this.request('get-stats');\n    \n                return stats ? {\n                    successNum: stats.numOfSuccess,\n                    progressNum: stats.numOfProgress,\n    \n                    // who care?\n                    // queueFailNum: 0,\n                    cancelNum: stats.numOfCancel,\n                    invalidNum: stats.numOfInvalid,\n                    uploadFailNum: stats.numOfUploadFailed,\n                    queueNum: stats.numOfQueue,\n                    interruptNum: stats.numofInterrupt\n                } : {};\n            },\n    \n            // 需要重写此方法来来支持opts.onEvent和instance.onEvent的处理器\n            trigger: function( type/*, args...*/ ) {\n                var args = [].slice.call( arguments, 1 ),\n                    opts = this.options,\n                    name = 'on' + type.substring( 0, 1 ).toUpperCase() +\n                        type.substring( 1 );\n    \n                if (\n                        // 调用通过on方法注册的handler.\n                        Mediator.trigger.apply( this, arguments ) === false ||\n    \n                        // 调用opts.onEvent\n                        $.isFunction( opts[ name ] ) &&\n                        opts[ name ].apply( this, args ) === false ||\n    \n                        // 调用this.onEvent\n                        $.isFunction( this[ name ] ) &&\n                        this[ name ].apply( this, args ) === false ||\n    \n                        // 广播所有uploader的事件。\n                        Mediator.trigger.apply( Mediator,\n                        [ this, type ].concat( args ) ) === false ) {\n    \n                    return false;\n                }\n    \n                return true;\n            },\n    \n            /**\n             * 销毁 webuploader 实例\n             * @method destroy\n             * @grammar destroy() => undefined\n             */\n            destroy: function() {\n                this.request( 'destroy', arguments );\n                this.off();\n            },\n    \n            // widgets/widget.js将补充此方法的详细文档。\n            request: Base.noop\n        });\n    \n        /**\n         * 创建Uploader实例，等同于new Uploader( opts );\n         * @method create\n         * @class Base\n         * @static\n         * @grammar Base.create( opts ) => Uploader\n         */\n        Base.create = Uploader.create = function( opts ) {\n            return new Uploader( opts );\n        };\n    \n        // 暴露Uploader，可以通过它来扩展业务逻辑。\n        Base.Uploader = Uploader;\n    \n        return Uploader;\n    });\n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/runtime',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            factories = {},\n    \n            // 获取对象的第一个key\n            getFirstKey = function( obj ) {\n                for ( var key in obj ) {\n                    if ( obj.hasOwnProperty( key ) ) {\n                        return key;\n                    }\n                }\n                return null;\n            };\n    \n        // 接口类。\n        function Runtime( options ) {\n            this.options = $.extend({\n                container: document.body\n            }, options );\n            this.uid = Base.guid('rt_');\n        }\n    \n        $.extend( Runtime.prototype, {\n    \n            getContainer: function() {\n                var opts = this.options,\n                    parent, container;\n    \n                if ( this._container ) {\n                    return this._container;\n                }\n    \n                parent = $( opts.container || document.body );\n                container = $( document.createElement('div') );\n    \n                container.attr( 'id', 'rt_' + this.uid );\n                container.css({\n                    position: 'absolute',\n                    top: '0px',\n                    left: '0px',\n                    width: '1px',\n                    height: '1px',\n                    overflow: 'hidden'\n                });\n    \n                parent.append( container );\n                parent.addClass('webuploader-container');\n                this._container = container;\n                this._parent = parent;\n                return container;\n            },\n    \n            init: Base.noop,\n            exec: Base.noop,\n    \n            destroy: function() {\n                this._container && this._container.remove();\n                this._parent && this._parent.removeClass('webuploader-container');\n                this.off();\n            }\n        });\n    \n        Runtime.orders = 'html5,flash';\n    \n    \n        /**\n         * 添加Runtime实现。\n         * @param {String} type    类型\n         * @param {Runtime} factory 具体Runtime实现。\n         */\n        Runtime.addRuntime = function( type, factory ) {\n            factories[ type ] = factory;\n        };\n    \n        Runtime.hasRuntime = function( type ) {\n            return !!(type ? factories[ type ] : getFirstKey( factories ));\n        };\n    \n        Runtime.create = function( opts, orders ) {\n            var type, runtime;\n    \n            orders = orders || Runtime.orders;\n            $.each( orders.split( /\\s*,\\s*/g ), function() {\n                if ( factories[ this ] ) {\n                    type = this;\n                    return false;\n                }\n            });\n    \n            type = type || getFirstKey( factories );\n    \n            if ( !type ) {\n                throw new Error('Runtime Error');\n            }\n    \n            runtime = new factories[ type ]( opts );\n            return runtime;\n        };\n    \n        Mediator.installTo( Runtime.prototype );\n        return Runtime;\n    });\n    \n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/client',[\n        'base',\n        'mediator',\n        'runtime/runtime'\n    ], function( Base, Mediator, Runtime ) {\n    \n        var cache;\n    \n        cache = (function() {\n            var obj = {};\n    \n            return {\n                add: function( runtime ) {\n                    obj[ runtime.uid ] = runtime;\n                },\n    \n                get: function( ruid, standalone ) {\n                    var i;\n    \n                    if ( ruid ) {\n                        return obj[ ruid ];\n                    }\n    \n                    for ( i in obj ) {\n                        // 有些类型不能重用，比如filepicker.\n                        if ( standalone && obj[ i ].__standalone ) {\n                            continue;\n                        }\n    \n                        return obj[ i ];\n                    }\n    \n                    return null;\n                },\n    \n                remove: function( runtime ) {\n                    delete obj[ runtime.uid ];\n                }\n            };\n        })();\n    \n        function RuntimeClient( component, standalone ) {\n            var deferred = Base.Deferred(),\n                runtime;\n    \n            this.uid = Base.guid('client_');\n    \n            // 允许runtime没有初始化之前，注册一些方法在初始化后执行。\n            this.runtimeReady = function( cb ) {\n                return deferred.done( cb );\n            };\n    \n            this.connectRuntime = function( opts, cb ) {\n    \n                // already connected.\n                if ( runtime ) {\n                    throw new Error('already connected!');\n                }\n    \n                deferred.done( cb );\n    \n                if ( typeof opts === 'string' && cache.get( opts ) ) {\n                    runtime = cache.get( opts );\n                }\n    \n                // 像filePicker只能独立存在，不能公用。\n                runtime = runtime || cache.get( null, standalone );\n    \n                // 需要创建\n                if ( !runtime ) {\n                    runtime = Runtime.create( opts, opts.runtimeOrder );\n                    runtime.__promise = deferred.promise();\n                    runtime.once( 'ready', deferred.resolve );\n                    runtime.init();\n                    cache.add( runtime );\n                    runtime.__client = 1;\n                } else {\n                    // 来自cache\n                    Base.$.extend( runtime.options, opts );\n                    runtime.__promise.then( deferred.resolve );\n                    runtime.__client++;\n                }\n    \n                standalone && (runtime.__standalone = standalone);\n                return runtime;\n            };\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.disconnectRuntime = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                runtime.__client--;\n    \n                if ( runtime.__client <= 0 ) {\n                    cache.remove( runtime );\n                    delete runtime.__promise;\n                    runtime.destroy();\n                }\n    \n                runtime = null;\n            };\n    \n            this.exec = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                var args = Base.slice( arguments );\n                component && args.unshift( component );\n    \n                return runtime.exec.apply( this, args );\n            };\n    \n            this.getRuid = function() {\n                return runtime && runtime.uid;\n            };\n    \n            this.destroy = (function( destroy ) {\n                return function() {\n                    destroy && destroy.apply( this, arguments );\n                    this.trigger('destroy');\n                    this.off();\n                    this.exec('destroy');\n                    this.disconnectRuntime();\n                };\n            })( this.destroy );\n        }\n    \n        Mediator.installTo( RuntimeClient.prototype );\n        return RuntimeClient;\n    });\n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/dnd',[\n        'base',\n        'mediator',\n        'runtime/client'\n    ], function( Base, Mediator, RuntimeClent ) {\n    \n        var $ = Base.$;\n    \n        function DragAndDrop( opts ) {\n            opts = this.options = $.extend({}, DragAndDrop.options, opts );\n    \n            opts.container = $( opts.container );\n    \n            if ( !opts.container.length ) {\n                return;\n            }\n    \n            RuntimeClent.call( this, 'DragAndDrop' );\n        }\n    \n        DragAndDrop.options = {\n            accept: null,\n            disableGlobalDnd: false\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: DragAndDrop,\n    \n            init: function() {\n                var me = this;\n    \n                me.connectRuntime( me.options, function() {\n                    me.exec('init');\n                    me.trigger('ready');\n                });\n            }\n        });\n    \n        Mediator.installTo( DragAndDrop.prototype );\n    \n        return DragAndDrop;\n    });\n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/widget',[\n        'base',\n        'uploader'\n    ], function( Base, Uploader ) {\n    \n        var $ = Base.$,\n            _init = Uploader.prototype._init,\n            _destroy = Uploader.prototype.destroy,\n            IGNORE = {},\n            widgetClass = [];\n    \n        function isArrayLike( obj ) {\n            if ( !obj ) {\n                return false;\n            }\n    \n            var length = obj.length,\n                type = $.type( obj );\n    \n            if ( obj.nodeType === 1 && length ) {\n                return true;\n            }\n    \n            return type === 'array' || type !== 'function' && type !== 'string' &&\n                    (length === 0 || typeof length === 'number' && length > 0 &&\n                    (length - 1) in obj);\n        }\n    \n        function Widget( uploader ) {\n            this.owner = uploader;\n            this.options = uploader.options;\n        }\n    \n        $.extend( Widget.prototype, {\n    \n            init: Base.noop,\n    \n            // 类Backbone的事件监听声明，监听uploader实例上的事件\n            // widget直接无法监听事件，事件只能通过uploader来传递\n            invoke: function( apiName, args ) {\n    \n                /*\n                    {\n                        'make-thumb': 'makeThumb'\n                    }\n                 */\n                var map = this.responseMap;\n    \n                // 如果无API响应声明则忽略\n                if ( !map || !(apiName in map) || !(map[ apiName ] in this) ||\n                        !$.isFunction( this[ map[ apiName ] ] ) ) {\n    \n                    return IGNORE;\n                }\n    \n                return this[ map[ apiName ] ].apply( this, args );\n    \n            },\n    \n            /**\n             * 发送命令。当传入`callback`或者`handler`中返回`promise`时。返回一个当所有`handler`中的promise都完成后完成的新`promise`。\n             * @method request\n             * @grammar request( command, args ) => * | Promise\n             * @grammar request( command, args, callback ) => Promise\n             * @for  Uploader\n             */\n            request: function() {\n                return this.owner.request.apply( this.owner, arguments );\n            }\n        });\n    \n        // 扩展Uploader.\n        $.extend( Uploader.prototype, {\n    \n            /**\n             * @property {String | Array} [disableWidgets=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 默认所有 Uploader.register 了的 widget 都会被加载，如果禁用某一部分，请通过此 option 指定黑名单。\n             */\n    \n            // 覆写_init用来初始化widgets\n            _init: function() {\n                var me = this,\n                    widgets = me._widgets = [],\n                    deactives = me.options.disableWidgets || '';\n    \n                $.each( widgetClass, function( _, klass ) {\n                    (!deactives || !~deactives.indexOf( klass._name )) &&\n                        widgets.push( new klass( me ) );\n                });\n    \n                return _init.apply( me, arguments );\n            },\n    \n            request: function( apiName, args, callback ) {\n                var i = 0,\n                    widgets = this._widgets,\n                    len = widgets && widgets.length,\n                    rlts = [],\n                    dfds = [],\n                    widget, rlt, promise, key;\n    \n                args = isArrayLike( args ) ? args : [ args ];\n    \n                for ( ; i < len; i++ ) {\n                    widget = widgets[ i ];\n                    rlt = widget.invoke( apiName, args );\n    \n                    if ( rlt !== IGNORE ) {\n    \n                        // Deferred对象\n                        if ( Base.isPromise( rlt ) ) {\n                            dfds.push( rlt );\n                        } else {\n                            rlts.push( rlt );\n                        }\n                    }\n                }\n    \n                // 如果有callback，则用异步方式。\n                if ( callback || dfds.length ) {\n                    promise = Base.when.apply( Base, dfds );\n                    key = promise.pipe ? 'pipe' : 'then';\n    \n                    // 很重要不能删除。删除了会死循环。\n                    // 保证执行顺序。让callback总是在下一个 tick 中执行。\n                    return promise[ key ](function() {\n                                var deferred = Base.Deferred(),\n                                    args = arguments;\n    \n                                if ( args.length === 1 ) {\n                                    args = args[ 0 ];\n                                }\n    \n                                setTimeout(function() {\n                                    deferred.resolve( args );\n                                }, 1 );\n    \n                                return deferred.promise();\n                            })[ callback ? key : 'done' ]( callback || Base.noop );\n                } else {\n                    return rlts[ 0 ];\n                }\n            },\n    \n            destroy: function() {\n                _destroy.apply( this, arguments );\n                this._widgets = null;\n            }\n        });\n    \n        /**\n         * 添加组件\n         * @grammar Uploader.register(proto);\n         * @grammar Uploader.register(map, proto);\n         * @param  {object} responseMap API 名称与函数实现的映射\n         * @param  {object} proto 组件原型，构造函数通过 constructor 属性定义\n         * @method Uploader.register\n         * @for Uploader\n         * @example\n         * Uploader.register({\n         *     'make-thumb': 'makeThumb'\n         * }, {\n         *     init: function( options ) {},\n         *     makeThumb: function() {}\n         * });\n         *\n         * Uploader.register({\n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         */\n        Uploader.register = Widget.register = function( responseMap, widgetProto ) {\n            var map = { init: 'init', destroy: 'destroy', name: 'anonymous' },\n                klass;\n    \n            if ( arguments.length === 1 ) {\n                widgetProto = responseMap;\n    \n                // 自动生成 map 表。\n                $.each(widgetProto, function(key) {\n                    if ( key[0] === '_' || key === 'name' ) {\n                        key === 'name' && (map.name = widgetProto.name);\n                        return;\n                    }\n    \n                    map[key.replace(/[A-Z]/g, '-$&').toLowerCase()] = key;\n                });\n    \n            } else {\n                map = $.extend( map, responseMap );\n            }\n    \n            widgetProto.responseMap = map;\n            klass = Base.inherits( Widget, widgetProto );\n            klass._name = map.name;\n            widgetClass.push( klass );\n    \n            return klass;\n        };\n    \n        /**\n         * 删除插件，只有在注册时指定了名字的才能被删除。\n         * @grammar Uploader.unRegister(name);\n         * @param  {string} name 组件名字\n         * @method Uploader.unRegister\n         * @for Uploader\n         * @example\n         *\n         * Uploader.register({\n         *     name: 'custom',\n         *     \n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         *\n         * Uploader.unRegister('custom');\n         */\n        Uploader.unRegister = Widget.unRegister = function( name ) {\n            if ( !name || name === 'anonymous' ) {\n                return;\n            }\n            \n            // 删除指定的插件。\n            for ( var i = widgetClass.length; i--; ) {\n                if ( widgetClass[i]._name === name ) {\n                    widgetClass.splice(i, 1)\n                }\n            }\n        };\n    \n        return Widget;\n    });\n    /**\n     * @fileOverview DragAndDrop Widget。\n     */\n    define('widgets/filednd',[\n        'base',\n        'uploader',\n        'lib/dnd',\n        'widgets/widget'\n    ], function( Base, Uploader, Dnd ) {\n        var $ = Base.$;\n    \n        Uploader.options.dnd = '';\n    \n        /**\n         * @property {Selector} [dnd=undefined]  指定Drag And Drop拖拽的容器，如果不指定，则不启动。\n         * @namespace options\n         * @for Uploader\n         */\n        \n        /**\n         * @property {Selector} [disableGlobalDnd=false]  是否禁掉整个页面的拖拽功能，如果不禁用，图片拖进来的时候会默认被浏览器打开。\n         * @namespace options\n         * @for Uploader\n         */\n    \n        /**\n         * @event dndAccept\n         * @param {DataTransferItemList} items DataTransferItem\n         * @description 阻止此事件可以拒绝某些类型的文件拖入进来。目前只有 chrome 提供这样的 API，且只能通过 mime-type 验证。\n         * @for  Uploader\n         */\n        return Uploader.register({\n            name: 'dnd',\n            \n            init: function( opts ) {\n    \n                if ( !opts.dnd ||\n                        this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                var me = this,\n                    deferred = Base.Deferred(),\n                    options = $.extend({}, {\n                        disableGlobalDnd: opts.disableGlobalDnd,\n                        container: opts.dnd,\n                        accept: opts.accept\n                    }),\n                    dnd;\n    \n                this.dnd = dnd = new Dnd( options );\n    \n                dnd.once( 'ready', deferred.resolve );\n                dnd.on( 'drop', function( files ) {\n                    me.request( 'add-file', [ files ]);\n                });\n    \n                // 检测文件是否全部允许添加。\n                dnd.on( 'accept', function( items ) {\n                    return me.owner.trigger( 'dndAccept', items );\n                });\n    \n                dnd.init();\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                this.dnd && this.dnd.destroy();\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepaste',[\n        'base',\n        'mediator',\n        'runtime/client'\n    ], function( Base, Mediator, RuntimeClent ) {\n    \n        var $ = Base.$;\n    \n        function FilePaste( opts ) {\n            opts = this.options = $.extend({}, opts );\n            opts.container = $( opts.container || document.body );\n            RuntimeClent.call( this, 'FilePaste' );\n        }\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePaste,\n    \n            init: function() {\n                var me = this;\n    \n                me.connectRuntime( me.options, function() {\n                    me.exec('init');\n                    me.trigger('ready');\n                });\n            }\n        });\n    \n        Mediator.installTo( FilePaste.prototype );\n    \n        return FilePaste;\n    });\n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/filepaste',[\n        'base',\n        'uploader',\n        'lib/filepaste',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePaste ) {\n        var $ = Base.$;\n    \n        /**\n         * @property {Selector} [paste=undefined]  指定监听paste事件的容器，如果不指定，不启用此功能。此功能为通过粘贴来添加截屏的图片。建议设置为`document.body`.\n         * @namespace options\n         * @for Uploader\n         */\n        return Uploader.register({\n            name: 'paste',\n            \n            init: function( opts ) {\n    \n                if ( !opts.paste ||\n                        this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                var me = this,\n                    deferred = Base.Deferred(),\n                    options = $.extend({}, {\n                        container: opts.paste,\n                        accept: opts.accept\n                    }),\n                    paste;\n    \n                this.paste = paste = new FilePaste( options );\n    \n                paste.once( 'ready', deferred.resolve );\n                paste.on( 'paste', function( files ) {\n                    me.owner.request( 'add-file', [ files ]);\n                });\n                paste.init();\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                this.paste && this.paste.destroy();\n            }\n        });\n    });\n    /**\n     * @fileOverview Blob\n     */\n    define('lib/blob',[\n        'base',\n        'runtime/client'\n    ], function( Base, RuntimeClient ) {\n    \n        function Blob( ruid, source ) {\n            var me = this;\n    \n            me.source = source;\n            me.ruid = ruid;\n            this.size = source.size || 0;\n    \n            // 如果没有指定 mimetype, 但是知道文件后缀。\n            if ( !source.type && this.ext &&\n                    ~'jpg,jpeg,png,gif,bmp'.indexOf( this.ext ) ) {\n                this.type = 'image/' + (this.ext === 'jpg' ? 'jpeg' : this.ext);\n            } else {\n                this.type = source.type || 'application/octet-stream';\n            }\n    \n            RuntimeClient.call( me, 'Blob' );\n            this.uid = source.uid || this.uid;\n    \n            if ( ruid ) {\n                me.connectRuntime( ruid );\n            }\n        }\n    \n        Base.inherits( RuntimeClient, {\n            constructor: Blob,\n    \n            slice: function( start, end ) {\n                return this.exec( 'slice', start, end );\n            },\n    \n            getSource: function() {\n                return this.source;\n            }\n        });\n    \n        return Blob;\n    });\n    /**\n     * 为了统一化Flash的File和HTML5的File而存在。\n     * 以至于要调用Flash里面的File，也可以像调用HTML5版本的File一下。\n     * @fileOverview File\n     */\n    define('lib/file',[\n        'base',\n        'lib/blob'\n    ], function( Base, Blob ) {\n    \n        var uid = 1,\n            rExt = /\\.([^.]+)$/;\n    \n        function File( ruid, file ) {\n            var ext;\n    \n            this.name = file.name || ('untitled' + uid++);\n            ext = rExt.exec( file.name ) ? RegExp.$1.toLowerCase() : '';\n    \n            // todo 支持其他类型文件的转换。\n            // 如果有 mimetype, 但是文件名里面没有找出后缀规律\n            if ( !ext && file.type ) {\n                ext = /\\/(jpg|jpeg|png|gif|bmp)$/i.exec( file.type ) ?\n                        RegExp.$1.toLowerCase() : '';\n                this.name += '.' + ext;\n            }\n    \n            this.ext = ext;\n            this.lastModifiedDate = file.lastModifiedDate ||\n                    (new Date()).toLocaleString();\n    \n            Blob.apply( this, arguments );\n        }\n    \n        return Base.inherits( Blob, File );\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepicker',[\n        'base',\n        'runtime/client',\n        'lib/file'\n    ], function( Base, RuntimeClent, File ) {\n    \n        var $ = Base.$;\n    \n        function FilePicker( opts ) {\n            opts = this.options = $.extend({}, FilePicker.options, opts );\n    \n            opts.container = $( opts.id );\n    \n            if ( !opts.container.length ) {\n                throw new Error('按钮指定错误');\n            }\n    \n            opts.innerHTML = opts.innerHTML || opts.label ||\n                    opts.container.html() || '';\n    \n            opts.button = $( opts.button || document.createElement('div') );\n            opts.button.html( opts.innerHTML );\n            opts.container.html( opts.button );\n    \n            RuntimeClent.call( this, 'FilePicker', true );\n        }\n    \n        FilePicker.options = {\n            button: null,\n            container: null,\n            label: null,\n            innerHTML: null,\n            multiple: true,\n            accept: null,\n            name: 'file'\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePicker,\n    \n            init: function() {\n                var me = this,\n                    opts = me.options,\n                    button = opts.button;\n    \n                button.addClass('webuploader-pick');\n    \n                me.on( 'all', function( type ) {\n                    var files;\n    \n                    switch ( type ) {\n                        case 'mouseenter':\n                            button.addClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'mouseleave':\n                            button.removeClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'change':\n                            files = me.exec('getFiles');\n                            me.trigger( 'select', $.map( files, function( file ) {\n                                file = new File( me.getRuid(), file );\n    \n                                // 记录来源。\n                                file._refer = opts.container;\n                                return file;\n                            }), opts.container );\n                            break;\n                    }\n                });\n    \n                me.connectRuntime( opts, function() {\n                    me.refresh();\n                    me.exec( 'init', opts );\n                    me.trigger('ready');\n                });\n    \n                this._resizeHandler = Base.bindFn( this.refresh, this );\n                $( window ).on( 'resize', this._resizeHandler );\n            },\n    \n            refresh: function() {\n                var shimContainer = this.getRuntime().getContainer(),\n                    button = this.options.button,\n                    width = button.outerWidth ?\n                            button.outerWidth() : button.width(),\n    \n                    height = button.outerHeight ?\n                            button.outerHeight() : button.height(),\n    \n                    pos = button.offset();\n    \n                width && height && shimContainer.css({\n                    bottom: 'auto',\n                    right: 'auto',\n                    width: width + 'px',\n                    height: height + 'px'\n                }).offset( pos );\n            },\n    \n            enable: function() {\n                var btn = this.options.button;\n    \n                btn.removeClass('webuploader-pick-disable');\n                this.refresh();\n            },\n    \n            disable: function() {\n                var btn = this.options.button;\n    \n                this.getRuntime().getContainer().css({\n                    top: '-99999px'\n                });\n    \n                btn.addClass('webuploader-pick-disable');\n            },\n    \n            destroy: function() {\n                var btn = this.options.button;\n                $( window ).off( 'resize', this._resizeHandler );\n                btn.removeClass('webuploader-pick-disable webuploader-pick-hover ' +\n                    'webuploader-pick');\n            }\n        });\n    \n        return FilePicker;\n    });\n    \n    /**\n     * @fileOverview 文件选择相关\n     */\n    define('widgets/filepicker',[\n        'base',\n        'uploader',\n        'lib/filepicker',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePicker ) {\n        var $ = Base.$;\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Selector | Object} [pick=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 指定选择文件的按钮容器，不指定则不创建按钮。\n             *\n             * * `id` {Seletor|dom} 指定选择文件的按钮容器，不指定则不创建按钮。**注意** 这里虽然写的是 id, 但是不是只支持 id, 还支持 class, 或者 dom 节点。\n             * * `label` {String} 请采用 `innerHTML` 代替\n             * * `innerHTML` {String} 指定按钮文字。不指定时优先从指定的容器中看是否自带文字。\n             * * `multiple` {Boolean} 是否开起同时选择多个文件能力。\n             */\n            pick: null,\n    \n            /**\n             * @property {Arroy} [accept=null]\n             * @namespace options\n             * @for Uploader\n             * @description 指定接受哪些类型的文件。 由于目前还有ext转mimeType表，所以这里需要分开指定。\n             *\n             * * `title` {String} 文字描述\n             * * `extensions` {String} 允许的文件后缀，不带点，多个用逗号分割。\n             * * `mimeTypes` {String} 多个用逗号分割。\n             *\n             * 如：\n             *\n             * ```\n             * {\n             *     title: 'Images',\n             *     extensions: 'gif,jpg,jpeg,bmp,png',\n             *     mimeTypes: 'image/*'\n             * }\n             * ```\n             */\n            accept: null/*{\n                title: 'Images',\n                extensions: 'gif,jpg,jpeg,bmp,png',\n                mimeTypes: 'image/*'\n            }*/\n        });\n    \n        return Uploader.register({\n            name: 'picker',\n    \n            init: function( opts ) {\n                this.pickers = [];\n                return opts.pick && this.addBtn( opts.pick );\n            },\n    \n            refresh: function() {\n                $.each( this.pickers, function() {\n                    this.refresh();\n                });\n            },\n    \n            /**\n             * @method addButton\n             * @for Uploader\n             * @grammar addButton( pick ) => Promise\n             * @description\n             * 添加文件选择按钮，如果一个按钮不够，需要调用此方法来添加。参数跟[options.pick](#WebUploader:Uploader:options)一致。\n             * @example\n             * uploader.addButton({\n             *     id: '#btnContainer',\n             *     innerHTML: '选择文件'\n             * });\n             */\n            addBtn: function( pick ) {\n                var me = this,\n                    opts = me.options,\n                    accept = opts.accept,\n                    promises = [];\n    \n                if ( !pick ) {\n                    return;\n                }\n    \n                $.isPlainObject( pick ) || (pick = {\n                    id: pick\n                });\n    \n                $( pick.id ).each(function() {\n                    var options, picker, deferred;\n    \n                    deferred = Base.Deferred();\n    \n                    options = $.extend({}, pick, {\n                        accept: $.isPlainObject( accept ) ? [ accept ] : accept,\n                        swf: opts.swf,\n                        runtimeOrder: opts.runtimeOrder,\n                        id: this\n                    });\n    \n                    picker = new FilePicker( options );\n    \n                    picker.once( 'ready', deferred.resolve );\n                    picker.on( 'select', function( files ) {\n                        me.owner.request( 'add-file', [ files ]);\n                    });\n                    picker.init();\n    \n                    me.pickers.push( picker );\n    \n                    promises.push( deferred.promise() );\n                });\n    \n                return Base.when.apply( Base, promises );\n            },\n    \n            disable: function() {\n                $.each( this.pickers, function() {\n                    this.disable();\n                });\n            },\n    \n            enable: function() {\n                $.each( this.pickers, function() {\n                    this.enable();\n                });\n            },\n    \n            destroy: function() {\n                $.each( this.pickers, function() {\n                    this.destroy();\n                });\n                this.pickers = null;\n            }\n        });\n    });\n    /**\n     * @fileOverview Image\n     */\n    define('lib/image',[\n        'base',\n        'runtime/client',\n        'lib/blob'\n    ], function( Base, RuntimeClient, Blob ) {\n        var $ = Base.$;\n    \n        // 构造器。\n        function Image( opts ) {\n            this.options = $.extend({}, Image.options, opts );\n            RuntimeClient.call( this, 'Image' );\n    \n            this.on( 'load', function() {\n                this._info = this.exec('info');\n                this._meta = this.exec('meta');\n            });\n        }\n    \n        // 默认选项。\n        Image.options = {\n    \n            // 默认的图片处理质量\n            quality: 90,\n    \n            // 是否裁剪\n            crop: false,\n    \n            // 是否保留头部信息\n            preserveHeaders: false,\n    \n            // 是否允许放大。\n            allowMagnify: false\n        };\n    \n        // 继承RuntimeClient.\n        Base.inherits( RuntimeClient, {\n            constructor: Image,\n    \n            info: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._info = val;\n                    return this;\n                }\n    \n                // getter\n                return this._info;\n            },\n    \n            meta: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._meta = val;\n                    return this;\n                }\n    \n                // getter\n                return this._meta;\n            },\n    \n            loadFromBlob: function( blob ) {\n                var me = this,\n                    ruid = blob.getRuid();\n    \n                this.connectRuntime( ruid, function() {\n                    me.exec( 'init', me.options );\n                    me.exec( 'loadFromBlob', blob );\n                });\n            },\n    \n            resize: function() {\n                var args = Base.slice( arguments );\n                return this.exec.apply( this, [ 'resize' ].concat( args ) );\n            },\n    \n            crop: function() {\n                var args = Base.slice( arguments );\n                return this.exec.apply( this, [ 'crop' ].concat( args ) );\n            },\n    \n            getAsDataUrl: function( type ) {\n                return this.exec( 'getAsDataUrl', type );\n            },\n    \n            getAsBlob: function( type ) {\n                var blob = this.exec( 'getAsBlob', type );\n    \n                return new Blob( this.getRuid(), blob );\n            }\n        });\n    \n        return Image;\n    });\n    /**\n     * @fileOverview 图片操作, 负责预览图片和上传前压缩图片\n     */\n    define('widgets/image',[\n        'base',\n        'uploader',\n        'lib/image',\n        'widgets/widget'\n    ], function( Base, Uploader, Image ) {\n    \n        var $ = Base.$,\n            throttle;\n    \n        // 根据要处理的文件大小来节流，一次不能处理太多，会卡。\n        throttle = (function( max ) {\n            var occupied = 0,\n                waiting = [],\n                tick = function() {\n                    var item;\n    \n                    while ( waiting.length && occupied < max ) {\n                        item = waiting.shift();\n                        occupied += item[ 0 ];\n                        item[ 1 ]();\n                    }\n                };\n    \n            return function( emiter, size, cb ) {\n                waiting.push([ size, cb ]);\n                emiter.once( 'destroy', function() {\n                    occupied -= size;\n                    setTimeout( tick, 1 );\n                });\n                setTimeout( tick, 1 );\n            };\n        })( 5 * 1024 * 1024 );\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Object} [thumb]\n             * @namespace options\n             * @for Uploader\n             * @description 配置生成缩略图的选项。\n             *\n             * 默认为：\n             *\n             * ```javascript\n             * {\n             *     width: 110,\n             *     height: 110,\n             *\n             *     // 图片质量，只有type为`image/jpeg`的时候才有效。\n             *     quality: 70,\n             *\n             *     // 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.\n             *     allowMagnify: true,\n             *\n             *     // 是否允许裁剪。\n             *     crop: true,\n             *\n             *     // 为空的话则保留原有图片格式。\n             *     // 否则强制转换成指定的类型。\n             *     type: 'image/jpeg'\n             * }\n             * ```\n             */\n            thumb: {\n                width: 110,\n                height: 110,\n                quality: 70,\n                allowMagnify: true,\n                crop: true,\n                preserveHeaders: false,\n    \n                // 为空的话则保留原有图片格式。\n                // 否则强制转换成指定的类型。\n                // IE 8下面 base64 大小不能超过 32K 否则预览失败，而非 jpeg 编码的图片很可\n                // 能会超过 32k, 所以这里设置成预览的时候都是 image/jpeg\n                type: 'image/jpeg'\n            },\n    \n            /**\n             * @property {Object} [compress]\n             * @namespace options\n             * @for Uploader\n             * @description 配置压缩的图片的选项。如果此选项为`false`, 则图片在上传前不进行压缩。\n             *\n             * 默认为：\n             *\n             * ```javascript\n             * {\n             *     width: 1600,\n             *     height: 1600,\n             *\n             *     // 图片质量，只有type为`image/jpeg`的时候才有效。\n             *     quality: 90,\n             *\n             *     // 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.\n             *     allowMagnify: false,\n             *\n             *     // 是否允许裁剪。\n             *     crop: false,\n             *\n             *     // 是否保留头部meta信息。\n             *     preserveHeaders: true,\n             *\n             *     // 如果发现压缩后文件大小比原来还大，则使用原来图片\n             *     // 此属性可能会影响图片自动纠正功能\n             *     noCompressIfLarger: false,\n             *\n             *     // 单位字节，如果图片大小小于此值，不会采用压缩。\n             *     compressSize: 0\n             * }\n             * ```\n             */\n            compress: {\n                width: 1600,\n                height: 1600,\n                quality: 90,\n                allowMagnify: false,\n                crop: false,\n                preserveHeaders: true\n            }\n        });\n    \n        return Uploader.register({\n    \n            name: 'image',\n    \n    \n            /**\n             * 生成缩略图，此过程为异步，所以需要传入`callback`。\n             * 通常情况在图片加入队里后调用此方法来生成预览图以增强交互效果。\n             *\n             * 当 width 或者 height 的值介于 0 - 1 时，被当成百分比使用。\n             *\n             * `callback`中可以接收到两个参数。\n             * * 第一个为error，如果生成缩略图有错误，此error将为真。\n             * * 第二个为ret, 缩略图的Data URL值。\n             *\n             * **注意**\n             * Date URL在IE6/7中不支持，所以不用调用此方法了，直接显示一张暂不支持预览图片好了。\n             * 也可以借助服务端，将 base64 数据传给服务端，生成一个临时文件供预览。\n             *\n             * @method makeThumb\n             * @grammar makeThumb( file, callback ) => undefined\n             * @grammar makeThumb( file, callback, width, height ) => undefined\n             * @for Uploader\n             * @example\n             *\n             * uploader.on( 'fileQueued', function( file ) {\n             *     var $li = ...;\n             *\n             *     uploader.makeThumb( file, function( error, ret ) {\n             *         if ( error ) {\n             *             $li.text('预览错误');\n             *         } else {\n             *             $li.append('<img alt=\"\" src=\"' + ret + '\" />');\n             *         }\n             *     });\n             *\n             * });\n             */\n            makeThumb: function( file, cb, width, height ) {\n                var opts, image;\n    \n                file = this.request( 'get-file', file );\n    \n                // 只预览图片格式。\n                if ( !file.type.match( /^image/ ) ) {\n                    cb( true );\n                    return;\n                }\n    \n                opts = $.extend({}, this.options.thumb );\n    \n                // 如果传入的是object.\n                if ( $.isPlainObject( width ) ) {\n                    opts = $.extend( opts, width );\n                    width = null;\n                }\n    \n                width = width || opts.width;\n                height = height || opts.height;\n    \n                image = new Image( opts );\n    \n                image.once( 'load', function() {\n                    file._info = file._info || image.info();\n                    file._meta = file._meta || image.meta();\n    \n                    // 如果 width 的值介于 0 - 1\n                    // 说明设置的是百分比。\n                    if ( width <= 1 && width > 0 ) {\n                        width = file._info.width * width;\n                    }\n    \n                    // 同样的规则应用于 height\n                    if ( height <= 1 && height > 0 ) {\n                        height = file._info.height * height;\n                    }\n    \n                    image.resize( width, height );\n                });\n    \n                // 当 resize 完后\n                image.once( 'complete', function() {\n                    cb( false, image.getAsDataUrl( opts.type ) );\n                    image.destroy();\n                });\n    \n                image.once( 'error', function( reason ) {\n                    cb( reason || true );\n                    image.destroy();\n                });\n    \n                throttle( image, file.source.size, function() {\n                    file._info && image.info( file._info );\n                    file._meta && image.meta( file._meta );\n                    image.loadFromBlob( file.source );\n                });\n            },\n    \n            beforeSendFile: function( file ) {\n                var opts = this.options.compress || this.options.resize,\n                    compressSize = opts && opts.compressSize || 0,\n                    noCompressIfLarger = opts && opts.noCompressIfLarger || false,\n                    image, deferred;\n    \n                file = this.request( 'get-file', file );\n    \n                // 只压缩 jpeg 图片格式。\n                // gif 可能会丢失针\n                // bmp png 基本上尺寸都不大，且压缩比比较小。\n                if ( !opts || !~'image/jpeg,image/jpg'.indexOf( file.type ) ||\n                        file.size < compressSize ||\n                        file._compressed ) {\n                    return;\n                }\n    \n                opts = $.extend({}, opts );\n                deferred = Base.Deferred();\n    \n                image = new Image( opts );\n    \n                deferred.always(function() {\n                    image.destroy();\n                    image = null;\n                });\n                image.once( 'error', deferred.reject );\n                image.once( 'load', function() {\n                    var width = opts.width,\n                        height = opts.height;\n    \n                    file._info = file._info || image.info();\n                    file._meta = file._meta || image.meta();\n    \n                    // 如果 width 的值介于 0 - 1\n                    // 说明设置的是百分比。\n                    if ( width <= 1 && width > 0 ) {\n                        width = file._info.width * width;\n                    }\n    \n                    // 同样的规则应用于 height\n                    if ( height <= 1 && height > 0 ) {\n                        height = file._info.height * height;\n                    }\n    \n                    image.resize( width, height );\n                });\n    \n                image.once( 'complete', function() {\n                    var blob, size;\n    \n                    // 移动端 UC / qq 浏览器的无图模式下\n                    // ctx.getImageData 处理大图的时候会报 Exception\n                    // INDEX_SIZE_ERR: DOM Exception 1\n                    try {\n                        blob = image.getAsBlob( opts.type );\n    \n                        size = file.size;\n    \n                        // 如果压缩后，比原来还大则不用压缩后的。\n                        if ( !noCompressIfLarger || blob.size < size ) {\n                            // file.source.destroy && file.source.destroy();\n                            file.source = blob;\n                            file.size = blob.size;\n    \n                            file.trigger( 'resize', blob.size, size );\n                        }\n    \n                        // 标记，避免重复压缩。\n                        file._compressed = true;\n                        deferred.resolve();\n                    } catch ( e ) {\n                        // 出错了直接继续，让其上传原始图片\n                        deferred.resolve();\n                    }\n                });\n    \n                file._info && image.info( file._info );\n                file._meta && image.meta( file._meta );\n    \n                image.loadFromBlob( file.source );\n                return deferred.promise();\n            }\n        });\n    });\n    /**\n     * @fileOverview 文件属性封装\n     */\n    define('file',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            idPrefix = 'WU_FILE_',\n            idSuffix = 0,\n            rExt = /\\.([^.]+)$/,\n            statusMap = {};\n    \n        function gid() {\n            return idPrefix + idSuffix++;\n        }\n    \n        /**\n         * 文件类\n         * @class File\n         * @constructor 构造函数\n         * @grammar new File( source ) => File\n         * @param {Lib.File} source [lib.File](#Lib.File)实例, 此source对象是带有Runtime信息的。\n         */\n        function WUFile( source ) {\n    \n            /**\n             * 文件名，包括扩展名（后缀）\n             * @property name\n             * @type {string}\n             */\n            this.name = source.name || 'Untitled';\n    \n            /**\n             * 文件体积（字节）\n             * @property size\n             * @type {uint}\n             * @default 0\n             */\n            this.size = source.size || 0;\n    \n            /**\n             * 文件MIMETYPE类型，与文件类型的对应关系请参考[http://t.cn/z8ZnFny](http://t.cn/z8ZnFny)\n             * @property type\n             * @type {string}\n             * @default 'application/octet-stream'\n             */\n            this.type = source.type || 'application/octet-stream';\n    \n            /**\n             * 文件最后修改日期\n             * @property lastModifiedDate\n             * @type {int}\n             * @default 当前时间戳\n             */\n            this.lastModifiedDate = source.lastModifiedDate || (new Date() * 1);\n    \n            /**\n             * 文件ID，每个对象具有唯一ID，与文件名无关\n             * @property id\n             * @type {string}\n             */\n            this.id = gid();\n    \n            /**\n             * 文件扩展名，通过文件名获取，例如test.png的扩展名为png\n             * @property ext\n             * @type {string}\n             */\n            this.ext = rExt.exec( this.name ) ? RegExp.$1 : '';\n    \n    \n            /**\n             * 状态文字说明。在不同的status语境下有不同的用途。\n             * @property statusText\n             * @type {string}\n             */\n            this.statusText = '';\n    \n            // 存储文件状态，防止通过属性直接修改\n            statusMap[ this.id ] = WUFile.Status.INITED;\n    \n            this.source = source;\n            this.loaded = 0;\n    \n            this.on( 'error', function( msg ) {\n                this.setStatus( WUFile.Status.ERROR, msg );\n            });\n        }\n    \n        $.extend( WUFile.prototype, {\n    \n            /**\n             * 设置状态，状态变化时会触发`change`事件。\n             * @method setStatus\n             * @grammar setStatus( status[, statusText] );\n             * @param {File.Status|String} status [文件状态值](#WebUploader:File:File.Status)\n             * @param {String} [statusText=''] 状态说明，常在error时使用，用http, abort,server等来标记是由于什么原因导致文件错误。\n             */\n            setStatus: function( status, text ) {\n    \n                var prevStatus = statusMap[ this.id ];\n    \n                typeof text !== 'undefined' && (this.statusText = text);\n    \n                if ( status !== prevStatus ) {\n                    statusMap[ this.id ] = status;\n                    /**\n                     * 文件状态变化\n                     * @event statuschange\n                     */\n                    this.trigger( 'statuschange', status, prevStatus );\n                }\n    \n            },\n    \n            /**\n             * 获取文件状态\n             * @return {File.Status}\n             * @example\n                     文件状态具体包括以下几种类型：\n                     {\n                         // 初始化\n                        INITED:     0,\n                        // 已入队列\n                        QUEUED:     1,\n                        // 正在上传\n                        PROGRESS:     2,\n                        // 上传出错\n                        ERROR:         3,\n                        // 上传成功\n                        COMPLETE:     4,\n                        // 上传取消\n                        CANCELLED:     5\n                    }\n             */\n            getStatus: function() {\n                return statusMap[ this.id ];\n            },\n    \n            /**\n             * 获取文件原始信息。\n             * @return {*}\n             */\n            getSource: function() {\n                return this.source;\n            },\n    \n            destroy: function() {\n                this.off();\n                delete statusMap[ this.id ];\n            }\n        });\n    \n        Mediator.installTo( WUFile.prototype );\n    \n        /**\n         * 文件状态值，具体包括以下几种类型：\n         * * `inited` 初始状态\n         * * `queued` 已经进入队列, 等待上传\n         * * `progress` 上传中\n         * * `complete` 上传完成。\n         * * `error` 上传出错，可重试\n         * * `interrupt` 上传中断，可续传。\n         * * `invalid` 文件不合格，不能重试上传。会自动从队列中移除。\n         * * `cancelled` 文件被移除。\n         * @property {Object} Status\n         * @namespace File\n         * @class File\n         * @static\n         */\n        WUFile.Status = {\n            INITED:     'inited',    // 初始状态\n            QUEUED:     'queued',    // 已经进入队列, 等待上传\n            PROGRESS:   'progress',    // 上传中\n            ERROR:      'error',    // 上传出错，可重试\n            COMPLETE:   'complete',    // 上传完成。\n            CANCELLED:  'cancelled',    // 上传取消。\n            INTERRUPT:  'interrupt',    // 上传中断，可续传。\n            INVALID:    'invalid'    // 文件不合格，不能重试上传。\n        };\n    \n        return WUFile;\n    });\n    \n    /**\n     * @fileOverview 文件队列\n     */\n    define('queue',[\n        'base',\n        'mediator',\n        'file'\n    ], function( Base, Mediator, WUFile ) {\n    \n        var $ = Base.$,\n            STATUS = WUFile.Status;\n    \n        /**\n         * 文件队列, 用来存储各个状态中的文件。\n         * @class Queue\n         * @extends Mediator\n         */\n        function Queue() {\n    \n            /**\n             * 统计文件数。\n             * * `numOfQueue` 队列中的文件数。\n             * * `numOfSuccess` 上传成功的文件数\n             * * `numOfCancel` 被取消的文件数\n             * * `numOfProgress` 正在上传中的文件数\n             * * `numOfUploadFailed` 上传错误的文件数。\n             * * `numOfInvalid` 无效的文件数。\n             * * `numofDeleted` 被移除的文件数。\n             * @property {Object} stats\n             */\n            this.stats = {\n                numOfQueue: 0,\n                numOfSuccess: 0,\n                numOfCancel: 0,\n                numOfProgress: 0,\n                numOfUploadFailed: 0,\n                numOfInvalid: 0,\n                numofDeleted: 0,\n                numofInterrupt: 0\n            };\n    \n            // 上传队列，仅包括等待上传的文件\n            this._queue = [];\n    \n            // 存储所有文件\n            this._map = {};\n        }\n    \n        $.extend( Queue.prototype, {\n    \n            /**\n             * 将新文件加入对队列尾部\n             *\n             * @method append\n             * @param  {File} file   文件对象\n             */\n            append: function( file ) {\n                this._queue.push( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 将新文件加入对队列头部\n             *\n             * @method prepend\n             * @param  {File} file   文件对象\n             */\n            prepend: function( file ) {\n                this._queue.unshift( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 获取文件对象\n             *\n             * @method getFile\n             * @param  {String} fileId   文件ID\n             * @return {File}\n             */\n            getFile: function( fileId ) {\n                if ( typeof fileId !== 'string' ) {\n                    return fileId;\n                }\n                return this._map[ fileId ];\n            },\n    \n            /**\n             * 从队列中取出一个指定状态的文件。\n             * @grammar fetch( status ) => File\n             * @method fetch\n             * @param {String} status [文件状态值](#WebUploader:File:File.Status)\n             * @return {File} [File](#WebUploader:File)\n             */\n            fetch: function( status ) {\n                var len = this._queue.length,\n                    i, file;\n    \n                status = status || STATUS.QUEUED;\n    \n                for ( i = 0; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( status === file.getStatus() ) {\n                        return file;\n                    }\n                }\n    \n                return null;\n            },\n    \n            /**\n             * 对队列进行排序，能够控制文件上传顺序。\n             * @grammar sort( fn ) => undefined\n             * @method sort\n             * @param {Function} fn 排序方法\n             */\n            sort: function( fn ) {\n                if ( typeof fn === 'function' ) {\n                    this._queue.sort( fn );\n                }\n            },\n    \n            /**\n             * 获取指定类型的文件列表, 列表中每一个成员为[File](#WebUploader:File)对象。\n             * @grammar getFiles( [status1[, status2 ...]] ) => Array\n             * @method getFiles\n             * @param {String} [status] [文件状态值](#WebUploader:File:File.Status)\n             */\n            getFiles: function() {\n                var sts = [].slice.call( arguments, 0 ),\n                    ret = [],\n                    i = 0,\n                    len = this._queue.length,\n                    file;\n    \n                for ( ; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( sts.length && !~$.inArray( file.getStatus(), sts ) ) {\n                        continue;\n                    }\n    \n                    ret.push( file );\n                }\n    \n                return ret;\n            },\n    \n            /**\n             * 在队列中删除文件。\n             * @grammar removeFile( file ) => Array\n             * @method removeFile\n             * @param {File} 文件对象。\n             */\n            removeFile: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( existing ) {\n                    delete this._map[ file.id ];\n                    file.destroy();\n                    this.stats.numofDeleted++;\n                }\n            },\n    \n            _fileAdded: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( !existing ) {\n                    this._map[ file.id ] = file;\n    \n                    file.on( 'statuschange', function( cur, pre ) {\n                        me._onFileStatusChange( cur, pre );\n                    });\n                }\n            },\n    \n            _onFileStatusChange: function( curStatus, preStatus ) {\n                var stats = this.stats;\n    \n                switch ( preStatus ) {\n                    case STATUS.PROGRESS:\n                        stats.numOfProgress--;\n                        break;\n    \n                    case STATUS.QUEUED:\n                        stats.numOfQueue --;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed--;\n                        break;\n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid--;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt--;\n                        break;\n                }\n    \n                switch ( curStatus ) {\n                    case STATUS.QUEUED:\n                        stats.numOfQueue++;\n                        break;\n    \n                    case STATUS.PROGRESS:\n                        stats.numOfProgress++;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed++;\n                        break;\n    \n                    case STATUS.COMPLETE:\n                        stats.numOfSuccess++;\n                        break;\n    \n                    case STATUS.CANCELLED:\n                        stats.numOfCancel++;\n                        break;\n    \n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid++;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt++;\n                        break;\n                }\n            }\n    \n        });\n    \n        Mediator.installTo( Queue.prototype );\n    \n        return Queue;\n    });\n    /**\n     * @fileOverview 队列\n     */\n    define('widgets/queue',[\n        'base',\n        'uploader',\n        'queue',\n        'file',\n        'lib/file',\n        'runtime/client',\n        'widgets/widget'\n    ], function( Base, Uploader, Queue, WUFile, File, RuntimeClient ) {\n    \n        var $ = Base.$,\n            rExt = /\\.\\w+$/,\n            Status = WUFile.Status;\n    \n        return Uploader.register({\n            name: 'queue',\n    \n            init: function( opts ) {\n                var me = this,\n                    deferred, len, i, item, arr, accept, runtime;\n    \n                if ( $.isPlainObject( opts.accept ) ) {\n                    opts.accept = [ opts.accept ];\n                }\n    \n                // accept中的中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].extensions;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = '\\\\.' + arr.join(',')\n                                .replace( /,/g, '$|\\\\.' )\n                                .replace( /\\*/g, '.*' ) + '$';\n                    }\n    \n                    me.accept = new RegExp( accept, 'i' );\n                }\n    \n                me.queue = new Queue();\n                me.stats = me.queue.stats;\n    \n                // 如果当前不是html5运行时，那就算了。\n                // 不执行后续操作\n                if ( this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                // 创建一个 html5 运行时的 placeholder\n                // 以至于外部添加原生 File 对象的时候能正确包裹一下供 webuploader 使用。\n                deferred = Base.Deferred();\n                this.placeholder = runtime = new RuntimeClient('Placeholder');\n                runtime.connectRuntime({\n                    runtimeOrder: 'html5'\n                }, function() {\n                    me._ruid = runtime.getRuid();\n                    deferred.resolve();\n                });\n                return deferred.promise();\n            },\n    \n    \n            // 为了支持外部直接添加一个原生File对象。\n            _wrapFile: function( file ) {\n                if ( !(file instanceof WUFile) ) {\n    \n                    if ( !(file instanceof File) ) {\n                        if ( !this._ruid ) {\n                            throw new Error('Can\\'t add external files.');\n                        }\n                        file = new File( this._ruid, file );\n                    }\n    \n                    file = new WUFile( file );\n                }\n    \n                return file;\n            },\n    \n            // 判断文件是否可以被加入队列\n            acceptFile: function( file ) {\n                var invalid = !file || !file.size || this.accept &&\n    \n                        // 如果名字中有后缀，才做后缀白名单处理。\n                        rExt.exec( file.name ) && !this.accept.test( file.name );\n    \n                return !invalid;\n            },\n    \n    \n            /**\n             * @event beforeFileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列之前触发，此事件的handler返回值为`false`，则此文件不会被添加进入队列。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event fileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列以后触发。\n             * @for  Uploader\n             */\n    \n            _addFile: function( file ) {\n                var me = this;\n    \n                file = me._wrapFile( file );\n    \n                // 不过类型判断允许不允许，先派送 `beforeFileQueued`\n                if ( !me.owner.trigger( 'beforeFileQueued', file ) ) {\n                    return;\n                }\n    \n                // 类型不匹配，则派送错误事件，并返回。\n                if ( !me.acceptFile( file ) ) {\n                    me.owner.trigger( 'error', 'Q_TYPE_DENIED', file );\n                    return;\n                }\n    \n                me.queue.append( file );\n                me.owner.trigger( 'fileQueued', file );\n                return file;\n            },\n    \n            getFile: function( fileId ) {\n                return this.queue.getFile( fileId );\n            },\n    \n            /**\n             * @event filesQueued\n             * @param {File} files 数组，内容为原始File(lib/File）对象。\n             * @description 当一批文件添加进队列以后触发。\n             * @for  Uploader\n             */\n            \n            /**\n             * @property {Boolean} [auto=false]\n             * @namespace options\n             * @for Uploader\n             * @description 设置为 true 后，不需要手动调用上传，有文件选择即开始上传。\n             * \n             */\n    \n            /**\n             * @method addFiles\n             * @grammar addFiles( file ) => undefined\n             * @grammar addFiles( [file1, file2 ...] ) => undefined\n             * @param {Array of File or File} [files] Files 对象 数组\n             * @description 添加文件到队列\n             * @for  Uploader\n             */\n            addFile: function( files ) {\n                var me = this;\n    \n                if ( !files.length ) {\n                    files = [ files ];\n                }\n    \n                files = $.map( files, function( file ) {\n                    return me._addFile( file );\n                });\n    \n                me.owner.trigger( 'filesQueued', files );\n    \n                if ( me.options.auto ) {\n                    setTimeout(function() {\n                        me.request('start-upload');\n                    }, 20 );\n                }\n            },\n    \n            getStats: function() {\n                return this.stats;\n            },\n    \n            /**\n             * @event fileDequeued\n             * @param {File} file File对象\n             * @description 当文件被移除队列后触发。\n             * @for  Uploader\n             */\n    \n             /**\n             * @method removeFile\n             * @grammar removeFile( file ) => undefined\n             * @grammar removeFile( id ) => undefined\n             * @grammar removeFile( file, true ) => undefined\n             * @grammar removeFile( id, true ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 移除某一文件, 默认只会标记文件状态为已取消，如果第二个参数为 `true` 则会从 queue 中移除。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.removeFile( file );\n             * })\n             */\n            removeFile: function( file, remove ) {\n                var me = this;\n    \n                file = file.id ? file : me.queue.getFile( file );\n    \n                this.request( 'cancel-file', file );\n    \n                if ( remove ) {\n                    this.queue.removeFile( file );\n                }\n            },\n    \n            /**\n             * @method getFiles\n             * @grammar getFiles() => Array\n             * @grammar getFiles( status1, status2, status... ) => Array\n             * @description 返回指定状态的文件集合，不传参数将返回所有状态的文件。\n             * @for  Uploader\n             * @example\n             * console.log( uploader.getFiles() );    // => all files\n             * console.log( uploader.getFiles('error') )    // => all error files.\n             */\n            getFiles: function() {\n                return this.queue.getFiles.apply( this.queue, arguments );\n            },\n    \n            fetchFile: function() {\n                return this.queue.fetch.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @method retry\n             * @grammar retry() => undefined\n             * @grammar retry( file ) => undefined\n             * @description 重试上传，重试指定文件，或者从出错的文件开始重新上传。\n             * @for  Uploader\n             * @example\n             * function retry() {\n             *     uploader.retry();\n             * }\n             */\n            retry: function( file, noForceStart ) {\n                var me = this,\n                    files, i, len;\n    \n                if ( file ) {\n                    file = file.id ? file : me.queue.getFile( file );\n                    file.setStatus( Status.QUEUED );\n                    noForceStart || me.request('start-upload');\n                    return;\n                }\n    \n                files = me.queue.getFiles( Status.ERROR );\n                i = 0;\n                len = files.length;\n    \n                for ( ; i < len; i++ ) {\n                    file = files[ i ];\n                    file.setStatus( Status.QUEUED );\n                }\n    \n                me.request('start-upload');\n            },\n    \n            /**\n             * @method sort\n             * @grammar sort( fn ) => undefined\n             * @description 排序队列中的文件，在上传之前调整可以控制上传顺序。\n             * @for  Uploader\n             */\n            sortFiles: function() {\n                return this.queue.sort.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @event reset\n             * @description 当 uploader 被重置的时候触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @method reset\n             * @grammar reset() => undefined\n             * @description 重置uploader。目前只重置了队列。\n             * @for  Uploader\n             * @example\n             * uploader.reset();\n             */\n            reset: function() {\n                this.owner.trigger('reset');\n                this.queue = new Queue();\n                this.stats = this.queue.stats;\n            },\n    \n            destroy: function() {\n                this.reset();\n                this.placeholder && this.placeholder.destroy();\n            }\n        });\n    \n    });\n    /**\n     * @fileOverview 添加获取Runtime相关信息的方法。\n     */\n    define('widgets/runtime',[\n        'uploader',\n        'runtime/runtime',\n        'widgets/widget'\n    ], function( Uploader, Runtime ) {\n    \n        Uploader.support = function() {\n            return Runtime.hasRuntime.apply( Runtime, arguments );\n        };\n    \n        /**\n         * @property {Object} [runtimeOrder=html5,flash]\n         * @namespace options\n         * @for Uploader\n         * @description 指定运行时启动顺序。默认会想尝试 html5 是否支持，如果支持则使用 html5, 否则则使用 flash.\n         *\n         * 可以将此值设置成 `flash`，来强制使用 flash 运行时。\n         */\n    \n        return Uploader.register({\n            name: 'runtime',\n    \n            init: function() {\n                if ( !this.predictRuntimeType() ) {\n                    throw Error('Runtime Error');\n                }\n            },\n    \n            /**\n             * 预测Uploader将采用哪个`Runtime`\n             * @grammar predictRuntimeType() => String\n             * @method predictRuntimeType\n             * @for  Uploader\n             */\n            predictRuntimeType: function() {\n                var orders = this.options.runtimeOrder || Runtime.orders,\n                    type = this.type,\n                    i, len;\n    \n                if ( !type ) {\n                    orders = orders.split( /\\s*,\\s*/g );\n    \n                    for ( i = 0, len = orders.length; i < len; i++ ) {\n                        if ( Runtime.hasRuntime( orders[ i ] ) ) {\n                            this.type = type = orders[ i ];\n                            break;\n                        }\n                    }\n                }\n    \n                return type;\n            }\n        });\n    });\n    /**\n     * @fileOverview Transport\n     */\n    define('lib/transport',[\n        'base',\n        'runtime/client',\n        'mediator'\n    ], function( Base, RuntimeClient, Mediator ) {\n    \n        var $ = Base.$;\n    \n        function Transport( opts ) {\n            var me = this;\n    \n            opts = me.options = $.extend( true, {}, Transport.options, opts || {} );\n            RuntimeClient.call( this, 'Transport' );\n    \n            this._blob = null;\n            this._formData = opts.formData || {};\n            this._headers = opts.headers || {};\n    \n            this.on( 'progress', this._timeout );\n            this.on( 'load error', function() {\n                me.trigger( 'progress', 1 );\n                clearTimeout( me._timer );\n            });\n        }\n    \n        Transport.options = {\n            server: '',\n            method: 'POST',\n    \n            // 跨域时，是否允许携带cookie, 只有html5 runtime才有效\n            withCredentials: false,\n            fileVal: 'file',\n            timeout: 2 * 60 * 1000,    // 2分钟\n            formData: {},\n            headers: {},\n            sendAsBinary: false\n        };\n    \n        $.extend( Transport.prototype, {\n    \n            // 添加Blob, 只能添加一次，最后一次有效。\n            appendBlob: function( key, blob, filename ) {\n                var me = this,\n                    opts = me.options;\n    \n                if ( me.getRuid() ) {\n                    me.disconnectRuntime();\n                }\n    \n                // 连接到blob归属的同一个runtime.\n                me.connectRuntime( blob.ruid, function() {\n                    me.exec('init');\n                });\n    \n                me._blob = blob;\n                opts.fileVal = key || opts.fileVal;\n                opts.filename = filename || opts.filename;\n            },\n    \n            // 添加其他字段\n            append: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._formData, key );\n                } else {\n                    this._formData[ key ] = value;\n                }\n            },\n    \n            setRequestHeader: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._headers, key );\n                } else {\n                    this._headers[ key ] = value;\n                }\n            },\n    \n            send: function( method ) {\n                this.exec( 'send', method );\n                this._timeout();\n            },\n    \n            abort: function() {\n                clearTimeout( this._timer );\n                return this.exec('abort');\n            },\n    \n            destroy: function() {\n                this.trigger('destroy');\n                this.off();\n                this.exec('destroy');\n                this.disconnectRuntime();\n            },\n    \n            getResponse: function() {\n                return this.exec('getResponse');\n            },\n    \n            getResponseAsJson: function() {\n                return this.exec('getResponseAsJson');\n            },\n    \n            getStatus: function() {\n                return this.exec('getStatus');\n            },\n    \n            _timeout: function() {\n                var me = this,\n                    duration = me.options.timeout;\n    \n                if ( !duration ) {\n                    return;\n                }\n    \n                clearTimeout( me._timer );\n                me._timer = setTimeout(function() {\n                    me.abort();\n                    me.trigger( 'error', 'timeout' );\n                }, duration );\n            }\n    \n        });\n    \n        // 让Transport具备事件功能。\n        Mediator.installTo( Transport.prototype );\n    \n        return Transport;\n    });\n    /**\n     * @fileOverview 负责文件上传相关。\n     */\n    define('widgets/upload',[\n        'base',\n        'uploader',\n        'file',\n        'lib/transport',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile, Transport ) {\n    \n        var $ = Base.$,\n            isPromise = Base.isPromise,\n            Status = WUFile.Status;\n    \n        // 添加默认配置项\n        $.extend( Uploader.options, {\n    \n    \n            /**\n             * @property {Boolean} [prepareNextFile=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否允许在文件传输时提前把下一个文件准备好。\n             * 对于一个文件的准备工作比较耗时，比如图片压缩，md5序列化。\n             * 如果能提前在当前文件传输期处理，可以节省总体耗时。\n             */\n            prepareNextFile: false,\n    \n            /**\n             * @property {Boolean} [chunked=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否要分片处理大文件上传。\n             */\n            chunked: false,\n    \n            /**\n             * @property {Boolean} [chunkSize=5242880]\n             * @namespace options\n             * @for Uploader\n             * @description 如果要分片，分多大一片？ 默认大小为5M.\n             */\n            chunkSize: 5 * 1024 * 1024,\n    \n            /**\n             * @property {Boolean} [chunkRetry=2]\n             * @namespace options\n             * @for Uploader\n             * @description 如果某个分片由于网络问题出错，允许自动重传多少次？\n             */\n            chunkRetry: 2,\n    \n            /**\n             * @property {Boolean} [threads=3]\n             * @namespace options\n             * @for Uploader\n             * @description 上传并发数。允许同时最大上传进程数。\n             */\n            threads: 3,\n    \n    \n            /**\n             * @property {Object} [formData={}]\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传请求的参数表，每次发送都会发送此对象中的参数。\n             */\n            formData: {}\n    \n            /**\n             * @property {Object} [fileVal='file']\n             * @namespace options\n             * @for Uploader\n             * @description 设置文件上传域的name。\n             */\n    \n            /**\n             * @property {Object} [method='POST']\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传方式，`POST`或者`GET`。\n             */\n    \n            /**\n             * @property {Object} [sendAsBinary=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否已二进制的流的方式发送文件，这样整个上传内容`php://input`都为文件内容，\n             * 其他参数在$_GET数组中。\n             */\n        });\n    \n        // 负责将文件切片。\n        function CuteFile( file, chunkSize ) {\n            var pending = [],\n                blob = file.source,\n                total = blob.size,\n                chunks = chunkSize ? Math.ceil( total / chunkSize ) : 1,\n                start = 0,\n                index = 0,\n                len, api;\n    \n            api = {\n                file: file,\n    \n                has: function() {\n                    return !!pending.length;\n                },\n    \n                shift: function() {\n                    return pending.shift();\n                },\n    \n                unshift: function( block ) {\n                    pending.unshift( block );\n                }\n            };\n    \n            while ( index < chunks ) {\n                len = Math.min( chunkSize, total - start );\n    \n                pending.push({\n                    file: file,\n                    start: start,\n                    end: chunkSize ? (start + len) : total,\n                    total: total,\n                    chunks: chunks,\n                    chunk: index++,\n                    cuted: api\n                });\n                start += len;\n            }\n    \n            file.blocks = pending.concat();\n            file.remaning = pending.length;\n    \n            return api;\n        }\n    \n        Uploader.register({\n            name: 'upload',\n    \n            init: function() {\n                var owner = this.owner,\n                    me = this;\n    \n                this.runing = false;\n                this.progress = false;\n    \n                owner\n                    .on( 'startUpload', function() {\n                        me.progress = true;\n                    })\n                    .on( 'uploadFinished', function() {\n                        me.progress = false;\n                    });\n    \n                // 记录当前正在传的数据，跟threads相关\n                this.pool = [];\n    \n                // 缓存分好片的文件。\n                this.stack = [];\n    \n                // 缓存即将上传的文件。\n                this.pending = [];\n    \n                // 跟踪还有多少分片在上传中但是没有完成上传。\n                this.remaning = 0;\n                this.__tick = Base.bindFn( this._tick, this );\n    \n                owner.on( 'uploadComplete', function( file ) {\n    \n                    // 把其他块取消了。\n                    file.blocks && $.each( file.blocks, function( _, v ) {\n                        v.transport && (v.transport.abort(), v.transport.destroy());\n                        delete v.transport;\n                    });\n    \n                    delete file.blocks;\n                    delete file.remaning;\n                });\n            },\n    \n            reset: function() {\n                this.request( 'stop-upload', true );\n                this.runing = false;\n                this.pool = [];\n                this.stack = [];\n                this.pending = [];\n                this.remaning = 0;\n                this._trigged = false;\n                this._promise = null;\n            },\n    \n            /**\n             * @event startUpload\n             * @description 当开始上传流程时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 开始上传。此方法可以从初始状态调用开始上传流程，也可以从暂停状态调用，继续上传流程。\n             *\n             * 可以指定开始某一个文件。\n             * @grammar upload() => undefined\n             * @grammar upload( file | fileId) => undefined\n             * @method upload\n             * @for  Uploader\n             */\n            startUpload: function(file) {\n                var me = this;\n    \n                // 移出invalid的文件\n                $.each( me.request( 'get-files', Status.INVALID ), function() {\n                    me.request( 'remove-file', this );\n                });\n    \n                // 如果指定了开始某个文件，则只开始指定文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if (file.getStatus() === Status.INTERRUPT) {\n                        $.each( me.pool, function( _, v ) {\n    \n                            // 之前暂停过。\n                            if (v.file !== file) {\n                                return;\n                            }\n    \n                            v.transport && v.transport.send();\n                        });\n    \n                        file.setStatus( Status.QUEUED );\n                    } else if (file.getStatus() === Status.PROGRESS) {\n                        return;\n                    } else {\n                        file.setStatus( Status.QUEUED );\n                    }\n                } else {\n                    $.each( me.request( 'get-files', [ Status.INITED ] ), function() {\n                        this.setStatus( Status.QUEUED );\n                    });\n                }\n    \n                if ( me.runing ) {\n                    return;\n                }\n    \n                me.runing = true;\n    \n                var files = [];\n    \n                // 如果有暂停的，则续传\n                $.each( me.pool, function( _, v ) {\n                    var file = v.file;\n    \n                    if ( file.getStatus() === Status.INTERRUPT ) {\n                        files.push(file);\n                        me._trigged = false;\n                        v.transport && v.transport.send();\n                    }\n                });\n    \n                var file;\n                while ( (file = files.shift()) ) {\n                    file.setStatus( Status.PROGRESS );\n                }\n    \n                file || $.each( me.request( 'get-files',\n                        Status.INTERRUPT ), function() {\n                    this.setStatus( Status.PROGRESS );\n                });\n    \n                me._trigged = false;\n                Base.nextTick( me.__tick );\n                me.owner.trigger('startUpload');\n            },\n    \n            /**\n             * @event stopUpload\n             * @description 当开始上传流程暂停时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 暂停上传。第一个参数为是否中断上传当前正在上传的文件。\n             *\n             * 如果第一个参数是文件，则只暂停指定文件。\n             * @grammar stop() => undefined\n             * @grammar stop( true ) => undefined\n             * @grammar stop( file ) => undefined\n             * @method stop\n             * @for  Uploader\n             */\n            stopUpload: function( file, interrupt ) {\n                var me = this;\n    \n                if (file === true) {\n                    interrupt = file;\n                    file = null;\n                }\n    \n                if ( me.runing === false ) {\n                    return;\n                }\n    \n                // 如果只是暂停某个文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if ( file.getStatus() !== Status.PROGRESS &&\n                            file.getStatus() !== Status.QUEUED ) {\n                        return;\n                    }\n    \n                    file.setStatus( Status.INTERRUPT );\n                    $.each( me.pool, function( _, v ) {\n    \n                        // 只 abort 指定的文件。\n                        if (v.file !== file) {\n                            return;\n                        }\n    \n                        v.transport && v.transport.abort();\n                        me._putback(v);\n                        me._popBlock(v);\n                    });\n    \n                    return Base.nextTick( me.__tick );\n                }\n    \n                me.runing = false;\n    \n                if (this._promise && this._promise.file) {\n                    this._promise.file.setStatus( Status.INTERRUPT );\n                }\n    \n                interrupt && $.each( me.pool, function( _, v ) {\n                    v.transport && v.transport.abort();\n                    v.file.setStatus( Status.INTERRUPT );\n                });\n    \n                me.owner.trigger('stopUpload');\n            },\n    \n            /**\n             * @method cancelFile\n             * @grammar cancelFile( file ) => undefined\n             * @grammar cancelFile( id ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 标记文件状态为已取消, 同时将中断文件传输。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.cancelFile( file );\n             * })\n             */\n            cancelFile: function( file ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                file.setStatus( Status.CANCELLED );\n                this.owner.trigger( 'fileDequeued', file );\n            },\n    \n            /**\n             * 判断`Uplaode`r是否正在上传中。\n             * @grammar isInProgress() => Boolean\n             * @method isInProgress\n             * @for  Uploader\n             */\n            isInProgress: function() {\n                return !!this.progress;\n            },\n    \n            _getStats: function() {\n                return this.request('get-stats');\n            },\n    \n            /**\n             * 掉过一个文件上传，直接标记指定文件为已上传状态。\n             * @grammar skipFile( file ) => undefined\n             * @method skipFile\n             * @for  Uploader\n             */\n            skipFile: function( file, status ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                file.setStatus( status || Status.COMPLETE );\n                file.skipped = true;\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                this.owner.trigger( 'uploadSkip', file );\n            },\n    \n            /**\n             * @event uploadFinished\n             * @description 当所有文件上传结束时触发。\n             * @for  Uploader\n             */\n            _tick: function() {\n                var me = this,\n                    opts = me.options,\n                    fn, val;\n    \n                // 上一个promise还没有结束，则等待完成后再执行。\n                if ( me._promise ) {\n                    return me._promise.always( me.__tick );\n                }\n    \n                // 还有位置，且还有文件要处理的话。\n                if ( me.pool.length < opts.threads && (val = me._nextBlock()) ) {\n                    me._trigged = false;\n    \n                    fn = function( val ) {\n                        me._promise = null;\n    \n                        // 有可能是reject过来的，所以要检测val的类型。\n                        val && val.file && me._startSend( val );\n                        Base.nextTick( me.__tick );\n                    };\n    \n                    me._promise = isPromise( val ) ? val.always( fn ) : fn( val );\n    \n                // 没有要上传的了，且没有正在传输的了。\n                } else if ( !me.remaning && !me._getStats().numOfQueue &&\n                    !me._getStats().numofInterrupt ) {\n                    me.runing = false;\n    \n                    me._trigged || Base.nextTick(function() {\n                        me.owner.trigger('uploadFinished');\n                    });\n                    me._trigged = true;\n                }\n            },\n    \n            _putback: function(block) {\n                var idx;\n    \n                block.cuted.unshift(block);\n                idx = this.stack.indexOf(block.cuted);\n    \n                if (!~idx) {\n                    this.stack.unshift(block.cuted);\n                }\n            },\n    \n            _getStack: function() {\n                var i = 0,\n                    act;\n    \n                while ( (act = this.stack[ i++ ]) ) {\n                    if ( act.has() && act.file.getStatus() === Status.PROGRESS ) {\n                        return act;\n                    } else if (!act.has() ||\n                            act.file.getStatus() !== Status.PROGRESS &&\n                            act.file.getStatus() !== Status.INTERRUPT ) {\n    \n                        // 把已经处理完了的，或者，状态为非 progress（上传中）、\n                        // interupt（暂停中） 的移除。\n                        this.stack.splice( --i, 1 );\n                    }\n                }\n    \n                return null;\n            },\n    \n            _nextBlock: function() {\n                var me = this,\n                    opts = me.options,\n                    act, next, done, preparing;\n    \n                // 如果当前文件还有没有需要传输的，则直接返回剩下的。\n                if ( (act = this._getStack()) ) {\n    \n                    // 是否提前准备下一个文件\n                    if ( opts.prepareNextFile && !me.pending.length ) {\n                        me._prepareNextFile();\n                    }\n    \n                    return act.shift();\n    \n                // 否则，如果正在运行，则准备下一个文件，并等待完成后返回下个分片。\n                } else if ( me.runing ) {\n    \n                    // 如果缓存中有，则直接在缓存中取，没有则去queue中取。\n                    if ( !me.pending.length && me._getStats().numOfQueue ) {\n                        me._prepareNextFile();\n                    }\n    \n                    next = me.pending.shift();\n                    done = function( file ) {\n                        if ( !file ) {\n                            return null;\n                        }\n    \n                        act = CuteFile( file, opts.chunked ? opts.chunkSize : 0 );\n                        me.stack.push(act);\n                        return act.shift();\n                    };\n    \n                    // 文件可能还在prepare中，也有可能已经完全准备好了。\n                    if ( isPromise( next) ) {\n                        preparing = next.file;\n                        next = next[ next.pipe ? 'pipe' : 'then' ]( done );\n                        next.file = preparing;\n                        return next;\n                    }\n    \n                    return done( next );\n                }\n            },\n    \n    \n            /**\n             * @event uploadStart\n             * @param {File} file File对象\n             * @description 某个文件开始上传前触发，一个文件只会触发一次。\n             * @for  Uploader\n             */\n            _prepareNextFile: function() {\n                var me = this,\n                    file = me.request('fetch-file'),\n                    pending = me.pending,\n                    promise;\n    \n                if ( file ) {\n                    promise = me.request( 'before-send-file', file, function() {\n    \n                        // 有可能文件被skip掉了。文件被skip掉后，状态坑定不是Queued.\n                        if ( file.getStatus() === Status.PROGRESS ||\n                            file.getStatus() === Status.INTERRUPT ) {\n                            return file;\n                        }\n    \n                        return me._finishFile( file );\n                    });\n    \n                    me.owner.trigger( 'uploadStart', file );\n                    file.setStatus( Status.PROGRESS );\n    \n                    promise.file = file;\n    \n                    // 如果还在pending中，则替换成文件本身。\n                    promise.done(function() {\n                        var idx = $.inArray( promise, pending );\n    \n                        ~idx && pending.splice( idx, 1, file );\n                    });\n    \n                    // befeore-send-file的钩子就有错误发生。\n                    promise.fail(function( reason ) {\n                        file.setStatus( Status.ERROR, reason );\n                        me.owner.trigger( 'uploadError', file, reason );\n                        me.owner.trigger( 'uploadComplete', file );\n                    });\n    \n                    pending.push( promise );\n                }\n            },\n    \n            // 让出位置了，可以让其他分片开始上传\n            _popBlock: function( block ) {\n                var idx = $.inArray( block, this.pool );\n    \n                this.pool.splice( idx, 1 );\n                block.file.remaning--;\n                this.remaning--;\n            },\n    \n            // 开始上传，可以被掉过。如果promise被reject了，则表示跳过此分片。\n            _startSend: function( block ) {\n                var me = this,\n                    file = block.file,\n                    promise;\n    \n                // 有可能在 before-send-file 的 promise 期间改变了文件状态。\n                // 如：暂停，取消\n                // 我们不能中断 promise, 但是可以在 promise 完后，不做上传操作。\n                if ( file.getStatus() !== Status.PROGRESS ) {\n    \n                    // 如果是中断，则还需要放回去。\n                    if (file.getStatus() === Status.INTERRUPT) {\n                        me._putback(block);\n                    }\n    \n                    return;\n                }\n    \n                me.pool.push( block );\n                me.remaning++;\n    \n                // 如果没有分片，则直接使用原始的。\n                // 不会丢失content-type信息。\n                block.blob = block.chunks === 1 ? file.source :\n                        file.source.slice( block.start, block.end );\n    \n                // hook, 每个分片发送之前可能要做些异步的事情。\n                promise = me.request( 'before-send', block, function() {\n    \n                    // 有可能文件已经上传出错了，所以不需要再传输了。\n                    if ( file.getStatus() === Status.PROGRESS ) {\n                        me._doSend( block );\n                    } else {\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n    \n                // 如果为fail了，则跳过此分片。\n                promise.fail(function() {\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file ).always(function() {\n                            block.percentage = 1;\n                            me._popBlock( block );\n                            me.owner.trigger( 'uploadComplete', file );\n                            Base.nextTick( me.__tick );\n                        });\n                    } else {\n                        block.percentage = 1;\n                        me.updateFileProgress( file );\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n            },\n    \n    \n            /**\n             * @event uploadBeforeSend\n             * @param {Object} object\n             * @param {Object} data 默认的上传参数，可以扩展此对象来控制上传参数。\n             * @param {Object} headers 可以扩展此对象来控制上传头部。\n             * @description 当某个文件的分块在发送前触发，主要用来询问是否要添加附带参数，大文件在开起分片上传的前提下此事件可能会触发多次。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadAccept\n             * @param {Object} object\n             * @param {Object} ret 服务端的返回数据，json格式，如果服务端不是json格式，从ret._raw中取数据，自行解析。\n             * @description 当某个文件上传到服务端响应后，会派送此事件来询问服务端响应是否有效。如果此事件handler返回值为`false`, 则此文件将派送`server`类型的`uploadError`事件。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadProgress\n             * @param {File} file File对象\n             * @param {Number} percentage 上传进度\n             * @description 上传过程中触发，携带上传进度。\n             * @for  Uploader\n             */\n    \n    \n            /**\n             * @event uploadError\n             * @param {File} file File对象\n             * @param {String} reason 出错的code\n             * @description 当文件上传出错时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadSuccess\n             * @param {File} file File对象\n             * @param {Object} response 服务端返回的数据\n             * @description 当文件上传成功时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadComplete\n             * @param {File} [file] File对象\n             * @description 不管成功或者失败，文件上传完成时触发。\n             * @for  Uploader\n             */\n    \n            // 做上传操作。\n            _doSend: function( block ) {\n                var me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    file = block.file,\n                    tr = new Transport( opts ),\n                    data = $.extend({}, opts.formData ),\n                    headers = $.extend({}, opts.headers ),\n                    requestAccept, ret;\n    \n                block.transport = tr;\n    \n                tr.on( 'destroy', function() {\n                    delete block.transport;\n                    me._popBlock( block );\n                    Base.nextTick( me.__tick );\n                });\n    \n                // 广播上传进度。以文件为单位。\n                tr.on( 'progress', function( percentage ) {\n                    block.percentage = percentage;\n                    me.updateFileProgress( file );\n                });\n    \n                // 用来询问，是否返回的结果是有错误的。\n                requestAccept = function( reject ) {\n                    var fn;\n    \n                    ret = tr.getResponseAsJson() || {};\n                    ret._raw = tr.getResponse();\n                    fn = function( value ) {\n                        reject = value;\n                    };\n    \n                    // 服务端响应了，不代表成功了，询问是否响应正确。\n                    if ( !owner.trigger( 'uploadAccept', block, ret, fn ) ) {\n                        reject = reject || 'server';\n                    }\n    \n                    return reject;\n                };\n    \n                // 尝试重试，然后广播文件上传出错。\n                tr.on( 'error', function( type, flag ) {\n                    block.retried = block.retried || 0;\n    \n                    // 自动重试\n                    if ( block.chunks > 1 && ~'http,abort'.indexOf( type ) &&\n                            block.retried < opts.chunkRetry ) {\n    \n                        block.retried++;\n                        tr.send();\n    \n                    } else {\n    \n                        // http status 500 ~ 600\n                        if ( !flag && type === 'server' ) {\n                            type = requestAccept( type );\n                        }\n    \n                        file.setStatus( Status.ERROR, type );\n                        owner.trigger( 'uploadError', file, type );\n                        owner.trigger( 'uploadComplete', file );\n                    }\n                });\n    \n                // 上传成功\n                tr.on( 'load', function() {\n                    var reason;\n    \n                    // 如果非预期，转向上传出错。\n                    if ( (reason = requestAccept()) ) {\n                        tr.trigger( 'error', reason, true );\n                        return;\n                    }\n    \n                    // 全部上传完成。\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file, ret );\n                    } else {\n                        tr.destroy();\n                    }\n                });\n    \n                // 配置默认的上传字段。\n                data = $.extend( data, {\n                    id: file.id,\n                    name: file.name,\n                    type: file.type,\n                    lastModifiedDate: file.lastModifiedDate,\n                    size: file.size\n                });\n    \n                block.chunks > 1 && $.extend( data, {\n                    chunks: block.chunks,\n                    chunk: block.chunk\n                });\n    \n                // 在发送之间可以添加字段什么的。。。\n                // 如果默认的字段不够使用，可以通过监听此事件来扩展\n                owner.trigger( 'uploadBeforeSend', block, data, headers );\n    \n                // 开始发送。\n                tr.appendBlob( opts.fileVal, block.blob, file.name );\n                tr.append( data );\n                tr.setRequestHeader( headers );\n                tr.send();\n            },\n    \n            // 完成上传。\n            _finishFile: function( file, ret, hds ) {\n                var owner = this.owner;\n    \n                return owner\n                        .request( 'after-send-file', arguments, function() {\n                            file.setStatus( Status.COMPLETE );\n                            owner.trigger( 'uploadSuccess', file, ret, hds );\n                        })\n                        .fail(function( reason ) {\n    \n                            // 如果外部已经标记为invalid什么的，不再改状态。\n                            if ( file.getStatus() === Status.PROGRESS ) {\n                                file.setStatus( Status.ERROR, reason );\n                            }\n    \n                            owner.trigger( 'uploadError', file, reason );\n                        })\n                        .always(function() {\n                            owner.trigger( 'uploadComplete', file );\n                        });\n            },\n    \n            updateFileProgress: function(file) {\n                var totalPercent = 0,\n                    uploaded = 0;\n    \n                if (!file.blocks) {\n                    return;\n                }\n    \n                $.each( file.blocks, function( _, v ) {\n                    uploaded += (v.percentage || 0) * (v.end - v.start);\n                });\n    \n                totalPercent = uploaded / file.size;\n                this.owner.trigger( 'uploadProgress', file, totalPercent || 0 );\n            }\n    \n        });\n    });\n    /**\n     * @fileOverview 各种验证，包括文件总大小是否超出、单文件是否超出和文件是否重复。\n     */\n    \n    define('widgets/validator',[\n        'base',\n        'uploader',\n        'file',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile ) {\n    \n        var $ = Base.$,\n            validators = {},\n            api;\n    \n        /**\n         * @event error\n         * @param {String} type 错误类型。\n         * @description 当validate不通过时，会以派送错误事件的形式通知调用者。通过`upload.on('error', handler)`可以捕获到此类错误，目前有以下错误会在特定的情况下派送错来。\n         *\n         * * `Q_EXCEED_NUM_LIMIT` 在设置了`fileNumLimit`且尝试给`uploader`添加的文件数量超出这个值时派送。\n         * * `Q_EXCEED_SIZE_LIMIT` 在设置了`Q_EXCEED_SIZE_LIMIT`且尝试给`uploader`添加的文件总大小超出这个值时派送。\n         * * `Q_TYPE_DENIED` 当文件类型不满足时触发。。\n         * @for  Uploader\n         */\n    \n        // 暴露给外面的api\n        api = {\n    \n            // 添加验证器\n            addValidator: function( type, cb ) {\n                validators[ type ] = cb;\n            },\n    \n            // 移除验证器\n            removeValidator: function( type ) {\n                delete validators[ type ];\n            }\n        };\n    \n        // 在Uploader初始化的时候启动Validators的初始化\n        Uploader.register({\n            name: 'validator',\n    \n            init: function() {\n                var me = this;\n                Base.nextTick(function() {\n                    $.each( validators, function() {\n                        this.call( me.owner );\n                    });\n                });\n            }\n        });\n    \n        /**\n         * @property {int} [fileNumLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总数量, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileNumLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                count = 0,\n                max = parseInt( opts.fileNumLimit, 10 ),\n                flag = true;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n    \n                if ( count >= max && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_NUM_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return count >= max ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function() {\n                count++;\n            });\n    \n            uploader.on( 'fileDequeued', function() {\n                count--;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n    \n        /**\n         * @property {int} [fileSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                count = 0,\n                max = parseInt( opts.fileSizeLimit, 10 ),\n                flag = true;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var invalid = count + file.size > max;\n    \n                if ( invalid && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_SIZE_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return invalid ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                count += file.size;\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                count -= file.size;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n        /**\n         * @property {int} [fileSingleSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证单个文件大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSingleSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                max = opts.fileSingleSizeLimit;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n    \n                if ( file.size > max ) {\n                    file.setStatus( WUFile.Status.INVALID, 'exceed_size' );\n                    this.trigger( 'error', 'F_EXCEED_SIZE', max, file );\n                    return false;\n                }\n    \n            });\n    \n        });\n    \n        /**\n         * @property {Boolean} [duplicate=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 去重， 根据文件名字、文件大小和最后修改时间来生成hash Key.\n         */\n        api.addValidator( 'duplicate', function() {\n            var uploader = this,\n                opts = uploader.options,\n                mapping = {};\n    \n            if ( opts.duplicate ) {\n                return;\n            }\n    \n            function hashString( str ) {\n                var hash = 0,\n                    i = 0,\n                    len = str.length,\n                    _char;\n    \n                for ( ; i < len; i++ ) {\n                    _char = str.charCodeAt( i );\n                    hash = _char + (hash << 6) + (hash << 16) - hash;\n                }\n    \n                return hash;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var hash = file.__hash || (file.__hash = hashString( file.name +\n                        file.size + file.lastModifiedDate ));\n    \n                // 已经重复了\n                if ( mapping[ hash ] ) {\n                    this.trigger( 'error', 'F_DUPLICATE', file );\n                    return false;\n                }\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (mapping[ hash ] = true);\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (delete mapping[ hash ]);\n            });\n    \n            uploader.on( 'reset', function() {\n                mapping = {};\n            });\n        });\n    \n        return api;\n    });\n    \n    /**\n     * @fileOverview Md5\n     */\n    define('lib/md5',[\n        'runtime/client',\n        'mediator'\n    ], function( RuntimeClient, Mediator ) {\n    \n        function Md5() {\n            RuntimeClient.call( this, 'Md5' );\n        }\n    \n        // 让 Md5 具备事件功能。\n        Mediator.installTo( Md5.prototype );\n    \n        Md5.prototype.loadFromBlob = function( blob ) {\n            var me = this;\n    \n            if ( me.getRuid() ) {\n                me.disconnectRuntime();\n            }\n    \n            // 连接到blob归属的同一个runtime.\n            me.connectRuntime( blob.ruid, function() {\n                me.exec('init');\n                me.exec( 'loadFromBlob', blob );\n            });\n        };\n    \n        Md5.prototype.getResult = function() {\n            return this.exec('getResult');\n        };\n    \n        return Md5;\n    });\n    /**\n     * @fileOverview 图片操作, 负责预览图片和上传前压缩图片\n     */\n    define('widgets/md5',[\n        'base',\n        'uploader',\n        'lib/md5',\n        'lib/blob',\n        'widgets/widget'\n    ], function( Base, Uploader, Md5, Blob ) {\n    \n        return Uploader.register({\n            name: 'md5',\n    \n    \n            /**\n             * 计算文件 md5 值，返回一个 promise 对象，可以监听 progress 进度。\n             *\n             *\n             * @method md5File\n             * @grammar md5File( file[, start[, end]] ) => promise\n             * @for Uploader\n             * @example\n             *\n             * uploader.on( 'fileQueued', function( file ) {\n             *     var $li = ...;\n             *\n             *     uploader.md5File( file )\n             *\n             *         // 及时显示进度\n             *         .progress(function(percentage) {\n             *             console.log('Percentage:', percentage);\n             *         })\n             *\n             *         // 完成\n             *         .then(function(val) {\n             *             console.log('md5 result:', val);\n             *         });\n             *\n             * });\n             */\n            md5File: function( file, start, end ) {\n                var md5 = new Md5(),\n                    deferred = Base.Deferred(),\n                    blob = (file instanceof Blob) ? file :\n                        this.request( 'get-file', file ).source;\n    \n                md5.on( 'progress load', function( e ) {\n                    e = e || {};\n                    deferred.notify( e.total ? e.loaded / e.total : 1 );\n                });\n    \n                md5.on( 'complete', function() {\n                    deferred.resolve( md5.getResult() );\n                });\n    \n                md5.on( 'error', function( reason ) {\n                    deferred.reject( reason );\n                });\n    \n                if ( arguments.length > 1 ) {\n                    start = start || 0;\n                    end = end || 0;\n                    start < 0 && (start = blob.size + start);\n                    end < 0 && (end = blob.size + end);\n                    end = Math.min( end, blob.size );\n                    blob = blob.slice( start, end );\n                }\n    \n                md5.loadFromBlob( blob );\n    \n                return deferred.promise();\n            }\n        });\n    });\n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/compbase',[],function() {\n    \n        function CompBase( owner, runtime ) {\n    \n            this.owner = owner;\n            this.options = owner.options;\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.getRuid = function() {\n                return runtime.uid;\n            };\n    \n            this.trigger = function() {\n                return owner.trigger.apply( owner, arguments );\n            };\n        }\n    \n        return CompBase;\n    });\n    /**\n     * @fileOverview Html5Runtime\n     */\n    define('runtime/html5/runtime',[\n        'base',\n        'runtime/runtime',\n        'runtime/compbase'\n    ], function( Base, Runtime, CompBase ) {\n    \n        var type = 'html5',\n            components = {};\n    \n        function Html5Runtime() {\n            var pool = {},\n                me = this,\n                destroy = this.destroy;\n    \n            Runtime.apply( me, arguments );\n            me.type = type;\n    \n    \n            // 这个方法的调用者，实际上是RuntimeClient\n            me.exec = function( comp, fn/*, args...*/) {\n                var client = this,\n                    uid = client.uid,\n                    args = Base.slice( arguments, 2 ),\n                    instance;\n    \n                if ( components[ comp ] ) {\n                    instance = pool[ uid ] = pool[ uid ] ||\n                            new components[ comp ]( client, me );\n    \n                    if ( instance[ fn ] ) {\n                        return instance[ fn ].apply( instance, args );\n                    }\n                }\n            };\n    \n            me.destroy = function() {\n                // @todo 删除池子中的所有实例\n                return destroy && destroy.apply( this, arguments );\n            };\n        }\n    \n        Base.inherits( Runtime, {\n            constructor: Html5Runtime,\n    \n            // 不需要连接其他程序，直接执行callback\n            init: function() {\n                var me = this;\n                setTimeout(function() {\n                    me.trigger('ready');\n                }, 1 );\n            }\n    \n        });\n    \n        // 注册Components\n        Html5Runtime.register = function( name, component ) {\n            var klass = components[ name ] = Base.inherits( CompBase, component );\n            return klass;\n        };\n    \n        // 注册html5运行时。\n        // 只有在支持的前提下注册。\n        if ( window.Blob && window.FileReader && window.DataView ) {\n            Runtime.addRuntime( type, Html5Runtime );\n        }\n    \n        return Html5Runtime;\n    });\n    /**\n     * @fileOverview Blob Html实现\n     */\n    define('runtime/html5/blob',[\n        'runtime/html5/runtime',\n        'lib/blob'\n    ], function( Html5Runtime, Blob ) {\n    \n        return Html5Runtime.register( 'Blob', {\n            slice: function( start, end ) {\n                var blob = this.owner.source,\n                    slice = blob.slice || blob.webkitSlice || blob.mozSlice;\n    \n                blob = slice.call( blob, start, end );\n    \n                return new Blob( this.getRuid(), blob );\n            }\n        });\n    });\n    /**\n     * @fileOverview FilePaste\n     */\n    define('runtime/html5/dnd',[\n        'base',\n        'runtime/html5/runtime',\n        'lib/file'\n    ], function( Base, Html5Runtime, File ) {\n    \n        var $ = Base.$,\n            prefix = 'webuploader-dnd-';\n    \n        return Html5Runtime.register( 'DragAndDrop', {\n            init: function() {\n                var elem = this.elem = this.options.container;\n    \n                this.dragEnterHandler = Base.bindFn( this._dragEnterHandler, this );\n                this.dragOverHandler = Base.bindFn( this._dragOverHandler, this );\n                this.dragLeaveHandler = Base.bindFn( this._dragLeaveHandler, this );\n                this.dropHandler = Base.bindFn( this._dropHandler, this );\n                this.dndOver = false;\n    \n                elem.on( 'dragenter', this.dragEnterHandler );\n                elem.on( 'dragover', this.dragOverHandler );\n                elem.on( 'dragleave', this.dragLeaveHandler );\n                elem.on( 'drop', this.dropHandler );\n    \n                if ( this.options.disableGlobalDnd ) {\n                    $( document ).on( 'dragover', this.dragOverHandler );\n                    $( document ).on( 'drop', this.dropHandler );\n                }\n            },\n    \n            _dragEnterHandler: function( e ) {\n                var me = this,\n                    denied = me._denied || false,\n                    items;\n    \n                e = e.originalEvent || e;\n    \n                if ( !me.dndOver ) {\n                    me.dndOver = true;\n    \n                    // 注意只有 chrome 支持。\n                    items = e.dataTransfer.items;\n    \n                    if ( items && items.length ) {\n                        me._denied = denied = !me.trigger( 'accept', items );\n                    }\n    \n                    me.elem.addClass( prefix + 'over' );\n                    me.elem[ denied ? 'addClass' :\n                            'removeClass' ]( prefix + 'denied' );\n                }\n    \n                e.dataTransfer.dropEffect = denied ? 'none' : 'copy';\n    \n                return false;\n            },\n    \n            _dragOverHandler: function( e ) {\n                // 只处理框内的。\n                var parentElem = this.elem.parent().get( 0 );\n                if ( parentElem && !$.contains( parentElem, e.currentTarget ) ) {\n                    return false;\n                }\n    \n                clearTimeout( this._leaveTimer );\n                this._dragEnterHandler.call( this, e );\n    \n                return false;\n            },\n    \n            _dragLeaveHandler: function() {\n                var me = this,\n                    handler;\n    \n                handler = function() {\n                    me.dndOver = false;\n                    me.elem.removeClass( prefix + 'over ' + prefix + 'denied' );\n                };\n    \n                clearTimeout( me._leaveTimer );\n                me._leaveTimer = setTimeout( handler, 100 );\n                return false;\n            },\n    \n            _dropHandler: function( e ) {\n                var me = this,\n                    ruid = me.getRuid(),\n                    parentElem = me.elem.parent().get( 0 ),\n                    dataTransfer, data;\n    \n                // 只处理框内的。\n                if ( parentElem && !$.contains( parentElem, e.currentTarget ) ) {\n                    return false;\n                }\n    \n                e = e.originalEvent || e;\n                dataTransfer = e.dataTransfer;\n    \n                // 如果是页面内拖拽，还不能处理，不阻止事件。\n                // 此处 ie11 下会报参数错误，\n                try {\n                    data = dataTransfer.getData('text/html');\n                } catch( err ) {\n                }\n    \n                if ( data ) {\n                    return;\n                }\n    \n                me._getTansferFiles( dataTransfer, function( results ) {\n                    me.trigger( 'drop', $.map( results, function( file ) {\n                        return new File( ruid, file );\n                    }) );\n                });\n    \n                me.dndOver = false;\n                me.elem.removeClass( prefix + 'over' );\n                return false;\n            },\n    \n            // 如果传入 callback 则去查看文件夹，否则只管当前文件夹。\n            _getTansferFiles: function( dataTransfer, callback ) {\n                var results  = [],\n                    promises = [],\n                    items, files, file, item, i, len, canAccessFolder;\n    \n                items = dataTransfer.items;\n                files = dataTransfer.files;\n    \n                canAccessFolder = !!(items && items[ 0 ].webkitGetAsEntry);\n    \n                for ( i = 0, len = files.length; i < len; i++ ) {\n                    file = files[ i ];\n                    item = items && items[ i ];\n    \n                    if ( canAccessFolder && item.webkitGetAsEntry().isDirectory ) {\n    \n                        promises.push( this._traverseDirectoryTree(\n                                item.webkitGetAsEntry(), results ) );\n                    } else {\n                        results.push( file );\n                    }\n                }\n    \n                Base.when.apply( Base, promises ).done(function() {\n    \n                    if ( !results.length ) {\n                        return;\n                    }\n    \n                    callback( results );\n                });\n            },\n    \n            _traverseDirectoryTree: function( entry, results ) {\n                var deferred = Base.Deferred(),\n                    me = this;\n    \n                if ( entry.isFile ) {\n                    entry.file(function( file ) {\n                        results.push( file );\n                        deferred.resolve();\n                    });\n                } else if ( entry.isDirectory ) {\n                    entry.createReader().readEntries(function( entries ) {\n                        var len = entries.length,\n                            promises = [],\n                            arr = [],    // 为了保证顺序。\n                            i;\n    \n                        for ( i = 0; i < len; i++ ) {\n                            promises.push( me._traverseDirectoryTree(\n                                    entries[ i ], arr ) );\n                        }\n    \n                        Base.when.apply( Base, promises ).then(function() {\n                            results.push.apply( results, arr );\n                            deferred.resolve();\n                        }, deferred.reject );\n                    });\n                }\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                var elem = this.elem;\n    \n                // 还没 init 就调用 destroy\n                if (!elem) {\n                    return;\n                }\n                \n                elem.off( 'dragenter', this.dragEnterHandler );\n                elem.off( 'dragover', this.dragOverHandler );\n                elem.off( 'dragleave', this.dragLeaveHandler );\n                elem.off( 'drop', this.dropHandler );\n    \n                if ( this.options.disableGlobalDnd ) {\n                    $( document ).off( 'dragover', this.dragOverHandler );\n                    $( document ).off( 'drop', this.dropHandler );\n                }\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview FilePaste\n     */\n    define('runtime/html5/filepaste',[\n        'base',\n        'runtime/html5/runtime',\n        'lib/file'\n    ], function( Base, Html5Runtime, File ) {\n    \n        return Html5Runtime.register( 'FilePaste', {\n            init: function() {\n                var opts = this.options,\n                    elem = this.elem = opts.container,\n                    accept = '.*',\n                    arr, i, len, item;\n    \n                // accetp的mimeTypes中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].mimeTypes;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = arr.join(',');\n                        accept = accept.replace( /,/g, '|' ).replace( /\\*/g, '.*' );\n                    }\n                }\n                this.accept = accept = new RegExp( accept, 'i' );\n                this.hander = Base.bindFn( this._pasteHander, this );\n                elem.on( 'paste', this.hander );\n            },\n    \n            _pasteHander: function( e ) {\n                var allowed = [],\n                    ruid = this.getRuid(),\n                    items, item, blob, i, len;\n    \n                e = e.originalEvent || e;\n                items = e.clipboardData.items;\n    \n                for ( i = 0, len = items.length; i < len; i++ ) {\n                    item = items[ i ];\n    \n                    if ( item.kind !== 'file' || !(blob = item.getAsFile()) ) {\n                        continue;\n                    }\n    \n                    allowed.push( new File( ruid, blob ) );\n                }\n    \n                if ( allowed.length ) {\n                    // 不阻止非文件粘贴（文字粘贴）的事件冒泡\n                    e.preventDefault();\n                    e.stopPropagation();\n                    this.trigger( 'paste', allowed );\n                }\n            },\n    \n            destroy: function() {\n                this.elem.off( 'paste', this.hander );\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview FilePicker\n     */\n    define('runtime/html5/filepicker',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var $ = Base.$;\n    \n        return Html5Runtime.register( 'FilePicker', {\n            init: function() {\n                var container = this.getRuntime().getContainer(),\n                    me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    label = this.label = $( document.createElement('label') ),\n                    input =  this.input = $( document.createElement('input') ),\n                    arr, i, len, mouseHandler;\n    \n                input.attr( 'type', 'file' );\n                input.attr( 'name', opts.name );\n                input.addClass('webuploader-element-invisible');\n    \n                label.on( 'click', function() {\n                    input.trigger('click');\n                });\n    \n                label.css({\n                    opacity: 0,\n                    width: '100%',\n                    height: '100%',\n                    display: 'block',\n                    cursor: 'pointer',\n                    background: '#ffffff'\n                });\n    \n                if ( opts.multiple ) {\n                    input.attr( 'multiple', 'multiple' );\n                }\n    \n                // @todo Firefox不支持单独指定后缀\n                if ( opts.accept && opts.accept.length > 0 ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        arr.push( opts.accept[ i ].mimeTypes );\n                    }\n    \n                    input.attr( 'accept', arr.join(',') );\n                }\n    \n                container.append( input );\n                container.append( label );\n    \n                mouseHandler = function( e ) {\n                    owner.trigger( e.type );\n                };\n    \n                input.on( 'change', function( e ) {\n                    var fn = arguments.callee,\n                        clone;\n    \n                    me.files = e.target.files;\n    \n                    // reset input\n                    clone = this.cloneNode( true );\n                    clone.value = null;\n                    this.parentNode.replaceChild( clone, this );\n    \n                    input.off();\n                    input = $( clone ).on( 'change', fn )\n                            .on( 'mouseenter mouseleave', mouseHandler );\n    \n                    owner.trigger('change');\n                });\n    \n                label.on( 'mouseenter mouseleave', mouseHandler );\n    \n            },\n    \n    \n            getFiles: function() {\n                return this.files;\n            },\n    \n            destroy: function() {\n                this.input.off();\n                this.label.off();\n            }\n        });\n    });\n    /**\n     * Terms:\n     *\n     * Uint8Array, FileReader, BlobBuilder, atob, ArrayBuffer\n     * @fileOverview Image控件\n     */\n    define('runtime/html5/util',[\n        'base'\n    ], function( Base ) {\n    \n        var urlAPI = window.createObjectURL && window ||\n                window.URL && URL.revokeObjectURL && URL ||\n                window.webkitURL,\n            createObjectURL = Base.noop,\n            revokeObjectURL = createObjectURL;\n    \n        if ( urlAPI ) {\n    \n            // 更安全的方式调用，比如android里面就能把context改成其他的对象。\n            createObjectURL = function() {\n                return urlAPI.createObjectURL.apply( urlAPI, arguments );\n            };\n    \n            revokeObjectURL = function() {\n                return urlAPI.revokeObjectURL.apply( urlAPI, arguments );\n            };\n        }\n    \n        return {\n            createObjectURL: createObjectURL,\n            revokeObjectURL: revokeObjectURL,\n    \n            dataURL2Blob: function( dataURI ) {\n                var byteStr, intArray, ab, i, mimetype, parts;\n    \n                parts = dataURI.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    byteStr = atob( parts[ 1 ] );\n                } else {\n                    byteStr = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                ab = new ArrayBuffer( byteStr.length );\n                intArray = new Uint8Array( ab );\n    \n                for ( i = 0; i < byteStr.length; i++ ) {\n                    intArray[ i ] = byteStr.charCodeAt( i );\n                }\n    \n                mimetype = parts[ 0 ].split(':')[ 1 ].split(';')[ 0 ];\n    \n                return this.arrayBufferToBlob( ab, mimetype );\n            },\n    \n            dataURL2ArrayBuffer: function( dataURI ) {\n                var byteStr, intArray, i, parts;\n    \n                parts = dataURI.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    byteStr = atob( parts[ 1 ] );\n                } else {\n                    byteStr = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                intArray = new Uint8Array( byteStr.length );\n    \n                for ( i = 0; i < byteStr.length; i++ ) {\n                    intArray[ i ] = byteStr.charCodeAt( i );\n                }\n    \n                return intArray.buffer;\n            },\n    \n            arrayBufferToBlob: function( buffer, type ) {\n                var builder = window.BlobBuilder || window.WebKitBlobBuilder,\n                    bb;\n    \n                // android不支持直接new Blob, 只能借助blobbuilder.\n                if ( builder ) {\n                    bb = new builder();\n                    bb.append( buffer );\n                    return bb.getBlob( type );\n                }\n    \n                return new Blob([ buffer ], type ? { type: type } : {} );\n            },\n    \n            // 抽出来主要是为了解决android下面canvas.toDataUrl不支持jpeg.\n            // 你得到的结果是png.\n            canvasToDataUrl: function( canvas, type, quality ) {\n                return canvas.toDataURL( type, quality / 100 );\n            },\n    \n            // imagemeat会复写这个方法，如果用户选择加载那个文件了的话。\n            parseMeta: function( blob, callback ) {\n                callback( false, {});\n            },\n    \n            // imagemeat会复写这个方法，如果用户选择加载那个文件了的话。\n            updateImageHead: function( data ) {\n                return data;\n            }\n        };\n    });\n    /**\n     * Terms:\n     *\n     * Uint8Array, FileReader, BlobBuilder, atob, ArrayBuffer\n     * @fileOverview Image控件\n     */\n    define('runtime/html5/imagemeta',[\n        'runtime/html5/util'\n    ], function( Util ) {\n    \n        var api;\n    \n        api = {\n            parsers: {\n                0xffe1: []\n            },\n    \n            maxMetaDataSize: 262144,\n    \n            parse: function( blob, cb ) {\n                var me = this,\n                    fr = new FileReader();\n    \n                fr.onload = function() {\n                    cb( false, me._parse( this.result ) );\n                    fr = fr.onload = fr.onerror = null;\n                };\n    \n                fr.onerror = function( e ) {\n                    cb( e.message );\n                    fr = fr.onload = fr.onerror = null;\n                };\n    \n                blob = blob.slice( 0, me.maxMetaDataSize );\n                fr.readAsArrayBuffer( blob.getSource() );\n            },\n    \n            _parse: function( buffer, noParse ) {\n                if ( buffer.byteLength < 6 ) {\n                    return;\n                }\n    \n                var dataview = new DataView( buffer ),\n                    offset = 2,\n                    maxOffset = dataview.byteLength - 4,\n                    headLength = offset,\n                    ret = {},\n                    markerBytes, markerLength, parsers, i;\n    \n                if ( dataview.getUint16( 0 ) === 0xffd8 ) {\n    \n                    while ( offset < maxOffset ) {\n                        markerBytes = dataview.getUint16( offset );\n    \n                        if ( markerBytes >= 0xffe0 && markerBytes <= 0xffef ||\n                                markerBytes === 0xfffe ) {\n    \n                            markerLength = dataview.getUint16( offset + 2 ) + 2;\n    \n                            if ( offset + markerLength > dataview.byteLength ) {\n                                break;\n                            }\n    \n                            parsers = api.parsers[ markerBytes ];\n    \n                            if ( !noParse && parsers ) {\n                                for ( i = 0; i < parsers.length; i += 1 ) {\n                                    parsers[ i ].call( api, dataview, offset,\n                                            markerLength, ret );\n                                }\n                            }\n    \n                            offset += markerLength;\n                            headLength = offset;\n                        } else {\n                            break;\n                        }\n                    }\n    \n                    if ( headLength > 6 ) {\n                        if ( buffer.slice ) {\n                            ret.imageHead = buffer.slice( 2, headLength );\n                        } else {\n                            // Workaround for IE10, which does not yet\n                            // support ArrayBuffer.slice:\n                            ret.imageHead = new Uint8Array( buffer )\n                                    .subarray( 2, headLength );\n                        }\n                    }\n                }\n    \n                return ret;\n            },\n    \n            updateImageHead: function( buffer, head ) {\n                var data = this._parse( buffer, true ),\n                    buf1, buf2, bodyoffset;\n    \n    \n                bodyoffset = 2;\n                if ( data.imageHead ) {\n                    bodyoffset = 2 + data.imageHead.byteLength;\n                }\n    \n                if ( buffer.slice ) {\n                    buf2 = buffer.slice( bodyoffset );\n                } else {\n                    buf2 = new Uint8Array( buffer ).subarray( bodyoffset );\n                }\n    \n                buf1 = new Uint8Array( head.byteLength + 2 + buf2.byteLength );\n    \n                buf1[ 0 ] = 0xFF;\n                buf1[ 1 ] = 0xD8;\n                buf1.set( new Uint8Array( head ), 2 );\n                buf1.set( new Uint8Array( buf2 ), head.byteLength + 2 );\n    \n                return buf1.buffer;\n            }\n        };\n    \n        Util.parseMeta = function() {\n            return api.parse.apply( api, arguments );\n        };\n    \n        Util.updateImageHead = function() {\n            return api.updateImageHead.apply( api, arguments );\n        };\n    \n        return api;\n    });\n    /**\n     * 代码来自于：https://github.com/blueimp/JavaScript-Load-Image\n     * 暂时项目中只用了orientation.\n     *\n     * 去除了 Exif Sub IFD Pointer, GPS Info IFD Pointer, Exif Thumbnail.\n     * @fileOverview EXIF解析\n     */\n    \n    // Sample\n    // ====================================\n    // Make : Apple\n    // Model : iPhone 4S\n    // Orientation : 1\n    // XResolution : 72 [72/1]\n    // YResolution : 72 [72/1]\n    // ResolutionUnit : 2\n    // Software : QuickTime 7.7.1\n    // DateTime : 2013:09:01 22:53:55\n    // ExifIFDPointer : 190\n    // ExposureTime : 0.058823529411764705 [1/17]\n    // FNumber : 2.4 [12/5]\n    // ExposureProgram : Normal program\n    // ISOSpeedRatings : 800\n    // ExifVersion : 0220\n    // DateTimeOriginal : 2013:09:01 22:52:51\n    // DateTimeDigitized : 2013:09:01 22:52:51\n    // ComponentsConfiguration : YCbCr\n    // ShutterSpeedValue : 4.058893515764426\n    // ApertureValue : 2.5260688216892597 [4845/1918]\n    // BrightnessValue : -0.3126686601998395\n    // MeteringMode : Pattern\n    // Flash : Flash did not fire, compulsory flash mode\n    // FocalLength : 4.28 [107/25]\n    // SubjectArea : [4 values]\n    // FlashpixVersion : 0100\n    // ColorSpace : 1\n    // PixelXDimension : 2448\n    // PixelYDimension : 3264\n    // SensingMethod : One-chip color area sensor\n    // ExposureMode : 0\n    // WhiteBalance : Auto white balance\n    // FocalLengthIn35mmFilm : 35\n    // SceneCaptureType : Standard\n    define('runtime/html5/imagemeta/exif',[\n        'base',\n        'runtime/html5/imagemeta'\n    ], function( Base, ImageMeta ) {\n    \n        var EXIF = {};\n    \n        EXIF.ExifMap = function() {\n            return this;\n        };\n    \n        EXIF.ExifMap.prototype.map = {\n            'Orientation': 0x0112\n        };\n    \n        EXIF.ExifMap.prototype.get = function( id ) {\n            return this[ id ] || this[ this.map[ id ] ];\n        };\n    \n        EXIF.exifTagTypes = {\n            // byte, 8-bit unsigned int:\n            1: {\n                getValue: function( dataView, dataOffset ) {\n                    return dataView.getUint8( dataOffset );\n                },\n                size: 1\n            },\n    \n            // ascii, 8-bit byte:\n            2: {\n                getValue: function( dataView, dataOffset ) {\n                    return String.fromCharCode( dataView.getUint8( dataOffset ) );\n                },\n                size: 1,\n                ascii: true\n            },\n    \n            // short, 16 bit int:\n            3: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint16( dataOffset, littleEndian );\n                },\n                size: 2\n            },\n    \n            // long, 32 bit int:\n            4: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint32( dataOffset, littleEndian );\n                },\n                size: 4\n            },\n    \n            // rational = two long values,\n            // first is numerator, second is denominator:\n            5: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getUint32( dataOffset, littleEndian ) /\n                        dataView.getUint32( dataOffset + 4, littleEndian );\n                },\n                size: 8\n            },\n    \n            // slong, 32 bit signed int:\n            9: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getInt32( dataOffset, littleEndian );\n                },\n                size: 4\n            },\n    \n            // srational, two slongs, first is numerator, second is denominator:\n            10: {\n                getValue: function( dataView, dataOffset, littleEndian ) {\n                    return dataView.getInt32( dataOffset, littleEndian ) /\n                        dataView.getInt32( dataOffset + 4, littleEndian );\n                },\n                size: 8\n            }\n        };\n    \n        // undefined, 8-bit byte, value depending on field:\n        EXIF.exifTagTypes[ 7 ] = EXIF.exifTagTypes[ 1 ];\n    \n        EXIF.getExifValue = function( dataView, tiffOffset, offset, type, length,\n                littleEndian ) {\n    \n            var tagType = EXIF.exifTagTypes[ type ],\n                tagSize, dataOffset, values, i, str, c;\n    \n            if ( !tagType ) {\n                Base.log('Invalid Exif data: Invalid tag type.');\n                return;\n            }\n    \n            tagSize = tagType.size * length;\n    \n            // Determine if the value is contained in the dataOffset bytes,\n            // or if the value at the dataOffset is a pointer to the actual data:\n            dataOffset = tagSize > 4 ? tiffOffset + dataView.getUint32( offset + 8,\n                    littleEndian ) : (offset + 8);\n    \n            if ( dataOffset + tagSize > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid data offset.');\n                return;\n            }\n    \n            if ( length === 1 ) {\n                return tagType.getValue( dataView, dataOffset, littleEndian );\n            }\n    \n            values = [];\n    \n            for ( i = 0; i < length; i += 1 ) {\n                values[ i ] = tagType.getValue( dataView,\n                        dataOffset + i * tagType.size, littleEndian );\n            }\n    \n            if ( tagType.ascii ) {\n                str = '';\n    \n                // Concatenate the chars:\n                for ( i = 0; i < values.length; i += 1 ) {\n                    c = values[ i ];\n    \n                    // Ignore the terminating NULL byte(s):\n                    if ( c === '\\u0000' ) {\n                        break;\n                    }\n                    str += c;\n                }\n    \n                return str;\n            }\n            return values;\n        };\n    \n        EXIF.parseExifTag = function( dataView, tiffOffset, offset, littleEndian,\n                data ) {\n    \n            var tag = dataView.getUint16( offset, littleEndian );\n            data.exif[ tag ] = EXIF.getExifValue( dataView, tiffOffset, offset,\n                    dataView.getUint16( offset + 2, littleEndian ),    // tag type\n                    dataView.getUint32( offset + 4, littleEndian ),    // tag length\n                    littleEndian );\n        };\n    \n        EXIF.parseExifTags = function( dataView, tiffOffset, dirOffset,\n                littleEndian, data ) {\n    \n            var tagsNumber, dirEndOffset, i;\n    \n            if ( dirOffset + 6 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid directory offset.');\n                return;\n            }\n    \n            tagsNumber = dataView.getUint16( dirOffset, littleEndian );\n            dirEndOffset = dirOffset + 2 + 12 * tagsNumber;\n    \n            if ( dirEndOffset + 4 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid directory size.');\n                return;\n            }\n    \n            for ( i = 0; i < tagsNumber; i += 1 ) {\n                this.parseExifTag( dataView, tiffOffset,\n                        dirOffset + 2 + 12 * i,    // tag offset\n                        littleEndian, data );\n            }\n    \n            // Return the offset to the next directory:\n            return dataView.getUint32( dirEndOffset, littleEndian );\n        };\n    \n        // EXIF.getExifThumbnail = function(dataView, offset, length) {\n        //     var hexData,\n        //         i,\n        //         b;\n        //     if (!length || offset + length > dataView.byteLength) {\n        //         Base.log('Invalid Exif data: Invalid thumbnail data.');\n        //         return;\n        //     }\n        //     hexData = [];\n        //     for (i = 0; i < length; i += 1) {\n        //         b = dataView.getUint8(offset + i);\n        //         hexData.push((b < 16 ? '0' : '') + b.toString(16));\n        //     }\n        //     return 'data:image/jpeg,%' + hexData.join('%');\n        // };\n    \n        EXIF.parseExifData = function( dataView, offset, length, data ) {\n    \n            var tiffOffset = offset + 10,\n                littleEndian, dirOffset;\n    \n            // Check for the ASCII code for \"Exif\" (0x45786966):\n            if ( dataView.getUint32( offset + 4 ) !== 0x45786966 ) {\n                // No Exif data, might be XMP data instead\n                return;\n            }\n            if ( tiffOffset + 8 > dataView.byteLength ) {\n                Base.log('Invalid Exif data: Invalid segment size.');\n                return;\n            }\n    \n            // Check for the two null bytes:\n            if ( dataView.getUint16( offset + 8 ) !== 0x0000 ) {\n                Base.log('Invalid Exif data: Missing byte alignment offset.');\n                return;\n            }\n    \n            // Check the byte alignment:\n            switch ( dataView.getUint16( tiffOffset ) ) {\n                case 0x4949:\n                    littleEndian = true;\n                    break;\n    \n                case 0x4D4D:\n                    littleEndian = false;\n                    break;\n    \n                default:\n                    Base.log('Invalid Exif data: Invalid byte alignment marker.');\n                    return;\n            }\n    \n            // Check for the TIFF tag marker (0x002A):\n            if ( dataView.getUint16( tiffOffset + 2, littleEndian ) !== 0x002A ) {\n                Base.log('Invalid Exif data: Missing TIFF marker.');\n                return;\n            }\n    \n            // Retrieve the directory offset bytes, usually 0x00000008 or 8 decimal:\n            dirOffset = dataView.getUint32( tiffOffset + 4, littleEndian );\n            // Create the exif object to store the tags:\n            data.exif = new EXIF.ExifMap();\n            // Parse the tags of the main image directory and retrieve the\n            // offset to the next directory, usually the thumbnail directory:\n            dirOffset = EXIF.parseExifTags( dataView, tiffOffset,\n                    tiffOffset + dirOffset, littleEndian, data );\n    \n            // 尝试读取缩略图\n            // if ( dirOffset ) {\n            //     thumbnailData = {exif: {}};\n            //     dirOffset = EXIF.parseExifTags(\n            //         dataView,\n            //         tiffOffset,\n            //         tiffOffset + dirOffset,\n            //         littleEndian,\n            //         thumbnailData\n            //     );\n    \n            //     // Check for JPEG Thumbnail offset:\n            //     if (thumbnailData.exif[0x0201]) {\n            //         data.exif.Thumbnail = EXIF.getExifThumbnail(\n            //             dataView,\n            //             tiffOffset + thumbnailData.exif[0x0201],\n            //             thumbnailData.exif[0x0202] // Thumbnail data length\n            //         );\n            //     }\n            // }\n        };\n    \n        ImageMeta.parsers[ 0xffe1 ].push( EXIF.parseExifData );\n        return EXIF;\n    });\n    /**\n     * 这个方式性能不行，但是可以解决android里面的toDataUrl的bug\n     * android里面toDataUrl('image/jpege')得到的结果却是png.\n     *\n     * 所以这里没辙，只能借助这个工具\n     * @fileOverview jpeg encoder\n     */\n    define('runtime/html5/jpegencoder',[], function( require, exports, module ) {\n    \n        /*\n          Copyright (c) 2008, Adobe Systems Incorporated\n          All rights reserved.\n    \n          Redistribution and use in source and binary forms, with or without\n          modification, are permitted provided that the following conditions are\n          met:\n    \n          * Redistributions of source code must retain the above copyright notice,\n            this list of conditions and the following disclaimer.\n    \n          * Redistributions in binary form must reproduce the above copyright\n            notice, this list of conditions and the following disclaimer in the\n            documentation and/or other materials provided with the distribution.\n    \n          * Neither the name of Adobe Systems Incorporated nor the names of its\n            contributors may be used to endorse or promote products derived from\n            this software without specific prior written permission.\n    \n          THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n          IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n          THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n          PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n          CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n          EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n          PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n          PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n          LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n          NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n          SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n        */\n        /*\n        JPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009\n    \n        Basic GUI blocking jpeg encoder\n        */\n    \n        function JPEGEncoder(quality) {\n          var self = this;\n            var fround = Math.round;\n            var ffloor = Math.floor;\n            var YTable = new Array(64);\n            var UVTable = new Array(64);\n            var fdtbl_Y = new Array(64);\n            var fdtbl_UV = new Array(64);\n            var YDC_HT;\n            var UVDC_HT;\n            var YAC_HT;\n            var UVAC_HT;\n    \n            var bitcode = new Array(65535);\n            var category = new Array(65535);\n            var outputfDCTQuant = new Array(64);\n            var DU = new Array(64);\n            var byteout = [];\n            var bytenew = 0;\n            var bytepos = 7;\n    \n            var YDU = new Array(64);\n            var UDU = new Array(64);\n            var VDU = new Array(64);\n            var clt = new Array(256);\n            var RGB_YUV_TABLE = new Array(2048);\n            var currentQuality;\n    \n            var ZigZag = [\n                     0, 1, 5, 6,14,15,27,28,\n                     2, 4, 7,13,16,26,29,42,\n                     3, 8,12,17,25,30,41,43,\n                     9,11,18,24,31,40,44,53,\n                    10,19,23,32,39,45,52,54,\n                    20,22,33,38,46,51,55,60,\n                    21,34,37,47,50,56,59,61,\n                    35,36,48,49,57,58,62,63\n                ];\n    \n            var std_dc_luminance_nrcodes = [0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0];\n            var std_dc_luminance_values = [0,1,2,3,4,5,6,7,8,9,10,11];\n            var std_ac_luminance_nrcodes = [0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d];\n            var std_ac_luminance_values = [\n                    0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,\n                    0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,\n                    0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,\n                    0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,\n                    0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,\n                    0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,\n                    0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,\n                    0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,\n                    0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,\n                    0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,\n                    0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,\n                    0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,\n                    0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,\n                    0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,\n                    0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,\n                    0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,\n                    0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,\n                    0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,\n                    0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,\n                    0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,\n                    0xf9,0xfa\n                ];\n    \n            var std_dc_chrominance_nrcodes = [0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0];\n            var std_dc_chrominance_values = [0,1,2,3,4,5,6,7,8,9,10,11];\n            var std_ac_chrominance_nrcodes = [0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77];\n            var std_ac_chrominance_values = [\n                    0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,\n                    0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,\n                    0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,\n                    0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,\n                    0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,\n                    0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,\n                    0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,\n                    0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,\n                    0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,\n                    0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,\n                    0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,\n                    0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,\n                    0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,\n                    0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,\n                    0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,\n                    0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,\n                    0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,\n                    0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,\n                    0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,\n                    0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,\n                    0xf9,0xfa\n                ];\n    \n            function initQuantTables(sf){\n                    var YQT = [\n                        16, 11, 10, 16, 24, 40, 51, 61,\n                        12, 12, 14, 19, 26, 58, 60, 55,\n                        14, 13, 16, 24, 40, 57, 69, 56,\n                        14, 17, 22, 29, 51, 87, 80, 62,\n                        18, 22, 37, 56, 68,109,103, 77,\n                        24, 35, 55, 64, 81,104,113, 92,\n                        49, 64, 78, 87,103,121,120,101,\n                        72, 92, 95, 98,112,100,103, 99\n                    ];\n    \n                    for (var i = 0; i < 64; i++) {\n                        var t = ffloor((YQT[i]*sf+50)/100);\n                        if (t < 1) {\n                            t = 1;\n                        } else if (t > 255) {\n                            t = 255;\n                        }\n                        YTable[ZigZag[i]] = t;\n                    }\n                    var UVQT = [\n                        17, 18, 24, 47, 99, 99, 99, 99,\n                        18, 21, 26, 66, 99, 99, 99, 99,\n                        24, 26, 56, 99, 99, 99, 99, 99,\n                        47, 66, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99,\n                        99, 99, 99, 99, 99, 99, 99, 99\n                    ];\n                    for (var j = 0; j < 64; j++) {\n                        var u = ffloor((UVQT[j]*sf+50)/100);\n                        if (u < 1) {\n                            u = 1;\n                        } else if (u > 255) {\n                            u = 255;\n                        }\n                        UVTable[ZigZag[j]] = u;\n                    }\n                    var aasf = [\n                        1.0, 1.387039845, 1.306562965, 1.175875602,\n                        1.0, 0.785694958, 0.541196100, 0.275899379\n                    ];\n                    var k = 0;\n                    for (var row = 0; row < 8; row++)\n                    {\n                        for (var col = 0; col < 8; col++)\n                        {\n                            fdtbl_Y[k]  = (1.0 / (YTable [ZigZag[k]] * aasf[row] * aasf[col] * 8.0));\n                            fdtbl_UV[k] = (1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0));\n                            k++;\n                        }\n                    }\n                }\n    \n                function computeHuffmanTbl(nrcodes, std_table){\n                    var codevalue = 0;\n                    var pos_in_table = 0;\n                    var HT = new Array();\n                    for (var k = 1; k <= 16; k++) {\n                        for (var j = 1; j <= nrcodes[k]; j++) {\n                            HT[std_table[pos_in_table]] = [];\n                            HT[std_table[pos_in_table]][0] = codevalue;\n                            HT[std_table[pos_in_table]][1] = k;\n                            pos_in_table++;\n                            codevalue++;\n                        }\n                        codevalue*=2;\n                    }\n                    return HT;\n                }\n    \n                function initHuffmanTbl()\n                {\n                    YDC_HT = computeHuffmanTbl(std_dc_luminance_nrcodes,std_dc_luminance_values);\n                    UVDC_HT = computeHuffmanTbl(std_dc_chrominance_nrcodes,std_dc_chrominance_values);\n                    YAC_HT = computeHuffmanTbl(std_ac_luminance_nrcodes,std_ac_luminance_values);\n                    UVAC_HT = computeHuffmanTbl(std_ac_chrominance_nrcodes,std_ac_chrominance_values);\n                }\n    \n                function initCategoryNumber()\n                {\n                    var nrlower = 1;\n                    var nrupper = 2;\n                    for (var cat = 1; cat <= 15; cat++) {\n                        //Positive numbers\n                        for (var nr = nrlower; nr<nrupper; nr++) {\n                            category[32767+nr] = cat;\n                            bitcode[32767+nr] = [];\n                            bitcode[32767+nr][1] = cat;\n                            bitcode[32767+nr][0] = nr;\n                        }\n                        //Negative numbers\n                        for (var nrneg =-(nrupper-1); nrneg<=-nrlower; nrneg++) {\n                            category[32767+nrneg] = cat;\n                            bitcode[32767+nrneg] = [];\n                            bitcode[32767+nrneg][1] = cat;\n                            bitcode[32767+nrneg][0] = nrupper-1+nrneg;\n                        }\n                        nrlower <<= 1;\n                        nrupper <<= 1;\n                    }\n                }\n    \n                function initRGBYUVTable() {\n                    for(var i = 0; i < 256;i++) {\n                        RGB_YUV_TABLE[i]            =  19595 * i;\n                        RGB_YUV_TABLE[(i+ 256)>>0]  =  38470 * i;\n                        RGB_YUV_TABLE[(i+ 512)>>0]  =   7471 * i + 0x8000;\n                        RGB_YUV_TABLE[(i+ 768)>>0]  = -11059 * i;\n                        RGB_YUV_TABLE[(i+1024)>>0]  = -21709 * i;\n                        RGB_YUV_TABLE[(i+1280)>>0]  =  32768 * i + 0x807FFF;\n                        RGB_YUV_TABLE[(i+1536)>>0]  = -27439 * i;\n                        RGB_YUV_TABLE[(i+1792)>>0]  = - 5329 * i;\n                    }\n                }\n    \n                // IO functions\n                function writeBits(bs)\n                {\n                    var value = bs[0];\n                    var posval = bs[1]-1;\n                    while ( posval >= 0 ) {\n                        if (value & (1 << posval) ) {\n                            bytenew |= (1 << bytepos);\n                        }\n                        posval--;\n                        bytepos--;\n                        if (bytepos < 0) {\n                            if (bytenew == 0xFF) {\n                                writeByte(0xFF);\n                                writeByte(0);\n                            }\n                            else {\n                                writeByte(bytenew);\n                            }\n                            bytepos=7;\n                            bytenew=0;\n                        }\n                    }\n                }\n    \n                function writeByte(value)\n                {\n                    byteout.push(clt[value]); // write char directly instead of converting later\n                }\n    \n                function writeWord(value)\n                {\n                    writeByte((value>>8)&0xFF);\n                    writeByte((value   )&0xFF);\n                }\n    \n                // DCT & quantization core\n                function fDCTQuant(data, fdtbl)\n                {\n                    var d0, d1, d2, d3, d4, d5, d6, d7;\n                    /* Pass 1: process rows. */\n                    var dataOff=0;\n                    var i;\n                    var I8 = 8;\n                    var I64 = 64;\n                    for (i=0; i<I8; ++i)\n                    {\n                        d0 = data[dataOff];\n                        d1 = data[dataOff+1];\n                        d2 = data[dataOff+2];\n                        d3 = data[dataOff+3];\n                        d4 = data[dataOff+4];\n                        d5 = data[dataOff+5];\n                        d6 = data[dataOff+6];\n                        d7 = data[dataOff+7];\n    \n                        var tmp0 = d0 + d7;\n                        var tmp7 = d0 - d7;\n                        var tmp1 = d1 + d6;\n                        var tmp6 = d1 - d6;\n                        var tmp2 = d2 + d5;\n                        var tmp5 = d2 - d5;\n                        var tmp3 = d3 + d4;\n                        var tmp4 = d3 - d4;\n    \n                        /* Even part */\n                        var tmp10 = tmp0 + tmp3;    /* phase 2 */\n                        var tmp13 = tmp0 - tmp3;\n                        var tmp11 = tmp1 + tmp2;\n                        var tmp12 = tmp1 - tmp2;\n    \n                        data[dataOff] = tmp10 + tmp11; /* phase 3 */\n                        data[dataOff+4] = tmp10 - tmp11;\n    \n                        var z1 = (tmp12 + tmp13) * 0.707106781; /* c4 */\n                        data[dataOff+2] = tmp13 + z1; /* phase 5 */\n                        data[dataOff+6] = tmp13 - z1;\n    \n                        /* Odd part */\n                        tmp10 = tmp4 + tmp5; /* phase 2 */\n                        tmp11 = tmp5 + tmp6;\n                        tmp12 = tmp6 + tmp7;\n    \n                        /* The rotator is modified from fig 4-8 to avoid extra negations. */\n                        var z5 = (tmp10 - tmp12) * 0.382683433; /* c6 */\n                        var z2 = 0.541196100 * tmp10 + z5; /* c2-c6 */\n                        var z4 = 1.306562965 * tmp12 + z5; /* c2+c6 */\n                        var z3 = tmp11 * 0.707106781; /* c4 */\n    \n                        var z11 = tmp7 + z3;    /* phase 5 */\n                        var z13 = tmp7 - z3;\n    \n                        data[dataOff+5] = z13 + z2; /* phase 6 */\n                        data[dataOff+3] = z13 - z2;\n                        data[dataOff+1] = z11 + z4;\n                        data[dataOff+7] = z11 - z4;\n    \n                        dataOff += 8; /* advance pointer to next row */\n                    }\n    \n                    /* Pass 2: process columns. */\n                    dataOff = 0;\n                    for (i=0; i<I8; ++i)\n                    {\n                        d0 = data[dataOff];\n                        d1 = data[dataOff + 8];\n                        d2 = data[dataOff + 16];\n                        d3 = data[dataOff + 24];\n                        d4 = data[dataOff + 32];\n                        d5 = data[dataOff + 40];\n                        d6 = data[dataOff + 48];\n                        d7 = data[dataOff + 56];\n    \n                        var tmp0p2 = d0 + d7;\n                        var tmp7p2 = d0 - d7;\n                        var tmp1p2 = d1 + d6;\n                        var tmp6p2 = d1 - d6;\n                        var tmp2p2 = d2 + d5;\n                        var tmp5p2 = d2 - d5;\n                        var tmp3p2 = d3 + d4;\n                        var tmp4p2 = d3 - d4;\n    \n                        /* Even part */\n                        var tmp10p2 = tmp0p2 + tmp3p2;  /* phase 2 */\n                        var tmp13p2 = tmp0p2 - tmp3p2;\n                        var tmp11p2 = tmp1p2 + tmp2p2;\n                        var tmp12p2 = tmp1p2 - tmp2p2;\n    \n                        data[dataOff] = tmp10p2 + tmp11p2; /* phase 3 */\n                        data[dataOff+32] = tmp10p2 - tmp11p2;\n    \n                        var z1p2 = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */\n                        data[dataOff+16] = tmp13p2 + z1p2; /* phase 5 */\n                        data[dataOff+48] = tmp13p2 - z1p2;\n    \n                        /* Odd part */\n                        tmp10p2 = tmp4p2 + tmp5p2; /* phase 2 */\n                        tmp11p2 = tmp5p2 + tmp6p2;\n                        tmp12p2 = tmp6p2 + tmp7p2;\n    \n                        /* The rotator is modified from fig 4-8 to avoid extra negations. */\n                        var z5p2 = (tmp10p2 - tmp12p2) * 0.382683433; /* c6 */\n                        var z2p2 = 0.541196100 * tmp10p2 + z5p2; /* c2-c6 */\n                        var z4p2 = 1.306562965 * tmp12p2 + z5p2; /* c2+c6 */\n                        var z3p2 = tmp11p2 * 0.707106781; /* c4 */\n    \n                        var z11p2 = tmp7p2 + z3p2;  /* phase 5 */\n                        var z13p2 = tmp7p2 - z3p2;\n    \n                        data[dataOff+40] = z13p2 + z2p2; /* phase 6 */\n                        data[dataOff+24] = z13p2 - z2p2;\n                        data[dataOff+ 8] = z11p2 + z4p2;\n                        data[dataOff+56] = z11p2 - z4p2;\n    \n                        dataOff++; /* advance pointer to next column */\n                    }\n    \n                    // Quantize/descale the coefficients\n                    var fDCTQuant;\n                    for (i=0; i<I64; ++i)\n                    {\n                        // Apply the quantization and scaling factor & Round to nearest integer\n                        fDCTQuant = data[i]*fdtbl[i];\n                        outputfDCTQuant[i] = (fDCTQuant > 0.0) ? ((fDCTQuant + 0.5)|0) : ((fDCTQuant - 0.5)|0);\n                        //outputfDCTQuant[i] = fround(fDCTQuant);\n    \n                    }\n                    return outputfDCTQuant;\n                }\n    \n                function writeAPP0()\n                {\n                    writeWord(0xFFE0); // marker\n                    writeWord(16); // length\n                    writeByte(0x4A); // J\n                    writeByte(0x46); // F\n                    writeByte(0x49); // I\n                    writeByte(0x46); // F\n                    writeByte(0); // = \"JFIF\",'\\0'\n                    writeByte(1); // versionhi\n                    writeByte(1); // versionlo\n                    writeByte(0); // xyunits\n                    writeWord(1); // xdensity\n                    writeWord(1); // ydensity\n                    writeByte(0); // thumbnwidth\n                    writeByte(0); // thumbnheight\n                }\n    \n                function writeSOF0(width, height)\n                {\n                    writeWord(0xFFC0); // marker\n                    writeWord(17);   // length, truecolor YUV JPG\n                    writeByte(8);    // precision\n                    writeWord(height);\n                    writeWord(width);\n                    writeByte(3);    // nrofcomponents\n                    writeByte(1);    // IdY\n                    writeByte(0x11); // HVY\n                    writeByte(0);    // QTY\n                    writeByte(2);    // IdU\n                    writeByte(0x11); // HVU\n                    writeByte(1);    // QTU\n                    writeByte(3);    // IdV\n                    writeByte(0x11); // HVV\n                    writeByte(1);    // QTV\n                }\n    \n                function writeDQT()\n                {\n                    writeWord(0xFFDB); // marker\n                    writeWord(132);    // length\n                    writeByte(0);\n                    for (var i=0; i<64; i++) {\n                        writeByte(YTable[i]);\n                    }\n                    writeByte(1);\n                    for (var j=0; j<64; j++) {\n                        writeByte(UVTable[j]);\n                    }\n                }\n    \n                function writeDHT()\n                {\n                    writeWord(0xFFC4); // marker\n                    writeWord(0x01A2); // length\n    \n                    writeByte(0); // HTYDCinfo\n                    for (var i=0; i<16; i++) {\n                        writeByte(std_dc_luminance_nrcodes[i+1]);\n                    }\n                    for (var j=0; j<=11; j++) {\n                        writeByte(std_dc_luminance_values[j]);\n                    }\n    \n                    writeByte(0x10); // HTYACinfo\n                    for (var k=0; k<16; k++) {\n                        writeByte(std_ac_luminance_nrcodes[k+1]);\n                    }\n                    for (var l=0; l<=161; l++) {\n                        writeByte(std_ac_luminance_values[l]);\n                    }\n    \n                    writeByte(1); // HTUDCinfo\n                    for (var m=0; m<16; m++) {\n                        writeByte(std_dc_chrominance_nrcodes[m+1]);\n                    }\n                    for (var n=0; n<=11; n++) {\n                        writeByte(std_dc_chrominance_values[n]);\n                    }\n    \n                    writeByte(0x11); // HTUACinfo\n                    for (var o=0; o<16; o++) {\n                        writeByte(std_ac_chrominance_nrcodes[o+1]);\n                    }\n                    for (var p=0; p<=161; p++) {\n                        writeByte(std_ac_chrominance_values[p]);\n                    }\n                }\n    \n                function writeSOS()\n                {\n                    writeWord(0xFFDA); // marker\n                    writeWord(12); // length\n                    writeByte(3); // nrofcomponents\n                    writeByte(1); // IdY\n                    writeByte(0); // HTY\n                    writeByte(2); // IdU\n                    writeByte(0x11); // HTU\n                    writeByte(3); // IdV\n                    writeByte(0x11); // HTV\n                    writeByte(0); // Ss\n                    writeByte(0x3f); // Se\n                    writeByte(0); // Bf\n                }\n    \n                function processDU(CDU, fdtbl, DC, HTDC, HTAC){\n                    var EOB = HTAC[0x00];\n                    var M16zeroes = HTAC[0xF0];\n                    var pos;\n                    var I16 = 16;\n                    var I63 = 63;\n                    var I64 = 64;\n                    var DU_DCT = fDCTQuant(CDU, fdtbl);\n                    //ZigZag reorder\n                    for (var j=0;j<I64;++j) {\n                        DU[ZigZag[j]]=DU_DCT[j];\n                    }\n                    var Diff = DU[0] - DC; DC = DU[0];\n                    //Encode DC\n                    if (Diff==0) {\n                        writeBits(HTDC[0]); // Diff might be 0\n                    } else {\n                        pos = 32767+Diff;\n                        writeBits(HTDC[category[pos]]);\n                        writeBits(bitcode[pos]);\n                    }\n                    //Encode ACs\n                    var end0pos = 63; // was const... which is crazy\n                    for (; (end0pos>0)&&(DU[end0pos]==0); end0pos--) {};\n                    //end0pos = first element in reverse order !=0\n                    if ( end0pos == 0) {\n                        writeBits(EOB);\n                        return DC;\n                    }\n                    var i = 1;\n                    var lng;\n                    while ( i <= end0pos ) {\n                        var startpos = i;\n                        for (; (DU[i]==0) && (i<=end0pos); ++i) {}\n                        var nrzeroes = i-startpos;\n                        if ( nrzeroes >= I16 ) {\n                            lng = nrzeroes>>4;\n                            for (var nrmarker=1; nrmarker <= lng; ++nrmarker)\n                                writeBits(M16zeroes);\n                            nrzeroes = nrzeroes&0xF;\n                        }\n                        pos = 32767+DU[i];\n                        writeBits(HTAC[(nrzeroes<<4)+category[pos]]);\n                        writeBits(bitcode[pos]);\n                        i++;\n                    }\n                    if ( end0pos != I63 ) {\n                        writeBits(EOB);\n                    }\n                    return DC;\n                }\n    \n                function initCharLookupTable(){\n                    var sfcc = String.fromCharCode;\n                    for(var i=0; i < 256; i++){ ///// ACHTUNG // 255\n                        clt[i] = sfcc(i);\n                    }\n                }\n    \n                this.encode = function(image,quality) // image data object\n                {\n                    // var time_start = new Date().getTime();\n    \n                    if(quality) setQuality(quality);\n    \n                    // Initialize bit writer\n                    byteout = new Array();\n                    bytenew=0;\n                    bytepos=7;\n    \n                    // Add JPEG headers\n                    writeWord(0xFFD8); // SOI\n                    writeAPP0();\n                    writeDQT();\n                    writeSOF0(image.width,image.height);\n                    writeDHT();\n                    writeSOS();\n    \n    \n                    // Encode 8x8 macroblocks\n                    var DCY=0;\n                    var DCU=0;\n                    var DCV=0;\n    \n                    bytenew=0;\n                    bytepos=7;\n    \n    \n                    this.encode.displayName = \"_encode_\";\n    \n                    var imageData = image.data;\n                    var width = image.width;\n                    var height = image.height;\n    \n                    var quadWidth = width*4;\n                    var tripleWidth = width*3;\n    \n                    var x, y = 0;\n                    var r, g, b;\n                    var start,p, col,row,pos;\n                    while(y < height){\n                        x = 0;\n                        while(x < quadWidth){\n                        start = quadWidth * y + x;\n                        p = start;\n                        col = -1;\n                        row = 0;\n    \n                        for(pos=0; pos < 64; pos++){\n                            row = pos >> 3;// /8\n                            col = ( pos & 7 ) * 4; // %8\n                            p = start + ( row * quadWidth ) + col;\n    \n                            if(y+row >= height){ // padding bottom\n                                p-= (quadWidth*(y+1+row-height));\n                            }\n    \n                            if(x+col >= quadWidth){ // padding right\n                                p-= ((x+col) - quadWidth +4)\n                            }\n    \n                            r = imageData[ p++ ];\n                            g = imageData[ p++ ];\n                            b = imageData[ p++ ];\n    \n    \n                            /* // calculate YUV values dynamically\n                            YDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80\n                            UDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b));\n                            VDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b));\n                            */\n    \n                            // use lookup table (slightly faster)\n                            YDU[pos] = ((RGB_YUV_TABLE[r]             + RGB_YUV_TABLE[(g +  256)>>0] + RGB_YUV_TABLE[(b +  512)>>0]) >> 16)-128;\n                            UDU[pos] = ((RGB_YUV_TABLE[(r +  768)>>0] + RGB_YUV_TABLE[(g + 1024)>>0] + RGB_YUV_TABLE[(b + 1280)>>0]) >> 16)-128;\n                            VDU[pos] = ((RGB_YUV_TABLE[(r + 1280)>>0] + RGB_YUV_TABLE[(g + 1536)>>0] + RGB_YUV_TABLE[(b + 1792)>>0]) >> 16)-128;\n    \n                        }\n    \n                        DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n                        DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n                        DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n                        x+=32;\n                        }\n                        y+=8;\n                    }\n    \n    \n                    ////////////////////////////////////////////////////////////////\n    \n                    // Do the bit alignment of the EOI marker\n                    if ( bytepos >= 0 ) {\n                        var fillbits = [];\n                        fillbits[1] = bytepos+1;\n                        fillbits[0] = (1<<(bytepos+1))-1;\n                        writeBits(fillbits);\n                    }\n    \n                    writeWord(0xFFD9); //EOI\n    \n                    var jpegDataUri = 'data:image/jpeg;base64,' + btoa(byteout.join(''));\n    \n                    byteout = [];\n    \n                    // benchmarking\n                    // var duration = new Date().getTime() - time_start;\n                    // console.log('Encoding time: '+ currentQuality + 'ms');\n                    //\n    \n                    return jpegDataUri\n            }\n    \n            function setQuality(quality){\n                if (quality <= 0) {\n                    quality = 1;\n                }\n                if (quality > 100) {\n                    quality = 100;\n                }\n    \n                if(currentQuality == quality) return // don't recalc if unchanged\n    \n                var sf = 0;\n                if (quality < 50) {\n                    sf = Math.floor(5000 / quality);\n                } else {\n                    sf = Math.floor(200 - quality*2);\n                }\n    \n                initQuantTables(sf);\n                currentQuality = quality;\n                // console.log('Quality set to: '+quality +'%');\n            }\n    \n            function init(){\n                // var time_start = new Date().getTime();\n                if(!quality) quality = 50;\n                // Create tables\n                initCharLookupTable()\n                initHuffmanTbl();\n                initCategoryNumber();\n                initRGBYUVTable();\n    \n                setQuality(quality);\n                // var duration = new Date().getTime() - time_start;\n                // console.log('Initialization '+ duration + 'ms');\n            }\n    \n            init();\n    \n        };\n    \n        JPEGEncoder.encode = function( data, quality ) {\n            var encoder = new JPEGEncoder( quality );\n    \n            return encoder.encode( data );\n        }\n    \n        return JPEGEncoder;\n    });\n    /**\n     * @fileOverview Fix android canvas.toDataUrl bug.\n     */\n    define('runtime/html5/androidpatch',[\n        'runtime/html5/util',\n        'runtime/html5/jpegencoder',\n        'base'\n    ], function( Util, encoder, Base ) {\n        var origin = Util.canvasToDataUrl,\n            supportJpeg;\n    \n        Util.canvasToDataUrl = function( canvas, type, quality ) {\n            var ctx, w, h, fragement, parts;\n    \n            // 非android手机直接跳过。\n            if ( !Base.os.android ) {\n                return origin.apply( null, arguments );\n            }\n    \n            // 检测是否canvas支持jpeg导出，根据数据格式来判断。\n            // JPEG 前两位分别是：255, 216\n            if ( type === 'image/jpeg' && typeof supportJpeg === 'undefined' ) {\n                fragement = origin.apply( null, arguments );\n    \n                parts = fragement.split(',');\n    \n                if ( ~parts[ 0 ].indexOf('base64') ) {\n                    fragement = atob( parts[ 1 ] );\n                } else {\n                    fragement = decodeURIComponent( parts[ 1 ] );\n                }\n    \n                fragement = fragement.substring( 0, 2 );\n    \n                supportJpeg = fragement.charCodeAt( 0 ) === 255 &&\n                        fragement.charCodeAt( 1 ) === 216;\n            }\n    \n            // 只有在android环境下才修复\n            if ( type === 'image/jpeg' && !supportJpeg ) {\n                w = canvas.width;\n                h = canvas.height;\n                ctx = canvas.getContext('2d');\n    \n                return encoder.encode( ctx.getImageData( 0, 0, w, h ), quality );\n            }\n    \n            return origin.apply( null, arguments );\n        };\n    });\n    /**\n     * @fileOverview Image\n     */\n    define('runtime/html5/image',[\n        'base',\n        'runtime/html5/runtime',\n        'runtime/html5/util'\n    ], function( Base, Html5Runtime, Util ) {\n    \n        var BLANK = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D';\n    \n        return Html5Runtime.register( 'Image', {\n    \n            // flag: 标记是否被修改过。\n            modified: false,\n    \n            init: function() {\n                var me = this,\n                    img = new Image();\n    \n                img.onload = function() {\n    \n                    me._info = {\n                        type: me.type,\n                        width: this.width,\n                        height: this.height\n                    };\n    \n                    // 读取meta信息。\n                    if ( !me._metas && 'image/jpeg' === me.type ) {\n                        Util.parseMeta( me._blob, function( error, ret ) {\n                            me._metas = ret;\n                            me.owner.trigger('load');\n                        });\n                    } else {\n                        me.owner.trigger('load');\n                    }\n                };\n    \n                img.onerror = function() {\n                    me.owner.trigger('error');\n                };\n    \n                me._img = img;\n            },\n    \n            loadFromBlob: function( blob ) {\n                var me = this,\n                    img = me._img;\n    \n                me._blob = blob;\n                me.type = blob.type;\n                img.src = Util.createObjectURL( blob.getSource() );\n                me.owner.once( 'load', function() {\n                    Util.revokeObjectURL( img.src );\n                });\n            },\n    \n            resize: function( width, height ) {\n                var canvas = this._canvas ||\n                        (this._canvas = document.createElement('canvas'));\n    \n                this._resize( this._img, canvas, width, height );\n                this._blob = null;    // 没用了，可以删掉了。\n                this.modified = true;\n                this.owner.trigger( 'complete', 'resize' );\n            },\n    \n            crop: function( x, y, w, h, s ) {\n                var cvs = this._canvas ||\n                        (this._canvas = document.createElement('canvas')),\n                    opts = this.options,\n                    img = this._img,\n                    iw = img.naturalWidth,\n                    ih = img.naturalHeight,\n                    orientation = this.getOrientation();\n    \n                s = s || 1;\n    \n                // todo 解决 orientation 的问题。\n                // values that require 90 degree rotation\n                // if ( ~[ 5, 6, 7, 8 ].indexOf( orientation ) ) {\n    \n                //     switch ( orientation ) {\n                //         case 6:\n                //             tmp = x;\n                //             x = y;\n                //             y = iw * s - tmp - w;\n                //             console.log(ih * s, tmp, w)\n                //             break;\n                //     }\n    \n                //     (w ^= h, h ^= w, w ^= h);\n                // }\n    \n                cvs.width = w;\n                cvs.height = h;\n    \n                opts.preserveHeaders || this._rotate2Orientaion( cvs, orientation );\n                this._renderImageToCanvas( cvs, img, -x, -y, iw * s, ih * s );\n    \n                this._blob = null;    // 没用了，可以删掉了。\n                this.modified = true;\n                this.owner.trigger( 'complete', 'crop' );\n            },\n    \n            getAsBlob: function( type ) {\n                var blob = this._blob,\n                    opts = this.options,\n                    canvas;\n    \n                type = type || this.type;\n    \n                // blob需要重新生成。\n                if ( this.modified || this.type !== type ) {\n                    canvas = this._canvas;\n    \n                    if ( type === 'image/jpeg' ) {\n    \n                        blob = Util.canvasToDataUrl( canvas, type, opts.quality );\n    \n                        if ( opts.preserveHeaders && this._metas &&\n                                this._metas.imageHead ) {\n    \n                            blob = Util.dataURL2ArrayBuffer( blob );\n                            blob = Util.updateImageHead( blob,\n                                    this._metas.imageHead );\n                            blob = Util.arrayBufferToBlob( blob, type );\n                            return blob;\n                        }\n                    } else {\n                        blob = Util.canvasToDataUrl( canvas, type );\n                    }\n    \n                    blob = Util.dataURL2Blob( blob );\n                }\n    \n                return blob;\n            },\n    \n            getAsDataUrl: function( type ) {\n                var opts = this.options;\n    \n                type = type || this.type;\n    \n                if ( type === 'image/jpeg' ) {\n                    return Util.canvasToDataUrl( this._canvas, type, opts.quality );\n                } else {\n                    return this._canvas.toDataURL( type );\n                }\n            },\n    \n            getOrientation: function() {\n                return this._metas && this._metas.exif &&\n                        this._metas.exif.get('Orientation') || 1;\n            },\n    \n            info: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._info = val;\n                    return this;\n                }\n    \n                // getter\n                return this._info;\n            },\n    \n            meta: function( val ) {\n    \n                // setter\n                if ( val ) {\n                    this._meta = val;\n                    return this;\n                }\n    \n                // getter\n                return this._meta;\n            },\n    \n            destroy: function() {\n                var canvas = this._canvas;\n                this._img.onload = null;\n    \n                if ( canvas ) {\n                    canvas.getContext('2d')\n                            .clearRect( 0, 0, canvas.width, canvas.height );\n                    canvas.width = canvas.height = 0;\n                    this._canvas = null;\n                }\n    \n                // 释放内存。非常重要，否则释放不了image的内存。\n                this._img.src = BLANK;\n                this._img = this._blob = null;\n            },\n    \n            _resize: function( img, cvs, width, height ) {\n                var opts = this.options,\n                    naturalWidth = img.width,\n                    naturalHeight = img.height,\n                    orientation = this.getOrientation(),\n                    scale, w, h, x, y;\n    \n                // values that require 90 degree rotation\n                if ( ~[ 5, 6, 7, 8 ].indexOf( orientation ) ) {\n    \n                    // 交换width, height的值。\n                    width ^= height;\n                    height ^= width;\n                    width ^= height;\n                }\n    \n                scale = Math[ opts.crop ? 'max' : 'min' ]( width / naturalWidth,\n                        height / naturalHeight );\n    \n                // 不允许放大。\n                opts.allowMagnify || (scale = Math.min( 1, scale ));\n    \n                w = naturalWidth * scale;\n                h = naturalHeight * scale;\n    \n                if ( opts.crop ) {\n                    cvs.width = width;\n                    cvs.height = height;\n                } else {\n                    cvs.width = w;\n                    cvs.height = h;\n                }\n    \n                x = (cvs.width - w) / 2;\n                y = (cvs.height - h) / 2;\n    \n                opts.preserveHeaders || this._rotate2Orientaion( cvs, orientation );\n    \n                this._renderImageToCanvas( cvs, img, x, y, w, h );\n            },\n    \n            _rotate2Orientaion: function( canvas, orientation ) {\n                var width = canvas.width,\n                    height = canvas.height,\n                    ctx = canvas.getContext('2d');\n    \n                switch ( orientation ) {\n                    case 5:\n                    case 6:\n                    case 7:\n                    case 8:\n                        canvas.width = height;\n                        canvas.height = width;\n                        break;\n                }\n    \n                switch ( orientation ) {\n                    case 2:    // horizontal flip\n                        ctx.translate( width, 0 );\n                        ctx.scale( -1, 1 );\n                        break;\n    \n                    case 3:    // 180 rotate left\n                        ctx.translate( width, height );\n                        ctx.rotate( Math.PI );\n                        break;\n    \n                    case 4:    // vertical flip\n                        ctx.translate( 0, height );\n                        ctx.scale( 1, -1 );\n                        break;\n    \n                    case 5:    // vertical flip + 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.scale( 1, -1 );\n                        break;\n    \n                    case 6:    // 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.translate( 0, -height );\n                        break;\n    \n                    case 7:    // horizontal flip + 90 rotate right\n                        ctx.rotate( 0.5 * Math.PI );\n                        ctx.translate( width, -height );\n                        ctx.scale( -1, 1 );\n                        break;\n    \n                    case 8:    // 90 rotate left\n                        ctx.rotate( -0.5 * Math.PI );\n                        ctx.translate( -width, 0 );\n                        break;\n                }\n            },\n    \n            // https://github.com/stomita/ios-imagefile-megapixel/\n            // blob/master/src/megapix-image.js\n            _renderImageToCanvas: (function() {\n    \n                // 如果不是ios, 不需要这么复杂！\n                if ( !Base.os.ios ) {\n                    return function( canvas ) {\n                        var args = Base.slice( arguments, 1 ),\n                            ctx = canvas.getContext('2d');\n    \n                        ctx.drawImage.apply( ctx, args );\n                    };\n                }\n    \n                /**\n                 * Detecting vertical squash in loaded image.\n                 * Fixes a bug which squash image vertically while drawing into\n                 * canvas for some images.\n                 */\n                function detectVerticalSquash( img, iw, ih ) {\n                    var canvas = document.createElement('canvas'),\n                        ctx = canvas.getContext('2d'),\n                        sy = 0,\n                        ey = ih,\n                        py = ih,\n                        data, alpha, ratio;\n    \n    \n                    canvas.width = 1;\n                    canvas.height = ih;\n                    ctx.drawImage( img, 0, 0 );\n                    data = ctx.getImageData( 0, 0, 1, ih ).data;\n    \n                    // search image edge pixel position in case\n                    // it is squashed vertically.\n                    while ( py > sy ) {\n                        alpha = data[ (py - 1) * 4 + 3 ];\n    \n                        if ( alpha === 0 ) {\n                            ey = py;\n                        } else {\n                            sy = py;\n                        }\n    \n                        py = (ey + sy) >> 1;\n                    }\n    \n                    ratio = (py / ih);\n                    return (ratio === 0) ? 1 : ratio;\n                }\n    \n                // fix ie7 bug\n                // http://stackoverflow.com/questions/11929099/\n                // html5-canvas-drawimage-ratio-bug-ios\n                if ( Base.os.ios >= 7 ) {\n                    return function( canvas, img, x, y, w, h ) {\n                        var iw = img.naturalWidth,\n                            ih = img.naturalHeight,\n                            vertSquashRatio = detectVerticalSquash( img, iw, ih );\n    \n                        return canvas.getContext('2d').drawImage( img, 0, 0,\n                                iw * vertSquashRatio, ih * vertSquashRatio,\n                                x, y, w, h );\n                    };\n                }\n    \n                /**\n                 * Detect subsampling in loaded image.\n                 * In iOS, larger images than 2M pixels may be\n                 * subsampled in rendering.\n                 */\n                function detectSubsampling( img ) {\n                    var iw = img.naturalWidth,\n                        ih = img.naturalHeight,\n                        canvas, ctx;\n    \n                    // subsampling may happen overmegapixel image\n                    if ( iw * ih > 1024 * 1024 ) {\n                        canvas = document.createElement('canvas');\n                        canvas.width = canvas.height = 1;\n                        ctx = canvas.getContext('2d');\n                        ctx.drawImage( img, -iw + 1, 0 );\n    \n                        // subsampled image becomes half smaller in rendering size.\n                        // check alpha channel value to confirm image is covering\n                        // edge pixel or not. if alpha value is 0\n                        // image is not covering, hence subsampled.\n                        return ctx.getImageData( 0, 0, 1, 1 ).data[ 3 ] === 0;\n                    } else {\n                        return false;\n                    }\n                }\n    \n    \n                return function( canvas, img, x, y, width, height ) {\n                    var iw = img.naturalWidth,\n                        ih = img.naturalHeight,\n                        ctx = canvas.getContext('2d'),\n                        subsampled = detectSubsampling( img ),\n                        doSquash = this.type === 'image/jpeg',\n                        d = 1024,\n                        sy = 0,\n                        dy = 0,\n                        tmpCanvas, tmpCtx, vertSquashRatio, dw, dh, sx, dx;\n    \n                    if ( subsampled ) {\n                        iw /= 2;\n                        ih /= 2;\n                    }\n    \n                    ctx.save();\n                    tmpCanvas = document.createElement('canvas');\n                    tmpCanvas.width = tmpCanvas.height = d;\n    \n                    tmpCtx = tmpCanvas.getContext('2d');\n                    vertSquashRatio = doSquash ?\n                            detectVerticalSquash( img, iw, ih ) : 1;\n    \n                    dw = Math.ceil( d * width / iw );\n                    dh = Math.ceil( d * height / ih / vertSquashRatio );\n    \n                    while ( sy < ih ) {\n                        sx = 0;\n                        dx = 0;\n                        while ( sx < iw ) {\n                            tmpCtx.clearRect( 0, 0, d, d );\n                            tmpCtx.drawImage( img, -sx, -sy );\n                            ctx.drawImage( tmpCanvas, 0, 0, d, d,\n                                    x + dx, y + dy, dw, dh );\n                            sx += d;\n                            dx += dw;\n                        }\n                        sy += d;\n                        dy += dh;\n                    }\n                    ctx.restore();\n                    tmpCanvas = tmpCtx = null;\n                };\n            })()\n        });\n    });\n    /**\n     * @fileOverview Transport\n     * @todo 支持chunked传输，优势：\n     * 可以将大文件分成小块，挨个传输，可以提高大文件成功率，当失败的时候，也只需要重传那小部分，\n     * 而不需要重头再传一次。另外断点续传也需要用chunked方式。\n     */\n    define('runtime/html5/transport',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var noop = Base.noop,\n            $ = Base.$;\n    \n        return Html5Runtime.register( 'Transport', {\n            init: function() {\n                this._status = 0;\n                this._response = null;\n            },\n    \n            send: function() {\n                var owner = this.owner,\n                    opts = this.options,\n                    xhr = this._initAjax(),\n                    blob = owner._blob,\n                    server = opts.server,\n                    formData, binary, fr;\n    \n                if ( opts.sendAsBinary ) {\n                    server += (/\\?/.test( server ) ? '&' : '?') +\n                            $.param( owner._formData );\n    \n                    binary = blob.getSource();\n                } else {\n                    formData = new FormData();\n                    $.each( owner._formData, function( k, v ) {\n                        formData.append( k, v );\n                    });\n    \n                    formData.append( opts.fileVal, blob.getSource(),\n                            opts.filename || owner._formData.name || '' );\n                }\n    \n                if ( opts.withCredentials && 'withCredentials' in xhr ) {\n                    xhr.open( opts.method, server, true );\n                    xhr.withCredentials = true;\n                } else {\n                    xhr.open( opts.method, server );\n                }\n    \n                this._setRequestHeader( xhr, opts.headers );\n    \n                if ( binary ) {\n                    // 强制设置成 content-type 为文件流。\n                    xhr.overrideMimeType &&\n                            xhr.overrideMimeType('application/octet-stream');\n    \n                    // android直接发送blob会导致服务端接收到的是空文件。\n                    // bug详情。\n                    // https://code.google.com/p/android/issues/detail?id=39882\n                    // 所以先用fileReader读取出来再通过arraybuffer的方式发送。\n                    if ( Base.os.android ) {\n                        fr = new FileReader();\n    \n                        fr.onload = function() {\n                            xhr.send( this.result );\n                            fr = fr.onload = null;\n                        };\n    \n                        fr.readAsArrayBuffer( binary );\n                    } else {\n                        xhr.send( binary );\n                    }\n                } else {\n                    xhr.send( formData );\n                }\n            },\n    \n            getResponse: function() {\n                return this._response;\n            },\n    \n            getResponseAsJson: function() {\n                return this._parseJson( this._response );\n            },\n    \n            getStatus: function() {\n                return this._status;\n            },\n    \n            abort: function() {\n                var xhr = this._xhr;\n    \n                if ( xhr ) {\n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    xhr.abort();\n    \n                    this._xhr = xhr = null;\n                }\n            },\n    \n            destroy: function() {\n                this.abort();\n            },\n    \n            _initAjax: function() {\n                var me = this,\n                    xhr = new XMLHttpRequest(),\n                    opts = this.options;\n    \n                if ( opts.withCredentials && !('withCredentials' in xhr) &&\n                        typeof XDomainRequest !== 'undefined' ) {\n                    xhr = new XDomainRequest();\n                }\n    \n                xhr.upload.onprogress = function( e ) {\n                    var percentage = 0;\n    \n                    if ( e.lengthComputable ) {\n                        percentage = e.loaded / e.total;\n                    }\n    \n                    return me.trigger( 'progress', percentage );\n                };\n    \n                xhr.onreadystatechange = function() {\n    \n                    if ( xhr.readyState !== 4 ) {\n                        return;\n                    }\n    \n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    me._xhr = null;\n                    me._status = xhr.status;\n    \n                    if ( xhr.status >= 200 && xhr.status < 300 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger('load');\n                    } else if ( xhr.status >= 500 && xhr.status < 600 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger( 'error', 'server' );\n                    }\n    \n    \n                    return me.trigger( 'error', me._status ? 'http' : 'abort' );\n                };\n    \n                me._xhr = xhr;\n                return xhr;\n            },\n    \n            _setRequestHeader: function( xhr, headers ) {\n                $.each( headers, function( key, val ) {\n                    xhr.setRequestHeader( key, val );\n                });\n            },\n    \n            _parseJson: function( str ) {\n                var json;\n    \n                try {\n                    json = JSON.parse( str );\n                } catch ( ex ) {\n                    json = {};\n                }\n    \n                return json;\n            }\n        });\n    });\n    /**\n     * @fileOverview  Transport flash实现\n     */\n    define('runtime/html5/md5',[\n        'runtime/html5/runtime'\n    ], function( FlashRuntime ) {\n    \n        /*\n         * Fastest md5 implementation around (JKM md5)\n         * Credits: Joseph Myers\n         *\n         * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n         * @see http://jsperf.com/md5-shootout/7\n         */\n    \n        /* this function is much faster,\n          so if possible we use it. Some IEs\n          are the only ones I know of that\n          need the idiotic second function,\n          generated by an if clause.  */\n        var add32 = function (a, b) {\n            return (a + b) & 0xFFFFFFFF;\n        },\n    \n        cmn = function (q, a, b, x, s, t) {\n            a = add32(add32(a, q), add32(x, t));\n            return add32((a << s) | (a >>> (32 - s)), b);\n        },\n    \n        ff = function (a, b, c, d, x, s, t) {\n            return cmn((b & c) | ((~b) & d), a, b, x, s, t);\n        },\n    \n        gg = function (a, b, c, d, x, s, t) {\n            return cmn((b & d) | (c & (~d)), a, b, x, s, t);\n        },\n    \n        hh = function (a, b, c, d, x, s, t) {\n            return cmn(b ^ c ^ d, a, b, x, s, t);\n        },\n    \n        ii = function (a, b, c, d, x, s, t) {\n            return cmn(c ^ (b | (~d)), a, b, x, s, t);\n        },\n    \n        md5cycle = function (x, k) {\n            var a = x[0],\n                b = x[1],\n                c = x[2],\n                d = x[3];\n    \n            a = ff(a, b, c, d, k[0], 7, -680876936);\n            d = ff(d, a, b, c, k[1], 12, -389564586);\n            c = ff(c, d, a, b, k[2], 17, 606105819);\n            b = ff(b, c, d, a, k[3], 22, -1044525330);\n            a = ff(a, b, c, d, k[4], 7, -176418897);\n            d = ff(d, a, b, c, k[5], 12, 1200080426);\n            c = ff(c, d, a, b, k[6], 17, -1473231341);\n            b = ff(b, c, d, a, k[7], 22, -45705983);\n            a = ff(a, b, c, d, k[8], 7, 1770035416);\n            d = ff(d, a, b, c, k[9], 12, -1958414417);\n            c = ff(c, d, a, b, k[10], 17, -42063);\n            b = ff(b, c, d, a, k[11], 22, -1990404162);\n            a = ff(a, b, c, d, k[12], 7, 1804603682);\n            d = ff(d, a, b, c, k[13], 12, -40341101);\n            c = ff(c, d, a, b, k[14], 17, -1502002290);\n            b = ff(b, c, d, a, k[15], 22, 1236535329);\n    \n            a = gg(a, b, c, d, k[1], 5, -165796510);\n            d = gg(d, a, b, c, k[6], 9, -1069501632);\n            c = gg(c, d, a, b, k[11], 14, 643717713);\n            b = gg(b, c, d, a, k[0], 20, -373897302);\n            a = gg(a, b, c, d, k[5], 5, -701558691);\n            d = gg(d, a, b, c, k[10], 9, 38016083);\n            c = gg(c, d, a, b, k[15], 14, -660478335);\n            b = gg(b, c, d, a, k[4], 20, -405537848);\n            a = gg(a, b, c, d, k[9], 5, 568446438);\n            d = gg(d, a, b, c, k[14], 9, -1019803690);\n            c = gg(c, d, a, b, k[3], 14, -187363961);\n            b = gg(b, c, d, a, k[8], 20, 1163531501);\n            a = gg(a, b, c, d, k[13], 5, -1444681467);\n            d = gg(d, a, b, c, k[2], 9, -51403784);\n            c = gg(c, d, a, b, k[7], 14, 1735328473);\n            b = gg(b, c, d, a, k[12], 20, -1926607734);\n    \n            a = hh(a, b, c, d, k[5], 4, -378558);\n            d = hh(d, a, b, c, k[8], 11, -2022574463);\n            c = hh(c, d, a, b, k[11], 16, 1839030562);\n            b = hh(b, c, d, a, k[14], 23, -35309556);\n            a = hh(a, b, c, d, k[1], 4, -1530992060);\n            d = hh(d, a, b, c, k[4], 11, 1272893353);\n            c = hh(c, d, a, b, k[7], 16, -155497632);\n            b = hh(b, c, d, a, k[10], 23, -1094730640);\n            a = hh(a, b, c, d, k[13], 4, 681279174);\n            d = hh(d, a, b, c, k[0], 11, -358537222);\n            c = hh(c, d, a, b, k[3], 16, -722521979);\n            b = hh(b, c, d, a, k[6], 23, 76029189);\n            a = hh(a, b, c, d, k[9], 4, -640364487);\n            d = hh(d, a, b, c, k[12], 11, -421815835);\n            c = hh(c, d, a, b, k[15], 16, 530742520);\n            b = hh(b, c, d, a, k[2], 23, -995338651);\n    \n            a = ii(a, b, c, d, k[0], 6, -198630844);\n            d = ii(d, a, b, c, k[7], 10, 1126891415);\n            c = ii(c, d, a, b, k[14], 15, -1416354905);\n            b = ii(b, c, d, a, k[5], 21, -57434055);\n            a = ii(a, b, c, d, k[12], 6, 1700485571);\n            d = ii(d, a, b, c, k[3], 10, -1894986606);\n            c = ii(c, d, a, b, k[10], 15, -1051523);\n            b = ii(b, c, d, a, k[1], 21, -2054922799);\n            a = ii(a, b, c, d, k[8], 6, 1873313359);\n            d = ii(d, a, b, c, k[15], 10, -30611744);\n            c = ii(c, d, a, b, k[6], 15, -1560198380);\n            b = ii(b, c, d, a, k[13], 21, 1309151649);\n            a = ii(a, b, c, d, k[4], 6, -145523070);\n            d = ii(d, a, b, c, k[11], 10, -1120210379);\n            c = ii(c, d, a, b, k[2], 15, 718787259);\n            b = ii(b, c, d, a, k[9], 21, -343485551);\n    \n            x[0] = add32(a, x[0]);\n            x[1] = add32(b, x[1]);\n            x[2] = add32(c, x[2]);\n            x[3] = add32(d, x[3]);\n        },\n    \n        /* there needs to be support for Unicode here,\n           * unless we pretend that we can redefine the MD-5\n           * algorithm for multi-byte characters (perhaps\n           * by adding every four 16-bit characters and\n           * shortening the sum to 32 bits). Otherwise\n           * I suggest performing MD-5 as if every character\n           * was two bytes--e.g., 0040 0025 = @%--but then\n           * how will an ordinary MD-5 sum be matched?\n           * There is no way to standardize text to something\n           * like UTF-8 before transformation; speed cost is\n           * utterly prohibitive. The JavaScript standard\n           * itself needs to look at this: it should start\n           * providing access to strings as preformed UTF-8\n           * 8-bit unsigned value arrays.\n           */\n        md5blk = function (s) {\n            var md5blks = [],\n                i; /* Andy King said do it this way. */\n    \n            for (i = 0; i < 64; i += 4) {\n                md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n            }\n            return md5blks;\n        },\n    \n        md5blk_array = function (a) {\n            var md5blks = [],\n                i; /* Andy King said do it this way. */\n    \n            for (i = 0; i < 64; i += 4) {\n                md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n            }\n            return md5blks;\n        },\n    \n        md51 = function (s) {\n            var n = s.length,\n                state = [1732584193, -271733879, -1732584194, 271733878],\n                i,\n                length,\n                tail,\n                tmp,\n                lo,\n                hi;\n    \n            for (i = 64; i <= n; i += 64) {\n                md5cycle(state, md5blk(s.substring(i - 64, i)));\n            }\n            s = s.substring(i - 64);\n            length = s.length;\n            tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n            for (i = 0; i < length; i += 1) {\n                tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n            }\n            tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n            if (i > 55) {\n                md5cycle(state, tail);\n                for (i = 0; i < 16; i += 1) {\n                    tail[i] = 0;\n                }\n            }\n    \n            // Beware that the final length might not fit in 32 bits so we take care of that\n            tmp = n * 8;\n            tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n            lo = parseInt(tmp[2], 16);\n            hi = parseInt(tmp[1], 16) || 0;\n    \n            tail[14] = lo;\n            tail[15] = hi;\n    \n            md5cycle(state, tail);\n            return state;\n        },\n    \n        md51_array = function (a) {\n            var n = a.length,\n                state = [1732584193, -271733879, -1732584194, 271733878],\n                i,\n                length,\n                tail,\n                tmp,\n                lo,\n                hi;\n    \n            for (i = 64; i <= n; i += 64) {\n                md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n            }\n    \n            // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n            // containing the last element of the parent array if the sub array specified starts\n            // beyond the length of the parent array - weird.\n            // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n            a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n    \n            length = a.length;\n            tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n            for (i = 0; i < length; i += 1) {\n                tail[i >> 2] |= a[i] << ((i % 4) << 3);\n            }\n    \n            tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n            if (i > 55) {\n                md5cycle(state, tail);\n                for (i = 0; i < 16; i += 1) {\n                    tail[i] = 0;\n                }\n            }\n    \n            // Beware that the final length might not fit in 32 bits so we take care of that\n            tmp = n * 8;\n            tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n            lo = parseInt(tmp[2], 16);\n            hi = parseInt(tmp[1], 16) || 0;\n    \n            tail[14] = lo;\n            tail[15] = hi;\n    \n            md5cycle(state, tail);\n    \n            return state;\n        },\n    \n        hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'],\n    \n        rhex = function (n) {\n            var s = '',\n                j;\n            for (j = 0; j < 4; j += 1) {\n                s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n            }\n            return s;\n        },\n    \n        hex = function (x) {\n            var i;\n            for (i = 0; i < x.length; i += 1) {\n                x[i] = rhex(x[i]);\n            }\n            return x.join('');\n        },\n    \n        md5 = function (s) {\n            return hex(md51(s));\n        },\n    \n    \n    \n        ////////////////////////////////////////////////////////////////////////////\n    \n        /**\n         * SparkMD5 OOP implementation.\n         *\n         * Use this class to perform an incremental md5, otherwise use the\n         * static methods instead.\n         */\n        SparkMD5 = function () {\n            // call reset to init the instance\n            this.reset();\n        };\n    \n    \n        // In some cases the fast add32 function cannot be used..\n        if (md5('hello') !== '5d41402abc4b2a76b9719d911017c592') {\n            add32 = function (x, y) {\n                var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n                    msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n                return (msw << 16) | (lsw & 0xFFFF);\n            };\n        }\n    \n    \n        /**\n         * Appends a string.\n         * A conversion will be applied if an utf8 string is detected.\n         *\n         * @param {String} str The string to be appended\n         *\n         * @return {SparkMD5} The instance itself\n         */\n        SparkMD5.prototype.append = function (str) {\n            // converts the string to utf8 bytes if necessary\n            if (/[\\u0080-\\uFFFF]/.test(str)) {\n                str = unescape(encodeURIComponent(str));\n            }\n    \n            // then append as binary\n            this.appendBinary(str);\n    \n            return this;\n        };\n    \n        /**\n         * Appends a binary string.\n         *\n         * @param {String} contents The binary string to be appended\n         *\n         * @return {SparkMD5} The instance itself\n         */\n        SparkMD5.prototype.appendBinary = function (contents) {\n            this._buff += contents;\n            this._length += contents.length;\n    \n            var length = this._buff.length,\n                i;\n    \n            for (i = 64; i <= length; i += 64) {\n                md5cycle(this._state, md5blk(this._buff.substring(i - 64, i)));\n            }\n    \n            this._buff = this._buff.substr(i - 64);\n    \n            return this;\n        };\n    \n        /**\n         * Finishes the incremental computation, reseting the internal state and\n         * returning the result.\n         * Use the raw parameter to obtain the raw result instead of the hex one.\n         *\n         * @param {Boolean} raw True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.prototype.end = function (raw) {\n            var buff = this._buff,\n                length = buff.length,\n                i,\n                tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n                ret;\n    \n            for (i = 0; i < length; i += 1) {\n                tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n            }\n    \n            this._finish(tail, length);\n            ret = !!raw ? this._state : hex(this._state);\n    \n            this.reset();\n    \n            return ret;\n        };\n    \n        /**\n         * Finish the final calculation based on the tail.\n         *\n         * @param {Array}  tail   The tail (will be modified)\n         * @param {Number} length The length of the remaining buffer\n         */\n        SparkMD5.prototype._finish = function (tail, length) {\n            var i = length,\n                tmp,\n                lo,\n                hi;\n    \n            tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n            if (i > 55) {\n                md5cycle(this._state, tail);\n                for (i = 0; i < 16; i += 1) {\n                    tail[i] = 0;\n                }\n            }\n    \n            // Do the final computation based on the tail and length\n            // Beware that the final length may not fit in 32 bits so we take care of that\n            tmp = this._length * 8;\n            tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n            lo = parseInt(tmp[2], 16);\n            hi = parseInt(tmp[1], 16) || 0;\n    \n            tail[14] = lo;\n            tail[15] = hi;\n            md5cycle(this._state, tail);\n        };\n    \n        /**\n         * Resets the internal state of the computation.\n         *\n         * @return {SparkMD5} The instance itself\n         */\n        SparkMD5.prototype.reset = function () {\n            this._buff = \"\";\n            this._length = 0;\n            this._state = [1732584193, -271733879, -1732584194, 271733878];\n    \n            return this;\n        };\n    \n        /**\n         * Releases memory used by the incremental buffer and other aditional\n         * resources. If you plan to use the instance again, use reset instead.\n         */\n        SparkMD5.prototype.destroy = function () {\n            delete this._state;\n            delete this._buff;\n            delete this._length;\n        };\n    \n    \n        /**\n         * Performs the md5 hash on a string.\n         * A conversion will be applied if utf8 string is detected.\n         *\n         * @param {String}  str The string\n         * @param {Boolean} raw True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.hash = function (str, raw) {\n            // converts the string to utf8 bytes if necessary\n            if (/[\\u0080-\\uFFFF]/.test(str)) {\n                str = unescape(encodeURIComponent(str));\n            }\n    \n            var hash = md51(str);\n    \n            return !!raw ? hash : hex(hash);\n        };\n    \n        /**\n         * Performs the md5 hash on a binary string.\n         *\n         * @param {String}  content The binary string\n         * @param {Boolean} raw     True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.hashBinary = function (content, raw) {\n            var hash = md51(content);\n    \n            return !!raw ? hash : hex(hash);\n        };\n    \n        /**\n         * SparkMD5 OOP implementation for array buffers.\n         *\n         * Use this class to perform an incremental md5 ONLY for array buffers.\n         */\n        SparkMD5.ArrayBuffer = function () {\n            // call reset to init the instance\n            this.reset();\n        };\n    \n        ////////////////////////////////////////////////////////////////////////////\n    \n        /**\n         * Appends an array buffer.\n         *\n         * @param {ArrayBuffer} arr The array to be appended\n         *\n         * @return {SparkMD5.ArrayBuffer} The instance itself\n         */\n        SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n            // TODO: we could avoid the concatenation here but the algorithm would be more complex\n            //       if you find yourself needing extra performance, please make a PR.\n            var buff = this._concatArrayBuffer(this._buff, arr),\n                length = buff.length,\n                i;\n    \n            this._length += arr.byteLength;\n    \n            for (i = 64; i <= length; i += 64) {\n                md5cycle(this._state, md5blk_array(buff.subarray(i - 64, i)));\n            }\n    \n            // Avoids IE10 weirdness (documented above)\n            this._buff = (i - 64) < length ? buff.subarray(i - 64) : new Uint8Array(0);\n    \n            return this;\n        };\n    \n        /**\n         * Finishes the incremental computation, reseting the internal state and\n         * returning the result.\n         * Use the raw parameter to obtain the raw result instead of the hex one.\n         *\n         * @param {Boolean} raw True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n            var buff = this._buff,\n                length = buff.length,\n                tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n                i,\n                ret;\n    \n            for (i = 0; i < length; i += 1) {\n                tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n            }\n    \n            this._finish(tail, length);\n            ret = !!raw ? this._state : hex(this._state);\n    \n            this.reset();\n    \n            return ret;\n        };\n    \n        SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n    \n        /**\n         * Resets the internal state of the computation.\n         *\n         * @return {SparkMD5.ArrayBuffer} The instance itself\n         */\n        SparkMD5.ArrayBuffer.prototype.reset = function () {\n            this._buff = new Uint8Array(0);\n            this._length = 0;\n            this._state = [1732584193, -271733879, -1732584194, 271733878];\n    \n            return this;\n        };\n    \n        /**\n         * Releases memory used by the incremental buffer and other aditional\n         * resources. If you plan to use the instance again, use reset instead.\n         */\n        SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n    \n        /**\n         * Concats two array buffers, returning a new one.\n         *\n         * @param  {ArrayBuffer} first  The first array buffer\n         * @param  {ArrayBuffer} second The second array buffer\n         *\n         * @return {ArrayBuffer} The new array buffer\n         */\n        SparkMD5.ArrayBuffer.prototype._concatArrayBuffer = function (first, second) {\n            var firstLength = first.length,\n                result = new Uint8Array(firstLength + second.byteLength);\n    \n            result.set(first);\n            result.set(new Uint8Array(second), firstLength);\n    \n            return result;\n        };\n    \n        /**\n         * Performs the md5 hash on an array buffer.\n         *\n         * @param {ArrayBuffer} arr The array buffer\n         * @param {Boolean}     raw True to get the raw result, false to get the hex result\n         *\n         * @return {String|Array} The result\n         */\n        SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n            var hash = md51_array(new Uint8Array(arr));\n    \n            return !!raw ? hash : hex(hash);\n        };\n        \n        return FlashRuntime.register( 'Md5', {\n            init: function() {\n                // do nothing.\n            },\n    \n            loadFromBlob: function( file ) {\n                var blob = file.getSource(),\n                    chunkSize = 2 * 1024 * 1024,\n                    chunks = Math.ceil( blob.size / chunkSize ),\n                    chunk = 0,\n                    owner = this.owner,\n                    spark = new SparkMD5.ArrayBuffer(),\n                    me = this,\n                    blobSlice = blob.mozSlice || blob.webkitSlice || blob.slice,\n                    loadNext, fr;\n    \n                fr = new FileReader();\n    \n                loadNext = function() {\n                    var start, end;\n    \n                    start = chunk * chunkSize;\n                    end = Math.min( start + chunkSize, blob.size );\n    \n                    fr.onload = function( e ) {\n                        spark.append( e.target.result );\n                        owner.trigger( 'progress', {\n                            total: file.size,\n                            loaded: end\n                        });\n                    };\n    \n                    fr.onloadend = function() {\n                        fr.onloadend = fr.onload = null;\n    \n                        if ( ++chunk < chunks ) {\n                            setTimeout( loadNext, 1 );\n                        } else {\n                            setTimeout(function(){\n                                owner.trigger('load');\n                                me.result = spark.end();\n                                loadNext = file = blob = spark = null;\n                                owner.trigger('complete');\n                            }, 50 );\n                        }\n                    };\n    \n                    fr.readAsArrayBuffer( blobSlice.call( blob, start, end ) );\n                };\n    \n                loadNext();\n            },\n    \n            getResult: function() {\n                return this.result;\n            }\n        });\n    });\n    /**\n     * @fileOverview FlashRuntime\n     */\n    define('runtime/flash/runtime',[\n        'base',\n        'runtime/runtime',\n        'runtime/compbase'\n    ], function( Base, Runtime, CompBase ) {\n    \n        var $ = Base.$,\n            type = 'flash',\n            components = {};\n    \n    \n        function getFlashVersion() {\n            var version;\n    \n            try {\n                version = navigator.plugins[ 'Shockwave Flash' ];\n                version = version.description;\n            } catch ( ex ) {\n                try {\n                    version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash')\n                            .GetVariable('$version');\n                } catch ( ex2 ) {\n                    version = '0.0';\n                }\n            }\n            version = version.match( /\\d+/g );\n            return parseFloat( version[ 0 ] + '.' + version[ 1 ], 10 );\n        }\n    \n        function FlashRuntime() {\n            var pool = {},\n                clients = {},\n                destroy = this.destroy,\n                me = this,\n                jsreciver = Base.guid('webuploader_');\n    \n            Runtime.apply( me, arguments );\n            me.type = type;\n    \n    \n            // 这个方法的调用者，实际上是RuntimeClient\n            me.exec = function( comp, fn/*, args...*/ ) {\n                var client = this,\n                    uid = client.uid,\n                    args = Base.slice( arguments, 2 ),\n                    instance;\n    \n                clients[ uid ] = client;\n    \n                if ( components[ comp ] ) {\n                    if ( !pool[ uid ] ) {\n                        pool[ uid ] = new components[ comp ]( client, me );\n                    }\n    \n                    instance = pool[ uid ];\n    \n                    if ( instance[ fn ] ) {\n                        return instance[ fn ].apply( instance, args );\n                    }\n                }\n    \n                return me.flashExec.apply( client, arguments );\n            };\n    \n            function handler( evt, obj ) {\n                var type = evt.type || evt,\n                    parts, uid;\n    \n                parts = type.split('::');\n                uid = parts[ 0 ];\n                type = parts[ 1 ];\n    \n                // console.log.apply( console, arguments );\n    \n                if ( type === 'Ready' && uid === me.uid ) {\n                    me.trigger('ready');\n                } else if ( clients[ uid ] ) {\n                    clients[ uid ].trigger( type.toLowerCase(), evt, obj );\n                }\n    \n                // Base.log( evt, obj );\n            }\n    \n            // flash的接受器。\n            window[ jsreciver ] = function() {\n                var args = arguments;\n    \n                // 为了能捕获得到。\n                setTimeout(function() {\n                    handler.apply( null, args );\n                }, 1 );\n            };\n    \n            this.jsreciver = jsreciver;\n    \n            this.destroy = function() {\n                // @todo 删除池子中的所有实例\n                return destroy && destroy.apply( this, arguments );\n            };\n    \n            this.flashExec = function( comp, fn ) {\n                var flash = me.getFlash(),\n                    args = Base.slice( arguments, 2 );\n    \n                return flash.exec( this.uid, comp, fn, args );\n            };\n    \n            // @todo\n        }\n    \n        Base.inherits( Runtime, {\n            constructor: FlashRuntime,\n    \n            init: function() {\n                var container = this.getContainer(),\n                    opts = this.options,\n                    html;\n    \n                // if not the minimal height, shims are not initialized\n                // in older browsers (e.g FF3.6, IE6,7,8, Safari 4.0,5.0, etc)\n                container.css({\n                    position: 'absolute',\n                    top: '-8px',\n                    left: '-8px',\n                    width: '9px',\n                    height: '9px',\n                    overflow: 'hidden'\n                });\n    \n                // insert flash object\n                html = '<object id=\"' + this.uid + '\" type=\"application/' +\n                        'x-shockwave-flash\" data=\"' +  opts.swf + '\" ';\n    \n                if ( Base.browser.ie ) {\n                    html += 'classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" ';\n                }\n    \n                html += 'width=\"100%\" height=\"100%\" style=\"outline:0\">'  +\n                    '<param name=\"movie\" value=\"' + opts.swf + '\" />' +\n                    '<param name=\"flashvars\" value=\"uid=' + this.uid +\n                    '&jsreciver=' + this.jsreciver + '\" />' +\n                    '<param name=\"wmode\" value=\"transparent\" />' +\n                    '<param name=\"allowscriptaccess\" value=\"always\" />' +\n                '</object>';\n    \n                container.html( html );\n            },\n    \n            getFlash: function() {\n                if ( this._flash ) {\n                    return this._flash;\n                }\n    \n                this._flash = $( '#' + this.uid ).get( 0 );\n                return this._flash;\n            }\n    \n        });\n    \n        FlashRuntime.register = function( name, component ) {\n            component = components[ name ] = Base.inherits( CompBase, $.extend({\n    \n                // @todo fix this later\n                flashExec: function() {\n                    var owner = this.owner,\n                        runtime = this.getRuntime();\n    \n                    return runtime.flashExec.apply( owner, arguments );\n                }\n            }, component ) );\n    \n            return component;\n        };\n    \n        if ( getFlashVersion() >= 11.4 ) {\n            Runtime.addRuntime( type, FlashRuntime );\n        }\n    \n        return FlashRuntime;\n    });\n    /**\n     * @fileOverview FilePicker\n     */\n    define('runtime/flash/filepicker',[\n        'base',\n        'runtime/flash/runtime'\n    ], function( Base, FlashRuntime ) {\n        var $ = Base.$;\n    \n        return FlashRuntime.register( 'FilePicker', {\n            init: function( opts ) {\n                var copy = $.extend({}, opts ),\n                    len, i;\n    \n                // 修复Flash再没有设置title的情况下无法弹出flash文件选择框的bug.\n                len = copy.accept && copy.accept.length;\n                for (  i = 0; i < len; i++ ) {\n                    if ( !copy.accept[ i ].title ) {\n                        copy.accept[ i ].title = 'Files';\n                    }\n                }\n    \n                delete copy.button;\n                delete copy.id;\n                delete copy.container;\n    \n                this.flashExec( 'FilePicker', 'init', copy );\n            },\n    \n            destroy: function() {\n                this.flashExec( 'FilePicker', 'destroy' );\n            }\n        });\n    });\n    /**\n     * @fileOverview 图片压缩\n     */\n    define('runtime/flash/image',[\n        'runtime/flash/runtime'\n    ], function( FlashRuntime ) {\n    \n        return FlashRuntime.register( 'Image', {\n            // init: function( options ) {\n            //     var owner = this.owner;\n    \n            //     this.flashExec( 'Image', 'init', options );\n            //     owner.on( 'load', function() {\n            //         debugger;\n            //     });\n            // },\n    \n            loadFromBlob: function( blob ) {\n                var owner = this.owner;\n    \n                owner.info() && this.flashExec( 'Image', 'info', owner.info() );\n                owner.meta() && this.flashExec( 'Image', 'meta', owner.meta() );\n    \n                this.flashExec( 'Image', 'loadFromBlob', blob.uid );\n            }\n        });\n    });\n    /**\n     * @fileOverview  Transport flash实现\n     */\n    define('runtime/flash/transport',[\n        'base',\n        'runtime/flash/runtime',\n        'runtime/client'\n    ], function( Base, FlashRuntime, RuntimeClient ) {\n        var $ = Base.$;\n    \n        return FlashRuntime.register( 'Transport', {\n            init: function() {\n                this._status = 0;\n                this._response = null;\n                this._responseJson = null;\n            },\n    \n            send: function() {\n                var owner = this.owner,\n                    opts = this.options,\n                    xhr = this._initAjax(),\n                    blob = owner._blob,\n                    server = opts.server,\n                    binary;\n    \n                xhr.connectRuntime( blob.ruid );\n    \n                if ( opts.sendAsBinary ) {\n                    server += (/\\?/.test( server ) ? '&' : '?') +\n                            $.param( owner._formData );\n    \n                    binary = blob.uid;\n                } else {\n                    $.each( owner._formData, function( k, v ) {\n                        xhr.exec( 'append', k, v );\n                    });\n    \n                    xhr.exec( 'appendBlob', opts.fileVal, blob.uid,\n                            opts.filename || owner._formData.name || '' );\n                }\n    \n                this._setRequestHeader( xhr, opts.headers );\n                xhr.exec( 'send', {\n                    method: opts.method,\n                    url: server,\n                    forceURLStream: opts.forceURLStream,\n                    mimeType: 'application/octet-stream'\n                }, binary );\n            },\n    \n            getStatus: function() {\n                return this._status;\n            },\n    \n            getResponse: function() {\n                return this._response || '';\n            },\n    \n            getResponseAsJson: function() {\n                return this._responseJson;\n            },\n    \n            abort: function() {\n                var xhr = this._xhr;\n    \n                if ( xhr ) {\n                    xhr.exec('abort');\n                    xhr.destroy();\n                    this._xhr = xhr = null;\n                }\n            },\n    \n            destroy: function() {\n                this.abort();\n            },\n    \n            _initAjax: function() {\n                var me = this,\n                    xhr = new RuntimeClient('XMLHttpRequest');\n    \n                xhr.on( 'uploadprogress progress', function( e ) {\n                    var percent = e.loaded / e.total;\n                    percent = Math.min( 1, Math.max( 0, percent ) );\n                    return me.trigger( 'progress', percent );\n                });\n    \n                xhr.on( 'load', function() {\n                    var status = xhr.exec('getStatus'),\n                        readBody = false,\n                        err = '',\n                        p;\n    \n                    xhr.off();\n                    me._xhr = null;\n    \n                    if ( status >= 200 && status < 300 ) {\n                        readBody = true;\n                    } else if ( status >= 500 && status < 600 ) {\n                        readBody = true;\n                        err = 'server';\n                    } else {\n                        err = 'http';\n                    }\n    \n                    if ( readBody ) {\n                        me._response = xhr.exec('getResponse');\n                        me._response = decodeURIComponent( me._response );\n    \n                        // flash 处理可能存在 bug, 没辙只能靠 js 了\n                        // try {\n                        //     me._responseJson = xhr.exec('getResponseAsJson');\n                        // } catch ( error ) {\n                            \n                        p = window.JSON && window.JSON.parse || function( s ) {\n                            try {\n                                return new Function('return ' + s).call();\n                            } catch ( err ) {\n                                return {};\n                            }\n                        };\n                        me._responseJson  = me._response ? p(me._response) : {};\n                            \n                        // }\n                    }\n                    \n                    xhr.destroy();\n                    xhr = null;\n    \n                    return err ? me.trigger( 'error', err ) : me.trigger('load');\n                });\n    \n                xhr.on( 'error', function() {\n                    xhr.off();\n                    me._xhr = null;\n                    me.trigger( 'error', 'http' );\n                });\n    \n                me._xhr = xhr;\n                return xhr;\n            },\n    \n            _setRequestHeader: function( xhr, headers ) {\n                $.each( headers, function( key, val ) {\n                    xhr.exec( 'setRequestHeader', key, val );\n                });\n            }\n        });\n    });\n    /**\n     * @fileOverview Blob Html实现\n     */\n    define('runtime/flash/blob',[\n        'runtime/flash/runtime',\n        'lib/blob'\n    ], function( FlashRuntime, Blob ) {\n    \n        return FlashRuntime.register( 'Blob', {\n            slice: function( start, end ) {\n                var blob = this.flashExec( 'Blob', 'slice', start, end );\n    \n                return new Blob( blob.uid, blob );\n            }\n        });\n    });\n    /**\n     * @fileOverview  Md5 flash实现\n     */\n    define('runtime/flash/md5',[\n        'runtime/flash/runtime'\n    ], function( FlashRuntime ) {\n        \n        return FlashRuntime.register( 'Md5', {\n            init: function() {\n                // do nothing.\n            },\n    \n            loadFromBlob: function( blob ) {\n                return this.flashExec( 'Md5', 'loadFromBlob', blob.uid );\n            }\n        });\n    });\n    /**\n     * @fileOverview 完全版本。\n     */\n    define('preset/all',[\n        'base',\n    \n        // widgets\n        'widgets/filednd',\n        'widgets/filepaste',\n        'widgets/filepicker',\n        'widgets/image',\n        'widgets/queue',\n        'widgets/runtime',\n        'widgets/upload',\n        'widgets/validator',\n        'widgets/md5',\n    \n        // runtimes\n        // html5\n        'runtime/html5/blob',\n        'runtime/html5/dnd',\n        'runtime/html5/filepaste',\n        'runtime/html5/filepicker',\n        'runtime/html5/imagemeta/exif',\n        'runtime/html5/androidpatch',\n        'runtime/html5/image',\n        'runtime/html5/transport',\n        'runtime/html5/md5',\n    \n        // flash\n        'runtime/flash/filepicker',\n        'runtime/flash/image',\n        'runtime/flash/transport',\n        'runtime/flash/blob',\n        'runtime/flash/md5'\n    ], function( Base ) {\n        return Base;\n    });\n    define('webuploader',[\n        'preset/all'\n    ], function( preset ) {\n        return preset;\n    });\n    return require('webuploader');\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/dcat/plugins/webuploader/webuploader.withoutimage.js",
    "content": "/*! WebUploader 0.1.5 */\n\n\n/**\n * @fileOverview 让内部各个部件的代码可以用[amd](https://github.com/amdjs/amdjs-api/wiki/AMD)模块定义方式组织起来。\n *\n * AMD API 内部的简单不完全实现，请忽略。只有当WebUploader被合并成一个文件的时候才会引入。\n */\n(function( root, factory ) {\n    var modules = {},\n\n        // 内部require, 简单不完全实现。\n        // https://github.com/amdjs/amdjs-api/wiki/require\n        _require = function( deps, callback ) {\n            var args, len, i;\n\n            // 如果deps不是数组，则直接返回指定module\n            if ( typeof deps === 'string' ) {\n                return getModule( deps );\n            } else {\n                args = [];\n                for( len = deps.length, i = 0; i < len; i++ ) {\n                    args.push( getModule( deps[ i ] ) );\n                }\n\n                return callback.apply( null, args );\n            }\n        },\n\n        // 内部define，暂时不支持不指定id.\n        _define = function( id, deps, factory ) {\n            if ( arguments.length === 2 ) {\n                factory = deps;\n                deps = null;\n            }\n\n            _require( deps || [], function() {\n                setModule( id, factory, arguments );\n            });\n        },\n\n        // 设置module, 兼容CommonJs写法。\n        setModule = function( id, factory, args ) {\n            var module = {\n                    exports: factory\n                },\n                returned;\n\n            if ( typeof factory === 'function' ) {\n                args.length || (args = [ _require, module.exports, module ]);\n                returned = factory.apply( null, args );\n                returned !== undefined && (module.exports = returned);\n            }\n\n            modules[ id ] = module.exports;\n        },\n\n        // 根据id获取module\n        getModule = function( id ) {\n            var module = modules[ id ] || root[ id ];\n\n            if ( !module ) {\n                throw new Error( '`' + id + '` is undefined' );\n            }\n\n            return module;\n        },\n\n        // 将所有modules，将路径ids装换成对象。\n        exportsTo = function( obj ) {\n            var key, host, parts, part, last, ucFirst;\n\n            // make the first character upper case.\n            ucFirst = function( str ) {\n                return str && (str.charAt( 0 ).toUpperCase() + str.substr( 1 ));\n            };\n\n            for ( key in modules ) {\n                host = obj;\n\n                if ( !modules.hasOwnProperty( key ) ) {\n                    continue;\n                }\n\n                parts = key.split('/');\n                last = ucFirst( parts.pop() );\n\n                while( (part = ucFirst( parts.shift() )) ) {\n                    host[ part ] = host[ part ] || {};\n                    host = host[ part ];\n                }\n\n                host[ last ] = modules[ key ];\n            }\n\n            return obj;\n        },\n\n        makeExport = function( dollar ) {\n            root.__dollar = dollar;\n\n            // exports every module.\n            return exportsTo( factory( root, _define, _require ) );\n        },\n\n        origin;\n\n    if ( typeof module === 'object' && typeof module.exports === 'object' ) {\n\n        // For CommonJS and CommonJS-like environments where a proper window is present,\n        module.exports = makeExport();\n    } else if ( typeof define === 'function' && define.amd ) {\n\n        // Allow using this built library as an AMD module\n        // in another project. That other project will only\n        // see this AMD call, not the internal modules in\n        // the closure below.\n        define([ 'jquery' ], makeExport );\n    } else {\n\n        // Browser globals case. Just assign the\n        // result to a property on the global.\n        origin = root.WebUploader;\n        root.WebUploader = makeExport();\n        root.WebUploader.noConflict = function() {\n            root.WebUploader = origin;\n        };\n    }\n})( window, function( window, define, require ) {\n\n\n    /**\n     * @fileOverview jQuery or Zepto\n     */\n    define('dollar-third',[],function() {\n        var $ = window.__dollar || window.jQuery || window.Zepto;\n    \n        if ( !$ ) {\n            throw new Error('jQuery or Zepto not found!');\n        }\n    \n        return $;\n    });\n    /**\n     * @fileOverview Dom 操作相关\n     */\n    define('dollar',[\n        'dollar-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 使用jQuery的Promise\n     */\n    define('promise-third',[\n        'dollar'\n    ], function( $ ) {\n        return {\n            Deferred: $.Deferred,\n            when: $.when,\n    \n            isPromise: function( anything ) {\n                return anything && typeof anything.then === 'function';\n            }\n        };\n    });\n    /**\n     * @fileOverview Promise/A+\n     */\n    define('promise',[\n        'promise-third'\n    ], function( _ ) {\n        return _;\n    });\n    /**\n     * @fileOverview 基础类方法。\n     */\n    \n    /**\n     * Web Uploader内部类的详细说明，以下提及的功能类，都可以在`WebUploader`这个变量中访问到。\n     *\n     * As you know, Web Uploader的每个文件都是用过[AMD](https://github.com/amdjs/amdjs-api/wiki/AMD)规范中的`define`组织起来的, 每个Module都会有个module id.\n     * 默认module id为该文件的路径，而此路径将会转化成名字空间存放在WebUploader中。如：\n     *\n     * * module `base`：WebUploader.Base\n     * * module `file`: WebUploader.File\n     * * module `lib/dnd`: WebUploader.Lib.Dnd\n     * * module `runtime/html5/dnd`: WebUploader.Runtime.Html5.Dnd\n     *\n     *\n     * 以下文档中对类的使用可能省略掉了`WebUploader`前缀。\n     * @module WebUploader\n     * @title WebUploader API文档\n     */\n    define('base',[\n        'dollar',\n        'promise'\n    ], function( $, promise ) {\n    \n        var noop = function() {},\n            call = Function.call;\n    \n        // http://jsperf.com/uncurrythis\n        // 反科里化\n        function uncurryThis( fn ) {\n            return function() {\n                return call.apply( fn, arguments );\n            };\n        }\n    \n        function bindFn( fn, context ) {\n            return function() {\n                return fn.apply( context, arguments );\n            };\n        }\n    \n        function createObject( proto ) {\n            var f;\n    \n            if ( Object.create ) {\n                return Object.create( proto );\n            } else {\n                f = function() {};\n                f.prototype = proto;\n                return new f();\n            }\n        }\n    \n    \n        /**\n         * 基础类，提供一些简单常用的方法。\n         * @class Base\n         */\n        return {\n    \n            /**\n             * @property {String} version 当前版本号。\n             */\n            version: '0.1.5',\n    \n            /**\n             * @property {jQuery|Zepto} $ 引用依赖的jQuery或者Zepto对象。\n             */\n            $: $,\n    \n            Deferred: promise.Deferred,\n    \n            isPromise: promise.isPromise,\n    \n            when: promise.when,\n    \n            /**\n             * @description  简单的浏览器检查结果。\n             *\n             * * `webkit`  webkit版本号，如果浏览器为非webkit内核，此属性为`undefined`。\n             * * `chrome`  chrome浏览器版本号，如果浏览器为chrome，此属性为`undefined`。\n             * * `ie`  ie浏览器版本号，如果浏览器为非ie，此属性为`undefined`。**暂不支持ie10+**\n             * * `firefox`  firefox浏览器版本号，如果浏览器为非firefox，此属性为`undefined`。\n             * * `safari`  safari浏览器版本号，如果浏览器为非safari，此属性为`undefined`。\n             * * `opera`  opera浏览器版本号，如果浏览器为非opera，此属性为`undefined`。\n             *\n             * @property {Object} [browser]\n             */\n            browser: (function( ua ) {\n                var ret = {},\n                    webkit = ua.match( /WebKit\\/([\\d.]+)/ ),\n                    chrome = ua.match( /Chrome\\/([\\d.]+)/ ) ||\n                        ua.match( /CriOS\\/([\\d.]+)/ ),\n    \n                    ie = ua.match( /MSIE\\s([\\d\\.]+)/ ) ||\n                        ua.match( /(?:trident)(?:.*rv:([\\w.]+))?/i ),\n                    firefox = ua.match( /Firefox\\/([\\d.]+)/ ),\n                    safari = ua.match( /Safari\\/([\\d.]+)/ ),\n                    opera = ua.match( /OPR\\/([\\d.]+)/ );\n    \n                webkit && (ret.webkit = parseFloat( webkit[ 1 ] ));\n                chrome && (ret.chrome = parseFloat( chrome[ 1 ] ));\n                ie && (ret.ie = parseFloat( ie[ 1 ] ));\n                firefox && (ret.firefox = parseFloat( firefox[ 1 ] ));\n                safari && (ret.safari = parseFloat( safari[ 1 ] ));\n                opera && (ret.opera = parseFloat( opera[ 1 ] ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * @description  操作系统检查结果。\n             *\n             * * `android`  如果在android浏览器环境下，此值为对应的android版本号，否则为`undefined`。\n             * * `ios` 如果在ios浏览器环境下，此值为对应的ios版本号，否则为`undefined`。\n             * @property {Object} [os]\n             */\n            os: (function( ua ) {\n                var ret = {},\n    \n                    // osx = !!ua.match( /\\(Macintosh\\; Intel / ),\n                    android = ua.match( /(?:Android);?[\\s\\/]+([\\d.]+)?/ ),\n                    ios = ua.match( /(?:iPad|iPod|iPhone).*OS\\s([\\d_]+)/ );\n    \n                // osx && (ret.osx = true);\n                android && (ret.android = parseFloat( android[ 1 ] ));\n                ios && (ret.ios = parseFloat( ios[ 1 ].replace( /_/g, '.' ) ));\n    \n                return ret;\n            })( navigator.userAgent ),\n    \n            /**\n             * 实现类与类之间的继承。\n             * @method inherits\n             * @grammar Base.inherits( super ) => child\n             * @grammar Base.inherits( super, protos ) => child\n             * @grammar Base.inherits( super, protos, statics ) => child\n             * @param  {Class} super 父类\n             * @param  {Object | Function} [protos] 子类或者对象。如果对象中包含constructor，子类将是用此属性值。\n             * @param  {Function} [protos.constructor] 子类构造器，不指定的话将创建个临时的直接执行父类构造器的方法。\n             * @param  {Object} [statics] 静态属性或方法。\n             * @return {Class} 返回子类。\n             * @example\n             * function Person() {\n             *     console.log( 'Super' );\n             * }\n             * Person.prototype.hello = function() {\n             *     console.log( 'hello' );\n             * };\n             *\n             * var Manager = Base.inherits( Person, {\n             *     world: function() {\n             *         console.log( 'World' );\n             *     }\n             * });\n             *\n             * // 因为没有指定构造器，父类的构造器将会执行。\n             * var instance = new Manager();    // => Super\n             *\n             * // 继承子父类的方法\n             * instance.hello();    // => hello\n             * instance.world();    // => World\n             *\n             * // 子类的__super__属性指向父类\n             * console.log( Manager.__super__ === Person );    // => true\n             */\n            inherits: function( Super, protos, staticProtos ) {\n                var child;\n    \n                if ( typeof protos === 'function' ) {\n                    child = protos;\n                    protos = null;\n                } else if ( protos && protos.hasOwnProperty('constructor') ) {\n                    child = protos.constructor;\n                } else {\n                    child = function() {\n                        return Super.apply( this, arguments );\n                    };\n                }\n    \n                // 复制静态方法\n                $.extend( true, child, Super, staticProtos || {} );\n    \n                /* jshint camelcase: false */\n    \n                // 让子类的__super__属性指向父类。\n                child.__super__ = Super.prototype;\n    \n                // 构建原型，添加原型方法或属性。\n                // 暂时用Object.create实现。\n                child.prototype = createObject( Super.prototype );\n                protos && $.extend( true, child.prototype, protos );\n    \n                return child;\n            },\n    \n            /**\n             * 一个不做任何事情的方法。可以用来赋值给默认的callback.\n             * @method noop\n             */\n            noop: noop,\n    \n            /**\n             * 返回一个新的方法，此方法将已指定的`context`来执行。\n             * @grammar Base.bindFn( fn, context ) => Function\n             * @method bindFn\n             * @example\n             * var doSomething = function() {\n             *         console.log( this.name );\n             *     },\n             *     obj = {\n             *         name: 'Object Name'\n             *     },\n             *     aliasFn = Base.bind( doSomething, obj );\n             *\n             *  aliasFn();    // => Object Name\n             *\n             */\n            bindFn: bindFn,\n    \n            /**\n             * 引用Console.log如果存在的话，否则引用一个[空函数noop](#WebUploader:Base.noop)。\n             * @grammar Base.log( args... ) => undefined\n             * @method log\n             */\n            log: (function() {\n                if ( window.console ) {\n                    return bindFn( console.log, console );\n                }\n                return noop;\n            })(),\n    \n            nextTick: (function() {\n    \n                return function( cb ) {\n                    setTimeout( cb, 1 );\n                };\n    \n                // @bug 当浏览器不在当前窗口时就停了。\n                // var next = window.requestAnimationFrame ||\n                //     window.webkitRequestAnimationFrame ||\n                //     window.mozRequestAnimationFrame ||\n                //     function( cb ) {\n                //         window.setTimeout( cb, 1000 / 60 );\n                //     };\n    \n                // // fix: Uncaught TypeError: Illegal invocation\n                // return bindFn( next, window );\n            })(),\n    \n            /**\n             * 被[uncurrythis](http://www.2ality.com/2011/11/uncurrying-this.html)的数组slice方法。\n             * 将用来将非数组对象转化成数组对象。\n             * @grammar Base.slice( target, start[, end] ) => Array\n             * @method slice\n             * @example\n             * function doSomthing() {\n             *     var args = Base.slice( arguments, 1 );\n             *     console.log( args );\n             * }\n             *\n             * doSomthing( 'ignored', 'arg2', 'arg3' );    // => Array [\"arg2\", \"arg3\"]\n             */\n            slice: uncurryThis( [].slice ),\n    \n            /**\n             * 生成唯一的ID\n             * @method guid\n             * @grammar Base.guid() => String\n             * @grammar Base.guid( prefx ) => String\n             */\n            guid: (function() {\n                var counter = 0;\n    \n                return function( prefix ) {\n                    var guid = (+new Date()).toString( 32 ),\n                        i = 0;\n    \n                    for ( ; i < 5; i++ ) {\n                        guid += Math.floor( Math.random() * 65535 ).toString( 32 );\n                    }\n    \n                    return (prefix || 'wu_') + guid + (counter++).toString( 32 );\n                };\n            })(),\n    \n            /**\n             * 格式化文件大小, 输出成带单位的字符串\n             * @method formatSize\n             * @grammar Base.formatSize( size ) => String\n             * @grammar Base.formatSize( size, pointLength ) => String\n             * @grammar Base.formatSize( size, pointLength, units ) => String\n             * @param {Number} size 文件大小\n             * @param {Number} [pointLength=2] 精确到的小数点数。\n             * @param {Array} [units=[ 'B', 'K', 'M', 'G', 'TB' ]] 单位数组。从字节，到千字节，一直往上指定。如果单位数组里面只指定了到了K(千字节)，同时文件大小大于M, 此方法的输出将还是显示成多少K.\n             * @example\n             * console.log( Base.formatSize( 100 ) );    // => 100B\n             * console.log( Base.formatSize( 1024 ) );    // => 1.00K\n             * console.log( Base.formatSize( 1024, 0 ) );    // => 1K\n             * console.log( Base.formatSize( 1024 * 1024 ) );    // => 1.00M\n             * console.log( Base.formatSize( 1024 * 1024 * 1024 ) );    // => 1.00G\n             * console.log( Base.formatSize( 1024 * 1024 * 1024, 0, ['B', 'KB', 'MB'] ) );    // => 1024MB\n             */\n            formatSize: function( size, pointLength, units ) {\n                var unit;\n    \n                units = units || [ 'B', 'K', 'M', 'G', 'TB' ];\n    \n                while ( (unit = units.shift()) && size > 1024 ) {\n                    size = size / 1024;\n                }\n    \n                return (unit === 'B' ? size : size.toFixed( pointLength || 2 )) +\n                        unit;\n            }\n        };\n    });\n    /**\n     * 事件处理类，可以独立使用，也可以扩展给对象使用。\n     * @fileOverview Mediator\n     */\n    define('mediator',[\n        'base'\n    ], function( Base ) {\n        var $ = Base.$,\n            slice = [].slice,\n            separator = /\\s+/,\n            protos;\n    \n        // 根据条件过滤出事件handlers.\n        function findHandlers( arr, name, callback, context ) {\n            return $.grep( arr, function( handler ) {\n                return handler &&\n                        (!name || handler.e === name) &&\n                        (!callback || handler.cb === callback ||\n                        handler.cb._cb === callback) &&\n                        (!context || handler.ctx === context);\n            });\n        }\n    \n        function eachEvent( events, callback, iterator ) {\n            // 不支持对象，只支持多个event用空格隔开\n            $.each( (events || '').split( separator ), function( _, key ) {\n                iterator( key, callback );\n            });\n        }\n    \n        function triggerHanders( events, args ) {\n            var stoped = false,\n                i = -1,\n                len = events.length,\n                handler;\n    \n            while ( ++i < len ) {\n                handler = events[ i ];\n    \n                if ( handler.cb.apply( handler.ctx2, args ) === false ) {\n                    stoped = true;\n                    break;\n                }\n            }\n    \n            return !stoped;\n        }\n    \n        protos = {\n    \n            /**\n             * 绑定事件。\n             *\n             * `callback`方法在执行时，arguments将会来源于trigger的时候携带的参数。如\n             * ```javascript\n             * var obj = {};\n             *\n             * // 使得obj有事件行为\n             * Mediator.installTo( obj );\n             *\n             * obj.on( 'testa', function( arg1, arg2 ) {\n             *     console.log( arg1, arg2 ); // => 'arg1', 'arg2'\n             * });\n             *\n             * obj.trigger( 'testa', 'arg1', 'arg2' );\n             * ```\n             *\n             * 如果`callback`中，某一个方法`return false`了，则后续的其他`callback`都不会被执行到。\n             * 切会影响到`trigger`方法的返回值，为`false`。\n             *\n             * `on`还可以用来添加一个特殊事件`all`, 这样所有的事件触发都会响应到。同时此类`callback`中的arguments有一个不同处，\n             * 就是第一个参数为`type`，记录当前是什么事件在触发。此类`callback`的优先级比脚低，会再正常`callback`执行完后触发。\n             * ```javascript\n             * obj.on( 'all', function( type, arg1, arg2 ) {\n             *     console.log( type, arg1, arg2 ); // => 'testa', 'arg1', 'arg2'\n             * });\n             * ```\n             *\n             * @method on\n             * @grammar on( name, callback[, context] ) => self\n             * @param  {String}   name     事件名，支持多个事件用空格隔开\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             * @class Mediator\n             */\n            on: function( name, callback, context ) {\n                var me = this,\n                    set;\n    \n                if ( !callback ) {\n                    return this;\n                }\n    \n                set = this._events || (this._events = []);\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var handler = { e: name };\n    \n                    handler.cb = callback;\n                    handler.ctx = context;\n                    handler.ctx2 = context || me;\n                    handler.id = set.length;\n    \n                    set.push( handler );\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 绑定事件，且当handler执行完后，自动解除绑定。\n             * @method once\n             * @grammar once( name, callback[, context] ) => self\n             * @param  {String}   name     事件名\n             * @param  {Function} callback 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            once: function( name, callback, context ) {\n                var me = this;\n    \n                if ( !callback ) {\n                    return me;\n                }\n    \n                eachEvent( name, callback, function( name, callback ) {\n                    var once = function() {\n                            me.off( name, once );\n                            return callback.apply( context || me, arguments );\n                        };\n    \n                    once._cb = callback;\n                    me.on( name, once, context );\n                });\n    \n                return me;\n            },\n    \n            /**\n             * 解除事件绑定\n             * @method off\n             * @grammar off( [name[, callback[, context] ] ] ) => self\n             * @param  {String}   [name]     事件名\n             * @param  {Function} [callback] 事件处理器\n             * @param  {Object}   [context]  事件处理器的上下文。\n             * @return {self} 返回自身，方便链式\n             * @chainable\n             */\n            off: function( name, cb, ctx ) {\n                var events = this._events;\n    \n                if ( !events ) {\n                    return this;\n                }\n    \n                if ( !name && !cb && !ctx ) {\n                    this._events = [];\n                    return this;\n                }\n    \n                eachEvent( name, cb, function( name, cb ) {\n                    $.each( findHandlers( events, name, cb, ctx ), function() {\n                        delete events[ this.id ];\n                    });\n                });\n    \n                return this;\n            },\n    \n            /**\n             * 触发事件\n             * @method trigger\n             * @grammar trigger( name[, args...] ) => self\n             * @param  {String}   type     事件名\n             * @param  {*} [...] 任意参数\n             * @return {Boolean} 如果handler中return false了，则返回false, 否则返回true\n             */\n            trigger: function( type ) {\n                var args, events, allEvents;\n    \n                if ( !this._events || !type ) {\n                    return this;\n                }\n    \n                args = slice.call( arguments, 1 );\n                events = findHandlers( this._events, type );\n                allEvents = findHandlers( this._events, 'all' );\n    \n                return triggerHanders( events, args ) &&\n                        triggerHanders( allEvents, arguments );\n            }\n        };\n    \n        /**\n         * 中介者，它本身是个单例，但可以通过[installTo](#WebUploader:Mediator:installTo)方法，使任何对象具备事件行为。\n         * 主要目的是负责模块与模块之间的合作，降低耦合度。\n         *\n         * @class Mediator\n         */\n        return $.extend({\n    \n            /**\n             * 可以通过这个接口，使任何对象具备事件功能。\n             * @method installTo\n             * @param  {Object} obj 需要具备事件行为的对象。\n             * @return {Object} 返回obj.\n             */\n            installTo: function( obj ) {\n                return $.extend( obj, protos );\n            }\n    \n        }, protos );\n    });\n    /**\n     * @fileOverview Uploader上传类\n     */\n    define('uploader',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$;\n    \n        /**\n         * 上传入口类。\n         * @class Uploader\n         * @constructor\n         * @grammar new Uploader( opts ) => Uploader\n         * @example\n         * var uploader = WebUploader.Uploader({\n         *     swf: 'path_of_swf/Uploader.swf',\n         *\n         *     // 开起分片上传。\n         *     chunked: true\n         * });\n         */\n        function Uploader( opts ) {\n            this.options = $.extend( true, {}, Uploader.options, opts );\n            this._init( this.options );\n        }\n    \n        // default Options\n        // widgets中有相应扩展\n        Uploader.options = {};\n        Mediator.installTo( Uploader.prototype );\n    \n        // 批量添加纯命令式方法。\n        $.each({\n            upload: 'start-upload',\n            stop: 'stop-upload',\n            getFile: 'get-file',\n            getFiles: 'get-files',\n            addFile: 'add-file',\n            addFiles: 'add-file',\n            sort: 'sort-files',\n            removeFile: 'remove-file',\n            cancelFile: 'cancel-file',\n            skipFile: 'skip-file',\n            retry: 'retry',\n            isInProgress: 'is-in-progress',\n            makeThumb: 'make-thumb',\n            md5File: 'md5-file',\n            getDimension: 'get-dimension',\n            addButton: 'add-btn',\n            predictRuntimeType: 'predict-runtime-type',\n            refresh: 'refresh',\n            disable: 'disable',\n            enable: 'enable',\n            reset: 'reset'\n        }, function( fn, command ) {\n            Uploader.prototype[ fn ] = function() {\n                return this.request( command, arguments );\n            };\n        });\n    \n        $.extend( Uploader.prototype, {\n            state: 'pending',\n    \n            _init: function( opts ) {\n                var me = this;\n    \n                me.request( 'init', opts, function() {\n                    me.state = 'ready';\n                    me.trigger('ready');\n                });\n            },\n    \n            /**\n             * 获取或者设置Uploader配置项。\n             * @method option\n             * @grammar option( key ) => *\n             * @grammar option( key, val ) => self\n             * @example\n             *\n             * // 初始状态图片上传前不会压缩\n             * var uploader = new WebUploader.Uploader({\n             *     compress: null;\n             * });\n             *\n             * // 修改后图片上传前，尝试将图片压缩到1600 * 1600\n             * uploader.option( 'compress', {\n             *     width: 1600,\n             *     height: 1600\n             * });\n             */\n            option: function( key, val ) {\n                var opts = this.options;\n    \n                // setter\n                if ( arguments.length > 1 ) {\n    \n                    if ( $.isPlainObject( val ) &&\n                            $.isPlainObject( opts[ key ] ) ) {\n                        $.extend( opts[ key ], val );\n                    } else {\n                        opts[ key ] = val;\n                    }\n    \n                } else {    // getter\n                    return key ? opts[ key ] : opts;\n                }\n            },\n    \n            /**\n             * 获取文件统计信息。返回一个包含一下信息的对象。\n             * * `successNum` 上传成功的文件数\n             * * `progressNum` 上传中的文件数\n             * * `cancelNum` 被删除的文件数\n             * * `invalidNum` 无效的文件数\n             * * `uploadFailNum` 上传失败的文件数\n             * * `queueNum` 还在队列中的文件数\n             * * `interruptNum` 被暂停的文件数\n             * @method getStats\n             * @grammar getStats() => Object\n             */\n            getStats: function() {\n                // return this._mgr.getStats.apply( this._mgr, arguments );\n                var stats = this.request('get-stats');\n    \n                return stats ? {\n                    successNum: stats.numOfSuccess,\n                    progressNum: stats.numOfProgress,\n    \n                    // who care?\n                    // queueFailNum: 0,\n                    cancelNum: stats.numOfCancel,\n                    invalidNum: stats.numOfInvalid,\n                    uploadFailNum: stats.numOfUploadFailed,\n                    queueNum: stats.numOfQueue,\n                    interruptNum: stats.numofInterrupt\n                } : {};\n            },\n    \n            // 需要重写此方法来来支持opts.onEvent和instance.onEvent的处理器\n            trigger: function( type/*, args...*/ ) {\n                var args = [].slice.call( arguments, 1 ),\n                    opts = this.options,\n                    name = 'on' + type.substring( 0, 1 ).toUpperCase() +\n                        type.substring( 1 );\n    \n                if (\n                        // 调用通过on方法注册的handler.\n                        Mediator.trigger.apply( this, arguments ) === false ||\n    \n                        // 调用opts.onEvent\n                        $.isFunction( opts[ name ] ) &&\n                        opts[ name ].apply( this, args ) === false ||\n    \n                        // 调用this.onEvent\n                        $.isFunction( this[ name ] ) &&\n                        this[ name ].apply( this, args ) === false ||\n    \n                        // 广播所有uploader的事件。\n                        Mediator.trigger.apply( Mediator,\n                        [ this, type ].concat( args ) ) === false ) {\n    \n                    return false;\n                }\n    \n                return true;\n            },\n    \n            /**\n             * 销毁 webuploader 实例\n             * @method destroy\n             * @grammar destroy() => undefined\n             */\n            destroy: function() {\n                this.request( 'destroy', arguments );\n                this.off();\n            },\n    \n            // widgets/widget.js将补充此方法的详细文档。\n            request: Base.noop\n        });\n    \n        /**\n         * 创建Uploader实例，等同于new Uploader( opts );\n         * @method create\n         * @class Base\n         * @static\n         * @grammar Base.create( opts ) => Uploader\n         */\n        Base.create = Uploader.create = function( opts ) {\n            return new Uploader( opts );\n        };\n    \n        // 暴露Uploader，可以通过它来扩展业务逻辑。\n        Base.Uploader = Uploader;\n    \n        return Uploader;\n    });\n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/runtime',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            factories = {},\n    \n            // 获取对象的第一个key\n            getFirstKey = function( obj ) {\n                for ( var key in obj ) {\n                    if ( obj.hasOwnProperty( key ) ) {\n                        return key;\n                    }\n                }\n                return null;\n            };\n    \n        // 接口类。\n        function Runtime( options ) {\n            this.options = $.extend({\n                container: document.body\n            }, options );\n            this.uid = Base.guid('rt_');\n        }\n    \n        $.extend( Runtime.prototype, {\n    \n            getContainer: function() {\n                var opts = this.options,\n                    parent, container;\n    \n                if ( this._container ) {\n                    return this._container;\n                }\n    \n                parent = $( opts.container || document.body );\n                container = $( document.createElement('div') );\n    \n                container.attr( 'id', 'rt_' + this.uid );\n                container.css({\n                    position: 'absolute',\n                    top: '0px',\n                    left: '0px',\n                    width: '1px',\n                    height: '1px',\n                    overflow: 'hidden'\n                });\n    \n                parent.append( container );\n                parent.addClass('webuploader-container');\n                this._container = container;\n                this._parent = parent;\n                return container;\n            },\n    \n            init: Base.noop,\n            exec: Base.noop,\n    \n            destroy: function() {\n                this._container && this._container.remove();\n                this._parent && this._parent.removeClass('webuploader-container');\n                this.off();\n            }\n        });\n    \n        Runtime.orders = 'html5,flash';\n    \n    \n        /**\n         * 添加Runtime实现。\n         * @param {String} type    类型\n         * @param {Runtime} factory 具体Runtime实现。\n         */\n        Runtime.addRuntime = function( type, factory ) {\n            factories[ type ] = factory;\n        };\n    \n        Runtime.hasRuntime = function( type ) {\n            return !!(type ? factories[ type ] : getFirstKey( factories ));\n        };\n    \n        Runtime.create = function( opts, orders ) {\n            var type, runtime;\n    \n            orders = orders || Runtime.orders;\n            $.each( orders.split( /\\s*,\\s*/g ), function() {\n                if ( factories[ this ] ) {\n                    type = this;\n                    return false;\n                }\n            });\n    \n            type = type || getFirstKey( factories );\n    \n            if ( !type ) {\n                throw new Error('Runtime Error');\n            }\n    \n            runtime = new factories[ type ]( opts );\n            return runtime;\n        };\n    \n        Mediator.installTo( Runtime.prototype );\n        return Runtime;\n    });\n    \n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/client',[\n        'base',\n        'mediator',\n        'runtime/runtime'\n    ], function( Base, Mediator, Runtime ) {\n    \n        var cache;\n    \n        cache = (function() {\n            var obj = {};\n    \n            return {\n                add: function( runtime ) {\n                    obj[ runtime.uid ] = runtime;\n                },\n    \n                get: function( ruid, standalone ) {\n                    var i;\n    \n                    if ( ruid ) {\n                        return obj[ ruid ];\n                    }\n    \n                    for ( i in obj ) {\n                        // 有些类型不能重用，比如filepicker.\n                        if ( standalone && obj[ i ].__standalone ) {\n                            continue;\n                        }\n    \n                        return obj[ i ];\n                    }\n    \n                    return null;\n                },\n    \n                remove: function( runtime ) {\n                    delete obj[ runtime.uid ];\n                }\n            };\n        })();\n    \n        function RuntimeClient( component, standalone ) {\n            var deferred = Base.Deferred(),\n                runtime;\n    \n            this.uid = Base.guid('client_');\n    \n            // 允许runtime没有初始化之前，注册一些方法在初始化后执行。\n            this.runtimeReady = function( cb ) {\n                return deferred.done( cb );\n            };\n    \n            this.connectRuntime = function( opts, cb ) {\n    \n                // already connected.\n                if ( runtime ) {\n                    throw new Error('already connected!');\n                }\n    \n                deferred.done( cb );\n    \n                if ( typeof opts === 'string' && cache.get( opts ) ) {\n                    runtime = cache.get( opts );\n                }\n    \n                // 像filePicker只能独立存在，不能公用。\n                runtime = runtime || cache.get( null, standalone );\n    \n                // 需要创建\n                if ( !runtime ) {\n                    runtime = Runtime.create( opts, opts.runtimeOrder );\n                    runtime.__promise = deferred.promise();\n                    runtime.once( 'ready', deferred.resolve );\n                    runtime.init();\n                    cache.add( runtime );\n                    runtime.__client = 1;\n                } else {\n                    // 来自cache\n                    Base.$.extend( runtime.options, opts );\n                    runtime.__promise.then( deferred.resolve );\n                    runtime.__client++;\n                }\n    \n                standalone && (runtime.__standalone = standalone);\n                return runtime;\n            };\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.disconnectRuntime = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                runtime.__client--;\n    \n                if ( runtime.__client <= 0 ) {\n                    cache.remove( runtime );\n                    delete runtime.__promise;\n                    runtime.destroy();\n                }\n    \n                runtime = null;\n            };\n    \n            this.exec = function() {\n                if ( !runtime ) {\n                    return;\n                }\n    \n                var args = Base.slice( arguments );\n                component && args.unshift( component );\n    \n                return runtime.exec.apply( this, args );\n            };\n    \n            this.getRuid = function() {\n                return runtime && runtime.uid;\n            };\n    \n            this.destroy = (function( destroy ) {\n                return function() {\n                    destroy && destroy.apply( this, arguments );\n                    this.trigger('destroy');\n                    this.off();\n                    this.exec('destroy');\n                    this.disconnectRuntime();\n                };\n            })( this.destroy );\n        }\n    \n        Mediator.installTo( RuntimeClient.prototype );\n        return RuntimeClient;\n    });\n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/dnd',[\n        'base',\n        'mediator',\n        'runtime/client'\n    ], function( Base, Mediator, RuntimeClent ) {\n    \n        var $ = Base.$;\n    \n        function DragAndDrop( opts ) {\n            opts = this.options = $.extend({}, DragAndDrop.options, opts );\n    \n            opts.container = $( opts.container );\n    \n            if ( !opts.container.length ) {\n                return;\n            }\n    \n            RuntimeClent.call( this, 'DragAndDrop' );\n        }\n    \n        DragAndDrop.options = {\n            accept: null,\n            disableGlobalDnd: false\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: DragAndDrop,\n    \n            init: function() {\n                var me = this;\n    \n                me.connectRuntime( me.options, function() {\n                    me.exec('init');\n                    me.trigger('ready');\n                });\n            }\n        });\n    \n        Mediator.installTo( DragAndDrop.prototype );\n    \n        return DragAndDrop;\n    });\n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/widget',[\n        'base',\n        'uploader'\n    ], function( Base, Uploader ) {\n    \n        var $ = Base.$,\n            _init = Uploader.prototype._init,\n            _destroy = Uploader.prototype.destroy,\n            IGNORE = {},\n            widgetClass = [];\n    \n        function isArrayLike( obj ) {\n            if ( !obj ) {\n                return false;\n            }\n    \n            var length = obj.length,\n                type = $.type( obj );\n    \n            if ( obj.nodeType === 1 && length ) {\n                return true;\n            }\n    \n            return type === 'array' || type !== 'function' && type !== 'string' &&\n                    (length === 0 || typeof length === 'number' && length > 0 &&\n                    (length - 1) in obj);\n        }\n    \n        function Widget( uploader ) {\n            this.owner = uploader;\n            this.options = uploader.options;\n        }\n    \n        $.extend( Widget.prototype, {\n    \n            init: Base.noop,\n    \n            // 类Backbone的事件监听声明，监听uploader实例上的事件\n            // widget直接无法监听事件，事件只能通过uploader来传递\n            invoke: function( apiName, args ) {\n    \n                /*\n                    {\n                        'make-thumb': 'makeThumb'\n                    }\n                 */\n                var map = this.responseMap;\n    \n                // 如果无API响应声明则忽略\n                if ( !map || !(apiName in map) || !(map[ apiName ] in this) ||\n                        !$.isFunction( this[ map[ apiName ] ] ) ) {\n    \n                    return IGNORE;\n                }\n    \n                return this[ map[ apiName ] ].apply( this, args );\n    \n            },\n    \n            /**\n             * 发送命令。当传入`callback`或者`handler`中返回`promise`时。返回一个当所有`handler`中的promise都完成后完成的新`promise`。\n             * @method request\n             * @grammar request( command, args ) => * | Promise\n             * @grammar request( command, args, callback ) => Promise\n             * @for  Uploader\n             */\n            request: function() {\n                return this.owner.request.apply( this.owner, arguments );\n            }\n        });\n    \n        // 扩展Uploader.\n        $.extend( Uploader.prototype, {\n    \n            /**\n             * @property {String | Array} [disableWidgets=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 默认所有 Uploader.register 了的 widget 都会被加载，如果禁用某一部分，请通过此 option 指定黑名单。\n             */\n    \n            // 覆写_init用来初始化widgets\n            _init: function() {\n                var me = this,\n                    widgets = me._widgets = [],\n                    deactives = me.options.disableWidgets || '';\n    \n                $.each( widgetClass, function( _, klass ) {\n                    (!deactives || !~deactives.indexOf( klass._name )) &&\n                        widgets.push( new klass( me ) );\n                });\n    \n                return _init.apply( me, arguments );\n            },\n    \n            request: function( apiName, args, callback ) {\n                var i = 0,\n                    widgets = this._widgets,\n                    len = widgets && widgets.length,\n                    rlts = [],\n                    dfds = [],\n                    widget, rlt, promise, key;\n    \n                args = isArrayLike( args ) ? args : [ args ];\n    \n                for ( ; i < len; i++ ) {\n                    widget = widgets[ i ];\n                    rlt = widget.invoke( apiName, args );\n    \n                    if ( rlt !== IGNORE ) {\n    \n                        // Deferred对象\n                        if ( Base.isPromise( rlt ) ) {\n                            dfds.push( rlt );\n                        } else {\n                            rlts.push( rlt );\n                        }\n                    }\n                }\n    \n                // 如果有callback，则用异步方式。\n                if ( callback || dfds.length ) {\n                    promise = Base.when.apply( Base, dfds );\n                    key = promise.pipe ? 'pipe' : 'then';\n    \n                    // 很重要不能删除。删除了会死循环。\n                    // 保证执行顺序。让callback总是在下一个 tick 中执行。\n                    return promise[ key ](function() {\n                                var deferred = Base.Deferred(),\n                                    args = arguments;\n    \n                                if ( args.length === 1 ) {\n                                    args = args[ 0 ];\n                                }\n    \n                                setTimeout(function() {\n                                    deferred.resolve( args );\n                                }, 1 );\n    \n                                return deferred.promise();\n                            })[ callback ? key : 'done' ]( callback || Base.noop );\n                } else {\n                    return rlts[ 0 ];\n                }\n            },\n    \n            destroy: function() {\n                _destroy.apply( this, arguments );\n                this._widgets = null;\n            }\n        });\n    \n        /**\n         * 添加组件\n         * @grammar Uploader.register(proto);\n         * @grammar Uploader.register(map, proto);\n         * @param  {object} responseMap API 名称与函数实现的映射\n         * @param  {object} proto 组件原型，构造函数通过 constructor 属性定义\n         * @method Uploader.register\n         * @for Uploader\n         * @example\n         * Uploader.register({\n         *     'make-thumb': 'makeThumb'\n         * }, {\n         *     init: function( options ) {},\n         *     makeThumb: function() {}\n         * });\n         *\n         * Uploader.register({\n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         */\n        Uploader.register = Widget.register = function( responseMap, widgetProto ) {\n            var map = { init: 'init', destroy: 'destroy', name: 'anonymous' },\n                klass;\n    \n            if ( arguments.length === 1 ) {\n                widgetProto = responseMap;\n    \n                // 自动生成 map 表。\n                $.each(widgetProto, function(key) {\n                    if ( key[0] === '_' || key === 'name' ) {\n                        key === 'name' && (map.name = widgetProto.name);\n                        return;\n                    }\n    \n                    map[key.replace(/[A-Z]/g, '-$&').toLowerCase()] = key;\n                });\n    \n            } else {\n                map = $.extend( map, responseMap );\n            }\n    \n            widgetProto.responseMap = map;\n            klass = Base.inherits( Widget, widgetProto );\n            klass._name = map.name;\n            widgetClass.push( klass );\n    \n            return klass;\n        };\n    \n        /**\n         * 删除插件，只有在注册时指定了名字的才能被删除。\n         * @grammar Uploader.unRegister(name);\n         * @param  {string} name 组件名字\n         * @method Uploader.unRegister\n         * @for Uploader\n         * @example\n         *\n         * Uploader.register({\n         *     name: 'custom',\n         *     \n         *     'make-thumb': function() {\n         *         \n         *     }\n         * });\n         *\n         * Uploader.unRegister('custom');\n         */\n        Uploader.unRegister = Widget.unRegister = function( name ) {\n            if ( !name || name === 'anonymous' ) {\n                return;\n            }\n            \n            // 删除指定的插件。\n            for ( var i = widgetClass.length; i--; ) {\n                if ( widgetClass[i]._name === name ) {\n                    widgetClass.splice(i, 1)\n                }\n            }\n        };\n    \n        return Widget;\n    });\n    /**\n     * @fileOverview DragAndDrop Widget。\n     */\n    define('widgets/filednd',[\n        'base',\n        'uploader',\n        'lib/dnd',\n        'widgets/widget'\n    ], function( Base, Uploader, Dnd ) {\n        var $ = Base.$;\n    \n        Uploader.options.dnd = '';\n    \n        /**\n         * @property {Selector} [dnd=undefined]  指定Drag And Drop拖拽的容器，如果不指定，则不启动。\n         * @namespace options\n         * @for Uploader\n         */\n        \n        /**\n         * @property {Selector} [disableGlobalDnd=false]  是否禁掉整个页面的拖拽功能，如果不禁用，图片拖进来的时候会默认被浏览器打开。\n         * @namespace options\n         * @for Uploader\n         */\n    \n        /**\n         * @event dndAccept\n         * @param {DataTransferItemList} items DataTransferItem\n         * @description 阻止此事件可以拒绝某些类型的文件拖入进来。目前只有 chrome 提供这样的 API，且只能通过 mime-type 验证。\n         * @for  Uploader\n         */\n        return Uploader.register({\n            name: 'dnd',\n            \n            init: function( opts ) {\n    \n                if ( !opts.dnd ||\n                        this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                var me = this,\n                    deferred = Base.Deferred(),\n                    options = $.extend({}, {\n                        disableGlobalDnd: opts.disableGlobalDnd,\n                        container: opts.dnd,\n                        accept: opts.accept\n                    }),\n                    dnd;\n    \n                this.dnd = dnd = new Dnd( options );\n    \n                dnd.once( 'ready', deferred.resolve );\n                dnd.on( 'drop', function( files ) {\n                    me.request( 'add-file', [ files ]);\n                });\n    \n                // 检测文件是否全部允许添加。\n                dnd.on( 'accept', function( items ) {\n                    return me.owner.trigger( 'dndAccept', items );\n                });\n    \n                dnd.init();\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                this.dnd && this.dnd.destroy();\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepaste',[\n        'base',\n        'mediator',\n        'runtime/client'\n    ], function( Base, Mediator, RuntimeClent ) {\n    \n        var $ = Base.$;\n    \n        function FilePaste( opts ) {\n            opts = this.options = $.extend({}, opts );\n            opts.container = $( opts.container || document.body );\n            RuntimeClent.call( this, 'FilePaste' );\n        }\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePaste,\n    \n            init: function() {\n                var me = this;\n    \n                me.connectRuntime( me.options, function() {\n                    me.exec('init');\n                    me.trigger('ready');\n                });\n            }\n        });\n    \n        Mediator.installTo( FilePaste.prototype );\n    \n        return FilePaste;\n    });\n    /**\n     * @fileOverview 组件基类。\n     */\n    define('widgets/filepaste',[\n        'base',\n        'uploader',\n        'lib/filepaste',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePaste ) {\n        var $ = Base.$;\n    \n        /**\n         * @property {Selector} [paste=undefined]  指定监听paste事件的容器，如果不指定，不启用此功能。此功能为通过粘贴来添加截屏的图片。建议设置为`document.body`.\n         * @namespace options\n         * @for Uploader\n         */\n        return Uploader.register({\n            name: 'paste',\n            \n            init: function( opts ) {\n    \n                if ( !opts.paste ||\n                        this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                var me = this,\n                    deferred = Base.Deferred(),\n                    options = $.extend({}, {\n                        container: opts.paste,\n                        accept: opts.accept\n                    }),\n                    paste;\n    \n                this.paste = paste = new FilePaste( options );\n    \n                paste.once( 'ready', deferred.resolve );\n                paste.on( 'paste', function( files ) {\n                    me.owner.request( 'add-file', [ files ]);\n                });\n                paste.init();\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                this.paste && this.paste.destroy();\n            }\n        });\n    });\n    /**\n     * @fileOverview Blob\n     */\n    define('lib/blob',[\n        'base',\n        'runtime/client'\n    ], function( Base, RuntimeClient ) {\n    \n        function Blob( ruid, source ) {\n            var me = this;\n    \n            me.source = source;\n            me.ruid = ruid;\n            this.size = source.size || 0;\n    \n            // 如果没有指定 mimetype, 但是知道文件后缀。\n            if ( !source.type && this.ext &&\n                    ~'jpg,jpeg,png,gif,bmp'.indexOf( this.ext ) ) {\n                this.type = 'image/' + (this.ext === 'jpg' ? 'jpeg' : this.ext);\n            } else {\n                this.type = source.type || 'application/octet-stream';\n            }\n    \n            RuntimeClient.call( me, 'Blob' );\n            this.uid = source.uid || this.uid;\n    \n            if ( ruid ) {\n                me.connectRuntime( ruid );\n            }\n        }\n    \n        Base.inherits( RuntimeClient, {\n            constructor: Blob,\n    \n            slice: function( start, end ) {\n                return this.exec( 'slice', start, end );\n            },\n    \n            getSource: function() {\n                return this.source;\n            }\n        });\n    \n        return Blob;\n    });\n    /**\n     * 为了统一化Flash的File和HTML5的File而存在。\n     * 以至于要调用Flash里面的File，也可以像调用HTML5版本的File一下。\n     * @fileOverview File\n     */\n    define('lib/file',[\n        'base',\n        'lib/blob'\n    ], function( Base, Blob ) {\n    \n        var uid = 1,\n            rExt = /\\.([^.]+)$/;\n    \n        function File( ruid, file ) {\n            var ext;\n    \n            this.name = file.name || ('untitled' + uid++);\n            ext = rExt.exec( file.name ) ? RegExp.$1.toLowerCase() : '';\n    \n            // todo 支持其他类型文件的转换。\n            // 如果有 mimetype, 但是文件名里面没有找出后缀规律\n            if ( !ext && file.type ) {\n                ext = /\\/(jpg|jpeg|png|gif|bmp)$/i.exec( file.type ) ?\n                        RegExp.$1.toLowerCase() : '';\n                this.name += '.' + ext;\n            }\n    \n            this.ext = ext;\n            this.lastModifiedDate = file.lastModifiedDate ||\n                    (new Date()).toLocaleString();\n    \n            Blob.apply( this, arguments );\n        }\n    \n        return Base.inherits( Blob, File );\n    });\n    \n    /**\n     * @fileOverview 错误信息\n     */\n    define('lib/filepicker',[\n        'base',\n        'runtime/client',\n        'lib/file'\n    ], function( Base, RuntimeClent, File ) {\n    \n        var $ = Base.$;\n    \n        function FilePicker( opts ) {\n            opts = this.options = $.extend({}, FilePicker.options, opts );\n    \n            opts.container = $( opts.id );\n    \n            if ( !opts.container.length ) {\n                throw new Error('按钮指定错误');\n            }\n    \n            opts.innerHTML = opts.innerHTML || opts.label ||\n                    opts.container.html() || '';\n    \n            opts.button = $( opts.button || document.createElement('div') );\n            opts.button.html( opts.innerHTML );\n            opts.container.html( opts.button );\n    \n            RuntimeClent.call( this, 'FilePicker', true );\n        }\n    \n        FilePicker.options = {\n            button: null,\n            container: null,\n            label: null,\n            innerHTML: null,\n            multiple: true,\n            accept: null,\n            name: 'file'\n        };\n    \n        Base.inherits( RuntimeClent, {\n            constructor: FilePicker,\n    \n            init: function() {\n                var me = this,\n                    opts = me.options,\n                    button = opts.button;\n    \n                button.addClass('webuploader-pick');\n    \n                me.on( 'all', function( type ) {\n                    var files;\n    \n                    switch ( type ) {\n                        case 'mouseenter':\n                            button.addClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'mouseleave':\n                            button.removeClass('webuploader-pick-hover');\n                            break;\n    \n                        case 'change':\n                            files = me.exec('getFiles');\n                            me.trigger( 'select', $.map( files, function( file ) {\n                                file = new File( me.getRuid(), file );\n    \n                                // 记录来源。\n                                file._refer = opts.container;\n                                return file;\n                            }), opts.container );\n                            break;\n                    }\n                });\n    \n                me.connectRuntime( opts, function() {\n                    me.refresh();\n                    me.exec( 'init', opts );\n                    me.trigger('ready');\n                });\n    \n                this._resizeHandler = Base.bindFn( this.refresh, this );\n                $( window ).on( 'resize', this._resizeHandler );\n            },\n    \n            refresh: function() {\n                var shimContainer = this.getRuntime().getContainer(),\n                    button = this.options.button,\n                    width = button.outerWidth ?\n                            button.outerWidth() : button.width(),\n    \n                    height = button.outerHeight ?\n                            button.outerHeight() : button.height(),\n    \n                    pos = button.offset();\n    \n                width && height && shimContainer.css({\n                    bottom: 'auto',\n                    right: 'auto',\n                    width: width + 'px',\n                    height: height + 'px'\n                }).offset( pos );\n            },\n    \n            enable: function() {\n                var btn = this.options.button;\n    \n                btn.removeClass('webuploader-pick-disable');\n                this.refresh();\n            },\n    \n            disable: function() {\n                var btn = this.options.button;\n    \n                this.getRuntime().getContainer().css({\n                    top: '-99999px'\n                });\n    \n                btn.addClass('webuploader-pick-disable');\n            },\n    \n            destroy: function() {\n                var btn = this.options.button;\n                $( window ).off( 'resize', this._resizeHandler );\n                btn.removeClass('webuploader-pick-disable webuploader-pick-hover ' +\n                    'webuploader-pick');\n            }\n        });\n    \n        return FilePicker;\n    });\n    \n    /**\n     * @fileOverview 文件选择相关\n     */\n    define('widgets/filepicker',[\n        'base',\n        'uploader',\n        'lib/filepicker',\n        'widgets/widget'\n    ], function( Base, Uploader, FilePicker ) {\n        var $ = Base.$;\n    \n        $.extend( Uploader.options, {\n    \n            /**\n             * @property {Selector | Object} [pick=undefined]\n             * @namespace options\n             * @for Uploader\n             * @description 指定选择文件的按钮容器，不指定则不创建按钮。\n             *\n             * * `id` {Seletor} 指定选择文件的按钮容器，不指定则不创建按钮。\n             * * `label` {String} 请采用 `innerHTML` 代替\n             * * `innerHTML` {String} 指定按钮文字。不指定时优先从指定的容器中看是否自带文字。\n             * * `multiple` {Boolean} 是否开起同时选择多个文件能力。\n             */\n            pick: null,\n    \n            /**\n             * @property {Arroy} [accept=null]\n             * @namespace options\n             * @for Uploader\n             * @description 指定接受哪些类型的文件。 由于目前还有ext转mimeType表，所以这里需要分开指定。\n             *\n             * * `title` {String} 文字描述\n             * * `extensions` {String} 允许的文件后缀，不带点，多个用逗号分割。\n             * * `mimeTypes` {String} 多个用逗号分割。\n             *\n             * 如：\n             *\n             * ```\n             * {\n             *     title: 'Images',\n             *     extensions: 'gif,jpg,jpeg,bmp,png',\n             *     mimeTypes: 'image/*'\n             * }\n             * ```\n             */\n            accept: null/*{\n                title: 'Images',\n                extensions: 'gif,jpg,jpeg,bmp,png',\n                mimeTypes: 'image/*'\n            }*/\n        });\n    \n        return Uploader.register({\n            name: 'picker',\n    \n            init: function( opts ) {\n                this.pickers = [];\n                return opts.pick && this.addBtn( opts.pick );\n            },\n    \n            refresh: function() {\n                $.each( this.pickers, function() {\n                    this.refresh();\n                });\n            },\n    \n            /**\n             * @method addButton\n             * @for Uploader\n             * @grammar addButton( pick ) => Promise\n             * @description\n             * 添加文件选择按钮，如果一个按钮不够，需要调用此方法来添加。参数跟[options.pick](#WebUploader:Uploader:options)一致。\n             * @example\n             * uploader.addButton({\n             *     id: '#btnContainer',\n             *     innerHTML: '选择文件'\n             * });\n             */\n            addBtn: function( pick ) {\n                var me = this,\n                    opts = me.options,\n                    accept = opts.accept,\n                    promises = [];\n    \n                if ( !pick ) {\n                    return;\n                }\n                \n                $.isPlainObject( pick ) || (pick = {\n                    id: pick\n                });\n    \n                $( pick.id ).each(function() {\n                    var options, picker, deferred;\n    \n                    deferred = Base.Deferred();\n    \n                    options = $.extend({}, pick, {\n                        accept: $.isPlainObject( accept ) ? [ accept ] : accept,\n                        swf: opts.swf,\n                        runtimeOrder: opts.runtimeOrder,\n                        id: this\n                    });\n    \n                    picker = new FilePicker( options );\n    \n                    picker.once( 'ready', deferred.resolve );\n                    picker.on( 'select', function( files ) {\n                        me.owner.request( 'add-file', [ files ]);\n                    });\n                    picker.init();\n    \n                    me.pickers.push( picker );\n    \n                    promises.push( deferred.promise() );\n                });\n    \n                return Base.when.apply( Base, promises );\n            },\n    \n            disable: function() {\n                $.each( this.pickers, function() {\n                    this.disable();\n                });\n            },\n    \n            enable: function() {\n                $.each( this.pickers, function() {\n                    this.enable();\n                });\n            },\n    \n            destroy: function() {\n                $.each( this.pickers, function() {\n                    this.destroy();\n                });\n                this.pickers = null;\n            }\n        });\n    });\n    /**\n     * @fileOverview 文件属性封装\n     */\n    define('file',[\n        'base',\n        'mediator'\n    ], function( Base, Mediator ) {\n    \n        var $ = Base.$,\n            idPrefix = 'WU_FILE_',\n            idSuffix = 0,\n            rExt = /\\.([^.]+)$/,\n            statusMap = {};\n    \n        function gid() {\n            return idPrefix + idSuffix++;\n        }\n    \n        /**\n         * 文件类\n         * @class File\n         * @constructor 构造函数\n         * @grammar new File( source ) => File\n         * @param {Lib.File} source [lib.File](#Lib.File)实例, 此source对象是带有Runtime信息的。\n         */\n        function WUFile( source ) {\n    \n            /**\n             * 文件名，包括扩展名（后缀）\n             * @property name\n             * @type {string}\n             */\n            this.name = source.name || 'Untitled';\n    \n            /**\n             * 文件体积（字节）\n             * @property size\n             * @type {uint}\n             * @default 0\n             */\n            this.size = source.size || 0;\n    \n            /**\n             * 文件MIMETYPE类型，与文件类型的对应关系请参考[http://t.cn/z8ZnFny](http://t.cn/z8ZnFny)\n             * @property type\n             * @type {string}\n             * @default 'application/octet-stream'\n             */\n            this.type = source.type || 'application/octet-stream';\n    \n            /**\n             * 文件最后修改日期\n             * @property lastModifiedDate\n             * @type {int}\n             * @default 当前时间戳\n             */\n            this.lastModifiedDate = source.lastModifiedDate || (new Date() * 1);\n    \n            /**\n             * 文件ID，每个对象具有唯一ID，与文件名无关\n             * @property id\n             * @type {string}\n             */\n            this.id = gid();\n    \n            /**\n             * 文件扩展名，通过文件名获取，例如test.png的扩展名为png\n             * @property ext\n             * @type {string}\n             */\n            this.ext = rExt.exec( this.name ) ? RegExp.$1 : '';\n    \n    \n            /**\n             * 状态文字说明。在不同的status语境下有不同的用途。\n             * @property statusText\n             * @type {string}\n             */\n            this.statusText = '';\n    \n            // 存储文件状态，防止通过属性直接修改\n            statusMap[ this.id ] = WUFile.Status.INITED;\n    \n            this.source = source;\n            this.loaded = 0;\n    \n            this.on( 'error', function( msg ) {\n                this.setStatus( WUFile.Status.ERROR, msg );\n            });\n        }\n    \n        $.extend( WUFile.prototype, {\n    \n            /**\n             * 设置状态，状态变化时会触发`change`事件。\n             * @method setStatus\n             * @grammar setStatus( status[, statusText] );\n             * @param {File.Status|String} status [文件状态值](#WebUploader:File:File.Status)\n             * @param {String} [statusText=''] 状态说明，常在error时使用，用http, abort,server等来标记是由于什么原因导致文件错误。\n             */\n            setStatus: function( status, text ) {\n    \n                var prevStatus = statusMap[ this.id ];\n    \n                typeof text !== 'undefined' && (this.statusText = text);\n    \n                if ( status !== prevStatus ) {\n                    statusMap[ this.id ] = status;\n                    /**\n                     * 文件状态变化\n                     * @event statuschange\n                     */\n                    this.trigger( 'statuschange', status, prevStatus );\n                }\n    \n            },\n    \n            /**\n             * 获取文件状态\n             * @return {File.Status}\n             * @example\n                     文件状态具体包括以下几种类型：\n                     {\n                         // 初始化\n                        INITED:     0,\n                        // 已入队列\n                        QUEUED:     1,\n                        // 正在上传\n                        PROGRESS:     2,\n                        // 上传出错\n                        ERROR:         3,\n                        // 上传成功\n                        COMPLETE:     4,\n                        // 上传取消\n                        CANCELLED:     5\n                    }\n             */\n            getStatus: function() {\n                return statusMap[ this.id ];\n            },\n    \n            /**\n             * 获取文件原始信息。\n             * @return {*}\n             */\n            getSource: function() {\n                return this.source;\n            },\n    \n            destroy: function() {\n                this.off();\n                delete statusMap[ this.id ];\n            }\n        });\n    \n        Mediator.installTo( WUFile.prototype );\n    \n        /**\n         * 文件状态值，具体包括以下几种类型：\n         * * `inited` 初始状态\n         * * `queued` 已经进入队列, 等待上传\n         * * `progress` 上传中\n         * * `complete` 上传完成。\n         * * `error` 上传出错，可重试\n         * * `interrupt` 上传中断，可续传。\n         * * `invalid` 文件不合格，不能重试上传。会自动从队列中移除。\n         * * `cancelled` 文件被移除。\n         * @property {Object} Status\n         * @namespace File\n         * @class File\n         * @static\n         */\n        WUFile.Status = {\n            INITED:     'inited',    // 初始状态\n            QUEUED:     'queued',    // 已经进入队列, 等待上传\n            PROGRESS:   'progress',    // 上传中\n            ERROR:      'error',    // 上传出错，可重试\n            COMPLETE:   'complete',    // 上传完成。\n            CANCELLED:  'cancelled',    // 上传取消。\n            INTERRUPT:  'interrupt',    // 上传中断，可续传。\n            INVALID:    'invalid'    // 文件不合格，不能重试上传。\n        };\n    \n        return WUFile;\n    });\n    \n    /**\n     * @fileOverview 文件队列\n     */\n    define('queue',[\n        'base',\n        'mediator',\n        'file'\n    ], function( Base, Mediator, WUFile ) {\n    \n        var $ = Base.$,\n            STATUS = WUFile.Status;\n    \n        /**\n         * 文件队列, 用来存储各个状态中的文件。\n         * @class Queue\n         * @extends Mediator\n         */\n        function Queue() {\n    \n            /**\n             * 统计文件数。\n             * * `numOfQueue` 队列中的文件数。\n             * * `numOfSuccess` 上传成功的文件数\n             * * `numOfCancel` 被取消的文件数\n             * * `numOfProgress` 正在上传中的文件数\n             * * `numOfUploadFailed` 上传错误的文件数。\n             * * `numOfInvalid` 无效的文件数。\n             * * `numofDeleted` 被移除的文件数。\n             * @property {Object} stats\n             */\n            this.stats = {\n                numOfQueue: 0,\n                numOfSuccess: 0,\n                numOfCancel: 0,\n                numOfProgress: 0,\n                numOfUploadFailed: 0,\n                numOfInvalid: 0,\n                numofDeleted: 0,\n                numofInterrupt: 0,\n            };\n    \n            // 上传队列，仅包括等待上传的文件\n            this._queue = [];\n    \n            // 存储所有文件\n            this._map = {};\n        }\n    \n        $.extend( Queue.prototype, {\n    \n            /**\n             * 将新文件加入对队列尾部\n             *\n             * @method append\n             * @param  {File} file   文件对象\n             */\n            append: function( file ) {\n                this._queue.push( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 将新文件加入对队列头部\n             *\n             * @method prepend\n             * @param  {File} file   文件对象\n             */\n            prepend: function( file ) {\n                this._queue.unshift( file );\n                this._fileAdded( file );\n                return this;\n            },\n    \n            /**\n             * 获取文件对象\n             *\n             * @method getFile\n             * @param  {String} fileId   文件ID\n             * @return {File}\n             */\n            getFile: function( fileId ) {\n                if ( typeof fileId !== 'string' ) {\n                    return fileId;\n                }\n                return this._map[ fileId ];\n            },\n    \n            /**\n             * 从队列中取出一个指定状态的文件。\n             * @grammar fetch( status ) => File\n             * @method fetch\n             * @param {String} status [文件状态值](#WebUploader:File:File.Status)\n             * @return {File} [File](#WebUploader:File)\n             */\n            fetch: function( status ) {\n                var len = this._queue.length,\n                    i, file;\n    \n                status = status || STATUS.QUEUED;\n    \n                for ( i = 0; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( status === file.getStatus() ) {\n                        return file;\n                    }\n                }\n    \n                return null;\n            },\n    \n            /**\n             * 对队列进行排序，能够控制文件上传顺序。\n             * @grammar sort( fn ) => undefined\n             * @method sort\n             * @param {Function} fn 排序方法\n             */\n            sort: function( fn ) {\n                if ( typeof fn === 'function' ) {\n                    this._queue.sort( fn );\n                }\n            },\n    \n            /**\n             * 获取指定类型的文件列表, 列表中每一个成员为[File](#WebUploader:File)对象。\n             * @grammar getFiles( [status1[, status2 ...]] ) => Array\n             * @method getFiles\n             * @param {String} [status] [文件状态值](#WebUploader:File:File.Status)\n             */\n            getFiles: function() {\n                var sts = [].slice.call( arguments, 0 ),\n                    ret = [],\n                    i = 0,\n                    len = this._queue.length,\n                    file;\n    \n                for ( ; i < len; i++ ) {\n                    file = this._queue[ i ];\n    \n                    if ( sts.length && !~$.inArray( file.getStatus(), sts ) ) {\n                        continue;\n                    }\n    \n                    ret.push( file );\n                }\n    \n                return ret;\n            },\n    \n            /**\n             * 在队列中删除文件。\n             * @grammar removeFile( file ) => Array\n             * @method removeFile\n             * @param {File} 文件对象。\n             */\n            removeFile: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( existing ) {\n                    delete this._map[ file.id ];\n                    file.destroy();\n                    this.stats.numofDeleted++;\n                }\n            },\n    \n            _fileAdded: function( file ) {\n                var me = this,\n                    existing = this._map[ file.id ];\n    \n                if ( !existing ) {\n                    this._map[ file.id ] = file;\n    \n                    file.on( 'statuschange', function( cur, pre ) {\n                        me._onFileStatusChange( cur, pre );\n                    });\n                }\n            },\n    \n            _onFileStatusChange: function( curStatus, preStatus ) {\n                var stats = this.stats;\n    \n                switch ( preStatus ) {\n                    case STATUS.PROGRESS:\n                        stats.numOfProgress--;\n                        break;\n    \n                    case STATUS.QUEUED:\n                        stats.numOfQueue --;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed--;\n                        break;\n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid--;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt--;\n                        break;\n                }\n    \n                switch ( curStatus ) {\n                    case STATUS.QUEUED:\n                        stats.numOfQueue++;\n                        break;\n    \n                    case STATUS.PROGRESS:\n                        stats.numOfProgress++;\n                        break;\n    \n                    case STATUS.ERROR:\n                        stats.numOfUploadFailed++;\n                        break;\n    \n                    case STATUS.COMPLETE:\n                        stats.numOfSuccess++;\n                        break;\n    \n                    case STATUS.CANCELLED:\n                        stats.numOfCancel++;\n                        break;\n    \n    \n                    case STATUS.INVALID:\n                        stats.numOfInvalid++;\n                        break;\n    \n                    case STATUS.INTERRUPT:\n                        stats.numofInterrupt++;\n                        break;\n                }\n            }\n    \n        });\n    \n        Mediator.installTo( Queue.prototype );\n    \n        return Queue;\n    });\n    /**\n     * @fileOverview 队列\n     */\n    define('widgets/queue',[\n        'base',\n        'uploader',\n        'queue',\n        'file',\n        'lib/file',\n        'runtime/client',\n        'widgets/widget'\n    ], function( Base, Uploader, Queue, WUFile, File, RuntimeClient ) {\n    \n        var $ = Base.$,\n            rExt = /\\.\\w+$/,\n            Status = WUFile.Status;\n    \n        return Uploader.register({\n            name: 'queue',\n    \n            init: function( opts ) {\n                var me = this,\n                    deferred, len, i, item, arr, accept, runtime;\n    \n                if ( $.isPlainObject( opts.accept ) ) {\n                    opts.accept = [ opts.accept ];\n                }\n    \n                // accept中的中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].extensions;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = '\\\\.' + arr.join(',')\n                                .replace( /,/g, '$|\\\\.' )\n                                .replace( /\\*/g, '.*' ) + '$';\n                    }\n    \n                    me.accept = new RegExp( accept, 'i' );\n                }\n    \n                me.queue = new Queue();\n                me.stats = me.queue.stats;\n    \n                // 如果当前不是html5运行时，那就算了。\n                // 不执行后续操作\n                if ( this.request('predict-runtime-type') !== 'html5' ) {\n                    return;\n                }\n    \n                // 创建一个 html5 运行时的 placeholder\n                // 以至于外部添加原生 File 对象的时候能正确包裹一下供 webuploader 使用。\n                deferred = Base.Deferred();\n                this.placeholder = runtime = new RuntimeClient('Placeholder');\n                runtime.connectRuntime({\n                    runtimeOrder: 'html5'\n                }, function() {\n                    me._ruid = runtime.getRuid();\n                    deferred.resolve();\n                });\n                return deferred.promise();\n            },\n    \n    \n            // 为了支持外部直接添加一个原生File对象。\n            _wrapFile: function( file ) {\n                if ( !(file instanceof WUFile) ) {\n    \n                    if ( !(file instanceof File) ) {\n                        if ( !this._ruid ) {\n                            throw new Error('Can\\'t add external files.');\n                        }\n                        file = new File( this._ruid, file );\n                    }\n    \n                    file = new WUFile( file );\n                }\n    \n                return file;\n            },\n    \n            // 判断文件是否可以被加入队列\n            acceptFile: function( file ) {\n                var invalid = !file || !file.size || this.accept &&\n    \n                        // 如果名字中有后缀，才做后缀白名单处理。\n                        rExt.exec( file.name ) && !this.accept.test( file.name );\n    \n                return !invalid;\n            },\n    \n    \n            /**\n             * @event beforeFileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列之前触发，此事件的handler返回值为`false`，则此文件不会被添加进入队列。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event fileQueued\n             * @param {File} file File对象\n             * @description 当文件被加入队列以后触发。\n             * @for  Uploader\n             */\n    \n            _addFile: function( file ) {\n                var me = this;\n    \n                file = me._wrapFile( file );\n    \n                // 不过类型判断允许不允许，先派送 `beforeFileQueued`\n                if ( !me.owner.trigger( 'beforeFileQueued', file ) ) {\n                    return;\n                }\n    \n                // 类型不匹配，则派送错误事件，并返回。\n                if ( !me.acceptFile( file ) ) {\n                    me.owner.trigger( 'error', 'Q_TYPE_DENIED', file );\n                    return;\n                }\n    \n                me.queue.append( file );\n                me.owner.trigger( 'fileQueued', file );\n                return file;\n            },\n    \n            getFile: function( fileId ) {\n                return this.queue.getFile( fileId );\n            },\n    \n            /**\n             * @event filesQueued\n             * @param {File} files 数组，内容为原始File(lib/File）对象。\n             * @description 当一批文件添加进队列以后触发。\n             * @for  Uploader\n             */\n            \n            /**\n             * @property {Boolean} [auto=false]\n             * @namespace options\n             * @for Uploader\n             * @description 设置为 true 后，不需要手动调用上传，有文件选择即开始上传。\n             * \n             */\n    \n            /**\n             * @method addFiles\n             * @grammar addFiles( file ) => undefined\n             * @grammar addFiles( [file1, file2 ...] ) => undefined\n             * @param {Array of File or File} [files] Files 对象 数组\n             * @description 添加文件到队列\n             * @for  Uploader\n             */\n            addFile: function( files ) {\n                var me = this;\n    \n                if ( !files.length ) {\n                    files = [ files ];\n                }\n    \n                files = $.map( files, function( file ) {\n                    return me._addFile( file );\n                });\n    \n                me.owner.trigger( 'filesQueued', files );\n    \n                if ( me.options.auto ) {\n                    setTimeout(function() {\n                        me.request('start-upload');\n                    }, 20 );\n                }\n            },\n    \n            getStats: function() {\n                return this.stats;\n            },\n    \n            /**\n             * @event fileDequeued\n             * @param {File} file File对象\n             * @description 当文件被移除队列后触发。\n             * @for  Uploader\n             */\n    \n             /**\n             * @method removeFile\n             * @grammar removeFile( file ) => undefined\n             * @grammar removeFile( id ) => undefined\n             * @grammar removeFile( file, true ) => undefined\n             * @grammar removeFile( id, true ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 移除某一文件, 默认只会标记文件状态为已取消，如果第二个参数为 `true` 则会从 queue 中移除。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.removeFile( file );\n             * })\n             */\n            removeFile: function( file, remove ) {\n                var me = this;\n    \n                file = file.id ? file : me.queue.getFile( file );\n    \n                this.request( 'cancel-file', file );\n    \n                if ( remove ) {\n                    this.queue.removeFile( file );\n                }\n            },\n    \n            /**\n             * @method getFiles\n             * @grammar getFiles() => Array\n             * @grammar getFiles( status1, status2, status... ) => Array\n             * @description 返回指定状态的文件集合，不传参数将返回所有状态的文件。\n             * @for  Uploader\n             * @example\n             * console.log( uploader.getFiles() );    // => all files\n             * console.log( uploader.getFiles('error') )    // => all error files.\n             */\n            getFiles: function() {\n                return this.queue.getFiles.apply( this.queue, arguments );\n            },\n    \n            fetchFile: function() {\n                return this.queue.fetch.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @method retry\n             * @grammar retry() => undefined\n             * @grammar retry( file ) => undefined\n             * @description 重试上传，重试指定文件，或者从出错的文件开始重新上传。\n             * @for  Uploader\n             * @example\n             * function retry() {\n             *     uploader.retry();\n             * }\n             */\n            retry: function( file, noForceStart ) {\n                var me = this,\n                    files, i, len;\n    \n                if ( file ) {\n                    file = file.id ? file : me.queue.getFile( file );\n                    file.setStatus( Status.QUEUED );\n                    noForceStart || me.request('start-upload');\n                    return;\n                }\n    \n                files = me.queue.getFiles( Status.ERROR );\n                i = 0;\n                len = files.length;\n    \n                for ( ; i < len; i++ ) {\n                    file = files[ i ];\n                    file.setStatus( Status.QUEUED );\n                }\n    \n                me.request('start-upload');\n            },\n    \n            /**\n             * @method sort\n             * @grammar sort( fn ) => undefined\n             * @description 排序队列中的文件，在上传之前调整可以控制上传顺序。\n             * @for  Uploader\n             */\n            sortFiles: function() {\n                return this.queue.sort.apply( this.queue, arguments );\n            },\n    \n            /**\n             * @event reset\n             * @description 当 uploader 被重置的时候触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @method reset\n             * @grammar reset() => undefined\n             * @description 重置uploader。目前只重置了队列。\n             * @for  Uploader\n             * @example\n             * uploader.reset();\n             */\n            reset: function() {\n                this.owner.trigger('reset');\n                this.queue = new Queue();\n                this.stats = this.queue.stats;\n            },\n    \n            destroy: function() {\n                this.reset();\n                this.placeholder && this.placeholder.destroy();\n            }\n        });\n    \n    });\n    /**\n     * @fileOverview 添加获取Runtime相关信息的方法。\n     */\n    define('widgets/runtime',[\n        'uploader',\n        'runtime/runtime',\n        'widgets/widget'\n    ], function( Uploader, Runtime ) {\n    \n        Uploader.support = function() {\n            return Runtime.hasRuntime.apply( Runtime, arguments );\n        };\n    \n        return Uploader.register({\n            name: 'runtime',\n    \n            init: function() {\n                if ( !this.predictRuntimeType() ) {\n                    throw Error('Runtime Error');\n                }\n            },\n    \n            /**\n             * 预测Uploader将采用哪个`Runtime`\n             * @grammar predictRuntimeType() => String\n             * @method predictRuntimeType\n             * @for  Uploader\n             */\n            predictRuntimeType: function() {\n                var orders = this.options.runtimeOrder || Runtime.orders,\n                    type = this.type,\n                    i, len;\n    \n                if ( !type ) {\n                    orders = orders.split( /\\s*,\\s*/g );\n    \n                    for ( i = 0, len = orders.length; i < len; i++ ) {\n                        if ( Runtime.hasRuntime( orders[ i ] ) ) {\n                            this.type = type = orders[ i ];\n                            break;\n                        }\n                    }\n                }\n    \n                return type;\n            }\n        });\n    });\n    /**\n     * @fileOverview Transport\n     */\n    define('lib/transport',[\n        'base',\n        'runtime/client',\n        'mediator'\n    ], function( Base, RuntimeClient, Mediator ) {\n    \n        var $ = Base.$;\n    \n        function Transport( opts ) {\n            var me = this;\n    \n            opts = me.options = $.extend( true, {}, Transport.options, opts || {} );\n            RuntimeClient.call( this, 'Transport' );\n    \n            this._blob = null;\n            this._formData = opts.formData || {};\n            this._headers = opts.headers || {};\n    \n            this.on( 'progress', this._timeout );\n            this.on( 'load error', function() {\n                me.trigger( 'progress', 1 );\n                clearTimeout( me._timer );\n            });\n        }\n    \n        Transport.options = {\n            server: '',\n            method: 'POST',\n    \n            // 跨域时，是否允许携带cookie, 只有html5 runtime才有效\n            withCredentials: false,\n            fileVal: 'file',\n            timeout: 2 * 60 * 1000,    // 2分钟\n            formData: {},\n            headers: {},\n            sendAsBinary: false\n        };\n    \n        $.extend( Transport.prototype, {\n    \n            // 添加Blob, 只能添加一次，最后一次有效。\n            appendBlob: function( key, blob, filename ) {\n                var me = this,\n                    opts = me.options;\n    \n                if ( me.getRuid() ) {\n                    me.disconnectRuntime();\n                }\n    \n                // 连接到blob归属的同一个runtime.\n                me.connectRuntime( blob.ruid, function() {\n                    me.exec('init');\n                });\n    \n                me._blob = blob;\n                opts.fileVal = key || opts.fileVal;\n                opts.filename = filename || opts.filename;\n            },\n    \n            // 添加其他字段\n            append: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._formData, key );\n                } else {\n                    this._formData[ key ] = value;\n                }\n            },\n    \n            setRequestHeader: function( key, value ) {\n                if ( typeof key === 'object' ) {\n                    $.extend( this._headers, key );\n                } else {\n                    this._headers[ key ] = value;\n                }\n            },\n    \n            send: function( method ) {\n                this.exec( 'send', method );\n                this._timeout();\n            },\n    \n            abort: function() {\n                clearTimeout( this._timer );\n                return this.exec('abort');\n            },\n    \n            destroy: function() {\n                this.trigger('destroy');\n                this.off();\n                this.exec('destroy');\n                this.disconnectRuntime();\n            },\n    \n            getResponse: function() {\n                return this.exec('getResponse');\n            },\n    \n            getResponseAsJson: function() {\n                return this.exec('getResponseAsJson');\n            },\n    \n            getStatus: function() {\n                return this.exec('getStatus');\n            },\n    \n            _timeout: function() {\n                var me = this,\n                    duration = me.options.timeout;\n    \n                if ( !duration ) {\n                    return;\n                }\n    \n                clearTimeout( me._timer );\n                me._timer = setTimeout(function() {\n                    me.abort();\n                    me.trigger( 'error', 'timeout' );\n                }, duration );\n            }\n    \n        });\n    \n        // 让Transport具备事件功能。\n        Mediator.installTo( Transport.prototype );\n    \n        return Transport;\n    });\n    /**\n     * @fileOverview 负责文件上传相关。\n     */\n    define('widgets/upload',[\n        'base',\n        'uploader',\n        'file',\n        'lib/transport',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile, Transport ) {\n    \n        var $ = Base.$,\n            isPromise = Base.isPromise,\n            Status = WUFile.Status;\n    \n        // 添加默认配置项\n        $.extend( Uploader.options, {\n    \n    \n            /**\n             * @property {Boolean} [prepareNextFile=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否允许在文件传输时提前把下一个文件准备好。\n             * 对于一个文件的准备工作比较耗时，比如图片压缩，md5序列化。\n             * 如果能提前在当前文件传输期处理，可以节省总体耗时。\n             */\n            prepareNextFile: false,\n    \n            /**\n             * @property {Boolean} [chunked=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否要分片处理大文件上传。\n             */\n            chunked: false,\n    \n            /**\n             * @property {Boolean} [chunkSize=5242880]\n             * @namespace options\n             * @for Uploader\n             * @description 如果要分片，分多大一片？ 默认大小为5M.\n             */\n            chunkSize: 5 * 1024 * 1024,\n    \n            /**\n             * @property {Boolean} [chunkRetry=2]\n             * @namespace options\n             * @for Uploader\n             * @description 如果某个分片由于网络问题出错，允许自动重传多少次？\n             */\n            chunkRetry: 2,\n    \n            /**\n             * @property {Boolean} [threads=3]\n             * @namespace options\n             * @for Uploader\n             * @description 上传并发数。允许同时最大上传进程数。\n             */\n            threads: 3,\n    \n    \n            /**\n             * @property {Object} [formData={}]\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传请求的参数表，每次发送都会发送此对象中的参数。\n             */\n            formData: {}\n    \n            /**\n             * @property {Object} [fileVal='file']\n             * @namespace options\n             * @for Uploader\n             * @description 设置文件上传域的name。\n             */\n    \n            /**\n             * @property {Object} [method='POST']\n             * @namespace options\n             * @for Uploader\n             * @description 文件上传方式，`POST`或者`GET`。\n             */\n    \n            /**\n             * @property {Object} [sendAsBinary=false]\n             * @namespace options\n             * @for Uploader\n             * @description 是否已二进制的流的方式发送文件，这样整个上传内容`php://input`都为文件内容，\n             * 其他参数在$_GET数组中。\n             */\n        });\n    \n        // 负责将文件切片。\n        function CuteFile( file, chunkSize ) {\n            var pending = [],\n                blob = file.source,\n                total = blob.size,\n                chunks = chunkSize ? Math.ceil( total / chunkSize ) : 1,\n                start = 0,\n                index = 0,\n                len, api;\n    \n            api = {\n                file: file,\n    \n                has: function() {\n                    return !!pending.length;\n                },\n    \n                shift: function() {\n                    return pending.shift();\n                },\n    \n                unshift: function( block ) {\n                    pending.unshift( block );\n                }\n            };\n    \n            while ( index < chunks ) {\n                len = Math.min( chunkSize, total - start );\n    \n                pending.push({\n                    file: file,\n                    start: start,\n                    end: chunkSize ? (start + len) : total,\n                    total: total,\n                    chunks: chunks,\n                    chunk: index++,\n                    cuted: api\n                });\n                start += len;\n            }\n    \n            file.blocks = pending.concat();\n            file.remaning = pending.length;\n    \n            return api;\n        }\n    \n        Uploader.register({\n            name: 'upload',\n    \n            init: function() {\n                var owner = this.owner,\n                    me = this;\n    \n                this.runing = false;\n                this.progress = false;\n    \n                owner\n                    .on( 'startUpload', function() {\n                        me.progress = true;\n                    })\n                    .on( 'uploadFinished', function() {\n                        me.progress = false;\n                    });\n    \n                // 记录当前正在传的数据，跟threads相关\n                this.pool = [];\n    \n                // 缓存分好片的文件。\n                this.stack = [];\n    \n                // 缓存即将上传的文件。\n                this.pending = [];\n    \n                // 跟踪还有多少分片在上传中但是没有完成上传。\n                this.remaning = 0;\n                this.__tick = Base.bindFn( this._tick, this );\n    \n                owner.on( 'uploadComplete', function( file ) {\n                    \n                    // 把其他块取消了。\n                    file.blocks && $.each( file.blocks, function( _, v ) {\n                        v.transport && (v.transport.abort(), v.transport.destroy());\n                        delete v.transport;\n                    });\n    \n                    delete file.blocks;\n                    delete file.remaning;\n                });\n            },\n    \n            reset: function() {\n                this.request( 'stop-upload', true );\n                this.runing = false;\n                this.pool = [];\n                this.stack = [];\n                this.pending = [];\n                this.remaning = 0;\n                this._trigged = false;\n                this._promise = null;\n            },\n    \n            /**\n             * @event startUpload\n             * @description 当开始上传流程时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 开始上传。此方法可以从初始状态调用开始上传流程，也可以从暂停状态调用，继续上传流程。\n             *\n             * 可以指定开始某一个文件。\n             * @grammar upload() => undefined\n             * @grammar upload( file | fileId) => undefined\n             * @method upload\n             * @for  Uploader\n             */\n            startUpload: function(file) {\n                var me = this;\n    \n                // 移出invalid的文件\n                $.each( me.request( 'get-files', Status.INVALID ), function() {\n                    me.request( 'remove-file', this );\n                });\n    \n                // 如果指定了开始某个文件，则只开始指定文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if (file.getStatus() === Status.INTERRUPT) {\n                        $.each( me.pool, function( _, v ) {\n                        \n                            // 之前暂停过。\n                            if (v.file !== file) {\n                                return;\n                            }\n    \n                            v.transport && v.transport.send();\n                        });\n                        \n                        file.setStatus( Status.QUEUED );\n                    } else if (file.getStatus() === Status.PROGRESS) {\n                        return;\n                    } else {\n                        file.setStatus( Status.QUEUED );\n                    }\n                } else {\n                    $.each( me.request( 'get-files', [ Status.INITED ] ), function() {\n                        this.setStatus( Status.QUEUED );\n                    });\n                }\n    \n                if ( me.runing ) {\n                    return;\n                }\n    \n                me.runing = true;\n    \n                // 如果有暂停的，则续传\n                $.each( me.pool, function( _, v ) {\n                    var file = v.file;\n    \n                    if ( file.getStatus() === Status.INTERRUPT ) {\n                        file.setStatus( Status.PROGRESS );\n                        me._trigged = false;\n                        v.transport && v.transport.send();\n                    }\n                });\n    \n                file || $.each( me.request( 'get-files',\n                        Status.INTERRUPT ), function() {\n                    this.setStatus( Status.PROGRESS );\n                });\n    \n                me._trigged = false;\n                Base.nextTick( me.__tick );\n                me.owner.trigger('startUpload');\n            },\n    \n            /**\n             * @event stopUpload\n             * @description 当开始上传流程暂停时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * 暂停上传。第一个参数为是否中断上传当前正在上传的文件。\n             *\n             * 如果第一个参数是文件，则只暂停指定文件。\n             * @grammar stop() => undefined\n             * @grammar stop( true ) => undefined\n             * @grammar stop( file ) => undefined\n             * @method stop\n             * @for  Uploader\n             */\n            stopUpload: function( file, interrupt ) {\n                var me = this;\n    \n                if (file === true) {\n                    interrupt = file;\n                    file = null;\n                }\n    \n                if ( me.runing === false ) {\n                    return;\n                }\n    \n                // 如果只是暂停某个文件。\n                if ( file ) {\n                    file = file.id ? file : me.request( 'get-file', file );\n    \n                    if ( file.getStatus() !== Status.PROGRESS &&\n                            file.getStatus() !== Status.QUEUED ) {\n                        return;\n                    }\n    \n                    file.setStatus( Status.INTERRUPT );\n                    $.each( me.pool, function( _, v ) {\n                        \n                        // 只 abort 指定的文件。\n                        if (v.file !== file) {\n                            return;\n                        }\n    \n                        v.transport && v.transport.abort();\n                        me._putback(v);\n                        me._popBlock(v);\n                    });\n    \n                    return Base.nextTick( me.__tick );\n                }\n    \n                me.runing = false;\n    \n                if (this._promise && this._promise.file) {\n                    this._promise.file.setStatus( Status.INTERRUPT );\n                }\n    \n                interrupt && $.each( me.pool, function( _, v ) {\n                    v.transport && v.transport.abort();\n                    v.file.setStatus( Status.INTERRUPT );\n                });\n    \n                me.owner.trigger('stopUpload');\n            },\n    \n            /**\n             * @method cancelFile\n             * @grammar cancelFile( file ) => undefined\n             * @grammar cancelFile( id ) => undefined\n             * @param {File|id} file File对象或这File对象的id\n             * @description 标记文件状态为已取消, 同时将中断文件传输。\n             * @for  Uploader\n             * @example\n             *\n             * $li.on('click', '.remove-this', function() {\n             *     uploader.cancelFile( file );\n             * })\n             */\n            cancelFile: function( file ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                file.setStatus( Status.CANCELLED );\n                this.owner.trigger( 'fileDequeued', file );\n            },\n    \n            /**\n             * 判断`Uplaode`r是否正在上传中。\n             * @grammar isInProgress() => Boolean\n             * @method isInProgress\n             * @for  Uploader\n             */\n            isInProgress: function() {\n                return !!this.progress;\n            },\n    \n            _getStats: function() {\n                return this.request('get-stats');\n            },\n    \n            /**\n             * 掉过一个文件上传，直接标记指定文件为已上传状态。\n             * @grammar skipFile( file ) => undefined\n             * @method skipFile\n             * @for  Uploader\n             */\n            skipFile: function( file, status ) {\n                file = file.id ? file : this.request( 'get-file', file );\n    \n                file.setStatus( status || Status.COMPLETE );\n                file.skipped = true;\n    \n                // 如果正在上传。\n                file.blocks && $.each( file.blocks, function( _, v ) {\n                    var _tr = v.transport;\n    \n                    if ( _tr ) {\n                        _tr.abort();\n                        _tr.destroy();\n                        delete v.transport;\n                    }\n                });\n    \n                this.owner.trigger( 'uploadSkip', file );\n            },\n    \n            /**\n             * @event uploadFinished\n             * @description 当所有文件上传结束时触发。\n             * @for  Uploader\n             */\n            _tick: function() {\n                var me = this,\n                    opts = me.options,\n                    fn, val;\n    \n                // 上一个promise还没有结束，则等待完成后再执行。\n                if ( me._promise ) {\n                    return me._promise.always( me.__tick );\n                }\n    \n                // 还有位置，且还有文件要处理的话。\n                if ( me.pool.length < opts.threads && (val = me._nextBlock()) ) {\n                    me._trigged = false;\n    \n                    fn = function( val ) {\n                        me._promise = null;\n    \n                        // 有可能是reject过来的，所以要检测val的类型。\n                        val && val.file && me._startSend( val );\n                        Base.nextTick( me.__tick );\n                    };\n    \n                    me._promise = isPromise( val ) ? val.always( fn ) : fn( val );\n    \n                // 没有要上传的了，且没有正在传输的了。\n                } else if ( !me.remaning && !me._getStats().numOfQueue &&\n                    !me._getStats().numofInterrupt ) {\n                    me.runing = false;\n    \n                    me._trigged || Base.nextTick(function() {\n                        me.owner.trigger('uploadFinished');\n                    });\n                    me._trigged = true;\n                }\n            },\n    \n            _putback: function(block) {\n                var idx;\n    \n                block.cuted.unshift(block);\n                idx = this.stack.indexOf(block.cuted);\n    \n                if (!~idx) {\n                    this.stack.unshift(block.cuted);\n                }\n            },\n    \n            _getStack: function() {\n                var i = 0,\n                    act;\n    \n                while ( (act = this.stack[ i++ ]) ) {\n                    if ( act.has() && act.file.getStatus() === Status.PROGRESS ) {\n                        return act;\n                    } else if (!act.has() ||\n                            act.file.getStatus() !== Status.PROGRESS &&\n                            act.file.getStatus() !== Status.INTERRUPT ) {\n    \n                        // 把已经处理完了的，或者，状态为非 progress（上传中）、\n                        // interupt（暂停中） 的移除。\n                        this.stack.splice( --i, 1 );\n                    }\n                }\n    \n                return null;\n            },\n    \n            _nextBlock: function() {\n                var me = this,\n                    opts = me.options,\n                    act, next, done, preparing;\n    \n                // 如果当前文件还有没有需要传输的，则直接返回剩下的。\n                if ( (act = this._getStack()) ) {\n    \n                    // 是否提前准备下一个文件\n                    if ( opts.prepareNextFile && !me.pending.length ) {\n                        me._prepareNextFile();\n                    }\n    \n                    return act.shift();\n    \n                // 否则，如果正在运行，则准备下一个文件，并等待完成后返回下个分片。\n                } else if ( me.runing ) {\n    \n                    // 如果缓存中有，则直接在缓存中取，没有则去queue中取。\n                    if ( !me.pending.length && me._getStats().numOfQueue ) {\n                        me._prepareNextFile();\n                    }\n    \n                    next = me.pending.shift();\n                    done = function( file ) {\n                        if ( !file ) {\n                            return null;\n                        }\n                            \n                        act = CuteFile( file, opts.chunked ? opts.chunkSize : 0 );\n                        me.stack.push(act);\n                        return act.shift();\n                    };\n    \n                    // 文件可能还在prepare中，也有可能已经完全准备好了。\n                    if ( isPromise( next) ) {\n                        preparing = next.file;\n                        next = next[ next.pipe ? 'pipe' : 'then' ]( done );\n                        next.file = preparing;\n                        return next;\n                    }\n    \n                    return done( next );\n                }\n            },\n    \n    \n            /**\n             * @event uploadStart\n             * @param {File} file File对象\n             * @description 某个文件开始上传前触发，一个文件只会触发一次。\n             * @for  Uploader\n             */\n            _prepareNextFile: function() {\n                var me = this,\n                    file = me.request('fetch-file'),\n                    pending = me.pending,\n                    promise;\n    \n                if ( file ) {\n                    promise = me.request( 'before-send-file', file, function() {\n    \n                        // 有可能文件被skip掉了。文件被skip掉后，状态坑定不是Queued.\n                        if ( file.getStatus() === Status.PROGRESS || \n                            file.getStatus() === Status.INTERRUPT ) {\n                            return file;\n                        }\n    \n                        return me._finishFile( file );\n                    });\n    \n                    me.owner.trigger( 'uploadStart', file );\n                    file.setStatus( Status.PROGRESS );\n    \n                    promise.file = file;\n    \n                    // 如果还在pending中，则替换成文件本身。\n                    promise.done(function() {\n                        var idx = $.inArray( promise, pending );\n    \n                        ~idx && pending.splice( idx, 1, file );\n                    });\n    \n                    // befeore-send-file的钩子就有错误发生。\n                    promise.fail(function( reason ) {\n                        file.setStatus( Status.ERROR, reason );\n                        me.owner.trigger( 'uploadError', file, reason );\n                        me.owner.trigger( 'uploadComplete', file );\n                    });\n    \n                    pending.push( promise );\n                }\n            },\n    \n            // 让出位置了，可以让其他分片开始上传\n            _popBlock: function( block ) {\n                var idx = $.inArray( block, this.pool );\n    \n                this.pool.splice( idx, 1 );\n                block.file.remaning--;\n                this.remaning--;\n            },\n    \n            // 开始上传，可以被掉过。如果promise被reject了，则表示跳过此分片。\n            _startSend: function( block ) {\n                var me = this,\n                    file = block.file,\n                    promise;\n    \n                // 有可能在 before-send-file 的 promise 期间改变了文件状态。\n                // 如：暂停，取消\n                // 我们不能中断 promise, 但是可以在 promise 完后，不做上传操作。\n                if ( file.getStatus() !== Status.PROGRESS ) {\n                    \n                    // 如果是中断，则还需要放回去。\n                    if (file.getStatus() === Status.INTERRUPT) {\n                        me._putback(block);\n                    }\n    \n                    return;\n                }\n    \n                me.pool.push( block );\n                me.remaning++;\n    \n                // 如果没有分片，则直接使用原始的。\n                // 不会丢失content-type信息。\n                block.blob = block.chunks === 1 ? file.source :\n                        file.source.slice( block.start, block.end );\n    \n                // hook, 每个分片发送之前可能要做些异步的事情。\n                promise = me.request( 'before-send', block, function() {\n    \n                    // 有可能文件已经上传出错了，所以不需要再传输了。\n                    if ( file.getStatus() === Status.PROGRESS ) {\n                        me._doSend( block );\n                    } else {\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n    \n                // 如果为fail了，则跳过此分片。\n                promise.fail(function() {\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file ).always(function() {\n                            block.percentage = 1;\n                            me._popBlock( block );\n                            me.owner.trigger( 'uploadComplete', file );\n                            Base.nextTick( me.__tick );\n                        });\n                    } else {\n                        block.percentage = 1;\n                        me._popBlock( block );\n                        Base.nextTick( me.__tick );\n                    }\n                });\n            },\n    \n    \n            /**\n             * @event uploadBeforeSend\n             * @param {Object} object\n             * @param {Object} data 默认的上传参数，可以扩展此对象来控制上传参数。\n             * @param {Object} headers 可以扩展此对象来控制上传头部。\n             * @description 当某个文件的分块在发送前触发，主要用来询问是否要添加附带参数，大文件在开起分片上传的前提下此事件可能会触发多次。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadAccept\n             * @param {Object} object\n             * @param {Object} ret 服务端的返回数据，json格式，如果服务端不是json格式，从ret._raw中取数据，自行解析。\n             * @description 当某个文件上传到服务端响应后，会派送此事件来询问服务端响应是否有效。如果此事件handler返回值为`false`, 则此文件将派送`server`类型的`uploadError`事件。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadProgress\n             * @param {File} file File对象\n             * @param {Number} percentage 上传进度\n             * @description 上传过程中触发，携带上传进度。\n             * @for  Uploader\n             */\n    \n    \n            /**\n             * @event uploadError\n             * @param {File} file File对象\n             * @param {String} reason 出错的code\n             * @description 当文件上传出错时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadSuccess\n             * @param {File} file File对象\n             * @param {Object} response 服务端返回的数据\n             * @description 当文件上传成功时触发。\n             * @for  Uploader\n             */\n    \n            /**\n             * @event uploadComplete\n             * @param {File} [file] File对象\n             * @description 不管成功或者失败，文件上传完成时触发。\n             * @for  Uploader\n             */\n    \n            // 做上传操作。\n            _doSend: function( block ) {\n                var me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    file = block.file,\n                    tr = new Transport( opts ),\n                    data = $.extend({}, opts.formData ),\n                    headers = $.extend({}, opts.headers ),\n                    requestAccept, ret;\n    \n                block.transport = tr;\n    \n                tr.on( 'destroy', function() {\n                    delete block.transport;\n                    me._popBlock( block );\n                    Base.nextTick( me.__tick );\n                });\n    \n                // 广播上传进度。以文件为单位。\n                tr.on( 'progress', function( percentage ) {\n                    var totalPercent = 0,\n                        uploaded = 0;\n    \n                    // 可能没有abort掉，progress还是执行进来了。\n                    // if ( !file.blocks ) {\n                    //     return;\n                    // }\n    \n                    totalPercent = block.percentage = percentage;\n    \n                    if ( block.chunks > 1 ) {    // 计算文件的整体速度。\n                        $.each( file.blocks, function( _, v ) {\n                            uploaded += (v.percentage || 0) * (v.end - v.start);\n                        });\n    \n                        totalPercent = uploaded / file.size;\n                    }\n    \n                    owner.trigger( 'uploadProgress', file, totalPercent || 0 );\n                });\n    \n                // 用来询问，是否返回的结果是有错误的。\n                requestAccept = function( reject ) {\n                    var fn;\n    \n                    ret = tr.getResponseAsJson() || {};\n                    ret._raw = tr.getResponse();\n                    fn = function( value ) {\n                        reject = value;\n                    };\n    \n                    // 服务端响应了，不代表成功了，询问是否响应正确。\n                    if ( !owner.trigger( 'uploadAccept', block, ret, fn ) ) {\n                        reject = reject || 'server';\n                    }\n    \n                    return reject;\n                };\n    \n                // 尝试重试，然后广播文件上传出错。\n                tr.on( 'error', function( type, flag ) {\n                    block.retried = block.retried || 0;\n    \n                    // 自动重试\n                    if ( block.chunks > 1 && ~'http,abort'.indexOf( type ) &&\n                            block.retried < opts.chunkRetry ) {\n    \n                        block.retried++;\n                        tr.send();\n    \n                    } else {\n    \n                        // http status 500 ~ 600\n                        if ( !flag && type === 'server' ) {\n                            type = requestAccept( type );\n                        }\n    \n                        file.setStatus( Status.ERROR, type );\n                        owner.trigger( 'uploadError', file, type );\n                        owner.trigger( 'uploadComplete', file );\n                    }\n                });\n    \n                // 上传成功\n                tr.on( 'load', function() {\n                    var reason;\n    \n                    // 如果非预期，转向上传出错。\n                    if ( (reason = requestAccept()) ) {\n                        tr.trigger( 'error', reason, true );\n                        return;\n                    }\n    \n                    // 全部上传完成。\n                    if ( file.remaning === 1 ) {\n                        me._finishFile( file, ret );\n                    } else {\n                        tr.destroy();\n                    }\n                });\n    \n                // 配置默认的上传字段。\n                data = $.extend( data, {\n                    id: file.id,\n                    name: file.name,\n                    type: file.type,\n                    lastModifiedDate: file.lastModifiedDate,\n                    size: file.size\n                });\n    \n                block.chunks > 1 && $.extend( data, {\n                    chunks: block.chunks,\n                    chunk: block.chunk\n                });\n    \n                // 在发送之间可以添加字段什么的。。。\n                // 如果默认的字段不够使用，可以通过监听此事件来扩展\n                owner.trigger( 'uploadBeforeSend', block, data, headers );\n    \n                // 开始发送。\n                tr.appendBlob( opts.fileVal, block.blob, file.name );\n                tr.append( data );\n                tr.setRequestHeader( headers );\n                tr.send();\n            },\n    \n            // 完成上传。\n            _finishFile: function( file, ret, hds ) {\n                var owner = this.owner;\n    \n                return owner\n                        .request( 'after-send-file', arguments, function() {\n                            file.setStatus( Status.COMPLETE );\n                            owner.trigger( 'uploadSuccess', file, ret, hds );\n                        })\n                        .fail(function( reason ) {\n    \n                            // 如果外部已经标记为invalid什么的，不再改状态。\n                            if ( file.getStatus() === Status.PROGRESS ) {\n                                file.setStatus( Status.ERROR, reason );\n                            }\n    \n                            owner.trigger( 'uploadError', file, reason );\n                        })\n                        .always(function() {\n                            owner.trigger( 'uploadComplete', file );\n                        });\n            }\n    \n        });\n    });\n    /**\n     * @fileOverview 各种验证，包括文件总大小是否超出、单文件是否超出和文件是否重复。\n     */\n    \n    define('widgets/validator',[\n        'base',\n        'uploader',\n        'file',\n        'widgets/widget'\n    ], function( Base, Uploader, WUFile ) {\n    \n        var $ = Base.$,\n            validators = {},\n            api;\n    \n        /**\n         * @event error\n         * @param {String} type 错误类型。\n         * @description 当validate不通过时，会以派送错误事件的形式通知调用者。通过`upload.on('error', handler)`可以捕获到此类错误，目前有以下错误会在特定的情况下派送错来。\n         *\n         * * `Q_EXCEED_NUM_LIMIT` 在设置了`fileNumLimit`且尝试给`uploader`添加的文件数量超出这个值时派送。\n         * * `Q_EXCEED_SIZE_LIMIT` 在设置了`Q_EXCEED_SIZE_LIMIT`且尝试给`uploader`添加的文件总大小超出这个值时派送。\n         * * `Q_TYPE_DENIED` 当文件类型不满足时触发。。\n         * @for  Uploader\n         */\n    \n        // 暴露给外面的api\n        api = {\n    \n            // 添加验证器\n            addValidator: function( type, cb ) {\n                validators[ type ] = cb;\n            },\n    \n            // 移除验证器\n            removeValidator: function( type ) {\n                delete validators[ type ];\n            }\n        };\n    \n        // 在Uploader初始化的时候启动Validators的初始化\n        Uploader.register({\n            name: 'validator',\n    \n            init: function() {\n                var me = this;\n                Base.nextTick(function() {\n                    $.each( validators, function() {\n                        this.call( me.owner );\n                    });\n                });\n            }\n        });\n    \n        /**\n         * @property {int} [fileNumLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总数量, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileNumLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                count = 0,\n                max = parseInt( opts.fileNumLimit, 10 ),\n                flag = true;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n    \n                if ( count >= max && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_NUM_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return count >= max ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function() {\n                count++;\n            });\n    \n            uploader.on( 'fileDequeued', function() {\n                count--;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n    \n        /**\n         * @property {int} [fileSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证文件总大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                count = 0,\n                max = parseInt( opts.fileSizeLimit, 10 ),\n                flag = true;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var invalid = count + file.size > max;\n    \n                if ( invalid && flag ) {\n                    flag = false;\n                    this.trigger( 'error', 'Q_EXCEED_SIZE_LIMIT', max, file );\n                    setTimeout(function() {\n                        flag = true;\n                    }, 1 );\n                }\n    \n                return invalid ? false : true;\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                count += file.size;\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                count -= file.size;\n            });\n    \n            uploader.on( 'reset', function() {\n                count = 0;\n            });\n        });\n    \n        /**\n         * @property {int} [fileSingleSizeLimit=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 验证单个文件大小是否超出限制, 超出则不允许加入队列。\n         */\n        api.addValidator( 'fileSingleSizeLimit', function() {\n            var uploader = this,\n                opts = uploader.options,\n                max = opts.fileSingleSizeLimit;\n    \n            if ( !max ) {\n                return;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n    \n                if ( file.size > max ) {\n                    file.setStatus( WUFile.Status.INVALID, 'exceed_size' );\n                    this.trigger( 'error', 'F_EXCEED_SIZE', max, file );\n                    return false;\n                }\n    \n            });\n    \n        });\n    \n        /**\n         * @property {Boolean} [duplicate=undefined]\n         * @namespace options\n         * @for Uploader\n         * @description 去重， 根据文件名字、文件大小和最后修改时间来生成hash Key.\n         */\n        api.addValidator( 'duplicate', function() {\n            var uploader = this,\n                opts = uploader.options,\n                mapping = {};\n    \n            if ( opts.duplicate ) {\n                return;\n            }\n    \n            function hashString( str ) {\n                var hash = 0,\n                    i = 0,\n                    len = str.length,\n                    _char;\n    \n                for ( ; i < len; i++ ) {\n                    _char = str.charCodeAt( i );\n                    hash = _char + (hash << 6) + (hash << 16) - hash;\n                }\n    \n                return hash;\n            }\n    \n            uploader.on( 'beforeFileQueued', function( file ) {\n                var hash = file.__hash || (file.__hash = hashString( file.name +\n                        file.size + file.lastModifiedDate ));\n    \n                // 已经重复了\n                if ( mapping[ hash ] ) {\n                    this.trigger( 'error', 'F_DUPLICATE', file );\n                    return false;\n                }\n            });\n    \n            uploader.on( 'fileQueued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (mapping[ hash ] = true);\n            });\n    \n            uploader.on( 'fileDequeued', function( file ) {\n                var hash = file.__hash;\n    \n                hash && (delete mapping[ hash ]);\n            });\n    \n            uploader.on( 'reset', function() {\n                mapping = {};\n            });\n        });\n    \n        return api;\n    });\n    \n    /**\n     * @fileOverview Runtime管理器，负责Runtime的选择, 连接\n     */\n    define('runtime/compbase',[],function() {\n    \n        function CompBase( owner, runtime ) {\n    \n            this.owner = owner;\n            this.options = owner.options;\n    \n            this.getRuntime = function() {\n                return runtime;\n            };\n    \n            this.getRuid = function() {\n                return runtime.uid;\n            };\n    \n            this.trigger = function() {\n                return owner.trigger.apply( owner, arguments );\n            };\n        }\n    \n        return CompBase;\n    });\n    /**\n     * @fileOverview Html5Runtime\n     */\n    define('runtime/html5/runtime',[\n        'base',\n        'runtime/runtime',\n        'runtime/compbase'\n    ], function( Base, Runtime, CompBase ) {\n    \n        var type = 'html5',\n            components = {};\n    \n        function Html5Runtime() {\n            var pool = {},\n                me = this,\n                destroy = this.destroy;\n    \n            Runtime.apply( me, arguments );\n            me.type = type;\n    \n    \n            // 这个方法的调用者，实际上是RuntimeClient\n            me.exec = function( comp, fn/*, args...*/) {\n                var client = this,\n                    uid = client.uid,\n                    args = Base.slice( arguments, 2 ),\n                    instance;\n    \n                if ( components[ comp ] ) {\n                    instance = pool[ uid ] = pool[ uid ] ||\n                            new components[ comp ]( client, me );\n    \n                    if ( instance[ fn ] ) {\n                        return instance[ fn ].apply( instance, args );\n                    }\n                }\n            };\n    \n            me.destroy = function() {\n                // @todo 删除池子中的所有实例\n                return destroy && destroy.apply( this, arguments );\n            };\n        }\n    \n        Base.inherits( Runtime, {\n            constructor: Html5Runtime,\n    \n            // 不需要连接其他程序，直接执行callback\n            init: function() {\n                var me = this;\n                setTimeout(function() {\n                    me.trigger('ready');\n                }, 1 );\n            }\n    \n        });\n    \n        // 注册Components\n        Html5Runtime.register = function( name, component ) {\n            var klass = components[ name ] = Base.inherits( CompBase, component );\n            return klass;\n        };\n    \n        // 注册html5运行时。\n        // 只有在支持的前提下注册。\n        if ( window.Blob && window.FileReader && window.DataView ) {\n            Runtime.addRuntime( type, Html5Runtime );\n        }\n    \n        return Html5Runtime;\n    });\n    /**\n     * @fileOverview Blob Html实现\n     */\n    define('runtime/html5/blob',[\n        'runtime/html5/runtime',\n        'lib/blob'\n    ], function( Html5Runtime, Blob ) {\n    \n        return Html5Runtime.register( 'Blob', {\n            slice: function( start, end ) {\n                var blob = this.owner.source,\n                    slice = blob.slice || blob.webkitSlice || blob.mozSlice;\n    \n                blob = slice.call( blob, start, end );\n    \n                return new Blob( this.getRuid(), blob );\n            }\n        });\n    });\n    /**\n     * @fileOverview FilePaste\n     */\n    define('runtime/html5/dnd',[\n        'base',\n        'runtime/html5/runtime',\n        'lib/file'\n    ], function( Base, Html5Runtime, File ) {\n    \n        var $ = Base.$,\n            prefix = 'webuploader-dnd-';\n    \n        return Html5Runtime.register( 'DragAndDrop', {\n            init: function() {\n                var elem = this.elem = this.options.container;\n    \n                this.dragEnterHandler = Base.bindFn( this._dragEnterHandler, this );\n                this.dragOverHandler = Base.bindFn( this._dragOverHandler, this );\n                this.dragLeaveHandler = Base.bindFn( this._dragLeaveHandler, this );\n                this.dropHandler = Base.bindFn( this._dropHandler, this );\n                this.dndOver = false;\n    \n                elem.on( 'dragenter', this.dragEnterHandler );\n                elem.on( 'dragover', this.dragOverHandler );\n                elem.on( 'dragleave', this.dragLeaveHandler );\n                elem.on( 'drop', this.dropHandler );\n    \n                if ( this.options.disableGlobalDnd ) {\n                    $( document ).on( 'dragover', this.dragOverHandler );\n                    $( document ).on( 'drop', this.dropHandler );\n                }\n            },\n    \n            _dragEnterHandler: function( e ) {\n                var me = this,\n                    denied = me._denied || false,\n                    items;\n    \n                e = e.originalEvent || e;\n    \n                if ( !me.dndOver ) {\n                    me.dndOver = true;\n    \n                    // 注意只有 chrome 支持。\n                    items = e.dataTransfer.items;\n    \n                    if ( items && items.length ) {\n                        me._denied = denied = !me.trigger( 'accept', items );\n                    }\n    \n                    me.elem.addClass( prefix + 'over' );\n                    me.elem[ denied ? 'addClass' :\n                            'removeClass' ]( prefix + 'denied' );\n                }\n    \n                e.dataTransfer.dropEffect = denied ? 'none' : 'copy';\n    \n                return false;\n            },\n    \n            _dragOverHandler: function( e ) {\n                // 只处理框内的。\n                var parentElem = this.elem.parent().get( 0 );\n                if ( parentElem && !$.contains( parentElem, e.currentTarget ) ) {\n                    return false;\n                }\n    \n                clearTimeout( this._leaveTimer );\n                this._dragEnterHandler.call( this, e );\n    \n                return false;\n            },\n    \n            _dragLeaveHandler: function() {\n                var me = this,\n                    handler;\n    \n                handler = function() {\n                    me.dndOver = false;\n                    me.elem.removeClass( prefix + 'over ' + prefix + 'denied' );\n                };\n    \n                clearTimeout( me._leaveTimer );\n                me._leaveTimer = setTimeout( handler, 100 );\n                return false;\n            },\n    \n            _dropHandler: function( e ) {\n                var me = this,\n                    ruid = me.getRuid(),\n                    parentElem = me.elem.parent().get( 0 ),\n                    dataTransfer, data;\n    \n                // 只处理框内的。\n                if ( parentElem && !$.contains( parentElem, e.currentTarget ) ) {\n                    return false;\n                }\n    \n                e = e.originalEvent || e;\n                dataTransfer = e.dataTransfer;\n    \n                // 如果是页面内拖拽，还不能处理，不阻止事件。\n                // 此处 ie11 下会报参数错误，\n                try {\n                    data = dataTransfer.getData('text/html');\n                } catch( err ) {\n                }\n    \n                if ( data ) {\n                    return;\n                }\n    \n                me._getTansferFiles( dataTransfer, function( results ) {\n                    me.trigger( 'drop', $.map( results, function( file ) {\n                        return new File( ruid, file );\n                    }) );\n                });\n    \n                me.dndOver = false;\n                me.elem.removeClass( prefix + 'over' );\n                return false;\n            },\n    \n            // 如果传入 callback 则去查看文件夹，否则只管当前文件夹。\n            _getTansferFiles: function( dataTransfer, callback ) {\n                var results  = [],\n                    promises = [],\n                    items, files, file, item, i, len, canAccessFolder;\n    \n                items = dataTransfer.items;\n                files = dataTransfer.files;\n    \n                canAccessFolder = !!(items && items[ 0 ].webkitGetAsEntry);\n    \n                for ( i = 0, len = files.length; i < len; i++ ) {\n                    file = files[ i ];\n                    item = items && items[ i ];\n    \n                    if ( canAccessFolder && item.webkitGetAsEntry().isDirectory ) {\n    \n                        promises.push( this._traverseDirectoryTree(\n                                item.webkitGetAsEntry(), results ) );\n                    } else {\n                        results.push( file );\n                    }\n                }\n    \n                Base.when.apply( Base, promises ).done(function() {\n    \n                    if ( !results.length ) {\n                        return;\n                    }\n    \n                    callback( results );\n                });\n            },\n    \n            _traverseDirectoryTree: function( entry, results ) {\n                var deferred = Base.Deferred(),\n                    me = this;\n    \n                if ( entry.isFile ) {\n                    entry.file(function( file ) {\n                        results.push( file );\n                        deferred.resolve();\n                    });\n                } else if ( entry.isDirectory ) {\n                    entry.createReader().readEntries(function( entries ) {\n                        var len = entries.length,\n                            promises = [],\n                            arr = [],    // 为了保证顺序。\n                            i;\n    \n                        for ( i = 0; i < len; i++ ) {\n                            promises.push( me._traverseDirectoryTree(\n                                    entries[ i ], arr ) );\n                        }\n    \n                        Base.when.apply( Base, promises ).then(function() {\n                            results.push.apply( results, arr );\n                            deferred.resolve();\n                        }, deferred.reject );\n                    });\n                }\n    \n                return deferred.promise();\n            },\n    \n            destroy: function() {\n                var elem = this.elem;\n    \n                // 还没 init 就调用 destroy\n                if (!elem) {\n                    return;\n                }\n                \n                elem.off( 'dragenter', this.dragEnterHandler );\n                elem.off( 'dragover', this.dragOverHandler );\n                elem.off( 'dragleave', this.dragLeaveHandler );\n                elem.off( 'drop', this.dropHandler );\n    \n                if ( this.options.disableGlobalDnd ) {\n                    $( document ).off( 'dragover', this.dragOverHandler );\n                    $( document ).off( 'drop', this.dropHandler );\n                }\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview FilePaste\n     */\n    define('runtime/html5/filepaste',[\n        'base',\n        'runtime/html5/runtime',\n        'lib/file'\n    ], function( Base, Html5Runtime, File ) {\n    \n        return Html5Runtime.register( 'FilePaste', {\n            init: function() {\n                var opts = this.options,\n                    elem = this.elem = opts.container,\n                    accept = '.*',\n                    arr, i, len, item;\n    \n                // accetp的mimeTypes中生成匹配正则。\n                if ( opts.accept ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        item = opts.accept[ i ].mimeTypes;\n                        item && arr.push( item );\n                    }\n    \n                    if ( arr.length ) {\n                        accept = arr.join(',');\n                        accept = accept.replace( /,/g, '|' ).replace( /\\*/g, '.*' );\n                    }\n                }\n                this.accept = accept = new RegExp( accept, 'i' );\n                this.hander = Base.bindFn( this._pasteHander, this );\n                elem.on( 'paste', this.hander );\n            },\n    \n            _pasteHander: function( e ) {\n                var allowed = [],\n                    ruid = this.getRuid(),\n                    items, item, blob, i, len;\n    \n                e = e.originalEvent || e;\n                items = e.clipboardData.items;\n    \n                for ( i = 0, len = items.length; i < len; i++ ) {\n                    item = items[ i ];\n    \n                    if ( item.kind !== 'file' || !(blob = item.getAsFile()) ) {\n                        continue;\n                    }\n    \n                    allowed.push( new File( ruid, blob ) );\n                }\n    \n                if ( allowed.length ) {\n                    // 不阻止非文件粘贴（文字粘贴）的事件冒泡\n                    e.preventDefault();\n                    e.stopPropagation();\n                    this.trigger( 'paste', allowed );\n                }\n            },\n    \n            destroy: function() {\n                this.elem.off( 'paste', this.hander );\n            }\n        });\n    });\n    \n    /**\n     * @fileOverview FilePicker\n     */\n    define('runtime/html5/filepicker',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var $ = Base.$;\n    \n        return Html5Runtime.register( 'FilePicker', {\n            init: function() {\n                var container = this.getRuntime().getContainer(),\n                    me = this,\n                    owner = me.owner,\n                    opts = me.options,\n                    label = this.label = $( document.createElement('label') ),\n                    input =  this.input = $( document.createElement('input') ),\n                    arr, i, len, mouseHandler;\n    \n                input.attr( 'type', 'file' );\n                input.attr( 'name', opts.name );\n                input.addClass('webuploader-element-invisible');\n    \n                label.on( 'click', function() {\n                    input.trigger('click');\n                });\n    \n                label.css({\n                    opacity: 0,\n                    width: '100%',\n                    height: '100%',\n                    display: 'block',\n                    cursor: 'pointer',\n                    background: '#ffffff'\n                });\n    \n                if ( opts.multiple ) {\n                    input.attr( 'multiple', 'multiple' );\n                }\n    \n                // @todo Firefox不支持单独指定后缀\n                if ( opts.accept && opts.accept.length > 0 ) {\n                    arr = [];\n    \n                    for ( i = 0, len = opts.accept.length; i < len; i++ ) {\n                        arr.push( opts.accept[ i ].mimeTypes );\n                    }\n    \n                    input.attr( 'accept', arr.join(',') );\n                }\n    \n                container.append( input );\n                container.append( label );\n    \n                mouseHandler = function( e ) {\n                    owner.trigger( e.type );\n                };\n    \n                input.on( 'change', function( e ) {\n                    var fn = arguments.callee,\n                        clone;\n    \n                    me.files = e.target.files;\n    \n                    // reset input\n                    clone = this.cloneNode( true );\n                    clone.value = null;\n                    this.parentNode.replaceChild( clone, this );\n    \n                    input.off();\n                    input = $( clone ).on( 'change', fn )\n                            .on( 'mouseenter mouseleave', mouseHandler );\n    \n                    owner.trigger('change');\n                });\n    \n                label.on( 'mouseenter mouseleave', mouseHandler );\n    \n            },\n    \n    \n            getFiles: function() {\n                return this.files;\n            },\n    \n            destroy: function() {\n                this.input.off();\n                this.label.off();\n            }\n        });\n    });\n    /**\n     * @fileOverview Transport\n     * @todo 支持chunked传输，优势：\n     * 可以将大文件分成小块，挨个传输，可以提高大文件成功率，当失败的时候，也只需要重传那小部分，\n     * 而不需要重头再传一次。另外断点续传也需要用chunked方式。\n     */\n    define('runtime/html5/transport',[\n        'base',\n        'runtime/html5/runtime'\n    ], function( Base, Html5Runtime ) {\n    \n        var noop = Base.noop,\n            $ = Base.$;\n    \n        return Html5Runtime.register( 'Transport', {\n            init: function() {\n                this._status = 0;\n                this._response = null;\n            },\n    \n            send: function() {\n                var owner = this.owner,\n                    opts = this.options,\n                    xhr = this._initAjax(),\n                    blob = owner._blob,\n                    server = opts.server,\n                    formData, binary, fr;\n    \n                if ( opts.sendAsBinary ) {\n                    server += (/\\?/.test( server ) ? '&' : '?') +\n                            $.param( owner._formData );\n    \n                    binary = blob.getSource();\n                } else {\n                    formData = new FormData();\n                    $.each( owner._formData, function( k, v ) {\n                        formData.append( k, v );\n                    });\n    \n                    formData.append( opts.fileVal, blob.getSource(),\n                            opts.filename || owner._formData.name || '' );\n                }\n    \n                if ( opts.withCredentials && 'withCredentials' in xhr ) {\n                    xhr.open( opts.method, server, true );\n                    xhr.withCredentials = true;\n                } else {\n                    xhr.open( opts.method, server );\n                }\n    \n                this._setRequestHeader( xhr, opts.headers );\n    \n                if ( binary ) {\n                    // 强制设置成 content-type 为文件流。\n                    xhr.overrideMimeType &&\n                            xhr.overrideMimeType('application/octet-stream');\n    \n                    // android直接发送blob会导致服务端接收到的是空文件。\n                    // bug详情。\n                    // https://code.google.com/p/android/issues/detail?id=39882\n                    // 所以先用fileReader读取出来再通过arraybuffer的方式发送。\n                    if ( Base.os.android ) {\n                        fr = new FileReader();\n    \n                        fr.onload = function() {\n                            xhr.send( this.result );\n                            fr = fr.onload = null;\n                        };\n    \n                        fr.readAsArrayBuffer( binary );\n                    } else {\n                        xhr.send( binary );\n                    }\n                } else {\n                    xhr.send( formData );\n                }\n            },\n    \n            getResponse: function() {\n                return this._response;\n            },\n    \n            getResponseAsJson: function() {\n                return this._parseJson( this._response );\n            },\n    \n            getStatus: function() {\n                return this._status;\n            },\n    \n            abort: function() {\n                var xhr = this._xhr;\n    \n                if ( xhr ) {\n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    xhr.abort();\n    \n                    this._xhr = xhr = null;\n                }\n            },\n    \n            destroy: function() {\n                this.abort();\n            },\n    \n            _initAjax: function() {\n                var me = this,\n                    xhr = new XMLHttpRequest(),\n                    opts = this.options;\n    \n                if ( opts.withCredentials && !('withCredentials' in xhr) &&\n                        typeof XDomainRequest !== 'undefined' ) {\n                    xhr = new XDomainRequest();\n                }\n    \n                xhr.upload.onprogress = function( e ) {\n                    var percentage = 0;\n    \n                    if ( e.lengthComputable ) {\n                        percentage = e.loaded / e.total;\n                    }\n    \n                    return me.trigger( 'progress', percentage );\n                };\n    \n                xhr.onreadystatechange = function() {\n    \n                    if ( xhr.readyState !== 4 ) {\n                        return;\n                    }\n    \n                    xhr.upload.onprogress = noop;\n                    xhr.onreadystatechange = noop;\n                    me._xhr = null;\n                    me._status = xhr.status;\n    \n                    if ( xhr.status >= 200 && xhr.status < 300 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger('load');\n                    } else if ( xhr.status >= 500 && xhr.status < 600 ) {\n                        me._response = xhr.responseText;\n                        return me.trigger( 'error', 'server' );\n                    }\n    \n    \n                    return me.trigger( 'error', me._status ? 'http' : 'abort' );\n                };\n    \n                me._xhr = xhr;\n                return xhr;\n            },\n    \n            _setRequestHeader: function( xhr, headers ) {\n                $.each( headers, function( key, val ) {\n                    xhr.setRequestHeader( key, val );\n                });\n            },\n    \n            _parseJson: function( str ) {\n                var json;\n    \n                try {\n                    json = JSON.parse( str );\n                } catch ( ex ) {\n                    json = {};\n                }\n    \n                return json;\n            }\n        });\n    });\n    /**\n     * @fileOverview FlashRuntime\n     */\n    define('runtime/flash/runtime',[\n        'base',\n        'runtime/runtime',\n        'runtime/compbase'\n    ], function( Base, Runtime, CompBase ) {\n    \n        var $ = Base.$,\n            type = 'flash',\n            components = {};\n    \n    \n        function getFlashVersion() {\n            var version;\n    \n            try {\n                version = navigator.plugins[ 'Shockwave Flash' ];\n                version = version.description;\n            } catch ( ex ) {\n                try {\n                    version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash')\n                            .GetVariable('$version');\n                } catch ( ex2 ) {\n                    version = '0.0';\n                }\n            }\n            version = version.match( /\\d+/g );\n            return parseFloat( version[ 0 ] + '.' + version[ 1 ], 10 );\n        }\n    \n        function FlashRuntime() {\n            var pool = {},\n                clients = {},\n                destroy = this.destroy,\n                me = this,\n                jsreciver = Base.guid('webuploader_');\n    \n            Runtime.apply( me, arguments );\n            me.type = type;\n    \n    \n            // 这个方法的调用者，实际上是RuntimeClient\n            me.exec = function( comp, fn/*, args...*/ ) {\n                var client = this,\n                    uid = client.uid,\n                    args = Base.slice( arguments, 2 ),\n                    instance;\n    \n                clients[ uid ] = client;\n    \n                if ( components[ comp ] ) {\n                    if ( !pool[ uid ] ) {\n                        pool[ uid ] = new components[ comp ]( client, me );\n                    }\n    \n                    instance = pool[ uid ];\n    \n                    if ( instance[ fn ] ) {\n                        return instance[ fn ].apply( instance, args );\n                    }\n                }\n    \n                return me.flashExec.apply( client, arguments );\n            };\n    \n            function handler( evt, obj ) {\n                var type = evt.type || evt,\n                    parts, uid;\n    \n                parts = type.split('::');\n                uid = parts[ 0 ];\n                type = parts[ 1 ];\n    \n                // console.log.apply( console, arguments );\n    \n                if ( type === 'Ready' && uid === me.uid ) {\n                    me.trigger('ready');\n                } else if ( clients[ uid ] ) {\n                    clients[ uid ].trigger( type.toLowerCase(), evt, obj );\n                }\n    \n                // Base.log( evt, obj );\n            }\n    \n            // flash的接受器。\n            window[ jsreciver ] = function() {\n                var args = arguments;\n    \n                // 为了能捕获得到。\n                setTimeout(function() {\n                    handler.apply( null, args );\n                }, 1 );\n            };\n    \n            this.jsreciver = jsreciver;\n    \n            this.destroy = function() {\n                // @todo 删除池子中的所有实例\n                return destroy && destroy.apply( this, arguments );\n            };\n    \n            this.flashExec = function( comp, fn ) {\n                var flash = me.getFlash(),\n                    args = Base.slice( arguments, 2 );\n    \n                return flash.exec( this.uid, comp, fn, args );\n            };\n    \n            // @todo\n        }\n    \n        Base.inherits( Runtime, {\n            constructor: FlashRuntime,\n    \n            init: function() {\n                var container = this.getContainer(),\n                    opts = this.options,\n                    html;\n    \n                // if not the minimal height, shims are not initialized\n                // in older browsers (e.g FF3.6, IE6,7,8, Safari 4.0,5.0, etc)\n                container.css({\n                    position: 'absolute',\n                    top: '-8px',\n                    left: '-8px',\n                    width: '9px',\n                    height: '9px',\n                    overflow: 'hidden'\n                });\n    \n                // insert flash object\n                html = '<object id=\"' + this.uid + '\" type=\"application/' +\n                        'x-shockwave-flash\" data=\"' +  opts.swf + '\" ';\n    \n                if ( Base.browser.ie ) {\n                    html += 'classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" ';\n                }\n    \n                html += 'width=\"100%\" height=\"100%\" style=\"outline:0\">'  +\n                    '<param name=\"movie\" value=\"' + opts.swf + '\" />' +\n                    '<param name=\"flashvars\" value=\"uid=' + this.uid +\n                    '&jsreciver=' + this.jsreciver + '\" />' +\n                    '<param name=\"wmode\" value=\"transparent\" />' +\n                    '<param name=\"allowscriptaccess\" value=\"always\" />' +\n                '</object>';\n    \n                container.html( html );\n            },\n    \n            getFlash: function() {\n                if ( this._flash ) {\n                    return this._flash;\n                }\n    \n                this._flash = $( '#' + this.uid ).get( 0 );\n                return this._flash;\n            }\n    \n        });\n    \n        FlashRuntime.register = function( name, component ) {\n            component = components[ name ] = Base.inherits( CompBase, $.extend({\n    \n                // @todo fix this later\n                flashExec: function() {\n                    var owner = this.owner,\n                        runtime = this.getRuntime();\n    \n                    return runtime.flashExec.apply( owner, arguments );\n                }\n            }, component ) );\n    \n            return component;\n        };\n    \n        if ( getFlashVersion() >= 11.4 ) {\n            Runtime.addRuntime( type, FlashRuntime );\n        }\n    \n        return FlashRuntime;\n    });\n    /**\n     * @fileOverview FilePicker\n     */\n    define('runtime/flash/filepicker',[\n        'base',\n        'runtime/flash/runtime'\n    ], function( Base, FlashRuntime ) {\n        var $ = Base.$;\n    \n        return FlashRuntime.register( 'FilePicker', {\n            init: function( opts ) {\n                var copy = $.extend({}, opts ),\n                    len, i;\n    \n                // 修复Flash再没有设置title的情况下无法弹出flash文件选择框的bug.\n                len = copy.accept && copy.accept.length;\n                for (  i = 0; i < len; i++ ) {\n                    if ( !copy.accept[ i ].title ) {\n                        copy.accept[ i ].title = 'Files';\n                    }\n                }\n    \n                delete copy.button;\n                delete copy.id;\n                delete copy.container;\n    \n                this.flashExec( 'FilePicker', 'init', copy );\n            },\n    \n            destroy: function() {\n                this.flashExec( 'FilePicker', 'destroy' );\n            }\n        });\n    });\n    /**\n     * @fileOverview  Transport flash实现\n     */\n    define('runtime/flash/transport',[\n        'base',\n        'runtime/flash/runtime',\n        'runtime/client'\n    ], function( Base, FlashRuntime, RuntimeClient ) {\n        var $ = Base.$;\n    \n        return FlashRuntime.register( 'Transport', {\n            init: function() {\n                this._status = 0;\n                this._response = null;\n                this._responseJson = null;\n            },\n    \n            send: function() {\n                var owner = this.owner,\n                    opts = this.options,\n                    xhr = this._initAjax(),\n                    blob = owner._blob,\n                    server = opts.server,\n                    binary;\n    \n                xhr.connectRuntime( blob.ruid );\n    \n                if ( opts.sendAsBinary ) {\n                    server += (/\\?/.test( server ) ? '&' : '?') +\n                            $.param( owner._formData );\n    \n                    binary = blob.uid;\n                } else {\n                    $.each( owner._formData, function( k, v ) {\n                        xhr.exec( 'append', k, v );\n                    });\n    \n                    xhr.exec( 'appendBlob', opts.fileVal, blob.uid,\n                            opts.filename || owner._formData.name || '' );\n                }\n    \n                this._setRequestHeader( xhr, opts.headers );\n                xhr.exec( 'send', {\n                    method: opts.method,\n                    url: server,\n                    forceURLStream: opts.forceURLStream,\n                    mimeType: 'application/octet-stream'\n                }, binary );\n            },\n    \n            getStatus: function() {\n                return this._status;\n            },\n    \n            getResponse: function() {\n                return this._response || '';\n            },\n    \n            getResponseAsJson: function() {\n                return this._responseJson;\n            },\n    \n            abort: function() {\n                var xhr = this._xhr;\n    \n                if ( xhr ) {\n                    xhr.exec('abort');\n                    xhr.destroy();\n                    this._xhr = xhr = null;\n                }\n            },\n    \n            destroy: function() {\n                this.abort();\n            },\n    \n            _initAjax: function() {\n                var me = this,\n                    xhr = new RuntimeClient('XMLHttpRequest');\n    \n                xhr.on( 'uploadprogress progress', function( e ) {\n                    var percent = e.loaded / e.total;\n                    percent = Math.min( 1, Math.max( 0, percent ) );\n                    return me.trigger( 'progress', percent );\n                });\n    \n                xhr.on( 'load', function() {\n                    var status = xhr.exec('getStatus'),\n                        readBody = false,\n                        err = '',\n                        p;\n    \n                    xhr.off();\n                    me._xhr = null;\n    \n                    if ( status >= 200 && status < 300 ) {\n                        readBody = true;\n                    } else if ( status >= 500 && status < 600 ) {\n                        readBody = true;\n                        err = 'server';\n                    } else {\n                        err = 'http';\n                    }\n    \n                    if ( readBody ) {\n                        me._response = xhr.exec('getResponse');\n                        me._response = decodeURIComponent( me._response );\n    \n                        // flash 处理可能存在 bug, 没辙只能靠 js 了\n                        // try {\n                        //     me._responseJson = xhr.exec('getResponseAsJson');\n                        // } catch ( error ) {\n                            \n                        p = window.JSON && window.JSON.parse || function( s ) {\n                            try {\n                                return new Function('return ' + s).call();\n                            } catch ( err ) {\n                                return {};\n                            }\n                        };\n                        me._responseJson  = me._response ? p(me._response) : {};\n                            \n                        // }\n                    }\n                    \n                    xhr.destroy();\n                    xhr = null;\n    \n                    return err ? me.trigger( 'error', err ) : me.trigger('load');\n                });\n    \n                xhr.on( 'error', function() {\n                    xhr.off();\n                    me._xhr = null;\n                    me.trigger( 'error', 'http' );\n                });\n    \n                me._xhr = xhr;\n                return xhr;\n            },\n    \n            _setRequestHeader: function( xhr, headers ) {\n                $.each( headers, function( key, val ) {\n                    xhr.exec( 'setRequestHeader', key, val );\n                });\n            }\n        });\n    });\n    /**\n     * @fileOverview 没有图像处理的版本。\n     */\n    define('preset/withoutimage',[\n        'base',\n    \n        // widgets\n        'widgets/filednd',\n        'widgets/filepaste',\n        'widgets/filepicker',\n        'widgets/queue',\n        'widgets/runtime',\n        'widgets/upload',\n        'widgets/validator',\n    \n        // runtimes\n        // html5\n        'runtime/html5/blob',\n        'runtime/html5/dnd',\n        'runtime/html5/filepaste',\n        'runtime/html5/filepicker',\n        'runtime/html5/transport',\n    \n        // flash\n        'runtime/flash/filepicker',\n        'runtime/flash/transport'\n    ], function( Base ) {\n        return Base;\n    });\n    define('webuploader',[\n        'preset/withoutimage'\n    ], function( preset ) {\n        return preset;\n    });\n    return require('webuploader');\n});\n"
  },
  {
    "path": "public/vendor/dcat-admin/fonts/feather/iconfont.css",
    "content": "\n@font-face {\n  font-family: \"feather\";\n  src: url('fonts/feather.eot?t=1525787366991'); /* IE9*/\n  src: url('fonts/feather.eot?t=1525787366991#iefix') format('embedded-opentype'), /* IE6-IE8 */\n  url('fonts/feather.woff?t=1525787366991') format('woff'), /* chrome, firefox */\n  url('fonts/feather.ttf?t=1525787366991') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/\n  url('fonts/feather.svg?t=1525787366991#feather') format('svg'); /* iOS 4.1- */\n}\n\n.feather {\n  /* use !important to prevent issues with browser extensions that change fonts */\n  font-family: 'feather' !important;\n  speak: none;\n  font-style: normal;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  line-height: 1;\n\n  /* Better Font Rendering =========== */\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.icon-alert-octagon:before { content: \"\\e81b\"; }\n\n.icon-alert-circle:before { content: \"\\e81c\"; }\n\n.icon-activity:before { content: \"\\e81d\"; }\n\n.icon-alert-triangle:before { content: \"\\e81e\"; }\n\n.icon-align-center:before { content: \"\\e81f\"; }\n\n.icon-airplay:before { content: \"\\e820\"; }\n\n.icon-align-justify:before { content: \"\\e821\"; }\n\n.icon-align-left:before { content: \"\\e822\"; }\n\n.icon-align-right:before { content: \"\\e823\"; }\n\n.icon-arrow-down-left:before { content: \"\\e824\"; }\n\n.icon-arrow-down-right:before { content: \"\\e825\"; }\n\n.icon-anchor:before { content: \"\\e826\"; }\n\n.icon-aperture:before { content: \"\\e827\"; }\n\n.icon-arrow-left:before { content: \"\\e828\"; }\n\n.icon-arrow-right:before { content: \"\\e829\"; }\n\n.icon-arrow-down:before { content: \"\\e82a\"; }\n\n.icon-arrow-up-left:before { content: \"\\e82b\"; }\n\n.icon-arrow-up-right:before { content: \"\\e82c\"; }\n\n.icon-arrow-up:before { content: \"\\e82d\"; }\n\n.icon-award:before { content: \"\\e82e\"; }\n\n.icon-bar-chart:before { content: \"\\e82f\"; }\n\n.icon-at-sign:before { content: \"\\e830\"; }\n\n.icon-bar-chart-2:before { content: \"\\e831\"; }\n\n.icon-battery-charging:before { content: \"\\e832\"; }\n\n.icon-bell-off:before { content: \"\\e833\"; }\n\n.icon-battery:before { content: \"\\e834\"; }\n\n.icon-bluetooth:before { content: \"\\e835\"; }\n\n.icon-bell:before { content: \"\\e836\"; }\n\n.icon-book:before { content: \"\\e837\"; }\n\n.icon-briefcase:before { content: \"\\e838\"; }\n\n.icon-camera-off:before { content: \"\\e839\"; }\n\n.icon-calendar:before { content: \"\\e83a\"; }\n\n.icon-bookmark:before { content: \"\\e83b\"; }\n\n.icon-box:before { content: \"\\e83c\"; }\n\n.icon-camera:before { content: \"\\e83d\"; }\n\n.icon-check-circle:before { content: \"\\e83e\"; }\n\n.icon-check:before { content: \"\\e83f\"; }\n\n.icon-check-square:before { content: \"\\e840\"; }\n\n.icon-cast:before { content: \"\\e841\"; }\n\n.icon-chevron-down:before { content: \"\\e842\"; }\n\n.icon-chevron-left:before { content: \"\\e843\"; }\n\n.icon-chevron-right:before { content: \"\\e844\"; }\n\n.icon-chevron-up:before { content: \"\\e845\"; }\n\n.icon-chevrons-down:before { content: \"\\e846\"; }\n\n.icon-chevrons-right:before { content: \"\\e847\"; }\n\n.icon-chevrons-up:before { content: \"\\e848\"; }\n\n.icon-chevrons-left:before { content: \"\\e849\"; }\n\n.icon-circle:before { content: \"\\e84a\"; }\n\n.icon-clipboard:before { content: \"\\e84b\"; }\n\n.icon-chrome:before { content: \"\\e84c\"; }\n\n.icon-clock:before { content: \"\\e84d\"; }\n\n.icon-cloud-lightning:before { content: \"\\e84e\"; }\n\n.icon-cloud-drizzle:before { content: \"\\e84f\"; }\n\n.icon-cloud-rain:before { content: \"\\e850\"; }\n\n.icon-cloud-off:before { content: \"\\e851\"; }\n\n.icon-codepen:before { content: \"\\e852\"; }\n\n.icon-cloud-snow:before { content: \"\\e853\"; }\n\n.icon-compass:before { content: \"\\e854\"; }\n\n.icon-copy:before { content: \"\\e855\"; }\n\n.icon-corner-down-right:before { content: \"\\e856\"; }\n\n.icon-corner-down-left:before { content: \"\\e857\"; }\n\n.icon-corner-left-down:before { content: \"\\e858\"; }\n\n.icon-corner-left-up:before { content: \"\\e859\"; }\n\n.icon-corner-up-left:before { content: \"\\e85a\"; }\n\n.icon-corner-up-right:before { content: \"\\e85b\"; }\n\n.icon-corner-right-down:before { content: \"\\e85c\"; }\n\n.icon-corner-right-up:before { content: \"\\e85d\"; }\n\n.icon-cpu:before { content: \"\\e85e\"; }\n\n.icon-credit-card:before { content: \"\\e85f\"; }\n\n.icon-crosshair:before { content: \"\\e860\"; }\n\n.icon-disc:before { content: \"\\e861\"; }\n\n.icon-delete:before { content: \"\\e862\"; }\n\n.icon-download-cloud:before { content: \"\\e863\"; }\n\n.icon-download:before { content: \"\\e864\"; }\n\n.icon-droplet:before { content: \"\\e865\"; }\n\n.icon-edit-2:before { content: \"\\e866\"; }\n\n.icon-edit:before { content: \"\\e867\"; }\n\n.icon-edit-1:before { content: \"\\e868\"; }\n\n.icon-external-link:before { content: \"\\e869\"; }\n\n.icon-eye:before { content: \"\\e86a\"; }\n\n.icon-feather:before { content: \"\\e86b\"; }\n\n.icon-facebook:before { content: \"\\e86c\"; }\n\n.icon-file-minus:before { content: \"\\e86d\"; }\n\n.icon-eye-off:before { content: \"\\e86e\"; }\n\n.icon-fast-forward:before { content: \"\\e86f\"; }\n\n.icon-file-text:before { content: \"\\e870\"; }\n\n.icon-film:before { content: \"\\e871\"; }\n\n.icon-file:before { content: \"\\e872\"; }\n\n.icon-file-plus:before { content: \"\\e873\"; }\n\n.icon-folder:before { content: \"\\e874\"; }\n\n.icon-filter:before { content: \"\\e875\"; }\n\n.icon-flag:before { content: \"\\e876\"; }\n\n.icon-globe:before { content: \"\\e877\"; }\n\n.icon-grid:before { content: \"\\e878\"; }\n\n.icon-heart:before { content: \"\\e879\"; }\n\n.icon-home:before { content: \"\\e87a\"; }\n\n.icon-github:before { content: \"\\e87b\"; }\n\n.icon-image:before { content: \"\\e87c\"; }\n\n.icon-inbox:before { content: \"\\e87d\"; }\n\n.icon-layers:before { content: \"\\e87e\"; }\n\n.icon-info:before { content: \"\\e87f\"; }\n\n.icon-instagram:before { content: \"\\e880\"; }\n\n.icon-layout:before { content: \"\\e881\"; }\n\n.icon-link-2:before { content: \"\\e882\"; }\n\n.icon-life-buoy:before { content: \"\\e883\"; }\n\n.icon-link:before { content: \"\\e884\"; }\n\n.icon-log-in:before { content: \"\\e885\"; }\n\n.icon-list:before { content: \"\\e886\"; }\n\n.icon-lock:before { content: \"\\e887\"; }\n\n.icon-log-out:before { content: \"\\e888\"; }\n\n.icon-loader:before { content: \"\\e889\"; }\n\n.icon-mail:before { content: \"\\e88a\"; }\n\n.icon-maximize-2:before { content: \"\\e88b\"; }\n\n.icon-map:before { content: \"\\e88c\"; }\n\n.icon-map-pin:before { content: \"\\e88e\"; }\n\n.icon-menu:before { content: \"\\e88f\"; }\n\n.icon-message-circle:before { content: \"\\e890\"; }\n\n.icon-message-square:before { content: \"\\e891\"; }\n\n.icon-minimize-2:before { content: \"\\e892\"; }\n\n.icon-mic-off:before { content: \"\\e893\"; }\n\n.icon-minus-circle:before { content: \"\\e894\"; }\n\n.icon-mic:before { content: \"\\e895\"; }\n\n.icon-minus-square:before { content: \"\\e896\"; }\n\n.icon-minus:before { content: \"\\e897\"; }\n\n.icon-moon:before { content: \"\\e898\"; }\n\n.icon-monitor:before { content: \"\\e899\"; }\n\n.icon-more-vertical:before { content: \"\\e89a\"; }\n\n.icon-more-horizontal:before { content: \"\\e89b\"; }\n\n.icon-move:before { content: \"\\e89c\"; }\n\n.icon-music:before { content: \"\\e89d\"; }\n\n.icon-navigation-2:before { content: \"\\e89e\"; }\n\n.icon-navigation:before { content: \"\\e89f\"; }\n\n.icon-octagon:before { content: \"\\e8a0\"; }\n\n.icon-package:before { content: \"\\e8a1\"; }\n\n.icon-pause-circle:before { content: \"\\e8a2\"; }\n\n.icon-pause:before { content: \"\\e8a3\"; }\n\n.icon-percent:before { content: \"\\e8a4\"; }\n\n.icon-phone-call:before { content: \"\\e8a5\"; }\n\n.icon-phone-forwarded:before { content: \"\\e8a6\"; }\n\n.icon-phone-missed:before { content: \"\\e8a7\"; }\n\n.icon-phone-off:before { content: \"\\e8a8\"; }\n\n.icon-phone-incoming:before { content: \"\\e8a9\"; }\n\n.icon-phone:before { content: \"\\e8aa\"; }\n\n.icon-phone-outgoing:before { content: \"\\e8ab\"; }\n\n.icon-pie-chart:before { content: \"\\e8ac\"; }\n\n.icon-play-circle:before { content: \"\\e8ad\"; }\n\n.icon-play:before { content: \"\\e8ae\"; }\n\n.icon-plus-square:before { content: \"\\e8af\"; }\n\n.icon-plus-circle:before { content: \"\\e8b0\"; }\n\n.icon-plus:before { content: \"\\e8b1\"; }\n\n.icon-pocket:before { content: \"\\e8b2\"; }\n\n.icon-printer:before { content: \"\\e8b3\"; }\n\n.icon-power:before { content: \"\\e8b4\"; }\n\n.icon-radio:before { content: \"\\e8b5\"; }\n\n.icon-repeat:before { content: \"\\e8b6\"; }\n\n.icon-refresh-ccw:before { content: \"\\e8b7\"; }\n\n.icon-rewind:before { content: \"\\e8b8\"; }\n\n.icon-rotate-ccw:before { content: \"\\e8b9\"; }\n\n.icon-refresh-cw:before { content: \"\\e8ba\"; }\n\n.icon-rotate-cw:before { content: \"\\e8bb\"; }\n\n.icon-save:before { content: \"\\e8bc\"; }\n\n.icon-search:before { content: \"\\e8bd\"; }\n\n.icon-server:before { content: \"\\e8be\"; }\n\n.icon-scissors:before { content: \"\\e8bf\"; }\n\n.icon-share-2:before { content: \"\\e8c0\"; }\n\n.icon-share:before { content: \"\\e8c1\"; }\n\n.icon-shield:before { content: \"\\e8c2\"; }\n\n.icon-settings:before { content: \"\\e8c3\"; }\n\n.icon-skip-back:before { content: \"\\e8c4\"; }\n\n.icon-shuffle:before { content: \"\\e8c5\"; }\n\n.icon-sidebar:before { content: \"\\e8c6\"; }\n\n.icon-skip-forward:before { content: \"\\e8c7\"; }\n\n.icon-slack:before { content: \"\\e8c8\"; }\n\n.icon-slash:before { content: \"\\e8c9\"; }\n\n.icon-smartphone:before { content: \"\\e8ca\"; }\n\n.icon-square:before { content: \"\\e8cb\"; }\n\n.icon-speaker:before { content: \"\\e8cc\"; }\n\n.icon-star:before { content: \"\\e8cd\"; }\n\n.icon-stop-circle:before { content: \"\\e8ce\"; }\n\n.icon-sun:before { content: \"\\e8cf\"; }\n\n.icon-sunrise:before { content: \"\\e8d0\"; }\n\n.icon-tablet:before { content: \"\\e8d1\"; }\n\n.icon-tag:before { content: \"\\e8d2\"; }\n\n.icon-sunset:before { content: \"\\e8d3\"; }\n\n.icon-target:before { content: \"\\e8d4\"; }\n\n.icon-thermometer:before { content: \"\\e8d5\"; }\n\n.icon-thumbs-up:before { content: \"\\e8d6\"; }\n\n.icon-thumbs-down:before { content: \"\\e8d7\"; }\n\n.icon-toggle-left:before { content: \"\\e8d8\"; }\n\n.icon-toggle-right:before { content: \"\\e8d9\"; }\n\n.icon-trash-2:before { content: \"\\e8da\"; }\n\n.icon-trash:before { content: \"\\e8db\"; }\n\n.icon-trending-up:before { content: \"\\e8dc\"; }\n\n.icon-trending-down:before { content: \"\\e8dd\"; }\n\n.icon-triangle:before { content: \"\\e8de\"; }\n\n.icon-type:before { content: \"\\e8df\"; }\n\n.icon-twitter:before { content: \"\\e8e0\"; }\n\n.icon-upload:before { content: \"\\e8e1\"; }\n\n.icon-umbrella:before { content: \"\\e8e2\"; }\n\n.icon-upload-cloud:before { content: \"\\e8e3\"; }\n\n.icon-unlock:before { content: \"\\e8e4\"; }\n\n.icon-user-check:before { content: \"\\e8e5\"; }\n\n.icon-user-minus:before { content: \"\\e8e6\"; }\n\n.icon-user-plus:before { content: \"\\e8e7\"; }\n\n.icon-user-x:before { content: \"\\e8e8\"; }\n\n.icon-user:before { content: \"\\e8e9\"; }\n\n.icon-users:before { content: \"\\e8ea\"; }\n\n.icon-video-off:before { content: \"\\e8eb\"; }\n\n.icon-video:before { content: \"\\e8ec\"; }\n\n.icon-voicemail:before { content: \"\\e8ed\"; }\n\n.icon-volume-x:before { content: \"\\e8ee\"; }\n\n.icon-volume-2:before { content: \"\\e8ef\"; }\n\n.icon-volume-1:before { content: \"\\e8f0\"; }\n\n.icon-volume:before { content: \"\\e8f1\"; }\n\n.icon-watch:before { content: \"\\e8f2\"; }\n\n.icon-wifi:before { content: \"\\e8f3\"; }\n\n.icon-x-square:before { content: \"\\e8f4\"; }\n\n.icon-wind:before { content: \"\\e8f5\"; }\n\n.icon-x:before { content: \"\\e8f6\"; }\n\n.icon-x-circle:before { content: \"\\e8f7\"; }\n\n.icon-zap:before { content: \"\\e8f8\"; }\n\n.icon-zoom-in:before { content: \"\\e8f9\"; }\n\n.icon-zoom-out:before { content: \"\\e8fa\"; }\n\n.icon-command:before { content: \"\\e8fb\"; }\n\n.icon-cloud:before { content: \"\\e8fc\"; }\n\n.icon-hash:before { content: \"\\e8fd\"; }\n\n.icon-headphones:before { content: \"\\e8fe\"; }\n\n.icon-underline:before { content: \"\\e8ff\"; }\n\n.icon-italic:before { content: \"\\e900\"; }\n\n.icon-bold:before { content: \"\\e901\"; }\n\n.icon-crop:before { content: \"\\e902\"; }\n\n.icon-help-circle:before { content: \"\\e903\"; }\n\n.icon-paperclip:before { content: \"\\e904\"; }\n\n.icon-shopping-cart:before { content: \"\\e905\"; }\n\n.icon-tv:before { content: \"\\e906\"; }\n\n.icon-wifi-off:before { content: \"\\e907\"; }\n\n.icon-minimize:before { content: \"\\e88d\"; }\n\n.icon-maximize:before { content: \"\\e908\"; }\n\n.icon-gitlab:before { content: \"\\e909\"; }\n\n.icon-sliders:before { content: \"\\e90a\"; }\n\n.icon-star-on:before { content: \"\\e90b\"; }\n\n.icon-heart-on:before { content: \"\\e90c\"; }\n\n.icon-archive:before { content: \"\\e90d\"; }\n\n.icon-arrow-down-circle:before { content: \"\\e90e\"; }\n\n.icon-arrow-up-circle:before { content: \"\\e90f\"; }\n\n.icon-arrow-left-circle:before { content: \"\\e910\"; }\n\n.icon-arrow-right-circle:before { content: \"\\e911\"; }\n\n.icon-bar-chart-line-:before { content: \"\\e912\"; }\n\n.icon-bar-chart-line:before { content: \"\\e913\"; }\n\n.icon-book-open:before { content: \"\\e914\"; }\n\n.icon-code:before { content: \"\\e915\"; }\n\n.icon-database:before { content: \"\\e916\"; }\n\n.icon-dollar-sign:before { content: \"\\e917\"; }\n\n.icon-folder-plus:before { content: \"\\e918\"; }\n\n.icon-gift:before { content: \"\\e919\"; }\n\n.icon-folder-minus:before { content: \"\\e91a\"; }\n\n.icon-git-commit:before { content: \"\\e91b\"; }\n\n.icon-git-branch:before { content: \"\\e91c\"; }\n\n.icon-git-pull-request:before { content: \"\\e91d\"; }\n\n.icon-git-merge:before { content: \"\\e91e\"; }\n\n.icon-linkedin:before { content: \"\\e91f\"; }\n\n.icon-hard-drive:before { content: \"\\e920\"; }\n\n.icon-more-vertical-:before { content: \"\\e921\"; }\n\n.icon-more-horizontal-:before { content: \"\\e922\"; }\n\n.icon-rss:before { content: \"\\e923\"; }\n\n.icon-send:before { content: \"\\e924\"; }\n\n.icon-shield-off:before { content: \"\\e925\"; }\n\n.icon-shopping-bag:before { content: \"\\e926\"; }\n\n.icon-terminal:before { content: \"\\e927\"; }\n\n.icon-truck:before { content: \"\\e928\"; }\n\n.icon-zap-off:before { content: \"\\e929\"; }\n\n.icon-youtube:before { content: \"\\e92a\"; }\n"
  },
  {
    "path": "public/vendor/dcat-admin/fonts/font-awesome/css/font-awesome.css",
    "content": "/*!\n *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */\n/* FONT PATH\n * -------------------------- */\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');\n  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');\n  font-weight: normal;\n  font-style: normal;\n}\n.fa {\n  display: inline-block;\n  font: normal normal normal 14px/1 FontAwesome;\n  font-size: inherit;\n  text-rendering: auto;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n/* makes the font 33% larger relative to the icon container */\n.fa-lg {\n  font-size: 1.33333333em;\n  line-height: 0.75em;\n  vertical-align: -15%;\n}\n.fa-2x {\n  font-size: 2em;\n}\n.fa-3x {\n  font-size: 3em;\n}\n.fa-4x {\n  font-size: 4em;\n}\n.fa-5x {\n  font-size: 5em;\n}\n.fa-fw {\n  width: 1.28571429em;\n  text-align: center;\n}\n.fa-ul {\n  padding-left: 0;\n  margin-left: 2.14285714em;\n  list-style-type: none;\n}\n.fa-ul > li {\n  position: relative;\n}\n.fa-li {\n  position: absolute;\n  left: -2.14285714em;\n  width: 2.14285714em;\n  top: 0.14285714em;\n  text-align: center;\n}\n.fa-li.fa-lg {\n  left: -1.85714286em;\n}\n.fa-border {\n  padding: .2em .25em .15em;\n  border: solid 0.08em #eeeeee;\n  border-radius: .1em;\n}\n.fa-pull-left {\n  float: left;\n}\n.fa-pull-right {\n  float: right;\n}\n.fa.fa-pull-left {\n  margin-right: .3em;\n}\n.fa.fa-pull-right {\n  margin-left: .3em;\n}\n/* Deprecated as of 4.4.0 */\n.pull-right {\n  float: right;\n}\n.pull-left {\n  float: left;\n}\n.fa.pull-left {\n  margin-right: .3em;\n}\n.fa.pull-right {\n  margin-left: .3em;\n}\n.fa-spin {\n  -webkit-animation: fa-spin 2s infinite linear;\n  animation: fa-spin 2s infinite linear;\n}\n.fa-pulse {\n  -webkit-animation: fa-spin 1s infinite steps(8);\n  animation: fa-spin 1s infinite steps(8);\n}\n@-webkit-keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n    transform: rotate(359deg);\n  }\n}\n@keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n    transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n    transform: rotate(359deg);\n  }\n}\n.fa-rotate-90 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n  -webkit-transform: rotate(90deg);\n  -ms-transform: rotate(90deg);\n  transform: rotate(90deg);\n}\n.fa-rotate-180 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n  -webkit-transform: rotate(180deg);\n  -ms-transform: rotate(180deg);\n  transform: rotate(180deg);\n}\n.fa-rotate-270 {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n  -webkit-transform: rotate(270deg);\n  -ms-transform: rotate(270deg);\n  transform: rotate(270deg);\n}\n.fa-flip-horizontal {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n  -webkit-transform: scale(-1, 1);\n  -ms-transform: scale(-1, 1);\n  transform: scale(-1, 1);\n}\n.fa-flip-vertical {\n  -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n  -webkit-transform: scale(1, -1);\n  -ms-transform: scale(1, -1);\n  transform: scale(1, -1);\n}\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n  filter: none;\n}\n.fa-stack {\n  position: relative;\n  display: inline-block;\n  width: 2em;\n  height: 2em;\n  line-height: 2em;\n  vertical-align: middle;\n}\n.fa-stack-1x,\n.fa-stack-2x {\n  position: absolute;\n  left: 0;\n  width: 100%;\n  text-align: center;\n}\n.fa-stack-1x {\n  line-height: inherit;\n}\n.fa-stack-2x {\n  font-size: 2em;\n}\n.fa-inverse {\n  color: #ffffff;\n}\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n.fa-glass:before {\n  content: \"\\f000\";\n}\n.fa-music:before {\n  content: \"\\f001\";\n}\n.fa-search:before {\n  content: \"\\f002\";\n}\n.fa-envelope-o:before {\n  content: \"\\f003\";\n}\n.fa-heart:before {\n  content: \"\\f004\";\n}\n.fa-star:before {\n  content: \"\\f005\";\n}\n.fa-star-o:before {\n  content: \"\\f006\";\n}\n.fa-user:before {\n  content: \"\\f007\";\n}\n.fa-film:before {\n  content: \"\\f008\";\n}\n.fa-th-large:before {\n  content: \"\\f009\";\n}\n.fa-th:before {\n  content: \"\\f00a\";\n}\n.fa-th-list:before {\n  content: \"\\f00b\";\n}\n.fa-check:before {\n  content: \"\\f00c\";\n}\n.fa-remove:before,\n.fa-close:before,\n.fa-times:before {\n  content: \"\\f00d\";\n}\n.fa-search-plus:before {\n  content: \"\\f00e\";\n}\n.fa-search-minus:before {\n  content: \"\\f010\";\n}\n.fa-power-off:before {\n  content: \"\\f011\";\n}\n.fa-signal:before {\n  content: \"\\f012\";\n}\n.fa-gear:before,\n.fa-cog:before {\n  content: \"\\f013\";\n}\n.fa-trash-o:before {\n  content: \"\\f014\";\n}\n.fa-home:before {\n  content: \"\\f015\";\n}\n.fa-file-o:before {\n  content: \"\\f016\";\n}\n.fa-clock-o:before {\n  content: \"\\f017\";\n}\n.fa-road:before {\n  content: \"\\f018\";\n}\n.fa-download:before {\n  content: \"\\f019\";\n}\n.fa-arrow-circle-o-down:before {\n  content: \"\\f01a\";\n}\n.fa-arrow-circle-o-up:before {\n  content: \"\\f01b\";\n}\n.fa-inbox:before {\n  content: \"\\f01c\";\n}\n.fa-play-circle-o:before {\n  content: \"\\f01d\";\n}\n.fa-rotate-right:before,\n.fa-repeat:before {\n  content: \"\\f01e\";\n}\n.fa-refresh:before {\n  content: \"\\f021\";\n}\n.fa-list-alt:before {\n  content: \"\\f022\";\n}\n.fa-lock:before {\n  content: \"\\f023\";\n}\n.fa-flag:before {\n  content: \"\\f024\";\n}\n.fa-headphones:before {\n  content: \"\\f025\";\n}\n.fa-volume-off:before {\n  content: \"\\f026\";\n}\n.fa-volume-down:before {\n  content: \"\\f027\";\n}\n.fa-volume-up:before {\n  content: \"\\f028\";\n}\n.fa-qrcode:before {\n  content: \"\\f029\";\n}\n.fa-barcode:before {\n  content: \"\\f02a\";\n}\n.fa-tag:before {\n  content: \"\\f02b\";\n}\n.fa-tags:before {\n  content: \"\\f02c\";\n}\n.fa-book:before {\n  content: \"\\f02d\";\n}\n.fa-bookmark:before {\n  content: \"\\f02e\";\n}\n.fa-print:before {\n  content: \"\\f02f\";\n}\n.fa-camera:before {\n  content: \"\\f030\";\n}\n.fa-font:before {\n  content: \"\\f031\";\n}\n.fa-bold:before {\n  content: \"\\f032\";\n}\n.fa-italic:before {\n  content: \"\\f033\";\n}\n.fa-text-height:before {\n  content: \"\\f034\";\n}\n.fa-text-width:before {\n  content: \"\\f035\";\n}\n.fa-align-left:before {\n  content: \"\\f036\";\n}\n.fa-align-center:before {\n  content: \"\\f037\";\n}\n.fa-align-right:before {\n  content: \"\\f038\";\n}\n.fa-align-justify:before {\n  content: \"\\f039\";\n}\n.fa-list:before {\n  content: \"\\f03a\";\n}\n.fa-dedent:before,\n.fa-outdent:before {\n  content: \"\\f03b\";\n}\n.fa-indent:before {\n  content: \"\\f03c\";\n}\n.fa-video-camera:before {\n  content: \"\\f03d\";\n}\n.fa-photo:before,\n.fa-image:before,\n.fa-picture-o:before {\n  content: \"\\f03e\";\n}\n.fa-pencil:before {\n  content: \"\\f040\";\n}\n.fa-map-marker:before {\n  content: \"\\f041\";\n}\n.fa-adjust:before {\n  content: \"\\f042\";\n}\n.fa-tint:before {\n  content: \"\\f043\";\n}\n.fa-edit:before,\n.fa-pencil-square-o:before {\n  content: \"\\f044\";\n}\n.fa-share-square-o:before {\n  content: \"\\f045\";\n}\n.fa-check-square-o:before {\n  content: \"\\f046\";\n}\n.fa-arrows:before {\n  content: \"\\f047\";\n}\n.fa-step-backward:before {\n  content: \"\\f048\";\n}\n.fa-fast-backward:before {\n  content: \"\\f049\";\n}\n.fa-backward:before {\n  content: \"\\f04a\";\n}\n.fa-play:before {\n  content: \"\\f04b\";\n}\n.fa-pause:before {\n  content: \"\\f04c\";\n}\n.fa-stop:before {\n  content: \"\\f04d\";\n}\n.fa-forward:before {\n  content: \"\\f04e\";\n}\n.fa-fast-forward:before {\n  content: \"\\f050\";\n}\n.fa-step-forward:before {\n  content: \"\\f051\";\n}\n.fa-eject:before {\n  content: \"\\f052\";\n}\n.fa-chevron-left:before {\n  content: \"\\f053\";\n}\n.fa-chevron-right:before {\n  content: \"\\f054\";\n}\n.fa-plus-circle:before {\n  content: \"\\f055\";\n}\n.fa-minus-circle:before {\n  content: \"\\f056\";\n}\n.fa-times-circle:before {\n  content: \"\\f057\";\n}\n.fa-check-circle:before {\n  content: \"\\f058\";\n}\n.fa-question-circle:before {\n  content: \"\\f059\";\n}\n.fa-info-circle:before {\n  content: \"\\f05a\";\n}\n.fa-crosshairs:before {\n  content: \"\\f05b\";\n}\n.fa-times-circle-o:before {\n  content: \"\\f05c\";\n}\n.fa-check-circle-o:before {\n  content: \"\\f05d\";\n}\n.fa-ban:before {\n  content: \"\\f05e\";\n}\n.fa-arrow-left:before {\n  content: \"\\f060\";\n}\n.fa-arrow-right:before {\n  content: \"\\f061\";\n}\n.fa-arrow-up:before {\n  content: \"\\f062\";\n}\n.fa-arrow-down:before {\n  content: \"\\f063\";\n}\n.fa-mail-forward:before,\n.fa-share:before {\n  content: \"\\f064\";\n}\n.fa-expand:before {\n  content: \"\\f065\";\n}\n.fa-compress:before {\n  content: \"\\f066\";\n}\n.fa-plus:before {\n  content: \"\\f067\";\n}\n.fa-minus:before {\n  content: \"\\f068\";\n}\n.fa-asterisk:before {\n  content: \"\\f069\";\n}\n.fa-exclamation-circle:before {\n  content: \"\\f06a\";\n}\n.fa-gift:before {\n  content: \"\\f06b\";\n}\n.fa-leaf:before {\n  content: \"\\f06c\";\n}\n.fa-fire:before {\n  content: \"\\f06d\";\n}\n.fa-eye:before {\n  content: \"\\f06e\";\n}\n.fa-eye-slash:before {\n  content: \"\\f070\";\n}\n.fa-warning:before,\n.fa-exclamation-triangle:before {\n  content: \"\\f071\";\n}\n.fa-plane:before {\n  content: \"\\f072\";\n}\n.fa-calendar:before {\n  content: \"\\f073\";\n}\n.fa-random:before {\n  content: \"\\f074\";\n}\n.fa-comment:before {\n  content: \"\\f075\";\n}\n.fa-magnet:before {\n  content: \"\\f076\";\n}\n.fa-chevron-up:before {\n  content: \"\\f077\";\n}\n.fa-chevron-down:before {\n  content: \"\\f078\";\n}\n.fa-retweet:before {\n  content: \"\\f079\";\n}\n.fa-shopping-cart:before {\n  content: \"\\f07a\";\n}\n.fa-folder:before {\n  content: \"\\f07b\";\n}\n.fa-folder-open:before {\n  content: \"\\f07c\";\n}\n.fa-arrows-v:before {\n  content: \"\\f07d\";\n}\n.fa-arrows-h:before {\n  content: \"\\f07e\";\n}\n.fa-bar-chart-o:before,\n.fa-bar-chart:before {\n  content: \"\\f080\";\n}\n.fa-twitter-square:before {\n  content: \"\\f081\";\n}\n.fa-facebook-square:before {\n  content: \"\\f082\";\n}\n.fa-camera-retro:before {\n  content: \"\\f083\";\n}\n.fa-key:before {\n  content: \"\\f084\";\n}\n.fa-gears:before,\n.fa-cogs:before {\n  content: \"\\f085\";\n}\n.fa-comments:before {\n  content: \"\\f086\";\n}\n.fa-thumbs-o-up:before {\n  content: \"\\f087\";\n}\n.fa-thumbs-o-down:before {\n  content: \"\\f088\";\n}\n.fa-star-half:before {\n  content: \"\\f089\";\n}\n.fa-heart-o:before {\n  content: \"\\f08a\";\n}\n.fa-sign-out:before {\n  content: \"\\f08b\";\n}\n.fa-linkedin-square:before {\n  content: \"\\f08c\";\n}\n.fa-thumb-tack:before {\n  content: \"\\f08d\";\n}\n.fa-external-link:before {\n  content: \"\\f08e\";\n}\n.fa-sign-in:before {\n  content: \"\\f090\";\n}\n.fa-trophy:before {\n  content: \"\\f091\";\n}\n.fa-github-square:before {\n  content: \"\\f092\";\n}\n.fa-upload:before {\n  content: \"\\f093\";\n}\n.fa-lemon-o:before {\n  content: \"\\f094\";\n}\n.fa-phone:before {\n  content: \"\\f095\";\n}\n.fa-square-o:before {\n  content: \"\\f096\";\n}\n.fa-bookmark-o:before {\n  content: \"\\f097\";\n}\n.fa-phone-square:before {\n  content: \"\\f098\";\n}\n.fa-twitter:before {\n  content: \"\\f099\";\n}\n.fa-facebook-f:before,\n.fa-facebook:before {\n  content: \"\\f09a\";\n}\n.fa-github:before {\n  content: \"\\f09b\";\n}\n.fa-unlock:before {\n  content: \"\\f09c\";\n}\n.fa-credit-card:before {\n  content: \"\\f09d\";\n}\n.fa-feed:before,\n.fa-rss:before {\n  content: \"\\f09e\";\n}\n.fa-hdd-o:before {\n  content: \"\\f0a0\";\n}\n.fa-bullhorn:before {\n  content: \"\\f0a1\";\n}\n.fa-bell:before {\n  content: \"\\f0f3\";\n}\n.fa-certificate:before {\n  content: \"\\f0a3\";\n}\n.fa-hand-o-right:before {\n  content: \"\\f0a4\";\n}\n.fa-hand-o-left:before {\n  content: \"\\f0a5\";\n}\n.fa-hand-o-up:before {\n  content: \"\\f0a6\";\n}\n.fa-hand-o-down:before {\n  content: \"\\f0a7\";\n}\n.fa-arrow-circle-left:before {\n  content: \"\\f0a8\";\n}\n.fa-arrow-circle-right:before {\n  content: \"\\f0a9\";\n}\n.fa-arrow-circle-up:before {\n  content: \"\\f0aa\";\n}\n.fa-arrow-circle-down:before {\n  content: \"\\f0ab\";\n}\n.fa-globe:before {\n  content: \"\\f0ac\";\n}\n.fa-wrench:before {\n  content: \"\\f0ad\";\n}\n.fa-tasks:before {\n  content: \"\\f0ae\";\n}\n.fa-filter:before {\n  content: \"\\f0b0\";\n}\n.fa-briefcase:before {\n  content: \"\\f0b1\";\n}\n.fa-arrows-alt:before {\n  content: \"\\f0b2\";\n}\n.fa-group:before,\n.fa-users:before {\n  content: \"\\f0c0\";\n}\n.fa-chain:before,\n.fa-link:before {\n  content: \"\\f0c1\";\n}\n.fa-cloud:before {\n  content: \"\\f0c2\";\n}\n.fa-flask:before {\n  content: \"\\f0c3\";\n}\n.fa-cut:before,\n.fa-scissors:before {\n  content: \"\\f0c4\";\n}\n.fa-copy:before,\n.fa-files-o:before {\n  content: \"\\f0c5\";\n}\n.fa-paperclip:before {\n  content: \"\\f0c6\";\n}\n.fa-save:before,\n.fa-floppy-o:before {\n  content: \"\\f0c7\";\n}\n.fa-square:before {\n  content: \"\\f0c8\";\n}\n.fa-navicon:before,\n.fa-reorder:before,\n.fa-bars:before {\n  content: \"\\f0c9\";\n}\n.fa-list-ul:before {\n  content: \"\\f0ca\";\n}\n.fa-list-ol:before {\n  content: \"\\f0cb\";\n}\n.fa-strikethrough:before {\n  content: \"\\f0cc\";\n}\n.fa-underline:before {\n  content: \"\\f0cd\";\n}\n.fa-table:before {\n  content: \"\\f0ce\";\n}\n.fa-magic:before {\n  content: \"\\f0d0\";\n}\n.fa-truck:before {\n  content: \"\\f0d1\";\n}\n.fa-pinterest:before {\n  content: \"\\f0d2\";\n}\n.fa-pinterest-square:before {\n  content: \"\\f0d3\";\n}\n.fa-google-plus-square:before {\n  content: \"\\f0d4\";\n}\n.fa-google-plus:before {\n  content: \"\\f0d5\";\n}\n.fa-money:before {\n  content: \"\\f0d6\";\n}\n.fa-caret-down:before {\n  content: \"\\f0d7\";\n}\n.fa-caret-up:before {\n  content: \"\\f0d8\";\n}\n.fa-caret-left:before {\n  content: \"\\f0d9\";\n}\n.fa-caret-right:before {\n  content: \"\\f0da\";\n}\n.fa-columns:before {\n  content: \"\\f0db\";\n}\n.fa-unsorted:before,\n.fa-sort:before {\n  content: \"\\f0dc\";\n}\n.fa-sort-down:before,\n.fa-sort-desc:before {\n  content: \"\\f0dd\";\n}\n.fa-sort-up:before,\n.fa-sort-asc:before {\n  content: \"\\f0de\";\n}\n.fa-envelope:before {\n  content: \"\\f0e0\";\n}\n.fa-linkedin:before {\n  content: \"\\f0e1\";\n}\n.fa-rotate-left:before,\n.fa-undo:before {\n  content: \"\\f0e2\";\n}\n.fa-legal:before,\n.fa-gavel:before {\n  content: \"\\f0e3\";\n}\n.fa-dashboard:before,\n.fa-tachometer:before {\n  content: \"\\f0e4\";\n}\n.fa-comment-o:before {\n  content: \"\\f0e5\";\n}\n.fa-comments-o:before {\n  content: \"\\f0e6\";\n}\n.fa-flash:before,\n.fa-bolt:before {\n  content: \"\\f0e7\";\n}\n.fa-sitemap:before {\n  content: \"\\f0e8\";\n}\n.fa-umbrella:before {\n  content: \"\\f0e9\";\n}\n.fa-paste:before,\n.fa-clipboard:before {\n  content: \"\\f0ea\";\n}\n.fa-lightbulb-o:before {\n  content: \"\\f0eb\";\n}\n.fa-exchange:before {\n  content: \"\\f0ec\";\n}\n.fa-cloud-download:before {\n  content: \"\\f0ed\";\n}\n.fa-cloud-upload:before {\n  content: \"\\f0ee\";\n}\n.fa-user-md:before {\n  content: \"\\f0f0\";\n}\n.fa-stethoscope:before {\n  content: \"\\f0f1\";\n}\n.fa-suitcase:before {\n  content: \"\\f0f2\";\n}\n.fa-bell-o:before {\n  content: \"\\f0a2\";\n}\n.fa-coffee:before {\n  content: \"\\f0f4\";\n}\n.fa-cutlery:before {\n  content: \"\\f0f5\";\n}\n.fa-file-text-o:before {\n  content: \"\\f0f6\";\n}\n.fa-building-o:before {\n  content: \"\\f0f7\";\n}\n.fa-hospital-o:before {\n  content: \"\\f0f8\";\n}\n.fa-ambulance:before {\n  content: \"\\f0f9\";\n}\n.fa-medkit:before {\n  content: \"\\f0fa\";\n}\n.fa-fighter-jet:before {\n  content: \"\\f0fb\";\n}\n.fa-beer:before {\n  content: \"\\f0fc\";\n}\n.fa-h-square:before {\n  content: \"\\f0fd\";\n}\n.fa-plus-square:before {\n  content: \"\\f0fe\";\n}\n.fa-angle-double-left:before {\n  content: \"\\f100\";\n}\n.fa-angle-double-right:before {\n  content: \"\\f101\";\n}\n.fa-angle-double-up:before {\n  content: \"\\f102\";\n}\n.fa-angle-double-down:before {\n  content: \"\\f103\";\n}\n.fa-angle-left:before {\n  content: \"\\f104\";\n}\n.fa-angle-right:before {\n  content: \"\\f105\";\n}\n.fa-angle-up:before {\n  content: \"\\f106\";\n}\n.fa-angle-down:before {\n  content: \"\\f107\";\n}\n.fa-desktop:before {\n  content: \"\\f108\";\n}\n.fa-laptop:before {\n  content: \"\\f109\";\n}\n.fa-tablet:before {\n  content: \"\\f10a\";\n}\n.fa-mobile-phone:before,\n.fa-mobile:before {\n  content: \"\\f10b\";\n}\n.fa-circle-o:before {\n  content: \"\\f10c\";\n}\n.fa-quote-left:before {\n  content: \"\\f10d\";\n}\n.fa-quote-right:before {\n  content: \"\\f10e\";\n}\n.fa-spinner:before {\n  content: \"\\f110\";\n}\n.fa-circle:before {\n  content: \"\\f111\";\n}\n.fa-mail-reply:before,\n.fa-reply:before {\n  content: \"\\f112\";\n}\n.fa-github-alt:before {\n  content: \"\\f113\";\n}\n.fa-folder-o:before {\n  content: \"\\f114\";\n}\n.fa-folder-open-o:before {\n  content: \"\\f115\";\n}\n.fa-smile-o:before {\n  content: \"\\f118\";\n}\n.fa-frown-o:before {\n  content: \"\\f119\";\n}\n.fa-meh-o:before {\n  content: \"\\f11a\";\n}\n.fa-gamepad:before {\n  content: \"\\f11b\";\n}\n.fa-keyboard-o:before {\n  content: \"\\f11c\";\n}\n.fa-flag-o:before {\n  content: \"\\f11d\";\n}\n.fa-flag-checkered:before {\n  content: \"\\f11e\";\n}\n.fa-terminal:before {\n  content: \"\\f120\";\n}\n.fa-code:before {\n  content: \"\\f121\";\n}\n.fa-mail-reply-all:before,\n.fa-reply-all:before {\n  content: \"\\f122\";\n}\n.fa-star-half-empty:before,\n.fa-star-half-full:before,\n.fa-star-half-o:before {\n  content: \"\\f123\";\n}\n.fa-location-arrow:before {\n  content: \"\\f124\";\n}\n.fa-crop:before {\n  content: \"\\f125\";\n}\n.fa-code-fork:before {\n  content: \"\\f126\";\n}\n.fa-unlink:before,\n.fa-chain-broken:before {\n  content: \"\\f127\";\n}\n.fa-question:before {\n  content: \"\\f128\";\n}\n.fa-info:before {\n  content: \"\\f129\";\n}\n.fa-exclamation:before {\n  content: \"\\f12a\";\n}\n.fa-superscript:before {\n  content: \"\\f12b\";\n}\n.fa-subscript:before {\n  content: \"\\f12c\";\n}\n.fa-eraser:before {\n  content: \"\\f12d\";\n}\n.fa-puzzle-piece:before {\n  content: \"\\f12e\";\n}\n.fa-microphone:before {\n  content: \"\\f130\";\n}\n.fa-microphone-slash:before {\n  content: \"\\f131\";\n}\n.fa-shield:before {\n  content: \"\\f132\";\n}\n.fa-calendar-o:before {\n  content: \"\\f133\";\n}\n.fa-fire-extinguisher:before {\n  content: \"\\f134\";\n}\n.fa-rocket:before {\n  content: \"\\f135\";\n}\n.fa-maxcdn:before {\n  content: \"\\f136\";\n}\n.fa-chevron-circle-left:before {\n  content: \"\\f137\";\n}\n.fa-chevron-circle-right:before {\n  content: \"\\f138\";\n}\n.fa-chevron-circle-up:before {\n  content: \"\\f139\";\n}\n.fa-chevron-circle-down:before {\n  content: \"\\f13a\";\n}\n.fa-html5:before {\n  content: \"\\f13b\";\n}\n.fa-css3:before {\n  content: \"\\f13c\";\n}\n.fa-anchor:before {\n  content: \"\\f13d\";\n}\n.fa-unlock-alt:before {\n  content: \"\\f13e\";\n}\n.fa-bullseye:before {\n  content: \"\\f140\";\n}\n.fa-ellipsis-h:before {\n  content: \"\\f141\";\n}\n.fa-ellipsis-v:before {\n  content: \"\\f142\";\n}\n.fa-rss-square:before {\n  content: \"\\f143\";\n}\n.fa-play-circle:before {\n  content: \"\\f144\";\n}\n.fa-ticket:before {\n  content: \"\\f145\";\n}\n.fa-minus-square:before {\n  content: \"\\f146\";\n}\n.fa-minus-square-o:before {\n  content: \"\\f147\";\n}\n.fa-level-up:before {\n  content: \"\\f148\";\n}\n.fa-level-down:before {\n  content: \"\\f149\";\n}\n.fa-check-square:before {\n  content: \"\\f14a\";\n}\n.fa-pencil-square:before {\n  content: \"\\f14b\";\n}\n.fa-external-link-square:before {\n  content: \"\\f14c\";\n}\n.fa-share-square:before {\n  content: \"\\f14d\";\n}\n.fa-compass:before {\n  content: \"\\f14e\";\n}\n.fa-toggle-down:before,\n.fa-caret-square-o-down:before {\n  content: \"\\f150\";\n}\n.fa-toggle-up:before,\n.fa-caret-square-o-up:before {\n  content: \"\\f151\";\n}\n.fa-toggle-right:before,\n.fa-caret-square-o-right:before {\n  content: \"\\f152\";\n}\n.fa-euro:before,\n.fa-eur:before {\n  content: \"\\f153\";\n}\n.fa-gbp:before {\n  content: \"\\f154\";\n}\n.fa-dollar:before,\n.fa-usd:before {\n  content: \"\\f155\";\n}\n.fa-rupee:before,\n.fa-inr:before {\n  content: \"\\f156\";\n}\n.fa-cny:before,\n.fa-rmb:before,\n.fa-yen:before,\n.fa-jpy:before {\n  content: \"\\f157\";\n}\n.fa-ruble:before,\n.fa-rouble:before,\n.fa-rub:before {\n  content: \"\\f158\";\n}\n.fa-won:before,\n.fa-krw:before {\n  content: \"\\f159\";\n}\n.fa-bitcoin:before,\n.fa-btc:before {\n  content: \"\\f15a\";\n}\n.fa-file:before {\n  content: \"\\f15b\";\n}\n.fa-file-text:before {\n  content: \"\\f15c\";\n}\n.fa-sort-alpha-asc:before {\n  content: \"\\f15d\";\n}\n.fa-sort-alpha-desc:before {\n  content: \"\\f15e\";\n}\n.fa-sort-amount-asc:before {\n  content: \"\\f160\";\n}\n.fa-sort-amount-desc:before {\n  content: \"\\f161\";\n}\n.fa-sort-numeric-asc:before {\n  content: \"\\f162\";\n}\n.fa-sort-numeric-desc:before {\n  content: \"\\f163\";\n}\n.fa-thumbs-up:before {\n  content: \"\\f164\";\n}\n.fa-thumbs-down:before {\n  content: \"\\f165\";\n}\n.fa-youtube-square:before {\n  content: \"\\f166\";\n}\n.fa-youtube:before {\n  content: \"\\f167\";\n}\n.fa-xing:before {\n  content: \"\\f168\";\n}\n.fa-xing-square:before {\n  content: \"\\f169\";\n}\n.fa-youtube-play:before {\n  content: \"\\f16a\";\n}\n.fa-dropbox:before {\n  content: \"\\f16b\";\n}\n.fa-stack-overflow:before {\n  content: \"\\f16c\";\n}\n.fa-instagram:before {\n  content: \"\\f16d\";\n}\n.fa-flickr:before {\n  content: \"\\f16e\";\n}\n.fa-adn:before {\n  content: \"\\f170\";\n}\n.fa-bitbucket:before {\n  content: \"\\f171\";\n}\n.fa-bitbucket-square:before {\n  content: \"\\f172\";\n}\n.fa-tumblr:before {\n  content: \"\\f173\";\n}\n.fa-tumblr-square:before {\n  content: \"\\f174\";\n}\n.fa-long-arrow-down:before {\n  content: \"\\f175\";\n}\n.fa-long-arrow-up:before {\n  content: \"\\f176\";\n}\n.fa-long-arrow-left:before {\n  content: \"\\f177\";\n}\n.fa-long-arrow-right:before {\n  content: \"\\f178\";\n}\n.fa-apple:before {\n  content: \"\\f179\";\n}\n.fa-windows:before {\n  content: \"\\f17a\";\n}\n.fa-android:before {\n  content: \"\\f17b\";\n}\n.fa-linux:before {\n  content: \"\\f17c\";\n}\n.fa-dribbble:before {\n  content: \"\\f17d\";\n}\n.fa-skype:before {\n  content: \"\\f17e\";\n}\n.fa-foursquare:before {\n  content: \"\\f180\";\n}\n.fa-trello:before {\n  content: \"\\f181\";\n}\n.fa-female:before {\n  content: \"\\f182\";\n}\n.fa-male:before {\n  content: \"\\f183\";\n}\n.fa-gittip:before,\n.fa-gratipay:before {\n  content: \"\\f184\";\n}\n.fa-sun-o:before {\n  content: \"\\f185\";\n}\n.fa-moon-o:before {\n  content: \"\\f186\";\n}\n.fa-archive:before {\n  content: \"\\f187\";\n}\n.fa-bug:before {\n  content: \"\\f188\";\n}\n.fa-vk:before {\n  content: \"\\f189\";\n}\n.fa-weibo:before {\n  content: \"\\f18a\";\n}\n.fa-renren:before {\n  content: \"\\f18b\";\n}\n.fa-pagelines:before {\n  content: \"\\f18c\";\n}\n.fa-stack-exchange:before {\n  content: \"\\f18d\";\n}\n.fa-arrow-circle-o-right:before {\n  content: \"\\f18e\";\n}\n.fa-arrow-circle-o-left:before {\n  content: \"\\f190\";\n}\n.fa-toggle-left:before,\n.fa-caret-square-o-left:before {\n  content: \"\\f191\";\n}\n.fa-dot-circle-o:before {\n  content: \"\\f192\";\n}\n.fa-wheelchair:before {\n  content: \"\\f193\";\n}\n.fa-vimeo-square:before {\n  content: \"\\f194\";\n}\n.fa-turkish-lira:before,\n.fa-try:before {\n  content: \"\\f195\";\n}\n.fa-plus-square-o:before {\n  content: \"\\f196\";\n}\n.fa-space-shuttle:before {\n  content: \"\\f197\";\n}\n.fa-slack:before {\n  content: \"\\f198\";\n}\n.fa-envelope-square:before {\n  content: \"\\f199\";\n}\n.fa-wordpress:before {\n  content: \"\\f19a\";\n}\n.fa-openid:before {\n  content: \"\\f19b\";\n}\n.fa-institution:before,\n.fa-bank:before,\n.fa-university:before {\n  content: \"\\f19c\";\n}\n.fa-mortar-board:before,\n.fa-graduation-cap:before {\n  content: \"\\f19d\";\n}\n.fa-yahoo:before {\n  content: \"\\f19e\";\n}\n.fa-google:before {\n  content: \"\\f1a0\";\n}\n.fa-reddit:before {\n  content: \"\\f1a1\";\n}\n.fa-reddit-square:before {\n  content: \"\\f1a2\";\n}\n.fa-stumbleupon-circle:before {\n  content: \"\\f1a3\";\n}\n.fa-stumbleupon:before {\n  content: \"\\f1a4\";\n}\n.fa-delicious:before {\n  content: \"\\f1a5\";\n}\n.fa-digg:before {\n  content: \"\\f1a6\";\n}\n.fa-pied-piper-pp:before {\n  content: \"\\f1a7\";\n}\n.fa-pied-piper-alt:before {\n  content: \"\\f1a8\";\n}\n.fa-drupal:before {\n  content: \"\\f1a9\";\n}\n.fa-joomla:before {\n  content: \"\\f1aa\";\n}\n.fa-language:before {\n  content: \"\\f1ab\";\n}\n.fa-fax:before {\n  content: \"\\f1ac\";\n}\n.fa-building:before {\n  content: \"\\f1ad\";\n}\n.fa-child:before {\n  content: \"\\f1ae\";\n}\n.fa-paw:before {\n  content: \"\\f1b0\";\n}\n.fa-spoon:before {\n  content: \"\\f1b1\";\n}\n.fa-cube:before {\n  content: \"\\f1b2\";\n}\n.fa-cubes:before {\n  content: \"\\f1b3\";\n}\n.fa-behance:before {\n  content: \"\\f1b4\";\n}\n.fa-behance-square:before {\n  content: \"\\f1b5\";\n}\n.fa-steam:before {\n  content: \"\\f1b6\";\n}\n.fa-steam-square:before {\n  content: \"\\f1b7\";\n}\n.fa-recycle:before {\n  content: \"\\f1b8\";\n}\n.fa-automobile:before,\n.fa-car:before {\n  content: \"\\f1b9\";\n}\n.fa-cab:before,\n.fa-taxi:before {\n  content: \"\\f1ba\";\n}\n.fa-tree:before {\n  content: \"\\f1bb\";\n}\n.fa-spotify:before {\n  content: \"\\f1bc\";\n}\n.fa-deviantart:before {\n  content: \"\\f1bd\";\n}\n.fa-soundcloud:before {\n  content: \"\\f1be\";\n}\n.fa-database:before {\n  content: \"\\f1c0\";\n}\n.fa-file-pdf-o:before {\n  content: \"\\f1c1\";\n}\n.fa-file-word-o:before {\n  content: \"\\f1c2\";\n}\n.fa-file-excel-o:before {\n  content: \"\\f1c3\";\n}\n.fa-file-powerpoint-o:before {\n  content: \"\\f1c4\";\n}\n.fa-file-photo-o:before,\n.fa-file-picture-o:before,\n.fa-file-image-o:before {\n  content: \"\\f1c5\";\n}\n.fa-file-zip-o:before,\n.fa-file-archive-o:before {\n  content: \"\\f1c6\";\n}\n.fa-file-sound-o:before,\n.fa-file-audio-o:before {\n  content: \"\\f1c7\";\n}\n.fa-file-movie-o:before,\n.fa-file-video-o:before {\n  content: \"\\f1c8\";\n}\n.fa-file-code-o:before {\n  content: \"\\f1c9\";\n}\n.fa-vine:before {\n  content: \"\\f1ca\";\n}\n.fa-codepen:before {\n  content: \"\\f1cb\";\n}\n.fa-jsfiddle:before {\n  content: \"\\f1cc\";\n}\n.fa-life-bouy:before,\n.fa-life-buoy:before,\n.fa-life-saver:before,\n.fa-support:before,\n.fa-life-ring:before {\n  content: \"\\f1cd\";\n}\n.fa-circle-o-notch:before {\n  content: \"\\f1ce\";\n}\n.fa-ra:before,\n.fa-resistance:before,\n.fa-rebel:before {\n  content: \"\\f1d0\";\n}\n.fa-ge:before,\n.fa-empire:before {\n  content: \"\\f1d1\";\n}\n.fa-git-square:before {\n  content: \"\\f1d2\";\n}\n.fa-git:before {\n  content: \"\\f1d3\";\n}\n.fa-y-combinator-square:before,\n.fa-yc-square:before,\n.fa-hacker-news:before {\n  content: \"\\f1d4\";\n}\n.fa-tencent-weibo:before {\n  content: \"\\f1d5\";\n}\n.fa-qq:before {\n  content: \"\\f1d6\";\n}\n.fa-wechat:before,\n.fa-weixin:before {\n  content: \"\\f1d7\";\n}\n.fa-send:before,\n.fa-paper-plane:before {\n  content: \"\\f1d8\";\n}\n.fa-send-o:before,\n.fa-paper-plane-o:before {\n  content: \"\\f1d9\";\n}\n.fa-history:before {\n  content: \"\\f1da\";\n}\n.fa-circle-thin:before {\n  content: \"\\f1db\";\n}\n.fa-header:before {\n  content: \"\\f1dc\";\n}\n.fa-paragraph:before {\n  content: \"\\f1dd\";\n}\n.fa-sliders:before {\n  content: \"\\f1de\";\n}\n.fa-share-alt:before {\n  content: \"\\f1e0\";\n}\n.fa-share-alt-square:before {\n  content: \"\\f1e1\";\n}\n.fa-bomb:before {\n  content: \"\\f1e2\";\n}\n.fa-soccer-ball-o:before,\n.fa-futbol-o:before {\n  content: \"\\f1e3\";\n}\n.fa-tty:before {\n  content: \"\\f1e4\";\n}\n.fa-binoculars:before {\n  content: \"\\f1e5\";\n}\n.fa-plug:before {\n  content: \"\\f1e6\";\n}\n.fa-slideshare:before {\n  content: \"\\f1e7\";\n}\n.fa-twitch:before {\n  content: \"\\f1e8\";\n}\n.fa-yelp:before {\n  content: \"\\f1e9\";\n}\n.fa-newspaper-o:before {\n  content: \"\\f1ea\";\n}\n.fa-wifi:before {\n  content: \"\\f1eb\";\n}\n.fa-calculator:before {\n  content: \"\\f1ec\";\n}\n.fa-paypal:before {\n  content: \"\\f1ed\";\n}\n.fa-google-wallet:before {\n  content: \"\\f1ee\";\n}\n.fa-cc-visa:before {\n  content: \"\\f1f0\";\n}\n.fa-cc-mastercard:before {\n  content: \"\\f1f1\";\n}\n.fa-cc-discover:before {\n  content: \"\\f1f2\";\n}\n.fa-cc-amex:before {\n  content: \"\\f1f3\";\n}\n.fa-cc-paypal:before {\n  content: \"\\f1f4\";\n}\n.fa-cc-stripe:before {\n  content: \"\\f1f5\";\n}\n.fa-bell-slash:before {\n  content: \"\\f1f6\";\n}\n.fa-bell-slash-o:before {\n  content: \"\\f1f7\";\n}\n.fa-trash:before {\n  content: \"\\f1f8\";\n}\n.fa-copyright:before {\n  content: \"\\f1f9\";\n}\n.fa-at:before {\n  content: \"\\f1fa\";\n}\n.fa-eyedropper:before {\n  content: \"\\f1fb\";\n}\n.fa-paint-brush:before {\n  content: \"\\f1fc\";\n}\n.fa-birthday-cake:before {\n  content: \"\\f1fd\";\n}\n.fa-area-chart:before {\n  content: \"\\f1fe\";\n}\n.fa-pie-chart:before {\n  content: \"\\f200\";\n}\n.fa-line-chart:before {\n  content: \"\\f201\";\n}\n.fa-lastfm:before {\n  content: \"\\f202\";\n}\n.fa-lastfm-square:before {\n  content: \"\\f203\";\n}\n.fa-toggle-off:before {\n  content: \"\\f204\";\n}\n.fa-toggle-on:before {\n  content: \"\\f205\";\n}\n.fa-bicycle:before {\n  content: \"\\f206\";\n}\n.fa-bus:before {\n  content: \"\\f207\";\n}\n.fa-ioxhost:before {\n  content: \"\\f208\";\n}\n.fa-angellist:before {\n  content: \"\\f209\";\n}\n.fa-cc:before {\n  content: \"\\f20a\";\n}\n.fa-shekel:before,\n.fa-sheqel:before,\n.fa-ils:before {\n  content: \"\\f20b\";\n}\n.fa-meanpath:before {\n  content: \"\\f20c\";\n}\n.fa-buysellads:before {\n  content: \"\\f20d\";\n}\n.fa-connectdevelop:before {\n  content: \"\\f20e\";\n}\n.fa-dashcube:before {\n  content: \"\\f210\";\n}\n.fa-forumbee:before {\n  content: \"\\f211\";\n}\n.fa-leanpub:before {\n  content: \"\\f212\";\n}\n.fa-sellsy:before {\n  content: \"\\f213\";\n}\n.fa-shirtsinbulk:before {\n  content: \"\\f214\";\n}\n.fa-simplybuilt:before {\n  content: \"\\f215\";\n}\n.fa-skyatlas:before {\n  content: \"\\f216\";\n}\n.fa-cart-plus:before {\n  content: \"\\f217\";\n}\n.fa-cart-arrow-down:before {\n  content: \"\\f218\";\n}\n.fa-diamond:before {\n  content: \"\\f219\";\n}\n.fa-ship:before {\n  content: \"\\f21a\";\n}\n.fa-user-secret:before {\n  content: \"\\f21b\";\n}\n.fa-motorcycle:before {\n  content: \"\\f21c\";\n}\n.fa-street-view:before {\n  content: \"\\f21d\";\n}\n.fa-heartbeat:before {\n  content: \"\\f21e\";\n}\n.fa-venus:before {\n  content: \"\\f221\";\n}\n.fa-mars:before {\n  content: \"\\f222\";\n}\n.fa-mercury:before {\n  content: \"\\f223\";\n}\n.fa-intersex:before,\n.fa-transgender:before {\n  content: \"\\f224\";\n}\n.fa-transgender-alt:before {\n  content: \"\\f225\";\n}\n.fa-venus-double:before {\n  content: \"\\f226\";\n}\n.fa-mars-double:before {\n  content: \"\\f227\";\n}\n.fa-venus-mars:before {\n  content: \"\\f228\";\n}\n.fa-mars-stroke:before {\n  content: \"\\f229\";\n}\n.fa-mars-stroke-v:before {\n  content: \"\\f22a\";\n}\n.fa-mars-stroke-h:before {\n  content: \"\\f22b\";\n}\n.fa-neuter:before {\n  content: \"\\f22c\";\n}\n.fa-genderless:before {\n  content: \"\\f22d\";\n}\n.fa-facebook-official:before {\n  content: \"\\f230\";\n}\n.fa-pinterest-p:before {\n  content: \"\\f231\";\n}\n.fa-whatsapp:before {\n  content: \"\\f232\";\n}\n.fa-server:before {\n  content: \"\\f233\";\n}\n.fa-user-plus:before {\n  content: \"\\f234\";\n}\n.fa-user-times:before {\n  content: \"\\f235\";\n}\n.fa-hotel:before,\n.fa-bed:before {\n  content: \"\\f236\";\n}\n.fa-viacoin:before {\n  content: \"\\f237\";\n}\n.fa-train:before {\n  content: \"\\f238\";\n}\n.fa-subway:before {\n  content: \"\\f239\";\n}\n.fa-medium:before {\n  content: \"\\f23a\";\n}\n.fa-yc:before,\n.fa-y-combinator:before {\n  content: \"\\f23b\";\n}\n.fa-optin-monster:before {\n  content: \"\\f23c\";\n}\n.fa-opencart:before {\n  content: \"\\f23d\";\n}\n.fa-expeditedssl:before {\n  content: \"\\f23e\";\n}\n.fa-battery-4:before,\n.fa-battery:before,\n.fa-battery-full:before {\n  content: \"\\f240\";\n}\n.fa-battery-3:before,\n.fa-battery-three-quarters:before {\n  content: \"\\f241\";\n}\n.fa-battery-2:before,\n.fa-battery-half:before {\n  content: \"\\f242\";\n}\n.fa-battery-1:before,\n.fa-battery-quarter:before {\n  content: \"\\f243\";\n}\n.fa-battery-0:before,\n.fa-battery-empty:before {\n  content: \"\\f244\";\n}\n.fa-mouse-pointer:before {\n  content: \"\\f245\";\n}\n.fa-i-cursor:before {\n  content: \"\\f246\";\n}\n.fa-object-group:before {\n  content: \"\\f247\";\n}\n.fa-object-ungroup:before {\n  content: \"\\f248\";\n}\n.fa-sticky-note:before {\n  content: \"\\f249\";\n}\n.fa-sticky-note-o:before {\n  content: \"\\f24a\";\n}\n.fa-cc-jcb:before {\n  content: \"\\f24b\";\n}\n.fa-cc-diners-club:before {\n  content: \"\\f24c\";\n}\n.fa-clone:before {\n  content: \"\\f24d\";\n}\n.fa-balance-scale:before {\n  content: \"\\f24e\";\n}\n.fa-hourglass-o:before {\n  content: \"\\f250\";\n}\n.fa-hourglass-1:before,\n.fa-hourglass-start:before {\n  content: \"\\f251\";\n}\n.fa-hourglass-2:before,\n.fa-hourglass-half:before {\n  content: \"\\f252\";\n}\n.fa-hourglass-3:before,\n.fa-hourglass-end:before {\n  content: \"\\f253\";\n}\n.fa-hourglass:before {\n  content: \"\\f254\";\n}\n.fa-hand-grab-o:before,\n.fa-hand-rock-o:before {\n  content: \"\\f255\";\n}\n.fa-hand-stop-o:before,\n.fa-hand-paper-o:before {\n  content: \"\\f256\";\n}\n.fa-hand-scissors-o:before {\n  content: \"\\f257\";\n}\n.fa-hand-lizard-o:before {\n  content: \"\\f258\";\n}\n.fa-hand-spock-o:before {\n  content: \"\\f259\";\n}\n.fa-hand-pointer-o:before {\n  content: \"\\f25a\";\n}\n.fa-hand-peace-o:before {\n  content: \"\\f25b\";\n}\n.fa-trademark:before {\n  content: \"\\f25c\";\n}\n.fa-registered:before {\n  content: \"\\f25d\";\n}\n.fa-creative-commons:before {\n  content: \"\\f25e\";\n}\n.fa-gg:before {\n  content: \"\\f260\";\n}\n.fa-gg-circle:before {\n  content: \"\\f261\";\n}\n.fa-tripadvisor:before {\n  content: \"\\f262\";\n}\n.fa-odnoklassniki:before {\n  content: \"\\f263\";\n}\n.fa-odnoklassniki-square:before {\n  content: \"\\f264\";\n}\n.fa-get-pocket:before {\n  content: \"\\f265\";\n}\n.fa-wikipedia-w:before {\n  content: \"\\f266\";\n}\n.fa-safari:before {\n  content: \"\\f267\";\n}\n.fa-chrome:before {\n  content: \"\\f268\";\n}\n.fa-firefox:before {\n  content: \"\\f269\";\n}\n.fa-opera:before {\n  content: \"\\f26a\";\n}\n.fa-internet-explorer:before {\n  content: \"\\f26b\";\n}\n.fa-tv:before,\n.fa-television:before {\n  content: \"\\f26c\";\n}\n.fa-contao:before {\n  content: \"\\f26d\";\n}\n.fa-500px:before {\n  content: \"\\f26e\";\n}\n.fa-amazon:before {\n  content: \"\\f270\";\n}\n.fa-calendar-plus-o:before {\n  content: \"\\f271\";\n}\n.fa-calendar-minus-o:before {\n  content: \"\\f272\";\n}\n.fa-calendar-times-o:before {\n  content: \"\\f273\";\n}\n.fa-calendar-check-o:before {\n  content: \"\\f274\";\n}\n.fa-industry:before {\n  content: \"\\f275\";\n}\n.fa-map-pin:before {\n  content: \"\\f276\";\n}\n.fa-map-signs:before {\n  content: \"\\f277\";\n}\n.fa-map-o:before {\n  content: \"\\f278\";\n}\n.fa-map:before {\n  content: \"\\f279\";\n}\n.fa-commenting:before {\n  content: \"\\f27a\";\n}\n.fa-commenting-o:before {\n  content: \"\\f27b\";\n}\n.fa-houzz:before {\n  content: \"\\f27c\";\n}\n.fa-vimeo:before {\n  content: \"\\f27d\";\n}\n.fa-black-tie:before {\n  content: \"\\f27e\";\n}\n.fa-fonticons:before {\n  content: \"\\f280\";\n}\n.fa-reddit-alien:before {\n  content: \"\\f281\";\n}\n.fa-edge:before {\n  content: \"\\f282\";\n}\n.fa-credit-card-alt:before {\n  content: \"\\f283\";\n}\n.fa-codiepie:before {\n  content: \"\\f284\";\n}\n.fa-modx:before {\n  content: \"\\f285\";\n}\n.fa-fort-awesome:before {\n  content: \"\\f286\";\n}\n.fa-usb:before {\n  content: \"\\f287\";\n}\n.fa-product-hunt:before {\n  content: \"\\f288\";\n}\n.fa-mixcloud:before {\n  content: \"\\f289\";\n}\n.fa-scribd:before {\n  content: \"\\f28a\";\n}\n.fa-pause-circle:before {\n  content: \"\\f28b\";\n}\n.fa-pause-circle-o:before {\n  content: \"\\f28c\";\n}\n.fa-stop-circle:before {\n  content: \"\\f28d\";\n}\n.fa-stop-circle-o:before {\n  content: \"\\f28e\";\n}\n.fa-shopping-bag:before {\n  content: \"\\f290\";\n}\n.fa-shopping-basket:before {\n  content: \"\\f291\";\n}\n.fa-hashtag:before {\n  content: \"\\f292\";\n}\n.fa-bluetooth:before {\n  content: \"\\f293\";\n}\n.fa-bluetooth-b:before {\n  content: \"\\f294\";\n}\n.fa-percent:before {\n  content: \"\\f295\";\n}\n.fa-gitlab:before {\n  content: \"\\f296\";\n}\n.fa-wpbeginner:before {\n  content: \"\\f297\";\n}\n.fa-wpforms:before {\n  content: \"\\f298\";\n}\n.fa-envira:before {\n  content: \"\\f299\";\n}\n.fa-universal-access:before {\n  content: \"\\f29a\";\n}\n.fa-wheelchair-alt:before {\n  content: \"\\f29b\";\n}\n.fa-question-circle-o:before {\n  content: \"\\f29c\";\n}\n.fa-blind:before {\n  content: \"\\f29d\";\n}\n.fa-audio-description:before {\n  content: \"\\f29e\";\n}\n.fa-volume-control-phone:before {\n  content: \"\\f2a0\";\n}\n.fa-braille:before {\n  content: \"\\f2a1\";\n}\n.fa-assistive-listening-systems:before {\n  content: \"\\f2a2\";\n}\n.fa-asl-interpreting:before,\n.fa-american-sign-language-interpreting:before {\n  content: \"\\f2a3\";\n}\n.fa-deafness:before,\n.fa-hard-of-hearing:before,\n.fa-deaf:before {\n  content: \"\\f2a4\";\n}\n.fa-glide:before {\n  content: \"\\f2a5\";\n}\n.fa-glide-g:before {\n  content: \"\\f2a6\";\n}\n.fa-signing:before,\n.fa-sign-language:before {\n  content: \"\\f2a7\";\n}\n.fa-low-vision:before {\n  content: \"\\f2a8\";\n}\n.fa-viadeo:before {\n  content: \"\\f2a9\";\n}\n.fa-viadeo-square:before {\n  content: \"\\f2aa\";\n}\n.fa-snapchat:before {\n  content: \"\\f2ab\";\n}\n.fa-snapchat-ghost:before {\n  content: \"\\f2ac\";\n}\n.fa-snapchat-square:before {\n  content: \"\\f2ad\";\n}\n.fa-pied-piper:before {\n  content: \"\\f2ae\";\n}\n.fa-first-order:before {\n  content: \"\\f2b0\";\n}\n.fa-yoast:before {\n  content: \"\\f2b1\";\n}\n.fa-themeisle:before {\n  content: \"\\f2b2\";\n}\n.fa-google-plus-circle:before,\n.fa-google-plus-official:before {\n  content: \"\\f2b3\";\n}\n.fa-fa:before,\n.fa-font-awesome:before {\n  content: \"\\f2b4\";\n}\n.fa-handshake-o:before {\n  content: \"\\f2b5\";\n}\n.fa-envelope-open:before {\n  content: \"\\f2b6\";\n}\n.fa-envelope-open-o:before {\n  content: \"\\f2b7\";\n}\n.fa-linode:before {\n  content: \"\\f2b8\";\n}\n.fa-address-book:before {\n  content: \"\\f2b9\";\n}\n.fa-address-book-o:before {\n  content: \"\\f2ba\";\n}\n.fa-vcard:before,\n.fa-address-card:before {\n  content: \"\\f2bb\";\n}\n.fa-vcard-o:before,\n.fa-address-card-o:before {\n  content: \"\\f2bc\";\n}\n.fa-user-circle:before {\n  content: \"\\f2bd\";\n}\n.fa-user-circle-o:before {\n  content: \"\\f2be\";\n}\n.fa-user-o:before {\n  content: \"\\f2c0\";\n}\n.fa-id-badge:before {\n  content: \"\\f2c1\";\n}\n.fa-drivers-license:before,\n.fa-id-card:before {\n  content: \"\\f2c2\";\n}\n.fa-drivers-license-o:before,\n.fa-id-card-o:before {\n  content: \"\\f2c3\";\n}\n.fa-quora:before {\n  content: \"\\f2c4\";\n}\n.fa-free-code-camp:before {\n  content: \"\\f2c5\";\n}\n.fa-telegram:before {\n  content: \"\\f2c6\";\n}\n.fa-thermometer-4:before,\n.fa-thermometer:before,\n.fa-thermometer-full:before {\n  content: \"\\f2c7\";\n}\n.fa-thermometer-3:before,\n.fa-thermometer-three-quarters:before {\n  content: \"\\f2c8\";\n}\n.fa-thermometer-2:before,\n.fa-thermometer-half:before {\n  content: \"\\f2c9\";\n}\n.fa-thermometer-1:before,\n.fa-thermometer-quarter:before {\n  content: \"\\f2ca\";\n}\n.fa-thermometer-0:before,\n.fa-thermometer-empty:before {\n  content: \"\\f2cb\";\n}\n.fa-shower:before {\n  content: \"\\f2cc\";\n}\n.fa-bathtub:before,\n.fa-s15:before,\n.fa-bath:before {\n  content: \"\\f2cd\";\n}\n.fa-podcast:before {\n  content: \"\\f2ce\";\n}\n.fa-window-maximize:before {\n  content: \"\\f2d0\";\n}\n.fa-window-minimize:before {\n  content: \"\\f2d1\";\n}\n.fa-window-restore:before {\n  content: \"\\f2d2\";\n}\n.fa-times-rectangle:before,\n.fa-window-close:before {\n  content: \"\\f2d3\";\n}\n.fa-times-rectangle-o:before,\n.fa-window-close-o:before {\n  content: \"\\f2d4\";\n}\n.fa-bandcamp:before {\n  content: \"\\f2d5\";\n}\n.fa-grav:before {\n  content: \"\\f2d6\";\n}\n.fa-etsy:before {\n  content: \"\\f2d7\";\n}\n.fa-imdb:before {\n  content: \"\\f2d8\";\n}\n.fa-ravelry:before {\n  content: \"\\f2d9\";\n}\n.fa-eercast:before {\n  content: \"\\f2da\";\n}\n.fa-microchip:before {\n  content: \"\\f2db\";\n}\n.fa-snowflake-o:before {\n  content: \"\\f2dc\";\n}\n.fa-superpowers:before {\n  content: \"\\f2dd\";\n}\n.fa-wpexplorer:before {\n  content: \"\\f2de\";\n}\n.fa-meetup:before {\n  content: \"\\f2e0\";\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n"
  },
  {
    "path": "public/web.config",
    "content": "<!--\n    Rewrites requires Microsoft URL Rewrite Module for IIS\n    Download: https://www.microsoft.com/en-us/download/details.aspx?id=47337\n    Debug Help: https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/using-failed-request-tracing-to-trace-rewrite-rules\n-->\n<configuration>\n  <system.webServer>\n    <rewrite>\n      <rules>\n        <rule name=\"Imported Rule 1\" stopProcessing=\"true\">\n          <match url=\"^(.*)/$\" ignoreCase=\"false\" />\n          <conditions>\n            <add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" ignoreCase=\"false\" negate=\"true\" />\n          </conditions>\n          <action type=\"Redirect\" redirectType=\"Permanent\" url=\"/{R:1}\" />\n        </rule>\n        <rule name=\"Imported Rule 2\" stopProcessing=\"true\">\n          <match url=\"^\" ignoreCase=\"false\" />\n          <conditions>\n            <add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" ignoreCase=\"false\" negate=\"true\" />\n            <add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" ignoreCase=\"false\" negate=\"true\" />\n          </conditions>\n          <action type=\"Rewrite\" url=\"index.php\" />\n        </rule>\n      </rules>\n    </rewrite>\n  </system.webServer>\n</configuration>\n"
  },
  {
    "path": "resources/js/app.js",
    "content": "require('./bootstrap');\n"
  },
  {
    "path": "resources/js/bootstrap.js",
    "content": "window._ = require('lodash');\n\n/**\n * We'll load the axios HTTP library which allows us to easily issue requests\n * to our Laravel back-end. This library automatically handles sending the\n * CSRF token as a header based on the value of the \"XSRF\" token cookie.\n */\n\nwindow.axios = require('axios');\n\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\n/**\n * Echo exposes an expressive API for subscribing to channels and listening\n * for events that are broadcast by Laravel. Echo and event broadcasting\n * allows your team to easily build robust real-time web applications.\n */\n\n// import Echo from 'laravel-echo';\n\n// window.Pusher = require('pusher-js');\n\n// window.Echo = new Echo({\n//     broadcaster: 'pusher',\n//     key: process.env.MIX_PUSHER_APP_KEY,\n//     cluster: process.env.MIX_PUSHER_APP_CLUSTER,\n//     forceTLS: true\n// });\n"
  },
  {
    "path": "resources/lang/en/admin.php",
    "content": "<?php\n\nreturn [\n    'scaffold' => [\n        'header'            => 'Scaffold',\n        'choose'            => 'choose',\n        'table'             => 'Table',\n        'model'             => 'Model',\n        'controller'        => 'Controller',\n        'repository'        => 'Repository',\n        'add_field'         => 'Add field',\n        'pk'                => 'Primary key',\n        'soft_delete'       => 'Soft delete',\n        'create_migration'  => 'Create migration',\n        'create_model'      => 'Create model',\n        'create_repository' => 'Create repository',\n        'create_controller' => 'Create controller',\n        'run_migrate'       => 'Run migrate',\n        'create_lang'       => 'Create lang',\n        'field'             => 'field',\n        'translation'       => 'translation',\n        'comment'           => 'comment',\n        'default'           => 'default',\n        'field_name'        => 'field name',\n        'type'              => 'type',\n        'nullable'          => 'nullable',\n        'key'               => 'key',\n        'translate_title'   => 'Translate Title',\n        'sync_translation_with_comment' => 'Sync translation and comment',\n    ],\n    'client' => [\n        'delete_confirm'    => 'Are you sure to delete this item ?',\n        'confirm'           => 'Confirm',\n        'cancel'            => 'Cancel',\n        'refresh_succeeded' => 'Refresh succeeded !',\n        'close'             => 'Close',\n        'selected_options'  => ':num options selected',\n        'exceed_max_item'   => 'Maximum items exceeded.',\n        'no_preview'        => 'No preview available.',\n\n        '500' => 'Internal server error !',\n        '403' => 'Permission deny !',\n        '401' => 'Unauthorized !',\n        '419' => 'Page expired !',\n    ],\n    'online'                => 'Online',\n    'login'                 => 'Login',\n    'logout'                => 'Logout',\n    'setting'               => 'Setting',\n    'name'                  => 'Name',\n    'username'              => 'Username',\n    'user'                  => 'User',\n    'alias'                 => 'Alias',\n    'routes'                => 'Routes',\n    'route_action'          => 'Route Action',\n    'middleware'            => 'Middleware',\n    'method'                => 'Method',\n    'old_password'          => 'Old password',\n    'password'              => 'Password',\n    'password_confirmation' => 'Password confirmation',\n    'old_password_error'    => 'Incorrect password',\n    'remember_me'           => 'Remember me',\n    'user_setting'          => 'User setting',\n    'avatar'                => 'Avatar',\n    'list'                  => 'List',\n    'new'                   => 'New',\n    'create'                => 'Create',\n    'delete'                => 'Delete',\n    'remove'                => 'Remove',\n    'edit'                  => 'Edit',\n    'quick_edit'            => 'Quick Edit',\n    'view'                  => 'View',\n    'continue_editing'      => 'Continue editing',\n    'continue_creating'     => 'Continue creating',\n    'detail'                => 'Detail',\n    'browse'                => 'Browse',\n    'reset'                 => 'Reset',\n    'export'                => 'Export',\n    'batch_delete'          => 'Batch delete',\n    'save'                  => 'Save',\n    'refresh'               => 'Refresh',\n    'order'                 => 'Order',\n    'expand'                => 'Expand',\n    'collapse'              => 'Collapse',\n    'filter'                => 'Filter',\n    'search'                => 'Search',\n    'close'                 => 'Close',\n    'show'                  => 'Show',\n    'entries'               => 'entries',\n    'captcha'               => 'Captcha',\n    'action'                => 'Action',\n    'title'                 => 'Title',\n    'description'           => 'Description',\n    'back'                  => 'Back',\n    'back_to_list'          => 'Back to List',\n    'submit'                => 'Submit',\n    'menu'                  => 'Menu',\n    'input'                 => 'Input',\n    'succeeded'             => 'Succeeded',\n    'failed'                => 'Failed',\n    'delete_confirm'        => 'Are you sure to delete this item ?',\n    'delete_succeeded'      => 'Delete succeeded !',\n    'delete_failed'         => 'Delete failed !',\n    'update_succeeded'      => 'Update succeeded !',\n    'update_failed'         => 'Update failed !',\n    'save_succeeded'        => 'Save succeeded !',\n    'save_failed'           => 'Save failed !',\n    'refresh_succeeded'     => 'Refresh succeeded !',\n    'login_successful'      => 'Login successful',\n    'choose'                => 'Choose',\n    'choose_file'           => 'Select file',\n    'choose_image'          => 'Select image',\n    'more'                  => 'More',\n    'deny'                  => 'Permission denied',\n    'administrator'         => 'Administrator',\n    'no_data'               => 'No data.',\n    'roles'                 => 'Roles',\n    'permissions'           => 'Permissions',\n    'slug'                  => 'Slug',\n    'created_at'            => 'Created At',\n    'updated_at'            => 'Updated At',\n    'alert'                 => 'Alert',\n    'parent_id'             => 'Parent',\n    'icon'                  => 'Icon',\n    'uri'                   => 'URI',\n    'operation_log'         => 'Operation log',\n    'parent_select_error'   => 'Parent select error',\n    'tree'                  => 'Tree',\n    'table'                 => 'Table',\n    'default'               => 'Default',\n    'import'                => 'Import',\n    'is_not_import'         => 'No',\n    'selected_options'      => ':num options selected',\n    'pagination'            => [\n        'range' => 'Showing :first to :last of :total entries',\n    ],\n    'role'                  => 'Role',\n    'permission'            => 'Permission',\n    'route'                 => 'Route',\n    'confirm'               => 'Confirm',\n    'cancel'                => 'Cancel',\n    'selectall'             => 'Select all',\n    'http'                  => [\n        'method' => 'HTTP method',\n        'path'   => 'HTTP path',\n    ],\n    'all_methods_if_empty'  => 'All methods if empty',\n    'all'                   => 'All',\n    'current_page'          => 'Current page',\n    'selected_rows'         => 'Selected rows',\n    'upload'                => 'Upload',\n    'new_folder'            => 'New folder',\n    'time'                  => 'Time',\n    'size'                  => 'Size',\n    'between_start'         => 'Start',\n    'between_end'           => 'End',\n    'next_page'             => 'Next',\n    'prev_page'             => 'Previous',\n    'next_step'             => 'Next',\n    'prev_step'             => 'Previous',\n    'done'                  => 'Done',\n    'listbox'               => [\n        'text_total'         => 'Showing all {0}',\n        'text_empty'         => 'Empty list',\n        'filtered'           => '{0} / {1}',\n        'filter_clear'       => 'Show all',\n        'filter_placeholder' => 'Filter',\n    ],\n    'responsive' => [\n        'display_all' => 'Display all',\n        'display'     => 'Display',\n        'focus'       => 'Focus',\n    ],\n    'uploader' => [\n        'add_new_media'          => 'Browse',\n        'drag_file'              => 'Or drag file here',\n        'max_file_limit'         => 'The :attribute may not be greater than :max.',\n        'exceed_size'            => 'Exceeds the maximum file-size',\n        'interrupt'              => 'Interrupt',\n        'upload_failed'          => 'Upload failed! Please try again.',\n        'selected_files'         => ':num files selected，size: :size。',\n        'selected_has_failed'    => 'Uploaded: :success, failed: :fail, <a class=\"retry\"  href=\"javascript:\"\";\">retry </a>or<a class=\"ignore\" href=\"javascript:\"\";\"> ignore</a>',\n        'selected_success'       => ':num(:size) files selected, Uploaded: :success.',\n        'dot'                    => ', ',\n        'failed_num'             => 'failed::fail.',\n        'pause_upload'           => 'Pause',\n        'go_on_upload'           => 'Go On',\n        'start_upload'           => 'Upload',\n        'upload_success_message' => ':success files uploaded successfully',\n        'go_on_add'              => 'New File',\n        'Q_TYPE_DENIED'          => 'Sorry, the type of this file is not allowed!',\n        'Q_EXCEED_NUM_LIMIT'     => 'Sorry, maximum number of allowable file uploads has been exceeded!',\n        'F_EXCEED_SIZE'          => 'Sorry，the maximum file-size has been exceeded!',\n        'Q_EXCEED_SIZE_LIMIT'    => 'Sorry, the maximum file-size has been exceeded!',\n        'F_DUPLICATE'            => 'Duplicate file.',\n        'confirm_delete_file'    => 'Are you sure delete this file from server?',\n    ],\n    'import_extension_confirm'  => 'Are you sure import the extension?',\n    'quick_create'              => 'Quick create',\n    'grid_items_selected'       => '{n} items selected',\n    'nothing_updated'           => 'Nothing has been updated.',\n    'welcome_back'              => 'Welcome back, please login to your account.',\n    'documentation'             => 'Documentation',\n    'demo'                      => 'Demo',\n    'extensions'                => 'Extensions',\n    'version'                   => 'Version',\n    'current_version'           => 'Current version',\n    'latest_version'            => 'Latest version',\n    'upgrade_to_version'        => 'Upgrade to version :version',\n    'enable'                    => 'Enable',\n    'disable'                   => 'Disable',\n    'uninstall'                 => 'Uninstall',\n    'confirm_uninstall'         => 'Please confirm that you wish to uninstall this extension. This may result in potential data loss.',\n    'marketplace'               => 'Marketplace',\n    'theme'                     => 'Theme',\n    'application'               => 'Application',\n    'install_from_local'        => 'Install From Local',\n    'install_succeeded'         => 'Install succeeded !',\n    'invalid_extension_package' => 'Invalid extension package !',\n    'copied'                    => 'Copied',\n    'auth_failed'               => 'These credentials do not match our records.',\n    'validation'               => [\n        'match'     => 'The :attribute and :other must match.',\n        'minlength' => 'The :attribute must be at least :min characters.',\n        'maxlength' => 'The :attribute may not be greater than :max characters.',\n    ],\n];\n"
  },
  {
    "path": "resources/lang/en/auth.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Authentication Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines are used during authentication for various\n    | messages that we need to display to the user. You are free to modify\n    | these language lines according to your application's requirements.\n    |\n    */\n\n    'failed' => 'These credentials do not match our records.',\n    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',\n\n];\n"
  },
  {
    "path": "resources/lang/en/pagination.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Pagination Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines are used by the paginator library to build\n    | the simple pagination links. You are free to change them to anything\n    | you want to customize your views to better match your application.\n    |\n    */\n\n    'previous' => '&laquo; Previous',\n    'next' => 'Next &raquo;',\n\n];\n"
  },
  {
    "path": "resources/lang/en/passwords.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Password Reset Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines are the default lines which match reasons\n    | that are given by the password broker for a password update attempt\n    | has failed, such as for an invalid token or invalid new password.\n    |\n    */\n\n    'reset' => 'Your password has been reset!',\n    'sent' => 'We have e-mailed your password reset link!',\n    'throttled' => 'Please wait before retrying.',\n    'token' => 'This password reset token is invalid.',\n    'user' => \"We can't find a user with that e-mail address.\",\n\n];\n"
  },
  {
    "path": "resources/lang/en/validation.php",
    "content": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Validation Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines contain the default error messages used by\n    | the validator class. Some of these rules have multiple versions such\n    | as the size rules. Feel free to tweak each of these messages here.\n    |\n    */\n\n    'accepted' => 'The :attribute must be accepted.',\n    'active_url' => 'The :attribute is not a valid URL.',\n    'after' => 'The :attribute must be a date after :date.',\n    'after_or_equal' => 'The :attribute must be a date after or equal to :date.',\n    'alpha' => 'The :attribute may only contain letters.',\n    'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.',\n    'alpha_num' => 'The :attribute may only contain letters and numbers.',\n    'array' => 'The :attribute must be an array.',\n    'before' => 'The :attribute must be a date before :date.',\n    'before_or_equal' => 'The :attribute must be a date before or equal to :date.',\n    'between' => [\n        'numeric' => 'The :attribute must be between :min and :max.',\n        'file' => 'The :attribute must be between :min and :max kilobytes.',\n        'string' => 'The :attribute must be between :min and :max characters.',\n        'array' => 'The :attribute must have between :min and :max items.',\n    ],\n    'boolean' => 'The :attribute field must be true or false.',\n    'confirmed' => 'The :attribute confirmation does not match.',\n    'date' => 'The :attribute is not a valid date.',\n    'date_equals' => 'The :attribute must be a date equal to :date.',\n    'date_format' => 'The :attribute does not match the format :format.',\n    'different' => 'The :attribute and :other must be different.',\n    'digits' => 'The :attribute must be :digits digits.',\n    'digits_between' => 'The :attribute must be between :min and :max digits.',\n    'dimensions' => 'The :attribute has invalid image dimensions.',\n    'distinct' => 'The :attribute field has a duplicate value.',\n    'email' => 'The :attribute must be a valid email address.',\n    'ends_with' => 'The :attribute must end with one of the following: :values.',\n    'exists' => 'The selected :attribute is invalid.',\n    'file' => 'The :attribute must be a file.',\n    'filled' => 'The :attribute field must have a value.',\n    'gt' => [\n        'numeric' => 'The :attribute must be greater than :value.',\n        'file' => 'The :attribute must be greater than :value kilobytes.',\n        'string' => 'The :attribute must be greater than :value characters.',\n        'array' => 'The :attribute must have more than :value items.',\n    ],\n    'gte' => [\n        'numeric' => 'The :attribute must be greater than or equal :value.',\n        'file' => 'The :attribute must be greater than or equal :value kilobytes.',\n        'string' => 'The :attribute must be greater than or equal :value characters.',\n        'array' => 'The :attribute must have :value items or more.',\n    ],\n    'image' => 'The :attribute must be an image.',\n    'in' => 'The selected :attribute is invalid.',\n    'in_array' => 'The :attribute field does not exist in :other.',\n    'integer' => 'The :attribute must be an integer.',\n    'ip' => 'The :attribute must be a valid IP address.',\n    'ipv4' => 'The :attribute must be a valid IPv4 address.',\n    'ipv6' => 'The :attribute must be a valid IPv6 address.',\n    'json' => 'The :attribute must be a valid JSON string.',\n    'lt' => [\n        'numeric' => 'The :attribute must be less than :value.',\n        'file' => 'The :attribute must be less than :value kilobytes.',\n        'string' => 'The :attribute must be less than :value characters.',\n        'array' => 'The :attribute must have less than :value items.',\n    ],\n    'lte' => [\n        'numeric' => 'The :attribute must be less than or equal :value.',\n        'file' => 'The :attribute must be less than or equal :value kilobytes.',\n        'string' => 'The :attribute must be less than or equal :value characters.',\n        'array' => 'The :attribute must not have more than :value items.',\n    ],\n    'max' => [\n        'numeric' => 'The :attribute may not be greater than :max.',\n        'file' => 'The :attribute may not be greater than :max kilobytes.',\n        'string' => 'The :attribute may not be greater than :max characters.',\n        'array' => 'The :attribute may not have more than :max items.',\n    ],\n    'mimes' => 'The :attribute must be a file of type: :values.',\n    'mimetypes' => 'The :attribute must be a file of type: :values.',\n    'min' => [\n        'numeric' => 'The :attribute must be at least :min.',\n        'file' => 'The :attribute must be at least :min kilobytes.',\n        'string' => 'The :attribute must be at least :min characters.',\n        'array' => 'The :attribute must have at least :min items.',\n    ],\n    'not_in' => 'The selected :attribute is invalid.',\n    'not_regex' => 'The :attribute format is invalid.',\n    'numeric' => 'The :attribute must be a number.',\n    'password' => 'The password is incorrect.',\n    'present' => 'The :attribute field must be present.',\n    'regex' => 'The :attribute format is invalid.',\n    'required' => 'The :attribute field is required.',\n    'required_if' => 'The :attribute field is required when :other is :value.',\n    'required_unless' => 'The :attribute field is required unless :other is in :values.',\n    'required_with' => 'The :attribute field is required when :values is present.',\n    'required_with_all' => 'The :attribute field is required when :values are present.',\n    'required_without' => 'The :attribute field is required when :values is not present.',\n    'required_without_all' => 'The :attribute field is required when none of :values are present.',\n    'same' => 'The :attribute and :other must match.',\n    'size' => [\n        'numeric' => 'The :attribute must be :size.',\n        'file' => 'The :attribute must be :size kilobytes.',\n        'string' => 'The :attribute must be :size characters.',\n        'array' => 'The :attribute must contain :size items.',\n    ],\n    'starts_with' => 'The :attribute must start with one of the following: :values.',\n    'string' => 'The :attribute must be a string.',\n    'timezone' => 'The :attribute must be a valid zone.',\n    'unique' => 'The :attribute has already been taken.',\n    'uploaded' => 'The :attribute failed to upload.',\n    'url' => 'The :attribute format is invalid.',\n    'uuid' => 'The :attribute must be a valid UUID.',\n\n    /*\n    |--------------------------------------------------------------------------\n    | Custom Validation Language Lines\n    |--------------------------------------------------------------------------\n    |\n    | Here you may specify custom validation messages for attributes using the\n    | convention \"attribute.rule\" to name the lines. This makes it quick to\n    | specify a specific custom language line for a given attribute rule.\n    |\n    */\n\n    'custom' => [\n        'attribute-name' => [\n            'rule-name' => 'custom-message',\n        ],\n    ],\n\n    /*\n    |--------------------------------------------------------------------------\n    | Custom Validation Attributes\n    |--------------------------------------------------------------------------\n    |\n    | The following language lines are used to swap our attribute placeholder\n    | with something more reader friendly such as \"E-Mail Address\" instead\n    | of \"email\". This simply helps us make our message more expressive.\n    |\n    */\n\n    'attributes' => [],\n\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/admin.php",
    "content": "<?php\n\nreturn [\n    'scaffold' => [\n        'header'            => '代码生成器',\n        'choose'            => '选择已有数据表',\n        'table'             => '表名',\n        'model'             => '模型',\n        'controller'        => '控制器',\n        'repository'        => '数据仓库',\n        'add_field'         => '添加字段',\n        'pk'                => '主键',\n        'soft_delete'       => '软删除',\n        'create_migration'  => '创建表迁移文件',\n        'create_model'      => '创建模型',\n        'create_repository' => '创建数据仓库',\n        'create_controller' => '创建控制器',\n        'run_migrate'       => '创建数据表',\n        'create_lang'       => '创建翻译文件',\n        'field'             => '字段',\n        'translation'       => '翻译',\n        'comment'           => '注释',\n        'default'           => '默认值',\n        'field_name'        => '字段名',\n        'type'              => '类型',\n        'nullable'          => '允许空值',\n        'key'               => '索引',\n        'translate_title'   => '翻译标题',\n        'sync_translation_with_comment' => '同步翻译与注释',\n    ],\n    'client' => [\n        'delete_confirm'    => '确认删除?',\n        'confirm'           => '确认',\n        'cancel'            => '取消',\n        'refresh_succeeded' => '刷新成功 !',\n        'submit'            => '提交',\n        'close'             => '关闭',\n        'selected_options'  => '已选中:num个选项',\n        'exceed_max_item'   => '已超出最大可选数量',\n        'no_preview'        => '预览失败',\n\n        '500' => '系统繁忙，请稍后再试！',\n        '403' => '对不起，您没有权限访问，请与管理员联系。',\n        '401' => '请登录！',\n        '419' => '对不起，当前页面已失效，请刷新浏览器。',\n    ],\n    'home'                  => '主页',\n    'online'                => '在线',\n    'login'                 => '登录',\n    'logout'                => '登出',\n    'setting'               => '设置',\n    'name'                  => '名称',\n    'username'              => '用户名',\n    'old_password'          => '旧密码',\n    'password'              => '密码',\n    'password_confirmation' => '确认密码',\n    'old_password_error'    => '请输入正确的旧密码',\n    'remember_me'           => '记住我',\n    'user_setting'          => '用户设置',\n    'avatar'                => '头像',\n    'list'                  => '列表',\n    'new'                   => '新增',\n    'create'                => '创建',\n    'delete'                => '删除',\n    'remove'                => '移除',\n    'edit'                  => '编辑',\n    'quick_edit'            => '快捷编辑',\n    'continue_editing'      => '继续编辑',\n    'continue_creating'     => '继续创建',\n    'view'                  => '查看',\n    'detail'                => '详细',\n    'browse'                => '浏览',\n    'reset'                 => '重置',\n    'export'                => '导出',\n    'batch_delete'          => '批量删除',\n    'save'                  => '保存',\n    'refresh'               => '刷新',\n    'order'                 => '排序',\n    'expand'                => '展开',\n    'collapse'              => '收起',\n    'filter'                => '筛选',\n    'search'                => '搜索',\n    'close'                 => '关闭',\n    'show'                  => '显示',\n    'entries'               => '条',\n    'captcha'               => '验证码',\n    'action'                => '操作',\n    'title'                 => '标题',\n    'description'           => '简介',\n    'back'                  => '返回',\n    'back_to_list'          => '返回列表',\n    'submit'                => '提交',\n    'menu'                  => '菜单',\n    'input'                 => '输入',\n    'succeeded'             => '成功',\n    'failed'                => '失败',\n    'delete_confirm'        => '确认删除?',\n    'delete_succeeded'      => '删除成功 !',\n    'delete_failed'         => '删除失败 !',\n    'update_succeeded'      => '更新成功 !',\n    'update_failed'         => '更新失败 !',\n    'save_succeeded'        => '保存成功 !',\n    'save_failed'           => '保存失败 !',\n    'refresh_succeeded'     => '刷新成功 !',\n    'login_successful'      => '登录成功 !',\n    'choose'                => '选择',\n    'choose_file'           => '选择文件',\n    'choose_image'          => '选择图片',\n    'more'                  => '更多',\n    'deny'                  => '无权访问',\n    'administrator'         => '管理员',\n    'roles'                 => '角色',\n    'permissions'           => '权限',\n    'slug'                  => '标识',\n    'created_at'            => '创建时间',\n    'updated_at'            => '更新时间',\n    'alert'                 => '注意',\n    'parent_id'             => '父级',\n    'icon'                  => '图标',\n    'uri'                   => '路径',\n    'operation_log'         => '操作日志',\n    'parent_select_error'   => '父级选择错误',\n    'default'               => '默认',\n    'table'                 => '表格',\n    'no_data'               => '暂无数据',\n    'routes'                => '路由',\n    'alias'                 => '别名',\n    'route_action'          => '处理器',\n    'middleware'            => '中间件',\n    'import'                => '导入',\n    'is_not_import'         => '未导入',\n    'selected_options'      => '已选中:num个选项',\n    'method'                => '方法',\n    'user'                  => '用户',\n    'pagination'            => [\n        'range' => '从 :first 到 :last ，总共 :total 条',\n    ],\n    'role'                  => '角色',\n    'permission'            => '权限',\n    'route'                 => '路由',\n    'confirm'               => '确认',\n    'cancel'                => '取消',\n    'selectall'             => '全选',\n    'http'                  => [\n        'method' => 'HTTP方法',\n        'path'   => 'HTTP路径',\n    ],\n    'all_methods_if_empty'  => '为空默认为所有方法',\n    'all'                   => '全部',\n    'current_page'          => '当前页',\n    'selected_rows'         => '选择的行',\n    'upload'                => '上传',\n    'new_folder'            => '新建文件夹',\n    'time'                  => '时间',\n    'size'                  => '大小',\n    'between_start'         => '起始',\n    'between_end'           => '结束',\n    'next_page'             => '下一页',\n    'prev_page'             => '上一页',\n    'next_step'             => '下一步',\n    'prev_step'             => '上一步',\n    'done'                  => '完成',\n    'listbox'               => [\n        'text_total'         => '总共 {0} 项',\n        'text_empty'         => '空列表',\n        'filtered'           => '{0} / {1}',\n        'filter_clear'       => '显示全部',\n        'filter_placeholder' => '过滤',\n    ],\n    'responsive'      => [\n        'display_all' => '显示全部',\n        'display'     => '字段',\n        'focus'       => '聚焦',\n    ],\n    'uploader' => [\n        'add_new_media'          => '添加文件',\n        'drag_file'              => '或将文件拖到这里',\n        'max_file_limit'         => 'The :attribute may not be greater than :max.',\n        'exceed_size'            => '文件大小超出',\n        'interrupt'              => '上传暂停',\n        'upload_failed'          => '上传失败，请重试',\n        'selected_files'         => '选中:num个文件，共:size。',\n        'selected_has_failed'    => '已成功上传:success个文件，:fail个文件上传失败，<a class=\"retry\"  href=\"javascript:\"\";\">重新上传</a>失败文件或<a class=\"ignore\" href=\"javascript:\"\";\">忽略</a>',\n        'selected_success'       => '共:num个(:size)，已上传:success个。',\n        'dot'                    => '，',\n        'failed_num'             => '失败:fail个。',\n        'pause_upload'           => '暂停上传',\n        'go_on_upload'           => '继续上传',\n        'start_upload'           => '开始上传',\n        'upload_success_message' => '已成功上传:success个文件',\n        'go_on_add'              => '继续添加',\n        'Q_TYPE_DENIED'          => '对不起，不允许上传此类型文件',\n        'Q_EXCEED_NUM_LIMIT'     => '对不起，已超出文件上传数量限制，最多只能上传:num个文件',\n        'F_EXCEED_SIZE'          => '对不起，当前选择的文件过大',\n        'Q_EXCEED_SIZE_LIMIT'    => '对不起，已超出文件大小限制',\n        'F_DUPLICATE'            => '文件重复',\n        'confirm_delete_file'    => '您确定要删除这个文件吗?',\n    ],\n    'import_extension_confirm'  => '确认导入拓展？',\n    'quick_create'              => '快速创建',\n    'grid_items_selected'       => '已选择 {n} 项',\n    'nothing_updated'           => '没有任何数据被更改',\n    'welcome_back'              => '欢迎回来，请登录您的账号。',\n    'documentation'             => '文档',\n    'demo'                      => '示例',\n    'extensions'                => '扩展',\n    'version'                   => '版本',\n    'current_version'           => '当前版本',\n    'latest_version'            => '最新版本',\n    'upgrade_to_version'        => '更新至版本 :version',\n    'enable'                    => '启用',\n    'disable'                   => '禁用',\n    'uninstall'                 => '卸载',\n    'confirm_uninstall'         => '您确定要卸载当前扩展吗？此操作将会移除扩展数据！',\n    'marketplace'               => '应用市场',\n    'theme'                     => '主题',\n    'application'               => '应用',\n    'install_from_local'        => '本地安装',\n    'install_succeeded'         => '安装成功',\n    'invalid_extension_package' => '安装包异常',\n    'copied'                    => '已复制',\n    'auth_failed'               => '账号或密码错误',\n    'validation'               => [\n        'match'     => '与 :attribute 不匹配。',\n        'minlength' => ':attribute 字符长度不能少于 :min。',\n        'maxlength' => ':attribute 字符长度不能超出 :max。',\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/carmis.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Carmis' => '卡密',\n        'carmis' => '卡密',\n    ],\n    'fields' => [\n        'goods_id' => '所属商品',\n        'status' => '状态',\n        'carmi' => '卡密内容',\n        'status_unsold' => '未售出',\n        'status_sold' => '已售出',\n        'is_loop' => '循环卡密',\n\t\t'yes'=>'是',\n        'import_carmis' => '导入卡密',\n        'carmis_list' => '卡密列表',\n        'carmis_txt' => '卡密文本',\n        'are_you_import_sure' => '确定要导入卡密吗？',\n        'remove_duplication' => '是否去重',\n    ],\n    'options' => [\n    ],\n    'helps' => [\n        'carmis_list' => '一行一个，回车分隔。请勿导入单个文本长度过大的卡密，容易导致内存溢出。如果卡密过大建议修改商品为人工处理'\n    ],\n    'rule_messages' => [\n        'carmis_list_and_carmis_txt_can_not_be_empty' => '请填写需要导入的卡密或选择需要上传的卡密文件',\n        'import_carmis_success' => '导入卡密成功！'\n    ]\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/coupon.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Coupon' => '优惠码',\n        'coupon' => '优惠码',\n    ],\n    'fields' => [\n        'type' => '优惠类型',\n        'discount' => '优惠金额',\n        'is_use' => '是否已经使用',\n        'is_open' => '是否启用',\n        'coupon' => '优惠码',\n        'ret' => '剩余使用次数',\n        'type_one_time' => '一次性使用',\n        'type_repeat' => '重复使用',\n        'status_use' => '已使用',\n        'status_unused' => '未使用',\n        'goods_id' => '可用商品'\n    ],\n    'options' => [\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/dujiaoka.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nreturn [\n    'official_website' => '官网',\n    'dashboard' => '仪表盘',\n    'dashboard_description' => '每个梦想的路上，一起前行....！',\n    'join_qq_group' => '加入qq群',\n    'join_telegram_group' => '加入tg群',\n    'is_open' => '是否启用',\n    'trashed' => '回收站',\n    'restore' => '恢复',\n    'are_you_restore_sure' => '确定恢复吗?',\n    'restored' => '已恢复',\n    'ord' => '数值越大，排名越靠前',\n    'status_open' => '启用',\n    'status_close' => '禁用',\n    'sales_data' => '销售数据',\n    'order_success_rate' => '订单成交率',\n    'order_count_number' => '总订单数',\n    'last_seven_days' => '最近7天',\n    'last_today' => '今天',\n    'last_month' => '最近一个月',\n    'last_year' => '最近一年',\n\n    'status_pending_number' => '待处理订单数',\n    'status_processing_number' => '处理中订单数',\n    'status_completed_number' => '已完成订单数',\n    'status_failure_number' => '失败订单数',\n    'status_abnormal_number' => '异常订单数',\n\n    'payment_chart' => '支付数据',\n    'payment_successful_number' => '支付成功数',\n    'unpaid_number' => '未支付数',\n\n    'sales_chart' => '销售额',\n    'popular_goods' => '受欢迎的商品',\n    'warning_title' => '请注意！！',\n    'error_title' => '出现错误了哟~',\n    'callback' => '返回',\n    'reset' => '重置',\n    'search_now' => '立即查询',\n\n    'home_page' => '首页',\n    'group_all' => '全部',\n    'order_search' => '订单查询',\n    'site_announcement' => '公告',\n    'price' => '价格',\n    'wholesale_discount' => '批发价',\n    'order_now' => '下单',\n    'not' => '无',\n    'close' => '关闭',\n    'discount' => '折',\n    'home_discount'  => '折扣',\n    'share_qr' => '分享此商品',\n    'by_amount' => '购买',\n    'or_the_above' => '件或以上',\n    'each' => '每个',\n    'email' => '邮箱',\n    'payment_method' => '支付方式',\n    'search_password' => '订单查询密码',\n    'img_verify_code' => '图形验证码',\n    'coupon_code' => '优惠码',\n    'copy_text' => '复制',\n    'search_goods_name' => '商品名称...',\n\n    'behavior_verification' => '行为验证',\n    'click_to_behavior_verification' => '点击进行此处行为验证',\n    'success_behavior_verification' => '已完成行为验证',\n    'fail_behavior_verification' => '行为验证失败',\n    'please_complete_the_behavior_verification_correctly' => '请正确完成行为验证',\n\n    'confirm_order' => '确认订单',\n    'date_to_expired_order' => ':min分钟内未完成支付订单将作废',\n    'order_information' => '订单资料',\n    'pay_immediately' => '立即支付',\n    'amount_to_be_paid' => '需要支付金额',\n    'open_the_app_to_pay' => '打开 APP 支付',\n    'order_search_by_sn' => '订单号查询',\n    'order_search_by_email' => '下单邮箱查询',\n    'order_search_by_browser' => '浏览器查询',\n\n    'scan_qrcode_to_pay' => '扫码支付',\n    'pay_order_expiration_date_prompt' => '请打开 APP 扫码支付！有效期:min分钟',\n    'money_symbol' => '￥',\n    'purchase_limit' => '每单限',\n\n\n    'prompt' => [\n        'server_illegal_request' => '非法请求！',\n        'the_goods_is_not_on_the_shelves' => '该商品未上架！',\n        'wholesale_price_format_error' => '批发价设置有误',\n        'by_amount_not_null' =>  '购买数量不能为0',\n        'inventory_shortage' => '库存不足',\n        'please_select_mode_of_payment' => '请选择支付方式',\n        'goods_does_not_exist' => '商品不存在',\n        'search_password_can_not_be_empty' =>  '请填写订单查询密码',\n        'image_verify_code_error' =>  '图形验证码错误',\n        'buy_amount_format_error' =>  '请正确填写购买数量',\n        'email_format_error' =>  '请正确填写邮箱',\n        'geetest_validate_fail' => '行为验证未通过',\n        'purchase_limit_exceeded' => '单笔购买数量超过限制',\n        'coupon_does_not_exist' => '优惠码不存在',\n        'coupon_lack_of_available_opportunities' => '优惠码可使用次数不足',\n        'can_not_be_empty' => '不能为空',\n        'order_does_not_exist' => '订单不存在',\n        'order_is_expired' => '订单已过期，请重新下单',\n        'order_already_paid' => '订单已经支付过了，请勿重复支付',\n        'order_status_completed' => '订单已经处理',\n        'order_inconsistent_amounts' => '订单金额不一致',\n        'order_carmis_insufficient_quantity_available' => '库存可使用卡密不足，请联系管理员核查',\n        'pay_gateway_does_not_exist' => '支付网关不存在',\n        'abnormal_payment_channel' => '支付网关异常！',\n        'payment_successful' => '支付成功！',\n        'copy_text_success' => '复制成功',\n        'copy_text_failed' => '复制失败',\n        'search_order_browser_tips' => '最多只能查询最近 5 笔订单',\n        'no_related_order_found_for_cache' => '未找到相关订单缓存！',\n        'no_related_order_found' => '未找到相关订单！',\n        'new_order_push' => '新订单通知',\n        'loop_carmis_limit' => '此商品最多购买一件！'\n    ],\n\n    'equipment' => [\n        'please_use_a_browser_to_open' => '请使用内置浏览器打开',\n        'does_not_support_wechat_or_qq_access' => '本站不支持 微信或QQ 内访问',\n        'please_follow_the_prompts_to_open' => '请按提示在手机 浏览器 打开',\n        'open_browser_tips' => '点击右上角···图标 or 复制网址自行打开',\n        'apple_device' => '苹果设备',\n        'android_device' => '安卓设备',\n        'click_on_the_upper_right_corner' => '点击右上角',\n        'open_the_browser' => '在 浏览器 打开',\n        'what_do_you_need_today' => '今天需要一点什么？',\n        'self_promotion' => '优质的商品和卓越的客户服务代表完美的交易流程体现。',\n    ],\n\n    'page-title' => [\n        'home' => '首页',\n        'bill' => '订单确认',\n        'order-detail' => '订单详情',\n        'order-search' => '订单查询'\n    ]\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/email-test.php",
    "content": "<?php\r\n/**\r\n * The file was created by Assimon.\r\n *\r\n * @author    ZhangYiQiu<me@zhangyiqiu.net>\r\n * @copyright ZhangYiQiu<me@zhangyiqiu.net>\r\n * @link      http://zhangyiqiu.net/\r\n */\r\n\r\nreturn [\r\n    'labels' => [\r\n        'success' => '发送成功',\r\n        'to' => '收件人',\r\n        'title' => '邮件标题',\r\n        'body' => '邮件内容',\r\n    ],\r\n\r\n    'fields' => [\r\n        \r\n    ],\r\n    'options' => [\r\n    ],\r\n    'rule_messages' => [\r\n    ]\r\n];\r\n"
  },
  {
    "path": "resources/lang/zh_CN/emailtpl.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Emailtpl' => '邮件模板',\n        'emailtpl' => '邮件模板',\n    ],\n    'fields' => [\n        'tpl_name' => '邮件标题',\n        'tpl_content' => '邮件内容',\n        'tpl_token' => '邮件标识',\n    ],\n    'options' => [\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/extension.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Extensions' => '扩展',\n    ],\n    'fields' => [\n        'alias'       => '别名',\n        'description' => '描述',\n        'authors'     => '开发者',\n        'homepage'    => '主页',\n        'require'     => '依赖',\n        'require_dev' => '开发环境依赖',\n        'name'        => '包名',\n        'version'     => '版本',\n        'enable'      => '启用',\n        'config'      => '配置',\n        'imported'    => '导入',\n    ],\n    'options' => [\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/global.php",
    "content": "<?php\n\nreturn [\n    'fields' => [\n        'id'                    => 'ID',\n        'name'                  => '名称',\n        'username'              => '用户名',\n        'email'                 => '邮箱',\n        'http_path'             => 'HTTP路径',\n        'password'              => '密码',\n        'password_confirmation' => '确认密码',\n        'created_at'            => '创建时间',\n        'updated_at'            => '更新时间',\n        'permissions'           => '权限',\n        'slug'                  => '标识',\n        'user'                  => '用户',\n        'order'                 => '排序',\n        'ip'                    => 'IP',\n        'method'                => '方法',\n        'uri'                   => 'URI',\n        'roles'                 => '角色',\n        'path'                  => '路径',\n        'input'                 => '输入',\n        'type'                  => '类型',\n    ],\n    'labels' => [\n        'list'     => '列表',\n        'edit'     => '编辑',\n        'detail'   => '详细',\n        'create'   => '创建',\n        'root'     => '顶级',\n        'scaffold' => '代码生成器',\n    ],\n    'options' => [\n        //\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/goods-group.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'GoodsGroup' => '分类',\n        'goods-group' => '分类',\n    ],\n    'fields' => [\n        'gp_name' => '分类名称',\n        'is_open' => '是否启用',\n        'ord' => '排序权重 越大越靠前',\n    ],\n    'options' => [\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/goods.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Goods' => '商品',\n        'goods' => '商品',\n    ],\n    'fields' => [\n        'actual_price' => '实际售价',\n        'group_id' => '所属分类',\n        'api_hook' => '回调事件',\n        'buy_prompt' => '购买提示',\n        'description' => '商品描述',\n        'gd_name' => '商品名称',\n        'gd_description' => '商品描述',\n        'gd_keywords' => '商品关键字',\n        'in_stock' => '库存',\n        'ord' => '排序权重',\n        'other_ipu_cnf' => '其他输入框配置',\n        'picture' => '商品图片',\n        'retail_price' => '零售价',\n        'sales_volume' => '销量',\n        'type' => '商品类型',\n        'buy_limit_num' => '限制单次购买最大数量',\n        'wholesale_price_cnf' => '批发价配置',\n        'automatic_delivery' => '自动发货',\n        'manual_processing' => '人工处理',\n        'is_open' => '是否上架',\n        'coupon_id' => '可用优惠码'\n    ],\n    'options' => [\n    ],\n    'helps' => [\n        'retail_price' => '可以不填写，主要用于展示',\n        'picture' => '可不上传，为默认图片',\n        'in_stock' => '当商品类型为\"人工处理\"时，手动填写的库存数量才会生效。\"自动发货\"类型的商品系统会自动识别库存数量',\n        'buy_limit_num' => '防止恶意刷库存，0为不限制客户单次下单最大数量',\n        'other_ipu_cnf' => '格式为[唯一标识(英文)=输入框名字=是否必填]，例如：填写 qq_account=QQ账号=true 表示产品详情页会新增一个 [QQ账号] 输入框，客户可在其中输入 [QQ账号]，true 为必填，false 为选填。（一行一个）',\n        'wholesale_price_cnf' => '例如：填写 5=3 表示客户购买 5 件或以上时，每件价格为 3 元。一行一个',\n\n    ]\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/hyper.php",
    "content": "<?php\n\nreturn [\n\n    # Hyper Theme\n\n    'notice_announcement' => '公告',\n    'error_back_btn'      => '返回',\n    'error_error'         => '错误',\n    'order_search'        => '查询订单',\n    'global_currency'     => '¥',\n\n    # home.blade.php\n\n    'home_title'              => '主页',\n    'home_search_box'         => '输入关键词搜索...',\n    'home_product_name'       => '商品名称',\n    'home_product_class'      => '类型',\n    'home_in_stock'           => '库存',\n    'home_price'              => '价格',\n    'home_place_an_order'     => '操作',\n    'home_discount'           => '折扣',\n    'home_automatic_delivery' => '自动发货',\n    'home_charge'             => '人工发货',\n    'home_buy'                => '购买',\n    'home_out_of_stock'       => '缺货',\n    'home_whole'              => '全部',\n    'home_tip'                =>'提示',\n    'home_sell_out_tip'       =>'商品缺货',\n\n    # buy.blade.php\n    'buy_title'                 => '产品详细信息',\n    'buy_automatic_delivery'    => '自动发货',\n    'buy_charge'                => '人工发货',\n    'buy_purchase'              => '购买',\n    'buy_the_above'             => '件起',\n    'buy_each'                  => '元/件',\n    'buy_price'                 => '价格',\n    'buy_email'                 => '电子邮箱',\n    'buy_input_account'         => '接收卡密或通知',\n    'buy_purchase_quantity'     => '购买数量',\n    'buy_in_stock'              => '库存',\n    'buy_purchase_restrictions' => '限购',\n    'buy_search_password'       => '查询密码',\n    'buy_input_search_password' => '查询订单密码',\n    'buy_promo_code'            => '优惠码',\n    'buy_input_promo_code'      => '您有优惠码吗？',\n    'buy_choose_payment_method' => '请选择支付方式',\n    'buy_behavior_verification' => '行为验证',\n    'buy_verify_code'           => '验证码',\n    'buy_payment_method'        => '支付方式',\n    'buy_order_now'             => '提交订单',\n    'buy_product_desciption'    => '商品详情',\n    'buy_warning'               => '警告！',\n    'buy_purchase_tips'         => '提示',\n    'buy_empty_mailbox'         => '邮箱不能为空！',\n    'buy_zero_quantity'         => '购买数量不能为 0！',\n    'buy_exceeds_stock'         => '数量不允许大于库存！',\n    'buy_exceeds_limit'         => '已超过限购数量！',\n    'buy_empty_query_password'  => '查询密码不能为空！',\n    'buy_empty_payment_method'  => '未选择支付方式！',\n    'buy_empty_captcha'         => '验证码不能为空！',\n    'buy_correct_verification'  => '请正确完成行为验证！',\n\n    # bill.blade.php\n\n    'bill_title'             => '确认订单',\n    'bill_order_number'      => '订单号',\n    'bill_product_name'      => '订单名称',\n    'bill_commodity_price'   => '商品单价',\n    'bill_purchase_quantity' => '购买数量',\n    'bill_promo_code'        => '优惠码',\n    'bill_discounted_price'  => '优惠金额',\n    'bill_actual_payment'    => '商品总价',\n    'bill_email'             => '邮箱',\n    'bill_order_information' => '订单资料',\n    'bill_payment_method'    => '支付方式',\n    'bill_pay_immediately'   => '立即支付',\n\n    # orderinfo.blade.php\n\n    'orderinfo_title'              => '订单详情',\n    'orderinfo_order_title'        => '订单名称',\n    'orderinfo_number_of_orders'   => '下单数量',\n    'orderinfo_order_time'         => '下单时间',\n    'orderinfo_email'              => '邮箱',\n    'orderinfo_order_class'        => '订单类型',\n    'orderinfo_automatic_delivery' => '自动发货',\n    'orderinfo_charge'             => '人工发货',\n    'orderinfo_total_order_price'  => '订单总价',\n    'orderinfo_order_status'       => '订单状态',\n    'orderinfo_status_expired'     => '已过期',\n    'orderinfo_status_wait_pay'    => '待支付',\n    'orderinfo_status_pending'     => '待处理',\n    'orderinfo_status_processed'   => '已处理',\n    'orderinfo_status_completed'   => '已完成',\n    'orderinfo_status_failed'      => '已失败',\n    'orderinfo_status_abnormal'    => '状态异常',\n    'orderinfo_payment_method'     => '支付方式',\n    'orderinfo_carmi'              => '卡密',\n    'orderinfo_copy_carmi'         => '复制卡密',\n    'orderinfo_tips'               => '提示',\n    'orderinfo_copy_success'       => '复制成功',\n    'orderinfo_copy_error'         => '复制失败',\n    'orderinfo_order_information'  => '没有找到订单信息',\n\n    # qrpay.blade.php\n\n    'qrpay_title'                 => '扫码支付',\n    'qrpay_order_expiration_date' => '订单有效期',\n    'qrpay_expiration_date'       => '分钟',\n    'qrpay_actual_payment'        => '商品总价',\n    'qrpay_open_app_to_pay'       => '打开app支付',\n    'qrpay_notice'                => '通知',\n    'payment_successful'          => '支付成功！',\n    'order_pay_timeout'           => '支付超时！',\n\n    # searchOrder.blade.php\n\n    'searchOrder_title'                  => '查询订单',\n    'searchOrder_query_tips'             => '注意：最多只能查询近5笔订单。',\n    'searchOrder_order_search_by_number' => '订单',\n    'searchOrder_order_search_by_email'  => '邮箱',\n    'searchOrder_order_search_by_ie'     => '缓存',\n    'searchOrder_order_number'           => '订单号',\n    'searchOrder_search_now'             => '立即查询',\n    'searchOrder_reset_order'            => '重置',\n    'searchOrder_email'                  => '邮箱',\n    'searchOrder_search_password'        => '查询密码',\n    'searchOrder_input_order_number'     => '请输入订单编号',\n    'searchOrder_input_email'            => '请输入邮箱',\n    'searchOrder_input_query_password'   => '请输入查询密码',\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/luna.php",
    "content": "<?php\n\nreturn [\n\n    //luna模板\n    'home_choice_cate' => '选择分类',\n    'home_choice_goods' => '选择商品',\n    'order_search_m' => '查单',\n    'goods_num' => '商品数量',\n    'goods_disc_1' => '满',\n    'goods_disc_2' => '个 单价',\n    'goods_disc_3' => '元/件',\n    'goods_surplus' => '剩余',\n    'goods_unit' => '件',\n\n    'buy_goods_msg' => '商品详情',\n    'buy_num' => '购买数量',\n    'buy_email' => '邮&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;箱',\n    'buy_email_tips' => '填写你的邮箱',\n    'buy_disc' => '优&nbsp;&nbsp;惠&nbsp;&nbsp;码',\n    'buy_disc_tips' => '填写你的优惠码',\n    'buy_pass' => '查询密码',\n    'buy_pass_tips' => '请填写订单的查询密码',\n    'buy_code' => '验&nbsp;&nbsp;证&nbsp;&nbsp;码',\n    'buy_code_tips' => '请输入验证码',\n    'buy_loading_verification' => '正在加载验证码...',\n    'buy_order_m' => '手机下单',\n\n    'query_no_order' => '没有找到订单信息。',\n    'query_no_order_tips' => '或许可以检查核对下输入的订单号，邮箱，或者查询密码是否正确哦！！',\n\n    'order_number' => '订单编号',\n    'email' => '订单邮箱',\n    'order_status' => '订单状态',\n\n\n    'least_one' => '购买数量不能低于1件',\n    'exceeds' => '购买数量不能多于库存数量',\n    'exceeds_limit' => '购买数量不能多于限购数量',\n    'mobile_order' => '扫描二维码 手机下单'\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/menu.php",
    "content": "<?php\n\nreturn [\n    'titles' => [\n        'index'         => '主页',\n        'admin'         => '系统',\n        'users'         => '管理员',\n        'roles'         => '角色',\n        'permission'    => '权限',\n        'menu'          => '菜单',\n        'operation_log' => '操作日志',\n        'helpers'       => '开发工具',\n        'extensions'    => '扩展',\n        'scaffold'      => '代码生成器',\n        'icons'         => '图标',\n\n        'goods_manage'  => '商品管理',\n        'goods'         => '商品列表',\n        'goods_group'   => '商品分类',\n        'carmis_manage' => '卡密管理',\n        'carmis'        => '卡密列表',\n        'import_carmis' => '导入卡密',\n        'coupon_manage' => '优惠管理',\n        'coupon'        => '优惠码列表',\n        'configuration' => '配置',\n        'email_template_configuration' => '邮件模板配置',\n        'pay_configuration'  => '支付配置',\n        'order_manage' => '销售数据',\n        'order'        => '订单列表',\n        'system_setting' => '系统设置',\n        'email_test' => '邮件测试'\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/order.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Order' => '订单',\n        'order' => '订单',\n    ],\n    'fields' => [\n        'actual_price' => '实际支付价格',\n        'buy_amount' => '购买数量',\n        'buy_ip' => '购买者下单IP地址',\n        'coupon_discount_price' => '优惠码优惠价格',\n        'coupon_id' => '优惠码',\n        'email' => '下单邮箱',\n        'goods_id' => '所属商品',\n        'goods_price' => '商品单价',\n        'info' => '订单详情',\n        'order_id' => '订单ID',\n        'order_sn' => '订单号',\n        'pay_id' => '支付通道',\n        'status' => '订单状态',\n        'search_pwd' => '查询密码',\n        'title' => '订单名称',\n        'total_price' => '订单总价',\n        'trade_no' => '第三方支付订单号',\n        'type' => '订单类型',\n        'wholesale_discount_price' => '批发价优惠',\n        'status_wait_pay' => '待支付',\n        'status_pending' => '待处理',\n        'status_processing' => '处理中',\n        'status_completed' => '已完成',\n        'status_failure' => '失败',\n        'status_abnormal' => '异常',\n        'status_expired' => '已过期',\n        'order_created' => '订单创建时间',\n        'order_detail' => '订单详情',\n    ],\n    'options' => [\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/pay.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Pay' => '支付通道',\n        'pay' => '支付通道',\n    ],\n    'fields' => [\n        'merchant_id' => '商户 ID',\n        'merchant_key' => '商户 KEY',\n        'merchant_pem' => '商户密钥',\n        'pay_check' => '支付标识',\n        'pay_client' => '支付场景',\n        'pay_handleroute' => '支付处理路由',\n        'pay_method' => '支付方式',\n        'pay_name' => '支付名称',\n        'is_open' => '是否启用',\n        'method_jump' => '跳转',\n        'method_scan' => '扫码',\n        'pay_client_pc' => '电脑PC',\n        'pay_client_mobile' => '手机',\n        'pay_client_all' => '通用',\n    ],\n    'options' => [\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_CN/system-setting.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nreturn [\n    'labels' => [\n        'SystemSetting' => '系统设置',\n        'system_setting' => '系统设置',\n        'base_setting' => '基本设置',\n        'mail_setting' => '邮件服务',\n        'order_push_setting' => '订单推送配置',\n        'geetest' => '极验验证',\n    ],\n\n    'fields' => [\n        'title' => '网站标题',\n        'text_logo' => '文字LOGO',\n        'img_logo' => '图片LOGO',\n        'keywords' => '网站关键词',\n        'description' => '网站描述',\n        'notice' => '站点公告',\n        'footer' => '页脚自定义代码',\n        'manage_email' => '管理员邮箱',\n        'is_open_anti_red' => '是否开启微信/QQ防红',\n        'is_open_img_code' => '是否开启图形验证码',\n        'is_open_search_pwd' => '是否开启查询密码',\n        'is_open_google_translate' => '是否开启google翻译',\n\n        'is_open_server_jiang' => '是否开启server酱',\n        'server_jiang_token' => 'server酱通讯token',\n        'is_open_telegram_push' => '是否开启Telegram推送',\n        'telegram_userid' => 'Telegram用户id',\n        'telegram_bot_token' => 'Telegram通讯token',\n\t\t'is_open_bark_push' => '是否开启Bark推送',\n\t\t'is_open_bark_push_url' => '是否推送订单URL',\n\t\t'bark_server' => 'Bark服务器',\n\t\t'bark_token' => 'Bark通讯Token',\n\t\t'is_open_qywxbot_push' => '是否开启企业微信Bot推送',\n\t\t'qywxbot_key' => '企业微信Bot通讯Key',\n\n        'template' => '站点模板',\n        'language' => '站点语言',\n        'order_expire_time' => '订单过期时间(分钟)',\n\n        'driver' => '邮件驱动',\n        'host' => 'smtp服务器地址',\n        'port' => '端口',\n        'username' => '账号',\n        'password' => '密码',\n        'encryption' => '协议',\n        'from_address' => '发件地址',\n        'from_name' => '发件名称',\n\n        'geetest_id' => '极验id',\n        'geetest_key' => '极验key',\n        'is_open_geetest' => '是否开启极验',\n    ],\n    'options' => [\n    ],\n    'rule_messages' => [\n        'save_system_setting_success' => '系统配置保存成功！',\n        'change_reboot_php_worker' => '修改部分配置需要重启[supervisor]或php进程管理工具才会生效，例如邮件服务，server酱等。'\n    ]\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/admin.php",
    "content": "<?php\n\nreturn [\n    'scaffold' => [\n        'header'            => '代碼生成器',\n        'choose'            => '選取已有數據表',\n        'table'             => '表名',\n        'model'             => '模型',\n        'controller'        => '控製器',\n        'repository'        => '數據倉庫',\n        'add_field'         => '加入欄位',\n        'pk'                => '主鍵',\n        'soft_delete'       => '軟刪除',\n        'create_migration'  => '建立表遷移檔案',\n        'create_model'      => '建立模型',\n        'create_repository' => '建立數據倉庫',\n        'create_controller' => '建立控製器',\n        'run_migrate'       => '建立數據表',\n        'create_lang'       => '建立翻譯檔案',\n        'field'             => '欄位',\n        'translation'       => '翻譯',\n        'comment'           => '註解',\n        'default'           => '預設值',\n        'field_name'        => '欄位名',\n        'type'              => '類型',\n        'nullable'          => '允許null',\n        'key'               => '索引',\n        'translate_title'   => '翻譯標題',\n        'sync_translation_with_comment' => '同步翻譯與注解',\n    ],\n    'client' => [\n        'delete_confirm'    => '確認刪除?',\n        'confirm'           => '確認',\n        'cancel'            => '取消',\n        'refresh_succeeded' => '重新整理成功 !',\n        'submit'            => '提交',\n        'close'             => '關閉',\n        'selected_options'  => '已選取:num個選項',\n        'exceed_max_item'   => '已超過最大可選數量',\n        'no_preview'        => '預覽失敗',\n\n        '500' => '系統繁忙，請稍後再試！',\n        '403' => '對不起，您沒有權限存取，請洽詢管理員。',\n        '401' => '請登入！',\n        '419' => '對不起，目前頁面已失效，請重新整理瀏覽器。',\n    ],\n    'home'                  => '首頁',\n    'online'                => '線上',\n    'login'                 => '登入',\n    'logout'                => '登出',\n    'setting'               => '設定',\n    'name'                  => '名稱',\n    'username'              => '使用者名稱',\n    'old_password'          => '舊密碼',\n    'password'              => '密碼',\n    'password_confirmation' => '確認密碼',\n    'old_password_error'    => '請輸入正確的舊密碼',\n    'remember_me'           => '記住我',\n    'user_setting'          => '用戶設定',\n    'avatar'                => '頭像',\n    'list'                  => '清單',\n    'new'                   => '新增',\n    'create'                => '建立',\n    'delete'                => '刪除',\n    'remove'                => '移除',\n    'edit'                  => '編輯',\n    'quick_edit'            => '快速編輯',\n    'continue_editing'      => '繼續編輯',\n    'continue_creating'     => '繼續建立',\n    'view'                  => '檢視',\n    'detail'                => '詳細',\n    'browse'                => '瀏覽',\n    'reset'                 => '重設',\n    'export'                => '導出',\n    'batch_delete'          => '批次刪除',\n    'save'                  => '儲存',\n    'refresh'               => '重新整理',\n    'order'                 => '排序',\n    'expand'                => '展開',\n    'collapse'              => '收起',\n    'filter'                => '過濾',\n    'search'                => '搜尋',\n    'close'                 => '關閉',\n    'show'                  => '顯示',\n    'entries'               => '條',\n    'captcha'               => '驗證碼',\n    'action'                => '操作',\n    'title'                 => '標題',\n    'description'           => '描述',\n    'back'                  => '返回',\n    'back_to_list'          => '返回清單',\n    'submit'                => '提交',\n    'menu'                  => '選單',\n    'input'                 => '輸入',\n    'succeeded'             => '成功',\n    'failed'                => '失敗',\n    'delete_confirm'        => '確認刪除?',\n    'delete_succeeded'      => '刪除成功 !',\n    'delete_failed'         => '刪除失敗 !',\n    'update_succeeded'      => '更新成功 !',\n    'update_failed'         => '更新失敗 !',\n    'save_succeeded'        => '儲存成功 !',\n    'save_failed'           => '儲存失敗 !',\n    'refresh_succeeded'     => '重新整理成功 !',\n    'login_successful'      => '登入成功 !',\n    'choose'                => '選取',\n    'choose_file'           => '選取檔案',\n    'choose_image'          => '選取圖片',\n    'more'                  => '更多',\n    'deny'                  => '無權存取',\n    'administrator'         => '管理員',\n    'roles'                 => '角色',\n    'permissions'           => '權限',\n    'slug'                  => '標識',\n    'created_at'            => '建立時間',\n    'updated_at'            => '更新時間',\n    'alert'                 => '註意',\n    'parent_id'             => '父級',\n    'icon'                  => '圖標',\n    'uri'                   => '路徑',\n    'operation_log'         => '操作日誌',\n    'parent_select_error'   => '父級選取錯誤',\n    'default'               => '預設',\n    'table'                 => '表格',\n    'no_data'               => '暫無數據',\n    'routes'                => '路由',\n    'alias'                 => '別名',\n    'route_action'          => '處理器',\n    'middleware'            => '中間件',\n    'import'                => '匯入',\n    'is_not_import'         => '未匯入',\n    'selected_options'      => '已選取:num個選項',\n    'method'                => '方法',\n    'user'                  => '用戶',\n    'pagination'            => [\n        'range' => '從 :first 到 :last ，總共 :total 條',\n    ],\n    'role'                  => '角色',\n    'permission'            => '權限',\n    'route'                 => '路由',\n    'confirm'               => '確認',\n    'cancel'                => '取消',\n    'selectall'             => '全選',\n    'http'                  => [\n        'method' => 'HTTP方法',\n        'path'   => 'HTTP路徑',\n    ],\n    'all_methods_if_empty'  => '為空預設為所有方法',\n    'all'                   => '全部',\n    'current_page'          => '目前頁',\n    'selected_rows'         => '選取的行',\n    'upload'                => '上傳',\n    'new_folder'            => '建立檔案夾',\n    'time'                  => '時間',\n    'size'                  => '大小',\n    'between_start'         => '開始',\n    'between_end'           => '結束',\n    'next_page'             => '下一頁',\n    'prev_page'             => '上一頁',\n    'next_step'             => '下一步',\n    'prev_step'             => '上一步',\n    'done'                  => '完成',\n    'listbox'               => [\n        'text_total'         => '總共 {0} 項',\n        'text_empty'         => '空清單',\n        'filtered'           => '{0} / {1}',\n        'filter_clear'       => '顯示全部',\n        'filter_placeholder' => '過濾',\n    ],\n    'responsive'      => [\n        'display_all' => '顯示全部',\n        'display'     => '欄位',\n        'focus'       => '聚焦',\n    ],\n    'uploader' => [\n        'add_new_media'          => '加入檔案',\n        'drag_file'              => '或將檔案拖到這裏',\n        'max_file_limit'         => 'The :attribute may not be greater than :max.',\n        'exceed_size'            => '檔案大小超過',\n        'interrupt'              => '上傳暫停',\n        'upload_failed'          => '上傳失敗，請重試',\n        'selected_files'         => '選取:num個檔案，共:size。',\n        'selected_has_failed'    => '已成功上傳:success個檔案，:fail個檔案上傳失敗，<a class=\"retry\"  href=\"javascript:\"\";\">重新上傳</a>失敗檔案或<a class=\"ignore\" href=\"javascript:\"\";\">忽略</a>',\n        'selected_success'       => '共:num個(:size)，已上傳:success個。',\n        'dot'                    => '，',\n        'failed_num'             => '失敗:fail個。',\n        'pause_upload'           => '暫停上傳',\n        'go_on_upload'           => '繼續上傳',\n        'start_upload'           => '開始上傳',\n        'upload_success_message' => '已成功上傳:success個檔案',\n        'go_on_add'              => '繼續加入',\n        'Q_TYPE_DENIED'          => '對不起，不允許上傳此類型檔案',\n        'Q_EXCEED_NUM_LIMIT'     => '對不起，已超過檔案上傳數量限製，最多只能上傳:num個檔案',\n        'F_EXCEED_SIZE'          => '對不起，目前選取的檔案過大',\n        'Q_EXCEED_SIZE_LIMIT'    => '對不起，已超過檔案大小限製',\n        'F_DUPLICATE'            => '檔案重復',\n        'confirm_delete_file'    => '您確定要刪除這個檔案嗎?',\n    ],\n    'import_extension_confirm'  => '確認匯入拓展？',\n    'quick_create'              => '快速建立',\n    'grid_items_selected'       => '已選取 {n} 項',\n    'nothing_updated'           => '沒有任何數據被更改',\n    'welcome_back'              => '歡迎回來，請登入您的賬戶。',\n    'documentation'             => '文檔',\n    'demo'                      => '範例',\n    'extensions'                => '擴展',\n    'version'                   => '版本',\n    'current_version'           => '目前版本',\n    'latest_version'            => '最新版本',\n    'upgrade_to_version'        => '更新至版本 :version',\n    'enable'                    => '啟用',\n    'disable'                   => '停用',\n    'uninstall'                 => '卸載',\n    'confirm_uninstall'         => '您確定要卸載目前擴展嗎？此動作將會移除擴展數據！',\n    'marketplace'               => '應用市場',\n    'theme'                     => '主題',\n    'application'               => '應用',\n    'install_from_local'        => '本地安裝',\n    'install_succeeded'         => '安裝成功',\n    'invalid_extension_package' => '安裝包異常',\n    'copied'                    => '已復製',\n    'auth_failed'               => '賬戶或密碼錯誤',\n    'validation'               => [\n        'match'     => '與 :attribute 不符。',\n        'minlength' => ':attribute 字元長度不能少於 :min。',\n        'maxlength' => ':attribute 字元長度不能超過 :max。',\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/carmis.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Carmis' => '卡密',\n        'carmis' => '卡密',\n    ],\n    'fields' => [\n        'goods_id' => '所屬商品',\n        'status' => '狀態',\n        'carmi' => '卡密內容',\n        'status_unsold' => '未售出',\n        'status_sold' => '已售出',\n        'is_loop' => '循環卡密',\n\t\t'yes'=>'是',\n        'import_carmis' => '匯入卡密',\n        'carmis_list' => '卡密清單',\n        'carmis_txt' => '卡密文字',\n        'are_you_import_sure' => '確定要匯入卡密嗎？',\n        'remove_duplication' => '是否去重',\n    ],\n    'options' => [\n    ],\n    'helps' => [\n        'carmis_list' => '一行一個，輸入鍵分隔。請勿匯入單個文字長度過大的卡密，容易導致記憶體溢出。如果卡密過大建議修改商品為人工處理'\n    ],\n    'rule_messages' => [\n        'carmis_list_and_carmis_txt_can_not_be_empty' => '請填寫需要匯入的卡密或選取需要上傳的卡密檔案',\n        'import_carmis_success' => '匯入卡密成功！'\n    ]\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/coupon.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Coupon' => '折扣碼',\n        'coupon' => '折扣碼',\n    ],\n    'fields' => [\n        'type' => '折扣類型',\n        'discount' => '折扣金額',\n        'is_use' => '是否已經使用',\n        'is_open' => '是否啟用',\n        'coupon' => '折扣碼',\n        'ret' => '剩余使用次數',\n        'type_one_time' => '一次性使用',\n        'type_repeat' => '重復使用',\n        'status_use' => '已使用',\n        'status_unused' => '未使用',\n        'goods_id' => '可用商品'\n    ],\n    'options' => [\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/dujiaoka.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nreturn [\n    'official_website' => '官網',\n    'dashboard' => '儀表盤',\n    'dashboard_description' => '每個夢想的路上，一起前行....！',\n    'join_qq_group' => '加入qq群',\n    'join_telegram_group' => '加入tg群',\n    'is_open' => '是否啟用',\n    'trashed' => '回收桶',\n    'restore' => '恢復',\n    'are_you_restore_sure' => '確定恢復嗎?',\n    'restored' => '已恢復',\n    'ord' => '數值越大，排名越靠前',\n    'status_open' => '啟用',\n    'status_close' => '停用',\n    'sales_data' => '銷售數據',\n    'order_success_rate' => '訂單成交率',\n    'order_count_number' => '總訂單數',\n    'last_seven_days' => '最近7天',\n    'last_today' => '今天',\n    'last_month' => '最近一個月',\n    'last_year' => '最近一年',\n\n    'status_pending_number' => '待處理訂單數',\n    'status_processing_number' => '處理中訂單數',\n    'status_completed_number' => '已完成訂單數',\n    'status_failure_number' => '失敗訂單數',\n    'status_abnormal_number' => '異常訂單數',\n\n    'payment_chart' => '支付數據',\n    'payment_successful_number' => '支付成功數',\n    'unpaid_number' => '未支付數',\n\n    'sales_chart' => '銷售額',\n    'popular_goods' => '受歡迎的商品',\n    'warning_title' => '請註意！！',\n    'error_title' => '出現錯誤了喲~',\n    'callback' => '返回',\n    'reset' => '重設',\n    'search_now' => '立即查詢',\n\n    'home_page' => '首頁',\n    'group_all' => '全部',\n    'order_search' => '訂單查詢',\n    'site_announcement' => '公告',\n    'price' => '價格',\n    'wholesale_discount' => '批發價',\n    'order_now' => '下單',\n    'not' => '無',\n    'close' => '關閉',\n    'discount' => '折',\n    'home_discount'  => '折扣',\n    'share_qr' => '分享此商品',\n    'by_amount' => '購買',\n    'or_the_above' => '件或以上',\n    'each' => '每個',\n    'email' => '信箱',\n    'payment_method' => '支付方式',\n    'search_password' => '訂單查詢密碼',\n    'img_verify_code' => '圖形驗證碼',\n    'coupon_code' => '折扣碼',\n    'copy_text' => '復製',\n    'search_goods_name' => '商品名稱...',\n\n    'behavior_verification' => '行為驗證',\n    'click_to_behavior_verification' => '點擊進行此處行為驗證',\n    'success_behavior_verification' => '已完成行為驗證',\n    'fail_behavior_verification' => '行為驗證失敗',\n    'please_complete_the_behavior_verification_correctly' => '請正確完成行為驗證',\n\n    'confirm_order' => '確認訂單',\n    'date_to_expired_order' => ':min分鐘內未完成支付訂單將作廢',\n    'order_information' => '訂單資料',\n    'pay_immediately' => '立即支付',\n    'amount_to_be_paid' => '需要支付金額',\n    'open_the_app_to_pay' => '打開 APP 支付',\n    'order_search_by_sn' => '訂單號查詢',\n    'order_search_by_email' => '下單信箱查詢',\n    'order_search_by_browser' => '瀏覽器查詢',\n\n    'scan_qrcode_to_pay' => 'QRcode掃碼支付',\n    'pay_order_expiration_date_prompt' => '請打開 APP 掃描 QRcode 支付！有效期:min分鐘',\n    'money_symbol' => '￥',\n    'purchase_limit' => '每單限',\n\n\n    'prompt' => [\n        'server_illegal_request' => '非法請求！',\n        'the_goods_is_not_on_the_shelves' => '該商品未上架！',\n        'wholesale_price_format_error' => '批發價設定有誤',\n        'by_amount_not_null' =>  '購買數量不能為0',\n        'inventory_shortage' => '庫存不足',\n        'please_select_mode_of_payment' => '請選取支付方式',\n        'goods_does_not_exist' => '商品不存在',\n        'search_password_can_not_be_empty' =>  '請填寫訂單查詢密碼',\n        'image_verify_code_error' =>  '圖形驗證碼錯誤',\n        'buy_amount_format_error' =>  '請正確填寫購買數量',\n        'email_format_error' =>  '請正確填寫信箱',\n        'geetest_validate_fail' => '行為驗證未通過',\n        'purchase_limit_exceeded' => '單筆購買數量超過限製',\n        'coupon_does_not_exist' => '折扣碼不存在',\n        'coupon_lack_of_available_opportunities' => '折扣碼可使用次數不足',\n        'can_not_be_empty' => '不能為空',\n        'order_does_not_exist' => '訂單不存在',\n        'order_is_expired' => '訂單已逾期，請重新下單',\n        'order_already_paid' => '訂單已經支付過了，請勿重復支付',\n        'order_status_completed' => '訂單已經處理',\n        'order_inconsistent_amounts' => '訂單金額不一致',\n        'order_carmis_insufficient_quantity_available' => '庫存可使用卡密不足，請聯系管理員核查',\n        'pay_gateway_does_not_exist' => '支付網關不存在',\n        'abnormal_payment_channel' => '支付網關異常！',\n        'payment_successful' => '支付成功！',\n        'copy_text_success' => '復製成功',\n        'copy_text_failed' => '復製失敗',\n        'search_order_browser_tips' => '最多只能查詢最近 5 筆訂單',\n        'no_related_order_found_for_cache' => '未找到相關訂單快取！',\n        'no_related_order_found' => '未找到相關訂單！',\n        'new_order_push' => '新訂單通知'\n    ],\n\n    'equipment' => [\n        'please_use_a_browser_to_open' => '請使用內建瀏覽器打開',\n        'does_not_support_wechat_or_qq_access' => '本站不支持 Wechat或QQ 內存取',\n        'please_follow_the_prompts_to_open' => '請按提示在行動電話 瀏覽器 打開',\n        'open_browser_tips' => '點擊右上角···圖標 or 復製網址自行打開',\n        'apple_device' => '蘋果設備',\n        'android_device' => '安卓設備',\n        'click_on_the_upper_right_corner' => '點擊右上角',\n        'open_the_browser' => '在 瀏覽器 打開',\n        'what_do_you_need_today' => '今天需要一點什麽？',\n        'self_promotion' => '優質的商品和卓越的客戶服務代表完美的交易流程體現。',\n    ],\n\n    'page-title' => [\n        'home' => '首頁',\n        'bill' => '訂單確認',\n        'order-detail' => '訂單詳情',\n        'order-search' => '訂單查詢'\n    ]\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/emailtpl.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Emailtpl' => '郵件模板',\n        'emailtpl' => '郵件模板',\n    ],\n    'fields' => [\n        'tpl_name' => '郵件標題',\n        'tpl_content' => '郵件內容',\n        'tpl_token' => '郵件標識',\n    ],\n    'options' => [\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/extension.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Extensions' => '擴展',\n    ],\n    'fields' => [\n        'alias'       => '別名',\n        'description' => '描述',\n        'authors'     => '開發者',\n        'homepage'    => '首頁',\n        'require'     => '依賴',\n        'require_dev' => '開發環境依賴',\n        'name'        => '包名',\n        'version'     => '版本',\n        'enable'      => '啟用',\n        'config'      => '配置',\n        'imported'    => '匯入',\n    ],\n    'options' => [\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/global.php",
    "content": "<?php\n\nreturn [\n    'fields' => [\n        'id'                    => 'ID',\n        'name'                  => '名稱',\n        'username'              => '賬戶',\n        'email'                 => '信箱',\n        'http_path'             => 'HTTP路徑',\n        'password'              => '密碼',\n        'password_confirmation' => '確認密碼',\n        'created_at'            => '建立時間',\n        'updated_at'            => '更新時間',\n        'permissions'           => '權限',\n        'slug'                  => '標識',\n        'user'                  => '用戶',\n        'order'                 => '排序',\n        'ip'                    => 'IP',\n        'method'                => '方法',\n        'uri'                   => 'URI',\n        'roles'                 => '角色',\n        'path'                  => '路徑',\n        'input'                 => '輸入',\n        'type'                  => '類型',\n    ],\n    'labels' => [\n        'list'     => '清單',\n        'edit'     => '編輯',\n        'detail'   => '詳細',\n        'create'   => '建立',\n        'root'     => '根',\n        'scaffold' => '代碼生成器',\n    ],\n    'options' => [\n        //\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/goods-group.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'GoodsGroup' => '分類',\n        'goods-group' => '分類',\n    ],\n    'fields' => [\n        'gp_name' => '分類名稱',\n        'is_open' => '是否啟用',\n        'ord' => '排序權重 越大越靠前',\n    ],\n    'options' => [\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/goods.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Goods' => '商品',\n        'goods' => '商品',\n    ],\n    'fields' => [\n        'actual_price' => '實際售價',\n        'group_id' => '所屬分類',\n        'api_hook' => '回調事件',\n        'buy_prompt' => '購買提示',\n        'description' => '商品描述',\n        'gd_name' => '商品名稱',\n        'gd_description' => '商品描述',\n        'gd_keywords' => '商品關鍵字',\n        'in_stock' => '庫存',\n        'ord' => '排序權重',\n        'other_ipu_cnf' => '其他輸入框配置',\n        'picture' => '商品圖片',\n        'retail_price' => '零售價',\n        'sales_volume' => '銷量',\n        'type' => '商品類型',\n        'buy_limit_num' => '限製單次購買最大數量',\n        'wholesale_price_cnf' => '批發價配置',\n        'automatic_delivery' => '自動發貨',\n        'manual_processing' => '人工處理',\n        'is_open' => '是否上架',\n        'coupon_id' => '可用折扣碼'\n    ],\n    'options' => [\n    ],\n    'helps' => [\n        'retail_price' => '可以不填寫，主要用於展示',\n        'picture' => '可不上傳，為預設圖片',\n        'in_stock' => '當商品類型為\"人工處理\"時，手動填寫的庫存數量才會生效。\"自動發貨\"類型的商品系統會自動識別庫存數量',\n        'buy_limit_num' => '防止惡意刷庫存，0為不限製客戶單次下單最大數量',\n        'other_ipu_cnf' => '格式為[唯一標識(英文)=輸入框名字=是否必填]，例如：填寫 line_account=Line賬戶=true 表示產品詳情頁會新增一個 [Line賬戶] 輸入框，客戶可在其中輸入 [Line賬戶]，true 為必填，false 為選填。（一行一個）',\n        'wholesale_price_cnf' => '例如：填寫 5=3 表示客戶購買 5 件或以上時，每件價格為 3 元。一行一個',\n\n    ]\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/hyper.php",
    "content": "<?php\n\nreturn [\n\n    # Hyper Theme\n\n    'notice_announcement' => '公告',\n    'error_back_btn'      => '返回',\n    'error_error'         => '錯誤',\n    'order_search'        => '查詢訂單',\n    'global_currency'     => '$',\n\n    # home.blade.php\n\n    'home_title'              => '首頁',\n    'home_search_box'         => '輸入關鍵詞搜尋...',\n    'home_product_name'       => '商品名稱',\n    'home_product_class'      => '類型',\n    'home_in_stock'           => '庫存',\n    'home_price'              => '價格',\n    'home_place_an_order'     => '操作',\n    'home_discount'           => '折扣',\n    'home_automatic_delivery' => '自動發貨',\n    'home_charge'             => '人工發貨',\n    'home_buy'                => '購買',\n    'home_out_of_stock'       => '售罄',\n    'home_whole'              => '全部',\n    'home_tip'                =>'提示',\n    'home_sell_out_tip'       =>'商品缺貨',\n\n    # buy.blade.php\n    'buy_title'                 => '產品詳細資訊',\n    'buy_automatic_delivery'    => '自動發貨',\n    'buy_charge'                => '人工發貨',\n    'buy_purchase'              => '購買',\n    'buy_the_above'             => '件起',\n    'buy_each'                  => '元/件',\n    'buy_price'                 => '價格',\n    'buy_email'                 => '電子信箱',\n    'buy_input_account'         => '接收卡密或通知',\n    'buy_purchase_quantity'     => '購買數量',\n    'buy_in_stock'              => '庫存',\n    'buy_purchase_restrictions' => '限購',\n    'buy_search_password'       => '查詢密碼',\n    'buy_input_search_password' => '查詢訂單密碼',\n    'buy_promo_code'            => '折扣碼',\n    'buy_input_promo_code'      => '您有折扣碼嗎？',\n    'buy_choose_payment_method' => '請選取支付方式',\n    'buy_behavior_verification' => '行為驗證',\n    'buy_verify_code'           => '驗證碼',\n    'buy_payment_method'        => '支付方式',\n    'buy_order_now'             => '提交訂單',\n    'buy_product_desciption'    => '商品詳情',\n    'buy_warning'               => '警告！',\n    'buy_purchase_tips'         => '提示',\n    'buy_empty_mailbox'         => '信箱不能為空！',\n    'buy_zero_quantity'         => '購買數量不能為 0！',\n    'buy_exceeds_stock'         => '數量不允許大於庫存！',\n    'buy_exceeds_limit'         => '已超過限購數量！',\n    'buy_empty_query_password'  => '查詢密碼不能為空！',\n    'buy_empty_payment_method'  => '未選取支付方式！',\n    'buy_empty_captcha'         => '驗證碼不能為空！',\n    'buy_correct_verification'  => '請正確完成行為驗證！',\n\n    # bill.blade.php\n\n    'bill_title'             => '確認訂單',\n    'bill_order_number'      => '訂單號',\n    'bill_product_name'      => '訂單名稱',\n    'bill_commodity_price'   => '商品單價',\n    'bill_purchase_quantity' => '購買數量',\n    'bill_promo_code'        => '折扣碼',\n    'bill_discounted_price'  => '折扣金額',\n    'bill_actual_payment'    => '商品總價',\n    'bill_email'             => '信箱',\n    'bill_order_information' => '訂單資料',\n    'bill_payment_method'    => '支付方式',\n    'bill_pay_immediately'   => '立即支付',\n\n    # orderinfo.blade.php\n\n    'orderinfo_title'              => '訂單詳情',\n    'orderinfo_order_title'        => '訂單名稱',\n    'orderinfo_number_of_orders'   => '下單數量',\n    'orderinfo_order_time'         => '下單時間',\n    'orderinfo_email'              => '信箱',\n    'orderinfo_order_class'        => '訂單類型',\n    'orderinfo_automatic_delivery' => '自動發貨',\n    'orderinfo_charge'             => '人工發貨',\n    'orderinfo_total_order_price'  => '訂單總價',\n    'orderinfo_order_status'       => '訂單狀態',\n    'orderinfo_status_expired'     => '已逾期',\n    'orderinfo_status_wait_pay'    => '待支付',\n    'orderinfo_status_pending'     => '待處理',\n    'orderinfo_status_processed'   => '已處理',\n    'orderinfo_status_completed'   => '已完成',\n    'orderinfo_status_failed'      => '已失敗',\n    'orderinfo_status_abnormal'    => '狀態異常',\n    'orderinfo_payment_method'     => '支付方式',\n    'orderinfo_carmi'              => '卡密',\n    'orderinfo_copy_carmi'         => '復製卡密',\n    'orderinfo_tips'               => '提示',\n    'orderinfo_copy_success'       => '復製成功',\n    'orderinfo_copy_error'         => '復製失敗',\n    'orderinfo_order_information'  => '沒有找到訂單資訊',\n\n    # qrpay.blade.php\n\n    'qrpay_title'                 => '掃碼支付',\n    'qrpay_order_expiration_date' => '訂單有效期',\n    'qrpay_expiration_date'       => '分鐘',\n    'qrpay_actual_payment'        => '商品總價',\n    'qrpay_open_app_to_pay'       => '打開app支付',\n    'qrpay_notice'                => '通知',\n    'payment_successful'          => '支付成功！',\n    'order_pay_timeout'           => '支付逾時！',\n\n    # searchOrder.blade.php\n\n    'searchOrder_title'                  => '查詢訂單',\n    'searchOrder_query_tips'             => '註意：最多只能查詢近5筆訂單。',\n    'searchOrder_order_search_by_number' => '訂單',\n    'searchOrder_order_search_by_email'  => '信箱',\n    'searchOrder_order_search_by_ie'     => '緩存',\n    'searchOrder_order_number'           => '訂單號',\n    'searchOrder_search_now'             => '立即查詢',\n    'searchOrder_reset_order'            => '重設',\n    'searchOrder_email'                  => '信箱',\n    'searchOrder_search_password'        => '查詢密碼',\n    'searchOrder_input_order_number'     => '請輸入訂單編號',\n    'searchOrder_input_email'            => '請輸入信箱',\n    'searchOrder_input_query_password'   => '請輸入查詢密碼',\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/luna.php",
    "content": "<?php\n\nreturn [\n\n    //luna模板\n    'home_choice_cate' => '選取分類',\n    'home_choice_goods' => '選取商品',\n    'order_search_m' => '查單',\n    'goods_num' => '商品數量',\n    'goods_disc_1' => '滿',\n    'goods_disc_2' => '個 單價',\n    'goods_disc_3' => '元/件',\n    'goods_surplus' => '剩余',\n    'goods_unit' => '件',\n\n    'buy_goods_msg' => '商品詳情',\n    'buy_num' => '購買數量',\n    'buy_email' => '信&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;箱',\n    'buy_email_tips' => '填寫你的信箱',\n    'buy_disc' => '折&nbsp;&nbsp;扣&nbsp;&nbsp;碼',\n    'buy_disc_tips' => '填寫你的折扣碼',\n    'buy_pass' => '查詢密碼',\n    'buy_pass_tips' => '請填寫訂單的查詢密碼',\n    'buy_code' => '驗&nbsp;&nbsp;證&nbsp;&nbsp;碼',\n    'buy_code_tips' => '請輸入驗證碼',\n    'buy_loading_verification' => '正在加載驗證碼...',\n    'buy_order_m' => '行動電話下單',\n\n    'query_no_order' => '沒有找到訂單資訊。',\n    'query_no_order_tips' => '或許可以檢查核實下輸入的訂單號，信箱，或者查詢密碼是否正確哦！！',\n\n    'order_number' => '訂單編號',\n    'email' => '訂單信箱',\n    'order_status' => '訂單狀態',\n\n\n    'least_one' => '購買數量不能低於1件',\n    'exceeds' => '購買數量不能多於庫存數量',\n    'exceeds_limit' => '購買數量不能多於限購數量',\n    'mobile_order' => '掃描QRcode 行動電話下單'\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/menu.php",
    "content": "<?php\n\nreturn [\n    'titles' => [\n        'index'         => '首頁',\n        'admin'         => '系統',\n        'users'         => '管理員',\n        'roles'         => '角色',\n        'permission'    => '權限',\n        'menu'          => '選單',\n        'operation_log' => '動作日誌',\n        'helpers'       => '開發工具',\n        'extensions'    => '擴展',\n        'scaffold'      => '代碼生成器',\n        'icons'         => '圖標',\n\n        'goods_manage'  => '商品管理',\n        'goods'         => '商品清單',\n        'goods_group'   => '商品分類',\n        'carmis_manage' => '卡密管理',\n        'carmis'        => '卡密清單',\n        'import_carmis' => '匯入卡密',\n        'coupon_manage' => '折扣管理',\n        'coupon'        => '折扣碼清單',\n        'configuration' => '配置',\n        'email_template_configuration' => '信箱模板配置',\n        'pay_configuration'  => '支付配置',\n        'order_manage' => '銷售數據',\n        'order'        => '訂單清單',\n        'system_setting' => '系統設定'\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/order.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Order' => '訂單',\n        'order' => '訂單',\n    ],\n    'fields' => [\n        'actual_price' => '實際支付價格',\n        'buy_amount' => '購買數量',\n        'buy_ip' => '購買者下單IP地址',\n        'coupon_discount_price' => '折扣碼折扣價格',\n        'coupon_id' => '折扣碼',\n        'email' => '下單信箱',\n        'goods_id' => '所屬商品',\n        'goods_price' => '商品單價',\n        'info' => '訂單詳情',\n        'order_sn' => '訂單號',\n        'pay_id' => '支付通道',\n        'status' => '訂單狀態',\n        'search_pwd' => '查詢密碼',\n        'title' => '訂單名稱',\n        'total_price' => '訂單總價',\n        'trade_no' => '第三方支付訂單號',\n        'type' => '訂單類型',\n        'wholesale_discount_price' => '批發價折扣',\n        'status_wait_pay' => '待支付',\n        'status_pending' => '待處理',\n        'status_processing' => '處理中',\n        'status_completed' => '已完成',\n        'status_failure' => '失敗',\n        'status_abnormal' => '異常',\n        'status_expired' => '已逾期',\n        'order_created' => '訂單建立時間',\n        'order_detail' => '訂單詳情',\n    ],\n    'options' => [\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/pay.php",
    "content": "<?php\n\nreturn [\n    'labels' => [\n        'Pay' => '支付通道',\n        'pay' => '支付通道',\n    ],\n    'fields' => [\n        'merchant_id' => '商戶 ID',\n        'merchant_key' => '商戶 KEY',\n        'merchant_pem' => '商戶金鑰',\n        'pay_check' => '支付標識',\n        'pay_client' => '支付場景',\n        'pay_handleroute' => '支付處理路由',\n        'pay_method' => '支付方式',\n        'pay_name' => '支付名稱',\n        'is_open' => '是否啟用',\n        'method_jump' => '跳躍',\n        'method_scan' => '掃碼',\n        'pay_client_pc' => '計算機PC',\n        'pay_client_mobile' => '行動電話',\n        'pay_client_all' => '通用',\n    ],\n    'options' => [\n    ],\n];\n"
  },
  {
    "path": "resources/lang/zh_TW/system-setting.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\n\nreturn [\n    'labels' => [\n        'SystemSetting' => '系統設定',\n        'system_setting' => '系統設定',\n        'base_setting' => '基本設定',\n        'mail_setting' => '信箱服務',\n        'order_push_setting' => '訂單推送配置',\n        'geetest' => '極驗驗證',\n    ],\n\n    'fields' => [\n        'title' => '網站標題',\n        'text_logo' => '文字LOGO',\n        'img_logo' => '圖片LOGO',\n        'keywords' => '網站關鍵詞',\n        'description' => '網站描述',\n        'notice' => '站點公告',\n        'footer' => '頁尾自訂代碼',\n        'manage_email' => '管理員信箱',\n        'is_open_anti_red' => '是否開啟Wechat/QQ防紅',\n        'is_open_img_code' => '是否開啟圖形驗證碼',\n        'is_open_search_pwd' => '是否開啟查詢密碼',\n        'is_open_server_jiang' => '是否開啟server醬',\n        'server_jiang_token' => 'server醬通訊token',\n        'is_open_telegram_push' => '是否開啟Telegram推送',\n        'telegram_userid' => 'Telegram用戶id',\n        'telegram_bot_token' => 'Telegram通訊token',\n        'template' => '站點模板',\n        'language' => '站點語言',\n        'order_expire_time' => '訂單逾期時間(分鐘)',\n\n        'driver' => '信箱驅動',\n        'host' => 'smtp伺服器地址',\n        'port' => '通訊埠',\n        'username' => '賬戶',\n        'password' => '密碼',\n        'encryption' => '協議',\n        'from_address' => '發件地址',\n        'from_name' => '發件名稱',\n\n        'geetest_id' => '極驗id',\n        'geetest_key' => '極驗key',\n        'is_open_geetest' => '是否開啟極驗',\n    ],\n    'options' => [\n    ],\n    'rule_messages' => [\n        'save_system_setting_success' => '系統配置套用成功！',\n        'change_reboot_php_worker' => '修改部分配置需要重新啓動[supervisor]或php進程管理工具才會生效，例如信箱服務，server醬等。'\n    ]\n];\n"
  },
  {
    "path": "resources/sass/app.scss",
    "content": "//\n"
  },
  {
    "path": "resources/views/admin/dashboard/title.blade.php",
    "content": "<style>\n    .dashboard-title .links {\n        text-align: center;\n        margin-bottom: 2.5rem;\n    }\n    .dashboard-title .links > a {\n        padding: 0 25px;\n        font-size: 12px;\n        font-weight: 600;\n        letter-spacing: .1rem;\n        text-decoration: none;\n        text-transform: uppercase;\n        color: #fff;\n    }\n    .dashboard-title h1 {\n        font-weight: 200;\n        font-size: 2.5rem;\n    }\n    .dashboard-title .avatar {\n        background: #fff;\n        border: 2px solid #fff;\n        width: 70px;\n        height: 70px;\n    }\n</style>\n\n<div class=\"dashboard-title card bg-primary\">\n    <div class=\"card-body\">\n        <div class=\"text-center \">\n            <img class=\"avatar img-circle shadow mt-1\" src=\"/vendor/dujiaoka-admin/images/logo.jpg\">\n\n            <div class=\"text-center mb-1\">\n                <h1 class=\"mb-3 mt-2 text-white\">独角数卡 V{{ config('dujiaoka.dujiaoka_version', '2.0.0') }}</h1>\n                <div class=\"links\">\n                    <a href=\"https://github.com/assimon/dujiaoka\" target=\"_blank\">Github</a>\n                    <a href=\"//shang.qq.com/wpa/qunwpa?idkey=37b6b06f7c941dae20dcd5784088905d6461064d7f33478692f0c4215546cee0\" id=\"qq-group-link\" target=\"_blank\">\n                        <img border=\"0\" src=\"//pub.idqqimg.com/wpa/images/group.png\" alt=\"\" title=\"{{ __('dujiaoka.join_qq_group') }}\">\n                    </a>\n                    <a href=\"http://t.me/dujiaoka\" id=\"telegram-group-link\" target=\"_blank\">{{ __('dujiaoka.join_telegram_group') }}</a>\n                    <a href=\"https://dujiaoka.com\" id=\"demo-link\" target=\"_blank\">{{ __('dujiaoka.official_website') }}</a>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n"
  },
  {
    "path": "resources/views/common/install.blade.php",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <title>独角数卡安装程序</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1\">\n    <meta name=\"renderer\" content=\"webkit\">\n\n    <style>\n        body {\n            background: #fff;\n            margin: 0;\n            padding: 0;\n            line-height: 1.5;\n        }\n        body, input, button {\n            font-family: 'Open Sans', sans-serif;\n            font-size: 16px;\n            color: #7E96B3;\n        }\n        .container {\n            max-width: 515px;\n            margin: 0 auto;\n            padding: 20px;\n            text-align: center;\n        }\n        a {\n            color: #18bc9c;\n            text-decoration: none;\n        }\n        a:hover {\n            text-decoration: underline;\n        }\n\n        h1 {\n            margin-top:0;\n            margin-bottom: 10px;\n        }\n        h2 {\n            font-size: 28px;\n            font-weight: normal;\n            color: #3C5675;\n            margin-bottom: 0;\n        }\n\n        form {\n            margin-top: 40px;\n        }\n        .form-group {\n            margin-bottom: 20px;\n        }\n        .form-group .form-field:first-child input {\n            border-top-left-radius: 4px;\n            border-top-right-radius: 4px;\n        }\n        .form-group .form-field:last-child input {\n            border-bottom-left-radius: 4px;\n            border-bottom-right-radius: 4px;\n        }\n        .form-field input {\n            background: #EDF2F7;\n            margin: 0 0 1px;\n            border: 2px solid transparent;\n            transition: background 0.2s, border-color 0.2s, color 0.2s;\n            width: 100%;\n            padding: 15px 15px 15px 180px;\n            box-sizing: border-box;\n        }\n        .form-field input:focus {\n            border-color: #18bc9c;\n            background: #fff;\n            color: #444;\n            outline: none;\n        }\n        .form-field label {\n            float: left;\n            width: 160px;\n            text-align: right;\n            margin-right: -160px;\n            position: relative;\n            margin-top: 18px;\n            font-size: 14px;\n            pointer-events: none;\n            opacity: 0.7;\n        }\n        button,.btn {\n            background: #3C5675;\n            color: #fff;\n            border: 0;\n            font-weight: bold;\n            border-radius: 4px;\n            cursor: pointer;\n            padding: 15px 30px;\n            -webkit-appearance: none;\n        }\n        button[disabled] {\n            opacity: 0.5;\n        }\n\n        #error,.error,#success,.success {\n            background: #D83E3E;\n            color: #fff;\n            padding: 15px 20px;\n            border-radius: 4px;\n            margin-bottom: 20px;\n        }\n        #success {\n            background:#3C5675;\n        }\n\n        #error a, .error a {\n            color:white;\n            text-decoration: underline;\n        }\n    </style>\n</head>\n\n<body>\n<div class=\"container\">\n    <h1>\n        <svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"200px\" height=\"57px\" viewBox=\"0 0 200 57\" enable-background=\"new 0 0 200 57\" xml:space=\"preserve\">\n            <image  width=\"200\" height=\"57\" x=\"0\" y=\"0\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAAAAADRE4smAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZ\ncwAACxIAAAsSAdLdfvwAAAAHdElNRQflBggSLh4uA76PAAB6kklEQVR42u19B4BkVbF23Xxvp+mJ\nm8lZghgIZjArZsX4o5gVRVFQ3zOLvqdiQMWsz6yIPhX1KaCICUSJIohkFjZO6ul4862/6vQG3O7b\nabp7ena62MTuzO17zqlTub4CHNKKJljqFxjS0tKQAVY4DRlghdOQAVY4DRlghdOQAVY4DRlghdOQ\nAVY4DRlghdOQAVY4DRlghdOQAVY4DRlghdOQAVY4DRlghdOQAVY4DRlghdOQAVY4DRlghdOQAVY4\nDRlghdOQAVY4DRlghdOQAVY4DRlghdOQAVY4DRlghdOQAVY4DRlghdOQAVY4DRlghdOQAfZ6iuiH\nU3RD+mMYBHv+65AB9nKKfNev/iEM/LD234cMsNdT4DqOXaE/REQ1LDBkgL2con/7v8Dd89+HDLCX\nUyjufRi6rutHe/IDDhlgBRBZAcICxNDza85/yAB7O3nC+g+jIgn/wKtxAoYMsLcTHbl9/19/eeEf\nbp71o73BCwiJiyNHeDYh2TShH9CqgnLutit/dtFlt8y5O4Vc4GNEiy9gWHTq2D57JZG2F7fdK/vo\nYlRy0L77zCev12UJIAmw/2suvAc9dOYRyTGI3FJEvuGyYwAUTO3P5nIhlvmA7/nem08+MCOrAKAa\nmjx67Bk/3YJBHtEp0tfhAp+9X0f57X0kzr/K6v6cR5uz6RPHgs77otAvyakRgKNesWWBNi2/Yzsq\nlWjZMUBge+jNe7zIWQx///mH78dLlPinIhYqKZA84X2/5C+lr9pOdm9Em+Is9Xv3miJx/HSmYWRX\nAl7wFY8ByIAsK7pG22KAIANOu5G/rBQV8jZvyrJjALZlIrTv9bah/eE1coKP3LSU6vJA1hIWL1fS\nj/lkGV0fK2wF2T4Gi//kwSaS/NU/+E5EKs+/+AmgTNK911WZZQBpANBTlqpoFjzuDtzMXxnYJAyW\nHQNgGEQhxzQXPjwGGRlMQ9cUEgCKkUxZmiIrimokTFq0ufacOZzBUom+pbj32wABMwB5/NOs9/yv\nH62yUAQ1zbdBZiNAMkzxV/KENvV1zOXpSniuW1x2DOBWyMJBe/acQ0ABY9ySZXH1NV6n+JNksk4w\nM2z2vLeSo6+1V4AGQCEAQtJ6Lua/cACQvqerTyeum6amabJQAYmMpVgZ4oF17yGOyZGILC0/FVDk\nH/6XNuhk9WU0WpdEl15RZJ21gGqlsvR7Mkv8MKrIKXj4tZvQ2U5MsNerAKEAAs/Bez9+OFgjMELX\nQLb0qmZUk0mykHmHdNB1uiGrXjuLbEMXlx8D4PY83vLyJCiKafCtZ+tfJmYnNSDJVRknJALd/5Si\nGPCOzeT5eLmlfuv+UOBW3noU3XSJpCOoLAoVMFMGXZGqmSyEgqQxJzzt71jylhMDuGS4Irkw9PMP\nR0EaWqZjfk7SjgUAMXwuXOxrDA75Tsg53grHQ+hHBSMbN73DaHlfHuk6aGNl2TCAV8GSjaUcBueN\nqiOtn78C2nvIHfSjaVaT2+ylXke3iMxar2STQ+T4Xt7DWSw6t785AdlW9yUBZ+L2MpaWDQOQICd7\nfgu6z2PpPia1ulBN0uG5G9F2cUsQbF3qRXSPiuzG0d2fwygnJMDNr5HA0lreFxOM8zFnLx8VgHT+\n9hwuvDwLiYRqyC2LgFEyCo65nDzesLptewn5AZt95MrPuRhg/tcvMOGg0V3xnhYoCyP5cH4ZMQB5\ncpsxOBPWWJA0oGUGSJDtk4XMV4ohiUy0S0u9jK4RJztKBTdPsjH6zSmjLPxTky0LAFBVHV6Cob18\nGMAnERC+PTEBMM6CvdWFyqs4JqDCu+5GnN2Ke01EKCIJ4BYCDD3vd0+h6yAra1eD3LpxZMKECVcv\nq1CwWwrPJ6MuqYCR0VpeaAJSY6CnVelJfyM3Yvte4waQQPQC9Ofxe4eDZMoJ4nEgT19pdV80ukfa\nC5eRDcCB689myI1NqED+fuvGjllNFenwoIvR85d6Gd2kQoT3XXSQAakkCwBZ10Bu/WIoHELT55ZR\nKHgeZ5NJmGp5hXvSalA+HZAayQdBsAzlQMT5jwrdglIoXECcnsf5zxzd8XZAxiBx8cFg2TBA6OKp\n6dZtvxoah8kxeNksOcwlLHocFVpu5Ip4doR+maPbLhY+tA5A73Q/ZBUkDR6xfFRABS8EsFpWcbU0\nyULgwGvxNto7b/mJAHZfAqeUcx2PK/uK97/FAE2D1mX+HkQqwNAsmF02DOBvO1yWEq27OXWWPGIq\nZvJDWCo5uPyUAGmAyGcTpuwFTnjDOw1JHx9XF7EdaV2GMfi/ZcMA0ZtBzbRu5NY5f2KelAXp13kF\nkqLLzxp0OepfqZDfj7e+jlyhbJYWZXZ+IzglpKvvXDYMcEtKUtqIc9UQaQ+Vvn1fgOO3IPlPS72e\ndklUdLs+BtEljyO/jwNcI1N6697QnkTOkWHA6IuWDQO8HZIJGFM7twKnMmCmuGhMWn1pkFvq5bRN\npLMKZAf4lz9BzxqgSjqn9zW9YyVADGQmIPnsZcMAayAlpWFt5xKAlEDVYtLBOA+XnQ0gItnRhScp\nxMSGTLqQ0/qLMYm4gsaEpww+AzgBLgR4QbwoU9MKuYe0Jxbvi8GXvJGpoMmqpLwih2Xypm1ncGvF\nfNsNoggroqEv8rjY68ITFnHge5LMYcPECYPPABEXPdgnxa1DyEAtqRoq/UkbTVX/VrJiGUYX+u/B\nf6InF3BwywNEOx8ffrDDXHF//FCQRztXgTXE10Y/ZvAZgLyfAK+MX8eEBSmN+VlPKLIMaiJlNtwl\n+lpSotL4F7CCRWdwOUA0dXLs2uHelrkvPhz0SZEI65IAAL4x0uHLgAFo+YUzYxcyRs4dqKuUJKlG\nFTQhARRdi+eBpCl+BeN1QWGpl9aAosDl7pdoCyupzR/ZDyQJ1NE2SuGa3n+Fk+rHDTwDiAaw+X1T\ncQuRyCSeIKlucHCTzDxZFMHLsQ6jSZagTuyhp80H34/2wLaMBdwG6ZXn6Y93n7sfLci0WNsluscA\nMicD/t/AM0ARKx5ubRDz3j9BuzL2pu/c6BRv+sGLaJPkpNEgRk7nb6QSpskFFAddOrgRQbr+Loer\nnDveNwrj6zkEJqVGFxEI2fPiKLQVivaVgWeACrp++Ov4hYxxjO/F15dIUfglrNzy6HFRFxW7U7LC\n5WSSMsKO4fhnlnp58et2XBIC8ze9ch8wJ6pxm5TM6q5bZLHrlP7XwDMAC8Pye834gMdqWPVdtuUW\nuAcsDPBT+4HWyApUSJSaSbEFBhinLPXqYsmvBME1rxTrVsh1UdlvNzpO/tUSmROSNDb42cCQu/yf\nHq/7aIf+x/WjXaVeEf70ISACZNwr3Dx3cNTvycxwSqRqAgfDpcsSc0Ovi1GZQ1Rk/kUhepe/JNH6\njVfIsFHSCfKCSEzoXDNn0CWP9YZBGErK8/2BZ4AA/ajwkPiVyOY5t7HC3EnhHN79dNoOlbthksnm\nG7fuQn+Bu0amPSyWljBHwB4fcYEbFEmc2eh9/wntmfyy6I3XyBNKg7WKOCd5+oHcHx7HAKRQNDh/\n8CVAgF5wx1gDI3Dd/RjZu205D3OIH2LNoK6mu9A8Vm5I7yL9wXLGCTDyOn/TxZLnRujM0R8qOcx9\n+yFrlCqwQ+tkZpKGMSK8XLowb916ngXxwWKF+0fHtnjLgAGc8M9V9q5PT8GgHO7GwCyWMZjHy/aB\n1XQHLGjKACOmAqfdV0IXy3nE/BIulNN9gV8gHWB/5dhRQxydnm319EWPvPgW0EbNA157d3AJ6YP4\nigENjBF4N84NPAPQduBFDXSZ8kVWmQ/05soe2vdtfVYCjITWgtGUkAx4yNUO3j+L7twSZomdEP2t\nOTL+5r/+IEkHWdaTyXYkgMVmUjJDXg4k37Upwo1HZ80GBUOqDukDy4Ez8AxAYhE/KsfHP5J3i5uz\n6+tdDEr8f9ufb5AwHG8aO1eAdhoyX95O31QOcMlUQIRhgdhvU+Gz+7DFe1i1y9kca5kBJElNjuiQ\nhf0+O0vPmzuV/m4iXgBKpgnfwenBtwEiko2vVOM5eX3oMeLNLg6wp0MM5sqeh+enrakWqkhHiQlk\nE978L1zwuPR0iaiCUTHCmz41qidMsFJgyWTDplsXARl2BDgddhG6Fa9Q+jSMySQ346uo5ZEnROXK\n4KOEsVf05Aaa/CFYCUl1V3Z/h8c3ibNpvzwCzKYbpygqSKqUhGdeieVZb+lCw+UQbz1rH1Cqa9U4\nVEe/WU0XsHMdIJHgePI3OXAaYf4qWA8jMlfCxnPMfX6E7uAzAHHAfiDXWrMamUmSBC8kqe3Xkdwk\nB/CuF4KlyGzoq01jqAnY/1LMeTjD4GK+03NjgD4gZKwbtEsk/V0yXO9+pdFGzZvBBS6SMHJVDnzp\nKYCTflapwoU596+O+z6Tv4dkgwKvw8oCLoPewCByJ+owgMTZTEWVXk+HX6/Ezw0qLhbPTYORBD0D\nTUlKaPAB3Bqhx+pkuufL4k8JChUsVJue8LaXAEwm2kC+kKykEBZmko+fJMUTL0cvLxAS7fCx8dbv\nlMoG4AQc4+TyODv4NgAG4bxaJ6KnsNujasp/kdkX1qvwctGexcqF1lqQkzDSdGPlMbIGTrJxgZtu\npnF779fFgxyiIsn+OYx++SJQTKudIv80azdNRLqsLB3/036HuI2bhkiVuP8Z/30mbADZVGHdzbRF\nM7gMWsPC8G6Qa40APn/GBvohg6LWgUHHWQ8LDjp3HKiMQLqVLGqGxOPUlZjDfIBzfQCV8suM1VYm\nFvjDs81q/kJtPdivcLib7kXCsFQwXnc9lhdor0ol8ondi2E03nocg0SamOArWAj8yF8OSKHRn6FO\nkR8ZAEIIXINs9NSKAF/EhkIH8y+T5dY6qOgCprQPs0Ge6z2MQMTJK4brrfzk0cAhK9AnR6CNTh+Z\nBIaSJB8Gpl57LT2KlBcpPRJd3r+mRhoETvYHQ03C+4nR70P6ZeAZgMT7N+un90Ttp7wVRQw9rP2+\noByWCjjr4idSIDXngGxak1QLtFfNYd7P97xOgN66OB9g6ftPI0/UYpuWhVDr2d6UuBOSbK563W3o\nz9IOuK7ve8T25WM0iMcJMERl9clugPOMuDP4IFFCo8n1QtpkAYI64rKb4NYxAiq0KZirYH4ef/fQ\nFjaUPoLc7rUZOPHvGPY+Juw5czkMvnwYiCpvzvrpSa2Nih9T1Ldqk+fejM40I2NXdyCP+VcpIr4d\nLzp0a2w+KNEip7GwHOIA5dOhTlJDIg1A+7UO2XW3a20Ah9hi3uY0n1vEm57XPCBkcaGYoZKOXPeD\n/iQFZz9F4lhmsJMEO3W6JBntmIG6BPt+PC+Gwtm0CZEfeiUHw0+Mw6ganwORuBTqD1giRbfJJfU5\n8AxA1/h4qw4mkEJ6XQX95GbfHzI8Ok7/t8wxP6nKOupIvF+YgPEReC86UVDhmFLX1jHDZgVZaOKJ\nHL286yN0/C34pzvvLSn8hCSnGAGWPWASGcd+evMDPkCA48/gNauA7dnsnt+vkSFlGmxsyOPvruzm\n8IFngCjCwxSt1g9UuaQNEqc2fUAFo5kQN/16FR9umjxHvnJarKg1sry5T5znURNhqYu5gWghJ+LM\nhQUe6bD1jUeI5oXRVhlATVRh8XXR5JSw4Inf31Z1I6tk0wsXfNz0cBjPQL0sqJ7kcgEuBHsWOrsZ\ne+AZAF1/XJx2DQNwY0P67GbfLlIFtF77loerYCmcIlervSExNAGwyoQj/1z0cAEXutY3sH2HY3Er\nn9Xdb0yOAYeoWg/9MddahqbqWU1OgHLsZfcSbxceoKpmSduVA1KXIxo3StRIEJUeoZjESBNbXLL+\ndtLgM0AlxzAINRytSMwAiQuafXvoc5pvwUFv7nTa7ST7A8kGKYIkaBlZNmDss7gQLXRxHZFbcUOv\nTMbJLS816DBSYwpYLYf6QVXI6uGaZ84PPPYSfqIfPRAE2S1GLv4njGXYo6hlAFMYOCnQpKtK0e27\nARMHnwHsW7nIodYNkJkFtIubP6CYZ+3IwxG+SKZ+coSLxvVYKzkhsdMp7QPGq0lwdK93xAlEj1eU\n++tLBGY3H5GWaMPoSzP8dUYaTcOJvyWWdivFwgP1k4dbS/hbS5HSrN+kWhZXub4oPQofZMzM3U7O\nwDNA5P0SVL2OEc8g8SD/venGY1DmsJ4XVbD8pwPoGy2zIdYMFw2PmbBOg+O32N3MCfjkrG697mWZ\nalwyZVStkVZJAjmb4Fre596EpTL5e8xOvr07C5oju3IfzQSTUdTqtNFrSVBIOrzaZpd5N2LqwDNA\niOeT+Kvj1WiSTOIw1+z7K2KjXJc85BIG9z1utagSiXe3E8AjFeinnDKMb3VvHRW6ruVLn0s6hvsx\nlBGQ+ZLqLYd+6f6PJGG/590bkeh3GPfWKVceKAIWouBUYNwgtdr+tOd9IfGfysKJ99GORP4y8gJC\n/A/We7U7onMy2Gr+AB6NFFSHJuYwdM4a49qJdPzd0znCagijw0i/rWsBgSJWvv1Ieroh7Dnyxskk\nszSp9W7fyTSkz7xJFDpw+WDAWMHh7s4mcjDfPUJukQYJ5u4a4zIj+kpX/x23sWez27YdeAYI8BRy\nl4zaA+OhCPKxbR9Q8KUHKdXIcLJh3LXaQjh1Iolax0XPL0d+JcSo9YIRLvP2Pc77Vg/pS0dCW4AO\nHOfieThc2abqUgYm33d3FNQmqUgdzJB4K+MVDAAdGwAiz3AMVn16+U0PD/B4evm63pIK6sltV/D4\neOXDYIRkR5oOeSJeFegCeRVSkzcIwVH95lK55c9jMEeH51WRB1jEe754oAVSog1MH7rNiq6oiaSY\n/gHJxLlFfIDG30VRnmtYorI3N2oZSvzjNTMD2mtrbdqBZ4AQ14Ml1bWWVdBPa/t5bhjOvxmUUXKK\n9FElPh7AYkJ0EcLn6fydKCqVHLuNFFHo+77HeISb5nHugwftuJly6wUfZkqWRIWANpXSH3kuHV2x\ngLWIFg779PMYVR5HX7quQTYxA+oxldrxeQPPAJGfgLro8HwztPe3/8AyRuX/yUBSZhsivo2cpa9q\nmQqJ1VdvRxHB5cqdNgYOsLCwpwO87737swhOWprSRqcHR3R1iYTGCMAhn91WVSnzdXJUJcQ76Zf3\nQkq3YP/Y5yVgZOo2v7bQZeAZALepXB5ZJw5A/0nfbNsGCDHnRuFVh4rcqzwRu2FitBLZaGQ7wyNu\nQS/n8RkElVY/xyP3I8i7eMd/cvrVENW5Rrp5keruE1uVBYGLf/xF7O+hPZ+vt1juIHfK+EXYACkT\n4qvIyQL4uY9BzSMGnwH+oqkS1LGWBUbW79uO1efKfJvvLD7FYm+gQfa1OlyL7UVL2efbHnqzhWr1\nXmtUQXdTiH87jcwNfYQd+CQbnnrLHMCynOMfj/g+4lwOq+DGXqkmNrmA82Ru3LJa4keva7Sg9wYY\n1vLvwDNA9G1NluoNiGARLt/VfulWVEJ/Ae2Zd3BcXGsQi1cMncdqyIxPO3neAmNKYeuVQi4d1ZVP\nU0XwVjYZtkiz2mnuJsmfleFZPOtmusKR/sJMua4PMo2lvH0UTHKkV4kvA9ceJ7B2ar598BngoyrI\nSp2LQ/uqqPNtP88Pw3Ioms6/tl+DjkOuuGEzQJiJ5C9Kz70Z805UaIPh/vgchQ9lhzghm0NtZ6CD\nRObiM/5Khj87IKUyNz54dljbvOrz0KBXk5mUUNm5jXUDpzZ5+IAWyl008AzgniUxrnWd86ebORl2\nnq6t4N8eQcfMxUZWCwdjHXYpuhXXRzfy8lH9ipHIC/iOhaT8g9+cKnHQrx1iKcdgloqskf9hnnoj\nOtOxfkfko5PnYpAy2t9p1Aa+I8F91XbR9lSzXwPPAP4LOXVSez7kA4JyROf5+jK63l0vA02XRshy\naiEtJ6e+7trkczNwj1uq0QW+43Gpt4e2vVDAy47PiAwsNAco2EWMA0J8PSJeJfWW69HeHDWYem5z\ndUGpFODszSkpHj1uFNJk/8MFPGbOwdqZSQPPAPhQUCS1TmMQwxw+tfOx8C46CxieN8qhX0lvHp9R\nYC28wlmISH1UbLf2YyOsbJmjx7q0yxdz7EpOJjSl9dDf1A7zbS0YEzDxQdHyGvlOA6+D0wGc6pp/\nKPf6xD3XJL2zGk61uULajZZhHAAnJFDrzAjisjf1DYvA/N0q+n9+dNCY8AWa3lTVost0wj1cfljC\nOvMGIrIscJ7rz87fD9jtT8gChah1SnB/Bych9vv0fS5jhLk8Gjbu9Umj24FHbOe9BNY3KiwxYRwO\n3hoENqfFwuUXCvZUgYxch8Npzf/tdtzMGRXJsyP76YYnMZjOBDSlBN/OsUtcEReuhy/oz83afulj\nR4GiChAqtiFbn+I0yXWhrDMOPW9rucLiibQKxmPZhpjnrFAOv0AOg6I3SCopafV3zC8RZ8Rq3nvg\nGeBebgEBpXaBXPPwg5bjMjVko72Nu/Nw4Qww0tDUBlC4dJd8+o/fgZir00TuRJ6PlfOmeFa7DMaI\nrovevdbnG3KVO4wfev797PKHNuZnAvQKsX5n6Bd5biz+lmEysw0eLKnw6R0jkuqc/+AzwOUCw6He\nRSLdfVXnYN++LQD4Q9rhb6ZgXStpWSsp0c1+Jdeg8Lzefyc7xPvfnaK7SK74WHbHEHu5DWxnbmB+\n+DccrmcvkZvB3oTdwMJxyBFZyOENRyqQbNhUaKVOwXIQur7vOnWeN/AM8G0uhK3T3S3T5dLuWEQL\nH09hQ8wHXhBd+cTmN1U2xDtYGXjs1aLKdE+6/o0pNrdV0dOfUMBMKqC27geOAjz5pySWKhG7kW4o\nUsmeE7tA+lJySuafCZLFMdH4pJZy4GZWJIEwAIKaXMbAMgA7Vdyq/wGDFlcna8cnZrqdewG7N5Lo\n7rcID1yCFhAlsrD6e+R+c1VGQHYV8VHZweKdz1wPXHLcem+XgLfX6AP5BGmFz7ukrW4kYt5S4H0s\n9vFSolp6Yur/CitBvKk0sAwQsqUdudGbNGEZ14oASZLX+N1o4XELId76bS6YkeVMU0mgw5oEnENG\nf7UfsRCwNPj7K7jtXjI1uZ0RLuz3JzlBqMP40/6yjedCtT7PrsKG6A8aGK9kO6/hR39b1KXEZjEH\nlgHQc0Vo7Rkk6UUTUA0DyNpx0eIZgHbcZmH7Owv2AaV53EbNAmyAIzeKkwpZXpd/9GSut5Z1VbNa\nP39J1VThJ5gk/F/0Nydix68teVaJbj2gEQyelmAJczrnL/z4odmDywAishZFRzJYjl4noiJLygui\nxc/+YRXgVyoO3nUyJ2CaW23axAhIY6t+txWjfDkI5r79pBEGn5YSSUXSW9f54iu5UwfM0+8hhVey\nRWiv9XSjH+VOYMz/GFK4lWgVPGIGt9P1jw+YDjADRAIAcIxjAPU2lkTnOeHiu7i5uFJgjJXK7wQt\n1dQG4IpS7uaGz2JlO1Z+++i1DNFXTSZIShtWX2p1khex+pxtuKXMDh0PhA9b9mvDGTyrXqnkLgmT\nYsPyoL9yufgCZw5iaHAZgO5D0cc5lRmg3r6S8Lsg7IIJEFbjurRPwTfWND83iaHbLE1JKS/chl/Z\nT1xmRZT7ka8itZ7tW8cgpXDUR2x7WwGjeXQd2/HbCGtF+AVpdQOBJYm40s9J/wd+oyz2QDNAAf2/\nA9tmUr2+AICLu9K7GYVR5BQdtqsue2g8ssJOGlG5v4ZpahykqbGkKquqDIaitAfmPpmE/T+3TZSY\n5DxcCMXhhy1bAd6/1BRY8UaLAhlVeR1JlmC+hKX4xw4yA4RFLF/K1mw9kCjQZPmPXWAAcjU8IUdm\nbNKVdz2j2blxtTBjyeiatiPXw7+QlBLRaqVlFaDA0V8vCHjwksvuLg+IEWOhW33v/cY0UONxIPlF\nT3LKvk+3aLaBahlYBiD1XkE3/ELsAmUJcj2A9/+PKTDYI7RkstGN7o1oYYucVZnJfdqyBUd9scTQ\ntB3kMhZEy/sLNoiakVpKiMZZmSzafedagLsbWAaIONhSxvfFXyEpXfZ6MAH0p+NiFJ2oCG+jhq8F\n4vIg4ivGBXjExcS7XObfdiArR6KRnPpPjIoRWXXiIzJjJylaBtTfbG7h8QPLAGJgegFf0oABDvGx\n++DOYeWfDzNVCVKyMaK1MnKkRRJ1HmzP0g197CUc5xKAtm1ns8oh6/VLJ0FJ6+x91ggaARksSVn4\nSEs17APLAFHVCIgdliopcHLYAwbgYMyLYa2woqW2AntNBYBVLW9/6fX0EcVKJcCw1EkyK4fBpmNB\nTyelehMlLK6e4PLTZ2C+FQUzwAzgYWTjvnHbSWdzmt+BCG3lo50Lk7ImMpBdHNLErYhm2jjjT8VC\nELLtH/h1AS6bEbkM+TfLurkj8LDnx/D0ZGVcg6PujxySL00DS4PLAKIFthLrltH5vMePwq6jexfc\nMI/5qw7h7K8sdU0DcKohq8ALr63mEUM/X3b8B2L8tEpOBYtfFgUAMvNATfJJ5uImFdb8mAwon6jZ\n8waWAdDhKpaN8W6VDl+KeiEAvAjvxMr8Yxm2U9Haq+ttRBkjc/qt6IX3FzBvC3h7r9Re8F9QETf/\nIa3x5Te56LhGRGmium3sXJzlSEqu6fMGlwG4FD78e/yGGsoPsQd4ftz/F/IBfWAS2qnoaUprzryV\n0by5qBQjOn+bpXMHTsxs7mEwIpvVAbm1NooGhpxInMIAQn4YNN+fwWUAZCHw7fgbKMGdlRA7Lwlq\nQhV8f3IcqvDtUqqDkb1qgluCrGo1m77mS7eKHH7nE0l4Eg5XAZeewR2A8Yxp0T8d0HrDzOAyQMjT\ngi6IV8KSvM3tgRewi4LS2ZDRQdO5LU1pOx6QZuEsLmgiDQd+bj4XoLuYUdU2SbsCg5z8J/GkGl93\noumQGbvJbtm2GFgGCIKQFOZ7GmzxaMVDv5egzrnncSEK+YJGK5VCNQJKTY2kTENKwf5fEBFLTvl3\nPqw6WGCDZw4vSpLhpzZwT0YBflzBlgHuBpYB/JCj9C9vsMGHkITo4Ywnzy7hEZBohisY/34iVWco\nx/2UIWLnK0W3WujdKW1Chva99UhIWLoV3wpmwsjpJbyn5ccOLAOIMLl9UqyuU+Ekbu/q2ef7uBnL\nd6yHRIZncelt+4MKj7NQVx3zowpuXsAqTpXjdi6worDM0Pcnc9eqkYovY9fhQU5YwJbxDQeWASI2\nAooHxya8udip0rlEbU5budjz92RvmYzM3kZ9986T0EF53I8QCx66Dtt/EZeedSwCXOHSvYHLY1W5\nUe3p2PXV7WuRBpgBfB/nM7Ebr8L7o8DrnRcQLZTZ6P70WpAm5OZ9I3Xezzz1T4ib70ecdzAMHZ+5\nNeo4fxkxzOwvYBwkdVRpYAIk/pcczXLr7vHAMkDI92Zaih9+LH2O5XTbkbRWKcCADusePGcVh93S\nbccD1NfchEG+Uh0Kv+OZbhsHU49uXGcBd51ZZnwx6OtE11jrSBYDywC0BL9yVQPVq/zWrjcqptvk\nvtyq15hWS6M6p/xJNjMg6/6nzZQEkOPiQ9VlTwCD5HCWDID45JTJlTMGPK7dxw8sA8xz8+73GnTt\najcGUR8Gvc7jo8A0musADZQxkZ9Jq7D/uXfwCOtdGJGLIa48d9jb3YynK2aDcdJZHh54eFPs5D1p\nYBkgKuF0/muNlN2MQDzoOVWK62SreVrQzJJoHoWpNKw5b4tX5cygnSrPGOJOUc55BfglHvkW+x4K\nyakk/Knt5w8sA+DMAi6c1SAfP+GzmdjzWb9F9GdlSLZgA4wexD2Mh35BOKcz/L1BF3JVDtoBLzS4\ny1RHzHjznxzVMfhwGyhWO2hgGSCHdlRMxXsBcARGXm/qAf6NSMhEv4ZVTRmAWzQU6ahvlRmHwfNF\nO34byMKxFCEZE4UIZx8J1ZE/sRyQhWfj5rafP7AMQEd772hmdfyOn+KHHka9n/BZJjPgf1ooDRvJ\nSCdcyKI/LNtR5HpV+2/RLOByZZSLpbdCSpYazAMkDl2/Hdv3MgeWAXz3eh4UEz9W622uKBnoNUXh\nPLkar2qhPDjxIg/nooXqkfthKIpVFs0AFTEU0T5foA41KFEztdQv0W1/3uHAMoD3u1Ee3xO/3+e5\nWIm6NtMpngIs5dA7vtnxk38u/bDAPGmHVcHUrXKlEpmUf7QUiTNTqVgj0IRPY6mD7Rg4BnAD9Gbp\n9+8cAMl6SS+FM7M6ieTv8QiONpopF0Oh5x4FlpxKx493Z09Ru56jfqIKo3vxiXmSIhsfEs95E2Cl\nwFTg+QWee9324weOAbBSYtyO81aBlgUYr6nE4GooM6HI+p8Z26P1pEenVNXkgfev9fTR2VS8MTil\nwtjoRtyE+TLnbrtHuYr96vg4xCSsVmAVKIdu47nRe4ENEPE4PHzbBMichqtVvdyEKRBR7kPPa6ed\nukOqxnLCAC+asMCMrwxKwhpijkdvxI1YCKMuRAB3Uo4NgAajYOUMGUqpVT9B1xeDQ9qkgWMA3yEV\n+pIkcMzL1OVaHaBzQ0xG1hn6Mux9JCjYYc3fhz9QMgxPG0Nygu5hGk7FaZ7J1D3GLLt4XcMGJQlS\nMAafxXttrNjtW8UDxwAFjCqnScCw14kRqKNzediakYanc7jF76aorU9BULXlaGffAdkGedi1oCfo\ntd9FSgCDStfcUwfvXJds8LGjoCTS8PLQLTBo2Ezbzx84BiAN8ASOq0oJU6lXlcu1+jwZ8f9woaWy\n58USu3OCA/wKvlCKz02YAq9TAfUCRozrHL+whpwngZ5ugAKWIPPgmAVcwHCOjKe2Vc/gMcANjxjl\n7RRdb5lszcITbG3L8CRyAOwISz2f8x5FVQ4ISbtWHhQPysxAVsJr1a7dFHbRC6icTQ6g0aAKOG3K\nqY3lCJ1pVjxtp8cHjgHuPYEBYVRTJd6uF37TYVzSpZGfRCUOkHUh29KMdnJAAW1/83h8JGZE1A0l\nJmD1Vix3r1Dll9wEnIpnAG4N+OmOiPHyjgNMh1hC58bRhAxSowQ8mYCr5KP6/noMtBThVaOyoigW\nqLEBGUnVHnQHRr7L0QO/c1NADBou4D91LWYvEnQXknJCVuANPJWy088ZGAYQBVh42eqEaHtqwAAj\nsAHkn/c+BrwHBWh7BcTvpiFrkLpv1Da83xNL3AC0PUA36jxOEc2RXi898gEwJP9GWXaRJ5LkfZzg\nlBdhCw0MAwSMv3vxqKilbsQAKseHH9b/9/NIwXoOep8Eifa+wfy3DCjy2yKcJg7A1svza6gaTz5j\nRzVS7XAbFgBZVg+TW+nrZjtWhQPDAKET4SdlTURaJLlB9pV84rGruznVuzVyONVe8e3oLezxJWI5\nlNgDxuGrjlvCXKEDt2wnBfyR/wOj1fuv1DJcAkazsEpSLibJOdd5beTAMIBn48cMgCqORqMaPGkU\nzuOK7T5ThAUbfS8s4RMA9o1XAQp5ioqcvhDvLGKhFLVdoLGLFqLyP8yq1ynJdRhAkRIwvh7OxI0Y\nFTuvjRsYBkB8vWRpEshMDQQAGcRvx+19SgI9gHwMK5x8CMONh+oQP55N1OxOwRG/YGy2XOfKeQFn\nCw8yRSxckuQ6V0JTIDEFp28v8OzY1mca70kDwwC5l6XFrDapevyxLJBIHI9esfcRwD2JYZyDkH51\ni7es0uT42GwK1CSsg6PvjmYX0QqIZTd67ojMkVA+/zrl8aQs1yjr70Py/0gebuv0cwaGAZ4/AqPy\nrkBbA2iOfWciW+SB+kzlagFihX75eTq+a517iQ0e+vj4LWQILqJsuXxBCtaqseevsrmZuJy+rryo\n8vOlY4BysfrS20LcjHOxYFA7SRKFz6th5I90r8LeF4PGkc+jOr5ON9PQuWEoNj2YhVeHUYVbgtvp\n0+F2iLDCBhFekxWwMnHP10nKyOcv/h4sGQPwOJTIc70AF2bwzsOaTm0yackpgGNv4I4dp9jzOoA4\nCu3Qx8rHIGOxLbgh/oVV4wO0yKjEIsNrXRJsRbvIVQ4zh5AH0AB8NkM/nhG2Di4dR0vHAOTm+GGE\nLv28+UEtlNxllaSSOuofyKNSe54BaEB+gd69fJrAe9+vgTW4ChLfL3CRhsuB5NaN1nJAzuNs+XUw\nIoEZrwk10A4uzLZfBr4nLaENYNPLu5FfxL+Pc1VTUxUg6XB4EOUrAQZO66DK3SaXrqe3HbceTw6L\nKabE1KcRGDPh1iKfvp3HNvx0Nx/hPfg+WD/OjcDxxsa4fq0Tbl30epaMAXjKKi2WLJhLLKg3HHgP\nmiDz6pGl/I4ISe9LweJojnV06OC9q8CQzEYRS13NGndEMyT9y5XWTZZZzIdu+Ks0uZLjmQZ1ABn4\nGglCe9FZxyVjAMZKZKCsyq9MsFqZsGvCc7hCFnM++n1oB4ilAjt3toNXs126Lv59VUkD6dBZ1nTo\ntC6peZxdOL+KXaIxKdkgInZG5Hej7HjpVADdo5kIN39HkjJpRWqOx6efVvKLUSVgxVGaXjIvgEM7\nNnHuHH6DnNYGcOJjSdANOIOMujlsp1SvTHr9MYxKMsr1ULHPPzFHrDi3+OUsGQNwniyH2z5O1ozV\nYPr5bvqwGPLIzvhCT7GBmtA2YdDxCM7wQ/TmsVZaktWaMgZnz2AxxNZLxDxSAu+QgW4E44zF25i3\ne0UyoJejEej5LEP9Mkc7/Xc2P/hVinCGf7BFaI2lu/l70qyLL+XAtM4Y8A16tj5j47zbAsfaop+8\niCH+RIL4YPgIjLJx+ONuLaPvDJDnSgkO5bAsfWHzqd3rxWTviQvnxLXzl+7q70ELERYqx9FZpEYS\nApsthhLwW4ES0owKXOBU3EIrnB6T5AbAlGO0H+mXdy0SuhQqIOJ6GRKKxadCczh2hbMeo5eR518o\n8wyJgaHtjGCRYMxGesF0/AImzH+2UqzthehVIlKM5RMNkOO9Ig3WgP7I9juA4qjvDOD5jJ1BasB3\njibZ3mDndhB9xX5XeujZPO99YAQASerSVpzfOMIBobQZv44EJNObsQVdveBjISS2ejkkkmp8iJns\njgn9jkUUGuxBfWcAv8K+Hy11dr2ebQGBc0JSNlxNhj97R6JqZECIu8Zz6F42CqNaI2s9AbryMCw0\n5dyINADm5/ACelhaapAPlzW4FKPt3VpH/1UAT+0mGXDNKtCSrcxato5mEcrJ2FIkbMfBIAb9dIIA\nz2fQPrmBG5uFUenU5rFr4uxiEb2rR9PSKFhqI3Tqc9DrmgBYAhWw4HJY5HdHsO83lmwKvJA57i4M\nbIYDs0lsDI4RyGk71yUx8BZTaTQnXrGSZLl/rHkuwMHiZrzjJJ5MDOPxWSZJekapGCxjG4DjuHZ0\nUQrGU6BD8yTQk6ZZ35WqdlT7M5Z6twyfmDIgTzZ8PqQaTxbRJXXku82e5/Po4Hvfzrik9CO+AUVe\ndyuP01l+XoDvkaMbeFz+XcRvaA2UnKLIksSQR9I4WGf06/06Jm/z4xkcnmR2OsEorjF0DTv6Xnwc\nIyr6efxavPEnTwAPN89ov8cgWHT4Zzf1jQG47Ntm8Dd3C/4PxCt/RZy/ROsl3zrz9k39er+OqYj3\nrllDotni3G38+PANd5MdsDG+gSOHNl6SNhoNyFgjwXo4j5xhdDoAA4qh/qmAHHk6c2Ts5vAdMCLF\ng0ArO6pgs6Q6P9i3t+uYWBb/xaK3Vg1ZVRsENo6rVAoNzs3HKH9AIzhCbhBLw2sW0PaJV7oWEOkf\nA3iFHG3WbAVfDEk1Has0WTcoPI1ZG4FvD1LgJ4583Eqi29IlkJJ6vFubVJ49X2xUFzKHL4REvFek\n6zqkzH1moiAf+d2zAfvHAGXMzaF9L3qPY1jbhrB7MnfDqKBd3EoIfamJBLu/Fd8Oadmo3tI4GoX3\n4HQ8rmEZP8Up4NiAkgKmbCT/VuFR116lezVR/bMBCpzGLW97bhq0RucvKZoq/tm8jAPk/a/+bZNc\nVuvb8RWMWgINIIQ02Bc+02jG0WWaRcffODdyLm4R4MFdRCDpnwpwcPZ+vPdRdMHHJJ6hGMcAYjqH\nmthwA7fWFpew8qNFqtiMCZw/BTSzQU4QjDFij8uCWJF28+Fg6kr8A2S6OC8IwyDyAy/k2epdoj6q\ngIqDvzoOEiwp0w0AD2RyEaX0mttdDo33HA1+0eRWpXpw75GiBij+BEdAMSfiwbwfn+CWgvgKIElS\nD3XZ+uNqard7FXE9Z4AowsAOeeIp+lcf0cBKNsiIYuwPzSA38FGD7/7tSTeMKFKDwpYUKJIOx24h\n7e08UA94aHOdw9vjvk8XBbMJBUan/tILaOSeM0DATQ5cADyDVykT8RxurEpUp7MlQVn7yNsHJunT\nKrn+r7lht0Fp24hkGdIzp3kSwgMbuSouifQfxUsOujKrFRXG4Gfo+G7XC+J7zgAlZL1XsLHyk/QY\nNKpyBMPQU6L946ndBFnqE9EiPw3r4h15WcmATALilaH7bzZc4GCE/2xgPFh8J1Igvxq5hqqLMcAq\n9ZwBeEoumXJB/ltyClbFZ3/J/7G06nrf7G/uAPN0icklEfcf8Z1cpBx0zgok4d04H3m7vYEilqPw\n+Pj4gQ6JBBhJONklxV/qvl/ceyOwGOG0h6XzWZrp8ckfS+YwqjYK5jtplVsH3/rfkypYmj1FboAl\nrCXJujVM5Su47YHxrdux+Oo1DQZB8NSySTjyttCjWzHb9dfuPQN4SP7c/W/jKLfRqHiOB62NA0x8\nVLQNtj79eFCohMVK6eENNJysyCYPd5/8Q/CARqECOheCmmm4Laqs/ginmceKXbeNeu8FcP/X3W8V\nhREg8HRj1mnpkEnAms+7fD363/+/WCrjRsTwrthOEUb5UUwxUXzD1spuI6dc/NdokiRDLAOk2Db+\nD1IwwUIvZuX23gvwS7j1FZBaBbqs6A0mb8g6uUn7/4w4Jh9EAx8ArKXIQZLSV8evD0yS8xaHuZ6U\nf4AtN3cUcX/8thikHJVHeZEYkFPofkdczxigIoq/QjuwcfaxDYwjkBIqqAmQZF2GA/7Yq9fpG/2A\nHP6GNX26koYX0mkyD/j06zOSCVmvjY8IVCBFDIOGo+/u3fv2TgJUFnjYTYTu7GETenyM25JBAt1S\neDpn+l+53q20T5T/CA93i7d2NZ1YwDwL86zpNiF+mIt/EnUDZLqhKCQWNfOXXZ0/8O/UOwYgO2fe\nxcJMYZXcqPaLbENVrTL7wZuLvZ8C1nNyXqCONqp2l3j2m/YlFDK9fOVa3oFkbWhcAYm1hQ7j8AEy\no3qWFu0ZA5CMq2DhXrxOSoGlNFABjL0qYHYPdsjIWXb+fw0teA9NZOIDQiqMSmoWpq4pRhWcwwNB\nG1foetQYAXo1J6rqcKrv9xASo2cMEJDVSuf5ow0jMDYmx6sAOaWArGnpxIkYzWJu2UuAEP1N42Px\nEi8LVobl3tq7imTZP0Zl4EtJrTMShuWiZUn6PtM4H/YOEqV3KsBhQ/DHdPXT4yA1wNWzhB2gPZ9r\nYmYGqPmzQ+Ihrzc1MHqVEfZ3khIcsQ2j9+y87VCbQ1AMRSIpkP4Vx0TsnrlFPXQDZzx8P4iJNpql\nxJvFJAAsWP9K28GovAz9/z3J587xnzUIeI3yKJQkqKNPvO93JBhVGRStDhComAUO8sTbcbNHCqBn\nDTE9Y4CwjPNnT9IyyOptmAFi4Zc4C4VR5C8l+lN3iNyeBSyfH7tkC/QU572SkHjB+ATdfJn+k5J1\nvo4F45qn4zRGfqF3krHrDBBhGJTQCYu46SyzQX5cF2pOoP9JU5/L9fRQ+kpldAo48zaYkiBhQXPk\nkzgaoT1Krel5RUz3GcD28sS1C5h/JUyMxc+70yDBOJgqN8L+ONwLrP+dRMJ6pozbXse4t2Pp5jOH\nY0jMg4B/9LwsuvsqYL6MGz0fNz6eediKH3aUlsW8m7RiXFvGmcGv/WqVyqGY37jxwTxNdqJjBiDb\naBK+0Pui2K4zgB3hfeT+/evEpGQAObzx65N0UgBTsPZvRdy2DGP/MRQKEAN3Fm9anZXGWsA/iCMy\nFd7MoJg9pu5LALeEZSd3OFdHmQ2ynDJYI7JqwkOur2BpOTQAtEh0+Yu+QHu7GpKKKrd+4v9Ohqk+\nbBqjnrvFXWeAMCI78PakuYpvd7wJALAGIKPKj9oyy+b/lr7j//eKPIxCTgsuYOXrWnMIpFhS4YCb\n/T7sStcZoIiF3LUM/Zwh6ZfQY/1/8nwS4/CYWb7+TrH7tW5LRlzPEFVKIbHAh+QWADDiaPQ77Er3\n3C/uOgME03jpKJiyxgW+cnyt2yhzyBlutVPCXjzm7QCRu8DoIegF9ukNGv2b0blFvxT1PjLaPQbg\n6vYyz1P4TLZRk6sYsCiJSPf46+7sfNjRoFPIzeDbTlDF9EuzDUmQYYwAE54+izaZk8vHC3BDLG5i\n7KwPreY2hthkyBSo4yBNgW6lzorwjl6vb+nI93F7cNdhkIVsohGk7B5kwL5AGvSw63B+AYNlxAAh\nJ3NwM753FWcy49erShmQR3nU+nkBBn2Y/rxExCiu5SJetD+sBkMHqVUGIIZRwcheJLaz6C+fSGCJ\nsb9cfInB2b9G6F9ZGLNgPSQvLFcHXu+lFAa2i6X78NtZS2sFDG0XcfBY/QQuhORM5HtfINM9GyAf\n0XV+vMWzUqQGVa66nDBTEhxw+SbRH7P8yr9bpRxOF3HOw08z4pfZsgpIgpmAFwUcSgjtoHtIIHHU\nPQawMYyOIfHPpa9Gg+rfVBYkZfJyBozi8cq9XuBSkeehV+Ky/8JrSa9nWlcBtH9H30XuH1eBBcvI\nCwiwvPUwnUz8tAVqI/zPcbJxDvgXeYs8jTXX6/UtGYkurnmWiuXjJ4ymgKi7yUgmLuU2I46MuL2P\nBHWRAa4+QiYJP0ryToX4CIgGk3DcNSgg42iFA4P82XXKu1EhxHlS4nccwkVfLZIJ2tdC2hy6+nkH\nO58H2CotmgEE8APPLv0pg3/EW7tKckf/g6Qcd+uSjv3qL5F3jNMTMJXgGVONIEQUHbQUX6BXMJxO\n3y7Gohkg2My2vIffPII7u+R43Z82QdXlJEhP8Kfze03ovxWKNv+Nc0IZzWgEj69rJDizEhyen7e7\nMQumRVo0A0T8sqXC9/YhOzcpxQeAxAQcUFXtRZgnBbn8i/9aJZLjFfx8tcRvfQN0dJ0jgJMwdn2E\nfr5/BTKLtwFm0M/hdyXYMMnVnfHJn5QOkNDgNdECybfuoV0POrkMIrQVz6azTeiwNvb8NYlRppSR\nz2HF55aqfr1fF2yAQgk/wXP9pAToDQoApgBWS9m3R7M44/srRwCUGFc6msNTSQCugkRsfYBC/41K\n8DZyADZiHyvkFi8ByJh/N+n+pJj+KMWmgTJs4GY/7PPiAhuXHwhUhxQwOgrejxsfTVJwTaMCgRFi\nkTWbAj78rf0rkOmCBHBP53QHTCU5CRhfAiWPQvqzxC95TgBu7Nf6lp7mPbQXcAtuHB0DdSr+/KUk\nGVCPxGLAg+P6lyRdvATYcgpMWpAa40RWo2lXCTjgF1hmx784+PifXSQ/woiU+jxezxMSY41kWdiB\nzyjwMEX2qvv1eh0zQIB2gax/nH4KZK0GAIfc/KKR9Ffg8N+R7bcM/b/AFeOKQz/cGZiNAr86wCoU\n/xLl3OZJG/rWH0qGAbrCxl5tekiGBPmI6euiMIz6WSLdMQNwqHoa3X8eIRaTauDgbuBs2DpYcysJ\n/iWb+dw5LeQiPmxHQHR6nu3uPJ5gfs6nv/FFRLP5jY1w6ychbUCKrkumVlLSFZFUC84QRkMfRWTH\nDBAWgrKz/aajQB8l5d+g+JO8Qx3G4CFzdhHnll/pF/srnmMXWAA49/zxp1/60Guee+pbP/ejP97F\nhxQw6me5GDbP2gVlsu9fBoYqgaTVGZiik1jQUjC+EbkXvH84iR0zgMfS/C9pZmiQG+B/WwyPB/Ip\n95IenMsvwwIQtxQIAe7ddN4jFLZzJc0wNJJ4h3/oulkXo+k57ght+hiH5F/OO4EjQYyHWNsyxh6i\nLMNH0Qv8PmIkdcwApQid369i3S/xzLR4638sDQn9SSUGufPw3r4trFuUox959O58yTHE40mT0YyZ\nFOJ7zTzi3LsdMQilhdhtIcxhMH2kuBJaHW9QFFAntUPKxCuV/rXJd+4F5P3vcwIDsqN8H2IlAHkH\na+GlWLZp/WT/L8cSIC/a9OF9JD0zmpRAlTUrlTJVSeaeD0XXz6rgXeTWNrXbSAB6JDV/f6jCd71W\nALBWsDhX8KuQoaP6Zgd2bgPgp5IGT8/mGxHfAgiWZcjvCUoVYpjqaNRlRkUHy18+CHb6OaoQeczu\nJkObyJBO/zd6+ebpzYrLMJ934VePAdq32qyQStolzc996nayLHvfEbSTOpcAZyns0ljs/MvQyA+0\n3uuJuX9hJfSWXxNwFP7qkaCNcaZboRPXFaH1FNYEfFwGjMNRf2qlsi2fx5kF3Iz/OUnivo7GlLMM\nCGBNwU3Yh2rwXdQ+A2yNcI484hdsAKlR56Oa5CE6SlrKXkAu9PLL/rgcr5pDP/jkfjziqEFJjw77\nfYu4u0TSrRX+nvuPUWKaeLdJfTaXV/aN2maA+0T/4/ZTR1VQqvC/cZSEzJgEa79DFrC9/ODfMQwD\n0tu51x8NDUd5cJErGP9pc46jjM29nNApPjPRqExYWnPlgEcCXR9zT1TocuskCmONv3RaJvtvX/kn\nnDDuAcp1r6mEkY3F+RfTyRsJCRpNgzLHwXzxxigKMGruv9EXbD061aA0SIY3Y9S/gFn7DFAI8O5H\n6aTG2CZuhHELGRXW/4WEY1CtcFxexBOuS/hc0mIJjtHGQ72QlBsxwHgZbkWvlXPbiPbNWjJeBSjq\nQfcF/ZuX2DYDzIX2XQ8nTWVW6/viQ8DaKIwcdAP6RWTIyOVX/FlyHfwI2WWaMPxjOd0S/0L2zocx\nb3MctwkVyBMOzmsAHEJ25gcwGGA3sHjdISD8fpl5IFaZqSZk1s7hJozKZAB0cd55n8jDAH8E64Xu\nVxrMutaJB9Qkb8NPwlZUXYUxpLbHm8+0b+ah2ENkyD2ofQlw1QGgGOwUmUkNGkGiwqNRzDgKg6iw\n/JqAPR+v4yoWWZI0Mx7mACSTZyCOJGEUtldaKXQqR3n0Xxb7QM0kofLz/gGmtM0Av5yAVRIkZY7+\ny0a8BrDgZXPClHJEC9jyswKjuYeBAjthvrT4dYIxpjO6++iD8q048Dz62bsuXgVwcO05/SuZa84A\nvhMK1TbrRGQXfRWakCSqv2g/3iNmoy0/7F8nIvufJFflyyAZI82Wu4sUGRJfsJtHBMs4jyEuPF1W\nsnTUdbxoTQN54kqM2G7qw+41ZQAeVsxYRXMB/RK+d12zjeDiD8tIwSduFpgBy5CikE2wcvEgM91o\n0MWeZIJycD5semQ2ujw58od0TZIK1OoWSXRVvQ5DnpvcB03QlAECP+KgCFep2Xim1Xwj6NJkEvAF\n+vryMgz/8BV2idOj8OPkAZitN3abfJs/1tx249HPLlmCR2kMkV83kDamwOq7xXyoPmxgUwYIIy6K\n8gL0QnyurDVtc1Zk2TLgf2mZPC50+YF/25znCirRfNoyefZHqwyQJBYYHdvS/AN8N2DD6AJYy7gh\ntTdKAVUZgQ+KcjO791nBFozAKPAC0ouV4Olyo+lWO4ihkEcu8Ylf+DbYy84GCNjecVz8LBgk/ze0\nrgJGWVp8pfl6PZ/u9YIzOz4GcqI2HiAlJC6hWr+Nzj7yBgIgImQlgK53rNoK6p0OVvZynKkWfzrL\nUAnYQkfj4RkwtQZg13sSV/pJ8Kjmj6ddCVnRvIWUpVzHyNRU1YIEfAdFNGjpGSBCRqsIi/fvO8I5\nsaYiUc4ccDvez0kRYpzejbrpHZVCctTx73z8pAJaRnqchKwyClbThgdGEWTkn+CGiXRdIE1V0kbA\nSjx+G3pRHyKCLUgANgMLG/cjESe1Ant3xPUC28gJ/aCXky56RWR984zmr4oxVnIbUK/qKN1e5X+a\nf4Incs0lfDYk9dpSOomnCSjkTN3MPkDvL1AsA0Q2BoWobIcCr/SPTd0/rmpNWDocfwsWPFyGsf+d\nFIqa3Me0fPA7Jbfo/197MjnLrR1ceA0kMw1mBj8aizkOSvSY4hlgnlW/zzG8+ft/tV8LW5AheZY4\neaNI//Svpq3r5HNV/szaFhZcc2YSaGvK2OrNdR9JCjW+0GTV38gfDZcUIaRSqeRoM7bhhXpzbyg1\nwZ2hp3sYbSsuQ+N/F0XEAD7e2Pbpk+2usU2/ScS/mjOAz1FVtRFyzBnkSfVeg8YyQGGHD1ep4HsN\nE5pHgFIWGO9ysEhr98vLePhPGHg2/r5tBtB4zKOqSteS89YK+r2Lpe2HNTh/FdZudvqAoR3LAOWQ\nU3n+POL7TIDmKFdJsIz34EKB5ZbblxhWb4jsbnLUf9Qyrt8u4mpRWVN/RhxUaSEnFJFu/WiDbKqs\nwGfIYFxCNzBwsLw9xNm3a8oENBiDtnP9a+CTDPsfbcvbLfRKDiw5LMHwU63j+u06MV3levELMIjK\nLTBASOL9znGIb6eWzeNKQe9FQAMGEE7c9pewNNJaCInr/+dMo5MXa/fml18MeAcx6HkYvLPt85ck\n1dBlkN5HG9AKzH/oBr5/ZgNATcNUL/KXEik0cMIK3vZUSVIyLcR/YOoS4phywG1yC14f3JeeUcXH\nwH9L26NeeIe4V+is0Gstjxvl0f1X/PnLJHZf2AdNWssAfAWiMietIrzzxOYrHwPObE/+K0+GTR+g\nTXtNTsSlve9vXwJwJCAF8kc5ies0twJdPty5kyXmHNmotbE1WU/CP0uRUx0a0b/h0T76tlPmyoZ5\nnJ1qPvZMzD1OrbmTITEDXP7YH1EYRIH/mbYlwI7SUeXLgWCA5iKA7lgRf8GF1YysWyti6S/HXika\nBHy3h4ChNQzgYHWAa1TBGzKjLeXDLTisxOFCDlwvQwSQPSig3S5f3DK06wMYQJPBkn/Fd6gVze2j\ntxDhQaCrslYvKUB+yCppi2AkARzbI6phgKjKu0XEP6mynGo6+pSrGp5QKoQ7oFSWYfZnj/Vzqs75\nR7vnzzrAUJQRuJljyS0AhlT4ssziZ8Q4mWRtgw0zkwzvw9ALxUv1imptAJvW70ZOeKkOWVVu6g4l\nNHhGGHjohRHdnWj5+n87iKsB0d/cPgMoiiJpFsxwJUcL7nuR0aNKYXmNzNhqtZpWgaQKyX3n0LUD\n4qk+jo+v0HuRMf91Fda3tHD99dzHUuAlEwss3xzADvI5IezNtlEJsuPGMmSEBPs6GPnYvDRQBBy4\nWeIMOmat3owluv+WAl/hbkKvh7mVGgYI2QjAe76gSBlFAa2p/zf+Tpb6O2a/hMv+/IVuDgLnle0y\nQJLMJQWkNwaipaCFi+C5mAuD8t/2YYDQ2lAryV4pBfoj8jxWo4e1dfUYIApL5/M7kIHf3AY8r0Ii\n055hSyXoH6xBD6kszu6b7TIA2ctyAhL/GwhMsaCF8nA7Qpts5scYaVBqq4NTjBypJOH6BeFa9Swg\nsIsB6BO8SkiiZjbC/BviD55LZISPlAA5CdmvLvV59WxjMklYC607A5KugZRR226ACa8BheED4577\neHTzAoWoV+vc/cfZOXYCbXT9ZxmNSqEkzdBIO2RJ4K3+8TIE/muNns5ITqnmRbC7aAImQX16+x+U\nexqL+9jiw/GbSlG0EPWswGYXA5Q8Ua3ozKN3pAJr461/RVMYI2cC1MTUFcve6I+ln0BabyULuosS\nYCThZx19kgZWvKg5myNBvQMP3i0BOACC4Szec3QaxuIDYZrBLosMahIO+qcb7rW47zNHqZBukKyr\nFYwpMI/Jt528Cb38fhZjqcXt95pc5PfHCyiVsLyA1x2hwIgUXwDCmBCyQVyQetg1QR9x7ftNwQ9B\nJbe+5cYQsEhd/Lj9g6LT/RAo8e3iFnwOvah33dW7GMDLIcNU/9/YFEl5KT4EQJpfFDKlj7wfC+W9\nIPQbQ0HlBKgboo27qSQ0T+gge++jc58lN2hCNA9yGDeuV+vcLQGmGaDykrUwmgI1G98OvWMoxPgz\n5rmFtphbisPpB0XhLxSrATJI7cXQUr/oIBDuhiV8BTQwukfgB73Mse5igC1YyuNX05Io/ZEn4gEM\nAAwJ1p1MbmM+iJYf9k/L5OGj2K5vlQHIjj8JyVxv92MYD+pvSny/hQbmyb2sDAOR/uPmjwijb0oN\nkDAE9B+9j6JqqvzSZZ/2bUoR3nVQikXACAPixNoC3C47BjL5xQfnsNC+DRA6EZaeIlrE2PKusTpJ\n5epXB71LsgGG0Y58k/s9aV0Ds9e0BBskOHnxn0t7Nv0gO8DiJpgagSlIr2tkC/K2HEySIn3r9qAD\naz1k4/vXYKqqbtbTu3wlT+/hlD3wRPSfbNHcP5Nc2Ri3Tpmuvj6a5T+mL6jmfvZuIovYuwzktVwS\nMRl//mOQzYzBuJH5OlZCDu+2SWUxdumIJEiyrGh13G/6u+R9PTQCK5y6st3InZ5cqzfohs2IZjkJ\n0lr2qxj1LjI1KBR5gb0dPyAR35NUHI/VjXoWZElW4L24kbSG3Xbpls/Xr/R1kf0BRa+1OTgnd3YP\nA0HcxMCGyOYHp6ujDGJIEZCAiQysvzjoI5z9khHX9nvEAXT79cN0mIjdGGOU0zafwK2imb99XZ3n\nbvH5VappyFBv9K5MhtnUXO9sgJBrWD287/kGmHX71XdSUodEVoP9fkMmY27vlwA8IigfYnDxJGm/\nsQZZ0QnJzMi/YRBltzoRvT0K/DBwMP9BANEoVqMDLIFUfH7P1gk+6a0AZ94BSU01svF16gyYRdtw\n6C1FLC+/yT/tEx3lPKPcRTcfy10xsbbRFCnp9XeG/hYuo/HaR8Nj866M85vI8ZZ0qdbtZGBpKXFM\n71RAiZ1A/HOChb/aaPqXBslReMJmrJCvG4Z7vQTAIplGWPJd3PoaUOMlo2rB86cdG/2IZUbzOoA9\nKeIuTDrex68XEbba/U8lYESBq3q1TKjOOjgm9uA1FdQxGdJjYGbgiStm4utuKoR42WPIRicbjQx1\nWSBkgiQlZdDFPKzn/LorPtpVYn54vdpAjr2tO5nTLm6++z13JAEKZfy+1CDilbHAWMWIuPC8hfbd\nnOVOZSyTQ/ijB3PFnyR0tKxqKjMBh4CSB/3u3kjUbS6WSickOMOars8AMH6LK2B3up57IS/AL+aP\naTD2XVdA1KwZ0oudaO9N/sQR12K5RQd/fNqkZNKRp0SJiGJMJkDe8LJLOPLjlL0uuEVfNhgktEbX\nsHPIt/MtbC763W8VBLZdPtZgfoFiCuRCsoPPwHxU2fsDQHtSsBPnyP7zm9Zz9S5JAC7jP/itV3DB\nph9yJezi87VucYMq07P33H9ZFul3dWJ7GQul7gtg8MLp0ogWn/WUwDAhMwmZz/ib0V2OU98WR1UF\nH4npkCHas9f8+uufOP+Hf9tYdfm8ndmwRedGCvhuUjG1F1Fl4AmJpPDHBLhc10UAEF99CHQ5tgRI\nI3HH8a6P08fPBMsX+KFjqiyQe+fxoMwg5JbeKPCrAf/Qdz3S/47j+tHiVUBobxmtW4KmaCobntYB\nbK53f5YQeDi/OtVg9hPpPSkJh3+KTJAZDO5fghNYWprmhkfb91n6uuKekyaulEsuccOuns2gC4iY\n0/h6qGuKSbplaJoMv7Sx0n3vmxjgKhmS8TWAKo86PfQ7YqCxG/UuJj2wZPOtC1lJ+xi5O7v+IgGh\nTo4ZA+l2ox+GjIkbFaX2IiarngD94QQONHffCwij15qQqgVElBKg00/RtXjgn3vXnz6kHUQi5qkQ\nX4BC5/AnDLuPvwiYf3Dd0c8pDvzynPuUtM/dhd5DlQwpwp83qAwjBjgN892vw4Hgz8R2Rm0OQIWE\nlgV1xIDDyq3Ang1pceSxdD8yPhcjW2Dd63e/ChtyZ4Nu1DM/DRgZg0kwTwpnsQ94dSueirTHX2sg\nAiYAPsL5yS4TlA9WyNOsDUCQ8jdgfB08K7DJ/sG9tgVsYKjs4HTpkPgq5ARY+8113wgHly+/Xm94\nkQ5mFs6s3Is4Hy7/vv9BJ8aVmccPN/LGUvC17utiuIVT3UYdNzCpwhRsmKM321ZpYSLmkBZHJXT8\nsHjr6jgG0CFpwGO6P30PvitrslJnPHqahY55aeD7cySe9v4q8KUmDyNGF3tWAzdAU+HS7qeDz02C\nJdXzAyGhwxuXMez7sqOAxPvCrRyUTcq1F1JKWJBSThRjeEK7e1Y5vEYFXavTAqdKumlcsYxBf5cZ\n+QJm0Z97tAGJegFhOiF5DNZfVQmjnAA07hLBo4m5rDotcJweWsP9AkPqCzlYnRj9LU2zoE5ujkSC\nmgHtdcjmgt29nBzsByIVUIfpZDhp6P/3jbwq0GJUOijN0EA1brkkJ4kLlFULoctjB7unAlaDBgm5\nNgKlkx/4X6WhAOgXhQxSHpId8AFx3WuqkCU9Q3+vw8cxj3bYvdA87CuTvy/VYwDI/GyYA+gbRaGY\nD+R7W6TJeoFZiwP2oMj7Iha9LkIywxGSRoZnnbZgA6zP9yD9OKQY2gEHW8RXj9UbKWyIaI2qw8/p\nS6Iu2gAPpstv1MNBWAvqq6OhAOgjRb5HRkDl9roqWQTrFLIPT5phi7FrIgCeBIaq1JmPaEqW/NhN\nWORJ6j4uxxGgy5RcPJVxwiGOtOtCHm3XLYLHJjnrUytyMmCMJXFejP+N7KEm6BcF6P7E1OObdFV4\nTWSLzsXuEDx5FZsctZHABAudbwYV7l/uoOdxSB2Sh7b3qAbIRElI393NmcLw1iSHHWpxAaRxsjyn\ntog5IF44DAj0jUjYfh7k2Cpd+oeP4kL3QvTwE2aqOn0BkpTQwHobznLpa2FYEtQ3srG8aZ9GrXra\nodPFLsYB7peUFFi1gyEMbghJjv8CccbnBskh9Yd4XgG+vYEOIOHwP12czAL+4aoiq7WRJ80EKQPy\nCTcwiLS/AiBBBoQ8lgE3xM+rsCAFj+tifRZEz1G5EK22Fi0rIOHgSdvRDfswwHBIVYrKmK/gY2Nr\nAzMwqcGfuvd5UPkh1xvK8TrnleSYRN2vRBlSDHn845/s8GnVgcR7SgBLh+fxkGY/6kaXAITXgiJp\n8dCwafgkT7cYZoX6RFGAkYfTT9JTkKnrCph0JmPXMSQh4zsu2kEHXDgU6pcgVElV4UK/m9mHITWk\ngEdXIn5fYmVfb16FxRL79Xz0XEK0aGMQMPwvSKrxgxE4SPTXXg6uG9K/kYi6RDh9ECTo9Efr3ExD\nl7MjM94Cn/7ijwU8vGNCbeR2WpA+6L7utyUPqT6F3AIeRPhxmEhAncGtCtsAG+BTZJrvqCFaHIGL\nwSsYkroBA2jyw1deU/BSkbDswhJuXgtGth5cPckETTIP8dBh53zxKiDC8PcZPR4gYATGiRFfNnQD\n+kQMw+RiIcIzydiT6+AT6ty4nYHvIVlmXSgNA575fqIcLwAkSBpJBT601BuzUigi666IFQyvmxBY\n8Xueh6xARkqC9nhG65ldvCMIOOe5P69i4OnQACnkW8SX5e1LvT0riBZeRuq3wdSyq0n/5xdvBUI4\nh3fgsZLCzaAG/Rb3eWuuIItj2CTaP3J+B2N02WMZ4AUM2RMu3gYo4Xb0L58CVY6BKt1Jh99VWokY\nUUtFdLJHW1J8YYgEMwsibLRIAga+cvC8KvBlAx1gGUfmc3vDcOhlQh56F8DaeA2gwn90ZZQQkFjP\nYWg/mWxObhGNHRlDHumzcOswKdQ38vPT+2SlWPQuKTM+F9mLzwqDTZYEORRX7k9KQErF5wQATPnV\ne/GgyIGjrYjvhvg5BZIJX8UunAcxAFmT8xGevwpYAsTjxY2TC/rBYZ9AvyicQe8fI/FemSRrJ3Sj\nUAvYrosiOtcnSppkNBgZqxE7jv5iqfdlxZDIvz23wYXUZbi2C5Nbd08OnTsCUmJsJH9mbXLAAI3+\n8uAbEe1uYGMPqQmFHOf7J6xOcDC+3iwvGZTHdzClbE/axQD2wj2H8CmDLIoQ5NrPM2F0DB6xyaV3\n84bAEb0mH/0QZ5/BWz9Cp1JnZI0FIzctviJkFwOQNvmlqTMwtarUjT6oY6CSgDjFz2NY7uEkwyEJ\n8sXcsktYFielOoUBskRi4ezF+4G7VYBXdr9mcD26LNeFLBZRKWUcXkOH76/AuQF9phCdqIL2QSaP\n86wTn9Poso5N3d9FG4DdgfeAmGJcb4SwAZIGqqKk4OOuzWM1h9RTihik3sePVG9jrQZQSAeMwScX\n/Tm7GIAdgXL00mr6SarHAqoEhg7KariQAdSXeoP2dmJ8TrqS904yWFd1asy/nwbIqyBx5KIrQnZL\ngHks+rjwKDE8tJ4W4IE5YNEv67S/oTtMCvSYAgZoDiN8C5jk8NWG6FXQx2AKfrDYz9nFAHlW7VF0\nf5ZHl9U5f5ncjpRIR2vagTcv9fbs/RRGEYf6o5tGSAHUC9AZQi48crGfA3v+xY2rYUxqkBQELkp9\nfA5xhoMVQ2eg5/RkRu6XYtPCv0O3hNXhjx1RDQNUfpBhqPjYSgRTY6yK13hlLHiYG1aL95rKV4Oq\na/FJulNxGvOLwA2sYYAIPwiZMRiLvf96kt/mAxi5RZwb9gv0mlw8RoEGNbvq7Q7OLiIeWMMALi68\naLxBkSjAKKirQPuug+QMlobeQI8pir5D+r5Bt/A5OO+I+UWdUQ0DYJS3j28gANKgpdkGNf6AZcwN\nZwn1mny0J5Lj8QdirZ8rkDXWsQ6oZYA5LN53WDzDGUmeLqCZqrWFDn/ljZHrOwV4jmTETxKRlM8y\ngEfHkdkaBphjy/7GdDqWA8gtSRoGjKj7hKVitPePkV9qKtl3ZGG0wY18qL+YUs1aCVBCxwuviv28\nBKgp+lQLVOtpi3E/htQa0XFEpxj1soFVUiS40l5El3ANA/CA8gC3fokMzyyjRMSTCmdzxJq0T3mI\nKNozmqP/boJGiCHqoxdTGlYrASpRuBDh9BkcDLKkWP9Dgoyifkx0pszbQwypnlGIQQmf3qA+XIPs\ndU7QRS+gEGG5hLj5VID1jVqF9iWHQL8cGUkwWIETZftGHl3v/23gllk6nLWIuR51bAB6mOuU8L4j\nJmAyvkqY44VT8uQ/MFfB0BlyQK/IC30s5w7NxDKAkoa1s51bgbUM4HsCiTYo3TGhaFPxFoCiaBoo\nD/4n5h2yG4YtYz0inkw/h59vYIuRi/iJzuMxNQxQ5vtPv1dC7+dTEK97TLr/MKrCc/JkAPRgpu2Q\ndlCJzAB7Pj4WrIFhru8cwaWGAYocfQwcF6M5/MooxDcnZiE1AhMKvHeaXnKYFewZFcgGyOMZsRpA\n02EcLur48bUqAMs2ByA9DBf8c+PljsWdAjLHBb5QKuCwZaxXFFYRI+6OZQBYA7ry6O6pgF0fzMhw\nt74JpkDjjqH4AgEDfsGo8vSiUeQNbcFe0TP1BM/zrtl+HSZJSk/80UYv8nCu7efGMgDxnb0F73gK\nrOaitHRsh4oOq4w/czDaY3SzYBgQ6BH9lmTt2jqw7gmyAQ1dPh0rHJVrH9Q5lgHoNO0y+jceTZc/\nW2+Q3U6aAuOwO8OQPt53omF2sGd0nAapdO0oGe7XIuGQzM3zkEe37f2PZwCeEjE3g7+YgIRaZ6rY\nbh2USiQehoXAC0Rx0pB6Q9E3IQV6ndZNbuSSDfiR45Ah1n5EMF4FLAS44OM2/Lo+zlVAsSRpGci+\nzq54ZDtWhhVCPaOt+46Rx1frlkscrMtqLxDQUu0L4FgGsCN0bZGM+iBwBUA8kYWgwX85jFvnDmcN\n944+TBe99vxNYK4wYC1JANvvIgPk2bWzZ9AJ3KcfJMfHA8gXlCbIK/xmFBV8Z9g02isKcFMCskY9\nBhB8If+GDqwD+RuvAvwg8iNvxsNo/hHsCsaQwR7iKED6j3T43nC2UK8o9PBUTZIy9U5A4vHv70PX\n6WCwBzT7Ah8XcO4gUC3GjjDjk0Nm+k6/Ez90SK1RWMbrABoUhx7G+rp9G6wpA5BM97f/K0PeHo8Y\nPiD+BcYOL9ArDOMAPSIPA+cJcjxiiDR5S+h2UJjTlAHIEght/MYoBwNgMj4iqID2HMcemgC9Iods\n/O/q8aVhMnwmiEo9YIDAIb2yEd8P60BNQrwxyCmJt3ZxrPmQ/p2ishfmDpES8QzwrI7c8KYMwCNs\nQmcrvpeuvwHxxcLEAaPyN3HTUm/UXkt25OE7lQbgwftj2AGQZ3MV4PkkV+7FwrPp9qcbJIUUWUqm\nv7PU27T3UuRgcF2DeIxuzYcdxOGaM8C8h14Bt3j+5GorvkcRJItRJtf8c6n3aW8lD52w4h4ezwCa\nfAV67c8Ubs4A5Fny/OgouD1JrkCsEWJxPDADBy/1Ru21FLKP/aIGOlj6IvmBbXthzRlgJ9n+b7Mq\nyGQIJmSIjwc8wsdCF0fbDmknRegH4RUM3yPLdeEClLOiDuJwbTAAznwbRnVYo0N6LD4iMfqqyMe8\nP4wHdJtCsvHwjlVxHKCBdAr6fvcjgTtJFB6fLRKSqm7E9ykk4SuYH0aEu04B+vTTfjRUOaDORFHY\nh1R19+oB9qQKHaofnMIdCuONAAtgDVzuDyGkuk4+/ecG+HKh7eXayS66Asp2v4cMgJEblHH6kZDU\nQTfjcezJFjS3F9u3RofUmAIyAgIHP1qF8asz2oeMsxuwB8mgnRRxgbIXXXOYAabW6PxBU/Ydwgh2\nnUJhBuJvquOk5VoGSIF8SQfZ+JYZwCYTM8Tb8fsHwypoEA8Y41EGJw/7xrtOAZYx8rZrVSTnWjdA\nl+FHYfsc0LoKKJax6OJt+OEpUJNWrAiQQTUk4xVLvV17H7k4h2Eeda3+1mugwg/sHuQC9iQHzzKl\n0WrXsKTXRoa5ZCEDq95FMiDM29j7iaPlotB7BX/HhOvSQkAmU8Rouz55zlitVmeQ+yDkmkn64yIg\ndZacToREfRage/ehXqqAXVSOniwaFCQjodZDMU6ATG7C+k/gfIBzvUeQsRlO03M9rooPXR5tiH7J\nx3Durqt/c8XNuWqhtOOIPhfSpKJxIXSXb+niY0Cvjxqp6vDefjCAh3bxBIOhQyTGsK2damRKAlZ4\n6kqGDuj9qFEyNx0/jHi8Ap8vneym77/2ERuq76Xo5gnHP/Oj1wnBaBc8DOYdp5Rfzl7qU6s1IbU8\nQI7B2/siAeYc3LxBtnRJuCN1gOxNkgtpCx60tRhtXvxs2+Zkl0iuR37gEC8Ub37HIwCMbELRdcPQ\nVW5ezEqw7u1/nCbenS2wtmBN4S/bWPUL6f7zj1oGAHhD2D5QSPsMEHno/34DGYIJBgmoI4uSGS5V\nl+E4rizuuawNSPqjmy9j3sHbzpikjRiZ5DBV1VhWuJpV0nRNX3fGXxwGxS+WomWNdv8qQ6nfp0VH\n8fKgh3GAnVSgaxbg16ZATmr1YMXJKDBVYtEkJF7ajz4RBrXi81zALWeP03UXMik7Su+mWQx9n9Tp\nd5njE3DEeQxr6OZLy9cCQHwNMYAm15UAyot66gbuoALPK/ajT43IIKt1MIRMVeheQ4Mx+A8/3/uI\nYAXDmQg3z71Jhgm++smsIZHoTxrViMkOy3QNjK1RYf/330j63/Nw+SYrXk53jowvpQ4DGM+L2pe4\n7auAvJhaHjxvHdSfa5kUfyubZAyYX+j9tOmIRFIOt31c0jQep5mwWO6DtKuJjkVB0qzqA9q3xIv+\nj6TF8vUC8cUsZaU66XgFrOdgL3MBe9LDwTDjEUxBsWAUVl3OgQCvKqi7S6TQ3Xmb4yN2Hm9+LrRM\n0iO/X8Yg9L0QI5E9jRzyIQffMQjKtOYyPlqDjAJ6HdUryW/pZm9gM7Lvf5AKow2KFGUNJqX9rsdN\nWAmx0P1Rk5VZEne5CgOa/OqwRh0Te1A2AYd+/E6Pp/KQzZRnGxKdwbcKIjHVq4jHijFytbWBKund\n9/STATy8NjkF8YUBaciCnoKn3YLb0e7B/QrpSoSlAuZ9/KgBsgUtUlbYLUefdfMMxwyQfAKvHGA4\n8C1NPEo2Cku4j8KXvfbeKaBa52MPC0L2JB+9/xsdia8Tz0gmaYiD4YXFwBdIV10mvxr5cbBwqphq\n2roKSE0k2U545TVhWBKjs1kUDDzxCDH0PSclkRMo166X7Bvju/2UANyE8Fk1HS96J8BKQSZlvAZn\nMMp1f0dmPSw46Nx8UHKiLnBCHFn0yhPjbMCe/KMCMWaFZEgHbdX9Jp/BH0K8GyRFhH1rGEAC5dd9\ntQG4e/xt8ShyjGazRiE2kD4ZBl2Yc19DZP3NYuVCZQ1rmkyDatl/Jzr4BL2aqvJIzn3Py5PsJxEV\n9j5mvUiKqm0fPxVRIK323kkySNeGvegLiKE8+9LzT4ktDEhyK/EUM0jqNxs7qFRpRm5QcbF4bpqO\nEhJT0DpxMYum82y8pCWBevZvnKi4HNxCVwAwvZNDnFo9y0sF9Z6eNIbEEVklObz34Lh9lnURjGUP\n/JBbfa/rWpaMQLzrhWCR8uNZhiPQIqmqJFIpCoex6aesPPUPIpgw6CR6v4PnSKqY3FYrelXZnO2r\nDRB6EW3clqxEt2k8vkRIlkdgcgZnFng4bdQVRNGAl+k6+NsjoeVzjydyqk74STVMwWliTilzO9zA\nkS3WHKvqiJWP9PrJAJHHSXW/fEUC9EzDwRKyvPbhrAGKXgWdRXsDfFkXbMy7+L315NA1Ai9qkTJj\nAMecM10WnZUB8WnBw8EDv/ZD4nv3/lTcKkgQPj+I+skAgVd1Or8OKYlhY+PIADUBb2KPLcL7uwAr\nb3M6L8Tc2TJk9MYjTlsh8h8SxEUj6utvwqDiMNYZFmYHL1voIN0f/EbseskL+GQQta9pO1cBXH4R\nchz+PQxYHesOyGScwGr4NG7j4dRbF70ReRHvzt9zKtBTq9PuF0emBVI6yaLkpB+HWKqUK3yNBi40\n7AsIoKfGLoMsmiv8vhSE7CC+/YHvh+QO/j8pFe+HG2Ls4bhyEeai6S6oAJwOSJlccQKoYxYnHBZN\n1RJ3E4y0DEd8ZpbRbr3cwGkANlCw4savVwX97k6cmc5DwVyLFzKeaJh/PDQQxRLPtFgP+/+Zvmnr\n4nVrxLm8L01Bklh+jbV4G4C31ExZ7FnrKlj7nnUD2tM4gGhXnovO7+ONbQ0OnOugHqRzBgiCIIyi\nKCyT2Ll5XSY+LZglBZGGNbB/PofutsVvxEZ0TmdgNIk+U0q3ngSKo8yYxFIgI1WnY2iZF12DlcE7\nf3YDwtPi06+q/AxbVEC3SYuwAQQHBDhD7unfkvESgOvyFK4Wf2jAxRuL3YYyXvkUUf0A5BFr8Q0q\n7ZBiVm1YUVNAMuXknw2cCUB3u+JiWolleNl6U9BJuftijMAq+WyeXgQpUAxoMOGSRO3rFngCTiCs\nuLZDVgH9F3IA+KuHV+32GOKaaTkhGldkVdUM1WQDVY0FtqglMwPwqPMWIiyzy+JEO/Z/ycnHTzVA\nbTfh0pwo2GyTFs0AnsMuypbzQJUMLdVAJ2ck82OuKzwV22lfVoW0PDes4LsfTIK/0Tg7JZHi+2yo\nuxwTxYp3UutsZDVQOHXOPeTi5NkjYHd3yUWCh3OlhzVyehP3YtRBXcOiGSD0Rd+g/eoUJKRqRWBd\nUlla/6JEhmNE3kP7moBY28nj7EstCWRDj29OHWH0dMmckIhUM5UZMVV+p5aTRVxFaGSYv8ZOu4Ij\nXaWK7w9AwUhUxJ8KyzeOHkN71AFO4+JVQOR6vu1i+XEjnKSITcybZGSr8m02SSkPO5l375H4v+7h\nEqRH6ITidT+dtiS4cFf/jExWiNS6DEikuLbQHKff5Ed9qyQ4PByA0PBWPInEWuxrG59nSdx+JGjR\nDODz4NDIxlJpaqTBlHOyASZMSKy/MUI3H3VgrRRpad/cN8Nihin+gzRDkTRDp3OXZOJIjU2AROsm\ngFTlGPpDekSB1CEX3IuFTdEAdDuHl5EYi5d8yc2F0OlgZM+iGUC0/vANce9Uq30YMRs7Cuo6SD/2\ntojPshMdEJ0L0piQgbIefxNS9E+KwV69LonuEI3Fudqyu0iiQk+aRophuUUHzoZz7uC606UmJzwB\n9Aamz2FIXnbQvq5aNANwPMh1xXn+ANbHF2eqo7AWxi048zoBPNf253ibX8jGn8kiWso2qEYmHiAX\ncdWZ37zDy//+XY/VRbC3ddrRe6uCnhlLEzdwpOHF1/bljBtS4QKuZYk3At7PED4Vr381gbuoUqkC\nlBYC/BKY8SVC0iRMysTC55PM8Eptv+iNJ9F9NpPihmrVAF79j+FKNPnMabua1PX/eJpGwqDBAMxa\nkq20AcLjIkdSBWtSgpO/1ZdTbkAzFneDxNc+3u4IVO8lYIAdxPOj59/ASYFJsOJHHRMHfMElc447\nc4II/fgCAS8IyjYZNX7EpX+/bHZqWfGrpnCMcNX3doPmunjrmVN8mpJukfNABqJkEj+0HUE65L+3\n8OOIpxamQ3oqY7NjX+IDOcRZG5+0QRi4tcaMJBlkfR/Z6dO7xgDI5SjTLwBzFCbVehg2Oyll/SHA\naZ5K5pDmiN/AClsXIS2ffs+/TYZmNJqVzDT5iKY2cXPlAW2yCw5Of+wY02BjUE8Y3M8m+tfbJXmf\nV11Bcs4jc7CUFy1YTsHu/fkXccGlT7l4nOwRWkKt8TMCGbIOP730DICzdOtufQzZASqZXLFuFxky\na/4ZcFIoisIGtmCIoecsiD40vOsUqykDkOhJmTzFEB7n5B9QdsBXtoKbfnIiuSH787kro+MmtJ9E\nSmiKufa5P+f2jHzRcf2FihABvbcOFzBfwbuPYUQOvZ4iS4Iim1bHSZbuMUAB7c3o3vAgfqMGgRoO\nyRxZoGvNlzT0YjlgjsFp6feyg39fCyloRjILHTMF5ptI/N+3u/lz1hUuh+9f9YZR2i0tK3rHmwuU\nOkR8ndzv4hw/WxQPeRH2YUhWycaZ4qkgG6ZSrxubaRJe273p4Z1SVOYohI+XprlCKD7uwhB32lO2\noW9XAjEaOYYc4Vs6s4jf0RMtdH4pIJPlMTL6yQAXZh84OKNMl3R+jjfoznO5hNUgWZFpP4lkWhbr\nXws2fCwXLFQqdsXHqNT7yqEFbn55D1l/vAWyXrOxvNeJkX913O3cNQYo4FxAktcLvyizompwYgr5\ncG/zdniP8UrUDrBSDNE5x8yQ3dBcBIxyfdBh1+NMASsPsIa3Bsg9YHPTjp2Pil99GD3IIFOho0oS\nJWFxiMF49X2sCVzuK+05B/gRhpeSepPo8kv1whmGkoVnd15q1z0VUMG5Im6lN3lzUk030rHkXZuj\n5y1wy3AY388e5EUh7J1PoSWOQ/NIbhbWrIEXk8kY0pu40QMgYCKvVPCZ3+inH3z/2WLQXds2gJbk\nqABXDqmWBY/+XbVItx9ewMxdE9z5F4PQTPI0Bf/XuSrqohFY5Hh9BcPSadCgSlhPgkqWmv6nbTwD\no8GL2xx/u2SDJJNvp0LzWO4qMP67wlk7ts12n0sgOlODygLLHFHu/dfTsm2kBnaSyfksTcSgBWj+\nMZ8no6cPg3LDIj5GZLjoc6U6IM1j5AYci1s6fn4XGWDHhru4/VEC0ZqlcnzdvnE9407WkaBhmYdQ\nlwJ0PfzSRPOT0VWSD3ygB34HKy30HZQ8/Nfb962GiLlMgAuatTbKBXbRYefeg+FO65vVTLnQxaQh\nCcDtWCpgzjuTblMm3mpVQPnBQudYTF1nALLvK/cwkGQmBXI6/uZqR97OvU41NYK0idsR76UNCIpv\nVaBp05esqTzfPikf/lcOmTQ1hrZFnL2+6zvHpEDlevZUFXi37dIyzi+veukVPGEVBRghJzm72lFS\nwu0RbsbPrQLZin89UmeHLnRQYNM7BiiF6F6rspWVaZCzAxmeOl/EWhEQOgvoTJMjh3efCC2mcUdh\nH3j+dOBhsdxUFxKHlOlD8/7FpxhgpUmFmiJ91LYAMFZNKZB50CXkFtJBsTXoLuS7eP5zdlTEabz8\nQLL90g1C2Qn5+53UAvaMASro2TZ+jYP2I0qDi0WS+zW5esOmw7Dg+TkML18jw2hz459kTSJhwJdw\nDr1bXWyuA0izuFsYwdb/x5sNGM9wbE2S2skVCGJlLCv033Gf3U4+cECrjkTtdpfIZphdr7TwGO5c\nUuOrgU14Hs5WcoPDAGS0+NG26ONyaoytltgiQbJr9Y+VavEaaQe3lmn5XwBNja8wfABNTYA6+UtS\nJ34hCmeav6DvCmCgvEtbnP/oJNsBcqr9uEBKk5QdoL37vpNnpbmlKJhffOPTTprjKEOAL1K5BkCR\nY1XpuHErSbUW1t0vBuBSygIW/HNY/pvx7pYCkiV/t/bbHb7E0f0vlxOwFuTmLEBHlzycDmCa4ajm\nm+vCUGBLujbXJPmFov/Dx5Ewb6dk7N9ITyfk5Cor8/9+VxYxu2i6W9sYCDiAjwuHKt1IPn2UnZHO\nu6+7zgA+brSJJb25R8gppUHI1WAhuvrqGqMt9HDO+8vxSXa4xpPQIK+4iwFO9wMy7aexsK0FW4jN\nNLeqe3J0X8kT+cvTASbb7jEz9B3qTVRqm4kn/gRxoZuZgekwKv5cMSEtN0quwtFBidyPzuMR3ZcA\n02gXcMH37AO5eS8+ga2DkYSDa5sFix7++DDgNo00yebmJ5H4LBYd3oNKhOVWsF7CisvOIGvrElks\nOR9vZYjZdkmSJUlRFFNidEKN2PWA8+e7CIfnkD99ya54pR4rA34iPKlcx5/TfQbYRVdPcQkHvXnG\nALVmARIopNcyh5LbWHbJdBRN//TLPPqftGB1U6NMp2/X9QRsuATzdvtDs3eRK0q+b/3SKg1Ugx9L\nrypz2L9dw3DEhNXvvo3XEIjuB9/1nVIHNmHFRtYjNga/z8KBsR/HvmtKgVMXe0o9YwDXca+ACRLk\n7ArqtYJAE763Mvqi+0P0/iFKy2Y2V+g8iv8PJiah+ZXUIEsG/Ml3Clcyv4gQTGS7GOTw+8eBlBRd\nASzTx9rlALJWsmlY/aQrcwLEsizSTxi2naQhtXQPzpBRl7/WHBtpEAeRlPVgZe4YWAbwPQy+AeMS\nGAbUK2Y1d04+emolmuNxOIUFocduOpJ7vrNN9z5lJEjsvqlIbgeJj84lALvQHJPegtFlz1HF2xrJ\nHRJXaoMHVNC4kjyhPe3HBcwXWNM4kejpb488bwa9aSxFt5KSTMaLfoWsw/XwlUWfU+9UwAz5A+eS\ndS1piinXZnN0hpTm4t2p1Jdxdt5nG97Gm89LpiQlq7QQmZMgo30lwFmH0TMWMavWYauQmKg86+Fd\n71wnNNOuz5BbLxxIkSORmeCq9YM+No8lP4o8r5MUTTG05/FuvGY0DRONwmAZCfRXL77bumcMENgh\nzoQvh6wiMvU1G6mwCSXJ5EqPJQ//PNmCXqX0z08cB2DxbFK5+c2zYJ+bvBKb/b69mHbu0OVa6oB3\nMnCL058+Hsw1BnnefPklueUQsbTD40kxYo75pvvQ5p655pHJPYnE4Ixr4yX7psgNhkR8MyhJwENm\nFj+kuWcMkCOTHLctnCTUaUqtYQBZEShiDHwKq0dg38c89SEy+wVrqzNHmufr1afexeUSmF9wvA5w\n8neSwx1VtOte6JVE3tD75aNIBVmaOFCpjdIhSdOVamxIJ6/geb9Fezt2kKcnreG7d64DyzTIKIn9\n/Cyo1u/9xaejeycBkDtB87c9GLIjpCBrA0I7pWsmkRSokqCmLZBSoCRVSGeb7/db5tn8mxNHX+68\nd7PMAdyAR8hwaCiwIxInfzt9FIwqGGPLNoDEhaayWGiSeHrEgof+OAjan5oVzKNdum817CMKq+Kz\nlJYJ/0X+y6KTDz1kAF9gbl08CiY5AXXiAaQDeJNJEJD/ldC4qY973yRhMzaNzP3cwyIH/oPILjNO\nScfkl4WvJvJ4YjxnRJb7dR+z9PYShDLICZ6WBORCKuMjwAhWh57fQZ4+WsBbDuT8pqRKjZJh2jMw\n6gLEbQ/jAFUKvqJpiS7g+RmyKO7XIGmQn/bYm3r93vlPHcYlWPTuWhLkpFS1V1ovJdOEo3Poazfa\nQq+XXTfCsGxX22Kj2vSdg3aOc+lkOlxycIM0akoAcq0CbdU2rISLr0ntOQM4+GbaNasLUB6a6I1N\ncn3c8+/reb+2i+Evn87e3YgCliq8GNUyWo8M0O21DFCzcOqfXa8oagUqEdv4Uf3OaBEIo+sf4edG\nGt6XDIzJKZIQPxYvuejIY88ZgKyr5ypGZ0WY/0ZKVSZrWYAPeb2vxnUdMg1veaM+IksJSzeNZIrN\nGL2F2PSO1+WIoinBOoBHfb/MJaRhcYGlQQwD+KFbZjSSbeeIDFpsFkxWE3T/TXgbzgbdqD/pOQNU\nyB84EVpw65qQaAhWSQon130DA6cfOG75vO9se8f+gu1AlORJSutGIZdwGukEJMmb3/CBOzgyVq0c\nqw+OEEX8b5Wtr5BhEuRVsc/lUQHkWZ9q40Zyfxc/lrH3EqCMpTs2JDrqxHggqQK2gR5z7N/Q7QNi\ni7vzlIJvH6uBNDaSVKV2kIZA0gUkOYsMTdUSZ1yJ3jan6rfXlQJbA5Lnvz8AFNorLT6HxhFAUPfn\n8tsoJ2rTF0c9Z4DIRadyVdOsblOiozdp//WXbMOCG/Z+IKFfyHvoOQJ/+bcnixPlyFDLtgyXmwql\nIWtJof/kJ1/BI67jjED0tqP/JvpymaEUOHgSQwcC+c3buWi0gnYHSCt7UM8ZYIGDNYXvtlTc04g0\nkMmmOv7tWGDFN9f7lixxKD6WShxp/MfLOfLaTk8hc4qsqNWvl8wRif700K+Rky8GV9dCuWwL8bLD\nYFIxORk1El8NPUnnn/49b+pCAUuLn4Dbcwbw0WY5deZiGcBgw/rgzzMODjv/PW/I8HyeShR6Afol\n/rH9w/uQVG+HY5Pi8EVAkUwHGfSsDIe/sVAWwqv2/W97Kcg6Sw25sbeZVuDzpAQDLpvGxU876r0N\nsIOekeLgTgfg3pYYlSqzCfb4Py0dXJuLc198OFdnGayIdE5ZqnJbuBNVUl//9yD0A0+UkxMf8BTT\nMobbX3/gzhR5HEm0gVpCB+P/dXMET98YYO5EAK6jbnvHRlMgV1s3XlPGTUsG2Jhnz/OPL+Q+Zc4X\n6iBnEqAn2+YAA7Rn/kqkIMLqHBUGWrz9zYkxAWUV/zgygFZzfEA1H1HJB92byt43BsDb1yUMaD8e\nNC6g/zQFxr6Cbr4P06hjyS44wcLdL9mPQ4NgZsXb6W17N9wdDft9dMbmvBOKMvqLn5ni+BbDWcZD\n7CRgrQyjCVAOwW3YBdj9ndQ/CYDXHcIhzLbJoOPP6nDibwIb/aUDcd4xbzjC+/57f0hPyKBmO41v\nj2QUbfyV5/95s4PFey5629EaJx2TFreqNeikGWfXYH84rLIZ7XL3cAn6JwE8vHLfNLTQ7Fe7cGKb\nF9yXE8V7XRk61AlVvTenmCuj/Y0juS2f43XtL2eXkmf1YaQE5CXHNxj/R9HibSQ9AQkzBcfdWsQS\nGSRdMwL6xwDlMLjl4e1flyybxImz7mZ/3O1m92W7r88tgK4ArSb9e8lpYyLf14EVaCYVUWZgJKuZ\nPms8q4gUh8TVRLEckAZyIqSD/sSNwGV0l58EcHkSy01HtBxL30mSMq5NfJF7+uwCc1G/3reGuPYQ\nPY6/TM+HWL7/DTrdyvZtADHi09KrddJyYkRgPsiaavHUezLxYr9vHxI449ex9nfLXXSG+sYAQcgz\nxDcd1vaGpeDQS9EPoyq85JIxgMACCKKq5eZ6ZNMUPn1wOwVDD2ABqIKQCtQfkFSJMZW4AUxNxvv/\nOmnPsStCx8dCEcNo+XkB4uQCp3x8WuhBc9c+7EGGCJzQvTC0ags/vOpunkvTr/dslSJihpkfPGmn\nzE7JHOzRFj/AZE8iG0Ed0UQSaOwynO26G9w/BuBXD137tpdz/WwSmPtVo96GaQIOTbY4+iNrY/9V\nRr+y+KRH18nlwMDWG5+9AWTRYWyIMQXd5wAOKIqhF1PX50vdD4T1jQFYhEc8/LDyi0MhUx1/rNTW\nioIsMsdmhovFEiCt+2WJLf8ln9dQh3ZUfV/3llVgZpW1HPGHDgIdLYgAcoQO1MxbeWZK163gPjJA\nGLIi90ohfpjxGBSDq7zqKD1VF5jjiUnys1+1EVnnBV1ruu0a8Un45UKeszJfegjf1AyZ6t0/fxlS\nKZ6OffB0Kc+Qkd2m/rmBggGQDfkFvP+5iawpyoJrRYAka1YqzThj2suvE3ef2GYRrT89op0Ihxyb\nKM9f+FwuCtVA7aDLtDFJHC5QUkfflkf3/ioCVlepfwyAO6sgApzeXLx4SgFldLQ2u7qr7Xrs+ZcF\n7HXZvpvrQ/6//eX4nh+QSisVRdHDVS+TINmFScZ7EqMqavCYe9H37msJBKtN6iMDiF2L0AnzAtPo\n8lcfAPXynozGKJvZZ18uuj7LDPTpzy0+791tcquYDOyPlYtRVAxw49mrhC/fZQkAE2k4fRrncRsu\nuJWue0P9ZgDyYF2s5EKPvKj8b954UI0byHbh1At+sAkjsrEcdncrXfN5u7yUHdk8j3GNEHM25j59\ndPdFwBpQPurhfORguRdVEH1mgN3kMgYCbrvytJPWa1xCq1excC31we/8Xa6TkSJLTDvX89gs6KMy\nD9EzJIlj+4qmtA9BJQKGhinuw0HfE3jHPaIlZYCQZ0EFfmXrNRddcNpr33Hedy//+51VBPkO5qAv\nMe1cD/79THJyR3bWBFYNmjaajHfR+GpQUpBRHvpXLPRQCi4ZA4Q78LpEls0XKIskU10XQ7tQHDyV\n3/J6sOROf2YD6KrC8wr1SRHtVdrHp5c1MHVtLZy+GTkH2jMjeMkYoNqK6YQl2/O4TtJjZJXd27ns\nVMDO9cyzMCh980QebcZl5JrMbfBS2xFCng+kQvZrkY/5TT1876WTAGL+fFXSR26JlVwUuHalWKq4\ny07+P3A9Tt5lBr7iedUpJjtxMNplAGmCDIfH/wPJ/OMS0J6Vwi0ZA2Dg+iIyUAVoeCBFvussPyWw\nYz08royOK3Tw1tNTshhzyfLfbJcBiDKfIlv4Xpx2MW/3TCIuHQNg4Di+77piaXYhIOJYcbGyHO//\n7vUw2ojALSGzbdP7D4TRKhJ12/EBK/nka7Foe3gfRwCjnl2IJWOAUijUZsiC39kx73BnrDD03WUn\nAXatR8DChKS6/VyIW392aIZrvdqvHBr7YjXum2dw8x4Or15CCbBC6NLnaDzwuoqUSLa9ABNSzZ0Y\nOapWLSIYkwVCWYK+JqnCvi8pVw+953UQQwboMc0h3v7WlGgt1nboAZnRZCRGGpUUVQSJJEXjxjNp\nYgQgmYDku+5HW5T9RUMGWO4UcEi78MmDRCGolhpRDEsFObtB5fsvK9z0rBm6DKurfgL9Y+oNt5Wn\nySvmfGPvW+CGDNBr8uZyFXIRL3wiqIwcxLUOHBjUGIiOcXRTlmHwX+qWQH5ad8pvOGEa7iqg6DEN\nGaDH5HB4MPDRwz89b2xyZ5O0OQI7moSEaaBa6THhKp74iX+K1udCYXcBRW9pyAA9pgri9LSAHELM\n/fz0QxW2+nb4BBq5B3oikxEjgSSYfP0/6Bu25nhaCFPU+/s/ZICek88dJfM5ZJAox/cql5xzMNn6\nBit7ULSdRZGydcKbL1lg2e+hT7e/tNCPw2caMkCPyRXt32gX3B2FsZj/62dfdcqTprjslYwBWTGm\nHvmuy2cE4FPgRWT8B2WfGyH6835DBlgq8mZu/PX//vrP9885bO4t2WsMGWDpKLTLHs+xxNAfMsCK\nI9vZneL3O5/5tGgaMsBSUei6vu9yoX/Y2WCB7tCQAZaQ2M/3eT5c0C+Tr5aGDLBEVOFp5v6OMqgo\nWLIKqCEDLBFVuwp2HvzSFcEOGWCpKPRZ+gdRGPSu3qsFGjLACqchA6xwGjLACqchA6xwGjLACqch\nA6xwGjLACqchA6xwGjLACqchA6xwGjLACqchA6xwGjLACqchA6xwGjLACqchA6xwGjLACqchA6xw\nGjLACqchA6xwGjLACqchA6xwGjLACqchA6xwGjLACqchA6xwGjLACqchA6xwGjLACqchA6xwGjLA\nCqchA6xw+v8aAidmBAVJEgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0wNi0wOFQxMDo0NjozMCsw\nODowMJ6IW9EAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMDYtMDhUMTA6NDY6MzArMDg6MDDv1eNt\nAAAAIHRFWHRzb2Z0d2FyZQBodHRwczovL2ltYWdlbWFnaWNrLm9yZ7zPHZ0AAAAYdEVYdFRodW1i\nOjpEb2N1bWVudDo6UGFnZXMAMaf/uy8AAAAYdEVYdFRodW1iOjpJbWFnZTo6SGVpZ2h0ADUxMo+N\nU4EAAAAXdEVYdFRodW1iOjpJbWFnZTo6V2lkdGgANTEyHHwD3AAAABp0RVh0VGh1bWI6Ok1pbWV0\neXBlAGltYWdlL2pwZWeLpZ60AAAAF3RFWHRUaHVtYjo6TVRpbWUAMTYyMzEyMDM5MBPa51YAAAAT\ndEVYdFRodW1iOjpTaXplADE4NjI0QkLbCnNxAAAARXRFWHRUaHVtYjo6VVJJAGZpbGU6Ly8vYXBw\nL3RtcC9pbWFnZWxjL2ltZ3ZpZXcyXzlfMTYyMTkyNTA5MTk5NzM2MTZfN19bMF2gE3xwAAAAAElF\nTkSuQmCC\" />\n        </svg>\n\n    </h1>\n    <h2>独角数卡 「{{ config('dujiaoka.dujiaoka_version') }}」</h2>\n    <div>\n\n        <p>每个梦想的路上，一起前行....！\n            <a href=\"https://t.me/dujiaoka\" id=\"qq-group-link\" target=\"_blank\">\n                👉🏻加入Telegram交流群\n            </a>\n        </p>\n\n        <form method=\"post\">\n            <div id=\"error\" style=\"display:none\"></div>\n            <div id=\"success\" style=\"display:none\"></div>\n            {{ csrf_field() }}\n            <div class=\"form-group\">\n                <div class=\"form-field\">\n                    <label>MySQL 数据库地址</label>\n                    <input name=\"db_host\" value=\"127.0.0.1\" required=\"\">\n                </div>\n\n                <div class=\"form-field\">\n                    <label>MySQL 端口</label>\n                    <input name=\"db_port\" value=\"3306\" required=\"\">\n                </div>\n                <div class=\"form-field\">\n                    <label>MySQL 数据库名</label>\n                    <input name=\"db_database\" value=\"dujiaoka\" required=\"\">\n                </div>\n\n                <div class=\"form-field\">\n                    <label>MySQL 用户名</label>\n                    <input name=\"db_username\" value=\"root\" required=\"\">\n                </div>\n\n                <div class=\"form-field\">\n                    <label>MySQL 密码</label>\n                    <input name=\"db_password\"  required=\"\">\n                </div>\n            </div>\n\n            <div class=\"form-group\">\n                <div class=\"form-field\">\n                    <label>Redis 连接地址</label>\n                    <input name=\"redis_host\" value=\"127.0.0.1\" required=\"\">\n                </div>\n\n                <div class=\"form-field\">\n                    <label>Redis 密码</label>\n                    <input name=\"redis_password\" value=\"\" placeholder=\"默认不填写\">\n                </div>\n\n                <div class=\"form-field\">\n                    <label>Redis 端口</label>\n                    <input name=\"redis_port\" value=\"6379\" required=\"\">\n                </div>\n\n            </div>\n\n            <div class=\"form-group\">\n                <div class=\"form-field\">\n                    <label>网站名称</label>\n                    <input type=\"title\" value=\"独角数卡\" name=\"title\" required=\"\">\n                </div>\n\n                <div class=\"form-field\">\n                    <label>网站url</label>\n                    <input name=\"app_url\" value=\"\" required=\"\" placeholder=\"例如：http://dujiaoka.com\" />\n                </div>\n\n\n                <div class=\"form-field\">\n                    <label>后台登录路径</label>\n                    <input  name=\"admin_path\" value=\"/admin\" required=\"\" placeholder=\"例如：/admin\">\n                </div>\n\n            </div>\n\n            <div class=\"form-buttons\">\n                <button type=\"submit\">点击安装</button>\n            </div>\n        </form>\n\n        <script src=\"https://cdn.bootcss.com/jquery/2.1.4/jquery.min.js\"></script>\n        <script>\n            $(function () {\n                $('form:input:first').select();\n\n                $('form').on('submit', function (e) {\n                    e.preventDefault();\n\n                    var $button = $(this).find('button')\n                        .text('安装中...')\n                        .prop('disabled', true);\n                    var adminurl = $(\"input[name='admin_path']\").val()\n                    $.post('/do-install', $(this).serialize())\n                        .done(function (ret) {\n                            if (ret === 'success') {\n                                $('#error').hide();\n                                $(\"#success\").text(\"安装成功！您的后台登录账号密码均为：admin，请及时登录修改！\").show();\n                                $('<a class=\"btn\" href=\"/\">访问首页</a> <a class=\"btn\" href=\\\"'+ adminurl +'\\\" style=\"background:#18bc9c\">访问后台</a>').insertAfter($button);\n                                $button.remove();\n                            } else {\n                                $('#error').show().text(ret);\n                                $button.prop('disabled', false).text('点击安装');\n                                $(\"html,body\").animate({\n                                    scrollTop: 0\n                                }, 500);\n                            }\n                        })\n                        .fail(function (data) {\n                            $('#error').show().text('发生错误:\\n\\n' + data.responseText);\n                            $button.prop('disabled', false).text('点击安装');\n                            $(\"html,body\").animate({\n                                scrollTop: 0\n                            }, 500);\n                        });\n\n                    return false;\n                });\n            });\n        </script>\n    </div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "resources/views/common/notencent.blade.php",
    "content": "<!DOCTYPE html>\n<html lang=\"{{ app()->getLocale() }}\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title>{{ __('dujiaoka.equipment.please_use_a_browser_to_open') }}</title>\n    <meta content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\" name=\"viewport\">\n    <meta content=\"yes\" name=\"apple-mobile-web-app-capable\">\n    <meta content=\"black\" name=\"apple-mobile-web-app-status-bar-style\">\n    <meta name=\"format-detection\" content=\"telephone=no\">\n    <meta content=\"false\" name=\"twcClient\" id=\"twcClient\">\n    <meta name=\"aplus-touch\" content=\"1\">\n    <style>\n        body,html{width:100%;height:100%}\n        *{margin:0;padding:0}\n        body{background-color:#fff}\n        #browser img{\n            width:50px;\n        }\n        #browser{\n            margin: 0px 10px;\n            text-align:center;\n        }\n        #contens{\n            font-weight: bold;\n            color: #2466f4;\n            margin:-285px 0px 10px;\n            text-align:center;\n            font-size:20px;\n            margin-bottom: 125px;\n        }\n        .top-bar-guidance{font-size:15px;color:#fff;height:70%;line-height:1.8;padding-left:20px;padding-top:20px;background:url(/assets/common/images/banner.png) center top/contain no-repeat}\n        .top-bar-guidance .icon-safari{width:25px;height:25px;vertical-align:middle;margin:0 .2em}\n        .app-download-tip{margin:0 auto;width:290px;text-align:center;font-size:15px;color:#2466f4;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAcAQMAAACak0ePAAAABlBMVEUAAAAdYfh+GakkAAAAAXRSTlMAQObYZgAAAA5JREFUCNdjwA8acEkAAAy4AIE4hQq/AAAAAElFTkSuQmCC) left center/auto 15px repeat-x}\n        .app-download-tip .guidance-desc{background-color:#fff;padding:0 5px}\n        .app-download-btn{display:block;width:214px;height:40px;line-height:40px;margin:18px auto 0 auto;text-align:center;font-size:18px;color:#2466f4;border-radius:20px;border:.5px #2466f4 solid;text-decoration:none}\n    </style>\n</head>\n<body>\n\n<div class=\"top-bar-guidance\">\n    <p>{{ __('dujiaoka.equipment.click_on_the_upper_right_corner') }}<img src=\"/assets/common/images/3dian.png\" class=\"icon-safari\">{{ __('dujiaoka.equipment.open_the_browser') }}</p>\n    <p>{{ __('dujiaoka.equipment.apple_device') }}<img src=\"/assets/common/images/iphone.png\" class=\"icon-safari\">{{ __('dujiaoka.equipment.android_device') }}<img src=\"/assets/common/images/android.png\" class=\"icon-safari\">↗↗↗</p>\n</div>\n\n<div id=\"contens\">\n    <p><br/><br/></p>\n    <p>1.{{ __('dujiaoka.equipment.does_not_support_wechat_or_qq_access') }}</p>\n    <p><br/></p>\n    <p>2.{{ __('dujiaoka.equipment.please_follow_the_prompts_to_open') }}</p>\n</div>\n\n<p><br/><br/></p>\n<div class=\"app-download-tip\">\n    <span class=\"guidance-desc\">{{ $nowUri }}</span>\n</div>\n<p><br/></p>\n<div class=\"app-download-tip\">\n    <span class=\"guidance-desc\">{{ __('dujiaoka.equipment.open_browser_tips') }}</span>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "resources/views/email/mail.blade.php",
    "content": "{!! $body !!}\n"
  },
  {
    "path": "resources/views/hyper/errors/error.blade.php",
    "content": "@extends('hyper.layouts.default')\n\n@section('content')\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"page-title-box\">\n            <h4 class=\"page-title\">{{ __('hyper.error_error') }}</h4>\n        </div>\n    </div>\n</div>\n<div class=\"row justify-content-center\">\n    <div class=\"col-lg-6\">\n\t\t<div class=\"text-center\">\n\t\t\t<div class=\"text-error mt-4\">error</div>\n            <h1 class=\"text-uppercase text-danger mt-3\">{{ $content }}</h1>\n            @if(!$url)\n                <a class=\"btn btn-info mt-3\" href=\"javascript:history.back(-1);\"><i class=\"mdi mdi-reply\"></i> {{ __('hyper.error_back_btn') }}</a>\n\t\t\t@else\n                <a class=\"btn btn-info mt-3\" href=\"{{ $url }}\"><i class=\"mdi mdi-reply\"></i> {{ __('hyper.error_back_btn') }}</a>\n            @endif\n        </div> <!-- end /.text-center-->\n    </div> <!-- end col-->\n</div>\n@stop"
  },
  {
    "path": "resources/views/hyper/layouts/_footer.blade.php",
    "content": "<!-- Footer Start -->\n<footer class=\"hyper-footer\">\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col-md-6\">\n            \t<div class=\"footer-links\">\n                    Powered by <a href=\"https://github.com/assimon/dujiaoka\">@独角数卡.</a>\n                </div>\n            </div>\n            <div class=\"col-md-6\">\n                <div class=\"text-md-right footer-links d-none d-md-block\">\n                    {!! dujiaoka_config_get('footer') !!}\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"back-to-top\">\n        <button class=\" btn btn-primary\" id=\"back-to-top\">\n            <i class=\"dripicons-chevron-up\"></i>\n        </button>\n    </div>\n</footer>\n<!-- end Footer -->\n"
  },
  {
    "path": "resources/views/hyper/layouts/_header.blade.php",
    "content": "<head>\n    <meta charset=\"utf-8\" />\n    <title>{{ isset($page_title) ? $page_title : '' }} | {{ dujiaoka_config_get('title') }}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta name=\"Keywords\" content=\"{{ dujiaoka_config_get('keywords') }}\">\n    <meta name=\"Description\" content=\"{{ dujiaoka_config_get('description') }}\">\n    @if(\\request()->getScheme() == \"https\")\n    <meta http-equiv=\"Content-Security-Policy\" content=\"upgrade-insecure-requests\">\n    @endif\n    <link rel=\"shortcut icon\" href=\"/favicon.ico\">\n    <link href=\"/assets/hyper/css/vendor/jquery-jvectormap-1.2.2.css\" rel=\"stylesheet\" type=\"text/css\">\n    <link href=\"/assets/hyper/css/icons.min.css\" rel=\"stylesheet\" type=\"text/css\">\n    <link href=\"/assets/hyper/css/app-creative.min.css\" rel=\"stylesheet\" type=\"text/css\" id=\"light-style\">\n    <link href=\"/assets/hyper/css/hyper.css?v=045256\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n"
  },
  {
    "path": "resources/views/hyper/layouts/_nav.blade.php",
    "content": "<div class=\"header-navbar\">\n    <div class=\"container header-flex\">\n        <!-- LOGO -->\n        <a href=\"/\" class=\"topnav-logo\" style=\"float: none;\">\n            <img src=\"{{ picture_ulr(dujiaoka_config_get('img_logo')) }}\" height=\"36\">\n            <div class=\"logo-title\">{{ dujiaoka_config_get('text_logo') }}</div>\n        </a>\n        <a class=\"btn btn-outline-primary\" href=\"{{ url('order-search') }}\">\n            <i class=\"noti-icon uil-file-search-alt search-icon\"></i>\n            查询订单\n        </a>\n    </div>\n</div>"
  },
  {
    "path": "resources/views/hyper/layouts/_script.blade.php",
    "content": "<script src=\"/assets/hyper/js/jquery-3.4.1.min.js\"></script>\n<script src=\"/assets/hyper/js/vendor.min.js\"></script>\n<script src=\"/assets/hyper/js/app.min.js\"></script>\n<script src=\"/assets/hyper/js/hyper.js?v=215115\"></script>"
  },
  {
    "path": "resources/views/hyper/layouts/default.blade.php",
    "content": "<!DOCTYPE html>\n<html lang=\"{{ str_replace('_','-',strtolower(app()->getLocale())) }}\">\n@include('hyper.layouts._header')\n<body data-layout=\"topnav\">\n    <div class=\"wrapper\">\n        <div class=\"content-page\">\n            <div class=\"content\">\n                @include('hyper.layouts._nav')\n                <div class=\"container\">\n                    @yield('content')\n                </div>\n            </div><!-- content -->\n            @include('hyper.layouts._footer')\n        </div><!-- content-page -->\n    </div><!-- wrapper -->\n    @include('hyper.layouts._script')\n    @section('js')\n    @show\n</body>\n</html>"
  },
  {
    "path": "resources/views/hyper/layouts/seo.blade.php",
    "content": "<!DOCTYPE html>\n<html lang=\"{{ str_replace('_','-',strtolower(app()->getLocale())) }}\">\n<head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <meta name=\"applicable-device\" content=\"pc,mobile\">\n    <title>{{ isset($page_title) ? $page_title : '' }} | {{ dujiaoka_config_get('title') }}</title>\n    <meta name=\"keywords\" content=\"{{ $gd_keywords }}\">\n    <meta name=\"description\" content=\"{{ $gd_description }}\">\n    <meta property=\"og:type\" content=\"article\">\n    <meta property=\"og:image\" content=\"{{ $picture }}\">\n    <meta property=\"og:title\" content=\"{{ isset($page_title) ? $page_title : '' }}\">\n    <meta property=\"og:description\" content=\"{{ $gd_description }}\">    \n    <meta property=\"og:release_date\" content=\"{{ $updated_at }}\">\n    @if(\\request()->getScheme() == \"https\")\n    <meta http-equiv=\"Content-Security-Policy\" content=\"upgrade-insecure-requests\">\n    @endif\n    <link rel=\"shortcut icon\" href=\"/favicon.ico\">\n    <link href=\"/assets/hyper/css/vendor/jquery-jvectormap-1.2.2.css\" rel=\"stylesheet\" type=\"text/css\">\n    <link href=\"/assets/hyper/css/icons.min.css\" rel=\"stylesheet\" type=\"text/css\">\n    <link href=\"/assets/hyper/css/app-creative.min.css\" rel=\"stylesheet\" type=\"text/css\" id=\"light-style\">\n    <link href=\"/assets/hyper/css/hyper.css?v=045256\" rel=\"stylesheet\" type=\"text/css\">\n</head>\n<body data-layout=\"topnav\">\n    <div class=\"wrapper\">\n        <div class=\"content-page\">\n            <div class=\"content\">\n                @include('hyper.layouts._nav')\n                <div class=\"container\">\n                    @yield('content')\n                </div>\n            </div><!-- content -->\n            @include('hyper.layouts._footer')\n        </div><!-- content-page -->\n    </div><!-- wrapper -->\n    @include('hyper.layouts._script')\n    @section('js')\n    @show\n</body>\n</html>"
  },
  {
    "path": "resources/views/hyper/readme.md",
    "content": "##   Hyper Theme for dujiaoka\n\n### HTML framework\n\nBootstrap\n\nLink: https://coderthemes.com/hyper/\n\n### Author\n\n彼萌\n\n### Telegram\n\nhttps://t.me/bimoe\n\n### Update\n\n2022-4-1"
  },
  {
    "path": "resources/views/hyper/static_pages/bill.blade.php",
    "content": "@extends('hyper.layouts.default')\n@section('content')\n<div class=\"row justify-content-center\">\n    <div class=\"col-lg-6\">\n        <div class=\"page-title-box\">\n            {{-- 确认订单 --}}\n            <h4 class=\"page-title\">{{ __('hyper.bill_title') }}</h4>\n        </div>\n    </div>\n</div>\n<div class=\"row justify-content-center\">\n    <div class=\"col-lg-6\">\n        <div class=\"card card-body\">\n        \t<div class=\"mx-auto\">\n        \t    {{-- 订单编号 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.bill_order_number') }}：</label><span>{{ $order_sn }}</span></div>\n                {{-- 商品名称 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.bill_product_name') }}：</label><span>{{ $title }}</span></div>\n                {{-- 商品单价 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.bill_commodity_price') }}：</label><span>{{ $goods_price }}</span></div>\n                {{-- 购买数量 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.bill_purchase_quantity') }}：</label><span>x {{ $buy_amount }}</span></div>\n                @if(!empty($coupon))\n                {{-- 优惠码 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.bill_promo_code') }}：</label><span>{{ $coupon['coupon'] }}</span></div>\n                {{-- 优惠金额 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.bill_discounted_price') }}：</label><span>{{ $coupon_discount_price }}</span></div>\n                @endif\n                {{-- 商品总价 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.bill_actual_payment') }}：</label><span>{{ $actual_price }}</span></div>\n                {{-- 电子邮箱 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.bill_email') }}：</label><span>{{ $email }}</span></div>\n                @if(!empty($info))\n                {{-- 订单资料 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.bill_order_information') }}：</label><span>{{ $info }}</span></div>\n                @endif\n                {{-- 支付方式 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.bill_payment_method') }}：</label><span>{{ $pay['pay_name'] }}</span></div>\n            </div>\n            <div class=\"text-center\">\n                {{-- 立即支付 --}}\n            \t<a href=\"{{ url('pay-gateway', ['handle' => urlencode($pay['pay_handleroute']),'payway' => $pay['pay_check'], 'orderSN' => $order_sn]) }}\"\n                   class=\"btn btn-danger\">\n                    {{ __('hyper.bill_pay_immediately') }}\n                </a>\n            </div>\n        </div>\n    </div>\n</div>\n@stop\n@section('js')\n@stop\n"
  },
  {
    "path": "resources/views/hyper/static_pages/buy.blade.php",
    "content": "@extends('hyper.layouts.seo')\n@section('content')\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"page-title-box\">\n            {{-- 产品详细信息 --}}\n            <h4 class=\"page-title\">{{ __('hyper.buy_title') }}</h4>\n        </div>\n    </div>\n</div>\n<div class=\"buy-grid\">\n    <div class=\"buy-shop hyper-sm-last\">\n        <div class=\"card card-body sticky\">\n            <form id=\"buy-form\" action=\"{{ url('create-order') }}\" method=\"post\">\n                {{ csrf_field() }}\n                <div class=\"form-group\">\n                    <h3>\n                        {{-- 商品名称 --}}\n                        {{ $gd_name }}\n                    </h3>\n                </div>\n                <div class=\"form-group\">\n                    @if($type == \\App\\Models\\Goods::AUTOMATIC_DELIVERY)\n                        {{-- 自动发货 --}}\n                        <span class=\"badge badge-outline-primary\">{{ __('hyper.buy_automatic_delivery') }}</span>\n                    @else\n                        {{-- 人工发货 --}}\n                        <span class=\"badge badge-outline-danger\">{{ __('hyper.buy_charge') }}</span>\n                    @endif\n                    {{-- 库存 --}}\n                    <span class=\"badge badge-outline-primary\">{{ __('hyper.buy_in_stock') }}({{ $in_stock }})</span>\n                    @if($buy_limit_num > 0)\n                        <span class=\"badge badge-outline-dark\"> {{__('hyper.buy_purchase_restrictions')}}({{ $buy_limit_num }})</span>\n                    @endif\n                </div>\n                @if(!empty($wholesale_price_cnf) && is_array($wholesale_price_cnf))\n                    <div class=\"form-group\">\n                        <div class=\"alert alert-dark bg-white text-dark mb-0\" role=\"alert\">\n                            {{-- 批发优惠 --}}\n                            @foreach($wholesale_price_cnf as $ws)\n                                {{-- 购买 x 件起， x 元/件 --}}\n                                <span>\n                                    {{ __('hyper.buy_purchase') }} {{ $ws['number'] }} {{__('hyper.buy_the_above')}}，{{ $ws['price']  }} {{__('hyper.buy_each')}}。\n                                </span>\n                            @endforeach\n                        </div>\n                    </div>\n                @endif\n                <div class=\"form-group\">\n                    <!--<div class=\"buy-title\">{{ __('hyper.buy_price') }}</div>-->\n                    <h3>\n                        {{-- 价格 --}}\n                        <span class=\"buy-price\">{{ __('hyper.global_currency') }} {{ $actual_price }}</span>\n                        {{-- 原价 --}}\n                        <small><del>¥ {{ $retail_price }}</del></small>\n                    </h3>\n                </div>\n                <div class=\"form-group\">\n                    {{-- 电子邮箱 --}}\n                    <div class=\"buy-title\">{{ __('hyper.buy_email') }}</div>\n                    <input type=\"hidden\" name=\"gid\" value=\"{{ $id }}\">\n                    {{-- 接收卡密或通知 --}}\n                    <input type=\"email\" name=\"email\" class=\"form-control\" placeholder=\"{{ __('hyper.buy_input_account') }}\">\n                </div>\n                <div class=\"form-group\">\n                    {{-- 购买数量 --}}\n                    <div class=\"buy-title\">{{ __('hyper.buy_purchase_quantity') }}</div>\n                    <div class=\"input-group\">\n                        <input data-toggle=\"touchspin\" type=\"text\" name=\"by_amount\" value=\"1\" data-bts-max=\"999\">\n                    </div>\n                </div>\n                @if(dujiaoka_config_get('is_open_search_pwd') == \\App\\Models\\Goods::STATUS_OPEN)\n                <div class=\"form-group\">\n                    {{-- 查询密码 --}}\n                    <div class=\"buy-title\">{{ __('hyper.buy_search_password') }}</div>\n                    {{-- 查询订单密码 --}}\n                    <input type=\"text\" name=\"search_pwd\" value=\"\" class=\"form-control\" placeholder=\"{{ __('hyper.buy_input_search_password') }}\">\n                </div>\n                @endif\n                @if(isset($open_coupon))\n                    <div class=\"form-group\">\n                        {{-- 优惠码 --}}\n                        <div class=\"buy-title\">{{ __('hyper.buy_promo_code') }}</div>\n                        {{-- 您有优惠码吗？ --}}\n                        <input type=\"text\" name=\"coupon_code\" class=\"form-control\" placeholder=\"{{ __('hyper.buy_input_promo_code') }}\">\n                    </div>\n                @endif\n                @if($type == \\App\\Models\\Goods::MANUAL_PROCESSING && is_array($other_ipu))\n                    @foreach($other_ipu as $ipu)\n                        <div class=\"form-group\">\n                            <div class=\"buy-title\">{{ $ipu['desc'] }}</div>\n                            <input type=\"text\" name=\"{{ $ipu['field'] }}\" @if($ipu['rule'] !== false) required @endif class=\"form-control\" placeholder=\"{{ $ipu['placeholder'] }}\">\n                        </div>\n                    @endforeach\n                @endif\n                @if(dujiaoka_config_get('is_open_geetest') == \\App\\Models\\Goods::STATUS_OPEN )\n                    <div class=\"form-group\">\n                        {{-- 极验证 --}}\n                        <div class=\"buy-title\">{{ __('hyper.buy_behavior_verification') }}</div>\n                        <div id=\"geetest-captcha\"></div>\n                        <p id=\"wait-geetest-captcha\" class=\"show\">loading...</p>\n                    </div>\n                @endif\n                @if(dujiaoka_config_get('is_open_img_code') == \\App\\Models\\Goods::STATUS_OPEN)\n                    {{-- 图形验证码 --}}\n                    <div class=\"form-group\">\n                        <div class=\"buy-title\">{{ __('hyper.buy_verify_code') }}</div>\n                        <div class=\"input-group\">\n                            <input type=\"text\" name=\"img_verify_code\" value=\"\" class=\"form-control\" placeholder=\"{{ __('hyper.buy_verify_code') }}\">\n                            <div class=\"input-group-append\">\n                                <div class=\"buy-captcha\">\n                                    <img class=\"captcha-img\"  src=\"{{ captcha_src('buy') . time() }}\" onclick=\"refresh()\" style=\"cursor: pointer;\">\n                                </div>\n                            </div>\n                        </div>\n                        <script>\n                            function refresh(){\n                                $('img[class=\"captcha-img\"]').attr('src','{{ captcha_src('buy') }}'+Math.random());\n                            }\n                        </script>\n                    </div>\n                @endif\n                <div class=\"form-group\">\n                    {{-- 支付方式 --}}\n                    <div class=\"buy-title\">{{ __('hyper.buy_payment_method') }}</div>\n                    <div class=\"input-group\">\n                        <input type=\"hidden\" name=\"payway\" value=\"{{ $payways[0]['id'] ?? 0 }}\">\n                        <div class=\"pay-grid\">\n                        @foreach($payways as $key => $way)\n                            <div class=\"btn pay-type @if($key == 0) active @endif\"\n                                         data-type=\"{{ $way['pay_check'] }}\" data-id=\"{{ $way['id'] }}\" data-name=\"{{ $way['pay_name'] }}\">\n                            </div>\n                        @endforeach\n                        </div>\n                    </div>\n                </div>\n                <div class=\"mt-4 text-center\">\n                    {{-- 提交订单 --}}\n                    <button type=\"submit\" class=\"btn btn-danger\" id=\"submit\">\n                        <i class=\"mdi mdi-truck-fast mr-1\"></i>\n                            {{ __('hyper.buy_order_now') }}\n                    </button>\n                </div>\n            </form>\n        </div> <!-- end card-->\n    </div>\n    <div class=\"card card-body buy-product\">\n        {{-- 商品详情 --}}\n        <h5 class=\"card-title\">{{ __('hyper.buy_product_desciption') }}</h5>\n        {!! $description !!}\n    </div>\n</div>\n<div class=\"modal fade\" id=\"buy_prompt\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n    <div class=\"modal-dialog modal-dialog-centered\">\n        <div class=\"modal-content\">\n            <div class=\"modal-header\">\n                {{-- 购买提示 --}}\n                <h5 class=\"modal-title\" id=\"myCenterModalLabel\">{{ __('hyper.buy_purchase_tips') }}</h5>\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button>\n            </div>\n            <div class=\"modal-body\">\n                {!! $buy_prompt !!}\n            </div>\n        </div><!-- /.modal-content -->\n    </div><!-- /.modal-dialog -->\n</div><!-- /.modal -->\n<div class=\"modal fade\" id=\"img-modal\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n    <div class=\"modal-dialog modal-dialog-centered\" style=\"max-width: none;\">\n        <img id=\"img-zoom\" style=\"border-radius: 5px;\">\n    </div><!-- /.modal-dialog -->\n</div><!-- /.modal -->\n@stop\n@section('js')\n<script>\n    $('#submit').click(function(){\n        if($(\"input[name='email']\").val() == ''){\n            {{-- 邮箱不能为空 --}}\n            $.NotificationApp.send(\"{{ __('hyper.buy_warning') }}\",\"{{ __('hyper.buy_empty_mailbox') }}\",\"top-center\",\"rgba(0,0,0,0.2)\",\"info\");\n            return false;\n        }\n        if($(\"input[name='by_amount']\").val() == 0 ){\n            {{-- 购买数量不能为0 --}}\n            $.NotificationApp.send(\"{{ __('hyper.buy_warning') }}\",\"{{ __('hyper.buy_zero_quantity') }}\",\"top-center\",\"rgba(0,0,0,0.2)\",\"info\");\n            return false;\n        }\n        if($(\"input[name='by_amount']\").val() > {{ $in_stock }}){\n            {{-- 数量不允许大于库存 --}}\n            $.NotificationApp.send(\"{{ __('hyper.buy_warning') }}\",\"{{ __('hyper.buy_exceeds_stock') }}\",\"top-center\",\"rgba(0,0,0,0.2)\",\"info\");\n            return false;\n        }\n        @if($buy_limit_num > 0)\n        if($(\"input[name='by_amount']\").val() > {{ $buy_limit_num }}){\n            {{-- 已超过限购数量 --}}\n            $.NotificationApp.send(\"{{ __('hyper.buy_warning') }}\",\"{{ __('hyper.buy_exceeds_limit') }}\",\"top-center\",\"rgba(0,0,0,0.2)\",\"info\");\n            return false;\n        }\n        @endif\n        @if(dujiaoka_config_get('is_open_search_pwd') == \\App\\Models\\Goods::STATUS_OPEN)\n        if($(\"input[name='search_pwd']\").val() == 0){\n            {{-- 查询密码不能为空 --}}\n            $.NotificationApp.send(\"{{ __('hyper.buy_warning') }}\",\"{{ __('hyper.buy_empty_query_password') }}\",\"top-center\",\"rgba(0,0,0,0.2)\",\"info\");\n            return false;\n        }\n        @endif\n        @if(dujiaoka_config_get('is_open_img_code') == \\App\\Models\\Goods::STATUS_OPEN)\n        if($(\"input[name='img_verify_code']\").val() == ''){\n            {{-- 验证码不能为空 --}}\n            $.NotificationApp.send(\"{{ __('hyper.buy_warning') }}\",\"{{ __('hyper.buy_empty_captcha') }}\",\"top-center\",\"rgba(0,0,0,0.2)\",\"info\");\n            return false;\n        }\n        @endif\n    });\n</script>\n<script>\n    @if(!empty($buy_prompt))\n        $('#buy_prompt').modal();\n    @endif\n        $(function() {\n        //点击图片放大\n        $(\"#img-zoom\").click(function(){\n            $('#img-modal').modal(\"hide\");\n        });\n        $(\"#img-dialog\").click(function(){\n            $('#img-modal').modal(\"hide\");\n        });\n        $(\".buy-product img\").each(function(i){\n            var src = $(this).attr(\"src\");\n            $(this).click(function () {\n                $(\"#img-zoom\").attr(\"src\", src);\n                var oImg = $(this);\n                var img = new Image();\n                img.src = $(oImg).attr(\"src\");\n                var realWidth = img.width;\n                var realHeight = img.height;\n                var ww = $(window).width();\n                var hh = $(window).height();\n                $(\"#img-content\").css({\"top\":0,\"left\":0,\"height\":\"auto\"});\n                $(\"#img-zoom\").css({\"height\":\"auto\"});\n                $(\"#img-zoom\").css({\"margin-left\":\"auto\"});\n                $(\"#img-zoom\").css({\"margin-right\":\"auto\"});\n                if((realWidth+20)>ww){\n                    $(\"#img-content\").css({\"width\":\"100%\"});\n                    $(\"#img-zoom\").css({\"width\":\"100%\"});\n                }else{\n                    $(\"#img-content\").css({\"width\":realWidth+20, \"height\":realHeight+20});\n                    $(\"#img-zoom\").css({\"width\":realWidth, \"height\":realHeight});\n                }\n                if((hh-realHeight-40)>0){\n                    $(\"#img-content\").css({\"top\":(hh-realHeight-40)/2});\n                }\n                if((ww-realWidth-20)>0){\n                    $(\"#img-content\").css({\"left\":(ww-realWidth-20)/2});\n                }\n                $('#img-modal').modal();\n            });\n        });\n    });\n</script>\n@if(dujiaoka_config_get('is_open_geetest') == \\App\\Models\\Goods::STATUS_OPEN )\n<script src=\"https://static.geetest.com/static/tools/gt.js\"></script>\n<script>\n    var geetest = function(url) {\n        var handlerEmbed = function(captchaObj) {\n            $(\"#geetest-captcha\").closest('form').submit(function(e) {\n                var validate = captchaObj.getValidate();\n                if (!validate) {\n                    $.NotificationApp.send(\"{{ __('hyper.buy_warning') }}\",\"{{ __('hyper.buy_correct_verification') }}\",\"top-center\",\"rgba(0,0,0,0.2)\",\"info\");\n                    e.preventDefault();\n                }\n            });\n            captchaObj.appendTo(\"#geetest-captcha\");\n            captchaObj.onReady(function() {\n                $(\"#wait-geetest-captcha\")[0].className = \"d-none\";\n            });\n            captchaObj.onSuccess(function () {$('#geetest-captcha').attr(\"placeholder\",'{{ __('dujiaoka.success_behavior_verification') }}')})\n\n            captchaObj.appendTo(\"#geetest-captcha\");\n        };\n        $.ajax({\n            url: url + \"?t=\" + (new Date()).getTime(),\n            type: \"get\",\n            dataType: \"json\",\n            success: function(data) {\n                initGeetest({\n                    width: '100%',\n                    gt: data.gt,\n                    challenge: data.challenge,\n                    product: \"popup\",\n                    offline: !data.success,\n                    new_captcha: data.new_captcha,\n                    lang: '{{ dujiaoka_config_get('language') ?? 'zh_CN' }}',\n                    http: '{{ (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? \"https://\" : \"http://\" }}' + '://'\n                }, handlerEmbed);\n            }\n        });\n    };\n    (function() {\n        geetest('{{ '/check-geetest' }}');\n    })();\n</script>\n@endif\n@stop\n"
  },
  {
    "path": "resources/views/hyper/static_pages/home.blade.php",
    "content": "@extends('hyper.layouts.default')\n@section('content')\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"page-title-box\">\n            <div class=\"page-title-right\">\n                <div class=\"app-search\">\n                    <div class=\"position-relative\">\n                        <input type=\"text\" class=\"form-control\" id=\"search\" placeholder=\"{{ __('hyper.home_search_box') }}\">\n                        <span class=\"uil-search\"></span>\n                    </div>\n                </div>\n            </div>\n            <h4 class=\"page-title\">\n                <button type=\"button\" class=\"btn btn-outline-primary ml-1\" id=\"notice-open\">\n                    <i class=\"uil-comment-alt-notes me-1\"></i>\n                    {{-- 公告 --}}\n                    {{ __('hyper.notice_announcement') }}\n                </button>\n            </h4>\n        </div>\n    </div>\n</div>\n<div class=\"nav nav-list\">\n    <a href=\"#group-all\" class=\"tab-link active\" data-bs-toggle=\"tab\" aria-expanded=\"false\" role=\"tab\" data-toggle=\"tab\">\n        <span class=\"tab-title\">\n        {{-- 全部 --}}\n        {{ __('hyper.home_whole') }}\n        </span>\n        <div class=\"img-checkmark\">\n            <img src=\"/assets/hyper/images/check.png\">\n        </div>\n    </a>\n    @foreach($data as  $index => $group)\n    <a href=\"#group-{{ $group['id'] }}\" class=\"tab-link\" data-bs-toggle=\"tab\" aria-expanded=\"false\" role=\"tab\" data-toggle=\"tab\">\n        <span class=\"tab-title\">\n            {{ $group['gp_name'] }}\n        </span>\n        <div class=\"img-checkmark\">\n            <img src=\"/assets/hyper/images/check.png\">\n        </div>\n    </a>\n    @endforeach\n</div>\n<div class=\"tab-content\">\n    <div class=\"tab-pane active\" id=\"group-all\">\n        <div class=\"hyper-wrapper\">\n            @foreach($data as $group)\n                @foreach($group['goods'] as $goods)\n                    @if($goods['in_stock'] > 0)\n                    <a href=\"{{ url(\"/buy/{$goods['id']}\") }}\" class=\"home-card category\">\n                    @else\n                    <a href=\"javascript:void(0);\" onclick=\"sell_out_tip()\" class=\"home-card category ribbon-box\">\n                        <div class=\"ribbon-two ribbon-two-danger\">\n                            {{-- 缺货 --}}\n                            <span>{{ __('hyper.home_out_of_stock') }}</span>\n                        </div>\n                    @endif\n                        <img class=\"home-img\" src=\"/assets/hyper/images/loading.gif\" data-src=\"{{ picture_ulr($goods['picture']) }}\">\n                        <div class=\"flex\">\n                            <p class=\"name\">\n                                {{ $goods['gd_name'] }}\n                            </p>\n                            <div class=\"price\">\n                                {{ __('hyper.global_currency') }}<b>{{ $goods['actual_price'] }}</b>\n                            </div>\n                        </div>\n                    </a>\n                @endforeach\n            @endforeach\n        </div>\n    </div>\n    @foreach($data as  $index => $group)\n        <div class=\"tab-pane\" id=\"group-{{ $group['id'] }}\">\n            <div class=\"hyper-wrapper\">\n                @foreach($group['goods'] as $goods)\n                    @if($goods['in_stock'] > 0)\n                    <a href=\"{{ url(\"/buy/{$goods['id']}\") }}\" class=\"home-card category\">\n                    @else\n                    <a href=\"javascript:void(0);\" onclick=\"sell_out_tip()\" class=\"home-card category ribbon-box\">\n                        <div class=\"ribbon-two ribbon-two-danger\">\n                            {{-- 缺货 --}}\n                            <span>{{ __('hyper.home_out_of_stock') }}</span>\n                        </div>\n                    @endif\n                        <img class=\"home-img\" src=\"/assets/hyper/images/loading.gif\" data-src=\"{{ picture_ulr($goods['picture']) }}\">\n                        <div class=\"flex\">\n                            <p class=\"name\">\n                                {{ $goods['gd_name'] }}\n                            </p>\n                            <div class=\"price\">\n                                {{ __('hyper.global_currency') }}<b>{{ $goods['actual_price'] }}</b>\n                            </div>\n                        </div>\n                    </a>\n                @endforeach\n            </div>\n        </div>\n    @endforeach\n</div>\n<div class=\"modal fade\" id=\"notice-modal\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n    <div class=\"modal-dialog modal-dialog-centered\">\n        <div class=\"modal-content\">\n            <div class=\"modal-header\">\n                <h5 class=\"modal-title\" id=\"myCenterModalLabel\">{{ __('hyper.notice_announcement') }}</h5>\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button>\n            </div>\n            <div class=\"modal-body\">\n                {!! dujiaoka_config_get('notice') !!}\n            </div>\n        </div>\n    </div>\n</div>\n@stop \n@section('js')\n<script>\n    $('#notice-open').click(function() {\n        $('#notice-modal').modal();\n    });\n    $(\"#search\").on(\"input\",function(e){\n        var txt = $(\"#search\").val();\n        if($.trim(txt)!=\"\") {\n            $(\".category\").hide().filter(\":contains('\"+txt+\"')\").show();\n        } else {\n            $(\".category\").show();\n        }\n    });\n    function sell_out_tip() {\n        $.NotificationApp.send(\"{{ __('hyper.home_tip') }}\",\"{{ __('hyper.home_sell_out_tip') }}\",\"top-center\",\"rgba(0,0,0,0.2)\",\"info\");\n    }\n</script>\n@stop"
  },
  {
    "path": "resources/views/hyper/static_pages/orderinfo.blade.php",
    "content": "@extends('hyper.layouts.default')\n@section('content')\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"page-title-box\">\n            {{-- 订单详情 --}}\n            <h4 class=\"page-title\">{{ __('hyper.orderinfo_title') }}</h4>\n        </div>\n    </div>\n</div>\n<div class=\"orderinfo-grid\">\n@foreach($orders as $order)\n    <div class=\"row\">\n        <div class=\"col-md-12\">\n            <h3>\n                <span class=\"badge badge-outline-primary\">\n                    订单号：{{ $order['order_sn'] }}\n                </span>\n            </h3>\n        </div>\n    </div>\n    <div class=\"card card-body\">\n        <div class=\"orderinfo-card-grid\">\n            <div class=\"orderinfo-info\">\n                {{-- 订单名称 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.orderinfo_order_title') }}：</label><span>{{ $order['title'] }}</span></div>\n                {{-- 下单数量 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.orderinfo_number_of_orders') }}：</label><span>{{ $order['buy_amount'] }}</span></div>\n                {{-- 下单时间 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.orderinfo_order_time') }}：</label><span>{{ $order['created_at'] }}</span></div>\n                {{-- 付款邮箱 --}}\n                <div class=\"mb-1\"><label>{{ __('hyper.orderinfo_email') }}：</label><span>{{ $order['email'] }}</span></div>\n                <div class=\"mb-1\">\n                    {{-- 订单类型 --}}\n                    <label>{{ __('hyper.orderinfo_order_class') }}：</label>\n                    <span>\n                        @if($order['type'] == \\App\\Models\\Order::AUTOMATIC_DELIVERY)\n                            {{-- 自动发货 --}}\n                            {{ __('hyper.orderinfo_automatic_delivery') }}\n                        @else\n                            {{-- 人工发货 --}}\n                            {{ __('hyper.orderinfo_charge') }}\n                        @endif\n                    </span>\n                </div>\n                <div class=\"mb-1\">\n                    {{-- 订单总价 --}}\n                    <label>{{ __('hyper.orderinfo_total_order_price') }}：</label>\n                    <span>{{ $order['actual_price'] }}</span>\n                </div>\n                <div class=\"mb-1\">\n                    {{-- 订单状态 --}}\n                    <label>{{ __('hyper.orderinfo_order_status') }}：</label>\n                    <span>\n                        @switch($order['status'])\n                            @case(\\App\\Models\\Order::STATUS_EXPIRED)\n                                {{-- 已过期 --}}\n                                {{ __('hyper.orderinfo_status_expired') }}\n                            @break\n                            @case(\\App\\Models\\Order::STATUS_WAIT_PAY)\n                                {{-- 待支付 --}}\n                                {{ __('hyper.orderinfo_status_wait_pay') }}\n                            @break\n                            @case(\\App\\Models\\Order::STATUS_PENDING)\n                                {{-- 待处理 --}}\n                                {{ __('hyper.orderinfo_status_pending') }}\n                            @break\n                            @case(\\App\\Models\\Order::STATUS_PROCESSING)\n                                {{-- 已处理 --}}\n                                {{ __('hyper.orderinfo_status_processed') }}\n                            @break\n                            @case(\\App\\Models\\Order::STATUS_COMPLETED)\n                                {{-- 已完成 --}}\n                                {{ __('hyper.orderinfo_status_completed') }}\n                            @break\n                            @case(\\App\\Models\\Order::STATUS_FAILURE)\n                                {{-- 已失败 --}}\n                                {{ __('hyper.orderinfo_status_failed') }}\n                            @break\n                            @case(\\App\\Models\\Order::STATUS_FAILURE)\n                                {{-- 状态异常 --}}\n                                {{ __('hyper.orderinfo_status_abnormal') }}\n                            @break\n                        @endswitch\n                    </span>\n                </div>\n                <div class=\"mb-1\">\n                    {{-- 支付方式 --}}\n                    <label>{{ __('hyper.orderinfo_payment_method') }}：</label>\n                    <span>{{ $order['pay']['pay_name'] ?? ''  }}</span>\n                </div>\n            </div>\n            <div class=\"orderinfo-kami\">\n                <h5 class=\"card-title\">\n                    {{ __('hyper.orderinfo_carmi') }}\n                </h5>\n                <textarea class=\"form-control textarea-kami\" rows=\"5\">{{$order['info']}}</textarea>\n                <button class=\"btn btn-outline-primary kami-btn\" data-clipboard-text=\"{{$order['info']}}\">\n                    {{ __('hyper.orderinfo_copy_carmi') }}\n                </button>\n            </div>\n        </div>\n    </div>\n@endforeach\n</div>\n@if(!count($orders))\n<div class=\"row justify-content-center\">\n    <div class=\"col-lg-4\">\n\t\t<div class=\"text-center\">\n\t\t\t<h1 class=\"text-error mt-4\">error</h1>\n            <h4 class=\"text-uppercase text-danger mt-3\">{{ __('hyper.orderinfo_order_information') }}</h4>\n            <a class=\"btn btn-info mt-3\" href=\"javascript:history.back(-1);\"><i class=\"mdi mdi-reply\"></i> {{ __('hyper.error_back_btn') }}</a>\n        </div> <!-- end /.text-center-->\n    </div> <!-- end col-->\n</div>\n@endif\n@stop\n\n@section('js')\n<script src=\"/assets/hyper/js/clipboard.min.js\"></script>\n<script>\n    var clipboard = new ClipboardJS('.kami-btn');\n    clipboard.on('success', function(e){\n        $.NotificationApp.send(\"{{ __('hyper.orderinfo_tips') }}\",\"{{ __('hyper.orderinfo_copy_success') }}\",\"top-center\",\"rgba(0,0,0,0.2)\",\"info\");\n    });\n    clipboard.on('error', function(e){\n        $.NotificationApp.send(\"{{ __('hyper.orderinfo_tips') }}\",\"{{ __('hyper.orderinfo_copy_error') }}\",\"top-center\",\"rgba(0,0,0,0.2)\",\"error\");\n    });\n</script>\n@stop"
  },
  {
    "path": "resources/views/hyper/static_pages/qrpay.blade.php",
    "content": "@extends('hyper.layouts.default')\n@section('content')\n<div class=\"row justify-content-center\">\n    <div class=\"col-lg-6\">\n        <div class=\"page-title-box\">\n            {{-- 扫码支付 --}}\n            <h4 class=\"page-title\">{{ __('hyper.qrpay_title') }}</h4>\n        </div>\n    </div>\n</div>\n<div class=\"row justify-content-center\">\n    <div class=\"col-lg-6\">\n        <div class=\"card border-primary border\">\n            <div class=\"card-body\">\n                <h5 class=\"card-title text-primary text-center\">{{ __('hyper.qrpay_order_expiration_date') }} {{ dujiaoka_config_get('order_expire_time', 5) }} {{ __('hyper.qrpay_expiration_date') }}</h5>\n                <div class=\"text-center\">\n                    <img src=\"data:image/png;base64,{!! base64_encode(QrCode::format('png')->size(200)->generate($qr_code)) !!}\">\n                </div>\n                {{-- 订单金额 --}}\n                <p class=\"card-text text-center\">{{ __('hyper.qrpay_actual_payment') }}: {{ $actual_price }}</p>\n                @if(Agent::isMobile() && isset($jump_payuri))\n                    <p class=\"errpanl\" style=\"text-align: center\"><a href=\"{{ $jump_payuri }}\" class=\"\">{{ __('hyper.qrpay_open_app_to_pay') }}</a></p>\n                @endif\n            </div> <!-- end card-body-->\n        </div>\n    </div>\n</div>\n@stop\n@section('js')\n    <script>\n        var getting = {\n            url:'{{ url('check-order-status', ['orderSN' => $orderid]) }}',\n            dataType:'json',\n            success:function(res) {\n                if (res.code == 400001) {\n                    window.clearTimeout(timer);\n                    $.NotificationApp.send(\"{{ __('hyper.qrpay_notice') }}\",\"{{ __('hyper.order_pay_timeout') }}\",\"top-center\",\"rgba(0,0,0,0.2)\",\"warning\");\n                    setTimeout(\"window.location.href ='/'\",3000);\n                }\n                if (res.code == 200) {\n                    window.clearTimeout(timer);\n                    $.NotificationApp.send(\"{{ __('hyper.qrpay_notice') }}\",\"{{ __('hyper.payment_successful') }}\",\"top-center\",\"rgba(0,0,0,0.2)\",\"success\");\n                    setTimeout(\"window.location.href ='{{ url('detail-order-sn', ['orderSN' => $orderid]) }}'\",3000);\n                }\n            }\n        };\n        var timer = window.setInterval(function(){$.ajax(getting)},5000);\n    </script>\n@stop\n"
  },
  {
    "path": "resources/views/hyper/static_pages/searchOrder.blade.php",
    "content": "@extends('hyper.layouts.default')\n@section('content')\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"page-title-box\">\n            {{-- 查询订单 --}}\n            <h4 class=\"page-title\">{{ __('hyper.searchOrder_title') }}</h4>\n        </div>\n    </div>\n</div>\n<div class=\"row\">\n\t<div class=\"col-12\">\n        <div class=\"card\">\n            <div class=\"card-body\">\n                {{ __('hyper.searchOrder_query_tips') }}\n            </div>\n        </div>\n    </div>\n</div>\n<div class=\"row\">\n    <div class=\"col-12\">\n        <div class=\"card card-body\">\n            <div class=\"tab-pane show active\" id=\"bordered-tabs-preview\">\n                <ul class=\"nav nav-tabs nav-bordered mb-3\">\n                    <li class=\"nav-item\">\n                        <a href=\"#dingdanhao\" data-toggle=\"tab\" aria-expanded=\"false\" class=\"nav-link active\">\n                            {{-- 订单 --}}\n                            <span>{{ __('hyper.searchOrder_order_search_by_number') }}</span>\n                        </a>\n                    </li>\n                    <li class=\"nav-item\">\n                        <a href=\"#youxiang\" data-toggle=\"tab\" aria-expanded=\"true\" class=\"nav-link\">\n                            {{-- 邮箱 --}}\n                            <span>{{ __('hyper.searchOrder_order_search_by_email') }}</span>\n                        </a>\n                    </li>\n                    <li class=\"nav-item\">\n                        <a href=\"#liulanqi\" data-toggle=\"tab\" aria-expanded=\"false\" class=\"nav-link\">\n                            {{-- 缓存 --}}\n                            <span>{{ __('hyper.searchOrder_order_search_by_ie') }}</span>\n                        </a>\n                    </li>\n                </ul>\n                <div class=\"tab-content\">\n                    <div class=\"tab-pane show active\" id=\"dingdanhao\">\n                        <form class=\"needs-validation\" action=\"{{ url('search-order-by-sn') }}\" method=\"post\">\n                        \t{{ csrf_field() }}\n                            <div class=\"form-group mb-3\">\n                                {{-- 订单编号 --}}\n                                <label for=\"validationCustom01\">{{ __('hyper.searchOrder_order_number') }}</label>\n                                <input type=\"text\" class=\"form-control\" name=\"order_sn\" required  placeholder=\"{{ __('hyper.searchOrder_input_order_number') }}\">\n                            </div>\n                            <div class=\"form-group mb-3\">\n                                {{-- 立即查询 --}}\n                                <button class=\"btn btn-primary\" type=\"submit\">{{ __('hyper.searchOrder_search_now') }}</button>\n                                {{-- 重置 --}}\n                                <button type=\"reset\" class=\"btn btn-primary\">{{ __('hyper.searchOrder_reset_order') }}</button>\n                            </div>\n                        </form>\n                    </div>\n                    <div class=\"tab-pane\" id=\"youxiang\">\n                        <form class=\"needs-validation\" action=\"{{ url('search-order-by-email') }}\" method=\"post\">\n                        \t{{ csrf_field() }}\n                            <div class=\"form-group mb-3\">\n                                {{-- 邮箱 --}}\n                                <label for=\"validationCustom01\">{{ __('hyper.searchOrder_email') }}</label>\n                                <input type=\"email\" class=\"form-control\" name=\"email\" required  placeholder=\"{{ __('hyper.searchOrder_input_email') }}\">\n                            </div>\n                            @if(dujiaoka_config_get('is_open_search_pwd', \\App\\Models\\BaseModel::STATUS_CLOSE) == \\App\\Models\\BaseModel::STATUS_OPEN)\n                            <div class=\"form-group mb-3\">\n                                {{-- 查询密码 --}}\n                                <label for=\"validationCustom01\">{{ __('hyper.searchOrder_search_password') }}</label>\n                                <input type=\"password\" class=\"form-control\" name=\"search_pwd\" required  placeholder=\"{{ __('hyper.searchOrder_input_query_password') }}\">\n                            </div>\n                            @endif\n                            <div class=\"form-group mb-3\">\n                                {{-- 立即查询 --}}\n                                <button class=\"btn btn-primary\" type=\"submit\">{{ __('hyper.searchOrder_search_now') }}</button>\n                                {{-- 重置 --}}\n                                <button type=\"reset\" class=\"btn btn-primary\">{{ __('hyper.searchOrder_reset_order') }}</button>\n                            </div>\n                        </form>\n                    </div>\n                    <div class=\"tab-pane\" id=\"liulanqi\">\n                        <form class=\"needs-validation\" action=\"{{ url('search-order-by-browser') }}\" method=\"post\">\n                        \t{{ csrf_field() }}\n                            <div class=\"form-group mb-3\">\n                                {{-- 立即查询 --}}\n                                <button class=\"btn btn-primary\" type=\"submit\">{{ __('hyper.searchOrder_search_now') }}</button>\n                            </div>\n                        </form>\n                    </div>\n                </div>                                          \n            </div>\n        </div>\n    </div>\n</div>\n@stop\n"
  },
  {
    "path": "resources/views/luna/README.md",
    "content": "## 独角数卡 - Luna模板\n\n一套简洁的独角数卡模板\n\n## 特殊用法\n\n#### 商品的其他输入框配置可以配置为下拉选项卡\n\n``` \n使用方法:只需在输入框名字后面跟上选项即可 使用 | 分割选项\n例子：\nservice=所在区服[1号服务器|2号服务器|3号服务器]=true\n```\n\n## 背景图\n\n#### 设计能力有限，觉得背景图不好看的，可自行更换（建议尺寸：1920px*1224px）\n\n背景图文件位置\n\n```\n你的部署路径/public/assets/luna/img/background.png\n```\n\n#### 也可去掉背景图 屏蔽_nav.blade.php中的一个div即可 \n\n_nav.blade.php位置\n\n```\n你的部署路径/resources/views/luna/layouts/_nav.blade.php\n```\n\n```\n/*屏蔽掉文件第一行的div标签即可去掉背景图。例：*/\n{{--<div class=\"background\"></div>--}}\n```\n\n## 作者信息\n[Julyssn](https://github.com/Julyssn) 七月 QQ：77322509\n[发卡网](https://faka.win) TG: [@发卡网](https://t.me/super_faka_bot) 增加luna移动端公告、增加公告边框、为支付跳转按钮与支付二维码之间增加间距\n"
  },
  {
    "path": "resources/views/luna/errors/error.blade.php",
    "content": "@extends('luna.layouts.default')\n\n@section('content')\n    <body>\n    @include('luna.layouts._nav')\n\n    <div class=\"main\">\n        <div class=\"layui-row\">\n            <div class=\"layui-col-md8 layui-col-md-offset2 layui-col-sm12\">\n                <div class=\"main-box\" style=\"text-align: center\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"200\" height=\"200\" viewBox=\"0 0 480 480\"><defs><linearGradient id=\"a\" x1=\"0.5\" y1=\"1\" x2=\"0.564\" gradientUnits=\"objectBoundingBox\"><stop offset=\"0\" stop-color=\"#e0e5ef\" stop-opacity=\"0\"/><stop offset=\"1\" stop-color=\"#e0e5ef\"/></linearGradient><linearGradient id=\"b\" x1=\"0.5\" x2=\"0.5\" y2=\"1\" gradientUnits=\"objectBoundingBox\"><stop offset=\"0\" stop-color=\"#d5d5d5\"/><stop offset=\"1\" stop-color=\"#6b6b6b\" stop-opacity=\"0.059\"/></linearGradient><linearGradient id=\"c\" x1=\"0.222\" y1=\"1.105\" x2=\"0.681\" y2=\"0.152\" gradientUnits=\"objectBoundingBox\"><stop offset=\"0\" stop-color=\"#fff\" stop-opacity=\"0\"/><stop offset=\"1\" stop-color=\"#909aa9\"/></linearGradient><linearGradient id=\"d\" x1=\"-0.392\" y1=\"1.144\" x2=\"0.636\" y2=\"0.061\" xlink:href=\"#c\"/><linearGradient id=\"e\" x1=\"0.027\" y1=\"1.117\" x2=\"0.736\" y2=\"0.141\" xlink:href=\"#c\"/></defs><g transform=\"translate(-135 -375)\"><ellipse cx=\"184\" cy=\"184\" rx=\"184\" ry=\"184\" transform=\"translate(191 431)\" fill=\"#f3f3fa\"/><path d=\"M112,259.243V96h64V259.243a187.037,187.037,0,0,1-64,0ZM0,192.931V0H88V253.371A184.268,184.268,0,0,1,0,192.931ZM208,24h96V169.434a184.369,184.369,0,0,1-96,81.193Z\" transform=\"translate(230 536.999)\" fill=\"url(#a)\"/><g transform=\"translate(267.046 592.758) rotate(-25)\"><rect width=\"156\" height=\"200\" rx=\"8\" transform=\"translate(24 0)\" fill=\"#78818e\"/><path d=\"M8,0H144a8,8,0,0,1,8,8V192a8,8,0,0,1-8,8H8a8,8,0,0,1-8-8V8A8,8,0,0,1,8,0Z\" transform=\"translate(24 0)\" fill=\"#a1a7af\"/><rect width=\"136\" height=\"184\" rx=\"4\" transform=\"translate(32 8)\" fill=\"#dae8e6\"/><path d=\"M36,0H164a4.065,4.065,0,0,1,4,4.127c-7,174.567-15.744,174.717-15.744,174.717s-42.41.678-80.745-3.834A527.118,527.118,0,0,1-1.085,160.8S16,150.623,24,132.053s8-49.52,8-49.52V4.127A4.065,4.065,0,0,1,36,0Z\" transform=\"translate(0 8)\" fill=\"url(#b)\"/><path d=\"M36,0H164a4,4,0,0,1,4,4c-7,169.209-11,171-11,171s-47.75-1.25-85-7A628,628,0,0,1,0,152a47.176,47.176,0,0,0,24-24c8-18,8-48,8-48V4A4,4,0,0,1,36,0Z\" transform=\"translate(0 8)\" fill=\"#fff\"/><rect width=\"40\" height=\"40\" rx=\"2\" transform=\"translate(48 40)\" fill=\"#ebedf5\"/><rect width=\"48\" height=\"16\" rx=\"2\" transform=\"translate(104 40)\" fill=\"#ebedf5\"/><rect width=\"48\" height=\"16\" rx=\"2\" transform=\"translate(104 64)\" fill=\"#ebedf5\"/><path d=\"M1,0S27,2,53,2s52-2,52-2l-1,12s-21.25,2-47,2S0,12,0,12Z\" transform=\"translate(47 96)\" fill=\"#ebedf5\"/><path d=\"M2.5,0s14,2.438,40,2.75,63-1.5,63-1.5l-2,14S68,17.5,42.5,17.5,0,13.25,0,13.25Z\" transform=\"translate(45.5 114.75)\" fill=\"#ebedf5\"/><path d=\"M4.5,0A254.823,254.823,0,0,0,40,3.333C60,3.833,108,2,108,2l-3,17s-38.417,2.75-65,2S0,16,0,16Z\" transform=\"translate(40 136)\" fill=\"#ebedf5\"/></g><g transform=\"matrix(0.966, 0.259, -0.259, 0.966, 397.282, 500.051)\"><rect width=\"6\" height=\"32\" rx=\"2\" transform=\"translate(1)\" fill=\"#b5b9be\"/><rect width=\"6\" height=\"32\" rx=\"2\" fill=\"#dddfe6\"/></g><circle cx=\"1.5\" cy=\"1.5\" r=\"1.5\" transform=\"translate(397 513.452)\" fill=\"#909aa9\"/><path d=\"M-3331,1132c188.947,26.75,289.45-16,289.45-16\" transform=\"translate(3555.8 -620.625)\" fill=\"none\" stroke=\"#909aa9\" stroke-linecap=\"round\" stroke-width=\"2\"/><g transform=\"translate(389 497.405)\"><rect width=\"8\" height=\"40\" rx=\"2\" transform=\"translate(1)\" fill=\"#b5b9be\"/><rect width=\"8\" height=\"40\" rx=\"2\" fill=\"#cdd3df\"/></g><g transform=\"matrix(0.839, 0.545, -0.545, 0.839, 437.927, -8.055)\"><path d=\"M1585.106,53.028a7,7,0,0,1-6.618-4.723l-5.209-15.128a7,7,0,1,1,13.237-4.558l5.209,15.128a7,7,0,0,1-6.619,9.281ZM1580,28.462a2.5,2.5,0,1,0,2.5,2.5A2.5,2.5,0,0,0,1580,28.462Z\" transform=\"translate(-1421.502 512.538)\" fill=\"#909aa9\"/><g transform=\"translate(145.469 536.589)\"><path d=\"M21.951,107.445C7.073,105.525.152,97.989,0,87.2S3.6,54.89,6.22,41.423c1.093-6.458,1.453-6.148,0-6.02S0,31.09,1.866,26.884C2.356,23.48,5.5,23,7.535,23.056a4.1,4.1,0,0,1,.717-1.737s5.013-5.761,10.315-8.273a16.5,16.5,0,0,1,8.1-1.366,10.154,10.154,0,0,0,4.121-.409c2.8-1.181,2.558-2.36,4.769-2.8s10.6.936,11.317,10.872c.7,9.679-4.572,14.545-3.687,19.125.421,2.181.861,3.139,2.5,7.188A36.867,36.867,0,0,1,52.564,56.34c3.049,7.235,5.116,12.177,7.875,13.625s6.04,14.584-6.882,12.558l-.065-.011c5.463-1.532,1.439-.386,4.2,0,8.188.64,8.587,17.883,1,18.952-5.937,2.063-14.9,0-14.9,0v-1c-.04,1.317.078,1.422,0,2.1-.371,3.243-4.3,5.521-12.878,5.521A70.728,70.728,0,0,1,21.951,107.445ZM29.876,5.84A2.986,2.986,0,0,1,33.5,2.9S33.189-.785,36.876.153c4.25.875,2.25,8.625,2.25,8.625s-1.483.875-1.567.875C36.683,9.653,29.814,10.278,29.876,5.84Z\" transform=\"translate(0 0)\" fill=\"#909aa9\" stroke=\"rgba(0,0,0,0)\" stroke-width=\"1\"/><g transform=\"translate(2.001 2.09)\"><g transform=\"translate(40.489 44.55)\"><path d=\"M.779,0A31.23,31.23,0,0,1,7.865,10.425c2.772,6.6,5.877,13.459,8.386,14.78S19.945,35.237,8.2,33.389.779,0,.779,0Z\" fill=\"#fff\"/><path d=\"M.293,0A32.341,32.341,0,0,1,7.246,16.851c.847,8.628,2.933,13.332,5.151,13.016a12.659,12.659,0,0,1-5.991-.025C2.891,29.071-1.127.113.293,0Z\" transform=\"translate(1.438 2.659)\" fill=\"url(#c)\"/></g><path d=\"M40.077,87.626a34.415,34.415,0,0,0,14.137,1.09c6.9-.975,8.727-13.747-.647-15.059C46.3,72.636,47.541,61.489,46.2,51.224S39.641,32.376,38.837,28.2s4.251-9.233,3.614-18.062C41.8,1.07,36.15-.344,34.143.061s-3.609,2.392-6.154,3.47S21.7,2.858,16.878,5.149,7.5,12.7,7.5,12.7c-2.009,2.561.4,10.648-.938,14.691S-.132,66.612,0,76.45,6.429,93.165,19.954,94.917s19.419-.606,19.856-4.448c.279-2.443,1.905-11.053-7.8-12.535-4.83-.74-7.363-1.347-7.363-1.347\" transform=\"translate(0 8.494)\" fill=\"#fff\"/><path d=\"M0,1.594S.961.016,1.726,0c1.313-.026,2.7,1.631,2.7,1.631S.043,3.365,0,1.594Z\" transform=\"translate(32.843 8.554)\" fill=\"#757f95\"/><path d=\"M4.9.072C2.845-.464,2.622,2.158,2.622,2.158S-.268,1.844.02,3.9C.377,6.466,5.851,6.344,5.851,6.344S7.4.728,4.9.072Z\" transform=\"translate(29.714 0)\" fill=\"#757f95\"/><path d=\"M6.817.178S.728-1.16.062,3.5,4.243,11,7.718,4.1\" transform=\"translate(1.634 22.772)\" fill=\"#fff\"/><path d=\"M.411,0s-1.45,17.9,1.1,22.385c2.3,4.044,10.662,5.138,16.755,4.63a25.038,25.038,0,0,0,6.013-1.246c6.068-2.157,2.831-6.2,0-8.893S20.54,6.531,15.686,2.375\" transform=\"translate(8.172 57.25)\" fill=\"url(#d)\"/><path d=\"M4.7,0A.6.6,0,0,0,4.18.31v0L4.17.322A4.814,4.814,0,0,1,.943,2.645l-.019,0,0,0a.6.6,0,0,0-.509.5l-.011,0L0,4.226s.341-.014.842-.088L.9,3.831l.11-.584v.865c.188-.031.389-.073.6-.121V3.243l.064.454.037.268A5.609,5.609,0,0,0,4.1,2.828,4.083,4.083,0,0,0,5.251.851C5.291.7,5.305.6,5.305.6A.6.6,0,0,0,4.7,0Z\" transform=\"translate(17.708 16.722)\" fill=\"#757f95\"/><path d=\"M15.643,1.542c-3.6-3.507-6.766.555-6.766.555s-6.2-4.888-8.5.26c-2.873,6.422,11.8,16.794,11.8,16.794S19.326,5.132,15.643,1.542Z\" transform=\"translate(27.658 57.366)\" fill=\"url(#e)\"/><path d=\"M0,0S5.02,15.274,7.571,19.76c3.236,5.688,9.468,8.51,15.533,6.355s2.831-5.527,0-8.223S19.03,6.1,14.175,1.947\" transform=\"translate(8.621 56.615)\" fill=\"#fff\"/></g></g></g><g transform=\"translate(239.735 501.489)\"><g transform=\"matrix(0.755, -0.656, 0.656, 0.755, 6.82, 4.592)\"><rect width=\"6\" height=\"32\" rx=\"2\" transform=\"translate(1)\" fill=\"#b5b9be\"/><rect width=\"6\" height=\"32\" rx=\"2\" fill=\"#dddfe6\"/></g><circle cx=\"1.5\" cy=\"1.5\" r=\"1.5\" transform=\"translate(17.738 12.298) rotate(-56)\" fill=\"#909aa9\"/><g transform=\"translate(0 9.983) rotate(-56)\"><rect width=\"8\" height=\"40\" rx=\"2\" transform=\"translate(1)\" fill=\"#b5b9be\"/><rect width=\"8\" height=\"40\" rx=\"2\" fill=\"#cdd3df\"/></g></g><g transform=\"translate(359.323 650.849) rotate(-47)\"><rect width=\"68.62\" height=\"15.248\" transform=\"translate(4.222 26.682)\" fill=\"#ffcc43\"/><rect width=\"68.616\" height=\"15.248\" transform=\"translate(45.744) rotate(90)\" fill=\"#ffcc43\"/></g><path d=\"M134.011,161.88l-6.667,23.833,8.833,8.667,25.5-5.833,28.738-30.229L164.264,131.88Z\" transform=\"translate(300.156 434.287)\" fill=\"#78818e\"/><path d=\"M135.344,155.3l-6.5,23.845,4.286,4.143,24.214-5.488,25.333-25.583L160.511,129.88Z\" transform=\"translate(302.156 442.287)\" fill=\"#e5e2e2\"/><path d=\"M182.7,150.552l4.6-4.6a6.537,6.537,0,0,0,0-9.192l-13.148-13.148a6.537,6.537,0,0,0-9.192,0l-4.6,4.6Zm-18.983-14.068,10.671,10.671,5.835,5.835-22.74,22.74c-5.4,1.159-6.554-1.479-5.835-5.835-5.475-.759-9.552-3.2-10.511-9.432L156.487,145.6l-1.4-1.4-15.746,15.266c-3.956.32-4.8-2.238-4.2-6.075l22.74-22.74Z\" transform=\"translate(302.156 444.132)\" fill=\"#909aa9\"/><path d=\"M182.7,150.552l4.6-4.6a6.537,6.537,0,0,0,0-9.192l-13.148-13.148a6.537,6.537,0,0,0-9.192,0l-4.6,4.6Z\" transform=\"translate(302.156 444.067)\" fill=\"#78818e\"/><path d=\"M131.844,167.63l-3.332,11.577,4.476,4.476,12.356-2.8Z\" transform=\"translate(302.156 442.287)\" fill=\"#78818e\"/><path d=\"M186.977,155.3l5.475-5.353a7.493,7.493,0,0,0,0-10.706l-15.663-15.314a7.914,7.914,0,0,0-10.95,0l-5.475,5.353Z\" transform=\"translate(299.156 441.701)\" fill=\"#78818e\"/><path d=\"M182.7,150.552l4.6-4.6a6.537,6.537,0,0,0,0-9.192l-13.148-13.148a6.537,6.537,0,0,0-9.192,0l-4.6,4.6Z\" transform=\"translate(301.156 444.995)\" fill=\"#a1a7af\"/></g></svg>\n                    <div class=\"err_title\">{{ $title }}</div>\n\n                    <div class=\"err_content\">{{ $content }}</div>\n                    @if(!$url)\n                        <div class=\"btn\">\n                            <a href=\"javascript:history.back(-1);\">\n                                <span>{{ __('dujiaoka.callback') }}</span>\n                            </a>\n                        </div>\n                    @else\n                        <div class=\"btn\">\n                            <a href=\"{{ $url }}\">\n                                <span>{{ __('dujiaoka.callback') }}</span>\n                            </a>\n                        </div>\n                    @endif\n\n                </div>\n            </div>\n        </div>\n    </div>\n\n    @include('luna.layouts._footer')\n\n    <div class=\"query-m\">\n        <a href=\"{{ url('order-search') }}\">\n            <svg t=\"1602926403006\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n                 p-id=\"3391\" width=\"30\" height=\"30\">\n                <path d=\"M320.512 428.032h382.976v61.44H320.512zM320.512 616.448h320.512v61.44H320.512z\" fill=\"#ffffff\"\n                      p-id=\"3392\" data-spm-anchor-id=\"a313x.7781069.0.i38\" class=\"selected\"></path>\n                <path\n                    d=\"M802.816 937.984H221.184l-40.96-40.96V126.976l40.96-40.96h346.112l26.624 10.24 137.216 117.76 98.304 79.872 15.36 31.744v571.392l-41.984 40.96z m-540.672-81.92h500.736V345.088L677.888 276.48 550.912 167.936H262.144v688.128z\"\n                    fill=\"#ffffff\" p-id=\"3393\" data-spm-anchor-id=\"a313x.7781069.0.i37\" class=\"selected\"></path>\n            </svg>\n            <span>{{ __('luna.order_search_m') }}</span>\n        </a>\n    </div>\n    </body>\n@endsection\n\n\n"
  },
  {
    "path": "resources/views/luna/layouts/_footer.blade.php",
    "content": "<div class=\"footer\">\n    <div class=\"layui-row\">\n        <div class=\"layui-col-md8 layui-col-md-offset2 layui-col-sm12\">\n            <div style=\"text-align: center\">{!! dujiaoka_config_get('footer') !!}</div>\n            <p>Powered by <a href=\"https://github.com/assimon/dujiaoka\" target=\"_blank\">@独角数卡.DJK</a></p>\n        </div>\n    </div>\n</div>\n"
  },
  {
    "path": "resources/views/luna/layouts/_header.blade.php",
    "content": "<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\">\n    <title>{{ isset($page_title) ? $page_title : '' }} | {{ dujiaoka_config_get('title') }}</title>\n    <meta name=\"Keywords\" content=\"{{ dujiaoka_config_get('keywords') }}\">\n    <meta name=\"Description\" content=\"{{ dujiaoka_config_get('description')  }}\">\n    <link rel=\"stylesheet\" href=\"/assets/luna/layui/css/layui.css\">\n    <link rel=\"stylesheet\" href=\"/assets/luna/main.css\">\n    <link rel=\"shortcut icon\" href=\"/assets/style/favicon.ico\" />\n    @if(\\request()->getScheme() == \"https\")\n        <meta http-equiv=\"Content-Security-Policy\" content=\"upgrade-insecure-requests\">\n    @endif\n</head>\n@if(dujiaoka_config_get('is_open_google_translate') == \\App\\Models\\BaseModel::STATUS_OPEN)\n@include('luna.layouts.google_translate')\n@endif\n"
  },
  {
    "path": "resources/views/luna/layouts/_nav.blade.php",
    "content": "<div class=\"background\"></div>\n<div class=\"header\" style=\"\">\n    <div class=\"layui-row\">\n        <div class=\"layui-col-md8 layui-col-md-offset2 layui-col-sm12\">\n            <div class=\"header-box\">\n                <a href=\"/\">\n                    <img src=\"{{ picture_ulr(dujiaoka_config_get('img_logo')) }}\" alt=\"\">\n                    <div class=\"info\">{{ dujiaoka_config_get('text_logo') }}</div>\n                </a>\n                <div class=\"query layui-hide-xs\">\n                    <a href=\"{{ url('order-search') }}\">\n                        <svg t=\"1602923269232\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\"\n                             xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4816\" width=\"20\" height=\"20\">\n                            <path d=\"M965.6 447.2 752 447.2c-14.4 0-26.4-12-26.4-26.4 0-14.4 12-26.4 26.4-26.4l213.6 0c14.4 0 26.4 12 26.4 26.4C992.8 435.2 980.8 447.2 965.6 447.2zM965.6 233.6 699.2 233.6c-14.4 0-26.4-12-26.4-26.4 0-14.4 12-26.4 26.4-26.4l267.2 0c14.4 0 26.4 12 26.4 26.4C992.8 221.6 980.8 233.6 965.6 233.6zM606.4 623.2l156.8 156.8c21.6 21.6 21.6 56.8 0 78.4-21.6 21.6-56.8 21.6-78.4 0L528 701.6c-16-16-20-39.2-12-59.2-51.2 44-117.6 72-190.4 72-162.4 0-293.6-131.2-293.6-293.6s131.2-293.6 293.6-293.6 293.6 131.2 293.6 293.6c0 72.8-28 139.2-72 190.4C567.2 603.2 590.4 607.2 606.4 623.2zM324.8 233.6c-103.2 0-187.2 84-187.2 187.2s84 187.2 187.2 187.2S512 523.2 512 420 428 233.6 324.8 233.6zM805.6 607.2l160 0c14.4 0 26.4 12 26.4 26.4 0 14.4-12 26.4-26.4 26.4l-160 0c-14.4 0-26.4-12-26.4-26.4C779.2 619.2 791.2 607.2 805.6 607.2z\"\n                                  p-id=\"4817\" fill=\"#ffffff\"></path>\n                        </svg>\n                        <span>{{ __('dujiaoka.order_search') }}</span>\n                    </a>\n                </div>\n                @yield('notice')\n            </div>\n        </div>\n    </div>\n</div>\n@yield('notice_min')"
  },
  {
    "path": "resources/views/luna/layouts/_notice.blade.php",
    "content": "<div class=\"main layui-hide-xs\">\n  <div class=\"layui-row\">\n    <div class=\"layui-col-sm12\">\n        <div class=\"main-box\">\n        <div class=\"title\">\n              <p class=\"tit\">{{ __('dujiaoka.site_announcement') }}:</p>\n          </div>\n          <div class=\"goods\">\n              <div class=\"tips\">{!! dujiaoka_config_get('notice') !!}</div>\n          </div>\n      </div>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "resources/views/luna/layouts/_notice_sm.blade.php",
    "content": "<div class=\"main layui-hide-sm layui-show-xs\">\r\n  <div class=\"layui-row\">\r\n    <div class=\"layui-col-md8 layui-col-md-offset2 layui-col-sm12\">\r\n        <div class=\"main-box\">\r\n        <div class=\"title\">\r\n              <p class=\"tit\">{{ __('dujiaoka.site_announcement') }}:</p>\r\n          </div>\r\n          <div class=\"goods\">\r\n              <div class=\"tips\">{!! dujiaoka_config_get('notice') !!}</div>\r\n          </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>"
  },
  {
    "path": "resources/views/luna/layouts/_notice_xs.blade.php",
    "content": "<div class=\"main layui-hide-xs\">\r\n  <div class=\"layui-row\">\r\n    <div class=\"layui-col-sm12\">\r\n        <div class=\"main-box\">\r\n        <div class=\"title\">\r\n              <p class=\"tit\">{{ __('dujiaoka.site_announcement') }}:</p>\r\n          </div>\r\n          <div class=\"goods\">\r\n              <div class=\"tips\">{!! dujiaoka_config_get('notice') !!}</div>\r\n          </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>"
  },
  {
    "path": "resources/views/luna/layouts/_script.blade.php",
    "content": "<script>\n    let tipsMsg = {\n        least_one    : '{{ __('luna.least_one') }}',\n        exceeds      : '{{ __('luna.exceeds') }}',\n        exceeds_limit: '{{ __('luna.exceeds_limit') }}',\n        mobile_order : '{{ __('luna.mobile_order') }}'\n    };\n</script>\n<script src=\"/assets/luna/layui/layui.js\"></script>\n<script src=\"/assets/luna/js/jquery-3.4.1.min.js\"></script>\n<script src=\"/assets/luna/main.js\"></script>\n<script src=\"/assets/luna/layui/lay/modules/layer.js\"></script>\n"
  },
  {
    "path": "resources/views/luna/layouts/default.blade.php",
    "content": "<!DOCTYPE html>\n<html lang=\"{{ str_replace('_','-',strtolower(app()->getLocale())) }}\">\n@include('luna.layouts._header')\n@yield('content')\n@include('luna.layouts._script')\n@section('js')\n@show\n</html>\n"
  },
  {
    "path": "resources/views/luna/layouts/google_translate.php",
    "content": "<div id=\"google_translate_element\"></div>\r\n<style>\r\n#google_translate_element{\r\n\ttext-align: right;\r\n\tposition: fixed;\r\n    top: 40px;\r\n    right: 20px;\r\n    z-index: 1;\r\n}\r\n#google_translate_element select{\r\n\twidth: 8rem;\r\n}\r\n.goog-te-banner-content{\r\n\tfont-size: 0px!important;\r\n}\r\n.goog-logo-link{\r\n\tdisplay:none !important;\r\n}\r\n.goog-te-gadget{\r\n\tcolor:transparent!important;\r\n}\r\n</style>\r\n<script type=\"text/Javascript\">\r\n    function googleTranslateElementInit() {\r\n        new google.translate.TranslateElement({pageLanguage: 'zh', includedLanguages:'zh-TW,en,ru,fr'}, 'google_translate_element');\r\n    } \r\n</script>\r\n<script type=\"text/Javascript\" src=\"https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit\"></script>"
  },
  {
    "path": "resources/views/luna/layouts/seo.blade.php",
    "content": "<!DOCTYPE html>\n<html lang=\"{{ str_replace('_','-',strtolower(app()->getLocale())) }}\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\">\n    <title>{{ isset($page_title) ? $page_title : '' }} | {{ dujiaoka_config_get('title') }}</title>\n    <meta name=\"keywords\" content=\"{{ $gd_keywords }}\">\n    <meta name=\"description\" content=\"{{ $gd_description }}\">\n    <meta property=\"og:type\" content=\"article\">\n    <meta property=\"og:image\" content=\"{{ $picture }}\">\n    <meta property=\"og:title\" content=\"{{ isset($page_title) ? $page_title : '' }}\">\n    <meta property=\"og:description\" content=\"{{ $gd_description }}\">    \n    <meta property=\"og:release_date\" content=\"{{ $updated_at }}\">\n    <link rel=\"stylesheet\" href=\"/assets/luna/layui/css/layui.css\">\n    <link rel=\"stylesheet\" href=\"/assets/luna/main.css\">\n    <link rel=\"shortcut icon\" href=\"/assets/style/favicon.ico\" />\n    @if(\\request()->getScheme() == \"https\")\n        <meta http-equiv=\"Content-Security-Policy\" content=\"upgrade-insecure-requests\">\n    @endif\n</head>\n@yield('content')\n@include('luna.layouts._script')\n@section('js')\n@show\n</html>\n"
  },
  {
    "path": "resources/views/luna/static_pages/bill.blade.php",
    "content": "@extends('luna.layouts.default')\n\n@section('content')\n    <body>\n    @include('luna.layouts._nav')\n    <style>\n        .layui-table td, .layui-table th {\n            padding: 9px 5px;\n        }\n    </style>\n    <div class=\"main\">\n        <div class=\"layui-row\">\n            <div class=\"layui-col-md8 layui-col-md-offset2 layui-col-sm12\">\n                <div class=\"main-box\">\n                    <div class=\"pay-title\">\n                        <svg style=\"margin-bottom: -6px;\" t=\"1603120404646\" class=\"icon\" viewBox=\"0 0 1024 1024\"\n                             version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1611\" width=\"27\" height=\"27\">\n                            <path d=\"M320.512 428.032h382.976v61.44H320.512zM320.512 616.448h320.512v61.44H320.512z\"\n                                  fill=\"#00EAFF\" p-id=\"1612\" data-spm-anchor-id=\"a313x.7781069.0.i3\"\n                                  class=\"selected\"></path>\n                            <path\n                                d=\"M802.816 937.984H221.184l-40.96-40.96V126.976l40.96-40.96h346.112l26.624 10.24 137.216 117.76 98.304 79.872 15.36 31.744v571.392l-41.984 40.96z m-540.672-81.92h500.736V345.088L677.888 276.48 550.912 167.936H262.144v688.128z\"\n                                fill=\"#3C8CE7\" p-id=\"1613\" data-spm-anchor-id=\"a313x.7781069.0.i0\" class=\"\"></path>\n                        </svg>\n                        {{ __('dujiaoka.confirm_order') }}\n                    </div>\n\n                    <div class=\"layui-card-body\">\n                        <div class=\"product-info\">\n                            <p style=\"color: #3C8CE7 ;font-size: 18px;font-weight: 700; text-align: center;margin: 20px 0\">\n                                {{ __('dujiaoka.warning_title') }}{{ __('dujiaoka.date_to_expired_order', ['min' => dujiaoka_config_get('order_expire_time', 5)]) }}\n                            </p>\n                        </div>\n                        <table class=\"layui-table\" lay-skin=\"nob\">\n                            <colgroup>\n                                <col width=\"50%\">\n                                <col width=\"50%\">\n                            </colgroup>\n                            <tbody>\n                            <tr>\n                                <td style=\"text-align: right\">{{ __('order.fields.order_sn') }}：</td>\n                                <td>{{ $order_sn }}</td>\n                            </tr>\n                            <tr>\n                                <td style=\"text-align: right\">{{ __('order.fields.title') }}：</td>\n                                <td>\n                                    <span class=\"small-tips tips-green noML\">{{ $title }}</span>\n                                </td>\n                            </tr>\n                            <tr>\n                                <td style=\"text-align: right\">{{ __('order.fields.goods_price') }}：</td>\n                                <td>\n                                    <span\n                                        class=\"small-tips tips-green noML\">{{ __('dujiaoka.money_symbol') }}{{ $goods_price }}</span>\n                                </td>\n                            </tr>\n                            <tr>\n                                <td style=\"text-align: right\">{{ __('order.fields.buy_amount') }}：</td>\n                                <td><span class=\"small-tips tips-green noML\">x {{ $buy_amount }}</span></td>\n                            </tr>\n                            @if(isset($coupon))\n                                <tr>\n                                    <td style=\"text-align: right\">{{ __('order.fields.coupon_id') }}：</td>\n                                    <td><span class=\"small-tips tips-green noML\">{{ $coupon['coupon'] }}</span></td>\n                                </tr>\n                                <tr>\n                                    <td style=\"text-align: right\">{{ __('order.fields.coupon_discount_price') }}：</td>\n                                    <td><span\n                                            class=\"small-tips tips-green noML\">{{ __('dujiaoka.money_symbol') }}{{ $coupon_discount_price }}</span>\n                                    </td>\n                                </tr>\n                            @endif\n                            @if($wholesale_discount_price > 0 )\n                                <tr>\n                                    <td style=\"text-align: right\">{{ __('order.fields.wholesale_discount_price') }}：\n                                    </td>\n                                    <td><span\n                                            class=\"small-tips tips-green noML\">{{ __('dujiaoka.money_symbol') }}{{ $wholesale_discount_price }}</span>\n                                    </td>\n                                </tr>\n                            @endif\n                            <tr>\n                                <td style=\"text-align: right\">{{ __('order.fields.actual_price') }}：</td>\n                                <td>\n                                    <span\n                                        class=\"small-tips tips-green noML\">{{ __('dujiaoka.money_symbol') }}{{ $actual_price }}</span>\n                                </td>\n\n                            </tr>\n                            <tr>\n                                <td style=\"text-align: right\">{{ __('dujiaoka.email') }}：</td>\n                                <td>{{ $email }}</td>\n                            </tr>\n                            @if($info)\n                                @php\n                                    preg_match_all('/(\\[.*?\\])/m', $info, $matches, PREG_SET_ORDER, 0);\n\n                                    foreach ($matches as $item) {\n                                        $str = $item[1] ?? '';\n                                        if($str){\n                                            $info = str_replace($str,'',$info);\n                                        }\n                                    }\n                                @endphp\n                                <tr>\n                                    <td style=\"text-align: right\">{{ __('dujiaoka.order_information') }}:</td>\n                                    <td><p>{{ $info }}</p></td>\n                                </tr>\n                            @endif\n                            <tr>\n                                <td style=\"text-align: right\">{{ __('dujiaoka.payment_method') }}：</td>\n                                <td>{{ $pay['pay_name'] }}</td>\n                            </tr>\n                            </tbody>\n                        </table>\n                        <p class=\"btn\" style=\"text-align: center\">\n                            <a href=\"{{ url('pay-gateway', ['handle' => urlencode($pay['pay_handleroute']),'payway' => $pay['pay_check'], 'orderSN' => $order_sn]) }}\">\n                                {{ __('dujiaoka.pay_immediately') }}\n                            </a>\n                        </p>\n                    </div>\n\n\n                </div>\n            </div>\n        </div>\n    </div>\n\n    @include('luna.layouts._footer')\n\n    <div class=\"query-m\">\n        <a href=\"{{ url('order-search') }}\">\n            <svg t=\"1602926403006\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n                 p-id=\"3391\" width=\"30\" height=\"30\">\n                <path d=\"M320.512 428.032h382.976v61.44H320.512zM320.512 616.448h320.512v61.44H320.512z\" fill=\"#ffffff\"\n                      p-id=\"3392\" data-spm-anchor-id=\"a313x.7781069.0.i38\" class=\"selected\"></path>\n                <path\n                    d=\"M802.816 937.984H221.184l-40.96-40.96V126.976l40.96-40.96h346.112l26.624 10.24 137.216 117.76 98.304 79.872 15.36 31.744v571.392l-41.984 40.96z m-540.672-81.92h500.736V345.088L677.888 276.48 550.912 167.936H262.144v688.128z\"\n                    fill=\"#ffffff\" p-id=\"3393\" data-spm-anchor-id=\"a313x.7781069.0.i37\" class=\"selected\"></path>\n            </svg>\n            <span>{{ __('luna.order_search_m') }}</span>\n        </a>\n    </div>\n    </body>\n@endsection\n\n\n"
  },
  {
    "path": "resources/views/luna/static_pages/buy.blade.php",
    "content": "@extends('luna.layouts.seo')\n\n@section('notice')\n    @include('luna.layouts._notice')\n@endsection\n\n@section('content')\n    <body>\n    @include('luna.layouts._nav')\n\n    <div class=\"main\">\n        <div class=\"layui-row\">\n            <div class=\"layui-col-md8 layui-col-md-offset2 layui-col-sm12\">\n                <div class=\"main-box\">\n                    <div class=\"title\" style=\"border-bottom: 1px solid #f7f7f7;padding-bottom: 5px\">\n                        <svg t=\"1602931755138\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\"\n                             xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4748\" width=\"20\" height=\"20\">\n                            <path\n                                d=\"M904.192 908.288H119.808l-40.96-45.056 81.92-711.68 40.96-35.84h142.336v81.92H237.568l-71.68 628.736h692.224l-71.68-628.736H680.96v-81.92h141.312l40.96 35.84 81.92 711.68z\"\n                                fill=\"#3C8CE7\" p-id=\"4749\" data-spm-anchor-id=\"a313x.7781069.0.i65\" class=\"\"></path>\n                            <path\n                                d=\"M516.096 422.912c-104.448 0-151.552-73.728-161.792-112.64l59.392-15.36c2.048 7.168 20.48 66.56 102.4 66.56 78.848 0 91.136-57.344 92.16-63.488l60.416 10.24c-5.12 38.912-46.08 114.688-152.576 114.688z\"\n                                fill=\"#00EAFF\" p-id=\"4750\" data-spm-anchor-id=\"a313x.7781069.0.i68\"\n                                class=\"selected\"></path>\n                        </svg>\n                        <span>{{ __('luna.buy_goods_msg') }}</span>\n                    </div>\n                    <div class=\"layui-col-md4 layui-col-sm12\">\n                        <div class=\"goods-img\">\n                            <img class=\"viewer-pictures\"\n                                 src=\"{{ picture_ulr($picture) }}\"\n                                 data-original=\"{{ picture_ulr($picture) }}\"\n                                 alt=\"\">\n                        </div>\n                    </div>\n                    <form class=\"layui-form layui-form-pane\" action=\"{{ url('create-order') }}\" method=\"post\">\n                        {{ csrf_field() }}\n                        <input type=\"hidden\" name=\"gid\" value=\"{{ $id }}\">\n                        <div class=\"layui-col-md8 layui-col-sm12\">\n                            <div class=\"goods-msg\">\n                                <div class=\"goods-name\">\n                                    <svg style=\"vertical-align: middle;\" t=\"1602941112468\" class=\"icon\"\n                                         viewBox=\"0 0 1024 1024\"\n                                         version=\"1.1\"\n                                         xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1512\" width=\"25\" height=\"25\"\n                                         data-spm-anchor-id=\"a313x.7781069.0.i14\">\n                                        <path\n                                            d=\"M727.04 750.592h-68.608v-81.92H686.08V249.856L512 99.328 337.92 253.952v414.72h28.672v81.92H296.96l-40.96-40.96V235.52l13.312-30.72 215.04-190.464h54.272l215.04 186.368 14.336 30.72v478.208z\"\n                                            fill=\"#3C8CE7\" p-id=\"1513\" data-spm-anchor-id=\"a313x.7781069.0.i12\"\n                                            class=\"\"></path>\n                                        <path\n                                            d=\"M869.376 638.976l-147.456-18.432-35.84-40.96V350.208l69.632-28.672 147.456 147.456 12.288 28.672v99.328l-46.08 41.984zM768 543.744l65.536 8.192v-35.84L768 449.536v94.208zM154.624 638.976l-46.08-40.96v-99.328l12.288-28.672 147.456-147.456 69.632 28.672v229.376l-35.84 40.96-147.456 17.408z m35.84-123.904v35.84L256 542.72v-94.208l-65.536 66.56z\"\n                                            fill=\"#3C8CE7\" p-id=\"1514\" data-spm-anchor-id=\"a313x.7781069.0.i15\"\n                                            class=\"\"></path>\n                                        <path\n                                            d=\"M512 465.92m-67.584 0a67.584 67.584 0 1 0 135.168 0 67.584 67.584 0 1 0-135.168 0Z\"\n                                            fill=\"#3C8CE7\" p-id=\"1515\" data-spm-anchor-id=\"a313x.7781069.0.i16\"\n                                            class=\"\"></path>\n                                        <path\n                                            d=\"M479.232 660.48h58.368v233.472h-58.368zM391.168 723.968h58.368v157.696h-58.368zM461.824 922.624h58.368v88.064h-58.368zM574.464 748.544h58.368v188.416h-58.368z\"\n                                            fill=\"#00EAFF\" p-id=\"1516\" data-spm-anchor-id=\"a313x.7781069.0.i17\"\n                                            class=\"selected\"></path>\n                                    </svg>\n                                    <span>\n                                        {{ $gd_name }}\n                                        @if($type == \\App\\Models\\Goods::AUTOMATIC_DELIVERY)\n                                            <span\n                                                class=\"small-tips tips-green\">{{ __('goods.fields.automatic_delivery') }}</span>\n                                        @else\n                                            <span\n                                                class=\"small-tips tips-yellow\">{{ __('goods.fields.manual_processing') }}</span>\n                                        @endif\n                                        <span class=\"small-tips tips-blue\">{{__('goods.fields.in_stock')}}({{ $in_stock }})</span>\n                                        @if($buy_limit_num > 0)\n                                            <span class=\"small-tips tips-red\"> {{__('dujiaoka.purchase_limit')}}({{ $buy_limit_num }})</span>\n                                        @endif\n                                    </span>\n                                </div>\n                                <div class=\"price\">\n                                    <span class=\"price-sign\">￥</span>\n                                    <span class=\"price-num\">{{ $actual_price }}</span>\n                                    @if((int)$retail_price)\n                                        <span class=\"price-c\">[<del>￥{{ $retail_price }}</del>]</span>\n                                    @endif\n                                </div>\n\n                                @if(!empty($wholesale_price_cnf) && is_array($wholesale_price_cnf))\n                                    <div class=\"sale\">\n                                        @foreach($wholesale_price_cnf as $ws)\n                                            <span class=\"small-tips tips-pink\">\n                                            {{ __('luna.goods_disc_1') }}{{ $ws['number'] }}{{ __('luna.goods_disc_2') }}{{ $ws['price']  }}{{ __('luna.goods_disc_3') }}\n                                        </span>\n                                        @endforeach\n                                    </div>\n                                @endif\n                                <div class=\"entry notSelection\">\n                                    <span class=\"l-msg\">{{ __('luna.buy_num') }}：</span>\n                                    <label class=\"input\">\n                                        <span class=\"sub\">\n                                            <svg t=\"1602946172380\" class=\"icon\" viewBox=\"0 0 1025 1024\" version=\"1.1\"\n                                                 xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1676\" width=\"25\" height=\"25\"><path\n                                                    d=\"M874.971429 149.942857C776.228571 54.857143 648.228571 0 512.914286 0S245.942857 54.857143 150.857143 149.942857c-201.142857 201.142857-201.142857 522.971429 0 724.114286C245.942857 969.142857 377.6 1024 512.914286 1024s266.971429-54.857143 362.057143-149.942857c201.142857-201.142857 201.142857-522.971429 0-724.114286m-51.2 672.914286C739.657143 906.971429 629.942857 950.857143 512.914286 950.857143s-226.742857-43.885714-310.857143-128c-171.885714-171.885714-171.885714-449.828571 0-621.714286C286.171429 117.028571 395.885714 73.142857 512.914286 73.142857s226.742857 43.885714 310.857143 128c171.885714 171.885714 171.885714 449.828571 0 621.714286\"\n                                                    p-id=\"1677\" fill=\"#8a8a8a\"></path><path\n                                                    d=\"M772.571429 475.428571H253.257143c-21.942857 0-36.571429 14.628571-36.571429 36.571429 0 10.971429 3.657143 18.285714 10.971429 25.6s14.628571 10.971429 25.6 10.971429H768.914286c21.942857 0 36.571429-14.628571 36.571428-36.571429s-14.628571-36.571429-32.914285-36.571429\"\n                                                    p-id=\"1678\" fill=\"#8a8a8a\"></path></svg>\n                                        </span>\n                                        <input class=\"pay-num\" name=\"by_amount\" id=\"orderNumber\"\n                                               required lay-verify=\"required|order_number\"\n                                               type=\"number\" value=\"1\">\n                                        <span class=\"add\">\n                                            <svg t=\"1602946147946\" class=\"icon\" viewBox=\"0 0 1025 1024\" version=\"1.1\"\n                                                 xmlns=\"http://www.w3.org/2000/svg\"\n                                                 p-id=\"12364\" width=\"25\" height=\"25\"><path\n                                                    d=\"M874.971429 149.942857C776.228571 54.857143 648.228571 0 512.914286 0S245.942857 54.857143 150.857143 149.942857c-201.142857 201.142857-201.142857 522.971429 0 724.114286C245.942857 969.142857 377.6 1024 512.914286 1024s266.971429-54.857143 362.057143-149.942857c201.142857-201.142857 201.142857-522.971429 0-724.114286m-51.2 672.914286C739.657143 906.971429 629.942857 950.857143 512.914286 950.857143s-226.742857-43.885714-310.857143-128c-171.885714-171.885714-171.885714-449.828571 0-621.714286C286.171429 117.028571 395.885714 73.142857 512.914286 73.142857s226.742857 43.885714 310.857143 128c171.885714 171.885714 171.885714 449.828571 0 621.714286\"\n                                                    p-id=\"12365\" fill=\"#8a8a8a\"></path><path\n                                                    d=\"M549.485714 475.428571V288.914286c0-21.942857-14.628571-36.571429-36.571428-36.571429s-36.571429 14.628571-36.571429 36.571429V475.428571H289.828571c-21.942857 0-36.571429 14.628571-36.571428 36.571429 0 10.971429 3.657143 18.285714 10.971428 25.6s14.628571 10.971429 25.6 10.971429H476.342857v186.514285c0 10.971429 3.657143 18.285714 10.971429 25.6 7.314286 7.314286 14.628571 10.971429 25.6 10.971429 21.942857 0 36.571429-14.628571 36.571428-36.571429V548.571429h186.514286c21.942857 0 36.571429-14.628571 36.571429-36.571429s-14.628571-36.571429-36.571429-36.571429H549.485714z\"\n                                                    p-id=\"12366\" fill=\"#8a8a8a\"></path>\n                                            </svg>\n                                        </span>\n                                    </label>\n                                </div>\n                                <div class=\"entry\">\n                                    <span class=\"l-msg\">{{ __('luna.buy_email') }}：</span>\n                                    <label class=\"input\">\n                                        <input type=\"text\" name=\"email\"\n                                               required lay-verify=\"required|email\"\n                                               placeholder=\"{{ __('luna.buy_email_tips') }}\">\n                                    </label>\n                                </div>\n                                @if(isset($open_coupon))\n                                    <div class=\"entry\">\n                                        <span class=\"l-msg\">{{ __('luna.buy_disc') }}：</span>\n                                        <label class=\"input\">\n                                            <input type=\"text\" name=\"coupon_code\"\n                                                   placeholder=\"{{ __('luna.buy_disc_tips') }}\">\n                                        </label>\n                                    </div>\n                                @endif\n\n\n                                @if($type == \\App\\Models\\Goods::MANUAL_PROCESSING && is_array($other_ipu))\n                                    @foreach($other_ipu as $ipu)\n                                        @php\n                                            preg_match_all('/(.*?)\\[(.*?)\\]/m', $ipu['desc'], $matches, PREG_SET_ORDER, 0);\n\n                                            $str = $matches[0][2] ?? '';\n                                            if($str){\n                                                $name = $matches[0][1] ?? '';\n                                                $option = explode('|',$str);\n                                            }else{\n                                                $option = [];\n                                            }\n\n                                        @endphp\n                                        @if(count($option))\n                                            <style>\n                                                .layui-form-select {\n                                                    width: 300px;\n                                                    display: inline-block;\n                                                }\n\n                                                .layui-form-pane .layui-input {\n                                                    border-radius: 4px;\n                                                    height: 37px;\n                                                    width: 312px;\n                                                }\n\n                                                .layui-form-select .layui-edge {\n                                                    right: 0px;\n                                                }\n\n                                                @media (max-width: 768px) {\n                                                    .layui-form-select {\n                                                        width: calc(100% - 83px);\n                                                    }\n\n                                                    .layui-form-pane .layui-input {\n                                                        width: 100%;\n                                                    }\n\n                                                    .layui-form-select .layui-edge {\n                                                        right: 10px;\n                                                    }\n                                                }\n                                            </style>\n                                            <div class=\"entry\">\n                                                <span class=\"l-msg\">{{ $name }}：</span>\n                                                <label class=\"input\">\n                                                    <select class=\"layui-bg-blue\" name=\"{{ $ipu['field'] }}\"\n                                                            @if($ipu['rule'] !== false) required\n                                                            lay-verify=\"required\" @endif>\n                                                        @foreach($option as $opt)\n                                                            <option value=\"{{ $opt }}\">{{ $opt }}</option>\n                                                        @endforeach\n                                                    </select>\n                                                </label>\n                                            </div>\n                                        @else\n                                            <div class=\"entry\">\n                                                <span class=\"l-msg\">{{ $ipu['desc'] }}：</span>\n                                                <label class=\"input\">\n                                                    <input type=\"text\" name=\"{{ $ipu['field'] }}\"\n                                                           @if($ipu['rule'] !== false) required lay-verify=\"required\"\n                                                           @endif\n                                                           placeholder=\"{{ $ipu['placeholder'] }}\">\n                                                </label>\n                                            </div>\n                                        @endif\n                                    @endforeach\n                                @endif\n                                @if(dujiaoka_config_get('is_open_search_pwd') == \\App\\Models\\Goods::STATUS_OPEN)\n                                    <div class=\"entry\">\n                                        <span class=\"l-msg\">{{ __('luna.buy_pass') }}：</span>\n                                        <label class=\"input\">\n                                            <input type=\"text\" name=\"search_pwd\" value=\"\"\n                                                   required lay-verify=\"required\"\n                                                   placeholder=\"{{ __('luna.buy_pass_tips') }}\">\n                                        </label>\n                                    </div>\n                                @endif\n                                @if(dujiaoka_config_get('is_open_img_code') == \\App\\Models\\Goods::STATUS_OPEN)\n                                    <div class=\"entry code\">\n                                        <span class=\"l-msg\">{{ __('luna.buy_code') }}：</span>\n                                        <label class=\"input\">\n                                            <input type=\"text\" name=\"img_verify_code\" value=\"\" required\n                                                   lay-verify=\"required\" placeholder=\"{{ __('luna.buy_code_tips') }}\">\n                                        </label>\n                                        <img class=\"captcha-img\" onclick=\"refresh()\"\n                                             src=\"{{ captcha_src('buy') . time() }}\"\n                                             alt=\"\">\n                                        <script>\n                                            function refresh() {\n                                                $('img[class=\"captcha-img\"]').attr('src', '{{ captcha_src('buy') }}' + Math.random());\n                                            }\n                                        </script>\n                                    </div>\n                                @endif\n                                @if(dujiaoka_config_get('is_open_geetest') == \\App\\Models\\Goods::STATUS_OPEN)\n                                    <div class=\"entry code\">\n                                        <span class=\"l-msg\">{{ __('dujiaoka.behavior_verification') }}：</span>\n                                        <span id=\"geetest-captcha\"></span>\n                                        <span id=\"wait-geetest-captcha\"\n                                              class=\"show\">{{ __('luna.buy_loading_verification') }}</span>\n                                    </div>\n                                @endif\n                                <div class=\"pay notSelection\">\n                                    <input type=\"hidden\" name=\"payway\" lay-verify=\"payway\"\n                                           value=\"{{ $payways[0]['id'] ?? 0 }}\">\n                                    @foreach($payways as $key => $way)\n                                        <div class=\"pay-type @if($key == 0) pay-select @endif\"\n                                             data-type=\"{{ $way['pay_check'] }}\" data-id=\"{{ $way['id'] }}\"\n                                             data-name=\"{{ $way['pay_name'] }}\">\n                                        </div>\n                                    @endforeach\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"layui-col-sm12 buy\" style=\"text-align: center\">\n                            <button lay-submit lay-filter=\"postOrder\">\n                                <span>{{ __('dujiaoka.order_now') }}</span>\n                            </button>\n                        </div>\n                    </form>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"main\">\n        <div class=\"layui-row\">\n            <div class=\"layui-col-md8 layui-col-md-offset2 layui-col-sm12\">\n                <div class=\"main-box\">\n                    <div class=\"title\" style=\"border-bottom: 1px solid #f7f7f7;padding-bottom: 5px\">\n                        <svg t=\"1602951214662\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\"\n                             xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1513\" width=\"20\" height=\"20\">\n                            <path\n                                d=\"M791.552 1002.496L513.024 875.52l-91.136 45.056-35.84-73.728 107.52-53.248 35.84-1.024L766.976 901.12V242.688H257.024v559.104h-81.92V201.728l40.96-40.96h591.872l40.96 40.96v762.88z\"\n                                fill=\"#3C8CE7\" p-id=\"1514\" data-spm-anchor-id=\"a313x.7781069.0.i7\"\n                                class=\"selected\"></path>\n                            <path d=\"M481.28 21.504h61.44v309.248h-61.44z\" fill=\"#00EAFF\" p-id=\"1515\"\n                                  data-spm-anchor-id=\"a313x.7781069.0.i8\" class=\"\"></path>\n                            <path\n                                d=\"M512 518.144c-63.488 0-114.688-51.2-114.688-114.688 0-63.488 51.2-114.688 114.688-114.688s114.688 51.2 114.688 114.688c0 63.488-51.2 114.688-114.688 114.688z m0-167.936c-29.696 0-53.248 23.552-53.248 53.248 0 29.696 23.552 53.248 53.248 53.248s53.248-23.552 53.248-53.248c0-29.696-23.552-53.248-53.248-53.248z\"\n                                fill=\"#3C8CE7\" p-id=\"1516\" data-spm-anchor-id=\"a313x.7781069.0.i11\"\n                                class=\"selected\"></path>\n                        </svg>\n                        <span>{{ __('goods.fields.description') }}</span>\n                    </div>\n                    <div class=\"intro\">\n                        {!! $description !!}\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"query-m\">\n        <a href=\"{{ url('order-search') }}\">\n            <svg t=\"1602926403006\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n                 p-id=\"3391\" width=\"30\" height=\"30\">\n                <path d=\"M320.512 428.032h382.976v61.44H320.512zM320.512 616.448h320.512v61.44H320.512z\" fill=\"#ffffff\"\n                      p-id=\"3392\" data-spm-anchor-id=\"a313x.7781069.0.i38\" class=\"selected\"></path>\n                <path\n                    d=\"M802.816 937.984H221.184l-40.96-40.96V126.976l40.96-40.96h346.112l26.624 10.24 137.216 117.76 98.304 79.872 15.36 31.744v571.392l-41.984 40.96z m-540.672-81.92h500.736V345.088L677.888 276.48 550.912 167.936H262.144v688.128z\"\n                    fill=\"#ffffff\" p-id=\"3393\" data-spm-anchor-id=\"a313x.7781069.0.i37\" class=\"selected\"></path>\n            </svg>\n            <span>{{ __('luna.order_search_m') }}</span>\n        </a>\n    </div>\n\n    <div class=\"order-m\">\n        <div\n            onclick=\"window.showQrcode('data:image/png;base64,{!! base64_encode(QrCode::format(\"png\")->size(300)->generate(Request::url())) !!}')\">\n            <svg t=\"1602927606509\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n                 p-id=\"4167\" width=\"35\" height=\"35\">\n                <path\n                    d=\"M146.432 336.896h-81.92V106.496l40.96-40.96h231.424v81.92H146.432zM336.896 958.464H105.472l-40.96-40.96V687.104h81.92v189.44h190.464zM956.416 336.896h-81.92V147.456H684.032v-81.92h231.424l40.96 40.96zM915.456 958.464H613.376v-81.92h261.12V659.456h81.92v258.048z\"\n                    fill=\"#ffffff\" p-id=\"4168\" data-spm-anchor-id=\"a313x.7781069.0.i59\" class=\"selected\"></path>\n                <path\n                    d=\"M326.656 334.848h61.44v98.304h-61.44zM415.744 575.488h61.44v133.12h-61.44zM265.216 575.488h61.44v114.688h-61.44zM566.272 575.488h61.44v98.304h-61.44zM706.56 575.488h61.44v154.624h-61.44zM477.184 297.984h61.44v135.168h-61.44zM627.712 329.728h61.44v103.424h-61.44z\"\n                    fill=\"#ffffff\" p-id=\"4169\" data-spm-anchor-id=\"a313x.7781069.0.i58\" class=\"selected\"></path>\n                <path d=\"M10.24 473.088h1003.52v61.44H10.24z\" fill=\"#ffffff\" p-id=\"4170\"\n                      data-spm-anchor-id=\"a313x.7781069.0.i57\" class=\"selected\"></path>\n            </svg>\n            <span>{{ __('luna.buy_order_m') }}</span>\n        </div>\n    </div>\n\n    @include('luna.layouts._footer')\n    <div class=\"buy-prompt\" hidden>\n        {!! $buy_prompt !!}\n    </div>\n    </body>\n    <script>let stock = {{ $in_stock }}, limitNum = {{$buy_limit_num}};</script>\n@endsection\n@section('js')\n    <script src=\"https://cdn.bootcss.com/jquery/2.1.0/jquery.min.js\"></script>\n    <script src=\"https://static.geetest.com/static/tools/gt.js\"></script>\n    <link rel=\"stylesheet\" href=\"/assets/luna/js/viewerjs/viewer.min.css\">\n    <script src=\"/assets/luna/js/viewerjs/viewer.min.js\"></script>\n    <script>\n        var buyPrompt = $(\".buy-prompt\").html();\n        if ($.trim(buyPrompt)) window.tipsMsg(\"{{ __('goods.fields.buy_prompt') }}\", buyPrompt);\n        gtWidth = window.clientWidth <= 767 ? '100%' : '312px';\n        layui.use(['form'], function () {\n            var form = layui.form;\n            form.verify({\n                order_number: function (value, item) {\n                    if (value == 0) return \"{{ __('dujiaoka.prompt.by_amount_not_null') }}\"\n                    if (value > stock) return \"{{ __('dujiaoka.prompt.inventory_shortage') }}\"\n                }\n            })\n            @if(dujiaoka_config_get('is_open_geetest') == \\App\\Models\\Goods::STATUS_OPEN )\n                !function (url) {\n                var handlerEmbed = function (captchaObj) {\n                    form.on('submit(postOrder)', function (data) {\n                        var validate = captchaObj.getValidate();\n                        if (!validate) {\n                            layer.msg('请正确完成行为验证', {\n                                icon: 5\n                            });\n                            return false;\n                        }\n                        return true;\n                    });\n\n\n                    captchaObj.onReady(function () {\n                        $(\"#wait-geetest-captcha\")[0].className = \"hide\";\n                    });\n\n                    captchaObj.appendTo(\"#geetest-captcha\");\n                };\n                $.ajax({\n                    url     : url + \"?t=\" + (new Date()).getTime(),\n                    type    : \"get\",\n                    dataType: \"json\",\n                    success : function (data) {\n                        initGeetest({\n                            width      : gtWidth,\n                            gt         : data.gt,\n                            challenge  : data.challenge,\n                            product    : \"popup\",\n                            offline    : !data.success,\n                            new_captcha: data.new_captcha,\n                            lang       : 'zh-cn',\n                            http       : 'http' + '://'\n                        }, handlerEmbed);\n                    }\n                });\n            }('/check-geetest');\n            @endif\n            form.on('submit(postOrder)', function (data) {\n                if (data.field.payway == null) {\n                    layer.msg(\"{{ __('dujiaoka.prompt.please_select_mode_of_payment') }}\", {\n                        icon: 5\n                    })\n                    return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。\n                }\n                return true;\n            });\n            new Viewer(document.querySelector('.viewer-pictures'), {\n                url    : 'data-original',\n                toolbar: false,\n                navbar : false,\n                title  : false,\n            });\n        });\n\n    </script>\n@endsection\n"
  },
  {
    "path": "resources/views/luna/static_pages/home.blade.php",
    "content": "@extends('luna.layouts.default')\n\n@section('notice')\n    @include('luna.layouts._notice_xs')\n@endsection\n\n@section('notice_min')\n    @include('luna.layouts._notice_sm')\n@endsection\n\n@section('content')\n    <body>\n    @include('luna.layouts._nav')\n\n    <div class=\"main\">\n        <div class=\"layui-row\">\n            <div class=\"layui-col-md8 layui-col-md-offset2 layui-col-sm12\">\n                <div class=\"main-box\">\n                    <div class=\"title\">\n                        <svg t=\"1602925747464\" class=\"icon\" viewBox=\"0 0 1024 1024\"\n                             version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1270\"\n                             data-spm-anchor-id=\"a313x.7781069.0.i4\" width=\"20\" height=\"20\">\n                            <path\n                                d=\"M619.52 578.56V808.96h194.56V660.48h-133.12v-81.92h215.04V849.92l-40.96 40.96h-276.48l-40.96-40.96V578.56z\"\n                                fill=\"#00EAFF\" p-id=\"1271\" data-spm-anchor-id=\"a313x.7781069.0.i0\" class=\"\"></path>\n                            <path\n                                d=\"M619.52 512V215.04h194.56v172.032h-133.12v81.92h174.08l40.96-40.96V174.08l-40.96-40.96h-276.48l-40.96 40.96v337.92z\"\n                                fill=\"#3C8CE7\" p-id=\"1272\" data-spm-anchor-id=\"a313x.7781069.0.i6\" class=\"\"></path>\n                            <path\n                                d=\"M445.44 890.88h-276.48l-40.96-40.96V619.52l40.96-40.96h174.08v81.92h-133.12V808.96h194.56V215.04h-194.56v172.032h133.12v81.92h-174.08l-40.96-40.96V174.08l40.96-40.96h276.48l40.96 40.96v675.84z\"\n                                fill=\"#3C8CE7\" p-id=\"1273\" data-spm-anchor-id=\"a313x.7781069.0.i3\" class=\"\"></path>\n                        </svg>\n                        <span>{{ __('luna.home_choice_cate') }}</span>\n                    </div>\n                    <div class=\"cate\">\n\n                    </div>\n                    <div class=\"goods\">\n                        <p class=\"title-2\">\n                            <svg t=\"1602925988984\" class=\"icon\" viewBox=\"0 0 1024 1024\"\n                                 version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1945\" width=\"17\" height=\"17\">\n                                <path\n                                    d=\"M803.84 883.712h-163.84v-81.92h133.12l118.784-393.216-178.176 95.232-55.296-15.36L512 240.64 365.568 488.448l-55.296 15.36-178.176-95.232 118.784 393.216h133.12v81.92h-163.84l-38.912-28.672L25.6 336.896l58.368-47.104 230.4 122.88 162.816-272.384h69.632l162.816 272.384 230.4-122.88 58.368 47.104-155.648 518.144z\"\n                                    fill=\"#3C8CE7\" p-id=\"1946\" data-spm-anchor-id=\"a313x.7781069.0.i17\" class=\"\"></path>\n                                <path\n                                    d=\"M305.152 620.544h61.44v61.44h-61.44zM481.28 620.544h61.44v61.44h-61.44zM657.408 620.544h61.44v61.44h-61.44z\"\n                                    fill=\"#00EAFF\" p-id=\"1947\" data-spm-anchor-id=\"a313x.7781069.0.i14\" class=\"\"></path>\n                            </svg>\n                            <span>{{ __('luna.home_choice_goods') }}</span>\n                        </p>\n                        <div class=\"goods-list\"></div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    @include('luna.layouts._footer')\n\n    <div class=\"query-m\">\n        <a href=\"{{ url('order-search') }}\">\n            <svg t=\"1602926403006\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n                 p-id=\"3391\" width=\"30\" height=\"30\">\n                <path d=\"M320.512 428.032h382.976v61.44H320.512zM320.512 616.448h320.512v61.44H320.512z\" fill=\"#ffffff\"\n                      p-id=\"3392\" data-spm-anchor-id=\"a313x.7781069.0.i38\" class=\"selected\"></path>\n                <path\n                    d=\"M802.816 937.984H221.184l-40.96-40.96V126.976l40.96-40.96h346.112l26.624 10.24 137.216 117.76 98.304 79.872 15.36 31.744v571.392l-41.984 40.96z m-540.672-81.92h500.736V345.088L677.888 276.48 550.912 167.936H262.144v688.128z\"\n                    fill=\"#ffffff\" p-id=\"3393\" data-spm-anchor-id=\"a313x.7781069.0.i37\" class=\"selected\"></path>\n            </svg>\n            <span>{{ __('luna.order_search_m') }}</span>\n        </a>\n    </div>\n\n    </body>\n    <script id=\"cateTpl\" type=\"text/html\">\n        <div class=\"cate-box\" data-key=\"<< d.key >>\">\n            <p><< d.gp_name >></p>\n            <div>{{ __('luna.goods_num') }}：<< d.goods.length >></div>\n        </div>\n    </script>\n    <script id=\"goodsTpl\" type=\"text/html\">\n        <a href=\"<<# if(d.in_stock > 0){ >>/buy/<< d.id >><<#  } else { >>javascript:void(0);<<# }; >>\"\n           class=\"goods-box\" style=\"<<# if(d.in_stock <= 0){ >>cursor:not-allowed;<<# }; >>\">\n            <<# if(d.picture){ >>\n            <div class=\"picture\"><img src=\"{{ picture_ulr('',true) }}<< d.picture >>\" alt=\"\"></div>\n            <<# }; >>\n            <div class=\"msg\">\n                <div class=\"goods-name\"><< d.gd_name >></div>\n                <div class=\"goods-price\">\n                    ￥<< d.actual_price >>\n                        <<# layui.each(d.wholesale_price_arr, function(index, item){ >>\n                        <div>{{ __('luna.goods_disc_1') }}<< item[0] >>{{ __('luna.goods_disc_2') }}<< item[1]\n                            >>{{ __('luna.goods_disc_3') }}</div>\n                        <<# }); >>\n                </div>\n                <div class=\"goods-num\">\n                    <div><p style=\"width: << d.proportion >>%;\"></p></div>\n                    <span>{{ __('luna.goods_surplus') }}<< d.in_stock>>{{ __('luna.goods_unit') }}</span>\n                </div>\n            </div>\n        </a>\n    </script>\n\n    <script>\n        let title    = \"{{ __('dujiaoka.site_announcement') }}\",\n            goodsMsg = {!! json_encode($data) !!};\n    </script>\n@endsection\n\n"
  },
  {
    "path": "resources/views/luna/static_pages/orderinfo.blade.php",
    "content": "@extends('luna.layouts.default')\n\n@section('content')\n    <body>\n    @include('luna.layouts._nav')\n    <style>\n        .layui-table td, .layui-table th {\n            padding: 9px 5px;\n        }\n    </style>\n    <div class=\"main\">\n        <div class=\"layui-row\">\n            <div class=\"layui-col-md8 layui-col-md-offset2 layui-col-sm12\">\n                <div class=\"main-box\">\n                    <div class=\"pay-title\">\n                        <svg style=\"margin-bottom: -6px;\" t=\"1603120404646\" class=\"icon\" viewBox=\"0 0 1024 1024\"\n                             version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1611\" width=\"27\" height=\"27\">\n                            <path d=\"M320.512 428.032h382.976v61.44H320.512zM320.512 616.448h320.512v61.44H320.512z\"\n                                  fill=\"#00EAFF\" p-id=\"1612\" data-spm-anchor-id=\"a313x.7781069.0.i3\"\n                                  class=\"selected\"></path>\n                            <path\n                                d=\"M802.816 937.984H221.184l-40.96-40.96V126.976l40.96-40.96h346.112l26.624 10.24 137.216 117.76 98.304 79.872 15.36 31.744v571.392l-41.984 40.96z m-540.672-81.92h500.736V345.088L677.888 276.48 550.912 167.936H262.144v688.128z\"\n                                fill=\"#3C8CE7\" p-id=\"1613\" data-spm-anchor-id=\"a313x.7781069.0.i0\" class=\"\"></path>\n                        </svg>\n                        {{ __('order.fields.order_detail') }}\n                    </div>\n                    @foreach($orders as $order)\n                        <div class=\"layui-card-body info-box\">\n                            <div class=\"layui-row order-list\">\n\n                                <div class=\"layui-col-md4\">\n                                    <ul class=\"info-ui\">\n                                        <li>\n                                            <strong>{{ __('luna.order_number') }}:</strong>\n                                            {{ $order['order_sn'] }}\n                                        </li>\n                                        <li>\n                                            <strong>{{ __('order.fields.title') }}:</strong>\n                                            {{ $order['title'] }}\n                                        </li>\n                                        <li><strong>{{ __('order.fields.buy_amount') }}\n                                                :</strong> {{ $order['buy_amount'] }}</li>\n                                        <li><strong>{{ __('order.fields.order_created') }}\n                                                :</strong> {{ $order['created_at'] }}\n                                        <li><strong>{{ __('order.fields.email') }}:</strong> {{ $order['email'] }}</li>\n                                    </ul>\n                                </div>\n                                <div class=\"layui-col-md4\">\n                                    <ul class=\"info-ui\">\n                                        <li><strong>{{ __('order.fields.type') }}:</strong>\n                                            @if($order['type'] == \\App\\Models\\Order::AUTOMATIC_DELIVERY)\n                                                <span class=\"small-tips tips-green\">\n                                                    {{ __('goods.fields.automatic_delivery') }}\n                                                </span>\n                                            @else\n                                                <span class=\"small-tips tips-green\">\n                                                    {{ __('goods.fields.manual_processing') }}\n                                                </span>\n                                            @endif\n                                        </li>\n                                        <li>\n                                            <strong>{{ __('order.fields.actual_price') }}:</strong>\n                                            <span\n                                                class=\"small-tips tips-green\">{{ __('dujiaoka.money_symbol') }}{{ $order['actual_price'] }}</span>\n                                        </li>\n                                        <li><strong>{{ __('order.fields.status') }}:</strong>\n\n                                            @switch($order['status'])\n                                                @case(\\App\\Models\\Order::STATUS_EXPIRED)\n                                                <span class=\"small-tips tips-cyan\">\n                                                    {{ __('order.fields.status_expired') }}\n                                                </span>\n                                                @break\n                                                @case(\\App\\Models\\Order::STATUS_WAIT_PAY)\n                                                <span class=\"small-tips tips-blue\">\n                                                    {{ __('order.fields.status_wait_pay') }}\n                                                </span>\n                                                @break\n                                                @case(\\App\\Models\\Order::STATUS_PENDING)\n                                                <span\n                                                    class=\"small-tips tips-green\">\n                                                    {{ __('order.fields.status_pending') }}\n                                                </span>\n                                                @break\n                                                @case(\\App\\Models\\Order::STATUS_PROCESSING)\n                                                <span class=\"small-tips tips-green\">\n                                                    {{ __('order.fields.status_processing') }}\n                                                </span>\n                                                @break\n                                                @case(\\App\\Models\\Order::STATUS_COMPLETED)\n                                                <span class=\"small-tips tips-green\">\n                                                    {{ __('order.fields.status_completed') }}\n                                                </span>\n                                                @break\n                                                @case(\\App\\Models\\Order::STATUS_FAILURE)\n                                                <span class=\"small-tips tips-black\">\n                                                    {{ __('order.fields.status_failure') }}\n                                                </span>\n                                                @break\n                                                @case(\\App\\Models\\Order::STATUS_ABNORMAL)\n                                                <span class=\"small-tips tips-black\">\n                                                    {{ __('order.fields.status_abnormal') }}\n                                                </span>\n                                                @break\n                                            @endswitch\n                                        </li>\n                                        <li><strong>{{ __('dujiaoka.payment_method') }}\n                                                :</strong> {{ $order['pay']['pay_name'] ?? ''  }}</li>\n                                    </ul>\n                                </div>\n                                @php $info =''; @endphp\n                                @if($order['info'])\n                                    @php\n                                        $info = $order['info'];\n                                        preg_match_all('/(\\[.*?\\])/m', $info, $matches, PREG_SET_ORDER, 0);\n                                        foreach ($matches as $item) {\n                                            $str = $item[1] ?? '';\n                                            if($str){\n                                                $info = str_replace($str,'',$info);\n                                              }\n                                            }\n                                    @endphp\n                                @endif\n                                <div class=\"layui-col-md4\">\n                                    <textarea disabled spellcheck=\"false\"\n                                              class=\"order-info\">{{$info}}</textarea>\n                                    <div class=\"btn\" style=\"width: 100%\">\n                                        <button class=\"clipboard-but\" type=\"button\"\n                                                data-clipboard-text=\"{{ $info }}\"\n                                                style=\"width: 100%;margin-top: initial;margin-bottom: 10px\">\n                                            {{ __('dujiaoka.copy_text') }}\n                                        </button>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    @endforeach\n\n                    @if(!count($orders))\n                        <div style=\"text-align: center\">\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                                 width=\"200\" height=\"200\" viewBox=\"0 0 480 480\">\n                                <defs>\n                                    <linearGradient id=\"a\" x1=\"1.128\" y1=\"0.988\" x2=\"0.364\" y2=\"1\"\n                                                    gradientUnits=\"objectBoundingBox\">\n                                        <stop offset=\"0\" stop-color=\"#e0e5ef\" stop-opacity=\"0\"/>\n                                        <stop offset=\"1\" stop-color=\"#e0e5ef\"/>\n                                    </linearGradient>\n                                    <linearGradient id=\"c\" x1=\"1\" y1=\"0.5\" x2=\"0.112\" y2=\"1.125\"\n                                                    gradientUnits=\"objectBoundingBox\">\n                                        <stop offset=\"0\" stop-color=\"#fff\" stop-opacity=\"0\"/>\n                                        <stop offset=\"1\" stop-color=\"#747f95\"/>\n                                    </linearGradient>\n                                </defs>\n                                <g transform=\"translate(-135 -375)\">\n                                    <circle cx=\"184\" cy=\"184\" r=\"184\" transform=\"translate(191 443)\" fill=\"#f3f3fa\"/>\n                                    <path\n                                        d=\"M2925,350h0c-8.837,0-16-32.235-16-72s7.163-72,16-72c.038,0,11.813.471,18.75-7.529s9-14.486,9-24.469c0-34.257,14.681-58.6,28.25-63.313,3.909-.688,10,.818,16-4.354s8-9.372,8-16.333c0-37.555,12.536-68,28-68s28,30.445,28,68c0,6.961-.667,10.328,5.333,15.5s14.76,4.5,18.667,5.187c13.569,4.714,24,33.055,24,67.312a101.212,101.212,0,0,0,2.333,20s4.485,11.842,11,5.5,9.13-14.885,10.25-22.871C3135.767,157.923,3142.61,142,3149,142c6.519,0,12.127,16.566,14.645,40.566.741,7.066,2.2,11.743,6.521,17.6A14.3,14.3,0,0,0,3180.92,206H3181c6.488,0,12.073,16.409,14.617,40.308.5,4.725.982,7.6,5.3,11.527S3212.884,262,3212.884,262l.116,0c2.16,0,4.255,1.8,6.228,5.344a58.6,58.6,0,0,1,5.086,14.573C3227.336,294.758,3229,311.835,3229,330c0,6.817-.237,13.546-.7,20H2925Zm303.3,0h0Z\"\n                                        transform=\"translate(-2718 397)\" fill=\"url(#a)\"/>\n                                    <path\n                                        d=\"M117,208H.7c-.466-6.453-.7-13.181-.7-20,0-18.163,1.664-35.24,4.686-48.083a58.6,58.6,0,0,1,5.086-14.573C11.745,121.8,13.84,120,16,120l.116,0s7.651-.242,11.967-4.166,4.8-6.8,5.3-11.527C35.927,80.408,41.513,64,48,64a16.6,16.6,0,0,0,3.3-1.014A6.153,6.153,0,0,0,53.365,61.5c6.515-6.342,9.13-14.884,10.25-22.871C66.8,15.924,73.642,0,80.032,0,86.55,0,92.158,16.566,94.676,40.567c.742,7.065,2.2,11.742,6.521,17.6A14.3,14.3,0,0,0,111.951,64h.081c6.487,0,12.073,16.409,14.617,40.307.5,4.725.983,7.6,5.3,11.527S143.915,120,143.915,120l.116,0c2.16,0,4.255,1.8,6.228,5.344a58.6,58.6,0,0,1,5.086,14.573c3.022,12.844,4.686,29.921,4.686,48.083,0,6.818-.237,13.546-.7,20H117Zm42.328,0h0ZM.7,208h0Z\"\n                                        transform=\"translate(350.969 539)\" fill=\"url(#a)\"/>\n                                    <path\n                                        d=\"M2989,62c-10.838-4.087-16.3,0-32,0-26.51,0-48-8.954-48-20s21.49-20,48-20h256a16,16,0,1,1,0,32s-15.5,0-27.5,3S3165,68.714,3165,68.714,3127.392,110,3081,110c-38.041,0-70.176-13.246-80.647-31.653C2998.219,74.6,2999.838,66.087,2989,62Z\"\n                                        transform=\"translate(-2702 701)\" fill=\"#d1d6e2\"/>\n                                    <path d=\"M-2493,98s-56.355,45.651-64,16,74.25-17.75-16,72\"\n                                          transform=\"translate(3044 409)\" fill=\"none\" stroke=\"#909aa9\"\n                                          stroke-linecap=\"round\" stroke-width=\"2\" stroke-dasharray=\"10\"/>\n                                    <path\n                                        d=\"M4,2.2C7.15-.75,16,0,16,0s-1.5,4-2.6,8-.232,5.942-1.8,8C7.6,21.25,0,21,0,21s.75-3.4,2-8S.85,5.15,4,2.2Z\"\n                                        transform=\"translate(447 603.085)\" fill=\"#909aa9\"/>\n                                    <ellipse cx=\"10\" cy=\"4\" rx=\"10\" ry=\"4\" transform=\"translate(294 787)\"\n                                             fill=\"url(#c)\"/>\n                                    <path\n                                        d=\"M8.44,24s8.115-6,6.94-10S11.51,9.625,9.775,6.125A11.222,11.222,0,0,1,8.44,0S1.767,2.625,1.5,9.375C1.38,12.419,4.436,14.344,6.171,18A32.451,32.451,0,0,1,8.44,24Z\"\n                                        transform=\"translate(287 794.497) rotate(-90)\" fill=\"#909aa9\"/>\n                                    <path d=\"M0,0,57,4.5,136,0l31.5,12,17,10-37,8.5-24.5-5-58,5L4,23Z\"\n                                          transform=\"translate(191 699)\" fill=\"#fff\"/>\n                                    <path\n                                        d=\"M-1.4,1.2,60,9l58.75-5.25L143,9l36-9V24.5L144.4,29l-16.2-7.25L95.6,23l-5.1,1.5L67.2,21.75,5,23.25S2.8,16.713,1.2,11.2-1.4,1.2-1.4,1.2Z\"\n                                        transform=\"translate(196 720)\" fill=\"#eceff5\"/>\n                                    <path d=\"M0,9.833l18-9.5,2.667,4v8.2L13,18,8.167,12.532,0,13.671Z\"\n                                          transform=\"translate(377 777)\" fill=\"#eceff5\"/>\n                                    <path d=\"M4,3.167,18,0V10l-5,3.167-4.833-4L0,10Z\" transform=\"translate(377 777)\"\n                                          fill=\"#fff\"/>\n                                    <path d=\"M-.211,18.893,16,12l.246,14.107-2.084,4.646L0,31Z\"\n                                          transform=\"matrix(1, 0.017, -0.017, 1, 400.376, 734.864)\" fill=\"#eceff5\"/>\n                                    <path d=\"M9.75,12H16l-3.75,7H0Z\" transform=\"translate(400 735)\" fill=\"#fff\"/>\n                                    <g transform=\"translate(447 690)\">\n                                        <path\n                                            d=\"M97,0,63.923,4.5,24.316,0,8.523,12,0,22l18.55,8.5,12.283-5,29.079,5,23.488-5,6.467-12.126Z\"\n                                            transform=\"translate(-1 12)\" fill=\"#fff\"/>\n                                        <path\n                                            d=\"M81.149.607l-28.1,3.945L26.17,1.9l-11.1,2.655L-2.651-1.333V12.391l17.083,2.276L21.846,11l14.917.632,2.334.759L49.759,11l28.991,1.391s-1.4-1.778,0-4.724A43.992,43.992,0,0,0,81.149.607Z\"\n                                            transform=\"translate(1.651 35.333)\" fill=\"#eceff5\"/>\n                                    </g>\n                                </g>\n                            </svg>\n                            <div class=\"err_title\">{{ __('luna.query_no_order') }}</div>\n                            <div class=\"err_content\">{{ __('luna.query_no_order_tips') }}</div>\n                            <div class=\"btn\">\n                                <a href=\"javascript:history.back(-1);\">\n                                    <span>{{ __('dujiaoka.callback') }}</span>\n                                </a>\n                            </div>\n                        </div>\n                    @endif\n                </div>\n            </div>\n        </div>\n    </div>\n\n    @include('luna.layouts._footer')\n\n    <div class=\"query-m\">\n        <a href=\"{{ url('order-search') }}\">\n            <svg t=\"1602926403006\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n                 p-id=\"3391\" width=\"30\" height=\"30\">\n                <path d=\"M320.512 428.032h382.976v61.44H320.512zM320.512 616.448h320.512v61.44H320.512z\" fill=\"#ffffff\"\n                      p-id=\"3392\" data-spm-anchor-id=\"a313x.7781069.0.i38\" class=\"selected\"></path>\n                <path\n                    d=\"M802.816 937.984H221.184l-40.96-40.96V126.976l40.96-40.96h346.112l26.624 10.24 137.216 117.76 98.304 79.872 15.36 31.744v571.392l-41.984 40.96z m-540.672-81.92h500.736V345.088L677.888 276.48 550.912 167.936H262.144v688.128z\"\n                    fill=\"#ffffff\" p-id=\"3393\" data-spm-anchor-id=\"a313x.7781069.0.i37\" class=\"selected\"></path>\n            </svg>\n            <span>{{ __('luna.order_search_m') }}</span>\n        </a>\n    </div>\n    </body>\n@endsection\n\n@section('js')\n    <script src=\"/assets/style/js/clipboard/clipboard.min.js\"></script>\n    <script>\n\n        layui.use('layer', function () {\n            var layer = layui.layer //获得layer模块\n            var clipboard = new ClipboardJS('.clipboard-but');\n            clipboard.on('success', function (e) {\n                layer.msg(\"{{ __('dujiaoka.prompt.copy_text_success') }}\");\n            });\n            clipboard.on('error', function (e) {\n                layer.msg(\"{{ __('dujiaoka.prompt.copy_text_failed') }}\");\n            });\n        });\n\n    </script>\n@endsection\n\n"
  },
  {
    "path": "resources/views/luna/static_pages/qrpay.blade.php",
    "content": "@extends('luna.layouts.default')\n\n@section('content')\n    <body>\n    @include('luna.layouts._nav')\n\n    <div class=\"main\">\n        <div class=\"layui-row\">\n            <div class=\"layui-col-md8 layui-col-md-offset2 layui-col-sm12\">\n                <div class=\"main-box\">\n\n                    <div class=\"pay-title\">\n                        <svg style=\"margin-bottom: -6px;\" t=\"1603122535052\" class=\"icon\" viewBox=\"0 0 1024 1024\"\n                             version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1949\" width=\"27\" height=\"27\">\n                            <path\n                                d=\"M146.432 336.896h-81.92V106.496l40.96-40.96h231.424v81.92H146.432zM336.896 958.464H105.472l-40.96-40.96V687.104h81.92v189.44h190.464zM956.416 336.896h-81.92V147.456H684.032v-81.92h231.424l40.96 40.96zM915.456 958.464H613.376v-81.92h261.12V659.456h81.92v258.048z\"\n                                fill=\"#3C8CE7\" p-id=\"1950\" data-spm-anchor-id=\"a313x.7781069.0.i11\"\n                                class=\"selected\"></path>\n                            <path\n                                d=\"M326.656 334.848h61.44v98.304h-61.44zM415.744 575.488h61.44v133.12h-61.44zM265.216 575.488h61.44v114.688h-61.44zM566.272 575.488h61.44v98.304h-61.44zM706.56 575.488h61.44v154.624h-61.44zM477.184 297.984h61.44v135.168h-61.44zM627.712 329.728h61.44v103.424h-61.44z\"\n                                fill=\"#00EAFF\" p-id=\"1951\" data-spm-anchor-id=\"a313x.7781069.0.i9\" class=\"\"></path>\n                            <path d=\"M10.24 473.088h1003.52v61.44H10.24z\" fill=\"#3C8CE7\" p-id=\"1952\"\n                                  data-spm-anchor-id=\"a313x.7781069.0.i12\" class=\"selected\"></path>\n                        </svg>\n                        {{ __('dujiaoka.scan_qrcode_to_pay') }}\n                    </div>\n\n                    <div class=\"layui-card-body\">\n                        <div class=\"product-info\">\n                            <p style=\"color: #3C8CE7 ;font-size: 18px;font-weight: 700; text-align: center;margin: 20px 0\">\n                                {{ __('dujiaoka.payment_method') }}：[{{ $payname }}\n                                ], {{ __('dujiaoka.pay_order_expiration_date_prompt', ['min' => dujiaoka_config_get('order_expire_time', 5)]) }}\n                            </p>\n                        </div>\n\n                        <div\n                            style=\"text-align: center; border: 3px solid #3C8CE7 ;border-radius: 10px;width: 300px;margin: 0 auto;padding-top: 10px;@if(!Agent::isMobile())padding-bottom: 20px;@endif\">\n                            <p class=\"product-pay-price\" style=\"font-size: 16px;color: #737373;\">\n                                {{ __('dujiaoka.amount_to_be_paid') }}\n                                : {{ __('dujiaoka.money_symbol') }}{{ $actual_price }}\n                            </p>\n                            <img\n                                src=\"data:image/png;base64,{!! base64_encode(QrCode::format('png')->size(200)->generate($qr_code)) !!}\"\n                                alt=\"\">\n                            @if(Agent::isMobile() && isset($jump_payuri))\n                                <p class=\"btn\" style=\"margin-bottom: 20px\"><a\n                                        href=\"{{ $jump_payuri }}\">{{ __('dujiaoka.open_the_app_to_pay') }}</a></p>\n                            @endif\n                        </div>\n\n                    </div>\n\n                </div>\n            </div>\n        </div>\n    </div>\n\n    @include('luna.layouts._footer')\n\n    <div class=\"query-m\">\n        <a href=\"{{ url('order-search') }}\">\n            <svg t=\"1602926403006\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\n                 p-id=\"3391\" width=\"30\" height=\"30\">\n                <path d=\"M320.512 428.032h382.976v61.44H320.512zM320.512 616.448h320.512v61.44H320.512z\" fill=\"#ffffff\"\n                      p-id=\"3392\" data-spm-anchor-id=\"a313x.7781069.0.i38\" class=\"selected\"></path>\n                <path\n                    d=\"M802.816 937.984H221.184l-40.96-40.96V126.976l40.96-40.96h346.112l26.624 10.24 137.216 117.76 98.304 79.872 15.36 31.744v571.392l-41.984 40.96z m-540.672-81.92h500.736V345.088L677.888 276.48 550.912 167.936H262.144v688.128z\"\n                    fill=\"#ffffff\" p-id=\"3393\" data-spm-anchor-id=\"a313x.7781069.0.i37\" class=\"selected\"></path>\n            </svg>\n            <span>{{ __('luna.order_search_m') }}</span>\n        </a>\n    </div>\n    </body>\n@endsection\n\n\n@section('js')\n    <script>\n        var getting = {\n            url     : '{{ url('check-order-status', ['orderSN' => $orderid]) }}',\n            dataType: 'json',\n            success : function (res) {\n                if (res.code === 400001) {\n                    window.clearTimeout(timer);\n                    layer.alert(\"{{ __('dujiaoka.prompt.order_is_expired') }}\", {\n                        icon: 2\n                    }, function () {\n                        window.location.href = '/'\n                    });\n\n                }\n                if (res.code === 200) {\n                    window.clearTimeout(timer);\n                    layer.alert(\"{{ __('dujiaoka.prompt.payment_successful') }}\", {\n                        icon    : 1,\n                        closeBtn: 0\n                    }, function () {\n                        window.location.href = \"{{ url('detail-order-sn', ['orderSN' => $orderid]) }}\"\n                    });\n                }\n            }\n\n        };\n        var timer = window.setInterval(function () {\n            $.ajax(getting)\n        }, 5000);\n    </script>\n@endsection\n"
  },
  {
    "path": "resources/views/luna/static_pages/searchOrder.blade.php",
    "content": "@extends('luna.layouts.default')\n\n@section('content')\n    <body>\n    @include('luna.layouts._nav')\n    <style>\n        .layui-table td, .layui-table th {\n            padding: 9px 5px;\n        }\n    </style>\n    <div class=\"main\">\n        <div class=\"layui-row\">\n            <div class=\"layui-col-md8 layui-col-md-offset2 layui-col-sm12\">\n                <div class=\"main-box\">\n\n                    <div class=\"pay-title\">\n                        <svg style=\"margin-bottom: -6px;\" t=\"1603120404646\" class=\"icon\" viewBox=\"0 0 1024 1024\"\n                             version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1611\" width=\"27\" height=\"27\">\n                            <path d=\"M320.512 428.032h382.976v61.44H320.512zM320.512 616.448h320.512v61.44H320.512z\"\n                                  fill=\"#00EAFF\" p-id=\"1612\" data-spm-anchor-id=\"a313x.7781069.0.i3\"\n                                  class=\"selected\"></path>\n                            <path\n                                d=\"M802.816 937.984H221.184l-40.96-40.96V126.976l40.96-40.96h346.112l26.624 10.24 137.216 117.76 98.304 79.872 15.36 31.744v571.392l-41.984 40.96z m-540.672-81.92h500.736V345.088L677.888 276.48 550.912 167.936H262.144v688.128z\"\n                                fill=\"#3C8CE7\" p-id=\"1613\" data-spm-anchor-id=\"a313x.7781069.0.i0\" class=\"\"></path>\n                        </svg>\n                        {{ __('dujiaoka.order_search') }}\n                    </div>\n                    <div class=\"layui-card-body\">\n                        <p style=\"color: #3C8CE7;font-size: 18px;font-weight: 700; text-align: center;margin: 20px 0\">\n                            {{ __('dujiaoka.prompt.search_order_browser_tips') }}\n                        </p>\n                        <div class=\"layui-tab\">\n                            <ul class=\"layui-tab-title\">\n                                <li class=\"layui-this\">{{ __('dujiaoka.order_search_by_sn') }}</li>\n                                <li>{{ __('dujiaoka.order_search_by_email') }}</li>\n                                <li>{{ __('dujiaoka.order_search_by_browser') }}</li>\n                            </ul>\n                            <div class=\"layui-tab-content\" style=\"text-align: center\">\n                                <!-- 订单号查询 -->\n                                <div class=\"layui-tab-item layui-show\">\n                                    <form class=\"layui-form\" action=\"{{ url('search-order-by-sn') }}\" method=\"post\">\n                                        {{ csrf_field() }}\n                                        <div class=\"entry\">\n                                            <span class=\"l-msg\">{{ __('order.fields.order_sn') }}:</span>\n                                            <label class=\"input\">\n                                                <input type=\"text\" name=\"order_sn\" required=\"\" lay-verify=\"required\"\n                                                       placeholder=\"\"\n                                                       autocomplete=\"off\">\n                                            </label>\n                                        </div>\n                                        <div class=\"btn\">\n                                            <button lay-submit lay-filter=\"orderByid\">\n                                                {{ __('dujiaoka.search_now') }}\n                                            </button>\n                                        </div>\n                                    </form>\n\n                                </div>\n\n                                <!-- 邮箱查询 -->\n                                <div class=\"layui-tab-item\">\n                                    <form class=\"layui-form\" action=\"{{ url('search-order-by-email') }}\" method=\"post\">\n                                        {{ csrf_field() }}\n                                        <div class=\"entry\">\n                                            <span class=\"l-msg\">{{ __('order.fields.email') }}:</span>\n                                            <label class=\"input\">\n                                                <input type=\"email\" name=\"email\" required lay-verify=\"required\"\n                                                       placeholder=\"\" autocomplete=\"off\">\n                                            </label>\n                                        </div>\n                                        @if(dujiaoka_config_get('is_open_search_pwd', \\App\\Models\\BaseModel::STATUS_CLOSE) == \\App\\Models\\BaseModel::STATUS_OPEN)\n                                            <div class=\"entry\">\n                                                <span class=\"l-msg\">{{ __('order.fields.search_pwd') }}:</span>\n                                                <label class=\"input\">\n                                                    <input type=\"password\" name=\"search_pwd\"\n                                                           required lay-verify=\"required\"\n                                                           placeholder=\"\"\n                                                           autocomplete=\"off\">\n                                                </label>\n                                            </div>\n                                        @endif\n                                        <div class=\"btn\">\n                                            <button lay-submit lay-filter=\"orderByAccount\">\n                                                {{ __('dujiaoka.search_now') }}\n                                            </button>\n                                        </div>\n\n                                    </form>\n                                </div>\n\n                                <!-- 浏览器缓存 -->\n                                <div class=\"layui-tab-item\">\n                                    <form class=\"layui-form\" action=\"{{ url('search-order-by-browser') }}\" method=\"post\">\n                                        {{ csrf_field() }}\n                                        <div class=\"btn\">\n                                            <button lay-submit lay-filter=\"searchOrderByBrowser\">\n                                                {{ __('dujiaoka.search_now') }}\n                                            </button>\n                                        </div>\n                                    </form>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    @include('luna.layouts._footer')\n    </body>\n@endsection\n\n@section('js')\n    <script>\n        layui.use(['element', 'form'], function () {\n            var element = layui.element;\n            var form = layui.form;\n            //监听提交\n            form.on('submit(orderByid)', function (data) {\n                return true;\n            });\n            //监听提交\n            form.on('submit(orderByAccount)', function (data) {\n                return true;\n            });\n            //监听提交\n            form.on('submit(searchOrderByBrowser)', function (data) {\n                return true;\n            });\n        });\n    </script>\n@endsection\n"
  },
  {
    "path": "resources/views/unicorn/errors/error.blade.php",
    "content": "@extends('unicorn.layouts.default')\n\n@section('content')\n    <div class=\"page-wrapper\">\n        <!-- main start -->\n        <section class=\"main-container\">\n            <div class=\"container\">\n                <div class=\"good-card\">\n                    <div class=\"row justify-content-center\">\n                        <div class=\"col-md-8 col-12\">\n                            <div class=\"card m-3 border-0\">\n                                <div class=\"card-body p-4\">\n                                    <h3 class=\"card-title ali-icon\">&#xe651; {{ $title }}： </h3>\n                                    <h6>\n                                        <small class=\"text-muted\">似乎遇到了一点问题~</small>\n                                    </h6>\n                                    <div class=\"err-message text-center p-3\">\n                                        <h5>\n                                            {{ $content }}\n                                        </h5>\n                                    </div>\n                                    <div class=\"col-12 mt-3 text-center\">\n                                        @if(!$url)\n                                            <a href=\"javascript:history.back(-1);\"  class=\"btn btn-outline-dark\">{{ __('dujiaoka.callback') }}</a>\n                                        @else\n                                            <a href=\"{{ $url }}\"  class=\"btn btn-outline-dark\">{{ __('dujiaoka.callback') }}</a>\n                                        @endif\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </section>\n        <!-- main end -->\n        </div>\n@stop\n"
  },
  {
    "path": "resources/views/unicorn/layouts/_footer.blade.php",
    "content": "<!-- footer start-->\n<footer class=\"footer p-3\">\n    <div class=\"row\">\n        <div class=\"col-12 text-center\">\n            <div class=\"author\">\n                Powered by：<a href=\"http://dujiaoka.com\">@独角数卡</a>\n            </div>\n            <div class=\"custom\">\n                {!! dujiaoka_config_get('footer') !!}\n            </div>\n        </div>\n    </div>\n</footer>\n<!-- footer end-->\n"
  },
  {
    "path": "resources/views/unicorn/layouts/_header.blade.php",
    "content": "<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>{{ isset($page_title) ? $page_title : '' }} | {{ dujiaoka_config_get('title') }}</title>\n    <meta name=\"Keywords\" content=\"{{ dujiaoka_config_get('keywords') }}\">\n    <meta name=\"Description\" content=\"{{ dujiaoka_config_get('description')  }}\">\n    @if(\\request()->getScheme() == \"https\")\n        <meta http-equiv=\"Content-Security-Policy\" content=\"upgrade-insecure-requests\">\n    @endif\n    <link rel=\"stylesheet\" href=\"/assets/unicorn/css/bootstrap.min.css\">\n    <link rel=\"stylesheet\" href=\"/assets/unicorn/css/base.css\">\n    <link rel=\"stylesheet\" href=\"/assets/unicorn/css/common.css\">\n    <link rel=\"stylesheet\" href=\"/assets/unicorn/css/index.css\">\n</head>\n\n"
  },
  {
    "path": "resources/views/unicorn/layouts/_nav.blade.php",
    "content": "<!-- header start -->\n<header class=\"header sticky-top\">\n    <div class=\"container\">\n        <div class=\"row\">\n            <div class=\"col-md-3\">\n                <div class=\"header-left clearfix\">\n                    <div class=\"logo text-center  d-none d-md-block\">\n                        <a href=\"/\">\n                            <img src=\"{{ picture_ulr(dujiaoka_config_get('img_logo')) }}\" alt=\"Logo\">\n                        </a>\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-md-9\">\n                <div class=\"header-right clearfix\">\n                    <nav class=\"navbar navbar-expand-lg navbar-light\">\n                        <div class=\"container-fluid\">\n                            <a class=\"navbar-brand\" href=\"/\">{{ dujiaoka_config_get('text_logo') }}</a>\n                            <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\"\n                                    data-bs-target=\"#navbarColor\" aria-controls=\"navbarColor\" aria-expanded=\"false\"\n                                    aria-label=\"Toggle navigation\">\n                                <span class=\"navbar-toggler-icon\"></span>\n                            </button>\n\n                            <div class=\"collapse navbar-collapse\" id=\"navbarColor\">\n                                <ul class=\"navbar-nav me-auto\">\n                                    <li class=\"nav-item\">\n                                        <a class=\"nav-link @if(\\Illuminate\\Support\\Facades\\Request::path() == '/') active @endif \" href=\"/\">{{__('dujiaoka.home_page')}}\n                                        </a>\n                                    </li>\n                                    <li class=\"nav-item\">\n                                        <a class=\"nav-link @if(\\Illuminate\\Support\\Facades\\Request::url() == url('order-search')) active @endif\" href=\"{{ url('order-search') }}\">{{ __('dujiaoka.order_search') }}</a>\n                                    </li>\n                                </ul>\n                                @if(\\Illuminate\\Support\\Facades\\Request::path() == '/')\n                                    <form class=\"d-flex\">\n                                        <input class=\"form-control form-control-sm me-sm-2\" id=\"searchText\" type=\"text\" placeholder=\"{{ __('dujiaoka.search_goods_name') }}\">\n                                        <button class=\"btn btn-secondary my-2 my-sm-0\" type=\"button\" id=\"searchBtn\">\n                                            <i class=\"ali-icon\">&#xe65c;</i>\n                                        </button>\n                                    </form>\n                                @endif\n                            </div>\n                        </div>\n                    </nav>\n                </div>\n            </div>\n        </div>\n    </div>\n</header>\n<!-- header end -->\n"
  },
  {
    "path": "resources/views/unicorn/layouts/_script.blade.php",
    "content": "<script src=\"/assets/unicorn/js/jquery-3.6.0.min.js\"></script>\n<script src=\"/assets/unicorn/js/bootstrap.min.js\"></script>\n"
  },
  {
    "path": "resources/views/unicorn/layouts/default.blade.php",
    "content": "<!DOCTYPE html>\n<html lang=\"{{ str_replace('_','-',strtolower(app()->getLocale())) }}\">\n@include('unicorn.layouts._header') \n<body>\n@include('unicorn.layouts._nav')\n@yield('content')\n@include('unicorn.layouts._footer')\n</body>\n@include('unicorn.layouts._script')\n@section('js')\n@show\n</html>\n\n"
  },
  {
    "path": "resources/views/unicorn/layouts/seo.blade.php",
    "content": "<!DOCTYPE html>\n<html lang=\"{{ str_replace('_','-',strtolower(app()->getLocale())) }}\">\n<body>\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>{{ isset($page_title) ? $page_title : '' }} | {{ dujiaoka_config_get('title') }}</title>\n    <meta name=\"keywords\" content=\"{{ $gd_keywords }}\">\n    <meta name=\"description\" content=\"{{ $gd_description }}\">\n    <meta property=\"og:type\" content=\"article\">\n    <meta property=\"og:image\" content=\"{{ $picture }}\">\n    <meta property=\"og:title\" content=\"{{ isset($page_title) ? $page_title : '' }}\">\n    <meta property=\"og:description\" content=\"{{ $gd_description }}\">    \n    <meta property=\"og:release_date\" content=\"{{ $updated_at }}\">\n    @if(\\request()->getScheme() == \"https\")\n        <meta http-equiv=\"Content-Security-Policy\" content=\"upgrade-insecure-requests\">\n    @endif\n    <link rel=\"stylesheet\" href=\"/assets/unicorn/css/bootstrap.min.css\">\n    <link rel=\"stylesheet\" href=\"/assets/unicorn/css/base.css\">\n    <link rel=\"stylesheet\" href=\"/assets/unicorn/css/common.css\">\n    <link rel=\"stylesheet\" href=\"/assets/unicorn/css/index.css\">\n</head>\n@include('unicorn.layouts._nav')\n@yield('content')\n@include('unicorn.layouts._footer')\n</body>\n@include('unicorn.layouts._script')\n@section('js')\n@show\n</html>\n"
  },
  {
    "path": "resources/views/unicorn/static_pages/bill.blade.php",
    "content": "@extends('unicorn.layouts.default')\n@section('content')\n    <!-- main start -->\n    <section class=\"main-container\">\n        <div class=\"container\">\n            <div class=\"good-card\">\n                <div class=\"row justify-content-center\">\n                    <div class=\"col-md-8 col-12\">\n                        <div class=\"card m-3\">\n                            <div class=\"card-body p-2 text-center\">\n                                <h3 class=\"card-title text-primary ali-icon\">&#xe832;{{ __('dujiaoka.confirm_order') }}</h3>\n                            </div>\n                            <div class=\"card card-body p-3 border-0\">\n                                <div class=\"mx-auto\">\n                                    <h5>\n                                        <small class=\"text-muted\">{{ __('order.fields.order_sn') }}：{{ $order_sn }}</small>\n                                    </h5>\n                                    <div class=\"mb-1\">\n                                        <label>{{ __('order.fields.title') }}：</label><span>{{ $title }}</span>\n                                    </div>\n                                    <div class=\"mb-1\"><label>{{ __('order.fields.goods_price') }}：</label><span> {{ $goods_price }}</span></div>\n                                    <div class=\"mb-1\"><label>{{ __('order.fields.buy_amount') }}：</label><span>{{ $buy_amount }}</span></div>\n                                    <div class=\"mb-1\"><label>{{ __('order.fields.email') }}：</label><span>{{ $email }}</span></div>\n                                    <div class=\"mb-1\">\n                                        <label>{{ __('order.fields.type') }}：</label>\n                                        @if($type == \\App\\Models\\Order::AUTOMATIC_DELIVERY)\n                                            <span class=\"badge bg-success\">{{ __('goods.fields.automatic_delivery') }}</span>\n                                        @else\n                                            <span class=\"badge bg-warning\">{{ __('goods.fields.manual_processing') }}</span>\n                                        @endif\n                                    </div>\n                                    @if(!empty($coupon))\n                                        <div class=\"mb-1\"><label>{{ __('order.fields.coupon_id') }}：</label><span>{{ $coupon['coupon'] }}</span></div>\n                                        <div class=\"mb-1\"><label>{{ __('order.fields.coupon_discount_price') }}：</label><span>{{ __('dujiaoka.money_symbol') }}{{ $coupon_discount_price }}</span></div>\n                                    @endif\n                                    @if($wholesale_discount_price > 0 )\n                                        <div class=\"mb-1\"><label>{{ __('order.fields.wholesale_discount_price') }}：</label><span>{{ __('dujiaoka.money_symbol') }}{{ $wholesale_discount_price }}</span></div>\n                                    @endif\n                                    @if(!empty($info))\n                                        <div class=\"mb-1\"><label>{{ __('dujiaoka.order_information') }}：</label><p>{{ $info }}</p></div>\n                                    @endif\n                                    <div class=\"mb-1\"><label>{{ __('order.fields.actual_price') }}：</label><span>{{ __('dujiaoka.money_symbol') }}{{ $actual_price }}</span></div>\n                                    <div class=\"mb-1\"><label>{{ __('dujiaoka.payment_method') }}：</label><span>{{ $pay['pay_name'] }}</span></div>\n                                    <div class=\"mb-1\"><label>{{ __('order.fields.order_created') }}：</label><span>{{ $created_at }}</span></div>\n\n                                    <div class=\"pay-now text-center mt-3\">\n                                        <a href=\"{{ url('pay-gateway', ['handle' => urlencode($pay['pay_handleroute']),'payway' => $pay['pay_check'], 'orderSN' => $order_sn]) }}\" type=\"button\" class=\"btn btn-dark\"><i class=\"ali-icon\">&#xe673;</i>\n                                            {{ __('dujiaoka.pay_immediately') }}\n                                        </a>\n                                    </div>\n\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </section>\n    <!-- main end -->\n@stop\n@section('js')\n@stop\n"
  },
  {
    "path": "resources/views/unicorn/static_pages/buy.blade.php",
    "content": "@extends('unicorn.layouts.seo')\n@section('content')\n    <!-- main start -->\n    <section class=\"main-container\">\n        <div class=\"container\">\n            <div class=\"good-card\">\n                <div class=\"row justify-content-center\">\n                    <div class=\"col-12 col-md-8\">\n                        <div class=\"card mt-3\">\n                            <div class=\"row no-gutters\">\n                                <div class=\"col-md-4\">\n                                    <img src=\"{{ picture_ulr($picture) }}\"\n                                         class=\"card-img-top p-5\" alt=\"{{ $gd_name }}\">\n                                    @if($type == \\App\\Models\\Goods::AUTOMATIC_DELIVERY)\n                                        <h6><small class=\"badge bg-success  position-absolute top-0 start-0\">\n                                                <i class=\"ali-icon\">&#xe7db;</i>\n                                                {{ __('goods.fields.automatic_delivery') }}</small>\n\n                                        </h6>\n                                    @else\n                                        <h6>\n                                            <small class=\"badge bg-warning  position-absolute top-0 start-0\">\n                                                <i class=\"ali-icon\">&#xe7db;</i>\n                                                {{ __('goods.fields.manual_processing') }}\n                                            </small>\n                                        </h6>\n                                    @endif\n\n                                </div>\n                                <div class=\"col-md-8\">\n                                    <div class=\"card-body p-4\">\n                                        <h3 class=\"card-title\">{{ $gd_name }}</h3>\n                                        <h6>\n                                            <small class=\"text-muted\">{{__('goods.fields.in_stock')}}：{{ $in_stock }}</small>\n                                        </h6>\n                                        @if($buy_limit_num > 0)\n                                            <h6><small class=\"badge bg-danger\">\n                                                    {{__('dujiaoka.purchase_limit')}}({{ $buy_limit_num }})</small>\n                                            </h6>\n                                        @endif\n                                        @if(!empty($wholesale_price_cnf) && is_array($wholesale_price_cnf))\n                                            <div class=\"sale\">\n                                                @foreach($wholesale_price_cnf as $ws)\n                                                    <span class=\"badge bg-dark mt-1 mb-1\">\n                                                     <i class=\"ali-icon\">&#xe77d;</i>\n                                                    {{ __('dujiaoka.by_amount') }}{{ $ws['number'] }}{{ __('dujiaoka.or_the_above') }},{{ __('dujiaoka.each') }}：{{ $ws['price']  }}{{ __('dujiaoka.money_symbol') }}\n                                                    </span>\n                                                @endforeach\n                                            </div>\n                                        @endif\n\n                                        <div class=\"buy-form mt-3\">\n                                            <form  action=\"{{ url('create-order') }}\" method=\"post\">\n                                                {{ csrf_field() }}\n                                                <div class=\"form-group row\">\n                                                    <div class=\"col-12\">\n                                                        <h6>{{ __('dujiaoka.price') }}：{{ __('dujiaoka.money_symbol') }} {{ $actual_price }}</h6>\n                                                    </div>\n                                                    <div class=\"col-xs-12 col-md-6\">\n                                                        <input type=\"hidden\" name=\"gid\" value=\"{{ $id }}\">\n                                                        <label for=\"email\" class=\" col-form-label\">{{ __('dujiaoka.email') }}:</label>\n                                                        <input type=\"email\" class=\"form-control form-control-sm\"\n                                                               name=\"email\" id=\"email\" required placeholder=\"{{ __('dujiaoka.email') }}\">\n                                                    </div>\n                                                    <div class=\"col-xs-12 col-md-4\">\n                                                        <label for=\"shop-number\"\n                                                               class=\"col-form-label\">{{ __('dujiaoka.by_amount') }}:</label>\n                                                        <input type=\"number\" class=\"form-control form-control-sm\"\n                                                               id=\"shop-number\" name=\"by_amount\" placeholder=\"\" min=\"1\" value=\"1\">\n                                                    </div>\n                                                    @if(isset($open_coupon))\n                                                        <div class=\"col-xs-12 col-md-6\">\n                                                            <label for=\"coupon\" class=\"col-form-label\">{{ __('dujiaoka.coupon_code') }}:</label>\n                                                            <input type=\"text\"\n                                                                   class=\" control form-control form-control-sm\"\n                                                                   id=\"coupon\" name=\"coupon_code\"   placeholder=\"\" value=\"\" >\n                                                        </div>\n                                                    @endif\n                                                    @if(dujiaoka_config_get('is_open_search_pwd') == \\App\\Models\\Goods::STATUS_OPEN)\n                                                        <div class=\"col-xs-12 col-md-6\">\n                                                            <label for=\"search_pwd\" class=\"col-form-label\">{{ __('dujiaoka.search_password') }}:</label>\n                                                            <input type=\"text\"\n                                                                   class=\" control form-control form-control-sm\"\n                                                                   id=\"search_pwd\" name=\"search_pwd\" required  placeholder=\"\" value=\"\" >\n                                                        </div>\n                                                    @endif\n\n                                                    @if(dujiaoka_config_get('is_open_img_code') == \\App\\Models\\Goods::STATUS_OPEN)\n                                                        <div class=\"col-12 col-md-6\">\n                                                            <label for=\"verifyCode\" class=\" col-form-label\">{{ __('dujiaoka.img_verify_code') }}:</label>\n                                                            <div class=\"input-group\">\n                                                                <input type=\"text\" name=\"img_verify_code\" class=\"form-control form-control-sm\"\n                                                                       id=\"verifyCode\" required placeholder=\"\">\n                                                                <img style=\"margin-left: 10px;\" src=\"{{ captcha_src('buy') . time() }}\"\n                                                                     height=\"33px\" alt=\"{{ __('dujiaoka.img_verify_code') }}\"  onclick=\"refresh()\" id=\"imageCode\">\n                                                                <script>\n                                                                    function refresh(){\n                                                                        $('#imageCode').attr('src','{{ captcha_src('buy') }}'+Math.random());\n                                                                    }\n                                                                </script>\n                                                            </div>\n                                                        </div>\n                                                    @endif\n                                                </div>\n\n                                                <div class=\"form-group row\">\n                                                    @if($type == \\App\\Models\\Goods::MANUAL_PROCESSING && is_array($other_ipu))\n                                                        @foreach($other_ipu as $ipu)\n                                                            <div class=\"col-xs-12 col-md-6\">\n                                                                <label for=\"{{ $ipu['field'] }}\" class=\"col-form-label\">{{ $ipu['desc'] }}:</label>\n                                                                <input type=\"text\"\n                                                                       class=\" control form-control form-control-sm\"\n                                                                       id=\"{{ $ipu['field'] }}\" name=\"{{ $ipu['field'] }}\"  @if($ipu['rule'] !== false) required @endif placeholder=\"{{ $ipu['placeholder'] }}\">\n                                                            </div>\n                                                        @endforeach\n\n                                                    @endif\n                                                        <div class=\"col-12\">\n                                                            <fieldset>\n                                                                <label for=\"coupon\" class=\"col-form-label\">{{ __('dujiaoka.payment_method') }}：</label>\n                                                                @foreach($payways as $index => $way)\n                                                                    <div class=\"form-check form-check-inline\">\n                                                                        <label class=\"form-check-label\">\n                                                                            <input type=\"radio\" class=\"form-check-input\"\n                                                                                   name=\"payway\" value=\"{{ $way['id'] }}\" @if($index == 0) checked=\"checked\" @endif>\n                                                                            {{ $way['pay_name'] }}\n                                                                        </label>\n                                                                    </div>\n                                                                @endforeach\n\n                                                            </fieldset>\n                                                        </div>\n                                                    <div class=\"col-12 mt-2\">\n                                                        <button type=\"submit\" id=\"submit\" class=\"btn btn-outline-primary\"> <i\n                                                                class=\"ali-icon\">&#xe7d8;</i> {{ __('dujiaoka.order_now') }}</button>\n                                                    </div>\n                                                </div>\n\n                                            </form>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n\n                </div>\n\n                <div class=\"row justify-content-center\">\n                    <div class=\"col-12 col-md-8\">\n                        <div class=\"card mt-3 mb-3\">\n                            <div class=\"card-header\">\n                                <h5>{{ __('goods.fields.description') }}</h5>\n                            </div>\n                            <div class=\"card-body\">\n                                {!! $description !!}\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n    </section>\n    <!-- main end -->\n    <!-- Modal -->\n    <div class=\"modal fade\" id=\"staticBackdrop\" data-bs-backdrop=\"static\" data-bs-keyboard=\"false\" tabindex=\"-1\" aria-labelledby=\"staticBackdropLabel\" aria-hidden=\"true\">\n        <div class=\"modal-dialog modal-dialog-centered\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <h5 class=\"modal-title\" id=\"staticBackdropLabel\">{{ __('goods.fields.buy_prompt') }}</h5>\n                    <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n                </div>\n                <div class=\"modal-body\">\n                    {!! $buy_prompt !!}\n                </div>\n                <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">{{ __('dujiaoka.close') }}</button>\n                </div>\n            </div>\n        </div>\n    </div>\n    <!-- Modal end -->\n@stop\n@section('js')\n<script src=\"/assets/unicorn/js/bootstrap-input-spinner.js\"></script>\n<script>\n            @if(!empty($buy_prompt))\n            var myModal = new bootstrap.Modal(document.getElementById('staticBackdrop'))\n            $(function(){\n                myModal.show()\n            });\n            @endif\n            $(\"input[type='number']\").inputSpinner();\n            $('#submit').click(function(){\n                if($(\"input[name='by_amount']\").val() > {{ $in_stock }}){\n                    {{-- 数量不允许大于库存 --}}\n                    $(\".modal-body\").html(\"{{ __('dujiaoka.prompt.inventory_shortage') }}\")\n                    myModal.show()\n                    return false;\n                }\n                @if($buy_limit_num > 0)\n                if($(\"input[name='by_amount']\").val() > {{ $buy_limit_num }}){\n                    {{-- 已超过限购数量 --}}\n                    $(\".modal-body\").html(\"{{ __('dujiaoka.prompt.purchase_limit_exceeded') }}\")\n                    myModal.show()\n                    return false;\n                }\n                @endif\n            });\n</script>\n\n@stop\n"
  },
  {
    "path": "resources/views/unicorn/static_pages/home.blade.php",
    "content": "@extends('unicorn.layouts.default')\n@section('content')\n    <div class=\"notice\" >\n        <div class=\"container\">\n            <div class=\"row\">\n                <div class=\"col-12\">\n                    <div class=\"card mt-3\">\n                        <div class=\"card-body\">\n                            <div class=\"jumbotron jumbotron-fluid p-1\">\n                                <div class=\"container\">\n                                    <h4 class=\"\">{{ __('dujiaoka.site_announcement') }}：</h4>\n                                    <p class=\"lead\">{!! dujiaoka_config_get('notice') !!}</p>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n\n                </div>\n            </div>\n        </div>\n\n    </div>\n\n    <!-- main start -->\n    <section class=\"main-container\">\n        <!-- category start -->\n        <div class=\"category\">\n            <div class=\"container\">\n                <div class=\"row\">\n                    <div class=\"col-md-12\">\n                        <h3 class=\"text-center\">\n                                <span style=\"vertical-align: inherit;\">\n                                    {{ __('dujiaoka.equipment.what_do_you_need_today') }}\n                                </span>\n                        </h3>\n                        <div class=\"separator\"></div>\n                        <p class=\"lead text-center\">\n                                <span style=\"vertical-align: inherit;\">\n                                    {{ __('dujiaoka.equipment.self_promotion') }}\n                                </span>\n                        </p>\n                    </div>\n                    <div class=\"col-md-12\">\n                        <div class=\"category-menus\">\n                                <ul class=\"nav nav-pills  justify-content-center\">\n                                    <li class=\"nav-item\">\n                                        <a href=\"#group-all\" data-bs-toggle=\"tab\" class=\"btn btn-outline-secondary active\">{{ __('dujiaoka.group_all') }}</a>\n                                    </li>\n                                    @foreach($data as  $index => $group)\n                                        <li class=\"nav-item\">\n                                            <a href=\"#group-{{ $group['id'] }}\" data-bs-toggle=\"tab\" class=\"btn btn-outline-secondary\">{{ $group['gp_name'] }}</a>\n                                        </li>\n                                    @endforeach\n                                </ul>\n                        </div>\n                    </div>\n\n\n                </div>\n            </div>\n        </div>\n        <!-- category end -->\n        <!-- goods start -->\n        <div class=\"goods\">\n            <div class=\"container\">\n                <div class=\"goods-list mb-5\">\n                    <div id=\"goodsTabContent\" class=\"tab-content\">\n\n                        <div class=\"tab-pane fade active show\" id=\"group-all\">\n                            <div class=\"row row-cols-2 row-cols-md-5 g-4\">\n                                @foreach($data as  $index => $group)\n                                    @foreach($group['goods'] as $goods)\n                                        <div class=\"col\">\n                                            <div class=\"card position-relative\">\n                                                @if($goods['type'] == \\App\\Models\\Goods::AUTOMATIC_DELIVERY)\n                                                    <span class=\"badge bg-success position-absolute top-0 start-0\">\n                                            <i class=\"ali-icon\">&#xe7db;</i>\n                                            {{ __('goods.fields.automatic_delivery') }}\n                                        </span>\n                                                @else\n                                                    <span class=\"badge bg-warning position-absolute top-0 start-0\">\n                                                        <i class=\"ali-icon\">&#xe74b;</i>\n                                                        {{ __('goods.fields.manual_processing') }}\n                                                    </span>\n                                                @endif\n                                                <img src=\"{{ picture_ulr($goods['picture']) }}\" class=\"card-img-top\" alt=\"{{ $goods['gd_name'] }}\">\n                                                <div class=\"card-body\">\n\n                                                    <h6 class=\"card-title text-truncate\">\n                                                        {{ $goods['gd_name'] }}\n                                                    </h6>\n\n                                                    <button type=\"button\" class=\"btn btn-sm btn-outline-success\">\n                                                        <i class=\"ali-icon\">&#xe703;</i>\n                                                        <strong>{{ $goods['actual_price'] }}</strong>\n                                                    </button>\n                                                    @if($goods['wholesale_price_cnf'])\n                                                        <button type=\"button\" class=\"btn btn-sm btn-outline-warning\">\n                                                            <i class=\"ali-icon\">&#xe77d;</i>\n                                                            {{ __('dujiaoka.home_discount') }}\n                                                        </button>\n                                                    @endif\n                                                    <h6 class=\"mt-2\"><small class=\"text-muted\">{{__('goods.fields.in_stock')}}：{{ $goods['in_stock'] }}</small></h6>\n                                                    <a href=\"{{ url(\"/buy/{$goods['id']}\") }}\" class=\"btn btn-primary fr\">\n                                                        <i class=\"ali-icon\">&#xe7d8;</i>\n                                                        {{ __('dujiaoka.order_now') }}\n                                                    </a>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    @endforeach\n                                 @endforeach\n                            </div>\n                        </div>\n\n\n\n                        @foreach($data as  $index => $group)\n                            <div class=\"tab-pane fade\" id=\"group-{{ $group['id'] }}\">\n                                <div class=\"row row-cols-2 row-cols-md-5 g-4\">\n                                    @foreach($group['goods'] as $goods)\n                                        <div class=\"col\">\n                                            <div class=\"card position-relative\">\n                                                @if($goods['type'] == \\App\\Models\\Goods::AUTOMATIC_DELIVERY)\n                                                    <span class=\"badge bg-success position-absolute top-0 start-0\">\n                                            <i class=\"ali-icon\">&#xe7db;</i>\n                                            {{ __('goods.fields.automatic_delivery') }}\n                                        </span>\n                                                @else\n                                                    <span class=\"badge bg-warning position-absolute top-0 start-0\">\n                                        <i class=\"ali-icon\">&#xe74b;</i>\n                                        {{ __('goods.fields.manual_processing') }}\n                                    </span>\n                                                @endif\n                                                <img src=\"{{ picture_ulr($goods['picture']) }}\" class=\"card-img-top\" alt=\"{{ $goods['gd_name'] }}\">\n                                                <div class=\"card-body\">\n\n                                                    <h6 class=\"card-title text-truncate\">\n                                                        {{ $goods['gd_name'] }}\n                                                    </h6>\n\n                                                        <button type=\"button\" class=\"btn btn-sm btn-outline-success\">\n                                                            <i class=\"ali-icon\">&#xe703;</i>\n                                                            <strong>{{ $goods['actual_price'] }}</strong>\n                                                        </button>\n                                                        @if($goods['wholesale_price_cnf'])\n                                                            <button type=\"button\" class=\"btn btn-sm btn-outline-warning\">\n                                                                <i class=\"ali-icon\">&#xe77d;</i>\n                                                                {{ __('dujiaoka.home_discount') }}\n                                                            </button>\n                                                        @endif\n                                                    <h6 class=\"mt-2\"><small class=\"text-muted\">{{__('goods.fields.in_stock')}}：{{ $goods['in_stock'] }}</small></h6>\n                                                    <a href=\"{{ url(\"/buy/{$goods['id']}\") }}\" class=\"btn btn-primary fr\">\n                                                        <i class=\"ali-icon\">&#xe7d8;</i>\n                                                        {{ __('dujiaoka.order_now') }}\n                                                    </a>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    @endforeach\n                                </div>\n                            </div>\n                        @endforeach\n                    </div>\n                </div>\n\n            </div>\n        </div>\n        <!-- goods end -->\n\n    </section>\n    <!-- main end -->\n\n@stop\n\n@section('js')\n    <script>\n        $(\"#searchBtn\").on(\"click\",function(e){\n            var search_content = $(\"#searchText\").val();\n            //var search_content = search_content.toLowerCase();\n            if($.trim(search_content)!=\"\") {\n                console.log($.trim(search_content));\n                $(\".col\").hide().filter(\":contains('\"+search_content+\"')\").show();\n            } else {\n                $(\".col\").show();\n            }\n        });\n    </script>\n@stop\n"
  },
  {
    "path": "resources/views/unicorn/static_pages/orderinfo.blade.php",
    "content": "@extends('unicorn.layouts.default')\n@section('content')\n    <!-- main start -->\n    <section class=\"main-container\">\n        <div class=\"container\">\n            <div class=\"order-card\">\n                <div class=\"row justify-content-center\">\n\n                    @foreach($orders as $order)\n                    <div class=\"col-md-8\">\n                        <div class=\"card mt-3\">\n                            <div class=\"row no-gutters\">\n                                <div class=\"col-12 col-md-6\">\n                                    <div class=\"card card-body p-3 border-0\">\n                                        <div class=\"mx-auto\">\n                                            <h5>\n                                                <small class=\"text-muted\">{{ __('order.fields.order_sn') }}：{{ $order['order_sn'] }}</small>\n                                            </h5>\n                                            <div class=\"mb-1\">\n                                                <label>{{ __('order.fields.title') }}：</label><span>{{ $order['title'] }}</span>\n                                            </div>\n\n                                            <div class=\"mb-1\"><label>{{ __('order.fields.buy_amount') }}：</label><span>{{ $order['buy_amount'] }}</span></div>\n\n                                            <div class=\"mb-1\"><label>{{ __('order.fields.order_created') }}：</label><span>{{ $order['created_at'] }}</span>\n                                            </div>\n\n                                            <div class=\"mb-1\"><label>{{ __('order.fields.email') }}：</label><span>{{ $order['email'] }}</span></div>\n                                            <div class=\"mb-1\">\n\n                                                <label>{{ __('order.fields.type') }}：</label>\n                                                @if($order['type'] == \\App\\Models\\Order::AUTOMATIC_DELIVERY)\n                                                    <span class=\"badge bg-success\">{{ __('goods.fields.automatic_delivery') }}</span>\n                                                @else\n                                                    <span class=\"badge bg-warning\">{{ __('goods.fields.manual_processing') }}</span>\n                                                @endif\n                                            </div>\n                                            <div class=\"mb-1\">\n\n                                                <label>{{ __('order.fields.actual_price') }}：</label>\n                                                <span>{{ $order['actual_price'] }}</span>\n                                            </div>\n                                            <div class=\"mb-1\">\n\n                                                <label>{{ __('order.fields.status') }}：</label>\n                                                @switch($order['status'])\n                                                    @case(\\App\\Models\\Order::STATUS_EXPIRED)\n                                                    <span class=\"badge bg-dark\">{{ __('order.fields.status_expired') }}</span>\n                                                    @break\n                                                    @case(\\App\\Models\\Order::STATUS_WAIT_PAY)\n                                                    <span class=\"badge bg-secondary\">{{ __('order.fields.status_wait_pay') }}</span>\n                                                    @break\n                                                    @case(\\App\\Models\\Order::STATUS_PENDING)\n                                                    <span class=\"badge bg-info\">{{ __('order.fields.status_pending') }}</span>\n                                                    @break\n                                                    @case(\\App\\Models\\Order::STATUS_PROCESSING)\n                                                    <span class=\"badge bg-primary\">{{ __('order.fields.status_processing') }}</span>\n                                                    @break\n                                                    @case(\\App\\Models\\Order::STATUS_COMPLETED)\n                                                    <span class=\"badge bg-success\">{{ __('order.fields.status_completed') }}</span>\n                                                    @break\n                                                    @case(\\App\\Models\\Order::STATUS_FAILURE)\n                                                    <span class=\"badge bg-danger\">{{ __('order.fields.status_failure') }}</span>\n                                                    @break\n                                                    @case(\\App\\Models\\Order::STATUS_ABNORMAL)\n                                                    <span class=\"badge bg-danger\">{{ __('order.fields.status_abnormal') }}</span>\n                                                    @break\n                                                @endswitch\n                                            </div>\n                                            <div class=\"mb-1\">\n\n                                                <label>{{ __('dujiaoka.payment_method') }}：</label>\n                                                <span>{{ $order['pay']['pay_name'] ?? ''  }}</span>\n                                            </div>\n                                        </div>\n\n                                    </div>\n                                </div>\n                                <div class=\"col-12 col-md-6\">\n                                    <div class=\"card-body\">\n                                        <h6 class=\"card-title\">{{ __('order.fields.info') }}</h6>\n                                        <div class=\"card-info\">\n                                            <textarea class=\"form-control\" rows=\"5\">{{ $order['info'] }}</textarea>\n                                        </div>\n                                        <button id=\"copy-card\" class=\"btn btn-primary mt-2\" data-clipboard-text=\"{{ $order['info'] }}\">{{ __('dujiaoka.copy_text') }}</button>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n\n                    @endforeach\n                </div>\n            </div>\n        </div>\n\n    </section>\n    <!-- main end -->\n@stop\n@section('js')\n<script src=\"/assets/unicorn/js/clipboard.min.js\"></script>\n<script>\n    var clipboard = new ClipboardJS(\"#copy-card\")\n    clipboard.on('success', function (e) {\n       alert(\"{{ __('dujiaoka.prompt.copy_text_success') }}\")\n    });\n    clipboard.on('error', function (e) {\n        alert(\"{{ __('dujiaoka.prompt.copy_text_failed') }}\")\n    });\n</script>\n@stop\n"
  },
  {
    "path": "resources/views/unicorn/static_pages/qrpay.blade.php",
    "content": "@extends('unicorn.layouts.default')\n@section('content')\n    <!-- main start -->\n    <section class=\"main-container\">\n        <div class=\"container\">\n            <div class=\"good-card\">\n                <div class=\"row justify-content-center\">\n                    <div class=\"col-md-8 col-12\">\n                        <div class=\"card m-3\">\n                            <div class=\"card-body p-4 text-center\">\n                                <h3 class=\"card-title text-primary\">{{ __('dujiaoka.scan_qrcode_to_pay') }}</h3>\n                                <h6>\n                                    <small class=\"text-muted\">{{ __('dujiaoka.payment_method') }}：[{{ $payname }}], {{ __('dujiaoka.pay_order_expiration_date_prompt', ['min' => dujiaoka_config_get('order_expire_time', 5)]) }}</small>\n                                </h6>\n                                <div class=\"err-messagep-3\">\n                                    <img src=\"data:image/png;base64,{!! base64_encode(QrCode::format('png')->size(200)->generate($qr_code)) !!}\" alt=\"{{ __('dujiaoka.scan_qrcode_to_pay') }}\" srcset=\"\">\n                                </div>\n                                <h6>\n                                    <small class=\"text-warning\">{{ __('dujiaoka.amount_to_be_paid') }}: {{ $actual_price }}</small>\n                                </h6>\n                                @if(Agent::isMobile() && isset($jump_payuri))\n                                    <a href=\"{{ $jump_payuri }}\" type=\"button\" class=\"btn btn-dark\">\n                                        {{ __('dujiaoka.open_the_app_to_pay') }}</a>\n                                @endif\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </section>\n    <!-- main end -->\n@stop\n@section('js')\n    <script>\n        var getting = {\n            url:'{{ url('check-order-status', ['orderSN' => $orderid]) }}',\n            dataType:'json',\n            success:function(res) {\n                if (res.code == 400001) {\n                    window.clearTimeout(timer);\n                    alert(\"{{ __('dujiaoka.prompt.order_is_expired') }}\")\n                    setTimeout(\"window.location.href ='/'\",3000);\n                }\n                if (res.code == 200) {\n                    window.clearTimeout(timer);\n                    alert(\"{{ __('dujiaoka.prompt.payment_successful') }}\")\n                    setTimeout(\"window.location.href ='{{ url('detail-order-sn', ['orderSN' => $orderid]) }}'\",3000);\n                }\n            }\n        };\n        var timer = window.setInterval(function(){$.ajax(getting)},5000);\n    </script>\n\n@stop\n"
  },
  {
    "path": "resources/views/unicorn/static_pages/searchOrder.blade.php",
    "content": "@extends('unicorn.layouts.default')\n@section('content')\n    <!-- main start -->\n    <section class=\"main-container\">\n        <div class=\"container\">\n            <div class=\"good-card\">\n                <div class=\"row justify-content-center\">\n                    <div class=\"col-md-8 col-12\">\n                        <div class=\"card m-3\">\n                            <div class=\"card-body p-4\">\n                                <h3 class=\"card-title\">{{ __('dujiaoka.order_search') }}</h3>\n                                <h6>\n                                    <small class=\"text-muted\">{{ __('dujiaoka.prompt.search_order_browser_tips') }}</small>\n                                </h6>\n                                <div class=\"buy-form mt-3\">\n                                    <ul class=\"nav nav-pills mb-3\">\n                                        <li class=\"nav-item\">\n                                            <a class=\"nav-link active\" data-bs-toggle=\"tab\" href=\"#order_search_by_sn\">{{ __('dujiaoka.order_search_by_sn') }}</a>\n                                        </li>\n                                        <li class=\"nav-item\">\n                                            <a class=\"nav-link\" data-bs-toggle=\"tab\" href=\"#order_search_by_email\">{{ __('dujiaoka.order_search_by_email') }}</a>\n                                        </li>\n                                        <li class=\"nav-item\">\n                                            <a class=\"nav-link\" data-bs-toggle=\"tab\" href=\"#order_search_by_browser\">{{ __('dujiaoka.order_search_by_browser') }}</a>\n                                        </li>\n\n                                    </ul>\n                                    <div id=\"searchTabContent\" class=\"tab-content\">\n                                        <div class=\"tab-pane fade active show\" id=\"order_search_by_sn\">\n                                            <form action=\"{{ url('search-order-by-sn') }}\" method=\"post\" >\n                                                {{ csrf_field() }}\n                                                <div class=\"form-group row\">\n                                                    <div class=\"col-12 col-md-8\">\n                                                        <label for=\"orderSN\" class=\"col-form-label\">{{ __('order.fields.order_sn') }}:</label>\n                                                        <input type=\"text\" class=\"form-control form-control-sm\"\n                                                               id=\"orderSN\"  name=\"order_sn\" required placeholder=\"{{ __('order.fields.order_sn') }}\">\n                                                    </div>\n                                                    <div class=\"col-12 mt-3\">\n                                                        <button type=\"submit\" class=\"btn btn-outline-primary\">\n                                                            <i class=\"ali-icon\">&#xe65c;</i> {{ __('dujiaoka.search_now') }}</button>\n                                                    </div>\n                                                </div>\n                                            </form>\n                                        </div>\n                                        <div class=\"tab-pane fade\" id=\"order_search_by_email\">\n                                            <form  action=\"{{ url('search-order-by-email') }}\" method=\"post\">\n                                                {{ csrf_field() }}\n                                                <div class=\"form-group row\">\n                                                    <div class=\"col-12 col-md-8\">\n                                                        <label for=\"email\" class=\"col-form-label\">{{ __('order.fields.email') }}:</label>\n                                                        <input type=\"email\" class=\"form-control form-control-sm\"\n                                                               id=\"email\" name=\"email\" required placeholder=\"\">\n                                                    </div>\n                                                    @if(dujiaoka_config_get('is_open_search_pwd', \\App\\Models\\BaseModel::STATUS_CLOSE) == \\App\\Models\\BaseModel::STATUS_OPEN)\n                                                        <div class=\"col-12 col-md-8\">\n                                                            <label for=\"searchPwd\" class=\"col-form-label\">{{ __('order.fields.search_pwd') }}:</label>\n                                                            <input type=\"password\" class=\"form-control form-control-sm\"\n                                                                   id=\"searchPwd\" name=\"search_pwd\" required placeholder=\"\">\n                                                        </div>\n                                                    @endif\n                                                    <div class=\"col-12 mt-3\">\n                                                        <button type=\"submit\" class=\"btn btn-outline-primary\">\n                                                            <i class=\"ali-icon\">&#xe65c;</i> {{ __('dujiaoka.search_now') }}</button>\n                                                    </div>\n                                                </div>\n                                            </form>\n                                        </div>\n                                        <div class=\"tab-pane fade\" id=\"order_search_by_browser\">\n                                            <form  action=\"{{ url('search-order-by-browser') }}\"  method=\"post\">\n                                                {{ csrf_field() }}\n                                                <div class=\"form-group row\">\n                                                    <div class=\"col-12 mt-3\">\n                                                        <button type=\"submit\" class=\"btn btn-outline-primary\">\n                                                            <i class=\"ali-icon\">&#xe65c;</i> {{ __('dujiaoka.search_now') }}</button>\n                                                    </div>\n                                                </div>\n                                            </form>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </section>\n    <!-- main end -->\n@stop\n@section('js')\n@stop\n"
  },
  {
    "path": "resources/views/vendor/geetest/geetest.blade.php",
    "content": "<script src=\"https://cdn.bootcss.com/jquery/2.1.0/jquery.min.js\"></script>\n<script src=\"https://static.geetest.com/static/tools/gt.js\"></script>\n<div id=\"{{ $captchaid }}\"></div>\n<p id=\"wait-{{ $captchaid }}\" class=\"show\">loading...</p>\n<!-- wcccc -->\n@define use Illuminate\\Support\\Facades\\Config\n<script>\n    var geetest = function(url) {\n        var handlerEmbed = function(captchaObj) {\n            $(\"#{{ $captchaid }}\").closest('form').submit(function(e) {\n                var validate = captchaObj.getValidate();\n                if (!validate) {\n                    layer.msg('{{ __('dujiaoka.please_complete_the_behavior_verification_correctly')}}', {\n                        icon: 5\n                    })\n                    e.preventDefault();\n                }\n\n            });\n            captchaObj.appendTo(\"#{{ $captchaid }}\");\n            captchaObj.onReady(function() {\n                $(\"#wait-{{ $captchaid }}\")[0].className = \"hide\";\n            });\n            captchaObj.onSuccess(function () {$('#GeetestCaptcha').attr(\"placeholder\",'{{ __('dujiaoka.success_behavior_verification') }}')})\n            if ('{{ $product }}' == 'popup') {\n                //captchaObj.bindOn($('#{{ $captchaid }}').closest('form').find(':submit'));\n                captchaObj.appendTo(\"#{{ $captchaid }}\");\n            }\n        };\n        $.ajax({\n            url: url + \"?t=\" + (new Date()).getTime(),\n            type: \"get\",\n            dataType: \"json\",\n            success: function(data) {\n                initGeetest({\n                    gt: data.gt,\n                    challenge: data.challenge,\n                    product: \"{{ 'popup' }}\",\n                    offline: !data.success,\n                    new_captcha: data.new_captcha,\n                    lang: '{{ dujiaoka_config_get('language') ?? 'zh_CN' }}',\n                    http: '{{ (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? \"https://\" : \"http://\" }}' + '://'\n                }, handlerEmbed);\n            }\n        });\n    };\n    (function() {\n        geetest('{{ '/check-geetest' }}');\n    })();\n</script>\n<style>\n    .hide {\n        display: none;\n    }\n</style>\n"
  },
  {
    "path": "routes/api.php",
    "content": "<?php\n\nuse Illuminate\\Http\\Request;\n\n/*\n|--------------------------------------------------------------------------\n| API Routes\n|--------------------------------------------------------------------------\n|\n| Here is where you can register API routes for your application. These\n| routes are loaded by the RouteServiceProvider within a group which\n| is assigned the \"api\" middleware group. Enjoy building your API!\n|\n*/\n\nRoute::middleware('auth:api')->get('/user', function (Request $request) {\n    return $request->user();\n});\n"
  },
  {
    "path": "routes/channels.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Broadcast Channels\n|--------------------------------------------------------------------------\n|\n| Here you may register all of the event broadcasting channels that your\n| application supports. The given channel authorization callbacks are\n| used to check if an authenticated user can listen to the channel.\n|\n*/\n\nBroadcast::channel('App.User.{id}', function ($user, $id) {\n    return (int) $user->id === (int) $id;\n});\n"
  },
  {
    "path": "routes/common/pay.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\nuse Illuminate\\Support\\Facades\\Route;\n\nRoute::get('pay-gateway/{handle}/{payway}/{orderSN}', 'PayController@redirectGateway');\n\n// 支付相关\nRoute::group(['prefix' => 'pay', 'namespace' => 'Pay', 'middleware' => ['dujiaoka.pay_gate_way']], function () {\n    // 支付宝\n    Route::get('alipay/{payway}/{orderSN}', 'AlipayController@gateway');\n    Route::post('alipay/notify_url', 'AlipayController@notifyUrl');\n    // 微信\n    Route::get('wepay/{payway}/{orderSN}', 'WepayController@gateway');\n    Route::post('wepay/notify_url', 'WepayController@notifyUrl');\n    // 码支付\n    Route::get('mapay/{payway}/{orderSN}', 'MapayController@gateway');\n    Route::post('mapay/notify_url', 'MapayController@notifyUrl');\n    // Paysapi\n    Route::get('paysapi/{payway}/{orderSN}', 'PaysapiController@gateway');\n    Route::post('paysapi/notify_url', 'PaysapiController@notifyUrl');\n    Route::get('paysapi/return_url', 'PaysapiController@returnUrl')->name('paysapi-return');\n    // payjs\n    Route::get('payjs/{payway}/{orderSN}', 'PayjsController@gateway');\n    Route::post('payjs/notify_url', 'PayjsController@notifyUrl');\n    // 易支付\n    Route::get('yipay/{payway}/{orderSN}', 'YipayController@gateway');\n    Route::get('yipay/notify_url', 'YipayController@notifyUrl');\n    Route::get('yipay/return_url', 'YipayController@returnUrl')->name('yipay-return');\n    // paypal\n    Route::get('paypal/{payway}/{orderSN}', 'PaypalPayController@gateway');\n    Route::get('paypal/return_url', 'PaypalPayController@returnUrl')->name('paypal-return');\n    Route::any('paypal/notify_url', 'PaypalPayController@notifyUrl');\n    // V免签\n    Route::get('vpay/{payway}/{orderSN}', 'VpayController@gateway');\n    Route::get('vpay/notify_url', 'VpayController@notifyUrl');\n    Route::get('vpay/return_url', 'VpayController@returnUrl')->name('vpay-return');\n    // stripe\n    Route::get('stripe/{payway}/{oid}','StripeController@gateway');\n    Route::get('stripe/return_url','StripeController@returnUrl');\n    Route::get('stripe/check','StripeController@check');\n    Route::get('stripe/charge','StripeController@charge');\n    // Coinbase\n    Route::get('coinbase/{payway}/{orderSN}', 'CoinbaseController@gateway');\n    Route::post('coinbase/notify_url', 'CoinbaseController@notifyUrl');\n    // epusdt\n    Route::get('epusdt/{payway}/{orderSN}', 'EpusdtController@gateway');\n    Route::post('epusdt/notify_url', 'EpusdtController@notifyUrl');\n    Route::get('epusdt/return_url', 'EpusdtController@returnUrl')->name('epusdt-return');\n    // tokenpay\n    Route::get('tokenpay/{payway}/{orderSN}', 'TokenPayController@gateway');\n    Route::post('tokenpay/notify_url', 'TokenPayController@notifyUrl');\n    Route::get('tokenpay/return_url', 'TokenPayController@returnUrl')->name('tokenpay-return');\n\n});\n"
  },
  {
    "path": "routes/common/web.php",
    "content": "<?php\n/**\n * The file was created by Assimon.\n *\n * @author    assimon<ashang@utf8.hk>\n * @copyright assimon<ashang@utf8.hk>\n * @link      http://utf8.hk/\n */\nuse Illuminate\\Support\\Facades\\Route;\n\n\nRoute::group(['middleware' => ['dujiaoka.boot'],'namespace' => 'Home'], function () {\n    // 首页\n    Route::get('/', 'HomeController@index');\n    // 极验效验\n    Route::get('check-geetest', 'HomeController@geetest');\n    // 商品详情\n    Route::get('buy/{id}', 'HomeController@buy');\n    // 提交订单\n    Route::post('create-order', 'OrderController@createOrder');\n    // 结算页\n    Route::get('bill/{orderSN}', 'OrderController@bill');\n    // 通过订单号详情页\n    Route::get('detail-order-sn/{orderSN}', 'OrderController@detailOrderSN');\n    // 订单查询页\n    Route::get('order-search', 'OrderController@orderSearch');\n    // 检查订单状态\n    Route::get('check-order-status/{orderSN}', 'OrderController@checkOrderStatus');\n    // 通过订单号查询\n    Route::post('search-order-by-sn', 'OrderController@searchOrderBySN');\n    // 通过邮箱查询\n    Route::post('search-order-by-email', 'OrderController@searchOrderByEmail');\n    // 通过浏览器查询\n    Route::post('search-order-by-browser', 'OrderController@searchOrderByBrowser');\n});\n\nRoute::group(['middleware' => ['install.check'],'namespace' => 'Home'], function () {\n    // 安装\n    Route::get('install', 'HomeController@install');\n    // 执行安装\n    Route::post('do-install', 'HomeController@doInstall');\n});\n\n"
  },
  {
    "path": "routes/console.php",
    "content": "<?php\n\nuse Illuminate\\Foundation\\Inspiring;\n\n/*\n|--------------------------------------------------------------------------\n| Console Routes\n|--------------------------------------------------------------------------\n|\n| This file is where you may define all of your Closure based console\n| commands. Each Closure is bound to a command instance allowing a\n| simple approach to interacting with each command's IO methods.\n|\n*/\n\nArtisan::command('inspire', function () {\n    $this->comment(Inspiring::quote());\n})->describe('Display an inspiring quote');\n"
  },
  {
    "path": "routes/web.php",
    "content": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Web Routes\n|--------------------------------------------------------------------------\n|\n| Here is where you can register web routes for your application. These\n| routes are loaded by the RouteServiceProvider within a group which\n| contains the \"web\" middleware group. Now create something great!\n|\n*/\n\n$routesDir = ['common'];\n\nforeach ($routesDir as $dir) {\n    // 加载所有分类路由\n    foreach (glob(__DIR__ . '/' . $dir . '/*.php') as $routerFile) {\n        require_once $routerFile;\n    }\n}\n"
  },
  {
    "path": "server.php",
    "content": "<?php\n\n/**\n * Laravel - A PHP Framework For Web Artisans\n *\n * @package  Laravel\n * @author   Taylor Otwell <taylor@laravel.com>\n */\n\n$uri = urldecode(\n    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)\n);\n\n// This file allows us to emulate Apache's \"mod_rewrite\" functionality from the\n// built-in PHP web server. This provides a convenient way to test a Laravel\n// application without having installed a \"real\" web server software here.\nif ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {\n    return false;\n}\n\nrequire_once __DIR__.'/public/index.php';\n"
  },
  {
    "path": "storage/app/.gitignore",
    "content": "*\n!public/\n!.gitignore\n"
  },
  {
    "path": "storage/framework/.gitignore",
    "content": "config.php\nroutes.php\nschedule-*\ncompiled.php\nservices.json\nevents.scanned.php\nroutes.scanned.php\ndown\n"
  },
  {
    "path": "storage/framework/cache/.gitignore",
    "content": "*\n!data/\n!.gitignore\n"
  },
  {
    "path": "storage/framework/sessions/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "storage/framework/testing/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "storage/framework/views/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "storage/logs/.gitignore",
    "content": "*\n!.gitignore\n"
  },
  {
    "path": "tests/CreatesApplication.php",
    "content": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Contracts\\Console\\Kernel;\n\ntrait CreatesApplication\n{\n    /**\n     * Creates the application.\n     *\n     * @return \\Illuminate\\Foundation\\Application\n     */\n    public function createApplication()\n    {\n        $app = require __DIR__.'/../bootstrap/app.php';\n\n        $app->make(Kernel::class)->bootstrap();\n\n        return $app;\n    }\n}\n"
  },
  {
    "path": "tests/Feature/ExampleTest.php",
    "content": "<?php\n\nnamespace Tests\\Feature;\n\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\nuse Tests\\TestCase;\n\nclass ExampleTest extends TestCase\n{\n    /**\n     * A basic test example.\n     *\n     * @return void\n     */\n    public function testBasicTest()\n    {\n        $response = $this->get('/');\n\n        $response->assertStatus(200);\n    }\n}\n"
  },
  {
    "path": "tests/TestCase.php",
    "content": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Foundation\\Testing\\TestCase as BaseTestCase;\n\nabstract class TestCase extends BaseTestCase\n{\n    use CreatesApplication;\n}\n"
  },
  {
    "path": "tests/Unit/ExampleTest.php",
    "content": "<?php\n\nnamespace Tests\\Unit;\n\nuse PHPUnit\\Framework\\TestCase;\n\nclass ExampleTest extends TestCase\n{\n    /**\n     * A basic test example.\n     *\n     * @return void\n     */\n    public function testBasicTest()\n    {\n        $this->assertTrue(true);\n    }\n}\n"
  },
  {
    "path": "webpack.mix.js",
    "content": "const mix = require('laravel-mix');\n\n/*\n |--------------------------------------------------------------------------\n | Mix Asset Management\n |--------------------------------------------------------------------------\n |\n | Mix provides a clean, fluent API for defining some Webpack build steps\n | for your Laravel application. By default, we are compiling the Sass\n | file for the application as well as bundling up all the JS files.\n |\n */\n\nmix.js('resources/js/app.js', 'public/js')\n    .sass('resources/sass/app.scss', 'public/css');\n"
  }
]